@mj-biz-apps/orders-ng 5.41.0 → 5.43.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/checkout-element/main.js +368 -246
- package/dist/lib/checkout-widget/checkout-account.d.ts +10 -0
- package/dist/lib/checkout-widget/checkout-account.d.ts.map +1 -1
- package/dist/lib/checkout-widget/checkout-account.js +12 -0
- package/dist/lib/checkout-widget/checkout-account.js.map +1 -1
- package/dist/lib/checkout-widget/checkout-events.d.ts +15 -1
- package/dist/lib/checkout-widget/checkout-events.d.ts.map +1 -1
- package/dist/lib/checkout-widget/checkout-events.js +3 -1
- package/dist/lib/checkout-widget/checkout-events.js.map +1 -1
- package/dist/lib/checkout-widget/checkout-public-host.component.d.ts +6 -0
- package/dist/lib/checkout-widget/checkout-public-host.component.d.ts.map +1 -1
- package/dist/lib/checkout-widget/checkout-public-host.component.js +50 -21
- package/dist/lib/checkout-widget/checkout-public-host.component.js.map +1 -1
- package/dist/lib/checkout-widget/checkout-widget.component.d.ts +38 -2
- package/dist/lib/checkout-widget/checkout-widget.component.d.ts.map +1 -1
- package/dist/lib/checkout-widget/checkout-widget.component.js +313 -227
- package/dist/lib/checkout-widget/checkout-widget.component.js.map +1 -1
- package/dist/lib/custom/OrderHeader/order-header-form.component.d.ts.map +1 -1
- package/dist/lib/custom/OrderHeader/order-header-form.component.js +2 -1
- package/dist/lib/custom/OrderHeader/order-header-form.component.js.map +1 -1
- package/dist/lib/custom/OrderHeader/order-lines-editor.component.d.ts +14 -2
- package/dist/lib/custom/OrderHeader/order-lines-editor.component.d.ts.map +1 -1
- package/dist/lib/custom/OrderHeader/order-lines-editor.component.js +44 -6
- package/dist/lib/custom/OrderHeader/order-lines-editor.component.js.map +1 -1
- package/dist/lib/custom/OrderHeader/picker-scroll.d.ts +12 -0
- package/dist/lib/custom/OrderHeader/picker-scroll.d.ts.map +1 -0
- package/dist/lib/custom/OrderHeader/picker-scroll.js +15 -0
- package/dist/lib/custom/OrderHeader/picker-scroll.js.map +1 -0
- package/dist/lib/custom/PaymentHeader/payment-header-form.component.d.ts +11 -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 +363 -297
- package/dist/lib/custom/PaymentHeader/payment-header-form.component.js.map +1 -1
- package/dist/lib/data/orders-grid-state.d.ts +2 -1
- package/dist/lib/data/orders-grid-state.d.ts.map +1 -1
- package/dist/lib/data/orders-grid-state.js +2 -1
- package/dist/lib/data/orders-grid-state.js.map +1 -1
- package/dist/lib/data/orders-queries.d.ts +17 -4
- package/dist/lib/data/orders-queries.d.ts.map +1 -1
- package/dist/lib/data/orders-queries.js +30 -6
- package/dist/lib/data/orders-queries.js.map +1 -1
- package/dist/lib/form-panels/document-overviews.panels.js +1 -1
- package/dist/lib/form-panels/document-overviews.panels.js.map +1 -1
- package/dist/lib/form-panels/external-invoices.panel.js +3 -3
- package/dist/lib/form-panels/external-invoices.panel.js.map +1 -1
- package/dist/lib/form-panels/organization-orders.panel.d.ts +8 -1
- package/dist/lib/form-panels/organization-orders.panel.d.ts.map +1 -1
- package/dist/lib/form-panels/organization-orders.panel.js +29 -5
- package/dist/lib/form-panels/organization-orders.panel.js.map +1 -1
- package/dist/lib/form-panels/person-orders.panel.d.ts +8 -1
- package/dist/lib/form-panels/person-orders.panel.d.ts.map +1 -1
- package/dist/lib/form-panels/person-orders.panel.js +29 -5
- package/dist/lib/form-panels/person-orders.panel.js.map +1 -1
- package/dist/lib/generated/Entities/mjBizAppsOrdersOrderHeader/mjbizappsordersorderheader.form.component.js +2 -2
- package/dist/lib/generated/Entities/mjBizAppsOrdersOrderHeader/mjbizappsordersorderheader.form.component.js.map +1 -1
- package/dist/lib/pages/orders/order-document.page.d.ts +13 -2
- package/dist/lib/pages/orders/order-document.page.d.ts.map +1 -1
- package/dist/lib/pages/orders/order-document.page.js +37 -6
- package/dist/lib/pages/orders/order-document.page.js.map +1 -1
- package/dist/lib/pages/orders/return.page.d.ts +9 -3
- package/dist/lib/pages/orders/return.page.d.ts.map +1 -1
- package/dist/lib/pages/orders/return.page.js +106 -83
- package/dist/lib/pages/orders/return.page.js.map +1 -1
- package/dist/lib/pages/payments/payments-dashboard.page.d.ts +11 -2
- package/dist/lib/pages/payments/payments-dashboard.page.d.ts.map +1 -1
- package/dist/lib/pages/payments/payments-dashboard.page.js +14 -12
- package/dist/lib/pages/payments/payments-dashboard.page.js.map +1 -1
- package/dist/lib/pages/payments/payments-list.page.d.ts +12 -3
- package/dist/lib/pages/payments/payments-list.page.d.ts.map +1 -1
- package/dist/lib/pages/payments/payments-list.page.js +15 -13
- package/dist/lib/pages/payments/payments-list.page.js.map +1 -1
- package/dist/lib/pages/receivables/billing.page.js +11 -11
- package/dist/lib/pages/receivables/billing.page.js.map +1 -1
- package/dist/lib/pages/receivables/external-invoicing-queue.page.js +1 -1
- package/dist/lib/pages/receivables/external-invoicing-queue.page.js.map +1 -1
- package/dist/lib/pages/receivables/progress.page.js +5 -5
- package/dist/lib/pages/receivables/subscriptions.page.d.ts +14 -3
- package/dist/lib/pages/receivables/subscriptions.page.d.ts.map +1 -1
- package/dist/lib/pages/receivables/subscriptions.page.js +17 -13
- package/dist/lib/pages/receivables/subscriptions.page.js.map +1 -1
- package/dist/lib/sections/section-nav.model.js +1 -1
- package/dist/lib/sections/section-nav.model.js.map +1 -1
- package/dist/lib/sections/section-shell.component.js +2 -2
- package/dist/lib/services/pricing-scheduler.service.d.ts +15 -1
- package/dist/lib/services/pricing-scheduler.service.d.ts.map +1 -1
- package/dist/lib/services/pricing-scheduler.service.js +31 -2
- package/dist/lib/services/pricing-scheduler.service.js.map +1 -1
- package/dist/lib/styles/orders-kit.css +21 -15
- package/package.json +3 -3
|
@@ -253,57 +253,75 @@ function BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_43_Conditio
|
|
|
253
253
|
const _r10 = i0.ɵɵgetCurrentView();
|
|
254
254
|
i0.ɵɵelementStart(0, "div", 46)(1, "div", 60);
|
|
255
255
|
i0.ɵɵelement(2, "i", 76);
|
|
256
|
+
i0.ɵɵtext(3, " Gift card details ");
|
|
257
|
+
i0.ɵɵelementEnd();
|
|
258
|
+
i0.ɵɵelementStart(4, "div", 62)(5, "div", 38)(6, "label", 39);
|
|
259
|
+
i0.ɵɵtext(7, "Card Number (last 4)");
|
|
260
|
+
i0.ɵɵelementEnd();
|
|
261
|
+
i0.ɵɵelementStart(8, "input", 73);
|
|
262
|
+
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.CardLast4, $event) || (ctx_r1.CardLast4 = $event); return i0.ɵɵresetView($event); });
|
|
263
|
+
i0.ɵɵelementEnd()()()();
|
|
264
|
+
} if (rf & 2) {
|
|
265
|
+
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
266
|
+
i0.ɵɵadvance(8);
|
|
267
|
+
i0.ɵɵtwoWayProperty("ngModel", ctx_r1.CardLast4);
|
|
268
|
+
i0.ɵɵproperty("disabled", !ctx_r1.ComposeMode);
|
|
269
|
+
} }
|
|
270
|
+
function BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_43_Conditional_37_Template(rf, ctx) { if (rf & 1) {
|
|
271
|
+
const _r11 = i0.ɵɵgetCurrentView();
|
|
272
|
+
i0.ɵɵelementStart(0, "div", 46)(1, "div", 60);
|
|
273
|
+
i0.ɵɵelement(2, "i", 77);
|
|
256
274
|
i0.ɵɵtext(3, " Card instrument details ");
|
|
257
275
|
i0.ɵɵelementEnd();
|
|
258
276
|
i0.ɵɵelementStart(4, "div", 62)(5, "div", 38)(6, "label", 39);
|
|
259
277
|
i0.ɵɵtext(7, "Card Brand");
|
|
260
278
|
i0.ɵɵelementEnd();
|
|
261
279
|
i0.ɵɵelementStart(8, "select", 70);
|
|
262
|
-
i0.ɵɵtwoWayListener("ngModelChange", function
|
|
263
|
-
i0.ɵɵelementStart(9, "option",
|
|
280
|
+
i0.ɵɵtwoWayListener("ngModelChange", function BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_43_Conditional_37_Template_select_ngModelChange_8_listener($event) { i0.ɵɵrestoreView(_r11); const ctx_r1 = i0.ɵɵnextContext(3); i0.ɵɵtwoWayBindingSet(ctx_r1.CardBrand, $event) || (ctx_r1.CardBrand = $event); return i0.ɵɵresetView($event); });
|
|
281
|
+
i0.ɵɵelementStart(9, "option", 78);
|
|
264
282
|
i0.ɵɵtext(10, "Select Brand");
|
|
265
283
|
i0.ɵɵelementEnd();
|
|
266
|
-
i0.ɵɵelementStart(11, "option",
|
|
284
|
+
i0.ɵɵelementStart(11, "option", 79);
|
|
267
285
|
i0.ɵɵtext(12, "Visa");
|
|
268
286
|
i0.ɵɵelementEnd();
|
|
269
|
-
i0.ɵɵelementStart(13, "option",
|
|
287
|
+
i0.ɵɵelementStart(13, "option", 80);
|
|
270
288
|
i0.ɵɵtext(14, "MasterCard");
|
|
271
289
|
i0.ɵɵelementEnd();
|
|
272
|
-
i0.ɵɵelementStart(15, "option",
|
|
290
|
+
i0.ɵɵelementStart(15, "option", 81);
|
|
273
291
|
i0.ɵɵtext(16, "American Express");
|
|
274
292
|
i0.ɵɵelementEnd();
|
|
275
|
-
i0.ɵɵelementStart(17, "option",
|
|
293
|
+
i0.ɵɵelementStart(17, "option", 82);
|
|
276
294
|
i0.ɵɵtext(18, "Discover");
|
|
277
295
|
i0.ɵɵelementEnd();
|
|
278
|
-
i0.ɵɵelementStart(19, "option",
|
|
296
|
+
i0.ɵɵelementStart(19, "option", 83);
|
|
279
297
|
i0.ɵɵtext(20, "Other");
|
|
280
298
|
i0.ɵɵelementEnd()()();
|
|
281
299
|
i0.ɵɵelementStart(21, "div", 38)(22, "label", 39);
|
|
282
300
|
i0.ɵɵtext(23, "Last 4 Digits");
|
|
283
301
|
i0.ɵɵelementEnd();
|
|
284
|
-
i0.ɵɵelementStart(24, "input",
|
|
285
|
-
i0.ɵɵtwoWayListener("ngModelChange", function
|
|
302
|
+
i0.ɵɵelementStart(24, "input", 84);
|
|
303
|
+
i0.ɵɵtwoWayListener("ngModelChange", function BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_43_Conditional_37_Template_input_ngModelChange_24_listener($event) { i0.ɵɵrestoreView(_r11); const ctx_r1 = i0.ɵɵnextContext(3); i0.ɵɵtwoWayBindingSet(ctx_r1.CardLast4, $event) || (ctx_r1.CardLast4 = $event); return i0.ɵɵresetView($event); });
|
|
286
304
|
i0.ɵɵelementEnd()();
|
|
287
305
|
i0.ɵɵelementStart(25, "div", 38)(26, "label", 39);
|
|
288
306
|
i0.ɵɵtext(27, "Expiry (MM / YYYY)");
|
|
289
307
|
i0.ɵɵelementEnd();
|
|
290
|
-
i0.ɵɵelementStart(28, "div",
|
|
291
|
-
i0.ɵɵtwoWayListener("ngModelChange", function
|
|
308
|
+
i0.ɵɵelementStart(28, "div", 85)(29, "input", 86);
|
|
309
|
+
i0.ɵɵtwoWayListener("ngModelChange", function BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_43_Conditional_37_Template_input_ngModelChange_29_listener($event) { i0.ɵɵrestoreView(_r11); const ctx_r1 = i0.ɵɵnextContext(3); i0.ɵɵtwoWayBindingSet(ctx_r1.CardExpMonth, $event) || (ctx_r1.CardExpMonth = $event); return i0.ɵɵresetView($event); });
|
|
292
310
|
i0.ɵɵelementEnd();
|
|
293
|
-
i0.ɵɵelementStart(30, "input",
|
|
294
|
-
i0.ɵɵtwoWayListener("ngModelChange", function
|
|
311
|
+
i0.ɵɵelementStart(30, "input", 87);
|
|
312
|
+
i0.ɵɵtwoWayListener("ngModelChange", function BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_43_Conditional_37_Template_input_ngModelChange_30_listener($event) { i0.ɵɵrestoreView(_r11); const ctx_r1 = i0.ɵɵnextContext(3); i0.ɵɵtwoWayBindingSet(ctx_r1.CardExpYear, $event) || (ctx_r1.CardExpYear = $event); return i0.ɵɵresetView($event); });
|
|
295
313
|
i0.ɵɵelementEnd()()();
|
|
296
314
|
i0.ɵɵelementStart(31, "div", 38)(32, "label", 39);
|
|
297
315
|
i0.ɵɵtext(33, "Cardholder Name");
|
|
298
316
|
i0.ɵɵelementEnd();
|
|
299
|
-
i0.ɵɵelementStart(34, "input",
|
|
300
|
-
i0.ɵɵtwoWayListener("ngModelChange", function
|
|
317
|
+
i0.ɵɵelementStart(34, "input", 88);
|
|
318
|
+
i0.ɵɵtwoWayListener("ngModelChange", function BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_43_Conditional_37_Template_input_ngModelChange_34_listener($event) { i0.ɵɵrestoreView(_r11); const ctx_r1 = i0.ɵɵnextContext(3); i0.ɵɵtwoWayBindingSet(ctx_r1.CardHolderName, $event) || (ctx_r1.CardHolderName = $event); return i0.ɵɵresetView($event); });
|
|
301
319
|
i0.ɵɵelementEnd()();
|
|
302
320
|
i0.ɵɵelementStart(35, "div", 66)(36, "label", 39);
|
|
303
321
|
i0.ɵɵtext(37, "Auth / Approval \u2116");
|
|
304
322
|
i0.ɵɵelementEnd();
|
|
305
|
-
i0.ɵɵelementStart(38, "input",
|
|
306
|
-
i0.ɵɵtwoWayListener("ngModelChange", function
|
|
323
|
+
i0.ɵɵelementStart(38, "input", 89);
|
|
324
|
+
i0.ɵɵtwoWayListener("ngModelChange", function BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_43_Conditional_37_Template_input_ngModelChange_38_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); });
|
|
307
325
|
i0.ɵɵelementEnd()()()();
|
|
308
326
|
} if (rf & 2) {
|
|
309
327
|
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
@@ -326,10 +344,10 @@ function BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_43_Conditio
|
|
|
326
344
|
i0.ɵɵtwoWayProperty("ngModel", ctx_r1.ReferenceNumber);
|
|
327
345
|
i0.ɵɵproperty("disabled", !ctx_r1.ComposeMode);
|
|
328
346
|
} }
|
|
329
|
-
function
|
|
330
|
-
const
|
|
347
|
+
function BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_43_Conditional_38_Template(rf, ctx) { if (rf & 1) {
|
|
348
|
+
const _r12 = i0.ɵɵgetCurrentView();
|
|
331
349
|
i0.ɵɵelementStart(0, "div", 46)(1, "div", 60);
|
|
332
|
-
i0.ɵɵelement(2, "i",
|
|
350
|
+
i0.ɵɵelement(2, "i", 90);
|
|
333
351
|
i0.ɵɵtext(3, " Reference details ");
|
|
334
352
|
i0.ɵɵelementEnd();
|
|
335
353
|
i0.ɵɵelementStart(4, "div", 38)(5, "label", 39);
|
|
@@ -337,8 +355,8 @@ function BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_43_Conditio
|
|
|
337
355
|
i0.ɵɵelementStart(7, "span", 63);
|
|
338
356
|
i0.ɵɵtext(8, "*");
|
|
339
357
|
i0.ɵɵelementEnd()();
|
|
340
|
-
i0.ɵɵelementStart(9, "input",
|
|
341
|
-
i0.ɵɵtwoWayListener("ngModelChange", function
|
|
358
|
+
i0.ɵɵelementStart(9, "input", 91);
|
|
359
|
+
i0.ɵɵtwoWayListener("ngModelChange", function BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_43_Conditional_38_Template_input_ngModelChange_9_listener($event) { i0.ɵɵrestoreView(_r12); const ctx_r1 = i0.ɵɵnextContext(3); i0.ɵɵtwoWayBindingSet(ctx_r1.ReferenceNumber, $event) || (ctx_r1.ReferenceNumber = $event); return i0.ɵɵresetView($event); });
|
|
342
360
|
i0.ɵɵelementEnd()()();
|
|
343
361
|
} if (rf & 2) {
|
|
344
362
|
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
@@ -346,19 +364,19 @@ function BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_43_Conditio
|
|
|
346
364
|
i0.ɵɵtwoWayProperty("ngModel", ctx_r1.ReferenceNumber);
|
|
347
365
|
i0.ɵɵproperty("disabled", !ctx_r1.ComposeMode);
|
|
348
366
|
} }
|
|
349
|
-
function
|
|
367
|
+
function BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_43_Conditional_40_Template(rf, ctx) { if (rf & 1) {
|
|
350
368
|
i0.ɵɵelementStart(0, "div", 48);
|
|
351
369
|
i0.ɵɵtext(1, "Required before Capture & Book.");
|
|
352
370
|
i0.ɵɵelementEnd();
|
|
353
371
|
} }
|
|
354
|
-
function
|
|
355
|
-
i0.ɵɵelementStart(0, "div",
|
|
356
|
-
i0.ɵɵelement(1, "i",
|
|
372
|
+
function BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_43_Conditional_48_Conditional_14_Template(rf, ctx) { if (rf & 1) {
|
|
373
|
+
i0.ɵɵelementStart(0, "div", 97);
|
|
374
|
+
i0.ɵɵelement(1, "i", 106);
|
|
357
375
|
i0.ɵɵelementEnd();
|
|
358
|
-
i0.ɵɵelementStart(2, "div",
|
|
376
|
+
i0.ɵɵelementStart(2, "div", 94)(3, "span", 95);
|
|
359
377
|
i0.ɵɵtext(4, "Unapplied");
|
|
360
378
|
i0.ɵɵelementEnd();
|
|
361
|
-
i0.ɵɵelementStart(5, "span",
|
|
379
|
+
i0.ɵɵelementStart(5, "span", 96);
|
|
362
380
|
i0.ɵɵtext(6);
|
|
363
381
|
i0.ɵɵelementEnd()();
|
|
364
382
|
} if (rf & 2) {
|
|
@@ -366,12 +384,12 @@ function BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_43_Conditio
|
|
|
366
384
|
i0.ɵɵadvance(6);
|
|
367
385
|
i0.ɵɵtextInterpolate(ctx_r1.RollupAmount(ctx_r1.UnappliedAmount));
|
|
368
386
|
} }
|
|
369
|
-
function
|
|
370
|
-
i0.ɵɵelementStart(0, "div",
|
|
371
|
-
i0.ɵɵelement(1, "mj-loading",
|
|
387
|
+
function BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_43_Conditional_48_Conditional_21_Template(rf, ctx) { if (rf & 1) {
|
|
388
|
+
i0.ɵɵelementStart(0, "div", 103);
|
|
389
|
+
i0.ɵɵelement(1, "mj-loading", 107);
|
|
372
390
|
i0.ɵɵelementEnd();
|
|
373
391
|
} }
|
|
374
|
-
function
|
|
392
|
+
function BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_43_Conditional_48_Conditional_22_Template(rf, ctx) { if (rf & 1) {
|
|
375
393
|
i0.ɵɵelementStart(0, "div", 18);
|
|
376
394
|
i0.ɵɵtext(1);
|
|
377
395
|
i0.ɵɵelementEnd();
|
|
@@ -380,82 +398,82 @@ function BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_43_Conditio
|
|
|
380
398
|
i0.ɵɵadvance();
|
|
381
399
|
i0.ɵɵtextInterpolate(ctx_r1.AppliedLinesError);
|
|
382
400
|
} }
|
|
383
|
-
function
|
|
384
|
-
i0.ɵɵelement(0, "mj-empty-state",
|
|
401
|
+
function BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_43_Conditional_48_Conditional_23_Template(rf, ctx) { if (rf & 1) {
|
|
402
|
+
i0.ɵɵelement(0, "mj-empty-state", 104);
|
|
385
403
|
} }
|
|
386
|
-
function
|
|
387
|
-
const
|
|
388
|
-
i0.ɵɵelementStart(0, "tr")(1, "td")(2, "button",
|
|
389
|
-
i0.ɵɵlistener("click", function
|
|
404
|
+
function BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_43_Conditional_48_Conditional_24_For_14_Template(rf, ctx) { if (rf & 1) {
|
|
405
|
+
const _r13 = i0.ɵɵgetCurrentView();
|
|
406
|
+
i0.ɵɵelementStart(0, "tr")(1, "td")(2, "button", 110);
|
|
407
|
+
i0.ɵɵlistener("click", function BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_43_Conditional_48_Conditional_24_For_14_Template_button_click_2_listener($event) { const line_r14 = i0.ɵɵrestoreView(_r13).$implicit; const ctx_r1 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r1.OpenAppliedOrder(line_r14, $event)); });
|
|
390
408
|
i0.ɵɵelementStart(3, "strong");
|
|
391
409
|
i0.ɵɵtext(4);
|
|
392
410
|
i0.ɵɵelementEnd()()();
|
|
393
411
|
i0.ɵɵelementStart(5, "td");
|
|
394
412
|
i0.ɵɵtext(6);
|
|
395
413
|
i0.ɵɵelementEnd();
|
|
396
|
-
i0.ɵɵelementStart(7, "td",
|
|
414
|
+
i0.ɵɵelementStart(7, "td", 111);
|
|
397
415
|
i0.ɵɵtext(8);
|
|
398
416
|
i0.ɵɵelementEnd();
|
|
399
417
|
i0.ɵɵelementStart(9, "td");
|
|
400
418
|
i0.ɵɵtext(10);
|
|
401
419
|
i0.ɵɵelementEnd()();
|
|
402
420
|
} if (rf & 2) {
|
|
403
|
-
const
|
|
421
|
+
const line_r14 = ctx.$implicit;
|
|
404
422
|
const ctx_r1 = i0.ɵɵnextContext(5);
|
|
405
423
|
i0.ɵɵadvance(4);
|
|
406
|
-
i0.ɵɵtextInterpolate(
|
|
424
|
+
i0.ɵɵtextInterpolate(line_r14.OrderNumber);
|
|
407
425
|
i0.ɵɵadvance(2);
|
|
408
|
-
i0.ɵɵtextInterpolate(
|
|
426
|
+
i0.ɵɵtextInterpolate(line_r14.OrderLineLabel || "Whole order");
|
|
409
427
|
i0.ɵɵadvance(2);
|
|
410
|
-
i0.ɵɵtextInterpolate(ctx_r1.RollupAmount(
|
|
428
|
+
i0.ɵɵtextInterpolate(ctx_r1.RollupAmount(line_r14.Amount));
|
|
411
429
|
i0.ɵɵadvance(2);
|
|
412
|
-
i0.ɵɵtextInterpolate(ctx_r1.FormatAppliedBookedAt(
|
|
430
|
+
i0.ɵɵtextInterpolate(ctx_r1.FormatAppliedBookedAt(line_r14));
|
|
413
431
|
} }
|
|
414
|
-
function
|
|
415
|
-
i0.ɵɵelementStart(0, "div",
|
|
432
|
+
function BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_43_Conditional_48_Conditional_24_Template(rf, ctx) { if (rf & 1) {
|
|
433
|
+
i0.ɵɵelementStart(0, "div", 105)(1, "table", 108)(2, "thead")(3, "tr")(4, "th");
|
|
416
434
|
i0.ɵɵtext(5, "Order \u2116");
|
|
417
435
|
i0.ɵɵelementEnd();
|
|
418
436
|
i0.ɵɵelementStart(6, "th");
|
|
419
437
|
i0.ɵɵtext(7, "Order Line");
|
|
420
438
|
i0.ɵɵelementEnd();
|
|
421
|
-
i0.ɵɵelementStart(8, "th",
|
|
439
|
+
i0.ɵɵelementStart(8, "th", 109);
|
|
422
440
|
i0.ɵɵtext(9, "Amount");
|
|
423
441
|
i0.ɵɵelementEnd();
|
|
424
442
|
i0.ɵɵelementStart(10, "th");
|
|
425
443
|
i0.ɵɵtext(11, "Booked");
|
|
426
444
|
i0.ɵɵelementEnd()()();
|
|
427
445
|
i0.ɵɵelementStart(12, "tbody");
|
|
428
|
-
i0.ɵɵrepeaterCreate(13,
|
|
446
|
+
i0.ɵɵrepeaterCreate(13, BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_43_Conditional_48_Conditional_24_For_14_Template, 11, 4, "tr", null, i0.ɵɵrepeaterTrackByIndex);
|
|
429
447
|
i0.ɵɵelementEnd()()();
|
|
430
448
|
} if (rf & 2) {
|
|
431
449
|
const ctx_r1 = i0.ɵɵnextContext(4);
|
|
432
450
|
i0.ɵɵadvance(13);
|
|
433
451
|
i0.ɵɵrepeater(ctx_r1.AppliedLines);
|
|
434
452
|
} }
|
|
435
|
-
function
|
|
436
|
-
i0.ɵɵelementStart(0, "div",
|
|
453
|
+
function BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_43_Conditional_48_Template(rf, ctx) { if (rf & 1) {
|
|
454
|
+
i0.ɵɵelementStart(0, "div", 92)(1, "div", 93)(2, "div", 94)(3, "span", 95);
|
|
437
455
|
i0.ɵɵtext(4, "Received");
|
|
438
456
|
i0.ɵɵelementEnd();
|
|
439
|
-
i0.ɵɵelementStart(5, "span",
|
|
457
|
+
i0.ɵɵelementStart(5, "span", 96);
|
|
440
458
|
i0.ɵɵtext(6);
|
|
441
459
|
i0.ɵɵelementEnd()();
|
|
442
|
-
i0.ɵɵelementStart(7, "div",
|
|
443
|
-
i0.ɵɵelement(8, "i",
|
|
460
|
+
i0.ɵɵelementStart(7, "div", 97);
|
|
461
|
+
i0.ɵɵelement(8, "i", 98);
|
|
444
462
|
i0.ɵɵelementEnd();
|
|
445
|
-
i0.ɵɵelementStart(9, "div",
|
|
463
|
+
i0.ɵɵelementStart(9, "div", 94)(10, "span", 95);
|
|
446
464
|
i0.ɵɵtext(11, "Applied");
|
|
447
465
|
i0.ɵɵelementEnd();
|
|
448
|
-
i0.ɵɵelementStart(12, "span",
|
|
466
|
+
i0.ɵɵelementStart(12, "span", 96);
|
|
449
467
|
i0.ɵɵtext(13);
|
|
450
468
|
i0.ɵɵelementEnd()();
|
|
451
|
-
i0.ɵɵconditionalCreate(14,
|
|
469
|
+
i0.ɵɵconditionalCreate(14, BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_43_Conditional_48_Conditional_14_Template, 7, 1);
|
|
452
470
|
i0.ɵɵelementEnd()();
|
|
453
|
-
i0.ɵɵelementStart(15, "div",
|
|
454
|
-
i0.ɵɵelement(18, "i",
|
|
471
|
+
i0.ɵɵelementStart(15, "div", 99)(16, "div", 100)(17, "h2", 101);
|
|
472
|
+
i0.ɵɵelement(18, "i", 90);
|
|
455
473
|
i0.ɵɵtext(19, " Applied to ");
|
|
456
474
|
i0.ɵɵelementEnd()()();
|
|
457
|
-
i0.ɵɵelementStart(20, "div",
|
|
458
|
-
i0.ɵɵconditionalCreate(21,
|
|
475
|
+
i0.ɵɵelementStart(20, "div", 102);
|
|
476
|
+
i0.ɵɵconditionalCreate(21, BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_43_Conditional_48_Conditional_21_Template, 2, 0, "div", 103)(22, BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_43_Conditional_48_Conditional_22_Template, 2, 1, "div", 18)(23, BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_43_Conditional_48_Conditional_23_Template, 1, 0, "mj-empty-state", 104)(24, BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_43_Conditional_48_Conditional_24_Template, 15, 0, "div", 105);
|
|
459
477
|
i0.ɵɵelementEnd();
|
|
460
478
|
} if (rf & 2) {
|
|
461
479
|
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
@@ -469,14 +487,14 @@ function BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_43_Conditio
|
|
|
469
487
|
i0.ɵɵadvance(7);
|
|
470
488
|
i0.ɵɵconditional(ctx_r1.LoadingAppliedLines ? 21 : ctx_r1.AppliedLinesError ? 22 : ctx_r1.AppliedLines.length === 0 ? 23 : 24);
|
|
471
489
|
} }
|
|
472
|
-
function
|
|
490
|
+
function BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_43_Conditional_49_Conditional_22_Template(rf, ctx) { if (rf & 1) {
|
|
473
491
|
i0.ɵɵelement(0, "i", 54);
|
|
474
492
|
i0.ɵɵelementStart(1, "span");
|
|
475
493
|
i0.ɵɵtext(2, "Allocations tie 100% to payment received. Ready to capture and book.");
|
|
476
494
|
i0.ɵɵelementEnd();
|
|
477
495
|
} }
|
|
478
|
-
function
|
|
479
|
-
i0.ɵɵelement(0, "i",
|
|
496
|
+
function BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_43_Conditional_49_Conditional_23_Template(rf, ctx) { if (rf & 1) {
|
|
497
|
+
i0.ɵɵelement(0, "i", 115);
|
|
480
498
|
i0.ɵɵelementStart(1, "span");
|
|
481
499
|
i0.ɵɵtext(2);
|
|
482
500
|
i0.ɵɵelementEnd();
|
|
@@ -485,8 +503,8 @@ function BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_43_Conditio
|
|
|
485
503
|
i0.ɵɵadvance(2);
|
|
486
504
|
i0.ɵɵtextInterpolate1("$", ctx_r1.UnallocatedRemainder.toFixed(2), " remaining to allocate before capturing.");
|
|
487
505
|
} }
|
|
488
|
-
function
|
|
489
|
-
i0.ɵɵelement(0, "i",
|
|
506
|
+
function BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_43_Conditional_49_Conditional_24_Template(rf, ctx) { if (rf & 1) {
|
|
507
|
+
i0.ɵɵelement(0, "i", 116);
|
|
490
508
|
i0.ɵɵelementStart(1, "span");
|
|
491
509
|
i0.ɵɵtext(2);
|
|
492
510
|
i0.ɵɵelementEnd();
|
|
@@ -495,7 +513,7 @@ function BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_43_Conditio
|
|
|
495
513
|
i0.ɵɵadvance(2);
|
|
496
514
|
i0.ɵɵtextInterpolate1("Over-allocated by $", ctx_r1.Math.abs(ctx_r1.UnallocatedRemainder).toFixed(2), ". Please adjust amounts.");
|
|
497
515
|
} }
|
|
498
|
-
function
|
|
516
|
+
function BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_43_Conditional_49_Conditional_30_Template(rf, ctx) { if (rf & 1) {
|
|
499
517
|
i0.ɵɵelementStart(0, "span", 55);
|
|
500
518
|
i0.ɵɵtext(1);
|
|
501
519
|
i0.ɵɵelementEnd();
|
|
@@ -504,21 +522,21 @@ function BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_43_Conditio
|
|
|
504
522
|
i0.ɵɵadvance();
|
|
505
523
|
i0.ɵɵtextInterpolate1("", ctx_r1.FilteredOpenOrders.length, " available");
|
|
506
524
|
} }
|
|
507
|
-
function
|
|
508
|
-
const
|
|
509
|
-
i0.ɵɵelementStart(0, "div",
|
|
510
|
-
i0.ɵɵelement(2, "i",
|
|
511
|
-
i0.ɵɵelementStart(3, "input",
|
|
512
|
-
i0.ɵɵtwoWayListener("ngModelChange", function
|
|
525
|
+
function BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_43_Conditional_49_Conditional_31_Template(rf, ctx) { if (rf & 1) {
|
|
526
|
+
const _r15 = i0.ɵɵgetCurrentView();
|
|
527
|
+
i0.ɵɵelementStart(0, "div", 113)(1, "div", 117);
|
|
528
|
+
i0.ɵɵelement(2, "i", 118);
|
|
529
|
+
i0.ɵɵelementStart(3, "input", 119);
|
|
530
|
+
i0.ɵɵtwoWayListener("ngModelChange", function BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_43_Conditional_49_Conditional_31_Template_input_ngModelChange_3_listener($event) { i0.ɵɵrestoreView(_r15); const ctx_r1 = i0.ɵɵnextContext(4); i0.ɵɵtwoWayBindingSet(ctx_r1.SearchQuery, $event) || (ctx_r1.SearchQuery = $event); return i0.ɵɵresetView($event); });
|
|
513
531
|
i0.ɵɵelementEnd()();
|
|
514
|
-
i0.ɵɵelementStart(4, "button",
|
|
515
|
-
i0.ɵɵlistener("click", function
|
|
516
|
-
i0.ɵɵelement(5, "i",
|
|
532
|
+
i0.ɵɵelementStart(4, "button", 120);
|
|
533
|
+
i0.ɵɵlistener("click", function BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_43_Conditional_49_Conditional_31_Template_button_click_4_listener() { i0.ɵɵrestoreView(_r15); const ctx_r1 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r1.AutoApplyOldestFirst()); });
|
|
534
|
+
i0.ɵɵelement(5, "i", 121);
|
|
517
535
|
i0.ɵɵtext(6, " Auto-apply oldest ");
|
|
518
536
|
i0.ɵɵelementEnd();
|
|
519
|
-
i0.ɵɵelementStart(7, "button",
|
|
520
|
-
i0.ɵɵlistener("click", function
|
|
521
|
-
i0.ɵɵelement(8, "i",
|
|
537
|
+
i0.ɵɵelementStart(7, "button", 122);
|
|
538
|
+
i0.ɵɵlistener("click", function BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_43_Conditional_49_Conditional_31_Template_button_click_7_listener() { i0.ɵɵrestoreView(_r15); const ctx_r1 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r1.ClearAllocations()); });
|
|
539
|
+
i0.ɵɵelement(8, "i", 123);
|
|
522
540
|
i0.ɵɵtext(9, " Clear all ");
|
|
523
541
|
i0.ɵɵelementEnd()();
|
|
524
542
|
} if (rf & 2) {
|
|
@@ -526,251 +544,251 @@ function BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_43_Conditio
|
|
|
526
544
|
i0.ɵɵadvance(3);
|
|
527
545
|
i0.ɵɵtwoWayProperty("ngModel", ctx_r1.SearchQuery);
|
|
528
546
|
} }
|
|
529
|
-
function
|
|
530
|
-
i0.ɵɵelementStart(0, "div",
|
|
531
|
-
i0.ɵɵelement(1, "mj-loading",
|
|
547
|
+
function BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_43_Conditional_49_Conditional_33_Template(rf, ctx) { if (rf & 1) {
|
|
548
|
+
i0.ɵɵelementStart(0, "div", 103);
|
|
549
|
+
i0.ɵɵelement(1, "mj-loading", 124);
|
|
532
550
|
i0.ɵɵelementEnd();
|
|
533
551
|
} }
|
|
534
|
-
function
|
|
535
|
-
i0.ɵɵelement(0, "mj-empty-state",
|
|
552
|
+
function BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_43_Conditional_49_Conditional_34_Template(rf, ctx) { if (rf & 1) {
|
|
553
|
+
i0.ɵɵelement(0, "mj-empty-state", 114);
|
|
536
554
|
} }
|
|
537
|
-
function
|
|
555
|
+
function BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_43_Conditional_49_Conditional_35_Conditional_5_Template(rf, ctx) { if (rf & 1) {
|
|
538
556
|
i0.ɵɵelementStart(0, "th");
|
|
539
557
|
i0.ɵɵtext(1, "Customer");
|
|
540
558
|
i0.ɵɵelementEnd();
|
|
541
559
|
} }
|
|
542
|
-
function
|
|
543
|
-
i0.ɵɵelementStart(0, "td",
|
|
560
|
+
function BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_43_Conditional_49_Conditional_35_For_25_Conditional_4_Template(rf, ctx) { if (rf & 1) {
|
|
561
|
+
i0.ɵɵelementStart(0, "td", 131);
|
|
544
562
|
i0.ɵɵtext(1);
|
|
545
563
|
i0.ɵɵelementEnd();
|
|
546
564
|
} if (rf & 2) {
|
|
547
|
-
const
|
|
565
|
+
const order_r17 = i0.ɵɵnextContext().$implicit;
|
|
548
566
|
i0.ɵɵadvance();
|
|
549
|
-
i0.ɵɵtextInterpolate(
|
|
567
|
+
i0.ɵɵtextInterpolate(order_r17.BillToOrganization || order_r17.BillToPerson || "\u2014");
|
|
550
568
|
} }
|
|
551
|
-
function
|
|
552
|
-
i0.ɵɵelementStart(0, "div",
|
|
569
|
+
function BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_43_Conditional_49_Conditional_35_For_25_Conditional_9_Template(rf, ctx) { if (rf & 1) {
|
|
570
|
+
i0.ɵɵelementStart(0, "div", 132);
|
|
553
571
|
i0.ɵɵtext(1);
|
|
554
572
|
i0.ɵɵelementEnd();
|
|
555
573
|
} if (rf & 2) {
|
|
556
|
-
const
|
|
574
|
+
const order_r17 = i0.ɵɵnextContext().$implicit;
|
|
557
575
|
i0.ɵɵadvance();
|
|
558
|
-
i0.ɵɵtextInterpolate(
|
|
576
|
+
i0.ɵɵtextInterpolate(order_r17.Description);
|
|
559
577
|
} }
|
|
560
|
-
function
|
|
561
|
-
i0.ɵɵelementStart(0, "span",
|
|
578
|
+
function BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_43_Conditional_49_Conditional_35_For_25_Conditional_13_Template(rf, ctx) { if (rf & 1) {
|
|
579
|
+
i0.ɵɵelementStart(0, "span", 133);
|
|
562
580
|
i0.ɵɵtext(1);
|
|
563
581
|
i0.ɵɵelementEnd();
|
|
564
582
|
} if (rf & 2) {
|
|
565
|
-
const
|
|
583
|
+
const order_r17 = i0.ɵɵnextContext().$implicit;
|
|
566
584
|
const ctx_r1 = i0.ɵɵnextContext(5);
|
|
567
585
|
i0.ɵɵadvance();
|
|
568
|
-
i0.ɵɵtextInterpolate1("", ctx_r1.GetOrderDaysOverdue(
|
|
586
|
+
i0.ɵɵtextInterpolate1("", ctx_r1.GetOrderDaysOverdue(order_r17), "d overdue");
|
|
569
587
|
} }
|
|
570
|
-
function
|
|
588
|
+
function BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_43_Conditional_49_Conditional_35_For_25_Conditional_14_Template(rf, ctx) { if (rf & 1) {
|
|
571
589
|
i0.ɵɵelementStart(0, "span");
|
|
572
590
|
i0.ɵɵtext(1);
|
|
573
591
|
i0.ɵɵelementEnd();
|
|
574
592
|
} if (rf & 2) {
|
|
575
|
-
const
|
|
593
|
+
const order_r17 = i0.ɵɵnextContext().$implicit;
|
|
576
594
|
const ctx_r1 = i0.ɵɵnextContext(5);
|
|
577
595
|
i0.ɵɵadvance();
|
|
578
|
-
i0.ɵɵtextInterpolate(ctx_r1.FormatOrderDueDate(
|
|
596
|
+
i0.ɵɵtextInterpolate(ctx_r1.FormatOrderDueDate(order_r17));
|
|
579
597
|
} }
|
|
580
|
-
function
|
|
581
|
-
i0.ɵɵelementStart(0, "div",
|
|
582
|
-
i0.ɵɵelement(1, "i",
|
|
598
|
+
function BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_43_Conditional_49_Conditional_35_For_25_Conditional_27_Template(rf, ctx) { if (rf & 1) {
|
|
599
|
+
i0.ɵɵelementStart(0, "div", 139);
|
|
600
|
+
i0.ɵɵelement(1, "i", 142);
|
|
583
601
|
i0.ɵɵtext(2, " Lines allocated ");
|
|
584
602
|
i0.ɵɵelementEnd();
|
|
585
603
|
} }
|
|
586
|
-
function
|
|
587
|
-
i0.ɵɵelementStart(0, "div",
|
|
604
|
+
function BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_43_Conditional_49_Conditional_35_For_25_Conditional_30_Template(rf, ctx) { if (rf & 1) {
|
|
605
|
+
i0.ɵɵelementStart(0, "div", 139);
|
|
588
606
|
i0.ɵɵtext(1);
|
|
589
607
|
i0.ɵɵelementEnd();
|
|
590
608
|
} if (rf & 2) {
|
|
591
|
-
const
|
|
609
|
+
const order_r17 = i0.ɵɵnextContext().$implicit;
|
|
592
610
|
const ctx_r1 = i0.ɵɵnextContext(5);
|
|
593
611
|
i0.ɵɵadvance();
|
|
594
|
-
i0.ɵɵtextInterpolate1("Creates ", ctx_r1.FormatLeavesCredit(
|
|
612
|
+
i0.ɵɵtextInterpolate1("Creates ", ctx_r1.FormatLeavesCredit(order_r17), " credit");
|
|
595
613
|
} }
|
|
596
|
-
function
|
|
597
|
-
const
|
|
598
|
-
i0.ɵɵelementStart(0, "button",
|
|
599
|
-
i0.ɵɵlistener("click", function
|
|
614
|
+
function BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_43_Conditional_49_Conditional_35_For_25_Conditional_32_Template(rf, ctx) { if (rf & 1) {
|
|
615
|
+
const _r18 = i0.ɵɵgetCurrentView();
|
|
616
|
+
i0.ɵɵelementStart(0, "button", 143);
|
|
617
|
+
i0.ɵɵlistener("click", function BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_43_Conditional_49_Conditional_35_For_25_Conditional_32_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r18); const order_r17 = i0.ɵɵnextContext().$implicit; const ctx_r1 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r1.FullPayOrder(order_r17)); });
|
|
600
618
|
i0.ɵɵtext(1, " Pay in Full ");
|
|
601
619
|
i0.ɵɵelementEnd();
|
|
602
620
|
} if (rf & 2) {
|
|
603
|
-
const
|
|
604
|
-
i0.ɵɵproperty("disabled", (
|
|
621
|
+
const order_r17 = i0.ɵɵnextContext().$implicit;
|
|
622
|
+
i0.ɵɵproperty("disabled", (order_r17.Balance ?? order_r17.TotalGross ?? 0) <= 0);
|
|
605
623
|
} }
|
|
606
|
-
function
|
|
607
|
-
const
|
|
608
|
-
i0.ɵɵelementStart(0, "button",
|
|
609
|
-
i0.ɵɵlistener("click", function
|
|
624
|
+
function BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_43_Conditional_49_Conditional_35_For_25_Conditional_33_For_23_Conditional_16_Template(rf, ctx) { if (rf & 1) {
|
|
625
|
+
const _r21 = i0.ɵɵgetCurrentView();
|
|
626
|
+
i0.ɵɵelementStart(0, "button", 151);
|
|
627
|
+
i0.ɵɵlistener("click", function BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_43_Conditional_49_Conditional_35_For_25_Conditional_33_For_23_Conditional_16_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r21); const line_r20 = i0.ɵɵnextContext().$implicit; const order_r17 = i0.ɵɵnextContext(2).$implicit; const ctx_r1 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r1.FullPayLine(order_r17, line_r20)); });
|
|
610
628
|
i0.ɵɵtext(1, " Line Pay ");
|
|
611
629
|
i0.ɵɵelementEnd();
|
|
612
630
|
} }
|
|
613
|
-
function
|
|
614
|
-
const
|
|
631
|
+
function BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_43_Conditional_49_Conditional_35_For_25_Conditional_33_For_23_Template(rf, ctx) { if (rf & 1) {
|
|
632
|
+
const _r19 = i0.ɵɵgetCurrentView();
|
|
615
633
|
i0.ɵɵelementStart(0, "tr")(1, "td");
|
|
616
634
|
i0.ɵɵtext(2);
|
|
617
635
|
i0.ɵɵelementEnd();
|
|
618
636
|
i0.ɵɵelementStart(3, "td")(4, "strong");
|
|
619
637
|
i0.ɵɵtext(5);
|
|
620
638
|
i0.ɵɵelementEnd()();
|
|
621
|
-
i0.ɵɵelementStart(6, "td",
|
|
639
|
+
i0.ɵɵelementStart(6, "td", 111);
|
|
622
640
|
i0.ɵɵtext(7);
|
|
623
641
|
i0.ɵɵelementEnd();
|
|
624
|
-
i0.ɵɵelementStart(8, "td",
|
|
642
|
+
i0.ɵɵelementStart(8, "td", 111);
|
|
625
643
|
i0.ɵɵtext(9);
|
|
626
644
|
i0.ɵɵelementEnd();
|
|
627
|
-
i0.ɵɵelementStart(10, "td",
|
|
645
|
+
i0.ɵɵelementStart(10, "td", 109)(11, "div", 136)(12, "span", 137);
|
|
628
646
|
i0.ɵɵtext(13, "$");
|
|
629
647
|
i0.ɵɵelementEnd();
|
|
630
|
-
i0.ɵɵelementStart(14, "input",
|
|
631
|
-
i0.ɵɵlistener("ngModelChange", function
|
|
648
|
+
i0.ɵɵelementStart(14, "input", 149);
|
|
649
|
+
i0.ɵɵlistener("ngModelChange", function BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_43_Conditional_49_Conditional_35_For_25_Conditional_33_For_23_Template_input_ngModelChange_14_listener($event) { const line_r20 = i0.ɵɵrestoreView(_r19).$implicit; const order_r17 = i0.ɵɵnextContext(2).$implicit; const ctx_r1 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r1.SetLineAllocation(line_r20.ID || "", $event, order_r17.ID)); });
|
|
632
650
|
i0.ɵɵelementEnd()()();
|
|
633
|
-
i0.ɵɵelementStart(15, "td",
|
|
634
|
-
i0.ɵɵconditionalCreate(16,
|
|
651
|
+
i0.ɵɵelementStart(15, "td", 109);
|
|
652
|
+
i0.ɵɵconditionalCreate(16, BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_43_Conditional_49_Conditional_35_For_25_Conditional_33_For_23_Conditional_16_Template, 2, 0, "button", 150);
|
|
635
653
|
i0.ɵɵelementEnd()();
|
|
636
654
|
} if (rf & 2) {
|
|
637
|
-
const
|
|
655
|
+
const line_r20 = ctx.$implicit;
|
|
638
656
|
const ctx_r1 = i0.ɵɵnextContext(7);
|
|
639
657
|
i0.ɵɵadvance(2);
|
|
640
|
-
i0.ɵɵtextInterpolate(
|
|
658
|
+
i0.ɵɵtextInterpolate(line_r20.LineNumber);
|
|
641
659
|
i0.ɵɵadvance(3);
|
|
642
|
-
i0.ɵɵtextInterpolate(
|
|
660
|
+
i0.ɵɵtextInterpolate(line_r20.Product || "Line Item");
|
|
643
661
|
i0.ɵɵadvance(2);
|
|
644
|
-
i0.ɵɵtextInterpolate1("$", (
|
|
662
|
+
i0.ɵɵtextInterpolate1("$", (line_r20.UnitPrice || 0).toFixed(2));
|
|
645
663
|
i0.ɵɵadvance(2);
|
|
646
|
-
i0.ɵɵtextInterpolate1("$", (
|
|
664
|
+
i0.ɵɵtextInterpolate1("$", (line_r20.LineTotalGross || 0).toFixed(2));
|
|
647
665
|
i0.ɵɵadvance(5);
|
|
648
|
-
i0.ɵɵproperty("ngModel", ctx_r1.GetLineAllocation(
|
|
666
|
+
i0.ɵɵproperty("ngModel", ctx_r1.GetLineAllocation(line_r20.ID || ""))("disabled", ctx_r1.IsCaptured);
|
|
649
667
|
i0.ɵɵadvance(2);
|
|
650
668
|
i0.ɵɵconditional(!ctx_r1.IsCaptured ? 16 : -1);
|
|
651
669
|
} }
|
|
652
|
-
function
|
|
653
|
-
i0.ɵɵelementStart(0, "tr",
|
|
654
|
-
i0.ɵɵelement(4, "i",
|
|
670
|
+
function BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_43_Conditional_49_Conditional_35_For_25_Conditional_33_Template(rf, ctx) { if (rf & 1) {
|
|
671
|
+
i0.ɵɵelementStart(0, "tr", 141)(1, "td", 144)(2, "div", 145)(3, "div", 146);
|
|
672
|
+
i0.ɵɵelement(4, "i", 142);
|
|
655
673
|
i0.ɵɵelementStart(5, "span");
|
|
656
674
|
i0.ɵɵtext(6, "Order Line Items (Targeted Line Allocations)");
|
|
657
675
|
i0.ɵɵelementEnd()();
|
|
658
|
-
i0.ɵɵelementStart(7, "table",
|
|
676
|
+
i0.ɵɵelementStart(7, "table", 147)(8, "thead")(9, "tr")(10, "th");
|
|
659
677
|
i0.ɵɵtext(11, "#");
|
|
660
678
|
i0.ɵɵelementEnd();
|
|
661
679
|
i0.ɵɵelementStart(12, "th");
|
|
662
680
|
i0.ɵɵtext(13, "Product");
|
|
663
681
|
i0.ɵɵelementEnd();
|
|
664
|
-
i0.ɵɵelementStart(14, "th",
|
|
682
|
+
i0.ɵɵelementStart(14, "th", 109);
|
|
665
683
|
i0.ɵɵtext(15, "Unit Price");
|
|
666
684
|
i0.ɵɵelementEnd();
|
|
667
|
-
i0.ɵɵelementStart(16, "th",
|
|
685
|
+
i0.ɵɵelementStart(16, "th", 109);
|
|
668
686
|
i0.ɵɵtext(17, "Gross");
|
|
669
687
|
i0.ɵɵelementEnd();
|
|
670
|
-
i0.ɵɵelementStart(18, "th",
|
|
688
|
+
i0.ɵɵelementStart(18, "th", 126);
|
|
671
689
|
i0.ɵɵtext(19, "Line Allocation");
|
|
672
690
|
i0.ɵɵelementEnd();
|
|
673
|
-
i0.ɵɵelement(20, "th",
|
|
691
|
+
i0.ɵɵelement(20, "th", 148);
|
|
674
692
|
i0.ɵɵelementEnd()();
|
|
675
693
|
i0.ɵɵelementStart(21, "tbody");
|
|
676
|
-
i0.ɵɵrepeaterCreate(22,
|
|
694
|
+
i0.ɵɵrepeaterCreate(22, BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_43_Conditional_49_Conditional_35_For_25_Conditional_33_For_23_Template, 17, 7, "tr", null, _forTrack0);
|
|
677
695
|
i0.ɵɵelementEnd()()()()();
|
|
678
696
|
} if (rf & 2) {
|
|
679
|
-
const
|
|
697
|
+
const order_r17 = i0.ɵɵnextContext().$implicit;
|
|
680
698
|
const ctx_r1 = i0.ɵɵnextContext(5);
|
|
681
699
|
i0.ɵɵadvance();
|
|
682
700
|
i0.ɵɵattribute("colspan", ctx_r1.hasPayer ? 10 : 11);
|
|
683
701
|
i0.ɵɵadvance(21);
|
|
684
|
-
i0.ɵɵrepeater(ctx_r1.GetOrderLines(
|
|
702
|
+
i0.ɵɵrepeater(ctx_r1.GetOrderLines(order_r17.ID || ""));
|
|
685
703
|
} }
|
|
686
|
-
function
|
|
687
|
-
const
|
|
688
|
-
i0.ɵɵelementStart(0, "tr",
|
|
689
|
-
i0.ɵɵlistener("click", function
|
|
690
|
-
i0.ɵɵelement(3, "i",
|
|
704
|
+
function BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_43_Conditional_49_Conditional_35_For_25_Template(rf, ctx) { if (rf & 1) {
|
|
705
|
+
const _r16 = i0.ɵɵgetCurrentView();
|
|
706
|
+
i0.ɵɵelementStart(0, "tr", 128)(1, "td")(2, "button", 129);
|
|
707
|
+
i0.ɵɵlistener("click", function BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_43_Conditional_49_Conditional_35_For_25_Template_button_click_2_listener() { const order_r17 = i0.ɵɵrestoreView(_r16).$implicit; const ctx_r1 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r1.ToggleOrderExpanded(order_r17.ID || "")); });
|
|
708
|
+
i0.ɵɵelement(3, "i", 130);
|
|
691
709
|
i0.ɵɵelementEnd()();
|
|
692
|
-
i0.ɵɵconditionalCreate(4,
|
|
693
|
-
i0.ɵɵelementStart(5, "td")(6, "button",
|
|
694
|
-
i0.ɵɵlistener("click", function
|
|
710
|
+
i0.ɵɵconditionalCreate(4, BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_43_Conditional_49_Conditional_35_For_25_Conditional_4_Template, 2, 1, "td", 131);
|
|
711
|
+
i0.ɵɵelementStart(5, "td")(6, "button", 110);
|
|
712
|
+
i0.ɵɵlistener("click", function BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_43_Conditional_49_Conditional_35_For_25_Template_button_click_6_listener($event) { const order_r17 = i0.ɵɵrestoreView(_r16).$implicit; const ctx_r1 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r1.OpenOrderRecord(order_r17, $event)); });
|
|
695
713
|
i0.ɵɵelementStart(7, "strong");
|
|
696
714
|
i0.ɵɵtext(8);
|
|
697
715
|
i0.ɵɵelementEnd()();
|
|
698
|
-
i0.ɵɵconditionalCreate(9,
|
|
716
|
+
i0.ɵɵconditionalCreate(9, BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_43_Conditional_49_Conditional_35_For_25_Conditional_9_Template, 2, 1, "div", 132);
|
|
699
717
|
i0.ɵɵelementEnd();
|
|
700
718
|
i0.ɵɵelementStart(10, "td");
|
|
701
719
|
i0.ɵɵtext(11);
|
|
702
720
|
i0.ɵɵelementEnd();
|
|
703
721
|
i0.ɵɵelementStart(12, "td");
|
|
704
|
-
i0.ɵɵconditionalCreate(13,
|
|
722
|
+
i0.ɵɵconditionalCreate(13, BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_43_Conditional_49_Conditional_35_For_25_Conditional_13_Template, 2, 1, "span", 133)(14, BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_43_Conditional_49_Conditional_35_For_25_Conditional_14_Template, 2, 1, "span");
|
|
705
723
|
i0.ɵɵelementEnd();
|
|
706
|
-
i0.ɵɵelementStart(15, "td")(16, "span",
|
|
724
|
+
i0.ɵɵelementStart(15, "td")(16, "span", 134);
|
|
707
725
|
i0.ɵɵtext(17);
|
|
708
726
|
i0.ɵɵelementEnd()();
|
|
709
|
-
i0.ɵɵelementStart(18, "td",
|
|
727
|
+
i0.ɵɵelementStart(18, "td", 111);
|
|
710
728
|
i0.ɵɵtext(19);
|
|
711
729
|
i0.ɵɵelementEnd();
|
|
712
|
-
i0.ɵɵelementStart(20, "td",
|
|
730
|
+
i0.ɵɵelementStart(20, "td", 135);
|
|
713
731
|
i0.ɵɵtext(21);
|
|
714
732
|
i0.ɵɵelementEnd();
|
|
715
|
-
i0.ɵɵelementStart(22, "td",
|
|
733
|
+
i0.ɵɵelementStart(22, "td", 109)(23, "div", 136)(24, "span", 137);
|
|
716
734
|
i0.ɵɵtext(25, "$");
|
|
717
735
|
i0.ɵɵelementEnd();
|
|
718
|
-
i0.ɵɵelementStart(26, "input",
|
|
719
|
-
i0.ɵɵlistener("ngModelChange", function
|
|
736
|
+
i0.ɵɵelementStart(26, "input", 138);
|
|
737
|
+
i0.ɵɵlistener("ngModelChange", function BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_43_Conditional_49_Conditional_35_For_25_Template_input_ngModelChange_26_listener($event) { const order_r17 = i0.ɵɵrestoreView(_r16).$implicit; const ctx_r1 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r1.SetOrderAllocation(order_r17.ID || "", $event)); });
|
|
720
738
|
i0.ɵɵelementEnd()();
|
|
721
|
-
i0.ɵɵconditionalCreate(27,
|
|
739
|
+
i0.ɵɵconditionalCreate(27, BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_43_Conditional_49_Conditional_35_For_25_Conditional_27_Template, 3, 0, "div", 139);
|
|
722
740
|
i0.ɵɵelementEnd();
|
|
723
|
-
i0.ɵɵelementStart(28, "td",
|
|
741
|
+
i0.ɵɵelementStart(28, "td", 111);
|
|
724
742
|
i0.ɵɵtext(29);
|
|
725
|
-
i0.ɵɵconditionalCreate(30,
|
|
743
|
+
i0.ɵɵconditionalCreate(30, BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_43_Conditional_49_Conditional_35_For_25_Conditional_30_Template, 2, 1, "div", 139);
|
|
726
744
|
i0.ɵɵelementEnd();
|
|
727
|
-
i0.ɵɵelementStart(31, "td",
|
|
728
|
-
i0.ɵɵconditionalCreate(32,
|
|
745
|
+
i0.ɵɵelementStart(31, "td", 109);
|
|
746
|
+
i0.ɵɵconditionalCreate(32, BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_43_Conditional_49_Conditional_35_For_25_Conditional_32_Template, 2, 1, "button", 140);
|
|
729
747
|
i0.ɵɵelementEnd()();
|
|
730
|
-
i0.ɵɵconditionalCreate(33,
|
|
748
|
+
i0.ɵɵconditionalCreate(33, BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_43_Conditional_49_Conditional_35_For_25_Conditional_33_Template, 24, 1, "tr", 141);
|
|
731
749
|
} if (rf & 2) {
|
|
732
|
-
const
|
|
750
|
+
const order_r17 = ctx.$implicit;
|
|
733
751
|
const ctx_r1 = i0.ɵɵnextContext(5);
|
|
734
|
-
i0.ɵɵclassProp("is-expanded", ctx_r1.IsOrderExpanded(
|
|
752
|
+
i0.ɵɵclassProp("is-expanded", ctx_r1.IsOrderExpanded(order_r17.ID || ""));
|
|
735
753
|
i0.ɵɵadvance(3);
|
|
736
|
-
i0.ɵɵclassProp("fa-chevron-down", ctx_r1.IsOrderExpanded(
|
|
754
|
+
i0.ɵɵclassProp("fa-chevron-down", ctx_r1.IsOrderExpanded(order_r17.ID || ""))("fa-chevron-right", !ctx_r1.IsOrderExpanded(order_r17.ID || ""));
|
|
737
755
|
i0.ɵɵadvance();
|
|
738
756
|
i0.ɵɵconditional(!ctx_r1.hasPayer ? 4 : -1);
|
|
739
757
|
i0.ɵɵadvance(4);
|
|
740
|
-
i0.ɵɵtextInterpolate(
|
|
758
|
+
i0.ɵɵtextInterpolate(order_r17.OrderNumber);
|
|
741
759
|
i0.ɵɵadvance();
|
|
742
|
-
i0.ɵɵconditional(
|
|
760
|
+
i0.ɵɵconditional(order_r17.Description ? 9 : -1);
|
|
743
761
|
i0.ɵɵadvance(2);
|
|
744
|
-
i0.ɵɵtextInterpolate(ctx_r1.FormatOrderDate(
|
|
762
|
+
i0.ɵɵtextInterpolate(ctx_r1.FormatOrderDate(order_r17));
|
|
745
763
|
i0.ɵɵadvance(2);
|
|
746
|
-
i0.ɵɵconditional(ctx_r1.GetOrderDaysOverdue(
|
|
764
|
+
i0.ɵɵconditional(ctx_r1.GetOrderDaysOverdue(order_r17) > 0 ? 13 : 14);
|
|
747
765
|
i0.ɵɵadvance(4);
|
|
748
|
-
i0.ɵɵtextInterpolate(
|
|
766
|
+
i0.ɵɵtextInterpolate(order_r17.Company || "Default");
|
|
749
767
|
i0.ɵɵadvance(2);
|
|
750
|
-
i0.ɵɵtextInterpolate1("$", (
|
|
768
|
+
i0.ɵɵtextInterpolate1("$", (order_r17.TotalGross || 0).toFixed(2));
|
|
751
769
|
i0.ɵɵadvance(2);
|
|
752
|
-
i0.ɵɵtextInterpolate1("$", (
|
|
770
|
+
i0.ɵɵtextInterpolate1("$", (order_r17.Balance ?? order_r17.TotalGross ?? 0).toFixed(2));
|
|
753
771
|
i0.ɵɵadvance(2);
|
|
754
|
-
i0.ɵɵclassProp("is-derived", ctx_r1.HasLineAllocations(
|
|
772
|
+
i0.ɵɵclassProp("is-derived", ctx_r1.HasLineAllocations(order_r17.ID || ""));
|
|
755
773
|
i0.ɵɵadvance(3);
|
|
756
|
-
i0.ɵɵproperty("ngModel", ctx_r1.GetOrderAllocation(
|
|
774
|
+
i0.ɵɵproperty("ngModel", ctx_r1.GetOrderAllocation(order_r17.ID || ""))("disabled", ctx_r1.IsCaptured || ctx_r1.HasLineAllocations(order_r17.ID || ""))("title", ctx_r1.HasLineAllocations(order_r17.ID || "") ? "Order allocation is driven by line item allocations below" : "Enter amount to allocate to order");
|
|
757
775
|
i0.ɵɵadvance();
|
|
758
|
-
i0.ɵɵconditional(ctx_r1.HasLineAllocations(
|
|
776
|
+
i0.ɵɵconditional(ctx_r1.HasLineAllocations(order_r17.ID || "") ? 27 : -1);
|
|
759
777
|
i0.ɵɵadvance();
|
|
760
|
-
i0.ɵɵclassProp("text-muted", ctx_r1.CalculateLeavesBalance(
|
|
778
|
+
i0.ɵɵclassProp("text-muted", ctx_r1.CalculateLeavesBalance(order_r17) === 0);
|
|
761
779
|
i0.ɵɵadvance();
|
|
762
|
-
i0.ɵɵtextInterpolate1(" ", ctx_r1.FormatLeavesBalance(
|
|
780
|
+
i0.ɵɵtextInterpolate1(" ", ctx_r1.FormatLeavesBalance(order_r17), " ");
|
|
763
781
|
i0.ɵɵadvance();
|
|
764
|
-
i0.ɵɵconditional(ctx_r1.FormatLeavesCredit(
|
|
782
|
+
i0.ɵɵconditional(ctx_r1.FormatLeavesCredit(order_r17) ? 30 : -1);
|
|
765
783
|
i0.ɵɵadvance(2);
|
|
766
784
|
i0.ɵɵconditional(!ctx_r1.IsCaptured ? 32 : -1);
|
|
767
785
|
i0.ɵɵadvance();
|
|
768
|
-
i0.ɵɵconditional(ctx_r1.IsOrderExpanded(
|
|
786
|
+
i0.ɵɵconditional(ctx_r1.IsOrderExpanded(order_r17.ID || "") ? 33 : -1);
|
|
769
787
|
} }
|
|
770
|
-
function
|
|
771
|
-
i0.ɵɵelementStart(0, "div",
|
|
772
|
-
i0.ɵɵelement(4, "th",
|
|
773
|
-
i0.ɵɵconditionalCreate(5,
|
|
788
|
+
function BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_43_Conditional_49_Conditional_35_Template(rf, ctx) { if (rf & 1) {
|
|
789
|
+
i0.ɵɵelementStart(0, "div", 105)(1, "table", 108)(2, "thead")(3, "tr");
|
|
790
|
+
i0.ɵɵelement(4, "th", 125);
|
|
791
|
+
i0.ɵɵconditionalCreate(5, BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_43_Conditional_49_Conditional_35_Conditional_5_Template, 2, 0, "th");
|
|
774
792
|
i0.ɵɵelementStart(6, "th");
|
|
775
793
|
i0.ɵɵtext(7, "Order \u2116");
|
|
776
794
|
i0.ɵɵelementEnd();
|
|
@@ -783,22 +801,22 @@ function BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_43_Conditio
|
|
|
783
801
|
i0.ɵɵelementStart(12, "th");
|
|
784
802
|
i0.ɵɵtext(13, "Company");
|
|
785
803
|
i0.ɵɵelementEnd();
|
|
786
|
-
i0.ɵɵelementStart(14, "th",
|
|
804
|
+
i0.ɵɵelementStart(14, "th", 109);
|
|
787
805
|
i0.ɵɵtext(15, "Gross");
|
|
788
806
|
i0.ɵɵelementEnd();
|
|
789
|
-
i0.ɵɵelementStart(16, "th",
|
|
807
|
+
i0.ɵɵelementStart(16, "th", 109);
|
|
790
808
|
i0.ɵɵtext(17, "Open Balance");
|
|
791
809
|
i0.ɵɵelementEnd();
|
|
792
|
-
i0.ɵɵelementStart(18, "th",
|
|
810
|
+
i0.ɵɵelementStart(18, "th", 126);
|
|
793
811
|
i0.ɵɵtext(19, "Apply Amount");
|
|
794
812
|
i0.ɵɵelementEnd();
|
|
795
|
-
i0.ɵɵelementStart(20, "th",
|
|
813
|
+
i0.ɵɵelementStart(20, "th", 109);
|
|
796
814
|
i0.ɵɵtext(21, "Leaves Balance");
|
|
797
815
|
i0.ɵɵelementEnd();
|
|
798
|
-
i0.ɵɵelement(22, "th",
|
|
816
|
+
i0.ɵɵelement(22, "th", 127);
|
|
799
817
|
i0.ɵɵelementEnd()();
|
|
800
818
|
i0.ɵɵelementStart(23, "tbody");
|
|
801
|
-
i0.ɵɵrepeaterCreate(24,
|
|
819
|
+
i0.ɵɵrepeaterCreate(24, BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_43_Conditional_49_Conditional_35_For_25_Template, 34, 26, null, null, _forTrack0);
|
|
802
820
|
i0.ɵɵelementEnd()()();
|
|
803
821
|
} if (rf & 2) {
|
|
804
822
|
const ctx_r1 = i0.ɵɵnextContext(4);
|
|
@@ -807,44 +825,44 @@ function BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_43_Conditio
|
|
|
807
825
|
i0.ɵɵadvance(19);
|
|
808
826
|
i0.ɵɵrepeater(ctx_r1.FilteredOpenOrders);
|
|
809
827
|
} }
|
|
810
|
-
function
|
|
811
|
-
i0.ɵɵelementStart(0, "div",
|
|
828
|
+
function BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_43_Conditional_49_Template(rf, ctx) { if (rf & 1) {
|
|
829
|
+
i0.ɵɵelementStart(0, "div", 92)(1, "div", 93)(2, "div", 94)(3, "span", 95);
|
|
812
830
|
i0.ɵɵtext(4, "Payment Received");
|
|
813
831
|
i0.ɵɵelementEnd();
|
|
814
|
-
i0.ɵɵelementStart(5, "span",
|
|
832
|
+
i0.ɵɵelementStart(5, "span", 96);
|
|
815
833
|
i0.ɵɵtext(6);
|
|
816
834
|
i0.ɵɵelementEnd()();
|
|
817
|
-
i0.ɵɵelementStart(7, "div",
|
|
818
|
-
i0.ɵɵelement(8, "i",
|
|
835
|
+
i0.ɵɵelementStart(7, "div", 97);
|
|
836
|
+
i0.ɵɵelement(8, "i", 98);
|
|
819
837
|
i0.ɵɵelementEnd();
|
|
820
|
-
i0.ɵɵelementStart(9, "div",
|
|
838
|
+
i0.ɵɵelementStart(9, "div", 94)(10, "span", 95);
|
|
821
839
|
i0.ɵɵtext(11, "Allocated");
|
|
822
840
|
i0.ɵɵelementEnd();
|
|
823
|
-
i0.ɵɵelementStart(12, "span",
|
|
841
|
+
i0.ɵɵelementStart(12, "span", 96);
|
|
824
842
|
i0.ɵɵtext(13);
|
|
825
843
|
i0.ɵɵelementEnd()();
|
|
826
|
-
i0.ɵɵelementStart(14, "div",
|
|
827
|
-
i0.ɵɵelement(15, "i",
|
|
844
|
+
i0.ɵɵelementStart(14, "div", 97);
|
|
845
|
+
i0.ɵɵelement(15, "i", 106);
|
|
828
846
|
i0.ɵɵelementEnd();
|
|
829
|
-
i0.ɵɵelementStart(16, "div",
|
|
847
|
+
i0.ɵɵelementStart(16, "div", 94)(17, "span", 95);
|
|
830
848
|
i0.ɵɵtext(18, "Unallocated Remainder");
|
|
831
849
|
i0.ɵɵelementEnd();
|
|
832
|
-
i0.ɵɵelementStart(19, "span",
|
|
850
|
+
i0.ɵɵelementStart(19, "span", 96);
|
|
833
851
|
i0.ɵɵtext(20);
|
|
834
852
|
i0.ɵɵelementEnd()()();
|
|
835
|
-
i0.ɵɵelementStart(21, "div",
|
|
836
|
-
i0.ɵɵconditionalCreate(22,
|
|
853
|
+
i0.ɵɵelementStart(21, "div", 112);
|
|
854
|
+
i0.ɵɵconditionalCreate(22, BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_43_Conditional_49_Conditional_22_Template, 3, 0)(23, BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_43_Conditional_49_Conditional_23_Template, 3, 1)(24, BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_43_Conditional_49_Conditional_24_Template, 3, 1);
|
|
837
855
|
i0.ɵɵelementEnd()();
|
|
838
|
-
i0.ɵɵelementStart(25, "div",
|
|
839
|
-
i0.ɵɵelement(28, "i",
|
|
856
|
+
i0.ɵɵelementStart(25, "div", 99)(26, "div", 100)(27, "h2", 101);
|
|
857
|
+
i0.ɵɵelement(28, "i", 90);
|
|
840
858
|
i0.ɵɵtext(29, " Open orders ");
|
|
841
859
|
i0.ɵɵelementEnd();
|
|
842
|
-
i0.ɵɵconditionalCreate(30,
|
|
860
|
+
i0.ɵɵconditionalCreate(30, BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_43_Conditional_49_Conditional_30_Template, 2, 1, "span", 55);
|
|
843
861
|
i0.ɵɵelementEnd();
|
|
844
|
-
i0.ɵɵconditionalCreate(31,
|
|
862
|
+
i0.ɵɵconditionalCreate(31, BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_43_Conditional_49_Conditional_31_Template, 10, 1, "div", 113);
|
|
845
863
|
i0.ɵɵelementEnd();
|
|
846
|
-
i0.ɵɵelementStart(32, "div",
|
|
847
|
-
i0.ɵɵconditionalCreate(33,
|
|
864
|
+
i0.ɵɵelementStart(32, "div", 102);
|
|
865
|
+
i0.ɵɵconditionalCreate(33, BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_43_Conditional_49_Conditional_33_Template, 2, 0, "div", 103)(34, BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_43_Conditional_49_Conditional_34_Template, 1, 0, "mj-empty-state", 114)(35, BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_43_Conditional_49_Conditional_35_Template, 26, 1, "div", 105);
|
|
848
866
|
i0.ɵɵelementEnd();
|
|
849
867
|
} if (rf & 2) {
|
|
850
868
|
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
@@ -903,22 +921,22 @@ function BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_43_Template
|
|
|
903
921
|
i0.ɵɵelementEnd()();
|
|
904
922
|
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);
|
|
905
923
|
i0.ɵɵelementEnd();
|
|
906
|
-
i0.ɵɵconditionalCreate(34, BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_43_Conditional_34_Template, 19, 6, "div", 46)(35, BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_43_Conditional_35_Template, 31, 11, "div", 46)(36, BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_43_Conditional_36_Template,
|
|
907
|
-
i0.ɵɵelementStart(
|
|
908
|
-
i0.ɵɵlistener("Navigate", function
|
|
924
|
+
i0.ɵɵconditionalCreate(34, BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_43_Conditional_34_Template, 19, 6, "div", 46)(35, BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_43_Conditional_35_Template, 31, 11, "div", 46)(36, BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_43_Conditional_36_Template, 9, 2, "div", 46)(37, BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_43_Conditional_37_Template, 39, 12, "div", 46)(38, BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_43_Conditional_38_Template, 10, 2, "div", 46);
|
|
925
|
+
i0.ɵɵelementStart(39, "mj-form-field", 47);
|
|
926
|
+
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)); });
|
|
909
927
|
i0.ɵɵelementEnd();
|
|
910
|
-
i0.ɵɵconditionalCreate(
|
|
911
|
-
i0.ɵɵelementStart(
|
|
912
|
-
i0.ɵɵlistener("Navigate", function
|
|
928
|
+
i0.ɵɵconditionalCreate(40, BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_43_Conditional_40_Template, 2, 0, "div", 48);
|
|
929
|
+
i0.ɵɵelementStart(41, "mj-form-field", 49);
|
|
930
|
+
i0.ɵɵlistener("Navigate", function BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_43_Template_mj_form_field_Navigate_41_listener($event) { i0.ɵɵrestoreView(_r4); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.OnFormNavigate($event)); });
|
|
913
931
|
i0.ɵɵelementEnd()();
|
|
914
|
-
i0.ɵɵelementStart(
|
|
915
|
-
i0.ɵɵtext(
|
|
932
|
+
i0.ɵɵelementStart(42, "div", 50)(43, "span", 51);
|
|
933
|
+
i0.ɵɵtext(44, "Net Settlement Amount");
|
|
916
934
|
i0.ɵɵelementEnd();
|
|
917
|
-
i0.ɵɵelementStart(
|
|
918
|
-
i0.ɵɵtext(
|
|
935
|
+
i0.ɵɵelementStart(45, "span", 52);
|
|
936
|
+
i0.ɵɵtext(46);
|
|
919
937
|
i0.ɵɵelementEnd()()()()();
|
|
920
|
-
i0.ɵɵelementStart(
|
|
921
|
-
i0.ɵɵconditionalCreate(
|
|
938
|
+
i0.ɵɵelementStart(47, "main", 53);
|
|
939
|
+
i0.ɵɵconditionalCreate(48, BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_43_Conditional_48_Template, 25, 6)(49, BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_43_Conditional_49_Template, 36, 15);
|
|
922
940
|
i0.ɵɵelementEnd()();
|
|
923
941
|
} if (rf & 2) {
|
|
924
942
|
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
@@ -935,21 +953,21 @@ function BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_43_Template
|
|
|
935
953
|
i0.ɵɵadvance(6);
|
|
936
954
|
i0.ɵɵconditional(ctx_r1.ComposeMode && ctx_r1.PaymentTypes.length > 0 ? 32 : 33);
|
|
937
955
|
i0.ɵɵadvance(2);
|
|
938
|
-
i0.ɵɵconditional(ctx_r1.
|
|
939
|
-
i0.ɵɵadvance(
|
|
956
|
+
i0.ɵɵconditional(ctx_r1.InstrumentPanel === "check" ? 34 : ctx_r1.InstrumentPanel === "ach" ? 35 : ctx_r1.InstrumentPanel === "giftcard" ? 36 : ctx_r1.InstrumentPanel === "card" ? 37 : ctx_r1.InstrumentPanel === "reference" ? 38 : -1);
|
|
957
|
+
i0.ɵɵadvance(5);
|
|
940
958
|
i0.ɵɵproperty("Record", ctx_r1.record)("ShowLabel", true)("EditMode", ctx_r1.ComposeMode)("FormContext", ctx_r1.formContext);
|
|
941
959
|
i0.ɵɵadvance();
|
|
942
|
-
i0.ɵɵconditional(ctx_r1.ReceivingCompanyMissing && !ctx_r1.record.ReceivingCompanyID ?
|
|
960
|
+
i0.ɵɵconditional(ctx_r1.ReceivingCompanyMissing && !ctx_r1.record.ReceivingCompanyID ? 40 : -1);
|
|
943
961
|
i0.ɵɵadvance();
|
|
944
962
|
i0.ɵɵproperty("Record", ctx_r1.record)("ShowLabel", true)("EditMode", ctx_r1.ComposeMode)("FormContext", ctx_r1.formContext);
|
|
945
963
|
i0.ɵɵadvance(5);
|
|
946
964
|
i0.ɵɵtextInterpolate(ctx_r1.FormattedNetAmount);
|
|
947
965
|
i0.ɵɵadvance(2);
|
|
948
|
-
i0.ɵɵconditional(ctx_r1.IsCaptured ?
|
|
966
|
+
i0.ɵɵconditional(ctx_r1.IsCaptured ? 48 : 49);
|
|
949
967
|
} }
|
|
950
968
|
function BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_44_Conditional_13_Conditional_0_Template(rf, ctx) { if (rf & 1) {
|
|
951
|
-
i0.ɵɵelementStart(0, "div",
|
|
952
|
-
i0.ɵɵelement(1, "mj-loading",
|
|
969
|
+
i0.ɵɵelementStart(0, "div", 103);
|
|
970
|
+
i0.ɵɵelement(1, "mj-loading", 159);
|
|
953
971
|
i0.ɵɵelementEnd();
|
|
954
972
|
} }
|
|
955
973
|
function BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_44_Conditional_13_Conditional_1_Template(rf, ctx) { if (rf & 1) {
|
|
@@ -962,88 +980,88 @@ function BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_44_Conditio
|
|
|
962
980
|
i0.ɵɵtextInterpolate(ctx_r1.RollupError);
|
|
963
981
|
} }
|
|
964
982
|
function BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_44_Conditional_13_Conditional_2_Template(rf, ctx) { if (rf & 1) {
|
|
965
|
-
i0.ɵɵelement(0, "mj-empty-state",
|
|
983
|
+
i0.ɵɵelement(0, "mj-empty-state", 157);
|
|
966
984
|
} }
|
|
967
985
|
function BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_44_Conditional_13_Conditional_3_For_2_For_23_Template(rf, ctx) { if (rf & 1) {
|
|
968
|
-
i0.ɵɵelementStart(0, "tr")(1, "td",
|
|
986
|
+
i0.ɵɵelementStart(0, "tr")(1, "td", 164);
|
|
969
987
|
i0.ɵɵtext(2);
|
|
970
988
|
i0.ɵɵelementEnd();
|
|
971
989
|
i0.ɵɵelementStart(3, "td")(4, "span");
|
|
972
990
|
i0.ɵɵtext(5);
|
|
973
991
|
i0.ɵɵelementEnd()();
|
|
974
|
-
i0.ɵɵelementStart(6, "td",
|
|
992
|
+
i0.ɵɵelementStart(6, "td", 111);
|
|
975
993
|
i0.ɵɵtext(7);
|
|
976
994
|
i0.ɵɵelementEnd();
|
|
977
|
-
i0.ɵɵelementStart(8, "td",
|
|
995
|
+
i0.ɵɵelementStart(8, "td", 111);
|
|
978
996
|
i0.ɵɵtext(9);
|
|
979
997
|
i0.ɵɵelementEnd()();
|
|
980
998
|
} if (rf & 2) {
|
|
981
|
-
const
|
|
999
|
+
const row_r23 = ctx.$implicit;
|
|
982
1000
|
const ctx_r1 = i0.ɵɵnextContext(6);
|
|
983
1001
|
i0.ɵɵadvance(2);
|
|
984
|
-
i0.ɵɵtextInterpolate(
|
|
1002
|
+
i0.ɵɵtextInterpolate(row_r23.AccountCode || "\u2014");
|
|
985
1003
|
i0.ɵɵadvance(3);
|
|
986
|
-
i0.ɵɵtextInterpolate(
|
|
1004
|
+
i0.ɵɵtextInterpolate(row_r23.AccountName);
|
|
987
1005
|
i0.ɵɵadvance(2);
|
|
988
|
-
i0.ɵɵtextInterpolate(
|
|
1006
|
+
i0.ɵɵtextInterpolate(row_r23.Debit ? ctx_r1.RollupAmount(row_r23.Debit) : "\u2014");
|
|
989
1007
|
i0.ɵɵadvance(2);
|
|
990
|
-
i0.ɵɵtextInterpolate(
|
|
1008
|
+
i0.ɵɵtextInterpolate(row_r23.Credit ? ctx_r1.RollupAmount(row_r23.Credit) : "\u2014");
|
|
991
1009
|
} }
|
|
992
1010
|
function BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_44_Conditional_13_Conditional_3_For_2_Template(rf, ctx) { if (rf & 1) {
|
|
993
|
-
i0.ɵɵelementStart(0, "div",
|
|
1011
|
+
i0.ɵɵelementStart(0, "div", 160)(1, "div", 29)(2, "div")(3, "h3", 30);
|
|
994
1012
|
i0.ɵɵtext(4);
|
|
995
1013
|
i0.ɵɵelementEnd();
|
|
996
|
-
i0.ɵɵelementStart(5, "div",
|
|
1014
|
+
i0.ɵɵelementStart(5, "div", 132);
|
|
997
1015
|
i0.ɵɵtext(6);
|
|
998
1016
|
i0.ɵɵelementEnd()();
|
|
999
1017
|
i0.ɵɵelementStart(7, "span", 55);
|
|
1000
1018
|
i0.ɵɵtext(8);
|
|
1001
1019
|
i0.ɵɵelementEnd()();
|
|
1002
|
-
i0.ɵɵelementStart(9, "div",
|
|
1020
|
+
i0.ɵɵelementStart(9, "div", 161)(10, "table", 162)(11, "thead")(12, "tr")(13, "th");
|
|
1003
1021
|
i0.ɵɵtext(14, "GL Account");
|
|
1004
1022
|
i0.ɵɵelementEnd();
|
|
1005
1023
|
i0.ɵɵelementStart(15, "th");
|
|
1006
1024
|
i0.ɵɵtext(16, "Name");
|
|
1007
1025
|
i0.ɵɵelementEnd();
|
|
1008
|
-
i0.ɵɵelementStart(17, "th",
|
|
1026
|
+
i0.ɵɵelementStart(17, "th", 109);
|
|
1009
1027
|
i0.ɵɵtext(18, "Debit");
|
|
1010
1028
|
i0.ɵɵelementEnd();
|
|
1011
|
-
i0.ɵɵelementStart(19, "th",
|
|
1029
|
+
i0.ɵɵelementStart(19, "th", 109);
|
|
1012
1030
|
i0.ɵɵtext(20, "Credit");
|
|
1013
1031
|
i0.ɵɵelementEnd()()();
|
|
1014
1032
|
i0.ɵɵelementStart(21, "tbody");
|
|
1015
1033
|
i0.ɵɵrepeaterCreate(22, BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_44_Conditional_13_Conditional_3_For_2_For_23_Template, 10, 4, "tr", null, _forTrack2);
|
|
1016
1034
|
i0.ɵɵelementEnd();
|
|
1017
|
-
i0.ɵɵelementStart(24, "tfoot")(25, "tr")(26, "th",
|
|
1035
|
+
i0.ɵɵelementStart(24, "tfoot")(25, "tr")(26, "th", 163);
|
|
1018
1036
|
i0.ɵɵtext(27, "Total");
|
|
1019
1037
|
i0.ɵɵelementEnd();
|
|
1020
|
-
i0.ɵɵelementStart(28, "th",
|
|
1038
|
+
i0.ɵɵelementStart(28, "th", 111);
|
|
1021
1039
|
i0.ɵɵtext(29);
|
|
1022
1040
|
i0.ɵɵelementEnd();
|
|
1023
|
-
i0.ɵɵelementStart(30, "th",
|
|
1041
|
+
i0.ɵɵelementStart(30, "th", 111);
|
|
1024
1042
|
i0.ɵɵtext(31);
|
|
1025
1043
|
i0.ɵɵelementEnd()()()()()();
|
|
1026
1044
|
} if (rf & 2) {
|
|
1027
|
-
const
|
|
1045
|
+
const card_r24 = ctx.$implicit;
|
|
1028
1046
|
const ctx_r1 = i0.ɵɵnextContext(5);
|
|
1029
1047
|
i0.ɵɵadvance(4);
|
|
1030
|
-
i0.ɵɵtextInterpolate(
|
|
1048
|
+
i0.ɵɵtextInterpolate(card_r24.Company);
|
|
1031
1049
|
i0.ɵɵadvance(2);
|
|
1032
|
-
i0.ɵɵtextInterpolate2("",
|
|
1050
|
+
i0.ɵɵtextInterpolate2("", card_r24.Rows.length, " ", card_r24.Rows.length === 1 ? "line" : "lines");
|
|
1033
1051
|
i0.ɵɵadvance();
|
|
1034
|
-
i0.ɵɵclassProp("mjo-badge--success", ctx_r1.CardIsBalanced(
|
|
1052
|
+
i0.ɵɵclassProp("mjo-badge--success", ctx_r1.CardIsBalanced(card_r24))("mjo-badge--error", !ctx_r1.CardIsBalanced(card_r24));
|
|
1035
1053
|
i0.ɵɵadvance();
|
|
1036
|
-
i0.ɵɵtextInterpolate1(" ", ctx_r1.CardIsBalanced(
|
|
1054
|
+
i0.ɵɵtextInterpolate1(" ", ctx_r1.CardIsBalanced(card_r24) ? "Balanced" : "Out of Balance", " ");
|
|
1037
1055
|
i0.ɵɵadvance(14);
|
|
1038
|
-
i0.ɵɵrepeater(
|
|
1056
|
+
i0.ɵɵrepeater(card_r24.Rows);
|
|
1039
1057
|
i0.ɵɵadvance(7);
|
|
1040
|
-
i0.ɵɵtextInterpolate1("$",
|
|
1058
|
+
i0.ɵɵtextInterpolate1("$", card_r24.TotalDebit.toFixed(2));
|
|
1041
1059
|
i0.ɵɵadvance(2);
|
|
1042
|
-
i0.ɵɵtextInterpolate1("$",
|
|
1060
|
+
i0.ɵɵtextInterpolate1("$", card_r24.TotalCredit.toFixed(2));
|
|
1043
1061
|
} }
|
|
1044
1062
|
function BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_44_Conditional_13_Conditional_3_Template(rf, ctx) { if (rf & 1) {
|
|
1045
|
-
i0.ɵɵelementStart(0, "div",
|
|
1046
|
-
i0.ɵɵrepeaterCreate(1, BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_44_Conditional_13_Conditional_3_For_2_Template, 32, 10, "div",
|
|
1063
|
+
i0.ɵɵelementStart(0, "div", 158);
|
|
1064
|
+
i0.ɵɵrepeaterCreate(1, BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_44_Conditional_13_Conditional_3_For_2_Template, 32, 10, "div", 160, _forTrack1);
|
|
1047
1065
|
i0.ɵɵelementEnd();
|
|
1048
1066
|
} if (rf & 2) {
|
|
1049
1067
|
const ctx_r1 = i0.ɵɵnextContext(4);
|
|
@@ -1051,41 +1069,41 @@ function BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_44_Conditio
|
|
|
1051
1069
|
i0.ɵɵrepeater(ctx_r1.RollupCards);
|
|
1052
1070
|
} }
|
|
1053
1071
|
function BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_44_Conditional_13_Template(rf, ctx) { if (rf & 1) {
|
|
1054
|
-
i0.ɵɵconditionalCreate(0, BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_44_Conditional_13_Conditional_0_Template, 2, 0, "div",
|
|
1072
|
+
i0.ɵɵconditionalCreate(0, BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_44_Conditional_13_Conditional_0_Template, 2, 0, "div", 103)(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, 1, 0, "mj-empty-state", 157)(3, BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_44_Conditional_13_Conditional_3_Template, 3, 0, "div", 158);
|
|
1055
1073
|
} if (rf & 2) {
|
|
1056
1074
|
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
1057
1075
|
i0.ɵɵconditional(ctx_r1.RollupLoading ? 0 : ctx_r1.RollupError ? 1 : ctx_r1.RollupCards.length === 0 ? 2 : 3);
|
|
1058
1076
|
} }
|
|
1059
1077
|
function BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_44_Conditional_14_Conditional_0_Template(rf, ctx) { if (rf & 1) {
|
|
1060
|
-
const
|
|
1061
|
-
i0.ɵɵelementStart(0, "mj-explorer-entity-data-grid",
|
|
1062
|
-
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(
|
|
1078
|
+
const _r25 = i0.ɵɵgetCurrentView();
|
|
1079
|
+
i0.ɵɵelementStart(0, "mj-explorer-entity-data-grid", 166);
|
|
1080
|
+
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(_r25); const ctx_r1 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r1.OnFormNavigate($event)); });
|
|
1063
1081
|
i0.ɵɵelementEnd();
|
|
1064
1082
|
} if (rf & 2) {
|
|
1065
1083
|
const ctx_r1 = i0.ɵɵnextContext(4);
|
|
1066
1084
|
i0.ɵɵproperty("Params", ctx_r1.PaymentJournalEntryParams)("AllowLoad", true)("ShowToolbar", false);
|
|
1067
1085
|
} }
|
|
1068
1086
|
function BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_44_Conditional_14_Template(rf, ctx) { if (rf & 1) {
|
|
1069
|
-
i0.ɵɵconditionalCreate(0, BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_44_Conditional_14_Conditional_0_Template, 1, 3, "mj-explorer-entity-data-grid",
|
|
1087
|
+
i0.ɵɵconditionalCreate(0, BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_44_Conditional_14_Conditional_0_Template, 1, 3, "mj-explorer-entity-data-grid", 165);
|
|
1070
1088
|
} if (rf & 2) {
|
|
1071
1089
|
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
1072
1090
|
i0.ɵɵconditional(ctx_r1.PaymentJournalEntryParams ? 0 : -1);
|
|
1073
1091
|
} }
|
|
1074
1092
|
function BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_44_Template(rf, ctx) { if (rf & 1) {
|
|
1075
|
-
const
|
|
1076
|
-
i0.ɵɵelementStart(0, "div", 20)(1, "div",
|
|
1077
|
-
i0.ɵɵelement(4, "i",
|
|
1093
|
+
const _r22 = i0.ɵɵgetCurrentView();
|
|
1094
|
+
i0.ɵɵelementStart(0, "div", 20)(1, "div", 152)(2, "div")(3, "h2");
|
|
1095
|
+
i0.ɵɵelement(4, "i", 153);
|
|
1078
1096
|
i0.ɵɵtext(5, " General Ledger Postings");
|
|
1079
1097
|
i0.ɵɵelementEnd();
|
|
1080
|
-
i0.ɵɵelementStart(6, "p",
|
|
1098
|
+
i0.ɵɵelementStart(6, "p", 154);
|
|
1081
1099
|
i0.ɵɵtext(7, "Double-entry balanced accounting entries booked across operating and receivable accounts.");
|
|
1082
1100
|
i0.ɵɵelementEnd()();
|
|
1083
|
-
i0.ɵɵelementStart(8, "div",
|
|
1084
|
-
i0.ɵɵlistener("click", function BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_44_Template_button_click_9_listener() { i0.ɵɵrestoreView(
|
|
1101
|
+
i0.ɵɵelementStart(8, "div", 155)(9, "button", 156);
|
|
1102
|
+
i0.ɵɵlistener("click", function BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_44_Template_button_click_9_listener() { i0.ɵɵrestoreView(_r22); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.SetAccountingView("summary")); });
|
|
1085
1103
|
i0.ɵɵtext(10, " Summary (Rolled-up) ");
|
|
1086
1104
|
i0.ɵɵelementEnd();
|
|
1087
|
-
i0.ɵɵelementStart(11, "button",
|
|
1088
|
-
i0.ɵɵlistener("click", function BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_44_Template_button_click_11_listener() { i0.ɵɵrestoreView(
|
|
1105
|
+
i0.ɵɵelementStart(11, "button", 156);
|
|
1106
|
+
i0.ɵɵlistener("click", function BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_44_Template_button_click_11_listener() { i0.ɵɵrestoreView(_r22); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.SetAccountingView("detail")); });
|
|
1089
1107
|
i0.ɵɵtext(12, " By Journal Entry ");
|
|
1090
1108
|
i0.ɵɵelementEnd()()();
|
|
1091
1109
|
i0.ɵɵconditionalCreate(13, BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_44_Conditional_13_Template, 4, 1)(14, BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_44_Conditional_14_Template, 1, 1);
|
|
@@ -1100,37 +1118,37 @@ function BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_44_Template
|
|
|
1100
1118
|
i0.ɵɵconditional(ctx_r1.AccountingView === "summary" ? 13 : 14);
|
|
1101
1119
|
} }
|
|
1102
1120
|
function BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_45_Template(rf, ctx) { if (rf & 1) {
|
|
1103
|
-
const
|
|
1104
|
-
i0.ɵɵelementStart(0, "div", 20)(1, "div",
|
|
1105
|
-
i0.ɵɵelement(5, "i",
|
|
1121
|
+
const _r26 = i0.ɵɵgetCurrentView();
|
|
1122
|
+
i0.ɵɵelementStart(0, "div", 20)(1, "div", 167)(2, "div", 28)(3, "div", 29)(4, "h3", 30);
|
|
1123
|
+
i0.ɵɵelement(5, "i", 168);
|
|
1106
1124
|
i0.ɵɵtext(6, " Processing & Gateway Details");
|
|
1107
1125
|
i0.ɵɵelementEnd()();
|
|
1108
|
-
i0.ɵɵelementStart(7, "div",
|
|
1109
|
-
i0.ɵɵlistener("Navigate", function BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_45_Template_mj_form_field_Navigate_8_listener($event) { i0.ɵɵrestoreView(
|
|
1126
|
+
i0.ɵɵelementStart(7, "div", 169)(8, "mj-form-field", 170);
|
|
1127
|
+
i0.ɵɵlistener("Navigate", function BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_45_Template_mj_form_field_Navigate_8_listener($event) { i0.ɵɵrestoreView(_r26); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.OnFormNavigate($event)); });
|
|
1110
1128
|
i0.ɵɵelementEnd();
|
|
1111
|
-
i0.ɵɵelementStart(9, "mj-form-field",
|
|
1112
|
-
i0.ɵɵlistener("Navigate", function BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_45_Template_mj_form_field_Navigate_9_listener($event) { i0.ɵɵrestoreView(
|
|
1129
|
+
i0.ɵɵelementStart(9, "mj-form-field", 171);
|
|
1130
|
+
i0.ɵɵlistener("Navigate", function BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_45_Template_mj_form_field_Navigate_9_listener($event) { i0.ɵɵrestoreView(_r26); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.OnFormNavigate($event)); });
|
|
1113
1131
|
i0.ɵɵelementEnd();
|
|
1114
|
-
i0.ɵɵelementStart(10, "mj-form-field",
|
|
1115
|
-
i0.ɵɵlistener("Navigate", function BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_45_Template_mj_form_field_Navigate_10_listener($event) { i0.ɵɵrestoreView(
|
|
1132
|
+
i0.ɵɵelementStart(10, "mj-form-field", 172);
|
|
1133
|
+
i0.ɵɵlistener("Navigate", function BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_45_Template_mj_form_field_Navigate_10_listener($event) { i0.ɵɵrestoreView(_r26); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.OnFormNavigate($event)); });
|
|
1116
1134
|
i0.ɵɵelementEnd();
|
|
1117
|
-
i0.ɵɵelement(11, "mj-form-field",
|
|
1135
|
+
i0.ɵɵelement(11, "mj-form-field", 173)(12, "mj-form-field", 174)(13, "mj-form-field", 175);
|
|
1118
1136
|
i0.ɵɵelementEnd()();
|
|
1119
1137
|
i0.ɵɵelementStart(14, "div", 28)(15, "div", 29)(16, "h3", 30);
|
|
1120
|
-
i0.ɵɵelement(17, "i",
|
|
1138
|
+
i0.ɵɵelement(17, "i", 176);
|
|
1121
1139
|
i0.ɵɵtext(18, " Reversal Info & Notes");
|
|
1122
1140
|
i0.ɵɵelementEnd()();
|
|
1123
|
-
i0.ɵɵelementStart(19, "div",
|
|
1124
|
-
i0.ɵɵlistener("Navigate", function BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_45_Template_mj_form_field_Navigate_20_listener($event) { i0.ɵɵrestoreView(
|
|
1141
|
+
i0.ɵɵelementStart(19, "div", 169)(20, "mj-form-field", 177);
|
|
1142
|
+
i0.ɵɵlistener("Navigate", function BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_45_Template_mj_form_field_Navigate_20_listener($event) { i0.ɵɵrestoreView(_r26); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.OnFormNavigate($event)); });
|
|
1125
1143
|
i0.ɵɵelementEnd();
|
|
1126
|
-
i0.ɵɵelement(21, "mj-form-field",
|
|
1144
|
+
i0.ɵɵelement(21, "mj-form-field", 178)(22, "mj-form-field", 179)(23, "mj-form-field", 180);
|
|
1127
1145
|
i0.ɵɵelementEnd()();
|
|
1128
1146
|
i0.ɵɵelementStart(24, "div", 28)(25, "div", 29)(26, "h3", 30);
|
|
1129
|
-
i0.ɵɵelement(27, "i",
|
|
1147
|
+
i0.ɵɵelement(27, "i", 181);
|
|
1130
1148
|
i0.ɵɵtext(28, " System Metadata");
|
|
1131
1149
|
i0.ɵɵelementEnd()();
|
|
1132
|
-
i0.ɵɵelementStart(29, "div",
|
|
1133
|
-
i0.ɵɵelement(30, "mj-form-field",
|
|
1150
|
+
i0.ɵɵelementStart(29, "div", 169);
|
|
1151
|
+
i0.ɵɵelement(30, "mj-form-field", 182)(31, "mj-form-field", 183);
|
|
1134
1152
|
i0.ɵɵelementEnd()()()();
|
|
1135
1153
|
} if (rf & 2) {
|
|
1136
1154
|
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
@@ -1160,15 +1178,15 @@ function BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_45_Template
|
|
|
1160
1178
|
i0.ɵɵproperty("Record", ctx_r1.record)("ShowLabel", true)("EditMode", false)("FormContext", ctx_r1.formContext);
|
|
1161
1179
|
} }
|
|
1162
1180
|
function BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_46_Template(rf, ctx) { if (rf & 1) {
|
|
1163
|
-
const
|
|
1164
|
-
i0.ɵɵelementStart(0, "div", 20)(1, "mj-collapsible-panel",
|
|
1165
|
-
i0.ɵɵlistener("Navigate", function BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_46_Template_mj_explorer_entity_data_grid_Navigate_2_listener($event) { i0.ɵɵrestoreView(
|
|
1181
|
+
const _r27 = i0.ɵɵgetCurrentView();
|
|
1182
|
+
i0.ɵɵelementStart(0, "div", 20)(1, "mj-collapsible-panel", 184)(2, "mj-explorer-entity-data-grid", 185);
|
|
1183
|
+
i0.ɵɵlistener("Navigate", function BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_46_Template_mj_explorer_entity_data_grid_Navigate_2_listener($event) { i0.ɵɵrestoreView(_r27); 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(_r27); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.SetSectionRowCount("mJBizAppsOrdersStoredValueTransactions", $event.totalRowCount)); });
|
|
1166
1184
|
i0.ɵɵelementEnd()();
|
|
1167
|
-
i0.ɵɵelementStart(3, "mj-collapsible-panel",
|
|
1168
|
-
i0.ɵɵlistener("Navigate", function BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_46_Template_mj_explorer_entity_data_grid_Navigate_4_listener($event) { i0.ɵɵrestoreView(
|
|
1185
|
+
i0.ɵɵelementStart(3, "mj-collapsible-panel", 186)(4, "mj-explorer-entity-data-grid", 185);
|
|
1186
|
+
i0.ɵɵlistener("Navigate", function BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_46_Template_mj_explorer_entity_data_grid_Navigate_4_listener($event) { i0.ɵɵrestoreView(_r27); 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(_r27); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.SetSectionRowCount("mJBizAppsOrdersSubscriptionEvents", $event.totalRowCount)); });
|
|
1169
1187
|
i0.ɵɵelementEnd()();
|
|
1170
|
-
i0.ɵɵelementStart(5, "mj-collapsible-panel",
|
|
1171
|
-
i0.ɵɵlistener("Navigate", function BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_46_Template_mj_explorer_entity_data_grid_Navigate_6_listener($event) { i0.ɵɵrestoreView(
|
|
1188
|
+
i0.ɵɵelementStart(5, "mj-collapsible-panel", 187)(6, "mj-explorer-entity-data-grid", 185);
|
|
1189
|
+
i0.ɵɵlistener("Navigate", function BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_46_Template_mj_explorer_entity_data_grid_Navigate_6_listener($event) { i0.ɵɵrestoreView(_r27); 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(_r27); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.SetSectionRowCount("mJBizAppsOrdersPaymentHeaders", $event.totalRowCount)); });
|
|
1172
1190
|
i0.ɵɵelementEnd()()();
|
|
1173
1191
|
} if (rf & 2) {
|
|
1174
1192
|
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
@@ -1234,7 +1252,7 @@ function BizAppsPaymentHeaderFormComponent_Conditional_0_Template(rf, ctx) { if
|
|
|
1234
1252
|
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)); });
|
|
1235
1253
|
i0.ɵɵelementEnd()();
|
|
1236
1254
|
i0.ɵɵconditionalCreate(42, BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_42_Template, 6, 1, "div", 18);
|
|
1237
|
-
i0.ɵɵconditionalCreate(43, BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_43_Template,
|
|
1255
|
+
i0.ɵɵconditionalCreate(43, BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_43_Template, 50, 28, "div", 19);
|
|
1238
1256
|
i0.ɵɵconditionalCreate(44, BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_44_Template, 15, 5, "div", 20);
|
|
1239
1257
|
i0.ɵɵconditionalCreate(45, BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_45_Template, 32, 48, "div", 20);
|
|
1240
1258
|
i0.ɵɵconditionalCreate(46, BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_46_Template, 7, 24, "div", 20);
|
|
@@ -1370,6 +1388,8 @@ let BizAppsPaymentHeaderFormComponent = class BizAppsPaymentHeaderFormComponent
|
|
|
1370
1388
|
}
|
|
1371
1389
|
async ngOnInit() {
|
|
1372
1390
|
await super.ngOnInit();
|
|
1391
|
+
// Stamped when the form opens a new payment, so a repeated save of it is refused (#847).
|
|
1392
|
+
this.record?.EnsureIdempotencyKey('form');
|
|
1373
1393
|
this.AmountManuallySet = Boolean(this.record?.Amount && this.record.Amount > 0 && this.record.IsSaved);
|
|
1374
1394
|
this.Config = { ...(this.Config ?? {}), ShowRelatedEntities: false };
|
|
1375
1395
|
const savedView = UserInfoEngine.Instance.GetSetting(ACCOUNTING_VIEW_SETTING);
|
|
@@ -1587,6 +1607,27 @@ let BizAppsPaymentHeaderFormComponent = class BizAppsPaymentHeaderFormComponent
|
|
|
1587
1607
|
get RequiresInstrument() {
|
|
1588
1608
|
return Boolean(this.SelectedPaymentType?.RequiresInstrument || this.PaymentTypeCode === 'card' || this.PaymentTypeCode === 'ach');
|
|
1589
1609
|
}
|
|
1610
|
+
/**
|
|
1611
|
+
* Which instrument panel the tender shows. Decided on the type's code before `RequiresInstrument`,
|
|
1612
|
+
* because Gift Card and Account Credit both require an instrument and neither is a card (#846):
|
|
1613
|
+
* a gift card asks for its number, and account credit names a source order, not an instrument.
|
|
1614
|
+
*/
|
|
1615
|
+
get InstrumentPanel() {
|
|
1616
|
+
const code = this.PaymentTypeCode;
|
|
1617
|
+
if (code === 'check')
|
|
1618
|
+
return 'check';
|
|
1619
|
+
if (code === 'ach')
|
|
1620
|
+
return 'ach';
|
|
1621
|
+
if (code === 'giftcard')
|
|
1622
|
+
return 'giftcard';
|
|
1623
|
+
if (code === 'accountcredit')
|
|
1624
|
+
return 'none';
|
|
1625
|
+
if (code === 'card' || this.RequiresInstrument)
|
|
1626
|
+
return 'card';
|
|
1627
|
+
if (this.RequiresReference)
|
|
1628
|
+
return 'reference';
|
|
1629
|
+
return 'none';
|
|
1630
|
+
}
|
|
1590
1631
|
EnsurePaymentDetail() {
|
|
1591
1632
|
if (!this.record)
|
|
1592
1633
|
return null;
|
|
@@ -2285,7 +2326,10 @@ let BizAppsPaymentHeaderFormComponent = class BizAppsPaymentHeaderFormComponent
|
|
|
2285
2326
|
this.record.Status = 'Pending';
|
|
2286
2327
|
this.requireReceivingCompany();
|
|
2287
2328
|
await this.SyncAllocationsToRecord();
|
|
2288
|
-
await this.SaveRecord(false);
|
|
2329
|
+
const saved = await this.SaveRecord(false);
|
|
2330
|
+
if (!saved && (await this.reloadAfterDuplicateSave())) {
|
|
2331
|
+
this.AllocationError = null;
|
|
2332
|
+
}
|
|
2289
2333
|
}
|
|
2290
2334
|
catch (err) {
|
|
2291
2335
|
this.AllocationError = err instanceof Error ? err.message : String(err);
|
|
@@ -2321,7 +2365,14 @@ let BizAppsPaymentHeaderFormComponent = class BizAppsPaymentHeaderFormComponent
|
|
|
2321
2365
|
this.requireReceivingCompany();
|
|
2322
2366
|
await this.SyncAllocationsToRecord();
|
|
2323
2367
|
if (!(await this.record.SaveStatus('Captured'))) {
|
|
2324
|
-
|
|
2368
|
+
// An earlier attempt was saved but its response never arrived (#847): show that payment
|
|
2369
|
+
// instead of reporting the refusal, and never insert a second one.
|
|
2370
|
+
if (!(await this.reloadAfterDuplicateSave())) {
|
|
2371
|
+
throw new Error(uniqueErrorLines(this.record.LatestResult?.Message) || 'Failed to capture and book payment.');
|
|
2372
|
+
}
|
|
2373
|
+
if (this.record.Status !== 'Captured') {
|
|
2374
|
+
throw new Error('An earlier attempt already saved this payment as a draft, and it has been reloaded. Check it and press Capture & Book again.');
|
|
2375
|
+
}
|
|
2325
2376
|
}
|
|
2326
2377
|
this.ActiveTab = 'accounting';
|
|
2327
2378
|
await this.loadAppliedLines();
|
|
@@ -2335,6 +2386,21 @@ let BizAppsPaymentHeaderFormComponent = class BizAppsPaymentHeaderFormComponent
|
|
|
2335
2386
|
this.cdr?.detectChanges?.();
|
|
2336
2387
|
}
|
|
2337
2388
|
}
|
|
2389
|
+
/**
|
|
2390
|
+
* After a save the idempotency key refused, load the payment the earlier attempt wrote into the
|
|
2391
|
+
* form (#847). False when the refusal was for another reason or that payment cannot be read.
|
|
2392
|
+
*/
|
|
2393
|
+
async reloadAfterDuplicateSave() {
|
|
2394
|
+
if (!this.record?.SaveRefusedAsDuplicateKey)
|
|
2395
|
+
return false;
|
|
2396
|
+
if (!(await this.record.LoadByIdempotencyKey()))
|
|
2397
|
+
return false;
|
|
2398
|
+
if (!this.IsCaptured) {
|
|
2399
|
+
await this.record.Lines.Load();
|
|
2400
|
+
this.populateExistingAllocations();
|
|
2401
|
+
}
|
|
2402
|
+
return true;
|
|
2403
|
+
}
|
|
2338
2404
|
// ── Applied Lines (Captured Payments) ───────────────────────────────────
|
|
2339
2405
|
/**
|
|
2340
2406
|
* What a captured payment was applied to, read from its saved Payment Lines (golive #342).
|
|
@@ -2473,7 +2539,7 @@ let BizAppsPaymentHeaderFormComponent = class BizAppsPaymentHeaderFormComponent
|
|
|
2473
2539
|
}
|
|
2474
2540
|
}
|
|
2475
2541
|
static ɵfac = /*@__PURE__*/ (() => { let ɵBizAppsPaymentHeaderFormComponent_BaseFactory; return function BizAppsPaymentHeaderFormComponent_Factory(__ngFactoryType__) { return (ɵBizAppsPaymentHeaderFormComponent_BaseFactory || (ɵBizAppsPaymentHeaderFormComponent_BaseFactory = i0.ɵɵgetInheritedFactory(BizAppsPaymentHeaderFormComponent)))(__ngFactoryType__ || BizAppsPaymentHeaderFormComponent); }; })();
|
|
2476
|
-
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 Company", "FieldName", "ReceivingCompanyID", "Type", "textbox", "LinkType", "Record", 3, "Navigate", "Record", "ShowLabel", "EditMode", "FormContext"], [1, "mjo-field-hint", "mjo-field-hint--error"], ["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, "fa-solid", "fa-circle-check", "text-success"], [1, "mjo-badge"], [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-building-columns"], ["type", "text", "placeholder", "e.g. Wells Fargo", 1, "mj-input", 3, "ngModelChange", "ngModel", "disabled"], [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"], [1, "fa-solid", "fa-credit-card"], ["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-receipt"], ["type", "text", "placeholder", "Confirmation or transfer id", 1, "mj-input", 3, "ngModelChange", "ngModel", "disabled"], [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, "mjo-alloc-toolbar"], [1, "mjo-alloc-toolbar__left"], [1, "mjo-alloc-toolbar__title"], [1, "mjo-card", "mjo-card--table"], [1, "mjo-loading-state"], ["Size", "compact", "Icon", "fa-solid fa-receipt", "Title", "Not applied to any order", "Message", "The full amount is held as unapplied credit."], [1, "mjo-table-responsive"], [1, "fa-solid", "fa-equals"], ["text", "Loading allocations\u2026", "size", "small"], [1, "mjo-table"], [1, "text-right"], ["type", "button", 1, "mjo-link", 3, "click"], [1, "text-right", "font-mono"], [1, "mjo-alloc-hero__message"], [1, "mjo-alloc-toolbar__right"], ["Size", "compact", "Icon", "fa-solid fa-receipt", "Title", "No unpaid orders found", "Message", "There are zero open unpaid orders. Any recorded payment will be retained as unallocated credit."], [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"], ["text", "Loading open orders\u2026", "size", "small"], [1, "w-8"], [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"], [1, "mjo-subtext"], [1, "mjo-badge", "mjo-badge--error"], [1, "mjo-company-pill"], [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"], ["Size", "compact", "Icon", "fa-solid fa-book-open", "Title", "No journal entries booked yet", "Message", "Journal entries are booked automatically upon capturing and settling the payment."], [1, "mjo-gl-cards-grid"], ["text", "Rolling up general ledger accounts\u2026", "size", "small"], [1, "mjo-card", "mjo-card--gl"], [1, "mjo-card__body", "p-0"], [1, "mjo-table", "mjo-table--compact"], ["colspan", "2"], [1, "font-mono"], ["Height", "fit-content", 3, "Params", "AllowLoad", "ShowToolbar"], ["Height", "fit-content", 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) {
|
|
2542
|
+
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 Company", "FieldName", "ReceivingCompanyID", "Type", "textbox", "LinkType", "Record", 3, "Navigate", "Record", "ShowLabel", "EditMode", "FormContext"], [1, "mjo-field-hint", "mjo-field-hint--error"], ["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, "fa-solid", "fa-circle-check", "text-success"], [1, "mjo-badge"], [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-building-columns"], ["type", "text", "placeholder", "e.g. Wells Fargo", 1, "mj-input", 3, "ngModelChange", "ngModel", "disabled"], [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"], [1, "fa-solid", "fa-gift"], [1, "fa-solid", "fa-credit-card"], ["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-receipt"], ["type", "text", "placeholder", "Confirmation or transfer id", 1, "mj-input", 3, "ngModelChange", "ngModel", "disabled"], [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, "mjo-alloc-toolbar"], [1, "mjo-alloc-toolbar__left"], [1, "mjo-alloc-toolbar__title"], [1, "mjo-card", "mjo-card--table"], [1, "mjo-loading-state"], ["Size", "compact", "Icon", "fa-solid fa-receipt", "Title", "Not applied to any order", "Message", "The full amount is held as unapplied credit."], [1, "mjo-table-responsive"], [1, "fa-solid", "fa-equals"], ["text", "Loading allocations\u2026", "size", "small"], [1, "mjo-table"], [1, "text-right"], ["type", "button", 1, "mjo-link", 3, "click"], [1, "text-right", "font-mono"], [1, "mjo-alloc-hero__message"], [1, "mjo-alloc-toolbar__right"], ["Size", "compact", "Icon", "fa-solid fa-receipt", "Title", "No unpaid orders found", "Message", "There are zero open unpaid orders. Any recorded payment will be retained as unallocated credit."], [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"], ["text", "Loading open orders\u2026", "size", "small"], [1, "w-8"], [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"], [1, "mjo-subtext"], [1, "mjo-badge", "mjo-badge--error"], [1, "mjo-company-pill"], [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"], ["Size", "compact", "Icon", "fa-solid fa-book-open", "Title", "No journal entries booked yet", "Message", "Journal entries are booked automatically upon capturing and settling the payment."], [1, "mjo-gl-cards-grid"], ["text", "Rolling up general ledger accounts\u2026", "size", "small"], [1, "mjo-card", "mjo-card--gl"], [1, "mjo-card__body", "p-0"], [1, "mjo-table", "mjo-table--compact"], ["colspan", "2"], [1, "font-mono"], ["Height", "fit-content", 3, "Params", "AllowLoad", "ShowToolbar"], ["Height", "fit-content", 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) {
|
|
2477
2543
|
i0.ɵɵconditionalCreate(0, BizAppsPaymentHeaderFormComponent_Conditional_0_Template, 47, 34, "mj-record-form-container", 0);
|
|
2478
2544
|
} if (rf & 2) {
|
|
2479
2545
|
i0.ɵɵconditional(ctx.record ? 0 : -1);
|
|
@@ -2485,7 +2551,7 @@ BizAppsPaymentHeaderFormComponent = __decorate([
|
|
|
2485
2551
|
export { BizAppsPaymentHeaderFormComponent };
|
|
2486
2552
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(BizAppsPaymentHeaderFormComponent, [{
|
|
2487
2553
|
type: Component,
|
|
2488
|
-
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 {{ AppliedCount }} applied\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') {\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 === '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 (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 (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 Company\"\n FieldName=\"ReceivingCompanyID\"\n Type=\"textbox\"\n LinkType=\"Record\"\n [EditMode]=\"ComposeMode\"\n [FormContext]=\"formContext\"\n (Navigate)=\"OnFormNavigate($event)\">\n </mj-form-field>\n @if (ReceivingCompanyMissing && !record.ReceivingCompanyID) {\n <div class=\"mjo-field-hint mjo-field-hint--error\">Required before Capture & Book.</div>\n }\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 @if (IsCaptured) {\n <!-- Captured: the allocations are booked, so show what the payment was applied to (golive #342) -->\n <div class=\"mjo-alloc-hero\" [class.is-balanced]=\"UnappliedAmount === 0\">\n <div class=\"mjo-alloc-hero__stats\">\n <div class=\"mjo-alloc-stat\">\n <span class=\"mjo-alloc-stat__kicker\">Received</span>\n <span class=\"mjo-alloc-stat__val\">{{ FormattedGrossAmount }}</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\">Applied</span>\n <span class=\"mjo-alloc-stat__val\">{{ RollupAmount(AppliedTotal) }}</span>\n </div>\n @if (UnappliedAmount !== 0) {\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\">Unapplied</span>\n <span class=\"mjo-alloc-stat__val\">{{ RollupAmount(UnappliedAmount) }}</span>\n </div>\n }\n </div>\n </div>\n\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> Applied to\n </h2>\n </div>\n </div>\n\n <div class=\"mjo-card mjo-card--table\">\n @if (LoadingAppliedLines) {\n <div class=\"mjo-loading-state\">\n <mj-loading text=\"Loading allocations\u2026\" size=\"small\"></mj-loading>\n </div>\n } @else if (AppliedLinesError) {\n <div class=\"mjo-alert mjo-alert--error\">{{ AppliedLinesError }}</div>\n } @else if (AppliedLines.length === 0) {\n <mj-empty-state\n Size=\"compact\"\n Icon=\"fa-solid fa-receipt\"\n Title=\"Not applied to any order\"\n Message=\"The full amount is held as unapplied credit.\" />\n } @else {\n <div class=\"mjo-table-responsive\">\n <table class=\"mjo-table\">\n <thead>\n <tr>\n <th>Order \u2116</th>\n <th>Order Line</th>\n <th class=\"text-right\">Amount</th>\n <th>Booked</th>\n </tr>\n </thead>\n <tbody>\n @for (line of AppliedLines; track $index) {\n <tr>\n <td>\n <button type=\"button\" class=\"mjo-link\" (click)=\"OpenAppliedOrder(line, $event)\">\n <strong>{{ line.OrderNumber }}</strong>\n </button>\n </td>\n <td>{{ line.OrderLineLabel || 'Whole order' }}</td>\n <td class=\"text-right font-mono\">{{ RollupAmount(line.Amount) }}</td>\n <td>{{ FormatAppliedBookedAt(line) }}</td>\n </tr>\n }\n </tbody>\n </table>\n </div>\n }\n </div>\n } @else {\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-loading-state\">\n <mj-loading text=\"Loading open orders\u2026\" size=\"small\"></mj-loading>\n </div>\n } @else if (OpenOrders.length === 0) {\n <mj-empty-state\n Size=\"compact\"\n Icon=\"fa-solid fa-receipt\"\n Title=\"No unpaid orders found\"\n Message=\"There are zero open unpaid orders. Any recorded payment will be retained as unallocated credit.\" />\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>{{ FormatOrderDate(order) }}</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 {{ FormatLeavesBalance(order) }}\n @if (FormatLeavesCredit(order)) {\n <div class=\"mjo-subtext text-info\">Creates {{ FormatLeavesCredit(order) }} credit</div>\n }\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\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-loading-state\">\n <mj-loading text=\"Rolling up general ledger accounts\u2026\" size=\"small\"></mj-loading>\n </div>\n } @else if (RollupError) {\n <div class=\"mjo-alert mjo-alert--error\">{{ RollupError }}</div>\n } @else if (RollupCards.length === 0) {\n <mj-empty-state\n Size=\"compact\"\n Icon=\"fa-solid fa-book-open\"\n Title=\"No journal entries booked yet\"\n Message=\"Journal entries are booked automatically upon capturing and settling the payment.\" />\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 <!-- Sized to its rows: at the default 'auto' height the grid fills 100% of this\n auto-height tab body, which is zero, and renders blank. -->\n <mj-explorer-entity-data-grid\n [Params]=\"PaymentJournalEntryParams\"\n [AllowLoad]=\"true\"\n [ShowToolbar]=\"false\"\n Height=\"fit-content\"\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-sm);\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-card);\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-card);\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-loading-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-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"] }]
|
|
2554
|
+
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 {{ AppliedCount }} applied\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 (InstrumentPanel === 'check') {\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 (InstrumentPanel === '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 (InstrumentPanel === 'giftcard') {\n <div class=\"mjo-instrument-box\">\n <div class=\"mjo-instrument-box__title\">\n <i class=\"fa-solid fa-gift\"></i> Gift card details\n </div>\n <div class=\"mjo-instrument-box__grid\">\n <div class=\"mjo-field\">\n <label class=\"mjo-label\">Card Number (last 4)</label>\n <input type=\"text\" class=\"mj-input font-mono\" maxlength=\"4\" [(ngModel)]=\"CardLast4\" [disabled]=\"!ComposeMode\" placeholder=\"1234\" />\n </div>\n </div>\n </div>\n } @else if (InstrumentPanel === 'card') {\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 (InstrumentPanel === 'reference') {\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 Company\"\n FieldName=\"ReceivingCompanyID\"\n Type=\"textbox\"\n LinkType=\"Record\"\n [EditMode]=\"ComposeMode\"\n [FormContext]=\"formContext\"\n (Navigate)=\"OnFormNavigate($event)\">\n </mj-form-field>\n @if (ReceivingCompanyMissing && !record.ReceivingCompanyID) {\n <div class=\"mjo-field-hint mjo-field-hint--error\">Required before Capture & Book.</div>\n }\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 @if (IsCaptured) {\n <!-- Captured: the allocations are booked, so show what the payment was applied to (golive #342) -->\n <div class=\"mjo-alloc-hero\" [class.is-balanced]=\"UnappliedAmount === 0\">\n <div class=\"mjo-alloc-hero__stats\">\n <div class=\"mjo-alloc-stat\">\n <span class=\"mjo-alloc-stat__kicker\">Received</span>\n <span class=\"mjo-alloc-stat__val\">{{ FormattedGrossAmount }}</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\">Applied</span>\n <span class=\"mjo-alloc-stat__val\">{{ RollupAmount(AppliedTotal) }}</span>\n </div>\n @if (UnappliedAmount !== 0) {\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\">Unapplied</span>\n <span class=\"mjo-alloc-stat__val\">{{ RollupAmount(UnappliedAmount) }}</span>\n </div>\n }\n </div>\n </div>\n\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> Applied to\n </h2>\n </div>\n </div>\n\n <div class=\"mjo-card mjo-card--table\">\n @if (LoadingAppliedLines) {\n <div class=\"mjo-loading-state\">\n <mj-loading text=\"Loading allocations\u2026\" size=\"small\"></mj-loading>\n </div>\n } @else if (AppliedLinesError) {\n <div class=\"mjo-alert mjo-alert--error\">{{ AppliedLinesError }}</div>\n } @else if (AppliedLines.length === 0) {\n <mj-empty-state\n Size=\"compact\"\n Icon=\"fa-solid fa-receipt\"\n Title=\"Not applied to any order\"\n Message=\"The full amount is held as unapplied credit.\" />\n } @else {\n <div class=\"mjo-table-responsive\">\n <table class=\"mjo-table\">\n <thead>\n <tr>\n <th>Order \u2116</th>\n <th>Order Line</th>\n <th class=\"text-right\">Amount</th>\n <th>Booked</th>\n </tr>\n </thead>\n <tbody>\n @for (line of AppliedLines; track $index) {\n <tr>\n <td>\n <button type=\"button\" class=\"mjo-link\" (click)=\"OpenAppliedOrder(line, $event)\">\n <strong>{{ line.OrderNumber }}</strong>\n </button>\n </td>\n <td>{{ line.OrderLineLabel || 'Whole order' }}</td>\n <td class=\"text-right font-mono\">{{ RollupAmount(line.Amount) }}</td>\n <td>{{ FormatAppliedBookedAt(line) }}</td>\n </tr>\n }\n </tbody>\n </table>\n </div>\n }\n </div>\n } @else {\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-loading-state\">\n <mj-loading text=\"Loading open orders\u2026\" size=\"small\"></mj-loading>\n </div>\n } @else if (OpenOrders.length === 0) {\n <mj-empty-state\n Size=\"compact\"\n Icon=\"fa-solid fa-receipt\"\n Title=\"No unpaid orders found\"\n Message=\"There are zero open unpaid orders. Any recorded payment will be retained as unallocated credit.\" />\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>{{ FormatOrderDate(order) }}</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 {{ FormatLeavesBalance(order) }}\n @if (FormatLeavesCredit(order)) {\n <div class=\"mjo-subtext text-info\">Creates {{ FormatLeavesCredit(order) }} credit</div>\n }\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\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-loading-state\">\n <mj-loading text=\"Rolling up general ledger accounts\u2026\" size=\"small\"></mj-loading>\n </div>\n } @else if (RollupError) {\n <div class=\"mjo-alert mjo-alert--error\">{{ RollupError }}</div>\n } @else if (RollupCards.length === 0) {\n <mj-empty-state\n Size=\"compact\"\n Icon=\"fa-solid fa-book-open\"\n Title=\"No journal entries booked yet\"\n Message=\"Journal entries are booked automatically upon capturing and settling the payment.\" />\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 <!-- Sized to its rows: at the default 'auto' height the grid fills 100% of this\n auto-height tab body, which is zero, and renders blank. -->\n <mj-explorer-entity-data-grid\n [Params]=\"PaymentJournalEntryParams\"\n [AllowLoad]=\"true\"\n [ShowToolbar]=\"false\"\n Height=\"fit-content\"\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-sm);\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-card);\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-card);\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-loading-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-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"] }]
|
|
2489
2555
|
}], null, null); })();
|
|
2490
2556
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(BizAppsPaymentHeaderFormComponent, { className: "BizAppsPaymentHeaderFormComponent", filePath: "lib/custom/PaymentHeader/payment-header-form.component.ts", lineNumber: 91 }); })();
|
|
2491
2557
|
/** Tree-shaking prevention anchor function */
|