@mj-biz-apps/orders-core-entities-server 5.29.0 → 5.31.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 (143) hide show
  1. package/README.md +67 -41
  2. package/dist/AccessOverride.d.ts +19 -3
  3. package/dist/AccessOverride.d.ts.map +1 -1
  4. package/dist/AccessOverride.js +134 -12
  5. package/dist/AccessOverride.js.map +1 -1
  6. package/dist/AccountingBridge.d.ts +12 -1
  7. package/dist/AccountingBridge.d.ts.map +1 -1
  8. package/dist/AccountingBridge.js +9 -1
  9. package/dist/AccountingBridge.js.map +1 -1
  10. package/dist/AmendArrangementOperation.d.ts +1 -48
  11. package/dist/AmendArrangementOperation.d.ts.map +1 -1
  12. package/dist/AmendArrangementOperation.js.map +1 -1
  13. package/dist/BasePaymentProvider.d.ts +85 -0
  14. package/dist/BasePaymentProvider.d.ts.map +1 -1
  15. package/dist/BasePaymentProvider.js +28 -0
  16. package/dist/BasePaymentProvider.js.map +1 -1
  17. package/dist/BundleEngine.d.ts +3 -0
  18. package/dist/BundleEngine.d.ts.map +1 -1
  19. package/dist/BundleEngine.js +40 -0
  20. package/dist/BundleEngine.js.map +1 -1
  21. package/dist/CapturePaymentOperation.d.ts.map +1 -1
  22. package/dist/CapturePaymentOperation.js +4 -2
  23. package/dist/CapturePaymentOperation.js.map +1 -1
  24. package/dist/ChargeReconciliation.d.ts +71 -0
  25. package/dist/ChargeReconciliation.d.ts.map +1 -0
  26. package/dist/ChargeReconciliation.js +112 -0
  27. package/dist/ChargeReconciliation.js.map +1 -0
  28. package/dist/CheckoutSessionService.d.ts +12 -2
  29. package/dist/CheckoutSessionService.d.ts.map +1 -1
  30. package/dist/CheckoutSessionService.js +106 -25
  31. package/dist/CheckoutSessionService.js.map +1 -1
  32. package/dist/ConcessionGate.d.ts +43 -11
  33. package/dist/ConcessionGate.d.ts.map +1 -1
  34. package/dist/ConcessionGate.js +73 -29
  35. package/dist/ConcessionGate.js.map +1 -1
  36. package/dist/EntitlementAccessOverrideEntityServer.d.ts +3 -2
  37. package/dist/EntitlementAccessOverrideEntityServer.d.ts.map +1 -1
  38. package/dist/EntitlementAccessOverrideEntityServer.js +5 -4
  39. package/dist/EntitlementAccessOverrideEntityServer.js.map +1 -1
  40. package/dist/EntitlementBehavior.d.ts +52 -0
  41. package/dist/EntitlementBehavior.d.ts.map +1 -1
  42. package/dist/EntitlementBehavior.js +79 -2
  43. package/dist/EntitlementBehavior.js.map +1 -1
  44. package/dist/EntitlementGrantClaimDriver.d.ts +1 -1
  45. package/dist/EntitlementGrantClaimDriver.d.ts.map +1 -1
  46. package/dist/EntitlementGrantClaimDriver.js +1 -3
  47. package/dist/EntitlementGrantClaimDriver.js.map +1 -1
  48. package/dist/EntitlementRead.d.ts +11 -2
  49. package/dist/EntitlementRead.d.ts.map +1 -1
  50. package/dist/EntitlementRead.js +29 -13
  51. package/dist/EntitlementRead.js.map +1 -1
  52. package/dist/GLAccountResolver.d.ts +34 -5
  53. package/dist/GLAccountResolver.d.ts.map +1 -1
  54. package/dist/GLAccountResolver.js +50 -22
  55. package/dist/GLAccountResolver.js.map +1 -1
  56. package/dist/GuestOrderClaimDriver.d.ts +1 -1
  57. package/dist/GuestOrderClaimDriver.d.ts.map +1 -1
  58. package/dist/GuestOrderClaimDriver.js +16 -10
  59. package/dist/GuestOrderClaimDriver.js.map +1 -1
  60. package/dist/InvoiceBehavior.d.ts +0 -1
  61. package/dist/InvoiceBehavior.d.ts.map +1 -1
  62. package/dist/InvoiceBehavior.js.map +1 -1
  63. package/dist/InvoiceBuilder.d.ts.map +1 -1
  64. package/dist/InvoiceBuilder.js +0 -1
  65. package/dist/InvoiceBuilder.js.map +1 -1
  66. package/dist/OrderConcessionEntityServer.d.ts.map +1 -1
  67. package/dist/OrderConcessionEntityServer.js +13 -3
  68. package/dist/OrderConcessionEntityServer.js.map +1 -1
  69. package/dist/OrderEntityServer.d.ts +64 -3
  70. package/dist/OrderEntityServer.d.ts.map +1 -1
  71. package/dist/OrderEntityServer.js +186 -6
  72. package/dist/OrderEntityServer.js.map +1 -1
  73. package/dist/OrdersSettings.d.ts +9 -0
  74. package/dist/OrdersSettings.d.ts.map +1 -1
  75. package/dist/OrdersSettings.js +12 -0
  76. package/dist/OrdersSettings.js.map +1 -1
  77. package/dist/PaymentAllocationFactory.d.ts +18 -1
  78. package/dist/PaymentAllocationFactory.d.ts.map +1 -1
  79. package/dist/PaymentAllocationFactory.js +28 -12
  80. package/dist/PaymentAllocationFactory.js.map +1 -1
  81. package/dist/PaymentGatedAccess.d.ts +18 -2
  82. package/dist/PaymentGatedAccess.d.ts.map +1 -1
  83. package/dist/PaymentGatedAccess.js +19 -6
  84. package/dist/PaymentGatedAccess.js.map +1 -1
  85. package/dist/PaymentHeaderEntityServer.d.ts.map +1 -1
  86. package/dist/PaymentHeaderEntityServer.js +2 -2
  87. package/dist/PaymentHeaderEntityServer.js.map +1 -1
  88. package/dist/PaymentLineEntityServer.d.ts.map +1 -1
  89. package/dist/PaymentLineEntityServer.js +2 -2
  90. package/dist/PaymentLineEntityServer.js.map +1 -1
  91. package/dist/PaymentProviderBehavior.d.ts +39 -0
  92. package/dist/PaymentProviderBehavior.d.ts.map +1 -1
  93. package/dist/PaymentProviderBehavior.js +55 -4
  94. package/dist/PaymentProviderBehavior.js.map +1 -1
  95. package/dist/PaymentWebhookDeliveryLog.d.ts +68 -0
  96. package/dist/PaymentWebhookDeliveryLog.d.ts.map +1 -0
  97. package/dist/PaymentWebhookDeliveryLog.js +117 -0
  98. package/dist/PaymentWebhookDeliveryLog.js.map +1 -0
  99. package/dist/PaymentWebhookEndpointCheck.d.ts +58 -0
  100. package/dist/PaymentWebhookEndpointCheck.d.ts.map +1 -0
  101. package/dist/PaymentWebhookEndpointCheck.js +133 -0
  102. package/dist/PaymentWebhookEndpointCheck.js.map +1 -0
  103. package/dist/PaymentWebhookHandler.d.ts +1 -0
  104. package/dist/PaymentWebhookHandler.d.ts.map +1 -1
  105. package/dist/PaymentWebhookHandler.js +97 -11
  106. package/dist/PaymentWebhookHandler.js.map +1 -1
  107. package/dist/PollExternalPaymentsOperation.d.ts +10 -0
  108. package/dist/PollExternalPaymentsOperation.d.ts.map +1 -1
  109. package/dist/PollExternalPaymentsOperation.js +64 -15
  110. package/dist/PollExternalPaymentsOperation.js.map +1 -1
  111. package/dist/PriceBelowEngineExceptions.d.ts +2 -1
  112. package/dist/PriceBelowEngineExceptions.d.ts.map +1 -1
  113. package/dist/PriceBelowEngineExceptions.js +6 -5
  114. package/dist/PriceBelowEngineExceptions.js.map +1 -1
  115. package/dist/ProductPriceEntityServer.d.ts +2 -0
  116. package/dist/ProductPriceEntityServer.d.ts.map +1 -1
  117. package/dist/ProductPriceEntityServer.js +4 -0
  118. package/dist/ProductPriceEntityServer.js.map +1 -1
  119. package/dist/ProviderRefundBooking.d.ts +96 -0
  120. package/dist/ProviderRefundBooking.d.ts.map +1 -0
  121. package/dist/ProviderRefundBooking.js +248 -0
  122. package/dist/ProviderRefundBooking.js.map +1 -0
  123. package/dist/ReconcilePaymentProviderChargesOperation.d.ts +41 -0
  124. package/dist/ReconcilePaymentProviderChargesOperation.d.ts.map +1 -0
  125. package/dist/ReconcilePaymentProviderChargesOperation.js +311 -0
  126. package/dist/ReconcilePaymentProviderChargesOperation.js.map +1 -0
  127. package/dist/StripePaymentProvider.d.ts +23 -1
  128. package/dist/StripePaymentProvider.d.ts.map +1 -1
  129. package/dist/StripePaymentProvider.js +117 -0
  130. package/dist/StripePaymentProvider.js.map +1 -1
  131. package/dist/SubscriptionBehavior.d.ts +13 -3
  132. package/dist/SubscriptionBehavior.d.ts.map +1 -1
  133. package/dist/SubscriptionBehavior.js +32 -5
  134. package/dist/SubscriptionBehavior.js.map +1 -1
  135. package/dist/index.d.ts +19 -10
  136. package/dist/index.d.ts.map +1 -1
  137. package/dist/index.js +10 -5
  138. package/dist/index.js.map +1 -1
  139. package/package.json +29 -18
  140. package/dist/identityClaimContracts.d.ts +0 -118
  141. package/dist/identityClaimContracts.d.ts.map +0 -1
  142. package/dist/identityClaimContracts.js +0 -58
  143. package/dist/identityClaimContracts.js.map +0 -1
package/README.md CHANGED
@@ -1,50 +1,62 @@
1
1
  # `@mj-biz-apps/orders-core-entities-server`
2
2
 
3
- **Every rule that decides money lives here.** Entity subclasses that override `Save()`, the pure
4
- engines they call, and the remotable operations that expose multi-step work.
3
+ **The server half of the rules that decide money.** Entity subclasses that override `Save()` or
4
+ validation, the engines behind booking, GL resolution, payments and subscriptions, and the remote
5
+ operations that expose multi-step work.
6
+
7
+ The pricing engine — price resolution, promotions, charges and tax — is not here. It lives in
8
+ `@mj-biz-apps/orders-entities` (`packages/Entities/src/pricing/`), so the browser can price an order
9
+ with the same code that books it, and this package re-exports it for server callers.
5
10
 
6
11
  This package is server-only. Import it from the server bootstrap so its `@RegisterClass` decorators
7
12
  fire — nothing here is reachable until they do.
8
13
 
9
14
  ---
10
15
 
11
- ## The shape: pure core, server shell
16
+ ## The shape: pure core, database shell
12
17
 
13
18
  Each domain is split in two, and the split is deliberate rather than tidy.
14
19
 
15
- | Pure (no DB, no entities) | Server (needs a database) |
16
- |---|---|
17
- | `PricingBehavior` | `PriceResolver` |
18
- | `PromotionBehavior` | `PromotionEngine` |
19
- | `ChargeBehavior` | `ChargeEngine` |
20
- | `SubscriptionBehavior` | `OrderEntityServer` |
21
- | `TaxResolver` *(the walk)* | `TaxResolver` *(the lookups)* |
20
+ | Pure (no DB, no entities) | Needs a database | Package |
21
+ |---|---|---|
22
+ | `PricingBehavior` | `PriceResolver` | orders-entities |
23
+ | `PromotionBehavior` | `PromotionEngine` | orders-entities |
24
+ | `ChargeBehavior` | `ChargeEngine` | orders-entities |
25
+ | `TaxResolver` *(the walk)* | `TaxResolver` *(the lookups)* | orders-entities |
26
+ | `SubscriptionBehavior` | `OrderEntityServer` | this package |
22
27
 
23
28
  **Why:** the arithmetic is where the money is, and money should be provable without a database. Two
24
29
  10% promotions are 19% or 20% depending on one setting; a Volume band and a Tiered band give 800 and
25
30
  900 for identical inputs. Those facts are asserted in unit tests that run in milliseconds, and the
26
- server half is then only responsible for finding the right rows.
31
+ database half is then only responsible for finding the right rows. `OrderPricingService` runs the
32
+ four pricing stages in order, for `Save()` and for `Orders.PriceOrder` alike.
27
33
 
28
34
  ## The order confirm, end to end
29
35
 
30
- `OrderEntityServer.Save()` is the spine. Everything happens in ONE transaction:
36
+ `OrderEntityServer.Save()` is the spine. Everything happens in ONE transaction. In outline (the
37
+ method has the full sequence):
31
38
 
32
39
  ```
33
40
  BeginTransaction
34
- assign OrderNumber
35
- save the header
41
+ delete lines the caller removed
42
+ expand bundles into their component lines
43
+ decide subscriptions
36
44
  ── per line, IN MEMORY ─────────────────────────────
37
45
  proration (subscription terms)
38
46
  event service period
39
- price resolution → UnitPrice, ProductPriceID
40
- decide promotions → DiscountAmount
41
- decide charges + resolve tax → LineTax, ChargeAmount
47
+ OrderPricingService: price → promotions → charges → tax
48
+ → UnitPrice, DiscountAmount, ChargeAmount, LineTax
42
49
  ── persist ─────────────────────────────────────────
50
+ save the header (a new order gets its OrderNumber here)
43
51
  save lines
44
52
  write adjustment + charge + component rows
53
+ check the total the caller was shown, if it sent one
45
54
  materialize subscriptions
46
55
  book journal entries
56
+ issue instalments already due
47
57
  create the initial payment
58
+ grant entitlements
59
+ record the OrderConfirmed outbound event (sales only)
48
60
  CommitTransaction
49
61
  ```
50
62
 
@@ -52,23 +64,29 @@ CommitTransaction
52
64
  stylistic: a Confirmed line is frozen by trigger 51003, and because MJ's CRUD procs run under
53
65
  `INSERT-EXEC`, a trigger rollback surfaces as *"Cannot use the ROLLBACK statement within an
54
66
  INSERT-EXEC statement"* — an error naming neither the line nor the rule it broke. Correcting a line
55
- after insert is not an option, so nothing may need correcting.
67
+ after insert is not an option, so nothing may need correcting. A draft being confirmed already has
68
+ its lines, so they are rewritten while the header is still Draft, before the status change that
69
+ freezes them.
56
70
 
57
71
  ## Resolution walks
58
72
 
59
- Two resolvers walk the **same path**, on purpose — anyone who understands one understands the other,
60
- and they cannot drift into disagreeing about what "the product's category tree" means:
73
+ The resolvers follow the **same path** up the product's category tree, on purpose — anyone who
74
+ understands one understands the others, and they cannot drift into disagreeing about what "the
75
+ product's category tree" means:
61
76
 
62
77
  ```
63
- product → its category → that category's ancestors → the company → default
78
+ product → its category → that category's ancestors → …
64
79
  ```
65
80
 
66
- - **`GLAccountResolver`** — role → GL account. Nothing resolving is a hard failure; a guessed account
67
- still balances, so the misposting would be invisible.
68
- - **`PriceResolver`** — product → price, with `BasePriceResolver` pluggable at any level.
81
+ They differ in where the walk ends:
69
82
 
70
- `TaxResolver` uses the same chain for taxability (product → category → ancestors → type), with the
71
- type as a NOT NULL backstop so the walk always terminates.
83
+ - **`GLAccountResolver`** — role → GL account, continuing to the product type, then the company.
84
+ Nothing resolving is a hard failure; a guessed account still balances, so the misposting would be
85
+ invisible.
86
+ - **`PriceResolver`** — product → price, continuing to the company, then the default resolver, with a
87
+ `BasePriceResolver` plugin possible at the product, category and company levels.
88
+ - **`TaxResolver`** — taxability, continuing to the product type, a NOT NULL backstop so the walk
89
+ always terminates.
72
90
 
73
91
  ## Refusals are a feature
74
92
 
@@ -93,20 +111,15 @@ reasons applied.
93
111
  Multi-step work with guards, exposed through `BaseRemotableOperation`. Logical refusals come back
94
112
  **inside** the output as `Success: false` with a reason; only genuine faults throw.
95
113
 
96
- | Operation | Does |
97
- |---|---|
98
- | `Orders.PreviewPrice` | Dry-run pricing. **Runs the real pipeline** — a preview that diverges from what is charged is worse than none |
99
- | `Orders.ApplyAccountCredit` | Spends an order's negative balance on another order. Zero-amount payment, two offsetting lines |
100
- | `Orders.RefundPayment` | Mirrors a capture (D53), proportionally across the orders it settled |
101
- | `Orders.CancelSubscription` | Cancels with the term's own rules. Revokes standing grants when access-through has already passed |
102
- | `Orders.SpawnRenewals` | Spawns renewal orders as Drafts |
103
- | `Orders.CheckEntitlement` | Does this person currently have this capability? Evaluated, not a poll of `Status`. Fail closed |
104
- | `Orders.ListEntitlements` | The person's library, one row per Code, same evaluator |
114
+ Each operation is a row in [`metadata/remote-operations/`](../../metadata/remote-operations/), the
115
+ source of truth; CodeGen emits its typed base into `@mj-biz-apps/orders-entities`, and this package
116
+ holds the implementations. The full list, with scopes and why each one is an operation rather than a
117
+ save, is in [`docs/orders-api-and-ui-architecture.md`](../../docs/orders-api-and-ui-architecture.md) §2.
105
118
 
106
119
  ## Accounting boundary
107
120
 
108
- `AccountingBridge` is the only place that knows about bizapps-accounting. Orders resolves accounts
109
- and submits balanced drafts; accounting owns the ledger.
121
+ Orders resolves accounts — `GLAccountResolver`, wired to accounting's engine by `AccountingBridge` —
122
+ and submits balanced drafts to `Accounting.CreateJournalEntries`; accounting owns the ledger.
110
123
 
111
124
  Two constraints that shape everything: accounting derives an entry's company **from its accounts**,
112
125
  so a cross-company entry cannot be booked at all — which is why intercompany legs are per company
@@ -115,8 +128,10 @@ an entry (sides swapped, positive amounts), never a negation.
115
128
 
116
129
  ## Testing
117
130
 
118
- - **Unit** (`src/__tests__`, vitest, no DB) — the pure engines. Volume vs Tiered, stacking
119
- arithmetic, charge basis, the taxability walk, allocation.
131
+ - **Unit** (vitest, no DB) — the pure engines. Volume vs Tiered, stacking arithmetic, charge basis
132
+ and the taxability walk are in `packages/Entities/src/__tests__`, beside the pricing engine;
133
+ subscriptions, allocation and the rest of this package are in `src/__tests__`. `pnpm run test:unit`
134
+ at the root runs every package's.
120
135
  - **Integration** — `@mj-biz-apps/orders-integration-tests`, transaction-per-check with rollback.
121
136
 
122
137
  Both suites are mutation-tested: break the code deliberately, confirm the checks catch it. Worth the
@@ -125,7 +140,8 @@ entry.
125
140
 
126
141
  ## Adding behaviour
127
142
 
128
- Prefer a plugin over an edit:
143
+ Prefer a plugin over an edit. The three base classes come from `@mj-biz-apps/orders-entities` (this
144
+ package re-exports them):
129
145
 
130
146
  ```ts
131
147
  @RegisterClass(BasePriceResolver, `Company:${companyId}`)
@@ -138,5 +154,15 @@ export class TwoYearMember extends BasePromotionQualifier { /* ... */ }
138
154
  export class RooftopResolver extends BaseTaxJurisdictionResolver { /* ... */ }
139
155
  ```
140
156
 
157
+ A price plugin is server code, so the browser cannot run it. Set `PricingDriverClass` to the plugin's
158
+ key on the product, the category (inherited by child categories), the product type, or the company's
159
+ `OrderCompanyPolicy`; the most specific non-empty level wins. `ResolvePrice` invokes the resolver
160
+ registered under that key first, then falls back to the `Product:<id>`, `Category:<id>` and
161
+ `Company:<id>` keys. A key with no registered resolver refuses the line with a `PriceResolutionError`
162
+ naming the key, rather than pricing it by the default. `CanPriceOrderLocally` reads the same walk and
163
+ reports that the order cannot be priced locally, and `MJOPricingScheduler`, the pricing service
164
+ behind the order screens, sends it to `Orders.PriceOrder` instead, as it does for any order carrying
165
+ a promotion code.
166
+
141
167
  If you must edit an engine: put the arithmetic in the pure half with a unit test, and keep the
142
- server half to finding rows.
168
+ database half to finding rows.
@@ -16,8 +16,14 @@
16
16
  * alone. The in-app decision and the task type's hook Action (a decision made in the Tasks inbox)
17
17
  * both call it, so either path lands the same result, once.
18
18
  *
19
- * WHO MAY APPROVE is not settled (bizapps-orders#360). The approval task is raised unassigned, and a
20
- * decision takes effect only through that task; who may record one is left to #360.
19
+ * WHO APPROVES (bizapps-orders#360). The approval task is assigned, through their person records, to the
20
+ * order company's `AccountingCompanyProfile.ApprovalCFOUserID` — the approver journal entry batches
21
+ * use. When that user is the requester, it goes instead to every other active holder of the role the
22
+ * `AccessOverrideFallbackApproverRole` setting names. A request nobody could approve is refused.
23
+ * Only an assignee may decide, never the requester, and an approval after the override's last day is
24
+ * refused ({@link AccessOverrideDecisionRefusal}). The in-app decision refuses before it records
25
+ * anything; a decision made in the Tasks inbox has already closed the task, so the hook closes the
26
+ * override Withdrawn with the reason, and the requester may ask again.
21
27
  *
22
28
  * FAILS CLOSED. Without the authorization rows in metadata nobody may request — an exception to a
23
29
  * payment rule is not something to hand out because a sync has not run.
@@ -30,7 +36,7 @@
30
36
  * packages/Server/src/custom/apply-access-override-decision.action.ts
31
37
  */
32
38
  import { IMetadataProvider, UserInfo } from '@memberjunction/core';
33
- import { ACCESS_OVERRIDE_AUTH } from '@mj-biz-apps/orders-entities';
39
+ import { ACCESS_OVERRIDE_AUTH, mjBizAppsOrdersEntitlementAccessOverrideEntity } from '@mj-biz-apps/orders-entities';
34
40
  import { type AccessOverrideType } from './EntitlementBehavior.js';
35
41
  export { ACCESS_OVERRIDE_AUTH };
36
42
  /** The TaskType the approval is raised under. Its hook Actions apply a decision made in the Tasks inbox. */
@@ -87,4 +93,14 @@ export declare function RecordAccessOverrideDecision(input: RecordAccessOverride
87
93
  * A second call after the first has applied it changes nothing.
88
94
  */
89
95
  export declare function ApplyAccessOverrideDecision(taskID: string, provider: IMetadataProvider, user: UserInfo): Promise<AccessOverrideDecisionOutput>;
96
+ /**
97
+ * Why `deciderID` may not record this decision on the override, or null when they may. Shared by the
98
+ * in-app decision, the Tasks hook and the entity's own save, so every path holds the same rule.
99
+ */
100
+ export declare function DecisionRefusalFor(override: Pick<mjBizAppsOrdersEntitlementAccessOverrideEntity, 'ApprovalTaskID' | 'RequestedByUserID' | 'EffectiveThrough'>, deciderID: string, approving: boolean, provider: IMetadataProvider, user: UserInfo): Promise<string | null>;
101
+ /**
102
+ * The users an approval task is assigned to, read the same way the order form reads them
103
+ * ({@link LoadAccessOverrideAssignees}): a person record's linked user, or a user assigned directly.
104
+ */
105
+ export declare function AssigneeUserIDs(taskID: string, provider: IMetadataProvider, user: UserInfo): Promise<string[]>;
90
106
  //# sourceMappingURL=AccessOverride.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"AccessOverride.d.ts","sourceRoot":"","sources":["../src/AccessOverride.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,OAAO,EAGH,iBAAiB,EAIjB,QAAQ,EACX,MAAM,sBAAsB,CAAC;AAe9B,OAAO,EACH,oBAAoB,EAGvB,MAAM,8BAA8B,CAAC;AACtC,OAAO,EAKH,KAAK,kBAAkB,EAE1B,MAAM,0BAA0B,CAAC;AAKlC,OAAO,EAAE,oBAAoB,EAAE,CAAC;AAQhC,4GAA4G;AAC5G,eAAO,MAAM,8BAA8B,2BAA2B,CAAC;AAevE;;;GAGG;AACH,wBAAgB,4BAA4B,CAAC,IAAI,EAAE,kBAAkB,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,iBAAiB,GAAG,OAAO,CAW3H;AAID,MAAM,WAAW,0BAA0B;IACvC,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,EAAE,kBAAkB,CAAC;IACjC,MAAM,EAAE,MAAM,CAAC;IACf,wFAAwF;IACxF,gBAAgB,EAAE,MAAM,CAAC;CAC5B;AAED,MAAM,WAAW,2BAA2B;IACxC,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,cAAc,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED;;;;;GAKG;AACH,wBAAsB,qBAAqB,CACvC,KAAK,EAAE,0BAA0B,EACjC,QAAQ,EAAE,iBAAiB,EAC3B,IAAI,EAAE,QAAQ,GACf,OAAO,CAAC,2BAA2B,CAAC,CAuFtC;AAID,MAAM,WAAW,iCAAiC;IAC9C,gBAAgB,EAAE,MAAM,CAAC;IACzB,yFAAyF;IACzF,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,4BAA4B;IACzC,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,4CAA4C;IAC5C,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,qEAAqE;IACrE,aAAa,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,mGAAmG;AACnG,wBAAsB,4BAA4B,CAC9C,KAAK,EAAE,iCAAiC,EACxC,QAAQ,EAAE,iBAAiB,EAC3B,IAAI,EAAE,QAAQ,GACf,OAAO,CAAC,4BAA4B,CAAC,CAsBvC;AAED;;;;;;;;;GASG;AACH,wBAAsB,2BAA2B,CAC7C,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,iBAAiB,EAC3B,IAAI,EAAE,QAAQ,GACf,OAAO,CAAC,4BAA4B,CAAC,CA2CvC"}
1
+ {"version":3,"file":"AccessOverride.d.ts","sourceRoot":"","sources":["../src/AccessOverride.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoCG;AACH,OAAO,EAGH,iBAAiB,EAIjB,QAAQ,EACX,MAAM,sBAAsB,CAAC;AAe9B,OAAO,EACH,oBAAoB,EAIpB,8CAA8C,EAEjD,MAAM,8BAA8B,CAAC;AAEtC,OAAO,EAMH,KAAK,kBAAkB,EAE1B,MAAM,0BAA0B,CAAC;AAOlC,OAAO,EAAE,oBAAoB,EAAE,CAAC;AAQhC,4GAA4G;AAC5G,eAAO,MAAM,8BAA8B,2BAA2B,CAAC;AAkBvE;;;GAGG;AACH,wBAAgB,4BAA4B,CAAC,IAAI,EAAE,kBAAkB,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,iBAAiB,GAAG,OAAO,CAW3H;AAID,MAAM,WAAW,0BAA0B;IACvC,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,EAAE,kBAAkB,CAAC;IACjC,MAAM,EAAE,MAAM,CAAC;IACf,wFAAwF;IACxF,gBAAgB,EAAE,MAAM,CAAC;CAC5B;AAED,MAAM,WAAW,2BAA2B;IACxC,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,cAAc,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED;;;;;GAKG;AACH,wBAAsB,qBAAqB,CACvC,KAAK,EAAE,0BAA0B,EACjC,QAAQ,EAAE,iBAAiB,EAC3B,IAAI,EAAE,QAAQ,GACf,OAAO,CAAC,2BAA2B,CAAC,CA8FtC;AAID,MAAM,WAAW,iCAAiC;IAC9C,gBAAgB,EAAE,MAAM,CAAC;IACzB,yFAAyF;IACzF,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,4BAA4B;IACzC,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,4CAA4C;IAC5C,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,qEAAqE;IACrE,aAAa,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,mGAAmG;AACnG,wBAAsB,4BAA4B,CAC9C,KAAK,EAAE,iCAAiC,EACxC,QAAQ,EAAE,iBAAiB,EAC3B,IAAI,EAAE,QAAQ,GACf,OAAO,CAAC,4BAA4B,CAAC,CAwBvC;AAED;;;;;;;;;GASG;AACH,wBAAsB,2BAA2B,CAC7C,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,iBAAiB,EAC3B,IAAI,EAAE,QAAQ,GACf,OAAO,CAAC,4BAA4B,CAAC,CAqDvC;AAID;;;GAGG;AACH,wBAAsB,kBAAkB,CACpC,QAAQ,EAAE,IAAI,CAAC,8CAA8C,EAAE,gBAAgB,GAAG,mBAAmB,GAAG,kBAAkB,CAAC,EAC3H,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,OAAO,EAClB,QAAQ,EAAE,iBAAiB,EAC3B,IAAI,EAAE,QAAQ,GACf,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAUxB;AAED;;;GAGG;AACH,wBAAsB,eAAe,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,iBAAiB,EAAE,IAAI,EAAE,QAAQ,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAGpH"}
@@ -16,8 +16,14 @@
16
16
  * alone. The in-app decision and the task type's hook Action (a decision made in the Tasks inbox)
17
17
  * both call it, so either path lands the same result, once.
18
18
  *
19
- * WHO MAY APPROVE is not settled (bizapps-orders#360). The approval task is raised unassigned, and a
20
- * decision takes effect only through that task; who may record one is left to #360.
19
+ * WHO APPROVES (bizapps-orders#360). The approval task is assigned, through their person records, to the
20
+ * order company's `AccountingCompanyProfile.ApprovalCFOUserID` — the approver journal entry batches
21
+ * use. When that user is the requester, it goes instead to every other active holder of the role the
22
+ * `AccessOverrideFallbackApproverRole` setting names. A request nobody could approve is refused.
23
+ * Only an assignee may decide, never the requester, and an approval after the override's last day is
24
+ * refused ({@link AccessOverrideDecisionRefusal}). The in-app decision refuses before it records
25
+ * anything; a decision made in the Tasks inbox has already closed the task, so the hook closes the
26
+ * override Withdrawn with the reason, and the requester may ask again.
21
27
  *
22
28
  * FAILS CLOSED. Without the authorization rows in metadata nobody may request — an exception to a
23
29
  * payment rule is not something to hand out because a sync has not run.
@@ -32,11 +38,14 @@
32
38
  import { AuthorizationEvaluator, LogError, RunView, } from '@memberjunction/core';
33
39
  import { IsApprovalOutcome, IsTaskDecisionOutcomeCode, TaskOrchestrationService, } from '@mj-biz-apps/tasks-core';
34
40
  import { LoadGeneratedEntities as LoadTasksEntities, } from '@mj-biz-apps/tasks-entities';
35
- import { ACCESS_OVERRIDE_AUTH, } from '@mj-biz-apps/orders-entities';
36
- import { ACCESS_OVERRIDE_LIFTS, AccessOverrideCanApply, PAYMENT_GATED_TIMINGS, ResolveAccessOverrideOutcome, } from './EntitlementBehavior.js';
41
+ import { ACCESS_OVERRIDE_AUTH, AccessOverrideDecisionRefusal, LoadAccessOverrideAssignees, ToISODate, } from '@mj-biz-apps/orders-entities';
42
+ import { UUIDsEqual } from '@memberjunction/global';
43
+ import { ACCESS_OVERRIDE_LIFTS, AccessOverrideApprovers, AccessOverrideCanApply, PAYMENT_GATED_TIMINGS, ResolveAccessOverrideOutcome, } from './EntitlementBehavior.js';
44
+ import { ActiveRoleHolderIDs, PERSON_ENTITY } from './ConcessionApprovalTask.js';
37
45
  import { ORDER_HEADER_ENTITY, ORDER_LINE_ENTITY } from './entity-names.js';
46
+ import { OrdersSettings } from './OrdersSettings.js';
38
47
  import { ACCESS_OVERRIDE_ENTITY, BusinessDay, ReconcilePaymentGatedGrants } from './PaymentGatedAccess.js';
39
- import { RequireDate, RequireUUID } from './sql-guards.js';
48
+ import { EscapeText, RequireDate, RequireUUID, RequireUUIDs } from './sql-guards.js';
40
49
  export { ACCESS_OVERRIDE_AUTH };
41
50
  // The Tasks entity subclasses must be registered before a task is created: without them the
42
51
  // ClassFactory hands back a plain BaseEntity, the field setters do nothing, and the save fails on
@@ -51,6 +60,9 @@ const TASK_TYPES_ENTITY = 'MJ_BizApps_Tasks: Task Types';
51
60
  const TASK_LINKS_ENTITY = 'MJ_BizApps_Tasks: Task Links';
52
61
  const TASK_DECISIONS_ENTITY = 'MJ_BizApps_Tasks: Task Decisions';
53
62
  const TASK_DECISION_OUTCOMES_ENTITY = 'MJ_BizApps_Tasks: Task Decision Outcomes';
63
+ const COMPANY_PROFILE_ENTITY = 'MJ_BizApps_Accounting: Accounting Company Profiles';
64
+ const USER_ENTITY = 'MJ: Users';
65
+ const ROLE_ENTITY = 'MJ: Roles';
54
66
  const REASON_MAX = 1000;
55
67
  const OVERRIDE_TYPES = Object.keys(ACCESS_OVERRIDE_LIFTS);
56
68
  const gatedTimings = PAYMENT_GATED_TIMINGS.map((t) => `'${t}'`).join(',');
@@ -110,6 +122,9 @@ export async function RequestAccessOverride(input, provider, user) {
110
122
  Message: `This order already has a ${open.Status} ${input.OverrideType} override; it must close before another is requested.`,
111
123
  };
112
124
  }
125
+ const approvers = await resolveApprovers(order, user, provider);
126
+ if ('Refusal' in approvers)
127
+ return { Success: false, Message: approvers.Refusal };
113
128
  const taskTypeID = await resolveTaskTypeID(provider, user);
114
129
  const db = provider;
115
130
  await db.BeginTransaction();
@@ -129,7 +144,6 @@ export async function RequestAccessOverride(input, provider, user) {
129
144
  if (!overrideEntity)
130
145
  throw new Error(`Entity metadata for '${ACCESS_OVERRIDE_ENTITY}' is missing.`);
131
146
  const label = input.OverrideType === 'WaivePaymentHold' ? 'waive the payment hold' : 'defer the renewal cutoff';
132
- // Unassigned: who approves is bizapps-orders#360.
133
147
  await new TaskOrchestrationService().CreateApprovalRequest({
134
148
  Name: `Approve access override on order ${order.OrderNumber}: ${label} through ${through}`,
135
149
  TypeID: taskTypeID,
@@ -137,12 +151,18 @@ export async function RequestAccessOverride(input, provider, user) {
137
151
  Priority: 'High',
138
152
  LinkEntityID: overrideEntity.ID,
139
153
  LinkRecordID: override.ID,
154
+ ApproverPersonEntityID: approvers.PersonEntityID,
155
+ ApproverPersonRecordIDs: approvers.PersonIDs,
140
156
  }, user);
141
- // CreateApprovalRequest logs rather than throws on a failed link; without the link the
142
- // decision could never be traced back here, so its absence is a fault.
157
+ // CreateApprovalRequest logs rather than throws on a failed link or assignment; without the
158
+ // link the decision could never be traced back here, and without an assignee nobody may
159
+ // decide it, so the absence of either is a fault.
143
160
  const taskID = await findLinkedTaskID(overrideEntity.ID, override.ID, provider, user);
144
161
  if (!taskID)
145
162
  throw new Error('The approval task was created but its link to the access override did not persist.');
163
+ if ((await AssigneeUserIDs(taskID, provider, user)).length === 0) {
164
+ throw new Error('The approval task was created but its assignment to the approver did not persist.');
165
+ }
146
166
  override.ApprovalTaskID = taskID;
147
167
  override.ApprovalTaskRaisedAt = new Date();
148
168
  if (!(await override.Save())) {
@@ -178,6 +198,9 @@ export async function RecordAccessOverrideDecision(input, provider, user) {
178
198
  if (!override.ApprovalTaskID) {
179
199
  return { Success: false, Status: override.Status, Message: 'The access override has no approval task to decide.' };
180
200
  }
201
+ const refusal = await DecisionRefusalFor(override, user.ID, IsApprovalOutcome(outcome), provider, user);
202
+ if (refusal)
203
+ return { Success: false, Status: override.Status, Message: refusal };
181
204
  await new TaskOrchestrationService().RecordDecision({ TaskID: override.ApprovalTaskID, OutcomeCode: outcome, Notes: input.Notes }, user);
182
205
  return ApplyAccessOverrideDecision(override.ApprovalTaskID, provider, user);
183
206
  }
@@ -209,22 +232,32 @@ export async function ApplyAccessOverrideDecision(taskID, provider, user) {
209
232
  const outcome = ResolveAccessOverrideOutcome({ TaskStatus: task.Status, Decision: decision });
210
233
  if (!outcome)
211
234
  return { Success: true, Status: override.Status, Message: `The approval task is ${task.Status}; nothing to apply yet.` };
212
- const applied = outcome === 'Approved' || outcome === 'Rejected';
235
+ // A decision made in the Tasks inbox has already closed the task, so one this override refuses
236
+ // cannot be sent back to it: the request closes Withdrawn with the reason, and may be made again.
237
+ const refusal = outcome === 'Approved' || outcome === 'Rejected'
238
+ ? await DecisionRefusalFor(override, user.ID, outcome === 'Approved', provider, user)
239
+ : null;
240
+ const status = refusal ? 'Withdrawn' : outcome;
241
+ const applied = status === 'Approved' || status === 'Rejected';
213
242
  const db = provider;
214
243
  await db.BeginTransaction();
215
244
  try {
216
- override.Status = outcome;
245
+ override.Status = status;
217
246
  override.DecidedAt = new Date();
218
247
  override.DecisionNotes = applied
219
248
  ? (decision?.Notes ?? null)
220
- : `The approval task was ${task.Status} without a matching decision.`;
249
+ : refusal
250
+ ? `The ${outcome === 'Approved' ? 'approval' : 'rejection'} recorded on the approval task was not applied: ${refusal}`
251
+ : `The approval task was ${task.Status} without a matching decision.`;
221
252
  if (applied)
222
253
  override.DecidedByUserID = user.ID;
223
254
  if (!(await override.Save())) {
224
255
  throw new Error(`Failed to record the decision on access override ${override.ID}: ${override.LatestResult?.CompleteMessage ?? 'unknown error'}`);
225
256
  }
226
- const changes = outcome === 'Approved' ? await ReconcilePaymentGatedGrants([override.OrderHeaderID], provider, user) : [];
257
+ const changes = status === 'Approved' ? await ReconcilePaymentGatedGrants([override.OrderHeaderID], provider, user) : [];
227
258
  await db.CommitTransaction();
259
+ if (refusal)
260
+ return { Success: false, Status: override.Status, Message: override.DecisionNotes ?? refusal };
228
261
  return {
229
262
  Success: true,
230
263
  Status: override.Status,
@@ -237,6 +270,95 @@ export async function ApplyAccessOverrideDecision(taskID, provider, user) {
237
270
  throw err;
238
271
  }
239
272
  }
273
+ // ─── approvers ─────────────────────────────────────────────────────────────────
274
+ /**
275
+ * Why `deciderID` may not record this decision on the override, or null when they may. Shared by the
276
+ * in-app decision, the Tasks hook and the entity's own save, so every path holds the same rule.
277
+ */
278
+ export async function DecisionRefusalFor(override, deciderID, approving, provider, user) {
279
+ if (!override.ApprovalTaskID)
280
+ return 'The access override has no approval task to decide.';
281
+ return AccessOverrideDecisionRefusal({
282
+ Approving: approving,
283
+ DeciderUserID: deciderID,
284
+ RequesterUserID: override.RequestedByUserID,
285
+ AssigneeUserIDs: await AssigneeUserIDs(override.ApprovalTaskID, provider, user),
286
+ EffectiveThrough: ToISODate(override.EffectiveThrough) ?? '',
287
+ Today: await BusinessDay(provider, user),
288
+ });
289
+ }
290
+ /**
291
+ * The users an approval task is assigned to, read the same way the order form reads them
292
+ * ({@link LoadAccessOverrideAssignees}): a person record's linked user, or a user assigned directly.
293
+ */
294
+ export async function AssigneeUserIDs(taskID, provider, user) {
295
+ const assignees = await LoadAccessOverrideAssignees([RequireUUID(taskID, 'TaskID')], provider, user);
296
+ return (assignees.get(taskID.toLowerCase()) ?? []).flatMap((a) => (a.UserID ? [a.UserID] : []));
297
+ }
298
+ /**
299
+ * The person records to assign the approval task to, or why there are none. The approver is the
300
+ * order company's ApprovalCFOUserID, or the fallback role's holders when that user is the requester;
301
+ * see {@link AccessOverrideApprovers}. An approver with no active person record cannot be told of the
302
+ * task, so is left out; with none left, the request is refused.
303
+ */
304
+ async function resolveApprovers(order, user, provider) {
305
+ const personEntityID = provider.EntityByName(PERSON_ENTITY)?.ID;
306
+ if (!personEntityID || !provider.EntityByName(COMPANY_PROFILE_ENTITY)) {
307
+ throw new Error('Access override approvers are resolved through the common and accounting apps, and one of them is not installed.');
308
+ }
309
+ const rv = new RunView(provider);
310
+ const read = async (entityName, filter, fields) => {
311
+ const res = await rv.RunView({ EntityName: entityName, ExtraFilter: filter, Fields: fields, ResultType: 'simple', BypassCache: true }, user);
312
+ if (!res.Success)
313
+ throw new Error(`Could not read ${entityName}: ${res.ErrorMessage}`);
314
+ return res.Results ?? [];
315
+ };
316
+ // IS-A: the accounting profile shares its company's ID.
317
+ const profile = order.CompanyID
318
+ ? (await read(COMPANY_PROFILE_ENTITY, `ID = '${RequireUUID(order.CompanyID, 'CompanyID')}'`, ['ApprovalCFOUserID']))[0]
319
+ : undefined;
320
+ const named = profile?.ApprovalCFOUserID ?? null;
321
+ const active = named
322
+ ? (await read(USER_ENTITY, `ID = '${RequireUUID(named, 'ApprovalCFOUserID')}' AND IsActive = 1`, ['ID'])).length > 0
323
+ : false;
324
+ const companyApprover = active ? named : null;
325
+ let fallbackRole = null;
326
+ let fallbackHolders = [];
327
+ if (companyApprover && UUIDsEqual(companyApprover, user.ID)) {
328
+ await OrdersSettings.Load(provider, user);
329
+ fallbackRole = OrdersSettings.AccessOverrideFallbackApproverRole;
330
+ if (fallbackRole) {
331
+ const role = (await read(ROLE_ENTITY, `Name = '${EscapeText(fallbackRole)}'`, ['ID']))[0];
332
+ if (!role)
333
+ return { Refusal: `The fallback approver role '${fallbackRole}' (Orders setting AccessOverrideFallbackApproverRole) does not exist.` };
334
+ fallbackHolders = await ActiveRoleHolderIDs(role.ID, { Provider: provider, User: user });
335
+ }
336
+ }
337
+ const decided = AccessOverrideApprovers({
338
+ RequesterUserID: user.ID,
339
+ CompanyApproverUserID: companyApprover,
340
+ FallbackRoleName: fallbackRole,
341
+ FallbackHolderIDs: fallbackHolders,
342
+ });
343
+ if ('Refusal' in decided)
344
+ return decided;
345
+ const persons = await read(PERSON_ENTITY, `Status = 'Active' AND LinkedUserID IN (${RequireUUIDs(decided.UserIDs, 'UserID').map((id) => `'${id}'`).join(',')})`, ['ID', 'LinkedUserID']);
346
+ const personIDs = [];
347
+ for (const userID of decided.UserIDs) {
348
+ const person = persons.find((p) => UUIDsEqual(p.LinkedUserID, userID));
349
+ if (person)
350
+ personIDs.push(person.ID);
351
+ else
352
+ LogError(`Access override approver ${userID} has no active person record linked to their user and was not assigned.`);
353
+ }
354
+ if (personIDs.length === 0) {
355
+ return {
356
+ Refusal: 'The approver for this override has no active person record linked to their user. The tasks app tells ' +
357
+ "and lists an approver through that record, so no one would see the request. Link a person record to the approver's user.",
358
+ };
359
+ }
360
+ return { PersonEntityID: personEntityID, PersonIDs: personIDs };
361
+ }
240
362
  // ─── helpers ───────────────────────────────────────────────────────────────────
241
363
  async function findOpenOverride(orderID, type, provider, user) {
242
364
  const rv = new RunView(provider);
@@ -1 +1 @@
1
- {"version":3,"file":"AccessOverride.js","sourceRoot":"","sources":["../src/AccessOverride.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"AccessOverride.js","sourceRoot":"","sources":["../src/AccessOverride.ts"],"names":[],"mappings":"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"}
@@ -19,7 +19,7 @@
19
19
  */
20
20
  import { BaseRemotableOperation, IMetadataProvider, UserInfo } from '@memberjunction/core';
21
21
  import { GLAccountResolver, type ResolverEntityIDs } from './GLAccountResolver.js';
22
- import type { IntercompanyLookup } from './PaymentAllocationFactory.js';
22
+ import type { IntercompanyLookup, LegalEntityLookup } from './PaymentAllocationFactory.js';
23
23
  /** The subset of `AccountingEngineBase` used here, declared structurally so there is no type import. */
24
24
  export interface AccountingEngineSurface {
25
25
  ConfigEx(options: {
@@ -103,6 +103,12 @@ export interface AccountingEngineSurface {
103
103
  * The Due To / Due From pair for an ORDERED company pair (BA-D26), each leg carrying the
104
104
  * dimensions pinned on the match. `DimensionValueID` is nullable there by design.
105
105
  */
106
+ /**
107
+ * The company whose books `companyId` uses: a Division, Department or Branch walks up to the
108
+ * first company above it of any other type (golive #313). Throws, naming the company, when the
109
+ * walk finds no parent, a parent with no profile, or a loop.
110
+ */
111
+ LegalEntityFor(companyId: string): string;
106
112
  ResolveIntercompanyAccounts(sourceCompanyId: string, targetCompanyId: string, asOfDate: Date): {
107
113
  DueTo: {
108
114
  GLAccountID: string;
@@ -128,6 +134,11 @@ export declare function ResolverEntities(): ResolverEntityIDs;
128
134
  export declare function LoadAccountingEngine(provider: IMetadataProvider, user: UserInfo): Promise<AccountingEngineSurface>;
129
135
  /** A resolver bound to the live accounting engine. */
130
136
  export declare function BuildGLAccountResolver(provider: IMetadataProvider, user: UserInfo): Promise<GLAccountResolver>;
137
+ /**
138
+ * The legal-entity lookup `PaymentAllocationFactory` compares companies through (golive #313): two
139
+ * companies on the same books settle each other's receivables directly, with no Due To / Due From.
140
+ */
141
+ export declare function BuildLegalEntityLookup(provider: IMetadataProvider, user: UserInfo): Promise<LegalEntityLookup>;
131
142
  /**
132
143
  * The intercompany lookup both payment booking paths hand to `PaymentAllocationFactory`.
133
144
  *
@@ -1 +1 @@
1
- {"version":3,"file":"AccountingBridge.d.ts","sourceRoot":"","sources":["../src/AccountingBridge.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"AccountingBridge.d.ts","sourceRoot":"","sources":["../src/AccountingBridge.ts"],"names":[],"mappings":"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"}
@@ -114,7 +114,15 @@ export async function BuildGLAccountResolver(provider, user) {
114
114
  if (!glAccountID)
115
115
  return null;
116
116
  return hitFor(glAccountID, (hit?.Dimensions ?? []).map((d) => d.DimensionID));
117
- });
117
+ }, (companyID) => engine.LegalEntityFor(companyID));
118
+ }
119
+ /**
120
+ * The legal-entity lookup `PaymentAllocationFactory` compares companies through (golive #313): two
121
+ * companies on the same books settle each other's receivables directly, with no Due To / Due From.
122
+ */
123
+ export async function BuildLegalEntityLookup(provider, user) {
124
+ const engine = await LoadAccountingEngine(provider, user);
125
+ return (companyID) => engine.LegalEntityFor(companyID);
118
126
  }
119
127
  /**
120
128
  * The intercompany lookup both payment booking paths hand to `PaymentAllocationFactory`.