@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.
Files changed (88) hide show
  1. package/dist/checkout-element/main.js +368 -246
  2. package/dist/lib/checkout-widget/checkout-account.d.ts +10 -0
  3. package/dist/lib/checkout-widget/checkout-account.d.ts.map +1 -1
  4. package/dist/lib/checkout-widget/checkout-account.js +12 -0
  5. package/dist/lib/checkout-widget/checkout-account.js.map +1 -1
  6. package/dist/lib/checkout-widget/checkout-events.d.ts +15 -1
  7. package/dist/lib/checkout-widget/checkout-events.d.ts.map +1 -1
  8. package/dist/lib/checkout-widget/checkout-events.js +3 -1
  9. package/dist/lib/checkout-widget/checkout-events.js.map +1 -1
  10. package/dist/lib/checkout-widget/checkout-public-host.component.d.ts +6 -0
  11. package/dist/lib/checkout-widget/checkout-public-host.component.d.ts.map +1 -1
  12. package/dist/lib/checkout-widget/checkout-public-host.component.js +50 -21
  13. package/dist/lib/checkout-widget/checkout-public-host.component.js.map +1 -1
  14. package/dist/lib/checkout-widget/checkout-widget.component.d.ts +38 -2
  15. package/dist/lib/checkout-widget/checkout-widget.component.d.ts.map +1 -1
  16. package/dist/lib/checkout-widget/checkout-widget.component.js +313 -227
  17. package/dist/lib/checkout-widget/checkout-widget.component.js.map +1 -1
  18. package/dist/lib/custom/OrderHeader/order-header-form.component.d.ts.map +1 -1
  19. package/dist/lib/custom/OrderHeader/order-header-form.component.js +2 -1
  20. package/dist/lib/custom/OrderHeader/order-header-form.component.js.map +1 -1
  21. package/dist/lib/custom/OrderHeader/order-lines-editor.component.d.ts +14 -2
  22. package/dist/lib/custom/OrderHeader/order-lines-editor.component.d.ts.map +1 -1
  23. package/dist/lib/custom/OrderHeader/order-lines-editor.component.js +44 -6
  24. package/dist/lib/custom/OrderHeader/order-lines-editor.component.js.map +1 -1
  25. package/dist/lib/custom/OrderHeader/picker-scroll.d.ts +12 -0
  26. package/dist/lib/custom/OrderHeader/picker-scroll.d.ts.map +1 -0
  27. package/dist/lib/custom/OrderHeader/picker-scroll.js +15 -0
  28. package/dist/lib/custom/OrderHeader/picker-scroll.js.map +1 -0
  29. package/dist/lib/custom/PaymentHeader/payment-header-form.component.d.ts +11 -0
  30. package/dist/lib/custom/PaymentHeader/payment-header-form.component.d.ts.map +1 -1
  31. package/dist/lib/custom/PaymentHeader/payment-header-form.component.js +363 -297
  32. package/dist/lib/custom/PaymentHeader/payment-header-form.component.js.map +1 -1
  33. package/dist/lib/data/orders-grid-state.d.ts +2 -1
  34. package/dist/lib/data/orders-grid-state.d.ts.map +1 -1
  35. package/dist/lib/data/orders-grid-state.js +2 -1
  36. package/dist/lib/data/orders-grid-state.js.map +1 -1
  37. package/dist/lib/data/orders-queries.d.ts +17 -4
  38. package/dist/lib/data/orders-queries.d.ts.map +1 -1
  39. package/dist/lib/data/orders-queries.js +30 -6
  40. package/dist/lib/data/orders-queries.js.map +1 -1
  41. package/dist/lib/form-panels/document-overviews.panels.js +1 -1
  42. package/dist/lib/form-panels/document-overviews.panels.js.map +1 -1
  43. package/dist/lib/form-panels/external-invoices.panel.js +3 -3
  44. package/dist/lib/form-panels/external-invoices.panel.js.map +1 -1
  45. package/dist/lib/form-panels/organization-orders.panel.d.ts +8 -1
  46. package/dist/lib/form-panels/organization-orders.panel.d.ts.map +1 -1
  47. package/dist/lib/form-panels/organization-orders.panel.js +29 -5
  48. package/dist/lib/form-panels/organization-orders.panel.js.map +1 -1
  49. package/dist/lib/form-panels/person-orders.panel.d.ts +8 -1
  50. package/dist/lib/form-panels/person-orders.panel.d.ts.map +1 -1
  51. package/dist/lib/form-panels/person-orders.panel.js +29 -5
  52. package/dist/lib/form-panels/person-orders.panel.js.map +1 -1
  53. package/dist/lib/generated/Entities/mjBizAppsOrdersOrderHeader/mjbizappsordersorderheader.form.component.js +2 -2
  54. package/dist/lib/generated/Entities/mjBizAppsOrdersOrderHeader/mjbizappsordersorderheader.form.component.js.map +1 -1
  55. package/dist/lib/pages/orders/order-document.page.d.ts +13 -2
  56. package/dist/lib/pages/orders/order-document.page.d.ts.map +1 -1
  57. package/dist/lib/pages/orders/order-document.page.js +37 -6
  58. package/dist/lib/pages/orders/order-document.page.js.map +1 -1
  59. package/dist/lib/pages/orders/return.page.d.ts +9 -3
  60. package/dist/lib/pages/orders/return.page.d.ts.map +1 -1
  61. package/dist/lib/pages/orders/return.page.js +106 -83
  62. package/dist/lib/pages/orders/return.page.js.map +1 -1
  63. package/dist/lib/pages/payments/payments-dashboard.page.d.ts +11 -2
  64. package/dist/lib/pages/payments/payments-dashboard.page.d.ts.map +1 -1
  65. package/dist/lib/pages/payments/payments-dashboard.page.js +14 -12
  66. package/dist/lib/pages/payments/payments-dashboard.page.js.map +1 -1
  67. package/dist/lib/pages/payments/payments-list.page.d.ts +12 -3
  68. package/dist/lib/pages/payments/payments-list.page.d.ts.map +1 -1
  69. package/dist/lib/pages/payments/payments-list.page.js +15 -13
  70. package/dist/lib/pages/payments/payments-list.page.js.map +1 -1
  71. package/dist/lib/pages/receivables/billing.page.js +11 -11
  72. package/dist/lib/pages/receivables/billing.page.js.map +1 -1
  73. package/dist/lib/pages/receivables/external-invoicing-queue.page.js +1 -1
  74. package/dist/lib/pages/receivables/external-invoicing-queue.page.js.map +1 -1
  75. package/dist/lib/pages/receivables/progress.page.js +5 -5
  76. package/dist/lib/pages/receivables/subscriptions.page.d.ts +14 -3
  77. package/dist/lib/pages/receivables/subscriptions.page.d.ts.map +1 -1
  78. package/dist/lib/pages/receivables/subscriptions.page.js +17 -13
  79. package/dist/lib/pages/receivables/subscriptions.page.js.map +1 -1
  80. package/dist/lib/sections/section-nav.model.js +1 -1
  81. package/dist/lib/sections/section-nav.model.js.map +1 -1
  82. package/dist/lib/sections/section-shell.component.js +2 -2
  83. package/dist/lib/services/pricing-scheduler.service.d.ts +15 -1
  84. package/dist/lib/services/pricing-scheduler.service.d.ts.map +1 -1
  85. package/dist/lib/services/pricing-scheduler.service.js +31 -2
  86. package/dist/lib/services/pricing-scheduler.service.js.map +1 -1
  87. package/dist/lib/styles/orders-kit.css +21 -15
  88. 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 BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_43_Conditional_36_Template_select_ngModelChange_8_listener($event) { i0.ɵɵrestoreView(_r10); const ctx_r1 = i0.ɵɵnextContext(3); i0.ɵɵtwoWayBindingSet(ctx_r1.CardBrand, $event) || (ctx_r1.CardBrand = $event); return i0.ɵɵresetView($event); });
263
- i0.ɵɵelementStart(9, "option", 77);
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", 78);
284
+ i0.ɵɵelementStart(11, "option", 79);
267
285
  i0.ɵɵtext(12, "Visa");
268
286
  i0.ɵɵelementEnd();
269
- i0.ɵɵelementStart(13, "option", 79);
287
+ i0.ɵɵelementStart(13, "option", 80);
270
288
  i0.ɵɵtext(14, "MasterCard");
271
289
  i0.ɵɵelementEnd();
272
- i0.ɵɵelementStart(15, "option", 80);
290
+ i0.ɵɵelementStart(15, "option", 81);
273
291
  i0.ɵɵtext(16, "American Express");
274
292
  i0.ɵɵelementEnd();
275
- i0.ɵɵelementStart(17, "option", 81);
293
+ i0.ɵɵelementStart(17, "option", 82);
276
294
  i0.ɵɵtext(18, "Discover");
277
295
  i0.ɵɵelementEnd();
278
- i0.ɵɵelementStart(19, "option", 82);
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", 83);
285
- i0.ɵɵtwoWayListener("ngModelChange", function BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_43_Conditional_36_Template_input_ngModelChange_24_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); });
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", 84)(29, "input", 85);
291
- i0.ɵɵtwoWayListener("ngModelChange", function BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_43_Conditional_36_Template_input_ngModelChange_29_listener($event) { i0.ɵɵrestoreView(_r10); const ctx_r1 = i0.ɵɵnextContext(3); i0.ɵɵtwoWayBindingSet(ctx_r1.CardExpMonth, $event) || (ctx_r1.CardExpMonth = $event); return i0.ɵɵresetView($event); });
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", 86);
294
- i0.ɵɵtwoWayListener("ngModelChange", function BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_43_Conditional_36_Template_input_ngModelChange_30_listener($event) { i0.ɵɵrestoreView(_r10); const ctx_r1 = i0.ɵɵnextContext(3); i0.ɵɵtwoWayBindingSet(ctx_r1.CardExpYear, $event) || (ctx_r1.CardExpYear = $event); return i0.ɵɵresetView($event); });
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", 87);
300
- i0.ɵɵtwoWayListener("ngModelChange", function BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_43_Conditional_36_Template_input_ngModelChange_34_listener($event) { i0.ɵɵrestoreView(_r10); const ctx_r1 = i0.ɵɵnextContext(3); i0.ɵɵtwoWayBindingSet(ctx_r1.CardHolderName, $event) || (ctx_r1.CardHolderName = $event); return i0.ɵɵresetView($event); });
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", 88);
306
- i0.ɵɵtwoWayListener("ngModelChange", function BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_43_Conditional_36_Template_input_ngModelChange_38_listener($event) { i0.ɵɵrestoreView(_r10); const ctx_r1 = i0.ɵɵnextContext(3); i0.ɵɵtwoWayBindingSet(ctx_r1.ReferenceNumber, $event) || (ctx_r1.ReferenceNumber = $event); return i0.ɵɵresetView($event); });
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 BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_43_Conditional_37_Template(rf, ctx) { if (rf & 1) {
330
- const _r11 = i0.ɵɵgetCurrentView();
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", 89);
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", 90);
341
- i0.ɵɵtwoWayListener("ngModelChange", function BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_43_Conditional_37_Template_input_ngModelChange_9_listener($event) { i0.ɵɵrestoreView(_r11); const ctx_r1 = i0.ɵɵnextContext(3); i0.ɵɵtwoWayBindingSet(ctx_r1.ReferenceNumber, $event) || (ctx_r1.ReferenceNumber = $event); return i0.ɵɵresetView($event); });
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 BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_43_Conditional_39_Template(rf, ctx) { if (rf & 1) {
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 BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_43_Conditional_47_Conditional_14_Template(rf, ctx) { if (rf & 1) {
355
- i0.ɵɵelementStart(0, "div", 96);
356
- i0.ɵɵelement(1, "i", 105);
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", 93)(3, "span", 94);
376
+ i0.ɵɵelementStart(2, "div", 94)(3, "span", 95);
359
377
  i0.ɵɵtext(4, "Unapplied");
360
378
  i0.ɵɵelementEnd();
361
- i0.ɵɵelementStart(5, "span", 95);
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 BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_43_Conditional_47_Conditional_21_Template(rf, ctx) { if (rf & 1) {
370
- i0.ɵɵelementStart(0, "div", 102);
371
- i0.ɵɵelement(1, "mj-loading", 106);
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 BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_43_Conditional_47_Conditional_22_Template(rf, ctx) { if (rf & 1) {
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 BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_43_Conditional_47_Conditional_23_Template(rf, ctx) { if (rf & 1) {
384
- i0.ɵɵelement(0, "mj-empty-state", 103);
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 BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_43_Conditional_47_Conditional_24_For_14_Template(rf, ctx) { if (rf & 1) {
387
- const _r12 = i0.ɵɵgetCurrentView();
388
- i0.ɵɵelementStart(0, "tr")(1, "td")(2, "button", 109);
389
- i0.ɵɵlistener("click", function BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_43_Conditional_47_Conditional_24_For_14_Template_button_click_2_listener($event) { const line_r13 = i0.ɵɵrestoreView(_r12).$implicit; const ctx_r1 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r1.OpenAppliedOrder(line_r13, $event)); });
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", 110);
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 line_r13 = ctx.$implicit;
421
+ const line_r14 = ctx.$implicit;
404
422
  const ctx_r1 = i0.ɵɵnextContext(5);
405
423
  i0.ɵɵadvance(4);
406
- i0.ɵɵtextInterpolate(line_r13.OrderNumber);
424
+ i0.ɵɵtextInterpolate(line_r14.OrderNumber);
407
425
  i0.ɵɵadvance(2);
408
- i0.ɵɵtextInterpolate(line_r13.OrderLineLabel || "Whole order");
426
+ i0.ɵɵtextInterpolate(line_r14.OrderLineLabel || "Whole order");
409
427
  i0.ɵɵadvance(2);
410
- i0.ɵɵtextInterpolate(ctx_r1.RollupAmount(line_r13.Amount));
428
+ i0.ɵɵtextInterpolate(ctx_r1.RollupAmount(line_r14.Amount));
411
429
  i0.ɵɵadvance(2);
412
- i0.ɵɵtextInterpolate(ctx_r1.FormatAppliedBookedAt(line_r13));
430
+ i0.ɵɵtextInterpolate(ctx_r1.FormatAppliedBookedAt(line_r14));
413
431
  } }
414
- function BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_43_Conditional_47_Conditional_24_Template(rf, ctx) { if (rf & 1) {
415
- i0.ɵɵelementStart(0, "div", 104)(1, "table", 107)(2, "thead")(3, "tr")(4, "th");
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", 108);
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, BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_43_Conditional_47_Conditional_24_For_14_Template, 11, 4, "tr", null, i0.ɵɵrepeaterTrackByIndex);
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 BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_43_Conditional_47_Template(rf, ctx) { if (rf & 1) {
436
- i0.ɵɵelementStart(0, "div", 91)(1, "div", 92)(2, "div", 93)(3, "span", 94);
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", 95);
457
+ i0.ɵɵelementStart(5, "span", 96);
440
458
  i0.ɵɵtext(6);
441
459
  i0.ɵɵelementEnd()();
442
- i0.ɵɵelementStart(7, "div", 96);
443
- i0.ɵɵelement(8, "i", 97);
460
+ i0.ɵɵelementStart(7, "div", 97);
461
+ i0.ɵɵelement(8, "i", 98);
444
462
  i0.ɵɵelementEnd();
445
- i0.ɵɵelementStart(9, "div", 93)(10, "span", 94);
463
+ i0.ɵɵelementStart(9, "div", 94)(10, "span", 95);
446
464
  i0.ɵɵtext(11, "Applied");
447
465
  i0.ɵɵelementEnd();
448
- i0.ɵɵelementStart(12, "span", 95);
466
+ i0.ɵɵelementStart(12, "span", 96);
449
467
  i0.ɵɵtext(13);
450
468
  i0.ɵɵelementEnd()();
451
- i0.ɵɵconditionalCreate(14, BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_43_Conditional_47_Conditional_14_Template, 7, 1);
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", 98)(16, "div", 99)(17, "h2", 100);
454
- i0.ɵɵelement(18, "i", 89);
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", 101);
458
- i0.ɵɵconditionalCreate(21, BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_43_Conditional_47_Conditional_21_Template, 2, 0, "div", 102)(22, BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_43_Conditional_47_Conditional_22_Template, 2, 1, "div", 18)(23, BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_43_Conditional_47_Conditional_23_Template, 1, 0, "mj-empty-state", 103)(24, BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_43_Conditional_47_Conditional_24_Template, 15, 0, "div", 104);
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 BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_43_Conditional_48_Conditional_22_Template(rf, ctx) { if (rf & 1) {
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 BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_43_Conditional_48_Conditional_23_Template(rf, ctx) { if (rf & 1) {
479
- i0.ɵɵelement(0, "i", 114);
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 BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_43_Conditional_48_Conditional_24_Template(rf, ctx) { if (rf & 1) {
489
- i0.ɵɵelement(0, "i", 115);
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 BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_43_Conditional_48_Conditional_30_Template(rf, ctx) { if (rf & 1) {
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 BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_43_Conditional_48_Conditional_31_Template(rf, ctx) { if (rf & 1) {
508
- const _r14 = i0.ɵɵgetCurrentView();
509
- i0.ɵɵelementStart(0, "div", 112)(1, "div", 116);
510
- i0.ɵɵelement(2, "i", 117);
511
- i0.ɵɵelementStart(3, "input", 118);
512
- i0.ɵɵtwoWayListener("ngModelChange", function BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_43_Conditional_48_Conditional_31_Template_input_ngModelChange_3_listener($event) { i0.ɵɵrestoreView(_r14); const ctx_r1 = i0.ɵɵnextContext(4); i0.ɵɵtwoWayBindingSet(ctx_r1.SearchQuery, $event) || (ctx_r1.SearchQuery = $event); return i0.ɵɵresetView($event); });
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", 119);
515
- i0.ɵɵlistener("click", function BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_43_Conditional_48_Conditional_31_Template_button_click_4_listener() { i0.ɵɵrestoreView(_r14); const ctx_r1 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r1.AutoApplyOldestFirst()); });
516
- i0.ɵɵelement(5, "i", 120);
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", 121);
520
- i0.ɵɵlistener("click", function BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_43_Conditional_48_Conditional_31_Template_button_click_7_listener() { i0.ɵɵrestoreView(_r14); const ctx_r1 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r1.ClearAllocations()); });
521
- i0.ɵɵelement(8, "i", 122);
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 BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_43_Conditional_48_Conditional_33_Template(rf, ctx) { if (rf & 1) {
530
- i0.ɵɵelementStart(0, "div", 102);
531
- i0.ɵɵelement(1, "mj-loading", 123);
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 BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_43_Conditional_48_Conditional_34_Template(rf, ctx) { if (rf & 1) {
535
- i0.ɵɵelement(0, "mj-empty-state", 113);
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 BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_43_Conditional_48_Conditional_35_Conditional_5_Template(rf, ctx) { if (rf & 1) {
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 BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_43_Conditional_48_Conditional_35_For_25_Conditional_4_Template(rf, ctx) { if (rf & 1) {
543
- i0.ɵɵelementStart(0, "td", 130);
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 order_r16 = i0.ɵɵnextContext().$implicit;
565
+ const order_r17 = i0.ɵɵnextContext().$implicit;
548
566
  i0.ɵɵadvance();
549
- i0.ɵɵtextInterpolate(order_r16.BillToOrganization || order_r16.BillToPerson || "\u2014");
567
+ i0.ɵɵtextInterpolate(order_r17.BillToOrganization || order_r17.BillToPerson || "\u2014");
550
568
  } }
551
- function BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_43_Conditional_48_Conditional_35_For_25_Conditional_9_Template(rf, ctx) { if (rf & 1) {
552
- i0.ɵɵelementStart(0, "div", 131);
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 order_r16 = i0.ɵɵnextContext().$implicit;
574
+ const order_r17 = i0.ɵɵnextContext().$implicit;
557
575
  i0.ɵɵadvance();
558
- i0.ɵɵtextInterpolate(order_r16.Description);
576
+ i0.ɵɵtextInterpolate(order_r17.Description);
559
577
  } }
560
- function BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_43_Conditional_48_Conditional_35_For_25_Conditional_13_Template(rf, ctx) { if (rf & 1) {
561
- i0.ɵɵelementStart(0, "span", 132);
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 order_r16 = i0.ɵɵnextContext().$implicit;
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(order_r16), "d overdue");
586
+ i0.ɵɵtextInterpolate1("", ctx_r1.GetOrderDaysOverdue(order_r17), "d overdue");
569
587
  } }
570
- function BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_43_Conditional_48_Conditional_35_For_25_Conditional_14_Template(rf, ctx) { if (rf & 1) {
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 order_r16 = i0.ɵɵnextContext().$implicit;
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(order_r16));
596
+ i0.ɵɵtextInterpolate(ctx_r1.FormatOrderDueDate(order_r17));
579
597
  } }
580
- function BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_43_Conditional_48_Conditional_35_For_25_Conditional_27_Template(rf, ctx) { if (rf & 1) {
581
- i0.ɵɵelementStart(0, "div", 138);
582
- i0.ɵɵelement(1, "i", 141);
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 BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_43_Conditional_48_Conditional_35_For_25_Conditional_30_Template(rf, ctx) { if (rf & 1) {
587
- i0.ɵɵelementStart(0, "div", 138);
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 order_r16 = i0.ɵɵnextContext().$implicit;
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(order_r16), " credit");
612
+ i0.ɵɵtextInterpolate1("Creates ", ctx_r1.FormatLeavesCredit(order_r17), " credit");
595
613
  } }
596
- function BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_43_Conditional_48_Conditional_35_For_25_Conditional_32_Template(rf, ctx) { if (rf & 1) {
597
- const _r17 = i0.ɵɵgetCurrentView();
598
- i0.ɵɵelementStart(0, "button", 142);
599
- i0.ɵɵlistener("click", function BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_43_Conditional_48_Conditional_35_For_25_Conditional_32_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r17); const order_r16 = i0.ɵɵnextContext().$implicit; const ctx_r1 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r1.FullPayOrder(order_r16)); });
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 order_r16 = i0.ɵɵnextContext().$implicit;
604
- i0.ɵɵproperty("disabled", (order_r16.Balance ?? order_r16.TotalGross ?? 0) <= 0);
621
+ const order_r17 = i0.ɵɵnextContext().$implicit;
622
+ i0.ɵɵproperty("disabled", (order_r17.Balance ?? order_r17.TotalGross ?? 0) <= 0);
605
623
  } }
606
- function BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_43_Conditional_48_Conditional_35_For_25_Conditional_33_For_23_Conditional_16_Template(rf, ctx) { if (rf & 1) {
607
- const _r20 = i0.ɵɵgetCurrentView();
608
- i0.ɵɵelementStart(0, "button", 150);
609
- i0.ɵɵlistener("click", function BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_43_Conditional_48_Conditional_35_For_25_Conditional_33_For_23_Conditional_16_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r20); const line_r19 = i0.ɵɵnextContext().$implicit; const order_r16 = i0.ɵɵnextContext(2).$implicit; const ctx_r1 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r1.FullPayLine(order_r16, line_r19)); });
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 BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_43_Conditional_48_Conditional_35_For_25_Conditional_33_For_23_Template(rf, ctx) { if (rf & 1) {
614
- const _r18 = i0.ɵɵgetCurrentView();
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", 110);
639
+ i0.ɵɵelementStart(6, "td", 111);
622
640
  i0.ɵɵtext(7);
623
641
  i0.ɵɵelementEnd();
624
- i0.ɵɵelementStart(8, "td", 110);
642
+ i0.ɵɵelementStart(8, "td", 111);
625
643
  i0.ɵɵtext(9);
626
644
  i0.ɵɵelementEnd();
627
- i0.ɵɵelementStart(10, "td", 108)(11, "div", 135)(12, "span", 136);
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", 148);
631
- i0.ɵɵlistener("ngModelChange", function BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_43_Conditional_48_Conditional_35_For_25_Conditional_33_For_23_Template_input_ngModelChange_14_listener($event) { const line_r19 = i0.ɵɵrestoreView(_r18).$implicit; const order_r16 = i0.ɵɵnextContext(2).$implicit; const ctx_r1 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r1.SetLineAllocation(line_r19.ID || "", $event, order_r16.ID)); });
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", 108);
634
- i0.ɵɵconditionalCreate(16, BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_43_Conditional_48_Conditional_35_For_25_Conditional_33_For_23_Conditional_16_Template, 2, 0, "button", 149);
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 line_r19 = ctx.$implicit;
655
+ const line_r20 = ctx.$implicit;
638
656
  const ctx_r1 = i0.ɵɵnextContext(7);
639
657
  i0.ɵɵadvance(2);
640
- i0.ɵɵtextInterpolate(line_r19.LineNumber);
658
+ i0.ɵɵtextInterpolate(line_r20.LineNumber);
641
659
  i0.ɵɵadvance(3);
642
- i0.ɵɵtextInterpolate(line_r19.Product || "Line Item");
660
+ i0.ɵɵtextInterpolate(line_r20.Product || "Line Item");
643
661
  i0.ɵɵadvance(2);
644
- i0.ɵɵtextInterpolate1("$", (line_r19.UnitPrice || 0).toFixed(2));
662
+ i0.ɵɵtextInterpolate1("$", (line_r20.UnitPrice || 0).toFixed(2));
645
663
  i0.ɵɵadvance(2);
646
- i0.ɵɵtextInterpolate1("$", (line_r19.LineTotalGross || 0).toFixed(2));
664
+ i0.ɵɵtextInterpolate1("$", (line_r20.LineTotalGross || 0).toFixed(2));
647
665
  i0.ɵɵadvance(5);
648
- i0.ɵɵproperty("ngModel", ctx_r1.GetLineAllocation(line_r19.ID || ""))("disabled", ctx_r1.IsCaptured);
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 BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_43_Conditional_48_Conditional_35_For_25_Conditional_33_Template(rf, ctx) { if (rf & 1) {
653
- i0.ɵɵelementStart(0, "tr", 140)(1, "td", 143)(2, "div", 144)(3, "div", 145);
654
- i0.ɵɵelement(4, "i", 141);
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", 146)(8, "thead")(9, "tr")(10, "th");
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", 108);
682
+ i0.ɵɵelementStart(14, "th", 109);
665
683
  i0.ɵɵtext(15, "Unit Price");
666
684
  i0.ɵɵelementEnd();
667
- i0.ɵɵelementStart(16, "th", 108);
685
+ i0.ɵɵelementStart(16, "th", 109);
668
686
  i0.ɵɵtext(17, "Gross");
669
687
  i0.ɵɵelementEnd();
670
- i0.ɵɵelementStart(18, "th", 125);
688
+ i0.ɵɵelementStart(18, "th", 126);
671
689
  i0.ɵɵtext(19, "Line Allocation");
672
690
  i0.ɵɵelementEnd();
673
- i0.ɵɵelement(20, "th", 147);
691
+ i0.ɵɵelement(20, "th", 148);
674
692
  i0.ɵɵelementEnd()();
675
693
  i0.ɵɵelementStart(21, "tbody");
676
- i0.ɵɵrepeaterCreate(22, BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_43_Conditional_48_Conditional_35_For_25_Conditional_33_For_23_Template, 17, 7, "tr", null, _forTrack0);
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 order_r16 = i0.ɵɵnextContext().$implicit;
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(order_r16.ID || ""));
702
+ i0.ɵɵrepeater(ctx_r1.GetOrderLines(order_r17.ID || ""));
685
703
  } }
686
- function BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_43_Conditional_48_Conditional_35_For_25_Template(rf, ctx) { if (rf & 1) {
687
- const _r15 = i0.ɵɵgetCurrentView();
688
- i0.ɵɵelementStart(0, "tr", 127)(1, "td")(2, "button", 128);
689
- i0.ɵɵlistener("click", function BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_43_Conditional_48_Conditional_35_For_25_Template_button_click_2_listener() { const order_r16 = i0.ɵɵrestoreView(_r15).$implicit; const ctx_r1 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r1.ToggleOrderExpanded(order_r16.ID || "")); });
690
- i0.ɵɵelement(3, "i", 129);
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, BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_43_Conditional_48_Conditional_35_For_25_Conditional_4_Template, 2, 1, "td", 130);
693
- i0.ɵɵelementStart(5, "td")(6, "button", 109);
694
- i0.ɵɵlistener("click", function BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_43_Conditional_48_Conditional_35_For_25_Template_button_click_6_listener($event) { const order_r16 = i0.ɵɵrestoreView(_r15).$implicit; const ctx_r1 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r1.OpenOrderRecord(order_r16, $event)); });
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, BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_43_Conditional_48_Conditional_35_For_25_Conditional_9_Template, 2, 1, "div", 131);
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, BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_43_Conditional_48_Conditional_35_For_25_Conditional_13_Template, 2, 1, "span", 132)(14, BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_43_Conditional_48_Conditional_35_For_25_Conditional_14_Template, 2, 1, "span");
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", 133);
724
+ i0.ɵɵelementStart(15, "td")(16, "span", 134);
707
725
  i0.ɵɵtext(17);
708
726
  i0.ɵɵelementEnd()();
709
- i0.ɵɵelementStart(18, "td", 110);
727
+ i0.ɵɵelementStart(18, "td", 111);
710
728
  i0.ɵɵtext(19);
711
729
  i0.ɵɵelementEnd();
712
- i0.ɵɵelementStart(20, "td", 134);
730
+ i0.ɵɵelementStart(20, "td", 135);
713
731
  i0.ɵɵtext(21);
714
732
  i0.ɵɵelementEnd();
715
- i0.ɵɵelementStart(22, "td", 108)(23, "div", 135)(24, "span", 136);
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", 137);
719
- i0.ɵɵlistener("ngModelChange", function BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_43_Conditional_48_Conditional_35_For_25_Template_input_ngModelChange_26_listener($event) { const order_r16 = i0.ɵɵrestoreView(_r15).$implicit; const ctx_r1 = i0.ɵɵnextContext(5); return i0.ɵɵresetView(ctx_r1.SetOrderAllocation(order_r16.ID || "", $event)); });
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, BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_43_Conditional_48_Conditional_35_For_25_Conditional_27_Template, 3, 0, "div", 138);
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", 110);
741
+ i0.ɵɵelementStart(28, "td", 111);
724
742
  i0.ɵɵtext(29);
725
- i0.ɵɵconditionalCreate(30, BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_43_Conditional_48_Conditional_35_For_25_Conditional_30_Template, 2, 1, "div", 138);
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", 108);
728
- i0.ɵɵconditionalCreate(32, BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_43_Conditional_48_Conditional_35_For_25_Conditional_32_Template, 2, 1, "button", 139);
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, BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_43_Conditional_48_Conditional_35_For_25_Conditional_33_Template, 24, 1, "tr", 140);
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 order_r16 = ctx.$implicit;
750
+ const order_r17 = ctx.$implicit;
733
751
  const ctx_r1 = i0.ɵɵnextContext(5);
734
- i0.ɵɵclassProp("is-expanded", ctx_r1.IsOrderExpanded(order_r16.ID || ""));
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(order_r16.ID || ""))("fa-chevron-right", !ctx_r1.IsOrderExpanded(order_r16.ID || ""));
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(order_r16.OrderNumber);
758
+ i0.ɵɵtextInterpolate(order_r17.OrderNumber);
741
759
  i0.ɵɵadvance();
742
- i0.ɵɵconditional(order_r16.Description ? 9 : -1);
760
+ i0.ɵɵconditional(order_r17.Description ? 9 : -1);
743
761
  i0.ɵɵadvance(2);
744
- i0.ɵɵtextInterpolate(ctx_r1.FormatOrderDate(order_r16));
762
+ i0.ɵɵtextInterpolate(ctx_r1.FormatOrderDate(order_r17));
745
763
  i0.ɵɵadvance(2);
746
- i0.ɵɵconditional(ctx_r1.GetOrderDaysOverdue(order_r16) > 0 ? 13 : 14);
764
+ i0.ɵɵconditional(ctx_r1.GetOrderDaysOverdue(order_r17) > 0 ? 13 : 14);
747
765
  i0.ɵɵadvance(4);
748
- i0.ɵɵtextInterpolate(order_r16.Company || "Default");
766
+ i0.ɵɵtextInterpolate(order_r17.Company || "Default");
749
767
  i0.ɵɵadvance(2);
750
- i0.ɵɵtextInterpolate1("$", (order_r16.TotalGross || 0).toFixed(2));
768
+ i0.ɵɵtextInterpolate1("$", (order_r17.TotalGross || 0).toFixed(2));
751
769
  i0.ɵɵadvance(2);
752
- i0.ɵɵtextInterpolate1("$", (order_r16.Balance ?? order_r16.TotalGross ?? 0).toFixed(2));
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(order_r16.ID || ""));
772
+ i0.ɵɵclassProp("is-derived", ctx_r1.HasLineAllocations(order_r17.ID || ""));
755
773
  i0.ɵɵadvance(3);
756
- i0.ɵɵproperty("ngModel", ctx_r1.GetOrderAllocation(order_r16.ID || ""))("disabled", ctx_r1.IsCaptured || ctx_r1.HasLineAllocations(order_r16.ID || ""))("title", ctx_r1.HasLineAllocations(order_r16.ID || "") ? "Order allocation is driven by line item allocations below" : "Enter amount to allocate to order");
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(order_r16.ID || "") ? 27 : -1);
776
+ i0.ɵɵconditional(ctx_r1.HasLineAllocations(order_r17.ID || "") ? 27 : -1);
759
777
  i0.ɵɵadvance();
760
- i0.ɵɵclassProp("text-muted", ctx_r1.CalculateLeavesBalance(order_r16) === 0);
778
+ i0.ɵɵclassProp("text-muted", ctx_r1.CalculateLeavesBalance(order_r17) === 0);
761
779
  i0.ɵɵadvance();
762
- i0.ɵɵtextInterpolate1(" ", ctx_r1.FormatLeavesBalance(order_r16), " ");
780
+ i0.ɵɵtextInterpolate1(" ", ctx_r1.FormatLeavesBalance(order_r17), " ");
763
781
  i0.ɵɵadvance();
764
- i0.ɵɵconditional(ctx_r1.FormatLeavesCredit(order_r16) ? 30 : -1);
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(order_r16.ID || "") ? 33 : -1);
786
+ i0.ɵɵconditional(ctx_r1.IsOrderExpanded(order_r17.ID || "") ? 33 : -1);
769
787
  } }
770
- function BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_43_Conditional_48_Conditional_35_Template(rf, ctx) { if (rf & 1) {
771
- i0.ɵɵelementStart(0, "div", 104)(1, "table", 107)(2, "thead")(3, "tr");
772
- i0.ɵɵelement(4, "th", 124);
773
- i0.ɵɵconditionalCreate(5, BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_43_Conditional_48_Conditional_35_Conditional_5_Template, 2, 0, "th");
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", 108);
804
+ i0.ɵɵelementStart(14, "th", 109);
787
805
  i0.ɵɵtext(15, "Gross");
788
806
  i0.ɵɵelementEnd();
789
- i0.ɵɵelementStart(16, "th", 108);
807
+ i0.ɵɵelementStart(16, "th", 109);
790
808
  i0.ɵɵtext(17, "Open Balance");
791
809
  i0.ɵɵelementEnd();
792
- i0.ɵɵelementStart(18, "th", 125);
810
+ i0.ɵɵelementStart(18, "th", 126);
793
811
  i0.ɵɵtext(19, "Apply Amount");
794
812
  i0.ɵɵelementEnd();
795
- i0.ɵɵelementStart(20, "th", 108);
813
+ i0.ɵɵelementStart(20, "th", 109);
796
814
  i0.ɵɵtext(21, "Leaves Balance");
797
815
  i0.ɵɵelementEnd();
798
- i0.ɵɵelement(22, "th", 126);
816
+ i0.ɵɵelement(22, "th", 127);
799
817
  i0.ɵɵelementEnd()();
800
818
  i0.ɵɵelementStart(23, "tbody");
801
- i0.ɵɵrepeaterCreate(24, BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_43_Conditional_48_Conditional_35_For_25_Template, 34, 26, null, null, _forTrack0);
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 BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_43_Conditional_48_Template(rf, ctx) { if (rf & 1) {
811
- i0.ɵɵelementStart(0, "div", 91)(1, "div", 92)(2, "div", 93)(3, "span", 94);
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", 95);
832
+ i0.ɵɵelementStart(5, "span", 96);
815
833
  i0.ɵɵtext(6);
816
834
  i0.ɵɵelementEnd()();
817
- i0.ɵɵelementStart(7, "div", 96);
818
- i0.ɵɵelement(8, "i", 97);
835
+ i0.ɵɵelementStart(7, "div", 97);
836
+ i0.ɵɵelement(8, "i", 98);
819
837
  i0.ɵɵelementEnd();
820
- i0.ɵɵelementStart(9, "div", 93)(10, "span", 94);
838
+ i0.ɵɵelementStart(9, "div", 94)(10, "span", 95);
821
839
  i0.ɵɵtext(11, "Allocated");
822
840
  i0.ɵɵelementEnd();
823
- i0.ɵɵelementStart(12, "span", 95);
841
+ i0.ɵɵelementStart(12, "span", 96);
824
842
  i0.ɵɵtext(13);
825
843
  i0.ɵɵelementEnd()();
826
- i0.ɵɵelementStart(14, "div", 96);
827
- i0.ɵɵelement(15, "i", 105);
844
+ i0.ɵɵelementStart(14, "div", 97);
845
+ i0.ɵɵelement(15, "i", 106);
828
846
  i0.ɵɵelementEnd();
829
- i0.ɵɵelementStart(16, "div", 93)(17, "span", 94);
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", 95);
850
+ i0.ɵɵelementStart(19, "span", 96);
833
851
  i0.ɵɵtext(20);
834
852
  i0.ɵɵelementEnd()()();
835
- i0.ɵɵelementStart(21, "div", 111);
836
- i0.ɵɵconditionalCreate(22, BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_43_Conditional_48_Conditional_22_Template, 3, 0)(23, BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_43_Conditional_48_Conditional_23_Template, 3, 1)(24, BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_43_Conditional_48_Conditional_24_Template, 3, 1);
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", 98)(26, "div", 99)(27, "h2", 100);
839
- i0.ɵɵelement(28, "i", 89);
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, BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_43_Conditional_48_Conditional_30_Template, 2, 1, "span", 55);
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, BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_43_Conditional_48_Conditional_31_Template, 10, 1, "div", 112);
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", 101);
847
- i0.ɵɵconditionalCreate(33, BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_43_Conditional_48_Conditional_33_Template, 2, 0, "div", 102)(34, BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_43_Conditional_48_Conditional_34_Template, 1, 0, "mj-empty-state", 113)(35, BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_43_Conditional_48_Conditional_35_Template, 26, 1, "div", 104);
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, 39, 12, "div", 46)(37, BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_43_Conditional_37_Template, 10, 2, "div", 46);
907
- i0.ɵɵelementStart(38, "mj-form-field", 47);
908
- i0.ɵɵlistener("Navigate", function BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_43_Template_mj_form_field_Navigate_38_listener($event) { i0.ɵɵrestoreView(_r4); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.OnFormNavigate($event)); });
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(39, BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_43_Conditional_39_Template, 2, 0, "div", 48);
911
- i0.ɵɵelementStart(40, "mj-form-field", 49);
912
- i0.ɵɵlistener("Navigate", function BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_43_Template_mj_form_field_Navigate_40_listener($event) { i0.ɵɵrestoreView(_r4); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.OnFormNavigate($event)); });
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(41, "div", 50)(42, "span", 51);
915
- i0.ɵɵtext(43, "Net Settlement Amount");
932
+ i0.ɵɵelementStart(42, "div", 50)(43, "span", 51);
933
+ i0.ɵɵtext(44, "Net Settlement Amount");
916
934
  i0.ɵɵelementEnd();
917
- i0.ɵɵelementStart(44, "span", 52);
918
- i0.ɵɵtext(45);
935
+ i0.ɵɵelementStart(45, "span", 52);
936
+ i0.ɵɵtext(46);
919
937
  i0.ɵɵelementEnd()()()()();
920
- i0.ɵɵelementStart(46, "main", 53);
921
- i0.ɵɵconditionalCreate(47, BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_43_Conditional_47_Template, 25, 6)(48, BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_43_Conditional_48_Template, 36, 15);
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.PaymentTypeCode === "check" ? 34 : ctx_r1.PaymentTypeCode === "ach" ? 35 : ctx_r1.PaymentTypeCode === "card" || ctx_r1.RequiresInstrument ? 36 : ctx_r1.RequiresReference ? 37 : -1);
939
- i0.ɵɵadvance(4);
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 ? 39 : -1);
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 ? 47 : 48);
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", 102);
952
- i0.ɵɵelement(1, "mj-loading", 158);
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", 156);
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", 163);
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", 110);
992
+ i0.ɵɵelementStart(6, "td", 111);
975
993
  i0.ɵɵtext(7);
976
994
  i0.ɵɵelementEnd();
977
- i0.ɵɵelementStart(8, "td", 110);
995
+ i0.ɵɵelementStart(8, "td", 111);
978
996
  i0.ɵɵtext(9);
979
997
  i0.ɵɵelementEnd()();
980
998
  } if (rf & 2) {
981
- const row_r22 = ctx.$implicit;
999
+ const row_r23 = ctx.$implicit;
982
1000
  const ctx_r1 = i0.ɵɵnextContext(6);
983
1001
  i0.ɵɵadvance(2);
984
- i0.ɵɵtextInterpolate(row_r22.AccountCode || "\u2014");
1002
+ i0.ɵɵtextInterpolate(row_r23.AccountCode || "\u2014");
985
1003
  i0.ɵɵadvance(3);
986
- i0.ɵɵtextInterpolate(row_r22.AccountName);
1004
+ i0.ɵɵtextInterpolate(row_r23.AccountName);
987
1005
  i0.ɵɵadvance(2);
988
- i0.ɵɵtextInterpolate(row_r22.Debit ? ctx_r1.RollupAmount(row_r22.Debit) : "\u2014");
1006
+ i0.ɵɵtextInterpolate(row_r23.Debit ? ctx_r1.RollupAmount(row_r23.Debit) : "\u2014");
989
1007
  i0.ɵɵadvance(2);
990
- i0.ɵɵtextInterpolate(row_r22.Credit ? ctx_r1.RollupAmount(row_r22.Credit) : "\u2014");
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", 159)(1, "div", 29)(2, "div")(3, "h3", 30);
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", 131);
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", 160)(10, "table", 161)(11, "thead")(12, "tr")(13, "th");
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", 108);
1026
+ i0.ɵɵelementStart(17, "th", 109);
1009
1027
  i0.ɵɵtext(18, "Debit");
1010
1028
  i0.ɵɵelementEnd();
1011
- i0.ɵɵelementStart(19, "th", 108);
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", 162);
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", 110);
1038
+ i0.ɵɵelementStart(28, "th", 111);
1021
1039
  i0.ɵɵtext(29);
1022
1040
  i0.ɵɵelementEnd();
1023
- i0.ɵɵelementStart(30, "th", 110);
1041
+ i0.ɵɵelementStart(30, "th", 111);
1024
1042
  i0.ɵɵtext(31);
1025
1043
  i0.ɵɵelementEnd()()()()()();
1026
1044
  } if (rf & 2) {
1027
- const card_r23 = ctx.$implicit;
1045
+ const card_r24 = ctx.$implicit;
1028
1046
  const ctx_r1 = i0.ɵɵnextContext(5);
1029
1047
  i0.ɵɵadvance(4);
1030
- i0.ɵɵtextInterpolate(card_r23.Company);
1048
+ i0.ɵɵtextInterpolate(card_r24.Company);
1031
1049
  i0.ɵɵadvance(2);
1032
- i0.ɵɵtextInterpolate2("", card_r23.Rows.length, " ", card_r23.Rows.length === 1 ? "line" : "lines");
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(card_r23))("mjo-badge--error", !ctx_r1.CardIsBalanced(card_r23));
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(card_r23) ? "Balanced" : "Out of Balance", " ");
1054
+ i0.ɵɵtextInterpolate1(" ", ctx_r1.CardIsBalanced(card_r24) ? "Balanced" : "Out of Balance", " ");
1037
1055
  i0.ɵɵadvance(14);
1038
- i0.ɵɵrepeater(card_r23.Rows);
1056
+ i0.ɵɵrepeater(card_r24.Rows);
1039
1057
  i0.ɵɵadvance(7);
1040
- i0.ɵɵtextInterpolate1("$", card_r23.TotalDebit.toFixed(2));
1058
+ i0.ɵɵtextInterpolate1("$", card_r24.TotalDebit.toFixed(2));
1041
1059
  i0.ɵɵadvance(2);
1042
- i0.ɵɵtextInterpolate1("$", card_r23.TotalCredit.toFixed(2));
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", 157);
1046
- i0.ɵɵrepeaterCreate(1, BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_44_Conditional_13_Conditional_3_For_2_Template, 32, 10, "div", 159, _forTrack1);
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", 102)(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", 156)(3, BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_44_Conditional_13_Conditional_3_Template, 3, 0, "div", 157);
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 _r24 = i0.ɵɵgetCurrentView();
1061
- i0.ɵɵelementStart(0, "mj-explorer-entity-data-grid", 165);
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(_r24); const ctx_r1 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r1.OnFormNavigate($event)); });
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", 164);
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 _r21 = i0.ɵɵgetCurrentView();
1076
- i0.ɵɵelementStart(0, "div", 20)(1, "div", 151)(2, "div")(3, "h2");
1077
- i0.ɵɵelement(4, "i", 152);
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", 153);
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", 154)(9, "button", 155);
1084
- i0.ɵɵlistener("click", function BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_44_Template_button_click_9_listener() { i0.ɵɵrestoreView(_r21); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.SetAccountingView("summary")); });
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", 155);
1088
- i0.ɵɵlistener("click", function BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_44_Template_button_click_11_listener() { i0.ɵɵrestoreView(_r21); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.SetAccountingView("detail")); });
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 _r25 = i0.ɵɵgetCurrentView();
1104
- i0.ɵɵelementStart(0, "div", 20)(1, "div", 166)(2, "div", 28)(3, "div", 29)(4, "h3", 30);
1105
- i0.ɵɵelement(5, "i", 167);
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", 168)(8, "mj-form-field", 169);
1109
- i0.ɵɵlistener("Navigate", function BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_45_Template_mj_form_field_Navigate_8_listener($event) { i0.ɵɵrestoreView(_r25); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.OnFormNavigate($event)); });
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", 170);
1112
- i0.ɵɵlistener("Navigate", function BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_45_Template_mj_form_field_Navigate_9_listener($event) { i0.ɵɵrestoreView(_r25); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.OnFormNavigate($event)); });
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", 171);
1115
- i0.ɵɵlistener("Navigate", function BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_45_Template_mj_form_field_Navigate_10_listener($event) { i0.ɵɵrestoreView(_r25); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.OnFormNavigate($event)); });
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", 172)(12, "mj-form-field", 173)(13, "mj-form-field", 174);
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", 175);
1138
+ i0.ɵɵelement(17, "i", 176);
1121
1139
  i0.ɵɵtext(18, " Reversal Info & Notes");
1122
1140
  i0.ɵɵelementEnd()();
1123
- i0.ɵɵelementStart(19, "div", 168)(20, "mj-form-field", 176);
1124
- i0.ɵɵlistener("Navigate", function BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_45_Template_mj_form_field_Navigate_20_listener($event) { i0.ɵɵrestoreView(_r25); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.OnFormNavigate($event)); });
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", 177)(22, "mj-form-field", 178)(23, "mj-form-field", 179);
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", 180);
1147
+ i0.ɵɵelement(27, "i", 181);
1130
1148
  i0.ɵɵtext(28, " System Metadata");
1131
1149
  i0.ɵɵelementEnd()();
1132
- i0.ɵɵelementStart(29, "div", 168);
1133
- i0.ɵɵelement(30, "mj-form-field", 181)(31, "mj-form-field", 182);
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 _r26 = i0.ɵɵgetCurrentView();
1164
- i0.ɵɵelementStart(0, "div", 20)(1, "mj-collapsible-panel", 183)(2, "mj-explorer-entity-data-grid", 184);
1165
- i0.ɵɵlistener("Navigate", function BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_46_Template_mj_explorer_entity_data_grid_Navigate_2_listener($event) { i0.ɵɵrestoreView(_r26); 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(_r26); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.SetSectionRowCount("mJBizAppsOrdersStoredValueTransactions", $event.totalRowCount)); });
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", 185)(4, "mj-explorer-entity-data-grid", 184);
1168
- i0.ɵɵlistener("Navigate", function BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_46_Template_mj_explorer_entity_data_grid_Navigate_4_listener($event) { i0.ɵɵrestoreView(_r26); 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(_r26); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.SetSectionRowCount("mJBizAppsOrdersSubscriptionEvents", $event.totalRowCount)); });
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", 186)(6, "mj-explorer-entity-data-grid", 184);
1171
- i0.ɵɵlistener("Navigate", function BizAppsPaymentHeaderFormComponent_Conditional_0_Conditional_46_Template_mj_explorer_entity_data_grid_Navigate_6_listener($event) { i0.ɵɵrestoreView(_r26); 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(_r26); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.SetSectionRowCount("mJBizAppsOrdersPaymentHeaders", $event.totalRowCount)); });
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, 49, 28, "div", 19);
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
- throw new Error(uniqueErrorLines(this.record.LatestResult?.Message) || 'Failed to capture and book payment.');
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 &amp; 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 &amp; 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 &amp; 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 &amp; 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 &amp; 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 &amp; 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 &amp; 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 &amp; 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 &amp; 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 &amp; 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 &amp; 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 &amp; 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 */