@mj-biz-apps/orders-ng 5.12.0 → 5.12.1

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 (25) hide show
  1. package/dist/lib/custom/Product/product-save-guard-form.component.d.ts +58 -0
  2. package/dist/lib/custom/Product/product-save-guard-form.component.d.ts.map +1 -0
  3. package/dist/lib/custom/Product/product-save-guard-form.component.js +360 -0
  4. package/dist/lib/custom/Product/product-save-guard-form.component.js.map +1 -0
  5. package/dist/lib/custom/Product/widgets/product-accounting-widget.component.js +2 -2
  6. package/dist/lib/custom/custom-forms.module.d.ts +25 -24
  7. package/dist/lib/custom/custom-forms.module.d.ts.map +1 -1
  8. package/dist/lib/custom/custom-forms.module.js +6 -0
  9. package/dist/lib/custom/custom-forms.module.js.map +1 -1
  10. package/dist/lib/form-panels/catalog-overviews.panels.d.ts.map +1 -1
  11. package/dist/lib/form-panels/catalog-overviews.panels.js +12 -10
  12. package/dist/lib/form-panels/catalog-overviews.panels.js.map +1 -1
  13. package/dist/lib/form-panels/product-header.panel.d.ts +6 -1
  14. package/dist/lib/form-panels/product-header.panel.d.ts.map +1 -1
  15. package/dist/lib/form-panels/product-header.panel.js +10 -3
  16. package/dist/lib/form-panels/product-header.panel.js.map +1 -1
  17. package/dist/lib/panels/product-lookup-names.d.ts +22 -0
  18. package/dist/lib/panels/product-lookup-names.d.ts.map +1 -0
  19. package/dist/lib/panels/product-lookup-names.js +41 -0
  20. package/dist/lib/panels/product-lookup-names.js.map +1 -0
  21. package/dist/public-api.d.ts +1 -0
  22. package/dist/public-api.d.ts.map +1 -1
  23. package/dist/public-api.js +1 -0
  24. package/dist/public-api.js.map +1 -1
  25. package/package.json +2 -2
@@ -0,0 +1,58 @@
1
+ import { MJConfirmService } from '@memberjunction/ng-ui-components';
2
+ import { mjBizAppsOrdersProductFormComponent } from '../../generated/Entities/mjBizAppsOrdersProduct/mjbizappsordersproduct.form.component.js';
3
+ import * as i0 from "@angular/core";
4
+ /** The product type extension entity that makes a product an event product. */
5
+ export declare const EVENT_PRODUCT_EXTENSION_ENTITY = "MJ_BizApps_Orders: Event Products";
6
+ /** Wording is from golive #211. */
7
+ export declare const EVENT_REV_REC_CONFIRM_MESSAGE = "This event product will recognize revenue at booking, not at the event date.";
8
+ export type EventRevRecConfirmInput = {
9
+ hasEventExtension: boolean;
10
+ /** Product.RevenueRecognitionTypeID — wins when set. */
11
+ revRecTypeID: string | null | undefined;
12
+ /** ProductType.DefaultRevenueRecognitionTypeID — used when the product sets none. */
13
+ productTypeDefaultRevRecID: string | null | undefined;
14
+ /** `undefined` for an id the caller cannot resolve. */
15
+ isDeferredByID: (id: string) => boolean | null | undefined;
16
+ };
17
+ /**
18
+ * True when saving this product should ask first: an event product whose EFFECTIVE revenue
19
+ * recognition type is not deferred, i.e. revenue books at sale rather than at the event.
20
+ *
21
+ * The effective type is the one `OrderJournalEntryFactory` books on — the product's own id when
22
+ * set, otherwise its product type's default. An event product that inherits a non-deferred
23
+ * default is the case a naive check misses.
24
+ *
25
+ * No effective type, or one that cannot be resolved, returns false: booking already fails loudly
26
+ * on a missing type and a second warning would be noise.
27
+ */
28
+ export declare function ShouldConfirmEventRevRec(input: EventRevRecConfirmInput): boolean;
29
+ /**
30
+ * The Product form Explorer mounts, plus one save-time confirmation (golive #211).
31
+ *
32
+ * It reuses the GENERATED template verbatim, so the UI is unchanged and keeps tracking CodeGen;
33
+ * the only behavioural delta is `SaveRecord`. Priority 2 puts it ahead of the generated form's own
34
+ * registration — `BizAppsProductFormComponent` in this same folder is NOT registered and is not the
35
+ * form that renders.
36
+ */
37
+ export declare class BizAppsProductSaveGuardFormComponent extends mjBizAppsOrdersProductFormComponent {
38
+ /** MJ's house confirmation dialog — native `window.confirm` is banned in this codebase. */
39
+ protected ConfirmService: MJConfirmService;
40
+ /**
41
+ * Confirms first when this is an event product booking revenue up front. Declining writes
42
+ * nothing and leaves the form dirty and in edit mode; confirming saves exactly as before.
43
+ */
44
+ SaveRecord(StopEditModeAfterSave: boolean): Promise<boolean>;
45
+ /**
46
+ * Reads OrdersEngine (network on first call in a session) and resolves both lookups from the
47
+ * LIVE record — the form's cached type records are stale after an in-session type change.
48
+ *
49
+ * Fails open: an engine that will not load leaves today's behaviour (save, no prompt) rather
50
+ * than blocking a save on an unrelated error.
51
+ */
52
+ protected NeedsEventRevRecConfirmation(): Promise<boolean>;
53
+ static ɵfac: i0.ɵɵFactoryDeclaration<BizAppsProductSaveGuardFormComponent, never>;
54
+ static ɵcmp: i0.ɵɵComponentDeclaration<BizAppsProductSaveGuardFormComponent, "bizapps-product-save-guard-form", never, {}, {}, never, never, false, never>;
55
+ }
56
+ /** Tree-shaking prevention anchor function */
57
+ export declare function LoadProductSaveGuardFormComponent(): void;
58
+ //# sourceMappingURL=product-save-guard-form.component.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"product-save-guard-form.component.d.ts","sourceRoot":"","sources":["../../../../src/lib/custom/Product/product-save-guard-form.component.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAC;AAEpE,OAAO,EAAE,mCAAmC,EAAE,MAAM,uFAAuF,CAAC;;AAE5I,+EAA+E;AAC/E,eAAO,MAAM,8BAA8B,sCAAsC,CAAC;AAElF,mCAAmC;AACnC,eAAO,MAAM,6BAA6B,iFACwC,CAAC;AAEnF,MAAM,MAAM,uBAAuB,GAAG;IAClC,iBAAiB,EAAE,OAAO,CAAC;IAC3B,wDAAwD;IACxD,YAAY,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC;IACxC,qFAAqF;IACrF,0BAA0B,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC;IACtD,uDAAuD;IACvD,cAAc,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,OAAO,GAAG,IAAI,GAAG,SAAS,CAAC;CAC9D,CAAC;AAEF;;;;;;;;;;GAUG;AACH,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,uBAAuB,GAAG,OAAO,CAOhF;AAED;;;;;;;GAOG;AACH,qBAMa,oCAAqC,SAAQ,mCAAmC;IACzF,2FAA2F;IAC3F,SAAS,CAAC,cAAc,mBAA4B;IAEpD;;;OAGG;IACmB,UAAU,CAAC,qBAAqB,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;IAelF;;;;;;OAMG;cACa,4BAA4B,IAAI,OAAO,CAAC,OAAO,CAAC;yCA9BvD,oCAAoC;2CAApC,oCAAoC;CAoDhD;AAED,8CAA8C;AAC9C,wBAAgB,iCAAiC,IAAI,IAAI,CAExD"}
@@ -0,0 +1,360 @@
1
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ };
7
+ import { Component, inject } from '@angular/core';
8
+ import { LogError } from '@memberjunction/core';
9
+ import { RegisterClass } from '@memberjunction/global';
10
+ import { BaseFormComponent } from '@memberjunction/ng-base-forms';
11
+ import { MJConfirmService } from '@memberjunction/ng-ui-components';
12
+ import { OrdersEngine } from '@mj-biz-apps/orders-entities';
13
+ import { mjBizAppsOrdersProductFormComponent } from '../../generated/Entities/mjBizAppsOrdersProduct/mjbizappsordersproduct.form.component.js';
14
+ import * as i0 from "@angular/core";
15
+ import * as i1 from "@memberjunction/ng-base-forms";
16
+ function BizAppsProductSaveGuardFormComponent_Conditional_33_Template(rf, ctx) { if (rf & 1) {
17
+ const _r1 = i0.ɵɵgetCurrentView();
18
+ i0.ɵɵelementStart(0, "div")(1, "mj-explorer-entity-data-grid", 42);
19
+ i0.ɵɵlistener("Navigate", function BizAppsProductSaveGuardFormComponent_Conditional_33_Template_mj_explorer_entity_data_grid_Navigate_1_listener($event) { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.OnFormNavigate($event)); })("AfterDataLoad", function BizAppsProductSaveGuardFormComponent_Conditional_33_Template_mj_explorer_entity_data_grid_AfterDataLoad_1_listener($event) { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.SetSectionRowCount("mJBizAppsOrdersProductEntitlements", $event.totalRowCount)); });
20
+ i0.ɵɵelementEnd()();
21
+ } if (rf & 2) {
22
+ const ctx_r1 = i0.ɵɵnextContext();
23
+ i0.ɵɵadvance();
24
+ i0.ɵɵproperty("Params", ctx_r1.BuildRelationshipViewParamsByEntityName("MJ_BizApps_Orders: Product Entitlements", "ProductID"))("NewRecordValues", ctx_r1.NewRecordValues("MJ_BizApps_Orders: Product Entitlements", "ProductID"))("AllowLoad", ctx_r1.IsSectionExpanded("mJBizAppsOrdersProductEntitlements"))("ShowToolbar", true);
25
+ } }
26
+ function BizAppsProductSaveGuardFormComponent_Conditional_35_Template(rf, ctx) { if (rf & 1) {
27
+ const _r3 = i0.ɵɵgetCurrentView();
28
+ i0.ɵɵelementStart(0, "div")(1, "mj-explorer-entity-data-grid", 42);
29
+ i0.ɵɵlistener("Navigate", function BizAppsProductSaveGuardFormComponent_Conditional_35_Template_mj_explorer_entity_data_grid_Navigate_1_listener($event) { i0.ɵɵrestoreView(_r3); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.OnFormNavigate($event)); })("AfterDataLoad", function BizAppsProductSaveGuardFormComponent_Conditional_35_Template_mj_explorer_entity_data_grid_AfterDataLoad_1_listener($event) { i0.ɵɵrestoreView(_r3); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.SetSectionRowCount("mJBizAppsOrdersProductBundleItemsComponentProductID", $event.totalRowCount)); });
30
+ i0.ɵɵelementEnd()();
31
+ } if (rf & 2) {
32
+ const ctx_r1 = i0.ɵɵnextContext();
33
+ i0.ɵɵadvance();
34
+ i0.ɵɵproperty("Params", ctx_r1.BuildRelationshipViewParamsByEntityName("MJ_BizApps_Orders: Product Bundle Items", "ComponentProductID"))("NewRecordValues", ctx_r1.NewRecordValues("MJ_BizApps_Orders: Product Bundle Items", "ComponentProductID"))("AllowLoad", ctx_r1.IsSectionExpanded("mJBizAppsOrdersProductBundleItemsComponentProductID"))("ShowToolbar", true);
35
+ } }
36
+ function BizAppsProductSaveGuardFormComponent_Conditional_37_Template(rf, ctx) { if (rf & 1) {
37
+ const _r4 = i0.ɵɵgetCurrentView();
38
+ i0.ɵɵelementStart(0, "div")(1, "mj-explorer-entity-data-grid", 42);
39
+ i0.ɵɵlistener("Navigate", function BizAppsProductSaveGuardFormComponent_Conditional_37_Template_mj_explorer_entity_data_grid_Navigate_1_listener($event) { i0.ɵɵrestoreView(_r4); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.OnFormNavigate($event)); })("AfterDataLoad", function BizAppsProductSaveGuardFormComponent_Conditional_37_Template_mj_explorer_entity_data_grid_AfterDataLoad_1_listener($event) { i0.ɵɵrestoreView(_r4); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.SetSectionRowCount("mJBizAppsOrdersProductBundleItemsBundleProductID", $event.totalRowCount)); });
40
+ i0.ɵɵelementEnd()();
41
+ } if (rf & 2) {
42
+ const ctx_r1 = i0.ɵɵnextContext();
43
+ i0.ɵɵadvance();
44
+ i0.ɵɵproperty("Params", ctx_r1.BuildRelationshipViewParamsByEntityName("MJ_BizApps_Orders: Product Bundle Items", "BundleProductID"))("NewRecordValues", ctx_r1.NewRecordValues("MJ_BizApps_Orders: Product Bundle Items", "BundleProductID"))("AllowLoad", ctx_r1.IsSectionExpanded("mJBizAppsOrdersProductBundleItemsBundleProductID"))("ShowToolbar", true);
45
+ } }
46
+ function BizAppsProductSaveGuardFormComponent_Conditional_39_Template(rf, ctx) { if (rf & 1) {
47
+ const _r5 = i0.ɵɵgetCurrentView();
48
+ i0.ɵɵelementStart(0, "div")(1, "mj-explorer-entity-data-grid", 42);
49
+ i0.ɵɵlistener("Navigate", function BizAppsProductSaveGuardFormComponent_Conditional_39_Template_mj_explorer_entity_data_grid_Navigate_1_listener($event) { i0.ɵɵrestoreView(_r5); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.OnFormNavigate($event)); })("AfterDataLoad", function BizAppsProductSaveGuardFormComponent_Conditional_39_Template_mj_explorer_entity_data_grid_AfterDataLoad_1_listener($event) { i0.ɵɵrestoreView(_r5); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.SetSectionRowCount("mJBizAppsOrdersProducts", $event.totalRowCount)); });
50
+ i0.ɵɵelementEnd()();
51
+ } if (rf & 2) {
52
+ const ctx_r1 = i0.ɵɵnextContext();
53
+ i0.ɵɵadvance();
54
+ i0.ɵɵproperty("Params", ctx_r1.BuildRelationshipViewParamsByEntityName("MJ_BizApps_Orders: Products", "SuccessorProductID"))("NewRecordValues", ctx_r1.NewRecordValues("MJ_BizApps_Orders: Products", "SuccessorProductID"))("AllowLoad", ctx_r1.IsSectionExpanded("mJBizAppsOrdersProducts"))("ShowToolbar", true);
55
+ } }
56
+ function BizAppsProductSaveGuardFormComponent_Conditional_41_Template(rf, ctx) { if (rf & 1) {
57
+ const _r6 = i0.ɵɵgetCurrentView();
58
+ i0.ɵɵelementStart(0, "div")(1, "mj-explorer-entity-data-grid", 42);
59
+ i0.ɵɵlistener("Navigate", function BizAppsProductSaveGuardFormComponent_Conditional_41_Template_mj_explorer_entity_data_grid_Navigate_1_listener($event) { i0.ɵɵrestoreView(_r6); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.OnFormNavigate($event)); })("AfterDataLoad", function BizAppsProductSaveGuardFormComponent_Conditional_41_Template_mj_explorer_entity_data_grid_AfterDataLoad_1_listener($event) { i0.ɵɵrestoreView(_r6); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.SetSectionRowCount("mJBizAppsOrdersOrderLinesSourceBundleProductID", $event.totalRowCount)); });
60
+ i0.ɵɵelementEnd()();
61
+ } if (rf & 2) {
62
+ const ctx_r1 = i0.ɵɵnextContext();
63
+ i0.ɵɵadvance();
64
+ i0.ɵɵproperty("Params", ctx_r1.BuildRelationshipViewParamsByEntityName("MJ_BizApps_Orders: Order Lines", "SourceBundleProductID"))("NewRecordValues", ctx_r1.NewRecordValues("MJ_BizApps_Orders: Order Lines", "SourceBundleProductID"))("AllowLoad", ctx_r1.IsSectionExpanded("mJBizAppsOrdersOrderLinesSourceBundleProductID"))("ShowToolbar", true);
65
+ } }
66
+ function BizAppsProductSaveGuardFormComponent_Conditional_43_Template(rf, ctx) { if (rf & 1) {
67
+ const _r7 = i0.ɵɵgetCurrentView();
68
+ i0.ɵɵelementStart(0, "div")(1, "mj-explorer-entity-data-grid", 42);
69
+ i0.ɵɵlistener("Navigate", function BizAppsProductSaveGuardFormComponent_Conditional_43_Template_mj_explorer_entity_data_grid_Navigate_1_listener($event) { i0.ɵɵrestoreView(_r7); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.OnFormNavigate($event)); })("AfterDataLoad", function BizAppsProductSaveGuardFormComponent_Conditional_43_Template_mj_explorer_entity_data_grid_AfterDataLoad_1_listener($event) { i0.ɵɵrestoreView(_r7); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.SetSectionRowCount("mJBizAppsOrdersOrderLinesProductID", $event.totalRowCount)); });
70
+ i0.ɵɵelementEnd()();
71
+ } if (rf & 2) {
72
+ const ctx_r1 = i0.ɵɵnextContext();
73
+ i0.ɵɵadvance();
74
+ i0.ɵɵproperty("Params", ctx_r1.BuildRelationshipViewParamsByEntityName("MJ_BizApps_Orders: Order Lines", "ProductID"))("NewRecordValues", ctx_r1.NewRecordValues("MJ_BizApps_Orders: Order Lines", "ProductID"))("AllowLoad", ctx_r1.IsSectionExpanded("mJBizAppsOrdersOrderLinesProductID"))("ShowToolbar", true);
75
+ } }
76
+ function BizAppsProductSaveGuardFormComponent_Conditional_45_Template(rf, ctx) { if (rf & 1) {
77
+ const _r8 = i0.ɵɵgetCurrentView();
78
+ i0.ɵɵelementStart(0, "div")(1, "mj-explorer-entity-data-grid", 42);
79
+ i0.ɵɵlistener("Navigate", function BizAppsProductSaveGuardFormComponent_Conditional_45_Template_mj_explorer_entity_data_grid_Navigate_1_listener($event) { i0.ɵɵrestoreView(_r8); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.OnFormNavigate($event)); })("AfterDataLoad", function BizAppsProductSaveGuardFormComponent_Conditional_45_Template_mj_explorer_entity_data_grid_AfterDataLoad_1_listener($event) { i0.ɵɵrestoreView(_r8); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.SetSectionRowCount("mJBizAppsOrdersSubscriptions", $event.totalRowCount)); });
80
+ i0.ɵɵelementEnd()();
81
+ } if (rf & 2) {
82
+ const ctx_r1 = i0.ɵɵnextContext();
83
+ i0.ɵɵadvance();
84
+ i0.ɵɵproperty("Params", ctx_r1.BuildRelationshipViewParamsByEntityName("MJ_BizApps_Orders: Subscriptions", "ProductID"))("NewRecordValues", ctx_r1.NewRecordValues("MJ_BizApps_Orders: Subscriptions", "ProductID"))("AllowLoad", ctx_r1.IsSectionExpanded("mJBizAppsOrdersSubscriptions"))("ShowToolbar", true);
85
+ } }
86
+ function BizAppsProductSaveGuardFormComponent_Conditional_47_Template(rf, ctx) { if (rf & 1) {
87
+ const _r9 = i0.ɵɵgetCurrentView();
88
+ i0.ɵɵelementStart(0, "div")(1, "mj-explorer-entity-data-grid", 42);
89
+ i0.ɵɵlistener("Navigate", function BizAppsProductSaveGuardFormComponent_Conditional_47_Template_mj_explorer_entity_data_grid_Navigate_1_listener($event) { i0.ɵɵrestoreView(_r9); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.OnFormNavigate($event)); })("AfterDataLoad", function BizAppsProductSaveGuardFormComponent_Conditional_47_Template_mj_explorer_entity_data_grid_AfterDataLoad_1_listener($event) { i0.ɵɵrestoreView(_r9); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.SetSectionRowCount("mJBizAppsOrdersProductPrices", $event.totalRowCount)); });
90
+ i0.ɵɵelementEnd()();
91
+ } if (rf & 2) {
92
+ const ctx_r1 = i0.ɵɵnextContext();
93
+ i0.ɵɵadvance();
94
+ i0.ɵɵproperty("Params", ctx_r1.BuildRelationshipViewParamsByEntityName("MJ_BizApps_Orders: Product Prices", "ProductID"))("NewRecordValues", ctx_r1.NewRecordValues("MJ_BizApps_Orders: Product Prices", "ProductID"))("AllowLoad", ctx_r1.IsSectionExpanded("mJBizAppsOrdersProductPrices"))("ShowToolbar", true);
95
+ } }
96
+ function BizAppsProductSaveGuardFormComponent_Conditional_49_Template(rf, ctx) { if (rf & 1) {
97
+ const _r10 = i0.ɵɵgetCurrentView();
98
+ i0.ɵɵelementStart(0, "div")(1, "mj-explorer-entity-data-grid", 42);
99
+ i0.ɵɵlistener("Navigate", function BizAppsProductSaveGuardFormComponent_Conditional_49_Template_mj_explorer_entity_data_grid_Navigate_1_listener($event) { i0.ɵɵrestoreView(_r10); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.OnFormNavigate($event)); })("AfterDataLoad", function BizAppsProductSaveGuardFormComponent_Conditional_49_Template_mj_explorer_entity_data_grid_AfterDataLoad_1_listener($event) { i0.ɵɵrestoreView(_r10); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.SetSectionRowCount("mJBizAppsOrdersPromotionTargets", $event.totalRowCount)); });
100
+ i0.ɵɵelementEnd()();
101
+ } if (rf & 2) {
102
+ const ctx_r1 = i0.ɵɵnextContext();
103
+ i0.ɵɵadvance();
104
+ i0.ɵɵproperty("Params", ctx_r1.BuildRelationshipViewParamsByEntityName("MJ_BizApps_Orders: Promotion Targets", "ProductID"))("NewRecordValues", ctx_r1.NewRecordValues("MJ_BizApps_Orders: Promotion Targets", "ProductID"))("AllowLoad", ctx_r1.IsSectionExpanded("mJBizAppsOrdersPromotionTargets"))("ShowToolbar", true);
105
+ } }
106
+ /** The product type extension entity that makes a product an event product. */
107
+ export const EVENT_PRODUCT_EXTENSION_ENTITY = 'MJ_BizApps_Orders: Event Products';
108
+ /** Wording is from golive #211. */
109
+ export const EVENT_REV_REC_CONFIRM_MESSAGE = 'This event product will recognize revenue at booking, not at the event date.';
110
+ /**
111
+ * True when saving this product should ask first: an event product whose EFFECTIVE revenue
112
+ * recognition type is not deferred, i.e. revenue books at sale rather than at the event.
113
+ *
114
+ * The effective type is the one `OrderJournalEntryFactory` books on — the product's own id when
115
+ * set, otherwise its product type's default. An event product that inherits a non-deferred
116
+ * default is the case a naive check misses.
117
+ *
118
+ * No effective type, or one that cannot be resolved, returns false: booking already fails loudly
119
+ * on a missing type and a second warning would be noise.
120
+ */
121
+ export function ShouldConfirmEventRevRec(input) {
122
+ if (!input.hasEventExtension)
123
+ return false;
124
+ const effectiveID = input.revRecTypeID?.trim() || input.productTypeDefaultRevRecID?.trim() || null;
125
+ if (!effectiveID)
126
+ return false;
127
+ return input.isDeferredByID(effectiveID) === false;
128
+ }
129
+ /**
130
+ * The Product form Explorer mounts, plus one save-time confirmation (golive #211).
131
+ *
132
+ * It reuses the GENERATED template verbatim, so the UI is unchanged and keeps tracking CodeGen;
133
+ * the only behavioural delta is `SaveRecord`. Priority 2 puts it ahead of the generated form's own
134
+ * registration — `BizAppsProductFormComponent` in this same folder is NOT registered and is not the
135
+ * form that renders.
136
+ */
137
+ let BizAppsProductSaveGuardFormComponent = class BizAppsProductSaveGuardFormComponent extends mjBizAppsOrdersProductFormComponent {
138
+ /** MJ's house confirmation dialog — native `window.confirm` is banned in this codebase. */
139
+ ConfirmService = inject(MJConfirmService);
140
+ /**
141
+ * Confirms first when this is an event product booking revenue up front. Declining writes
142
+ * nothing and leaves the form dirty and in edit mode; confirming saves exactly as before.
143
+ */
144
+ async SaveRecord(StopEditModeAfterSave) {
145
+ if (await this.NeedsEventRevRecConfirmation()) {
146
+ const proceed = await this.ConfirmService.Confirm({
147
+ title: 'Recognize revenue at booking?',
148
+ message: EVENT_REV_REC_CONFIRM_MESSAGE,
149
+ detail: 'Event products normally defer revenue until the event date.',
150
+ type: 'warning',
151
+ confirmText: 'Save anyway',
152
+ cancelText: 'Cancel',
153
+ });
154
+ if (!proceed)
155
+ return false;
156
+ }
157
+ return super.SaveRecord(StopEditModeAfterSave);
158
+ }
159
+ /**
160
+ * Reads OrdersEngine (network on first call in a session) and resolves both lookups from the
161
+ * LIVE record — the form's cached type records are stale after an in-session type change.
162
+ *
163
+ * Fails open: an engine that will not load leaves today's behaviour (save, no prompt) rather
164
+ * than blocking a save on an unrelated error.
165
+ */
166
+ async NeedsEventRevRecConfirmation() {
167
+ const record = this.record;
168
+ if (!record)
169
+ return false;
170
+ try {
171
+ const engine = OrdersEngine.Instance;
172
+ await engine.EnsureLoaded();
173
+ const productType = engine.ProductTypeByID(record.ProductTypeID);
174
+ return ShouldConfirmEventRevRec({
175
+ hasEventExtension: productType?.ProductExtensionEntity === EVENT_PRODUCT_EXTENSION_ENTITY ||
176
+ record.ISAChild?.EntityInfo?.Name === EVENT_PRODUCT_EXTENSION_ENTITY,
177
+ revRecTypeID: record.RevenueRecognitionTypeID,
178
+ productTypeDefaultRevRecID: productType?.DefaultRevenueRecognitionTypeID,
179
+ isDeferredByID: (id) => engine.RevenueRecognitionTypeByID(id)?.IsDeferred,
180
+ });
181
+ }
182
+ catch (e) {
183
+ LogError(`Event rev-rec save confirmation skipped — OrdersEngine unavailable: ${e}`);
184
+ return false;
185
+ }
186
+ }
187
+ static ɵfac = /*@__PURE__*/ (() => { let ɵBizAppsProductSaveGuardFormComponent_BaseFactory; return function BizAppsProductSaveGuardFormComponent_Factory(__ngFactoryType__) { return (ɵBizAppsProductSaveGuardFormComponent_BaseFactory || (ɵBizAppsProductSaveGuardFormComponent_BaseFactory = i0.ɵɵgetInheritedFactory(BizAppsProductSaveGuardFormComponent)))(__ngFactoryType__ || BizAppsProductSaveGuardFormComponent); }; })();
188
+ static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: BizAppsProductSaveGuardFormComponent, selectors: [["bizapps-product-save-guard-form"]], standalone: false, features: [i0.ɵɵInheritDefinitionFeature], decls: 51, vars: 164, consts: [[3, "Navigate", "DeleteRequested", "FavoriteToggled", "HistoryRequested", "ListManagementRequested", "Record", "FormComponent"], ["Slot", "before-fields", 3, "Entity", "Record", "FormComponent", "FormContext"], ["SectionKey", "productIdentification", "SectionName", "Product Identification", "Icon", "fa fa-tag", 3, "Form", "FormContext"], ["FieldName", "Name", "Type", "textbox", 3, "Record", "ShowLabel", "EditMode", "FormContext"], ["FieldName", "SKU", "Type", "textbox", 3, "Record", "ShowLabel", "EditMode", "FormContext"], ["FieldName", "Description", "Type", "textarea", 3, "Record", "ShowLabel", "EditMode", "FormContext"], ["SectionKey", "productClassification", "SectionName", "Product Classification", "Icon", "fa fa-list-ul", 3, "Form", "FormContext"], ["FieldName", "ProductTypeID", "Type", "textbox", "LinkType", "Record", 3, "Record", "ShowLabel", "EditMode", "FormContext"], ["FieldName", "ProductCategoryID", "Type", "textbox", "LinkType", "Record", 3, "Record", "ShowLabel", "EditMode", "FormContext"], ["SectionKey", "financialAndAccounting", "SectionName", "Financial and Accounting", "Icon", "fa fa-dollar-sign", 3, "Form", "FormContext"], ["FieldName", "CompanyID", "Type", "textbox", "LinkType", "Record", 3, "Record", "ShowLabel", "EditMode", "FormContext"], ["FieldName", "RevenueRecognitionTypeID", "Type", "textbox", "LinkType", "Record", 3, "Record", "ShowLabel", "EditMode", "FormContext"], ["FieldName", "StandaloneSellingPrice", "Type", "number", 3, "Record", "ShowLabel", "EditMode", "FormContext"], ["FieldName", "IsTaxable", "Type", "checkbox", 3, "Record", "ShowLabel", "EditMode", "FormContext"], ["FieldName", "TaxCategory", "Type", "textbox", 3, "Record", "ShowLabel", "EditMode", "FormContext"], ["SectionKey", "catalogLifecycle", "SectionName", "Catalog Lifecycle", "Icon", "fa fa-history", 3, "Form", "FormContext"], ["FieldName", "Status", "Type", "select", 3, "Record", "ShowLabel", "EditMode", "FormContext"], ["FieldName", "SuccessorProductID", "Type", "textbox", "LinkType", "Record", 3, "Record", "ShowLabel", "EditMode", "FormContext"], ["FieldName", "AvailableFrom", "Type", "datepicker", 3, "Record", "ShowLabel", "EditMode", "FormContext"], ["FieldName", "AvailableTo", "Type", "datepicker", 3, "Record", "ShowLabel", "EditMode", "FormContext"], ["SectionKey", "subscriptionAndEntitlements", "SectionName", "Subscription and Entitlements", "Icon", "fa fa-key", 3, "Form", "FormContext"], ["FieldName", "SubscriptionTypeID", "Type", "textbox", "LinkType", "Record", 3, "Record", "ShowLabel", "EditMode", "FormContext"], ["FieldName", "EntitlementGrantTiming", "Type", "select", 3, "Record", "ShowLabel", "EditMode", "FormContext"], ["FieldName", "EntitlementQuantityMode", "Type", "select", 3, "Record", "ShowLabel", "EditMode", "FormContext"], ["FieldName", "EntitlementValidityMode", "Type", "select", 3, "Record", "ShowLabel", "EditMode", "FormContext"], ["SectionKey", "details", "SectionName", "Details", "Icon", "fa fa-align-left", 3, "Form", "FormContext"], ["FieldName", "PricingDriverClass", "Type", "textbox", 3, "Record", "ShowLabel", "EditMode", "FormContext"], ["FieldName", "MaxQuantityPerLine", "Type", "number", 3, "Record", "ShowLabel", "EditMode", "FormContext"], ["SectionKey", "systemMetadata", "SectionName", "System Metadata", "Icon", "fa fa-cog", 3, "Form", "FormContext"], ["FieldName", "__mj_CreatedAt", "Type", "textbox", 3, "Record", "ShowLabel", "EditMode", "FormContext"], ["FieldName", "__mj_UpdatedAt", "Type", "textbox", 3, "Record", "ShowLabel", "EditMode", "FormContext"], ["Slot", "after-fields", 3, "Entity", "Record", "FormComponent", "FormContext"], ["SectionKey", "mJBizAppsOrdersProductEntitlements", "SectionName", "Entitlements", "Icon", "fa fa-box-open", "Variant", "related-entity", 3, "Form", "FormContext", "BadgeCount", "DefaultExpanded"], ["SectionKey", "mJBizAppsOrdersProductBundleItemsComponentProductID", "SectionName", "Product Bundle Items (Component Product ID)", "Icon", "fa fa-box-open", "Variant", "related-entity", 3, "Form", "FormContext", "BadgeCount", "DefaultExpanded"], ["SectionKey", "mJBizAppsOrdersProductBundleItemsBundleProductID", "SectionName", "Bundle Items", "Icon", "fa fa-box-open", "Variant", "related-entity", 3, "Form", "FormContext", "BadgeCount", "DefaultExpanded"], ["SectionKey", "mJBizAppsOrdersProducts", "SectionName", "Products", "Icon", "fa fa-box", "Variant", "related-entity", 3, "Form", "FormContext", "BadgeCount", "DefaultExpanded"], ["SectionKey", "mJBizAppsOrdersOrderLinesSourceBundleProductID", "SectionName", "Order Lines (Source Bundle Product)", "Icon", "fa fa-list-ol", "Variant", "related-entity", 3, "Form", "FormContext", "BadgeCount", "DefaultExpanded"], ["SectionKey", "mJBizAppsOrdersOrderLinesProductID", "SectionName", "Order Lines (Product)", "Icon", "fa fa-list-ol", "Variant", "related-entity", 3, "Form", "FormContext", "BadgeCount", "DefaultExpanded"], ["SectionKey", "mJBizAppsOrdersSubscriptions", "SectionName", "Subscriptions", "Icon", "fa fa-sync-alt", "Variant", "related-entity", 3, "Form", "FormContext", "BadgeCount", "DefaultExpanded"], ["SectionKey", "mJBizAppsOrdersProductPrices", "SectionName", "Product Prices", "Icon", "fa fa-tags", "Variant", "related-entity", 3, "Form", "FormContext", "BadgeCount", "DefaultExpanded"], ["SectionKey", "mJBizAppsOrdersPromotionTargets", "SectionName", "Promotion Targets", "Icon", "fa fa-tags", "Variant", "related-entity", 3, "Form", "FormContext", "BadgeCount", "DefaultExpanded"], ["Slot", "after-related", 3, "Entity", "Record", "FormComponent", "FormContext"], [3, "Navigate", "AfterDataLoad", "Params", "NewRecordValues", "AllowLoad", "ShowToolbar"]], template: function BizAppsProductSaveGuardFormComponent_Template(rf, ctx) { if (rf & 1) {
189
+ i0.ɵɵelementStart(0, "mj-record-form-container", 0);
190
+ i0.ɵɵlistener("Navigate", function BizAppsProductSaveGuardFormComponent_Template_mj_record_form_container_Navigate_0_listener($event) { return ctx.OnFormNavigate($event); })("DeleteRequested", function BizAppsProductSaveGuardFormComponent_Template_mj_record_form_container_DeleteRequested_0_listener() { return ctx.OnDeleteRequested(); })("FavoriteToggled", function BizAppsProductSaveGuardFormComponent_Template_mj_record_form_container_FavoriteToggled_0_listener() { return ctx.OnFavoriteToggled(); })("HistoryRequested", function BizAppsProductSaveGuardFormComponent_Template_mj_record_form_container_HistoryRequested_0_listener() { return ctx.OnHistoryRequested(); })("ListManagementRequested", function BizAppsProductSaveGuardFormComponent_Template_mj_record_form_container_ListManagementRequested_0_listener() { return ctx.OnListManagementRequested(); });
191
+ i0.ɵɵelement(1, "mj-form-panel-slot", 1);
192
+ i0.ɵɵelementStart(2, "mj-collapsible-panel", 2);
193
+ i0.ɵɵelement(3, "mj-form-field", 3)(4, "mj-form-field", 4)(5, "mj-form-field", 5);
194
+ i0.ɵɵelementEnd();
195
+ i0.ɵɵelementStart(6, "mj-collapsible-panel", 6);
196
+ i0.ɵɵelement(7, "mj-form-field", 7)(8, "mj-form-field", 8);
197
+ i0.ɵɵelementEnd();
198
+ i0.ɵɵelementStart(9, "mj-collapsible-panel", 9);
199
+ i0.ɵɵelement(10, "mj-form-field", 10)(11, "mj-form-field", 11)(12, "mj-form-field", 12)(13, "mj-form-field", 13)(14, "mj-form-field", 14);
200
+ i0.ɵɵelementEnd();
201
+ i0.ɵɵelementStart(15, "mj-collapsible-panel", 15);
202
+ i0.ɵɵelement(16, "mj-form-field", 16)(17, "mj-form-field", 17)(18, "mj-form-field", 18)(19, "mj-form-field", 19);
203
+ i0.ɵɵelementEnd();
204
+ i0.ɵɵelementStart(20, "mj-collapsible-panel", 20);
205
+ i0.ɵɵelement(21, "mj-form-field", 21)(22, "mj-form-field", 22)(23, "mj-form-field", 23)(24, "mj-form-field", 24);
206
+ i0.ɵɵelementEnd();
207
+ i0.ɵɵelementStart(25, "mj-collapsible-panel", 25);
208
+ i0.ɵɵelement(26, "mj-form-field", 26)(27, "mj-form-field", 27);
209
+ i0.ɵɵelementEnd();
210
+ i0.ɵɵelementStart(28, "mj-collapsible-panel", 28);
211
+ i0.ɵɵelement(29, "mj-form-field", 29)(30, "mj-form-field", 30);
212
+ i0.ɵɵelementEnd();
213
+ i0.ɵɵelement(31, "mj-form-panel-slot", 31);
214
+ i0.ɵɵelementStart(32, "mj-collapsible-panel", 32);
215
+ i0.ɵɵconditionalCreate(33, BizAppsProductSaveGuardFormComponent_Conditional_33_Template, 2, 4, "div");
216
+ i0.ɵɵelementEnd();
217
+ i0.ɵɵelementStart(34, "mj-collapsible-panel", 33);
218
+ i0.ɵɵconditionalCreate(35, BizAppsProductSaveGuardFormComponent_Conditional_35_Template, 2, 4, "div");
219
+ i0.ɵɵelementEnd();
220
+ i0.ɵɵelementStart(36, "mj-collapsible-panel", 34);
221
+ i0.ɵɵconditionalCreate(37, BizAppsProductSaveGuardFormComponent_Conditional_37_Template, 2, 4, "div");
222
+ i0.ɵɵelementEnd();
223
+ i0.ɵɵelementStart(38, "mj-collapsible-panel", 35);
224
+ i0.ɵɵconditionalCreate(39, BizAppsProductSaveGuardFormComponent_Conditional_39_Template, 2, 4, "div");
225
+ i0.ɵɵelementEnd();
226
+ i0.ɵɵelementStart(40, "mj-collapsible-panel", 36);
227
+ i0.ɵɵconditionalCreate(41, BizAppsProductSaveGuardFormComponent_Conditional_41_Template, 2, 4, "div");
228
+ i0.ɵɵelementEnd();
229
+ i0.ɵɵelementStart(42, "mj-collapsible-panel", 37);
230
+ i0.ɵɵconditionalCreate(43, BizAppsProductSaveGuardFormComponent_Conditional_43_Template, 2, 4, "div");
231
+ i0.ɵɵelementEnd();
232
+ i0.ɵɵelementStart(44, "mj-collapsible-panel", 38);
233
+ i0.ɵɵconditionalCreate(45, BizAppsProductSaveGuardFormComponent_Conditional_45_Template, 2, 4, "div");
234
+ i0.ɵɵelementEnd();
235
+ i0.ɵɵelementStart(46, "mj-collapsible-panel", 39);
236
+ i0.ɵɵconditionalCreate(47, BizAppsProductSaveGuardFormComponent_Conditional_47_Template, 2, 4, "div");
237
+ i0.ɵɵelementEnd();
238
+ i0.ɵɵelementStart(48, "mj-collapsible-panel", 40);
239
+ i0.ɵɵconditionalCreate(49, BizAppsProductSaveGuardFormComponent_Conditional_49_Template, 2, 4, "div");
240
+ i0.ɵɵelementEnd();
241
+ i0.ɵɵelement(50, "mj-form-panel-slot", 41);
242
+ i0.ɵɵelementEnd();
243
+ } if (rf & 2) {
244
+ i0.ɵɵproperty("Record", ctx.record)("FormComponent", ctx);
245
+ i0.ɵɵadvance();
246
+ i0.ɵɵproperty("Entity", i0.ɵɵinterpolate(ctx.record.EntityInfo.Name))("Record", ctx.record)("FormComponent", ctx)("FormContext", ctx.formContext);
247
+ i0.ɵɵadvance();
248
+ i0.ɵɵproperty("Form", ctx)("FormContext", ctx.formContext);
249
+ i0.ɵɵadvance();
250
+ i0.ɵɵproperty("Record", ctx.record)("ShowLabel", true)("EditMode", ctx.EditMode)("FormContext", ctx.formContext);
251
+ i0.ɵɵadvance();
252
+ i0.ɵɵproperty("Record", ctx.record)("ShowLabel", true)("EditMode", ctx.EditMode)("FormContext", ctx.formContext);
253
+ i0.ɵɵadvance();
254
+ i0.ɵɵproperty("Record", ctx.record)("ShowLabel", true)("EditMode", ctx.EditMode)("FormContext", ctx.formContext);
255
+ i0.ɵɵadvance();
256
+ i0.ɵɵproperty("Form", ctx)("FormContext", ctx.formContext);
257
+ i0.ɵɵadvance();
258
+ i0.ɵɵproperty("Record", ctx.record)("ShowLabel", true)("EditMode", ctx.EditMode)("FormContext", ctx.formContext);
259
+ i0.ɵɵadvance();
260
+ i0.ɵɵproperty("Record", ctx.record)("ShowLabel", true)("EditMode", ctx.EditMode)("FormContext", ctx.formContext);
261
+ i0.ɵɵadvance();
262
+ i0.ɵɵproperty("Form", ctx)("FormContext", ctx.formContext);
263
+ i0.ɵɵadvance();
264
+ i0.ɵɵproperty("Record", ctx.record)("ShowLabel", true)("EditMode", ctx.EditMode)("FormContext", ctx.formContext);
265
+ i0.ɵɵadvance();
266
+ i0.ɵɵproperty("Record", ctx.record)("ShowLabel", true)("EditMode", ctx.EditMode)("FormContext", ctx.formContext);
267
+ i0.ɵɵadvance();
268
+ i0.ɵɵproperty("Record", ctx.record)("ShowLabel", true)("EditMode", ctx.EditMode)("FormContext", ctx.formContext);
269
+ i0.ɵɵadvance();
270
+ i0.ɵɵproperty("Record", ctx.record)("ShowLabel", true)("EditMode", ctx.EditMode)("FormContext", ctx.formContext);
271
+ i0.ɵɵadvance();
272
+ i0.ɵɵproperty("Record", ctx.record)("ShowLabel", true)("EditMode", ctx.EditMode)("FormContext", ctx.formContext);
273
+ i0.ɵɵadvance();
274
+ i0.ɵɵproperty("Form", ctx)("FormContext", ctx.formContext);
275
+ i0.ɵɵadvance();
276
+ i0.ɵɵproperty("Record", ctx.record)("ShowLabel", true)("EditMode", ctx.EditMode)("FormContext", ctx.formContext);
277
+ i0.ɵɵadvance();
278
+ i0.ɵɵproperty("Record", ctx.record)("ShowLabel", true)("EditMode", ctx.EditMode)("FormContext", ctx.formContext);
279
+ i0.ɵɵadvance();
280
+ i0.ɵɵproperty("Record", ctx.record)("ShowLabel", true)("EditMode", ctx.EditMode)("FormContext", ctx.formContext);
281
+ i0.ɵɵadvance();
282
+ i0.ɵɵproperty("Record", ctx.record)("ShowLabel", true)("EditMode", ctx.EditMode)("FormContext", ctx.formContext);
283
+ i0.ɵɵadvance();
284
+ i0.ɵɵproperty("Form", ctx)("FormContext", ctx.formContext);
285
+ i0.ɵɵadvance();
286
+ i0.ɵɵproperty("Record", ctx.record)("ShowLabel", true)("EditMode", ctx.EditMode)("FormContext", ctx.formContext);
287
+ i0.ɵɵadvance();
288
+ i0.ɵɵproperty("Record", ctx.record)("ShowLabel", true)("EditMode", ctx.EditMode)("FormContext", ctx.formContext);
289
+ i0.ɵɵadvance();
290
+ i0.ɵɵproperty("Record", ctx.record)("ShowLabel", true)("EditMode", ctx.EditMode)("FormContext", ctx.formContext);
291
+ i0.ɵɵadvance();
292
+ i0.ɵɵproperty("Record", ctx.record)("ShowLabel", true)("EditMode", ctx.EditMode)("FormContext", ctx.formContext);
293
+ i0.ɵɵadvance();
294
+ i0.ɵɵproperty("Form", ctx)("FormContext", ctx.formContext);
295
+ i0.ɵɵadvance();
296
+ i0.ɵɵproperty("Record", ctx.record)("ShowLabel", true)("EditMode", ctx.EditMode)("FormContext", ctx.formContext);
297
+ i0.ɵɵadvance();
298
+ i0.ɵɵproperty("Record", ctx.record)("ShowLabel", true)("EditMode", ctx.EditMode)("FormContext", ctx.formContext);
299
+ i0.ɵɵadvance();
300
+ i0.ɵɵproperty("Form", ctx)("FormContext", ctx.formContext);
301
+ i0.ɵɵadvance();
302
+ i0.ɵɵproperty("Record", ctx.record)("ShowLabel", true)("EditMode", ctx.EditMode)("FormContext", ctx.formContext);
303
+ i0.ɵɵadvance();
304
+ i0.ɵɵproperty("Record", ctx.record)("ShowLabel", true)("EditMode", ctx.EditMode)("FormContext", ctx.formContext);
305
+ i0.ɵɵadvance();
306
+ i0.ɵɵproperty("Entity", i0.ɵɵinterpolate(ctx.record.EntityInfo.Name))("Record", ctx.record)("FormComponent", ctx)("FormContext", ctx.formContext);
307
+ i0.ɵɵadvance();
308
+ i0.ɵɵproperty("Form", ctx)("FormContext", ctx.formContext)("BadgeCount", ctx.GetSectionRowCount("mJBizAppsOrdersProductEntitlements"))("DefaultExpanded", false);
309
+ i0.ɵɵadvance();
310
+ i0.ɵɵconditional(ctx.record.IsSaved ? 33 : -1);
311
+ i0.ɵɵadvance();
312
+ i0.ɵɵproperty("Form", ctx)("FormContext", ctx.formContext)("BadgeCount", ctx.GetSectionRowCount("mJBizAppsOrdersProductBundleItemsComponentProductID"))("DefaultExpanded", false);
313
+ i0.ɵɵadvance();
314
+ i0.ɵɵconditional(ctx.record.IsSaved ? 35 : -1);
315
+ i0.ɵɵadvance();
316
+ i0.ɵɵproperty("Form", ctx)("FormContext", ctx.formContext)("BadgeCount", ctx.GetSectionRowCount("mJBizAppsOrdersProductBundleItemsBundleProductID"))("DefaultExpanded", false);
317
+ i0.ɵɵadvance();
318
+ i0.ɵɵconditional(ctx.record.IsSaved ? 37 : -1);
319
+ i0.ɵɵadvance();
320
+ i0.ɵɵproperty("Form", ctx)("FormContext", ctx.formContext)("BadgeCount", ctx.GetSectionRowCount("mJBizAppsOrdersProducts"))("DefaultExpanded", false);
321
+ i0.ɵɵadvance();
322
+ i0.ɵɵconditional(ctx.record.IsSaved ? 39 : -1);
323
+ i0.ɵɵadvance();
324
+ i0.ɵɵproperty("Form", ctx)("FormContext", ctx.formContext)("BadgeCount", ctx.GetSectionRowCount("mJBizAppsOrdersOrderLinesSourceBundleProductID"))("DefaultExpanded", false);
325
+ i0.ɵɵadvance();
326
+ i0.ɵɵconditional(ctx.record.IsSaved ? 41 : -1);
327
+ i0.ɵɵadvance();
328
+ i0.ɵɵproperty("Form", ctx)("FormContext", ctx.formContext)("BadgeCount", ctx.GetSectionRowCount("mJBizAppsOrdersOrderLinesProductID"))("DefaultExpanded", false);
329
+ i0.ɵɵadvance();
330
+ i0.ɵɵconditional(ctx.record.IsSaved ? 43 : -1);
331
+ i0.ɵɵadvance();
332
+ i0.ɵɵproperty("Form", ctx)("FormContext", ctx.formContext)("BadgeCount", ctx.GetSectionRowCount("mJBizAppsOrdersSubscriptions"))("DefaultExpanded", false);
333
+ i0.ɵɵadvance();
334
+ i0.ɵɵconditional(ctx.record.IsSaved ? 45 : -1);
335
+ i0.ɵɵadvance();
336
+ i0.ɵɵproperty("Form", ctx)("FormContext", ctx.formContext)("BadgeCount", ctx.GetSectionRowCount("mJBizAppsOrdersProductPrices"))("DefaultExpanded", false);
337
+ i0.ɵɵadvance();
338
+ i0.ɵɵconditional(ctx.record.IsSaved ? 47 : -1);
339
+ i0.ɵɵadvance();
340
+ i0.ɵɵproperty("Form", ctx)("FormContext", ctx.formContext)("BadgeCount", ctx.GetSectionRowCount("mJBizAppsOrdersPromotionTargets"))("DefaultExpanded", false);
341
+ i0.ɵɵadvance();
342
+ i0.ɵɵconditional(ctx.record.IsSaved ? 49 : -1);
343
+ i0.ɵɵadvance();
344
+ i0.ɵɵproperty("Entity", i0.ɵɵinterpolate(ctx.record.EntityInfo.Name))("Record", ctx.record)("FormComponent", ctx)("FormContext", ctx.formContext);
345
+ } }, dependencies: [i1.MjFormFieldComponent, i1.MjCollapsiblePanelComponent, i1.MjRecordFormContainerComponent, i1.ExplorerEntityDataGridComponent, i1.FormPanelSlotComponent], encapsulation: 2 });
346
+ };
347
+ BizAppsProductSaveGuardFormComponent = __decorate([
348
+ RegisterClass(BaseFormComponent, 'MJ_BizApps_Orders: Products', 2)
349
+ ], BizAppsProductSaveGuardFormComponent);
350
+ export { BizAppsProductSaveGuardFormComponent };
351
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(BizAppsProductSaveGuardFormComponent, [{
352
+ type: Component,
353
+ args: [{ standalone: false, selector: 'bizapps-product-save-guard-form', template: "<mj-record-form-container [Record]=\"record\" [FormComponent]=\"this\"\n (Navigate)=\"OnFormNavigate($event)\"\n (DeleteRequested)=\"OnDeleteRequested()\"\n (FavoriteToggled)=\"OnFavoriteToggled()\"\n (HistoryRequested)=\"OnHistoryRequested()\"\n (ListManagementRequested)=\"OnListManagementRequested()\">\n\n <mj-form-panel-slot Entity=\"{{record.EntityInfo.Name}}\" Slot=\"before-fields\" [Record]=\"record\" [FormComponent]=\"this\" [FormContext]=\"formContext\"></mj-form-panel-slot>\n\n <!-- ========================================\n FIELD PANELS\n ======================================== -->\n <!-- Product Identification Section -->\n <mj-collapsible-panel\n SectionKey=\"productIdentification\"\n SectionName=\"Product Identification\"\n Icon=\"fa fa-tag\"\n [Form]=\"this\"\n [FormContext]=\"formContext\">\n <mj-form-field \n [Record]=\"record\"\n [ShowLabel]=\"true\"\n FieldName=\"Name\"\n Type=\"textbox\"\n [EditMode]=\"EditMode\"\n [FormContext]=\"formContext\"\n ></mj-form-field>\n <mj-form-field \n [Record]=\"record\"\n [ShowLabel]=\"true\"\n FieldName=\"SKU\"\n Type=\"textbox\"\n [EditMode]=\"EditMode\"\n [FormContext]=\"formContext\"\n ></mj-form-field>\n <mj-form-field \n [Record]=\"record\"\n [ShowLabel]=\"true\"\n FieldName=\"Description\"\n Type=\"textarea\"\n [EditMode]=\"EditMode\"\n [FormContext]=\"formContext\"\n ></mj-form-field>\n\n </mj-collapsible-panel>\n\n <!-- Product Classification Section -->\n <mj-collapsible-panel\n SectionKey=\"productClassification\"\n SectionName=\"Product Classification\"\n Icon=\"fa fa-list-ul\"\n [Form]=\"this\"\n [FormContext]=\"formContext\">\n <mj-form-field \n [Record]=\"record\"\n [ShowLabel]=\"true\"\n FieldName=\"ProductTypeID\"\n Type=\"textbox\"\n [EditMode]=\"EditMode\"\n [FormContext]=\"formContext\"\n LinkType=\"Record\"\n ></mj-form-field>\n <mj-form-field \n [Record]=\"record\"\n [ShowLabel]=\"true\"\n FieldName=\"ProductCategoryID\"\n Type=\"textbox\"\n [EditMode]=\"EditMode\"\n [FormContext]=\"formContext\"\n LinkType=\"Record\"\n ></mj-form-field>\n\n </mj-collapsible-panel>\n\n <!-- Financial and Accounting Section -->\n <mj-collapsible-panel\n SectionKey=\"financialAndAccounting\"\n SectionName=\"Financial and Accounting\"\n Icon=\"fa fa-dollar-sign\"\n [Form]=\"this\"\n [FormContext]=\"formContext\">\n <mj-form-field \n [Record]=\"record\"\n [ShowLabel]=\"true\"\n FieldName=\"CompanyID\"\n Type=\"textbox\"\n [EditMode]=\"EditMode\"\n [FormContext]=\"formContext\"\n LinkType=\"Record\"\n ></mj-form-field>\n <mj-form-field \n [Record]=\"record\"\n [ShowLabel]=\"true\"\n FieldName=\"RevenueRecognitionTypeID\"\n Type=\"textbox\"\n [EditMode]=\"EditMode\"\n [FormContext]=\"formContext\"\n LinkType=\"Record\"\n ></mj-form-field>\n <mj-form-field \n [Record]=\"record\"\n [ShowLabel]=\"true\"\n FieldName=\"StandaloneSellingPrice\"\n Type=\"number\"\n [EditMode]=\"EditMode\"\n [FormContext]=\"formContext\"\n ></mj-form-field>\n <mj-form-field \n [Record]=\"record\"\n [ShowLabel]=\"true\"\n FieldName=\"IsTaxable\"\n Type=\"checkbox\"\n [EditMode]=\"EditMode\"\n [FormContext]=\"formContext\"\n ></mj-form-field>\n <mj-form-field \n [Record]=\"record\"\n [ShowLabel]=\"true\"\n FieldName=\"TaxCategory\"\n Type=\"textbox\"\n [EditMode]=\"EditMode\"\n [FormContext]=\"formContext\"\n ></mj-form-field>\n\n </mj-collapsible-panel>\n\n <!-- Catalog Lifecycle Section -->\n <mj-collapsible-panel\n SectionKey=\"catalogLifecycle\"\n SectionName=\"Catalog Lifecycle\"\n Icon=\"fa fa-history\"\n [Form]=\"this\"\n [FormContext]=\"formContext\">\n <mj-form-field \n [Record]=\"record\"\n [ShowLabel]=\"true\"\n FieldName=\"Status\"\n Type=\"select\"\n [EditMode]=\"EditMode\"\n [FormContext]=\"formContext\"\n ></mj-form-field>\n <mj-form-field \n [Record]=\"record\"\n [ShowLabel]=\"true\"\n FieldName=\"SuccessorProductID\"\n Type=\"textbox\"\n [EditMode]=\"EditMode\"\n [FormContext]=\"formContext\"\n LinkType=\"Record\"\n ></mj-form-field>\n <mj-form-field \n [Record]=\"record\"\n [ShowLabel]=\"true\"\n FieldName=\"AvailableFrom\"\n Type=\"datepicker\"\n [EditMode]=\"EditMode\"\n [FormContext]=\"formContext\"\n ></mj-form-field>\n <mj-form-field \n [Record]=\"record\"\n [ShowLabel]=\"true\"\n FieldName=\"AvailableTo\"\n Type=\"datepicker\"\n [EditMode]=\"EditMode\"\n [FormContext]=\"formContext\"\n ></mj-form-field>\n\n </mj-collapsible-panel>\n\n <!-- Subscription and Entitlements Section -->\n <mj-collapsible-panel\n SectionKey=\"subscriptionAndEntitlements\"\n SectionName=\"Subscription and Entitlements\"\n Icon=\"fa fa-key\"\n [Form]=\"this\"\n [FormContext]=\"formContext\">\n <mj-form-field \n [Record]=\"record\"\n [ShowLabel]=\"true\"\n FieldName=\"SubscriptionTypeID\"\n Type=\"textbox\"\n [EditMode]=\"EditMode\"\n [FormContext]=\"formContext\"\n LinkType=\"Record\"\n ></mj-form-field>\n <mj-form-field \n [Record]=\"record\"\n [ShowLabel]=\"true\"\n FieldName=\"EntitlementGrantTiming\"\n Type=\"select\"\n [EditMode]=\"EditMode\"\n [FormContext]=\"formContext\"\n ></mj-form-field>\n <mj-form-field \n [Record]=\"record\"\n [ShowLabel]=\"true\"\n FieldName=\"EntitlementQuantityMode\"\n Type=\"select\"\n [EditMode]=\"EditMode\"\n [FormContext]=\"formContext\"\n ></mj-form-field>\n <mj-form-field \n [Record]=\"record\"\n [ShowLabel]=\"true\"\n FieldName=\"EntitlementValidityMode\"\n Type=\"select\"\n [EditMode]=\"EditMode\"\n [FormContext]=\"formContext\"\n ></mj-form-field>\n\n </mj-collapsible-panel>\n\n <!-- Details Section -->\n <mj-collapsible-panel\n SectionKey=\"details\"\n SectionName=\"Details\"\n Icon=\"fa fa-align-left\"\n [Form]=\"this\"\n [FormContext]=\"formContext\">\n <mj-form-field \n [Record]=\"record\"\n [ShowLabel]=\"true\"\n FieldName=\"PricingDriverClass\"\n Type=\"textbox\"\n [EditMode]=\"EditMode\"\n [FormContext]=\"formContext\"\n ></mj-form-field>\n <mj-form-field \n [Record]=\"record\"\n [ShowLabel]=\"true\"\n FieldName=\"MaxQuantityPerLine\"\n Type=\"number\"\n [EditMode]=\"EditMode\"\n [FormContext]=\"formContext\"\n ></mj-form-field>\n\n </mj-collapsible-panel>\n\n <!-- System Metadata Section -->\n <mj-collapsible-panel\n SectionKey=\"systemMetadata\"\n SectionName=\"System Metadata\"\n Icon=\"fa fa-cog\"\n [Form]=\"this\"\n [FormContext]=\"formContext\">\n <mj-form-field \n [Record]=\"record\"\n [ShowLabel]=\"true\"\n FieldName=\"__mj_CreatedAt\"\n Type=\"textbox\"\n [EditMode]=\"EditMode\"\n [FormContext]=\"formContext\"\n ></mj-form-field>\n <mj-form-field \n [Record]=\"record\"\n [ShowLabel]=\"true\"\n FieldName=\"__mj_UpdatedAt\"\n Type=\"textbox\"\n [EditMode]=\"EditMode\"\n [FormContext]=\"formContext\"\n ></mj-form-field>\n\n </mj-collapsible-panel>\n\n <mj-form-panel-slot Entity=\"{{record.EntityInfo.Name}}\" Slot=\"after-fields\" [Record]=\"record\" [FormComponent]=\"this\" [FormContext]=\"formContext\"></mj-form-panel-slot>\n\n <!-- ========================================\n RELATED ENTITY PANELS\n ======================================== -->\n\n <!-- Entitlements Section -->\n <mj-collapsible-panel\n SectionKey=\"mJBizAppsOrdersProductEntitlements\"\n SectionName=\"Entitlements\"\n Icon=\"fa fa-box-open\"\n Variant=\"related-entity\"\n [Form]=\"this\"\n [FormContext]=\"formContext\"\n [BadgeCount]=\"GetSectionRowCount('mJBizAppsOrdersProductEntitlements')\"\n [DefaultExpanded]=\"false\">\n @if (record.IsSaved) {\n <div>\n <mj-explorer-entity-data-grid\n [Params]=\"BuildRelationshipViewParamsByEntityName('MJ_BizApps_Orders: Product Entitlements','ProductID')\"\n [NewRecordValues]=\"NewRecordValues('MJ_BizApps_Orders: Product Entitlements','ProductID')\"\n [AllowLoad]=\"IsSectionExpanded('mJBizAppsOrdersProductEntitlements')\"\n [ShowToolbar]=\"true\"\n (Navigate)=\"OnFormNavigate($event)\"\n (AfterDataLoad)=\"SetSectionRowCount('mJBizAppsOrdersProductEntitlements', $event.totalRowCount)\"\n >\n </mj-explorer-entity-data-grid>\n </div>\n }\n </mj-collapsible-panel>\n\n <!-- Product Bundle Items (Component Product ID) Section -->\n <mj-collapsible-panel\n SectionKey=\"mJBizAppsOrdersProductBundleItemsComponentProductID\"\n SectionName=\"Product Bundle Items (Component Product ID)\"\n Icon=\"fa fa-box-open\"\n Variant=\"related-entity\"\n [Form]=\"this\"\n [FormContext]=\"formContext\"\n [BadgeCount]=\"GetSectionRowCount('mJBizAppsOrdersProductBundleItemsComponentProductID')\"\n [DefaultExpanded]=\"false\">\n @if (record.IsSaved) {\n <div>\n <mj-explorer-entity-data-grid\n [Params]=\"BuildRelationshipViewParamsByEntityName('MJ_BizApps_Orders: Product Bundle Items','ComponentProductID')\"\n [NewRecordValues]=\"NewRecordValues('MJ_BizApps_Orders: Product Bundle Items','ComponentProductID')\"\n [AllowLoad]=\"IsSectionExpanded('mJBizAppsOrdersProductBundleItemsComponentProductID')\"\n [ShowToolbar]=\"true\"\n (Navigate)=\"OnFormNavigate($event)\"\n (AfterDataLoad)=\"SetSectionRowCount('mJBizAppsOrdersProductBundleItemsComponentProductID', $event.totalRowCount)\"\n >\n </mj-explorer-entity-data-grid>\n </div>\n }\n </mj-collapsible-panel>\n\n <!-- Bundle Items Section -->\n <mj-collapsible-panel\n SectionKey=\"mJBizAppsOrdersProductBundleItemsBundleProductID\"\n SectionName=\"Bundle Items\"\n Icon=\"fa fa-box-open\"\n Variant=\"related-entity\"\n [Form]=\"this\"\n [FormContext]=\"formContext\"\n [BadgeCount]=\"GetSectionRowCount('mJBizAppsOrdersProductBundleItemsBundleProductID')\"\n [DefaultExpanded]=\"false\">\n @if (record.IsSaved) {\n <div>\n <mj-explorer-entity-data-grid\n [Params]=\"BuildRelationshipViewParamsByEntityName('MJ_BizApps_Orders: Product Bundle Items','BundleProductID')\"\n [NewRecordValues]=\"NewRecordValues('MJ_BizApps_Orders: Product Bundle Items','BundleProductID')\"\n [AllowLoad]=\"IsSectionExpanded('mJBizAppsOrdersProductBundleItemsBundleProductID')\"\n [ShowToolbar]=\"true\"\n (Navigate)=\"OnFormNavigate($event)\"\n (AfterDataLoad)=\"SetSectionRowCount('mJBizAppsOrdersProductBundleItemsBundleProductID', $event.totalRowCount)\"\n >\n </mj-explorer-entity-data-grid>\n </div>\n }\n </mj-collapsible-panel>\n\n <!-- Products Section -->\n <mj-collapsible-panel\n SectionKey=\"mJBizAppsOrdersProducts\"\n SectionName=\"Products\"\n Icon=\"fa fa-box\"\n Variant=\"related-entity\"\n [Form]=\"this\"\n [FormContext]=\"formContext\"\n [BadgeCount]=\"GetSectionRowCount('mJBizAppsOrdersProducts')\"\n [DefaultExpanded]=\"false\">\n @if (record.IsSaved) {\n <div>\n <mj-explorer-entity-data-grid\n [Params]=\"BuildRelationshipViewParamsByEntityName('MJ_BizApps_Orders: Products','SuccessorProductID')\"\n [NewRecordValues]=\"NewRecordValues('MJ_BizApps_Orders: Products','SuccessorProductID')\"\n [AllowLoad]=\"IsSectionExpanded('mJBizAppsOrdersProducts')\"\n [ShowToolbar]=\"true\"\n (Navigate)=\"OnFormNavigate($event)\"\n (AfterDataLoad)=\"SetSectionRowCount('mJBizAppsOrdersProducts', $event.totalRowCount)\"\n >\n </mj-explorer-entity-data-grid>\n </div>\n }\n </mj-collapsible-panel>\n\n <!-- Order Lines (Source Bundle Product) Section -->\n <mj-collapsible-panel\n SectionKey=\"mJBizAppsOrdersOrderLinesSourceBundleProductID\"\n SectionName=\"Order Lines (Source Bundle Product)\"\n Icon=\"fa fa-list-ol\"\n Variant=\"related-entity\"\n [Form]=\"this\"\n [FormContext]=\"formContext\"\n [BadgeCount]=\"GetSectionRowCount('mJBizAppsOrdersOrderLinesSourceBundleProductID')\"\n [DefaultExpanded]=\"false\">\n @if (record.IsSaved) {\n <div>\n <mj-explorer-entity-data-grid\n [Params]=\"BuildRelationshipViewParamsByEntityName('MJ_BizApps_Orders: Order Lines','SourceBundleProductID')\"\n [NewRecordValues]=\"NewRecordValues('MJ_BizApps_Orders: Order Lines','SourceBundleProductID')\"\n [AllowLoad]=\"IsSectionExpanded('mJBizAppsOrdersOrderLinesSourceBundleProductID')\"\n [ShowToolbar]=\"true\"\n (Navigate)=\"OnFormNavigate($event)\"\n (AfterDataLoad)=\"SetSectionRowCount('mJBizAppsOrdersOrderLinesSourceBundleProductID', $event.totalRowCount)\"\n >\n </mj-explorer-entity-data-grid>\n </div>\n }\n </mj-collapsible-panel>\n\n <!-- Order Lines (Product) Section -->\n <mj-collapsible-panel\n SectionKey=\"mJBizAppsOrdersOrderLinesProductID\"\n SectionName=\"Order Lines (Product)\"\n Icon=\"fa fa-list-ol\"\n Variant=\"related-entity\"\n [Form]=\"this\"\n [FormContext]=\"formContext\"\n [BadgeCount]=\"GetSectionRowCount('mJBizAppsOrdersOrderLinesProductID')\"\n [DefaultExpanded]=\"false\">\n @if (record.IsSaved) {\n <div>\n <mj-explorer-entity-data-grid\n [Params]=\"BuildRelationshipViewParamsByEntityName('MJ_BizApps_Orders: Order Lines','ProductID')\"\n [NewRecordValues]=\"NewRecordValues('MJ_BizApps_Orders: Order Lines','ProductID')\"\n [AllowLoad]=\"IsSectionExpanded('mJBizAppsOrdersOrderLinesProductID')\"\n [ShowToolbar]=\"true\"\n (Navigate)=\"OnFormNavigate($event)\"\n (AfterDataLoad)=\"SetSectionRowCount('mJBizAppsOrdersOrderLinesProductID', $event.totalRowCount)\"\n >\n </mj-explorer-entity-data-grid>\n </div>\n }\n </mj-collapsible-panel>\n\n <!-- Subscriptions Section -->\n <mj-collapsible-panel\n SectionKey=\"mJBizAppsOrdersSubscriptions\"\n SectionName=\"Subscriptions\"\n Icon=\"fa fa-sync-alt\"\n Variant=\"related-entity\"\n [Form]=\"this\"\n [FormContext]=\"formContext\"\n [BadgeCount]=\"GetSectionRowCount('mJBizAppsOrdersSubscriptions')\"\n [DefaultExpanded]=\"false\">\n @if (record.IsSaved) {\n <div>\n <mj-explorer-entity-data-grid\n [Params]=\"BuildRelationshipViewParamsByEntityName('MJ_BizApps_Orders: Subscriptions','ProductID')\"\n [NewRecordValues]=\"NewRecordValues('MJ_BizApps_Orders: Subscriptions','ProductID')\"\n [AllowLoad]=\"IsSectionExpanded('mJBizAppsOrdersSubscriptions')\"\n [ShowToolbar]=\"true\"\n (Navigate)=\"OnFormNavigate($event)\"\n (AfterDataLoad)=\"SetSectionRowCount('mJBizAppsOrdersSubscriptions', $event.totalRowCount)\"\n >\n </mj-explorer-entity-data-grid>\n </div>\n }\n </mj-collapsible-panel>\n\n <!-- Product Prices Section -->\n <mj-collapsible-panel\n SectionKey=\"mJBizAppsOrdersProductPrices\"\n SectionName=\"Product Prices\"\n Icon=\"fa fa-tags\"\n Variant=\"related-entity\"\n [Form]=\"this\"\n [FormContext]=\"formContext\"\n [BadgeCount]=\"GetSectionRowCount('mJBizAppsOrdersProductPrices')\"\n [DefaultExpanded]=\"false\">\n @if (record.IsSaved) {\n <div>\n <mj-explorer-entity-data-grid\n [Params]=\"BuildRelationshipViewParamsByEntityName('MJ_BizApps_Orders: Product Prices','ProductID')\"\n [NewRecordValues]=\"NewRecordValues('MJ_BizApps_Orders: Product Prices','ProductID')\"\n [AllowLoad]=\"IsSectionExpanded('mJBizAppsOrdersProductPrices')\"\n [ShowToolbar]=\"true\"\n (Navigate)=\"OnFormNavigate($event)\"\n (AfterDataLoad)=\"SetSectionRowCount('mJBizAppsOrdersProductPrices', $event.totalRowCount)\"\n >\n </mj-explorer-entity-data-grid>\n </div>\n }\n </mj-collapsible-panel>\n\n <!-- Promotion Targets Section -->\n <mj-collapsible-panel\n SectionKey=\"mJBizAppsOrdersPromotionTargets\"\n SectionName=\"Promotion Targets\"\n Icon=\"fa fa-tags\"\n Variant=\"related-entity\"\n [Form]=\"this\"\n [FormContext]=\"formContext\"\n [BadgeCount]=\"GetSectionRowCount('mJBizAppsOrdersPromotionTargets')\"\n [DefaultExpanded]=\"false\">\n @if (record.IsSaved) {\n <div>\n <mj-explorer-entity-data-grid\n [Params]=\"BuildRelationshipViewParamsByEntityName('MJ_BizApps_Orders: Promotion Targets','ProductID')\"\n [NewRecordValues]=\"NewRecordValues('MJ_BizApps_Orders: Promotion Targets','ProductID')\"\n [AllowLoad]=\"IsSectionExpanded('mJBizAppsOrdersPromotionTargets')\"\n [ShowToolbar]=\"true\"\n (Navigate)=\"OnFormNavigate($event)\"\n (AfterDataLoad)=\"SetSectionRowCount('mJBizAppsOrdersPromotionTargets', $event.totalRowCount)\"\n >\n </mj-explorer-entity-data-grid>\n </div>\n }\n </mj-collapsible-panel>\n\n <mj-form-panel-slot Entity=\"{{record.EntityInfo.Name}}\" Slot=\"after-related\" [Record]=\"record\" [FormComponent]=\"this\" [FormContext]=\"formContext\"></mj-form-panel-slot>\n</mj-record-form-container>\n " }]
354
+ }], null, null); })();
355
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(BizAppsProductSaveGuardFormComponent, { className: "BizAppsProductSaveGuardFormComponent", filePath: "lib/custom/Product/product-save-guard-form.component.ts", lineNumber: 60 }); })();
356
+ /** Tree-shaking prevention anchor function */
357
+ export function LoadProductSaveGuardFormComponent() {
358
+ // Anchors BizAppsProductSaveGuardFormComponent in bundlers
359
+ }
360
+ //# sourceMappingURL=product-save-guard-form.component.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"product-save-guard-form.component.js","sourceRoot":"","sources":["../../../../src/lib/custom/Product/product-save-guard-form.component.ts","../../../../src/lib/generated/Entities/mjBizAppsOrdersProduct/mjbizappsordersproduct.form.component.html"],"names":[],"mappings":"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"}
@@ -43,11 +43,11 @@ export class BizAppsProductAccountingWidgetComponent {
43
43
  i0.ɵɵproperty("Record", ctx.Product)("ShowLabel", true)("EditMode", ctx.EditMode)("FormContext", ctx.FormContext);
44
44
  i0.ɵɵadvance(3);
45
45
  i0.ɵɵproperty("Product", ctx.Product)("EditMode", ctx.EditMode)("FormContext", ctx.FormContext);
46
- } }, dependencies: [i1.MjFormFieldComponent, i2.BizAppsProductGLLinksComponent], styles: [".mjo-acct-widget-wrap[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: var(--mj-space-4, 16px);\n width: 100%;\n}\n\n.mjo-acct-card[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface-card, rgba(255, 255, 255, 0.05));\n border: 1px solid var(--mj-border-default, rgba(255, 255, 255, 0.12));\n border-radius: var(--mj-radius-lg, 10px);\n overflow: hidden;\n}\n\n.mjo-card-head[_ngcontent-%COMP%] {\n padding: 12px 16px;\n background: var(--mj-bg-surface-sunken, rgba(0, 0, 0, 0.1));\n border-bottom: 1px solid var(--mj-border-default, rgba(255, 255, 255, 0.1));\n font-size: 13.5px;\n font-weight: 700;\n color: var(--mj-text-primary, #0f172a);\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.mjo-card-head[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--mj-brand-primary, #0284c7);\n}\n\n.mjo-card-body[_ngcontent-%COMP%] {\n padding: 16px;\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(260px, 1fr));\n gap: 16px;\n}"] });
46
+ } }, dependencies: [i1.MjFormFieldComponent, i2.BizAppsProductGLLinksComponent], styles: [".mjo-acct-widget-wrap[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: var(--mj-space-4, 16px);\n width: 100%;\n}\n\n.mjo-acct-card[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface-card, rgba(255, 255, 255, 0.05));\n border: 1px solid var(--mj-border-default, rgba(255, 255, 255, 0.12));\n border-radius: var(--mj-radius-lg, 10px);\n overflow: hidden;\n}\n\n.mjo-card-head[_ngcontent-%COMP%] {\n padding: 12px 16px;\n background: var(--mj-bg-surface-sunken, rgba(0, 0, 0, 0.1));\n border-bottom: 1px solid var(--mj-border-default, rgba(255, 255, 255, 0.1));\n font-size: 13.5px;\n font-weight: 700;\n color: var(--mj-text-primary, #0f172a);\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.mjo-card-head[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--mj-brand-primary, #0284c7);\n}\n\n.mjo-card-body[_ngcontent-%COMP%] {\n padding: 16px;\n display: grid;\n \n\n\n grid-template-columns: repeat(auto-fit, minmax(380px, 1fr));\n gap: 16px;\n}\n\n\n\n\n\n\n\n\n\n\n\n.mjo-card-body[_ngcontent-%COMP%] > mj-form-field[_ngcontent-%COMP%] {\n display: block;\n min-width: 0;\n}"] });
47
47
  }
48
48
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(BizAppsProductAccountingWidgetComponent, [{
49
49
  type: Component,
50
- args: [{ standalone: false, selector: 'bizapps-product-accounting-widget', template: "<div class=\"mjo-acct-widget-wrap\">\n <div class=\"mjo-acct-card\">\n <div class=\"mjo-card-head\">\n <i class=\"fa-solid fa-scale-balanced\"></i>\n <span>General Ledger &amp; Revenue Recognition Classification</span>\n </div>\n <div class=\"mjo-card-body\">\n <!--\n CompanyID moved here from the generated `financialAndAccounting` section,\n which this panel now replaces (replacesSectionKey). Every other field in\n that section was already rendered twice, except StandaloneSellingPrice \u2014\n deliberately deprecated off generated forms by\n metadata/entities/.product-standalone-selling-price-deprecation.json, so it\n is NOT carried over.\n -->\n <mj-form-field\n [Record]=\"Product\"\n [ShowLabel]=\"true\"\n FieldName=\"CompanyID\"\n Type=\"textbox\"\n [EditMode]=\"EditMode\"\n [FormContext]=\"FormContext\"\n LinkType=\"Record\"\n (Navigate)=\"Navigate.emit($event)\"\n ></mj-form-field>\n <mj-form-field\n [Record]=\"Product\"\n [ShowLabel]=\"true\"\n FieldName=\"RevenueRecognitionTypeID\"\n Type=\"textbox\"\n [EditMode]=\"EditMode\"\n [FormContext]=\"FormContext\"\n LinkType=\"Record\"\n (Navigate)=\"Navigate.emit($event)\"\n ></mj-form-field>\n <mj-form-field\n [Record]=\"Product\"\n [ShowLabel]=\"true\"\n FieldName=\"IsTaxable\"\n Type=\"checkbox\"\n [EditMode]=\"EditMode\"\n [FormContext]=\"FormContext\"\n (Navigate)=\"Navigate.emit($event)\"\n ></mj-form-field>\n <mj-form-field \n [Record]=\"Product\"\n [ShowLabel]=\"true\"\n FieldName=\"TaxCategory\"\n Type=\"textbox\"\n [EditMode]=\"EditMode\"\n [FormContext]=\"FormContext\"\n (Navigate)=\"Navigate.emit($event)\"\n ></mj-form-field>\n </div>\n </div>\n\n <!--\n bizapps-orders#113 \u2014 the GL accounts this product books to.\n\n Andrew expected these HERE, under Accounting, and the section showed only the\n product's own columns. The links live in accounting, but they are polymorphic\n ((EntityID, RecordID)) and accounting must not depend on orders, so its own screen\n cannot even name a product. Rendering them from this side is what makes the pair\n something nobody has to type.\n -->\n <div class=\"mjo-acct-card\">\n <div class=\"mjo-card-body\">\n <bizapps-product-gl-links\n [Product]=\"Product\"\n [EditMode]=\"EditMode\"\n [FormContext]=\"FormContext\"\n (Navigate)=\"Navigate.emit($event)\">\n </bizapps-product-gl-links>\n </div>\n </div>\n</div>\n", styles: [".mjo-acct-widget-wrap {\n display: flex;\n flex-direction: column;\n gap: var(--mj-space-4, 16px);\n width: 100%;\n}\n\n.mjo-acct-card {\n background: var(--mj-bg-surface-card, rgba(255, 255, 255, 0.05));\n border: 1px solid var(--mj-border-default, rgba(255, 255, 255, 0.12));\n border-radius: var(--mj-radius-lg, 10px);\n overflow: hidden;\n}\n\n.mjo-card-head {\n padding: 12px 16px;\n background: var(--mj-bg-surface-sunken, rgba(0, 0, 0, 0.1));\n border-bottom: 1px solid var(--mj-border-default, rgba(255, 255, 255, 0.1));\n font-size: 13.5px;\n font-weight: 700;\n color: var(--mj-text-primary, #0f172a);\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.mjo-card-head i {\n color: var(--mj-brand-primary, #0284c7);\n}\n\n.mjo-card-body {\n padding: 16px;\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(260px, 1fr));\n gap: 16px;\n}\n"] }]
50
+ args: [{ standalone: false, selector: 'bizapps-product-accounting-widget', template: "<div class=\"mjo-acct-widget-wrap\">\n <div class=\"mjo-acct-card\">\n <div class=\"mjo-card-head\">\n <i class=\"fa-solid fa-scale-balanced\"></i>\n <span>General Ledger &amp; Revenue Recognition Classification</span>\n </div>\n <div class=\"mjo-card-body\">\n <!--\n CompanyID moved here from the generated `financialAndAccounting` section,\n which this panel now replaces (replacesSectionKey). Every other field in\n that section was already rendered twice, except StandaloneSellingPrice \u2014\n deliberately deprecated off generated forms by\n metadata/entities/.product-standalone-selling-price-deprecation.json, so it\n is NOT carried over.\n -->\n <mj-form-field\n [Record]=\"Product\"\n [ShowLabel]=\"true\"\n FieldName=\"CompanyID\"\n Type=\"textbox\"\n [EditMode]=\"EditMode\"\n [FormContext]=\"FormContext\"\n LinkType=\"Record\"\n (Navigate)=\"Navigate.emit($event)\"\n ></mj-form-field>\n <mj-form-field\n [Record]=\"Product\"\n [ShowLabel]=\"true\"\n FieldName=\"RevenueRecognitionTypeID\"\n Type=\"textbox\"\n [EditMode]=\"EditMode\"\n [FormContext]=\"FormContext\"\n LinkType=\"Record\"\n (Navigate)=\"Navigate.emit($event)\"\n ></mj-form-field>\n <mj-form-field\n [Record]=\"Product\"\n [ShowLabel]=\"true\"\n FieldName=\"IsTaxable\"\n Type=\"checkbox\"\n [EditMode]=\"EditMode\"\n [FormContext]=\"FormContext\"\n (Navigate)=\"Navigate.emit($event)\"\n ></mj-form-field>\n <mj-form-field \n [Record]=\"Product\"\n [ShowLabel]=\"true\"\n FieldName=\"TaxCategory\"\n Type=\"textbox\"\n [EditMode]=\"EditMode\"\n [FormContext]=\"FormContext\"\n (Navigate)=\"Navigate.emit($event)\"\n ></mj-form-field>\n </div>\n </div>\n\n <!--\n bizapps-orders#113 \u2014 the GL accounts this product books to.\n\n Andrew expected these HERE, under Accounting, and the section showed only the\n product's own columns. The links live in accounting, but they are polymorphic\n ((EntityID, RecordID)) and accounting must not depend on orders, so its own screen\n cannot even name a product. Rendering them from this side is what makes the pair\n something nobody has to type.\n -->\n <div class=\"mjo-acct-card\">\n <div class=\"mjo-card-body\">\n <bizapps-product-gl-links\n [Product]=\"Product\"\n [EditMode]=\"EditMode\"\n [FormContext]=\"FormContext\"\n (Navigate)=\"Navigate.emit($event)\">\n </bizapps-product-gl-links>\n </div>\n </div>\n</div>\n", styles: [".mjo-acct-widget-wrap {\n display: flex;\n flex-direction: column;\n gap: var(--mj-space-4, 16px);\n width: 100%;\n}\n\n.mjo-acct-card {\n background: var(--mj-bg-surface-card, rgba(255, 255, 255, 0.05));\n border: 1px solid var(--mj-border-default, rgba(255, 255, 255, 0.12));\n border-radius: var(--mj-radius-lg, 10px);\n overflow: hidden;\n}\n\n.mjo-card-head {\n padding: 12px 16px;\n background: var(--mj-bg-surface-sunken, rgba(0, 0, 0, 0.1));\n border-bottom: 1px solid var(--mj-border-default, rgba(255, 255, 255, 0.1));\n font-size: 13.5px;\n font-weight: 700;\n color: var(--mj-text-primary, #0f172a);\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.mjo-card-head i {\n color: var(--mj-brand-primary, #0284c7);\n}\n\n.mjo-card-body {\n padding: 16px;\n display: grid;\n /* 380px, not 260px: MJ's own `.mj-forms-field` is a `200px 1fr` label/value grid, so a\n narrower cell leaves the value ~79px and wraps it mid-word. See the note below. */\n grid-template-columns: repeat(auto-fit, minmax(380px, 1fr));\n gap: 16px;\n}\n\n/*\n * golive #211 walkthrough (Pin 21): MJ's `mj-form-field` host computes to `display: contents`, so\n * the component is not the grid item \u2014 its label and its control are, and the grid above put them\n * in SEPARATE 260px cells. That is why the \"Revenue Recognition Type Name\" label sat on top of the\n * picker's search-mode chip and the dropdown clipped every option. Making the host a real block\n * puts each field back in one cell; `min-width: 0` lets that cell shrink instead of overflowing.\n * The cell then has to be wide enough for MJ's internal `200px 1fr` label/value grid, which is why\n * the columns above widened to 380px at the same time.\n */\n.mjo-card-body > mj-form-field {\n display: block;\n min-width: 0;\n}\n"] }]
51
51
  }], null, { Product: [{
52
52
  type: Input
53
53
  }], EditMode: [{