Просмотр исходного кода

feat(admin-ui): Allow manual payments to be added by Administrator

Relates to #753.
Michael Bromley 4 лет назад
Родитель
Сommit
0416869b3e

+ 6 - 2
packages/admin-ui/src/lib/order/src/components/order-detail/order-detail.component.html

@@ -19,7 +19,7 @@
         <button
             class="btn btn-primary"
             *ngIf="
-                order.state === 'ArrangingAdditionalPayment' &&
+                (order.state === 'ArrangingPayment' || order.state === 'ArrangingAdditionalPayment') &&
                 (hasUnsettledModifications(order) || 0 < outstandingPaymentAmount(order))
             "
             (click)="addManualPayment(order)"
@@ -29,7 +29,11 @@
         </button>
         <button
             class="btn btn-primary"
-            *ngIf="order.state !== 'ArrangingAdditionalPayment' && 0 < outstandingPaymentAmount(order)"
+            *ngIf="
+                order.active === false &&
+                order.state !== 'ArrangingAdditionalPayment' &&
+                0 < outstandingPaymentAmount(order)
+            "
             (click)="transitionToState('ArrangingAdditionalPayment')"
         >
             {{ 'order.arrange-additional-payment' | translate }}

+ 15 - 8
packages/admin-ui/src/lib/order/src/components/order-detail/order-detail.component.ts

@@ -44,7 +44,8 @@ import { SettleRefundDialogComponent } from '../settle-refund-dialog/settle-refu
 })
 export class OrderDetailComponent
     extends BaseDetailComponent<OrderDetail.Fragment>
-    implements OnInit, OnDestroy {
+    implements OnInit, OnDestroy
+{
     detailForm = new FormGroup({});
     history$: Observable<GetOrderHistory.Items[] | undefined>;
     nextStates$: Observable<string[]>;
@@ -266,6 +267,7 @@ export class OrderDetailComponent
     }
 
     addManualPayment(order: OrderDetailFragment) {
+        const priorState = order.state;
         this.modalService
             .fromComponent(AddManualPaymentDialogComponent, {
                 closable: true,
@@ -291,10 +293,16 @@ export class OrderDetailComponent
                     switch (addManualPaymentToOrder.__typename) {
                         case 'Order':
                             this.notificationService.success(_('order.add-payment-to-order-success'));
-                            return this.orderTransitionService.transitionToPreModifyingState(
-                                order.id,
-                                order.nextStates,
-                            );
+                            if (priorState === 'ArrangingAdditionalPayment') {
+                                return this.orderTransitionService.transitionToPreModifyingState(
+                                    order.id,
+                                    order.nextStates,
+                                );
+                            } else {
+                                return this.dataService.order
+                                    .transitionToState(this.id, 'PaymentSettled')
+                                    .pipe(mapTo('PaymentSettled'));
+                            }
                         case 'ManualPaymentStateError':
                             this.notificationService.error(addManualPaymentToOrder.message);
                             return EMPTY;
@@ -518,9 +526,8 @@ export class OrderDetailComponent
                         return of(undefined);
                     }
 
-                    const operations: Array<
-                        Observable<RefundOrder.RefundOrder | CancelOrder.CancelOrder>
-                    > = [];
+                    const operations: Array<Observable<RefundOrder.RefundOrder | CancelOrder.CancelOrder>> =
+                        [];
                     if (input.refund.lines.length) {
                         operations.push(
                             this.dataService.order