@mj-biz-apps/orders-ng 5.26.0 → 5.28.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.
Files changed (62) hide show
  1. package/dist/lib/custom/OrderHeader/order-lines-editor.component.d.ts +18 -1
  2. package/dist/lib/custom/OrderHeader/order-lines-editor.component.d.ts.map +1 -1
  3. package/dist/lib/custom/OrderHeader/order-lines-editor.component.js +500 -386
  4. package/dist/lib/custom/OrderHeader/order-lines-editor.component.js.map +1 -1
  5. package/dist/lib/custom/Product/product-save-guard-form.component.js +71 -69
  6. package/dist/lib/custom/Product/product-save-guard-form.component.js.map +1 -1
  7. package/dist/lib/data/orders-queries.d.ts +7 -6
  8. package/dist/lib/data/orders-queries.d.ts.map +1 -1
  9. package/dist/lib/data/orders-queries.js +6 -6
  10. package/dist/lib/data/orders-queries.js.map +1 -1
  11. package/dist/lib/form-panels/external-invoices.panel.d.ts.map +1 -1
  12. package/dist/lib/form-panels/external-invoices.panel.js +2 -3
  13. package/dist/lib/form-panels/external-invoices.panel.js.map +1 -1
  14. package/dist/lib/form-panels/product-widget.panels.d.ts.map +1 -1
  15. package/dist/lib/form-panels/product-widget.panels.js +34 -3
  16. package/dist/lib/form-panels/product-widget.panels.js.map +1 -1
  17. package/dist/lib/generated/Entities/mjBizAppsOrdersCheckoutSession/mjbizappsorderscheckoutsession.form.component.d.ts.map +1 -1
  18. package/dist/lib/generated/Entities/mjBizAppsOrdersCheckoutSession/mjbizappsorderscheckoutsession.form.component.js +1 -1
  19. package/dist/lib/generated/Entities/mjBizAppsOrdersCheckoutSession/mjbizappsorderscheckoutsession.form.component.js.map +1 -1
  20. package/dist/lib/generated/Entities/mjBizAppsOrdersEntitlementGrant/mjbizappsordersentitlementgrant.form.component.js +1 -1
  21. package/dist/lib/generated/Entities/mjBizAppsOrdersEntitlementGrant/mjbizappsordersentitlementgrant.form.component.js.map +1 -1
  22. package/dist/lib/generated/Entities/mjBizAppsOrdersEventOrderLine/mjbizappsorderseventorderline.form.component.js +13 -9
  23. package/dist/lib/generated/Entities/mjBizAppsOrdersEventOrderLine/mjbizappsorderseventorderline.form.component.js.map +1 -1
  24. package/dist/lib/generated/Entities/mjBizAppsOrdersEventProduct/mjbizappsorderseventproduct.form.component.d.ts.map +1 -1
  25. package/dist/lib/generated/Entities/mjBizAppsOrdersEventProduct/mjbizappsorderseventproduct.form.component.js +19 -9
  26. package/dist/lib/generated/Entities/mjBizAppsOrdersEventProduct/mjbizappsorderseventproduct.form.component.js.map +1 -1
  27. package/dist/lib/generated/Entities/mjBizAppsOrdersOrderCompanyPolicy/mjbizappsordersordercompanypolicy.form.component.js +9 -7
  28. package/dist/lib/generated/Entities/mjBizAppsOrdersOrderCompanyPolicy/mjbizappsordersordercompanypolicy.form.component.js.map +1 -1
  29. package/dist/lib/generated/Entities/mjBizAppsOrdersOrderHeader/mjbizappsordersorderheader.form.component.js +129 -123
  30. package/dist/lib/generated/Entities/mjBizAppsOrdersOrderHeader/mjbizappsordersorderheader.form.component.js.map +1 -1
  31. package/dist/lib/generated/Entities/mjBizAppsOrdersOrderHeaderPaymentSchedule/mjbizappsordersorderheaderpaymentschedule.form.component.d.ts.map +1 -1
  32. package/dist/lib/generated/Entities/mjBizAppsOrdersOrderHeaderPaymentSchedule/mjbizappsordersorderheaderpaymentschedule.form.component.js +23 -5
  33. package/dist/lib/generated/Entities/mjBizAppsOrdersOrderHeaderPaymentSchedule/mjbizappsordersorderheaderpaymentschedule.form.component.js.map +1 -1
  34. package/dist/lib/generated/Entities/mjBizAppsOrdersOrderLine/mjbizappsordersorderline.form.component.d.ts.map +1 -1
  35. package/dist/lib/generated/Entities/mjBizAppsOrdersOrderLine/mjbizappsordersorderline.form.component.js +126 -100
  36. package/dist/lib/generated/Entities/mjBizAppsOrdersOrderLine/mjbizappsordersorderline.form.component.js.map +1 -1
  37. package/dist/lib/generated/Entities/mjBizAppsOrdersPaymentHeader/mjbizappsorderspaymentheader.form.component.js +10 -10
  38. package/dist/lib/generated/Entities/mjBizAppsOrdersPaymentHeader/mjbizappsorderspaymentheader.form.component.js.map +1 -1
  39. package/dist/lib/generated/Entities/mjBizAppsOrdersPaymentProvider/mjbizappsorderspaymentprovider.form.component.d.ts.map +1 -1
  40. package/dist/lib/generated/Entities/mjBizAppsOrdersPaymentProvider/mjbizappsorderspaymentprovider.form.component.js +1 -0
  41. package/dist/lib/generated/Entities/mjBizAppsOrdersPaymentProvider/mjbizappsorderspaymentprovider.form.component.js.map +1 -1
  42. package/dist/lib/generated/Entities/mjBizAppsOrdersProduct/mjbizappsordersproduct.form.component.js +71 -69
  43. package/dist/lib/generated/Entities/mjBizAppsOrdersProduct/mjbizappsordersproduct.form.component.js.map +1 -1
  44. package/dist/lib/generated/Entities/mjBizAppsOrdersProductCategory/mjbizappsordersproductcategory.form.component.js +33 -31
  45. package/dist/lib/generated/Entities/mjBizAppsOrdersProductCategory/mjbizappsordersproductcategory.form.component.js.map +1 -1
  46. package/dist/lib/generated/Entities/mjBizAppsOrdersSalesAuthority/mjbizappsorderssalesauthority.form.component.d.ts.map +1 -1
  47. package/dist/lib/generated/Entities/mjBizAppsOrdersSalesAuthority/mjbizappsorderssalesauthority.form.component.js +25 -19
  48. package/dist/lib/generated/Entities/mjBizAppsOrdersSalesAuthority/mjbizappsorderssalesauthority.form.component.js.map +1 -1
  49. package/dist/lib/generated/Entities/mjBizAppsOrdersSalesRule/mjbizappsorderssalesrule.form.component.d.ts.map +1 -1
  50. package/dist/lib/generated/Entities/mjBizAppsOrdersSalesRule/mjbizappsorderssalesrule.form.component.js +1 -1
  51. package/dist/lib/generated/Entities/mjBizAppsOrdersSalesRule/mjbizappsorderssalesrule.form.component.js.map +1 -1
  52. package/dist/lib/generated/Entities/mjBizAppsOrdersSubscription/mjbizappsorderssubscription.form.component.js +46 -42
  53. package/dist/lib/generated/Entities/mjBizAppsOrdersSubscription/mjbizappsorderssubscription.form.component.js.map +1 -1
  54. package/dist/lib/generated/Entities/mjBizAppsOrdersSubscriptionFamily/mjbizappsorderssubscriptionfamily.form.component.d.ts +10 -0
  55. package/dist/lib/generated/Entities/mjBizAppsOrdersSubscriptionFamily/mjbizappsorderssubscriptionfamily.form.component.d.ts.map +1 -0
  56. package/dist/lib/generated/Entities/mjBizAppsOrdersSubscriptionFamily/mjbizappsorderssubscriptionfamily.form.component.js +84 -0
  57. package/dist/lib/generated/Entities/mjBizAppsOrdersSubscriptionFamily/mjbizappsorderssubscriptionfamily.form.component.js.map +1 -0
  58. package/dist/lib/generated/generated-forms.module.d.ts +101 -90
  59. package/dist/lib/generated/generated-forms.module.d.ts.map +1 -1
  60. package/dist/lib/generated/generated-forms.module.js +110 -47
  61. package/dist/lib/generated/generated-forms.module.js.map +1 -1
  62. package/package.json +17 -17
@@ -4,7 +4,7 @@ import { FormsModule } from '@angular/forms';
4
4
  import { CompositeKey, Metadata, RunView, } from '@memberjunction/core';
5
5
  import { UUIDsEqual } from '@memberjunction/global';
6
6
  import { BaseFormsModule, } from '@memberjunction/ng-base-forms';
7
- import { OrderLineEntity, ClampLineQuantity, CanRestoreLineDefault, IsLinePriceOverridden, LineNeedsOverrideReason, LinePriceOverrideReason, ListApplicablePrices, LoadOrdersEngine, OrdersEngine, RestoreLineDefault, loadApplicabilityContext, priceOverrideCatalogInstalled, userPriceOverrideKind, } from '@mj-biz-apps/orders-entities';
7
+ import { OrderLineEntity, OrdersCheckCoverageOverlapOperation, ClampLineQuantity, CanRestoreLineDefault, IsLinePriceOverridden, LineNeedsOverrideReason, LinePriceOverrideReason, ListApplicablePrices, LoadOrdersEngine, OrdersEngine, RestoreLineDefault, loadApplicabilityContext, priceOverrideCatalogInstalled, userPriceOverrideKind, } from '@mj-biz-apps/orders-entities';
8
8
  import { MJOConsequenceChipComponent, MJOPriceSourceBadgeComponent } from '../../panels/chips.component.js';
9
9
  import { MJOLinePricePickerComponent } from '../../panels/line-price-picker.component.js';
10
10
  import { FormatMoney, MJOMoneyPipe } from '../../panels/money-format.js';
@@ -20,286 +20,295 @@ import * as i1 from "@angular/forms";
20
20
  import * as i2 from "@memberjunction/ng-base-forms";
21
21
  const _c0 = ["pickerHost"];
22
22
  const _forTrack0 = ($index, $item) => $item.ID;
23
- function MJOOrderLinesEditorComponent_For_2_Conditional_7_Template(rf, ctx) { if (rf & 1) {
23
+ function MJOOrderLinesEditorComponent_Conditional_1_Template(rf, ctx) { if (rf & 1) {
24
+ i0.ɵɵelementStart(0, "div", 2);
25
+ i0.ɵɵtext(1);
26
+ i0.ɵɵelementEnd();
27
+ } if (rf & 2) {
28
+ const ctx_r0 = i0.ɵɵnextContext();
29
+ i0.ɵɵadvance();
30
+ i0.ɵɵtextInterpolate(ctx_r0.CoverageCheckError);
31
+ } }
32
+ function MJOOrderLinesEditorComponent_For_3_Conditional_7_Template(rf, ctx) { if (rf & 1) {
24
33
  i0.ɵɵtext(0);
25
34
  } if (rf & 2) {
26
35
  let tmp_11_0;
27
- const line_r2 = i0.ɵɵnextContext().$implicit;
28
- const ctx_r2 = i0.ɵɵnextContext();
29
- i0.ɵɵtextInterpolate1(" \u00B7 ", (tmp_11_0 = ctx_r2.ProductFor(line_r2)) == null ? null : tmp_11_0.TypeName, " ");
36
+ const line_r3 = i0.ɵɵnextContext().$implicit;
37
+ const ctx_r0 = i0.ɵɵnextContext();
38
+ i0.ɵɵtextInterpolate1(" \u00B7 ", (tmp_11_0 = ctx_r0.ProductFor(line_r3)) == null ? null : tmp_11_0.TypeName, " ");
30
39
  } }
31
- function MJOOrderLinesEditorComponent_For_2_Conditional_9_Template(rf, ctx) { if (rf & 1) {
40
+ function MJOOrderLinesEditorComponent_For_3_Conditional_9_Template(rf, ctx) { if (rf & 1) {
32
41
  const _r4 = i0.ɵɵgetCurrentView();
33
- i0.ɵɵelementStart(0, "button", 29);
34
- i0.ɵɵlistener("click", function MJOOrderLinesEditorComponent_For_2_Conditional_9_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r4); const line_r2 = i0.ɵɵnextContext().$implicit; const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.Bump(line_r2, -1)); });
42
+ i0.ɵɵelementStart(0, "button", 31);
43
+ i0.ɵɵlistener("click", function MJOOrderLinesEditorComponent_For_3_Conditional_9_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r4); const line_r3 = i0.ɵɵnextContext().$implicit; const ctx_r0 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r0.Bump(line_r3, -1)); });
35
44
  i0.ɵɵtext(1, "\u2212");
36
45
  i0.ɵɵelementEnd();
37
- i0.ɵɵelementStart(2, "input", 30);
38
- i0.ɵɵlistener("change", function MJOOrderLinesEditorComponent_For_2_Conditional_9_Template_input_change_2_listener($event) { i0.ɵɵrestoreView(_r4); const line_r2 = i0.ɵɵnextContext().$implicit; const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.SetQuantity(line_r2, $event)); });
46
+ i0.ɵɵelementStart(2, "input", 32);
47
+ i0.ɵɵlistener("change", function MJOOrderLinesEditorComponent_For_3_Conditional_9_Template_input_change_2_listener($event) { i0.ɵɵrestoreView(_r4); const line_r3 = i0.ɵɵnextContext().$implicit; const ctx_r0 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r0.SetQuantity(line_r3, $event)); });
39
48
  i0.ɵɵelementEnd();
40
- i0.ɵɵelementStart(3, "button", 31);
41
- i0.ɵɵlistener("click", function MJOOrderLinesEditorComponent_For_2_Conditional_9_Template_button_click_3_listener() { i0.ɵɵrestoreView(_r4); const line_r2 = i0.ɵɵnextContext().$implicit; const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.Bump(line_r2, 1)); });
49
+ i0.ɵɵelementStart(3, "button", 33);
50
+ i0.ɵɵlistener("click", function MJOOrderLinesEditorComponent_For_3_Conditional_9_Template_button_click_3_listener() { i0.ɵɵrestoreView(_r4); const line_r3 = i0.ɵɵnextContext().$implicit; const ctx_r0 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r0.Bump(line_r3, 1)); });
42
51
  i0.ɵɵtext(4, "+");
43
52
  i0.ɵɵelementEnd();
44
53
  } if (rf & 2) {
45
- const line_r2 = i0.ɵɵnextContext().$implicit;
46
- const ctx_r2 = i0.ɵɵnextContext();
54
+ const line_r3 = i0.ɵɵnextContext().$implicit;
55
+ const ctx_r0 = i0.ɵɵnextContext();
47
56
  i0.ɵɵadvance(2);
48
- i0.ɵɵproperty("value", line_r2.Quantity);
57
+ i0.ɵɵproperty("value", line_r3.Quantity);
49
58
  i0.ɵɵadvance();
50
- i0.ɵɵproperty("disabled", ctx_r2.QuantityAtMax(line_r2));
59
+ i0.ɵɵproperty("disabled", ctx_r0.QuantityAtMax(line_r3));
51
60
  } }
52
- function MJOOrderLinesEditorComponent_For_2_Conditional_10_Template(rf, ctx) { if (rf & 1) {
53
- i0.ɵɵelementStart(0, "span", 11);
61
+ function MJOOrderLinesEditorComponent_For_3_Conditional_10_Template(rf, ctx) { if (rf & 1) {
62
+ i0.ɵɵelementStart(0, "span", 12);
54
63
  i0.ɵɵtext(1);
55
64
  i0.ɵɵelementEnd();
56
65
  } if (rf & 2) {
57
- const line_r2 = i0.ɵɵnextContext().$implicit;
66
+ const line_r3 = i0.ɵɵnextContext().$implicit;
58
67
  i0.ɵɵadvance();
59
- i0.ɵɵtextInterpolate(line_r2.Quantity);
68
+ i0.ɵɵtextInterpolate(line_r3.Quantity);
60
69
  } }
61
- function MJOOrderLinesEditorComponent_For_2_Conditional_16_Template(rf, ctx) { if (rf & 1) {
70
+ function MJOOrderLinesEditorComponent_For_3_Conditional_16_Template(rf, ctx) { if (rf & 1) {
62
71
  const _r5 = i0.ɵɵgetCurrentView();
63
- i0.ɵɵelementStart(0, "button", 32);
64
- i0.ɵɵlistener("click", function MJOOrderLinesEditorComponent_For_2_Conditional_16_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r5); const line_r2 = i0.ɵɵnextContext().$implicit; const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.ToggleOverrideEditor(line_r2)); });
65
- i0.ɵɵelement(1, "i", 33);
72
+ i0.ɵɵelementStart(0, "button", 34);
73
+ i0.ɵɵlistener("click", function MJOOrderLinesEditorComponent_For_3_Conditional_16_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r5); const line_r3 = i0.ɵɵnextContext().$implicit; const ctx_r0 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r0.ToggleOverrideEditor(line_r3)); });
74
+ i0.ɵɵelement(1, "i", 35);
66
75
  i0.ɵɵelementEnd();
67
76
  } if (rf & 2) {
68
- const line_r2 = i0.ɵɵnextContext().$implicit;
69
- const ctx_r2 = i0.ɵɵnextContext();
70
- i0.ɵɵattribute("aria-expanded", ctx_r2.IsOverrideEditorOpen(line_r2))("aria-label", ctx_r2.CanOverride ? ctx_r2.IsOverridden(line_r2) ? "Edit price override" : "Override price or discount line" : "Discount line");
77
+ const line_r3 = i0.ɵɵnextContext().$implicit;
78
+ const ctx_r0 = i0.ɵɵnextContext();
79
+ i0.ɵɵattribute("aria-expanded", ctx_r0.IsOverrideEditorOpen(line_r3))("aria-label", ctx_r0.CanOverride ? ctx_r0.IsOverridden(line_r3) ? "Edit price override" : "Override price or discount line" : "Discount line");
71
80
  } }
72
- function MJOOrderLinesEditorComponent_For_2_Conditional_17_Template(rf, ctx) { if (rf & 1) {
73
- i0.ɵɵelementStart(0, "span", 16);
81
+ function MJOOrderLinesEditorComponent_For_3_Conditional_17_Template(rf, ctx) { if (rf & 1) {
82
+ i0.ɵɵelementStart(0, "span", 17);
74
83
  i0.ɵɵtext(1, "overridden");
75
84
  i0.ɵɵelementEnd();
76
85
  } }
77
- function MJOOrderLinesEditorComponent_For_2_Conditional_18_Template(rf, ctx) { if (rf & 1) {
78
- i0.ɵɵelement(0, "mjo-price-source-badge", 17);
86
+ function MJOOrderLinesEditorComponent_For_3_Conditional_18_Template(rf, ctx) { if (rf & 1) {
87
+ i0.ɵɵelement(0, "mjo-price-source-badge", 18);
79
88
  } if (rf & 2) {
80
89
  let tmp_11_0;
81
- const line_r2 = i0.ɵɵnextContext().$implicit;
82
- const ctx_r2 = i0.ɵɵnextContext();
83
- i0.ɵɵproperty("Source", ((tmp_11_0 = ctx_r2.PricedLine(line_r2)) == null ? null : tmp_11_0.PriceSource) ?? null)("Settled", !ctx_r2.Pricing.Loading)("Overridden", false);
90
+ const line_r3 = i0.ɵɵnextContext().$implicit;
91
+ const ctx_r0 = i0.ɵɵnextContext();
92
+ i0.ɵɵproperty("Source", ((tmp_11_0 = ctx_r0.PricedLine(line_r3)) == null ? null : tmp_11_0.PriceSource) ?? null)("Settled", !ctx_r0.Pricing.Loading)("Overridden", false);
84
93
  } }
85
- function MJOOrderLinesEditorComponent_For_2_Conditional_19_Template(rf, ctx) { if (rf & 1) {
86
- i0.ɵɵelementStart(0, "span", 18);
94
+ function MJOOrderLinesEditorComponent_For_3_Conditional_19_Template(rf, ctx) { if (rf & 1) {
95
+ i0.ɵɵelementStart(0, "span", 19);
87
96
  i0.ɵɵtext(1);
88
97
  i0.ɵɵpipe(2, "mjoMoney");
89
98
  i0.ɵɵelementEnd();
90
99
  } if (rf & 2) {
91
- const line_r2 = i0.ɵɵnextContext().$implicit;
92
- const ctx_r2 = i0.ɵɵnextContext();
100
+ const line_r3 = i0.ɵɵnextContext().$implicit;
101
+ const ctx_r0 = i0.ɵɵnextContext();
93
102
  i0.ɵɵadvance();
94
- i0.ɵɵtextInterpolate1("\u2212", i0.ɵɵpipeBind1(2, 1, ctx_r2.AppliedDiscount(line_r2)));
103
+ i0.ɵɵtextInterpolate1("\u2212", i0.ɵɵpipeBind1(2, 1, ctx_r0.AppliedDiscount(line_r3)));
95
104
  } }
96
- function MJOOrderLinesEditorComponent_For_2_Conditional_20_Template(rf, ctx) { if (rf & 1) {
97
- i0.ɵɵelementStart(0, "div", 19);
105
+ function MJOOrderLinesEditorComponent_For_3_Conditional_20_Template(rf, ctx) { if (rf & 1) {
106
+ i0.ɵɵelementStart(0, "div", 20);
98
107
  i0.ɵɵtext(1);
99
108
  i0.ɵɵelementEnd();
100
109
  } if (rf & 2) {
101
110
  i0.ɵɵadvance();
102
111
  i0.ɵɵtextInterpolate(ctx);
103
112
  } }
104
- function MJOOrderLinesEditorComponent_For_2_Conditional_26_Template(rf, ctx) { if (rf & 1) {
113
+ function MJOOrderLinesEditorComponent_For_3_Conditional_26_Template(rf, ctx) { if (rf & 1) {
105
114
  const _r6 = i0.ɵɵgetCurrentView();
106
- i0.ɵɵelementStart(0, "button", 21);
107
- i0.ɵɵlistener("click", function MJOOrderLinesEditorComponent_For_2_Conditional_26_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r6); const line_r2 = i0.ɵɵnextContext().$implicit; const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.Remove(line_r2)); });
108
- i0.ɵɵelement(1, "i", 34);
115
+ i0.ɵɵelementStart(0, "button", 22);
116
+ i0.ɵɵlistener("click", function MJOOrderLinesEditorComponent_For_3_Conditional_26_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r6); const line_r3 = i0.ɵɵnextContext().$implicit; const ctx_r0 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r0.Remove(line_r3)); });
117
+ i0.ɵɵelement(1, "i", 36);
109
118
  i0.ɵɵelementEnd();
110
119
  } if (rf & 2) {
111
120
  let tmp_11_0;
112
- const line_r2 = i0.ɵɵnextContext().$implicit;
113
- const ctx_r2 = i0.ɵɵnextContext();
114
- i0.ɵɵattribute("aria-label", "Remove " + (((tmp_11_0 = ctx_r2.ProductFor(line_r2)) == null ? null : tmp_11_0.Name) ?? "line"));
121
+ const line_r3 = i0.ɵɵnextContext().$implicit;
122
+ const ctx_r0 = i0.ɵɵnextContext();
123
+ i0.ɵɵattribute("aria-label", "Remove " + (((tmp_11_0 = ctx_r0.ProductFor(line_r3)) == null ? null : tmp_11_0.Name) ?? "line"));
115
124
  } }
116
- function MJOOrderLinesEditorComponent_For_2_Conditional_27_Conditional_1_Template(rf, ctx) { if (rf & 1) {
125
+ function MJOOrderLinesEditorComponent_For_3_Conditional_27_Conditional_1_Template(rf, ctx) { if (rf & 1) {
117
126
  const _r8 = i0.ɵɵgetCurrentView();
118
- i0.ɵɵelementStart(0, "mjo-line-price-picker", 41);
119
- i0.ɵɵlistener("PriceChanged", function MJOOrderLinesEditorComponent_For_2_Conditional_27_Conditional_1_Template_mjo_line_price_picker_PriceChanged_0_listener() { i0.ɵɵrestoreView(_r8); const ctx_r2 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r2.OnLinePriceChanged()); });
127
+ i0.ɵɵelementStart(0, "mjo-line-price-picker", 43);
128
+ i0.ɵɵlistener("PriceChanged", function MJOOrderLinesEditorComponent_For_3_Conditional_27_Conditional_1_Template_mjo_line_price_picker_PriceChanged_0_listener() { i0.ɵɵrestoreView(_r8); const ctx_r0 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r0.OnLinePriceChanged()); });
120
129
  i0.ɵɵelementEnd();
121
130
  } if (rf & 2) {
122
131
  let tmp_15_0;
123
132
  let tmp_17_0;
124
133
  let tmp_18_0;
125
- const line_r2 = i0.ɵɵnextContext(2).$implicit;
126
- const ctx_r2 = i0.ɵɵnextContext();
127
- i0.ɵɵproperty("Line", line_r2)("OverrideKind", ctx_r2.OverrideKind)("Applicable", ctx_r2.ApplicableFor(line_r2))("EngineDefault", (tmp_15_0 = ctx_r2.PricedLine(line_r2)) == null ? null : tmp_15_0.Default)("DefaultUnit", ctx_r2.DefaultUnit(line_r2))("PriceSource", ((tmp_17_0 = ctx_r2.PricedLine(line_r2)) == null ? null : tmp_17_0.PriceSource) ?? null)("PricedUnit", ((tmp_18_0 = ctx_r2.PricedLine(line_r2)) == null ? null : tmp_18_0.UnitPrice) ?? null);
134
+ const line_r3 = i0.ɵɵnextContext(2).$implicit;
135
+ const ctx_r0 = i0.ɵɵnextContext();
136
+ i0.ɵɵproperty("Line", line_r3)("OverrideKind", ctx_r0.OverrideKind)("Applicable", ctx_r0.ApplicableFor(line_r3))("EngineDefault", (tmp_15_0 = ctx_r0.PricedLine(line_r3)) == null ? null : tmp_15_0.Default)("DefaultUnit", ctx_r0.DefaultUnit(line_r3))("PriceSource", ((tmp_17_0 = ctx_r0.PricedLine(line_r3)) == null ? null : tmp_17_0.PriceSource) ?? null)("PricedUnit", ((tmp_18_0 = ctx_r0.PricedLine(line_r3)) == null ? null : tmp_18_0.UnitPrice) ?? null);
128
137
  } }
129
- function MJOOrderLinesEditorComponent_For_2_Conditional_27_Conditional_2_Conditional_6_Conditional_8_Template(rf, ctx) { if (rf & 1) {
138
+ function MJOOrderLinesEditorComponent_For_3_Conditional_27_Conditional_2_Conditional_6_Conditional_8_Template(rf, ctx) { if (rf & 1) {
130
139
  i0.ɵɵtext(0);
131
140
  i0.ɵɵpipe(1, "mjoMoney");
132
141
  i0.ɵɵpipe(2, "mjoMoney");
133
142
  } if (rf & 2) {
134
- const line_r2 = i0.ɵɵnextContext(4).$implicit;
135
- const ctx_r2 = i0.ɵɵnextContext();
136
- i0.ɵɵtextInterpolate2(" \u2212", i0.ɵɵpipeBind1(1, 2, ctx), " of ", i0.ɵɵpipeBind1(2, 4, ctx_r2.DiscountBase(line_r2)), " ");
143
+ const line_r3 = i0.ɵɵnextContext(4).$implicit;
144
+ const ctx_r0 = i0.ɵɵnextContext();
145
+ i0.ɵɵtextInterpolate2(" \u2212", i0.ɵɵpipeBind1(1, 2, ctx), " of ", i0.ɵɵpipeBind1(2, 4, ctx_r0.DiscountBase(line_r3)), " ");
137
146
  } }
138
- function MJOOrderLinesEditorComponent_For_2_Conditional_27_Conditional_2_Conditional_6_Conditional_9_Template(rf, ctx) { if (rf & 1) {
147
+ function MJOOrderLinesEditorComponent_For_3_Conditional_27_Conditional_2_Conditional_6_Conditional_9_Template(rf, ctx) { if (rf & 1) {
139
148
  i0.ɵɵtext(0);
140
149
  i0.ɵɵpipe(1, "mjoMoney");
141
150
  } if (rf & 2) {
142
- const line_r2 = i0.ɵɵnextContext(4).$implicit;
143
- const ctx_r2 = i0.ɵɵnextContext();
144
- i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(1, 1, ctx_r2.DiscountBase(line_r2)), " left to discount ");
151
+ const line_r3 = i0.ɵɵnextContext(4).$implicit;
152
+ const ctx_r0 = i0.ɵɵnextContext();
153
+ i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(1, 1, ctx_r0.DiscountBase(line_r3)), " left to discount ");
145
154
  } }
146
- function MJOOrderLinesEditorComponent_For_2_Conditional_27_Conditional_2_Conditional_6_Conditional_13_Template(rf, ctx) { if (rf & 1) {
147
- i0.ɵɵelementStart(0, "em", 51);
155
+ function MJOOrderLinesEditorComponent_For_3_Conditional_27_Conditional_2_Conditional_6_Conditional_13_Template(rf, ctx) { if (rf & 1) {
156
+ i0.ɵɵelementStart(0, "em", 53);
148
157
  i0.ɵɵtext(1, "*");
149
158
  i0.ɵɵelementEnd();
150
159
  } }
151
- function MJOOrderLinesEditorComponent_For_2_Conditional_27_Conditional_2_Conditional_6_Conditional_15_Template(rf, ctx) { if (rf & 1) {
152
- i0.ɵɵelementStart(0, "div", 53);
160
+ function MJOOrderLinesEditorComponent_For_3_Conditional_27_Conditional_2_Conditional_6_Conditional_15_Template(rf, ctx) { if (rf & 1) {
161
+ i0.ɵɵelementStart(0, "div", 55);
153
162
  i0.ɵɵtext(1);
154
163
  i0.ɵɵelementEnd();
155
164
  } if (rf & 2) {
156
165
  i0.ɵɵadvance();
157
166
  i0.ɵɵtextInterpolate(ctx);
158
167
  } }
159
- function MJOOrderLinesEditorComponent_For_2_Conditional_27_Conditional_2_Conditional_6_Conditional_16_Template(rf, ctx) { if (rf & 1) {
168
+ function MJOOrderLinesEditorComponent_For_3_Conditional_27_Conditional_2_Conditional_6_Conditional_16_Template(rf, ctx) { if (rf & 1) {
160
169
  const _r10 = i0.ɵɵgetCurrentView();
161
- i0.ɵɵelementStart(0, "div", 54)(1, "span");
170
+ i0.ɵɵelementStart(0, "div", 56)(1, "span");
162
171
  i0.ɵɵtext(2, "Applies when this order is saved.");
163
172
  i0.ɵɵelementEnd();
164
- i0.ɵɵelementStart(3, "button", 55);
165
- i0.ɵɵlistener("click", function MJOOrderLinesEditorComponent_For_2_Conditional_27_Conditional_2_Conditional_6_Conditional_16_Template_button_click_3_listener() { i0.ɵɵrestoreView(_r10); const line_r2 = i0.ɵɵnextContext(4).$implicit; const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.ClearDiscount(line_r2)); });
173
+ i0.ɵɵelementStart(3, "button", 57);
174
+ i0.ɵɵlistener("click", function MJOOrderLinesEditorComponent_For_3_Conditional_27_Conditional_2_Conditional_6_Conditional_16_Template_button_click_3_listener() { i0.ɵɵrestoreView(_r10); const line_r3 = i0.ɵɵnextContext(4).$implicit; const ctx_r0 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r0.ClearDiscount(line_r3)); });
166
175
  i0.ɵɵtext(4, "Remove");
167
176
  i0.ɵɵelementEnd()();
168
177
  } }
169
- function MJOOrderLinesEditorComponent_For_2_Conditional_27_Conditional_2_Conditional_6_Template(rf, ctx) { if (rf & 1) {
178
+ function MJOOrderLinesEditorComponent_For_3_Conditional_27_Conditional_2_Conditional_6_Template(rf, ctx) { if (rf & 1) {
170
179
  const _r9 = i0.ɵɵgetCurrentView();
171
- i0.ɵɵelementStart(0, "div", 45)(1, "div", 46)(2, "button", 47);
172
- i0.ɵɵlistener("click", function MJOOrderLinesEditorComponent_For_2_Conditional_27_Conditional_2_Conditional_6_Template_button_click_2_listener() { i0.ɵɵrestoreView(_r9); const line_r2 = i0.ɵɵnextContext(3).$implicit; const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.SetDiscountMode(line_r2, "percent")); });
180
+ i0.ɵɵelementStart(0, "div", 47)(1, "div", 48)(2, "button", 49);
181
+ i0.ɵɵlistener("click", function MJOOrderLinesEditorComponent_For_3_Conditional_27_Conditional_2_Conditional_6_Template_button_click_2_listener() { i0.ɵɵrestoreView(_r9); const line_r3 = i0.ɵɵnextContext(3).$implicit; const ctx_r0 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r0.SetDiscountMode(line_r3, "percent")); });
173
182
  i0.ɵɵtext(3, "%");
174
183
  i0.ɵɵelementEnd();
175
- i0.ɵɵelementStart(4, "button", 47);
176
- i0.ɵɵlistener("click", function MJOOrderLinesEditorComponent_For_2_Conditional_27_Conditional_2_Conditional_6_Template_button_click_4_listener() { i0.ɵɵrestoreView(_r9); const line_r2 = i0.ɵɵnextContext(3).$implicit; const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.SetDiscountMode(line_r2, "amount")); });
184
+ i0.ɵɵelementStart(4, "button", 49);
185
+ i0.ɵɵlistener("click", function MJOOrderLinesEditorComponent_For_3_Conditional_27_Conditional_2_Conditional_6_Template_button_click_4_listener() { i0.ɵɵrestoreView(_r9); const line_r3 = i0.ɵɵnextContext(3).$implicit; const ctx_r0 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r0.SetDiscountMode(line_r3, "amount")); });
177
186
  i0.ɵɵtext(5, "Amount");
178
187
  i0.ɵɵelementEnd()();
179
- i0.ɵɵelementStart(6, "input", 48);
180
- i0.ɵɵlistener("input", function MJOOrderLinesEditorComponent_For_2_Conditional_27_Conditional_2_Conditional_6_Template_input_input_6_listener($event) { i0.ɵɵrestoreView(_r9); const line_r2 = i0.ɵɵnextContext(3).$implicit; const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.SetDiscountValue(line_r2, $event)); });
188
+ i0.ɵɵelementStart(6, "input", 50);
189
+ i0.ɵɵlistener("input", function MJOOrderLinesEditorComponent_For_3_Conditional_27_Conditional_2_Conditional_6_Template_input_input_6_listener($event) { i0.ɵɵrestoreView(_r9); const line_r3 = i0.ɵɵnextContext(3).$implicit; const ctx_r0 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r0.SetDiscountValue(line_r3, $event)); });
181
190
  i0.ɵɵelementEnd();
182
- i0.ɵɵelementStart(7, "span", 49);
183
- i0.ɵɵconditionalCreate(8, MJOOrderLinesEditorComponent_For_2_Conditional_27_Conditional_2_Conditional_6_Conditional_8_Template, 3, 6)(9, MJOOrderLinesEditorComponent_For_2_Conditional_27_Conditional_2_Conditional_6_Conditional_9_Template, 2, 3);
191
+ i0.ɵɵelementStart(7, "span", 51);
192
+ i0.ɵɵconditionalCreate(8, MJOOrderLinesEditorComponent_For_3_Conditional_27_Conditional_2_Conditional_6_Conditional_8_Template, 3, 6)(9, MJOOrderLinesEditorComponent_For_3_Conditional_27_Conditional_2_Conditional_6_Conditional_9_Template, 2, 3);
184
193
  i0.ɵɵelementEnd()();
185
- i0.ɵɵelementStart(10, "label", 50)(11, "span");
194
+ i0.ɵɵelementStart(10, "label", 52)(11, "span");
186
195
  i0.ɵɵtext(12, "Discount Reason ");
187
- i0.ɵɵconditionalCreate(13, MJOOrderLinesEditorComponent_For_2_Conditional_27_Conditional_2_Conditional_6_Conditional_13_Template, 2, 0, "em", 51);
196
+ i0.ɵɵconditionalCreate(13, MJOOrderLinesEditorComponent_For_3_Conditional_27_Conditional_2_Conditional_6_Conditional_13_Template, 2, 0, "em", 53);
188
197
  i0.ɵɵelementEnd();
189
- i0.ɵɵelementStart(14, "textarea", 52);
190
- i0.ɵɵlistener("input", function MJOOrderLinesEditorComponent_For_2_Conditional_27_Conditional_2_Conditional_6_Template_textarea_input_14_listener($event) { i0.ɵɵrestoreView(_r9); const line_r2 = i0.ɵɵnextContext(3).$implicit; const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.SetDiscountReason(line_r2, $event)); });
198
+ i0.ɵɵelementStart(14, "textarea", 54);
199
+ i0.ɵɵlistener("input", function MJOOrderLinesEditorComponent_For_3_Conditional_27_Conditional_2_Conditional_6_Template_textarea_input_14_listener($event) { i0.ɵɵrestoreView(_r9); const line_r3 = i0.ɵɵnextContext(3).$implicit; const ctx_r0 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r0.SetDiscountReason(line_r3, $event)); });
191
200
  i0.ɵɵelementEnd()();
192
- i0.ɵɵconditionalCreate(15, MJOOrderLinesEditorComponent_For_2_Conditional_27_Conditional_2_Conditional_6_Conditional_15_Template, 2, 1, "div", 53);
193
- i0.ɵɵconditionalCreate(16, MJOOrderLinesEditorComponent_For_2_Conditional_27_Conditional_2_Conditional_6_Conditional_16_Template, 5, 0, "div", 54);
201
+ i0.ɵɵconditionalCreate(15, MJOOrderLinesEditorComponent_For_3_Conditional_27_Conditional_2_Conditional_6_Conditional_15_Template, 2, 1, "div", 55);
202
+ i0.ɵɵconditionalCreate(16, MJOOrderLinesEditorComponent_For_3_Conditional_27_Conditional_2_Conditional_6_Conditional_16_Template, 5, 0, "div", 56);
194
203
  } if (rf & 2) {
195
204
  let tmp_20_0;
196
205
  let tmp_24_0;
197
- const line_r2 = i0.ɵɵnextContext(3).$implicit;
198
- const ctx_r2 = i0.ɵɵnextContext();
206
+ const line_r3 = i0.ɵɵnextContext(3).$implicit;
207
+ const ctx_r0 = i0.ɵɵnextContext();
199
208
  i0.ɵɵadvance(2);
200
- i0.ɵɵclassProp("is-on", ctx_r2.DiscountDraft(line_r2).Mode === "percent");
201
- i0.ɵɵattribute("aria-checked", ctx_r2.DiscountDraft(line_r2).Mode === "percent");
209
+ i0.ɵɵclassProp("is-on", ctx_r0.DiscountDraft(line_r3).Mode === "percent");
210
+ i0.ɵɵattribute("aria-checked", ctx_r0.DiscountDraft(line_r3).Mode === "percent");
202
211
  i0.ɵɵadvance(2);
203
- i0.ɵɵclassProp("is-on", ctx_r2.DiscountDraft(line_r2).Mode === "amount");
204
- i0.ɵɵattribute("aria-checked", ctx_r2.DiscountDraft(line_r2).Mode === "amount");
212
+ i0.ɵɵclassProp("is-on", ctx_r0.DiscountDraft(line_r3).Mode === "amount");
213
+ i0.ɵɵattribute("aria-checked", ctx_r0.DiscountDraft(line_r3).Mode === "amount");
205
214
  i0.ɵɵadvance(2);
206
- i0.ɵɵproperty("value", ctx_r2.DiscountDraft(line_r2).Value);
207
- i0.ɵɵattribute("placeholder", ctx_r2.DiscountDraft(line_r2).Mode === "percent" ? "0" : "0.00")("aria-label", ctx_r2.DiscountDraft(line_r2).Mode === "percent" ? "Discount percent" : "Discount amount");
215
+ i0.ɵɵproperty("value", ctx_r0.DiscountDraft(line_r3).Value);
216
+ i0.ɵɵattribute("placeholder", ctx_r0.DiscountDraft(line_r3).Mode === "percent" ? "0" : "0.00")("aria-label", ctx_r0.DiscountDraft(line_r3).Mode === "percent" ? "Discount percent" : "Discount amount");
208
217
  i0.ɵɵadvance(2);
209
- i0.ɵɵconditional((tmp_20_0 = ctx_r2.DraftDiscountAmount(line_r2)) ? 8 : 9, tmp_20_0);
218
+ i0.ɵɵconditional((tmp_20_0 = ctx_r0.DraftDiscountAmount(line_r3)) ? 8 : 9, tmp_20_0);
210
219
  i0.ɵɵadvance(2);
211
- i0.ɵɵclassProp("is-required", ctx_r2.NeedsDiscountReason(line_r2));
220
+ i0.ɵɵclassProp("is-required", ctx_r0.NeedsDiscountReason(line_r3));
212
221
  i0.ɵɵadvance(3);
213
- i0.ɵɵconditional(ctx_r2.DraftDiscountAmount(line_r2) ? 13 : -1);
222
+ i0.ɵɵconditional(ctx_r0.DraftDiscountAmount(line_r3) ? 13 : -1);
214
223
  i0.ɵɵadvance();
215
- i0.ɵɵproperty("value", ctx_r2.DiscountDraft(line_r2).Reason);
224
+ i0.ɵɵproperty("value", ctx_r0.DiscountDraft(line_r3).Reason);
216
225
  i0.ɵɵadvance();
217
- i0.ɵɵconditional((tmp_24_0 = ctx_r2.DiscountError(line_r2)) ? 15 : -1, tmp_24_0);
226
+ i0.ɵɵconditional((tmp_24_0 = ctx_r0.DiscountError(line_r3)) ? 15 : -1, tmp_24_0);
218
227
  i0.ɵɵadvance();
219
- i0.ɵɵconditional(ctx_r2.HasStagedDiscount(line_r2) ? 16 : -1);
228
+ i0.ɵɵconditional(ctx_r0.HasStagedDiscount(line_r3) ? 16 : -1);
220
229
  } }
221
- function MJOOrderLinesEditorComponent_For_2_Conditional_27_Conditional_2_Conditional_7_Template(rf, ctx) { if (rf & 1) {
222
- i0.ɵɵelementStart(0, "div", 37);
230
+ function MJOOrderLinesEditorComponent_For_3_Conditional_27_Conditional_2_Conditional_7_Template(rf, ctx) { if (rf & 1) {
231
+ i0.ɵɵelementStart(0, "div", 39);
223
232
  i0.ɵɵtext(1, " This line is booked, so its money is frozen. Reverse the line to re-sell it at a discounted price. ");
224
233
  i0.ɵɵelementEnd();
225
234
  } }
226
- function MJOOrderLinesEditorComponent_For_2_Conditional_27_Conditional_2_Template(rf, ctx) { if (rf & 1) {
227
- i0.ɵɵelementStart(0, "div", 36)(1, "div", 42)(2, "span", 43);
235
+ function MJOOrderLinesEditorComponent_For_3_Conditional_27_Conditional_2_Template(rf, ctx) { if (rf & 1) {
236
+ i0.ɵɵelementStart(0, "div", 38)(1, "div", 44)(2, "span", 45);
228
237
  i0.ɵɵtext(3, "Discount");
229
238
  i0.ɵɵelementEnd();
230
- i0.ɵɵelementStart(4, "span", 44);
239
+ i0.ɵɵelementStart(4, "span", 46);
231
240
  i0.ɵɵtext(5);
232
241
  i0.ɵɵelementEnd()();
233
- i0.ɵɵconditionalCreate(6, MJOOrderLinesEditorComponent_For_2_Conditional_27_Conditional_2_Conditional_6_Template, 17, 16)(7, MJOOrderLinesEditorComponent_For_2_Conditional_27_Conditional_2_Conditional_7_Template, 2, 0, "div", 37);
242
+ i0.ɵɵconditionalCreate(6, MJOOrderLinesEditorComponent_For_3_Conditional_27_Conditional_2_Conditional_6_Template, 17, 16)(7, MJOOrderLinesEditorComponent_For_3_Conditional_27_Conditional_2_Conditional_7_Template, 2, 0, "div", 39);
234
243
  i0.ɵɵelementEnd();
235
244
  } if (rf & 2) {
236
245
  let tmp_12_0;
237
- const line_r2 = i0.ɵɵnextContext(2).$implicit;
238
- const ctx_r2 = i0.ɵɵnextContext();
239
- i0.ɵɵattribute("aria-label", "Discount for " + (((tmp_12_0 = ctx_r2.ProductFor(line_r2)) == null ? null : tmp_12_0.Name) ?? "line"));
246
+ const line_r3 = i0.ɵɵnextContext(2).$implicit;
247
+ const ctx_r0 = i0.ɵɵnextContext();
248
+ i0.ɵɵattribute("aria-label", "Discount for " + (((tmp_12_0 = ctx_r0.ProductFor(line_r3)) == null ? null : tmp_12_0.Name) ?? "line"));
240
249
  i0.ɵɵadvance(5);
241
- i0.ɵɵtextInterpolate1("your authority: ", ctx_r2.DiscountCapLabel);
250
+ i0.ɵɵtextInterpolate1("your authority: ", ctx_r0.DiscountCapLabel);
242
251
  i0.ɵɵadvance();
243
- i0.ɵɵconditional(ctx_r2.CanDiscountLine(line_r2) ? 6 : 7);
252
+ i0.ɵɵconditional(ctx_r0.CanDiscountLine(line_r3) ? 6 : 7);
244
253
  } }
245
- function MJOOrderLinesEditorComponent_For_2_Conditional_27_Conditional_3_Template(rf, ctx) { if (rf & 1) {
246
- i0.ɵɵelementStart(0, "div", 37);
254
+ function MJOOrderLinesEditorComponent_For_3_Conditional_27_Conditional_3_Template(rf, ctx) { if (rf & 1) {
255
+ i0.ɵɵelementStart(0, "div", 39);
247
256
  i0.ɵɵtext(1);
248
257
  i0.ɵɵelementEnd();
249
258
  } if (rf & 2) {
250
259
  i0.ɵɵadvance();
251
260
  i0.ɵɵtextInterpolate(ctx);
252
261
  } }
253
- function MJOOrderLinesEditorComponent_For_2_Conditional_27_Conditional_7_Template(rf, ctx) { if (rf & 1) {
262
+ function MJOOrderLinesEditorComponent_For_3_Conditional_27_Conditional_7_Template(rf, ctx) { if (rf & 1) {
254
263
  const _r11 = i0.ɵɵgetCurrentView();
255
- i0.ɵɵelementStart(0, "button", 56);
256
- i0.ɵɵlistener("click", function MJOOrderLinesEditorComponent_For_2_Conditional_27_Conditional_7_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r11); const line_r2 = i0.ɵɵnextContext(2).$implicit; const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.ResetOverride(line_r2)); });
264
+ i0.ɵɵelementStart(0, "button", 58);
265
+ i0.ɵɵlistener("click", function MJOOrderLinesEditorComponent_For_3_Conditional_27_Conditional_7_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r11); const line_r3 = i0.ɵɵnextContext(2).$implicit; const ctx_r0 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r0.ResetOverride(line_r3)); });
257
266
  i0.ɵɵtext(1, "Use Default Price");
258
267
  i0.ɵɵelementEnd();
259
268
  } if (rf & 2) {
260
- const line_r2 = i0.ɵɵnextContext(2).$implicit;
261
- const ctx_r2 = i0.ɵɵnextContext();
262
- i0.ɵɵproperty("disabled", !ctx_r2.CanRestoreDefault(line_r2));
269
+ const line_r3 = i0.ɵɵnextContext(2).$implicit;
270
+ const ctx_r0 = i0.ɵɵnextContext();
271
+ i0.ɵɵproperty("disabled", !ctx_r0.CanRestoreDefault(line_r3));
263
272
  } }
264
- function MJOOrderLinesEditorComponent_For_2_Conditional_27_Template(rf, ctx) { if (rf & 1) {
273
+ function MJOOrderLinesEditorComponent_For_3_Conditional_27_Template(rf, ctx) { if (rf & 1) {
265
274
  const _r7 = i0.ɵɵgetCurrentView();
266
- i0.ɵɵelementStart(0, "div", 24);
267
- i0.ɵɵconditionalCreate(1, MJOOrderLinesEditorComponent_For_2_Conditional_27_Conditional_1_Template, 1, 7, "mjo-line-price-picker", 35);
268
- i0.ɵɵconditionalCreate(2, MJOOrderLinesEditorComponent_For_2_Conditional_27_Conditional_2_Template, 8, 3, "div", 36)(3, MJOOrderLinesEditorComponent_For_2_Conditional_27_Conditional_3_Template, 2, 1, "div", 37);
269
- i0.ɵɵelementStart(4, "div", 38)(5, "button", 39);
270
- i0.ɵɵlistener("click", function MJOOrderLinesEditorComponent_For_2_Conditional_27_Template_button_click_5_listener() { i0.ɵɵrestoreView(_r7); const line_r2 = i0.ɵɵnextContext().$implicit; const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.DoneOverrideEditor(line_r2)); });
275
+ i0.ɵɵelementStart(0, "div", 25);
276
+ i0.ɵɵconditionalCreate(1, MJOOrderLinesEditorComponent_For_3_Conditional_27_Conditional_1_Template, 1, 7, "mjo-line-price-picker", 37);
277
+ i0.ɵɵconditionalCreate(2, MJOOrderLinesEditorComponent_For_3_Conditional_27_Conditional_2_Template, 8, 3, "div", 38)(3, MJOOrderLinesEditorComponent_For_3_Conditional_27_Conditional_3_Template, 2, 1, "div", 39);
278
+ i0.ɵɵelementStart(4, "div", 40)(5, "button", 41);
279
+ i0.ɵɵlistener("click", function MJOOrderLinesEditorComponent_For_3_Conditional_27_Template_button_click_5_listener() { i0.ɵɵrestoreView(_r7); const line_r3 = i0.ɵɵnextContext().$implicit; const ctx_r0 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r0.DoneOverrideEditor(line_r3)); });
271
280
  i0.ɵɵtext(6, "Done");
272
281
  i0.ɵɵelementEnd();
273
- i0.ɵɵconditionalCreate(7, MJOOrderLinesEditorComponent_For_2_Conditional_27_Conditional_7_Template, 2, 1, "button", 40);
282
+ i0.ɵɵconditionalCreate(7, MJOOrderLinesEditorComponent_For_3_Conditional_27_Conditional_7_Template, 2, 1, "button", 42);
274
283
  i0.ɵɵelementEnd()();
275
284
  } if (rf & 2) {
276
285
  let tmp_11_0;
277
286
  let tmp_13_0;
278
- const line_r2 = i0.ɵɵnextContext().$implicit;
279
- const ctx_r2 = i0.ɵɵnextContext();
280
- i0.ɵɵattribute("aria-label", "Price and discount for " + (((tmp_11_0 = ctx_r2.ProductFor(line_r2)) == null ? null : tmp_11_0.Name) ?? "line"));
287
+ const line_r3 = i0.ɵɵnextContext().$implicit;
288
+ const ctx_r0 = i0.ɵɵnextContext();
289
+ i0.ɵɵattribute("aria-label", "Price and discount for " + (((tmp_11_0 = ctx_r0.ProductFor(line_r3)) == null ? null : tmp_11_0.Name) ?? "line"));
281
290
  i0.ɵɵadvance();
282
- i0.ɵɵconditional(ctx_r2.CanOverride ? 1 : -1);
291
+ i0.ɵɵconditional(ctx_r0.CanOverride ? 1 : -1);
283
292
  i0.ɵɵadvance();
284
- i0.ɵɵconditional(ctx_r2.CanDiscount ? 2 : (tmp_13_0 = ctx_r2.DiscountUnavailableReason) ? 3 : -1, tmp_13_0);
293
+ i0.ɵɵconditional(ctx_r0.CanDiscount ? 2 : (tmp_13_0 = ctx_r0.DiscountUnavailableReason) ? 3 : -1, tmp_13_0);
285
294
  i0.ɵɵadvance(3);
286
- i0.ɵɵproperty("disabled", ctx_r2.NeedsOverrideReason(line_r2) || ctx_r2.NeedsDiscountReason(line_r2));
287
- i0.ɵɵattribute("title", ctx_r2.NeedsOverrideReason(line_r2) ? "Enter a reason for the price override" : ctx_r2.NeedsDiscountReason(line_r2) ? "Enter a reason for the discount" : null);
295
+ i0.ɵɵproperty("disabled", ctx_r0.NeedsOverrideReason(line_r3) || ctx_r0.NeedsDiscountReason(line_r3));
296
+ i0.ɵɵattribute("title", ctx_r0.NeedsOverrideReason(line_r3) ? "Enter a reason for the price override" : ctx_r0.NeedsDiscountReason(line_r3) ? "Enter a reason for the discount" : null);
288
297
  i0.ɵɵadvance(2);
289
- i0.ɵɵconditional(ctx_r2.CanOverride ? 7 : -1);
298
+ i0.ɵɵconditional(ctx_r0.CanOverride ? 7 : -1);
290
299
  } }
291
- function MJOOrderLinesEditorComponent_For_2_Conditional_29_Conditional_0_Template(rf, ctx) { if (rf & 1) {
292
- i0.ɵɵelementStart(0, "mjo-consequence-chip", 57);
300
+ function MJOOrderLinesEditorComponent_For_3_Conditional_29_Conditional_0_Template(rf, ctx) { if (rf & 1) {
301
+ i0.ɵɵelementStart(0, "mjo-consequence-chip", 59);
293
302
  i0.ɵɵtext(1, "Ships \u2014 holds the order at Posted");
294
303
  i0.ɵɵelementEnd();
295
304
  } }
296
- function MJOOrderLinesEditorComponent_For_2_Conditional_29_Conditional_1_Template(rf, ctx) { if (rf & 1) {
297
- i0.ɵɵelementStart(0, "mjo-consequence-chip", 58);
305
+ function MJOOrderLinesEditorComponent_For_3_Conditional_29_Conditional_1_Template(rf, ctx) { if (rf & 1) {
306
+ i0.ɵɵelementStart(0, "mjo-consequence-chip", 60);
298
307
  i0.ɵɵtext(1, "Untaxable");
299
308
  i0.ɵɵelementEnd();
300
309
  } }
301
- function MJOOrderLinesEditorComponent_For_2_Conditional_29_Conditional_2_Template(rf, ctx) { if (rf & 1) {
302
- i0.ɵɵelementStart(0, "mjo-consequence-chip", 59);
310
+ function MJOOrderLinesEditorComponent_For_3_Conditional_29_Conditional_2_Template(rf, ctx) { if (rf & 1) {
311
+ i0.ɵɵelementStart(0, "mjo-consequence-chip", 61);
303
312
  i0.ɵɵtext(1);
304
313
  i0.ɵɵelementEnd();
305
314
  } if (rf & 2) {
@@ -307,311 +316,342 @@ function MJOOrderLinesEditorComponent_For_2_Conditional_29_Conditional_2_Templat
307
316
  i0.ɵɵadvance();
308
317
  i0.ɵɵtextInterpolate1("Revenue to ", product_r12.CompanyName);
309
318
  } }
310
- function MJOOrderLinesEditorComponent_For_2_Conditional_29_Template(rf, ctx) { if (rf & 1) {
311
- i0.ɵɵconditionalCreate(0, MJOOrderLinesEditorComponent_For_2_Conditional_29_Conditional_0_Template, 2, 0, "mjo-consequence-chip", 57);
312
- i0.ɵɵconditionalCreate(1, MJOOrderLinesEditorComponent_For_2_Conditional_29_Conditional_1_Template, 2, 0, "mjo-consequence-chip", 58);
313
- i0.ɵɵconditionalCreate(2, MJOOrderLinesEditorComponent_For_2_Conditional_29_Conditional_2_Template, 2, 1, "mjo-consequence-chip", 59);
319
+ function MJOOrderLinesEditorComponent_For_3_Conditional_29_Template(rf, ctx) { if (rf & 1) {
320
+ i0.ɵɵconditionalCreate(0, MJOOrderLinesEditorComponent_For_3_Conditional_29_Conditional_0_Template, 2, 0, "mjo-consequence-chip", 59);
321
+ i0.ɵɵconditionalCreate(1, MJOOrderLinesEditorComponent_For_3_Conditional_29_Conditional_1_Template, 2, 0, "mjo-consequence-chip", 60);
322
+ i0.ɵɵconditionalCreate(2, MJOOrderLinesEditorComponent_For_3_Conditional_29_Conditional_2_Template, 2, 1, "mjo-consequence-chip", 61);
314
323
  } if (rf & 2) {
315
324
  const product_r12 = ctx;
316
- const line_r2 = i0.ɵɵnextContext().$implicit;
317
- const ctx_r2 = i0.ɵɵnextContext();
325
+ const line_r3 = i0.ɵɵnextContext().$implicit;
326
+ const ctx_r0 = i0.ɵɵnextContext();
318
327
  i0.ɵɵconditional(product_r12.TypeName === "Goods" ? 0 : -1);
319
328
  i0.ɵɵadvance();
320
329
  i0.ɵɵconditional(!product_r12.Taxable ? 1 : -1);
321
330
  i0.ɵɵadvance();
322
- i0.ɵɵconditional(ctx_r2.ShowsForeignRevenue(line_r2) ? 2 : -1);
331
+ i0.ɵɵconditional(ctx_r0.ShowsForeignRevenue(line_r3) ? 2 : -1);
323
332
  } }
324
- function MJOOrderLinesEditorComponent_For_2_Conditional_30_Template(rf, ctx) { if (rf & 1) {
325
- i0.ɵɵelementStart(0, "div", 26);
333
+ function MJOOrderLinesEditorComponent_For_3_Conditional_30_Template(rf, ctx) { if (rf & 1) {
334
+ i0.ɵɵelementStart(0, "div", 27);
326
335
  i0.ɵɵtext(1);
327
336
  i0.ɵɵelementEnd();
328
337
  } if (rf & 2) {
329
338
  i0.ɵɵadvance();
330
339
  i0.ɵɵtextInterpolate(ctx);
331
340
  } }
332
- function MJOOrderLinesEditorComponent_For_2_Conditional_31_Conditional_3_Template(rf, ctx) { if (rf & 1) {
333
- i0.ɵɵelementStart(0, "span", 61);
341
+ function MJOOrderLinesEditorComponent_For_3_Conditional_31_Conditional_3_Template(rf, ctx) { if (rf & 1) {
342
+ i0.ɵɵelementStart(0, "span", 63);
334
343
  i0.ɵɵtext(1);
335
344
  i0.ɵɵelementEnd();
336
345
  } if (rf & 2) {
337
- const line_r2 = i0.ɵɵnextContext(2).$implicit;
338
- const ctx_r2 = i0.ɵɵnextContext();
346
+ const line_r3 = i0.ɵɵnextContext(2).$implicit;
347
+ const ctx_r0 = i0.ɵɵnextContext();
339
348
  i0.ɵɵadvance();
340
- i0.ɵɵtextInterpolate(ctx_r2.ContinuationStartValue(line_r2));
349
+ i0.ɵɵtextInterpolate(ctx_r0.ContinuationStartValue(line_r3));
341
350
  } }
342
- function MJOOrderLinesEditorComponent_For_2_Conditional_31_Conditional_4_Conditional_1_Template(rf, ctx) { if (rf & 1) {
351
+ function MJOOrderLinesEditorComponent_For_3_Conditional_31_Conditional_4_Conditional_1_Template(rf, ctx) { if (rf & 1) {
343
352
  const _r14 = i0.ɵɵgetCurrentView();
344
- i0.ɵɵelementStart(0, "button", 67);
345
- i0.ɵɵlistener("click", function MJOOrderLinesEditorComponent_For_2_Conditional_31_Conditional_4_Conditional_1_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r14); const line_r2 = i0.ɵɵnextContext(3).$implicit; const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.ResetTermStart(line_r2)); });
353
+ i0.ɵɵelementStart(0, "button", 69);
354
+ i0.ɵɵlistener("click", function MJOOrderLinesEditorComponent_For_3_Conditional_31_Conditional_4_Conditional_1_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r14); const line_r3 = i0.ɵɵnextContext(3).$implicit; const ctx_r0 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r0.ResetTermStart(line_r3)); });
346
355
  i0.ɵɵtext(1, " Reset to order date ");
347
356
  i0.ɵɵelementEnd();
348
357
  } }
349
- function MJOOrderLinesEditorComponent_For_2_Conditional_31_Conditional_4_Template(rf, ctx) { if (rf & 1) {
358
+ function MJOOrderLinesEditorComponent_For_3_Conditional_31_Conditional_4_Template(rf, ctx) { if (rf & 1) {
350
359
  const _r13 = i0.ɵɵgetCurrentView();
351
- i0.ɵɵelementStart(0, "input", 65);
352
- i0.ɵɵlistener("change", function MJOOrderLinesEditorComponent_For_2_Conditional_31_Conditional_4_Template_input_change_0_listener($event) { i0.ɵɵrestoreView(_r13); const line_r2 = i0.ɵɵnextContext(2).$implicit; const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.SetTermStart(line_r2, $event)); });
360
+ i0.ɵɵelementStart(0, "input", 67);
361
+ i0.ɵɵlistener("change", function MJOOrderLinesEditorComponent_For_3_Conditional_31_Conditional_4_Template_input_change_0_listener($event) { i0.ɵɵrestoreView(_r13); const line_r3 = i0.ɵɵnextContext(2).$implicit; const ctx_r0 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r0.SetTermStart(line_r3, $event)); });
353
362
  i0.ɵɵelementEnd();
354
- i0.ɵɵconditionalCreate(1, MJOOrderLinesEditorComponent_For_2_Conditional_31_Conditional_4_Conditional_1_Template, 2, 0, "button", 66);
363
+ i0.ɵɵconditionalCreate(1, MJOOrderLinesEditorComponent_For_3_Conditional_31_Conditional_4_Conditional_1_Template, 2, 0, "button", 68);
355
364
  } if (rf & 2) {
356
- const line_r2 = i0.ɵɵnextContext(2).$implicit;
357
- const ctx_r2 = i0.ɵɵnextContext();
358
- i0.ɵɵclassProp("is-default", ctx_r2.TermStartFollowsOrderDate(line_r2));
359
- i0.ɵɵproperty("id", "mjo-ol-term-" + line_r2.ID)("value", ctx_r2.TermStartValue(line_r2));
365
+ const line_r3 = i0.ɵɵnextContext(2).$implicit;
366
+ const ctx_r0 = i0.ɵɵnextContext();
367
+ i0.ɵɵclassProp("is-default", ctx_r0.TermStartFollowsOrderDate(line_r3));
368
+ i0.ɵɵproperty("id", "mjo-ol-term-" + line_r3.ID)("value", ctx_r0.TermStartValue(line_r3));
360
369
  i0.ɵɵadvance();
361
- i0.ɵɵconditional(!ctx_r2.TermStartFollowsOrderDate(line_r2) ? 1 : -1);
370
+ i0.ɵɵconditional(!ctx_r0.TermStartFollowsOrderDate(line_r3) ? 1 : -1);
362
371
  } }
363
- function MJOOrderLinesEditorComponent_For_2_Conditional_31_Conditional_5_Template(rf, ctx) { if (rf & 1) {
364
- i0.ɵɵelementStart(0, "span", 62);
372
+ function MJOOrderLinesEditorComponent_For_3_Conditional_31_Conditional_5_Template(rf, ctx) { if (rf & 1) {
373
+ i0.ɵɵelementStart(0, "span", 64);
365
374
  i0.ɵɵtext(1);
366
375
  i0.ɵɵelementEnd();
367
376
  } if (rf & 2) {
368
- const line_r2 = i0.ɵɵnextContext(2).$implicit;
369
- const ctx_r2 = i0.ɵɵnextContext();
377
+ const line_r3 = i0.ɵɵnextContext(2).$implicit;
378
+ const ctx_r0 = i0.ɵɵnextContext();
370
379
  i0.ɵɵadvance();
371
- i0.ɵɵtextInterpolate(ctx_r2.TermStartValue(line_r2));
380
+ i0.ɵɵtextInterpolate(ctx_r0.TermStartValue(line_r3));
372
381
  } }
373
- function MJOOrderLinesEditorComponent_For_2_Conditional_31_Conditional_7_Template(rf, ctx) { if (rf & 1) {
382
+ function MJOOrderLinesEditorComponent_For_3_Conditional_31_Conditional_7_Template(rf, ctx) { if (rf & 1) {
374
383
  i0.ɵɵtext(0, " Continuing existing coverage, so the term begins the day after the current one ends \u2014 not something this line can set. ");
375
384
  } }
376
- function MJOOrderLinesEditorComponent_For_2_Conditional_31_Conditional_8_Template(rf, ctx) { if (rf & 1) {
385
+ function MJOOrderLinesEditorComponent_For_3_Conditional_31_Conditional_8_Template(rf, ctx) { if (rf & 1) {
377
386
  i0.ɵɵtext(0, " Following the order date. The subscription type's rules may still adjust the actual start. ");
378
387
  } }
379
- function MJOOrderLinesEditorComponent_For_2_Conditional_31_Conditional_9_Template(rf, ctx) { if (rf & 1) {
388
+ function MJOOrderLinesEditorComponent_For_3_Conditional_31_Conditional_9_Template(rf, ctx) { if (rf & 1) {
380
389
  i0.ɵɵtext(0, " Stated on this line, so a later change to the order date leaves it alone. ");
381
390
  } }
382
- function MJOOrderLinesEditorComponent_For_2_Conditional_31_Conditional_10_Conditional_3_Template(rf, ctx) { if (rf & 1) {
391
+ function MJOOrderLinesEditorComponent_For_3_Conditional_31_Conditional_10_Conditional_3_Template(rf, ctx) { if (rf & 1) {
383
392
  i0.ɵɵtext(0);
384
393
  } if (rf & 2) {
385
394
  const holding_r15 = i0.ɵɵnextContext();
386
- const ctx_r2 = i0.ɵɵnextContext(3);
387
- i0.ɵɵtextInterpolate1(" (covered through ", ctx_r2.HoldingCoverageEnd(holding_r15), ") ");
395
+ const ctx_r0 = i0.ɵɵnextContext(3);
396
+ i0.ɵɵtextInterpolate1(" (covered through ", ctx_r0.HoldingCoverageEnd(holding_r15), ") ");
388
397
  } }
389
- function MJOOrderLinesEditorComponent_For_2_Conditional_31_Conditional_10_Conditional_5_Conditional_3_Template(rf, ctx) { if (rf & 1) {
398
+ function MJOOrderLinesEditorComponent_For_3_Conditional_31_Conditional_10_Conditional_5_Conditional_3_Template(rf, ctx) { if (rf & 1) {
390
399
  i0.ɵɵtext(0);
391
400
  } if (rf & 2) {
392
401
  const holding_r15 = i0.ɵɵnextContext(2);
393
- const ctx_r2 = i0.ɵɵnextContext(3);
394
- i0.ɵɵtextInterpolate1(" (starts ", ctx_r2.HoldingContinuationStart(holding_r15), ") ");
402
+ const ctx_r0 = i0.ɵɵnextContext(3);
403
+ i0.ɵɵtextInterpolate1(" (starts ", ctx_r0.HoldingContinuationStart(holding_r15), ") ");
395
404
  } }
396
- function MJOOrderLinesEditorComponent_For_2_Conditional_31_Conditional_10_Conditional_5_Template(rf, ctx) { if (rf & 1) {
405
+ function MJOOrderLinesEditorComponent_For_3_Conditional_31_Conditional_10_Conditional_5_Template(rf, ctx) { if (rf & 1) {
397
406
  const _r16 = i0.ɵɵgetCurrentView();
398
- i0.ɵɵelementStart(0, "div", 69)(1, "button", 70);
399
- i0.ɵɵlistener("click", function MJOOrderLinesEditorComponent_For_2_Conditional_31_Conditional_10_Conditional_5_Template_button_click_1_listener() { i0.ɵɵrestoreView(_r16); const line_r2 = i0.ɵɵnextContext(3).$implicit; const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.SetSubscriptionAction(line_r2, "ExtendExisting")); });
407
+ i0.ɵɵelementStart(0, "div", 71)(1, "button", 72);
408
+ i0.ɵɵlistener("click", function MJOOrderLinesEditorComponent_For_3_Conditional_31_Conditional_10_Conditional_5_Template_button_click_1_listener() { i0.ɵɵrestoreView(_r16); const line_r3 = i0.ɵɵnextContext(3).$implicit; const ctx_r0 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r0.SetSubscriptionAction(line_r3, "ExtendExisting")); });
400
409
  i0.ɵɵtext(2, " Add as next term ");
401
- i0.ɵɵconditionalCreate(3, MJOOrderLinesEditorComponent_For_2_Conditional_31_Conditional_10_Conditional_5_Conditional_3_Template, 1, 1);
410
+ i0.ɵɵconditionalCreate(3, MJOOrderLinesEditorComponent_For_3_Conditional_31_Conditional_10_Conditional_5_Conditional_3_Template, 1, 1);
402
411
  i0.ɵɵelementEnd();
403
- i0.ɵɵelementStart(4, "button", 70);
404
- i0.ɵɵlistener("click", function MJOOrderLinesEditorComponent_For_2_Conditional_31_Conditional_10_Conditional_5_Template_button_click_4_listener() { i0.ɵɵrestoreView(_r16); const line_r2 = i0.ɵɵnextContext(3).$implicit; const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.SetSubscriptionAction(line_r2, "CreateNew")); });
412
+ i0.ɵɵelementStart(4, "button", 72);
413
+ i0.ɵɵlistener("click", function MJOOrderLinesEditorComponent_For_3_Conditional_31_Conditional_10_Conditional_5_Template_button_click_4_listener() { i0.ɵɵrestoreView(_r16); const line_r3 = i0.ɵɵnextContext(3).$implicit; const ctx_r0 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r0.SetSubscriptionAction(line_r3, "CreateNew")); });
405
414
  i0.ɵɵtext(5, " New subscription (keeps this line's dates) ");
406
415
  i0.ɵɵelementEnd()();
407
416
  } if (rf & 2) {
408
417
  const holding_r15 = i0.ɵɵnextContext();
409
- const line_r2 = i0.ɵɵnextContext(2).$implicit;
410
- const ctx_r2 = i0.ɵɵnextContext();
418
+ const line_r3 = i0.ɵɵnextContext(2).$implicit;
419
+ const ctx_r0 = i0.ɵɵnextContext();
411
420
  i0.ɵɵadvance();
412
- i0.ɵɵclassProp("is-selected", line_r2.SubscriptionAction === "ExtendExisting");
413
- i0.ɵɵattribute("aria-pressed", line_r2.SubscriptionAction === "ExtendExisting");
421
+ i0.ɵɵclassProp("is-selected", line_r3.SubscriptionAction === "ExtendExisting");
422
+ i0.ɵɵattribute("aria-pressed", line_r3.SubscriptionAction === "ExtendExisting");
414
423
  i0.ɵɵadvance(2);
415
- i0.ɵɵconditional(ctx_r2.HoldingContinuationStart(holding_r15) ? 3 : -1);
424
+ i0.ɵɵconditional(ctx_r0.HoldingContinuationStart(holding_r15) ? 3 : -1);
416
425
  i0.ɵɵadvance();
417
- i0.ɵɵclassProp("is-selected", line_r2.SubscriptionAction === "CreateNew");
418
- i0.ɵɵattribute("aria-pressed", line_r2.SubscriptionAction === "CreateNew");
426
+ i0.ɵɵclassProp("is-selected", line_r3.SubscriptionAction === "CreateNew");
427
+ i0.ɵɵattribute("aria-pressed", line_r3.SubscriptionAction === "CreateNew");
419
428
  } }
420
- function MJOOrderLinesEditorComponent_For_2_Conditional_31_Conditional_10_Conditional_7_Template(rf, ctx) { if (rf & 1) {
429
+ function MJOOrderLinesEditorComponent_For_3_Conditional_31_Conditional_10_Conditional_7_Template(rf, ctx) { if (rf & 1) {
421
430
  i0.ɵɵtext(0, " Confirm starts a separate subscription on this line's service period. ");
422
431
  } }
423
- function MJOOrderLinesEditorComponent_For_2_Conditional_31_Conditional_10_Conditional_8_Template(rf, ctx) { if (rf & 1) {
432
+ function MJOOrderLinesEditorComponent_For_3_Conditional_31_Conditional_10_Conditional_8_Template(rf, ctx) { if (rf & 1) {
424
433
  i0.ɵɵtext(0);
425
434
  } if (rf & 2) {
426
435
  const holding_r15 = i0.ɵɵnextContext();
427
436
  i0.ɵɵtextInterpolate1(" Confirm adds a term to ", holding_r15.SubscriptionNumber, ", starting the day after its coverage ends. ");
428
437
  } }
429
- function MJOOrderLinesEditorComponent_For_2_Conditional_31_Conditional_10_Conditional_9_Template(rf, ctx) { if (rf & 1) {
438
+ function MJOOrderLinesEditorComponent_For_3_Conditional_31_Conditional_10_Conditional_9_Template(rf, ctx) { if (rf & 1) {
430
439
  i0.ɵɵtext(0, " Not chosen. The subscription type's rule will decide at confirm, and it may move this line's dates. ");
431
440
  } }
432
- function MJOOrderLinesEditorComponent_For_2_Conditional_31_Conditional_10_Template(rf, ctx) { if (rf & 1) {
433
- i0.ɵɵelementStart(0, "div", 64)(1, "span", 68);
441
+ function MJOOrderLinesEditorComponent_For_3_Conditional_31_Conditional_10_Template(rf, ctx) { if (rf & 1) {
442
+ i0.ɵɵelementStart(0, "div", 66)(1, "span", 70);
434
443
  i0.ɵɵtext(2);
435
- i0.ɵɵconditionalCreate(3, MJOOrderLinesEditorComponent_For_2_Conditional_31_Conditional_10_Conditional_3_Template, 1, 1);
444
+ i0.ɵɵconditionalCreate(3, MJOOrderLinesEditorComponent_For_3_Conditional_31_Conditional_10_Conditional_3_Template, 1, 1);
436
445
  i0.ɵɵtext(4, ". ");
437
446
  i0.ɵɵelementEnd();
438
- i0.ɵɵconditionalCreate(5, MJOOrderLinesEditorComponent_For_2_Conditional_31_Conditional_10_Conditional_5_Template, 6, 7, "div", 69);
439
- i0.ɵɵelementStart(6, "span", 63);
440
- i0.ɵɵconditionalCreate(7, MJOOrderLinesEditorComponent_For_2_Conditional_31_Conditional_10_Conditional_7_Template, 1, 0)(8, MJOOrderLinesEditorComponent_For_2_Conditional_31_Conditional_10_Conditional_8_Template, 1, 1)(9, MJOOrderLinesEditorComponent_For_2_Conditional_31_Conditional_10_Conditional_9_Template, 1, 0);
447
+ i0.ɵɵconditionalCreate(5, MJOOrderLinesEditorComponent_For_3_Conditional_31_Conditional_10_Conditional_5_Template, 6, 7, "div", 71);
448
+ i0.ɵɵelementStart(6, "span", 65);
449
+ i0.ɵɵconditionalCreate(7, MJOOrderLinesEditorComponent_For_3_Conditional_31_Conditional_10_Conditional_7_Template, 1, 0)(8, MJOOrderLinesEditorComponent_For_3_Conditional_31_Conditional_10_Conditional_8_Template, 1, 1)(9, MJOOrderLinesEditorComponent_For_3_Conditional_31_Conditional_10_Conditional_9_Template, 1, 0);
441
450
  i0.ɵɵelementEnd()();
442
451
  } if (rf & 2) {
443
452
  const holding_r15 = ctx;
444
- const line_r2 = i0.ɵɵnextContext(2).$implicit;
445
- const ctx_r2 = i0.ɵɵnextContext();
453
+ const line_r3 = i0.ɵɵnextContext(2).$implicit;
454
+ const ctx_r0 = i0.ɵɵnextContext();
446
455
  i0.ɵɵattribute("aria-label", "Existing subscription " + holding_r15.SubscriptionNumber);
447
456
  i0.ɵɵadvance(2);
448
457
  i0.ɵɵtextInterpolate1(" The customer already holds ", holding_r15.SubscriptionNumber, " for this product ");
449
458
  i0.ɵɵadvance();
450
- i0.ɵɵconditional(ctx_r2.HoldingCoverageEnd(holding_r15) ? 3 : -1);
459
+ i0.ɵɵconditional(ctx_r0.HoldingCoverageEnd(holding_r15) ? 3 : -1);
451
460
  i0.ɵɵadvance(2);
452
- i0.ɵɵconditional(ctx_r2.CanEditServicePeriod() ? 5 : -1);
461
+ i0.ɵɵconditional(ctx_r0.CanEditServicePeriod() ? 5 : -1);
453
462
  i0.ɵɵadvance();
454
- i0.ɵɵclassProp("is-error", !line_r2.SubscriptionAction);
463
+ i0.ɵɵclassProp("is-error", !line_r3.SubscriptionAction);
455
464
  i0.ɵɵadvance();
456
- i0.ɵɵconditional(line_r2.SubscriptionAction === "CreateNew" ? 7 : line_r2.SubscriptionAction === "ExtendExisting" ? 8 : 9);
465
+ i0.ɵɵconditional(line_r3.SubscriptionAction === "CreateNew" ? 7 : line_r3.SubscriptionAction === "ExtendExisting" ? 8 : 9);
457
466
  } }
458
- function MJOOrderLinesEditorComponent_For_2_Conditional_31_Template(rf, ctx) { if (rf & 1) {
459
- i0.ɵɵelementStart(0, "div", 27)(1, "label", 60);
467
+ function MJOOrderLinesEditorComponent_For_3_Conditional_31_Template(rf, ctx) { if (rf & 1) {
468
+ i0.ɵɵelementStart(0, "div", 28)(1, "label", 62);
460
469
  i0.ɵɵtext(2, " Term start ");
461
470
  i0.ɵɵelementEnd();
462
- i0.ɵɵconditionalCreate(3, MJOOrderLinesEditorComponent_For_2_Conditional_31_Conditional_3_Template, 2, 1, "span", 61)(4, MJOOrderLinesEditorComponent_For_2_Conditional_31_Conditional_4_Template, 2, 5)(5, MJOOrderLinesEditorComponent_For_2_Conditional_31_Conditional_5_Template, 2, 1, "span", 62);
463
- i0.ɵɵelementStart(6, "span", 63);
464
- i0.ɵɵconditionalCreate(7, MJOOrderLinesEditorComponent_For_2_Conditional_31_Conditional_7_Template, 1, 0)(8, MJOOrderLinesEditorComponent_For_2_Conditional_31_Conditional_8_Template, 1, 0)(9, MJOOrderLinesEditorComponent_For_2_Conditional_31_Conditional_9_Template, 1, 0);
471
+ i0.ɵɵconditionalCreate(3, MJOOrderLinesEditorComponent_For_3_Conditional_31_Conditional_3_Template, 2, 1, "span", 63)(4, MJOOrderLinesEditorComponent_For_3_Conditional_31_Conditional_4_Template, 2, 5)(5, MJOOrderLinesEditorComponent_For_3_Conditional_31_Conditional_5_Template, 2, 1, "span", 64);
472
+ i0.ɵɵelementStart(6, "span", 65);
473
+ i0.ɵɵconditionalCreate(7, MJOOrderLinesEditorComponent_For_3_Conditional_31_Conditional_7_Template, 1, 0)(8, MJOOrderLinesEditorComponent_For_3_Conditional_31_Conditional_8_Template, 1, 0)(9, MJOOrderLinesEditorComponent_For_3_Conditional_31_Conditional_9_Template, 1, 0);
465
474
  i0.ɵɵelementEnd()();
466
- i0.ɵɵconditionalCreate(10, MJOOrderLinesEditorComponent_For_2_Conditional_31_Conditional_10_Template, 10, 7, "div", 64);
475
+ i0.ɵɵconditionalCreate(10, MJOOrderLinesEditorComponent_For_3_Conditional_31_Conditional_10_Template, 10, 7, "div", 66);
467
476
  } if (rf & 2) {
468
477
  let tmp_14_0;
469
- const line_r2 = i0.ɵɵnextContext().$implicit;
470
- const ctx_r2 = i0.ɵɵnextContext();
478
+ const line_r3 = i0.ɵɵnextContext().$implicit;
479
+ const ctx_r0 = i0.ɵɵnextContext();
471
480
  i0.ɵɵadvance();
472
- i0.ɵɵattribute("for", ctx_r2.EditMode && !ctx_r2.TermStartIsDictated(line_r2) ? "mjo-ol-term-" + line_r2.ID : null);
481
+ i0.ɵɵattribute("for", ctx_r0.EditMode && !ctx_r0.TermStartIsDictated(line_r3) ? "mjo-ol-term-" + line_r3.ID : null);
473
482
  i0.ɵɵadvance(2);
474
- i0.ɵɵconditional(ctx_r2.TermStartIsDictated(line_r2) ? 3 : ctx_r2.EditMode ? 4 : 5);
483
+ i0.ɵɵconditional(ctx_r0.TermStartIsDictated(line_r3) ? 3 : ctx_r0.EditMode ? 4 : 5);
475
484
  i0.ɵɵadvance(4);
476
- i0.ɵɵconditional(ctx_r2.TermStartIsDictated(line_r2) ? 7 : ctx_r2.TermStartFollowsOrderDate(line_r2) ? 8 : 9);
485
+ i0.ɵɵconditional(ctx_r0.TermStartIsDictated(line_r3) ? 7 : ctx_r0.TermStartFollowsOrderDate(line_r3) ? 8 : 9);
477
486
  i0.ɵɵadvance(3);
478
- i0.ɵɵconditional((tmp_14_0 = ctx_r2.ExistingHoldingFor(line_r2)) ? 10 : -1, tmp_14_0);
487
+ i0.ɵɵconditional((tmp_14_0 = ctx_r0.ExistingHoldingFor(line_r3)) ? 10 : -1, tmp_14_0);
479
488
  } }
480
- function MJOOrderLinesEditorComponent_For_2_Conditional_32_Conditional_3_Template(rf, ctx) { if (rf & 1) {
489
+ function MJOOrderLinesEditorComponent_For_3_Conditional_32_Conditional_3_Template(rf, ctx) { if (rf & 1) {
481
490
  const _r17 = i0.ɵɵgetCurrentView();
482
- i0.ɵɵelementStart(0, "input", 72);
483
- i0.ɵɵlistener("change", function MJOOrderLinesEditorComponent_For_2_Conditional_32_Conditional_3_Template_input_change_0_listener($event) { i0.ɵɵrestoreView(_r17); const line_r2 = i0.ɵɵnextContext(2).$implicit; const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.SetServicePeriod(line_r2, "Start", $event)); });
491
+ i0.ɵɵelementStart(0, "input", 74);
492
+ i0.ɵɵlistener("change", function MJOOrderLinesEditorComponent_For_3_Conditional_32_Conditional_3_Template_input_change_0_listener($event) { i0.ɵɵrestoreView(_r17); const line_r3 = i0.ɵɵnextContext(2).$implicit; const ctx_r0 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r0.SetServicePeriod(line_r3, "Start", $event)); });
484
493
  i0.ɵɵelementEnd();
485
- i0.ɵɵelementStart(1, "span", 73);
494
+ i0.ɵɵelementStart(1, "span", 75);
486
495
  i0.ɵɵtext(2, "to");
487
496
  i0.ɵɵelementEnd();
488
- i0.ɵɵelementStart(3, "input", 74);
489
- i0.ɵɵlistener("change", function MJOOrderLinesEditorComponent_For_2_Conditional_32_Conditional_3_Template_input_change_3_listener($event) { i0.ɵɵrestoreView(_r17); const line_r2 = i0.ɵɵnextContext(2).$implicit; const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.SetServicePeriod(line_r2, "End", $event)); });
497
+ i0.ɵɵelementStart(3, "input", 76);
498
+ i0.ɵɵlistener("change", function MJOOrderLinesEditorComponent_For_3_Conditional_32_Conditional_3_Template_input_change_3_listener($event) { i0.ɵɵrestoreView(_r17); const line_r3 = i0.ɵɵnextContext(2).$implicit; const ctx_r0 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r0.SetServicePeriod(line_r3, "End", $event)); });
490
499
  i0.ɵɵelementEnd();
491
500
  } if (rf & 2) {
492
- const line_r2 = i0.ɵɵnextContext(2).$implicit;
493
- const ctx_r2 = i0.ɵɵnextContext();
494
- i0.ɵɵproperty("id", "mjo-ol-sp-start-" + line_r2.ID)("value", ctx_r2.ServicePeriodValue(line_r2, "Start"));
501
+ const line_r3 = i0.ɵɵnextContext(2).$implicit;
502
+ const ctx_r0 = i0.ɵɵnextContext();
503
+ i0.ɵɵproperty("id", "mjo-ol-sp-start-" + line_r3.ID)("value", ctx_r0.ServicePeriodValue(line_r3, "Start"));
495
504
  i0.ɵɵadvance(3);
496
- i0.ɵɵproperty("value", ctx_r2.ServicePeriodValue(line_r2, "End"));
505
+ i0.ɵɵproperty("value", ctx_r0.ServicePeriodValue(line_r3, "End"));
497
506
  } }
498
- function MJOOrderLinesEditorComponent_For_2_Conditional_32_Conditional_4_Template(rf, ctx) { if (rf & 1) {
499
- i0.ɵɵelementStart(0, "span", 62);
507
+ function MJOOrderLinesEditorComponent_For_3_Conditional_32_Conditional_4_Template(rf, ctx) { if (rf & 1) {
508
+ i0.ɵɵelementStart(0, "span", 64);
500
509
  i0.ɵɵtext(1);
501
510
  i0.ɵɵelementEnd();
502
511
  } if (rf & 2) {
503
- const line_r2 = i0.ɵɵnextContext(2).$implicit;
504
- const ctx_r2 = i0.ɵɵnextContext();
512
+ const line_r3 = i0.ɵɵnextContext(2).$implicit;
513
+ const ctx_r0 = i0.ɵɵnextContext();
505
514
  i0.ɵɵadvance();
506
- i0.ɵɵtextInterpolate2(" ", ctx_r2.ServicePeriodValue(line_r2, "Start") || "\u2014", " to ", ctx_r2.ServicePeriodValue(line_r2, "End") || "\u2014", " ");
515
+ i0.ɵɵtextInterpolate2(" ", ctx_r0.ServicePeriodValue(line_r3, "Start") || "\u2014", " to ", ctx_r0.ServicePeriodValue(line_r3, "End") || "\u2014", " ");
507
516
  } }
508
- function MJOOrderLinesEditorComponent_For_2_Conditional_32_Conditional_5_Template(rf, ctx) { if (rf & 1) {
509
- i0.ɵɵelementStart(0, "span", 71);
517
+ function MJOOrderLinesEditorComponent_For_3_Conditional_32_Conditional_5_Template(rf, ctx) { if (rf & 1) {
518
+ i0.ɵɵelementStart(0, "span", 73);
510
519
  i0.ɵɵtext(1, " End date must be on or after the start date. ");
511
520
  i0.ɵɵelementEnd();
512
521
  } }
513
- function MJOOrderLinesEditorComponent_For_2_Conditional_32_Conditional_6_Template(rf, ctx) { if (rf & 1) {
514
- i0.ɵɵelementStart(0, "span", 63);
522
+ function MJOOrderLinesEditorComponent_For_3_Conditional_32_Conditional_6_Template(rf, ctx) { if (rf & 1) {
523
+ i0.ɵɵelementStart(0, "span", 65);
515
524
  i0.ɵɵtext(1, " Needed to confirm: revenue on this line is recognized against these dates. ");
516
525
  i0.ɵɵelementEnd();
517
526
  } }
518
- function MJOOrderLinesEditorComponent_For_2_Conditional_32_Template(rf, ctx) { if (rf & 1) {
519
- i0.ɵɵelementStart(0, "div", 27)(1, "label", 60);
527
+ function MJOOrderLinesEditorComponent_For_3_Conditional_32_Template(rf, ctx) { if (rf & 1) {
528
+ i0.ɵɵelementStart(0, "div", 28)(1, "label", 62);
520
529
  i0.ɵɵtext(2, " Service period ");
521
530
  i0.ɵɵelementEnd();
522
- i0.ɵɵconditionalCreate(3, MJOOrderLinesEditorComponent_For_2_Conditional_32_Conditional_3_Template, 4, 3)(4, MJOOrderLinesEditorComponent_For_2_Conditional_32_Conditional_4_Template, 2, 2, "span", 62);
523
- i0.ɵɵconditionalCreate(5, MJOOrderLinesEditorComponent_For_2_Conditional_32_Conditional_5_Template, 2, 0, "span", 71)(6, MJOOrderLinesEditorComponent_For_2_Conditional_32_Conditional_6_Template, 2, 0, "span", 63);
531
+ i0.ɵɵconditionalCreate(3, MJOOrderLinesEditorComponent_For_3_Conditional_32_Conditional_3_Template, 4, 3)(4, MJOOrderLinesEditorComponent_For_3_Conditional_32_Conditional_4_Template, 2, 2, "span", 64);
532
+ i0.ɵɵconditionalCreate(5, MJOOrderLinesEditorComponent_For_3_Conditional_32_Conditional_5_Template, 2, 0, "span", 73)(6, MJOOrderLinesEditorComponent_For_3_Conditional_32_Conditional_6_Template, 2, 0, "span", 65);
524
533
  i0.ɵɵelementEnd();
525
534
  } if (rf & 2) {
526
- const line_r2 = i0.ɵɵnextContext().$implicit;
527
- const ctx_r2 = i0.ɵɵnextContext();
535
+ const line_r3 = i0.ɵɵnextContext().$implicit;
536
+ const ctx_r0 = i0.ɵɵnextContext();
528
537
  i0.ɵɵadvance();
529
- i0.ɵɵattribute("for", ctx_r2.CanEditServicePeriod() ? "mjo-ol-sp-start-" + line_r2.ID : null);
538
+ i0.ɵɵattribute("for", ctx_r0.CanEditServicePeriod() ? "mjo-ol-sp-start-" + line_r3.ID : null);
530
539
  i0.ɵɵadvance(2);
531
- i0.ɵɵconditional(ctx_r2.CanEditServicePeriod() ? 3 : 4);
540
+ i0.ɵɵconditional(ctx_r0.CanEditServicePeriod() ? 3 : 4);
532
541
  i0.ɵɵadvance(2);
533
- i0.ɵɵconditional(ctx_r2.ServicePeriodBackwards(line_r2) ? 5 : ctx_r2.ServicePeriodMissing(line_r2) ? 6 : -1);
542
+ i0.ɵɵconditional(ctx_r0.ServicePeriodBackwards(line_r3) ? 5 : ctx_r0.ServicePeriodMissing(line_r3) ? 6 : -1);
543
+ } }
544
+ function MJOOrderLinesEditorComponent_For_3_Conditional_33_Conditional_5_Template(rf, ctx) { if (rf & 1) {
545
+ const _r18 = i0.ɵɵgetCurrentView();
546
+ i0.ɵɵelementStart(0, "label", 80)(1, "input", 81);
547
+ i0.ɵɵlistener("change", function MJOOrderLinesEditorComponent_For_3_Conditional_33_Conditional_5_Template_input_change_1_listener($event) { i0.ɵɵrestoreView(_r18); const line_r3 = i0.ɵɵnextContext(2).$implicit; const ctx_r0 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r0.SetOverlapAcknowledged(line_r3, $event)); });
548
+ i0.ɵɵelementEnd();
549
+ i0.ɵɵtext(2, " Run alongside the existing coverage. Both will be billed. ");
550
+ i0.ɵɵelementEnd();
551
+ } if (rf & 2) {
552
+ const line_r3 = i0.ɵɵnextContext(2).$implicit;
553
+ const ctx_r0 = i0.ɵɵnextContext();
554
+ i0.ɵɵadvance();
555
+ i0.ɵɵproperty("checked", line_r3.AcknowledgesCoverageOverlap)("disabled", !ctx_r0.EditMode);
534
556
  } }
535
- function MJOOrderLinesEditorComponent_For_2_Conditional_33_Conditional_5_Template(rf, ctx) { if (rf & 1) {
536
- i0.ɵɵelementStart(0, "span", 79);
557
+ function MJOOrderLinesEditorComponent_For_3_Conditional_33_Template(rf, ctx) { if (rf & 1) {
558
+ i0.ɵɵelementStart(0, "div", 77);
559
+ i0.ɵɵelement(1, "i", 78);
560
+ i0.ɵɵelementStart(2, "div", 79)(3, "span");
561
+ i0.ɵɵtext(4);
562
+ i0.ɵɵelementEnd();
563
+ i0.ɵɵconditionalCreate(5, MJOOrderLinesEditorComponent_For_3_Conditional_33_Conditional_5_Template, 3, 2, "label", 80);
564
+ i0.ɵɵelementEnd()();
565
+ } if (rf & 2) {
566
+ const line_r3 = i0.ɵɵnextContext().$implicit;
567
+ const ctx_r0 = i0.ɵɵnextContext();
568
+ i0.ɵɵclassProp("is-blocking", ctx_r0.OverlapBlocksConfirm(line_r3));
569
+ i0.ɵɵadvance(4);
570
+ i0.ɵɵtextInterpolate(ctx.Message);
571
+ i0.ɵɵadvance();
572
+ i0.ɵɵconditional(ctx_r0.CanAcknowledgeOverlap(line_r3) ? 5 : -1);
573
+ } }
574
+ function MJOOrderLinesEditorComponent_For_3_Conditional_34_Conditional_5_Template(rf, ctx) { if (rf & 1) {
575
+ i0.ɵɵelementStart(0, "span", 86);
537
576
  i0.ɵɵtext(1);
538
577
  i0.ɵɵelementEnd();
539
578
  } if (rf & 2) {
540
- const line_r2 = i0.ɵɵnextContext(2).$implicit;
541
- const ctx_r2 = i0.ɵɵnextContext();
579
+ const line_r3 = i0.ɵɵnextContext(2).$implicit;
580
+ const ctx_r0 = i0.ɵɵnextContext();
542
581
  i0.ɵɵadvance();
543
- i0.ɵɵtextInterpolate(ctx_r2.ExtensionHint(line_r2));
582
+ i0.ɵɵtextInterpolate(ctx_r0.ExtensionHint(line_r3));
544
583
  } }
545
- function MJOOrderLinesEditorComponent_For_2_Conditional_33_Template(rf, ctx) { if (rf & 1) {
546
- const _r18 = i0.ɵɵgetCurrentView();
547
- i0.ɵɵelementStart(0, "div", 75)(1, "button", 76);
548
- i0.ɵɵlistener("click", function MJOOrderLinesEditorComponent_For_2_Conditional_33_Template_button_click_1_listener() { i0.ɵɵrestoreView(_r18); const line_r2 = i0.ɵɵnextContext().$implicit; const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.ToggleExtension(line_r2)); });
549
- i0.ɵɵelement(2, "i", 77);
550
- i0.ɵɵelementStart(3, "span", 78);
584
+ function MJOOrderLinesEditorComponent_For_3_Conditional_34_Template(rf, ctx) { if (rf & 1) {
585
+ const _r19 = i0.ɵɵgetCurrentView();
586
+ i0.ɵɵelementStart(0, "div", 82)(1, "button", 83);
587
+ i0.ɵɵlistener("click", function MJOOrderLinesEditorComponent_For_3_Conditional_34_Template_button_click_1_listener() { i0.ɵɵrestoreView(_r19); const line_r3 = i0.ɵɵnextContext().$implicit; const ctx_r0 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r0.ToggleExtension(line_r3)); });
588
+ i0.ɵɵelement(2, "i", 84);
589
+ i0.ɵɵelementStart(3, "span", 85);
551
590
  i0.ɵɵtext(4);
552
591
  i0.ɵɵelementEnd();
553
- i0.ɵɵconditionalCreate(5, MJOOrderLinesEditorComponent_For_2_Conditional_33_Conditional_5_Template, 2, 1, "span", 79);
592
+ i0.ɵɵconditionalCreate(5, MJOOrderLinesEditorComponent_For_3_Conditional_34_Conditional_5_Template, 2, 1, "span", 86);
554
593
  i0.ɵɵelementEnd();
555
- i0.ɵɵelementStart(6, "div", 80)(7, "div", 81)(8, "mj-entity-form-host", 82);
556
- i0.ɵɵlistener("FormCreated", function MJOOrderLinesEditorComponent_For_2_Conditional_33_Template_mj_entity_form_host_FormCreated_8_listener($event) { i0.ɵɵrestoreView(_r18); const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.OnExtensionFormCreated($event)); })("Navigate", function MJOOrderLinesEditorComponent_For_2_Conditional_33_Template_mj_entity_form_host_Navigate_8_listener($event) { i0.ɵɵrestoreView(_r18); const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.OnExtensionNavigate($event)); });
594
+ i0.ɵɵelementStart(6, "div", 87)(7, "div", 88)(8, "mj-entity-form-host", 89);
595
+ i0.ɵɵlistener("FormCreated", function MJOOrderLinesEditorComponent_For_3_Conditional_34_Template_mj_entity_form_host_FormCreated_8_listener($event) { i0.ɵɵrestoreView(_r19); const ctx_r0 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r0.OnExtensionFormCreated($event)); })("Navigate", function MJOOrderLinesEditorComponent_For_3_Conditional_34_Template_mj_entity_form_host_Navigate_8_listener($event) { i0.ɵɵrestoreView(_r19); const ctx_r0 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r0.OnExtensionNavigate($event)); });
557
596
  i0.ɵɵelementEnd()()()();
558
597
  } if (rf & 2) {
559
- const line_r2 = i0.ɵɵnextContext().$implicit;
560
- const ctx_r2 = i0.ɵɵnextContext();
561
- i0.ɵɵclassProp("is-open", ctx_r2.IsExtensionOpen(line_r2));
598
+ const line_r3 = i0.ɵɵnextContext().$implicit;
599
+ const ctx_r0 = i0.ɵɵnextContext();
600
+ i0.ɵɵclassProp("is-open", ctx_r0.IsExtensionOpen(line_r3));
562
601
  i0.ɵɵadvance();
563
- i0.ɵɵattribute("aria-expanded", ctx_r2.IsExtensionOpen(line_r2))("aria-controls", "mjo-ol-ext-" + line_r2.ID);
602
+ i0.ɵɵattribute("aria-expanded", ctx_r0.IsExtensionOpen(line_r3))("aria-controls", "mjo-ol-ext-" + line_r3.ID);
564
603
  i0.ɵɵadvance(3);
565
- i0.ɵɵtextInterpolate(ctx_r2.ExtensionLabel(line_r2));
604
+ i0.ɵɵtextInterpolate(ctx_r0.ExtensionLabel(line_r3));
566
605
  i0.ɵɵadvance();
567
- i0.ɵɵconditional(!ctx_r2.IsExtensionOpen(line_r2) ? 5 : -1);
606
+ i0.ɵɵconditional(!ctx_r0.IsExtensionOpen(line_r3) ? 5 : -1);
568
607
  i0.ɵɵadvance();
569
- i0.ɵɵproperty("id", "mjo-ol-ext-" + line_r2.ID);
570
- i0.ɵɵattribute("inert", ctx_r2.IsExtensionOpen(line_r2) ? null : "")("aria-hidden", !ctx_r2.IsExtensionOpen(line_r2));
608
+ i0.ɵɵproperty("id", "mjo-ol-ext-" + line_r3.ID);
609
+ i0.ɵɵattribute("inert", ctx_r0.IsExtensionOpen(line_r3) ? null : "")("aria-hidden", !ctx_r0.IsExtensionOpen(line_r3));
571
610
  i0.ɵɵadvance(2);
572
- i0.ɵɵproperty("Record", ctx)("EditMode", ctx_r2.EditMode)("Config", ctx_r2.ExtensionFormConfigFor(line_r2));
611
+ i0.ɵɵproperty("Record", ctx)("EditMode", ctx_r0.EditMode)("Config", ctx_r0.ExtensionFormConfigFor(line_r3));
573
612
  } }
574
- function MJOOrderLinesEditorComponent_For_2_Template(rf, ctx) { if (rf & 1) {
575
- const _r1 = i0.ɵɵgetCurrentView();
576
- i0.ɵɵelementStart(0, "div", 2)(1, "div", 6)(2, "div", 7)(3, "button", 8);
577
- i0.ɵɵlistener("click", function MJOOrderLinesEditorComponent_For_2_Template_button_click_3_listener($event) { const line_r2 = i0.ɵɵrestoreView(_r1).$implicit; const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.OpenProduct(line_r2, $event)); });
613
+ function MJOOrderLinesEditorComponent_For_3_Template(rf, ctx) { if (rf & 1) {
614
+ const _r2 = i0.ɵɵgetCurrentView();
615
+ i0.ɵɵelementStart(0, "div", 3)(1, "div", 7)(2, "div", 8)(3, "button", 9);
616
+ i0.ɵɵlistener("click", function MJOOrderLinesEditorComponent_For_3_Template_button_click_3_listener($event) { const line_r3 = i0.ɵɵrestoreView(_r2).$implicit; const ctx_r0 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r0.OpenProduct(line_r3, $event)); });
578
617
  i0.ɵɵtext(4);
579
618
  i0.ɵɵelementEnd();
580
- i0.ɵɵelementStart(5, "div", 9);
619
+ i0.ɵɵelementStart(5, "div", 10);
581
620
  i0.ɵɵtext(6);
582
- i0.ɵɵconditionalCreate(7, MJOOrderLinesEditorComponent_For_2_Conditional_7_Template, 1, 1);
621
+ i0.ɵɵconditionalCreate(7, MJOOrderLinesEditorComponent_For_3_Conditional_7_Template, 1, 1);
583
622
  i0.ɵɵelementEnd()();
584
- i0.ɵɵelementStart(8, "div", 10);
585
- i0.ɵɵconditionalCreate(9, MJOOrderLinesEditorComponent_For_2_Conditional_9_Template, 5, 2)(10, MJOOrderLinesEditorComponent_For_2_Conditional_10_Template, 2, 1, "span", 11);
623
+ i0.ɵɵelementStart(8, "div", 11);
624
+ i0.ɵɵconditionalCreate(9, MJOOrderLinesEditorComponent_For_3_Conditional_9_Template, 5, 2)(10, MJOOrderLinesEditorComponent_For_3_Conditional_10_Template, 2, 1, "span", 12);
586
625
  i0.ɵɵelementEnd();
587
- i0.ɵɵelementStart(11, "div", 12)(12, "div", 13)(13, "div", 14);
626
+ i0.ɵɵelementStart(11, "div", 13)(12, "div", 14)(13, "div", 15);
588
627
  i0.ɵɵtext(14);
589
628
  i0.ɵɵpipe(15, "mjoMoney");
590
629
  i0.ɵɵelementEnd();
591
- i0.ɵɵconditionalCreate(16, MJOOrderLinesEditorComponent_For_2_Conditional_16_Template, 2, 2, "button", 15);
630
+ i0.ɵɵconditionalCreate(16, MJOOrderLinesEditorComponent_For_3_Conditional_16_Template, 2, 2, "button", 16);
592
631
  i0.ɵɵelementEnd();
593
- i0.ɵɵconditionalCreate(17, MJOOrderLinesEditorComponent_For_2_Conditional_17_Template, 2, 0, "span", 16)(18, MJOOrderLinesEditorComponent_For_2_Conditional_18_Template, 1, 3, "mjo-price-source-badge", 17);
594
- i0.ɵɵconditionalCreate(19, MJOOrderLinesEditorComponent_For_2_Conditional_19_Template, 3, 3, "span", 18);
595
- i0.ɵɵconditionalCreate(20, MJOOrderLinesEditorComponent_For_2_Conditional_20_Template, 2, 1, "div", 19);
632
+ i0.ɵɵconditionalCreate(17, MJOOrderLinesEditorComponent_For_3_Conditional_17_Template, 2, 0, "span", 17)(18, MJOOrderLinesEditorComponent_For_3_Conditional_18_Template, 1, 3, "mjo-price-source-badge", 18);
633
+ i0.ɵɵconditionalCreate(19, MJOOrderLinesEditorComponent_For_3_Conditional_19_Template, 3, 3, "span", 19);
634
+ i0.ɵɵconditionalCreate(20, MJOOrderLinesEditorComponent_For_3_Conditional_20_Template, 2, 1, "div", 20);
596
635
  i0.ɵɵelementEnd();
597
- i0.ɵɵelementStart(21, "div", 20);
636
+ i0.ɵɵelementStart(21, "div", 21);
598
637
  i0.ɵɵtext(22);
599
638
  i0.ɵɵpipe(23, "mjoMoney");
600
639
  i0.ɵɵelementEnd();
601
- i0.ɵɵelementStart(24, "button", 21);
602
- i0.ɵɵlistener("click", function MJOOrderLinesEditorComponent_For_2_Template_button_click_24_listener($event) { const line_r2 = i0.ɵɵrestoreView(_r1).$implicit; const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.OpenDetails(line_r2, $event)); });
603
- i0.ɵɵelement(25, "i", 22);
640
+ i0.ɵɵelementStart(24, "button", 22);
641
+ i0.ɵɵlistener("click", function MJOOrderLinesEditorComponent_For_3_Template_button_click_24_listener($event) { const line_r3 = i0.ɵɵrestoreView(_r2).$implicit; const ctx_r0 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r0.OpenDetails(line_r3, $event)); });
642
+ i0.ɵɵelement(25, "i", 23);
604
643
  i0.ɵɵelementEnd();
605
- i0.ɵɵconditionalCreate(26, MJOOrderLinesEditorComponent_For_2_Conditional_26_Template, 2, 1, "button", 23);
644
+ i0.ɵɵconditionalCreate(26, MJOOrderLinesEditorComponent_For_3_Conditional_26_Template, 2, 1, "button", 24);
606
645
  i0.ɵɵelementEnd();
607
- i0.ɵɵconditionalCreate(27, MJOOrderLinesEditorComponent_For_2_Conditional_27_Template, 8, 6, "div", 24);
608
- i0.ɵɵelementStart(28, "div", 25);
609
- i0.ɵɵconditionalCreate(29, MJOOrderLinesEditorComponent_For_2_Conditional_29_Template, 3, 3);
646
+ i0.ɵɵconditionalCreate(27, MJOOrderLinesEditorComponent_For_3_Conditional_27_Template, 8, 6, "div", 25);
647
+ i0.ɵɵelementStart(28, "div", 26);
648
+ i0.ɵɵconditionalCreate(29, MJOOrderLinesEditorComponent_For_3_Conditional_29_Template, 3, 3);
610
649
  i0.ɵɵelementEnd();
611
- i0.ɵɵconditionalCreate(30, MJOOrderLinesEditorComponent_For_2_Conditional_30_Template, 2, 1, "div", 26);
612
- i0.ɵɵconditionalCreate(31, MJOOrderLinesEditorComponent_For_2_Conditional_31_Template, 11, 4);
613
- i0.ɵɵconditionalCreate(32, MJOOrderLinesEditorComponent_For_2_Conditional_32_Template, 7, 3, "div", 27);
614
- i0.ɵɵconditionalCreate(33, MJOOrderLinesEditorComponent_For_2_Conditional_33_Template, 9, 12, "div", 28);
650
+ i0.ɵɵconditionalCreate(30, MJOOrderLinesEditorComponent_For_3_Conditional_30_Template, 2, 1, "div", 27);
651
+ i0.ɵɵconditionalCreate(31, MJOOrderLinesEditorComponent_For_3_Conditional_31_Template, 11, 4);
652
+ i0.ɵɵconditionalCreate(32, MJOOrderLinesEditorComponent_For_3_Conditional_32_Template, 7, 3, "div", 28);
653
+ i0.ɵɵconditionalCreate(33, MJOOrderLinesEditorComponent_For_3_Conditional_33_Template, 6, 4, "div", 29);
654
+ i0.ɵɵconditionalCreate(34, MJOOrderLinesEditorComponent_For_3_Conditional_34_Template, 9, 12, "div", 30);
615
655
  i0.ɵɵelementEnd();
616
656
  } if (rf & 2) {
617
657
  let tmp_10_0;
@@ -623,154 +663,157 @@ function MJOOrderLinesEditorComponent_For_2_Template(rf, ctx) { if (rf & 1) {
623
663
  let tmp_25_0;
624
664
  let tmp_26_0;
625
665
  let tmp_29_0;
626
- const line_r2 = ctx.$implicit;
627
- const ctx_r2 = i0.ɵɵnextContext();
666
+ let tmp_30_0;
667
+ const line_r3 = ctx.$implicit;
668
+ const ctx_r0 = i0.ɵɵnextContext();
628
669
  i0.ɵɵadvance(4);
629
- i0.ɵɵtextInterpolate1(" ", ((tmp_10_0 = ctx_r2.ProductFor(line_r2)) == null ? null : tmp_10_0.Name) ?? "Product", " ");
670
+ i0.ɵɵtextInterpolate1(" ", ((tmp_10_0 = ctx_r0.ProductFor(line_r3)) == null ? null : tmp_10_0.Name) ?? "Product", " ");
630
671
  i0.ɵɵadvance(2);
631
- i0.ɵɵtextInterpolate1(" ", (tmp_11_0 = ctx_r2.ProductFor(line_r2)) == null ? null : tmp_11_0.SKU, " ");
672
+ i0.ɵɵtextInterpolate1(" ", (tmp_11_0 = ctx_r0.ProductFor(line_r3)) == null ? null : tmp_11_0.SKU, " ");
632
673
  i0.ɵɵadvance();
633
- i0.ɵɵconditional(((tmp_12_0 = ctx_r2.ProductFor(line_r2)) == null ? null : tmp_12_0.TypeName) ? 7 : -1);
674
+ i0.ɵɵconditional(((tmp_12_0 = ctx_r0.ProductFor(line_r3)) == null ? null : tmp_12_0.TypeName) ? 7 : -1);
634
675
  i0.ɵɵadvance();
635
- i0.ɵɵclassProp("is-locked", !ctx_r2.EditMode || ctx_r2.QuantityCappedToOne(line_r2));
676
+ i0.ɵɵclassProp("is-locked", !ctx_r0.EditMode || ctx_r0.QuantityCappedToOne(line_r3));
636
677
  i0.ɵɵadvance();
637
- i0.ɵɵconditional(ctx_r2.EditMode && !ctx_r2.QuantityCappedToOne(line_r2) ? 9 : 10);
678
+ i0.ɵɵconditional(ctx_r0.EditMode && !ctx_r0.QuantityCappedToOne(line_r3) ? 9 : 10);
638
679
  i0.ɵɵadvance(5);
639
- i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(15, 21, ctx_r2.DisplayUnit(line_r2)));
680
+ i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(15, 22, ctx_r0.DisplayUnit(line_r3)));
640
681
  i0.ɵɵadvance(2);
641
- i0.ɵɵconditional(ctx_r2.CanOverride || ctx_r2.CanDiscount ? 16 : -1);
682
+ i0.ɵɵconditional(ctx_r0.CanOverride || ctx_r0.CanDiscount ? 16 : -1);
642
683
  i0.ɵɵadvance();
643
- i0.ɵɵconditional(ctx_r2.IsOverridden(line_r2) ? 17 : 18);
684
+ i0.ɵɵconditional(ctx_r0.IsOverridden(line_r3) ? 17 : 18);
644
685
  i0.ɵɵadvance(2);
645
- i0.ɵɵconditional(ctx_r2.HasDiscount(line_r2) ? 19 : -1);
686
+ i0.ɵɵconditional(ctx_r0.HasDiscount(line_r3) ? 19 : -1);
646
687
  i0.ɵɵadvance();
647
- i0.ɵɵconditional((tmp_19_0 = (tmp_19_0 = ctx_r2.PricedLine(line_r2)) == null ? null : tmp_19_0.Error) ? 20 : -1, tmp_19_0);
688
+ i0.ɵɵconditional((tmp_19_0 = (tmp_19_0 = ctx_r0.PricedLine(line_r3)) == null ? null : tmp_19_0.Error) ? 20 : -1, tmp_19_0);
648
689
  i0.ɵɵadvance(2);
649
- i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(23, 23, (tmp_20_0 = ctx_r2.PricedLine(line_r2)) == null ? null : tmp_20_0.NetAmount));
690
+ i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(23, 24, (tmp_20_0 = ctx_r0.PricedLine(line_r3)) == null ? null : tmp_20_0.NetAmount));
650
691
  i0.ɵɵadvance(2);
651
- i0.ɵɵattribute("title", ctx_r2.DimensionSummary(line_r2))("aria-label", "Details for " + (((tmp_22_0 = ctx_r2.ProductFor(line_r2)) == null ? null : tmp_22_0.Name) ?? "line"));
692
+ i0.ɵɵattribute("title", ctx_r0.DimensionSummary(line_r3))("aria-label", "Details for " + (((tmp_22_0 = ctx_r0.ProductFor(line_r3)) == null ? null : tmp_22_0.Name) ?? "line"));
652
693
  i0.ɵɵadvance(2);
653
- i0.ɵɵconditional(ctx_r2.EditMode ? 26 : -1);
694
+ i0.ɵɵconditional(ctx_r0.EditMode ? 26 : -1);
654
695
  i0.ɵɵadvance();
655
- i0.ɵɵconditional(ctx_r2.IsOverrideEditorOpen(line_r2) ? 27 : -1);
696
+ i0.ɵɵconditional(ctx_r0.IsOverrideEditorOpen(line_r3) ? 27 : -1);
656
697
  i0.ɵɵadvance(2);
657
- i0.ɵɵconditional((tmp_25_0 = ctx_r2.ProductFor(line_r2)) ? 29 : -1, tmp_25_0);
698
+ i0.ɵɵconditional((tmp_25_0 = ctx_r0.ProductFor(line_r3)) ? 29 : -1, tmp_25_0);
699
+ i0.ɵɵadvance();
700
+ i0.ɵɵconditional((tmp_26_0 = ctx_r0.OverrideReasonText(line_r3)) ? 30 : -1, tmp_26_0);
658
701
  i0.ɵɵadvance();
659
- i0.ɵɵconditional((tmp_26_0 = ctx_r2.OverrideReasonText(line_r2)) ? 30 : -1, tmp_26_0);
702
+ i0.ɵɵconditional(ctx_r0.IsSubscriptionLine(line_r3) ? 31 : -1);
660
703
  i0.ɵɵadvance();
661
- i0.ɵɵconditional(ctx_r2.IsSubscriptionLine(line_r2) ? 31 : -1);
704
+ i0.ɵɵconditional(ctx_r0.NeedsStatedServicePeriod(line_r3) ? 32 : -1);
662
705
  i0.ɵɵadvance();
663
- i0.ɵɵconditional(ctx_r2.NeedsStatedServicePeriod(line_r2) ? 32 : -1);
706
+ i0.ɵɵconditional((tmp_29_0 = ctx_r0.CoverageOverlapFor(line_r3)) ? 33 : -1, tmp_29_0);
664
707
  i0.ɵɵadvance();
665
- i0.ɵɵconditional((tmp_29_0 = ctx_r2.ExtensionFor(line_r2)) ? 33 : -1, tmp_29_0);
708
+ i0.ɵɵconditional((tmp_30_0 = ctx_r0.ExtensionFor(line_r3)) ? 34 : -1, tmp_30_0);
666
709
  } }
667
- function MJOOrderLinesEditorComponent_ForEmpty_3_Template(rf, ctx) { if (rf & 1) {
668
- i0.ɵɵelementStart(0, "div", 3);
669
- i0.ɵɵelement(1, "i", 83);
670
- i0.ɵɵelementStart(2, "div", 84);
710
+ function MJOOrderLinesEditorComponent_ForEmpty_4_Template(rf, ctx) { if (rf & 1) {
711
+ i0.ɵɵelementStart(0, "div", 4);
712
+ i0.ɵɵelement(1, "i", 90);
713
+ i0.ɵɵelementStart(2, "div", 91);
671
714
  i0.ɵɵtext(3, "Nothing on this order yet");
672
715
  i0.ɵɵelementEnd();
673
716
  i0.ɵɵelementStart(4, "div");
674
717
  i0.ɵɵtext(5, "Search the catalog to add the first line.");
675
718
  i0.ɵɵelementEnd()();
676
719
  } }
677
- function MJOOrderLinesEditorComponent_Conditional_4_Conditional_5_For_2_Conditional_7_Template(rf, ctx) { if (rf & 1) {
678
- i0.ɵɵelementStart(0, "span", 100);
679
- i0.ɵɵelement(1, "i", 101);
720
+ function MJOOrderLinesEditorComponent_Conditional_5_Conditional_5_For_2_Conditional_7_Template(rf, ctx) { if (rf & 1) {
721
+ i0.ɵɵelementStart(0, "span", 107);
722
+ i0.ɵɵelement(1, "i", 108);
680
723
  i0.ɵɵtext(2);
681
724
  i0.ɵɵelementEnd();
682
725
  } if (rf & 2) {
683
- const product_r21 = i0.ɵɵnextContext().$implicit;
684
- const ctx_r2 = i0.ɵɵnextContext(3);
685
- i0.ɵɵclassProp("is-foreign", ctx_r2.IsForeignCompany(product_r21));
686
- i0.ɵɵattribute("title", ctx_r2.IsForeignCompany(product_r21) ? "Sold by " + product_r21.CompanyName + ", not this order's company" : product_r21.CompanyName);
726
+ const product_r22 = i0.ɵɵnextContext().$implicit;
727
+ const ctx_r0 = i0.ɵɵnextContext(3);
728
+ i0.ɵɵclassProp("is-foreign", ctx_r0.IsForeignCompany(product_r22));
729
+ i0.ɵɵattribute("title", ctx_r0.IsForeignCompany(product_r22) ? "Sold by " + product_r22.CompanyName + ", not this order's company" : product_r22.CompanyName);
687
730
  i0.ɵɵadvance(2);
688
- i0.ɵɵtextInterpolate1(" ", product_r21.CompanyName, " ");
731
+ i0.ɵɵtextInterpolate1(" ", product_r22.CompanyName, " ");
689
732
  } }
690
- function MJOOrderLinesEditorComponent_Conditional_4_Conditional_5_For_2_Template(rf, ctx) { if (rf & 1) {
691
- const _r20 = i0.ɵɵgetCurrentView();
692
- i0.ɵɵelementStart(0, "button", 92);
693
- i0.ɵɵlistener("mousedown", function MJOOrderLinesEditorComponent_Conditional_4_Conditional_5_For_2_Template_button_mousedown_0_listener() { const product_r21 = i0.ɵɵrestoreView(_r20).$implicit; const ctx_r2 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r2.AddProduct(product_r21)); });
694
- i0.ɵɵelementStart(1, "span", 93)(2, "span", 94);
733
+ function MJOOrderLinesEditorComponent_Conditional_5_Conditional_5_For_2_Template(rf, ctx) { if (rf & 1) {
734
+ const _r21 = i0.ɵɵgetCurrentView();
735
+ i0.ɵɵelementStart(0, "button", 99);
736
+ i0.ɵɵlistener("mousedown", function MJOOrderLinesEditorComponent_Conditional_5_Conditional_5_For_2_Template_button_mousedown_0_listener() { const product_r22 = i0.ɵɵrestoreView(_r21).$implicit; const ctx_r0 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r0.AddProduct(product_r22)); });
737
+ i0.ɵɵelementStart(1, "span", 100)(2, "span", 101);
695
738
  i0.ɵɵtext(3);
696
739
  i0.ɵɵelementEnd();
697
- i0.ɵɵelementStart(4, "span", 95)(5, "span", 96);
740
+ i0.ɵɵelementStart(4, "span", 102)(5, "span", 103);
698
741
  i0.ɵɵtext(6);
699
742
  i0.ɵɵelementEnd();
700
- i0.ɵɵconditionalCreate(7, MJOOrderLinesEditorComponent_Conditional_4_Conditional_5_For_2_Conditional_7_Template, 3, 4, "span", 97);
743
+ i0.ɵɵconditionalCreate(7, MJOOrderLinesEditorComponent_Conditional_5_Conditional_5_For_2_Conditional_7_Template, 3, 4, "span", 104);
701
744
  i0.ɵɵelementEnd()();
702
- i0.ɵɵelementStart(8, "span", 98)(9, "span", 99);
745
+ i0.ɵɵelementStart(8, "span", 105)(9, "span", 106);
703
746
  i0.ɵɵtext(10);
704
747
  i0.ɵɵpipe(11, "mjoMoney");
705
748
  i0.ɵɵelementEnd();
706
- i0.ɵɵelementStart(12, "span", 96);
749
+ i0.ɵɵelementStart(12, "span", 103);
707
750
  i0.ɵɵtext(13);
708
751
  i0.ɵɵelementEnd()()();
709
752
  } if (rf & 2) {
710
- const product_r21 = ctx.$implicit;
711
- const ɵ$index_300_r22 = ctx.$index;
712
- const ctx_r2 = i0.ɵɵnextContext(3);
713
- i0.ɵɵclassProp("is-cursor", ɵ$index_300_r22 === ctx_r2.PickerCursor);
714
- i0.ɵɵattribute("aria-selected", ɵ$index_300_r22 === ctx_r2.PickerCursor);
753
+ const product_r22 = ctx.$implicit;
754
+ const ɵ$index_320_r23 = ctx.$index;
755
+ const ctx_r0 = i0.ɵɵnextContext(3);
756
+ i0.ɵɵclassProp("is-cursor", ɵ$index_320_r23 === ctx_r0.PickerCursor);
757
+ i0.ɵɵattribute("aria-selected", ɵ$index_320_r23 === ctx_r0.PickerCursor);
715
758
  i0.ɵɵadvance(3);
716
- i0.ɵɵtextInterpolate(product_r21.Name);
759
+ i0.ɵɵtextInterpolate(product_r22.Name);
717
760
  i0.ɵɵadvance(3);
718
- i0.ɵɵtextInterpolate2("", product_r21.SKU, " \u00B7 ", product_r21.TypeName);
761
+ i0.ɵɵtextInterpolate2("", product_r22.SKU, " \u00B7 ", product_r22.TypeName);
719
762
  i0.ɵɵadvance();
720
- i0.ɵɵconditional(product_r21.CompanyName ? 7 : -1);
763
+ i0.ɵɵconditional(product_r22.CompanyName ? 7 : -1);
721
764
  i0.ɵɵadvance(3);
722
- i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(11, 9, product_r21.ListPrice));
765
+ i0.ɵɵtextInterpolate(product_r22.ListPrice === null ? "No price" : i0.ɵɵpipeBind1(11, 9, product_r22.ListPrice));
723
766
  i0.ɵɵadvance(3);
724
- i0.ɵɵtextInterpolate(product_r21.Taxable ? "taxable" : "untaxable");
767
+ i0.ɵɵtextInterpolate(product_r22.Taxable ? "taxable" : "untaxable");
725
768
  } }
726
- function MJOOrderLinesEditorComponent_Conditional_4_Conditional_5_ForEmpty_3_Conditional_2_Template(rf, ctx) { if (rf & 1) {
769
+ function MJOOrderLinesEditorComponent_Conditional_5_Conditional_5_ForEmpty_3_Conditional_2_Template(rf, ctx) { if (rf & 1) {
727
770
  i0.ɵɵtext(0);
728
771
  } if (rf & 2) {
729
- const ctx_r2 = i0.ɵɵnextContext(4);
730
- i0.ɵɵtextInterpolate1(" ", ctx_r2.CatalogError, " ");
772
+ const ctx_r0 = i0.ɵɵnextContext(4);
773
+ i0.ɵɵtextInterpolate1(" ", ctx_r0.CatalogError, " ");
731
774
  } }
732
- function MJOOrderLinesEditorComponent_Conditional_4_Conditional_5_ForEmpty_3_Conditional_3_Template(rf, ctx) { if (rf & 1) {
775
+ function MJOOrderLinesEditorComponent_Conditional_5_Conditional_5_ForEmpty_3_Conditional_3_Template(rf, ctx) { if (rf & 1) {
733
776
  i0.ɵɵtext(0, " Loading catalog\u2026 ");
734
777
  } }
735
- function MJOOrderLinesEditorComponent_Conditional_4_Conditional_5_ForEmpty_3_Conditional_4_Template(rf, ctx) { if (rf & 1) {
778
+ function MJOOrderLinesEditorComponent_Conditional_5_Conditional_5_ForEmpty_3_Conditional_4_Template(rf, ctx) { if (rf & 1) {
736
779
  i0.ɵɵtext(0, " No product matches that. ");
737
780
  } }
738
- function MJOOrderLinesEditorComponent_Conditional_4_Conditional_5_ForEmpty_3_Template(rf, ctx) { if (rf & 1) {
739
- i0.ɵɵelementStart(0, "div", 91)(1, "span", 102);
740
- i0.ɵɵconditionalCreate(2, MJOOrderLinesEditorComponent_Conditional_4_Conditional_5_ForEmpty_3_Conditional_2_Template, 1, 1)(3, MJOOrderLinesEditorComponent_Conditional_4_Conditional_5_ForEmpty_3_Conditional_3_Template, 1, 0)(4, MJOOrderLinesEditorComponent_Conditional_4_Conditional_5_ForEmpty_3_Conditional_4_Template, 1, 0);
781
+ function MJOOrderLinesEditorComponent_Conditional_5_Conditional_5_ForEmpty_3_Template(rf, ctx) { if (rf & 1) {
782
+ i0.ɵɵelementStart(0, "div", 98)(1, "span", 109);
783
+ i0.ɵɵconditionalCreate(2, MJOOrderLinesEditorComponent_Conditional_5_Conditional_5_ForEmpty_3_Conditional_2_Template, 1, 1)(3, MJOOrderLinesEditorComponent_Conditional_5_Conditional_5_ForEmpty_3_Conditional_3_Template, 1, 0)(4, MJOOrderLinesEditorComponent_Conditional_5_Conditional_5_ForEmpty_3_Conditional_4_Template, 1, 0);
741
784
  i0.ɵɵelementEnd()();
742
785
  } if (rf & 2) {
743
- const ctx_r2 = i0.ɵɵnextContext(3);
786
+ const ctx_r0 = i0.ɵɵnextContext(3);
744
787
  i0.ɵɵadvance(2);
745
- i0.ɵɵconditional(ctx_r2.CatalogError ? 2 : ctx_r2.Catalog.length === 0 ? 3 : 4);
788
+ i0.ɵɵconditional(ctx_r0.CatalogError ? 2 : ctx_r0.Catalog.length === 0 ? 3 : 4);
746
789
  } }
747
- function MJOOrderLinesEditorComponent_Conditional_4_Conditional_5_Template(rf, ctx) { if (rf & 1) {
748
- i0.ɵɵelementStart(0, "div", 89);
749
- i0.ɵɵrepeaterCreate(1, MJOOrderLinesEditorComponent_Conditional_4_Conditional_5_For_2_Template, 14, 11, "button", 90, _forTrack0, false, MJOOrderLinesEditorComponent_Conditional_4_Conditional_5_ForEmpty_3_Template, 5, 1, "div", 91);
790
+ function MJOOrderLinesEditorComponent_Conditional_5_Conditional_5_Template(rf, ctx) { if (rf & 1) {
791
+ i0.ɵɵelementStart(0, "div", 96);
792
+ i0.ɵɵrepeaterCreate(1, MJOOrderLinesEditorComponent_Conditional_5_Conditional_5_For_2_Template, 14, 11, "button", 97, _forTrack0, false, MJOOrderLinesEditorComponent_Conditional_5_Conditional_5_ForEmpty_3_Template, 5, 1, "div", 98);
750
793
  i0.ɵɵelementEnd();
751
794
  } if (rf & 2) {
752
- const ctx_r2 = i0.ɵɵnextContext(2);
753
- i0.ɵɵclassProp("is-up", ctx_r2.PickerOpensUp);
795
+ const ctx_r0 = i0.ɵɵnextContext(2);
796
+ i0.ɵɵclassProp("is-up", ctx_r0.PickerOpensUp);
754
797
  i0.ɵɵadvance();
755
- i0.ɵɵrepeater(ctx_r2.PickerResults);
798
+ i0.ɵɵrepeater(ctx_r0.PickerResults);
756
799
  } }
757
- function MJOOrderLinesEditorComponent_Conditional_4_Template(rf, ctx) { if (rf & 1) {
758
- const _r19 = i0.ɵɵgetCurrentView();
759
- i0.ɵɵelementStart(0, "div", 4, 0)(2, "div", 85);
760
- i0.ɵɵelement(3, "i", 86);
761
- i0.ɵɵelementStart(4, "input", 87);
762
- i0.ɵɵtwoWayListener("ngModelChange", function MJOOrderLinesEditorComponent_Conditional_4_Template_input_ngModelChange_4_listener($event) { i0.ɵɵrestoreView(_r19); const ctx_r2 = i0.ɵɵnextContext(); i0.ɵɵtwoWayBindingSet(ctx_r2.ProductQuery, $event) || (ctx_r2.ProductQuery = $event); return i0.ɵɵresetView($event); });
763
- i0.ɵɵlistener("ngModelChange", function MJOOrderLinesEditorComponent_Conditional_4_Template_input_ngModelChange_4_listener() { i0.ɵɵrestoreView(_r19); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.OnProductQueryChange()); })("focus", function MJOOrderLinesEditorComponent_Conditional_4_Template_input_focus_4_listener() { i0.ɵɵrestoreView(_r19); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.OpenPicker()); })("blur", function MJOOrderLinesEditorComponent_Conditional_4_Template_input_blur_4_listener() { i0.ɵɵrestoreView(_r19); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.ClosePickerSoon()); })("keydown", function MJOOrderLinesEditorComponent_Conditional_4_Template_input_keydown_4_listener($event) { i0.ɵɵrestoreView(_r19); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.OnPickerKey($event)); });
800
+ function MJOOrderLinesEditorComponent_Conditional_5_Template(rf, ctx) { if (rf & 1) {
801
+ const _r20 = i0.ɵɵgetCurrentView();
802
+ i0.ɵɵelementStart(0, "div", 5, 0)(2, "div", 92);
803
+ i0.ɵɵelement(3, "i", 93);
804
+ i0.ɵɵelementStart(4, "input", 94);
805
+ i0.ɵɵtwoWayListener("ngModelChange", function MJOOrderLinesEditorComponent_Conditional_5_Template_input_ngModelChange_4_listener($event) { i0.ɵɵrestoreView(_r20); const ctx_r0 = i0.ɵɵnextContext(); i0.ɵɵtwoWayBindingSet(ctx_r0.ProductQuery, $event) || (ctx_r0.ProductQuery = $event); return i0.ɵɵresetView($event); });
806
+ i0.ɵɵlistener("ngModelChange", function MJOOrderLinesEditorComponent_Conditional_5_Template_input_ngModelChange_4_listener() { i0.ɵɵrestoreView(_r20); const ctx_r0 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r0.OnProductQueryChange()); })("focus", function MJOOrderLinesEditorComponent_Conditional_5_Template_input_focus_4_listener() { i0.ɵɵrestoreView(_r20); const ctx_r0 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r0.OpenPicker()); })("blur", function MJOOrderLinesEditorComponent_Conditional_5_Template_input_blur_4_listener() { i0.ɵɵrestoreView(_r20); const ctx_r0 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r0.ClosePickerSoon()); })("keydown", function MJOOrderLinesEditorComponent_Conditional_5_Template_input_keydown_4_listener($event) { i0.ɵɵrestoreView(_r20); const ctx_r0 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r0.OnPickerKey($event)); });
764
807
  i0.ɵɵelementEnd()();
765
- i0.ɵɵconditionalCreate(5, MJOOrderLinesEditorComponent_Conditional_4_Conditional_5_Template, 4, 3, "div", 88);
808
+ i0.ɵɵconditionalCreate(5, MJOOrderLinesEditorComponent_Conditional_5_Conditional_5_Template, 4, 3, "div", 95);
766
809
  i0.ɵɵelementEnd();
767
810
  } if (rf & 2) {
768
- const ctx_r2 = i0.ɵɵnextContext();
811
+ const ctx_r0 = i0.ɵɵnextContext();
769
812
  i0.ɵɵadvance(4);
770
- i0.ɵɵtwoWayProperty("ngModel", ctx_r2.ProductQuery);
771
- i0.ɵɵattribute("aria-expanded", ctx_r2.PickerOpen);
813
+ i0.ɵɵtwoWayProperty("ngModel", ctx_r0.ProductQuery);
814
+ i0.ɵɵattribute("aria-expanded", ctx_r0.PickerOpen);
772
815
  i0.ɵɵadvance();
773
- i0.ɵɵconditional(ctx_r2.PickerOpen ? 5 : -1);
816
+ i0.ɵɵconditional(ctx_r0.PickerOpen ? 5 : -1);
774
817
  } }
775
818
  /**
776
819
  * The draft a line has when nobody has typed anything.
@@ -1058,6 +1101,70 @@ export class MJOOrderLinesEditorComponent {
1058
1101
  this.loadingContinuations.delete(subscriptionID);
1059
1102
  }
1060
1103
  }
1104
+ /* ── Coverage overlap with another band of the family (golive #276) ──
1105
+ *
1106
+ * Confirm refuses a band whose term would overlap coverage the holder already has for another
1107
+ * band, unless the subscription type allows it or the line acknowledges it. The editor asks the
1108
+ * server the same question after each save, through the operation that runs confirm's own
1109
+ * check, so the notice cannot disagree with the refusal. Only saved lines are checked; a new
1110
+ * line is checked on the next save.
1111
+ */
1112
+ /** Server answers by line id (lower-cased — ids come back from the server in either case). */
1113
+ coverageByLine = new Map();
1114
+ /** Set when the check itself failed, so a missing notice is not read as "no overlap". */
1115
+ CoverageCheckError = null;
1116
+ CoverageOverlapFor(line) {
1117
+ return this.coverageByLine.get((line.ID ?? '').toLowerCase()) ?? null;
1118
+ }
1119
+ /** True when ticking the acknowledgment changes what confirm does — `ExtendExisting` only. */
1120
+ CanAcknowledgeOverlap(line) {
1121
+ const found = this.CoverageOverlapFor(line);
1122
+ return found?.Outcome === 'NeedsAck' || found?.Outcome === 'Acknowledged';
1123
+ }
1124
+ /**
1125
+ * True while confirm would refuse this line. Read from the checkbox as it stands, not the
1126
+ * server's last answer, so ticking it clears the warning before the next save.
1127
+ */
1128
+ OverlapBlocksConfirm(line) {
1129
+ const found = this.CoverageOverlapFor(line);
1130
+ if (!found)
1131
+ return false;
1132
+ if (found.Outcome === 'Refused')
1133
+ return true;
1134
+ return this.CanAcknowledgeOverlap(line) && !line.AcknowledgesCoverageOverlap;
1135
+ }
1136
+ SetOverlapAcknowledged(line, event) {
1137
+ if (!this.EditMode)
1138
+ return;
1139
+ const target = event.target;
1140
+ if (!(target instanceof HTMLInputElement))
1141
+ return;
1142
+ line.AcknowledgesCoverageOverlap = target.checked;
1143
+ }
1144
+ async refreshCoverage() {
1145
+ const order = this._order;
1146
+ if (!order?.IsSaved || order.Status !== 'Draft') {
1147
+ this.coverageByLine.clear();
1148
+ this.CoverageCheckError = null;
1149
+ return;
1150
+ }
1151
+ const result = await new OrdersCheckCoverageOverlapOperation().Execute({ OrderHeaderID: order.ID });
1152
+ // The order may have been swapped while the call was in flight.
1153
+ if (this._order !== order)
1154
+ return;
1155
+ this.coverageByLine.clear();
1156
+ if (!result.Success || !result.Output) {
1157
+ this.CoverageCheckError =
1158
+ result.ErrorMessage?.trim() ||
1159
+ 'Whether these subscriptions overlap coverage the customer already has could not be checked. Confirm still checks.';
1160
+ }
1161
+ else {
1162
+ this.CoverageCheckError = null;
1163
+ for (const row of result.Output.Lines)
1164
+ this.coverageByLine.set(row.OrderLineID.toLowerCase(), row);
1165
+ }
1166
+ this.cdr.detectChanges();
1167
+ }
1061
1168
  /* ── The customer already holds this product (golive #299) ──
1062
1169
  *
1063
1170
  * At confirm, a subscription line whose subscriber already holds a live subscription to the
@@ -1574,6 +1681,7 @@ export class MJOOrderLinesEditorComponent {
1574
1681
  * `Adjustments.Remove` — the rows this map points at are already gone by the time it runs.
1575
1682
  */
1576
1683
  onOrderSaved() {
1684
+ void this.refreshCoverage();
1577
1685
  if (!this.stagedDiscounts.size)
1578
1686
  return;
1579
1687
  this.stagedDiscounts.clear();
@@ -1734,6 +1842,7 @@ export class MJOOrderLinesEditorComponent {
1734
1842
  }) ?? null;
1735
1843
  this.schedulePricing();
1736
1844
  void this.refreshAllApplicable();
1845
+ void this.refreshCoverage();
1737
1846
  this.cdr.detectChanges();
1738
1847
  }
1739
1848
  unbindOrder() {
@@ -1754,6 +1863,8 @@ export class MJOOrderLinesEditorComponent {
1754
1863
  // Dropped on rebind rather than kept: coverage moves when any renewal confirms anywhere, so
1755
1864
  // a cached continuation date is only trustworthy for as long as one order is open.
1756
1865
  this.continuationStarts.clear();
1866
+ this.coverageByLine.clear();
1867
+ this.CoverageCheckError = null;
1757
1868
  this.applicableByLine.clear();
1758
1869
  this.overrideEditorLineIds.clear();
1759
1870
  this.defaultUnitByLine.clear();
@@ -1939,29 +2050,32 @@ export class MJOOrderLinesEditorComponent {
1939
2050
  } if (rf & 2) {
1940
2051
  let _t;
1941
2052
  i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.pickerHost = _t.first);
1942
- } }, inputs: { Provider: "Provider", EditMode: "EditMode", Order: "Order" }, outputs: { PricingChanged: "PricingChanged", Navigate: "Navigate" }, decls: 6, vars: 8, consts: [["pickerHost", ""], [1, "mjo-ol"], [1, "mjo-ol-card"], [1, "mjo-ol-empty"], [1, "mj-typeahead", "mjo-ol-picker"], [3, "Closed", "Line", "ProductName", "ProductSKU", "ProductType", "Dimensions", "EditMode"], [1, "mjo-ol-card__top"], [1, "mjo-ol-card__id"], ["type", "button", 1, "mjo-ol-card__name", 3, "click"], [1, "mjo-ol-card__meta"], [1, "mjo-ol-qty"], [1, "mjo-ol-qty__value"], [1, "mjo-ol-card__price"], [1, "mjo-ol-card__price-row"], [1, "mjo-ol-card__amt"], ["type", "button", 1, "mjo-ol-iconbtn", "mjo-ol-price__pencil"], [1, "mjo-ol-overpill"], [3, "Source", "Settled", "Overridden"], ["title", "Discount on this line", 1, "mjo-ol-discpill"], [1, "mjo-ol-card__err"], [1, "mjo-ol-card__tot"], ["type", "button", 1, "mjo-ol-iconbtn", 3, "click"], ["aria-hidden", "true", 1, "fa-solid", "fa-sliders"], ["type", "button", 1, "mjo-ol-iconbtn"], ["role", "region", 1, "mjo-ol-override"], [1, "mjo-ol-card__conseq"], [1, "mjo-ol-card__why"], [1, "mjo-ol-term"], [1, "mjo-ol-ext", 3, "is-open"], ["type", "button", "aria-label", "Decrease quantity", 3, "click"], ["aria-label", "Quantity", 3, "change", "value"], ["type", "button", "aria-label", "Increase quantity", 3, "click", "disabled"], ["type", "button", 1, "mjo-ol-iconbtn", "mjo-ol-price__pencil", 3, "click"], ["aria-hidden", "true", 1, "fa-solid", "fa-pencil"], ["aria-hidden", "true", 1, "fa-regular", "fa-trash-can"], [3, "Line", "OverrideKind", "Applicable", "EngineDefault", "DefaultUnit", "PriceSource", "PricedUnit"], ["role", "group", 1, "mjo-ol-discount"], [1, "mjo-ol-discount__note"], [1, "mjo-ol-override__actions"], ["type", "button", 1, "mjo-ol-override__done", 3, "click", "disabled"], ["type", "button", 1, "mjo-ol-override__reset", 3, "disabled"], [3, "PriceChanged", "Line", "OverrideKind", "Applicable", "EngineDefault", "DefaultUnit", "PriceSource", "PricedUnit"], [1, "mjo-ol-discount__head"], [1, "mjo-ol-discount__title"], [1, "mjo-ol-discount__cap"], [1, "mjo-ol-discount__row"], ["role", "radiogroup", "aria-label", "Discount expressed as", 1, "mjo-ol-discount__mode"], ["type", "button", "role", "radio", 3, "click"], ["type", "number", "step", "0.01", "min", "0", 1, "mjo-ol-discount__val", 3, "input", "value"], [1, "mjo-ol-discount__calc"], [1, "mjo-ol-discount__reason"], ["aria-hidden", "true", 1, "mjo-ol-override__req"], ["rows", "2", "placeholder", "Required \u2014 why value was given away on this line", 3, "input", "value"], ["role", "alert", 1, "mjo-ol-discount__err"], [1, "mjo-ol-discount__staged"], ["type", "button", 1, "mjo-ol-discount__clear", 3, "click"], ["type", "button", 1, "mjo-ol-override__reset", 3, "click", "disabled"], ["Kind", "fulfillment"], ["Kind", "untaxable"], ["Kind", "company"], [1, "mjo-ol-term__label"], [1, "mjo-ol-term__value", "is-dictated"], [1, "mjo-ol-term__value"], [1, "mjo-ol-term__hint"], ["role", "group", 1, "mjo-ol-holding"], ["type", "date", 1, "mjo-ol-term__input", 3, "change", "id", "value"], ["type", "button", 1, "mjo-ol-term__reset"], ["type", "button", 1, "mjo-ol-term__reset", 3, "click"], [1, "mjo-ol-holding__text"], [1, "mjo-ol-holding__choices"], ["type", "button", 1, "mjo-ol-holding__choice", 3, "click"], ["role", "alert", 1, "mjo-ol-term__hint", "is-error"], ["type", "date", "aria-label", "Service period start", 1, "mjo-ol-term__input", 3, "change", "id", "value"], ["aria-hidden", "true", 1, "mjo-ol-term__label"], ["type", "date", "aria-label", "Service period end", 1, "mjo-ol-term__input", 3, "change", "value"], [1, "mjo-ol-ext"], ["type", "button", 1, "mjo-ol-ext__toggle", 3, "click"], ["aria-hidden", "true", 1, "fa-solid", "fa-chevron-right", "mjo-ol-ext__chev"], [1, "mjo-ol-ext__label"], [1, "mjo-ol-ext__hint"], [1, "mjo-ol-ext__body", 3, "id"], [1, "mjo-ol-ext__clip"], [3, "FormCreated", "Navigate", "Record", "EditMode", "Config"], ["aria-hidden", "true", 1, "fa-solid", "fa-cart-plus"], [1, "mjo-ol-empty__title"], [1, "mjo-search"], ["aria-hidden", "true", 1, "fa-solid", "fa-plus"], ["placeholder", "Add product \u2014 type a name or SKU\u2026", "autocomplete", "off", "role", "combobox", "aria-label", "Add a product", 3, "ngModelChange", "focus", "blur", "keydown", "ngModel"], ["role", "listbox", 1, "mj-typeahead-list", "is-open", 3, "is-up"], ["role", "listbox", 1, "mj-typeahead-list", "is-open"], ["type", "button", "role", "option", 1, "mj-typeahead-item", "mjo-ol-pick", 3, "is-cursor"], [1, "mj-typeahead-item"], ["type", "button", "role", "option", 1, "mj-typeahead-item", "mjo-ol-pick", 3, "mousedown"], [1, "mjo-ol-pick__body"], [1, "name"], [1, "mjo-ol-pick__meta"], [1, "sub"], [1, "mjo-ol-pick__company", 3, "is-foreign"], [1, "end"], [1, "mjo-ol-pick__price"], [1, "mjo-ol-pick__company"], ["aria-hidden", "true", 1, "fa-solid", "fa-building"], [1, "muted", "small"]], template: function MJOOrderLinesEditorComponent_Template(rf, ctx) { if (rf & 1) {
2053
+ } }, inputs: { Provider: "Provider", EditMode: "EditMode", Order: "Order" }, outputs: { PricingChanged: "PricingChanged", Navigate: "Navigate" }, decls: 7, vars: 9, consts: [["pickerHost", ""], [1, "mjo-ol"], ["role", "status", 1, "mjo-ol-overlap-err"], [1, "mjo-ol-card"], [1, "mjo-ol-empty"], [1, "mj-typeahead", "mjo-ol-picker"], [3, "Closed", "Line", "ProductName", "ProductSKU", "ProductType", "Dimensions", "EditMode"], [1, "mjo-ol-card__top"], [1, "mjo-ol-card__id"], ["type", "button", 1, "mjo-ol-card__name", 3, "click"], [1, "mjo-ol-card__meta"], [1, "mjo-ol-qty"], [1, "mjo-ol-qty__value"], [1, "mjo-ol-card__price"], [1, "mjo-ol-card__price-row"], [1, "mjo-ol-card__amt"], ["type", "button", 1, "mjo-ol-iconbtn", "mjo-ol-price__pencil"], [1, "mjo-ol-overpill"], [3, "Source", "Settled", "Overridden"], ["title", "Discount on this line", 1, "mjo-ol-discpill"], [1, "mjo-ol-card__err"], [1, "mjo-ol-card__tot"], ["type", "button", 1, "mjo-ol-iconbtn", 3, "click"], ["aria-hidden", "true", 1, "fa-solid", "fa-sliders"], ["type", "button", 1, "mjo-ol-iconbtn"], ["role", "region", 1, "mjo-ol-override"], [1, "mjo-ol-card__conseq"], [1, "mjo-ol-card__why"], [1, "mjo-ol-term"], ["role", "status", 1, "mjo-ol-overlap", 3, "is-blocking"], [1, "mjo-ol-ext", 3, "is-open"], ["type", "button", "aria-label", "Decrease quantity", 3, "click"], ["aria-label", "Quantity", 3, "change", "value"], ["type", "button", "aria-label", "Increase quantity", 3, "click", "disabled"], ["type", "button", 1, "mjo-ol-iconbtn", "mjo-ol-price__pencil", 3, "click"], ["aria-hidden", "true", 1, "fa-solid", "fa-pencil"], ["aria-hidden", "true", 1, "fa-regular", "fa-trash-can"], [3, "Line", "OverrideKind", "Applicable", "EngineDefault", "DefaultUnit", "PriceSource", "PricedUnit"], ["role", "group", 1, "mjo-ol-discount"], [1, "mjo-ol-discount__note"], [1, "mjo-ol-override__actions"], ["type", "button", 1, "mjo-ol-override__done", 3, "click", "disabled"], ["type", "button", 1, "mjo-ol-override__reset", 3, "disabled"], [3, "PriceChanged", "Line", "OverrideKind", "Applicable", "EngineDefault", "DefaultUnit", "PriceSource", "PricedUnit"], [1, "mjo-ol-discount__head"], [1, "mjo-ol-discount__title"], [1, "mjo-ol-discount__cap"], [1, "mjo-ol-discount__row"], ["role", "radiogroup", "aria-label", "Discount expressed as", 1, "mjo-ol-discount__mode"], ["type", "button", "role", "radio", 3, "click"], ["type", "number", "step", "0.01", "min", "0", 1, "mjo-ol-discount__val", 3, "input", "value"], [1, "mjo-ol-discount__calc"], [1, "mjo-ol-discount__reason"], ["aria-hidden", "true", 1, "mjo-ol-override__req"], ["rows", "2", "placeholder", "Required \u2014 why value was given away on this line", 3, "input", "value"], ["role", "alert", 1, "mjo-ol-discount__err"], [1, "mjo-ol-discount__staged"], ["type", "button", 1, "mjo-ol-discount__clear", 3, "click"], ["type", "button", 1, "mjo-ol-override__reset", 3, "click", "disabled"], ["Kind", "fulfillment"], ["Kind", "untaxable"], ["Kind", "company"], [1, "mjo-ol-term__label"], [1, "mjo-ol-term__value", "is-dictated"], [1, "mjo-ol-term__value"], [1, "mjo-ol-term__hint"], ["role", "group", 1, "mjo-ol-holding"], ["type", "date", 1, "mjo-ol-term__input", 3, "change", "id", "value"], ["type", "button", 1, "mjo-ol-term__reset"], ["type", "button", 1, "mjo-ol-term__reset", 3, "click"], [1, "mjo-ol-holding__text"], [1, "mjo-ol-holding__choices"], ["type", "button", 1, "mjo-ol-holding__choice", 3, "click"], ["role", "alert", 1, "mjo-ol-term__hint", "is-error"], ["type", "date", "aria-label", "Service period start", 1, "mjo-ol-term__input", 3, "change", "id", "value"], ["aria-hidden", "true", 1, "mjo-ol-term__label"], ["type", "date", "aria-label", "Service period end", 1, "mjo-ol-term__input", 3, "change", "value"], ["role", "status", 1, "mjo-ol-overlap"], ["aria-hidden", "true", 1, "fa-solid", "fa-triangle-exclamation"], [1, "mjo-ol-overlap__body"], [1, "mjo-ol-overlap__ack"], ["type", "checkbox", 3, "change", "checked", "disabled"], [1, "mjo-ol-ext"], ["type", "button", 1, "mjo-ol-ext__toggle", 3, "click"], ["aria-hidden", "true", 1, "fa-solid", "fa-chevron-right", "mjo-ol-ext__chev"], [1, "mjo-ol-ext__label"], [1, "mjo-ol-ext__hint"], [1, "mjo-ol-ext__body", 3, "id"], [1, "mjo-ol-ext__clip"], [3, "FormCreated", "Navigate", "Record", "EditMode", "Config"], ["aria-hidden", "true", 1, "fa-solid", "fa-cart-plus"], [1, "mjo-ol-empty__title"], [1, "mjo-search"], ["aria-hidden", "true", 1, "fa-solid", "fa-plus"], ["placeholder", "Add product \u2014 type a name or SKU\u2026", "autocomplete", "off", "role", "combobox", "aria-label", "Add a product", 3, "ngModelChange", "focus", "blur", "keydown", "ngModel"], ["role", "listbox", 1, "mj-typeahead-list", "is-open", 3, "is-up"], ["role", "listbox", 1, "mj-typeahead-list", "is-open"], ["type", "button", "role", "option", 1, "mj-typeahead-item", "mjo-ol-pick", 3, "is-cursor"], [1, "mj-typeahead-item"], ["type", "button", "role", "option", 1, "mj-typeahead-item", "mjo-ol-pick", 3, "mousedown"], [1, "mjo-ol-pick__body"], [1, "name"], [1, "mjo-ol-pick__meta"], [1, "sub"], [1, "mjo-ol-pick__company", 3, "is-foreign"], [1, "end"], [1, "mjo-ol-pick__price"], [1, "mjo-ol-pick__company"], ["aria-hidden", "true", 1, "fa-solid", "fa-building"], [1, "muted", "small"]], template: function MJOOrderLinesEditorComponent_Template(rf, ctx) { if (rf & 1) {
1943
2054
  i0.ɵɵelementStart(0, "div", 1);
1944
- i0.ɵɵrepeaterCreate(1, MJOOrderLinesEditorComponent_For_2_Template, 34, 25, "div", 2, _forTrack0, false, MJOOrderLinesEditorComponent_ForEmpty_3_Template, 6, 0, "div", 3);
1945
- i0.ɵɵconditionalCreate(4, MJOOrderLinesEditorComponent_Conditional_4_Template, 6, 3, "div", 4);
1946
- i0.ɵɵelementStart(5, "mjo-order-line-details-panel", 5);
1947
- i0.ɵɵlistener("Closed", function MJOOrderLinesEditorComponent_Template_mjo_order_line_details_panel_Closed_5_listener() { return ctx.CloseDetails(); });
2055
+ i0.ɵɵconditionalCreate(1, MJOOrderLinesEditorComponent_Conditional_1_Template, 2, 1, "div", 2);
2056
+ i0.ɵɵrepeaterCreate(2, MJOOrderLinesEditorComponent_For_3_Template, 35, 26, "div", 3, _forTrack0, false, MJOOrderLinesEditorComponent_ForEmpty_4_Template, 6, 0, "div", 4);
2057
+ i0.ɵɵconditionalCreate(5, MJOOrderLinesEditorComponent_Conditional_5_Template, 6, 3, "div", 5);
2058
+ i0.ɵɵelementStart(6, "mjo-order-line-details-panel", 6);
2059
+ i0.ɵɵlistener("Closed", function MJOOrderLinesEditorComponent_Template_mjo_order_line_details_panel_Closed_6_listener() { return ctx.CloseDetails(); });
1948
2060
  i0.ɵɵelementEnd()();
1949
2061
  } if (rf & 2) {
1950
- let tmp_3_0;
1951
2062
  let tmp_4_0;
1952
2063
  let tmp_5_0;
2064
+ let tmp_6_0;
2065
+ i0.ɵɵadvance();
2066
+ i0.ɵɵconditional(ctx.CoverageCheckError ? 1 : -1);
1953
2067
  i0.ɵɵadvance();
1954
2068
  i0.ɵɵrepeater(ctx.Lines);
1955
2069
  i0.ɵɵadvance(3);
1956
- i0.ɵɵconditional(ctx.EditMode ? 4 : -1);
2070
+ i0.ɵɵconditional(ctx.EditMode ? 5 : -1);
1957
2071
  i0.ɵɵadvance();
1958
- i0.ɵɵproperty("Line", ctx.DetailsLine)("ProductName", ctx.DetailsLine ? ((tmp_3_0 = ctx.ProductFor(ctx.DetailsLine)) == null ? null : tmp_3_0.Name) ?? "" : "")("ProductSKU", ctx.DetailsLine ? ((tmp_4_0 = ctx.ProductFor(ctx.DetailsLine)) == null ? null : tmp_4_0.SKU) ?? "" : "")("ProductType", ctx.DetailsLine ? ((tmp_5_0 = ctx.ProductFor(ctx.DetailsLine)) == null ? null : tmp_5_0.TypeName) ?? "" : "")("Dimensions", ctx.DimensionCatalog)("EditMode", ctx.EditMode);
2072
+ i0.ɵɵproperty("Line", ctx.DetailsLine)("ProductName", ctx.DetailsLine ? ((tmp_4_0 = ctx.ProductFor(ctx.DetailsLine)) == null ? null : tmp_4_0.Name) ?? "" : "")("ProductSKU", ctx.DetailsLine ? ((tmp_5_0 = ctx.ProductFor(ctx.DetailsLine)) == null ? null : tmp_5_0.SKU) ?? "" : "")("ProductType", ctx.DetailsLine ? ((tmp_6_0 = ctx.ProductFor(ctx.DetailsLine)) == null ? null : tmp_6_0.TypeName) ?? "" : "")("Dimensions", ctx.DimensionCatalog)("EditMode", ctx.EditMode);
1959
2073
  } }, dependencies: [CommonModule,
1960
2074
  FormsModule, i1.DefaultValueAccessor, i1.NgControlStatus, i1.NgModel, BaseFormsModule, i2.MjEntityFormHostComponent, MJOConsequenceChipComponent,
1961
2075
  MJOPriceSourceBadgeComponent,
1962
2076
  MJOLinePricePickerComponent,
1963
2077
  MJOOrderLineDetailsPanelComponent,
1964
- MJOMoneyPipe], styles: ["[_nghost-%COMP%] { display: block; }\n\n.mjo-ol[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: var(--mj-space-2);\n}\n\n.mjo-ol-card[_ngcontent-%COMP%] {\n border: 1px solid var(--mj-border-default);\n background: var(--mj-bg-surface);\n border-radius: var(--mj-radius-md);\n padding: var(--mj-space-3);\n}\n\n.mjo-ol-card[_ngcontent-%COMP%]:has(.mjo-ol-ext.is-open) {\n padding-bottom: var(--mj-space-1);\n}\n\n.mjo-ol-card__top[_ngcontent-%COMP%] {\n display: flex;\n align-items: flex-start;\n gap: var(--mj-space-3);\n}\n\n.mjo-ol-card__id[_ngcontent-%COMP%] { flex: 1; min-width: 0; }\n\n.mjo-ol-card__name[_ngcontent-%COMP%] {\n display: inline;\n padding: 0;\n border: 0;\n background: transparent;\n font: inherit;\n font-size: var(--mj-text-sm);\n font-weight: var(--mj-font-semibold);\n color: var(--mj-text-link);\n text-align: left;\n cursor: pointer;\n text-decoration: none;\n}\n\n.mjo-ol-card__name[_ngcontent-%COMP%]:hover { text-decoration: underline; }\n\n.mjo-ol-card__meta[_ngcontent-%COMP%] {\n font-size: var(--mj-text-xs);\n color: var(--mj-text-muted);\n margin-top: 2px;\n}\n\n.mjo-ol-qty[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n border: 1px solid var(--mj-border-strong);\n border-radius: var(--mj-radius-md);\n overflow: hidden;\n background: var(--mj-bg-surface);\n flex: none;\n}\n\n.mjo-ol-qty[_ngcontent-%COMP%] button[_ngcontent-%COMP%] {\n border: 0;\n background: transparent;\n cursor: pointer;\n color: var(--mj-text-secondary);\n width: 26px;\n height: 28px;\n font-size: 11px;\n}\n\n.mjo-ol-qty[_ngcontent-%COMP%] button[_ngcontent-%COMP%]:hover:not(:disabled) {\n background: var(--mj-bg-surface-hover);\n color: var(--mj-text-primary);\n}\n\n.mjo-ol-qty[_ngcontent-%COMP%] button[_ngcontent-%COMP%]:disabled {\n cursor: default;\n color: var(--mj-text-disabled);\n}\n\n.mjo-ol-qty[_ngcontent-%COMP%] input[_ngcontent-%COMP%] {\n border: 0;\n outline: 0;\n background: transparent;\n width: 46px;\n text-align: center;\n font: inherit;\n font-variant-numeric: tabular-nums;\n color: inherit;\n}\n\n.mjo-ol-qty.is-locked[_ngcontent-%COMP%] {\n border-color: var(--mj-border-default);\n background: transparent;\n}\n\n.mjo-ol-qty__value[_ngcontent-%COMP%] {\n min-width: 46px;\n padding: 0 10px;\n height: 28px;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n font-variant-numeric: tabular-nums;\n}\n\n.mjo-ol-card__price[_ngcontent-%COMP%] {\n flex: none;\n min-width: 108px;\n display: flex;\n flex-direction: column;\n align-items: center;\n}\n\n.mjo-ol-card__price-row[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 2px;\n height: 28px;\n}\n\n.mjo-ol-price__pencil[_ngcontent-%COMP%] {\n flex: none;\n color: var(--mj-text-muted);\n}\n\n.mjo-ol-price__pencil[_ngcontent-%COMP%]:hover {\n color: var(--mj-text-link);\n background: var(--mj-bg-surface-hover);\n}\n\n.mjo-ol-override[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: var(--mj-space-2);\n margin-top: var(--mj-space-2);\n padding: var(--mj-space-2);\n border: 1px solid var(--mj-border-default);\n border-radius: var(--mj-radius-md);\n background: var(--mj-bg-surface-subtle, var(--mj-bg-surface));\n}\n\n.mjo-ol-override__req[_ngcontent-%COMP%] {\n font-style: normal;\n color: var(--mj-status-danger-text, #b42318);\n margin-left: 2px;\n}\n\n.mjo-ol-override__actions[_ngcontent-%COMP%] {\n display: flex;\n gap: var(--mj-space-2);\n justify-content: flex-end;\n}\n\n.mjo-ol-override__done[_ngcontent-%COMP%], \n.mjo-ol-override__reset[_ngcontent-%COMP%] {\n border: 0;\n background: transparent;\n cursor: pointer;\n font: inherit;\n font-size: var(--mj-text-xs);\n font-weight: var(--mj-font-semibold);\n padding: 4px 8px;\n border-radius: var(--mj-radius-sm);\n}\n\n.mjo-ol-override__done[_ngcontent-%COMP%] {\n color: var(--mj-text-link);\n}\n\n.mjo-ol-override__reset[_ngcontent-%COMP%] {\n color: var(--mj-text-muted);\n}\n\n.mjo-ol-override__done[_ngcontent-%COMP%]:hover, \n.mjo-ol-override__reset[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-hover);\n}\n\n.mjo-ol-override__done[_ngcontent-%COMP%]:disabled {\n color: var(--mj-text-muted);\n cursor: not-allowed;\n background: transparent;\n}\n\n.mjo-ol-card__amt[_ngcontent-%COMP%] {\n font-variant-numeric: tabular-nums;\n font-weight: var(--mj-font-semibold);\n font-size: var(--mj-text-sm);\n line-height: 28px;\n}\n\n.mjo-ol-overpill[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n margin-top: 4px;\n padding: 1px 8px;\n border-radius: 999px;\n font-size: 10px;\n font-weight: 600;\n letter-spacing: 0.02em;\n color: var(--mj-status-warning-text);\n background: color-mix(in srgb, var(--mj-status-warning-text) 16%, transparent);\n}\n\n.mjo-ol-card__err[_ngcontent-%COMP%] {\n font-size: var(--mj-text-xs);\n color: var(--mj-status-error-text);\n margin-top: 2px;\n}\n\n.mjo-ol-card__tot[_ngcontent-%COMP%] {\n flex: none;\n min-width: 104px;\n height: 28px;\n display: flex;\n align-items: center;\n justify-content: flex-end;\n text-align: right;\n font-variant-numeric: tabular-nums;\n font-weight: var(--mj-font-semibold);\n font-size: var(--mj-text-sm);\n line-height: 28px;\n}\n\n.mjo-ol-iconbtn[_ngcontent-%COMP%] {\n border: 0;\n background: transparent;\n color: var(--mj-text-muted);\n cursor: pointer;\n width: 28px;\n height: 28px;\n border-radius: var(--mj-radius-sm);\n}\n\n.mjo-ol-iconbtn[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-hover);\n color: var(--mj-status-error);\n}\n\n.mjo-ol-card__conseq[_ngcontent-%COMP%] {\n display: flex;\n gap: 6px;\n flex-wrap: wrap;\n margin-top: var(--mj-space-2);\n}\n\n\n\n\n.mjo-ol-term[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: var(--mj-space-2);\n flex-wrap: wrap;\n margin-top: var(--mj-space-2);\n}\n\n.mjo-ol-term__label[_ngcontent-%COMP%] {\n font-size: var(--mj-text-xs);\n color: var(--mj-text-muted);\n}\n\n.mjo-ol-term__input[_ngcontent-%COMP%] {\n height: 28px;\n padding: 0 var(--mj-space-2);\n border: 1px solid var(--mj-border-strong);\n border-radius: var(--mj-radius-md);\n background: var(--mj-bg-surface);\n color: var(--mj-text-primary);\n font: inherit;\n font-size: var(--mj-text-sm);\n}\n\n\n\n\n.mjo-ol-term__input.is-default[_ngcontent-%COMP%] {\n border-color: var(--mj-border-default);\n color: var(--mj-text-secondary);\n}\n\n.mjo-ol-term__value[_ngcontent-%COMP%] {\n font-size: var(--mj-text-sm);\n color: var(--mj-text-primary);\n font-variant-numeric: tabular-nums;\n}\n\n\n\n\n.mjo-ol-term__value.is-dictated[_ngcontent-%COMP%] {\n color: var(--mj-text-secondary);\n}\n\n.mjo-ol-term__reset[_ngcontent-%COMP%] {\n border: 0;\n background: transparent;\n padding: 0;\n color: var(--mj-text-link);\n font-size: var(--mj-text-xs);\n cursor: pointer;\n}\n\n.mjo-ol-term__reset[_ngcontent-%COMP%]:hover {\n text-decoration: underline;\n}\n\n.mjo-ol-term__hint[_ngcontent-%COMP%] {\n font-size: var(--mj-text-xs);\n color: var(--mj-text-muted);\n}\n\n.mjo-ol-term__hint.is-error[_ngcontent-%COMP%] {\n color: var(--mj-status-error-text);\n}\n\n.mjo-ol-card__why[_ngcontent-%COMP%] {\n margin-top: 6px;\n font-size: var(--mj-text-xs);\n color: var(--mj-text-secondary);\n line-height: 1.35;\n}\n\n.mjo-ol-empty[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n gap: var(--mj-space-1);\n padding: var(--mj-space-4) var(--mj-space-3);\n color: var(--mj-text-muted);\n font-size: var(--mj-text-sm);\n text-align: center;\n}\n\n.mjo-ol-empty[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: var(--mj-text-2xl);\n color: var(--mj-brand-primary);\n}\n\n.mjo-ol-empty__title[_ngcontent-%COMP%] {\n font-weight: var(--mj-font-semibold);\n color: var(--mj-text-primary);\n}\n\n.mjo-ol-picker[_ngcontent-%COMP%] {\n position: relative;\n z-index: 20;\n}\n\n.mjo-ol-picker[_ngcontent-%COMP%]:has(.mj-typeahead-list.is-open) {\n z-index: 40;\n}\n\n.mjo-search[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: var(--mj-space-2);\n background: var(--mj-bg-surface);\n border: 1px solid var(--mj-border-strong);\n border-radius: var(--mj-radius-md);\n padding: 8px 10px;\n}\n\n.mjo-search[_ngcontent-%COMP%] i[_ngcontent-%COMP%] { color: var(--mj-text-muted); font-size: 12px; }\n\n.mjo-search[_ngcontent-%COMP%] input[_ngcontent-%COMP%] {\n border: 0;\n outline: 0;\n background: transparent;\n font: inherit;\n font-size: var(--mj-text-sm);\n color: inherit;\n width: 100%;\n}\n\n.mj-typeahead-list[_ngcontent-%COMP%] {\n display: none;\n position: absolute;\n left: 0;\n right: 0;\n top: calc(100% + 4px);\n max-height: 240px;\n overflow: auto;\n background: var(--mj-bg-surface-elevated);\n border: 1px solid var(--mj-border-default);\n border-radius: var(--mj-radius-md);\n box-shadow: var(--mj-shadow-md, 0 8px 24px rgba(0, 0, 0, 0.18));\n z-index: 30;\n}\n\n.mj-typeahead-list.is-open[_ngcontent-%COMP%] { display: block; }\n\n.mj-typeahead-list.is-up[_ngcontent-%COMP%] {\n top: auto;\n bottom: calc(100% + 4px);\n}\n\n.mj-typeahead-item[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: var(--mj-space-3);\n width: 100%;\n padding: 8px 12px;\n border: 0;\n border-bottom: 1px solid var(--mj-border-subtle);\n background: transparent;\n color: inherit;\n text-align: left;\n cursor: pointer;\n font: inherit;\n}\n\n.mj-typeahead-item[_ngcontent-%COMP%]:last-child { border-bottom: 0; }\n\n.mj-typeahead-item[_ngcontent-%COMP%]:hover, \n.mj-typeahead-item.is-cursor[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface-hover);\n}\n\n.mjo-ol-pick__body[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 1px;\n min-width: 0;\n}\n\n.mjo-ol-pick[_ngcontent-%COMP%] .name[_ngcontent-%COMP%] { font-size: 13px; font-weight: var(--mj-font-semibold); }\n.mjo-ol-pick[_ngcontent-%COMP%] .sub[_ngcontent-%COMP%] { font-size: 11.5px; color: var(--mj-text-muted); }\n\n\n\n\n\n\n\n\n.mjo-ol-pick__meta[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: var(--mj-space-2);\n min-width: 0;\n}\n\n.mjo-ol-pick__company[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: 4px;\n flex: 0 0 auto;\n font-size: 11px;\n line-height: 1.2;\n padding: 2px 6px;\n border: 1px solid var(--mj-border-subtle);\n border-radius: var(--mj-radius-sm);\n background: var(--mj-bg-surface-sunken);\n color: var(--mj-text-secondary);\n}\n\n.mjo-ol-pick__company[_ngcontent-%COMP%] i[_ngcontent-%COMP%] { font-size: 9.5px; color: var(--mj-text-muted); }\n\n\n\n.mjo-ol-pick__company.is-foreign[_ngcontent-%COMP%] i[_ngcontent-%COMP%] { color: var(--mj-status-info); }\n.mjo-ol-pick__company.is-foreign[_ngcontent-%COMP%] {\n color: var(--mj-text-primary);\n border-color: var(--mj-border-default);\n}\n.mjo-ol-pick[_ngcontent-%COMP%] .end[_ngcontent-%COMP%] {\n margin-left: auto;\n text-align: right;\n display: flex;\n flex-direction: column;\n gap: 1px;\n flex: 0 0 auto;\n}\n.mjo-ol-pick__price[_ngcontent-%COMP%] {\n font-variant-numeric: tabular-nums;\n font-weight: var(--mj-font-semibold);\n}\n\n.mjo-ol-ext-err[_ngcontent-%COMP%] {\n font-size: var(--mj-text-xs);\n color: var(--mj-status-error-text);\n}\n\n.mjo-ol-ext[_ngcontent-%COMP%] {\n margin-top: var(--mj-space-2);\n padding-top: var(--mj-space-1);\n border-top: 1px dashed var(--mj-border-subtle);\n}\n\n.mjo-ol-ext__toggle[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: var(--mj-space-2);\n width: 100%;\n padding: var(--mj-space-1) 0;\n border: 0;\n background: transparent;\n color: inherit;\n font: inherit;\n text-align: left;\n cursor: pointer;\n border-radius: var(--mj-radius-sm);\n}\n\n.mjo-ol-ext__toggle[_ngcontent-%COMP%]:hover {\n color: var(--mj-text-primary);\n}\n\n.mjo-ol-ext__toggle[_ngcontent-%COMP%]:focus-visible {\n outline: 2px solid var(--mj-border-focus);\n outline-offset: 2px;\n}\n\n.mjo-ol-ext__chev[_ngcontent-%COMP%] {\n flex: none;\n width: 12px;\n font-size: 10px;\n color: var(--mj-text-muted);\n transition: transform 160ms ease;\n}\n\n.mjo-ol-ext.is-open[_ngcontent-%COMP%] .mjo-ol-ext__chev[_ngcontent-%COMP%] {\n transform: rotate(90deg);\n}\n\n.mjo-ol-ext__label[_ngcontent-%COMP%] {\n font-size: var(--mj-text-xs);\n font-weight: var(--mj-font-semibold);\n color: var(--mj-text-secondary);\n letter-spacing: 0.01em;\n}\n\n.mjo-ol-ext__hint[_ngcontent-%COMP%] {\n margin-left: auto;\n font-size: var(--mj-text-xs);\n color: var(--mj-text-muted);\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n.mjo-ol-ext__body[_ngcontent-%COMP%] {\n display: grid;\n grid-template-rows: 0fr;\n transition: grid-template-rows 180ms ease;\n}\n\n.mjo-ol-ext.is-open[_ngcontent-%COMP%] .mjo-ol-ext__body[_ngcontent-%COMP%] {\n grid-template-rows: 1fr;\n}\n\n.mjo-ol-ext__clip[_ngcontent-%COMP%] {\n overflow: hidden;\n min-height: 0;\n}\n\n\n\n.mjo-ol-ext[_ngcontent-%COMP%] mj-record-form-container, \n.mjo-ol-ext[_ngcontent-%COMP%] .mj-record-form-container, \n.mjo-ol-ext[_ngcontent-%COMP%] .mj-forms-container {\n display: block;\n padding: 0;\n margin: 0;\n border: 0;\n background: transparent;\n box-shadow: none;\n}\n\n.mjo-ol-ext[_ngcontent-%COMP%] .mj-forms-toolbar, \n.mjo-ol-ext[_ngcontent-%COMP%] mj-form-toolbar {\n display: none;\n}\n\n.mjo-ol-ext[_ngcontent-%COMP%] .mj-forms-panel {\n border: 0;\n background: transparent;\n box-shadow: none;\n margin: 0;\n padding: 0;\n}\n\n.mjo-ol-ext[_ngcontent-%COMP%] mj-collapsible-panel + mj-collapsible-panel .mj-forms-panel {\n margin-top: calc(-1 * var(--mj-space-1));\n}\n\n.mjo-ol-ext[_ngcontent-%COMP%] .mj-forms-panel-header {\n display: none;\n}\n\n.mjo-ol-ext[_ngcontent-%COMP%] .mj-forms-panel-body, \n.mjo-ol-ext[_ngcontent-%COMP%] .mj-forms-panel-content {\n max-height: none;\n overflow: visible;\n padding: 0;\n margin: 0;\n}\n\n.mjo-ol-ext[_ngcontent-%COMP%] mj-form-field:last-child, \n.mjo-ol-ext[_ngcontent-%COMP%] .mj-form-field:last-child {\n margin-bottom: 0;\n}\n\n@media (max-width: 720px) {\n .mjo-ol-card__top[_ngcontent-%COMP%] { flex-wrap: wrap; }\n .mjo-ol-card__price[_ngcontent-%COMP%], .mjo-ol-card__tot[_ngcontent-%COMP%] { width: auto; }\n}\n\n\n\n\n\n\n\n.mjo-ol-discount[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: var(--mj-space-2);\n padding-top: var(--mj-space-2);\n border-top: 1px solid var(--mj-border-default);\n}\n\n.mjo-ol-discount__head[_ngcontent-%COMP%] {\n display: flex;\n align-items: baseline;\n justify-content: space-between;\n gap: var(--mj-space-2);\n flex-wrap: wrap;\n}\n\n.mjo-ol-discount__title[_ngcontent-%COMP%] {\n font-size: var(--mj-text-xs);\n font-weight: var(--mj-font-semibold);\n color: var(--mj-text-primary);\n}\n\n.mjo-ol-discount__cap[_ngcontent-%COMP%] {\n font-size: var(--mj-text-xs);\n color: var(--mj-text-muted);\n}\n\n.mjo-ol-discount__row[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: var(--mj-space-2);\n flex-wrap: wrap;\n}\n\n\n\n.mjo-ol-discount__mode[_ngcontent-%COMP%] {\n display: inline-flex;\n border: 1px solid var(--mj-border-strong);\n border-radius: var(--mj-radius-sm);\n overflow: hidden;\n}\n\n.mjo-ol-discount__mode[_ngcontent-%COMP%] button[_ngcontent-%COMP%] {\n border: 0;\n background: var(--mj-bg-surface);\n color: var(--mj-text-muted);\n font: inherit;\n font-size: var(--mj-text-xs);\n padding: 0 10px;\n height: 28px;\n cursor: pointer;\n}\n\n.mjo-ol-discount__mode[_ngcontent-%COMP%] button[_ngcontent-%COMP%] + button[_ngcontent-%COMP%] {\n border-left: 1px solid var(--mj-border-strong);\n}\n\n.mjo-ol-discount__mode[_ngcontent-%COMP%] button.is-on[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface-hover);\n color: var(--mj-text-primary);\n font-weight: var(--mj-font-semibold);\n}\n\n.mjo-ol-discount__val[_ngcontent-%COMP%] {\n width: 96px;\n height: 28px;\n box-sizing: border-box;\n padding: 0 8px;\n border: 1px solid var(--mj-border-strong);\n border-radius: var(--mj-radius-sm);\n background: var(--mj-bg-surface);\n color: inherit;\n font: inherit;\n font-size: var(--mj-text-xs);\n font-variant-numeric: tabular-nums;\n text-align: right;\n}\n\n.mjo-ol-discount__calc[_ngcontent-%COMP%] {\n font-size: var(--mj-text-xs);\n color: var(--mj-text-muted);\n font-variant-numeric: tabular-nums;\n}\n\n.mjo-ol-discount__reason[_ngcontent-%COMP%] span[_ngcontent-%COMP%] {\n display: block;\n font-size: var(--mj-text-xs);\n color: var(--mj-text-muted);\n margin-bottom: 4px;\n}\n\n.mjo-ol-discount__reason[_ngcontent-%COMP%] textarea[_ngcontent-%COMP%] {\n display: block;\n width: 100%;\n box-sizing: border-box;\n resize: vertical;\n min-height: 48px;\n padding: 6px 8px;\n border: 1px solid var(--mj-border-strong);\n border-radius: var(--mj-radius-sm);\n background: var(--mj-bg-surface);\n color: inherit;\n font: inherit;\n font-size: var(--mj-text-xs);\n}\n\n.mjo-ol-discount__reason.is-required[_ngcontent-%COMP%] textarea[_ngcontent-%COMP%] {\n border-color: var(--mj-status-danger-text, #b42318);\n}\n\n.mjo-ol-discount__err[_ngcontent-%COMP%] {\n font-size: var(--mj-text-xs);\n color: var(--mj-status-error-text);\n}\n\n.mjo-ol-discount__note[_ngcontent-%COMP%] {\n font-size: var(--mj-text-xs);\n color: var(--mj-text-muted);\n}\n\n.mjo-ol-discount__staged[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: var(--mj-space-2);\n font-size: var(--mj-text-xs);\n color: var(--mj-text-muted);\n}\n\n.mjo-ol-discount__clear[_ngcontent-%COMP%] {\n border: 1px solid var(--mj-border-strong);\n border-radius: var(--mj-radius-sm);\n background: var(--mj-bg-surface);\n color: inherit;\n font: inherit;\n font-size: var(--mj-text-xs);\n height: 24px;\n padding: 0 10px;\n cursor: pointer;\n}\n\n\n\n\n.mjo-ol-discpill[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n margin-top: 4px;\n padding: 1px 8px;\n border-radius: 999px;\n font-size: 10px;\n font-weight: 600;\n letter-spacing: 0.02em;\n font-variant-numeric: tabular-nums;\n color: var(--mj-status-success-text);\n background: color-mix(in srgb, var(--mj-status-success-text) 16%, transparent);\n}\n\n\n\n.mjo-ol-holding[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: var(--mj-space-2);\n margin-top: var(--mj-space-2);\n padding: var(--mj-space-2) var(--mj-space-3);\n border: 1px solid var(--mj-status-warning-border);\n border-radius: var(--mj-radius-md);\n background: var(--mj-status-warning-bg);\n font-size: var(--mj-text-sm);\n color: var(--mj-text-primary);\n}\n\n.mjo-ol-holding__choices[_ngcontent-%COMP%] {\n display: flex;\n flex-wrap: wrap;\n gap: var(--mj-space-2);\n}\n\n.mjo-ol-holding__choice[_ngcontent-%COMP%] {\n padding: 4px 10px;\n border: 1px solid var(--mj-border-default);\n border-radius: var(--mj-radius-full);\n background: var(--mj-bg-surface);\n color: var(--mj-text-primary);\n font: inherit;\n cursor: pointer;\n}\n\n.mjo-ol-holding__choice.is-selected[_ngcontent-%COMP%] {\n border-color: var(--mj-brand-primary);\n color: var(--mj-brand-primary);\n font-weight: var(--mj-font-semibold);\n}"] });
2078
+ MJOMoneyPipe], styles: ["[_nghost-%COMP%] { display: block; }\n\n.mjo-ol[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: var(--mj-space-2);\n}\n\n.mjo-ol-card[_ngcontent-%COMP%] {\n border: 1px solid var(--mj-border-default);\n background: var(--mj-bg-surface);\n border-radius: var(--mj-radius-md);\n padding: var(--mj-space-3);\n}\n\n.mjo-ol-card[_ngcontent-%COMP%]:has(.mjo-ol-ext.is-open) {\n padding-bottom: var(--mj-space-1);\n}\n\n.mjo-ol-card__top[_ngcontent-%COMP%] {\n display: flex;\n align-items: flex-start;\n gap: var(--mj-space-3);\n}\n\n.mjo-ol-card__id[_ngcontent-%COMP%] { flex: 1; min-width: 0; }\n\n.mjo-ol-card__name[_ngcontent-%COMP%] {\n display: inline;\n padding: 0;\n border: 0;\n background: transparent;\n font: inherit;\n font-size: var(--mj-text-sm);\n font-weight: var(--mj-font-semibold);\n color: var(--mj-text-link);\n text-align: left;\n cursor: pointer;\n text-decoration: none;\n}\n\n.mjo-ol-card__name[_ngcontent-%COMP%]:hover { text-decoration: underline; }\n\n.mjo-ol-card__meta[_ngcontent-%COMP%] {\n font-size: var(--mj-text-xs);\n color: var(--mj-text-muted);\n margin-top: 2px;\n}\n\n.mjo-ol-qty[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n border: 1px solid var(--mj-border-strong);\n border-radius: var(--mj-radius-md);\n overflow: hidden;\n background: var(--mj-bg-surface);\n flex: none;\n}\n\n.mjo-ol-qty[_ngcontent-%COMP%] button[_ngcontent-%COMP%] {\n border: 0;\n background: transparent;\n cursor: pointer;\n color: var(--mj-text-secondary);\n width: 26px;\n height: 28px;\n font-size: 11px;\n}\n\n.mjo-ol-qty[_ngcontent-%COMP%] button[_ngcontent-%COMP%]:hover:not(:disabled) {\n background: var(--mj-bg-surface-hover);\n color: var(--mj-text-primary);\n}\n\n.mjo-ol-qty[_ngcontent-%COMP%] button[_ngcontent-%COMP%]:disabled {\n cursor: default;\n color: var(--mj-text-disabled);\n}\n\n.mjo-ol-qty[_ngcontent-%COMP%] input[_ngcontent-%COMP%] {\n border: 0;\n outline: 0;\n background: transparent;\n width: 46px;\n text-align: center;\n font: inherit;\n font-variant-numeric: tabular-nums;\n color: inherit;\n}\n\n.mjo-ol-qty.is-locked[_ngcontent-%COMP%] {\n border-color: var(--mj-border-default);\n background: transparent;\n}\n\n.mjo-ol-qty__value[_ngcontent-%COMP%] {\n min-width: 46px;\n padding: 0 10px;\n height: 28px;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n font-variant-numeric: tabular-nums;\n}\n\n.mjo-ol-card__price[_ngcontent-%COMP%] {\n flex: none;\n min-width: 108px;\n display: flex;\n flex-direction: column;\n align-items: center;\n}\n\n.mjo-ol-card__price-row[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 2px;\n height: 28px;\n}\n\n.mjo-ol-price__pencil[_ngcontent-%COMP%] {\n flex: none;\n color: var(--mj-text-muted);\n}\n\n.mjo-ol-price__pencil[_ngcontent-%COMP%]:hover {\n color: var(--mj-text-link);\n background: var(--mj-bg-surface-hover);\n}\n\n.mjo-ol-override[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: var(--mj-space-2);\n margin-top: var(--mj-space-2);\n padding: var(--mj-space-2);\n border: 1px solid var(--mj-border-default);\n border-radius: var(--mj-radius-md);\n background: var(--mj-bg-surface-subtle, var(--mj-bg-surface));\n}\n\n.mjo-ol-override__req[_ngcontent-%COMP%] {\n font-style: normal;\n color: var(--mj-status-danger-text, #b42318);\n margin-left: 2px;\n}\n\n.mjo-ol-override__actions[_ngcontent-%COMP%] {\n display: flex;\n gap: var(--mj-space-2);\n justify-content: flex-end;\n}\n\n.mjo-ol-override__done[_ngcontent-%COMP%], \n.mjo-ol-override__reset[_ngcontent-%COMP%] {\n border: 0;\n background: transparent;\n cursor: pointer;\n font: inherit;\n font-size: var(--mj-text-xs);\n font-weight: var(--mj-font-semibold);\n padding: 4px 8px;\n border-radius: var(--mj-radius-sm);\n}\n\n.mjo-ol-override__done[_ngcontent-%COMP%] {\n color: var(--mj-text-link);\n}\n\n.mjo-ol-override__reset[_ngcontent-%COMP%] {\n color: var(--mj-text-muted);\n}\n\n.mjo-ol-override__done[_ngcontent-%COMP%]:hover, \n.mjo-ol-override__reset[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-hover);\n}\n\n.mjo-ol-override__done[_ngcontent-%COMP%]:disabled {\n color: var(--mj-text-muted);\n cursor: not-allowed;\n background: transparent;\n}\n\n.mjo-ol-card__amt[_ngcontent-%COMP%] {\n font-variant-numeric: tabular-nums;\n font-weight: var(--mj-font-semibold);\n font-size: var(--mj-text-sm);\n line-height: 28px;\n}\n\n.mjo-ol-overpill[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n margin-top: 4px;\n padding: 1px 8px;\n border-radius: 999px;\n font-size: 10px;\n font-weight: 600;\n letter-spacing: 0.02em;\n color: var(--mj-status-warning-text);\n background: color-mix(in srgb, var(--mj-status-warning-text) 16%, transparent);\n}\n\n.mjo-ol-card__err[_ngcontent-%COMP%] {\n font-size: var(--mj-text-xs);\n color: var(--mj-status-error-text);\n margin-top: 2px;\n}\n\n.mjo-ol-card__tot[_ngcontent-%COMP%] {\n flex: none;\n min-width: 104px;\n height: 28px;\n display: flex;\n align-items: center;\n justify-content: flex-end;\n text-align: right;\n font-variant-numeric: tabular-nums;\n font-weight: var(--mj-font-semibold);\n font-size: var(--mj-text-sm);\n line-height: 28px;\n}\n\n.mjo-ol-iconbtn[_ngcontent-%COMP%] {\n border: 0;\n background: transparent;\n color: var(--mj-text-muted);\n cursor: pointer;\n width: 28px;\n height: 28px;\n border-radius: var(--mj-radius-sm);\n}\n\n.mjo-ol-iconbtn[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-hover);\n color: var(--mj-status-error);\n}\n\n.mjo-ol-card__conseq[_ngcontent-%COMP%] {\n display: flex;\n gap: 6px;\n flex-wrap: wrap;\n margin-top: var(--mj-space-2);\n}\n\n\n\n\n.mjo-ol-term[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: var(--mj-space-2);\n flex-wrap: wrap;\n margin-top: var(--mj-space-2);\n}\n\n.mjo-ol-term__label[_ngcontent-%COMP%] {\n font-size: var(--mj-text-xs);\n color: var(--mj-text-muted);\n}\n\n.mjo-ol-term__input[_ngcontent-%COMP%] {\n height: 28px;\n padding: 0 var(--mj-space-2);\n border: 1px solid var(--mj-border-strong);\n border-radius: var(--mj-radius-md);\n background: var(--mj-bg-surface);\n color: var(--mj-text-primary);\n font: inherit;\n font-size: var(--mj-text-sm);\n}\n\n\n\n\n.mjo-ol-term__input.is-default[_ngcontent-%COMP%] {\n border-color: var(--mj-border-default);\n color: var(--mj-text-secondary);\n}\n\n.mjo-ol-term__value[_ngcontent-%COMP%] {\n font-size: var(--mj-text-sm);\n color: var(--mj-text-primary);\n font-variant-numeric: tabular-nums;\n}\n\n\n\n\n.mjo-ol-term__value.is-dictated[_ngcontent-%COMP%] {\n color: var(--mj-text-secondary);\n}\n\n.mjo-ol-term__reset[_ngcontent-%COMP%] {\n border: 0;\n background: transparent;\n padding: 0;\n color: var(--mj-text-link);\n font-size: var(--mj-text-xs);\n cursor: pointer;\n}\n\n.mjo-ol-term__reset[_ngcontent-%COMP%]:hover {\n text-decoration: underline;\n}\n\n.mjo-ol-term__hint[_ngcontent-%COMP%] {\n font-size: var(--mj-text-xs);\n color: var(--mj-text-muted);\n}\n\n.mjo-ol-term__hint.is-error[_ngcontent-%COMP%] {\n color: var(--mj-status-error-text);\n}\n\n.mjo-ol-card__why[_ngcontent-%COMP%] {\n margin-top: 6px;\n font-size: var(--mj-text-xs);\n color: var(--mj-text-secondary);\n line-height: 1.35;\n}\n\n.mjo-ol-empty[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n gap: var(--mj-space-1);\n padding: var(--mj-space-4) var(--mj-space-3);\n color: var(--mj-text-muted);\n font-size: var(--mj-text-sm);\n text-align: center;\n}\n\n.mjo-ol-empty[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: var(--mj-text-2xl);\n color: var(--mj-brand-primary);\n}\n\n.mjo-ol-empty__title[_ngcontent-%COMP%] {\n font-weight: var(--mj-font-semibold);\n color: var(--mj-text-primary);\n}\n\n.mjo-ol-picker[_ngcontent-%COMP%] {\n position: relative;\n z-index: 20;\n}\n\n.mjo-ol-picker[_ngcontent-%COMP%]:has(.mj-typeahead-list.is-open) {\n z-index: 40;\n}\n\n.mjo-search[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: var(--mj-space-2);\n background: var(--mj-bg-surface);\n border: 1px solid var(--mj-border-strong);\n border-radius: var(--mj-radius-md);\n padding: 8px 10px;\n}\n\n.mjo-search[_ngcontent-%COMP%] i[_ngcontent-%COMP%] { color: var(--mj-text-muted); font-size: 12px; }\n\n.mjo-search[_ngcontent-%COMP%] input[_ngcontent-%COMP%] {\n border: 0;\n outline: 0;\n background: transparent;\n font: inherit;\n font-size: var(--mj-text-sm);\n color: inherit;\n width: 100%;\n}\n\n.mj-typeahead-list[_ngcontent-%COMP%] {\n display: none;\n position: absolute;\n left: 0;\n right: 0;\n top: calc(100% + 4px);\n max-height: 240px;\n overflow: auto;\n background: var(--mj-bg-surface-elevated);\n border: 1px solid var(--mj-border-default);\n border-radius: var(--mj-radius-md);\n box-shadow: var(--mj-shadow-md, 0 8px 24px rgba(0, 0, 0, 0.18));\n z-index: 30;\n}\n\n.mj-typeahead-list.is-open[_ngcontent-%COMP%] { display: block; }\n\n.mj-typeahead-list.is-up[_ngcontent-%COMP%] {\n top: auto;\n bottom: calc(100% + 4px);\n}\n\n.mj-typeahead-item[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: var(--mj-space-3);\n width: 100%;\n padding: 8px 12px;\n border: 0;\n border-bottom: 1px solid var(--mj-border-subtle);\n background: transparent;\n color: inherit;\n text-align: left;\n cursor: pointer;\n font: inherit;\n}\n\n.mj-typeahead-item[_ngcontent-%COMP%]:last-child { border-bottom: 0; }\n\n.mj-typeahead-item[_ngcontent-%COMP%]:hover, \n.mj-typeahead-item.is-cursor[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface-hover);\n}\n\n.mjo-ol-pick__body[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 1px;\n min-width: 0;\n}\n\n.mjo-ol-pick[_ngcontent-%COMP%] .name[_ngcontent-%COMP%] { font-size: 13px; font-weight: var(--mj-font-semibold); }\n.mjo-ol-pick[_ngcontent-%COMP%] .sub[_ngcontent-%COMP%] { font-size: 11.5px; color: var(--mj-text-muted); }\n\n\n\n\n\n\n\n\n.mjo-ol-pick__meta[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: var(--mj-space-2);\n min-width: 0;\n}\n\n.mjo-ol-pick__company[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: 4px;\n flex: 0 0 auto;\n font-size: 11px;\n line-height: 1.2;\n padding: 2px 6px;\n border: 1px solid var(--mj-border-subtle);\n border-radius: var(--mj-radius-sm);\n background: var(--mj-bg-surface-sunken);\n color: var(--mj-text-secondary);\n}\n\n.mjo-ol-pick__company[_ngcontent-%COMP%] i[_ngcontent-%COMP%] { font-size: 9.5px; color: var(--mj-text-muted); }\n\n\n\n.mjo-ol-pick__company.is-foreign[_ngcontent-%COMP%] i[_ngcontent-%COMP%] { color: var(--mj-status-info); }\n.mjo-ol-pick__company.is-foreign[_ngcontent-%COMP%] {\n color: var(--mj-text-primary);\n border-color: var(--mj-border-default);\n}\n.mjo-ol-pick[_ngcontent-%COMP%] .end[_ngcontent-%COMP%] {\n margin-left: auto;\n text-align: right;\n display: flex;\n flex-direction: column;\n gap: 1px;\n flex: 0 0 auto;\n}\n.mjo-ol-pick__price[_ngcontent-%COMP%] {\n font-variant-numeric: tabular-nums;\n font-weight: var(--mj-font-semibold);\n}\n\n\n\n\n.mjo-ol-overlap[_ngcontent-%COMP%] {\n display: flex;\n gap: var(--mj-space-2);\n margin-top: var(--mj-space-2);\n padding: var(--mj-space-2) var(--mj-space-3);\n border: 1px solid var(--mj-border-default);\n border-radius: var(--mj-radius-md);\n font-size: var(--mj-text-xs);\n line-height: 1.35;\n color: var(--mj-text-secondary);\n}\n.mjo-ol-overlap.is-blocking[_ngcontent-%COMP%] {\n border-color: var(--mj-status-warning-border);\n background: var(--mj-status-warning-bg);\n color: var(--mj-status-warning-text);\n}\n.mjo-ol-overlap__body[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: var(--mj-space-1);\n}\n.mjo-ol-overlap__ack[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: var(--mj-space-1);\n font-weight: var(--mj-font-semibold);\n cursor: pointer;\n}\n.mjo-ol-overlap-err[_ngcontent-%COMP%] {\n margin-bottom: var(--mj-space-2);\n font-size: var(--mj-text-xs);\n color: var(--mj-status-error-text);\n}\n\n.mjo-ol-ext-err[_ngcontent-%COMP%] {\n font-size: var(--mj-text-xs);\n color: var(--mj-status-error-text);\n}\n\n.mjo-ol-ext[_ngcontent-%COMP%] {\n margin-top: var(--mj-space-2);\n padding-top: var(--mj-space-1);\n border-top: 1px dashed var(--mj-border-subtle);\n}\n\n.mjo-ol-ext__toggle[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: var(--mj-space-2);\n width: 100%;\n padding: var(--mj-space-1) 0;\n border: 0;\n background: transparent;\n color: inherit;\n font: inherit;\n text-align: left;\n cursor: pointer;\n border-radius: var(--mj-radius-sm);\n}\n\n.mjo-ol-ext__toggle[_ngcontent-%COMP%]:hover {\n color: var(--mj-text-primary);\n}\n\n.mjo-ol-ext__toggle[_ngcontent-%COMP%]:focus-visible {\n outline: 2px solid var(--mj-border-focus);\n outline-offset: 2px;\n}\n\n.mjo-ol-ext__chev[_ngcontent-%COMP%] {\n flex: none;\n width: 12px;\n font-size: 10px;\n color: var(--mj-text-muted);\n transition: transform 160ms ease;\n}\n\n.mjo-ol-ext.is-open[_ngcontent-%COMP%] .mjo-ol-ext__chev[_ngcontent-%COMP%] {\n transform: rotate(90deg);\n}\n\n.mjo-ol-ext__label[_ngcontent-%COMP%] {\n font-size: var(--mj-text-xs);\n font-weight: var(--mj-font-semibold);\n color: var(--mj-text-secondary);\n letter-spacing: 0.01em;\n}\n\n.mjo-ol-ext__hint[_ngcontent-%COMP%] {\n margin-left: auto;\n font-size: var(--mj-text-xs);\n color: var(--mj-text-muted);\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n.mjo-ol-ext__body[_ngcontent-%COMP%] {\n display: grid;\n grid-template-rows: 0fr;\n transition: grid-template-rows 180ms ease;\n}\n\n.mjo-ol-ext.is-open[_ngcontent-%COMP%] .mjo-ol-ext__body[_ngcontent-%COMP%] {\n grid-template-rows: 1fr;\n}\n\n.mjo-ol-ext__clip[_ngcontent-%COMP%] {\n overflow: hidden;\n min-height: 0;\n}\n\n\n\n.mjo-ol-ext[_ngcontent-%COMP%] mj-record-form-container, \n.mjo-ol-ext[_ngcontent-%COMP%] .mj-record-form-container, \n.mjo-ol-ext[_ngcontent-%COMP%] .mj-forms-container {\n display: block;\n padding: 0;\n margin: 0;\n border: 0;\n background: transparent;\n box-shadow: none;\n}\n\n.mjo-ol-ext[_ngcontent-%COMP%] .mj-forms-toolbar, \n.mjo-ol-ext[_ngcontent-%COMP%] mj-form-toolbar {\n display: none;\n}\n\n.mjo-ol-ext[_ngcontent-%COMP%] .mj-forms-panel {\n border: 0;\n background: transparent;\n box-shadow: none;\n margin: 0;\n padding: 0;\n}\n\n.mjo-ol-ext[_ngcontent-%COMP%] mj-collapsible-panel + mj-collapsible-panel .mj-forms-panel {\n margin-top: calc(-1 * var(--mj-space-1));\n}\n\n.mjo-ol-ext[_ngcontent-%COMP%] .mj-forms-panel-header {\n display: none;\n}\n\n.mjo-ol-ext[_ngcontent-%COMP%] .mj-forms-panel-body, \n.mjo-ol-ext[_ngcontent-%COMP%] .mj-forms-panel-content {\n max-height: none;\n overflow: visible;\n padding: 0;\n margin: 0;\n}\n\n.mjo-ol-ext[_ngcontent-%COMP%] mj-form-field:last-child, \n.mjo-ol-ext[_ngcontent-%COMP%] .mj-form-field:last-child {\n margin-bottom: 0;\n}\n\n@media (max-width: 720px) {\n .mjo-ol-card__top[_ngcontent-%COMP%] { flex-wrap: wrap; }\n .mjo-ol-card__price[_ngcontent-%COMP%], .mjo-ol-card__tot[_ngcontent-%COMP%] { width: auto; }\n}\n\n\n\n\n\n\n\n.mjo-ol-discount[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: var(--mj-space-2);\n padding-top: var(--mj-space-2);\n border-top: 1px solid var(--mj-border-default);\n}\n\n.mjo-ol-discount__head[_ngcontent-%COMP%] {\n display: flex;\n align-items: baseline;\n justify-content: space-between;\n gap: var(--mj-space-2);\n flex-wrap: wrap;\n}\n\n.mjo-ol-discount__title[_ngcontent-%COMP%] {\n font-size: var(--mj-text-xs);\n font-weight: var(--mj-font-semibold);\n color: var(--mj-text-primary);\n}\n\n.mjo-ol-discount__cap[_ngcontent-%COMP%] {\n font-size: var(--mj-text-xs);\n color: var(--mj-text-muted);\n}\n\n.mjo-ol-discount__row[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: var(--mj-space-2);\n flex-wrap: wrap;\n}\n\n\n\n.mjo-ol-discount__mode[_ngcontent-%COMP%] {\n display: inline-flex;\n border: 1px solid var(--mj-border-strong);\n border-radius: var(--mj-radius-sm);\n overflow: hidden;\n}\n\n.mjo-ol-discount__mode[_ngcontent-%COMP%] button[_ngcontent-%COMP%] {\n border: 0;\n background: var(--mj-bg-surface);\n color: var(--mj-text-muted);\n font: inherit;\n font-size: var(--mj-text-xs);\n padding: 0 10px;\n height: 28px;\n cursor: pointer;\n}\n\n.mjo-ol-discount__mode[_ngcontent-%COMP%] button[_ngcontent-%COMP%] + button[_ngcontent-%COMP%] {\n border-left: 1px solid var(--mj-border-strong);\n}\n\n.mjo-ol-discount__mode[_ngcontent-%COMP%] button.is-on[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface-hover);\n color: var(--mj-text-primary);\n font-weight: var(--mj-font-semibold);\n}\n\n.mjo-ol-discount__val[_ngcontent-%COMP%] {\n width: 96px;\n height: 28px;\n box-sizing: border-box;\n padding: 0 8px;\n border: 1px solid var(--mj-border-strong);\n border-radius: var(--mj-radius-sm);\n background: var(--mj-bg-surface);\n color: inherit;\n font: inherit;\n font-size: var(--mj-text-xs);\n font-variant-numeric: tabular-nums;\n text-align: right;\n}\n\n.mjo-ol-discount__calc[_ngcontent-%COMP%] {\n font-size: var(--mj-text-xs);\n color: var(--mj-text-muted);\n font-variant-numeric: tabular-nums;\n}\n\n.mjo-ol-discount__reason[_ngcontent-%COMP%] span[_ngcontent-%COMP%] {\n display: block;\n font-size: var(--mj-text-xs);\n color: var(--mj-text-muted);\n margin-bottom: 4px;\n}\n\n.mjo-ol-discount__reason[_ngcontent-%COMP%] textarea[_ngcontent-%COMP%] {\n display: block;\n width: 100%;\n box-sizing: border-box;\n resize: vertical;\n min-height: 48px;\n padding: 6px 8px;\n border: 1px solid var(--mj-border-strong);\n border-radius: var(--mj-radius-sm);\n background: var(--mj-bg-surface);\n color: inherit;\n font: inherit;\n font-size: var(--mj-text-xs);\n}\n\n.mjo-ol-discount__reason.is-required[_ngcontent-%COMP%] textarea[_ngcontent-%COMP%] {\n border-color: var(--mj-status-danger-text, #b42318);\n}\n\n.mjo-ol-discount__err[_ngcontent-%COMP%] {\n font-size: var(--mj-text-xs);\n color: var(--mj-status-error-text);\n}\n\n.mjo-ol-discount__note[_ngcontent-%COMP%] {\n font-size: var(--mj-text-xs);\n color: var(--mj-text-muted);\n}\n\n.mjo-ol-discount__staged[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: var(--mj-space-2);\n font-size: var(--mj-text-xs);\n color: var(--mj-text-muted);\n}\n\n.mjo-ol-discount__clear[_ngcontent-%COMP%] {\n border: 1px solid var(--mj-border-strong);\n border-radius: var(--mj-radius-sm);\n background: var(--mj-bg-surface);\n color: inherit;\n font: inherit;\n font-size: var(--mj-text-xs);\n height: 24px;\n padding: 0 10px;\n cursor: pointer;\n}\n\n\n\n\n.mjo-ol-discpill[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n margin-top: 4px;\n padding: 1px 8px;\n border-radius: 999px;\n font-size: 10px;\n font-weight: 600;\n letter-spacing: 0.02em;\n font-variant-numeric: tabular-nums;\n color: var(--mj-status-success-text);\n background: color-mix(in srgb, var(--mj-status-success-text) 16%, transparent);\n}\n\n\n\n.mjo-ol-holding[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: var(--mj-space-2);\n margin-top: var(--mj-space-2);\n padding: var(--mj-space-2) var(--mj-space-3);\n border: 1px solid var(--mj-status-warning-border);\n border-radius: var(--mj-radius-md);\n background: var(--mj-status-warning-bg);\n font-size: var(--mj-text-sm);\n color: var(--mj-text-primary);\n}\n\n.mjo-ol-holding__choices[_ngcontent-%COMP%] {\n display: flex;\n flex-wrap: wrap;\n gap: var(--mj-space-2);\n}\n\n.mjo-ol-holding__choice[_ngcontent-%COMP%] {\n padding: 4px 10px;\n border: 1px solid var(--mj-border-default);\n border-radius: var(--mj-radius-full);\n background: var(--mj-bg-surface);\n color: var(--mj-text-primary);\n font: inherit;\n cursor: pointer;\n}\n\n.mjo-ol-holding__choice.is-selected[_ngcontent-%COMP%] {\n border-color: var(--mj-brand-primary);\n color: var(--mj-brand-primary);\n font-weight: var(--mj-font-semibold);\n}"] });
1965
2079
  }
1966
2080
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MJOOrderLinesEditorComponent, [{
1967
2081
  type: Component,
@@ -1974,7 +2088,7 @@ export class MJOOrderLinesEditorComponent {
1974
2088
  MJOLinePricePickerComponent,
1975
2089
  MJOMoneyPipe,
1976
2090
  MJOOrderLineDetailsPanelComponent,
1977
- ], template: "<div class=\"mjo-ol\">\n @for (line of Lines; track line.ID) {\n <div class=\"mjo-ol-card\">\n <div class=\"mjo-ol-card__top\">\n <div class=\"mjo-ol-card__id\">\n <button type=\"button\" class=\"mjo-ol-card__name\" (click)=\"OpenProduct(line, $event)\">\n {{ ProductFor(line)?.Name ?? 'Product' }}\n </button>\n <div class=\"mjo-ol-card__meta\">\n {{ ProductFor(line)?.SKU }}\n @if (ProductFor(line)?.TypeName) {\n \u00B7 {{ ProductFor(line)?.TypeName }}\n }\n </div>\n </div>\n\n <div class=\"mjo-ol-qty\" [class.is-locked]=\"!EditMode || QuantityCappedToOne(line)\">\n @if (EditMode && !QuantityCappedToOne(line)) {\n <button type=\"button\" (click)=\"Bump(line, -1)\" aria-label=\"Decrease quantity\">\u2212</button>\n <input\n [value]=\"line.Quantity\"\n (change)=\"SetQuantity(line, $event)\"\n aria-label=\"Quantity\">\n <button type=\"button\" (click)=\"Bump(line, 1)\" [disabled]=\"QuantityAtMax(line)\" aria-label=\"Increase quantity\">+</button>\n } @else {\n <span class=\"mjo-ol-qty__value\">{{ line.Quantity }}</span>\n }\n </div>\n\n <div class=\"mjo-ol-card__price\">\n <div class=\"mjo-ol-card__price-row\">\n <div class=\"mjo-ol-card__amt\">{{ DisplayUnit(line) | mjoMoney }}</div>\n <!-- The pencil opens the PRICE editor, the DISCOUNT editor, or both \u2014 a user\n may hold one authority without the other, and an order that can be\n discounted but not re-priced still needs a way in. -->\n @if (CanOverride || CanDiscount) {\n <button\n type=\"button\"\n class=\"mjo-ol-iconbtn mjo-ol-price__pencil\"\n (click)=\"ToggleOverrideEditor(line)\"\n [attr.aria-expanded]=\"IsOverrideEditorOpen(line)\"\n [attr.aria-label]=\"CanOverride ? (IsOverridden(line) ? 'Edit price override' : 'Override price or discount line') : 'Discount line'\">\n <i class=\"fa-solid fa-pencil\" aria-hidden=\"true\"></i>\n </button>\n }\n </div>\n @if (IsOverridden(line)) {\n <span class=\"mjo-ol-overpill\">overridden</span>\n } @else {\n <mjo-price-source-badge\n [Source]=\"PricedLine(line)?.PriceSource ?? null\"\n [Settled]=\"!Pricing.Loading\"\n [Overridden]=\"false\" />\n }\n <!-- A DISCOUNT IS NOT AN OVERRIDE, and the badge says so in its own words: the\n list price held and this much was given away. -->\n @if (HasDiscount(line)) {\n <span class=\"mjo-ol-discpill\" title=\"Discount on this line\">\u2212{{ AppliedDiscount(line) | mjoMoney }}</span>\n }\n @if (PricedLine(line)?.Error; as why) {\n <div class=\"mjo-ol-card__err\">{{ why }}</div>\n }\n </div>\n\n <div class=\"mjo-ol-card__tot\">{{ PricedLine(line)?.NetAmount | mjoMoney }}</div>\n\n <!-- Details, on every line and not just editable ones: a booked line's dimensions are\n what its journal entry carries, which is exactly when someone wants to look. -->\n <button\n type=\"button\"\n class=\"mjo-ol-iconbtn\"\n (click)=\"OpenDetails(line, $event)\"\n [attr.title]=\"DimensionSummary(line)\"\n [attr.aria-label]=\"'Details for ' + (ProductFor(line)?.Name ?? 'line')\">\n <i class=\"fa-solid fa-sliders\" aria-hidden=\"true\"></i>\n </button>\n\n @if (EditMode) {\n <button\n type=\"button\"\n class=\"mjo-ol-iconbtn\"\n (click)=\"Remove(line)\"\n [attr.aria-label]=\"'Remove ' + (ProductFor(line)?.Name ?? 'line')\">\n <i class=\"fa-regular fa-trash-can\" aria-hidden=\"true\"></i>\n </button>\n }\n </div>\n\n @if (IsOverrideEditorOpen(line)) {\n <div class=\"mjo-ol-override\" role=\"region\" [attr.aria-label]=\"'Price and discount for ' + (ProductFor(line)?.Name ?? 'line')\">\n @if (CanOverride) {\n <mjo-line-price-picker\n [Line]=\"line\"\n [OverrideKind]=\"OverrideKind\"\n [Applicable]=\"ApplicableFor(line)\"\n [EngineDefault]=\"PricedLine(line)?.Default\"\n [DefaultUnit]=\"DefaultUnit(line)\"\n [PriceSource]=\"PricedLine(line)?.PriceSource ?? null\"\n [PricedUnit]=\"PricedLine(line)?.UnitPrice ?? null\"\n (PriceChanged)=\"OnLinePriceChanged()\"></mjo-line-price-picker>\n }\n\n <!--\n DISCOUNT \u2014 deliberately its own block, below the price picker and labelled\n apart from it (golive #252). An override restates the price; a discount says\n the list price held and value was given away, and only the second reaches the\n Sales Discounts leg of the booking entry. Presenting them as one control is\n what left the whole discount concept unreachable from the product.\n -->\n @if (CanDiscount) {\n <div class=\"mjo-ol-discount\" role=\"group\" [attr.aria-label]=\"'Discount for ' + (ProductFor(line)?.Name ?? 'line')\">\n <div class=\"mjo-ol-discount__head\">\n <span class=\"mjo-ol-discount__title\">Discount</span>\n <span class=\"mjo-ol-discount__cap\">your authority: {{ DiscountCapLabel }}</span>\n </div>\n @if (CanDiscountLine(line)) {\n <div class=\"mjo-ol-discount__row\">\n <div class=\"mjo-ol-discount__mode\" role=\"radiogroup\" aria-label=\"Discount expressed as\">\n <button\n type=\"button\"\n role=\"radio\"\n [attr.aria-checked]=\"DiscountDraft(line).Mode === 'percent'\"\n [class.is-on]=\"DiscountDraft(line).Mode === 'percent'\"\n (click)=\"SetDiscountMode(line, 'percent')\">%</button>\n <button\n type=\"button\"\n role=\"radio\"\n [attr.aria-checked]=\"DiscountDraft(line).Mode === 'amount'\"\n [class.is-on]=\"DiscountDraft(line).Mode === 'amount'\"\n (click)=\"SetDiscountMode(line, 'amount')\">Amount</button>\n </div>\n <input\n class=\"mjo-ol-discount__val\"\n type=\"number\"\n step=\"0.01\"\n min=\"0\"\n [value]=\"DiscountDraft(line).Value\"\n (input)=\"SetDiscountValue(line, $event)\"\n [attr.placeholder]=\"DiscountDraft(line).Mode === 'percent' ? '0' : '0.00'\"\n [attr.aria-label]=\"DiscountDraft(line).Mode === 'percent' ? 'Discount percent' : 'Discount amount'\">\n <span class=\"mjo-ol-discount__calc\">\n @if (DraftDiscountAmount(line); as amount) {\n \u2212{{ amount | mjoMoney }} of {{ DiscountBase(line) | mjoMoney }}\n } @else {\n {{ DiscountBase(line) | mjoMoney }} left to discount\n }\n </span>\n </div>\n <label class=\"mjo-ol-discount__reason\" [class.is-required]=\"NeedsDiscountReason(line)\">\n <span>Discount Reason @if (DraftDiscountAmount(line)) {<em class=\"mjo-ol-override__req\" aria-hidden=\"true\">*</em>}</span>\n <textarea\n rows=\"2\"\n [value]=\"DiscountDraft(line).Reason\"\n (input)=\"SetDiscountReason(line, $event)\"\n placeholder=\"Required \u2014 why value was given away on this line\"></textarea>\n </label>\n @if (DiscountError(line); as problem) {\n <div class=\"mjo-ol-discount__err\" role=\"alert\">{{ problem }}</div>\n }\n @if (HasStagedDiscount(line)) {\n <div class=\"mjo-ol-discount__staged\">\n <span>Applies when this order is saved.</span>\n <button type=\"button\" class=\"mjo-ol-discount__clear\" (click)=\"ClearDiscount(line)\">Remove</button>\n </div>\n }\n } @else {\n <div class=\"mjo-ol-discount__note\">\n This line is booked, so its money is frozen. Reverse the line to re-sell it at a\n discounted price.\n </div>\n }\n </div>\n } @else if (DiscountUnavailableReason; as why) {\n <div class=\"mjo-ol-discount__note\">{{ why }}</div>\n }\n\n <div class=\"mjo-ol-override__actions\">\n <button\n type=\"button\"\n class=\"mjo-ol-override__done\"\n [disabled]=\"NeedsOverrideReason(line) || NeedsDiscountReason(line)\"\n [attr.title]=\"NeedsOverrideReason(line) ? 'Enter a reason for the price override' : (NeedsDiscountReason(line) ? 'Enter a reason for the discount' : null)\"\n (click)=\"DoneOverrideEditor(line)\">Done</button>\n @if (CanOverride) {\n <button type=\"button\" class=\"mjo-ol-override__reset\" [disabled]=\"!CanRestoreDefault(line)\" (click)=\"ResetOverride(line)\">Use Default Price</button>\n }\n </div>\n </div>\n }\n\n <div class=\"mjo-ol-card__conseq\">\n @if (ProductFor(line); as product) {\n @if (product.TypeName === 'Goods') {\n <mjo-consequence-chip Kind=\"fulfillment\">Ships \u2014 holds the order at Posted</mjo-consequence-chip>\n }\n @if (!product.Taxable) {\n <mjo-consequence-chip Kind=\"untaxable\">Untaxable</mjo-consequence-chip>\n }\n @if (ShowsForeignRevenue(line)) {\n <mjo-consequence-chip Kind=\"company\">Revenue to {{ product.CompanyName }}</mjo-consequence-chip>\n }\n }\n </div>\n @if (OverrideReasonText(line); as why) {\n <div class=\"mjo-ol-card__why\">{{ why }}</div>\n }\n\n <!--\n TERM START \u2014 subscription lines only (D-TERMSTART).\n The order date says when the sale was booked; this says when coverage begins, and an\n agreement settles the two independently. Shown on the card rather than behind the\n extension disclosure because it is a term fact, and not every subscription product\n type has an extension form to hide it in.\n -->\n @if (IsSubscriptionLine(line)) {\n <div class=\"mjo-ol-term\">\n <!-- `for` only when there IS an input to point at. A label targeting a missing\n id is a dead control to a screen reader. -->\n <label\n class=\"mjo-ol-term__label\"\n [attr.for]=\"EditMode && !TermStartIsDictated(line) ? 'mjo-ol-term-' + line.ID : null\">\n Term start\n </label>\n <!-- A renewal of LIVE coverage has no choice to offer: the term begins the day\n after the current one ends. Read-only rather than editable-and-ignored. -->\n @if (TermStartIsDictated(line)) {\n <span class=\"mjo-ol-term__value is-dictated\">{{ ContinuationStartValue(line) }}</span>\n } @else if (EditMode) {\n <input\n type=\"date\"\n class=\"mjo-ol-term__input\"\n [class.is-default]=\"TermStartFollowsOrderDate(line)\"\n [id]=\"'mjo-ol-term-' + line.ID\"\n [value]=\"TermStartValue(line)\"\n (change)=\"SetTermStart(line, $event)\">\n <!-- Offered only when there is something to reset. A button that clears a\n value the line never stated does nothing and invites the reader to\n wonder what it did. -->\n @if (!TermStartFollowsOrderDate(line)) {\n <button\n type=\"button\"\n class=\"mjo-ol-term__reset\"\n (click)=\"ResetTermStart(line)\">\n Reset to order date\n </button>\n }\n } @else {\n <span class=\"mjo-ol-term__value\">{{ TermStartValue(line) }}</span>\n }\n <span class=\"mjo-ol-term__hint\">\n @if (TermStartIsDictated(line)) {\n Continuing existing coverage, so the term begins the day after the current\n one ends \u2014 not something this line can set.\n } @else if (TermStartFollowsOrderDate(line)) {\n Following the order date. The subscription type's rules may still adjust\n the actual start.\n } @else {\n Stated on this line, so a later change to the order date leaves it alone.\n }\n </span>\n </div>\n\n <!-- The customer already holds this product (golive #299): ask whether this line\n extends that subscription or starts another, instead of letting the type's\n rule decide silently at confirm. -->\n @if (ExistingHoldingFor(line); as holding) {\n <div class=\"mjo-ol-holding\" role=\"group\" [attr.aria-label]=\"'Existing subscription ' + holding.SubscriptionNumber\">\n <span class=\"mjo-ol-holding__text\">\n The customer already holds {{ holding.SubscriptionNumber }} for this product\n @if (HoldingCoverageEnd(holding)) { (covered through {{ HoldingCoverageEnd(holding) }}) }.\n </span>\n @if (CanEditServicePeriod()) {\n <div class=\"mjo-ol-holding__choices\">\n <button\n type=\"button\"\n class=\"mjo-ol-holding__choice\"\n [class.is-selected]=\"line.SubscriptionAction === 'ExtendExisting'\"\n [attr.aria-pressed]=\"line.SubscriptionAction === 'ExtendExisting'\"\n (click)=\"SetSubscriptionAction(line, 'ExtendExisting')\">\n Add as next term\n @if (HoldingContinuationStart(holding)) { (starts {{ HoldingContinuationStart(holding) }}) }\n </button>\n <button\n type=\"button\"\n class=\"mjo-ol-holding__choice\"\n [class.is-selected]=\"line.SubscriptionAction === 'CreateNew'\"\n [attr.aria-pressed]=\"line.SubscriptionAction === 'CreateNew'\"\n (click)=\"SetSubscriptionAction(line, 'CreateNew')\">\n New subscription (keeps this line's dates)\n </button>\n </div>\n }\n <span class=\"mjo-ol-term__hint\" [class.is-error]=\"!line.SubscriptionAction\">\n @if (line.SubscriptionAction === 'CreateNew') {\n Confirm starts a separate subscription on this line's service period.\n } @else if (line.SubscriptionAction === 'ExtendExisting') {\n Confirm adds a term to {{ holding.SubscriptionNumber }}, starting the day after its coverage ends.\n } @else {\n Not chosen. The subscription type's rule will decide at confirm, and it may move this\n line's dates.\n }\n </span>\n </div>\n }\n }\n\n <!--\n SERVICE PERIOD \u2014 deferred lines that neither an event nor a subscription dates.\n The recognition type earns against this window, so the order cannot be confirmed\n without it.\n -->\n @if (NeedsStatedServicePeriod(line)) {\n <div class=\"mjo-ol-term\">\n <label\n class=\"mjo-ol-term__label\"\n [attr.for]=\"CanEditServicePeriod() ? 'mjo-ol-sp-start-' + line.ID : null\">\n Service period\n </label>\n @if (CanEditServicePeriod()) {\n <input\n type=\"date\"\n class=\"mjo-ol-term__input\"\n aria-label=\"Service period start\"\n [id]=\"'mjo-ol-sp-start-' + line.ID\"\n [value]=\"ServicePeriodValue(line, 'Start')\"\n (change)=\"SetServicePeriod(line, 'Start', $event)\">\n <span class=\"mjo-ol-term__label\" aria-hidden=\"true\">to</span>\n <input\n type=\"date\"\n class=\"mjo-ol-term__input\"\n aria-label=\"Service period end\"\n [value]=\"ServicePeriodValue(line, 'End')\"\n (change)=\"SetServicePeriod(line, 'End', $event)\">\n } @else {\n <span class=\"mjo-ol-term__value\">\n {{ ServicePeriodValue(line, 'Start') || '\u2014' }} to {{ ServicePeriodValue(line, 'End') || '\u2014' }}\n </span>\n }\n @if (ServicePeriodBackwards(line)) {\n <span class=\"mjo-ol-term__hint is-error\" role=\"alert\">\n End date must be on or after the start date.\n </span>\n } @else if (ServicePeriodMissing(line)) {\n <span class=\"mjo-ol-term__hint\">\n Needed to confirm: revenue on this line is recognized against these dates.\n </span>\n }\n </div>\n }\n\n @if (ExtensionFor(line); as ext) {\n <div class=\"mjo-ol-ext\" [class.is-open]=\"IsExtensionOpen(line)\">\n <button\n type=\"button\"\n class=\"mjo-ol-ext__toggle\"\n (click)=\"ToggleExtension(line)\"\n [attr.aria-expanded]=\"IsExtensionOpen(line)\"\n [attr.aria-controls]=\"'mjo-ol-ext-' + line.ID\">\n <i class=\"fa-solid fa-chevron-right mjo-ol-ext__chev\" aria-hidden=\"true\"></i>\n <span class=\"mjo-ol-ext__label\">{{ ExtensionLabel(line) }}</span>\n @if (!IsExtensionOpen(line)) {\n <span class=\"mjo-ol-ext__hint\">{{ ExtensionHint(line) }}</span>\n }\n </button>\n <div\n class=\"mjo-ol-ext__body\"\n [id]=\"'mjo-ol-ext-' + line.ID\"\n [attr.inert]=\"IsExtensionOpen(line) ? null : ''\"\n [attr.aria-hidden]=\"!IsExtensionOpen(line)\">\n <div class=\"mjo-ol-ext__clip\">\n <mj-entity-form-host\n [Record]=\"ext\"\n [EditMode]=\"EditMode\"\n [Config]=\"ExtensionFormConfigFor(line)\"\n (FormCreated)=\"OnExtensionFormCreated($event)\"\n (Navigate)=\"OnExtensionNavigate($event)\">\n </mj-entity-form-host>\n </div>\n </div>\n </div>\n }\n </div>\n } @empty {\n <div class=\"mjo-ol-empty\">\n <i class=\"fa-solid fa-cart-plus\" aria-hidden=\"true\"></i>\n <div class=\"mjo-ol-empty__title\">Nothing on this order yet</div>\n <div>Search the catalog to add the first line.</div>\n </div>\n }\n\n @if (EditMode) {\n <div class=\"mj-typeahead mjo-ol-picker\" #pickerHost>\n <div class=\"mjo-search\">\n <i class=\"fa-solid fa-plus\" aria-hidden=\"true\"></i>\n <input\n [(ngModel)]=\"ProductQuery\"\n (ngModelChange)=\"OnProductQueryChange()\"\n (focus)=\"OpenPicker()\"\n (blur)=\"ClosePickerSoon()\"\n (keydown)=\"OnPickerKey($event)\"\n placeholder=\"Add product \u2014 type a name or SKU\u2026\"\n autocomplete=\"off\"\n role=\"combobox\"\n aria-label=\"Add a product\"\n [attr.aria-expanded]=\"PickerOpen\">\n </div>\n\n @if (PickerOpen) {\n <div class=\"mj-typeahead-list is-open\" [class.is-up]=\"PickerOpensUp\" role=\"listbox\">\n @for (product of PickerResults; track product.ID; let i = $index) {\n <button\n type=\"button\"\n class=\"mj-typeahead-item mjo-ol-pick\"\n [class.is-cursor]=\"i === PickerCursor\"\n role=\"option\"\n [attr.aria-selected]=\"i === PickerCursor\"\n (mousedown)=\"AddProduct(product)\">\n <span class=\"mjo-ol-pick__body\">\n <span class=\"name\">{{ product.Name }}</span>\n <span class=\"mjo-ol-pick__meta\">\n <span class=\"sub\">{{ product.SKU }} \u00B7 {{ product.TypeName }}</span>\n @if (product.CompanyName) {\n <span\n class=\"mjo-ol-pick__company\"\n [class.is-foreign]=\"IsForeignCompany(product)\"\n [attr.title]=\"IsForeignCompany(product)\n ? 'Sold by ' + product.CompanyName + ', not this order\\'s company'\n : product.CompanyName\">\n <i class=\"fa-solid fa-building\" aria-hidden=\"true\"></i>\n {{ product.CompanyName }}\n </span>\n }\n </span>\n </span>\n <span class=\"end\">\n <span class=\"mjo-ol-pick__price\">{{ product.ListPrice | mjoMoney }}</span>\n <span class=\"sub\">{{ product.Taxable ? 'taxable' : 'untaxable' }}</span>\n </span>\n </button>\n } @empty {\n <div class=\"mj-typeahead-item\">\n <span class=\"muted small\">\n @if (CatalogError) { {{ CatalogError }} }\n @else if (Catalog.length === 0) { Loading catalog\u2026 }\n @else { No product matches that. }\n </span>\n </div>\n }\n </div>\n }\n </div>\n }\n\n <!-- Line details. Rendered once and handed whichever line is open, rather than one per card:\n the panel is modal, so a second instance could never be visible. -->\n <mjo-order-line-details-panel\n [Line]=\"DetailsLine\"\n [ProductName]=\"DetailsLine ? (ProductFor(DetailsLine)?.Name ?? '') : ''\"\n [ProductSKU]=\"DetailsLine ? (ProductFor(DetailsLine)?.SKU ?? '') : ''\"\n [ProductType]=\"DetailsLine ? (ProductFor(DetailsLine)?.TypeName ?? '') : ''\"\n [Dimensions]=\"DimensionCatalog\"\n [EditMode]=\"EditMode\"\n (Closed)=\"CloseDetails()\">\n </mjo-order-line-details-panel>\n</div>\n", styles: [":host { display: block; }\n\n.mjo-ol {\n display: flex;\n flex-direction: column;\n gap: var(--mj-space-2);\n}\n\n.mjo-ol-card {\n border: 1px solid var(--mj-border-default);\n background: var(--mj-bg-surface);\n border-radius: var(--mj-radius-md);\n padding: var(--mj-space-3);\n}\n\n.mjo-ol-card:has(.mjo-ol-ext.is-open) {\n padding-bottom: var(--mj-space-1);\n}\n\n.mjo-ol-card__top {\n display: flex;\n align-items: flex-start;\n gap: var(--mj-space-3);\n}\n\n.mjo-ol-card__id { flex: 1; min-width: 0; }\n\n.mjo-ol-card__name {\n display: inline;\n padding: 0;\n border: 0;\n background: transparent;\n font: inherit;\n font-size: var(--mj-text-sm);\n font-weight: var(--mj-font-semibold);\n color: var(--mj-text-link);\n text-align: left;\n cursor: pointer;\n text-decoration: none;\n}\n\n.mjo-ol-card__name:hover { text-decoration: underline; }\n\n.mjo-ol-card__meta {\n font-size: var(--mj-text-xs);\n color: var(--mj-text-muted);\n margin-top: 2px;\n}\n\n.mjo-ol-qty {\n display: inline-flex;\n align-items: center;\n border: 1px solid var(--mj-border-strong);\n border-radius: var(--mj-radius-md);\n overflow: hidden;\n background: var(--mj-bg-surface);\n flex: none;\n}\n\n.mjo-ol-qty button {\n border: 0;\n background: transparent;\n cursor: pointer;\n color: var(--mj-text-secondary);\n width: 26px;\n height: 28px;\n font-size: 11px;\n}\n\n.mjo-ol-qty button:hover:not(:disabled) {\n background: var(--mj-bg-surface-hover);\n color: var(--mj-text-primary);\n}\n\n.mjo-ol-qty button:disabled {\n cursor: default;\n color: var(--mj-text-disabled);\n}\n\n.mjo-ol-qty input {\n border: 0;\n outline: 0;\n background: transparent;\n width: 46px;\n text-align: center;\n font: inherit;\n font-variant-numeric: tabular-nums;\n color: inherit;\n}\n\n.mjo-ol-qty.is-locked {\n border-color: var(--mj-border-default);\n background: transparent;\n}\n\n.mjo-ol-qty__value {\n min-width: 46px;\n padding: 0 10px;\n height: 28px;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n font-variant-numeric: tabular-nums;\n}\n\n.mjo-ol-card__price {\n flex: none;\n min-width: 108px;\n display: flex;\n flex-direction: column;\n align-items: center;\n}\n\n.mjo-ol-card__price-row {\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 2px;\n height: 28px;\n}\n\n.mjo-ol-price__pencil {\n flex: none;\n color: var(--mj-text-muted);\n}\n\n.mjo-ol-price__pencil:hover {\n color: var(--mj-text-link);\n background: var(--mj-bg-surface-hover);\n}\n\n.mjo-ol-override {\n display: flex;\n flex-direction: column;\n gap: var(--mj-space-2);\n margin-top: var(--mj-space-2);\n padding: var(--mj-space-2);\n border: 1px solid var(--mj-border-default);\n border-radius: var(--mj-radius-md);\n background: var(--mj-bg-surface-subtle, var(--mj-bg-surface));\n}\n\n.mjo-ol-override__req {\n font-style: normal;\n color: var(--mj-status-danger-text, #b42318);\n margin-left: 2px;\n}\n\n.mjo-ol-override__actions {\n display: flex;\n gap: var(--mj-space-2);\n justify-content: flex-end;\n}\n\n.mjo-ol-override__done,\n.mjo-ol-override__reset {\n border: 0;\n background: transparent;\n cursor: pointer;\n font: inherit;\n font-size: var(--mj-text-xs);\n font-weight: var(--mj-font-semibold);\n padding: 4px 8px;\n border-radius: var(--mj-radius-sm);\n}\n\n.mjo-ol-override__done {\n color: var(--mj-text-link);\n}\n\n.mjo-ol-override__reset {\n color: var(--mj-text-muted);\n}\n\n.mjo-ol-override__done:hover,\n.mjo-ol-override__reset:hover {\n background: var(--mj-bg-surface-hover);\n}\n\n.mjo-ol-override__done:disabled {\n color: var(--mj-text-muted);\n cursor: not-allowed;\n background: transparent;\n}\n\n.mjo-ol-card__amt {\n font-variant-numeric: tabular-nums;\n font-weight: var(--mj-font-semibold);\n font-size: var(--mj-text-sm);\n line-height: 28px;\n}\n\n.mjo-ol-overpill {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n margin-top: 4px;\n padding: 1px 8px;\n border-radius: 999px;\n font-size: 10px;\n font-weight: 600;\n letter-spacing: 0.02em;\n color: var(--mj-status-warning-text);\n background: color-mix(in srgb, var(--mj-status-warning-text) 16%, transparent);\n}\n\n.mjo-ol-card__err {\n font-size: var(--mj-text-xs);\n color: var(--mj-status-error-text);\n margin-top: 2px;\n}\n\n.mjo-ol-card__tot {\n flex: none;\n min-width: 104px;\n height: 28px;\n display: flex;\n align-items: center;\n justify-content: flex-end;\n text-align: right;\n font-variant-numeric: tabular-nums;\n font-weight: var(--mj-font-semibold);\n font-size: var(--mj-text-sm);\n line-height: 28px;\n}\n\n.mjo-ol-iconbtn {\n border: 0;\n background: transparent;\n color: var(--mj-text-muted);\n cursor: pointer;\n width: 28px;\n height: 28px;\n border-radius: var(--mj-radius-sm);\n}\n\n.mjo-ol-iconbtn:hover {\n background: var(--mj-bg-surface-hover);\n color: var(--mj-status-error);\n}\n\n.mjo-ol-card__conseq {\n display: flex;\n gap: 6px;\n flex-wrap: wrap;\n margin-top: var(--mj-space-2);\n}\n\n/* Term start \u2014 subscription lines only. One row that wraps, so the hint drops below the field on a\n narrow card rather than squeezing the date input. */\n.mjo-ol-term {\n display: flex;\n align-items: center;\n gap: var(--mj-space-2);\n flex-wrap: wrap;\n margin-top: var(--mj-space-2);\n}\n\n.mjo-ol-term__label {\n font-size: var(--mj-text-xs);\n color: var(--mj-text-muted);\n}\n\n.mjo-ol-term__input {\n height: 28px;\n padding: 0 var(--mj-space-2);\n border: 1px solid var(--mj-border-strong);\n border-radius: var(--mj-radius-md);\n background: var(--mj-bg-surface);\n color: var(--mj-text-primary);\n font: inherit;\n font-size: var(--mj-text-sm);\n}\n\n/* A DEFAULT reads quieter than a stated value \u2014 the same distinction the order header draws\n between a date somebody chose and one that fell out of a rule. */\n.mjo-ol-term__input.is-default {\n border-color: var(--mj-border-default);\n color: var(--mj-text-secondary);\n}\n\n.mjo-ol-term__value {\n font-size: var(--mj-text-sm);\n color: var(--mj-text-primary);\n font-variant-numeric: tabular-nums;\n}\n\n/* A dictated date is a FACT, not a disabled input: shown in the read-mode weight in edit mode too,\n so nothing on the card suggests a control that has been switched off. */\n.mjo-ol-term__value.is-dictated {\n color: var(--mj-text-secondary);\n}\n\n.mjo-ol-term__reset {\n border: 0;\n background: transparent;\n padding: 0;\n color: var(--mj-text-link);\n font-size: var(--mj-text-xs);\n cursor: pointer;\n}\n\n.mjo-ol-term__reset:hover {\n text-decoration: underline;\n}\n\n.mjo-ol-term__hint {\n font-size: var(--mj-text-xs);\n color: var(--mj-text-muted);\n}\n\n.mjo-ol-term__hint.is-error {\n color: var(--mj-status-error-text);\n}\n\n.mjo-ol-card__why {\n margin-top: 6px;\n font-size: var(--mj-text-xs);\n color: var(--mj-text-secondary);\n line-height: 1.35;\n}\n\n.mjo-ol-empty {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n gap: var(--mj-space-1);\n padding: var(--mj-space-4) var(--mj-space-3);\n color: var(--mj-text-muted);\n font-size: var(--mj-text-sm);\n text-align: center;\n}\n\n.mjo-ol-empty i {\n font-size: var(--mj-text-2xl);\n color: var(--mj-brand-primary);\n}\n\n.mjo-ol-empty__title {\n font-weight: var(--mj-font-semibold);\n color: var(--mj-text-primary);\n}\n\n.mjo-ol-picker {\n position: relative;\n z-index: 20;\n}\n\n.mjo-ol-picker:has(.mj-typeahead-list.is-open) {\n z-index: 40;\n}\n\n.mjo-search {\n display: flex;\n align-items: center;\n gap: var(--mj-space-2);\n background: var(--mj-bg-surface);\n border: 1px solid var(--mj-border-strong);\n border-radius: var(--mj-radius-md);\n padding: 8px 10px;\n}\n\n.mjo-search i { color: var(--mj-text-muted); font-size: 12px; }\n\n.mjo-search input {\n border: 0;\n outline: 0;\n background: transparent;\n font: inherit;\n font-size: var(--mj-text-sm);\n color: inherit;\n width: 100%;\n}\n\n.mj-typeahead-list {\n display: none;\n position: absolute;\n left: 0;\n right: 0;\n top: calc(100% + 4px);\n max-height: 240px;\n overflow: auto;\n background: var(--mj-bg-surface-elevated);\n border: 1px solid var(--mj-border-default);\n border-radius: var(--mj-radius-md);\n box-shadow: var(--mj-shadow-md, 0 8px 24px rgba(0, 0, 0, 0.18));\n z-index: 30;\n}\n\n.mj-typeahead-list.is-open { display: block; }\n\n.mj-typeahead-list.is-up {\n top: auto;\n bottom: calc(100% + 4px);\n}\n\n.mj-typeahead-item {\n display: flex;\n align-items: center;\n gap: var(--mj-space-3);\n width: 100%;\n padding: 8px 12px;\n border: 0;\n border-bottom: 1px solid var(--mj-border-subtle);\n background: transparent;\n color: inherit;\n text-align: left;\n cursor: pointer;\n font: inherit;\n}\n\n.mj-typeahead-item:last-child { border-bottom: 0; }\n\n.mj-typeahead-item:hover,\n.mj-typeahead-item.is-cursor {\n background: var(--mj-bg-surface-hover);\n}\n\n.mjo-ol-pick__body {\n display: flex;\n flex-direction: column;\n gap: 1px;\n min-width: 0;\n}\n\n.mjo-ol-pick .name { font-size: 13px; font-weight: var(--mj-font-semibold); }\n.mjo-ol-pick .sub { font-size: 11.5px; color: var(--mj-text-muted); }\n\n/*\n COMPANY IS ITS OWN ELEMENT, not the third item in a muted \"SKU \u00B7 type \u00B7 company\" run.\n Two similarly named products from different companies are exactly what this picker has to let\n someone tell apart before they pick, and a company set in the same muted grey as everything\n else, in third position, is not something anyone reads at speed.\n*/\n.mjo-ol-pick__meta {\n display: flex;\n align-items: center;\n gap: var(--mj-space-2);\n min-width: 0;\n}\n\n.mjo-ol-pick__company {\n display: inline-flex;\n align-items: center;\n gap: 4px;\n flex: 0 0 auto;\n font-size: 11px;\n line-height: 1.2;\n padding: 2px 6px;\n border: 1px solid var(--mj-border-subtle);\n border-radius: var(--mj-radius-sm);\n background: var(--mj-bg-surface-sunken);\n color: var(--mj-text-secondary);\n}\n\n.mjo-ol-pick__company i { font-size: 9.5px; color: var(--mj-text-muted); }\n\n/* Another company's product \u2014 offered on purpose (BCC sells SoundPost), so it is marked, not hidden. */\n.mjo-ol-pick__company.is-foreign i { color: var(--mj-status-info); }\n.mjo-ol-pick__company.is-foreign {\n color: var(--mj-text-primary);\n border-color: var(--mj-border-default);\n}\n.mjo-ol-pick .end {\n margin-left: auto;\n text-align: right;\n display: flex;\n flex-direction: column;\n gap: 1px;\n flex: 0 0 auto;\n}\n.mjo-ol-pick__price {\n font-variant-numeric: tabular-nums;\n font-weight: var(--mj-font-semibold);\n}\n\n.mjo-ol-ext-err {\n font-size: var(--mj-text-xs);\n color: var(--mj-status-error-text);\n}\n\n.mjo-ol-ext {\n margin-top: var(--mj-space-2);\n padding-top: var(--mj-space-1);\n border-top: 1px dashed var(--mj-border-subtle);\n}\n\n.mjo-ol-ext__toggle {\n display: flex;\n align-items: center;\n gap: var(--mj-space-2);\n width: 100%;\n padding: var(--mj-space-1) 0;\n border: 0;\n background: transparent;\n color: inherit;\n font: inherit;\n text-align: left;\n cursor: pointer;\n border-radius: var(--mj-radius-sm);\n}\n\n.mjo-ol-ext__toggle:hover {\n color: var(--mj-text-primary);\n}\n\n.mjo-ol-ext__toggle:focus-visible {\n outline: 2px solid var(--mj-border-focus);\n outline-offset: 2px;\n}\n\n.mjo-ol-ext__chev {\n flex: none;\n width: 12px;\n font-size: 10px;\n color: var(--mj-text-muted);\n transition: transform 160ms ease;\n}\n\n.mjo-ol-ext.is-open .mjo-ol-ext__chev {\n transform: rotate(90deg);\n}\n\n.mjo-ol-ext__label {\n font-size: var(--mj-text-xs);\n font-weight: var(--mj-font-semibold);\n color: var(--mj-text-secondary);\n letter-spacing: 0.01em;\n}\n\n.mjo-ol-ext__hint {\n margin-left: auto;\n font-size: var(--mj-text-xs);\n color: var(--mj-text-muted);\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n.mjo-ol-ext__body {\n display: grid;\n grid-template-rows: 0fr;\n transition: grid-template-rows 180ms ease;\n}\n\n.mjo-ol-ext.is-open .mjo-ol-ext__body {\n grid-template-rows: 1fr;\n}\n\n.mjo-ol-ext__clip {\n overflow: hidden;\n min-height: 0;\n}\n\n/* Flatten the embedded extension form so its fields sit in the line card. */\n.mjo-ol-ext ::ng-deep mj-record-form-container,\n.mjo-ol-ext ::ng-deep .mj-record-form-container,\n.mjo-ol-ext ::ng-deep .mj-forms-container {\n display: block;\n padding: 0;\n margin: 0;\n border: 0;\n background: transparent;\n box-shadow: none;\n}\n\n.mjo-ol-ext ::ng-deep .mj-forms-toolbar,\n.mjo-ol-ext ::ng-deep mj-form-toolbar {\n display: none;\n}\n\n.mjo-ol-ext ::ng-deep .mj-forms-panel {\n border: 0;\n background: transparent;\n box-shadow: none;\n margin: 0;\n padding: 0;\n}\n\n.mjo-ol-ext ::ng-deep mj-collapsible-panel + mj-collapsible-panel .mj-forms-panel {\n margin-top: calc(-1 * var(--mj-space-1));\n}\n\n.mjo-ol-ext ::ng-deep .mj-forms-panel-header {\n display: none;\n}\n\n.mjo-ol-ext ::ng-deep .mj-forms-panel-body,\n.mjo-ol-ext ::ng-deep .mj-forms-panel-content {\n max-height: none;\n overflow: visible;\n padding: 0;\n margin: 0;\n}\n\n.mjo-ol-ext ::ng-deep mj-form-field:last-child,\n.mjo-ol-ext ::ng-deep .mj-form-field:last-child {\n margin-bottom: 0;\n}\n\n@media (max-width: 720px) {\n .mjo-ol-card__top { flex-wrap: wrap; }\n .mjo-ol-card__price, .mjo-ol-card__tot { width: auto; }\n}\n\n/* \u2500\u2500 DISCOUNT \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n Its own bordered block inside the price editor, because a discount and a price\n override are different economics and the report that produced this control said\n so: presenting them as one thing is what made the discount concept unreachable.\n The rule above the block is the separator \u2014 the two never read as one form. */\n.mjo-ol-discount {\n display: flex;\n flex-direction: column;\n gap: var(--mj-space-2);\n padding-top: var(--mj-space-2);\n border-top: 1px solid var(--mj-border-default);\n}\n\n.mjo-ol-discount__head {\n display: flex;\n align-items: baseline;\n justify-content: space-between;\n gap: var(--mj-space-2);\n flex-wrap: wrap;\n}\n\n.mjo-ol-discount__title {\n font-size: var(--mj-text-xs);\n font-weight: var(--mj-font-semibold);\n color: var(--mj-text-primary);\n}\n\n.mjo-ol-discount__cap {\n font-size: var(--mj-text-xs);\n color: var(--mj-text-muted);\n}\n\n.mjo-ol-discount__row {\n display: flex;\n align-items: center;\n gap: var(--mj-space-2);\n flex-wrap: wrap;\n}\n\n/* Two buttons that behave as one control, so they are drawn as one. */\n.mjo-ol-discount__mode {\n display: inline-flex;\n border: 1px solid var(--mj-border-strong);\n border-radius: var(--mj-radius-sm);\n overflow: hidden;\n}\n\n.mjo-ol-discount__mode button {\n border: 0;\n background: var(--mj-bg-surface);\n color: var(--mj-text-muted);\n font: inherit;\n font-size: var(--mj-text-xs);\n padding: 0 10px;\n height: 28px;\n cursor: pointer;\n}\n\n.mjo-ol-discount__mode button + button {\n border-left: 1px solid var(--mj-border-strong);\n}\n\n.mjo-ol-discount__mode button.is-on {\n background: var(--mj-bg-surface-hover);\n color: var(--mj-text-primary);\n font-weight: var(--mj-font-semibold);\n}\n\n.mjo-ol-discount__val {\n width: 96px;\n height: 28px;\n box-sizing: border-box;\n padding: 0 8px;\n border: 1px solid var(--mj-border-strong);\n border-radius: var(--mj-radius-sm);\n background: var(--mj-bg-surface);\n color: inherit;\n font: inherit;\n font-size: var(--mj-text-xs);\n font-variant-numeric: tabular-nums;\n text-align: right;\n}\n\n.mjo-ol-discount__calc {\n font-size: var(--mj-text-xs);\n color: var(--mj-text-muted);\n font-variant-numeric: tabular-nums;\n}\n\n.mjo-ol-discount__reason span {\n display: block;\n font-size: var(--mj-text-xs);\n color: var(--mj-text-muted);\n margin-bottom: 4px;\n}\n\n.mjo-ol-discount__reason textarea {\n display: block;\n width: 100%;\n box-sizing: border-box;\n resize: vertical;\n min-height: 48px;\n padding: 6px 8px;\n border: 1px solid var(--mj-border-strong);\n border-radius: var(--mj-radius-sm);\n background: var(--mj-bg-surface);\n color: inherit;\n font: inherit;\n font-size: var(--mj-text-xs);\n}\n\n.mjo-ol-discount__reason.is-required textarea {\n border-color: var(--mj-status-danger-text, #b42318);\n}\n\n.mjo-ol-discount__err {\n font-size: var(--mj-text-xs);\n color: var(--mj-status-error-text);\n}\n\n.mjo-ol-discount__note {\n font-size: var(--mj-text-xs);\n color: var(--mj-text-muted);\n}\n\n.mjo-ol-discount__staged {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: var(--mj-space-2);\n font-size: var(--mj-text-xs);\n color: var(--mj-text-muted);\n}\n\n.mjo-ol-discount__clear {\n border: 1px solid var(--mj-border-strong);\n border-radius: var(--mj-radius-sm);\n background: var(--mj-bg-surface);\n color: inherit;\n font: inherit;\n font-size: var(--mj-text-xs);\n height: 24px;\n padding: 0 10px;\n cursor: pointer;\n}\n\n/* The discount's own badge on the line card. Deliberately NOT the override pill's\n warning colour: giving away value on purpose is not a caution. */\n.mjo-ol-discpill {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n margin-top: 4px;\n padding: 1px 8px;\n border-radius: 999px;\n font-size: 10px;\n font-weight: 600;\n letter-spacing: 0.02em;\n font-variant-numeric: tabular-nums;\n color: var(--mj-status-success-text);\n background: color-mix(in srgb, var(--mj-status-success-text) 16%, transparent);\n}\n\n/* The customer already holds this product (golive #299). */\n.mjo-ol-holding {\n display: flex;\n flex-direction: column;\n gap: var(--mj-space-2);\n margin-top: var(--mj-space-2);\n padding: var(--mj-space-2) var(--mj-space-3);\n border: 1px solid var(--mj-status-warning-border);\n border-radius: var(--mj-radius-md);\n background: var(--mj-status-warning-bg);\n font-size: var(--mj-text-sm);\n color: var(--mj-text-primary);\n}\n\n.mjo-ol-holding__choices {\n display: flex;\n flex-wrap: wrap;\n gap: var(--mj-space-2);\n}\n\n.mjo-ol-holding__choice {\n padding: 4px 10px;\n border: 1px solid var(--mj-border-default);\n border-radius: var(--mj-radius-full);\n background: var(--mj-bg-surface);\n color: var(--mj-text-primary);\n font: inherit;\n cursor: pointer;\n}\n\n.mjo-ol-holding__choice.is-selected {\n border-color: var(--mj-brand-primary);\n color: var(--mj-brand-primary);\n font-weight: var(--mj-font-semibold);\n}\n"] }]
2091
+ ], template: "<div class=\"mjo-ol\">\n @if (CoverageCheckError) {\n <div class=\"mjo-ol-overlap-err\" role=\"status\">{{ CoverageCheckError }}</div>\n }\n @for (line of Lines; track line.ID) {\n <div class=\"mjo-ol-card\">\n <div class=\"mjo-ol-card__top\">\n <div class=\"mjo-ol-card__id\">\n <button type=\"button\" class=\"mjo-ol-card__name\" (click)=\"OpenProduct(line, $event)\">\n {{ ProductFor(line)?.Name ?? 'Product' }}\n </button>\n <div class=\"mjo-ol-card__meta\">\n {{ ProductFor(line)?.SKU }}\n @if (ProductFor(line)?.TypeName) {\n \u00B7 {{ ProductFor(line)?.TypeName }}\n }\n </div>\n </div>\n\n <div class=\"mjo-ol-qty\" [class.is-locked]=\"!EditMode || QuantityCappedToOne(line)\">\n @if (EditMode && !QuantityCappedToOne(line)) {\n <button type=\"button\" (click)=\"Bump(line, -1)\" aria-label=\"Decrease quantity\">\u2212</button>\n <input\n [value]=\"line.Quantity\"\n (change)=\"SetQuantity(line, $event)\"\n aria-label=\"Quantity\">\n <button type=\"button\" (click)=\"Bump(line, 1)\" [disabled]=\"QuantityAtMax(line)\" aria-label=\"Increase quantity\">+</button>\n } @else {\n <span class=\"mjo-ol-qty__value\">{{ line.Quantity }}</span>\n }\n </div>\n\n <div class=\"mjo-ol-card__price\">\n <div class=\"mjo-ol-card__price-row\">\n <div class=\"mjo-ol-card__amt\">{{ DisplayUnit(line) | mjoMoney }}</div>\n <!-- The pencil opens the PRICE editor, the DISCOUNT editor, or both \u2014 a user\n may hold one authority without the other, and an order that can be\n discounted but not re-priced still needs a way in. -->\n @if (CanOverride || CanDiscount) {\n <button\n type=\"button\"\n class=\"mjo-ol-iconbtn mjo-ol-price__pencil\"\n (click)=\"ToggleOverrideEditor(line)\"\n [attr.aria-expanded]=\"IsOverrideEditorOpen(line)\"\n [attr.aria-label]=\"CanOverride ? (IsOverridden(line) ? 'Edit price override' : 'Override price or discount line') : 'Discount line'\">\n <i class=\"fa-solid fa-pencil\" aria-hidden=\"true\"></i>\n </button>\n }\n </div>\n @if (IsOverridden(line)) {\n <span class=\"mjo-ol-overpill\">overridden</span>\n } @else {\n <mjo-price-source-badge\n [Source]=\"PricedLine(line)?.PriceSource ?? null\"\n [Settled]=\"!Pricing.Loading\"\n [Overridden]=\"false\" />\n }\n <!-- A DISCOUNT IS NOT AN OVERRIDE, and the badge says so in its own words: the\n list price held and this much was given away. -->\n @if (HasDiscount(line)) {\n <span class=\"mjo-ol-discpill\" title=\"Discount on this line\">\u2212{{ AppliedDiscount(line) | mjoMoney }}</span>\n }\n @if (PricedLine(line)?.Error; as why) {\n <div class=\"mjo-ol-card__err\">{{ why }}</div>\n }\n </div>\n\n <div class=\"mjo-ol-card__tot\">{{ PricedLine(line)?.NetAmount | mjoMoney }}</div>\n\n <!-- Details, on every line and not just editable ones: a booked line's dimensions are\n what its journal entry carries, which is exactly when someone wants to look. -->\n <button\n type=\"button\"\n class=\"mjo-ol-iconbtn\"\n (click)=\"OpenDetails(line, $event)\"\n [attr.title]=\"DimensionSummary(line)\"\n [attr.aria-label]=\"'Details for ' + (ProductFor(line)?.Name ?? 'line')\">\n <i class=\"fa-solid fa-sliders\" aria-hidden=\"true\"></i>\n </button>\n\n @if (EditMode) {\n <button\n type=\"button\"\n class=\"mjo-ol-iconbtn\"\n (click)=\"Remove(line)\"\n [attr.aria-label]=\"'Remove ' + (ProductFor(line)?.Name ?? 'line')\">\n <i class=\"fa-regular fa-trash-can\" aria-hidden=\"true\"></i>\n </button>\n }\n </div>\n\n @if (IsOverrideEditorOpen(line)) {\n <div class=\"mjo-ol-override\" role=\"region\" [attr.aria-label]=\"'Price and discount for ' + (ProductFor(line)?.Name ?? 'line')\">\n @if (CanOverride) {\n <mjo-line-price-picker\n [Line]=\"line\"\n [OverrideKind]=\"OverrideKind\"\n [Applicable]=\"ApplicableFor(line)\"\n [EngineDefault]=\"PricedLine(line)?.Default\"\n [DefaultUnit]=\"DefaultUnit(line)\"\n [PriceSource]=\"PricedLine(line)?.PriceSource ?? null\"\n [PricedUnit]=\"PricedLine(line)?.UnitPrice ?? null\"\n (PriceChanged)=\"OnLinePriceChanged()\"></mjo-line-price-picker>\n }\n\n <!--\n DISCOUNT \u2014 deliberately its own block, below the price picker and labelled\n apart from it (golive #252). An override restates the price; a discount says\n the list price held and value was given away, and only the second reaches the\n Sales Discounts leg of the booking entry. Presenting them as one control is\n what left the whole discount concept unreachable from the product.\n -->\n @if (CanDiscount) {\n <div class=\"mjo-ol-discount\" role=\"group\" [attr.aria-label]=\"'Discount for ' + (ProductFor(line)?.Name ?? 'line')\">\n <div class=\"mjo-ol-discount__head\">\n <span class=\"mjo-ol-discount__title\">Discount</span>\n <span class=\"mjo-ol-discount__cap\">your authority: {{ DiscountCapLabel }}</span>\n </div>\n @if (CanDiscountLine(line)) {\n <div class=\"mjo-ol-discount__row\">\n <div class=\"mjo-ol-discount__mode\" role=\"radiogroup\" aria-label=\"Discount expressed as\">\n <button\n type=\"button\"\n role=\"radio\"\n [attr.aria-checked]=\"DiscountDraft(line).Mode === 'percent'\"\n [class.is-on]=\"DiscountDraft(line).Mode === 'percent'\"\n (click)=\"SetDiscountMode(line, 'percent')\">%</button>\n <button\n type=\"button\"\n role=\"radio\"\n [attr.aria-checked]=\"DiscountDraft(line).Mode === 'amount'\"\n [class.is-on]=\"DiscountDraft(line).Mode === 'amount'\"\n (click)=\"SetDiscountMode(line, 'amount')\">Amount</button>\n </div>\n <input\n class=\"mjo-ol-discount__val\"\n type=\"number\"\n step=\"0.01\"\n min=\"0\"\n [value]=\"DiscountDraft(line).Value\"\n (input)=\"SetDiscountValue(line, $event)\"\n [attr.placeholder]=\"DiscountDraft(line).Mode === 'percent' ? '0' : '0.00'\"\n [attr.aria-label]=\"DiscountDraft(line).Mode === 'percent' ? 'Discount percent' : 'Discount amount'\">\n <span class=\"mjo-ol-discount__calc\">\n @if (DraftDiscountAmount(line); as amount) {\n \u2212{{ amount | mjoMoney }} of {{ DiscountBase(line) | mjoMoney }}\n } @else {\n {{ DiscountBase(line) | mjoMoney }} left to discount\n }\n </span>\n </div>\n <label class=\"mjo-ol-discount__reason\" [class.is-required]=\"NeedsDiscountReason(line)\">\n <span>Discount Reason @if (DraftDiscountAmount(line)) {<em class=\"mjo-ol-override__req\" aria-hidden=\"true\">*</em>}</span>\n <textarea\n rows=\"2\"\n [value]=\"DiscountDraft(line).Reason\"\n (input)=\"SetDiscountReason(line, $event)\"\n placeholder=\"Required \u2014 why value was given away on this line\"></textarea>\n </label>\n @if (DiscountError(line); as problem) {\n <div class=\"mjo-ol-discount__err\" role=\"alert\">{{ problem }}</div>\n }\n @if (HasStagedDiscount(line)) {\n <div class=\"mjo-ol-discount__staged\">\n <span>Applies when this order is saved.</span>\n <button type=\"button\" class=\"mjo-ol-discount__clear\" (click)=\"ClearDiscount(line)\">Remove</button>\n </div>\n }\n } @else {\n <div class=\"mjo-ol-discount__note\">\n This line is booked, so its money is frozen. Reverse the line to re-sell it at a\n discounted price.\n </div>\n }\n </div>\n } @else if (DiscountUnavailableReason; as why) {\n <div class=\"mjo-ol-discount__note\">{{ why }}</div>\n }\n\n <div class=\"mjo-ol-override__actions\">\n <button\n type=\"button\"\n class=\"mjo-ol-override__done\"\n [disabled]=\"NeedsOverrideReason(line) || NeedsDiscountReason(line)\"\n [attr.title]=\"NeedsOverrideReason(line) ? 'Enter a reason for the price override' : (NeedsDiscountReason(line) ? 'Enter a reason for the discount' : null)\"\n (click)=\"DoneOverrideEditor(line)\">Done</button>\n @if (CanOverride) {\n <button type=\"button\" class=\"mjo-ol-override__reset\" [disabled]=\"!CanRestoreDefault(line)\" (click)=\"ResetOverride(line)\">Use Default Price</button>\n }\n </div>\n </div>\n }\n\n <div class=\"mjo-ol-card__conseq\">\n @if (ProductFor(line); as product) {\n @if (product.TypeName === 'Goods') {\n <mjo-consequence-chip Kind=\"fulfillment\">Ships \u2014 holds the order at Posted</mjo-consequence-chip>\n }\n @if (!product.Taxable) {\n <mjo-consequence-chip Kind=\"untaxable\">Untaxable</mjo-consequence-chip>\n }\n @if (ShowsForeignRevenue(line)) {\n <mjo-consequence-chip Kind=\"company\">Revenue to {{ product.CompanyName }}</mjo-consequence-chip>\n }\n }\n </div>\n @if (OverrideReasonText(line); as why) {\n <div class=\"mjo-ol-card__why\">{{ why }}</div>\n }\n\n <!--\n TERM START \u2014 subscription lines only (D-TERMSTART).\n The order date says when the sale was booked; this says when coverage begins, and an\n agreement settles the two independently. Shown on the card rather than behind the\n extension disclosure because it is a term fact, and not every subscription product\n type has an extension form to hide it in.\n -->\n @if (IsSubscriptionLine(line)) {\n <div class=\"mjo-ol-term\">\n <!-- `for` only when there IS an input to point at. A label targeting a missing\n id is a dead control to a screen reader. -->\n <label\n class=\"mjo-ol-term__label\"\n [attr.for]=\"EditMode && !TermStartIsDictated(line) ? 'mjo-ol-term-' + line.ID : null\">\n Term start\n </label>\n <!-- A renewal of LIVE coverage has no choice to offer: the term begins the day\n after the current one ends. Read-only rather than editable-and-ignored. -->\n @if (TermStartIsDictated(line)) {\n <span class=\"mjo-ol-term__value is-dictated\">{{ ContinuationStartValue(line) }}</span>\n } @else if (EditMode) {\n <input\n type=\"date\"\n class=\"mjo-ol-term__input\"\n [class.is-default]=\"TermStartFollowsOrderDate(line)\"\n [id]=\"'mjo-ol-term-' + line.ID\"\n [value]=\"TermStartValue(line)\"\n (change)=\"SetTermStart(line, $event)\">\n <!-- Offered only when there is something to reset. A button that clears a\n value the line never stated does nothing and invites the reader to\n wonder what it did. -->\n @if (!TermStartFollowsOrderDate(line)) {\n <button\n type=\"button\"\n class=\"mjo-ol-term__reset\"\n (click)=\"ResetTermStart(line)\">\n Reset to order date\n </button>\n }\n } @else {\n <span class=\"mjo-ol-term__value\">{{ TermStartValue(line) }}</span>\n }\n <span class=\"mjo-ol-term__hint\">\n @if (TermStartIsDictated(line)) {\n Continuing existing coverage, so the term begins the day after the current\n one ends \u2014 not something this line can set.\n } @else if (TermStartFollowsOrderDate(line)) {\n Following the order date. The subscription type's rules may still adjust\n the actual start.\n } @else {\n Stated on this line, so a later change to the order date leaves it alone.\n }\n </span>\n </div>\n\n <!-- The customer already holds this product (golive #299): ask whether this line\n extends that subscription or starts another, instead of letting the type's\n rule decide silently at confirm. -->\n @if (ExistingHoldingFor(line); as holding) {\n <div class=\"mjo-ol-holding\" role=\"group\" [attr.aria-label]=\"'Existing subscription ' + holding.SubscriptionNumber\">\n <span class=\"mjo-ol-holding__text\">\n The customer already holds {{ holding.SubscriptionNumber }} for this product\n @if (HoldingCoverageEnd(holding)) { (covered through {{ HoldingCoverageEnd(holding) }}) }.\n </span>\n @if (CanEditServicePeriod()) {\n <div class=\"mjo-ol-holding__choices\">\n <button\n type=\"button\"\n class=\"mjo-ol-holding__choice\"\n [class.is-selected]=\"line.SubscriptionAction === 'ExtendExisting'\"\n [attr.aria-pressed]=\"line.SubscriptionAction === 'ExtendExisting'\"\n (click)=\"SetSubscriptionAction(line, 'ExtendExisting')\">\n Add as next term\n @if (HoldingContinuationStart(holding)) { (starts {{ HoldingContinuationStart(holding) }}) }\n </button>\n <button\n type=\"button\"\n class=\"mjo-ol-holding__choice\"\n [class.is-selected]=\"line.SubscriptionAction === 'CreateNew'\"\n [attr.aria-pressed]=\"line.SubscriptionAction === 'CreateNew'\"\n (click)=\"SetSubscriptionAction(line, 'CreateNew')\">\n New subscription (keeps this line's dates)\n </button>\n </div>\n }\n <span class=\"mjo-ol-term__hint\" [class.is-error]=\"!line.SubscriptionAction\">\n @if (line.SubscriptionAction === 'CreateNew') {\n Confirm starts a separate subscription on this line's service period.\n } @else if (line.SubscriptionAction === 'ExtendExisting') {\n Confirm adds a term to {{ holding.SubscriptionNumber }}, starting the day after its coverage ends.\n } @else {\n Not chosen. The subscription type's rule will decide at confirm, and it may move this\n line's dates.\n }\n </span>\n </div>\n }\n }\n\n <!--\n SERVICE PERIOD \u2014 deferred lines that neither an event nor a subscription dates.\n The recognition type earns against this window, so the order cannot be confirmed\n without it.\n -->\n @if (NeedsStatedServicePeriod(line)) {\n <div class=\"mjo-ol-term\">\n <label\n class=\"mjo-ol-term__label\"\n [attr.for]=\"CanEditServicePeriod() ? 'mjo-ol-sp-start-' + line.ID : null\">\n Service period\n </label>\n @if (CanEditServicePeriod()) {\n <input\n type=\"date\"\n class=\"mjo-ol-term__input\"\n aria-label=\"Service period start\"\n [id]=\"'mjo-ol-sp-start-' + line.ID\"\n [value]=\"ServicePeriodValue(line, 'Start')\"\n (change)=\"SetServicePeriod(line, 'Start', $event)\">\n <span class=\"mjo-ol-term__label\" aria-hidden=\"true\">to</span>\n <input\n type=\"date\"\n class=\"mjo-ol-term__input\"\n aria-label=\"Service period end\"\n [value]=\"ServicePeriodValue(line, 'End')\"\n (change)=\"SetServicePeriod(line, 'End', $event)\">\n } @else {\n <span class=\"mjo-ol-term__value\">\n {{ ServicePeriodValue(line, 'Start') || '\u2014' }} to {{ ServicePeriodValue(line, 'End') || '\u2014' }}\n </span>\n }\n @if (ServicePeriodBackwards(line)) {\n <span class=\"mjo-ol-term__hint is-error\" role=\"alert\">\n End date must be on or after the start date.\n </span>\n } @else if (ServicePeriodMissing(line)) {\n <span class=\"mjo-ol-term__hint\">\n Needed to confirm: revenue on this line is recognized against these dates.\n </span>\n }\n </div>\n }\n\n <!--\n COVERAGE OVERLAP \u2014 another band of the same subscription family (golive #276).\n The text is the server's own confirm check (Orders.CheckCoverageOverlap), so what\n this says is what confirm will do. Checked after each save.\n -->\n @if (CoverageOverlapFor(line); as overlap) {\n <div class=\"mjo-ol-overlap\" [class.is-blocking]=\"OverlapBlocksConfirm(line)\" role=\"status\">\n <i class=\"fa-solid fa-triangle-exclamation\" aria-hidden=\"true\"></i>\n <div class=\"mjo-ol-overlap__body\">\n <span>{{ overlap.Message }}</span>\n @if (CanAcknowledgeOverlap(line)) {\n <label class=\"mjo-ol-overlap__ack\">\n <input\n type=\"checkbox\"\n [checked]=\"line.AcknowledgesCoverageOverlap\"\n [disabled]=\"!EditMode\"\n (change)=\"SetOverlapAcknowledged(line, $event)\">\n Run alongside the existing coverage. Both will be billed.\n </label>\n }\n </div>\n </div>\n }\n\n @if (ExtensionFor(line); as ext) {\n <div class=\"mjo-ol-ext\" [class.is-open]=\"IsExtensionOpen(line)\">\n <button\n type=\"button\"\n class=\"mjo-ol-ext__toggle\"\n (click)=\"ToggleExtension(line)\"\n [attr.aria-expanded]=\"IsExtensionOpen(line)\"\n [attr.aria-controls]=\"'mjo-ol-ext-' + line.ID\">\n <i class=\"fa-solid fa-chevron-right mjo-ol-ext__chev\" aria-hidden=\"true\"></i>\n <span class=\"mjo-ol-ext__label\">{{ ExtensionLabel(line) }}</span>\n @if (!IsExtensionOpen(line)) {\n <span class=\"mjo-ol-ext__hint\">{{ ExtensionHint(line) }}</span>\n }\n </button>\n <div\n class=\"mjo-ol-ext__body\"\n [id]=\"'mjo-ol-ext-' + line.ID\"\n [attr.inert]=\"IsExtensionOpen(line) ? null : ''\"\n [attr.aria-hidden]=\"!IsExtensionOpen(line)\">\n <div class=\"mjo-ol-ext__clip\">\n <mj-entity-form-host\n [Record]=\"ext\"\n [EditMode]=\"EditMode\"\n [Config]=\"ExtensionFormConfigFor(line)\"\n (FormCreated)=\"OnExtensionFormCreated($event)\"\n (Navigate)=\"OnExtensionNavigate($event)\">\n </mj-entity-form-host>\n </div>\n </div>\n </div>\n }\n </div>\n } @empty {\n <div class=\"mjo-ol-empty\">\n <i class=\"fa-solid fa-cart-plus\" aria-hidden=\"true\"></i>\n <div class=\"mjo-ol-empty__title\">Nothing on this order yet</div>\n <div>Search the catalog to add the first line.</div>\n </div>\n }\n\n @if (EditMode) {\n <div class=\"mj-typeahead mjo-ol-picker\" #pickerHost>\n <div class=\"mjo-search\">\n <i class=\"fa-solid fa-plus\" aria-hidden=\"true\"></i>\n <input\n [(ngModel)]=\"ProductQuery\"\n (ngModelChange)=\"OnProductQueryChange()\"\n (focus)=\"OpenPicker()\"\n (blur)=\"ClosePickerSoon()\"\n (keydown)=\"OnPickerKey($event)\"\n placeholder=\"Add product \u2014 type a name or SKU\u2026\"\n autocomplete=\"off\"\n role=\"combobox\"\n aria-label=\"Add a product\"\n [attr.aria-expanded]=\"PickerOpen\">\n </div>\n\n @if (PickerOpen) {\n <div class=\"mj-typeahead-list is-open\" [class.is-up]=\"PickerOpensUp\" role=\"listbox\">\n @for (product of PickerResults; track product.ID; let i = $index) {\n <button\n type=\"button\"\n class=\"mj-typeahead-item mjo-ol-pick\"\n [class.is-cursor]=\"i === PickerCursor\"\n role=\"option\"\n [attr.aria-selected]=\"i === PickerCursor\"\n (mousedown)=\"AddProduct(product)\">\n <span class=\"mjo-ol-pick__body\">\n <span class=\"name\">{{ product.Name }}</span>\n <span class=\"mjo-ol-pick__meta\">\n <span class=\"sub\">{{ product.SKU }} \u00B7 {{ product.TypeName }}</span>\n @if (product.CompanyName) {\n <span\n class=\"mjo-ol-pick__company\"\n [class.is-foreign]=\"IsForeignCompany(product)\"\n [attr.title]=\"IsForeignCompany(product)\n ? 'Sold by ' + product.CompanyName + ', not this order\\'s company'\n : product.CompanyName\">\n <i class=\"fa-solid fa-building\" aria-hidden=\"true\"></i>\n {{ product.CompanyName }}\n </span>\n }\n </span>\n </span>\n <span class=\"end\">\n <span class=\"mjo-ol-pick__price\">{{ product.ListPrice === null ? 'No price' : (product.ListPrice | mjoMoney) }}</span>\n <span class=\"sub\">{{ product.Taxable ? 'taxable' : 'untaxable' }}</span>\n </span>\n </button>\n } @empty {\n <div class=\"mj-typeahead-item\">\n <span class=\"muted small\">\n @if (CatalogError) { {{ CatalogError }} }\n @else if (Catalog.length === 0) { Loading catalog\u2026 }\n @else { No product matches that. }\n </span>\n </div>\n }\n </div>\n }\n </div>\n }\n\n <!-- Line details. Rendered once and handed whichever line is open, rather than one per card:\n the panel is modal, so a second instance could never be visible. -->\n <mjo-order-line-details-panel\n [Line]=\"DetailsLine\"\n [ProductName]=\"DetailsLine ? (ProductFor(DetailsLine)?.Name ?? '') : ''\"\n [ProductSKU]=\"DetailsLine ? (ProductFor(DetailsLine)?.SKU ?? '') : ''\"\n [ProductType]=\"DetailsLine ? (ProductFor(DetailsLine)?.TypeName ?? '') : ''\"\n [Dimensions]=\"DimensionCatalog\"\n [EditMode]=\"EditMode\"\n (Closed)=\"CloseDetails()\">\n </mjo-order-line-details-panel>\n</div>\n", styles: [":host { display: block; }\n\n.mjo-ol {\n display: flex;\n flex-direction: column;\n gap: var(--mj-space-2);\n}\n\n.mjo-ol-card {\n border: 1px solid var(--mj-border-default);\n background: var(--mj-bg-surface);\n border-radius: var(--mj-radius-md);\n padding: var(--mj-space-3);\n}\n\n.mjo-ol-card:has(.mjo-ol-ext.is-open) {\n padding-bottom: var(--mj-space-1);\n}\n\n.mjo-ol-card__top {\n display: flex;\n align-items: flex-start;\n gap: var(--mj-space-3);\n}\n\n.mjo-ol-card__id { flex: 1; min-width: 0; }\n\n.mjo-ol-card__name {\n display: inline;\n padding: 0;\n border: 0;\n background: transparent;\n font: inherit;\n font-size: var(--mj-text-sm);\n font-weight: var(--mj-font-semibold);\n color: var(--mj-text-link);\n text-align: left;\n cursor: pointer;\n text-decoration: none;\n}\n\n.mjo-ol-card__name:hover { text-decoration: underline; }\n\n.mjo-ol-card__meta {\n font-size: var(--mj-text-xs);\n color: var(--mj-text-muted);\n margin-top: 2px;\n}\n\n.mjo-ol-qty {\n display: inline-flex;\n align-items: center;\n border: 1px solid var(--mj-border-strong);\n border-radius: var(--mj-radius-md);\n overflow: hidden;\n background: var(--mj-bg-surface);\n flex: none;\n}\n\n.mjo-ol-qty button {\n border: 0;\n background: transparent;\n cursor: pointer;\n color: var(--mj-text-secondary);\n width: 26px;\n height: 28px;\n font-size: 11px;\n}\n\n.mjo-ol-qty button:hover:not(:disabled) {\n background: var(--mj-bg-surface-hover);\n color: var(--mj-text-primary);\n}\n\n.mjo-ol-qty button:disabled {\n cursor: default;\n color: var(--mj-text-disabled);\n}\n\n.mjo-ol-qty input {\n border: 0;\n outline: 0;\n background: transparent;\n width: 46px;\n text-align: center;\n font: inherit;\n font-variant-numeric: tabular-nums;\n color: inherit;\n}\n\n.mjo-ol-qty.is-locked {\n border-color: var(--mj-border-default);\n background: transparent;\n}\n\n.mjo-ol-qty__value {\n min-width: 46px;\n padding: 0 10px;\n height: 28px;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n font-variant-numeric: tabular-nums;\n}\n\n.mjo-ol-card__price {\n flex: none;\n min-width: 108px;\n display: flex;\n flex-direction: column;\n align-items: center;\n}\n\n.mjo-ol-card__price-row {\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 2px;\n height: 28px;\n}\n\n.mjo-ol-price__pencil {\n flex: none;\n color: var(--mj-text-muted);\n}\n\n.mjo-ol-price__pencil:hover {\n color: var(--mj-text-link);\n background: var(--mj-bg-surface-hover);\n}\n\n.mjo-ol-override {\n display: flex;\n flex-direction: column;\n gap: var(--mj-space-2);\n margin-top: var(--mj-space-2);\n padding: var(--mj-space-2);\n border: 1px solid var(--mj-border-default);\n border-radius: var(--mj-radius-md);\n background: var(--mj-bg-surface-subtle, var(--mj-bg-surface));\n}\n\n.mjo-ol-override__req {\n font-style: normal;\n color: var(--mj-status-danger-text, #b42318);\n margin-left: 2px;\n}\n\n.mjo-ol-override__actions {\n display: flex;\n gap: var(--mj-space-2);\n justify-content: flex-end;\n}\n\n.mjo-ol-override__done,\n.mjo-ol-override__reset {\n border: 0;\n background: transparent;\n cursor: pointer;\n font: inherit;\n font-size: var(--mj-text-xs);\n font-weight: var(--mj-font-semibold);\n padding: 4px 8px;\n border-radius: var(--mj-radius-sm);\n}\n\n.mjo-ol-override__done {\n color: var(--mj-text-link);\n}\n\n.mjo-ol-override__reset {\n color: var(--mj-text-muted);\n}\n\n.mjo-ol-override__done:hover,\n.mjo-ol-override__reset:hover {\n background: var(--mj-bg-surface-hover);\n}\n\n.mjo-ol-override__done:disabled {\n color: var(--mj-text-muted);\n cursor: not-allowed;\n background: transparent;\n}\n\n.mjo-ol-card__amt {\n font-variant-numeric: tabular-nums;\n font-weight: var(--mj-font-semibold);\n font-size: var(--mj-text-sm);\n line-height: 28px;\n}\n\n.mjo-ol-overpill {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n margin-top: 4px;\n padding: 1px 8px;\n border-radius: 999px;\n font-size: 10px;\n font-weight: 600;\n letter-spacing: 0.02em;\n color: var(--mj-status-warning-text);\n background: color-mix(in srgb, var(--mj-status-warning-text) 16%, transparent);\n}\n\n.mjo-ol-card__err {\n font-size: var(--mj-text-xs);\n color: var(--mj-status-error-text);\n margin-top: 2px;\n}\n\n.mjo-ol-card__tot {\n flex: none;\n min-width: 104px;\n height: 28px;\n display: flex;\n align-items: center;\n justify-content: flex-end;\n text-align: right;\n font-variant-numeric: tabular-nums;\n font-weight: var(--mj-font-semibold);\n font-size: var(--mj-text-sm);\n line-height: 28px;\n}\n\n.mjo-ol-iconbtn {\n border: 0;\n background: transparent;\n color: var(--mj-text-muted);\n cursor: pointer;\n width: 28px;\n height: 28px;\n border-radius: var(--mj-radius-sm);\n}\n\n.mjo-ol-iconbtn:hover {\n background: var(--mj-bg-surface-hover);\n color: var(--mj-status-error);\n}\n\n.mjo-ol-card__conseq {\n display: flex;\n gap: 6px;\n flex-wrap: wrap;\n margin-top: var(--mj-space-2);\n}\n\n/* Term start \u2014 subscription lines only. One row that wraps, so the hint drops below the field on a\n narrow card rather than squeezing the date input. */\n.mjo-ol-term {\n display: flex;\n align-items: center;\n gap: var(--mj-space-2);\n flex-wrap: wrap;\n margin-top: var(--mj-space-2);\n}\n\n.mjo-ol-term__label {\n font-size: var(--mj-text-xs);\n color: var(--mj-text-muted);\n}\n\n.mjo-ol-term__input {\n height: 28px;\n padding: 0 var(--mj-space-2);\n border: 1px solid var(--mj-border-strong);\n border-radius: var(--mj-radius-md);\n background: var(--mj-bg-surface);\n color: var(--mj-text-primary);\n font: inherit;\n font-size: var(--mj-text-sm);\n}\n\n/* A DEFAULT reads quieter than a stated value \u2014 the same distinction the order header draws\n between a date somebody chose and one that fell out of a rule. */\n.mjo-ol-term__input.is-default {\n border-color: var(--mj-border-default);\n color: var(--mj-text-secondary);\n}\n\n.mjo-ol-term__value {\n font-size: var(--mj-text-sm);\n color: var(--mj-text-primary);\n font-variant-numeric: tabular-nums;\n}\n\n/* A dictated date is a FACT, not a disabled input: shown in the read-mode weight in edit mode too,\n so nothing on the card suggests a control that has been switched off. */\n.mjo-ol-term__value.is-dictated {\n color: var(--mj-text-secondary);\n}\n\n.mjo-ol-term__reset {\n border: 0;\n background: transparent;\n padding: 0;\n color: var(--mj-text-link);\n font-size: var(--mj-text-xs);\n cursor: pointer;\n}\n\n.mjo-ol-term__reset:hover {\n text-decoration: underline;\n}\n\n.mjo-ol-term__hint {\n font-size: var(--mj-text-xs);\n color: var(--mj-text-muted);\n}\n\n.mjo-ol-term__hint.is-error {\n color: var(--mj-status-error-text);\n}\n\n.mjo-ol-card__why {\n margin-top: 6px;\n font-size: var(--mj-text-xs);\n color: var(--mj-text-secondary);\n line-height: 1.35;\n}\n\n.mjo-ol-empty {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n gap: var(--mj-space-1);\n padding: var(--mj-space-4) var(--mj-space-3);\n color: var(--mj-text-muted);\n font-size: var(--mj-text-sm);\n text-align: center;\n}\n\n.mjo-ol-empty i {\n font-size: var(--mj-text-2xl);\n color: var(--mj-brand-primary);\n}\n\n.mjo-ol-empty__title {\n font-weight: var(--mj-font-semibold);\n color: var(--mj-text-primary);\n}\n\n.mjo-ol-picker {\n position: relative;\n z-index: 20;\n}\n\n.mjo-ol-picker:has(.mj-typeahead-list.is-open) {\n z-index: 40;\n}\n\n.mjo-search {\n display: flex;\n align-items: center;\n gap: var(--mj-space-2);\n background: var(--mj-bg-surface);\n border: 1px solid var(--mj-border-strong);\n border-radius: var(--mj-radius-md);\n padding: 8px 10px;\n}\n\n.mjo-search i { color: var(--mj-text-muted); font-size: 12px; }\n\n.mjo-search input {\n border: 0;\n outline: 0;\n background: transparent;\n font: inherit;\n font-size: var(--mj-text-sm);\n color: inherit;\n width: 100%;\n}\n\n.mj-typeahead-list {\n display: none;\n position: absolute;\n left: 0;\n right: 0;\n top: calc(100% + 4px);\n max-height: 240px;\n overflow: auto;\n background: var(--mj-bg-surface-elevated);\n border: 1px solid var(--mj-border-default);\n border-radius: var(--mj-radius-md);\n box-shadow: var(--mj-shadow-md, 0 8px 24px rgba(0, 0, 0, 0.18));\n z-index: 30;\n}\n\n.mj-typeahead-list.is-open { display: block; }\n\n.mj-typeahead-list.is-up {\n top: auto;\n bottom: calc(100% + 4px);\n}\n\n.mj-typeahead-item {\n display: flex;\n align-items: center;\n gap: var(--mj-space-3);\n width: 100%;\n padding: 8px 12px;\n border: 0;\n border-bottom: 1px solid var(--mj-border-subtle);\n background: transparent;\n color: inherit;\n text-align: left;\n cursor: pointer;\n font: inherit;\n}\n\n.mj-typeahead-item:last-child { border-bottom: 0; }\n\n.mj-typeahead-item:hover,\n.mj-typeahead-item.is-cursor {\n background: var(--mj-bg-surface-hover);\n}\n\n.mjo-ol-pick__body {\n display: flex;\n flex-direction: column;\n gap: 1px;\n min-width: 0;\n}\n\n.mjo-ol-pick .name { font-size: 13px; font-weight: var(--mj-font-semibold); }\n.mjo-ol-pick .sub { font-size: 11.5px; color: var(--mj-text-muted); }\n\n/*\n COMPANY IS ITS OWN ELEMENT, not the third item in a muted \"SKU \u00B7 type \u00B7 company\" run.\n Two similarly named products from different companies are exactly what this picker has to let\n someone tell apart before they pick, and a company set in the same muted grey as everything\n else, in third position, is not something anyone reads at speed.\n*/\n.mjo-ol-pick__meta {\n display: flex;\n align-items: center;\n gap: var(--mj-space-2);\n min-width: 0;\n}\n\n.mjo-ol-pick__company {\n display: inline-flex;\n align-items: center;\n gap: 4px;\n flex: 0 0 auto;\n font-size: 11px;\n line-height: 1.2;\n padding: 2px 6px;\n border: 1px solid var(--mj-border-subtle);\n border-radius: var(--mj-radius-sm);\n background: var(--mj-bg-surface-sunken);\n color: var(--mj-text-secondary);\n}\n\n.mjo-ol-pick__company i { font-size: 9.5px; color: var(--mj-text-muted); }\n\n/* Another company's product \u2014 offered on purpose (BCC sells SoundPost), so it is marked, not hidden. */\n.mjo-ol-pick__company.is-foreign i { color: var(--mj-status-info); }\n.mjo-ol-pick__company.is-foreign {\n color: var(--mj-text-primary);\n border-color: var(--mj-border-default);\n}\n.mjo-ol-pick .end {\n margin-left: auto;\n text-align: right;\n display: flex;\n flex-direction: column;\n gap: 1px;\n flex: 0 0 auto;\n}\n.mjo-ol-pick__price {\n font-variant-numeric: tabular-nums;\n font-weight: var(--mj-font-semibold);\n}\n\n/* Coverage overlap with another band (golive #276). Warning colour while confirm would refuse the\n line; muted once it will proceed, because then it is information, not a problem. */\n.mjo-ol-overlap {\n display: flex;\n gap: var(--mj-space-2);\n margin-top: var(--mj-space-2);\n padding: var(--mj-space-2) var(--mj-space-3);\n border: 1px solid var(--mj-border-default);\n border-radius: var(--mj-radius-md);\n font-size: var(--mj-text-xs);\n line-height: 1.35;\n color: var(--mj-text-secondary);\n}\n.mjo-ol-overlap.is-blocking {\n border-color: var(--mj-status-warning-border);\n background: var(--mj-status-warning-bg);\n color: var(--mj-status-warning-text);\n}\n.mjo-ol-overlap__body {\n display: flex;\n flex-direction: column;\n gap: var(--mj-space-1);\n}\n.mjo-ol-overlap__ack {\n display: inline-flex;\n align-items: center;\n gap: var(--mj-space-1);\n font-weight: var(--mj-font-semibold);\n cursor: pointer;\n}\n.mjo-ol-overlap-err {\n margin-bottom: var(--mj-space-2);\n font-size: var(--mj-text-xs);\n color: var(--mj-status-error-text);\n}\n\n.mjo-ol-ext-err {\n font-size: var(--mj-text-xs);\n color: var(--mj-status-error-text);\n}\n\n.mjo-ol-ext {\n margin-top: var(--mj-space-2);\n padding-top: var(--mj-space-1);\n border-top: 1px dashed var(--mj-border-subtle);\n}\n\n.mjo-ol-ext__toggle {\n display: flex;\n align-items: center;\n gap: var(--mj-space-2);\n width: 100%;\n padding: var(--mj-space-1) 0;\n border: 0;\n background: transparent;\n color: inherit;\n font: inherit;\n text-align: left;\n cursor: pointer;\n border-radius: var(--mj-radius-sm);\n}\n\n.mjo-ol-ext__toggle:hover {\n color: var(--mj-text-primary);\n}\n\n.mjo-ol-ext__toggle:focus-visible {\n outline: 2px solid var(--mj-border-focus);\n outline-offset: 2px;\n}\n\n.mjo-ol-ext__chev {\n flex: none;\n width: 12px;\n font-size: 10px;\n color: var(--mj-text-muted);\n transition: transform 160ms ease;\n}\n\n.mjo-ol-ext.is-open .mjo-ol-ext__chev {\n transform: rotate(90deg);\n}\n\n.mjo-ol-ext__label {\n font-size: var(--mj-text-xs);\n font-weight: var(--mj-font-semibold);\n color: var(--mj-text-secondary);\n letter-spacing: 0.01em;\n}\n\n.mjo-ol-ext__hint {\n margin-left: auto;\n font-size: var(--mj-text-xs);\n color: var(--mj-text-muted);\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n.mjo-ol-ext__body {\n display: grid;\n grid-template-rows: 0fr;\n transition: grid-template-rows 180ms ease;\n}\n\n.mjo-ol-ext.is-open .mjo-ol-ext__body {\n grid-template-rows: 1fr;\n}\n\n.mjo-ol-ext__clip {\n overflow: hidden;\n min-height: 0;\n}\n\n/* Flatten the embedded extension form so its fields sit in the line card. */\n.mjo-ol-ext ::ng-deep mj-record-form-container,\n.mjo-ol-ext ::ng-deep .mj-record-form-container,\n.mjo-ol-ext ::ng-deep .mj-forms-container {\n display: block;\n padding: 0;\n margin: 0;\n border: 0;\n background: transparent;\n box-shadow: none;\n}\n\n.mjo-ol-ext ::ng-deep .mj-forms-toolbar,\n.mjo-ol-ext ::ng-deep mj-form-toolbar {\n display: none;\n}\n\n.mjo-ol-ext ::ng-deep .mj-forms-panel {\n border: 0;\n background: transparent;\n box-shadow: none;\n margin: 0;\n padding: 0;\n}\n\n.mjo-ol-ext ::ng-deep mj-collapsible-panel + mj-collapsible-panel .mj-forms-panel {\n margin-top: calc(-1 * var(--mj-space-1));\n}\n\n.mjo-ol-ext ::ng-deep .mj-forms-panel-header {\n display: none;\n}\n\n.mjo-ol-ext ::ng-deep .mj-forms-panel-body,\n.mjo-ol-ext ::ng-deep .mj-forms-panel-content {\n max-height: none;\n overflow: visible;\n padding: 0;\n margin: 0;\n}\n\n.mjo-ol-ext ::ng-deep mj-form-field:last-child,\n.mjo-ol-ext ::ng-deep .mj-form-field:last-child {\n margin-bottom: 0;\n}\n\n@media (max-width: 720px) {\n .mjo-ol-card__top { flex-wrap: wrap; }\n .mjo-ol-card__price, .mjo-ol-card__tot { width: auto; }\n}\n\n/* \u2500\u2500 DISCOUNT \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n Its own bordered block inside the price editor, because a discount and a price\n override are different economics and the report that produced this control said\n so: presenting them as one thing is what made the discount concept unreachable.\n The rule above the block is the separator \u2014 the two never read as one form. */\n.mjo-ol-discount {\n display: flex;\n flex-direction: column;\n gap: var(--mj-space-2);\n padding-top: var(--mj-space-2);\n border-top: 1px solid var(--mj-border-default);\n}\n\n.mjo-ol-discount__head {\n display: flex;\n align-items: baseline;\n justify-content: space-between;\n gap: var(--mj-space-2);\n flex-wrap: wrap;\n}\n\n.mjo-ol-discount__title {\n font-size: var(--mj-text-xs);\n font-weight: var(--mj-font-semibold);\n color: var(--mj-text-primary);\n}\n\n.mjo-ol-discount__cap {\n font-size: var(--mj-text-xs);\n color: var(--mj-text-muted);\n}\n\n.mjo-ol-discount__row {\n display: flex;\n align-items: center;\n gap: var(--mj-space-2);\n flex-wrap: wrap;\n}\n\n/* Two buttons that behave as one control, so they are drawn as one. */\n.mjo-ol-discount__mode {\n display: inline-flex;\n border: 1px solid var(--mj-border-strong);\n border-radius: var(--mj-radius-sm);\n overflow: hidden;\n}\n\n.mjo-ol-discount__mode button {\n border: 0;\n background: var(--mj-bg-surface);\n color: var(--mj-text-muted);\n font: inherit;\n font-size: var(--mj-text-xs);\n padding: 0 10px;\n height: 28px;\n cursor: pointer;\n}\n\n.mjo-ol-discount__mode button + button {\n border-left: 1px solid var(--mj-border-strong);\n}\n\n.mjo-ol-discount__mode button.is-on {\n background: var(--mj-bg-surface-hover);\n color: var(--mj-text-primary);\n font-weight: var(--mj-font-semibold);\n}\n\n.mjo-ol-discount__val {\n width: 96px;\n height: 28px;\n box-sizing: border-box;\n padding: 0 8px;\n border: 1px solid var(--mj-border-strong);\n border-radius: var(--mj-radius-sm);\n background: var(--mj-bg-surface);\n color: inherit;\n font: inherit;\n font-size: var(--mj-text-xs);\n font-variant-numeric: tabular-nums;\n text-align: right;\n}\n\n.mjo-ol-discount__calc {\n font-size: var(--mj-text-xs);\n color: var(--mj-text-muted);\n font-variant-numeric: tabular-nums;\n}\n\n.mjo-ol-discount__reason span {\n display: block;\n font-size: var(--mj-text-xs);\n color: var(--mj-text-muted);\n margin-bottom: 4px;\n}\n\n.mjo-ol-discount__reason textarea {\n display: block;\n width: 100%;\n box-sizing: border-box;\n resize: vertical;\n min-height: 48px;\n padding: 6px 8px;\n border: 1px solid var(--mj-border-strong);\n border-radius: var(--mj-radius-sm);\n background: var(--mj-bg-surface);\n color: inherit;\n font: inherit;\n font-size: var(--mj-text-xs);\n}\n\n.mjo-ol-discount__reason.is-required textarea {\n border-color: var(--mj-status-danger-text, #b42318);\n}\n\n.mjo-ol-discount__err {\n font-size: var(--mj-text-xs);\n color: var(--mj-status-error-text);\n}\n\n.mjo-ol-discount__note {\n font-size: var(--mj-text-xs);\n color: var(--mj-text-muted);\n}\n\n.mjo-ol-discount__staged {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: var(--mj-space-2);\n font-size: var(--mj-text-xs);\n color: var(--mj-text-muted);\n}\n\n.mjo-ol-discount__clear {\n border: 1px solid var(--mj-border-strong);\n border-radius: var(--mj-radius-sm);\n background: var(--mj-bg-surface);\n color: inherit;\n font: inherit;\n font-size: var(--mj-text-xs);\n height: 24px;\n padding: 0 10px;\n cursor: pointer;\n}\n\n/* The discount's own badge on the line card. Deliberately NOT the override pill's\n warning colour: giving away value on purpose is not a caution. */\n.mjo-ol-discpill {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n margin-top: 4px;\n padding: 1px 8px;\n border-radius: 999px;\n font-size: 10px;\n font-weight: 600;\n letter-spacing: 0.02em;\n font-variant-numeric: tabular-nums;\n color: var(--mj-status-success-text);\n background: color-mix(in srgb, var(--mj-status-success-text) 16%, transparent);\n}\n\n/* The customer already holds this product (golive #299). */\n.mjo-ol-holding {\n display: flex;\n flex-direction: column;\n gap: var(--mj-space-2);\n margin-top: var(--mj-space-2);\n padding: var(--mj-space-2) var(--mj-space-3);\n border: 1px solid var(--mj-status-warning-border);\n border-radius: var(--mj-radius-md);\n background: var(--mj-status-warning-bg);\n font-size: var(--mj-text-sm);\n color: var(--mj-text-primary);\n}\n\n.mjo-ol-holding__choices {\n display: flex;\n flex-wrap: wrap;\n gap: var(--mj-space-2);\n}\n\n.mjo-ol-holding__choice {\n padding: 4px 10px;\n border: 1px solid var(--mj-border-default);\n border-radius: var(--mj-radius-full);\n background: var(--mj-bg-surface);\n color: var(--mj-text-primary);\n font: inherit;\n cursor: pointer;\n}\n\n.mjo-ol-holding__choice.is-selected {\n border-color: var(--mj-brand-primary);\n color: var(--mj-brand-primary);\n font-weight: var(--mj-font-semibold);\n}\n"] }]
1978
2092
  }], null, { Provider: [{
1979
2093
  type: Input
1980
2094
  }], EditMode: [{
@@ -1989,5 +2103,5 @@ export class MJOOrderLinesEditorComponent {
1989
2103
  type: ViewChild,
1990
2104
  args: ['pickerHost']
1991
2105
  }] }); })();
1992
- (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(MJOOrderLinesEditorComponent, { className: "MJOOrderLinesEditorComponent", filePath: "lib/custom/OrderHeader/order-lines-editor.component.ts", lineNumber: 136 }); })();
2106
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(MJOOrderLinesEditorComponent, { className: "MJOOrderLinesEditorComponent", filePath: "lib/custom/OrderHeader/order-lines-editor.component.ts", lineNumber: 141 }); })();
1993
2107
  //# sourceMappingURL=order-lines-editor.component.js.map