@mj-biz-apps/orders-ng 5.9.0 → 5.10.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/lib/custom/PaymentHeader/payment-header-form.component.d.ts +2 -0
- package/dist/lib/custom/PaymentHeader/payment-header-form.component.d.ts.map +1 -1
- package/dist/lib/custom/PaymentHeader/payment-header-form.component.js +280 -237
- package/dist/lib/custom/PaymentHeader/payment-header-form.component.js.map +1 -1
- package/dist/lib/custom/Product/widgets/product-accounting-widget.component.js +9 -4
- package/dist/lib/custom/Product/widgets/product-accounting-widget.component.js.map +1 -1
- package/dist/lib/custom/Product/widgets/product-fulfillment-widget.component.d.ts +1 -1
- package/dist/lib/custom/Product/widgets/product-fulfillment-widget.component.js +8 -35
- package/dist/lib/custom/Product/widgets/product-fulfillment-widget.component.js.map +1 -1
- package/dist/lib/custom/Product/widgets/product-pricing-widget.component.d.ts +8 -0
- package/dist/lib/custom/Product/widgets/product-pricing-widget.component.d.ts.map +1 -1
- package/dist/lib/custom/Product/widgets/product-pricing-widget.component.js +31 -5
- package/dist/lib/custom/Product/widgets/product-pricing-widget.component.js.map +1 -1
- package/dist/lib/custom/Product/widgets/product-subscription-widget.component.d.ts +1 -1
- package/dist/lib/custom/Product/widgets/product-subscription-widget.component.js +8 -15
- package/dist/lib/custom/Product/widgets/product-subscription-widget.component.js.map +1 -1
- package/dist/lib/form-panels/product-widget.panels.d.ts.map +1 -1
- package/dist/lib/form-panels/product-widget.panels.js +157 -25
- package/dist/lib/form-panels/product-widget.panels.js.map +1 -1
- package/dist/lib/pages/catalog/pricing.page.d.ts.map +1 -1
- package/dist/lib/pages/catalog/pricing.page.js +22 -20
- package/dist/lib/pages/catalog/pricing.page.js.map +1 -1
- package/dist/lib/pages/catalog/products.page.d.ts +20 -3
- package/dist/lib/pages/catalog/products.page.d.ts.map +1 -1
- package/dist/lib/pages/catalog/products.page.js +39 -23
- package/dist/lib/pages/catalog/products.page.js.map +1 -1
- package/dist/lib/pages/orders/orders-dashboard.page.d.ts +12 -0
- package/dist/lib/pages/orders/orders-dashboard.page.d.ts.map +1 -1
- package/dist/lib/pages/orders/orders-dashboard.page.js +293 -69
- package/dist/lib/pages/orders/orders-dashboard.page.js.map +1 -1
- package/dist/lib/panels/party-orders-overview.component.d.ts.map +1 -1
- package/dist/lib/panels/party-orders-overview.component.js +11 -8
- package/dist/lib/panels/party-orders-overview.component.js.map +1 -1
- package/dist/lib/sections/orders-sections.component.d.ts.map +1 -1
- package/dist/lib/sections/orders-sections.component.js +6 -4
- package/dist/lib/sections/orders-sections.component.js.map +1 -1
- package/package.json +2 -2
|
@@ -100,7 +100,7 @@ function BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_43_Conditio
|
|
|
100
100
|
i0.ɵɵadvance();
|
|
101
101
|
i0.ɵɵconditional(ctx_r1.OpenOrders.length > 0 ? 4 : -1);
|
|
102
102
|
} }
|
|
103
|
-
function
|
|
103
|
+
function BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_43_Conditional_32_For_4_Template(rf, ctx) { if (rf & 1) {
|
|
104
104
|
i0.ɵɵelementStart(0, "option", 74);
|
|
105
105
|
i0.ɵɵtext(1);
|
|
106
106
|
i0.ɵɵelementEnd();
|
|
@@ -110,57 +110,66 @@ function BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_43_Conditio
|
|
|
110
110
|
i0.ɵɵadvance();
|
|
111
111
|
i0.ɵɵtextInterpolate(pt_r6.Name);
|
|
112
112
|
} }
|
|
113
|
-
function
|
|
113
|
+
function BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_43_Conditional_32_Conditional_5_Template(rf, ctx) { if (rf & 1) {
|
|
114
|
+
i0.ɵɵelementStart(0, "div", 75);
|
|
115
|
+
i0.ɵɵtext(1, "Required before Capture & Book.");
|
|
116
|
+
i0.ɵɵelementEnd();
|
|
117
|
+
} }
|
|
118
|
+
function BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_43_Conditional_32_Template(rf, ctx) { if (rf & 1) {
|
|
114
119
|
const _r5 = i0.ɵɵgetCurrentView();
|
|
115
120
|
i0.ɵɵelementStart(0, "select", 72);
|
|
116
|
-
i0.ɵɵlistener("ngModelChange", function
|
|
121
|
+
i0.ɵɵlistener("ngModelChange", function BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_43_Conditional_32_Template_select_ngModelChange_0_listener($event) { i0.ɵɵrestoreView(_r5); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.OnPaymentTypeSelected($event)); });
|
|
117
122
|
i0.ɵɵelementStart(1, "option", 73);
|
|
118
123
|
i0.ɵɵtext(2, "Select payment type\u2026");
|
|
119
124
|
i0.ɵɵelementEnd();
|
|
120
|
-
i0.ɵɵrepeaterCreate(3,
|
|
125
|
+
i0.ɵɵrepeaterCreate(3, BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_43_Conditional_32_For_4_Template, 2, 2, "option", 74, _forTrack0);
|
|
121
126
|
i0.ɵɵelementEnd();
|
|
127
|
+
i0.ɵɵconditionalCreate(5, BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_43_Conditional_32_Conditional_5_Template, 2, 0, "div", 75);
|
|
122
128
|
} if (rf & 2) {
|
|
123
129
|
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
130
|
+
i0.ɵɵclassProp("mjo-input--invalid", ctx_r1.PaymentTypeMissing);
|
|
124
131
|
i0.ɵɵproperty("ngModel", ctx_r1.record.PaymentTypeID);
|
|
125
132
|
i0.ɵɵadvance();
|
|
126
133
|
i0.ɵɵproperty("ngValue", null);
|
|
127
134
|
i0.ɵɵadvance(2);
|
|
128
135
|
i0.ɵɵrepeater(ctx_r1.PaymentTypes);
|
|
136
|
+
i0.ɵɵadvance(2);
|
|
137
|
+
i0.ɵɵconditional(ctx_r1.PaymentTypeMissing ? 5 : -1);
|
|
129
138
|
} }
|
|
130
|
-
function
|
|
139
|
+
function BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_43_Conditional_33_Template(rf, ctx) { if (rf & 1) {
|
|
131
140
|
const _r7 = i0.ɵɵgetCurrentView();
|
|
132
|
-
i0.ɵɵelementStart(0, "mj-form-field",
|
|
133
|
-
i0.ɵɵlistener("Navigate", function
|
|
141
|
+
i0.ɵɵelementStart(0, "mj-form-field", 76);
|
|
142
|
+
i0.ɵɵlistener("Navigate", function BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_43_Conditional_33_Template_mj_form_field_Navigate_0_listener($event) { i0.ɵɵrestoreView(_r7); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.OnFormNavigate($event)); });
|
|
134
143
|
i0.ɵɵelementEnd();
|
|
135
144
|
} if (rf & 2) {
|
|
136
145
|
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
137
146
|
i0.ɵɵproperty("Record", ctx_r1.record)("ShowLabel", false)("EditMode", ctx_r1.ComposeMode)("FormContext", ctx_r1.formContext);
|
|
138
147
|
} }
|
|
139
|
-
function
|
|
148
|
+
function BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_43_Conditional_34_Template(rf, ctx) { if (rf & 1) {
|
|
140
149
|
const _r8 = i0.ɵɵgetCurrentView();
|
|
141
|
-
i0.ɵɵelementStart(0, "div", 46)(1, "div",
|
|
142
|
-
i0.ɵɵelement(2, "i",
|
|
150
|
+
i0.ɵɵelementStart(0, "div", 46)(1, "div", 77);
|
|
151
|
+
i0.ɵɵelement(2, "i", 78);
|
|
143
152
|
i0.ɵɵtext(3, " Check details ");
|
|
144
153
|
i0.ɵɵelementEnd();
|
|
145
|
-
i0.ɵɵelementStart(4, "div",
|
|
154
|
+
i0.ɵɵelementStart(4, "div", 79)(5, "div", 38)(6, "label", 39);
|
|
146
155
|
i0.ɵɵtext(7, "Check \u2116 ");
|
|
147
|
-
i0.ɵɵelementStart(8, "span",
|
|
156
|
+
i0.ɵɵelementStart(8, "span", 80);
|
|
148
157
|
i0.ɵɵtext(9, "*");
|
|
149
158
|
i0.ɵɵelementEnd()();
|
|
150
|
-
i0.ɵɵelementStart(10, "input",
|
|
151
|
-
i0.ɵɵtwoWayListener("ngModelChange", function
|
|
159
|
+
i0.ɵɵelementStart(10, "input", 81);
|
|
160
|
+
i0.ɵɵtwoWayListener("ngModelChange", function BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_43_Conditional_34_Template_input_ngModelChange_10_listener($event) { i0.ɵɵrestoreView(_r8); const ctx_r1 = i0.ɵɵnextContext(3); i0.ɵɵtwoWayBindingSet(ctx_r1.ReferenceNumber, $event) || (ctx_r1.ReferenceNumber = $event); return i0.ɵɵresetView($event); });
|
|
152
161
|
i0.ɵɵelementEnd()();
|
|
153
162
|
i0.ɵɵelementStart(11, "div", 38)(12, "label", 39);
|
|
154
163
|
i0.ɵɵtext(13, "Check Date");
|
|
155
164
|
i0.ɵɵelementEnd();
|
|
156
|
-
i0.ɵɵelementStart(14, "input",
|
|
157
|
-
i0.ɵɵtwoWayListener("ngModelChange", function
|
|
165
|
+
i0.ɵɵelementStart(14, "input", 82);
|
|
166
|
+
i0.ɵɵtwoWayListener("ngModelChange", function BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_43_Conditional_34_Template_input_ngModelChange_14_listener($event) { i0.ɵɵrestoreView(_r8); const ctx_r1 = i0.ɵɵnextContext(3); i0.ɵɵtwoWayBindingSet(ctx_r1.InstrumentDateInput, $event) || (ctx_r1.InstrumentDateInput = $event); return i0.ɵɵresetView($event); });
|
|
158
167
|
i0.ɵɵelementEnd()();
|
|
159
|
-
i0.ɵɵelementStart(15, "div",
|
|
168
|
+
i0.ɵɵelementStart(15, "div", 83)(16, "label", 39);
|
|
160
169
|
i0.ɵɵtext(17, "Bank Name");
|
|
161
170
|
i0.ɵɵelementEnd();
|
|
162
|
-
i0.ɵɵelementStart(18, "input",
|
|
163
|
-
i0.ɵɵtwoWayListener("ngModelChange", function
|
|
171
|
+
i0.ɵɵelementStart(18, "input", 84);
|
|
172
|
+
i0.ɵɵtwoWayListener("ngModelChange", function BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_43_Conditional_34_Template_input_ngModelChange_18_listener($event) { i0.ɵɵrestoreView(_r8); const ctx_r1 = i0.ɵɵnextContext(3); i0.ɵɵtwoWayBindingSet(ctx_r1.BankName, $event) || (ctx_r1.BankName = $event); return i0.ɵɵresetView($event); });
|
|
164
173
|
i0.ɵɵelementEnd()()()();
|
|
165
174
|
} if (rf & 2) {
|
|
166
175
|
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
@@ -174,61 +183,61 @@ function BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_43_Conditio
|
|
|
174
183
|
i0.ɵɵtwoWayProperty("ngModel", ctx_r1.BankName);
|
|
175
184
|
i0.ɵɵproperty("disabled", !ctx_r1.ComposeMode);
|
|
176
185
|
} }
|
|
177
|
-
function
|
|
186
|
+
function BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_43_Conditional_35_Template(rf, ctx) { if (rf & 1) {
|
|
178
187
|
const _r9 = i0.ɵɵgetCurrentView();
|
|
179
|
-
i0.ɵɵelementStart(0, "div", 46)(1, "div",
|
|
180
|
-
i0.ɵɵelement(2, "i",
|
|
188
|
+
i0.ɵɵelementStart(0, "div", 46)(1, "div", 77);
|
|
189
|
+
i0.ɵɵelement(2, "i", 85);
|
|
181
190
|
i0.ɵɵtext(3, " Card instrument details ");
|
|
182
191
|
i0.ɵɵelementEnd();
|
|
183
|
-
i0.ɵɵelementStart(4, "div",
|
|
192
|
+
i0.ɵɵelementStart(4, "div", 79)(5, "div", 38)(6, "label", 39);
|
|
184
193
|
i0.ɵɵtext(7, "Card Brand");
|
|
185
194
|
i0.ɵɵelementEnd();
|
|
186
|
-
i0.ɵɵelementStart(8, "select",
|
|
187
|
-
i0.ɵɵtwoWayListener("ngModelChange", function
|
|
188
|
-
i0.ɵɵelementStart(9, "option",
|
|
195
|
+
i0.ɵɵelementStart(8, "select", 86);
|
|
196
|
+
i0.ɵɵtwoWayListener("ngModelChange", function BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_43_Conditional_35_Template_select_ngModelChange_8_listener($event) { i0.ɵɵrestoreView(_r9); const ctx_r1 = i0.ɵɵnextContext(3); i0.ɵɵtwoWayBindingSet(ctx_r1.CardBrand, $event) || (ctx_r1.CardBrand = $event); return i0.ɵɵresetView($event); });
|
|
197
|
+
i0.ɵɵelementStart(9, "option", 87);
|
|
189
198
|
i0.ɵɵtext(10, "Select Brand");
|
|
190
199
|
i0.ɵɵelementEnd();
|
|
191
|
-
i0.ɵɵelementStart(11, "option",
|
|
200
|
+
i0.ɵɵelementStart(11, "option", 88);
|
|
192
201
|
i0.ɵɵtext(12, "Visa");
|
|
193
202
|
i0.ɵɵelementEnd();
|
|
194
|
-
i0.ɵɵelementStart(13, "option",
|
|
203
|
+
i0.ɵɵelementStart(13, "option", 89);
|
|
195
204
|
i0.ɵɵtext(14, "MasterCard");
|
|
196
205
|
i0.ɵɵelementEnd();
|
|
197
|
-
i0.ɵɵelementStart(15, "option",
|
|
206
|
+
i0.ɵɵelementStart(15, "option", 90);
|
|
198
207
|
i0.ɵɵtext(16, "American Express");
|
|
199
208
|
i0.ɵɵelementEnd();
|
|
200
|
-
i0.ɵɵelementStart(17, "option",
|
|
209
|
+
i0.ɵɵelementStart(17, "option", 91);
|
|
201
210
|
i0.ɵɵtext(18, "Discover");
|
|
202
211
|
i0.ɵɵelementEnd();
|
|
203
|
-
i0.ɵɵelementStart(19, "option",
|
|
212
|
+
i0.ɵɵelementStart(19, "option", 92);
|
|
204
213
|
i0.ɵɵtext(20, "Other");
|
|
205
214
|
i0.ɵɵelementEnd()()();
|
|
206
215
|
i0.ɵɵelementStart(21, "div", 38)(22, "label", 39);
|
|
207
216
|
i0.ɵɵtext(23, "Last 4 Digits");
|
|
208
217
|
i0.ɵɵelementEnd();
|
|
209
|
-
i0.ɵɵelementStart(24, "input",
|
|
210
|
-
i0.ɵɵtwoWayListener("ngModelChange", function
|
|
218
|
+
i0.ɵɵelementStart(24, "input", 93);
|
|
219
|
+
i0.ɵɵtwoWayListener("ngModelChange", function BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_43_Conditional_35_Template_input_ngModelChange_24_listener($event) { i0.ɵɵrestoreView(_r9); const ctx_r1 = i0.ɵɵnextContext(3); i0.ɵɵtwoWayBindingSet(ctx_r1.CardLast4, $event) || (ctx_r1.CardLast4 = $event); return i0.ɵɵresetView($event); });
|
|
211
220
|
i0.ɵɵelementEnd()();
|
|
212
221
|
i0.ɵɵelementStart(25, "div", 38)(26, "label", 39);
|
|
213
222
|
i0.ɵɵtext(27, "Expiry (MM / YYYY)");
|
|
214
223
|
i0.ɵɵelementEnd();
|
|
215
|
-
i0.ɵɵelementStart(28, "div",
|
|
216
|
-
i0.ɵɵtwoWayListener("ngModelChange", function
|
|
224
|
+
i0.ɵɵelementStart(28, "div", 94)(29, "input", 95);
|
|
225
|
+
i0.ɵɵtwoWayListener("ngModelChange", function BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_43_Conditional_35_Template_input_ngModelChange_29_listener($event) { i0.ɵɵrestoreView(_r9); const ctx_r1 = i0.ɵɵnextContext(3); i0.ɵɵtwoWayBindingSet(ctx_r1.CardExpMonth, $event) || (ctx_r1.CardExpMonth = $event); return i0.ɵɵresetView($event); });
|
|
217
226
|
i0.ɵɵelementEnd();
|
|
218
|
-
i0.ɵɵelementStart(30, "input",
|
|
219
|
-
i0.ɵɵtwoWayListener("ngModelChange", function
|
|
227
|
+
i0.ɵɵelementStart(30, "input", 96);
|
|
228
|
+
i0.ɵɵtwoWayListener("ngModelChange", function BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_43_Conditional_35_Template_input_ngModelChange_30_listener($event) { i0.ɵɵrestoreView(_r9); const ctx_r1 = i0.ɵɵnextContext(3); i0.ɵɵtwoWayBindingSet(ctx_r1.CardExpYear, $event) || (ctx_r1.CardExpYear = $event); return i0.ɵɵresetView($event); });
|
|
220
229
|
i0.ɵɵelementEnd()()();
|
|
221
230
|
i0.ɵɵelementStart(31, "div", 38)(32, "label", 39);
|
|
222
231
|
i0.ɵɵtext(33, "Cardholder Name");
|
|
223
232
|
i0.ɵɵelementEnd();
|
|
224
|
-
i0.ɵɵelementStart(34, "input",
|
|
225
|
-
i0.ɵɵtwoWayListener("ngModelChange", function
|
|
233
|
+
i0.ɵɵelementStart(34, "input", 97);
|
|
234
|
+
i0.ɵɵtwoWayListener("ngModelChange", function BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_43_Conditional_35_Template_input_ngModelChange_34_listener($event) { i0.ɵɵrestoreView(_r9); const ctx_r1 = i0.ɵɵnextContext(3); i0.ɵɵtwoWayBindingSet(ctx_r1.CardHolderName, $event) || (ctx_r1.CardHolderName = $event); return i0.ɵɵresetView($event); });
|
|
226
235
|
i0.ɵɵelementEnd()();
|
|
227
|
-
i0.ɵɵelementStart(35, "div",
|
|
236
|
+
i0.ɵɵelementStart(35, "div", 83)(36, "label", 39);
|
|
228
237
|
i0.ɵɵtext(37, "Auth / Approval \u2116");
|
|
229
238
|
i0.ɵɵelementEnd();
|
|
230
|
-
i0.ɵɵelementStart(38, "input",
|
|
231
|
-
i0.ɵɵtwoWayListener("ngModelChange", function
|
|
239
|
+
i0.ɵɵelementStart(38, "input", 98);
|
|
240
|
+
i0.ɵɵtwoWayListener("ngModelChange", function BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_43_Conditional_35_Template_input_ngModelChange_38_listener($event) { i0.ɵɵrestoreView(_r9); const ctx_r1 = i0.ɵɵnextContext(3); i0.ɵɵtwoWayBindingSet(ctx_r1.ReferenceNumber, $event) || (ctx_r1.ReferenceNumber = $event); return i0.ɵɵresetView($event); });
|
|
232
241
|
i0.ɵɵelementEnd()()()();
|
|
233
242
|
} if (rf & 2) {
|
|
234
243
|
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
@@ -251,49 +260,49 @@ function BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_43_Conditio
|
|
|
251
260
|
i0.ɵɵtwoWayProperty("ngModel", ctx_r1.ReferenceNumber);
|
|
252
261
|
i0.ɵɵproperty("disabled", !ctx_r1.ComposeMode);
|
|
253
262
|
} }
|
|
254
|
-
function
|
|
263
|
+
function BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_43_Conditional_36_Template(rf, ctx) { if (rf & 1) {
|
|
255
264
|
const _r10 = i0.ɵɵgetCurrentView();
|
|
256
|
-
i0.ɵɵelementStart(0, "div", 46)(1, "div",
|
|
257
|
-
i0.ɵɵelement(2, "i",
|
|
265
|
+
i0.ɵɵelementStart(0, "div", 46)(1, "div", 77);
|
|
266
|
+
i0.ɵɵelement(2, "i", 99);
|
|
258
267
|
i0.ɵɵtext(3, " Bank transfer / ACH details ");
|
|
259
268
|
i0.ɵɵelementEnd();
|
|
260
|
-
i0.ɵɵelementStart(4, "div",
|
|
269
|
+
i0.ɵɵelementStart(4, "div", 79)(5, "div", 38)(6, "label", 39);
|
|
261
270
|
i0.ɵɵtext(7, "Bank Name");
|
|
262
271
|
i0.ɵɵelementEnd();
|
|
263
|
-
i0.ɵɵelementStart(8, "input",
|
|
264
|
-
i0.ɵɵtwoWayListener("ngModelChange", function
|
|
272
|
+
i0.ɵɵelementStart(8, "input", 100);
|
|
273
|
+
i0.ɵɵtwoWayListener("ngModelChange", function BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_43_Conditional_36_Template_input_ngModelChange_8_listener($event) { i0.ɵɵrestoreView(_r10); const ctx_r1 = i0.ɵɵnextContext(3); i0.ɵɵtwoWayBindingSet(ctx_r1.BankName, $event) || (ctx_r1.BankName = $event); return i0.ɵɵresetView($event); });
|
|
265
274
|
i0.ɵɵelementEnd()();
|
|
266
275
|
i0.ɵɵelementStart(9, "div", 38)(10, "label", 39);
|
|
267
276
|
i0.ɵɵtext(11, "Account Type");
|
|
268
277
|
i0.ɵɵelementEnd();
|
|
269
|
-
i0.ɵɵelementStart(12, "select",
|
|
270
|
-
i0.ɵɵtwoWayListener("ngModelChange", function
|
|
278
|
+
i0.ɵɵelementStart(12, "select", 86);
|
|
279
|
+
i0.ɵɵtwoWayListener("ngModelChange", function BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_43_Conditional_36_Template_select_ngModelChange_12_listener($event) { i0.ɵɵrestoreView(_r10); const ctx_r1 = i0.ɵɵnextContext(3); i0.ɵɵtwoWayBindingSet(ctx_r1.BankAccountType, $event) || (ctx_r1.BankAccountType = $event); return i0.ɵɵresetView($event); });
|
|
271
280
|
i0.ɵɵelementStart(13, "option", 73);
|
|
272
281
|
i0.ɵɵtext(14, "Select Type");
|
|
273
282
|
i0.ɵɵelementEnd();
|
|
274
|
-
i0.ɵɵelementStart(15, "option",
|
|
283
|
+
i0.ɵɵelementStart(15, "option", 101);
|
|
275
284
|
i0.ɵɵtext(16, "Checking");
|
|
276
285
|
i0.ɵɵelementEnd();
|
|
277
|
-
i0.ɵɵelementStart(17, "option",
|
|
286
|
+
i0.ɵɵelementStart(17, "option", 102);
|
|
278
287
|
i0.ɵɵtext(18, "Savings");
|
|
279
288
|
i0.ɵɵelementEnd()()();
|
|
280
289
|
i0.ɵɵelementStart(19, "div", 38)(20, "label", 39);
|
|
281
290
|
i0.ɵɵtext(21, "Routing Last 4");
|
|
282
291
|
i0.ɵɵelementEnd();
|
|
283
|
-
i0.ɵɵelementStart(22, "input",
|
|
284
|
-
i0.ɵɵtwoWayListener("ngModelChange", function
|
|
292
|
+
i0.ɵɵelementStart(22, "input", 103);
|
|
293
|
+
i0.ɵɵtwoWayListener("ngModelChange", function BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_43_Conditional_36_Template_input_ngModelChange_22_listener($event) { i0.ɵɵrestoreView(_r10); const ctx_r1 = i0.ɵɵnextContext(3); i0.ɵɵtwoWayBindingSet(ctx_r1.RoutingLast4, $event) || (ctx_r1.RoutingLast4 = $event); return i0.ɵɵresetView($event); });
|
|
285
294
|
i0.ɵɵelementEnd()();
|
|
286
295
|
i0.ɵɵelementStart(23, "div", 38)(24, "label", 39);
|
|
287
296
|
i0.ɵɵtext(25, "Account Last 4");
|
|
288
297
|
i0.ɵɵelementEnd();
|
|
289
|
-
i0.ɵɵelementStart(26, "input",
|
|
290
|
-
i0.ɵɵtwoWayListener("ngModelChange", function
|
|
298
|
+
i0.ɵɵelementStart(26, "input", 104);
|
|
299
|
+
i0.ɵɵtwoWayListener("ngModelChange", function BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_43_Conditional_36_Template_input_ngModelChange_26_listener($event) { i0.ɵɵrestoreView(_r10); const ctx_r1 = i0.ɵɵnextContext(3); i0.ɵɵtwoWayBindingSet(ctx_r1.AccountLast4, $event) || (ctx_r1.AccountLast4 = $event); return i0.ɵɵresetView($event); });
|
|
291
300
|
i0.ɵɵelementEnd()();
|
|
292
|
-
i0.ɵɵelementStart(27, "div",
|
|
301
|
+
i0.ɵɵelementStart(27, "div", 83)(28, "label", 39);
|
|
293
302
|
i0.ɵɵtext(29, "Trace / Reference \u2116");
|
|
294
303
|
i0.ɵɵelementEnd();
|
|
295
|
-
i0.ɵɵelementStart(30, "input",
|
|
296
|
-
i0.ɵɵtwoWayListener("ngModelChange", function
|
|
304
|
+
i0.ɵɵelementStart(30, "input", 105);
|
|
305
|
+
i0.ɵɵtwoWayListener("ngModelChange", function BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_43_Conditional_36_Template_input_ngModelChange_30_listener($event) { i0.ɵɵrestoreView(_r10); const ctx_r1 = i0.ɵɵnextContext(3); i0.ɵɵtwoWayBindingSet(ctx_r1.ReferenceNumber, $event) || (ctx_r1.ReferenceNumber = $event); return i0.ɵɵresetView($event); });
|
|
297
306
|
i0.ɵɵelementEnd()()()();
|
|
298
307
|
} if (rf & 2) {
|
|
299
308
|
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
@@ -315,19 +324,19 @@ function BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_43_Conditio
|
|
|
315
324
|
i0.ɵɵtwoWayProperty("ngModel", ctx_r1.ReferenceNumber);
|
|
316
325
|
i0.ɵɵproperty("disabled", !ctx_r1.ComposeMode);
|
|
317
326
|
} }
|
|
318
|
-
function
|
|
327
|
+
function BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_43_Conditional_37_Template(rf, ctx) { if (rf & 1) {
|
|
319
328
|
const _r11 = i0.ɵɵgetCurrentView();
|
|
320
|
-
i0.ɵɵelementStart(0, "div", 46)(1, "div",
|
|
329
|
+
i0.ɵɵelementStart(0, "div", 46)(1, "div", 77);
|
|
321
330
|
i0.ɵɵelement(2, "i", 65);
|
|
322
331
|
i0.ɵɵtext(3, " Reference details ");
|
|
323
332
|
i0.ɵɵelementEnd();
|
|
324
333
|
i0.ɵɵelementStart(4, "div", 38)(5, "label", 39);
|
|
325
334
|
i0.ɵɵtext(6, "Reference / Wire Confirmation \u2116 ");
|
|
326
|
-
i0.ɵɵelementStart(7, "span",
|
|
335
|
+
i0.ɵɵelementStart(7, "span", 80);
|
|
327
336
|
i0.ɵɵtext(8, "*");
|
|
328
337
|
i0.ɵɵelementEnd()();
|
|
329
|
-
i0.ɵɵelementStart(9, "input",
|
|
330
|
-
i0.ɵɵtwoWayListener("ngModelChange", function
|
|
338
|
+
i0.ɵɵelementStart(9, "input", 106);
|
|
339
|
+
i0.ɵɵtwoWayListener("ngModelChange", function BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_43_Conditional_37_Template_input_ngModelChange_9_listener($event) { i0.ɵɵrestoreView(_r11); const ctx_r1 = i0.ɵɵnextContext(3); i0.ɵɵtwoWayBindingSet(ctx_r1.ReferenceNumber, $event) || (ctx_r1.ReferenceNumber = $event); return i0.ɵɵresetView($event); });
|
|
331
340
|
i0.ɵɵelementEnd()()();
|
|
332
341
|
} if (rf & 2) {
|
|
333
342
|
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
@@ -335,14 +344,14 @@ function BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_43_Conditio
|
|
|
335
344
|
i0.ɵɵtwoWayProperty("ngModel", ctx_r1.ReferenceNumber);
|
|
336
345
|
i0.ɵɵproperty("disabled", !ctx_r1.ComposeMode);
|
|
337
346
|
} }
|
|
338
|
-
function
|
|
347
|
+
function BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_43_Conditional_68_Template(rf, ctx) { if (rf & 1) {
|
|
339
348
|
i0.ɵɵelement(0, "i", 71);
|
|
340
349
|
i0.ɵɵelementStart(1, "span");
|
|
341
350
|
i0.ɵɵtext(2, "Allocations tie 100% to payment received. Ready to capture and book.");
|
|
342
351
|
i0.ɵɵelementEnd();
|
|
343
352
|
} }
|
|
344
|
-
function
|
|
345
|
-
i0.ɵɵelement(0, "i",
|
|
353
|
+
function BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_43_Conditional_69_Template(rf, ctx) { if (rf & 1) {
|
|
354
|
+
i0.ɵɵelement(0, "i", 107);
|
|
346
355
|
i0.ɵɵelementStart(1, "span");
|
|
347
356
|
i0.ɵɵtext(2);
|
|
348
357
|
i0.ɵɵelementEnd();
|
|
@@ -351,8 +360,8 @@ function BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_43_Conditio
|
|
|
351
360
|
i0.ɵɵadvance(2);
|
|
352
361
|
i0.ɵɵtextInterpolate1("$", ctx_r1.UnallocatedRemainder.toFixed(2), " remaining to allocate before capturing.");
|
|
353
362
|
} }
|
|
354
|
-
function
|
|
355
|
-
i0.ɵɵelement(0, "i",
|
|
363
|
+
function BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_43_Conditional_70_Template(rf, ctx) { if (rf & 1) {
|
|
364
|
+
i0.ɵɵelement(0, "i", 108);
|
|
356
365
|
i0.ɵɵelementStart(1, "span");
|
|
357
366
|
i0.ɵɵtext(2);
|
|
358
367
|
i0.ɵɵelementEnd();
|
|
@@ -361,7 +370,7 @@ function BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_43_Conditio
|
|
|
361
370
|
i0.ɵɵadvance(2);
|
|
362
371
|
i0.ɵɵtextInterpolate1("Over-allocated by $", ctx_r1.Math.abs(ctx_r1.UnallocatedRemainder).toFixed(2), ". Please adjust amounts.");
|
|
363
372
|
} }
|
|
364
|
-
function
|
|
373
|
+
function BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_43_Conditional_76_Template(rf, ctx) { if (rf & 1) {
|
|
365
374
|
i0.ɵɵelementStart(0, "span", 66);
|
|
366
375
|
i0.ɵɵtext(1);
|
|
367
376
|
i0.ɵɵelementEnd();
|
|
@@ -370,21 +379,21 @@ function BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_43_Conditio
|
|
|
370
379
|
i0.ɵɵadvance();
|
|
371
380
|
i0.ɵɵtextInterpolate1("", ctx_r1.FilteredOpenOrders.length, " available");
|
|
372
381
|
} }
|
|
373
|
-
function
|
|
382
|
+
function BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_43_Conditional_77_Template(rf, ctx) { if (rf & 1) {
|
|
374
383
|
const _r12 = i0.ɵɵgetCurrentView();
|
|
375
|
-
i0.ɵɵelementStart(0, "div", 67)(1, "div",
|
|
376
|
-
i0.ɵɵelement(2, "i",
|
|
377
|
-
i0.ɵɵelementStart(3, "input",
|
|
378
|
-
i0.ɵɵtwoWayListener("ngModelChange", function
|
|
384
|
+
i0.ɵɵelementStart(0, "div", 67)(1, "div", 109);
|
|
385
|
+
i0.ɵɵelement(2, "i", 110);
|
|
386
|
+
i0.ɵɵelementStart(3, "input", 111);
|
|
387
|
+
i0.ɵɵtwoWayListener("ngModelChange", function BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_43_Conditional_77_Template_input_ngModelChange_3_listener($event) { i0.ɵɵrestoreView(_r12); const ctx_r1 = i0.ɵɵnextContext(3); i0.ɵɵtwoWayBindingSet(ctx_r1.SearchQuery, $event) || (ctx_r1.SearchQuery = $event); return i0.ɵɵresetView($event); });
|
|
379
388
|
i0.ɵɵelementEnd()();
|
|
380
|
-
i0.ɵɵelementStart(4, "button",
|
|
381
|
-
i0.ɵɵlistener("click", function
|
|
382
|
-
i0.ɵɵelement(5, "i",
|
|
389
|
+
i0.ɵɵelementStart(4, "button", 112);
|
|
390
|
+
i0.ɵɵlistener("click", function BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_43_Conditional_77_Template_button_click_4_listener() { i0.ɵɵrestoreView(_r12); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.AutoApplyOldestFirst()); });
|
|
391
|
+
i0.ɵɵelement(5, "i", 113);
|
|
383
392
|
i0.ɵɵtext(6, " Auto-apply oldest ");
|
|
384
393
|
i0.ɵɵelementEnd();
|
|
385
|
-
i0.ɵɵelementStart(7, "button",
|
|
386
|
-
i0.ɵɵlistener("click", function
|
|
387
|
-
i0.ɵɵelement(8, "i",
|
|
394
|
+
i0.ɵɵelementStart(7, "button", 114);
|
|
395
|
+
i0.ɵɵlistener("click", function BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_43_Conditional_77_Template_button_click_7_listener() { i0.ɵɵrestoreView(_r12); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.ClearAllocations()); });
|
|
396
|
+
i0.ɵɵelement(8, "i", 115);
|
|
388
397
|
i0.ɵɵtext(9, " Clear all ");
|
|
389
398
|
i0.ɵɵelementEnd()();
|
|
390
399
|
} if (rf & 2) {
|
|
@@ -392,16 +401,16 @@ function BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_43_Conditio
|
|
|
392
401
|
i0.ɵɵadvance(3);
|
|
393
402
|
i0.ɵɵtwoWayProperty("ngModel", ctx_r1.SearchQuery);
|
|
394
403
|
} }
|
|
395
|
-
function
|
|
404
|
+
function BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_43_Conditional_79_Template(rf, ctx) { if (rf & 1) {
|
|
396
405
|
i0.ɵɵelementStart(0, "div", 69);
|
|
397
|
-
i0.ɵɵelement(1, "i",
|
|
406
|
+
i0.ɵɵelement(1, "i", 116);
|
|
398
407
|
i0.ɵɵelementStart(2, "p");
|
|
399
408
|
i0.ɵɵtext(3, "Loading open orders\u2026");
|
|
400
409
|
i0.ɵɵelementEnd()();
|
|
401
410
|
} }
|
|
402
|
-
function
|
|
411
|
+
function BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_43_Conditional_80_Template(rf, ctx) { if (rf & 1) {
|
|
403
412
|
i0.ɵɵelementStart(0, "div", 69);
|
|
404
|
-
i0.ɵɵelement(1, "i",
|
|
413
|
+
i0.ɵɵelement(1, "i", 117);
|
|
405
414
|
i0.ɵɵelementStart(2, "h3");
|
|
406
415
|
i0.ɵɵtext(3, "No unpaid orders found");
|
|
407
416
|
i0.ɵɵelementEnd();
|
|
@@ -409,13 +418,13 @@ function BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_43_Conditio
|
|
|
409
418
|
i0.ɵɵtext(5, "There are zero open unpaid orders. Any recorded payment will be retained as unallocated credit.");
|
|
410
419
|
i0.ɵɵelementEnd()();
|
|
411
420
|
} }
|
|
412
|
-
function
|
|
421
|
+
function BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_43_Conditional_81_Conditional_5_Template(rf, ctx) { if (rf & 1) {
|
|
413
422
|
i0.ɵɵelementStart(0, "th");
|
|
414
423
|
i0.ɵɵtext(1, "Customer");
|
|
415
424
|
i0.ɵɵelementEnd();
|
|
416
425
|
} }
|
|
417
|
-
function
|
|
418
|
-
i0.ɵɵelementStart(0, "td",
|
|
426
|
+
function BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_43_Conditional_81_For_25_Conditional_4_Template(rf, ctx) { if (rf & 1) {
|
|
427
|
+
i0.ɵɵelementStart(0, "td", 126);
|
|
419
428
|
i0.ɵɵtext(1);
|
|
420
429
|
i0.ɵɵelementEnd();
|
|
421
430
|
} if (rf & 2) {
|
|
@@ -423,8 +432,8 @@ function BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_43_Conditio
|
|
|
423
432
|
i0.ɵɵadvance();
|
|
424
433
|
i0.ɵɵtextInterpolate(order_r14.BillToOrganization || order_r14.BillToPerson || "\u2014");
|
|
425
434
|
} }
|
|
426
|
-
function
|
|
427
|
-
i0.ɵɵelementStart(0, "div",
|
|
435
|
+
function BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_43_Conditional_81_For_25_Conditional_9_Template(rf, ctx) { if (rf & 1) {
|
|
436
|
+
i0.ɵɵelementStart(0, "div", 128);
|
|
428
437
|
i0.ɵɵtext(1);
|
|
429
438
|
i0.ɵɵelementEnd();
|
|
430
439
|
} if (rf & 2) {
|
|
@@ -432,8 +441,8 @@ function BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_43_Conditio
|
|
|
432
441
|
i0.ɵɵadvance();
|
|
433
442
|
i0.ɵɵtextInterpolate(order_r14.Description);
|
|
434
443
|
} }
|
|
435
|
-
function
|
|
436
|
-
i0.ɵɵelementStart(0, "span",
|
|
444
|
+
function BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_43_Conditional_81_For_25_Conditional_13_Template(rf, ctx) { if (rf & 1) {
|
|
445
|
+
i0.ɵɵelementStart(0, "span", 129);
|
|
437
446
|
i0.ɵɵtext(1);
|
|
438
447
|
i0.ɵɵelementEnd();
|
|
439
448
|
} if (rf & 2) {
|
|
@@ -442,7 +451,7 @@ function BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_43_Conditio
|
|
|
442
451
|
i0.ɵɵadvance();
|
|
443
452
|
i0.ɵɵtextInterpolate1("", ctx_r1.GetOrderDaysOverdue(order_r14), "d overdue");
|
|
444
453
|
} }
|
|
445
|
-
function
|
|
454
|
+
function BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_43_Conditional_81_For_25_Conditional_14_Template(rf, ctx) { if (rf & 1) {
|
|
446
455
|
i0.ɵɵelementStart(0, "span");
|
|
447
456
|
i0.ɵɵtext(1);
|
|
448
457
|
i0.ɵɵelementEnd();
|
|
@@ -452,30 +461,30 @@ function BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_43_Conditio
|
|
|
452
461
|
i0.ɵɵadvance();
|
|
453
462
|
i0.ɵɵtextInterpolate(ctx_r1.FormatOrderDueDate(order_r14));
|
|
454
463
|
} }
|
|
455
|
-
function
|
|
456
|
-
i0.ɵɵelementStart(0, "div",
|
|
457
|
-
i0.ɵɵelement(1, "i",
|
|
464
|
+
function BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_43_Conditional_81_For_25_Conditional_27_Template(rf, ctx) { if (rf & 1) {
|
|
465
|
+
i0.ɵɵelementStart(0, "div", 136);
|
|
466
|
+
i0.ɵɵelement(1, "i", 139);
|
|
458
467
|
i0.ɵɵtext(2, " Lines allocated ");
|
|
459
468
|
i0.ɵɵelementEnd();
|
|
460
469
|
} }
|
|
461
|
-
function
|
|
470
|
+
function BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_43_Conditional_81_For_25_Conditional_31_Template(rf, ctx) { if (rf & 1) {
|
|
462
471
|
const _r15 = i0.ɵɵgetCurrentView();
|
|
463
|
-
i0.ɵɵelementStart(0, "button",
|
|
464
|
-
i0.ɵɵlistener("click", function
|
|
472
|
+
i0.ɵɵelementStart(0, "button", 140);
|
|
473
|
+
i0.ɵɵlistener("click", function BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_43_Conditional_81_For_25_Conditional_31_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r15); const order_r14 = i0.ɵɵnextContext().$implicit; const ctx_r1 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r1.FullPayOrder(order_r14)); });
|
|
465
474
|
i0.ɵɵtext(1, " Pay in Full ");
|
|
466
475
|
i0.ɵɵelementEnd();
|
|
467
476
|
} if (rf & 2) {
|
|
468
477
|
const order_r14 = i0.ɵɵnextContext().$implicit;
|
|
469
478
|
i0.ɵɵproperty("disabled", (order_r14.Balance ?? order_r14.TotalGross ?? 0) <= 0);
|
|
470
479
|
} }
|
|
471
|
-
function
|
|
480
|
+
function BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_43_Conditional_81_For_25_Conditional_32_For_23_Conditional_16_Template(rf, ctx) { if (rf & 1) {
|
|
472
481
|
const _r18 = i0.ɵɵgetCurrentView();
|
|
473
|
-
i0.ɵɵelementStart(0, "button",
|
|
474
|
-
i0.ɵɵlistener("click", function
|
|
482
|
+
i0.ɵɵelementStart(0, "button", 148);
|
|
483
|
+
i0.ɵɵlistener("click", function BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_43_Conditional_81_For_25_Conditional_32_For_23_Conditional_16_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r18); const line_r17 = i0.ɵɵnextContext().$implicit; const order_r14 = i0.ɵɵnextContext(2).$implicit; const ctx_r1 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r1.FullPayLine(order_r14, line_r17)); });
|
|
475
484
|
i0.ɵɵtext(1, " Line Pay ");
|
|
476
485
|
i0.ɵɵelementEnd();
|
|
477
486
|
} }
|
|
478
|
-
function
|
|
487
|
+
function BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_43_Conditional_81_For_25_Conditional_32_For_23_Template(rf, ctx) { if (rf & 1) {
|
|
479
488
|
const _r16 = i0.ɵɵgetCurrentView();
|
|
480
489
|
i0.ɵɵelementStart(0, "tr")(1, "td");
|
|
481
490
|
i0.ɵɵtext(2);
|
|
@@ -483,20 +492,20 @@ function BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_43_Conditio
|
|
|
483
492
|
i0.ɵɵelementStart(3, "td")(4, "strong");
|
|
484
493
|
i0.ɵɵtext(5);
|
|
485
494
|
i0.ɵɵelementEnd()();
|
|
486
|
-
i0.ɵɵelementStart(6, "td",
|
|
495
|
+
i0.ɵɵelementStart(6, "td", 131);
|
|
487
496
|
i0.ɵɵtext(7);
|
|
488
497
|
i0.ɵɵelementEnd();
|
|
489
|
-
i0.ɵɵelementStart(8, "td",
|
|
498
|
+
i0.ɵɵelementStart(8, "td", 131);
|
|
490
499
|
i0.ɵɵtext(9);
|
|
491
500
|
i0.ɵɵelementEnd();
|
|
492
|
-
i0.ɵɵelementStart(10, "td",
|
|
501
|
+
i0.ɵɵelementStart(10, "td", 120)(11, "div", 133)(12, "span", 134);
|
|
493
502
|
i0.ɵɵtext(13, "$");
|
|
494
503
|
i0.ɵɵelementEnd();
|
|
495
|
-
i0.ɵɵelementStart(14, "input",
|
|
496
|
-
i0.ɵɵlistener("ngModelChange", function
|
|
504
|
+
i0.ɵɵelementStart(14, "input", 146);
|
|
505
|
+
i0.ɵɵlistener("ngModelChange", function BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_43_Conditional_81_For_25_Conditional_32_For_23_Template_input_ngModelChange_14_listener($event) { const line_r17 = i0.ɵɵrestoreView(_r16).$implicit; const order_r14 = i0.ɵɵnextContext(2).$implicit; const ctx_r1 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r1.SetLineAllocation(line_r17.ID || "", $event, order_r14.ID)); });
|
|
497
506
|
i0.ɵɵelementEnd()()();
|
|
498
|
-
i0.ɵɵelementStart(15, "td",
|
|
499
|
-
i0.ɵɵconditionalCreate(16,
|
|
507
|
+
i0.ɵɵelementStart(15, "td", 120);
|
|
508
|
+
i0.ɵɵconditionalCreate(16, BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_43_Conditional_81_For_25_Conditional_32_For_23_Conditional_16_Template, 2, 0, "button", 147);
|
|
500
509
|
i0.ɵɵelementEnd()();
|
|
501
510
|
} if (rf & 2) {
|
|
502
511
|
const line_r17 = ctx.$implicit;
|
|
@@ -514,31 +523,31 @@ function BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_43_Conditio
|
|
|
514
523
|
i0.ɵɵadvance(2);
|
|
515
524
|
i0.ɵɵconditional(!ctx_r1.IsCaptured ? 16 : -1);
|
|
516
525
|
} }
|
|
517
|
-
function
|
|
518
|
-
i0.ɵɵelementStart(0, "tr",
|
|
519
|
-
i0.ɵɵelement(4, "i",
|
|
526
|
+
function BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_43_Conditional_81_For_25_Conditional_32_Template(rf, ctx) { if (rf & 1) {
|
|
527
|
+
i0.ɵɵelementStart(0, "tr", 138)(1, "td", 141)(2, "div", 142)(3, "div", 143);
|
|
528
|
+
i0.ɵɵelement(4, "i", 139);
|
|
520
529
|
i0.ɵɵelementStart(5, "span");
|
|
521
530
|
i0.ɵɵtext(6, "Order Line Items (Targeted Line Allocations)");
|
|
522
531
|
i0.ɵɵelementEnd()();
|
|
523
|
-
i0.ɵɵelementStart(7, "table",
|
|
532
|
+
i0.ɵɵelementStart(7, "table", 144)(8, "thead")(9, "tr")(10, "th");
|
|
524
533
|
i0.ɵɵtext(11, "#");
|
|
525
534
|
i0.ɵɵelementEnd();
|
|
526
535
|
i0.ɵɵelementStart(12, "th");
|
|
527
536
|
i0.ɵɵtext(13, "Product");
|
|
528
537
|
i0.ɵɵelementEnd();
|
|
529
|
-
i0.ɵɵelementStart(14, "th",
|
|
538
|
+
i0.ɵɵelementStart(14, "th", 120);
|
|
530
539
|
i0.ɵɵtext(15, "Unit Price");
|
|
531
540
|
i0.ɵɵelementEnd();
|
|
532
|
-
i0.ɵɵelementStart(16, "th",
|
|
541
|
+
i0.ɵɵelementStart(16, "th", 120);
|
|
533
542
|
i0.ɵɵtext(17, "Gross");
|
|
534
543
|
i0.ɵɵelementEnd();
|
|
535
|
-
i0.ɵɵelementStart(18, "th",
|
|
544
|
+
i0.ɵɵelementStart(18, "th", 121);
|
|
536
545
|
i0.ɵɵtext(19, "Line Allocation");
|
|
537
546
|
i0.ɵɵelementEnd();
|
|
538
|
-
i0.ɵɵelement(20, "th",
|
|
547
|
+
i0.ɵɵelement(20, "th", 145);
|
|
539
548
|
i0.ɵɵelementEnd()();
|
|
540
549
|
i0.ɵɵelementStart(21, "tbody");
|
|
541
|
-
i0.ɵɵrepeaterCreate(22,
|
|
550
|
+
i0.ɵɵrepeaterCreate(22, BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_43_Conditional_81_For_25_Conditional_32_For_23_Template, 17, 7, "tr", null, _forTrack0);
|
|
542
551
|
i0.ɵɵelementEnd()()()()();
|
|
543
552
|
} if (rf & 2) {
|
|
544
553
|
const order_r14 = i0.ɵɵnextContext().$implicit;
|
|
@@ -548,50 +557,50 @@ function BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_43_Conditio
|
|
|
548
557
|
i0.ɵɵadvance(21);
|
|
549
558
|
i0.ɵɵrepeater(ctx_r1.GetOrderLines(order_r14.ID || ""));
|
|
550
559
|
} }
|
|
551
|
-
function
|
|
560
|
+
function BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_43_Conditional_81_For_25_Template(rf, ctx) { if (rf & 1) {
|
|
552
561
|
const _r13 = i0.ɵɵgetCurrentView();
|
|
553
|
-
i0.ɵɵelementStart(0, "tr",
|
|
554
|
-
i0.ɵɵlistener("click", function
|
|
555
|
-
i0.ɵɵelement(3, "i",
|
|
562
|
+
i0.ɵɵelementStart(0, "tr", 123)(1, "td")(2, "button", 124);
|
|
563
|
+
i0.ɵɵlistener("click", function BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_43_Conditional_81_For_25_Template_button_click_2_listener() { const order_r14 = i0.ɵɵrestoreView(_r13).$implicit; const ctx_r1 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r1.ToggleOrderExpanded(order_r14.ID || "")); });
|
|
564
|
+
i0.ɵɵelement(3, "i", 125);
|
|
556
565
|
i0.ɵɵelementEnd()();
|
|
557
|
-
i0.ɵɵconditionalCreate(4,
|
|
558
|
-
i0.ɵɵelementStart(5, "td")(6, "button",
|
|
559
|
-
i0.ɵɵlistener("click", function
|
|
566
|
+
i0.ɵɵconditionalCreate(4, BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_43_Conditional_81_For_25_Conditional_4_Template, 2, 1, "td", 126);
|
|
567
|
+
i0.ɵɵelementStart(5, "td")(6, "button", 127);
|
|
568
|
+
i0.ɵɵlistener("click", function BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_43_Conditional_81_For_25_Template_button_click_6_listener($event) { const order_r14 = i0.ɵɵrestoreView(_r13).$implicit; const ctx_r1 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r1.OpenOrderRecord(order_r14, $event)); });
|
|
560
569
|
i0.ɵɵelementStart(7, "strong");
|
|
561
570
|
i0.ɵɵtext(8);
|
|
562
571
|
i0.ɵɵelementEnd()();
|
|
563
|
-
i0.ɵɵconditionalCreate(9,
|
|
572
|
+
i0.ɵɵconditionalCreate(9, BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_43_Conditional_81_For_25_Conditional_9_Template, 2, 1, "div", 128);
|
|
564
573
|
i0.ɵɵelementEnd();
|
|
565
574
|
i0.ɵɵelementStart(10, "td");
|
|
566
575
|
i0.ɵɵtext(11);
|
|
567
576
|
i0.ɵɵelementEnd();
|
|
568
577
|
i0.ɵɵelementStart(12, "td");
|
|
569
|
-
i0.ɵɵconditionalCreate(13,
|
|
578
|
+
i0.ɵɵconditionalCreate(13, BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_43_Conditional_81_For_25_Conditional_13_Template, 2, 1, "span", 129)(14, BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_43_Conditional_81_For_25_Conditional_14_Template, 2, 1, "span");
|
|
570
579
|
i0.ɵɵelementEnd();
|
|
571
|
-
i0.ɵɵelementStart(15, "td")(16, "span",
|
|
580
|
+
i0.ɵɵelementStart(15, "td")(16, "span", 130);
|
|
572
581
|
i0.ɵɵtext(17);
|
|
573
582
|
i0.ɵɵelementEnd()();
|
|
574
|
-
i0.ɵɵelementStart(18, "td",
|
|
583
|
+
i0.ɵɵelementStart(18, "td", 131);
|
|
575
584
|
i0.ɵɵtext(19);
|
|
576
585
|
i0.ɵɵelementEnd();
|
|
577
|
-
i0.ɵɵelementStart(20, "td",
|
|
586
|
+
i0.ɵɵelementStart(20, "td", 132);
|
|
578
587
|
i0.ɵɵtext(21);
|
|
579
588
|
i0.ɵɵelementEnd();
|
|
580
|
-
i0.ɵɵelementStart(22, "td",
|
|
589
|
+
i0.ɵɵelementStart(22, "td", 120)(23, "div", 133)(24, "span", 134);
|
|
581
590
|
i0.ɵɵtext(25, "$");
|
|
582
591
|
i0.ɵɵelementEnd();
|
|
583
|
-
i0.ɵɵelementStart(26, "input",
|
|
584
|
-
i0.ɵɵlistener("ngModelChange", function
|
|
592
|
+
i0.ɵɵelementStart(26, "input", 135);
|
|
593
|
+
i0.ɵɵlistener("ngModelChange", function BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_43_Conditional_81_For_25_Template_input_ngModelChange_26_listener($event) { const order_r14 = i0.ɵɵrestoreView(_r13).$implicit; const ctx_r1 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r1.SetOrderAllocation(order_r14.ID || "", $event)); });
|
|
585
594
|
i0.ɵɵelementEnd()();
|
|
586
|
-
i0.ɵɵconditionalCreate(27,
|
|
595
|
+
i0.ɵɵconditionalCreate(27, BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_43_Conditional_81_For_25_Conditional_27_Template, 3, 0, "div", 136);
|
|
587
596
|
i0.ɵɵelementEnd();
|
|
588
|
-
i0.ɵɵelementStart(28, "td",
|
|
597
|
+
i0.ɵɵelementStart(28, "td", 131);
|
|
589
598
|
i0.ɵɵtext(29);
|
|
590
599
|
i0.ɵɵelementEnd();
|
|
591
|
-
i0.ɵɵelementStart(30, "td",
|
|
592
|
-
i0.ɵɵconditionalCreate(31,
|
|
600
|
+
i0.ɵɵelementStart(30, "td", 120);
|
|
601
|
+
i0.ɵɵconditionalCreate(31, BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_43_Conditional_81_For_25_Conditional_31_Template, 2, 1, "button", 137);
|
|
593
602
|
i0.ɵɵelementEnd()();
|
|
594
|
-
i0.ɵɵconditionalCreate(32,
|
|
603
|
+
i0.ɵɵconditionalCreate(32, BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_43_Conditional_81_For_25_Conditional_32_Template, 24, 1, "tr", 138);
|
|
595
604
|
} if (rf & 2) {
|
|
596
605
|
const order_r14 = ctx.$implicit;
|
|
597
606
|
const ctx_r1 = i0.ɵɵnextContext(4);
|
|
@@ -629,10 +638,10 @@ function BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_43_Conditio
|
|
|
629
638
|
i0.ɵɵadvance();
|
|
630
639
|
i0.ɵɵconditional(ctx_r1.IsOrderExpanded(order_r14.ID || "") ? 32 : -1);
|
|
631
640
|
} }
|
|
632
|
-
function
|
|
633
|
-
i0.ɵɵelementStart(0, "div", 70)(1, "table",
|
|
634
|
-
i0.ɵɵelement(4, "th",
|
|
635
|
-
i0.ɵɵconditionalCreate(5,
|
|
641
|
+
function BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_43_Conditional_81_Template(rf, ctx) { if (rf & 1) {
|
|
642
|
+
i0.ɵɵelementStart(0, "div", 70)(1, "table", 118)(2, "thead")(3, "tr");
|
|
643
|
+
i0.ɵɵelement(4, "th", 119);
|
|
644
|
+
i0.ɵɵconditionalCreate(5, BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_43_Conditional_81_Conditional_5_Template, 2, 0, "th");
|
|
636
645
|
i0.ɵɵelementStart(6, "th");
|
|
637
646
|
i0.ɵɵtext(7, "Order \u2116");
|
|
638
647
|
i0.ɵɵelementEnd();
|
|
@@ -645,22 +654,22 @@ function BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_43_Conditio
|
|
|
645
654
|
i0.ɵɵelementStart(12, "th");
|
|
646
655
|
i0.ɵɵtext(13, "Company");
|
|
647
656
|
i0.ɵɵelementEnd();
|
|
648
|
-
i0.ɵɵelementStart(14, "th",
|
|
657
|
+
i0.ɵɵelementStart(14, "th", 120);
|
|
649
658
|
i0.ɵɵtext(15, "Gross");
|
|
650
659
|
i0.ɵɵelementEnd();
|
|
651
|
-
i0.ɵɵelementStart(16, "th",
|
|
660
|
+
i0.ɵɵelementStart(16, "th", 120);
|
|
652
661
|
i0.ɵɵtext(17, "Open Balance");
|
|
653
662
|
i0.ɵɵelementEnd();
|
|
654
|
-
i0.ɵɵelementStart(18, "th",
|
|
663
|
+
i0.ɵɵelementStart(18, "th", 121);
|
|
655
664
|
i0.ɵɵtext(19, "Apply Amount");
|
|
656
665
|
i0.ɵɵelementEnd();
|
|
657
|
-
i0.ɵɵelementStart(20, "th",
|
|
666
|
+
i0.ɵɵelementStart(20, "th", 120);
|
|
658
667
|
i0.ɵɵtext(21, "Leaves Balance");
|
|
659
668
|
i0.ɵɵelementEnd();
|
|
660
|
-
i0.ɵɵelement(22, "th",
|
|
669
|
+
i0.ɵɵelement(22, "th", 122);
|
|
661
670
|
i0.ɵɵelementEnd()();
|
|
662
671
|
i0.ɵɵelementStart(23, "tbody");
|
|
663
|
-
i0.ɵɵrepeaterCreate(24,
|
|
672
|
+
i0.ɵɵrepeaterCreate(24, BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_43_Conditional_81_For_25_Template, 33, 25, null, null, _forTrack0);
|
|
664
673
|
i0.ɵɵelementEnd()()();
|
|
665
674
|
} if (rf & 2) {
|
|
666
675
|
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
@@ -700,60 +709,62 @@ function BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_43_Template
|
|
|
700
709
|
i0.ɵɵlistener("Navigate", function BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_43_Template_mj_form_field_Navigate_26_listener($event) { i0.ɵɵrestoreView(_r4); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.OnFormNavigate($event)); });
|
|
701
710
|
i0.ɵɵelementEnd();
|
|
702
711
|
i0.ɵɵelementStart(27, "div", 38)(28, "label", 39);
|
|
703
|
-
i0.ɵɵtext(29, "Payment Type");
|
|
704
|
-
i0.ɵɵ
|
|
705
|
-
i0.ɵɵ
|
|
712
|
+
i0.ɵɵtext(29, "Payment Type ");
|
|
713
|
+
i0.ɵɵelementStart(30, "span", 44);
|
|
714
|
+
i0.ɵɵtext(31, "*");
|
|
715
|
+
i0.ɵɵelementEnd()();
|
|
716
|
+
i0.ɵɵconditionalCreate(32, BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_43_Conditional_32_Template, 6, 5)(33, BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_43_Conditional_33_Template, 1, 4, "mj-form-field", 45);
|
|
706
717
|
i0.ɵɵelementEnd();
|
|
707
|
-
i0.ɵɵconditionalCreate(
|
|
708
|
-
i0.ɵɵelementStart(
|
|
709
|
-
i0.ɵɵlistener("Navigate", function
|
|
718
|
+
i0.ɵɵconditionalCreate(34, BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_43_Conditional_34_Template, 19, 6, "div", 46)(35, BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_43_Conditional_35_Template, 39, 12, "div", 46)(36, BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_43_Conditional_36_Template, 31, 11, "div", 46)(37, BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_43_Conditional_37_Template, 10, 2, "div", 46);
|
|
719
|
+
i0.ɵɵelementStart(38, "mj-form-field", 47);
|
|
720
|
+
i0.ɵɵlistener("Navigate", function BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_43_Template_mj_form_field_Navigate_38_listener($event) { i0.ɵɵrestoreView(_r4); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.OnFormNavigate($event)); });
|
|
710
721
|
i0.ɵɵelementEnd();
|
|
711
|
-
i0.ɵɵelementStart(
|
|
712
|
-
i0.ɵɵlistener("Navigate", function
|
|
722
|
+
i0.ɵɵelementStart(39, "mj-form-field", 48);
|
|
723
|
+
i0.ɵɵlistener("Navigate", function BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_43_Template_mj_form_field_Navigate_39_listener($event) { i0.ɵɵrestoreView(_r4); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.OnFormNavigate($event)); });
|
|
713
724
|
i0.ɵɵelementEnd()();
|
|
714
|
-
i0.ɵɵelementStart(
|
|
715
|
-
i0.ɵɵtext(
|
|
725
|
+
i0.ɵɵelementStart(40, "div", 49)(41, "span", 50);
|
|
726
|
+
i0.ɵɵtext(42, "Net Settlement Amount");
|
|
716
727
|
i0.ɵɵelementEnd();
|
|
717
|
-
i0.ɵɵelementStart(
|
|
718
|
-
i0.ɵɵtext(
|
|
728
|
+
i0.ɵɵelementStart(43, "span", 51);
|
|
729
|
+
i0.ɵɵtext(44);
|
|
719
730
|
i0.ɵɵelementEnd()()()()();
|
|
720
|
-
i0.ɵɵelementStart(
|
|
721
|
-
i0.ɵɵtext(
|
|
731
|
+
i0.ɵɵelementStart(45, "main", 52)(46, "div", 53)(47, "div", 54)(48, "div", 55)(49, "span", 56);
|
|
732
|
+
i0.ɵɵtext(50, "Payment Received");
|
|
722
733
|
i0.ɵɵelementEnd();
|
|
723
|
-
i0.ɵɵelementStart(
|
|
724
|
-
i0.ɵɵtext(
|
|
734
|
+
i0.ɵɵelementStart(51, "span", 57);
|
|
735
|
+
i0.ɵɵtext(52);
|
|
725
736
|
i0.ɵɵelementEnd()();
|
|
726
|
-
i0.ɵɵelementStart(
|
|
727
|
-
i0.ɵɵelement(
|
|
737
|
+
i0.ɵɵelementStart(53, "div", 58);
|
|
738
|
+
i0.ɵɵelement(54, "i", 59);
|
|
728
739
|
i0.ɵɵelementEnd();
|
|
729
|
-
i0.ɵɵelementStart(
|
|
730
|
-
i0.ɵɵtext(
|
|
740
|
+
i0.ɵɵelementStart(55, "div", 55)(56, "span", 56);
|
|
741
|
+
i0.ɵɵtext(57, "Allocated");
|
|
731
742
|
i0.ɵɵelementEnd();
|
|
732
|
-
i0.ɵɵelementStart(
|
|
733
|
-
i0.ɵɵtext(
|
|
743
|
+
i0.ɵɵelementStart(58, "span", 57);
|
|
744
|
+
i0.ɵɵtext(59);
|
|
734
745
|
i0.ɵɵelementEnd()();
|
|
735
|
-
i0.ɵɵelementStart(
|
|
736
|
-
i0.ɵɵelement(
|
|
746
|
+
i0.ɵɵelementStart(60, "div", 58);
|
|
747
|
+
i0.ɵɵelement(61, "i", 60);
|
|
737
748
|
i0.ɵɵelementEnd();
|
|
738
|
-
i0.ɵɵelementStart(
|
|
739
|
-
i0.ɵɵtext(
|
|
749
|
+
i0.ɵɵelementStart(62, "div", 55)(63, "span", 56);
|
|
750
|
+
i0.ɵɵtext(64, "Unallocated Remainder");
|
|
740
751
|
i0.ɵɵelementEnd();
|
|
741
|
-
i0.ɵɵelementStart(
|
|
742
|
-
i0.ɵɵtext(
|
|
752
|
+
i0.ɵɵelementStart(65, "span", 57);
|
|
753
|
+
i0.ɵɵtext(66);
|
|
743
754
|
i0.ɵɵelementEnd()()();
|
|
744
|
-
i0.ɵɵelementStart(
|
|
745
|
-
i0.ɵɵconditionalCreate(
|
|
755
|
+
i0.ɵɵelementStart(67, "div", 61);
|
|
756
|
+
i0.ɵɵconditionalCreate(68, BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_43_Conditional_68_Template, 3, 0)(69, BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_43_Conditional_69_Template, 3, 1)(70, BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_43_Conditional_70_Template, 3, 1);
|
|
746
757
|
i0.ɵɵelementEnd()();
|
|
747
|
-
i0.ɵɵelementStart(
|
|
748
|
-
i0.ɵɵelement(
|
|
749
|
-
i0.ɵɵtext(
|
|
758
|
+
i0.ɵɵelementStart(71, "div", 62)(72, "div", 63)(73, "h2", 64);
|
|
759
|
+
i0.ɵɵelement(74, "i", 65);
|
|
760
|
+
i0.ɵɵtext(75, " Open orders ");
|
|
750
761
|
i0.ɵɵelementEnd();
|
|
751
|
-
i0.ɵɵconditionalCreate(
|
|
762
|
+
i0.ɵɵconditionalCreate(76, BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_43_Conditional_76_Template, 2, 1, "span", 66);
|
|
752
763
|
i0.ɵɵelementEnd();
|
|
753
|
-
i0.ɵɵconditionalCreate(
|
|
764
|
+
i0.ɵɵconditionalCreate(77, BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_43_Conditional_77_Template, 10, 1, "div", 67);
|
|
754
765
|
i0.ɵɵelementEnd();
|
|
755
|
-
i0.ɵɵelementStart(
|
|
756
|
-
i0.ɵɵconditionalCreate(
|
|
766
|
+
i0.ɵɵelementStart(78, "div", 68);
|
|
767
|
+
i0.ɵɵconditionalCreate(79, BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_43_Conditional_79_Template, 4, 0, "div", 69)(80, BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_43_Conditional_80_Template, 6, 0, "div", 69)(81, BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_43_Conditional_81_Template, 26, 1, "div", 70);
|
|
757
768
|
i0.ɵɵelementEnd()()();
|
|
758
769
|
} if (rf & 2) {
|
|
759
770
|
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
@@ -767,10 +778,10 @@ function BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_43_Template
|
|
|
767
778
|
i0.ɵɵproperty("ngModel", ctx_r1.record.Amount)("disabled", !ctx_r1.ComposeMode);
|
|
768
779
|
i0.ɵɵadvance(2);
|
|
769
780
|
i0.ɵɵproperty("Record", ctx_r1.record)("ShowLabel", true)("EditMode", ctx_r1.ComposeMode)("FormContext", ctx_r1.formContext);
|
|
770
|
-
i0.ɵɵadvance(
|
|
771
|
-
i0.ɵɵconditional(ctx_r1.ComposeMode && ctx_r1.PaymentTypes.length > 0 ?
|
|
781
|
+
i0.ɵɵadvance(6);
|
|
782
|
+
i0.ɵɵconditional(ctx_r1.ComposeMode && ctx_r1.PaymentTypes.length > 0 ? 32 : 33);
|
|
772
783
|
i0.ɵɵadvance(2);
|
|
773
|
-
i0.ɵɵconditional(ctx_r1.PaymentTypeCode === "check" || (ctx_r1.SelectedPaymentType == null ? null : ctx_r1.SelectedPaymentType.RequiresReference) && !ctx_r1.RequiresInstrument ?
|
|
784
|
+
i0.ɵɵconditional(ctx_r1.PaymentTypeCode === "check" || (ctx_r1.SelectedPaymentType == null ? null : ctx_r1.SelectedPaymentType.RequiresReference) && !ctx_r1.RequiresInstrument ? 34 : ctx_r1.PaymentTypeCode === "card" || ctx_r1.RequiresInstrument ? 35 : ctx_r1.PaymentTypeCode === "ach" ? 36 : ctx_r1.RequiresReference ? 37 : -1);
|
|
774
785
|
i0.ɵɵadvance(4);
|
|
775
786
|
i0.ɵɵproperty("Record", ctx_r1.record)("ShowLabel", true)("EditMode", ctx_r1.ComposeMode)("FormContext", ctx_r1.formContext);
|
|
776
787
|
i0.ɵɵadvance();
|
|
@@ -788,17 +799,17 @@ function BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_43_Template
|
|
|
788
799
|
i0.ɵɵadvance();
|
|
789
800
|
i0.ɵɵtextInterpolate1(" $", ctx_r1.Math.abs(ctx_r1.UnallocatedRemainder).toFixed(2), " ");
|
|
790
801
|
i0.ɵɵadvance(2);
|
|
791
|
-
i0.ɵɵconditional(ctx_r1.IsAllocationBalanced ?
|
|
802
|
+
i0.ɵɵconditional(ctx_r1.IsAllocationBalanced ? 68 : ctx_r1.UnallocatedRemainder > 0 ? 69 : 70);
|
|
792
803
|
i0.ɵɵadvance(8);
|
|
793
|
-
i0.ɵɵconditional(ctx_r1.OpenOrders.length > 0 ?
|
|
804
|
+
i0.ɵɵconditional(ctx_r1.OpenOrders.length > 0 ? 76 : -1);
|
|
794
805
|
i0.ɵɵadvance();
|
|
795
|
-
i0.ɵɵconditional(!ctx_r1.IsCaptured && ctx_r1.OpenOrders.length > 0 ?
|
|
806
|
+
i0.ɵɵconditional(!ctx_r1.IsCaptured && ctx_r1.OpenOrders.length > 0 ? 77 : -1);
|
|
796
807
|
i0.ɵɵadvance(2);
|
|
797
|
-
i0.ɵɵconditional(ctx_r1.LoadingOpenOrders ?
|
|
808
|
+
i0.ɵɵconditional(ctx_r1.LoadingOpenOrders ? 79 : ctx_r1.OpenOrders.length === 0 ? 80 : 81);
|
|
798
809
|
} }
|
|
799
810
|
function BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_44_Conditional_13_Conditional_0_Template(rf, ctx) { if (rf & 1) {
|
|
800
811
|
i0.ɵɵelementStart(0, "div", 69);
|
|
801
|
-
i0.ɵɵelement(1, "i",
|
|
812
|
+
i0.ɵɵelement(1, "i", 116);
|
|
802
813
|
i0.ɵɵelementStart(2, "p");
|
|
803
814
|
i0.ɵɵtext(3, "Rolling up general ledger accounts\u2026");
|
|
804
815
|
i0.ɵɵelementEnd()();
|
|
@@ -814,7 +825,7 @@ function BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_44_Conditio
|
|
|
814
825
|
} }
|
|
815
826
|
function BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_44_Conditional_13_Conditional_2_Template(rf, ctx) { if (rf & 1) {
|
|
816
827
|
i0.ɵɵelementStart(0, "div", 69);
|
|
817
|
-
i0.ɵɵelement(1, "i",
|
|
828
|
+
i0.ɵɵelement(1, "i", 155);
|
|
818
829
|
i0.ɵɵelementStart(2, "h3");
|
|
819
830
|
i0.ɵɵtext(3, "No journal entries booked yet");
|
|
820
831
|
i0.ɵɵelementEnd();
|
|
@@ -823,16 +834,16 @@ function BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_44_Conditio
|
|
|
823
834
|
i0.ɵɵelementEnd()();
|
|
824
835
|
} }
|
|
825
836
|
function BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_44_Conditional_13_Conditional_3_For_2_For_23_Template(rf, ctx) { if (rf & 1) {
|
|
826
|
-
i0.ɵɵelementStart(0, "tr")(1, "td",
|
|
837
|
+
i0.ɵɵelementStart(0, "tr")(1, "td", 160);
|
|
827
838
|
i0.ɵɵtext(2);
|
|
828
839
|
i0.ɵɵelementEnd();
|
|
829
840
|
i0.ɵɵelementStart(3, "td")(4, "span");
|
|
830
841
|
i0.ɵɵtext(5);
|
|
831
842
|
i0.ɵɵelementEnd()();
|
|
832
|
-
i0.ɵɵelementStart(6, "td",
|
|
843
|
+
i0.ɵɵelementStart(6, "td", 131);
|
|
833
844
|
i0.ɵɵtext(7);
|
|
834
845
|
i0.ɵɵelementEnd();
|
|
835
|
-
i0.ɵɵelementStart(8, "td",
|
|
846
|
+
i0.ɵɵelementStart(8, "td", 131);
|
|
836
847
|
i0.ɵɵtext(9);
|
|
837
848
|
i0.ɵɵelementEnd()();
|
|
838
849
|
} if (rf & 2) {
|
|
@@ -848,37 +859,37 @@ function BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_44_Conditio
|
|
|
848
859
|
i0.ɵɵtextInterpolate(row_r20.Credit ? ctx_r1.RollupAmount(row_r20.Credit) : "\u2014");
|
|
849
860
|
} }
|
|
850
861
|
function BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_44_Conditional_13_Conditional_3_For_2_Template(rf, ctx) { if (rf & 1) {
|
|
851
|
-
i0.ɵɵelementStart(0, "div",
|
|
862
|
+
i0.ɵɵelementStart(0, "div", 156)(1, "div", 29)(2, "div")(3, "h3", 30);
|
|
852
863
|
i0.ɵɵtext(4);
|
|
853
864
|
i0.ɵɵelementEnd();
|
|
854
|
-
i0.ɵɵelementStart(5, "div",
|
|
865
|
+
i0.ɵɵelementStart(5, "div", 128);
|
|
855
866
|
i0.ɵɵtext(6);
|
|
856
867
|
i0.ɵɵelementEnd()();
|
|
857
868
|
i0.ɵɵelementStart(7, "span", 66);
|
|
858
869
|
i0.ɵɵtext(8);
|
|
859
870
|
i0.ɵɵelementEnd()();
|
|
860
|
-
i0.ɵɵelementStart(9, "div",
|
|
871
|
+
i0.ɵɵelementStart(9, "div", 157)(10, "table", 158)(11, "thead")(12, "tr")(13, "th");
|
|
861
872
|
i0.ɵɵtext(14, "GL Account");
|
|
862
873
|
i0.ɵɵelementEnd();
|
|
863
874
|
i0.ɵɵelementStart(15, "th");
|
|
864
875
|
i0.ɵɵtext(16, "Name");
|
|
865
876
|
i0.ɵɵelementEnd();
|
|
866
|
-
i0.ɵɵelementStart(17, "th",
|
|
877
|
+
i0.ɵɵelementStart(17, "th", 120);
|
|
867
878
|
i0.ɵɵtext(18, "Debit");
|
|
868
879
|
i0.ɵɵelementEnd();
|
|
869
|
-
i0.ɵɵelementStart(19, "th",
|
|
880
|
+
i0.ɵɵelementStart(19, "th", 120);
|
|
870
881
|
i0.ɵɵtext(20, "Credit");
|
|
871
882
|
i0.ɵɵelementEnd()()();
|
|
872
883
|
i0.ɵɵelementStart(21, "tbody");
|
|
873
884
|
i0.ɵɵrepeaterCreate(22, BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_44_Conditional_13_Conditional_3_For_2_For_23_Template, 10, 4, "tr", null, _forTrack2);
|
|
874
885
|
i0.ɵɵelementEnd();
|
|
875
|
-
i0.ɵɵelementStart(24, "tfoot")(25, "tr")(26, "th",
|
|
886
|
+
i0.ɵɵelementStart(24, "tfoot")(25, "tr")(26, "th", 159);
|
|
876
887
|
i0.ɵɵtext(27, "Total");
|
|
877
888
|
i0.ɵɵelementEnd();
|
|
878
|
-
i0.ɵɵelementStart(28, "th",
|
|
889
|
+
i0.ɵɵelementStart(28, "th", 131);
|
|
879
890
|
i0.ɵɵtext(29);
|
|
880
891
|
i0.ɵɵelementEnd();
|
|
881
|
-
i0.ɵɵelementStart(30, "th",
|
|
892
|
+
i0.ɵɵelementStart(30, "th", 131);
|
|
882
893
|
i0.ɵɵtext(31);
|
|
883
894
|
i0.ɵɵelementEnd()()()()()();
|
|
884
895
|
} if (rf & 2) {
|
|
@@ -900,8 +911,8 @@ function BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_44_Conditio
|
|
|
900
911
|
i0.ɵɵtextInterpolate1("$", card_r21.TotalCredit.toFixed(2));
|
|
901
912
|
} }
|
|
902
913
|
function BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_44_Conditional_13_Conditional_3_Template(rf, ctx) { if (rf & 1) {
|
|
903
|
-
i0.ɵɵelementStart(0, "div",
|
|
904
|
-
i0.ɵɵrepeaterCreate(1, BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_44_Conditional_13_Conditional_3_For_2_Template, 32, 10, "div",
|
|
914
|
+
i0.ɵɵelementStart(0, "div", 154);
|
|
915
|
+
i0.ɵɵrepeaterCreate(1, BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_44_Conditional_13_Conditional_3_For_2_Template, 32, 10, "div", 156, _forTrack1);
|
|
905
916
|
i0.ɵɵelementEnd();
|
|
906
917
|
} if (rf & 2) {
|
|
907
918
|
const ctx_r1 = i0.ɵɵnextContext(4);
|
|
@@ -909,14 +920,14 @@ function BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_44_Conditio
|
|
|
909
920
|
i0.ɵɵrepeater(ctx_r1.RollupCards);
|
|
910
921
|
} }
|
|
911
922
|
function BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_44_Conditional_13_Template(rf, ctx) { if (rf & 1) {
|
|
912
|
-
i0.ɵɵconditionalCreate(0, BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_44_Conditional_13_Conditional_0_Template, 4, 0, "div", 69)(1, BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_44_Conditional_13_Conditional_1_Template, 2, 1, "div", 18)(2, BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_44_Conditional_13_Conditional_2_Template, 6, 0, "div", 69)(3, BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_44_Conditional_13_Conditional_3_Template, 3, 0, "div",
|
|
923
|
+
i0.ɵɵconditionalCreate(0, BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_44_Conditional_13_Conditional_0_Template, 4, 0, "div", 69)(1, BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_44_Conditional_13_Conditional_1_Template, 2, 1, "div", 18)(2, BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_44_Conditional_13_Conditional_2_Template, 6, 0, "div", 69)(3, BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_44_Conditional_13_Conditional_3_Template, 3, 0, "div", 154);
|
|
913
924
|
} if (rf & 2) {
|
|
914
925
|
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
915
926
|
i0.ɵɵconditional(ctx_r1.RollupLoading ? 0 : ctx_r1.RollupError ? 1 : ctx_r1.RollupCards.length === 0 ? 2 : 3);
|
|
916
927
|
} }
|
|
917
928
|
function BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_44_Conditional_14_Conditional_0_Template(rf, ctx) { if (rf & 1) {
|
|
918
929
|
const _r22 = i0.ɵɵgetCurrentView();
|
|
919
|
-
i0.ɵɵelementStart(0, "mj-explorer-entity-data-grid",
|
|
930
|
+
i0.ɵɵelementStart(0, "mj-explorer-entity-data-grid", 162);
|
|
920
931
|
i0.ɵɵlistener("Navigate", function BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_44_Conditional_14_Conditional_0_Template_mj_explorer_entity_data_grid_Navigate_0_listener($event) { i0.ɵɵrestoreView(_r22); const ctx_r1 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r1.OnFormNavigate($event)); });
|
|
921
932
|
i0.ɵɵelementEnd();
|
|
922
933
|
} if (rf & 2) {
|
|
@@ -924,25 +935,25 @@ function BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_44_Conditio
|
|
|
924
935
|
i0.ɵɵproperty("Params", ctx_r1.PaymentJournalEntryParams)("AllowLoad", true)("ShowToolbar", false);
|
|
925
936
|
} }
|
|
926
937
|
function BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_44_Conditional_14_Template(rf, ctx) { if (rf & 1) {
|
|
927
|
-
i0.ɵɵconditionalCreate(0, BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_44_Conditional_14_Conditional_0_Template, 1, 3, "mj-explorer-entity-data-grid",
|
|
938
|
+
i0.ɵɵconditionalCreate(0, BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_44_Conditional_14_Conditional_0_Template, 1, 3, "mj-explorer-entity-data-grid", 161);
|
|
928
939
|
} if (rf & 2) {
|
|
929
940
|
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
930
941
|
i0.ɵɵconditional(ctx_r1.PaymentJournalEntryParams ? 0 : -1);
|
|
931
942
|
} }
|
|
932
943
|
function BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_44_Template(rf, ctx) { if (rf & 1) {
|
|
933
944
|
const _r19 = i0.ɵɵgetCurrentView();
|
|
934
|
-
i0.ɵɵelementStart(0, "div", 20)(1, "div",
|
|
935
|
-
i0.ɵɵelement(4, "i",
|
|
945
|
+
i0.ɵɵelementStart(0, "div", 20)(1, "div", 149)(2, "div")(3, "h2");
|
|
946
|
+
i0.ɵɵelement(4, "i", 150);
|
|
936
947
|
i0.ɵɵtext(5, " General Ledger Postings");
|
|
937
948
|
i0.ɵɵelementEnd();
|
|
938
|
-
i0.ɵɵelementStart(6, "p",
|
|
949
|
+
i0.ɵɵelementStart(6, "p", 151);
|
|
939
950
|
i0.ɵɵtext(7, "Double-entry balanced accounting entries booked across operating and receivable accounts.");
|
|
940
951
|
i0.ɵɵelementEnd()();
|
|
941
|
-
i0.ɵɵelementStart(8, "div",
|
|
952
|
+
i0.ɵɵelementStart(8, "div", 152)(9, "button", 153);
|
|
942
953
|
i0.ɵɵlistener("click", function BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_44_Template_button_click_9_listener() { i0.ɵɵrestoreView(_r19); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.SetAccountingView("summary")); });
|
|
943
954
|
i0.ɵɵtext(10, " Summary (Rolled-up) ");
|
|
944
955
|
i0.ɵɵelementEnd();
|
|
945
|
-
i0.ɵɵelementStart(11, "button",
|
|
956
|
+
i0.ɵɵelementStart(11, "button", 153);
|
|
946
957
|
i0.ɵɵlistener("click", function BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_44_Template_button_click_11_listener() { i0.ɵɵrestoreView(_r19); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.SetAccountingView("detail")); });
|
|
947
958
|
i0.ɵɵtext(12, " By Journal Entry ");
|
|
948
959
|
i0.ɵɵelementEnd()()();
|
|
@@ -959,36 +970,36 @@ function BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_44_Template
|
|
|
959
970
|
} }
|
|
960
971
|
function BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_45_Template(rf, ctx) { if (rf & 1) {
|
|
961
972
|
const _r23 = i0.ɵɵgetCurrentView();
|
|
962
|
-
i0.ɵɵelementStart(0, "div", 20)(1, "div",
|
|
963
|
-
i0.ɵɵelement(5, "i",
|
|
973
|
+
i0.ɵɵelementStart(0, "div", 20)(1, "div", 163)(2, "div", 28)(3, "div", 29)(4, "h3", 30);
|
|
974
|
+
i0.ɵɵelement(5, "i", 164);
|
|
964
975
|
i0.ɵɵtext(6, " Processing & Gateway Details");
|
|
965
976
|
i0.ɵɵelementEnd()();
|
|
966
|
-
i0.ɵɵelementStart(7, "div",
|
|
977
|
+
i0.ɵɵelementStart(7, "div", 165)(8, "mj-form-field", 166);
|
|
967
978
|
i0.ɵɵlistener("Navigate", function BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_45_Template_mj_form_field_Navigate_8_listener($event) { i0.ɵɵrestoreView(_r23); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.OnFormNavigate($event)); });
|
|
968
979
|
i0.ɵɵelementEnd();
|
|
969
|
-
i0.ɵɵelementStart(9, "mj-form-field",
|
|
980
|
+
i0.ɵɵelementStart(9, "mj-form-field", 167);
|
|
970
981
|
i0.ɵɵlistener("Navigate", function BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_45_Template_mj_form_field_Navigate_9_listener($event) { i0.ɵɵrestoreView(_r23); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.OnFormNavigate($event)); });
|
|
971
982
|
i0.ɵɵelementEnd();
|
|
972
|
-
i0.ɵɵelementStart(10, "mj-form-field",
|
|
983
|
+
i0.ɵɵelementStart(10, "mj-form-field", 168);
|
|
973
984
|
i0.ɵɵlistener("Navigate", function BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_45_Template_mj_form_field_Navigate_10_listener($event) { i0.ɵɵrestoreView(_r23); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.OnFormNavigate($event)); });
|
|
974
985
|
i0.ɵɵelementEnd();
|
|
975
|
-
i0.ɵɵelement(11, "mj-form-field",
|
|
986
|
+
i0.ɵɵelement(11, "mj-form-field", 169)(12, "mj-form-field", 170)(13, "mj-form-field", 171);
|
|
976
987
|
i0.ɵɵelementEnd()();
|
|
977
988
|
i0.ɵɵelementStart(14, "div", 28)(15, "div", 29)(16, "h3", 30);
|
|
978
|
-
i0.ɵɵelement(17, "i",
|
|
989
|
+
i0.ɵɵelement(17, "i", 172);
|
|
979
990
|
i0.ɵɵtext(18, " Reversal Info & Notes");
|
|
980
991
|
i0.ɵɵelementEnd()();
|
|
981
|
-
i0.ɵɵelementStart(19, "div",
|
|
992
|
+
i0.ɵɵelementStart(19, "div", 165)(20, "mj-form-field", 173);
|
|
982
993
|
i0.ɵɵlistener("Navigate", function BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_45_Template_mj_form_field_Navigate_20_listener($event) { i0.ɵɵrestoreView(_r23); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.OnFormNavigate($event)); });
|
|
983
994
|
i0.ɵɵelementEnd();
|
|
984
|
-
i0.ɵɵelement(21, "mj-form-field",
|
|
995
|
+
i0.ɵɵelement(21, "mj-form-field", 174)(22, "mj-form-field", 175)(23, "mj-form-field", 176);
|
|
985
996
|
i0.ɵɵelementEnd()();
|
|
986
997
|
i0.ɵɵelementStart(24, "div", 28)(25, "div", 29)(26, "h3", 30);
|
|
987
|
-
i0.ɵɵelement(27, "i",
|
|
998
|
+
i0.ɵɵelement(27, "i", 177);
|
|
988
999
|
i0.ɵɵtext(28, " System Metadata");
|
|
989
1000
|
i0.ɵɵelementEnd()();
|
|
990
|
-
i0.ɵɵelementStart(29, "div",
|
|
991
|
-
i0.ɵɵelement(30, "mj-form-field",
|
|
1001
|
+
i0.ɵɵelementStart(29, "div", 165);
|
|
1002
|
+
i0.ɵɵelement(30, "mj-form-field", 178)(31, "mj-form-field", 179);
|
|
992
1003
|
i0.ɵɵelementEnd()()()();
|
|
993
1004
|
} if (rf & 2) {
|
|
994
1005
|
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
@@ -1019,13 +1030,13 @@ function BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_45_Template
|
|
|
1019
1030
|
} }
|
|
1020
1031
|
function BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_46_Template(rf, ctx) { if (rf & 1) {
|
|
1021
1032
|
const _r24 = i0.ɵɵgetCurrentView();
|
|
1022
|
-
i0.ɵɵelementStart(0, "div", 20)(1, "mj-collapsible-panel",
|
|
1033
|
+
i0.ɵɵelementStart(0, "div", 20)(1, "mj-collapsible-panel", 180)(2, "mj-explorer-entity-data-grid", 181);
|
|
1023
1034
|
i0.ɵɵlistener("Navigate", function BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_46_Template_mj_explorer_entity_data_grid_Navigate_2_listener($event) { i0.ɵɵrestoreView(_r24); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.OnFormNavigate($event)); })("AfterDataLoad", function BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_46_Template_mj_explorer_entity_data_grid_AfterDataLoad_2_listener($event) { i0.ɵɵrestoreView(_r24); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.SetSectionRowCount("mJBizAppsOrdersStoredValueTransactions", $event.totalRowCount)); });
|
|
1024
1035
|
i0.ɵɵelementEnd()();
|
|
1025
|
-
i0.ɵɵelementStart(3, "mj-collapsible-panel",
|
|
1036
|
+
i0.ɵɵelementStart(3, "mj-collapsible-panel", 182)(4, "mj-explorer-entity-data-grid", 181);
|
|
1026
1037
|
i0.ɵɵlistener("Navigate", function BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_46_Template_mj_explorer_entity_data_grid_Navigate_4_listener($event) { i0.ɵɵrestoreView(_r24); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.OnFormNavigate($event)); })("AfterDataLoad", function BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_46_Template_mj_explorer_entity_data_grid_AfterDataLoad_4_listener($event) { i0.ɵɵrestoreView(_r24); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.SetSectionRowCount("mJBizAppsOrdersSubscriptionEvents", $event.totalRowCount)); });
|
|
1027
1038
|
i0.ɵɵelementEnd()();
|
|
1028
|
-
i0.ɵɵelementStart(5, "mj-collapsible-panel",
|
|
1039
|
+
i0.ɵɵelementStart(5, "mj-collapsible-panel", 183)(6, "mj-explorer-entity-data-grid", 181);
|
|
1029
1040
|
i0.ɵɵlistener("Navigate", function BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_46_Template_mj_explorer_entity_data_grid_Navigate_6_listener($event) { i0.ɵɵrestoreView(_r24); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.OnFormNavigate($event)); })("AfterDataLoad", function BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_46_Template_mj_explorer_entity_data_grid_AfterDataLoad_6_listener($event) { i0.ɵɵrestoreView(_r24); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.SetSectionRowCount("mJBizAppsOrdersPaymentHeaders", $event.totalRowCount)); });
|
|
1030
1041
|
i0.ɵɵelementEnd()()();
|
|
1031
1042
|
} if (rf & 2) {
|
|
@@ -1092,7 +1103,7 @@ function BizAppsPaymentHeaderFormComponent_Conditional_0_Template(rf, ctx) { if
|
|
|
1092
1103
|
i0.ɵɵlistener("TabChange", function BizAppsPaymentHeaderFormComponent_Conditional_0_Template_mj_tab_nav_TabChange_41_listener($event) { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.SelectTab($event)); });
|
|
1093
1104
|
i0.ɵɵelementEnd()();
|
|
1094
1105
|
i0.ɵɵconditionalCreate(42, BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_42_Template, 6, 1, "div", 18);
|
|
1095
|
-
i0.ɵɵconditionalCreate(43, BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_43_Template,
|
|
1106
|
+
i0.ɵɵconditionalCreate(43, BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_43_Template, 82, 41, "div", 19);
|
|
1096
1107
|
i0.ɵɵconditionalCreate(44, BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_44_Template, 15, 5, "div", 20);
|
|
1097
1108
|
i0.ɵɵconditionalCreate(45, BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_45_Template, 32, 48, "div", 20);
|
|
1098
1109
|
i0.ɵɵconditionalCreate(46, BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_46_Template, 7, 24, "div", 20);
|
|
@@ -1149,6 +1160,27 @@ export const PAYMENT_FORM_TABS = [
|
|
|
1149
1160
|
{ key: 'details', label: 'Details & Notes', icon: 'fa-solid fa-sliders' },
|
|
1150
1161
|
{ key: 'related', label: 'Related Records', icon: 'fa-solid fa-layer-group' },
|
|
1151
1162
|
];
|
|
1163
|
+
/**
|
|
1164
|
+
* A save-result message with its repeated lines collapsed.
|
|
1165
|
+
*
|
|
1166
|
+
* `LatestResult.Message` can carry the same validation failure more than once (the failure list
|
|
1167
|
+
* plus the summary that restates it), and the capture banner then printed "Payment Type cannot be
|
|
1168
|
+
* null" twice. Same fact once is the whole fix; order is preserved.
|
|
1169
|
+
*/
|
|
1170
|
+
function uniqueErrorLines(message) {
|
|
1171
|
+
if (!message)
|
|
1172
|
+
return '';
|
|
1173
|
+
const seen = new Set();
|
|
1174
|
+
const kept = [];
|
|
1175
|
+
for (const line of message.split(/\r?\n/)) {
|
|
1176
|
+
const key = line.trim();
|
|
1177
|
+
if (!key || seen.has(key))
|
|
1178
|
+
continue;
|
|
1179
|
+
seen.add(key);
|
|
1180
|
+
kept.push(line);
|
|
1181
|
+
}
|
|
1182
|
+
return kept.join('\n');
|
|
1183
|
+
}
|
|
1152
1184
|
/**
|
|
1153
1185
|
* Custom Payment Header form component overriding the CodeGen-generated form.
|
|
1154
1186
|
*
|
|
@@ -1181,6 +1213,8 @@ let BizAppsPaymentHeaderFormComponent = class BizAppsPaymentHeaderFormComponent
|
|
|
1181
1213
|
Capturing = false;
|
|
1182
1214
|
CaptureError = null;
|
|
1183
1215
|
AmountManuallySet = false;
|
|
1216
|
+
/** True once a capture was attempted without a Payment Type — drives the field's error state. */
|
|
1217
|
+
PaymentTypeMissing = false;
|
|
1184
1218
|
lastLoadedCustomerKey = null;
|
|
1185
1219
|
get ContextTabs() {
|
|
1186
1220
|
if (!this.record?.IsSaved || !this.IsCaptured) {
|
|
@@ -1630,6 +1664,8 @@ let BizAppsPaymentHeaderFormComponent = class BizAppsPaymentHeaderFormComponent
|
|
|
1630
1664
|
if (!this.record)
|
|
1631
1665
|
return;
|
|
1632
1666
|
this.record.PaymentTypeID = paymentTypeID || '';
|
|
1667
|
+
if (paymentTypeID)
|
|
1668
|
+
this.PaymentTypeMissing = false;
|
|
1633
1669
|
if (paymentTypeID && this.record.PaymentDetailID_Object) {
|
|
1634
1670
|
this.record.PaymentDetailID_Object.PaymentTypeID = paymentTypeID;
|
|
1635
1671
|
}
|
|
@@ -2057,6 +2093,13 @@ let BizAppsPaymentHeaderFormComponent = class BizAppsPaymentHeaderFormComponent
|
|
|
2057
2093
|
if (!this.hasPayer) {
|
|
2058
2094
|
throw new Error('Please select who is paying (Bill-To Customer) before capturing.');
|
|
2059
2095
|
}
|
|
2096
|
+
if (!this.record.PaymentTypeID) {
|
|
2097
|
+
// Gate it HERE rather than letting the NOT NULL refuse it server-side: the round
|
|
2098
|
+
// trip cost a whole capture attempt and came back as a raw constraint message.
|
|
2099
|
+
this.PaymentTypeMissing = true;
|
|
2100
|
+
throw new Error('Select a Payment Type before capturing — it is required to book the payment.');
|
|
2101
|
+
}
|
|
2102
|
+
this.PaymentTypeMissing = false;
|
|
2060
2103
|
if (!this.IsAllocationBalanced) {
|
|
2061
2104
|
throw new Error(`Allocations must exactly match payment amount. Remainder: $${this.UnallocatedRemainder.toFixed(2)}`);
|
|
2062
2105
|
}
|
|
@@ -2064,7 +2107,7 @@ let BizAppsPaymentHeaderFormComponent = class BizAppsPaymentHeaderFormComponent
|
|
|
2064
2107
|
this.record.Status = 'Captured';
|
|
2065
2108
|
const saved = await this.record.Save();
|
|
2066
2109
|
if (!saved) {
|
|
2067
|
-
throw new Error(this.record.LatestResult?.Message || 'Failed to capture and book payment.');
|
|
2110
|
+
throw new Error(uniqueErrorLines(this.record.LatestResult?.Message) || 'Failed to capture and book payment.');
|
|
2068
2111
|
}
|
|
2069
2112
|
this.ActiveTab = 'accounting';
|
|
2070
2113
|
await this.loadPaymentJournalRollup();
|
|
@@ -2147,11 +2190,11 @@ let BizAppsPaymentHeaderFormComponent = class BizAppsPaymentHeaderFormComponent
|
|
|
2147
2190
|
}
|
|
2148
2191
|
}
|
|
2149
2192
|
static ɵfac = /*@__PURE__*/ (() => { let ɵBizAppsPaymentHeaderFormComponent_BaseFactory; return function BizAppsPaymentHeaderFormComponent_Factory(__ngFactoryType__) { return (ɵBizAppsPaymentHeaderFormComponent_BaseFactory || (ɵBizAppsPaymentHeaderFormComponent_BaseFactory = i0.ɵɵgetInheritedFactory(BizAppsPaymentHeaderFormComponent)))(__ngFactoryType__ || BizAppsPaymentHeaderFormComponent); }; })();
|
|
2150
|
-
static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: BizAppsPaymentHeaderFormComponent, selectors: [["bizapps-payment-header-form"]], standalone: false, features: [i0.ɵɵInheritDefinitionFeature], decls: 1, vars: 1, consts: [[3, "Record", "FormComponent"], [3, "Navigate", "DeleteRequested", "FavoriteToggled", "HistoryRequested", "ListManagementRequested", "Record", "FormComponent"], ["Slot", "before-fields", 3, "Entity", "Record", "FormComponent", "FormContext"], [1, "mjo-ph-hero"], [1, "mjo-ph-hero__top"], [1, "mjo-ph-who"], [1, "mjo-ph-avatar"], [1, "mjo-ph-title-row"], [1, "mjo-ph-title"], [1, "mjo-status-chip", "mjo-status-chip--purple"], [1, "mjo-ph-sub"], [1, "mjo-ph-hero__aside"], [1, "mjo-ph-money"], [1, "mjo-ph-kicker"], [1, "mjo-ph-amt"], [1, "mjo-ph-actions"], [1, "mjo-ph-tabs"], [3, "TabChange", "Tabs", "ActiveKey"], [1, "mjo-alert", "mjo-alert--error"], [1, "mjo-ph-workbench"], [1, "mjo-ph-tab-body"], [1, "fa-solid", "fa-rotate-left"], ["type", "button", 1, "mjo-btn", "mjo-btn--secondary", 3, "click", "disabled"], [1, "fa-solid", "fa-floppy-disk"], ["type", "button", 1, "mjo-btn", "mjo-btn--primary", 3, "click", "disabled"], [1, "fa-solid", "fa-check-double"], [1, "fa-solid", "fa-circle-exclamation"], [1, "mjo-ph-money-pane"], [1, "mjo-card"], [1, "mjo-card__header"], [1, "mjo-card__title"], [1, "fa-solid", "fa-user-tag"], [1, "mjo-card__body"], [1, "mjo-ph-fields-stack"], ["DisplayNameOverride", "Organization", "FieldName", "BillToOrganizationID", "Type", "textbox", "LinkType", "Record", 3, "Navigate", "Record", "ShowLabel", "EditMode", "FormContext"], ["DisplayNameOverride", "Person", "FieldName", "BillToPersonID", "Type", "textbox", "LinkType", "Record", 3, "Navigate", "Record", "ShowLabel", "EditMode", "FormContext"], [1, "mjo-payer-chip"], [1, "fa-solid", "fa-money-check-dollar"], [1, "mjo-field"], [1, "mjo-label"], [1, "mjo-input-money-wrap"], [1, "mjo-currency-prefix"], ["type", "number", "placeholder", "0.00", "step", "0.01", 1, "mj-input", "is-num", "mjo-input--money", 3, "ngModelChange", "ngModel", "disabled"], ["DisplayNameOverride", "Payment Date", "FieldName", "PaymentDate", "Type", "datepicker", 3, "Navigate", "Record", "ShowLabel", "EditMode", "FormContext"], [1, "mj-input", 3, "ngModel"], ["FieldName", "PaymentTypeID", "Type", "textbox", "LinkType", "Record", 3, "Record", "ShowLabel", "EditMode", "FormContext"], [1, "mjo-instrument-box"], ["DisplayNameOverride", "Receiving Co.", "FieldName", "ReceivingCompanyID", "Type", "textbox", "LinkType", "Record", 3, "Navigate", "Record", "ShowLabel", "EditMode", "FormContext"], ["DisplayNameOverride", "Processing Fee", "FieldName", "ProcessingFeeAmount", "Type", "number", 3, "Navigate", "Record", "ShowLabel", "EditMode", "FormContext"], [1, "mjo-net-calc"], [1, "mjo-net-calc__label"], [1, "mjo-net-calc__val"], [1, "mjo-ph-alloc-pane"], [1, "mjo-alloc-hero"], [1, "mjo-alloc-hero__stats"], [1, "mjo-alloc-stat"], [1, "mjo-alloc-stat__kicker"], [1, "mjo-alloc-stat__val"], [1, "mjo-alloc-stat__op"], [1, "fa-solid", "fa-minus"], [1, "fa-solid", "fa-equals"], [1, "mjo-alloc-hero__message"], [1, "mjo-alloc-toolbar"], [1, "mjo-alloc-toolbar__left"], [1, "mjo-alloc-toolbar__title"], [1, "fa-solid", "fa-receipt"], [1, "mjo-badge"], [1, "mjo-alloc-toolbar__right"], [1, "mjo-card", "mjo-card--table"], [1, "mjo-empty-state"], [1, "mjo-table-responsive"], [1, "fa-solid", "fa-circle-check", "text-success"], [1, "mj-input", 3, "ngModelChange", "ngModel"], [3, "ngValue"], [3, "value"], ["FieldName", "PaymentTypeID", "Type", "textbox", "LinkType", "Record", 3, "Navigate", "Record", "ShowLabel", "EditMode", "FormContext"], [1, "mjo-instrument-box__title"], [1, "fa-solid", "fa-money-check"], [1, "mjo-instrument-box__grid"], [1, "text-danger"], ["type", "text", "placeholder", "e.g. 10428", "autocomplete", "off", 1, "mj-input", "font-mono", 3, "ngModelChange", "ngModel", "disabled"], ["type", "date", 1, "mj-input", 3, "ngModelChange", "ngModel", "disabled"], [1, "mjo-field", "col-span-full"], ["type", "text", "placeholder", "e.g. Chase, Bank of America", 1, "mj-input", 3, "ngModelChange", "ngModel", "disabled"], [1, "fa-solid", "fa-credit-card"], [1, "mj-input", 3, "ngModelChange", "ngModel", "disabled"], ["value", ""], ["value", "Visa"], ["value", "MasterCard"], ["value", "American Express"], ["value", "Discover"], ["value", "Other"], ["type", "text", "maxlength", "4", "placeholder", "4242", 1, "mj-input", "font-mono", 3, "ngModelChange", "ngModel", "disabled"], [1, "flex", "gap-2"], ["type", "number", "min", "1", "max", "12", "placeholder", "MM", 1, "mj-input", "font-mono", "w-16", 3, "ngModelChange", "ngModel", "disabled"], ["type", "number", "min", "2025", "max", "2045", "placeholder", "YYYY", 1, "mj-input", "font-mono", "w-24", 3, "ngModelChange", "ngModel", "disabled"], ["type", "text", "placeholder", "Name on card", 1, "mj-input", 3, "ngModelChange", "ngModel", "disabled"], ["type", "text", "placeholder", "e.g. AUTH-98210", 1, "mj-input", 3, "ngModelChange", "ngModel", "disabled"], [1, "fa-solid", "fa-building-columns"], ["type", "text", "placeholder", "e.g. Wells Fargo", 1, "mj-input", 3, "ngModelChange", "ngModel", "disabled"], ["value", "Checking"], ["value", "Savings"], ["type", "text", "maxlength", "4", "placeholder", "1234", 1, "mj-input", "font-mono", 3, "ngModelChange", "ngModel", "disabled"], ["type", "text", "maxlength", "4", "placeholder", "5678", 1, "mj-input", "font-mono", 3, "ngModelChange", "ngModel", "disabled"], ["type", "text", "placeholder", "Trace #", 1, "mj-input", 3, "ngModelChange", "ngModel", "disabled"], ["type", "text", "placeholder", "Confirmation or transfer id", 1, "mj-input", 3, "ngModelChange", "ngModel", "disabled"], [1, "fa-solid", "fa-circle-info", "text-warning"], [1, "fa-solid", "fa-triangle-exclamation", "text-danger"], [1, "mjo-search-input-wrap"], [1, "fa-solid", "fa-magnifying-glass"], ["type", "text", "placeholder", "Filter orders\u2026", 1, "mjo-input", "mjo-input--sm", 3, "ngModelChange", "ngModel"], ["type", "button", 1, "mjo-btn", "mjo-btn--secondary", "mjo-btn--sm", 3, "click"], [1, "fa-solid", "fa-wand-magic-sparkles"], ["type", "button", 1, "mjo-btn", "mjo-btn--outline", "mjo-btn--sm", 3, "click"], [1, "fa-solid", "fa-eraser"], [1, "fa-solid", "fa-spinner", "fa-spin", "fa-2x", "text-muted"], [1, "fa-solid", "fa-receipt", "fa-3x", "text-muted"], [1, "mjo-table"], [1, "w-8"], [1, "text-right"], [1, "text-right", "w-36"], [1, "w-24"], [1, "mjo-order-row"], ["type", "button", "title", "Toggle line items", 1, "mjo-icon-btn", 3, "click"], [1, "fa-solid"], [1, "font-bold"], ["type", "button", 1, "mjo-link", 3, "click"], [1, "mjo-subtext"], [1, "mjo-badge", "mjo-badge--error"], [1, "mjo-company-pill"], [1, "text-right", "font-mono"], [1, "text-right", "font-mono", "font-bold"], [1, "mjo-apply-input-wrap"], [1, "mjo-apply-dollar"], ["type", "number", "step", "0.01", "min", "0", 1, "mjo-input", "mjo-input--sm", "mjo-input--num", 3, "ngModelChange", "ngModel", "disabled", "title"], [1, "mjo-subtext", "text-info"], ["type", "button", 1, "mjo-btn", "mjo-btn--outline", "mjo-btn--sm", 3, "disabled"], [1, "mjo-lines-row"], [1, "fa-solid", "fa-layer-group"], ["type", "button", 1, "mjo-btn", "mjo-btn--outline", "mjo-btn--sm", 3, "click", "disabled"], [1, "p-0"], [1, "mjo-nested-lines-pane"], [1, "mjo-nested-lines-header"], [1, "mjo-nested-table"], [1, "w-20"], ["type", "number", "step", "0.01", "min", "0", 1, "mjo-input", "mjo-input--xs", "mjo-input--num", 3, "ngModelChange", "ngModel", "disabled"], ["type", "button", 1, "mjo-btn", "mjo-btn--outline", "mjo-btn--xs"], ["type", "button", 1, "mjo-btn", "mjo-btn--outline", "mjo-btn--xs", 3, "click"], [1, "mjo-accounting-header"], [1, "fa-solid", "fa-book"], [1, "text-muted"], [1, "mjo-view-toggle"], ["type", "button", 1, "mjo-toggle-btn", 3, "click"], [1, "mjo-gl-cards-grid"], [1, "fa-solid", "fa-book-open", "fa-3x", "text-muted"], [1, "mjo-card", "mjo-card--gl"], [1, "mjo-card__body", "p-0"], [1, "mjo-table", "mjo-table--compact"], ["colspan", "2"], [1, "font-mono"], [3, "Params", "AllowLoad", "ShowToolbar"], [3, "Navigate", "Params", "AllowLoad", "ShowToolbar"], [1, "mjo-form-sections-grid"], [1, "fa-solid", "fa-gears"], [1, "mjo-card__body", "mjo-form-grid-2"], ["FieldName", "PaymentProviderID", "Type", "textbox", "LinkType", "Record", 3, "Navigate", "Record", "ShowLabel", "EditMode", "FormContext"], ["FieldName", "PaymentIntentID", "Type", "textbox", "LinkType", "Record", 3, "Navigate", "Record", "ShowLabel", "EditMode", "FormContext"], ["FieldName", "PaymentDetailID", "Type", "textbox", "LinkType", "Record", 3, "Navigate", "Record", "ShowLabel", "EditMode", "FormContext"], ["FieldName", "ProviderChargeID", "Type", "textbox", 3, "Record", "ShowLabel", "EditMode", "FormContext"], ["FieldName", "ProviderRefundID", "Type", "textbox", 3, "Record", "ShowLabel", "EditMode", "FormContext"], ["FieldName", "IdempotencyKey", "Type", "textbox", 3, "Record", "ShowLabel", "EditMode", "FormContext"], [1, "fa-solid", "fa-note-sticky"], ["FieldName", "ReversesPaymentHeaderID", "Type", "textbox", "LinkType", "Record", 3, "Navigate", "Record", "ShowLabel", "EditMode", "FormContext"], ["FieldName", "ReversalReason", "Type", "textarea", 3, "Record", "ShowLabel", "EditMode", "FormContext"], ["FieldName", "Description", "Type", "textarea", 3, "Record", "ShowLabel", "EditMode", "FormContext"], ["FieldName", "Notes", "Type", "textarea", 3, "Record", "ShowLabel", "EditMode", "FormContext"], [1, "fa-solid", "fa-clock-rotate-left"], ["FieldName", "__mj_CreatedAt", "Type", "textbox", 3, "Record", "ShowLabel", "EditMode", "FormContext"], ["FieldName", "__mj_UpdatedAt", "Type", "textbox", 3, "Record", "ShowLabel", "EditMode", "FormContext"], ["SectionKey", "mJBizAppsOrdersStoredValueTransactions", "SectionName", "Stored Value & Account Credit Transactions", "Icon", "fa fa-wallet", "Variant", "related-entity", 3, "Form", "FormContext", "BadgeCount", "DefaultExpanded"], [3, "Navigate", "AfterDataLoad", "Params", "NewRecordValues", "AllowLoad", "ShowToolbar"], ["SectionKey", "mJBizAppsOrdersSubscriptionEvents", "SectionName", "Subscription Billing Events", "Icon", "fa fa-history", "Variant", "related-entity", 3, "Form", "FormContext", "BadgeCount", "DefaultExpanded"], ["SectionKey", "mJBizAppsOrdersPaymentHeaders", "SectionName", "Linked Reversal & Refund Payment Records", "Icon", "fa fa-rotate-left", "Variant", "related-entity", 3, "Form", "FormContext", "BadgeCount", "DefaultExpanded"]], template: function BizAppsPaymentHeaderFormComponent_Template(rf, ctx) { if (rf & 1) {
|
|
2193
|
+
static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: BizAppsPaymentHeaderFormComponent, selectors: [["bizapps-payment-header-form"]], standalone: false, features: [i0.ɵɵInheritDefinitionFeature], decls: 1, vars: 1, consts: [[3, "Record", "FormComponent"], [3, "Navigate", "DeleteRequested", "FavoriteToggled", "HistoryRequested", "ListManagementRequested", "Record", "FormComponent"], ["Slot", "before-fields", 3, "Entity", "Record", "FormComponent", "FormContext"], [1, "mjo-ph-hero"], [1, "mjo-ph-hero__top"], [1, "mjo-ph-who"], [1, "mjo-ph-avatar"], [1, "mjo-ph-title-row"], [1, "mjo-ph-title"], [1, "mjo-status-chip", "mjo-status-chip--purple"], [1, "mjo-ph-sub"], [1, "mjo-ph-hero__aside"], [1, "mjo-ph-money"], [1, "mjo-ph-kicker"], [1, "mjo-ph-amt"], [1, "mjo-ph-actions"], [1, "mjo-ph-tabs"], [3, "TabChange", "Tabs", "ActiveKey"], [1, "mjo-alert", "mjo-alert--error"], [1, "mjo-ph-workbench"], [1, "mjo-ph-tab-body"], [1, "fa-solid", "fa-rotate-left"], ["type", "button", 1, "mjo-btn", "mjo-btn--secondary", 3, "click", "disabled"], [1, "fa-solid", "fa-floppy-disk"], ["type", "button", 1, "mjo-btn", "mjo-btn--primary", 3, "click", "disabled"], [1, "fa-solid", "fa-check-double"], [1, "fa-solid", "fa-circle-exclamation"], [1, "mjo-ph-money-pane"], [1, "mjo-card"], [1, "mjo-card__header"], [1, "mjo-card__title"], [1, "fa-solid", "fa-user-tag"], [1, "mjo-card__body"], [1, "mjo-ph-fields-stack"], ["DisplayNameOverride", "Organization", "FieldName", "BillToOrganizationID", "Type", "textbox", "LinkType", "Record", 3, "Navigate", "Record", "ShowLabel", "EditMode", "FormContext"], ["DisplayNameOverride", "Person", "FieldName", "BillToPersonID", "Type", "textbox", "LinkType", "Record", 3, "Navigate", "Record", "ShowLabel", "EditMode", "FormContext"], [1, "mjo-payer-chip"], [1, "fa-solid", "fa-money-check-dollar"], [1, "mjo-field"], [1, "mjo-label"], [1, "mjo-input-money-wrap"], [1, "mjo-currency-prefix"], ["type", "number", "placeholder", "0.00", "step", "0.01", 1, "mj-input", "is-num", "mjo-input--money", 3, "ngModelChange", "ngModel", "disabled"], ["DisplayNameOverride", "Payment Date", "FieldName", "PaymentDate", "Type", "datepicker", 3, "Navigate", "Record", "ShowLabel", "EditMode", "FormContext"], ["title", "Required to capture and book", 1, "mjo-required-mark"], ["FieldName", "PaymentTypeID", "Type", "textbox", "LinkType", "Record", 3, "Record", "ShowLabel", "EditMode", "FormContext"], [1, "mjo-instrument-box"], ["DisplayNameOverride", "Receiving Co.", "FieldName", "ReceivingCompanyID", "Type", "textbox", "LinkType", "Record", 3, "Navigate", "Record", "ShowLabel", "EditMode", "FormContext"], ["DisplayNameOverride", "Processing Fee", "FieldName", "ProcessingFeeAmount", "Type", "number", 3, "Navigate", "Record", "ShowLabel", "EditMode", "FormContext"], [1, "mjo-net-calc"], [1, "mjo-net-calc__label"], [1, "mjo-net-calc__val"], [1, "mjo-ph-alloc-pane"], [1, "mjo-alloc-hero"], [1, "mjo-alloc-hero__stats"], [1, "mjo-alloc-stat"], [1, "mjo-alloc-stat__kicker"], [1, "mjo-alloc-stat__val"], [1, "mjo-alloc-stat__op"], [1, "fa-solid", "fa-minus"], [1, "fa-solid", "fa-equals"], [1, "mjo-alloc-hero__message"], [1, "mjo-alloc-toolbar"], [1, "mjo-alloc-toolbar__left"], [1, "mjo-alloc-toolbar__title"], [1, "fa-solid", "fa-receipt"], [1, "mjo-badge"], [1, "mjo-alloc-toolbar__right"], [1, "mjo-card", "mjo-card--table"], [1, "mjo-empty-state"], [1, "mjo-table-responsive"], [1, "fa-solid", "fa-circle-check", "text-success"], [1, "mj-input", 3, "ngModelChange", "ngModel"], [3, "ngValue"], [3, "value"], [1, "mjo-field-hint", "mjo-field-hint--error"], ["FieldName", "PaymentTypeID", "Type", "textbox", "LinkType", "Record", 3, "Navigate", "Record", "ShowLabel", "EditMode", "FormContext"], [1, "mjo-instrument-box__title"], [1, "fa-solid", "fa-money-check"], [1, "mjo-instrument-box__grid"], [1, "text-danger"], ["type", "text", "placeholder", "e.g. 10428", "autocomplete", "off", 1, "mj-input", "font-mono", 3, "ngModelChange", "ngModel", "disabled"], ["type", "date", 1, "mj-input", 3, "ngModelChange", "ngModel", "disabled"], [1, "mjo-field", "col-span-full"], ["type", "text", "placeholder", "e.g. Chase, Bank of America", 1, "mj-input", 3, "ngModelChange", "ngModel", "disabled"], [1, "fa-solid", "fa-credit-card"], [1, "mj-input", 3, "ngModelChange", "ngModel", "disabled"], ["value", ""], ["value", "Visa"], ["value", "MasterCard"], ["value", "American Express"], ["value", "Discover"], ["value", "Other"], ["type", "text", "maxlength", "4", "placeholder", "4242", 1, "mj-input", "font-mono", 3, "ngModelChange", "ngModel", "disabled"], [1, "flex", "gap-2"], ["type", "number", "min", "1", "max", "12", "placeholder", "MM", 1, "mj-input", "font-mono", "w-16", 3, "ngModelChange", "ngModel", "disabled"], ["type", "number", "min", "2025", "max", "2045", "placeholder", "YYYY", 1, "mj-input", "font-mono", "w-24", 3, "ngModelChange", "ngModel", "disabled"], ["type", "text", "placeholder", "Name on card", 1, "mj-input", 3, "ngModelChange", "ngModel", "disabled"], ["type", "text", "placeholder", "e.g. AUTH-98210", 1, "mj-input", 3, "ngModelChange", "ngModel", "disabled"], [1, "fa-solid", "fa-building-columns"], ["type", "text", "placeholder", "e.g. Wells Fargo", 1, "mj-input", 3, "ngModelChange", "ngModel", "disabled"], ["value", "Checking"], ["value", "Savings"], ["type", "text", "maxlength", "4", "placeholder", "1234", 1, "mj-input", "font-mono", 3, "ngModelChange", "ngModel", "disabled"], ["type", "text", "maxlength", "4", "placeholder", "5678", 1, "mj-input", "font-mono", 3, "ngModelChange", "ngModel", "disabled"], ["type", "text", "placeholder", "Trace #", 1, "mj-input", 3, "ngModelChange", "ngModel", "disabled"], ["type", "text", "placeholder", "Confirmation or transfer id", 1, "mj-input", 3, "ngModelChange", "ngModel", "disabled"], [1, "fa-solid", "fa-circle-info", "text-warning"], [1, "fa-solid", "fa-triangle-exclamation", "text-danger"], [1, "mjo-search-input-wrap"], [1, "fa-solid", "fa-magnifying-glass"], ["type", "text", "placeholder", "Filter orders\u2026", 1, "mjo-input", "mjo-input--sm", 3, "ngModelChange", "ngModel"], ["type", "button", 1, "mjo-btn", "mjo-btn--secondary", "mjo-btn--sm", 3, "click"], [1, "fa-solid", "fa-wand-magic-sparkles"], ["type", "button", 1, "mjo-btn", "mjo-btn--outline", "mjo-btn--sm", 3, "click"], [1, "fa-solid", "fa-eraser"], [1, "fa-solid", "fa-spinner", "fa-spin", "fa-2x", "text-muted"], [1, "fa-solid", "fa-receipt", "fa-3x", "text-muted"], [1, "mjo-table"], [1, "w-8"], [1, "text-right"], [1, "text-right", "w-36"], [1, "w-24"], [1, "mjo-order-row"], ["type", "button", "title", "Toggle line items", 1, "mjo-icon-btn", 3, "click"], [1, "fa-solid"], [1, "font-bold"], ["type", "button", 1, "mjo-link", 3, "click"], [1, "mjo-subtext"], [1, "mjo-badge", "mjo-badge--error"], [1, "mjo-company-pill"], [1, "text-right", "font-mono"], [1, "text-right", "font-mono", "font-bold"], [1, "mjo-apply-input-wrap"], [1, "mjo-apply-dollar"], ["type", "number", "step", "0.01", "min", "0", 1, "mjo-input", "mjo-input--sm", "mjo-input--num", 3, "ngModelChange", "ngModel", "disabled", "title"], [1, "mjo-subtext", "text-info"], ["type", "button", 1, "mjo-btn", "mjo-btn--outline", "mjo-btn--sm", 3, "disabled"], [1, "mjo-lines-row"], [1, "fa-solid", "fa-layer-group"], ["type", "button", 1, "mjo-btn", "mjo-btn--outline", "mjo-btn--sm", 3, "click", "disabled"], [1, "p-0"], [1, "mjo-nested-lines-pane"], [1, "mjo-nested-lines-header"], [1, "mjo-nested-table"], [1, "w-20"], ["type", "number", "step", "0.01", "min", "0", 1, "mjo-input", "mjo-input--xs", "mjo-input--num", 3, "ngModelChange", "ngModel", "disabled"], ["type", "button", 1, "mjo-btn", "mjo-btn--outline", "mjo-btn--xs"], ["type", "button", 1, "mjo-btn", "mjo-btn--outline", "mjo-btn--xs", 3, "click"], [1, "mjo-accounting-header"], [1, "fa-solid", "fa-book"], [1, "text-muted"], [1, "mjo-view-toggle"], ["type", "button", 1, "mjo-toggle-btn", 3, "click"], [1, "mjo-gl-cards-grid"], [1, "fa-solid", "fa-book-open", "fa-3x", "text-muted"], [1, "mjo-card", "mjo-card--gl"], [1, "mjo-card__body", "p-0"], [1, "mjo-table", "mjo-table--compact"], ["colspan", "2"], [1, "font-mono"], [3, "Params", "AllowLoad", "ShowToolbar"], [3, "Navigate", "Params", "AllowLoad", "ShowToolbar"], [1, "mjo-form-sections-grid"], [1, "fa-solid", "fa-gears"], [1, "mjo-card__body", "mjo-form-grid-2"], ["FieldName", "PaymentProviderID", "Type", "textbox", "LinkType", "Record", 3, "Navigate", "Record", "ShowLabel", "EditMode", "FormContext"], ["FieldName", "PaymentIntentID", "Type", "textbox", "LinkType", "Record", 3, "Navigate", "Record", "ShowLabel", "EditMode", "FormContext"], ["FieldName", "PaymentDetailID", "Type", "textbox", "LinkType", "Record", 3, "Navigate", "Record", "ShowLabel", "EditMode", "FormContext"], ["FieldName", "ProviderChargeID", "Type", "textbox", 3, "Record", "ShowLabel", "EditMode", "FormContext"], ["FieldName", "ProviderRefundID", "Type", "textbox", 3, "Record", "ShowLabel", "EditMode", "FormContext"], ["FieldName", "IdempotencyKey", "Type", "textbox", 3, "Record", "ShowLabel", "EditMode", "FormContext"], [1, "fa-solid", "fa-note-sticky"], ["FieldName", "ReversesPaymentHeaderID", "Type", "textbox", "LinkType", "Record", 3, "Navigate", "Record", "ShowLabel", "EditMode", "FormContext"], ["FieldName", "ReversalReason", "Type", "textarea", 3, "Record", "ShowLabel", "EditMode", "FormContext"], ["FieldName", "Description", "Type", "textarea", 3, "Record", "ShowLabel", "EditMode", "FormContext"], ["FieldName", "Notes", "Type", "textarea", 3, "Record", "ShowLabel", "EditMode", "FormContext"], [1, "fa-solid", "fa-clock-rotate-left"], ["FieldName", "__mj_CreatedAt", "Type", "textbox", 3, "Record", "ShowLabel", "EditMode", "FormContext"], ["FieldName", "__mj_UpdatedAt", "Type", "textbox", 3, "Record", "ShowLabel", "EditMode", "FormContext"], ["SectionKey", "mJBizAppsOrdersStoredValueTransactions", "SectionName", "Stored Value & Account Credit Transactions", "Icon", "fa fa-wallet", "Variant", "related-entity", 3, "Form", "FormContext", "BadgeCount", "DefaultExpanded"], [3, "Navigate", "AfterDataLoad", "Params", "NewRecordValues", "AllowLoad", "ShowToolbar"], ["SectionKey", "mJBizAppsOrdersSubscriptionEvents", "SectionName", "Subscription Billing Events", "Icon", "fa fa-history", "Variant", "related-entity", 3, "Form", "FormContext", "BadgeCount", "DefaultExpanded"], ["SectionKey", "mJBizAppsOrdersPaymentHeaders", "SectionName", "Linked Reversal & Refund Payment Records", "Icon", "fa fa-rotate-left", "Variant", "related-entity", 3, "Form", "FormContext", "BadgeCount", "DefaultExpanded"]], template: function BizAppsPaymentHeaderFormComponent_Template(rf, ctx) { if (rf & 1) {
|
|
2151
2194
|
i0.ɵɵconditionalCreate(0, BizAppsPaymentHeaderFormComponent_Conditional_0_Template, 47, 34, "mj-record-form-container", 0);
|
|
2152
2195
|
} if (rf & 2) {
|
|
2153
2196
|
i0.ɵɵconditional(ctx.record ? 0 : -1);
|
|
2154
|
-
} }, dependencies: [i1.NgSelectOption, i1.ɵNgSelectMultipleOption, i1.DefaultValueAccessor, i1.NumberValueAccessor, i1.SelectControlValueAccessor, i1.NgControlStatus, i1.MaxLengthValidator, i1.MinValidator, i1.MaxValidator, i1.NgModel, i2.MjFormFieldComponent, i2.MjCollapsiblePanelComponent, i2.MjRecordFormContainerComponent, i2.ExplorerEntityDataGridComponent, i2.FormPanelSlotComponent, i3.MJTabNavComponent], styles: ["\n\n\n\n\n\n[_nghost-%COMP%] {\n display: block;\n width: 100%;\n}\n\n\n\n.mjo-ph-hero[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface-card, #ffffff);\n border: 1px solid var(--mj-border-default, #e2e8f0);\n border-radius: var(--mj-radius-lg, 12px);\n padding: var(--mj-space-4, 16px) var(--mj-space-5, 20px);\n box-shadow: 0 1px 3px rgba(0, 0, 0, 0.04);\n margin-bottom: var(--mj-space-4, 16px);\n}\n\n.mjo-ph-hero__top[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: var(--mj-space-4, 16px);\n flex-wrap: wrap;\n}\n\n.mjo-ph-who[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: var(--mj-space-4, 16px);\n}\n\n.mjo-ph-avatar[_ngcontent-%COMP%] {\n width: 48px;\n height: 48px;\n border-radius: var(--mj-radius-md, 8px);\n background: linear-gradient(135deg, #16a34a 0%, #15803d 100%);\n color: #ffffff;\n display: flex;\n align-items: center;\n justify-content: center;\n font-size: 20px;\n box-shadow: 0 4px 10px rgba(22, 163, 74, 0.25);\n flex-shrink: 0;\n}\n\n.mjo-ph-avatar.is-reversal[_ngcontent-%COMP%] {\n background: linear-gradient(135deg, #9333ea 0%, #7e22ce 100%);\n box-shadow: 0 4px 10px rgba(147, 51, 234, 0.25);\n}\n\n.mjo-ph-title-row[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: var(--mj-space-3, 10px);\n flex-wrap: wrap;\n}\n\n.mjo-ph-title[_ngcontent-%COMP%] {\n margin: 0;\n font-size: var(--mj-text-lg, 18px);\n font-weight: var(--mj-font-bold, 700);\n color: var(--mj-text-primary, #0f172a);\n letter-spacing: -0.01em;\n}\n\n.mjo-ph-sub[_ngcontent-%COMP%] {\n font-size: var(--mj-text-xs, 12px);\n color: var(--mj-text-muted, #64748b);\n margin-top: 2px;\n}\n\n.mjo-ph-hero__aside[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: var(--mj-space-5, 20px);\n flex-wrap: wrap;\n}\n\n.mjo-ph-money[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: var(--mj-space-4, 16px);\n padding: var(--mj-space-2, 6px) var(--mj-space-4, 14px);\n background: var(--mj-bg-surface-sunken, rgba(0, 0, 0, 0.03));\n border: 1px solid var(--mj-border-default, #e2e8f0);\n border-radius: var(--mj-radius-md, 8px);\n}\n\n.mjo-ph-money[_ngcontent-%COMP%] > div[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n align-items: flex-end;\n}\n\n.mjo-ph-kicker[_ngcontent-%COMP%] {\n font-size: var(--mj-text-xs, 11px);\n font-weight: var(--mj-font-semibold, 600);\n text-transform: uppercase;\n letter-spacing: 0.04em;\n color: var(--mj-text-muted, #64748b);\n}\n\n.mjo-ph-amt[_ngcontent-%COMP%] {\n font-size: var(--mj-text-sm, 13px);\n font-weight: var(--mj-font-bold, 700);\n font-family: var(--mj-font-family-mono, monospace);\n color: var(--mj-text-primary, #0f172a);\n}\n\n.mjo-ph-amt.is-balanced[_ngcontent-%COMP%] {\n color: #16a34a;\n}\n\n.mjo-ph-amt.is-unbalanced[_ngcontent-%COMP%] {\n color: #d97706;\n}\n\n.mjo-ph-actions[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: var(--mj-space-2, 8px);\n}\n\n\n\n.mjo-ph-tabs[_ngcontent-%COMP%] {\n margin-bottom: var(--mj-space-4, 16px);\n}\n\n\n\n.mjo-ph-workbench[_ngcontent-%COMP%] {\n display: flex;\n gap: var(--mj-space-4, 16px);\n align-items: flex-start;\n width: 100%;\n}\n\n.mjo-ph-money-pane[_ngcontent-%COMP%] {\n width: 380px;\n flex-shrink: 0;\n display: flex;\n flex-direction: column;\n gap: var(--mj-space-4, 16px);\n --mj-forms-field-label-width: 105px;\n --mj-forms-field-gap: 8px;\n}\n\n.mjo-ph-fields-stack[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 4px;\n}\n\n.mjo-ph-fields-stack[_ngcontent-%COMP%] mj-form-field[_ngcontent-%COMP%] {\n --mj-forms-field-label-width: 105px;\n --mj-forms-field-gap: 8px;\n}\n\n.mjo-ph-alloc-pane[_ngcontent-%COMP%] {\n flex: 1;\n min-width: 0;\n display: flex;\n flex-direction: column;\n gap: var(--mj-space-4, 16px);\n}\n\n\n\n.mjo-card[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface-card, #ffffff);\n border: 1px solid var(--mj-border-default, #e2e8f0);\n border-radius: var(--mj-radius-lg, 10px);\n box-shadow: var(--mj-shadow-xs, 0 1px 2px rgba(0, 0, 0, 0.04));\n overflow: hidden;\n}\n\n.mjo-card__header[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: var(--mj-space-3, 12px) var(--mj-space-4, 16px);\n background: var(--mj-bg-surface-sunken, rgba(0, 0, 0, 0.02));\n border-bottom: 1px solid var(--mj-border-default, #e2e8f0);\n}\n\n.mjo-card__title[_ngcontent-%COMP%] {\n font-size: var(--mj-text-sm, 13px);\n font-weight: var(--mj-font-bold, 700);\n color: var(--mj-text-primary, #0f172a);\n display: flex;\n align-items: center;\n gap: var(--mj-space-2, 8px);\n}\n\n.mjo-card__body[_ngcontent-%COMP%] {\n padding: var(--mj-space-4, 16px);\n display: flex;\n flex-direction: column;\n gap: var(--mj-space-3, 12px);\n}\n\n.mjo-card__body.p-0[_ngcontent-%COMP%] {\n padding: 0;\n}\n\n.mjo-field[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 4px;\n}\n\n.mjo-label[_ngcontent-%COMP%] {\n font-size: var(--mj-text-xs, 12px);\n font-weight: var(--mj-font-semibold, 600);\n color: var(--mj-text-secondary, #94a3b8);\n}\n\n.mjo-input-money-wrap[_ngcontent-%COMP%] {\n position: relative;\n display: flex;\n align-items: center;\n width: 100%;\n}\n\n.mjo-currency-prefix[_ngcontent-%COMP%] {\n position: absolute;\n left: 14px;\n font-size: var(--mj-text-lg, 16px);\n font-weight: var(--mj-font-bold, 700);\n color: var(--mj-text-muted, #94a3b8);\n pointer-events: none;\n z-index: 2;\n}\n\n.mjo-input--money[_ngcontent-%COMP%] {\n padding-left: 30px !important;\n font-size: var(--mj-text-lg, 16px) !important;\n font-weight: var(--mj-font-bold, 700) !important;\n font-family: var(--mj-font-family-mono, monospace) !important;\n height: 42px !important;\n width: 100% !important;\n background: var(--mj-bg-surface-card, transparent) !important;\n color: var(--mj-text-primary, inherit) !important;\n border: 1px solid var(--mj-border-default, #334155) !important;\n border-radius: var(--mj-radius-md, 6px) !important;\n}\n\n.mjo-input--money[_ngcontent-%COMP%]:focus {\n border-color: var(--mj-brand-primary, #0076b6) !important;\n box-shadow: 0 0 0 2px rgba(0, 118, 182, 0.25) !important;\n}\n\n.mjo-net-calc[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 10px 14px;\n background: var(--mj-bg-surface-sunken, rgba(0, 0, 0, 0.2));\n border: 1px solid var(--mj-border-default, rgba(255, 255, 255, 0.08));\n border-radius: var(--mj-radius-md, 6px);\n margin-top: 4px;\n}\n\n.mjo-net-calc__label[_ngcontent-%COMP%] {\n font-size: var(--mj-text-xs, 12px);\n font-weight: var(--mj-font-semibold, 600);\n color: var(--mj-text-secondary, #94a3b8);\n}\n\n.mjo-net-calc__val[_ngcontent-%COMP%] {\n font-size: var(--mj-text-base, 15px);\n font-weight: var(--mj-font-bold, 700);\n font-family: var(--mj-font-family-mono, monospace);\n color: var(--mj-text-primary, #f8fafc);\n}\n\n.mjo-payer-chip[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: var(--mj-space-2, 8px);\n padding: 6px 10px;\n background: var(--mj-bg-surface-sunken, rgba(0, 0, 0, 0.03));\n border: 1px solid var(--mj-border-default, #e2e8f0);\n border-radius: var(--mj-radius-md, 6px);\n font-size: var(--mj-text-xs, 12px);\n font-weight: var(--mj-font-semibold, 600);\n}\n\n\n\n.mjo-card--books[_ngcontent-%COMP%] {\n border-color: rgba(0, 118, 182, 0.25);\n}\n\n\n\n\n\n.mjo-alloc-hero[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface-card, #ffffff);\n border: 1px solid var(--mj-border-default, #e2e8f0);\n border-radius: var(--mj-radius-lg, 12px);\n padding: var(--mj-space-3, 12px) var(--mj-space-4, 16px);\n display: flex;\n flex-direction: column;\n gap: var(--mj-space-2, 8px);\n}\n\n.mjo-alloc-hero.is-balanced[_ngcontent-%COMP%] {\n border-color: rgba(22, 163, 74, 0.35);\n background: rgba(22, 163, 74, 0.03);\n}\n\n.mjo-alloc-hero.is-warning[_ngcontent-%COMP%] {\n border-color: rgba(217, 119, 6, 0.35);\n background: rgba(217, 119, 6, 0.03);\n}\n\n.mjo-alloc-hero.is-error[_ngcontent-%COMP%] {\n border-color: rgba(220, 38, 38, 0.35);\n background: rgba(220, 38, 38, 0.03);\n}\n\n.mjo-alloc-hero__stats[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: var(--mj-space-4, 16px);\n flex-wrap: wrap;\n}\n\n.mjo-alloc-stat[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n}\n\n.mjo-alloc-stat__kicker[_ngcontent-%COMP%] {\n font-size: 11px;\n font-weight: var(--mj-font-semibold, 600);\n text-transform: uppercase;\n letter-spacing: 0.04em;\n color: var(--mj-text-muted, #64748b);\n}\n\n.mjo-alloc-stat__val[_ngcontent-%COMP%] {\n font-size: var(--mj-text-base, 15px);\n font-weight: var(--mj-font-bold, 700);\n font-family: var(--mj-font-family-mono, monospace);\n color: var(--mj-text-primary, #0f172a);\n}\n\n.mjo-alloc-stat__op[_ngcontent-%COMP%] {\n font-size: 14px;\n color: var(--mj-text-muted, #94a3b8);\n}\n\n.mjo-alloc-hero__message[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: var(--mj-space-2, 8px);\n font-size: var(--mj-text-xs, 12px);\n font-weight: var(--mj-font-semibold, 600);\n padding-top: 6px;\n border-top: 1px solid var(--mj-border-default, #e2e8f0);\n}\n\n\n\n.mjo-alloc-toolbar[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: var(--mj-space-3, 12px);\n flex-wrap: wrap;\n}\n\n.mjo-alloc-toolbar__left[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: var(--mj-space-2, 8px);\n}\n\n.mjo-alloc-toolbar__title[_ngcontent-%COMP%] {\n margin: 0;\n font-size: var(--mj-text-sm, 14px);\n font-weight: var(--mj-font-bold, 700);\n color: var(--mj-text-primary, #0f172a);\n display: flex;\n align-items: center;\n gap: var(--mj-space-2, 8px);\n}\n\n.mjo-alloc-toolbar__right[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: var(--mj-space-2, 8px);\n}\n\n.mjo-search-input-wrap[_ngcontent-%COMP%] {\n position: relative;\n display: flex;\n align-items: center;\n}\n\n.mjo-search-input-wrap[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n position: absolute;\n left: 8px;\n font-size: 11px;\n color: var(--mj-text-muted, #94a3b8);\n}\n\n.mjo-search-input-wrap[_ngcontent-%COMP%] input[_ngcontent-%COMP%] {\n padding-left: 24px;\n width: 160px;\n}\n\n\n\n.mjo-table-responsive[_ngcontent-%COMP%] {\n overflow-x: auto;\n width: 100%;\n}\n\n.mjo-table[_ngcontent-%COMP%] {\n width: 100%;\n border-collapse: collapse;\n font-size: var(--mj-text-xs, 12px);\n}\n\n.mjo-table[_ngcontent-%COMP%] th[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface-header, rgba(0, 0, 0, 0.02));\n color: var(--mj-text-muted, #64748b);\n font-weight: var(--mj-font-semibold, 600);\n text-transform: uppercase;\n letter-spacing: 0.04em;\n font-size: 11px;\n padding: 8px 12px;\n border-bottom: 1px solid var(--mj-border-default, #e2e8f0);\n text-align: left;\n}\n\n.mjo-table[_ngcontent-%COMP%] td[_ngcontent-%COMP%] {\n padding: 8px 12px;\n border-bottom: 1px solid var(--mj-border-default, #e2e8f0);\n vertical-align: middle;\n color: var(--mj-text-primary, #0f172a);\n}\n\n.mjo-order-row[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-hover, rgba(0, 0, 0, 0.02));\n}\n\n.mjo-order-row.is-expanded[_ngcontent-%COMP%] {\n background: rgba(0, 118, 182, 0.02);\n}\n\n.mjo-apply-input-wrap[_ngcontent-%COMP%] {\n position: relative;\n display: inline-flex;\n align-items: center;\n width: 100%;\n max-width: 110px;\n}\n\n.mjo-apply-dollar[_ngcontent-%COMP%] {\n position: absolute;\n left: 8px;\n font-size: 11px;\n font-weight: var(--mj-font-bold, 700);\n color: var(--mj-text-muted, #64748b);\n pointer-events: none;\n}\n\n.mjo-apply-input-wrap[_ngcontent-%COMP%] input[_ngcontent-%COMP%] {\n padding-left: 18px;\n}\n\n.mjo-nested-lines-pane[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface-sunken, rgba(0, 0, 0, 0.02));\n border-top: 1px solid var(--mj-border-default, #e2e8f0);\n border-bottom: 2px solid var(--mj-border-default, #cbd5e1);\n padding: var(--mj-space-3, 10px) var(--mj-space-4, 16px);\n}\n\n.mjo-nested-lines-header[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: var(--mj-space-2, 8px);\n font-size: 11px;\n font-weight: var(--mj-font-bold, 700);\n text-transform: uppercase;\n letter-spacing: 0.04em;\n color: var(--mj-text-secondary, #475569);\n margin-bottom: var(--mj-space-2, 6px);\n}\n\n.mjo-nested-table[_ngcontent-%COMP%] {\n width: 100%;\n border-collapse: collapse;\n font-size: var(--mj-text-xs, 12px);\n background: var(--mj-bg-surface-card, #ffffff);\n border: 1px solid var(--mj-border-default, #e2e8f0);\n border-radius: var(--mj-radius-md, 6px);\n overflow: hidden;\n}\n\n.mjo-nested-table[_ngcontent-%COMP%] th[_ngcontent-%COMP%] {\n background: rgba(0, 0, 0, 0.02);\n font-size: 10.5px;\n font-weight: var(--mj-font-semibold, 600);\n padding: 6px 10px;\n border-bottom: 1px solid var(--mj-border-default, #e2e8f0);\n}\n\n.mjo-nested-table[_ngcontent-%COMP%] td[_ngcontent-%COMP%] {\n padding: 6px 10px;\n border-bottom: 1px solid var(--mj-border-default, #e2e8f0);\n}\n\n\n\n.mjo-ph-tab-body[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: var(--mj-space-4, 16px);\n}\n\n.mjo-accounting-header[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: var(--mj-space-4, 16px);\n flex-wrap: wrap;\n}\n\n.mjo-accounting-header[_ngcontent-%COMP%] h2[_ngcontent-%COMP%] {\n margin: 0;\n font-size: var(--mj-text-base, 15px);\n font-weight: var(--mj-font-bold, 700);\n color: var(--mj-text-primary, #0f172a);\n display: flex;\n align-items: center;\n gap: var(--mj-space-2, 8px);\n}\n\n.mjo-accounting-header[_ngcontent-%COMP%] p[_ngcontent-%COMP%] {\n margin: 2px 0 0 0;\n font-size: var(--mj-text-xs, 12px);\n}\n\n.mjo-view-toggle[_ngcontent-%COMP%] {\n display: flex;\n background: var(--mj-bg-surface-sunken, rgba(0, 0, 0, 0.04));\n border: 1px solid var(--mj-border-default, #e2e8f0);\n border-radius: var(--mj-radius-md, 6px);\n padding: 2px;\n}\n\n.mjo-toggle-btn[_ngcontent-%COMP%] {\n border: none;\n background: transparent;\n padding: 4px 10px;\n font-size: var(--mj-text-xs, 12px);\n font-weight: var(--mj-font-semibold, 600);\n color: var(--mj-text-secondary, #475569);\n border-radius: var(--mj-radius-sm, 4px);\n cursor: pointer;\n transition: all 0.15s ease;\n}\n\n.mjo-toggle-btn.is-active[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface-card, #ffffff);\n color: var(--mj-text-primary, #0f172a);\n box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05);\n}\n\n.mjo-gl-cards-grid[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(360px, 1fr));\n gap: var(--mj-space-4, 16px);\n}\n\n.mjo-table--compact[_ngcontent-%COMP%] th[_ngcontent-%COMP%], .mjo-table--compact[_ngcontent-%COMP%] td[_ngcontent-%COMP%] {\n padding: 6px 10px;\n}\n\n.mjo-table[_ngcontent-%COMP%] tfoot[_ngcontent-%COMP%] th[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface-header, rgba(0, 0, 0, 0.02));\n border-top: 2px solid var(--mj-border-default, #cbd5e1);\n font-size: var(--mj-text-xs, 12px);\n font-weight: var(--mj-font-bold, 700);\n}\n\n.is-intercompany[_ngcontent-%COMP%] {\n background: rgba(0, 118, 182, 0.04);\n}\n\n.mjo-ic-tag[_ngcontent-%COMP%] {\n display: inline-block;\n font-size: 10px;\n font-weight: var(--mj-font-bold, 700);\n text-transform: uppercase;\n color: #0284c7;\n background: rgba(2, 132, 199, 0.12);\n padding: 1px 5px;\n border-radius: 3px;\n margin-left: 6px;\n}\n\n\n\n.mjo-btn[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n gap: var(--mj-space-2, 6px);\n height: 34px;\n padding: 0 14px;\n font-size: var(--mj-text-xs, 12px);\n font-weight: var(--mj-font-semibold, 600);\n border-radius: var(--mj-radius-md, 6px);\n cursor: pointer;\n border: 1px solid transparent;\n transition: all 0.15s ease;\n}\n\n.mjo-btn--primary[_ngcontent-%COMP%] {\n background: var(--mj-brand-primary, #0076b6);\n color: #ffffff;\n}\n\n.mjo-btn--primary[_ngcontent-%COMP%]:hover:not(:disabled) {\n background: #006094;\n}\n\n.mjo-btn--secondary[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface-sunken, rgba(0, 0, 0, 0.05));\n border-color: var(--mj-border-default, #cbd5e1);\n color: var(--mj-text-primary, #0f172a);\n}\n\n.mjo-btn--secondary[_ngcontent-%COMP%]:hover:not(:disabled) {\n background: rgba(0, 0, 0, 0.08);\n}\n\n.mjo-btn--outline[_ngcontent-%COMP%] {\n background: transparent;\n border-color: var(--mj-border-default, #cbd5e1);\n color: var(--mj-text-secondary, #475569);\n}\n\n.mjo-btn--outline[_ngcontent-%COMP%]:hover:not(:disabled) {\n border-color: var(--mj-brand-primary, #0076b6);\n color: var(--mj-brand-primary, #0076b6);\n}\n\n.mjo-btn--sm[_ngcontent-%COMP%] {\n height: 30px;\n padding: 0 10px;\n font-size: 11.5px;\n}\n\n.mjo-btn--xs[_ngcontent-%COMP%] {\n height: 24px;\n padding: 0 8px;\n font-size: 11px;\n}\n\n.mjo-btn[_ngcontent-%COMP%]:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n}\n\n.mjo-icon-btn[_ngcontent-%COMP%] {\n border: none;\n background: transparent;\n color: var(--mj-text-muted, #64748b);\n cursor: pointer;\n padding: 4px;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n}\n\n.mjo-icon-btn[_ngcontent-%COMP%]:hover {\n color: var(--mj-text-primary, #0f172a);\n}\n\n.mjo-link[_ngcontent-%COMP%] {\n border: none;\n background: transparent;\n color: var(--mj-brand-primary, #0076b6);\n cursor: pointer;\n padding: 0;\n font-size: inherit;\n text-align: left;\n}\n\n.mjo-link[_ngcontent-%COMP%]:hover {\n text-decoration: underline;\n}\n\n.mjo-status-chip[_ngcontent-%COMP%] {\n font-size: 11px;\n font-weight: var(--mj-font-bold, 700);\n text-transform: uppercase;\n letter-spacing: 0.04em;\n padding: 2px 8px;\n border-radius: 4px;\n display: inline-flex;\n align-items: center;\n gap: 4px;\n}\n\n.mjo-status-chip--draft[_ngcontent-%COMP%] {\n background: rgba(100, 116, 139, 0.12);\n color: #475569;\n}\n\n.mjo-status-chip--active[_ngcontent-%COMP%] {\n background: rgba(22, 163, 74, 0.12);\n color: #16a34a;\n}\n\n.mjo-status-chip--purple[_ngcontent-%COMP%] {\n background: rgba(147, 51, 234, 0.12);\n color: #9333ea;\n}\n\n.mjo-status-chip--error[_ngcontent-%COMP%] {\n background: rgba(220, 38, 38, 0.12);\n color: #dc2626;\n}\n\n.mjo-status-chip--warning[_ngcontent-%COMP%] {\n background: rgba(217, 119, 6, 0.12);\n color: #d97706;\n}\n\n.mjo-company-pill[_ngcontent-%COMP%] {\n font-size: 11px;\n font-weight: var(--mj-font-semibold, 600);\n color: var(--mj-text-secondary, #475569);\n background: var(--mj-bg-surface-sunken, rgba(0, 0, 0, 0.04));\n padding: 2px 6px;\n border-radius: 4px;\n}\n\n.mjo-sku-chip[_ngcontent-%COMP%] {\n font-family: var(--mj-font-family-mono, monospace);\n font-size: 10px;\n color: var(--mj-text-muted, #64748b);\n background: rgba(0, 0, 0, 0.04);\n padding: 1px 4px;\n border-radius: 3px;\n margin-left: 4px;\n}\n\n.mjo-badge[_ngcontent-%COMP%] {\n font-size: 11px;\n font-weight: var(--mj-font-semibold, 600);\n padding: 2px 6px;\n border-radius: 12px;\n background: var(--mj-bg-surface-sunken, rgba(0, 0, 0, 0.05));\n color: var(--mj-text-secondary, #475569);\n}\n\n.mjo-badge--error[_ngcontent-%COMP%] {\n background: rgba(220, 38, 38, 0.12);\n color: #dc2626;\n}\n\n.mjo-badge--success[_ngcontent-%COMP%] {\n background: rgba(22, 163, 74, 0.12);\n color: #16a34a;\n}\n\n.mjo-empty-state[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n padding: var(--mj-space-6, 32px) var(--mj-space-4, 16px);\n text-align: center;\n gap: var(--mj-space-2, 8px);\n}\n\n.mjo-empty-state[_ngcontent-%COMP%] h3[_ngcontent-%COMP%] {\n margin: 0;\n font-size: var(--mj-text-sm, 14px);\n font-weight: var(--mj-font-bold, 700);\n color: var(--mj-text-primary, #0f172a);\n}\n\n.mjo-empty-state[_ngcontent-%COMP%] p[_ngcontent-%COMP%] {\n margin: 0;\n font-size: var(--mj-text-xs, 12px);\n color: var(--mj-text-muted, #64748b);\n max-width: 380px;\n}\n\n.mjo-alert[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: var(--mj-space-3, 10px);\n padding: 10px 14px;\n border-radius: var(--mj-radius-md, 8px);\n font-size: var(--mj-text-xs, 12px);\n margin-bottom: var(--mj-space-3, 12px);\n}\n\n.mjo-alert--error[_ngcontent-%COMP%] {\n background: rgba(220, 38, 38, 0.08);\n border: 1px solid rgba(220, 38, 38, 0.25);\n color: #dc2626;\n}\n\n.mjo-subtext[_ngcontent-%COMP%] {\n font-size: 11px;\n color: var(--mj-text-muted, #64748b);\n}\n\n.text-right[_ngcontent-%COMP%] { text-align: right; }\n.font-mono[_ngcontent-%COMP%] { font-family: var(--mj-font-family-mono, monospace); }\n.font-bold[_ngcontent-%COMP%] { font-weight: var(--mj-font-bold, 700); }\n.text-muted[_ngcontent-%COMP%] { color: var(--mj-text-muted, #64748b); }\n.text-success[_ngcontent-%COMP%] { color: #16a34a; }\n.text-warning[_ngcontent-%COMP%] { color: #d97706; }\n.text-danger[_ngcontent-%COMP%] { color: #dc2626; }\n.w-8[_ngcontent-%COMP%] { width: 32px; }\n.w-16[_ngcontent-%COMP%] { width: 64px; }\n.w-20[_ngcontent-%COMP%] { width: 80px; }\n.w-24[_ngcontent-%COMP%] { width: 96px; }\n.w-36[_ngcontent-%COMP%] { width: 144px; }\n.flex[_ngcontent-%COMP%] { display: flex; }\n.gap-2[_ngcontent-%COMP%] { gap: 8px; }\n.col-span-full[_ngcontent-%COMP%] { grid-column: 1 / -1; }\n.text-info[_ngcontent-%COMP%] { color: #0284c7; }\n\n\n\n.mjo-instrument-box[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface-sunken, rgba(0, 0, 0, 0.02));\n border: 1px solid var(--mj-border-default, #e2e8f0);\n border-radius: var(--mj-radius-md, 8px);\n padding: var(--mj-space-3, 12px);\n margin: var(--mj-space-2, 6px) 0;\n display: flex;\n flex-direction: column;\n gap: var(--mj-space-3, 10px);\n}\n\n.mjo-instrument-box__title[_ngcontent-%COMP%] {\n font-size: var(--mj-text-xs, 12px);\n font-weight: var(--mj-font-semibold, 600);\n color: var(--mj-text-primary, #0f172a);\n display: flex;\n align-items: center;\n gap: 6px;\n padding-bottom: 6px;\n border-bottom: 1px dashed var(--mj-border-default, #e2e8f0);\n}\n\n.mjo-instrument-box__grid[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: 1fr 1fr;\n gap: var(--mj-space-2, 8px);\n}\n\n.mjo-instrument-box[_ngcontent-%COMP%] .mjo-field[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 4px;\n}\n\n.mjo-instrument-box[_ngcontent-%COMP%] .mjo-label[_ngcontent-%COMP%] {\n font-size: 11px;\n font-weight: var(--mj-font-medium, 500);\n color: var(--mj-text-secondary, #475569);\n}\n\n.mjo-apply-input-wrap.is-derived[_ngcontent-%COMP%] input[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface-sunken, rgba(0, 0, 0, 0.03));\n color: var(--mj-text-secondary, #475569);\n cursor: not-allowed;\n border-style: dashed;\n}"] });
|
|
2197
|
+
} }, dependencies: [i1.NgSelectOption, i1.ɵNgSelectMultipleOption, i1.DefaultValueAccessor, i1.NumberValueAccessor, i1.SelectControlValueAccessor, i1.NgControlStatus, i1.MaxLengthValidator, i1.MinValidator, i1.MaxValidator, i1.NgModel, i2.MjFormFieldComponent, i2.MjCollapsiblePanelComponent, i2.MjRecordFormContainerComponent, i2.ExplorerEntityDataGridComponent, i2.FormPanelSlotComponent, i3.MJTabNavComponent], styles: ["\n\n\n\n\n\n[_nghost-%COMP%] {\n display: block;\n width: 100%;\n}\n\n\n\n.mjo-ph-hero[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface-card, #ffffff);\n border: 1px solid var(--mj-border-default, #e2e8f0);\n border-radius: var(--mj-radius-lg, 12px);\n padding: var(--mj-space-4, 16px) var(--mj-space-5, 20px);\n box-shadow: 0 1px 3px rgba(0, 0, 0, 0.04);\n margin-bottom: var(--mj-space-4, 16px);\n}\n\n.mjo-ph-hero__top[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: var(--mj-space-4, 16px);\n flex-wrap: wrap;\n}\n\n.mjo-ph-who[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: var(--mj-space-4, 16px);\n}\n\n.mjo-ph-avatar[_ngcontent-%COMP%] {\n width: 48px;\n height: 48px;\n border-radius: var(--mj-radius-md, 8px);\n background: linear-gradient(135deg, #16a34a 0%, #15803d 100%);\n color: #ffffff;\n display: flex;\n align-items: center;\n justify-content: center;\n font-size: 20px;\n box-shadow: 0 4px 10px rgba(22, 163, 74, 0.25);\n flex-shrink: 0;\n}\n\n.mjo-ph-avatar.is-reversal[_ngcontent-%COMP%] {\n background: linear-gradient(135deg, #9333ea 0%, #7e22ce 100%);\n box-shadow: 0 4px 10px rgba(147, 51, 234, 0.25);\n}\n\n.mjo-ph-title-row[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: var(--mj-space-3, 10px);\n flex-wrap: wrap;\n}\n\n.mjo-ph-title[_ngcontent-%COMP%] {\n margin: 0;\n font-size: var(--mj-text-lg, 18px);\n font-weight: var(--mj-font-bold, 700);\n color: var(--mj-text-primary, #0f172a);\n letter-spacing: -0.01em;\n}\n\n.mjo-ph-sub[_ngcontent-%COMP%] {\n font-size: var(--mj-text-xs, 12px);\n color: var(--mj-text-muted, #64748b);\n margin-top: 2px;\n}\n\n.mjo-ph-hero__aside[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: var(--mj-space-5, 20px);\n flex-wrap: wrap;\n}\n\n.mjo-ph-money[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: var(--mj-space-4, 16px);\n padding: var(--mj-space-2, 6px) var(--mj-space-4, 14px);\n background: var(--mj-bg-surface-sunken, rgba(0, 0, 0, 0.03));\n border: 1px solid var(--mj-border-default, #e2e8f0);\n border-radius: var(--mj-radius-md, 8px);\n}\n\n.mjo-ph-money[_ngcontent-%COMP%] > div[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n align-items: flex-end;\n}\n\n.mjo-ph-kicker[_ngcontent-%COMP%] {\n font-size: var(--mj-text-xs, 11px);\n font-weight: var(--mj-font-semibold, 600);\n text-transform: uppercase;\n letter-spacing: 0.04em;\n color: var(--mj-text-muted, #64748b);\n}\n\n.mjo-ph-amt[_ngcontent-%COMP%] {\n font-size: var(--mj-text-sm, 13px);\n font-weight: var(--mj-font-bold, 700);\n font-family: var(--mj-font-family-mono, monospace);\n color: var(--mj-text-primary, #0f172a);\n}\n\n.mjo-ph-amt.is-balanced[_ngcontent-%COMP%] {\n color: #16a34a;\n}\n\n.mjo-ph-amt.is-unbalanced[_ngcontent-%COMP%] {\n color: #d97706;\n}\n\n.mjo-ph-actions[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: var(--mj-space-2, 8px);\n}\n\n\n\n.mjo-ph-tabs[_ngcontent-%COMP%] {\n margin-bottom: var(--mj-space-4, 16px);\n}\n\n\n\n.mjo-ph-workbench[_ngcontent-%COMP%] {\n display: flex;\n gap: var(--mj-space-4, 16px);\n align-items: flex-start;\n width: 100%;\n}\n\n.mjo-ph-money-pane[_ngcontent-%COMP%] {\n width: 380px;\n flex-shrink: 0;\n display: flex;\n flex-direction: column;\n gap: var(--mj-space-4, 16px);\n --mj-forms-field-label-width: 105px;\n --mj-forms-field-gap: 8px;\n}\n\n.mjo-ph-fields-stack[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 4px;\n}\n\n.mjo-ph-fields-stack[_ngcontent-%COMP%] mj-form-field[_ngcontent-%COMP%] {\n --mj-forms-field-label-width: 105px;\n --mj-forms-field-gap: 8px;\n}\n\n.mjo-ph-alloc-pane[_ngcontent-%COMP%] {\n flex: 1;\n min-width: 0;\n display: flex;\n flex-direction: column;\n gap: var(--mj-space-4, 16px);\n}\n\n\n\n.mjo-card[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface-card, #ffffff);\n border: 1px solid var(--mj-border-default, #e2e8f0);\n border-radius: var(--mj-radius-lg, 10px);\n box-shadow: var(--mj-shadow-xs, 0 1px 2px rgba(0, 0, 0, 0.04));\n overflow: hidden;\n}\n\n.mjo-card__header[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: var(--mj-space-3, 12px) var(--mj-space-4, 16px);\n background: var(--mj-bg-surface-sunken, rgba(0, 0, 0, 0.02));\n border-bottom: 1px solid var(--mj-border-default, #e2e8f0);\n}\n\n.mjo-card__title[_ngcontent-%COMP%] {\n font-size: var(--mj-text-sm, 13px);\n font-weight: var(--mj-font-bold, 700);\n color: var(--mj-text-primary, #0f172a);\n display: flex;\n align-items: center;\n gap: var(--mj-space-2, 8px);\n}\n\n.mjo-card__body[_ngcontent-%COMP%] {\n padding: var(--mj-space-4, 16px);\n display: flex;\n flex-direction: column;\n gap: var(--mj-space-3, 12px);\n}\n\n.mjo-card__body.p-0[_ngcontent-%COMP%] {\n padding: 0;\n}\n\n.mjo-field[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 4px;\n}\n\n.mjo-label[_ngcontent-%COMP%] {\n font-size: var(--mj-text-xs, 12px);\n font-weight: var(--mj-font-semibold, 600);\n color: var(--mj-text-secondary, #94a3b8);\n}\n\n.mjo-input-money-wrap[_ngcontent-%COMP%] {\n position: relative;\n display: flex;\n align-items: center;\n width: 100%;\n}\n\n.mjo-currency-prefix[_ngcontent-%COMP%] {\n position: absolute;\n left: 14px;\n font-size: var(--mj-text-lg, 16px);\n font-weight: var(--mj-font-bold, 700);\n color: var(--mj-text-muted, #94a3b8);\n pointer-events: none;\n z-index: 2;\n}\n\n.mjo-input--money[_ngcontent-%COMP%] {\n padding-left: 30px !important;\n font-size: var(--mj-text-lg, 16px) !important;\n font-weight: var(--mj-font-bold, 700) !important;\n font-family: var(--mj-font-family-mono, monospace) !important;\n height: 42px !important;\n width: 100% !important;\n background: var(--mj-bg-surface-card, transparent) !important;\n color: var(--mj-text-primary, inherit) !important;\n border: 1px solid var(--mj-border-default, #334155) !important;\n border-radius: var(--mj-radius-md, 6px) !important;\n}\n\n.mjo-input--money[_ngcontent-%COMP%]:focus {\n border-color: var(--mj-brand-primary, #0076b6) !important;\n box-shadow: 0 0 0 2px rgba(0, 118, 182, 0.25) !important;\n}\n\n.mjo-net-calc[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 10px 14px;\n background: var(--mj-bg-surface-sunken, rgba(0, 0, 0, 0.2));\n border: 1px solid var(--mj-border-default, rgba(255, 255, 255, 0.08));\n border-radius: var(--mj-radius-md, 6px);\n margin-top: 4px;\n}\n\n.mjo-net-calc__label[_ngcontent-%COMP%] {\n font-size: var(--mj-text-xs, 12px);\n font-weight: var(--mj-font-semibold, 600);\n color: var(--mj-text-secondary, #94a3b8);\n}\n\n.mjo-net-calc__val[_ngcontent-%COMP%] {\n font-size: var(--mj-text-base, 15px);\n font-weight: var(--mj-font-bold, 700);\n font-family: var(--mj-font-family-mono, monospace);\n color: var(--mj-text-primary, #f8fafc);\n}\n\n.mjo-payer-chip[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: var(--mj-space-2, 8px);\n padding: 6px 10px;\n background: var(--mj-bg-surface-sunken, rgba(0, 0, 0, 0.03));\n border: 1px solid var(--mj-border-default, #e2e8f0);\n border-radius: var(--mj-radius-md, 6px);\n font-size: var(--mj-text-xs, 12px);\n font-weight: var(--mj-font-semibold, 600);\n}\n\n\n\n.mjo-card--books[_ngcontent-%COMP%] {\n border-color: rgba(0, 118, 182, 0.25);\n}\n\n\n\n\n\n.mjo-alloc-hero[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface-card, #ffffff);\n border: 1px solid var(--mj-border-default, #e2e8f0);\n border-radius: var(--mj-radius-lg, 12px);\n padding: var(--mj-space-3, 12px) var(--mj-space-4, 16px);\n display: flex;\n flex-direction: column;\n gap: var(--mj-space-2, 8px);\n}\n\n.mjo-alloc-hero.is-balanced[_ngcontent-%COMP%] {\n border-color: rgba(22, 163, 74, 0.35);\n background: rgba(22, 163, 74, 0.03);\n}\n\n.mjo-alloc-hero.is-warning[_ngcontent-%COMP%] {\n border-color: rgba(217, 119, 6, 0.35);\n background: rgba(217, 119, 6, 0.03);\n}\n\n.mjo-alloc-hero.is-error[_ngcontent-%COMP%] {\n border-color: rgba(220, 38, 38, 0.35);\n background: rgba(220, 38, 38, 0.03);\n}\n\n.mjo-alloc-hero__stats[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: var(--mj-space-4, 16px);\n flex-wrap: wrap;\n}\n\n.mjo-alloc-stat[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n}\n\n.mjo-alloc-stat__kicker[_ngcontent-%COMP%] {\n font-size: 11px;\n font-weight: var(--mj-font-semibold, 600);\n text-transform: uppercase;\n letter-spacing: 0.04em;\n color: var(--mj-text-muted, #64748b);\n}\n\n.mjo-alloc-stat__val[_ngcontent-%COMP%] {\n font-size: var(--mj-text-base, 15px);\n font-weight: var(--mj-font-bold, 700);\n font-family: var(--mj-font-family-mono, monospace);\n color: var(--mj-text-primary, #0f172a);\n}\n\n.mjo-alloc-stat__op[_ngcontent-%COMP%] {\n font-size: 14px;\n color: var(--mj-text-muted, #94a3b8);\n}\n\n.mjo-alloc-hero__message[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: var(--mj-space-2, 8px);\n font-size: var(--mj-text-xs, 12px);\n font-weight: var(--mj-font-semibold, 600);\n padding-top: 6px;\n border-top: 1px solid var(--mj-border-default, #e2e8f0);\n}\n\n\n\n.mjo-alloc-toolbar[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: var(--mj-space-3, 12px);\n flex-wrap: wrap;\n}\n\n.mjo-alloc-toolbar__left[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: var(--mj-space-2, 8px);\n}\n\n.mjo-alloc-toolbar__title[_ngcontent-%COMP%] {\n margin: 0;\n font-size: var(--mj-text-sm, 14px);\n font-weight: var(--mj-font-bold, 700);\n color: var(--mj-text-primary, #0f172a);\n display: flex;\n align-items: center;\n gap: var(--mj-space-2, 8px);\n}\n\n.mjo-alloc-toolbar__right[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: var(--mj-space-2, 8px);\n}\n\n.mjo-search-input-wrap[_ngcontent-%COMP%] {\n position: relative;\n display: flex;\n align-items: center;\n}\n\n.mjo-search-input-wrap[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n position: absolute;\n left: 8px;\n font-size: 11px;\n color: var(--mj-text-muted, #94a3b8);\n}\n\n.mjo-search-input-wrap[_ngcontent-%COMP%] input[_ngcontent-%COMP%] {\n padding-left: 24px;\n width: 160px;\n}\n\n\n\n.mjo-table-responsive[_ngcontent-%COMP%] {\n overflow-x: auto;\n width: 100%;\n}\n\n\n\n\n.mjo-required-mark[_ngcontent-%COMP%] {\n color: var(--mj-status-error, #dc2626);\n font-weight: var(--mj-font-bold, 700);\n}\n\n.mjo-input--invalid[_ngcontent-%COMP%] {\n border-color: var(--mj-status-error, #dc2626) !important;\n box-shadow: 0 0 0 2px rgba(220, 38, 38, 0.12);\n}\n\n.mjo-field-hint--error[_ngcontent-%COMP%] {\n margin-top: 4px;\n font-size: var(--mj-text-xs, 12px);\n color: var(--mj-status-error, #dc2626);\n}\n\n.mjo-table[_ngcontent-%COMP%] {\n width: 100%;\n border-collapse: collapse;\n font-size: var(--mj-text-xs, 12px);\n}\n\n.mjo-table[_ngcontent-%COMP%] th[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface-header, rgba(0, 0, 0, 0.02));\n color: var(--mj-text-muted, #64748b);\n font-weight: var(--mj-font-semibold, 600);\n text-transform: uppercase;\n letter-spacing: 0.04em;\n font-size: 11px;\n padding: 8px 12px;\n border-bottom: 1px solid var(--mj-border-default, #e2e8f0);\n text-align: left;\n}\n\n.mjo-table[_ngcontent-%COMP%] td[_ngcontent-%COMP%] {\n padding: 8px 12px;\n border-bottom: 1px solid var(--mj-border-default, #e2e8f0);\n vertical-align: middle;\n color: var(--mj-text-primary, #0f172a);\n}\n\n\n\n\n.mjo-table[_ngcontent-%COMP%] th[_ngcontent-%COMP%], \n.mjo-table[_ngcontent-%COMP%] .mjo-btn[_ngcontent-%COMP%], \n.mjo-table[_ngcontent-%COMP%] .font-mono[_ngcontent-%COMP%] {\n white-space: nowrap;\n}\n\n.mjo-order-row[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-hover, rgba(0, 0, 0, 0.02));\n}\n\n.mjo-order-row.is-expanded[_ngcontent-%COMP%] {\n background: rgba(0, 118, 182, 0.02);\n}\n\n.mjo-apply-input-wrap[_ngcontent-%COMP%] {\n position: relative;\n display: inline-flex;\n align-items: center;\n width: 100%;\n max-width: 110px;\n}\n\n.mjo-apply-dollar[_ngcontent-%COMP%] {\n position: absolute;\n left: 8px;\n font-size: 11px;\n font-weight: var(--mj-font-bold, 700);\n color: var(--mj-text-muted, #64748b);\n pointer-events: none;\n}\n\n.mjo-apply-input-wrap[_ngcontent-%COMP%] input[_ngcontent-%COMP%] {\n padding-left: 18px;\n}\n\n.mjo-nested-lines-pane[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface-sunken, rgba(0, 0, 0, 0.02));\n border-top: 1px solid var(--mj-border-default, #e2e8f0);\n border-bottom: 2px solid var(--mj-border-default, #cbd5e1);\n padding: var(--mj-space-3, 10px) var(--mj-space-4, 16px);\n}\n\n.mjo-nested-lines-header[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: var(--mj-space-2, 8px);\n font-size: 11px;\n font-weight: var(--mj-font-bold, 700);\n text-transform: uppercase;\n letter-spacing: 0.04em;\n color: var(--mj-text-secondary, #475569);\n margin-bottom: var(--mj-space-2, 6px);\n}\n\n.mjo-nested-table[_ngcontent-%COMP%] {\n width: 100%;\n border-collapse: collapse;\n font-size: var(--mj-text-xs, 12px);\n background: var(--mj-bg-surface-card, #ffffff);\n border: 1px solid var(--mj-border-default, #e2e8f0);\n border-radius: var(--mj-radius-md, 6px);\n overflow: hidden;\n}\n\n.mjo-nested-table[_ngcontent-%COMP%] th[_ngcontent-%COMP%] {\n background: rgba(0, 0, 0, 0.02);\n font-size: 10.5px;\n font-weight: var(--mj-font-semibold, 600);\n padding: 6px 10px;\n border-bottom: 1px solid var(--mj-border-default, #e2e8f0);\n}\n\n.mjo-nested-table[_ngcontent-%COMP%] td[_ngcontent-%COMP%] {\n padding: 6px 10px;\n border-bottom: 1px solid var(--mj-border-default, #e2e8f0);\n}\n\n\n\n.mjo-ph-tab-body[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: var(--mj-space-4, 16px);\n}\n\n.mjo-accounting-header[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: var(--mj-space-4, 16px);\n flex-wrap: wrap;\n}\n\n.mjo-accounting-header[_ngcontent-%COMP%] h2[_ngcontent-%COMP%] {\n margin: 0;\n font-size: var(--mj-text-base, 15px);\n font-weight: var(--mj-font-bold, 700);\n color: var(--mj-text-primary, #0f172a);\n display: flex;\n align-items: center;\n gap: var(--mj-space-2, 8px);\n}\n\n.mjo-accounting-header[_ngcontent-%COMP%] p[_ngcontent-%COMP%] {\n margin: 2px 0 0 0;\n font-size: var(--mj-text-xs, 12px);\n}\n\n.mjo-view-toggle[_ngcontent-%COMP%] {\n display: flex;\n background: var(--mj-bg-surface-sunken, rgba(0, 0, 0, 0.04));\n border: 1px solid var(--mj-border-default, #e2e8f0);\n border-radius: var(--mj-radius-md, 6px);\n padding: 2px;\n}\n\n.mjo-toggle-btn[_ngcontent-%COMP%] {\n border: none;\n background: transparent;\n padding: 4px 10px;\n font-size: var(--mj-text-xs, 12px);\n font-weight: var(--mj-font-semibold, 600);\n color: var(--mj-text-secondary, #475569);\n border-radius: var(--mj-radius-sm, 4px);\n cursor: pointer;\n transition: all 0.15s ease;\n}\n\n.mjo-toggle-btn.is-active[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface-card, #ffffff);\n color: var(--mj-text-primary, #0f172a);\n box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05);\n}\n\n.mjo-gl-cards-grid[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(360px, 1fr));\n gap: var(--mj-space-4, 16px);\n}\n\n.mjo-table--compact[_ngcontent-%COMP%] th[_ngcontent-%COMP%], .mjo-table--compact[_ngcontent-%COMP%] td[_ngcontent-%COMP%] {\n padding: 6px 10px;\n}\n\n.mjo-table[_ngcontent-%COMP%] tfoot[_ngcontent-%COMP%] th[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface-header, rgba(0, 0, 0, 0.02));\n border-top: 2px solid var(--mj-border-default, #cbd5e1);\n font-size: var(--mj-text-xs, 12px);\n font-weight: var(--mj-font-bold, 700);\n}\n\n.is-intercompany[_ngcontent-%COMP%] {\n background: rgba(0, 118, 182, 0.04);\n}\n\n.mjo-ic-tag[_ngcontent-%COMP%] {\n display: inline-block;\n font-size: 10px;\n font-weight: var(--mj-font-bold, 700);\n text-transform: uppercase;\n color: #0284c7;\n background: rgba(2, 132, 199, 0.12);\n padding: 1px 5px;\n border-radius: 3px;\n margin-left: 6px;\n}\n\n\n\n.mjo-btn[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n gap: var(--mj-space-2, 6px);\n height: 34px;\n padding: 0 14px;\n font-size: var(--mj-text-xs, 12px);\n font-weight: var(--mj-font-semibold, 600);\n border-radius: var(--mj-radius-md, 6px);\n cursor: pointer;\n border: 1px solid transparent;\n transition: all 0.15s ease;\n}\n\n.mjo-btn--primary[_ngcontent-%COMP%] {\n background: var(--mj-brand-primary, #0076b6);\n color: #ffffff;\n}\n\n.mjo-btn--primary[_ngcontent-%COMP%]:hover:not(:disabled) {\n background: #006094;\n}\n\n.mjo-btn--secondary[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface-sunken, rgba(0, 0, 0, 0.05));\n border-color: var(--mj-border-default, #cbd5e1);\n color: var(--mj-text-primary, #0f172a);\n}\n\n.mjo-btn--secondary[_ngcontent-%COMP%]:hover:not(:disabled) {\n background: rgba(0, 0, 0, 0.08);\n}\n\n.mjo-btn--outline[_ngcontent-%COMP%] {\n background: transparent;\n border-color: var(--mj-border-default, #cbd5e1);\n color: var(--mj-text-secondary, #475569);\n}\n\n.mjo-btn--outline[_ngcontent-%COMP%]:hover:not(:disabled) {\n border-color: var(--mj-brand-primary, #0076b6);\n color: var(--mj-brand-primary, #0076b6);\n}\n\n.mjo-btn--sm[_ngcontent-%COMP%] {\n height: 30px;\n padding: 0 10px;\n font-size: 11.5px;\n}\n\n.mjo-btn--xs[_ngcontent-%COMP%] {\n height: 24px;\n padding: 0 8px;\n font-size: 11px;\n}\n\n.mjo-btn[_ngcontent-%COMP%]:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n}\n\n.mjo-icon-btn[_ngcontent-%COMP%] {\n border: none;\n background: transparent;\n color: var(--mj-text-muted, #64748b);\n cursor: pointer;\n padding: 4px;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n}\n\n.mjo-icon-btn[_ngcontent-%COMP%]:hover {\n color: var(--mj-text-primary, #0f172a);\n}\n\n.mjo-link[_ngcontent-%COMP%] {\n border: none;\n background: transparent;\n color: var(--mj-brand-primary, #0076b6);\n cursor: pointer;\n padding: 0;\n font-size: inherit;\n text-align: left;\n}\n\n.mjo-link[_ngcontent-%COMP%]:hover {\n text-decoration: underline;\n}\n\n.mjo-status-chip[_ngcontent-%COMP%] {\n font-size: 11px;\n font-weight: var(--mj-font-bold, 700);\n text-transform: uppercase;\n letter-spacing: 0.04em;\n padding: 2px 8px;\n border-radius: 4px;\n display: inline-flex;\n align-items: center;\n gap: 4px;\n}\n\n.mjo-status-chip--draft[_ngcontent-%COMP%] {\n background: rgba(100, 116, 139, 0.12);\n color: #475569;\n}\n\n.mjo-status-chip--active[_ngcontent-%COMP%] {\n background: rgba(22, 163, 74, 0.12);\n color: #16a34a;\n}\n\n.mjo-status-chip--purple[_ngcontent-%COMP%] {\n background: rgba(147, 51, 234, 0.12);\n color: #9333ea;\n}\n\n.mjo-status-chip--error[_ngcontent-%COMP%] {\n background: rgba(220, 38, 38, 0.12);\n color: #dc2626;\n}\n\n.mjo-status-chip--warning[_ngcontent-%COMP%] {\n background: rgba(217, 119, 6, 0.12);\n color: #d97706;\n}\n\n.mjo-company-pill[_ngcontent-%COMP%] {\n font-size: 11px;\n font-weight: var(--mj-font-semibold, 600);\n color: var(--mj-text-secondary, #475569);\n background: var(--mj-bg-surface-sunken, rgba(0, 0, 0, 0.04));\n padding: 2px 6px;\n border-radius: 4px;\n}\n\n.mjo-sku-chip[_ngcontent-%COMP%] {\n font-family: var(--mj-font-family-mono, monospace);\n font-size: 10px;\n color: var(--mj-text-muted, #64748b);\n background: rgba(0, 0, 0, 0.04);\n padding: 1px 4px;\n border-radius: 3px;\n margin-left: 4px;\n}\n\n.mjo-badge[_ngcontent-%COMP%] {\n font-size: 11px;\n font-weight: var(--mj-font-semibold, 600);\n padding: 2px 6px;\n border-radius: 12px;\n background: var(--mj-bg-surface-sunken, rgba(0, 0, 0, 0.05));\n color: var(--mj-text-secondary, #475569);\n}\n\n.mjo-badge--error[_ngcontent-%COMP%] {\n background: rgba(220, 38, 38, 0.12);\n color: #dc2626;\n}\n\n.mjo-badge--success[_ngcontent-%COMP%] {\n background: rgba(22, 163, 74, 0.12);\n color: #16a34a;\n}\n\n.mjo-empty-state[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n padding: var(--mj-space-6, 32px) var(--mj-space-4, 16px);\n text-align: center;\n gap: var(--mj-space-2, 8px);\n}\n\n.mjo-empty-state[_ngcontent-%COMP%] h3[_ngcontent-%COMP%] {\n margin: 0;\n font-size: var(--mj-text-sm, 14px);\n font-weight: var(--mj-font-bold, 700);\n color: var(--mj-text-primary, #0f172a);\n}\n\n.mjo-empty-state[_ngcontent-%COMP%] p[_ngcontent-%COMP%] {\n margin: 0;\n font-size: var(--mj-text-xs, 12px);\n color: var(--mj-text-muted, #64748b);\n max-width: 380px;\n}\n\n.mjo-alert[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: var(--mj-space-3, 10px);\n padding: 10px 14px;\n border-radius: var(--mj-radius-md, 8px);\n font-size: var(--mj-text-xs, 12px);\n margin-bottom: var(--mj-space-3, 12px);\n}\n\n.mjo-alert--error[_ngcontent-%COMP%] {\n background: rgba(220, 38, 38, 0.08);\n border: 1px solid rgba(220, 38, 38, 0.25);\n color: #dc2626;\n}\n\n.mjo-subtext[_ngcontent-%COMP%] {\n font-size: 11px;\n color: var(--mj-text-muted, #64748b);\n}\n\n.text-right[_ngcontent-%COMP%] { text-align: right; }\n.font-mono[_ngcontent-%COMP%] { font-family: var(--mj-font-family-mono, monospace); }\n.font-bold[_ngcontent-%COMP%] { font-weight: var(--mj-font-bold, 700); }\n.text-muted[_ngcontent-%COMP%] { color: var(--mj-text-muted, #64748b); }\n.text-success[_ngcontent-%COMP%] { color: #16a34a; }\n.text-warning[_ngcontent-%COMP%] { color: #d97706; }\n.text-danger[_ngcontent-%COMP%] { color: #dc2626; }\n.w-8[_ngcontent-%COMP%] { width: 32px; }\n.w-16[_ngcontent-%COMP%] { width: 64px; }\n.w-20[_ngcontent-%COMP%] { width: 80px; }\n.w-24[_ngcontent-%COMP%] { width: 96px; }\n.w-36[_ngcontent-%COMP%] { width: 144px; }\n.flex[_ngcontent-%COMP%] { display: flex; }\n.gap-2[_ngcontent-%COMP%] { gap: 8px; }\n.col-span-full[_ngcontent-%COMP%] { grid-column: 1 / -1; }\n.text-info[_ngcontent-%COMP%] { color: #0284c7; }\n\n\n\n.mjo-instrument-box[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface-sunken, rgba(0, 0, 0, 0.02));\n border: 1px solid var(--mj-border-default, #e2e8f0);\n border-radius: var(--mj-radius-md, 8px);\n padding: var(--mj-space-3, 12px);\n margin: var(--mj-space-2, 6px) 0;\n display: flex;\n flex-direction: column;\n gap: var(--mj-space-3, 10px);\n}\n\n.mjo-instrument-box__title[_ngcontent-%COMP%] {\n font-size: var(--mj-text-xs, 12px);\n font-weight: var(--mj-font-semibold, 600);\n color: var(--mj-text-primary, #0f172a);\n display: flex;\n align-items: center;\n gap: 6px;\n padding-bottom: 6px;\n border-bottom: 1px dashed var(--mj-border-default, #e2e8f0);\n}\n\n.mjo-instrument-box__grid[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: 1fr 1fr;\n gap: var(--mj-space-2, 8px);\n}\n\n.mjo-instrument-box[_ngcontent-%COMP%] .mjo-field[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 4px;\n}\n\n.mjo-instrument-box[_ngcontent-%COMP%] .mjo-label[_ngcontent-%COMP%] {\n font-size: 11px;\n font-weight: var(--mj-font-medium, 500);\n color: var(--mj-text-secondary, #475569);\n}\n\n.mjo-apply-input-wrap.is-derived[_ngcontent-%COMP%] input[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface-sunken, rgba(0, 0, 0, 0.03));\n color: var(--mj-text-secondary, #475569);\n cursor: not-allowed;\n border-style: dashed;\n}"] });
|
|
2155
2198
|
};
|
|
2156
2199
|
BizAppsPaymentHeaderFormComponent = __decorate([
|
|
2157
2200
|
RegisterClass(BaseFormComponent, 'MJ_BizApps_Orders: Payment Headers', 2)
|
|
@@ -2159,9 +2202,9 @@ BizAppsPaymentHeaderFormComponent = __decorate([
|
|
|
2159
2202
|
export { BizAppsPaymentHeaderFormComponent };
|
|
2160
2203
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(BizAppsPaymentHeaderFormComponent, [{
|
|
2161
2204
|
type: Component,
|
|
2162
|
-
args: [{ standalone: false, selector: 'bizapps-payment-header-form', template: "@if (record) {\n<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 HERO IDENTITY HEADER CARD & SUMMARY METRIC STRIP\n ================================================================ -->\n <div class=\"mjo-ph-hero\">\n <div class=\"mjo-ph-hero__top\">\n <div class=\"mjo-ph-who\">\n <div class=\"mjo-ph-avatar\" [class.is-reversal]=\"IsReversal\">\n <i [class]=\"PaymentAvatarIcon\"></i>\n </div>\n <div>\n <div class=\"mjo-ph-title-row\">\n <h1 class=\"mjo-ph-title\">\n {{ record.PaymentNumber || 'New payment' }} \u00B7 {{ FormattedGrossAmount }}\n </h1>\n <span [class]=\"StatusBadgeClass\">{{ record.Status || 'Draft' }}</span>\n @if (IsReversal) {\n <span class=\"mjo-status-chip mjo-status-chip--purple\">\n <i class=\"fa-solid fa-rotate-left\"></i> Reversal\n </span>\n }\n </div>\n <div class=\"mjo-ph-sub\">{{ HeaderSubtitle }}</div>\n </div>\n </div>\n\n <div class=\"mjo-ph-hero__aside\">\n <div class=\"mjo-ph-money\">\n <div>\n <span class=\"mjo-ph-kicker\">Gross</span>\n <span class=\"mjo-ph-amt\">{{ FormattedGrossAmount }}</span>\n </div>\n <div>\n <span class=\"mjo-ph-kicker\">Fee</span>\n <span class=\"mjo-ph-amt\">{{ FormattedFee }}</span>\n </div>\n <div>\n <span class=\"mjo-ph-kicker\">Net</span>\n <span class=\"mjo-ph-amt\">{{ FormattedNetAmount }}</span>\n </div>\n <div>\n <span class=\"mjo-ph-kicker\">Allocations</span>\n <span class=\"mjo-ph-amt\" [class.is-balanced]=\"IsAllocationBalanced\" [class.is-unbalanced]=\"!IsAllocationBalanced && TotalAllocated > 0\">\n @if (IsCaptured) {\n {{ GetSectionRowCount('mJBizAppsOrdersPaymentLines') || 0 }} Settled\n } @else {\n ${{ TotalAllocated.toFixed(2) }}\n }\n </span>\n </div>\n </div>\n\n @if (!IsCaptured) {\n <div class=\"mjo-ph-actions\">\n <button type=\"button\" class=\"mjo-btn mjo-btn--secondary\" (click)=\"SaveAsDraft()\" [disabled]=\"Saving || Capturing\">\n <i class=\"fa-solid fa-floppy-disk\"></i> {{ Saving ? 'Saving\u2026' : 'Save draft' }}\n </button>\n <button type=\"button\" class=\"mjo-btn mjo-btn--primary\" (click)=\"CapturePayment()\" [disabled]=\"Capturing || Saving || !IsAllocationBalanced || !record.Amount || !hasPayer\">\n <i class=\"fa-solid fa-check-double\"></i> {{ Capturing ? 'Capturing\u2026' : 'Capture & Book' }}\n </button>\n </div>\n }\n </div>\n </div>\n </div>\n\n <!-- TAB NAVIGATION STRIP -->\n <div class=\"mjo-ph-tabs\">\n <mj-tab-nav [Tabs]=\"ContextTabs\" [ActiveKey]=\"ActiveTab ?? ''\" (TabChange)=\"SelectTab($event)\"></mj-tab-nav>\n </div>\n\n @if (CaptureError) {\n <div class=\"mjo-alert mjo-alert--error\">\n <i class=\"fa-solid fa-circle-exclamation\"></i>\n <div>\n <strong>Failed to capture payment:</strong> {{ CaptureError }}\n </div>\n </div>\n }\n\n <!-- ================================================================\n TAB 1: PAYMENT & ALLOCATION WORKBENCH\n ================================================================ -->\n @if (ActiveTab === 'payment') {\n <div class=\"mjo-ph-workbench\">\n\n <!-- LEFT COLUMN: THE MONEY & PAYER (380px) -->\n <aside class=\"mjo-ph-money-pane\">\n\n <!-- 1. Payer Card -->\n <div class=\"mjo-card\">\n <div class=\"mjo-card__header\">\n <div class=\"mjo-card__title\">\n <i class=\"fa-solid fa-user-tag\"></i> Who is paying?\n </div>\n </div>\n <div class=\"mjo-card__body\">\n <div class=\"mjo-ph-fields-stack\">\n <mj-form-field\n [Record]=\"record\"\n [ShowLabel]=\"true\"\n DisplayNameOverride=\"Organization\"\n FieldName=\"BillToOrganizationID\"\n Type=\"textbox\"\n LinkType=\"Record\"\n [EditMode]=\"ComposeMode\"\n [FormContext]=\"formContext\"\n (Navigate)=\"OnFormNavigate($event); OnPayerSelectionChanged()\">\n </mj-form-field>\n <mj-form-field\n [Record]=\"record\"\n [ShowLabel]=\"true\"\n DisplayNameOverride=\"Person\"\n FieldName=\"BillToPersonID\"\n Type=\"textbox\"\n LinkType=\"Record\"\n [EditMode]=\"ComposeMode\"\n [FormContext]=\"formContext\"\n (Navigate)=\"OnFormNavigate($event); OnPayerSelectionChanged()\">\n </mj-form-field>\n </div>\n @if (hasPayer) {\n <div class=\"mjo-payer-chip\">\n <i class=\"fa-solid fa-circle-check text-success\"></i>\n <span>{{ PayerDisplayName }}</span>\n @if (OpenOrders.length > 0) {\n <span class=\"mjo-badge\">{{ OpenOrders.length }} unpaid orders</span>\n }\n </div>\n }\n </div>\n </div>\n\n <!-- 2. Payment Details Card -->\n <div class=\"mjo-card\">\n <div class=\"mjo-card__header\">\n <div class=\"mjo-card__title\">\n <i class=\"fa-solid fa-money-check-dollar\"></i> Payment details\n </div>\n </div>\n <div class=\"mjo-card__body\">\n <div class=\"mjo-field\">\n <label class=\"mjo-label\">Amount received ($)</label>\n <div class=\"mjo-input-money-wrap\">\n <span class=\"mjo-currency-prefix\">$</span>\n <input\n type=\"number\"\n class=\"mj-input is-num mjo-input--money\"\n [ngModel]=\"record.Amount\"\n (ngModelChange)=\"OnAmountChanged($event)\"\n [disabled]=\"!ComposeMode\"\n placeholder=\"0.00\"\n step=\"0.01\"\n />\n </div>\n </div>\n\n <div class=\"mjo-ph-fields-stack\">\n <mj-form-field\n [Record]=\"record\"\n [ShowLabel]=\"true\"\n DisplayNameOverride=\"Payment Date\"\n FieldName=\"PaymentDate\"\n Type=\"datepicker\"\n [EditMode]=\"ComposeMode\"\n [FormContext]=\"formContext\"\n (Navigate)=\"OnFormNavigate($event)\">\n </mj-form-field>\n\n <div class=\"mjo-field\">\n <label class=\"mjo-label\">Payment Type</label>\n @if (ComposeMode && PaymentTypes.length > 0) {\n <select class=\"mj-input\" [ngModel]=\"record.PaymentTypeID\" (ngModelChange)=\"OnPaymentTypeSelected($event)\">\n <option [ngValue]=\"null\">Select payment type\u2026</option>\n @for (pt of PaymentTypes; track pt.ID) {\n <option [value]=\"pt.ID\">{{ pt.Name }}</option>\n }\n </select>\n } @else {\n <mj-form-field\n [Record]=\"record\"\n [ShowLabel]=\"false\"\n FieldName=\"PaymentTypeID\"\n Type=\"textbox\"\n LinkType=\"Record\"\n [EditMode]=\"ComposeMode\"\n [FormContext]=\"formContext\"\n (Navigate)=\"OnFormNavigate($event)\">\n </mj-form-field>\n }\n </div>\n\n <!-- TENDER-SPECIFIC INSTRUMENT CAPTURE (PaymentDetail) -->\n @if (PaymentTypeCode === 'check' || (SelectedPaymentType?.RequiresReference && !RequiresInstrument)) {\n <div class=\"mjo-instrument-box\">\n <div class=\"mjo-instrument-box__title\">\n <i class=\"fa-solid fa-money-check\"></i> Check details\n </div>\n <div class=\"mjo-instrument-box__grid\">\n <div class=\"mjo-field\">\n <label class=\"mjo-label\">Check \u2116 <span class=\"text-danger\">*</span></label>\n <input type=\"text\" class=\"mj-input font-mono\" [(ngModel)]=\"ReferenceNumber\" [disabled]=\"!ComposeMode\" placeholder=\"e.g. 10428\" autocomplete=\"off\" />\n </div>\n <div class=\"mjo-field\">\n <label class=\"mjo-label\">Check Date</label>\n <input type=\"date\" class=\"mj-input\" [(ngModel)]=\"InstrumentDateInput\" [disabled]=\"!ComposeMode\" />\n </div>\n <div class=\"mjo-field col-span-full\">\n <label class=\"mjo-label\">Bank Name</label>\n <input type=\"text\" class=\"mj-input\" [(ngModel)]=\"BankName\" [disabled]=\"!ComposeMode\" placeholder=\"e.g. Chase, Bank of America\" />\n </div>\n </div>\n </div>\n } @else if (PaymentTypeCode === 'card' || RequiresInstrument) {\n <div class=\"mjo-instrument-box\">\n <div class=\"mjo-instrument-box__title\">\n <i class=\"fa-solid fa-credit-card\"></i> Card instrument details\n </div>\n <div class=\"mjo-instrument-box__grid\">\n <div class=\"mjo-field\">\n <label class=\"mjo-label\">Card Brand</label>\n <select class=\"mj-input\" [(ngModel)]=\"CardBrand\" [disabled]=\"!ComposeMode\">\n <option value=\"\">Select Brand</option>\n <option value=\"Visa\">Visa</option>\n <option value=\"MasterCard\">MasterCard</option>\n <option value=\"American Express\">American Express</option>\n <option value=\"Discover\">Discover</option>\n <option value=\"Other\">Other</option>\n </select>\n </div>\n <div class=\"mjo-field\">\n <label class=\"mjo-label\">Last 4 Digits</label>\n <input type=\"text\" class=\"mj-input font-mono\" maxlength=\"4\" [(ngModel)]=\"CardLast4\" [disabled]=\"!ComposeMode\" placeholder=\"4242\" />\n </div>\n <div class=\"mjo-field\">\n <label class=\"mjo-label\">Expiry (MM / YYYY)</label>\n <div class=\"flex gap-2\">\n <input type=\"number\" min=\"1\" max=\"12\" class=\"mj-input font-mono w-16\" [(ngModel)]=\"CardExpMonth\" [disabled]=\"!ComposeMode\" placeholder=\"MM\" />\n <input type=\"number\" min=\"2025\" max=\"2045\" class=\"mj-input font-mono w-24\" [(ngModel)]=\"CardExpYear\" [disabled]=\"!ComposeMode\" placeholder=\"YYYY\" />\n </div>\n </div>\n <div class=\"mjo-field\">\n <label class=\"mjo-label\">Cardholder Name</label>\n <input type=\"text\" class=\"mj-input\" [(ngModel)]=\"CardHolderName\" [disabled]=\"!ComposeMode\" placeholder=\"Name on card\" />\n </div>\n <div class=\"mjo-field col-span-full\">\n <label class=\"mjo-label\">Auth / Approval \u2116</label>\n <input type=\"text\" class=\"mj-input\" [(ngModel)]=\"ReferenceNumber\" [disabled]=\"!ComposeMode\" placeholder=\"e.g. AUTH-98210\" />\n </div>\n </div>\n </div>\n } @else if (PaymentTypeCode === 'ach') {\n <div class=\"mjo-instrument-box\">\n <div class=\"mjo-instrument-box__title\">\n <i class=\"fa-solid fa-building-columns\"></i> Bank transfer / ACH details\n </div>\n <div class=\"mjo-instrument-box__grid\">\n <div class=\"mjo-field\">\n <label class=\"mjo-label\">Bank Name</label>\n <input type=\"text\" class=\"mj-input\" [(ngModel)]=\"BankName\" [disabled]=\"!ComposeMode\" placeholder=\"e.g. Wells Fargo\" />\n </div>\n <div class=\"mjo-field\">\n <label class=\"mjo-label\">Account Type</label>\n <select class=\"mj-input\" [(ngModel)]=\"BankAccountType\" [disabled]=\"!ComposeMode\">\n <option [ngValue]=\"null\">Select Type</option>\n <option value=\"Checking\">Checking</option>\n <option value=\"Savings\">Savings</option>\n </select>\n </div>\n <div class=\"mjo-field\">\n <label class=\"mjo-label\">Routing Last 4</label>\n <input type=\"text\" class=\"mj-input font-mono\" maxlength=\"4\" [(ngModel)]=\"RoutingLast4\" [disabled]=\"!ComposeMode\" placeholder=\"1234\" />\n </div>\n <div class=\"mjo-field\">\n <label class=\"mjo-label\">Account Last 4</label>\n <input type=\"text\" class=\"mj-input font-mono\" maxlength=\"4\" [(ngModel)]=\"AccountLast4\" [disabled]=\"!ComposeMode\" placeholder=\"5678\" />\n </div>\n <div class=\"mjo-field col-span-full\">\n <label class=\"mjo-label\">Trace / Reference \u2116</label>\n <input type=\"text\" class=\"mj-input\" [(ngModel)]=\"ReferenceNumber\" [disabled]=\"!ComposeMode\" placeholder=\"Trace #\" />\n </div>\n </div>\n </div>\n } @else if (RequiresReference) {\n <div class=\"mjo-instrument-box\">\n <div class=\"mjo-instrument-box__title\">\n <i class=\"fa-solid fa-receipt\"></i> Reference details\n </div>\n <div class=\"mjo-field\">\n <label class=\"mjo-label\">Reference / Wire Confirmation \u2116 <span class=\"text-danger\">*</span></label>\n <input type=\"text\" class=\"mj-input\" [(ngModel)]=\"ReferenceNumber\" [disabled]=\"!ComposeMode\" placeholder=\"Confirmation or transfer id\" />\n </div>\n </div>\n }\n\n <mj-form-field\n [Record]=\"record\"\n [ShowLabel]=\"true\"\n DisplayNameOverride=\"Receiving Co.\"\n FieldName=\"ReceivingCompanyID\"\n Type=\"textbox\"\n LinkType=\"Record\"\n [EditMode]=\"ComposeMode\"\n [FormContext]=\"formContext\"\n (Navigate)=\"OnFormNavigate($event)\">\n </mj-form-field>\n\n <mj-form-field\n [Record]=\"record\"\n [ShowLabel]=\"true\"\n DisplayNameOverride=\"Processing Fee\"\n FieldName=\"ProcessingFeeAmount\"\n Type=\"number\"\n [EditMode]=\"ComposeMode\"\n [FormContext]=\"formContext\"\n (Navigate)=\"OnFormNavigate($event)\">\n </mj-form-field>\n </div>\n\n <div class=\"mjo-net-calc\">\n <span class=\"mjo-net-calc__label\">Net Settlement Amount</span>\n <span class=\"mjo-net-calc__val\">{{ FormattedNetAmount }}</span>\n </div>\n </div>\n </div>\n\n </aside>\n\n <!-- RIGHT COLUMN: ALLOCATION WORKBENCH -->\n <main class=\"mjo-ph-alloc-pane\">\n\n <!-- 1. Balance Status Hero Strip -->\n <div class=\"mjo-alloc-hero\" [class.is-balanced]=\"IsAllocationBalanced\" [class.is-warning]=\"!IsAllocationBalanced && UnallocatedRemainder > 0\" [class.is-error]=\"UnallocatedRemainder < 0\">\n <div class=\"mjo-alloc-hero__stats\">\n <div class=\"mjo-alloc-stat\">\n <span class=\"mjo-alloc-stat__kicker\">Payment Received</span>\n <span class=\"mjo-alloc-stat__val\">${{ (record.Amount || 0).toFixed(2) }}</span>\n </div>\n <div class=\"mjo-alloc-stat__op\"><i class=\"fa-solid fa-minus\"></i></div>\n <div class=\"mjo-alloc-stat\">\n <span class=\"mjo-alloc-stat__kicker\">Allocated</span>\n <span class=\"mjo-alloc-stat__val\">${{ TotalAllocated.toFixed(2) }}</span>\n </div>\n <div class=\"mjo-alloc-stat__op\"><i class=\"fa-solid fa-equals\"></i></div>\n <div class=\"mjo-alloc-stat\">\n <span class=\"mjo-alloc-stat__kicker\">Unallocated Remainder</span>\n <span class=\"mjo-alloc-stat__val\" [class.text-danger]=\"UnallocatedRemainder < 0\">\n ${{ Math.abs(UnallocatedRemainder).toFixed(2) }}\n </span>\n </div>\n </div>\n\n <div class=\"mjo-alloc-hero__message\">\n @if (IsAllocationBalanced) {\n <i class=\"fa-solid fa-circle-check text-success\"></i>\n <span>Allocations tie 100% to payment received. Ready to capture and book.</span>\n } @else if (UnallocatedRemainder > 0) {\n <i class=\"fa-solid fa-circle-info text-warning\"></i>\n <span>${{ UnallocatedRemainder.toFixed(2) }} remaining to allocate before capturing.</span>\n } @else {\n <i class=\"fa-solid fa-triangle-exclamation text-danger\"></i>\n <span>Over-allocated by ${{ Math.abs(UnallocatedRemainder).toFixed(2) }}. Please adjust amounts.</span>\n }\n </div>\n </div>\n <!-- 2. Allocation Toolbar -->\n <div class=\"mjo-alloc-toolbar\">\n <div class=\"mjo-alloc-toolbar__left\">\n <h2 class=\"mjo-alloc-toolbar__title\">\n <i class=\"fa-solid fa-receipt\"></i> Open orders\n </h2>\n @if (OpenOrders.length > 0) {\n <span class=\"mjo-badge\">{{ FilteredOpenOrders.length }} available</span>\n }\n </div>\n\n @if (!IsCaptured && OpenOrders.length > 0) {\n <div class=\"mjo-alloc-toolbar__right\">\n <div class=\"mjo-search-input-wrap\">\n <i class=\"fa-solid fa-magnifying-glass\"></i>\n <input type=\"text\" class=\"mjo-input mjo-input--sm\" [(ngModel)]=\"SearchQuery\" placeholder=\"Filter orders\u2026\" />\n </div>\n <button type=\"button\" class=\"mjo-btn mjo-btn--secondary mjo-btn--sm\" (click)=\"AutoApplyOldestFirst()\">\n <i class=\"fa-solid fa-wand-magic-sparkles\"></i> Auto-apply oldest\n </button>\n <button type=\"button\" class=\"mjo-btn mjo-btn--outline mjo-btn--sm\" (click)=\"ClearAllocations()\">\n <i class=\"fa-solid fa-eraser\"></i> Clear all\n </button>\n </div>\n }\n </div>\n\n <!-- 3. Open Orders & Order Lines Allocation Table -->\n <div class=\"mjo-card mjo-card--table\">\n @if (LoadingOpenOrders) {\n <div class=\"mjo-empty-state\">\n <i class=\"fa-solid fa-spinner fa-spin fa-2x text-muted\"></i>\n <p>Loading open orders\u2026</p>\n </div>\n } @else if (OpenOrders.length === 0) {\n <div class=\"mjo-empty-state\">\n <i class=\"fa-solid fa-receipt fa-3x text-muted\"></i>\n <h3>No unpaid orders found</h3>\n <p>There are zero open unpaid orders. Any recorded payment will be retained as unallocated credit.</p>\n </div>\n } @else {\n <div class=\"mjo-table-responsive\">\n <table class=\"mjo-table\">\n <thead>\n <tr>\n <th class=\"w-8\"></th>\n @if (!hasPayer) {\n <th>Customer</th>\n }\n <th>Order \u2116</th>\n <th>Date</th>\n <th>Due</th>\n <th>Company</th>\n <th class=\"text-right\">Gross</th>\n <th class=\"text-right\">Open Balance</th>\n <th class=\"text-right w-36\">Apply Amount</th>\n <th class=\"text-right\">Leaves Balance</th>\n <th class=\"w-24\"></th>\n </tr>\n </thead>\n <tbody>\n @for (order of FilteredOpenOrders; track order.ID) {\n <tr class=\"mjo-order-row\" [class.is-expanded]=\"IsOrderExpanded(order.ID || '')\">\n <td>\n <button type=\"button\" class=\"mjo-icon-btn\" (click)=\"ToggleOrderExpanded(order.ID || '')\" title=\"Toggle line items\">\n <i class=\"fa-solid\" [class.fa-chevron-down]=\"IsOrderExpanded(order.ID || '')\" [class.fa-chevron-right]=\"!IsOrderExpanded(order.ID || '')\"></i>\n </button>\n </td>\n @if (!hasPayer) {\n <td class=\"font-bold\">{{ order.BillToOrganization || order.BillToPerson || '\u2014' }}</td>\n }\n <td>\n <button type=\"button\" class=\"mjo-link\" (click)=\"OpenOrderRecord(order, $event)\">\n <strong>{{ order.OrderNumber }}</strong>\n </button>\n @if (order.Description) {\n <div class=\"mjo-subtext\">{{ order.Description }}</div>\n }\n </td>\n <td>{{ order.OrderDate ? FormatOrderDueDate(order) : '\u2014' }}</td>\n <td>\n @if (GetOrderDaysOverdue(order) > 0) {\n <span class=\"mjo-badge mjo-badge--error\">{{ GetOrderDaysOverdue(order) }}d overdue</span>\n } @else {\n <span>{{ FormatOrderDueDate(order) }}</span>\n }\n </td>\n <td>\n <span class=\"mjo-company-pill\">{{ order.Company || 'Default' }}</span>\n </td>\n <td class=\"text-right font-mono\">${{ (order.TotalGross || 0).toFixed(2) }}</td>\n <td class=\"text-right font-mono font-bold\">${{ (order.Balance ?? order.TotalGross ?? 0).toFixed(2) }}</td>\n <td class=\"text-right\">\n <div class=\"mjo-apply-input-wrap\" [class.is-derived]=\"HasLineAllocations(order.ID || '')\">\n <span class=\"mjo-apply-dollar\">$</span>\n <input\n type=\"number\"\n class=\"mjo-input mjo-input--sm mjo-input--num\"\n [ngModel]=\"GetOrderAllocation(order.ID || '')\"\n (ngModelChange)=\"SetOrderAllocation(order.ID || '', $event)\"\n [disabled]=\"IsCaptured || HasLineAllocations(order.ID || '')\"\n step=\"0.01\"\n min=\"0\"\n [title]=\"HasLineAllocations(order.ID || '') ? 'Order allocation is driven by line item allocations below' : 'Enter amount to allocate to order'\"\n />\n </div>\n @if (HasLineAllocations(order.ID || '')) {\n <div class=\"mjo-subtext text-info\">\n <i class=\"fa-solid fa-layer-group\"></i> Lines allocated\n </div>\n }\n </td>\n <td class=\"text-right font-mono\" [class.text-muted]=\"CalculateLeavesBalance(order) === 0\">\n ${{ CalculateLeavesBalance(order).toFixed(2) }}\n </td>\n <td class=\"text-right\">\n @if (!IsCaptured) {\n <button\n type=\"button\"\n class=\"mjo-btn mjo-btn--outline mjo-btn--sm\"\n (click)=\"FullPayOrder(order)\"\n [disabled]=\"(order.Balance ?? order.TotalGross ?? 0) <= 0\"\n >\n Pay in Full\n </button>\n }\n </td>\n </tr>\n\n <!-- EXPANDED CHILD ROW: INDIVIDUAL ORDER LINES -->\n @if (IsOrderExpanded(order.ID || '')) {\n <tr class=\"mjo-lines-row\">\n <td [attr.colspan]=\"hasPayer ? 10 : 11\" class=\"p-0\">\n <div class=\"mjo-nested-lines-pane\">\n <div class=\"mjo-nested-lines-header\">\n <i class=\"fa-solid fa-layer-group\"></i>\n <span>Order Line Items (Targeted Line Allocations)</span>\n </div>\n <table class=\"mjo-nested-table\">\n <thead>\n <tr>\n <th>#</th>\n <th>Product</th>\n <th class=\"text-right\">Unit Price</th>\n <th class=\"text-right\">Gross</th>\n <th class=\"text-right w-36\">Line Allocation</th>\n <th class=\"w-20\"></th>\n </tr>\n </thead>\n <tbody>\n @for (line of GetOrderLines(order.ID || ''); track line.ID) {\n <tr>\n <td>{{ line.LineNumber }}</td>\n <td>\n <strong>{{ line.Product || 'Line Item' }}</strong>\n </td>\n <td class=\"text-right font-mono\">${{ (line.UnitPrice || 0).toFixed(2) }}</td>\n <td class=\"text-right font-mono\">${{ (line.LineTotalGross || 0).toFixed(2) }}</td>\n <td class=\"text-right\">\n <div class=\"mjo-apply-input-wrap\">\n <span class=\"mjo-apply-dollar\">$</span>\n <input\n type=\"number\"\n class=\"mjo-input mjo-input--xs mjo-input--num\"\n [ngModel]=\"GetLineAllocation(line.ID || '')\"\n (ngModelChange)=\"SetLineAllocation(line.ID || '', $event, order.ID)\"\n [disabled]=\"IsCaptured\"\n step=\"0.01\"\n min=\"0\"\n />\n </div>\n </td>\n <td class=\"text-right\">\n @if (!IsCaptured) {\n <button type=\"button\" class=\"mjo-btn mjo-btn--outline mjo-btn--xs\" (click)=\"FullPayLine(order, line)\">\n Line Pay\n </button>\n }\n </td>\n </tr>\n }\n </tbody>\n </table>\n </div>\n </td>\n </tr>\n }\n }\n </tbody>\n </table>\n </div>\n }\n </div>\n\n </main>\n\n </div>\n }\n\n <!-- ================================================================\n TAB 2: ACCOUNTING & GENERAL LEDGER (CAPTURED PAYMENTS)\n ================================================================ -->\n @if (ActiveTab === 'accounting') {\n <div class=\"mjo-ph-tab-body\">\n <div class=\"mjo-accounting-header\">\n <div>\n <h2><i class=\"fa-solid fa-book\"></i> General Ledger Postings</h2>\n <p class=\"text-muted\">Double-entry balanced accounting entries booked across operating and receivable accounts.</p>\n </div>\n <div class=\"mjo-view-toggle\">\n <button type=\"button\" class=\"mjo-toggle-btn\" [class.is-active]=\"AccountingView === 'summary'\" (click)=\"SetAccountingView('summary')\">\n Summary (Rolled-up)\n </button>\n <button type=\"button\" class=\"mjo-toggle-btn\" [class.is-active]=\"AccountingView === 'detail'\" (click)=\"SetAccountingView('detail')\">\n By Journal Entry\n </button>\n </div>\n </div>\n\n @if (AccountingView === 'summary') {\n @if (RollupLoading) {\n <div class=\"mjo-empty-state\">\n <i class=\"fa-solid fa-spinner fa-spin fa-2x text-muted\"></i>\n <p>Rolling up general ledger accounts\u2026</p>\n </div>\n } @else if (RollupError) {\n <div class=\"mjo-alert mjo-alert--error\">{{ RollupError }}</div>\n } @else if (RollupCards.length === 0) {\n <div class=\"mjo-empty-state\">\n <i class=\"fa-solid fa-book-open fa-3x text-muted\"></i>\n <h3>No journal entries booked yet</h3>\n <p>Journal entries are booked automatically upon capturing and settling the payment.</p>\n </div>\n } @else {\n <div class=\"mjo-gl-cards-grid\">\n @for (card of RollupCards; track card.CompanyID) {\n <div class=\"mjo-card mjo-card--gl\">\n <div class=\"mjo-card__header\">\n <div>\n <h3 class=\"mjo-card__title\">{{ card.Company }}</h3>\n <div class=\"mjo-subtext\">{{ card.Rows.length }} {{ card.Rows.length === 1 ? 'line' : 'lines' }}</div>\n </div>\n <span class=\"mjo-badge\" [class.mjo-badge--success]=\"CardIsBalanced(card)\" [class.mjo-badge--error]=\"!CardIsBalanced(card)\">\n {{ CardIsBalanced(card) ? 'Balanced' : 'Out of Balance' }}\n </span>\n </div>\n <div class=\"mjo-card__body p-0\">\n <table class=\"mjo-table mjo-table--compact\">\n <thead>\n <tr>\n <th>GL Account</th>\n <th>Name</th>\n <th class=\"text-right\">Debit</th>\n <th class=\"text-right\">Credit</th>\n </tr>\n </thead>\n <tbody>\n @for (row of card.Rows; track row.Key) {\n <tr>\n <td class=\"font-mono\">{{ row.AccountCode || '\u2014' }}</td>\n <td>\n <span>{{ row.AccountName }}</span>\n </td>\n <td class=\"text-right font-mono\">{{ row.Debit ? RollupAmount(row.Debit) : '\u2014' }}</td>\n <td class=\"text-right font-mono\">{{ row.Credit ? RollupAmount(row.Credit) : '\u2014' }}</td>\n </tr>\n }\n </tbody>\n <tfoot>\n <tr>\n <th colspan=\"2\">Total</th>\n <th class=\"text-right font-mono\">${{ card.TotalDebit.toFixed(2) }}</th>\n <th class=\"text-right font-mono\">${{ card.TotalCredit.toFixed(2) }}</th>\n </tr>\n </tfoot>\n </table>\n </div>\n </div>\n }\n </div>\n }\n } @else {\n @if (PaymentJournalEntryParams) {\n <mj-explorer-entity-data-grid\n [Params]=\"PaymentJournalEntryParams\"\n [AllowLoad]=\"true\"\n [ShowToolbar]=\"false\"\n (Navigate)=\"OnFormNavigate($event)\">\n </mj-explorer-entity-data-grid>\n }\n }\n </div>\n }\n\n <!-- ================================================================\n TAB 3: DETAILS & NOTES\n ================================================================ -->\n @if (ActiveTab === 'details') {\n <div class=\"mjo-ph-tab-body\">\n <div class=\"mjo-form-sections-grid\">\n\n <!-- Processing & Gateway Details -->\n <div class=\"mjo-card\">\n <div class=\"mjo-card__header\">\n <h3 class=\"mjo-card__title\"><i class=\"fa-solid fa-gears\"></i> Processing & Gateway Details</h3>\n </div>\n <div class=\"mjo-card__body mjo-form-grid-2\">\n <mj-form-field [Record]=\"record\" [ShowLabel]=\"true\" FieldName=\"PaymentProviderID\" Type=\"textbox\" LinkType=\"Record\" [EditMode]=\"EditMode\" [FormContext]=\"formContext\" (Navigate)=\"OnFormNavigate($event)\"></mj-form-field>\n <mj-form-field [Record]=\"record\" [ShowLabel]=\"true\" FieldName=\"PaymentIntentID\" Type=\"textbox\" LinkType=\"Record\" [EditMode]=\"EditMode\" [FormContext]=\"formContext\" (Navigate)=\"OnFormNavigate($event)\"></mj-form-field>\n <mj-form-field [Record]=\"record\" [ShowLabel]=\"true\" FieldName=\"PaymentDetailID\" Type=\"textbox\" LinkType=\"Record\" [EditMode]=\"EditMode\" [FormContext]=\"formContext\" (Navigate)=\"OnFormNavigate($event)\"></mj-form-field>\n <mj-form-field [Record]=\"record\" [ShowLabel]=\"true\" FieldName=\"ProviderChargeID\" Type=\"textbox\" [EditMode]=\"EditMode\" [FormContext]=\"formContext\"></mj-form-field>\n <mj-form-field [Record]=\"record\" [ShowLabel]=\"true\" FieldName=\"ProviderRefundID\" Type=\"textbox\" [EditMode]=\"EditMode\" [FormContext]=\"formContext\"></mj-form-field>\n <mj-form-field [Record]=\"record\" [ShowLabel]=\"true\" FieldName=\"IdempotencyKey\" Type=\"textbox\" [EditMode]=\"EditMode\" [FormContext]=\"formContext\"></mj-form-field>\n </div>\n </div>\n\n <!-- Reversal & Notes -->\n <div class=\"mjo-card\">\n <div class=\"mjo-card__header\">\n <h3 class=\"mjo-card__title\"><i class=\"fa-solid fa-note-sticky\"></i> Reversal Info & Notes</h3>\n </div>\n <div class=\"mjo-card__body mjo-form-grid-2\">\n <mj-form-field [Record]=\"record\" [ShowLabel]=\"true\" FieldName=\"ReversesPaymentHeaderID\" Type=\"textbox\" LinkType=\"Record\" [EditMode]=\"EditMode\" [FormContext]=\"formContext\" (Navigate)=\"OnFormNavigate($event)\"></mj-form-field>\n <mj-form-field [Record]=\"record\" [ShowLabel]=\"true\" FieldName=\"ReversalReason\" Type=\"textarea\" [EditMode]=\"EditMode\" [FormContext]=\"formContext\"></mj-form-field>\n <mj-form-field [Record]=\"record\" [ShowLabel]=\"true\" FieldName=\"Description\" Type=\"textarea\" [EditMode]=\"EditMode\" [FormContext]=\"formContext\"></mj-form-field>\n <mj-form-field [Record]=\"record\" [ShowLabel]=\"true\" FieldName=\"Notes\" Type=\"textarea\" [EditMode]=\"EditMode\" [FormContext]=\"formContext\"></mj-form-field>\n </div>\n </div>\n\n <!-- Audit Metadata -->\n <div class=\"mjo-card\">\n <div class=\"mjo-card__header\">\n <h3 class=\"mjo-card__title\"><i class=\"fa-solid fa-clock-rotate-left\"></i> System Metadata</h3>\n </div>\n <div class=\"mjo-card__body mjo-form-grid-2\">\n <mj-form-field [Record]=\"record\" [ShowLabel]=\"true\" FieldName=\"__mj_CreatedAt\" Type=\"textbox\" [EditMode]=\"false\" [FormContext]=\"formContext\"></mj-form-field>\n <mj-form-field [Record]=\"record\" [ShowLabel]=\"true\" FieldName=\"__mj_UpdatedAt\" Type=\"textbox\" [EditMode]=\"false\" [FormContext]=\"formContext\"></mj-form-field>\n </div>\n </div>\n\n </div>\n </div>\n }\n\n <!-- ================================================================\n TAB 4: RELATED RECORDS\n ================================================================ -->\n @if (ActiveTab === 'related') {\n <div class=\"mjo-ph-tab-body\">\n <mj-collapsible-panel\n SectionKey=\"mJBizAppsOrdersStoredValueTransactions\"\n SectionName=\"Stored Value & Account Credit Transactions\"\n Icon=\"fa fa-wallet\"\n Variant=\"related-entity\"\n [Form]=\"this\"\n [FormContext]=\"formContext\"\n [BadgeCount]=\"GetSectionRowCount('mJBizAppsOrdersStoredValueTransactions')\"\n [DefaultExpanded]=\"true\">\n <mj-explorer-entity-data-grid\n [Params]=\"BuildRelationshipViewParamsByEntityName('MJ_BizApps_Orders: Stored Value Transactions', 'RelatedPaymentID')\"\n [NewRecordValues]=\"NewRecordValues('MJ_BizApps_Orders: Stored Value Transactions', 'RelatedPaymentID')\"\n [AllowLoad]=\"true\"\n [ShowToolbar]=\"true\"\n (Navigate)=\"OnFormNavigate($event)\"\n (AfterDataLoad)=\"SetSectionRowCount('mJBizAppsOrdersStoredValueTransactions', $event.totalRowCount)\">\n </mj-explorer-entity-data-grid>\n </mj-collapsible-panel>\n\n <mj-collapsible-panel\n SectionKey=\"mJBizAppsOrdersSubscriptionEvents\"\n SectionName=\"Subscription Billing Events\"\n Icon=\"fa fa-history\"\n Variant=\"related-entity\"\n [Form]=\"this\"\n [FormContext]=\"formContext\"\n [BadgeCount]=\"GetSectionRowCount('mJBizAppsOrdersSubscriptionEvents')\"\n [DefaultExpanded]=\"false\">\n <mj-explorer-entity-data-grid\n [Params]=\"BuildRelationshipViewParamsByEntityName('MJ_BizApps_Orders: Subscription Events', 'PaymentHeaderID')\"\n [NewRecordValues]=\"NewRecordValues('MJ_BizApps_Orders: Subscription Events', 'PaymentHeaderID')\"\n [AllowLoad]=\"true\"\n [ShowToolbar]=\"true\"\n (Navigate)=\"OnFormNavigate($event)\"\n (AfterDataLoad)=\"SetSectionRowCount('mJBizAppsOrdersSubscriptionEvents', $event.totalRowCount)\">\n </mj-explorer-entity-data-grid>\n </mj-collapsible-panel>\n\n <mj-collapsible-panel\n SectionKey=\"mJBizAppsOrdersPaymentHeaders\"\n SectionName=\"Linked Reversal & Refund Payment Records\"\n Icon=\"fa fa-rotate-left\"\n Variant=\"related-entity\"\n [Form]=\"this\"\n [FormContext]=\"formContext\"\n [BadgeCount]=\"GetSectionRowCount('mJBizAppsOrdersPaymentHeaders')\"\n [DefaultExpanded]=\"false\">\n <mj-explorer-entity-data-grid\n [Params]=\"BuildRelationshipViewParamsByEntityName('MJ_BizApps_Orders: Payment Headers', 'ReversesPaymentHeaderID')\"\n [NewRecordValues]=\"NewRecordValues('MJ_BizApps_Orders: Payment Headers', 'ReversesPaymentHeaderID')\"\n [AllowLoad]=\"true\"\n [ShowToolbar]=\"true\"\n (Navigate)=\"OnFormNavigate($event)\"\n (AfterDataLoad)=\"SetSectionRowCount('mJBizAppsOrdersPaymentHeaders', $event.totalRowCount)\">\n </mj-explorer-entity-data-grid>\n </mj-collapsible-panel>\n </div>\n }\n\n</mj-record-form-container>\n}\n", styles: ["/* ============================================================================\n BizApps Orders \u2014 Custom Payment Header Form Component Styles\n Uses MemberJunction semantic tokens for dark and light theme harmony.\n ============================================================================ */\n\n:host {\n display: block;\n width: 100%;\n}\n\n/* \u2500\u2500 1. Hero Header Banner \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.mjo-ph-hero {\n background: var(--mj-bg-surface-card, #ffffff);\n border: 1px solid var(--mj-border-default, #e2e8f0);\n border-radius: var(--mj-radius-lg, 12px);\n padding: var(--mj-space-4, 16px) var(--mj-space-5, 20px);\n box-shadow: 0 1px 3px rgba(0, 0, 0, 0.04);\n margin-bottom: var(--mj-space-4, 16px);\n}\n\n.mjo-ph-hero__top {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: var(--mj-space-4, 16px);\n flex-wrap: wrap;\n}\n\n.mjo-ph-who {\n display: flex;\n align-items: center;\n gap: var(--mj-space-4, 16px);\n}\n\n.mjo-ph-avatar {\n width: 48px;\n height: 48px;\n border-radius: var(--mj-radius-md, 8px);\n background: linear-gradient(135deg, #16a34a 0%, #15803d 100%);\n color: #ffffff;\n display: flex;\n align-items: center;\n justify-content: center;\n font-size: 20px;\n box-shadow: 0 4px 10px rgba(22, 163, 74, 0.25);\n flex-shrink: 0;\n}\n\n.mjo-ph-avatar.is-reversal {\n background: linear-gradient(135deg, #9333ea 0%, #7e22ce 100%);\n box-shadow: 0 4px 10px rgba(147, 51, 234, 0.25);\n}\n\n.mjo-ph-title-row {\n display: flex;\n align-items: center;\n gap: var(--mj-space-3, 10px);\n flex-wrap: wrap;\n}\n\n.mjo-ph-title {\n margin: 0;\n font-size: var(--mj-text-lg, 18px);\n font-weight: var(--mj-font-bold, 700);\n color: var(--mj-text-primary, #0f172a);\n letter-spacing: -0.01em;\n}\n\n.mjo-ph-sub {\n font-size: var(--mj-text-xs, 12px);\n color: var(--mj-text-muted, #64748b);\n margin-top: 2px;\n}\n\n.mjo-ph-hero__aside {\n display: flex;\n align-items: center;\n gap: var(--mj-space-5, 20px);\n flex-wrap: wrap;\n}\n\n.mjo-ph-money {\n display: flex;\n align-items: center;\n gap: var(--mj-space-4, 16px);\n padding: var(--mj-space-2, 6px) var(--mj-space-4, 14px);\n background: var(--mj-bg-surface-sunken, rgba(0, 0, 0, 0.03));\n border: 1px solid var(--mj-border-default, #e2e8f0);\n border-radius: var(--mj-radius-md, 8px);\n}\n\n.mjo-ph-money > div {\n display: flex;\n flex-direction: column;\n align-items: flex-end;\n}\n\n.mjo-ph-kicker {\n font-size: var(--mj-text-xs, 11px);\n font-weight: var(--mj-font-semibold, 600);\n text-transform: uppercase;\n letter-spacing: 0.04em;\n color: var(--mj-text-muted, #64748b);\n}\n\n.mjo-ph-amt {\n font-size: var(--mj-text-sm, 13px);\n font-weight: var(--mj-font-bold, 700);\n font-family: var(--mj-font-family-mono, monospace);\n color: var(--mj-text-primary, #0f172a);\n}\n\n.mjo-ph-amt.is-balanced {\n color: #16a34a;\n}\n\n.mjo-ph-amt.is-unbalanced {\n color: #d97706;\n}\n\n.mjo-ph-actions {\n display: flex;\n align-items: center;\n gap: var(--mj-space-2, 8px);\n}\n\n/* \u2500\u2500 2. Tab Navigation \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.mjo-ph-tabs {\n margin-bottom: var(--mj-space-4, 16px);\n}\n\n/* \u2500\u2500 3. 2-Column Workbench Layout \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.mjo-ph-workbench {\n display: flex;\n gap: var(--mj-space-4, 16px);\n align-items: flex-start;\n width: 100%;\n}\n\n.mjo-ph-money-pane {\n width: 380px;\n flex-shrink: 0;\n display: flex;\n flex-direction: column;\n gap: var(--mj-space-4, 16px);\n --mj-forms-field-label-width: 105px;\n --mj-forms-field-gap: 8px;\n}\n\n.mjo-ph-fields-stack {\n display: flex;\n flex-direction: column;\n gap: 4px;\n}\n\n.mjo-ph-fields-stack mj-form-field {\n --mj-forms-field-label-width: 105px;\n --mj-forms-field-gap: 8px;\n}\n\n.mjo-ph-alloc-pane {\n flex: 1;\n min-width: 0;\n display: flex;\n flex-direction: column;\n gap: var(--mj-space-4, 16px);\n}\n\n/* \u2500\u2500 4. Card Surfaces \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.mjo-card {\n background: var(--mj-bg-surface-card, #ffffff);\n border: 1px solid var(--mj-border-default, #e2e8f0);\n border-radius: var(--mj-radius-lg, 10px);\n box-shadow: var(--mj-shadow-xs, 0 1px 2px rgba(0, 0, 0, 0.04));\n overflow: hidden;\n}\n\n.mjo-card__header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: var(--mj-space-3, 12px) var(--mj-space-4, 16px);\n background: var(--mj-bg-surface-sunken, rgba(0, 0, 0, 0.02));\n border-bottom: 1px solid var(--mj-border-default, #e2e8f0);\n}\n\n.mjo-card__title {\n font-size: var(--mj-text-sm, 13px);\n font-weight: var(--mj-font-bold, 700);\n color: var(--mj-text-primary, #0f172a);\n display: flex;\n align-items: center;\n gap: var(--mj-space-2, 8px);\n}\n\n.mjo-card__body {\n padding: var(--mj-space-4, 16px);\n display: flex;\n flex-direction: column;\n gap: var(--mj-space-3, 12px);\n}\n\n.mjo-card__body.p-0 {\n padding: 0;\n}\n\n.mjo-field {\n display: flex;\n flex-direction: column;\n gap: 4px;\n}\n\n.mjo-label {\n font-size: var(--mj-text-xs, 12px);\n font-weight: var(--mj-font-semibold, 600);\n color: var(--mj-text-secondary, #94a3b8);\n}\n\n.mjo-input-money-wrap {\n position: relative;\n display: flex;\n align-items: center;\n width: 100%;\n}\n\n.mjo-currency-prefix {\n position: absolute;\n left: 14px;\n font-size: var(--mj-text-lg, 16px);\n font-weight: var(--mj-font-bold, 700);\n color: var(--mj-text-muted, #94a3b8);\n pointer-events: none;\n z-index: 2;\n}\n\n.mjo-input--money {\n padding-left: 30px !important;\n font-size: var(--mj-text-lg, 16px) !important;\n font-weight: var(--mj-font-bold, 700) !important;\n font-family: var(--mj-font-family-mono, monospace) !important;\n height: 42px !important;\n width: 100% !important;\n background: var(--mj-bg-surface-card, transparent) !important;\n color: var(--mj-text-primary, inherit) !important;\n border: 1px solid var(--mj-border-default, #334155) !important;\n border-radius: var(--mj-radius-md, 6px) !important;\n}\n\n.mjo-input--money:focus {\n border-color: var(--mj-brand-primary, #0076b6) !important;\n box-shadow: 0 0 0 2px rgba(0, 118, 182, 0.25) !important;\n}\n\n.mjo-net-calc {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 10px 14px;\n background: var(--mj-bg-surface-sunken, rgba(0, 0, 0, 0.2));\n border: 1px solid var(--mj-border-default, rgba(255, 255, 255, 0.08));\n border-radius: var(--mj-radius-md, 6px);\n margin-top: 4px;\n}\n\n.mjo-net-calc__label {\n font-size: var(--mj-text-xs, 12px);\n font-weight: var(--mj-font-semibold, 600);\n color: var(--mj-text-secondary, #94a3b8);\n}\n\n.mjo-net-calc__val {\n font-size: var(--mj-text-base, 15px);\n font-weight: var(--mj-font-bold, 700);\n font-family: var(--mj-font-family-mono, monospace);\n color: var(--mj-text-primary, #f8fafc);\n}\n\n.mjo-payer-chip {\n display: flex;\n align-items: center;\n gap: var(--mj-space-2, 8px);\n padding: 6px 10px;\n background: var(--mj-bg-surface-sunken, rgba(0, 0, 0, 0.03));\n border: 1px solid var(--mj-border-default, #e2e8f0);\n border-radius: var(--mj-radius-md, 6px);\n font-size: var(--mj-text-xs, 12px);\n font-weight: var(--mj-font-semibold, 600);\n}\n\n/* \u2500\u2500 5. Books Preview Card \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.mjo-card--books {\n border-color: rgba(0, 118, 182, 0.25);\n}\n\n\n\n/* \u2500\u2500 6. Allocation Hero Status Strip \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.mjo-alloc-hero {\n background: var(--mj-bg-surface-card, #ffffff);\n border: 1px solid var(--mj-border-default, #e2e8f0);\n border-radius: var(--mj-radius-lg, 12px);\n padding: var(--mj-space-3, 12px) var(--mj-space-4, 16px);\n display: flex;\n flex-direction: column;\n gap: var(--mj-space-2, 8px);\n}\n\n.mjo-alloc-hero.is-balanced {\n border-color: rgba(22, 163, 74, 0.35);\n background: rgba(22, 163, 74, 0.03);\n}\n\n.mjo-alloc-hero.is-warning {\n border-color: rgba(217, 119, 6, 0.35);\n background: rgba(217, 119, 6, 0.03);\n}\n\n.mjo-alloc-hero.is-error {\n border-color: rgba(220, 38, 38, 0.35);\n background: rgba(220, 38, 38, 0.03);\n}\n\n.mjo-alloc-hero__stats {\n display: flex;\n align-items: center;\n gap: var(--mj-space-4, 16px);\n flex-wrap: wrap;\n}\n\n.mjo-alloc-stat {\n display: flex;\n flex-direction: column;\n}\n\n.mjo-alloc-stat__kicker {\n font-size: 11px;\n font-weight: var(--mj-font-semibold, 600);\n text-transform: uppercase;\n letter-spacing: 0.04em;\n color: var(--mj-text-muted, #64748b);\n}\n\n.mjo-alloc-stat__val {\n font-size: var(--mj-text-base, 15px);\n font-weight: var(--mj-font-bold, 700);\n font-family: var(--mj-font-family-mono, monospace);\n color: var(--mj-text-primary, #0f172a);\n}\n\n.mjo-alloc-stat__op {\n font-size: 14px;\n color: var(--mj-text-muted, #94a3b8);\n}\n\n.mjo-alloc-hero__message {\n display: flex;\n align-items: center;\n gap: var(--mj-space-2, 8px);\n font-size: var(--mj-text-xs, 12px);\n font-weight: var(--mj-font-semibold, 600);\n padding-top: 6px;\n border-top: 1px solid var(--mj-border-default, #e2e8f0);\n}\n\n/* \u2500\u2500 7. Toolbar \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.mjo-alloc-toolbar {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: var(--mj-space-3, 12px);\n flex-wrap: wrap;\n}\n\n.mjo-alloc-toolbar__left {\n display: flex;\n align-items: center;\n gap: var(--mj-space-2, 8px);\n}\n\n.mjo-alloc-toolbar__title {\n margin: 0;\n font-size: var(--mj-text-sm, 14px);\n font-weight: var(--mj-font-bold, 700);\n color: var(--mj-text-primary, #0f172a);\n display: flex;\n align-items: center;\n gap: var(--mj-space-2, 8px);\n}\n\n.mjo-alloc-toolbar__right {\n display: flex;\n align-items: center;\n gap: var(--mj-space-2, 8px);\n}\n\n.mjo-search-input-wrap {\n position: relative;\n display: flex;\n align-items: center;\n}\n\n.mjo-search-input-wrap i {\n position: absolute;\n left: 8px;\n font-size: 11px;\n color: var(--mj-text-muted, #94a3b8);\n}\n\n.mjo-search-input-wrap input {\n padding-left: 24px;\n width: 160px;\n}\n\n/* \u2500\u2500 8. Orders & Allocations Table \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.mjo-table-responsive {\n overflow-x: auto;\n width: 100%;\n}\n\n.mjo-table {\n width: 100%;\n border-collapse: collapse;\n font-size: var(--mj-text-xs, 12px);\n}\n\n.mjo-table th {\n background: var(--mj-bg-surface-header, rgba(0, 0, 0, 0.02));\n color: var(--mj-text-muted, #64748b);\n font-weight: var(--mj-font-semibold, 600);\n text-transform: uppercase;\n letter-spacing: 0.04em;\n font-size: 11px;\n padding: 8px 12px;\n border-bottom: 1px solid var(--mj-border-default, #e2e8f0);\n text-align: left;\n}\n\n.mjo-table td {\n padding: 8px 12px;\n border-bottom: 1px solid var(--mj-border-default, #e2e8f0);\n vertical-align: middle;\n color: var(--mj-text-primary, #0f172a);\n}\n\n.mjo-order-row:hover {\n background: var(--mj-bg-surface-hover, rgba(0, 0, 0, 0.02));\n}\n\n.mjo-order-row.is-expanded {\n background: rgba(0, 118, 182, 0.02);\n}\n\n.mjo-apply-input-wrap {\n position: relative;\n display: inline-flex;\n align-items: center;\n width: 100%;\n max-width: 110px;\n}\n\n.mjo-apply-dollar {\n position: absolute;\n left: 8px;\n font-size: 11px;\n font-weight: var(--mj-font-bold, 700);\n color: var(--mj-text-muted, #64748b);\n pointer-events: none;\n}\n\n.mjo-apply-input-wrap input {\n padding-left: 18px;\n}\n\n.mjo-nested-lines-pane {\n background: var(--mj-bg-surface-sunken, rgba(0, 0, 0, 0.02));\n border-top: 1px solid var(--mj-border-default, #e2e8f0);\n border-bottom: 2px solid var(--mj-border-default, #cbd5e1);\n padding: var(--mj-space-3, 10px) var(--mj-space-4, 16px);\n}\n\n.mjo-nested-lines-header {\n display: flex;\n align-items: center;\n gap: var(--mj-space-2, 8px);\n font-size: 11px;\n font-weight: var(--mj-font-bold, 700);\n text-transform: uppercase;\n letter-spacing: 0.04em;\n color: var(--mj-text-secondary, #475569);\n margin-bottom: var(--mj-space-2, 6px);\n}\n\n.mjo-nested-table {\n width: 100%;\n border-collapse: collapse;\n font-size: var(--mj-text-xs, 12px);\n background: var(--mj-bg-surface-card, #ffffff);\n border: 1px solid var(--mj-border-default, #e2e8f0);\n border-radius: var(--mj-radius-md, 6px);\n overflow: hidden;\n}\n\n.mjo-nested-table th {\n background: rgba(0, 0, 0, 0.02);\n font-size: 10.5px;\n font-weight: var(--mj-font-semibold, 600);\n padding: 6px 10px;\n border-bottom: 1px solid var(--mj-border-default, #e2e8f0);\n}\n\n.mjo-nested-table td {\n padding: 6px 10px;\n border-bottom: 1px solid var(--mj-border-default, #e2e8f0);\n}\n\n/* \u2500\u2500 9. Accounting Postings View \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.mjo-ph-tab-body {\n display: flex;\n flex-direction: column;\n gap: var(--mj-space-4, 16px);\n}\n\n.mjo-accounting-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: var(--mj-space-4, 16px);\n flex-wrap: wrap;\n}\n\n.mjo-accounting-header h2 {\n margin: 0;\n font-size: var(--mj-text-base, 15px);\n font-weight: var(--mj-font-bold, 700);\n color: var(--mj-text-primary, #0f172a);\n display: flex;\n align-items: center;\n gap: var(--mj-space-2, 8px);\n}\n\n.mjo-accounting-header p {\n margin: 2px 0 0 0;\n font-size: var(--mj-text-xs, 12px);\n}\n\n.mjo-view-toggle {\n display: flex;\n background: var(--mj-bg-surface-sunken, rgba(0, 0, 0, 0.04));\n border: 1px solid var(--mj-border-default, #e2e8f0);\n border-radius: var(--mj-radius-md, 6px);\n padding: 2px;\n}\n\n.mjo-toggle-btn {\n border: none;\n background: transparent;\n padding: 4px 10px;\n font-size: var(--mj-text-xs, 12px);\n font-weight: var(--mj-font-semibold, 600);\n color: var(--mj-text-secondary, #475569);\n border-radius: var(--mj-radius-sm, 4px);\n cursor: pointer;\n transition: all 0.15s ease;\n}\n\n.mjo-toggle-btn.is-active {\n background: var(--mj-bg-surface-card, #ffffff);\n color: var(--mj-text-primary, #0f172a);\n box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05);\n}\n\n.mjo-gl-cards-grid {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(360px, 1fr));\n gap: var(--mj-space-4, 16px);\n}\n\n.mjo-table--compact th, .mjo-table--compact td {\n padding: 6px 10px;\n}\n\n.mjo-table tfoot th {\n background: var(--mj-bg-surface-header, rgba(0, 0, 0, 0.02));\n border-top: 2px solid var(--mj-border-default, #cbd5e1);\n font-size: var(--mj-text-xs, 12px);\n font-weight: var(--mj-font-bold, 700);\n}\n\n.is-intercompany {\n background: rgba(0, 118, 182, 0.04);\n}\n\n.mjo-ic-tag {\n display: inline-block;\n font-size: 10px;\n font-weight: var(--mj-font-bold, 700);\n text-transform: uppercase;\n color: #0284c7;\n background: rgba(2, 132, 199, 0.12);\n padding: 1px 5px;\n border-radius: 3px;\n margin-left: 6px;\n}\n\n/* \u2500\u2500 10. Common UI Elements & Chips \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.mjo-btn {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n gap: var(--mj-space-2, 6px);\n height: 34px;\n padding: 0 14px;\n font-size: var(--mj-text-xs, 12px);\n font-weight: var(--mj-font-semibold, 600);\n border-radius: var(--mj-radius-md, 6px);\n cursor: pointer;\n border: 1px solid transparent;\n transition: all 0.15s ease;\n}\n\n.mjo-btn--primary {\n background: var(--mj-brand-primary, #0076b6);\n color: #ffffff;\n}\n\n.mjo-btn--primary:hover:not(:disabled) {\n background: #006094;\n}\n\n.mjo-btn--secondary {\n background: var(--mj-bg-surface-sunken, rgba(0, 0, 0, 0.05));\n border-color: var(--mj-border-default, #cbd5e1);\n color: var(--mj-text-primary, #0f172a);\n}\n\n.mjo-btn--secondary:hover:not(:disabled) {\n background: rgba(0, 0, 0, 0.08);\n}\n\n.mjo-btn--outline {\n background: transparent;\n border-color: var(--mj-border-default, #cbd5e1);\n color: var(--mj-text-secondary, #475569);\n}\n\n.mjo-btn--outline:hover:not(:disabled) {\n border-color: var(--mj-brand-primary, #0076b6);\n color: var(--mj-brand-primary, #0076b6);\n}\n\n.mjo-btn--sm {\n height: 30px;\n padding: 0 10px;\n font-size: 11.5px;\n}\n\n.mjo-btn--xs {\n height: 24px;\n padding: 0 8px;\n font-size: 11px;\n}\n\n.mjo-btn:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n}\n\n.mjo-icon-btn {\n border: none;\n background: transparent;\n color: var(--mj-text-muted, #64748b);\n cursor: pointer;\n padding: 4px;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n}\n\n.mjo-icon-btn:hover {\n color: var(--mj-text-primary, #0f172a);\n}\n\n.mjo-link {\n border: none;\n background: transparent;\n color: var(--mj-brand-primary, #0076b6);\n cursor: pointer;\n padding: 0;\n font-size: inherit;\n text-align: left;\n}\n\n.mjo-link:hover {\n text-decoration: underline;\n}\n\n.mjo-status-chip {\n font-size: 11px;\n font-weight: var(--mj-font-bold, 700);\n text-transform: uppercase;\n letter-spacing: 0.04em;\n padding: 2px 8px;\n border-radius: 4px;\n display: inline-flex;\n align-items: center;\n gap: 4px;\n}\n\n.mjo-status-chip--draft {\n background: rgba(100, 116, 139, 0.12);\n color: #475569;\n}\n\n.mjo-status-chip--active {\n background: rgba(22, 163, 74, 0.12);\n color: #16a34a;\n}\n\n.mjo-status-chip--purple {\n background: rgba(147, 51, 234, 0.12);\n color: #9333ea;\n}\n\n.mjo-status-chip--error {\n background: rgba(220, 38, 38, 0.12);\n color: #dc2626;\n}\n\n.mjo-status-chip--warning {\n background: rgba(217, 119, 6, 0.12);\n color: #d97706;\n}\n\n.mjo-company-pill {\n font-size: 11px;\n font-weight: var(--mj-font-semibold, 600);\n color: var(--mj-text-secondary, #475569);\n background: var(--mj-bg-surface-sunken, rgba(0, 0, 0, 0.04));\n padding: 2px 6px;\n border-radius: 4px;\n}\n\n.mjo-sku-chip {\n font-family: var(--mj-font-family-mono, monospace);\n font-size: 10px;\n color: var(--mj-text-muted, #64748b);\n background: rgba(0, 0, 0, 0.04);\n padding: 1px 4px;\n border-radius: 3px;\n margin-left: 4px;\n}\n\n.mjo-badge {\n font-size: 11px;\n font-weight: var(--mj-font-semibold, 600);\n padding: 2px 6px;\n border-radius: 12px;\n background: var(--mj-bg-surface-sunken, rgba(0, 0, 0, 0.05));\n color: var(--mj-text-secondary, #475569);\n}\n\n.mjo-badge--error {\n background: rgba(220, 38, 38, 0.12);\n color: #dc2626;\n}\n\n.mjo-badge--success {\n background: rgba(22, 163, 74, 0.12);\n color: #16a34a;\n}\n\n.mjo-empty-state {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n padding: var(--mj-space-6, 32px) var(--mj-space-4, 16px);\n text-align: center;\n gap: var(--mj-space-2, 8px);\n}\n\n.mjo-empty-state h3 {\n margin: 0;\n font-size: var(--mj-text-sm, 14px);\n font-weight: var(--mj-font-bold, 700);\n color: var(--mj-text-primary, #0f172a);\n}\n\n.mjo-empty-state p {\n margin: 0;\n font-size: var(--mj-text-xs, 12px);\n color: var(--mj-text-muted, #64748b);\n max-width: 380px;\n}\n\n.mjo-alert {\n display: flex;\n align-items: center;\n gap: var(--mj-space-3, 10px);\n padding: 10px 14px;\n border-radius: var(--mj-radius-md, 8px);\n font-size: var(--mj-text-xs, 12px);\n margin-bottom: var(--mj-space-3, 12px);\n}\n\n.mjo-alert--error {\n background: rgba(220, 38, 38, 0.08);\n border: 1px solid rgba(220, 38, 38, 0.25);\n color: #dc2626;\n}\n\n.mjo-subtext {\n font-size: 11px;\n color: var(--mj-text-muted, #64748b);\n}\n\n.text-right { text-align: right; }\n.font-mono { font-family: var(--mj-font-family-mono, monospace); }\n.font-bold { font-weight: var(--mj-font-bold, 700); }\n.text-muted { color: var(--mj-text-muted, #64748b); }\n.text-success { color: #16a34a; }\n.text-warning { color: #d97706; }\n.text-danger { color: #dc2626; }\n.w-8 { width: 32px; }\n.w-16 { width: 64px; }\n.w-20 { width: 80px; }\n.w-24 { width: 96px; }\n.w-36 { width: 144px; }\n.flex { display: flex; }\n.gap-2 { gap: 8px; }\n.col-span-full { grid-column: 1 / -1; }\n.text-info { color: #0284c7; }\n\n/* \u2500\u2500 12. Instrument Box (Check/Card/ACH/Wire) \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.mjo-instrument-box {\n background: var(--mj-bg-surface-sunken, rgba(0, 0, 0, 0.02));\n border: 1px solid var(--mj-border-default, #e2e8f0);\n border-radius: var(--mj-radius-md, 8px);\n padding: var(--mj-space-3, 12px);\n margin: var(--mj-space-2, 6px) 0;\n display: flex;\n flex-direction: column;\n gap: var(--mj-space-3, 10px);\n}\n\n.mjo-instrument-box__title {\n font-size: var(--mj-text-xs, 12px);\n font-weight: var(--mj-font-semibold, 600);\n color: var(--mj-text-primary, #0f172a);\n display: flex;\n align-items: center;\n gap: 6px;\n padding-bottom: 6px;\n border-bottom: 1px dashed var(--mj-border-default, #e2e8f0);\n}\n\n.mjo-instrument-box__grid {\n display: grid;\n grid-template-columns: 1fr 1fr;\n gap: var(--mj-space-2, 8px);\n}\n\n.mjo-instrument-box .mjo-field {\n display: flex;\n flex-direction: column;\n gap: 4px;\n}\n\n.mjo-instrument-box .mjo-label {\n font-size: 11px;\n font-weight: var(--mj-font-medium, 500);\n color: var(--mj-text-secondary, #475569);\n}\n\n.mjo-apply-input-wrap.is-derived input {\n background: var(--mj-bg-surface-sunken, rgba(0, 0, 0, 0.03));\n color: var(--mj-text-secondary, #475569);\n cursor: not-allowed;\n border-style: dashed;\n}\n"] }]
|
|
2205
|
+
args: [{ standalone: false, selector: 'bizapps-payment-header-form', template: "@if (record) {\n<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 HERO IDENTITY HEADER CARD & SUMMARY METRIC STRIP\n ================================================================ -->\n <div class=\"mjo-ph-hero\">\n <div class=\"mjo-ph-hero__top\">\n <div class=\"mjo-ph-who\">\n <div class=\"mjo-ph-avatar\" [class.is-reversal]=\"IsReversal\">\n <i [class]=\"PaymentAvatarIcon\"></i>\n </div>\n <div>\n <div class=\"mjo-ph-title-row\">\n <h1 class=\"mjo-ph-title\">\n {{ record.PaymentNumber || 'New payment' }} \u00B7 {{ FormattedGrossAmount }}\n </h1>\n <span [class]=\"StatusBadgeClass\">{{ record.Status || 'Draft' }}</span>\n @if (IsReversal) {\n <span class=\"mjo-status-chip mjo-status-chip--purple\">\n <i class=\"fa-solid fa-rotate-left\"></i> Reversal\n </span>\n }\n </div>\n <div class=\"mjo-ph-sub\">{{ HeaderSubtitle }}</div>\n </div>\n </div>\n\n <div class=\"mjo-ph-hero__aside\">\n <div class=\"mjo-ph-money\">\n <div>\n <span class=\"mjo-ph-kicker\">Gross</span>\n <span class=\"mjo-ph-amt\">{{ FormattedGrossAmount }}</span>\n </div>\n <div>\n <span class=\"mjo-ph-kicker\">Fee</span>\n <span class=\"mjo-ph-amt\">{{ FormattedFee }}</span>\n </div>\n <div>\n <span class=\"mjo-ph-kicker\">Net</span>\n <span class=\"mjo-ph-amt\">{{ FormattedNetAmount }}</span>\n </div>\n <div>\n <span class=\"mjo-ph-kicker\">Allocations</span>\n <span class=\"mjo-ph-amt\" [class.is-balanced]=\"IsAllocationBalanced\" [class.is-unbalanced]=\"!IsAllocationBalanced && TotalAllocated > 0\">\n @if (IsCaptured) {\n {{ GetSectionRowCount('mJBizAppsOrdersPaymentLines') || 0 }} Settled\n } @else {\n ${{ TotalAllocated.toFixed(2) }}\n }\n </span>\n </div>\n </div>\n\n @if (!IsCaptured) {\n <div class=\"mjo-ph-actions\">\n <button type=\"button\" class=\"mjo-btn mjo-btn--secondary\" (click)=\"SaveAsDraft()\" [disabled]=\"Saving || Capturing\">\n <i class=\"fa-solid fa-floppy-disk\"></i> {{ Saving ? 'Saving\u2026' : 'Save draft' }}\n </button>\n <button type=\"button\" class=\"mjo-btn mjo-btn--primary\" (click)=\"CapturePayment()\" [disabled]=\"Capturing || Saving || !IsAllocationBalanced || !record.Amount || !hasPayer\">\n <i class=\"fa-solid fa-check-double\"></i> {{ Capturing ? 'Capturing\u2026' : 'Capture & Book' }}\n </button>\n </div>\n }\n </div>\n </div>\n </div>\n\n <!-- TAB NAVIGATION STRIP -->\n <div class=\"mjo-ph-tabs\">\n <mj-tab-nav [Tabs]=\"ContextTabs\" [ActiveKey]=\"ActiveTab ?? ''\" (TabChange)=\"SelectTab($event)\"></mj-tab-nav>\n </div>\n\n @if (CaptureError) {\n <div class=\"mjo-alert mjo-alert--error\">\n <i class=\"fa-solid fa-circle-exclamation\"></i>\n <div>\n <strong>Failed to capture payment:</strong> {{ CaptureError }}\n </div>\n </div>\n }\n\n <!-- ================================================================\n TAB 1: PAYMENT & ALLOCATION WORKBENCH\n ================================================================ -->\n @if (ActiveTab === 'payment') {\n <div class=\"mjo-ph-workbench\">\n\n <!-- LEFT COLUMN: THE MONEY & PAYER (380px) -->\n <aside class=\"mjo-ph-money-pane\">\n\n <!-- 1. Payer Card -->\n <div class=\"mjo-card\">\n <div class=\"mjo-card__header\">\n <div class=\"mjo-card__title\">\n <i class=\"fa-solid fa-user-tag\"></i> Who is paying?\n </div>\n </div>\n <div class=\"mjo-card__body\">\n <div class=\"mjo-ph-fields-stack\">\n <mj-form-field\n [Record]=\"record\"\n [ShowLabel]=\"true\"\n DisplayNameOverride=\"Organization\"\n FieldName=\"BillToOrganizationID\"\n Type=\"textbox\"\n LinkType=\"Record\"\n [EditMode]=\"ComposeMode\"\n [FormContext]=\"formContext\"\n (Navigate)=\"OnFormNavigate($event); OnPayerSelectionChanged()\">\n </mj-form-field>\n <mj-form-field\n [Record]=\"record\"\n [ShowLabel]=\"true\"\n DisplayNameOverride=\"Person\"\n FieldName=\"BillToPersonID\"\n Type=\"textbox\"\n LinkType=\"Record\"\n [EditMode]=\"ComposeMode\"\n [FormContext]=\"formContext\"\n (Navigate)=\"OnFormNavigate($event); OnPayerSelectionChanged()\">\n </mj-form-field>\n </div>\n @if (hasPayer) {\n <div class=\"mjo-payer-chip\">\n <i class=\"fa-solid fa-circle-check text-success\"></i>\n <span>{{ PayerDisplayName }}</span>\n @if (OpenOrders.length > 0) {\n <span class=\"mjo-badge\">{{ OpenOrders.length }} unpaid orders</span>\n }\n </div>\n }\n </div>\n </div>\n\n <!-- 2. Payment Details Card -->\n <div class=\"mjo-card\">\n <div class=\"mjo-card__header\">\n <div class=\"mjo-card__title\">\n <i class=\"fa-solid fa-money-check-dollar\"></i> Payment details\n </div>\n </div>\n <div class=\"mjo-card__body\">\n <div class=\"mjo-field\">\n <label class=\"mjo-label\">Amount received ($)</label>\n <div class=\"mjo-input-money-wrap\">\n <span class=\"mjo-currency-prefix\">$</span>\n <input\n type=\"number\"\n class=\"mj-input is-num mjo-input--money\"\n [ngModel]=\"record.Amount\"\n (ngModelChange)=\"OnAmountChanged($event)\"\n [disabled]=\"!ComposeMode\"\n placeholder=\"0.00\"\n step=\"0.01\"\n />\n </div>\n </div>\n\n <div class=\"mjo-ph-fields-stack\">\n <mj-form-field\n [Record]=\"record\"\n [ShowLabel]=\"true\"\n DisplayNameOverride=\"Payment Date\"\n FieldName=\"PaymentDate\"\n Type=\"datepicker\"\n [EditMode]=\"ComposeMode\"\n [FormContext]=\"formContext\"\n (Navigate)=\"OnFormNavigate($event)\">\n </mj-form-field>\n\n <div class=\"mjo-field\">\n <label class=\"mjo-label\">Payment Type <span class=\"mjo-required-mark\" title=\"Required to capture and book\">*</span></label>\n @if (ComposeMode && PaymentTypes.length > 0) {\n <select class=\"mj-input\" [class.mjo-input--invalid]=\"PaymentTypeMissing\" [ngModel]=\"record.PaymentTypeID\" (ngModelChange)=\"OnPaymentTypeSelected($event)\">\n <option [ngValue]=\"null\">Select payment type\u2026</option>\n @for (pt of PaymentTypes; track pt.ID) {\n <option [value]=\"pt.ID\">{{ pt.Name }}</option>\n }\n </select>\n @if (PaymentTypeMissing) {\n <div class=\"mjo-field-hint mjo-field-hint--error\">Required before Capture & Book.</div>\n }\n } @else {\n <mj-form-field\n [Record]=\"record\"\n [ShowLabel]=\"false\"\n FieldName=\"PaymentTypeID\"\n Type=\"textbox\"\n LinkType=\"Record\"\n [EditMode]=\"ComposeMode\"\n [FormContext]=\"formContext\"\n (Navigate)=\"OnFormNavigate($event)\">\n </mj-form-field>\n }\n </div>\n\n <!-- TENDER-SPECIFIC INSTRUMENT CAPTURE (PaymentDetail) -->\n @if (PaymentTypeCode === 'check' || (SelectedPaymentType?.RequiresReference && !RequiresInstrument)) {\n <div class=\"mjo-instrument-box\">\n <div class=\"mjo-instrument-box__title\">\n <i class=\"fa-solid fa-money-check\"></i> Check details\n </div>\n <div class=\"mjo-instrument-box__grid\">\n <div class=\"mjo-field\">\n <label class=\"mjo-label\">Check \u2116 <span class=\"text-danger\">*</span></label>\n <input type=\"text\" class=\"mj-input font-mono\" [(ngModel)]=\"ReferenceNumber\" [disabled]=\"!ComposeMode\" placeholder=\"e.g. 10428\" autocomplete=\"off\" />\n </div>\n <div class=\"mjo-field\">\n <label class=\"mjo-label\">Check Date</label>\n <input type=\"date\" class=\"mj-input\" [(ngModel)]=\"InstrumentDateInput\" [disabled]=\"!ComposeMode\" />\n </div>\n <div class=\"mjo-field col-span-full\">\n <label class=\"mjo-label\">Bank Name</label>\n <input type=\"text\" class=\"mj-input\" [(ngModel)]=\"BankName\" [disabled]=\"!ComposeMode\" placeholder=\"e.g. Chase, Bank of America\" />\n </div>\n </div>\n </div>\n } @else if (PaymentTypeCode === 'card' || RequiresInstrument) {\n <div class=\"mjo-instrument-box\">\n <div class=\"mjo-instrument-box__title\">\n <i class=\"fa-solid fa-credit-card\"></i> Card instrument details\n </div>\n <div class=\"mjo-instrument-box__grid\">\n <div class=\"mjo-field\">\n <label class=\"mjo-label\">Card Brand</label>\n <select class=\"mj-input\" [(ngModel)]=\"CardBrand\" [disabled]=\"!ComposeMode\">\n <option value=\"\">Select Brand</option>\n <option value=\"Visa\">Visa</option>\n <option value=\"MasterCard\">MasterCard</option>\n <option value=\"American Express\">American Express</option>\n <option value=\"Discover\">Discover</option>\n <option value=\"Other\">Other</option>\n </select>\n </div>\n <div class=\"mjo-field\">\n <label class=\"mjo-label\">Last 4 Digits</label>\n <input type=\"text\" class=\"mj-input font-mono\" maxlength=\"4\" [(ngModel)]=\"CardLast4\" [disabled]=\"!ComposeMode\" placeholder=\"4242\" />\n </div>\n <div class=\"mjo-field\">\n <label class=\"mjo-label\">Expiry (MM / YYYY)</label>\n <div class=\"flex gap-2\">\n <input type=\"number\" min=\"1\" max=\"12\" class=\"mj-input font-mono w-16\" [(ngModel)]=\"CardExpMonth\" [disabled]=\"!ComposeMode\" placeholder=\"MM\" />\n <input type=\"number\" min=\"2025\" max=\"2045\" class=\"mj-input font-mono w-24\" [(ngModel)]=\"CardExpYear\" [disabled]=\"!ComposeMode\" placeholder=\"YYYY\" />\n </div>\n </div>\n <div class=\"mjo-field\">\n <label class=\"mjo-label\">Cardholder Name</label>\n <input type=\"text\" class=\"mj-input\" [(ngModel)]=\"CardHolderName\" [disabled]=\"!ComposeMode\" placeholder=\"Name on card\" />\n </div>\n <div class=\"mjo-field col-span-full\">\n <label class=\"mjo-label\">Auth / Approval \u2116</label>\n <input type=\"text\" class=\"mj-input\" [(ngModel)]=\"ReferenceNumber\" [disabled]=\"!ComposeMode\" placeholder=\"e.g. AUTH-98210\" />\n </div>\n </div>\n </div>\n } @else if (PaymentTypeCode === 'ach') {\n <div class=\"mjo-instrument-box\">\n <div class=\"mjo-instrument-box__title\">\n <i class=\"fa-solid fa-building-columns\"></i> Bank transfer / ACH details\n </div>\n <div class=\"mjo-instrument-box__grid\">\n <div class=\"mjo-field\">\n <label class=\"mjo-label\">Bank Name</label>\n <input type=\"text\" class=\"mj-input\" [(ngModel)]=\"BankName\" [disabled]=\"!ComposeMode\" placeholder=\"e.g. Wells Fargo\" />\n </div>\n <div class=\"mjo-field\">\n <label class=\"mjo-label\">Account Type</label>\n <select class=\"mj-input\" [(ngModel)]=\"BankAccountType\" [disabled]=\"!ComposeMode\">\n <option [ngValue]=\"null\">Select Type</option>\n <option value=\"Checking\">Checking</option>\n <option value=\"Savings\">Savings</option>\n </select>\n </div>\n <div class=\"mjo-field\">\n <label class=\"mjo-label\">Routing Last 4</label>\n <input type=\"text\" class=\"mj-input font-mono\" maxlength=\"4\" [(ngModel)]=\"RoutingLast4\" [disabled]=\"!ComposeMode\" placeholder=\"1234\" />\n </div>\n <div class=\"mjo-field\">\n <label class=\"mjo-label\">Account Last 4</label>\n <input type=\"text\" class=\"mj-input font-mono\" maxlength=\"4\" [(ngModel)]=\"AccountLast4\" [disabled]=\"!ComposeMode\" placeholder=\"5678\" />\n </div>\n <div class=\"mjo-field col-span-full\">\n <label class=\"mjo-label\">Trace / Reference \u2116</label>\n <input type=\"text\" class=\"mj-input\" [(ngModel)]=\"ReferenceNumber\" [disabled]=\"!ComposeMode\" placeholder=\"Trace #\" />\n </div>\n </div>\n </div>\n } @else if (RequiresReference) {\n <div class=\"mjo-instrument-box\">\n <div class=\"mjo-instrument-box__title\">\n <i class=\"fa-solid fa-receipt\"></i> Reference details\n </div>\n <div class=\"mjo-field\">\n <label class=\"mjo-label\">Reference / Wire Confirmation \u2116 <span class=\"text-danger\">*</span></label>\n <input type=\"text\" class=\"mj-input\" [(ngModel)]=\"ReferenceNumber\" [disabled]=\"!ComposeMode\" placeholder=\"Confirmation or transfer id\" />\n </div>\n </div>\n }\n\n <mj-form-field\n [Record]=\"record\"\n [ShowLabel]=\"true\"\n DisplayNameOverride=\"Receiving Co.\"\n FieldName=\"ReceivingCompanyID\"\n Type=\"textbox\"\n LinkType=\"Record\"\n [EditMode]=\"ComposeMode\"\n [FormContext]=\"formContext\"\n (Navigate)=\"OnFormNavigate($event)\">\n </mj-form-field>\n\n <mj-form-field\n [Record]=\"record\"\n [ShowLabel]=\"true\"\n DisplayNameOverride=\"Processing Fee\"\n FieldName=\"ProcessingFeeAmount\"\n Type=\"number\"\n [EditMode]=\"ComposeMode\"\n [FormContext]=\"formContext\"\n (Navigate)=\"OnFormNavigate($event)\">\n </mj-form-field>\n </div>\n\n <div class=\"mjo-net-calc\">\n <span class=\"mjo-net-calc__label\">Net Settlement Amount</span>\n <span class=\"mjo-net-calc__val\">{{ FormattedNetAmount }}</span>\n </div>\n </div>\n </div>\n\n </aside>\n\n <!-- RIGHT COLUMN: ALLOCATION WORKBENCH -->\n <main class=\"mjo-ph-alloc-pane\">\n\n <!-- 1. Balance Status Hero Strip -->\n <div class=\"mjo-alloc-hero\" [class.is-balanced]=\"IsAllocationBalanced\" [class.is-warning]=\"!IsAllocationBalanced && UnallocatedRemainder > 0\" [class.is-error]=\"UnallocatedRemainder < 0\">\n <div class=\"mjo-alloc-hero__stats\">\n <div class=\"mjo-alloc-stat\">\n <span class=\"mjo-alloc-stat__kicker\">Payment Received</span>\n <span class=\"mjo-alloc-stat__val\">${{ (record.Amount || 0).toFixed(2) }}</span>\n </div>\n <div class=\"mjo-alloc-stat__op\"><i class=\"fa-solid fa-minus\"></i></div>\n <div class=\"mjo-alloc-stat\">\n <span class=\"mjo-alloc-stat__kicker\">Allocated</span>\n <span class=\"mjo-alloc-stat__val\">${{ TotalAllocated.toFixed(2) }}</span>\n </div>\n <div class=\"mjo-alloc-stat__op\"><i class=\"fa-solid fa-equals\"></i></div>\n <div class=\"mjo-alloc-stat\">\n <span class=\"mjo-alloc-stat__kicker\">Unallocated Remainder</span>\n <span class=\"mjo-alloc-stat__val\" [class.text-danger]=\"UnallocatedRemainder < 0\">\n ${{ Math.abs(UnallocatedRemainder).toFixed(2) }}\n </span>\n </div>\n </div>\n\n <div class=\"mjo-alloc-hero__message\">\n @if (IsAllocationBalanced) {\n <i class=\"fa-solid fa-circle-check text-success\"></i>\n <span>Allocations tie 100% to payment received. Ready to capture and book.</span>\n } @else if (UnallocatedRemainder > 0) {\n <i class=\"fa-solid fa-circle-info text-warning\"></i>\n <span>${{ UnallocatedRemainder.toFixed(2) }} remaining to allocate before capturing.</span>\n } @else {\n <i class=\"fa-solid fa-triangle-exclamation text-danger\"></i>\n <span>Over-allocated by ${{ Math.abs(UnallocatedRemainder).toFixed(2) }}. Please adjust amounts.</span>\n }\n </div>\n </div>\n <!-- 2. Allocation Toolbar -->\n <div class=\"mjo-alloc-toolbar\">\n <div class=\"mjo-alloc-toolbar__left\">\n <h2 class=\"mjo-alloc-toolbar__title\">\n <i class=\"fa-solid fa-receipt\"></i> Open orders\n </h2>\n @if (OpenOrders.length > 0) {\n <span class=\"mjo-badge\">{{ FilteredOpenOrders.length }} available</span>\n }\n </div>\n\n @if (!IsCaptured && OpenOrders.length > 0) {\n <div class=\"mjo-alloc-toolbar__right\">\n <div class=\"mjo-search-input-wrap\">\n <i class=\"fa-solid fa-magnifying-glass\"></i>\n <input type=\"text\" class=\"mjo-input mjo-input--sm\" [(ngModel)]=\"SearchQuery\" placeholder=\"Filter orders\u2026\" />\n </div>\n <button type=\"button\" class=\"mjo-btn mjo-btn--secondary mjo-btn--sm\" (click)=\"AutoApplyOldestFirst()\">\n <i class=\"fa-solid fa-wand-magic-sparkles\"></i> Auto-apply oldest\n </button>\n <button type=\"button\" class=\"mjo-btn mjo-btn--outline mjo-btn--sm\" (click)=\"ClearAllocations()\">\n <i class=\"fa-solid fa-eraser\"></i> Clear all\n </button>\n </div>\n }\n </div>\n\n <!-- 3. Open Orders & Order Lines Allocation Table -->\n <div class=\"mjo-card mjo-card--table\">\n @if (LoadingOpenOrders) {\n <div class=\"mjo-empty-state\">\n <i class=\"fa-solid fa-spinner fa-spin fa-2x text-muted\"></i>\n <p>Loading open orders\u2026</p>\n </div>\n } @else if (OpenOrders.length === 0) {\n <div class=\"mjo-empty-state\">\n <i class=\"fa-solid fa-receipt fa-3x text-muted\"></i>\n <h3>No unpaid orders found</h3>\n <p>There are zero open unpaid orders. Any recorded payment will be retained as unallocated credit.</p>\n </div>\n } @else {\n <div class=\"mjo-table-responsive\">\n <table class=\"mjo-table\">\n <thead>\n <tr>\n <th class=\"w-8\"></th>\n @if (!hasPayer) {\n <th>Customer</th>\n }\n <th>Order \u2116</th>\n <th>Date</th>\n <th>Due</th>\n <th>Company</th>\n <th class=\"text-right\">Gross</th>\n <th class=\"text-right\">Open Balance</th>\n <th class=\"text-right w-36\">Apply Amount</th>\n <th class=\"text-right\">Leaves Balance</th>\n <th class=\"w-24\"></th>\n </tr>\n </thead>\n <tbody>\n @for (order of FilteredOpenOrders; track order.ID) {\n <tr class=\"mjo-order-row\" [class.is-expanded]=\"IsOrderExpanded(order.ID || '')\">\n <td>\n <button type=\"button\" class=\"mjo-icon-btn\" (click)=\"ToggleOrderExpanded(order.ID || '')\" title=\"Toggle line items\">\n <i class=\"fa-solid\" [class.fa-chevron-down]=\"IsOrderExpanded(order.ID || '')\" [class.fa-chevron-right]=\"!IsOrderExpanded(order.ID || '')\"></i>\n </button>\n </td>\n @if (!hasPayer) {\n <td class=\"font-bold\">{{ order.BillToOrganization || order.BillToPerson || '\u2014' }}</td>\n }\n <td>\n <button type=\"button\" class=\"mjo-link\" (click)=\"OpenOrderRecord(order, $event)\">\n <strong>{{ order.OrderNumber }}</strong>\n </button>\n @if (order.Description) {\n <div class=\"mjo-subtext\">{{ order.Description }}</div>\n }\n </td>\n <td>{{ order.OrderDate ? FormatOrderDueDate(order) : '\u2014' }}</td>\n <td>\n @if (GetOrderDaysOverdue(order) > 0) {\n <span class=\"mjo-badge mjo-badge--error\">{{ GetOrderDaysOverdue(order) }}d overdue</span>\n } @else {\n <span>{{ FormatOrderDueDate(order) }}</span>\n }\n </td>\n <td>\n <span class=\"mjo-company-pill\">{{ order.Company || 'Default' }}</span>\n </td>\n <td class=\"text-right font-mono\">${{ (order.TotalGross || 0).toFixed(2) }}</td>\n <td class=\"text-right font-mono font-bold\">${{ (order.Balance ?? order.TotalGross ?? 0).toFixed(2) }}</td>\n <td class=\"text-right\">\n <div class=\"mjo-apply-input-wrap\" [class.is-derived]=\"HasLineAllocations(order.ID || '')\">\n <span class=\"mjo-apply-dollar\">$</span>\n <input\n type=\"number\"\n class=\"mjo-input mjo-input--sm mjo-input--num\"\n [ngModel]=\"GetOrderAllocation(order.ID || '')\"\n (ngModelChange)=\"SetOrderAllocation(order.ID || '', $event)\"\n [disabled]=\"IsCaptured || HasLineAllocations(order.ID || '')\"\n step=\"0.01\"\n min=\"0\"\n [title]=\"HasLineAllocations(order.ID || '') ? 'Order allocation is driven by line item allocations below' : 'Enter amount to allocate to order'\"\n />\n </div>\n @if (HasLineAllocations(order.ID || '')) {\n <div class=\"mjo-subtext text-info\">\n <i class=\"fa-solid fa-layer-group\"></i> Lines allocated\n </div>\n }\n </td>\n <td class=\"text-right font-mono\" [class.text-muted]=\"CalculateLeavesBalance(order) === 0\">\n ${{ CalculateLeavesBalance(order).toFixed(2) }}\n </td>\n <td class=\"text-right\">\n @if (!IsCaptured) {\n <button\n type=\"button\"\n class=\"mjo-btn mjo-btn--outline mjo-btn--sm\"\n (click)=\"FullPayOrder(order)\"\n [disabled]=\"(order.Balance ?? order.TotalGross ?? 0) <= 0\"\n >\n Pay in Full\n </button>\n }\n </td>\n </tr>\n\n <!-- EXPANDED CHILD ROW: INDIVIDUAL ORDER LINES -->\n @if (IsOrderExpanded(order.ID || '')) {\n <tr class=\"mjo-lines-row\">\n <td [attr.colspan]=\"hasPayer ? 10 : 11\" class=\"p-0\">\n <div class=\"mjo-nested-lines-pane\">\n <div class=\"mjo-nested-lines-header\">\n <i class=\"fa-solid fa-layer-group\"></i>\n <span>Order Line Items (Targeted Line Allocations)</span>\n </div>\n <table class=\"mjo-nested-table\">\n <thead>\n <tr>\n <th>#</th>\n <th>Product</th>\n <th class=\"text-right\">Unit Price</th>\n <th class=\"text-right\">Gross</th>\n <th class=\"text-right w-36\">Line Allocation</th>\n <th class=\"w-20\"></th>\n </tr>\n </thead>\n <tbody>\n @for (line of GetOrderLines(order.ID || ''); track line.ID) {\n <tr>\n <td>{{ line.LineNumber }}</td>\n <td>\n <strong>{{ line.Product || 'Line Item' }}</strong>\n </td>\n <td class=\"text-right font-mono\">${{ (line.UnitPrice || 0).toFixed(2) }}</td>\n <td class=\"text-right font-mono\">${{ (line.LineTotalGross || 0).toFixed(2) }}</td>\n <td class=\"text-right\">\n <div class=\"mjo-apply-input-wrap\">\n <span class=\"mjo-apply-dollar\">$</span>\n <input\n type=\"number\"\n class=\"mjo-input mjo-input--xs mjo-input--num\"\n [ngModel]=\"GetLineAllocation(line.ID || '')\"\n (ngModelChange)=\"SetLineAllocation(line.ID || '', $event, order.ID)\"\n [disabled]=\"IsCaptured\"\n step=\"0.01\"\n min=\"0\"\n />\n </div>\n </td>\n <td class=\"text-right\">\n @if (!IsCaptured) {\n <button type=\"button\" class=\"mjo-btn mjo-btn--outline mjo-btn--xs\" (click)=\"FullPayLine(order, line)\">\n Line Pay\n </button>\n }\n </td>\n </tr>\n }\n </tbody>\n </table>\n </div>\n </td>\n </tr>\n }\n }\n </tbody>\n </table>\n </div>\n }\n </div>\n\n </main>\n\n </div>\n }\n\n <!-- ================================================================\n TAB 2: ACCOUNTING & GENERAL LEDGER (CAPTURED PAYMENTS)\n ================================================================ -->\n @if (ActiveTab === 'accounting') {\n <div class=\"mjo-ph-tab-body\">\n <div class=\"mjo-accounting-header\">\n <div>\n <h2><i class=\"fa-solid fa-book\"></i> General Ledger Postings</h2>\n <p class=\"text-muted\">Double-entry balanced accounting entries booked across operating and receivable accounts.</p>\n </div>\n <div class=\"mjo-view-toggle\">\n <button type=\"button\" class=\"mjo-toggle-btn\" [class.is-active]=\"AccountingView === 'summary'\" (click)=\"SetAccountingView('summary')\">\n Summary (Rolled-up)\n </button>\n <button type=\"button\" class=\"mjo-toggle-btn\" [class.is-active]=\"AccountingView === 'detail'\" (click)=\"SetAccountingView('detail')\">\n By Journal Entry\n </button>\n </div>\n </div>\n\n @if (AccountingView === 'summary') {\n @if (RollupLoading) {\n <div class=\"mjo-empty-state\">\n <i class=\"fa-solid fa-spinner fa-spin fa-2x text-muted\"></i>\n <p>Rolling up general ledger accounts\u2026</p>\n </div>\n } @else if (RollupError) {\n <div class=\"mjo-alert mjo-alert--error\">{{ RollupError }}</div>\n } @else if (RollupCards.length === 0) {\n <div class=\"mjo-empty-state\">\n <i class=\"fa-solid fa-book-open fa-3x text-muted\"></i>\n <h3>No journal entries booked yet</h3>\n <p>Journal entries are booked automatically upon capturing and settling the payment.</p>\n </div>\n } @else {\n <div class=\"mjo-gl-cards-grid\">\n @for (card of RollupCards; track card.CompanyID) {\n <div class=\"mjo-card mjo-card--gl\">\n <div class=\"mjo-card__header\">\n <div>\n <h3 class=\"mjo-card__title\">{{ card.Company }}</h3>\n <div class=\"mjo-subtext\">{{ card.Rows.length }} {{ card.Rows.length === 1 ? 'line' : 'lines' }}</div>\n </div>\n <span class=\"mjo-badge\" [class.mjo-badge--success]=\"CardIsBalanced(card)\" [class.mjo-badge--error]=\"!CardIsBalanced(card)\">\n {{ CardIsBalanced(card) ? 'Balanced' : 'Out of Balance' }}\n </span>\n </div>\n <div class=\"mjo-card__body p-0\">\n <table class=\"mjo-table mjo-table--compact\">\n <thead>\n <tr>\n <th>GL Account</th>\n <th>Name</th>\n <th class=\"text-right\">Debit</th>\n <th class=\"text-right\">Credit</th>\n </tr>\n </thead>\n <tbody>\n @for (row of card.Rows; track row.Key) {\n <tr>\n <td class=\"font-mono\">{{ row.AccountCode || '\u2014' }}</td>\n <td>\n <span>{{ row.AccountName }}</span>\n </td>\n <td class=\"text-right font-mono\">{{ row.Debit ? RollupAmount(row.Debit) : '\u2014' }}</td>\n <td class=\"text-right font-mono\">{{ row.Credit ? RollupAmount(row.Credit) : '\u2014' }}</td>\n </tr>\n }\n </tbody>\n <tfoot>\n <tr>\n <th colspan=\"2\">Total</th>\n <th class=\"text-right font-mono\">${{ card.TotalDebit.toFixed(2) }}</th>\n <th class=\"text-right font-mono\">${{ card.TotalCredit.toFixed(2) }}</th>\n </tr>\n </tfoot>\n </table>\n </div>\n </div>\n }\n </div>\n }\n } @else {\n @if (PaymentJournalEntryParams) {\n <mj-explorer-entity-data-grid\n [Params]=\"PaymentJournalEntryParams\"\n [AllowLoad]=\"true\"\n [ShowToolbar]=\"false\"\n (Navigate)=\"OnFormNavigate($event)\">\n </mj-explorer-entity-data-grid>\n }\n }\n </div>\n }\n\n <!-- ================================================================\n TAB 3: DETAILS & NOTES\n ================================================================ -->\n @if (ActiveTab === 'details') {\n <div class=\"mjo-ph-tab-body\">\n <div class=\"mjo-form-sections-grid\">\n\n <!-- Processing & Gateway Details -->\n <div class=\"mjo-card\">\n <div class=\"mjo-card__header\">\n <h3 class=\"mjo-card__title\"><i class=\"fa-solid fa-gears\"></i> Processing & Gateway Details</h3>\n </div>\n <div class=\"mjo-card__body mjo-form-grid-2\">\n <mj-form-field [Record]=\"record\" [ShowLabel]=\"true\" FieldName=\"PaymentProviderID\" Type=\"textbox\" LinkType=\"Record\" [EditMode]=\"EditMode\" [FormContext]=\"formContext\" (Navigate)=\"OnFormNavigate($event)\"></mj-form-field>\n <mj-form-field [Record]=\"record\" [ShowLabel]=\"true\" FieldName=\"PaymentIntentID\" Type=\"textbox\" LinkType=\"Record\" [EditMode]=\"EditMode\" [FormContext]=\"formContext\" (Navigate)=\"OnFormNavigate($event)\"></mj-form-field>\n <mj-form-field [Record]=\"record\" [ShowLabel]=\"true\" FieldName=\"PaymentDetailID\" Type=\"textbox\" LinkType=\"Record\" [EditMode]=\"EditMode\" [FormContext]=\"formContext\" (Navigate)=\"OnFormNavigate($event)\"></mj-form-field>\n <mj-form-field [Record]=\"record\" [ShowLabel]=\"true\" FieldName=\"ProviderChargeID\" Type=\"textbox\" [EditMode]=\"EditMode\" [FormContext]=\"formContext\"></mj-form-field>\n <mj-form-field [Record]=\"record\" [ShowLabel]=\"true\" FieldName=\"ProviderRefundID\" Type=\"textbox\" [EditMode]=\"EditMode\" [FormContext]=\"formContext\"></mj-form-field>\n <mj-form-field [Record]=\"record\" [ShowLabel]=\"true\" FieldName=\"IdempotencyKey\" Type=\"textbox\" [EditMode]=\"EditMode\" [FormContext]=\"formContext\"></mj-form-field>\n </div>\n </div>\n\n <!-- Reversal & Notes -->\n <div class=\"mjo-card\">\n <div class=\"mjo-card__header\">\n <h3 class=\"mjo-card__title\"><i class=\"fa-solid fa-note-sticky\"></i> Reversal Info & Notes</h3>\n </div>\n <div class=\"mjo-card__body mjo-form-grid-2\">\n <mj-form-field [Record]=\"record\" [ShowLabel]=\"true\" FieldName=\"ReversesPaymentHeaderID\" Type=\"textbox\" LinkType=\"Record\" [EditMode]=\"EditMode\" [FormContext]=\"formContext\" (Navigate)=\"OnFormNavigate($event)\"></mj-form-field>\n <mj-form-field [Record]=\"record\" [ShowLabel]=\"true\" FieldName=\"ReversalReason\" Type=\"textarea\" [EditMode]=\"EditMode\" [FormContext]=\"formContext\"></mj-form-field>\n <mj-form-field [Record]=\"record\" [ShowLabel]=\"true\" FieldName=\"Description\" Type=\"textarea\" [EditMode]=\"EditMode\" [FormContext]=\"formContext\"></mj-form-field>\n <mj-form-field [Record]=\"record\" [ShowLabel]=\"true\" FieldName=\"Notes\" Type=\"textarea\" [EditMode]=\"EditMode\" [FormContext]=\"formContext\"></mj-form-field>\n </div>\n </div>\n\n <!-- Audit Metadata -->\n <div class=\"mjo-card\">\n <div class=\"mjo-card__header\">\n <h3 class=\"mjo-card__title\"><i class=\"fa-solid fa-clock-rotate-left\"></i> System Metadata</h3>\n </div>\n <div class=\"mjo-card__body mjo-form-grid-2\">\n <mj-form-field [Record]=\"record\" [ShowLabel]=\"true\" FieldName=\"__mj_CreatedAt\" Type=\"textbox\" [EditMode]=\"false\" [FormContext]=\"formContext\"></mj-form-field>\n <mj-form-field [Record]=\"record\" [ShowLabel]=\"true\" FieldName=\"__mj_UpdatedAt\" Type=\"textbox\" [EditMode]=\"false\" [FormContext]=\"formContext\"></mj-form-field>\n </div>\n </div>\n\n </div>\n </div>\n }\n\n <!-- ================================================================\n TAB 4: RELATED RECORDS\n ================================================================ -->\n @if (ActiveTab === 'related') {\n <div class=\"mjo-ph-tab-body\">\n <mj-collapsible-panel\n SectionKey=\"mJBizAppsOrdersStoredValueTransactions\"\n SectionName=\"Stored Value & Account Credit Transactions\"\n Icon=\"fa fa-wallet\"\n Variant=\"related-entity\"\n [Form]=\"this\"\n [FormContext]=\"formContext\"\n [BadgeCount]=\"GetSectionRowCount('mJBizAppsOrdersStoredValueTransactions')\"\n [DefaultExpanded]=\"true\">\n <mj-explorer-entity-data-grid\n [Params]=\"BuildRelationshipViewParamsByEntityName('MJ_BizApps_Orders: Stored Value Transactions', 'RelatedPaymentID')\"\n [NewRecordValues]=\"NewRecordValues('MJ_BizApps_Orders: Stored Value Transactions', 'RelatedPaymentID')\"\n [AllowLoad]=\"true\"\n [ShowToolbar]=\"true\"\n (Navigate)=\"OnFormNavigate($event)\"\n (AfterDataLoad)=\"SetSectionRowCount('mJBizAppsOrdersStoredValueTransactions', $event.totalRowCount)\">\n </mj-explorer-entity-data-grid>\n </mj-collapsible-panel>\n\n <mj-collapsible-panel\n SectionKey=\"mJBizAppsOrdersSubscriptionEvents\"\n SectionName=\"Subscription Billing Events\"\n Icon=\"fa fa-history\"\n Variant=\"related-entity\"\n [Form]=\"this\"\n [FormContext]=\"formContext\"\n [BadgeCount]=\"GetSectionRowCount('mJBizAppsOrdersSubscriptionEvents')\"\n [DefaultExpanded]=\"false\">\n <mj-explorer-entity-data-grid\n [Params]=\"BuildRelationshipViewParamsByEntityName('MJ_BizApps_Orders: Subscription Events', 'PaymentHeaderID')\"\n [NewRecordValues]=\"NewRecordValues('MJ_BizApps_Orders: Subscription Events', 'PaymentHeaderID')\"\n [AllowLoad]=\"true\"\n [ShowToolbar]=\"true\"\n (Navigate)=\"OnFormNavigate($event)\"\n (AfterDataLoad)=\"SetSectionRowCount('mJBizAppsOrdersSubscriptionEvents', $event.totalRowCount)\">\n </mj-explorer-entity-data-grid>\n </mj-collapsible-panel>\n\n <mj-collapsible-panel\n SectionKey=\"mJBizAppsOrdersPaymentHeaders\"\n SectionName=\"Linked Reversal & Refund Payment Records\"\n Icon=\"fa fa-rotate-left\"\n Variant=\"related-entity\"\n [Form]=\"this\"\n [FormContext]=\"formContext\"\n [BadgeCount]=\"GetSectionRowCount('mJBizAppsOrdersPaymentHeaders')\"\n [DefaultExpanded]=\"false\">\n <mj-explorer-entity-data-grid\n [Params]=\"BuildRelationshipViewParamsByEntityName('MJ_BizApps_Orders: Payment Headers', 'ReversesPaymentHeaderID')\"\n [NewRecordValues]=\"NewRecordValues('MJ_BizApps_Orders: Payment Headers', 'ReversesPaymentHeaderID')\"\n [AllowLoad]=\"true\"\n [ShowToolbar]=\"true\"\n (Navigate)=\"OnFormNavigate($event)\"\n (AfterDataLoad)=\"SetSectionRowCount('mJBizAppsOrdersPaymentHeaders', $event.totalRowCount)\">\n </mj-explorer-entity-data-grid>\n </mj-collapsible-panel>\n </div>\n }\n\n</mj-record-form-container>\n}\n", styles: ["/* ============================================================================\n BizApps Orders \u2014 Custom Payment Header Form Component Styles\n Uses MemberJunction semantic tokens for dark and light theme harmony.\n ============================================================================ */\n\n:host {\n display: block;\n width: 100%;\n}\n\n/* \u2500\u2500 1. Hero Header Banner \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.mjo-ph-hero {\n background: var(--mj-bg-surface-card, #ffffff);\n border: 1px solid var(--mj-border-default, #e2e8f0);\n border-radius: var(--mj-radius-lg, 12px);\n padding: var(--mj-space-4, 16px) var(--mj-space-5, 20px);\n box-shadow: 0 1px 3px rgba(0, 0, 0, 0.04);\n margin-bottom: var(--mj-space-4, 16px);\n}\n\n.mjo-ph-hero__top {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: var(--mj-space-4, 16px);\n flex-wrap: wrap;\n}\n\n.mjo-ph-who {\n display: flex;\n align-items: center;\n gap: var(--mj-space-4, 16px);\n}\n\n.mjo-ph-avatar {\n width: 48px;\n height: 48px;\n border-radius: var(--mj-radius-md, 8px);\n background: linear-gradient(135deg, #16a34a 0%, #15803d 100%);\n color: #ffffff;\n display: flex;\n align-items: center;\n justify-content: center;\n font-size: 20px;\n box-shadow: 0 4px 10px rgba(22, 163, 74, 0.25);\n flex-shrink: 0;\n}\n\n.mjo-ph-avatar.is-reversal {\n background: linear-gradient(135deg, #9333ea 0%, #7e22ce 100%);\n box-shadow: 0 4px 10px rgba(147, 51, 234, 0.25);\n}\n\n.mjo-ph-title-row {\n display: flex;\n align-items: center;\n gap: var(--mj-space-3, 10px);\n flex-wrap: wrap;\n}\n\n.mjo-ph-title {\n margin: 0;\n font-size: var(--mj-text-lg, 18px);\n font-weight: var(--mj-font-bold, 700);\n color: var(--mj-text-primary, #0f172a);\n letter-spacing: -0.01em;\n}\n\n.mjo-ph-sub {\n font-size: var(--mj-text-xs, 12px);\n color: var(--mj-text-muted, #64748b);\n margin-top: 2px;\n}\n\n.mjo-ph-hero__aside {\n display: flex;\n align-items: center;\n gap: var(--mj-space-5, 20px);\n flex-wrap: wrap;\n}\n\n.mjo-ph-money {\n display: flex;\n align-items: center;\n gap: var(--mj-space-4, 16px);\n padding: var(--mj-space-2, 6px) var(--mj-space-4, 14px);\n background: var(--mj-bg-surface-sunken, rgba(0, 0, 0, 0.03));\n border: 1px solid var(--mj-border-default, #e2e8f0);\n border-radius: var(--mj-radius-md, 8px);\n}\n\n.mjo-ph-money > div {\n display: flex;\n flex-direction: column;\n align-items: flex-end;\n}\n\n.mjo-ph-kicker {\n font-size: var(--mj-text-xs, 11px);\n font-weight: var(--mj-font-semibold, 600);\n text-transform: uppercase;\n letter-spacing: 0.04em;\n color: var(--mj-text-muted, #64748b);\n}\n\n.mjo-ph-amt {\n font-size: var(--mj-text-sm, 13px);\n font-weight: var(--mj-font-bold, 700);\n font-family: var(--mj-font-family-mono, monospace);\n color: var(--mj-text-primary, #0f172a);\n}\n\n.mjo-ph-amt.is-balanced {\n color: #16a34a;\n}\n\n.mjo-ph-amt.is-unbalanced {\n color: #d97706;\n}\n\n.mjo-ph-actions {\n display: flex;\n align-items: center;\n gap: var(--mj-space-2, 8px);\n}\n\n/* \u2500\u2500 2. Tab Navigation \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.mjo-ph-tabs {\n margin-bottom: var(--mj-space-4, 16px);\n}\n\n/* \u2500\u2500 3. 2-Column Workbench Layout \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.mjo-ph-workbench {\n display: flex;\n gap: var(--mj-space-4, 16px);\n align-items: flex-start;\n width: 100%;\n}\n\n.mjo-ph-money-pane {\n width: 380px;\n flex-shrink: 0;\n display: flex;\n flex-direction: column;\n gap: var(--mj-space-4, 16px);\n --mj-forms-field-label-width: 105px;\n --mj-forms-field-gap: 8px;\n}\n\n.mjo-ph-fields-stack {\n display: flex;\n flex-direction: column;\n gap: 4px;\n}\n\n.mjo-ph-fields-stack mj-form-field {\n --mj-forms-field-label-width: 105px;\n --mj-forms-field-gap: 8px;\n}\n\n.mjo-ph-alloc-pane {\n flex: 1;\n min-width: 0;\n display: flex;\n flex-direction: column;\n gap: var(--mj-space-4, 16px);\n}\n\n/* \u2500\u2500 4. Card Surfaces \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.mjo-card {\n background: var(--mj-bg-surface-card, #ffffff);\n border: 1px solid var(--mj-border-default, #e2e8f0);\n border-radius: var(--mj-radius-lg, 10px);\n box-shadow: var(--mj-shadow-xs, 0 1px 2px rgba(0, 0, 0, 0.04));\n overflow: hidden;\n}\n\n.mjo-card__header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: var(--mj-space-3, 12px) var(--mj-space-4, 16px);\n background: var(--mj-bg-surface-sunken, rgba(0, 0, 0, 0.02));\n border-bottom: 1px solid var(--mj-border-default, #e2e8f0);\n}\n\n.mjo-card__title {\n font-size: var(--mj-text-sm, 13px);\n font-weight: var(--mj-font-bold, 700);\n color: var(--mj-text-primary, #0f172a);\n display: flex;\n align-items: center;\n gap: var(--mj-space-2, 8px);\n}\n\n.mjo-card__body {\n padding: var(--mj-space-4, 16px);\n display: flex;\n flex-direction: column;\n gap: var(--mj-space-3, 12px);\n}\n\n.mjo-card__body.p-0 {\n padding: 0;\n}\n\n.mjo-field {\n display: flex;\n flex-direction: column;\n gap: 4px;\n}\n\n.mjo-label {\n font-size: var(--mj-text-xs, 12px);\n font-weight: var(--mj-font-semibold, 600);\n color: var(--mj-text-secondary, #94a3b8);\n}\n\n.mjo-input-money-wrap {\n position: relative;\n display: flex;\n align-items: center;\n width: 100%;\n}\n\n.mjo-currency-prefix {\n position: absolute;\n left: 14px;\n font-size: var(--mj-text-lg, 16px);\n font-weight: var(--mj-font-bold, 700);\n color: var(--mj-text-muted, #94a3b8);\n pointer-events: none;\n z-index: 2;\n}\n\n.mjo-input--money {\n padding-left: 30px !important;\n font-size: var(--mj-text-lg, 16px) !important;\n font-weight: var(--mj-font-bold, 700) !important;\n font-family: var(--mj-font-family-mono, monospace) !important;\n height: 42px !important;\n width: 100% !important;\n background: var(--mj-bg-surface-card, transparent) !important;\n color: var(--mj-text-primary, inherit) !important;\n border: 1px solid var(--mj-border-default, #334155) !important;\n border-radius: var(--mj-radius-md, 6px) !important;\n}\n\n.mjo-input--money:focus {\n border-color: var(--mj-brand-primary, #0076b6) !important;\n box-shadow: 0 0 0 2px rgba(0, 118, 182, 0.25) !important;\n}\n\n.mjo-net-calc {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 10px 14px;\n background: var(--mj-bg-surface-sunken, rgba(0, 0, 0, 0.2));\n border: 1px solid var(--mj-border-default, rgba(255, 255, 255, 0.08));\n border-radius: var(--mj-radius-md, 6px);\n margin-top: 4px;\n}\n\n.mjo-net-calc__label {\n font-size: var(--mj-text-xs, 12px);\n font-weight: var(--mj-font-semibold, 600);\n color: var(--mj-text-secondary, #94a3b8);\n}\n\n.mjo-net-calc__val {\n font-size: var(--mj-text-base, 15px);\n font-weight: var(--mj-font-bold, 700);\n font-family: var(--mj-font-family-mono, monospace);\n color: var(--mj-text-primary, #f8fafc);\n}\n\n.mjo-payer-chip {\n display: flex;\n align-items: center;\n gap: var(--mj-space-2, 8px);\n padding: 6px 10px;\n background: var(--mj-bg-surface-sunken, rgba(0, 0, 0, 0.03));\n border: 1px solid var(--mj-border-default, #e2e8f0);\n border-radius: var(--mj-radius-md, 6px);\n font-size: var(--mj-text-xs, 12px);\n font-weight: var(--mj-font-semibold, 600);\n}\n\n/* \u2500\u2500 5. Books Preview Card \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.mjo-card--books {\n border-color: rgba(0, 118, 182, 0.25);\n}\n\n\n\n/* \u2500\u2500 6. Allocation Hero Status Strip \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.mjo-alloc-hero {\n background: var(--mj-bg-surface-card, #ffffff);\n border: 1px solid var(--mj-border-default, #e2e8f0);\n border-radius: var(--mj-radius-lg, 12px);\n padding: var(--mj-space-3, 12px) var(--mj-space-4, 16px);\n display: flex;\n flex-direction: column;\n gap: var(--mj-space-2, 8px);\n}\n\n.mjo-alloc-hero.is-balanced {\n border-color: rgba(22, 163, 74, 0.35);\n background: rgba(22, 163, 74, 0.03);\n}\n\n.mjo-alloc-hero.is-warning {\n border-color: rgba(217, 119, 6, 0.35);\n background: rgba(217, 119, 6, 0.03);\n}\n\n.mjo-alloc-hero.is-error {\n border-color: rgba(220, 38, 38, 0.35);\n background: rgba(220, 38, 38, 0.03);\n}\n\n.mjo-alloc-hero__stats {\n display: flex;\n align-items: center;\n gap: var(--mj-space-4, 16px);\n flex-wrap: wrap;\n}\n\n.mjo-alloc-stat {\n display: flex;\n flex-direction: column;\n}\n\n.mjo-alloc-stat__kicker {\n font-size: 11px;\n font-weight: var(--mj-font-semibold, 600);\n text-transform: uppercase;\n letter-spacing: 0.04em;\n color: var(--mj-text-muted, #64748b);\n}\n\n.mjo-alloc-stat__val {\n font-size: var(--mj-text-base, 15px);\n font-weight: var(--mj-font-bold, 700);\n font-family: var(--mj-font-family-mono, monospace);\n color: var(--mj-text-primary, #0f172a);\n}\n\n.mjo-alloc-stat__op {\n font-size: 14px;\n color: var(--mj-text-muted, #94a3b8);\n}\n\n.mjo-alloc-hero__message {\n display: flex;\n align-items: center;\n gap: var(--mj-space-2, 8px);\n font-size: var(--mj-text-xs, 12px);\n font-weight: var(--mj-font-semibold, 600);\n padding-top: 6px;\n border-top: 1px solid var(--mj-border-default, #e2e8f0);\n}\n\n/* \u2500\u2500 7. Toolbar \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.mjo-alloc-toolbar {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: var(--mj-space-3, 12px);\n flex-wrap: wrap;\n}\n\n.mjo-alloc-toolbar__left {\n display: flex;\n align-items: center;\n gap: var(--mj-space-2, 8px);\n}\n\n.mjo-alloc-toolbar__title {\n margin: 0;\n font-size: var(--mj-text-sm, 14px);\n font-weight: var(--mj-font-bold, 700);\n color: var(--mj-text-primary, #0f172a);\n display: flex;\n align-items: center;\n gap: var(--mj-space-2, 8px);\n}\n\n.mjo-alloc-toolbar__right {\n display: flex;\n align-items: center;\n gap: var(--mj-space-2, 8px);\n}\n\n.mjo-search-input-wrap {\n position: relative;\n display: flex;\n align-items: center;\n}\n\n.mjo-search-input-wrap i {\n position: absolute;\n left: 8px;\n font-size: 11px;\n color: var(--mj-text-muted, #94a3b8);\n}\n\n.mjo-search-input-wrap input {\n padding-left: 24px;\n width: 160px;\n}\n\n/* \u2500\u2500 8. Orders & Allocations Table \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.mjo-table-responsive {\n overflow-x: auto;\n width: 100%;\n}\n\n/* Required-field affordance: the marker sits on the label, the invalid state and hint appear\n only after a capture is attempted without the field. Say it before the server has to. */\n.mjo-required-mark {\n color: var(--mj-status-error, #dc2626);\n font-weight: var(--mj-font-bold, 700);\n}\n\n.mjo-input--invalid {\n border-color: var(--mj-status-error, #dc2626) !important;\n box-shadow: 0 0 0 2px rgba(220, 38, 38, 0.12);\n}\n\n.mjo-field-hint--error {\n margin-top: 4px;\n font-size: var(--mj-text-xs, 12px);\n color: var(--mj-status-error, #dc2626);\n}\n\n.mjo-table {\n width: 100%;\n border-collapse: collapse;\n font-size: var(--mj-text-xs, 12px);\n}\n\n.mjo-table th {\n background: var(--mj-bg-surface-header, rgba(0, 0, 0, 0.02));\n color: var(--mj-text-muted, #64748b);\n font-weight: var(--mj-font-semibold, 600);\n text-transform: uppercase;\n letter-spacing: 0.04em;\n font-size: 11px;\n padding: 8px 12px;\n border-bottom: 1px solid var(--mj-border-default, #e2e8f0);\n text-align: left;\n}\n\n.mjo-table td {\n padding: 8px 12px;\n border-bottom: 1px solid var(--mj-border-default, #e2e8f0);\n vertical-align: middle;\n color: var(--mj-text-primary, #0f172a);\n}\n\n/* Headers and action buttons never wrap: \"Pay in Full\" was folding onto three lines inside a\n crushed cell while the wrapper's overflow-x sat unused. Let the table scroll instead. */\n.mjo-table th,\n.mjo-table .mjo-btn,\n.mjo-table .font-mono {\n white-space: nowrap;\n}\n\n.mjo-order-row:hover {\n background: var(--mj-bg-surface-hover, rgba(0, 0, 0, 0.02));\n}\n\n.mjo-order-row.is-expanded {\n background: rgba(0, 118, 182, 0.02);\n}\n\n.mjo-apply-input-wrap {\n position: relative;\n display: inline-flex;\n align-items: center;\n width: 100%;\n max-width: 110px;\n}\n\n.mjo-apply-dollar {\n position: absolute;\n left: 8px;\n font-size: 11px;\n font-weight: var(--mj-font-bold, 700);\n color: var(--mj-text-muted, #64748b);\n pointer-events: none;\n}\n\n.mjo-apply-input-wrap input {\n padding-left: 18px;\n}\n\n.mjo-nested-lines-pane {\n background: var(--mj-bg-surface-sunken, rgba(0, 0, 0, 0.02));\n border-top: 1px solid var(--mj-border-default, #e2e8f0);\n border-bottom: 2px solid var(--mj-border-default, #cbd5e1);\n padding: var(--mj-space-3, 10px) var(--mj-space-4, 16px);\n}\n\n.mjo-nested-lines-header {\n display: flex;\n align-items: center;\n gap: var(--mj-space-2, 8px);\n font-size: 11px;\n font-weight: var(--mj-font-bold, 700);\n text-transform: uppercase;\n letter-spacing: 0.04em;\n color: var(--mj-text-secondary, #475569);\n margin-bottom: var(--mj-space-2, 6px);\n}\n\n.mjo-nested-table {\n width: 100%;\n border-collapse: collapse;\n font-size: var(--mj-text-xs, 12px);\n background: var(--mj-bg-surface-card, #ffffff);\n border: 1px solid var(--mj-border-default, #e2e8f0);\n border-radius: var(--mj-radius-md, 6px);\n overflow: hidden;\n}\n\n.mjo-nested-table th {\n background: rgba(0, 0, 0, 0.02);\n font-size: 10.5px;\n font-weight: var(--mj-font-semibold, 600);\n padding: 6px 10px;\n border-bottom: 1px solid var(--mj-border-default, #e2e8f0);\n}\n\n.mjo-nested-table td {\n padding: 6px 10px;\n border-bottom: 1px solid var(--mj-border-default, #e2e8f0);\n}\n\n/* \u2500\u2500 9. Accounting Postings View \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.mjo-ph-tab-body {\n display: flex;\n flex-direction: column;\n gap: var(--mj-space-4, 16px);\n}\n\n.mjo-accounting-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: var(--mj-space-4, 16px);\n flex-wrap: wrap;\n}\n\n.mjo-accounting-header h2 {\n margin: 0;\n font-size: var(--mj-text-base, 15px);\n font-weight: var(--mj-font-bold, 700);\n color: var(--mj-text-primary, #0f172a);\n display: flex;\n align-items: center;\n gap: var(--mj-space-2, 8px);\n}\n\n.mjo-accounting-header p {\n margin: 2px 0 0 0;\n font-size: var(--mj-text-xs, 12px);\n}\n\n.mjo-view-toggle {\n display: flex;\n background: var(--mj-bg-surface-sunken, rgba(0, 0, 0, 0.04));\n border: 1px solid var(--mj-border-default, #e2e8f0);\n border-radius: var(--mj-radius-md, 6px);\n padding: 2px;\n}\n\n.mjo-toggle-btn {\n border: none;\n background: transparent;\n padding: 4px 10px;\n font-size: var(--mj-text-xs, 12px);\n font-weight: var(--mj-font-semibold, 600);\n color: var(--mj-text-secondary, #475569);\n border-radius: var(--mj-radius-sm, 4px);\n cursor: pointer;\n transition: all 0.15s ease;\n}\n\n.mjo-toggle-btn.is-active {\n background: var(--mj-bg-surface-card, #ffffff);\n color: var(--mj-text-primary, #0f172a);\n box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05);\n}\n\n.mjo-gl-cards-grid {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(360px, 1fr));\n gap: var(--mj-space-4, 16px);\n}\n\n.mjo-table--compact th, .mjo-table--compact td {\n padding: 6px 10px;\n}\n\n.mjo-table tfoot th {\n background: var(--mj-bg-surface-header, rgba(0, 0, 0, 0.02));\n border-top: 2px solid var(--mj-border-default, #cbd5e1);\n font-size: var(--mj-text-xs, 12px);\n font-weight: var(--mj-font-bold, 700);\n}\n\n.is-intercompany {\n background: rgba(0, 118, 182, 0.04);\n}\n\n.mjo-ic-tag {\n display: inline-block;\n font-size: 10px;\n font-weight: var(--mj-font-bold, 700);\n text-transform: uppercase;\n color: #0284c7;\n background: rgba(2, 132, 199, 0.12);\n padding: 1px 5px;\n border-radius: 3px;\n margin-left: 6px;\n}\n\n/* \u2500\u2500 10. Common UI Elements & Chips \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.mjo-btn {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n gap: var(--mj-space-2, 6px);\n height: 34px;\n padding: 0 14px;\n font-size: var(--mj-text-xs, 12px);\n font-weight: var(--mj-font-semibold, 600);\n border-radius: var(--mj-radius-md, 6px);\n cursor: pointer;\n border: 1px solid transparent;\n transition: all 0.15s ease;\n}\n\n.mjo-btn--primary {\n background: var(--mj-brand-primary, #0076b6);\n color: #ffffff;\n}\n\n.mjo-btn--primary:hover:not(:disabled) {\n background: #006094;\n}\n\n.mjo-btn--secondary {\n background: var(--mj-bg-surface-sunken, rgba(0, 0, 0, 0.05));\n border-color: var(--mj-border-default, #cbd5e1);\n color: var(--mj-text-primary, #0f172a);\n}\n\n.mjo-btn--secondary:hover:not(:disabled) {\n background: rgba(0, 0, 0, 0.08);\n}\n\n.mjo-btn--outline {\n background: transparent;\n border-color: var(--mj-border-default, #cbd5e1);\n color: var(--mj-text-secondary, #475569);\n}\n\n.mjo-btn--outline:hover:not(:disabled) {\n border-color: var(--mj-brand-primary, #0076b6);\n color: var(--mj-brand-primary, #0076b6);\n}\n\n.mjo-btn--sm {\n height: 30px;\n padding: 0 10px;\n font-size: 11.5px;\n}\n\n.mjo-btn--xs {\n height: 24px;\n padding: 0 8px;\n font-size: 11px;\n}\n\n.mjo-btn:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n}\n\n.mjo-icon-btn {\n border: none;\n background: transparent;\n color: var(--mj-text-muted, #64748b);\n cursor: pointer;\n padding: 4px;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n}\n\n.mjo-icon-btn:hover {\n color: var(--mj-text-primary, #0f172a);\n}\n\n.mjo-link {\n border: none;\n background: transparent;\n color: var(--mj-brand-primary, #0076b6);\n cursor: pointer;\n padding: 0;\n font-size: inherit;\n text-align: left;\n}\n\n.mjo-link:hover {\n text-decoration: underline;\n}\n\n.mjo-status-chip {\n font-size: 11px;\n font-weight: var(--mj-font-bold, 700);\n text-transform: uppercase;\n letter-spacing: 0.04em;\n padding: 2px 8px;\n border-radius: 4px;\n display: inline-flex;\n align-items: center;\n gap: 4px;\n}\n\n.mjo-status-chip--draft {\n background: rgba(100, 116, 139, 0.12);\n color: #475569;\n}\n\n.mjo-status-chip--active {\n background: rgba(22, 163, 74, 0.12);\n color: #16a34a;\n}\n\n.mjo-status-chip--purple {\n background: rgba(147, 51, 234, 0.12);\n color: #9333ea;\n}\n\n.mjo-status-chip--error {\n background: rgba(220, 38, 38, 0.12);\n color: #dc2626;\n}\n\n.mjo-status-chip--warning {\n background: rgba(217, 119, 6, 0.12);\n color: #d97706;\n}\n\n.mjo-company-pill {\n font-size: 11px;\n font-weight: var(--mj-font-semibold, 600);\n color: var(--mj-text-secondary, #475569);\n background: var(--mj-bg-surface-sunken, rgba(0, 0, 0, 0.04));\n padding: 2px 6px;\n border-radius: 4px;\n}\n\n.mjo-sku-chip {\n font-family: var(--mj-font-family-mono, monospace);\n font-size: 10px;\n color: var(--mj-text-muted, #64748b);\n background: rgba(0, 0, 0, 0.04);\n padding: 1px 4px;\n border-radius: 3px;\n margin-left: 4px;\n}\n\n.mjo-badge {\n font-size: 11px;\n font-weight: var(--mj-font-semibold, 600);\n padding: 2px 6px;\n border-radius: 12px;\n background: var(--mj-bg-surface-sunken, rgba(0, 0, 0, 0.05));\n color: var(--mj-text-secondary, #475569);\n}\n\n.mjo-badge--error {\n background: rgba(220, 38, 38, 0.12);\n color: #dc2626;\n}\n\n.mjo-badge--success {\n background: rgba(22, 163, 74, 0.12);\n color: #16a34a;\n}\n\n.mjo-empty-state {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n padding: var(--mj-space-6, 32px) var(--mj-space-4, 16px);\n text-align: center;\n gap: var(--mj-space-2, 8px);\n}\n\n.mjo-empty-state h3 {\n margin: 0;\n font-size: var(--mj-text-sm, 14px);\n font-weight: var(--mj-font-bold, 700);\n color: var(--mj-text-primary, #0f172a);\n}\n\n.mjo-empty-state p {\n margin: 0;\n font-size: var(--mj-text-xs, 12px);\n color: var(--mj-text-muted, #64748b);\n max-width: 380px;\n}\n\n.mjo-alert {\n display: flex;\n align-items: center;\n gap: var(--mj-space-3, 10px);\n padding: 10px 14px;\n border-radius: var(--mj-radius-md, 8px);\n font-size: var(--mj-text-xs, 12px);\n margin-bottom: var(--mj-space-3, 12px);\n}\n\n.mjo-alert--error {\n background: rgba(220, 38, 38, 0.08);\n border: 1px solid rgba(220, 38, 38, 0.25);\n color: #dc2626;\n}\n\n.mjo-subtext {\n font-size: 11px;\n color: var(--mj-text-muted, #64748b);\n}\n\n.text-right { text-align: right; }\n.font-mono { font-family: var(--mj-font-family-mono, monospace); }\n.font-bold { font-weight: var(--mj-font-bold, 700); }\n.text-muted { color: var(--mj-text-muted, #64748b); }\n.text-success { color: #16a34a; }\n.text-warning { color: #d97706; }\n.text-danger { color: #dc2626; }\n.w-8 { width: 32px; }\n.w-16 { width: 64px; }\n.w-20 { width: 80px; }\n.w-24 { width: 96px; }\n.w-36 { width: 144px; }\n.flex { display: flex; }\n.gap-2 { gap: 8px; }\n.col-span-full { grid-column: 1 / -1; }\n.text-info { color: #0284c7; }\n\n/* \u2500\u2500 12. Instrument Box (Check/Card/ACH/Wire) \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.mjo-instrument-box {\n background: var(--mj-bg-surface-sunken, rgba(0, 0, 0, 0.02));\n border: 1px solid var(--mj-border-default, #e2e8f0);\n border-radius: var(--mj-radius-md, 8px);\n padding: var(--mj-space-3, 12px);\n margin: var(--mj-space-2, 6px) 0;\n display: flex;\n flex-direction: column;\n gap: var(--mj-space-3, 10px);\n}\n\n.mjo-instrument-box__title {\n font-size: var(--mj-text-xs, 12px);\n font-weight: var(--mj-font-semibold, 600);\n color: var(--mj-text-primary, #0f172a);\n display: flex;\n align-items: center;\n gap: 6px;\n padding-bottom: 6px;\n border-bottom: 1px dashed var(--mj-border-default, #e2e8f0);\n}\n\n.mjo-instrument-box__grid {\n display: grid;\n grid-template-columns: 1fr 1fr;\n gap: var(--mj-space-2, 8px);\n}\n\n.mjo-instrument-box .mjo-field {\n display: flex;\n flex-direction: column;\n gap: 4px;\n}\n\n.mjo-instrument-box .mjo-label {\n font-size: 11px;\n font-weight: var(--mj-font-medium, 500);\n color: var(--mj-text-secondary, #475569);\n}\n\n.mjo-apply-input-wrap.is-derived input {\n background: var(--mj-bg-surface-sunken, rgba(0, 0, 0, 0.03));\n color: var(--mj-text-secondary, #475569);\n cursor: not-allowed;\n border-style: dashed;\n}\n"] }]
|
|
2163
2206
|
}], null, null); })();
|
|
2164
|
-
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(BizAppsPaymentHeaderFormComponent, { className: "BizAppsPaymentHeaderFormComponent", filePath: "lib/custom/PaymentHeader/payment-header-form.component.ts", lineNumber:
|
|
2207
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(BizAppsPaymentHeaderFormComponent, { className: "BizAppsPaymentHeaderFormComponent", filePath: "lib/custom/PaymentHeader/payment-header-form.component.ts", lineNumber: 76 }); })();
|
|
2165
2208
|
/** Tree-shaking prevention anchor function */
|
|
2166
2209
|
export function LoadPaymentHeaderFormComponent() {
|
|
2167
2210
|
// Anchors BizAppsPaymentHeaderFormComponent in bundlers
|