@vendure/admin-ui 1.0.2 → 1.0.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bundles/vendure-admin-ui-core.umd.js +2 -2
- package/bundles/vendure-admin-ui-core.umd.js.map +1 -1
- package/bundles/vendure-admin-ui-core.umd.min.js +1 -1
- package/bundles/vendure-admin-ui-core.umd.min.js.map +1 -1
- package/bundles/vendure-admin-ui-order.umd.js +15 -2
- package/bundles/vendure-admin-ui-order.umd.js.map +1 -1
- package/bundles/vendure-admin-ui-order.umd.min.js +1 -1
- package/bundles/vendure-admin-ui-order.umd.min.js.map +1 -1
- package/core/common/generated-types.d.ts +8 -2
- package/core/common/version.d.ts +1 -1
- package/core/vendure-admin-ui-core.metadata.json +1 -1
- package/esm2015/core/common/generated-types.js +1 -1
- package/esm2015/core/common/version.js +2 -2
- package/esm2015/core/data/definitions/order-definitions.js +11 -1
- package/esm2015/order/components/order-detail/order-detail.component.js +17 -4
- package/fesm2015/vendure-admin-ui-core.js +11 -1
- package/fesm2015/vendure-admin-ui-core.js.map +1 -1
- package/fesm2015/vendure-admin-ui-order.js +16 -3
- package/fesm2015/vendure-admin-ui-order.js.map +1 -1
- package/order/vendure-admin-ui-order.metadata.json +1 -1
- package/package.json +2 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/lib/order/src/components/add-manual-payment-dialog/add-manual-payment-dialog.component.ts","../../node_modules/tslib/tslib.es6.js","../../src/lib/order/src/components/cancel-order-dialog/cancel-order-dialog.component.ts","../../src/lib/order/src/components/fulfill-order-dialog/fulfill-order-dialog.component.ts","../../src/lib/order/src/components/fulfillment-card/fulfillment-card.component.ts","../../src/lib/order/src/components/fulfillment-detail/fulfillment-detail.component.ts","../../src/lib/order/src/components/fulfillment-state-label/fulfillment-state-label.component.ts","../../src/lib/order/src/components/line-fulfillment/line-fulfillment.component.ts","../../src/lib/order/src/components/line-refunds/line-refunds.component.ts","../../src/lib/order/src/components/modification-detail/modification-detail.component.ts","../../src/lib/order/src/components/order-custom-fields-card/order-custom-fields-card.component.ts","../../src/lib/order/src/components/order-state-select-dialog/order-state-select-dialog.component.ts","../../src/lib/order/src/providers/order-transition.service.ts","../../src/lib/order/src/components/order-process-graph-dialog/order-process-graph-dialog.component.ts","../../src/lib/order/src/components/refund-order-dialog/refund-order-dialog.component.ts","../../src/lib/order/src/components/settle-refund-dialog/settle-refund-dialog.component.ts","../../src/lib/order/src/components/order-edits-preview-dialog/order-edits-preview-dialog.component.ts","../../src/lib/order/src/components/order-detail/order-detail.component.ts","../../src/lib/order/src/components/order-editor/order-editor.component.ts","../../src/lib/order/src/components/order-history/order-history.component.ts","../../src/lib/order/src/components/order-list/order-list.component.ts","../../src/lib/order/src/components/order-payment-card/order-payment-card.component.ts","../../src/lib/order/src/components/order-process-graph/order-process-edge.component.ts","../../src/lib/order/src/components/order-process-graph/order-process-node.component.ts","../../src/lib/order/src/components/order-process-graph/constants.ts","../../src/lib/order/src/components/order-process-graph/order-process-graph.component.ts","../../src/lib/order/src/components/order-table/order-table.component.ts","../../src/lib/order/src/components/payment-detail/payment-detail.component.ts","../../src/lib/order/src/components/payment-state-label/payment-state-label.component.ts","../../src/lib/order/src/components/refund-state-label/refund-state-label.component.ts","../../src/lib/order/src/components/simple-item-list/simple-item-list.component.ts","../../src/lib/order/src/providers/routing/order-resolver.ts","../../src/lib/order/src/order.routes.ts","../../src/lib/order/src/order.module.ts"],"names":["AddManualPaymentDialogComponent","dataService","this","form","FormGroup","method","FormControl","Validators","required","transactionId","prototype","ngOnInit","paymentMethods$","settings","getPaymentMethods","mapSingle","data","paymentMethods","items","submit","formValue","value","resolveWith","cancel","Component","args","selector","template","changeDetection","ChangeDetectionStrategy","OnPush","DataService","extendStatics","d","b","Object","setPrototypeOf","__proto__","Array","p","hasOwnProperty","call","__extends","TypeError","String","__","constructor","create","__values","o","s","Symbol","iterator","m","i","length","next","done","__read","n","r","e","ar","push","error","__spread","arguments","concat","CancelOrderDialogComponent","i18nService","_this","lineQuantities","reasons","_","map","translate","defineProperty","values","reduce","sum","order","lines","result","line","assign","_a","id","select","orderId","getLineInputs","reason","active","entries","_b","orderLineId","quantity","filter","l","I18nService","FulfillOrderDialogComponent","changeDetector","fulfillmentHandlerControl","fulfillmentQuantities","getGlobalSettings","single$","subscribe","_c","globalSettings","fulfillCount","getFulfillableCount","trackInventory","max","markForCheck","shippingMethod","getShippingMethodOperations","fulfillmentHandlers","handlers","fulfillmentHandlerDef","find","h","code","shippingLines","fulfillmentHandlerCode","fulfillmentHandler","configurableDefinitionToInstance","patchValue","globalTrackInventory","productVariant","stockOnHand","effectiveTracInventory","GlobalFlag","INHERIT","TRUE","unfulfilledCount","getUnfulfilledCount","Math","min","fulfilled","item","fulfillment","canSubmit","totalCount","total","configurableOperationValueIsValid","valid","_d","handler","toConfigurableOperationInput","ChangeDetectorRef","FulfillmentCardComponent","transitionState","EventEmitter","nextSuggestedState","nextStates","namedStateOrDefault","targetState","includes","state","nextOtherStates","suggested","Input","Output","FulfillmentDetailComponent","customFields","ngOnChanges","changes","getCustomFields","fulfillments","f","fulfillmentId","itemMap","Map","fulfillmentItemIds","orderItems","_e","_f","e_2","_g","count","get","name","set","from","key","val","isArray","isObject","toString","customFieldIsObject","customField","FulfillmentStateLabelComponent","LineFulfillmentComponent","fulfilledCount","getDeliveredCount","fulfillmentStatus","getFulfillmentStatus","getFulfillments","lineQuantity","counts","undefined","all","LineRefundsComponent","getRefundedCount","refunds","payments","payment","refundId","cancelled","refund","ModificationDetailComponent","addedItems","removedItems","getModifiedLines","added","removed","getSurcharge","surcharges","getAddedItems","getRemovedItems","modification","_item","getOrderLineAndItem","itemId","OrderCustomFieldsCardComponent","formBuilder","customFieldsConfig","customFieldValues","updateClick","editable","customFieldForm","group","field","addControl","control","onUpdateClick","emit","markAsPristine","FormBuilder","OrderStateSelectDialogComponent","message","selectedState","OrderTransitionService","modalService","notificationService","transitionToPreModifyingState","getPreModifyingState","pipe","switchMap","manualTransitionOptions","cancellable","retry","transitionToStateOrThrow","catchError","err","manuallyTransitionToState","options","fromComponent","locals","closable","size","EMPTY","Error","retryWhen","errors","delay","take","getOrderHistory","type","eq","HistoryEntryType","ORDER_STATE_TRANSITION","sort","createdAt","SortOrder","DESC","history","to","transitionToState","transitionOrderToState","__typename","transitionError","Injectable","providedIn","ModalService","NotificationService","OrderProcessGraphDialogComponent","serverConfigService","states","getOrderProcessStates","ServerConfigService","RefundOrderDialogComponent","refundShipping","adjustment","lineRef","refundCount","proratedUnitPriceWithTax","shippingWithTax","settledPayments","amount","summate","lineCanBeRefundedOrCancelled","selectedPayment","handleZeroQuantity","isRefunding","isCancelling","refundTotal","settledPaymentsTotal","refundLines","getOrderLineInput","cancelLines","shipping","paymentId","filterFn","SettleRefundDialogComponent","OrderEditResultType","OrderDetailComponent","router","route","orderTransitionService","_super","detailForm","fetchHistory","Subject","defaultStates","init","entity$","navigate","relativeTo","getCustomFieldConfig","orderLineCustomFields","history$","startWith","mapStream","nextStates$","ngOnDestroy","destroy","openStateDiagram","activeState","success","transitionToModifying","updateCustomFields","customFieldsValue","updateOrderCustomFields","entity","getOrderAddressLines","orderAddress","settlePayment","getOrder","transitionPaymentState","transitionPaymentToState","canAddFulfillment","every","hasUnsettledModifications","outstandingPaymentAmount","modifications","isSettled","getOutstandingModificationAmount","amountCovered","refundsTotal","totalWithTax","addManualPayment","outstandingAmount","currencyCode","addManualPaymentToOrder","metadata","refetchOrder","fulfillOrder","input","createFulfillment","of","mapTo","addFulfillmentToOrder","transitionFulfillment","transitionFulfillmentToState","cancelOrRefund","isRefundable","orderHasSettledPayments","refundOrder","cancelOrder","settleRefund","addNote","event","note","isPublic","addNoteToOrder","updateNote","entry","EditNoteDialogComponent","displayPrivacyControls","noteIsPrivate","updateOrderNote","noteId","isPrivate","deleteNote","dialog","title","body","buttons","label","returnValue","res","deleteOrderNote","operations","merge","apply","setFormValues","BaseDetailComponent","Router","ActivatedRoute","OrderEditsPreviewDialogComponent","originalTotalWithTax","refundNote","modifyOrderInput","Cancel","priceDifference","Payment","Refund","refundPaymentId","PriceUnchanged","OrderEditorComponent","dryRun","addItems","adjustOrderLines","updateShippingAddress","updateBillingAddress","recalculateShipping","addedVariants","getSinglePriceValue","price","row","variantInfo","productVariantId","priceWithTax","notNullOrUndefined","addressCustomFields","snapshot","paramMap","takeUntil","destroy$","surchargeForm","description","sku","priceIncludesTax","taxRate","taxDescription","shippingAddressForm","fullName","shippingAddress","company","streetLine1","streetLine2","city","province","postalCode","countryCode","_h","phoneNumber","_j","billingAddressForm","_k","billingAddress","_l","_m","_o","_p","_q","_r","_s","_t","orderLineCustomFieldsFormArray","FormArray","formGroup","_v","e_3","_w","valueChanges","modifyRow","addItemCustomFieldsFormArray","addItemCustomFieldsForm","availableCountries$","getAvailableCountries","countries","shareReplay","_u","previousState","transitionToPriorState","canPreviewChanges","dirty","isLineModified","updateLineQuantity","splice","indexOf","updateAddedItemQuantity","trackByProductVariantId","index","getSelectedItemPrice","addItemToOrder","isMatchingAddItemRow","_x","reset","addItemSelectedVariant","JSON","stringify","removeAddedItem","removeAt","getSurchargePrices","surcharge","round","addSurcharge","removeSurcharge","previewAndModify","modifyOrder","assertNever","wetRunInput","nextState","languageCode","OrderHistoryComponent","expanded","getDisplayType","ORDER_FULFILLMENT_TRANSITION","ORDER_PAYMENT_TRANSITION","ORDER_CANCELLATION","ORDER_REFUND_TRANSITION","getTimelineIcon","ORDER_NOTE","ORDER_MODIFIED","isFeatured","getFulfillment","ORDER_FULFILLMENT","getPayment","getCancelledItems","cancelledItemIds","orderItemIds","getModification","getName","administrator","firstName","lastName","customer","OrderListComponent","localStorageService","searchOrderCodeControl","searchLastNameControl","orderStates","filterPresets","config","setQueryFn","skip","getOrders","refetchOnChannelChange","orders","createQueryOptions","queryParamMap","lastFilters","setQueryParam","replaceUrl","activePreset$","qpm","distinctUntilChanged","searchTerms$","debounceTime","refresh","customFilterForm","getAll","placedAtStart","placedAtEnd","selectFilterPreset","presetName","lastCustomFilters","filters","page","applyCustomFilters","customFilters","orderCodeSearchTerm","customerNameSearchTerm","activeFilterPreset","filterConfig","in","queryParams","orderPlacedAt","between","start","end","after","before","customerLastName","contains","updatedAt","getShippingNames","shippingLine","join","BaseListComponent","LocalStorageService","OrderPaymentCardComponent","refundHasMetadata","keys","OrderProcessEdgeComponent","active$","asObservable","tap","activeTarget$","getStyle","direction","startPos","getPos","endPos","dX","abs","x","dY","y","sqrt","pow","top.px","left.px","height.px","width.px","transform","transform-origin","OrderProcessNodeComponent","elementRef","BehaviorSubject","isCancellable","cancelledState","node","origin","nativeElement","getBoundingClientRect","nodeHeight","querySelector","height","pos","ElementRef","OrderProcessGraphComponent","setActiveState$","nodes","edges","initialState","activeState$","populateNodes","ngAfterViewInit","setTimeout","populateEdges","onMouseOver","stateName","onMouseOut","getNodeFor","nodeComponents","stateNodeMap","stateNode","targets","this_1","targets_1","targets_1_1","target","targetNode","nodeCmp","e_5","toCmp","ViewChildren","HostBinding","OrderTableComponent","orderLineCustomFieldsVisible","toggleOrderLineCustomFields","getLineDiscounts","discounts","a","AdjustmentType","PROMOTION","getLineCustomFields","getPromotionLink","promotion","adjustmentSource","split","getCouponCodeForAdjustment","promotionAdjustment","promotions","couponCode","PaymentStateLabelComponent","RefundStateLabelComponent","OrderResolver","BaseEntityResolver","breadcrumb","ɵ1","orderBreadcrumb","ɵ2","modifyingOrderBreadcrumb","orderRoutes","path","component","ɵ0","resolve","createResolveData","canDeactivate","CanDeactivateDetailGuard","params","detailBreadcrumb","breadcrumbKey","breadcrumbs","modifiedBreadcrumbs","slice","link","NgModule","imports","SharedModule","RouterModule","forChild","declarations","PaymentDetailComponent","SimpleItemListComponent"],"mappings":"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","sourcesContent":["import { ChangeDetectionStrategy, Component, OnInit } from '@angular/core';\nimport { FormControl, FormGroup, Validators } from '@angular/forms';\nimport {\n CurrencyCode,\n DataService,\n Dialog,\n GetPaymentMethodList,\n ManualPaymentInput,\n} from '@vendure/admin-ui/core';\nimport { Observable } from 'rxjs';\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})\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 FormGroup({\n method: new FormControl('', Validators.required),\n transactionId: new FormControl('', Validators.required),\n });\n paymentMethods$: Observable<GetPaymentMethodList.Items[]>;\n constructor(private dataService: DataService) {}\n\n ngOnInit(): void {\n this.paymentMethods$ = this.dataService.settings\n .getPaymentMethods(999)\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","/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from) {\r\n for (var i = 0, il = from.length, j = to.length; i < il; i++, j++)\r\n to[j] = from[i];\r\n return to;\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, privateMap) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to get private field on non-instance\");\r\n }\r\n return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to set private field on non-instance\");\r\n }\r\n privateMap.set(receiver, value);\r\n return value;\r\n}\r\n","import { ChangeDetectionStrategy, Component, OnInit } from '@angular/core';\r\nimport { marker as _ } from '@biesbjerg/ngx-translate-extract-marker';\r\nimport { CancelOrderInput, Dialog, I18nService, OrderDetailFragment, OrderLineInput } from '@vendure/admin-ui/core';\r\n\r\n@Component({\r\n selector: 'vdr-cancel-order-dialog',\r\n templateUrl: './cancel-order-dialog.component.html',\r\n styleUrls: ['./cancel-order-dialog.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class CancelOrderDialogComponent implements OnInit, Dialog<CancelOrderInput> {\r\n order: OrderDetailFragment;\r\n resolveWith: (result?: CancelOrderInput) => void;\r\n reason: string;\r\n lineQuantities: { [lineId: string]: number } = {};\r\n reasons: string[] = [_('order.cancel-reason-customer-request'), _('order.cancel-reason-not-available')];\r\n\r\n get selectionCount(): number {\r\n return Object.values(this.lineQuantities).reduce((sum, n) => sum + n, 0);\r\n }\r\n\r\n constructor(private i18nService: I18nService) {\r\n this.reasons = this.reasons.map(r => this.i18nService.translate(r));\r\n }\r\n\r\n ngOnInit() {\r\n this.lineQuantities = this.order.lines.reduce((result, line) => {\r\n return { ...result, [line.id]: 0 };\r\n }, {});\r\n }\r\n\r\n select() {\r\n this.resolveWith({\r\n orderId: this.order.id,\r\n lines: this.getLineInputs(),\r\n reason: this.reason,\r\n });\r\n }\r\n\r\n cancel() {\r\n this.resolveWith();\r\n }\r\n\r\n private getLineInputs(): OrderLineInput[] | undefined {\r\n if (this.order.active) {\r\n return;\r\n }\r\n return Object.entries(this.lineQuantities)\r\n .map(([orderLineId, quantity]) => ({\r\n orderLineId,\r\n quantity,\r\n }))\r\n .filter(l => 0 < l.quantity);\r\n }\r\n}\r\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, OnInit } from '@angular/core';\nimport { FormControl } from '@angular/forms';\nimport {\n configurableDefinitionToInstance,\n ConfigurableOperation,\n ConfigurableOperationDefinition,\n configurableOperationValueIsValid,\n DataService,\n Dialog,\n FulfillOrderInput,\n GlobalFlag,\n OrderDetail,\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})\nexport class FulfillOrderDialogComponent implements Dialog<FulfillOrderInput>, OnInit {\n resolveWith: (result?: FulfillOrderInput) => void;\n fulfillmentHandlerDef: ConfigurableOperationDefinition;\n fulfillmentHandler: ConfigurableOperation;\n fulfillmentHandlerControl = new FormControl();\n fulfillmentQuantities: { [lineId: string]: { fulfillCount: number; max: number } } = {};\n\n // Provided by modalService.fromComponent() call\n order: OrderDetailFragment;\n\n constructor(private dataService: DataService, private changeDetector: ChangeDetectorRef) {}\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: OrderDetail.Lines, 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: OrderDetail.Lines): number {\n const fulfilled = line.items.reduce((sum, item) => sum + (item.fulfillment ? 1 : 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 formIsValid =\n configurableOperationValueIsValid(\n this.fulfillmentHandlerDef,\n this.fulfillmentHandlerControl.value,\n ) && this.fulfillmentHandlerControl.valid;\n return formIsValid && 0 < totalCount;\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","import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from '@angular/core';\r\nimport { Fulfillment, OrderDetail } from '@vendure/admin-ui/core';\r\n\r\n@Component({\r\n selector: 'vdr-fulfillment-card',\r\n templateUrl: './fulfillment-card.component.html',\r\n styleUrls: ['./fulfillment-card.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class FulfillmentCardComponent {\r\n @Input() fulfillment: Fulfillment.Fragment | undefined;\r\n @Input() order: OrderDetail.Fragment;\r\n @Output() transitionState = new EventEmitter<string>();\r\n\r\n nextSuggestedState(): string | undefined {\r\n if (!this.fulfillment) {\r\n return;\r\n }\r\n const { nextStates } = this.fulfillment;\r\n const namedStateOrDefault = (targetState: string) =>\r\n nextStates.includes(targetState) ? targetState : nextStates[0];\r\n switch (this.fulfillment?.state) {\r\n case 'Pending':\r\n return namedStateOrDefault('Shipped');\r\n case 'Shipped':\r\n return namedStateOrDefault('Delivered');\r\n default:\r\n return nextStates.find(s => s !== 'Cancelled');\r\n }\r\n }\r\n\r\n nextOtherStates(): string[] {\r\n if (!this.fulfillment) {\r\n return [];\r\n }\r\n const suggested = this.nextSuggestedState();\r\n return this.fulfillment.nextStates.filter(s => s !== suggested);\r\n }\r\n}\r\n","import { ChangeDetectionStrategy, Component, Input, OnChanges, SimpleChanges } from '@angular/core';\r\nimport { OrderDetail } from '@vendure/admin-ui/core';\r\nimport { isObject } from '@vendure/common/lib/shared-utils';\r\n\r\n@Component({\r\n selector: 'vdr-fulfillment-detail',\r\n templateUrl: './fulfillment-detail.component.html',\r\n styleUrls: ['./fulfillment-detail.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class FulfillmentDetailComponent implements OnChanges {\r\n @Input() fulfillmentId: string;\r\n @Input() order: OrderDetail.Fragment;\r\n\r\n customFields: Array<{ key: string; value: any }> = [];\r\n\r\n ngOnChanges(changes: SimpleChanges) {\r\n this.customFields = this.getCustomFields();\r\n }\r\n\r\n get fulfillment(): OrderDetail.Fulfillments | undefined | null {\r\n return this.order.fulfillments && this.order.fulfillments.find(f => f.id === this.fulfillmentId);\r\n }\r\n\r\n get items(): Array<{ name: string; quantity: number }> {\r\n const itemMap = new Map<string, number>();\r\n const fulfillmentItemIds = this.fulfillment?.orderItems.map(i => i.id);\r\n for (const line of this.order.lines) {\r\n for (const item of line.items) {\r\n if (fulfillmentItemIds?.includes(item.id)) {\r\n const count = itemMap.get(line.productVariant.name);\r\n if (count != null) {\r\n itemMap.set(line.productVariant.name, count + 1);\r\n } else {\r\n itemMap.set(line.productVariant.name, 1);\r\n }\r\n }\r\n }\r\n }\r\n return Array.from(itemMap.entries()).map(([name, quantity]) => ({ name, quantity }));\r\n }\r\n\r\n getCustomFields(): Array<{ key: string; value: any }> {\r\n const customFields = (this.fulfillment as any).customFields;\r\n if (customFields) {\r\n return Object.entries(customFields)\r\n .filter(([key]) => key !== '__typename')\r\n .map(([key, val]) => {\r\n const value = Array.isArray(val) || isObject(val) ? val : (val as any).toString();\r\n return { key, value };\r\n });\r\n } else {\r\n return [];\r\n }\r\n }\r\n\r\n customFieldIsObject(customField: unknown) {\r\n return Array.isArray(customField) || isObject(customField);\r\n }\r\n}\r\n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'vdr-fulfillment-state-label',\r\n templateUrl: './fulfillment-state-label.component.html',\r\n styleUrls: ['./fulfillment-state-label.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class FulfillmentStateLabelComponent {\r\n @Input() state: string;\r\n\r\n get chipColorType() {\r\n switch (this.state) {\r\n case 'Pending':\r\n case 'Shipped':\r\n return 'warning';\r\n case 'Delivered':\r\n return 'success';\r\n case 'Cancelled':\r\n return 'error';\r\n }\r\n }\r\n}\r\n","import { ChangeDetectionStrategy, Component, Input, OnChanges, SimpleChanges } from '@angular/core';\r\nimport { OrderDetail } from '@vendure/admin-ui/core';\r\nimport { unique } from '@vendure/common/lib/unique';\r\n\r\nexport type FulfillmentStatus = 'full' | 'partial' | 'none';\r\n\r\n@Component({\r\n selector: 'vdr-line-fulfillment',\r\n templateUrl: './line-fulfillment.component.html',\r\n styleUrls: ['./line-fulfillment.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class LineFulfillmentComponent implements OnChanges {\r\n @Input() line: OrderDetail.Lines;\r\n @Input() orderState: string;\r\n fulfilledCount = 0;\r\n fulfillmentStatus: FulfillmentStatus;\r\n fulfillments: Array<{ count: number; fulfillment: OrderDetail.Fulfillments }> = [];\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (this.line) {\r\n this.fulfilledCount = this.getDeliveredCount(this.line);\r\n this.fulfillmentStatus = this.getFulfillmentStatus(this.fulfilledCount, this.line.items.length);\r\n this.fulfillments = this.getFulfillments(this.line);\r\n }\r\n }\r\n\r\n /**\r\n * Returns the number of items in an OrderLine which are fulfilled.\r\n */\r\n private getDeliveredCount(line: OrderDetail.Lines): number {\r\n return line.items.reduce((sum, item) => sum + (item.fulfillment ? 1 : 0), 0);\r\n }\r\n\r\n private getFulfillmentStatus(fulfilledCount: number, lineQuantity: number): FulfillmentStatus {\r\n if (fulfilledCount === lineQuantity) {\r\n return 'full';\r\n }\r\n if (0 < fulfilledCount && fulfilledCount < lineQuantity) {\r\n return 'partial';\r\n }\r\n return 'none';\r\n }\r\n\r\n private getFulfillments(\r\n line: OrderDetail.Lines,\r\n ): Array<{ count: number; fulfillment: OrderDetail.Fulfillments }> {\r\n const counts: { [fulfillmentId: string]: number } = {};\r\n\r\n for (const item of line.items) {\r\n if (item.fulfillment) {\r\n if (counts[item.fulfillment.id] === undefined) {\r\n counts[item.fulfillment.id] = 1;\r\n } else {\r\n counts[item.fulfillment.id]++;\r\n }\r\n }\r\n }\r\n const all = line.items.reduce((fulfillments, item) => {\r\n return item.fulfillment ? [...fulfillments, item.fulfillment] : fulfillments;\r\n }, [] as OrderDetail.Fulfillments[]);\r\n\r\n return Object.entries(counts).map(([id, count]) => {\r\n return {\r\n count,\r\n // tslint:disable-next-line:no-non-null-assertion\r\n fulfillment: all.find(f => f.id === id)!,\r\n };\r\n });\r\n }\r\n}\r\n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\nimport { OrderDetail } 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})\nexport class LineRefundsComponent {\n @Input() line: OrderDetail.Lines;\n @Input() payments: OrderDetail.Payments[];\n\n getRefundedCount(): number {\n const refunds =\n this.payments?.reduce(\n (all, payment) => [...all, ...payment.refunds],\n [] as OrderDetail.Refunds[],\n ) ?? [];\n return this.line.items.filter(i => {\n if (i.refundId === null && !i.cancelled) {\n return false;\n }\n if (i.refundId) {\n const refund = refunds.find(r => r.id === i.refundId);\n if (refund?.state === 'Failed') {\n return false;\n } else {\n return true;\n }\n }\n return false;\n }).length;\n }\n}\n","import { ChangeDetectionStrategy, Component, Input, OnChanges, OnInit } from '@angular/core';\nimport { OrderDetail, 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})\nexport class ModificationDetailComponent implements OnChanges {\n @Input() order: OrderDetailFragment;\n @Input() modification: OrderDetail.Modifications;\n private addedItems = new Map<OrderDetail.Lines, number>();\n private removedItems = new Map<OrderDetail.Lines, number>();\n\n ngOnChanges(): void {\n const { added, removed } = this.getModifiedLines();\n this.addedItems = added;\n this.removedItems = removed;\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 return { name: line.productVariant.name, quantity: count };\n });\n }\n\n getRemovedItems() {\n return [...this.removedItems.entries()].map(([line, count]) => {\n return { name: line.productVariant.name, quantity: count };\n });\n }\n\n private getModifiedLines() {\n const added = new Map<OrderDetail.Lines, number>();\n const removed = new Map<OrderDetail.Lines, number>();\n for (const _item of this.modification.orderItems || []) {\n const result = this.getOrderLineAndItem(_item.id);\n if (result) {\n const { line, item } = result;\n if (item.cancelled) {\n const count = removed.get(line) ?? 0;\n removed.set(line, count + 1);\n } else {\n const count = added.get(line) ?? 0;\n added.set(line, count + 1);\n }\n }\n }\n return { added, removed };\n }\n\n private getOrderLineAndItem(itemId: string) {\n for (const line of this.order.lines) {\n const item = line.items.find(i => i.id === itemId);\n if (item) {\n return { line, item };\n }\n }\n }\n}\n","import { ChangeDetectionStrategy, Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\r\nimport { FormBuilder, FormGroup } from '@angular/forms';\r\nimport { CustomFieldConfig } from '@vendure/admin-ui/core';\r\n\r\n@Component({\r\n selector: 'vdr-order-custom-fields-card',\r\n templateUrl: './order-custom-fields-card.component.html',\r\n styleUrls: ['./order-custom-fields-card.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class OrderCustomFieldsCardComponent implements OnInit {\r\n @Input() customFieldsConfig: CustomFieldConfig[] = [];\r\n @Input() customFieldValues: { [name: string]: any } = {};\r\n @Output() updateClick = new EventEmitter<any>();\r\n customFieldForm: FormGroup;\r\n editable = false;\r\n constructor(private formBuilder: FormBuilder) {}\r\n\r\n ngOnInit() {\r\n this.customFieldForm = this.formBuilder.group({});\r\n for (const field of this.customFieldsConfig) {\r\n this.customFieldForm.addControl(\r\n field.name,\r\n this.formBuilder.control(this.customFieldValues[field.name]),\r\n );\r\n }\r\n }\r\n\r\n onUpdateClick() {\r\n this.updateClick.emit(this.customFieldForm.value);\r\n this.customFieldForm.markAsPristine();\r\n this.editable = false;\r\n }\r\n}\r\n","import { ChangeDetectionStrategy, Component } from '@angular/core';\nimport { Dialog } from '@vendure/admin-ui/core';\n\n@Component({\n selector: 'vdr-order-state-select-dialog',\n templateUrl: './order-state-select-dialog.component.html',\n styleUrls: ['./order-state-select-dialog.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class OrderStateSelectDialogComponent implements Dialog<string> {\n resolveWith: (result?: string) => void;\n nextStates: string[] = [];\n message = '';\n cancellable: boolean;\n selectedState = '';\n\n select() {\n if (this.selectedState) {\n this.resolveWith(this.selectedState);\n }\n }\n\n cancel() {\n this.resolveWith();\n }\n}\n","import { Injectable } from '@angular/core';\nimport { marker as _ } from '@biesbjerg/ngx-translate-extract-marker';\nimport {\n DataService,\n HistoryEntryType,\n I18nService,\n ModalService,\n NotificationService,\n SortOrder,\n} from '@vendure/admin-ui/core';\nimport { EMPTY } from 'rxjs';\nimport { catchError, delay, map, retryWhen, switchMap, take } from 'rxjs/operators';\n\nimport { OrderStateSelectDialogComponent } from '../components/order-state-select-dialog/order-state-select-dialog.component';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class OrderTransitionService {\n constructor(\n private dataService: DataService,\n private modalService: ModalService,\n private notificationService: NotificationService,\n private i18nService: I18nService,\n ) {}\n\n /**\n * Attempts to transition the Order to the last state it was in before it was transitioned\n * to the \"Modifying\" state. If this fails, a manual prompt is used.\n */\n transitionToPreModifyingState(orderId: string, nextStates: string[]) {\n return this.getPreModifyingState(orderId).pipe(\n switchMap(state => {\n const manualTransitionOptions = {\n orderId,\n nextStates,\n message: this.i18nService.translate(\n _('order.unable-to-transition-to-state-try-another'),\n { state },\n ),\n cancellable: false,\n retry: 10,\n };\n if (state) {\n return this.transitionToStateOrThrow(orderId, state).pipe(\n catchError(err => this.manuallyTransitionToState(manualTransitionOptions)),\n );\n } else {\n return this.manuallyTransitionToState(manualTransitionOptions);\n }\n }),\n );\n }\n\n /**\n * Displays a modal for manually selecting the next state.\n */\n manuallyTransitionToState(options: {\n orderId: string;\n nextStates: string[];\n message: string;\n cancellable: boolean;\n retry: number;\n }) {\n return this.modalService\n .fromComponent(OrderStateSelectDialogComponent, {\n locals: {\n nextStates: options.nextStates,\n cancellable: options.cancellable,\n message: options.message,\n },\n closable: false,\n size: 'md',\n })\n .pipe(\n switchMap(result => {\n if (result) {\n return this.transitionToStateOrThrow(options.orderId, result);\n } else {\n if (!options.cancellable) {\n throw new Error(`An order state must be selected`);\n } else {\n return EMPTY;\n }\n }\n }),\n retryWhen(errors => errors.pipe(delay(2000), take(options.retry))),\n );\n }\n\n /**\n * Attempts to get the last state the Order was in before it was transitioned\n * to the \"Modifying\" state.\n */\n private getPreModifyingState(orderId: string) {\n return this.dataService.order\n .getOrderHistory(orderId, {\n filter: {\n type: {\n eq: HistoryEntryType.ORDER_STATE_TRANSITION,\n },\n },\n sort: {\n createdAt: SortOrder.DESC,\n },\n })\n .mapSingle(result => result.order)\n .pipe(\n map(result => {\n const item = result?.history.items.find(i => i.data.to === 'Modifying');\n if (item) {\n return item.data.from as string;\n } else {\n return;\n }\n }),\n );\n }\n\n private transitionToStateOrThrow(orderId: string, state: string) {\n return this.dataService.order.transitionToState(orderId, state).pipe(\n map(({ transitionOrderToState }) => {\n switch (transitionOrderToState?.__typename) {\n case 'Order':\n return transitionOrderToState?.state;\n case 'OrderStateTransitionError':\n this.notificationService.error(transitionOrderToState?.transitionError);\n throw new Error(transitionOrderToState?.transitionError);\n }\n }),\n );\n }\n}\n","import { ChangeDetectionStrategy, Component, OnInit } from '@angular/core';\r\nimport {\r\n CancelOrderInput,\r\n DataService,\r\n Dialog,\r\n OrderProcessState,\r\n ServerConfigService,\r\n} from '@vendure/admin-ui/core';\r\nimport { Observable } from 'rxjs';\r\n\r\n@Component({\r\n selector: 'vdr-order-process-graph-dialog',\r\n templateUrl: './order-process-graph-dialog.component.html',\r\n styleUrls: ['./order-process-graph-dialog.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class OrderProcessGraphDialogComponent implements OnInit, Dialog<void> {\r\n activeState: string;\r\n states: OrderProcessState[] = [];\r\n constructor(private serverConfigService: ServerConfigService) {}\r\n\r\n ngOnInit(): void {\r\n this.states = this.serverConfigService.getOrderProcessStates();\r\n }\r\n\r\n resolveWith: (result: void | undefined) => void;\r\n}\r\n","import { ChangeDetectionStrategy, Component, OnInit } from '@angular/core';\nimport { marker as _ } from '@biesbjerg/ngx-translate-extract-marker';\nimport {\n CancelOrderInput,\n Dialog,\n I18nService,\n OrderDetail,\n OrderDetailFragment,\n OrderLineInput,\n RefundOrderInput,\n} from '@vendure/admin-ui/core';\nimport { summate } from '@vendure/common/lib/shared-utils';\n\ntype SelectionLine = { quantity: number; refund: boolean; 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})\nexport class RefundOrderDialogComponent\n implements OnInit, Dialog<{ cancel: CancelOrderInput; refund: RefundOrderInput }> {\n order: OrderDetailFragment;\n resolveWith: (result?: { cancel: CancelOrderInput; refund: RefundOrderInput }) => void;\n reason: string;\n settledPayments: OrderDetail.Payments[];\n selectedPayment: OrderDetail.Payments;\n lineQuantities: { [lineId: string]: SelectionLine } = {};\n refundShipping = false;\n adjustment = 0;\n reasons: string[] = [_('order.refund-reason-customer-request'), _('order.refund-reason-not-available')];\n\n constructor(private i18nService: I18nService) {\n this.reasons = this.reasons.map(r => this.i18nService.translate(r));\n }\n\n get refundTotal(): number {\n const itemTotal = this.order.lines.reduce((total, line) => {\n const lineRef = this.lineQuantities[line.id];\n const refundCount = (lineRef.refund && lineRef.quantity) || 0;\n return total + line.proratedUnitPriceWithTax * refundCount;\n }, 0);\n return itemTotal + (this.refundShipping ? this.order.shippingWithTax : 0) + this.adjustment;\n }\n\n get settledPaymentsTotal(): number {\n return this.settledPayments\n .map(payment => {\n const paymentTotal = payment.amount;\n const alreadyRefundedTotal = summate(\n payment.refunds.filter(r => r.state !== 'Failed') as Array<Required<OrderDetail.Refunds>>,\n 'total',\n );\n return paymentTotal - alreadyRefundedTotal;\n })\n .reduce((sum, amount) => sum + amount, 0);\n }\n\n lineCanBeRefundedOrCancelled(line: OrderDetail.Lines): boolean {\n const refunds =\n this.order.payments?.reduce(\n (all, payment) => [...all, ...payment.refunds],\n [] as OrderDetail.Refunds[],\n ) ?? [];\n\n const refundable = line.items.filter(i => {\n if (i.cancelled) {\n return false;\n }\n if (i.refundId == null) {\n return true;\n }\n const refund = refunds.find(r => r.id === i.refundId);\n return refund?.state === 'Failed';\n });\n return 0 < refundable.length;\n }\n\n ngOnInit() {\n this.lineQuantities = this.order.lines.reduce((result, line) => {\n return {\n ...result,\n [line.id]: {\n quantity: 0,\n refund: false,\n cancel: false,\n },\n };\n }, {});\n this.settledPayments = (this.order.payments || []).filter(p => p.state === 'Settled');\n if (this.settledPayments.length) {\n this.selectedPayment = this.settledPayments[0];\n }\n }\n\n handleZeroQuantity(line?: SelectionLine) {\n if (line?.quantity === 0) {\n line.cancel = false;\n line.refund = false;\n }\n }\n\n isRefunding(): boolean {\n const result = Object.values(this.lineQuantities).reduce((isRefunding, line) => {\n return isRefunding || (0 < line.quantity && line.refund);\n }, false);\n return result;\n }\n\n isCancelling(): boolean {\n const result = Object.values(this.lineQuantities).reduce((isCancelling, line) => {\n return isCancelling || (0 < line.quantity && line.cancel);\n }, false);\n return result;\n }\n\n canSubmit(): boolean {\n if (this.isRefunding()) {\n return !!(\n this.selectedPayment &&\n this.reason &&\n 0 < this.refundTotal &&\n this.refundTotal <= this.settledPaymentsTotal\n );\n } else if (this.isCancelling()) {\n return !!this.reason;\n }\n return false;\n }\n\n select() {\n const payment = this.selectedPayment;\n if (payment) {\n const refundLines = this.getOrderLineInput(line => line.refund);\n const cancelLines = this.getOrderLineInput(line => line.cancel);\n\n this.resolveWith({\n refund: {\n lines: refundLines,\n reason: this.reason,\n shipping: this.refundShipping ? this.order.shipping : 0,\n adjustment: this.adjustment,\n paymentId: payment.id,\n },\n cancel: {\n lines: cancelLines,\n orderId: this.order.id,\n reason: this.reason,\n },\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","import { ChangeDetectionStrategy, Component } from '@angular/core';\r\n\r\nimport { OrderDetail } from '@vendure/admin-ui/core';\r\nimport { Dialog } from '@vendure/admin-ui/core';\r\n\r\n@Component({\r\n selector: 'vdr-settle-refund-dialog',\r\n templateUrl: './settle-refund-dialog.component.html',\r\n styleUrls: ['./settle-refund-dialog.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class SettleRefundDialogComponent implements Dialog<string> {\r\n resolveWith: (result?: string) => void;\r\n transactionId = '';\r\n refund: OrderDetail.Refunds;\r\n\r\n submit() {\r\n this.resolveWith(this.transactionId);\r\n }\r\n\r\n cancel() {\r\n this.resolveWith();\r\n }\r\n}\r\n","import { ChangeDetectionStrategy, Component, OnInit } from '@angular/core';\nimport { CustomFieldConfig, Dialog, ModifyOrderInput, OrderDetail } from '@vendure/admin-ui/core';\n\nexport enum OrderEditResultType {\n Refund,\n Payment,\n PriceUnchanged,\n Cancel,\n}\n\ninterface OrderEditsRefundResult {\n result: OrderEditResultType.Refund;\n refundPaymentId: string;\n refundNote?: string;\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})\nexport class OrderEditsPreviewDialogComponent implements OnInit, Dialog<OrderEditResult> {\n // Passed in via the modalService\n order: OrderDetail.Fragment;\n originalTotalWithTax: number;\n orderLineCustomFields: CustomFieldConfig[];\n modifyOrderInput: ModifyOrderInput;\n\n selectedPayment?: OrderDetail.Payments;\n refundNote: string;\n resolveWith: (result?: OrderEditResult) => void;\n\n get priceDifference(): number {\n return this.order.totalWithTax - this.originalTotalWithTax;\n }\n\n ngOnInit() {\n this.refundNote = this.modifyOrderInput.note || '';\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 // tslint:disable-next-line:no-non-null-assertion\n refundPaymentId: this.selectedPayment!.id,\n refundNote: this.refundNote,\n });\n } else {\n this.resolveWith({\n result: OrderEditResultType.PriceUnchanged,\n });\n }\n }\n}\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, OnDestroy, OnInit } from '@angular/core';\r\nimport { FormGroup } from '@angular/forms';\r\nimport { ActivatedRoute, Router } from '@angular/router';\r\nimport { marker as _ } from '@biesbjerg/ngx-translate-extract-marker';\r\nimport {\r\n BaseDetailComponent,\r\n CancelOrder,\r\n CustomFieldConfig,\r\n DataService,\r\n EditNoteDialogComponent,\r\n GetOrderHistory,\r\n GetOrderQuery,\r\n HistoryEntry,\r\n HistoryEntryType,\r\n ModalService,\r\n NotificationService,\r\n Order,\r\n OrderDetail,\r\n OrderDetailFragment,\r\n OrderLineFragment,\r\n Refund,\r\n RefundOrder,\r\n ServerConfigService,\r\n SortOrder,\r\n} from '@vendure/admin-ui/core';\r\nimport { pick } from '@vendure/common/lib/pick';\r\nimport { assertNever, summate } from '@vendure/common/lib/shared-utils';\r\nimport { EMPTY, merge, Observable, of, Subject } from 'rxjs';\r\nimport { map, mapTo, startWith, switchMap, take } from 'rxjs/operators';\r\n\r\nimport { OrderTransitionService } from '../../providers/order-transition.service';\r\nimport { AddManualPaymentDialogComponent } from '../add-manual-payment-dialog/add-manual-payment-dialog.component';\r\nimport { CancelOrderDialogComponent } from '../cancel-order-dialog/cancel-order-dialog.component';\r\nimport { FulfillOrderDialogComponent } from '../fulfill-order-dialog/fulfill-order-dialog.component';\r\nimport { OrderProcessGraphDialogComponent } from '../order-process-graph-dialog/order-process-graph-dialog.component';\r\nimport { RefundOrderDialogComponent } from '../refund-order-dialog/refund-order-dialog.component';\r\nimport { SettleRefundDialogComponent } from '../settle-refund-dialog/settle-refund-dialog.component';\r\n\r\n@Component({\r\n selector: 'vdr-order-detail',\r\n templateUrl: './order-detail.component.html',\r\n styleUrls: ['./order-detail.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class OrderDetailComponent\r\n extends BaseDetailComponent<OrderDetail.Fragment>\r\n implements OnInit, OnDestroy {\r\n detailForm = new FormGroup({});\r\n history$: Observable<GetOrderHistory.Items[] | undefined>;\r\n nextStates$: Observable<string[]>;\r\n fetchHistory = new Subject<void>();\r\n customFields: CustomFieldConfig[];\r\n orderLineCustomFields: CustomFieldConfig[];\r\n private readonly defaultStates = [\r\n 'AddingItems',\r\n 'ArrangingPayment',\r\n 'PaymentAuthorized',\r\n 'PaymentSettled',\r\n 'PartiallyShipped',\r\n 'Shipped',\r\n 'PartiallyDelivered',\r\n 'Delivered',\r\n 'Cancelled',\r\n 'Modifying',\r\n 'ArrangingAdditionalPayment',\r\n ];\r\n constructor(\r\n router: Router,\r\n route: ActivatedRoute,\r\n serverConfigService: ServerConfigService,\r\n private changeDetector: ChangeDetectorRef,\r\n protected dataService: DataService,\r\n private notificationService: NotificationService,\r\n private modalService: ModalService,\r\n private orderTransitionService: OrderTransitionService,\r\n ) {\r\n super(route, router, serverConfigService, dataService);\r\n }\r\n\r\n ngOnInit() {\r\n this.init();\r\n this.entity$.pipe(take(1)).subscribe(order => {\r\n if (order.state === 'Modifying') {\r\n this.router.navigate(['./', 'modify'], { relativeTo: this.route });\r\n }\r\n });\r\n this.customFields = this.getCustomFieldConfig('Order');\r\n this.orderLineCustomFields = this.getCustomFieldConfig('OrderLine');\r\n this.history$ = this.fetchHistory.pipe(\r\n startWith(null),\r\n switchMap(() => {\r\n return this.dataService.order\r\n .getOrderHistory(this.id, {\r\n sort: {\r\n createdAt: SortOrder.DESC,\r\n },\r\n })\r\n .mapStream(data => data.order?.history.items);\r\n }),\r\n );\r\n this.nextStates$ = this.entity$.pipe(\r\n map(order => {\r\n const isInCustomState = !this.defaultStates.includes(order.state);\r\n return isInCustomState\r\n ? order.nextStates\r\n : order.nextStates.filter(s => !this.defaultStates.includes(s));\r\n }),\r\n );\r\n }\r\n\r\n ngOnDestroy() {\r\n this.destroy();\r\n }\r\n\r\n openStateDiagram() {\r\n this.entity$\r\n .pipe(\r\n take(1),\r\n switchMap(order =>\r\n this.modalService.fromComponent(OrderProcessGraphDialogComponent, {\r\n closable: true,\r\n locals: {\r\n activeState: order.state,\r\n },\r\n }),\r\n ),\r\n )\r\n .subscribe();\r\n }\r\n\r\n transitionToState(state: string) {\r\n this.dataService.order.transitionToState(this.id, state).subscribe(({ transitionOrderToState }) => {\r\n switch (transitionOrderToState?.__typename) {\r\n case 'Order':\r\n this.notificationService.success(_('order.transitioned-to-state-success'), { state });\r\n this.fetchHistory.next();\r\n break;\r\n case 'OrderStateTransitionError':\r\n this.notificationService.error(transitionOrderToState.transitionError);\r\n }\r\n });\r\n }\r\n\r\n manuallyTransitionToState(order: OrderDetailFragment) {\r\n this.orderTransitionService\r\n .manuallyTransitionToState({\r\n orderId: order.id,\r\n nextStates: order.nextStates,\r\n cancellable: true,\r\n message: _('order.manually-transition-to-state-message'),\r\n retry: 0,\r\n })\r\n .subscribe();\r\n }\r\n\r\n transitionToModifying() {\r\n this.dataService.order\r\n .transitionToState(this.id, 'Modifying')\r\n .subscribe(({ transitionOrderToState }) => {\r\n switch (transitionOrderToState?.__typename) {\r\n case 'Order':\r\n this.router.navigate(['./modify'], { relativeTo: this.route });\r\n break;\r\n case 'OrderStateTransitionError':\r\n this.notificationService.error(transitionOrderToState.transitionError);\r\n }\r\n });\r\n }\r\n\r\n updateCustomFields(customFieldsValue: any) {\r\n this.dataService.order\r\n .updateOrderCustomFields({\r\n id: this.id,\r\n customFields: customFieldsValue,\r\n })\r\n .subscribe(() => {\r\n this.notificationService.success(_('common.notify-update-success'), { entity: 'Order' });\r\n });\r\n }\r\n\r\n getOrderAddressLines(orderAddress?: { [key: string]: string }): string[] {\r\n if (!orderAddress) {\r\n return [];\r\n }\r\n return Object.values(orderAddress)\r\n .filter(val => val !== 'OrderAddress')\r\n .filter(line => !!line);\r\n }\r\n\r\n settlePayment(payment: OrderDetail.Payments) {\r\n this.dataService.order.settlePayment(payment.id).subscribe(({ settlePayment }) => {\r\n switch (settlePayment.__typename) {\r\n case 'Payment':\r\n if (settlePayment.state === 'Settled') {\r\n this.notificationService.success(_('order.settle-payment-success'));\r\n } else {\r\n this.notificationService.error(_('order.settle-payment-error'));\r\n }\r\n this.dataService.order.getOrder(this.id).single$.subscribe();\r\n this.fetchHistory.next();\r\n break;\r\n case 'OrderStateTransitionError':\r\n case 'PaymentStateTransitionError':\r\n case 'SettlePaymentError':\r\n this.notificationService.error(settlePayment.message);\r\n }\r\n });\r\n }\r\n\r\n transitionPaymentState({ payment, state }: { payment: OrderDetail.Payments; state: string }) {\r\n this.dataService.order\r\n .transitionPaymentToState(payment.id, state)\r\n .subscribe(({ transitionPaymentToState }) => {\r\n switch (transitionPaymentToState.__typename) {\r\n case 'Payment':\r\n this.notificationService.success(_('order.transitioned-payment-to-state-success'), {\r\n state,\r\n });\r\n this.dataService.order.getOrder(this.id).single$.subscribe();\r\n this.fetchHistory.next();\r\n break;\r\n case 'PaymentStateTransitionError':\r\n this.notificationService.error(transitionPaymentToState.message);\r\n break;\r\n }\r\n });\r\n }\r\n\r\n canAddFulfillment(order: OrderDetail.Fragment): boolean {\r\n const allItemsFulfilled = order.lines\r\n .reduce((items, line) => [...items, ...line.items], [] as OrderLineFragment['items'])\r\n .every(item => !!item.fulfillment);\r\n return (\r\n !allItemsFulfilled &&\r\n !this.hasUnsettledModifications(order) &&\r\n this.outstandingPaymentAmount(order) === 0 &&\r\n (order.nextStates.includes('Shipped') ||\r\n order.nextStates.includes('PartiallyShipped') ||\r\n order.nextStates.includes('Delivered'))\r\n );\r\n }\r\n\r\n hasUnsettledModifications(order: OrderDetailFragment): boolean {\r\n return 0 < order.modifications.filter(m => !m.isSettled).length;\r\n }\r\n\r\n getOutstandingModificationAmount(order: OrderDetailFragment): number {\r\n return summate(\r\n order.modifications.filter(m => !m.isSettled),\r\n 'priceChange',\r\n );\r\n }\r\n\r\n outstandingPaymentAmount(order: OrderDetailFragment): number {\r\n const paymentIsValid = (p: OrderDetail.Payments): boolean =>\r\n p.state !== 'Cancelled' && p.state !== 'Declined' && p.state !== 'Error';\r\n\r\n let amountCovered = 0;\r\n for (const payment of order.payments?.filter(paymentIsValid) ?? []) {\r\n const refunds = payment.refunds.filter(r => r.state !== 'Failed') ?? [];\r\n const refundsTotal = summate(refunds as Array<Required<Refund>>, 'total');\r\n amountCovered += payment.amount - refundsTotal;\r\n }\r\n return order.totalWithTax - amountCovered;\r\n }\r\n\r\n addManualPayment(order: OrderDetailFragment) {\r\n this.modalService\r\n .fromComponent(AddManualPaymentDialogComponent, {\r\n closable: true,\r\n locals: {\r\n outstandingAmount: this.outstandingPaymentAmount(order),\r\n currencyCode: order.currencyCode,\r\n },\r\n })\r\n .pipe(\r\n switchMap(result => {\r\n if (result) {\r\n return this.dataService.order.addManualPaymentToOrder({\r\n orderId: this.id,\r\n transactionId: result.transactionId,\r\n method: result.method,\r\n metadata: result.metadata || {},\r\n });\r\n } else {\r\n return EMPTY;\r\n }\r\n }),\r\n switchMap(({ addManualPaymentToOrder }) => {\r\n switch (addManualPaymentToOrder.__typename) {\r\n case 'Order':\r\n this.notificationService.success(_('order.add-payment-to-order-success'));\r\n return this.orderTransitionService.transitionToPreModifyingState(\r\n order.id,\r\n order.nextStates,\r\n );\r\n case 'ManualPaymentStateError':\r\n this.notificationService.error(addManualPaymentToOrder.message);\r\n return EMPTY;\r\n default:\r\n return EMPTY;\r\n }\r\n }),\r\n )\r\n .subscribe(result => {\r\n if (result) {\r\n this.refetchOrder({ result });\r\n }\r\n });\r\n }\r\n\r\n fulfillOrder() {\r\n this.entity$\r\n .pipe(\r\n take(1),\r\n switchMap(order => {\r\n return this.modalService.fromComponent(FulfillOrderDialogComponent, {\r\n size: 'xl',\r\n locals: {\r\n order,\r\n },\r\n });\r\n }),\r\n switchMap(input => {\r\n if (input) {\r\n return this.dataService.order.createFulfillment(input);\r\n } else {\r\n return of(undefined);\r\n }\r\n }),\r\n switchMap(result => this.refetchOrder(result).pipe(mapTo(result))),\r\n )\r\n .subscribe(result => {\r\n if (result) {\r\n switch (result.addFulfillmentToOrder.__typename) {\r\n case 'Fulfillment':\r\n this.notificationService.success(_('order.create-fulfillment-success'));\r\n break;\r\n case 'EmptyOrderLineSelectionError':\r\n case 'InsufficientStockOnHandError':\r\n case 'ItemsAlreadyFulfilledError':\r\n this.notificationService.error(result.addFulfillmentToOrder.message);\r\n break;\r\n }\r\n }\r\n });\r\n }\r\n\r\n transitionFulfillment(id: string, state: string) {\r\n this.dataService.order\r\n .transitionFulfillmentToState(id, state)\r\n .pipe(switchMap(result => this.refetchOrder(result)))\r\n .subscribe(() => {\r\n this.notificationService.success(_('order.successfully-updated-fulfillment'));\r\n });\r\n }\r\n\r\n cancelOrRefund(order: OrderDetail.Fragment) {\r\n const isRefundable = this.orderHasSettledPayments(order);\r\n if (order.state === 'PaymentAuthorized' || order.active === true || !isRefundable) {\r\n this.cancelOrder(order);\r\n } else {\r\n this.refundOrder(order);\r\n }\r\n }\r\n\r\n settleRefund(refund: OrderDetail.Refunds) {\r\n this.modalService\r\n .fromComponent(SettleRefundDialogComponent, {\r\n size: 'md',\r\n locals: {\r\n refund,\r\n },\r\n })\r\n .pipe(\r\n switchMap(transactionId => {\r\n if (transactionId) {\r\n return this.dataService.order.settleRefund(\r\n {\r\n transactionId,\r\n id: refund.id,\r\n },\r\n this.id,\r\n );\r\n } else {\r\n return of(undefined);\r\n }\r\n }),\r\n // switchMap(result => this.refetchOrder(result)),\r\n )\r\n .subscribe(result => {\r\n if (result) {\r\n this.notificationService.success(_('order.settle-refund-success'));\r\n }\r\n });\r\n }\r\n\r\n addNote(event: { note: string; isPublic: boolean }) {\r\n const { note, isPublic } = event;\r\n this.dataService.order\r\n .addNoteToOrder({\r\n id: this.id,\r\n note,\r\n isPublic,\r\n })\r\n .pipe(switchMap(result => this.refetchOrder(result)))\r\n .subscribe(result => {\r\n this.notificationService.success(_('common.notify-create-success'), {\r\n entity: 'Note',\r\n });\r\n });\r\n }\r\n\r\n updateNote(entry: HistoryEntry) {\r\n this.modalService\r\n .fromComponent(EditNoteDialogComponent, {\r\n closable: true,\r\n locals: {\r\n displayPrivacyControls: true,\r\n note: entry.data.note,\r\n noteIsPrivate: !entry.isPublic,\r\n },\r\n })\r\n .pipe(\r\n switchMap(result => {\r\n if (result) {\r\n return this.dataService.order.updateOrderNote({\r\n noteId: entry.id,\r\n isPublic: !result.isPrivate,\r\n note: result.note,\r\n });\r\n } else {\r\n return EMPTY;\r\n }\r\n }),\r\n )\r\n .subscribe(result => {\r\n this.fetchHistory.next();\r\n this.notificationService.success(_('common.notify-update-success'), {\r\n entity: 'Note',\r\n });\r\n });\r\n }\r\n\r\n deleteNote(entry: HistoryEntry) {\r\n return this.modalService\r\n .dialog({\r\n title: _('common.confirm-delete-note'),\r\n body: entry.data.note,\r\n buttons: [\r\n { type: 'secondary', label: _('common.cancel') },\r\n { type: 'danger', label: _('common.delete'), returnValue: true },\r\n ],\r\n })\r\n .pipe(switchMap(res => (res ? this.dataService.order.deleteOrderNote(entry.id) : EMPTY)))\r\n .subscribe(() => {\r\n this.fetchHistory.next();\r\n this.notificationService.success(_('common.notify-delete-success'), {\r\n entity: 'Note',\r\n });\r\n });\r\n }\r\n\r\n orderHasSettledPayments(order: OrderDetail.Fragment): boolean {\r\n return !!order.payments?.find(p => p.state === 'Settled');\r\n }\r\n\r\n private cancelOrder(order: OrderDetail.Fragment) {\r\n this.modalService\r\n .fromComponent(CancelOrderDialogComponent, {\r\n size: 'xl',\r\n locals: {\r\n order,\r\n },\r\n })\r\n .pipe(\r\n switchMap(input => {\r\n if (input) {\r\n return this.dataService.order.cancelOrder(input);\r\n } else {\r\n return of(undefined);\r\n }\r\n }),\r\n switchMap(result => this.refetchOrder(result)),\r\n )\r\n .subscribe(result => {\r\n if (result) {\r\n this.notificationService.success(_('order.cancelled-order-success'));\r\n }\r\n });\r\n }\r\n\r\n private refundOrder(order: OrderDetail.Fragment) {\r\n this.modalService\r\n .fromComponent(RefundOrderDialogComponent, {\r\n size: 'xl',\r\n locals: {\r\n order,\r\n },\r\n })\r\n .pipe(\r\n switchMap(input => {\r\n if (!input) {\r\n return of(undefined);\r\n }\r\n\r\n const operations: Array<\r\n Observable<RefundOrder.RefundOrder | CancelOrder.CancelOrder>\r\n > = [];\r\n if (input.refund.lines.length) {\r\n operations.push(\r\n this.dataService.order\r\n .refundOrder(input.refund)\r\n .pipe(map(res => res.refundOrder)),\r\n );\r\n }\r\n if (input.cancel.lines?.length) {\r\n operations.push(\r\n this.dataService.order\r\n .cancelOrder(input.cancel)\r\n .pipe(map(res => res.cancelOrder)),\r\n );\r\n }\r\n return merge(...operations);\r\n }),\r\n )\r\n .subscribe(result => {\r\n if (result) {\r\n switch (result.__typename) {\r\n case 'Order':\r\n this.refetchOrder(result).subscribe();\r\n this.notificationService.success(_('order.cancelled-order-success'));\r\n break;\r\n case 'Refund':\r\n this.refetchOrder(result).subscribe();\r\n if (result.state === 'Failed') {\r\n this.notificationService.error(_('order.refund-order-failed'));\r\n } else {\r\n this.notificationService.success(_('order.refund-order-success'));\r\n }\r\n break;\r\n case 'QuantityTooGreatError':\r\n case 'MultipleOrderError':\r\n case 'OrderStateTransitionError':\r\n case 'CancelActiveOrderError':\r\n case 'EmptyOrderLineSelectionError':\r\n case 'AlreadyRefundedError':\r\n case 'NothingToRefundError':\r\n case 'PaymentOrderMismatchError':\r\n case 'RefundOrderStateError':\r\n case 'RefundStateTransitionError':\r\n this.notificationService.error(result.message);\r\n break;\r\n }\r\n }\r\n });\r\n }\r\n\r\n private refetchOrder(result: object | undefined): Observable<GetOrderQuery | undefined> {\r\n this.fetchHistory.next();\r\n if (result) {\r\n return this.dataService.order.getOrder(this.id).single$;\r\n } else {\r\n return of(undefined);\r\n }\r\n }\r\n\r\n protected setFormValues(entity: Order.Fragment): void {\r\n // empty\r\n }\r\n}\r\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, OnDestroy, OnInit } from '@angular/core';\r\nimport { FormArray, FormControl, FormGroup, Validators } from '@angular/forms';\r\nimport { ActivatedRoute, Router } from '@angular/router';\r\nimport {\r\n AddItemInput,\r\n AdjustOrderLineInput,\r\n BaseDetailComponent,\r\n CustomFieldConfig,\r\n DataService,\r\n ErrorResult,\r\n GetAvailableCountries,\r\n HistoryEntryType,\r\n LanguageCode,\r\n ModalService,\r\n ModifyOrderInput,\r\n NotificationService,\r\n OrderDetail,\r\n ProductSelectorSearch,\r\n ServerConfigService,\r\n SortOrder,\r\n SurchargeInput,\r\n} from '@vendure/admin-ui/core';\r\nimport { assertNever, notNullOrUndefined } from '@vendure/common/lib/shared-utils';\r\nimport { EMPTY, Observable, of } from 'rxjs';\r\nimport { mapTo, shareReplay, switchMap, takeUntil } from 'rxjs/operators';\r\n\r\nimport { OrderTransitionService } from '../../providers/order-transition.service';\r\nimport {\r\n OrderEditResultType,\r\n OrderEditsPreviewDialogComponent,\r\n} from '../order-edits-preview-dialog/order-edits-preview-dialog.component';\r\n\r\ninterface AddedLine {\r\n productVariantId: string;\r\n productAsset?: ProductSelectorSearch.ProductAsset | null;\r\n productVariantName: string;\r\n sku: string;\r\n priceWithTax: number;\r\n price: number;\r\n quantity: number;\r\n}\r\n\r\ntype ModifyOrderData = Omit<ModifyOrderInput, 'addItems' | 'adjustOrderLines'> & {\r\n addItems: Array<AddItemInput & { customFields?: any }>;\r\n adjustOrderLines: Array<AdjustOrderLineInput & { customFields?: any }>;\r\n};\r\n\r\n@Component({\r\n selector: 'vdr-order-editor',\r\n templateUrl: './order-editor.component.html',\r\n styleUrls: ['./order-editor.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class OrderEditorComponent\r\n extends BaseDetailComponent<OrderDetail.Fragment>\r\n implements OnInit, OnDestroy {\r\n availableCountries$: Observable<GetAvailableCountries.Items[]>;\r\n addressCustomFields: CustomFieldConfig[];\r\n detailForm = new FormGroup({});\r\n orderLineCustomFieldsFormArray: FormArray;\r\n addItemCustomFieldsFormArray: FormArray;\r\n addItemCustomFieldsForm: FormGroup;\r\n addItemSelectedVariant: ProductSelectorSearch.Items | undefined;\r\n orderLineCustomFields: CustomFieldConfig[];\r\n modifyOrderInput: ModifyOrderData = {\r\n dryRun: true,\r\n orderId: '',\r\n addItems: [],\r\n adjustOrderLines: [],\r\n surcharges: [],\r\n note: '',\r\n updateShippingAddress: {},\r\n updateBillingAddress: {},\r\n };\r\n surchargeForm: FormGroup;\r\n shippingAddressForm: FormGroup;\r\n billingAddressForm: FormGroup;\r\n note = '';\r\n recalculateShipping = true;\r\n previousState: string;\r\n private addedVariants = new Map<string, ProductSelectorSearch.Items>();\r\n\r\n constructor(\r\n router: Router,\r\n route: ActivatedRoute,\r\n serverConfigService: ServerConfigService,\r\n private changeDetector: ChangeDetectorRef,\r\n protected dataService: DataService,\r\n private notificationService: NotificationService,\r\n private modalService: ModalService,\r\n private orderTransitionService: OrderTransitionService,\r\n ) {\r\n super(route, router, serverConfigService, dataService);\r\n }\r\n\r\n get addedLines(): AddedLine[] {\r\n const getSinglePriceValue = (price: ProductSelectorSearch.Price) =>\r\n price.__typename === 'SinglePrice' ? price.value : 0;\r\n return (this.modifyOrderInput.addItems || [])\r\n .map(row => {\r\n const variantInfo = this.addedVariants.get(row.productVariantId);\r\n if (variantInfo) {\r\n return {\r\n ...variantInfo,\r\n price: getSinglePriceValue(variantInfo.price),\r\n priceWithTax: getSinglePriceValue(variantInfo.priceWithTax),\r\n quantity: row.quantity,\r\n };\r\n }\r\n })\r\n .filter(notNullOrUndefined);\r\n }\r\n\r\n ngOnInit(): void {\r\n this.init();\r\n this.addressCustomFields = this.getCustomFieldConfig('Address');\r\n this.modifyOrderInput.orderId = this.route.snapshot.paramMap.get('id') as string;\r\n this.orderLineCustomFields = this.getCustomFieldConfig('OrderLine');\r\n this.entity$.pipe(takeUntil(this.destroy$)).subscribe(order => {\r\n this.surchargeForm = new FormGroup({\r\n description: new FormControl('', Validators.required),\r\n sku: new FormControl(''),\r\n price: new FormControl(0, Validators.required),\r\n priceIncludesTax: new FormControl(true),\r\n taxRate: new FormControl(0),\r\n taxDescription: new FormControl(''),\r\n });\r\n if (!this.shippingAddressForm) {\r\n this.shippingAddressForm = new FormGroup({\r\n fullName: new FormControl(order.shippingAddress?.fullName),\r\n company: new FormControl(order.shippingAddress?.company),\r\n streetLine1: new FormControl(order.shippingAddress?.streetLine1),\r\n streetLine2: new FormControl(order.shippingAddress?.streetLine2),\r\n city: new FormControl(order.shippingAddress?.city),\r\n province: new FormControl(order.shippingAddress?.province),\r\n postalCode: new FormControl(order.shippingAddress?.postalCode),\r\n countryCode: new FormControl(order.shippingAddress?.countryCode),\r\n phoneNumber: new FormControl(order.shippingAddress?.phoneNumber),\r\n });\r\n }\r\n if (!this.billingAddressForm) {\r\n this.billingAddressForm = new FormGroup({\r\n fullName: new FormControl(order.billingAddress?.fullName),\r\n company: new FormControl(order.billingAddress?.company),\r\n streetLine1: new FormControl(order.billingAddress?.streetLine1),\r\n streetLine2: new FormControl(order.billingAddress?.streetLine2),\r\n city: new FormControl(order.billingAddress?.city),\r\n province: new FormControl(order.billingAddress?.province),\r\n postalCode: new FormControl(order.billingAddress?.postalCode),\r\n countryCode: new FormControl(order.billingAddress?.countryCode),\r\n phoneNumber: new FormControl(order.billingAddress?.phoneNumber),\r\n });\r\n }\r\n this.orderLineCustomFieldsFormArray = new FormArray([]);\r\n for (const line of order.lines) {\r\n const formGroup = new FormGroup({});\r\n for (const { name } of this.orderLineCustomFields) {\r\n formGroup.addControl(name, new FormControl((line as any).customFields[name]));\r\n }\r\n formGroup.valueChanges.pipe(takeUntil(this.destroy$)).subscribe(value => {\r\n let modifyRow = this.modifyOrderInput.adjustOrderLines.find(\r\n l => l.orderLineId === line.id,\r\n );\r\n if (!modifyRow) {\r\n modifyRow = {\r\n orderLineId: line.id,\r\n quantity: line.quantity,\r\n };\r\n this.modifyOrderInput.adjustOrderLines.push(modifyRow);\r\n }\r\n if (this.orderLineCustomFields.length) {\r\n modifyRow.customFields = value;\r\n }\r\n });\r\n this.orderLineCustomFieldsFormArray.push(formGroup);\r\n }\r\n });\r\n this.addItemCustomFieldsFormArray = new FormArray([]);\r\n this.addItemCustomFieldsForm = new FormGroup({});\r\n for (const customField of this.orderLineCustomFields) {\r\n this.addItemCustomFieldsForm.addControl(customField.name, new FormControl());\r\n }\r\n this.availableCountries$ = this.dataService.settings\r\n .getAvailableCountries()\r\n .mapSingle(result => result.countries.items)\r\n .pipe(shareReplay(1));\r\n this.dataService.order\r\n .getOrderHistory(this.id, {\r\n take: 1,\r\n sort: {\r\n createdAt: SortOrder.DESC,\r\n },\r\n filter: { type: { eq: HistoryEntryType.ORDER_STATE_TRANSITION } },\r\n })\r\n .single$.subscribe(({ order }) => {\r\n this.previousState = order?.history.items[0].data.from;\r\n });\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.destroy();\r\n }\r\n\r\n transitionToPriorState(order: OrderDetail.Fragment) {\r\n this.orderTransitionService\r\n .transitionToPreModifyingState(order.id, order.nextStates)\r\n .subscribe(result => {\r\n this.router.navigate(['..'], { relativeTo: this.route });\r\n });\r\n }\r\n\r\n canPreviewChanges(): boolean {\r\n const { addItems, adjustOrderLines, surcharges } = this.modifyOrderInput;\r\n return (\r\n !!addItems?.length ||\r\n !!surcharges?.length ||\r\n !!adjustOrderLines?.length ||\r\n (this.shippingAddressForm.dirty && this.shippingAddressForm.valid) ||\r\n (this.billingAddressForm.dirty && this.billingAddressForm.valid)\r\n );\r\n }\r\n\r\n isLineModified(line: OrderDetail.Lines): boolean {\r\n return !!this.modifyOrderInput.adjustOrderLines?.find(\r\n l => l.orderLineId === line.id && l.quantity !== line.quantity,\r\n );\r\n }\r\n\r\n updateLineQuantity(line: OrderDetail.Lines, quantity: string) {\r\n const { adjustOrderLines } = this.modifyOrderInput;\r\n let row = adjustOrderLines?.find(l => l.orderLineId === line.id);\r\n if (row && +quantity === line.quantity) {\r\n // Remove the modification if the quantity is the same as\r\n // the original order\r\n adjustOrderLines?.splice(adjustOrderLines?.indexOf(row), 1);\r\n }\r\n if (!row) {\r\n row = { orderLineId: line.id, quantity: +quantity };\r\n adjustOrderLines?.push(row);\r\n }\r\n row.quantity = +quantity;\r\n }\r\n\r\n updateAddedItemQuantity(item: AddedLine, quantity: string) {\r\n const row = this.modifyOrderInput.addItems?.find(l => l.productVariantId === item.productVariantId);\r\n if (row) {\r\n row.quantity = +quantity;\r\n }\r\n }\r\n\r\n trackByProductVariantId(index: number, item: AddedLine) {\r\n return item.productVariantId;\r\n }\r\n\r\n getSelectedItemPrice(result: ProductSelectorSearch.Items | undefined): number {\r\n switch (result?.priceWithTax.__typename) {\r\n case 'SinglePrice':\r\n return result.priceWithTax.value;\r\n default:\r\n return 0;\r\n }\r\n }\r\n\r\n addItemToOrder(result: ProductSelectorSearch.Items | undefined) {\r\n if (!result) {\r\n return;\r\n }\r\n const customFields = this.orderLineCustomFields.length\r\n ? this.addItemCustomFieldsForm.value\r\n : undefined;\r\n let row = this.modifyOrderInput.addItems?.find(l =>\r\n this.isMatchingAddItemRow(l, result, customFields),\r\n );\r\n if (!row) {\r\n row = { productVariantId: result.productVariantId, quantity: 1 };\r\n if (customFields) {\r\n row.customFields = customFields;\r\n }\r\n this.modifyOrderInput.addItems?.push(row);\r\n } else {\r\n row.quantity++;\r\n }\r\n if (customFields) {\r\n const formGroup = new FormGroup({});\r\n for (const [key, value] of Object.entries(customFields)) {\r\n formGroup.addControl(key, new FormControl(value));\r\n }\r\n this.addItemCustomFieldsFormArray.push(formGroup);\r\n formGroup.valueChanges.pipe(takeUntil(this.destroy$)).subscribe(value => {\r\n if (row) {\r\n row.customFields = value;\r\n }\r\n });\r\n }\r\n this.addItemCustomFieldsForm.reset({});\r\n this.addItemSelectedVariant = undefined;\r\n this.addedVariants.set(result.productVariantId, result);\r\n }\r\n\r\n private isMatchingAddItemRow(\r\n row: ModifyOrderData['addItems'][number],\r\n result: ProductSelectorSearch.Items,\r\n customFields: any,\r\n ): boolean {\r\n return (\r\n row.productVariantId === result.productVariantId &&\r\n JSON.stringify(row.customFields) === JSON.stringify(customFields)\r\n );\r\n }\r\n\r\n removeAddedItem(index: number) {\r\n this.modifyOrderInput.addItems.splice(index, 1);\r\n if (-1 < index) {\r\n this.addItemCustomFieldsFormArray.removeAt(index);\r\n }\r\n }\r\n\r\n getSurchargePrices(surcharge: SurchargeInput) {\r\n const priceWithTax = surcharge.priceIncludesTax\r\n ? surcharge.price\r\n : Math.round(surcharge.price * ((100 + (surcharge.taxRate || 0)) / 100));\r\n const price = surcharge.priceIncludesTax\r\n ? Math.round(surcharge.price / ((100 + (surcharge.taxRate || 0)) / 100))\r\n : surcharge.price;\r\n return {\r\n price,\r\n priceWithTax,\r\n };\r\n }\r\n\r\n addSurcharge(value: any) {\r\n this.modifyOrderInput.surcharges?.push(value);\r\n this.surchargeForm.reset({\r\n price: 0,\r\n priceIncludesTax: true,\r\n taxRate: 0,\r\n });\r\n }\r\n\r\n removeSurcharge(index: number) {\r\n this.modifyOrderInput.surcharges?.splice(index, 1);\r\n }\r\n\r\n previewAndModify(order: OrderDetail.Fragment) {\r\n const input: ModifyOrderInput = {\r\n ...this.modifyOrderInput,\r\n ...(this.billingAddressForm.dirty ? { updateBillingAddress: this.billingAddressForm.value } : {}),\r\n ...(this.shippingAddressForm.dirty\r\n ? { updateShippingAddress: this.shippingAddressForm.value }\r\n : {}),\r\n dryRun: true,\r\n note: this.note ?? '',\r\n options: {\r\n recalculateShipping: this.recalculateShipping,\r\n },\r\n };\r\n const originalTotalWithTax = order.totalWithTax;\r\n this.dataService.order\r\n .modifyOrder(input)\r\n .pipe(\r\n switchMap(({ modifyOrder }) => {\r\n switch (modifyOrder.__typename) {\r\n case 'Order':\r\n return this.modalService.fromComponent(OrderEditsPreviewDialogComponent, {\r\n size: 'xl',\r\n closable: false,\r\n locals: {\r\n originalTotalWithTax,\r\n order: modifyOrder,\r\n orderLineCustomFields: this.orderLineCustomFields,\r\n modifyOrderInput: input,\r\n },\r\n });\r\n case 'InsufficientStockError':\r\n case 'NegativeQuantityError':\r\n case 'NoChangesSpecifiedError':\r\n case 'OrderLimitError':\r\n case 'OrderModificationStateError':\r\n case 'PaymentMethodMissingError':\r\n case 'RefundPaymentIdMissingError': {\r\n this.notificationService.error(modifyOrder.message);\r\n return of(false as const);\r\n }\r\n case null:\r\n case undefined:\r\n return of(false as const);\r\n default:\r\n assertNever(modifyOrder);\r\n }\r\n }),\r\n switchMap(result => {\r\n if (!result || result.result === OrderEditResultType.Cancel) {\r\n // re-fetch so that the preview values get overwritten in the cache.\r\n return this.dataService.order.getOrder(this.id).mapSingle(() => false);\r\n } else {\r\n // Do the modification\r\n const wetRunInput = {\r\n ...input,\r\n dryRun: false,\r\n };\r\n if (result.result === OrderEditResultType.Refund) {\r\n wetRunInput.refund = {\r\n paymentId: result.refundPaymentId,\r\n reason: result.refundNote,\r\n };\r\n }\r\n return this.dataService.order.modifyOrder(wetRunInput).pipe(\r\n switchMap(({ modifyOrder }) => {\r\n if (modifyOrder.__typename === 'Order') {\r\n const priceDelta = modifyOrder.totalWithTax - originalTotalWithTax;\r\n const nextState =\r\n 0 < priceDelta ? 'ArrangingAdditionalPayment' : this.previousState;\r\n\r\n return this.dataService.order\r\n .transitionToState(order.id, nextState)\r\n .pipe(mapTo(true));\r\n } else {\r\n this.notificationService.error((modifyOrder as ErrorResult).message);\r\n return EMPTY;\r\n }\r\n }),\r\n );\r\n }\r\n }),\r\n )\r\n .subscribe(result => {\r\n if (result) {\r\n this.router.navigate(['../'], { relativeTo: this.route });\r\n }\r\n });\r\n }\r\n\r\n protected setFormValues(entity: OrderDetail.Fragment, languageCode: LanguageCode): void {\r\n /* not used */\r\n }\r\n}\r\n","import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from '@angular/core';\r\nimport {\r\n GetOrderHistory,\r\n HistoryEntry,\r\n HistoryEntryType,\r\n OrderDetail,\r\n OrderDetailFragment,\r\n TimelineDisplayType,\r\n} from '@vendure/admin-ui/core';\r\n\r\n@Component({\r\n selector: 'vdr-order-history',\r\n templateUrl: './order-history.component.html',\r\n styleUrls: ['./order-history.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class OrderHistoryComponent {\r\n @Input() order: OrderDetailFragment;\r\n @Input() history: GetOrderHistory.Items[];\r\n @Output() addNote = new EventEmitter<{ note: string; isPublic: boolean }>();\r\n @Output() updateNote = new EventEmitter<HistoryEntry>();\r\n @Output() deleteNote = new EventEmitter<HistoryEntry>();\r\n note = '';\r\n noteIsPrivate = true;\r\n expanded = false;\r\n readonly type = HistoryEntryType;\r\n\r\n getDisplayType(entry: GetOrderHistory.Items): TimelineDisplayType {\r\n if (entry.type === HistoryEntryType.ORDER_STATE_TRANSITION) {\r\n if (entry.data.to === 'Delivered') {\r\n return 'success';\r\n }\r\n if (entry.data.to === 'Cancelled') {\r\n return 'error';\r\n }\r\n }\r\n if (entry.type === HistoryEntryType.ORDER_FULFILLMENT_TRANSITION) {\r\n if (entry.data.to === 'Delivered') {\r\n return 'success';\r\n }\r\n }\r\n if (entry.type === HistoryEntryType.ORDER_PAYMENT_TRANSITION) {\r\n if (entry.data.to === 'Declined' || entry.data.to === 'Cancelled') {\r\n return 'error';\r\n }\r\n }\r\n if (entry.type === HistoryEntryType.ORDER_CANCELLATION) {\r\n return 'error';\r\n }\r\n if (entry.type === HistoryEntryType.ORDER_REFUND_TRANSITION) {\r\n return 'warning';\r\n }\r\n return 'default';\r\n }\r\n\r\n getTimelineIcon(entry: GetOrderHistory.Items) {\r\n if (entry.type === HistoryEntryType.ORDER_STATE_TRANSITION) {\r\n if (entry.data.to === 'Delivered') {\r\n return ['success-standard', 'is-solid'];\r\n }\r\n if (entry.data.to === 'Cancelled') {\r\n return 'ban';\r\n }\r\n }\r\n if (entry.type === HistoryEntryType.ORDER_PAYMENT_TRANSITION) {\r\n if (entry.data.to === 'Settled') {\r\n return 'credit-card';\r\n }\r\n }\r\n if (entry.type === HistoryEntryType.ORDER_NOTE) {\r\n return 'note';\r\n }\r\n if (entry.type === HistoryEntryType.ORDER_MODIFIED) {\r\n return 'pencil';\r\n }\r\n if (entry.type === HistoryEntryType.ORDER_FULFILLMENT_TRANSITION) {\r\n if (entry.data.to === 'Shipped') {\r\n return 'truck';\r\n }\r\n if (entry.data.to === 'Delivered') {\r\n return 'truck';\r\n }\r\n }\r\n }\r\n\r\n isFeatured(entry: GetOrderHistory.Items): boolean {\r\n switch (entry.type) {\r\n case HistoryEntryType.ORDER_STATE_TRANSITION: {\r\n return (\r\n entry.data.to === 'Delivered' ||\r\n entry.data.to === 'Cancelled' ||\r\n entry.data.to === 'Settled'\r\n );\r\n }\r\n case HistoryEntryType.ORDER_PAYMENT_TRANSITION:\r\n return entry.data.to === 'Settled' || entry.data.to === 'Cancelled';\r\n case HistoryEntryType.ORDER_FULFILLMENT_TRANSITION:\r\n return entry.data.to === 'Delivered' || entry.data.to === 'Shipped';\r\n case HistoryEntryType.ORDER_NOTE:\r\n case HistoryEntryType.ORDER_MODIFIED:\r\n return true;\r\n default:\r\n return false;\r\n }\r\n }\r\n\r\n getFulfillment(entry: GetOrderHistory.Items): OrderDetail.Fulfillments | undefined {\r\n if (\r\n (entry.type === HistoryEntryType.ORDER_FULFILLMENT ||\r\n entry.type === HistoryEntryType.ORDER_FULFILLMENT_TRANSITION) &&\r\n this.order.fulfillments\r\n ) {\r\n return this.order.fulfillments.find(f => f.id === entry.data.fulfillmentId);\r\n }\r\n }\r\n\r\n getPayment(entry: GetOrderHistory.Items): OrderDetail.Payments | undefined {\r\n if (entry.type === HistoryEntryType.ORDER_PAYMENT_TRANSITION && this.order.payments) {\r\n return this.order.payments.find(p => p.id === entry.data.paymentId);\r\n }\r\n }\r\n\r\n getCancelledItems(entry: GetOrderHistory.Items): Array<{ name: string; quantity: number }> {\r\n const itemMap = new Map<string, number>();\r\n const cancelledItemIds: string[] = entry.data.orderItemIds;\r\n for (const line of this.order.lines) {\r\n for (const item of line.items) {\r\n if (cancelledItemIds.includes(item.id)) {\r\n const count = itemMap.get(line.productVariant.name);\r\n if (count != null) {\r\n itemMap.set(line.productVariant.name, count + 1);\r\n } else {\r\n itemMap.set(line.productVariant.name, 1);\r\n }\r\n }\r\n }\r\n }\r\n return Array.from(itemMap.entries()).map(([name, quantity]) => ({ name, quantity }));\r\n }\r\n\r\n getModification(id: string) {\r\n return this.order.modifications.find(m => m.id === id);\r\n }\r\n\r\n getName(entry: GetOrderHistory.Items): string {\r\n const { administrator } = entry;\r\n if (administrator) {\r\n return `${administrator.firstName} ${administrator.lastName}`;\r\n } else {\r\n const customer = this.order.customer;\r\n if (customer) {\r\n return `${customer.firstName} ${customer.lastName}`;\r\n }\r\n }\r\n return '';\r\n }\r\n\r\n addNoteToOrder() {\r\n this.addNote.emit({ note: this.note, isPublic: !this.noteIsPrivate });\r\n this.note = '';\r\n this.noteIsPrivate = true;\r\n }\r\n}\r\n","import { ChangeDetectionStrategy, Component, OnInit } from '@angular/core';\nimport { FormControl, FormGroup } from '@angular/forms';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { marker as _ } from '@biesbjerg/ngx-translate-extract-marker';\nimport {\n BaseListComponent,\n DataService,\n GetOrderList,\n LocalStorageService,\n OrderListOptions,\n ServerConfigService,\n SortOrder,\n} from '@vendure/admin-ui/core';\nimport { Order } from '@vendure/common/lib/generated-types';\nimport { merge, Observable } from 'rxjs';\nimport { debounceTime, distinctUntilChanged, filter, map, skip, takeUntil, tap } from 'rxjs/operators';\n\ninterface OrderFilterConfig {\n active?: boolean;\n states?: string[];\n}\n\ninterface FilterPreset {\n name: string;\n label: string;\n config: OrderFilterConfig;\n}\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})\nexport class OrderListComponent\n extends BaseListComponent<GetOrderList.Query, GetOrderList.Items>\n implements OnInit {\n searchOrderCodeControl = new FormControl('');\n searchLastNameControl = new FormControl('');\n customFilterForm: FormGroup;\n orderStates = this.serverConfigService.getOrderProcessStates().map(item => item.name);\n filterPresets: FilterPreset[] = [\n {\n name: 'open',\n label: _('order.filter-preset-open'),\n config: {\n active: false,\n states: this.orderStates.filter(\n s => s !== 'Delivered' && s !== 'Cancelled' && s !== 'Shipped',\n ),\n },\n },\n {\n name: 'shipped',\n label: _('order.filter-preset-shipped'),\n config: {\n active: false,\n states: ['Shipped'],\n },\n },\n {\n name: 'completed',\n label: _('order.filter-preset-completed'),\n config: {\n active: false,\n states: ['Delivered', 'Cancelled'],\n },\n },\n {\n name: 'active',\n label: _('order.filter-preset-active'),\n config: {\n active: true,\n },\n },\n ];\n activePreset$: Observable<string>;\n\n constructor(\n private serverConfigService: ServerConfigService,\n private dataService: DataService,\n private localStorageService: LocalStorageService,\n router: Router,\n route: ActivatedRoute,\n ) {\n super(router, route);\n super.setQueryFn(\n // tslint:disable-next-line:no-shadowed-variable\n (take, skip) => this.dataService.order.getOrders({ take, skip }).refetchOnChannelChange(),\n data => data.orders,\n // tslint:disable-next-line:no-shadowed-variable\n (skip, take) =>\n this.createQueryOptions(\n skip,\n take,\n this.searchOrderCodeControl.value,\n this.searchLastNameControl.value,\n this.route.snapshot.queryParamMap.get('filter') || 'open',\n ),\n );\n const lastFilters = this.localStorageService.get('orderListLastCustomFilters');\n if (lastFilters) {\n this.setQueryParam(lastFilters, { replaceUrl: true });\n }\n }\n\n ngOnInit() {\n super.ngOnInit();\n this.activePreset$ = this.route.queryParamMap.pipe(\n map(qpm => qpm.get('filter') || 'open'),\n distinctUntilChanged(),\n );\n const searchTerms$ = merge(\n this.searchOrderCodeControl.valueChanges,\n this.searchLastNameControl.valueChanges,\n ).pipe(\n filter(value => 2 < value.length || value.length === 0),\n debounceTime(250),\n );\n merge(searchTerms$, this.route.queryParamMap)\n .pipe(takeUntil(this.destroy$))\n .subscribe(val => {\n this.refresh();\n });\n\n const queryParamMap = this.route.snapshot.queryParamMap;\n this.customFilterForm = new FormGroup({\n states: new FormControl(queryParamMap.getAll('states') ?? []),\n placedAtStart: new FormControl(queryParamMap.get('placedAtStart')),\n placedAtEnd: new FormControl(queryParamMap.get('placedAtEnd')),\n });\n }\n\n selectFilterPreset(presetName: string) {\n const lastCustomFilters = this.localStorageService.get('orderListLastCustomFilters') ?? {};\n const emptyCustomFilters = { states: undefined, placedAtStart: undefined, placedAtEnd: undefined };\n const filters = presetName === 'custom' ? lastCustomFilters : emptyCustomFilters;\n this.setQueryParam(\n {\n filter: presetName,\n page: 1,\n ...filters,\n },\n { replaceUrl: true },\n );\n }\n\n applyCustomFilters() {\n const formValue = this.customFilterForm.value;\n const customFilters = {\n states: formValue.states,\n placedAtStart: formValue.placedAtStart,\n placedAtEnd: formValue.placedAtEnd,\n };\n this.setQueryParam({\n filter: 'custom',\n ...customFilters,\n });\n this.customFilterForm.markAsPristine();\n this.localStorageService.set('orderListLastCustomFilters', customFilters);\n }\n\n private createQueryOptions(\n // tslint:disable-next-line:no-shadowed-variable\n skip: number,\n take: number,\n orderCodeSearchTerm: string,\n customerNameSearchTerm: string,\n activeFilterPreset?: string,\n ): { options: OrderListOptions } {\n const filterConfig = this.filterPresets.find(p => p.name === activeFilterPreset);\n // tslint:disable-next-line:no-shadowed-variable\n const filter: any = {};\n if (filterConfig) {\n if (filterConfig.config.active != null) {\n filter.active = {\n eq: filterConfig.config.active,\n };\n }\n if (filterConfig.config.states) {\n filter.state = {\n in: filterConfig.config.states,\n };\n }\n } else if (activeFilterPreset === 'custom') {\n const queryParams = this.route.snapshot.queryParamMap;\n const states = queryParams.getAll('states') ?? [];\n const placedAtStart = queryParams.get('placedAtStart');\n const placedAtEnd = queryParams.get('placedAtEnd');\n if (states.length) {\n filter.state = {\n in: states,\n };\n }\n if (placedAtStart && placedAtEnd) {\n filter.orderPlacedAt = {\n between: {\n start: placedAtStart,\n end: placedAtEnd,\n },\n };\n } else if (placedAtStart) {\n filter.orderPlacedAt = {\n after: placedAtStart,\n };\n } else if (placedAtEnd) {\n filter.orderPlacedAt = {\n before: placedAtEnd,\n };\n }\n }\n if (customerNameSearchTerm) {\n filter.customerLastName = {\n contains: customerNameSearchTerm,\n };\n }\n if (orderCodeSearchTerm) {\n filter.code = {\n contains: orderCodeSearchTerm,\n };\n }\n return {\n options: {\n skip,\n take,\n filter: {\n ...(filter ?? {}),\n },\n sort: {\n updatedAt: SortOrder.DESC,\n },\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","import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from '@angular/core';\r\nimport { CurrencyCode } from '@vendure/admin-ui/core';\r\nimport { OrderDetail } from '@vendure/admin-ui/core';\r\n\r\n@Component({\r\n selector: 'vdr-order-payment-card',\r\n templateUrl: './order-payment-card.component.html',\r\n styleUrls: ['./order-payment-card.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class OrderPaymentCardComponent {\r\n @Input() payment: OrderDetail.Payments;\r\n @Input() currencyCode: CurrencyCode;\r\n @Output() settlePayment = new EventEmitter<OrderDetail.Payments>();\r\n @Output() transitionPaymentState = new EventEmitter<{ payment: OrderDetail.Payments; state: string }>();\r\n @Output() settleRefund = new EventEmitter<OrderDetail.Refunds>();\r\n\r\n refundHasMetadata(refund?: OrderDetail.Refunds): boolean {\r\n return !!refund && Object.keys(refund.metadata).length > 0;\r\n }\r\n\r\n nextOtherStates(): string[] {\r\n if (!this.payment) {\r\n return [];\r\n }\r\n return this.payment.nextStates.filter(s => s !== 'Settled');\r\n }\r\n}\r\n","import { ChangeDetectionStrategy, Component, Input, OnInit } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\nimport { tap } from 'rxjs/operators';\r\n\r\nimport { OrderProcessNodeComponent } from './order-process-node.component';\r\n\r\n@Component({\r\n selector: 'vdr-order-process-edge',\r\n templateUrl: './order-process-edge.component.html',\r\n styleUrls: ['./order-process-edge.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class OrderProcessEdgeComponent implements OnInit {\r\n @Input() from: OrderProcessNodeComponent;\r\n @Input() to: OrderProcessNodeComponent;\r\n @Input() index: number;\r\n active$: Observable<boolean>;\r\n\r\n ngOnInit() {\r\n this.active$ = this.from.active$\r\n .asObservable()\r\n .pipe(tap((active) => this.to.activeTarget$.next(active)));\r\n }\r\n\r\n getStyle() {\r\n const direction = this.from.index < this.to.index ? 'down' : 'up';\r\n const startPos = this.from.getPos(direction === 'down' ? 'bottom' : 'top');\r\n const endPos = this.to.getPos(direction === 'down' ? 'top' : 'bottom');\r\n const dX = Math.abs(startPos.x - endPos.x);\r\n const dY = Math.abs(startPos.y - endPos.y);\r\n const length = Math.sqrt(dX ** 2 + dY ** 2);\r\n return {\r\n 'top.px': startPos.y,\r\n 'left.px': startPos.x + (direction === 'down' ? 10 : 40) + this.index * 12,\r\n 'height.px': length,\r\n 'width.px': 1,\r\n ...(direction === 'up'\r\n ? {\r\n transform: 'rotateZ(180deg)',\r\n 'transform-origin': 'top',\r\n }\r\n : {}),\r\n };\r\n }\r\n}\r\n","import {\r\n ChangeDetectionStrategy,\r\n Component,\r\n ElementRef,\r\n Input,\r\n OnChanges,\r\n SimpleChanges,\r\n} from '@angular/core';\r\nimport { BehaviorSubject } from 'rxjs';\r\n\r\nimport { NODE_HEIGHT } from './constants';\r\nimport { StateNode } from './types';\r\n\r\n@Component({\r\n selector: 'vdr-order-process-node',\r\n templateUrl: './order-process-node.component.html',\r\n styleUrls: ['./order-process-node.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class OrderProcessNodeComponent implements OnChanges {\r\n @Input() node: StateNode;\r\n @Input() index: number;\r\n @Input() active: boolean;\r\n active$ = new BehaviorSubject<boolean>(false);\r\n activeTarget$ = new BehaviorSubject<boolean>(false);\r\n isCancellable = false;\r\n // We use a class field here to prevent the\r\n // i18n extractor from extracting a \"Cancelled\" key\r\n cancelledState = 'Cancelled';\r\n\r\n constructor(private elementRef: ElementRef<HTMLDivElement>) {}\r\n\r\n ngOnChanges(changes: SimpleChanges) {\r\n this.isCancellable = !!this.node.to.find((s) => s.name === 'Cancelled');\r\n if (changes.active) {\r\n this.active$.next(this.active);\r\n }\r\n }\r\n\r\n getPos(origin: 'top' | 'bottom' = 'top'): { x: number; y: number } {\r\n const rect = this.elementRef.nativeElement.getBoundingClientRect();\r\n const nodeHeight =\r\n this.elementRef.nativeElement.querySelector('.node')?.getBoundingClientRect().height ?? 0;\r\n return {\r\n x: 10,\r\n y: this.index * NODE_HEIGHT + (origin === 'bottom' ? nodeHeight : 0),\r\n };\r\n }\r\n\r\n getStyle() {\r\n const pos = this.getPos();\r\n return {\r\n 'top.px': pos.y,\r\n 'left.px': pos.x,\r\n };\r\n }\r\n}\r\n","export const NODE_HEIGHT = 72;\r\n","import {\r\n AfterViewInit,\r\n ChangeDetectionStrategy,\r\n ChangeDetectorRef,\r\n Component,\r\n HostBinding,\r\n Input,\r\n OnChanges,\r\n OnInit,\r\n QueryList,\r\n SimpleChanges,\r\n ViewChildren,\r\n} from '@angular/core';\r\nimport { OrderProcessState } from '@vendure/admin-ui/core';\r\nimport { BehaviorSubject, Observable } from 'rxjs';\r\nimport { debounceTime } from 'rxjs/operators';\r\n\r\nimport { NODE_HEIGHT } from './constants';\r\nimport { OrderProcessNodeComponent } from './order-process-node.component';\r\nimport { StateNode } from './types';\r\n\r\n@Component({\r\n selector: 'vdr-order-process-graph',\r\n templateUrl: './order-process-graph.component.html',\r\n styleUrls: ['./order-process-graph.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class OrderProcessGraphComponent implements OnInit, OnChanges, AfterViewInit {\r\n @Input() states: OrderProcessState[];\r\n @Input() initialState?: string;\r\n setActiveState$ = new BehaviorSubject<string | undefined>(undefined);\r\n activeState$: Observable<string | undefined>;\r\n nodes: StateNode[] = [];\r\n edges: Array<{ from: OrderProcessNodeComponent; to: OrderProcessNodeComponent; index: number }> = [];\r\n\r\n @ViewChildren(OrderProcessNodeComponent) nodeComponents: QueryList<OrderProcessNodeComponent>;\r\n\r\n constructor(private changeDetector: ChangeDetectorRef) {}\r\n\r\n @HostBinding('style.height.px')\r\n get outerHeight(): number {\r\n return this.nodes.length * NODE_HEIGHT;\r\n }\r\n\r\n ngOnInit() {\r\n this.setActiveState$.next(this.initialState);\r\n this.activeState$ = this.setActiveState$.pipe(debounceTime(150));\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges) {\r\n this.populateNodes();\r\n }\r\n\r\n ngAfterViewInit() {\r\n setTimeout(() => this.populateEdges());\r\n }\r\n\r\n onMouseOver(stateName: string) {\r\n this.setActiveState$.next(stateName);\r\n }\r\n\r\n onMouseOut() {\r\n this.setActiveState$.next(this.initialState);\r\n }\r\n\r\n getNodeFor(state: string): OrderProcessNodeComponent | undefined {\r\n if (this.nodeComponents) {\r\n return this.nodeComponents.find((n) => n.node.name === state);\r\n }\r\n }\r\n\r\n private populateNodes() {\r\n const stateNodeMap = new Map<string, StateNode>();\r\n for (const state of this.states) {\r\n stateNodeMap.set(state.name, {\r\n name: state.name,\r\n to: [],\r\n });\r\n }\r\n\r\n for (const [name, stateNode] of stateNodeMap.entries()) {\r\n const targets = this.states.find((s) => s.name === name)?.to ?? [];\r\n for (const target of targets) {\r\n const targetNode = stateNodeMap.get(target);\r\n if (targetNode) {\r\n stateNode.to.push(targetNode);\r\n }\r\n }\r\n }\r\n this.nodes = [...stateNodeMap.values()].filter((n) => n.name !== 'Cancelled');\r\n }\r\n\r\n private populateEdges() {\r\n for (const node of this.nodes) {\r\n const nodeCmp = this.getNodeFor(node.name);\r\n let index = 0;\r\n for (const to of node.to) {\r\n const toCmp = this.getNodeFor(to.name);\r\n if (nodeCmp && toCmp && nodeCmp !== toCmp) {\r\n this.edges.push({\r\n to: toCmp,\r\n from: nodeCmp,\r\n index,\r\n });\r\n index++;\r\n }\r\n }\r\n }\r\n this.edges = [...this.edges];\r\n this.changeDetector.markForCheck();\r\n }\r\n}\r\n","import { ChangeDetectionStrategy, Component, Input, OnInit } from '@angular/core';\r\nimport { AdjustmentType, CustomFieldConfig, OrderDetail } from '@vendure/admin-ui/core';\r\n\r\n@Component({\r\n selector: 'vdr-order-table',\r\n templateUrl: './order-table.component.html',\r\n styleUrls: ['./order-table.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class OrderTableComponent implements OnInit {\r\n @Input() order: OrderDetail.Fragment;\r\n @Input() orderLineCustomFields: CustomFieldConfig[];\r\n orderLineCustomFieldsVisible = false;\r\n\r\n get visibleOrderLineCustomFields(): CustomFieldConfig[] {\r\n return this.orderLineCustomFieldsVisible ? this.orderLineCustomFields : [];\r\n }\r\n\r\n get showElided(): boolean {\r\n return !this.orderLineCustomFieldsVisible && 0 < this.orderLineCustomFields.length;\r\n }\r\n\r\n ngOnInit(): void {\r\n this.orderLineCustomFieldsVisible = this.orderLineCustomFields.length < 2;\r\n }\r\n\r\n toggleOrderLineCustomFields() {\r\n this.orderLineCustomFieldsVisible = !this.orderLineCustomFieldsVisible;\r\n }\r\n\r\n getLineDiscounts(line: OrderDetail.Lines) {\r\n return line.discounts.filter(a => a.type === AdjustmentType.PROMOTION);\r\n }\r\n\r\n getLineCustomFields(line: OrderDetail.Lines): Array<{ config: CustomFieldConfig; value: any }> {\r\n return this.orderLineCustomFields\r\n .map(config => {\r\n const value = (line as any).customFields[config.name];\r\n return {\r\n config,\r\n value,\r\n };\r\n })\r\n .filter(field => {\r\n return this.orderLineCustomFieldsVisible ? true : field.value != null;\r\n });\r\n }\r\n\r\n getPromotionLink(promotion: OrderDetail.Discounts): any[] {\r\n const id = promotion.adjustmentSource.split(':')[1];\r\n return ['/marketing', 'promotions', id];\r\n }\r\n\r\n getCouponCodeForAdjustment(\r\n order: OrderDetail.Fragment,\r\n promotionAdjustment: OrderDetail.Discounts,\r\n ): string | undefined {\r\n const id = promotionAdjustment.adjustmentSource.split(':')[1];\r\n const promotion = order.promotions.find(p => p.id === id);\r\n if (promotion) {\r\n return promotion.couponCode || undefined;\r\n }\r\n }\r\n}\r\n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\r\n\r\nimport { CurrencyCode, OrderDetail } from '@vendure/admin-ui/core';\r\n\r\n@Component({\r\n selector: 'vdr-payment-detail',\r\n templateUrl: './payment-detail.component.html',\r\n styleUrls: ['./payment-detail.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class PaymentDetailComponent {\r\n @Input() payment: OrderDetail.Payments;\r\n @Input() currencyCode: CurrencyCode;\r\n}\r\n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'vdr-payment-state-label',\r\n templateUrl: './payment-state-label.component.html',\r\n styleUrls: ['./payment-state-label.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class PaymentStateLabelComponent {\r\n @Input() state: string;\r\n\r\n get chipColorType() {\r\n switch (this.state) {\r\n case 'Authorized':\r\n return 'warning';\r\n case 'Settled':\r\n return 'success';\r\n case 'Declined':\r\n case 'Cancelled':\r\n return 'error';\r\n }\r\n }\r\n}\r\n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'vdr-refund-state-label',\r\n templateUrl: './refund-state-label.component.html',\r\n styleUrls: ['./refund-state-label.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class RefundStateLabelComponent {\r\n @Input() state: string;\r\n\r\n get chipColorType() {\r\n switch (this.state) {\r\n case 'Pending':\r\n return 'warning';\r\n case 'Settled':\r\n return 'success';\r\n case 'Failed':\r\n return 'error';\r\n }\r\n }\r\n}\r\n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'vdr-simple-item-list',\r\n templateUrl: './simple-item-list.component.html',\r\n styleUrls: ['./simple-item-list.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class SimpleItemListComponent {\r\n @Input() items: Array<{ name: string; quantity: number }>;\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { Router } from '@angular/router';\r\nimport { BaseEntityResolver } from '@vendure/admin-ui/core';\r\nimport { OrderDetail } from '@vendure/admin-ui/core';\r\nimport { DataService } from '@vendure/admin-ui/core';\r\n\r\n/**\r\n * Resolves the id from the path into a Customer entity.\r\n */\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class OrderResolver extends BaseEntityResolver<OrderDetail.Fragment> {\r\n constructor(router: Router, dataService: DataService) {\r\n super(\r\n router,\r\n {\r\n __typename: 'Order',\r\n id: '',\r\n code: '',\r\n createdAt: '',\r\n updatedAt: '',\r\n total: 0,\r\n } as any,\r\n id => dataService.order.getOrder(id).mapStream(data => data.order),\r\n );\r\n }\r\n}\r\n","import { Route } from '@angular/router';\nimport { marker as _ } from '@biesbjerg/ngx-translate-extract-marker';\nimport {\n BreadcrumbLabelLinkPair,\n CanDeactivateDetailGuard,\n createResolveData,\n detailBreadcrumb,\n OrderDetail,\n} from '@vendure/admin-ui/core';\nimport { map } from 'rxjs/operators';\n\nimport { OrderDetailComponent } from './components/order-detail/order-detail.component';\nimport { OrderEditorComponent } from './components/order-editor/order-editor.component';\nimport { OrderListComponent } from './components/order-list/order-list.component';\nimport { OrderResolver } from './providers/routing/order-resolver';\n\nexport const orderRoutes: Route[] = [\n {\n path: '',\n component: OrderListComponent,\n data: {\n breadcrumb: _('breadcrumb.orders'),\n },\n },\n {\n path: ':id',\n component: OrderDetailComponent,\n resolve: createResolveData(OrderResolver),\n canDeactivate: [CanDeactivateDetailGuard],\n data: {\n breadcrumb: orderBreadcrumb,\n },\n },\n {\n path: ':id/modify',\n component: OrderEditorComponent,\n resolve: createResolveData(OrderResolver),\n // canDeactivate: [CanDeactivateDetailGuard],\n data: {\n breadcrumb: modifyingOrderBreadcrumb,\n },\n },\n];\n\nexport function orderBreadcrumb(data: any, params: any) {\n return detailBreadcrumb<OrderDetail.Fragment>({\n entity: data.entity,\n id: params.id,\n breadcrumbKey: 'breadcrumb.orders',\n getName: order => order.code,\n route: '',\n });\n}\n\nexport function modifyingOrderBreadcrumb(data: any, params: any) {\n return orderBreadcrumb(data, params).pipe(\n map((breadcrumbs: BreadcrumbLabelLinkPair[]) => {\n const modifiedBreadcrumbs = breadcrumbs.slice();\n modifiedBreadcrumbs[0].link[0] = '../';\n modifiedBreadcrumbs[1].link[0] = '../orders';\n return modifiedBreadcrumbs.concat({ label: _('breadcrumb.modifying'), link: [''] });\n }) as any,\n );\n}\n","import { NgModule } from '@angular/core';\nimport { RouterModule } from '@angular/router';\nimport { SharedModule } 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 { 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 { 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 { 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 { RefundOrderDialogComponent } from './components/refund-order-dialog/refund-order-dialog.component';\nimport { RefundStateLabelComponent } from './components/refund-state-label/refund-state-label.component';\nimport { SettleRefundDialogComponent } from './components/settle-refund-dialog/settle-refund-dialog.component';\nimport { SimpleItemListComponent } from './components/simple-item-list/simple-item-list.component';\nimport { orderRoutes } from './order.routes';\n\n@NgModule({\n imports: [SharedModule, RouterModule.forChild(orderRoutes)],\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 ],\n})\nexport class OrderModule {}\n"]}
|
|
1
|
+
{"version":3,"sources":["../../src/lib/order/src/components/add-manual-payment-dialog/add-manual-payment-dialog.component.ts","../../node_modules/tslib/tslib.es6.js","../../src/lib/order/src/components/cancel-order-dialog/cancel-order-dialog.component.ts","../../src/lib/order/src/components/fulfill-order-dialog/fulfill-order-dialog.component.ts","../../src/lib/order/src/components/fulfillment-card/fulfillment-card.component.ts","../../src/lib/order/src/components/fulfillment-detail/fulfillment-detail.component.ts","../../src/lib/order/src/components/fulfillment-state-label/fulfillment-state-label.component.ts","../../src/lib/order/src/components/line-fulfillment/line-fulfillment.component.ts","../../src/lib/order/src/components/line-refunds/line-refunds.component.ts","../../src/lib/order/src/components/modification-detail/modification-detail.component.ts","../../src/lib/order/src/components/order-custom-fields-card/order-custom-fields-card.component.ts","../../src/lib/order/src/components/order-state-select-dialog/order-state-select-dialog.component.ts","../../src/lib/order/src/providers/order-transition.service.ts","../../src/lib/order/src/components/order-process-graph-dialog/order-process-graph-dialog.component.ts","../../src/lib/order/src/components/refund-order-dialog/refund-order-dialog.component.ts","../../src/lib/order/src/components/settle-refund-dialog/settle-refund-dialog.component.ts","../../src/lib/order/src/components/order-edits-preview-dialog/order-edits-preview-dialog.component.ts","../../src/lib/order/src/components/order-detail/order-detail.component.ts","../../src/lib/order/src/components/order-editor/order-editor.component.ts","../../src/lib/order/src/components/order-history/order-history.component.ts","../../src/lib/order/src/components/order-list/order-list.component.ts","../../src/lib/order/src/components/order-payment-card/order-payment-card.component.ts","../../src/lib/order/src/components/order-process-graph/order-process-edge.component.ts","../../src/lib/order/src/components/order-process-graph/order-process-node.component.ts","../../src/lib/order/src/components/order-process-graph/constants.ts","../../src/lib/order/src/components/order-process-graph/order-process-graph.component.ts","../../src/lib/order/src/components/order-table/order-table.component.ts","../../src/lib/order/src/components/payment-detail/payment-detail.component.ts","../../src/lib/order/src/components/payment-state-label/payment-state-label.component.ts","../../src/lib/order/src/components/refund-state-label/refund-state-label.component.ts","../../src/lib/order/src/components/simple-item-list/simple-item-list.component.ts","../../src/lib/order/src/providers/routing/order-resolver.ts","../../src/lib/order/src/order.routes.ts","../../src/lib/order/src/order.module.ts"],"names":["AddManualPaymentDialogComponent","dataService","this","form","FormGroup","method","FormControl","Validators","required","transactionId","prototype","ngOnInit","paymentMethods$","settings","getPaymentMethods","mapSingle","data","paymentMethods","items","submit","formValue","value","resolveWith","cancel","Component","args","selector","template","changeDetection","ChangeDetectionStrategy","OnPush","DataService","extendStatics","d","b","Object","setPrototypeOf","__proto__","Array","p","hasOwnProperty","call","__extends","TypeError","String","__","constructor","create","__values","o","s","Symbol","iterator","m","i","length","next","done","__read","n","r","e","ar","push","error","__spread","arguments","concat","CancelOrderDialogComponent","i18nService","_this","lineQuantities","reasons","_","map","translate","defineProperty","values","reduce","sum","order","lines","result","line","assign","_a","id","select","orderId","getLineInputs","reason","active","entries","_b","orderLineId","quantity","filter","l","I18nService","FulfillOrderDialogComponent","changeDetector","fulfillmentHandlerControl","fulfillmentQuantities","getGlobalSettings","single$","subscribe","_c","globalSettings","fulfillCount","getFulfillableCount","trackInventory","max","markForCheck","shippingMethod","getShippingMethodOperations","fulfillmentHandlers","handlers","fulfillmentHandlerDef","find","h","code","shippingLines","fulfillmentHandlerCode","fulfillmentHandler","configurableDefinitionToInstance","patchValue","globalTrackInventory","productVariant","stockOnHand","effectiveTracInventory","GlobalFlag","INHERIT","TRUE","unfulfilledCount","getUnfulfilledCount","Math","min","fulfilled","item","fulfillment","canSubmit","totalCount","total","configurableOperationValueIsValid","valid","_d","handler","toConfigurableOperationInput","ChangeDetectorRef","FulfillmentCardComponent","transitionState","EventEmitter","nextSuggestedState","nextStates","namedStateOrDefault","targetState","includes","state","nextOtherStates","suggested","Input","Output","FulfillmentDetailComponent","customFields","ngOnChanges","changes","getCustomFields","fulfillments","f","fulfillmentId","itemMap","Map","fulfillmentItemIds","orderItems","_e","_f","e_2","_g","count","get","name","set","from","key","val","isArray","isObject","toString","customFieldIsObject","customField","FulfillmentStateLabelComponent","LineFulfillmentComponent","fulfilledCount","getDeliveredCount","fulfillmentStatus","getFulfillmentStatus","getFulfillments","lineQuantity","counts","undefined","all","LineRefundsComponent","getRefundedCount","refunds","payments","payment","refundId","cancelled","refund","ModificationDetailComponent","addedItems","removedItems","getModifiedLines","added","removed","getSurcharge","surcharges","getAddedItems","getRemovedItems","modification","_item","getOrderLineAndItem","itemId","OrderCustomFieldsCardComponent","formBuilder","customFieldsConfig","customFieldValues","updateClick","editable","customFieldForm","group","field","addControl","control","onUpdateClick","emit","markAsPristine","FormBuilder","OrderStateSelectDialogComponent","message","selectedState","OrderTransitionService","modalService","notificationService","transitionToPreModifyingState","getPreModifyingState","pipe","switchMap","manualTransitionOptions","cancellable","retry","transitionToStateOrThrow","catchError","err","manuallyTransitionToState","options","fromComponent","locals","closable","size","EMPTY","Error","retryWhen","errors","delay","take","getOrderHistory","type","eq","HistoryEntryType","ORDER_STATE_TRANSITION","sort","createdAt","SortOrder","DESC","history","to","transitionToState","transitionOrderToState","__typename","transitionError","Injectable","providedIn","ModalService","NotificationService","OrderProcessGraphDialogComponent","serverConfigService","states","getOrderProcessStates","ServerConfigService","RefundOrderDialogComponent","refundShipping","adjustment","lineRef","refundCount","proratedUnitPriceWithTax","shippingWithTax","settledPayments","amount","summate","lineCanBeRefundedOrCancelled","selectedPayment","handleZeroQuantity","isRefunding","isCancelling","refundTotal","settledPaymentsTotal","refundLines","getOrderLineInput","cancelLines","shipping","paymentId","filterFn","SettleRefundDialogComponent","OrderEditResultType","OrderDetailComponent","router","route","orderTransitionService","_super","detailForm","fetchHistory","Subject","defaultStates","init","entity$","navigate","relativeTo","getCustomFieldConfig","orderLineCustomFields","history$","startWith","mapStream","nextStates$","ngOnDestroy","destroy","openStateDiagram","activeState","success","transitionToModifying","updateCustomFields","customFieldsValue","updateOrderCustomFields","entity","getOrderAddressLines","orderAddress","settlePayment","getOrder","transitionPaymentState","transitionPaymentToState","canAddFulfillment","every","hasUnsettledModifications","outstandingPaymentAmount","modifications","isSettled","getOutstandingModificationAmount","amountCovered","refundsTotal","totalWithTax","addManualPayment","outstandingAmount","currencyCode","addManualPaymentToOrder","metadata","refetchOrder","fulfillOrder","input","createFulfillment","of","mapTo","addFulfillmentToOrder","fulfillmentHandlerError","JSON","stringify","assertNever","transitionFulfillment","transitionFulfillmentToState","cancelOrRefund","isRefundable","orderHasSettledPayments","refundOrder","cancelOrder","settleRefund","addNote","event","note","isPublic","addNoteToOrder","updateNote","entry","EditNoteDialogComponent","displayPrivacyControls","noteIsPrivate","updateOrderNote","noteId","isPrivate","deleteNote","dialog","title","body","buttons","label","returnValue","res","deleteOrderNote","operations","merge","apply","setFormValues","BaseDetailComponent","Router","ActivatedRoute","OrderEditsPreviewDialogComponent","originalTotalWithTax","refundNote","modifyOrderInput","Cancel","priceDifference","Payment","Refund","refundPaymentId","PriceUnchanged","OrderEditorComponent","dryRun","addItems","adjustOrderLines","updateShippingAddress","updateBillingAddress","recalculateShipping","addedVariants","getSinglePriceValue","price","row","variantInfo","productVariantId","priceWithTax","notNullOrUndefined","addressCustomFields","snapshot","paramMap","takeUntil","destroy$","surchargeForm","description","sku","priceIncludesTax","taxRate","taxDescription","shippingAddressForm","fullName","shippingAddress","company","streetLine1","streetLine2","city","province","postalCode","countryCode","_h","phoneNumber","_j","billingAddressForm","_k","billingAddress","_l","_m","_o","_p","_q","_r","_s","_t","orderLineCustomFieldsFormArray","FormArray","formGroup","_v","e_3","_w","valueChanges","modifyRow","addItemCustomFieldsFormArray","addItemCustomFieldsForm","availableCountries$","getAvailableCountries","countries","shareReplay","_u","previousState","transitionToPriorState","canPreviewChanges","dirty","isLineModified","updateLineQuantity","splice","indexOf","updateAddedItemQuantity","trackByProductVariantId","index","getSelectedItemPrice","addItemToOrder","isMatchingAddItemRow","_x","reset","addItemSelectedVariant","removeAddedItem","removeAt","getSurchargePrices","surcharge","round","addSurcharge","removeSurcharge","previewAndModify","modifyOrder","wetRunInput","nextState","languageCode","OrderHistoryComponent","expanded","getDisplayType","ORDER_FULFILLMENT_TRANSITION","ORDER_PAYMENT_TRANSITION","ORDER_CANCELLATION","ORDER_REFUND_TRANSITION","getTimelineIcon","ORDER_NOTE","ORDER_MODIFIED","isFeatured","getFulfillment","ORDER_FULFILLMENT","getPayment","getCancelledItems","cancelledItemIds","orderItemIds","getModification","getName","administrator","firstName","lastName","customer","OrderListComponent","localStorageService","searchOrderCodeControl","searchLastNameControl","orderStates","filterPresets","config","setQueryFn","skip","getOrders","refetchOnChannelChange","orders","createQueryOptions","queryParamMap","lastFilters","setQueryParam","replaceUrl","activePreset$","qpm","distinctUntilChanged","searchTerms$","debounceTime","refresh","customFilterForm","getAll","placedAtStart","placedAtEnd","selectFilterPreset","presetName","lastCustomFilters","filters","page","applyCustomFilters","customFilters","orderCodeSearchTerm","customerNameSearchTerm","activeFilterPreset","filterConfig","in","queryParams","orderPlacedAt","between","start","end","after","before","customerLastName","contains","updatedAt","getShippingNames","shippingLine","join","BaseListComponent","LocalStorageService","OrderPaymentCardComponent","refundHasMetadata","keys","OrderProcessEdgeComponent","active$","asObservable","tap","activeTarget$","getStyle","direction","startPos","getPos","endPos","dX","abs","x","dY","y","sqrt","pow","top.px","left.px","height.px","width.px","transform","transform-origin","OrderProcessNodeComponent","elementRef","BehaviorSubject","isCancellable","cancelledState","node","origin","nativeElement","getBoundingClientRect","nodeHeight","querySelector","height","pos","ElementRef","OrderProcessGraphComponent","setActiveState$","nodes","edges","initialState","activeState$","populateNodes","ngAfterViewInit","setTimeout","populateEdges","onMouseOver","stateName","onMouseOut","getNodeFor","nodeComponents","stateNodeMap","stateNode","targets","this_1","targets_1","targets_1_1","target","targetNode","nodeCmp","e_5","toCmp","ViewChildren","HostBinding","OrderTableComponent","orderLineCustomFieldsVisible","toggleOrderLineCustomFields","getLineDiscounts","discounts","a","AdjustmentType","PROMOTION","getLineCustomFields","getPromotionLink","promotion","adjustmentSource","split","getCouponCodeForAdjustment","promotionAdjustment","promotions","couponCode","PaymentStateLabelComponent","RefundStateLabelComponent","OrderResolver","BaseEntityResolver","breadcrumb","ɵ1","orderBreadcrumb","ɵ2","modifyingOrderBreadcrumb","orderRoutes","path","component","ɵ0","resolve","createResolveData","canDeactivate","CanDeactivateDetailGuard","params","detailBreadcrumb","breadcrumbKey","breadcrumbs","modifiedBreadcrumbs","slice","link","NgModule","imports","SharedModule","RouterModule","forChild","declarations","PaymentDetailComponent","SimpleItemListComponent"],"mappings":"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","sourcesContent":["import { ChangeDetectionStrategy, Component, OnInit } from '@angular/core';\nimport { FormControl, FormGroup, Validators } from '@angular/forms';\nimport {\n CurrencyCode,\n DataService,\n Dialog,\n GetPaymentMethodList,\n ManualPaymentInput,\n} from '@vendure/admin-ui/core';\nimport { Observable } from 'rxjs';\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})\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 FormGroup({\n method: new FormControl('', Validators.required),\n transactionId: new FormControl('', Validators.required),\n });\n paymentMethods$: Observable<GetPaymentMethodList.Items[]>;\n constructor(private dataService: DataService) {}\n\n ngOnInit(): void {\n this.paymentMethods$ = this.dataService.settings\n .getPaymentMethods(999)\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","/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from) {\r\n for (var i = 0, il = from.length, j = to.length; i < il; i++, j++)\r\n to[j] = from[i];\r\n return to;\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, privateMap) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to get private field on non-instance\");\r\n }\r\n return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to set private field on non-instance\");\r\n }\r\n privateMap.set(receiver, value);\r\n return value;\r\n}\r\n","import { ChangeDetectionStrategy, Component, OnInit } from '@angular/core';\r\nimport { marker as _ } from '@biesbjerg/ngx-translate-extract-marker';\r\nimport { CancelOrderInput, Dialog, I18nService, OrderDetailFragment, OrderLineInput } from '@vendure/admin-ui/core';\r\n\r\n@Component({\r\n selector: 'vdr-cancel-order-dialog',\r\n templateUrl: './cancel-order-dialog.component.html',\r\n styleUrls: ['./cancel-order-dialog.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class CancelOrderDialogComponent implements OnInit, Dialog<CancelOrderInput> {\r\n order: OrderDetailFragment;\r\n resolveWith: (result?: CancelOrderInput) => void;\r\n reason: string;\r\n lineQuantities: { [lineId: string]: number } = {};\r\n reasons: string[] = [_('order.cancel-reason-customer-request'), _('order.cancel-reason-not-available')];\r\n\r\n get selectionCount(): number {\r\n return Object.values(this.lineQuantities).reduce((sum, n) => sum + n, 0);\r\n }\r\n\r\n constructor(private i18nService: I18nService) {\r\n this.reasons = this.reasons.map(r => this.i18nService.translate(r));\r\n }\r\n\r\n ngOnInit() {\r\n this.lineQuantities = this.order.lines.reduce((result, line) => {\r\n return { ...result, [line.id]: 0 };\r\n }, {});\r\n }\r\n\r\n select() {\r\n this.resolveWith({\r\n orderId: this.order.id,\r\n lines: this.getLineInputs(),\r\n reason: this.reason,\r\n });\r\n }\r\n\r\n cancel() {\r\n this.resolveWith();\r\n }\r\n\r\n private getLineInputs(): OrderLineInput[] | undefined {\r\n if (this.order.active) {\r\n return;\r\n }\r\n return Object.entries(this.lineQuantities)\r\n .map(([orderLineId, quantity]) => ({\r\n orderLineId,\r\n quantity,\r\n }))\r\n .filter(l => 0 < l.quantity);\r\n }\r\n}\r\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, OnInit } from '@angular/core';\nimport { FormControl } from '@angular/forms';\nimport {\n configurableDefinitionToInstance,\n ConfigurableOperation,\n ConfigurableOperationDefinition,\n configurableOperationValueIsValid,\n DataService,\n Dialog,\n FulfillOrderInput,\n GlobalFlag,\n OrderDetail,\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})\nexport class FulfillOrderDialogComponent implements Dialog<FulfillOrderInput>, OnInit {\n resolveWith: (result?: FulfillOrderInput) => void;\n fulfillmentHandlerDef: ConfigurableOperationDefinition;\n fulfillmentHandler: ConfigurableOperation;\n fulfillmentHandlerControl = new FormControl();\n fulfillmentQuantities: { [lineId: string]: { fulfillCount: number; max: number } } = {};\n\n // Provided by modalService.fromComponent() call\n order: OrderDetailFragment;\n\n constructor(private dataService: DataService, private changeDetector: ChangeDetectorRef) {}\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: OrderDetail.Lines, 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: OrderDetail.Lines): number {\n const fulfilled = line.items.reduce((sum, item) => sum + (item.fulfillment ? 1 : 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 formIsValid =\n configurableOperationValueIsValid(\n this.fulfillmentHandlerDef,\n this.fulfillmentHandlerControl.value,\n ) && this.fulfillmentHandlerControl.valid;\n return formIsValid && 0 < totalCount;\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","import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from '@angular/core';\r\nimport { Fulfillment, OrderDetail } from '@vendure/admin-ui/core';\r\n\r\n@Component({\r\n selector: 'vdr-fulfillment-card',\r\n templateUrl: './fulfillment-card.component.html',\r\n styleUrls: ['./fulfillment-card.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class FulfillmentCardComponent {\r\n @Input() fulfillment: Fulfillment.Fragment | undefined;\r\n @Input() order: OrderDetail.Fragment;\r\n @Output() transitionState = new EventEmitter<string>();\r\n\r\n nextSuggestedState(): string | undefined {\r\n if (!this.fulfillment) {\r\n return;\r\n }\r\n const { nextStates } = this.fulfillment;\r\n const namedStateOrDefault = (targetState: string) =>\r\n nextStates.includes(targetState) ? targetState : nextStates[0];\r\n switch (this.fulfillment?.state) {\r\n case 'Pending':\r\n return namedStateOrDefault('Shipped');\r\n case 'Shipped':\r\n return namedStateOrDefault('Delivered');\r\n default:\r\n return nextStates.find(s => s !== 'Cancelled');\r\n }\r\n }\r\n\r\n nextOtherStates(): string[] {\r\n if (!this.fulfillment) {\r\n return [];\r\n }\r\n const suggested = this.nextSuggestedState();\r\n return this.fulfillment.nextStates.filter(s => s !== suggested);\r\n }\r\n}\r\n","import { ChangeDetectionStrategy, Component, Input, OnChanges, SimpleChanges } from '@angular/core';\r\nimport { OrderDetail } from '@vendure/admin-ui/core';\r\nimport { isObject } from '@vendure/common/lib/shared-utils';\r\n\r\n@Component({\r\n selector: 'vdr-fulfillment-detail',\r\n templateUrl: './fulfillment-detail.component.html',\r\n styleUrls: ['./fulfillment-detail.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class FulfillmentDetailComponent implements OnChanges {\r\n @Input() fulfillmentId: string;\r\n @Input() order: OrderDetail.Fragment;\r\n\r\n customFields: Array<{ key: string; value: any }> = [];\r\n\r\n ngOnChanges(changes: SimpleChanges) {\r\n this.customFields = this.getCustomFields();\r\n }\r\n\r\n get fulfillment(): OrderDetail.Fulfillments | undefined | null {\r\n return this.order.fulfillments && this.order.fulfillments.find(f => f.id === this.fulfillmentId);\r\n }\r\n\r\n get items(): Array<{ name: string; quantity: number }> {\r\n const itemMap = new Map<string, number>();\r\n const fulfillmentItemIds = this.fulfillment?.orderItems.map(i => i.id);\r\n for (const line of this.order.lines) {\r\n for (const item of line.items) {\r\n if (fulfillmentItemIds?.includes(item.id)) {\r\n const count = itemMap.get(line.productVariant.name);\r\n if (count != null) {\r\n itemMap.set(line.productVariant.name, count + 1);\r\n } else {\r\n itemMap.set(line.productVariant.name, 1);\r\n }\r\n }\r\n }\r\n }\r\n return Array.from(itemMap.entries()).map(([name, quantity]) => ({ name, quantity }));\r\n }\r\n\r\n getCustomFields(): Array<{ key: string; value: any }> {\r\n const customFields = (this.fulfillment as any).customFields;\r\n if (customFields) {\r\n return Object.entries(customFields)\r\n .filter(([key]) => key !== '__typename')\r\n .map(([key, val]) => {\r\n const value = Array.isArray(val) || isObject(val) ? val : (val as any).toString();\r\n return { key, value };\r\n });\r\n } else {\r\n return [];\r\n }\r\n }\r\n\r\n customFieldIsObject(customField: unknown) {\r\n return Array.isArray(customField) || isObject(customField);\r\n }\r\n}\r\n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'vdr-fulfillment-state-label',\r\n templateUrl: './fulfillment-state-label.component.html',\r\n styleUrls: ['./fulfillment-state-label.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class FulfillmentStateLabelComponent {\r\n @Input() state: string;\r\n\r\n get chipColorType() {\r\n switch (this.state) {\r\n case 'Pending':\r\n case 'Shipped':\r\n return 'warning';\r\n case 'Delivered':\r\n return 'success';\r\n case 'Cancelled':\r\n return 'error';\r\n }\r\n }\r\n}\r\n","import { ChangeDetectionStrategy, Component, Input, OnChanges, SimpleChanges } from '@angular/core';\r\nimport { OrderDetail } from '@vendure/admin-ui/core';\r\nimport { unique } from '@vendure/common/lib/unique';\r\n\r\nexport type FulfillmentStatus = 'full' | 'partial' | 'none';\r\n\r\n@Component({\r\n selector: 'vdr-line-fulfillment',\r\n templateUrl: './line-fulfillment.component.html',\r\n styleUrls: ['./line-fulfillment.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class LineFulfillmentComponent implements OnChanges {\r\n @Input() line: OrderDetail.Lines;\r\n @Input() orderState: string;\r\n fulfilledCount = 0;\r\n fulfillmentStatus: FulfillmentStatus;\r\n fulfillments: Array<{ count: number; fulfillment: OrderDetail.Fulfillments }> = [];\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (this.line) {\r\n this.fulfilledCount = this.getDeliveredCount(this.line);\r\n this.fulfillmentStatus = this.getFulfillmentStatus(this.fulfilledCount, this.line.items.length);\r\n this.fulfillments = this.getFulfillments(this.line);\r\n }\r\n }\r\n\r\n /**\r\n * Returns the number of items in an OrderLine which are fulfilled.\r\n */\r\n private getDeliveredCount(line: OrderDetail.Lines): number {\r\n return line.items.reduce((sum, item) => sum + (item.fulfillment ? 1 : 0), 0);\r\n }\r\n\r\n private getFulfillmentStatus(fulfilledCount: number, lineQuantity: number): FulfillmentStatus {\r\n if (fulfilledCount === lineQuantity) {\r\n return 'full';\r\n }\r\n if (0 < fulfilledCount && fulfilledCount < lineQuantity) {\r\n return 'partial';\r\n }\r\n return 'none';\r\n }\r\n\r\n private getFulfillments(\r\n line: OrderDetail.Lines,\r\n ): Array<{ count: number; fulfillment: OrderDetail.Fulfillments }> {\r\n const counts: { [fulfillmentId: string]: number } = {};\r\n\r\n for (const item of line.items) {\r\n if (item.fulfillment) {\r\n if (counts[item.fulfillment.id] === undefined) {\r\n counts[item.fulfillment.id] = 1;\r\n } else {\r\n counts[item.fulfillment.id]++;\r\n }\r\n }\r\n }\r\n const all = line.items.reduce((fulfillments, item) => {\r\n return item.fulfillment ? [...fulfillments, item.fulfillment] : fulfillments;\r\n }, [] as OrderDetail.Fulfillments[]);\r\n\r\n return Object.entries(counts).map(([id, count]) => {\r\n return {\r\n count,\r\n // tslint:disable-next-line:no-non-null-assertion\r\n fulfillment: all.find(f => f.id === id)!,\r\n };\r\n });\r\n }\r\n}\r\n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\nimport { OrderDetail } 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})\nexport class LineRefundsComponent {\n @Input() line: OrderDetail.Lines;\n @Input() payments: OrderDetail.Payments[];\n\n getRefundedCount(): number {\n const refunds =\n this.payments?.reduce(\n (all, payment) => [...all, ...payment.refunds],\n [] as OrderDetail.Refunds[],\n ) ?? [];\n return this.line.items.filter(i => {\n if (i.refundId === null && !i.cancelled) {\n return false;\n }\n if (i.refundId) {\n const refund = refunds.find(r => r.id === i.refundId);\n if (refund?.state === 'Failed') {\n return false;\n } else {\n return true;\n }\n }\n return false;\n }).length;\n }\n}\n","import { ChangeDetectionStrategy, Component, Input, OnChanges, OnInit } from '@angular/core';\nimport { OrderDetail, 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})\nexport class ModificationDetailComponent implements OnChanges {\n @Input() order: OrderDetailFragment;\n @Input() modification: OrderDetail.Modifications;\n private addedItems = new Map<OrderDetail.Lines, number>();\n private removedItems = new Map<OrderDetail.Lines, number>();\n\n ngOnChanges(): void {\n const { added, removed } = this.getModifiedLines();\n this.addedItems = added;\n this.removedItems = removed;\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 return { name: line.productVariant.name, quantity: count };\n });\n }\n\n getRemovedItems() {\n return [...this.removedItems.entries()].map(([line, count]) => {\n return { name: line.productVariant.name, quantity: count };\n });\n }\n\n private getModifiedLines() {\n const added = new Map<OrderDetail.Lines, number>();\n const removed = new Map<OrderDetail.Lines, number>();\n for (const _item of this.modification.orderItems || []) {\n const result = this.getOrderLineAndItem(_item.id);\n if (result) {\n const { line, item } = result;\n if (item.cancelled) {\n const count = removed.get(line) ?? 0;\n removed.set(line, count + 1);\n } else {\n const count = added.get(line) ?? 0;\n added.set(line, count + 1);\n }\n }\n }\n return { added, removed };\n }\n\n private getOrderLineAndItem(itemId: string) {\n for (const line of this.order.lines) {\n const item = line.items.find(i => i.id === itemId);\n if (item) {\n return { line, item };\n }\n }\n }\n}\n","import { ChangeDetectionStrategy, Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\r\nimport { FormBuilder, FormGroup } from '@angular/forms';\r\nimport { CustomFieldConfig } from '@vendure/admin-ui/core';\r\n\r\n@Component({\r\n selector: 'vdr-order-custom-fields-card',\r\n templateUrl: './order-custom-fields-card.component.html',\r\n styleUrls: ['./order-custom-fields-card.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class OrderCustomFieldsCardComponent implements OnInit {\r\n @Input() customFieldsConfig: CustomFieldConfig[] = [];\r\n @Input() customFieldValues: { [name: string]: any } = {};\r\n @Output() updateClick = new EventEmitter<any>();\r\n customFieldForm: FormGroup;\r\n editable = false;\r\n constructor(private formBuilder: FormBuilder) {}\r\n\r\n ngOnInit() {\r\n this.customFieldForm = this.formBuilder.group({});\r\n for (const field of this.customFieldsConfig) {\r\n this.customFieldForm.addControl(\r\n field.name,\r\n this.formBuilder.control(this.customFieldValues[field.name]),\r\n );\r\n }\r\n }\r\n\r\n onUpdateClick() {\r\n this.updateClick.emit(this.customFieldForm.value);\r\n this.customFieldForm.markAsPristine();\r\n this.editable = false;\r\n }\r\n}\r\n","import { ChangeDetectionStrategy, Component } from '@angular/core';\nimport { Dialog } from '@vendure/admin-ui/core';\n\n@Component({\n selector: 'vdr-order-state-select-dialog',\n templateUrl: './order-state-select-dialog.component.html',\n styleUrls: ['./order-state-select-dialog.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class OrderStateSelectDialogComponent implements Dialog<string> {\n resolveWith: (result?: string) => void;\n nextStates: string[] = [];\n message = '';\n cancellable: boolean;\n selectedState = '';\n\n select() {\n if (this.selectedState) {\n this.resolveWith(this.selectedState);\n }\n }\n\n cancel() {\n this.resolveWith();\n }\n}\n","import { Injectable } from '@angular/core';\nimport { marker as _ } from '@biesbjerg/ngx-translate-extract-marker';\nimport {\n DataService,\n HistoryEntryType,\n I18nService,\n ModalService,\n NotificationService,\n SortOrder,\n} from '@vendure/admin-ui/core';\nimport { EMPTY } from 'rxjs';\nimport { catchError, delay, map, retryWhen, switchMap, take } from 'rxjs/operators';\n\nimport { OrderStateSelectDialogComponent } from '../components/order-state-select-dialog/order-state-select-dialog.component';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class OrderTransitionService {\n constructor(\n private dataService: DataService,\n private modalService: ModalService,\n private notificationService: NotificationService,\n private i18nService: I18nService,\n ) {}\n\n /**\n * Attempts to transition the Order to the last state it was in before it was transitioned\n * to the \"Modifying\" state. If this fails, a manual prompt is used.\n */\n transitionToPreModifyingState(orderId: string, nextStates: string[]) {\n return this.getPreModifyingState(orderId).pipe(\n switchMap(state => {\n const manualTransitionOptions = {\n orderId,\n nextStates,\n message: this.i18nService.translate(\n _('order.unable-to-transition-to-state-try-another'),\n { state },\n ),\n cancellable: false,\n retry: 10,\n };\n if (state) {\n return this.transitionToStateOrThrow(orderId, state).pipe(\n catchError(err => this.manuallyTransitionToState(manualTransitionOptions)),\n );\n } else {\n return this.manuallyTransitionToState(manualTransitionOptions);\n }\n }),\n );\n }\n\n /**\n * Displays a modal for manually selecting the next state.\n */\n manuallyTransitionToState(options: {\n orderId: string;\n nextStates: string[];\n message: string;\n cancellable: boolean;\n retry: number;\n }) {\n return this.modalService\n .fromComponent(OrderStateSelectDialogComponent, {\n locals: {\n nextStates: options.nextStates,\n cancellable: options.cancellable,\n message: options.message,\n },\n closable: false,\n size: 'md',\n })\n .pipe(\n switchMap(result => {\n if (result) {\n return this.transitionToStateOrThrow(options.orderId, result);\n } else {\n if (!options.cancellable) {\n throw new Error(`An order state must be selected`);\n } else {\n return EMPTY;\n }\n }\n }),\n retryWhen(errors => errors.pipe(delay(2000), take(options.retry))),\n );\n }\n\n /**\n * Attempts to get the last state the Order was in before it was transitioned\n * to the \"Modifying\" state.\n */\n private getPreModifyingState(orderId: string) {\n return this.dataService.order\n .getOrderHistory(orderId, {\n filter: {\n type: {\n eq: HistoryEntryType.ORDER_STATE_TRANSITION,\n },\n },\n sort: {\n createdAt: SortOrder.DESC,\n },\n })\n .mapSingle(result => result.order)\n .pipe(\n map(result => {\n const item = result?.history.items.find(i => i.data.to === 'Modifying');\n if (item) {\n return item.data.from as string;\n } else {\n return;\n }\n }),\n );\n }\n\n private transitionToStateOrThrow(orderId: string, state: string) {\n return this.dataService.order.transitionToState(orderId, state).pipe(\n map(({ transitionOrderToState }) => {\n switch (transitionOrderToState?.__typename) {\n case 'Order':\n return transitionOrderToState?.state;\n case 'OrderStateTransitionError':\n this.notificationService.error(transitionOrderToState?.transitionError);\n throw new Error(transitionOrderToState?.transitionError);\n }\n }),\n );\n }\n}\n","import { ChangeDetectionStrategy, Component, OnInit } from '@angular/core';\r\nimport {\r\n CancelOrderInput,\r\n DataService,\r\n Dialog,\r\n OrderProcessState,\r\n ServerConfigService,\r\n} from '@vendure/admin-ui/core';\r\nimport { Observable } from 'rxjs';\r\n\r\n@Component({\r\n selector: 'vdr-order-process-graph-dialog',\r\n templateUrl: './order-process-graph-dialog.component.html',\r\n styleUrls: ['./order-process-graph-dialog.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class OrderProcessGraphDialogComponent implements OnInit, Dialog<void> {\r\n activeState: string;\r\n states: OrderProcessState[] = [];\r\n constructor(private serverConfigService: ServerConfigService) {}\r\n\r\n ngOnInit(): void {\r\n this.states = this.serverConfigService.getOrderProcessStates();\r\n }\r\n\r\n resolveWith: (result: void | undefined) => void;\r\n}\r\n","import { ChangeDetectionStrategy, Component, OnInit } from '@angular/core';\nimport { marker as _ } from '@biesbjerg/ngx-translate-extract-marker';\nimport {\n CancelOrderInput,\n Dialog,\n I18nService,\n OrderDetail,\n OrderDetailFragment,\n OrderLineInput,\n RefundOrderInput,\n} from '@vendure/admin-ui/core';\nimport { summate } from '@vendure/common/lib/shared-utils';\n\ntype SelectionLine = { quantity: number; refund: boolean; 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})\nexport class RefundOrderDialogComponent\n implements OnInit, Dialog<{ cancel: CancelOrderInput; refund: RefundOrderInput }> {\n order: OrderDetailFragment;\n resolveWith: (result?: { cancel: CancelOrderInput; refund: RefundOrderInput }) => void;\n reason: string;\n settledPayments: OrderDetail.Payments[];\n selectedPayment: OrderDetail.Payments;\n lineQuantities: { [lineId: string]: SelectionLine } = {};\n refundShipping = false;\n adjustment = 0;\n reasons: string[] = [_('order.refund-reason-customer-request'), _('order.refund-reason-not-available')];\n\n constructor(private i18nService: I18nService) {\n this.reasons = this.reasons.map(r => this.i18nService.translate(r));\n }\n\n get refundTotal(): number {\n const itemTotal = this.order.lines.reduce((total, line) => {\n const lineRef = this.lineQuantities[line.id];\n const refundCount = (lineRef.refund && lineRef.quantity) || 0;\n return total + line.proratedUnitPriceWithTax * refundCount;\n }, 0);\n return itemTotal + (this.refundShipping ? this.order.shippingWithTax : 0) + this.adjustment;\n }\n\n get settledPaymentsTotal(): number {\n return this.settledPayments\n .map(payment => {\n const paymentTotal = payment.amount;\n const alreadyRefundedTotal = summate(\n payment.refunds.filter(r => r.state !== 'Failed') as Array<Required<OrderDetail.Refunds>>,\n 'total',\n );\n return paymentTotal - alreadyRefundedTotal;\n })\n .reduce((sum, amount) => sum + amount, 0);\n }\n\n lineCanBeRefundedOrCancelled(line: OrderDetail.Lines): boolean {\n const refunds =\n this.order.payments?.reduce(\n (all, payment) => [...all, ...payment.refunds],\n [] as OrderDetail.Refunds[],\n ) ?? [];\n\n const refundable = line.items.filter(i => {\n if (i.cancelled) {\n return false;\n }\n if (i.refundId == null) {\n return true;\n }\n const refund = refunds.find(r => r.id === i.refundId);\n return refund?.state === 'Failed';\n });\n return 0 < refundable.length;\n }\n\n ngOnInit() {\n this.lineQuantities = this.order.lines.reduce((result, line) => {\n return {\n ...result,\n [line.id]: {\n quantity: 0,\n refund: false,\n cancel: false,\n },\n };\n }, {});\n this.settledPayments = (this.order.payments || []).filter(p => p.state === 'Settled');\n if (this.settledPayments.length) {\n this.selectedPayment = this.settledPayments[0];\n }\n }\n\n handleZeroQuantity(line?: SelectionLine) {\n if (line?.quantity === 0) {\n line.cancel = false;\n line.refund = false;\n }\n }\n\n isRefunding(): boolean {\n const result = Object.values(this.lineQuantities).reduce((isRefunding, line) => {\n return isRefunding || (0 < line.quantity && line.refund);\n }, false);\n return result;\n }\n\n isCancelling(): boolean {\n const result = Object.values(this.lineQuantities).reduce((isCancelling, line) => {\n return isCancelling || (0 < line.quantity && line.cancel);\n }, false);\n return result;\n }\n\n canSubmit(): boolean {\n if (this.isRefunding()) {\n return !!(\n this.selectedPayment &&\n this.reason &&\n 0 < this.refundTotal &&\n this.refundTotal <= this.settledPaymentsTotal\n );\n } else if (this.isCancelling()) {\n return !!this.reason;\n }\n return false;\n }\n\n select() {\n const payment = this.selectedPayment;\n if (payment) {\n const refundLines = this.getOrderLineInput(line => line.refund);\n const cancelLines = this.getOrderLineInput(line => line.cancel);\n\n this.resolveWith({\n refund: {\n lines: refundLines,\n reason: this.reason,\n shipping: this.refundShipping ? this.order.shipping : 0,\n adjustment: this.adjustment,\n paymentId: payment.id,\n },\n cancel: {\n lines: cancelLines,\n orderId: this.order.id,\n reason: this.reason,\n },\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","import { ChangeDetectionStrategy, Component } from '@angular/core';\r\n\r\nimport { OrderDetail } from '@vendure/admin-ui/core';\r\nimport { Dialog } from '@vendure/admin-ui/core';\r\n\r\n@Component({\r\n selector: 'vdr-settle-refund-dialog',\r\n templateUrl: './settle-refund-dialog.component.html',\r\n styleUrls: ['./settle-refund-dialog.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class SettleRefundDialogComponent implements Dialog<string> {\r\n resolveWith: (result?: string) => void;\r\n transactionId = '';\r\n refund: OrderDetail.Refunds;\r\n\r\n submit() {\r\n this.resolveWith(this.transactionId);\r\n }\r\n\r\n cancel() {\r\n this.resolveWith();\r\n }\r\n}\r\n","import { ChangeDetectionStrategy, Component, OnInit } from '@angular/core';\nimport { CustomFieldConfig, Dialog, ModifyOrderInput, OrderDetail } from '@vendure/admin-ui/core';\n\nexport enum OrderEditResultType {\n Refund,\n Payment,\n PriceUnchanged,\n Cancel,\n}\n\ninterface OrderEditsRefundResult {\n result: OrderEditResultType.Refund;\n refundPaymentId: string;\n refundNote?: string;\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})\nexport class OrderEditsPreviewDialogComponent implements OnInit, Dialog<OrderEditResult> {\n // Passed in via the modalService\n order: OrderDetail.Fragment;\n originalTotalWithTax: number;\n orderLineCustomFields: CustomFieldConfig[];\n modifyOrderInput: ModifyOrderInput;\n\n selectedPayment?: OrderDetail.Payments;\n refundNote: string;\n resolveWith: (result?: OrderEditResult) => void;\n\n get priceDifference(): number {\n return this.order.totalWithTax - this.originalTotalWithTax;\n }\n\n ngOnInit() {\n this.refundNote = this.modifyOrderInput.note || '';\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 // tslint:disable-next-line:no-non-null-assertion\n refundPaymentId: this.selectedPayment!.id,\n refundNote: this.refundNote,\n });\n } else {\n this.resolveWith({\n result: OrderEditResultType.PriceUnchanged,\n });\n }\n }\n}\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, OnDestroy, OnInit } from '@angular/core';\r\nimport { FormGroup } from '@angular/forms';\r\nimport { ActivatedRoute, Router } from '@angular/router';\r\nimport { marker as _ } from '@biesbjerg/ngx-translate-extract-marker';\r\nimport {\r\n BaseDetailComponent,\r\n CancelOrder,\r\n CustomFieldConfig,\r\n DataService,\r\n EditNoteDialogComponent,\r\n GetOrderHistory,\r\n GetOrderQuery,\r\n HistoryEntry,\r\n HistoryEntryType,\r\n ModalService,\r\n NotificationService,\r\n Order,\r\n OrderDetail,\r\n OrderDetailFragment,\r\n OrderLineFragment,\r\n Refund,\r\n RefundOrder,\r\n ServerConfigService,\r\n SortOrder,\r\n} from '@vendure/admin-ui/core';\r\nimport { pick } from '@vendure/common/lib/pick';\r\nimport { assertNever, summate } from '@vendure/common/lib/shared-utils';\r\nimport { EMPTY, merge, Observable, of, Subject } from 'rxjs';\r\nimport { map, mapTo, startWith, switchMap, take } from 'rxjs/operators';\r\n\r\nimport { OrderTransitionService } from '../../providers/order-transition.service';\r\nimport { AddManualPaymentDialogComponent } from '../add-manual-payment-dialog/add-manual-payment-dialog.component';\r\nimport { CancelOrderDialogComponent } from '../cancel-order-dialog/cancel-order-dialog.component';\r\nimport { FulfillOrderDialogComponent } from '../fulfill-order-dialog/fulfill-order-dialog.component';\r\nimport { OrderProcessGraphDialogComponent } from '../order-process-graph-dialog/order-process-graph-dialog.component';\r\nimport { RefundOrderDialogComponent } from '../refund-order-dialog/refund-order-dialog.component';\r\nimport { SettleRefundDialogComponent } from '../settle-refund-dialog/settle-refund-dialog.component';\r\n\r\n@Component({\r\n selector: 'vdr-order-detail',\r\n templateUrl: './order-detail.component.html',\r\n styleUrls: ['./order-detail.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class OrderDetailComponent\r\n extends BaseDetailComponent<OrderDetail.Fragment>\r\n implements OnInit, OnDestroy {\r\n detailForm = new FormGroup({});\r\n history$: Observable<GetOrderHistory.Items[] | undefined>;\r\n nextStates$: Observable<string[]>;\r\n fetchHistory = new Subject<void>();\r\n customFields: CustomFieldConfig[];\r\n orderLineCustomFields: CustomFieldConfig[];\r\n private readonly defaultStates = [\r\n 'AddingItems',\r\n 'ArrangingPayment',\r\n 'PaymentAuthorized',\r\n 'PaymentSettled',\r\n 'PartiallyShipped',\r\n 'Shipped',\r\n 'PartiallyDelivered',\r\n 'Delivered',\r\n 'Cancelled',\r\n 'Modifying',\r\n 'ArrangingAdditionalPayment',\r\n ];\r\n\r\n constructor(\r\n router: Router,\r\n route: ActivatedRoute,\r\n serverConfigService: ServerConfigService,\r\n private changeDetector: ChangeDetectorRef,\r\n protected dataService: DataService,\r\n private notificationService: NotificationService,\r\n private modalService: ModalService,\r\n private orderTransitionService: OrderTransitionService,\r\n ) {\r\n super(route, router, serverConfigService, dataService);\r\n }\r\n\r\n ngOnInit() {\r\n this.init();\r\n this.entity$.pipe(take(1)).subscribe(order => {\r\n if (order.state === 'Modifying') {\r\n this.router.navigate(['./', 'modify'], { relativeTo: this.route });\r\n }\r\n });\r\n this.customFields = this.getCustomFieldConfig('Order');\r\n this.orderLineCustomFields = this.getCustomFieldConfig('OrderLine');\r\n this.history$ = this.fetchHistory.pipe(\r\n startWith(null),\r\n switchMap(() => {\r\n return this.dataService.order\r\n .getOrderHistory(this.id, {\r\n sort: {\r\n createdAt: SortOrder.DESC,\r\n },\r\n })\r\n .mapStream(data => data.order?.history.items);\r\n }),\r\n );\r\n this.nextStates$ = this.entity$.pipe(\r\n map(order => {\r\n const isInCustomState = !this.defaultStates.includes(order.state);\r\n return isInCustomState\r\n ? order.nextStates\r\n : order.nextStates.filter(s => !this.defaultStates.includes(s));\r\n }),\r\n );\r\n }\r\n\r\n ngOnDestroy() {\r\n this.destroy();\r\n }\r\n\r\n openStateDiagram() {\r\n this.entity$\r\n .pipe(\r\n take(1),\r\n switchMap(order =>\r\n this.modalService.fromComponent(OrderProcessGraphDialogComponent, {\r\n closable: true,\r\n locals: {\r\n activeState: order.state,\r\n },\r\n }),\r\n ),\r\n )\r\n .subscribe();\r\n }\r\n\r\n transitionToState(state: string) {\r\n this.dataService.order.transitionToState(this.id, state).subscribe(({ transitionOrderToState }) => {\r\n switch (transitionOrderToState?.__typename) {\r\n case 'Order':\r\n this.notificationService.success(_('order.transitioned-to-state-success'), { state });\r\n this.fetchHistory.next();\r\n break;\r\n case 'OrderStateTransitionError':\r\n this.notificationService.error(transitionOrderToState.transitionError);\r\n }\r\n });\r\n }\r\n\r\n manuallyTransitionToState(order: OrderDetailFragment) {\r\n this.orderTransitionService\r\n .manuallyTransitionToState({\r\n orderId: order.id,\r\n nextStates: order.nextStates,\r\n cancellable: true,\r\n message: _('order.manually-transition-to-state-message'),\r\n retry: 0,\r\n })\r\n .subscribe();\r\n }\r\n\r\n transitionToModifying() {\r\n this.dataService.order\r\n .transitionToState(this.id, 'Modifying')\r\n .subscribe(({ transitionOrderToState }) => {\r\n switch (transitionOrderToState?.__typename) {\r\n case 'Order':\r\n this.router.navigate(['./modify'], { relativeTo: this.route });\r\n break;\r\n case 'OrderStateTransitionError':\r\n this.notificationService.error(transitionOrderToState.transitionError);\r\n }\r\n });\r\n }\r\n\r\n updateCustomFields(customFieldsValue: any) {\r\n this.dataService.order\r\n .updateOrderCustomFields({\r\n id: this.id,\r\n customFields: customFieldsValue,\r\n })\r\n .subscribe(() => {\r\n this.notificationService.success(_('common.notify-update-success'), { entity: 'Order' });\r\n });\r\n }\r\n\r\n getOrderAddressLines(orderAddress?: { [key: string]: string }): string[] {\r\n if (!orderAddress) {\r\n return [];\r\n }\r\n return Object.values(orderAddress)\r\n .filter(val => val !== 'OrderAddress')\r\n .filter(line => !!line);\r\n }\r\n\r\n settlePayment(payment: OrderDetail.Payments) {\r\n this.dataService.order.settlePayment(payment.id).subscribe(({ settlePayment }) => {\r\n switch (settlePayment.__typename) {\r\n case 'Payment':\r\n if (settlePayment.state === 'Settled') {\r\n this.notificationService.success(_('order.settle-payment-success'));\r\n } else {\r\n this.notificationService.error(_('order.settle-payment-error'));\r\n }\r\n this.dataService.order.getOrder(this.id).single$.subscribe();\r\n this.fetchHistory.next();\r\n break;\r\n case 'OrderStateTransitionError':\r\n case 'PaymentStateTransitionError':\r\n case 'SettlePaymentError':\r\n this.notificationService.error(settlePayment.message);\r\n }\r\n });\r\n }\r\n\r\n transitionPaymentState({ payment, state }: { payment: OrderDetail.Payments; state: string }) {\r\n this.dataService.order\r\n .transitionPaymentToState(payment.id, state)\r\n .subscribe(({ transitionPaymentToState }) => {\r\n switch (transitionPaymentToState.__typename) {\r\n case 'Payment':\r\n this.notificationService.success(_('order.transitioned-payment-to-state-success'), {\r\n state,\r\n });\r\n this.dataService.order.getOrder(this.id).single$.subscribe();\r\n this.fetchHistory.next();\r\n break;\r\n case 'PaymentStateTransitionError':\r\n this.notificationService.error(transitionPaymentToState.message);\r\n break;\r\n }\r\n });\r\n }\r\n\r\n canAddFulfillment(order: OrderDetail.Fragment): boolean {\r\n const allItemsFulfilled = order.lines\r\n .reduce((items, line) => [...items, ...line.items], [] as OrderLineFragment['items'])\r\n .every(item => !!item.fulfillment);\r\n return (\r\n !allItemsFulfilled &&\r\n !this.hasUnsettledModifications(order) &&\r\n this.outstandingPaymentAmount(order) === 0 &&\r\n (order.nextStates.includes('Shipped') ||\r\n order.nextStates.includes('PartiallyShipped') ||\r\n order.nextStates.includes('Delivered'))\r\n );\r\n }\r\n\r\n hasUnsettledModifications(order: OrderDetailFragment): boolean {\r\n return 0 < order.modifications.filter(m => !m.isSettled).length;\r\n }\r\n\r\n getOutstandingModificationAmount(order: OrderDetailFragment): number {\r\n return summate(\r\n order.modifications.filter(m => !m.isSettled),\r\n 'priceChange',\r\n );\r\n }\r\n\r\n outstandingPaymentAmount(order: OrderDetailFragment): number {\r\n const paymentIsValid = (p: OrderDetail.Payments): boolean =>\r\n p.state !== 'Cancelled' && p.state !== 'Declined' && p.state !== 'Error';\r\n\r\n let amountCovered = 0;\r\n for (const payment of order.payments?.filter(paymentIsValid) ?? []) {\r\n const refunds = payment.refunds.filter(r => r.state !== 'Failed') ?? [];\r\n const refundsTotal = summate(refunds as Array<Required<Refund>>, 'total');\r\n amountCovered += payment.amount - refundsTotal;\r\n }\r\n return order.totalWithTax - amountCovered;\r\n }\r\n\r\n addManualPayment(order: OrderDetailFragment) {\r\n this.modalService\r\n .fromComponent(AddManualPaymentDialogComponent, {\r\n closable: true,\r\n locals: {\r\n outstandingAmount: this.outstandingPaymentAmount(order),\r\n currencyCode: order.currencyCode,\r\n },\r\n })\r\n .pipe(\r\n switchMap(result => {\r\n if (result) {\r\n return this.dataService.order.addManualPaymentToOrder({\r\n orderId: this.id,\r\n transactionId: result.transactionId,\r\n method: result.method,\r\n metadata: result.metadata || {},\r\n });\r\n } else {\r\n return EMPTY;\r\n }\r\n }),\r\n switchMap(({ addManualPaymentToOrder }) => {\r\n switch (addManualPaymentToOrder.__typename) {\r\n case 'Order':\r\n this.notificationService.success(_('order.add-payment-to-order-success'));\r\n return this.orderTransitionService.transitionToPreModifyingState(\r\n order.id,\r\n order.nextStates,\r\n );\r\n case 'ManualPaymentStateError':\r\n this.notificationService.error(addManualPaymentToOrder.message);\r\n return EMPTY;\r\n default:\r\n return EMPTY;\r\n }\r\n }),\r\n )\r\n .subscribe(result => {\r\n if (result) {\r\n this.refetchOrder({ result });\r\n }\r\n });\r\n }\r\n\r\n fulfillOrder() {\r\n this.entity$\r\n .pipe(\r\n take(1),\r\n switchMap(order => {\r\n return this.modalService.fromComponent(FulfillOrderDialogComponent, {\r\n size: 'xl',\r\n locals: {\r\n order,\r\n },\r\n });\r\n }),\r\n switchMap(input => {\r\n if (input) {\r\n return this.dataService.order.createFulfillment(input);\r\n } else {\r\n return of(undefined);\r\n }\r\n }),\r\n switchMap(result => this.refetchOrder(result).pipe(mapTo(result))),\r\n )\r\n .subscribe(result => {\r\n if (result) {\r\n const { addFulfillmentToOrder } = result;\r\n switch (addFulfillmentToOrder.__typename) {\r\n case 'Fulfillment':\r\n this.notificationService.success(_('order.create-fulfillment-success'));\r\n break;\r\n case 'EmptyOrderLineSelectionError':\r\n case 'InsufficientStockOnHandError':\r\n case 'ItemsAlreadyFulfilledError':\r\n case 'InvalidFulfillmentHandlerError':\r\n this.notificationService.error(addFulfillmentToOrder.message);\r\n break;\r\n case 'FulfillmentStateTransitionError':\r\n this.notificationService.error(addFulfillmentToOrder.transitionError);\r\n break;\r\n case 'CreateFulfillmentError':\r\n this.notificationService.error(addFulfillmentToOrder.fulfillmentHandlerError);\r\n break;\r\n case undefined:\r\n this.notificationService.error(JSON.stringify(addFulfillmentToOrder));\r\n break;\r\n default:\r\n assertNever(addFulfillmentToOrder);\r\n }\r\n }\r\n });\r\n }\r\n\r\n transitionFulfillment(id: string, state: string) {\r\n this.dataService.order\r\n .transitionFulfillmentToState(id, state)\r\n .pipe(switchMap(result => this.refetchOrder(result)))\r\n .subscribe(() => {\r\n this.notificationService.success(_('order.successfully-updated-fulfillment'));\r\n });\r\n }\r\n\r\n cancelOrRefund(order: OrderDetail.Fragment) {\r\n const isRefundable = this.orderHasSettledPayments(order);\r\n if (order.state === 'PaymentAuthorized' || order.active === true || !isRefundable) {\r\n this.cancelOrder(order);\r\n } else {\r\n this.refundOrder(order);\r\n }\r\n }\r\n\r\n settleRefund(refund: OrderDetail.Refunds) {\r\n this.modalService\r\n .fromComponent(SettleRefundDialogComponent, {\r\n size: 'md',\r\n locals: {\r\n refund,\r\n },\r\n })\r\n .pipe(\r\n switchMap(transactionId => {\r\n if (transactionId) {\r\n return this.dataService.order.settleRefund(\r\n {\r\n transactionId,\r\n id: refund.id,\r\n },\r\n this.id,\r\n );\r\n } else {\r\n return of(undefined);\r\n }\r\n }),\r\n // switchMap(result => this.refetchOrder(result)),\r\n )\r\n .subscribe(result => {\r\n if (result) {\r\n this.notificationService.success(_('order.settle-refund-success'));\r\n }\r\n });\r\n }\r\n\r\n addNote(event: { note: string; isPublic: boolean }) {\r\n const { note, isPublic } = event;\r\n this.dataService.order\r\n .addNoteToOrder({\r\n id: this.id,\r\n note,\r\n isPublic,\r\n })\r\n .pipe(switchMap(result => this.refetchOrder(result)))\r\n .subscribe(result => {\r\n this.notificationService.success(_('common.notify-create-success'), {\r\n entity: 'Note',\r\n });\r\n });\r\n }\r\n\r\n updateNote(entry: HistoryEntry) {\r\n this.modalService\r\n .fromComponent(EditNoteDialogComponent, {\r\n closable: true,\r\n locals: {\r\n displayPrivacyControls: true,\r\n note: entry.data.note,\r\n noteIsPrivate: !entry.isPublic,\r\n },\r\n })\r\n .pipe(\r\n switchMap(result => {\r\n if (result) {\r\n return this.dataService.order.updateOrderNote({\r\n noteId: entry.id,\r\n isPublic: !result.isPrivate,\r\n note: result.note,\r\n });\r\n } else {\r\n return EMPTY;\r\n }\r\n }),\r\n )\r\n .subscribe(result => {\r\n this.fetchHistory.next();\r\n this.notificationService.success(_('common.notify-update-success'), {\r\n entity: 'Note',\r\n });\r\n });\r\n }\r\n\r\n deleteNote(entry: HistoryEntry) {\r\n return this.modalService\r\n .dialog({\r\n title: _('common.confirm-delete-note'),\r\n body: entry.data.note,\r\n buttons: [\r\n { type: 'secondary', label: _('common.cancel') },\r\n { type: 'danger', label: _('common.delete'), returnValue: true },\r\n ],\r\n })\r\n .pipe(switchMap(res => (res ? this.dataService.order.deleteOrderNote(entry.id) : EMPTY)))\r\n .subscribe(() => {\r\n this.fetchHistory.next();\r\n this.notificationService.success(_('common.notify-delete-success'), {\r\n entity: 'Note',\r\n });\r\n });\r\n }\r\n\r\n orderHasSettledPayments(order: OrderDetail.Fragment): boolean {\r\n return !!order.payments?.find(p => p.state === 'Settled');\r\n }\r\n\r\n private cancelOrder(order: OrderDetail.Fragment) {\r\n this.modalService\r\n .fromComponent(CancelOrderDialogComponent, {\r\n size: 'xl',\r\n locals: {\r\n order,\r\n },\r\n })\r\n .pipe(\r\n switchMap(input => {\r\n if (input) {\r\n return this.dataService.order.cancelOrder(input);\r\n } else {\r\n return of(undefined);\r\n }\r\n }),\r\n switchMap(result => this.refetchOrder(result)),\r\n )\r\n .subscribe(result => {\r\n if (result) {\r\n this.notificationService.success(_('order.cancelled-order-success'));\r\n }\r\n });\r\n }\r\n\r\n private refundOrder(order: OrderDetail.Fragment) {\r\n this.modalService\r\n .fromComponent(RefundOrderDialogComponent, {\r\n size: 'xl',\r\n locals: {\r\n order,\r\n },\r\n })\r\n .pipe(\r\n switchMap(input => {\r\n if (!input) {\r\n return of(undefined);\r\n }\r\n\r\n const operations: Array<\r\n Observable<RefundOrder.RefundOrder | CancelOrder.CancelOrder>\r\n > = [];\r\n if (input.refund.lines.length) {\r\n operations.push(\r\n this.dataService.order\r\n .refundOrder(input.refund)\r\n .pipe(map(res => res.refundOrder)),\r\n );\r\n }\r\n if (input.cancel.lines?.length) {\r\n operations.push(\r\n this.dataService.order\r\n .cancelOrder(input.cancel)\r\n .pipe(map(res => res.cancelOrder)),\r\n );\r\n }\r\n return merge(...operations);\r\n }),\r\n )\r\n .subscribe(result => {\r\n if (result) {\r\n switch (result.__typename) {\r\n case 'Order':\r\n this.refetchOrder(result).subscribe();\r\n this.notificationService.success(_('order.cancelled-order-success'));\r\n break;\r\n case 'Refund':\r\n this.refetchOrder(result).subscribe();\r\n if (result.state === 'Failed') {\r\n this.notificationService.error(_('order.refund-order-failed'));\r\n } else {\r\n this.notificationService.success(_('order.refund-order-success'));\r\n }\r\n break;\r\n case 'QuantityTooGreatError':\r\n case 'MultipleOrderError':\r\n case 'OrderStateTransitionError':\r\n case 'CancelActiveOrderError':\r\n case 'EmptyOrderLineSelectionError':\r\n case 'AlreadyRefundedError':\r\n case 'NothingToRefundError':\r\n case 'PaymentOrderMismatchError':\r\n case 'RefundOrderStateError':\r\n case 'RefundStateTransitionError':\r\n this.notificationService.error(result.message);\r\n break;\r\n }\r\n }\r\n });\r\n }\r\n\r\n private refetchOrder(result: object | undefined): Observable<GetOrderQuery | undefined> {\r\n this.fetchHistory.next();\r\n if (result) {\r\n return this.dataService.order.getOrder(this.id).single$;\r\n } else {\r\n return of(undefined);\r\n }\r\n }\r\n\r\n protected setFormValues(entity: Order.Fragment): void {\r\n // empty\r\n }\r\n}\r\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, OnDestroy, OnInit } from '@angular/core';\r\nimport { FormArray, FormControl, FormGroup, Validators } from '@angular/forms';\r\nimport { ActivatedRoute, Router } from '@angular/router';\r\nimport {\r\n AddItemInput,\r\n AdjustOrderLineInput,\r\n BaseDetailComponent,\r\n CustomFieldConfig,\r\n DataService,\r\n ErrorResult,\r\n GetAvailableCountries,\r\n HistoryEntryType,\r\n LanguageCode,\r\n ModalService,\r\n ModifyOrderInput,\r\n NotificationService,\r\n OrderDetail,\r\n ProductSelectorSearch,\r\n ServerConfigService,\r\n SortOrder,\r\n SurchargeInput,\r\n} from '@vendure/admin-ui/core';\r\nimport { assertNever, notNullOrUndefined } from '@vendure/common/lib/shared-utils';\r\nimport { EMPTY, Observable, of } from 'rxjs';\r\nimport { mapTo, shareReplay, switchMap, takeUntil } from 'rxjs/operators';\r\n\r\nimport { OrderTransitionService } from '../../providers/order-transition.service';\r\nimport {\r\n OrderEditResultType,\r\n OrderEditsPreviewDialogComponent,\r\n} from '../order-edits-preview-dialog/order-edits-preview-dialog.component';\r\n\r\ninterface AddedLine {\r\n productVariantId: string;\r\n productAsset?: ProductSelectorSearch.ProductAsset | null;\r\n productVariantName: string;\r\n sku: string;\r\n priceWithTax: number;\r\n price: number;\r\n quantity: number;\r\n}\r\n\r\ntype ModifyOrderData = Omit<ModifyOrderInput, 'addItems' | 'adjustOrderLines'> & {\r\n addItems: Array<AddItemInput & { customFields?: any }>;\r\n adjustOrderLines: Array<AdjustOrderLineInput & { customFields?: any }>;\r\n};\r\n\r\n@Component({\r\n selector: 'vdr-order-editor',\r\n templateUrl: './order-editor.component.html',\r\n styleUrls: ['./order-editor.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class OrderEditorComponent\r\n extends BaseDetailComponent<OrderDetail.Fragment>\r\n implements OnInit, OnDestroy {\r\n availableCountries$: Observable<GetAvailableCountries.Items[]>;\r\n addressCustomFields: CustomFieldConfig[];\r\n detailForm = new FormGroup({});\r\n orderLineCustomFieldsFormArray: FormArray;\r\n addItemCustomFieldsFormArray: FormArray;\r\n addItemCustomFieldsForm: FormGroup;\r\n addItemSelectedVariant: ProductSelectorSearch.Items | undefined;\r\n orderLineCustomFields: CustomFieldConfig[];\r\n modifyOrderInput: ModifyOrderData = {\r\n dryRun: true,\r\n orderId: '',\r\n addItems: [],\r\n adjustOrderLines: [],\r\n surcharges: [],\r\n note: '',\r\n updateShippingAddress: {},\r\n updateBillingAddress: {},\r\n };\r\n surchargeForm: FormGroup;\r\n shippingAddressForm: FormGroup;\r\n billingAddressForm: FormGroup;\r\n note = '';\r\n recalculateShipping = true;\r\n previousState: string;\r\n private addedVariants = new Map<string, ProductSelectorSearch.Items>();\r\n\r\n constructor(\r\n router: Router,\r\n route: ActivatedRoute,\r\n serverConfigService: ServerConfigService,\r\n private changeDetector: ChangeDetectorRef,\r\n protected dataService: DataService,\r\n private notificationService: NotificationService,\r\n private modalService: ModalService,\r\n private orderTransitionService: OrderTransitionService,\r\n ) {\r\n super(route, router, serverConfigService, dataService);\r\n }\r\n\r\n get addedLines(): AddedLine[] {\r\n const getSinglePriceValue = (price: ProductSelectorSearch.Price) =>\r\n price.__typename === 'SinglePrice' ? price.value : 0;\r\n return (this.modifyOrderInput.addItems || [])\r\n .map(row => {\r\n const variantInfo = this.addedVariants.get(row.productVariantId);\r\n if (variantInfo) {\r\n return {\r\n ...variantInfo,\r\n price: getSinglePriceValue(variantInfo.price),\r\n priceWithTax: getSinglePriceValue(variantInfo.priceWithTax),\r\n quantity: row.quantity,\r\n };\r\n }\r\n })\r\n .filter(notNullOrUndefined);\r\n }\r\n\r\n ngOnInit(): void {\r\n this.init();\r\n this.addressCustomFields = this.getCustomFieldConfig('Address');\r\n this.modifyOrderInput.orderId = this.route.snapshot.paramMap.get('id') as string;\r\n this.orderLineCustomFields = this.getCustomFieldConfig('OrderLine');\r\n this.entity$.pipe(takeUntil(this.destroy$)).subscribe(order => {\r\n this.surchargeForm = new FormGroup({\r\n description: new FormControl('', Validators.required),\r\n sku: new FormControl(''),\r\n price: new FormControl(0, Validators.required),\r\n priceIncludesTax: new FormControl(true),\r\n taxRate: new FormControl(0),\r\n taxDescription: new FormControl(''),\r\n });\r\n if (!this.shippingAddressForm) {\r\n this.shippingAddressForm = new FormGroup({\r\n fullName: new FormControl(order.shippingAddress?.fullName),\r\n company: new FormControl(order.shippingAddress?.company),\r\n streetLine1: new FormControl(order.shippingAddress?.streetLine1),\r\n streetLine2: new FormControl(order.shippingAddress?.streetLine2),\r\n city: new FormControl(order.shippingAddress?.city),\r\n province: new FormControl(order.shippingAddress?.province),\r\n postalCode: new FormControl(order.shippingAddress?.postalCode),\r\n countryCode: new FormControl(order.shippingAddress?.countryCode),\r\n phoneNumber: new FormControl(order.shippingAddress?.phoneNumber),\r\n });\r\n }\r\n if (!this.billingAddressForm) {\r\n this.billingAddressForm = new FormGroup({\r\n fullName: new FormControl(order.billingAddress?.fullName),\r\n company: new FormControl(order.billingAddress?.company),\r\n streetLine1: new FormControl(order.billingAddress?.streetLine1),\r\n streetLine2: new FormControl(order.billingAddress?.streetLine2),\r\n city: new FormControl(order.billingAddress?.city),\r\n province: new FormControl(order.billingAddress?.province),\r\n postalCode: new FormControl(order.billingAddress?.postalCode),\r\n countryCode: new FormControl(order.billingAddress?.countryCode),\r\n phoneNumber: new FormControl(order.billingAddress?.phoneNumber),\r\n });\r\n }\r\n this.orderLineCustomFieldsFormArray = new FormArray([]);\r\n for (const line of order.lines) {\r\n const formGroup = new FormGroup({});\r\n for (const { name } of this.orderLineCustomFields) {\r\n formGroup.addControl(name, new FormControl((line as any).customFields[name]));\r\n }\r\n formGroup.valueChanges.pipe(takeUntil(this.destroy$)).subscribe(value => {\r\n let modifyRow = this.modifyOrderInput.adjustOrderLines.find(\r\n l => l.orderLineId === line.id,\r\n );\r\n if (!modifyRow) {\r\n modifyRow = {\r\n orderLineId: line.id,\r\n quantity: line.quantity,\r\n };\r\n this.modifyOrderInput.adjustOrderLines.push(modifyRow);\r\n }\r\n if (this.orderLineCustomFields.length) {\r\n modifyRow.customFields = value;\r\n }\r\n });\r\n this.orderLineCustomFieldsFormArray.push(formGroup);\r\n }\r\n });\r\n this.addItemCustomFieldsFormArray = new FormArray([]);\r\n this.addItemCustomFieldsForm = new FormGroup({});\r\n for (const customField of this.orderLineCustomFields) {\r\n this.addItemCustomFieldsForm.addControl(customField.name, new FormControl());\r\n }\r\n this.availableCountries$ = this.dataService.settings\r\n .getAvailableCountries()\r\n .mapSingle(result => result.countries.items)\r\n .pipe(shareReplay(1));\r\n this.dataService.order\r\n .getOrderHistory(this.id, {\r\n take: 1,\r\n sort: {\r\n createdAt: SortOrder.DESC,\r\n },\r\n filter: { type: { eq: HistoryEntryType.ORDER_STATE_TRANSITION } },\r\n })\r\n .single$.subscribe(({ order }) => {\r\n this.previousState = order?.history.items[0].data.from;\r\n });\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.destroy();\r\n }\r\n\r\n transitionToPriorState(order: OrderDetail.Fragment) {\r\n this.orderTransitionService\r\n .transitionToPreModifyingState(order.id, order.nextStates)\r\n .subscribe(result => {\r\n this.router.navigate(['..'], { relativeTo: this.route });\r\n });\r\n }\r\n\r\n canPreviewChanges(): boolean {\r\n const { addItems, adjustOrderLines, surcharges } = this.modifyOrderInput;\r\n return (\r\n !!addItems?.length ||\r\n !!surcharges?.length ||\r\n !!adjustOrderLines?.length ||\r\n (this.shippingAddressForm.dirty && this.shippingAddressForm.valid) ||\r\n (this.billingAddressForm.dirty && this.billingAddressForm.valid)\r\n );\r\n }\r\n\r\n isLineModified(line: OrderDetail.Lines): boolean {\r\n return !!this.modifyOrderInput.adjustOrderLines?.find(\r\n l => l.orderLineId === line.id && l.quantity !== line.quantity,\r\n );\r\n }\r\n\r\n updateLineQuantity(line: OrderDetail.Lines, quantity: string) {\r\n const { adjustOrderLines } = this.modifyOrderInput;\r\n let row = adjustOrderLines?.find(l => l.orderLineId === line.id);\r\n if (row && +quantity === line.quantity) {\r\n // Remove the modification if the quantity is the same as\r\n // the original order\r\n adjustOrderLines?.splice(adjustOrderLines?.indexOf(row), 1);\r\n }\r\n if (!row) {\r\n row = { orderLineId: line.id, quantity: +quantity };\r\n adjustOrderLines?.push(row);\r\n }\r\n row.quantity = +quantity;\r\n }\r\n\r\n updateAddedItemQuantity(item: AddedLine, quantity: string) {\r\n const row = this.modifyOrderInput.addItems?.find(l => l.productVariantId === item.productVariantId);\r\n if (row) {\r\n row.quantity = +quantity;\r\n }\r\n }\r\n\r\n trackByProductVariantId(index: number, item: AddedLine) {\r\n return item.productVariantId;\r\n }\r\n\r\n getSelectedItemPrice(result: ProductSelectorSearch.Items | undefined): number {\r\n switch (result?.priceWithTax.__typename) {\r\n case 'SinglePrice':\r\n return result.priceWithTax.value;\r\n default:\r\n return 0;\r\n }\r\n }\r\n\r\n addItemToOrder(result: ProductSelectorSearch.Items | undefined) {\r\n if (!result) {\r\n return;\r\n }\r\n const customFields = this.orderLineCustomFields.length\r\n ? this.addItemCustomFieldsForm.value\r\n : undefined;\r\n let row = this.modifyOrderInput.addItems?.find(l =>\r\n this.isMatchingAddItemRow(l, result, customFields),\r\n );\r\n if (!row) {\r\n row = { productVariantId: result.productVariantId, quantity: 1 };\r\n if (customFields) {\r\n row.customFields = customFields;\r\n }\r\n this.modifyOrderInput.addItems?.push(row);\r\n } else {\r\n row.quantity++;\r\n }\r\n if (customFields) {\r\n const formGroup = new FormGroup({});\r\n for (const [key, value] of Object.entries(customFields)) {\r\n formGroup.addControl(key, new FormControl(value));\r\n }\r\n this.addItemCustomFieldsFormArray.push(formGroup);\r\n formGroup.valueChanges.pipe(takeUntil(this.destroy$)).subscribe(value => {\r\n if (row) {\r\n row.customFields = value;\r\n }\r\n });\r\n }\r\n this.addItemCustomFieldsForm.reset({});\r\n this.addItemSelectedVariant = undefined;\r\n this.addedVariants.set(result.productVariantId, result);\r\n }\r\n\r\n private isMatchingAddItemRow(\r\n row: ModifyOrderData['addItems'][number],\r\n result: ProductSelectorSearch.Items,\r\n customFields: any,\r\n ): boolean {\r\n return (\r\n row.productVariantId === result.productVariantId &&\r\n JSON.stringify(row.customFields) === JSON.stringify(customFields)\r\n );\r\n }\r\n\r\n removeAddedItem(index: number) {\r\n this.modifyOrderInput.addItems.splice(index, 1);\r\n if (-1 < index) {\r\n this.addItemCustomFieldsFormArray.removeAt(index);\r\n }\r\n }\r\n\r\n getSurchargePrices(surcharge: SurchargeInput) {\r\n const priceWithTax = surcharge.priceIncludesTax\r\n ? surcharge.price\r\n : Math.round(surcharge.price * ((100 + (surcharge.taxRate || 0)) / 100));\r\n const price = surcharge.priceIncludesTax\r\n ? Math.round(surcharge.price / ((100 + (surcharge.taxRate || 0)) / 100))\r\n : surcharge.price;\r\n return {\r\n price,\r\n priceWithTax,\r\n };\r\n }\r\n\r\n addSurcharge(value: any) {\r\n this.modifyOrderInput.surcharges?.push(value);\r\n this.surchargeForm.reset({\r\n price: 0,\r\n priceIncludesTax: true,\r\n taxRate: 0,\r\n });\r\n }\r\n\r\n removeSurcharge(index: number) {\r\n this.modifyOrderInput.surcharges?.splice(index, 1);\r\n }\r\n\r\n previewAndModify(order: OrderDetail.Fragment) {\r\n const input: ModifyOrderInput = {\r\n ...this.modifyOrderInput,\r\n ...(this.billingAddressForm.dirty ? { updateBillingAddress: this.billingAddressForm.value } : {}),\r\n ...(this.shippingAddressForm.dirty\r\n ? { updateShippingAddress: this.shippingAddressForm.value }\r\n : {}),\r\n dryRun: true,\r\n note: this.note ?? '',\r\n options: {\r\n recalculateShipping: this.recalculateShipping,\r\n },\r\n };\r\n const originalTotalWithTax = order.totalWithTax;\r\n this.dataService.order\r\n .modifyOrder(input)\r\n .pipe(\r\n switchMap(({ modifyOrder }) => {\r\n switch (modifyOrder.__typename) {\r\n case 'Order':\r\n return this.modalService.fromComponent(OrderEditsPreviewDialogComponent, {\r\n size: 'xl',\r\n closable: false,\r\n locals: {\r\n originalTotalWithTax,\r\n order: modifyOrder,\r\n orderLineCustomFields: this.orderLineCustomFields,\r\n modifyOrderInput: input,\r\n },\r\n });\r\n case 'InsufficientStockError':\r\n case 'NegativeQuantityError':\r\n case 'NoChangesSpecifiedError':\r\n case 'OrderLimitError':\r\n case 'OrderModificationStateError':\r\n case 'PaymentMethodMissingError':\r\n case 'RefundPaymentIdMissingError': {\r\n this.notificationService.error(modifyOrder.message);\r\n return of(false as const);\r\n }\r\n case null:\r\n case undefined:\r\n return of(false as const);\r\n default:\r\n assertNever(modifyOrder);\r\n }\r\n }),\r\n switchMap(result => {\r\n if (!result || result.result === OrderEditResultType.Cancel) {\r\n // re-fetch so that the preview values get overwritten in the cache.\r\n return this.dataService.order.getOrder(this.id).mapSingle(() => false);\r\n } else {\r\n // Do the modification\r\n const wetRunInput = {\r\n ...input,\r\n dryRun: false,\r\n };\r\n if (result.result === OrderEditResultType.Refund) {\r\n wetRunInput.refund = {\r\n paymentId: result.refundPaymentId,\r\n reason: result.refundNote,\r\n };\r\n }\r\n return this.dataService.order.modifyOrder(wetRunInput).pipe(\r\n switchMap(({ modifyOrder }) => {\r\n if (modifyOrder.__typename === 'Order') {\r\n const priceDelta = modifyOrder.totalWithTax - originalTotalWithTax;\r\n const nextState =\r\n 0 < priceDelta ? 'ArrangingAdditionalPayment' : this.previousState;\r\n\r\n return this.dataService.order\r\n .transitionToState(order.id, nextState)\r\n .pipe(mapTo(true));\r\n } else {\r\n this.notificationService.error((modifyOrder as ErrorResult).message);\r\n return EMPTY;\r\n }\r\n }),\r\n );\r\n }\r\n }),\r\n )\r\n .subscribe(result => {\r\n if (result) {\r\n this.router.navigate(['../'], { relativeTo: this.route });\r\n }\r\n });\r\n }\r\n\r\n protected setFormValues(entity: OrderDetail.Fragment, languageCode: LanguageCode): void {\r\n /* not used */\r\n }\r\n}\r\n","import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from '@angular/core';\r\nimport {\r\n GetOrderHistory,\r\n HistoryEntry,\r\n HistoryEntryType,\r\n OrderDetail,\r\n OrderDetailFragment,\r\n TimelineDisplayType,\r\n} from '@vendure/admin-ui/core';\r\n\r\n@Component({\r\n selector: 'vdr-order-history',\r\n templateUrl: './order-history.component.html',\r\n styleUrls: ['./order-history.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class OrderHistoryComponent {\r\n @Input() order: OrderDetailFragment;\r\n @Input() history: GetOrderHistory.Items[];\r\n @Output() addNote = new EventEmitter<{ note: string; isPublic: boolean }>();\r\n @Output() updateNote = new EventEmitter<HistoryEntry>();\r\n @Output() deleteNote = new EventEmitter<HistoryEntry>();\r\n note = '';\r\n noteIsPrivate = true;\r\n expanded = false;\r\n readonly type = HistoryEntryType;\r\n\r\n getDisplayType(entry: GetOrderHistory.Items): TimelineDisplayType {\r\n if (entry.type === HistoryEntryType.ORDER_STATE_TRANSITION) {\r\n if (entry.data.to === 'Delivered') {\r\n return 'success';\r\n }\r\n if (entry.data.to === 'Cancelled') {\r\n return 'error';\r\n }\r\n }\r\n if (entry.type === HistoryEntryType.ORDER_FULFILLMENT_TRANSITION) {\r\n if (entry.data.to === 'Delivered') {\r\n return 'success';\r\n }\r\n }\r\n if (entry.type === HistoryEntryType.ORDER_PAYMENT_TRANSITION) {\r\n if (entry.data.to === 'Declined' || entry.data.to === 'Cancelled') {\r\n return 'error';\r\n }\r\n }\r\n if (entry.type === HistoryEntryType.ORDER_CANCELLATION) {\r\n return 'error';\r\n }\r\n if (entry.type === HistoryEntryType.ORDER_REFUND_TRANSITION) {\r\n return 'warning';\r\n }\r\n return 'default';\r\n }\r\n\r\n getTimelineIcon(entry: GetOrderHistory.Items) {\r\n if (entry.type === HistoryEntryType.ORDER_STATE_TRANSITION) {\r\n if (entry.data.to === 'Delivered') {\r\n return ['success-standard', 'is-solid'];\r\n }\r\n if (entry.data.to === 'Cancelled') {\r\n return 'ban';\r\n }\r\n }\r\n if (entry.type === HistoryEntryType.ORDER_PAYMENT_TRANSITION) {\r\n if (entry.data.to === 'Settled') {\r\n return 'credit-card';\r\n }\r\n }\r\n if (entry.type === HistoryEntryType.ORDER_NOTE) {\r\n return 'note';\r\n }\r\n if (entry.type === HistoryEntryType.ORDER_MODIFIED) {\r\n return 'pencil';\r\n }\r\n if (entry.type === HistoryEntryType.ORDER_FULFILLMENT_TRANSITION) {\r\n if (entry.data.to === 'Shipped') {\r\n return 'truck';\r\n }\r\n if (entry.data.to === 'Delivered') {\r\n return 'truck';\r\n }\r\n }\r\n }\r\n\r\n isFeatured(entry: GetOrderHistory.Items): boolean {\r\n switch (entry.type) {\r\n case HistoryEntryType.ORDER_STATE_TRANSITION: {\r\n return (\r\n entry.data.to === 'Delivered' ||\r\n entry.data.to === 'Cancelled' ||\r\n entry.data.to === 'Settled'\r\n );\r\n }\r\n case HistoryEntryType.ORDER_PAYMENT_TRANSITION:\r\n return entry.data.to === 'Settled' || entry.data.to === 'Cancelled';\r\n case HistoryEntryType.ORDER_FULFILLMENT_TRANSITION:\r\n return entry.data.to === 'Delivered' || entry.data.to === 'Shipped';\r\n case HistoryEntryType.ORDER_NOTE:\r\n case HistoryEntryType.ORDER_MODIFIED:\r\n return true;\r\n default:\r\n return false;\r\n }\r\n }\r\n\r\n getFulfillment(entry: GetOrderHistory.Items): OrderDetail.Fulfillments | undefined {\r\n if (\r\n (entry.type === HistoryEntryType.ORDER_FULFILLMENT ||\r\n entry.type === HistoryEntryType.ORDER_FULFILLMENT_TRANSITION) &&\r\n this.order.fulfillments\r\n ) {\r\n return this.order.fulfillments.find(f => f.id === entry.data.fulfillmentId);\r\n }\r\n }\r\n\r\n getPayment(entry: GetOrderHistory.Items): OrderDetail.Payments | undefined {\r\n if (entry.type === HistoryEntryType.ORDER_PAYMENT_TRANSITION && this.order.payments) {\r\n return this.order.payments.find(p => p.id === entry.data.paymentId);\r\n }\r\n }\r\n\r\n getCancelledItems(entry: GetOrderHistory.Items): Array<{ name: string; quantity: number }> {\r\n const itemMap = new Map<string, number>();\r\n const cancelledItemIds: string[] = entry.data.orderItemIds;\r\n for (const line of this.order.lines) {\r\n for (const item of line.items) {\r\n if (cancelledItemIds.includes(item.id)) {\r\n const count = itemMap.get(line.productVariant.name);\r\n if (count != null) {\r\n itemMap.set(line.productVariant.name, count + 1);\r\n } else {\r\n itemMap.set(line.productVariant.name, 1);\r\n }\r\n }\r\n }\r\n }\r\n return Array.from(itemMap.entries()).map(([name, quantity]) => ({ name, quantity }));\r\n }\r\n\r\n getModification(id: string) {\r\n return this.order.modifications.find(m => m.id === id);\r\n }\r\n\r\n getName(entry: GetOrderHistory.Items): string {\r\n const { administrator } = entry;\r\n if (administrator) {\r\n return `${administrator.firstName} ${administrator.lastName}`;\r\n } else {\r\n const customer = this.order.customer;\r\n if (customer) {\r\n return `${customer.firstName} ${customer.lastName}`;\r\n }\r\n }\r\n return '';\r\n }\r\n\r\n addNoteToOrder() {\r\n this.addNote.emit({ note: this.note, isPublic: !this.noteIsPrivate });\r\n this.note = '';\r\n this.noteIsPrivate = true;\r\n }\r\n}\r\n","import { ChangeDetectionStrategy, Component, OnInit } from '@angular/core';\nimport { FormControl, FormGroup } from '@angular/forms';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { marker as _ } from '@biesbjerg/ngx-translate-extract-marker';\nimport {\n BaseListComponent,\n DataService,\n GetOrderList,\n LocalStorageService,\n OrderListOptions,\n ServerConfigService,\n SortOrder,\n} from '@vendure/admin-ui/core';\nimport { Order } from '@vendure/common/lib/generated-types';\nimport { merge, Observable } from 'rxjs';\nimport { debounceTime, distinctUntilChanged, filter, map, skip, takeUntil, tap } from 'rxjs/operators';\n\ninterface OrderFilterConfig {\n active?: boolean;\n states?: string[];\n}\n\ninterface FilterPreset {\n name: string;\n label: string;\n config: OrderFilterConfig;\n}\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})\nexport class OrderListComponent\n extends BaseListComponent<GetOrderList.Query, GetOrderList.Items>\n implements OnInit {\n searchOrderCodeControl = new FormControl('');\n searchLastNameControl = new FormControl('');\n customFilterForm: FormGroup;\n orderStates = this.serverConfigService.getOrderProcessStates().map(item => item.name);\n filterPresets: FilterPreset[] = [\n {\n name: 'open',\n label: _('order.filter-preset-open'),\n config: {\n active: false,\n states: this.orderStates.filter(\n s => s !== 'Delivered' && s !== 'Cancelled' && s !== 'Shipped',\n ),\n },\n },\n {\n name: 'shipped',\n label: _('order.filter-preset-shipped'),\n config: {\n active: false,\n states: ['Shipped'],\n },\n },\n {\n name: 'completed',\n label: _('order.filter-preset-completed'),\n config: {\n active: false,\n states: ['Delivered', 'Cancelled'],\n },\n },\n {\n name: 'active',\n label: _('order.filter-preset-active'),\n config: {\n active: true,\n },\n },\n ];\n activePreset$: Observable<string>;\n\n constructor(\n private serverConfigService: ServerConfigService,\n private dataService: DataService,\n private localStorageService: LocalStorageService,\n router: Router,\n route: ActivatedRoute,\n ) {\n super(router, route);\n super.setQueryFn(\n // tslint:disable-next-line:no-shadowed-variable\n (take, skip) => this.dataService.order.getOrders({ take, skip }).refetchOnChannelChange(),\n data => data.orders,\n // tslint:disable-next-line:no-shadowed-variable\n (skip, take) =>\n this.createQueryOptions(\n skip,\n take,\n this.searchOrderCodeControl.value,\n this.searchLastNameControl.value,\n this.route.snapshot.queryParamMap.get('filter') || 'open',\n ),\n );\n const lastFilters = this.localStorageService.get('orderListLastCustomFilters');\n if (lastFilters) {\n this.setQueryParam(lastFilters, { replaceUrl: true });\n }\n }\n\n ngOnInit() {\n super.ngOnInit();\n this.activePreset$ = this.route.queryParamMap.pipe(\n map(qpm => qpm.get('filter') || 'open'),\n distinctUntilChanged(),\n );\n const searchTerms$ = merge(\n this.searchOrderCodeControl.valueChanges,\n this.searchLastNameControl.valueChanges,\n ).pipe(\n filter(value => 2 < value.length || value.length === 0),\n debounceTime(250),\n );\n merge(searchTerms$, this.route.queryParamMap)\n .pipe(takeUntil(this.destroy$))\n .subscribe(val => {\n this.refresh();\n });\n\n const queryParamMap = this.route.snapshot.queryParamMap;\n this.customFilterForm = new FormGroup({\n states: new FormControl(queryParamMap.getAll('states') ?? []),\n placedAtStart: new FormControl(queryParamMap.get('placedAtStart')),\n placedAtEnd: new FormControl(queryParamMap.get('placedAtEnd')),\n });\n }\n\n selectFilterPreset(presetName: string) {\n const lastCustomFilters = this.localStorageService.get('orderListLastCustomFilters') ?? {};\n const emptyCustomFilters = { states: undefined, placedAtStart: undefined, placedAtEnd: undefined };\n const filters = presetName === 'custom' ? lastCustomFilters : emptyCustomFilters;\n this.setQueryParam(\n {\n filter: presetName,\n page: 1,\n ...filters,\n },\n { replaceUrl: true },\n );\n }\n\n applyCustomFilters() {\n const formValue = this.customFilterForm.value;\n const customFilters = {\n states: formValue.states,\n placedAtStart: formValue.placedAtStart,\n placedAtEnd: formValue.placedAtEnd,\n };\n this.setQueryParam({\n filter: 'custom',\n ...customFilters,\n });\n this.customFilterForm.markAsPristine();\n this.localStorageService.set('orderListLastCustomFilters', customFilters);\n }\n\n private createQueryOptions(\n // tslint:disable-next-line:no-shadowed-variable\n skip: number,\n take: number,\n orderCodeSearchTerm: string,\n customerNameSearchTerm: string,\n activeFilterPreset?: string,\n ): { options: OrderListOptions } {\n const filterConfig = this.filterPresets.find(p => p.name === activeFilterPreset);\n // tslint:disable-next-line:no-shadowed-variable\n const filter: any = {};\n if (filterConfig) {\n if (filterConfig.config.active != null) {\n filter.active = {\n eq: filterConfig.config.active,\n };\n }\n if (filterConfig.config.states) {\n filter.state = {\n in: filterConfig.config.states,\n };\n }\n } else if (activeFilterPreset === 'custom') {\n const queryParams = this.route.snapshot.queryParamMap;\n const states = queryParams.getAll('states') ?? [];\n const placedAtStart = queryParams.get('placedAtStart');\n const placedAtEnd = queryParams.get('placedAtEnd');\n if (states.length) {\n filter.state = {\n in: states,\n };\n }\n if (placedAtStart && placedAtEnd) {\n filter.orderPlacedAt = {\n between: {\n start: placedAtStart,\n end: placedAtEnd,\n },\n };\n } else if (placedAtStart) {\n filter.orderPlacedAt = {\n after: placedAtStart,\n };\n } else if (placedAtEnd) {\n filter.orderPlacedAt = {\n before: placedAtEnd,\n };\n }\n }\n if (customerNameSearchTerm) {\n filter.customerLastName = {\n contains: customerNameSearchTerm,\n };\n }\n if (orderCodeSearchTerm) {\n filter.code = {\n contains: orderCodeSearchTerm,\n };\n }\n return {\n options: {\n skip,\n take,\n filter: {\n ...(filter ?? {}),\n },\n sort: {\n updatedAt: SortOrder.DESC,\n },\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","import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from '@angular/core';\r\nimport { CurrencyCode } from '@vendure/admin-ui/core';\r\nimport { OrderDetail } from '@vendure/admin-ui/core';\r\n\r\n@Component({\r\n selector: 'vdr-order-payment-card',\r\n templateUrl: './order-payment-card.component.html',\r\n styleUrls: ['./order-payment-card.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class OrderPaymentCardComponent {\r\n @Input() payment: OrderDetail.Payments;\r\n @Input() currencyCode: CurrencyCode;\r\n @Output() settlePayment = new EventEmitter<OrderDetail.Payments>();\r\n @Output() transitionPaymentState = new EventEmitter<{ payment: OrderDetail.Payments; state: string }>();\r\n @Output() settleRefund = new EventEmitter<OrderDetail.Refunds>();\r\n\r\n refundHasMetadata(refund?: OrderDetail.Refunds): boolean {\r\n return !!refund && Object.keys(refund.metadata).length > 0;\r\n }\r\n\r\n nextOtherStates(): string[] {\r\n if (!this.payment) {\r\n return [];\r\n }\r\n return this.payment.nextStates.filter(s => s !== 'Settled');\r\n }\r\n}\r\n","import { ChangeDetectionStrategy, Component, Input, OnInit } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\nimport { tap } from 'rxjs/operators';\r\n\r\nimport { OrderProcessNodeComponent } from './order-process-node.component';\r\n\r\n@Component({\r\n selector: 'vdr-order-process-edge',\r\n templateUrl: './order-process-edge.component.html',\r\n styleUrls: ['./order-process-edge.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class OrderProcessEdgeComponent implements OnInit {\r\n @Input() from: OrderProcessNodeComponent;\r\n @Input() to: OrderProcessNodeComponent;\r\n @Input() index: number;\r\n active$: Observable<boolean>;\r\n\r\n ngOnInit() {\r\n this.active$ = this.from.active$\r\n .asObservable()\r\n .pipe(tap((active) => this.to.activeTarget$.next(active)));\r\n }\r\n\r\n getStyle() {\r\n const direction = this.from.index < this.to.index ? 'down' : 'up';\r\n const startPos = this.from.getPos(direction === 'down' ? 'bottom' : 'top');\r\n const endPos = this.to.getPos(direction === 'down' ? 'top' : 'bottom');\r\n const dX = Math.abs(startPos.x - endPos.x);\r\n const dY = Math.abs(startPos.y - endPos.y);\r\n const length = Math.sqrt(dX ** 2 + dY ** 2);\r\n return {\r\n 'top.px': startPos.y,\r\n 'left.px': startPos.x + (direction === 'down' ? 10 : 40) + this.index * 12,\r\n 'height.px': length,\r\n 'width.px': 1,\r\n ...(direction === 'up'\r\n ? {\r\n transform: 'rotateZ(180deg)',\r\n 'transform-origin': 'top',\r\n }\r\n : {}),\r\n };\r\n }\r\n}\r\n","import {\r\n ChangeDetectionStrategy,\r\n Component,\r\n ElementRef,\r\n Input,\r\n OnChanges,\r\n SimpleChanges,\r\n} from '@angular/core';\r\nimport { BehaviorSubject } from 'rxjs';\r\n\r\nimport { NODE_HEIGHT } from './constants';\r\nimport { StateNode } from './types';\r\n\r\n@Component({\r\n selector: 'vdr-order-process-node',\r\n templateUrl: './order-process-node.component.html',\r\n styleUrls: ['./order-process-node.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class OrderProcessNodeComponent implements OnChanges {\r\n @Input() node: StateNode;\r\n @Input() index: number;\r\n @Input() active: boolean;\r\n active$ = new BehaviorSubject<boolean>(false);\r\n activeTarget$ = new BehaviorSubject<boolean>(false);\r\n isCancellable = false;\r\n // We use a class field here to prevent the\r\n // i18n extractor from extracting a \"Cancelled\" key\r\n cancelledState = 'Cancelled';\r\n\r\n constructor(private elementRef: ElementRef<HTMLDivElement>) {}\r\n\r\n ngOnChanges(changes: SimpleChanges) {\r\n this.isCancellable = !!this.node.to.find((s) => s.name === 'Cancelled');\r\n if (changes.active) {\r\n this.active$.next(this.active);\r\n }\r\n }\r\n\r\n getPos(origin: 'top' | 'bottom' = 'top'): { x: number; y: number } {\r\n const rect = this.elementRef.nativeElement.getBoundingClientRect();\r\n const nodeHeight =\r\n this.elementRef.nativeElement.querySelector('.node')?.getBoundingClientRect().height ?? 0;\r\n return {\r\n x: 10,\r\n y: this.index * NODE_HEIGHT + (origin === 'bottom' ? nodeHeight : 0),\r\n };\r\n }\r\n\r\n getStyle() {\r\n const pos = this.getPos();\r\n return {\r\n 'top.px': pos.y,\r\n 'left.px': pos.x,\r\n };\r\n }\r\n}\r\n","export const NODE_HEIGHT = 72;\r\n","import {\r\n AfterViewInit,\r\n ChangeDetectionStrategy,\r\n ChangeDetectorRef,\r\n Component,\r\n HostBinding,\r\n Input,\r\n OnChanges,\r\n OnInit,\r\n QueryList,\r\n SimpleChanges,\r\n ViewChildren,\r\n} from '@angular/core';\r\nimport { OrderProcessState } from '@vendure/admin-ui/core';\r\nimport { BehaviorSubject, Observable } from 'rxjs';\r\nimport { debounceTime } from 'rxjs/operators';\r\n\r\nimport { NODE_HEIGHT } from './constants';\r\nimport { OrderProcessNodeComponent } from './order-process-node.component';\r\nimport { StateNode } from './types';\r\n\r\n@Component({\r\n selector: 'vdr-order-process-graph',\r\n templateUrl: './order-process-graph.component.html',\r\n styleUrls: ['./order-process-graph.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class OrderProcessGraphComponent implements OnInit, OnChanges, AfterViewInit {\r\n @Input() states: OrderProcessState[];\r\n @Input() initialState?: string;\r\n setActiveState$ = new BehaviorSubject<string | undefined>(undefined);\r\n activeState$: Observable<string | undefined>;\r\n nodes: StateNode[] = [];\r\n edges: Array<{ from: OrderProcessNodeComponent; to: OrderProcessNodeComponent; index: number }> = [];\r\n\r\n @ViewChildren(OrderProcessNodeComponent) nodeComponents: QueryList<OrderProcessNodeComponent>;\r\n\r\n constructor(private changeDetector: ChangeDetectorRef) {}\r\n\r\n @HostBinding('style.height.px')\r\n get outerHeight(): number {\r\n return this.nodes.length * NODE_HEIGHT;\r\n }\r\n\r\n ngOnInit() {\r\n this.setActiveState$.next(this.initialState);\r\n this.activeState$ = this.setActiveState$.pipe(debounceTime(150));\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges) {\r\n this.populateNodes();\r\n }\r\n\r\n ngAfterViewInit() {\r\n setTimeout(() => this.populateEdges());\r\n }\r\n\r\n onMouseOver(stateName: string) {\r\n this.setActiveState$.next(stateName);\r\n }\r\n\r\n onMouseOut() {\r\n this.setActiveState$.next(this.initialState);\r\n }\r\n\r\n getNodeFor(state: string): OrderProcessNodeComponent | undefined {\r\n if (this.nodeComponents) {\r\n return this.nodeComponents.find((n) => n.node.name === state);\r\n }\r\n }\r\n\r\n private populateNodes() {\r\n const stateNodeMap = new Map<string, StateNode>();\r\n for (const state of this.states) {\r\n stateNodeMap.set(state.name, {\r\n name: state.name,\r\n to: [],\r\n });\r\n }\r\n\r\n for (const [name, stateNode] of stateNodeMap.entries()) {\r\n const targets = this.states.find((s) => s.name === name)?.to ?? [];\r\n for (const target of targets) {\r\n const targetNode = stateNodeMap.get(target);\r\n if (targetNode) {\r\n stateNode.to.push(targetNode);\r\n }\r\n }\r\n }\r\n this.nodes = [...stateNodeMap.values()].filter((n) => n.name !== 'Cancelled');\r\n }\r\n\r\n private populateEdges() {\r\n for (const node of this.nodes) {\r\n const nodeCmp = this.getNodeFor(node.name);\r\n let index = 0;\r\n for (const to of node.to) {\r\n const toCmp = this.getNodeFor(to.name);\r\n if (nodeCmp && toCmp && nodeCmp !== toCmp) {\r\n this.edges.push({\r\n to: toCmp,\r\n from: nodeCmp,\r\n index,\r\n });\r\n index++;\r\n }\r\n }\r\n }\r\n this.edges = [...this.edges];\r\n this.changeDetector.markForCheck();\r\n }\r\n}\r\n","import { ChangeDetectionStrategy, Component, Input, OnInit } from '@angular/core';\r\nimport { AdjustmentType, CustomFieldConfig, OrderDetail } from '@vendure/admin-ui/core';\r\n\r\n@Component({\r\n selector: 'vdr-order-table',\r\n templateUrl: './order-table.component.html',\r\n styleUrls: ['./order-table.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class OrderTableComponent implements OnInit {\r\n @Input() order: OrderDetail.Fragment;\r\n @Input() orderLineCustomFields: CustomFieldConfig[];\r\n orderLineCustomFieldsVisible = false;\r\n\r\n get visibleOrderLineCustomFields(): CustomFieldConfig[] {\r\n return this.orderLineCustomFieldsVisible ? this.orderLineCustomFields : [];\r\n }\r\n\r\n get showElided(): boolean {\r\n return !this.orderLineCustomFieldsVisible && 0 < this.orderLineCustomFields.length;\r\n }\r\n\r\n ngOnInit(): void {\r\n this.orderLineCustomFieldsVisible = this.orderLineCustomFields.length < 2;\r\n }\r\n\r\n toggleOrderLineCustomFields() {\r\n this.orderLineCustomFieldsVisible = !this.orderLineCustomFieldsVisible;\r\n }\r\n\r\n getLineDiscounts(line: OrderDetail.Lines) {\r\n return line.discounts.filter(a => a.type === AdjustmentType.PROMOTION);\r\n }\r\n\r\n getLineCustomFields(line: OrderDetail.Lines): Array<{ config: CustomFieldConfig; value: any }> {\r\n return this.orderLineCustomFields\r\n .map(config => {\r\n const value = (line as any).customFields[config.name];\r\n return {\r\n config,\r\n value,\r\n };\r\n })\r\n .filter(field => {\r\n return this.orderLineCustomFieldsVisible ? true : field.value != null;\r\n });\r\n }\r\n\r\n getPromotionLink(promotion: OrderDetail.Discounts): any[] {\r\n const id = promotion.adjustmentSource.split(':')[1];\r\n return ['/marketing', 'promotions', id];\r\n }\r\n\r\n getCouponCodeForAdjustment(\r\n order: OrderDetail.Fragment,\r\n promotionAdjustment: OrderDetail.Discounts,\r\n ): string | undefined {\r\n const id = promotionAdjustment.adjustmentSource.split(':')[1];\r\n const promotion = order.promotions.find(p => p.id === id);\r\n if (promotion) {\r\n return promotion.couponCode || undefined;\r\n }\r\n }\r\n}\r\n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\r\n\r\nimport { CurrencyCode, OrderDetail } from '@vendure/admin-ui/core';\r\n\r\n@Component({\r\n selector: 'vdr-payment-detail',\r\n templateUrl: './payment-detail.component.html',\r\n styleUrls: ['./payment-detail.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class PaymentDetailComponent {\r\n @Input() payment: OrderDetail.Payments;\r\n @Input() currencyCode: CurrencyCode;\r\n}\r\n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'vdr-payment-state-label',\r\n templateUrl: './payment-state-label.component.html',\r\n styleUrls: ['./payment-state-label.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class PaymentStateLabelComponent {\r\n @Input() state: string;\r\n\r\n get chipColorType() {\r\n switch (this.state) {\r\n case 'Authorized':\r\n return 'warning';\r\n case 'Settled':\r\n return 'success';\r\n case 'Declined':\r\n case 'Cancelled':\r\n return 'error';\r\n }\r\n }\r\n}\r\n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'vdr-refund-state-label',\r\n templateUrl: './refund-state-label.component.html',\r\n styleUrls: ['./refund-state-label.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class RefundStateLabelComponent {\r\n @Input() state: string;\r\n\r\n get chipColorType() {\r\n switch (this.state) {\r\n case 'Pending':\r\n return 'warning';\r\n case 'Settled':\r\n return 'success';\r\n case 'Failed':\r\n return 'error';\r\n }\r\n }\r\n}\r\n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'vdr-simple-item-list',\r\n templateUrl: './simple-item-list.component.html',\r\n styleUrls: ['./simple-item-list.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class SimpleItemListComponent {\r\n @Input() items: Array<{ name: string; quantity: number }>;\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { Router } from '@angular/router';\r\nimport { BaseEntityResolver } from '@vendure/admin-ui/core';\r\nimport { OrderDetail } from '@vendure/admin-ui/core';\r\nimport { DataService } from '@vendure/admin-ui/core';\r\n\r\n/**\r\n * Resolves the id from the path into a Customer entity.\r\n */\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class OrderResolver extends BaseEntityResolver<OrderDetail.Fragment> {\r\n constructor(router: Router, dataService: DataService) {\r\n super(\r\n router,\r\n {\r\n __typename: 'Order',\r\n id: '',\r\n code: '',\r\n createdAt: '',\r\n updatedAt: '',\r\n total: 0,\r\n } as any,\r\n id => dataService.order.getOrder(id).mapStream(data => data.order),\r\n );\r\n }\r\n}\r\n","import { Route } from '@angular/router';\nimport { marker as _ } from '@biesbjerg/ngx-translate-extract-marker';\nimport {\n BreadcrumbLabelLinkPair,\n CanDeactivateDetailGuard,\n createResolveData,\n detailBreadcrumb,\n OrderDetail,\n} from '@vendure/admin-ui/core';\nimport { map } from 'rxjs/operators';\n\nimport { OrderDetailComponent } from './components/order-detail/order-detail.component';\nimport { OrderEditorComponent } from './components/order-editor/order-editor.component';\nimport { OrderListComponent } from './components/order-list/order-list.component';\nimport { OrderResolver } from './providers/routing/order-resolver';\n\nexport const orderRoutes: Route[] = [\n {\n path: '',\n component: OrderListComponent,\n data: {\n breadcrumb: _('breadcrumb.orders'),\n },\n },\n {\n path: ':id',\n component: OrderDetailComponent,\n resolve: createResolveData(OrderResolver),\n canDeactivate: [CanDeactivateDetailGuard],\n data: {\n breadcrumb: orderBreadcrumb,\n },\n },\n {\n path: ':id/modify',\n component: OrderEditorComponent,\n resolve: createResolveData(OrderResolver),\n // canDeactivate: [CanDeactivateDetailGuard],\n data: {\n breadcrumb: modifyingOrderBreadcrumb,\n },\n },\n];\n\nexport function orderBreadcrumb(data: any, params: any) {\n return detailBreadcrumb<OrderDetail.Fragment>({\n entity: data.entity,\n id: params.id,\n breadcrumbKey: 'breadcrumb.orders',\n getName: order => order.code,\n route: '',\n });\n}\n\nexport function modifyingOrderBreadcrumb(data: any, params: any) {\n return orderBreadcrumb(data, params).pipe(\n map((breadcrumbs: BreadcrumbLabelLinkPair[]) => {\n const modifiedBreadcrumbs = breadcrumbs.slice();\n modifiedBreadcrumbs[0].link[0] = '../';\n modifiedBreadcrumbs[1].link[0] = '../orders';\n return modifiedBreadcrumbs.concat({ label: _('breadcrumb.modifying'), link: [''] });\n }) as any,\n );\n}\n","import { NgModule } from '@angular/core';\nimport { RouterModule } from '@angular/router';\nimport { SharedModule } 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 { 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 { 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 { 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 { RefundOrderDialogComponent } from './components/refund-order-dialog/refund-order-dialog.component';\nimport { RefundStateLabelComponent } from './components/refund-state-label/refund-state-label.component';\nimport { SettleRefundDialogComponent } from './components/settle-refund-dialog/settle-refund-dialog.component';\nimport { SimpleItemListComponent } from './components/simple-item-list/simple-item-list.component';\nimport { orderRoutes } from './order.routes';\n\n@NgModule({\n imports: [SharedModule, RouterModule.forChild(orderRoutes)],\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 ],\n})\nexport class OrderModule {}\n"]}
|