@vendure/admin-ui-plugin 2.1.6 → 2.1.7
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.
- package/lib/admin-ui/539.d5cfcdff4ce41934.js.map +1 -1
- package/lib/admin-ui/{976.d3ac44aefe298211.js → 976.d934e59ba4861463.js} +14 -14
- package/lib/admin-ui/976.d934e59ba4861463.js.map +1 -0
- package/lib/admin-ui/i18n-messages/pt_BR.json +2 -2
- package/lib/admin-ui/i18n-messages/uk.json +166 -166
- package/lib/admin-ui/index.html +1 -1
- package/lib/admin-ui/{main.993ffd651e48802c.js → main.33a1ecfa53568dcf.js} +2 -2
- package/lib/admin-ui/{main.993ffd651e48802c.js.map → main.33a1ecfa53568dcf.js.map} +1 -1
- package/lib/admin-ui/{runtime.a8ec539c419fc3ea.js → runtime.11c11178386ceeb1.js} +2 -2
- package/lib/admin-ui/{runtime.a8ec539c419fc3ea.js.map → runtime.11c11178386ceeb1.js.map} +1 -1
- package/package.json +4 -4
- package/lib/admin-ui/976.d3ac44aefe298211.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"539.d5cfcdff4ce41934.js","mappings":"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","names":["i0","_r3","ctx_r2","cancel","ctx_r4","submit","ctx_r1","form","invalid","pristine","outstandingAmount","currencyCode","gql","AddManualPaymentDialogComponent","constructor","dataService","this","UntypedFormGroup","method","UntypedFormControl","Validators","required","transactionId","ngOnInit","paymentMethods$","query","GetAddManualPaymentMethodListDocument","options","take","mapSingle","data","paymentMethods","items","formValue","value","resolveWith","i1","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","_r6","_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","_","map","r","translate","lines","result","line","lineId","entries","quantityInOrder","find","orderId","getLineInputs","cancelShipping","orderLineId","filter","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","p","startWith","control","couponCodes","inputs","outputs","emit","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","item_r6","firstName","lastName","emailAddress","item_r8","selectedCustomer","SelectCustomerDialogComponent_ng_template_6_ng_template_4_Template","SelectCustomerDialogComponent_ng_template_6_ng_template_5_Template","customers$","isLoading","input$","customerForm","_r12","ctx_r13","SelectCustomerDialogComponent","title","email","getCustomerList","mapStream","customers","catchError","SelectCustomerDialogComponent_ng_template_0_Template","SelectCustomerDialogComponent_ng_template_6_Template","SelectCustomerDialogComponent_ng_template_11_Template","SelectCustomerDialogComponent_ng_template_12_Template","quote_r3","metadata","SelectShippingMethodDialogComponent_vdr_radio_card_2_vdr_object_tree_14_Template","price","priceWithTax","_r7","selectedMethod","SelectShippingMethodDialogComponent","currentSelectionId","eligibleShippingMethods","m","methodIdFn","SelectShippingMethodDialogComponent_ng_template_0_Template","SelectShippingMethodDialogComponent_vdr_radio_card_2_Template","SelectShippingMethodDialogComponent_ng_template_3_Template","state_r3","OrderStateSelectDialogComponent_ng_template_7_button_0_Template","_r8","ctx_r7","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","state","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","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","ctx_r0","customFieldsConfig","OrderCustomFieldsCardComponent","customFieldValues","updateClick","field","addControl","markAsPristine","dirty","dialog","buttons","label","returnValue","reset","OrderCustomFieldsCardComponent_div_0_Template","fulfilledCount","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","payments","all","payment","refunds","refund","LineRefundsComponent_span_0_Template","OrderTotalColumnComponent","DataTable2ColumnComponent","orderable","t","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","ctx_r25","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","ctx_r27","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","_r39","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","amount","OrderDataTableComponent_ng_container_19_tr_1_Template","shippingLine_r54","shippingMethod","OrderDataTableComponent","DataTable2Component","allColumns","columns","customFieldColumns","totalColumns","sortedColumns","dataTableConfig","getDataTableConfig","index","column","c","currentIndex","findIndex","splice","promotion","adjustmentSource","split","promotionAdjustment","getShippingNames","shippingLines","shippingLine","join","asset_r11","OrderTableComponent_ng_template_3_img_1_Template","OrderTableComponent_ng_template_3_ng_template_2_Template","line_r7","line_r12","line_r13","line_r14","unitPrice","line_r15","orderPlacedQuantity","OrderTableComponent_ng_template_15_ng_container_0_div_2_Template","_r25","draftInputBlur","valueAsNumber","ctx_r26","remove","OrderTableComponent_ng_template_15_ng_container_0_Template","OrderTableComponent_ng_template_15_ng_template_1_Template","isDraft","customField_r29","ctx_r34","discount_r35","OrderTableComponent_ng_template_19_ng_container_7_vdr_dropdown_1_div_5_Template","discounts_r32","OrderTableComponent_ng_template_19_ng_container_7_vdr_dropdown_1_Template","OrderTableComponent_ng_template_19_ng_container_7_Template","line_r30","linePriceWithTax","linePrice","getLineDiscounts","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$","_c3","itemsPerPage","currentPage","totalItems","surcharges","discounts","subTotalWithTax","subTotal","shippingWithTax","shipping","totalWithTax","total","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_vdr_dt2_custom_field_column_16_Template","OrderTableComponent_ng_template_19_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","_r4","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","DraftOrderVariantSelectorComponent_div_6_Template","DraftOrderDetailComponent","TypedBaseDetailComponent","changeDetector","orderTransitionService","super","getCustomFieldConfig","fetchHistory","init","eligibleShippingMethods$","getDraftOrderEligibleShippingMethods","eligibleShippingMethodsForDraftOrder","ngOnDestroy","destroy","event","addItemToDraftOrder","adjustDraftOrderLine","removeDraftOrderLine","getOrderAddressLines","orderAddress","val","hasId","setCustomerForDraftOrder","input","setDraftOrderShippingAddress","setDraftOrderBillingAddress","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","max","FulfillOrderDialogComponent_tr_22_img_2_Template","FulfillOrderDialogComponent_tr_22_input_12_Template","canSubmit","FulfillOrderDialogComponent","fulfillmentHandlerControl","getGlobalSettings","globalSettings","getFulfillableCount","trackInventory","markForCheck","getShippingMethodOperations","fulfillmentHandlers","handlers","fulfillmentHandlerDef","h","fulfillmentHandlerCode","fulfillmentHandler","configurableDefinitionToInstance","patchValue","globalTrackInventory","effectiveTracInventory","GlobalFlag","INHERIT","TRUE","unfulfilledCount","Math","min","fulfilled","flat","row","totalCount","fulfillmentQuantityIsValid","every","configurableOperationValueIsValid","handler","toConfigurableOperationInput","FulfillOrderDialogComponent_ng_template_0_Template","FulfillOrderDialogComponent_tr_22_Template","FulfillOrderDialogComponent_ng_template_33_Template","SimpleItemListComponent","customField_r2","customFieldFormGroup","FulfillmentDetailComponent_ng_container_11_vdr_custom_field_control_1_Template","SimpleItemListComponent_li_2_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","modification","note","tmp_1_0","getSurcharge","surcharge_r4","getAddedItems","getRemovedItems","FulfillmentCardComponent_vdr_fulfillment_detail_8_Template","FulfillmentCardComponent_div_9_Template","ModificationDetailComponent","addedItems","Map","removedItems","added","removed","getModifiedLines","modificationLine","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","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","discount_r14","line_r6","RefundOrderDialogComponent_tr_31_ng_container_18_vdr_dropdown_1_div_5_Template","discounts_r11","RefundOrderDialogComponent_tr_31_ng_container_18_vdr_dropdown_1_Template","_r18","ctx_r20","handleZeroQuantity","_r24","ctx_r10","RefundOrderDialogComponent_tr_31_ng_container_18_Template","RefundOrderDialogComponent_tr_31_input_20_Template","RefundOrderDialogComponent_tr_31_input_23_Template","RefundOrderDialogComponent_tr_31_input_26_Template","proratedUnitPriceWithTax","lineCanBeRefundedOrCancelled","payment_r31","settledPaymentsTotal","refundTotal","_r36","ctx_r37","RefundOrderDialogComponent_ng_template_68_ng_container_4_Template","RefundOrderDialogComponent_ng_template_68_ng_template_5_Template","isRefunding","_r33","RefundOrderDialogComponent","refundShipping","adjustment","lineRef","refundCount","settledPayments","alreadyRefundedTotal","summate","refundLine","selectedPayment","isCancelling","refundLines","getOrderLineInput","cancelLines","paymentId","filterFn","RefundOrderDialogComponent_ng_template_0_Template","RefundOrderDialogComponent_tr_31_Template","RefundOrderDialogComponent_option_45_Template","RefundOrderDialogComponent_div_66_Template","RefundOrderDialogComponent_div_67_Template","RefundOrderDialogComponent_ng_template_68_Template","SettleRefundDialogComponent","SettleRefundDialogComponent_ng_template_0_Template","SettleRefundDialogComponent_ng_template_9_Template","PaymentStateLabelComponent","PaymentStateLabelComponent_clr_icon_2_Template","RefundStateLabelComponent","errorMessage","RefundStateLabelComponent_clr_icon_2_Template","PaymentDetailComponent","refund_r3","settleRefund","OrderPaymentCardComponent_ng_container_10_vdr_labeled_data_16_Template","OrderPaymentCardComponent_ng_container_10_vdr_labeled_data_17_Template","OrderPaymentCardComponent_ng_container_10_vdr_labeled_data_18_Template","OrderPaymentCardComponent_ng_container_10_div_19_Template","refundHasMetadata","settlePayment","PaymentDetailComponent_vdr_labeled_data_7_Template","PaymentDetailComponent_vdr_labeled_data_8_Template","nextState_r18","transitionPaymentState","OrderPaymentCardComponent_div_11_ng_container_6_ng_container_2_Template","OrderPaymentCardComponent_div_11_ng_container_6_ng_template_3_Template","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_ng_container_4_vdr_chip_6_Template","OrderHistoryComponent_ng_container_15_ng_template_2_ng_container_3_ng_container_4_vdr_chip_7_Template","modification_r27","priceChange","isSettled","OrderHistoryComponent_ng_container_15_ng_template_2_ng_container_3_ng_container_4_Template","getModification","modificationId","payment_r35","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","refundId","items_r41","shippingCancelled","OrderHistoryComponent_ng_container_15_ng_template_2_ng_container_6_vdr_history_entry_detail_3_Template","_c2","getCancelledQuantity","getCancelledItems","fulfillment_r45","OrderHistoryComponent_ng_container_15_ng_template_2_ng_container_7_vdr_history_entry_detail_3_Template","ctx_r15","getFulfillment","fulfillment_r54","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","_r60","ctx_r58","updateNote","ctx_r61","deleteNote","isPublic","promotionId","OrderHistoryComponent_ng_container_15_ng_template_2_ng_container_12_vdr_history_entry_detail_4_Template","_r70","ctx_r69","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","getTimelineIcon","ORDER_MODIFIED","ORDER_PAYMENT_TRANSITION","ORDER_REFUND_TRANSITION","ORDER_CANCELLATION","ORDER_FULFILLMENT","ORDER_FULFILLMENT_TRANSITION","ORDER_NOTE","ORDER_COUPON_APPLIED","ORDER_COUPON_REMOVED","OrderHistoryComponent_ng_container_15_vdr_order_history_entry_host_1_Template","OrderHistoryComponent_ng_container_15_ng_template_2_Template","hasCustomComponent","OrderHistoryComponent","addNote","noteIsPrivate","itemMap","cancellationLines","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","_r11","addManualPayment","outstandingPaymentAmount","_r14","_r16","fulfillOrder","canAddFulfillment","_r19","transitionToModifying","cancelOrRefund","OrderDetailComponent_vdr_action_bar_1_button_12_ng_container_2_Template","OrderDetailComponent_vdr_action_bar_1_button_12_ng_template_3_Template","orderHasSettledPayments","_r21","SellerOrdersCardComponent_div_3_Template","nextState_r28","_r30","ctx_r29","OrderDetailComponent_vdr_action_bar_1_ng_container_13_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_11_Template","OrderDetailComponent_vdr_action_bar_1_button_12_Template","OrderDetailComponent_vdr_action_bar_1_ng_container_13_Template","hasUnsettledModifications","tmp_5_0","order_r33","_r47","payment_r45","OrderDetailComponent_vdr_page_detail_layout_3_vdr_card_12_vdr_order_payment_card_2_Template","fulfillment_r53","_r55","ctx_r54","transitionFulfillment","OrderDetailComponent_vdr_page_detail_layout_3_vdr_card_13_vdr_fulfillment_card_1_Template","entity_r58","row_r60","_r63","ctx_r62","ctx_r41","tmp_4_0","_r65","ctx_r64","openStateDiagram","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","ctx_r66","ctx_r67","ctx_r68","history$","ORDER_DETAIL_QUERY","ORDER_DETAIL_FRAGMENT","OrderDetailComponent","FormGroup","getCustomFieldsDefaults","defaultStates","relativeTo","route","getOrder","cancelPayment","paymentErrorMessage","transitionPaymentToState","allFulfillmentLines","allItemsFulfilled","getOutstandingModificationAmount","paymentIsValid","amountCovered","refundsTotal","priorState","addManualPaymentToOrder","refetchOrder","createFulfillment","mapTo","addFulfillmentToOrder","fulfillmentHandlerError","JSON","stringify","assertNever","transitionFulfillmentToState","isRefundable","refundOrder","cancelOrder","EditNoteDialogComponent","displayPrivacyControls","updateOrderNote","noteId","isPrivate","body","res","deleteOrderNote","setCustomFieldFormValues","i3","OrderDetailComponent_vdr_action_bar_1_Template","OrderDetailComponent_vdr_page_detail_layout_3_Template","OrderEditResultType","payment_r4","OrderEditsPreviewDialogComponent_div_8_option_6_Template","refundNote","priceDifference","Refund","Payment","PriceUnchanged","Cancel","OrderEditsPreviewDialogComponent","originalTotalWithTax","modifyOrderInput","refundPaymentId","OrderEditsPreviewDialogComponent_ng_template_0_Template","OrderEditsPreviewDialogComponent_div_8_Template","OrderEditsPreviewDialogComponent_ng_template_9_Template","transitionToPriorState","line_r22","orderLineCustomFieldsFormArray","i_r23","OrderEditorComponent_div_4_tr_24_img_2_Template","_r29","ctx_r28","updateLineQuantity","OrderEditorComponent_div_4_tr_24_td_18_Template","isLineModified","order_r5","addedLine_r31","productAsset","customField_r37","ctx_r36","addItemCustomFieldsFormArray","i_r32","OrderEditorComponent_div_4_tr_25_td_18_ng_container_1_Template","OrderEditorComponent_div_4_tr_25_img_2_Template","_r40","ctx_r39","updateAddedItemQuantity","removeAddedItem","OrderEditorComponent_div_4_tr_25_td_18_Template","productVariantName","OrderEditorComponent_div_4_tr_26_td_7_Template","surcharge_r43","surchargePrice_r50","i_r47","_r53","ctx_r52","removeSurcharge","OrderEditorComponent_div_4_tr_27_td_9_Template","OrderEditorComponent_div_4_tr_27_ng_container_11_Template","surcharge_r46","getSurchargePrices","asset_r57","OrderEditorComponent_div_4_clr_accordion_content_51_div_2_img_1_Template","addItemSelectedVariant","getSelectedItemPrice","ctx_r55","customField_r59","addItemCustomFieldsForm","_r61","ctx_r60","OrderEditorComponent_div_4_clr_accordion_content_51_div_2_Template","OrderEditorComponent_div_4_clr_accordion_content_51_ng_container_3_Template","couponCodesControl","_r64","ctx_r63","addSurcharge","surchargeForm","tmp_8_0","shippingAddressForm","addressCustomFields","billingAddressForm","addItems","adjustOrderLines","ctx_r19","OrderEditorComponent_div_4_th_19_Template","OrderEditorComponent_div_4_tr_24_Template","OrderEditorComponent_div_4_tr_25_Template","OrderEditorComponent_div_4_tr_26_Template","OrderEditorComponent_div_4_tr_27_Template","OrderEditorComponent_div_4_td_35_Template","OrderEditorComponent_div_4_clr_accordion_content_51_Template","OrderEditorComponent_div_4_clr_accordion_content_56_Template","OrderEditorComponent_div_4_clr_accordion_content_61_Template","OrderEditorComponent_div_4_clr_accordion_content_66_Template","OrderEditorComponent_div_4_clr_accordion_content_71_Template","OrderEditorComponent_div_4_li_79_Template","OrderEditorComponent_div_4_li_80_Template","OrderEditorComponent_div_4_li_81_Template","OrderEditorComponent_div_4_li_82_Template","OrderEditorComponent_div_4_li_83_Template","_r67","recalculateShipping","previewAndModify","addedLines","trackByProductVariantId","canPreviewChanges","OrderEditorComponent","BaseDetailComponent","dryRun","updateShippingAddress","updateBillingAddress","addedVariants","getSinglePriceValue","variantInfo","snapshot","paramMap","takeUntil","destroy$","setValue","priceIncludesTax","taxDescription","addAddressCustomFieldsFormGroup","UntypedFormArray","valueChanges","modifyRow","shareReplay","previousState","indexOf","isMatchingAddItemRow","key","removeAt","surcharge","round","transformRelationCustomFieldInputs","simpleDeepClone","modifyOrder","wetRunInput","nextState","parentFormGroup","address","addressCustomFieldsFormGroup","customFieldDef","languageCode","OrderEditorComponent_vdr_action_bar_1_Template","OrderEditorComponent_div_4_Template","OrderListComponent_ng_container_4_a_1_Template","order_r13","order_r14","order_r15","stopPropagation","order_r16","OrderListComponent_ng_template_27_vdr_chip_0_Template","OrderListComponent_ng_template_27_vdr_chip_1_Template","OrderListComponent_ng_template_27_vdr_chip_2_Template","order_r18","OrderType","Regular","Aggregate","Seller","order_r22","order_r23","order_r24","updatedAt","order_r25","orderPlacedAt","order_r26","customField_r27","sorts","OrderListComponent","TypedBaseListComponent","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","OrderListComponent_ng_template_15_Template","OrderListComponent_ng_template_18_Template","OrderListComponent_ng_template_21_Template","OrderListComponent_ng_template_24_Template","OrderListComponent_ng_template_27_Template","OrderListComponent_ng_template_30_Template","OrderListComponent_ng_template_33_Template","OrderListComponent_ng_template_36_Template","OrderListComponent_ng_template_39_Template","OrderListComponent_ng_template_42_Template","OrderListComponent_vdr_dt2_custom_field_column_43_Template","items$","itemsPerPage$","totalItems$","currentPage$","GET_CUSTOMER_ADDRESSES","ADDRESS_FRAGMENT","OrderResolver","resolve","navigateAway$","events","ActivationStart","stream","OrderGuard","canActivate","url","createDraftOrder","parseUrl","createRoutes","pageService","path","PageComponent","pathMatch","locationId","breadcrumb","children","getPageTabRoutes","link","modifyingOrderBreadcrumb","orderBreadcrumb","params","aggregateOrder","breadcrumbs","modifiedBreadcrumbs","slice","OrderModule","hasRegisteredTabsAndBulkActions","registerPageTab","priority","location","tab","detailComponentWithResolver","OrderDetailQueryDocument","entityKey","getBreadcrumbs","provide","ROUTES","useFactory","multi","deps","PageService","imports","SharedModule","RouterModule","forChild"],"sourceRoot":"webpack:///","sources":["./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-graph.component.html","./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.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/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-edits-preview-dialog/order-edits-preview-dialog.component.ts","./src/lib/order/src/components/order-edits-preview-dialog/order-edits-preview-dialog.component.html","./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/select-address-dialog/select-address-dialog.graphql.ts","./src/lib/order/src/providers/routing/order-resolver.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":["<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)=\"removeCouponCode.emit($event.value?.code)\"\r\n>\r\n <ng-template ng-option-tmp let-item=\"item\">\r\n <vdr-chip>{{ item.code }}</vdr-chip>\r\n {{ item.promotionName }}\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","<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>{{ 'order.set-customer-for-order' | translate }}</ng-template>\r\n\r\n<clr-tabs>\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-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 </div>\r\n </clr-tab-content>\r\n </ng-template>\r\n </clr-tab>\r\n <clr-tab>\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 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\n\r\nexport type Customer = GetCustomerListQuery['customers']['items'][number];\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<Customer | CreateCustomerInput> {\r\n resolveWith: (result?: Customer | CreateCustomerInput) => void;\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\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]);\r\n }\r\n if (this.createNew && this.customerForm.valid) {\r\n const formValue = this.customerForm.value;\r\n this.resolveWith(formValue);\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';\nimport { Dialog } from '@vendure/admin-ui/core';\n\n@Component({\n selector: 'vdr-order-state-select-dialog',\n templateUrl: './order-state-select-dialog.component.html',\n styleUrls: ['./order-state-select-dialog.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class OrderStateSelectDialogComponent implements Dialog<string> {\n resolveWith: (result?: string) => void;\n nextStates: string[] = [];\n message = '';\n cancellable: boolean;\n selectedState = '';\n\n select() {\n if (this.selectedState) {\n this.resolveWith(this.selectedState);\n }\n }\n\n cancel() {\n this.resolveWith();\n }\n}\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 { DataTable2ColumnComponent, 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 get sortedColumns() {\r\n const columns = this.allColumns;\r\n const dataTableConfig = this.getDataTableConfig();\r\n for (const [id, index] of Object.entries(dataTableConfig[this.id].order)) {\r\n const column = columns.find(c => c.id === id);\r\n const currentIndex = columns.findIndex(c => c.id === id);\r\n if (currentIndex !== -1 && column) {\r\n columns.splice(currentIndex, 1);\r\n columns.splice(index, 0, column);\r\n }\r\n }\r\n return columns;\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 [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\"></vdr-action-bar-items>\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-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 <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-dropdown-menu>\r\n </vdr-dropdown>\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 DataService,\r\n DeletionResult,\r\n DraftOrderEligibleShippingMethodsQuery,\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, Observable, 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 .subscribe();\r\n } else if (result) {\r\n this.dataService.order.setCustomerForDraftOrder(this.id, { input: result }).subscribe();\r\n }\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\">{{ item.quantity }}</div>\r\n <clr-icon shape=\"times\" size=\"12\"></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","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\r\n ngOnChanges(): void {\r\n const { added, removed } = this.getModifiedLines();\r\n this.addedItems = added;\r\n this.removedItems = removed;\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 private getModifiedLines() {\r\n const added = new Map<OrderDetailFragment['lines'][number], number>();\r\n const removed = new Map<OrderDetailFragment['lines'][number], 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 removed.set(line, -modificationLine.quantity);\r\n } else {\r\n added.set(line, modificationLine.quantity);\r\n }\r\n }\r\n return { added, removed };\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","<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","<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","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","<ng-template vdrDialogTitle>{{ 'order.refund-and-cancel-order' | translate }}</ng-template>\r\n\r\n<div class=\"refund-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.quantity' | translate }}</th>\r\n <th>{{ 'order.unit-price' | translate }}</th>\r\n <th>{{ 'order.prorated-unit-price' | translate }}</th>\r\n <th>{{ 'order.quantity' | translate }}</th>\r\n <th>{{ 'order.refund' | translate }}</th>\r\n <th>{{ 'order.cancel' | translate }}</th>\r\n </tr>\r\n </thead>\r\n <tr *ngFor=\"let line of order.lines\" class=\"order-line\">\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\">\r\n {{ line.quantity }}\r\n <vdr-line-refunds [line]=\"line\" [payments]=\"order.payments\"></vdr-line-refunds>\r\n </td>\r\n <td class=\"align-middle quantity\">\r\n {{ line.unitPriceWithTax | localeCurrency: order.currencyCode }}\r\n </td>\r\n <td class=\"align-middle quantity\">\r\n <div class=\"prorated-wrapper\">\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 </div>\r\n </td>\r\n <td class=\"align-middle quantity-col\">\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 (input)=\"handleZeroQuantity(lineQuantities[line.id])\"\r\n />\r\n </td>\r\n <td class=\"align-middle\">\r\n <div class=\"cancel-checkbox-wrapper\">\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].refund\"\r\n />\r\n </div>\r\n </td>\r\n <td class=\"align-middle\">\r\n <div class=\"cancel-checkbox-wrapper\">\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 </div>\r\n </td>\r\n </tr>\r\n </table>\r\n </div>\r\n <div class=\"refund-details mt-4\" [class.faded]=\"!isRefunding() && !isCancelling()\">\r\n <div>\r\n <label class=\"clr-control-label\">{{ 'order.refund-cancellation-reason' | translate }}</label>\r\n <ng-select\r\n [disabled]=\"!isRefunding() && !isCancelling()\"\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 </div>\r\n\r\n <div>\r\n <clr-select-container>\r\n <label>{{ 'order.payment-to-refund' | translate }}</label>\r\n <select clrSelect name=\"options\" [(ngModel)]=\"selectedPayment\" [disabled]=\"!isRefunding()\">\r\n <option\r\n *ngFor=\"let payment of settledPayments\"\r\n [ngValue]=\"payment\"\r\n [disabled]=\"payment.state !== 'Settled'\"\r\n >\r\n #{{ payment.id }} {{ payment.method }}:\r\n {{ payment.amount | localeCurrency: order.currencyCode }}\r\n </option>\r\n </select>\r\n </clr-select-container>\r\n\r\n <clr-checkbox-wrapper>\r\n <input type=\"checkbox\" clrCheckbox [(ngModel)]=\"refundShipping\" [disabled]=\"!isRefunding()\" />\r\n <label>\r\n {{ 'order.refund-shipping' | translate }} ({{\r\n order.shippingWithTax | localeCurrency: order.currencyCode\r\n }})\r\n </label>\r\n </clr-checkbox-wrapper>\r\n <clr-input-container>\r\n <label>{{ 'order.refund-adjustment' | translate }}</label>\r\n <vdr-currency-input\r\n clrInput\r\n [disabled]=\"!isRefunding()\"\r\n [currencyCode]=\"order.currencyCode\"\r\n [(ngModel)]=\"adjustment\"\r\n ></vdr-currency-input>\r\n </clr-input-container>\r\n <div class=\"totals\" [class.disabled]=\"!isRefunding()\">\r\n <div class=\"order-total\">\r\n {{ 'order.payment-amount' | translate }}:\r\n {{ selectedPayment.amount | localeCurrency: order.currencyCode }}\r\n </div>\r\n <div class=\"refund-total\">\r\n {{ 'order.refund-total' | translate }}:\r\n {{ refundTotal | localeCurrency: order.currencyCode }}\r\n </div>\r\n <div class=\"refund-total-error\" *ngIf=\"refundTotal < 0 || settledPaymentsTotal < refundTotal\">\r\n {{\r\n 'order.refund-total-error'\r\n | translate\r\n : {\r\n min: 0 | currency: order.currencyCode,\r\n max: settledPaymentsTotal | localeCurrency: order.currencyCode\r\n }\r\n }}\r\n </div>\r\n <div class=\"refund-total-warning\" *ngIf=\"selectedPayment.amount < refundTotal\">\r\n {{ 'order.refund-total-warning' | translate }}\r\n </div>\r\n </div>\r\n </div>\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 <ng-container *ngIf=\"isRefunding(); else cancelling\">\r\n {{\r\n 'order.refund-with-amount'\r\n | translate: { amount: refundTotal | localeCurrency: order.currencyCode }\r\n }}\r\n </ng-container>\r\n <ng-template #cancelling>\r\n {{ 'order.cancel-selected-items' | translate }}\r\n </ng-template>\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 PaymentWithRefundsFragment,\r\n RefundOrderInput,\r\n} from '@vendure/admin-ui/core';\r\nimport { summate } from '@vendure/common/lib/shared-utils';\r\n\r\ntype SelectionLine = { quantity: number; refund: boolean; cancel: boolean };\r\ntype Payment = NonNullable<OrderDetailFragment['payments']>[number];\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; refund: RefundOrderInput }>\r\n{\r\n order: OrderDetailFragment;\r\n resolveWith: (result?: { cancel: CancelOrderInput; refund: RefundOrderInput }) => void;\r\n reason: string;\r\n settledPayments: Payment[];\r\n selectedPayment: Payment;\r\n lineQuantities: { [lineId: string]: SelectionLine } = {};\r\n refundShipping = false;\r\n adjustment = 0;\r\n reasons = getAppConfig().cancellationReasons ?? [\r\n _('order.refund-reason-customer-request'),\r\n _('order.refund-reason-not-available'),\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 get refundTotal(): number {\r\n const itemTotal = this.order.lines.reduce((total, line) => {\r\n const lineRef = this.lineQuantities[line.id];\r\n const refundCount = (lineRef.refund && lineRef.quantity) || 0;\r\n return total + line.proratedUnitPriceWithTax * refundCount;\r\n }, 0);\r\n return itemTotal + (this.refundShipping ? this.order.shippingWithTax : 0) + this.adjustment;\r\n }\r\n\r\n get settledPaymentsTotal(): number {\r\n return this.settledPayments\r\n .map(payment => {\r\n const paymentTotal = payment.amount;\r\n const alreadyRefundedTotal = summate(\r\n payment.refunds.filter(r => r.state !== 'Failed') as Array<\r\n Required<Payment['refunds'][number]>\r\n >,\r\n 'total',\r\n );\r\n return paymentTotal - alreadyRefundedTotal;\r\n })\r\n .reduce((sum, amount) => sum + amount, 0);\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: false,\r\n cancel: false,\r\n },\r\n }),\r\n {},\r\n );\r\n this.settledPayments = (this.order.payments || []).filter(p => p.state === 'Settled');\r\n if (this.settledPayments.length) {\r\n this.selectedPayment = this.settledPayments[0];\r\n }\r\n }\r\n\r\n handleZeroQuantity(line?: SelectionLine) {\r\n if (line?.quantity === 0) {\r\n line.cancel = false;\r\n line.refund = false;\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 && line.refund),\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 if (this.isRefunding()) {\r\n return !!(\r\n this.selectedPayment &&\r\n this.reason &&\r\n 0 < this.refundTotal &&\r\n this.refundTotal <= this.settledPaymentsTotal\r\n );\r\n } else if (this.isCancelling()) {\r\n return !!this.reason;\r\n }\r\n return false;\r\n }\r\n\r\n select() {\r\n const payment = this.selectedPayment;\r\n if (payment) {\r\n const refundLines = this.getOrderLineInput(line => line.refund);\r\n const cancelLines = this.getOrderLineInput(line => line.cancel);\r\n\r\n this.resolveWith({\r\n refund: {\r\n lines: refundLines,\r\n reason: this.reason,\r\n shipping: this.refundShipping ? this.order.shippingWithTax : 0,\r\n adjustment: this.adjustment,\r\n paymentId: payment.id,\r\n },\r\n cancel: {\r\n lines: cancelLines,\r\n orderId: this.order.id,\r\n reason: this.reason,\r\n cancelShipping: this.refundShipping,\r\n },\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.transactionId\">#{{ payment.transactionId }}</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=\"card-header payment-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 [label]=\"'order.refund-metadata' | translate\" *ngIf=\"refundHasMetadata(refund)\">\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 </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\">\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 <ng-container *ngIf=\"getModification(entry.data.modificationId) as modification\">\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\" *ngIf=\"modification.isSettled\">{{\r\n 'order.modification-settled' | translate\r\n }}</vdr-chip>\r\n <vdr-chip colorType=\"error\" *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 </ng-container>\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 {{ 'order.transaction-id' | translate }}: {{ getPayment(entry)?.transactionId }}\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 </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 {{\r\n 'order.history-refund-transition'\r\n | translate\r\n : { from: entry.data.from, to: entry.data.to, id: entry.data.refundId }\r\n }}\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) 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=\"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 <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 *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 GetOrderHistoryQuery,\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 'error';\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_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_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_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 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 getCancelledQuantity(entry: TimelineHistoryEntry): number {\r\n return entry.data.lines.reduce((total, line) => total + line.quantity, 0);\r\n }\r\n\r\n getCancelledItems(entry: TimelineHistoryEntry): Array<{ name: string; quantity: number }> {\r\n const itemMap = new Map<string, number>();\r\n const cancellationLines: Array<{ orderLineId: string; quantity: number }> = entry.data.lines;\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-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\r\n *ngIf=\"order.type !== 'Aggregate' && order.nextStates.includes('Modifying')\"\r\n >\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-dropdown-menu>\r\n </vdr-dropdown>\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>\r\n <vdr-order-state-label [state]=\"order.state\">\r\n <button\r\n class=\"icon-button\"\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 </vdr-order-state-label>\r\n </vdr-card>\r\n <vdr-card [title]=\"'order.customer' | translate\">\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-2' }}</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 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, 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 { 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\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 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(_('order.cancelled-order-success'));\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.refund.lines.length) {\r\n return this.dataService.order\r\n .refundOrder(input.refund)\r\n .pipe(map(res => res.refundOrder));\r\n } else {\r\n return [undefined];\r\n }\r\n }),\r\n )\r\n .subscribe(result => {\r\n if (result) {\r\n switch (result.__typename) {\r\n case 'Refund':\r\n this.refetchOrder(result).subscribe();\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 }\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","import { ChangeDetectionStrategy, Component, OnInit } from '@angular/core';\r\nimport { CustomFieldConfig, Dialog, ModifyOrderInput, OrderDetailFragment } from '@vendure/admin-ui/core';\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 refundPaymentId: string;\r\n refundNote?: string;\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 order: OrderDetailFragment;\r\n originalTotalWithTax: number;\r\n orderLineCustomFields: CustomFieldConfig[];\r\n modifyOrderInput: ModifyOrderInput;\r\n\r\n selectedPayment?: NonNullable<OrderDetailFragment['payments']>[number];\r\n refundNote: string;\r\n resolveWith: (result?: OrderEditResult) => void;\r\n\r\n get priceDifference(): number {\r\n return this.order.totalWithTax - this.originalTotalWithTax;\r\n }\r\n\r\n ngOnInit() {\r\n this.refundNote = this.modifyOrderInput.note || '';\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 refundPaymentId: this.selectedPayment!.id,\r\n refundNote: this.refundNote,\r\n });\r\n } else {\r\n this.resolveWith({\r\n result: OrderEditResultType.PriceUnchanged,\r\n });\r\n }\r\n }\r\n}\r\n","<ng-template vdrDialogTitle>{{ 'order.confirm-modifications' | translate }}</ng-template>\r\n<vdr-order-table [order]=\"order\" [orderLineCustomFields]=\"orderLineCustomFields\"></vdr-order-table>\r\n\r\n<h4 class=\"h4\">\r\n {{ 'order.modify-order-price-difference' | translate }}:\r\n <strong>{{ priceDifference | localeCurrency: order.currencyCode }}</strong>\r\n</h4>\r\n<div *ngIf=\"priceDifference < 0\">\r\n<clr-select-container>\r\n <label>{{ 'order.payment-to-refund' | translate }}</label>\r\n <select clrSelect name=\"options\" [(ngModel)]=\"selectedPayment\">\r\n <option\r\n *ngFor=\"let payment of order.payments\"\r\n [ngValue]=\"payment\"\r\n >\r\n #{{ payment.id }} {{ payment.method }}:\r\n {{ payment.amount | localeCurrency: order.currencyCode }}\r\n </option>\r\n </select>\r\n</clr-select-container>\r\n <label class=\"clr-control-label\">{{ 'order.refund-cancellation-reason' | translate }}</label>\r\n <textarea [(ngModel)]=\"refundNote\" name=\"refundNote\" clrTextarea required></textarea>\r\n</div>\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]=\"priceDifference < 0 && !selectedPayment\" class=\"btn btn-primary\">\r\n {{ 'common.confirm' | translate }}\r\n </button>\r\n</ng-template>\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 <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-block>\r\n <div *ngIf=\"entity$ | async as order\">\r\n <div class=\"clr-row\">\r\n <div class=\"clr-col-lg-8\">\r\n <table class=\"order-table 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.unit-price' | translate }}</th>\r\n <th>{{ 'order.quantity' | translate }}</th>\r\n <th *ngIf=\"orderLineCustomFields.length\">\r\n {{ 'common.custom-fields' | translate }}\r\n </th>\r\n <th>{{ 'order.total' | translate }}</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr\r\n *ngFor=\"let line of order.lines; let i = index\"\r\n class=\"order-line\"\r\n [class.is-cancelled]=\"line.quantity === 0\"\r\n [class.modified]=\"isLineModified(line)\"\r\n >\r\n <td class=\"align-middle thumb\">\r\n <img\r\n *ngIf=\"line.featuredAsset\"\r\n [src]=\"line.featuredAsset | assetPreview : 'tiny'\"\r\n />\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 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 </td>\r\n <td class=\"align-middle quantity\">\r\n <input\r\n type=\"number\"\r\n min=\"0\"\r\n [value]=\"line.quantity\"\r\n (input)=\"updateLineQuantity(line, $event.target.value)\"\r\n />\r\n <vdr-line-refunds\r\n [line]=\"line\"\r\n [payments]=\"order.payments\"\r\n ></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 </td>\r\n <td\r\n *ngIf=\"orderLineCustomFields.length\"\r\n class=\"order-line-custom-field align-middle\"\r\n >\r\n <vdr-tabbed-custom-fields\r\n entityName=\"OrderLine\"\r\n [customFields]=\"orderLineCustomFields\"\r\n [customFieldsFormGroup]=\"orderLineCustomFieldsFormArray.get([i])\"\r\n [compact]=\"true\"\r\n ></vdr-tabbed-custom-fields>\r\n </td>\r\n <td class=\"align-middle total\">\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 </td>\r\n </tr>\r\n <tr\r\n *ngFor=\"\r\n let addedLine of addedLines;\r\n trackBy: trackByProductVariantId;\r\n let i = index\r\n \"\r\n class=\"modified\"\r\n >\r\n <td class=\"align-middle thumb\">\r\n <img\r\n *ngIf=\"addedLine.productAsset\"\r\n [src]=\"addedLine.productAsset | assetPreview : 'tiny'\"\r\n />\r\n </td>\r\n <td class=\"align-middle name\">{{ addedLine.productVariantName }}</td>\r\n <td class=\"align-middle sku\">{{ addedLine.sku }}</td>\r\n <td class=\"align-middle unit-price\">\r\n {{ addedLine.priceWithTax | localeCurrency : order.currencyCode }}\r\n <div class=\"net-price\" [title]=\"'order.net-price' | translate\">\r\n {{ addedLine.price | localeCurrency : order.currencyCode }}\r\n </div>\r\n </td>\r\n <td class=\"align-middle quantity\">\r\n <input\r\n type=\"number\"\r\n min=\"0\"\r\n [value]=\"addedLine.quantity\"\r\n (input)=\"updateAddedItemQuantity(addedLine, $event.target.value)\"\r\n />\r\n <button class=\"icon-button\" (click)=\"removeAddedItem(i)\">\r\n <clr-icon shape=\"trash\"></clr-icon>\r\n </button>\r\n </td>\r\n <td\r\n *ngIf=\"orderLineCustomFields.length\"\r\n class=\"order-line-custom-field align-middle\"\r\n >\r\n <ng-container *ngFor=\"let customField of orderLineCustomFields\">\r\n <vdr-custom-field-control\r\n [customField]=\"customField\"\r\n [customFieldsFormGroup]=\"addItemCustomFieldsFormArray.get([i])\"\r\n entityName=\"OrderLine\"\r\n [compact]=\"true\"\r\n ></vdr-custom-field-control>\r\n </ng-container>\r\n </td>\r\n <td class=\"align-middle total\">\r\n {{\r\n (addedLine.priceWithTax * addedLine.quantity) / 100\r\n | currency : order.currencyCode\r\n }}\r\n <div class=\"net-price\" [title]=\"'order.net-price' | translate\">\r\n {{\r\n (addedLine.price * addedLine.quantity) / 100\r\n | currency : order.currencyCode\r\n }}\r\n </div>\r\n </td>\r\n </tr>\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\"></td>\r\n <td></td>\r\n <td *ngIf=\"orderLineCustomFields.length\"></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 </tr>\r\n <tr\r\n class=\"surcharge modified\"\r\n *ngFor=\"let surcharge of modifyOrderInput.surcharges; let i = index\"\r\n >\r\n <td class=\"align-middle name left\" colspan=\"2\">\r\n {{ surcharge.description }}\r\n <button class=\"icon-button\" (click)=\"removeSurcharge(i)\">\r\n <clr-icon shape=\"trash\"></clr-icon>\r\n </button>\r\n </td>\r\n <td class=\"align-middle sku\">{{ surcharge.sku }}</td>\r\n <td class=\"align-middle\"></td>\r\n <td></td>\r\n <td *ngIf=\"orderLineCustomFields.length\"></td>\r\n <td class=\"align-middle total\">\r\n <ng-container *ngIf=\"getSurchargePrices(surcharge) as surchargePrice\">\r\n {{ surchargePrice.priceWithTax | localeCurrency : order.currencyCode }}\r\n <div class=\"net-price\" [title]=\"'order.net-price' | translate\">\r\n {{ surchargePrice.price | localeCurrency : order.currencyCode }}\r\n </div>\r\n </ng-container>\r\n </td>\r\n </tr>\r\n <tr class=\"shipping\">\r\n <td class=\"left clr-align-middle\">{{ 'order.shipping' | translate }}</td>\r\n <td class=\"clr-align-middle\">\r\n {{ order.shippingLines[0]?.shippingMethod?.name }}\r\n </td>\r\n <td colspan=\"3\"></td>\r\n <td *ngIf=\"orderLineCustomFields.length\"></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 </tr>\r\n </tbody>\r\n </table>\r\n\r\n <h4 class=\"mb-2\">{{ 'order.modifications' | translate }}</h4>\r\n <clr-accordion>\r\n <clr-accordion-panel>\r\n <clr-accordion-title>{{ 'order.add-item-to-order' | translate }}</clr-accordion-title>\r\n <clr-accordion-content *clrIfExpanded>\r\n <vdr-product-variant-selector\r\n class=\"mb-4\"\r\n (productSelected)=\"addItemSelectedVariant = $event\"\r\n >\r\n </vdr-product-variant-selector>\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\">{{\r\n addItemSelectedVariant.productVariantName\r\n }}</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 <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 <button\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 </clr-accordion-content>\r\n </clr-accordion-panel>\r\n <clr-accordion-panel>\r\n <clr-accordion-title>{{ 'order.set-coupon-codes' | translate }}</clr-accordion-title>\r\n <clr-accordion-content *clrIfExpanded>\r\n <vdr-coupon-code-selector\r\n [control]=\"couponCodesControl\"\r\n ></vdr-coupon-code-selector>\r\n </clr-accordion-content>\r\n </clr-accordion-panel>\r\n\r\n <clr-accordion-panel>\r\n <clr-accordion-title>{{ 'order.add-surcharge' | translate }}</clr-accordion-title>\r\n <clr-accordion-content *clrIfExpanded>\r\n <form [formGroup]=\"surchargeForm\" (submit)=\"addSurcharge(surchargeForm.value)\">\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 }\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\r\n id=\"taxRate\"\r\n type=\"number\"\r\n min=\"0\"\r\n max=\"100\"\r\n formControlName=\"taxRate\"\r\n /></vdr-affixed-input>\r\n </vdr-form-field>\r\n <vdr-form-field\r\n [label]=\"'order.tax-description' | translate\"\r\n for=\"taxDescription\"\r\n ><input id=\"taxDescription\" type=\"text\" formControlName=\"taxDescription\"\r\n /></vdr-form-field>\r\n <button\r\n class=\"btn btn-secondary\"\r\n [disabled]=\"\r\n surchargeForm.invalid ||\r\n surchargeForm.pristine ||\r\n surchargeForm.get('price')?.value === 0\r\n \"\r\n >\r\n {{ 'order.add-surcharge' | translate }}\r\n </button>\r\n </form>\r\n </clr-accordion-content>\r\n </clr-accordion-panel>\r\n <clr-accordion-panel>\r\n <clr-accordion-title>{{\r\n 'order.edit-shipping-address' | translate\r\n }}</clr-accordion-title>\r\n <clr-accordion-content *clrIfExpanded>\r\n <vdr-address-form\r\n [formGroup]=\"shippingAddressForm\"\r\n [availableCountries]=\"availableCountries$ | async\"\r\n [customFields]=\"addressCustomFields\"\r\n ></vdr-address-form>\r\n </clr-accordion-content>\r\n </clr-accordion-panel>\r\n <clr-accordion-panel>\r\n <clr-accordion-title>{{\r\n 'order.edit-billing-address' | translate\r\n }}</clr-accordion-title>\r\n <clr-accordion-content *clrIfExpanded>\r\n <vdr-address-form\r\n [formGroup]=\"billingAddressForm\"\r\n [availableCountries]=\"availableCountries$ | async\"\r\n [customFields]=\"addressCustomFields\"\r\n ></vdr-address-form>\r\n </clr-accordion-content>\r\n </clr-accordion-panel>\r\n </clr-accordion>\r\n </div>\r\n <div class=\"clr-col-lg-4 order-cards\">\r\n <div class=\"card\">\r\n <div class=\"card-header\">\r\n {{ 'order.modification-summary' | translate }}\r\n </div>\r\n <div class=\"card-block\">\r\n <ul>\r\n <li *ngIf=\"modifyOrderInput.addItems?.length\">\r\n {{\r\n 'order.modification-adding-items'\r\n | translate : { count: modifyOrderInput.addItems?.length }\r\n }}\r\n </li>\r\n <li *ngIf=\"modifyOrderInput.adjustOrderLines?.length\">\r\n {{\r\n 'order.modification-adjusting-lines'\r\n | translate : { count: modifyOrderInput.adjustOrderLines?.length }\r\n }}\r\n </li>\r\n <li *ngIf=\"modifyOrderInput.surcharges?.length\">\r\n {{\r\n 'order.modification-adding-surcharges'\r\n | translate : { count: modifyOrderInput.surcharges?.length }\r\n }}\r\n </li>\r\n <li *ngIf=\"shippingAddressForm.dirty\">\r\n {{ 'order.modification-updating-shipping-address' | translate }}\r\n </li>\r\n <li *ngIf=\"billingAddressForm.dirty\">\r\n {{ 'order.modification-updating-billing-address' | translate }}\r\n </li>\r\n </ul>\r\n </div>\r\n <div class=\"card-block\">\r\n <label class=\"clr-control-label\">{{ 'order.note' | translate }}</label>\r\n <textarea [(ngModel)]=\"note\" name=\"note\" clrTextarea required></textarea>\r\n <clr-checkbox-wrapper class=\"\">\r\n <input type=\"checkbox\" clrCheckbox [(ngModel)]=\"recalculateShipping\" />\r\n <label>{{ 'order.modification-recalculate-shipping' | translate }}</label>\r\n </clr-checkbox-wrapper>\r\n </div>\r\n <div class=\"card-footer\">\r\n <button\r\n class=\"btn btn-primary\"\r\n [disabled]=\"!canPreviewChanges()\"\r\n (click)=\"previewAndModify(order)\"\r\n >\r\n {{ 'order.preview-changes' | translate }}\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <vdr-page-block> </vdr-page-block\r\n></vdr-page-block>\r\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, OnDestroy, OnInit } from '@angular/core';\r\nimport { UntypedFormArray, UntypedFormControl, UntypedFormGroup, Validators } from '@angular/forms';\r\nimport { ActivatedRoute, Router } from '@angular/router';\r\nimport {\r\n AddItemInput,\r\n BaseDetailComponent,\r\n CustomFieldConfig,\r\n DataService,\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 OrderLineInput,\r\n ProductSelectorSearchQuery,\r\n ServerConfigService,\r\n SortOrder,\r\n SurchargeInput,\r\n transformRelationCustomFieldInputs,\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 { mapTo, shareReplay, switchMap, takeUntil } from 'rxjs/operators';\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\n\r\ntype ProductSelectorItem = ProductSelectorSearchQuery['search']['items'][number];\r\n\r\ninterface AddedLine {\r\n productVariantId: string;\r\n productAsset?: ProductSelectorItem['productAsset'] | null;\r\n productVariantName: string;\r\n sku: string;\r\n priceWithTax: number;\r\n price: number;\r\n quantity: number;\r\n}\r\n\r\ntype ModifyOrderData = Omit<ModifyOrderInput, 'addItems' | 'adjustOrderLines'> & {\r\n addItems: Array<AddItemInput & { customFields?: any }>;\r\n adjustOrderLines: Array<OrderLineInput & { customFields?: any }>;\r\n};\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 BaseDetailComponent<OrderDetailFragment>\r\n implements OnInit, OnDestroy\r\n{\r\n availableCountries$: Observable<GetAvailableCountriesQuery['countries']['items']>;\r\n addressCustomFields: CustomFieldConfig[];\r\n detailForm = new UntypedFormGroup({});\r\n couponCodesControl = new UntypedFormControl();\r\n orderLineCustomFieldsFormArray: UntypedFormArray;\r\n addItemCustomFieldsFormArray: UntypedFormArray;\r\n addItemCustomFieldsForm: UntypedFormGroup;\r\n addItemSelectedVariant: ProductSelectorItem | undefined;\r\n orderLineCustomFields: CustomFieldConfig[];\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 updateShippingAddress: {},\r\n updateBillingAddress: {},\r\n };\r\n surchargeForm: UntypedFormGroup;\r\n shippingAddressForm: UntypedFormGroup;\r\n billingAddressForm: UntypedFormGroup;\r\n note = '';\r\n recalculateShipping = true;\r\n previousState: string;\r\n private addedVariants = new Map<string, ProductSelectorItem>();\r\n\r\n constructor(\r\n router: Router,\r\n route: ActivatedRoute,\r\n serverConfigService: ServerConfigService,\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(route, router, serverConfigService, dataService);\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 ...variantInfo,\r\n price: getSinglePriceValue(variantInfo.price),\r\n priceWithTax: getSinglePriceValue(variantInfo.priceWithTax),\r\n quantity: row.quantity,\r\n };\r\n }\r\n })\r\n .filter(notNullOrUndefined);\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(takeUntil(this.destroy$)).subscribe(order => {\r\n if (order.couponCodes.length) {\r\n this.couponCodesControl.setValue(order.couponCodes);\r\n }\r\n this.surchargeForm = new UntypedFormGroup({\r\n description: new UntypedFormControl('', Validators.required),\r\n sku: new UntypedFormControl(''),\r\n price: new UntypedFormControl(0, Validators.required),\r\n priceIncludesTax: new UntypedFormControl(true),\r\n taxRate: new UntypedFormControl(0),\r\n taxDescription: new UntypedFormControl(''),\r\n });\r\n if (!this.shippingAddressForm) {\r\n this.shippingAddressForm = new UntypedFormGroup({\r\n fullName: new UntypedFormControl(order.shippingAddress?.fullName),\r\n company: new UntypedFormControl(order.shippingAddress?.company),\r\n streetLine1: new UntypedFormControl(order.shippingAddress?.streetLine1),\r\n streetLine2: new UntypedFormControl(order.shippingAddress?.streetLine2),\r\n city: new UntypedFormControl(order.shippingAddress?.city),\r\n province: new UntypedFormControl(order.shippingAddress?.province),\r\n postalCode: new UntypedFormControl(order.shippingAddress?.postalCode),\r\n countryCode: new UntypedFormControl(order.shippingAddress?.countryCode),\r\n phoneNumber: new UntypedFormControl(order.shippingAddress?.phoneNumber),\r\n });\r\n this.addAddressCustomFieldsFormGroup(this.shippingAddressForm, order.shippingAddress);\r\n }\r\n if (!this.billingAddressForm) {\r\n this.billingAddressForm = new UntypedFormGroup({\r\n fullName: new UntypedFormControl(order.billingAddress?.fullName),\r\n company: new UntypedFormControl(order.billingAddress?.company),\r\n streetLine1: new UntypedFormControl(order.billingAddress?.streetLine1),\r\n streetLine2: new UntypedFormControl(order.billingAddress?.streetLine2),\r\n city: new UntypedFormControl(order.billingAddress?.city),\r\n province: new UntypedFormControl(order.billingAddress?.province),\r\n postalCode: new UntypedFormControl(order.billingAddress?.postalCode),\r\n countryCode: new UntypedFormControl(order.billingAddress?.countryCode),\r\n phoneNumber: new UntypedFormControl(order.billingAddress?.phoneNumber),\r\n });\r\n this.addAddressCustomFieldsFormGroup(this.billingAddressForm, order.billingAddress);\r\n }\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 }\r\n\r\n ngOnDestroy(): void {\r\n this.destroy();\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 canPreviewChanges(): 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 );\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 updateLineQuantity(line: OrderDetailFragment['lines'][number], quantity: string) {\r\n const { adjustOrderLines } = this.modifyOrderInput;\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 updateAddedItemQuantity(item: AddedLine, quantity: string) {\r\n const row = this.modifyOrderInput.addItems?.find(l => l.productVariantId === item.productVariantId);\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.productVariantId;\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 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(index: number) {\r\n this.modifyOrderInput.addItems.splice(index, 1);\r\n if (-1 < index) {\r\n this.addItemCustomFieldsFormArray.removeAt(index);\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 const originalTotalWithTax = order.totalWithTax;\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 originalTotalWithTax,\r\n order: modifyOrder,\r\n orderLineCustomFields: this.orderLineCustomFields,\r\n modifyOrderInput: input,\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 '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.refund = {\r\n paymentId: result.refundPaymentId,\r\n reason: result.refundNote,\r\n };\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 = modifyOrder.totalWithTax - originalTotalWithTax;\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 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\"></vdr-action-bar-items>\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-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=\"order-list\"\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>\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 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(protected serverConfigService: ServerConfigService, private channelService: ChannelService) {\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","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, ActivationStart, Router, RouterStateSnapshot } from '@angular/router';\r\nimport { DataService, OrderDetailFragment } from '@vendure/admin-ui/core';\r\nimport { notNullOrUndefined } from '@vendure/common/lib/shared-utils';\r\nimport { EMPTY, Observable } from 'rxjs';\r\nimport { filter, map, shareReplay, switchMap, take, takeUntil } from 'rxjs/operators';\r\n\r\nimport { DraftOrderDetailComponent } from '../../components/draft-order-detail/draft-order-detail.component';\r\n\r\n/**\r\n * Resolves the id from the path into a Customer entity.\r\n */\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class OrderResolver {\r\n constructor(private router: Router, private dataService: DataService) {}\r\n\r\n /** @internal */\r\n resolve(\r\n route: ActivatedRouteSnapshot,\r\n state: RouterStateSnapshot,\r\n ): Observable<Observable<OrderDetailFragment>> {\r\n const id = route.paramMap.get('id');\r\n\r\n // Complete the entity stream upon navigating away\r\n const navigateAway$ = this.router.events.pipe(filter(event => event instanceof ActivationStart));\r\n\r\n const stream = this.dataService.order\r\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\r\n .getOrder(id!)\r\n .mapStream(data => data.order)\r\n .pipe(\r\n switchMap(order => {\r\n if (order?.state === 'Draft' && route.component !== DraftOrderDetailComponent) {\r\n // Make sure Draft orders only get displayed with the DraftOrderDetailComponent\r\n this.router.navigate(['/orders/draft', id]);\r\n return EMPTY;\r\n } else {\r\n return [order];\r\n }\r\n }),\r\n takeUntil(navigateAway$),\r\n filter(notNullOrUndefined),\r\n shareReplay(1),\r\n );\r\n\r\n return stream.pipe(\r\n take(1),\r\n map(() => stream),\r\n );\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { ActivatedRouteSnapshot, Router, RouterStateSnapshot, UrlTree } from '@angular/router';\r\nimport { DataService } from '@vendure/admin-ui/core';\r\nimport { EMPTY, Observable } from 'rxjs';\r\nimport { map, mergeMapTo, tap } from 'rxjs/operators';\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 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 true;\r\n }\r\n }\r\n}\r\n","import { Route } from '@angular/router';\nimport { marker as _ } from '@biesbjerg/ngx-translate-extract-marker';\nimport {\n BreadcrumbLabelLinkPair,\n CanDeactivateDetailGuard,\n detailBreadcrumb,\n OrderDetailFragment,\n PageComponent,\n PageService,\n} from '@vendure/admin-ui/core';\nimport { map } from 'rxjs/operators';\n\nimport { DraftOrderDetailComponent } from './components/draft-order-detail/draft-order-detail.component';\nimport { OrderDetailComponent } from './components/order-detail/order-detail.component';\nimport { OrderEditorComponent } from './components/order-editor/order-editor.component';\nimport { OrderListComponent } from './components/order-list/order-list.component';\nimport { OrderResolver } from './providers/routing/order-resolver';\nimport { OrderGuard } from './providers/routing/order.guard';\n\nexport const createRoutes = (pageService: PageService): Route[] => [\n {\n path: '',\n component: PageComponent,\n pathMatch: 'full',\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: OrderEditorComponent,\n resolve: {\n entity: OrderResolver,\n },\n data: {\n breadcrumb: modifyingOrderBreadcrumb,\n },\n },\n];\n\nexport function orderBreadcrumb(data: any, params: any) {\n return data.entity.pipe(\n map((entity: OrderDetailFragment) => {\n if (entity.aggregateOrder) {\n return [\n {\n label: 'breadcrumb.orders',\n link: ['../'],\n },\n {\n label: entity.aggregateOrder.code,\n link: ['../', entity.aggregateOrder.id],\n },\n {\n label: _('breadcrumb.seller-orders'),\n link: ['../', entity.aggregateOrder.id],\n },\n {\n label: entity.code,\n link: [entity.id],\n },\n ];\n } else {\n return [\n {\n label: 'breadcrumb.orders',\n link: ['../'],\n },\n {\n label: entity.code,\n link: [entity.id],\n },\n ];\n }\n }),\n );\n}\n\nexport function modifyingOrderBreadcrumb(data: any, params: any) {\n return orderBreadcrumb(data, params).pipe(\n map((breadcrumbs: BreadcrumbLabelLinkPair[]) => {\n const modifiedBreadcrumbs = breadcrumbs.slice();\n modifiedBreadcrumbs[1].link = ['../', breadcrumbs[1].link[0]];\n return modifiedBreadcrumbs.concat({ label: _('breadcrumb.modifying'), link: [''] });\n }) as any,\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 { 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\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 ],\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 OrderModule.hasRegisteredTabsAndBulkActions = true;\r\n }\r\n}\r\n"],"x_google_ignoreList":[15]}
|
|
1
|
+
{"version":3,"file":"539.d5cfcdff4ce41934.js","mappings":"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","names":["i0","_r3","ctx_r2","cancel","ctx_r4","submit","ctx_r1","form","invalid","pristine","outstandingAmount","currencyCode","gql","AddManualPaymentDialogComponent","constructor","dataService","this","UntypedFormGroup","method","UntypedFormControl","Validators","required","transactionId","ngOnInit","paymentMethods$","query","GetAddManualPaymentMethodListDocument","options","take","mapSingle","data","paymentMethods","items","formValue","value","resolveWith","i1","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","_r6","_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","_","map","r","translate","lines","result","line","lineId","entries","quantityInOrder","find","orderId","getLineInputs","cancelShipping","orderLineId","filter","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","p","startWith","control","couponCodes","inputs","outputs","emit","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","item_r6","firstName","lastName","emailAddress","item_r8","selectedCustomer","SelectCustomerDialogComponent_ng_template_6_ng_template_4_Template","SelectCustomerDialogComponent_ng_template_6_ng_template_5_Template","customers$","isLoading","input$","customerForm","_r12","ctx_r13","SelectCustomerDialogComponent","title","email","getCustomerList","mapStream","customers","catchError","SelectCustomerDialogComponent_ng_template_0_Template","SelectCustomerDialogComponent_ng_template_6_Template","SelectCustomerDialogComponent_ng_template_11_Template","SelectCustomerDialogComponent_ng_template_12_Template","quote_r3","metadata","SelectShippingMethodDialogComponent_vdr_radio_card_2_vdr_object_tree_14_Template","price","priceWithTax","_r7","selectedMethod","SelectShippingMethodDialogComponent","currentSelectionId","eligibleShippingMethods","m","methodIdFn","SelectShippingMethodDialogComponent_ng_template_0_Template","SelectShippingMethodDialogComponent_vdr_radio_card_2_Template","SelectShippingMethodDialogComponent_ng_template_3_Template","state_r3","OrderStateSelectDialogComponent_ng_template_7_button_0_Template","_r8","ctx_r7","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","state","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","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","ctx_r0","customFieldsConfig","OrderCustomFieldsCardComponent","customFieldValues","updateClick","field","addControl","markAsPristine","dirty","dialog","buttons","label","returnValue","reset","OrderCustomFieldsCardComponent_div_0_Template","fulfilledCount","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","payments","all","payment","refunds","refund","LineRefundsComponent_span_0_Template","OrderTotalColumnComponent","DataTable2ColumnComponent","orderable","t","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","ctx_r25","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","ctx_r27","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","_r39","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","amount","OrderDataTableComponent_ng_container_19_tr_1_Template","shippingLine_r54","shippingMethod","OrderDataTableComponent","DataTable2Component","allColumns","columns","customFieldColumns","totalColumns","sortedColumns","dataTableConfig","getDataTableConfig","index","column","c","currentIndex","findIndex","splice","promotion","adjustmentSource","split","promotionAdjustment","getShippingNames","shippingLines","shippingLine","join","asset_r11","OrderTableComponent_ng_template_3_img_1_Template","OrderTableComponent_ng_template_3_ng_template_2_Template","line_r7","line_r12","line_r13","line_r14","unitPrice","line_r15","orderPlacedQuantity","OrderTableComponent_ng_template_15_ng_container_0_div_2_Template","_r25","draftInputBlur","valueAsNumber","ctx_r26","remove","OrderTableComponent_ng_template_15_ng_container_0_Template","OrderTableComponent_ng_template_15_ng_template_1_Template","isDraft","customField_r29","ctx_r34","discount_r35","OrderTableComponent_ng_template_19_ng_container_7_vdr_dropdown_1_div_5_Template","discounts_r32","OrderTableComponent_ng_template_19_ng_container_7_vdr_dropdown_1_Template","OrderTableComponent_ng_template_19_ng_container_7_Template","line_r30","linePriceWithTax","linePrice","getLineDiscounts","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$","_c3","itemsPerPage","currentPage","totalItems","surcharges","discounts","subTotalWithTax","subTotal","shippingWithTax","shipping","totalWithTax","total","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_vdr_dt2_custom_field_column_16_Template","OrderTableComponent_ng_template_19_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","_r4","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","DraftOrderVariantSelectorComponent_div_6_Template","DraftOrderDetailComponent","TypedBaseDetailComponent","changeDetector","orderTransitionService","super","getCustomFieldConfig","fetchHistory","init","eligibleShippingMethods$","getDraftOrderEligibleShippingMethods","eligibleShippingMethodsForDraftOrder","ngOnDestroy","destroy","event","addItemToDraftOrder","adjustDraftOrderLine","removeDraftOrderLine","getOrderAddressLines","orderAddress","val","hasId","setCustomerForDraftOrder","input","setDraftOrderShippingAddress","setDraftOrderBillingAddress","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","max","FulfillOrderDialogComponent_tr_22_img_2_Template","FulfillOrderDialogComponent_tr_22_input_12_Template","canSubmit","FulfillOrderDialogComponent","fulfillmentHandlerControl","getGlobalSettings","globalSettings","getFulfillableCount","trackInventory","markForCheck","getShippingMethodOperations","fulfillmentHandlers","handlers","fulfillmentHandlerDef","h","fulfillmentHandlerCode","fulfillmentHandler","configurableDefinitionToInstance","patchValue","globalTrackInventory","effectiveTracInventory","GlobalFlag","INHERIT","TRUE","unfulfilledCount","Math","min","fulfilled","flat","row","totalCount","fulfillmentQuantityIsValid","every","configurableOperationValueIsValid","handler","toConfigurableOperationInput","FulfillOrderDialogComponent_ng_template_0_Template","FulfillOrderDialogComponent_tr_22_Template","FulfillOrderDialogComponent_ng_template_33_Template","SimpleItemListComponent","customField_r2","customFieldFormGroup","FulfillmentDetailComponent_ng_container_11_vdr_custom_field_control_1_Template","SimpleItemListComponent_li_2_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","modification","note","tmp_1_0","getSurcharge","surcharge_r4","getAddedItems","getRemovedItems","FulfillmentCardComponent_vdr_fulfillment_detail_8_Template","FulfillmentCardComponent_div_9_Template","ModificationDetailComponent","addedItems","Map","removedItems","added","removed","getModifiedLines","modificationLine","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","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","discount_r14","line_r6","RefundOrderDialogComponent_tr_31_ng_container_18_vdr_dropdown_1_div_5_Template","discounts_r11","RefundOrderDialogComponent_tr_31_ng_container_18_vdr_dropdown_1_Template","_r18","ctx_r20","handleZeroQuantity","_r24","ctx_r10","RefundOrderDialogComponent_tr_31_ng_container_18_Template","RefundOrderDialogComponent_tr_31_input_20_Template","RefundOrderDialogComponent_tr_31_input_23_Template","RefundOrderDialogComponent_tr_31_input_26_Template","proratedUnitPriceWithTax","lineCanBeRefundedOrCancelled","payment_r31","settledPaymentsTotal","refundTotal","_r36","ctx_r37","RefundOrderDialogComponent_ng_template_68_ng_container_4_Template","RefundOrderDialogComponent_ng_template_68_ng_template_5_Template","isRefunding","_r33","RefundOrderDialogComponent","refundShipping","adjustment","lineRef","refundCount","settledPayments","alreadyRefundedTotal","summate","refundLine","selectedPayment","isCancelling","refundLines","getOrderLineInput","cancelLines","paymentId","filterFn","RefundOrderDialogComponent_ng_template_0_Template","RefundOrderDialogComponent_tr_31_Template","RefundOrderDialogComponent_option_45_Template","RefundOrderDialogComponent_div_66_Template","RefundOrderDialogComponent_div_67_Template","RefundOrderDialogComponent_ng_template_68_Template","SettleRefundDialogComponent","SettleRefundDialogComponent_ng_template_0_Template","SettleRefundDialogComponent_ng_template_9_Template","PaymentStateLabelComponent","PaymentStateLabelComponent_clr_icon_2_Template","RefundStateLabelComponent","errorMessage","RefundStateLabelComponent_clr_icon_2_Template","PaymentDetailComponent","refund_r3","settleRefund","OrderPaymentCardComponent_ng_container_10_vdr_labeled_data_16_Template","OrderPaymentCardComponent_ng_container_10_vdr_labeled_data_17_Template","OrderPaymentCardComponent_ng_container_10_vdr_labeled_data_18_Template","OrderPaymentCardComponent_ng_container_10_div_19_Template","refundHasMetadata","settlePayment","PaymentDetailComponent_vdr_labeled_data_7_Template","PaymentDetailComponent_vdr_labeled_data_8_Template","nextState_r18","transitionPaymentState","OrderPaymentCardComponent_div_11_ng_container_6_ng_container_2_Template","OrderPaymentCardComponent_div_11_ng_container_6_ng_template_3_Template","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_ng_container_4_vdr_chip_6_Template","OrderHistoryComponent_ng_container_15_ng_template_2_ng_container_3_ng_container_4_vdr_chip_7_Template","modification_r27","priceChange","isSettled","OrderHistoryComponent_ng_container_15_ng_template_2_ng_container_3_ng_container_4_Template","getModification","modificationId","payment_r35","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","refundId","items_r41","shippingCancelled","OrderHistoryComponent_ng_container_15_ng_template_2_ng_container_6_vdr_history_entry_detail_3_Template","_c2","getCancelledQuantity","getCancelledItems","fulfillment_r45","OrderHistoryComponent_ng_container_15_ng_template_2_ng_container_7_vdr_history_entry_detail_3_Template","ctx_r15","getFulfillment","fulfillment_r54","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","_r60","ctx_r58","updateNote","ctx_r61","deleteNote","isPublic","promotionId","OrderHistoryComponent_ng_container_15_ng_template_2_ng_container_12_vdr_history_entry_detail_4_Template","_r70","ctx_r69","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","getTimelineIcon","ORDER_MODIFIED","ORDER_PAYMENT_TRANSITION","ORDER_REFUND_TRANSITION","ORDER_CANCELLATION","ORDER_FULFILLMENT","ORDER_FULFILLMENT_TRANSITION","ORDER_NOTE","ORDER_COUPON_APPLIED","ORDER_COUPON_REMOVED","OrderHistoryComponent_ng_container_15_vdr_order_history_entry_host_1_Template","OrderHistoryComponent_ng_container_15_ng_template_2_Template","hasCustomComponent","OrderHistoryComponent","addNote","noteIsPrivate","itemMap","cancellationLines","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","_r11","addManualPayment","outstandingPaymentAmount","_r14","_r16","fulfillOrder","canAddFulfillment","_r19","transitionToModifying","cancelOrRefund","OrderDetailComponent_vdr_action_bar_1_button_12_ng_container_2_Template","OrderDetailComponent_vdr_action_bar_1_button_12_ng_template_3_Template","orderHasSettledPayments","_r21","SellerOrdersCardComponent_div_3_Template","nextState_r28","_r30","ctx_r29","OrderDetailComponent_vdr_action_bar_1_ng_container_13_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_11_Template","OrderDetailComponent_vdr_action_bar_1_button_12_Template","OrderDetailComponent_vdr_action_bar_1_ng_container_13_Template","hasUnsettledModifications","tmp_5_0","order_r33","_r47","payment_r45","OrderDetailComponent_vdr_page_detail_layout_3_vdr_card_12_vdr_order_payment_card_2_Template","fulfillment_r53","_r55","ctx_r54","transitionFulfillment","OrderDetailComponent_vdr_page_detail_layout_3_vdr_card_13_vdr_fulfillment_card_1_Template","entity_r58","row_r60","_r63","ctx_r62","ctx_r41","tmp_4_0","_r65","ctx_r64","openStateDiagram","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","ctx_r66","ctx_r67","ctx_r68","history$","ORDER_DETAIL_QUERY","ORDER_DETAIL_FRAGMENT","OrderDetailComponent","FormGroup","getCustomFieldsDefaults","defaultStates","relativeTo","route","getOrder","cancelPayment","paymentErrorMessage","transitionPaymentToState","allFulfillmentLines","allItemsFulfilled","getOutstandingModificationAmount","paymentIsValid","amountCovered","refundsTotal","priorState","addManualPaymentToOrder","refetchOrder","createFulfillment","mapTo","addFulfillmentToOrder","fulfillmentHandlerError","JSON","stringify","assertNever","transitionFulfillmentToState","isRefundable","refundOrder","cancelOrder","EditNoteDialogComponent","displayPrivacyControls","updateOrderNote","noteId","isPrivate","body","res","deleteOrderNote","setCustomFieldFormValues","i3","OrderDetailComponent_vdr_action_bar_1_Template","OrderDetailComponent_vdr_page_detail_layout_3_Template","OrderEditResultType","payment_r4","OrderEditsPreviewDialogComponent_div_8_option_6_Template","refundNote","priceDifference","Refund","Payment","PriceUnchanged","Cancel","OrderEditsPreviewDialogComponent","originalTotalWithTax","modifyOrderInput","refundPaymentId","OrderEditsPreviewDialogComponent_ng_template_0_Template","OrderEditsPreviewDialogComponent_div_8_Template","OrderEditsPreviewDialogComponent_ng_template_9_Template","transitionToPriorState","line_r22","orderLineCustomFieldsFormArray","i_r23","OrderEditorComponent_div_4_tr_24_img_2_Template","_r29","ctx_r28","updateLineQuantity","OrderEditorComponent_div_4_tr_24_td_18_Template","isLineModified","order_r5","addedLine_r31","productAsset","customField_r37","ctx_r36","addItemCustomFieldsFormArray","i_r32","OrderEditorComponent_div_4_tr_25_td_18_ng_container_1_Template","OrderEditorComponent_div_4_tr_25_img_2_Template","_r40","ctx_r39","updateAddedItemQuantity","removeAddedItem","OrderEditorComponent_div_4_tr_25_td_18_Template","productVariantName","OrderEditorComponent_div_4_tr_26_td_7_Template","surcharge_r43","surchargePrice_r50","i_r47","_r53","ctx_r52","removeSurcharge","OrderEditorComponent_div_4_tr_27_td_9_Template","OrderEditorComponent_div_4_tr_27_ng_container_11_Template","surcharge_r46","getSurchargePrices","asset_r57","OrderEditorComponent_div_4_clr_accordion_content_51_div_2_img_1_Template","addItemSelectedVariant","getSelectedItemPrice","ctx_r55","customField_r59","addItemCustomFieldsForm","_r61","ctx_r60","OrderEditorComponent_div_4_clr_accordion_content_51_div_2_Template","OrderEditorComponent_div_4_clr_accordion_content_51_ng_container_3_Template","couponCodesControl","_r64","ctx_r63","addSurcharge","surchargeForm","tmp_8_0","shippingAddressForm","addressCustomFields","billingAddressForm","addItems","adjustOrderLines","ctx_r19","OrderEditorComponent_div_4_th_19_Template","OrderEditorComponent_div_4_tr_24_Template","OrderEditorComponent_div_4_tr_25_Template","OrderEditorComponent_div_4_tr_26_Template","OrderEditorComponent_div_4_tr_27_Template","OrderEditorComponent_div_4_td_35_Template","OrderEditorComponent_div_4_clr_accordion_content_51_Template","OrderEditorComponent_div_4_clr_accordion_content_56_Template","OrderEditorComponent_div_4_clr_accordion_content_61_Template","OrderEditorComponent_div_4_clr_accordion_content_66_Template","OrderEditorComponent_div_4_clr_accordion_content_71_Template","OrderEditorComponent_div_4_li_79_Template","OrderEditorComponent_div_4_li_80_Template","OrderEditorComponent_div_4_li_81_Template","OrderEditorComponent_div_4_li_82_Template","OrderEditorComponent_div_4_li_83_Template","_r67","recalculateShipping","previewAndModify","addedLines","trackByProductVariantId","canPreviewChanges","OrderEditorComponent","BaseDetailComponent","dryRun","updateShippingAddress","updateBillingAddress","addedVariants","getSinglePriceValue","variantInfo","snapshot","paramMap","takeUntil","destroy$","setValue","priceIncludesTax","taxDescription","addAddressCustomFieldsFormGroup","UntypedFormArray","valueChanges","modifyRow","shareReplay","previousState","indexOf","isMatchingAddItemRow","key","removeAt","surcharge","round","transformRelationCustomFieldInputs","simpleDeepClone","modifyOrder","wetRunInput","nextState","parentFormGroup","address","addressCustomFieldsFormGroup","customFieldDef","languageCode","OrderEditorComponent_vdr_action_bar_1_Template","OrderEditorComponent_div_4_Template","OrderListComponent_ng_container_4_a_1_Template","order_r13","order_r14","order_r15","stopPropagation","order_r16","OrderListComponent_ng_template_27_vdr_chip_0_Template","OrderListComponent_ng_template_27_vdr_chip_1_Template","OrderListComponent_ng_template_27_vdr_chip_2_Template","order_r18","OrderType","Regular","Aggregate","Seller","order_r22","order_r23","order_r24","updatedAt","order_r25","orderPlacedAt","order_r26","customField_r27","sorts","OrderListComponent","TypedBaseListComponent","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","OrderListComponent_ng_template_15_Template","OrderListComponent_ng_template_18_Template","OrderListComponent_ng_template_21_Template","OrderListComponent_ng_template_24_Template","OrderListComponent_ng_template_27_Template","OrderListComponent_ng_template_30_Template","OrderListComponent_ng_template_33_Template","OrderListComponent_ng_template_36_Template","OrderListComponent_ng_template_39_Template","OrderListComponent_ng_template_42_Template","OrderListComponent_vdr_dt2_custom_field_column_43_Template","items$","itemsPerPage$","totalItems$","currentPage$","GET_CUSTOMER_ADDRESSES","ADDRESS_FRAGMENT","OrderResolver","resolve","navigateAway$","events","ActivationStart","stream","OrderGuard","canActivate","url","createDraftOrder","parseUrl","createRoutes","pageService","path","PageComponent","pathMatch","locationId","breadcrumb","children","getPageTabRoutes","link","modifyingOrderBreadcrumb","orderBreadcrumb","params","aggregateOrder","breadcrumbs","modifiedBreadcrumbs","slice","OrderModule","hasRegisteredTabsAndBulkActions","registerPageTab","priority","location","tab","detailComponentWithResolver","OrderDetailQueryDocument","entityKey","getBreadcrumbs","provide","ROUTES","useFactory","multi","deps","PageService","imports","SharedModule","RouterModule","forChild"],"sourceRoot":"webpack:///","sources":["./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-graph.component.html","./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.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/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-edits-preview-dialog/order-edits-preview-dialog.component.ts","./src/lib/order/src/components/order-edits-preview-dialog/order-edits-preview-dialog.component.html","./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/select-address-dialog/select-address-dialog.graphql.ts","./src/lib/order/src/providers/routing/order-resolver.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":["<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)=\"removeCouponCode.emit($event.value?.code)\"\r\n>\r\n <ng-template ng-option-tmp let-item=\"item\">\r\n <vdr-chip>{{ item.code }}</vdr-chip>\r\n {{ item.promotionName }}\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","<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>{{ 'order.set-customer-for-order' | translate }}</ng-template>\r\n\r\n<clr-tabs>\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-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 </div>\r\n </clr-tab-content>\r\n </ng-template>\r\n </clr-tab>\r\n <clr-tab>\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 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\n\r\nexport type Customer = GetCustomerListQuery['customers']['items'][number];\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<Customer | CreateCustomerInput> {\r\n resolveWith: (result?: Customer | CreateCustomerInput) => void;\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\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]);\r\n }\r\n if (this.createNew && this.customerForm.valid) {\r\n const formValue = this.customerForm.value;\r\n this.resolveWith(formValue);\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';\nimport { Dialog } from '@vendure/admin-ui/core';\n\n@Component({\n selector: 'vdr-order-state-select-dialog',\n templateUrl: './order-state-select-dialog.component.html',\n styleUrls: ['./order-state-select-dialog.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class OrderStateSelectDialogComponent implements Dialog<string> {\n resolveWith: (result?: string) => void;\n nextStates: string[] = [];\n message = '';\n cancellable: boolean;\n selectedState = '';\n\n select() {\n if (this.selectedState) {\n this.resolveWith(this.selectedState);\n }\n }\n\n cancel() {\n this.resolveWith();\n }\n}\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 { DataTable2ColumnComponent, 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 get sortedColumns() {\r\n const columns = this.allColumns;\r\n const dataTableConfig = this.getDataTableConfig();\r\n for (const [id, index] of Object.entries(dataTableConfig[this.id].order)) {\r\n const column = columns.find(c => c.id === id);\r\n const currentIndex = columns.findIndex(c => c.id === id);\r\n if (currentIndex !== -1 && column) {\r\n columns.splice(currentIndex, 1);\r\n columns.splice(index, 0, column);\r\n }\r\n }\r\n return columns;\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 [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\"></vdr-action-bar-items>\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-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 <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-dropdown-menu>\r\n </vdr-dropdown>\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 DataService,\r\n DeletionResult,\r\n DraftOrderEligibleShippingMethodsQuery,\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, Observable, 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 .subscribe();\r\n } else if (result) {\r\n this.dataService.order.setCustomerForDraftOrder(this.id, { input: result }).subscribe();\r\n }\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\">{{ item.quantity }}</div>\r\n <clr-icon shape=\"times\" size=\"12\"></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","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\r\n ngOnChanges(): void {\r\n const { added, removed } = this.getModifiedLines();\r\n this.addedItems = added;\r\n this.removedItems = removed;\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 private getModifiedLines() {\r\n const added = new Map<OrderDetailFragment['lines'][number], number>();\r\n const removed = new Map<OrderDetailFragment['lines'][number], 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 removed.set(line, -modificationLine.quantity);\r\n } else {\r\n added.set(line, modificationLine.quantity);\r\n }\r\n }\r\n return { added, removed };\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","<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","<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","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","<ng-template vdrDialogTitle>{{ 'order.refund-and-cancel-order' | translate }}</ng-template>\r\n\r\n<div class=\"refund-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.quantity' | translate }}</th>\r\n <th>{{ 'order.unit-price' | translate }}</th>\r\n <th>{{ 'order.prorated-unit-price' | translate }}</th>\r\n <th>{{ 'order.quantity' | translate }}</th>\r\n <th>{{ 'order.refund' | translate }}</th>\r\n <th>{{ 'order.cancel' | translate }}</th>\r\n </tr>\r\n </thead>\r\n <tr *ngFor=\"let line of order.lines\" class=\"order-line\">\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\">\r\n {{ line.quantity }}\r\n <vdr-line-refunds [line]=\"line\" [payments]=\"order.payments\"></vdr-line-refunds>\r\n </td>\r\n <td class=\"align-middle quantity\">\r\n {{ line.unitPriceWithTax | localeCurrency: order.currencyCode }}\r\n </td>\r\n <td class=\"align-middle quantity\">\r\n <div class=\"prorated-wrapper\">\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 </div>\r\n </td>\r\n <td class=\"align-middle quantity-col\">\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 (input)=\"handleZeroQuantity(lineQuantities[line.id])\"\r\n />\r\n </td>\r\n <td class=\"align-middle\">\r\n <div class=\"cancel-checkbox-wrapper\">\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].refund\"\r\n />\r\n </div>\r\n </td>\r\n <td class=\"align-middle\">\r\n <div class=\"cancel-checkbox-wrapper\">\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 </div>\r\n </td>\r\n </tr>\r\n </table>\r\n </div>\r\n <div class=\"refund-details mt-4\" [class.faded]=\"!isRefunding() && !isCancelling()\">\r\n <div>\r\n <label class=\"clr-control-label\">{{ 'order.refund-cancellation-reason' | translate }}</label>\r\n <ng-select\r\n [disabled]=\"!isRefunding() && !isCancelling()\"\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 </div>\r\n\r\n <div>\r\n <clr-select-container>\r\n <label>{{ 'order.payment-to-refund' | translate }}</label>\r\n <select clrSelect name=\"options\" [(ngModel)]=\"selectedPayment\" [disabled]=\"!isRefunding()\">\r\n <option\r\n *ngFor=\"let payment of settledPayments\"\r\n [ngValue]=\"payment\"\r\n [disabled]=\"payment.state !== 'Settled'\"\r\n >\r\n #{{ payment.id }} {{ payment.method }}:\r\n {{ payment.amount | localeCurrency: order.currencyCode }}\r\n </option>\r\n </select>\r\n </clr-select-container>\r\n\r\n <clr-checkbox-wrapper>\r\n <input type=\"checkbox\" clrCheckbox [(ngModel)]=\"refundShipping\" [disabled]=\"!isRefunding()\" />\r\n <label>\r\n {{ 'order.refund-shipping' | translate }} ({{\r\n order.shippingWithTax | localeCurrency: order.currencyCode\r\n }})\r\n </label>\r\n </clr-checkbox-wrapper>\r\n <clr-input-container>\r\n <label>{{ 'order.refund-adjustment' | translate }}</label>\r\n <vdr-currency-input\r\n clrInput\r\n [disabled]=\"!isRefunding()\"\r\n [currencyCode]=\"order.currencyCode\"\r\n [(ngModel)]=\"adjustment\"\r\n ></vdr-currency-input>\r\n </clr-input-container>\r\n <div class=\"totals\" [class.disabled]=\"!isRefunding()\">\r\n <div class=\"order-total\">\r\n {{ 'order.payment-amount' | translate }}:\r\n {{ selectedPayment.amount | localeCurrency: order.currencyCode }}\r\n </div>\r\n <div class=\"refund-total\">\r\n {{ 'order.refund-total' | translate }}:\r\n {{ refundTotal | localeCurrency: order.currencyCode }}\r\n </div>\r\n <div class=\"refund-total-error\" *ngIf=\"refundTotal < 0 || settledPaymentsTotal < refundTotal\">\r\n {{\r\n 'order.refund-total-error'\r\n | translate\r\n : {\r\n min: 0 | currency: order.currencyCode,\r\n max: settledPaymentsTotal | localeCurrency: order.currencyCode\r\n }\r\n }}\r\n </div>\r\n <div class=\"refund-total-warning\" *ngIf=\"selectedPayment.amount < refundTotal\">\r\n {{ 'order.refund-total-warning' | translate }}\r\n </div>\r\n </div>\r\n </div>\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 <ng-container *ngIf=\"isRefunding(); else cancelling\">\r\n {{\r\n 'order.refund-with-amount'\r\n | translate: { amount: refundTotal | localeCurrency: order.currencyCode }\r\n }}\r\n </ng-container>\r\n <ng-template #cancelling>\r\n {{ 'order.cancel-selected-items' | translate }}\r\n </ng-template>\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 PaymentWithRefundsFragment,\r\n RefundOrderInput,\r\n} from '@vendure/admin-ui/core';\r\nimport { summate } from '@vendure/common/lib/shared-utils';\r\n\r\ntype SelectionLine = { quantity: number; refund: boolean; cancel: boolean };\r\ntype Payment = NonNullable<OrderDetailFragment['payments']>[number];\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; refund: RefundOrderInput }>\r\n{\r\n order: OrderDetailFragment;\r\n resolveWith: (result?: { cancel: CancelOrderInput; refund: RefundOrderInput }) => void;\r\n reason: string;\r\n settledPayments: Payment[];\r\n selectedPayment: Payment;\r\n lineQuantities: { [lineId: string]: SelectionLine } = {};\r\n refundShipping = false;\r\n adjustment = 0;\r\n reasons = getAppConfig().cancellationReasons ?? [\r\n _('order.refund-reason-customer-request'),\r\n _('order.refund-reason-not-available'),\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 get refundTotal(): number {\r\n const itemTotal = this.order.lines.reduce((total, line) => {\r\n const lineRef = this.lineQuantities[line.id];\r\n const refundCount = (lineRef.refund && lineRef.quantity) || 0;\r\n return total + line.proratedUnitPriceWithTax * refundCount;\r\n }, 0);\r\n return itemTotal + (this.refundShipping ? this.order.shippingWithTax : 0) + this.adjustment;\r\n }\r\n\r\n get settledPaymentsTotal(): number {\r\n return this.settledPayments\r\n .map(payment => {\r\n const paymentTotal = payment.amount;\r\n const alreadyRefundedTotal = summate(\r\n payment.refunds.filter(r => r.state !== 'Failed') as Array<\r\n Required<Payment['refunds'][number]>\r\n >,\r\n 'total',\r\n );\r\n return paymentTotal - alreadyRefundedTotal;\r\n })\r\n .reduce((sum, amount) => sum + amount, 0);\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: false,\r\n cancel: false,\r\n },\r\n }),\r\n {},\r\n );\r\n this.settledPayments = (this.order.payments || []).filter(p => p.state === 'Settled');\r\n if (this.settledPayments.length) {\r\n this.selectedPayment = this.settledPayments[0];\r\n }\r\n }\r\n\r\n handleZeroQuantity(line?: SelectionLine) {\r\n if (line?.quantity === 0) {\r\n line.cancel = false;\r\n line.refund = false;\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 && line.refund),\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 if (this.isRefunding()) {\r\n return !!(\r\n this.selectedPayment &&\r\n this.reason &&\r\n 0 < this.refundTotal &&\r\n this.refundTotal <= this.settledPaymentsTotal\r\n );\r\n } else if (this.isCancelling()) {\r\n return !!this.reason;\r\n }\r\n return false;\r\n }\r\n\r\n select() {\r\n const payment = this.selectedPayment;\r\n if (payment) {\r\n const refundLines = this.getOrderLineInput(line => line.refund);\r\n const cancelLines = this.getOrderLineInput(line => line.cancel);\r\n\r\n this.resolveWith({\r\n refund: {\r\n lines: refundLines,\r\n reason: this.reason,\r\n shipping: this.refundShipping ? this.order.shippingWithTax : 0,\r\n adjustment: this.adjustment,\r\n paymentId: payment.id,\r\n },\r\n cancel: {\r\n lines: cancelLines,\r\n orderId: this.order.id,\r\n reason: this.reason,\r\n cancelShipping: this.refundShipping,\r\n },\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.transactionId\">#{{ payment.transactionId }}</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=\"card-header payment-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 [label]=\"'order.refund-metadata' | translate\" *ngIf=\"refundHasMetadata(refund)\">\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 </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';\nimport { CurrencyCode, OrderDetailFragment } from '@vendure/admin-ui/core';\n\ntype Payment = NonNullable<OrderDetailFragment['payments']>[number];\n\n@Component({\n selector: 'vdr-order-payment-card',\n templateUrl: './order-payment-card.component.html',\n styleUrls: ['./order-payment-card.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class OrderPaymentCardComponent {\n @Input() payment: Payment;\n @Input() currencyCode: CurrencyCode;\n @Output() settlePayment = new EventEmitter<Payment>();\n @Output() transitionPaymentState = new EventEmitter<{ payment: Payment; state: string }>();\n @Output() settleRefund = new EventEmitter<Payment['refunds'][number]>();\n\n refundHasMetadata(refund?: Payment['refunds'][number]): boolean {\n return !!refund && Object.keys(refund.metadata).length > 0;\n }\n\n nextOtherStates(): string[] {\n if (!this.payment) {\n return [];\n }\n return this.payment.nextStates.filter(s => s !== 'Settled' && s !== 'Error');\n }\n}\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\">\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 <ng-container *ngIf=\"getModification(entry.data.modificationId) as modification\">\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\" *ngIf=\"modification.isSettled\">{{\r\n 'order.modification-settled' | translate\r\n }}</vdr-chip>\r\n <vdr-chip colorType=\"error\" *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 </ng-container>\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 {{ 'order.transaction-id' | translate }}: {{ getPayment(entry)?.transactionId }}\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 </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 {{\r\n 'order.history-refund-transition'\r\n | translate\r\n : { from: entry.data.from, to: entry.data.to, id: entry.data.refundId }\r\n }}\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) 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=\"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 <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 *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 GetOrderHistoryQuery,\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 'error';\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_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_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_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 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 getCancelledQuantity(entry: TimelineHistoryEntry): number {\r\n return entry.data.lines.reduce((total, line) => total + line.quantity, 0);\r\n }\r\n\r\n getCancelledItems(entry: TimelineHistoryEntry): Array<{ name: string; quantity: number }> {\r\n const itemMap = new Map<string, number>();\r\n const cancellationLines: Array<{ orderLineId: string; quantity: number }> = entry.data.lines;\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-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\r\n *ngIf=\"order.type !== 'Aggregate' && order.nextStates.includes('Modifying')\"\r\n >\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-dropdown-menu>\r\n </vdr-dropdown>\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>\r\n <vdr-order-state-label [state]=\"order.state\">\r\n <button\r\n class=\"icon-button\"\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 </vdr-order-state-label>\r\n </vdr-card>\r\n <vdr-card [title]=\"'order.customer' | translate\">\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-2' }}</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 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, 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 { 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\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 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(_('order.cancelled-order-success'));\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.refund.lines.length) {\r\n return this.dataService.order\r\n .refundOrder(input.refund)\r\n .pipe(map(res => res.refundOrder));\r\n } else {\r\n return [undefined];\r\n }\r\n }),\r\n )\r\n .subscribe(result => {\r\n if (result) {\r\n switch (result.__typename) {\r\n case 'Refund':\r\n this.refetchOrder(result).subscribe();\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 }\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","import { ChangeDetectionStrategy, Component, OnInit } from '@angular/core';\r\nimport { CustomFieldConfig, Dialog, ModifyOrderInput, OrderDetailFragment } from '@vendure/admin-ui/core';\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 refundPaymentId: string;\r\n refundNote?: string;\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 order: OrderDetailFragment;\r\n originalTotalWithTax: number;\r\n orderLineCustomFields: CustomFieldConfig[];\r\n modifyOrderInput: ModifyOrderInput;\r\n\r\n selectedPayment?: NonNullable<OrderDetailFragment['payments']>[number];\r\n refundNote: string;\r\n resolveWith: (result?: OrderEditResult) => void;\r\n\r\n get priceDifference(): number {\r\n return this.order.totalWithTax - this.originalTotalWithTax;\r\n }\r\n\r\n ngOnInit() {\r\n this.refundNote = this.modifyOrderInput.note || '';\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 refundPaymentId: this.selectedPayment!.id,\r\n refundNote: this.refundNote,\r\n });\r\n } else {\r\n this.resolveWith({\r\n result: OrderEditResultType.PriceUnchanged,\r\n });\r\n }\r\n }\r\n}\r\n","<ng-template vdrDialogTitle>{{ 'order.confirm-modifications' | translate }}</ng-template>\r\n<vdr-order-table [order]=\"order\" [orderLineCustomFields]=\"orderLineCustomFields\"></vdr-order-table>\r\n\r\n<h4 class=\"h4\">\r\n {{ 'order.modify-order-price-difference' | translate }}:\r\n <strong>{{ priceDifference | localeCurrency: order.currencyCode }}</strong>\r\n</h4>\r\n<div *ngIf=\"priceDifference < 0\">\r\n<clr-select-container>\r\n <label>{{ 'order.payment-to-refund' | translate }}</label>\r\n <select clrSelect name=\"options\" [(ngModel)]=\"selectedPayment\">\r\n <option\r\n *ngFor=\"let payment of order.payments\"\r\n [ngValue]=\"payment\"\r\n >\r\n #{{ payment.id }} {{ payment.method }}:\r\n {{ payment.amount | localeCurrency: order.currencyCode }}\r\n </option>\r\n </select>\r\n</clr-select-container>\r\n <label class=\"clr-control-label\">{{ 'order.refund-cancellation-reason' | translate }}</label>\r\n <textarea [(ngModel)]=\"refundNote\" name=\"refundNote\" clrTextarea required></textarea>\r\n</div>\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]=\"priceDifference < 0 && !selectedPayment\" class=\"btn btn-primary\">\r\n {{ 'common.confirm' | translate }}\r\n </button>\r\n</ng-template>\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 <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-block>\r\n <div *ngIf=\"entity$ | async as order\">\r\n <div class=\"clr-row\">\r\n <div class=\"clr-col-lg-8\">\r\n <table class=\"order-table 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.unit-price' | translate }}</th>\r\n <th>{{ 'order.quantity' | translate }}</th>\r\n <th *ngIf=\"orderLineCustomFields.length\">\r\n {{ 'common.custom-fields' | translate }}\r\n </th>\r\n <th>{{ 'order.total' | translate }}</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr\r\n *ngFor=\"let line of order.lines; let i = index\"\r\n class=\"order-line\"\r\n [class.is-cancelled]=\"line.quantity === 0\"\r\n [class.modified]=\"isLineModified(line)\"\r\n >\r\n <td class=\"align-middle thumb\">\r\n <img\r\n *ngIf=\"line.featuredAsset\"\r\n [src]=\"line.featuredAsset | assetPreview : 'tiny'\"\r\n />\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 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 </td>\r\n <td class=\"align-middle quantity\">\r\n <input\r\n type=\"number\"\r\n min=\"0\"\r\n [value]=\"line.quantity\"\r\n (input)=\"updateLineQuantity(line, $event.target.value)\"\r\n />\r\n <vdr-line-refunds\r\n [line]=\"line\"\r\n [payments]=\"order.payments\"\r\n ></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 </td>\r\n <td\r\n *ngIf=\"orderLineCustomFields.length\"\r\n class=\"order-line-custom-field align-middle\"\r\n >\r\n <vdr-tabbed-custom-fields\r\n entityName=\"OrderLine\"\r\n [customFields]=\"orderLineCustomFields\"\r\n [customFieldsFormGroup]=\"orderLineCustomFieldsFormArray.get([i])\"\r\n [compact]=\"true\"\r\n ></vdr-tabbed-custom-fields>\r\n </td>\r\n <td class=\"align-middle total\">\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 </td>\r\n </tr>\r\n <tr\r\n *ngFor=\"\r\n let addedLine of addedLines;\r\n trackBy: trackByProductVariantId;\r\n let i = index\r\n \"\r\n class=\"modified\"\r\n >\r\n <td class=\"align-middle thumb\">\r\n <img\r\n *ngIf=\"addedLine.productAsset\"\r\n [src]=\"addedLine.productAsset | assetPreview : 'tiny'\"\r\n />\r\n </td>\r\n <td class=\"align-middle name\">{{ addedLine.productVariantName }}</td>\r\n <td class=\"align-middle sku\">{{ addedLine.sku }}</td>\r\n <td class=\"align-middle unit-price\">\r\n {{ addedLine.priceWithTax | localeCurrency : order.currencyCode }}\r\n <div class=\"net-price\" [title]=\"'order.net-price' | translate\">\r\n {{ addedLine.price | localeCurrency : order.currencyCode }}\r\n </div>\r\n </td>\r\n <td class=\"align-middle quantity\">\r\n <input\r\n type=\"number\"\r\n min=\"0\"\r\n [value]=\"addedLine.quantity\"\r\n (input)=\"updateAddedItemQuantity(addedLine, $event.target.value)\"\r\n />\r\n <button class=\"icon-button\" (click)=\"removeAddedItem(i)\">\r\n <clr-icon shape=\"trash\"></clr-icon>\r\n </button>\r\n </td>\r\n <td\r\n *ngIf=\"orderLineCustomFields.length\"\r\n class=\"order-line-custom-field align-middle\"\r\n >\r\n <ng-container *ngFor=\"let customField of orderLineCustomFields\">\r\n <vdr-custom-field-control\r\n [customField]=\"customField\"\r\n [customFieldsFormGroup]=\"addItemCustomFieldsFormArray.get([i])\"\r\n entityName=\"OrderLine\"\r\n [compact]=\"true\"\r\n ></vdr-custom-field-control>\r\n </ng-container>\r\n </td>\r\n <td class=\"align-middle total\">\r\n {{\r\n (addedLine.priceWithTax * addedLine.quantity) / 100\r\n | currency : order.currencyCode\r\n }}\r\n <div class=\"net-price\" [title]=\"'order.net-price' | translate\">\r\n {{\r\n (addedLine.price * addedLine.quantity) / 100\r\n | currency : order.currencyCode\r\n }}\r\n </div>\r\n </td>\r\n </tr>\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\"></td>\r\n <td></td>\r\n <td *ngIf=\"orderLineCustomFields.length\"></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 </tr>\r\n <tr\r\n class=\"surcharge modified\"\r\n *ngFor=\"let surcharge of modifyOrderInput.surcharges; let i = index\"\r\n >\r\n <td class=\"align-middle name left\" colspan=\"2\">\r\n {{ surcharge.description }}\r\n <button class=\"icon-button\" (click)=\"removeSurcharge(i)\">\r\n <clr-icon shape=\"trash\"></clr-icon>\r\n </button>\r\n </td>\r\n <td class=\"align-middle sku\">{{ surcharge.sku }}</td>\r\n <td class=\"align-middle\"></td>\r\n <td></td>\r\n <td *ngIf=\"orderLineCustomFields.length\"></td>\r\n <td class=\"align-middle total\">\r\n <ng-container *ngIf=\"getSurchargePrices(surcharge) as surchargePrice\">\r\n {{ surchargePrice.priceWithTax | localeCurrency : order.currencyCode }}\r\n <div class=\"net-price\" [title]=\"'order.net-price' | translate\">\r\n {{ surchargePrice.price | localeCurrency : order.currencyCode }}\r\n </div>\r\n </ng-container>\r\n </td>\r\n </tr>\r\n <tr class=\"shipping\">\r\n <td class=\"left clr-align-middle\">{{ 'order.shipping' | translate }}</td>\r\n <td class=\"clr-align-middle\">\r\n {{ order.shippingLines[0]?.shippingMethod?.name }}\r\n </td>\r\n <td colspan=\"3\"></td>\r\n <td *ngIf=\"orderLineCustomFields.length\"></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 </tr>\r\n </tbody>\r\n </table>\r\n\r\n <h4 class=\"mb-2\">{{ 'order.modifications' | translate }}</h4>\r\n <clr-accordion>\r\n <clr-accordion-panel>\r\n <clr-accordion-title>{{ 'order.add-item-to-order' | translate }}</clr-accordion-title>\r\n <clr-accordion-content *clrIfExpanded>\r\n <vdr-product-variant-selector\r\n class=\"mb-4\"\r\n (productSelected)=\"addItemSelectedVariant = $event\"\r\n >\r\n </vdr-product-variant-selector>\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\">{{\r\n addItemSelectedVariant.productVariantName\r\n }}</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 <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 <button\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 </clr-accordion-content>\r\n </clr-accordion-panel>\r\n <clr-accordion-panel>\r\n <clr-accordion-title>{{ 'order.set-coupon-codes' | translate }}</clr-accordion-title>\r\n <clr-accordion-content *clrIfExpanded>\r\n <vdr-coupon-code-selector\r\n [control]=\"couponCodesControl\"\r\n ></vdr-coupon-code-selector>\r\n </clr-accordion-content>\r\n </clr-accordion-panel>\r\n\r\n <clr-accordion-panel>\r\n <clr-accordion-title>{{ 'order.add-surcharge' | translate }}</clr-accordion-title>\r\n <clr-accordion-content *clrIfExpanded>\r\n <form [formGroup]=\"surchargeForm\" (submit)=\"addSurcharge(surchargeForm.value)\">\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 }\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\r\n id=\"taxRate\"\r\n type=\"number\"\r\n min=\"0\"\r\n max=\"100\"\r\n formControlName=\"taxRate\"\r\n /></vdr-affixed-input>\r\n </vdr-form-field>\r\n <vdr-form-field\r\n [label]=\"'order.tax-description' | translate\"\r\n for=\"taxDescription\"\r\n ><input id=\"taxDescription\" type=\"text\" formControlName=\"taxDescription\"\r\n /></vdr-form-field>\r\n <button\r\n class=\"btn btn-secondary\"\r\n [disabled]=\"\r\n surchargeForm.invalid ||\r\n surchargeForm.pristine ||\r\n surchargeForm.get('price')?.value === 0\r\n \"\r\n >\r\n {{ 'order.add-surcharge' | translate }}\r\n </button>\r\n </form>\r\n </clr-accordion-content>\r\n </clr-accordion-panel>\r\n <clr-accordion-panel>\r\n <clr-accordion-title>{{\r\n 'order.edit-shipping-address' | translate\r\n }}</clr-accordion-title>\r\n <clr-accordion-content *clrIfExpanded>\r\n <vdr-address-form\r\n [formGroup]=\"shippingAddressForm\"\r\n [availableCountries]=\"availableCountries$ | async\"\r\n [customFields]=\"addressCustomFields\"\r\n ></vdr-address-form>\r\n </clr-accordion-content>\r\n </clr-accordion-panel>\r\n <clr-accordion-panel>\r\n <clr-accordion-title>{{\r\n 'order.edit-billing-address' | translate\r\n }}</clr-accordion-title>\r\n <clr-accordion-content *clrIfExpanded>\r\n <vdr-address-form\r\n [formGroup]=\"billingAddressForm\"\r\n [availableCountries]=\"availableCountries$ | async\"\r\n [customFields]=\"addressCustomFields\"\r\n ></vdr-address-form>\r\n </clr-accordion-content>\r\n </clr-accordion-panel>\r\n </clr-accordion>\r\n </div>\r\n <div class=\"clr-col-lg-4 order-cards\">\r\n <div class=\"card\">\r\n <div class=\"card-header\">\r\n {{ 'order.modification-summary' | translate }}\r\n </div>\r\n <div class=\"card-block\">\r\n <ul>\r\n <li *ngIf=\"modifyOrderInput.addItems?.length\">\r\n {{\r\n 'order.modification-adding-items'\r\n | translate : { count: modifyOrderInput.addItems?.length }\r\n }}\r\n </li>\r\n <li *ngIf=\"modifyOrderInput.adjustOrderLines?.length\">\r\n {{\r\n 'order.modification-adjusting-lines'\r\n | translate : { count: modifyOrderInput.adjustOrderLines?.length }\r\n }}\r\n </li>\r\n <li *ngIf=\"modifyOrderInput.surcharges?.length\">\r\n {{\r\n 'order.modification-adding-surcharges'\r\n | translate : { count: modifyOrderInput.surcharges?.length }\r\n }}\r\n </li>\r\n <li *ngIf=\"shippingAddressForm.dirty\">\r\n {{ 'order.modification-updating-shipping-address' | translate }}\r\n </li>\r\n <li *ngIf=\"billingAddressForm.dirty\">\r\n {{ 'order.modification-updating-billing-address' | translate }}\r\n </li>\r\n </ul>\r\n </div>\r\n <div class=\"card-block\">\r\n <label class=\"clr-control-label\">{{ 'order.note' | translate }}</label>\r\n <textarea [(ngModel)]=\"note\" name=\"note\" clrTextarea required></textarea>\r\n <clr-checkbox-wrapper class=\"\">\r\n <input type=\"checkbox\" clrCheckbox [(ngModel)]=\"recalculateShipping\" />\r\n <label>{{ 'order.modification-recalculate-shipping' | translate }}</label>\r\n </clr-checkbox-wrapper>\r\n </div>\r\n <div class=\"card-footer\">\r\n <button\r\n class=\"btn btn-primary\"\r\n [disabled]=\"!canPreviewChanges()\"\r\n (click)=\"previewAndModify(order)\"\r\n >\r\n {{ 'order.preview-changes' | translate }}\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <vdr-page-block> </vdr-page-block\r\n></vdr-page-block>\r\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, OnDestroy, OnInit } from '@angular/core';\r\nimport { UntypedFormArray, UntypedFormControl, UntypedFormGroup, Validators } from '@angular/forms';\r\nimport { ActivatedRoute, Router } from '@angular/router';\r\nimport {\r\n AddItemInput,\r\n BaseDetailComponent,\r\n CustomFieldConfig,\r\n DataService,\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 OrderLineInput,\r\n ProductSelectorSearchQuery,\r\n ServerConfigService,\r\n SortOrder,\r\n SurchargeInput,\r\n transformRelationCustomFieldInputs,\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 { mapTo, shareReplay, switchMap, takeUntil } from 'rxjs/operators';\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\n\r\ntype ProductSelectorItem = ProductSelectorSearchQuery['search']['items'][number];\r\n\r\ninterface AddedLine {\r\n productVariantId: string;\r\n productAsset?: ProductSelectorItem['productAsset'] | null;\r\n productVariantName: string;\r\n sku: string;\r\n priceWithTax: number;\r\n price: number;\r\n quantity: number;\r\n}\r\n\r\ntype ModifyOrderData = Omit<ModifyOrderInput, 'addItems' | 'adjustOrderLines'> & {\r\n addItems: Array<AddItemInput & { customFields?: any }>;\r\n adjustOrderLines: Array<OrderLineInput & { customFields?: any }>;\r\n};\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 BaseDetailComponent<OrderDetailFragment>\r\n implements OnInit, OnDestroy\r\n{\r\n availableCountries$: Observable<GetAvailableCountriesQuery['countries']['items']>;\r\n addressCustomFields: CustomFieldConfig[];\r\n detailForm = new UntypedFormGroup({});\r\n couponCodesControl = new UntypedFormControl();\r\n orderLineCustomFieldsFormArray: UntypedFormArray;\r\n addItemCustomFieldsFormArray: UntypedFormArray;\r\n addItemCustomFieldsForm: UntypedFormGroup;\r\n addItemSelectedVariant: ProductSelectorItem | undefined;\r\n orderLineCustomFields: CustomFieldConfig[];\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 updateShippingAddress: {},\r\n updateBillingAddress: {},\r\n };\r\n surchargeForm: UntypedFormGroup;\r\n shippingAddressForm: UntypedFormGroup;\r\n billingAddressForm: UntypedFormGroup;\r\n note = '';\r\n recalculateShipping = true;\r\n previousState: string;\r\n private addedVariants = new Map<string, ProductSelectorItem>();\r\n\r\n constructor(\r\n router: Router,\r\n route: ActivatedRoute,\r\n serverConfigService: ServerConfigService,\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(route, router, serverConfigService, dataService);\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 ...variantInfo,\r\n price: getSinglePriceValue(variantInfo.price),\r\n priceWithTax: getSinglePriceValue(variantInfo.priceWithTax),\r\n quantity: row.quantity,\r\n };\r\n }\r\n })\r\n .filter(notNullOrUndefined);\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(takeUntil(this.destroy$)).subscribe(order => {\r\n if (order.couponCodes.length) {\r\n this.couponCodesControl.setValue(order.couponCodes);\r\n }\r\n this.surchargeForm = new UntypedFormGroup({\r\n description: new UntypedFormControl('', Validators.required),\r\n sku: new UntypedFormControl(''),\r\n price: new UntypedFormControl(0, Validators.required),\r\n priceIncludesTax: new UntypedFormControl(true),\r\n taxRate: new UntypedFormControl(0),\r\n taxDescription: new UntypedFormControl(''),\r\n });\r\n if (!this.shippingAddressForm) {\r\n this.shippingAddressForm = new UntypedFormGroup({\r\n fullName: new UntypedFormControl(order.shippingAddress?.fullName),\r\n company: new UntypedFormControl(order.shippingAddress?.company),\r\n streetLine1: new UntypedFormControl(order.shippingAddress?.streetLine1),\r\n streetLine2: new UntypedFormControl(order.shippingAddress?.streetLine2),\r\n city: new UntypedFormControl(order.shippingAddress?.city),\r\n province: new UntypedFormControl(order.shippingAddress?.province),\r\n postalCode: new UntypedFormControl(order.shippingAddress?.postalCode),\r\n countryCode: new UntypedFormControl(order.shippingAddress?.countryCode),\r\n phoneNumber: new UntypedFormControl(order.shippingAddress?.phoneNumber),\r\n });\r\n this.addAddressCustomFieldsFormGroup(this.shippingAddressForm, order.shippingAddress);\r\n }\r\n if (!this.billingAddressForm) {\r\n this.billingAddressForm = new UntypedFormGroup({\r\n fullName: new UntypedFormControl(order.billingAddress?.fullName),\r\n company: new UntypedFormControl(order.billingAddress?.company),\r\n streetLine1: new UntypedFormControl(order.billingAddress?.streetLine1),\r\n streetLine2: new UntypedFormControl(order.billingAddress?.streetLine2),\r\n city: new UntypedFormControl(order.billingAddress?.city),\r\n province: new UntypedFormControl(order.billingAddress?.province),\r\n postalCode: new UntypedFormControl(order.billingAddress?.postalCode),\r\n countryCode: new UntypedFormControl(order.billingAddress?.countryCode),\r\n phoneNumber: new UntypedFormControl(order.billingAddress?.phoneNumber),\r\n });\r\n this.addAddressCustomFieldsFormGroup(this.billingAddressForm, order.billingAddress);\r\n }\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 }\r\n\r\n ngOnDestroy(): void {\r\n this.destroy();\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 canPreviewChanges(): 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 );\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 updateLineQuantity(line: OrderDetailFragment['lines'][number], quantity: string) {\r\n const { adjustOrderLines } = this.modifyOrderInput;\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 updateAddedItemQuantity(item: AddedLine, quantity: string) {\r\n const row = this.modifyOrderInput.addItems?.find(l => l.productVariantId === item.productVariantId);\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.productVariantId;\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 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(index: number) {\r\n this.modifyOrderInput.addItems.splice(index, 1);\r\n if (-1 < index) {\r\n this.addItemCustomFieldsFormArray.removeAt(index);\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 const originalTotalWithTax = order.totalWithTax;\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 originalTotalWithTax,\r\n order: modifyOrder,\r\n orderLineCustomFields: this.orderLineCustomFields,\r\n modifyOrderInput: input,\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 '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.refund = {\r\n paymentId: result.refundPaymentId,\r\n reason: result.refundNote,\r\n };\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 = modifyOrder.totalWithTax - originalTotalWithTax;\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 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\"></vdr-action-bar-items>\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-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=\"order-list\"\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>\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 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(protected serverConfigService: ServerConfigService, private channelService: ChannelService) {\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","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, ActivationStart, Router, RouterStateSnapshot } from '@angular/router';\r\nimport { DataService, OrderDetailFragment } from '@vendure/admin-ui/core';\r\nimport { notNullOrUndefined } from '@vendure/common/lib/shared-utils';\r\nimport { EMPTY, Observable } from 'rxjs';\r\nimport { filter, map, shareReplay, switchMap, take, takeUntil } from 'rxjs/operators';\r\n\r\nimport { DraftOrderDetailComponent } from '../../components/draft-order-detail/draft-order-detail.component';\r\n\r\n/**\r\n * Resolves the id from the path into a Customer entity.\r\n */\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class OrderResolver {\r\n constructor(private router: Router, private dataService: DataService) {}\r\n\r\n /** @internal */\r\n resolve(\r\n route: ActivatedRouteSnapshot,\r\n state: RouterStateSnapshot,\r\n ): Observable<Observable<OrderDetailFragment>> {\r\n const id = route.paramMap.get('id');\r\n\r\n // Complete the entity stream upon navigating away\r\n const navigateAway$ = this.router.events.pipe(filter(event => event instanceof ActivationStart));\r\n\r\n const stream = this.dataService.order\r\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\r\n .getOrder(id!)\r\n .mapStream(data => data.order)\r\n .pipe(\r\n switchMap(order => {\r\n if (order?.state === 'Draft' && route.component !== DraftOrderDetailComponent) {\r\n // Make sure Draft orders only get displayed with the DraftOrderDetailComponent\r\n this.router.navigate(['/orders/draft', id]);\r\n return EMPTY;\r\n } else {\r\n return [order];\r\n }\r\n }),\r\n takeUntil(navigateAway$),\r\n filter(notNullOrUndefined),\r\n shareReplay(1),\r\n );\r\n\r\n return stream.pipe(\r\n take(1),\r\n map(() => stream),\r\n );\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { ActivatedRouteSnapshot, Router, RouterStateSnapshot, UrlTree } from '@angular/router';\r\nimport { DataService } from '@vendure/admin-ui/core';\r\nimport { EMPTY, Observable } from 'rxjs';\r\nimport { map, mergeMapTo, tap } from 'rxjs/operators';\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 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 true;\r\n }\r\n }\r\n}\r\n","import { Route } from '@angular/router';\r\nimport { marker as _ } from '@biesbjerg/ngx-translate-extract-marker';\r\nimport {\r\n BreadcrumbLabelLinkPair,\r\n CanDeactivateDetailGuard,\r\n detailBreadcrumb,\r\n OrderDetailFragment,\r\n PageComponent,\r\n PageService,\r\n} from '@vendure/admin-ui/core';\r\nimport { map } from 'rxjs/operators';\r\n\r\nimport { DraftOrderDetailComponent } from './components/draft-order-detail/draft-order-detail.component';\r\nimport { OrderDetailComponent } from './components/order-detail/order-detail.component';\r\nimport { OrderEditorComponent } from './components/order-editor/order-editor.component';\r\nimport { OrderListComponent } from './components/order-list/order-list.component';\r\nimport { OrderResolver } from './providers/routing/order-resolver';\r\nimport { OrderGuard } from './providers/routing/order.guard';\r\n\r\nexport const createRoutes = (pageService: PageService): Route[] => [\r\n {\r\n path: '',\r\n component: PageComponent,\r\n pathMatch: 'full',\r\n data: {\r\n locationId: 'order-list',\r\n breadcrumb: _('breadcrumb.orders'),\r\n },\r\n children: pageService.getPageTabRoutes('order-list'),\r\n },\r\n {\r\n path: 'draft/:id',\r\n component: PageComponent,\r\n canActivate: [OrderGuard],\r\n data: {\r\n locationId: 'draft-order-detail',\r\n breadcrumb: { label: _('breadcrumb.orders'), link: ['../'] },\r\n },\r\n children: pageService.getPageTabRoutes('draft-order-detail'),\r\n },\r\n {\r\n path: ':id',\r\n component: PageComponent,\r\n canActivate: [OrderGuard],\r\n data: {\r\n locationId: 'order-detail',\r\n breadcrumb: { label: _('breadcrumb.orders'), link: ['../'] },\r\n },\r\n children: pageService.getPageTabRoutes('order-detail'),\r\n },\r\n {\r\n path: ':aggregateOrderId/seller-orders/:id',\r\n component: PageComponent,\r\n canActivate: [OrderGuard],\r\n data: {\r\n locationId: 'order-detail',\r\n breadcrumb: { label: _('breadcrumb.orders'), link: ['../'] },\r\n },\r\n children: pageService.getPageTabRoutes('order-detail'),\r\n },\r\n {\r\n path: ':id/modify',\r\n component: OrderEditorComponent,\r\n resolve: {\r\n entity: OrderResolver,\r\n },\r\n data: {\r\n breadcrumb: modifyingOrderBreadcrumb,\r\n },\r\n },\r\n];\r\n\r\nexport function orderBreadcrumb(data: any, params: any) {\r\n return data.entity.pipe(\r\n map((entity: OrderDetailFragment) => {\r\n if (entity.aggregateOrder) {\r\n return [\r\n {\r\n label: 'breadcrumb.orders',\r\n link: ['../'],\r\n },\r\n {\r\n label: entity.aggregateOrder.code,\r\n link: ['../', entity.aggregateOrder.id],\r\n },\r\n {\r\n label: _('breadcrumb.seller-orders'),\r\n link: ['../', entity.aggregateOrder.id],\r\n },\r\n {\r\n label: entity.code,\r\n link: [entity.id],\r\n },\r\n ];\r\n } else {\r\n return [\r\n {\r\n label: 'breadcrumb.orders',\r\n link: ['../'],\r\n },\r\n {\r\n label: entity.code,\r\n link: [entity.id],\r\n },\r\n ];\r\n }\r\n }),\r\n );\r\n}\r\n\r\nexport function modifyingOrderBreadcrumb(data: any, params: any) {\r\n return orderBreadcrumb(data, params).pipe(\r\n map((breadcrumbs: BreadcrumbLabelLinkPair[]) => {\r\n const modifiedBreadcrumbs = breadcrumbs.slice();\r\n modifiedBreadcrumbs[1].link = ['../', breadcrumbs[1].link[0]];\r\n return modifiedBreadcrumbs.concat({ label: _('breadcrumb.modifying'), link: [''] });\r\n }) as any,\r\n );\r\n}\r\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 { 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\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 ],\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 OrderModule.hasRegisteredTabsAndBulkActions = true;\r\n }\r\n}\r\n"],"x_google_ignoreList":[15]}
|