@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.
- package/README.md +67 -41
- package/dist/AccessOverride.d.ts +19 -3
- package/dist/AccessOverride.d.ts.map +1 -1
- package/dist/AccessOverride.js +134 -12
- package/dist/AccessOverride.js.map +1 -1
- package/dist/AccountingBridge.d.ts +12 -1
- package/dist/AccountingBridge.d.ts.map +1 -1
- package/dist/AccountingBridge.js +9 -1
- package/dist/AccountingBridge.js.map +1 -1
- package/dist/AmendArrangementOperation.d.ts +1 -48
- package/dist/AmendArrangementOperation.d.ts.map +1 -1
- package/dist/AmendArrangementOperation.js.map +1 -1
- package/dist/BasePaymentProvider.d.ts +85 -0
- package/dist/BasePaymentProvider.d.ts.map +1 -1
- package/dist/BasePaymentProvider.js +28 -0
- package/dist/BasePaymentProvider.js.map +1 -1
- package/dist/BundleEngine.d.ts +3 -0
- package/dist/BundleEngine.d.ts.map +1 -1
- package/dist/BundleEngine.js +40 -0
- package/dist/BundleEngine.js.map +1 -1
- package/dist/CapturePaymentOperation.d.ts.map +1 -1
- package/dist/CapturePaymentOperation.js +4 -2
- package/dist/CapturePaymentOperation.js.map +1 -1
- package/dist/ChargeReconciliation.d.ts +71 -0
- package/dist/ChargeReconciliation.d.ts.map +1 -0
- package/dist/ChargeReconciliation.js +112 -0
- package/dist/ChargeReconciliation.js.map +1 -0
- package/dist/CheckoutSessionService.d.ts +12 -2
- package/dist/CheckoutSessionService.d.ts.map +1 -1
- package/dist/CheckoutSessionService.js +106 -25
- package/dist/CheckoutSessionService.js.map +1 -1
- package/dist/ConcessionGate.d.ts +43 -11
- package/dist/ConcessionGate.d.ts.map +1 -1
- package/dist/ConcessionGate.js +73 -29
- package/dist/ConcessionGate.js.map +1 -1
- package/dist/EntitlementAccessOverrideEntityServer.d.ts +3 -2
- package/dist/EntitlementAccessOverrideEntityServer.d.ts.map +1 -1
- package/dist/EntitlementAccessOverrideEntityServer.js +5 -4
- package/dist/EntitlementAccessOverrideEntityServer.js.map +1 -1
- package/dist/EntitlementBehavior.d.ts +52 -0
- package/dist/EntitlementBehavior.d.ts.map +1 -1
- package/dist/EntitlementBehavior.js +79 -2
- package/dist/EntitlementBehavior.js.map +1 -1
- package/dist/EntitlementGrantClaimDriver.d.ts +1 -1
- package/dist/EntitlementGrantClaimDriver.d.ts.map +1 -1
- package/dist/EntitlementGrantClaimDriver.js +1 -3
- package/dist/EntitlementGrantClaimDriver.js.map +1 -1
- package/dist/EntitlementRead.d.ts +11 -2
- package/dist/EntitlementRead.d.ts.map +1 -1
- package/dist/EntitlementRead.js +29 -13
- package/dist/EntitlementRead.js.map +1 -1
- package/dist/GLAccountResolver.d.ts +34 -5
- package/dist/GLAccountResolver.d.ts.map +1 -1
- package/dist/GLAccountResolver.js +50 -22
- package/dist/GLAccountResolver.js.map +1 -1
- package/dist/GuestOrderClaimDriver.d.ts +1 -1
- package/dist/GuestOrderClaimDriver.d.ts.map +1 -1
- package/dist/GuestOrderClaimDriver.js +16 -10
- package/dist/GuestOrderClaimDriver.js.map +1 -1
- package/dist/InvoiceBehavior.d.ts +0 -1
- package/dist/InvoiceBehavior.d.ts.map +1 -1
- package/dist/InvoiceBehavior.js.map +1 -1
- package/dist/InvoiceBuilder.d.ts.map +1 -1
- package/dist/InvoiceBuilder.js +0 -1
- package/dist/InvoiceBuilder.js.map +1 -1
- package/dist/OrderConcessionEntityServer.d.ts.map +1 -1
- package/dist/OrderConcessionEntityServer.js +13 -3
- package/dist/OrderConcessionEntityServer.js.map +1 -1
- package/dist/OrderEntityServer.d.ts +64 -3
- package/dist/OrderEntityServer.d.ts.map +1 -1
- package/dist/OrderEntityServer.js +186 -6
- package/dist/OrderEntityServer.js.map +1 -1
- package/dist/OrdersSettings.d.ts +9 -0
- package/dist/OrdersSettings.d.ts.map +1 -1
- package/dist/OrdersSettings.js +12 -0
- package/dist/OrdersSettings.js.map +1 -1
- package/dist/PaymentAllocationFactory.d.ts +18 -1
- package/dist/PaymentAllocationFactory.d.ts.map +1 -1
- package/dist/PaymentAllocationFactory.js +28 -12
- package/dist/PaymentAllocationFactory.js.map +1 -1
- package/dist/PaymentGatedAccess.d.ts +18 -2
- package/dist/PaymentGatedAccess.d.ts.map +1 -1
- package/dist/PaymentGatedAccess.js +19 -6
- package/dist/PaymentGatedAccess.js.map +1 -1
- package/dist/PaymentHeaderEntityServer.d.ts.map +1 -1
- package/dist/PaymentHeaderEntityServer.js +2 -2
- package/dist/PaymentHeaderEntityServer.js.map +1 -1
- package/dist/PaymentLineEntityServer.d.ts.map +1 -1
- package/dist/PaymentLineEntityServer.js +2 -2
- package/dist/PaymentLineEntityServer.js.map +1 -1
- package/dist/PaymentProviderBehavior.d.ts +39 -0
- package/dist/PaymentProviderBehavior.d.ts.map +1 -1
- package/dist/PaymentProviderBehavior.js +55 -4
- package/dist/PaymentProviderBehavior.js.map +1 -1
- package/dist/PaymentWebhookDeliveryLog.d.ts +68 -0
- package/dist/PaymentWebhookDeliveryLog.d.ts.map +1 -0
- package/dist/PaymentWebhookDeliveryLog.js +117 -0
- package/dist/PaymentWebhookDeliveryLog.js.map +1 -0
- package/dist/PaymentWebhookEndpointCheck.d.ts +58 -0
- package/dist/PaymentWebhookEndpointCheck.d.ts.map +1 -0
- package/dist/PaymentWebhookEndpointCheck.js +133 -0
- package/dist/PaymentWebhookEndpointCheck.js.map +1 -0
- package/dist/PaymentWebhookHandler.d.ts +1 -0
- package/dist/PaymentWebhookHandler.d.ts.map +1 -1
- package/dist/PaymentWebhookHandler.js +97 -11
- package/dist/PaymentWebhookHandler.js.map +1 -1
- package/dist/PollExternalPaymentsOperation.d.ts +10 -0
- package/dist/PollExternalPaymentsOperation.d.ts.map +1 -1
- package/dist/PollExternalPaymentsOperation.js +64 -15
- package/dist/PollExternalPaymentsOperation.js.map +1 -1
- package/dist/PriceBelowEngineExceptions.d.ts +2 -1
- package/dist/PriceBelowEngineExceptions.d.ts.map +1 -1
- package/dist/PriceBelowEngineExceptions.js +6 -5
- package/dist/PriceBelowEngineExceptions.js.map +1 -1
- package/dist/ProductPriceEntityServer.d.ts +2 -0
- package/dist/ProductPriceEntityServer.d.ts.map +1 -1
- package/dist/ProductPriceEntityServer.js +4 -0
- package/dist/ProductPriceEntityServer.js.map +1 -1
- package/dist/ProviderRefundBooking.d.ts +96 -0
- package/dist/ProviderRefundBooking.d.ts.map +1 -0
- package/dist/ProviderRefundBooking.js +248 -0
- package/dist/ProviderRefundBooking.js.map +1 -0
- package/dist/ReconcilePaymentProviderChargesOperation.d.ts +41 -0
- package/dist/ReconcilePaymentProviderChargesOperation.d.ts.map +1 -0
- package/dist/ReconcilePaymentProviderChargesOperation.js +311 -0
- package/dist/ReconcilePaymentProviderChargesOperation.js.map +1 -0
- package/dist/StripePaymentProvider.d.ts +23 -1
- package/dist/StripePaymentProvider.d.ts.map +1 -1
- package/dist/StripePaymentProvider.js +117 -0
- package/dist/StripePaymentProvider.js.map +1 -1
- package/dist/SubscriptionBehavior.d.ts +13 -3
- package/dist/SubscriptionBehavior.d.ts.map +1 -1
- package/dist/SubscriptionBehavior.js +32 -5
- package/dist/SubscriptionBehavior.js.map +1 -1
- package/dist/index.d.ts +19 -10
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +10 -5
- package/dist/index.js.map +1 -1
- package/package.json +29 -18
- package/dist/identityClaimContracts.d.ts +0 -118
- package/dist/identityClaimContracts.d.ts.map +0 -1
- package/dist/identityClaimContracts.js +0 -58
- 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
|
-
**
|
|
4
|
-
engines
|
|
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,
|
|
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) |
|
|
16
|
-
|
|
17
|
-
| `PricingBehavior` | `PriceResolver` |
|
|
18
|
-
| `PromotionBehavior` | `PromotionEngine` |
|
|
19
|
-
| `ChargeBehavior` | `ChargeEngine` |
|
|
20
|
-
| `
|
|
21
|
-
| `
|
|
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
|
-
|
|
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
|
-
|
|
35
|
-
|
|
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
|
-
|
|
40
|
-
|
|
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
|
-
|
|
60
|
-
and they cannot drift into disagreeing about what "the
|
|
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 →
|
|
78
|
+
product → its category → that category's ancestors → …
|
|
64
79
|
```
|
|
65
80
|
|
|
66
|
-
|
|
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
|
-
|
|
71
|
-
|
|
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
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
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
|
-
|
|
109
|
-
and submits balanced drafts
|
|
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** (
|
|
119
|
-
|
|
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
|
-
|
|
168
|
+
database half to finding rows.
|
package/dist/AccessOverride.d.ts
CHANGED
|
@@ -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
|
|
20
|
-
*
|
|
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
|
|
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"}
|
package/dist/AccessOverride.js
CHANGED
|
@@ -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
|
|
20
|
-
*
|
|
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 {
|
|
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
|
|
142
|
-
// decision could never be traced back here,
|
|
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
|
-
|
|
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 =
|
|
245
|
+
override.Status = status;
|
|
217
246
|
override.DecidedAt = new Date();
|
|
218
247
|
override.DecisionNotes = applied
|
|
219
248
|
? (decision?.Notes ?? null)
|
|
220
|
-
:
|
|
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 =
|
|
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":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AACH,OAAO,EAAE,sBAAsB,EAAE,iBAAiB,EAAuB,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAGhH,OAAO,EAAE,iBAAiB,EAAyB,KAAK,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC1G,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;
|
|
1
|
+
{"version":3,"file":"AccountingBridge.d.ts","sourceRoot":"","sources":["../src/AccountingBridge.ts"],"names":[],"mappings":"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"}
|
package/dist/AccountingBridge.js
CHANGED
|
@@ -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`.
|