@mj-biz-apps/orders-ng 5.1.0 → 5.2.0
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/dist/checkout-element/main.js +38080 -0
- package/dist/lib/checkout-widget/checkout-draft-line.d.ts +25 -0
- package/dist/lib/checkout-widget/checkout-draft-line.d.ts.map +1 -0
- package/dist/lib/checkout-widget/checkout-draft-line.js +46 -0
- package/dist/lib/checkout-widget/checkout-draft-line.js.map +1 -0
- package/dist/lib/checkout-widget/checkout-public-host.component.d.ts +80 -0
- package/dist/lib/checkout-widget/checkout-public-host.component.d.ts.map +1 -0
- package/dist/lib/checkout-widget/checkout-public-host.component.js +360 -0
- package/dist/lib/checkout-widget/checkout-public-host.component.js.map +1 -0
- package/dist/lib/checkout-widget/checkout-widget.component.d.ts +143 -0
- package/dist/lib/checkout-widget/checkout-widget.component.d.ts.map +1 -0
- package/dist/lib/checkout-widget/checkout-widget.component.js +873 -0
- package/dist/lib/checkout-widget/checkout-widget.component.js.map +1 -0
- package/dist/lib/custom/OrderHeader/order-header-form.component.d.ts +1 -0
- package/dist/lib/custom/OrderHeader/order-header-form.component.d.ts.map +1 -1
- package/dist/lib/custom/OrderHeader/order-header-form.component.js +10 -6
- package/dist/lib/custom/OrderHeader/order-header-form.component.js.map +1 -1
- package/dist/lib/custom/OrderHeader/order-lines-editor.component.d.ts +2 -0
- package/dist/lib/custom/OrderHeader/order-lines-editor.component.d.ts.map +1 -1
- package/dist/lib/custom/OrderHeader/order-lines-editor.component.js +37 -11
- package/dist/lib/custom/OrderHeader/order-lines-editor.component.js.map +1 -1
- package/dist/lib/form-panels/party-order-stats.js +2 -2
- package/dist/lib/form-panels/party-order-stats.js.map +1 -1
- package/dist/lib/generated/Entities/mjBizAppsOrdersCheckoutSession/mjbizappsorderscheckoutsession.form.component.d.ts +10 -0
- package/dist/lib/generated/Entities/mjBizAppsOrdersCheckoutSession/mjbizappsorderscheckoutsession.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/mjBizAppsOrdersCheckoutSession/mjbizappsorderscheckoutsession.form.component.js +103 -0
- package/dist/lib/generated/Entities/mjBizAppsOrdersCheckoutSession/mjbizappsorderscheckoutsession.form.component.js.map +1 -0
- package/dist/lib/generated/Entities/mjBizAppsOrdersCheckoutWidget/mjbizappsorderscheckoutwidget.form.component.d.ts +10 -0
- package/dist/lib/generated/Entities/mjBizAppsOrdersCheckoutWidget/mjbizappsorderscheckoutwidget.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/mjBizAppsOrdersCheckoutWidget/mjbizappsorderscheckoutwidget.form.component.js +136 -0
- package/dist/lib/generated/Entities/mjBizAppsOrdersCheckoutWidget/mjbizappsorderscheckoutwidget.form.component.js.map +1 -0
- package/dist/lib/generated/Entities/mjBizAppsOrdersCheckoutWidgetDistribution/mjbizappsorderscheckoutwidgetdistribution.form.component.d.ts +10 -0
- package/dist/lib/generated/Entities/mjBizAppsOrdersCheckoutWidgetDistribution/mjbizappsorderscheckoutwidgetdistribution.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/mjBizAppsOrdersCheckoutWidgetDistribution/mjbizappsorderscheckoutwidgetdistribution.form.component.js +106 -0
- package/dist/lib/generated/Entities/mjBizAppsOrdersCheckoutWidgetDistribution/mjbizappsorderscheckoutwidgetdistribution.form.component.js.map +1 -0
- package/dist/lib/generated/Entities/mjBizAppsOrdersEventOrderLine/mjbizappsorderseventorderline.form.component.js +9 -9
- package/dist/lib/generated/Entities/mjBizAppsOrdersEventOrderLine/mjbizappsorderseventorderline.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/mjBizAppsOrdersEventProduct/mjbizappsorderseventproduct.form.component.js +12 -12
- package/dist/lib/generated/Entities/mjBizAppsOrdersEventProduct/mjbizappsorderseventproduct.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/mjBizAppsOrdersOrderCompanyPolicy/mjbizappsordersordercompanypolicy.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/mjBizAppsOrdersOrderCompanyPolicy/mjbizappsordersordercompanypolicy.form.component.js +16 -10
- package/dist/lib/generated/Entities/mjBizAppsOrdersOrderCompanyPolicy/mjbizappsordersordercompanypolicy.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/mjBizAppsOrdersOrderHeader/mjbizappsordersorderheader.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/mjBizAppsOrdersOrderHeader/mjbizappsordersorderheader.form.component.js +78 -52
- package/dist/lib/generated/Entities/mjBizAppsOrdersOrderHeader/mjbizappsordersorderheader.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/mjBizAppsOrdersOrderLine/mjbizappsordersorderline.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/mjBizAppsOrdersOrderLine/mjbizappsordersorderline.form.component.js +88 -82
- package/dist/lib/generated/Entities/mjBizAppsOrdersOrderLine/mjbizappsordersorderline.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/mjBizAppsOrdersPaymentHeader/mjbizappsorderspaymentheader.form.component.js +3 -3
- package/dist/lib/generated/Entities/mjBizAppsOrdersPaymentHeader/mjbizappsorderspaymentheader.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/mjBizAppsOrdersPaymentIntent/mjbizappsorderspaymentintent.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/mjBizAppsOrdersPaymentIntent/mjbizappsorderspaymentintent.form.component.js +23 -5
- package/dist/lib/generated/Entities/mjBizAppsOrdersPaymentIntent/mjbizappsorderspaymentintent.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/mjBizAppsOrdersProduct/mjbizappsordersproduct.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/mjBizAppsOrdersProduct/mjbizappsordersproduct.form.component.js +75 -69
- package/dist/lib/generated/Entities/mjBizAppsOrdersProduct/mjbizappsordersproduct.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/mjBizAppsOrdersProductCategory/mjbizappsordersproductcategory.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/mjBizAppsOrdersProductCategory/mjbizappsordersproductcategory.form.component.js +37 -31
- package/dist/lib/generated/Entities/mjBizAppsOrdersProductCategory/mjbizappsordersproductcategory.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/mjBizAppsOrdersProductType/mjbizappsordersproducttype.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/mjBizAppsOrdersProductType/mjbizappsordersproducttype.form.component.js +24 -16
- package/dist/lib/generated/Entities/mjBizAppsOrdersProductType/mjbizappsordersproducttype.form.component.js.map +1 -1
- package/dist/lib/generated/generated-forms.module.d.ts +54 -51
- package/dist/lib/generated/generated-forms.module.d.ts.map +1 -1
- package/dist/lib/generated/generated-forms.module.js +27 -18
- package/dist/lib/generated/generated-forms.module.js.map +1 -1
- package/dist/lib/pages/catalog/pricing.page.d.ts +3 -24
- package/dist/lib/pages/catalog/pricing.page.d.ts.map +1 -1
- package/dist/lib/pages/catalog/pricing.page.js +158 -214
- package/dist/lib/pages/catalog/pricing.page.js.map +1 -1
- package/dist/lib/pages/catalog/products.page.d.ts +6 -29
- package/dist/lib/pages/catalog/products.page.d.ts.map +1 -1
- package/dist/lib/pages/catalog/products.page.js +255 -315
- package/dist/lib/pages/catalog/products.page.js.map +1 -1
- package/dist/lib/pages/orders/fulfillment.page.d.ts +14 -97
- package/dist/lib/pages/orders/fulfillment.page.d.ts.map +1 -1
- package/dist/lib/pages/orders/fulfillment.page.js +93 -258
- package/dist/lib/pages/orders/fulfillment.page.js.map +1 -1
- package/dist/lib/pages/orders/order-document.page.js +1 -1
- package/dist/lib/pages/orders/order-document.page.js.map +1 -1
- package/dist/lib/pages/orders/orders-dashboard.page.d.ts +29 -58
- package/dist/lib/pages/orders/orders-dashboard.page.d.ts.map +1 -1
- package/dist/lib/pages/orders/orders-dashboard.page.js +602 -352
- package/dist/lib/pages/orders/orders-dashboard.page.js.map +1 -1
- package/dist/lib/pages/orders/orders-list.page.d.ts +8 -58
- package/dist/lib/pages/orders/orders-list.page.d.ts.map +1 -1
- package/dist/lib/pages/orders/orders-list.page.js +52 -237
- package/dist/lib/pages/orders/orders-list.page.js.map +1 -1
- package/dist/lib/pages/payments/account-credit.page.d.ts +7 -17
- package/dist/lib/pages/payments/account-credit.page.d.ts.map +1 -1
- package/dist/lib/pages/payments/account-credit.page.js +99 -85
- package/dist/lib/pages/payments/account-credit.page.js.map +1 -1
- package/dist/lib/pages/payments/payments-dashboard.page.d.ts +4 -15
- package/dist/lib/pages/payments/payments-dashboard.page.d.ts.map +1 -1
- package/dist/lib/pages/payments/payments-dashboard.page.js +76 -111
- package/dist/lib/pages/payments/payments-dashboard.page.js.map +1 -1
- package/dist/lib/pages/payments/payments-list.page.d.ts +7 -41
- package/dist/lib/pages/payments/payments-list.page.d.ts.map +1 -1
- package/dist/lib/pages/payments/payments-list.page.js +51 -130
- package/dist/lib/pages/payments/payments-list.page.js.map +1 -1
- package/dist/lib/pages/receivables/customer-ar.page.d.ts +6 -8
- package/dist/lib/pages/receivables/customer-ar.page.d.ts.map +1 -1
- package/dist/lib/pages/receivables/customer-ar.page.js +112 -100
- package/dist/lib/pages/receivables/customer-ar.page.js.map +1 -1
- package/dist/lib/pages/receivables/overdue.page.d.ts +6 -3
- package/dist/lib/pages/receivables/overdue.page.d.ts.map +1 -1
- package/dist/lib/pages/receivables/overdue.page.js +61 -65
- package/dist/lib/pages/receivables/overdue.page.js.map +1 -1
- package/dist/lib/pages/receivables/subscriptions.page.d.ts +5 -9
- package/dist/lib/pages/receivables/subscriptions.page.d.ts.map +1 -1
- package/dist/lib/pages/receivables/subscriptions.page.js +139 -153
- package/dist/lib/pages/receivables/subscriptions.page.js.map +1 -1
- package/dist/lib/panels/order-stages.d.ts +12 -16
- package/dist/lib/panels/order-stages.d.ts.map +1 -1
- package/dist/lib/panels/order-stages.js +6 -42
- package/dist/lib/panels/order-stages.js.map +1 -1
- package/dist/lib/panels/party-orders-overview.component.d.ts +3 -1
- package/dist/lib/panels/party-orders-overview.component.d.ts.map +1 -1
- package/dist/lib/panels/party-orders-overview.component.js +18 -6
- package/dist/lib/panels/party-orders-overview.component.js.map +1 -1
- package/dist/lib/panels/status-stepper.component.d.ts +1 -1
- package/dist/lib/panels/status-stepper.component.d.ts.map +1 -1
- package/dist/lib/services/pricing-scheduler.service.d.ts +3 -4
- package/dist/lib/services/pricing-scheduler.service.d.ts.map +1 -1
- package/dist/lib/services/pricing-scheduler.service.js +3 -4
- package/dist/lib/services/pricing-scheduler.service.js.map +1 -1
- package/dist/public-api.d.ts +3 -2
- package/dist/public-api.d.ts.map +1 -1
- package/dist/public-api.js +3 -2
- package/dist/public-api.js.map +1 -1
- package/package.json +28 -16
- package/dist/lib/pages/orders/order-editor.page.d.ts +0 -547
- package/dist/lib/pages/orders/order-editor.page.d.ts.map +0 -1
- package/dist/lib/pages/orders/order-editor.page.js +0 -2269
- package/dist/lib/pages/orders/order-editor.page.js.map +0 -1
- package/dist/lib/pages/orders/order-workspace.page.d.ts +0 -120
- package/dist/lib/pages/orders/order-workspace.page.d.ts.map +0 -1
- package/dist/lib/pages/orders/order-workspace.page.js +0 -443
- package/dist/lib/pages/orders/order-workspace.page.js.map +0 -1
|
@@ -1,443 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* The order workspace — several orders in progress at once, one tab each.
|
|
3
|
-
*
|
|
4
|
-
* WHY THIS EXISTS. The full order editor was reachable only one order at a time, and only for an
|
|
5
|
-
* order that already existed: opening it without a record handed `MJOOrderEditorPageComponent` an
|
|
6
|
-
* undefined `Draft`, so every field rendered its `— none —` fallback and the screen looked like a
|
|
7
|
-
* form that had lost its data. There was no way to start a NEW order there at all — fast entry was
|
|
8
|
-
* the only entry point, which is fine for a two-line counter sale and hopeless for anything with a
|
|
9
|
-
* ship-to, a service period or a promotion.
|
|
10
|
-
*
|
|
11
|
-
* WHAT IT DOES. It owns a `WorkspaceTabStore<OrderHeaderEntity>` and renders the SAME editor for whichever
|
|
12
|
-
* tab is active. A tab is one in-progress order; "New order" mints a real `OrderHeaderEntity` rather than
|
|
13
|
-
* navigating somewhere. Because this is an ordinary template binding (`[Draft]="ActiveDraft"`), the
|
|
14
|
-
* editor's inputs and outputs are wired by Angular — the section's imperative
|
|
15
|
-
* `createComponent` + `setInput` path is bypassed entirely for the editor.
|
|
16
|
-
*
|
|
17
|
-
* WHY THE WORKSPACE CARD AND NOT A ROUTE PER ORDER. Taking orders is a repetitive, interrupt-driven
|
|
18
|
-
* job: a customer calls mid-order, a second walks up, the first needs a line changed. Tabs model
|
|
19
|
-
* that; navigation loses the half-finished draft. Accounting reached the same conclusion for
|
|
20
|
-
* journal entries and built `mj-workspace-card`, so orders uses it rather than inventing a second
|
|
21
|
-
* one — see `../../transfer-pending/README.md` for why there are two copies today and why that is
|
|
22
|
-
* the argument for promoting it.
|
|
23
|
-
*
|
|
24
|
-
* STATE IS SESSION-SCOPED, deliberately. A tab lives until it is closed or the session ends; the
|
|
25
|
-
* framework does not persist drafts to the database. "Keep as draft" is what makes an order durable
|
|
26
|
-
* — it saves through `OrdersSaveOrderOperation` and leaves the tab open, marked clean.
|
|
27
|
-
*
|
|
28
|
-
* CONNECTS TO:
|
|
29
|
-
* EDITOR: ./order-editor.page.ts — the per-order surface, unchanged in shape
|
|
30
|
-
* FRAMEWORK: ../../transfer-pending/workspace-tabs/ — parked, owed to ng-ui-components
|
|
31
|
-
*/
|
|
32
|
-
import { ChangeDetectionStrategy, ChangeDetectorRef, Component, EventEmitter, Input, Output, inject } from '@angular/core';
|
|
33
|
-
import { CommonModule } from '@angular/common';
|
|
34
|
-
import { Metadata } from '@memberjunction/core';
|
|
35
|
-
import { MJAlertComponent } from '@memberjunction/ng-ui-components';
|
|
36
|
-
import { WorkspaceCardComponent } from '../../transfer-pending/workspace-tabs/workspace-card.component.js';
|
|
37
|
-
import { WorkspaceTabStore } from '../../transfer-pending/workspace-tabs/workspace-tab-store.js';
|
|
38
|
-
import { MJOOrderEditorPageComponent } from './order-editor.page.js';
|
|
39
|
-
import { MJOPricingScheduler } from '../../services/pricing-scheduler.service.js';
|
|
40
|
-
import { ReadableSaveError } from '../../services/save-error.js';
|
|
41
|
-
import { MJO_ENTITIES } from '../../data/entity-names.js';
|
|
42
|
-
import * as i0 from "@angular/core";
|
|
43
|
-
function MJOOrderWorkspacePageComponent_Conditional_0_Template(rf, ctx) { if (rf & 1) {
|
|
44
|
-
const _r1 = i0.ɵɵgetCurrentView();
|
|
45
|
-
i0.ɵɵelementStart(0, "mj-alert", 4);
|
|
46
|
-
i0.ɵɵlistener("Dismissed", function MJOOrderWorkspacePageComponent_Conditional_0_Template_mj_alert_Dismissed_0_listener() { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.Error = null); });
|
|
47
|
-
i0.ɵɵtext(1);
|
|
48
|
-
i0.ɵɵelementEnd();
|
|
49
|
-
} if (rf & 2) {
|
|
50
|
-
const ctx_r1 = i0.ɵɵnextContext();
|
|
51
|
-
i0.ɵɵproperty("Dismissible", true);
|
|
52
|
-
i0.ɵɵadvance();
|
|
53
|
-
i0.ɵɵtextInterpolate(ctx_r1.Error);
|
|
54
|
-
} }
|
|
55
|
-
function MJOOrderWorkspacePageComponent_Conditional_2_Template(rf, ctx) { if (rf & 1) {
|
|
56
|
-
const _r3 = i0.ɵɵgetCurrentView();
|
|
57
|
-
i0.ɵɵelementStart(0, "mjo-order-editor-page", 5);
|
|
58
|
-
i0.ɵɵlistener("Saved", function MJOOrderWorkspacePageComponent_Conditional_2_Template_mjo_order_editor_page_Saved_0_listener($event) { i0.ɵɵrestoreView(_r3); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.OnEditorSaved($event)); });
|
|
59
|
-
i0.ɵɵelementEnd();
|
|
60
|
-
} if (rf & 2) {
|
|
61
|
-
const ctx_r1 = i0.ɵɵnextContext();
|
|
62
|
-
i0.ɵɵproperty("Order", ctx)("Catalog", ctx_r1.Catalog)("Tenders", ctx_r1.Tenders)("Companies", ctx_r1.Companies)("Status", ctx_r1.ActiveStatus)("OrderNumber", ctx_r1.ActiveOrderNumber)("ShowActions", false);
|
|
63
|
-
} }
|
|
64
|
-
function MJOOrderWorkspacePageComponent_Conditional_3_Template(rf, ctx) { if (rf & 1) {
|
|
65
|
-
const _r4 = i0.ɵɵgetCurrentView();
|
|
66
|
-
i0.ɵɵelementStart(0, "div", 3);
|
|
67
|
-
i0.ɵɵelement(1, "i", 6);
|
|
68
|
-
i0.ɵɵelementStart(2, "p");
|
|
69
|
-
i0.ɵɵtext(3, "No order open.");
|
|
70
|
-
i0.ɵɵelementEnd();
|
|
71
|
-
i0.ɵɵelementStart(4, "button", 7);
|
|
72
|
-
i0.ɵɵlistener("click", function MJOOrderWorkspacePageComponent_Conditional_3_Template_button_click_4_listener() { i0.ɵɵrestoreView(_r4); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.NewOrder()); });
|
|
73
|
-
i0.ɵɵelement(5, "i", 8);
|
|
74
|
-
i0.ɵɵtext(6, " New order ");
|
|
75
|
-
i0.ɵɵelementEnd()();
|
|
76
|
-
} }
|
|
77
|
-
/**
|
|
78
|
-
* An order and its lines, loaded together.
|
|
79
|
-
*
|
|
80
|
-
* A free function rather than a service method: it constructs an entity and asks it to load itself,
|
|
81
|
-
* which is `docs/ui-architecture.md`'s definition of work that does not belong behind an injectable.
|
|
82
|
-
*/
|
|
83
|
-
async function loadOrder(orderHeaderID) {
|
|
84
|
-
const md = new Metadata();
|
|
85
|
-
const order = await md.GetEntityObject(MJO_ENTITIES.OrderHeader);
|
|
86
|
-
return (await order.LoadWithLines(orderHeaderID)) ? order : null;
|
|
87
|
-
}
|
|
88
|
-
/** What a tab's caption says before the customer is known. */
|
|
89
|
-
const UNTITLED = 'New order';
|
|
90
|
-
export class MJOOrderWorkspacePageComponent {
|
|
91
|
-
entry = inject(MJOPricingScheduler);
|
|
92
|
-
cdr = inject(ChangeDetectorRef);
|
|
93
|
-
/** The company a new draft is raised against — supplied by the section. */
|
|
94
|
-
CompanyID = '';
|
|
95
|
-
/** Product options, passed straight through to the editor. */
|
|
96
|
-
Catalog = [];
|
|
97
|
-
/** Tenders the instance accepts, likewise passed through. */
|
|
98
|
-
Tenders = [];
|
|
99
|
-
/**
|
|
100
|
-
* Companies an order can be sold as, passed through to the editor's identity strip.
|
|
101
|
-
*
|
|
102
|
-
* The section supplies this to whatever page it mounts, and for 'editor' the page it mounts is
|
|
103
|
-
* THIS workspace — not the editor. Without the pass-through the editor's list stayed empty, so
|
|
104
|
-
* "Selling as" rendered a dash and the picker never appeared however many companies existed.
|
|
105
|
-
*/
|
|
106
|
-
Companies = [];
|
|
107
|
-
/**
|
|
108
|
-
* Set by the section when the user opened a specific order. Handled as an input rather than a
|
|
109
|
-
* method call because the section creates this page imperatively and can only hand it inputs.
|
|
110
|
-
*/
|
|
111
|
-
set OrderID(id) {
|
|
112
|
-
if (id)
|
|
113
|
-
void this.OpenExisting(id);
|
|
114
|
-
}
|
|
115
|
-
/** Raised when an order is confirmed, so the section can refresh lists that now include it. */
|
|
116
|
-
OrderConfirmed = new EventEmitter();
|
|
117
|
-
tabs = new WorkspaceTabStore();
|
|
118
|
-
/** Per-tab metadata the framework deliberately knows nothing about. */
|
|
119
|
-
meta = new Map();
|
|
120
|
-
unsubscribes = new Map();
|
|
121
|
-
Error = null;
|
|
122
|
-
Busy = false;
|
|
123
|
-
get Tabs() {
|
|
124
|
-
return this.tabs.Tabs;
|
|
125
|
-
}
|
|
126
|
-
get ActiveId() {
|
|
127
|
-
return this.tabs.ActiveId;
|
|
128
|
-
}
|
|
129
|
-
get ActiveDraft() {
|
|
130
|
-
return this.tabs.ActiveTab?.State ?? null;
|
|
131
|
-
}
|
|
132
|
-
get ActiveOrderNumber() {
|
|
133
|
-
return this.ActiveId ? (this.meta.get(this.ActiveId)?.OrderNumber ?? null) : null;
|
|
134
|
-
}
|
|
135
|
-
get ActiveStatus() {
|
|
136
|
-
return this.ActiveId ? (this.meta.get(this.ActiveId)?.Stage ?? 'Draft') : 'Draft';
|
|
137
|
-
}
|
|
138
|
-
/**
|
|
139
|
-
* Confirm is gated on the DRAFT'S OWN validation, not on a hand-rolled field check here.
|
|
140
|
-
* `OrderHeaderEntity.Validate()` is the same rule set the server enforces; duplicating it in the UI is
|
|
141
|
-
* how the two drift apart and how a button ends up enabled for an order the server will refuse.
|
|
142
|
-
*/
|
|
143
|
-
get CanConfirm() {
|
|
144
|
-
const d = this.ActiveDraft;
|
|
145
|
-
return !!d && !this.Busy && d.Lines.Count > 0 && d.Validate().Success;
|
|
146
|
-
}
|
|
147
|
-
get ConfirmTitle() {
|
|
148
|
-
const d = this.ActiveDraft;
|
|
149
|
-
if (!d)
|
|
150
|
-
return null;
|
|
151
|
-
if (d.Lines.Count === 0)
|
|
152
|
-
return 'Add at least one line first';
|
|
153
|
-
const result = d.Validate();
|
|
154
|
-
if (!result.Success)
|
|
155
|
-
return result.Errors.map((e) => e.Message).join(' · ');
|
|
156
|
-
return null;
|
|
157
|
-
}
|
|
158
|
-
/**
|
|
159
|
-
* Map the stored status onto the stepper's stage.
|
|
160
|
-
*
|
|
161
|
-
* Anything unrecognised falls back to `Draft` — but only for a MISSING status. A status we do
|
|
162
|
-
* not recognise is safer treated as read-only than as editable, because the failure modes are
|
|
163
|
-
* not symmetric: wrongly read-only is an inconvenience, wrongly editable invites someone to
|
|
164
|
-
* change a booked order.
|
|
165
|
-
*/
|
|
166
|
-
StageOf(status) {
|
|
167
|
-
if (!status)
|
|
168
|
-
return 'Draft';
|
|
169
|
-
const known = ['Draft', 'Quoted', 'Confirmed', 'Posted', 'Fulfilled'];
|
|
170
|
-
return known.find((s) => s.toLowerCase() === status.toLowerCase()) ?? 'Confirmed';
|
|
171
|
-
}
|
|
172
|
-
ngOnDestroy() {
|
|
173
|
-
for (const stop of this.unsubscribes.values())
|
|
174
|
-
stop();
|
|
175
|
-
this.unsubscribes.clear();
|
|
176
|
-
}
|
|
177
|
-
// ── tabs ────────────────────────────────────────────────────────────────────────────────
|
|
178
|
-
/** Mint a real draft. This is the thing the editor never had. */
|
|
179
|
-
async NewOrder() {
|
|
180
|
-
if (!this.CompanyID) {
|
|
181
|
-
this.Error = 'No company is configured for this instance, so an order cannot be raised.';
|
|
182
|
-
this.cdr.detectChanges();
|
|
183
|
-
return;
|
|
184
|
-
}
|
|
185
|
-
const md = new Metadata();
|
|
186
|
-
const draft = await md.GetEntityObject(MJO_ENTITIES.OrderHeader);
|
|
187
|
-
draft.NewRecord();
|
|
188
|
-
draft.CompanyID = this.CompanyID;
|
|
189
|
-
this.OpenTab(draft, { Label: UNTITLED, OrderNumber: null, Stage: 'Draft' });
|
|
190
|
-
}
|
|
191
|
-
/**
|
|
192
|
-
* Take over a draft someone else was already building — fast entry escalating to the full
|
|
193
|
-
* editor.
|
|
194
|
-
*
|
|
195
|
-
* The SAME OrderHeaderEntity instance is adopted, not a copy. That is what makes escalation lossless:
|
|
196
|
-
* fast entry hands over the object it has been mutating, so every line, party and promotion
|
|
197
|
-
* code typed so far is simply already there. Copying would work today and drift the moment the
|
|
198
|
-
* draft grows a field the copier forgets.
|
|
199
|
-
*
|
|
200
|
-
* If this exact draft is already open in a tab, focus it rather than opening a second — two
|
|
201
|
-
* tabs editing one draft would be two views racing to save the same order.
|
|
202
|
-
*/
|
|
203
|
-
AdoptDraft(draft) {
|
|
204
|
-
const existing = this.tabs.Tabs.find((t) => t.State === draft);
|
|
205
|
-
if (existing) {
|
|
206
|
-
this.tabs.Activate(existing.Id);
|
|
207
|
-
this.cdr.detectChanges();
|
|
208
|
-
return;
|
|
209
|
-
}
|
|
210
|
-
this.OpenTab(draft, { Label: UNTITLED, OrderNumber: null, Stage: 'Draft' });
|
|
211
|
-
}
|
|
212
|
-
/** Open an order that already exists, or focus its tab if it is already open. */
|
|
213
|
-
async OpenExisting(orderHeaderID) {
|
|
214
|
-
// Re-opening the same order must not create a second tab — two tabs editing one order is
|
|
215
|
-
// two drafts racing to save over each other.
|
|
216
|
-
for (const tab of this.tabs.Tabs) {
|
|
217
|
-
if (tab.State.ID === orderHeaderID) {
|
|
218
|
-
this.tabs.Activate(tab.Id);
|
|
219
|
-
this.cdr.detectChanges();
|
|
220
|
-
return;
|
|
221
|
-
}
|
|
222
|
-
}
|
|
223
|
-
try {
|
|
224
|
-
// ONE read now, not two.
|
|
225
|
-
//
|
|
226
|
-
// This used to load a draft AND separately query the order row, because `OrderDraft`
|
|
227
|
-
// modelled only what could be EDITED — no order number, no status. Opening an existing
|
|
228
|
-
// order with the draft alone labelled the tab "New order", showed "New draft" where the
|
|
229
|
-
// number belongs, and left `Stage: 'Draft'`, which is what `IsEditable` keys off: a
|
|
230
|
-
// CONFIRMED order came up fully editable.
|
|
231
|
-
//
|
|
232
|
-
// The entity carries OrderNumber and Status because the table does, so that whole class
|
|
233
|
-
// of bug is gone rather than guarded against.
|
|
234
|
-
const draft = await loadOrder(orderHeaderID);
|
|
235
|
-
if (!draft) {
|
|
236
|
-
this.Error = 'That order could not be loaded.';
|
|
237
|
-
this.cdr.detectChanges();
|
|
238
|
-
return;
|
|
239
|
-
}
|
|
240
|
-
this.OpenTab(draft, {
|
|
241
|
-
Label: draft.OrderNumber ?? UNTITLED,
|
|
242
|
-
OrderNumber: draft.OrderNumber ?? null,
|
|
243
|
-
Stage: this.StageOf(draft.Status),
|
|
244
|
-
});
|
|
245
|
-
}
|
|
246
|
-
catch (e) {
|
|
247
|
-
this.Error = ReadableSaveError(e);
|
|
248
|
-
this.cdr.detectChanges();
|
|
249
|
-
}
|
|
250
|
-
}
|
|
251
|
-
OpenTab(draft, init) {
|
|
252
|
-
const id = `ord-${Date.now().toString(36)}-${this.tabs.Count}`;
|
|
253
|
-
this.meta.set(id, { OrderNumber: init.OrderNumber, Stage: init.Stage });
|
|
254
|
-
this.tabs.Open({
|
|
255
|
-
Id: id,
|
|
256
|
-
Label: init.Label,
|
|
257
|
-
Icon: 'fa-solid fa-file-invoice',
|
|
258
|
-
// An order that is already past Draft opens as a COMPLETE tab — read-only, and marked
|
|
259
|
-
// as such in the strip — rather than as a draft the user might expect to edit.
|
|
260
|
-
Status: init.Stage === 'Draft' || init.Stage === 'Quoted' ? 'draft' : 'complete',
|
|
261
|
-
State: draft,
|
|
262
|
-
Dirty: false,
|
|
263
|
-
});
|
|
264
|
-
// The draft is the source of truth for the tab's caption and dirty flag. Subscribing keeps
|
|
265
|
-
// both honest without the editor having to report anything upward — it already mutates the
|
|
266
|
-
// draft it was handed, and that is the only channel needed.
|
|
267
|
-
// NO SUBSCRIBE. The tab holds the entity itself, so there is nothing to copy into the tab
|
|
268
|
-
// state when it changes — `UpdateState` existed to keep a snapshot in step with the draft.
|
|
269
|
-
// The editor mutates the very object this store holds, and the tab's dirty flag comes from
|
|
270
|
-
// the entity's own `Dirty`, which rolls up its lines.
|
|
271
|
-
this.tabs.UpdateState(id, draft);
|
|
272
|
-
this.cdr.detectChanges();
|
|
273
|
-
}
|
|
274
|
-
OnTabSelected(id) {
|
|
275
|
-
this.tabs.Activate(id);
|
|
276
|
-
this.cdr.detectChanges();
|
|
277
|
-
}
|
|
278
|
-
OnTabClosed(id) {
|
|
279
|
-
this.unsubscribes.get(id)?.();
|
|
280
|
-
this.unsubscribes.delete(id);
|
|
281
|
-
this.meta.delete(id);
|
|
282
|
-
this.tabs.Close(id);
|
|
283
|
-
this.cdr.detectChanges();
|
|
284
|
-
}
|
|
285
|
-
OnTabReordered(move) {
|
|
286
|
-
this.tabs.Reorder(move.previousIndex, move.currentIndex);
|
|
287
|
-
this.cdr.detectChanges();
|
|
288
|
-
}
|
|
289
|
-
// ── footer actions ──────────────────────────────────────────────────────────────────────
|
|
290
|
-
/** Persist without confirming. The order becomes durable; the tab stays open. */
|
|
291
|
-
async OnKeepAsDraft() {
|
|
292
|
-
const id = this.ActiveId;
|
|
293
|
-
const draft = this.ActiveDraft;
|
|
294
|
-
if (!id || !draft || this.Busy)
|
|
295
|
-
return;
|
|
296
|
-
this.Busy = true;
|
|
297
|
-
this.Error = null;
|
|
298
|
-
this.cdr.detectChanges();
|
|
299
|
-
try {
|
|
300
|
-
await draft.SaveOrThrow();
|
|
301
|
-
// The order number is assigned by the save and lands on the entity itself, so it is read
|
|
302
|
-
// back from the object rather than from an operation's output envelope.
|
|
303
|
-
if (draft.OrderNumber) {
|
|
304
|
-
this.meta.set(id, { OrderNumber: draft.OrderNumber, Stage: this.meta.get(id)?.Stage ?? 'Draft' });
|
|
305
|
-
this.tabs.Tabs.find((t) => t.Id === id).Label = draft.OrderNumber;
|
|
306
|
-
}
|
|
307
|
-
this.tabs.MarkClean(id);
|
|
308
|
-
}
|
|
309
|
-
catch (e) {
|
|
310
|
-
this.Error = ReadableSaveError(e);
|
|
311
|
-
}
|
|
312
|
-
finally {
|
|
313
|
-
this.Busy = false;
|
|
314
|
-
this.cdr.detectChanges();
|
|
315
|
-
}
|
|
316
|
-
}
|
|
317
|
-
async OnConfirm() {
|
|
318
|
-
const id = this.ActiveId;
|
|
319
|
-
const draft = this.ActiveDraft;
|
|
320
|
-
if (!id || !draft || this.Busy)
|
|
321
|
-
return;
|
|
322
|
-
this.Busy = true;
|
|
323
|
-
this.Error = null;
|
|
324
|
-
this.cdr.detectChanges();
|
|
325
|
-
try {
|
|
326
|
-
// Throws with the engine's reason if the confirm is refused — nothing is booked and the
|
|
327
|
-
// catch below shows why. There is no success-shaped failure to mistake for a success.
|
|
328
|
-
await draft.Confirm();
|
|
329
|
-
// A confirmed order is kept OPEN and read-only rather than closed: the person who just
|
|
330
|
-
// took it usually needs to read the number back to the customer.
|
|
331
|
-
//
|
|
332
|
-
// Everything below is read from the ENTITY, which the save updated in place — no output
|
|
333
|
-
// envelope to unpack, and no chance of the screen and the record disagreeing.
|
|
334
|
-
this.meta.set(id, { OrderNumber: draft.OrderNumber ?? null, Stage: 'Confirmed' });
|
|
335
|
-
const tab = this.tabs.Tabs.find((t) => t.Id === id);
|
|
336
|
-
if (tab && draft.OrderNumber)
|
|
337
|
-
tab.Label = draft.OrderNumber;
|
|
338
|
-
this.tabs.SetStatus(id, 'complete');
|
|
339
|
-
this.tabs.MarkClean(id);
|
|
340
|
-
if (draft.ID)
|
|
341
|
-
this.OrderConfirmed.emit(draft.ID);
|
|
342
|
-
}
|
|
343
|
-
catch (e) {
|
|
344
|
-
this.Error = ReadableSaveError(e);
|
|
345
|
-
}
|
|
346
|
-
finally {
|
|
347
|
-
this.Busy = false;
|
|
348
|
-
this.cdr.detectChanges();
|
|
349
|
-
}
|
|
350
|
-
}
|
|
351
|
-
/** Throw the tab away. The card asks for confirmation when the tab is dirty. */
|
|
352
|
-
OnDiscard() {
|
|
353
|
-
if (this.ActiveId)
|
|
354
|
-
this.OnTabClosed(this.ActiveId);
|
|
355
|
-
}
|
|
356
|
-
OnEditorSaved(draft) {
|
|
357
|
-
if (this.ActiveId)
|
|
358
|
-
this.tabs.UpdateState(this.ActiveId, draft);
|
|
359
|
-
this.cdr.detectChanges();
|
|
360
|
-
}
|
|
361
|
-
static ɵfac = function MJOOrderWorkspacePageComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || MJOOrderWorkspacePageComponent)(); };
|
|
362
|
-
static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: MJOOrderWorkspacePageComponent, selectors: [["mjo-order-workspace-page"]], inputs: { CompanyID: "CompanyID", Catalog: "Catalog", Tenders: "Tenders", Companies: "Companies", OrderID: "OrderID" }, outputs: { OrderConfirmed: "OrderConfirmed" }, decls: 4, vars: 9, consts: [["Variant", "error", 3, "Dismissible"], ["AriaLabel", "Orders in progress", "NewTabLabel", "New order", "ConfirmLabel", "Confirm order", "ConfirmIcon", "fa-solid fa-circle-check", "ConfirmBusyLabel", "Confirming\u2026", "DraftLabel", "Keep as draft", 1, "mjo-orderws", 3, "TabSelected", "TabClosed", "NewTabRequested", "TabReordered", "Confirm", "SaveDraft", "Discard", "Tabs", "ActiveId", "ShowFooter", "ConfirmDisabled", "ConfirmTitle", "ConfirmBusy", "DraftDisabled"], [3, "Order", "Catalog", "Tenders", "Companies", "Status", "OrderNumber", "ShowActions"], [1, "mjo-orderws__empty"], ["Variant", "error", 3, "Dismissed", "Dismissible"], [3, "Saved", "Order", "Catalog", "Tenders", "Companies", "Status", "OrderNumber", "ShowActions"], ["aria-hidden", "true", 1, "fa-solid", "fa-cart-plus"], ["type", "button", 1, "mj-btn", "mj-btn--primary", 3, "click"], ["aria-hidden", "true", 1, "fa-solid", "fa-plus"]], template: function MJOOrderWorkspacePageComponent_Template(rf, ctx) { if (rf & 1) {
|
|
363
|
-
i0.ɵɵconditionalCreate(0, MJOOrderWorkspacePageComponent_Conditional_0_Template, 2, 2, "mj-alert", 0);
|
|
364
|
-
i0.ɵɵelementStart(1, "mj-workspace-card", 1);
|
|
365
|
-
i0.ɵɵlistener("TabSelected", function MJOOrderWorkspacePageComponent_Template_mj_workspace_card_TabSelected_1_listener($event) { return ctx.OnTabSelected($event); })("TabClosed", function MJOOrderWorkspacePageComponent_Template_mj_workspace_card_TabClosed_1_listener($event) { return ctx.OnTabClosed($event); })("NewTabRequested", function MJOOrderWorkspacePageComponent_Template_mj_workspace_card_NewTabRequested_1_listener() { return ctx.NewOrder(); })("TabReordered", function MJOOrderWorkspacePageComponent_Template_mj_workspace_card_TabReordered_1_listener($event) { return ctx.OnTabReordered($event); })("Confirm", function MJOOrderWorkspacePageComponent_Template_mj_workspace_card_Confirm_1_listener() { return ctx.OnConfirm(); })("SaveDraft", function MJOOrderWorkspacePageComponent_Template_mj_workspace_card_SaveDraft_1_listener() { return ctx.OnKeepAsDraft(); })("Discard", function MJOOrderWorkspacePageComponent_Template_mj_workspace_card_Discard_1_listener() { return ctx.OnDiscard(); });
|
|
366
|
-
i0.ɵɵconditionalCreate(2, MJOOrderWorkspacePageComponent_Conditional_2_Template, 1, 7, "mjo-order-editor-page", 2)(3, MJOOrderWorkspacePageComponent_Conditional_3_Template, 7, 0, "div", 3);
|
|
367
|
-
i0.ɵɵelementEnd();
|
|
368
|
-
} if (rf & 2) {
|
|
369
|
-
let tmp_8_0;
|
|
370
|
-
i0.ɵɵconditional(ctx.Error ? 0 : -1);
|
|
371
|
-
i0.ɵɵadvance();
|
|
372
|
-
i0.ɵɵproperty("Tabs", ctx.Tabs)("ActiveId", ctx.ActiveId)("ShowFooter", !!ctx.ActiveDraft)("ConfirmDisabled", !ctx.CanConfirm)("ConfirmTitle", ctx.ConfirmTitle)("ConfirmBusy", ctx.Busy)("DraftDisabled", !ctx.ActiveDraft || ctx.Busy);
|
|
373
|
-
i0.ɵɵadvance();
|
|
374
|
-
i0.ɵɵconditional((tmp_8_0 = ctx.ActiveDraft) ? 2 : 3, tmp_8_0);
|
|
375
|
-
} }, dependencies: [CommonModule, WorkspaceCardComponent, MJOOrderEditorPageComponent, MJAlertComponent], styles: ["\n\n\n\n \n\n\n\n\n\n\n\n\n\n [_nghost-%COMP%] {\n display: flex;\n flex-direction: column;\n block-size: 100%;\n min-block-size: 0;\n padding: var(--mj-space-4);\n background: var(--mj-bg-page);\n }\n .mjo-orderws[_ngcontent-%COMP%] {\n flex: 1 1 auto;\n min-block-size: 0;\n }\n \n\n .mjo-orderws__empty[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface);\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n gap: var(--mj-space-3);\n min-block-size: 40cqh;\n color: var(--mj-text-secondary);\n }\n .mjo-orderws__empty[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: var(--mj-text-2xl);\n color: var(--mj-text-tertiary);\n }"], changeDetection: 0 });
|
|
376
|
-
}
|
|
377
|
-
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MJOOrderWorkspacePageComponent, [{
|
|
378
|
-
type: Component,
|
|
379
|
-
args: [{ selector: 'mjo-order-workspace-page', standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, imports: [CommonModule, WorkspaceCardComponent, MJOOrderEditorPageComponent, MJAlertComponent], template: `
|
|
380
|
-
@if (Error) {
|
|
381
|
-
<mj-alert Variant="error" [Dismissible]="true" (Dismissed)="Error = null">{{ Error }}</mj-alert>
|
|
382
|
-
}
|
|
383
|
-
|
|
384
|
-
<mj-workspace-card
|
|
385
|
-
class="mjo-orderws"
|
|
386
|
-
AriaLabel="Orders in progress"
|
|
387
|
-
NewTabLabel="New order"
|
|
388
|
-
[Tabs]="Tabs"
|
|
389
|
-
[ActiveId]="ActiveId"
|
|
390
|
-
[ShowFooter]="!!ActiveDraft"
|
|
391
|
-
ConfirmLabel="Confirm order"
|
|
392
|
-
ConfirmIcon="fa-solid fa-circle-check"
|
|
393
|
-
[ConfirmDisabled]="!CanConfirm"
|
|
394
|
-
[ConfirmTitle]="ConfirmTitle"
|
|
395
|
-
[ConfirmBusy]="Busy"
|
|
396
|
-
ConfirmBusyLabel="Confirming…"
|
|
397
|
-
DraftLabel="Keep as draft"
|
|
398
|
-
[DraftDisabled]="!ActiveDraft || Busy"
|
|
399
|
-
(TabSelected)="OnTabSelected($event)"
|
|
400
|
-
(TabClosed)="OnTabClosed($event)"
|
|
401
|
-
(NewTabRequested)="NewOrder()"
|
|
402
|
-
(TabReordered)="OnTabReordered($event)"
|
|
403
|
-
(Confirm)="OnConfirm()"
|
|
404
|
-
(SaveDraft)="OnKeepAsDraft()"
|
|
405
|
-
(Discard)="OnDiscard()">
|
|
406
|
-
|
|
407
|
-
@if (ActiveDraft; as draft) {
|
|
408
|
-
<mjo-order-editor-page
|
|
409
|
-
[Order]="draft"
|
|
410
|
-
[Catalog]="Catalog"
|
|
411
|
-
[Tenders]="Tenders"
|
|
412
|
-
[Companies]="Companies"
|
|
413
|
-
[Status]="ActiveStatus"
|
|
414
|
-
[OrderNumber]="ActiveOrderNumber"
|
|
415
|
-
[ShowActions]="false"
|
|
416
|
-
(Saved)="OnEditorSaved($event)" />
|
|
417
|
-
} @else {
|
|
418
|
-
<!-- Not an error state: a workspace with no tabs is the normal starting point. -->
|
|
419
|
-
<div class="mjo-orderws__empty">
|
|
420
|
-
<i class="fa-solid fa-cart-plus" aria-hidden="true"></i>
|
|
421
|
-
<p>No order open.</p>
|
|
422
|
-
<button type="button" class="mj-btn mj-btn--primary" (click)="NewOrder()">
|
|
423
|
-
<i class="fa-solid fa-plus" aria-hidden="true"></i> New order
|
|
424
|
-
</button>
|
|
425
|
-
</div>
|
|
426
|
-
}
|
|
427
|
-
</mj-workspace-card>
|
|
428
|
-
`, styles: ["\n /* Container units, never viewport \u2014 the card is a pane, not the screen.\n (transfer-pending/README.md \u2192 DESIGN RULE, Marcelo 2026-07-21.) */\n\n /* THE PAGE SUPPLIES ITS OWN GUTTER. The section shell wraps pages in\n <mj-page-body-interior [Padding]=\"false\"> and says so in its comment: padding is off\n \"because each page supplies its own\". This page supplied none, so the card \u2014 which\n draws its own border and 12px radius and is designed as one object AGAINST a page \u2014\n sat flush against the viewport edge with its border pressed flat and nothing to\n separate the working surface from the page.\n\n The inset belongs HERE, not on the card: the card is a byte-identical parked copy of\n accounting's, and a component should not reserve space around itself anyway. */\n :host {\n display: flex;\n flex-direction: column;\n block-size: 100%;\n min-block-size: 0;\n padding: var(--mj-space-4);\n background: var(--mj-bg-page);\n }\n .mjo-orderws {\n flex: 1 1 auto;\n min-block-size: 0;\n }\n /* Inside the card, so it conforms to the card's surface \u2014 not the page tone above. */\n .mjo-orderws__empty {\n background: var(--mj-bg-surface);\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n gap: var(--mj-space-3);\n min-block-size: 40cqh;\n color: var(--mj-text-secondary);\n }\n .mjo-orderws__empty i {\n font-size: var(--mj-text-2xl);\n color: var(--mj-text-tertiary);\n }\n "] }]
|
|
429
|
-
}], null, { CompanyID: [{
|
|
430
|
-
type: Input
|
|
431
|
-
}], Catalog: [{
|
|
432
|
-
type: Input
|
|
433
|
-
}], Tenders: [{
|
|
434
|
-
type: Input
|
|
435
|
-
}], Companies: [{
|
|
436
|
-
type: Input
|
|
437
|
-
}], OrderID: [{
|
|
438
|
-
type: Input
|
|
439
|
-
}], OrderConfirmed: [{
|
|
440
|
-
type: Output
|
|
441
|
-
}] }); })();
|
|
442
|
-
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(MJOOrderWorkspacePageComponent, { className: "MJOOrderWorkspacePageComponent", filePath: "lib/pages/orders/order-workspace.page.ts", lineNumber: 164 }); })();
|
|
443
|
-
//# sourceMappingURL=order-workspace.page.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"order-workspace.page.js","sourceRoot":"","sources":["../../../../src/lib/pages/orders/order-workspace.page.ts"],"names":[],"mappings":"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"}
|