@vendure/admin-ui 3.3.8-master-202507310242 → 3.3.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"vendure-admin-ui-order.mjs","sources":["../../src/lib/order/src/common/get-refundable-payments.ts","../../src/lib/order/src/components/add-manual-payment-dialog/add-manual-payment-dialog.component.ts","../../src/lib/order/src/components/add-manual-payment-dialog/add-manual-payment-dialog.component.html","../../src/lib/order/src/components/cancel-order-dialog/cancel-order-dialog.component.ts","../../src/lib/order/src/components/cancel-order-dialog/cancel-order-dialog.component.html","../../src/lib/order/src/components/coupon-code-selector/coupon-code-selector.component.ts","../../src/lib/order/src/components/coupon-code-selector/coupon-code-selector.component.html","../../src/lib/order/src/components/select-address-dialog/select-address-dialog.component.ts","../../src/lib/order/src/components/select-address-dialog/select-address-dialog.component.html","../../src/lib/order/src/components/select-customer-dialog/select-customer-dialog.component.ts","../../src/lib/order/src/components/select-customer-dialog/select-customer-dialog.component.html","../../src/lib/order/src/components/select-shipping-method-dialog/select-shipping-method-dialog.component.ts","../../src/lib/order/src/components/select-shipping-method-dialog/select-shipping-method-dialog.component.html","../../src/lib/order/src/components/order-state-select-dialog/order-state-select-dialog.component.ts","../../src/lib/order/src/components/order-state-select-dialog/order-state-select-dialog.component.html","../../src/lib/order/src/providers/order-transition.service.ts","../../src/lib/order/src/components/order-custom-fields-card/order-custom-fields-card.component.ts","../../src/lib/order/src/components/order-custom-fields-card/order-custom-fields-card.component.html","../../src/lib/order/src/components/line-fulfillment/line-fulfillment.component.ts","../../src/lib/order/src/components/line-fulfillment/line-fulfillment.component.html","../../src/lib/order/src/components/line-refunds/line-refunds.component.ts","../../src/lib/order/src/components/line-refunds/line-refunds.component.html","../../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.ts","../../src/lib/order/src/components/order-data-table/order-data-table.component.html","../../src/lib/order/src/components/order-table/order-table.component.ts","../../src/lib/order/src/components/order-table/order-table.component.html","../../src/lib/order/src/components/draft-order-variant-selector/draft-order-variant-selector.component.ts","../../src/lib/order/src/components/draft-order-variant-selector/draft-order-variant-selector.component.html","../../src/lib/order/src/components/draft-order-detail/draft-order-detail.component.ts","../../src/lib/order/src/components/draft-order-detail/draft-order-detail.component.html","../../src/lib/order/src/components/fulfill-order-dialog/fulfill-order-dialog.component.ts","../../src/lib/order/src/components/fulfill-order-dialog/fulfill-order-dialog.component.html","../../src/lib/order/src/components/simple-item-list/simple-item-list.component.ts","../../src/lib/order/src/components/simple-item-list/simple-item-list.component.html","../../src/lib/order/src/components/fulfillment-detail/fulfillment-detail.component.ts","../../src/lib/order/src/components/fulfillment-detail/fulfillment-detail.component.html","../../src/lib/order/src/components/fulfillment-state-label/fulfillment-state-label.component.ts","../../src/lib/order/src/components/fulfillment-state-label/fulfillment-state-label.component.html","../../src/lib/order/src/components/fulfillment-card/fulfillment-card.component.ts","../../src/lib/order/src/components/fulfillment-card/fulfillment-card.component.html","../../src/lib/order/src/components/modification-detail/modification-detail.component.ts","../../src/lib/order/src/components/modification-detail/modification-detail.component.html","../../src/lib/order/src/components/order-process-graph/constants.ts","../../src/lib/order/src/components/order-process-graph/order-process-node.component.ts","../../src/lib/order/src/components/order-process-graph/order-process-node.component.html","../../src/lib/order/src/components/order-process-graph/order-process-edge.component.ts","../../src/lib/order/src/components/order-process-graph/order-process-edge.component.html","../../src/lib/order/src/components/order-process-graph/order-process-graph.component.ts","../../src/lib/order/src/components/order-process-graph/order-process-graph.component.html","../../src/lib/order/src/components/order-process-graph-dialog/order-process-graph-dialog.component.ts","../../src/lib/order/src/components/order-process-graph-dialog/order-process-graph-dialog.component.html","../../src/lib/order/src/components/payment-for-refund-selector/payment-for-refund-selector.component.ts","../../src/lib/order/src/components/payment-for-refund-selector/payment-for-refund-selector.component.html","../../src/lib/order/src/components/refund-order-dialog/refund-order-dialog.component.ts","../../src/lib/order/src/components/refund-order-dialog/refund-order-dialog.component.html","../../src/lib/order/src/components/settle-refund-dialog/settle-refund-dialog.component.ts","../../src/lib/order/src/components/settle-refund-dialog/settle-refund-dialog.component.html","../../src/lib/order/src/components/payment-state-label/payment-state-label.component.ts","../../src/lib/order/src/components/payment-state-label/payment-state-label.component.html","../../src/lib/order/src/components/refund-state-label/refund-state-label.component.ts","../../src/lib/order/src/components/refund-state-label/refund-state-label.component.html","../../src/lib/order/src/components/payment-detail/payment-detail.component.ts","../../src/lib/order/src/components/payment-detail/payment-detail.component.html","../../src/lib/order/src/components/order-payment-card/order-payment-card.component.ts","../../src/lib/order/src/components/order-payment-card/order-payment-card.component.html","../../src/lib/order/src/components/order-history/order-history-entry-host.component.ts","../../src/lib/order/src/components/order-history/order-history.component.ts","../../src/lib/order/src/components/order-history/order-history.component.html","../../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.ts","../../src/lib/order/src/components/seller-orders-card/seller-orders-card.component.html","../../src/lib/order/src/components/order-detail/order-detail.component.ts","../../src/lib/order/src/components/order-detail/order-detail.component.html","../../src/lib/order/src/components/order-modification-summary/order-modification-summary.component.ts","../../src/lib/order/src/components/order-modification-summary/order-modification-summary.component.html","../../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.ts","../../src/lib/order/src/components/order-editor/order-editor.component.html","../../src/lib/order/src/components/order-list/order-list.component.ts","../../src/lib/order/src/components/order-list/order-list.component.html","../../src/lib/order/src/components/refund-detail/refund-detail.component.ts","../../src/lib/order/src/components/refund-detail/refund-detail.component.html","../../src/lib/order/src/components/select-address-dialog/select-address-dialog.graphql.ts","../../src/lib/order/src/providers/routing/order.guard.ts","../../src/lib/order/src/order.routes.ts","../../src/lib/order/src/order.module.ts","../../src/lib/order/src/public_api.ts","../../src/lib/order/src/vendure-admin-ui-order.ts"],"sourcesContent":["import { FormControl, Validators } from '@angular/forms';\nimport { OrderDetailFragment } from '@vendure/admin-ui/core';\nimport { summate } from '@vendure/common/lib/shared-utils';\n\nexport type Payment = NonNullable<OrderDetailFragment['payments']>[number];\nexport type RefundablePayment = Payment & {\n refundableAmount: number;\n amountToRefundControl: FormControl<number>;\n selected: boolean;\n};\n\nexport function getRefundablePayments(payments: OrderDetailFragment['payments']): RefundablePayment[] {\n const settledPayments = (payments || []).filter(p => p.state === 'Settled');\n return settledPayments.map((payment, index) => {\n const refundableAmount =\n payment.amount -\n summate(\n payment.refunds.filter(r => r.state !== 'Failed'),\n 'total',\n );\n return {\n ...payment,\n refundableAmount,\n amountToRefundControl: new FormControl(0, {\n nonNullable: true,\n validators: [Validators.min(0), Validators.max(refundableAmount)],\n }),\n selected: index === 0,\n };\n });\n}\n","import { ChangeDetectionStrategy, Component, OnInit } from '@angular/core';\nimport { UntypedFormControl, UntypedFormGroup, Validators } from '@angular/forms';\nimport {\n CurrencyCode,\n DataService,\n Dialog,\n GetAddManualPaymentMethodListDocument,\n GetAddManualPaymentMethodListQuery,\n GetPaymentMethodListQuery,\n ItemOf,\n ManualPaymentInput,\n PAYMENT_METHOD_FRAGMENT,\n} from '@vendure/admin-ui/core';\nimport { gql } from 'apollo-angular';\nimport { Observable } from 'rxjs';\n\nconst GET_PAYMENT_METHODS_FOR_MANUAL_ADD = gql`\n query GetAddManualPaymentMethodList($options: PaymentMethodListOptions!) {\n paymentMethods(options: $options) {\n items {\n id\n createdAt\n updatedAt\n name\n code\n description\n enabled\n }\n totalItems\n }\n }\n`;\n\n@Component({\n selector: 'vdr-add-manual-payment-dialog',\n templateUrl: './add-manual-payment-dialog.component.html',\n styleUrls: ['./add-manual-payment-dialog.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: false,\n})\nexport class AddManualPaymentDialogComponent implements OnInit, Dialog<Omit<ManualPaymentInput, 'orderId'>> {\n // populated by ModalService call\n outstandingAmount: number;\n currencyCode: CurrencyCode;\n\n resolveWith: (result?: Omit<ManualPaymentInput, 'orderId'>) => void;\n form = new UntypedFormGroup({\n method: new UntypedFormControl('', Validators.required),\n transactionId: new UntypedFormControl('', Validators.required),\n });\n paymentMethods$: Observable<Array<ItemOf<GetAddManualPaymentMethodListQuery, 'paymentMethods'>>>;\n constructor(private dataService: DataService) {}\n\n ngOnInit(): void {\n this.paymentMethods$ = this.dataService\n .query(GetAddManualPaymentMethodListDocument, {\n options: {\n take: 999,\n },\n })\n .mapSingle(data => data.paymentMethods.items);\n }\n\n submit() {\n const formValue = this.form.value;\n this.resolveWith({\n method: formValue.method,\n transactionId: formValue.transactionId,\n });\n }\n\n cancel() {\n this.resolveWith();\n }\n}\n","<ng-template vdrDialogTitle>{{ 'order.add-payment-to-order' | translate }}</ng-template>\n<form [formGroup]=\"form\">\n <vdr-form-field [label]=\"'order.payment-method' | translate\" for=\"method\">\n <ng-select\n [items]=\"paymentMethods$ | async\"\n bindLabel=\"code\"\n appendTo=\"body\"\n autofocus\n bindValue=\"code\"\n [addTag]=\"true\"\n formControlName=\"method\"\n ></ng-select>\n </vdr-form-field>\n <vdr-form-field [label]=\"'order.transaction-id' | translate\" for=\"transactionId\">\n <input id=\"transactionId\" type=\"text\" formControlName=\"transactionId\" />\n </vdr-form-field>\n</form>\n<ng-template vdrDialogButtons>\n <button type=\"button\" class=\"btn\" (click)=\"cancel()\">{{ 'common.cancel' | translate }}</button>\n <button type=\"submit\" (click)=\"submit()\" class=\"btn btn-primary\" [disabled]=\"form.invalid || form.pristine\">\n {{ 'order.add-payment' | translate }} ({{ outstandingAmount | localeCurrency: currencyCode }})\n </button>\n</ng-template>\n","import { ChangeDetectionStrategy, Component, OnInit } from '@angular/core';\nimport { marker as _ } from '@biesbjerg/ngx-translate-extract-marker';\nimport {\n CancelOrderInput,\n Dialog,\n getAppConfig,\n I18nService,\n OrderDetailFragment,\n OrderLineInput,\n} from '@vendure/admin-ui/core';\n\n@Component({\n selector: 'vdr-cancel-order-dialog',\n templateUrl: './cancel-order-dialog.component.html',\n styleUrls: ['./cancel-order-dialog.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: false,\n})\nexport class CancelOrderDialogComponent implements OnInit, Dialog<CancelOrderInput> {\n order: OrderDetailFragment;\n cancelAll = true;\n resolveWith: (result?: CancelOrderInput) => void;\n reason: string;\n lineQuantities: { [lineId: string]: number } = {};\n reasons: string[] = getAppConfig().cancellationReasons ?? [\n _('order.cancel-reason-customer-request'),\n _('order.cancel-reason-not-available'),\n ];\n\n get selectionCount(): number {\n return Object.values(this.lineQuantities).reduce((sum, n) => sum + n, 0);\n }\n\n constructor(private i18nService: I18nService) {\n this.reasons = this.reasons.map(r => this.i18nService.translate(r));\n }\n\n ngOnInit() {\n this.lineQuantities = this.order.lines.reduce(\n (result, line) => ({ ...result, [line.id]: line.quantity }),\n {},\n );\n }\n\n radioChanged() {\n if (this.cancelAll) {\n for (const line of this.order.lines) {\n this.lineQuantities[line.id] = line.quantity;\n }\n } else {\n for (const line of this.order.lines) {\n this.lineQuantities[line.id] = 0;\n }\n }\n }\n\n checkIfAllSelected() {\n for (const [lineId, quantity] of Object.entries(this.lineQuantities)) {\n const quantityInOrder = this.order.lines.find(line => line.id === lineId)?.quantity;\n if (quantityInOrder && quantity < quantityInOrder) {\n return;\n }\n }\n // If we got here, all of the selected quantities are equal to the order\n // line quantities, i.e. everything is selected.\n this.cancelAll = true;\n }\n\n select() {\n this.resolveWith({\n orderId: this.order.id,\n lines: this.getLineInputs(),\n reason: this.reason,\n cancelShipping: this.cancelAll,\n });\n }\n\n cancel() {\n this.resolveWith();\n }\n\n private getLineInputs(): OrderLineInput[] | undefined {\n if (this.order.active) {\n return;\n }\n return Object.entries(this.lineQuantities)\n .map(([orderLineId, quantity]) => ({\n orderLineId,\n quantity,\n }))\n .filter(l => 0 < l.quantity);\n }\n}\n","<ng-template vdrDialogTitle>{{ 'order.cancel-order' | translate }}</ng-template>\n\n<div class=\"fulfillment-wrapper\">\n <div class=\"order-lines\">\n <table class=\"table\">\n <thead>\n <tr>\n <th></th>\n <th>{{ 'order.product-name' | translate }}</th>\n <th>{{ 'order.product-sku' | translate }}</th>\n <th>{{ 'order.quantity' | translate }}</th>\n <th>{{ 'order.unit-price' | translate }}</th>\n <th>{{ 'order.cancel' | translate }}</th>\n </tr>\n </thead>\n <tr\n *ngFor=\"let line of order.lines\"\n class=\"order-line\"\n [class.is-disabled]=\"cancelAll\"\n [class.is-cancelled]=\"line.quantity === 0\"\n >\n <td class=\"align-middle thumb\">\n <img [src]=\"line.featuredAsset | assetPreview: 'tiny'\" />\n </td>\n <td class=\"align-middle name\">{{ line.productVariant.name }}</td>\n <td class=\"align-middle sku\">{{ line.productVariant.sku }}</td>\n <td class=\"align-middle quantity\">{{ line.quantity }}</td>\n <td class=\"align-middle quantity\">\n {{ line.unitPriceWithTax | localeCurrency: order.currencyCode }}\n </td>\n <td class=\"align-middle fulfil\">\n <input\n *ngIf=\"line.quantity > 0 && !order.active; else nonEditable\"\n [(ngModel)]=\"lineQuantities[line.id]\"\n (input)=\"checkIfAllSelected()\"\n [disabled]=\"cancelAll\"\n type=\"number\"\n [max]=\"line.quantity\"\n min=\"0\"\n />\n <ng-template #nonEditable>{{ line.quantity }}</ng-template>\n </td>\n </tr>\n </table>\n </div>\n <div class=\"cancellation-details\">\n <ng-container *ngIf=\"order.active !== true\">\n <clr-radio-wrapper>\n <input\n type=\"radio\"\n clrRadio\n [value]=\"true\"\n [(ngModel)]=\"cancelAll\"\n name=\"options\"\n (ngModelChange)=\"radioChanged()\"\n />\n <label>{{ 'order.cancel-entire-order' | translate }}</label>\n </clr-radio-wrapper>\n <clr-radio-wrapper>\n <input\n type=\"radio\"\n clrRadio\n [value]=\"false\"\n [(ngModel)]=\"cancelAll\"\n name=\"options\"\n (ngModelChange)=\"radioChanged()\"\n />\n <label>{{ 'order.cancel-specified-items' | translate }}</label>\n </clr-radio-wrapper>\n </ng-container>\n <label class=\"clr-control-label\">{{ 'order.cancellation-reason' | translate }}</label>\n <ng-select\n [items]=\"reasons\"\n bindLabel=\"name\"\n autofocus\n bindValue=\"id\"\n [addTag]=\"true\"\n [(ngModel)]=\"reason\"\n ></ng-select>\n </div>\n</div>\n\n<ng-template vdrDialogButtons>\n <button type=\"button\" class=\"btn\" (click)=\"cancel()\">{{ 'common.cancel' | translate }}</button>\n <button\n type=\"submit\"\n (click)=\"select()\"\n [disabled]=\"!reason || (!order.active && selectionCount === 0)\"\n class=\"btn btn-primary\"\n >\n <ng-container *ngIf=\"!order.active\">\n {{ 'order.cancel-selected-items' | translate }}\n </ng-container>\n <ng-container *ngIf=\"order.active\">\n {{ 'order.cancel-order' | translate }}\n </ng-container>\n </button>\n</ng-template>\n","import { ChangeDetectionStrategy, Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { UntypedFormControl } from '@angular/forms';\nimport {\n DataService,\n GetCouponCodeSelectorPromotionListDocument,\n PROMOTION_FRAGMENT,\n} from '@vendure/admin-ui/core';\nimport { gql } from 'apollo-angular';\nimport { concat, Observable, Subject } from 'rxjs';\nimport { debounceTime, distinctUntilChanged, map, skip, startWith, switchMap } from 'rxjs/operators';\n\nexport const GET_COUPON_CODE_SELECTOR_PROMOTION_LIST = gql`\n query GetCouponCodeSelectorPromotionList($options: PromotionListOptions) {\n promotions(options: $options) {\n items {\n id\n name\n couponCode\n }\n totalItems\n }\n }\n`;\n\n@Component({\n selector: 'vdr-coupon-code-selector',\n templateUrl: './coupon-code-selector.component.html',\n styleUrls: ['./coupon-code-selector.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: false,\n})\nexport class CouponCodeSelectorComponent implements OnInit {\n @Input() couponCodes: string[];\n @Input() control: UntypedFormControl | undefined;\n @Output() addCouponCode = new EventEmitter<string>();\n @Output() removeCouponCode = new EventEmitter<string>();\n availableCouponCodes$: Observable<Array<{ code: string; promotionName: string }>>;\n couponCodeInput$ = new Subject<string>();\n constructor(private dataService: DataService) {}\n\n ngOnInit(): void {\n this.availableCouponCodes$ = concat(\n this.couponCodeInput$.pipe(\n debounceTime(200),\n distinctUntilChanged(),\n switchMap(\n term =>\n this.dataService.query(GetCouponCodeSelectorPromotionListDocument, {\n options: {\n take: 10,\n skip: 0,\n filter: {\n couponCode: { contains: term },\n },\n },\n }).single$,\n ),\n map(({ promotions }) =>\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n promotions.items.map(p => ({ code: p.couponCode!, promotionName: p.name })),\n ),\n startWith([]),\n ),\n );\n if (!this.control) {\n this.control = new UntypedFormControl(this.couponCodes ?? []);\n }\n }\n\n remove(code: string) {\n this.removeCouponCode.emit(code);\n }\n}\n","<ng-select\n [items]=\"availableCouponCodes$ | async\"\n appendTo=\"body\"\n bindLabel=\"code\"\n bindValue=\"code\"\n [addTag]=\"false\"\n [multiple]=\"true\"\n [hideSelected]=\"true\"\n [minTermLength]=\"2\"\n typeToSearchText=\"\"\n [typeahead]=\"couponCodeInput$\"\n [formControl]=\"control\"\n (add)=\"addCouponCode.emit($event.code)\"\n (remove)=\"remove($event.code)\"\n>\n <ng-template ng-option-tmp let-item=\"item\">\n <div class=\"flex items-center\">\n <vdr-chip class=\"mr-1\">{{ item.code }}</vdr-chip>\n <span>{{ item.promotionName }}</span>\n </div>\n </ng-template>\n</ng-select>\n","import { ChangeDetectionStrategy, Component, OnInit } from '@angular/core';\nimport { UntypedFormBuilder, UntypedFormGroup, Validators } from '@angular/forms';\nimport {\n AddressFragment,\n CreateAddressInput,\n DataService,\n Dialog,\n GetAvailableCountriesQuery,\n GetCustomerAddressesDocument,\n OrderAddressFragment,\n} from '@vendure/admin-ui/core';\nimport { pick } from '@vendure/common/lib/pick';\nimport { Observable, of } from 'rxjs';\nimport { tap } from 'rxjs/operators';\n\nimport { Customer } from '../select-customer-dialog/select-customer-dialog.component';\n\n@Component({\n selector: 'vdr-select-address-dialog',\n templateUrl: './select-address-dialog.component.html',\n styleUrls: ['./select-address-dialog.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: false\n})\nexport class SelectAddressDialogComponent implements OnInit, Dialog<CreateAddressInput> {\n resolveWith: (result?: CreateAddressInput) => void;\n availableCountries$: Observable<GetAvailableCountriesQuery['countries']['items']>;\n addresses$: Observable<AddressFragment[]>;\n customerId: string | undefined;\n currentAddress: OrderAddressFragment | undefined;\n addressForm: UntypedFormGroup;\n selectedAddress: AddressFragment | undefined;\n useExisting = true;\n createNew = false;\n\n constructor(private dataService: DataService, private formBuilder: UntypedFormBuilder) {}\n\n ngOnInit(): void {\n this.addressForm = this.formBuilder.group({\n fullName: [this.currentAddress?.fullName ?? ''],\n company: [this.currentAddress?.company ?? ''],\n streetLine1: [this.currentAddress?.streetLine1 ?? '', Validators.required],\n streetLine2: [this.currentAddress?.streetLine2 ?? ''],\n city: [this.currentAddress?.city ?? '', Validators.required],\n province: [this.currentAddress?.province ?? ''],\n postalCode: [this.currentAddress?.postalCode ?? '', Validators.required],\n countryCode: [this.currentAddress?.countryCode ?? '', Validators.required],\n phoneNumber: [this.currentAddress?.phoneNumber ?? ''],\n });\n this.useExisting = !!this.customerId;\n this.addresses$ = this.customerId\n ? this.dataService\n .query(GetCustomerAddressesDocument, { customerId: this.customerId })\n .mapSingle(({ customer }) => customer?.addresses ?? [])\n .pipe(\n tap(addresses => {\n if (this.currentAddress) {\n this.selectedAddress = addresses.find(\n a =>\n a.streetLine1 === this.currentAddress?.streetLine1 &&\n a.postalCode === this.currentAddress?.postalCode,\n );\n }\n if (addresses.length === 0) {\n this.createNew = true;\n this.useExisting = false;\n }\n }),\n )\n : of([]);\n this.availableCountries$ = this.dataService.settings\n .getAvailableCountries()\n .mapSingle(({ countries }) => countries.items);\n }\n\n trackByFn(item: Customer) {\n return item.id;\n }\n\n addressIdFn(item: AddressFragment) {\n return item.streetLine1 + item.postalCode;\n }\n\n cancel() {\n this.resolveWith();\n }\n\n select() {\n if (this.useExisting && this.selectedAddress) {\n this.resolveWith({\n ...pick(this.selectedAddress, [\n 'fullName',\n 'company',\n 'streetLine1',\n 'streetLine2',\n 'city',\n 'province',\n 'phoneNumber',\n 'postalCode',\n ]),\n countryCode: this.selectedAddress.country.code,\n });\n }\n if (this.createNew && this.addressForm.valid) {\n const formValue = this.addressForm.value;\n this.resolveWith(formValue);\n }\n }\n}\n","<ng-template vdrDialogTitle>{{ 'order.select-address' | translate }}</ng-template>\n\n<clr-tabs *ngIf=\"addresses$ | async as addresses\">\n <clr-tab *ngIf=\"customerId && addresses.length\">\n <button clrTabLink>{{ 'order.existing-address' | translate }}</button>\n <ng-template [(clrIfActive)]=\"useExisting\">\n <clr-tab-content>\n <vdr-radio-card-fieldset\n class=\"block mt-4\"\n [idFn]=\"addressIdFn\"\n [selectedItemId]=\"selectedAddress && addressIdFn(selectedAddress)\"\n (selectItem)=\"selectedAddress = $event\"\n >\n <vdr-radio-card *ngFor=\"let address of addresses\" [item]=\"address\">\n <vdr-formatted-address [address]=\"address\"></vdr-formatted-address>\n </vdr-radio-card>\n </vdr-radio-card-fieldset>\n </clr-tab-content>\n </ng-template>\n </clr-tab>\n <clr-tab>\n <button clrTabLink>{{ 'customer.create-new-address' | translate }}</button>\n\n <ng-template [(clrIfActive)]=\"createNew\">\n <clr-tab-content>\n <vdr-address-form\n [formGroup]=\"addressForm\"\n [availableCountries]=\"availableCountries$ | async\"\n ></vdr-address-form>\n </clr-tab-content>\n </ng-template>\n </clr-tab>\n</clr-tabs>\n\n<ng-template vdrDialogButtons>\n <button type=\"button\" class=\"btn\" (click)=\"cancel()\">{{ 'common.cancel' | translate }}</button>\n <button\n type=\"submit\"\n (click)=\"select()\"\n [disabled]=\"(useExisting && !selectedAddress) || (createNew && addressForm.invalid)\"\n class=\"btn btn-primary\"\n >\n {{ 'common.okay' | translate }}\n </button>\n</ng-template>\n","import { ChangeDetectionStrategy, Component, OnInit } from '@angular/core';\nimport { UntypedFormBuilder, UntypedFormGroup, Validators } from '@angular/forms';\nimport { CreateCustomerInput, DataService, Dialog, GetCustomerListQuery } from '@vendure/admin-ui/core';\nimport { concat, Observable, of, Subject } from 'rxjs';\nimport { catchError, debounceTime, distinctUntilChanged, switchMap, tap } from 'rxjs/operators';\nimport { marker as _ } from '@biesbjerg/ngx-translate-extract-marker';\n\nexport type Customer = GetCustomerListQuery['customers']['items'][number];\nexport type SelectCustomerDialogResult = (Customer | CreateCustomerInput) & { note: string };\n\n@Component({\n selector: 'vdr-select-customer-dialog',\n templateUrl: './select-customer-dialog.component.html',\n styleUrls: ['./select-customer-dialog.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: false\n})\nexport class SelectCustomerDialogComponent implements OnInit, Dialog<SelectCustomerDialogResult> {\n resolveWith: (result?: SelectCustomerDialogResult) => void;\n\n // populated by the dialog service\n canCreateNew = true;\n includeNoteInput = false;\n title: string = _('order.set-customer-for-order');\n\n customerForm: UntypedFormGroup;\n customers$: Observable<Customer[]>;\n isLoading = false;\n input$ = new Subject<string>();\n selectedCustomer: Customer[] = [];\n useExisting = true;\n createNew = false;\n note = '';\n\n constructor(private dataService: DataService, private formBuilder: UntypedFormBuilder) {\n this.customerForm = this.formBuilder.group({\n title: '',\n firstName: ['', Validators.required],\n lastName: ['', Validators.required],\n phoneNumber: '',\n emailAddress: ['', [Validators.required, Validators.email]],\n });\n }\n\n ngOnInit(): void {\n this.customers$ = concat(\n of([]), // default items\n this.input$.pipe(\n debounceTime(200),\n distinctUntilChanged(),\n tap(() => (this.isLoading = true)),\n switchMap(term =>\n this.dataService.customer\n .getCustomerList(10, 0, term)\n .mapStream(({ customers }) => customers.items)\n .pipe(\n catchError(() => of([])), // empty list on error\n tap(() => (this.isLoading = false)),\n ),\n ),\n ),\n );\n }\n\n trackByFn(item: Customer) {\n return item.id;\n }\n\n cancel() {\n this.resolveWith();\n }\n\n select() {\n if (this.useExisting && this.selectedCustomer.length === 1) {\n this.resolveWith({ ...this.selectedCustomer[0], note: this.note });\n } else if (this.createNew && this.customerForm.valid) {\n const formValue = this.customerForm.value;\n this.resolveWith({ ...formValue, note: this.note });\n }\n }\n}\n","<ng-template vdrDialogTitle>{{ title | translate }}</ng-template>\n\n<ng-container *ngIf=\"!canCreateNew\">\n <ng-container *ngTemplateOutlet=\"customerSelect\"></ng-container>\n <vdr-form-field [label]=\"'common.add-note' | translate\" *ngIf=\"includeNoteInput\" class=\"mt-4\">\n <textarea [(ngModel)]=\"note\"></textarea>\n </vdr-form-field>\n</ng-container>\n\n<clr-tabs *ngIf=\"canCreateNew\" class=\"pt-1\">\n <clr-tab>\n <button clrTabLink>{{ 'order.existing-customer' | translate }}</button>\n\n <ng-template [(clrIfActive)]=\"useExisting\">\n <clr-tab-content>\n <div class=\"mt-4\">\n <ng-container *ngTemplateOutlet=\"customerSelect\"></ng-container>\n </div>\n </clr-tab-content>\n </ng-template>\n </clr-tab>\n <clr-tab *ngIf=\"canCreateNew\">\n <button clrTabLink>{{ 'customer.create-new-customer' | translate }}</button>\n\n <ng-template [(clrIfActive)]=\"createNew\">\n <clr-tab-content>\n <form [formGroup]=\"customerForm\">\n <vdr-form-field [label]=\"'customer.title' | translate\" for=\"title\">\n <input id=\"title\" type=\"text\" formControlName=\"title\" />\n </vdr-form-field>\n <vdr-form-field [label]=\"'customer.first-name' | translate\" for=\"firstName\">\n <input id=\"firstName\" type=\"text\" formControlName=\"firstName\" />\n </vdr-form-field>\n <vdr-form-field [label]=\"'customer.last-name' | translate\" for=\"lastName\">\n <input id=\"lastName\" type=\"text\" formControlName=\"lastName\" />\n </vdr-form-field>\n <vdr-form-field [label]=\"'customer.email-address' | translate\" for=\"emailAddress\">\n <input id=\"emailAddress\" type=\"text\" formControlName=\"emailAddress\" />\n </vdr-form-field>\n <vdr-form-field [label]=\"'customer.phone-number' | translate\" for=\"phoneNumber\">\n <input id=\"phoneNumber\" type=\"text\" formControlName=\"phoneNumber\" />\n </vdr-form-field>\n </form>\n </clr-tab-content>\n </ng-template>\n </clr-tab>\n</clr-tabs>\n\n<ng-template #customerSelect>\n <ng-select\n [items]=\"customers$ | async\"\n appendTo=\"body\"\n bindLabel=\"name\"\n [addTag]=\"false\"\n [multiple]=\"true\"\n [hideSelected]=\"true\"\n [trackByFn]=\"trackByFn\"\n [minTermLength]=\"2\"\n [loading]=\"isLoading\"\n [typeahead]=\"input$\"\n [(ngModel)]=\"selectedCustomer\"\n >\n <ng-template ng-label-tmp let-item=\"item\" let-clear=\"clear\">\n <span class=\"item-row\">\n <clr-icon shape=\"user\" class=\"is-solid\"></clr-icon\n ><span class=\"mx-1\">{{ item.firstName }} {{ item.lastName }}</span>\n <vdr-chip>{{ item.emailAddress }}</vdr-chip>\n </span>\n </ng-template>\n <ng-template ng-option-tmp let-item=\"item\">\n <span class=\"item-row\">\n <clr-icon shape=\"user\" class=\"is-solid\"></clr-icon\n ><span class=\"mx-1\">{{ item.firstName }} {{ item.lastName }}</span>\n <vdr-chip>{{ item.emailAddress }}</vdr-chip>\n </span>\n </ng-template>\n </ng-select>\n</ng-template>\n\n<ng-template vdrDialogButtons>\n <button type=\"button\" class=\"btn\" (click)=\"cancel()\">{{ 'common.cancel' | translate }}</button>\n <button\n type=\"submit\"\n (click)=\"select()\"\n [disabled]=\"(useExisting && selectedCustomer.length === 0) || (createNew && customerForm.invalid)\"\n class=\"btn btn-primary\"\n >\n {{ 'common.okay' | translate }}\n </button>\n</ng-template>\n","import { Component, OnInit, ChangeDetectionStrategy } from '@angular/core';\nimport {\n CreateAddressInput,\n CurrencyCode,\n Dialog,\n DraftOrderEligibleShippingMethodsQuery,\n} from '@vendure/admin-ui/core';\n\ntype ShippingMethodQuote =\n DraftOrderEligibleShippingMethodsQuery['eligibleShippingMethodsForDraftOrder'][number];\n\n@Component({\n selector: 'vdr-select-shipping-method-dialog',\n templateUrl: './select-shipping-method-dialog.component.html',\n styleUrls: ['./select-shipping-method-dialog.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: false\n})\nexport class SelectShippingMethodDialogComponent implements OnInit, Dialog<string> {\n resolveWith: (result?: string) => void;\n eligibleShippingMethods: ShippingMethodQuote[];\n currentSelectionId: string;\n currencyCode: CurrencyCode;\n selectedMethod: ShippingMethodQuote | undefined;\n\n ngOnInit(): void {\n if (this.currentSelectionId) {\n this.selectedMethod = this.eligibleShippingMethods.find(m => m.id === this.currentSelectionId);\n }\n }\n\n methodIdFn(item: ShippingMethodQuote) {\n return item.id;\n }\n\n cancel() {\n this.resolveWith();\n }\n\n select() {\n if (this.selectedMethod) {\n this.resolveWith(this.selectedMethod.id);\n }\n }\n}\n","<ng-template vdrDialogTitle>{{ 'order.select-shipping-method' | translate }}</ng-template>\n<vdr-radio-card-fieldset\n [idFn]=\"methodIdFn\"\n [selectedItemId]=\"selectedMethod?.id\"\n (selectItem)=\"selectedMethod = $event\"\n>\n <vdr-radio-card *ngFor=\"let quote of eligibleShippingMethods\" [item]=\"quote\">\n <div class=\"result-details\">\n <vdr-labeled-data [label]=\"'settings.shipping-method' | translate\">\n {{ quote.name }}\n </vdr-labeled-data>\n <div class=\"price-row\">\n <vdr-labeled-data [label]=\"'common.price' | translate\">\n {{ quote.price | localeCurrency: currencyCode }}\n </vdr-labeled-data>\n <vdr-labeled-data [label]=\"'common.price-with-tax' | translate\">\n {{ quote.priceWithTax | localeCurrency: currencyCode }}\n </vdr-labeled-data>\n </div>\n <vdr-object-tree *ngIf=\"quote.metadata\" [value]=\"quote.metadata\"></vdr-object-tree>\n </div>\n </vdr-radio-card>\n</vdr-radio-card-fieldset>\n\n<ng-template vdrDialogButtons>\n <button type=\"button\" class=\"btn\" (click)=\"cancel()\">{{ 'common.cancel' | translate }}</button>\n <button\n type=\"submit\"\n (click)=\"select()\"\n [disabled]=\"!selectedMethod\"\n class=\"btn btn-primary\"\n >\n {{ 'common.okay' | translate }}\n </button>\n</ng-template>\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 standalone: false,\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","<ng-template vdrDialogTitle>{{ 'order.select-state' | translate }}</ng-template>\n<p>{{ message | translate }}</p>\n<vdr-form-field>\n <select name=\"state\" [(ngModel)]=\"selectedState\">\n <option *ngFor=\"let state of nextStates\" [value]=\"state\">\n {{ state | stateI18nToken | translate }}\n </option>\n </select>\n</vdr-form-field>\n<ng-template vdrDialogButtons>\n <button type=\"submit\" *ngIf=\"cancellable\" (click)=\"cancel()\" class=\"btn btn-secondary\">\n {{ 'common.cancel' | translate }}\n </button>\n <button type=\"submit\" (click)=\"select()\" class=\"btn btn-primary\" [disabled]=\"!selectedState\">\n {{ 'order.transition-to-state' | translate: { state: (selectedState | stateI18nToken | translate) } }}\n </button>\n</ng-template>\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 { ChangeDetectionStrategy, Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { UntypedFormBuilder, UntypedFormGroup } from '@angular/forms';\nimport { marker as _ } from '@biesbjerg/ngx-translate-extract-marker';\nimport { CustomFieldConfig, ModalService } from '@vendure/admin-ui/core';\n\n@Component({\n selector: 'vdr-order-custom-fields-card',\n templateUrl: './order-custom-fields-card.component.html',\n styleUrls: ['./order-custom-fields-card.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: false,\n})\nexport class OrderCustomFieldsCardComponent implements OnInit {\n @Input() customFieldsConfig: CustomFieldConfig[] = [];\n @Input() customFieldValues: { [name: string]: any } = {};\n @Output() updateClick = new EventEmitter<any>();\n customFieldForm: UntypedFormGroup;\n editable = false;\n constructor(\n private formBuilder: UntypedFormBuilder,\n private modalService: ModalService,\n ) {}\n\n ngOnInit() {\n this.customFieldForm = this.formBuilder.group({});\n for (const field of this.customFieldsConfig) {\n this.customFieldForm.addControl(\n field.name,\n this.formBuilder.control(this.customFieldValues[field.name]),\n );\n }\n }\n\n onUpdateClick() {\n this.updateClick.emit(this.customFieldForm.value);\n this.customFieldForm.markAsPristine();\n this.editable = false;\n }\n\n onCancelClick() {\n if (this.customFieldForm.dirty) {\n this.modalService\n .dialog({\n title: _('catalog.confirm-cancel'),\n buttons: [\n { type: 'secondary', label: _('common.keep-editing') },\n { type: 'danger', label: _('common.discard-changes'), returnValue: true },\n ],\n })\n .subscribe(result => {\n if (result) {\n this.customFieldForm.reset();\n this.customFieldForm.markAsPristine();\n this.editable = false;\n }\n });\n } else {\n this.editable = false;\n }\n }\n}\n","<div class=\"card\" *ngIf=\"customFieldsConfig.length\">\n <div class=\"card-header\">\n {{ 'common.custom-fields' | translate }}\n </div>\n <div class=\"card-block\">\n <div class=\"card-text custom-field-form\" [class.editable]=\"editable\">\n <vdr-tabbed-custom-fields\n entityName=\"Order\"\n [customFields]=\"customFieldsConfig\"\n [customFieldsFormGroup]=\"customFieldForm\"\n [readonly]=\"!editable\"\n [compact]=\"true\"\n ></vdr-tabbed-custom-fields>\n </div>\n </div>\n <div class=\"card-footer\">\n <button class=\"btn btn-sm btn-secondary\" (click)=\"editable = true\" *ngIf=\"!editable\">\n <clr-icon shape=\"pencil\"></clr-icon>\n {{ 'common.edit' | translate }}\n </button>\n <button\n class=\"btn btn-sm btn-primary\"\n (click)=\"onUpdateClick()\"\n *ngIf=\"editable\"\n [disabled]=\"customFieldForm.pristine || customFieldForm.invalid\"\n >\n <clr-icon shape=\"check\"></clr-icon>\n {{ 'common.update' | translate }}\n </button>\n <button\n class=\"btn btn-sm btn-secondary\"\n (click)=\"onCancelClick()\"\n *ngIf=\"editable\"\n >\n <clr-icon shape=\"times\"></clr-icon>\n {{ 'common.cancel' | translate }}\n </button>\n </div>\n</div>\n","import { ChangeDetectionStrategy, Component, Input, OnChanges, SimpleChanges } from '@angular/core';\nimport { OrderDetailFragment } from '@vendure/admin-ui/core';\nimport { notNullOrUndefined } from '@vendure/common/lib/shared-utils';\nimport { unique } from '@vendure/common/lib/unique';\n\nexport type FulfillmentStatus = 'full' | 'partial' | 'none';\ntype Fulfillment = NonNullable<OrderDetailFragment['fulfillments']>[number];\n\n@Component({\n selector: 'vdr-line-fulfillment',\n templateUrl: './line-fulfillment.component.html',\n styleUrls: ['./line-fulfillment.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: false,\n})\nexport class LineFulfillmentComponent implements OnChanges {\n @Input() line: OrderDetailFragment['lines'][number];\n @Input() allOrderFulfillments: OrderDetailFragment['fulfillments'];\n @Input() orderState: string;\n fulfilledCount = 0;\n fulfillmentStatus: FulfillmentStatus;\n fulfillments: Array<{\n count: number;\n fulfillment: Fulfillment;\n }> = [];\n\n ngOnChanges(changes: SimpleChanges): void {\n if (this.line) {\n this.fulfilledCount = this.getDeliveredCount(this.line);\n this.fulfillmentStatus = this.getFulfillmentStatus(this.fulfilledCount, this.line.quantity);\n this.fulfillments = this.getFulfillments(this.line);\n }\n }\n\n /**\n * Returns the number of items in an OrderLine which are fulfilled.\n */\n private getDeliveredCount(line: OrderDetailFragment['lines'][number]): number {\n return (\n line.fulfillmentLines?.reduce((sum, fulfillmentLine) => sum + fulfillmentLine.quantity, 0) ?? 0\n );\n }\n\n private getFulfillmentStatus(fulfilledCount: number, lineQuantity: number): FulfillmentStatus {\n if (fulfilledCount === lineQuantity) {\n return 'full';\n }\n if (0 < fulfilledCount && fulfilledCount < lineQuantity) {\n return 'partial';\n }\n return 'none';\n }\n\n private getFulfillments(\n line: OrderDetailFragment['lines'][number],\n ): Array<{ count: number; fulfillment: NonNullable<OrderDetailFragment['fulfillments']>[number] }> {\n return (\n line.fulfillmentLines\n ?.map(fulfillmentLine => {\n const fulfillment = this.allOrderFulfillments?.find(\n f => f.id === fulfillmentLine.fulfillmentId,\n );\n if (!fulfillment) {\n return;\n }\n return {\n count: fulfillmentLine.quantity,\n fulfillment,\n };\n })\n .filter(notNullOrUndefined) ?? []\n );\n }\n}\n","<vdr-dropdown class=\"search-settings-menu\" *ngIf=\"fulfilledCount || orderState === 'PartiallyDelivered'\">\n <button type=\"button\" class=\"icon-button\" vdrDropdownTrigger>\n <clr-icon *ngIf=\"fulfillmentStatus === 'full'\" class=\"item-fulfilled\" shape=\"check-circle\"></clr-icon>\n <clr-icon\n *ngIf=\"fulfillmentStatus === 'partial'\"\n class=\"item-partially-fulfilled\"\n shape=\"check-circle\"\n ></clr-icon>\n <clr-icon\n *ngIf=\"fulfillmentStatus === 'none'\"\n class=\"item-not-fulfilled\"\n shape=\"exclamation-circle\"\n ></clr-icon>\n </button>\n <vdr-dropdown-menu vdrPosition=\"bottom-right\">\n <label class=\"dropdown-header\" *ngIf=\"fulfillmentStatus === 'full'\">\n {{ 'order.line-fulfillment-all' | translate }}\n </label>\n <label class=\"dropdown-header\" *ngIf=\"fulfillmentStatus === 'partial'\">\n {{\n 'order.line-fulfillment-partial' | translate: { total: line.quantity, count: fulfilledCount }\n }}\n </label>\n <label class=\"dropdown-header\" *ngIf=\"fulfillmentStatus === 'none'\">\n {{ 'order.line-fulfillment-none' | translate }}\n </label>\n <div class=\"fulfillment-detail\" *ngFor=\"let item of fulfillments\">\n <div class=\"fulfillment-title\">\n {{ 'order.fulfillment' | translate }} #{{ item.fulfillment.id }} ({{\n 'order.item-count' | translate: { count: item.count }\n }})\n </div>\n <vdr-labeled-data [label]=\"'common.created-at' | translate\">\n {{ item.fulfillment.createdAt | localeDate: 'medium' }}\n </vdr-labeled-data>\n <vdr-labeled-data [label]=\"'order.fulfillment-method' | translate\">\n {{ item.fulfillment.method }}\n </vdr-labeled-data>\n <vdr-labeled-data\n *ngIf=\"item.fulfillment.trackingCode\"\n [label]=\"'order.tracking-code' | translate\"\n >\n {{ item.fulfillment.trackingCode }}\n </vdr-labeled-data>\n </div>\n </vdr-dropdown-menu>\n</vdr-dropdown>\n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\nimport { OrderDetailFragment, PaymentWithRefundsFragment } from '@vendure/admin-ui/core';\n\n@Component({\n selector: 'vdr-line-refunds',\n templateUrl: './line-refunds.component.html',\n styleUrls: ['./line-refunds.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: false,\n})\nexport class LineRefundsComponent {\n @Input() line: OrderDetailFragment['lines'][number];\n @Input() payments: PaymentWithRefundsFragment[];\n\n getRefundedCount(): number {\n const refundLines =\n this.payments\n ?.reduce(\n (all, payment) => [...all, ...payment.refunds],\n [] as PaymentWithRefundsFragment['refunds'],\n )\n .filter(refund => refund.state !== 'Failed')\n .reduce(\n (all, refund) => [...all, ...refund.lines],\n [] as Array<{ orderLineId: string; quantity: number }>,\n ) ?? [];\n\n return refundLines\n .filter(i => i.orderLineId === this.line.id)\n .reduce((sum, i) => sum + i.quantity, 0);\n }\n}\n","<span *ngIf=\"getRefundedCount()\" [title]=\"'order.refunded-count' | translate: { count: getRefundedCount() }\">\n <clr-icon shape=\"redo\" class=\"is-solid\" dir=\"down\"></clr-icon>\n</span>\n","import { Component } from '@angular/core';\nimport { DataTable2ColumnComponent } from '@vendure/admin-ui/core';\n\n@Component({\n selector: 'vdr-order-total-column',\n template: ``,\n exportAs: 'row',\n standalone: false,\n})\nexport class OrderTotalColumnComponent<T> extends DataTable2ColumnComponent<T> {\n orderable = false;\n}\n","import { ChangeDetectionStrategy, Component, ContentChildren, Input, QueryList } from '@angular/core';\nimport { DataTable2Component, OrderDetailFragment } from '@vendure/admin-ui/core';\nimport { OrderTotalColumnComponent } from './order-total-column.component';\n\n@Component({\n selector: 'vdr-order-data-table',\n templateUrl: './order-data-table.component.html',\n styleUrls: [\n '../../../../core/src/shared/components/data-table-2/data-table2.component.scss',\n './order-data-table.component.scss',\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: false,\n})\nexport class OrderDataTableComponent extends DataTable2Component<OrderDetailFragment> {\n @ContentChildren(OrderTotalColumnComponent) totalColumns: QueryList<OrderTotalColumnComponent<any>>;\n @Input() order: OrderDetailFragment;\n\n get allColumns() {\n return [...(this.columns ?? []), ...(this.customFieldColumns ?? []), ...(this.totalColumns ?? [])];\n }\n\n getPromotionLink(promotion: OrderDetailFragment['discounts'][number]): any[] {\n const id = promotion.adjustmentSource.split(':')[1];\n return ['/marketing', 'promotions', id];\n }\n\n getCouponCodeForAdjustment(\n order: OrderDetailFragment,\n promotionAdjustment: OrderDetailFragment['discounts'][number],\n ): string | undefined {\n const id = promotionAdjustment.adjustmentSource.split(':')[1];\n const promotion = order.promotions.find(p => p.id === id);\n if (promotion) {\n return promotion.couponCode || undefined;\n }\n }\n\n getShippingNames(order: OrderDetailFragment) {\n if (order.shippingLines.length) {\n return order.shippingLines.map(shippingLine => shippingLine.shippingMethod.name).join(', ');\n } else {\n return '';\n }\n }\n}\n","<div class=\"bulk-actions\">\n <ng-content select=\"vdr-bulk-action-menu\"></ng-content>\n</div>\n<div class=\"table-wrapper\">\n <table\n class=\"\"\n [class.no-select]=\"disableSelect\"\n >\n <thead [class.items-selected]=\"selectionManager?.selection.length\">\n <tr class=\"heading-row\">\n <th *ngIf=\"selectionManager\" class=\"selection-col\">\n <input\n type=\"checkbox\"\n clrCheckbox\n [checked]=\"selectionManager?.areAllCurrentItemsSelected()\"\n (change)=\"onToggleAllClick()\"\n />\n </th>\n <th\n *ngFor=\"let column of visibleSortedColumns; last as isLast\"\n [class.expand]=\"column.expand\"\n >\n <div class=\"cell-content\" [ngClass]=\"column.align\">\n <vdr-ui-extension-point\n [locationId]=\"id\"\n [metadata]=\"column.id\"\n api=\"dataTable\"\n [topPx]=\"-6\"\n [leftPx]=\"-24\"\n display=\"block\"\n >\n <span>{{ column.heading }}</span>\n </vdr-ui-extension-point>\n <div *ngIf=\"column.sort as sort\" class=\"sort-toggle\">\n <button (click)=\"sort.toggleSortOrder()\" [class.active]=\"sort.sortOrder\">\n <clr-icon *ngIf=\"!sort.sortOrder\" shape=\"two-way-arrows left\"></clr-icon>\n <clr-icon *ngIf=\"sort.sortOrder === 'ASC'\" shape=\"arrow up\"></clr-icon>\n <clr-icon *ngIf=\"sort.sortOrder === 'DESC'\" shape=\"arrow down\"></clr-icon>\n </button>\n <div class=\"sort-label\" *ngIf=\"sort.sortOrder\">{{ sort.sortOrder }}</div>\n </div>\n </div>\n </th>\n <th>\n <div class=\"column-picker\">\n <vdr-data-table-colum-picker\n [uiLanguage]=\"uiLanguage$ | async\"\n [columns]=\"sortedColumns\"\n (reorder)=\"onColumnReorder($event)\"\n (resetColumns)=\"onColumnsReset()\"\n ></vdr-data-table-colum-picker>\n </div>\n </th>\n </tr>\n <tr *ngIf=\"searchComponent || customSearchTemplate || filters?.length\">\n <th\n [attr.colspan]=\"visibleSortedColumns.length + (selectionManager ? 2 : 1)\"\n class=\"filter-row\"\n [class.active]=\"showSearchFilterRow\"\n >\n <button\n class=\"button-ghost toggle-search-filter-row\"\n [class.active]=\"showSearchFilterRow\"\n (click)=\"toggleSearchFilterRow()\"\n [title]=\"'common.search-and-filter-list' | translate\"\n >\n <clr-icon shape=\"search\"></clr-icon>\n </button>\n <div class=\"filter-row-wrapper\" [class.hidden]=\"!showSearchFilterRow\">\n <ng-container *ngTemplateOutlet=\"searchComponent?.template\"></ng-container>\n <ng-container *ngTemplateOutlet=\"customSearchTemplate\"></ng-container>\n <ng-container *ngIf=\"filters\">\n <div class=\"filters\">\n <vdr-data-table-filters\n *ngFor=\"let activeFilter of filters.activeFilters\"\n [filterWithValue]=\"activeFilter\"\n [filters]=\"filters\"\n class=\"mt-1\"\n ></vdr-data-table-filters>\n <vdr-data-table-filters\n *ngIf=\"filters.length\"\n [filters]=\"filters\"\n class=\"mt-1\"\n ></vdr-data-table-filters>\n </div>\n </ng-container>\n </div>\n </th>\n </tr>\n </thead>\n <tbody>\n <tr\n *ngFor=\"\n let item of items\n | paginate\n : {\n id: id,\n itemsPerPage: itemsPerPage,\n currentPage: currentPage,\n totalItems: totalItems\n };\n index as i;\n trackBy: trackByFn.bind(this)\n \"\n >\n <td *ngIf=\"selectionManager\" class=\"selection-col\" [class.active]=\"activeIndex === i\">\n <input\n type=\"checkbox\"\n clrCheckbox\n [checked]=\"selectionManager?.isSelected(item)\"\n (click)=\"onRowClick(item, $event)\"\n />\n </td>\n <td *ngFor=\"let column of visibleSortedColumns\" [class.active]=\"activeIndex === i\">\n <div class=\"cell-content\" [ngClass]=\"column.align\">\n <ng-container\n *ngIf=\"customComponents.get(column.id) as componentConfig; else defaultComponent\"\n >\n <ng-container\n *ngComponentOutlet=\"\n componentConfig.config.component;\n inputs: { rowItem: item };\n injector: componentConfig.injector\n \"\n ></ng-container>\n </ng-container>\n <ng-template #defaultComponent>\n <ng-container\n *ngTemplateOutlet=\"column.template; context: { item: item, index: i }\"\n ></ng-container>\n </ng-template>\n </div>\n </td>\n <td [class.active]=\"activeIndex === i\"><!-- column select --></td>\n </tr>\n <ng-container>\n <tr *ngIf=\"!items?.length\">\n <td [attr.colspan]=\"visibleSortedColumns.length + (selectionManager ? 2 : 1)\">\n <vdr-empty-placeholder [emptyStateLabel]=\"'order.order-is-empty' | translate\"></vdr-empty-placeholder>\n </td>\n </tr>\n </ng-container>\n <tr class=\"surcharge\" *ngFor=\"let surcharge of order.surcharges\">\n <td class=\"align-middle name left\" colspan=\"2\">{{ surcharge.description }}</td>\n <td class=\"align-middle sku\">{{ surcharge.sku }}</td>\n <td class=\"align-middle\" [attr.colspan]=\"visibleSortedColumns.length - 4\"></td>\n <td class=\"align-middle total\">\n {{ surcharge.priceWithTax | localeCurrency : order.currencyCode }}\n <div class=\"net-price\" [title]=\"'order.net-price' | translate\">\n {{ surcharge.price | localeCurrency : order.currencyCode }}\n </div>\n </td>\n <td><!-- column select --></td>\n </tr>\n <ng-container *ngFor=\"let discount of order.discounts\">\n <tr class=\"order-adjustment\" *ngIf=\"discount.type !== 'OTHER'\">\n <td [attr.colspan]=\"visibleSortedColumns.length - 1\" class=\"\">\n <a [routerLink]=\"getPromotionLink(discount)\">{{ discount.description }}</a>\n <vdr-chip *ngIf=\"getCouponCodeForAdjustment(order, discount) as couponCode\">{{\n couponCode\n }}</vdr-chip>\n </td>\n <td class=\"\">\n {{ discount.amountWithTax | localeCurrency : order.currencyCode }}\n <div class=\"net-price\" [title]=\"'order.net-price' | translate\">\n {{ discount.amount | localeCurrency : order.currencyCode }}\n </div>\n </td>\n <td><!-- column select --></td>\n </tr>\n </ng-container>\n <tr class=\"sub-total\">\n <td class=\"\">{{ 'order.sub-total' | translate }}</td>\n <td [attr.colspan]=\"visibleSortedColumns.length - 2\"></td>\n <td class=\"clr-align-middle\">\n {{ order.subTotalWithTax | localeCurrency : order.currencyCode }}\n <div class=\"net-price\" [title]=\"'order.net-price' | translate\">\n {{ order.subTotal | localeCurrency : order.currencyCode }}\n </div>\n </td>\n <td><!-- column select --></td>\n </tr>\n <tr class=\"shipping\">\n <td class=\"\">{{ 'order.shipping' | translate }}</td>\n <td [attr.colspan]=\"visibleSortedColumns.length - 2\">\n <vdr-chip *ngFor=\"let shippingLine of order.shippingLines\" class=\"shipping-method-name\">\n {{ shippingLine.shippingMethod.name }}\n </vdr-chip>\n </td>\n <td class=\"clr-align-middle\">\n {{ order.shippingWithTax | localeCurrency : order.currencyCode }}\n <div class=\"net-price\" [title]=\"'order.net-price' | translate\">\n {{ order.shipping | localeCurrency : order.currencyCode }}\n </div>\n </td>\n <td><!-- column select --></td>\n </tr>\n <tr class=\"total\">\n <td class=\"\">{{ 'order.total' | translate }}</td>\n <td [attr.colspan]=\"visibleSortedColumns.length - 2\"></td>\n <td class=\"clr-align-middle\">\n {{ order.totalWithTax | localeCurrency : order.currencyCode }}\n <div class=\"net-price\" [title]=\"'order.net-price' | translate\">\n {{ order.total | localeCurrency : order.currencyCode }}\n </div>\n </td>\n <td><!-- column select --></td>\n </tr>\n </tbody>\n </table>\n</div>\n","import { ChangeDetectionStrategy, Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { UntypedFormControl, UntypedFormGroup } from '@angular/forms';\nimport { AdjustmentType, CustomFieldConfig, OrderDetailFragment } from '@vendure/admin-ui/core';\n\n@Component({\n selector: 'vdr-order-table',\n templateUrl: './order-table.component.html',\n styleUrls: ['./order-table.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: false,\n})\nexport class OrderTableComponent implements OnInit {\n @Input() order: OrderDetailFragment;\n @Input() orderLineCustomFields: CustomFieldConfig[];\n @Input() isDraft = false;\n @Output() adjust = new EventEmitter<{ lineId: string; quantity: number }>();\n @Output() remove = new EventEmitter<{ lineId: string }>();\n orderLineCustomFieldsVisible = false;\n customFieldsForLine: {\n [lineId: string]: Array<{ config: CustomFieldConfig; formGroup: UntypedFormGroup; value: any }>;\n } = {};\n\n get visibleOrderLineCustomFields(): CustomFieldConfig[] {\n return this.orderLineCustomFieldsVisible ? this.orderLineCustomFields : [];\n }\n\n get showElided(): boolean {\n return !this.orderLineCustomFieldsVisible && 0 < this.orderLineCustomFields.length;\n }\n\n ngOnInit(): void {\n this.orderLineCustomFieldsVisible = this.orderLineCustomFields.length < 2;\n this.getLineCustomFields();\n }\n\n draftInputBlur(line: OrderDetailFragment['lines'][number], quantity: number) {\n if (line.quantity !== quantity) {\n this.adjust.emit({ lineId: line.id, quantity });\n }\n }\n\n toggleOrderLineCustomFields() {\n this.orderLineCustomFieldsVisible = !this.orderLineCustomFieldsVisible;\n }\n\n getLineDiscounts(line: OrderDetailFragment['lines'][number]) {\n return line.discounts.filter(a => a.type === AdjustmentType.PROMOTION);\n }\n\n private getLineCustomFields() {\n for (const line of this.order.lines) {\n const formGroup = new UntypedFormGroup({});\n const result = this.orderLineCustomFields\n .map(config => {\n const value = (line as any).customFields[config.name];\n formGroup.addControl(config.name, new UntypedFormControl(value));\n return {\n config,\n formGroup,\n value,\n };\n })\n .filter(field => (this.orderLineCustomFieldsVisible ? true : field.value != null));\n this.customFieldsForLine[line.id] = result;\n }\n }\n\n getPromotionLink(promotion: OrderDetailFragment['discounts'][number]): any[] {\n const id = promotion.adjustmentSource.split(':')[1];\n return ['/marketing', 'promotions', id];\n }\n\n getCouponCodeForAdjustment(\n order: OrderDetailFragment,\n promotionAdjustment: OrderDetailFragment['discounts'][number],\n ): string | undefined {\n const id = promotionAdjustment.adjustmentSource.split(':')[1];\n const promotion = order.promotions.find(p => p.id === id);\n if (promotion) {\n return promotion.couponCode || undefined;\n }\n }\n\n getShippingNames(order: OrderDetailFragment) {\n if (order.shippingLines.length) {\n return order.shippingLines.map(shippingLine => shippingLine.shippingMethod.name).join(', ');\n } else {\n return '';\n }\n }\n}\n","<vdr-order-data-table id=\"order-detail-list\" [items]=\"order.lines\" [order]=\"order\">\n <vdr-dt2-column id=\"id\" [heading]=\"'common.id' | translate\" [hiddenByDefault]=\"true\">\n <ng-template let-line=\"item\">\n {{ line.id }}\n </ng-template>\n </vdr-dt2-column>\n <vdr-dt2-column\n id=\"created-at\"\n [heading]=\"'common.created-at' | translate\"\n [hiddenByDefault]=\"true\"\n >\n <ng-template let-line=\"item\">\n {{ line.createdAt | localeDate : 'short' }}\n </ng-template>\n </vdr-dt2-column>\n <vdr-dt2-column\n id=\"updated-at\"\n [heading]=\"'common.updated-at' | translate\"\n [hiddenByDefault]=\"true\"\n >\n <ng-template let-line=\"item\">\n {{ line.updatedAt | localeDate : 'short' }}\n </ng-template>\n </vdr-dt2-column>\n <vdr-dt2-column [heading]=\"'common.image' | translate\" id=\"image\">\n <ng-template let-line=\"item\">\n <div class=\"image-placeholder\">\n <img\n *ngIf=\"line.featuredAsset as asset; else imagePlaceholder\"\n [src]=\"asset | assetPreview : 'tiny'\"\n />\n <ng-template #imagePlaceholder>\n <div class=\"placeholder\">\n <clr-icon shape=\"image\" size=\"48\"></clr-icon>\n </div>\n </ng-template>\n </div>\n </ng-template>\n </vdr-dt2-column>\n <vdr-dt2-column [heading]=\"'order.product-name' | translate\" id=\"product-name\">\n <ng-template let-line=\"item\">\n <a class=\"button-ghost\" [routerLink]=\"['/catalog/products', line.productVariant.product.id]\"\n ><span>{{ line.productVariant.product.name }}</span>\n <clr-icon shape=\"arrow right\"></clr-icon>\n </a>\n </ng-template>\n </vdr-dt2-column>\n <vdr-dt2-column [heading]=\"'order.product-variant' | translate\" id=\"product-variant\">\n <ng-template let-line=\"item\">\n <a class=\"button-ghost\" [routerLink]=\"['/catalog/products', line.productVariant.product.id, 'variants', line.productVariant.id]\"\n ><span>{{ line.productVariant.name }}</span>\n <clr-icon shape=\"arrow right\"></clr-icon>\n </a>\n </ng-template>\n </vdr-dt2-column>\n <vdr-dt2-column [heading]=\"'order.product-sku' | translate\" id=\"product-sku\">\n <ng-template let-line=\"item\">\n {{ line.productVariant.sku }}\n </ng-template>\n </vdr-dt2-column>\n <vdr-dt2-column [heading]=\"'order.unit-price' | translate\" id=\"unit-price\">\n <ng-template let-line=\"item\">\n <div class=\"unit-price\">\n {{ line.unitPriceWithTax | localeCurrency : order.currencyCode }}\n <div class=\"net-price\" [title]=\"'order.net-price' | translate\">\n {{ line.unitPrice | localeCurrency : order.currencyCode }}\n </div>\n </div>\n </ng-template>\n </vdr-dt2-column>\n <vdr-dt2-column [heading]=\"'order.quantity' | translate\" id=\"quantity\" [optional]=\"false\">\n <ng-template let-line=\"item\">\n <ng-container *ngIf=\"!isDraft; else draft\">\n <div class=\"flex\">\n <div\n *ngIf=\"line.orderPlacedQuantity && line.quantity !== line.orderPlacedQuantity\"\n class=\"order-placed-quantity\"\n [title]=\"'order.original-quantity-at-checkout' | translate\"\n >\n {{ line.orderPlacedQuantity }}\n </div>\n <div>{{ line.quantity }}</div>\n </div>\n </ng-container>\n <ng-template #draft>\n <div class=\"flex\">\n <input\n class=\"draft-qty\"\n type=\"number\"\n min=\"0\"\n #qtyInput\n [value]=\"line.quantity\"\n (blur)=\"draftInputBlur(line, qtyInput.valueAsNumber)\"\n />\n <button class=\"icon-button\" (click)=\"remove.emit({ lineId: line.id })\">\n <clr-icon shape=\"trash\"></clr-icon>\n </button>\n </div>\n </ng-template>\n <vdr-line-refunds [line]=\"line\" [payments]=\"order.payments\"></vdr-line-refunds>\n <vdr-line-fulfillment\n [line]=\"line\"\n [orderState]=\"order.state\"\n [allOrderFulfillments]=\"order.fulfillments\"\n ></vdr-line-fulfillment>\n </ng-template>\n </vdr-dt2-column>\n <vdr-dt2-custom-field-column\n *ngFor=\"let customField of orderLineCustomFields\"\n [customField]=\"customField\"\n />\n <vdr-order-total-column [heading]=\"'order.total' | translate\" id=\"total\" [optional]=\"false\">\n <ng-template let-line=\"item\">\n <div class=\"unit-price\">\n {{ line.linePriceWithTax | localeCurrency : order.currencyCode }}\n <div class=\"net-price\" [title]=\"'order.net-price' | translate\">\n {{ line.linePrice | localeCurrency : order.currencyCode }}\n </div>\n </div>\n\n <ng-container *ngIf=\"getLineDiscounts(line) as discounts\">\n <vdr-dropdown *ngIf=\"discounts.length\">\n <div class=\"promotions-label\" vdrDropdownTrigger>\n {{ 'order.promotions-applied' | translate }}\n </div>\n <vdr-dropdown-menu>\n <div class=\"line-promotion\" *ngFor=\"let discount of discounts\">\n <a class=\"promotion-name\" [routerLink]=\"getPromotionLink(discount)\">{{\n discount.description\n }}</a>\n <div class=\"promotion-amount\">\n {{ discount.amountWithTax | localeCurrency : order.currencyCode }}\n <div class=\"net-price\" [title]=\"'order.net-price' | translate\">\n {{ discount.amount | localeCurrency : order.currencyCode }}\n </div>\n </div>\n </div>\n </vdr-dropdown-menu>\n </vdr-dropdown>\n </ng-container>\n </ng-template>\n </vdr-order-total-column>\n</vdr-order-data-table>\n","import { ChangeDetectionStrategy, Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { UntypedFormControl, UntypedFormGroup } from '@angular/forms';\nimport { CurrencyCode, CustomFieldConfig, DataService, GetProductVariantQuery } from '@vendure/admin-ui/core';\nimport { Observable, Subject } from 'rxjs';\nimport { switchMap } from 'rxjs/operators';\n\n@Component({\n selector: 'vdr-draft-order-variant-selector',\n templateUrl: './draft-order-variant-selector.component.html',\n styleUrls: ['./draft-order-variant-selector.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: false,\n})\nexport class DraftOrderVariantSelectorComponent implements OnInit {\n @Input() currencyCode: CurrencyCode;\n @Input() orderLineCustomFields: CustomFieldConfig[];\n @Output() addItem = new EventEmitter<{ productVariantId: string; quantity: number; customFields: any }>();\n customFieldsFormGroup = new UntypedFormGroup({});\n selectedVariant$: Observable<GetProductVariantQuery['productVariant']>;\n selectedVariantId$ = new Subject<string | undefined>();\n quantity = 1;\n constructor(private dataService: DataService) {}\n\n ngOnInit(): void {\n this.selectedVariant$ = this.selectedVariantId$.pipe(\n switchMap(id => {\n if (id) {\n return this.dataService.product\n .getProductVariant(id)\n .mapSingle(({ productVariant }) => productVariant);\n } else {\n return [undefined];\n }\n }),\n );\n for (const customField of this.orderLineCustomFields) {\n this.customFieldsFormGroup.addControl(customField.name, new UntypedFormControl(''));\n }\n }\n\n addItemClick(selectedVariant: GetProductVariantQuery['productVariant']) {\n if (selectedVariant) {\n this.addItem.emit({\n productVariantId: selectedVariant.id,\n quantity: this.quantity,\n customFields: this.orderLineCustomFields.length\n ? this.customFieldsFormGroup.value\n : undefined,\n });\n this.selectedVariantId$.next(undefined);\n this.customFieldsFormGroup.reset();\n }\n }\n}\n","<div class=\"card\">\n <div class=\"card-block\">\n <h4 class=\"card-title\">{{ 'order.add-item-to-order' | translate }}</h4>\n <vdr-product-variant-selector\n (productSelected)=\"selectedVariantId$.next($event.productVariantId)\"\n ></vdr-product-variant-selector>\n </div>\n <div class=\"card-block\" *ngIf=\"selectedVariant$ | async as selectedVariant\">\n <div class=\"variant-details\">\n <img class=\"mr-2\" [src]=\"selectedVariant.featuredAsset || selectedVariant.product.featuredAsset | assetPreview: 32\">\n <div class=\"details\">\n <div>{{ selectedVariant?.name }}</div>\n <div class=\"small\">{{ selectedVariant?.sku }}</div>\n </div>\n <div class=\"details ml-4\">\n <div class=\"small\">\n {{ 'catalog.stock-on-hand' | translate }}: {{ selectedVariant.stockOnHand }}\n </div>\n <div class=\"small\">\n {{ 'catalog.stock-allocated' | translate }}: {{ selectedVariant.stockAllocated }}\n </div>\n </div>\n <div class=\"flex-spacer\"></div>\n <div class=\"details\">\n <div>{{ selectedVariant?.priceWithTax | localeCurrency: currencyCode }}</div>\n <div class=\"small\" [title]=\"'order.net-price' | translate\">\n {{ selectedVariant?.price | localeCurrency: currencyCode }}\n </div>\n </div>\n <div>\n <input [disabled]=\"!selectedVariant\" type=\"number\" min=\"0\" [(ngModel)]=\"quantity\" />\n </div>\n <button\n [disabled]=\"!selectedVariant\"\n class=\"btn btn-small btn-primary\"\n (click)=\"addItemClick(selectedVariant)\"\n >\n {{ 'order.add-item-to-order' | translate }}\n </button>\n </div>\n <ng-container *ngIf=\"orderLineCustomFields.length\">\n <vdr-tabbed-custom-fields\n entityName=\"Order\"\n [customFields]=\"orderLineCustomFields\"\n [customFieldsFormGroup]=\"customFieldsFormGroup\"\n ></vdr-tabbed-custom-fields>\n </ng-container>\n </div>\n</div>\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, OnDestroy, OnInit } from '@angular/core';\nimport { UntypedFormGroup } from '@angular/forms';\nimport { marker as _ } from '@biesbjerg/ngx-translate-extract-marker';\nimport {\n AddressFragment,\n CreateAddressInput,\n DataService,\n DeletionResult,\n DraftOrderEligibleShippingMethodsQuery,\n GetCustomerAddressesDocument,\n ModalService,\n NotificationService,\n Order,\n OrderDetailFragment,\n OrderDetailQueryDocument,\n TypedBaseDetailComponent,\n} from '@vendure/admin-ui/core';\nimport { combineLatest, forkJoin, Observable, of, Subject } from 'rxjs';\nimport { switchMap, take } from 'rxjs/operators';\n\nimport { OrderTransitionService } from '../../providers/order-transition.service';\nimport { SelectAddressDialogComponent } from '../select-address-dialog/select-address-dialog.component';\nimport { SelectCustomerDialogComponent } from '../select-customer-dialog/select-customer-dialog.component';\nimport { SelectShippingMethodDialogComponent } from '../select-shipping-method-dialog/select-shipping-method-dialog.component';\n\n@Component({\n selector: 'vdr-draft-order-detail',\n templateUrl: './draft-order-detail.component.html',\n styleUrls: ['./draft-order-detail.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: false,\n})\nexport class DraftOrderDetailComponent\n extends TypedBaseDetailComponent<typeof OrderDetailQueryDocument, 'order'>\n implements OnInit, OnDestroy\n{\n customFields = this.getCustomFieldConfig('Order');\n orderLineCustomFields = this.getCustomFieldConfig('OrderLine');\n detailForm = new UntypedFormGroup({});\n eligibleShippingMethods$: Observable<\n DraftOrderEligibleShippingMethodsQuery['eligibleShippingMethodsForDraftOrder']\n >;\n nextStates$: Observable<string[]>;\n fetchHistory = new Subject<void>();\n displayCouponCodeInput = false;\n\n constructor(\n private changeDetector: ChangeDetectorRef,\n protected dataService: DataService,\n private notificationService: NotificationService,\n private modalService: ModalService,\n private orderTransitionService: OrderTransitionService,\n ) {\n super();\n }\n\n ngOnInit() {\n this.init();\n this.orderLineCustomFields = this.getCustomFieldConfig('OrderLine');\n this.eligibleShippingMethods$ = this.entity$.pipe(\n switchMap(order =>\n this.dataService.order\n .getDraftOrderEligibleShippingMethods(order.id)\n .mapSingle(\n ({ eligibleShippingMethodsForDraftOrder }) => eligibleShippingMethodsForDraftOrder,\n ),\n ),\n );\n }\n\n ngOnDestroy() {\n this.destroy();\n }\n\n addItemToOrder(event: { productVariantId: string; quantity: number; customFields: any }) {\n this.dataService.order.addItemToDraftOrder(this.id, event).subscribe(result => {\n if (result.addItemToDraftOrder.__typename !== 'Order') {\n this.notificationService.error((result.addItemToDraftOrder as any).message);\n }\n });\n }\n\n adjustOrderLine(event: { lineId: string; quantity: number }) {\n this.dataService.order\n .adjustDraftOrderLine(this.id, { orderLineId: event.lineId, quantity: event.quantity })\n .subscribe(result => {\n if (result.adjustDraftOrderLine.__typename !== 'Order') {\n this.notificationService.error((result.adjustDraftOrderLine as any).message);\n }\n });\n }\n\n removeOrderLine(event: { lineId: string }) {\n this.dataService.order.removeDraftOrderLine(this.id, event.lineId).subscribe(result => {\n if (result.removeDraftOrderLine.__typename !== 'Order') {\n this.notificationService.error((result.removeDraftOrderLine as any).message);\n }\n });\n }\n\n getOrderAddressLines(orderAddress?: { [key: string]: string }): string[] {\n if (!orderAddress) {\n return [];\n }\n return Object.values(orderAddress)\n .filter(val => val !== 'OrderAddress')\n .filter(line => !!line);\n }\n\n setCustomer() {\n this.modalService.fromComponent(SelectCustomerDialogComponent).subscribe(result => {\n if (this.hasId(result)) {\n this.dataService.order\n .setCustomerForDraftOrder(this.id, { customerId: result.id })\n .pipe(\n switchMap(() => {\n return this.dataService.query(GetCustomerAddressesDocument, {\n customerId: result.id,\n }).single$;\n }),\n switchMap(({ customer }) => {\n const defaultShippingAddress = customer?.addresses?.find(\n addr => addr.defaultShippingAddress,\n );\n const defaultBillingAddress = customer?.addresses?.find(\n addr => addr.defaultBillingAddress,\n );\n\n return forkJoin([\n defaultShippingAddress\n ? this.dataService.order.setDraftOrderShippingAddress(\n this.id,\n this.mapToAddressInput(defaultShippingAddress),\n )\n : this.dataService.order.unsetDraftOrderShippingAddress(this.id),\n defaultBillingAddress\n ? this.dataService.order.setDraftOrderBillingAddress(\n this.id,\n this.mapToAddressInput(defaultBillingAddress),\n )\n : this.dataService.order.unsetDraftOrderBillingAddress(this.id),\n ]);\n }),\n )\n .subscribe();\n } else if (result) {\n const { note, ...input } = result;\n this.dataService.order.setCustomerForDraftOrder(this.id, { input }).subscribe();\n }\n });\n }\n\n private mapToAddressInput(address: AddressFragment): CreateAddressInput {\n return {\n fullName: address.fullName,\n company: address.company,\n streetLine1: address.streetLine1,\n streetLine2: address.streetLine2,\n city: address.city,\n province: address.province,\n postalCode: address.postalCode,\n countryCode: address.country.code,\n phoneNumber: address.phoneNumber,\n defaultShippingAddress: address.defaultShippingAddress,\n defaultBillingAddress: address.defaultBillingAddress,\n };\n }\n\n setShippingAddress() {\n this.entity$\n .pipe(\n take(1),\n switchMap(order =>\n this.modalService.fromComponent(SelectAddressDialogComponent, {\n locals: {\n customerId: order.customer?.id,\n currentAddress: order.shippingAddress ?? undefined,\n },\n }),\n ),\n )\n .subscribe(result => {\n if (result) {\n this.dataService.order.setDraftOrderShippingAddress(this.id, result).subscribe();\n }\n });\n }\n\n setBillingAddress() {\n this.entity$\n .pipe(\n take(1),\n switchMap(order =>\n this.modalService.fromComponent(SelectAddressDialogComponent, {\n locals: {\n customerId: order.customer?.id,\n currentAddress: order.billingAddress ?? undefined,\n },\n }),\n ),\n )\n .subscribe(result => {\n if (result) {\n this.dataService.order.setDraftOrderBillingAddress(this.id, result).subscribe();\n }\n });\n }\n\n applyCouponCode(couponCode: string) {\n this.dataService.order.applyCouponCodeToDraftOrder(this.id, couponCode).subscribe();\n }\n\n removeCouponCode(couponCode: string) {\n this.dataService.order.removeCouponCodeFromDraftOrder(this.id, couponCode).subscribe();\n }\n\n setShippingMethod() {\n combineLatest(this.entity$, this.eligibleShippingMethods$)\n .pipe(\n take(1),\n switchMap(([order, methods]) =>\n this.modalService.fromComponent(SelectShippingMethodDialogComponent, {\n locals: {\n eligibleShippingMethods: methods,\n currencyCode: order.currencyCode,\n currentSelectionId: order.shippingLines?.[0]?.shippingMethod.id,\n },\n }),\n ),\n )\n .subscribe(result => {\n if (result) {\n this.dataService.order.setDraftOrderShippingMethod(this.id, result).subscribe();\n }\n });\n }\n\n updateCustomFields(customFieldsValue: any) {\n this.dataService.order\n .updateOrderCustomFields({\n id: this.id,\n customFields: customFieldsValue,\n })\n .subscribe();\n }\n\n deleteOrder() {\n this.dataService.order.deleteDraftOrder(this.id).subscribe(({ deleteDraftOrder }) => {\n if (deleteDraftOrder.result === DeletionResult.DELETED) {\n this.notificationService.success(_('common.notify-delete-success'), {\n entity: 'Order',\n });\n this.router.navigate(['/orders']);\n } else if (deleteDraftOrder.message) {\n this.notificationService.error(deleteDraftOrder.message);\n }\n });\n }\n\n completeOrder() {\n this.dataService.order\n .transitionToState(this.id, 'ArrangingPayment')\n .subscribe(({ transitionOrderToState }) => {\n if (transitionOrderToState?.__typename === 'Order') {\n this.router.navigate(['/orders', this.id]);\n } else if (transitionOrderToState?.__typename === 'OrderStateTransitionError') {\n this.notificationService.error(transitionOrderToState.transitionError);\n }\n });\n }\n\n private hasId<T extends { id: string }>(input: T | any): input is { id: string } {\n return typeof input === 'object' && !!input.id;\n }\n\n protected setFormValues(entity: OrderDetailFragment): void {\n // empty\n }\n}\n","<vdr-page-block>\n <vdr-action-bar *ngIf=\"entity$ | async as order\">\n <vdr-ab-left>\n <div class=\"flex clr-align-items-center\">\n <vdr-order-state-label [state]=\"order.state\"></vdr-order-state-label>\n </div>\n </vdr-ab-left>\n\n <vdr-ab-right>\n <vdr-action-bar-items locationId=\"draft-order-detail\" />\n <button\n class=\"btn btn-primary\"\n (click)=\"completeOrder()\"\n [disabled]=\"!order.customer || !order.lines.length || !order.shippingLines.length\"\n >\n <clr-icon shape=\"check\"></clr-icon>\n {{ 'order.complete-draft-order' | translate }}\n </button>\n <vdr-action-bar-dropdown-menu [alwaysShow]=\"true\" locationId=\"draft-order-detail\">\n <button type=\"button\" vdrDropdownItem (click)=\"deleteOrder()\">\n <clr-icon shape=\"trash\" class=\"is-danger\"></clr-icon>\n {{ 'order.delete-draft-order' | translate }}\n </button>\n </vdr-action-bar-dropdown-menu>\n </vdr-ab-right>\n </vdr-action-bar>\n</vdr-page-block>\n\n<vdr-page-detail-layout *ngIf=\"entity$ | async as order\">\n <vdr-page-detail-sidebar>\n <vdr-card [title]=\"'order.customer' | translate\">\n <ng-template vdrCardControls>\n <clr-icon *ngIf=\"!order.customer\" shape=\"unknown-status\" class=\"is-warning\"></clr-icon>\n <clr-icon *ngIf=\"order.customer\" shape=\"check\" class=\"is-success\"></clr-icon>\n </ng-template>\n <vdr-customer-label\n class=\"block mb-2\"\n *ngIf=\"order.customer\"\n [customer]=\"order.customer\"\n ></vdr-customer-label>\n <button class=\"button-small\" (click)=\"setCustomer()\">\n {{ 'order.set-customer-for-order' | translate }}\n </button>\n </vdr-card>\n <vdr-card [title]=\"'order.billing-address' | translate\">\n <ng-template vdrCardControls>\n <clr-icon\n *ngIf=\"!order.billingAddress.streetLine1\"\n shape=\"unknown-status\"\n class=\"is-warning\"\n ></clr-icon>\n <clr-icon\n *ngIf=\"order.billingAddress.streetLine1\"\n shape=\"check\"\n class=\"is-success\"\n ></clr-icon>\n </ng-template>\n <vdr-formatted-address\n class=\"block mb-2\"\n *ngIf=\"order.billingAddress\"\n [address]=\"order.billingAddress\"\n ></vdr-formatted-address>\n <button class=\"button-small\" (click)=\"setBillingAddress()\">\n {{ 'order.set-billing-address' | translate }}\n </button>\n </vdr-card>\n <vdr-card [title]=\"'order.shipping' | translate\">\n <ng-template vdrCardControls>\n <clr-icon\n *ngIf=\"!order.shippingAddress.streetLine1 || !order.shippingLines.length\"\n shape=\"unknown-status\"\n class=\"is-warning\"\n ></clr-icon>\n <clr-icon\n *ngIf=\"order.shippingAddress.streetLine1 && order.shippingLines.length\"\n shape=\"check\"\n class=\"is-success\"\n ></clr-icon>\n </ng-template>\n <vdr-formatted-address\n class=\"block mb-2\"\n *ngIf=\"order.shippingAddress\"\n [address]=\"order.shippingAddress\"\n ></vdr-formatted-address>\n <button class=\"button-small mr-2\" (click)=\"setShippingAddress()\">\n {{ 'order.set-shipping-address' | translate }}\n </button>\n\n <div *ngFor=\"let shippingLine of order.shippingLines\">\n {{ shippingLine.shippingMethod.name }}\n </div>\n <button class=\"button-small\" (click)=\"setShippingMethod()\">\n {{ 'order.set-shipping-method' | translate }}\n </button>\n </vdr-card>\n <vdr-card>\n <button\n *ngIf=\"order.couponCodes.length === 0 && !displayCouponCodeInput\"\n class=\"button-small\"\n (click)=\"displayCouponCodeInput = !displayCouponCodeInput\"\n >\n {{ 'order.set-coupon-codes' | translate }}\n </button>\n <div *ngIf=\"order.couponCodes.length || displayCouponCodeInput\">\n <label>{{ 'order.set-coupon-codes' | translate }}</label>\n <vdr-coupon-code-selector\n [couponCodes]=\"order.couponCodes\"\n (addCouponCode)=\"applyCouponCode($event)\"\n (removeCouponCode)=\"removeCouponCode($event)\"\n ></vdr-coupon-code-selector>\n </div>\n </vdr-card>\n <vdr-card>\n <vdr-page-entity-info *ngIf=\"entity$ | async as entity\" [entity]=\"entity\" />\n </vdr-card>\n </vdr-page-detail-sidebar>\n <vdr-page-block>\n <vdr-card>\n <vdr-draft-order-variant-selector\n [orderLineCustomFields]=\"orderLineCustomFields\"\n [currencyCode]=\"order.currencyCode\"\n (addItem)=\"addItemToOrder($event)\"\n ></vdr-draft-order-variant-selector>\n <vdr-order-table\n [order]=\"order\"\n [orderLineCustomFields]=\"orderLineCustomFields\"\n [isDraft]=\"true\"\n (adjust)=\"adjustOrderLine($event)\"\n (remove)=\"removeOrderLine($event)\"\n ></vdr-order-table>\n </vdr-card>\n <vdr-card [title]=\"'order.tax-summary' | translate\">\n <ng-container *ngIf=\"order.taxSummary.length\">\n <table class=\"table\">\n <thead>\n <tr>\n <th>{{ 'common.description' | translate }}</th>\n <th>{{ 'order.tax-rate' | translate }}</th>\n <th>{{ 'order.tax-base' | translate }}</th>\n <th>{{ 'order.tax-total' | translate }}</th>\n </tr>\n </thead>\n <tbody>\n <tr *ngFor=\"let row of order.taxSummary\">\n <td>{{ row.description }}</td>\n <td>{{ row.taxRate / 100 | percent }}</td>\n <td>{{ row.taxBase | localeCurrency : order.currencyCode }}</td>\n <td>{{ row.taxTotal | localeCurrency : order.currencyCode }}</td>\n </tr>\n </tbody>\n </table>\n </ng-container>\n </vdr-card>\n <vdr-custom-detail-component-host\n locationId=\"draft-order-detail\"\n [entity$]=\"entity$\"\n [detailForm]=\"detailForm\"\n ></vdr-custom-detail-component-host>\n\n <vdr-order-custom-fields-card\n [customFieldsConfig]=\"customFields\"\n [customFieldValues]=\"order.customFields\"\n (updateClick)=\"updateCustomFields($event)\"\n ></vdr-order-custom-fields-card>\n </vdr-page-block>\n</vdr-page-detail-layout>\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, OnInit } from '@angular/core';\nimport { UntypedFormControl } from '@angular/forms';\nimport {\n configurableDefinitionToInstance,\n ConfigurableOperation,\n ConfigurableOperationDefinition,\n configurableOperationValueIsValid,\n DataService,\n Dialog,\n FulfillOrderInput,\n GlobalFlag,\n OrderDetailFragment,\n toConfigurableOperationInput,\n} from '@vendure/admin-ui/core';\n\n@Component({\n selector: 'vdr-fulfill-order-dialog',\n templateUrl: './fulfill-order-dialog.component.html',\n styleUrls: ['./fulfill-order-dialog.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: false,\n})\nexport class FulfillOrderDialogComponent implements Dialog<FulfillOrderInput>, OnInit {\n resolveWith: (result?: FulfillOrderInput) => void;\n fulfillmentHandlerDef: ConfigurableOperationDefinition;\n fulfillmentHandler: ConfigurableOperation;\n fulfillmentHandlerControl = new UntypedFormControl();\n fulfillmentQuantities: { [lineId: string]: { fulfillCount: number; max: number } } = {};\n\n // Provided by modalService.fromComponent() call\n order: OrderDetailFragment;\n\n constructor(\n private dataService: DataService,\n private changeDetector: ChangeDetectorRef,\n ) {}\n\n ngOnInit(): void {\n this.dataService.settings.getGlobalSettings().single$.subscribe(({ globalSettings }) => {\n this.fulfillmentQuantities = this.order.lines.reduce((result, line) => {\n const fulfillCount = this.getFulfillableCount(line, globalSettings.trackInventory);\n return {\n ...result,\n [line.id]: { fulfillCount, max: fulfillCount },\n };\n }, {});\n this.changeDetector.markForCheck();\n });\n\n this.dataService.shippingMethod\n .getShippingMethodOperations()\n .mapSingle(data => data.fulfillmentHandlers)\n .subscribe(handlers => {\n this.fulfillmentHandlerDef =\n handlers.find(\n h => h.code === this.order.shippingLines[0]?.shippingMethod?.fulfillmentHandlerCode,\n ) || handlers[0];\n this.fulfillmentHandler = configurableDefinitionToInstance(this.fulfillmentHandlerDef);\n this.fulfillmentHandlerControl.patchValue(this.fulfillmentHandler);\n this.changeDetector.markForCheck();\n });\n }\n\n getFulfillableCount(line: OrderDetailFragment['lines'][number], globalTrackInventory: boolean): number {\n const { trackInventory, stockOnHand } = line.productVariant;\n const effectiveTracInventory =\n trackInventory === GlobalFlag.INHERIT ? globalTrackInventory : trackInventory === GlobalFlag.TRUE;\n\n const unfulfilledCount = this.getUnfulfilledCount(line);\n return effectiveTracInventory ? Math.min(unfulfilledCount, stockOnHand) : unfulfilledCount;\n }\n\n getUnfulfilledCount(line: OrderDetailFragment['lines'][number]): number {\n const fulfilled =\n this.order.fulfillments\n ?.filter(f => f.state !== 'Cancelled')\n .map(f => f.lines)\n .flat()\n .filter(row => row.orderLineId === line.id)\n .reduce((sum, row) => sum + row.quantity, 0) ?? 0;\n return line.quantity - fulfilled;\n }\n\n canSubmit(): boolean {\n const totalCount = Object.values(this.fulfillmentQuantities).reduce(\n (total, { fulfillCount }) => total + fulfillCount,\n 0,\n );\n const fulfillmentQuantityIsValid = Object.values(this.fulfillmentQuantities).every(\n ({ fulfillCount, max }) => fulfillCount <= max,\n );\n const formIsValid =\n configurableOperationValueIsValid(\n this.fulfillmentHandlerDef,\n this.fulfillmentHandlerControl.value,\n ) && this.fulfillmentHandlerControl.valid;\n return formIsValid && 0 < totalCount && fulfillmentQuantityIsValid;\n }\n\n select() {\n const lines = Object.entries(this.fulfillmentQuantities).map(([orderLineId, { fulfillCount }]) => ({\n orderLineId,\n quantity: fulfillCount,\n }));\n this.resolveWith({\n lines,\n handler: toConfigurableOperationInput(\n this.fulfillmentHandler,\n this.fulfillmentHandlerControl.value,\n ),\n });\n }\n\n cancel() {\n this.resolveWith();\n }\n}\n","<ng-template vdrDialogTitle>{{ 'order.fulfill-order' | translate }}</ng-template>\n\n<div class=\"fulfillment-wrapper\">\n <div class=\"order-table\">\n <table class=\"table\">\n <thead>\n <tr>\n <th></th>\n <th>{{ 'order.product-name' | translate }}</th>\n <th>{{ 'order.product-sku' | translate }}</th>\n <th>{{ 'order.unfulfilled' | translate }}</th>\n <th>{{ 'catalog.stock-on-hand' | translate }}</th>\n <th>{{ 'order.fulfill' | translate }}</th>\n </tr>\n </thead>\n <tr\n *ngFor=\"let line of order.lines\"\n class=\"order-line\"\n [class.ignore]=\"getUnfulfilledCount(line) === 0\"\n >\n <td class=\"align-middle thumb\">\n <img *ngIf=\"line.featuredAsset\" [src]=\"line.featuredAsset | assetPreview: 'tiny'\" />\n </td>\n <td class=\"align-middle name\">{{ line.productVariant.name }}</td>\n <td class=\"align-middle sku\">{{ line.productVariant.sku }}</td>\n <td class=\"align-middle quantity\">{{ getUnfulfilledCount(line) }}</td>\n <td class=\"align-middle quantity\">{{ line.productVariant.stockOnHand }}</td>\n <td class=\"align-middle fulfil\">\n <input\n *ngIf=\"fulfillmentQuantities[line.id]\"\n [disabled]=\"getUnfulfilledCount(line) === 0\"\n [(ngModel)]=\"fulfillmentQuantities[line.id].fulfillCount\"\n type=\"number\"\n [max]=\"fulfillmentQuantities[line.id].max\"\n min=\"0\"\n />\n </td>\n </tr>\n </table>\n </div>\n <div class=\"shipping-details\">\n <vdr-formatted-address [address]=\"order.shippingAddress\"></vdr-formatted-address>\n <h6>{{ 'order.shipping-method' | translate }}</h6>\n {{ order.shippingLines[0]?.shippingMethod?.name }}\n <strong>{{ order.shipping | localeCurrency: order.currencyCode }}</strong>\n <vdr-configurable-input\n [operationDefinition]=\"fulfillmentHandlerDef\"\n [operation]=\"fulfillmentHandler\"\n [formControl]=\"fulfillmentHandlerControl\"\n [removable]=\"false\"\n ></vdr-configurable-input>\n </div>\n</div>\n\n<ng-template vdrDialogButtons>\n <button type=\"button\" class=\"btn\" (click)=\"cancel()\">{{ 'common.cancel' | translate }}</button>\n <button type=\"submit\" (click)=\"select()\" [disabled]=\"!canSubmit()\" class=\"btn btn-primary\">\n {{ 'order.create-fulfillment' | translate }}\n </button>\n</ng-template>\n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\n\n@Component({\n selector: 'vdr-simple-item-list',\n templateUrl: './simple-item-list.component.html',\n styleUrls: ['./simple-item-list.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: false\n})\nexport class SimpleItemListComponent {\n @Input() items: Array<{ name: string; quantity?: number }>;\n}\n","<div class=\"items-list\">\n <ul>\n <li *ngFor=\"let item of items\" [title]=\"item.name\">\n <div class=\"quantity\" *ngIf=\"item.quantity != null\">{{ item.quantity }}</div>\n <clr-icon shape=\"times\" size=\"12\" *ngIf=\"item.quantity != null\"></clr-icon>\n {{ item.name }}\n </li>\n </ul>\n</div>\n","import { ChangeDetectionStrategy, Component, Input, OnChanges, OnInit, SimpleChanges } from '@angular/core';\nimport { UntypedFormControl, UntypedFormGroup } from '@angular/forms';\nimport { CustomFieldConfig, OrderDetailFragment, ServerConfigService } from '@vendure/admin-ui/core';\nimport { isObject } from '@vendure/common/lib/shared-utils';\n\n@Component({\n selector: 'vdr-fulfillment-detail',\n templateUrl: './fulfillment-detail.component.html',\n styleUrls: ['./fulfillment-detail.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: false,\n})\nexport class FulfillmentDetailComponent implements OnInit, OnChanges {\n @Input() fulfillmentId: string;\n @Input() order: OrderDetailFragment;\n\n customFieldConfig: CustomFieldConfig[] = [];\n customFieldFormGroup = new UntypedFormGroup({});\n\n constructor(private serverConfigService: ServerConfigService) {}\n\n ngOnInit() {\n this.customFieldConfig = this.serverConfigService.getCustomFieldsFor('Fulfillment');\n }\n\n ngOnChanges(changes: SimpleChanges) {\n this.buildCustomFieldsFormGroup();\n }\n\n get fulfillment(): NonNullable<OrderDetailFragment['fulfillments']>[number] | undefined | null {\n return this.order.fulfillments && this.order.fulfillments.find(f => f.id === this.fulfillmentId);\n }\n\n get items(): Array<{ name: string; quantity: number }> {\n return (\n this.fulfillment?.lines.map(row => ({\n name: this.order.lines.find(line => line.id === row.orderLineId)?.productVariant.name ?? '',\n quantity: row.quantity,\n })) ?? []\n );\n }\n\n buildCustomFieldsFormGroup() {\n const customFields = (this.fulfillment as any).customFields;\n for (const fieldDef of this.serverConfigService.getCustomFieldsFor('Fulfillment')) {\n this.customFieldFormGroup.addControl(\n fieldDef.name,\n new UntypedFormControl(customFields[fieldDef.name]),\n );\n }\n }\n\n customFieldIsObject(customField: unknown) {\n return Array.isArray(customField) || isObject(customField);\n }\n}\n","<vdr-labeled-data [label]=\"'common.created-at' | translate\">\n {{ fulfillment?.createdAt | localeDate: 'medium' }}\n</vdr-labeled-data>\n<vdr-labeled-data [label]=\"'order.fulfillment-method' | translate\">\n {{ fulfillment?.method }}\n</vdr-labeled-data>\n<vdr-labeled-data *ngIf=\"fulfillment?.trackingCode\" [label]=\"'order.tracking-code' | translate\">\n {{ fulfillment?.trackingCode }}\n</vdr-labeled-data>\n<vdr-labeled-data [label]=\"'order.contents' | translate\">\n <vdr-simple-item-list [items]=\"items\"></vdr-simple-item-list>\n</vdr-labeled-data>\n<ng-container *ngFor=\"let customField of customFieldConfig\">\n <vdr-custom-field-control\n *ngIf=\"customFieldFormGroup.get(customField.name)\"\n [readonly]=\"true\"\n [compact]=\"true\"\n [customField]=\"customField\"\n [customFieldsFormGroup]=\"customFieldFormGroup\"\n ></vdr-custom-field-control>\n</ng-container>\n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\n\n@Component({\n selector: 'vdr-fulfillment-state-label',\n templateUrl: './fulfillment-state-label.component.html',\n styleUrls: ['./fulfillment-state-label.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: false,\n})\nexport class FulfillmentStateLabelComponent {\n @Input() state: string;\n\n get chipColorType() {\n switch (this.state) {\n case 'Pending':\n case 'Shipped':\n return 'warning';\n case 'Delivered':\n return 'success';\n case 'Cancelled':\n return 'error';\n }\n }\n}\n","<vdr-chip [title]=\"'order.payment-state' | translate\" [colorType]=\"chipColorType\">\n <clr-icon shape=\"check-circle\" *ngIf=\"state === 'Delivered'\"></clr-icon>\n {{ state | stateI18nToken | translate }}\n</vdr-chip>\n","import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from '@angular/core';\nimport { FulfillmentFragment, OrderDetailFragment } from '@vendure/admin-ui/core';\n\n@Component({\n selector: 'vdr-fulfillment-card',\n templateUrl: './fulfillment-card.component.html',\n styleUrls: ['./fulfillment-card.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: false,\n})\nexport class FulfillmentCardComponent {\n @Input() fulfillment: FulfillmentFragment | undefined;\n @Input() order: OrderDetailFragment;\n @Output() transitionState = new EventEmitter<string>();\n\n nextSuggestedState(): string | undefined {\n if (!this.fulfillment) {\n return;\n }\n const { nextStates } = this.fulfillment;\n const namedStateOrDefault = (targetState: string) =>\n nextStates.includes(targetState) ? targetState : nextStates[0];\n switch (this.fulfillment?.state) {\n case 'Pending':\n return namedStateOrDefault('Shipped');\n case 'Shipped':\n return namedStateOrDefault('Delivered');\n default:\n return nextStates.find(s => s !== 'Cancelled');\n }\n }\n\n nextOtherStates(): string[] {\n if (!this.fulfillment) {\n return [];\n }\n const suggested = this.nextSuggestedState();\n return this.fulfillment.nextStates.filter(s => s !== suggested);\n }\n}\n","<div class=\"card\">\n <div class=\"card-header fulfillment-header\">\n <div>{{ 'order.fulfillment' | translate }}</div>\n <div class=\"fulfillment-state\">\n <vdr-fulfillment-state-label [state]=\"fulfillment?.state\"></vdr-fulfillment-state-label>\n </div>\n </div>\n <div class=\"card-block\">\n <vdr-fulfillment-detail\n *ngIf=\"!!fulfillment\"\n [fulfillmentId]=\"fulfillment?.id\"\n [order]=\"order\"\n ></vdr-fulfillment-detail>\n </div>\n <div class=\"card-footer\" *ngIf=\"fulfillment?.nextStates.length\">\n <ng-container *ngIf=\"nextSuggestedState() as suggestedState\">\n <button class=\"btn btn-sm btn-primary\" (click)=\"transitionState.emit(suggestedState)\">\n {{ 'order.set-fulfillment-state' | translate: { state: (suggestedState | stateI18nToken | translate) } }}\n </button>\n </ng-container>\n <vdr-dropdown>\n <button class=\"icon-button\" vdrDropdownTrigger>\n <clr-icon shape=\"ellipsis-vertical\"></clr-icon>\n </button>\n <vdr-dropdown-menu vdrPosition=\"bottom-right\">\n <ng-container *ngFor=\"let nextState of nextOtherStates()\">\n <button\n type=\"button\"\n vdrDropdownItem\n (click)=\"transitionState.emit(nextState)\"\n >\n <ng-container *ngIf=\"nextState !== 'Cancelled'; else cancel\">\n <clr-icon shape=\"step-forward-2\"></clr-icon>\n {{ 'order.transition-to-state' | translate: { state: (nextState | stateI18nToken | translate) } }}\n </ng-container>\n <ng-template #cancel>\n <clr-icon shape=\"error-standard\" class=\"is-error\"></clr-icon>\n {{ 'order.cancel-fulfillment' | translate }}\n </ng-template>\n </button>\n </ng-container>\n </vdr-dropdown-menu>\n </vdr-dropdown>\n </div>\n</div>\n","import { ChangeDetectionStrategy, Component, Input, OnChanges, OnInit } from '@angular/core';\nimport { OrderDetailFragment } from '@vendure/admin-ui/core';\n\n@Component({\n selector: 'vdr-modification-detail',\n templateUrl: './modification-detail.component.html',\n styleUrls: ['./modification-detail.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: false,\n})\nexport class ModificationDetailComponent implements OnChanges {\n @Input() order: OrderDetailFragment;\n @Input() modification: OrderDetailFragment['modifications'][number];\n private addedItems = new Map<OrderDetailFragment['lines'][number], number>();\n private removedItems = new Map<OrderDetailFragment['lines'][number], number>();\n private modifiedItems = new Set<OrderDetailFragment['lines'][number]>();\n\n ngOnChanges(): void {\n const { added, removed, modified } = this.getModifiedLines();\n this.addedItems = added;\n this.removedItems = removed;\n this.modifiedItems = modified;\n }\n\n getSurcharge(id: string) {\n return this.order.surcharges.find(m => m.id === id);\n }\n\n getAddedItems() {\n return [...this.addedItems.entries()].map(([line, count]) => ({\n name: line.productVariant.name,\n quantity: count,\n }));\n }\n\n getRemovedItems() {\n return [...this.removedItems.entries()].map(([line, count]) => ({\n name: line.productVariant.name,\n quantity: count,\n }));\n }\n\n getModifiedItems() {\n return [...this.modifiedItems].map(line => ({\n name: line.productVariant.name,\n }));\n }\n\n private getModifiedLines() {\n const added = new Map<OrderDetailFragment['lines'][number], number>();\n const removed = new Map<OrderDetailFragment['lines'][number], number>();\n const modified = new Set<OrderDetailFragment['lines'][number]>();\n for (const modificationLine of this.modification.lines || []) {\n const line = this.order.lines.find(l => l.id === modificationLine.orderLineId);\n if (!line) {\n continue;\n }\n if (modificationLine.quantity === 0) {\n modified.add(line);\n } else if (modificationLine.quantity < 0) {\n removed.set(line, -modificationLine.quantity);\n } else {\n added.set(line, modificationLine.quantity);\n }\n }\n return { added, removed, modified };\n }\n}\n","<vdr-labeled-data [label]=\"'common.ID' | translate\">{{ modification.id }}</vdr-labeled-data>\n<vdr-labeled-data *ngIf=\"modification.note\" [label]=\"'order.note' | translate\">{{\n modification.note\n}}</vdr-labeled-data>\n<vdr-labeled-data *ngFor=\"let surcharge of modification.surcharges\" [label]=\"'order.surcharges' | translate\">\n {{ getSurcharge(surcharge.id)?.description }}\n {{ getSurcharge(surcharge.id)?.priceWithTax | localeCurrency: order.currencyCode }}</vdr-labeled-data\n>\n<vdr-labeled-data *ngIf=\"getAddedItems().length\" [label]=\"'order.added-items' | translate\">\n <vdr-simple-item-list [items]=\"getAddedItems()\"></vdr-simple-item-list>\n</vdr-labeled-data>\n<vdr-labeled-data *ngIf=\"getRemovedItems().length\" [label]=\"'order.removed-items' | translate\">\n <vdr-simple-item-list [items]=\"getRemovedItems()\"></vdr-simple-item-list>\n</vdr-labeled-data>\n<vdr-labeled-data *ngIf=\"getModifiedItems().length\" [label]=\"'order.modified-items' | translate\">\n <vdr-simple-item-list [items]=\"getModifiedItems()\"></vdr-simple-item-list>\n</vdr-labeled-data>\n","export const NODE_HEIGHT = 72;\n","import {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n Input,\n OnChanges,\n SimpleChanges,\n} from '@angular/core';\nimport { BehaviorSubject } from 'rxjs';\n\nimport { NODE_HEIGHT } from './constants';\nimport { StateNode } from './types';\n\n@Component({\n selector: 'vdr-order-process-node',\n templateUrl: './order-process-node.component.html',\n styleUrls: ['./order-process-node.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: false,\n})\nexport class OrderProcessNodeComponent implements OnChanges {\n @Input() node: StateNode;\n @Input() index: number;\n @Input() active: boolean;\n active$ = new BehaviorSubject<boolean>(false);\n activeTarget$ = new BehaviorSubject<boolean>(false);\n isCancellable = false;\n // We use a class field here to prevent the\n // i18n extractor from extracting a \"Cancelled\" key\n cancelledState = 'Cancelled';\n\n constructor(private elementRef: ElementRef<HTMLDivElement>) {}\n\n ngOnChanges(changes: SimpleChanges) {\n this.isCancellable = !!this.node.to.find(s => s.name === 'Cancelled');\n if (changes.active) {\n this.active$.next(this.active);\n }\n }\n\n getPos(origin: 'top' | 'bottom' = 'top'): { x: number; y: number } {\n const rect = this.elementRef.nativeElement.getBoundingClientRect();\n const nodeHeight =\n this.elementRef.nativeElement.querySelector('.node')?.getBoundingClientRect().height ?? 0;\n return {\n x: 10,\n y: this.index * NODE_HEIGHT + (origin === 'bottom' ? nodeHeight : 0),\n };\n }\n\n getStyle() {\n const pos = this.getPos();\n return {\n 'top.px': pos.y,\n 'left.px': pos.x,\n };\n }\n}\n","<div class=\"node-wrapper\" [ngStyle]=\"getStyle()\" [class.active]=\"active$ | async\">\n <div\n class=\"node\"\n [class.active-target]=\"activeTarget$ | async\"\n >\n {{ node.name | stateI18nToken | translate }}\n </div>\n <div class=\"cancelled-wrapper\" *ngIf=\"isCancellable\">\n <div class=\"cancelled-edge\">\n </div>\n <clr-icon shape=\"dot-circle\"></clr-icon>\n <div class=\"cancelled-node\">\n {{ cancelledState | stateI18nToken | translate }}\n </div>\n </div>\n</div>\n","import { ChangeDetectionStrategy, Component, Input, OnInit } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { tap } from 'rxjs/operators';\n\nimport { OrderProcessNodeComponent } from './order-process-node.component';\n\n@Component({\n selector: 'vdr-order-process-edge',\n templateUrl: './order-process-edge.component.html',\n styleUrls: ['./order-process-edge.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: false,\n})\nexport class OrderProcessEdgeComponent implements OnInit {\n @Input() from: OrderProcessNodeComponent;\n @Input() to: OrderProcessNodeComponent;\n @Input() index: number;\n active$: Observable<boolean>;\n\n ngOnInit() {\n this.active$ = this.from.active$\n .asObservable()\n .pipe(tap(active => this.to.activeTarget$.next(active)));\n }\n\n getStyle() {\n const direction = this.from.index < this.to.index ? 'down' : 'up';\n const startPos = this.from.getPos(direction === 'down' ? 'bottom' : 'top');\n const endPos = this.to.getPos(direction === 'down' ? 'top' : 'bottom');\n const dX = Math.abs(startPos.x - endPos.x);\n const dY = Math.abs(startPos.y - endPos.y);\n const length = Math.sqrt(dX ** 2 + dY ** 2);\n return {\n 'top.px': startPos.y,\n 'left.px': startPos.x + (direction === 'down' ? 10 : 40) + this.index * 12,\n 'height.px': length,\n 'width.px': 1,\n ...(direction === 'up'\n ? {\n transform: 'rotateZ(180deg)',\n 'transform-origin': 'top',\n }\n : {}),\n };\n }\n}\n","<div\n [attr.data-from]=\"from.node.name\"\n [attr.data-to]=\"to.node.name\"\n [ngStyle]=\"getStyle()\"\n [class.active]=\"active$ | async\"\n class=\"edge\">\n <clr-icon shape=\"arrow\" flip=\"vertical\" class=\"arrow\"></clr-icon>\n</div>\n","import {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n HostBinding,\n Input,\n OnChanges,\n OnInit,\n QueryList,\n SimpleChanges,\n ViewChildren,\n} from '@angular/core';\nimport { OrderProcessState } from '@vendure/admin-ui/core';\nimport { BehaviorSubject, Observable } from 'rxjs';\nimport { debounceTime } from 'rxjs/operators';\n\nimport { NODE_HEIGHT } from './constants';\nimport { OrderProcessNodeComponent } from './order-process-node.component';\nimport { StateNode } from './types';\n\n@Component({\n selector: 'vdr-order-process-graph',\n templateUrl: './order-process-graph.component.html',\n styleUrls: ['./order-process-graph.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: false,\n})\nexport class OrderProcessGraphComponent implements OnInit, OnChanges, AfterViewInit {\n @Input() states: OrderProcessState[];\n @Input() initialState?: string;\n setActiveState$ = new BehaviorSubject<string | undefined>(undefined);\n activeState$: Observable<string | undefined>;\n nodes: StateNode[] = [];\n edges: Array<{ from: OrderProcessNodeComponent; to: OrderProcessNodeComponent; index: number }> = [];\n\n @ViewChildren(OrderProcessNodeComponent) nodeComponents: QueryList<OrderProcessNodeComponent>;\n\n constructor(private changeDetector: ChangeDetectorRef) {}\n\n @HostBinding('style.height.px')\n get outerHeight(): number {\n return this.nodes.length * NODE_HEIGHT;\n }\n\n ngOnInit() {\n this.setActiveState$.next(this.initialState);\n this.activeState$ = this.setActiveState$.pipe(debounceTime(150));\n }\n\n ngOnChanges(changes: SimpleChanges) {\n this.populateNodes();\n }\n\n ngAfterViewInit() {\n setTimeout(() => this.populateEdges());\n }\n\n onMouseOver(stateName: string) {\n this.setActiveState$.next(stateName);\n }\n\n onMouseOut() {\n this.setActiveState$.next(this.initialState);\n }\n\n getNodeFor(state: string): OrderProcessNodeComponent | undefined {\n if (this.nodeComponents) {\n return this.nodeComponents.find(n => n.node.name === state);\n }\n }\n\n private populateNodes() {\n const stateNodeMap = new Map<string, StateNode>();\n for (const state of this.states) {\n stateNodeMap.set(state.name, {\n name: state.name,\n to: [],\n });\n }\n\n for (const [name, stateNode] of stateNodeMap.entries()) {\n const targets = this.states.find(s => s.name === name)?.to ?? [];\n for (const target of targets) {\n const targetNode = stateNodeMap.get(target);\n if (targetNode) {\n stateNode.to.push(targetNode);\n }\n }\n }\n this.nodes = [...stateNodeMap.values()].filter(n => n.name !== 'Cancelled');\n }\n\n private populateEdges() {\n for (const node of this.nodes) {\n const nodeCmp = this.getNodeFor(node.name);\n let index = 0;\n for (const to of node.to) {\n const toCmp = this.getNodeFor(to.name);\n if (nodeCmp && toCmp && nodeCmp !== toCmp) {\n this.edges.push({\n to: toCmp,\n from: nodeCmp,\n index,\n });\n index++;\n }\n }\n }\n this.edges = [...this.edges];\n this.changeDetector.markForCheck();\n }\n}\n","<ng-container *ngFor=\"let state of nodes; let i = index\">\n <vdr-order-process-node\n [node]=\"state\"\n [index]=\"i\"\n [active]=\"(activeState$ | async) === state.name\"\n (mouseenter)=\"onMouseOver(state.name)\"\n (mouseleave)=\"onMouseOut()\"\n ></vdr-order-process-node>\n</ng-container>\n<ng-container *ngFor=\"let edge of edges\">\n <vdr-order-process-edge [from]=\"edge.from\" [to]=\"edge.to\" [index]=\"edge.index\"></vdr-order-process-edge>\n</ng-container>\n","import { ChangeDetectionStrategy, Component, OnInit } from '@angular/core';\nimport {\n CancelOrderInput,\n DataService,\n Dialog,\n OrderProcessState,\n ServerConfigService,\n} from '@vendure/admin-ui/core';\nimport { Observable } from 'rxjs';\n\n@Component({\n selector: 'vdr-order-process-graph-dialog',\n templateUrl: './order-process-graph-dialog.component.html',\n styleUrls: ['./order-process-graph-dialog.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: false,\n})\nexport class OrderProcessGraphDialogComponent implements OnInit, Dialog<void> {\n activeState: string;\n states: OrderProcessState[] = [];\n constructor(private serverConfigService: ServerConfigService) {}\n\n ngOnInit(): void {\n this.states = this.serverConfigService.getOrderProcessStates();\n }\n\n resolveWith: (result: void | undefined) => void;\n}\n","<ng-template vdrDialogTitle>{{ 'order.order-state-diagram' | translate }}</ng-template>\n\n<vdr-order-process-graph [states]=\"states\" [initialState]=\"activeState\"></vdr-order-process-graph>\n","import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from '@angular/core';\nimport { OrderDetailFragment } from '@vendure/admin-ui/core';\nimport { RefundablePayment } from '../../common/get-refundable-payments';\n\n@Component({\n selector: 'vdr-payment-for-refund-selector',\n templateUrl: './payment-for-refund-selector.component.html',\n styleUrls: ['./payment-for-refund-selector.component.scss'],\n changeDetection: ChangeDetectionStrategy.Default,\n standalone: false\n})\nexport class PaymentForRefundSelectorComponent {\n @Input() refundablePayments: RefundablePayment[];\n @Input() order: OrderDetailFragment;\n @Output() paymentSelected = new EventEmitter<{ payment: RefundablePayment; selected: boolean }>();\n}\n","<vdr-card\n [title]=\"'order.payment' | translate\"\n [class.selected]=\"payment.selected\"\n [class.unselected]=\"!payment.selected\"\n *ngFor=\"let payment of refundablePayments\"\n>\n <ng-template vdrCardControls>\n <vdr-select-toggle\n size=\"small\"\n [title]=\"'order.refund-this-payment' | translate\"\n [label]=\"'order.refund-this-payment' | translate\"\n [disabled]=\"refundablePayments.length === 1\"\n [(selected)]=\"payment.selected\"\n (selectedChange)=\"paymentSelected.emit({ payment: payment, selected: $event })\"\n ></vdr-select-toggle>\n </ng-template>\n <div class=\"form-grid\">\n <vdr-labeled-data [label]=\"'order.payment-method' | translate\">\n {{ payment.method }}\n </vdr-labeled-data>\n <vdr-labeled-data [label]=\"'order.transaction-id' | translate\">\n {{ payment.transactionId }}\n </vdr-labeled-data>\n <vdr-labeled-data [label]=\"'order.payment-amount' | translate\">\n {{ payment.amount | localeCurrency : order.currencyCode }}\n </vdr-labeled-data>\n <vdr-labeled-data [label]=\"'order.refundable-amount' | translate\">\n {{ payment.refundableAmount | localeCurrency : order.currencyCode }}\n </vdr-labeled-data>\n </div>\n <vdr-form-field [label]=\"'order.refund-amount' | translate\">\n <vdr-currency-input\n [readonly]=\"!payment.selected\"\n [currencyCode]=\"order.currencyCode\"\n [formControl]=\"payment.amountToRefundControl\"\n ></vdr-currency-input>\n </vdr-form-field>\n</vdr-card>","import { ChangeDetectionStrategy, Component, OnInit } from '@angular/core';\nimport { FormControl, Validators } from '@angular/forms';\nimport { marker as _ } from '@biesbjerg/ngx-translate-extract-marker';\nimport {\n CancelOrderInput,\n Dialog,\n getAppConfig,\n I18nService,\n OrderDetailFragment,\n OrderLineInput,\n PaymentWithRefundsFragment,\n RefundOrderInput,\n} from '@vendure/admin-ui/core';\nimport { summate } from '@vendure/common/lib/shared-utils';\nimport { getRefundablePayments, RefundablePayment } from '../../common/get-refundable-payments';\n\ntype SelectionLine = { quantity: number; cancel: boolean };\n\n@Component({\n selector: 'vdr-refund-order-dialog',\n templateUrl: './refund-order-dialog.component.html',\n styleUrls: ['./refund-order-dialog.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: false\n})\nexport class RefundOrderDialogComponent\n implements OnInit, Dialog<{ cancel: CancelOrderInput; refunds: RefundOrderInput[] }>\n{\n order: OrderDetailFragment;\n resolveWith: (result?: { cancel: CancelOrderInput; refunds: RefundOrderInput[] }) => void;\n reason: string;\n lineQuantities: { [lineId: string]: SelectionLine } = {};\n refundablePayments: RefundablePayment[] = [];\n refundShippingLineIds: string[] = [];\n reasons = getAppConfig().cancellationReasons ?? [\n _('order.refund-reason-customer-request'),\n _('order.refund-reason-not-available'),\n ];\n manuallySetRefundTotal = false;\n refundTotal = 0;\n\n constructor(private i18nService: I18nService) {\n this.reasons = this.reasons.map(r => this.i18nService.translate(r));\n }\n\n get totalRefundableAmount(): number {\n return summate(this.refundablePayments, 'refundableAmount');\n }\n\n get amountToRefundTotal(): number {\n return this.refundablePayments.reduce(\n (total, payment) => total + payment.amountToRefundControl.value,\n 0,\n );\n }\n\n lineCanBeRefundedOrCancelled(line: OrderDetailFragment['lines'][number]): boolean {\n const refundedCount =\n this.order.payments\n ?.reduce(\n (all, payment) => [...all, ...payment.refunds],\n [] as PaymentWithRefundsFragment['refunds'],\n )\n .filter(refund => refund.state !== 'Failed')\n .reduce(\n (all, refund) => [...all, ...refund.lines],\n [] as Array<{ orderLineId: string; quantity: number }>,\n )\n .filter(refundLine => refundLine.orderLineId === line.id)\n .reduce((sum, refundLine) => sum + refundLine.quantity, 0) ?? 0;\n\n return refundedCount < line.orderPlacedQuantity;\n }\n\n ngOnInit() {\n this.lineQuantities = this.order.lines.reduce(\n (result, line) => ({\n ...result,\n [line.id]: {\n quantity: 0,\n refund: true,\n cancel: false,\n },\n }),\n {},\n );\n this.refundablePayments = getRefundablePayments(this.order.payments);\n }\n\n updateRefundTotal() {\n if (!this.manuallySetRefundTotal) {\n const itemTotal = this.order.lines.reduce((total, line) => {\n const lineRef = this.lineQuantities[line.id];\n const refundCount = lineRef.quantity || 0;\n return total + line.proratedUnitPriceWithTax * refundCount;\n }, 0);\n const shippingTotal = this.order.shippingLines.reduce((total, line) => {\n if (this.refundShippingLineIds.includes(line.id)) {\n return total + line.discountedPriceWithTax;\n } else {\n return total;\n }\n }, 0);\n this.refundTotal = itemTotal + shippingTotal;\n }\n\n // allocate the refund total across the refundable payments\n const refundablePayments = this.refundablePayments.filter(p => p.selected);\n let refundsAllocated = 0;\n for (const payment of refundablePayments) {\n const amountToRefund = Math.min(payment.refundableAmount, this.refundTotal - refundsAllocated);\n payment.amountToRefundControl.setValue(amountToRefund);\n refundsAllocated += amountToRefund;\n }\n }\n\n toggleShippingRefund(lineId: string) {\n const index = this.refundShippingLineIds.indexOf(lineId);\n if (index === -1) {\n this.refundShippingLineIds.push(lineId);\n } else {\n this.refundShippingLineIds.splice(index, 1);\n }\n this.updateRefundTotal();\n }\n\n onRefundQuantityChange(orderLineId: string, quantity: number) {\n this.manuallySetRefundTotal = false;\n const selectionLine = this.lineQuantities[orderLineId];\n if (selectionLine) {\n const previousQuantity = selectionLine.quantity;\n if (quantity === 0) {\n selectionLine.cancel = false;\n } else if (previousQuantity === 0 && quantity > 0) {\n selectionLine.cancel = true;\n }\n selectionLine.quantity = quantity;\n this.updateRefundTotal();\n }\n }\n\n onPaymentSelected(payment: RefundablePayment, selected: boolean) {\n if (selected) {\n const outstandingRefundAmount =\n this.refundTotal -\n this.refundablePayments\n .filter(p => p.id !== payment.id)\n .reduce((total, p) => total + p.amountToRefundControl.value, 0);\n if (0 < outstandingRefundAmount) {\n payment.amountToRefundControl.setValue(\n Math.min(outstandingRefundAmount, payment.refundableAmount),\n );\n }\n } else {\n payment.amountToRefundControl.setValue(0);\n }\n }\n\n isRefunding(): boolean {\n const result = Object.values(this.lineQuantities).reduce(\n (isRefunding, line) => isRefunding || 0 < line.quantity,\n false,\n );\n return result;\n }\n\n isCancelling(): boolean {\n const result = Object.values(this.lineQuantities).reduce(\n (isCancelling, line) => isCancelling || (0 < line.quantity && line.cancel),\n false,\n );\n return result;\n }\n\n canSubmit(): boolean {\n return 0 < this.refundTotal && this.amountToRefundTotal === this.refundTotal && !!this.reason;\n }\n\n select() {\n const refundLines = this.getOrderLineInput(() => true);\n const cancelLines = this.getOrderLineInput(line => line.cancel);\n\n this.resolveWith({\n refunds: this.refundablePayments\n .filter(rp => rp.selected && 0 < rp.amountToRefundControl.value)\n .map(payment => {\n return {\n lines: refundLines,\n reason: this.reason,\n paymentId: payment.id,\n amount: payment.amountToRefundControl.value,\n shipping: 0,\n adjustment: 0,\n };\n }),\n cancel: {\n lines: cancelLines,\n orderId: this.order.id,\n reason: this.reason,\n cancelShipping: this.refundShippingLineIds.length > 0,\n },\n });\n }\n\n cancel() {\n this.resolveWith();\n }\n\n private getOrderLineInput(filterFn: (line: SelectionLine) => boolean): OrderLineInput[] {\n return Object.entries(this.lineQuantities)\n .filter(([orderLineId, line]) => 0 < line.quantity && filterFn(line))\n .map(([orderLineId, line]) => ({\n orderLineId,\n quantity: line.quantity,\n }));\n }\n}\n","<ng-template vdrDialogTitle>{{ 'order.refund-and-cancel-order' | translate }}</ng-template>\n\n<div class=\"refund-wrapper\">\n <vdr-data-table-2 id=\"refund-order\" [items]=\"order.lines\">\n <!-- Here we define all the available columns -->\n <vdr-dt2-column id=\"id\" [heading]=\"'common.id' | translate\" [hiddenByDefault]=\"true\">\n <ng-template let-line=\"item\">\n {{ line.id }}\n </ng-template>\n </vdr-dt2-column>\n <vdr-dt2-column id=\"created-at\" [heading]=\"'common.created-at' | translate\" [hiddenByDefault]=\"true\">\n <ng-template let-line=\"item\">\n {{ line.createdAt | localeDate : 'short' }}\n </ng-template>\n </vdr-dt2-column>\n <vdr-dt2-column id=\"updated-at\" [heading]=\"'common.updated-at' | translate\" [hiddenByDefault]=\"true\">\n <ng-template let-line=\"item\">\n {{ line.updatedAt | localeDate : 'short' }}\n </ng-template>\n </vdr-dt2-column>\n <vdr-dt2-column [heading]=\"'common.image' | translate\" id=\"image\">\n <ng-template let-line=\"item\">\n <div class=\"image-placeholder\">\n <img\n *ngIf=\"line.featuredAsset as asset; else imagePlaceholder\"\n [src]=\"asset | assetPreview : 'tiny'\"\n />\n <ng-template #imagePlaceholder>\n <div class=\"placeholder\">\n <clr-icon shape=\"image\" size=\"48\"></clr-icon>\n </div>\n </ng-template>\n </div>\n </ng-template>\n </vdr-dt2-column>\n <vdr-dt2-column id=\"product-name\" [heading]=\"'order.product-name' | translate\" [optional]=\"false\">\n <ng-template let-line=\"item\">\n {{ line.productVariant.name }}\n </ng-template>\n </vdr-dt2-column>\n <vdr-dt2-column id=\"product-sku\" [heading]=\"'order.product-sku' | translate\">\n <ng-template let-line=\"item\">\n {{ line.productVariant.sku }}\n </ng-template>\n </vdr-dt2-column>\n <vdr-dt2-column id=\"unit-price\" [heading]=\"'order.unit-price' | translate\" [hiddenByDefault]=\"true\">\n <ng-template let-line=\"item\">\n {{ line.unitPriceWithTax | localeCurrency : order.currencyCode }}\n </ng-template>\n </vdr-dt2-column>\n <vdr-dt2-column id=\"prorated-unit-price\" [heading]=\"'order.prorated-unit-price' | translate\">\n <ng-template let-line=\"item\">\n {{ line.proratedUnitPriceWithTax | localeCurrency : order.currencyCode }}\n <ng-container *ngIf=\"line.discounts as discounts\">\n <vdr-dropdown *ngIf=\"discounts.length\">\n <div class=\"promotions-label\" vdrDropdownTrigger>\n <button class=\"icon-button\"><clr-icon shape=\"info\"></clr-icon></button>\n </div>\n <vdr-dropdown-menu>\n <div class=\"line-promotion\" *ngFor=\"let discount of discounts\">\n {{ discount.description }}\n <div class=\"promotion-amount\">\n {{\n discount.amount / 100 / line.quantity\n | number : '1.0-2'\n | currency : order.currencyCode\n }}\n </div>\n </div>\n </vdr-dropdown-menu>\n </vdr-dropdown>\n </ng-container>\n </ng-template>\n </vdr-dt2-column>\n <vdr-dt2-column id=\"quantity\" [heading]=\"'order.quantity' | translate\">\n <ng-template let-line=\"item\">\n {{ line.quantity }}\n <vdr-line-refunds [line]=\"line\" [payments]=\"order.payments\"></vdr-line-refunds>\n </ng-template>\n </vdr-dt2-column>\n <vdr-dt2-column id=\"refund-quantity\" [heading]=\"'order.refund' | translate\" [optional]=\"false\">\n <ng-template let-line=\"item\">\n <input\n *ngIf=\"lineCanBeRefundedOrCancelled(line)\"\n [ngModel]=\"lineQuantities[line.id].quantity\"\n type=\"number\"\n [max]=\"line.quantity\"\n min=\"0\"\n (ngModelChange)=\"onRefundQuantityChange(line.id, $event)\"\n />\n </ng-template>\n </vdr-dt2-column>\n <vdr-dt2-column id=\"cancel\" [heading]=\"'order.return-to-stock' | translate\" [optional]=\"false\">\n <ng-template let-line=\"item\">\n <div class=\"cancel-checkbox-wrapper\">\n <label class=\"flex center\">\n <input\n type=\"checkbox\"\n *ngIf=\"lineCanBeRefundedOrCancelled(line)\"\n clrCheckbox\n [disabled]=\"0 === lineQuantities[line.id].quantity\"\n [(ngModel)]=\"lineQuantities[line.id].cancel\"\n />\n <span class=\"ml-1\">{{ 'order.return-to-stock' | translate }}</span></label\n >\n </div>\n </ng-template>\n </vdr-dt2-column>\n </vdr-data-table-2>\n\n <div class=\"refund-details mt-4\">\n <div>\n <vdr-card>\n <label class=\"flex mb-2\" *ngFor=\"let shippingLine of order.shippingLines\">\n <input type=\"checkbox\" clrCheckbox (change)=\"toggleShippingRefund(shippingLine.id)\" />\n <div class=\"ml-1\">\n {{ 'order.refund-shipping' | translate }}\n <span>{{ shippingLine.shippingMethod.name }}:</span>\n <span class=\"ml-1\"\n >{{ shippingLine.discountedPriceWithTax | localeCurrency : order.currencyCode }}\n </span>\n </div></label\n >\n <vdr-form-field [label]=\"'order.refund-cancellation-reason' | translate\" class=\"mb-2\">\n <ng-select\n [items]=\"reasons\"\n bindLabel=\"name\"\n autofocus\n [placeholder]=\"'order.refund-cancellation-reason-required' | translate\"\n bindValue=\"id\"\n [addTag]=\"true\"\n [(ngModel)]=\"reason\"\n ></ng-select>\n </vdr-form-field>\n <vdr-form-field\n [label]=\"'order.refund-total' | translate\"\n [readOnlyToggle]=\"true\"\n (readOnlyToggleChange)=\"manuallySetRefundTotal = !$event\"\n >\n <vdr-currency-input\n [readonly]=\"!manuallySetRefundTotal\"\n [currencyCode]=\"order.currencyCode\"\n [(ngModel)]=\"refundTotal\"\n (ngModelChange)=\"updateRefundTotal()\"\n ></vdr-currency-input>\n </vdr-form-field>\n </vdr-card>\n </div>\n <div class=\"\">\n <vdr-payment-for-refund-selector\n [refundablePayments]=\"refundablePayments\"\n (paymentSelected)=\"onPaymentSelected($event.payment, $event.selected)\"\n [order]=\"order\"\n ></vdr-payment-for-refund-selector>\n </div>\n </div>\n</div>\n\n<ng-template vdrDialogButtons>\n <div>\n <div class=\"errors\">\n <clr-alert\n *ngIf=\"refundTotal < 0 || totalRefundableAmount < refundTotal\"\n [clrAlertType]=\"'danger'\"\n [clrAlertClosable]=\"false\"\n >\n <clr-alert-item>\n {{\n 'order.refund-total-error'\n | translate\n : {\n min: 0 | currency : order.currencyCode,\n max: totalRefundableAmount | localeCurrency : order.currencyCode\n }\n }}\n </clr-alert-item>\n </clr-alert>\n <clr-alert\n *ngIf=\"amountToRefundTotal < refundTotal || refundTotal < amountToRefundTotal\"\n [clrAlertType]=\"'danger'\"\n [clrAlertClosable]=\"false\"\n >\n <clr-alert-item>\n {{ 'order.refund-total-warning' | translate }}\n </clr-alert-item>\n </clr-alert>\n <clr-alert\n *ngIf=\"amountToRefundTotal && !reason\"\n [clrAlertType]=\"'danger'\"\n [clrAlertClosable]=\"false\"\n >\n <clr-alert-item>\n {{ 'order.refund-cancellation-reason-required' | translate }}\n </clr-alert-item>\n </clr-alert>\n </div>\n <div class=\"modal-buttons\">\n <button type=\"button\" class=\"btn\" (click)=\"cancel()\">{{ 'common.cancel' | translate }}</button>\n <button type=\"submit\" (click)=\"select()\" [disabled]=\"!canSubmit()\" class=\"btn btn-primary\">\n {{\n 'order.refund-with-amount'\n | translate : { amount: amountToRefundTotal | localeCurrency : order.currencyCode }\n }}\n </button>\n </div>\n </div>\n</ng-template>\n","import { ChangeDetectionStrategy, Component } from '@angular/core';\nimport { Dialog, OrderDetailFragment } from '@vendure/admin-ui/core';\n\n@Component({\n selector: 'vdr-settle-refund-dialog',\n templateUrl: './settle-refund-dialog.component.html',\n styleUrls: ['./settle-refund-dialog.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: false\n})\nexport class SettleRefundDialogComponent implements Dialog<string> {\n resolveWith: (result?: string) => void;\n transactionId = '';\n refund: NonNullable<OrderDetailFragment['payments']>[number]['refunds'][number];\n\n submit() {\n this.resolveWith(this.transactionId);\n }\n\n cancel() {\n this.resolveWith();\n }\n}\n","<ng-template vdrDialogTitle>{{ 'order.settle-refund' | translate }}</ng-template>\n<p class=\"instruction\">\n {{ 'order.settle-refund-manual-instructions' | translate: { method: refund.method } }}\n</p>\n<clr-input-container>\n <label>{{ 'order.transaction-id' | translate }}</label>\n <input clrInput name=\"transactionId\" [(ngModel)]=\"transactionId\" />\n</clr-input-container>\n\n<ng-template vdrDialogButtons>\n <button type=\"button\" class=\"btn\" (click)=\"cancel()\">{{ 'common.cancel' | translate }}</button>\n <button type=\"submit\" (click)=\"submit()\" [disabled]=\"!transactionId\" class=\"btn btn-primary\">\n {{ 'order.settle-refund' | translate }}\n </button>\n</ng-template>\n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\n\n@Component({\n selector: 'vdr-payment-state-label',\n templateUrl: './payment-state-label.component.html',\n styleUrls: ['./payment-state-label.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: false\n})\nexport class PaymentStateLabelComponent {\n @Input() state: string;\n\n get chipColorType() {\n switch (this.state) {\n case 'Authorized':\n return 'warning';\n case 'Settled':\n return 'success';\n case 'Declined':\n case 'Cancelled':\n return 'error';\n }\n }\n}\n","<vdr-chip [title]=\"'order.payment-state' | translate\" [colorType]=\"chipColorType\">\n <clr-icon shape=\"check-circle\" *ngIf=\"state === 'Settled'\"></clr-icon>\n {{ state | stateI18nToken | translate }}\n</vdr-chip>\n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\n\n@Component({\n selector: 'vdr-refund-state-label',\n templateUrl: './refund-state-label.component.html',\n styleUrls: ['./refund-state-label.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: false\n})\nexport class RefundStateLabelComponent {\n @Input() state: string;\n\n get chipColorType() {\n switch (this.state) {\n case 'Pending':\n return 'warning';\n case 'Settled':\n return 'success';\n case 'Failed':\n return 'error';\n }\n }\n}\n","<vdr-chip [title]=\"'order.payment-state' | translate\" [colorType]=\"chipColorType\">\n <clr-icon shape=\"check-circle\" *ngIf=\"state === 'Settled'\"></clr-icon>\n {{ state | stateI18nToken | translate }}\n</vdr-chip>\n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\nimport { CurrencyCode, OrderDetailFragment } from '@vendure/admin-ui/core';\n\n@Component({\n selector: 'vdr-payment-detail',\n templateUrl: './payment-detail.component.html',\n styleUrls: ['./payment-detail.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: false\n})\nexport class PaymentDetailComponent {\n @Input() payment: NonNullable<OrderDetailFragment['payments']>[number];\n @Input() currencyCode: CurrencyCode;\n}\n","<vdr-labeled-data [label]=\"'order.payment-method' | translate\">\n {{ payment.method }}\n</vdr-labeled-data>\n<vdr-labeled-data [label]=\"'order.amount' | translate\">\n {{ payment.amount | localeCurrency: currencyCode }}\n</vdr-labeled-data>\n<vdr-labeled-data *ngIf=\"payment.errorMessage\" [label]=\"'order.error-message' | translate\">\n {{ payment.errorMessage }}\n</vdr-labeled-data>\n<vdr-labeled-data *ngIf=\"payment.transactionId\" [label]=\"'order.transaction-id' | translate\">\n {{ payment.transactionId }}\n</vdr-labeled-data>\n<vdr-labeled-data [label]=\"'order.payment-metadata' | translate\">\n <vdr-object-tree [value]=\"payment.metadata\"></vdr-object-tree>\n</vdr-labeled-data>\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 standalone: false,\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","<div class=\"card\">\n <div class=\"card-header payment-header\">\n <div>\n {{ 'order.payment' | translate }}\n <ng-container *ngIf=\"payment.amount\">{{ payment.amount | localeCurrency : currencyCode }}</ng-container>\n </div>\n <div class=\"payment-state\">\n <vdr-payment-state-label [state]=\"payment.state\"></vdr-payment-state-label>\n </div>\n </div>\n <div class=\"card-block\">\n <vdr-payment-detail [payment]=\"payment\" [currencyCode]=\"currencyCode\"></vdr-payment-detail>\n </div>\n <ng-container *ngFor=\"let refund of payment.refunds\">\n <div class=\"refund-wrapper card-block\">\n <div class=\"card-header payment-header refund-header\">\n <clr-icon shape=\"redo\" class=\"refund-icon\" dir=\"down\"></clr-icon>\n {{ 'order.refund' | translate }} #{{ refund.id }}\n <div class=\"clr-flex-fill\"></div>\n <vdr-refund-state-label [state]=\"refund.state\"></vdr-refund-state-label>\n </div>\n <div class=\"card-block\">\n <vdr-labeled-data [label]=\"'common.created-at' | translate\">\n {{ refund.createdAt | localeDate : 'medium' }}\n </vdr-labeled-data>\n <vdr-labeled-data [label]=\"'order.refund-total' | translate\">\n {{ refund.total | localeCurrency : currencyCode }}\n </vdr-labeled-data>\n <vdr-labeled-data [label]=\"'order.transaction-id' | translate\" *ngIf=\"refund.transactionId\">\n {{ refund.transactionId }}\n </vdr-labeled-data>\n <vdr-labeled-data [label]=\"'order.refund-reason' | translate\" *ngIf=\"refund.reason\">\n {{ refund.reason }}\n </vdr-labeled-data>\n <vdr-labeled-data\n [label]=\"'order.refund-metadata' | translate\"\n *ngIf=\"refundHasMetadata(refund)\"\n >\n <vdr-object-tree [value]=\"refund.metadata\"></vdr-object-tree>\n </vdr-labeled-data>\n </div>\n <div class=\"card-footer\" *ngIf=\"refund.state === 'Pending'\">\n <button class=\"btn btn-sm btn-primary\" (click)=\"settleRefund.emit(refund)\">\n {{ 'order.settle-refund' | translate }}\n </button>\n </div>\n </div>\n </ng-container>\n <div class=\"card-footer\" *ngIf=\"payment.nextStates.length\">\n <button\n class=\"btn btn-sm btn-primary\"\n *ngIf=\"payment.nextStates.includes('Settled')\"\n (click)=\"settlePayment.emit(payment)\"\n >\n {{ 'order.settle-payment' | translate }}\n </button>\n <vdr-dropdown>\n <button class=\"icon-button\" vdrDropdownTrigger>\n <clr-icon shape=\"ellipsis-vertical\"></clr-icon>\n </button>\n <vdr-dropdown-menu vdrPosition=\"bottom-right\">\n <ng-container *ngFor=\"let nextState of nextOtherStates()\">\n <button\n type=\"button\"\n vdrDropdownItem\n (click)=\"transitionPaymentState.emit({ payment: payment, state: nextState })\"\n >\n <ng-container *ngIf=\"nextState !== 'Cancelled'; else cancel\">\n <clr-icon shape=\"step-forward-2\"></clr-icon>\n {{\n 'order.transition-to-state'\n | translate : { state: (nextState | stateI18nToken | translate) }\n }}\n </ng-container>\n <ng-template #cancel>\n <clr-icon shape=\"error-standard\" class=\"is-error\"></clr-icon>\n {{ 'order.cancel-payment' | translate }}\n </ng-template>\n </button>\n </ng-container>\n </vdr-dropdown-menu>\n </vdr-dropdown>\n </div>\n</div>\n","import {\n Component,\n ComponentRef,\n EventEmitter,\n Input,\n OnDestroy,\n OnInit,\n Output,\n Type,\n ViewChild,\n ViewContainerRef,\n} from '@angular/core';\nimport {\n HistoryEntryComponentService,\n OrderDetailFragment,\n OrderHistoryEntryComponent,\n TimelineHistoryEntry,\n} from '@vendure/admin-ui/core';\n\n@Component({\n selector: 'vdr-order-history-entry-host',\n template: `\n <vdr-timeline-entry\n [displayType]=\"instance.getDisplayType(entry)\"\n [iconShape]=\"instance.getIconShape && instance.getIconShape(entry)\"\n [createdAt]=\"entry.createdAt\"\n [name]=\"instance.getName && instance.getName(entry)\"\n [featured]=\"instance.isFeatured(entry)\"\n [collapsed]=\"!expanded && !instance.isFeatured(entry)\"\n (expandClick)=\"expandClick.emit()\"\n >\n <div #portal></div>\n </vdr-timeline-entry>\n `,\n exportAs: 'historyEntry',\n standalone: false,\n})\nexport class OrderHistoryEntryHostComponent implements OnInit, OnDestroy {\n @Input() entry: TimelineHistoryEntry;\n @Input() order: OrderDetailFragment;\n @Input() expanded: boolean;\n @Output() expandClick = new EventEmitter<void>();\n @ViewChild('portal', { static: true, read: ViewContainerRef }) portalRef: ViewContainerRef;\n instance: OrderHistoryEntryComponent;\n private componentRef: ComponentRef<OrderHistoryEntryComponent>;\n\n constructor(private historyEntryComponentService: HistoryEntryComponentService) {}\n\n ngOnInit(): void {\n const componentType = this.historyEntryComponentService.getComponent(\n this.entry.type,\n ) as Type<OrderHistoryEntryComponent>;\n\n const componentRef = this.portalRef.createComponent(componentType);\n componentRef.instance.entry = this.entry;\n componentRef.instance.order = this.order;\n this.instance = componentRef.instance;\n this.componentRef = componentRef;\n }\n\n ngOnDestroy() {\n this.componentRef?.destroy();\n }\n}\n","import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from '@angular/core';\nimport {\n HistoryEntryComponentService,\n HistoryEntryType,\n OrderDetailFragment,\n TimelineDisplayType,\n TimelineHistoryEntry,\n} from '@vendure/admin-ui/core';\n\n@Component({\n selector: 'vdr-order-history',\n templateUrl: './order-history.component.html',\n styleUrls: ['./order-history.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: false,\n})\nexport class OrderHistoryComponent {\n @Input() order: OrderDetailFragment;\n @Input() history: TimelineHistoryEntry[];\n @Output() addNote = new EventEmitter<{ note: string; isPublic: boolean }>();\n @Output() updateNote = new EventEmitter<TimelineHistoryEntry>();\n @Output() deleteNote = new EventEmitter<TimelineHistoryEntry>();\n note = '';\n noteIsPrivate = true;\n expanded = false;\n readonly type = HistoryEntryType;\n\n constructor(private historyEntryComponentService: HistoryEntryComponentService) {}\n\n hasCustomComponent(type: string): boolean {\n return !!this.historyEntryComponentService.getComponent(type);\n }\n\n getDisplayType(entry: TimelineHistoryEntry): TimelineDisplayType {\n if (entry.type === HistoryEntryType.ORDER_STATE_TRANSITION) {\n if (entry.data.to === 'Delivered') {\n return 'success';\n }\n if (entry.data.to === 'Cancelled') {\n return 'error';\n }\n }\n if (entry.type === HistoryEntryType.ORDER_FULFILLMENT_TRANSITION) {\n if (entry.data.to === 'Delivered') {\n return 'success';\n }\n }\n if (entry.type === HistoryEntryType.ORDER_PAYMENT_TRANSITION) {\n if (entry.data.to === 'Declined' || entry.data.to === 'Cancelled') {\n return 'error';\n }\n }\n if (entry.type === HistoryEntryType.ORDER_CANCELLATION) {\n return 'warning';\n }\n if (entry.type === HistoryEntryType.ORDER_REFUND_TRANSITION) {\n return 'warning';\n }\n return 'default';\n }\n\n getTimelineIcon(entry: TimelineHistoryEntry) {\n if (entry.type === HistoryEntryType.ORDER_STATE_TRANSITION) {\n if (entry.data.to === 'Delivered') {\n return ['success-standard', 'is-solid'];\n }\n if (entry.data.to === 'Cancelled') {\n return 'ban';\n }\n }\n if (entry.type === HistoryEntryType.ORDER_PAYMENT_TRANSITION) {\n if (entry.data.to === 'Settled') {\n return 'credit-card';\n }\n }\n if (entry.type === HistoryEntryType.ORDER_REFUND_TRANSITION) {\n if (entry.data.to === 'Settled') {\n return 'credit-card';\n }\n }\n if (entry.type === HistoryEntryType.ORDER_NOTE) {\n return 'note';\n }\n if (entry.type === HistoryEntryType.ORDER_MODIFIED) {\n return 'pencil';\n }\n if (entry.type === HistoryEntryType.ORDER_CUSTOMER_UPDATED) {\n return 'switch';\n }\n if (entry.type === HistoryEntryType.ORDER_FULFILLMENT_TRANSITION) {\n if (entry.data.to === 'Shipped') {\n return 'truck';\n }\n if (entry.data.to === 'Delivered') {\n return 'truck';\n }\n }\n }\n\n isFeatured(entry: TimelineHistoryEntry): boolean {\n switch (entry.type) {\n case HistoryEntryType.ORDER_STATE_TRANSITION: {\n return (\n entry.data.to === 'Delivered' ||\n entry.data.to === 'Cancelled' ||\n entry.data.to === 'Settled'\n );\n }\n case HistoryEntryType.ORDER_REFUND_TRANSITION:\n return entry.data.to === 'Settled';\n case HistoryEntryType.ORDER_PAYMENT_TRANSITION:\n return entry.data.to === 'Settled' || entry.data.to === 'Cancelled';\n case HistoryEntryType.ORDER_FULFILLMENT_TRANSITION:\n return entry.data.to === 'Delivered' || entry.data.to === 'Shipped';\n case HistoryEntryType.ORDER_NOTE:\n case HistoryEntryType.ORDER_MODIFIED:\n case HistoryEntryType.ORDER_CUSTOMER_UPDATED:\n return true;\n default:\n return false;\n }\n }\n\n getFulfillment(\n entry: TimelineHistoryEntry,\n ): NonNullable<OrderDetailFragment['fulfillments']>[number] | undefined {\n if (\n (entry.type === HistoryEntryType.ORDER_FULFILLMENT ||\n entry.type === HistoryEntryType.ORDER_FULFILLMENT_TRANSITION) &&\n this.order.fulfillments\n ) {\n return this.order.fulfillments.find(f => f.id === entry.data.fulfillmentId);\n }\n }\n\n getPayment(\n entry: TimelineHistoryEntry,\n ): NonNullable<OrderDetailFragment['payments']>[number] | undefined {\n if (entry.type === HistoryEntryType.ORDER_PAYMENT_TRANSITION && this.order.payments) {\n return this.order.payments.find(p => p.id === entry.data.paymentId);\n }\n }\n\n getRefund(\n entry: TimelineHistoryEntry,\n ): NonNullable<OrderDetailFragment['payments']>[number]['refunds'][number] | undefined {\n if (entry.type === HistoryEntryType.ORDER_REFUND_TRANSITION && this.order.payments) {\n const allRefunds = this.order.payments.reduce(\n (refunds, payment) => refunds.concat(payment.refunds),\n [] as NonNullable<OrderDetailFragment['payments']>[number]['refunds'],\n );\n return allRefunds.find(r => r.id === entry.data.refundId);\n }\n }\n\n getCancelledQuantity(entry: TimelineHistoryEntry): number {\n return entry.data.lines.reduce((total, line) => total + line.quantity, 0);\n }\n\n getCancelledItems(\n cancellationLines: Array<{ orderLineId: string; quantity: number }>,\n ): Array<{ name: string; quantity: number }> {\n const itemMap = new Map<string, number>();\n for (const line of this.order.lines) {\n const cancellationLine = cancellationLines.find(l => l.orderLineId === line.id);\n if (cancellationLine) {\n itemMap.set(line.productVariant.name, cancellationLine.quantity);\n }\n }\n return Array.from(itemMap.entries()).map(([name, quantity]) => ({ name, quantity }));\n }\n\n getModification(id: string) {\n return this.order.modifications.find(m => m.id === id);\n }\n\n getName(entry: TimelineHistoryEntry): string {\n const { administrator } = entry;\n if (administrator) {\n return `${administrator.firstName} ${administrator.lastName}`;\n } else {\n const customer = this.order.customer;\n if (customer) {\n return `${customer.firstName} ${customer.lastName}`;\n }\n }\n return '';\n }\n\n addNoteToOrder() {\n this.addNote.emit({ note: this.note, isPublic: !this.noteIsPrivate });\n this.note = '';\n this.noteIsPrivate = true;\n }\n}\n","<div class=\"entry-list\" [class.expanded]=\"expanded\">\n <vdr-timeline-entry iconShape=\"note\" displayType=\"muted\" [featured]=\"true\" [isFirst]=\"true\">\n <div class=\"note-entry\">\n <textarea [(ngModel)]=\"note\" name=\"note\" class=\"note\"></textarea>\n <button class=\"btn btn-secondary\" [disabled]=\"!note\" (click)=\"addNoteToOrder()\">\n {{ 'common.add-note' | translate }}\n </button>\n </div>\n <div class=\"visibility-select\">\n <clr-checkbox-wrapper>\n <input type=\"checkbox\" clrCheckbox [(ngModel)]=\"noteIsPrivate\" />\n <label>{{ 'order.note-is-private' | translate }}</label>\n </clr-checkbox-wrapper>\n <span *ngIf=\"noteIsPrivate\" class=\"private\">\n {{ 'order.note-only-visible-to-administrators' | translate }}\n </span>\n <span *ngIf=\"!noteIsPrivate\" class=\"public\">\n {{ 'order.note-visible-to-customer' | translate }}\n </span>\n </div>\n </vdr-timeline-entry>\n <ng-container *ngFor=\"let entry of history\">\n <vdr-order-history-entry-host\n *ngIf=\"hasCustomComponent(entry.type); else defaultComponents\"\n [order]=\"order\"\n [entry]=\"entry\"\n [expanded]=\"expanded\"\n (expandClick)=\"expanded = !expanded\"\n ></vdr-order-history-entry-host>\n <ng-template #defaultComponents>\n <vdr-timeline-entry\n [displayType]=\"getDisplayType(entry)\"\n [iconShape]=\"getTimelineIcon(entry)\"\n [createdAt]=\"entry.createdAt\"\n [name]=\"getName(entry)\"\n [featured]=\"isFeatured(entry)\"\n [collapsed]=\"!expanded && !isFeatured(entry)\"\n (expandClick)=\"expanded = !expanded\"\n >\n <ng-container [ngSwitch]=\"entry.type\">\n <ng-container *ngSwitchCase=\"type.ORDER_STATE_TRANSITION\">\n <div class=\"title\" *ngIf=\"entry.data.to === 'Delivered'\">\n {{ 'order.history-order-fulfilled' | translate }}\n </div>\n <div class=\"title\" *ngIf=\"entry.data.to === 'Cancelled'\">\n {{ 'order.history-order-cancelled' | translate }}\n </div>\n <ng-template [ngIf]=\"entry.data.to !== 'Cancelled' && entry.data.to !== 'Delivered'\">\n {{\n 'order.history-order-transition'\n | translate : { from: entry.data.from, to: entry.data.to }\n }}\n </ng-template>\n </ng-container>\n <ng-container *ngSwitchCase=\"type.ORDER_MODIFIED\">\n <div class=\"title\">\n {{ 'order.history-order-modified' | translate }}\n </div>\n <div\n class=\"flex items-center\"\n *ngIf=\"getModification(entry.data.modificationId) as modification\"\n >\n {{ 'order.modify-order-price-difference' | translate }}:\n <strong>{{\n modification.priceChange | localeCurrency : order.currencyCode\n }}</strong>\n <vdr-chip colorType=\"success\" class=\"mx-1\" *ngIf=\"modification.isSettled\">{{\n 'order.modification-settled' | translate\n }}</vdr-chip>\n <vdr-chip colorType=\"error\" class=\"mx-1\" *ngIf=\"!modification.isSettled\">{{\n 'order.modification-not-settled' | translate\n }}</vdr-chip>\n <vdr-history-entry-detail>\n <vdr-modification-detail\n [order]=\"order\"\n [modification]=\"modification\"\n ></vdr-modification-detail>\n </vdr-history-entry-detail>\n </div>\n </ng-container>\n <ng-container *ngSwitchCase=\"type.ORDER_PAYMENT_TRANSITION\">\n <ng-container *ngIf=\"entry.data.to === 'Settled'; else regularPaymentTransition\">\n <div class=\"title\">\n {{ 'order.history-payment-settled' | translate }}\n </div>\n <div class=\"flex items-center\">\n <vdr-chip *ngIf=\"getPayment(entry) as payment\" class=\"mr-1\">{{\n payment.amount | localeCurrency : order.currencyCode\n }}</vdr-chip>\n <vdr-history-entry-detail *ngIf=\"getPayment(entry) as payment\">\n <vdr-payment-detail\n [payment]=\"payment\"\n [currencyCode]=\"order.currencyCode\"\n ></vdr-payment-detail>\n </vdr-history-entry-detail>\n </div>\n </ng-container>\n <ng-template #regularPaymentTransition>\n {{\n 'order.history-payment-transition'\n | translate\n : {\n from: entry.data.from,\n to: entry.data.to,\n id: getPayment(entry)?.transactionId\n }\n }}\n </ng-template>\n </ng-container>\n <ng-container *ngSwitchCase=\"type.ORDER_REFUND_TRANSITION\">\n <ng-container *ngIf=\"entry.data.to === 'Settled'; else regularRefundTransition\">\n <ng-container *ngIf=\"getRefund(entry) as refund\">\n <div class=\"title\">{{ 'order.refund' | translate }} #{{ refund.id }}</div>\n <div class=\"flex items-center\">\n <vdr-chip colorType=\"warning\" class=\"mr-1\">{{\n refund.total | localeCurrency : order.currencyCode\n }}</vdr-chip>\n <vdr-history-entry-detail>\n <vdr-labeled-data [label]=\"'order.cancellation-reason' | translate\">\n {{ entry.data.reason }}\n </vdr-labeled-data>\n <vdr-labeled-data [label]=\"'order.contents' | translate\">\n <vdr-simple-item-list\n [items]=\"getCancelledItems(refund.lines)\"\n ></vdr-simple-item-list>\n </vdr-labeled-data>\n </vdr-history-entry-detail>\n </div>\n </ng-container>\n </ng-container>\n <ng-template #regularRefundTransition>\n {{\n 'order.history-refund-transition'\n | translate\n : {\n from: entry.data.from,\n to: entry.data.to,\n id: entry.data.refundId\n }\n }}\n </ng-template>\n </ng-container>\n <ng-container *ngSwitchCase=\"type.ORDER_CANCELLATION\">\n {{\n 'order.history-items-cancelled'\n | translate : { count: getCancelledQuantity(entry) }\n }}\n <vdr-history-entry-detail *ngIf=\"getCancelledItems(entry.data.lines) as items\">\n <vdr-labeled-data [label]=\"'order.cancellation-reason' | translate\">\n {{ entry.data.reason }}\n </vdr-labeled-data>\n <vdr-labeled-data [label]=\"'order.contents' | translate\">\n <vdr-simple-item-list [items]=\"items\"></vdr-simple-item-list>\n </vdr-labeled-data>\n <vdr-labeled-data [label]=\"'order.shipping-cancelled' | translate\">\n {{ entry.data.shippingCancelled }}\n </vdr-labeled-data>\n </vdr-history-entry-detail>\n </ng-container>\n <ng-container *ngSwitchCase=\"type.ORDER_FULFILLMENT\">\n {{ 'order.history-fulfillment-created' | translate }}\n <vdr-history-entry-detail *ngIf=\"getFulfillment(entry) as fulfillment\">\n <vdr-fulfillment-detail\n [fulfillmentId]=\"fulfillment.id\"\n [order]=\"order\"\n ></vdr-fulfillment-detail>\n </vdr-history-entry-detail>\n </ng-container>\n <ng-container *ngSwitchCase=\"type.ORDER_FULFILLMENT_TRANSITION\">\n <ng-container *ngIf=\"entry.data.to === 'Delivered'\">\n <div class=\"title\">\n {{ 'order.history-fulfillment-delivered' | translate }}\n </div>\n {{ 'order.tracking-code' | translate }}: {{ getFulfillment(entry)?.trackingCode }}\n </ng-container>\n <ng-container *ngIf=\"entry.data.to === 'Shipped'\">\n <div class=\"title\">\n {{ 'order.history-fulfillment-shipped' | translate }}\n </div>\n {{ 'order.tracking-code' | translate }}: {{ getFulfillment(entry)?.trackingCode }}\n </ng-container>\n <ng-container *ngIf=\"entry.data.to !== 'Delivered' && entry.data.to !== 'Shipped'\">\n {{\n 'order.history-fulfillment-transition'\n | translate : { from: entry.data.from, to: entry.data.to }\n }}\n </ng-container>\n <vdr-history-entry-detail *ngIf=\"getFulfillment(entry) as fulfillment\">\n <vdr-fulfillment-detail\n [fulfillmentId]=\"fulfillment.id\"\n [order]=\"order\"\n ></vdr-fulfillment-detail>\n </vdr-history-entry-detail>\n </ng-container>\n <ng-container *ngSwitchCase=\"type.ORDER_NOTE\">\n <div class=\"flex\">\n <div class=\"note-text\">\n <span *ngIf=\"entry.isPublic\" class=\"note-visibility public\">{{\n 'common.public' | translate\n }}</span>\n <span *ngIf=\"!entry.isPublic\" class=\"note-visibility private\">{{\n 'common.private' | translate\n }}</span>\n {{ entry.data.note }}\n </div>\n <div class=\"flex-spacer\"></div>\n <vdr-dropdown>\n <button class=\"button-small ml-1\" vdrDropdownTrigger>\n <clr-icon shape=\"ellipsis-vertical\" size=\"12\"></clr-icon>\n </button>\n <vdr-dropdown-menu vdrPosition=\"bottom-right\">\n <button\n vdrDropdownItem\n (click)=\"updateNote.emit(entry)\"\n [disabled]=\"!('UpdateOrder' | hasPermission)\"\n >\n <clr-icon shape=\"edit\"></clr-icon>\n {{ 'common.edit' | translate }}\n </button>\n <div class=\"dropdown-divider\"></div>\n <button\n vdrDropdownItem\n (click)=\"deleteNote.emit(entry)\"\n [disabled]=\"!('UpdateOrder' | hasPermission)\"\n >\n <clr-icon shape=\"trash\" class=\"is-danger\"></clr-icon>\n {{ 'common.delete' | translate }}\n </button>\n </vdr-dropdown-menu>\n </vdr-dropdown>\n </div>\n </ng-container>\n <ng-container *ngSwitchCase=\"type.ORDER_COUPON_APPLIED\">\n {{ 'order.history-coupon-code-applied' | translate }}:\n <vdr-chip>\n <a [routerLink]=\"['/marketing', 'promotions', entry.data.promotionId]\">{{\n entry.data.couponCode\n }}</a>\n </vdr-chip>\n </ng-container>\n <ng-container *ngSwitchCase=\"type.ORDER_COUPON_REMOVED\">\n {{ 'order.history-coupon-code-removed' | translate }}:\n <vdr-chip\n ><span class=\"cancelled-coupon-code\">{{ entry.data.couponCode }}</span></vdr-chip\n >\n </ng-container>\n <ng-container *ngSwitchCase=\"type.ORDER_CUSTOMER_UPDATED\">\n <div class=\"title\">\n {{\n 'order.history-customer-updated'\n | translate : { newCustomerName: entry.data.newCustomerName }\n }}\n </div>\n <div class=\"flex\">\n <div class=\"note-text\">\n {{ entry.data.note }}\n </div>\n <div class=\"flex-spacer\"></div>\n <vdr-history-entry-detail>\n <vdr-labeled-data [label]=\"'order.previous-customer' | translate\">\n <a\n *ngIf=\"entry.data.previousCustomerId\"\n class=\"button-ghost\"\n [routerLink]=\"[\n '/customer',\n 'customers',\n entry.data.previousCustomerId\n ]\"\n >\n <clr-icon shape=\"user\" class=\"is-solid\"></clr-icon>\n <span>{{ entry.data.previousCustomerName }}</span>\n <clr-icon shape=\"arrow right\"></clr-icon>\n </a>\n </vdr-labeled-data>\n <vdr-labeled-data [label]=\"'order.new-customer' | translate\">\n <a\n *ngIf=\"entry.data.newCustomerId\"\n class=\"button-ghost\"\n [routerLink]=\"['/customer', 'customers', entry.data.newCustomerId]\"\n >\n <clr-icon shape=\"user\" class=\"is-solid\"></clr-icon>\n <span>{{ entry.data.newCustomerName }}</span>\n <clr-icon shape=\"arrow right\"></clr-icon>\n </a>\n </vdr-labeled-data>\n </vdr-history-entry-detail>\n </div>\n </ng-container>\n <ng-container *ngSwitchDefault>\n <div class=\"title\">\n {{ entry.type | translate }}\n </div>\n <vdr-history-entry-detail *ngIf=\"entry.data\">\n <vdr-object-tree [value]=\"entry.data\"></vdr-object-tree>\n </vdr-history-entry-detail>\n </ng-container>\n </ng-container>\n </vdr-timeline-entry>\n </ng-template>\n </ng-container>\n\n <vdr-timeline-entry [isLast]=\"true\" [createdAt]=\"order.createdAt\" [featured]=\"true\">\n <div class=\"title\">\n {{ 'order.history-order-created' | translate }}\n </div>\n </vdr-timeline-entry>\n</div>\n","import { gql } from 'apollo-angular';\n\nexport const GET_SELLER_ORDERS = gql`\n query GetSellerOrders($orderId: ID!) {\n order(id: $orderId) {\n id\n sellerOrders {\n id\n code\n state\n orderPlacedAt\n currencyCode\n totalWithTax\n channels {\n id\n code\n seller {\n id\n name\n }\n }\n }\n }\n }\n`;\n","import { ChangeDetectionStrategy, Component, Input, OnInit } from '@angular/core';\nimport { Router } from '@angular/router';\nimport {\n ChannelService,\n DataService,\n GetSellerOrdersQuery,\n GetSellerOrdersQueryVariables,\n} from '@vendure/admin-ui/core';\nimport { DEFAULT_CHANNEL_CODE } from '@vendure/common/lib/shared-constants';\nimport { Observable } from 'rxjs';\n\nimport { GET_SELLER_ORDERS } from './seller-orders-card.graphql';\n\ntype SellerOrder = NonNullable<NonNullable<GetSellerOrdersQuery['order']>['sellerOrders']>[number];\n\n@Component({\n selector: 'vdr-seller-orders-card',\n templateUrl: './seller-orders-card.component.html',\n styleUrls: ['./seller-orders-card.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: false\n})\nexport class SellerOrdersCardComponent implements OnInit {\n @Input() orderId: string;\n\n sellerOrders$: Observable<SellerOrder[]>;\n\n constructor(\n private router: Router,\n private dataService: DataService,\n private channelService: ChannelService,\n ) {}\n\n ngOnInit() {\n this.sellerOrders$ = this.dataService\n .query<GetSellerOrdersQuery, GetSellerOrdersQueryVariables>(GET_SELLER_ORDERS, {\n orderId: this.orderId,\n })\n .mapSingle(({ order }) => order?.sellerOrders ?? []);\n }\n\n getSeller(order: SellerOrder) {\n const sellerChannel = order.channels.find(channel => channel.code !== DEFAULT_CHANNEL_CODE);\n return sellerChannel?.seller;\n }\n\n navigateToSellerOrder(order: SellerOrder) {\n this.router.navigate(['/orders', order.id]);\n }\n}\n","<vdr-card [title]=\"'order.seller-orders' | translate\">\n <div class=\"form-grid\">\n <div *ngFor=\"let order of sellerOrders$ | async\">\n <a [routerLink]=\"['seller-orders', order.id]\" class=\"button-ghost mb-1\"\n >{{ order.code }} <clr-icon shape=\"arrow right\"></clr-icon\n ></a>\n <vdr-labeled-data [label]=\"'order.state' | translate\">\n <vdr-order-state-label [state]=\"order.state\"></vdr-order-state-label>\n </vdr-labeled-data>\n <vdr-labeled-data *ngIf=\"getSeller(order) as seller\" [label]=\"'common.seller' | translate\">\n {{ seller.name }}\n </vdr-labeled-data>\n <vdr-labeled-data *ngIf=\"getSeller(order) as seller\" [label]=\"'order.total' | translate\">\n {{ order.totalWithTax | localeCurrency : order.currencyCode }}\n </vdr-labeled-data>\n </div>\n </div>\n</vdr-card>\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, OnDestroy, OnInit } from '@angular/core';\nimport { FormBuilder, FormGroup } from '@angular/forms';\nimport { marker as _ } from '@biesbjerg/ngx-translate-extract-marker';\nimport {\n DataService,\n EditNoteDialogComponent,\n FulfillmentFragment,\n getCustomFieldsDefaults,\n GetOrderHistoryQuery,\n GetOrderQuery,\n ModalService,\n NotificationService,\n ORDER_DETAIL_FRAGMENT,\n OrderDetailFragment,\n OrderDetailQueryDocument,\n Refund,\n SetOrderCustomerDocument,\n SortOrder,\n TimelineHistoryEntry,\n TypedBaseDetailComponent,\n} from '@vendure/admin-ui/core';\nimport { assertNever, summate } from '@vendure/common/lib/shared-utils';\nimport { gql } from 'apollo-angular';\nimport { EMPTY, forkJoin, Observable, of, Subject } from 'rxjs';\nimport { map, mapTo, startWith, switchMap, take } from 'rxjs/operators';\n\nimport { OrderTransitionService } from '../../providers/order-transition.service';\nimport { AddManualPaymentDialogComponent } from '../add-manual-payment-dialog/add-manual-payment-dialog.component';\nimport { CancelOrderDialogComponent } from '../cancel-order-dialog/cancel-order-dialog.component';\nimport { FulfillOrderDialogComponent } from '../fulfill-order-dialog/fulfill-order-dialog.component';\nimport { OrderProcessGraphDialogComponent } from '../order-process-graph-dialog/order-process-graph-dialog.component';\nimport { RefundOrderDialogComponent } from '../refund-order-dialog/refund-order-dialog.component';\nimport { SelectCustomerDialogComponent } from '../select-customer-dialog/select-customer-dialog.component';\nimport { SettleRefundDialogComponent } from '../settle-refund-dialog/settle-refund-dialog.component';\n\ntype Payment = NonNullable<OrderDetailFragment['payments']>[number];\n\nexport const ORDER_DETAIL_QUERY = gql`\n query OrderDetailQuery($id: ID!) {\n order(id: $id) {\n ...OrderDetail\n }\n }\n ${ORDER_DETAIL_FRAGMENT}\n`;\n\nexport const SET_ORDER_CUSTOMER_MUTATION = gql`\n mutation SetOrderCustomer($input: SetOrderCustomerInput!) {\n setOrderCustomer(input: $input) {\n id\n customer {\n id\n firstName\n lastName\n emailAddress\n }\n }\n }\n`;\n\n@Component({\n selector: 'vdr-order-detail',\n templateUrl: './order-detail.component.html',\n styleUrls: ['./order-detail.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: false,\n})\nexport class OrderDetailComponent\n extends TypedBaseDetailComponent<typeof OrderDetailQueryDocument, 'order'>\n implements OnInit, OnDestroy\n{\n customFields = this.getCustomFieldConfig('Order');\n orderLineCustomFields = this.getCustomFieldConfig('OrderLine');\n detailForm = new FormGroup({\n customFields: this.formBuilder.group(getCustomFieldsDefaults(this.customFields)),\n });\n history$: Observable<NonNullable<GetOrderHistoryQuery['order']>['history']['items'] | undefined>;\n nextStates$: Observable<string[]>;\n fetchHistory = new Subject<void>();\n private readonly defaultStates = [\n 'AddingItems',\n 'ArrangingPayment',\n 'PaymentAuthorized',\n 'PaymentSettled',\n 'PartiallyShipped',\n 'Shipped',\n 'PartiallyDelivered',\n 'Delivered',\n 'Cancelled',\n 'Modifying',\n 'ArrangingAdditionalPayment',\n ];\n\n constructor(\n private changeDetector: ChangeDetectorRef,\n protected dataService: DataService,\n private notificationService: NotificationService,\n private modalService: ModalService,\n private orderTransitionService: OrderTransitionService,\n private formBuilder: FormBuilder,\n ) {\n super();\n }\n\n ngOnInit() {\n this.init();\n this.entity$.pipe(take(1)).subscribe(order => {\n if (order.state === 'Modifying') {\n this.router.navigate(['./', 'modify'], { relativeTo: this.route });\n }\n });\n this.history$ = this.fetchHistory.pipe(\n startWith(null),\n switchMap(() =>\n this.dataService.order\n .getOrderHistory(this.id, {\n sort: {\n createdAt: SortOrder.DESC,\n },\n })\n .mapStream(data => data.order?.history.items),\n ),\n );\n this.nextStates$ = this.entity$.pipe(\n map(order => {\n const isInCustomState = !this.defaultStates.includes(order.state);\n return isInCustomState\n ? order.nextStates\n : order.nextStates.filter(s => !this.defaultStates.includes(s));\n }),\n );\n }\n\n ngOnDestroy() {\n this.destroy();\n }\n\n openStateDiagram() {\n this.entity$\n .pipe(\n take(1),\n switchMap(order =>\n this.modalService.fromComponent(OrderProcessGraphDialogComponent, {\n closable: true,\n locals: {\n activeState: order.state,\n },\n }),\n ),\n )\n .subscribe();\n }\n\n setOrderCustomer() {\n this.modalService\n .fromComponent(SelectCustomerDialogComponent, {\n locals: {\n canCreateNew: false,\n includeNoteInput: true,\n title: _('order.assign-order-to-another-customer'),\n },\n })\n .pipe(\n switchMap(result => {\n function isExisting(input: any): input is { id: string } {\n return typeof input === 'object' && !!input.id;\n }\n if (isExisting(result)) {\n return this.dataService.mutate(SetOrderCustomerDocument, {\n input: {\n customerId: result.id,\n orderId: this.id,\n note: result.note,\n },\n });\n } else {\n return EMPTY;\n }\n }),\n switchMap(result => this.refetchOrder(result)),\n )\n .subscribe(result => {\n if (result) {\n this.notificationService.success(_('order.set-customer-success'));\n }\n });\n }\n\n transitionToState(state: string) {\n this.dataService.order.transitionToState(this.id, state).subscribe(({ transitionOrderToState }) => {\n switch (transitionOrderToState?.__typename) {\n case 'Order':\n this.notificationService.success(_('order.transitioned-to-state-success'), { state });\n this.fetchHistory.next();\n break;\n case 'OrderStateTransitionError':\n this.notificationService.error(transitionOrderToState.transitionError);\n }\n });\n }\n\n manuallyTransitionToState(order: OrderDetailFragment) {\n this.orderTransitionService\n .manuallyTransitionToState({\n orderId: order.id,\n nextStates: order.nextStates,\n cancellable: true,\n message: _('order.manually-transition-to-state-message'),\n retry: 0,\n })\n .subscribe();\n }\n\n transitionToModifying() {\n this.dataService.order\n .transitionToState(this.id, 'Modifying')\n .subscribe(({ transitionOrderToState }) => {\n switch (transitionOrderToState?.__typename) {\n case 'Order':\n this.router.navigate(['./modify'], { relativeTo: this.route });\n break;\n case 'OrderStateTransitionError':\n this.notificationService.error(transitionOrderToState.transitionError);\n }\n });\n }\n\n updateCustomFields() {\n this.dataService.order\n .updateOrderCustomFields({\n id: this.id,\n customFields: this.detailForm.value.customFields,\n })\n .subscribe(() => {\n this.notificationService.success(_('common.notify-update-success'), { entity: 'Order' });\n });\n }\n\n getOrderAddressLines(orderAddress?: { [key: string]: string }): string[] {\n if (!orderAddress) {\n return [];\n }\n return Object.values(orderAddress)\n .filter(val => val !== 'OrderAddress')\n .filter(line => !!line);\n }\n\n settlePayment(payment: Payment) {\n this.dataService.order.settlePayment(payment.id).subscribe(({ settlePayment }) => {\n switch (settlePayment.__typename) {\n case 'Payment':\n if (settlePayment.state === 'Settled') {\n this.notificationService.success(_('order.settle-payment-success'));\n } else {\n this.notificationService.error(_('order.settle-payment-error'));\n }\n this.dataService.order.getOrder(this.id).single$.subscribe();\n this.fetchHistory.next();\n break;\n case 'OrderStateTransitionError':\n case 'PaymentStateTransitionError':\n case 'SettlePaymentError':\n this.notificationService.error(settlePayment.message);\n }\n });\n }\n\n transitionPaymentState({ payment, state }: { payment: Payment; state: string }) {\n if (state === 'Cancelled') {\n this.dataService.order.cancelPayment(payment.id).subscribe(({ cancelPayment }) => {\n switch (cancelPayment.__typename) {\n case 'Payment':\n this.notificationService.success(_('order.transitioned-payment-to-state-success'), {\n state,\n });\n this.dataService.order.getOrder(this.id).single$.subscribe();\n this.fetchHistory.next();\n break;\n case 'PaymentStateTransitionError':\n this.notificationService.error(cancelPayment.transitionError);\n break;\n case 'CancelPaymentError':\n this.notificationService.error(cancelPayment.paymentErrorMessage);\n break;\n }\n });\n } else {\n this.dataService.order\n .transitionPaymentToState(payment.id, state)\n .subscribe(({ transitionPaymentToState }) => {\n switch (transitionPaymentToState.__typename) {\n case 'Payment':\n this.notificationService.success(\n _('order.transitioned-payment-to-state-success'),\n {\n state,\n },\n );\n this.dataService.order.getOrder(this.id).single$.subscribe();\n this.fetchHistory.next();\n break;\n case 'PaymentStateTransitionError':\n this.notificationService.error(transitionPaymentToState.message);\n break;\n }\n });\n }\n }\n\n canAddFulfillment(order: OrderDetailFragment): boolean {\n const allFulfillmentLines: FulfillmentFragment['lines'] = (order.fulfillments ?? [])\n .filter(fulfillment => fulfillment.state !== 'Cancelled')\n .reduce((all, fulfillment) => [...all, ...fulfillment.lines], [] as FulfillmentFragment['lines']);\n let allItemsFulfilled = true;\n for (const line of order.lines) {\n const totalFulfilledCount = allFulfillmentLines\n .filter(row => row.orderLineId === line.id)\n .reduce((sum, row) => sum + row.quantity, 0);\n if (totalFulfilledCount < line.quantity) {\n allItemsFulfilled = false;\n }\n }\n return (\n !allItemsFulfilled &&\n !this.hasUnsettledModifications(order) &&\n this.outstandingPaymentAmount(order) === 0 &&\n (order.nextStates.includes('Shipped') ||\n order.nextStates.includes('PartiallyShipped') ||\n order.nextStates.includes('Delivered'))\n );\n }\n\n hasUnsettledModifications(order: OrderDetailFragment): boolean {\n return 0 < order.modifications.filter(m => !m.isSettled).length;\n }\n\n getOutstandingModificationAmount(order: OrderDetailFragment): number {\n return summate(\n order.modifications.filter(m => !m.isSettled),\n 'priceChange',\n );\n }\n\n outstandingPaymentAmount(order: OrderDetailFragment): number {\n const paymentIsValid = (p: Payment): boolean =>\n p.state !== 'Cancelled' && p.state !== 'Declined' && p.state !== 'Error';\n\n let amountCovered = 0;\n for (const payment of order.payments?.filter(paymentIsValid) ?? []) {\n const refunds = payment.refunds.filter(r => r.state !== 'Failed') ?? [];\n const refundsTotal = summate(refunds as Array<Required<Refund>>, 'total');\n amountCovered += payment.amount - refundsTotal;\n }\n return order.totalWithTax - amountCovered;\n }\n\n addManualPayment(order: OrderDetailFragment) {\n const priorState = order.state;\n this.modalService\n .fromComponent(AddManualPaymentDialogComponent, {\n closable: true,\n locals: {\n outstandingAmount: this.outstandingPaymentAmount(order),\n currencyCode: order.currencyCode,\n },\n })\n .pipe(\n switchMap(result => {\n if (result) {\n return this.dataService.order.addManualPaymentToOrder({\n orderId: this.id,\n transactionId: result.transactionId,\n method: result.method,\n metadata: result.metadata || {},\n });\n } else {\n return EMPTY;\n }\n }),\n switchMap(({ addManualPaymentToOrder }) => {\n switch (addManualPaymentToOrder.__typename) {\n case 'Order':\n this.notificationService.success(_('order.add-payment-to-order-success'));\n if (priorState === 'ArrangingAdditionalPayment') {\n return this.orderTransitionService.transitionToPreModifyingState(\n order.id,\n order.nextStates,\n );\n } else {\n return of('PaymentSettled');\n }\n case 'ManualPaymentStateError':\n this.notificationService.error(addManualPaymentToOrder.message);\n return EMPTY;\n default:\n return EMPTY;\n }\n }),\n )\n .subscribe(result => {\n if (result) {\n this.refetchOrder({ result });\n }\n });\n }\n\n fulfillOrder() {\n this.entity$\n .pipe(\n take(1),\n switchMap(order =>\n this.modalService.fromComponent(FulfillOrderDialogComponent, {\n size: 'xl',\n locals: {\n order,\n },\n }),\n ),\n switchMap(input => {\n if (input) {\n return this.dataService.order.createFulfillment(input);\n } else {\n return of(undefined);\n }\n }),\n switchMap(result => this.refetchOrder(result).pipe(mapTo(result))),\n )\n .subscribe(result => {\n if (result) {\n const { addFulfillmentToOrder } = result;\n switch (addFulfillmentToOrder.__typename) {\n case 'Fulfillment':\n this.notificationService.success(_('order.create-fulfillment-success'));\n break;\n case 'EmptyOrderLineSelectionError':\n case 'InsufficientStockOnHandError':\n case 'ItemsAlreadyFulfilledError':\n case 'InvalidFulfillmentHandlerError':\n this.notificationService.error(addFulfillmentToOrder.message);\n break;\n case 'FulfillmentStateTransitionError':\n this.notificationService.error(addFulfillmentToOrder.transitionError);\n break;\n case 'CreateFulfillmentError':\n this.notificationService.error(addFulfillmentToOrder.fulfillmentHandlerError);\n break;\n case undefined:\n this.notificationService.error(JSON.stringify(addFulfillmentToOrder));\n break;\n default:\n assertNever(addFulfillmentToOrder);\n }\n }\n });\n }\n\n transitionFulfillment(id: string, state: string) {\n this.dataService.order\n .transitionFulfillmentToState(id, state)\n .pipe(switchMap(result => this.refetchOrder(result)))\n .subscribe(() => {\n this.notificationService.success(_('order.successfully-updated-fulfillment'));\n });\n }\n\n cancelOrRefund(order: OrderDetailFragment) {\n const isRefundable = this.orderHasSettledPayments(order);\n if (order.state === 'PaymentAuthorized' || order.active === true || !isRefundable) {\n this.cancelOrder(order);\n } else {\n this.refundOrder(order);\n }\n }\n\n settleRefund(refund: Payment['refunds'][number]) {\n this.modalService\n .fromComponent(SettleRefundDialogComponent, {\n size: 'md',\n locals: {\n refund,\n },\n })\n .pipe(\n switchMap(transactionId => {\n if (transactionId) {\n return this.dataService.order.settleRefund(\n {\n transactionId,\n id: refund.id,\n },\n this.id,\n );\n } else {\n return of(undefined);\n }\n }),\n // switchMap(result => this.refetchOrder(result)),\n )\n .subscribe(result => {\n if (result) {\n this.notificationService.success(_('order.settle-refund-success'));\n }\n });\n }\n\n addNote(event: { note: string; isPublic: boolean }) {\n const { note, isPublic } = event;\n this.dataService.order\n .addNoteToOrder({\n id: this.id,\n note,\n isPublic,\n })\n .pipe(switchMap(result => this.refetchOrder(result)))\n .subscribe(result => {\n this.notificationService.success(_('common.notify-create-success'), {\n entity: 'Note',\n });\n });\n }\n\n updateNote(entry: TimelineHistoryEntry) {\n this.modalService\n .fromComponent(EditNoteDialogComponent, {\n closable: true,\n locals: {\n displayPrivacyControls: true,\n note: entry.data.note,\n noteIsPrivate: !entry.isPublic,\n },\n })\n .pipe(\n switchMap(result => {\n if (result) {\n return this.dataService.order.updateOrderNote({\n noteId: entry.id,\n isPublic: !result.isPrivate,\n note: result.note,\n });\n } else {\n return EMPTY;\n }\n }),\n )\n .subscribe(result => {\n this.fetchHistory.next();\n this.notificationService.success(_('common.notify-update-success'), {\n entity: 'Note',\n });\n });\n }\n\n deleteNote(entry: TimelineHistoryEntry) {\n return this.modalService\n .dialog({\n title: _('common.confirm-delete-note'),\n body: entry.data.note,\n buttons: [\n { type: 'secondary', label: _('common.cancel') },\n { type: 'danger', label: _('common.delete'), returnValue: true },\n ],\n })\n .pipe(switchMap(res => (res ? this.dataService.order.deleteOrderNote(entry.id) : EMPTY)))\n .subscribe(() => {\n this.fetchHistory.next();\n this.notificationService.success(_('common.notify-delete-success'), {\n entity: 'Note',\n });\n });\n }\n\n orderHasSettledPayments(order: OrderDetailFragment): boolean {\n return !!order.payments?.find(p => p.state === 'Settled');\n }\n\n private cancelOrder(order: OrderDetailFragment) {\n this.modalService\n .fromComponent(CancelOrderDialogComponent, {\n size: 'xl',\n locals: {\n order,\n },\n })\n .pipe(\n switchMap(input => {\n if (input) {\n return this.dataService.order.cancelOrder(input);\n } else {\n return of(undefined);\n }\n }),\n switchMap(result => this.refetchOrder(result)),\n )\n .subscribe(result => {\n if (result) {\n this.notificationService.success(_('order.cancelled-order-success'));\n }\n });\n }\n\n private refundOrder(order: OrderDetailFragment) {\n this.modalService\n .fromComponent(RefundOrderDialogComponent, {\n size: 'xl',\n locals: {\n order,\n },\n })\n .pipe(\n switchMap(input => {\n if (!input) {\n return of(undefined);\n }\n\n if (input.cancel.lines?.length) {\n return this.dataService.order.cancelOrder(input.cancel).pipe(\n map(res => {\n const result = res.cancelOrder;\n switch (result.__typename) {\n case 'Order':\n this.refetchOrder(result).subscribe();\n this.notificationService.success(\n _('order.cancelled-order-items-success'),\n {\n count: summate(input.cancel.lines, 'quantity'),\n },\n );\n return input;\n case 'CancelActiveOrderError':\n case 'QuantityTooGreatError':\n case 'MultipleOrderError':\n case 'OrderStateTransitionError':\n case 'EmptyOrderLineSelectionError':\n this.notificationService.error(result.message);\n return undefined;\n }\n }),\n );\n } else {\n return [input];\n }\n }),\n switchMap(input => {\n if (!input) {\n return of(undefined);\n }\n if (input.refunds.length) {\n return forkJoin(\n input.refunds.map(refund =>\n this.dataService.order.refundOrder(refund).pipe(map(res => res.refundOrder)),\n ),\n );\n } else {\n return [undefined];\n }\n }),\n )\n .subscribe(results => {\n for (const result of results ?? []) {\n if (result) {\n switch (result.__typename) {\n case 'Refund':\n if (result.state === 'Failed') {\n this.notificationService.error(_('order.refund-order-failed'));\n } else {\n this.notificationService.success(_('order.refund-order-success'));\n }\n break;\n case 'AlreadyRefundedError':\n case 'NothingToRefundError':\n case 'PaymentOrderMismatchError':\n case 'RefundOrderStateError':\n case 'RefundStateTransitionError':\n this.notificationService.error(result.message);\n break;\n }\n }\n }\n this.refetchOrder(results?.[0]).subscribe();\n });\n }\n\n private refetchOrder(result: object | undefined): Observable<GetOrderQuery | undefined> {\n this.fetchHistory.next();\n if (result) {\n return this.dataService.order.getOrder(this.id).single$;\n } else {\n return of(undefined);\n }\n }\n\n protected setFormValues(entity: OrderDetailFragment): void {\n if (this.customFields.length) {\n this.setCustomFieldFormValues(this.customFields, this.detailForm.get(['customFields']), entity);\n }\n }\n}\n","<vdr-page-block>\n <vdr-action-bar *ngIf=\"entity$ | async as order\">\n <vdr-ab-left> </vdr-ab-left>\n\n <vdr-ab-right>\n <vdr-action-bar-items locationId=\"order-detail\"></vdr-action-bar-items>\n <button\n class=\"button primary mr-1\"\n *ngIf=\"\n order.type !== 'Aggregate' &&\n (order.state === 'ArrangingPayment' || order.state === 'ArrangingAdditionalPayment') &&\n (hasUnsettledModifications(order) || 0 < outstandingPaymentAmount(order))\n \"\n (click)=\"addManualPayment(order)\"\n >\n {{ 'order.add-payment-to-order' | translate }}\n ({{ outstandingPaymentAmount(order) | localeCurrency : order.currencyCode }})\n </button>\n <button\n class=\"button primary mr-1\"\n *ngIf=\"\n order.type !== 'Aggregate' &&\n order.active === false &&\n order.state !== 'ArrangingAdditionalPayment' &&\n order.state !== 'ArrangingPayment' &&\n 0 < outstandingPaymentAmount(order)\n \"\n (click)=\"transitionToState('ArrangingAdditionalPayment')\"\n >\n {{ 'order.arrange-additional-payment' | translate }}\n </button>\n <button\n *ngIf=\"order.type !== 'Aggregate'\"\n class=\"button primary mr-1\"\n (click)=\"fulfillOrder()\"\n [disabled]=\"!canAddFulfillment(order)\"\n >\n {{ 'order.fulfill-order' | translate }}\n </button>\n <vdr-action-bar-dropdown-menu [alwaysShow]=\"true\" locationId=\"order-detail\">\n <ng-container *ngIf=\"order.type !== 'Aggregate' && order.nextStates.includes('Modifying')\">\n <button type=\"button\" vdrDropdownItem (click)=\"transitionToModifying()\">\n <clr-icon shape=\"pencil\"></clr-icon>\n {{ 'order.modify-order' | translate }}\n </button>\n <div class=\"dropdown-divider\"></div>\n </ng-container>\n <button\n type=\"button\"\n vdrDropdownItem\n *ngIf=\"order.type !== 'Aggregate' && order.nextStates.includes('Cancelled')\"\n (click)=\"cancelOrRefund(order)\"\n >\n <clr-icon shape=\"error-standard\" class=\"is-error\"></clr-icon>\n <ng-container *ngIf=\"orderHasSettledPayments(order); else cancelOnly\">\n {{ 'order.refund-and-cancel-order' | translate }}\n </ng-container>\n <ng-template #cancelOnly>\n {{ 'order.cancel-order' | translate }}\n </ng-template>\n </button>\n\n <ng-container *ngIf=\"(nextStates$ | async)?.length\">\n <div class=\"dropdown-divider\"></div>\n <button\n *ngFor=\"let nextState of nextStates$ | async\"\n type=\"button\"\n vdrDropdownItem\n (click)=\"transitionToState(nextState)\"\n >\n <clr-icon shape=\"step-forward-2\"></clr-icon>\n {{\n 'order.transition-to-state'\n | translate : { state: (nextState | stateI18nToken | translate) }\n }}\n </button>\n </ng-container>\n <div class=\"dropdown-divider\"></div>\n <button type=\"button\" vdrDropdownItem (click)=\"manuallyTransitionToState(order)\">\n <clr-icon shape=\"step-forward-2\" class=\"is-warning\"></clr-icon>\n {{ 'order.manually-transition-to-state' | translate }}\n </button>\n </vdr-action-bar-dropdown-menu>\n </vdr-ab-right>\n </vdr-action-bar>\n</vdr-page-block>\n\n<vdr-page-detail-layout *ngIf=\"entity$ | async as order\">\n <vdr-page-detail-sidebar>\n <vdr-card [title]=\"'order.state' | translate\">\n <ng-template vdrCardControls>\n <button\n class=\"button-small\"\n (click)=\"openStateDiagram()\"\n [title]=\"'order.order-state-diagram' | translate\"\n >\n <clr-icon shape=\"list\"></clr-icon>\n </button>\n </ng-template>\n <vdr-order-state-label [state]=\"order.state\"></vdr-order-state-label>\n </vdr-card>\n <vdr-card [title]=\"'order.customer' | translate\">\n <ng-template vdrCardControls>\n <button\n *vdrIfPermissions=\"['UpdateOrder', 'ReadCustomer']\"\n class=\"button-small\"\n (click)=\"setOrderCustomer()\"\n [title]=\"'order.assign-order-to-another-customer' | translate\"\n >\n <clr-icon shape=\"switch\"></clr-icon>\n </button>\n </ng-template>\n <vdr-customer-label [customer]=\"order.customer\"></vdr-customer-label>\n <vdr-labeled-data\n class=\"mt-2\"\n [label]=\"'order.shipping-address' | translate\"\n *ngIf=\"getOrderAddressLines(order.shippingAddress).length\"\n >\n <vdr-formatted-address [address]=\"order.shippingAddress\" class=\"mt-1\"></vdr-formatted-address>\n </vdr-labeled-data>\n <vdr-labeled-data\n [label]=\"'order.billing-address' | translate\"\n *ngIf=\"getOrderAddressLines(order.billingAddress).length\"\n >\n <vdr-formatted-address [address]=\"order.billingAddress\" class=\"mt-1\"></vdr-formatted-address>\n </vdr-labeled-data>\n </vdr-card>\n <vdr-card [title]=\"'order.payments' | translate\" *ngIf=\"order.payments?.length\">\n <vdr-order-payment-card\n *ngFor=\"let payment of order.payments\"\n [currencyCode]=\"order.currencyCode\"\n [payment]=\"payment\"\n (settlePayment)=\"settlePayment($event)\"\n (transitionPaymentState)=\"transitionPaymentState($event)\"\n (settleRefund)=\"settleRefund($event)\"\n ></vdr-order-payment-card>\n </vdr-card>\n <vdr-card *ngIf=\"order.fulfillments?.length\">\n <vdr-fulfillment-card\n *ngFor=\"let fulfillment of order.fulfillments\"\n [fulfillment]=\"fulfillment\"\n [order]=\"order\"\n (transitionState)=\"transitionFulfillment(fulfillment.id, $event)\"\n ></vdr-fulfillment-card>\n </vdr-card>\n <vdr-card>\n <vdr-page-entity-info *ngIf=\"entity$ | async as entity\" [entity]=\"entity\" />\n </vdr-card>\n </vdr-page-detail-sidebar>\n\n <vdr-page-block>\n <vdr-seller-orders-card\n class=\"mb-2\"\n *ngIf=\"order.sellerOrders.length\"\n [orderId]=\"order.id\"\n ></vdr-seller-orders-card>\n <vdr-card [paddingX]=\"false\">\n <vdr-order-table\n [order]=\"order\"\n [orderLineCustomFields]=\"orderLineCustomFields\"\n ></vdr-order-table>\n </vdr-card>\n <vdr-card [title]=\"'order.tax-summary' | translate\" [paddingX]=\"false\">\n <table class=\"table\">\n <thead>\n <tr>\n <th>{{ 'common.description' | translate }}</th>\n <th>{{ 'order.tax-rate' | translate }}</th>\n <th>{{ 'order.tax-base' | translate }}</th>\n <th>{{ 'order.tax-total' | translate }}</th>\n </tr>\n </thead>\n <tbody>\n <tr *ngFor=\"let row of order.taxSummary\">\n <td>{{ row.description }}</td>\n <td>{{ row.taxRate / 100 | percent : '0.0-3' }}</td>\n <td>{{ row.taxBase | localeCurrency : order.currencyCode }}</td>\n <td>{{ row.taxTotal | localeCurrency : order.currencyCode }}</td>\n </tr>\n </tbody>\n </table>\n </vdr-card>\n <vdr-card [title]=\"'common.custom-fields' | translate\" *ngIf=\"customFields.length\">\n <vdr-tabbed-custom-fields\n entityName=\"Order\"\n [customFields]=\"customFields\"\n [customFieldsFormGroup]=\"detailForm.get('customFields')\"\n [readonly]=\"!('UpdateOrder' | hasPermission)\"\n />\n <button\n class=\"button primary\"\n (click)=\"updateCustomFields()\"\n [disabled]=\"\n detailForm.get('customFields')?.pristine || detailForm.get('customFields')?.invalid\n \"\n >\n {{ 'common.update' | translate }}\n </button>\n </vdr-card>\n <vdr-custom-detail-component-host\n locationId=\"order-detail\"\n [entity$]=\"entity$\"\n [detailForm]=\"detailForm\"\n ></vdr-custom-detail-component-host>\n\n <vdr-card [title]=\"'order.order-history' | translate\">\n <vdr-order-history\n [order]=\"order\"\n [history]=\"history$ | async\"\n (addNote)=\"addNote($event)\"\n (updateNote)=\"updateNote($event)\"\n (deleteNote)=\"deleteNote($event)\"\n ></vdr-order-history>\n </vdr-card>\n </vdr-page-block>\n</vdr-page-detail-layout>\n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\nimport { FormControl, FormGroup } from '@angular/forms';\nimport { notNullOrUndefined } from '@vendure/common/lib/shared-utils';\nimport type { OrderEditorComponent } from '../order-editor/order-editor.component';\nimport { AddedLine, ModifyOrderData, OrderSnapshot } from '../../common/modify-order-types';\n\n@Component({\n selector: 'vdr-order-modification-summary',\n templateUrl: './order-modification-summary.component.html',\n styleUrls: ['./order-modification-summary.component.css'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: false,\n})\nexport class OrderModificationSummaryComponent {\n @Input() orderSnapshot: OrderSnapshot;\n @Input() modifyOrderInput: ModifyOrderData;\n @Input() addedLines: AddedLine[];\n @Input() shippingAddressForm: OrderEditorComponent['shippingAddressForm'];\n @Input() billingAddressForm: OrderEditorComponent['billingAddressForm'];\n @Input() updatedShippingMethods: OrderEditorComponent['updatedShippingMethods'];\n @Input() couponCodesControl: FormControl<string[] | null>;\n\n get adjustedLines(): string[] {\n return (this.modifyOrderInput.adjustOrderLines || [])\n .map(l => {\n const line = this.orderSnapshot.lines.find(line => line.id === l.orderLineId);\n if (line) {\n const delta = l.quantity - line.quantity;\n const sign = delta === 0 ? '' : delta > 0 ? '+' : '-';\n return delta\n ? `${sign}${Math.abs(delta)} ${line.productVariant.name}`\n : line.productVariant.name;\n }\n })\n .filter(notNullOrUndefined);\n }\n\n getModifiedFields(formGroup: FormGroup): string {\n if (!formGroup.dirty) {\n return '';\n }\n return Object.entries(formGroup.controls)\n .map(([key, control]) => {\n if (control.dirty) {\n return key;\n }\n })\n .filter(notNullOrUndefined)\n .join(', ');\n }\n\n getUpdatedShippingMethodLines() {\n return Object.entries(this.updatedShippingMethods || {})\n .map(([lineId, shippingMethod]) => {\n const previousMethod = this.orderSnapshot.shippingLines.find(l => l.id === lineId);\n if (!previousMethod) {\n return;\n }\n const previousName = previousMethod.shippingMethod.name || previousMethod.shippingMethod.code;\n const newName = shippingMethod.name || shippingMethod.code;\n return `${previousName} -> ${newName}`;\n })\n .filter(notNullOrUndefined);\n }\n\n get couponCodeChanges(): string[] {\n const originalCodes = this.orderSnapshot.couponCodes || [];\n const newCodes = this.couponCodesControl.value || [];\n const addedCodes = newCodes.filter(c => !originalCodes.includes(c)).map(c => `+ ${c}`);\n const removedCodes = originalCodes.filter(c => !newCodes.includes(c)).map(c => `- ${c}`);\n return [...addedCodes, ...removedCodes];\n }\n}\n","<vdr-labeled-data\n *ngIf=\"modifyOrderInput.adjustOrderLines?.length\"\n [label]=\"\n 'order.modification-adjusting-lines'\n | translate : { count: modifyOrderInput.adjustOrderLines?.length }\n \"\n>\n <div *ngFor=\"let line of adjustedLines\" class=\"mb-1\">\n {{ line }}\n </div>\n</vdr-labeled-data>\n<vdr-labeled-data\n *ngIf=\"modifyOrderInput.addItems?.length\"\n [label]=\"\n 'order.modification-adding-items'\n | translate : { count: modifyOrderInput.addItems?.length }\n \"\n>\n <div *ngFor=\"let item of addedLines\">\n {{ item.productVariant.name }} x {{ item.quantity }}\n </div>\n</vdr-labeled-data>\n<vdr-labeled-data\n *ngIf=\"modifyOrderInput.surcharges?.length\"\n [label]=\"\n 'order.modification-adding-surcharges'\n | translate : { count: modifyOrderInput.surcharges?.length }\n \"\n>\n <div *ngFor=\"let surcharge of modifyOrderInput.surcharges\" class=\"mb-1\">\n {{ surcharge.description }}: {{ surcharge.price | localeCurrency : orderSnapshot.currencyCode }}\n </div>\n</vdr-labeled-data>\n<vdr-labeled-data\n *ngIf=\"getModifiedFields(shippingAddressForm) as updatedShippingFields\"\n [label]=\"'order.modification-updating-shipping-address' | translate\"\n>\n {{ updatedShippingFields }}\n</vdr-labeled-data>\n<vdr-labeled-data\n *ngIf=\"getModifiedFields(billingAddressForm) as updatedBillingFields\"\n [label]=\"'order.modification-updating-billing-address' | translate\"\n>\n {{ updatedBillingFields }}\n</vdr-labeled-data>\n<vdr-labeled-data *ngIf=\"couponCodeChanges.length\" [label]=\"'order.set-coupon-codes' | translate\">\n <div *ngFor=\"let change of couponCodeChanges\" class=\"mb-1\">{{ change }}</div>\n</vdr-labeled-data>\n<ng-container *ngIf=\"getUpdatedShippingMethodLines() as updatedShippingMethods\">\n <vdr-labeled-data *ngIf=\"updatedShippingMethods.length\" [label]=\"'order.shipping-method' | translate\">\n <div *ngFor=\"let change of updatedShippingMethods\" class=\"mb-1\">{{ change }}</div>\n </vdr-labeled-data>\n</ng-container>","import { ChangeDetectionStrategy, Component, OnInit } from '@angular/core';\nimport { FormControl, Validators } from '@angular/forms';\nimport {\n AdministratorRefundInput,\n CustomFieldConfig,\n Dialog,\n ModifyOrderInput,\n OrderDetailFragment,\n} from '@vendure/admin-ui/core';\nimport { getRefundablePayments, RefundablePayment } from '../../common/get-refundable-payments';\nimport { AddedLine, OrderSnapshot } from '../../common/modify-order-types';\nimport { OrderEditorComponent } from '../order-editor/order-editor.component';\n\nexport enum OrderEditResultType {\n Refund,\n Payment,\n PriceUnchanged,\n Cancel,\n}\n\ninterface OrderEditsRefundResult {\n result: OrderEditResultType.Refund;\n refunds: AdministratorRefundInput[];\n}\ninterface OrderEditsPaymentResult {\n result: OrderEditResultType.Payment;\n}\ninterface OrderEditsPriceUnchangedResult {\n result: OrderEditResultType.PriceUnchanged;\n}\ninterface OrderEditsCancelResult {\n result: OrderEditResultType.Cancel;\n}\ntype OrderEditResult =\n | OrderEditsRefundResult\n | OrderEditsPaymentResult\n | OrderEditsPriceUnchangedResult\n | OrderEditsCancelResult;\n\n@Component({\n selector: 'vdr-order-edits-preview-dialog',\n templateUrl: './order-edits-preview-dialog.component.html',\n styleUrls: ['./order-edits-preview-dialog.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: false,\n})\nexport class OrderEditsPreviewDialogComponent implements OnInit, Dialog<OrderEditResult> {\n // Passed in via the modalService\n orderLineCustomFields: CustomFieldConfig[];\n order: OrderDetailFragment;\n orderSnapshot: OrderSnapshot;\n modifyOrderInput: ModifyOrderInput;\n addedLines: AddedLine[];\n shippingAddressForm: OrderEditorComponent['shippingAddressForm'];\n billingAddressForm: OrderEditorComponent['billingAddressForm'];\n updatedShippingMethods: OrderEditorComponent['updatedShippingMethods'];\n couponCodesControl: FormControl<string[] | null>;\n\n refundablePayments: RefundablePayment[];\n refundNote: string;\n resolveWith: (result?: OrderEditResult) => void;\n\n get priceDifference(): number {\n return this.order.totalWithTax - this.orderSnapshot.totalWithTax;\n }\n\n get amountToRefundTotal(): number {\n return this.refundablePayments.reduce(\n (total, payment) => total + payment.amountToRefundControl.value,\n 0,\n );\n }\n\n ngOnInit() {\n this.refundNote = this.modifyOrderInput.note || '';\n this.refundablePayments = getRefundablePayments(this.order.payments || []);\n this.refundablePayments.forEach(rp => {\n rp.amountToRefundControl.addValidators(Validators.max(this.priceDifference * -1));\n });\n if (this.priceDifference < 0 && this.refundablePayments.length) {\n this.onPaymentSelected(this.refundablePayments[0], true);\n }\n }\n\n onPaymentSelected(payment: RefundablePayment, selected: boolean) {\n if (selected) {\n const outstandingRefundAmount =\n this.priceDifference * -1 -\n this.refundablePayments\n .filter(p => p.id !== payment.id)\n .reduce((total, p) => total + p.amountToRefundControl.value, 0);\n if (0 < outstandingRefundAmount) {\n payment.amountToRefundControl.setValue(\n Math.min(outstandingRefundAmount, payment.refundableAmount),\n );\n }\n } else {\n payment.amountToRefundControl.setValue(0);\n }\n }\n\n refundsCoverDifference(): boolean {\n return this.priceDifference * -1 === this.amountToRefundTotal;\n }\n\n cancel() {\n this.resolveWith({\n result: OrderEditResultType.Cancel,\n });\n }\n\n submit() {\n if (0 < this.priceDifference) {\n this.resolveWith({\n result: OrderEditResultType.Payment,\n });\n } else if (this.priceDifference < 0) {\n this.resolveWith({\n result: OrderEditResultType.Refund,\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n refunds: this.refundablePayments\n .filter(rp => rp.selected && 0 < rp.amountToRefundControl.value)\n .map(payment => {\n return {\n reason: this.refundNote || this.modifyOrderInput.note,\n paymentId: payment.id,\n amount: payment.amountToRefundControl.value,\n };\n }),\n });\n } else {\n this.resolveWith({\n result: OrderEditResultType.PriceUnchanged,\n });\n }\n }\n}\n","<ng-template vdrDialogTitle>{{ 'order.confirm-modifications' | translate }}</ng-template>\n<vdr-order-table\n [order]=\"order\"\n [orderLineCustomFields]=\"orderLineCustomFields\"\n class=\"order-edits-preview-table\"\n></vdr-order-table>\n<div class=\"payments-wrapper mb-2\">\n <div class=\"flex-spacer\">\n <vdr-payment-for-refund-selector\n *ngIf=\"priceDifference < 0\"\n class=\"\"\n [refundablePayments]=\"refundablePayments\"\n (paymentSelected)=\"onPaymentSelected($event.payment, $event.selected)\"\n [order]=\"order\"\n ></vdr-payment-for-refund-selector>\n </div>\n <div class=\"flex-spacer\">\n <vdr-card [title]=\"'order.modify-order' | translate\">\n <vdr-order-modification-summary\n [orderSnapshot]=\"orderSnapshot\"\n [modifyOrderInput]=\"modifyOrderInput\"\n [addedLines]=\"addedLines\"\n [shippingAddressForm]=\"shippingAddressForm\"\n [billingAddressForm]=\"billingAddressForm\"\n [couponCodesControl]=\"couponCodesControl\"\n [updatedShippingMethods]=\"updatedShippingMethods\"\n ></vdr-order-modification-summary>\n <vdr-labeled-data [label]=\"'order.note' | translate\">\n {{ modifyOrderInput.note || '-' }}\n </vdr-labeled-data>\n <vdr-form-field\n [label]=\"'order.refund-cancellation-reason' | translate\"\n *ngIf=\"priceDifference < 0\"\n >\n <textarea [(ngModel)]=\"refundNote\" name=\"refundNote\" required></textarea>\n </vdr-form-field>\n </vdr-card>\n </div>\n</div>\n<ng-template vdrDialogButtons>\n <div>\n <div class=\"errors\">\n <clr-alert\n class=\"mb-1\"\n *ngIf=\"priceDifference < 0 && !refundsCoverDifference()\"\n [clrAlertType]=\"'danger'\"\n [clrAlertClosable]=\"false\"\n >\n <clr-alert-item>\n {{ 'order.refund-total-warning' | translate }}\n </clr-alert-item>\n </clr-alert>\n </div>\n <div class=\"modal-buttons\">\n <clr-alert class=\"\" [clrAlertType]=\"'primary'\" [clrAlertClosable]=\"false\">\n <clr-alert-item>\n {{ 'order.modify-order-price-difference' | translate }}\n {{ 0 < priceDifference ? '+' : ''\n }}{{ priceDifference | localeCurrency : order.currencyCode }}\n </clr-alert-item>\n </clr-alert>\n <button type=\"button\" class=\"btn\" (click)=\"cancel()\">\n {{ 'common.cancel' | translate }}\n </button>\n <button\n type=\"submit\"\n (click)=\"submit()\"\n [disabled]=\"priceDifference < 0 ? !refundsCoverDifference() : false\"\n class=\"btn btn-primary\"\n >\n {{ 'common.confirm' | translate }}\n </button>\n </div>\n </div>\n</ng-template>\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, OnDestroy, OnInit } from '@angular/core';\nimport {\n FormControl,\n FormGroup,\n UntypedFormArray,\n UntypedFormControl,\n UntypedFormGroup,\n Validators,\n} from '@angular/forms';\nimport {\n CustomFieldConfig,\n DataService,\n DraftOrderEligibleShippingMethodsQuery,\n ErrorResult,\n GetAvailableCountriesQuery,\n HistoryEntryType,\n LanguageCode,\n ModalService,\n ModifyOrderInput,\n NotificationService,\n OrderAddressFragment,\n OrderDetailFragment,\n OrderDetailQueryDocument,\n SortOrder,\n SurchargeInput,\n transformRelationCustomFieldInputs,\n TypedBaseDetailComponent,\n} from '@vendure/admin-ui/core';\nimport { assertNever, notNullOrUndefined } from '@vendure/common/lib/shared-utils';\nimport { simpleDeepClone } from '@vendure/common/lib/simple-deep-clone';\nimport { EMPTY, Observable, of } from 'rxjs';\nimport { map, mapTo, shareReplay, switchMap, take, takeUntil } from 'rxjs/operators';\nimport {\n AddedLine,\n ModifyOrderData,\n OrderSnapshot,\n ProductSelectorItem,\n} from '../../common/modify-order-types';\n\nimport { OrderTransitionService } from '../../providers/order-transition.service';\nimport {\n OrderEditResultType,\n OrderEditsPreviewDialogComponent,\n} from '../order-edits-preview-dialog/order-edits-preview-dialog.component';\nimport { SelectShippingMethodDialogComponent } from '../select-shipping-method-dialog/select-shipping-method-dialog.component';\n\n@Component({\n selector: 'vdr-order-editor',\n templateUrl: './order-editor.component.html',\n styleUrls: ['./order-editor.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: false,\n})\nexport class OrderEditorComponent\n extends TypedBaseDetailComponent<typeof OrderDetailQueryDocument, 'order'>\n implements OnInit, OnDestroy\n{\n availableCountries$: Observable<GetAvailableCountriesQuery['countries']['items']>;\n addressCustomFields: CustomFieldConfig[];\n uiLanguage$: Observable<LanguageCode>;\n detailForm = new UntypedFormGroup({});\n couponCodesControl = new FormControl<string[]>([]);\n orderLineCustomFieldsFormArray: UntypedFormArray;\n addItemCustomFieldsFormArray: UntypedFormArray;\n addItemCustomFieldsForm: UntypedFormGroup;\n addItemSelectedVariant: ProductSelectorItem | undefined;\n orderLineCustomFields: CustomFieldConfig[];\n orderSnapshot: OrderSnapshot;\n modifyOrderInput: ModifyOrderData = {\n dryRun: true,\n orderId: '',\n addItems: [],\n adjustOrderLines: [],\n surcharges: [],\n note: '',\n refunds: [],\n updateShippingAddress: {},\n updateBillingAddress: {},\n };\n surchargeForm = new FormGroup({\n description: new FormControl('', Validators.minLength(1)),\n sku: new FormControl(''),\n price: new FormControl(0),\n priceIncludesTax: new FormControl(true),\n taxRate: new FormControl(0),\n taxDescription: new FormControl(''),\n });\n shippingAddressForm = new FormGroup({\n fullName: new FormControl(''),\n company: new FormControl(''),\n streetLine1: new FormControl(''),\n streetLine2: new FormControl(''),\n city: new FormControl(''),\n province: new FormControl(''),\n postalCode: new FormControl(''),\n countryCode: new FormControl(''),\n phoneNumber: new FormControl(''),\n });\n billingAddressForm = new FormGroup({\n fullName: new FormControl(''),\n company: new FormControl(''),\n streetLine1: new FormControl(''),\n streetLine2: new FormControl(''),\n city: new FormControl(''),\n province: new FormControl(''),\n postalCode: new FormControl(''),\n countryCode: new FormControl(''),\n phoneNumber: new FormControl(''),\n });\n note = '';\n recalculateShipping = true;\n previousState: string;\n editingShippingAddress = false;\n editingBillingAddress = false;\n updatedShippingMethods: {\n [\n shippingLineId: string\n ]: DraftOrderEligibleShippingMethodsQuery['eligibleShippingMethodsForDraftOrder'][number];\n } = {};\n private addedVariants = new Map<string, ProductSelectorItem>();\n\n constructor(\n protected dataService: DataService,\n private notificationService: NotificationService,\n private modalService: ModalService,\n private orderTransitionService: OrderTransitionService,\n private changeDetectorRef: ChangeDetectorRef,\n ) {\n super();\n }\n\n ngOnInit(): void {\n this.init();\n this.addressCustomFields = this.getCustomFieldConfig('Address');\n this.modifyOrderInput.orderId = this.route.snapshot.paramMap.get('id') as string;\n this.orderLineCustomFields = this.getCustomFieldConfig('OrderLine');\n this.entity$.pipe(take(1)).subscribe(order => {\n this.orderSnapshot = this.createOrderSnapshot(order);\n if (order.couponCodes.length) {\n this.couponCodesControl.setValue(order.couponCodes);\n }\n this.surchargeForm.reset();\n for (const [name, control] of Object.entries(this.shippingAddressForm.controls)) {\n control.setValue(order.shippingAddress?.[name]);\n }\n this.addAddressCustomFieldsFormGroup(this.shippingAddressForm, order.shippingAddress);\n for (const [name, control] of Object.entries(this.billingAddressForm.controls)) {\n control.setValue(order.billingAddress?.[name]);\n }\n this.addAddressCustomFieldsFormGroup(this.billingAddressForm, order.billingAddress);\n this.orderLineCustomFieldsFormArray = new UntypedFormArray([]);\n for (const line of order.lines) {\n const formGroup = new UntypedFormGroup({});\n for (const { name } of this.orderLineCustomFields) {\n formGroup.addControl(name, new UntypedFormControl((line as any).customFields[name]));\n }\n formGroup.valueChanges.pipe(takeUntil(this.destroy$)).subscribe(value => {\n let modifyRow = this.modifyOrderInput.adjustOrderLines.find(\n l => l.orderLineId === line.id,\n );\n if (!modifyRow) {\n modifyRow = {\n orderLineId: line.id,\n quantity: line.quantity,\n };\n this.modifyOrderInput.adjustOrderLines.push(modifyRow);\n }\n if (this.orderLineCustomFields.length) {\n modifyRow.customFields = value;\n }\n });\n this.orderLineCustomFieldsFormArray.push(formGroup);\n }\n });\n\n this.addItemCustomFieldsFormArray = new UntypedFormArray([]);\n this.addItemCustomFieldsForm = new UntypedFormGroup({});\n for (const customField of this.orderLineCustomFields) {\n this.addItemCustomFieldsForm.addControl(customField.name, new UntypedFormControl());\n }\n this.availableCountries$ = this.dataService.settings\n .getAvailableCountries()\n .mapSingle(result => result.countries.items)\n .pipe(shareReplay(1));\n this.dataService.order\n .getOrderHistory(this.id, {\n take: 1,\n sort: {\n createdAt: SortOrder.DESC,\n },\n filter: { type: { eq: HistoryEntryType.ORDER_STATE_TRANSITION } },\n })\n .single$.subscribe(({ order }) => {\n this.previousState = order?.history.items[0].data.from;\n });\n this.uiLanguage$ = this.dataService.client\n .uiState()\n .stream$.pipe(map(({ uiState }) => uiState.language));\n }\n\n ngOnDestroy(): void {\n this.destroy();\n }\n\n get addedLines(): AddedLine[] {\n const getSinglePriceValue = (price: ProductSelectorItem['price']) =>\n price.__typename === 'SinglePrice' ? price.value : 0;\n return (this.modifyOrderInput.addItems || [])\n .map(row => {\n const variantInfo = this.addedVariants.get(row.productVariantId);\n if (variantInfo) {\n return {\n id: this.getIdForAddedItem(row),\n featuredAsset: variantInfo.productAsset,\n productVariant: {\n id: variantInfo.productVariantId,\n name: variantInfo.productVariantName,\n sku: variantInfo.sku,\n },\n unitPrice: getSinglePriceValue(variantInfo.price),\n unitPriceWithTax: getSinglePriceValue(variantInfo.priceWithTax),\n quantity: row.quantity,\n };\n }\n })\n .filter(notNullOrUndefined);\n }\n\n private getIdForAddedItem(row: ModifyOrderData['addItems'][number]) {\n return `added-${row.productVariantId}-${JSON.stringify(row.customFields || {})}`;\n }\n\n transitionToPriorState(order: OrderDetailFragment) {\n this.orderTransitionService\n .transitionToPreModifyingState(order.id, order.nextStates)\n .subscribe(result => {\n this.router.navigate(['..'], { relativeTo: this.route });\n });\n }\n\n hasModifications(): boolean {\n const { addItems, adjustOrderLines, surcharges } = this.modifyOrderInput;\n return (\n !!addItems?.length ||\n !!surcharges?.length ||\n !!adjustOrderLines?.length ||\n (this.shippingAddressForm.dirty && this.shippingAddressForm.valid) ||\n (this.billingAddressForm.dirty && this.billingAddressForm.valid) ||\n this.couponCodesControl.dirty ||\n Object.entries(this.updatedShippingMethods).length > 0\n );\n }\n\n isLineModified(line: OrderDetailFragment['lines'][number]): boolean {\n return !!this.modifyOrderInput.adjustOrderLines?.find(\n l => l.orderLineId === line.id && l.quantity !== line.quantity,\n );\n }\n\n getInitialLineQuantity(lineId: string): number {\n const adjustedLine = this.modifyOrderInput.adjustOrderLines?.find(l => l.orderLineId === lineId);\n if (adjustedLine) {\n return adjustedLine.quantity;\n }\n const addedLine = this.modifyOrderInput.addItems?.find(l => this.getIdForAddedItem(l) === lineId);\n if (addedLine) {\n return addedLine.quantity ?? 1;\n }\n const line = this.orderSnapshot.lines.find(l => l.id === lineId);\n return line ? line.quantity : 1;\n }\n\n updateLineQuantity(line: OrderDetailFragment['lines'][number] | AddedLine, quantity: string) {\n const { adjustOrderLines } = this.modifyOrderInput;\n if (this.isAddedLine(line)) {\n const row = this.modifyOrderInput.addItems?.find(\n l => l.productVariantId === line.productVariant.id,\n );\n if (row) {\n row.quantity = +quantity;\n }\n } else {\n let row = adjustOrderLines?.find(l => l.orderLineId === line.id);\n if (row && +quantity === line.quantity) {\n // Remove the modification if the quantity is the same as\n // the original order\n adjustOrderLines?.splice(adjustOrderLines?.indexOf(row), 1);\n }\n if (!row) {\n row = { orderLineId: line.id, quantity: +quantity };\n adjustOrderLines?.push(row);\n }\n row.quantity = +quantity;\n }\n }\n\n isAddedLine(line: OrderDetailFragment['lines'][number] | AddedLine): line is AddedLine {\n return (line as AddedLine).id.startsWith('added-');\n }\n\n updateAddedItemQuantity(item: AddedLine, quantity: string) {\n const row = this.modifyOrderInput.addItems?.find(l => l.productVariantId === item.productVariant.id);\n if (row) {\n row.quantity = +quantity;\n }\n }\n\n trackByProductVariantId(index: number, item: AddedLine) {\n return item.productVariant.id;\n }\n\n getSelectedItemPrice(result: ProductSelectorItem | undefined): number {\n switch (result?.priceWithTax.__typename) {\n case 'SinglePrice':\n return result.priceWithTax.value;\n default:\n return 0;\n }\n }\n\n addItemToOrder(result: ProductSelectorItem | undefined) {\n if (!result) {\n return;\n }\n const customFields = this.orderLineCustomFields.length\n ? this.addItemCustomFieldsForm.value\n : undefined;\n let row = this.modifyOrderInput.addItems?.find(l =>\n this.isMatchingAddItemRow(l, result, customFields),\n );\n if (!row) {\n row = { productVariantId: result.productVariantId, quantity: 1 };\n if (customFields) {\n row.customFields = customFields;\n }\n this.modifyOrderInput.addItems?.push(row);\n } else {\n row.quantity++;\n }\n if (customFields) {\n const formGroup = new UntypedFormGroup({});\n for (const [key, value] of Object.entries(customFields)) {\n formGroup.addControl(key, new UntypedFormControl(value));\n }\n this.addItemCustomFieldsFormArray.push(formGroup);\n formGroup.valueChanges.pipe(takeUntil(this.destroy$)).subscribe(value => {\n if (row) {\n row.customFields = value;\n }\n });\n }\n this.addItemCustomFieldsForm.reset({});\n this.addItemSelectedVariant = undefined;\n this.addedVariants.set(result.productVariantId, result);\n }\n\n getShippingLineDetails(shippingLine: OrderDetailFragment['shippingLines'][number]): {\n name: string;\n price: number;\n } {\n const updatedMethod = this.updatedShippingMethods[shippingLine.id];\n if (updatedMethod) {\n return {\n name: updatedMethod.name || updatedMethod.code,\n price: updatedMethod.priceWithTax,\n };\n } else {\n return {\n name: shippingLine.shippingMethod.name || shippingLine.shippingMethod.code,\n price: shippingLine.discountedPriceWithTax,\n };\n }\n }\n\n setShippingMethod(shippingLineId: string) {\n const currentShippingMethod =\n this.updatedShippingMethods[shippingLineId] ??\n this.entity?.shippingLines.find(l => l.id === shippingLineId)?.shippingMethod;\n if (!currentShippingMethod) {\n return;\n }\n this.dataService.order\n .getDraftOrderEligibleShippingMethods(this.id)\n .mapSingle(({ eligibleShippingMethodsForDraftOrder }) => eligibleShippingMethodsForDraftOrder)\n .pipe(\n switchMap(methods =>\n this.modalService\n .fromComponent(SelectShippingMethodDialogComponent, {\n locals: {\n eligibleShippingMethods: methods,\n currencyCode: this.entity?.currencyCode,\n currentSelectionId: currentShippingMethod.id,\n },\n })\n .pipe(\n map(result => {\n if (result) {\n return methods.find(method => method.id === result);\n }\n }),\n ),\n ),\n )\n .subscribe(result => {\n if (result) {\n this.updatedShippingMethods[shippingLineId] = result;\n this.changeDetectorRef.markForCheck();\n }\n });\n }\n\n private isMatchingAddItemRow(\n row: ModifyOrderData['addItems'][number],\n result: ProductSelectorItem,\n customFields: any,\n ): boolean {\n return (\n row.productVariantId === result.productVariantId &&\n JSON.stringify(row.customFields) === JSON.stringify(customFields)\n );\n }\n\n removeAddedItem(id: string) {\n this.modifyOrderInput.addItems = this.modifyOrderInput.addItems?.filter(l => {\n const itemId = this.getIdForAddedItem(l);\n return itemId !== id;\n });\n }\n\n getSurchargePrices(surcharge: SurchargeInput) {\n const priceWithTax = surcharge.priceIncludesTax\n ? surcharge.price\n : Math.round(surcharge.price * ((100 + (surcharge.taxRate || 0)) / 100));\n const price = surcharge.priceIncludesTax\n ? Math.round(surcharge.price / ((100 + (surcharge.taxRate || 0)) / 100))\n : surcharge.price;\n return {\n price,\n priceWithTax,\n };\n }\n\n addSurcharge(value: any) {\n this.modifyOrderInput.surcharges?.push(value);\n this.surchargeForm.reset({\n price: 0,\n priceIncludesTax: true,\n taxRate: 0,\n });\n }\n\n removeSurcharge(index: number) {\n this.modifyOrderInput.surcharges?.splice(index, 1);\n }\n\n previewAndModify(order: OrderDetailFragment) {\n const modifyOrderInput: ModifyOrderData = {\n ...this.modifyOrderInput,\n adjustOrderLines: this.modifyOrderInput.adjustOrderLines.map(line =>\n transformRelationCustomFieldInputs(simpleDeepClone(line), this.orderLineCustomFields),\n ),\n };\n const input: ModifyOrderInput = {\n ...modifyOrderInput,\n ...(this.billingAddressForm.dirty ? { updateBillingAddress: this.billingAddressForm.value } : {}),\n ...(this.shippingAddressForm.dirty\n ? { updateShippingAddress: this.shippingAddressForm.value }\n : {}),\n dryRun: true,\n couponCodes: this.couponCodesControl.dirty ? this.couponCodesControl.value : undefined,\n note: this.note ?? '',\n options: {\n recalculateShipping: this.recalculateShipping,\n },\n };\n if (Object.entries(this.updatedShippingMethods).length) {\n input.shippingMethodIds = order.shippingLines.map(l =>\n this.updatedShippingMethods[l.id]\n ? this.updatedShippingMethods[l.id].id\n : l.shippingMethod.id,\n );\n }\n this.dataService.order\n .modifyOrder(input)\n .pipe(\n switchMap(({ modifyOrder }) => {\n switch (modifyOrder.__typename) {\n case 'Order':\n return this.modalService.fromComponent(OrderEditsPreviewDialogComponent, {\n size: 'xl',\n closable: false,\n locals: {\n order: modifyOrder,\n orderSnapshot: this.orderSnapshot,\n orderLineCustomFields: this.orderLineCustomFields,\n modifyOrderInput: input,\n addedLines: this.addedLines,\n shippingAddressForm: this.shippingAddressForm,\n billingAddressForm: this.billingAddressForm,\n couponCodesControl: this.couponCodesControl,\n updatedShippingMethods: this.updatedShippingMethods,\n },\n });\n case 'InsufficientStockError':\n case 'NegativeQuantityError':\n case 'NoChangesSpecifiedError':\n case 'OrderLimitError':\n case 'OrderModificationStateError':\n case 'PaymentMethodMissingError':\n case 'RefundPaymentIdMissingError':\n case 'CouponCodeLimitError':\n case 'CouponCodeExpiredError':\n case 'IneligibleShippingMethodError':\n case 'CouponCodeInvalidError': {\n this.notificationService.error(modifyOrder.message);\n return of(false as const);\n }\n case null:\n case undefined:\n return of(false as const);\n default:\n assertNever(modifyOrder);\n }\n }),\n switchMap(result => {\n if (!result || result.result === OrderEditResultType.Cancel) {\n // re-fetch so that the preview values get overwritten in the cache.\n return this.dataService.order.getOrder(this.id).mapSingle(() => false);\n } else {\n // Do the modification\n const wetRunInput = {\n ...input,\n dryRun: false,\n };\n if (result.result === OrderEditResultType.Refund) {\n wetRunInput.refunds = result.refunds;\n }\n return this.dataService.order.modifyOrder(wetRunInput).pipe(\n switchMap(({ modifyOrder }) => {\n if (modifyOrder.__typename === 'Order') {\n const priceDelta =\n modifyOrder.totalWithTax - this.orderSnapshot.totalWithTax;\n const nextState =\n 0 < priceDelta ? 'ArrangingAdditionalPayment' : this.previousState;\n\n return this.dataService.order\n .transitionToState(order.id, nextState)\n .pipe(mapTo(true));\n } else {\n this.notificationService.error((modifyOrder as ErrorResult).message);\n return EMPTY;\n }\n }),\n );\n }\n }),\n )\n .subscribe(result => {\n if (result) {\n this.router.navigate(['../'], { relativeTo: this.route });\n }\n });\n }\n\n private addAddressCustomFieldsFormGroup(\n parentFormGroup: UntypedFormGroup,\n address?: OrderAddressFragment | null,\n ) {\n if (address && this.addressCustomFields.length) {\n const addressCustomFieldsFormGroup = new UntypedFormGroup({});\n for (const customFieldDef of this.addressCustomFields) {\n const name = customFieldDef.name;\n const value = (address as any).customFields?.[name];\n addressCustomFieldsFormGroup.addControl(name, new UntypedFormControl(value));\n }\n parentFormGroup.addControl('customFields', addressCustomFieldsFormGroup);\n }\n }\n\n private createOrderSnapshot(order: OrderDetailFragment): OrderSnapshot {\n return {\n totalWithTax: order.totalWithTax,\n currencyCode: order.currencyCode,\n couponCodes: order.couponCodes,\n lines: [...order.lines].map(line => ({ ...line })),\n shippingLines: [...order.shippingLines].map(line => ({ ...line })),\n };\n }\n\n protected setFormValues(entity: OrderDetailFragment, languageCode: LanguageCode): void {\n /* not used */\n }\n}\n","<vdr-page-block>\n <vdr-action-bar *ngIf=\"entity$ | async as order\">\n <vdr-ab-left>\n <div class=\"flex clr-align-items-center\"></div>\n </vdr-ab-left>\n\n <vdr-ab-right>\n <button class=\"btn btn-secondary\" (click)=\"transitionToPriorState(order)\">\n {{ 'order.cancel-modification' | translate }}\n </button>\n </vdr-ab-right>\n </vdr-action-bar>\n</vdr-page-block>\n\n<vdr-page-detail-layout *ngIf=\"entity as order\">\n <vdr-page-detail-sidebar>\n <vdr-card [title]=\"'order.modification-summary' | translate\">\n <vdr-order-modification-summary\n [orderSnapshot]=\"orderSnapshot\"\n [modifyOrderInput]=\"modifyOrderInput\"\n [addedLines]=\"addedLines\"\n [shippingAddressForm]=\"shippingAddressForm\"\n [billingAddressForm]=\"billingAddressForm\"\n [couponCodesControl]=\"couponCodesControl\"\n [updatedShippingMethods]=\"updatedShippingMethods\"\n ></vdr-order-modification-summary>\n\n <div *ngIf=\"!hasModifications()\" class=\"no-modifications\">\n {{ 'order.no-modifications-made' | translate }}\n </div>\n\n <div class=\"summary-controls\">\n <vdr-form-field [label]=\"'order.note' | translate\">\n <textarea\n [(ngModel)]=\"note\"\n name=\"note\"\n required\n [disabled]=\"!hasModifications()\"\n ></textarea>\n </vdr-form-field>\n <label class=\"flex items-center\">\n <input\n type=\"checkbox\"\n [(ngModel)]=\"recalculateShipping\"\n [disabled]=\"!hasModifications()\"\n />\n <div class=\"ml-1\">{{ 'order.modification-recalculate-shipping' | translate }}</div>\n </label>\n <button\n class=\"btn btn-primary mt-2\"\n [disabled]=\"!hasModifications()\"\n (click)=\"previewAndModify(order)\"\n >\n {{ 'order.preview-changes' | translate }}\n </button>\n </div>\n </vdr-card>\n <vdr-card [title]=\"'order.set-coupon-codes' | translate\">\n <vdr-coupon-code-selector [control]=\"couponCodesControl\"></vdr-coupon-code-selector>\n </vdr-card>\n <vdr-card [title]=\"'order.shipping-address' | translate\">\n <ng-template vdrCardControls>\n <button\n class=\"button-small\"\n [title]=\"'order.edit-shipping-address' | translate\"\n (click)=\"editingShippingAddress = !editingShippingAddress\"\n >\n <clr-icon shape=\"edit\"></clr-icon>\n </button>\n </ng-template>\n <vdr-formatted-address\n *ngIf=\"!editingShippingAddress\"\n [address]=\"shippingAddressForm.value\"\n ></vdr-formatted-address>\n <vdr-address-form\n *ngIf=\"editingShippingAddress\"\n [formGroup]=\"shippingAddressForm\"\n [availableCountries]=\"availableCountries$ | async\"\n [customFields]=\"addressCustomFields\"\n ></vdr-address-form>\n </vdr-card>\n <vdr-card [title]=\"'order.billing-address' | translate\">\n <ng-template vdrCardControls>\n <button\n class=\"button-small\"\n [title]=\"'order.edit-billing-address' | translate\"\n (click)=\"editingBillingAddress = !editingBillingAddress\"\n >\n <clr-icon shape=\"edit\"></clr-icon>\n </button>\n </ng-template>\n <vdr-formatted-address\n *ngIf=\"!editingBillingAddress\"\n [address]=\"billingAddressForm.value\"\n ></vdr-formatted-address>\n <vdr-address-form\n *ngIf=\"editingBillingAddress\"\n [formGroup]=\"billingAddressForm\"\n [availableCountries]=\"availableCountries$ | async\"\n [customFields]=\"addressCustomFields\"\n ></vdr-address-form>\n </vdr-card>\n </vdr-page-detail-sidebar>\n\n <vdr-page-block>\n <vdr-card [paddingX]=\"false\">\n <vdr-data-table-2 id=\"modify-order\" class=\"order-table\" [items]=\"order.lines.concat(addedLines)\">\n <!-- Here we define all the available columns -->\n <vdr-dt2-column id=\"id\" [heading]=\"'common.id' | translate\" [hiddenByDefault]=\"true\">\n <ng-template let-line=\"item\">\n {{ line.id }}\n </ng-template>\n </vdr-dt2-column>\n <vdr-dt2-column\n id=\"created-at\"\n [heading]=\"'common.created-at' | translate\"\n [hiddenByDefault]=\"true\"\n >\n <ng-template let-line=\"item\">\n {{ line.createdAt | localeDate : 'short' }}\n </ng-template>\n </vdr-dt2-column>\n <vdr-dt2-column\n id=\"updated-at\"\n [heading]=\"'common.updated-at' | translate\"\n [hiddenByDefault]=\"true\"\n >\n <ng-template let-line=\"item\">\n {{ line.updatedAt | localeDate : 'short' }}\n </ng-template>\n </vdr-dt2-column>\n <vdr-dt2-column [heading]=\"'common.image' | translate\" id=\"image\">\n <ng-template let-line=\"item\">\n <div class=\"image-placeholder\">\n <img\n *ngIf=\"line.featuredAsset as asset; else imagePlaceholder\"\n [src]=\"asset | assetPreview : 'tiny'\"\n />\n <ng-template #imagePlaceholder>\n <div class=\"placeholder\">\n <clr-icon shape=\"image\" size=\"48\"></clr-icon>\n </div>\n </ng-template>\n </div>\n </ng-template>\n </vdr-dt2-column>\n <vdr-dt2-column\n id=\"product-name\"\n [heading]=\"'order.product-name' | translate\"\n [optional]=\"false\"\n >\n <ng-template let-line=\"item\">\n {{ line.productVariant.name }}\n </ng-template>\n </vdr-dt2-column>\n <vdr-dt2-column id=\"product-sku\" [heading]=\"'order.product-sku' | translate\">\n <ng-template let-line=\"item\">\n {{ line.productVariant.sku }}\n </ng-template>\n </vdr-dt2-column>\n <vdr-dt2-column id=\"unit-price\" [heading]=\"'order.unit-price' | translate\">\n <ng-template let-line=\"item\">\n <div class=\"text-center\">\n <div>{{ line.unitPriceWithTax | localeCurrency : order.currencyCode }}</div>\n <div class=\"net-price\" [title]=\"'order.net-price' | translate\">\n {{ line.unitPrice | localeCurrency : order.currencyCode }}\n </div>\n </div>\n </ng-template>\n </vdr-dt2-column>\n <vdr-dt2-column id=\"quantity\" [heading]=\"'order.quantity' | translate\" [optional]=\"false\">\n <ng-template let-line=\"item\">\n <input\n type=\"number\"\n class=\"draft-qty mr-1\"\n min=\"0\"\n [value]=\"getInitialLineQuantity(line.id)\"\n (input)=\"updateLineQuantity(line, $event.target.value)\"\n />\n <button\n class=\"button-small\"\n *ngIf=\"isAddedLine(line)\"\n (click)=\"removeAddedItem(line.id)\"\n >\n <clr-icon shape=\"trash\"></clr-icon>\n </button>\n <vdr-line-refunds [line]=\"line\" [payments]=\"order.payments\"></vdr-line-refunds>\n <vdr-line-fulfillment\n [line]=\"line\"\n [allOrderFulfillments]=\"order.fulfillments\"\n [orderState]=\"order.state\"\n ></vdr-line-fulfillment>\n </ng-template>\n </vdr-dt2-column>\n <vdr-dt2-column\n *ngFor=\"let customField of orderLineCustomFields\"\n [id]=\"customField.name\"\n [heading]=\"customField | customFieldLabel : (uiLanguage$ | async)\"\n [hiddenByDefault]=\"true\"\n >\n <ng-template let-line=\"item\" let-index=\"index\">\n <vdr-custom-field-control\n [compact]=\"true\"\n [entityName]=\"'OrderLine'\"\n [customField]=\"customField\"\n [customFieldsFormGroup]=\"orderLineCustomFieldsFormArray.at(index)\"\n />\n </ng-template>\n </vdr-dt2-column>\n </vdr-data-table-2>\n </vdr-card>\n <vdr-card [title]=\"'order.add-item-to-order' | translate\">\n <vdr-product-variant-selector class=\"mb-4\" (productSelected)=\"addItemSelectedVariant = $event\">\n </vdr-product-variant-selector>\n <div class=\"flex\">\n <div>\n <div *ngIf=\"addItemSelectedVariant\" class=\"flex mb-4\">\n <img\n *ngIf=\"addItemSelectedVariant.productAsset as asset\"\n [src]=\"asset | assetPreview : 'tiny'\"\n class=\"mr-4 add-item-thumb\"\n />\n <div>\n <strong class=\"mr-4\">{{ addItemSelectedVariant.productVariantName }}</strong>\n <small>{{ addItemSelectedVariant.sku }}</small>\n <div>\n {{\n getSelectedItemPrice(addItemSelectedVariant)\n | localeCurrency : order.currencyCode\n }}\n </div>\n </div>\n </div>\n <div *ngIf=\"addItemSelectedVariant\">\n <vdr-tabbed-custom-fields\n entityName=\"Order\"\n [customFields]=\"orderLineCustomFields\"\n [customFieldsFormGroup]=\"addItemCustomFieldsForm\"\n ></vdr-tabbed-custom-fields>\n </div>\n </div>\n <div class=\"flex-spacer\"></div>\n <div>\n <button\n *ngIf=\"addItemSelectedVariant\"\n class=\"btn btn-secondary\"\n [disabled]=\"!addItemSelectedVariant || addItemCustomFieldsForm.invalid\"\n (click)=\"addItemToOrder(addItemSelectedVariant)\"\n >\n {{ 'order.add-item-to-order' | translate }}\n </button>\n </div>\n </div>\n </vdr-card>\n <vdr-card [title]=\"'order.shipping' | translate\">\n <div *ngFor=\"let shippingLine of order.shippingLines\" class=\"flex items-center\">\n <ng-container *ngIf=\"getShippingLineDetails(shippingLine) as details\">\n <div>{{ details.name }}:</div>\n <div class=\"mx-1\">\n {{ details.price | localeCurrency : order.currencyCode }}\n </div>\n <button class=\"button-small\" (click)=\"setShippingMethod(shippingLine.id)\">\n {{ 'order.set-shipping-method' | translate }}\n </button>\n </ng-container>\n </div>\n </vdr-card>\n <vdr-card [title]=\"'order.add-surcharge' | translate\">\n <form [formGroup]=\"surchargeForm\" (submit)=\"addSurcharge(surchargeForm.value)\">\n <div class=\"form-grid\">\n <vdr-form-field [label]=\"'common.description' | translate\" for=\"description\"\n ><input id=\"description\" type=\"text\" formControlName=\"description\"\n /></vdr-form-field>\n <vdr-form-field [label]=\"'order.product-sku' | translate\" for=\"sku\"\n ><input id=\"sku\" type=\"text\" formControlName=\"sku\"\n /></vdr-form-field>\n <vdr-form-field [label]=\"'common.price' | translate\" for=\"price\">\n <vdr-currency-input\n [currencyCode]=\"order.currencyCode\"\n id=\"price\"\n formControlName=\"price\"\n ></vdr-currency-input>\n </vdr-form-field>\n <vdr-form-field\n [label]=\"\n 'catalog.price-includes-tax-at'\n | translate : { rate: surchargeForm.get('taxRate')?.value ?? 0 }\n \"\n for=\"priceIncludesTax\"\n ><input\n id=\"priceIncludesTax\"\n type=\"checkbox\"\n clrCheckbox\n formControlName=\"priceIncludesTax\"\n /></vdr-form-field>\n <vdr-form-field [label]=\"'order.tax-rate' | translate\" for=\"taxRate\">\n <vdr-affixed-input suffix=\"%\"\n ><input id=\"taxRate\" type=\"number\" min=\"0\" max=\"100\" formControlName=\"taxRate\"\n /></vdr-affixed-input>\n </vdr-form-field>\n <vdr-form-field [label]=\"'order.tax-description' | translate\" for=\"taxDescription\"\n ><input id=\"taxDescription\" type=\"text\" formControlName=\"taxDescription\"\n /></vdr-form-field>\n </div>\n <button\n class=\"btn btn-secondary mt-2\"\n [disabled]=\"\n surchargeForm.invalid ||\n surchargeForm.pristine ||\n surchargeForm.get('price')?.value === 0 ||\n !surchargeForm.get('description')?.value\n \"\n >\n {{ 'order.add-surcharge' | translate }}\n </button>\n </form>\n </vdr-card>\n </vdr-page-block>\n</vdr-page-detail-layout>\n","import { ChangeDetectionStrategy, Component, OnInit } from '@angular/core';\nimport { marker as _ } from '@biesbjerg/ngx-translate-extract-marker';\nimport {\n ChannelService,\n GetOrderListDocument,\n getOrderStateTranslationToken,\n LogicalOperator,\n OrderListOptions,\n OrderType,\n ServerConfigService,\n TypedBaseListComponent,\n} from '@vendure/admin-ui/core';\nimport { Order } from '@vendure/common/lib/generated-types';\nimport { tap } from 'rxjs/operators';\n\n@Component({\n selector: 'vdr-order-list',\n templateUrl: './order-list.component.html',\n styleUrls: ['./order-list.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: false,\n})\nexport class OrderListComponent\n extends TypedBaseListComponent<typeof GetOrderListDocument, 'orders'>\n implements OnInit\n{\n dataTableListId = 'order-list';\n orderStates = this.serverConfigService.getOrderProcessStates().map(item => item.name);\n readonly OrderType = OrderType;\n readonly customFields = this.getCustomFieldConfig('Order');\n readonly filters = this.createFilterCollection()\n .addIdFilter()\n .addDateFilters()\n .addFilter({\n name: 'active',\n type: { kind: 'boolean' },\n label: _('order.filter-is-active'),\n filterField: 'active',\n })\n .addFilter({\n name: 'totalWithTax',\n type: { kind: 'number', inputType: 'currency', currencyCode: 'USD' },\n label: _('order.total'),\n filterField: 'totalWithTax',\n })\n .addFilter({\n name: 'state',\n type: {\n kind: 'select',\n options: this.orderStates.map(s => ({ value: s, label: getOrderStateTranslationToken(s) })),\n },\n label: _('order.state'),\n filterField: 'state',\n })\n .addFilter({\n name: 'type',\n type: {\n kind: 'select',\n options: [\n { value: OrderType.Regular, label: _('order.order-type-regular') },\n { value: OrderType.Aggregate, label: _('order.order-type-aggregate') },\n { value: OrderType.Seller, label: _('order.order-type-seller') },\n ],\n },\n label: _('order.order-type'),\n filterField: 'type',\n })\n .addFilter({\n name: 'orderPlacedAt',\n type: { kind: 'dateRange' },\n label: _('order.placed-at'),\n filterField: 'orderPlacedAt',\n })\n .addFilter({\n name: 'customerLastName',\n type: { kind: 'text' },\n label: _('customer.last-name'),\n filterField: 'customerLastName',\n })\n .addFilter({\n name: 'transactionId',\n type: { kind: 'text' },\n label: _('order.transaction-id'),\n filterField: 'transactionId',\n })\n .addCustomFieldFilters(this.customFields)\n .connectToRoute(this.route);\n\n readonly sorts = this.createSortCollection()\n .defaultSort('updatedAt', 'DESC')\n .addSort({ name: 'id' })\n .addSort({ name: 'createdAt' })\n .addSort({ name: 'updatedAt' })\n .addSort({ name: 'orderPlacedAt' })\n .addSort({ name: 'customerLastName' })\n .addSort({ name: 'state' })\n .addSort({ name: 'totalWithTax' })\n .addCustomFieldSorts(this.customFields)\n .connectToRoute(this.route);\n\n canCreateDraftOrder = false;\n private activeChannelIsDefaultChannel = false;\n\n constructor(\n protected serverConfigService: ServerConfigService,\n private channelService: ChannelService,\n ) {\n super();\n super.configure({\n document: GetOrderListDocument,\n getItems: result => result.orders,\n setVariables: (skip, take) => this.createQueryOptions(skip, take, this.searchTermControl.value),\n refreshListOnChanges: [this.filters.valueChanges, this.sorts.valueChanges],\n });\n\n this.canCreateDraftOrder = !!this.serverConfigService\n .getOrderProcessStates()\n .find(state => state.name === 'Created')\n ?.to.includes('Draft');\n }\n\n ngOnInit() {\n super.ngOnInit();\n const isDefaultChannel$ = this.channelService.defaultChannelIsActive$.pipe(\n tap(isDefault => (this.activeChannelIsDefaultChannel = isDefault)),\n );\n super.refreshListOnChanges(this.filters.valueChanges, this.sorts.valueChanges, isDefaultChannel$);\n }\n\n private createQueryOptions(\n // eslint-disable-next-line @typescript-eslint/no-shadow\n skip: number,\n take: number,\n searchTerm: string | null,\n ): { options: OrderListOptions } {\n let filterInput = this.filters.createFilterInput();\n if (this.activeChannelIsDefaultChannel) {\n filterInput = {\n ...(filterInput ?? {}),\n };\n }\n if (searchTerm) {\n filterInput = {\n code: {\n contains: searchTerm,\n },\n customerLastName: {\n contains: searchTerm,\n },\n transactionId: {\n contains: searchTerm,\n },\n };\n }\n return {\n options: {\n skip,\n take,\n filter: {\n ...(filterInput ?? {}),\n },\n filterOperator: searchTerm ? LogicalOperator.OR : LogicalOperator.AND,\n sort: this.sorts.createSortInput(),\n },\n };\n }\n\n getShippingNames(order: Order) {\n if (order.shippingLines.length) {\n return order.shippingLines.map(shippingLine => shippingLine.shippingMethod.name).join(', ');\n } else {\n return '';\n }\n }\n}\n","<vdr-page-block>\n <vdr-action-bar>\n <vdr-ab-right>\n <vdr-action-bar-items locationId=\"order-list\" />\n <ng-container *ngIf=\"canCreateDraftOrder\">\n <a class=\"btn\" *vdrIfPermissions=\"['CreateOrder']\" [routerLink]=\"['./draft/create']\">\n <clr-icon shape=\"plus\"></clr-icon>\n {{ 'catalog.create-draft-order' | translate }}\n </a>\n </ng-container>\n <vdr-action-bar-dropdown-menu locationId=\"order-list\" />\n </vdr-ab-right>\n </vdr-action-bar>\n</vdr-page-block>\n<vdr-data-table-2\n class=\"mt-2\"\n [id]=\"dataTableListId\"\n [items]=\"items$ | async\"\n [itemsPerPage]=\"itemsPerPage$ | async\"\n [totalItems]=\"totalItems$ | async\"\n [currentPage]=\"currentPage$ | async\"\n [filters]=\"filters\"\n (pageChange)=\"setPageNumber($event)\"\n (itemsPerPageChange)=\"setItemsPerPage($event)\"\n (visibleColumnsChange)=\"setVisibleColumns($event)\"\n>\n <vdr-bulk-action-menu\n locationId=\"order-list\"\n [hostComponent]=\"this\"\n [selectionManager]=\"selectionManager\"\n ></vdr-bulk-action-menu>\n <vdr-dt2-search\n [searchTermControl]=\"searchTermControl\"\n [searchTermPlaceholder]=\"'order.search-by-order-filters' | translate\"\n />\n <vdr-dt2-column [heading]=\"'common.id' | translate\" id=\"id\" [hiddenByDefault]=\"true\" [sort]=\"sorts.get('id')\">\n <ng-template let-order=\"item\">\n {{ order.id }}\n </ng-template>\n </vdr-dt2-column>\n <vdr-dt2-column [heading]=\"'common.created-at' | translate\" id=\"created-at\" [hiddenByDefault]=\"true\">\n <ng-template let-order=\"item\">\n {{ order.createdAt | localeDate : 'short' }}\n </ng-template>\n </vdr-dt2-column>\n <vdr-dt2-column [heading]=\"'common.code' | translate\" id=\"code\" [optional]=\"false\">\n <ng-template let-order=\"item\">\n <a class=\"button-ghost\" [routerLink]=\"order.state === 'Draft' ? ['./draft', order.id] : ['./', order.id]\"\n ><span>{{ order.code }}</span>\n <clr-icon shape=\"arrow right\"></clr-icon>\n </a>\n </ng-template>\n </vdr-dt2-column>\n <vdr-dt2-column [heading]=\"'order.customer' | translate\" id=\"customer\" [sort]=\"sorts.get('customerLastName')\">\n <ng-template let-order=\"item\">\n <vdr-customer-label\n [customer]=\"order.customer\"\n (click)=\"$event.stopPropagation()\"\n ></vdr-customer-label>\n </ng-template>\n </vdr-dt2-column>\n <vdr-dt2-column [heading]=\"'order.order-type' | translate\" id=\"order-type\" [hiddenByDefault]=\"true\">\n <ng-template let-order=\"item\">\n <vdr-chip *ngIf=\"order.type === OrderType.Regular\">{{ 'order.order-type-regular' | translate }}</vdr-chip>\n <vdr-chip *ngIf=\"order.type === OrderType.Aggregate\">{{ 'order.order-type-aggregate' | translate }}</vdr-chip>\n <vdr-chip *ngIf=\"order.type === OrderType.Seller\">{{ 'order.order-type-seller' | translate }}</vdr-chip>\n </ng-template>\n </vdr-dt2-column>\n <vdr-dt2-column [heading]=\"'order.state' | translate\" id=\"state\" [sort]=\"sorts.get('state')\">\n <ng-template let-order=\"item\">\n <vdr-order-state-label [state]=\"order.state\"></vdr-order-state-label>\n </ng-template>\n </vdr-dt2-column>\n <vdr-dt2-column [heading]=\"'order.total' | translate\" id=\"total\" [sort]=\"sorts.get('totalWithTax')\">\n <ng-template let-order=\"item\">\n {{ order.totalWithTax | localeCurrency : order.currencyCode }}\n </ng-template>\n </vdr-dt2-column>\n <vdr-dt2-column [heading]=\"'common.updated-at' | translate\" id=\"updated-at\">\n <ng-template let-order=\"item\">\n {{ order.updatedAt | timeAgo }}\n </ng-template>\n </vdr-dt2-column>\n <vdr-dt2-column [heading]=\"'order.placed-at' | translate\" id=\"placed-at\" [sort]=\"sorts.get('orderPlacedAt')\">\n <ng-template let-order=\"item\">\n {{ order.orderPlacedAt | localeDate : 'short' }}\n </ng-template>\n </vdr-dt2-column>\n <vdr-dt2-column [heading]=\"'order.shipping' | translate\" id=\"shipping\">\n <ng-template let-order=\"item\">\n {{ getShippingNames(order) }}\n </ng-template>\n </vdr-dt2-column>\n <vdr-dt2-custom-field-column\n *ngFor=\"let customField of customFields\"\n [customField]=\"customField\"\n [sorts]=\"sorts\"\n />\n</vdr-data-table-2>\n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\nimport { CurrencyCode, OrderDetailFragment } from '@vendure/admin-ui/core';\n\n@Component({\n selector: 'vdr-refund-detail',\n templateUrl: './refund-detail.component.html',\n styleUrls: ['./refund-detail.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: false\n})\nexport class RefundDetailComponent {\n @Input() refund: NonNullable<OrderDetailFragment['payments']>[number]['refunds'][number];\n @Input() currencyCode: CurrencyCode;\n}\n","<vdr-labeled-data [label]=\"'order.amount' | translate\">\n {{ refund.total | localeCurrency: currencyCode }}\n</vdr-labeled-data>\n<vdr-labeled-data *ngIf=\"refund.transactionId\" [label]=\"'order.transaction-id' | translate\">\n {{ refund.transactionId }}\n</vdr-labeled-data>\n<vdr-labeled-data [label]=\"'order.payment-metadata' | translate\">\n <vdr-object-tree [value]=\"refund.metadata\"></vdr-object-tree>\n</vdr-labeled-data>\n","import { ADDRESS_FRAGMENT } from '@vendure/admin-ui/core';\nimport { gql } from 'apollo-angular';\n\nexport const GET_CUSTOMER_ADDRESSES = gql`\n query GetCustomerAddresses($customerId: ID!) {\n customer(id: $customerId) {\n id\n addresses {\n ...Address\n }\n }\n }\n ${ADDRESS_FRAGMENT}\n`;\n","import { Injectable } from '@angular/core';\nimport { ActivatedRouteSnapshot, Router, RouterStateSnapshot, UrlTree } from '@angular/router';\nimport { DataService, GetOrderStateQuery, GetOrderStateQueryVariables } from '@vendure/admin-ui/core';\nimport { gql } from 'apollo-angular';\nimport { Observable } from 'rxjs';\nimport { map } from 'rxjs/operators';\n\nexport const GET_ORDER_STATE = gql`\n query GetOrderState($id: ID!) {\n order(id: $id) {\n id\n state\n }\n }\n`;\n\n@Injectable({\n providedIn: 'root',\n})\nexport class OrderGuard {\n constructor(private dataService: DataService, private router: Router) {}\n\n canActivate(\n route: ActivatedRouteSnapshot,\n state: RouterStateSnapshot,\n ): Observable<boolean | UrlTree> | Promise<boolean | UrlTree> | boolean | UrlTree {\n const isDraft = state.url.includes('orders/draft');\n const isModifying = state.url.includes('/modify');\n const id = route.paramMap.get('id');\n if (isDraft) {\n if (id === 'create') {\n return this.dataService.order\n .createDraftOrder()\n .pipe(\n map(({ createDraftOrder }) =>\n this.router.parseUrl(`/orders/draft/${createDraftOrder.id}`),\n ),\n );\n } else {\n return true;\n }\n } else {\n return (\n this.dataService\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n .query<GetOrderStateQuery, GetOrderStateQueryVariables>(GET_ORDER_STATE, { id: id! })\n .single$.pipe(\n map(({ order }) => {\n if (order?.state === 'Modifying' && !isModifying) {\n return this.router.parseUrl(`/orders/${id}/modify`);\n } else {\n return true;\n }\n }),\n )\n );\n }\n }\n}\n","import { Route } from '@angular/router';\nimport { marker as _ } from '@biesbjerg/ngx-translate-extract-marker';\nimport { PageComponent, PageService } from '@vendure/admin-ui/core';\nimport { OrderGuard } from './providers/routing/order.guard';\n\nexport const createRoutes = (pageService: PageService): Route[] => [\n {\n path: '',\n component: PageComponent,\n data: {\n locationId: 'order-list',\n breadcrumb: _('breadcrumb.orders'),\n },\n children: pageService.getPageTabRoutes('order-list'),\n },\n {\n path: 'draft/:id',\n component: PageComponent,\n canActivate: [OrderGuard],\n data: {\n locationId: 'draft-order-detail',\n breadcrumb: { label: _('breadcrumb.orders'), link: ['../'] },\n },\n children: pageService.getPageTabRoutes('draft-order-detail'),\n },\n {\n path: ':id',\n component: PageComponent,\n canActivate: [OrderGuard],\n data: {\n locationId: 'order-detail',\n breadcrumb: { label: _('breadcrumb.orders'), link: ['../'] },\n },\n children: pageService.getPageTabRoutes('order-detail'),\n },\n {\n path: ':aggregateOrderId/seller-orders/:id',\n component: PageComponent,\n canActivate: [OrderGuard],\n data: {\n locationId: 'order-detail',\n breadcrumb: { label: _('breadcrumb.orders'), link: ['../'] },\n },\n children: pageService.getPageTabRoutes('order-detail'),\n },\n {\n path: ':id/modify',\n component: PageComponent,\n canActivate: [OrderGuard],\n data: {\n locationId: 'modify-order',\n breadcrumb: { label: _('breadcrumb.orders'), link: ['../'] },\n },\n children: pageService.getPageTabRoutes('modify-order'),\n },\n];\n","import { NgModule } from '@angular/core';\nimport { RouterModule, ROUTES } from '@angular/router';\nimport { marker as _ } from '@biesbjerg/ngx-translate-extract-marker';\nimport {\n detailComponentWithResolver,\n OrderDetailQueryDocument,\n OrderType,\n PageService,\n SharedModule,\n} from '@vendure/admin-ui/core';\n\nimport { AddManualPaymentDialogComponent } from './components/add-manual-payment-dialog/add-manual-payment-dialog.component';\nimport { CancelOrderDialogComponent } from './components/cancel-order-dialog/cancel-order-dialog.component';\nimport { CouponCodeSelectorComponent } from './components/coupon-code-selector/coupon-code-selector.component';\nimport { DraftOrderDetailComponent } from './components/draft-order-detail/draft-order-detail.component';\nimport { DraftOrderVariantSelectorComponent } from './components/draft-order-variant-selector/draft-order-variant-selector.component';\nimport { FulfillOrderDialogComponent } from './components/fulfill-order-dialog/fulfill-order-dialog.component';\nimport { FulfillmentCardComponent } from './components/fulfillment-card/fulfillment-card.component';\nimport { FulfillmentDetailComponent } from './components/fulfillment-detail/fulfillment-detail.component';\nimport { FulfillmentStateLabelComponent } from './components/fulfillment-state-label/fulfillment-state-label.component';\nimport { LineFulfillmentComponent } from './components/line-fulfillment/line-fulfillment.component';\nimport { LineRefundsComponent } from './components/line-refunds/line-refunds.component';\nimport { ModificationDetailComponent } from './components/modification-detail/modification-detail.component';\nimport { OrderCustomFieldsCardComponent } from './components/order-custom-fields-card/order-custom-fields-card.component';\nimport { OrderTotalColumnComponent } from './components/order-data-table/order-total-column.component';\nimport { OrderDetailComponent } from './components/order-detail/order-detail.component';\nimport { OrderEditorComponent } from './components/order-editor/order-editor.component';\nimport { OrderEditsPreviewDialogComponent } from './components/order-edits-preview-dialog/order-edits-preview-dialog.component';\nimport { OrderHistoryEntryHostComponent } from './components/order-history/order-history-entry-host.component';\nimport { OrderHistoryComponent } from './components/order-history/order-history.component';\nimport { OrderListComponent } from './components/order-list/order-list.component';\nimport { OrderPaymentCardComponent } from './components/order-payment-card/order-payment-card.component';\nimport { OrderProcessGraphDialogComponent } from './components/order-process-graph-dialog/order-process-graph-dialog.component';\nimport { OrderProcessEdgeComponent } from './components/order-process-graph/order-process-edge.component';\nimport { OrderProcessGraphComponent } from './components/order-process-graph/order-process-graph.component';\nimport { OrderProcessNodeComponent } from './components/order-process-graph/order-process-node.component';\nimport { OrderStateSelectDialogComponent } from './components/order-state-select-dialog/order-state-select-dialog.component';\nimport { OrderTableComponent } from './components/order-table/order-table.component';\nimport { PaymentDetailComponent } from './components/payment-detail/payment-detail.component';\nimport { PaymentStateLabelComponent } from './components/payment-state-label/payment-state-label.component';\nimport { RefundDetailComponent } from './components/refund-detail/refund-detail.component';\nimport { RefundOrderDialogComponent } from './components/refund-order-dialog/refund-order-dialog.component';\nimport { RefundStateLabelComponent } from './components/refund-state-label/refund-state-label.component';\nimport { SelectAddressDialogComponent } from './components/select-address-dialog/select-address-dialog.component';\nimport { SelectCustomerDialogComponent } from './components/select-customer-dialog/select-customer-dialog.component';\nimport { SelectShippingMethodDialogComponent } from './components/select-shipping-method-dialog/select-shipping-method-dialog.component';\nimport { SellerOrdersCardComponent } from './components/seller-orders-card/seller-orders-card.component';\nimport { SettleRefundDialogComponent } from './components/settle-refund-dialog/settle-refund-dialog.component';\nimport { SimpleItemListComponent } from './components/simple-item-list/simple-item-list.component';\nimport { createRoutes } from './order.routes';\nimport { OrderDataTableComponent } from './components/order-data-table/order-data-table.component';\nimport { PaymentForRefundSelectorComponent } from './components/payment-for-refund-selector/payment-for-refund-selector.component';\nimport { OrderModificationSummaryComponent } from './components/order-modification-summary/order-modification-summary.component';\n\n@NgModule({\n imports: [SharedModule, RouterModule.forChild([])],\n providers: [\n {\n provide: ROUTES,\n useFactory: (pageService: PageService) => createRoutes(pageService),\n multi: true,\n deps: [PageService],\n },\n ],\n declarations: [\n OrderListComponent,\n OrderDetailComponent,\n FulfillOrderDialogComponent,\n LineFulfillmentComponent,\n RefundOrderDialogComponent,\n CancelOrderDialogComponent,\n PaymentStateLabelComponent,\n LineRefundsComponent,\n OrderPaymentCardComponent,\n RefundStateLabelComponent,\n SettleRefundDialogComponent,\n OrderHistoryComponent,\n FulfillmentDetailComponent,\n PaymentDetailComponent,\n SimpleItemListComponent,\n OrderCustomFieldsCardComponent,\n OrderProcessGraphComponent,\n OrderProcessNodeComponent,\n OrderProcessEdgeComponent,\n OrderProcessGraphDialogComponent,\n FulfillmentStateLabelComponent,\n FulfillmentCardComponent,\n OrderEditorComponent,\n OrderTableComponent,\n OrderEditsPreviewDialogComponent,\n ModificationDetailComponent,\n AddManualPaymentDialogComponent,\n OrderStateSelectDialogComponent,\n DraftOrderDetailComponent,\n DraftOrderVariantSelectorComponent,\n SelectCustomerDialogComponent,\n SelectAddressDialogComponent,\n CouponCodeSelectorComponent,\n SelectShippingMethodDialogComponent,\n OrderHistoryEntryHostComponent,\n SellerOrdersCardComponent,\n OrderDataTableComponent,\n OrderTotalColumnComponent,\n PaymentForRefundSelectorComponent,\n OrderModificationSummaryComponent,\n RefundDetailComponent,\n ],\n exports: [OrderCustomFieldsCardComponent],\n})\nexport class OrderModule {\n private static hasRegisteredTabsAndBulkActions = false;\n\n constructor(pageService: PageService) {\n if (OrderModule.hasRegisteredTabsAndBulkActions) {\n return;\n }\n pageService.registerPageTab({\n priority: 0,\n location: 'order-list',\n tab: _('order.orders'),\n route: '',\n component: OrderListComponent,\n });\n pageService.registerPageTab({\n priority: 0,\n location: 'order-detail',\n tab: _('order.order'),\n route: '',\n component: detailComponentWithResolver({\n component: OrderDetailComponent,\n query: OrderDetailQueryDocument,\n entityKey: 'order',\n getBreadcrumbs: entity =>\n entity?.type !== OrderType.Seller || !entity?.aggregateOrder\n ? [\n {\n label: `${entity?.code}`,\n link: [entity?.id],\n },\n ]\n : [\n {\n label: `${entity?.aggregateOrder?.code}`,\n link: ['/orders/', entity?.aggregateOrder?.id],\n },\n {\n label: _('breadcrumb.seller-orders'),\n link: ['/orders/', entity?.aggregateOrder?.id],\n },\n {\n label: `${entity?.code}`,\n link: [entity?.id],\n },\n ],\n }),\n });\n pageService.registerPageTab({\n priority: 0,\n location: 'draft-order-detail',\n tab: _('order.order'),\n route: '',\n component: detailComponentWithResolver({\n component: DraftOrderDetailComponent,\n query: OrderDetailQueryDocument,\n entityKey: 'order',\n getBreadcrumbs: entity => [\n {\n label: _('order.draft-order'),\n link: [entity?.id],\n },\n ],\n }),\n });\n pageService.registerPageTab({\n priority: 0,\n location: 'modify-order',\n tab: _('order.order'),\n route: '',\n component: detailComponentWithResolver({\n component: OrderEditorComponent,\n query: OrderDetailQueryDocument,\n entityKey: 'order',\n getBreadcrumbs: entity => [\n {\n label: entity?.code || 'order',\n link: ['/orders/', entity?.id],\n },\n {\n label: _('breadcrumb.modifying-order'),\n link: [entity?.id],\n },\n ],\n }),\n });\n OrderModule.hasRegisteredTabsAndBulkActions = true;\n }\n}\n","// This file was generated by the build-public-api.ts script\nexport * from './common/get-refundable-payments';\nexport * from './common/modify-order-types';\nexport * from './components/add-manual-payment-dialog/add-manual-payment-dialog.component';\nexport * from './components/cancel-order-dialog/cancel-order-dialog.component';\nexport * from './components/coupon-code-selector/coupon-code-selector.component';\nexport * from './components/draft-order-detail/draft-order-detail.component';\nexport * from './components/draft-order-variant-selector/draft-order-variant-selector.component';\nexport * from './components/fulfill-order-dialog/fulfill-order-dialog.component';\nexport * from './components/fulfillment-card/fulfillment-card.component';\nexport * from './components/fulfillment-detail/fulfillment-detail.component';\nexport * from './components/fulfillment-state-label/fulfillment-state-label.component';\nexport * from './components/line-fulfillment/line-fulfillment.component';\nexport * from './components/line-refunds/line-refunds.component';\nexport * from './components/modification-detail/modification-detail.component';\nexport * from './components/order-custom-fields-card/order-custom-fields-card.component';\nexport * from './components/order-data-table/order-data-table.component';\nexport * from './components/order-data-table/order-total-column.component';\nexport * from './components/order-detail/order-detail.component';\nexport * from './components/order-editor/order-editor.component';\nexport * from './components/order-edits-preview-dialog/order-edits-preview-dialog.component';\nexport * from './components/order-history/order-history-entry-host.component';\nexport * from './components/order-history/order-history.component';\nexport * from './components/order-list/order-list.component';\nexport * from './components/order-modification-summary/order-modification-summary.component';\nexport * from './components/order-payment-card/order-payment-card.component';\nexport * from './components/order-process-graph/constants';\nexport * from './components/order-process-graph/order-process-edge.component';\nexport * from './components/order-process-graph/order-process-graph.component';\nexport * from './components/order-process-graph/order-process-node.component';\nexport * from './components/order-process-graph/types';\nexport * from './components/order-process-graph-dialog/order-process-graph-dialog.component';\nexport * from './components/order-state-select-dialog/order-state-select-dialog.component';\nexport * from './components/order-table/order-table.component';\nexport * from './components/payment-detail/payment-detail.component';\nexport * from './components/payment-for-refund-selector/payment-for-refund-selector.component';\nexport * from './components/payment-state-label/payment-state-label.component';\nexport * from './components/refund-detail/refund-detail.component';\nexport * from './components/refund-order-dialog/refund-order-dialog.component';\nexport * from './components/refund-state-label/refund-state-label.component';\nexport * from './components/select-address-dialog/select-address-dialog.component';\nexport * from './components/select-address-dialog/select-address-dialog.graphql';\nexport * from './components/select-customer-dialog/select-customer-dialog.component';\nexport * from './components/select-shipping-method-dialog/select-shipping-method-dialog.component';\nexport * from './components/seller-orders-card/seller-orders-card.component';\nexport * from './components/seller-orders-card/seller-orders-card.graphql';\nexport * from './components/settle-refund-dialog/settle-refund-dialog.component';\nexport * from './components/simple-item-list/simple-item-list.component';\nexport * from './order.module';\nexport * from './order.routes';\nexport * from './providers/order-transition.service';\nexport * from './providers/routing/order.guard';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["i3","i4","i5","_","i2","i6","i1","i5.LineFulfillmentComponent","i6.LineRefundsComponent","i7.OrderDataTableComponent","i8.OrderTotalColumnComponent","i9","i2.OrderTransitionService","i5.OrderCustomFieldsCardComponent","i6.OrderTableComponent","i7.DraftOrderVariantSelectorComponent","i8.CouponCodeSelectorComponent","i3.SimpleItemListComponent","i4.FulfillmentDetailComponent","i5.FulfillmentStateLabelComponent","i2.OrderProcessNodeComponent","i3.OrderProcessEdgeComponent","i2.OrderProcessGraphComponent","i7.PaymentForRefundSelectorComponent","i8","i5.PaymentStateLabelComponent","i6.RefundStateLabelComponent","i7.PaymentDetailComponent","i6.FulfillmentDetailComponent","i8.SimpleItemListComponent","i9.ModificationDetailComponent","i10.OrderHistoryEntryHostComponent","i11","i6.OrderPaymentCardComponent","i7.OrderHistoryComponent","i8.FulfillmentCardComponent","i9.OrderTableComponent","i10.SellerOrdersCardComponent","i5.OrderTableComponent","i6.PaymentForRefundSelectorComponent","i7.OrderModificationSummaryComponent","i6.LineFulfillmentComponent","i7.LineRefundsComponent","i9.OrderModificationSummaryComponent","i10"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"vendure-admin-ui-order.mjs","sources":["../../src/lib/order/src/common/get-refundable-payments.ts","../../src/lib/order/src/components/add-manual-payment-dialog/add-manual-payment-dialog.component.ts","../../src/lib/order/src/components/add-manual-payment-dialog/add-manual-payment-dialog.component.html","../../src/lib/order/src/components/cancel-order-dialog/cancel-order-dialog.component.ts","../../src/lib/order/src/components/cancel-order-dialog/cancel-order-dialog.component.html","../../src/lib/order/src/components/coupon-code-selector/coupon-code-selector.component.ts","../../src/lib/order/src/components/coupon-code-selector/coupon-code-selector.component.html","../../src/lib/order/src/components/select-address-dialog/select-address-dialog.component.ts","../../src/lib/order/src/components/select-address-dialog/select-address-dialog.component.html","../../src/lib/order/src/components/select-customer-dialog/select-customer-dialog.component.ts","../../src/lib/order/src/components/select-customer-dialog/select-customer-dialog.component.html","../../src/lib/order/src/components/select-shipping-method-dialog/select-shipping-method-dialog.component.ts","../../src/lib/order/src/components/select-shipping-method-dialog/select-shipping-method-dialog.component.html","../../src/lib/order/src/components/order-state-select-dialog/order-state-select-dialog.component.ts","../../src/lib/order/src/components/order-state-select-dialog/order-state-select-dialog.component.html","../../src/lib/order/src/providers/order-transition.service.ts","../../src/lib/order/src/components/order-custom-fields-card/order-custom-fields-card.component.ts","../../src/lib/order/src/components/order-custom-fields-card/order-custom-fields-card.component.html","../../src/lib/order/src/components/line-fulfillment/line-fulfillment.component.ts","../../src/lib/order/src/components/line-fulfillment/line-fulfillment.component.html","../../src/lib/order/src/components/line-refunds/line-refunds.component.ts","../../src/lib/order/src/components/line-refunds/line-refunds.component.html","../../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.ts","../../src/lib/order/src/components/order-data-table/order-data-table.component.html","../../src/lib/order/src/components/order-table/order-table.component.ts","../../src/lib/order/src/components/order-table/order-table.component.html","../../src/lib/order/src/components/draft-order-variant-selector/draft-order-variant-selector.component.ts","../../src/lib/order/src/components/draft-order-variant-selector/draft-order-variant-selector.component.html","../../src/lib/order/src/components/draft-order-detail/draft-order-detail.component.ts","../../src/lib/order/src/components/draft-order-detail/draft-order-detail.component.html","../../src/lib/order/src/components/fulfill-order-dialog/fulfill-order-dialog.component.ts","../../src/lib/order/src/components/fulfill-order-dialog/fulfill-order-dialog.component.html","../../src/lib/order/src/components/simple-item-list/simple-item-list.component.ts","../../src/lib/order/src/components/simple-item-list/simple-item-list.component.html","../../src/lib/order/src/components/fulfillment-detail/fulfillment-detail.component.ts","../../src/lib/order/src/components/fulfillment-detail/fulfillment-detail.component.html","../../src/lib/order/src/components/fulfillment-state-label/fulfillment-state-label.component.ts","../../src/lib/order/src/components/fulfillment-state-label/fulfillment-state-label.component.html","../../src/lib/order/src/components/fulfillment-card/fulfillment-card.component.ts","../../src/lib/order/src/components/fulfillment-card/fulfillment-card.component.html","../../src/lib/order/src/components/modification-detail/modification-detail.component.ts","../../src/lib/order/src/components/modification-detail/modification-detail.component.html","../../src/lib/order/src/components/order-process-graph/constants.ts","../../src/lib/order/src/components/order-process-graph/order-process-node.component.ts","../../src/lib/order/src/components/order-process-graph/order-process-node.component.html","../../src/lib/order/src/components/order-process-graph/order-process-edge.component.ts","../../src/lib/order/src/components/order-process-graph/order-process-edge.component.html","../../src/lib/order/src/components/order-process-graph/order-process-graph.component.ts","../../src/lib/order/src/components/order-process-graph/order-process-graph.component.html","../../src/lib/order/src/components/order-process-graph-dialog/order-process-graph-dialog.component.ts","../../src/lib/order/src/components/order-process-graph-dialog/order-process-graph-dialog.component.html","../../src/lib/order/src/components/payment-for-refund-selector/payment-for-refund-selector.component.ts","../../src/lib/order/src/components/payment-for-refund-selector/payment-for-refund-selector.component.html","../../src/lib/order/src/components/refund-order-dialog/refund-order-dialog.component.ts","../../src/lib/order/src/components/refund-order-dialog/refund-order-dialog.component.html","../../src/lib/order/src/components/settle-refund-dialog/settle-refund-dialog.component.ts","../../src/lib/order/src/components/settle-refund-dialog/settle-refund-dialog.component.html","../../src/lib/order/src/components/payment-state-label/payment-state-label.component.ts","../../src/lib/order/src/components/payment-state-label/payment-state-label.component.html","../../src/lib/order/src/components/refund-state-label/refund-state-label.component.ts","../../src/lib/order/src/components/refund-state-label/refund-state-label.component.html","../../src/lib/order/src/components/payment-detail/payment-detail.component.ts","../../src/lib/order/src/components/payment-detail/payment-detail.component.html","../../src/lib/order/src/components/order-payment-card/order-payment-card.component.ts","../../src/lib/order/src/components/order-payment-card/order-payment-card.component.html","../../src/lib/order/src/components/order-history/order-history-entry-host.component.ts","../../src/lib/order/src/components/order-history/order-history.component.ts","../../src/lib/order/src/components/order-history/order-history.component.html","../../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.ts","../../src/lib/order/src/components/seller-orders-card/seller-orders-card.component.html","../../src/lib/order/src/components/order-detail/order-detail.component.ts","../../src/lib/order/src/components/order-detail/order-detail.component.html","../../src/lib/order/src/components/order-modification-summary/order-modification-summary.component.ts","../../src/lib/order/src/components/order-modification-summary/order-modification-summary.component.html","../../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.ts","../../src/lib/order/src/components/order-editor/order-editor.component.html","../../src/lib/order/src/components/order-list/order-list.component.ts","../../src/lib/order/src/components/order-list/order-list.component.html","../../src/lib/order/src/components/refund-detail/refund-detail.component.ts","../../src/lib/order/src/components/refund-detail/refund-detail.component.html","../../src/lib/order/src/components/select-address-dialog/select-address-dialog.graphql.ts","../../src/lib/order/src/providers/routing/order.guard.ts","../../src/lib/order/src/order.routes.ts","../../src/lib/order/src/order.module.ts","../../src/lib/order/src/public_api.ts","../../src/lib/order/src/vendure-admin-ui-order.ts"],"sourcesContent":["import { FormControl, Validators } from '@angular/forms';\nimport { OrderDetailFragment } from '@vendure/admin-ui/core';\nimport { summate } from '@vendure/common/lib/shared-utils';\n\nexport type Payment = NonNullable<OrderDetailFragment['payments']>[number];\nexport type RefundablePayment = Payment & {\n refundableAmount: number;\n amountToRefundControl: FormControl<number>;\n selected: boolean;\n};\n\nexport function getRefundablePayments(payments: OrderDetailFragment['payments']): RefundablePayment[] {\n const settledPayments = (payments || []).filter(p => p.state === 'Settled');\n return settledPayments.map((payment, index) => {\n const refundableAmount =\n payment.amount -\n summate(\n payment.refunds.filter(r => r.state !== 'Failed'),\n 'total',\n );\n return {\n ...payment,\n refundableAmount,\n amountToRefundControl: new FormControl(0, {\n nonNullable: true,\n validators: [Validators.min(0), Validators.max(refundableAmount)],\n }),\n selected: index === 0,\n };\n });\n}\n","import { ChangeDetectionStrategy, Component, OnInit } from '@angular/core';\nimport { UntypedFormControl, UntypedFormGroup, Validators } from '@angular/forms';\nimport {\n CurrencyCode,\n DataService,\n Dialog,\n GetAddManualPaymentMethodListDocument,\n GetAddManualPaymentMethodListQuery,\n GetPaymentMethodListQuery,\n ItemOf,\n ManualPaymentInput,\n PAYMENT_METHOD_FRAGMENT,\n} from '@vendure/admin-ui/core';\nimport { gql } from 'apollo-angular';\nimport { Observable } from 'rxjs';\n\nconst GET_PAYMENT_METHODS_FOR_MANUAL_ADD = gql`\n query GetAddManualPaymentMethodList($options: PaymentMethodListOptions!) {\n paymentMethods(options: $options) {\n items {\n id\n createdAt\n updatedAt\n name\n code\n description\n enabled\n }\n totalItems\n }\n }\n`;\n\n@Component({\n selector: 'vdr-add-manual-payment-dialog',\n templateUrl: './add-manual-payment-dialog.component.html',\n styleUrls: ['./add-manual-payment-dialog.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: false,\n})\nexport class AddManualPaymentDialogComponent implements OnInit, Dialog<Omit<ManualPaymentInput, 'orderId'>> {\n // populated by ModalService call\n outstandingAmount: number;\n currencyCode: CurrencyCode;\n\n resolveWith: (result?: Omit<ManualPaymentInput, 'orderId'>) => void;\n form = new UntypedFormGroup({\n method: new UntypedFormControl('', Validators.required),\n transactionId: new UntypedFormControl('', Validators.required),\n });\n paymentMethods$: Observable<Array<ItemOf<GetAddManualPaymentMethodListQuery, 'paymentMethods'>>>;\n constructor(private dataService: DataService) {}\n\n ngOnInit(): void {\n this.paymentMethods$ = this.dataService\n .query(GetAddManualPaymentMethodListDocument, {\n options: {\n take: 999,\n },\n })\n .mapSingle(data => data.paymentMethods.items);\n }\n\n submit() {\n const formValue = this.form.value;\n this.resolveWith({\n method: formValue.method,\n transactionId: formValue.transactionId,\n });\n }\n\n cancel() {\n this.resolveWith();\n }\n}\n","<ng-template vdrDialogTitle>{{ 'order.add-payment-to-order' | translate }}</ng-template>\n<form [formGroup]=\"form\">\n <vdr-form-field [label]=\"'order.payment-method' | translate\" for=\"method\">\n <ng-select\n [items]=\"paymentMethods$ | async\"\n bindLabel=\"code\"\n appendTo=\"body\"\n autofocus\n bindValue=\"code\"\n [addTag]=\"true\"\n formControlName=\"method\"\n ></ng-select>\n </vdr-form-field>\n <vdr-form-field [label]=\"'order.transaction-id' | translate\" for=\"transactionId\">\n <input id=\"transactionId\" type=\"text\" formControlName=\"transactionId\" />\n </vdr-form-field>\n</form>\n<ng-template vdrDialogButtons>\n <button type=\"button\" class=\"btn\" (click)=\"cancel()\">{{ 'common.cancel' | translate }}</button>\n <button type=\"submit\" (click)=\"submit()\" class=\"btn btn-primary\" [disabled]=\"form.invalid || form.pristine\">\n {{ 'order.add-payment' | translate }} ({{ outstandingAmount | localeCurrency: currencyCode }})\n </button>\n</ng-template>\n","import { ChangeDetectionStrategy, Component, OnInit } from '@angular/core';\nimport { marker as _ } from '@biesbjerg/ngx-translate-extract-marker';\nimport {\n CancelOrderInput,\n Dialog,\n getAppConfig,\n I18nService,\n OrderDetailFragment,\n OrderLineInput,\n} from '@vendure/admin-ui/core';\n\n@Component({\n selector: 'vdr-cancel-order-dialog',\n templateUrl: './cancel-order-dialog.component.html',\n styleUrls: ['./cancel-order-dialog.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: false,\n})\nexport class CancelOrderDialogComponent implements OnInit, Dialog<CancelOrderInput> {\n order: OrderDetailFragment;\n cancelAll = true;\n resolveWith: (result?: CancelOrderInput) => void;\n reason: string;\n lineQuantities: { [lineId: string]: number } = {};\n reasons: string[] = getAppConfig().cancellationReasons ?? [\n _('order.cancel-reason-customer-request'),\n _('order.cancel-reason-not-available'),\n ];\n\n get selectionCount(): number {\n return Object.values(this.lineQuantities).reduce((sum, n) => sum + n, 0);\n }\n\n constructor(private i18nService: I18nService) {\n this.reasons = this.reasons.map(r => this.i18nService.translate(r));\n }\n\n ngOnInit() {\n this.lineQuantities = this.order.lines.reduce(\n (result, line) => ({ ...result, [line.id]: line.quantity }),\n {},\n );\n }\n\n radioChanged() {\n if (this.cancelAll) {\n for (const line of this.order.lines) {\n this.lineQuantities[line.id] = line.quantity;\n }\n } else {\n for (const line of this.order.lines) {\n this.lineQuantities[line.id] = 0;\n }\n }\n }\n\n checkIfAllSelected() {\n for (const [lineId, quantity] of Object.entries(this.lineQuantities)) {\n const quantityInOrder = this.order.lines.find(line => line.id === lineId)?.quantity;\n if (quantityInOrder && quantity < quantityInOrder) {\n return;\n }\n }\n // If we got here, all of the selected quantities are equal to the order\n // line quantities, i.e. everything is selected.\n this.cancelAll = true;\n }\n\n select() {\n this.resolveWith({\n orderId: this.order.id,\n lines: this.getLineInputs(),\n reason: this.reason,\n cancelShipping: this.cancelAll,\n });\n }\n\n cancel() {\n this.resolveWith();\n }\n\n private getLineInputs(): OrderLineInput[] | undefined {\n if (this.order.active) {\n return;\n }\n return Object.entries(this.lineQuantities)\n .map(([orderLineId, quantity]) => ({\n orderLineId,\n quantity,\n }))\n .filter(l => 0 < l.quantity);\n }\n}\n","<ng-template vdrDialogTitle>{{ 'order.cancel-order' | translate }}</ng-template>\n\n<div class=\"fulfillment-wrapper\">\n <div class=\"order-lines\">\n <table class=\"table\">\n <thead>\n <tr>\n <th></th>\n <th>{{ 'order.product-name' | translate }}</th>\n <th>{{ 'order.product-sku' | translate }}</th>\n <th>{{ 'order.quantity' | translate }}</th>\n <th>{{ 'order.unit-price' | translate }}</th>\n <th>{{ 'order.cancel' | translate }}</th>\n </tr>\n </thead>\n <tr\n *ngFor=\"let line of order.lines\"\n class=\"order-line\"\n [class.is-disabled]=\"cancelAll\"\n [class.is-cancelled]=\"line.quantity === 0\"\n >\n <td class=\"align-middle thumb\">\n <img [src]=\"line.featuredAsset | assetPreview: 'tiny'\" />\n </td>\n <td class=\"align-middle name\">{{ line.productVariant.name }}</td>\n <td class=\"align-middle sku\">{{ line.productVariant.sku }}</td>\n <td class=\"align-middle quantity\">{{ line.quantity }}</td>\n <td class=\"align-middle quantity\">\n {{ line.unitPriceWithTax | localeCurrency: order.currencyCode }}\n </td>\n <td class=\"align-middle fulfil\">\n <input\n *ngIf=\"line.quantity > 0 && !order.active; else nonEditable\"\n [(ngModel)]=\"lineQuantities[line.id]\"\n (input)=\"checkIfAllSelected()\"\n [disabled]=\"cancelAll\"\n type=\"number\"\n [max]=\"line.quantity\"\n min=\"0\"\n />\n <ng-template #nonEditable>{{ line.quantity }}</ng-template>\n </td>\n </tr>\n </table>\n </div>\n <div class=\"cancellation-details\">\n <ng-container *ngIf=\"order.active !== true\">\n <clr-radio-wrapper>\n <input\n type=\"radio\"\n clrRadio\n [value]=\"true\"\n [(ngModel)]=\"cancelAll\"\n name=\"options\"\n (ngModelChange)=\"radioChanged()\"\n />\n <label>{{ 'order.cancel-entire-order' | translate }}</label>\n </clr-radio-wrapper>\n <clr-radio-wrapper>\n <input\n type=\"radio\"\n clrRadio\n [value]=\"false\"\n [(ngModel)]=\"cancelAll\"\n name=\"options\"\n (ngModelChange)=\"radioChanged()\"\n />\n <label>{{ 'order.cancel-specified-items' | translate }}</label>\n </clr-radio-wrapper>\n </ng-container>\n <label class=\"clr-control-label\">{{ 'order.cancellation-reason' | translate }}</label>\n <ng-select\n [items]=\"reasons\"\n bindLabel=\"name\"\n autofocus\n bindValue=\"id\"\n [addTag]=\"true\"\n [(ngModel)]=\"reason\"\n ></ng-select>\n </div>\n</div>\n\n<ng-template vdrDialogButtons>\n <button type=\"button\" class=\"btn\" (click)=\"cancel()\">{{ 'common.cancel' | translate }}</button>\n <button\n type=\"submit\"\n (click)=\"select()\"\n [disabled]=\"!reason || (!order.active && selectionCount === 0)\"\n class=\"btn btn-primary\"\n >\n <ng-container *ngIf=\"!order.active\">\n {{ 'order.cancel-selected-items' | translate }}\n </ng-container>\n <ng-container *ngIf=\"order.active\">\n {{ 'order.cancel-order' | translate }}\n </ng-container>\n </button>\n</ng-template>\n","import { ChangeDetectionStrategy, Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { UntypedFormControl } from '@angular/forms';\nimport {\n DataService,\n GetCouponCodeSelectorPromotionListDocument,\n PROMOTION_FRAGMENT,\n} from '@vendure/admin-ui/core';\nimport { gql } from 'apollo-angular';\nimport { concat, Observable, Subject } from 'rxjs';\nimport { debounceTime, distinctUntilChanged, map, skip, startWith, switchMap } from 'rxjs/operators';\n\nexport const GET_COUPON_CODE_SELECTOR_PROMOTION_LIST = gql`\n query GetCouponCodeSelectorPromotionList($options: PromotionListOptions) {\n promotions(options: $options) {\n items {\n id\n name\n couponCode\n }\n totalItems\n }\n }\n`;\n\n@Component({\n selector: 'vdr-coupon-code-selector',\n templateUrl: './coupon-code-selector.component.html',\n styleUrls: ['./coupon-code-selector.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: false,\n})\nexport class CouponCodeSelectorComponent implements OnInit {\n @Input() couponCodes: string[];\n @Input() control: UntypedFormControl | undefined;\n @Output() addCouponCode = new EventEmitter<string>();\n @Output() removeCouponCode = new EventEmitter<string>();\n availableCouponCodes$: Observable<Array<{ code: string; promotionName: string }>>;\n couponCodeInput$ = new Subject<string>();\n constructor(private dataService: DataService) {}\n\n ngOnInit(): void {\n this.availableCouponCodes$ = concat(\n this.couponCodeInput$.pipe(\n debounceTime(200),\n distinctUntilChanged(),\n switchMap(\n term =>\n this.dataService.query(GetCouponCodeSelectorPromotionListDocument, {\n options: {\n take: 10,\n skip: 0,\n filter: {\n couponCode: { contains: term },\n },\n },\n }).single$,\n ),\n map(({ promotions }) =>\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n promotions.items.map(p => ({ code: p.couponCode!, promotionName: p.name })),\n ),\n startWith([]),\n ),\n );\n if (!this.control) {\n this.control = new UntypedFormControl(this.couponCodes ?? []);\n }\n }\n\n remove(code: string) {\n this.removeCouponCode.emit(code);\n }\n}\n","<ng-select\n [items]=\"availableCouponCodes$ | async\"\n appendTo=\"body\"\n bindLabel=\"code\"\n bindValue=\"code\"\n [addTag]=\"false\"\n [multiple]=\"true\"\n [hideSelected]=\"true\"\n [minTermLength]=\"2\"\n typeToSearchText=\"\"\n [typeahead]=\"couponCodeInput$\"\n [formControl]=\"control\"\n (add)=\"addCouponCode.emit($event.code)\"\n (remove)=\"remove($event.code)\"\n>\n <ng-template ng-option-tmp let-item=\"item\">\n <div class=\"flex items-center\">\n <vdr-chip class=\"mr-1\">{{ item.code }}</vdr-chip>\n <span>{{ item.promotionName }}</span>\n </div>\n </ng-template>\n</ng-select>\n","import { ChangeDetectionStrategy, Component, OnInit } from '@angular/core';\nimport { UntypedFormBuilder, UntypedFormGroup, Validators } from '@angular/forms';\nimport {\n AddressFragment,\n CreateAddressInput,\n DataService,\n Dialog,\n GetAvailableCountriesQuery,\n GetCustomerAddressesDocument,\n OrderAddressFragment,\n} from '@vendure/admin-ui/core';\nimport { pick } from '@vendure/common/lib/pick';\nimport { Observable, of } from 'rxjs';\nimport { tap } from 'rxjs/operators';\n\nimport { Customer } from '../select-customer-dialog/select-customer-dialog.component';\n\n@Component({\n selector: 'vdr-select-address-dialog',\n templateUrl: './select-address-dialog.component.html',\n styleUrls: ['./select-address-dialog.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: false\n})\nexport class SelectAddressDialogComponent implements OnInit, Dialog<CreateAddressInput> {\n resolveWith: (result?: CreateAddressInput) => void;\n availableCountries$: Observable<GetAvailableCountriesQuery['countries']['items']>;\n addresses$: Observable<AddressFragment[]>;\n customerId: string | undefined;\n currentAddress: OrderAddressFragment | undefined;\n addressForm: UntypedFormGroup;\n selectedAddress: AddressFragment | undefined;\n useExisting = true;\n createNew = false;\n\n constructor(private dataService: DataService, private formBuilder: UntypedFormBuilder) {}\n\n ngOnInit(): void {\n this.addressForm = this.formBuilder.group({\n fullName: [this.currentAddress?.fullName ?? ''],\n company: [this.currentAddress?.company ?? ''],\n streetLine1: [this.currentAddress?.streetLine1 ?? '', Validators.required],\n streetLine2: [this.currentAddress?.streetLine2 ?? ''],\n city: [this.currentAddress?.city ?? '', Validators.required],\n province: [this.currentAddress?.province ?? ''],\n postalCode: [this.currentAddress?.postalCode ?? '', Validators.required],\n countryCode: [this.currentAddress?.countryCode ?? '', Validators.required],\n phoneNumber: [this.currentAddress?.phoneNumber ?? ''],\n });\n this.useExisting = !!this.customerId;\n this.addresses$ = this.customerId\n ? this.dataService\n .query(GetCustomerAddressesDocument, { customerId: this.customerId })\n .mapSingle(({ customer }) => customer?.addresses ?? [])\n .pipe(\n tap(addresses => {\n if (this.currentAddress) {\n this.selectedAddress = addresses.find(\n a =>\n a.streetLine1 === this.currentAddress?.streetLine1 &&\n a.postalCode === this.currentAddress?.postalCode,\n );\n }\n if (addresses.length === 0) {\n this.createNew = true;\n this.useExisting = false;\n }\n }),\n )\n : of([]);\n this.availableCountries$ = this.dataService.settings\n .getAvailableCountries()\n .mapSingle(({ countries }) => countries.items);\n }\n\n trackByFn(item: Customer) {\n return item.id;\n }\n\n addressIdFn(item: AddressFragment) {\n return item.streetLine1 + item.postalCode;\n }\n\n cancel() {\n this.resolveWith();\n }\n\n select() {\n if (this.useExisting && this.selectedAddress) {\n this.resolveWith({\n ...pick(this.selectedAddress, [\n 'fullName',\n 'company',\n 'streetLine1',\n 'streetLine2',\n 'city',\n 'province',\n 'phoneNumber',\n 'postalCode',\n ]),\n countryCode: this.selectedAddress.country.code,\n });\n }\n if (this.createNew && this.addressForm.valid) {\n const formValue = this.addressForm.value;\n this.resolveWith(formValue);\n }\n }\n}\n","<ng-template vdrDialogTitle>{{ 'order.select-address' | translate }}</ng-template>\n\n<clr-tabs *ngIf=\"addresses$ | async as addresses\">\n <clr-tab *ngIf=\"customerId && addresses.length\">\n <button clrTabLink>{{ 'order.existing-address' | translate }}</button>\n <ng-template [(clrIfActive)]=\"useExisting\">\n <clr-tab-content>\n <vdr-radio-card-fieldset\n class=\"block mt-4\"\n [idFn]=\"addressIdFn\"\n [selectedItemId]=\"selectedAddress && addressIdFn(selectedAddress)\"\n (selectItem)=\"selectedAddress = $event\"\n >\n <vdr-radio-card *ngFor=\"let address of addresses\" [item]=\"address\">\n <vdr-formatted-address [address]=\"address\"></vdr-formatted-address>\n </vdr-radio-card>\n </vdr-radio-card-fieldset>\n </clr-tab-content>\n </ng-template>\n </clr-tab>\n <clr-tab>\n <button clrTabLink>{{ 'customer.create-new-address' | translate }}</button>\n\n <ng-template [(clrIfActive)]=\"createNew\">\n <clr-tab-content>\n <vdr-address-form\n [formGroup]=\"addressForm\"\n [availableCountries]=\"availableCountries$ | async\"\n ></vdr-address-form>\n </clr-tab-content>\n </ng-template>\n </clr-tab>\n</clr-tabs>\n\n<ng-template vdrDialogButtons>\n <button type=\"button\" class=\"btn\" (click)=\"cancel()\">{{ 'common.cancel' | translate }}</button>\n <button\n type=\"submit\"\n (click)=\"select()\"\n [disabled]=\"(useExisting && !selectedAddress) || (createNew && addressForm.invalid)\"\n class=\"btn btn-primary\"\n >\n {{ 'common.okay' | translate }}\n </button>\n</ng-template>\n","import { ChangeDetectionStrategy, Component, OnInit } from '@angular/core';\nimport { UntypedFormBuilder, UntypedFormGroup, Validators } from '@angular/forms';\nimport { CreateCustomerInput, DataService, Dialog, GetCustomerListQuery } from '@vendure/admin-ui/core';\nimport { concat, Observable, of, Subject } from 'rxjs';\nimport { catchError, debounceTime, distinctUntilChanged, switchMap, tap } from 'rxjs/operators';\nimport { marker as _ } from '@biesbjerg/ngx-translate-extract-marker';\n\nexport type Customer = GetCustomerListQuery['customers']['items'][number];\nexport type SelectCustomerDialogResult = (Customer | CreateCustomerInput) & { note: string };\n\n@Component({\n selector: 'vdr-select-customer-dialog',\n templateUrl: './select-customer-dialog.component.html',\n styleUrls: ['./select-customer-dialog.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: false\n})\nexport class SelectCustomerDialogComponent implements OnInit, Dialog<SelectCustomerDialogResult> {\n resolveWith: (result?: SelectCustomerDialogResult) => void;\n\n // populated by the dialog service\n canCreateNew = true;\n includeNoteInput = false;\n title: string = _('order.set-customer-for-order');\n\n customerForm: UntypedFormGroup;\n customers$: Observable<Customer[]>;\n isLoading = false;\n input$ = new Subject<string>();\n selectedCustomer: Customer[] = [];\n useExisting = true;\n createNew = false;\n note = '';\n\n constructor(private dataService: DataService, private formBuilder: UntypedFormBuilder) {\n this.customerForm = this.formBuilder.group({\n title: '',\n firstName: ['', Validators.required],\n lastName: ['', Validators.required],\n phoneNumber: '',\n emailAddress: ['', [Validators.required, Validators.email]],\n });\n }\n\n ngOnInit(): void {\n this.customers$ = concat(\n of([]), // default items\n this.input$.pipe(\n debounceTime(200),\n distinctUntilChanged(),\n tap(() => (this.isLoading = true)),\n switchMap(term =>\n this.dataService.customer\n .getCustomerList(10, 0, term)\n .mapStream(({ customers }) => customers.items)\n .pipe(\n catchError(() => of([])), // empty list on error\n tap(() => (this.isLoading = false)),\n ),\n ),\n ),\n );\n }\n\n trackByFn(item: Customer) {\n return item.id;\n }\n\n cancel() {\n this.resolveWith();\n }\n\n select() {\n if (this.useExisting && this.selectedCustomer.length === 1) {\n this.resolveWith({ ...this.selectedCustomer[0], note: this.note });\n } else if (this.createNew && this.customerForm.valid) {\n const formValue = this.customerForm.value;\n this.resolveWith({ ...formValue, note: this.note });\n }\n }\n}\n","<ng-template vdrDialogTitle>{{ title | translate }}</ng-template>\n\n<ng-container *ngIf=\"!canCreateNew\">\n <ng-container *ngTemplateOutlet=\"customerSelect\"></ng-container>\n <vdr-form-field [label]=\"'common.add-note' | translate\" *ngIf=\"includeNoteInput\" class=\"mt-4\">\n <textarea [(ngModel)]=\"note\"></textarea>\n </vdr-form-field>\n</ng-container>\n\n<clr-tabs *ngIf=\"canCreateNew\" class=\"pt-1\">\n <clr-tab>\n <button clrTabLink>{{ 'order.existing-customer' | translate }}</button>\n\n <ng-template [(clrIfActive)]=\"useExisting\">\n <clr-tab-content>\n <div class=\"mt-4\">\n <ng-container *ngTemplateOutlet=\"customerSelect\"></ng-container>\n </div>\n </clr-tab-content>\n </ng-template>\n </clr-tab>\n <clr-tab *ngIf=\"canCreateNew\">\n <button clrTabLink>{{ 'customer.create-new-customer' | translate }}</button>\n\n <ng-template [(clrIfActive)]=\"createNew\">\n <clr-tab-content>\n <form [formGroup]=\"customerForm\">\n <vdr-form-field [label]=\"'customer.title' | translate\" for=\"title\">\n <input id=\"title\" type=\"text\" formControlName=\"title\" />\n </vdr-form-field>\n <vdr-form-field [label]=\"'customer.first-name' | translate\" for=\"firstName\">\n <input id=\"firstName\" type=\"text\" formControlName=\"firstName\" />\n </vdr-form-field>\n <vdr-form-field [label]=\"'customer.last-name' | translate\" for=\"lastName\">\n <input id=\"lastName\" type=\"text\" formControlName=\"lastName\" />\n </vdr-form-field>\n <vdr-form-field [label]=\"'customer.email-address' | translate\" for=\"emailAddress\">\n <input id=\"emailAddress\" type=\"text\" formControlName=\"emailAddress\" />\n </vdr-form-field>\n <vdr-form-field [label]=\"'customer.phone-number' | translate\" for=\"phoneNumber\">\n <input id=\"phoneNumber\" type=\"text\" formControlName=\"phoneNumber\" />\n </vdr-form-field>\n </form>\n </clr-tab-content>\n </ng-template>\n </clr-tab>\n</clr-tabs>\n\n<ng-template #customerSelect>\n <ng-select\n [items]=\"customers$ | async\"\n appendTo=\"body\"\n bindLabel=\"name\"\n [addTag]=\"false\"\n [multiple]=\"true\"\n [hideSelected]=\"true\"\n [trackByFn]=\"trackByFn\"\n [minTermLength]=\"2\"\n [loading]=\"isLoading\"\n [typeahead]=\"input$\"\n [(ngModel)]=\"selectedCustomer\"\n >\n <ng-template ng-label-tmp let-item=\"item\" let-clear=\"clear\">\n <span class=\"item-row\">\n <clr-icon shape=\"user\" class=\"is-solid\"></clr-icon\n ><span class=\"mx-1\">{{ item.firstName }} {{ item.lastName }}</span>\n <vdr-chip>{{ item.emailAddress }}</vdr-chip>\n </span>\n </ng-template>\n <ng-template ng-option-tmp let-item=\"item\">\n <span class=\"item-row\">\n <clr-icon shape=\"user\" class=\"is-solid\"></clr-icon\n ><span class=\"mx-1\">{{ item.firstName }} {{ item.lastName }}</span>\n <vdr-chip>{{ item.emailAddress }}</vdr-chip>\n </span>\n </ng-template>\n </ng-select>\n</ng-template>\n\n<ng-template vdrDialogButtons>\n <button type=\"button\" class=\"btn\" (click)=\"cancel()\">{{ 'common.cancel' | translate }}</button>\n <button\n type=\"submit\"\n (click)=\"select()\"\n [disabled]=\"(useExisting && selectedCustomer.length === 0) || (createNew && customerForm.invalid)\"\n class=\"btn btn-primary\"\n >\n {{ 'common.okay' | translate }}\n </button>\n</ng-template>\n","import { Component, OnInit, ChangeDetectionStrategy } from '@angular/core';\nimport {\n CreateAddressInput,\n CurrencyCode,\n Dialog,\n DraftOrderEligibleShippingMethodsQuery,\n} from '@vendure/admin-ui/core';\n\ntype ShippingMethodQuote =\n DraftOrderEligibleShippingMethodsQuery['eligibleShippingMethodsForDraftOrder'][number];\n\n@Component({\n selector: 'vdr-select-shipping-method-dialog',\n templateUrl: './select-shipping-method-dialog.component.html',\n styleUrls: ['./select-shipping-method-dialog.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: false\n})\nexport class SelectShippingMethodDialogComponent implements OnInit, Dialog<string> {\n resolveWith: (result?: string) => void;\n eligibleShippingMethods: ShippingMethodQuote[];\n currentSelectionId: string;\n currencyCode: CurrencyCode;\n selectedMethod: ShippingMethodQuote | undefined;\n\n ngOnInit(): void {\n if (this.currentSelectionId) {\n this.selectedMethod = this.eligibleShippingMethods.find(m => m.id === this.currentSelectionId);\n }\n }\n\n methodIdFn(item: ShippingMethodQuote) {\n return item.id;\n }\n\n cancel() {\n this.resolveWith();\n }\n\n select() {\n if (this.selectedMethod) {\n this.resolveWith(this.selectedMethod.id);\n }\n }\n}\n","<ng-template vdrDialogTitle>{{ 'order.select-shipping-method' | translate }}</ng-template>\n<vdr-radio-card-fieldset\n [idFn]=\"methodIdFn\"\n [selectedItemId]=\"selectedMethod?.id\"\n (selectItem)=\"selectedMethod = $event\"\n>\n <vdr-radio-card *ngFor=\"let quote of eligibleShippingMethods\" [item]=\"quote\">\n <div class=\"result-details\">\n <vdr-labeled-data [label]=\"'settings.shipping-method' | translate\">\n {{ quote.name }}\n </vdr-labeled-data>\n <div class=\"price-row\">\n <vdr-labeled-data [label]=\"'common.price' | translate\">\n {{ quote.price | localeCurrency: currencyCode }}\n </vdr-labeled-data>\n <vdr-labeled-data [label]=\"'common.price-with-tax' | translate\">\n {{ quote.priceWithTax | localeCurrency: currencyCode }}\n </vdr-labeled-data>\n </div>\n <vdr-object-tree *ngIf=\"quote.metadata\" [value]=\"quote.metadata\"></vdr-object-tree>\n </div>\n </vdr-radio-card>\n</vdr-radio-card-fieldset>\n\n<ng-template vdrDialogButtons>\n <button type=\"button\" class=\"btn\" (click)=\"cancel()\">{{ 'common.cancel' | translate }}</button>\n <button\n type=\"submit\"\n (click)=\"select()\"\n [disabled]=\"!selectedMethod\"\n class=\"btn btn-primary\"\n >\n {{ 'common.okay' | translate }}\n </button>\n</ng-template>\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 standalone: false,\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","<ng-template vdrDialogTitle>{{ 'order.select-state' | translate }}</ng-template>\n<p>{{ message | translate }}</p>\n<vdr-form-field>\n <select name=\"state\" [(ngModel)]=\"selectedState\">\n <option *ngFor=\"let state of nextStates\" [value]=\"state\">\n {{ state | stateI18nToken | translate }}\n </option>\n </select>\n</vdr-form-field>\n<ng-template vdrDialogButtons>\n <button type=\"submit\" *ngIf=\"cancellable\" (click)=\"cancel()\" class=\"btn btn-secondary\">\n {{ 'common.cancel' | translate }}\n </button>\n <button type=\"submit\" (click)=\"select()\" class=\"btn btn-primary\" [disabled]=\"!selectedState\">\n {{ 'order.transition-to-state' | translate: { state: (selectedState | stateI18nToken | translate) } }}\n </button>\n</ng-template>\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 { ChangeDetectionStrategy, Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { UntypedFormBuilder, UntypedFormGroup } from '@angular/forms';\nimport { marker as _ } from '@biesbjerg/ngx-translate-extract-marker';\nimport { CustomFieldConfig, ModalService } from '@vendure/admin-ui/core';\n\n@Component({\n selector: 'vdr-order-custom-fields-card',\n templateUrl: './order-custom-fields-card.component.html',\n styleUrls: ['./order-custom-fields-card.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: false,\n})\nexport class OrderCustomFieldsCardComponent implements OnInit {\n @Input() customFieldsConfig: CustomFieldConfig[] = [];\n @Input() customFieldValues: { [name: string]: any } = {};\n @Output() updateClick = new EventEmitter<any>();\n customFieldForm: UntypedFormGroup;\n editable = false;\n constructor(\n private formBuilder: UntypedFormBuilder,\n private modalService: ModalService,\n ) {}\n\n ngOnInit() {\n this.customFieldForm = this.formBuilder.group({});\n for (const field of this.customFieldsConfig) {\n this.customFieldForm.addControl(\n field.name,\n this.formBuilder.control(this.customFieldValues[field.name]),\n );\n }\n }\n\n onUpdateClick() {\n this.updateClick.emit(this.customFieldForm.value);\n this.customFieldForm.markAsPristine();\n this.editable = false;\n }\n\n onCancelClick() {\n if (this.customFieldForm.dirty) {\n this.modalService\n .dialog({\n title: _('catalog.confirm-cancel'),\n buttons: [\n { type: 'secondary', label: _('common.keep-editing') },\n { type: 'danger', label: _('common.discard-changes'), returnValue: true },\n ],\n })\n .subscribe(result => {\n if (result) {\n this.customFieldForm.reset();\n this.customFieldForm.markAsPristine();\n this.editable = false;\n }\n });\n } else {\n this.editable = false;\n }\n }\n}\n","<div class=\"card\" *ngIf=\"customFieldsConfig.length\">\n <div class=\"card-header\">\n {{ 'common.custom-fields' | translate }}\n </div>\n <div class=\"card-block\">\n <div class=\"card-text custom-field-form\" [class.editable]=\"editable\">\n <vdr-tabbed-custom-fields\n entityName=\"Order\"\n [customFields]=\"customFieldsConfig\"\n [customFieldsFormGroup]=\"customFieldForm\"\n [readonly]=\"!editable\"\n [compact]=\"true\"\n ></vdr-tabbed-custom-fields>\n </div>\n </div>\n <div class=\"card-footer\">\n <button class=\"btn btn-sm btn-secondary\" (click)=\"editable = true\" *ngIf=\"!editable\">\n <clr-icon shape=\"pencil\"></clr-icon>\n {{ 'common.edit' | translate }}\n </button>\n <button\n class=\"btn btn-sm btn-primary\"\n (click)=\"onUpdateClick()\"\n *ngIf=\"editable\"\n [disabled]=\"customFieldForm.pristine || customFieldForm.invalid\"\n >\n <clr-icon shape=\"check\"></clr-icon>\n {{ 'common.update' | translate }}\n </button>\n <button\n class=\"btn btn-sm btn-secondary\"\n (click)=\"onCancelClick()\"\n *ngIf=\"editable\"\n >\n <clr-icon shape=\"times\"></clr-icon>\n {{ 'common.cancel' | translate }}\n </button>\n </div>\n</div>\n","import { ChangeDetectionStrategy, Component, Input, OnChanges, SimpleChanges } from '@angular/core';\nimport { OrderDetailFragment } from '@vendure/admin-ui/core';\nimport { notNullOrUndefined } from '@vendure/common/lib/shared-utils';\nimport { unique } from '@vendure/common/lib/unique';\n\nexport type FulfillmentStatus = 'full' | 'partial' | 'none';\ntype Fulfillment = NonNullable<OrderDetailFragment['fulfillments']>[number];\n\n@Component({\n selector: 'vdr-line-fulfillment',\n templateUrl: './line-fulfillment.component.html',\n styleUrls: ['./line-fulfillment.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: false,\n})\nexport class LineFulfillmentComponent implements OnChanges {\n @Input() line: OrderDetailFragment['lines'][number];\n @Input() allOrderFulfillments: OrderDetailFragment['fulfillments'];\n @Input() orderState: string;\n fulfilledCount = 0;\n fulfillmentStatus: FulfillmentStatus;\n fulfillments: Array<{\n count: number;\n fulfillment: Fulfillment;\n }> = [];\n\n ngOnChanges(changes: SimpleChanges): void {\n if (this.line) {\n this.fulfilledCount = this.getDeliveredCount(this.line);\n this.fulfillmentStatus = this.getFulfillmentStatus(this.fulfilledCount, this.line.quantity);\n this.fulfillments = this.getFulfillments(this.line);\n }\n }\n\n /**\n * Returns the number of items in an OrderLine which are fulfilled.\n */\n private getDeliveredCount(line: OrderDetailFragment['lines'][number]): number {\n return (\n line.fulfillmentLines?.reduce((sum, fulfillmentLine) => sum + fulfillmentLine.quantity, 0) ?? 0\n );\n }\n\n private getFulfillmentStatus(fulfilledCount: number, lineQuantity: number): FulfillmentStatus {\n if (fulfilledCount === lineQuantity) {\n return 'full';\n }\n if (0 < fulfilledCount && fulfilledCount < lineQuantity) {\n return 'partial';\n }\n return 'none';\n }\n\n private getFulfillments(\n line: OrderDetailFragment['lines'][number],\n ): Array<{ count: number; fulfillment: NonNullable<OrderDetailFragment['fulfillments']>[number] }> {\n return (\n line.fulfillmentLines\n ?.map(fulfillmentLine => {\n const fulfillment = this.allOrderFulfillments?.find(\n f => f.id === fulfillmentLine.fulfillmentId,\n );\n if (!fulfillment) {\n return;\n }\n return {\n count: fulfillmentLine.quantity,\n fulfillment,\n };\n })\n .filter(notNullOrUndefined) ?? []\n );\n }\n}\n","<vdr-dropdown class=\"search-settings-menu\" *ngIf=\"fulfilledCount || orderState === 'PartiallyDelivered'\">\n <button type=\"button\" class=\"icon-button\" vdrDropdownTrigger>\n <clr-icon *ngIf=\"fulfillmentStatus === 'full'\" class=\"item-fulfilled\" shape=\"check-circle\"></clr-icon>\n <clr-icon\n *ngIf=\"fulfillmentStatus === 'partial'\"\n class=\"item-partially-fulfilled\"\n shape=\"check-circle\"\n ></clr-icon>\n <clr-icon\n *ngIf=\"fulfillmentStatus === 'none'\"\n class=\"item-not-fulfilled\"\n shape=\"exclamation-circle\"\n ></clr-icon>\n </button>\n <vdr-dropdown-menu vdrPosition=\"bottom-right\">\n <label class=\"dropdown-header\" *ngIf=\"fulfillmentStatus === 'full'\">\n {{ 'order.line-fulfillment-all' | translate }}\n </label>\n <label class=\"dropdown-header\" *ngIf=\"fulfillmentStatus === 'partial'\">\n {{\n 'order.line-fulfillment-partial' | translate: { total: line.quantity, count: fulfilledCount }\n }}\n </label>\n <label class=\"dropdown-header\" *ngIf=\"fulfillmentStatus === 'none'\">\n {{ 'order.line-fulfillment-none' | translate }}\n </label>\n <div class=\"fulfillment-detail\" *ngFor=\"let item of fulfillments\">\n <div class=\"fulfillment-title\">\n {{ 'order.fulfillment' | translate }} #{{ item.fulfillment.id }} ({{\n 'order.item-count' | translate: { count: item.count }\n }})\n </div>\n <vdr-labeled-data [label]=\"'common.created-at' | translate\">\n {{ item.fulfillment.createdAt | localeDate: 'medium' }}\n </vdr-labeled-data>\n <vdr-labeled-data [label]=\"'order.fulfillment-method' | translate\">\n {{ item.fulfillment.method }}\n </vdr-labeled-data>\n <vdr-labeled-data\n *ngIf=\"item.fulfillment.trackingCode\"\n [label]=\"'order.tracking-code' | translate\"\n >\n {{ item.fulfillment.trackingCode }}\n </vdr-labeled-data>\n </div>\n </vdr-dropdown-menu>\n</vdr-dropdown>\n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\nimport { OrderDetailFragment, PaymentWithRefundsFragment } from '@vendure/admin-ui/core';\n\n@Component({\n selector: 'vdr-line-refunds',\n templateUrl: './line-refunds.component.html',\n styleUrls: ['./line-refunds.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: false,\n})\nexport class LineRefundsComponent {\n @Input() line: OrderDetailFragment['lines'][number];\n @Input() payments: PaymentWithRefundsFragment[];\n\n getRefundedCount(): number {\n const refundLines =\n this.payments\n ?.reduce(\n (all, payment) => [...all, ...payment.refunds],\n [] as PaymentWithRefundsFragment['refunds'],\n )\n .filter(refund => refund.state !== 'Failed')\n .reduce(\n (all, refund) => [...all, ...refund.lines],\n [] as Array<{ orderLineId: string; quantity: number }>,\n ) ?? [];\n\n return refundLines\n .filter(i => i.orderLineId === this.line.id)\n .reduce((sum, i) => sum + i.quantity, 0);\n }\n}\n","<span *ngIf=\"getRefundedCount()\" [title]=\"'order.refunded-count' | translate: { count: getRefundedCount() }\">\n <clr-icon shape=\"redo\" class=\"is-solid\" dir=\"down\"></clr-icon>\n</span>\n","import { Component } from '@angular/core';\nimport { DataTable2ColumnComponent } from '@vendure/admin-ui/core';\n\n@Component({\n selector: 'vdr-order-total-column',\n template: ``,\n exportAs: 'row',\n standalone: false,\n})\nexport class OrderTotalColumnComponent<T> extends DataTable2ColumnComponent<T> {\n orderable = false;\n}\n","import { ChangeDetectionStrategy, Component, ContentChildren, Input, QueryList } from '@angular/core';\nimport { DataTable2Component, OrderDetailFragment } from '@vendure/admin-ui/core';\nimport { OrderTotalColumnComponent } from './order-total-column.component';\n\n@Component({\n selector: 'vdr-order-data-table',\n templateUrl: './order-data-table.component.html',\n styleUrls: [\n '../../../../core/src/shared/components/data-table-2/data-table2.component.scss',\n './order-data-table.component.scss',\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: false,\n})\nexport class OrderDataTableComponent extends DataTable2Component<OrderDetailFragment> {\n @ContentChildren(OrderTotalColumnComponent) totalColumns: QueryList<OrderTotalColumnComponent<any>>;\n @Input() order: OrderDetailFragment;\n\n get allColumns() {\n return [...(this.columns ?? []), ...(this.customFieldColumns ?? []), ...(this.totalColumns ?? [])];\n }\n\n getPromotionLink(promotion: OrderDetailFragment['discounts'][number]): any[] {\n const id = promotion.adjustmentSource.split(':')[1];\n return ['/marketing', 'promotions', id];\n }\n\n getCouponCodeForAdjustment(\n order: OrderDetailFragment,\n promotionAdjustment: OrderDetailFragment['discounts'][number],\n ): string | undefined {\n const id = promotionAdjustment.adjustmentSource.split(':')[1];\n const promotion = order.promotions.find(p => p.id === id);\n if (promotion) {\n return promotion.couponCode || undefined;\n }\n }\n\n getShippingNames(order: OrderDetailFragment) {\n if (order.shippingLines.length) {\n return order.shippingLines.map(shippingLine => shippingLine.shippingMethod.name).join(', ');\n } else {\n return '';\n }\n }\n}\n","<div class=\"bulk-actions\">\n <ng-content select=\"vdr-bulk-action-menu\"></ng-content>\n</div>\n<div class=\"table-wrapper\">\n <table\n class=\"\"\n [class.no-select]=\"disableSelect\"\n >\n <thead [class.items-selected]=\"selectionManager?.selection.length\">\n <tr class=\"heading-row\">\n <th *ngIf=\"selectionManager\" class=\"selection-col\">\n <input\n type=\"checkbox\"\n clrCheckbox\n [checked]=\"selectionManager?.areAllCurrentItemsSelected()\"\n (change)=\"onToggleAllClick()\"\n />\n </th>\n <th\n *ngFor=\"let column of visibleSortedColumns; last as isLast\"\n [class.expand]=\"column.expand\"\n >\n <div class=\"cell-content\" [ngClass]=\"column.align\">\n <vdr-ui-extension-point\n [locationId]=\"id\"\n [metadata]=\"column.id\"\n api=\"dataTable\"\n [topPx]=\"-6\"\n [leftPx]=\"-24\"\n display=\"block\"\n >\n <span>{{ column.heading }}</span>\n </vdr-ui-extension-point>\n <div *ngIf=\"column.sort as sort\" class=\"sort-toggle\">\n <button (click)=\"sort.toggleSortOrder()\" [class.active]=\"sort.sortOrder\">\n <clr-icon *ngIf=\"!sort.sortOrder\" shape=\"two-way-arrows left\"></clr-icon>\n <clr-icon *ngIf=\"sort.sortOrder === 'ASC'\" shape=\"arrow up\"></clr-icon>\n <clr-icon *ngIf=\"sort.sortOrder === 'DESC'\" shape=\"arrow down\"></clr-icon>\n </button>\n <div class=\"sort-label\" *ngIf=\"sort.sortOrder\">{{ sort.sortOrder }}</div>\n </div>\n </div>\n </th>\n <th>\n <div class=\"column-picker\">\n <vdr-data-table-colum-picker\n [uiLanguage]=\"uiLanguage$ | async\"\n [columns]=\"sortedColumns\"\n (reorder)=\"onColumnReorder($event)\"\n (resetColumns)=\"onColumnsReset()\"\n ></vdr-data-table-colum-picker>\n </div>\n </th>\n </tr>\n <tr *ngIf=\"searchComponent || customSearchTemplate || filters?.length\">\n <th\n [attr.colspan]=\"visibleSortedColumns.length + (selectionManager ? 2 : 1)\"\n class=\"filter-row\"\n [class.active]=\"showSearchFilterRow\"\n >\n <button\n class=\"button-ghost toggle-search-filter-row\"\n [class.active]=\"showSearchFilterRow\"\n (click)=\"toggleSearchFilterRow()\"\n [title]=\"'common.search-and-filter-list' | translate\"\n >\n <clr-icon shape=\"search\"></clr-icon>\n </button>\n <div class=\"filter-row-wrapper\" [class.hidden]=\"!showSearchFilterRow\">\n <ng-container *ngTemplateOutlet=\"searchComponent?.template\"></ng-container>\n <ng-container *ngTemplateOutlet=\"customSearchTemplate\"></ng-container>\n <ng-container *ngIf=\"filters\">\n <div class=\"filters\">\n <vdr-data-table-filters\n *ngFor=\"let activeFilter of filters.activeFilters\"\n [filterWithValue]=\"activeFilter\"\n [filters]=\"filters\"\n class=\"mt-1\"\n ></vdr-data-table-filters>\n <vdr-data-table-filters\n *ngIf=\"filters.length\"\n [filters]=\"filters\"\n class=\"mt-1\"\n ></vdr-data-table-filters>\n </div>\n </ng-container>\n </div>\n </th>\n </tr>\n </thead>\n <tbody>\n <tr\n *ngFor=\"\n let item of items\n | paginate\n : {\n id: id,\n itemsPerPage: itemsPerPage,\n currentPage: currentPage,\n totalItems: totalItems\n };\n index as i;\n trackBy: trackByFn.bind(this)\n \"\n >\n <td *ngIf=\"selectionManager\" class=\"selection-col\" [class.active]=\"activeIndex === i\">\n <input\n type=\"checkbox\"\n clrCheckbox\n [checked]=\"selectionManager?.isSelected(item)\"\n (click)=\"onRowClick(item, $event)\"\n />\n </td>\n <td *ngFor=\"let column of visibleSortedColumns\" [class.active]=\"activeIndex === i\">\n <div class=\"cell-content\" [ngClass]=\"column.align\">\n <ng-container\n *ngIf=\"customComponents.get(column.id) as componentConfig; else defaultComponent\"\n >\n <ng-container\n *ngComponentOutlet=\"\n componentConfig.config.component;\n inputs: { rowItem: item };\n injector: componentConfig.injector\n \"\n ></ng-container>\n </ng-container>\n <ng-template #defaultComponent>\n <ng-container\n *ngTemplateOutlet=\"column.template; context: { item: item, index: i }\"\n ></ng-container>\n </ng-template>\n </div>\n </td>\n <td [class.active]=\"activeIndex === i\"><!-- column select --></td>\n </tr>\n <ng-container>\n <tr *ngIf=\"!items?.length\">\n <td [attr.colspan]=\"visibleSortedColumns.length + (selectionManager ? 2 : 1)\">\n <vdr-empty-placeholder [emptyStateLabel]=\"'order.order-is-empty' | translate\"></vdr-empty-placeholder>\n </td>\n </tr>\n </ng-container>\n <tr class=\"surcharge\" *ngFor=\"let surcharge of order.surcharges\">\n <td class=\"align-middle name left\" colspan=\"2\">{{ surcharge.description }}</td>\n <td class=\"align-middle sku\">{{ surcharge.sku }}</td>\n <td class=\"align-middle\" [attr.colspan]=\"visibleSortedColumns.length - 4\"></td>\n <td class=\"align-middle total\">\n {{ surcharge.priceWithTax | localeCurrency : order.currencyCode }}\n <div class=\"net-price\" [title]=\"'order.net-price' | translate\">\n {{ surcharge.price | localeCurrency : order.currencyCode }}\n </div>\n </td>\n <td><!-- column select --></td>\n </tr>\n <ng-container *ngFor=\"let discount of order.discounts\">\n <tr class=\"order-adjustment\" *ngIf=\"discount.type !== 'OTHER'\">\n <td [attr.colspan]=\"visibleSortedColumns.length - 1\" class=\"\">\n <a [routerLink]=\"getPromotionLink(discount)\">{{ discount.description }}</a>\n <vdr-chip *ngIf=\"getCouponCodeForAdjustment(order, discount) as couponCode\">{{\n couponCode\n }}</vdr-chip>\n </td>\n <td class=\"\">\n {{ discount.amountWithTax | localeCurrency : order.currencyCode }}\n <div class=\"net-price\" [title]=\"'order.net-price' | translate\">\n {{ discount.amount | localeCurrency : order.currencyCode }}\n </div>\n </td>\n <td><!-- column select --></td>\n </tr>\n </ng-container>\n <tr class=\"sub-total\">\n <td class=\"\">{{ 'order.sub-total' | translate }}</td>\n <td [attr.colspan]=\"visibleSortedColumns.length - 2\"></td>\n <td class=\"clr-align-middle\">\n {{ order.subTotalWithTax | localeCurrency : order.currencyCode }}\n <div class=\"net-price\" [title]=\"'order.net-price' | translate\">\n {{ order.subTotal | localeCurrency : order.currencyCode }}\n </div>\n </td>\n <td><!-- column select --></td>\n </tr>\n <tr class=\"shipping\">\n <td class=\"\">{{ 'order.shipping' | translate }}</td>\n <td [attr.colspan]=\"visibleSortedColumns.length - 2\">\n <vdr-chip *ngFor=\"let shippingLine of order.shippingLines\" class=\"shipping-method-name\">\n {{ shippingLine.shippingMethod.name }}\n </vdr-chip>\n </td>\n <td class=\"clr-align-middle\">\n {{ order.shippingWithTax | localeCurrency : order.currencyCode }}\n <div class=\"net-price\" [title]=\"'order.net-price' | translate\">\n {{ order.shipping | localeCurrency : order.currencyCode }}\n </div>\n </td>\n <td><!-- column select --></td>\n </tr>\n <tr class=\"total\">\n <td class=\"\">{{ 'order.total' | translate }}</td>\n <td [attr.colspan]=\"visibleSortedColumns.length - 2\"></td>\n <td class=\"clr-align-middle\">\n {{ order.totalWithTax | localeCurrency : order.currencyCode }}\n <div class=\"net-price\" [title]=\"'order.net-price' | translate\">\n {{ order.total | localeCurrency : order.currencyCode }}\n </div>\n </td>\n <td><!-- column select --></td>\n </tr>\n </tbody>\n </table>\n</div>\n","import { ChangeDetectionStrategy, Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { UntypedFormControl, UntypedFormGroup } from '@angular/forms';\nimport { AdjustmentType, CustomFieldConfig, OrderDetailFragment } from '@vendure/admin-ui/core';\n\n@Component({\n selector: 'vdr-order-table',\n templateUrl: './order-table.component.html',\n styleUrls: ['./order-table.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: false,\n})\nexport class OrderTableComponent implements OnInit {\n @Input() order: OrderDetailFragment;\n @Input() orderLineCustomFields: CustomFieldConfig[];\n @Input() isDraft = false;\n @Output() adjust = new EventEmitter<{ lineId: string; quantity: number }>();\n @Output() remove = new EventEmitter<{ lineId: string }>();\n orderLineCustomFieldsVisible = false;\n customFieldsForLine: {\n [lineId: string]: Array<{ config: CustomFieldConfig; formGroup: UntypedFormGroup; value: any }>;\n } = {};\n\n get visibleOrderLineCustomFields(): CustomFieldConfig[] {\n return this.orderLineCustomFieldsVisible ? this.orderLineCustomFields : [];\n }\n\n get showElided(): boolean {\n return !this.orderLineCustomFieldsVisible && 0 < this.orderLineCustomFields.length;\n }\n\n ngOnInit(): void {\n this.orderLineCustomFieldsVisible = this.orderLineCustomFields.length < 2;\n this.getLineCustomFields();\n }\n\n draftInputBlur(line: OrderDetailFragment['lines'][number], quantity: number) {\n if (line.quantity !== quantity) {\n this.adjust.emit({ lineId: line.id, quantity });\n }\n }\n\n toggleOrderLineCustomFields() {\n this.orderLineCustomFieldsVisible = !this.orderLineCustomFieldsVisible;\n }\n\n getLineDiscounts(line: OrderDetailFragment['lines'][number]) {\n return line.discounts.filter(a => a.type === AdjustmentType.PROMOTION);\n }\n\n private getLineCustomFields() {\n for (const line of this.order.lines) {\n const formGroup = new UntypedFormGroup({});\n const result = this.orderLineCustomFields\n .map(config => {\n const value = (line as any).customFields[config.name];\n formGroup.addControl(config.name, new UntypedFormControl(value));\n return {\n config,\n formGroup,\n value,\n };\n })\n .filter(field => (this.orderLineCustomFieldsVisible ? true : field.value != null));\n this.customFieldsForLine[line.id] = result;\n }\n }\n\n getPromotionLink(promotion: OrderDetailFragment['discounts'][number]): any[] {\n const id = promotion.adjustmentSource.split(':')[1];\n return ['/marketing', 'promotions', id];\n }\n\n getCouponCodeForAdjustment(\n order: OrderDetailFragment,\n promotionAdjustment: OrderDetailFragment['discounts'][number],\n ): string | undefined {\n const id = promotionAdjustment.adjustmentSource.split(':')[1];\n const promotion = order.promotions.find(p => p.id === id);\n if (promotion) {\n return promotion.couponCode || undefined;\n }\n }\n\n getShippingNames(order: OrderDetailFragment) {\n if (order.shippingLines.length) {\n return order.shippingLines.map(shippingLine => shippingLine.shippingMethod.name).join(', ');\n } else {\n return '';\n }\n }\n}\n","<vdr-order-data-table id=\"order-detail-list\" [items]=\"order.lines\" [order]=\"order\">\n <vdr-dt2-column id=\"id\" [heading]=\"'common.id' | translate\" [hiddenByDefault]=\"true\">\n <ng-template let-line=\"item\">\n {{ line.id }}\n </ng-template>\n </vdr-dt2-column>\n <vdr-dt2-column\n id=\"created-at\"\n [heading]=\"'common.created-at' | translate\"\n [hiddenByDefault]=\"true\"\n >\n <ng-template let-line=\"item\">\n {{ line.createdAt | localeDate : 'short' }}\n </ng-template>\n </vdr-dt2-column>\n <vdr-dt2-column\n id=\"updated-at\"\n [heading]=\"'common.updated-at' | translate\"\n [hiddenByDefault]=\"true\"\n >\n <ng-template let-line=\"item\">\n {{ line.updatedAt | localeDate : 'short' }}\n </ng-template>\n </vdr-dt2-column>\n <vdr-dt2-column [heading]=\"'common.image' | translate\" id=\"image\">\n <ng-template let-line=\"item\">\n <div class=\"image-placeholder\">\n <img\n *ngIf=\"line.featuredAsset as asset; else imagePlaceholder\"\n [src]=\"asset | assetPreview : 'tiny'\"\n />\n <ng-template #imagePlaceholder>\n <div class=\"placeholder\">\n <clr-icon shape=\"image\" size=\"48\"></clr-icon>\n </div>\n </ng-template>\n </div>\n </ng-template>\n </vdr-dt2-column>\n <vdr-dt2-column [heading]=\"'order.product-name' | translate\" id=\"product-name\">\n <ng-template let-line=\"item\">\n <a class=\"button-ghost\" [routerLink]=\"['/catalog/products', line.productVariant.product.id]\"\n ><span>{{ line.productVariant.product.name }}</span>\n <clr-icon shape=\"arrow right\"></clr-icon>\n </a>\n </ng-template>\n </vdr-dt2-column>\n <vdr-dt2-column [heading]=\"'order.product-variant' | translate\" id=\"product-variant\">\n <ng-template let-line=\"item\">\n <a class=\"button-ghost\" [routerLink]=\"['/catalog/products', line.productVariant.product.id, 'variants', line.productVariant.id]\"\n ><span>{{ line.productVariant.name }}</span>\n <clr-icon shape=\"arrow right\"></clr-icon>\n </a>\n </ng-template>\n </vdr-dt2-column>\n <vdr-dt2-column [heading]=\"'order.product-sku' | translate\" id=\"product-sku\">\n <ng-template let-line=\"item\">\n {{ line.productVariant.sku }}\n </ng-template>\n </vdr-dt2-column>\n <vdr-dt2-column [heading]=\"'order.unit-price' | translate\" id=\"unit-price\">\n <ng-template let-line=\"item\">\n <div class=\"unit-price\">\n {{ line.unitPriceWithTax | localeCurrency : order.currencyCode }}\n <div class=\"net-price\" [title]=\"'order.net-price' | translate\">\n {{ line.unitPrice | localeCurrency : order.currencyCode }}\n </div>\n </div>\n </ng-template>\n </vdr-dt2-column>\n <vdr-dt2-column [heading]=\"'order.quantity' | translate\" id=\"quantity\" [optional]=\"false\">\n <ng-template let-line=\"item\">\n <ng-container *ngIf=\"!isDraft; else draft\">\n <div class=\"flex\">\n <div\n *ngIf=\"line.orderPlacedQuantity && line.quantity !== line.orderPlacedQuantity\"\n class=\"order-placed-quantity\"\n [title]=\"'order.original-quantity-at-checkout' | translate\"\n >\n {{ line.orderPlacedQuantity }}\n </div>\n <div>{{ line.quantity }}</div>\n </div>\n </ng-container>\n <ng-template #draft>\n <div class=\"flex\">\n <input\n class=\"draft-qty\"\n type=\"number\"\n min=\"0\"\n #qtyInput\n [value]=\"line.quantity\"\n (blur)=\"draftInputBlur(line, qtyInput.valueAsNumber)\"\n />\n <button class=\"icon-button\" (click)=\"remove.emit({ lineId: line.id })\">\n <clr-icon shape=\"trash\"></clr-icon>\n </button>\n </div>\n </ng-template>\n <vdr-line-refunds [line]=\"line\" [payments]=\"order.payments\"></vdr-line-refunds>\n <vdr-line-fulfillment\n [line]=\"line\"\n [orderState]=\"order.state\"\n [allOrderFulfillments]=\"order.fulfillments\"\n ></vdr-line-fulfillment>\n </ng-template>\n </vdr-dt2-column>\n <vdr-dt2-custom-field-column\n *ngFor=\"let customField of orderLineCustomFields\"\n [customField]=\"customField\"\n />\n <vdr-order-total-column [heading]=\"'order.total' | translate\" id=\"total\" [optional]=\"false\">\n <ng-template let-line=\"item\">\n <div class=\"unit-price\">\n {{ line.linePriceWithTax | localeCurrency : order.currencyCode }}\n <div class=\"net-price\" [title]=\"'order.net-price' | translate\">\n {{ line.linePrice | localeCurrency : order.currencyCode }}\n </div>\n </div>\n\n <ng-container *ngIf=\"getLineDiscounts(line) as discounts\">\n <vdr-dropdown *ngIf=\"discounts.length\">\n <div class=\"promotions-label\" vdrDropdownTrigger>\n {{ 'order.promotions-applied' | translate }}\n </div>\n <vdr-dropdown-menu>\n <div class=\"line-promotion\" *ngFor=\"let discount of discounts\">\n <a class=\"promotion-name\" [routerLink]=\"getPromotionLink(discount)\">{{\n discount.description\n }}</a>\n <div class=\"promotion-amount\">\n {{ discount.amountWithTax | localeCurrency : order.currencyCode }}\n <div class=\"net-price\" [title]=\"'order.net-price' | translate\">\n {{ discount.amount | localeCurrency : order.currencyCode }}\n </div>\n </div>\n </div>\n </vdr-dropdown-menu>\n </vdr-dropdown>\n </ng-container>\n </ng-template>\n </vdr-order-total-column>\n</vdr-order-data-table>\n","import { ChangeDetectionStrategy, Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { UntypedFormControl, UntypedFormGroup } from '@angular/forms';\nimport { CurrencyCode, CustomFieldConfig, DataService, GetProductVariantQuery } from '@vendure/admin-ui/core';\nimport { Observable, Subject } from 'rxjs';\nimport { switchMap } from 'rxjs/operators';\n\n@Component({\n selector: 'vdr-draft-order-variant-selector',\n templateUrl: './draft-order-variant-selector.component.html',\n styleUrls: ['./draft-order-variant-selector.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: false,\n})\nexport class DraftOrderVariantSelectorComponent implements OnInit {\n @Input() currencyCode: CurrencyCode;\n @Input() orderLineCustomFields: CustomFieldConfig[];\n @Output() addItem = new EventEmitter<{ productVariantId: string; quantity: number; customFields: any }>();\n customFieldsFormGroup = new UntypedFormGroup({});\n selectedVariant$: Observable<GetProductVariantQuery['productVariant']>;\n selectedVariantId$ = new Subject<string | undefined>();\n quantity = 1;\n constructor(private dataService: DataService) {}\n\n ngOnInit(): void {\n this.selectedVariant$ = this.selectedVariantId$.pipe(\n switchMap(id => {\n if (id) {\n return this.dataService.product\n .getProductVariant(id)\n .mapSingle(({ productVariant }) => productVariant);\n } else {\n return [undefined];\n }\n }),\n );\n for (const customField of this.orderLineCustomFields) {\n this.customFieldsFormGroup.addControl(customField.name, new UntypedFormControl(''));\n }\n }\n\n addItemClick(selectedVariant: GetProductVariantQuery['productVariant']) {\n if (selectedVariant) {\n this.addItem.emit({\n productVariantId: selectedVariant.id,\n quantity: this.quantity,\n customFields: this.orderLineCustomFields.length\n ? this.customFieldsFormGroup.value\n : undefined,\n });\n this.selectedVariantId$.next(undefined);\n this.customFieldsFormGroup.reset();\n }\n }\n}\n","<div class=\"card\">\n <div class=\"card-block\">\n <h4 class=\"card-title\">{{ 'order.add-item-to-order' | translate }}</h4>\n <vdr-product-variant-selector\n (productSelected)=\"selectedVariantId$.next($event.productVariantId)\"\n ></vdr-product-variant-selector>\n </div>\n <div class=\"card-block\" *ngIf=\"selectedVariant$ | async as selectedVariant\">\n <div class=\"variant-details\">\n <img class=\"mr-2\" [src]=\"selectedVariant.featuredAsset || selectedVariant.product.featuredAsset | assetPreview: 32\">\n <div class=\"details\">\n <div>{{ selectedVariant?.name }}</div>\n <div class=\"small\">{{ selectedVariant?.sku }}</div>\n </div>\n <div class=\"details ml-4\">\n <div class=\"small\">\n {{ 'catalog.stock-on-hand' | translate }}: {{ selectedVariant.stockOnHand }}\n </div>\n <div class=\"small\">\n {{ 'catalog.stock-allocated' | translate }}: {{ selectedVariant.stockAllocated }}\n </div>\n </div>\n <div class=\"flex-spacer\"></div>\n <div class=\"details\">\n <div>{{ selectedVariant?.priceWithTax | localeCurrency: currencyCode }}</div>\n <div class=\"small\" [title]=\"'order.net-price' | translate\">\n {{ selectedVariant?.price | localeCurrency: currencyCode }}\n </div>\n </div>\n <div>\n <input [disabled]=\"!selectedVariant\" type=\"number\" min=\"0\" [(ngModel)]=\"quantity\" />\n </div>\n <button\n [disabled]=\"!selectedVariant\"\n class=\"btn btn-small btn-primary\"\n (click)=\"addItemClick(selectedVariant)\"\n >\n {{ 'order.add-item-to-order' | translate }}\n </button>\n </div>\n <ng-container *ngIf=\"orderLineCustomFields.length\">\n <vdr-tabbed-custom-fields\n entityName=\"Order\"\n [customFields]=\"orderLineCustomFields\"\n [customFieldsFormGroup]=\"customFieldsFormGroup\"\n ></vdr-tabbed-custom-fields>\n </ng-container>\n </div>\n</div>\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, OnDestroy, OnInit } from '@angular/core';\nimport { UntypedFormGroup } from '@angular/forms';\nimport { marker as _ } from '@biesbjerg/ngx-translate-extract-marker';\nimport {\n AddressFragment,\n CreateAddressInput,\n DataService,\n DeletionResult,\n DraftOrderEligibleShippingMethodsQuery,\n GetCustomerAddressesDocument,\n ModalService,\n NotificationService,\n Order,\n OrderDetailFragment,\n OrderDetailQueryDocument,\n TypedBaseDetailComponent,\n} from '@vendure/admin-ui/core';\nimport { combineLatest, forkJoin, Observable, of, Subject } from 'rxjs';\nimport { switchMap, take } from 'rxjs/operators';\n\nimport { OrderTransitionService } from '../../providers/order-transition.service';\nimport { SelectAddressDialogComponent } from '../select-address-dialog/select-address-dialog.component';\nimport { SelectCustomerDialogComponent } from '../select-customer-dialog/select-customer-dialog.component';\nimport { SelectShippingMethodDialogComponent } from '../select-shipping-method-dialog/select-shipping-method-dialog.component';\n\n@Component({\n selector: 'vdr-draft-order-detail',\n templateUrl: './draft-order-detail.component.html',\n styleUrls: ['./draft-order-detail.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: false,\n})\nexport class DraftOrderDetailComponent\n extends TypedBaseDetailComponent<typeof OrderDetailQueryDocument, 'order'>\n implements OnInit, OnDestroy\n{\n customFields = this.getCustomFieldConfig('Order');\n orderLineCustomFields = this.getCustomFieldConfig('OrderLine');\n detailForm = new UntypedFormGroup({});\n eligibleShippingMethods$: Observable<\n DraftOrderEligibleShippingMethodsQuery['eligibleShippingMethodsForDraftOrder']\n >;\n nextStates$: Observable<string[]>;\n fetchHistory = new Subject<void>();\n displayCouponCodeInput = false;\n\n constructor(\n private changeDetector: ChangeDetectorRef,\n protected dataService: DataService,\n private notificationService: NotificationService,\n private modalService: ModalService,\n private orderTransitionService: OrderTransitionService,\n ) {\n super();\n }\n\n ngOnInit() {\n this.init();\n this.orderLineCustomFields = this.getCustomFieldConfig('OrderLine');\n this.eligibleShippingMethods$ = this.entity$.pipe(\n switchMap(order =>\n this.dataService.order\n .getDraftOrderEligibleShippingMethods(order.id)\n .mapSingle(\n ({ eligibleShippingMethodsForDraftOrder }) => eligibleShippingMethodsForDraftOrder,\n ),\n ),\n );\n }\n\n ngOnDestroy() {\n this.destroy();\n }\n\n addItemToOrder(event: { productVariantId: string; quantity: number; customFields: any }) {\n this.dataService.order.addItemToDraftOrder(this.id, event).subscribe(result => {\n if (result.addItemToDraftOrder.__typename !== 'Order') {\n this.notificationService.error((result.addItemToDraftOrder as any).message);\n }\n });\n }\n\n adjustOrderLine(event: { lineId: string; quantity: number }) {\n this.dataService.order\n .adjustDraftOrderLine(this.id, { orderLineId: event.lineId, quantity: event.quantity })\n .subscribe(result => {\n if (result.adjustDraftOrderLine.__typename !== 'Order') {\n this.notificationService.error((result.adjustDraftOrderLine as any).message);\n }\n });\n }\n\n removeOrderLine(event: { lineId: string }) {\n this.dataService.order.removeDraftOrderLine(this.id, event.lineId).subscribe(result => {\n if (result.removeDraftOrderLine.__typename !== 'Order') {\n this.notificationService.error((result.removeDraftOrderLine as any).message);\n }\n });\n }\n\n getOrderAddressLines(orderAddress?: { [key: string]: string }): string[] {\n if (!orderAddress) {\n return [];\n }\n return Object.values(orderAddress)\n .filter(val => val !== 'OrderAddress')\n .filter(line => !!line);\n }\n\n setCustomer() {\n this.modalService.fromComponent(SelectCustomerDialogComponent).subscribe(result => {\n if (this.hasId(result)) {\n this.dataService.order\n .setCustomerForDraftOrder(this.id, { customerId: result.id })\n .pipe(\n switchMap(() => {\n return this.dataService.query(GetCustomerAddressesDocument, {\n customerId: result.id,\n }).single$;\n }),\n switchMap(({ customer }) => {\n const defaultShippingAddress = customer?.addresses?.find(\n addr => addr.defaultShippingAddress,\n );\n const defaultBillingAddress = customer?.addresses?.find(\n addr => addr.defaultBillingAddress,\n );\n\n return forkJoin([\n defaultShippingAddress\n ? this.dataService.order.setDraftOrderShippingAddress(\n this.id,\n this.mapToAddressInput(defaultShippingAddress),\n )\n : this.dataService.order.unsetDraftOrderShippingAddress(this.id),\n defaultBillingAddress\n ? this.dataService.order.setDraftOrderBillingAddress(\n this.id,\n this.mapToAddressInput(defaultBillingAddress),\n )\n : this.dataService.order.unsetDraftOrderBillingAddress(this.id),\n ]);\n }),\n )\n .subscribe();\n } else if (result) {\n const { note, ...input } = result;\n this.dataService.order.setCustomerForDraftOrder(this.id, { input }).subscribe();\n }\n });\n }\n\n private mapToAddressInput(address: AddressFragment): CreateAddressInput {\n return {\n fullName: address.fullName,\n company: address.company,\n streetLine1: address.streetLine1,\n streetLine2: address.streetLine2,\n city: address.city,\n province: address.province,\n postalCode: address.postalCode,\n countryCode: address.country.code,\n phoneNumber: address.phoneNumber,\n defaultShippingAddress: address.defaultShippingAddress,\n defaultBillingAddress: address.defaultBillingAddress,\n };\n }\n\n setShippingAddress() {\n this.entity$\n .pipe(\n take(1),\n switchMap(order =>\n this.modalService.fromComponent(SelectAddressDialogComponent, {\n locals: {\n customerId: order.customer?.id,\n currentAddress: order.shippingAddress ?? undefined,\n },\n }),\n ),\n )\n .subscribe(result => {\n if (result) {\n this.dataService.order.setDraftOrderShippingAddress(this.id, result).subscribe();\n }\n });\n }\n\n setBillingAddress() {\n this.entity$\n .pipe(\n take(1),\n switchMap(order =>\n this.modalService.fromComponent(SelectAddressDialogComponent, {\n locals: {\n customerId: order.customer?.id,\n currentAddress: order.billingAddress ?? undefined,\n },\n }),\n ),\n )\n .subscribe(result => {\n if (result) {\n this.dataService.order.setDraftOrderBillingAddress(this.id, result).subscribe();\n }\n });\n }\n\n applyCouponCode(couponCode: string) {\n this.dataService.order.applyCouponCodeToDraftOrder(this.id, couponCode).subscribe();\n }\n\n removeCouponCode(couponCode: string) {\n this.dataService.order.removeCouponCodeFromDraftOrder(this.id, couponCode).subscribe();\n }\n\n setShippingMethod() {\n combineLatest(this.entity$, this.eligibleShippingMethods$)\n .pipe(\n take(1),\n switchMap(([order, methods]) =>\n this.modalService.fromComponent(SelectShippingMethodDialogComponent, {\n locals: {\n eligibleShippingMethods: methods,\n currencyCode: order.currencyCode,\n currentSelectionId: order.shippingLines?.[0]?.shippingMethod.id,\n },\n }),\n ),\n )\n .subscribe(result => {\n if (result) {\n this.dataService.order.setDraftOrderShippingMethod(this.id, result).subscribe();\n }\n });\n }\n\n updateCustomFields(customFieldsValue: any) {\n this.dataService.order\n .updateOrderCustomFields({\n id: this.id,\n customFields: customFieldsValue,\n })\n .subscribe();\n }\n\n deleteOrder() {\n this.dataService.order.deleteDraftOrder(this.id).subscribe(({ deleteDraftOrder }) => {\n if (deleteDraftOrder.result === DeletionResult.DELETED) {\n this.notificationService.success(_('common.notify-delete-success'), {\n entity: 'Order',\n });\n this.router.navigate(['/orders']);\n } else if (deleteDraftOrder.message) {\n this.notificationService.error(deleteDraftOrder.message);\n }\n });\n }\n\n completeOrder() {\n this.dataService.order\n .transitionToState(this.id, 'ArrangingPayment')\n .subscribe(({ transitionOrderToState }) => {\n if (transitionOrderToState?.__typename === 'Order') {\n this.router.navigate(['/orders', this.id]);\n } else if (transitionOrderToState?.__typename === 'OrderStateTransitionError') {\n this.notificationService.error(transitionOrderToState.transitionError);\n }\n });\n }\n\n private hasId<T extends { id: string }>(input: T | any): input is { id: string } {\n return typeof input === 'object' && !!input.id;\n }\n\n protected setFormValues(entity: OrderDetailFragment): void {\n // empty\n }\n}\n","<vdr-page-block>\n <vdr-action-bar *ngIf=\"entity$ | async as order\">\n <vdr-ab-left>\n <div class=\"flex clr-align-items-center\">\n <vdr-order-state-label [state]=\"order.state\"></vdr-order-state-label>\n </div>\n </vdr-ab-left>\n\n <vdr-ab-right>\n <vdr-action-bar-items locationId=\"draft-order-detail\" />\n <button\n class=\"btn btn-primary\"\n (click)=\"completeOrder()\"\n [disabled]=\"!order.customer || !order.lines.length || !order.shippingLines.length\"\n >\n <clr-icon shape=\"check\"></clr-icon>\n {{ 'order.complete-draft-order' | translate }}\n </button>\n <vdr-action-bar-dropdown-menu [alwaysShow]=\"true\" locationId=\"draft-order-detail\">\n <button type=\"button\" vdrDropdownItem (click)=\"deleteOrder()\">\n <clr-icon shape=\"trash\" class=\"is-danger\"></clr-icon>\n {{ 'order.delete-draft-order' | translate }}\n </button>\n </vdr-action-bar-dropdown-menu>\n </vdr-ab-right>\n </vdr-action-bar>\n</vdr-page-block>\n\n<vdr-page-detail-layout *ngIf=\"entity$ | async as order\">\n <vdr-page-detail-sidebar>\n <vdr-card [title]=\"'order.customer' | translate\">\n <ng-template vdrCardControls>\n <clr-icon *ngIf=\"!order.customer\" shape=\"unknown-status\" class=\"is-warning\"></clr-icon>\n <clr-icon *ngIf=\"order.customer\" shape=\"check\" class=\"is-success\"></clr-icon>\n </ng-template>\n <vdr-customer-label\n class=\"block mb-2\"\n *ngIf=\"order.customer\"\n [customer]=\"order.customer\"\n ></vdr-customer-label>\n <button class=\"button-small\" (click)=\"setCustomer()\">\n {{ 'order.set-customer-for-order' | translate }}\n </button>\n </vdr-card>\n <vdr-card [title]=\"'order.billing-address' | translate\">\n <ng-template vdrCardControls>\n <clr-icon\n *ngIf=\"!order.billingAddress.streetLine1\"\n shape=\"unknown-status\"\n class=\"is-warning\"\n ></clr-icon>\n <clr-icon\n *ngIf=\"order.billingAddress.streetLine1\"\n shape=\"check\"\n class=\"is-success\"\n ></clr-icon>\n </ng-template>\n <vdr-formatted-address\n class=\"block mb-2\"\n *ngIf=\"order.billingAddress\"\n [address]=\"order.billingAddress\"\n ></vdr-formatted-address>\n <button class=\"button-small\" (click)=\"setBillingAddress()\">\n {{ 'order.set-billing-address' | translate }}\n </button>\n </vdr-card>\n <vdr-card [title]=\"'order.shipping' | translate\">\n <ng-template vdrCardControls>\n <clr-icon\n *ngIf=\"!order.shippingAddress.streetLine1 || !order.shippingLines.length\"\n shape=\"unknown-status\"\n class=\"is-warning\"\n ></clr-icon>\n <clr-icon\n *ngIf=\"order.shippingAddress.streetLine1 && order.shippingLines.length\"\n shape=\"check\"\n class=\"is-success\"\n ></clr-icon>\n </ng-template>\n <vdr-formatted-address\n class=\"block mb-2\"\n *ngIf=\"order.shippingAddress\"\n [address]=\"order.shippingAddress\"\n ></vdr-formatted-address>\n <button class=\"button-small mr-2\" (click)=\"setShippingAddress()\">\n {{ 'order.set-shipping-address' | translate }}\n </button>\n\n <div *ngFor=\"let shippingLine of order.shippingLines\">\n {{ shippingLine.shippingMethod.name }}\n </div>\n <button class=\"button-small\" (click)=\"setShippingMethod()\">\n {{ 'order.set-shipping-method' | translate }}\n </button>\n </vdr-card>\n <vdr-card>\n <button\n *ngIf=\"order.couponCodes.length === 0 && !displayCouponCodeInput\"\n class=\"button-small\"\n (click)=\"displayCouponCodeInput = !displayCouponCodeInput\"\n >\n {{ 'order.set-coupon-codes' | translate }}\n </button>\n <div *ngIf=\"order.couponCodes.length || displayCouponCodeInput\">\n <label>{{ 'order.set-coupon-codes' | translate }}</label>\n <vdr-coupon-code-selector\n [couponCodes]=\"order.couponCodes\"\n (addCouponCode)=\"applyCouponCode($event)\"\n (removeCouponCode)=\"removeCouponCode($event)\"\n ></vdr-coupon-code-selector>\n </div>\n </vdr-card>\n <vdr-card>\n <vdr-page-entity-info *ngIf=\"entity$ | async as entity\" [entity]=\"entity\" />\n </vdr-card>\n </vdr-page-detail-sidebar>\n <vdr-page-block>\n <vdr-card>\n <vdr-draft-order-variant-selector\n [orderLineCustomFields]=\"orderLineCustomFields\"\n [currencyCode]=\"order.currencyCode\"\n (addItem)=\"addItemToOrder($event)\"\n ></vdr-draft-order-variant-selector>\n <vdr-order-table\n [order]=\"order\"\n [orderLineCustomFields]=\"orderLineCustomFields\"\n [isDraft]=\"true\"\n (adjust)=\"adjustOrderLine($event)\"\n (remove)=\"removeOrderLine($event)\"\n ></vdr-order-table>\n </vdr-card>\n <vdr-card [title]=\"'order.tax-summary' | translate\">\n <ng-container *ngIf=\"order.taxSummary.length\">\n <table class=\"table\">\n <thead>\n <tr>\n <th>{{ 'common.description' | translate }}</th>\n <th>{{ 'order.tax-rate' | translate }}</th>\n <th>{{ 'order.tax-base' | translate }}</th>\n <th>{{ 'order.tax-total' | translate }}</th>\n </tr>\n </thead>\n <tbody>\n <tr *ngFor=\"let row of order.taxSummary\">\n <td>{{ row.description }}</td>\n <td>{{ row.taxRate / 100 | percent }}</td>\n <td>{{ row.taxBase | localeCurrency : order.currencyCode }}</td>\n <td>{{ row.taxTotal | localeCurrency : order.currencyCode }}</td>\n </tr>\n </tbody>\n </table>\n </ng-container>\n </vdr-card>\n <vdr-custom-detail-component-host\n locationId=\"draft-order-detail\"\n [entity$]=\"entity$\"\n [detailForm]=\"detailForm\"\n ></vdr-custom-detail-component-host>\n\n <vdr-order-custom-fields-card\n [customFieldsConfig]=\"customFields\"\n [customFieldValues]=\"order.customFields\"\n (updateClick)=\"updateCustomFields($event)\"\n ></vdr-order-custom-fields-card>\n </vdr-page-block>\n</vdr-page-detail-layout>\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, OnInit } from '@angular/core';\nimport { UntypedFormControl } from '@angular/forms';\nimport {\n configurableDefinitionToInstance,\n ConfigurableOperation,\n ConfigurableOperationDefinition,\n configurableOperationValueIsValid,\n DataService,\n Dialog,\n FulfillOrderInput,\n GlobalFlag,\n OrderDetailFragment,\n toConfigurableOperationInput,\n} from '@vendure/admin-ui/core';\n\n@Component({\n selector: 'vdr-fulfill-order-dialog',\n templateUrl: './fulfill-order-dialog.component.html',\n styleUrls: ['./fulfill-order-dialog.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: false,\n})\nexport class FulfillOrderDialogComponent implements Dialog<FulfillOrderInput>, OnInit {\n resolveWith: (result?: FulfillOrderInput) => void;\n fulfillmentHandlerDef: ConfigurableOperationDefinition;\n fulfillmentHandler: ConfigurableOperation;\n fulfillmentHandlerControl = new UntypedFormControl();\n fulfillmentQuantities: { [lineId: string]: { fulfillCount: number; max: number } } = {};\n\n // Provided by modalService.fromComponent() call\n order: OrderDetailFragment;\n\n constructor(\n private dataService: DataService,\n private changeDetector: ChangeDetectorRef,\n ) {}\n\n ngOnInit(): void {\n this.dataService.settings.getGlobalSettings().single$.subscribe(({ globalSettings }) => {\n this.fulfillmentQuantities = this.order.lines.reduce((result, line) => {\n const fulfillCount = this.getFulfillableCount(line, globalSettings.trackInventory);\n return {\n ...result,\n [line.id]: { fulfillCount, max: fulfillCount },\n };\n }, {});\n this.changeDetector.markForCheck();\n });\n\n this.dataService.shippingMethod\n .getShippingMethodOperations()\n .mapSingle(data => data.fulfillmentHandlers)\n .subscribe(handlers => {\n this.fulfillmentHandlerDef =\n handlers.find(\n h => h.code === this.order.shippingLines[0]?.shippingMethod?.fulfillmentHandlerCode,\n ) || handlers[0];\n this.fulfillmentHandler = configurableDefinitionToInstance(this.fulfillmentHandlerDef);\n this.fulfillmentHandlerControl.patchValue(this.fulfillmentHandler);\n this.changeDetector.markForCheck();\n });\n }\n\n getFulfillableCount(line: OrderDetailFragment['lines'][number], globalTrackInventory: boolean): number {\n const { trackInventory, stockOnHand } = line.productVariant;\n const effectiveTracInventory =\n trackInventory === GlobalFlag.INHERIT ? globalTrackInventory : trackInventory === GlobalFlag.TRUE;\n\n const unfulfilledCount = this.getUnfulfilledCount(line);\n return effectiveTracInventory ? Math.min(unfulfilledCount, stockOnHand) : unfulfilledCount;\n }\n\n getUnfulfilledCount(line: OrderDetailFragment['lines'][number]): number {\n const fulfilled =\n this.order.fulfillments\n ?.filter(f => f.state !== 'Cancelled')\n .map(f => f.lines)\n .flat()\n .filter(row => row.orderLineId === line.id)\n .reduce((sum, row) => sum + row.quantity, 0) ?? 0;\n return line.quantity - fulfilled;\n }\n\n canSubmit(): boolean {\n const totalCount = Object.values(this.fulfillmentQuantities).reduce(\n (total, { fulfillCount }) => total + fulfillCount,\n 0,\n );\n const fulfillmentQuantityIsValid = Object.values(this.fulfillmentQuantities).every(\n ({ fulfillCount, max }) => fulfillCount <= max,\n );\n const formIsValid =\n configurableOperationValueIsValid(\n this.fulfillmentHandlerDef,\n this.fulfillmentHandlerControl.value,\n ) && this.fulfillmentHandlerControl.valid;\n return formIsValid && 0 < totalCount && fulfillmentQuantityIsValid;\n }\n\n select() {\n const lines = Object.entries(this.fulfillmentQuantities).map(([orderLineId, { fulfillCount }]) => ({\n orderLineId,\n quantity: fulfillCount,\n }));\n this.resolveWith({\n lines,\n handler: toConfigurableOperationInput(\n this.fulfillmentHandler,\n this.fulfillmentHandlerControl.value,\n ),\n });\n }\n\n cancel() {\n this.resolveWith();\n }\n}\n","<ng-template vdrDialogTitle>{{ 'order.fulfill-order' | translate }}</ng-template>\n\n<div class=\"fulfillment-wrapper\">\n <div class=\"order-table\">\n <table class=\"table\">\n <thead>\n <tr>\n <th></th>\n <th>{{ 'order.product-name' | translate }}</th>\n <th>{{ 'order.product-sku' | translate }}</th>\n <th>{{ 'order.unfulfilled' | translate }}</th>\n <th>{{ 'catalog.stock-on-hand' | translate }}</th>\n <th>{{ 'order.fulfill' | translate }}</th>\n </tr>\n </thead>\n <tr\n *ngFor=\"let line of order.lines\"\n class=\"order-line\"\n [class.ignore]=\"getUnfulfilledCount(line) === 0\"\n >\n <td class=\"align-middle thumb\">\n <img *ngIf=\"line.featuredAsset\" [src]=\"line.featuredAsset | assetPreview: 'tiny'\" />\n </td>\n <td class=\"align-middle name\">{{ line.productVariant.name }}</td>\n <td class=\"align-middle sku\">{{ line.productVariant.sku }}</td>\n <td class=\"align-middle quantity\">{{ getUnfulfilledCount(line) }}</td>\n <td class=\"align-middle quantity\">{{ line.productVariant.stockOnHand }}</td>\n <td class=\"align-middle fulfil\">\n <input\n *ngIf=\"fulfillmentQuantities[line.id]\"\n [disabled]=\"getUnfulfilledCount(line) === 0\"\n [(ngModel)]=\"fulfillmentQuantities[line.id].fulfillCount\"\n type=\"number\"\n [max]=\"fulfillmentQuantities[line.id].max\"\n min=\"0\"\n />\n </td>\n </tr>\n </table>\n </div>\n <div class=\"shipping-details\">\n <vdr-formatted-address [address]=\"order.shippingAddress\"></vdr-formatted-address>\n <h6>{{ 'order.shipping-method' | translate }}</h6>\n {{ order.shippingLines[0]?.shippingMethod?.name }}\n <strong>{{ order.shipping | localeCurrency: order.currencyCode }}</strong>\n <vdr-configurable-input\n [operationDefinition]=\"fulfillmentHandlerDef\"\n [operation]=\"fulfillmentHandler\"\n [formControl]=\"fulfillmentHandlerControl\"\n [removable]=\"false\"\n ></vdr-configurable-input>\n </div>\n</div>\n\n<ng-template vdrDialogButtons>\n <button type=\"button\" class=\"btn\" (click)=\"cancel()\">{{ 'common.cancel' | translate }}</button>\n <button type=\"submit\" (click)=\"select()\" [disabled]=\"!canSubmit()\" class=\"btn btn-primary\">\n {{ 'order.create-fulfillment' | translate }}\n </button>\n</ng-template>\n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\n\n@Component({\n selector: 'vdr-simple-item-list',\n templateUrl: './simple-item-list.component.html',\n styleUrls: ['./simple-item-list.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: false\n})\nexport class SimpleItemListComponent {\n @Input() items: Array<{ name: string; quantity?: number }>;\n}\n","<div class=\"items-list\">\n <ul>\n <li *ngFor=\"let item of items\" [title]=\"item.name\">\n <div class=\"quantity\" *ngIf=\"item.quantity != null\">{{ item.quantity }}</div>\n <clr-icon shape=\"times\" size=\"12\" *ngIf=\"item.quantity != null\"></clr-icon>\n {{ item.name }}\n </li>\n </ul>\n</div>\n","import { ChangeDetectionStrategy, Component, Input, OnChanges, OnInit, SimpleChanges } from '@angular/core';\nimport { UntypedFormControl, UntypedFormGroup } from '@angular/forms';\nimport { CustomFieldConfig, OrderDetailFragment, ServerConfigService } from '@vendure/admin-ui/core';\nimport { isObject } from '@vendure/common/lib/shared-utils';\n\n@Component({\n selector: 'vdr-fulfillment-detail',\n templateUrl: './fulfillment-detail.component.html',\n styleUrls: ['./fulfillment-detail.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: false,\n})\nexport class FulfillmentDetailComponent implements OnInit, OnChanges {\n @Input() fulfillmentId: string;\n @Input() order: OrderDetailFragment;\n\n customFieldConfig: CustomFieldConfig[] = [];\n customFieldFormGroup = new UntypedFormGroup({});\n\n constructor(private serverConfigService: ServerConfigService) {}\n\n ngOnInit() {\n this.customFieldConfig = this.serverConfigService.getCustomFieldsFor('Fulfillment');\n }\n\n ngOnChanges(changes: SimpleChanges) {\n this.buildCustomFieldsFormGroup();\n }\n\n get fulfillment(): NonNullable<OrderDetailFragment['fulfillments']>[number] | undefined | null {\n return this.order.fulfillments && this.order.fulfillments.find(f => f.id === this.fulfillmentId);\n }\n\n get items(): Array<{ name: string; quantity: number }> {\n return (\n this.fulfillment?.lines.map(row => ({\n name: this.order.lines.find(line => line.id === row.orderLineId)?.productVariant.name ?? '',\n quantity: row.quantity,\n })) ?? []\n );\n }\n\n buildCustomFieldsFormGroup() {\n const customFields = (this.fulfillment as any).customFields;\n for (const fieldDef of this.serverConfigService.getCustomFieldsFor('Fulfillment')) {\n this.customFieldFormGroup.addControl(\n fieldDef.name,\n new UntypedFormControl(customFields[fieldDef.name]),\n );\n }\n }\n\n customFieldIsObject(customField: unknown) {\n return Array.isArray(customField) || isObject(customField);\n }\n}\n","<vdr-labeled-data [label]=\"'common.created-at' | translate\">\n {{ fulfillment?.createdAt | localeDate: 'medium' }}\n</vdr-labeled-data>\n<vdr-labeled-data [label]=\"'order.fulfillment-method' | translate\">\n {{ fulfillment?.method }}\n</vdr-labeled-data>\n<vdr-labeled-data *ngIf=\"fulfillment?.trackingCode\" [label]=\"'order.tracking-code' | translate\">\n {{ fulfillment?.trackingCode }}\n</vdr-labeled-data>\n<vdr-labeled-data [label]=\"'order.contents' | translate\">\n <vdr-simple-item-list [items]=\"items\"></vdr-simple-item-list>\n</vdr-labeled-data>\n<ng-container *ngFor=\"let customField of customFieldConfig\">\n <vdr-custom-field-control\n *ngIf=\"customFieldFormGroup.get(customField.name)\"\n [readonly]=\"true\"\n [compact]=\"true\"\n [customField]=\"customField\"\n [customFieldsFormGroup]=\"customFieldFormGroup\"\n ></vdr-custom-field-control>\n</ng-container>\n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\n\n@Component({\n selector: 'vdr-fulfillment-state-label',\n templateUrl: './fulfillment-state-label.component.html',\n styleUrls: ['./fulfillment-state-label.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: false,\n})\nexport class FulfillmentStateLabelComponent {\n @Input() state: string;\n\n get chipColorType() {\n switch (this.state) {\n case 'Pending':\n case 'Shipped':\n return 'warning';\n case 'Delivered':\n return 'success';\n case 'Cancelled':\n return 'error';\n }\n }\n}\n","<vdr-chip [title]=\"'order.payment-state' | translate\" [colorType]=\"chipColorType\">\n <clr-icon shape=\"check-circle\" *ngIf=\"state === 'Delivered'\"></clr-icon>\n {{ state | stateI18nToken | translate }}\n</vdr-chip>\n","import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from '@angular/core';\nimport { FulfillmentFragment, OrderDetailFragment } from '@vendure/admin-ui/core';\n\n@Component({\n selector: 'vdr-fulfillment-card',\n templateUrl: './fulfillment-card.component.html',\n styleUrls: ['./fulfillment-card.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: false,\n})\nexport class FulfillmentCardComponent {\n @Input() fulfillment: FulfillmentFragment | undefined;\n @Input() order: OrderDetailFragment;\n @Output() transitionState = new EventEmitter<string>();\n\n nextSuggestedState(): string | undefined {\n if (!this.fulfillment) {\n return;\n }\n const { nextStates } = this.fulfillment;\n const namedStateOrDefault = (targetState: string) =>\n nextStates.includes(targetState) ? targetState : nextStates[0];\n switch (this.fulfillment?.state) {\n case 'Pending':\n return namedStateOrDefault('Shipped');\n case 'Shipped':\n return namedStateOrDefault('Delivered');\n default:\n return nextStates.find(s => s !== 'Cancelled');\n }\n }\n\n nextOtherStates(): string[] {\n if (!this.fulfillment) {\n return [];\n }\n const suggested = this.nextSuggestedState();\n return this.fulfillment.nextStates.filter(s => s !== suggested);\n }\n}\n","<div class=\"card\">\n <div class=\"card-header fulfillment-header\">\n <div>{{ 'order.fulfillment' | translate }}</div>\n <div class=\"fulfillment-state\">\n <vdr-fulfillment-state-label [state]=\"fulfillment?.state\"></vdr-fulfillment-state-label>\n </div>\n </div>\n <div class=\"card-block\">\n <vdr-fulfillment-detail\n *ngIf=\"!!fulfillment\"\n [fulfillmentId]=\"fulfillment?.id\"\n [order]=\"order\"\n ></vdr-fulfillment-detail>\n </div>\n <div class=\"card-footer\" *ngIf=\"fulfillment?.nextStates.length\">\n <ng-container *ngIf=\"nextSuggestedState() as suggestedState\">\n <button class=\"btn btn-sm btn-primary\" (click)=\"transitionState.emit(suggestedState)\">\n {{ 'order.set-fulfillment-state' | translate: { state: (suggestedState | stateI18nToken | translate) } }}\n </button>\n </ng-container>\n <vdr-dropdown>\n <button class=\"icon-button\" vdrDropdownTrigger>\n <clr-icon shape=\"ellipsis-vertical\"></clr-icon>\n </button>\n <vdr-dropdown-menu vdrPosition=\"bottom-right\">\n <ng-container *ngFor=\"let nextState of nextOtherStates()\">\n <button\n type=\"button\"\n vdrDropdownItem\n (click)=\"transitionState.emit(nextState)\"\n >\n <ng-container *ngIf=\"nextState !== 'Cancelled'; else cancel\">\n <clr-icon shape=\"step-forward-2\"></clr-icon>\n {{ 'order.transition-to-state' | translate: { state: (nextState | stateI18nToken | translate) } }}\n </ng-container>\n <ng-template #cancel>\n <clr-icon shape=\"error-standard\" class=\"is-error\"></clr-icon>\n {{ 'order.cancel-fulfillment' | translate }}\n </ng-template>\n </button>\n </ng-container>\n </vdr-dropdown-menu>\n </vdr-dropdown>\n </div>\n</div>\n","import { ChangeDetectionStrategy, Component, Input, OnChanges, OnInit } from '@angular/core';\nimport { OrderDetailFragment } from '@vendure/admin-ui/core';\n\n@Component({\n selector: 'vdr-modification-detail',\n templateUrl: './modification-detail.component.html',\n styleUrls: ['./modification-detail.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: false,\n})\nexport class ModificationDetailComponent implements OnChanges {\n @Input() order: OrderDetailFragment;\n @Input() modification: OrderDetailFragment['modifications'][number];\n private addedItems = new Map<OrderDetailFragment['lines'][number], number>();\n private removedItems = new Map<OrderDetailFragment['lines'][number], number>();\n private modifiedItems = new Set<OrderDetailFragment['lines'][number]>();\n\n ngOnChanges(): void {\n const { added, removed, modified } = this.getModifiedLines();\n this.addedItems = added;\n this.removedItems = removed;\n this.modifiedItems = modified;\n }\n\n getSurcharge(id: string) {\n return this.order.surcharges.find(m => m.id === id);\n }\n\n getAddedItems() {\n return [...this.addedItems.entries()].map(([line, count]) => ({\n name: line.productVariant.name,\n quantity: count,\n }));\n }\n\n getRemovedItems() {\n return [...this.removedItems.entries()].map(([line, count]) => ({\n name: line.productVariant.name,\n quantity: count,\n }));\n }\n\n getModifiedItems() {\n return [...this.modifiedItems].map(line => ({\n name: line.productVariant.name,\n }));\n }\n\n private getModifiedLines() {\n const added = new Map<OrderDetailFragment['lines'][number], number>();\n const removed = new Map<OrderDetailFragment['lines'][number], number>();\n const modified = new Set<OrderDetailFragment['lines'][number]>();\n for (const modificationLine of this.modification.lines || []) {\n const line = this.order.lines.find(l => l.id === modificationLine.orderLineId);\n if (!line) {\n continue;\n }\n if (modificationLine.quantity === 0) {\n modified.add(line);\n } else if (modificationLine.quantity < 0) {\n removed.set(line, -modificationLine.quantity);\n } else {\n added.set(line, modificationLine.quantity);\n }\n }\n return { added, removed, modified };\n }\n}\n","<vdr-labeled-data [label]=\"'common.ID' | translate\">{{ modification.id }}</vdr-labeled-data>\n<vdr-labeled-data *ngIf=\"modification.note\" [label]=\"'order.note' | translate\">{{\n modification.note\n}}</vdr-labeled-data>\n<vdr-labeled-data *ngFor=\"let surcharge of modification.surcharges\" [label]=\"'order.surcharges' | translate\">\n {{ getSurcharge(surcharge.id)?.description }}\n {{ getSurcharge(surcharge.id)?.priceWithTax | localeCurrency: order.currencyCode }}</vdr-labeled-data\n>\n<vdr-labeled-data *ngIf=\"getAddedItems().length\" [label]=\"'order.added-items' | translate\">\n <vdr-simple-item-list [items]=\"getAddedItems()\"></vdr-simple-item-list>\n</vdr-labeled-data>\n<vdr-labeled-data *ngIf=\"getRemovedItems().length\" [label]=\"'order.removed-items' | translate\">\n <vdr-simple-item-list [items]=\"getRemovedItems()\"></vdr-simple-item-list>\n</vdr-labeled-data>\n<vdr-labeled-data *ngIf=\"getModifiedItems().length\" [label]=\"'order.modified-items' | translate\">\n <vdr-simple-item-list [items]=\"getModifiedItems()\"></vdr-simple-item-list>\n</vdr-labeled-data>\n","export const NODE_HEIGHT = 72;\n","import {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n Input,\n OnChanges,\n SimpleChanges,\n} from '@angular/core';\nimport { BehaviorSubject } from 'rxjs';\n\nimport { NODE_HEIGHT } from './constants';\nimport { StateNode } from './types';\n\n@Component({\n selector: 'vdr-order-process-node',\n templateUrl: './order-process-node.component.html',\n styleUrls: ['./order-process-node.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: false,\n})\nexport class OrderProcessNodeComponent implements OnChanges {\n @Input() node: StateNode;\n @Input() index: number;\n @Input() active: boolean;\n active$ = new BehaviorSubject<boolean>(false);\n activeTarget$ = new BehaviorSubject<boolean>(false);\n isCancellable = false;\n // We use a class field here to prevent the\n // i18n extractor from extracting a \"Cancelled\" key\n cancelledState = 'Cancelled';\n\n constructor(private elementRef: ElementRef<HTMLDivElement>) {}\n\n ngOnChanges(changes: SimpleChanges) {\n this.isCancellable = !!this.node.to.find(s => s.name === 'Cancelled');\n if (changes.active) {\n this.active$.next(this.active);\n }\n }\n\n getPos(origin: 'top' | 'bottom' = 'top'): { x: number; y: number } {\n const rect = this.elementRef.nativeElement.getBoundingClientRect();\n const nodeHeight =\n this.elementRef.nativeElement.querySelector('.node')?.getBoundingClientRect().height ?? 0;\n return {\n x: 10,\n y: this.index * NODE_HEIGHT + (origin === 'bottom' ? nodeHeight : 0),\n };\n }\n\n getStyle() {\n const pos = this.getPos();\n return {\n 'top.px': pos.y,\n 'left.px': pos.x,\n };\n }\n}\n","<div class=\"node-wrapper\" [ngStyle]=\"getStyle()\" [class.active]=\"active$ | async\">\n <div\n class=\"node\"\n [class.active-target]=\"activeTarget$ | async\"\n >\n {{ node.name | stateI18nToken | translate }}\n </div>\n <div class=\"cancelled-wrapper\" *ngIf=\"isCancellable\">\n <div class=\"cancelled-edge\">\n </div>\n <clr-icon shape=\"dot-circle\"></clr-icon>\n <div class=\"cancelled-node\">\n {{ cancelledState | stateI18nToken | translate }}\n </div>\n </div>\n</div>\n","import { ChangeDetectionStrategy, Component, Input, OnInit } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { tap } from 'rxjs/operators';\n\nimport { OrderProcessNodeComponent } from './order-process-node.component';\n\n@Component({\n selector: 'vdr-order-process-edge',\n templateUrl: './order-process-edge.component.html',\n styleUrls: ['./order-process-edge.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: false,\n})\nexport class OrderProcessEdgeComponent implements OnInit {\n @Input() from: OrderProcessNodeComponent;\n @Input() to: OrderProcessNodeComponent;\n @Input() index: number;\n active$: Observable<boolean>;\n\n ngOnInit() {\n this.active$ = this.from.active$\n .asObservable()\n .pipe(tap(active => this.to.activeTarget$.next(active)));\n }\n\n getStyle() {\n const direction = this.from.index < this.to.index ? 'down' : 'up';\n const startPos = this.from.getPos(direction === 'down' ? 'bottom' : 'top');\n const endPos = this.to.getPos(direction === 'down' ? 'top' : 'bottom');\n const dX = Math.abs(startPos.x - endPos.x);\n const dY = Math.abs(startPos.y - endPos.y);\n const length = Math.sqrt(dX ** 2 + dY ** 2);\n return {\n 'top.px': startPos.y,\n 'left.px': startPos.x + (direction === 'down' ? 10 : 40) + this.index * 12,\n 'height.px': length,\n 'width.px': 1,\n ...(direction === 'up'\n ? {\n transform: 'rotateZ(180deg)',\n 'transform-origin': 'top',\n }\n : {}),\n };\n }\n}\n","<div\n [attr.data-from]=\"from.node.name\"\n [attr.data-to]=\"to.node.name\"\n [ngStyle]=\"getStyle()\"\n [class.active]=\"active$ | async\"\n class=\"edge\">\n <clr-icon shape=\"arrow\" flip=\"vertical\" class=\"arrow\"></clr-icon>\n</div>\n","import {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n HostBinding,\n Input,\n OnChanges,\n OnInit,\n QueryList,\n SimpleChanges,\n ViewChildren,\n} from '@angular/core';\nimport { OrderProcessState } from '@vendure/admin-ui/core';\nimport { BehaviorSubject, Observable } from 'rxjs';\nimport { debounceTime } from 'rxjs/operators';\n\nimport { NODE_HEIGHT } from './constants';\nimport { OrderProcessNodeComponent } from './order-process-node.component';\nimport { StateNode } from './types';\n\n@Component({\n selector: 'vdr-order-process-graph',\n templateUrl: './order-process-graph.component.html',\n styleUrls: ['./order-process-graph.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: false,\n})\nexport class OrderProcessGraphComponent implements OnInit, OnChanges, AfterViewInit {\n @Input() states: OrderProcessState[];\n @Input() initialState?: string;\n setActiveState$ = new BehaviorSubject<string | undefined>(undefined);\n activeState$: Observable<string | undefined>;\n nodes: StateNode[] = [];\n edges: Array<{ from: OrderProcessNodeComponent; to: OrderProcessNodeComponent; index: number }> = [];\n\n @ViewChildren(OrderProcessNodeComponent) nodeComponents: QueryList<OrderProcessNodeComponent>;\n\n constructor(private changeDetector: ChangeDetectorRef) {}\n\n @HostBinding('style.height.px')\n get outerHeight(): number {\n return this.nodes.length * NODE_HEIGHT;\n }\n\n ngOnInit() {\n this.setActiveState$.next(this.initialState);\n this.activeState$ = this.setActiveState$.pipe(debounceTime(150));\n }\n\n ngOnChanges(changes: SimpleChanges) {\n this.populateNodes();\n }\n\n ngAfterViewInit() {\n setTimeout(() => this.populateEdges());\n }\n\n onMouseOver(stateName: string) {\n this.setActiveState$.next(stateName);\n }\n\n onMouseOut() {\n this.setActiveState$.next(this.initialState);\n }\n\n getNodeFor(state: string): OrderProcessNodeComponent | undefined {\n if (this.nodeComponents) {\n return this.nodeComponents.find(n => n.node.name === state);\n }\n }\n\n private populateNodes() {\n const stateNodeMap = new Map<string, StateNode>();\n for (const state of this.states) {\n stateNodeMap.set(state.name, {\n name: state.name,\n to: [],\n });\n }\n\n for (const [name, stateNode] of stateNodeMap.entries()) {\n const targets = this.states.find(s => s.name === name)?.to ?? [];\n for (const target of targets) {\n const targetNode = stateNodeMap.get(target);\n if (targetNode) {\n stateNode.to.push(targetNode);\n }\n }\n }\n this.nodes = [...stateNodeMap.values()].filter(n => n.name !== 'Cancelled');\n }\n\n private populateEdges() {\n for (const node of this.nodes) {\n const nodeCmp = this.getNodeFor(node.name);\n let index = 0;\n for (const to of node.to) {\n const toCmp = this.getNodeFor(to.name);\n if (nodeCmp && toCmp && nodeCmp !== toCmp) {\n this.edges.push({\n to: toCmp,\n from: nodeCmp,\n index,\n });\n index++;\n }\n }\n }\n this.edges = [...this.edges];\n this.changeDetector.markForCheck();\n }\n}\n","<ng-container *ngFor=\"let state of nodes; let i = index\">\n <vdr-order-process-node\n [node]=\"state\"\n [index]=\"i\"\n [active]=\"(activeState$ | async) === state.name\"\n (mouseenter)=\"onMouseOver(state.name)\"\n (mouseleave)=\"onMouseOut()\"\n ></vdr-order-process-node>\n</ng-container>\n<ng-container *ngFor=\"let edge of edges\">\n <vdr-order-process-edge [from]=\"edge.from\" [to]=\"edge.to\" [index]=\"edge.index\"></vdr-order-process-edge>\n</ng-container>\n","import { ChangeDetectionStrategy, Component, OnInit } from '@angular/core';\nimport {\n CancelOrderInput,\n DataService,\n Dialog,\n OrderProcessState,\n ServerConfigService,\n} from '@vendure/admin-ui/core';\nimport { Observable } from 'rxjs';\n\n@Component({\n selector: 'vdr-order-process-graph-dialog',\n templateUrl: './order-process-graph-dialog.component.html',\n styleUrls: ['./order-process-graph-dialog.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: false,\n})\nexport class OrderProcessGraphDialogComponent implements OnInit, Dialog<void> {\n activeState: string;\n states: OrderProcessState[] = [];\n constructor(private serverConfigService: ServerConfigService) {}\n\n ngOnInit(): void {\n this.states = this.serverConfigService.getOrderProcessStates();\n }\n\n resolveWith: (result: void | undefined) => void;\n}\n","<ng-template vdrDialogTitle>{{ 'order.order-state-diagram' | translate }}</ng-template>\n\n<vdr-order-process-graph [states]=\"states\" [initialState]=\"activeState\"></vdr-order-process-graph>\n","import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from '@angular/core';\nimport { OrderDetailFragment } from '@vendure/admin-ui/core';\nimport { RefundablePayment } from '../../common/get-refundable-payments';\n\n@Component({\n selector: 'vdr-payment-for-refund-selector',\n templateUrl: './payment-for-refund-selector.component.html',\n styleUrls: ['./payment-for-refund-selector.component.scss'],\n changeDetection: ChangeDetectionStrategy.Default,\n standalone: false\n})\nexport class PaymentForRefundSelectorComponent {\n @Input() refundablePayments: RefundablePayment[];\n @Input() order: OrderDetailFragment;\n @Output() paymentSelected = new EventEmitter<{ payment: RefundablePayment; selected: boolean }>();\n}\n","<vdr-card\n [title]=\"'order.payment' | translate\"\n [class.selected]=\"payment.selected\"\n [class.unselected]=\"!payment.selected\"\n *ngFor=\"let payment of refundablePayments\"\n>\n <ng-template vdrCardControls>\n <vdr-select-toggle\n size=\"small\"\n [title]=\"'order.refund-this-payment' | translate\"\n [label]=\"'order.refund-this-payment' | translate\"\n [disabled]=\"refundablePayments.length === 1\"\n [(selected)]=\"payment.selected\"\n (selectedChange)=\"paymentSelected.emit({ payment: payment, selected: $event })\"\n ></vdr-select-toggle>\n </ng-template>\n <div class=\"form-grid\">\n <vdr-labeled-data [label]=\"'order.payment-method' | translate\">\n {{ payment.method }}\n </vdr-labeled-data>\n <vdr-labeled-data [label]=\"'order.transaction-id' | translate\">\n {{ payment.transactionId }}\n </vdr-labeled-data>\n <vdr-labeled-data [label]=\"'order.payment-amount' | translate\">\n {{ payment.amount | localeCurrency : order.currencyCode }}\n </vdr-labeled-data>\n <vdr-labeled-data [label]=\"'order.refundable-amount' | translate\">\n {{ payment.refundableAmount | localeCurrency : order.currencyCode }}\n </vdr-labeled-data>\n </div>\n <vdr-form-field [label]=\"'order.refund-amount' | translate\">\n <vdr-currency-input\n [readonly]=\"!payment.selected\"\n [currencyCode]=\"order.currencyCode\"\n [formControl]=\"payment.amountToRefundControl\"\n ></vdr-currency-input>\n </vdr-form-field>\n</vdr-card>","import { ChangeDetectionStrategy, Component, OnInit } from '@angular/core';\nimport { FormControl, Validators } from '@angular/forms';\nimport { marker as _ } from '@biesbjerg/ngx-translate-extract-marker';\nimport {\n CancelOrderInput,\n Dialog,\n getAppConfig,\n I18nService,\n OrderDetailFragment,\n OrderLineInput,\n PaymentWithRefundsFragment,\n RefundOrderInput,\n} from '@vendure/admin-ui/core';\nimport { summate } from '@vendure/common/lib/shared-utils';\nimport { getRefundablePayments, RefundablePayment } from '../../common/get-refundable-payments';\n\ntype SelectionLine = { quantity: number; cancel: boolean };\n\n@Component({\n selector: 'vdr-refund-order-dialog',\n templateUrl: './refund-order-dialog.component.html',\n styleUrls: ['./refund-order-dialog.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: false\n})\nexport class RefundOrderDialogComponent\n implements OnInit, Dialog<{ cancel: CancelOrderInput; refunds: RefundOrderInput[] }>\n{\n order: OrderDetailFragment;\n resolveWith: (result?: { cancel: CancelOrderInput; refunds: RefundOrderInput[] }) => void;\n reason: string;\n lineQuantities: { [lineId: string]: SelectionLine } = {};\n refundablePayments: RefundablePayment[] = [];\n refundShippingLineIds: string[] = [];\n reasons = getAppConfig().cancellationReasons ?? [\n _('order.refund-reason-customer-request'),\n _('order.refund-reason-not-available'),\n ];\n manuallySetRefundTotal = false;\n refundTotal = 0;\n\n constructor(private i18nService: I18nService) {\n this.reasons = this.reasons.map(r => this.i18nService.translate(r));\n }\n\n get totalRefundableAmount(): number {\n return summate(this.refundablePayments, 'refundableAmount');\n }\n\n get amountToRefundTotal(): number {\n return this.refundablePayments.reduce(\n (total, payment) => total + payment.amountToRefundControl.value,\n 0,\n );\n }\n\n lineCanBeRefundedOrCancelled(line: OrderDetailFragment['lines'][number]): boolean {\n const refundedCount =\n this.order.payments\n ?.reduce(\n (all, payment) => [...all, ...payment.refunds],\n [] as PaymentWithRefundsFragment['refunds'],\n )\n .filter(refund => refund.state !== 'Failed')\n .reduce(\n (all, refund) => [...all, ...refund.lines],\n [] as Array<{ orderLineId: string; quantity: number }>,\n )\n .filter(refundLine => refundLine.orderLineId === line.id)\n .reduce((sum, refundLine) => sum + refundLine.quantity, 0) ?? 0;\n\n return refundedCount < line.orderPlacedQuantity;\n }\n\n ngOnInit() {\n this.lineQuantities = this.order.lines.reduce(\n (result, line) => ({\n ...result,\n [line.id]: {\n quantity: 0,\n refund: true,\n cancel: false,\n },\n }),\n {},\n );\n this.refundablePayments = getRefundablePayments(this.order.payments);\n }\n\n updateRefundTotal() {\n if (!this.manuallySetRefundTotal) {\n const itemTotal = this.order.lines.reduce((total, line) => {\n const lineRef = this.lineQuantities[line.id];\n const refundCount = lineRef.quantity || 0;\n return total + line.proratedUnitPriceWithTax * refundCount;\n }, 0);\n const shippingTotal = this.order.shippingLines.reduce((total, line) => {\n if (this.refundShippingLineIds.includes(line.id)) {\n return total + line.discountedPriceWithTax;\n } else {\n return total;\n }\n }, 0);\n this.refundTotal = itemTotal + shippingTotal;\n }\n\n // allocate the refund total across the refundable payments\n const refundablePayments = this.refundablePayments.filter(p => p.selected);\n let refundsAllocated = 0;\n for (const payment of refundablePayments) {\n const amountToRefund = Math.min(payment.refundableAmount, this.refundTotal - refundsAllocated);\n payment.amountToRefundControl.setValue(amountToRefund);\n refundsAllocated += amountToRefund;\n }\n }\n\n toggleShippingRefund(lineId: string) {\n const index = this.refundShippingLineIds.indexOf(lineId);\n if (index === -1) {\n this.refundShippingLineIds.push(lineId);\n } else {\n this.refundShippingLineIds.splice(index, 1);\n }\n this.updateRefundTotal();\n }\n\n onRefundQuantityChange(orderLineId: string, quantity: number) {\n this.manuallySetRefundTotal = false;\n const selectionLine = this.lineQuantities[orderLineId];\n if (selectionLine) {\n const previousQuantity = selectionLine.quantity;\n if (quantity === 0) {\n selectionLine.cancel = false;\n } else if (previousQuantity === 0 && quantity > 0) {\n selectionLine.cancel = true;\n }\n selectionLine.quantity = quantity;\n this.updateRefundTotal();\n }\n }\n\n onPaymentSelected(payment: RefundablePayment, selected: boolean) {\n if (selected) {\n const outstandingRefundAmount =\n this.refundTotal -\n this.refundablePayments\n .filter(p => p.id !== payment.id)\n .reduce((total, p) => total + p.amountToRefundControl.value, 0);\n if (0 < outstandingRefundAmount) {\n payment.amountToRefundControl.setValue(\n Math.min(outstandingRefundAmount, payment.refundableAmount),\n );\n }\n } else {\n payment.amountToRefundControl.setValue(0);\n }\n }\n\n isRefunding(): boolean {\n const result = Object.values(this.lineQuantities).reduce(\n (isRefunding, line) => isRefunding || 0 < line.quantity,\n false,\n );\n return result;\n }\n\n isCancelling(): boolean {\n const result = Object.values(this.lineQuantities).reduce(\n (isCancelling, line) => isCancelling || (0 < line.quantity && line.cancel),\n false,\n );\n return result;\n }\n\n canSubmit(): boolean {\n return 0 < this.refundTotal && this.amountToRefundTotal === this.refundTotal && !!this.reason;\n }\n\n select() {\n const refundLines = this.getOrderLineInput(() => true);\n const cancelLines = this.getOrderLineInput(line => line.cancel);\n\n this.resolveWith({\n refunds: this.refundablePayments\n .filter(rp => rp.selected && 0 < rp.amountToRefundControl.value)\n .map(payment => {\n return {\n lines: refundLines,\n reason: this.reason,\n paymentId: payment.id,\n amount: payment.amountToRefundControl.value,\n shipping: 0,\n adjustment: 0,\n };\n }),\n cancel: {\n lines: cancelLines,\n orderId: this.order.id,\n reason: this.reason,\n cancelShipping: this.refundShippingLineIds.length > 0,\n },\n });\n }\n\n cancel() {\n this.resolveWith();\n }\n\n private getOrderLineInput(filterFn: (line: SelectionLine) => boolean): OrderLineInput[] {\n return Object.entries(this.lineQuantities)\n .filter(([orderLineId, line]) => 0 < line.quantity && filterFn(line))\n .map(([orderLineId, line]) => ({\n orderLineId,\n quantity: line.quantity,\n }));\n }\n}\n","<ng-template vdrDialogTitle>{{ 'order.refund-and-cancel-order' | translate }}</ng-template>\n\n<div class=\"refund-wrapper\">\n <vdr-data-table-2 id=\"refund-order\" [items]=\"order.lines\">\n <!-- Here we define all the available columns -->\n <vdr-dt2-column id=\"id\" [heading]=\"'common.id' | translate\" [hiddenByDefault]=\"true\">\n <ng-template let-line=\"item\">\n {{ line.id }}\n </ng-template>\n </vdr-dt2-column>\n <vdr-dt2-column id=\"created-at\" [heading]=\"'common.created-at' | translate\" [hiddenByDefault]=\"true\">\n <ng-template let-line=\"item\">\n {{ line.createdAt | localeDate : 'short' }}\n </ng-template>\n </vdr-dt2-column>\n <vdr-dt2-column id=\"updated-at\" [heading]=\"'common.updated-at' | translate\" [hiddenByDefault]=\"true\">\n <ng-template let-line=\"item\">\n {{ line.updatedAt | localeDate : 'short' }}\n </ng-template>\n </vdr-dt2-column>\n <vdr-dt2-column [heading]=\"'common.image' | translate\" id=\"image\">\n <ng-template let-line=\"item\">\n <div class=\"image-placeholder\">\n <img\n *ngIf=\"line.featuredAsset as asset; else imagePlaceholder\"\n [src]=\"asset | assetPreview : 'tiny'\"\n />\n <ng-template #imagePlaceholder>\n <div class=\"placeholder\">\n <clr-icon shape=\"image\" size=\"48\"></clr-icon>\n </div>\n </ng-template>\n </div>\n </ng-template>\n </vdr-dt2-column>\n <vdr-dt2-column id=\"product-name\" [heading]=\"'order.product-name' | translate\" [optional]=\"false\">\n <ng-template let-line=\"item\">\n {{ line.productVariant.name }}\n </ng-template>\n </vdr-dt2-column>\n <vdr-dt2-column id=\"product-sku\" [heading]=\"'order.product-sku' | translate\">\n <ng-template let-line=\"item\">\n {{ line.productVariant.sku }}\n </ng-template>\n </vdr-dt2-column>\n <vdr-dt2-column id=\"unit-price\" [heading]=\"'order.unit-price' | translate\" [hiddenByDefault]=\"true\">\n <ng-template let-line=\"item\">\n {{ line.unitPriceWithTax | localeCurrency : order.currencyCode }}\n </ng-template>\n </vdr-dt2-column>\n <vdr-dt2-column id=\"prorated-unit-price\" [heading]=\"'order.prorated-unit-price' | translate\">\n <ng-template let-line=\"item\">\n {{ line.proratedUnitPriceWithTax | localeCurrency : order.currencyCode }}\n <ng-container *ngIf=\"line.discounts as discounts\">\n <vdr-dropdown *ngIf=\"discounts.length\">\n <div class=\"promotions-label\" vdrDropdownTrigger>\n <button class=\"icon-button\"><clr-icon shape=\"info\"></clr-icon></button>\n </div>\n <vdr-dropdown-menu>\n <div class=\"line-promotion\" *ngFor=\"let discount of discounts\">\n {{ discount.description }}\n <div class=\"promotion-amount\">\n {{\n discount.amount / 100 / line.quantity\n | number : '1.0-2'\n | currency : order.currencyCode\n }}\n </div>\n </div>\n </vdr-dropdown-menu>\n </vdr-dropdown>\n </ng-container>\n </ng-template>\n </vdr-dt2-column>\n <vdr-dt2-column id=\"quantity\" [heading]=\"'order.quantity' | translate\">\n <ng-template let-line=\"item\">\n {{ line.quantity }}\n <vdr-line-refunds [line]=\"line\" [payments]=\"order.payments\"></vdr-line-refunds>\n </ng-template>\n </vdr-dt2-column>\n <vdr-dt2-column id=\"refund-quantity\" [heading]=\"'order.refund' | translate\" [optional]=\"false\">\n <ng-template let-line=\"item\">\n <input\n *ngIf=\"lineCanBeRefundedOrCancelled(line)\"\n [ngModel]=\"lineQuantities[line.id].quantity\"\n type=\"number\"\n [max]=\"line.quantity\"\n min=\"0\"\n (ngModelChange)=\"onRefundQuantityChange(line.id, $event)\"\n />\n </ng-template>\n </vdr-dt2-column>\n <vdr-dt2-column id=\"cancel\" [heading]=\"'order.return-to-stock' | translate\" [optional]=\"false\">\n <ng-template let-line=\"item\">\n <div class=\"cancel-checkbox-wrapper\">\n <label class=\"flex center\">\n <input\n type=\"checkbox\"\n *ngIf=\"lineCanBeRefundedOrCancelled(line)\"\n clrCheckbox\n [disabled]=\"0 === lineQuantities[line.id].quantity\"\n [(ngModel)]=\"lineQuantities[line.id].cancel\"\n />\n <span class=\"ml-1\">{{ 'order.return-to-stock' | translate }}</span></label\n >\n </div>\n </ng-template>\n </vdr-dt2-column>\n </vdr-data-table-2>\n\n <div class=\"refund-details mt-4\">\n <div>\n <vdr-card>\n <label class=\"flex mb-2\" *ngFor=\"let shippingLine of order.shippingLines\">\n <input type=\"checkbox\" clrCheckbox (change)=\"toggleShippingRefund(shippingLine.id)\" />\n <div class=\"ml-1\">\n {{ 'order.refund-shipping' | translate }}\n <span>{{ shippingLine.shippingMethod.name }}:</span>\n <span class=\"ml-1\"\n >{{ shippingLine.discountedPriceWithTax | localeCurrency : order.currencyCode }}\n </span>\n </div></label\n >\n <vdr-form-field [label]=\"'order.refund-cancellation-reason' | translate\" class=\"mb-2\">\n <ng-select\n [items]=\"reasons\"\n bindLabel=\"name\"\n autofocus\n [placeholder]=\"'order.refund-cancellation-reason-required' | translate\"\n bindValue=\"id\"\n [addTag]=\"true\"\n [(ngModel)]=\"reason\"\n ></ng-select>\n </vdr-form-field>\n <vdr-form-field\n [label]=\"'order.refund-total' | translate\"\n [readOnlyToggle]=\"true\"\n (readOnlyToggleChange)=\"manuallySetRefundTotal = !$event\"\n >\n <vdr-currency-input\n [readonly]=\"!manuallySetRefundTotal\"\n [currencyCode]=\"order.currencyCode\"\n [(ngModel)]=\"refundTotal\"\n (ngModelChange)=\"updateRefundTotal()\"\n ></vdr-currency-input>\n </vdr-form-field>\n </vdr-card>\n </div>\n <div class=\"\">\n <vdr-payment-for-refund-selector\n [refundablePayments]=\"refundablePayments\"\n (paymentSelected)=\"onPaymentSelected($event.payment, $event.selected)\"\n [order]=\"order\"\n ></vdr-payment-for-refund-selector>\n </div>\n </div>\n</div>\n\n<ng-template vdrDialogButtons>\n <div>\n <div class=\"errors\">\n <clr-alert\n *ngIf=\"refundTotal < 0 || totalRefundableAmount < refundTotal\"\n [clrAlertType]=\"'danger'\"\n [clrAlertClosable]=\"false\"\n >\n <clr-alert-item>\n {{\n 'order.refund-total-error'\n | translate\n : {\n min: 0 | currency : order.currencyCode,\n max: totalRefundableAmount | localeCurrency : order.currencyCode\n }\n }}\n </clr-alert-item>\n </clr-alert>\n <clr-alert\n *ngIf=\"amountToRefundTotal < refundTotal || refundTotal < amountToRefundTotal\"\n [clrAlertType]=\"'danger'\"\n [clrAlertClosable]=\"false\"\n >\n <clr-alert-item>\n {{ 'order.refund-total-warning' | translate }}\n </clr-alert-item>\n </clr-alert>\n <clr-alert\n *ngIf=\"amountToRefundTotal && !reason\"\n [clrAlertType]=\"'danger'\"\n [clrAlertClosable]=\"false\"\n >\n <clr-alert-item>\n {{ 'order.refund-cancellation-reason-required' | translate }}\n </clr-alert-item>\n </clr-alert>\n </div>\n <div class=\"modal-buttons\">\n <button type=\"button\" class=\"btn\" (click)=\"cancel()\">{{ 'common.cancel' | translate }}</button>\n <button type=\"submit\" (click)=\"select()\" [disabled]=\"!canSubmit()\" class=\"btn btn-primary\">\n {{\n 'order.refund-with-amount'\n | translate : { amount: amountToRefundTotal | localeCurrency : order.currencyCode }\n }}\n </button>\n </div>\n </div>\n</ng-template>\n","import { ChangeDetectionStrategy, Component } from '@angular/core';\nimport { Dialog, OrderDetailFragment } from '@vendure/admin-ui/core';\n\n@Component({\n selector: 'vdr-settle-refund-dialog',\n templateUrl: './settle-refund-dialog.component.html',\n styleUrls: ['./settle-refund-dialog.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: false\n})\nexport class SettleRefundDialogComponent implements Dialog<string> {\n resolveWith: (result?: string) => void;\n transactionId = '';\n refund: NonNullable<OrderDetailFragment['payments']>[number]['refunds'][number];\n\n submit() {\n this.resolveWith(this.transactionId);\n }\n\n cancel() {\n this.resolveWith();\n }\n}\n","<ng-template vdrDialogTitle>{{ 'order.settle-refund' | translate }}</ng-template>\n<p class=\"instruction\">\n {{ 'order.settle-refund-manual-instructions' | translate: { method: refund.method } }}\n</p>\n<clr-input-container>\n <label>{{ 'order.transaction-id' | translate }}</label>\n <input clrInput name=\"transactionId\" [(ngModel)]=\"transactionId\" />\n</clr-input-container>\n\n<ng-template vdrDialogButtons>\n <button type=\"button\" class=\"btn\" (click)=\"cancel()\">{{ 'common.cancel' | translate }}</button>\n <button type=\"submit\" (click)=\"submit()\" [disabled]=\"!transactionId\" class=\"btn btn-primary\">\n {{ 'order.settle-refund' | translate }}\n </button>\n</ng-template>\n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\n\n@Component({\n selector: 'vdr-payment-state-label',\n templateUrl: './payment-state-label.component.html',\n styleUrls: ['./payment-state-label.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: false\n})\nexport class PaymentStateLabelComponent {\n @Input() state: string;\n\n get chipColorType() {\n switch (this.state) {\n case 'Authorized':\n return 'warning';\n case 'Settled':\n return 'success';\n case 'Declined':\n case 'Cancelled':\n return 'error';\n }\n }\n}\n","<vdr-chip [title]=\"'order.payment-state' | translate\" [colorType]=\"chipColorType\">\n <clr-icon shape=\"check-circle\" *ngIf=\"state === 'Settled'\"></clr-icon>\n {{ state | stateI18nToken | translate }}\n</vdr-chip>\n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\n\n@Component({\n selector: 'vdr-refund-state-label',\n templateUrl: './refund-state-label.component.html',\n styleUrls: ['./refund-state-label.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: false\n})\nexport class RefundStateLabelComponent {\n @Input() state: string;\n\n get chipColorType() {\n switch (this.state) {\n case 'Pending':\n return 'warning';\n case 'Settled':\n return 'success';\n case 'Failed':\n return 'error';\n }\n }\n}\n","<vdr-chip [title]=\"'order.payment-state' | translate\" [colorType]=\"chipColorType\">\n <clr-icon shape=\"check-circle\" *ngIf=\"state === 'Settled'\"></clr-icon>\n {{ state | stateI18nToken | translate }}\n</vdr-chip>\n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\nimport { CurrencyCode, OrderDetailFragment } from '@vendure/admin-ui/core';\n\n@Component({\n selector: 'vdr-payment-detail',\n templateUrl: './payment-detail.component.html',\n styleUrls: ['./payment-detail.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: false\n})\nexport class PaymentDetailComponent {\n @Input() payment: NonNullable<OrderDetailFragment['payments']>[number];\n @Input() currencyCode: CurrencyCode;\n}\n","<vdr-labeled-data [label]=\"'order.payment-method' | translate\">\n {{ payment.method }}\n</vdr-labeled-data>\n<vdr-labeled-data [label]=\"'order.amount' | translate\">\n {{ payment.amount | localeCurrency: currencyCode }}\n</vdr-labeled-data>\n<vdr-labeled-data *ngIf=\"payment.errorMessage\" [label]=\"'order.error-message' | translate\">\n {{ payment.errorMessage }}\n</vdr-labeled-data>\n<vdr-labeled-data *ngIf=\"payment.transactionId\" [label]=\"'order.transaction-id' | translate\">\n {{ payment.transactionId }}\n</vdr-labeled-data>\n<vdr-labeled-data [label]=\"'order.payment-metadata' | translate\">\n <vdr-object-tree [value]=\"payment.metadata\"></vdr-object-tree>\n</vdr-labeled-data>\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 standalone: false,\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","<div class=\"card\">\n <div class=\"card-header payment-header\">\n <div>\n {{ 'order.payment' | translate }}\n <ng-container *ngIf=\"payment.amount\">{{ payment.amount | localeCurrency : currencyCode }}</ng-container>\n </div>\n <div class=\"payment-state\">\n <vdr-payment-state-label [state]=\"payment.state\"></vdr-payment-state-label>\n </div>\n </div>\n <div class=\"card-block\">\n <vdr-payment-detail [payment]=\"payment\" [currencyCode]=\"currencyCode\"></vdr-payment-detail>\n </div>\n <ng-container *ngFor=\"let refund of payment.refunds\">\n <div class=\"refund-wrapper card-block\">\n <div class=\"card-header payment-header refund-header\">\n <clr-icon shape=\"redo\" class=\"refund-icon\" dir=\"down\"></clr-icon>\n {{ 'order.refund' | translate }} #{{ refund.id }}\n <div class=\"clr-flex-fill\"></div>\n <vdr-refund-state-label [state]=\"refund.state\"></vdr-refund-state-label>\n </div>\n <div class=\"card-block\">\n <vdr-labeled-data [label]=\"'common.created-at' | translate\">\n {{ refund.createdAt | localeDate : 'medium' }}\n </vdr-labeled-data>\n <vdr-labeled-data [label]=\"'order.refund-total' | translate\">\n {{ refund.total | localeCurrency : currencyCode }}\n </vdr-labeled-data>\n <vdr-labeled-data [label]=\"'order.transaction-id' | translate\" *ngIf=\"refund.transactionId\">\n {{ refund.transactionId }}\n </vdr-labeled-data>\n <vdr-labeled-data [label]=\"'order.refund-reason' | translate\" *ngIf=\"refund.reason\">\n {{ refund.reason }}\n </vdr-labeled-data>\n <vdr-labeled-data\n [label]=\"'order.refund-metadata' | translate\"\n *ngIf=\"refundHasMetadata(refund)\"\n >\n <vdr-object-tree [value]=\"refund.metadata\"></vdr-object-tree>\n </vdr-labeled-data>\n </div>\n <div class=\"card-footer\" *ngIf=\"refund.state === 'Pending'\">\n <button class=\"btn btn-sm btn-primary\" (click)=\"settleRefund.emit(refund)\">\n {{ 'order.settle-refund' | translate }}\n </button>\n </div>\n </div>\n </ng-container>\n <div class=\"card-footer\" *ngIf=\"payment.nextStates.length\">\n <button\n class=\"btn btn-sm btn-primary\"\n *ngIf=\"payment.nextStates.includes('Settled')\"\n (click)=\"settlePayment.emit(payment)\"\n >\n {{ 'order.settle-payment' | translate }}\n </button>\n <vdr-dropdown>\n <button class=\"icon-button\" vdrDropdownTrigger>\n <clr-icon shape=\"ellipsis-vertical\"></clr-icon>\n </button>\n <vdr-dropdown-menu vdrPosition=\"bottom-right\">\n <ng-container *ngFor=\"let nextState of nextOtherStates()\">\n <button\n type=\"button\"\n vdrDropdownItem\n (click)=\"transitionPaymentState.emit({ payment: payment, state: nextState })\"\n >\n <ng-container *ngIf=\"nextState !== 'Cancelled'; else cancel\">\n <clr-icon shape=\"step-forward-2\"></clr-icon>\n {{\n 'order.transition-to-state'\n | translate : { state: (nextState | stateI18nToken | translate) }\n }}\n </ng-container>\n <ng-template #cancel>\n <clr-icon shape=\"error-standard\" class=\"is-error\"></clr-icon>\n {{ 'order.cancel-payment' | translate }}\n </ng-template>\n </button>\n </ng-container>\n </vdr-dropdown-menu>\n </vdr-dropdown>\n </div>\n</div>\n","import {\n Component,\n ComponentRef,\n EventEmitter,\n Input,\n OnDestroy,\n OnInit,\n Output,\n Type,\n ViewChild,\n ViewContainerRef,\n} from '@angular/core';\nimport {\n HistoryEntryComponentService,\n OrderDetailFragment,\n OrderHistoryEntryComponent,\n TimelineHistoryEntry,\n} from '@vendure/admin-ui/core';\n\n@Component({\n selector: 'vdr-order-history-entry-host',\n template: `\n <vdr-timeline-entry\n [displayType]=\"instance.getDisplayType(entry)\"\n [iconShape]=\"instance.getIconShape && instance.getIconShape(entry)\"\n [createdAt]=\"entry.createdAt\"\n [name]=\"instance.getName && instance.getName(entry)\"\n [featured]=\"instance.isFeatured(entry)\"\n [collapsed]=\"!expanded && !instance.isFeatured(entry)\"\n (expandClick)=\"expandClick.emit()\"\n >\n <div #portal></div>\n </vdr-timeline-entry>\n `,\n exportAs: 'historyEntry',\n standalone: false,\n})\nexport class OrderHistoryEntryHostComponent implements OnInit, OnDestroy {\n @Input() entry: TimelineHistoryEntry;\n @Input() order: OrderDetailFragment;\n @Input() expanded: boolean;\n @Output() expandClick = new EventEmitter<void>();\n @ViewChild('portal', { static: true, read: ViewContainerRef }) portalRef: ViewContainerRef;\n instance: OrderHistoryEntryComponent;\n private componentRef: ComponentRef<OrderHistoryEntryComponent>;\n\n constructor(private historyEntryComponentService: HistoryEntryComponentService) {}\n\n ngOnInit(): void {\n const componentType = this.historyEntryComponentService.getComponent(\n this.entry.type,\n ) as Type<OrderHistoryEntryComponent>;\n\n const componentRef = this.portalRef.createComponent(componentType);\n componentRef.instance.entry = this.entry;\n componentRef.instance.order = this.order;\n this.instance = componentRef.instance;\n this.componentRef = componentRef;\n }\n\n ngOnDestroy() {\n this.componentRef?.destroy();\n }\n}\n","import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from '@angular/core';\nimport {\n HistoryEntryComponentService,\n HistoryEntryType,\n OrderDetailFragment,\n TimelineDisplayType,\n TimelineHistoryEntry,\n} from '@vendure/admin-ui/core';\n\n@Component({\n selector: 'vdr-order-history',\n templateUrl: './order-history.component.html',\n styleUrls: ['./order-history.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: false,\n})\nexport class OrderHistoryComponent {\n @Input() order: OrderDetailFragment;\n @Input() history: TimelineHistoryEntry[];\n @Output() addNote = new EventEmitter<{ note: string; isPublic: boolean }>();\n @Output() updateNote = new EventEmitter<TimelineHistoryEntry>();\n @Output() deleteNote = new EventEmitter<TimelineHistoryEntry>();\n note = '';\n noteIsPrivate = true;\n expanded = false;\n readonly type = HistoryEntryType;\n\n constructor(private historyEntryComponentService: HistoryEntryComponentService) {}\n\n hasCustomComponent(type: string): boolean {\n return !!this.historyEntryComponentService.getComponent(type);\n }\n\n getDisplayType(entry: TimelineHistoryEntry): TimelineDisplayType {\n if (entry.type === HistoryEntryType.ORDER_STATE_TRANSITION) {\n if (entry.data.to === 'Delivered') {\n return 'success';\n }\n if (entry.data.to === 'Cancelled') {\n return 'error';\n }\n }\n if (entry.type === HistoryEntryType.ORDER_FULFILLMENT_TRANSITION) {\n if (entry.data.to === 'Delivered') {\n return 'success';\n }\n }\n if (entry.type === HistoryEntryType.ORDER_PAYMENT_TRANSITION) {\n if (entry.data.to === 'Declined' || entry.data.to === 'Cancelled') {\n return 'error';\n }\n }\n if (entry.type === HistoryEntryType.ORDER_CANCELLATION) {\n return 'warning';\n }\n if (entry.type === HistoryEntryType.ORDER_REFUND_TRANSITION) {\n return 'warning';\n }\n return 'default';\n }\n\n getTimelineIcon(entry: TimelineHistoryEntry) {\n if (entry.type === HistoryEntryType.ORDER_STATE_TRANSITION) {\n if (entry.data.to === 'Delivered') {\n return ['success-standard', 'is-solid'];\n }\n if (entry.data.to === 'Cancelled') {\n return 'ban';\n }\n }\n if (entry.type === HistoryEntryType.ORDER_PAYMENT_TRANSITION) {\n if (entry.data.to === 'Settled') {\n return 'credit-card';\n }\n }\n if (entry.type === HistoryEntryType.ORDER_REFUND_TRANSITION) {\n if (entry.data.to === 'Settled') {\n return 'credit-card';\n }\n }\n if (entry.type === HistoryEntryType.ORDER_NOTE) {\n return 'note';\n }\n if (entry.type === HistoryEntryType.ORDER_MODIFIED) {\n return 'pencil';\n }\n if (entry.type === HistoryEntryType.ORDER_CUSTOMER_UPDATED) {\n return 'switch';\n }\n if (entry.type === HistoryEntryType.ORDER_FULFILLMENT_TRANSITION) {\n if (entry.data.to === 'Shipped') {\n return 'truck';\n }\n if (entry.data.to === 'Delivered') {\n return 'truck';\n }\n }\n }\n\n isFeatured(entry: TimelineHistoryEntry): boolean {\n switch (entry.type) {\n case HistoryEntryType.ORDER_STATE_TRANSITION: {\n return (\n entry.data.to === 'Delivered' ||\n entry.data.to === 'Cancelled' ||\n entry.data.to === 'Settled'\n );\n }\n case HistoryEntryType.ORDER_REFUND_TRANSITION:\n return entry.data.to === 'Settled';\n case HistoryEntryType.ORDER_PAYMENT_TRANSITION:\n return entry.data.to === 'Settled' || entry.data.to === 'Cancelled';\n case HistoryEntryType.ORDER_FULFILLMENT_TRANSITION:\n return entry.data.to === 'Delivered' || entry.data.to === 'Shipped';\n case HistoryEntryType.ORDER_NOTE:\n case HistoryEntryType.ORDER_MODIFIED:\n case HistoryEntryType.ORDER_CUSTOMER_UPDATED:\n return true;\n default:\n return false;\n }\n }\n\n getFulfillment(\n entry: TimelineHistoryEntry,\n ): NonNullable<OrderDetailFragment['fulfillments']>[number] | undefined {\n if (\n (entry.type === HistoryEntryType.ORDER_FULFILLMENT ||\n entry.type === HistoryEntryType.ORDER_FULFILLMENT_TRANSITION) &&\n this.order.fulfillments\n ) {\n return this.order.fulfillments.find(f => f.id == entry.data.fulfillmentId);\n }\n }\n\n getPayment(\n entry: TimelineHistoryEntry,\n ): NonNullable<OrderDetailFragment['payments']>[number] | undefined {\n if (entry.type === HistoryEntryType.ORDER_PAYMENT_TRANSITION && this.order.payments) {\n return this.order.payments.find(p => p.id === entry.data.paymentId);\n }\n }\n\n getRefund(\n entry: TimelineHistoryEntry,\n ): NonNullable<OrderDetailFragment['payments']>[number]['refunds'][number] | undefined {\n if (entry.type === HistoryEntryType.ORDER_REFUND_TRANSITION && this.order.payments) {\n const allRefunds = this.order.payments.reduce(\n (refunds, payment) => refunds.concat(payment.refunds),\n [] as NonNullable<OrderDetailFragment['payments']>[number]['refunds'],\n );\n return allRefunds.find(r => r.id === entry.data.refundId);\n }\n }\n\n getCancelledQuantity(entry: TimelineHistoryEntry): number {\n return entry.data.lines.reduce((total, line) => total + line.quantity, 0);\n }\n\n getCancelledItems(\n cancellationLines: Array<{ orderLineId: string; quantity: number }>,\n ): Array<{ name: string; quantity: number }> {\n const itemMap = new Map<string, number>();\n for (const line of this.order.lines) {\n const cancellationLine = cancellationLines.find(l => l.orderLineId === line.id);\n if (cancellationLine) {\n itemMap.set(line.productVariant.name, cancellationLine.quantity);\n }\n }\n return Array.from(itemMap.entries()).map(([name, quantity]) => ({ name, quantity }));\n }\n\n getModification(id: string) {\n return this.order.modifications.find(m => m.id === id);\n }\n\n getName(entry: TimelineHistoryEntry): string {\n const { administrator } = entry;\n if (administrator) {\n return `${administrator.firstName} ${administrator.lastName}`;\n } else {\n const customer = this.order.customer;\n if (customer) {\n return `${customer.firstName} ${customer.lastName}`;\n }\n }\n return '';\n }\n\n addNoteToOrder() {\n this.addNote.emit({ note: this.note, isPublic: !this.noteIsPrivate });\n this.note = '';\n this.noteIsPrivate = true;\n }\n}\n","<div class=\"entry-list\" [class.expanded]=\"expanded\">\n <vdr-timeline-entry iconShape=\"note\" displayType=\"muted\" [featured]=\"true\" [isFirst]=\"true\">\n <div class=\"note-entry\">\n <textarea [(ngModel)]=\"note\" name=\"note\" class=\"note\"></textarea>\n <button class=\"btn btn-secondary\" [disabled]=\"!note\" (click)=\"addNoteToOrder()\">\n {{ 'common.add-note' | translate }}\n </button>\n </div>\n <div class=\"visibility-select\">\n <clr-checkbox-wrapper>\n <input type=\"checkbox\" clrCheckbox [(ngModel)]=\"noteIsPrivate\" />\n <label>{{ 'order.note-is-private' | translate }}</label>\n </clr-checkbox-wrapper>\n <span *ngIf=\"noteIsPrivate\" class=\"private\">\n {{ 'order.note-only-visible-to-administrators' | translate }}\n </span>\n <span *ngIf=\"!noteIsPrivate\" class=\"public\">\n {{ 'order.note-visible-to-customer' | translate }}\n </span>\n </div>\n </vdr-timeline-entry>\n <ng-container *ngFor=\"let entry of history\">\n <vdr-order-history-entry-host\n *ngIf=\"hasCustomComponent(entry.type); else defaultComponents\"\n [order]=\"order\"\n [entry]=\"entry\"\n [expanded]=\"expanded\"\n (expandClick)=\"expanded = !expanded\"\n ></vdr-order-history-entry-host>\n <ng-template #defaultComponents>\n <vdr-timeline-entry\n [displayType]=\"getDisplayType(entry)\"\n [iconShape]=\"getTimelineIcon(entry)\"\n [createdAt]=\"entry.createdAt\"\n [name]=\"getName(entry)\"\n [featured]=\"isFeatured(entry)\"\n [collapsed]=\"!expanded && !isFeatured(entry)\"\n (expandClick)=\"expanded = !expanded\"\n >\n <ng-container [ngSwitch]=\"entry.type\">\n <ng-container *ngSwitchCase=\"type.ORDER_STATE_TRANSITION\">\n <div class=\"title\" *ngIf=\"entry.data.to === 'Delivered'\">\n {{ 'order.history-order-fulfilled' | translate }}\n </div>\n <div class=\"title\" *ngIf=\"entry.data.to === 'Cancelled'\">\n {{ 'order.history-order-cancelled' | translate }}\n </div>\n <ng-template [ngIf]=\"entry.data.to !== 'Cancelled' && entry.data.to !== 'Delivered'\">\n {{\n 'order.history-order-transition'\n | translate : { from: entry.data.from, to: entry.data.to }\n }}\n </ng-template>\n </ng-container>\n <ng-container *ngSwitchCase=\"type.ORDER_MODIFIED\">\n <div class=\"title\">\n {{ 'order.history-order-modified' | translate }}\n </div>\n <div\n class=\"flex items-center\"\n *ngIf=\"getModification(entry.data.modificationId) as modification\"\n >\n {{ 'order.modify-order-price-difference' | translate }}:\n <strong>{{\n modification.priceChange | localeCurrency : order.currencyCode\n }}</strong>\n <vdr-chip colorType=\"success\" class=\"mx-1\" *ngIf=\"modification.isSettled\">{{\n 'order.modification-settled' | translate\n }}</vdr-chip>\n <vdr-chip colorType=\"error\" class=\"mx-1\" *ngIf=\"!modification.isSettled\">{{\n 'order.modification-not-settled' | translate\n }}</vdr-chip>\n <vdr-history-entry-detail>\n <vdr-modification-detail\n [order]=\"order\"\n [modification]=\"modification\"\n ></vdr-modification-detail>\n </vdr-history-entry-detail>\n </div>\n </ng-container>\n <ng-container *ngSwitchCase=\"type.ORDER_PAYMENT_TRANSITION\">\n <ng-container *ngIf=\"entry.data.to === 'Settled'; else regularPaymentTransition\">\n <div class=\"title\">\n {{ 'order.history-payment-settled' | translate }}\n </div>\n <div class=\"flex items-center\">\n <vdr-chip *ngIf=\"getPayment(entry) as payment\" class=\"mr-1\">{{\n payment.amount | localeCurrency : order.currencyCode\n }}</vdr-chip>\n <vdr-history-entry-detail *ngIf=\"getPayment(entry) as payment\">\n <vdr-payment-detail\n [payment]=\"payment\"\n [currencyCode]=\"order.currencyCode\"\n ></vdr-payment-detail>\n </vdr-history-entry-detail>\n </div>\n </ng-container>\n <ng-template #regularPaymentTransition>\n {{\n 'order.history-payment-transition'\n | translate\n : {\n from: entry.data.from,\n to: entry.data.to,\n id: getPayment(entry)?.transactionId\n }\n }}\n </ng-template>\n </ng-container>\n <ng-container *ngSwitchCase=\"type.ORDER_REFUND_TRANSITION\">\n <ng-container *ngIf=\"entry.data.to === 'Settled'; else regularRefundTransition\">\n <ng-container *ngIf=\"getRefund(entry) as refund\">\n <div class=\"title\">{{ 'order.refund' | translate }} #{{ refund.id }}</div>\n <div class=\"flex items-center\">\n <vdr-chip colorType=\"warning\" class=\"mr-1\">{{\n refund.total | localeCurrency : order.currencyCode\n }}</vdr-chip>\n <vdr-history-entry-detail>\n <vdr-labeled-data [label]=\"'order.cancellation-reason' | translate\">\n {{ entry.data.reason }}\n </vdr-labeled-data>\n <vdr-labeled-data [label]=\"'order.contents' | translate\">\n <vdr-simple-item-list\n [items]=\"getCancelledItems(refund.lines)\"\n ></vdr-simple-item-list>\n </vdr-labeled-data>\n </vdr-history-entry-detail>\n </div>\n </ng-container>\n </ng-container>\n <ng-template #regularRefundTransition>\n {{\n 'order.history-refund-transition'\n | translate\n : {\n from: entry.data.from,\n to: entry.data.to,\n id: entry.data.refundId\n }\n }}\n </ng-template>\n </ng-container>\n <ng-container *ngSwitchCase=\"type.ORDER_CANCELLATION\">\n {{\n 'order.history-items-cancelled'\n | translate : { count: getCancelledQuantity(entry) }\n }}\n <vdr-history-entry-detail *ngIf=\"getCancelledItems(entry.data.lines) as items\">\n <vdr-labeled-data [label]=\"'order.cancellation-reason' | translate\">\n {{ entry.data.reason }}\n </vdr-labeled-data>\n <vdr-labeled-data [label]=\"'order.contents' | translate\">\n <vdr-simple-item-list [items]=\"items\"></vdr-simple-item-list>\n </vdr-labeled-data>\n <vdr-labeled-data [label]=\"'order.shipping-cancelled' | translate\">\n {{ entry.data.shippingCancelled }}\n </vdr-labeled-data>\n </vdr-history-entry-detail>\n </ng-container>\n <ng-container *ngSwitchCase=\"type.ORDER_FULFILLMENT\">\n {{ 'order.history-fulfillment-created' | translate }}\n <vdr-history-entry-detail *ngIf=\"getFulfillment(entry) as fulfillment\">\n <vdr-fulfillment-detail\n [fulfillmentId]=\"fulfillment.id\"\n [order]=\"order\"\n ></vdr-fulfillment-detail>\n </vdr-history-entry-detail>\n </ng-container>\n <ng-container *ngSwitchCase=\"type.ORDER_FULFILLMENT_TRANSITION\">\n <ng-container *ngIf=\"entry.data.to === 'Delivered'\">\n <div class=\"title\">\n {{ 'order.history-fulfillment-delivered' | translate }}\n </div>\n {{ 'order.tracking-code' | translate }}: {{ getFulfillment(entry)?.trackingCode }}\n </ng-container>\n <ng-container *ngIf=\"entry.data.to === 'Shipped'\">\n <div class=\"title\">\n {{ 'order.history-fulfillment-shipped' | translate }}\n </div>\n {{ 'order.tracking-code' | translate }}: {{ getFulfillment(entry)?.trackingCode }}\n </ng-container>\n <ng-container *ngIf=\"entry.data.to !== 'Delivered' && entry.data.to !== 'Shipped'\">\n {{\n 'order.history-fulfillment-transition'\n | translate : { from: entry.data.from, to: entry.data.to }\n }}\n </ng-container>\n <vdr-history-entry-detail *ngIf=\"getFulfillment(entry) as fulfillment\">\n <vdr-fulfillment-detail\n [fulfillmentId]=\"fulfillment.id\"\n [order]=\"order\"\n ></vdr-fulfillment-detail>\n </vdr-history-entry-detail>\n </ng-container>\n <ng-container *ngSwitchCase=\"type.ORDER_NOTE\">\n <div class=\"flex\">\n <div class=\"note-text\">\n <span *ngIf=\"entry.isPublic\" class=\"note-visibility public\">{{\n 'common.public' | translate\n }}</span>\n <span *ngIf=\"!entry.isPublic\" class=\"note-visibility private\">{{\n 'common.private' | translate\n }}</span>\n {{ entry.data.note }}\n </div>\n <div class=\"flex-spacer\"></div>\n <vdr-dropdown>\n <button class=\"button-small ml-1\" vdrDropdownTrigger>\n <clr-icon shape=\"ellipsis-vertical\" size=\"12\"></clr-icon>\n </button>\n <vdr-dropdown-menu vdrPosition=\"bottom-right\">\n <button\n vdrDropdownItem\n (click)=\"updateNote.emit(entry)\"\n [disabled]=\"!('UpdateOrder' | hasPermission)\"\n >\n <clr-icon shape=\"edit\"></clr-icon>\n {{ 'common.edit' | translate }}\n </button>\n <div class=\"dropdown-divider\"></div>\n <button\n vdrDropdownItem\n (click)=\"deleteNote.emit(entry)\"\n [disabled]=\"!('UpdateOrder' | hasPermission)\"\n >\n <clr-icon shape=\"trash\" class=\"is-danger\"></clr-icon>\n {{ 'common.delete' | translate }}\n </button>\n </vdr-dropdown-menu>\n </vdr-dropdown>\n </div>\n </ng-container>\n <ng-container *ngSwitchCase=\"type.ORDER_COUPON_APPLIED\">\n {{ 'order.history-coupon-code-applied' | translate }}:\n <vdr-chip>\n <a [routerLink]=\"['/marketing', 'promotions', entry.data.promotionId]\">{{\n entry.data.couponCode\n }}</a>\n </vdr-chip>\n </ng-container>\n <ng-container *ngSwitchCase=\"type.ORDER_COUPON_REMOVED\">\n {{ 'order.history-coupon-code-removed' | translate }}:\n <vdr-chip\n ><span class=\"cancelled-coupon-code\">{{ entry.data.couponCode }}</span></vdr-chip\n >\n </ng-container>\n <ng-container *ngSwitchCase=\"type.ORDER_CUSTOMER_UPDATED\">\n <div class=\"title\">\n {{\n 'order.history-customer-updated'\n | translate : { newCustomerName: entry.data.newCustomerName }\n }}\n </div>\n <div class=\"flex\">\n <div class=\"note-text\">\n {{ entry.data.note }}\n </div>\n <div class=\"flex-spacer\"></div>\n <vdr-history-entry-detail>\n <vdr-labeled-data [label]=\"'order.previous-customer' | translate\">\n <a\n *ngIf=\"entry.data.previousCustomerId\"\n class=\"button-ghost\"\n [routerLink]=\"[\n '/customer',\n 'customers',\n entry.data.previousCustomerId\n ]\"\n >\n <clr-icon shape=\"user\" class=\"is-solid\"></clr-icon>\n <span>{{ entry.data.previousCustomerName }}</span>\n <clr-icon shape=\"arrow right\"></clr-icon>\n </a>\n </vdr-labeled-data>\n <vdr-labeled-data [label]=\"'order.new-customer' | translate\">\n <a\n *ngIf=\"entry.data.newCustomerId\"\n class=\"button-ghost\"\n [routerLink]=\"['/customer', 'customers', entry.data.newCustomerId]\"\n >\n <clr-icon shape=\"user\" class=\"is-solid\"></clr-icon>\n <span>{{ entry.data.newCustomerName }}</span>\n <clr-icon shape=\"arrow right\"></clr-icon>\n </a>\n </vdr-labeled-data>\n </vdr-history-entry-detail>\n </div>\n </ng-container>\n <ng-container *ngSwitchDefault>\n <div class=\"title\">\n {{ entry.type | translate }}\n </div>\n <vdr-history-entry-detail *ngIf=\"entry.data\">\n <vdr-object-tree [value]=\"entry.data\"></vdr-object-tree>\n </vdr-history-entry-detail>\n </ng-container>\n </ng-container>\n </vdr-timeline-entry>\n </ng-template>\n </ng-container>\n\n <vdr-timeline-entry [isLast]=\"true\" [createdAt]=\"order.createdAt\" [featured]=\"true\">\n <div class=\"title\">\n {{ 'order.history-order-created' | translate }}\n </div>\n </vdr-timeline-entry>\n</div>\n","import { gql } from 'apollo-angular';\n\nexport const GET_SELLER_ORDERS = gql`\n query GetSellerOrders($orderId: ID!) {\n order(id: $orderId) {\n id\n sellerOrders {\n id\n code\n state\n orderPlacedAt\n currencyCode\n totalWithTax\n channels {\n id\n code\n seller {\n id\n name\n }\n }\n }\n }\n }\n`;\n","import { ChangeDetectionStrategy, Component, Input, OnInit } from '@angular/core';\nimport { Router } from '@angular/router';\nimport {\n ChannelService,\n DataService,\n GetSellerOrdersQuery,\n GetSellerOrdersQueryVariables,\n} from '@vendure/admin-ui/core';\nimport { DEFAULT_CHANNEL_CODE } from '@vendure/common/lib/shared-constants';\nimport { Observable } from 'rxjs';\n\nimport { GET_SELLER_ORDERS } from './seller-orders-card.graphql';\n\ntype SellerOrder = NonNullable<NonNullable<GetSellerOrdersQuery['order']>['sellerOrders']>[number];\n\n@Component({\n selector: 'vdr-seller-orders-card',\n templateUrl: './seller-orders-card.component.html',\n styleUrls: ['./seller-orders-card.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: false\n})\nexport class SellerOrdersCardComponent implements OnInit {\n @Input() orderId: string;\n\n sellerOrders$: Observable<SellerOrder[]>;\n\n constructor(\n private router: Router,\n private dataService: DataService,\n private channelService: ChannelService,\n ) {}\n\n ngOnInit() {\n this.sellerOrders$ = this.dataService\n .query<GetSellerOrdersQuery, GetSellerOrdersQueryVariables>(GET_SELLER_ORDERS, {\n orderId: this.orderId,\n })\n .mapSingle(({ order }) => order?.sellerOrders ?? []);\n }\n\n getSeller(order: SellerOrder) {\n const sellerChannel = order.channels.find(channel => channel.code !== DEFAULT_CHANNEL_CODE);\n return sellerChannel?.seller;\n }\n\n navigateToSellerOrder(order: SellerOrder) {\n this.router.navigate(['/orders', order.id]);\n }\n}\n","<vdr-card [title]=\"'order.seller-orders' | translate\">\n <div class=\"form-grid\">\n <div *ngFor=\"let order of sellerOrders$ | async\">\n <a [routerLink]=\"['seller-orders', order.id]\" class=\"button-ghost mb-1\"\n >{{ order.code }} <clr-icon shape=\"arrow right\"></clr-icon\n ></a>\n <vdr-labeled-data [label]=\"'order.state' | translate\">\n <vdr-order-state-label [state]=\"order.state\"></vdr-order-state-label>\n </vdr-labeled-data>\n <vdr-labeled-data *ngIf=\"getSeller(order) as seller\" [label]=\"'common.seller' | translate\">\n {{ seller.name }}\n </vdr-labeled-data>\n <vdr-labeled-data *ngIf=\"getSeller(order) as seller\" [label]=\"'order.total' | translate\">\n {{ order.totalWithTax | localeCurrency : order.currencyCode }}\n </vdr-labeled-data>\n </div>\n </div>\n</vdr-card>\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, OnDestroy, OnInit } from '@angular/core';\nimport { FormBuilder, FormGroup } from '@angular/forms';\nimport { marker as _ } from '@biesbjerg/ngx-translate-extract-marker';\nimport {\n DataService,\n EditNoteDialogComponent,\n FulfillmentFragment,\n getCustomFieldsDefaults,\n GetOrderHistoryQuery,\n GetOrderQuery,\n ModalService,\n NotificationService,\n ORDER_DETAIL_FRAGMENT,\n OrderDetailFragment,\n OrderDetailQueryDocument,\n Refund,\n SetOrderCustomerDocument,\n SortOrder,\n TimelineHistoryEntry,\n TypedBaseDetailComponent,\n} from '@vendure/admin-ui/core';\nimport { assertNever, summate } from '@vendure/common/lib/shared-utils';\nimport { gql } from 'apollo-angular';\nimport { EMPTY, forkJoin, Observable, of, Subject } from 'rxjs';\nimport { map, mapTo, startWith, switchMap, take } from 'rxjs/operators';\n\nimport { OrderTransitionService } from '../../providers/order-transition.service';\nimport { AddManualPaymentDialogComponent } from '../add-manual-payment-dialog/add-manual-payment-dialog.component';\nimport { CancelOrderDialogComponent } from '../cancel-order-dialog/cancel-order-dialog.component';\nimport { FulfillOrderDialogComponent } from '../fulfill-order-dialog/fulfill-order-dialog.component';\nimport { OrderProcessGraphDialogComponent } from '../order-process-graph-dialog/order-process-graph-dialog.component';\nimport { RefundOrderDialogComponent } from '../refund-order-dialog/refund-order-dialog.component';\nimport { SelectCustomerDialogComponent } from '../select-customer-dialog/select-customer-dialog.component';\nimport { SettleRefundDialogComponent } from '../settle-refund-dialog/settle-refund-dialog.component';\n\ntype Payment = NonNullable<OrderDetailFragment['payments']>[number];\n\nexport const ORDER_DETAIL_QUERY = gql`\n query OrderDetailQuery($id: ID!) {\n order(id: $id) {\n ...OrderDetail\n }\n }\n ${ORDER_DETAIL_FRAGMENT}\n`;\n\nexport const SET_ORDER_CUSTOMER_MUTATION = gql`\n mutation SetOrderCustomer($input: SetOrderCustomerInput!) {\n setOrderCustomer(input: $input) {\n id\n customer {\n id\n firstName\n lastName\n emailAddress\n }\n }\n }\n`;\n\n@Component({\n selector: 'vdr-order-detail',\n templateUrl: './order-detail.component.html',\n styleUrls: ['./order-detail.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: false,\n})\nexport class OrderDetailComponent\n extends TypedBaseDetailComponent<typeof OrderDetailQueryDocument, 'order'>\n implements OnInit, OnDestroy\n{\n customFields = this.getCustomFieldConfig('Order');\n orderLineCustomFields = this.getCustomFieldConfig('OrderLine');\n detailForm = new FormGroup({\n customFields: this.formBuilder.group(getCustomFieldsDefaults(this.customFields)),\n });\n history$: Observable<NonNullable<GetOrderHistoryQuery['order']>['history']['items'] | undefined>;\n nextStates$: Observable<string[]>;\n fetchHistory = new Subject<void>();\n private readonly defaultStates = [\n 'AddingItems',\n 'ArrangingPayment',\n 'PaymentAuthorized',\n 'PaymentSettled',\n 'PartiallyShipped',\n 'Shipped',\n 'PartiallyDelivered',\n 'Delivered',\n 'Cancelled',\n 'Modifying',\n 'ArrangingAdditionalPayment',\n ];\n\n constructor(\n private changeDetector: ChangeDetectorRef,\n protected dataService: DataService,\n private notificationService: NotificationService,\n private modalService: ModalService,\n private orderTransitionService: OrderTransitionService,\n private formBuilder: FormBuilder,\n ) {\n super();\n }\n\n ngOnInit() {\n this.init();\n this.entity$.pipe(take(1)).subscribe(order => {\n if (order.state === 'Modifying') {\n this.router.navigate(['./', 'modify'], { relativeTo: this.route });\n }\n });\n this.history$ = this.fetchHistory.pipe(\n startWith(null),\n switchMap(() =>\n this.dataService.order\n .getOrderHistory(this.id, {\n sort: {\n createdAt: SortOrder.DESC,\n },\n })\n .mapStream(data => data.order?.history.items),\n ),\n );\n this.nextStates$ = this.entity$.pipe(\n map(order => {\n const isInCustomState = !this.defaultStates.includes(order.state);\n return isInCustomState\n ? order.nextStates\n : order.nextStates.filter(s => !this.defaultStates.includes(s));\n }),\n );\n }\n\n ngOnDestroy() {\n this.destroy();\n }\n\n openStateDiagram() {\n this.entity$\n .pipe(\n take(1),\n switchMap(order =>\n this.modalService.fromComponent(OrderProcessGraphDialogComponent, {\n closable: true,\n locals: {\n activeState: order.state,\n },\n }),\n ),\n )\n .subscribe();\n }\n\n setOrderCustomer() {\n this.modalService\n .fromComponent(SelectCustomerDialogComponent, {\n locals: {\n canCreateNew: false,\n includeNoteInput: true,\n title: _('order.assign-order-to-another-customer'),\n },\n })\n .pipe(\n switchMap(result => {\n function isExisting(input: any): input is { id: string } {\n return typeof input === 'object' && !!input.id;\n }\n if (isExisting(result)) {\n return this.dataService.mutate(SetOrderCustomerDocument, {\n input: {\n customerId: result.id,\n orderId: this.id,\n note: result.note,\n },\n });\n } else {\n return EMPTY;\n }\n }),\n switchMap(result => this.refetchOrder(result)),\n )\n .subscribe(result => {\n if (result) {\n this.notificationService.success(_('order.set-customer-success'));\n }\n });\n }\n\n transitionToState(state: string) {\n this.dataService.order.transitionToState(this.id, state).subscribe(({ transitionOrderToState }) => {\n switch (transitionOrderToState?.__typename) {\n case 'Order':\n this.notificationService.success(_('order.transitioned-to-state-success'), { state });\n this.fetchHistory.next();\n break;\n case 'OrderStateTransitionError':\n this.notificationService.error(transitionOrderToState.transitionError);\n }\n });\n }\n\n manuallyTransitionToState(order: OrderDetailFragment) {\n this.orderTransitionService\n .manuallyTransitionToState({\n orderId: order.id,\n nextStates: order.nextStates,\n cancellable: true,\n message: _('order.manually-transition-to-state-message'),\n retry: 0,\n })\n .subscribe();\n }\n\n transitionToModifying() {\n this.dataService.order\n .transitionToState(this.id, 'Modifying')\n .subscribe(({ transitionOrderToState }) => {\n switch (transitionOrderToState?.__typename) {\n case 'Order':\n this.router.navigate(['./modify'], { relativeTo: this.route });\n break;\n case 'OrderStateTransitionError':\n this.notificationService.error(transitionOrderToState.transitionError);\n }\n });\n }\n\n updateCustomFields() {\n this.dataService.order\n .updateOrderCustomFields({\n id: this.id,\n customFields: this.detailForm.value.customFields,\n })\n .subscribe(() => {\n this.notificationService.success(_('common.notify-update-success'), { entity: 'Order' });\n });\n }\n\n getOrderAddressLines(orderAddress?: { [key: string]: string }): string[] {\n if (!orderAddress) {\n return [];\n }\n return Object.values(orderAddress)\n .filter(val => val !== 'OrderAddress')\n .filter(line => !!line);\n }\n\n settlePayment(payment: Payment) {\n this.dataService.order.settlePayment(payment.id).subscribe(({ settlePayment }) => {\n switch (settlePayment.__typename) {\n case 'Payment':\n if (settlePayment.state === 'Settled') {\n this.notificationService.success(_('order.settle-payment-success'));\n } else {\n this.notificationService.error(_('order.settle-payment-error'));\n }\n this.dataService.order.getOrder(this.id).single$.subscribe();\n this.fetchHistory.next();\n break;\n case 'OrderStateTransitionError':\n case 'PaymentStateTransitionError':\n case 'SettlePaymentError':\n this.notificationService.error(settlePayment.message);\n }\n });\n }\n\n transitionPaymentState({ payment, state }: { payment: Payment; state: string }) {\n if (state === 'Cancelled') {\n this.dataService.order.cancelPayment(payment.id).subscribe(({ cancelPayment }) => {\n switch (cancelPayment.__typename) {\n case 'Payment':\n this.notificationService.success(_('order.transitioned-payment-to-state-success'), {\n state,\n });\n this.dataService.order.getOrder(this.id).single$.subscribe();\n this.fetchHistory.next();\n break;\n case 'PaymentStateTransitionError':\n this.notificationService.error(cancelPayment.transitionError);\n break;\n case 'CancelPaymentError':\n this.notificationService.error(cancelPayment.paymentErrorMessage);\n break;\n }\n });\n } else {\n this.dataService.order\n .transitionPaymentToState(payment.id, state)\n .subscribe(({ transitionPaymentToState }) => {\n switch (transitionPaymentToState.__typename) {\n case 'Payment':\n this.notificationService.success(\n _('order.transitioned-payment-to-state-success'),\n {\n state,\n },\n );\n this.dataService.order.getOrder(this.id).single$.subscribe();\n this.fetchHistory.next();\n break;\n case 'PaymentStateTransitionError':\n this.notificationService.error(transitionPaymentToState.message);\n break;\n }\n });\n }\n }\n\n canAddFulfillment(order: OrderDetailFragment): boolean {\n const allFulfillmentLines: FulfillmentFragment['lines'] = (order.fulfillments ?? [])\n .filter(fulfillment => fulfillment.state !== 'Cancelled')\n .reduce((all, fulfillment) => [...all, ...fulfillment.lines], [] as FulfillmentFragment['lines']);\n let allItemsFulfilled = true;\n for (const line of order.lines) {\n const totalFulfilledCount = allFulfillmentLines\n .filter(row => row.orderLineId === line.id)\n .reduce((sum, row) => sum + row.quantity, 0);\n if (totalFulfilledCount < line.quantity) {\n allItemsFulfilled = false;\n }\n }\n return (\n !allItemsFulfilled &&\n !this.hasUnsettledModifications(order) &&\n this.outstandingPaymentAmount(order) === 0 &&\n (order.nextStates.includes('Shipped') ||\n order.nextStates.includes('PartiallyShipped') ||\n order.nextStates.includes('Delivered'))\n );\n }\n\n hasUnsettledModifications(order: OrderDetailFragment): boolean {\n return 0 < order.modifications.filter(m => !m.isSettled).length;\n }\n\n getOutstandingModificationAmount(order: OrderDetailFragment): number {\n return summate(\n order.modifications.filter(m => !m.isSettled),\n 'priceChange',\n );\n }\n\n outstandingPaymentAmount(order: OrderDetailFragment): number {\n const paymentIsValid = (p: Payment): boolean =>\n p.state !== 'Cancelled' && p.state !== 'Declined' && p.state !== 'Error';\n\n let amountCovered = 0;\n for (const payment of order.payments?.filter(paymentIsValid) ?? []) {\n const refunds = payment.refunds.filter(r => r.state !== 'Failed') ?? [];\n const refundsTotal = summate(refunds as Array<Required<Refund>>, 'total');\n amountCovered += payment.amount - refundsTotal;\n }\n return order.totalWithTax - amountCovered;\n }\n\n addManualPayment(order: OrderDetailFragment) {\n const priorState = order.state;\n this.modalService\n .fromComponent(AddManualPaymentDialogComponent, {\n closable: true,\n locals: {\n outstandingAmount: this.outstandingPaymentAmount(order),\n currencyCode: order.currencyCode,\n },\n })\n .pipe(\n switchMap(result => {\n if (result) {\n return this.dataService.order.addManualPaymentToOrder({\n orderId: this.id,\n transactionId: result.transactionId,\n method: result.method,\n metadata: result.metadata || {},\n });\n } else {\n return EMPTY;\n }\n }),\n switchMap(({ addManualPaymentToOrder }) => {\n switch (addManualPaymentToOrder.__typename) {\n case 'Order':\n this.notificationService.success(_('order.add-payment-to-order-success'));\n if (priorState === 'ArrangingAdditionalPayment') {\n return this.orderTransitionService.transitionToPreModifyingState(\n order.id,\n order.nextStates,\n );\n } else {\n return of('PaymentSettled');\n }\n case 'ManualPaymentStateError':\n this.notificationService.error(addManualPaymentToOrder.message);\n return EMPTY;\n default:\n return EMPTY;\n }\n }),\n )\n .subscribe(result => {\n if (result) {\n this.refetchOrder({ result });\n }\n });\n }\n\n fulfillOrder() {\n this.entity$\n .pipe(\n take(1),\n switchMap(order =>\n this.modalService.fromComponent(FulfillOrderDialogComponent, {\n size: 'xl',\n locals: {\n order,\n },\n }),\n ),\n switchMap(input => {\n if (input) {\n return this.dataService.order.createFulfillment(input);\n } else {\n return of(undefined);\n }\n }),\n switchMap(result => this.refetchOrder(result).pipe(mapTo(result))),\n )\n .subscribe(result => {\n if (result) {\n const { addFulfillmentToOrder } = result;\n switch (addFulfillmentToOrder.__typename) {\n case 'Fulfillment':\n this.notificationService.success(_('order.create-fulfillment-success'));\n break;\n case 'EmptyOrderLineSelectionError':\n case 'InsufficientStockOnHandError':\n case 'ItemsAlreadyFulfilledError':\n case 'InvalidFulfillmentHandlerError':\n this.notificationService.error(addFulfillmentToOrder.message);\n break;\n case 'FulfillmentStateTransitionError':\n this.notificationService.error(addFulfillmentToOrder.transitionError);\n break;\n case 'CreateFulfillmentError':\n this.notificationService.error(addFulfillmentToOrder.fulfillmentHandlerError);\n break;\n case undefined:\n this.notificationService.error(JSON.stringify(addFulfillmentToOrder));\n break;\n default:\n assertNever(addFulfillmentToOrder);\n }\n }\n });\n }\n\n transitionFulfillment(id: string, state: string) {\n this.dataService.order\n .transitionFulfillmentToState(id, state)\n .pipe(switchMap(result => this.refetchOrder(result)))\n .subscribe(() => {\n this.notificationService.success(_('order.successfully-updated-fulfillment'));\n });\n }\n\n cancelOrRefund(order: OrderDetailFragment) {\n const isRefundable = this.orderHasSettledPayments(order);\n if (order.state === 'PaymentAuthorized' || order.active === true || !isRefundable) {\n this.cancelOrder(order);\n } else {\n this.refundOrder(order);\n }\n }\n\n settleRefund(refund: Payment['refunds'][number]) {\n this.modalService\n .fromComponent(SettleRefundDialogComponent, {\n size: 'md',\n locals: {\n refund,\n },\n })\n .pipe(\n switchMap(transactionId => {\n if (transactionId) {\n return this.dataService.order.settleRefund(\n {\n transactionId,\n id: refund.id,\n },\n this.id,\n );\n } else {\n return of(undefined);\n }\n }),\n // switchMap(result => this.refetchOrder(result)),\n )\n .subscribe(result => {\n if (result) {\n this.notificationService.success(_('order.settle-refund-success'));\n }\n });\n }\n\n addNote(event: { note: string; isPublic: boolean }) {\n const { note, isPublic } = event;\n this.dataService.order\n .addNoteToOrder({\n id: this.id,\n note,\n isPublic,\n })\n .pipe(switchMap(result => this.refetchOrder(result)))\n .subscribe(result => {\n this.notificationService.success(_('common.notify-create-success'), {\n entity: 'Note',\n });\n });\n }\n\n updateNote(entry: TimelineHistoryEntry) {\n this.modalService\n .fromComponent(EditNoteDialogComponent, {\n closable: true,\n locals: {\n displayPrivacyControls: true,\n note: entry.data.note,\n noteIsPrivate: !entry.isPublic,\n },\n })\n .pipe(\n switchMap(result => {\n if (result) {\n return this.dataService.order.updateOrderNote({\n noteId: entry.id,\n isPublic: !result.isPrivate,\n note: result.note,\n });\n } else {\n return EMPTY;\n }\n }),\n )\n .subscribe(result => {\n this.fetchHistory.next();\n this.notificationService.success(_('common.notify-update-success'), {\n entity: 'Note',\n });\n });\n }\n\n deleteNote(entry: TimelineHistoryEntry) {\n return this.modalService\n .dialog({\n title: _('common.confirm-delete-note'),\n body: entry.data.note,\n buttons: [\n { type: 'secondary', label: _('common.cancel') },\n { type: 'danger', label: _('common.delete'), returnValue: true },\n ],\n })\n .pipe(switchMap(res => (res ? this.dataService.order.deleteOrderNote(entry.id) : EMPTY)))\n .subscribe(() => {\n this.fetchHistory.next();\n this.notificationService.success(_('common.notify-delete-success'), {\n entity: 'Note',\n });\n });\n }\n\n orderHasSettledPayments(order: OrderDetailFragment): boolean {\n return !!order.payments?.find(p => p.state === 'Settled');\n }\n\n private cancelOrder(order: OrderDetailFragment) {\n this.modalService\n .fromComponent(CancelOrderDialogComponent, {\n size: 'xl',\n locals: {\n order,\n },\n })\n .pipe(\n switchMap(input => {\n if (input) {\n return this.dataService.order.cancelOrder(input);\n } else {\n return of(undefined);\n }\n }),\n switchMap(result => this.refetchOrder(result)),\n )\n .subscribe(result => {\n if (result) {\n this.notificationService.success(_('order.cancelled-order-success'));\n }\n });\n }\n\n private refundOrder(order: OrderDetailFragment) {\n this.modalService\n .fromComponent(RefundOrderDialogComponent, {\n size: 'xl',\n locals: {\n order,\n },\n })\n .pipe(\n switchMap(input => {\n if (!input) {\n return of(undefined);\n }\n\n if (input.cancel.lines?.length) {\n return this.dataService.order.cancelOrder(input.cancel).pipe(\n map(res => {\n const result = res.cancelOrder;\n switch (result.__typename) {\n case 'Order':\n this.refetchOrder(result).subscribe();\n this.notificationService.success(\n _('order.cancelled-order-items-success'),\n {\n count: summate(input.cancel.lines, 'quantity'),\n },\n );\n return input;\n case 'CancelActiveOrderError':\n case 'QuantityTooGreatError':\n case 'MultipleOrderError':\n case 'OrderStateTransitionError':\n case 'EmptyOrderLineSelectionError':\n this.notificationService.error(result.message);\n return undefined;\n }\n }),\n );\n } else {\n return [input];\n }\n }),\n switchMap(input => {\n if (!input) {\n return of(undefined);\n }\n if (input.refunds.length) {\n return forkJoin(\n input.refunds.map(refund =>\n this.dataService.order.refundOrder(refund).pipe(map(res => res.refundOrder)),\n ),\n );\n } else {\n return [undefined];\n }\n }),\n )\n .subscribe(results => {\n for (const result of results ?? []) {\n if (result) {\n switch (result.__typename) {\n case 'Refund':\n if (result.state === 'Failed') {\n this.notificationService.error(_('order.refund-order-failed'));\n } else {\n this.notificationService.success(_('order.refund-order-success'));\n }\n break;\n case 'AlreadyRefundedError':\n case 'NothingToRefundError':\n case 'PaymentOrderMismatchError':\n case 'RefundOrderStateError':\n case 'RefundStateTransitionError':\n this.notificationService.error(result.message);\n break;\n }\n }\n }\n this.refetchOrder(results?.[0]).subscribe();\n });\n }\n\n private refetchOrder(result: object | undefined): Observable<GetOrderQuery | undefined> {\n this.fetchHistory.next();\n if (result) {\n return this.dataService.order.getOrder(this.id).single$;\n } else {\n return of(undefined);\n }\n }\n\n protected setFormValues(entity: OrderDetailFragment): void {\n if (this.customFields.length) {\n this.setCustomFieldFormValues(this.customFields, this.detailForm.get(['customFields']), entity);\n }\n }\n}\n","<vdr-page-block>\n <vdr-action-bar *ngIf=\"entity$ | async as order\">\n <vdr-ab-left> </vdr-ab-left>\n\n <vdr-ab-right>\n <vdr-action-bar-items locationId=\"order-detail\"></vdr-action-bar-items>\n <button\n class=\"button primary mr-1\"\n *ngIf=\"\n order.type !== 'Aggregate' &&\n (order.state === 'ArrangingPayment' || order.state === 'ArrangingAdditionalPayment') &&\n (hasUnsettledModifications(order) || 0 < outstandingPaymentAmount(order))\n \"\n (click)=\"addManualPayment(order)\"\n >\n {{ 'order.add-payment-to-order' | translate }}\n ({{ outstandingPaymentAmount(order) | localeCurrency : order.currencyCode }})\n </button>\n <button\n class=\"button primary mr-1\"\n *ngIf=\"\n order.type !== 'Aggregate' &&\n order.active === false &&\n order.state !== 'ArrangingAdditionalPayment' &&\n order.state !== 'ArrangingPayment' &&\n 0 < outstandingPaymentAmount(order)\n \"\n (click)=\"transitionToState('ArrangingAdditionalPayment')\"\n >\n {{ 'order.arrange-additional-payment' | translate }}\n </button>\n <button\n *ngIf=\"order.type !== 'Aggregate'\"\n class=\"button primary mr-1\"\n (click)=\"fulfillOrder()\"\n [disabled]=\"!canAddFulfillment(order)\"\n >\n {{ 'order.fulfill-order' | translate }}\n </button>\n <vdr-action-bar-dropdown-menu [alwaysShow]=\"true\" locationId=\"order-detail\">\n <ng-container *ngIf=\"order.type !== 'Aggregate' && order.nextStates.includes('Modifying')\">\n <button type=\"button\" vdrDropdownItem (click)=\"transitionToModifying()\">\n <clr-icon shape=\"pencil\"></clr-icon>\n {{ 'order.modify-order' | translate }}\n </button>\n <div class=\"dropdown-divider\"></div>\n </ng-container>\n <button\n type=\"button\"\n vdrDropdownItem\n *ngIf=\"order.type !== 'Aggregate' && order.nextStates.includes('Cancelled')\"\n (click)=\"cancelOrRefund(order)\"\n >\n <clr-icon shape=\"error-standard\" class=\"is-error\"></clr-icon>\n <ng-container *ngIf=\"orderHasSettledPayments(order); else cancelOnly\">\n {{ 'order.refund-and-cancel-order' | translate }}\n </ng-container>\n <ng-template #cancelOnly>\n {{ 'order.cancel-order' | translate }}\n </ng-template>\n </button>\n\n <ng-container *ngIf=\"(nextStates$ | async)?.length\">\n <div class=\"dropdown-divider\"></div>\n <button\n *ngFor=\"let nextState of nextStates$ | async\"\n type=\"button\"\n vdrDropdownItem\n (click)=\"transitionToState(nextState)\"\n >\n <clr-icon shape=\"step-forward-2\"></clr-icon>\n {{\n 'order.transition-to-state'\n | translate : { state: (nextState | stateI18nToken | translate) }\n }}\n </button>\n </ng-container>\n <div class=\"dropdown-divider\"></div>\n <button type=\"button\" vdrDropdownItem (click)=\"manuallyTransitionToState(order)\">\n <clr-icon shape=\"step-forward-2\" class=\"is-warning\"></clr-icon>\n {{ 'order.manually-transition-to-state' | translate }}\n </button>\n </vdr-action-bar-dropdown-menu>\n </vdr-ab-right>\n </vdr-action-bar>\n</vdr-page-block>\n\n<vdr-page-detail-layout *ngIf=\"entity$ | async as order\">\n <vdr-page-detail-sidebar>\n <vdr-card [title]=\"'order.state' | translate\">\n <ng-template vdrCardControls>\n <button\n class=\"button-small\"\n (click)=\"openStateDiagram()\"\n [title]=\"'order.order-state-diagram' | translate\"\n >\n <clr-icon shape=\"list\"></clr-icon>\n </button>\n </ng-template>\n <vdr-order-state-label [state]=\"order.state\"></vdr-order-state-label>\n </vdr-card>\n <vdr-card [title]=\"'order.customer' | translate\">\n <ng-template vdrCardControls>\n <button\n *vdrIfPermissions=\"['UpdateOrder', 'ReadCustomer']\"\n class=\"button-small\"\n (click)=\"setOrderCustomer()\"\n [title]=\"'order.assign-order-to-another-customer' | translate\"\n >\n <clr-icon shape=\"switch\"></clr-icon>\n </button>\n </ng-template>\n <vdr-customer-label [customer]=\"order.customer\"></vdr-customer-label>\n <vdr-labeled-data\n class=\"mt-2\"\n [label]=\"'order.shipping-address' | translate\"\n *ngIf=\"getOrderAddressLines(order.shippingAddress).length\"\n >\n <vdr-formatted-address [address]=\"order.shippingAddress\" class=\"mt-1\"></vdr-formatted-address>\n </vdr-labeled-data>\n <vdr-labeled-data\n [label]=\"'order.billing-address' | translate\"\n *ngIf=\"getOrderAddressLines(order.billingAddress).length\"\n >\n <vdr-formatted-address [address]=\"order.billingAddress\" class=\"mt-1\"></vdr-formatted-address>\n </vdr-labeled-data>\n </vdr-card>\n <vdr-card [title]=\"'order.payments' | translate\" *ngIf=\"order.payments?.length\">\n <vdr-order-payment-card\n *ngFor=\"let payment of order.payments\"\n [currencyCode]=\"order.currencyCode\"\n [payment]=\"payment\"\n (settlePayment)=\"settlePayment($event)\"\n (transitionPaymentState)=\"transitionPaymentState($event)\"\n (settleRefund)=\"settleRefund($event)\"\n ></vdr-order-payment-card>\n </vdr-card>\n <vdr-card *ngIf=\"order.fulfillments?.length\">\n <vdr-fulfillment-card\n *ngFor=\"let fulfillment of order.fulfillments\"\n [fulfillment]=\"fulfillment\"\n [order]=\"order\"\n (transitionState)=\"transitionFulfillment(fulfillment.id, $event)\"\n ></vdr-fulfillment-card>\n </vdr-card>\n <vdr-card>\n <vdr-page-entity-info *ngIf=\"entity$ | async as entity\" [entity]=\"entity\" />\n </vdr-card>\n </vdr-page-detail-sidebar>\n\n <vdr-page-block>\n <vdr-seller-orders-card\n class=\"mb-2\"\n *ngIf=\"order.sellerOrders.length\"\n [orderId]=\"order.id\"\n ></vdr-seller-orders-card>\n <vdr-card [paddingX]=\"false\">\n <vdr-order-table\n [order]=\"order\"\n [orderLineCustomFields]=\"orderLineCustomFields\"\n ></vdr-order-table>\n </vdr-card>\n <vdr-card [title]=\"'order.tax-summary' | translate\" [paddingX]=\"false\">\n <table class=\"table\">\n <thead>\n <tr>\n <th>{{ 'common.description' | translate }}</th>\n <th>{{ 'order.tax-rate' | translate }}</th>\n <th>{{ 'order.tax-base' | translate }}</th>\n <th>{{ 'order.tax-total' | translate }}</th>\n </tr>\n </thead>\n <tbody>\n <tr *ngFor=\"let row of order.taxSummary\">\n <td>{{ row.description }}</td>\n <td>{{ row.taxRate / 100 | percent : '0.0-3' }}</td>\n <td>{{ row.taxBase | localeCurrency : order.currencyCode }}</td>\n <td>{{ row.taxTotal | localeCurrency : order.currencyCode }}</td>\n </tr>\n </tbody>\n </table>\n </vdr-card>\n <vdr-card [title]=\"'common.custom-fields' | translate\" *ngIf=\"customFields.length\">\n <vdr-tabbed-custom-fields\n entityName=\"Order\"\n [customFields]=\"customFields\"\n [customFieldsFormGroup]=\"detailForm.get('customFields')\"\n [readonly]=\"!('UpdateOrder' | hasPermission)\"\n />\n <button\n class=\"button primary\"\n (click)=\"updateCustomFields()\"\n [disabled]=\"\n detailForm.get('customFields')?.pristine || detailForm.get('customFields')?.invalid\n \"\n >\n {{ 'common.update' | translate }}\n </button>\n </vdr-card>\n <vdr-custom-detail-component-host\n locationId=\"order-detail\"\n [entity$]=\"entity$\"\n [detailForm]=\"detailForm\"\n ></vdr-custom-detail-component-host>\n\n <vdr-card [title]=\"'order.order-history' | translate\">\n <vdr-order-history\n [order]=\"order\"\n [history]=\"history$ | async\"\n (addNote)=\"addNote($event)\"\n (updateNote)=\"updateNote($event)\"\n (deleteNote)=\"deleteNote($event)\"\n ></vdr-order-history>\n </vdr-card>\n </vdr-page-block>\n</vdr-page-detail-layout>\n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\nimport { FormControl, FormGroup } from '@angular/forms';\nimport { notNullOrUndefined } from '@vendure/common/lib/shared-utils';\nimport type { OrderEditorComponent } from '../order-editor/order-editor.component';\nimport { AddedLine, ModifyOrderData, OrderSnapshot } from '../../common/modify-order-types';\n\n@Component({\n selector: 'vdr-order-modification-summary',\n templateUrl: './order-modification-summary.component.html',\n styleUrls: ['./order-modification-summary.component.css'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: false,\n})\nexport class OrderModificationSummaryComponent {\n @Input() orderSnapshot: OrderSnapshot;\n @Input() modifyOrderInput: ModifyOrderData;\n @Input() addedLines: AddedLine[];\n @Input() shippingAddressForm: OrderEditorComponent['shippingAddressForm'];\n @Input() billingAddressForm: OrderEditorComponent['billingAddressForm'];\n @Input() updatedShippingMethods: OrderEditorComponent['updatedShippingMethods'];\n @Input() couponCodesControl: FormControl<string[] | null>;\n\n get adjustedLines(): string[] {\n return (this.modifyOrderInput.adjustOrderLines || [])\n .map(l => {\n const line = this.orderSnapshot.lines.find(line => line.id === l.orderLineId);\n if (line) {\n const delta = l.quantity - line.quantity;\n const sign = delta === 0 ? '' : delta > 0 ? '+' : '-';\n return delta\n ? `${sign}${Math.abs(delta)} ${line.productVariant.name}`\n : line.productVariant.name;\n }\n })\n .filter(notNullOrUndefined);\n }\n\n getModifiedFields(formGroup: FormGroup): string {\n if (!formGroup.dirty) {\n return '';\n }\n return Object.entries(formGroup.controls)\n .map(([key, control]) => {\n if (control.dirty) {\n return key;\n }\n })\n .filter(notNullOrUndefined)\n .join(', ');\n }\n\n getUpdatedShippingMethodLines() {\n return Object.entries(this.updatedShippingMethods || {})\n .map(([lineId, shippingMethod]) => {\n const previousMethod = this.orderSnapshot.shippingLines.find(l => l.id === lineId);\n if (!previousMethod) {\n return;\n }\n const previousName = previousMethod.shippingMethod.name || previousMethod.shippingMethod.code;\n const newName = shippingMethod.name || shippingMethod.code;\n return `${previousName} -> ${newName}`;\n })\n .filter(notNullOrUndefined);\n }\n\n get couponCodeChanges(): string[] {\n const originalCodes = this.orderSnapshot.couponCodes || [];\n const newCodes = this.couponCodesControl.value || [];\n const addedCodes = newCodes.filter(c => !originalCodes.includes(c)).map(c => `+ ${c}`);\n const removedCodes = originalCodes.filter(c => !newCodes.includes(c)).map(c => `- ${c}`);\n return [...addedCodes, ...removedCodes];\n }\n}\n","<vdr-labeled-data\n *ngIf=\"modifyOrderInput.adjustOrderLines?.length\"\n [label]=\"\n 'order.modification-adjusting-lines'\n | translate : { count: modifyOrderInput.adjustOrderLines?.length }\n \"\n>\n <div *ngFor=\"let line of adjustedLines\" class=\"mb-1\">\n {{ line }}\n </div>\n</vdr-labeled-data>\n<vdr-labeled-data\n *ngIf=\"modifyOrderInput.addItems?.length\"\n [label]=\"\n 'order.modification-adding-items'\n | translate : { count: modifyOrderInput.addItems?.length }\n \"\n>\n <div *ngFor=\"let item of addedLines\">\n {{ item.productVariant.name }} x {{ item.quantity }}\n </div>\n</vdr-labeled-data>\n<vdr-labeled-data\n *ngIf=\"modifyOrderInput.surcharges?.length\"\n [label]=\"\n 'order.modification-adding-surcharges'\n | translate : { count: modifyOrderInput.surcharges?.length }\n \"\n>\n <div *ngFor=\"let surcharge of modifyOrderInput.surcharges\" class=\"mb-1\">\n {{ surcharge.description }}: {{ surcharge.price | localeCurrency : orderSnapshot.currencyCode }}\n </div>\n</vdr-labeled-data>\n<vdr-labeled-data\n *ngIf=\"getModifiedFields(shippingAddressForm) as updatedShippingFields\"\n [label]=\"'order.modification-updating-shipping-address' | translate\"\n>\n {{ updatedShippingFields }}\n</vdr-labeled-data>\n<vdr-labeled-data\n *ngIf=\"getModifiedFields(billingAddressForm) as updatedBillingFields\"\n [label]=\"'order.modification-updating-billing-address' | translate\"\n>\n {{ updatedBillingFields }}\n</vdr-labeled-data>\n<vdr-labeled-data *ngIf=\"couponCodeChanges.length\" [label]=\"'order.set-coupon-codes' | translate\">\n <div *ngFor=\"let change of couponCodeChanges\" class=\"mb-1\">{{ change }}</div>\n</vdr-labeled-data>\n<ng-container *ngIf=\"getUpdatedShippingMethodLines() as updatedShippingMethods\">\n <vdr-labeled-data *ngIf=\"updatedShippingMethods.length\" [label]=\"'order.shipping-method' | translate\">\n <div *ngFor=\"let change of updatedShippingMethods\" class=\"mb-1\">{{ change }}</div>\n </vdr-labeled-data>\n</ng-container>","import { ChangeDetectionStrategy, Component, OnInit } from '@angular/core';\nimport { FormControl, Validators } from '@angular/forms';\nimport {\n AdministratorRefundInput,\n CustomFieldConfig,\n Dialog,\n ModifyOrderInput,\n OrderDetailFragment,\n} from '@vendure/admin-ui/core';\nimport { getRefundablePayments, RefundablePayment } from '../../common/get-refundable-payments';\nimport { AddedLine, OrderSnapshot } from '../../common/modify-order-types';\nimport { OrderEditorComponent } from '../order-editor/order-editor.component';\n\nexport enum OrderEditResultType {\n Refund,\n Payment,\n PriceUnchanged,\n Cancel,\n}\n\ninterface OrderEditsRefundResult {\n result: OrderEditResultType.Refund;\n refunds: AdministratorRefundInput[];\n}\ninterface OrderEditsPaymentResult {\n result: OrderEditResultType.Payment;\n}\ninterface OrderEditsPriceUnchangedResult {\n result: OrderEditResultType.PriceUnchanged;\n}\ninterface OrderEditsCancelResult {\n result: OrderEditResultType.Cancel;\n}\ntype OrderEditResult =\n | OrderEditsRefundResult\n | OrderEditsPaymentResult\n | OrderEditsPriceUnchangedResult\n | OrderEditsCancelResult;\n\n@Component({\n selector: 'vdr-order-edits-preview-dialog',\n templateUrl: './order-edits-preview-dialog.component.html',\n styleUrls: ['./order-edits-preview-dialog.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: false,\n})\nexport class OrderEditsPreviewDialogComponent implements OnInit, Dialog<OrderEditResult> {\n // Passed in via the modalService\n orderLineCustomFields: CustomFieldConfig[];\n order: OrderDetailFragment;\n orderSnapshot: OrderSnapshot;\n modifyOrderInput: ModifyOrderInput;\n addedLines: AddedLine[];\n shippingAddressForm: OrderEditorComponent['shippingAddressForm'];\n billingAddressForm: OrderEditorComponent['billingAddressForm'];\n updatedShippingMethods: OrderEditorComponent['updatedShippingMethods'];\n couponCodesControl: FormControl<string[] | null>;\n\n refundablePayments: RefundablePayment[];\n refundNote: string;\n resolveWith: (result?: OrderEditResult) => void;\n\n get priceDifference(): number {\n return this.order.totalWithTax - this.orderSnapshot.totalWithTax;\n }\n\n get amountToRefundTotal(): number {\n return this.refundablePayments.reduce(\n (total, payment) => total + payment.amountToRefundControl.value,\n 0,\n );\n }\n\n ngOnInit() {\n this.refundNote = this.modifyOrderInput.note || '';\n this.refundablePayments = getRefundablePayments(this.order.payments || []);\n this.refundablePayments.forEach(rp => {\n rp.amountToRefundControl.addValidators(Validators.max(this.priceDifference * -1));\n });\n if (this.priceDifference < 0 && this.refundablePayments.length) {\n this.onPaymentSelected(this.refundablePayments[0], true);\n }\n }\n\n onPaymentSelected(payment: RefundablePayment, selected: boolean) {\n if (selected) {\n const outstandingRefundAmount =\n this.priceDifference * -1 -\n this.refundablePayments\n .filter(p => p.id !== payment.id)\n .reduce((total, p) => total + p.amountToRefundControl.value, 0);\n if (0 < outstandingRefundAmount) {\n payment.amountToRefundControl.setValue(\n Math.min(outstandingRefundAmount, payment.refundableAmount),\n );\n }\n } else {\n payment.amountToRefundControl.setValue(0);\n }\n }\n\n refundsCoverDifference(): boolean {\n return this.priceDifference * -1 === this.amountToRefundTotal;\n }\n\n cancel() {\n this.resolveWith({\n result: OrderEditResultType.Cancel,\n });\n }\n\n submit() {\n if (0 < this.priceDifference) {\n this.resolveWith({\n result: OrderEditResultType.Payment,\n });\n } else if (this.priceDifference < 0) {\n this.resolveWith({\n result: OrderEditResultType.Refund,\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n refunds: this.refundablePayments\n .filter(rp => rp.selected && 0 < rp.amountToRefundControl.value)\n .map(payment => {\n return {\n reason: this.refundNote || this.modifyOrderInput.note,\n paymentId: payment.id,\n amount: payment.amountToRefundControl.value,\n };\n }),\n });\n } else {\n this.resolveWith({\n result: OrderEditResultType.PriceUnchanged,\n });\n }\n }\n}\n","<ng-template vdrDialogTitle>{{ 'order.confirm-modifications' | translate }}</ng-template>\n<vdr-order-table\n [order]=\"order\"\n [orderLineCustomFields]=\"orderLineCustomFields\"\n class=\"order-edits-preview-table\"\n></vdr-order-table>\n<div class=\"payments-wrapper mb-2\">\n <div class=\"flex-spacer\">\n <vdr-payment-for-refund-selector\n *ngIf=\"priceDifference < 0\"\n class=\"\"\n [refundablePayments]=\"refundablePayments\"\n (paymentSelected)=\"onPaymentSelected($event.payment, $event.selected)\"\n [order]=\"order\"\n ></vdr-payment-for-refund-selector>\n </div>\n <div class=\"flex-spacer\">\n <vdr-card [title]=\"'order.modify-order' | translate\">\n <vdr-order-modification-summary\n [orderSnapshot]=\"orderSnapshot\"\n [modifyOrderInput]=\"modifyOrderInput\"\n [addedLines]=\"addedLines\"\n [shippingAddressForm]=\"shippingAddressForm\"\n [billingAddressForm]=\"billingAddressForm\"\n [couponCodesControl]=\"couponCodesControl\"\n [updatedShippingMethods]=\"updatedShippingMethods\"\n ></vdr-order-modification-summary>\n <vdr-labeled-data [label]=\"'order.note' | translate\">\n {{ modifyOrderInput.note || '-' }}\n </vdr-labeled-data>\n <vdr-form-field\n [label]=\"'order.refund-cancellation-reason' | translate\"\n *ngIf=\"priceDifference < 0\"\n >\n <textarea [(ngModel)]=\"refundNote\" name=\"refundNote\" required></textarea>\n </vdr-form-field>\n </vdr-card>\n </div>\n</div>\n<ng-template vdrDialogButtons>\n <div>\n <div class=\"errors\">\n <clr-alert\n class=\"mb-1\"\n *ngIf=\"priceDifference < 0 && !refundsCoverDifference()\"\n [clrAlertType]=\"'danger'\"\n [clrAlertClosable]=\"false\"\n >\n <clr-alert-item>\n {{ 'order.refund-total-warning' | translate }}\n </clr-alert-item>\n </clr-alert>\n </div>\n <div class=\"modal-buttons\">\n <clr-alert class=\"\" [clrAlertType]=\"'primary'\" [clrAlertClosable]=\"false\">\n <clr-alert-item>\n {{ 'order.modify-order-price-difference' | translate }}\n {{ 0 < priceDifference ? '+' : ''\n }}{{ priceDifference | localeCurrency : order.currencyCode }}\n </clr-alert-item>\n </clr-alert>\n <button type=\"button\" class=\"btn\" (click)=\"cancel()\">\n {{ 'common.cancel' | translate }}\n </button>\n <button\n type=\"submit\"\n (click)=\"submit()\"\n [disabled]=\"priceDifference < 0 ? !refundsCoverDifference() : false\"\n class=\"btn btn-primary\"\n >\n {{ 'common.confirm' | translate }}\n </button>\n </div>\n </div>\n</ng-template>\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, OnDestroy, OnInit } from '@angular/core';\nimport {\n FormControl,\n FormGroup,\n UntypedFormArray,\n UntypedFormControl,\n UntypedFormGroup,\n Validators,\n} from '@angular/forms';\nimport {\n CustomFieldConfig,\n DataService,\n DraftOrderEligibleShippingMethodsQuery,\n ErrorResult,\n GetAvailableCountriesQuery,\n HistoryEntryType,\n LanguageCode,\n ModalService,\n ModifyOrderInput,\n NotificationService,\n OrderAddressFragment,\n OrderDetailFragment,\n OrderDetailQueryDocument,\n SortOrder,\n SurchargeInput,\n transformRelationCustomFieldInputs,\n TypedBaseDetailComponent,\n} from '@vendure/admin-ui/core';\nimport { assertNever, notNullOrUndefined } from '@vendure/common/lib/shared-utils';\nimport { simpleDeepClone } from '@vendure/common/lib/simple-deep-clone';\nimport { EMPTY, Observable, of } from 'rxjs';\nimport { map, mapTo, shareReplay, switchMap, take, takeUntil } from 'rxjs/operators';\nimport {\n AddedLine,\n ModifyOrderData,\n OrderSnapshot,\n ProductSelectorItem,\n} from '../../common/modify-order-types';\n\nimport { OrderTransitionService } from '../../providers/order-transition.service';\nimport {\n OrderEditResultType,\n OrderEditsPreviewDialogComponent,\n} from '../order-edits-preview-dialog/order-edits-preview-dialog.component';\nimport { SelectShippingMethodDialogComponent } from '../select-shipping-method-dialog/select-shipping-method-dialog.component';\n\n@Component({\n selector: 'vdr-order-editor',\n templateUrl: './order-editor.component.html',\n styleUrls: ['./order-editor.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: false,\n})\nexport class OrderEditorComponent\n extends TypedBaseDetailComponent<typeof OrderDetailQueryDocument, 'order'>\n implements OnInit, OnDestroy\n{\n availableCountries$: Observable<GetAvailableCountriesQuery['countries']['items']>;\n addressCustomFields: CustomFieldConfig[];\n uiLanguage$: Observable<LanguageCode>;\n detailForm = new UntypedFormGroup({});\n couponCodesControl = new FormControl<string[]>([]);\n orderLineCustomFieldsFormArray: UntypedFormArray;\n addItemCustomFieldsFormArray: UntypedFormArray;\n addItemCustomFieldsForm: UntypedFormGroup;\n addItemSelectedVariant: ProductSelectorItem | undefined;\n orderLineCustomFields: CustomFieldConfig[];\n orderSnapshot: OrderSnapshot;\n modifyOrderInput: ModifyOrderData = {\n dryRun: true,\n orderId: '',\n addItems: [],\n adjustOrderLines: [],\n surcharges: [],\n note: '',\n refunds: [],\n updateShippingAddress: {},\n updateBillingAddress: {},\n };\n surchargeForm = new FormGroup({\n description: new FormControl('', Validators.minLength(1)),\n sku: new FormControl(''),\n price: new FormControl(0),\n priceIncludesTax: new FormControl(true),\n taxRate: new FormControl(0),\n taxDescription: new FormControl(''),\n });\n shippingAddressForm = new FormGroup({\n fullName: new FormControl(''),\n company: new FormControl(''),\n streetLine1: new FormControl(''),\n streetLine2: new FormControl(''),\n city: new FormControl(''),\n province: new FormControl(''),\n postalCode: new FormControl(''),\n countryCode: new FormControl(''),\n phoneNumber: new FormControl(''),\n });\n billingAddressForm = new FormGroup({\n fullName: new FormControl(''),\n company: new FormControl(''),\n streetLine1: new FormControl(''),\n streetLine2: new FormControl(''),\n city: new FormControl(''),\n province: new FormControl(''),\n postalCode: new FormControl(''),\n countryCode: new FormControl(''),\n phoneNumber: new FormControl(''),\n });\n note = '';\n recalculateShipping = true;\n previousState: string;\n editingShippingAddress = false;\n editingBillingAddress = false;\n updatedShippingMethods: {\n [\n shippingLineId: string\n ]: DraftOrderEligibleShippingMethodsQuery['eligibleShippingMethodsForDraftOrder'][number];\n } = {};\n private addedVariants = new Map<string, ProductSelectorItem>();\n\n constructor(\n protected dataService: DataService,\n private notificationService: NotificationService,\n private modalService: ModalService,\n private orderTransitionService: OrderTransitionService,\n private changeDetectorRef: ChangeDetectorRef,\n ) {\n super();\n }\n\n ngOnInit(): void {\n this.init();\n this.addressCustomFields = this.getCustomFieldConfig('Address');\n this.modifyOrderInput.orderId = this.route.snapshot.paramMap.get('id') as string;\n this.orderLineCustomFields = this.getCustomFieldConfig('OrderLine');\n this.entity$.pipe(take(1)).subscribe(order => {\n this.orderSnapshot = this.createOrderSnapshot(order);\n if (order.couponCodes.length) {\n this.couponCodesControl.setValue(order.couponCodes);\n }\n this.surchargeForm.reset();\n for (const [name, control] of Object.entries(this.shippingAddressForm.controls)) {\n control.setValue(order.shippingAddress?.[name]);\n }\n this.addAddressCustomFieldsFormGroup(this.shippingAddressForm, order.shippingAddress);\n for (const [name, control] of Object.entries(this.billingAddressForm.controls)) {\n control.setValue(order.billingAddress?.[name]);\n }\n this.addAddressCustomFieldsFormGroup(this.billingAddressForm, order.billingAddress);\n this.orderLineCustomFieldsFormArray = new UntypedFormArray([]);\n for (const line of order.lines) {\n const formGroup = new UntypedFormGroup({});\n for (const { name } of this.orderLineCustomFields) {\n formGroup.addControl(name, new UntypedFormControl((line as any).customFields[name]));\n }\n formGroup.valueChanges.pipe(takeUntil(this.destroy$)).subscribe(value => {\n let modifyRow = this.modifyOrderInput.adjustOrderLines.find(\n l => l.orderLineId === line.id,\n );\n if (!modifyRow) {\n modifyRow = {\n orderLineId: line.id,\n quantity: line.quantity,\n };\n this.modifyOrderInput.adjustOrderLines.push(modifyRow);\n }\n if (this.orderLineCustomFields.length) {\n modifyRow.customFields = value;\n }\n });\n this.orderLineCustomFieldsFormArray.push(formGroup);\n }\n });\n\n this.addItemCustomFieldsFormArray = new UntypedFormArray([]);\n this.addItemCustomFieldsForm = new UntypedFormGroup({});\n for (const customField of this.orderLineCustomFields) {\n this.addItemCustomFieldsForm.addControl(customField.name, new UntypedFormControl());\n }\n this.availableCountries$ = this.dataService.settings\n .getAvailableCountries()\n .mapSingle(result => result.countries.items)\n .pipe(shareReplay(1));\n this.dataService.order\n .getOrderHistory(this.id, {\n take: 1,\n sort: {\n createdAt: SortOrder.DESC,\n },\n filter: { type: { eq: HistoryEntryType.ORDER_STATE_TRANSITION } },\n })\n .single$.subscribe(({ order }) => {\n this.previousState = order?.history.items[0].data.from;\n });\n this.uiLanguage$ = this.dataService.client\n .uiState()\n .stream$.pipe(map(({ uiState }) => uiState.language));\n }\n\n ngOnDestroy(): void {\n this.destroy();\n }\n\n get addedLines(): AddedLine[] {\n const getSinglePriceValue = (price: ProductSelectorItem['price']) =>\n price.__typename === 'SinglePrice' ? price.value : 0;\n return (this.modifyOrderInput.addItems || [])\n .map(row => {\n const variantInfo = this.addedVariants.get(row.productVariantId);\n if (variantInfo) {\n return {\n id: this.getIdForAddedItem(row),\n featuredAsset: variantInfo.productAsset,\n productVariant: {\n id: variantInfo.productVariantId,\n name: variantInfo.productVariantName,\n sku: variantInfo.sku,\n },\n unitPrice: getSinglePriceValue(variantInfo.price),\n unitPriceWithTax: getSinglePriceValue(variantInfo.priceWithTax),\n quantity: row.quantity,\n };\n }\n })\n .filter(notNullOrUndefined);\n }\n\n private getIdForAddedItem(row: ModifyOrderData['addItems'][number]) {\n return `added-${row.productVariantId}-${JSON.stringify(row.customFields || {})}`;\n }\n\n transitionToPriorState(order: OrderDetailFragment) {\n this.orderTransitionService\n .transitionToPreModifyingState(order.id, order.nextStates)\n .subscribe(result => {\n this.router.navigate(['..'], { relativeTo: this.route });\n });\n }\n\n hasModifications(): boolean {\n const { addItems, adjustOrderLines, surcharges } = this.modifyOrderInput;\n return (\n !!addItems?.length ||\n !!surcharges?.length ||\n !!adjustOrderLines?.length ||\n (this.shippingAddressForm.dirty && this.shippingAddressForm.valid) ||\n (this.billingAddressForm.dirty && this.billingAddressForm.valid) ||\n this.couponCodesControl.dirty ||\n Object.entries(this.updatedShippingMethods).length > 0\n );\n }\n\n isLineModified(line: OrderDetailFragment['lines'][number]): boolean {\n return !!this.modifyOrderInput.adjustOrderLines?.find(\n l => l.orderLineId === line.id && l.quantity !== line.quantity,\n );\n }\n\n getInitialLineQuantity(lineId: string): number {\n const adjustedLine = this.modifyOrderInput.adjustOrderLines?.find(l => l.orderLineId === lineId);\n if (adjustedLine) {\n return adjustedLine.quantity;\n }\n const addedLine = this.modifyOrderInput.addItems?.find(l => this.getIdForAddedItem(l) === lineId);\n if (addedLine) {\n return addedLine.quantity ?? 1;\n }\n const line = this.orderSnapshot.lines.find(l => l.id === lineId);\n return line ? line.quantity : 1;\n }\n\n updateLineQuantity(line: OrderDetailFragment['lines'][number] | AddedLine, quantity: string) {\n const { adjustOrderLines } = this.modifyOrderInput;\n if (this.isAddedLine(line)) {\n const row = this.modifyOrderInput.addItems?.find(\n l => l.productVariantId === line.productVariant.id,\n );\n if (row) {\n row.quantity = +quantity;\n }\n } else {\n let row = adjustOrderLines?.find(l => l.orderLineId === line.id);\n if (row && +quantity === line.quantity) {\n // Remove the modification if the quantity is the same as\n // the original order\n adjustOrderLines?.splice(adjustOrderLines?.indexOf(row), 1);\n }\n if (!row) {\n row = { orderLineId: line.id, quantity: +quantity };\n adjustOrderLines?.push(row);\n }\n row.quantity = +quantity;\n }\n }\n\n isAddedLine(line: OrderDetailFragment['lines'][number] | AddedLine): line is AddedLine {\n return (line as AddedLine).id.startsWith('added-');\n }\n\n updateAddedItemQuantity(item: AddedLine, quantity: string) {\n const row = this.modifyOrderInput.addItems?.find(l => l.productVariantId === item.productVariant.id);\n if (row) {\n row.quantity = +quantity;\n }\n }\n\n trackByProductVariantId(index: number, item: AddedLine) {\n return item.productVariant.id;\n }\n\n getSelectedItemPrice(result: ProductSelectorItem | undefined): number {\n switch (result?.priceWithTax.__typename) {\n case 'SinglePrice':\n return result.priceWithTax.value;\n default:\n return 0;\n }\n }\n\n addItemToOrder(result: ProductSelectorItem | undefined) {\n if (!result) {\n return;\n }\n const customFields = this.orderLineCustomFields.length\n ? this.addItemCustomFieldsForm.value\n : undefined;\n let row = this.modifyOrderInput.addItems?.find(l =>\n this.isMatchingAddItemRow(l, result, customFields),\n );\n if (!row) {\n row = { productVariantId: result.productVariantId, quantity: 1 };\n if (customFields) {\n row.customFields = customFields;\n }\n this.modifyOrderInput.addItems?.push(row);\n } else {\n row.quantity++;\n }\n if (customFields) {\n const formGroup = new UntypedFormGroup({});\n for (const [key, value] of Object.entries(customFields)) {\n formGroup.addControl(key, new UntypedFormControl(value));\n }\n this.addItemCustomFieldsFormArray.push(formGroup);\n formGroup.valueChanges.pipe(takeUntil(this.destroy$)).subscribe(value => {\n if (row) {\n row.customFields = value;\n }\n });\n }\n this.addItemCustomFieldsForm.reset({});\n this.addItemSelectedVariant = undefined;\n this.addedVariants.set(result.productVariantId, result);\n }\n\n getShippingLineDetails(shippingLine: OrderDetailFragment['shippingLines'][number]): {\n name: string;\n price: number;\n } {\n const updatedMethod = this.updatedShippingMethods[shippingLine.id];\n if (updatedMethod) {\n return {\n name: updatedMethod.name || updatedMethod.code,\n price: updatedMethod.priceWithTax,\n };\n } else {\n return {\n name: shippingLine.shippingMethod.name || shippingLine.shippingMethod.code,\n price: shippingLine.discountedPriceWithTax,\n };\n }\n }\n\n setShippingMethod(shippingLineId: string) {\n const currentShippingMethod =\n this.updatedShippingMethods[shippingLineId] ??\n this.entity?.shippingLines.find(l => l.id === shippingLineId)?.shippingMethod;\n if (!currentShippingMethod) {\n return;\n }\n this.dataService.order\n .getDraftOrderEligibleShippingMethods(this.id)\n .mapSingle(({ eligibleShippingMethodsForDraftOrder }) => eligibleShippingMethodsForDraftOrder)\n .pipe(\n switchMap(methods =>\n this.modalService\n .fromComponent(SelectShippingMethodDialogComponent, {\n locals: {\n eligibleShippingMethods: methods,\n currencyCode: this.entity?.currencyCode,\n currentSelectionId: currentShippingMethod.id,\n },\n })\n .pipe(\n map(result => {\n if (result) {\n return methods.find(method => method.id === result);\n }\n }),\n ),\n ),\n )\n .subscribe(result => {\n if (result) {\n this.updatedShippingMethods[shippingLineId] = result;\n this.changeDetectorRef.markForCheck();\n }\n });\n }\n\n private isMatchingAddItemRow(\n row: ModifyOrderData['addItems'][number],\n result: ProductSelectorItem,\n customFields: any,\n ): boolean {\n return (\n row.productVariantId === result.productVariantId &&\n JSON.stringify(row.customFields) === JSON.stringify(customFields)\n );\n }\n\n removeAddedItem(id: string) {\n this.modifyOrderInput.addItems = this.modifyOrderInput.addItems?.filter(l => {\n const itemId = this.getIdForAddedItem(l);\n return itemId !== id;\n });\n }\n\n getSurchargePrices(surcharge: SurchargeInput) {\n const priceWithTax = surcharge.priceIncludesTax\n ? surcharge.price\n : Math.round(surcharge.price * ((100 + (surcharge.taxRate || 0)) / 100));\n const price = surcharge.priceIncludesTax\n ? Math.round(surcharge.price / ((100 + (surcharge.taxRate || 0)) / 100))\n : surcharge.price;\n return {\n price,\n priceWithTax,\n };\n }\n\n addSurcharge(value: any) {\n this.modifyOrderInput.surcharges?.push(value);\n this.surchargeForm.reset({\n price: 0,\n priceIncludesTax: true,\n taxRate: 0,\n });\n }\n\n removeSurcharge(index: number) {\n this.modifyOrderInput.surcharges?.splice(index, 1);\n }\n\n previewAndModify(order: OrderDetailFragment) {\n const modifyOrderInput: ModifyOrderData = {\n ...this.modifyOrderInput,\n adjustOrderLines: this.modifyOrderInput.adjustOrderLines.map(line =>\n transformRelationCustomFieldInputs(simpleDeepClone(line), this.orderLineCustomFields),\n ),\n };\n const input: ModifyOrderInput = {\n ...modifyOrderInput,\n ...(this.billingAddressForm.dirty ? { updateBillingAddress: this.billingAddressForm.value } : {}),\n ...(this.shippingAddressForm.dirty\n ? { updateShippingAddress: this.shippingAddressForm.value }\n : {}),\n dryRun: true,\n couponCodes: this.couponCodesControl.dirty ? this.couponCodesControl.value : undefined,\n note: this.note ?? '',\n options: {\n recalculateShipping: this.recalculateShipping,\n },\n };\n if (Object.entries(this.updatedShippingMethods).length) {\n input.shippingMethodIds = order.shippingLines.map(l =>\n this.updatedShippingMethods[l.id]\n ? this.updatedShippingMethods[l.id].id\n : l.shippingMethod.id,\n );\n }\n this.dataService.order\n .modifyOrder(input)\n .pipe(\n switchMap(({ modifyOrder }) => {\n switch (modifyOrder.__typename) {\n case 'Order':\n return this.modalService.fromComponent(OrderEditsPreviewDialogComponent, {\n size: 'xl',\n closable: false,\n locals: {\n order: modifyOrder,\n orderSnapshot: this.orderSnapshot,\n orderLineCustomFields: this.orderLineCustomFields,\n modifyOrderInput: input,\n addedLines: this.addedLines,\n shippingAddressForm: this.shippingAddressForm,\n billingAddressForm: this.billingAddressForm,\n couponCodesControl: this.couponCodesControl,\n updatedShippingMethods: this.updatedShippingMethods,\n },\n });\n case 'InsufficientStockError':\n case 'NegativeQuantityError':\n case 'NoChangesSpecifiedError':\n case 'OrderLimitError':\n case 'OrderModificationStateError':\n case 'PaymentMethodMissingError':\n case 'RefundPaymentIdMissingError':\n case 'CouponCodeLimitError':\n case 'CouponCodeExpiredError':\n case 'IneligibleShippingMethodError':\n case 'CouponCodeInvalidError': {\n this.notificationService.error(modifyOrder.message);\n return of(false as const);\n }\n case null:\n case undefined:\n return of(false as const);\n default:\n assertNever(modifyOrder);\n }\n }),\n switchMap(result => {\n if (!result || result.result === OrderEditResultType.Cancel) {\n // re-fetch so that the preview values get overwritten in the cache.\n return this.dataService.order.getOrder(this.id).mapSingle(() => false);\n } else {\n // Do the modification\n const wetRunInput = {\n ...input,\n dryRun: false,\n };\n if (result.result === OrderEditResultType.Refund) {\n wetRunInput.refunds = result.refunds;\n }\n return this.dataService.order.modifyOrder(wetRunInput).pipe(\n switchMap(({ modifyOrder }) => {\n if (modifyOrder.__typename === 'Order') {\n const priceDelta =\n modifyOrder.totalWithTax - this.orderSnapshot.totalWithTax;\n const nextState =\n 0 < priceDelta ? 'ArrangingAdditionalPayment' : this.previousState;\n\n return this.dataService.order\n .transitionToState(order.id, nextState)\n .pipe(mapTo(true));\n } else {\n this.notificationService.error((modifyOrder as ErrorResult).message);\n return EMPTY;\n }\n }),\n );\n }\n }),\n )\n .subscribe(result => {\n if (result) {\n this.router.navigate(['../'], { relativeTo: this.route });\n }\n });\n }\n\n private addAddressCustomFieldsFormGroup(\n parentFormGroup: UntypedFormGroup,\n address?: OrderAddressFragment | null,\n ) {\n if (address && this.addressCustomFields.length) {\n const addressCustomFieldsFormGroup = new UntypedFormGroup({});\n for (const customFieldDef of this.addressCustomFields) {\n const name = customFieldDef.name;\n const value = (address as any).customFields?.[name];\n addressCustomFieldsFormGroup.addControl(name, new UntypedFormControl(value));\n }\n parentFormGroup.addControl('customFields', addressCustomFieldsFormGroup);\n }\n }\n\n private createOrderSnapshot(order: OrderDetailFragment): OrderSnapshot {\n return {\n totalWithTax: order.totalWithTax,\n currencyCode: order.currencyCode,\n couponCodes: order.couponCodes,\n lines: [...order.lines].map(line => ({ ...line })),\n shippingLines: [...order.shippingLines].map(line => ({ ...line })),\n };\n }\n\n protected setFormValues(entity: OrderDetailFragment, languageCode: LanguageCode): void {\n /* not used */\n }\n}\n","<vdr-page-block>\n <vdr-action-bar *ngIf=\"entity$ | async as order\">\n <vdr-ab-left>\n <div class=\"flex clr-align-items-center\"></div>\n </vdr-ab-left>\n\n <vdr-ab-right>\n <button class=\"btn btn-secondary\" (click)=\"transitionToPriorState(order)\">\n {{ 'order.cancel-modification' | translate }}\n </button>\n </vdr-ab-right>\n </vdr-action-bar>\n</vdr-page-block>\n\n<vdr-page-detail-layout *ngIf=\"entity as order\">\n <vdr-page-detail-sidebar>\n <vdr-card [title]=\"'order.modification-summary' | translate\">\n <vdr-order-modification-summary\n [orderSnapshot]=\"orderSnapshot\"\n [modifyOrderInput]=\"modifyOrderInput\"\n [addedLines]=\"addedLines\"\n [shippingAddressForm]=\"shippingAddressForm\"\n [billingAddressForm]=\"billingAddressForm\"\n [couponCodesControl]=\"couponCodesControl\"\n [updatedShippingMethods]=\"updatedShippingMethods\"\n ></vdr-order-modification-summary>\n\n <div *ngIf=\"!hasModifications()\" class=\"no-modifications\">\n {{ 'order.no-modifications-made' | translate }}\n </div>\n\n <div class=\"summary-controls\">\n <vdr-form-field [label]=\"'order.note' | translate\">\n <textarea\n [(ngModel)]=\"note\"\n name=\"note\"\n required\n [disabled]=\"!hasModifications()\"\n ></textarea>\n </vdr-form-field>\n <label class=\"flex items-center\">\n <input\n type=\"checkbox\"\n [(ngModel)]=\"recalculateShipping\"\n [disabled]=\"!hasModifications()\"\n />\n <div class=\"ml-1\">{{ 'order.modification-recalculate-shipping' | translate }}</div>\n </label>\n <button\n class=\"btn btn-primary mt-2\"\n [disabled]=\"!hasModifications()\"\n (click)=\"previewAndModify(order)\"\n >\n {{ 'order.preview-changes' | translate }}\n </button>\n </div>\n </vdr-card>\n <vdr-card [title]=\"'order.set-coupon-codes' | translate\">\n <vdr-coupon-code-selector [control]=\"couponCodesControl\"></vdr-coupon-code-selector>\n </vdr-card>\n <vdr-card [title]=\"'order.shipping-address' | translate\">\n <ng-template vdrCardControls>\n <button\n class=\"button-small\"\n [title]=\"'order.edit-shipping-address' | translate\"\n (click)=\"editingShippingAddress = !editingShippingAddress\"\n >\n <clr-icon shape=\"edit\"></clr-icon>\n </button>\n </ng-template>\n <vdr-formatted-address\n *ngIf=\"!editingShippingAddress\"\n [address]=\"shippingAddressForm.value\"\n ></vdr-formatted-address>\n <vdr-address-form\n *ngIf=\"editingShippingAddress\"\n [formGroup]=\"shippingAddressForm\"\n [availableCountries]=\"availableCountries$ | async\"\n [customFields]=\"addressCustomFields\"\n ></vdr-address-form>\n </vdr-card>\n <vdr-card [title]=\"'order.billing-address' | translate\">\n <ng-template vdrCardControls>\n <button\n class=\"button-small\"\n [title]=\"'order.edit-billing-address' | translate\"\n (click)=\"editingBillingAddress = !editingBillingAddress\"\n >\n <clr-icon shape=\"edit\"></clr-icon>\n </button>\n </ng-template>\n <vdr-formatted-address\n *ngIf=\"!editingBillingAddress\"\n [address]=\"billingAddressForm.value\"\n ></vdr-formatted-address>\n <vdr-address-form\n *ngIf=\"editingBillingAddress\"\n [formGroup]=\"billingAddressForm\"\n [availableCountries]=\"availableCountries$ | async\"\n [customFields]=\"addressCustomFields\"\n ></vdr-address-form>\n </vdr-card>\n </vdr-page-detail-sidebar>\n\n <vdr-page-block>\n <vdr-card [paddingX]=\"false\">\n <vdr-data-table-2 id=\"modify-order\" class=\"order-table\" [items]=\"order.lines.concat(addedLines)\">\n <!-- Here we define all the available columns -->\n <vdr-dt2-column id=\"id\" [heading]=\"'common.id' | translate\" [hiddenByDefault]=\"true\">\n <ng-template let-line=\"item\">\n {{ line.id }}\n </ng-template>\n </vdr-dt2-column>\n <vdr-dt2-column\n id=\"created-at\"\n [heading]=\"'common.created-at' | translate\"\n [hiddenByDefault]=\"true\"\n >\n <ng-template let-line=\"item\">\n {{ line.createdAt | localeDate : 'short' }}\n </ng-template>\n </vdr-dt2-column>\n <vdr-dt2-column\n id=\"updated-at\"\n [heading]=\"'common.updated-at' | translate\"\n [hiddenByDefault]=\"true\"\n >\n <ng-template let-line=\"item\">\n {{ line.updatedAt | localeDate : 'short' }}\n </ng-template>\n </vdr-dt2-column>\n <vdr-dt2-column [heading]=\"'common.image' | translate\" id=\"image\">\n <ng-template let-line=\"item\">\n <div class=\"image-placeholder\">\n <img\n *ngIf=\"line.featuredAsset as asset; else imagePlaceholder\"\n [src]=\"asset | assetPreview : 'tiny'\"\n />\n <ng-template #imagePlaceholder>\n <div class=\"placeholder\">\n <clr-icon shape=\"image\" size=\"48\"></clr-icon>\n </div>\n </ng-template>\n </div>\n </ng-template>\n </vdr-dt2-column>\n <vdr-dt2-column\n id=\"product-name\"\n [heading]=\"'order.product-name' | translate\"\n [optional]=\"false\"\n >\n <ng-template let-line=\"item\">\n {{ line.productVariant.name }}\n </ng-template>\n </vdr-dt2-column>\n <vdr-dt2-column id=\"product-sku\" [heading]=\"'order.product-sku' | translate\">\n <ng-template let-line=\"item\">\n {{ line.productVariant.sku }}\n </ng-template>\n </vdr-dt2-column>\n <vdr-dt2-column id=\"unit-price\" [heading]=\"'order.unit-price' | translate\">\n <ng-template let-line=\"item\">\n <div class=\"text-center\">\n <div>{{ line.unitPriceWithTax | localeCurrency : order.currencyCode }}</div>\n <div class=\"net-price\" [title]=\"'order.net-price' | translate\">\n {{ line.unitPrice | localeCurrency : order.currencyCode }}\n </div>\n </div>\n </ng-template>\n </vdr-dt2-column>\n <vdr-dt2-column id=\"quantity\" [heading]=\"'order.quantity' | translate\" [optional]=\"false\">\n <ng-template let-line=\"item\">\n <input\n type=\"number\"\n class=\"draft-qty mr-1\"\n min=\"0\"\n [value]=\"getInitialLineQuantity(line.id)\"\n (input)=\"updateLineQuantity(line, $event.target.value)\"\n />\n <button\n class=\"button-small\"\n *ngIf=\"isAddedLine(line)\"\n (click)=\"removeAddedItem(line.id)\"\n >\n <clr-icon shape=\"trash\"></clr-icon>\n </button>\n <vdr-line-refunds [line]=\"line\" [payments]=\"order.payments\"></vdr-line-refunds>\n <vdr-line-fulfillment\n [line]=\"line\"\n [allOrderFulfillments]=\"order.fulfillments\"\n [orderState]=\"order.state\"\n ></vdr-line-fulfillment>\n </ng-template>\n </vdr-dt2-column>\n <vdr-dt2-column\n *ngFor=\"let customField of orderLineCustomFields\"\n [id]=\"customField.name\"\n [heading]=\"customField | customFieldLabel : (uiLanguage$ | async)\"\n [hiddenByDefault]=\"true\"\n >\n <ng-template let-line=\"item\" let-index=\"index\">\n <vdr-custom-field-control\n [compact]=\"true\"\n [entityName]=\"'OrderLine'\"\n [customField]=\"customField\"\n [customFieldsFormGroup]=\"orderLineCustomFieldsFormArray.at(index)\"\n />\n </ng-template>\n </vdr-dt2-column>\n </vdr-data-table-2>\n </vdr-card>\n <vdr-card [title]=\"'order.add-item-to-order' | translate\">\n <vdr-product-variant-selector class=\"mb-4\" (productSelected)=\"addItemSelectedVariant = $event\">\n </vdr-product-variant-selector>\n <div class=\"flex\">\n <div>\n <div *ngIf=\"addItemSelectedVariant\" class=\"flex mb-4\">\n <img\n *ngIf=\"addItemSelectedVariant.productAsset as asset\"\n [src]=\"asset | assetPreview : 'tiny'\"\n class=\"mr-4 add-item-thumb\"\n />\n <div>\n <strong class=\"mr-4\">{{ addItemSelectedVariant.productVariantName }}</strong>\n <small>{{ addItemSelectedVariant.sku }}</small>\n <div>\n {{\n getSelectedItemPrice(addItemSelectedVariant)\n | localeCurrency : order.currencyCode\n }}\n </div>\n </div>\n </div>\n <div *ngIf=\"addItemSelectedVariant\">\n <vdr-tabbed-custom-fields\n entityName=\"Order\"\n [customFields]=\"orderLineCustomFields\"\n [customFieldsFormGroup]=\"addItemCustomFieldsForm\"\n ></vdr-tabbed-custom-fields>\n </div>\n </div>\n <div class=\"flex-spacer\"></div>\n <div>\n <button\n *ngIf=\"addItemSelectedVariant\"\n class=\"btn btn-secondary\"\n [disabled]=\"!addItemSelectedVariant || addItemCustomFieldsForm.invalid\"\n (click)=\"addItemToOrder(addItemSelectedVariant)\"\n >\n {{ 'order.add-item-to-order' | translate }}\n </button>\n </div>\n </div>\n </vdr-card>\n <vdr-card [title]=\"'order.shipping' | translate\">\n <div *ngFor=\"let shippingLine of order.shippingLines\" class=\"flex items-center\">\n <ng-container *ngIf=\"getShippingLineDetails(shippingLine) as details\">\n <div>{{ details.name }}:</div>\n <div class=\"mx-1\">\n {{ details.price | localeCurrency : order.currencyCode }}\n </div>\n <button class=\"button-small\" (click)=\"setShippingMethod(shippingLine.id)\">\n {{ 'order.set-shipping-method' | translate }}\n </button>\n </ng-container>\n </div>\n </vdr-card>\n <vdr-card [title]=\"'order.add-surcharge' | translate\">\n <form [formGroup]=\"surchargeForm\" (submit)=\"addSurcharge(surchargeForm.value)\">\n <div class=\"form-grid\">\n <vdr-form-field [label]=\"'common.description' | translate\" for=\"description\"\n ><input id=\"description\" type=\"text\" formControlName=\"description\"\n /></vdr-form-field>\n <vdr-form-field [label]=\"'order.product-sku' | translate\" for=\"sku\"\n ><input id=\"sku\" type=\"text\" formControlName=\"sku\"\n /></vdr-form-field>\n <vdr-form-field [label]=\"'common.price' | translate\" for=\"price\">\n <vdr-currency-input\n [currencyCode]=\"order.currencyCode\"\n id=\"price\"\n formControlName=\"price\"\n ></vdr-currency-input>\n </vdr-form-field>\n <vdr-form-field\n [label]=\"\n 'catalog.price-includes-tax-at'\n | translate : { rate: surchargeForm.get('taxRate')?.value ?? 0 }\n \"\n for=\"priceIncludesTax\"\n ><input\n id=\"priceIncludesTax\"\n type=\"checkbox\"\n clrCheckbox\n formControlName=\"priceIncludesTax\"\n /></vdr-form-field>\n <vdr-form-field [label]=\"'order.tax-rate' | translate\" for=\"taxRate\">\n <vdr-affixed-input suffix=\"%\"\n ><input id=\"taxRate\" type=\"number\" min=\"0\" max=\"100\" formControlName=\"taxRate\"\n /></vdr-affixed-input>\n </vdr-form-field>\n <vdr-form-field [label]=\"'order.tax-description' | translate\" for=\"taxDescription\"\n ><input id=\"taxDescription\" type=\"text\" formControlName=\"taxDescription\"\n /></vdr-form-field>\n </div>\n <button\n class=\"btn btn-secondary mt-2\"\n [disabled]=\"\n surchargeForm.invalid ||\n surchargeForm.pristine ||\n surchargeForm.get('price')?.value === 0 ||\n !surchargeForm.get('description')?.value\n \"\n >\n {{ 'order.add-surcharge' | translate }}\n </button>\n </form>\n </vdr-card>\n </vdr-page-block>\n</vdr-page-detail-layout>\n","import { ChangeDetectionStrategy, Component, OnInit } from '@angular/core';\nimport { marker as _ } from '@biesbjerg/ngx-translate-extract-marker';\nimport {\n ChannelService,\n GetOrderListDocument,\n getOrderStateTranslationToken,\n LogicalOperator,\n OrderListOptions,\n OrderType,\n ServerConfigService,\n TypedBaseListComponent,\n} from '@vendure/admin-ui/core';\nimport { Order } from '@vendure/common/lib/generated-types';\nimport { tap } from 'rxjs/operators';\n\n@Component({\n selector: 'vdr-order-list',\n templateUrl: './order-list.component.html',\n styleUrls: ['./order-list.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: false,\n})\nexport class OrderListComponent\n extends TypedBaseListComponent<typeof GetOrderListDocument, 'orders'>\n implements OnInit\n{\n dataTableListId = 'order-list';\n orderStates = this.serverConfigService.getOrderProcessStates().map(item => item.name);\n readonly OrderType = OrderType;\n readonly customFields = this.getCustomFieldConfig('Order');\n readonly filters = this.createFilterCollection()\n .addIdFilter()\n .addDateFilters()\n .addFilter({\n name: 'active',\n type: { kind: 'boolean' },\n label: _('order.filter-is-active'),\n filterField: 'active',\n })\n .addFilter({\n name: 'totalWithTax',\n type: { kind: 'number', inputType: 'currency', currencyCode: 'USD' },\n label: _('order.total'),\n filterField: 'totalWithTax',\n })\n .addFilter({\n name: 'state',\n type: {\n kind: 'select',\n options: this.orderStates.map(s => ({ value: s, label: getOrderStateTranslationToken(s) })),\n },\n label: _('order.state'),\n filterField: 'state',\n })\n .addFilter({\n name: 'type',\n type: {\n kind: 'select',\n options: [\n { value: OrderType.Regular, label: _('order.order-type-regular') },\n { value: OrderType.Aggregate, label: _('order.order-type-aggregate') },\n { value: OrderType.Seller, label: _('order.order-type-seller') },\n ],\n },\n label: _('order.order-type'),\n filterField: 'type',\n })\n .addFilter({\n name: 'orderPlacedAt',\n type: { kind: 'dateRange' },\n label: _('order.placed-at'),\n filterField: 'orderPlacedAt',\n })\n .addFilter({\n name: 'customerLastName',\n type: { kind: 'text' },\n label: _('customer.last-name'),\n filterField: 'customerLastName',\n })\n .addFilter({\n name: 'transactionId',\n type: { kind: 'text' },\n label: _('order.transaction-id'),\n filterField: 'transactionId',\n })\n .addCustomFieldFilters(this.customFields)\n .connectToRoute(this.route);\n\n readonly sorts = this.createSortCollection()\n .defaultSort('updatedAt', 'DESC')\n .addSort({ name: 'id' })\n .addSort({ name: 'createdAt' })\n .addSort({ name: 'updatedAt' })\n .addSort({ name: 'orderPlacedAt' })\n .addSort({ name: 'customerLastName' })\n .addSort({ name: 'state' })\n .addSort({ name: 'totalWithTax' })\n .addCustomFieldSorts(this.customFields)\n .connectToRoute(this.route);\n\n canCreateDraftOrder = false;\n private activeChannelIsDefaultChannel = false;\n\n constructor(\n protected serverConfigService: ServerConfigService,\n private channelService: ChannelService,\n ) {\n super();\n super.configure({\n document: GetOrderListDocument,\n getItems: result => result.orders,\n setVariables: (skip, take) => this.createQueryOptions(skip, take, this.searchTermControl.value),\n refreshListOnChanges: [this.filters.valueChanges, this.sorts.valueChanges],\n });\n\n this.canCreateDraftOrder = !!this.serverConfigService\n .getOrderProcessStates()\n .find(state => state.name === 'Created')\n ?.to.includes('Draft');\n }\n\n ngOnInit() {\n super.ngOnInit();\n const isDefaultChannel$ = this.channelService.defaultChannelIsActive$.pipe(\n tap(isDefault => (this.activeChannelIsDefaultChannel = isDefault)),\n );\n super.refreshListOnChanges(this.filters.valueChanges, this.sorts.valueChanges, isDefaultChannel$);\n }\n\n private createQueryOptions(\n // eslint-disable-next-line @typescript-eslint/no-shadow\n skip: number,\n take: number,\n searchTerm: string | null,\n ): { options: OrderListOptions } {\n let filterInput = this.filters.createFilterInput();\n if (this.activeChannelIsDefaultChannel) {\n filterInput = {\n ...(filterInput ?? {}),\n };\n }\n if (searchTerm) {\n filterInput = {\n code: {\n contains: searchTerm,\n },\n customerLastName: {\n contains: searchTerm,\n },\n transactionId: {\n contains: searchTerm,\n },\n };\n }\n return {\n options: {\n skip,\n take,\n filter: {\n ...(filterInput ?? {}),\n },\n filterOperator: searchTerm ? LogicalOperator.OR : LogicalOperator.AND,\n sort: this.sorts.createSortInput(),\n },\n };\n }\n\n getShippingNames(order: Order) {\n if (order.shippingLines.length) {\n return order.shippingLines.map(shippingLine => shippingLine.shippingMethod.name).join(', ');\n } else {\n return '';\n }\n }\n}\n","<vdr-page-block>\n <vdr-action-bar>\n <vdr-ab-right>\n <vdr-action-bar-items locationId=\"order-list\" />\n <ng-container *ngIf=\"canCreateDraftOrder\">\n <a class=\"btn\" *vdrIfPermissions=\"['CreateOrder']\" [routerLink]=\"['./draft/create']\">\n <clr-icon shape=\"plus\"></clr-icon>\n {{ 'catalog.create-draft-order' | translate }}\n </a>\n </ng-container>\n <vdr-action-bar-dropdown-menu locationId=\"order-list\" />\n </vdr-ab-right>\n </vdr-action-bar>\n</vdr-page-block>\n<vdr-data-table-2\n class=\"mt-2\"\n [id]=\"dataTableListId\"\n [items]=\"items$ | async\"\n [itemsPerPage]=\"itemsPerPage$ | async\"\n [totalItems]=\"totalItems$ | async\"\n [currentPage]=\"currentPage$ | async\"\n [filters]=\"filters\"\n (pageChange)=\"setPageNumber($event)\"\n (itemsPerPageChange)=\"setItemsPerPage($event)\"\n (visibleColumnsChange)=\"setVisibleColumns($event)\"\n>\n <vdr-bulk-action-menu\n locationId=\"order-list\"\n [hostComponent]=\"this\"\n [selectionManager]=\"selectionManager\"\n ></vdr-bulk-action-menu>\n <vdr-dt2-search\n [searchTermControl]=\"searchTermControl\"\n [searchTermPlaceholder]=\"'order.search-by-order-filters' | translate\"\n />\n <vdr-dt2-column [heading]=\"'common.id' | translate\" id=\"id\" [hiddenByDefault]=\"true\" [sort]=\"sorts.get('id')\">\n <ng-template let-order=\"item\">\n {{ order.id }}\n </ng-template>\n </vdr-dt2-column>\n <vdr-dt2-column [heading]=\"'common.created-at' | translate\" id=\"created-at\" [hiddenByDefault]=\"true\">\n <ng-template let-order=\"item\">\n {{ order.createdAt | localeDate : 'short' }}\n </ng-template>\n </vdr-dt2-column>\n <vdr-dt2-column [heading]=\"'common.code' | translate\" id=\"code\" [optional]=\"false\">\n <ng-template let-order=\"item\">\n <a class=\"button-ghost\" [routerLink]=\"order.state === 'Draft' ? ['./draft', order.id] : ['./', order.id]\"\n ><span>{{ order.code }}</span>\n <clr-icon shape=\"arrow right\"></clr-icon>\n </a>\n </ng-template>\n </vdr-dt2-column>\n <vdr-dt2-column [heading]=\"'order.customer' | translate\" id=\"customer\" [sort]=\"sorts.get('customerLastName')\">\n <ng-template let-order=\"item\">\n <vdr-customer-label\n [customer]=\"order.customer\"\n (click)=\"$event.stopPropagation()\"\n ></vdr-customer-label>\n </ng-template>\n </vdr-dt2-column>\n <vdr-dt2-column [heading]=\"'order.order-type' | translate\" id=\"order-type\" [hiddenByDefault]=\"true\">\n <ng-template let-order=\"item\">\n <vdr-chip *ngIf=\"order.type === OrderType.Regular\">{{ 'order.order-type-regular' | translate }}</vdr-chip>\n <vdr-chip *ngIf=\"order.type === OrderType.Aggregate\">{{ 'order.order-type-aggregate' | translate }}</vdr-chip>\n <vdr-chip *ngIf=\"order.type === OrderType.Seller\">{{ 'order.order-type-seller' | translate }}</vdr-chip>\n </ng-template>\n </vdr-dt2-column>\n <vdr-dt2-column [heading]=\"'order.state' | translate\" id=\"state\" [sort]=\"sorts.get('state')\">\n <ng-template let-order=\"item\">\n <vdr-order-state-label [state]=\"order.state\"></vdr-order-state-label>\n </ng-template>\n </vdr-dt2-column>\n <vdr-dt2-column [heading]=\"'order.total' | translate\" id=\"total\" [sort]=\"sorts.get('totalWithTax')\">\n <ng-template let-order=\"item\">\n {{ order.totalWithTax | localeCurrency : order.currencyCode }}\n </ng-template>\n </vdr-dt2-column>\n <vdr-dt2-column [heading]=\"'common.updated-at' | translate\" id=\"updated-at\">\n <ng-template let-order=\"item\">\n {{ order.updatedAt | timeAgo }}\n </ng-template>\n </vdr-dt2-column>\n <vdr-dt2-column [heading]=\"'order.placed-at' | translate\" id=\"placed-at\" [sort]=\"sorts.get('orderPlacedAt')\">\n <ng-template let-order=\"item\">\n {{ order.orderPlacedAt | localeDate : 'short' }}\n </ng-template>\n </vdr-dt2-column>\n <vdr-dt2-column [heading]=\"'order.shipping' | translate\" id=\"shipping\">\n <ng-template let-order=\"item\">\n {{ getShippingNames(order) }}\n </ng-template>\n </vdr-dt2-column>\n <vdr-dt2-custom-field-column\n *ngFor=\"let customField of customFields\"\n [customField]=\"customField\"\n [sorts]=\"sorts\"\n />\n</vdr-data-table-2>\n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\nimport { CurrencyCode, OrderDetailFragment } from '@vendure/admin-ui/core';\n\n@Component({\n selector: 'vdr-refund-detail',\n templateUrl: './refund-detail.component.html',\n styleUrls: ['./refund-detail.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: false\n})\nexport class RefundDetailComponent {\n @Input() refund: NonNullable<OrderDetailFragment['payments']>[number]['refunds'][number];\n @Input() currencyCode: CurrencyCode;\n}\n","<vdr-labeled-data [label]=\"'order.amount' | translate\">\n {{ refund.total | localeCurrency: currencyCode }}\n</vdr-labeled-data>\n<vdr-labeled-data *ngIf=\"refund.transactionId\" [label]=\"'order.transaction-id' | translate\">\n {{ refund.transactionId }}\n</vdr-labeled-data>\n<vdr-labeled-data [label]=\"'order.payment-metadata' | translate\">\n <vdr-object-tree [value]=\"refund.metadata\"></vdr-object-tree>\n</vdr-labeled-data>\n","import { ADDRESS_FRAGMENT } from '@vendure/admin-ui/core';\nimport { gql } from 'apollo-angular';\n\nexport const GET_CUSTOMER_ADDRESSES = gql`\n query GetCustomerAddresses($customerId: ID!) {\n customer(id: $customerId) {\n id\n addresses {\n ...Address\n }\n }\n }\n ${ADDRESS_FRAGMENT}\n`;\n","import { Injectable } from '@angular/core';\nimport { ActivatedRouteSnapshot, Router, RouterStateSnapshot, UrlTree } from '@angular/router';\nimport { DataService, GetOrderStateQuery, GetOrderStateQueryVariables } from '@vendure/admin-ui/core';\nimport { gql } from 'apollo-angular';\nimport { Observable } from 'rxjs';\nimport { map } from 'rxjs/operators';\n\nexport const GET_ORDER_STATE = gql`\n query GetOrderState($id: ID!) {\n order(id: $id) {\n id\n state\n }\n }\n`;\n\n@Injectable({\n providedIn: 'root',\n})\nexport class OrderGuard {\n constructor(private dataService: DataService, private router: Router) {}\n\n canActivate(\n route: ActivatedRouteSnapshot,\n state: RouterStateSnapshot,\n ): Observable<boolean | UrlTree> | Promise<boolean | UrlTree> | boolean | UrlTree {\n const isDraft = state.url.includes('orders/draft');\n const isModifying = state.url.includes('/modify');\n const id = route.paramMap.get('id');\n if (isDraft) {\n if (id === 'create') {\n return this.dataService.order\n .createDraftOrder()\n .pipe(\n map(({ createDraftOrder }) =>\n this.router.parseUrl(`/orders/draft/${createDraftOrder.id}`),\n ),\n );\n } else {\n return true;\n }\n } else {\n return (\n this.dataService\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n .query<GetOrderStateQuery, GetOrderStateQueryVariables>(GET_ORDER_STATE, { id: id! })\n .single$.pipe(\n map(({ order }) => {\n if (order?.state === 'Modifying' && !isModifying) {\n return this.router.parseUrl(`/orders/${id}/modify`);\n } else {\n return true;\n }\n }),\n )\n );\n }\n }\n}\n","import { Route } from '@angular/router';\nimport { marker as _ } from '@biesbjerg/ngx-translate-extract-marker';\nimport { PageComponent, PageService } from '@vendure/admin-ui/core';\nimport { OrderGuard } from './providers/routing/order.guard';\n\nexport const createRoutes = (pageService: PageService): Route[] => [\n {\n path: '',\n component: PageComponent,\n data: {\n locationId: 'order-list',\n breadcrumb: _('breadcrumb.orders'),\n },\n children: pageService.getPageTabRoutes('order-list'),\n },\n {\n path: 'draft/:id',\n component: PageComponent,\n canActivate: [OrderGuard],\n data: {\n locationId: 'draft-order-detail',\n breadcrumb: { label: _('breadcrumb.orders'), link: ['../'] },\n },\n children: pageService.getPageTabRoutes('draft-order-detail'),\n },\n {\n path: ':id',\n component: PageComponent,\n canActivate: [OrderGuard],\n data: {\n locationId: 'order-detail',\n breadcrumb: { label: _('breadcrumb.orders'), link: ['../'] },\n },\n children: pageService.getPageTabRoutes('order-detail'),\n },\n {\n path: ':aggregateOrderId/seller-orders/:id',\n component: PageComponent,\n canActivate: [OrderGuard],\n data: {\n locationId: 'order-detail',\n breadcrumb: { label: _('breadcrumb.orders'), link: ['../'] },\n },\n children: pageService.getPageTabRoutes('order-detail'),\n },\n {\n path: ':id/modify',\n component: PageComponent,\n canActivate: [OrderGuard],\n data: {\n locationId: 'modify-order',\n breadcrumb: { label: _('breadcrumb.orders'), link: ['../'] },\n },\n children: pageService.getPageTabRoutes('modify-order'),\n },\n];\n","import { NgModule } from '@angular/core';\nimport { RouterModule, ROUTES } from '@angular/router';\nimport { marker as _ } from '@biesbjerg/ngx-translate-extract-marker';\nimport {\n detailComponentWithResolver,\n OrderDetailQueryDocument,\n OrderType,\n PageService,\n SharedModule,\n} from '@vendure/admin-ui/core';\n\nimport { AddManualPaymentDialogComponent } from './components/add-manual-payment-dialog/add-manual-payment-dialog.component';\nimport { CancelOrderDialogComponent } from './components/cancel-order-dialog/cancel-order-dialog.component';\nimport { CouponCodeSelectorComponent } from './components/coupon-code-selector/coupon-code-selector.component';\nimport { DraftOrderDetailComponent } from './components/draft-order-detail/draft-order-detail.component';\nimport { DraftOrderVariantSelectorComponent } from './components/draft-order-variant-selector/draft-order-variant-selector.component';\nimport { FulfillOrderDialogComponent } from './components/fulfill-order-dialog/fulfill-order-dialog.component';\nimport { FulfillmentCardComponent } from './components/fulfillment-card/fulfillment-card.component';\nimport { FulfillmentDetailComponent } from './components/fulfillment-detail/fulfillment-detail.component';\nimport { FulfillmentStateLabelComponent } from './components/fulfillment-state-label/fulfillment-state-label.component';\nimport { LineFulfillmentComponent } from './components/line-fulfillment/line-fulfillment.component';\nimport { LineRefundsComponent } from './components/line-refunds/line-refunds.component';\nimport { ModificationDetailComponent } from './components/modification-detail/modification-detail.component';\nimport { OrderCustomFieldsCardComponent } from './components/order-custom-fields-card/order-custom-fields-card.component';\nimport { OrderTotalColumnComponent } from './components/order-data-table/order-total-column.component';\nimport { OrderDetailComponent } from './components/order-detail/order-detail.component';\nimport { OrderEditorComponent } from './components/order-editor/order-editor.component';\nimport { OrderEditsPreviewDialogComponent } from './components/order-edits-preview-dialog/order-edits-preview-dialog.component';\nimport { OrderHistoryEntryHostComponent } from './components/order-history/order-history-entry-host.component';\nimport { OrderHistoryComponent } from './components/order-history/order-history.component';\nimport { OrderListComponent } from './components/order-list/order-list.component';\nimport { OrderPaymentCardComponent } from './components/order-payment-card/order-payment-card.component';\nimport { OrderProcessGraphDialogComponent } from './components/order-process-graph-dialog/order-process-graph-dialog.component';\nimport { OrderProcessEdgeComponent } from './components/order-process-graph/order-process-edge.component';\nimport { OrderProcessGraphComponent } from './components/order-process-graph/order-process-graph.component';\nimport { OrderProcessNodeComponent } from './components/order-process-graph/order-process-node.component';\nimport { OrderStateSelectDialogComponent } from './components/order-state-select-dialog/order-state-select-dialog.component';\nimport { OrderTableComponent } from './components/order-table/order-table.component';\nimport { PaymentDetailComponent } from './components/payment-detail/payment-detail.component';\nimport { PaymentStateLabelComponent } from './components/payment-state-label/payment-state-label.component';\nimport { RefundDetailComponent } from './components/refund-detail/refund-detail.component';\nimport { RefundOrderDialogComponent } from './components/refund-order-dialog/refund-order-dialog.component';\nimport { RefundStateLabelComponent } from './components/refund-state-label/refund-state-label.component';\nimport { SelectAddressDialogComponent } from './components/select-address-dialog/select-address-dialog.component';\nimport { SelectCustomerDialogComponent } from './components/select-customer-dialog/select-customer-dialog.component';\nimport { SelectShippingMethodDialogComponent } from './components/select-shipping-method-dialog/select-shipping-method-dialog.component';\nimport { SellerOrdersCardComponent } from './components/seller-orders-card/seller-orders-card.component';\nimport { SettleRefundDialogComponent } from './components/settle-refund-dialog/settle-refund-dialog.component';\nimport { SimpleItemListComponent } from './components/simple-item-list/simple-item-list.component';\nimport { createRoutes } from './order.routes';\nimport { OrderDataTableComponent } from './components/order-data-table/order-data-table.component';\nimport { PaymentForRefundSelectorComponent } from './components/payment-for-refund-selector/payment-for-refund-selector.component';\nimport { OrderModificationSummaryComponent } from './components/order-modification-summary/order-modification-summary.component';\n\n@NgModule({\n imports: [SharedModule, RouterModule.forChild([])],\n providers: [\n {\n provide: ROUTES,\n useFactory: (pageService: PageService) => createRoutes(pageService),\n multi: true,\n deps: [PageService],\n },\n ],\n declarations: [\n OrderListComponent,\n OrderDetailComponent,\n FulfillOrderDialogComponent,\n LineFulfillmentComponent,\n RefundOrderDialogComponent,\n CancelOrderDialogComponent,\n PaymentStateLabelComponent,\n LineRefundsComponent,\n OrderPaymentCardComponent,\n RefundStateLabelComponent,\n SettleRefundDialogComponent,\n OrderHistoryComponent,\n FulfillmentDetailComponent,\n PaymentDetailComponent,\n SimpleItemListComponent,\n OrderCustomFieldsCardComponent,\n OrderProcessGraphComponent,\n OrderProcessNodeComponent,\n OrderProcessEdgeComponent,\n OrderProcessGraphDialogComponent,\n FulfillmentStateLabelComponent,\n FulfillmentCardComponent,\n OrderEditorComponent,\n OrderTableComponent,\n OrderEditsPreviewDialogComponent,\n ModificationDetailComponent,\n AddManualPaymentDialogComponent,\n OrderStateSelectDialogComponent,\n DraftOrderDetailComponent,\n DraftOrderVariantSelectorComponent,\n SelectCustomerDialogComponent,\n SelectAddressDialogComponent,\n CouponCodeSelectorComponent,\n SelectShippingMethodDialogComponent,\n OrderHistoryEntryHostComponent,\n SellerOrdersCardComponent,\n OrderDataTableComponent,\n OrderTotalColumnComponent,\n PaymentForRefundSelectorComponent,\n OrderModificationSummaryComponent,\n RefundDetailComponent,\n ],\n exports: [OrderCustomFieldsCardComponent],\n})\nexport class OrderModule {\n private static hasRegisteredTabsAndBulkActions = false;\n\n constructor(pageService: PageService) {\n if (OrderModule.hasRegisteredTabsAndBulkActions) {\n return;\n }\n pageService.registerPageTab({\n priority: 0,\n location: 'order-list',\n tab: _('order.orders'),\n route: '',\n component: OrderListComponent,\n });\n pageService.registerPageTab({\n priority: 0,\n location: 'order-detail',\n tab: _('order.order'),\n route: '',\n component: detailComponentWithResolver({\n component: OrderDetailComponent,\n query: OrderDetailQueryDocument,\n entityKey: 'order',\n getBreadcrumbs: entity =>\n entity?.type !== OrderType.Seller || !entity?.aggregateOrder\n ? [\n {\n label: `${entity?.code}`,\n link: [entity?.id],\n },\n ]\n : [\n {\n label: `${entity?.aggregateOrder?.code}`,\n link: ['/orders/', entity?.aggregateOrder?.id],\n },\n {\n label: _('breadcrumb.seller-orders'),\n link: ['/orders/', entity?.aggregateOrder?.id],\n },\n {\n label: `${entity?.code}`,\n link: [entity?.id],\n },\n ],\n }),\n });\n pageService.registerPageTab({\n priority: 0,\n location: 'draft-order-detail',\n tab: _('order.order'),\n route: '',\n component: detailComponentWithResolver({\n component: DraftOrderDetailComponent,\n query: OrderDetailQueryDocument,\n entityKey: 'order',\n getBreadcrumbs: entity => [\n {\n label: _('order.draft-order'),\n link: [entity?.id],\n },\n ],\n }),\n });\n pageService.registerPageTab({\n priority: 0,\n location: 'modify-order',\n tab: _('order.order'),\n route: '',\n component: detailComponentWithResolver({\n component: OrderEditorComponent,\n query: OrderDetailQueryDocument,\n entityKey: 'order',\n getBreadcrumbs: entity => [\n {\n label: entity?.code || 'order',\n link: ['/orders/', entity?.id],\n },\n {\n label: _('breadcrumb.modifying-order'),\n link: [entity?.id],\n },\n ],\n }),\n });\n OrderModule.hasRegisteredTabsAndBulkActions = true;\n }\n}\n","// This file was generated by the build-public-api.ts script\nexport * from './common/get-refundable-payments';\nexport * from './common/modify-order-types';\nexport * from './components/add-manual-payment-dialog/add-manual-payment-dialog.component';\nexport * from './components/cancel-order-dialog/cancel-order-dialog.component';\nexport * from './components/coupon-code-selector/coupon-code-selector.component';\nexport * from './components/draft-order-detail/draft-order-detail.component';\nexport * from './components/draft-order-variant-selector/draft-order-variant-selector.component';\nexport * from './components/fulfill-order-dialog/fulfill-order-dialog.component';\nexport * from './components/fulfillment-card/fulfillment-card.component';\nexport * from './components/fulfillment-detail/fulfillment-detail.component';\nexport * from './components/fulfillment-state-label/fulfillment-state-label.component';\nexport * from './components/line-fulfillment/line-fulfillment.component';\nexport * from './components/line-refunds/line-refunds.component';\nexport * from './components/modification-detail/modification-detail.component';\nexport * from './components/order-custom-fields-card/order-custom-fields-card.component';\nexport * from './components/order-data-table/order-data-table.component';\nexport * from './components/order-data-table/order-total-column.component';\nexport * from './components/order-detail/order-detail.component';\nexport * from './components/order-editor/order-editor.component';\nexport * from './components/order-edits-preview-dialog/order-edits-preview-dialog.component';\nexport * from './components/order-history/order-history-entry-host.component';\nexport * from './components/order-history/order-history.component';\nexport * from './components/order-list/order-list.component';\nexport * from './components/order-modification-summary/order-modification-summary.component';\nexport * from './components/order-payment-card/order-payment-card.component';\nexport * from './components/order-process-graph/constants';\nexport * from './components/order-process-graph/order-process-edge.component';\nexport * from './components/order-process-graph/order-process-graph.component';\nexport * from './components/order-process-graph/order-process-node.component';\nexport * from './components/order-process-graph/types';\nexport * from './components/order-process-graph-dialog/order-process-graph-dialog.component';\nexport * from './components/order-state-select-dialog/order-state-select-dialog.component';\nexport * from './components/order-table/order-table.component';\nexport * from './components/payment-detail/payment-detail.component';\nexport * from './components/payment-for-refund-selector/payment-for-refund-selector.component';\nexport * from './components/payment-state-label/payment-state-label.component';\nexport * from './components/refund-detail/refund-detail.component';\nexport * from './components/refund-order-dialog/refund-order-dialog.component';\nexport * from './components/refund-state-label/refund-state-label.component';\nexport * from './components/select-address-dialog/select-address-dialog.component';\nexport * from './components/select-address-dialog/select-address-dialog.graphql';\nexport * from './components/select-customer-dialog/select-customer-dialog.component';\nexport * from './components/select-shipping-method-dialog/select-shipping-method-dialog.component';\nexport * from './components/seller-orders-card/seller-orders-card.component';\nexport * from './components/seller-orders-card/seller-orders-card.graphql';\nexport * from './components/settle-refund-dialog/settle-refund-dialog.component';\nexport * from './components/simple-item-list/simple-item-list.component';\nexport * from './order.module';\nexport * from './order.routes';\nexport * from './providers/order-transition.service';\nexport * from './providers/routing/order.guard';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["i3","i4","i5","_","i2","i6","i1","i5.LineFulfillmentComponent","i6.LineRefundsComponent","i7.OrderDataTableComponent","i8.OrderTotalColumnComponent","i9","i2.OrderTransitionService","i5.OrderCustomFieldsCardComponent","i6.OrderTableComponent","i7.DraftOrderVariantSelectorComponent","i8.CouponCodeSelectorComponent","i3.SimpleItemListComponent","i4.FulfillmentDetailComponent","i5.FulfillmentStateLabelComponent","i2.OrderProcessNodeComponent","i3.OrderProcessEdgeComponent","i2.OrderProcessGraphComponent","i7.PaymentForRefundSelectorComponent","i8","i5.PaymentStateLabelComponent","i6.RefundStateLabelComponent","i7.PaymentDetailComponent","i6.FulfillmentDetailComponent","i8.SimpleItemListComponent","i9.ModificationDetailComponent","i10.OrderHistoryEntryHostComponent","i11","i6.OrderPaymentCardComponent","i7.OrderHistoryComponent","i8.FulfillmentCardComponent","i9.OrderTableComponent","i10.SellerOrdersCardComponent","i5.OrderTableComponent","i6.PaymentForRefundSelectorComponent","i7.OrderModificationSummaryComponent","i6.LineFulfillmentComponent","i7.LineRefundsComponent","i9.OrderModificationSummaryComponent","i10"],"mappings":"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"}
|