@mj-biz-apps/orders-server 0.0.1 → 5.2.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 (71) hide show
  1. package/LICENSE +183 -0
  2. package/README.md +47 -2
  3. package/dist/CheckoutServerExtension.d.ts +96 -0
  4. package/dist/CheckoutServerExtension.d.ts.map +1 -0
  5. package/dist/CheckoutServerExtension.js +554 -0
  6. package/dist/CheckoutServerExtension.js.map +1 -0
  7. package/dist/PaymentWebhookExtension.d.ts +17 -0
  8. package/dist/PaymentWebhookExtension.d.ts.map +1 -0
  9. package/dist/PaymentWebhookExtension.js +151 -0
  10. package/dist/PaymentWebhookExtension.js.map +1 -0
  11. package/dist/__tests__/CheckoutServerExtension.test.d.ts +2 -0
  12. package/dist/__tests__/CheckoutServerExtension.test.d.ts.map +1 -0
  13. package/dist/__tests__/CheckoutServerExtension.test.js +257 -0
  14. package/dist/__tests__/CheckoutServerExtension.test.js.map +1 -0
  15. package/dist/__tests__/checkout-edge-policy.test.d.ts +2 -0
  16. package/dist/__tests__/checkout-edge-policy.test.d.ts.map +1 -0
  17. package/dist/__tests__/checkout-edge-policy.test.js +70 -0
  18. package/dist/__tests__/checkout-edge-policy.test.js.map +1 -0
  19. package/dist/__tests__/checkout-host-page.test.d.ts +2 -0
  20. package/dist/__tests__/checkout-host-page.test.d.ts.map +1 -0
  21. package/dist/__tests__/checkout-host-page.test.js +86 -0
  22. package/dist/__tests__/checkout-host-page.test.js.map +1 -0
  23. package/dist/__tests__/server-extensions-manifest.test.d.ts +2 -0
  24. package/dist/__tests__/server-extensions-manifest.test.d.ts.map +1 -0
  25. package/dist/__tests__/server-extensions-manifest.test.js +29 -0
  26. package/dist/__tests__/server-extensions-manifest.test.js.map +1 -0
  27. package/dist/checkout-edge-policy.d.ts +44 -0
  28. package/dist/checkout-edge-policy.d.ts.map +1 -0
  29. package/dist/checkout-edge-policy.js +84 -0
  30. package/dist/checkout-edge-policy.js.map +1 -0
  31. package/dist/checkout-host-page.d.ts +43 -0
  32. package/dist/checkout-host-page.d.ts.map +1 -0
  33. package/dist/checkout-host-page.js +445 -0
  34. package/dist/checkout-host-page.js.map +1 -0
  35. package/dist/config.d.ts +6 -0
  36. package/dist/config.d.ts.map +1 -0
  37. package/dist/config.js +6 -0
  38. package/dist/config.js.map +1 -0
  39. package/dist/custom/generate-invoice.action.d.ts +59 -0
  40. package/dist/custom/generate-invoice.action.d.ts.map +1 -0
  41. package/dist/custom/generate-invoice.action.js +208 -0
  42. package/dist/custom/generate-invoice.action.js.map +1 -0
  43. package/dist/custom/open-payment-intent.action.d.ts +39 -0
  44. package/dist/custom/open-payment-intent.action.d.ts.map +1 -0
  45. package/dist/custom/open-payment-intent.action.js +169 -0
  46. package/dist/custom/open-payment-intent.action.js.map +1 -0
  47. package/dist/custom/send-document.action.d.ts +78 -0
  48. package/dist/custom/send-document.action.d.ts.map +1 -0
  49. package/dist/custom/send-document.action.js +277 -0
  50. package/dist/custom/send-document.action.js.map +1 -0
  51. package/dist/generated/class-registrations-manifest.d.ts +7 -0
  52. package/dist/generated/class-registrations-manifest.d.ts.map +1 -0
  53. package/dist/generated/class-registrations-manifest.js +7 -0
  54. package/dist/generated/class-registrations-manifest.js.map +1 -0
  55. package/dist/generated/generated.d.ts +3536 -0
  56. package/dist/generated/generated.d.ts.map +1 -0
  57. package/dist/generated/generated.js +18371 -0
  58. package/dist/generated/generated.js.map +1 -0
  59. package/dist/index.d.ts +28 -0
  60. package/dist/index.d.ts.map +1 -0
  61. package/dist/index.js +105 -0
  62. package/dist/index.js.map +1 -0
  63. package/dist/server-extensions-manifest.d.ts +14 -0
  64. package/dist/server-extensions-manifest.d.ts.map +1 -0
  65. package/dist/server-extensions-manifest.js +15 -0
  66. package/dist/server-extensions-manifest.js.map +1 -0
  67. package/dist/services/invoice-renderer.d.ts +80 -0
  68. package/dist/services/invoice-renderer.d.ts.map +1 -0
  69. package/dist/services/invoice-renderer.js +103 -0
  70. package/dist/services/invoice-renderer.js.map +1 -0
  71. package/package.json +65 -5
@@ -0,0 +1,277 @@
1
+ /**
2
+ * @fileoverview `Orders: Send Document` — render a customer-facing document and actually send it.
3
+ *
4
+ * WHY THIS IS SEPARATE FROM `Orders: Generate Invoice`. Generating writes nothing and can be called a
5
+ * hundred times safely — a print button, a reconciliation check, a PDF job. Sending is IRREVERSIBLE and
6
+ * reaches a person outside the company. Folding a `Send: true` flag into the render action would put
7
+ * the single most consequential side effect in this app behind a boolean that is easy to set by
8
+ * accident, in an action whose whole documented contract is that it never writes.
9
+ *
10
+ * WHAT IT COMPOSES, and the order is the design:
11
+ *
12
+ * 1. RENDER `RenderInvoiceDocuments` — the same service `Orders.GenerateInvoice` calls
13
+ * 2. RESOLVE who the order says it is billed to, and their recorded addresses
14
+ * 3. DECIDE `DecideDelivery` — is this a bill at all, and is there anybody to send it to
15
+ * 4. DELIVER the registered channel for the requested code
16
+ *
17
+ * Every step is somebody else's code. This action extracts parameters, sequences four calls, and maps
18
+ * the answers onto result codes — which is what an action is supposed to be.
19
+ *
20
+ * ONE DOCUMENT PER SELLING COMPANY, ONE SEND EACH. An order sold by two companies is two receivables
21
+ * owed to two legal entities, and each has its own remit-to details. They are sent as two messages,
22
+ * and if the second fails the first is still reported as sent — the alternative, reporting the whole
23
+ * thing as failed, invites a retry that sends the first one twice.
24
+ *
25
+ * IT IS NOT IDEMPOTENT, AND SAYS SO. Calling it twice sends the document twice. `DeliveryIdempotencyKey`
26
+ * exists so a caller that needs at-most-once can build it, but this action cannot make that judgement:
27
+ * re-sending because the customer asked again is ordinary, and re-sending because a workflow retried is
28
+ * not, and only the caller knows which happened.
29
+ *
30
+ * @module @mj-biz-apps/orders-actions
31
+ */
32
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
33
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
34
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
35
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
36
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
37
+ };
38
+ import { BaseAction } from '@memberjunction/actions';
39
+ import { Metadata } from '@memberjunction/core';
40
+ import { RegisterClass } from '@memberjunction/global';
41
+ import { BuildSubject, DecideDelivery, DeliveryIdempotencyKey, LoadOrderDeliveryContacts, LoadOrderStatus, ResolveDeliveryChannel, ResolveRecipients, } from '@mj-biz-apps/orders-core-entities-server';
42
+ import { RenderInvoiceDocuments } from '../services/invoice-renderer.js';
43
+ const UUID = /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;
44
+ /** The channels this action will route to. One today; the seam is what matters. */
45
+ const CHANNELS = ['Email'];
46
+ function param(params, name) {
47
+ return params.Params?.find((p) => p.Name?.toLowerCase() === name.toLowerCase())?.Value;
48
+ }
49
+ function strParam(params, name) {
50
+ const raw = param(params, name);
51
+ if (raw == null)
52
+ return null;
53
+ const value = String(raw).trim();
54
+ return value.length ? value : null;
55
+ }
56
+ function boolParam(params, name, fallback) {
57
+ const raw = param(params, name);
58
+ if (raw == null || raw === '')
59
+ return fallback;
60
+ if (typeof raw === 'boolean')
61
+ return raw;
62
+ return ['true', '1', 'yes'].includes(String(raw).trim().toLowerCase());
63
+ }
64
+ function setOutput(params, name, value) {
65
+ const existing = params.Params?.find((p) => p.Name?.toLowerCase() === name.toLowerCase());
66
+ if (existing) {
67
+ existing.Value = value;
68
+ existing.Type = 'Output';
69
+ return;
70
+ }
71
+ params.Params = params.Params ?? [];
72
+ params.Params.push({ Name: name, Value: value, Type: 'Output' });
73
+ }
74
+ /**
75
+ * Send an order's document to the customer.
76
+ *
77
+ * Inputs: `OrderID` (required), `CompanyID`, `Channel`, `TemplateName`, `Locale`, `CurrencyCode`,
78
+ * `ToAddress`, `CC`, `BCC`, `From`, `FromName`, `PreviewOnly`.
79
+ * Outputs: `Deliveries`, `SentCount`, `FailedCount`.
80
+ */
81
+ let SendDocumentAction = class SendDocumentAction extends BaseAction {
82
+ /**
83
+ * AN ACTION MUST NOT THROW AT ITS CALLER — same reasoning as `Orders.GenerateInvoice`. The layers
84
+ * below guard by throwing, and a workflow or agent needs a result it can branch on.
85
+ */
86
+ async InternalRunAction(params) {
87
+ try {
88
+ return await this.send(params);
89
+ }
90
+ catch (error) {
91
+ return {
92
+ Success: false,
93
+ ResultCode: 'ERROR',
94
+ Message: `Could not send the document: ${error instanceof Error ? error.message : String(error)}`,
95
+ };
96
+ }
97
+ }
98
+ async send(params) {
99
+ const orderID = strParam(params, 'OrderID');
100
+ if (!orderID) {
101
+ return { Success: false, ResultCode: 'MISSING_ORDER_ID', Message: 'OrderID is required.' };
102
+ }
103
+ if (!UUID.test(orderID)) {
104
+ return {
105
+ Success: false,
106
+ ResultCode: 'INVALID_ORDER_ID',
107
+ Message: `'${orderID}' is not an order ID. This action takes the OrderHeader's ID, not its order number.`,
108
+ };
109
+ }
110
+ const companyID = strParam(params, 'CompanyID');
111
+ if (companyID && !UUID.test(companyID)) {
112
+ return { Success: false, ResultCode: 'INVALID_COMPANY_ID', Message: `'${companyID}' is not a company ID.` };
113
+ }
114
+ const channel = (strParam(params, 'Channel') ?? 'Email');
115
+ if (!CHANNELS.includes(channel)) {
116
+ return {
117
+ Success: false,
118
+ ResultCode: 'UNSUPPORTED_CHANNEL',
119
+ Message: `'${channel}' is not a delivery channel this action routes to. Supported: ${CHANNELS.join(', ')}.`,
120
+ };
121
+ }
122
+ const user = params.ContextUser;
123
+ if (!user) {
124
+ return {
125
+ Success: false,
126
+ ResultCode: 'MISSING_USER',
127
+ Message: 'ContextUser is required: the order is read through the metadata layer, which resolves permissions per user.',
128
+ };
129
+ }
130
+ // `Metadata.Provider`, NOT `new Metadata()` — a Metadata instance is a facade and does not
131
+ // implement IMetadataProvider; handing one down type-checks only through a cast and fails at
132
+ // the first read.
133
+ const provider = params.Provider ?? Metadata.Provider;
134
+ if (!provider) {
135
+ return { Success: false, ResultCode: 'NO_PROVIDER', Message: 'No metadata provider is configured.' };
136
+ }
137
+ // ── 1. Render ──────────────────────────────────────────────────────
138
+ const rendered = await RenderInvoiceDocuments(orderID, provider, user, {
139
+ CompanyID: companyID,
140
+ TemplateName: strParam(params, 'TemplateName'),
141
+ Locale: strParam(params, 'Locale') ?? 'en-US',
142
+ CurrencyCode: strParam(params, 'CurrencyCode'),
143
+ Format: 'HTML',
144
+ });
145
+ if (!rendered.Success) {
146
+ return {
147
+ Success: false,
148
+ ResultCode: rendered.Code ?? 'RENDER_FAILED',
149
+ Message: rendered.Message ?? 'The order could not be rendered.',
150
+ };
151
+ }
152
+ // ── 2. Resolve who it goes to ──────────────────────────────────────
153
+ // An explicit ToAddress overrides the recorded contacts, for the "send me a copy" case. It is
154
+ // marked Billing so it survives ResolveRecipients — the caller naming an address IS the
155
+ // deliberate decision that rule exists to require.
156
+ const override = strParam(params, 'ToAddress');
157
+ const contacts = override
158
+ ? [{ Address: override, FullName: null, Purpose: 'Billing' }]
159
+ : await LoadOrderDeliveryContacts(orderID, provider, user);
160
+ const orderStatus = (await LoadOrderStatus(orderID, provider, user)) ?? '';
161
+ // ── 3. Decide, then 4. Deliver — per document ──────────────────────
162
+ const driver = ResolveDeliveryChannel(channel);
163
+ const previewOnly = boolParam(params, 'PreviewOnly', false);
164
+ const cc = this.addressList(params, 'CC');
165
+ const bcc = this.addressList(params, 'BCC');
166
+ const from = strParam(params, 'From');
167
+ const fromName = strParam(params, 'FromName');
168
+ const outcomes = [];
169
+ for (const doc of rendered.Documents) {
170
+ const facts = this.toFacts(doc, orderStatus);
171
+ const decision = DecideDelivery({ Document: facts, Recipients: contacts });
172
+ if (decision.Verdict === 'Refuse') {
173
+ outcomes.push({
174
+ DocumentNumber: doc.DocumentNumber,
175
+ Kind: doc.Kind,
176
+ CompanyID: doc.CompanyID,
177
+ Sent: false,
178
+ Recipients: [],
179
+ Reason: decision.Reason,
180
+ IdempotencyKeys: [],
181
+ });
182
+ continue;
183
+ }
184
+ const recipients = ResolveRecipients(contacts);
185
+ const result = await driver.Deliver({
186
+ Kind: doc.Kind,
187
+ DocumentNumber: doc.DocumentNumber,
188
+ Subject: BuildSubject(facts),
189
+ BodyHtml: doc.HTML ?? '',
190
+ }, { To: recipients, CC: cc, BCC: bcc, From: from, FromName: fromName }, { Provider: provider, User: user, PreviewOnly: previewOnly });
191
+ outcomes.push({
192
+ DocumentNumber: doc.DocumentNumber,
193
+ Kind: doc.Kind,
194
+ CompanyID: doc.CompanyID,
195
+ Sent: result.Success,
196
+ Recipients: result.Delivered,
197
+ Reason: result.Reason,
198
+ IdempotencyKeys: recipients.map((r) => DeliveryIdempotencyKey(doc.DocumentNumber, channel, r.Address ?? '')),
199
+ });
200
+ }
201
+ const sent = outcomes.filter((o) => o.Sent);
202
+ const failed = outcomes.filter((o) => !o.Sent);
203
+ setOutput(params, 'Deliveries', outcomes);
204
+ setOutput(params, 'SentCount', sent.length);
205
+ setOutput(params, 'FailedCount', failed.length);
206
+ if (!sent.length) {
207
+ // NOTHING went out. Reported as a failure with the first reason, because an action that
208
+ // returns Success=true having sent nothing reads to a workflow as "the customer has been
209
+ // billed".
210
+ return {
211
+ Success: false,
212
+ ResultCode: 'NOT_SENT',
213
+ Params: params.Params,
214
+ Message: failed[0]?.Reason ?? 'Nothing was sent.',
215
+ };
216
+ }
217
+ if (failed.length) {
218
+ return {
219
+ Success: false,
220
+ ResultCode: 'PARTIALLY_SENT',
221
+ Params: params.Params,
222
+ Message: `${sent.length} of ${outcomes.length} documents were sent. ` +
223
+ `Not sent: ${failed.map((f) => `${f.DocumentNumber} (${f.Reason ?? 'no reason given'})`).join('; ')}`,
224
+ };
225
+ }
226
+ const verb = previewOnly ? 'previewed' : 'sent';
227
+ return {
228
+ Success: true,
229
+ ResultCode: previewOnly ? 'PREVIEWED' : 'SENT',
230
+ Params: params.Params,
231
+ Message: outcomes.length > 1
232
+ ? `${outcomes.length} documents ${verb}: ${outcomes.map((o) => o.DocumentNumber).join(', ')}.`
233
+ : `${outcomes[0].Kind} ${outcomes[0].DocumentNumber} ${verb} to ${outcomes[0].Recipients.join(', ')}.`,
234
+ };
235
+ }
236
+ /**
237
+ * The rendered document, reduced to what the delivery decision needs.
238
+ *
239
+ * The ORDER's status is carried through rather than the document's kind alone, because "may this
240
+ * be sent" is a question about the order — a draft renders perfectly well and must not be mailed.
241
+ */
242
+ toFacts(doc, orderStatus) {
243
+ return {
244
+ Kind: doc.Kind,
245
+ DocumentNumber: doc.DocumentNumber,
246
+ SourceStatus: orderStatus,
247
+ IssuerName: doc.CompanyName,
248
+ AmountDue: doc.AmountDue,
249
+ // Already formatted by the decorator for the caller's locale — this action never formats
250
+ // money, and reformatting here would put a second opinion in the subject line.
251
+ AmountDueDisplay: doc.Data?.AmountDueText,
252
+ DueDateDisplay: doc.Data?.DueDateText ?? null,
253
+ };
254
+ }
255
+ /** A comma- or semicolon-separated list, or an array, from one parameter. */
256
+ addressList(params, name) {
257
+ const raw = param(params, name);
258
+ if (!raw)
259
+ return [];
260
+ const values = Array.isArray(raw) ? raw.map(String) : String(raw).split(/[;,]/);
261
+ return values.map((v) => v.trim()).filter(Boolean);
262
+ }
263
+ };
264
+ SendDocumentAction = __decorate([
265
+ RegisterClass(BaseAction, 'Orders.SendDocument')
266
+ ], SendDocumentAction);
267
+ export { SendDocumentAction };
268
+ /**
269
+ * Registers {@link SendDocumentAction}.
270
+ *
271
+ * WITHOUT THIS ANCHOR the class is tree-shaken out, the `@RegisterClass` decorator never runs, and
272
+ * `ActionEngine` finds an action row with no implementation behind it.
273
+ */
274
+ export function LoadSendDocumentAction() {
275
+ void SendDocumentAction;
276
+ }
277
+ //# sourceMappingURL=send-document.action.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"send-document.action.js","sourceRoot":"","sources":["../../src/custom/send-document.action.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Stub — placeholder until `npm run mj:codegen` regenerates this file.
3
+ * Once CodeGen runs, this is overwritten with the static array of every
4
+ * @RegisterClass-decorated import path produced by the Orders CodeGen.
5
+ */
6
+ export declare const CLASS_REGISTRATIONS: ReadonlyArray<unknown>;
7
+ //# sourceMappingURL=class-registrations-manifest.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"class-registrations-manifest.d.ts","sourceRoot":"","sources":["../../src/generated/class-registrations-manifest.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,eAAO,MAAM,mBAAmB,EAAE,aAAa,CAAC,OAAO,CAAM,CAAC"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Stub — placeholder until `npm run mj:codegen` regenerates this file.
3
+ * Once CodeGen runs, this is overwritten with the static array of every
4
+ * @RegisterClass-decorated import path produced by the Orders CodeGen.
5
+ */
6
+ export const CLASS_REGISTRATIONS = [];
7
+ //# sourceMappingURL=class-registrations-manifest.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"class-registrations-manifest.js","sourceRoot":"","sources":["../../src/generated/class-registrations-manifest.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAA2B,EAAE,CAAC"}