@cogenta/commerce 0.2.0 → 0.4.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/admin/permissions.d.ts +8 -0
- package/dist/admin/permissions.d.ts.map +1 -1
- package/dist/admin/permissions.js +1 -0
- package/dist/admin/permissions.js.map +1 -1
- package/dist/admin/router.d.ts +47 -5
- package/dist/admin/router.d.ts.map +1 -1
- package/dist/admin/router.js +942 -24
- package/dist/admin/router.js.map +1 -1
- package/dist/cart/store.d.ts +23 -0
- package/dist/cart/store.d.ts.map +1 -1
- package/dist/cart/store.js +49 -2
- package/dist/cart/store.js.map +1 -1
- package/dist/catalog/csv.d.ts +29 -0
- package/dist/catalog/csv.d.ts.map +1 -0
- package/dist/catalog/csv.js +396 -0
- package/dist/catalog/csv.js.map +1 -0
- package/dist/catalog/store.d.ts +24 -4
- package/dist/catalog/store.d.ts.map +1 -1
- package/dist/catalog/store.js +238 -11
- package/dist/catalog/store.js.map +1 -1
- package/dist/catalog/types.d.ts +92 -0
- package/dist/catalog/types.d.ts.map +1 -1
- package/dist/catalog/types.js +20 -0
- package/dist/catalog/types.js.map +1 -1
- package/dist/coupon/store.d.ts +63 -5
- package/dist/coupon/store.d.ts.map +1 -1
- package/dist/coupon/store.js +140 -7
- package/dist/coupon/store.js.map +1 -1
- package/dist/customer/store.d.ts +17 -0
- package/dist/customer/store.d.ts.map +1 -1
- package/dist/customer/store.js +26 -0
- package/dist/customer/store.js.map +1 -1
- package/dist/index.d.ts +18 -8
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +9 -3
- package/dist/index.js.map +1 -1
- package/dist/invoice/credit-note.d.ts +45 -0
- package/dist/invoice/credit-note.d.ts.map +1 -0
- package/dist/invoice/credit-note.js +109 -0
- package/dist/invoice/credit-note.js.map +1 -0
- package/dist/invoice/sequence.d.ts +21 -0
- package/dist/invoice/sequence.d.ts.map +1 -0
- package/dist/invoice/sequence.js +64 -0
- package/dist/invoice/sequence.js.map +1 -0
- package/dist/invoice/store.d.ts +23 -1
- package/dist/invoice/store.d.ts.map +1 -1
- package/dist/invoice/store.js +23 -56
- package/dist/invoice/store.js.map +1 -1
- package/dist/order/csv.d.ts +24 -0
- package/dist/order/csv.d.ts.map +1 -0
- package/dist/order/csv.js +42 -0
- package/dist/order/csv.js.map +1 -0
- package/dist/order/notify.d.ts +65 -0
- package/dist/order/notify.d.ts.map +1 -0
- package/dist/order/notify.js +180 -0
- package/dist/order/notify.js.map +1 -0
- package/dist/order/store.d.ts +58 -1
- package/dist/order/store.d.ts.map +1 -1
- package/dist/order/store.js +145 -10
- package/dist/order/store.js.map +1 -1
- package/dist/order/types.d.ts +35 -1
- package/dist/order/types.d.ts.map +1 -1
- package/dist/order/types.js +2 -0
- package/dist/order/types.js.map +1 -1
- package/dist/payment/paypal.d.ts +9 -0
- package/dist/payment/paypal.d.ts.map +1 -0
- package/dist/payment/paypal.js +583 -0
- package/dist/payment/paypal.js.map +1 -0
- package/dist/payment/registry.d.ts +15 -6
- package/dist/payment/registry.d.ts.map +1 -1
- package/dist/payment/registry.js +17 -6
- package/dist/payment/registry.js.map +1 -1
- package/dist/payment/types.d.ts +6 -0
- package/dist/payment/types.d.ts.map +1 -1
- package/dist/shipping/store.d.ts +29 -3
- package/dist/shipping/store.d.ts.map +1 -1
- package/dist/shipping/store.js +68 -4
- package/dist/shipping/store.js.map +1 -1
- package/dist/subscription/renewal-notifier.d.ts +17 -0
- package/dist/subscription/renewal-notifier.d.ts.map +1 -0
- package/dist/subscription/renewal-notifier.js +33 -0
- package/dist/subscription/renewal-notifier.js.map +1 -0
- package/dist/subscription/store.d.ts +126 -3
- package/dist/subscription/store.d.ts.map +1 -1
- package/dist/subscription/store.js +348 -8
- package/dist/subscription/store.js.map +1 -1
- package/dist/tables.d.ts +17 -0
- package/dist/tables.d.ts.map +1 -1
- package/dist/tables.js +273 -0
- package/dist/tables.js.map +1 -1
- package/dist/tax/store.d.ts +20 -0
- package/dist/tax/store.d.ts.map +1 -1
- package/dist/tax/store.js +51 -7
- package/dist/tax/store.js.map +1 -1
- package/package.json +3 -2
|
@@ -3,8 +3,52 @@ import { assertCurrency, assertMinor } from '../money.js';
|
|
|
3
3
|
import { referenceFrom } from '../order/store.js';
|
|
4
4
|
import { toInt, toNullableText, toText } from '../rows.js';
|
|
5
5
|
import { TABLES } from '../tables.js';
|
|
6
|
-
|
|
6
|
+
/**
|
|
7
|
+
* `past_due` (fiche 53 task 3) sits between `active` and `paused`: a
|
|
8
|
+
* subscription lands there the instant a renewal's payment fails, and
|
|
9
|
+
* `runBilling`'s own due-query (`status = 'active'`) then skips it for every
|
|
10
|
+
* subsequent period until the dunning cycle resolves — never suspended on the
|
|
11
|
+
* first failure, and never billed again mid-retry either.
|
|
12
|
+
*/
|
|
13
|
+
export const SUBSCRIPTION_STATUSES = ['active', 'past_due', 'paused', 'cancelled'];
|
|
14
|
+
/**
|
|
15
|
+
* The default dunning calendar (fiche 53 § "décision à trancher"): retry a
|
|
16
|
+
* failed renewal payment 1, 3 and 7 days after the first failure, then
|
|
17
|
+
* suspend. Proposed by the fiche itself and used as-is — documented here
|
|
18
|
+
* rather than re-litigated, and configurable per store via
|
|
19
|
+
* `SubscriptionStoreOptions.dunningScheduleDays`.
|
|
20
|
+
*/
|
|
21
|
+
export const DEFAULT_DUNNING_SCHEDULE_DAYS = [1, 3, 7];
|
|
22
|
+
/** How long a subscriber is warned before a renewal — fiche 53 task 5, configurable per store. */
|
|
23
|
+
export const DEFAULT_RENEWAL_NOTICE_DAYS = 3;
|
|
24
|
+
const DAY_MS = 24 * 60 * 60 * 1000;
|
|
7
25
|
export const INTERVAL_UNITS = ['day', 'week', 'month', 'year'];
|
|
26
|
+
function decodeDunning(row) {
|
|
27
|
+
return {
|
|
28
|
+
subscriptionId: toText(row.subscription_id, 'dunning.subscription_id'),
|
|
29
|
+
orderId: toText(row.order_id, 'dunning.order_id'),
|
|
30
|
+
periodKey: toText(row.period_key, 'dunning.period_key'),
|
|
31
|
+
failureCount: toInt(row.failure_count, 'dunning.failure_count'),
|
|
32
|
+
firstFailedAt: toText(row.first_failed_at, 'dunning.first_failed_at'),
|
|
33
|
+
nextRetryAt: toNullableText(row.next_retry_at),
|
|
34
|
+
lastReason: toNullableText(row.last_reason),
|
|
35
|
+
suspendedAt: toNullableText(row.suspended_at),
|
|
36
|
+
createdAt: toText(row.created_at, 'dunning.created_at'),
|
|
37
|
+
updatedAt: toText(row.updated_at, 'dunning.updated_at'),
|
|
38
|
+
};
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* When the next dunning retry falls, given how many attempts have failed so
|
|
42
|
+
* far (including the very first, at billing time). `null` means the
|
|
43
|
+
* schedule is exhausted — the caller suspends rather than scheduling again.
|
|
44
|
+
*/
|
|
45
|
+
function nextRetryAfter(firstFailedAt, failureCount, scheduleDays) {
|
|
46
|
+
const index = failureCount - 1;
|
|
47
|
+
const offsetDays = scheduleDays[index];
|
|
48
|
+
if (offsetDays === undefined)
|
|
49
|
+
return null;
|
|
50
|
+
return new Date(Date.parse(firstFailedAt) + offsetDays * DAY_MS).toISOString();
|
|
51
|
+
}
|
|
8
52
|
function decode(row) {
|
|
9
53
|
return {
|
|
10
54
|
id: toText(row.id, 'subscription.id'),
|
|
@@ -60,12 +104,16 @@ export function advancePeriod(from, unit, count) {
|
|
|
60
104
|
const lastDay = new Date(Date.UTC(targetYear, targetMonth + 1, 0)).getUTCDate();
|
|
61
105
|
return new Date(Date.UTC(targetYear, targetMonth, Math.min(day, lastDay), start.getUTCHours(), start.getUTCMinutes(), start.getUTCSeconds(), start.getUTCMilliseconds())).toISOString();
|
|
62
106
|
}
|
|
63
|
-
export function createSubscriptionStore(db, dependencies, now = Date.now) {
|
|
107
|
+
export function createSubscriptionStore(db, dependencies, now = Date.now, options = {}) {
|
|
64
108
|
const d = db.dialect;
|
|
65
109
|
const subscriptions = identifier(TABLES.subscriptions, d);
|
|
66
110
|
const cycles = identifier(TABLES.subscriptionCycles, d);
|
|
67
111
|
const orders = identifier(TABLES.orders, d);
|
|
68
112
|
const orderLines = identifier(TABLES.orderLines, d);
|
|
113
|
+
const dunningTable = identifier(TABLES.subscriptionDunning, d);
|
|
114
|
+
const renewalNotices = identifier(TABLES.subscriptionRenewalNotices, d);
|
|
115
|
+
const scheduleDays = options.dunningScheduleDays ?? DEFAULT_DUNNING_SCHEDULE_DAYS;
|
|
116
|
+
const renewalNoticeDays = options.renewalNoticeDays ?? DEFAULT_RENEWAL_NOTICE_DAYS;
|
|
69
117
|
const stamp = () => new Date(now()).toISOString();
|
|
70
118
|
async function read(id, executor = db) {
|
|
71
119
|
const result = await executor.query(sql `select * from ${subscriptions} where id = ${id}`);
|
|
@@ -145,7 +193,7 @@ export function createSubscriptionStore(db, dependencies, now = Date.now) {
|
|
|
145
193
|
next_billing_at = ${periodEnd},
|
|
146
194
|
updated_at = ${at}
|
|
147
195
|
where id = ${subscription.id}`);
|
|
148
|
-
return { orderId };
|
|
196
|
+
return { orderId, periodKey };
|
|
149
197
|
}, { immediate: true });
|
|
150
198
|
}
|
|
151
199
|
catch (error) {
|
|
@@ -178,6 +226,52 @@ export function createSubscriptionStore(db, dependencies, now = Date.now) {
|
|
|
178
226
|
throw error;
|
|
179
227
|
}
|
|
180
228
|
}
|
|
229
|
+
/**
|
|
230
|
+
* Opens a dunning cycle for a renewal whose payment just failed.
|
|
231
|
+
*
|
|
232
|
+
* Keyed by `subscription_id`, the table's own primary key — at most one
|
|
233
|
+
* open cycle per subscription, ever. Because this is only ever reached
|
|
234
|
+
* right after `billOne` succeeds for a period (gated by that period's own
|
|
235
|
+
* `period_key` uniqueness, claimed once), a duplicate call for the same
|
|
236
|
+
* period cannot happen in ordinary operation; the `insert`'s own primary
|
|
237
|
+
* key still refuses a genuine double-call rather than silently
|
|
238
|
+
* overwriting an in-progress cycle's history.
|
|
239
|
+
*/
|
|
240
|
+
async function beginDunning(subscriptionId, orderId, periodKey, reason) {
|
|
241
|
+
const at = stamp();
|
|
242
|
+
const firstRetry = nextRetryAfter(at, 1, scheduleDays);
|
|
243
|
+
const inserted = await db
|
|
244
|
+
.query(sql `
|
|
245
|
+
insert into ${dunningTable} (subscription_id, order_id, period_key, failure_count,
|
|
246
|
+
first_failed_at, next_retry_at, last_reason, suspended_at,
|
|
247
|
+
created_at, updated_at)
|
|
248
|
+
values (${subscriptionId}, ${orderId}, ${periodKey}, ${1}, ${at}, ${firstRetry}, ${reason},
|
|
249
|
+
${null}, ${at}, ${at})`)
|
|
250
|
+
.then(() => true)
|
|
251
|
+
.catch(() => false);
|
|
252
|
+
if (!inserted)
|
|
253
|
+
return;
|
|
254
|
+
await db.query(sql `
|
|
255
|
+
update ${subscriptions} set status = ${'past_due'}, updated_at = ${at}
|
|
256
|
+
where id = ${subscriptionId} and status = ${'active'}`);
|
|
257
|
+
await dependencies.orders.record(orderId, 'payment_failed', { note: reason });
|
|
258
|
+
}
|
|
259
|
+
/** Never throws: a renewal that produced an order must not be lost because the gateway is unreachable. */
|
|
260
|
+
async function attemptPayment(orderId) {
|
|
261
|
+
try {
|
|
262
|
+
const payment = await dependencies.payments.start(orderId);
|
|
263
|
+
if (payment.status === 'failed') {
|
|
264
|
+
return { ok: false, reason: 'The payment was declined.' };
|
|
265
|
+
}
|
|
266
|
+
return { ok: true };
|
|
267
|
+
}
|
|
268
|
+
catch (error) {
|
|
269
|
+
return {
|
|
270
|
+
ok: false,
|
|
271
|
+
reason: error instanceof Error ? error.message : 'The payment attempt failed.',
|
|
272
|
+
};
|
|
273
|
+
}
|
|
274
|
+
}
|
|
181
275
|
return {
|
|
182
276
|
create: async (input) => {
|
|
183
277
|
const variant = await dependencies.catalog.readVariant(input.variantId);
|
|
@@ -231,8 +325,15 @@ export function createSubscriptionStore(db, dependencies, now = Date.now) {
|
|
|
231
325
|
return result.rows.map(decode);
|
|
232
326
|
},
|
|
233
327
|
pause: async (id) => {
|
|
234
|
-
await load(id);
|
|
235
|
-
|
|
328
|
+
const subscription = await load(id);
|
|
329
|
+
// A subscriber in dunning can be paused too — stopping the retries is
|
|
330
|
+
// exactly what a human pausing a past-due subscription means.
|
|
331
|
+
await db.query(sql `
|
|
332
|
+
update ${subscriptions} set status = ${'paused'}, updated_at = ${stamp()}
|
|
333
|
+
where id = ${id} and status in (${'active'}, ${'past_due'})`);
|
|
334
|
+
if (subscription.status === 'past_due') {
|
|
335
|
+
await db.query(sql `delete from ${dunningTable} where subscription_id = ${id}`);
|
|
336
|
+
}
|
|
236
337
|
return load(id);
|
|
237
338
|
},
|
|
238
339
|
resume: async (id) => {
|
|
@@ -246,11 +347,14 @@ export function createSubscriptionStore(db, dependencies, now = Date.now) {
|
|
|
246
347
|
}
|
|
247
348
|
// Billing resumes from now, not from where it was paused. Charging a
|
|
248
349
|
// subscriber for the months they were paused is exactly what pausing was
|
|
249
|
-
// supposed to prevent.
|
|
350
|
+
// supposed to prevent. A dunning cycle in progress is dropped for the
|
|
351
|
+
// same reason: a resumed subscription starts a fresh period, not a
|
|
352
|
+
// retry of the one that failed.
|
|
250
353
|
const at = stamp();
|
|
251
354
|
await db.query(sql `
|
|
252
355
|
update ${subscriptions} set status = ${'active'}, next_billing_at = ${at}, updated_at = ${at}
|
|
253
356
|
where id = ${id}`);
|
|
357
|
+
await db.query(sql `delete from ${dunningTable} where subscription_id = ${id}`);
|
|
254
358
|
return load(id);
|
|
255
359
|
},
|
|
256
360
|
cancel: async (id) => {
|
|
@@ -259,6 +363,7 @@ export function createSubscriptionStore(db, dependencies, now = Date.now) {
|
|
|
259
363
|
await db.query(sql `
|
|
260
364
|
update ${subscriptions} set status = ${'cancelled'}, cancelled_at = ${at}, updated_at = ${at}
|
|
261
365
|
where id = ${id} and cancelled_at is null`);
|
|
366
|
+
await db.query(sql `delete from ${dunningTable} where subscription_id = ${id}`);
|
|
262
367
|
return load(id);
|
|
263
368
|
},
|
|
264
369
|
cycles: async (id) => {
|
|
@@ -287,8 +392,15 @@ export function createSubscriptionStore(db, dependencies, now = Date.now) {
|
|
|
287
392
|
billed.push({ subscriptionId: subscription.id, orderId: outcome.orderId });
|
|
288
393
|
// The renewal starts a payment through the same store as any other
|
|
289
394
|
// order, so a subscription with no gateway configured produces bank
|
|
290
|
-
// transfer instructions rather than failing (R2).
|
|
291
|
-
|
|
395
|
+
// transfer instructions rather than failing (R2). A failure here —
|
|
396
|
+
// declined, or the gateway unreachable — opens a dunning cycle
|
|
397
|
+
// rather than being silently dropped or thrown past the caller
|
|
398
|
+
// (fiche 53 task 3): never a first-failure suspension, only ever
|
|
399
|
+
// the start of the retry schedule.
|
|
400
|
+
const attempt = await attemptPayment(outcome.orderId);
|
|
401
|
+
if (!attempt.ok) {
|
|
402
|
+
await beginDunning(subscription.id, outcome.orderId, outcome.periodKey, attempt.reason);
|
|
403
|
+
}
|
|
292
404
|
}
|
|
293
405
|
else {
|
|
294
406
|
skipped.push({ subscriptionId: subscription.id, reason: outcome.skipped });
|
|
@@ -296,8 +408,236 @@ export function createSubscriptionStore(db, dependencies, now = Date.now) {
|
|
|
296
408
|
}
|
|
297
409
|
return { billed, skipped };
|
|
298
410
|
},
|
|
411
|
+
dunning: async (id) => {
|
|
412
|
+
const result = await db.query(sql `select * from ${dunningTable} where subscription_id = ${id}`);
|
|
413
|
+
const row = result.rows[0];
|
|
414
|
+
return row === undefined ? null : decodeDunning(row);
|
|
415
|
+
},
|
|
416
|
+
runDunning: async (options) => {
|
|
417
|
+
const due = await db.query(sql `
|
|
418
|
+
select * from ${dunningTable}
|
|
419
|
+
where next_retry_at is not null and next_retry_at <= ${stamp()}
|
|
420
|
+
order by next_retry_at asc`);
|
|
421
|
+
const recovered = [];
|
|
422
|
+
const retried = [];
|
|
423
|
+
const suspended = [];
|
|
424
|
+
for (const row of due.rows.slice(0, options?.limit ?? 200)) {
|
|
425
|
+
const state = decodeDunning(row);
|
|
426
|
+
// Compare-and-set claim: only one caller can move `next_retry_at`
|
|
427
|
+
// away from the exact value just read. The loser's `rowsAffected`
|
|
428
|
+
// comes back 0 and it moves on — the same shape as the scheduler
|
|
429
|
+
// lock in `@cogenta/schema` (`SCHEDULED_TASK_CLAIMS_TABLE`).
|
|
430
|
+
const claim = await db.query(sql `
|
|
431
|
+
update ${dunningTable} set next_retry_at = ${null}, updated_at = ${stamp()}
|
|
432
|
+
where subscription_id = ${state.subscriptionId} and next_retry_at = ${state.nextRetryAt}`);
|
|
433
|
+
if (claim.rowsAffected === 0)
|
|
434
|
+
continue;
|
|
435
|
+
const attempt = await attemptPayment(state.orderId);
|
|
436
|
+
if (attempt.ok) {
|
|
437
|
+
await db.query(sql `delete from ${dunningTable} where subscription_id = ${state.subscriptionId}`);
|
|
438
|
+
await db.query(sql `
|
|
439
|
+
update ${subscriptions} set status = ${'active'}, updated_at = ${stamp()}
|
|
440
|
+
where id = ${state.subscriptionId} and status = ${'past_due'}`);
|
|
441
|
+
recovered.push({ subscriptionId: state.subscriptionId, orderId: state.orderId });
|
|
442
|
+
continue;
|
|
443
|
+
}
|
|
444
|
+
const failureCount = state.failureCount + 1;
|
|
445
|
+
const nextRetryAt = nextRetryAfter(state.firstFailedAt, failureCount, scheduleDays);
|
|
446
|
+
if (nextRetryAt === null) {
|
|
447
|
+
const at = stamp();
|
|
448
|
+
await db.query(sql `
|
|
449
|
+
update ${dunningTable}
|
|
450
|
+
set failure_count = ${failureCount}, next_retry_at = ${null},
|
|
451
|
+
last_reason = ${attempt.reason}, suspended_at = ${at}, updated_at = ${at}
|
|
452
|
+
where subscription_id = ${state.subscriptionId}`);
|
|
453
|
+
// Auto-suspended, never auto-cancelled: the schedule is exhausted,
|
|
454
|
+
// not the relationship. A human decides what happens next.
|
|
455
|
+
await db.query(sql `
|
|
456
|
+
update ${subscriptions} set status = ${'paused'}, updated_at = ${at}
|
|
457
|
+
where id = ${state.subscriptionId} and status = ${'past_due'}`);
|
|
458
|
+
await dependencies.orders.record(state.orderId, 'note', {
|
|
459
|
+
note: 'Subscription automatically suspended after exhausting the dunning schedule.',
|
|
460
|
+
});
|
|
461
|
+
suspended.push({ subscriptionId: state.subscriptionId, reason: attempt.reason });
|
|
462
|
+
}
|
|
463
|
+
else {
|
|
464
|
+
await db.query(sql `
|
|
465
|
+
update ${dunningTable}
|
|
466
|
+
set failure_count = ${failureCount}, next_retry_at = ${nextRetryAt},
|
|
467
|
+
last_reason = ${attempt.reason}, updated_at = ${stamp()}
|
|
468
|
+
where subscription_id = ${state.subscriptionId}`);
|
|
469
|
+
retried.push({ subscriptionId: state.subscriptionId, reason: attempt.reason });
|
|
470
|
+
}
|
|
471
|
+
}
|
|
472
|
+
return { recovered, retried, suspended };
|
|
473
|
+
},
|
|
474
|
+
changePlan: async (id, newVariantId, changeOptions) => {
|
|
475
|
+
const subscription = await load(id);
|
|
476
|
+
if (subscription.status === 'cancelled') {
|
|
477
|
+
throw new CogentaError({
|
|
478
|
+
code: 'COMMERCE_SUBSCRIPTION_INVALID',
|
|
479
|
+
message: 'A cancelled subscription has no plan left to change.',
|
|
480
|
+
hint: 'Create a new subscription instead.',
|
|
481
|
+
});
|
|
482
|
+
}
|
|
483
|
+
const variant = await dependencies.catalog.readVariant(newVariantId);
|
|
484
|
+
if (variant === null) {
|
|
485
|
+
throw new CogentaError({
|
|
486
|
+
code: 'COMMERCE_VARIANT_NOT_FOUND',
|
|
487
|
+
message: 'This product variant does not exist.',
|
|
488
|
+
hint: 'A subscription needs something to deliver.',
|
|
489
|
+
});
|
|
490
|
+
}
|
|
491
|
+
if (variant.currency !== subscription.currency) {
|
|
492
|
+
throw new CogentaError({
|
|
493
|
+
code: 'COMMERCE_CURRENCY_MISMATCH',
|
|
494
|
+
message: `This subscription is billed in ${subscription.currency}; "${variant.title}" is priced in ${variant.currency}.`,
|
|
495
|
+
hint: 'Changing currency mid-subscription is not supported — cancel and start a new one.',
|
|
496
|
+
});
|
|
497
|
+
}
|
|
498
|
+
const quantity = changeOptions?.quantity ?? subscription.quantity;
|
|
499
|
+
const prorate = changeOptions?.prorate ?? true;
|
|
500
|
+
let prorationMinor = 0;
|
|
501
|
+
if (prorate) {
|
|
502
|
+
const periodLengthMs = Date.parse(subscription.currentPeriodEnd) - Date.parse(subscription.currentPeriodStart);
|
|
503
|
+
const remainingMs = Math.max(0, Date.parse(subscription.currentPeriodEnd) - now());
|
|
504
|
+
if (periodLengthMs > 0) {
|
|
505
|
+
const oldValue = subscription.priceMinor * subscription.quantity;
|
|
506
|
+
const newValue = variant.priceMinor * quantity;
|
|
507
|
+
prorationMinor = Math.round(((newValue - oldValue) * remainingMs) / periodLengthMs);
|
|
508
|
+
}
|
|
509
|
+
}
|
|
510
|
+
let prorationOrderId = null;
|
|
511
|
+
if (prorationMinor > 0) {
|
|
512
|
+
const customer = await dependencies.customers.read(subscription.customerId);
|
|
513
|
+
if (customer !== null) {
|
|
514
|
+
const orderId = newId(now);
|
|
515
|
+
const at = stamp();
|
|
516
|
+
await db.transaction(async (tx) => {
|
|
517
|
+
await tx.query(sql `
|
|
518
|
+
insert into ${orders} (id, reference, customer_id, email, status, currency,
|
|
519
|
+
subtotal_minor, discount_minor, shipping_minor, tax_minor, total_minor,
|
|
520
|
+
coupon_code, shipping_country, shipping_region,
|
|
521
|
+
shipping_method_id, shipping_method_label,
|
|
522
|
+
placed_at, updated_at, subscription_id)
|
|
523
|
+
values (${orderId}, ${referenceFrom(orderId)}, ${customer.id}, ${customer.email},
|
|
524
|
+
${'pending'}, ${subscription.currency},
|
|
525
|
+
${prorationMinor}, ${0}, ${0}, ${0}, ${prorationMinor},
|
|
526
|
+
${null}, ${subscription.shippingCountry}, ${subscription.shippingRegion},
|
|
527
|
+
${null}, ${null}, ${at}, ${at}, ${subscription.id})`);
|
|
528
|
+
await tx.query(sql `
|
|
529
|
+
insert into ${orderLines} (id, order_id, variant_id, sku, title, quantity,
|
|
530
|
+
unit_price_minor, subtotal_minor, discount_minor,
|
|
531
|
+
tax_minor, tax_rate_bp, total_minor, position)
|
|
532
|
+
values (${newId(now)}, ${orderId}, ${variant.id}, ${variant.sku},
|
|
533
|
+
${'Plan change: prorated for the rest of the current period'}, ${1},
|
|
534
|
+
${prorationMinor}, ${prorationMinor}, ${0}, ${0}, ${0}, ${prorationMinor}, ${0})`);
|
|
535
|
+
}, { immediate: true });
|
|
536
|
+
await dependencies.orders.record(orderId, 'placed', {
|
|
537
|
+
note: 'Prorated charge for a mid-cycle plan change.',
|
|
538
|
+
});
|
|
539
|
+
// Attempted, never required to succeed synchronously: a failure
|
|
540
|
+
// here leaves a real, visible `pending` order a human can settle or
|
|
541
|
+
// retry from the orders screen — the plan change itself still
|
|
542
|
+
// applies, exactly as an upgrade paid by invoice would.
|
|
543
|
+
await attemptPayment(orderId);
|
|
544
|
+
prorationOrderId = orderId;
|
|
545
|
+
}
|
|
546
|
+
}
|
|
547
|
+
await db.query(sql `
|
|
548
|
+
update ${subscriptions}
|
|
549
|
+
set variant_id = ${variant.id}, quantity = ${quantity}, price_minor = ${variant.priceMinor},
|
|
550
|
+
currency = ${variant.currency}, updated_at = ${stamp()}
|
|
551
|
+
where id = ${id}`);
|
|
552
|
+
return { subscription: await load(id), prorationMinor, prorationOrderId };
|
|
553
|
+
},
|
|
554
|
+
sendRenewalNotices: async (renewalOptions) => {
|
|
555
|
+
if (dependencies.notifyRenewal === undefined)
|
|
556
|
+
return { notified: [] };
|
|
557
|
+
const threshold = new Date(now() + renewalNoticeDays * DAY_MS).toISOString();
|
|
558
|
+
const at = stamp();
|
|
559
|
+
const due = await db.query(sql `
|
|
560
|
+
select * from ${subscriptions}
|
|
561
|
+
where status = ${'active'} and next_billing_at <= ${threshold} and next_billing_at > ${at}
|
|
562
|
+
order by next_billing_at asc`);
|
|
563
|
+
const notified = [];
|
|
564
|
+
for (const row of due.rows.slice(0, renewalOptions?.limit ?? 200)) {
|
|
565
|
+
const subscription = decode(row);
|
|
566
|
+
const periodKey = `${subscription.id}:${subscription.nextBillingAt}`;
|
|
567
|
+
// The insert itself is the idempotency claim — a repeat run for the
|
|
568
|
+
// same upcoming period hits the primary key and is swallowed.
|
|
569
|
+
const claimed = await db
|
|
570
|
+
.query(sql `
|
|
571
|
+
insert into ${renewalNotices} (subscription_id, period_key, sent_at)
|
|
572
|
+
values (${subscription.id}, ${periodKey}, ${at})`)
|
|
573
|
+
.then(() => true)
|
|
574
|
+
.catch(() => false);
|
|
575
|
+
if (!claimed)
|
|
576
|
+
continue;
|
|
577
|
+
const customer = await dependencies.customers.read(subscription.customerId);
|
|
578
|
+
if (customer === null)
|
|
579
|
+
continue;
|
|
580
|
+
const daysUntilRenewal = Math.max(0, Math.round((Date.parse(subscription.nextBillingAt) - now()) / DAY_MS));
|
|
581
|
+
await dependencies.notifyRenewal({ subscription, customer, daysUntilRenewal });
|
|
582
|
+
notified.push({ subscriptionId: subscription.id });
|
|
583
|
+
}
|
|
584
|
+
return { notified };
|
|
585
|
+
},
|
|
586
|
+
metrics: async () => {
|
|
587
|
+
const counts = await db.query(sql `
|
|
588
|
+
select status, count(*) as n from ${subscriptions} group by status`);
|
|
589
|
+
const byStatus = {};
|
|
590
|
+
for (const row of counts.rows) {
|
|
591
|
+
byStatus[toText(row.status, 'subscription_metrics.status')] = toInt(row.n, 'subscription_metrics.n');
|
|
592
|
+
}
|
|
593
|
+
const active = byStatus.active ?? 0;
|
|
594
|
+
const pastDue = byStatus.past_due ?? 0;
|
|
595
|
+
const paused = byStatus.paused ?? 0;
|
|
596
|
+
const cancelled = byStatus.cancelled ?? 0;
|
|
597
|
+
// MRR: every billable (active/past_due) subscription's price,
|
|
598
|
+
// normalised to a monthly cadence. Weeks and days are approximated via
|
|
599
|
+
// a 365.25-day year, which is accurate enough for a dashboard figure
|
|
600
|
+
// and never used to charge anyone (billing itself always uses
|
|
601
|
+
// `advancePeriod`'s calendar-exact arithmetic).
|
|
602
|
+
const billable = await db.query(sql `
|
|
603
|
+
select * from ${subscriptions} where status in (${'active'}, ${'past_due'})`);
|
|
604
|
+
const mrrByCurrency = new Map();
|
|
605
|
+
for (const row of billable.rows) {
|
|
606
|
+
const subscription = decode(row);
|
|
607
|
+
const monthly = monthlyValueMinor(subscription);
|
|
608
|
+
mrrByCurrency.set(subscription.currency, (mrrByCurrency.get(subscription.currency) ?? 0) + monthly);
|
|
609
|
+
}
|
|
610
|
+
const totalEver = active + pastDue + paused + cancelled;
|
|
611
|
+
const churnRate = totalEver === 0 ? 0 : cancelled / totalEver;
|
|
612
|
+
return {
|
|
613
|
+
active,
|
|
614
|
+
pastDue,
|
|
615
|
+
paused,
|
|
616
|
+
cancelled,
|
|
617
|
+
mrrMinor: [...mrrByCurrency.entries()].map(([currency, amountMinor]) => ({
|
|
618
|
+
currency,
|
|
619
|
+
amountMinor: Math.round(amountMinor),
|
|
620
|
+
})),
|
|
621
|
+
churnRate,
|
|
622
|
+
};
|
|
623
|
+
},
|
|
299
624
|
};
|
|
300
625
|
}
|
|
626
|
+
/** A subscription's price normalised to a monthly cadence, for MRR. */
|
|
627
|
+
function monthlyValueMinor(subscription) {
|
|
628
|
+
const value = subscription.priceMinor * subscription.quantity;
|
|
629
|
+
const daysPerMonth = 365.25 / 12;
|
|
630
|
+
switch (subscription.intervalUnit) {
|
|
631
|
+
case 'day':
|
|
632
|
+
return (value / subscription.intervalCount) * daysPerMonth;
|
|
633
|
+
case 'week':
|
|
634
|
+
return (value / (subscription.intervalCount * 7)) * daysPerMonth;
|
|
635
|
+
case 'month':
|
|
636
|
+
return value / subscription.intervalCount;
|
|
637
|
+
case 'year':
|
|
638
|
+
return value / (subscription.intervalCount * 12);
|
|
639
|
+
}
|
|
640
|
+
}
|
|
301
641
|
/** Internal. Unwinds a billing transaction with a reason. */
|
|
302
642
|
class CycleRefused extends Error {
|
|
303
643
|
reason;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"store.js","sourceRoot":"","sources":["../../src/subscription/store.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"store.js","sourceRoot":"","sources":["../../src/subscription/store.ts"],"names":[],"mappings":"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"}
|
package/dist/tables.d.ts
CHANGED
|
@@ -17,16 +17,33 @@ export declare const TABLES: {
|
|
|
17
17
|
readonly orders: 'cogenta_commerce_orders';
|
|
18
18
|
readonly orderLines: 'cogenta_commerce_order_lines';
|
|
19
19
|
readonly orderEvents: 'cogenta_commerce_order_events';
|
|
20
|
+
readonly orderEmails: 'cogenta_commerce_order_emails';
|
|
20
21
|
readonly payments: 'cogenta_commerce_payments';
|
|
21
22
|
readonly refunds: 'cogenta_commerce_refunds';
|
|
22
23
|
readonly taxRules: 'cogenta_commerce_tax_rules';
|
|
23
24
|
readonly shippingMethods: 'cogenta_commerce_shipping_methods';
|
|
24
25
|
readonly coupons: 'cogenta_commerce_coupons';
|
|
25
26
|
readonly couponRedemptions: 'cogenta_commerce_coupon_redemptions';
|
|
27
|
+
readonly couponRestrictions: 'cogenta_commerce_coupon_restrictions';
|
|
28
|
+
readonly couponCustomerRedemptions: 'cogenta_commerce_coupon_customer_redemptions';
|
|
26
29
|
readonly invoices: 'cogenta_commerce_invoices';
|
|
27
30
|
readonly invoiceSequences: 'cogenta_commerce_invoice_sequences';
|
|
31
|
+
readonly creditNotes: 'cogenta_commerce_credit_notes';
|
|
28
32
|
readonly subscriptions: 'cogenta_commerce_subscriptions';
|
|
29
33
|
readonly subscriptionCycles: 'cogenta_commerce_subscription_cycles';
|
|
34
|
+
readonly subscriptionDunning: 'cogenta_commerce_subscription_dunning';
|
|
35
|
+
readonly subscriptionRenewalNotices: 'cogenta_commerce_subscription_renewal_notices';
|
|
36
|
+
/** A product's link to a term of a taxonomy the *site* declares (ADR-0022,
|
|
37
|
+
* fiche 51 task 3) — not a foreign key for the same reason `content_ref` on
|
|
38
|
+
* `products` is not one: the term table is named after a taxonomy this
|
|
39
|
+
* package cannot know. A join row rather than a column on `products` because
|
|
40
|
+
* a product may carry more than one term, the same "many" a `f.taxonomy`
|
|
41
|
+
* field defaults to on a collection. */
|
|
42
|
+
readonly productTerms: 'cogenta_commerce_product_terms';
|
|
43
|
+
/** Append-only. Every write that moves `on_hand` — a sale, a restock, a
|
|
44
|
+
* stock take — leaves one row here and never edits or removes an earlier
|
|
45
|
+
* one; the row is the audit trail, not a cache of the current count. */
|
|
46
|
+
readonly stockMovements: 'cogenta_commerce_stock_movements';
|
|
30
47
|
};
|
|
31
48
|
/**
|
|
32
49
|
* Creates everything this package owns, idempotently.
|
package/dist/tables.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tables.d.ts","sourceRoot":"","sources":["../src/tables.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,cAAc,EAKpB,MAAM,eAAe,CAAA;AAEtB;;;;;;;;GAQG;AACH,eAAO,MAAM,MAAM;aACjB,QAAQ,EAAE,2BAA2B;aACrC,QAAQ,EAAE,2BAA2B;aACrC,SAAS,EAAE,4BAA4B;aACvC,KAAK,EAAE,wBAAwB;aAC/B,SAAS,EAAE,6BAA6B;aACxC,MAAM,EAAE,yBAAyB;aACjC,UAAU,EAAE,8BAA8B;aAC1C,WAAW,EAAE,+BAA+B;aAC5C,QAAQ,EAAE,2BAA2B;aACrC,OAAO,EAAE,0BAA0B;aACnC,QAAQ,EAAE,4BAA4B;aACtC,eAAe,EAAE,mCAAmC;aACpD,OAAO,EAAE,0BAA0B;aACnC,iBAAiB,EAAE,qCAAqC;
|
|
1
|
+
{"version":3,"file":"tables.d.ts","sourceRoot":"","sources":["../src/tables.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,cAAc,EAKpB,MAAM,eAAe,CAAA;AAEtB;;;;;;;;GAQG;AACH,eAAO,MAAM,MAAM;aACjB,QAAQ,EAAE,2BAA2B;aACrC,QAAQ,EAAE,2BAA2B;aACrC,SAAS,EAAE,4BAA4B;aACvC,KAAK,EAAE,wBAAwB;aAC/B,SAAS,EAAE,6BAA6B;aACxC,MAAM,EAAE,yBAAyB;aACjC,UAAU,EAAE,8BAA8B;aAC1C,WAAW,EAAE,+BAA+B;aAC5C,WAAW,EAAE,+BAA+B;aAC5C,QAAQ,EAAE,2BAA2B;aACrC,OAAO,EAAE,0BAA0B;aACnC,QAAQ,EAAE,4BAA4B;aACtC,eAAe,EAAE,mCAAmC;aACpD,OAAO,EAAE,0BAA0B;aACnC,iBAAiB,EAAE,qCAAqC;aAExD,kBAAkB,EAAE,sCAAsC;aAC1D,yBAAyB,EAAE,8CAA8C;aACzE,QAAQ,EAAE,2BAA2B;aACrC,gBAAgB,EAAE,oCAAoC;aACtD,WAAW,EAAE,+BAA+B;aAC5C,aAAa,EAAE,gCAAgC;aAC/C,kBAAkB,EAAE,sCAAsC;aAE1D,mBAAmB,EAAE,uCAAuC;aAG5D,0BAA0B,EAAE,+CAA+C;IAC3E;;;;;4CAKwC;aACxC,YAAY,EAAE,gCAAgC;IAC9C;;4EAEwE;aACxE,cAAc,EAAE,kCAAkC;CAC1C,CAAA;AAuBV;;;;;;;;GAQG;AACH,wBAAsB,oBAAoB,CAAC,EAAE,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CA6f5E"}
|