@vendure/admin-ui-plugin 3.1.2 → 3.1.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +0,0 @@
1
- {"version":3,"file":"72.09c197e199f1dc00.js","mappings":"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","names":["getRefundablePayments","payments","filter","p","state","map","payment","index","refundableAmount","amount","summate","refunds","r","amountToRefundControl","FormControl","nonNullable","validators","Validators","min","max","selected","i0","_r3","ctx_r2","cancel","ctx_r4","submit","ctx_r1","form","invalid","pristine","outstandingAmount","currencyCode","gql","AddManualPaymentDialogComponent","constructor","dataService","this","UntypedFormGroup","method","UntypedFormControl","required","transactionId","ngOnInit","paymentMethods$","query","GetAddManualPaymentMethodListDocument","options","take","mapSingle","data","paymentMethods","items","formValue","value","resolveWith","static","t","i1","core","In1","selectors","decls","vars","consts","template","rf","ctx","AddManualPaymentDialogComponent_ng_template_0_Template","AddManualPaymentDialogComponent_ng_template_9_Template","$event","_r9","line_r4","$implicit","ctx_r8","lineQuantities","id","ctx_r11","checkIfAllSelected","ctx_r5","cancelAll","quantity","CancelOrderDialogComponent_tr_22_input_14_Template","CancelOrderDialogComponent_tr_22_ng_template_15_Template","featuredAsset","productVariant","name","sku","unitPriceWithTax","order","active","_r7","_r15","ctx_r14","ctx_r16","radioChanged","ctx_r17","ctx_r18","_r22","ctx_r21","ctx_r23","select","CancelOrderDialogComponent_ng_template_29_ng_container_4_Template","CancelOrderDialogComponent_ng_template_29_ng_container_5_Template","ctx_r3","reason","selectionCount","CancelOrderDialogComponent","Object","values","reduce","sum","n","i18nService","reasons","getAppConfig","cancellationReasons","_","translate","lines","result","line","lineId","entries","quantityInOrder","find","orderId","getLineInputs","cancelShipping","orderLineId","l","CancelOrderDialogComponent_ng_template_0_Template","CancelOrderDialogComponent_tr_22_Template","CancelOrderDialogComponent_ng_container_24_Template","CancelOrderDialogComponent_ng_template_29_Template","item_r1","code","promotionName","GET_COUPON_CODE_SELECTOR_PROMOTION_LIST","CouponCodeSelectorComponent","addCouponCode","EventEmitter","removeCouponCode","couponCodeInput$","Subject","availableCouponCodes$","concat","pipe","debounceTime","distinctUntilChanged","switchMap","term","GetCouponCodeSelectorPromotionListDocument","skip","couponCode","contains","single$","promotions","startWith","control","couponCodes","remove","emit","inputs","outputs","CouponCodeSelectorComponent_ng_template_2_Template","address_r8","_r10","ctx_r9","selectedAddress","SelectAddressDialogComponent_clr_tabs_1_clr_tab_1_ng_template_4_vdr_radio_card_2_Template","ctx_r6","addressIdFn","addresses_r3","SelectAddressDialogComponent_clr_tabs_1_clr_tab_1_ng_template_4_Template","_r13","ctx_r12","useExisting","addressForm","availableCountries$","SelectAddressDialogComponent_clr_tabs_1_clr_tab_1_Template","SelectAddressDialogComponent_clr_tabs_1_ng_template_6_Template","createNew","customerId","length","_r17","SelectAddressDialogComponent","formBuilder","group","fullName","currentAddress","company","streetLine1","streetLine2","city","province","postalCode","countryCode","phoneNumber","addresses$","GetCustomerAddressesDocument","customer","addresses","tap","a","of","settings","getAvailableCountries","countries","trackByFn","item","pick","country","valid","i2","SelectAddressDialogComponent_ng_template_0_Template","SelectAddressDialogComponent_clr_tabs_1_Template","SelectAddressDialogComponent_ng_template_3_Template","ctx_r0","title","note","ctx_r7","SelectCustomerDialogComponent_ng_container_1_ng_container_1_Template","SelectCustomerDialogComponent_ng_container_1_vdr_form_field_2_Template","_r4","includeNoteInput","SelectCustomerDialogComponent_clr_tabs_2_ng_template_5_ng_container_2_Template","ctx_r13","customerForm","SelectCustomerDialogComponent_clr_tabs_2_clr_tab_6_ng_template_4_Template","SelectCustomerDialogComponent_clr_tabs_2_ng_template_5_Template","SelectCustomerDialogComponent_clr_tabs_2_clr_tab_6_Template","canCreateNew","item_r20","firstName","lastName","emailAddress","item_r22","_r24","selectedCustomer","SelectCustomerDialogComponent_ng_template_3_ng_template_2_Template","SelectCustomerDialogComponent_ng_template_3_ng_template_3_Template","customers$","isLoading","input$","_r26","ctx_r25","ctx_r27","SelectCustomerDialogComponent","email","getCustomerList","mapStream","customers","catchError","SelectCustomerDialogComponent_ng_template_0_Template","SelectCustomerDialogComponent_ng_container_1_Template","SelectCustomerDialogComponent_clr_tabs_2_Template","SelectCustomerDialogComponent_ng_template_3_Template","SelectCustomerDialogComponent_ng_template_5_Template","quote_r3","metadata","SelectShippingMethodDialogComponent_vdr_radio_card_2_vdr_object_tree_14_Template","price","priceWithTax","selectedMethod","SelectShippingMethodDialogComponent","currentSelectionId","eligibleShippingMethods","m","methodIdFn","SelectShippingMethodDialogComponent_ng_template_0_Template","SelectShippingMethodDialogComponent_vdr_radio_card_2_Template","SelectShippingMethodDialogComponent_ng_template_3_Template","state_r3","_r6","OrderStateSelectDialogComponent_ng_template_7_button_0_Template","_r8","cancellable","selectedState","_c0","OrderStateSelectDialogComponent","nextStates","message","OrderStateSelectDialogComponent_ng_template_0_Template","OrderStateSelectDialogComponent_option_6_Template","OrderStateSelectDialogComponent_ng_template_7_Template","OrderTransitionService","modalService","notificationService","transitionToPreModifyingState","getPreModifyingState","manualTransitionOptions","retry","transitionToStateOrThrow","err","manuallyTransitionToState","fromComponent","locals","closable","size","EMPTY","Error","retryWhen","notifier","operate","source","subscriber","innerSub","errors$","syncResub","subscribeForRetryWhen","subscribe","createOperatorSubscriber","undefined","innerFrom","next","unsubscribe","errors","delay","getOrderHistory","type","eq","HistoryEntryType","ORDER_STATE_TRANSITION","sort","createdAt","SortOrder","DESC","history","i","to","from","transitionToState","transitionOrderToState","__typename","error","transitionError","wxM","factory","ɵfac","providedIn","_r5","editable","onUpdateClick","customFieldForm","onCancelClick","OrderCustomFieldsCardComponent_div_0_button_8_Template","OrderCustomFieldsCardComponent_div_0_button_9_Template","OrderCustomFieldsCardComponent_div_0_button_10_Template","customFieldsConfig","OrderCustomFieldsCardComponent","customFieldValues","updateClick","field","addControl","markAsPristine","dirty","dialog","buttons","label","returnValue","reset","OrderCustomFieldsCardComponent_div_0_Template","fulfilledCount","item_r8","fulfillment","trackingCode","LineFulfillmentComponent_vdr_dropdown_0_div_9_vdr_labeled_data_12_Template","_c1","count","LineFulfillmentComponent_vdr_dropdown_0_clr_icon_2_Template","LineFulfillmentComponent_vdr_dropdown_0_clr_icon_3_Template","LineFulfillmentComponent_vdr_dropdown_0_clr_icon_4_Template","LineFulfillmentComponent_vdr_dropdown_0_label_6_Template","LineFulfillmentComponent_vdr_dropdown_0_label_7_Template","LineFulfillmentComponent_vdr_dropdown_0_label_8_Template","LineFulfillmentComponent_vdr_dropdown_0_div_9_Template","fulfillmentStatus","fulfillments","LineFulfillmentComponent","ngOnChanges","changes","getDeliveredCount","getFulfillmentStatus","getFulfillments","fulfillmentLines","fulfillmentLine","lineQuantity","allOrderFulfillments","f","fulfillmentId","notNullOrUndefined","orderState","features","LineFulfillmentComponent_vdr_dropdown_0_Template","getRefundedCount","LineRefundsComponent","all","refund","LineRefundsComponent_span_0_Template","OrderTotalColumnComponent","DataTable2ColumnComponent","orderable","exportAs","encapsulation","onToggleAllClick","selectionManager","areAllCurrentItemsSelected","sort_r13","sortOrder","_r20","ngIf","toggleSortOrder","OrderDataTableComponent_th_7_div_5_clr_icon_2_Template","OrderDataTableComponent_th_7_div_5_clr_icon_3_Template","OrderDataTableComponent_th_7_div_5_clr_icon_4_Template","OrderDataTableComponent_th_7_div_5_div_5_Template","OrderDataTableComponent_th_7_div_5_Template","column_r10","expand","align","heading","activeFilter_r26","ctx_r24","filters","OrderDataTableComponent_tr_12_ng_container_8_vdr_data_table_filters_2_Template","OrderDataTableComponent_tr_12_ng_container_8_vdr_data_table_filters_3_Template","activeFilters","_r28","toggleSearchFilterRow","OrderDataTableComponent_tr_12_ng_container_6_Template","OrderDataTableComponent_tr_12_ng_container_7_Template","OrderDataTableComponent_tr_12_ng_container_8_Template","showSearchFilterRow","visibleSortedColumns","searchComponent","customSearchTemplate","_r35","item_r29","ctx_r33","onRowClick","ctx_r31","activeIndex","i_r30","isSelected","OrderDataTableComponent_tr_14_td_2_ng_container_2_ng_container_1_Template","componentConfig_r41","config","component","injector","OrderDataTableComponent_tr_14_td_2_ng_template_3_ng_container_0_Template","column_r37","OrderDataTableComponent_tr_14_td_2_ng_container_2_Template","OrderDataTableComponent_tr_14_td_2_ng_template_3_Template","ctx_r32","customComponents","get","_r40","OrderDataTableComponent_tr_14_td_1_Template","OrderDataTableComponent_tr_14_td_2_Template","surcharge_r48","description","couponCode_r52","OrderDataTableComponent_ng_container_19_tr_1_vdr_chip_4_Template","ctx_r50","getPromotionLink","discount_r49","getCouponCodeForAdjustment","amountWithTax","OrderDataTableComponent_ng_container_19_tr_1_Template","shippingLine_r54","shippingMethod","OrderDataTableComponent","DataTable2Component","allColumns","columns","customFieldColumns","totalColumns","promotion","adjustmentSource","split","promotionAdjustment","getShippingNames","shippingLines","shippingLine","join","contentQueries","dirIndex","OrderDataTableComponent_th_6_Template","OrderDataTableComponent_th_7_Template","onColumnReorder","onColumnsReset","OrderDataTableComponent_tr_12_Template","OrderDataTableComponent_tr_14_Template","OrderDataTableComponent_tr_17_Template","OrderDataTableComponent_tr_18_Template","OrderDataTableComponent_ng_container_19_Template","OrderDataTableComponent_vdr_chip_38_Template","disableSelect","selection","uiLanguage$","sortedColumns","_c3","itemsPerPage","currentPage","totalItems","surcharges","discounts","subTotalWithTax","subTotal","shippingWithTax","shipping","totalWithTax","total","line_r10","line_r11","line_r12","updatedAt","asset_r17","OrderTableComponent_ng_template_12_img_1_Template","OrderTableComponent_ng_template_12_ng_template_2_Template","line_r13","_r16","line_r18","line_r19","line_r20","unitPrice","line_r21","orderPlacedQuantity","OrderTableComponent_ng_template_24_ng_container_0_div_2_Template","_r31","ctx_r29","draftInputBlur","valueAsNumber","OrderTableComponent_ng_template_24_ng_container_0_Template","OrderTableComponent_ng_template_24_ng_template_1_Template","isDraft","customField_r35","ctx_r40","discount_r41","OrderTableComponent_ng_template_28_ng_container_7_vdr_dropdown_1_div_5_Template","discounts_r38","OrderTableComponent_ng_template_28_ng_container_7_vdr_dropdown_1_Template","OrderTableComponent_ng_template_28_ng_container_7_Template","line_r36","linePriceWithTax","linePrice","getLineDiscounts","OrderTableComponent","adjust","orderLineCustomFieldsVisible","customFieldsForLine","visibleOrderLineCustomFields","orderLineCustomFields","showElided","getLineCustomFields","toggleOrderLineCustomFields","AdjustmentType","PROMOTION","formGroup","customFields","OrderTableComponent_ng_template_3_Template","OrderTableComponent_ng_template_6_Template","OrderTableComponent_ng_template_9_Template","OrderTableComponent_ng_template_12_Template","OrderTableComponent_ng_template_15_Template","OrderTableComponent_ng_template_18_Template","OrderTableComponent_ng_template_21_Template","OrderTableComponent_ng_template_24_Template","OrderTableComponent_vdr_dt2_custom_field_column_25_Template","OrderTableComponent_ng_template_28_Template","field_r4","customFieldsFormGroup","DraftOrderVariantSelectorComponent_div_6_ng_container_30_div_1_Template","selectedVariant_r1","addItemClick","DraftOrderVariantSelectorComponent_div_6_ng_container_30_Template","product","stockOnHand","stockAllocated","DraftOrderVariantSelectorComponent","addItem","selectedVariantId$","selectedVariant$","getProductVariant","customField","selectedVariant","productVariantId","DraftOrderVariantSelectorComponent_div_6_Template","completeOrder","deleteOrder","order_r2","DraftOrderDetailComponent_vdr_page_detail_layout_3_ng_template_4_clr_icon_0_Template","DraftOrderDetailComponent_vdr_page_detail_layout_3_ng_template_4_clr_icon_1_Template","order_r6","DraftOrderDetailComponent_vdr_page_detail_layout_3_ng_template_11_clr_icon_0_Template","DraftOrderDetailComponent_vdr_page_detail_layout_3_ng_template_11_clr_icon_1_Template","billingAddress","DraftOrderDetailComponent_vdr_page_detail_layout_3_ng_template_18_clr_icon_0_Template","DraftOrderDetailComponent_vdr_page_detail_layout_3_ng_template_18_clr_icon_1_Template","shippingAddress","shippingLine_r30","_r32","displayCouponCodeInput","_r34","applyCouponCode","ctx_r35","entity_r37","row_r39","taxRate","taxBase","taxTotal","DraftOrderDetailComponent_vdr_page_detail_layout_3_ng_container_39_tr_17_Template","taxSummary","DraftOrderDetailComponent_vdr_page_detail_layout_3_ng_template_4_Template","DraftOrderDetailComponent_vdr_page_detail_layout_3_vdr_customer_label_5_Template","_r43","ctx_r42","setCustomer","DraftOrderDetailComponent_vdr_page_detail_layout_3_ng_template_11_Template","DraftOrderDetailComponent_vdr_page_detail_layout_3_vdr_formatted_address_12_Template","ctx_r44","setBillingAddress","DraftOrderDetailComponent_vdr_page_detail_layout_3_ng_template_18_Template","DraftOrderDetailComponent_vdr_page_detail_layout_3_vdr_formatted_address_19_Template","ctx_r45","setShippingAddress","DraftOrderDetailComponent_vdr_page_detail_layout_3_div_23_Template","ctx_r46","setShippingMethod","DraftOrderDetailComponent_vdr_page_detail_layout_3_button_28_Template","DraftOrderDetailComponent_vdr_page_detail_layout_3_div_29_Template","DraftOrderDetailComponent_vdr_page_detail_layout_3_vdr_page_entity_info_31_Template","ctx_r47","addItemToOrder","ctx_r48","adjustOrderLine","ctx_r49","removeOrderLine","DraftOrderDetailComponent_vdr_page_detail_layout_3_ng_container_39_Template","updateCustomFields","entity$","detailForm","DraftOrderDetailComponent","TypedBaseDetailComponent","changeDetector","orderTransitionService","super","getCustomFieldConfig","fetchHistory","init","eligibleShippingMethods$","getDraftOrderEligibleShippingMethods","eligibleShippingMethodsForDraftOrder","ngOnDestroy","destroy","event","addItemToDraftOrder","adjustDraftOrderLine","removeDraftOrderLine","getOrderAddressLines","orderAddress","val","hasId","setCustomerForDraftOrder","defaultShippingAddress","addr","defaultBillingAddress","forkJoin","setDraftOrderShippingAddress","mapToAddressInput","unsetDraftOrderShippingAddress","setDraftOrderBillingAddress","unsetDraftOrderBillingAddress","input","address","applyCouponCodeToDraftOrder","removeCouponCodeFromDraftOrder","combineLatest","methods","setDraftOrderShippingMethod","customFieldsValue","updateOrderCustomFields","deleteDraftOrder","DeletionResult","DELETED","success","entity","router","navigate","setFormValues","DraftOrderDetailComponent_vdr_action_bar_1_Template","DraftOrderDetailComponent_vdr_page_detail_layout_3_Template","line_r3","fulfillmentQuantities","fulfillCount","getUnfulfilledCount","FulfillOrderDialogComponent_tr_22_img_2_Template","FulfillOrderDialogComponent_tr_22_input_12_Template","_r12","canSubmit","FulfillOrderDialogComponent","fulfillmentHandlerControl","getGlobalSettings","globalSettings","getFulfillableCount","trackInventory","markForCheck","getShippingMethodOperations","fulfillmentHandlers","handlers","fulfillmentHandlerDef","h","fulfillmentHandlerCode","fulfillmentHandler","configurableDefinitionToInstance","patchValue","globalTrackInventory","effectiveTracInventory","GlobalFlag","INHERIT","TRUE","unfulfilledCount","Math","fulfilled","flat","row","totalCount","fulfillmentQuantityIsValid","every","configurableOperationValueIsValid","handler","toConfigurableOperationInput","FulfillOrderDialogComponent_ng_template_0_Template","FulfillOrderDialogComponent_tr_22_Template","FulfillOrderDialogComponent_ng_template_33_Template","SimpleItemListComponent_li_2_div_1_Template","SimpleItemListComponent_li_2_clr_icon_2_Template","SimpleItemListComponent","SimpleItemListComponent_li_2_Template","customField_r2","customFieldFormGroup","FulfillmentDetailComponent_ng_container_11_vdr_custom_field_control_1_Template","FulfillmentDetailComponent","serverConfigService","customFieldConfig","getCustomFieldsFor","buildCustomFieldsFormGroup","fieldDef","customFieldIsObject","Array","isArray","isObject","FulfillmentDetailComponent_vdr_labeled_data_7_Template","FulfillmentDetailComponent_ng_container_11_Template","FulfillmentStateLabelComponent","chipColorType","FulfillmentStateLabelComponent_clr_icon_2_Template","suggestedState_r4","transitionState","nextState_r7","FulfillmentCardComponent_div_9_ng_container_6_ng_container_2_Template","FulfillmentCardComponent_div_9_ng_container_6_ng_template_3_Template","FulfillmentCardComponent_div_9_ng_container_1_Template","FulfillmentCardComponent_div_9_ng_container_6_Template","nextSuggestedState","nextOtherStates","FulfillmentCardComponent","namedStateOrDefault","targetState","includes","s","suggested","FulfillmentCardComponent_vdr_fulfillment_detail_8_Template","FulfillmentCardComponent_div_9_Template","modification","tmp_1_0","getSurcharge","surcharge_r5","getAddedItems","getRemovedItems","getModifiedItems","ModificationDetailComponent","addedItems","Map","removedItems","modifiedItems","Set","added","removed","modified","getModifiedLines","modificationLine","add","set","ModificationDetailComponent_vdr_labeled_data_3_Template","ModificationDetailComponent_vdr_labeled_data_4_Template","ModificationDetailComponent_vdr_labeled_data_5_Template","ModificationDetailComponent_vdr_labeled_data_6_Template","ModificationDetailComponent_vdr_labeled_data_7_Template","NODE_HEIGHT","cancelledState","OrderProcessNodeComponent","elementRef","active$","BehaviorSubject","activeTarget$","isCancellable","node","getPos","origin","nativeElement","getBoundingClientRect","nodeHeight","querySelector","height","x","y","getStyle","pos","OrderProcessNodeComponent_div_7_Template","OrderProcessEdgeComponent","asObservable","direction","startPos","endPos","dX","abs","dY","sqrt","transform","state_r2","onMouseOver","onMouseOut","i_r3","activeState$","edge_r7","OrderProcessGraphComponent","setActiveState$","nodes","edges","outerHeight","initialState","populateNodes","ngAfterViewInit","setTimeout","populateEdges","stateName","getNodeFor","nodeComponents","stateNodeMap","states","stateNode","targets","target","targetNode","push","nodeCmp","toCmp","viewQuery","OrderProcessGraphComponent_ng_container_0_Template","OrderProcessGraphComponent_ng_container_1_Template","OrderProcessGraphDialogComponent","getOrderProcessStates","OrderProcessGraphDialogComponent_ng_template_0_Template","activeState","payment_r1","paymentSelected","refundablePayments","PaymentForRefundSelectorComponent_vdr_card_0_ng_template_2_Template","PaymentForRefundSelectorComponent","PaymentForRefundSelectorComponent_vdr_card_0_Template","line_r14","line_r15","line_r16","asset_r21","RefundOrderDialogComponent_ng_template_14_img_1_Template","RefundOrderDialogComponent_ng_template_14_ng_template_2_Template","line_r17","line_r22","line_r23","line_r24","discount_r30","line_r25","RefundOrderDialogComponent_ng_template_26_ng_container_2_vdr_dropdown_1_div_5_Template","discounts_r27","RefundOrderDialogComponent_ng_template_26_ng_container_2_vdr_dropdown_1_Template","RefundOrderDialogComponent_ng_template_26_ng_container_2_Template","proratedUnitPriceWithTax","line_r33","_r38","line_r34","ctx_r36","onRefundQuantityChange","RefundOrderDialogComponent_ng_template_32_input_0_Template","ctx_r10","lineCanBeRefundedOrCancelled","line_r40","ctx_r41","RefundOrderDialogComponent_ng_template_35_input_2_Template","shippingLine_r46","_r48","toggleShippingRefund","discountedPriceWithTax","totalRefundableAmount","RefundOrderDialogComponent_ng_template_49_clr_alert_2_Template","RefundOrderDialogComponent_ng_template_49_clr_alert_3_Template","RefundOrderDialogComponent_ng_template_49_clr_alert_4_Template","_r53","ctx_r52","ctx_r54","refundTotal","amountToRefundTotal","RefundOrderDialogComponent","refundShippingLineIds","manuallySetRefundTotal","refundLine","updateRefundTotal","itemTotal","refundCount","shippingTotal","refundsAllocated","amountToRefund","setValue","indexOf","splice","selectionLine","previousQuantity","onPaymentSelected","outstandingRefundAmount","isRefunding","isCancelling","refundLines","getOrderLineInput","cancelLines","rp","paymentId","adjustment","filterFn","RefundOrderDialogComponent_ng_template_0_Template","RefundOrderDialogComponent_ng_template_5_Template","RefundOrderDialogComponent_ng_template_8_Template","RefundOrderDialogComponent_ng_template_11_Template","RefundOrderDialogComponent_ng_template_14_Template","RefundOrderDialogComponent_ng_template_17_Template","RefundOrderDialogComponent_ng_template_20_Template","RefundOrderDialogComponent_ng_template_23_Template","RefundOrderDialogComponent_ng_template_26_Template","RefundOrderDialogComponent_ng_template_29_Template","RefundOrderDialogComponent_ng_template_32_Template","RefundOrderDialogComponent_ng_template_35_Template","RefundOrderDialogComponent_label_39_Template","RefundOrderDialogComponent_ng_template_49_Template","SettleRefundDialogComponent","SettleRefundDialogComponent_ng_template_0_Template","SettleRefundDialogComponent_ng_template_9_Template","PaymentStateLabelComponent","PaymentStateLabelComponent_clr_icon_2_Template","RefundStateLabelComponent","RefundStateLabelComponent_clr_icon_2_Template","errorMessage","PaymentDetailComponent","PaymentDetailComponent_vdr_labeled_data_7_Template","PaymentDetailComponent_vdr_labeled_data_8_Template","refund_r3","settleRefund","OrderPaymentCardComponent_ng_container_10_vdr_labeled_data_17_Template","OrderPaymentCardComponent_ng_container_10_vdr_labeled_data_18_Template","OrderPaymentCardComponent_ng_container_10_vdr_labeled_data_19_Template","OrderPaymentCardComponent_ng_container_10_div_20_Template","refundHasMetadata","settlePayment","nextState_r18","transitionPaymentState","OrderPaymentCardComponent_div_11_ng_container_6_ng_container_2_Template","OrderPaymentCardComponent_div_11_ng_container_6_ng_template_3_Template","_r21","OrderPaymentCardComponent_div_11_button_1_Template","OrderPaymentCardComponent_div_11_ng_container_6_Template","OrderPaymentCardComponent","keys","OrderPaymentCardComponent_ng_container_5_Template","OrderPaymentCardComponent_ng_container_10_Template","OrderPaymentCardComponent_div_11_Template","OrderHistoryEntryHostComponent","historyEntryComponentService","expandClick","componentType","getComponent","entry","componentRef","portalRef","createComponent","instance","ViewContainerRef","getDisplayType","getIconShape","getName","isFeatured","expanded","entry_r3","OrderHistoryComponent_ng_container_15_ng_template_2_ng_container_2_div_1_Template","OrderHistoryComponent_ng_container_15_ng_template_2_ng_container_2_div_2_Template","OrderHistoryComponent_ng_container_15_ng_template_2_ng_container_2_ng_template_3_Template","OrderHistoryComponent_ng_container_15_ng_template_2_ng_container_3_div_4_vdr_chip_6_Template","OrderHistoryComponent_ng_container_15_ng_template_2_ng_container_3_div_4_vdr_chip_7_Template","modification_r28","priceChange","isSettled","OrderHistoryComponent_ng_container_15_ng_template_2_ng_container_3_div_4_Template","getModification","modificationId","payment_r37","payment_r38","OrderHistoryComponent_ng_container_15_ng_template_2_ng_container_4_ng_container_1_vdr_chip_5_Template","OrderHistoryComponent_ng_container_15_ng_template_2_ng_container_4_ng_container_1_vdr_history_entry_detail_6_Template","getPayment","tmp_0_0","OrderHistoryComponent_ng_container_15_ng_template_2_ng_container_4_ng_container_1_Template","OrderHistoryComponent_ng_container_15_ng_template_2_ng_container_4_ng_template_2_Template","refund_r46","getCancelledItems","OrderHistoryComponent_ng_container_15_ng_template_2_ng_container_5_ng_container_1_ng_container_1_Template","getRefund","refundId","OrderHistoryComponent_ng_container_15_ng_template_2_ng_container_5_ng_container_1_Template","OrderHistoryComponent_ng_container_15_ng_template_2_ng_container_5_ng_template_2_Template","_r44","items_r52","shippingCancelled","OrderHistoryComponent_ng_container_15_ng_template_2_ng_container_6_vdr_history_entry_detail_3_Template","_c2","getCancelledQuantity","fulfillment_r56","ctx_r55","OrderHistoryComponent_ng_container_15_ng_template_2_ng_container_7_vdr_history_entry_detail_3_Template","ctx_r15","getFulfillment","ctx_r58","ctx_r59","fulfillment_r65","ctx_r61","OrderHistoryComponent_ng_container_15_ng_template_2_ng_container_8_ng_container_1_Template","OrderHistoryComponent_ng_container_15_ng_template_2_ng_container_8_ng_container_2_Template","OrderHistoryComponent_ng_container_15_ng_template_2_ng_container_8_ng_container_3_Template","OrderHistoryComponent_ng_container_15_ng_template_2_ng_container_8_vdr_history_entry_detail_4_Template","OrderHistoryComponent_ng_container_15_ng_template_2_ng_container_9_span_3_Template","OrderHistoryComponent_ng_container_15_ng_template_2_ng_container_9_span_4_Template","_r71","ctx_r69","updateNote","ctx_r72","deleteNote","isPublic","promotionId","_c4","previousCustomerId","previousCustomerName","newCustomerId","newCustomerName","OrderHistoryComponent_ng_container_15_ng_template_2_ng_container_12_a_11_Template","OrderHistoryComponent_ng_container_15_ng_template_2_ng_container_12_a_14_Template","_c5","OrderHistoryComponent_ng_container_15_ng_template_2_ng_container_13_vdr_history_entry_detail_4_Template","_r86","ctx_r85","OrderHistoryComponent_ng_container_15_ng_template_2_ng_container_2_Template","OrderHistoryComponent_ng_container_15_ng_template_2_ng_container_3_Template","OrderHistoryComponent_ng_container_15_ng_template_2_ng_container_4_Template","OrderHistoryComponent_ng_container_15_ng_template_2_ng_container_5_Template","OrderHistoryComponent_ng_container_15_ng_template_2_ng_container_6_Template","OrderHistoryComponent_ng_container_15_ng_template_2_ng_container_7_Template","OrderHistoryComponent_ng_container_15_ng_template_2_ng_container_8_Template","OrderHistoryComponent_ng_container_15_ng_template_2_ng_container_9_Template","OrderHistoryComponent_ng_container_15_ng_template_2_ng_container_10_Template","OrderHistoryComponent_ng_container_15_ng_template_2_ng_container_11_Template","OrderHistoryComponent_ng_container_15_ng_template_2_ng_container_12_Template","OrderHistoryComponent_ng_container_15_ng_template_2_ng_container_13_Template","getTimelineIcon","ORDER_MODIFIED","ORDER_PAYMENT_TRANSITION","ORDER_REFUND_TRANSITION","ORDER_CANCELLATION","ORDER_FULFILLMENT","ORDER_FULFILLMENT_TRANSITION","ORDER_NOTE","ORDER_COUPON_APPLIED","ORDER_COUPON_REMOVED","ORDER_CUSTOMER_UPDATED","OrderHistoryComponent_ng_container_15_vdr_order_history_entry_host_1_Template","OrderHistoryComponent_ng_container_15_ng_template_2_Template","hasCustomComponent","OrderHistoryComponent","addNote","noteIsPrivate","cancellationLines","itemMap","cancellationLine","modifications","administrator","addNoteToOrder","OrderHistoryComponent_span_13_Template","OrderHistoryComponent_span_14_Template","OrderHistoryComponent_ng_container_15_Template","GET_SELLER_ORDERS","seller_r4","order_r1","SellerOrdersCardComponent_div_3_vdr_labeled_data_7_Template","SellerOrdersCardComponent_div_3_vdr_labeled_data_8_Template","getSeller","SellerOrdersCardComponent","channelService","sellerOrders$","sellerOrders","channels","channel","DEFAULT_CHANNEL_CODE","seller","navigateToSellerOrder","SellerOrdersCardComponent_div_3_Template","_r11","addManualPayment","outstandingPaymentAmount","_r14","fulfillOrder","canAddFulfillment","_r19","transitionToModifying","_r25","cancelOrRefund","OrderDetailComponent_vdr_action_bar_1_button_9_ng_container_2_Template","OrderDetailComponent_vdr_action_bar_1_button_9_ng_template_3_Template","orderHasSettledPayments","nextState_r28","_r30","OrderDetailComponent_vdr_action_bar_1_ng_container_10_button_2_Template","nextStates$","OrderDetailComponent_vdr_action_bar_1_button_4_Template","OrderDetailComponent_vdr_action_bar_1_button_5_Template","OrderDetailComponent_vdr_action_bar_1_button_6_Template","OrderDetailComponent_vdr_action_bar_1_ng_container_8_Template","OrderDetailComponent_vdr_action_bar_1_button_9_Template","OrderDetailComponent_vdr_action_bar_1_ng_container_10_Template","hasUnsettledModifications","tmp_6_0","_r45","openStateDiagram","setOrderCustomer","OrderDetailComponent_vdr_page_detail_layout_3_ng_template_8_button_0_Template","order_r33","_r54","ctx_r53","ctx_r56","payment_r52","OrderDetailComponent_vdr_page_detail_layout_3_vdr_card_12_vdr_order_payment_card_2_Template","fulfillment_r60","_r62","transitionFulfillment","OrderDetailComponent_vdr_page_detail_layout_3_vdr_card_13_vdr_fulfillment_card_1_Template","entity_r65","row_r67","_r70","ctx_r43","tmp_4_0","OrderDetailComponent_vdr_page_detail_layout_3_ng_template_4_Template","OrderDetailComponent_vdr_page_detail_layout_3_ng_template_8_Template","OrderDetailComponent_vdr_page_detail_layout_3_vdr_labeled_data_10_Template","OrderDetailComponent_vdr_page_detail_layout_3_vdr_labeled_data_11_Template","OrderDetailComponent_vdr_page_detail_layout_3_vdr_card_12_Template","OrderDetailComponent_vdr_page_detail_layout_3_vdr_card_13_Template","OrderDetailComponent_vdr_page_detail_layout_3_vdr_page_entity_info_15_Template","OrderDetailComponent_vdr_page_detail_layout_3_vdr_seller_orders_card_18_Template","OrderDetailComponent_vdr_page_detail_layout_3_tr_39_Template","OrderDetailComponent_vdr_page_detail_layout_3_vdr_card_40_Template","_r72","ctx_r71","ctx_r73","ctx_r74","history$","ORDER_DETAIL_QUERY","ORDER_DETAIL_FRAGMENT","SET_ORDER_CUSTOMER_MUTATION","OrderDetailComponent","FormGroup","getCustomFieldsDefaults","defaultStates","relativeTo","route","isExisting","mutate","SetOrderCustomerDocument","refetchOrder","getOrder","cancelPayment","paymentErrorMessage","transitionPaymentToState","allFulfillmentLines","allItemsFulfilled","getOutstandingModificationAmount","paymentIsValid","amountCovered","refundsTotal","priorState","addManualPaymentToOrder","createFulfillment","mapTo","addFulfillmentToOrder","fulfillmentHandlerError","JSON","stringify","assertNever","transitionFulfillmentToState","isRefundable","refundOrder","cancelOrder","EditNoteDialogComponent","displayPrivacyControls","updateOrderNote","noteId","isPrivate","body","res","deleteOrderNote","results","setCustomFieldFormValues","i3","OrderDetailComponent_vdr_action_bar_1_Template","OrderDetailComponent_vdr_page_detail_layout_3_Template","line_r8","OrderModificationSummaryComponent_vdr_labeled_data_0_div_2_Template","modifyOrderInput","adjustOrderLines","adjustedLines","item_r10","OrderModificationSummaryComponent_vdr_labeled_data_1_div_2_Template","addItems","addedLines","surcharge_r12","orderSnapshot","OrderModificationSummaryComponent_vdr_labeled_data_2_div_2_Template","updatedShippingFields_r13","updatedBillingFields_r14","change_r16","OrderModificationSummaryComponent_vdr_labeled_data_5_div_2_Template","couponCodeChanges","change_r20","OrderModificationSummaryComponent_ng_container_6_vdr_labeled_data_1_div_2_Template","updatedShippingMethods_r17","OrderModificationSummaryComponent_ng_container_6_vdr_labeled_data_1_Template","OrderModificationSummaryComponent","delta","getModifiedFields","controls","key","getUpdatedShippingMethodLines","updatedShippingMethods","previousMethod","originalCodes","newCodes","couponCodesControl","c","shippingAddressForm","billingAddressForm","OrderModificationSummaryComponent_vdr_labeled_data_0_Template","OrderModificationSummaryComponent_vdr_labeled_data_1_Template","OrderModificationSummaryComponent_vdr_labeled_data_2_Template","OrderModificationSummaryComponent_vdr_labeled_data_3_Template","OrderModificationSummaryComponent_vdr_labeled_data_4_Template","OrderModificationSummaryComponent_vdr_labeled_data_5_Template","OrderModificationSummaryComponent_ng_container_6_Template","refundNote","OrderEditsPreviewDialogComponent_ng_template_13_clr_alert_2_Template","priceDifference","refundsCoverDifference","OrderEditResultType","Refund","Payment","PriceUnchanged","Cancel","OrderEditsPreviewDialogComponent","forEach","addValidators","OrderEditsPreviewDialogComponent_ng_template_0_Template","OrderEditsPreviewDialogComponent_vdr_payment_for_refund_selector_4_Template","OrderEditsPreviewDialogComponent_vdr_form_field_12_Template","OrderEditsPreviewDialogComponent_ng_template_13_Template","transitionToPriorState","_r27","ctx_r26","editingShippingAddress","addressCustomFields","_r29","ctx_r28","editingBillingAddress","line_r30","line_r31","line_r32","asset_r37","OrderEditorComponent_vdr_page_detail_layout_3_ng_template_45_img_1_Template","OrderEditorComponent_vdr_page_detail_layout_3_ng_template_45_ng_template_2_Template","_r36","line_r38","line_r39","order_r5","_r46","line_r42","removeAddedItem","updateLineQuantity","OrderEditorComponent_vdr_page_detail_layout_3_ng_template_57_button_1_Template","ctx_r20","getInitialLineQuantity","isAddedLine","customField_r50","ctx_r51","orderLineCustomFieldsFormArray","at","index_r53","OrderEditorComponent_vdr_page_detail_layout_3_vdr_dt2_column_58_ng_template_3_Template","asset_r56","OrderEditorComponent_vdr_page_detail_layout_3_div_64_img_1_Template","ctx_r22","addItemSelectedVariant","productAsset","productVariantName","getSelectedItemPrice","customField_r59","addItemCustomFieldsForm","OrderEditorComponent_vdr_page_detail_layout_3_div_65_ng_container_1_Template","_r61","ctx_r60","_r67","shippingLine_r62","ctx_r65","details_r64","OrderEditorComponent_vdr_page_detail_layout_3_div_71_ng_container_1_Template","getShippingLineDetails","OrderEditorComponent_vdr_page_detail_layout_3_div_5_Template","recalculateShipping","previewAndModify","OrderEditorComponent_vdr_page_detail_layout_3_ng_template_23_Template","OrderEditorComponent_vdr_page_detail_layout_3_vdr_formatted_address_24_Template","OrderEditorComponent_vdr_page_detail_layout_3_vdr_address_form_25_Template","OrderEditorComponent_vdr_page_detail_layout_3_ng_template_28_Template","OrderEditorComponent_vdr_page_detail_layout_3_vdr_formatted_address_29_Template","OrderEditorComponent_vdr_page_detail_layout_3_vdr_address_form_30_Template","OrderEditorComponent_vdr_page_detail_layout_3_ng_template_36_Template","OrderEditorComponent_vdr_page_detail_layout_3_ng_template_39_Template","OrderEditorComponent_vdr_page_detail_layout_3_ng_template_42_Template","OrderEditorComponent_vdr_page_detail_layout_3_ng_template_45_Template","OrderEditorComponent_vdr_page_detail_layout_3_ng_template_48_Template","OrderEditorComponent_vdr_page_detail_layout_3_ng_template_51_Template","OrderEditorComponent_vdr_page_detail_layout_3_ng_template_54_Template","OrderEditorComponent_vdr_page_detail_layout_3_ng_template_57_Template","OrderEditorComponent_vdr_page_detail_layout_3_vdr_dt2_column_58_Template","OrderEditorComponent_vdr_page_detail_layout_3_div_64_Template","OrderEditorComponent_vdr_page_detail_layout_3_div_65_Template","OrderEditorComponent_vdr_page_detail_layout_3_button_68_Template","OrderEditorComponent_vdr_page_detail_layout_3_div_71_Template","addSurcharge","surchargeForm","hasModifications","tmp_53_0","tmp_56_0","OrderEditorComponent","changeDetectorRef","dryRun","updateShippingAddress","updateBillingAddress","minLength","priceIncludesTax","taxDescription","addedVariants","snapshot","paramMap","createOrderSnapshot","addAddressCustomFieldsFormGroup","UntypedFormArray","valueChanges","takeUntil","destroy$","modifyRow","addItemCustomFieldsFormArray","shareReplay","previousState","client","uiState","stream$","language","getSinglePriceValue","variantInfo","getIdForAddedItem","isLineModified","adjustedLine","addedLine","startsWith","updateAddedItemQuantity","trackByProductVariantId","isMatchingAddItemRow","updatedMethod","shippingLineId","currentShippingMethod","getSurchargePrices","surcharge","round","removeSurcharge","transformRelationCustomFieldInputs","simpleDeepClone","shippingMethodIds","modifyOrder","wetRunInput","nextState","parentFormGroup","addressCustomFieldsFormGroup","customFieldDef","languageCode","OrderEditorComponent_vdr_action_bar_1_Template","OrderEditorComponent_vdr_page_detail_layout_3_Template","OrderListComponent_ng_container_4_a_1_Template","order_r13","order_r14","order_r15","stopPropagation","order_r16","OrderListComponent_ng_template_28_vdr_chip_0_Template","OrderListComponent_ng_template_28_vdr_chip_1_Template","OrderListComponent_ng_template_28_vdr_chip_2_Template","order_r18","OrderType","Regular","Aggregate","Seller","order_r22","order_r23","order_r24","order_r25","orderPlacedAt","order_r26","customField_r27","sorts","OrderListComponent","TypedBaseListComponent","dataTableListId","orderStates","createFilterCollection","addIdFilter","addDateFilters","addFilter","kind","filterField","inputType","getOrderStateTranslationToken","addCustomFieldFilters","connectToRoute","createSortCollection","defaultSort","addSort","addCustomFieldSorts","canCreateDraftOrder","activeChannelIsDefaultChannel","configure","document","GetOrderListDocument","getItems","orders","setVariables","createQueryOptions","searchTermControl","refreshListOnChanges","isDefaultChannel$","defaultChannelIsActive$","isDefault","searchTerm","filterInput","createFilterInput","customerLastName","filterOperator","LogicalOperator","OR","AND","createSortInput","OrderListComponent_ng_container_4_Template","setPageNumber","setItemsPerPage","setVisibleColumns","OrderListComponent_ng_template_16_Template","OrderListComponent_ng_template_19_Template","OrderListComponent_ng_template_22_Template","OrderListComponent_ng_template_25_Template","OrderListComponent_ng_template_28_Template","OrderListComponent_ng_template_31_Template","OrderListComponent_ng_template_34_Template","OrderListComponent_ng_template_37_Template","OrderListComponent_ng_template_40_Template","OrderListComponent_ng_template_43_Template","OrderListComponent_vdr_dt2_custom_field_column_44_Template","items$","itemsPerPage$","totalItems$","currentPage$","RefundDetailComponent","RefundDetailComponent_vdr_labeled_data_4_Template","GET_CUSTOMER_ADDRESSES","ADDRESS_FRAGMENT","GET_ORDER_STATE","OrderGuard","canActivate","url","isModifying","createDraftOrder","parseUrl","createRoutes","pageService","path","PageComponent","locationId","breadcrumb","children","getPageTabRoutes","link","OrderModule","hasRegisteredTabsAndBulkActions","registerPageTab","priority","location","tab","detailComponentWithResolver","OrderDetailQueryDocument","entityKey","getBreadcrumbs","aggregateOrder","a4G","s3X","provide","ROUTES","useFactory","multi","deps","PageService","imports","SharedModule","RouterModule","forChild"],"sourceRoot":"webpack:///","sources":["./src/lib/order/src/common/get-refundable-payments.ts","./src/lib/order/src/components/add-manual-payment-dialog/add-manual-payment-dialog.component.html","./src/lib/order/src/components/add-manual-payment-dialog/add-manual-payment-dialog.component.ts","./src/lib/order/src/components/cancel-order-dialog/cancel-order-dialog.component.html","./src/lib/order/src/components/cancel-order-dialog/cancel-order-dialog.component.ts","./src/lib/order/src/components/coupon-code-selector/coupon-code-selector.component.html","./src/lib/order/src/components/coupon-code-selector/coupon-code-selector.component.ts","./src/lib/order/src/components/select-address-dialog/select-address-dialog.component.html","./src/lib/order/src/components/select-address-dialog/select-address-dialog.component.ts","./src/lib/order/src/components/select-customer-dialog/select-customer-dialog.component.html","./src/lib/order/src/components/select-customer-dialog/select-customer-dialog.component.ts","./src/lib/order/src/components/select-shipping-method-dialog/select-shipping-method-dialog.component.html","./src/lib/order/src/components/select-shipping-method-dialog/select-shipping-method-dialog.component.ts","./src/lib/order/src/components/order-state-select-dialog/order-state-select-dialog.component.html","./src/lib/order/src/components/order-state-select-dialog/order-state-select-dialog.component.ts","./src/lib/order/src/providers/order-transition.service.ts","../node_modules/rxjs/dist/esm/internal/operators/retryWhen.js","./src/lib/order/src/components/order-custom-fields-card/order-custom-fields-card.component.html","./src/lib/order/src/components/order-custom-fields-card/order-custom-fields-card.component.ts","./src/lib/order/src/components/line-fulfillment/line-fulfillment.component.html","./src/lib/order/src/components/line-fulfillment/line-fulfillment.component.ts","./src/lib/order/src/components/line-refunds/line-refunds.component.html","./src/lib/order/src/components/line-refunds/line-refunds.component.ts","./src/lib/order/src/components/order-data-table/order-total-column.component.ts","./src/lib/order/src/components/order-data-table/order-data-table.component.html","./src/lib/order/src/components/order-data-table/order-data-table.component.ts","./src/lib/order/src/components/order-table/order-table.component.html","./src/lib/order/src/components/order-table/order-table.component.ts","./src/lib/order/src/components/draft-order-variant-selector/draft-order-variant-selector.component.html","./src/lib/order/src/components/draft-order-variant-selector/draft-order-variant-selector.component.ts","./src/lib/order/src/components/draft-order-detail/draft-order-detail.component.html","./src/lib/order/src/components/draft-order-detail/draft-order-detail.component.ts","./src/lib/order/src/components/fulfill-order-dialog/fulfill-order-dialog.component.html","./src/lib/order/src/components/fulfill-order-dialog/fulfill-order-dialog.component.ts","./src/lib/order/src/components/simple-item-list/simple-item-list.component.html","./src/lib/order/src/components/simple-item-list/simple-item-list.component.ts","./src/lib/order/src/components/fulfillment-detail/fulfillment-detail.component.html","./src/lib/order/src/components/fulfillment-detail/fulfillment-detail.component.ts","./src/lib/order/src/components/fulfillment-state-label/fulfillment-state-label.component.html","./src/lib/order/src/components/fulfillment-state-label/fulfillment-state-label.component.ts","./src/lib/order/src/components/fulfillment-card/fulfillment-card.component.html","./src/lib/order/src/components/fulfillment-card/fulfillment-card.component.ts","./src/lib/order/src/components/modification-detail/modification-detail.component.html","./src/lib/order/src/components/modification-detail/modification-detail.component.ts","./src/lib/order/src/components/order-process-graph/constants.ts","./src/lib/order/src/components/order-process-graph/order-process-node.component.html","./src/lib/order/src/components/order-process-graph/order-process-node.component.ts","./src/lib/order/src/components/order-process-graph/order-process-edge.component.ts","./src/lib/order/src/components/order-process-graph/order-process-edge.component.html","./src/lib/order/src/components/order-process-graph/order-process-graph.component.html","./src/lib/order/src/components/order-process-graph/order-process-graph.component.ts","./src/lib/order/src/components/order-process-graph-dialog/order-process-graph-dialog.component.html","./src/lib/order/src/components/order-process-graph-dialog/order-process-graph-dialog.component.ts","./src/lib/order/src/components/payment-for-refund-selector/payment-for-refund-selector.component.html","./src/lib/order/src/components/payment-for-refund-selector/payment-for-refund-selector.component.ts","./src/lib/order/src/components/refund-order-dialog/refund-order-dialog.component.html","./src/lib/order/src/components/refund-order-dialog/refund-order-dialog.component.ts","./src/lib/order/src/components/settle-refund-dialog/settle-refund-dialog.component.html","./src/lib/order/src/components/settle-refund-dialog/settle-refund-dialog.component.ts","./src/lib/order/src/components/payment-state-label/payment-state-label.component.html","./src/lib/order/src/components/payment-state-label/payment-state-label.component.ts","./src/lib/order/src/components/refund-state-label/refund-state-label.component.html","./src/lib/order/src/components/refund-state-label/refund-state-label.component.ts","./src/lib/order/src/components/payment-detail/payment-detail.component.html","./src/lib/order/src/components/payment-detail/payment-detail.component.ts","./src/lib/order/src/components/order-payment-card/order-payment-card.component.html","./src/lib/order/src/components/order-payment-card/order-payment-card.component.ts","./src/lib/order/src/components/order-history/order-history-entry-host.component.ts","./src/lib/order/src/components/order-history/order-history.component.html","./src/lib/order/src/components/order-history/order-history.component.ts","./src/lib/order/src/components/seller-orders-card/seller-orders-card.graphql.ts","./src/lib/order/src/components/seller-orders-card/seller-orders-card.component.html","./src/lib/order/src/components/seller-orders-card/seller-orders-card.component.ts","./src/lib/order/src/components/order-detail/order-detail.component.html","./src/lib/order/src/components/order-detail/order-detail.component.ts","./src/lib/order/src/components/order-modification-summary/order-modification-summary.component.html","./src/lib/order/src/components/order-modification-summary/order-modification-summary.component.ts","./src/lib/order/src/components/order-edits-preview-dialog/order-edits-preview-dialog.component.html","./src/lib/order/src/components/order-edits-preview-dialog/order-edits-preview-dialog.component.ts","./src/lib/order/src/components/order-editor/order-editor.component.html","./src/lib/order/src/components/order-editor/order-editor.component.ts","./src/lib/order/src/components/order-list/order-list.component.html","./src/lib/order/src/components/order-list/order-list.component.ts","./src/lib/order/src/components/refund-detail/refund-detail.component.html","./src/lib/order/src/components/refund-detail/refund-detail.component.ts","./src/lib/order/src/components/select-address-dialog/select-address-dialog.graphql.ts","./src/lib/order/src/providers/routing/order.guard.ts","./src/lib/order/src/order.routes.ts","./src/lib/order/src/order.module.ts"],"sourcesContent":["import { FormControl, Validators } from '@angular/forms';\r\nimport { OrderDetailFragment } from '@vendure/admin-ui/core';\r\nimport { summate } from '@vendure/common/lib/shared-utils';\r\n\r\nexport type Payment = NonNullable<OrderDetailFragment['payments']>[number];\r\nexport type RefundablePayment = Payment & {\r\n refundableAmount: number;\r\n amountToRefundControl: FormControl<number>;\r\n selected: boolean;\r\n};\r\n\r\nexport function getRefundablePayments(payments: OrderDetailFragment['payments']): RefundablePayment[] {\r\n const settledPayments = (payments || []).filter(p => p.state === 'Settled');\r\n return settledPayments.map((payment, index) => {\r\n const refundableAmount =\r\n payment.amount -\r\n summate(\r\n payment.refunds.filter(r => r.state !== 'Failed'),\r\n 'total',\r\n );\r\n return {\r\n ...payment,\r\n refundableAmount,\r\n amountToRefundControl: new FormControl(0, {\r\n nonNullable: true,\r\n validators: [Validators.min(0), Validators.max(refundableAmount)],\r\n }),\r\n selected: index === 0,\r\n };\r\n });\r\n}\r\n","<ng-template vdrDialogTitle>{{ 'order.add-payment-to-order' | translate }}</ng-template>\r\n<form [formGroup]=\"form\">\r\n <vdr-form-field [label]=\"'order.payment-method' | translate\" for=\"method\">\r\n <ng-select\r\n [items]=\"paymentMethods$ | async\"\r\n bindLabel=\"code\"\r\n appendTo=\"body\"\r\n autofocus\r\n bindValue=\"code\"\r\n [addTag]=\"true\"\r\n formControlName=\"method\"\r\n ></ng-select>\r\n </vdr-form-field>\r\n <vdr-form-field [label]=\"'order.transaction-id' | translate\" for=\"transactionId\">\r\n <input id=\"transactionId\" type=\"text\" formControlName=\"transactionId\" />\r\n </vdr-form-field>\r\n</form>\r\n<ng-template vdrDialogButtons>\r\n <button type=\"button\" class=\"btn\" (click)=\"cancel()\">{{ 'common.cancel' | translate }}</button>\r\n <button type=\"submit\" (click)=\"submit()\" class=\"btn btn-primary\" [disabled]=\"form.invalid || form.pristine\">\r\n {{ 'order.add-payment' | translate }} ({{ outstandingAmount | localeCurrency: currencyCode }})\r\n </button>\r\n</ng-template>\r\n","import { ChangeDetectionStrategy, Component, OnInit } from '@angular/core';\r\nimport { UntypedFormControl, UntypedFormGroup, Validators } from '@angular/forms';\r\nimport {\r\n CurrencyCode,\r\n DataService,\r\n Dialog,\r\n GetAddManualPaymentMethodListDocument,\r\n GetAddManualPaymentMethodListQuery,\r\n GetPaymentMethodListQuery,\r\n ItemOf,\r\n ManualPaymentInput,\r\n PAYMENT_METHOD_FRAGMENT,\r\n} from '@vendure/admin-ui/core';\r\nimport { gql } from 'apollo-angular';\r\nimport { Observable } from 'rxjs';\r\n\r\nconst GET_PAYMENT_METHODS_FOR_MANUAL_ADD = gql`\r\n query GetAddManualPaymentMethodList($options: PaymentMethodListOptions!) {\r\n paymentMethods(options: $options) {\r\n items {\r\n id\r\n createdAt\r\n updatedAt\r\n name\r\n code\r\n description\r\n enabled\r\n }\r\n totalItems\r\n }\r\n }\r\n`;\r\n\r\n@Component({\r\n selector: 'vdr-add-manual-payment-dialog',\r\n templateUrl: './add-manual-payment-dialog.component.html',\r\n styleUrls: ['./add-manual-payment-dialog.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class AddManualPaymentDialogComponent implements OnInit, Dialog<Omit<ManualPaymentInput, 'orderId'>> {\r\n // populated by ModalService call\r\n outstandingAmount: number;\r\n currencyCode: CurrencyCode;\r\n\r\n resolveWith: (result?: Omit<ManualPaymentInput, 'orderId'>) => void;\r\n form = new UntypedFormGroup({\r\n method: new UntypedFormControl('', Validators.required),\r\n transactionId: new UntypedFormControl('', Validators.required),\r\n });\r\n paymentMethods$: Observable<Array<ItemOf<GetAddManualPaymentMethodListQuery, 'paymentMethods'>>>;\r\n constructor(private dataService: DataService) {}\r\n\r\n ngOnInit(): void {\r\n this.paymentMethods$ = this.dataService\r\n .query(GetAddManualPaymentMethodListDocument, {\r\n options: {\r\n take: 999,\r\n },\r\n })\r\n .mapSingle(data => data.paymentMethods.items);\r\n }\r\n\r\n submit() {\r\n const formValue = this.form.value;\r\n this.resolveWith({\r\n method: formValue.method,\r\n transactionId: formValue.transactionId,\r\n });\r\n }\r\n\r\n cancel() {\r\n this.resolveWith();\r\n }\r\n}\r\n","<ng-template vdrDialogTitle>{{ 'order.cancel-order' | translate }}</ng-template>\r\n\r\n<div class=\"fulfillment-wrapper\">\r\n <div class=\"order-lines\">\r\n <table class=\"table\">\r\n <thead>\r\n <tr>\r\n <th></th>\r\n <th>{{ 'order.product-name' | translate }}</th>\r\n <th>{{ 'order.product-sku' | translate }}</th>\r\n <th>{{ 'order.quantity' | translate }}</th>\r\n <th>{{ 'order.unit-price' | translate }}</th>\r\n <th>{{ 'order.cancel' | translate }}</th>\r\n </tr>\r\n </thead>\r\n <tr\r\n *ngFor=\"let line of order.lines\"\r\n class=\"order-line\"\r\n [class.is-disabled]=\"cancelAll\"\r\n [class.is-cancelled]=\"line.quantity === 0\"\r\n >\r\n <td class=\"align-middle thumb\">\r\n <img [src]=\"line.featuredAsset | assetPreview: 'tiny'\" />\r\n </td>\r\n <td class=\"align-middle name\">{{ line.productVariant.name }}</td>\r\n <td class=\"align-middle sku\">{{ line.productVariant.sku }}</td>\r\n <td class=\"align-middle quantity\">{{ line.quantity }}</td>\r\n <td class=\"align-middle quantity\">\r\n {{ line.unitPriceWithTax | localeCurrency: order.currencyCode }}\r\n </td>\r\n <td class=\"align-middle fulfil\">\r\n <input\r\n *ngIf=\"line.quantity > 0 && !order.active; else nonEditable\"\r\n [(ngModel)]=\"lineQuantities[line.id]\"\r\n (input)=\"checkIfAllSelected()\"\r\n [disabled]=\"cancelAll\"\r\n type=\"number\"\r\n [max]=\"line.quantity\"\r\n min=\"0\"\r\n />\r\n <ng-template #nonEditable>{{ line.quantity }}</ng-template>\r\n </td>\r\n </tr>\r\n </table>\r\n </div>\r\n <div class=\"cancellation-details\">\r\n <ng-container *ngIf=\"order.active !== true\">\r\n <clr-radio-wrapper>\r\n <input\r\n type=\"radio\"\r\n clrRadio\r\n [value]=\"true\"\r\n [(ngModel)]=\"cancelAll\"\r\n name=\"options\"\r\n (ngModelChange)=\"radioChanged()\"\r\n />\r\n <label>{{ 'order.cancel-entire-order' | translate }}</label>\r\n </clr-radio-wrapper>\r\n <clr-radio-wrapper>\r\n <input\r\n type=\"radio\"\r\n clrRadio\r\n [value]=\"false\"\r\n [(ngModel)]=\"cancelAll\"\r\n name=\"options\"\r\n (ngModelChange)=\"radioChanged()\"\r\n />\r\n <label>{{ 'order.cancel-specified-items' | translate }}</label>\r\n </clr-radio-wrapper>\r\n </ng-container>\r\n <label class=\"clr-control-label\">{{ 'order.cancellation-reason' | translate }}</label>\r\n <ng-select\r\n [items]=\"reasons\"\r\n bindLabel=\"name\"\r\n autofocus\r\n bindValue=\"id\"\r\n [addTag]=\"true\"\r\n [(ngModel)]=\"reason\"\r\n ></ng-select>\r\n </div>\r\n</div>\r\n\r\n<ng-template vdrDialogButtons>\r\n <button type=\"button\" class=\"btn\" (click)=\"cancel()\">{{ 'common.cancel' | translate }}</button>\r\n <button\r\n type=\"submit\"\r\n (click)=\"select()\"\r\n [disabled]=\"!reason || (!order.active && selectionCount === 0)\"\r\n class=\"btn btn-primary\"\r\n >\r\n <ng-container *ngIf=\"!order.active\">\r\n {{ 'order.cancel-selected-items' | translate }}\r\n </ng-container>\r\n <ng-container *ngIf=\"order.active\">\r\n {{ 'order.cancel-order' | translate }}\r\n </ng-container>\r\n </button>\r\n</ng-template>\r\n","import { ChangeDetectionStrategy, Component, OnInit } from '@angular/core';\r\nimport { marker as _ } from '@biesbjerg/ngx-translate-extract-marker';\r\nimport {\r\n CancelOrderInput,\r\n Dialog,\r\n getAppConfig,\r\n I18nService,\r\n OrderDetailFragment,\r\n OrderLineInput,\r\n} from '@vendure/admin-ui/core';\r\n\r\n@Component({\r\n selector: 'vdr-cancel-order-dialog',\r\n templateUrl: './cancel-order-dialog.component.html',\r\n styleUrls: ['./cancel-order-dialog.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class CancelOrderDialogComponent implements OnInit, Dialog<CancelOrderInput> {\r\n order: OrderDetailFragment;\r\n cancelAll = true;\r\n resolveWith: (result?: CancelOrderInput) => void;\r\n reason: string;\r\n lineQuantities: { [lineId: string]: number } = {};\r\n reasons: string[] = getAppConfig().cancellationReasons ?? [\r\n _('order.cancel-reason-customer-request'),\r\n _('order.cancel-reason-not-available'),\r\n ];\r\n\r\n get selectionCount(): number {\r\n return Object.values(this.lineQuantities).reduce((sum, n) => sum + n, 0);\r\n }\r\n\r\n constructor(private i18nService: I18nService) {\r\n this.reasons = this.reasons.map(r => this.i18nService.translate(r));\r\n }\r\n\r\n ngOnInit() {\r\n this.lineQuantities = this.order.lines.reduce(\r\n (result, line) => ({ ...result, [line.id]: line.quantity }),\r\n {},\r\n );\r\n }\r\n\r\n radioChanged() {\r\n if (this.cancelAll) {\r\n for (const line of this.order.lines) {\r\n this.lineQuantities[line.id] = line.quantity;\r\n }\r\n } else {\r\n for (const line of this.order.lines) {\r\n this.lineQuantities[line.id] = 0;\r\n }\r\n }\r\n }\r\n\r\n checkIfAllSelected() {\r\n for (const [lineId, quantity] of Object.entries(this.lineQuantities)) {\r\n const quantityInOrder = this.order.lines.find(line => line.id === lineId)?.quantity;\r\n if (quantityInOrder && quantity < quantityInOrder) {\r\n return;\r\n }\r\n }\r\n // If we got here, all of the selected quantities are equal to the order\r\n // line quantities, i.e. everything is selected.\r\n this.cancelAll = true;\r\n }\r\n\r\n select() {\r\n this.resolveWith({\r\n orderId: this.order.id,\r\n lines: this.getLineInputs(),\r\n reason: this.reason,\r\n cancelShipping: this.cancelAll,\r\n });\r\n }\r\n\r\n cancel() {\r\n this.resolveWith();\r\n }\r\n\r\n private getLineInputs(): OrderLineInput[] | undefined {\r\n if (this.order.active) {\r\n return;\r\n }\r\n return Object.entries(this.lineQuantities)\r\n .map(([orderLineId, quantity]) => ({\r\n orderLineId,\r\n quantity,\r\n }))\r\n .filter(l => 0 < l.quantity);\r\n }\r\n}\r\n","<ng-select\r\n [items]=\"availableCouponCodes$ | async\"\r\n appendTo=\"body\"\r\n bindLabel=\"code\"\r\n bindValue=\"code\"\r\n [addTag]=\"false\"\r\n [multiple]=\"true\"\r\n [hideSelected]=\"true\"\r\n [minTermLength]=\"2\"\r\n typeToSearchText=\"\"\r\n [typeahead]=\"couponCodeInput$\"\r\n [formControl]=\"control\"\r\n (add)=\"addCouponCode.emit($event.code)\"\r\n (remove)=\"remove($event.code)\"\r\n>\r\n <ng-template ng-option-tmp let-item=\"item\">\r\n <div class=\"flex items-center\">\r\n <vdr-chip class=\"mr-1\">{{ item.code }}</vdr-chip>\r\n <span>{{ item.promotionName }}</span>\r\n </div>\r\n </ng-template>\r\n</ng-select>\r\n","import { ChangeDetectionStrategy, Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\r\nimport { UntypedFormControl } from '@angular/forms';\r\nimport {\r\n DataService,\r\n GetCouponCodeSelectorPromotionListDocument,\r\n PROMOTION_FRAGMENT,\r\n} from '@vendure/admin-ui/core';\r\nimport { gql } from 'apollo-angular';\r\nimport { concat, Observable, Subject } from 'rxjs';\r\nimport { debounceTime, distinctUntilChanged, map, skip, startWith, switchMap } from 'rxjs/operators';\r\n\r\nexport const GET_COUPON_CODE_SELECTOR_PROMOTION_LIST = gql`\r\n query GetCouponCodeSelectorPromotionList($options: PromotionListOptions) {\r\n promotions(options: $options) {\r\n items {\r\n id\r\n name\r\n couponCode\r\n }\r\n totalItems\r\n }\r\n }\r\n`;\r\n\r\n@Component({\r\n selector: 'vdr-coupon-code-selector',\r\n templateUrl: './coupon-code-selector.component.html',\r\n styleUrls: ['./coupon-code-selector.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class CouponCodeSelectorComponent implements OnInit {\r\n @Input() couponCodes: string[];\r\n @Input() control: UntypedFormControl | undefined;\r\n @Output() addCouponCode = new EventEmitter<string>();\r\n @Output() removeCouponCode = new EventEmitter<string>();\r\n availableCouponCodes$: Observable<Array<{ code: string; promotionName: string }>>;\r\n couponCodeInput$ = new Subject<string>();\r\n constructor(private dataService: DataService) {}\r\n\r\n ngOnInit(): void {\r\n this.availableCouponCodes$ = concat(\r\n this.couponCodeInput$.pipe(\r\n debounceTime(200),\r\n distinctUntilChanged(),\r\n switchMap(\r\n term =>\r\n this.dataService.query(GetCouponCodeSelectorPromotionListDocument, {\r\n options: {\r\n take: 10,\r\n skip: 0,\r\n filter: {\r\n couponCode: { contains: term },\r\n },\r\n },\r\n }).single$,\r\n ),\r\n map(({ promotions }) =>\r\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\r\n promotions.items.map(p => ({ code: p.couponCode!, promotionName: p.name })),\r\n ),\r\n startWith([]),\r\n ),\r\n );\r\n if (!this.control) {\r\n this.control = new UntypedFormControl(this.couponCodes ?? []);\r\n }\r\n }\r\n\r\n remove(code: string) {\r\n this.removeCouponCode.emit(code);\r\n }\r\n}\r\n","<ng-template vdrDialogTitle>{{ 'order.select-address' | translate }}</ng-template>\r\n\r\n<clr-tabs *ngIf=\"addresses$ | async as addresses\">\r\n <clr-tab *ngIf=\"customerId && addresses.length\">\r\n <button clrTabLink>{{ 'order.existing-address' | translate }}</button>\r\n <ng-template [(clrIfActive)]=\"useExisting\">\r\n <clr-tab-content>\r\n <vdr-radio-card-fieldset\r\n class=\"block mt-4\"\r\n [idFn]=\"addressIdFn\"\r\n [selectedItemId]=\"selectedAddress && addressIdFn(selectedAddress)\"\r\n (selectItem)=\"selectedAddress = $event\"\r\n >\r\n <vdr-radio-card *ngFor=\"let address of addresses\" [item]=\"address\">\r\n <vdr-formatted-address [address]=\"address\"></vdr-formatted-address>\r\n </vdr-radio-card>\r\n </vdr-radio-card-fieldset>\r\n </clr-tab-content>\r\n </ng-template>\r\n </clr-tab>\r\n <clr-tab>\r\n <button clrTabLink>{{ 'customer.create-new-address' | translate }}</button>\r\n\r\n <ng-template [(clrIfActive)]=\"createNew\">\r\n <clr-tab-content>\r\n <vdr-address-form\r\n [formGroup]=\"addressForm\"\r\n [availableCountries]=\"availableCountries$ | async\"\r\n ></vdr-address-form>\r\n </clr-tab-content>\r\n </ng-template>\r\n </clr-tab>\r\n</clr-tabs>\r\n\r\n<ng-template vdrDialogButtons>\r\n <button type=\"button\" class=\"btn\" (click)=\"cancel()\">{{ 'common.cancel' | translate }}</button>\r\n <button\r\n type=\"submit\"\r\n (click)=\"select()\"\r\n [disabled]=\"(useExisting && !selectedAddress) || (createNew && addressForm.invalid)\"\r\n class=\"btn btn-primary\"\r\n >\r\n {{ 'common.okay' | translate }}\r\n </button>\r\n</ng-template>\r\n","import { ChangeDetectionStrategy, Component, OnInit } from '@angular/core';\r\nimport { UntypedFormBuilder, UntypedFormGroup, Validators } from '@angular/forms';\r\nimport {\r\n AddressFragment,\r\n CreateAddressInput,\r\n DataService,\r\n Dialog,\r\n GetAvailableCountriesQuery,\r\n GetCustomerAddressesDocument,\r\n OrderAddressFragment,\r\n} from '@vendure/admin-ui/core';\r\nimport { pick } from '@vendure/common/lib/pick';\r\nimport { Observable, of } from 'rxjs';\r\nimport { tap } from 'rxjs/operators';\r\n\r\nimport { Customer } from '../select-customer-dialog/select-customer-dialog.component';\r\n\r\n@Component({\r\n selector: 'vdr-select-address-dialog',\r\n templateUrl: './select-address-dialog.component.html',\r\n styleUrls: ['./select-address-dialog.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class SelectAddressDialogComponent implements OnInit, Dialog<CreateAddressInput> {\r\n resolveWith: (result?: CreateAddressInput) => void;\r\n availableCountries$: Observable<GetAvailableCountriesQuery['countries']['items']>;\r\n addresses$: Observable<AddressFragment[]>;\r\n customerId: string | undefined;\r\n currentAddress: OrderAddressFragment | undefined;\r\n addressForm: UntypedFormGroup;\r\n selectedAddress: AddressFragment | undefined;\r\n useExisting = true;\r\n createNew = false;\r\n\r\n constructor(private dataService: DataService, private formBuilder: UntypedFormBuilder) {}\r\n\r\n ngOnInit(): void {\r\n this.addressForm = this.formBuilder.group({\r\n fullName: [this.currentAddress?.fullName ?? ''],\r\n company: [this.currentAddress?.company ?? ''],\r\n streetLine1: [this.currentAddress?.streetLine1 ?? '', Validators.required],\r\n streetLine2: [this.currentAddress?.streetLine2 ?? ''],\r\n city: [this.currentAddress?.city ?? '', Validators.required],\r\n province: [this.currentAddress?.province ?? ''],\r\n postalCode: [this.currentAddress?.postalCode ?? '', Validators.required],\r\n countryCode: [this.currentAddress?.countryCode ?? '', Validators.required],\r\n phoneNumber: [this.currentAddress?.phoneNumber ?? ''],\r\n });\r\n this.useExisting = !!this.customerId;\r\n this.addresses$ = this.customerId\r\n ? this.dataService\r\n .query(GetCustomerAddressesDocument, { customerId: this.customerId })\r\n .mapSingle(({ customer }) => customer?.addresses ?? [])\r\n .pipe(\r\n tap(addresses => {\r\n if (this.currentAddress) {\r\n this.selectedAddress = addresses.find(\r\n a =>\r\n a.streetLine1 === this.currentAddress?.streetLine1 &&\r\n a.postalCode === this.currentAddress?.postalCode,\r\n );\r\n }\r\n if (addresses.length === 0) {\r\n this.createNew = true;\r\n this.useExisting = false;\r\n }\r\n }),\r\n )\r\n : of([]);\r\n this.availableCountries$ = this.dataService.settings\r\n .getAvailableCountries()\r\n .mapSingle(({ countries }) => countries.items);\r\n }\r\n\r\n trackByFn(item: Customer) {\r\n return item.id;\r\n }\r\n\r\n addressIdFn(item: AddressFragment) {\r\n return item.streetLine1 + item.postalCode;\r\n }\r\n\r\n cancel() {\r\n this.resolveWith();\r\n }\r\n\r\n select() {\r\n if (this.useExisting && this.selectedAddress) {\r\n this.resolveWith({\r\n ...pick(this.selectedAddress, [\r\n 'fullName',\r\n 'company',\r\n 'streetLine1',\r\n 'streetLine2',\r\n 'city',\r\n 'province',\r\n 'phoneNumber',\r\n 'postalCode',\r\n ]),\r\n countryCode: this.selectedAddress.country.code,\r\n });\r\n }\r\n if (this.createNew && this.addressForm.valid) {\r\n const formValue = this.addressForm.value;\r\n this.resolveWith(formValue);\r\n }\r\n }\r\n}\r\n","<ng-template vdrDialogTitle>{{ title | translate }}</ng-template>\r\n\r\n<ng-container *ngIf=\"!canCreateNew\">\r\n <ng-container *ngTemplateOutlet=\"customerSelect\"></ng-container>\r\n <vdr-form-field [label]=\"'common.add-note' | translate\" *ngIf=\"includeNoteInput\" class=\"mt-4\">\r\n <textarea [(ngModel)]=\"note\"></textarea>\r\n </vdr-form-field>\r\n</ng-container>\r\n\r\n<clr-tabs *ngIf=\"canCreateNew\" class=\"pt-1\">\r\n <clr-tab>\r\n <button clrTabLink>{{ 'order.existing-customer' | translate }}</button>\r\n\r\n <ng-template [(clrIfActive)]=\"useExisting\">\r\n <clr-tab-content>\r\n <div class=\"mt-4\">\r\n <ng-container *ngTemplateOutlet=\"customerSelect\"></ng-container>\r\n </div>\r\n </clr-tab-content>\r\n </ng-template>\r\n </clr-tab>\r\n <clr-tab *ngIf=\"canCreateNew\">\r\n <button clrTabLink>{{ 'customer.create-new-customer' | translate }}</button>\r\n\r\n <ng-template [(clrIfActive)]=\"createNew\">\r\n <clr-tab-content>\r\n <form [formGroup]=\"customerForm\">\r\n <vdr-form-field [label]=\"'customer.title' | translate\" for=\"title\">\r\n <input id=\"title\" type=\"text\" formControlName=\"title\" />\r\n </vdr-form-field>\r\n <vdr-form-field [label]=\"'customer.first-name' | translate\" for=\"firstName\">\r\n <input id=\"firstName\" type=\"text\" formControlName=\"firstName\" />\r\n </vdr-form-field>\r\n <vdr-form-field [label]=\"'customer.last-name' | translate\" for=\"lastName\">\r\n <input id=\"lastName\" type=\"text\" formControlName=\"lastName\" />\r\n </vdr-form-field>\r\n <vdr-form-field [label]=\"'customer.email-address' | translate\" for=\"emailAddress\">\r\n <input id=\"emailAddress\" type=\"text\" formControlName=\"emailAddress\" />\r\n </vdr-form-field>\r\n <vdr-form-field [label]=\"'customer.phone-number' | translate\" for=\"phoneNumber\">\r\n <input id=\"phoneNumber\" type=\"text\" formControlName=\"phoneNumber\" />\r\n </vdr-form-field>\r\n </form>\r\n </clr-tab-content>\r\n </ng-template>\r\n </clr-tab>\r\n</clr-tabs>\r\n\r\n<ng-template #customerSelect>\r\n <ng-select\r\n [items]=\"customers$ | async\"\r\n appendTo=\"body\"\r\n bindLabel=\"name\"\r\n [addTag]=\"false\"\r\n [multiple]=\"true\"\r\n [hideSelected]=\"true\"\r\n [trackByFn]=\"trackByFn\"\r\n [minTermLength]=\"2\"\r\n [loading]=\"isLoading\"\r\n [typeahead]=\"input$\"\r\n [(ngModel)]=\"selectedCustomer\"\r\n >\r\n <ng-template ng-label-tmp let-item=\"item\" let-clear=\"clear\">\r\n <span class=\"item-row\">\r\n <clr-icon shape=\"user\" class=\"is-solid\"></clr-icon\r\n ><span class=\"mx-1\">{{ item.firstName }} {{ item.lastName }}</span>\r\n <vdr-chip>{{ item.emailAddress }}</vdr-chip>\r\n </span>\r\n </ng-template>\r\n <ng-template ng-option-tmp let-item=\"item\">\r\n <span class=\"item-row\">\r\n <clr-icon shape=\"user\" class=\"is-solid\"></clr-icon\r\n ><span class=\"mx-1\">{{ item.firstName }} {{ item.lastName }}</span>\r\n <vdr-chip>{{ item.emailAddress }}</vdr-chip>\r\n </span>\r\n </ng-template>\r\n </ng-select>\r\n</ng-template>\r\n\r\n<ng-template vdrDialogButtons>\r\n <button type=\"button\" class=\"btn\" (click)=\"cancel()\">{{ 'common.cancel' | translate }}</button>\r\n <button\r\n type=\"submit\"\r\n (click)=\"select()\"\r\n [disabled]=\"(useExisting && selectedCustomer.length === 0) || (createNew && customerForm.invalid)\"\r\n class=\"btn btn-primary\"\r\n >\r\n {{ 'common.okay' | translate }}\r\n </button>\r\n</ng-template>\r\n","import { ChangeDetectionStrategy, Component, OnInit } from '@angular/core';\r\nimport { UntypedFormBuilder, UntypedFormGroup, Validators } from '@angular/forms';\r\nimport { CreateCustomerInput, DataService, Dialog, GetCustomerListQuery } from '@vendure/admin-ui/core';\r\nimport { concat, Observable, of, Subject } from 'rxjs';\r\nimport { catchError, debounceTime, distinctUntilChanged, switchMap, tap } from 'rxjs/operators';\r\nimport { marker as _ } from '@biesbjerg/ngx-translate-extract-marker';\r\n\r\nexport type Customer = GetCustomerListQuery['customers']['items'][number];\r\nexport type SelectCustomerDialogResult = (Customer | CreateCustomerInput) & { note: string };\r\n\r\n@Component({\r\n selector: 'vdr-select-customer-dialog',\r\n templateUrl: './select-customer-dialog.component.html',\r\n styleUrls: ['./select-customer-dialog.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class SelectCustomerDialogComponent implements OnInit, Dialog<SelectCustomerDialogResult> {\r\n resolveWith: (result?: SelectCustomerDialogResult) => void;\r\n\r\n // populated by the dialog service\r\n canCreateNew = true;\r\n includeNoteInput = false;\r\n title: string = _('order.set-customer-for-order');\r\n\r\n customerForm: UntypedFormGroup;\r\n customers$: Observable<Customer[]>;\r\n isLoading = false;\r\n input$ = new Subject<string>();\r\n selectedCustomer: Customer[] = [];\r\n useExisting = true;\r\n createNew = false;\r\n note = '';\r\n\r\n constructor(private dataService: DataService, private formBuilder: UntypedFormBuilder) {\r\n this.customerForm = this.formBuilder.group({\r\n title: '',\r\n firstName: ['', Validators.required],\r\n lastName: ['', Validators.required],\r\n phoneNumber: '',\r\n emailAddress: ['', [Validators.required, Validators.email]],\r\n });\r\n }\r\n\r\n ngOnInit(): void {\r\n this.customers$ = concat(\r\n of([]), // default items\r\n this.input$.pipe(\r\n debounceTime(200),\r\n distinctUntilChanged(),\r\n tap(() => (this.isLoading = true)),\r\n switchMap(term =>\r\n this.dataService.customer\r\n .getCustomerList(10, 0, term)\r\n .mapStream(({ customers }) => customers.items)\r\n .pipe(\r\n catchError(() => of([])), // empty list on error\r\n tap(() => (this.isLoading = false)),\r\n ),\r\n ),\r\n ),\r\n );\r\n }\r\n\r\n trackByFn(item: Customer) {\r\n return item.id;\r\n }\r\n\r\n cancel() {\r\n this.resolveWith();\r\n }\r\n\r\n select() {\r\n if (this.useExisting && this.selectedCustomer.length === 1) {\r\n this.resolveWith({ ...this.selectedCustomer[0], note: this.note });\r\n } else if (this.createNew && this.customerForm.valid) {\r\n const formValue = this.customerForm.value;\r\n this.resolveWith({ ...formValue, note: this.note });\r\n }\r\n }\r\n}\r\n","<ng-template vdrDialogTitle>{{ 'order.select-shipping-method' | translate }}</ng-template>\r\n<vdr-radio-card-fieldset\r\n [idFn]=\"methodIdFn\"\r\n [selectedItemId]=\"selectedMethod?.id\"\r\n (selectItem)=\"selectedMethod = $event\"\r\n>\r\n <vdr-radio-card *ngFor=\"let quote of eligibleShippingMethods\" [item]=\"quote\">\r\n <div class=\"result-details\">\r\n <vdr-labeled-data [label]=\"'settings.shipping-method' | translate\">\r\n {{ quote.name }}\r\n </vdr-labeled-data>\r\n <div class=\"price-row\">\r\n <vdr-labeled-data [label]=\"'common.price' | translate\">\r\n {{ quote.price | localeCurrency: currencyCode }}\r\n </vdr-labeled-data>\r\n <vdr-labeled-data [label]=\"'common.price-with-tax' | translate\">\r\n {{ quote.priceWithTax | localeCurrency: currencyCode }}\r\n </vdr-labeled-data>\r\n </div>\r\n <vdr-object-tree *ngIf=\"quote.metadata\" [value]=\"quote.metadata\"></vdr-object-tree>\r\n </div>\r\n </vdr-radio-card>\r\n</vdr-radio-card-fieldset>\r\n\r\n<ng-template vdrDialogButtons>\r\n <button type=\"button\" class=\"btn\" (click)=\"cancel()\">{{ 'common.cancel' | translate }}</button>\r\n <button\r\n type=\"submit\"\r\n (click)=\"select()\"\r\n [disabled]=\"!selectedMethod\"\r\n class=\"btn btn-primary\"\r\n >\r\n {{ 'common.okay' | translate }}\r\n </button>\r\n</ng-template>\r\n","import { Component, OnInit, ChangeDetectionStrategy } from '@angular/core';\r\nimport {\r\n CreateAddressInput,\r\n CurrencyCode,\r\n Dialog,\r\n DraftOrderEligibleShippingMethodsQuery,\r\n} from '@vendure/admin-ui/core';\r\n\r\ntype ShippingMethodQuote =\r\n DraftOrderEligibleShippingMethodsQuery['eligibleShippingMethodsForDraftOrder'][number];\r\n\r\n@Component({\r\n selector: 'vdr-select-shipping-method-dialog',\r\n templateUrl: './select-shipping-method-dialog.component.html',\r\n styleUrls: ['./select-shipping-method-dialog.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class SelectShippingMethodDialogComponent implements OnInit, Dialog<string> {\r\n resolveWith: (result?: string) => void;\r\n eligibleShippingMethods: ShippingMethodQuote[];\r\n currentSelectionId: string;\r\n currencyCode: CurrencyCode;\r\n selectedMethod: ShippingMethodQuote | undefined;\r\n\r\n ngOnInit(): void {\r\n if (this.currentSelectionId) {\r\n this.selectedMethod = this.eligibleShippingMethods.find(m => m.id === this.currentSelectionId);\r\n }\r\n }\r\n\r\n methodIdFn(item: ShippingMethodQuote) {\r\n return item.id;\r\n }\r\n\r\n cancel() {\r\n this.resolveWith();\r\n }\r\n\r\n select() {\r\n if (this.selectedMethod) {\r\n this.resolveWith(this.selectedMethod.id);\r\n }\r\n }\r\n}\r\n","<ng-template vdrDialogTitle>{{ 'order.select-state' | translate }}</ng-template>\r\n<p>{{ message | translate }}</p>\r\n<vdr-form-field>\r\n <select name=\"state\" [(ngModel)]=\"selectedState\">\r\n <option *ngFor=\"let state of nextStates\" [value]=\"state\">\r\n {{ state | stateI18nToken | translate }}\r\n </option>\r\n </select>\r\n</vdr-form-field>\r\n<ng-template vdrDialogButtons>\r\n <button type=\"submit\" *ngIf=\"cancellable\" (click)=\"cancel()\" class=\"btn btn-secondary\">\r\n {{ 'common.cancel' | translate }}\r\n </button>\r\n <button type=\"submit\" (click)=\"select()\" class=\"btn btn-primary\" [disabled]=\"!selectedState\">\r\n {{ 'order.transition-to-state' | translate: { state: (selectedState | stateI18nToken | translate) } }}\r\n </button>\r\n</ng-template>\r\n","import { ChangeDetectionStrategy, Component } from '@angular/core';\r\nimport { Dialog } from '@vendure/admin-ui/core';\r\n\r\n@Component({\r\n selector: 'vdr-order-state-select-dialog',\r\n templateUrl: './order-state-select-dialog.component.html',\r\n styleUrls: ['./order-state-select-dialog.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class OrderStateSelectDialogComponent implements Dialog<string> {\r\n resolveWith: (result?: string) => void;\r\n nextStates: string[] = [];\r\n message = '';\r\n cancellable: boolean;\r\n selectedState = '';\r\n\r\n select() {\r\n if (this.selectedState) {\r\n this.resolveWith(this.selectedState);\r\n }\r\n }\r\n\r\n cancel() {\r\n this.resolveWith();\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\nimport { marker as _ } from '@biesbjerg/ngx-translate-extract-marker';\nimport {\n DataService,\n HistoryEntryType,\n I18nService,\n ModalService,\n NotificationService,\n SortOrder,\n} from '@vendure/admin-ui/core';\nimport { EMPTY } from 'rxjs';\nimport { catchError, delay, map, retryWhen, switchMap, take } from 'rxjs/operators';\n\nimport { OrderStateSelectDialogComponent } from '../components/order-state-select-dialog/order-state-select-dialog.component';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class OrderTransitionService {\n constructor(\n private dataService: DataService,\n private modalService: ModalService,\n private notificationService: NotificationService,\n private i18nService: I18nService,\n ) {}\n\n /**\n * Attempts to transition the Order to the last state it was in before it was transitioned\n * to the \"Modifying\" state. If this fails, a manual prompt is used.\n */\n transitionToPreModifyingState(orderId: string, nextStates: string[]) {\n return this.getPreModifyingState(orderId).pipe(\n switchMap(state => {\n const manualTransitionOptions = {\n orderId,\n nextStates,\n message: this.i18nService.translate(\n _('order.unable-to-transition-to-state-try-another'),\n { state },\n ),\n cancellable: false,\n retry: 10,\n };\n if (state) {\n return this.transitionToStateOrThrow(orderId, state).pipe(\n catchError(err => this.manuallyTransitionToState(manualTransitionOptions)),\n );\n } else {\n return this.manuallyTransitionToState(manualTransitionOptions);\n }\n }),\n );\n }\n\n /**\n * Displays a modal for manually selecting the next state.\n */\n manuallyTransitionToState(options: {\n orderId: string;\n nextStates: string[];\n message: string;\n cancellable: boolean;\n retry: number;\n }) {\n return this.modalService\n .fromComponent(OrderStateSelectDialogComponent, {\n locals: {\n nextStates: options.nextStates,\n cancellable: options.cancellable,\n message: options.message,\n },\n closable: false,\n size: 'md',\n })\n .pipe(\n switchMap(result => {\n if (result) {\n return this.transitionToStateOrThrow(options.orderId, result);\n } else {\n if (!options.cancellable) {\n throw new Error(`An order state must be selected`);\n } else {\n return EMPTY;\n }\n }\n }),\n retryWhen(errors => errors.pipe(delay(2000), take(options.retry))),\n );\n }\n\n /**\n * Attempts to get the last state the Order was in before it was transitioned\n * to the \"Modifying\" state.\n */\n private getPreModifyingState(orderId: string) {\n return this.dataService.order\n .getOrderHistory(orderId, {\n filter: {\n type: {\n eq: HistoryEntryType.ORDER_STATE_TRANSITION,\n },\n },\n sort: {\n createdAt: SortOrder.DESC,\n },\n })\n .mapSingle(result => result.order)\n .pipe(\n map(result => {\n const item = result?.history.items.find(i => i.data.to === 'Modifying');\n if (item) {\n return item.data.from as string;\n } else {\n return;\n }\n }),\n );\n }\n\n private transitionToStateOrThrow(orderId: string, state: string) {\n return this.dataService.order.transitionToState(orderId, state).pipe(\n map(({ transitionOrderToState }) => {\n switch (transitionOrderToState?.__typename) {\n case 'Order':\n return transitionOrderToState?.state;\n case 'OrderStateTransitionError':\n this.notificationService.error(transitionOrderToState?.transitionError);\n throw new Error(transitionOrderToState?.transitionError);\n }\n }),\n );\n }\n}\n","import { innerFrom } from '../observable/innerFrom';\nimport { Subject } from '../Subject';\nimport { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nexport function retryWhen(notifier) {\n return operate((source, subscriber) => {\n let innerSub;\n let syncResub = false;\n let errors$;\n const subscribeForRetryWhen = () => {\n innerSub = source.subscribe(createOperatorSubscriber(subscriber, undefined, undefined, (err) => {\n if (!errors$) {\n errors$ = new Subject();\n innerFrom(notifier(errors$)).subscribe(createOperatorSubscriber(subscriber, () => innerSub ? subscribeForRetryWhen() : (syncResub = true)));\n }\n if (errors$) {\n errors$.next(err);\n }\n }));\n if (syncResub) {\n innerSub.unsubscribe();\n innerSub = null;\n syncResub = false;\n subscribeForRetryWhen();\n }\n };\n subscribeForRetryWhen();\n });\n}\n","<div class=\"card\" *ngIf=\"customFieldsConfig.length\">\r\n <div class=\"card-header\">\r\n {{ 'common.custom-fields' | translate }}\r\n </div>\r\n <div class=\"card-block\">\r\n <div class=\"card-text custom-field-form\" [class.editable]=\"editable\">\r\n <vdr-tabbed-custom-fields\r\n entityName=\"Order\"\r\n [customFields]=\"customFieldsConfig\"\r\n [customFieldsFormGroup]=\"customFieldForm\"\r\n [readonly]=\"!editable\"\r\n [compact]=\"true\"\r\n ></vdr-tabbed-custom-fields>\r\n </div>\r\n </div>\r\n <div class=\"card-footer\">\r\n <button class=\"btn btn-sm btn-secondary\" (click)=\"editable = true\" *ngIf=\"!editable\">\r\n <clr-icon shape=\"pencil\"></clr-icon>\r\n {{ 'common.edit' | translate }}\r\n </button>\r\n <button\r\n class=\"btn btn-sm btn-primary\"\r\n (click)=\"onUpdateClick()\"\r\n *ngIf=\"editable\"\r\n [disabled]=\"customFieldForm.pristine || customFieldForm.invalid\"\r\n >\r\n <clr-icon shape=\"check\"></clr-icon>\r\n {{ 'common.update' | translate }}\r\n </button>\r\n <button\r\n class=\"btn btn-sm btn-secondary\"\r\n (click)=\"onCancelClick()\"\r\n *ngIf=\"editable\"\r\n >\r\n <clr-icon shape=\"times\"></clr-icon>\r\n {{ 'common.cancel' | translate }}\r\n </button>\r\n </div>\r\n</div>\r\n","import { ChangeDetectionStrategy, Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\r\nimport { UntypedFormBuilder, UntypedFormGroup } from '@angular/forms';\r\nimport { marker as _ } from '@biesbjerg/ngx-translate-extract-marker';\r\nimport { CustomFieldConfig, ModalService } from '@vendure/admin-ui/core';\r\n\r\n@Component({\r\n selector: 'vdr-order-custom-fields-card',\r\n templateUrl: './order-custom-fields-card.component.html',\r\n styleUrls: ['./order-custom-fields-card.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class OrderCustomFieldsCardComponent implements OnInit {\r\n @Input() customFieldsConfig: CustomFieldConfig[] = [];\r\n @Input() customFieldValues: { [name: string]: any } = {};\r\n @Output() updateClick = new EventEmitter<any>();\r\n customFieldForm: UntypedFormGroup;\r\n editable = false;\r\n constructor(private formBuilder: UntypedFormBuilder, private modalService: ModalService) {}\r\n\r\n ngOnInit() {\r\n this.customFieldForm = this.formBuilder.group({});\r\n for (const field of this.customFieldsConfig) {\r\n this.customFieldForm.addControl(\r\n field.name,\r\n this.formBuilder.control(this.customFieldValues[field.name]),\r\n );\r\n }\r\n }\r\n\r\n onUpdateClick() {\r\n this.updateClick.emit(this.customFieldForm.value);\r\n this.customFieldForm.markAsPristine();\r\n this.editable = false;\r\n }\r\n\r\n onCancelClick() {\r\n if (this.customFieldForm.dirty) {\r\n this.modalService\r\n .dialog({\r\n title: _('catalog.confirm-cancel'),\r\n buttons: [\r\n { type: 'secondary', label: _('common.keep-editing') },\r\n { type: 'danger', label: _('common.discard-changes'), returnValue: true },\r\n ],\r\n })\r\n .subscribe(result => {\r\n if (result) {\r\n this.customFieldForm.reset();\r\n this.customFieldForm.markAsPristine();\r\n this.editable = false;\r\n }\r\n });\r\n } else {\r\n this.editable = false;\r\n }\r\n }\r\n}\r\n","<vdr-dropdown class=\"search-settings-menu\" *ngIf=\"fulfilledCount || orderState === 'PartiallyDelivered'\">\r\n <button type=\"button\" class=\"icon-button\" vdrDropdownTrigger>\r\n <clr-icon *ngIf=\"fulfillmentStatus === 'full'\" class=\"item-fulfilled\" shape=\"check-circle\"></clr-icon>\r\n <clr-icon\r\n *ngIf=\"fulfillmentStatus === 'partial'\"\r\n class=\"item-partially-fulfilled\"\r\n shape=\"check-circle\"\r\n ></clr-icon>\r\n <clr-icon\r\n *ngIf=\"fulfillmentStatus === 'none'\"\r\n class=\"item-not-fulfilled\"\r\n shape=\"exclamation-circle\"\r\n ></clr-icon>\r\n </button>\r\n <vdr-dropdown-menu vdrPosition=\"bottom-right\">\r\n <label class=\"dropdown-header\" *ngIf=\"fulfillmentStatus === 'full'\">\r\n {{ 'order.line-fulfillment-all' | translate }}\r\n </label>\r\n <label class=\"dropdown-header\" *ngIf=\"fulfillmentStatus === 'partial'\">\r\n {{\r\n 'order.line-fulfillment-partial' | translate: { total: line.quantity, count: fulfilledCount }\r\n }}\r\n </label>\r\n <label class=\"dropdown-header\" *ngIf=\"fulfillmentStatus === 'none'\">\r\n {{ 'order.line-fulfillment-none' | translate }}\r\n </label>\r\n <div class=\"fulfillment-detail\" *ngFor=\"let item of fulfillments\">\r\n <div class=\"fulfillment-title\">\r\n {{ 'order.fulfillment' | translate }} #{{ item.fulfillment.id }} ({{\r\n 'order.item-count' | translate: { count: item.count }\r\n }})\r\n </div>\r\n <vdr-labeled-data [label]=\"'common.created-at' | translate\">\r\n {{ item.fulfillment.createdAt | localeDate: 'medium' }}\r\n </vdr-labeled-data>\r\n <vdr-labeled-data [label]=\"'order.fulfillment-method' | translate\">\r\n {{ item.fulfillment.method }}\r\n </vdr-labeled-data>\r\n <vdr-labeled-data\r\n *ngIf=\"item.fulfillment.trackingCode\"\r\n [label]=\"'order.tracking-code' | translate\"\r\n >\r\n {{ item.fulfillment.trackingCode }}\r\n </vdr-labeled-data>\r\n </div>\r\n </vdr-dropdown-menu>\r\n</vdr-dropdown>\r\n","import { ChangeDetectionStrategy, Component, Input, OnChanges, SimpleChanges } from '@angular/core';\r\nimport { OrderDetailFragment } from '@vendure/admin-ui/core';\r\nimport { notNullOrUndefined } from '@vendure/common/lib/shared-utils';\r\nimport { unique } from '@vendure/common/lib/unique';\r\n\r\nexport type FulfillmentStatus = 'full' | 'partial' | 'none';\r\ntype Fulfillment = NonNullable<OrderDetailFragment['fulfillments']>[number];\r\n\r\n@Component({\r\n selector: 'vdr-line-fulfillment',\r\n templateUrl: './line-fulfillment.component.html',\r\n styleUrls: ['./line-fulfillment.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class LineFulfillmentComponent implements OnChanges {\r\n @Input() line: OrderDetailFragment['lines'][number];\r\n @Input() allOrderFulfillments: OrderDetailFragment['fulfillments'];\r\n @Input() orderState: string;\r\n fulfilledCount = 0;\r\n fulfillmentStatus: FulfillmentStatus;\r\n fulfillments: Array<{\r\n count: number;\r\n fulfillment: Fulfillment;\r\n }> = [];\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (this.line) {\r\n this.fulfilledCount = this.getDeliveredCount(this.line);\r\n this.fulfillmentStatus = this.getFulfillmentStatus(this.fulfilledCount, this.line.quantity);\r\n this.fulfillments = this.getFulfillments(this.line);\r\n }\r\n }\r\n\r\n /**\r\n * Returns the number of items in an OrderLine which are fulfilled.\r\n */\r\n private getDeliveredCount(line: OrderDetailFragment['lines'][number]): number {\r\n return (\r\n line.fulfillmentLines?.reduce((sum, fulfillmentLine) => sum + fulfillmentLine.quantity, 0) ?? 0\r\n );\r\n }\r\n\r\n private getFulfillmentStatus(fulfilledCount: number, lineQuantity: number): FulfillmentStatus {\r\n if (fulfilledCount === lineQuantity) {\r\n return 'full';\r\n }\r\n if (0 < fulfilledCount && fulfilledCount < lineQuantity) {\r\n return 'partial';\r\n }\r\n return 'none';\r\n }\r\n\r\n private getFulfillments(\r\n line: OrderDetailFragment['lines'][number],\r\n ): Array<{ count: number; fulfillment: NonNullable<OrderDetailFragment['fulfillments']>[number] }> {\r\n return (\r\n line.fulfillmentLines\r\n ?.map(fulfillmentLine => {\r\n const fulfillment = this.allOrderFulfillments?.find(\r\n f => f.id === fulfillmentLine.fulfillmentId,\r\n );\r\n if (!fulfillment) {\r\n return;\r\n }\r\n return {\r\n count: fulfillmentLine.quantity,\r\n fulfillment,\r\n };\r\n })\r\n .filter(notNullOrUndefined) ?? []\r\n );\r\n }\r\n}\r\n","<span *ngIf=\"getRefundedCount()\" [title]=\"'order.refunded-count' | translate: { count: getRefundedCount() }\">\r\n <clr-icon shape=\"redo\" class=\"is-solid\" dir=\"down\"></clr-icon>\r\n</span>\r\n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\r\nimport { OrderDetailFragment, PaymentWithRefundsFragment } from '@vendure/admin-ui/core';\r\n\r\n@Component({\r\n selector: 'vdr-line-refunds',\r\n templateUrl: './line-refunds.component.html',\r\n styleUrls: ['./line-refunds.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class LineRefundsComponent {\r\n @Input() line: OrderDetailFragment['lines'][number];\r\n @Input() payments: PaymentWithRefundsFragment[];\r\n\r\n getRefundedCount(): number {\r\n const refundLines =\r\n this.payments\r\n ?.reduce(\r\n (all, payment) => [...all, ...payment.refunds],\r\n [] as PaymentWithRefundsFragment['refunds'],\r\n )\r\n .filter(refund => refund.state !== 'Failed')\r\n .reduce(\r\n (all, refund) => [...all, ...refund.lines],\r\n [] as Array<{ orderLineId: string; quantity: number }>,\r\n ) ?? [];\r\n\r\n return refundLines\r\n .filter(i => i.orderLineId === this.line.id)\r\n .reduce((sum, i) => sum + i.quantity, 0);\r\n }\r\n}\r\n","import { Component } from '@angular/core';\r\nimport { DataTable2ColumnComponent } from '@vendure/admin-ui/core';\r\n\r\n@Component({\r\n selector: 'vdr-order-total-column',\r\n template: ``,\r\n exportAs: 'row',\r\n})\r\nexport class OrderTotalColumnComponent<T> extends DataTable2ColumnComponent<T> {\r\n orderable = false;\r\n}\r\n","<div class=\"bulk-actions\">\r\n <ng-content select=\"vdr-bulk-action-menu\"></ng-content>\r\n</div>\r\n<div class=\"table-wrapper\">\r\n <table\r\n class=\"\"\r\n [class.no-select]=\"disableSelect\"\r\n >\r\n <thead [class.items-selected]=\"selectionManager?.selection.length\">\r\n <tr class=\"heading-row\">\r\n <th *ngIf=\"selectionManager\" class=\"selection-col\">\r\n <input\r\n type=\"checkbox\"\r\n clrCheckbox\r\n [checked]=\"selectionManager?.areAllCurrentItemsSelected()\"\r\n (change)=\"onToggleAllClick()\"\r\n />\r\n </th>\r\n <th\r\n *ngFor=\"let column of visibleSortedColumns; last as isLast\"\r\n [class.expand]=\"column.expand\"\r\n >\r\n <div class=\"cell-content\" [ngClass]=\"column.align\">\r\n <vdr-ui-extension-point\r\n [locationId]=\"id\"\r\n [metadata]=\"column.id\"\r\n api=\"dataTable\"\r\n [topPx]=\"-6\"\r\n [leftPx]=\"-24\"\r\n display=\"block\"\r\n >\r\n <span>{{ column.heading }}</span>\r\n </vdr-ui-extension-point>\r\n <div *ngIf=\"column.sort as sort\" class=\"sort-toggle\">\r\n <button (click)=\"sort.toggleSortOrder()\" [class.active]=\"sort.sortOrder\">\r\n <clr-icon *ngIf=\"!sort.sortOrder\" shape=\"two-way-arrows left\"></clr-icon>\r\n <clr-icon *ngIf=\"sort.sortOrder === 'ASC'\" shape=\"arrow up\"></clr-icon>\r\n <clr-icon *ngIf=\"sort.sortOrder === 'DESC'\" shape=\"arrow down\"></clr-icon>\r\n </button>\r\n <div class=\"sort-label\" *ngIf=\"sort.sortOrder\">{{ sort.sortOrder }}</div>\r\n </div>\r\n </div>\r\n </th>\r\n <th>\r\n <div class=\"column-picker\">\r\n <vdr-data-table-colum-picker\r\n [uiLanguage]=\"uiLanguage$ | async\"\r\n [columns]=\"sortedColumns\"\r\n (reorder)=\"onColumnReorder($event)\"\r\n (resetColumns)=\"onColumnsReset()\"\r\n ></vdr-data-table-colum-picker>\r\n </div>\r\n </th>\r\n </tr>\r\n <tr *ngIf=\"searchComponent || customSearchTemplate || filters?.length\">\r\n <th\r\n [attr.colspan]=\"visibleSortedColumns.length + (selectionManager ? 2 : 1)\"\r\n class=\"filter-row\"\r\n [class.active]=\"showSearchFilterRow\"\r\n >\r\n <button\r\n class=\"button-ghost toggle-search-filter-row\"\r\n [class.active]=\"showSearchFilterRow\"\r\n (click)=\"toggleSearchFilterRow()\"\r\n [title]=\"'common.search-and-filter-list' | translate\"\r\n >\r\n <clr-icon shape=\"search\"></clr-icon>\r\n </button>\r\n <div class=\"filter-row-wrapper\" [class.hidden]=\"!showSearchFilterRow\">\r\n <ng-container *ngTemplateOutlet=\"searchComponent?.template\"></ng-container>\r\n <ng-container *ngTemplateOutlet=\"customSearchTemplate\"></ng-container>\r\n <ng-container *ngIf=\"filters\">\r\n <div class=\"filters\">\r\n <vdr-data-table-filters\r\n *ngFor=\"let activeFilter of filters.activeFilters\"\r\n [filterWithValue]=\"activeFilter\"\r\n [filters]=\"filters\"\r\n class=\"mt-1\"\r\n ></vdr-data-table-filters>\r\n <vdr-data-table-filters\r\n *ngIf=\"filters.length\"\r\n [filters]=\"filters\"\r\n class=\"mt-1\"\r\n ></vdr-data-table-filters>\r\n </div>\r\n </ng-container>\r\n </div>\r\n </th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr\r\n *ngFor=\"\r\n let item of items\r\n | paginate\r\n : {\r\n id: id,\r\n itemsPerPage: itemsPerPage,\r\n currentPage: currentPage,\r\n totalItems: totalItems\r\n };\r\n index as i;\r\n trackBy: trackByFn\r\n \"\r\n >\r\n <td *ngIf=\"selectionManager\" class=\"selection-col\" [class.active]=\"activeIndex === i\">\r\n <input\r\n type=\"checkbox\"\r\n clrCheckbox\r\n [checked]=\"selectionManager?.isSelected(item)\"\r\n (click)=\"onRowClick(item, $event)\"\r\n />\r\n </td>\r\n <td *ngFor=\"let column of visibleSortedColumns\" [class.active]=\"activeIndex === i\">\r\n <div class=\"cell-content\" [ngClass]=\"column.align\">\r\n <ng-container\r\n *ngIf=\"customComponents.get(column.id) as componentConfig; else defaultComponent\"\r\n >\r\n <ng-container\r\n *ngComponentOutlet=\"\r\n componentConfig.config.component;\r\n inputs: { rowItem: item };\r\n injector: componentConfig.injector\r\n \"\r\n ></ng-container>\r\n </ng-container>\r\n <ng-template #defaultComponent>\r\n <ng-container\r\n *ngTemplateOutlet=\"column.template; context: { item: item, index: i }\"\r\n ></ng-container>\r\n </ng-template>\r\n </div>\r\n </td>\r\n <td [class.active]=\"activeIndex === i\"><!-- column select --></td>\r\n </tr>\r\n <ng-container>\r\n <tr *ngIf=\"!items?.length\">\r\n <td [attr.colspan]=\"visibleSortedColumns.length + (selectionManager ? 2 : 1)\">\r\n <vdr-empty-placeholder [emptyStateLabel]=\"'order.order-is-empty' | translate\"></vdr-empty-placeholder>\r\n </td>\r\n </tr>\r\n </ng-container>\r\n <tr class=\"surcharge\" *ngFor=\"let surcharge of order.surcharges\">\r\n <td class=\"align-middle name left\" colspan=\"2\">{{ surcharge.description }}</td>\r\n <td class=\"align-middle sku\">{{ surcharge.sku }}</td>\r\n <td class=\"align-middle\" [attr.colspan]=\"visibleSortedColumns.length - 4\"></td>\r\n <td class=\"align-middle total\">\r\n {{ surcharge.priceWithTax | localeCurrency : order.currencyCode }}\r\n <div class=\"net-price\" [title]=\"'order.net-price' | translate\">\r\n {{ surcharge.price | localeCurrency : order.currencyCode }}\r\n </div>\r\n </td>\r\n <td><!-- column select --></td>\r\n </tr>\r\n <ng-container *ngFor=\"let discount of order.discounts\">\r\n <tr class=\"order-adjustment\" *ngIf=\"discount.type !== 'OTHER'\">\r\n <td [attr.colspan]=\"visibleSortedColumns.length - 1\" class=\"\">\r\n <a [routerLink]=\"getPromotionLink(discount)\">{{ discount.description }}</a>\r\n <vdr-chip *ngIf=\"getCouponCodeForAdjustment(order, discount) as couponCode\">{{\r\n couponCode\r\n }}</vdr-chip>\r\n </td>\r\n <td class=\"\">\r\n {{ discount.amountWithTax | localeCurrency : order.currencyCode }}\r\n <div class=\"net-price\" [title]=\"'order.net-price' | translate\">\r\n {{ discount.amount | localeCurrency : order.currencyCode }}\r\n </div>\r\n </td>\r\n <td><!-- column select --></td>\r\n </tr>\r\n </ng-container>\r\n <tr class=\"sub-total\">\r\n <td class=\"\">{{ 'order.sub-total' | translate }}</td>\r\n <td [attr.colspan]=\"visibleSortedColumns.length - 2\"></td>\r\n <td class=\"clr-align-middle\">\r\n {{ order.subTotalWithTax | localeCurrency : order.currencyCode }}\r\n <div class=\"net-price\" [title]=\"'order.net-price' | translate\">\r\n {{ order.subTotal | localeCurrency : order.currencyCode }}\r\n </div>\r\n </td>\r\n <td><!-- column select --></td>\r\n </tr>\r\n <tr class=\"shipping\">\r\n <td class=\"\">{{ 'order.shipping' | translate }}</td>\r\n <td [attr.colspan]=\"visibleSortedColumns.length - 2\">\r\n <vdr-chip *ngFor=\"let shippingLine of order.shippingLines\" class=\"shipping-method-name\">\r\n {{ shippingLine.shippingMethod.name }}\r\n </vdr-chip>\r\n </td>\r\n <td class=\"clr-align-middle\">\r\n {{ order.shippingWithTax | localeCurrency : order.currencyCode }}\r\n <div class=\"net-price\" [title]=\"'order.net-price' | translate\">\r\n {{ order.shipping | localeCurrency : order.currencyCode }}\r\n </div>\r\n </td>\r\n <td><!-- column select --></td>\r\n </tr>\r\n <tr class=\"total\">\r\n <td class=\"\">{{ 'order.total' | translate }}</td>\r\n <td [attr.colspan]=\"visibleSortedColumns.length - 2\"></td>\r\n <td class=\"clr-align-middle\">\r\n {{ order.totalWithTax | localeCurrency : order.currencyCode }}\r\n <div class=\"net-price\" [title]=\"'order.net-price' | translate\">\r\n {{ order.total | localeCurrency : order.currencyCode }}\r\n </div>\r\n </td>\r\n <td><!-- column select --></td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n</div>\r\n","import { ChangeDetectionStrategy, Component, ContentChildren, Input, QueryList } from '@angular/core';\r\nimport { DataTable2Component, OrderDetailFragment } from '@vendure/admin-ui/core';\r\nimport { OrderTotalColumnComponent } from './order-total-column.component';\r\n\r\n@Component({\r\n selector: 'vdr-order-data-table',\r\n templateUrl: './order-data-table.component.html',\r\n styleUrls: [\r\n '../../../../core/src/shared/components/data-table-2/data-table2.component.scss',\r\n './order-data-table.component.scss',\r\n ],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class OrderDataTableComponent extends DataTable2Component<OrderDetailFragment> {\r\n @ContentChildren(OrderTotalColumnComponent) totalColumns: QueryList<OrderTotalColumnComponent<any>>;\r\n @Input() order: OrderDetailFragment;\r\n\r\n get allColumns() {\r\n return [...(this.columns ?? []), ...(this.customFieldColumns ?? []), ...(this.totalColumns ?? [])];\r\n }\r\n\r\n getPromotionLink(promotion: OrderDetailFragment['discounts'][number]): any[] {\r\n const id = promotion.adjustmentSource.split(':')[1];\r\n return ['/marketing', 'promotions', id];\r\n }\r\n\r\n getCouponCodeForAdjustment(\r\n order: OrderDetailFragment,\r\n promotionAdjustment: OrderDetailFragment['discounts'][number],\r\n ): string | undefined {\r\n const id = promotionAdjustment.adjustmentSource.split(':')[1];\r\n const promotion = order.promotions.find(p => p.id === id);\r\n if (promotion) {\r\n return promotion.couponCode || undefined;\r\n }\r\n }\r\n\r\n getShippingNames(order: OrderDetailFragment) {\r\n if (order.shippingLines.length) {\r\n return order.shippingLines.map(shippingLine => shippingLine.shippingMethod.name).join(', ');\r\n } else {\r\n return '';\r\n }\r\n }\r\n}\r\n","<vdr-order-data-table id=\"order-detail-list\" [items]=\"order.lines\" [order]=\"order\">\r\n <vdr-dt2-column id=\"id\" [heading]=\"'common.id' | translate\" [hiddenByDefault]=\"true\">\r\n <ng-template let-line=\"item\">\r\n {{ line.id }}\r\n </ng-template>\r\n </vdr-dt2-column>\r\n <vdr-dt2-column\r\n id=\"created-at\"\r\n [heading]=\"'common.created-at' | translate\"\r\n [hiddenByDefault]=\"true\"\r\n >\r\n <ng-template let-line=\"item\">\r\n {{ line.createdAt | localeDate : 'short' }}\r\n </ng-template>\r\n </vdr-dt2-column>\r\n <vdr-dt2-column\r\n id=\"updated-at\"\r\n [heading]=\"'common.updated-at' | translate\"\r\n [hiddenByDefault]=\"true\"\r\n >\r\n <ng-template let-line=\"item\">\r\n {{ line.updatedAt | localeDate : 'short' }}\r\n </ng-template>\r\n </vdr-dt2-column>\r\n <vdr-dt2-column [heading]=\"'common.image' | translate\" id=\"image\">\r\n <ng-template let-line=\"item\">\r\n <div class=\"image-placeholder\">\r\n <img\r\n *ngIf=\"line.featuredAsset as asset; else imagePlaceholder\"\r\n [src]=\"asset | assetPreview : 'tiny'\"\r\n />\r\n <ng-template #imagePlaceholder>\r\n <div class=\"placeholder\">\r\n <clr-icon shape=\"image\" size=\"48\"></clr-icon>\r\n </div>\r\n </ng-template>\r\n </div>\r\n </ng-template>\r\n </vdr-dt2-column>\r\n <vdr-dt2-column [heading]=\"'order.product-name' | translate\" id=\"product-name\">\r\n <ng-template let-line=\"item\">\r\n {{ line.productVariant.name }}\r\n </ng-template>\r\n </vdr-dt2-column>\r\n <vdr-dt2-column [heading]=\"'order.product-sku' | translate\" id=\"product-sku\" [optional]=\"false\">\r\n <ng-template let-line=\"item\">\r\n {{ line.productVariant.sku }}\r\n </ng-template>\r\n </vdr-dt2-column>\r\n <vdr-dt2-column [heading]=\"'order.unit-price' | translate\" id=\"unit-price\">\r\n <ng-template let-line=\"item\">\r\n <div class=\"unit-price\">\r\n {{ line.unitPriceWithTax | localeCurrency : order.currencyCode }}\r\n <div class=\"net-price\" [title]=\"'order.net-price' | translate\">\r\n {{ line.unitPrice | localeCurrency : order.currencyCode }}\r\n </div>\r\n </div>\r\n </ng-template>\r\n </vdr-dt2-column>\r\n <vdr-dt2-column [heading]=\"'order.quantity' | translate\" id=\"quantity\" [optional]=\"false\">\r\n <ng-template let-line=\"item\">\r\n <ng-container *ngIf=\"!isDraft; else draft\">\r\n <div class=\"flex\">\r\n <div\r\n *ngIf=\"line.orderPlacedQuantity && line.quantity !== line.orderPlacedQuantity\"\r\n class=\"order-placed-quantity\"\r\n [title]=\"'order.original-quantity-at-checkout' | translate\"\r\n >\r\n {{ line.orderPlacedQuantity }}\r\n </div>\r\n <div>{{ line.quantity }}</div>\r\n </div>\r\n </ng-container>\r\n <ng-template #draft>\r\n <div class=\"flex\">\r\n <input\r\n class=\"draft-qty\"\r\n type=\"number\"\r\n min=\"0\"\r\n #qtyInput\r\n [value]=\"line.quantity\"\r\n (blur)=\"draftInputBlur(line, qtyInput.valueAsNumber)\"\r\n />\r\n <button class=\"icon-button\" (click)=\"remove.emit({ lineId: line.id })\">\r\n <clr-icon shape=\"trash\"></clr-icon>\r\n </button>\r\n </div>\r\n </ng-template>\r\n <vdr-line-refunds [line]=\"line\" [payments]=\"order.payments\"></vdr-line-refunds>\r\n <vdr-line-fulfillment\r\n [line]=\"line\"\r\n [orderState]=\"order.state\"\r\n [allOrderFulfillments]=\"order.fulfillments\"\r\n ></vdr-line-fulfillment>\r\n </ng-template>\r\n </vdr-dt2-column>\r\n <vdr-dt2-custom-field-column\r\n *ngFor=\"let customField of orderLineCustomFields\"\r\n [customField]=\"customField\"\r\n />\r\n <vdr-order-total-column [heading]=\"'order.total' | translate\" id=\"total\" [optional]=\"false\">\r\n <ng-template let-line=\"item\">\r\n <div class=\"unit-price\">\r\n {{ line.linePriceWithTax | localeCurrency : order.currencyCode }}\r\n <div class=\"net-price\" [title]=\"'order.net-price' | translate\">\r\n {{ line.linePrice | localeCurrency : order.currencyCode }}\r\n </div>\r\n </div>\r\n\r\n <ng-container *ngIf=\"getLineDiscounts(line) as discounts\">\r\n <vdr-dropdown *ngIf=\"discounts.length\">\r\n <div class=\"promotions-label\" vdrDropdownTrigger>\r\n {{ 'order.promotions-applied' | translate }}\r\n </div>\r\n <vdr-dropdown-menu>\r\n <div class=\"line-promotion\" *ngFor=\"let discount of discounts\">\r\n <a class=\"promotion-name\" [routerLink]=\"getPromotionLink(discount)\">{{\r\n discount.description\r\n }}</a>\r\n <div class=\"promotion-amount\">\r\n {{ discount.amountWithTax | localeCurrency : order.currencyCode }}\r\n <div class=\"net-price\" [title]=\"'order.net-price' | translate\">\r\n {{ discount.amount | localeCurrency : order.currencyCode }}\r\n </div>\r\n </div>\r\n </div>\r\n </vdr-dropdown-menu>\r\n </vdr-dropdown>\r\n </ng-container>\r\n </ng-template>\r\n </vdr-order-total-column>\r\n</vdr-order-data-table>\r\n","import { ChangeDetectionStrategy, Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\r\nimport { UntypedFormControl, UntypedFormGroup } from '@angular/forms';\r\nimport { AdjustmentType, CustomFieldConfig, OrderDetailFragment } from '@vendure/admin-ui/core';\r\n\r\n@Component({\r\n selector: 'vdr-order-table',\r\n templateUrl: './order-table.component.html',\r\n styleUrls: ['./order-table.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class OrderTableComponent implements OnInit {\r\n @Input() order: OrderDetailFragment;\r\n @Input() orderLineCustomFields: CustomFieldConfig[];\r\n @Input() isDraft = false;\r\n @Output() adjust = new EventEmitter<{ lineId: string; quantity: number }>();\r\n @Output() remove = new EventEmitter<{ lineId: string }>();\r\n orderLineCustomFieldsVisible = false;\r\n customFieldsForLine: {\r\n [lineId: string]: Array<{ config: CustomFieldConfig; formGroup: UntypedFormGroup; value: any }>;\r\n } = {};\r\n\r\n get visibleOrderLineCustomFields(): CustomFieldConfig[] {\r\n return this.orderLineCustomFieldsVisible ? this.orderLineCustomFields : [];\r\n }\r\n\r\n get showElided(): boolean {\r\n return !this.orderLineCustomFieldsVisible && 0 < this.orderLineCustomFields.length;\r\n }\r\n\r\n ngOnInit(): void {\r\n this.orderLineCustomFieldsVisible = this.orderLineCustomFields.length < 2;\r\n this.getLineCustomFields();\r\n }\r\n\r\n draftInputBlur(line: OrderDetailFragment['lines'][number], quantity: number) {\r\n if (line.quantity !== quantity) {\r\n this.adjust.emit({ lineId: line.id, quantity });\r\n }\r\n }\r\n\r\n toggleOrderLineCustomFields() {\r\n this.orderLineCustomFieldsVisible = !this.orderLineCustomFieldsVisible;\r\n }\r\n\r\n getLineDiscounts(line: OrderDetailFragment['lines'][number]) {\r\n return line.discounts.filter(a => a.type === AdjustmentType.PROMOTION);\r\n }\r\n\r\n private getLineCustomFields() {\r\n for (const line of this.order.lines) {\r\n const formGroup = new UntypedFormGroup({});\r\n const result = this.orderLineCustomFields\r\n .map(config => {\r\n const value = (line as any).customFields[config.name];\r\n formGroup.addControl(config.name, new UntypedFormControl(value));\r\n return {\r\n config,\r\n formGroup,\r\n value,\r\n };\r\n })\r\n .filter(field => this.orderLineCustomFieldsVisible ? true : field.value != null);\r\n this.customFieldsForLine[line.id] = result;\r\n }\r\n }\r\n\r\n getPromotionLink(promotion: OrderDetailFragment['discounts'][number]): any[] {\r\n const id = promotion.adjustmentSource.split(':')[1];\r\n return ['/marketing', 'promotions', id];\r\n }\r\n\r\n getCouponCodeForAdjustment(\r\n order: OrderDetailFragment,\r\n promotionAdjustment: OrderDetailFragment['discounts'][number],\r\n ): string | undefined {\r\n const id = promotionAdjustment.adjustmentSource.split(':')[1];\r\n const promotion = order.promotions.find(p => p.id === id);\r\n if (promotion) {\r\n return promotion.couponCode || undefined;\r\n }\r\n }\r\n\r\n getShippingNames(order: OrderDetailFragment) {\r\n if (order.shippingLines.length) {\r\n return order.shippingLines.map(shippingLine => shippingLine.shippingMethod.name).join(', ');\r\n } else {\r\n return '';\r\n }\r\n }\r\n}\r\n","<div class=\"card\">\r\n <div class=\"card-block\">\r\n <h4 class=\"card-title\">{{ 'order.add-item-to-order' | translate }}</h4>\r\n <vdr-product-variant-selector\r\n (productSelected)=\"selectedVariantId$.next($event.productVariantId)\"\r\n ></vdr-product-variant-selector>\r\n </div>\r\n <div class=\"card-block\" *ngIf=\"selectedVariant$ | async as selectedVariant\">\r\n <div class=\"variant-details\">\r\n <img class=\"mr-2\" [src]=\"selectedVariant.featuredAsset || selectedVariant.product.featuredAsset | assetPreview: 32\">\r\n <div class=\"details\">\r\n <div>{{ selectedVariant?.name }}</div>\r\n <div class=\"small\">{{ selectedVariant?.sku }}</div>\r\n </div>\r\n <div class=\"details ml-4\">\r\n <div class=\"small\">\r\n {{ 'catalog.stock-on-hand' | translate }}: {{ selectedVariant.stockOnHand }}\r\n </div>\r\n <div class=\"small\">\r\n {{ 'catalog.stock-allocated' | translate }}: {{ selectedVariant.stockAllocated }}\r\n </div>\r\n </div>\r\n <div class=\"flex-spacer\"></div>\r\n <div class=\"details\">\r\n <div>{{ selectedVariant?.priceWithTax | localeCurrency: currencyCode }}</div>\r\n <div class=\"small\" [title]=\"'order.net-price' | translate\">\r\n {{ selectedVariant?.price | localeCurrency: currencyCode }}\r\n </div>\r\n </div>\r\n <div>\r\n <input [disabled]=\"!selectedVariant\" type=\"number\" min=\"0\" [(ngModel)]=\"quantity\" />\r\n </div>\r\n <button\r\n [disabled]=\"!selectedVariant\"\r\n class=\"btn btn-small btn-primary\"\r\n (click)=\"addItemClick(selectedVariant)\"\r\n >\r\n {{ 'order.add-item-to-order' | translate }}\r\n </button>\r\n </div>\r\n <ng-container *ngIf=\"orderLineCustomFields.length\">\r\n <div class=\"custom-field\" *ngFor=\"let field of orderLineCustomFields\">\r\n <vdr-custom-field-control\r\n [compact]=\"true\"\r\n [readonly]=\"false\"\r\n [customField]=\"field\"\r\n [customFieldsFormGroup]=\"customFieldsFormGroup\"\r\n ></vdr-custom-field-control>\r\n </div>\r\n </ng-container>\r\n </div>\r\n</div>\r\n","import { ChangeDetectionStrategy, Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\r\nimport { UntypedFormControl, UntypedFormGroup } from '@angular/forms';\r\nimport { CurrencyCode, CustomFieldConfig, DataService, GetProductVariantQuery } from '@vendure/admin-ui/core';\r\nimport { Observable, Subject } from 'rxjs';\r\nimport { switchMap } from 'rxjs/operators';\r\n\r\n@Component({\r\n selector: 'vdr-draft-order-variant-selector',\r\n templateUrl: './draft-order-variant-selector.component.html',\r\n styleUrls: ['./draft-order-variant-selector.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class DraftOrderVariantSelectorComponent implements OnInit {\r\n @Input() currencyCode: CurrencyCode;\r\n @Input() orderLineCustomFields: CustomFieldConfig[];\r\n @Output() addItem = new EventEmitter<{ productVariantId: string; quantity: number; customFields: any }>();\r\n customFieldsFormGroup = new UntypedFormGroup({});\r\n selectedVariant$: Observable<GetProductVariantQuery['productVariant']>;\r\n selectedVariantId$ = new Subject<string | undefined>();\r\n quantity = 1;\r\n constructor(private dataService: DataService) {}\r\n\r\n ngOnInit(): void {\r\n this.selectedVariant$ = this.selectedVariantId$.pipe(\r\n switchMap(id => {\r\n if (id) {\r\n return this.dataService.product\r\n .getProductVariant(id)\r\n .mapSingle(({ productVariant }) => productVariant);\r\n } else {\r\n return [undefined];\r\n }\r\n }),\r\n );\r\n for (const customField of this.orderLineCustomFields) {\r\n this.customFieldsFormGroup.addControl(customField.name, new UntypedFormControl(''));\r\n }\r\n }\r\n\r\n addItemClick(selectedVariant: GetProductVariantQuery['productVariant']) {\r\n if (selectedVariant) {\r\n this.addItem.emit({\r\n productVariantId: selectedVariant.id,\r\n quantity: this.quantity,\r\n customFields: this.orderLineCustomFields.length\r\n ? this.customFieldsFormGroup.value\r\n : undefined,\r\n });\r\n this.selectedVariantId$.next(undefined);\r\n this.customFieldsFormGroup.reset();\r\n }\r\n }\r\n}\r\n","<vdr-page-block>\r\n <vdr-action-bar *ngIf=\"entity$ | async as order\">\r\n <vdr-ab-left>\r\n <div class=\"flex clr-align-items-center\">\r\n <vdr-order-state-label [state]=\"order.state\"></vdr-order-state-label>\r\n </div>\r\n </vdr-ab-left>\r\n\r\n <vdr-ab-right>\r\n <vdr-action-bar-items locationId=\"draft-order-detail\" />\r\n <button\r\n class=\"btn btn-primary\"\r\n (click)=\"completeOrder()\"\r\n [disabled]=\"!order.customer || !order.lines.length || !order.shippingLines.length\"\r\n >\r\n <clr-icon shape=\"check\"></clr-icon>\r\n {{ 'order.complete-draft-order' | translate }}\r\n </button>\r\n <vdr-action-bar-dropdown-menu [alwaysShow]=\"true\" locationId=\"draft-order-detail\">\r\n <button type=\"button\" vdrDropdownItem (click)=\"deleteOrder()\">\r\n <clr-icon shape=\"trash\" class=\"is-danger\"></clr-icon>\r\n {{ 'order.delete-draft-order' | translate }}\r\n </button>\r\n </vdr-action-bar-dropdown-menu>\r\n </vdr-ab-right>\r\n </vdr-action-bar>\r\n</vdr-page-block>\r\n\r\n<vdr-page-detail-layout *ngIf=\"entity$ | async as order\">\r\n <vdr-page-detail-sidebar>\r\n <vdr-card [title]=\"'order.customer' | translate\">\r\n <ng-template vdrCardControls>\r\n <clr-icon *ngIf=\"!order.customer\" shape=\"unknown-status\" class=\"is-warning\"></clr-icon>\r\n <clr-icon *ngIf=\"order.customer\" shape=\"check\" class=\"is-success\"></clr-icon>\r\n </ng-template>\r\n <vdr-customer-label\r\n class=\"block mb-2\"\r\n *ngIf=\"order.customer\"\r\n [customer]=\"order.customer\"\r\n ></vdr-customer-label>\r\n <button class=\"button-small\" (click)=\"setCustomer()\">\r\n {{ 'order.set-customer-for-order' | translate }}\r\n </button>\r\n </vdr-card>\r\n <vdr-card [title]=\"'order.billing-address' | translate\">\r\n <ng-template vdrCardControls>\r\n <clr-icon\r\n *ngIf=\"!order.billingAddress.streetLine1\"\r\n shape=\"unknown-status\"\r\n class=\"is-warning\"\r\n ></clr-icon>\r\n <clr-icon\r\n *ngIf=\"order.billingAddress.streetLine1\"\r\n shape=\"check\"\r\n class=\"is-success\"\r\n ></clr-icon>\r\n </ng-template>\r\n <vdr-formatted-address\r\n class=\"block mb-2\"\r\n *ngIf=\"order.billingAddress\"\r\n [address]=\"order.billingAddress\"\r\n ></vdr-formatted-address>\r\n <button class=\"button-small\" (click)=\"setBillingAddress()\">\r\n {{ 'order.set-billing-address' | translate }}\r\n </button>\r\n </vdr-card>\r\n <vdr-card [title]=\"'order.shipping' | translate\">\r\n <ng-template vdrCardControls>\r\n <clr-icon\r\n *ngIf=\"!order.shippingAddress.streetLine1 || !order.shippingLines.length\"\r\n shape=\"unknown-status\"\r\n class=\"is-warning\"\r\n ></clr-icon>\r\n <clr-icon\r\n *ngIf=\"order.shippingAddress.streetLine1 && order.shippingLines.length\"\r\n shape=\"check\"\r\n class=\"is-success\"\r\n ></clr-icon>\r\n </ng-template>\r\n <vdr-formatted-address\r\n class=\"block mb-2\"\r\n *ngIf=\"order.shippingAddress\"\r\n [address]=\"order.shippingAddress\"\r\n ></vdr-formatted-address>\r\n <button class=\"button-small mr-2\" (click)=\"setShippingAddress()\">\r\n {{ 'order.set-shipping-address' | translate }}\r\n </button>\r\n\r\n <div *ngFor=\"let shippingLine of order.shippingLines\">\r\n {{ shippingLine.shippingMethod.name }}\r\n </div>\r\n <button class=\"button-small\" (click)=\"setShippingMethod()\">\r\n {{ 'order.set-shipping-method' | translate }}\r\n </button>\r\n </vdr-card>\r\n <vdr-card>\r\n <button\r\n *ngIf=\"order.couponCodes.length === 0 && !displayCouponCodeInput\"\r\n class=\"button-small\"\r\n (click)=\"displayCouponCodeInput = !displayCouponCodeInput\"\r\n >\r\n {{ 'order.set-coupon-codes' | translate }}\r\n </button>\r\n <div *ngIf=\"order.couponCodes.length || displayCouponCodeInput\">\r\n <label>{{ 'order.set-coupon-codes' | translate }}</label>\r\n <vdr-coupon-code-selector\r\n [couponCodes]=\"order.couponCodes\"\r\n (addCouponCode)=\"applyCouponCode($event)\"\r\n (removeCouponCode)=\"removeCouponCode($event)\"\r\n ></vdr-coupon-code-selector>\r\n </div>\r\n </vdr-card>\r\n <vdr-card>\r\n <vdr-page-entity-info *ngIf=\"entity$ | async as entity\" [entity]=\"entity\" />\r\n </vdr-card>\r\n </vdr-page-detail-sidebar>\r\n <vdr-page-block>\r\n <vdr-card>\r\n <vdr-draft-order-variant-selector\r\n [orderLineCustomFields]=\"orderLineCustomFields\"\r\n [currencyCode]=\"order.currencyCode\"\r\n (addItem)=\"addItemToOrder($event)\"\r\n ></vdr-draft-order-variant-selector>\r\n <vdr-order-table\r\n [order]=\"order\"\r\n [orderLineCustomFields]=\"orderLineCustomFields\"\r\n [isDraft]=\"true\"\r\n (adjust)=\"adjustOrderLine($event)\"\r\n (remove)=\"removeOrderLine($event)\"\r\n ></vdr-order-table>\r\n </vdr-card>\r\n <vdr-card [title]=\"'order.tax-summary' | translate\">\r\n <ng-container *ngIf=\"order.taxSummary.length\">\r\n <table class=\"table\">\r\n <thead>\r\n <tr>\r\n <th>{{ 'common.description' | translate }}</th>\r\n <th>{{ 'order.tax-rate' | translate }}</th>\r\n <th>{{ 'order.tax-base' | translate }}</th>\r\n <th>{{ 'order.tax-total' | translate }}</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr *ngFor=\"let row of order.taxSummary\">\r\n <td>{{ row.description }}</td>\r\n <td>{{ row.taxRate / 100 | percent }}</td>\r\n <td>{{ row.taxBase | localeCurrency : order.currencyCode }}</td>\r\n <td>{{ row.taxTotal | localeCurrency : order.currencyCode }}</td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n </ng-container>\r\n </vdr-card>\r\n <vdr-custom-detail-component-host\r\n locationId=\"draft-order-detail\"\r\n [entity$]=\"entity$\"\r\n [detailForm]=\"detailForm\"\r\n ></vdr-custom-detail-component-host>\r\n\r\n <vdr-order-custom-fields-card\r\n [customFieldsConfig]=\"customFields\"\r\n [customFieldValues]=\"order.customFields\"\r\n (updateClick)=\"updateCustomFields($event)\"\r\n ></vdr-order-custom-fields-card>\r\n </vdr-page-block>\r\n</vdr-page-detail-layout>\r\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, OnDestroy, OnInit } from '@angular/core';\r\nimport { UntypedFormGroup } from '@angular/forms';\r\nimport { marker as _ } from '@biesbjerg/ngx-translate-extract-marker';\r\nimport {\r\n AddressFragment,\r\n CreateAddressInput,\r\n DataService,\r\n DeletionResult,\r\n DraftOrderEligibleShippingMethodsQuery,\r\n GetCustomerAddressesDocument,\r\n ModalService,\r\n NotificationService,\r\n Order,\r\n OrderDetailFragment,\r\n OrderDetailQueryDocument,\r\n TypedBaseDetailComponent,\r\n} from '@vendure/admin-ui/core';\r\nimport { combineLatest, forkJoin, Observable, of, Subject } from 'rxjs';\r\nimport { switchMap, take } from 'rxjs/operators';\r\n\r\nimport { OrderTransitionService } from '../../providers/order-transition.service';\r\nimport { SelectAddressDialogComponent } from '../select-address-dialog/select-address-dialog.component';\r\nimport { SelectCustomerDialogComponent } from '../select-customer-dialog/select-customer-dialog.component';\r\nimport { SelectShippingMethodDialogComponent } from '../select-shipping-method-dialog/select-shipping-method-dialog.component';\r\n\r\n@Component({\r\n selector: 'vdr-draft-order-detail',\r\n templateUrl: './draft-order-detail.component.html',\r\n styleUrls: ['./draft-order-detail.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class DraftOrderDetailComponent\r\n extends TypedBaseDetailComponent<typeof OrderDetailQueryDocument, 'order'>\r\n implements OnInit, OnDestroy\r\n{\r\n customFields = this.getCustomFieldConfig('Order');\r\n orderLineCustomFields = this.getCustomFieldConfig('OrderLine');\r\n detailForm = new UntypedFormGroup({});\r\n eligibleShippingMethods$: Observable<\r\n DraftOrderEligibleShippingMethodsQuery['eligibleShippingMethodsForDraftOrder']\r\n >;\r\n nextStates$: Observable<string[]>;\r\n fetchHistory = new Subject<void>();\r\n displayCouponCodeInput = false;\r\n\r\n constructor(\r\n private changeDetector: ChangeDetectorRef,\r\n protected dataService: DataService,\r\n private notificationService: NotificationService,\r\n private modalService: ModalService,\r\n private orderTransitionService: OrderTransitionService,\r\n ) {\r\n super();\r\n }\r\n\r\n ngOnInit() {\r\n this.init();\r\n this.orderLineCustomFields = this.getCustomFieldConfig('OrderLine');\r\n this.eligibleShippingMethods$ = this.entity$.pipe(\r\n switchMap(order =>\r\n this.dataService.order\r\n .getDraftOrderEligibleShippingMethods(order.id)\r\n .mapSingle(\r\n ({ eligibleShippingMethodsForDraftOrder }) => eligibleShippingMethodsForDraftOrder,\r\n ),\r\n ),\r\n );\r\n }\r\n\r\n ngOnDestroy() {\r\n this.destroy();\r\n }\r\n\r\n addItemToOrder(event: { productVariantId: string; quantity: number; customFields: any }) {\r\n this.dataService.order.addItemToDraftOrder(this.id, event).subscribe(result => {\r\n if (result.addItemToDraftOrder.__typename !== 'Order') {\r\n this.notificationService.error((result.addItemToDraftOrder as any).message);\r\n }\r\n });\r\n }\r\n\r\n adjustOrderLine(event: { lineId: string; quantity: number }) {\r\n this.dataService.order\r\n .adjustDraftOrderLine(this.id, { orderLineId: event.lineId, quantity: event.quantity })\r\n .subscribe(result => {\r\n if (result.adjustDraftOrderLine.__typename !== 'Order') {\r\n this.notificationService.error((result.adjustDraftOrderLine as any).message);\r\n }\r\n });\r\n }\r\n\r\n removeOrderLine(event: { lineId: string }) {\r\n this.dataService.order.removeDraftOrderLine(this.id, event.lineId).subscribe(result => {\r\n if (result.removeDraftOrderLine.__typename !== 'Order') {\r\n this.notificationService.error((result.removeDraftOrderLine as any).message);\r\n }\r\n });\r\n }\r\n\r\n getOrderAddressLines(orderAddress?: { [key: string]: string }): string[] {\r\n if (!orderAddress) {\r\n return [];\r\n }\r\n return Object.values(orderAddress)\r\n .filter(val => val !== 'OrderAddress')\r\n .filter(line => !!line);\r\n }\r\n\r\n setCustomer() {\r\n this.modalService.fromComponent(SelectCustomerDialogComponent).subscribe(result => {\r\n if (this.hasId(result)) {\r\n this.dataService.order\r\n .setCustomerForDraftOrder(this.id, { customerId: result.id })\r\n .pipe(\r\n switchMap(() => {\r\n return this.dataService.query(GetCustomerAddressesDocument, {\r\n customerId: result.id,\r\n }).single$;\r\n }),\r\n switchMap(({ customer }) => {\r\n const defaultShippingAddress = customer?.addresses?.find(\r\n addr => addr.defaultShippingAddress,\r\n );\r\n const defaultBillingAddress = customer?.addresses?.find(\r\n addr => addr.defaultBillingAddress,\r\n );\r\n\r\n return forkJoin([\r\n defaultShippingAddress\r\n ? this.dataService.order.setDraftOrderShippingAddress(\r\n this.id,\r\n this.mapToAddressInput(defaultShippingAddress),\r\n )\r\n : this.dataService.order.unsetDraftOrderShippingAddress(this.id),\r\n defaultBillingAddress\r\n ? this.dataService.order.setDraftOrderBillingAddress(\r\n this.id,\r\n this.mapToAddressInput(defaultBillingAddress),\r\n )\r\n : this.dataService.order.unsetDraftOrderBillingAddress(this.id),\r\n ]);\r\n }),\r\n )\r\n .subscribe();\r\n } else if (result) {\r\n const { note, ...input } = result;\r\n this.dataService.order.setCustomerForDraftOrder(this.id, { input }).subscribe();\r\n }\r\n });\r\n }\r\n\r\n private mapToAddressInput(address: AddressFragment): CreateAddressInput {\r\n return {\r\n fullName: address.fullName,\r\n company: address.company,\r\n streetLine1: address.streetLine1,\r\n streetLine2: address.streetLine2,\r\n city: address.city,\r\n province: address.province,\r\n postalCode: address.postalCode,\r\n countryCode: address.country.code,\r\n phoneNumber: address.phoneNumber,\r\n defaultShippingAddress: address.defaultShippingAddress,\r\n defaultBillingAddress: address.defaultBillingAddress,\r\n };\r\n }\r\n\r\n setShippingAddress() {\r\n this.entity$\r\n .pipe(\r\n take(1),\r\n switchMap(order =>\r\n this.modalService.fromComponent(SelectAddressDialogComponent, {\r\n locals: {\r\n customerId: order.customer?.id,\r\n currentAddress: order.shippingAddress ?? undefined,\r\n },\r\n }),\r\n ),\r\n )\r\n .subscribe(result => {\r\n if (result) {\r\n this.dataService.order.setDraftOrderShippingAddress(this.id, result).subscribe();\r\n }\r\n });\r\n }\r\n\r\n setBillingAddress() {\r\n this.entity$\r\n .pipe(\r\n take(1),\r\n switchMap(order =>\r\n this.modalService.fromComponent(SelectAddressDialogComponent, {\r\n locals: {\r\n customerId: order.customer?.id,\r\n currentAddress: order.billingAddress ?? undefined,\r\n },\r\n }),\r\n ),\r\n )\r\n .subscribe(result => {\r\n if (result) {\r\n this.dataService.order.setDraftOrderBillingAddress(this.id, result).subscribe();\r\n }\r\n });\r\n }\r\n\r\n applyCouponCode(couponCode: string) {\r\n this.dataService.order.applyCouponCodeToDraftOrder(this.id, couponCode).subscribe();\r\n }\r\n\r\n removeCouponCode(couponCode: string) {\r\n this.dataService.order.removeCouponCodeFromDraftOrder(this.id, couponCode).subscribe();\r\n }\r\n\r\n setShippingMethod() {\r\n combineLatest(this.entity$, this.eligibleShippingMethods$)\r\n .pipe(\r\n take(1),\r\n switchMap(([order, methods]) =>\r\n this.modalService.fromComponent(SelectShippingMethodDialogComponent, {\r\n locals: {\r\n eligibleShippingMethods: methods,\r\n currencyCode: order.currencyCode,\r\n currentSelectionId: order.shippingLines?.[0]?.shippingMethod.id,\r\n },\r\n }),\r\n ),\r\n )\r\n .subscribe(result => {\r\n if (result) {\r\n this.dataService.order.setDraftOrderShippingMethod(this.id, result).subscribe();\r\n }\r\n });\r\n }\r\n\r\n updateCustomFields(customFieldsValue: any) {\r\n this.dataService.order\r\n .updateOrderCustomFields({\r\n id: this.id,\r\n customFields: customFieldsValue,\r\n })\r\n .subscribe();\r\n }\r\n\r\n deleteOrder() {\r\n this.dataService.order.deleteDraftOrder(this.id).subscribe(({ deleteDraftOrder }) => {\r\n if (deleteDraftOrder.result === DeletionResult.DELETED) {\r\n this.notificationService.success(_('common.notify-delete-success'), {\r\n entity: 'Order',\r\n });\r\n this.router.navigate(['/orders']);\r\n } else if (deleteDraftOrder.message) {\r\n this.notificationService.error(deleteDraftOrder.message);\r\n }\r\n });\r\n }\r\n\r\n completeOrder() {\r\n this.dataService.order\r\n .transitionToState(this.id, 'ArrangingPayment')\r\n .subscribe(({ transitionOrderToState }) => {\r\n if (transitionOrderToState?.__typename === 'Order') {\r\n this.router.navigate(['/orders', this.id]);\r\n } else if (transitionOrderToState?.__typename === 'OrderStateTransitionError') {\r\n this.notificationService.error(transitionOrderToState.transitionError);\r\n }\r\n });\r\n }\r\n\r\n private hasId<T extends { id: string }>(input: T | any): input is { id: string } {\r\n return typeof input === 'object' && !!input.id;\r\n }\r\n\r\n protected setFormValues(entity: OrderDetailFragment): void {\r\n // empty\r\n }\r\n}\r\n","<ng-template vdrDialogTitle>{{ 'order.fulfill-order' | translate }}</ng-template>\r\n\r\n<div class=\"fulfillment-wrapper\">\r\n <div class=\"order-table\">\r\n <table class=\"table\">\r\n <thead>\r\n <tr>\r\n <th></th>\r\n <th>{{ 'order.product-name' | translate }}</th>\r\n <th>{{ 'order.product-sku' | translate }}</th>\r\n <th>{{ 'order.unfulfilled' | translate }}</th>\r\n <th>{{ 'catalog.stock-on-hand' | translate }}</th>\r\n <th>{{ 'order.fulfill' | translate }}</th>\r\n </tr>\r\n </thead>\r\n <tr\r\n *ngFor=\"let line of order.lines\"\r\n class=\"order-line\"\r\n [class.ignore]=\"getUnfulfilledCount(line) === 0\"\r\n >\r\n <td class=\"align-middle thumb\">\r\n <img *ngIf=\"line.featuredAsset\" [src]=\"line.featuredAsset | assetPreview: 'tiny'\" />\r\n </td>\r\n <td class=\"align-middle name\">{{ line.productVariant.name }}</td>\r\n <td class=\"align-middle sku\">{{ line.productVariant.sku }}</td>\r\n <td class=\"align-middle quantity\">{{ getUnfulfilledCount(line) }}</td>\r\n <td class=\"align-middle quantity\">{{ line.productVariant.stockOnHand }}</td>\r\n <td class=\"align-middle fulfil\">\r\n <input\r\n *ngIf=\"fulfillmentQuantities[line.id]\"\r\n [disabled]=\"getUnfulfilledCount(line) === 0\"\r\n [(ngModel)]=\"fulfillmentQuantities[line.id].fulfillCount\"\r\n type=\"number\"\r\n [max]=\"fulfillmentQuantities[line.id].max\"\r\n min=\"0\"\r\n />\r\n </td>\r\n </tr>\r\n </table>\r\n </div>\r\n <div class=\"shipping-details\">\r\n <vdr-formatted-address [address]=\"order.shippingAddress\"></vdr-formatted-address>\r\n <h6>{{ 'order.shipping-method' | translate }}</h6>\r\n {{ order.shippingLines[0]?.shippingMethod?.name }}\r\n <strong>{{ order.shipping | localeCurrency: order.currencyCode }}</strong>\r\n <vdr-configurable-input\r\n [operationDefinition]=\"fulfillmentHandlerDef\"\r\n [operation]=\"fulfillmentHandler\"\r\n [formControl]=\"fulfillmentHandlerControl\"\r\n [removable]=\"false\"\r\n ></vdr-configurable-input>\r\n </div>\r\n</div>\r\n\r\n<ng-template vdrDialogButtons>\r\n <button type=\"button\" class=\"btn\" (click)=\"cancel()\">{{ 'common.cancel' | translate }}</button>\r\n <button type=\"submit\" (click)=\"select()\" [disabled]=\"!canSubmit()\" class=\"btn btn-primary\">\r\n {{ 'order.create-fulfillment' | translate }}\r\n </button>\r\n</ng-template>\r\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, OnInit } from '@angular/core';\r\nimport { UntypedFormControl } from '@angular/forms';\r\nimport {\r\n configurableDefinitionToInstance,\r\n ConfigurableOperation,\r\n ConfigurableOperationDefinition,\r\n configurableOperationValueIsValid,\r\n DataService,\r\n Dialog,\r\n FulfillOrderInput,\r\n GlobalFlag,\r\n OrderDetailFragment,\r\n toConfigurableOperationInput,\r\n} from '@vendure/admin-ui/core';\r\n\r\n@Component({\r\n selector: 'vdr-fulfill-order-dialog',\r\n templateUrl: './fulfill-order-dialog.component.html',\r\n styleUrls: ['./fulfill-order-dialog.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class FulfillOrderDialogComponent implements Dialog<FulfillOrderInput>, OnInit {\r\n resolveWith: (result?: FulfillOrderInput) => void;\r\n fulfillmentHandlerDef: ConfigurableOperationDefinition;\r\n fulfillmentHandler: ConfigurableOperation;\r\n fulfillmentHandlerControl = new UntypedFormControl();\r\n fulfillmentQuantities: { [lineId: string]: { fulfillCount: number; max: number } } = {};\r\n\r\n // Provided by modalService.fromComponent() call\r\n order: OrderDetailFragment;\r\n\r\n constructor(private dataService: DataService, private changeDetector: ChangeDetectorRef) {}\r\n\r\n ngOnInit(): void {\r\n this.dataService.settings.getGlobalSettings().single$.subscribe(({ globalSettings }) => {\r\n this.fulfillmentQuantities = this.order.lines.reduce((result, line) => {\r\n const fulfillCount = this.getFulfillableCount(line, globalSettings.trackInventory);\r\n return {\r\n ...result,\r\n [line.id]: { fulfillCount, max: fulfillCount },\r\n };\r\n }, {});\r\n this.changeDetector.markForCheck();\r\n });\r\n\r\n this.dataService.shippingMethod\r\n .getShippingMethodOperations()\r\n .mapSingle(data => data.fulfillmentHandlers)\r\n .subscribe(handlers => {\r\n this.fulfillmentHandlerDef =\r\n handlers.find(\r\n h => h.code === this.order.shippingLines[0]?.shippingMethod?.fulfillmentHandlerCode,\r\n ) || handlers[0];\r\n this.fulfillmentHandler = configurableDefinitionToInstance(this.fulfillmentHandlerDef);\r\n this.fulfillmentHandlerControl.patchValue(this.fulfillmentHandler);\r\n this.changeDetector.markForCheck();\r\n });\r\n }\r\n\r\n getFulfillableCount(line: OrderDetailFragment['lines'][number], globalTrackInventory: boolean): number {\r\n const { trackInventory, stockOnHand } = line.productVariant;\r\n const effectiveTracInventory =\r\n trackInventory === GlobalFlag.INHERIT ? globalTrackInventory : trackInventory === GlobalFlag.TRUE;\r\n\r\n const unfulfilledCount = this.getUnfulfilledCount(line);\r\n return effectiveTracInventory ? Math.min(unfulfilledCount, stockOnHand) : unfulfilledCount;\r\n }\r\n\r\n getUnfulfilledCount(line: OrderDetailFragment['lines'][number]): number {\r\n const fulfilled =\r\n this.order.fulfillments\r\n ?.filter(f => f.state !== 'Cancelled')\r\n .map(f => f.lines)\r\n .flat()\r\n .filter(row => row.orderLineId === line.id)\r\n .reduce((sum, row) => sum + row.quantity, 0) ?? 0;\r\n return line.quantity - fulfilled;\r\n }\r\n\r\n canSubmit(): boolean {\r\n const totalCount = Object.values(this.fulfillmentQuantities).reduce(\r\n (total, { fulfillCount }) => total + fulfillCount,\r\n 0,\r\n );\r\n const fulfillmentQuantityIsValid = Object.values(this.fulfillmentQuantities).every(\r\n ({ fulfillCount, max }) => fulfillCount <= max,\r\n );\r\n const formIsValid =\r\n configurableOperationValueIsValid(\r\n this.fulfillmentHandlerDef,\r\n this.fulfillmentHandlerControl.value,\r\n ) && this.fulfillmentHandlerControl.valid;\r\n return formIsValid && 0 < totalCount && fulfillmentQuantityIsValid;\r\n }\r\n\r\n select() {\r\n const lines = Object.entries(this.fulfillmentQuantities).map(([orderLineId, { fulfillCount }]) => ({\r\n orderLineId,\r\n quantity: fulfillCount,\r\n }));\r\n this.resolveWith({\r\n lines,\r\n handler: toConfigurableOperationInput(\r\n this.fulfillmentHandler,\r\n this.fulfillmentHandlerControl.value,\r\n ),\r\n });\r\n }\r\n\r\n cancel() {\r\n this.resolveWith();\r\n }\r\n}\r\n","<div class=\"items-list\">\r\n <ul>\r\n <li *ngFor=\"let item of items\" [title]=\"item.name\">\r\n <div class=\"quantity\" *ngIf=\"item.quantity != null\">{{ item.quantity }}</div>\r\n <clr-icon shape=\"times\" size=\"12\" *ngIf=\"item.quantity != null\"></clr-icon>\r\n {{ item.name }}\r\n </li>\r\n </ul>\r\n</div>\r\n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'vdr-simple-item-list',\r\n templateUrl: './simple-item-list.component.html',\r\n styleUrls: ['./simple-item-list.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class SimpleItemListComponent {\r\n @Input() items: Array<{ name: string; quantity?: number }>;\r\n}\r\n","<vdr-labeled-data [label]=\"'common.created-at' | translate\">\r\n {{ fulfillment?.createdAt | localeDate: 'medium' }}\r\n</vdr-labeled-data>\r\n<vdr-labeled-data [label]=\"'order.fulfillment-method' | translate\">\r\n {{ fulfillment?.method }}\r\n</vdr-labeled-data>\r\n<vdr-labeled-data *ngIf=\"fulfillment?.trackingCode\" [label]=\"'order.tracking-code' | translate\">\r\n {{ fulfillment?.trackingCode }}\r\n</vdr-labeled-data>\r\n<vdr-labeled-data [label]=\"'order.contents' | translate\">\r\n <vdr-simple-item-list [items]=\"items\"></vdr-simple-item-list>\r\n</vdr-labeled-data>\r\n<ng-container *ngFor=\"let customField of customFieldConfig\">\r\n <vdr-custom-field-control\r\n *ngIf=\"customFieldFormGroup.get(customField.name)\"\r\n [readonly]=\"true\"\r\n [compact]=\"true\"\r\n [customField]=\"customField\"\r\n [customFieldsFormGroup]=\"customFieldFormGroup\"\r\n ></vdr-custom-field-control>\r\n</ng-container>\r\n","import { ChangeDetectionStrategy, Component, Input, OnChanges, OnInit, SimpleChanges } from '@angular/core';\r\nimport { UntypedFormControl, UntypedFormGroup } from '@angular/forms';\r\nimport { CustomFieldConfig, OrderDetailFragment, ServerConfigService } from '@vendure/admin-ui/core';\r\nimport { isObject } from '@vendure/common/lib/shared-utils';\r\n\r\n@Component({\r\n selector: 'vdr-fulfillment-detail',\r\n templateUrl: './fulfillment-detail.component.html',\r\n styleUrls: ['./fulfillment-detail.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class FulfillmentDetailComponent implements OnInit, OnChanges {\r\n @Input() fulfillmentId: string;\r\n @Input() order: OrderDetailFragment;\r\n\r\n customFieldConfig: CustomFieldConfig[] = [];\r\n customFieldFormGroup = new UntypedFormGroup({});\r\n\r\n constructor(private serverConfigService: ServerConfigService) {}\r\n\r\n ngOnInit() {\r\n this.customFieldConfig = this.serverConfigService.getCustomFieldsFor('Fulfillment');\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges) {\r\n this.buildCustomFieldsFormGroup();\r\n }\r\n\r\n get fulfillment(): NonNullable<OrderDetailFragment['fulfillments']>[number] | undefined | null {\r\n return this.order.fulfillments && this.order.fulfillments.find(f => f.id === this.fulfillmentId);\r\n }\r\n\r\n get items(): Array<{ name: string; quantity: number }> {\r\n return (\r\n this.fulfillment?.lines.map(row => ({\r\n name: this.order.lines.find(line => line.id === row.orderLineId)?.productVariant.name ?? '',\r\n quantity: row.quantity,\r\n })) ?? []\r\n );\r\n }\r\n\r\n buildCustomFieldsFormGroup() {\r\n const customFields = (this.fulfillment as any).customFields;\r\n for (const fieldDef of this.serverConfigService.getCustomFieldsFor('Fulfillment')) {\r\n this.customFieldFormGroup.addControl(\r\n fieldDef.name,\r\n new UntypedFormControl(customFields[fieldDef.name]),\r\n );\r\n }\r\n }\r\n\r\n customFieldIsObject(customField: unknown) {\r\n return Array.isArray(customField) || isObject(customField);\r\n }\r\n}\r\n","<vdr-chip [title]=\"'order.payment-state' | translate\" [colorType]=\"chipColorType\">\r\n <clr-icon shape=\"check-circle\" *ngIf=\"state === 'Delivered'\"></clr-icon>\r\n {{ state | stateI18nToken | translate }}\r\n</vdr-chip>\r\n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'vdr-fulfillment-state-label',\r\n templateUrl: './fulfillment-state-label.component.html',\r\n styleUrls: ['./fulfillment-state-label.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class FulfillmentStateLabelComponent {\r\n @Input() state: string;\r\n\r\n get chipColorType() {\r\n switch (this.state) {\r\n case 'Pending':\r\n case 'Shipped':\r\n return 'warning';\r\n case 'Delivered':\r\n return 'success';\r\n case 'Cancelled':\r\n return 'error';\r\n }\r\n }\r\n}\r\n","<div class=\"card\">\r\n <div class=\"card-header fulfillment-header\">\r\n <div>{{ 'order.fulfillment' | translate }}</div>\r\n <div class=\"fulfillment-state\">\r\n <vdr-fulfillment-state-label [state]=\"fulfillment?.state\"></vdr-fulfillment-state-label>\r\n </div>\r\n </div>\r\n <div class=\"card-block\">\r\n <vdr-fulfillment-detail\r\n *ngIf=\"!!fulfillment\"\r\n [fulfillmentId]=\"fulfillment?.id\"\r\n [order]=\"order\"\r\n ></vdr-fulfillment-detail>\r\n </div>\r\n <div class=\"card-footer\" *ngIf=\"fulfillment?.nextStates.length\">\r\n <ng-container *ngIf=\"nextSuggestedState() as suggestedState\">\r\n <button class=\"btn btn-sm btn-primary\" (click)=\"transitionState.emit(suggestedState)\">\r\n {{ 'order.set-fulfillment-state' | translate: { state: (suggestedState | stateI18nToken | translate) } }}\r\n </button>\r\n </ng-container>\r\n <vdr-dropdown>\r\n <button class=\"icon-button\" vdrDropdownTrigger>\r\n <clr-icon shape=\"ellipsis-vertical\"></clr-icon>\r\n </button>\r\n <vdr-dropdown-menu vdrPosition=\"bottom-right\">\r\n <ng-container *ngFor=\"let nextState of nextOtherStates()\">\r\n <button\r\n type=\"button\"\r\n vdrDropdownItem\r\n (click)=\"transitionState.emit(nextState)\"\r\n >\r\n <ng-container *ngIf=\"nextState !== 'Cancelled'; else cancel\">\r\n <clr-icon shape=\"step-forward-2\"></clr-icon>\r\n {{ 'order.transition-to-state' | translate: { state: (nextState | stateI18nToken | translate) } }}\r\n </ng-container>\r\n <ng-template #cancel>\r\n <clr-icon shape=\"error-standard\" class=\"is-error\"></clr-icon>\r\n {{ 'order.cancel-fulfillment' | translate }}\r\n </ng-template>\r\n </button>\r\n </ng-container>\r\n </vdr-dropdown-menu>\r\n </vdr-dropdown>\r\n </div>\r\n</div>\r\n","import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from '@angular/core';\r\nimport { FulfillmentFragment, OrderDetailFragment } from '@vendure/admin-ui/core';\r\n\r\n@Component({\r\n selector: 'vdr-fulfillment-card',\r\n templateUrl: './fulfillment-card.component.html',\r\n styleUrls: ['./fulfillment-card.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class FulfillmentCardComponent {\r\n @Input() fulfillment: FulfillmentFragment | undefined;\r\n @Input() order: OrderDetailFragment;\r\n @Output() transitionState = new EventEmitter<string>();\r\n\r\n nextSuggestedState(): string | undefined {\r\n if (!this.fulfillment) {\r\n return;\r\n }\r\n const { nextStates } = this.fulfillment;\r\n const namedStateOrDefault = (targetState: string) =>\r\n nextStates.includes(targetState) ? targetState : nextStates[0];\r\n switch (this.fulfillment?.state) {\r\n case 'Pending':\r\n return namedStateOrDefault('Shipped');\r\n case 'Shipped':\r\n return namedStateOrDefault('Delivered');\r\n default:\r\n return nextStates.find(s => s !== 'Cancelled');\r\n }\r\n }\r\n\r\n nextOtherStates(): string[] {\r\n if (!this.fulfillment) {\r\n return [];\r\n }\r\n const suggested = this.nextSuggestedState();\r\n return this.fulfillment.nextStates.filter(s => s !== suggested);\r\n }\r\n}\r\n","<vdr-labeled-data [label]=\"'common.ID' | translate\">{{ modification.id }}</vdr-labeled-data>\r\n<vdr-labeled-data *ngIf=\"modification.note\" [label]=\"'order.note' | translate\">{{\r\n modification.note\r\n}}</vdr-labeled-data>\r\n<vdr-labeled-data *ngFor=\"let surcharge of modification.surcharges\" [label]=\"'order.surcharges' | translate\">\r\n {{ getSurcharge(surcharge.id)?.description }}\r\n {{ getSurcharge(surcharge.id)?.priceWithTax | localeCurrency: order.currencyCode }}</vdr-labeled-data\r\n>\r\n<vdr-labeled-data *ngIf=\"getAddedItems().length\" [label]=\"'order.added-items' | translate\">\r\n <vdr-simple-item-list [items]=\"getAddedItems()\"></vdr-simple-item-list>\r\n</vdr-labeled-data>\r\n<vdr-labeled-data *ngIf=\"getRemovedItems().length\" [label]=\"'order.removed-items' | translate\">\r\n <vdr-simple-item-list [items]=\"getRemovedItems()\"></vdr-simple-item-list>\r\n</vdr-labeled-data>\r\n<vdr-labeled-data *ngIf=\"getModifiedItems().length\" [label]=\"'order.modified-items' | translate\">\r\n <vdr-simple-item-list [items]=\"getModifiedItems()\"></vdr-simple-item-list>\r\n</vdr-labeled-data>\r\n","import { ChangeDetectionStrategy, Component, Input, OnChanges, OnInit } from '@angular/core';\r\nimport { OrderDetailFragment } from '@vendure/admin-ui/core';\r\n\r\n@Component({\r\n selector: 'vdr-modification-detail',\r\n templateUrl: './modification-detail.component.html',\r\n styleUrls: ['./modification-detail.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class ModificationDetailComponent implements OnChanges {\r\n @Input() order: OrderDetailFragment;\r\n @Input() modification: OrderDetailFragment['modifications'][number];\r\n private addedItems = new Map<OrderDetailFragment['lines'][number], number>();\r\n private removedItems = new Map<OrderDetailFragment['lines'][number], number>();\r\n private modifiedItems = new Set<OrderDetailFragment['lines'][number]>();\r\n\r\n ngOnChanges(): void {\r\n const { added, removed, modified } = this.getModifiedLines();\r\n this.addedItems = added;\r\n this.removedItems = removed;\r\n this.modifiedItems = modified;\r\n }\r\n\r\n getSurcharge(id: string) {\r\n return this.order.surcharges.find(m => m.id === id);\r\n }\r\n\r\n getAddedItems() {\r\n return [...this.addedItems.entries()].map(([line, count]) => ({\r\n name: line.productVariant.name,\r\n quantity: count,\r\n }));\r\n }\r\n\r\n getRemovedItems() {\r\n return [...this.removedItems.entries()].map(([line, count]) => ({\r\n name: line.productVariant.name,\r\n quantity: count,\r\n }));\r\n }\r\n\r\n getModifiedItems() {\r\n return [...this.modifiedItems].map(line => ({\r\n name: line.productVariant.name,\r\n }));\r\n }\r\n\r\n private getModifiedLines() {\r\n const added = new Map<OrderDetailFragment['lines'][number], number>();\r\n const removed = new Map<OrderDetailFragment['lines'][number], number>();\r\n const modified = new Set<OrderDetailFragment['lines'][number]>();\r\n for (const modificationLine of this.modification.lines || []) {\r\n const line = this.order.lines.find(l => l.id === modificationLine.orderLineId);\r\n if (!line) {\r\n continue;\r\n }\r\n if (modificationLine.quantity === 0) {\r\n modified.add(line);\r\n } else if (modificationLine.quantity < 0) {\r\n removed.set(line, -modificationLine.quantity);\r\n } else {\r\n added.set(line, modificationLine.quantity);\r\n }\r\n }\r\n return { added, removed, modified };\r\n }\r\n}\r\n","export const NODE_HEIGHT = 72;\r\n","<div class=\"node-wrapper\" [ngStyle]=\"getStyle()\" [class.active]=\"active$ | async\">\r\n <div\r\n class=\"node\"\r\n [class.active-target]=\"activeTarget$ | async\"\r\n >\r\n {{ node.name | stateI18nToken | translate }}\r\n </div>\r\n <div class=\"cancelled-wrapper\" *ngIf=\"isCancellable\">\r\n <div class=\"cancelled-edge\">\r\n </div>\r\n <clr-icon shape=\"dot-circle\"></clr-icon>\r\n <div class=\"cancelled-node\">\r\n {{ cancelledState | stateI18nToken | translate }}\r\n </div>\r\n </div>\r\n</div>\r\n","import {\r\n ChangeDetectionStrategy,\r\n Component,\r\n ElementRef,\r\n Input,\r\n OnChanges,\r\n SimpleChanges,\r\n} from '@angular/core';\r\nimport { BehaviorSubject } from 'rxjs';\r\n\r\nimport { NODE_HEIGHT } from './constants';\r\nimport { StateNode } from './types';\r\n\r\n@Component({\r\n selector: 'vdr-order-process-node',\r\n templateUrl: './order-process-node.component.html',\r\n styleUrls: ['./order-process-node.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class OrderProcessNodeComponent implements OnChanges {\r\n @Input() node: StateNode;\r\n @Input() index: number;\r\n @Input() active: boolean;\r\n active$ = new BehaviorSubject<boolean>(false);\r\n activeTarget$ = new BehaviorSubject<boolean>(false);\r\n isCancellable = false;\r\n // We use a class field here to prevent the\r\n // i18n extractor from extracting a \"Cancelled\" key\r\n cancelledState = 'Cancelled';\r\n\r\n constructor(private elementRef: ElementRef<HTMLDivElement>) {}\r\n\r\n ngOnChanges(changes: SimpleChanges) {\r\n this.isCancellable = !!this.node.to.find((s) => s.name === 'Cancelled');\r\n if (changes.active) {\r\n this.active$.next(this.active);\r\n }\r\n }\r\n\r\n getPos(origin: 'top' | 'bottom' = 'top'): { x: number; y: number } {\r\n const rect = this.elementRef.nativeElement.getBoundingClientRect();\r\n const nodeHeight =\r\n this.elementRef.nativeElement.querySelector('.node')?.getBoundingClientRect().height ?? 0;\r\n return {\r\n x: 10,\r\n y: this.index * NODE_HEIGHT + (origin === 'bottom' ? nodeHeight : 0),\r\n };\r\n }\r\n\r\n getStyle() {\r\n const pos = this.getPos();\r\n return {\r\n 'top.px': pos.y,\r\n 'left.px': pos.x,\r\n };\r\n }\r\n}\r\n","import { ChangeDetectionStrategy, Component, Input, OnInit } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\nimport { tap } from 'rxjs/operators';\r\n\r\nimport { OrderProcessNodeComponent } from './order-process-node.component';\r\n\r\n@Component({\r\n selector: 'vdr-order-process-edge',\r\n templateUrl: './order-process-edge.component.html',\r\n styleUrls: ['./order-process-edge.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class OrderProcessEdgeComponent implements OnInit {\r\n @Input() from: OrderProcessNodeComponent;\r\n @Input() to: OrderProcessNodeComponent;\r\n @Input() index: number;\r\n active$: Observable<boolean>;\r\n\r\n ngOnInit() {\r\n this.active$ = this.from.active$\r\n .asObservable()\r\n .pipe(tap((active) => this.to.activeTarget$.next(active)));\r\n }\r\n\r\n getStyle() {\r\n const direction = this.from.index < this.to.index ? 'down' : 'up';\r\n const startPos = this.from.getPos(direction === 'down' ? 'bottom' : 'top');\r\n const endPos = this.to.getPos(direction === 'down' ? 'top' : 'bottom');\r\n const dX = Math.abs(startPos.x - endPos.x);\r\n const dY = Math.abs(startPos.y - endPos.y);\r\n const length = Math.sqrt(dX ** 2 + dY ** 2);\r\n return {\r\n 'top.px': startPos.y,\r\n 'left.px': startPos.x + (direction === 'down' ? 10 : 40) + this.index * 12,\r\n 'height.px': length,\r\n 'width.px': 1,\r\n ...(direction === 'up'\r\n ? {\r\n transform: 'rotateZ(180deg)',\r\n 'transform-origin': 'top',\r\n }\r\n : {}),\r\n };\r\n }\r\n}\r\n","<div\r\n [attr.data-from]=\"from.node.name\"\r\n [attr.data-to]=\"to.node.name\"\r\n [ngStyle]=\"getStyle()\"\r\n [class.active]=\"active$ | async\"\r\n class=\"edge\">\r\n <clr-icon shape=\"arrow\" flip=\"vertical\" class=\"arrow\"></clr-icon>\r\n</div>\r\n","<ng-container *ngFor=\"let state of nodes; let i = index\">\r\n <vdr-order-process-node\r\n [node]=\"state\"\r\n [index]=\"i\"\r\n [active]=\"(activeState$ | async) === state.name\"\r\n (mouseenter)=\"onMouseOver(state.name)\"\r\n (mouseleave)=\"onMouseOut()\"\r\n ></vdr-order-process-node>\r\n</ng-container>\r\n<ng-container *ngFor=\"let edge of edges\">\r\n <vdr-order-process-edge [from]=\"edge.from\" [to]=\"edge.to\" [index]=\"edge.index\"></vdr-order-process-edge>\r\n</ng-container>\r\n","import {\r\n AfterViewInit,\r\n ChangeDetectionStrategy,\r\n ChangeDetectorRef,\r\n Component,\r\n HostBinding,\r\n Input,\r\n OnChanges,\r\n OnInit,\r\n QueryList,\r\n SimpleChanges,\r\n ViewChildren,\r\n} from '@angular/core';\r\nimport { OrderProcessState } from '@vendure/admin-ui/core';\r\nimport { BehaviorSubject, Observable } from 'rxjs';\r\nimport { debounceTime } from 'rxjs/operators';\r\n\r\nimport { NODE_HEIGHT } from './constants';\r\nimport { OrderProcessNodeComponent } from './order-process-node.component';\r\nimport { StateNode } from './types';\r\n\r\n@Component({\r\n selector: 'vdr-order-process-graph',\r\n templateUrl: './order-process-graph.component.html',\r\n styleUrls: ['./order-process-graph.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class OrderProcessGraphComponent implements OnInit, OnChanges, AfterViewInit {\r\n @Input() states: OrderProcessState[];\r\n @Input() initialState?: string;\r\n setActiveState$ = new BehaviorSubject<string | undefined>(undefined);\r\n activeState$: Observable<string | undefined>;\r\n nodes: StateNode[] = [];\r\n edges: Array<{ from: OrderProcessNodeComponent; to: OrderProcessNodeComponent; index: number }> = [];\r\n\r\n @ViewChildren(OrderProcessNodeComponent) nodeComponents: QueryList<OrderProcessNodeComponent>;\r\n\r\n constructor(private changeDetector: ChangeDetectorRef) {}\r\n\r\n @HostBinding('style.height.px')\r\n get outerHeight(): number {\r\n return this.nodes.length * NODE_HEIGHT;\r\n }\r\n\r\n ngOnInit() {\r\n this.setActiveState$.next(this.initialState);\r\n this.activeState$ = this.setActiveState$.pipe(debounceTime(150));\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges) {\r\n this.populateNodes();\r\n }\r\n\r\n ngAfterViewInit() {\r\n setTimeout(() => this.populateEdges());\r\n }\r\n\r\n onMouseOver(stateName: string) {\r\n this.setActiveState$.next(stateName);\r\n }\r\n\r\n onMouseOut() {\r\n this.setActiveState$.next(this.initialState);\r\n }\r\n\r\n getNodeFor(state: string): OrderProcessNodeComponent | undefined {\r\n if (this.nodeComponents) {\r\n return this.nodeComponents.find((n) => n.node.name === state);\r\n }\r\n }\r\n\r\n private populateNodes() {\r\n const stateNodeMap = new Map<string, StateNode>();\r\n for (const state of this.states) {\r\n stateNodeMap.set(state.name, {\r\n name: state.name,\r\n to: [],\r\n });\r\n }\r\n\r\n for (const [name, stateNode] of stateNodeMap.entries()) {\r\n const targets = this.states.find((s) => s.name === name)?.to ?? [];\r\n for (const target of targets) {\r\n const targetNode = stateNodeMap.get(target);\r\n if (targetNode) {\r\n stateNode.to.push(targetNode);\r\n }\r\n }\r\n }\r\n this.nodes = [...stateNodeMap.values()].filter((n) => n.name !== 'Cancelled');\r\n }\r\n\r\n private populateEdges() {\r\n for (const node of this.nodes) {\r\n const nodeCmp = this.getNodeFor(node.name);\r\n let index = 0;\r\n for (const to of node.to) {\r\n const toCmp = this.getNodeFor(to.name);\r\n if (nodeCmp && toCmp && nodeCmp !== toCmp) {\r\n this.edges.push({\r\n to: toCmp,\r\n from: nodeCmp,\r\n index,\r\n });\r\n index++;\r\n }\r\n }\r\n }\r\n this.edges = [...this.edges];\r\n this.changeDetector.markForCheck();\r\n }\r\n}\r\n","<ng-template vdrDialogTitle>{{ 'order.order-state-diagram' | translate }}</ng-template>\r\n\r\n<vdr-order-process-graph [states]=\"states\" [initialState]=\"activeState\"></vdr-order-process-graph>\r\n","import { ChangeDetectionStrategy, Component, OnInit } from '@angular/core';\r\nimport {\r\n CancelOrderInput,\r\n DataService,\r\n Dialog,\r\n OrderProcessState,\r\n ServerConfigService,\r\n} from '@vendure/admin-ui/core';\r\nimport { Observable } from 'rxjs';\r\n\r\n@Component({\r\n selector: 'vdr-order-process-graph-dialog',\r\n templateUrl: './order-process-graph-dialog.component.html',\r\n styleUrls: ['./order-process-graph-dialog.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class OrderProcessGraphDialogComponent implements OnInit, Dialog<void> {\r\n activeState: string;\r\n states: OrderProcessState[] = [];\r\n constructor(private serverConfigService: ServerConfigService) {}\r\n\r\n ngOnInit(): void {\r\n this.states = this.serverConfigService.getOrderProcessStates();\r\n }\r\n\r\n resolveWith: (result: void | undefined) => void;\r\n}\r\n","<vdr-card\r\n [title]=\"'order.payment' | translate\"\r\n [class.selected]=\"payment.selected\"\r\n [class.unselected]=\"!payment.selected\"\r\n *ngFor=\"let payment of refundablePayments\"\r\n>\r\n <ng-template vdrCardControls>\r\n <vdr-select-toggle\r\n size=\"small\"\r\n [title]=\"'order.refund-this-payment' | translate\"\r\n [label]=\"'order.refund-this-payment' | translate\"\r\n [disabled]=\"refundablePayments.length === 1\"\r\n [(selected)]=\"payment.selected\"\r\n (selectedChange)=\"paymentSelected.emit({ payment: payment, selected: $event })\"\r\n ></vdr-select-toggle>\r\n </ng-template>\r\n <div class=\"form-grid\">\r\n <vdr-labeled-data [label]=\"'order.payment-method' | translate\">\r\n {{ payment.method }}\r\n </vdr-labeled-data>\r\n <vdr-labeled-data [label]=\"'order.transaction-id' | translate\">\r\n {{ payment.transactionId }}\r\n </vdr-labeled-data>\r\n <vdr-labeled-data [label]=\"'order.payment-amount' | translate\">\r\n {{ payment.amount | localeCurrency : order.currencyCode }}\r\n </vdr-labeled-data>\r\n <vdr-labeled-data [label]=\"'order.refundable-amount' | translate\">\r\n {{ payment.refundableAmount | localeCurrency : order.currencyCode }}\r\n </vdr-labeled-data>\r\n </div>\r\n <vdr-form-field [label]=\"'order.refund-amount' | translate\">\r\n <vdr-currency-input\r\n [readonly]=\"!payment.selected\"\r\n [currencyCode]=\"order.currencyCode\"\r\n [formControl]=\"payment.amountToRefundControl\"\r\n ></vdr-currency-input>\r\n </vdr-form-field>\r\n</vdr-card>","import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from '@angular/core';\r\nimport { OrderDetailFragment } from '@vendure/admin-ui/core';\r\nimport { RefundablePayment } from '../../common/get-refundable-payments';\r\n\r\n@Component({\r\n selector: 'vdr-payment-for-refund-selector',\r\n templateUrl: './payment-for-refund-selector.component.html',\r\n styleUrls: ['./payment-for-refund-selector.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.Default,\r\n})\r\nexport class PaymentForRefundSelectorComponent {\r\n @Input() refundablePayments: RefundablePayment[];\r\n @Input() order: OrderDetailFragment;\r\n @Output() paymentSelected = new EventEmitter<{ payment: RefundablePayment; selected: boolean }>();\r\n}\r\n","<ng-template vdrDialogTitle>{{ 'order.refund-and-cancel-order' | translate }}</ng-template>\r\n\r\n<div class=\"refund-wrapper\">\r\n <vdr-data-table-2 id=\"refund-order\" [items]=\"order.lines\">\r\n <!-- Here we define all the available columns -->\r\n <vdr-dt2-column id=\"id\" [heading]=\"'common.id' | translate\" [hiddenByDefault]=\"true\">\r\n <ng-template let-line=\"item\">\r\n {{ line.id }}\r\n </ng-template>\r\n </vdr-dt2-column>\r\n <vdr-dt2-column id=\"created-at\" [heading]=\"'common.created-at' | translate\" [hiddenByDefault]=\"true\">\r\n <ng-template let-line=\"item\">\r\n {{ line.createdAt | localeDate : 'short' }}\r\n </ng-template>\r\n </vdr-dt2-column>\r\n <vdr-dt2-column id=\"updated-at\" [heading]=\"'common.updated-at' | translate\" [hiddenByDefault]=\"true\">\r\n <ng-template let-line=\"item\">\r\n {{ line.updatedAt | localeDate : 'short' }}\r\n </ng-template>\r\n </vdr-dt2-column>\r\n <vdr-dt2-column [heading]=\"'common.image' | translate\" id=\"image\">\r\n <ng-template let-line=\"item\">\r\n <div class=\"image-placeholder\">\r\n <img\r\n *ngIf=\"line.featuredAsset as asset; else imagePlaceholder\"\r\n [src]=\"asset | assetPreview : 'tiny'\"\r\n />\r\n <ng-template #imagePlaceholder>\r\n <div class=\"placeholder\">\r\n <clr-icon shape=\"image\" size=\"48\"></clr-icon>\r\n </div>\r\n </ng-template>\r\n </div>\r\n </ng-template>\r\n </vdr-dt2-column>\r\n <vdr-dt2-column id=\"product-name\" [heading]=\"'order.product-name' | translate\" [optional]=\"false\">\r\n <ng-template let-line=\"item\">\r\n {{ line.productVariant.name }}\r\n </ng-template>\r\n </vdr-dt2-column>\r\n <vdr-dt2-column id=\"product-sku\" [heading]=\"'order.product-sku' | translate\">\r\n <ng-template let-line=\"item\">\r\n {{ line.productVariant.sku }}\r\n </ng-template>\r\n </vdr-dt2-column>\r\n <vdr-dt2-column id=\"unit-price\" [heading]=\"'order.unit-price' | translate\" [hiddenByDefault]=\"true\">\r\n <ng-template let-line=\"item\">\r\n {{ line.unitPriceWithTax | localeCurrency : order.currencyCode }}\r\n </ng-template>\r\n </vdr-dt2-column>\r\n <vdr-dt2-column id=\"prorated-unit-price\" [heading]=\"'order.prorated-unit-price' | translate\">\r\n <ng-template let-line=\"item\">\r\n {{ line.proratedUnitPriceWithTax | localeCurrency : order.currencyCode }}\r\n <ng-container *ngIf=\"line.discounts as discounts\">\r\n <vdr-dropdown *ngIf=\"discounts.length\">\r\n <div class=\"promotions-label\" vdrDropdownTrigger>\r\n <button class=\"icon-button\"><clr-icon shape=\"info\"></clr-icon></button>\r\n </div>\r\n <vdr-dropdown-menu>\r\n <div class=\"line-promotion\" *ngFor=\"let discount of discounts\">\r\n {{ discount.description }}\r\n <div class=\"promotion-amount\">\r\n {{\r\n discount.amount / 100 / line.quantity\r\n | number : '1.0-2'\r\n | currency : order.currencyCode\r\n }}\r\n </div>\r\n </div>\r\n </vdr-dropdown-menu>\r\n </vdr-dropdown>\r\n </ng-container>\r\n </ng-template>\r\n </vdr-dt2-column>\r\n <vdr-dt2-column id=\"quantity\" [heading]=\"'order.quantity' | translate\">\r\n <ng-template let-line=\"item\">\r\n {{ line.quantity }}\r\n <vdr-line-refunds [line]=\"line\" [payments]=\"order.payments\"></vdr-line-refunds>\r\n </ng-template>\r\n </vdr-dt2-column>\r\n <vdr-dt2-column id=\"refund-quantity\" [heading]=\"'order.refund' | translate\" [optional]=\"false\">\r\n <ng-template let-line=\"item\">\r\n <input\r\n *ngIf=\"lineCanBeRefundedOrCancelled(line)\"\r\n [ngModel]=\"lineQuantities[line.id].quantity\"\r\n type=\"number\"\r\n [max]=\"line.quantity\"\r\n min=\"0\"\r\n (ngModelChange)=\"onRefundQuantityChange(line.id, $event)\"\r\n />\r\n </ng-template>\r\n </vdr-dt2-column>\r\n <vdr-dt2-column id=\"cancel\" [heading]=\"'order.return-to-stock' | translate\" [optional]=\"false\">\r\n <ng-template let-line=\"item\">\r\n <div class=\"cancel-checkbox-wrapper\">\r\n <label class=\"flex center\">\r\n <input\r\n type=\"checkbox\"\r\n *ngIf=\"lineCanBeRefundedOrCancelled(line)\"\r\n clrCheckbox\r\n [disabled]=\"0 === lineQuantities[line.id].quantity\"\r\n [(ngModel)]=\"lineQuantities[line.id].cancel\"\r\n />\r\n <span class=\"ml-1\">{{ 'order.return-to-stock' | translate }}</span></label\r\n >\r\n </div>\r\n </ng-template>\r\n </vdr-dt2-column>\r\n </vdr-data-table-2>\r\n\r\n <div class=\"refund-details mt-4\">\r\n <div>\r\n <vdr-card>\r\n <label class=\"flex mb-2\" *ngFor=\"let shippingLine of order.shippingLines\">\r\n <input type=\"checkbox\" clrCheckbox (change)=\"toggleShippingRefund(shippingLine.id)\" />\r\n <div class=\"ml-1\">\r\n {{ 'order.refund-shipping' | translate }}\r\n <span>{{ shippingLine.shippingMethod.name }}:</span>\r\n <span class=\"ml-1\"\r\n >{{ shippingLine.discountedPriceWithTax | localeCurrency : order.currencyCode }}\r\n </span>\r\n </div></label\r\n >\r\n <vdr-form-field [label]=\"'order.refund-cancellation-reason' | translate\" class=\"mb-2\">\r\n <ng-select\r\n [items]=\"reasons\"\r\n bindLabel=\"name\"\r\n autofocus\r\n [placeholder]=\"'order.refund-cancellation-reason-required' | translate\"\r\n bindValue=\"id\"\r\n [addTag]=\"true\"\r\n [(ngModel)]=\"reason\"\r\n ></ng-select>\r\n </vdr-form-field>\r\n <vdr-form-field\r\n [label]=\"'order.refund-total' | translate\"\r\n [readOnlyToggle]=\"true\"\r\n (readOnlyToggleChange)=\"manuallySetRefundTotal = !$event\"\r\n >\r\n <vdr-currency-input\r\n [readonly]=\"!manuallySetRefundTotal\"\r\n [currencyCode]=\"order.currencyCode\"\r\n [(ngModel)]=\"refundTotal\"\r\n (ngModelChange)=\"updateRefundTotal()\"\r\n ></vdr-currency-input>\r\n </vdr-form-field>\r\n </vdr-card>\r\n </div>\r\n <div class=\"\">\r\n <vdr-payment-for-refund-selector\r\n [refundablePayments]=\"refundablePayments\"\r\n (paymentSelected)=\"onPaymentSelected($event.payment, $event.selected)\"\r\n [order]=\"order\"\r\n ></vdr-payment-for-refund-selector>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n<ng-template vdrDialogButtons>\r\n <div>\r\n <div class=\"errors\">\r\n <clr-alert\r\n *ngIf=\"refundTotal < 0 || totalRefundableAmount < refundTotal\"\r\n [clrAlertType]=\"'danger'\"\r\n [clrAlertClosable]=\"false\"\r\n >\r\n <clr-alert-item>\r\n {{\r\n 'order.refund-total-error'\r\n | translate\r\n : {\r\n min: 0 | currency : order.currencyCode,\r\n max: totalRefundableAmount | localeCurrency : order.currencyCode\r\n }\r\n }}\r\n </clr-alert-item>\r\n </clr-alert>\r\n <clr-alert\r\n *ngIf=\"amountToRefundTotal < refundTotal || refundTotal < amountToRefundTotal\"\r\n [clrAlertType]=\"'danger'\"\r\n [clrAlertClosable]=\"false\"\r\n >\r\n <clr-alert-item>\r\n {{ 'order.refund-total-warning' | translate }}\r\n </clr-alert-item>\r\n </clr-alert>\r\n <clr-alert\r\n *ngIf=\"amountToRefundTotal && !reason\"\r\n [clrAlertType]=\"'danger'\"\r\n [clrAlertClosable]=\"false\"\r\n >\r\n <clr-alert-item>\r\n {{ 'order.refund-cancellation-reason-required' | translate }}\r\n </clr-alert-item>\r\n </clr-alert>\r\n </div>\r\n <div class=\"modal-buttons\">\r\n <button type=\"button\" class=\"btn\" (click)=\"cancel()\">{{ 'common.cancel' | translate }}</button>\r\n <button type=\"submit\" (click)=\"select()\" [disabled]=\"!canSubmit()\" class=\"btn btn-primary\">\r\n {{\r\n 'order.refund-with-amount'\r\n | translate : { amount: amountToRefundTotal | localeCurrency : order.currencyCode }\r\n }}\r\n </button>\r\n </div>\r\n </div>\r\n</ng-template>\r\n","import { ChangeDetectionStrategy, Component, OnInit } from '@angular/core';\r\nimport { FormControl, Validators } from '@angular/forms';\r\nimport { marker as _ } from '@biesbjerg/ngx-translate-extract-marker';\r\nimport {\r\n CancelOrderInput,\r\n Dialog,\r\n getAppConfig,\r\n I18nService,\r\n OrderDetailFragment,\r\n OrderLineInput,\r\n PaymentWithRefundsFragment,\r\n RefundOrderInput,\r\n} from '@vendure/admin-ui/core';\r\nimport { summate } from '@vendure/common/lib/shared-utils';\r\nimport { getRefundablePayments, RefundablePayment } from '../../common/get-refundable-payments';\r\n\r\ntype SelectionLine = { quantity: number; cancel: boolean };\r\n\r\n@Component({\r\n selector: 'vdr-refund-order-dialog',\r\n templateUrl: './refund-order-dialog.component.html',\r\n styleUrls: ['./refund-order-dialog.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class RefundOrderDialogComponent\r\n implements OnInit, Dialog<{ cancel: CancelOrderInput; refunds: RefundOrderInput[] }>\r\n{\r\n order: OrderDetailFragment;\r\n resolveWith: (result?: { cancel: CancelOrderInput; refunds: RefundOrderInput[] }) => void;\r\n reason: string;\r\n lineQuantities: { [lineId: string]: SelectionLine } = {};\r\n refundablePayments: RefundablePayment[] = [];\r\n refundShippingLineIds: string[] = [];\r\n reasons = getAppConfig().cancellationReasons ?? [\r\n _('order.refund-reason-customer-request'),\r\n _('order.refund-reason-not-available'),\r\n ];\r\n manuallySetRefundTotal = false;\r\n refundTotal = 0;\r\n\r\n constructor(private i18nService: I18nService) {\r\n this.reasons = this.reasons.map(r => this.i18nService.translate(r));\r\n }\r\n\r\n get totalRefundableAmount(): number {\r\n return summate(this.refundablePayments, 'refundableAmount');\r\n }\r\n\r\n get amountToRefundTotal(): number {\r\n return this.refundablePayments.reduce(\r\n (total, payment) => total + payment.amountToRefundControl.value,\r\n 0,\r\n );\r\n }\r\n\r\n lineCanBeRefundedOrCancelled(line: OrderDetailFragment['lines'][number]): boolean {\r\n const refundedCount =\r\n this.order.payments\r\n ?.reduce(\r\n (all, payment) => [...all, ...payment.refunds],\r\n [] as PaymentWithRefundsFragment['refunds'],\r\n )\r\n .filter(refund => refund.state !== 'Failed')\r\n .reduce(\r\n (all, refund) => [...all, ...refund.lines],\r\n [] as Array<{ orderLineId: string; quantity: number }>,\r\n )\r\n .filter(refundLine => refundLine.orderLineId === line.id)\r\n .reduce((sum, refundLine) => sum + refundLine.quantity, 0) ?? 0;\r\n\r\n return refundedCount < line.orderPlacedQuantity;\r\n }\r\n\r\n ngOnInit() {\r\n this.lineQuantities = this.order.lines.reduce(\r\n (result, line) => ({\r\n ...result,\r\n [line.id]: {\r\n quantity: 0,\r\n refund: true,\r\n cancel: false,\r\n },\r\n }),\r\n {},\r\n );\r\n this.refundablePayments = getRefundablePayments(this.order.payments);\r\n }\r\n\r\n updateRefundTotal() {\r\n if (!this.manuallySetRefundTotal) {\r\n const itemTotal = this.order.lines.reduce((total, line) => {\r\n const lineRef = this.lineQuantities[line.id];\r\n const refundCount = lineRef.quantity || 0;\r\n return total + line.proratedUnitPriceWithTax * refundCount;\r\n }, 0);\r\n const shippingTotal = this.order.shippingLines.reduce((total, line) => {\r\n if (this.refundShippingLineIds.includes(line.id)) {\r\n return total + line.discountedPriceWithTax;\r\n } else {\r\n return total;\r\n }\r\n }, 0);\r\n this.refundTotal = itemTotal + shippingTotal;\r\n }\r\n\r\n // allocate the refund total across the refundable payments\r\n const refundablePayments = this.refundablePayments.filter(p => p.selected);\r\n let refundsAllocated = 0;\r\n for (const payment of refundablePayments) {\r\n const amountToRefund = Math.min(payment.refundableAmount, this.refundTotal - refundsAllocated);\r\n payment.amountToRefundControl.setValue(amountToRefund);\r\n refundsAllocated += amountToRefund;\r\n }\r\n }\r\n\r\n toggleShippingRefund(lineId: string) {\r\n const index = this.refundShippingLineIds.indexOf(lineId);\r\n if (index === -1) {\r\n this.refundShippingLineIds.push(lineId);\r\n } else {\r\n this.refundShippingLineIds.splice(index, 1);\r\n }\r\n this.updateRefundTotal();\r\n }\r\n\r\n onRefundQuantityChange(orderLineId: string, quantity: number) {\r\n this.manuallySetRefundTotal = false;\r\n const selectionLine = this.lineQuantities[orderLineId];\r\n if (selectionLine) {\r\n const previousQuantity = selectionLine.quantity;\r\n if (quantity === 0) {\r\n selectionLine.cancel = false;\r\n } else if (previousQuantity === 0 && quantity > 0) {\r\n selectionLine.cancel = true;\r\n }\r\n selectionLine.quantity = quantity;\r\n this.updateRefundTotal();\r\n }\r\n }\r\n\r\n onPaymentSelected(payment: RefundablePayment, selected: boolean) {\r\n if (selected) {\r\n const outstandingRefundAmount =\r\n this.refundTotal -\r\n this.refundablePayments\r\n .filter(p => p.id !== payment.id)\r\n .reduce((total, p) => total + p.amountToRefundControl.value, 0);\r\n if (0 < outstandingRefundAmount) {\r\n payment.amountToRefundControl.setValue(\r\n Math.min(outstandingRefundAmount, payment.refundableAmount),\r\n );\r\n }\r\n } else {\r\n payment.amountToRefundControl.setValue(0);\r\n }\r\n }\r\n\r\n isRefunding(): boolean {\r\n const result = Object.values(this.lineQuantities).reduce(\r\n (isRefunding, line) => isRefunding || 0 < line.quantity,\r\n false,\r\n );\r\n return result;\r\n }\r\n\r\n isCancelling(): boolean {\r\n const result = Object.values(this.lineQuantities).reduce(\r\n (isCancelling, line) => isCancelling || (0 < line.quantity && line.cancel),\r\n false,\r\n );\r\n return result;\r\n }\r\n\r\n canSubmit(): boolean {\r\n return 0 < this.refundTotal && this.amountToRefundTotal === this.refundTotal && !!this.reason;\r\n }\r\n\r\n select() {\r\n const refundLines = this.getOrderLineInput(() => true);\r\n const cancelLines = this.getOrderLineInput(line => line.cancel);\r\n\r\n this.resolveWith({\r\n refunds: this.refundablePayments\r\n .filter(rp => rp.selected && 0 < rp.amountToRefundControl.value)\r\n .map(payment => {\r\n return {\r\n lines: refundLines,\r\n reason: this.reason,\r\n paymentId: payment.id,\r\n amount: payment.amountToRefundControl.value,\r\n shipping: 0,\r\n adjustment: 0,\r\n };\r\n }),\r\n cancel: {\r\n lines: cancelLines,\r\n orderId: this.order.id,\r\n reason: this.reason,\r\n cancelShipping: this.refundShippingLineIds.length > 0,\r\n },\r\n });\r\n }\r\n\r\n cancel() {\r\n this.resolveWith();\r\n }\r\n\r\n private getOrderLineInput(filterFn: (line: SelectionLine) => boolean): OrderLineInput[] {\r\n return Object.entries(this.lineQuantities)\r\n .filter(([orderLineId, line]) => 0 < line.quantity && filterFn(line))\r\n .map(([orderLineId, line]) => ({\r\n orderLineId,\r\n quantity: line.quantity,\r\n }));\r\n }\r\n}\r\n","<ng-template vdrDialogTitle>{{ 'order.settle-refund' | translate }}</ng-template>\r\n<p class=\"instruction\">\r\n {{ 'order.settle-refund-manual-instructions' | translate: { method: refund.method } }}\r\n</p>\r\n<clr-input-container>\r\n <label>{{ 'order.transaction-id' | translate }}</label>\r\n <input clrInput name=\"transactionId\" [(ngModel)]=\"transactionId\" />\r\n</clr-input-container>\r\n\r\n<ng-template vdrDialogButtons>\r\n <button type=\"button\" class=\"btn\" (click)=\"cancel()\">{{ 'common.cancel' | translate }}</button>\r\n <button type=\"submit\" (click)=\"submit()\" [disabled]=\"!transactionId\" class=\"btn btn-primary\">\r\n {{ 'order.settle-refund' | translate }}\r\n </button>\r\n</ng-template>\r\n","import { ChangeDetectionStrategy, Component } from '@angular/core';\r\nimport { Dialog, OrderDetailFragment } from '@vendure/admin-ui/core';\r\n\r\n@Component({\r\n selector: 'vdr-settle-refund-dialog',\r\n templateUrl: './settle-refund-dialog.component.html',\r\n styleUrls: ['./settle-refund-dialog.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class SettleRefundDialogComponent implements Dialog<string> {\r\n resolveWith: (result?: string) => void;\r\n transactionId = '';\r\n refund: NonNullable<OrderDetailFragment['payments']>[number]['refunds'][number];\r\n\r\n submit() {\r\n this.resolveWith(this.transactionId);\r\n }\r\n\r\n cancel() {\r\n this.resolveWith();\r\n }\r\n}\r\n","<vdr-chip [title]=\"'order.payment-state' | translate\" [colorType]=\"chipColorType\">\r\n <clr-icon shape=\"check-circle\" *ngIf=\"state === 'Settled'\"></clr-icon>\r\n {{ state | stateI18nToken | translate }}\r\n</vdr-chip>\r\n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'vdr-payment-state-label',\r\n templateUrl: './payment-state-label.component.html',\r\n styleUrls: ['./payment-state-label.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class PaymentStateLabelComponent {\r\n @Input() state: string;\r\n\r\n get chipColorType() {\r\n switch (this.state) {\r\n case 'Authorized':\r\n return 'warning';\r\n case 'Settled':\r\n return 'success';\r\n case 'Declined':\r\n case 'Cancelled':\r\n return 'error';\r\n }\r\n }\r\n}\r\n","<vdr-chip [title]=\"'order.payment-state' | translate\" [colorType]=\"chipColorType\">\r\n <clr-icon shape=\"check-circle\" *ngIf=\"state === 'Settled'\"></clr-icon>\r\n {{ state | stateI18nToken | translate }}\r\n</vdr-chip>\r\n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'vdr-refund-state-label',\r\n templateUrl: './refund-state-label.component.html',\r\n styleUrls: ['./refund-state-label.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class RefundStateLabelComponent {\r\n @Input() state: string;\r\n\r\n get chipColorType() {\r\n switch (this.state) {\r\n case 'Pending':\r\n return 'warning';\r\n case 'Settled':\r\n return 'success';\r\n case 'Failed':\r\n return 'error';\r\n }\r\n }\r\n}\r\n","<vdr-labeled-data [label]=\"'order.payment-method' | translate\">\r\n {{ payment.method }}\r\n</vdr-labeled-data>\r\n<vdr-labeled-data [label]=\"'order.amount' | translate\">\r\n {{ payment.amount | localeCurrency: currencyCode }}\r\n</vdr-labeled-data>\r\n<vdr-labeled-data *ngIf=\"payment.errorMessage\" [label]=\"'order.error-message' | translate\">\r\n {{ payment.errorMessage }}\r\n</vdr-labeled-data>\r\n<vdr-labeled-data *ngIf=\"payment.transactionId\" [label]=\"'order.transaction-id' | translate\">\r\n {{ payment.transactionId }}\r\n</vdr-labeled-data>\r\n<vdr-labeled-data [label]=\"'order.payment-metadata' | translate\">\r\n <vdr-object-tree [value]=\"payment.metadata\"></vdr-object-tree>\r\n</vdr-labeled-data>\r\n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\r\nimport { CurrencyCode, OrderDetailFragment } from '@vendure/admin-ui/core';\r\n\r\n@Component({\r\n selector: 'vdr-payment-detail',\r\n templateUrl: './payment-detail.component.html',\r\n styleUrls: ['./payment-detail.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class PaymentDetailComponent {\r\n @Input() payment: NonNullable<OrderDetailFragment['payments']>[number];\r\n @Input() currencyCode: CurrencyCode;\r\n}\r\n","<div class=\"card\">\r\n <div class=\"card-header payment-header\">\r\n <div>\r\n {{ 'order.payment' | translate }}\r\n <ng-container *ngIf=\"payment.amount\">{{ payment.amount | localeCurrency : currencyCode }}</ng-container>\r\n </div>\r\n <div class=\"payment-state\">\r\n <vdr-payment-state-label [state]=\"payment.state\"></vdr-payment-state-label>\r\n </div>\r\n </div>\r\n <div class=\"card-block\">\r\n <vdr-payment-detail [payment]=\"payment\" [currencyCode]=\"currencyCode\"></vdr-payment-detail>\r\n </div>\r\n <ng-container *ngFor=\"let refund of payment.refunds\">\r\n <div class=\"refund-wrapper card-block\">\r\n <div class=\"card-header payment-header refund-header\">\r\n <clr-icon shape=\"redo\" class=\"refund-icon\" dir=\"down\"></clr-icon>\r\n {{ 'order.refund' | translate }} #{{ refund.id }}\r\n <div class=\"clr-flex-fill\"></div>\r\n <vdr-refund-state-label [state]=\"refund.state\"></vdr-refund-state-label>\r\n </div>\r\n <div class=\"card-block\">\r\n <vdr-labeled-data [label]=\"'common.created-at' | translate\">\r\n {{ refund.createdAt | localeDate : 'medium' }}\r\n </vdr-labeled-data>\r\n <vdr-labeled-data [label]=\"'order.refund-total' | translate\">\r\n {{ refund.total | localeCurrency : currencyCode }}\r\n </vdr-labeled-data>\r\n <vdr-labeled-data [label]=\"'order.transaction-id' | translate\" *ngIf=\"refund.transactionId\">\r\n {{ refund.transactionId }}\r\n </vdr-labeled-data>\r\n <vdr-labeled-data [label]=\"'order.refund-reason' | translate\" *ngIf=\"refund.reason\">\r\n {{ refund.reason }}\r\n </vdr-labeled-data>\r\n <vdr-labeled-data\r\n [label]=\"'order.refund-metadata' | translate\"\r\n *ngIf=\"refundHasMetadata(refund)\"\r\n >\r\n <vdr-object-tree [value]=\"refund.metadata\"></vdr-object-tree>\r\n </vdr-labeled-data>\r\n </div>\r\n <div class=\"card-footer\" *ngIf=\"refund.state === 'Pending'\">\r\n <button class=\"btn btn-sm btn-primary\" (click)=\"settleRefund.emit(refund)\">\r\n {{ 'order.settle-refund' | translate }}\r\n </button>\r\n </div>\r\n </div>\r\n </ng-container>\r\n <div class=\"card-footer\" *ngIf=\"payment.nextStates.length\">\r\n <button\r\n class=\"btn btn-sm btn-primary\"\r\n *ngIf=\"payment.nextStates.includes('Settled')\"\r\n (click)=\"settlePayment.emit(payment)\"\r\n >\r\n {{ 'order.settle-payment' | translate }}\r\n </button>\r\n <vdr-dropdown>\r\n <button class=\"icon-button\" vdrDropdownTrigger>\r\n <clr-icon shape=\"ellipsis-vertical\"></clr-icon>\r\n </button>\r\n <vdr-dropdown-menu vdrPosition=\"bottom-right\">\r\n <ng-container *ngFor=\"let nextState of nextOtherStates()\">\r\n <button\r\n type=\"button\"\r\n vdrDropdownItem\r\n (click)=\"transitionPaymentState.emit({ payment: payment, state: nextState })\"\r\n >\r\n <ng-container *ngIf=\"nextState !== 'Cancelled'; else cancel\">\r\n <clr-icon shape=\"step-forward-2\"></clr-icon>\r\n {{\r\n 'order.transition-to-state'\r\n | translate : { state: (nextState | stateI18nToken | translate) }\r\n }}\r\n </ng-container>\r\n <ng-template #cancel>\r\n <clr-icon shape=\"error-standard\" class=\"is-error\"></clr-icon>\r\n {{ 'order.cancel-payment' | translate }}\r\n </ng-template>\r\n </button>\r\n </ng-container>\r\n </vdr-dropdown-menu>\r\n </vdr-dropdown>\r\n </div>\r\n</div>\r\n","import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from '@angular/core';\r\nimport { CurrencyCode, OrderDetailFragment } from '@vendure/admin-ui/core';\r\n\r\ntype Payment = NonNullable<OrderDetailFragment['payments']>[number];\r\n\r\n@Component({\r\n selector: 'vdr-order-payment-card',\r\n templateUrl: './order-payment-card.component.html',\r\n styleUrls: ['./order-payment-card.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class OrderPaymentCardComponent {\r\n @Input() payment: Payment;\r\n @Input() currencyCode: CurrencyCode;\r\n @Output() settlePayment = new EventEmitter<Payment>();\r\n @Output() transitionPaymentState = new EventEmitter<{ payment: Payment; state: string }>();\r\n @Output() settleRefund = new EventEmitter<Payment['refunds'][number]>();\r\n\r\n refundHasMetadata(refund?: Payment['refunds'][number]): boolean {\r\n return !!refund && Object.keys(refund.metadata).length > 0;\r\n }\r\n\r\n nextOtherStates(): string[] {\r\n if (!this.payment) {\r\n return [];\r\n }\r\n return this.payment.nextStates.filter(s => s !== 'Settled' && s !== 'Error');\r\n }\r\n}\r\n","import {\r\n Component,\r\n ComponentRef,\r\n EventEmitter,\r\n Input,\r\n OnDestroy,\r\n OnInit,\r\n Output,\r\n Type,\r\n ViewChild,\r\n ViewContainerRef,\r\n} from '@angular/core';\r\nimport {\r\n HistoryEntryComponentService,\r\n OrderDetailFragment,\r\n OrderHistoryEntryComponent,\r\n TimelineHistoryEntry,\r\n} from '@vendure/admin-ui/core';\r\n\r\n@Component({\r\n selector: 'vdr-order-history-entry-host',\r\n template: `<vdr-timeline-entry\r\n [displayType]=\"instance.getDisplayType(entry)\"\r\n [iconShape]=\"instance.getIconShape && instance.getIconShape(entry)\"\r\n [createdAt]=\"entry.createdAt\"\r\n [name]=\"instance.getName && instance.getName(entry)\"\r\n [featured]=\"instance.isFeatured(entry)\"\r\n [collapsed]=\"!expanded && !instance.isFeatured(entry)\"\r\n (expandClick)=\"expandClick.emit()\"\r\n >\r\n <div #portal></div>\r\n </vdr-timeline-entry>`,\r\n exportAs: 'historyEntry',\r\n})\r\nexport class OrderHistoryEntryHostComponent implements OnInit, OnDestroy {\r\n @Input() entry: TimelineHistoryEntry;\r\n @Input() order: OrderDetailFragment;\r\n @Input() expanded: boolean;\r\n @Output() expandClick = new EventEmitter<void>();\r\n @ViewChild('portal', { static: true, read: ViewContainerRef }) portalRef: ViewContainerRef;\r\n instance: OrderHistoryEntryComponent;\r\n private componentRef: ComponentRef<OrderHistoryEntryComponent>;\r\n\r\n constructor(private historyEntryComponentService: HistoryEntryComponentService) {}\r\n\r\n ngOnInit(): void {\r\n const componentType = this.historyEntryComponentService.getComponent(\r\n this.entry.type,\r\n ) as Type<OrderHistoryEntryComponent>;\r\n\r\n const componentRef = this.portalRef.createComponent(componentType);\r\n componentRef.instance.entry = this.entry;\r\n componentRef.instance.order = this.order;\r\n this.instance = componentRef.instance;\r\n this.componentRef = componentRef;\r\n }\r\n\r\n ngOnDestroy() {\r\n this.componentRef?.destroy();\r\n }\r\n}\r\n","<div class=\"entry-list\" [class.expanded]=\"expanded\">\r\n <vdr-timeline-entry iconShape=\"note\" displayType=\"muted\" [featured]=\"true\" [isFirst]=\"true\">\r\n <div class=\"note-entry\">\r\n <textarea [(ngModel)]=\"note\" name=\"note\" class=\"note\"></textarea>\r\n <button class=\"btn btn-secondary\" [disabled]=\"!note\" (click)=\"addNoteToOrder()\">\r\n {{ 'common.add-note' | translate }}\r\n </button>\r\n </div>\r\n <div class=\"visibility-select\">\r\n <clr-checkbox-wrapper>\r\n <input type=\"checkbox\" clrCheckbox [(ngModel)]=\"noteIsPrivate\" />\r\n <label>{{ 'order.note-is-private' | translate }}</label>\r\n </clr-checkbox-wrapper>\r\n <span *ngIf=\"noteIsPrivate\" class=\"private\">\r\n {{ 'order.note-only-visible-to-administrators' | translate }}\r\n </span>\r\n <span *ngIf=\"!noteIsPrivate\" class=\"public\">\r\n {{ 'order.note-visible-to-customer' | translate }}\r\n </span>\r\n </div>\r\n </vdr-timeline-entry>\r\n <ng-container *ngFor=\"let entry of history\">\r\n <vdr-order-history-entry-host\r\n *ngIf=\"hasCustomComponent(entry.type); else defaultComponents\"\r\n [order]=\"order\"\r\n [entry]=\"entry\"\r\n [expanded]=\"expanded\"\r\n (expandClick)=\"expanded = !expanded\"\r\n ></vdr-order-history-entry-host>\r\n <ng-template #defaultComponents>\r\n <vdr-timeline-entry\r\n [displayType]=\"getDisplayType(entry)\"\r\n [iconShape]=\"getTimelineIcon(entry)\"\r\n [createdAt]=\"entry.createdAt\"\r\n [name]=\"getName(entry)\"\r\n [featured]=\"isFeatured(entry)\"\r\n [collapsed]=\"!expanded && !isFeatured(entry)\"\r\n (expandClick)=\"expanded = !expanded\"\r\n >\r\n <ng-container [ngSwitch]=\"entry.type\">\r\n <ng-container *ngSwitchCase=\"type.ORDER_STATE_TRANSITION\">\r\n <div class=\"title\" *ngIf=\"entry.data.to === 'Delivered'\">\r\n {{ 'order.history-order-fulfilled' | translate }}\r\n </div>\r\n <div class=\"title\" *ngIf=\"entry.data.to === 'Cancelled'\">\r\n {{ 'order.history-order-cancelled' | translate }}\r\n </div>\r\n <ng-template [ngIf]=\"entry.data.to !== 'Cancelled' && entry.data.to !== 'Delivered'\">\r\n {{\r\n 'order.history-order-transition'\r\n | translate : { from: entry.data.from, to: entry.data.to }\r\n }}\r\n </ng-template>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"type.ORDER_MODIFIED\">\r\n <div class=\"title\">\r\n {{ 'order.history-order-modified' | translate }}\r\n </div>\r\n <div\r\n class=\"flex items-center\"\r\n *ngIf=\"getModification(entry.data.modificationId) as modification\"\r\n >\r\n {{ 'order.modify-order-price-difference' | translate }}:\r\n <strong>{{\r\n modification.priceChange | localeCurrency : order.currencyCode\r\n }}</strong>\r\n <vdr-chip colorType=\"success\" class=\"mx-1\" *ngIf=\"modification.isSettled\">{{\r\n 'order.modification-settled' | translate\r\n }}</vdr-chip>\r\n <vdr-chip colorType=\"error\" class=\"mx-1\" *ngIf=\"!modification.isSettled\">{{\r\n 'order.modification-not-settled' | translate\r\n }}</vdr-chip>\r\n <vdr-history-entry-detail>\r\n <vdr-modification-detail\r\n [order]=\"order\"\r\n [modification]=\"modification\"\r\n ></vdr-modification-detail>\r\n </vdr-history-entry-detail>\r\n </div>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"type.ORDER_PAYMENT_TRANSITION\">\r\n <ng-container *ngIf=\"entry.data.to === 'Settled'; else regularPaymentTransition\">\r\n <div class=\"title\">\r\n {{ 'order.history-payment-settled' | translate }}\r\n </div>\r\n <div class=\"flex items-center\">\r\n <vdr-chip *ngIf=\"getPayment(entry) as payment\" class=\"mr-1\">{{\r\n payment.amount | localeCurrency : order.currencyCode\r\n }}</vdr-chip>\r\n <vdr-history-entry-detail *ngIf=\"getPayment(entry) as payment\">\r\n <vdr-payment-detail\r\n [payment]=\"payment\"\r\n [currencyCode]=\"order.currencyCode\"\r\n ></vdr-payment-detail>\r\n </vdr-history-entry-detail>\r\n </div>\r\n </ng-container>\r\n <ng-template #regularPaymentTransition>\r\n {{\r\n 'order.history-payment-transition'\r\n | translate\r\n : {\r\n from: entry.data.from,\r\n to: entry.data.to,\r\n id: getPayment(entry)?.transactionId\r\n }\r\n }}\r\n </ng-template>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"type.ORDER_REFUND_TRANSITION\">\r\n <ng-container *ngIf=\"entry.data.to === 'Settled'; else regularRefundTransition\">\r\n <ng-container *ngIf=\"getRefund(entry) as refund\">\r\n <div class=\"title\">{{ 'order.refund' | translate }} #{{ refund.id }}</div>\r\n <div class=\"flex items-center\">\r\n <vdr-chip colorType=\"warning\" class=\"mr-1\">{{\r\n refund.total | localeCurrency : order.currencyCode\r\n }}</vdr-chip>\r\n <vdr-history-entry-detail>\r\n <vdr-labeled-data [label]=\"'order.cancellation-reason' | translate\">\r\n {{ entry.data.reason }}\r\n </vdr-labeled-data>\r\n <vdr-labeled-data [label]=\"'order.contents' | translate\">\r\n <vdr-simple-item-list\r\n [items]=\"getCancelledItems(refund.lines)\"\r\n ></vdr-simple-item-list>\r\n </vdr-labeled-data>\r\n </vdr-history-entry-detail>\r\n </div>\r\n </ng-container>\r\n </ng-container>\r\n <ng-template #regularRefundTransition>\r\n {{\r\n 'order.history-refund-transition'\r\n | translate\r\n : {\r\n from: entry.data.from,\r\n to: entry.data.to,\r\n id: entry.data.refundId\r\n }\r\n }}\r\n </ng-template>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"type.ORDER_CANCELLATION\">\r\n {{\r\n 'order.history-items-cancelled'\r\n | translate : { count: getCancelledQuantity(entry) }\r\n }}\r\n <vdr-history-entry-detail *ngIf=\"getCancelledItems(entry.data.lines) as items\">\r\n <vdr-labeled-data [label]=\"'order.cancellation-reason' | translate\">\r\n {{ entry.data.reason }}\r\n </vdr-labeled-data>\r\n <vdr-labeled-data [label]=\"'order.contents' | translate\">\r\n <vdr-simple-item-list [items]=\"items\"></vdr-simple-item-list>\r\n </vdr-labeled-data>\r\n <vdr-labeled-data [label]=\"'order.shipping-cancelled' | translate\">\r\n {{ entry.data.shippingCancelled }}\r\n </vdr-labeled-data>\r\n </vdr-history-entry-detail>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"type.ORDER_FULFILLMENT\">\r\n {{ 'order.history-fulfillment-created' | translate }}\r\n <vdr-history-entry-detail *ngIf=\"getFulfillment(entry) as fulfillment\">\r\n <vdr-fulfillment-detail\r\n [fulfillmentId]=\"fulfillment.id\"\r\n [order]=\"order\"\r\n ></vdr-fulfillment-detail>\r\n </vdr-history-entry-detail>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"type.ORDER_FULFILLMENT_TRANSITION\">\r\n <ng-container *ngIf=\"entry.data.to === 'Delivered'\">\r\n <div class=\"title\">\r\n {{ 'order.history-fulfillment-delivered' | translate }}\r\n </div>\r\n {{ 'order.tracking-code' | translate }}: {{ getFulfillment(entry)?.trackingCode }}\r\n </ng-container>\r\n <ng-container *ngIf=\"entry.data.to === 'Shipped'\">\r\n <div class=\"title\">\r\n {{ 'order.history-fulfillment-shipped' | translate }}\r\n </div>\r\n {{ 'order.tracking-code' | translate }}: {{ getFulfillment(entry)?.trackingCode }}\r\n </ng-container>\r\n <ng-container *ngIf=\"entry.data.to !== 'Delivered' && entry.data.to !== 'Shipped'\">\r\n {{\r\n 'order.history-fulfillment-transition'\r\n | translate : { from: entry.data.from, to: entry.data.to }\r\n }}\r\n </ng-container>\r\n <vdr-history-entry-detail *ngIf=\"getFulfillment(entry) as fulfillment\">\r\n <vdr-fulfillment-detail\r\n [fulfillmentId]=\"fulfillment.id\"\r\n [order]=\"order\"\r\n ></vdr-fulfillment-detail>\r\n </vdr-history-entry-detail>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"type.ORDER_NOTE\">\r\n <div class=\"flex\">\r\n <div class=\"note-text\">\r\n <span *ngIf=\"entry.isPublic\" class=\"note-visibility public\">{{\r\n 'common.public' | translate\r\n }}</span>\r\n <span *ngIf=\"!entry.isPublic\" class=\"note-visibility private\">{{\r\n 'common.private' | translate\r\n }}</span>\r\n {{ entry.data.note }}\r\n </div>\r\n <div class=\"flex-spacer\"></div>\r\n <vdr-dropdown>\r\n <button class=\"button-small ml-1\" vdrDropdownTrigger>\r\n <clr-icon shape=\"ellipsis-vertical\" size=\"12\"></clr-icon>\r\n </button>\r\n <vdr-dropdown-menu vdrPosition=\"bottom-right\">\r\n <button\r\n vdrDropdownItem\r\n (click)=\"updateNote.emit(entry)\"\r\n [disabled]=\"!('UpdateOrder' | hasPermission)\"\r\n >\r\n <clr-icon shape=\"edit\"></clr-icon>\r\n {{ 'common.edit' | translate }}\r\n </button>\r\n <div class=\"dropdown-divider\"></div>\r\n <button\r\n vdrDropdownItem\r\n (click)=\"deleteNote.emit(entry)\"\r\n [disabled]=\"!('UpdateOrder' | hasPermission)\"\r\n >\r\n <clr-icon shape=\"trash\" class=\"is-danger\"></clr-icon>\r\n {{ 'common.delete' | translate }}\r\n </button>\r\n </vdr-dropdown-menu>\r\n </vdr-dropdown>\r\n </div>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"type.ORDER_COUPON_APPLIED\">\r\n {{ 'order.history-coupon-code-applied' | translate }}:\r\n <vdr-chip>\r\n <a [routerLink]=\"['/marketing', 'promotions', entry.data.promotionId]\">{{\r\n entry.data.couponCode\r\n }}</a>\r\n </vdr-chip>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"type.ORDER_COUPON_REMOVED\">\r\n {{ 'order.history-coupon-code-removed' | translate }}:\r\n <vdr-chip\r\n ><span class=\"cancelled-coupon-code\">{{ entry.data.couponCode }}</span></vdr-chip\r\n >\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"type.ORDER_CUSTOMER_UPDATED\">\r\n <div class=\"title\">\r\n {{\r\n 'order.history-customer-updated'\r\n | translate : { newCustomerName: entry.data.newCustomerName }\r\n }}\r\n </div>\r\n <div class=\"flex\">\r\n <div class=\"note-text\">\r\n {{ entry.data.note }}\r\n </div>\r\n <div class=\"flex-spacer\"></div>\r\n <vdr-history-entry-detail>\r\n <vdr-labeled-data [label]=\"'order.previous-customer' | translate\">\r\n <a\r\n *ngIf=\"entry.data.previousCustomerId\"\r\n class=\"button-ghost\"\r\n [routerLink]=\"[\r\n '/customer',\r\n 'customers',\r\n entry.data.previousCustomerId\r\n ]\"\r\n >\r\n <clr-icon shape=\"user\" class=\"is-solid\"></clr-icon>\r\n <span>{{ entry.data.previousCustomerName }}</span>\r\n <clr-icon shape=\"arrow right\"></clr-icon>\r\n </a>\r\n </vdr-labeled-data>\r\n <vdr-labeled-data [label]=\"'order.new-customer' | translate\">\r\n <a\r\n *ngIf=\"entry.data.newCustomerId\"\r\n class=\"button-ghost\"\r\n [routerLink]=\"['/customer', 'customers', entry.data.newCustomerId]\"\r\n >\r\n <clr-icon shape=\"user\" class=\"is-solid\"></clr-icon>\r\n <span>{{ entry.data.newCustomerName }}</span>\r\n <clr-icon shape=\"arrow right\"></clr-icon>\r\n </a>\r\n </vdr-labeled-data>\r\n </vdr-history-entry-detail>\r\n </div>\r\n </ng-container>\r\n <ng-container *ngSwitchDefault>\r\n <div class=\"title\">\r\n {{ entry.type | translate }}\r\n </div>\r\n <vdr-history-entry-detail *ngIf=\"entry.data\">\r\n <vdr-object-tree [value]=\"entry.data\"></vdr-object-tree>\r\n </vdr-history-entry-detail>\r\n </ng-container>\r\n </ng-container>\r\n </vdr-timeline-entry>\r\n </ng-template>\r\n </ng-container>\r\n\r\n <vdr-timeline-entry [isLast]=\"true\" [createdAt]=\"order.createdAt\" [featured]=\"true\">\r\n <div class=\"title\">\r\n {{ 'order.history-order-created' | translate }}\r\n </div>\r\n </vdr-timeline-entry>\r\n</div>\r\n","import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from '@angular/core';\r\nimport {\r\n HistoryEntryComponentService,\r\n HistoryEntryType,\r\n OrderDetailFragment,\r\n TimelineDisplayType,\r\n TimelineHistoryEntry,\r\n} from '@vendure/admin-ui/core';\r\n\r\n@Component({\r\n selector: 'vdr-order-history',\r\n templateUrl: './order-history.component.html',\r\n styleUrls: ['./order-history.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class OrderHistoryComponent {\r\n @Input() order: OrderDetailFragment;\r\n @Input() history: TimelineHistoryEntry[];\r\n @Output() addNote = new EventEmitter<{ note: string; isPublic: boolean }>();\r\n @Output() updateNote = new EventEmitter<TimelineHistoryEntry>();\r\n @Output() deleteNote = new EventEmitter<TimelineHistoryEntry>();\r\n note = '';\r\n noteIsPrivate = true;\r\n expanded = false;\r\n readonly type = HistoryEntryType;\r\n\r\n constructor(private historyEntryComponentService: HistoryEntryComponentService) {}\r\n\r\n hasCustomComponent(type: string): boolean {\r\n return !!this.historyEntryComponentService.getComponent(type);\r\n }\r\n\r\n getDisplayType(entry: TimelineHistoryEntry): TimelineDisplayType {\r\n if (entry.type === HistoryEntryType.ORDER_STATE_TRANSITION) {\r\n if (entry.data.to === 'Delivered') {\r\n return 'success';\r\n }\r\n if (entry.data.to === 'Cancelled') {\r\n return 'error';\r\n }\r\n }\r\n if (entry.type === HistoryEntryType.ORDER_FULFILLMENT_TRANSITION) {\r\n if (entry.data.to === 'Delivered') {\r\n return 'success';\r\n }\r\n }\r\n if (entry.type === HistoryEntryType.ORDER_PAYMENT_TRANSITION) {\r\n if (entry.data.to === 'Declined' || entry.data.to === 'Cancelled') {\r\n return 'error';\r\n }\r\n }\r\n if (entry.type === HistoryEntryType.ORDER_CANCELLATION) {\r\n return 'warning';\r\n }\r\n if (entry.type === HistoryEntryType.ORDER_REFUND_TRANSITION) {\r\n return 'warning';\r\n }\r\n return 'default';\r\n }\r\n\r\n getTimelineIcon(entry: TimelineHistoryEntry) {\r\n if (entry.type === HistoryEntryType.ORDER_STATE_TRANSITION) {\r\n if (entry.data.to === 'Delivered') {\r\n return ['success-standard', 'is-solid'];\r\n }\r\n if (entry.data.to === 'Cancelled') {\r\n return 'ban';\r\n }\r\n }\r\n if (entry.type === HistoryEntryType.ORDER_PAYMENT_TRANSITION) {\r\n if (entry.data.to === 'Settled') {\r\n return 'credit-card';\r\n }\r\n }\r\n if (entry.type === HistoryEntryType.ORDER_REFUND_TRANSITION) {\r\n if (entry.data.to === 'Settled') {\r\n return 'credit-card';\r\n }\r\n }\r\n if (entry.type === HistoryEntryType.ORDER_NOTE) {\r\n return 'note';\r\n }\r\n if (entry.type === HistoryEntryType.ORDER_MODIFIED) {\r\n return 'pencil';\r\n }\r\n if (entry.type === HistoryEntryType.ORDER_CUSTOMER_UPDATED) {\r\n return 'switch';\r\n }\r\n if (entry.type === HistoryEntryType.ORDER_FULFILLMENT_TRANSITION) {\r\n if (entry.data.to === 'Shipped') {\r\n return 'truck';\r\n }\r\n if (entry.data.to === 'Delivered') {\r\n return 'truck';\r\n }\r\n }\r\n }\r\n\r\n isFeatured(entry: TimelineHistoryEntry): boolean {\r\n switch (entry.type) {\r\n case HistoryEntryType.ORDER_STATE_TRANSITION: {\r\n return (\r\n entry.data.to === 'Delivered' ||\r\n entry.data.to === 'Cancelled' ||\r\n entry.data.to === 'Settled'\r\n );\r\n }\r\n case HistoryEntryType.ORDER_REFUND_TRANSITION:\r\n return entry.data.to === 'Settled';\r\n case HistoryEntryType.ORDER_PAYMENT_TRANSITION:\r\n return entry.data.to === 'Settled' || entry.data.to === 'Cancelled';\r\n case HistoryEntryType.ORDER_FULFILLMENT_TRANSITION:\r\n return entry.data.to === 'Delivered' || entry.data.to === 'Shipped';\r\n case HistoryEntryType.ORDER_NOTE:\r\n case HistoryEntryType.ORDER_MODIFIED:\r\n case HistoryEntryType.ORDER_CUSTOMER_UPDATED:\r\n return true;\r\n default:\r\n return false;\r\n }\r\n }\r\n\r\n getFulfillment(\r\n entry: TimelineHistoryEntry,\r\n ): NonNullable<OrderDetailFragment['fulfillments']>[number] | undefined {\r\n if (\r\n (entry.type === HistoryEntryType.ORDER_FULFILLMENT ||\r\n entry.type === HistoryEntryType.ORDER_FULFILLMENT_TRANSITION) &&\r\n this.order.fulfillments\r\n ) {\r\n return this.order.fulfillments.find(f => f.id === entry.data.fulfillmentId);\r\n }\r\n }\r\n\r\n getPayment(\r\n entry: TimelineHistoryEntry,\r\n ): NonNullable<OrderDetailFragment['payments']>[number] | undefined {\r\n if (entry.type === HistoryEntryType.ORDER_PAYMENT_TRANSITION && this.order.payments) {\r\n return this.order.payments.find(p => p.id === entry.data.paymentId);\r\n }\r\n }\r\n\r\n getRefund(\r\n entry: TimelineHistoryEntry,\r\n ): NonNullable<OrderDetailFragment['payments']>[number]['refunds'][number] | undefined {\r\n if (entry.type === HistoryEntryType.ORDER_REFUND_TRANSITION && this.order.payments) {\r\n const allRefunds = this.order.payments.reduce(\r\n (refunds, payment) => refunds.concat(payment.refunds),\r\n [] as NonNullable<OrderDetailFragment['payments']>[number]['refunds'],\r\n );\r\n return allRefunds.find(r => r.id === entry.data.refundId);\r\n }\r\n }\r\n\r\n getCancelledQuantity(entry: TimelineHistoryEntry): number {\r\n return entry.data.lines.reduce((total, line) => total + line.quantity, 0);\r\n }\r\n\r\n getCancelledItems(\r\n cancellationLines: Array<{ orderLineId: string; quantity: number }>,\r\n ): Array<{ name: string; quantity: number }> {\r\n const itemMap = new Map<string, number>();\r\n for (const line of this.order.lines) {\r\n const cancellationLine = cancellationLines.find(l => l.orderLineId === line.id);\r\n if (cancellationLine) {\r\n const count = itemMap.get(line.productVariant.name);\r\n itemMap.set(line.productVariant.name, cancellationLine.quantity);\r\n }\r\n }\r\n return Array.from(itemMap.entries()).map(([name, quantity]) => ({ name, quantity }));\r\n }\r\n\r\n getModification(id: string) {\r\n return this.order.modifications.find(m => m.id === id);\r\n }\r\n\r\n getName(entry: TimelineHistoryEntry): string {\r\n const { administrator } = entry;\r\n if (administrator) {\r\n return `${administrator.firstName} ${administrator.lastName}`;\r\n } else {\r\n const customer = this.order.customer;\r\n if (customer) {\r\n return `${customer.firstName} ${customer.lastName}`;\r\n }\r\n }\r\n return '';\r\n }\r\n\r\n addNoteToOrder() {\r\n this.addNote.emit({ note: this.note, isPublic: !this.noteIsPrivate });\r\n this.note = '';\r\n this.noteIsPrivate = true;\r\n }\r\n}\r\n","import { gql } from 'apollo-angular';\r\n\r\nexport const GET_SELLER_ORDERS = gql`\r\n query GetSellerOrders($orderId: ID!) {\r\n order(id: $orderId) {\r\n id\r\n sellerOrders {\r\n id\r\n code\r\n state\r\n orderPlacedAt\r\n currencyCode\r\n totalWithTax\r\n channels {\r\n id\r\n code\r\n seller {\r\n id\r\n name\r\n }\r\n }\r\n }\r\n }\r\n }\r\n`;\r\n","<vdr-card [title]=\"'order.seller-orders' | translate\">\r\n <div class=\"form-grid\">\r\n <div *ngFor=\"let order of sellerOrders$ | async\">\r\n <a [routerLink]=\"['seller-orders', order.id]\" class=\"button-ghost mb-1\"\r\n >{{ order.code }} <clr-icon shape=\"arrow right\"></clr-icon\r\n ></a>\r\n <vdr-labeled-data [label]=\"'order.state' | translate\">\r\n <vdr-order-state-label [state]=\"order.state\"></vdr-order-state-label>\r\n </vdr-labeled-data>\r\n <vdr-labeled-data *ngIf=\"getSeller(order) as seller\" [label]=\"'common.seller' | translate\">\r\n {{ seller.name }}\r\n </vdr-labeled-data>\r\n <vdr-labeled-data *ngIf=\"getSeller(order) as seller\" [label]=\"'order.total' | translate\">\r\n {{ order.totalWithTax | localeCurrency : order.currencyCode }}\r\n </vdr-labeled-data>\r\n </div>\r\n </div>\r\n</vdr-card>\r\n","import { ChangeDetectionStrategy, Component, Input, OnInit } from '@angular/core';\r\nimport { Router } from '@angular/router';\r\nimport {\r\n ChannelService,\r\n DataService,\r\n GetSellerOrdersQuery,\r\n GetSellerOrdersQueryVariables,\r\n} from '@vendure/admin-ui/core';\r\nimport { DEFAULT_CHANNEL_CODE } from '@vendure/common/lib/shared-constants';\r\nimport { Observable } from 'rxjs';\r\n\r\nimport { GET_SELLER_ORDERS } from './seller-orders-card.graphql';\r\n\r\ntype SellerOrder = NonNullable<NonNullable<GetSellerOrdersQuery['order']>['sellerOrders']>[number];\r\n\r\n@Component({\r\n selector: 'vdr-seller-orders-card',\r\n templateUrl: './seller-orders-card.component.html',\r\n styleUrls: ['./seller-orders-card.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class SellerOrdersCardComponent implements OnInit {\r\n @Input() orderId: string;\r\n\r\n sellerOrders$: Observable<SellerOrder[]>;\r\n\r\n constructor(\r\n private router: Router,\r\n private dataService: DataService,\r\n private channelService: ChannelService,\r\n ) {}\r\n\r\n ngOnInit() {\r\n this.sellerOrders$ = this.dataService\r\n .query<GetSellerOrdersQuery, GetSellerOrdersQueryVariables>(GET_SELLER_ORDERS, {\r\n orderId: this.orderId,\r\n })\r\n .mapSingle(({ order }) => order?.sellerOrders ?? []);\r\n }\r\n\r\n getSeller(order: SellerOrder) {\r\n const sellerChannel = order.channels.find(channel => channel.code !== DEFAULT_CHANNEL_CODE);\r\n return sellerChannel?.seller;\r\n }\r\n\r\n navigateToSellerOrder(order: SellerOrder) {\r\n this.router.navigate(['/orders', order.id]);\r\n }\r\n}\r\n","<vdr-page-block>\r\n <vdr-action-bar *ngIf=\"entity$ | async as order\">\r\n <vdr-ab-left> </vdr-ab-left>\r\n\r\n <vdr-ab-right>\r\n <vdr-action-bar-items locationId=\"order-detail\"></vdr-action-bar-items>\r\n <button\r\n class=\"button primary mr-1\"\r\n *ngIf=\"\r\n order.type !== 'Aggregate' &&\r\n (order.state === 'ArrangingPayment' || order.state === 'ArrangingAdditionalPayment') &&\r\n (hasUnsettledModifications(order) || 0 < outstandingPaymentAmount(order))\r\n \"\r\n (click)=\"addManualPayment(order)\"\r\n >\r\n {{ 'order.add-payment-to-order' | translate }}\r\n ({{ outstandingPaymentAmount(order) | localeCurrency : order.currencyCode }})\r\n </button>\r\n <button\r\n class=\"button primary mr-1\"\r\n *ngIf=\"\r\n order.type !== 'Aggregate' &&\r\n order.active === false &&\r\n order.state !== 'ArrangingAdditionalPayment' &&\r\n order.state !== 'ArrangingPayment' &&\r\n 0 < outstandingPaymentAmount(order)\r\n \"\r\n (click)=\"transitionToState('ArrangingAdditionalPayment')\"\r\n >\r\n {{ 'order.arrange-additional-payment' | translate }}\r\n </button>\r\n <button\r\n *ngIf=\"order.type !== 'Aggregate'\"\r\n class=\"button primary mr-1\"\r\n (click)=\"fulfillOrder()\"\r\n [disabled]=\"!canAddFulfillment(order)\"\r\n >\r\n {{ 'order.fulfill-order' | translate }}\r\n </button>\r\n <vdr-action-bar-dropdown-menu [alwaysShow]=\"true\" locationId=\"order-detail\">\r\n <ng-container *ngIf=\"order.type !== 'Aggregate' && order.nextStates.includes('Modifying')\">\r\n <button type=\"button\" vdrDropdownItem (click)=\"transitionToModifying()\">\r\n <clr-icon shape=\"pencil\"></clr-icon>\r\n {{ 'order.modify-order' | translate }}\r\n </button>\r\n <div class=\"dropdown-divider\"></div>\r\n </ng-container>\r\n <button\r\n type=\"button\"\r\n vdrDropdownItem\r\n *ngIf=\"order.type !== 'Aggregate' && order.nextStates.includes('Cancelled')\"\r\n (click)=\"cancelOrRefund(order)\"\r\n >\r\n <clr-icon shape=\"error-standard\" class=\"is-error\"></clr-icon>\r\n <ng-container *ngIf=\"orderHasSettledPayments(order); else cancelOnly\">\r\n {{ 'order.refund-and-cancel-order' | translate }}\r\n </ng-container>\r\n <ng-template #cancelOnly>\r\n {{ 'order.cancel-order' | translate }}\r\n </ng-template>\r\n </button>\r\n\r\n <ng-container *ngIf=\"(nextStates$ | async)?.length\">\r\n <div class=\"dropdown-divider\"></div>\r\n <button\r\n *ngFor=\"let nextState of nextStates$ | async\"\r\n type=\"button\"\r\n vdrDropdownItem\r\n (click)=\"transitionToState(nextState)\"\r\n >\r\n <clr-icon shape=\"step-forward-2\"></clr-icon>\r\n {{\r\n 'order.transition-to-state'\r\n | translate : { state: (nextState | stateI18nToken | translate) }\r\n }}\r\n </button>\r\n </ng-container>\r\n <div class=\"dropdown-divider\"></div>\r\n <button type=\"button\" vdrDropdownItem (click)=\"manuallyTransitionToState(order)\">\r\n <clr-icon shape=\"step-forward-2\" class=\"is-warning\"></clr-icon>\r\n {{ 'order.manually-transition-to-state' | translate }}\r\n </button>\r\n </vdr-action-bar-dropdown-menu>\r\n </vdr-ab-right>\r\n </vdr-action-bar>\r\n</vdr-page-block>\r\n\r\n<vdr-page-detail-layout *ngIf=\"entity$ | async as order\">\r\n <vdr-page-detail-sidebar>\r\n <vdr-card [title]=\"'order.state' | translate\">\r\n <ng-template vdrCardControls>\r\n <button\r\n class=\"button-small\"\r\n (click)=\"openStateDiagram()\"\r\n [title]=\"'order.order-state-diagram' | translate\"\r\n >\r\n <clr-icon shape=\"list\"></clr-icon>\r\n </button>\r\n </ng-template>\r\n <vdr-order-state-label [state]=\"order.state\"></vdr-order-state-label>\r\n </vdr-card>\r\n <vdr-card [title]=\"'order.customer' | translate\">\r\n <ng-template vdrCardControls>\r\n <button\r\n *vdrIfPermissions=\"['UpdateOrder', 'ReadCustomer']\"\r\n class=\"button-small\"\r\n (click)=\"setOrderCustomer()\"\r\n [title]=\"'order.assign-order-to-another-customer' | translate\"\r\n >\r\n <clr-icon shape=\"switch\"></clr-icon>\r\n </button>\r\n </ng-template>\r\n <vdr-customer-label [customer]=\"order.customer\"></vdr-customer-label>\r\n <vdr-labeled-data\r\n class=\"mt-2\"\r\n [label]=\"'order.shipping-address' | translate\"\r\n *ngIf=\"getOrderAddressLines(order.shippingAddress).length\"\r\n >\r\n <vdr-formatted-address [address]=\"order.shippingAddress\" class=\"mt-1\"></vdr-formatted-address>\r\n </vdr-labeled-data>\r\n <vdr-labeled-data\r\n [label]=\"'order.billing-address' | translate\"\r\n *ngIf=\"getOrderAddressLines(order.billingAddress).length\"\r\n >\r\n <vdr-formatted-address [address]=\"order.billingAddress\" class=\"mt-1\"></vdr-formatted-address>\r\n </vdr-labeled-data>\r\n </vdr-card>\r\n <vdr-card [title]=\"'order.payments' | translate\" *ngIf=\"order.payments?.length\">\r\n <vdr-order-payment-card\r\n *ngFor=\"let payment of order.payments\"\r\n [currencyCode]=\"order.currencyCode\"\r\n [payment]=\"payment\"\r\n (settlePayment)=\"settlePayment($event)\"\r\n (transitionPaymentState)=\"transitionPaymentState($event)\"\r\n (settleRefund)=\"settleRefund($event)\"\r\n ></vdr-order-payment-card>\r\n </vdr-card>\r\n <vdr-card *ngIf=\"order.fulfillments?.length\">\r\n <vdr-fulfillment-card\r\n *ngFor=\"let fulfillment of order.fulfillments\"\r\n [fulfillment]=\"fulfillment\"\r\n [order]=\"order\"\r\n (transitionState)=\"transitionFulfillment(fulfillment.id, $event)\"\r\n ></vdr-fulfillment-card>\r\n </vdr-card>\r\n <vdr-card>\r\n <vdr-page-entity-info *ngIf=\"entity$ | async as entity\" [entity]=\"entity\" />\r\n </vdr-card>\r\n </vdr-page-detail-sidebar>\r\n\r\n <vdr-page-block>\r\n <vdr-seller-orders-card\r\n class=\"mb-2\"\r\n *ngIf=\"order.sellerOrders.length\"\r\n [orderId]=\"order.id\"\r\n ></vdr-seller-orders-card>\r\n <vdr-card [paddingX]=\"false\">\r\n <vdr-order-table\r\n [order]=\"order\"\r\n [orderLineCustomFields]=\"orderLineCustomFields\"\r\n ></vdr-order-table>\r\n </vdr-card>\r\n <vdr-card [title]=\"'order.tax-summary' | translate\" [paddingX]=\"false\">\r\n <table class=\"table\">\r\n <thead>\r\n <tr>\r\n <th>{{ 'common.description' | translate }}</th>\r\n <th>{{ 'order.tax-rate' | translate }}</th>\r\n <th>{{ 'order.tax-base' | translate }}</th>\r\n <th>{{ 'order.tax-total' | translate }}</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr *ngFor=\"let row of order.taxSummary\">\r\n <td>{{ row.description }}</td>\r\n <td>{{ row.taxRate / 100 | percent : '0.0-3' }}</td>\r\n <td>{{ row.taxBase | localeCurrency : order.currencyCode }}</td>\r\n <td>{{ row.taxTotal | localeCurrency : order.currencyCode }}</td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n </vdr-card>\r\n <vdr-card [title]=\"'common.custom-fields' | translate\" *ngIf=\"customFields.length\">\r\n <vdr-tabbed-custom-fields\r\n entityName=\"Order\"\r\n [customFields]=\"customFields\"\r\n [customFieldsFormGroup]=\"detailForm.get('customFields')\"\r\n [readonly]=\"!('UpdateOrder' | hasPermission)\"\r\n />\r\n <button\r\n class=\"button primary\"\r\n (click)=\"updateCustomFields()\"\r\n [disabled]=\"\r\n detailForm.get('customFields')?.pristine || detailForm.get('customFields')?.invalid\r\n \"\r\n >\r\n {{ 'common.update' | translate }}\r\n </button>\r\n </vdr-card>\r\n <vdr-custom-detail-component-host\r\n locationId=\"order-detail\"\r\n [entity$]=\"entity$\"\r\n [detailForm]=\"detailForm\"\r\n ></vdr-custom-detail-component-host>\r\n\r\n <vdr-card [title]=\"'order.order-history' | translate\">\r\n <vdr-order-history\r\n [order]=\"order\"\r\n [history]=\"history$ | async\"\r\n (addNote)=\"addNote($event)\"\r\n (updateNote)=\"updateNote($event)\"\r\n (deleteNote)=\"deleteNote($event)\"\r\n ></vdr-order-history>\r\n </vdr-card>\r\n </vdr-page-block>\r\n</vdr-page-detail-layout>\r\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, OnDestroy, OnInit } from '@angular/core';\r\nimport { FormBuilder, FormGroup } from '@angular/forms';\r\nimport { marker as _ } from '@biesbjerg/ngx-translate-extract-marker';\r\nimport {\r\n DataService,\r\n EditNoteDialogComponent,\r\n FulfillmentFragment,\r\n getCustomFieldsDefaults,\r\n GetOrderHistoryQuery,\r\n GetOrderQuery,\r\n ModalService,\r\n NotificationService,\r\n ORDER_DETAIL_FRAGMENT,\r\n OrderDetailFragment,\r\n OrderDetailQueryDocument,\r\n Refund,\r\n SetOrderCustomerDocument,\r\n SortOrder,\r\n TimelineHistoryEntry,\r\n TypedBaseDetailComponent,\r\n} from '@vendure/admin-ui/core';\r\nimport { assertNever, summate } from '@vendure/common/lib/shared-utils';\r\nimport { gql } from 'apollo-angular';\r\nimport { EMPTY, forkJoin, Observable, of, Subject } from 'rxjs';\r\nimport { map, mapTo, startWith, switchMap, take } from 'rxjs/operators';\r\n\r\nimport { OrderTransitionService } from '../../providers/order-transition.service';\r\nimport { AddManualPaymentDialogComponent } from '../add-manual-payment-dialog/add-manual-payment-dialog.component';\r\nimport { CancelOrderDialogComponent } from '../cancel-order-dialog/cancel-order-dialog.component';\r\nimport { FulfillOrderDialogComponent } from '../fulfill-order-dialog/fulfill-order-dialog.component';\r\nimport { OrderProcessGraphDialogComponent } from '../order-process-graph-dialog/order-process-graph-dialog.component';\r\nimport { RefundOrderDialogComponent } from '../refund-order-dialog/refund-order-dialog.component';\r\nimport { SelectCustomerDialogComponent } from '../select-customer-dialog/select-customer-dialog.component';\r\nimport { SettleRefundDialogComponent } from '../settle-refund-dialog/settle-refund-dialog.component';\r\n\r\ntype Payment = NonNullable<OrderDetailFragment['payments']>[number];\r\n\r\nexport const ORDER_DETAIL_QUERY = gql`\r\n query OrderDetailQuery($id: ID!) {\r\n order(id: $id) {\r\n ...OrderDetail\r\n }\r\n }\r\n ${ORDER_DETAIL_FRAGMENT}\r\n`;\r\n\r\nexport const SET_ORDER_CUSTOMER_MUTATION = gql`\r\n mutation SetOrderCustomer($input: SetOrderCustomerInput!) {\r\n setOrderCustomer(input: $input) {\r\n id\r\n customer {\r\n id\r\n firstName\r\n lastName\r\n emailAddress\r\n }\r\n }\r\n }\r\n`;\r\n\r\n@Component({\r\n selector: 'vdr-order-detail',\r\n templateUrl: './order-detail.component.html',\r\n styleUrls: ['./order-detail.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class OrderDetailComponent\r\n extends TypedBaseDetailComponent<typeof OrderDetailQueryDocument, 'order'>\r\n implements OnInit, OnDestroy\r\n{\r\n customFields = this.getCustomFieldConfig('Order');\r\n orderLineCustomFields = this.getCustomFieldConfig('OrderLine');\r\n detailForm = new FormGroup({\r\n customFields: this.formBuilder.group(getCustomFieldsDefaults(this.customFields)),\r\n });\r\n history$: Observable<NonNullable<GetOrderHistoryQuery['order']>['history']['items'] | undefined>;\r\n nextStates$: Observable<string[]>;\r\n fetchHistory = new Subject<void>();\r\n private readonly defaultStates = [\r\n 'AddingItems',\r\n 'ArrangingPayment',\r\n 'PaymentAuthorized',\r\n 'PaymentSettled',\r\n 'PartiallyShipped',\r\n 'Shipped',\r\n 'PartiallyDelivered',\r\n 'Delivered',\r\n 'Cancelled',\r\n 'Modifying',\r\n 'ArrangingAdditionalPayment',\r\n ];\r\n\r\n constructor(\r\n private changeDetector: ChangeDetectorRef,\r\n protected dataService: DataService,\r\n private notificationService: NotificationService,\r\n private modalService: ModalService,\r\n private orderTransitionService: OrderTransitionService,\r\n private formBuilder: FormBuilder,\r\n ) {\r\n super();\r\n }\r\n\r\n ngOnInit() {\r\n this.init();\r\n this.entity$.pipe(take(1)).subscribe(order => {\r\n if (order.state === 'Modifying') {\r\n this.router.navigate(['./', 'modify'], { relativeTo: this.route });\r\n }\r\n });\r\n this.history$ = this.fetchHistory.pipe(\r\n startWith(null),\r\n switchMap(() =>\r\n this.dataService.order\r\n .getOrderHistory(this.id, {\r\n sort: {\r\n createdAt: SortOrder.DESC,\r\n },\r\n })\r\n .mapStream(data => data.order?.history.items),\r\n ),\r\n );\r\n this.nextStates$ = this.entity$.pipe(\r\n map(order => {\r\n const isInCustomState = !this.defaultStates.includes(order.state);\r\n return isInCustomState\r\n ? order.nextStates\r\n : order.nextStates.filter(s => !this.defaultStates.includes(s));\r\n }),\r\n );\r\n }\r\n\r\n ngOnDestroy() {\r\n this.destroy();\r\n }\r\n\r\n openStateDiagram() {\r\n this.entity$\r\n .pipe(\r\n take(1),\r\n switchMap(order =>\r\n this.modalService.fromComponent(OrderProcessGraphDialogComponent, {\r\n closable: true,\r\n locals: {\r\n activeState: order.state,\r\n },\r\n }),\r\n ),\r\n )\r\n .subscribe();\r\n }\r\n\r\n setOrderCustomer() {\r\n this.modalService\r\n .fromComponent(SelectCustomerDialogComponent, {\r\n locals: {\r\n canCreateNew: false,\r\n includeNoteInput: true,\r\n title: _('order.assign-order-to-another-customer'),\r\n },\r\n })\r\n .pipe(\r\n switchMap(result => {\r\n function isExisting(input: any): input is { id: string } {\r\n return typeof input === 'object' && !!input.id;\r\n }\r\n if (isExisting(result)) {\r\n return this.dataService.mutate(SetOrderCustomerDocument, {\r\n input: {\r\n customerId: result.id,\r\n orderId: this.id,\r\n note: result.note,\r\n },\r\n });\r\n } else {\r\n return EMPTY;\r\n }\r\n }),\r\n switchMap(result => this.refetchOrder(result)),\r\n )\r\n .subscribe(result => {\r\n if (result) {\r\n this.notificationService.success(_('order.set-customer-success'));\r\n }\r\n });\r\n }\r\n\r\n transitionToState(state: string) {\r\n this.dataService.order.transitionToState(this.id, state).subscribe(({ transitionOrderToState }) => {\r\n switch (transitionOrderToState?.__typename) {\r\n case 'Order':\r\n this.notificationService.success(_('order.transitioned-to-state-success'), { state });\r\n this.fetchHistory.next();\r\n break;\r\n case 'OrderStateTransitionError':\r\n this.notificationService.error(transitionOrderToState.transitionError);\r\n }\r\n });\r\n }\r\n\r\n manuallyTransitionToState(order: OrderDetailFragment) {\r\n this.orderTransitionService\r\n .manuallyTransitionToState({\r\n orderId: order.id,\r\n nextStates: order.nextStates,\r\n cancellable: true,\r\n message: _('order.manually-transition-to-state-message'),\r\n retry: 0,\r\n })\r\n .subscribe();\r\n }\r\n\r\n transitionToModifying() {\r\n this.dataService.order\r\n .transitionToState(this.id, 'Modifying')\r\n .subscribe(({ transitionOrderToState }) => {\r\n switch (transitionOrderToState?.__typename) {\r\n case 'Order':\r\n this.router.navigate(['./modify'], { relativeTo: this.route });\r\n break;\r\n case 'OrderStateTransitionError':\r\n this.notificationService.error(transitionOrderToState.transitionError);\r\n }\r\n });\r\n }\r\n\r\n updateCustomFields() {\r\n this.dataService.order\r\n .updateOrderCustomFields({\r\n id: this.id,\r\n customFields: this.detailForm.value.customFields,\r\n })\r\n .subscribe(() => {\r\n this.notificationService.success(_('common.notify-update-success'), { entity: 'Order' });\r\n });\r\n }\r\n\r\n getOrderAddressLines(orderAddress?: { [key: string]: string }): string[] {\r\n if (!orderAddress) {\r\n return [];\r\n }\r\n return Object.values(orderAddress)\r\n .filter(val => val !== 'OrderAddress')\r\n .filter(line => !!line);\r\n }\r\n\r\n settlePayment(payment: Payment) {\r\n this.dataService.order.settlePayment(payment.id).subscribe(({ settlePayment }) => {\r\n switch (settlePayment.__typename) {\r\n case 'Payment':\r\n if (settlePayment.state === 'Settled') {\r\n this.notificationService.success(_('order.settle-payment-success'));\r\n } else {\r\n this.notificationService.error(_('order.settle-payment-error'));\r\n }\r\n this.dataService.order.getOrder(this.id).single$.subscribe();\r\n this.fetchHistory.next();\r\n break;\r\n case 'OrderStateTransitionError':\r\n case 'PaymentStateTransitionError':\r\n case 'SettlePaymentError':\r\n this.notificationService.error(settlePayment.message);\r\n }\r\n });\r\n }\r\n\r\n transitionPaymentState({ payment, state }: { payment: Payment; state: string }) {\r\n if (state === 'Cancelled') {\r\n this.dataService.order.cancelPayment(payment.id).subscribe(({ cancelPayment }) => {\r\n switch (cancelPayment.__typename) {\r\n case 'Payment':\r\n this.notificationService.success(_('order.transitioned-payment-to-state-success'), {\r\n state,\r\n });\r\n this.dataService.order.getOrder(this.id).single$.subscribe();\r\n this.fetchHistory.next();\r\n break;\r\n case 'PaymentStateTransitionError':\r\n this.notificationService.error(cancelPayment.transitionError);\r\n break;\r\n case 'CancelPaymentError':\r\n this.notificationService.error(cancelPayment.paymentErrorMessage);\r\n break;\r\n }\r\n });\r\n } else {\r\n this.dataService.order\r\n .transitionPaymentToState(payment.id, state)\r\n .subscribe(({ transitionPaymentToState }) => {\r\n switch (transitionPaymentToState.__typename) {\r\n case 'Payment':\r\n this.notificationService.success(\r\n _('order.transitioned-payment-to-state-success'),\r\n {\r\n state,\r\n },\r\n );\r\n this.dataService.order.getOrder(this.id).single$.subscribe();\r\n this.fetchHistory.next();\r\n break;\r\n case 'PaymentStateTransitionError':\r\n this.notificationService.error(transitionPaymentToState.message);\r\n break;\r\n }\r\n });\r\n }\r\n }\r\n\r\n canAddFulfillment(order: OrderDetailFragment): boolean {\r\n const allFulfillmentLines: FulfillmentFragment['lines'] = (order.fulfillments ?? [])\r\n .filter(fulfillment => fulfillment.state !== 'Cancelled')\r\n .reduce((all, fulfillment) => [...all, ...fulfillment.lines], [] as FulfillmentFragment['lines']);\r\n let allItemsFulfilled = true;\r\n for (const line of order.lines) {\r\n const totalFulfilledCount = allFulfillmentLines\r\n .filter(row => row.orderLineId === line.id)\r\n .reduce((sum, row) => sum + row.quantity, 0);\r\n if (totalFulfilledCount < line.quantity) {\r\n allItemsFulfilled = false;\r\n }\r\n }\r\n return (\r\n !allItemsFulfilled &&\r\n !this.hasUnsettledModifications(order) &&\r\n this.outstandingPaymentAmount(order) === 0 &&\r\n (order.nextStates.includes('Shipped') ||\r\n order.nextStates.includes('PartiallyShipped') ||\r\n order.nextStates.includes('Delivered'))\r\n );\r\n }\r\n\r\n hasUnsettledModifications(order: OrderDetailFragment): boolean {\r\n return 0 < order.modifications.filter(m => !m.isSettled).length;\r\n }\r\n\r\n getOutstandingModificationAmount(order: OrderDetailFragment): number {\r\n return summate(\r\n order.modifications.filter(m => !m.isSettled),\r\n 'priceChange',\r\n );\r\n }\r\n\r\n outstandingPaymentAmount(order: OrderDetailFragment): number {\r\n const paymentIsValid = (p: Payment): boolean =>\r\n p.state !== 'Cancelled' && p.state !== 'Declined' && p.state !== 'Error';\r\n\r\n let amountCovered = 0;\r\n for (const payment of order.payments?.filter(paymentIsValid) ?? []) {\r\n const refunds = payment.refunds.filter(r => r.state !== 'Failed') ?? [];\r\n const refundsTotal = summate(refunds as Array<Required<Refund>>, 'total');\r\n amountCovered += payment.amount - refundsTotal;\r\n }\r\n return order.totalWithTax - amountCovered;\r\n }\r\n\r\n addManualPayment(order: OrderDetailFragment) {\r\n const priorState = order.state;\r\n this.modalService\r\n .fromComponent(AddManualPaymentDialogComponent, {\r\n closable: true,\r\n locals: {\r\n outstandingAmount: this.outstandingPaymentAmount(order),\r\n currencyCode: order.currencyCode,\r\n },\r\n })\r\n .pipe(\r\n switchMap(result => {\r\n if (result) {\r\n return this.dataService.order.addManualPaymentToOrder({\r\n orderId: this.id,\r\n transactionId: result.transactionId,\r\n method: result.method,\r\n metadata: result.metadata || {},\r\n });\r\n } else {\r\n return EMPTY;\r\n }\r\n }),\r\n switchMap(({ addManualPaymentToOrder }) => {\r\n switch (addManualPaymentToOrder.__typename) {\r\n case 'Order':\r\n this.notificationService.success(_('order.add-payment-to-order-success'));\r\n if (priorState === 'ArrangingAdditionalPayment') {\r\n return this.orderTransitionService.transitionToPreModifyingState(\r\n order.id,\r\n order.nextStates,\r\n );\r\n } else {\r\n return of('PaymentSettled');\r\n }\r\n case 'ManualPaymentStateError':\r\n this.notificationService.error(addManualPaymentToOrder.message);\r\n return EMPTY;\r\n default:\r\n return EMPTY;\r\n }\r\n }),\r\n )\r\n .subscribe(result => {\r\n if (result) {\r\n this.refetchOrder({ result });\r\n }\r\n });\r\n }\r\n\r\n fulfillOrder() {\r\n this.entity$\r\n .pipe(\r\n take(1),\r\n switchMap(order =>\r\n this.modalService.fromComponent(FulfillOrderDialogComponent, {\r\n size: 'xl',\r\n locals: {\r\n order,\r\n },\r\n }),\r\n ),\r\n switchMap(input => {\r\n if (input) {\r\n return this.dataService.order.createFulfillment(input);\r\n } else {\r\n return of(undefined);\r\n }\r\n }),\r\n switchMap(result => this.refetchOrder(result).pipe(mapTo(result))),\r\n )\r\n .subscribe(result => {\r\n if (result) {\r\n const { addFulfillmentToOrder } = result;\r\n switch (addFulfillmentToOrder.__typename) {\r\n case 'Fulfillment':\r\n this.notificationService.success(_('order.create-fulfillment-success'));\r\n break;\r\n case 'EmptyOrderLineSelectionError':\r\n case 'InsufficientStockOnHandError':\r\n case 'ItemsAlreadyFulfilledError':\r\n case 'InvalidFulfillmentHandlerError':\r\n this.notificationService.error(addFulfillmentToOrder.message);\r\n break;\r\n case 'FulfillmentStateTransitionError':\r\n this.notificationService.error(addFulfillmentToOrder.transitionError);\r\n break;\r\n case 'CreateFulfillmentError':\r\n this.notificationService.error(addFulfillmentToOrder.fulfillmentHandlerError);\r\n break;\r\n case undefined:\r\n this.notificationService.error(JSON.stringify(addFulfillmentToOrder));\r\n break;\r\n default:\r\n assertNever(addFulfillmentToOrder);\r\n }\r\n }\r\n });\r\n }\r\n\r\n transitionFulfillment(id: string, state: string) {\r\n this.dataService.order\r\n .transitionFulfillmentToState(id, state)\r\n .pipe(switchMap(result => this.refetchOrder(result)))\r\n .subscribe(() => {\r\n this.notificationService.success(_('order.successfully-updated-fulfillment'));\r\n });\r\n }\r\n\r\n cancelOrRefund(order: OrderDetailFragment) {\r\n const isRefundable = this.orderHasSettledPayments(order);\r\n if (order.state === 'PaymentAuthorized' || order.active === true || !isRefundable) {\r\n this.cancelOrder(order);\r\n } else {\r\n this.refundOrder(order);\r\n }\r\n }\r\n\r\n settleRefund(refund: Payment['refunds'][number]) {\r\n this.modalService\r\n .fromComponent(SettleRefundDialogComponent, {\r\n size: 'md',\r\n locals: {\r\n refund,\r\n },\r\n })\r\n .pipe(\r\n switchMap(transactionId => {\r\n if (transactionId) {\r\n return this.dataService.order.settleRefund(\r\n {\r\n transactionId,\r\n id: refund.id,\r\n },\r\n this.id,\r\n );\r\n } else {\r\n return of(undefined);\r\n }\r\n }),\r\n // switchMap(result => this.refetchOrder(result)),\r\n )\r\n .subscribe(result => {\r\n if (result) {\r\n this.notificationService.success(_('order.settle-refund-success'));\r\n }\r\n });\r\n }\r\n\r\n addNote(event: { note: string; isPublic: boolean }) {\r\n const { note, isPublic } = event;\r\n this.dataService.order\r\n .addNoteToOrder({\r\n id: this.id,\r\n note,\r\n isPublic,\r\n })\r\n .pipe(switchMap(result => this.refetchOrder(result)))\r\n .subscribe(result => {\r\n this.notificationService.success(_('common.notify-create-success'), {\r\n entity: 'Note',\r\n });\r\n });\r\n }\r\n\r\n updateNote(entry: TimelineHistoryEntry) {\r\n this.modalService\r\n .fromComponent(EditNoteDialogComponent, {\r\n closable: true,\r\n locals: {\r\n displayPrivacyControls: true,\r\n note: entry.data.note,\r\n noteIsPrivate: !entry.isPublic,\r\n },\r\n })\r\n .pipe(\r\n switchMap(result => {\r\n if (result) {\r\n return this.dataService.order.updateOrderNote({\r\n noteId: entry.id,\r\n isPublic: !result.isPrivate,\r\n note: result.note,\r\n });\r\n } else {\r\n return EMPTY;\r\n }\r\n }),\r\n )\r\n .subscribe(result => {\r\n this.fetchHistory.next();\r\n this.notificationService.success(_('common.notify-update-success'), {\r\n entity: 'Note',\r\n });\r\n });\r\n }\r\n\r\n deleteNote(entry: TimelineHistoryEntry) {\r\n return this.modalService\r\n .dialog({\r\n title: _('common.confirm-delete-note'),\r\n body: entry.data.note,\r\n buttons: [\r\n { type: 'secondary', label: _('common.cancel') },\r\n { type: 'danger', label: _('common.delete'), returnValue: true },\r\n ],\r\n })\r\n .pipe(switchMap(res => (res ? this.dataService.order.deleteOrderNote(entry.id) : EMPTY)))\r\n .subscribe(() => {\r\n this.fetchHistory.next();\r\n this.notificationService.success(_('common.notify-delete-success'), {\r\n entity: 'Note',\r\n });\r\n });\r\n }\r\n\r\n orderHasSettledPayments(order: OrderDetailFragment): boolean {\r\n return !!order.payments?.find(p => p.state === 'Settled');\r\n }\r\n\r\n private cancelOrder(order: OrderDetailFragment) {\r\n this.modalService\r\n .fromComponent(CancelOrderDialogComponent, {\r\n size: 'xl',\r\n locals: {\r\n order,\r\n },\r\n })\r\n .pipe(\r\n switchMap(input => {\r\n if (input) {\r\n return this.dataService.order.cancelOrder(input);\r\n } else {\r\n return of(undefined);\r\n }\r\n }),\r\n switchMap(result => this.refetchOrder(result)),\r\n )\r\n .subscribe(result => {\r\n if (result) {\r\n this.notificationService.success(_('order.cancelled-order-success'));\r\n }\r\n });\r\n }\r\n\r\n private refundOrder(order: OrderDetailFragment) {\r\n this.modalService\r\n .fromComponent(RefundOrderDialogComponent, {\r\n size: 'xl',\r\n locals: {\r\n order,\r\n },\r\n })\r\n .pipe(\r\n switchMap(input => {\r\n if (!input) {\r\n return of(undefined);\r\n }\r\n\r\n if (input.cancel.lines?.length) {\r\n return this.dataService.order.cancelOrder(input.cancel).pipe(\r\n map(res => {\r\n const result = res.cancelOrder;\r\n switch (result.__typename) {\r\n case 'Order':\r\n this.refetchOrder(result).subscribe();\r\n this.notificationService.success(\r\n _('order.cancelled-order-items-success'),\r\n {\r\n count: summate(input.cancel.lines, 'quantity'),\r\n },\r\n );\r\n return input;\r\n case 'CancelActiveOrderError':\r\n case 'QuantityTooGreatError':\r\n case 'MultipleOrderError':\r\n case 'OrderStateTransitionError':\r\n case 'EmptyOrderLineSelectionError':\r\n this.notificationService.error(result.message);\r\n return undefined;\r\n }\r\n }),\r\n );\r\n } else {\r\n return [input];\r\n }\r\n }),\r\n switchMap(input => {\r\n if (!input) {\r\n return of(undefined);\r\n }\r\n if (input.refunds.length) {\r\n return forkJoin(\r\n input.refunds.map(refund =>\r\n this.dataService.order.refundOrder(refund).pipe(map(res => res.refundOrder)),\r\n ),\r\n );\r\n } else {\r\n return [undefined];\r\n }\r\n }),\r\n )\r\n .subscribe(results => {\r\n for (const result of results ?? []) {\r\n if (result) {\r\n switch (result.__typename) {\r\n case 'Refund':\r\n if (result.state === 'Failed') {\r\n this.notificationService.error(_('order.refund-order-failed'));\r\n } else {\r\n this.notificationService.success(_('order.refund-order-success'));\r\n }\r\n break;\r\n case 'AlreadyRefundedError':\r\n case 'NothingToRefundError':\r\n case 'PaymentOrderMismatchError':\r\n case 'RefundOrderStateError':\r\n case 'RefundStateTransitionError':\r\n this.notificationService.error(result.message);\r\n break;\r\n }\r\n }\r\n }\r\n this.refetchOrder(results?.[0]).subscribe();\r\n });\r\n }\r\n\r\n private refetchOrder(result: object | undefined): Observable<GetOrderQuery | undefined> {\r\n this.fetchHistory.next();\r\n if (result) {\r\n return this.dataService.order.getOrder(this.id).single$;\r\n } else {\r\n return of(undefined);\r\n }\r\n }\r\n\r\n protected setFormValues(entity: OrderDetailFragment): void {\r\n if (this.customFields.length) {\r\n this.setCustomFieldFormValues(this.customFields, this.detailForm.get(['customFields']), entity);\r\n }\r\n }\r\n}\r\n","<vdr-labeled-data\r\n *ngIf=\"modifyOrderInput.adjustOrderLines?.length\"\r\n [label]=\"\r\n 'order.modification-adjusting-lines'\r\n | translate : { count: modifyOrderInput.adjustOrderLines?.length }\r\n \"\r\n>\r\n <div *ngFor=\"let line of adjustedLines\" class=\"mb-1\">\r\n {{ line }}\r\n </div>\r\n</vdr-labeled-data>\r\n<vdr-labeled-data\r\n *ngIf=\"modifyOrderInput.addItems?.length\"\r\n [label]=\"\r\n 'order.modification-adding-items'\r\n | translate : { count: modifyOrderInput.addItems?.length }\r\n \"\r\n>\r\n <div *ngFor=\"let item of addedLines\">\r\n {{ item.productVariant.name }} x {{ item.quantity }}\r\n </div>\r\n</vdr-labeled-data>\r\n<vdr-labeled-data\r\n *ngIf=\"modifyOrderInput.surcharges?.length\"\r\n [label]=\"\r\n 'order.modification-adding-surcharges'\r\n | translate : { count: modifyOrderInput.surcharges?.length }\r\n \"\r\n>\r\n <div *ngFor=\"let surcharge of modifyOrderInput.surcharges\" class=\"mb-1\">\r\n {{ surcharge.description }}: {{ surcharge.price | localeCurrency : orderSnapshot.currencyCode }}\r\n </div>\r\n</vdr-labeled-data>\r\n<vdr-labeled-data\r\n *ngIf=\"getModifiedFields(shippingAddressForm) as updatedShippingFields\"\r\n [label]=\"'order.modification-updating-shipping-address' | translate\"\r\n>\r\n {{ updatedShippingFields }}\r\n</vdr-labeled-data>\r\n<vdr-labeled-data\r\n *ngIf=\"getModifiedFields(billingAddressForm) as updatedBillingFields\"\r\n [label]=\"'order.modification-updating-billing-address' | translate\"\r\n>\r\n {{ updatedBillingFields }}\r\n</vdr-labeled-data>\r\n<vdr-labeled-data *ngIf=\"couponCodeChanges.length\" [label]=\"'order.set-coupon-codes' | translate\">\r\n <div *ngFor=\"let change of couponCodeChanges\" class=\"mb-1\">{{ change }}</div>\r\n</vdr-labeled-data>\r\n<ng-container *ngIf=\"getUpdatedShippingMethodLines() as updatedShippingMethods\">\r\n <vdr-labeled-data *ngIf=\"updatedShippingMethods.length\" [label]=\"'order.shipping-method' | translate\">\r\n <div *ngFor=\"let change of updatedShippingMethods\" class=\"mb-1\">{{ change }}</div>\r\n </vdr-labeled-data>\r\n</ng-container>","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\r\nimport { FormControl, FormGroup } from '@angular/forms';\r\nimport { notNullOrUndefined } from '@vendure/common/lib/shared-utils';\r\nimport type { OrderEditorComponent } from '../order-editor/order-editor.component';\r\nimport { AddedLine, ModifyOrderData, OrderSnapshot } from '../../common/modify-order-types';\r\n\r\n@Component({\r\n selector: 'vdr-order-modification-summary',\r\n templateUrl: './order-modification-summary.component.html',\r\n styleUrls: ['./order-modification-summary.component.css'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class OrderModificationSummaryComponent {\r\n @Input() orderSnapshot: OrderSnapshot;\r\n @Input() modifyOrderInput: ModifyOrderData;\r\n @Input() addedLines: AddedLine[];\r\n @Input() shippingAddressForm: OrderEditorComponent['shippingAddressForm'];\r\n @Input() billingAddressForm: OrderEditorComponent['billingAddressForm'];\r\n @Input() updatedShippingMethods: OrderEditorComponent['updatedShippingMethods'];\r\n @Input() couponCodesControl: FormControl<string[] | null>;\r\n\r\n get adjustedLines(): string[] {\r\n return (this.modifyOrderInput.adjustOrderLines || [])\r\n .map(l => {\r\n const line = this.orderSnapshot.lines.find(line => line.id === l.orderLineId);\r\n if (line) {\r\n const delta = l.quantity - line.quantity;\r\n const sign = delta === 0 ? '' : delta > 0 ? '+' : '-';\r\n return delta\r\n ? `${sign}${Math.abs(delta)} ${line.productVariant.name}`\r\n : line.productVariant.name;\r\n }\r\n })\r\n .filter(notNullOrUndefined);\r\n }\r\n\r\n getModifiedFields(formGroup: FormGroup): string {\r\n if (!formGroup.dirty) {\r\n return '';\r\n }\r\n return Object.entries(formGroup.controls)\r\n .map(([key, control]) => {\r\n if (control.dirty) {\r\n return key;\r\n }\r\n })\r\n .filter(notNullOrUndefined)\r\n .join(', ');\r\n }\r\n\r\n getUpdatedShippingMethodLines() {\r\n return Object.entries(this.updatedShippingMethods || {})\r\n .map(([lineId, shippingMethod]) => {\r\n const previousMethod = this.orderSnapshot.shippingLines.find(l => l.id === lineId);\r\n if (!previousMethod) {\r\n return;\r\n }\r\n const previousName = previousMethod.shippingMethod.name || previousMethod.shippingMethod.code;\r\n const newName = shippingMethod.name || shippingMethod.code;\r\n return `${previousName} -> ${newName}`;\r\n })\r\n .filter(notNullOrUndefined);\r\n }\r\n\r\n get couponCodeChanges(): string[] {\r\n const originalCodes = this.orderSnapshot.couponCodes || [];\r\n const newCodes = this.couponCodesControl.value || [];\r\n const addedCodes = newCodes.filter(c => !originalCodes.includes(c)).map(c => `+ ${c}`);\r\n const removedCodes = originalCodes.filter(c => !newCodes.includes(c)).map(c => `- ${c}`);\r\n return [...addedCodes, ...removedCodes];\r\n }\r\n}\r\n","<ng-template vdrDialogTitle>{{ 'order.confirm-modifications' | translate }}</ng-template>\r\n<vdr-order-table\r\n [order]=\"order\"\r\n [orderLineCustomFields]=\"orderLineCustomFields\"\r\n class=\"order-edits-preview-table\"\r\n></vdr-order-table>\r\n<div class=\"payments-wrapper mb-2\">\r\n <div class=\"flex-spacer\">\r\n <vdr-payment-for-refund-selector\r\n *ngIf=\"priceDifference < 0\"\r\n class=\"\"\r\n [refundablePayments]=\"refundablePayments\"\r\n (paymentSelected)=\"onPaymentSelected($event.payment, $event.selected)\"\r\n [order]=\"order\"\r\n ></vdr-payment-for-refund-selector>\r\n </div>\r\n <div class=\"flex-spacer\">\r\n <vdr-card [title]=\"'order.modify-order' | translate\">\r\n <vdr-order-modification-summary\r\n [orderSnapshot]=\"orderSnapshot\"\r\n [modifyOrderInput]=\"modifyOrderInput\"\r\n [addedLines]=\"addedLines\"\r\n [shippingAddressForm]=\"shippingAddressForm\"\r\n [billingAddressForm]=\"billingAddressForm\"\r\n [couponCodesControl]=\"couponCodesControl\"\r\n [updatedShippingMethods]=\"updatedShippingMethods\"\r\n ></vdr-order-modification-summary>\r\n <vdr-labeled-data [label]=\"'order.note' | translate\">\r\n {{ modifyOrderInput.note || '-' }}\r\n </vdr-labeled-data>\r\n <vdr-form-field\r\n [label]=\"'order.refund-cancellation-reason' | translate\"\r\n *ngIf=\"priceDifference < 0\"\r\n >\r\n <textarea [(ngModel)]=\"refundNote\" name=\"refundNote\" required></textarea>\r\n </vdr-form-field>\r\n </vdr-card>\r\n </div>\r\n</div>\r\n<ng-template vdrDialogButtons>\r\n <div>\r\n <div class=\"errors\">\r\n <clr-alert\r\n class=\"mb-1\"\r\n *ngIf=\"priceDifference < 0 && !refundsCoverDifference()\"\r\n [clrAlertType]=\"'danger'\"\r\n [clrAlertClosable]=\"false\"\r\n >\r\n <clr-alert-item>\r\n {{ 'order.refund-total-warning' | translate }}\r\n </clr-alert-item>\r\n </clr-alert>\r\n </div>\r\n <div class=\"modal-buttons\">\r\n <clr-alert class=\"\" [clrAlertType]=\"'primary'\" [clrAlertClosable]=\"false\">\r\n <clr-alert-item>\r\n {{ 'order.modify-order-price-difference' | translate }}\r\n {{ 0 < priceDifference ? '+' : ''\r\n }}{{ priceDifference | localeCurrency : order.currencyCode }}\r\n </clr-alert-item>\r\n </clr-alert>\r\n <button type=\"button\" class=\"btn\" (click)=\"cancel()\">\r\n {{ 'common.cancel' | translate }}\r\n </button>\r\n <button\r\n type=\"submit\"\r\n (click)=\"submit()\"\r\n [disabled]=\"priceDifference < 0 ? !refundsCoverDifference() : false\"\r\n class=\"btn btn-primary\"\r\n >\r\n {{ 'common.confirm' | translate }}\r\n </button>\r\n </div>\r\n </div>\r\n</ng-template>\r\n","import { ChangeDetectionStrategy, Component, OnInit } from '@angular/core';\r\nimport { FormControl, Validators } from '@angular/forms';\r\nimport {\r\n AdministratorRefundInput,\r\n CustomFieldConfig,\r\n Dialog,\r\n ModifyOrderInput,\r\n OrderDetailFragment,\r\n} from '@vendure/admin-ui/core';\r\nimport { getRefundablePayments, RefundablePayment } from '../../common/get-refundable-payments';\r\nimport { AddedLine, OrderSnapshot } from '../../common/modify-order-types';\r\nimport { OrderEditorComponent } from '../order-editor/order-editor.component';\r\n\r\nexport enum OrderEditResultType {\r\n Refund,\r\n Payment,\r\n PriceUnchanged,\r\n Cancel,\r\n}\r\n\r\ninterface OrderEditsRefundResult {\r\n result: OrderEditResultType.Refund;\r\n refunds: AdministratorRefundInput[];\r\n}\r\ninterface OrderEditsPaymentResult {\r\n result: OrderEditResultType.Payment;\r\n}\r\ninterface OrderEditsPriceUnchangedResult {\r\n result: OrderEditResultType.PriceUnchanged;\r\n}\r\ninterface OrderEditsCancelResult {\r\n result: OrderEditResultType.Cancel;\r\n}\r\ntype OrderEditResult =\r\n | OrderEditsRefundResult\r\n | OrderEditsPaymentResult\r\n | OrderEditsPriceUnchangedResult\r\n | OrderEditsCancelResult;\r\n\r\n@Component({\r\n selector: 'vdr-order-edits-preview-dialog',\r\n templateUrl: './order-edits-preview-dialog.component.html',\r\n styleUrls: ['./order-edits-preview-dialog.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class OrderEditsPreviewDialogComponent implements OnInit, Dialog<OrderEditResult> {\r\n // Passed in via the modalService\r\n orderLineCustomFields: CustomFieldConfig[];\r\n order: OrderDetailFragment;\r\n orderSnapshot: OrderSnapshot;\r\n modifyOrderInput: ModifyOrderInput;\r\n addedLines: AddedLine[];\r\n shippingAddressForm: OrderEditorComponent['shippingAddressForm'];\r\n billingAddressForm: OrderEditorComponent['billingAddressForm'];\r\n updatedShippingMethods: OrderEditorComponent['updatedShippingMethods'];\r\n couponCodesControl: FormControl<string[] | null>;\r\n\r\n refundablePayments: RefundablePayment[];\r\n refundNote: string;\r\n resolveWith: (result?: OrderEditResult) => void;\r\n\r\n get priceDifference(): number {\r\n return this.order.totalWithTax - this.orderSnapshot.totalWithTax;\r\n }\r\n\r\n get amountToRefundTotal(): number {\r\n return this.refundablePayments.reduce(\r\n (total, payment) => total + payment.amountToRefundControl.value,\r\n 0,\r\n );\r\n }\r\n\r\n ngOnInit() {\r\n this.refundNote = this.modifyOrderInput.note || '';\r\n this.refundablePayments = getRefundablePayments(this.order.payments || []);\r\n this.refundablePayments.forEach(rp => {\r\n rp.amountToRefundControl.addValidators(Validators.max(this.priceDifference * -1));\r\n });\r\n if (this.priceDifference < 0 && this.refundablePayments.length) {\r\n this.onPaymentSelected(this.refundablePayments[0], true);\r\n }\r\n }\r\n\r\n onPaymentSelected(payment: RefundablePayment, selected: boolean) {\r\n if (selected) {\r\n const outstandingRefundAmount =\r\n this.priceDifference * -1 -\r\n this.refundablePayments\r\n .filter(p => p.id !== payment.id)\r\n .reduce((total, p) => total + p.amountToRefundControl.value, 0);\r\n if (0 < outstandingRefundAmount) {\r\n payment.amountToRefundControl.setValue(\r\n Math.min(outstandingRefundAmount, payment.refundableAmount),\r\n );\r\n }\r\n } else {\r\n payment.amountToRefundControl.setValue(0);\r\n }\r\n }\r\n\r\n refundsCoverDifference(): boolean {\r\n return this.priceDifference * -1 === this.amountToRefundTotal;\r\n }\r\n\r\n cancel() {\r\n this.resolveWith({\r\n result: OrderEditResultType.Cancel,\r\n });\r\n }\r\n\r\n submit() {\r\n if (0 < this.priceDifference) {\r\n this.resolveWith({\r\n result: OrderEditResultType.Payment,\r\n });\r\n } else if (this.priceDifference < 0) {\r\n this.resolveWith({\r\n result: OrderEditResultType.Refund,\r\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\r\n refunds: this.refundablePayments\r\n .filter(rp => rp.selected && 0 < rp.amountToRefundControl.value)\r\n .map(payment => {\r\n return {\r\n reason: this.refundNote || this.modifyOrderInput.note,\r\n paymentId: payment.id,\r\n amount: payment.amountToRefundControl.value,\r\n };\r\n }),\r\n });\r\n } else {\r\n this.resolveWith({\r\n result: OrderEditResultType.PriceUnchanged,\r\n });\r\n }\r\n }\r\n}\r\n","<vdr-page-block>\r\n <vdr-action-bar *ngIf=\"entity$ | async as order\">\r\n <vdr-ab-left>\r\n <div class=\"flex clr-align-items-center\"></div>\r\n </vdr-ab-left>\r\n\r\n <vdr-ab-right>\r\n <button class=\"btn btn-secondary\" (click)=\"transitionToPriorState(order)\">\r\n {{ 'order.cancel-modification' | translate }}\r\n </button>\r\n </vdr-ab-right>\r\n </vdr-action-bar>\r\n</vdr-page-block>\r\n\r\n<vdr-page-detail-layout *ngIf=\"entity as order\">\r\n <vdr-page-detail-sidebar>\r\n <vdr-card [title]=\"'order.modification-summary' | translate\">\r\n <vdr-order-modification-summary\r\n [orderSnapshot]=\"orderSnapshot\"\r\n [modifyOrderInput]=\"modifyOrderInput\"\r\n [addedLines]=\"addedLines\"\r\n [shippingAddressForm]=\"shippingAddressForm\"\r\n [billingAddressForm]=\"billingAddressForm\"\r\n [couponCodesControl]=\"couponCodesControl\"\r\n [updatedShippingMethods]=\"updatedShippingMethods\"\r\n ></vdr-order-modification-summary>\r\n\r\n <div *ngIf=\"!hasModifications()\" class=\"no-modifications\">\r\n {{ 'order.no-modifications-made' | translate }}\r\n </div>\r\n\r\n <div class=\"summary-controls\">\r\n <vdr-form-field [label]=\"'order.note' | translate\">\r\n <textarea\r\n [(ngModel)]=\"note\"\r\n name=\"note\"\r\n required\r\n [disabled]=\"!hasModifications()\"\r\n ></textarea>\r\n </vdr-form-field>\r\n <label class=\"flex items-center\">\r\n <input\r\n type=\"checkbox\"\r\n [(ngModel)]=\"recalculateShipping\"\r\n [disabled]=\"!hasModifications()\"\r\n />\r\n <div class=\"ml-1\">{{ 'order.modification-recalculate-shipping' | translate }}</div>\r\n </label>\r\n <button\r\n class=\"btn btn-primary mt-2\"\r\n [disabled]=\"!hasModifications()\"\r\n (click)=\"previewAndModify(order)\"\r\n >\r\n {{ 'order.preview-changes' | translate }}\r\n </button>\r\n </div>\r\n </vdr-card>\r\n <vdr-card [title]=\"'order.set-coupon-codes' | translate\">\r\n <vdr-coupon-code-selector [control]=\"couponCodesControl\"></vdr-coupon-code-selector>\r\n </vdr-card>\r\n <vdr-card [title]=\"'order.shipping-address' | translate\">\r\n <ng-template vdrCardControls>\r\n <button\r\n class=\"button-small\"\r\n [title]=\"'order.edit-shipping-address' | translate\"\r\n (click)=\"editingShippingAddress = !editingShippingAddress\"\r\n >\r\n <clr-icon shape=\"edit\"></clr-icon>\r\n </button>\r\n </ng-template>\r\n <vdr-formatted-address\r\n *ngIf=\"!editingShippingAddress\"\r\n [address]=\"shippingAddressForm.value\"\r\n ></vdr-formatted-address>\r\n <vdr-address-form\r\n *ngIf=\"editingShippingAddress\"\r\n [formGroup]=\"shippingAddressForm\"\r\n [availableCountries]=\"availableCountries$ | async\"\r\n [customFields]=\"addressCustomFields\"\r\n ></vdr-address-form>\r\n </vdr-card>\r\n <vdr-card [title]=\"'order.billing-address' | translate\">\r\n <ng-template vdrCardControls>\r\n <button\r\n class=\"button-small\"\r\n [title]=\"'order.edit-billing-address' | translate\"\r\n (click)=\"editingBillingAddress = !editingBillingAddress\"\r\n >\r\n <clr-icon shape=\"edit\"></clr-icon>\r\n </button>\r\n </ng-template>\r\n <vdr-formatted-address\r\n *ngIf=\"!editingBillingAddress\"\r\n [address]=\"billingAddressForm.value\"\r\n ></vdr-formatted-address>\r\n <vdr-address-form\r\n *ngIf=\"editingBillingAddress\"\r\n [formGroup]=\"billingAddressForm\"\r\n [availableCountries]=\"availableCountries$ | async\"\r\n [customFields]=\"addressCustomFields\"\r\n ></vdr-address-form>\r\n </vdr-card>\r\n </vdr-page-detail-sidebar>\r\n\r\n <vdr-page-block>\r\n <vdr-card [paddingX]=\"false\">\r\n <vdr-data-table-2 id=\"modify-order\" class=\"order-table\" [items]=\"order.lines.concat(addedLines)\">\r\n <!-- Here we define all the available columns -->\r\n <vdr-dt2-column id=\"id\" [heading]=\"'common.id' | translate\" [hiddenByDefault]=\"true\">\r\n <ng-template let-line=\"item\">\r\n {{ line.id }}\r\n </ng-template>\r\n </vdr-dt2-column>\r\n <vdr-dt2-column\r\n id=\"created-at\"\r\n [heading]=\"'common.created-at' | translate\"\r\n [hiddenByDefault]=\"true\"\r\n >\r\n <ng-template let-line=\"item\">\r\n {{ line.createdAt | localeDate : 'short' }}\r\n </ng-template>\r\n </vdr-dt2-column>\r\n <vdr-dt2-column\r\n id=\"updated-at\"\r\n [heading]=\"'common.updated-at' | translate\"\r\n [hiddenByDefault]=\"true\"\r\n >\r\n <ng-template let-line=\"item\">\r\n {{ line.updatedAt | localeDate : 'short' }}\r\n </ng-template>\r\n </vdr-dt2-column>\r\n <vdr-dt2-column [heading]=\"'common.image' | translate\" id=\"image\">\r\n <ng-template let-line=\"item\">\r\n <div class=\"image-placeholder\">\r\n <img\r\n *ngIf=\"line.featuredAsset as asset; else imagePlaceholder\"\r\n [src]=\"asset | assetPreview : 'tiny'\"\r\n />\r\n <ng-template #imagePlaceholder>\r\n <div class=\"placeholder\">\r\n <clr-icon shape=\"image\" size=\"48\"></clr-icon>\r\n </div>\r\n </ng-template>\r\n </div>\r\n </ng-template>\r\n </vdr-dt2-column>\r\n <vdr-dt2-column\r\n id=\"product-name\"\r\n [heading]=\"'order.product-name' | translate\"\r\n [optional]=\"false\"\r\n >\r\n <ng-template let-line=\"item\">\r\n {{ line.productVariant.name }}\r\n </ng-template>\r\n </vdr-dt2-column>\r\n <vdr-dt2-column id=\"product-sku\" [heading]=\"'order.product-sku' | translate\">\r\n <ng-template let-line=\"item\">\r\n {{ line.productVariant.sku }}\r\n </ng-template>\r\n </vdr-dt2-column>\r\n <vdr-dt2-column id=\"unit-price\" [heading]=\"'order.unit-price' | translate\">\r\n <ng-template let-line=\"item\">\r\n <div class=\"text-center\">\r\n <div>{{ line.unitPriceWithTax | localeCurrency : order.currencyCode }}</div>\r\n <div class=\"net-price\" [title]=\"'order.net-price' | translate\">\r\n {{ line.unitPrice | localeCurrency : order.currencyCode }}\r\n </div>\r\n </div>\r\n </ng-template>\r\n </vdr-dt2-column>\r\n <vdr-dt2-column id=\"quantity\" [heading]=\"'order.quantity' | translate\" [optional]=\"false\">\r\n <ng-template let-line=\"item\">\r\n <input\r\n type=\"number\"\r\n class=\"draft-qty mr-1\"\r\n min=\"0\"\r\n [value]=\"getInitialLineQuantity(line.id)\"\r\n (input)=\"updateLineQuantity(line, $event.target.value)\"\r\n />\r\n <button\r\n class=\"button-small\"\r\n *ngIf=\"isAddedLine(line)\"\r\n (click)=\"removeAddedItem(line.id)\"\r\n >\r\n <clr-icon shape=\"trash\"></clr-icon>\r\n </button>\r\n <vdr-line-refunds [line]=\"line\" [payments]=\"order.payments\"></vdr-line-refunds>\r\n <vdr-line-fulfillment\r\n [line]=\"line\"\r\n [allOrderFulfillments]=\"order.fulfillments\"\r\n [orderState]=\"order.state\"\r\n ></vdr-line-fulfillment>\r\n </ng-template>\r\n </vdr-dt2-column>\r\n <vdr-dt2-column\r\n *ngFor=\"let customField of orderLineCustomFields\"\r\n [id]=\"customField.name\"\r\n [heading]=\"customField | customFieldLabel : (uiLanguage$ | async)\"\r\n [hiddenByDefault]=\"true\"\r\n >\r\n <ng-template let-line=\"item\" let-index=\"index\">\r\n <vdr-custom-field-control\r\n [compact]=\"true\"\r\n [entityName]=\"'OrderLine'\"\r\n [customField]=\"customField\"\r\n [customFieldsFormGroup]=\"orderLineCustomFieldsFormArray.at(index)\"\r\n />\r\n </ng-template>\r\n </vdr-dt2-column>\r\n </vdr-data-table-2>\r\n </vdr-card>\r\n <vdr-card [title]=\"'order.add-item-to-order' | translate\">\r\n <vdr-product-variant-selector class=\"mb-4\" (productSelected)=\"addItemSelectedVariant = $event\">\r\n </vdr-product-variant-selector>\r\n <div class=\"flex\">\r\n <div>\r\n <div *ngIf=\"addItemSelectedVariant\" class=\"flex mb-4\">\r\n <img\r\n *ngIf=\"addItemSelectedVariant.productAsset as asset\"\r\n [src]=\"asset | assetPreview : 'tiny'\"\r\n class=\"mr-4 add-item-thumb\"\r\n />\r\n <div>\r\n <strong class=\"mr-4\">{{ addItemSelectedVariant.productVariantName }}</strong>\r\n <small>{{ addItemSelectedVariant.sku }}</small>\r\n <div>\r\n {{\r\n getSelectedItemPrice(addItemSelectedVariant)\r\n | localeCurrency : order.currencyCode\r\n }}\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"form-grid\" *ngIf=\"addItemSelectedVariant\">\r\n <ng-container *ngFor=\"let customField of orderLineCustomFields\">\r\n <vdr-custom-field-control\r\n [readonly]=\"!addItemSelectedVariant\"\r\n [customField]=\"customField\"\r\n [customFieldsFormGroup]=\"addItemCustomFieldsForm\"\r\n entityName=\"OrderLine\"\r\n [compact]=\"true\"\r\n ></vdr-custom-field-control>\r\n </ng-container>\r\n </div>\r\n </div>\r\n <div class=\"flex-spacer\"></div>\r\n <div>\r\n <button\r\n *ngIf=\"addItemSelectedVariant\"\r\n class=\"btn btn-secondary\"\r\n [disabled]=\"!addItemSelectedVariant || addItemCustomFieldsForm.invalid\"\r\n (click)=\"addItemToOrder(addItemSelectedVariant)\"\r\n >\r\n {{ 'order.add-item-to-order' | translate }}\r\n </button>\r\n </div>\r\n </div>\r\n </vdr-card>\r\n <vdr-card [title]=\"'order.shipping' | translate\">\r\n <div *ngFor=\"let shippingLine of order.shippingLines\" class=\"flex items-center\">\r\n <ng-container *ngIf=\"getShippingLineDetails(shippingLine) as details\">\r\n <div>{{ details.name }}:</div>\r\n <div class=\"mx-1\">\r\n {{ details.price | localeCurrency : order.currencyCode }}\r\n </div>\r\n <button class=\"button-small\" (click)=\"setShippingMethod(shippingLine.id)\">\r\n {{ 'order.set-shipping-method' | translate }}\r\n </button>\r\n </ng-container>\r\n </div>\r\n </vdr-card>\r\n <vdr-card [title]=\"'order.add-surcharge' | translate\">\r\n <form [formGroup]=\"surchargeForm\" (submit)=\"addSurcharge(surchargeForm.value)\">\r\n <div class=\"form-grid\">\r\n <vdr-form-field [label]=\"'common.description' | translate\" for=\"description\"\r\n ><input id=\"description\" type=\"text\" formControlName=\"description\"\r\n /></vdr-form-field>\r\n <vdr-form-field [label]=\"'order.product-sku' | translate\" for=\"sku\"\r\n ><input id=\"sku\" type=\"text\" formControlName=\"sku\"\r\n /></vdr-form-field>\r\n <vdr-form-field [label]=\"'common.price' | translate\" for=\"price\">\r\n <vdr-currency-input\r\n [currencyCode]=\"order.currencyCode\"\r\n id=\"price\"\r\n formControlName=\"price\"\r\n ></vdr-currency-input>\r\n </vdr-form-field>\r\n <vdr-form-field\r\n [label]=\"\r\n 'catalog.price-includes-tax-at'\r\n | translate : { rate: surchargeForm.get('taxRate')?.value ?? 0 }\r\n \"\r\n for=\"priceIncludesTax\"\r\n ><input\r\n id=\"priceIncludesTax\"\r\n type=\"checkbox\"\r\n clrCheckbox\r\n formControlName=\"priceIncludesTax\"\r\n /></vdr-form-field>\r\n <vdr-form-field [label]=\"'order.tax-rate' | translate\" for=\"taxRate\">\r\n <vdr-affixed-input suffix=\"%\"\r\n ><input id=\"taxRate\" type=\"number\" min=\"0\" max=\"100\" formControlName=\"taxRate\"\r\n /></vdr-affixed-input>\r\n </vdr-form-field>\r\n <vdr-form-field [label]=\"'order.tax-description' | translate\" for=\"taxDescription\"\r\n ><input id=\"taxDescription\" type=\"text\" formControlName=\"taxDescription\"\r\n /></vdr-form-field>\r\n </div>\r\n <button\r\n class=\"btn btn-secondary mt-2\"\r\n [disabled]=\"\r\n surchargeForm.invalid ||\r\n surchargeForm.pristine ||\r\n surchargeForm.get('price')?.value === 0 ||\r\n !surchargeForm.get('description')?.value\r\n \"\r\n >\r\n {{ 'order.add-surcharge' | translate }}\r\n </button>\r\n </form>\r\n </vdr-card>\r\n </vdr-page-block>\r\n</vdr-page-detail-layout>\r\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, OnDestroy, OnInit } from '@angular/core';\r\nimport {\r\n FormControl,\r\n FormGroup,\r\n UntypedFormArray,\r\n UntypedFormControl,\r\n UntypedFormGroup,\r\n Validators,\r\n} from '@angular/forms';\r\nimport {\r\n CustomFieldConfig,\r\n DataService,\r\n DraftOrderEligibleShippingMethodsQuery,\r\n ErrorResult,\r\n GetAvailableCountriesQuery,\r\n HistoryEntryType,\r\n LanguageCode,\r\n ModalService,\r\n ModifyOrderInput,\r\n NotificationService,\r\n OrderAddressFragment,\r\n OrderDetailFragment,\r\n OrderDetailQueryDocument,\r\n SortOrder,\r\n SurchargeInput,\r\n transformRelationCustomFieldInputs,\r\n TypedBaseDetailComponent,\r\n} from '@vendure/admin-ui/core';\r\nimport { assertNever, notNullOrUndefined } from '@vendure/common/lib/shared-utils';\r\nimport { simpleDeepClone } from '@vendure/common/lib/simple-deep-clone';\r\nimport { EMPTY, Observable, of } from 'rxjs';\r\nimport { map, mapTo, shareReplay, switchMap, take, takeUntil } from 'rxjs/operators';\r\nimport {\r\n AddedLine,\r\n ModifyOrderData,\r\n OrderSnapshot,\r\n ProductSelectorItem,\r\n} from '../../common/modify-order-types';\r\n\r\nimport { OrderTransitionService } from '../../providers/order-transition.service';\r\nimport {\r\n OrderEditResultType,\r\n OrderEditsPreviewDialogComponent,\r\n} from '../order-edits-preview-dialog/order-edits-preview-dialog.component';\r\nimport { SelectShippingMethodDialogComponent } from '../select-shipping-method-dialog/select-shipping-method-dialog.component';\r\n\r\n@Component({\r\n selector: 'vdr-order-editor',\r\n templateUrl: './order-editor.component.html',\r\n styleUrls: ['./order-editor.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class OrderEditorComponent\r\n extends TypedBaseDetailComponent<typeof OrderDetailQueryDocument, 'order'>\r\n implements OnInit, OnDestroy\r\n{\r\n availableCountries$: Observable<GetAvailableCountriesQuery['countries']['items']>;\r\n addressCustomFields: CustomFieldConfig[];\r\n uiLanguage$: Observable<LanguageCode>;\r\n detailForm = new UntypedFormGroup({});\r\n couponCodesControl = new FormControl<string[]>([]);\r\n orderLineCustomFieldsFormArray: UntypedFormArray;\r\n addItemCustomFieldsFormArray: UntypedFormArray;\r\n addItemCustomFieldsForm: UntypedFormGroup;\r\n addItemSelectedVariant: ProductSelectorItem | undefined;\r\n orderLineCustomFields: CustomFieldConfig[];\r\n orderSnapshot: OrderSnapshot;\r\n modifyOrderInput: ModifyOrderData = {\r\n dryRun: true,\r\n orderId: '',\r\n addItems: [],\r\n adjustOrderLines: [],\r\n surcharges: [],\r\n note: '',\r\n refunds: [],\r\n updateShippingAddress: {},\r\n updateBillingAddress: {},\r\n };\r\n surchargeForm = new FormGroup({\r\n description: new FormControl('', Validators.minLength(1)),\r\n sku: new FormControl(''),\r\n price: new FormControl(0),\r\n priceIncludesTax: new FormControl(true),\r\n taxRate: new FormControl(0),\r\n taxDescription: new FormControl(''),\r\n });\r\n shippingAddressForm = new FormGroup({\r\n fullName: new FormControl(''),\r\n company: new FormControl(''),\r\n streetLine1: new FormControl(''),\r\n streetLine2: new FormControl(''),\r\n city: new FormControl(''),\r\n province: new FormControl(''),\r\n postalCode: new FormControl(''),\r\n countryCode: new FormControl(''),\r\n phoneNumber: new FormControl(''),\r\n });\r\n billingAddressForm = new FormGroup({\r\n fullName: new FormControl(''),\r\n company: new FormControl(''),\r\n streetLine1: new FormControl(''),\r\n streetLine2: new FormControl(''),\r\n city: new FormControl(''),\r\n province: new FormControl(''),\r\n postalCode: new FormControl(''),\r\n countryCode: new FormControl(''),\r\n phoneNumber: new FormControl(''),\r\n });\r\n note = '';\r\n recalculateShipping = true;\r\n previousState: string;\r\n editingShippingAddress = false;\r\n editingBillingAddress = false;\r\n updatedShippingMethods: {\r\n [\r\n shippingLineId: string\r\n ]: DraftOrderEligibleShippingMethodsQuery['eligibleShippingMethodsForDraftOrder'][number];\r\n } = {};\r\n private addedVariants = new Map<string, ProductSelectorItem>();\r\n\r\n constructor(\r\n protected dataService: DataService,\r\n private notificationService: NotificationService,\r\n private modalService: ModalService,\r\n private orderTransitionService: OrderTransitionService,\r\n private changeDetectorRef: ChangeDetectorRef,\r\n ) {\r\n super();\r\n }\r\n\r\n ngOnInit(): void {\r\n this.init();\r\n this.addressCustomFields = this.getCustomFieldConfig('Address');\r\n this.modifyOrderInput.orderId = this.route.snapshot.paramMap.get('id') as string;\r\n this.orderLineCustomFields = this.getCustomFieldConfig('OrderLine');\r\n this.entity$.pipe(take(1)).subscribe(order => {\r\n this.orderSnapshot = this.createOrderSnapshot(order);\r\n if (order.couponCodes.length) {\r\n this.couponCodesControl.setValue(order.couponCodes);\r\n }\r\n this.surchargeForm.reset();\r\n for (const [name, control] of Object.entries(this.shippingAddressForm.controls)) {\r\n control.setValue(order.shippingAddress?.[name]);\r\n }\r\n this.addAddressCustomFieldsFormGroup(this.shippingAddressForm, order.shippingAddress);\r\n for (const [name, control] of Object.entries(this.billingAddressForm.controls)) {\r\n control.setValue(order.billingAddress?.[name]);\r\n }\r\n this.addAddressCustomFieldsFormGroup(this.billingAddressForm, order.billingAddress);\r\n this.orderLineCustomFieldsFormArray = new UntypedFormArray([]);\r\n for (const line of order.lines) {\r\n const formGroup = new UntypedFormGroup({});\r\n for (const { name } of this.orderLineCustomFields) {\r\n formGroup.addControl(name, new UntypedFormControl((line as any).customFields[name]));\r\n }\r\n formGroup.valueChanges.pipe(takeUntil(this.destroy$)).subscribe(value => {\r\n let modifyRow = this.modifyOrderInput.adjustOrderLines.find(\r\n l => l.orderLineId === line.id,\r\n );\r\n if (!modifyRow) {\r\n modifyRow = {\r\n orderLineId: line.id,\r\n quantity: line.quantity,\r\n };\r\n this.modifyOrderInput.adjustOrderLines.push(modifyRow);\r\n }\r\n if (this.orderLineCustomFields.length) {\r\n modifyRow.customFields = value;\r\n }\r\n });\r\n this.orderLineCustomFieldsFormArray.push(formGroup);\r\n }\r\n });\r\n\r\n this.addItemCustomFieldsFormArray = new UntypedFormArray([]);\r\n this.addItemCustomFieldsForm = new UntypedFormGroup({});\r\n for (const customField of this.orderLineCustomFields) {\r\n this.addItemCustomFieldsForm.addControl(customField.name, new UntypedFormControl());\r\n }\r\n this.availableCountries$ = this.dataService.settings\r\n .getAvailableCountries()\r\n .mapSingle(result => result.countries.items)\r\n .pipe(shareReplay(1));\r\n this.dataService.order\r\n .getOrderHistory(this.id, {\r\n take: 1,\r\n sort: {\r\n createdAt: SortOrder.DESC,\r\n },\r\n filter: { type: { eq: HistoryEntryType.ORDER_STATE_TRANSITION } },\r\n })\r\n .single$.subscribe(({ order }) => {\r\n this.previousState = order?.history.items[0].data.from;\r\n });\r\n this.uiLanguage$ = this.dataService.client\r\n .uiState()\r\n .stream$.pipe(map(({ uiState }) => uiState.language));\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.destroy();\r\n }\r\n\r\n get addedLines(): AddedLine[] {\r\n const getSinglePriceValue = (price: ProductSelectorItem['price']) =>\r\n price.__typename === 'SinglePrice' ? price.value : 0;\r\n return (this.modifyOrderInput.addItems || [])\r\n .map(row => {\r\n const variantInfo = this.addedVariants.get(row.productVariantId);\r\n if (variantInfo) {\r\n return {\r\n id: this.getIdForAddedItem(row),\r\n featuredAsset: variantInfo.productAsset,\r\n productVariant: {\r\n id: variantInfo.productVariantId,\r\n name: variantInfo.productVariantName,\r\n sku: variantInfo.sku,\r\n },\r\n unitPrice: getSinglePriceValue(variantInfo.price),\r\n unitPriceWithTax: getSinglePriceValue(variantInfo.priceWithTax),\r\n quantity: row.quantity,\r\n };\r\n }\r\n })\r\n .filter(notNullOrUndefined);\r\n }\r\n\r\n private getIdForAddedItem(row: ModifyOrderData['addItems'][number]) {\r\n return `added-${row.productVariantId}-${JSON.stringify(row.customFields || {})}`;\r\n }\r\n\r\n transitionToPriorState(order: OrderDetailFragment) {\r\n this.orderTransitionService\r\n .transitionToPreModifyingState(order.id, order.nextStates)\r\n .subscribe(result => {\r\n this.router.navigate(['..'], { relativeTo: this.route });\r\n });\r\n }\r\n\r\n hasModifications(): boolean {\r\n const { addItems, adjustOrderLines, surcharges } = this.modifyOrderInput;\r\n return (\r\n !!addItems?.length ||\r\n !!surcharges?.length ||\r\n !!adjustOrderLines?.length ||\r\n (this.shippingAddressForm.dirty && this.shippingAddressForm.valid) ||\r\n (this.billingAddressForm.dirty && this.billingAddressForm.valid) ||\r\n this.couponCodesControl.dirty ||\r\n Object.entries(this.updatedShippingMethods).length > 0\r\n );\r\n }\r\n\r\n isLineModified(line: OrderDetailFragment['lines'][number]): boolean {\r\n return !!this.modifyOrderInput.adjustOrderLines?.find(\r\n l => l.orderLineId === line.id && l.quantity !== line.quantity,\r\n );\r\n }\r\n\r\n getInitialLineQuantity(lineId: string): number {\r\n const adjustedLine = this.modifyOrderInput.adjustOrderLines?.find(l => l.orderLineId === lineId);\r\n if (adjustedLine) {\r\n return adjustedLine.quantity;\r\n }\r\n const addedLine = this.modifyOrderInput.addItems?.find(l => this.getIdForAddedItem(l) === lineId);\r\n if (addedLine) {\r\n return addedLine.quantity ?? 1;\r\n }\r\n const line = this.orderSnapshot.lines.find(l => l.id === lineId);\r\n return line ? line.quantity : 1;\r\n }\r\n\r\n updateLineQuantity(line: OrderDetailFragment['lines'][number] | AddedLine, quantity: string) {\r\n const { adjustOrderLines } = this.modifyOrderInput;\r\n if (this.isAddedLine(line)) {\r\n const row = this.modifyOrderInput.addItems?.find(\r\n l => l.productVariantId === line.productVariant.id,\r\n );\r\n if (row) {\r\n row.quantity = +quantity;\r\n }\r\n } else {\r\n let row = adjustOrderLines?.find(l => l.orderLineId === line.id);\r\n if (row && +quantity === line.quantity) {\r\n // Remove the modification if the quantity is the same as\r\n // the original order\r\n adjustOrderLines?.splice(adjustOrderLines?.indexOf(row), 1);\r\n }\r\n if (!row) {\r\n row = { orderLineId: line.id, quantity: +quantity };\r\n adjustOrderLines?.push(row);\r\n }\r\n row.quantity = +quantity;\r\n }\r\n }\r\n\r\n isAddedLine(line: OrderDetailFragment['lines'][number] | AddedLine): line is AddedLine {\r\n return (line as AddedLine).id.startsWith('added-');\r\n }\r\n\r\n updateAddedItemQuantity(item: AddedLine, quantity: string) {\r\n const row = this.modifyOrderInput.addItems?.find(l => l.productVariantId === item.productVariant.id);\r\n if (row) {\r\n row.quantity = +quantity;\r\n }\r\n }\r\n\r\n trackByProductVariantId(index: number, item: AddedLine) {\r\n return item.productVariant.id;\r\n }\r\n\r\n getSelectedItemPrice(result: ProductSelectorItem | undefined): number {\r\n switch (result?.priceWithTax.__typename) {\r\n case 'SinglePrice':\r\n return result.priceWithTax.value;\r\n default:\r\n return 0;\r\n }\r\n }\r\n\r\n addItemToOrder(result: ProductSelectorItem | undefined) {\r\n if (!result) {\r\n return;\r\n }\r\n const customFields = this.orderLineCustomFields.length\r\n ? this.addItemCustomFieldsForm.value\r\n : undefined;\r\n let row = this.modifyOrderInput.addItems?.find(l =>\r\n this.isMatchingAddItemRow(l, result, customFields),\r\n );\r\n if (!row) {\r\n row = { productVariantId: result.productVariantId, quantity: 1 };\r\n if (customFields) {\r\n row.customFields = customFields;\r\n }\r\n this.modifyOrderInput.addItems?.push(row);\r\n } else {\r\n row.quantity++;\r\n }\r\n if (customFields) {\r\n const formGroup = new UntypedFormGroup({});\r\n for (const [key, value] of Object.entries(customFields)) {\r\n formGroup.addControl(key, new UntypedFormControl(value));\r\n }\r\n this.addItemCustomFieldsFormArray.push(formGroup);\r\n formGroup.valueChanges.pipe(takeUntil(this.destroy$)).subscribe(value => {\r\n if (row) {\r\n row.customFields = value;\r\n }\r\n });\r\n }\r\n this.addItemCustomFieldsForm.reset({});\r\n this.addItemSelectedVariant = undefined;\r\n this.addedVariants.set(result.productVariantId, result);\r\n }\r\n\r\n getShippingLineDetails(shippingLine: OrderDetailFragment['shippingLines'][number]): {\r\n name: string;\r\n price: number;\r\n } {\r\n const updatedMethod = this.updatedShippingMethods[shippingLine.id];\r\n if (updatedMethod) {\r\n return {\r\n name: updatedMethod.name || updatedMethod.code,\r\n price: updatedMethod.priceWithTax,\r\n };\r\n } else {\r\n return {\r\n name: shippingLine.shippingMethod.name || shippingLine.shippingMethod.code,\r\n price: shippingLine.discountedPriceWithTax,\r\n };\r\n }\r\n }\r\n\r\n setShippingMethod(shippingLineId: string) {\r\n const currentShippingMethod =\r\n this.updatedShippingMethods[shippingLineId] ??\r\n this.entity?.shippingLines.find(l => l.id === shippingLineId)?.shippingMethod;\r\n if (!currentShippingMethod) {\r\n return;\r\n }\r\n this.dataService.order\r\n .getDraftOrderEligibleShippingMethods(this.id)\r\n .mapSingle(({ eligibleShippingMethodsForDraftOrder }) => eligibleShippingMethodsForDraftOrder)\r\n .pipe(\r\n switchMap(methods =>\r\n this.modalService\r\n .fromComponent(SelectShippingMethodDialogComponent, {\r\n locals: {\r\n eligibleShippingMethods: methods,\r\n currencyCode: this.entity?.currencyCode,\r\n currentSelectionId: currentShippingMethod.id,\r\n },\r\n })\r\n .pipe(\r\n map(result => {\r\n if (result) {\r\n return methods.find(method => method.id === result);\r\n }\r\n }),\r\n ),\r\n ),\r\n )\r\n .subscribe(result => {\r\n if (result) {\r\n this.updatedShippingMethods[shippingLineId] = result;\r\n this.changeDetectorRef.markForCheck();\r\n }\r\n });\r\n }\r\n\r\n private isMatchingAddItemRow(\r\n row: ModifyOrderData['addItems'][number],\r\n result: ProductSelectorItem,\r\n customFields: any,\r\n ): boolean {\r\n return (\r\n row.productVariantId === result.productVariantId &&\r\n JSON.stringify(row.customFields) === JSON.stringify(customFields)\r\n );\r\n }\r\n\r\n removeAddedItem(id: string) {\r\n this.modifyOrderInput.addItems = this.modifyOrderInput.addItems?.filter(l => {\r\n const itemId = this.getIdForAddedItem(l);\r\n return itemId !== id;\r\n });\r\n }\r\n\r\n getSurchargePrices(surcharge: SurchargeInput) {\r\n const priceWithTax = surcharge.priceIncludesTax\r\n ? surcharge.price\r\n : Math.round(surcharge.price * ((100 + (surcharge.taxRate || 0)) / 100));\r\n const price = surcharge.priceIncludesTax\r\n ? Math.round(surcharge.price / ((100 + (surcharge.taxRate || 0)) / 100))\r\n : surcharge.price;\r\n return {\r\n price,\r\n priceWithTax,\r\n };\r\n }\r\n\r\n addSurcharge(value: any) {\r\n this.modifyOrderInput.surcharges?.push(value);\r\n this.surchargeForm.reset({\r\n price: 0,\r\n priceIncludesTax: true,\r\n taxRate: 0,\r\n });\r\n }\r\n\r\n removeSurcharge(index: number) {\r\n this.modifyOrderInput.surcharges?.splice(index, 1);\r\n }\r\n\r\n previewAndModify(order: OrderDetailFragment) {\r\n const modifyOrderInput: ModifyOrderData = {\r\n ...this.modifyOrderInput,\r\n adjustOrderLines: this.modifyOrderInput.adjustOrderLines.map(line =>\r\n transformRelationCustomFieldInputs(simpleDeepClone(line), this.orderLineCustomFields),\r\n ),\r\n };\r\n const input: ModifyOrderInput = {\r\n ...modifyOrderInput,\r\n ...(this.billingAddressForm.dirty ? { updateBillingAddress: this.billingAddressForm.value } : {}),\r\n ...(this.shippingAddressForm.dirty\r\n ? { updateShippingAddress: this.shippingAddressForm.value }\r\n : {}),\r\n dryRun: true,\r\n couponCodes: this.couponCodesControl.dirty ? this.couponCodesControl.value : undefined,\r\n note: this.note ?? '',\r\n options: {\r\n recalculateShipping: this.recalculateShipping,\r\n },\r\n };\r\n if (Object.entries(this.updatedShippingMethods).length) {\r\n input.shippingMethodIds = order.shippingLines.map(l =>\r\n this.updatedShippingMethods[l.id]\r\n ? this.updatedShippingMethods[l.id].id\r\n : l.shippingMethod.id,\r\n );\r\n }\r\n this.dataService.order\r\n .modifyOrder(input)\r\n .pipe(\r\n switchMap(({ modifyOrder }) => {\r\n switch (modifyOrder.__typename) {\r\n case 'Order':\r\n return this.modalService.fromComponent(OrderEditsPreviewDialogComponent, {\r\n size: 'xl',\r\n closable: false,\r\n locals: {\r\n order: modifyOrder,\r\n orderSnapshot: this.orderSnapshot,\r\n orderLineCustomFields: this.orderLineCustomFields,\r\n modifyOrderInput: input,\r\n addedLines: this.addedLines,\r\n shippingAddressForm: this.shippingAddressForm,\r\n billingAddressForm: this.billingAddressForm,\r\n couponCodesControl: this.couponCodesControl,\r\n updatedShippingMethods: this.updatedShippingMethods,\r\n },\r\n });\r\n case 'InsufficientStockError':\r\n case 'NegativeQuantityError':\r\n case 'NoChangesSpecifiedError':\r\n case 'OrderLimitError':\r\n case 'OrderModificationStateError':\r\n case 'PaymentMethodMissingError':\r\n case 'RefundPaymentIdMissingError':\r\n case 'CouponCodeLimitError':\r\n case 'CouponCodeExpiredError':\r\n case 'IneligibleShippingMethodError':\r\n case 'CouponCodeInvalidError': {\r\n this.notificationService.error(modifyOrder.message);\r\n return of(false as const);\r\n }\r\n case null:\r\n case undefined:\r\n return of(false as const);\r\n default:\r\n assertNever(modifyOrder);\r\n }\r\n }),\r\n switchMap(result => {\r\n if (!result || result.result === OrderEditResultType.Cancel) {\r\n // re-fetch so that the preview values get overwritten in the cache.\r\n return this.dataService.order.getOrder(this.id).mapSingle(() => false);\r\n } else {\r\n // Do the modification\r\n const wetRunInput = {\r\n ...input,\r\n dryRun: false,\r\n };\r\n if (result.result === OrderEditResultType.Refund) {\r\n wetRunInput.refunds = result.refunds;\r\n }\r\n return this.dataService.order.modifyOrder(wetRunInput).pipe(\r\n switchMap(({ modifyOrder }) => {\r\n if (modifyOrder.__typename === 'Order') {\r\n const priceDelta =\r\n modifyOrder.totalWithTax - this.orderSnapshot.totalWithTax;\r\n const nextState =\r\n 0 < priceDelta ? 'ArrangingAdditionalPayment' : this.previousState;\r\n\r\n return this.dataService.order\r\n .transitionToState(order.id, nextState)\r\n .pipe(mapTo(true));\r\n } else {\r\n this.notificationService.error((modifyOrder as ErrorResult).message);\r\n return EMPTY;\r\n }\r\n }),\r\n );\r\n }\r\n }),\r\n )\r\n .subscribe(result => {\r\n if (result) {\r\n this.router.navigate(['../'], { relativeTo: this.route });\r\n }\r\n });\r\n }\r\n\r\n private addAddressCustomFieldsFormGroup(\r\n parentFormGroup: UntypedFormGroup,\r\n address?: OrderAddressFragment | null,\r\n ) {\r\n if (address && this.addressCustomFields.length) {\r\n const addressCustomFieldsFormGroup = new UntypedFormGroup({});\r\n for (const customFieldDef of this.addressCustomFields) {\r\n const name = customFieldDef.name;\r\n const value = (address as any).customFields?.[name];\r\n addressCustomFieldsFormGroup.addControl(name, new UntypedFormControl(value));\r\n }\r\n parentFormGroup.addControl('customFields', addressCustomFieldsFormGroup);\r\n }\r\n }\r\n\r\n private createOrderSnapshot(order: OrderDetailFragment): OrderSnapshot {\r\n return {\r\n totalWithTax: order.totalWithTax,\r\n currencyCode: order.currencyCode,\r\n couponCodes: order.couponCodes,\r\n lines: [...order.lines].map(line => ({ ...line })),\r\n shippingLines: [...order.shippingLines].map(line => ({ ...line })),\r\n };\r\n }\r\n\r\n protected setFormValues(entity: OrderDetailFragment, languageCode: LanguageCode): void {\r\n /* not used */\r\n }\r\n}\r\n","<vdr-page-block>\r\n <vdr-action-bar>\r\n <vdr-ab-right>\r\n <vdr-action-bar-items locationId=\"order-list\" />\r\n <ng-container *ngIf=\"canCreateDraftOrder\">\r\n <a class=\"btn\" *vdrIfPermissions=\"['CreateOrder']\" [routerLink]=\"['./draft/create']\">\r\n <clr-icon shape=\"plus\"></clr-icon>\r\n {{ 'catalog.create-draft-order' | translate }}\r\n </a>\r\n </ng-container>\r\n <vdr-action-bar-dropdown-menu locationId=\"order-list\" />\r\n </vdr-ab-right>\r\n </vdr-action-bar>\r\n</vdr-page-block>\r\n<vdr-data-table-2\r\n class=\"mt-2\"\r\n [id]=\"dataTableListId\"\r\n [items]=\"items$ | async\"\r\n [itemsPerPage]=\"itemsPerPage$ | async\"\r\n [totalItems]=\"totalItems$ | async\"\r\n [currentPage]=\"currentPage$ | async\"\r\n [filters]=\"filters\"\r\n (pageChange)=\"setPageNumber($event)\"\r\n (itemsPerPageChange)=\"setItemsPerPage($event)\"\r\n (visibleColumnsChange)=\"setVisibleColumns($event)\"\r\n>\r\n <vdr-bulk-action-menu\r\n locationId=\"order-list\"\r\n [hostComponent]=\"this\"\r\n [selectionManager]=\"selectionManager\"\r\n ></vdr-bulk-action-menu>\r\n <vdr-dt2-search\r\n [searchTermControl]=\"searchTermControl\"\r\n [searchTermPlaceholder]=\"'order.search-by-order-filters' | translate\"\r\n />\r\n <vdr-dt2-column [heading]=\"'common.id' | translate\" id=\"id\" [hiddenByDefault]=\"true\" [sort]=\"sorts.get('id')\">\r\n <ng-template let-order=\"item\">\r\n {{ order.id }}\r\n </ng-template>\r\n </vdr-dt2-column>\r\n <vdr-dt2-column [heading]=\"'common.created-at' | translate\" id=\"created-at\" [hiddenByDefault]=\"true\">\r\n <ng-template let-order=\"item\">\r\n {{ order.createdAt | localeDate : 'short' }}\r\n </ng-template>\r\n </vdr-dt2-column>\r\n <vdr-dt2-column [heading]=\"'common.code' | translate\" id=\"code\" [optional]=\"false\">\r\n <ng-template let-order=\"item\">\r\n <a class=\"button-ghost\" [routerLink]=\"order.state === 'Draft' ? ['./draft', order.id] : ['./', order.id]\"\r\n ><span>{{ order.code }}</span>\r\n <clr-icon shape=\"arrow right\"></clr-icon>\r\n </a>\r\n </ng-template>\r\n </vdr-dt2-column>\r\n <vdr-dt2-column [heading]=\"'order.customer' | translate\" id=\"customer\" [sort]=\"sorts.get('customerLastName')\">\r\n <ng-template let-order=\"item\">\r\n <vdr-customer-label\r\n [customer]=\"order.customer\"\r\n (click)=\"$event.stopPropagation()\"\r\n ></vdr-customer-label>\r\n </ng-template>\r\n </vdr-dt2-column>\r\n <vdr-dt2-column [heading]=\"'order.order-type' | translate\" id=\"order-type\" [hiddenByDefault]=\"true\">\r\n <ng-template let-order=\"item\">\r\n <vdr-chip *ngIf=\"order.type === OrderType.Regular\">{{ 'order.order-type-regular' | translate }}</vdr-chip>\r\n <vdr-chip *ngIf=\"order.type === OrderType.Aggregate\">{{ 'order.order-type-aggregate' | translate }}</vdr-chip>\r\n <vdr-chip *ngIf=\"order.type === OrderType.Seller\">{{ 'order.order-type-seller' | translate }}</vdr-chip>\r\n </ng-template>\r\n </vdr-dt2-column>\r\n <vdr-dt2-column [heading]=\"'order.state' | translate\" id=\"state\" [sort]=\"sorts.get('state')\">\r\n <ng-template let-order=\"item\">\r\n <vdr-order-state-label [state]=\"order.state\"></vdr-order-state-label>\r\n </ng-template>\r\n </vdr-dt2-column>\r\n <vdr-dt2-column [heading]=\"'order.total' | translate\" id=\"total\" [sort]=\"sorts.get('totalWithTax')\">\r\n <ng-template let-order=\"item\">\r\n {{ order.totalWithTax | localeCurrency : order.currencyCode }}\r\n </ng-template>\r\n </vdr-dt2-column>\r\n <vdr-dt2-column [heading]=\"'common.updated-at' | translate\" id=\"updated-at\">\r\n <ng-template let-order=\"item\">\r\n {{ order.updatedAt | timeAgo }}\r\n </ng-template>\r\n </vdr-dt2-column>\r\n <vdr-dt2-column [heading]=\"'order.placed-at' | translate\" id=\"placed-at\" [sort]=\"sorts.get('orderPlacedAt')\">\r\n <ng-template let-order=\"item\">\r\n {{ order.orderPlacedAt | localeDate : 'short' }}\r\n </ng-template>\r\n </vdr-dt2-column>\r\n <vdr-dt2-column [heading]=\"'order.shipping' | translate\" id=\"shipping\">\r\n <ng-template let-order=\"item\">\r\n {{ getShippingNames(order) }}\r\n </ng-template>\r\n </vdr-dt2-column>\r\n <vdr-dt2-custom-field-column\r\n *ngFor=\"let customField of customFields\"\r\n [customField]=\"customField\"\r\n [sorts]=\"sorts\"\r\n />\r\n</vdr-data-table-2>\r\n","import { ChangeDetectionStrategy, Component, OnInit } from '@angular/core';\r\nimport { marker as _ } from '@biesbjerg/ngx-translate-extract-marker';\r\nimport {\r\n ChannelService,\r\n GetOrderListDocument,\r\n getOrderStateTranslationToken,\r\n LogicalOperator,\r\n OrderListOptions,\r\n OrderType,\r\n ServerConfigService,\r\n TypedBaseListComponent,\r\n} from '@vendure/admin-ui/core';\r\nimport { Order } from '@vendure/common/lib/generated-types';\r\nimport { tap } from 'rxjs/operators';\r\n\r\n@Component({\r\n selector: 'vdr-order-list',\r\n templateUrl: './order-list.component.html',\r\n styleUrls: ['./order-list.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class OrderListComponent\r\n extends TypedBaseListComponent<typeof GetOrderListDocument, 'orders'>\r\n implements OnInit\r\n{\r\n dataTableListId = 'order-list';\r\n orderStates = this.serverConfigService.getOrderProcessStates().map(item => item.name);\r\n readonly OrderType = OrderType;\r\n readonly customFields = this.getCustomFieldConfig('Order');\r\n readonly filters = this.createFilterCollection()\r\n .addIdFilter()\r\n .addDateFilters()\r\n .addFilter({\r\n name: 'active',\r\n type: { kind: 'boolean' },\r\n label: _('order.filter-is-active'),\r\n filterField: 'active',\r\n })\r\n .addFilter({\r\n name: 'totalWithTax',\r\n type: { kind: 'number', inputType: 'currency', currencyCode: 'USD' },\r\n label: _('order.total'),\r\n filterField: 'totalWithTax',\r\n })\r\n .addFilter({\r\n name: 'state',\r\n type: {\r\n kind: 'select',\r\n options: this.orderStates.map(s => ({ value: s, label: getOrderStateTranslationToken(s) })),\r\n },\r\n label: _('order.state'),\r\n filterField: 'state',\r\n })\r\n .addFilter({\r\n name: 'type',\r\n type: {\r\n kind: 'select',\r\n options: [\r\n { value: OrderType.Regular, label: _('order.order-type-regular') },\r\n { value: OrderType.Aggregate, label: _('order.order-type-aggregate') },\r\n { value: OrderType.Seller, label: _('order.order-type-seller') },\r\n ],\r\n },\r\n label: _('order.order-type'),\r\n filterField: 'type',\r\n })\r\n .addFilter({\r\n name: 'orderPlacedAt',\r\n type: { kind: 'dateRange' },\r\n label: _('order.placed-at'),\r\n filterField: 'orderPlacedAt',\r\n })\r\n .addFilter({\r\n name: 'customerLastName',\r\n type: { kind: 'text' },\r\n label: _('customer.last-name'),\r\n filterField: 'customerLastName',\r\n })\r\n .addFilter({\r\n name: 'transactionId',\r\n type: { kind: 'text' },\r\n label: _('order.transaction-id'),\r\n filterField: 'transactionId',\r\n })\r\n .addCustomFieldFilters(this.customFields)\r\n .connectToRoute(this.route);\r\n\r\n readonly sorts = this.createSortCollection()\r\n .defaultSort('updatedAt', 'DESC')\r\n .addSort({ name: 'id' })\r\n .addSort({ name: 'createdAt' })\r\n .addSort({ name: 'updatedAt' })\r\n .addSort({ name: 'orderPlacedAt' })\r\n .addSort({ name: 'customerLastName' })\r\n .addSort({ name: 'state' })\r\n .addSort({ name: 'totalWithTax' })\r\n .addCustomFieldSorts(this.customFields)\r\n .connectToRoute(this.route);\r\n\r\n canCreateDraftOrder = false;\r\n private activeChannelIsDefaultChannel = false;\r\n\r\n constructor(\r\n protected serverConfigService: ServerConfigService,\r\n private channelService: ChannelService,\r\n ) {\r\n super();\r\n super.configure({\r\n document: GetOrderListDocument,\r\n getItems: result => result.orders,\r\n setVariables: (skip, take) => this.createQueryOptions(skip, take, this.searchTermControl.value),\r\n refreshListOnChanges: [this.filters.valueChanges, this.sorts.valueChanges],\r\n });\r\n\r\n this.canCreateDraftOrder = !!this.serverConfigService\r\n .getOrderProcessStates()\r\n .find(state => state.name === 'Created')\r\n ?.to.includes('Draft');\r\n }\r\n\r\n ngOnInit() {\r\n super.ngOnInit();\r\n const isDefaultChannel$ = this.channelService.defaultChannelIsActive$.pipe(\r\n tap(isDefault => (this.activeChannelIsDefaultChannel = isDefault)),\r\n );\r\n super.refreshListOnChanges(this.filters.valueChanges, this.sorts.valueChanges, isDefaultChannel$);\r\n }\r\n\r\n private createQueryOptions(\r\n // eslint-disable-next-line @typescript-eslint/no-shadow\r\n skip: number,\r\n take: number,\r\n searchTerm: string | null,\r\n ): { options: OrderListOptions } {\r\n let filterInput = this.filters.createFilterInput();\r\n if (this.activeChannelIsDefaultChannel) {\r\n filterInput = {\r\n ...(filterInput ?? {}),\r\n };\r\n }\r\n if (searchTerm) {\r\n filterInput = {\r\n code: {\r\n contains: searchTerm,\r\n },\r\n customerLastName: {\r\n contains: searchTerm,\r\n },\r\n transactionId: {\r\n contains: searchTerm,\r\n },\r\n };\r\n }\r\n return {\r\n options: {\r\n skip,\r\n take,\r\n filter: {\r\n ...(filterInput ?? {}),\r\n },\r\n filterOperator: searchTerm ? LogicalOperator.OR : LogicalOperator.AND,\r\n sort: this.sorts.createSortInput(),\r\n },\r\n };\r\n }\r\n\r\n getShippingNames(order: Order) {\r\n if (order.shippingLines.length) {\r\n return order.shippingLines.map(shippingLine => shippingLine.shippingMethod.name).join(', ');\r\n } else {\r\n return '';\r\n }\r\n }\r\n}\r\n","<vdr-labeled-data [label]=\"'order.amount' | translate\">\r\n {{ refund.total | localeCurrency: currencyCode }}\r\n</vdr-labeled-data>\r\n<vdr-labeled-data *ngIf=\"refund.transactionId\" [label]=\"'order.transaction-id' | translate\">\r\n {{ refund.transactionId }}\r\n</vdr-labeled-data>\r\n<vdr-labeled-data [label]=\"'order.payment-metadata' | translate\">\r\n <vdr-object-tree [value]=\"refund.metadata\"></vdr-object-tree>\r\n</vdr-labeled-data>\r\n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\r\nimport { CurrencyCode, OrderDetailFragment } from '@vendure/admin-ui/core';\r\n\r\n@Component({\r\n selector: 'vdr-refund-detail',\r\n templateUrl: './refund-detail.component.html',\r\n styleUrls: ['./refund-detail.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class RefundDetailComponent {\r\n @Input() refund: NonNullable<OrderDetailFragment['payments']>[number]['refunds'][number];\r\n @Input() currencyCode: CurrencyCode;\r\n}\r\n","import { ADDRESS_FRAGMENT } from '@vendure/admin-ui/core';\r\nimport { gql } from 'apollo-angular';\r\n\r\nexport const GET_CUSTOMER_ADDRESSES = gql`\r\n query GetCustomerAddresses($customerId: ID!) {\r\n customer(id: $customerId) {\r\n id\r\n addresses {\r\n ...Address\r\n }\r\n }\r\n }\r\n ${ADDRESS_FRAGMENT}\r\n`;\r\n","import { Injectable } from '@angular/core';\r\nimport { ActivatedRouteSnapshot, Router, RouterStateSnapshot, UrlTree } from '@angular/router';\r\nimport { DataService, GetOrderStateQuery, GetOrderStateQueryVariables } from '@vendure/admin-ui/core';\r\nimport { gql } from 'apollo-angular';\r\nimport { Observable } from 'rxjs';\r\nimport { map } from 'rxjs/operators';\r\n\r\nexport const GET_ORDER_STATE = gql`\r\n query GetOrderState($id: ID!) {\r\n order(id: $id) {\r\n id\r\n state\r\n }\r\n }\r\n`;\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class OrderGuard {\r\n constructor(private dataService: DataService, private router: Router) {}\r\n\r\n canActivate(\r\n route: ActivatedRouteSnapshot,\r\n state: RouterStateSnapshot,\r\n ): Observable<boolean | UrlTree> | Promise<boolean | UrlTree> | boolean | UrlTree {\r\n const isDraft = state.url.includes('orders/draft');\r\n const isModifying = state.url.includes('/modify');\r\n const id = route.paramMap.get('id');\r\n if (isDraft) {\r\n if (id === 'create') {\r\n return this.dataService.order\r\n .createDraftOrder()\r\n .pipe(\r\n map(({ createDraftOrder }) =>\r\n this.router.parseUrl(`/orders/draft/${createDraftOrder.id}`),\r\n ),\r\n );\r\n } else {\r\n return true;\r\n }\r\n } else {\r\n return (\r\n this.dataService\r\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\r\n .query<GetOrderStateQuery, GetOrderStateQueryVariables>(GET_ORDER_STATE, { id: id! })\r\n .single$.pipe(\r\n map(({ order }) => {\r\n if (order?.state === 'Modifying' && !isModifying) {\r\n return this.router.parseUrl(`/orders/${id}/modify`);\r\n } else {\r\n return true;\r\n }\r\n }),\r\n )\r\n );\r\n }\r\n }\r\n}\r\n","import { Route } from '@angular/router';\nimport { marker as _ } from '@biesbjerg/ngx-translate-extract-marker';\nimport { PageComponent, PageService } from '@vendure/admin-ui/core';\nimport { OrderGuard } from './providers/routing/order.guard';\n\nexport const createRoutes = (pageService: PageService): Route[] => [\n {\n path: '',\n component: PageComponent,\n data: {\n locationId: 'order-list',\n breadcrumb: _('breadcrumb.orders'),\n },\n children: pageService.getPageTabRoutes('order-list'),\n },\n {\n path: 'draft/:id',\n component: PageComponent,\n canActivate: [OrderGuard],\n data: {\n locationId: 'draft-order-detail',\n breadcrumb: { label: _('breadcrumb.orders'), link: ['../'] },\n },\n children: pageService.getPageTabRoutes('draft-order-detail'),\n },\n {\n path: ':id',\n component: PageComponent,\n canActivate: [OrderGuard],\n data: {\n locationId: 'order-detail',\n breadcrumb: { label: _('breadcrumb.orders'), link: ['../'] },\n },\n children: pageService.getPageTabRoutes('order-detail'),\n },\n {\n path: ':aggregateOrderId/seller-orders/:id',\n component: PageComponent,\n canActivate: [OrderGuard],\n data: {\n locationId: 'order-detail',\n breadcrumb: { label: _('breadcrumb.orders'), link: ['../'] },\n },\n children: pageService.getPageTabRoutes('order-detail'),\n },\n {\n path: ':id/modify',\n component: PageComponent,\n canActivate: [OrderGuard],\n data: {\n locationId: 'modify-order',\n breadcrumb: { label: _('breadcrumb.orders'), link: ['../'] },\n },\n children: pageService.getPageTabRoutes('modify-order'),\n },\n];\n","import { NgModule } from '@angular/core';\r\nimport { RouterModule, ROUTES } from '@angular/router';\r\nimport { marker as _ } from '@biesbjerg/ngx-translate-extract-marker';\r\nimport {\r\n detailComponentWithResolver,\r\n OrderDetailQueryDocument,\r\n OrderType,\r\n PageService,\r\n SharedModule,\r\n} from '@vendure/admin-ui/core';\r\n\r\nimport { AddManualPaymentDialogComponent } from './components/add-manual-payment-dialog/add-manual-payment-dialog.component';\r\nimport { CancelOrderDialogComponent } from './components/cancel-order-dialog/cancel-order-dialog.component';\r\nimport { CouponCodeSelectorComponent } from './components/coupon-code-selector/coupon-code-selector.component';\r\nimport { DraftOrderDetailComponent } from './components/draft-order-detail/draft-order-detail.component';\r\nimport { DraftOrderVariantSelectorComponent } from './components/draft-order-variant-selector/draft-order-variant-selector.component';\r\nimport { FulfillOrderDialogComponent } from './components/fulfill-order-dialog/fulfill-order-dialog.component';\r\nimport { FulfillmentCardComponent } from './components/fulfillment-card/fulfillment-card.component';\r\nimport { FulfillmentDetailComponent } from './components/fulfillment-detail/fulfillment-detail.component';\r\nimport { FulfillmentStateLabelComponent } from './components/fulfillment-state-label/fulfillment-state-label.component';\r\nimport { LineFulfillmentComponent } from './components/line-fulfillment/line-fulfillment.component';\r\nimport { LineRefundsComponent } from './components/line-refunds/line-refunds.component';\r\nimport { ModificationDetailComponent } from './components/modification-detail/modification-detail.component';\r\nimport { OrderCustomFieldsCardComponent } from './components/order-custom-fields-card/order-custom-fields-card.component';\r\nimport { OrderTotalColumnComponent } from './components/order-data-table/order-total-column.component';\r\nimport { OrderDetailComponent } from './components/order-detail/order-detail.component';\r\nimport { OrderEditorComponent } from './components/order-editor/order-editor.component';\r\nimport { OrderEditsPreviewDialogComponent } from './components/order-edits-preview-dialog/order-edits-preview-dialog.component';\r\nimport { OrderHistoryEntryHostComponent } from './components/order-history/order-history-entry-host.component';\r\nimport { OrderHistoryComponent } from './components/order-history/order-history.component';\r\nimport { OrderListComponent } from './components/order-list/order-list.component';\r\nimport { OrderPaymentCardComponent } from './components/order-payment-card/order-payment-card.component';\r\nimport { OrderProcessGraphDialogComponent } from './components/order-process-graph-dialog/order-process-graph-dialog.component';\r\nimport { OrderProcessEdgeComponent } from './components/order-process-graph/order-process-edge.component';\r\nimport { OrderProcessGraphComponent } from './components/order-process-graph/order-process-graph.component';\r\nimport { OrderProcessNodeComponent } from './components/order-process-graph/order-process-node.component';\r\nimport { OrderStateSelectDialogComponent } from './components/order-state-select-dialog/order-state-select-dialog.component';\r\nimport { OrderTableComponent } from './components/order-table/order-table.component';\r\nimport { PaymentDetailComponent } from './components/payment-detail/payment-detail.component';\r\nimport { PaymentStateLabelComponent } from './components/payment-state-label/payment-state-label.component';\r\nimport { RefundDetailComponent } from './components/refund-detail/refund-detail.component';\r\nimport { RefundOrderDialogComponent } from './components/refund-order-dialog/refund-order-dialog.component';\r\nimport { RefundStateLabelComponent } from './components/refund-state-label/refund-state-label.component';\r\nimport { SelectAddressDialogComponent } from './components/select-address-dialog/select-address-dialog.component';\r\nimport { SelectCustomerDialogComponent } from './components/select-customer-dialog/select-customer-dialog.component';\r\nimport { SelectShippingMethodDialogComponent } from './components/select-shipping-method-dialog/select-shipping-method-dialog.component';\r\nimport { SellerOrdersCardComponent } from './components/seller-orders-card/seller-orders-card.component';\r\nimport { SettleRefundDialogComponent } from './components/settle-refund-dialog/settle-refund-dialog.component';\r\nimport { SimpleItemListComponent } from './components/simple-item-list/simple-item-list.component';\r\nimport { createRoutes } from './order.routes';\r\nimport { OrderDataTableComponent } from './components/order-data-table/order-data-table.component';\r\nimport { PaymentForRefundSelectorComponent } from './components/payment-for-refund-selector/payment-for-refund-selector.component';\r\nimport { OrderModificationSummaryComponent } from './components/order-modification-summary/order-modification-summary.component';\r\n\r\n@NgModule({\r\n imports: [SharedModule, RouterModule.forChild([])],\r\n providers: [\r\n {\r\n provide: ROUTES,\r\n useFactory: (pageService: PageService) => createRoutes(pageService),\r\n multi: true,\r\n deps: [PageService],\r\n },\r\n ],\r\n declarations: [\r\n OrderListComponent,\r\n OrderDetailComponent,\r\n FulfillOrderDialogComponent,\r\n LineFulfillmentComponent,\r\n RefundOrderDialogComponent,\r\n CancelOrderDialogComponent,\r\n PaymentStateLabelComponent,\r\n LineRefundsComponent,\r\n OrderPaymentCardComponent,\r\n RefundStateLabelComponent,\r\n SettleRefundDialogComponent,\r\n OrderHistoryComponent,\r\n FulfillmentDetailComponent,\r\n PaymentDetailComponent,\r\n SimpleItemListComponent,\r\n OrderCustomFieldsCardComponent,\r\n OrderProcessGraphComponent,\r\n OrderProcessNodeComponent,\r\n OrderProcessEdgeComponent,\r\n OrderProcessGraphDialogComponent,\r\n FulfillmentStateLabelComponent,\r\n FulfillmentCardComponent,\r\n OrderEditorComponent,\r\n OrderTableComponent,\r\n OrderEditsPreviewDialogComponent,\r\n ModificationDetailComponent,\r\n AddManualPaymentDialogComponent,\r\n OrderStateSelectDialogComponent,\r\n DraftOrderDetailComponent,\r\n DraftOrderVariantSelectorComponent,\r\n SelectCustomerDialogComponent,\r\n SelectAddressDialogComponent,\r\n CouponCodeSelectorComponent,\r\n SelectShippingMethodDialogComponent,\r\n OrderHistoryEntryHostComponent,\r\n SellerOrdersCardComponent,\r\n OrderDataTableComponent,\r\n OrderTotalColumnComponent,\r\n PaymentForRefundSelectorComponent,\r\n OrderModificationSummaryComponent,\r\n RefundDetailComponent,\r\n ],\r\n exports: [OrderCustomFieldsCardComponent],\r\n})\r\nexport class OrderModule {\r\n private static hasRegisteredTabsAndBulkActions = false;\r\n\r\n constructor(pageService: PageService) {\r\n if (OrderModule.hasRegisteredTabsAndBulkActions) {\r\n return;\r\n }\r\n pageService.registerPageTab({\r\n priority: 0,\r\n location: 'order-list',\r\n tab: _('order.orders'),\r\n route: '',\r\n component: OrderListComponent,\r\n });\r\n pageService.registerPageTab({\r\n priority: 0,\r\n location: 'order-detail',\r\n tab: _('order.order'),\r\n route: '',\r\n component: detailComponentWithResolver({\r\n component: OrderDetailComponent,\r\n query: OrderDetailQueryDocument,\r\n entityKey: 'order',\r\n getBreadcrumbs: entity =>\r\n entity?.type !== OrderType.Seller || !entity?.aggregateOrder\r\n ? [\r\n {\r\n label: `${entity?.code}`,\r\n link: [entity?.id],\r\n },\r\n ]\r\n : [\r\n {\r\n label: `${entity?.aggregateOrder?.code}`,\r\n link: ['/orders/', entity?.aggregateOrder?.id],\r\n },\r\n {\r\n label: _('breadcrumb.seller-orders'),\r\n link: ['/orders/', entity?.aggregateOrder?.id],\r\n },\r\n {\r\n label: `${entity?.code}`,\r\n link: [entity?.id],\r\n },\r\n ],\r\n }),\r\n });\r\n pageService.registerPageTab({\r\n priority: 0,\r\n location: 'draft-order-detail',\r\n tab: _('order.order'),\r\n route: '',\r\n component: detailComponentWithResolver({\r\n component: DraftOrderDetailComponent,\r\n query: OrderDetailQueryDocument,\r\n entityKey: 'order',\r\n getBreadcrumbs: entity => [\r\n {\r\n label: _('order.draft-order'),\r\n link: [entity?.id],\r\n },\r\n ],\r\n }),\r\n });\r\n pageService.registerPageTab({\r\n priority: 0,\r\n location: 'modify-order',\r\n tab: _('order.order'),\r\n route: '',\r\n component: detailComponentWithResolver({\r\n component: OrderEditorComponent,\r\n query: OrderDetailQueryDocument,\r\n entityKey: 'order',\r\n getBreadcrumbs: entity => [\r\n {\r\n label: entity?.code || 'order',\r\n link: ['/orders/', entity?.id],\r\n },\r\n {\r\n label: _('breadcrumb.modifying-order'),\r\n link: [entity?.id],\r\n },\r\n ],\r\n }),\r\n });\r\n OrderModule.hasRegisteredTabsAndBulkActions = true;\r\n }\r\n}\r\n"],"x_google_ignoreList":[16]}