@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.
Files changed (95) hide show
  1. package/dist/admin/permissions.d.ts +8 -0
  2. package/dist/admin/permissions.d.ts.map +1 -1
  3. package/dist/admin/permissions.js +1 -0
  4. package/dist/admin/permissions.js.map +1 -1
  5. package/dist/admin/router.d.ts +47 -5
  6. package/dist/admin/router.d.ts.map +1 -1
  7. package/dist/admin/router.js +942 -24
  8. package/dist/admin/router.js.map +1 -1
  9. package/dist/cart/store.d.ts +23 -0
  10. package/dist/cart/store.d.ts.map +1 -1
  11. package/dist/cart/store.js +49 -2
  12. package/dist/cart/store.js.map +1 -1
  13. package/dist/catalog/csv.d.ts +29 -0
  14. package/dist/catalog/csv.d.ts.map +1 -0
  15. package/dist/catalog/csv.js +396 -0
  16. package/dist/catalog/csv.js.map +1 -0
  17. package/dist/catalog/store.d.ts +24 -4
  18. package/dist/catalog/store.d.ts.map +1 -1
  19. package/dist/catalog/store.js +238 -11
  20. package/dist/catalog/store.js.map +1 -1
  21. package/dist/catalog/types.d.ts +92 -0
  22. package/dist/catalog/types.d.ts.map +1 -1
  23. package/dist/catalog/types.js +20 -0
  24. package/dist/catalog/types.js.map +1 -1
  25. package/dist/coupon/store.d.ts +63 -5
  26. package/dist/coupon/store.d.ts.map +1 -1
  27. package/dist/coupon/store.js +140 -7
  28. package/dist/coupon/store.js.map +1 -1
  29. package/dist/customer/store.d.ts +17 -0
  30. package/dist/customer/store.d.ts.map +1 -1
  31. package/dist/customer/store.js +26 -0
  32. package/dist/customer/store.js.map +1 -1
  33. package/dist/index.d.ts +18 -8
  34. package/dist/index.d.ts.map +1 -1
  35. package/dist/index.js +9 -3
  36. package/dist/index.js.map +1 -1
  37. package/dist/invoice/credit-note.d.ts +45 -0
  38. package/dist/invoice/credit-note.d.ts.map +1 -0
  39. package/dist/invoice/credit-note.js +109 -0
  40. package/dist/invoice/credit-note.js.map +1 -0
  41. package/dist/invoice/sequence.d.ts +21 -0
  42. package/dist/invoice/sequence.d.ts.map +1 -0
  43. package/dist/invoice/sequence.js +64 -0
  44. package/dist/invoice/sequence.js.map +1 -0
  45. package/dist/invoice/store.d.ts +23 -1
  46. package/dist/invoice/store.d.ts.map +1 -1
  47. package/dist/invoice/store.js +23 -56
  48. package/dist/invoice/store.js.map +1 -1
  49. package/dist/order/csv.d.ts +24 -0
  50. package/dist/order/csv.d.ts.map +1 -0
  51. package/dist/order/csv.js +42 -0
  52. package/dist/order/csv.js.map +1 -0
  53. package/dist/order/notify.d.ts +65 -0
  54. package/dist/order/notify.d.ts.map +1 -0
  55. package/dist/order/notify.js +180 -0
  56. package/dist/order/notify.js.map +1 -0
  57. package/dist/order/store.d.ts +58 -1
  58. package/dist/order/store.d.ts.map +1 -1
  59. package/dist/order/store.js +145 -10
  60. package/dist/order/store.js.map +1 -1
  61. package/dist/order/types.d.ts +35 -1
  62. package/dist/order/types.d.ts.map +1 -1
  63. package/dist/order/types.js +2 -0
  64. package/dist/order/types.js.map +1 -1
  65. package/dist/payment/paypal.d.ts +9 -0
  66. package/dist/payment/paypal.d.ts.map +1 -0
  67. package/dist/payment/paypal.js +583 -0
  68. package/dist/payment/paypal.js.map +1 -0
  69. package/dist/payment/registry.d.ts +15 -6
  70. package/dist/payment/registry.d.ts.map +1 -1
  71. package/dist/payment/registry.js +17 -6
  72. package/dist/payment/registry.js.map +1 -1
  73. package/dist/payment/types.d.ts +6 -0
  74. package/dist/payment/types.d.ts.map +1 -1
  75. package/dist/shipping/store.d.ts +29 -3
  76. package/dist/shipping/store.d.ts.map +1 -1
  77. package/dist/shipping/store.js +68 -4
  78. package/dist/shipping/store.js.map +1 -1
  79. package/dist/subscription/renewal-notifier.d.ts +17 -0
  80. package/dist/subscription/renewal-notifier.d.ts.map +1 -0
  81. package/dist/subscription/renewal-notifier.js +33 -0
  82. package/dist/subscription/renewal-notifier.js.map +1 -0
  83. package/dist/subscription/store.d.ts +126 -3
  84. package/dist/subscription/store.d.ts.map +1 -1
  85. package/dist/subscription/store.js +348 -8
  86. package/dist/subscription/store.js.map +1 -1
  87. package/dist/tables.d.ts +17 -0
  88. package/dist/tables.d.ts.map +1 -1
  89. package/dist/tables.js +273 -0
  90. package/dist/tables.js.map +1 -1
  91. package/dist/tax/store.d.ts +20 -0
  92. package/dist/tax/store.d.ts.map +1 -1
  93. package/dist/tax/store.js +51 -7
  94. package/dist/tax/store.js.map +1 -1
  95. package/package.json +3 -2
@@ -1,7 +1,43 @@
1
- import { CogentaError, identifier, limit, newId, sql, } from '@cogenta/core';
1
+ import { CogentaError, identifier, limit, newId, sql, unsafeRaw, } from '@cogenta/core';
2
2
  import { assertCurrency, assertMinor } from '../money.js';
3
- import { fromBool, toBool, toInt, toNullableText, toText } from '../rows.js';
3
+ import { fromBool, toBool, toInt, toNullableInt, toNullableText, toText } from '../rows.js';
4
4
  import { TABLES } from '../tables.js';
5
+ /**
6
+ * `image_media_ids` is a JSON array of strings, stored as text (see
7
+ * `tables.ts`). A row written before this column existed, or a value this
8
+ * package did not itself write, decodes to "no images" rather than throwing
9
+ * — a gallery is not load-bearing data the way a price or a stock count is.
10
+ */
11
+ function toStringArray(value) {
12
+ if (value === null || value === undefined)
13
+ return [];
14
+ const text = typeof value === 'string' ? value : String(value);
15
+ if (text.trim() === '')
16
+ return [];
17
+ try {
18
+ const parsed = JSON.parse(text);
19
+ return Array.isArray(parsed)
20
+ ? parsed.filter((item) => typeof item === 'string')
21
+ : [];
22
+ }
23
+ catch {
24
+ return [];
25
+ }
26
+ }
27
+ /** Trims, drops empties, and de-duplicates while keeping the first
28
+ * occurrence's position — the order a merchant arranged the gallery in. */
29
+ function normalizeImageIds(ids) {
30
+ const seen = new Set();
31
+ const result = [];
32
+ for (const id of ids) {
33
+ const trimmed = id.trim();
34
+ if (trimmed === '' || seen.has(trimmed))
35
+ continue;
36
+ seen.add(trimmed);
37
+ result.push(trimmed);
38
+ }
39
+ return result;
40
+ }
5
41
  function decodeProduct(row) {
6
42
  const collection = toNullableText(row.content_collection);
7
43
  const entryId = toNullableText(row.content_entry_id);
@@ -12,6 +48,7 @@ function decodeProduct(row) {
12
48
  title: toText(row.title, 'product.title'),
13
49
  status: toText(row.status, 'product.status'),
14
50
  contentRef: ref,
51
+ imageMediaIds: toStringArray(row.image_media_ids),
15
52
  createdAt: toText(row.created_at, 'product.created_at'),
16
53
  updatedAt: toText(row.updated_at, 'product.updated_at'),
17
54
  };
@@ -29,10 +66,31 @@ function decodeVariant(row) {
29
66
  weightGrams: toInt(row.weight_grams, 'variant.weight_grams'),
30
67
  taxCategory: toText(row.tax_category, 'variant.tax_category'),
31
68
  position: toInt(row.position, 'variant.position'),
69
+ lowStockThreshold: toNullableInt(row.low_stock_threshold, 'variant.low_stock_threshold'),
70
+ compareAtPriceMinor: toNullableInt(row.compare_at_price_minor, 'variant.compare_at_price_minor'),
71
+ saleStartsAt: toNullableText(row.sale_starts_at),
72
+ saleEndsAt: toNullableText(row.sale_ends_at),
73
+ widthMm: toNullableInt(row.width_mm, 'variant.width_mm'),
74
+ heightMm: toNullableInt(row.height_mm, 'variant.height_mm'),
75
+ depthMm: toNullableInt(row.depth_mm, 'variant.depth_mm'),
76
+ imageMediaId: toNullableText(row.image_media_id),
32
77
  createdAt: toText(row.created_at, 'variant.created_at'),
33
78
  updatedAt: toText(row.updated_at, 'variant.updated_at'),
34
79
  };
35
80
  }
81
+ function decodeStockMovement(row) {
82
+ return {
83
+ id: toText(row.id, 'stockMovement.id'),
84
+ variantId: toText(row.variant_id, 'stockMovement.variant_id'),
85
+ delta: toInt(row.delta, 'stockMovement.delta'),
86
+ balanceAfter: toInt(row.balance_after, 'stockMovement.balance_after'),
87
+ reason: toText(row.reason, 'stockMovement.reason'),
88
+ actorId: toNullableText(row.actor_id),
89
+ referenceId: toNullableText(row.reference_id),
90
+ note: toNullableText(row.note),
91
+ createdAt: toText(row.created_at, 'stockMovement.created_at'),
92
+ };
93
+ }
36
94
  const HANDLE_PATTERN = /^[a-z0-9]+(?:-[a-z0-9]+)*$/u;
37
95
  function assertHandle(handle) {
38
96
  const value = handle.trim().toLowerCase();
@@ -50,6 +108,32 @@ function assertHandle(handle) {
50
108
  }
51
109
  return value;
52
110
  }
111
+ /** For a nullable non-negative integer field (fiche 51 tasks 4-5: a threshold, a dimension). `null`/`undefined` pass through untouched. */
112
+ function assertNullableNonNegativeInt(value, what) {
113
+ if (value === null || value === undefined)
114
+ return value;
115
+ if (!Number.isInteger(value) || value < 0) {
116
+ throw new CogentaError({
117
+ code: 'COMMERCE_QUANTITY_INVALID',
118
+ message: `${what} must be a whole, non-negative number, got ${String(value)}.`,
119
+ hint: 'Leave it unset (null) rather than sending zero when there is nothing to report.',
120
+ });
121
+ }
122
+ return value;
123
+ }
124
+ /** A date/time field carries an ISO string or nothing — never free text a `Date` cannot parse. */
125
+ function assertNullableIsoDate(value, what) {
126
+ if (value === null || value === undefined)
127
+ return value;
128
+ if (Number.isNaN(new Date(value).getTime())) {
129
+ throw new CogentaError({
130
+ code: 'COMMERCE_PRODUCT_INVALID',
131
+ message: `${what} is not a usable date.`,
132
+ hint: 'Send an ISO 8601 timestamp, such as "2026-09-01T00:00:00.000Z".',
133
+ });
134
+ }
135
+ return value;
136
+ }
53
137
  function assertQuantity(quantity, what) {
54
138
  if (!Number.isInteger(quantity) || quantity <= 0) {
55
139
  throw new CogentaError({
@@ -80,6 +164,8 @@ export function createCatalogStore(db, now = Date.now) {
80
164
  const d = db.dialect;
81
165
  const products = identifier(TABLES.products, d);
82
166
  const variants = identifier(TABLES.variants, d);
167
+ const productTerms = identifier(TABLES.productTerms, d);
168
+ const stockMovements = identifier(TABLES.stockMovements, d);
83
169
  const stamp = () => new Date(now()).toISOString();
84
170
  async function loadProduct(id) {
85
171
  const found = await readProduct(id);
@@ -97,6 +183,29 @@ export function createCatalogStore(db, now = Date.now) {
97
183
  const row = result.rows[0];
98
184
  return row === undefined ? null : decodeProduct(row);
99
185
  }
186
+ /**
187
+ * One row per stock-moving write, in the same transaction the write itself
188
+ * ran in — a rollback of the write (a short basket in `takeStock`) rolls
189
+ * this back with it, so the history never shows a movement whose sale
190
+ * never actually happened.
191
+ */
192
+ async function recordMovement(executor, variantId, delta, balanceAfter, reason, options) {
193
+ const id = newId(now);
194
+ await executor.query(sql `
195
+ insert into ${stockMovements}
196
+ (id, variant_id, delta, balance_after, reason, actor_id, reference_id, note, created_at)
197
+ values (${id}, ${variantId}, ${delta}, ${balanceAfter}, ${reason},
198
+ ${options?.actorId ?? null}, ${options?.referenceId ?? null}, ${options?.note ?? null},
199
+ ${stamp()})`);
200
+ }
201
+ async function readProductTerms(productId) {
202
+ const result = await db.query(sql `select taxonomy, term_id from ${productTerms}
203
+ where product_id = ${productId} order by taxonomy asc, created_at asc`);
204
+ return result.rows.map((row) => ({
205
+ taxonomy: toText(row.taxonomy, 'productTerm.taxonomy'),
206
+ termId: toText(row.term_id, 'productTerm.term_id'),
207
+ }));
208
+ }
100
209
  async function loadVariant(id, executor = db) {
101
210
  const result = await executor.query(sql `select * from ${variants} where id = ${id}`);
102
211
  const row = result.rows[0];
@@ -132,7 +241,7 @@ export function createCatalogStore(db, now = Date.now) {
132
241
  where id = ${variant.id} and on_hand >= ${quantity}`);
133
242
  return result.rowsAffected > 0;
134
243
  }
135
- async function takeStock(requests, tx) {
244
+ async function takeStock(requests, tx, options) {
136
245
  const wanted = coalesce(requests);
137
246
  if (wanted.length === 0)
138
247
  return { kind: 'taken' };
@@ -150,7 +259,14 @@ export function createCatalogStore(db, now = Date.now) {
150
259
  requested: request.quantity,
151
260
  available: Math.max(0, variant.onHand),
152
261
  });
262
+ continue;
153
263
  }
264
+ // Recorded inside the same transaction as the UPDATE above: a later
265
+ // shortfall in this same basket throws below, which rolls this row
266
+ // back with everything else — the history never shows a sale that
267
+ // did not, in the end, happen.
268
+ const after = await loadVariant(request.variantId, executor);
269
+ await recordMovement(executor, request.variantId, -request.quantity, after.onHand, 'sale', options);
154
270
  }
155
271
  if (shortfalls.length > 0) {
156
272
  // Throwing is what rolls the whole thing back — all lines or none.
@@ -176,11 +292,12 @@ export function createCatalogStore(db, now = Date.now) {
176
292
  const id = newId(now);
177
293
  const at = stamp();
178
294
  const handle = assertHandle(input.handle);
295
+ const imageMediaIds = normalizeImageIds(input.imageMediaIds ?? []);
179
296
  await db.query(sql `
180
- insert into ${products} (id, handle, title, status, content_collection, content_entry_id, created_at, updated_at)
297
+ insert into ${products} (id, handle, title, status, content_collection, content_entry_id, image_media_ids, created_at, updated_at)
181
298
  values (${id}, ${handle}, ${input.title}, ${input.status ?? 'active'},
182
299
  ${input.contentRef?.collection ?? null}, ${input.contentRef?.entryId ?? null},
183
- ${at}, ${at})`);
300
+ ${JSON.stringify(imageMediaIds)}, ${at}, ${at})`);
184
301
  return loadProduct(id);
185
302
  },
186
303
  readProduct,
@@ -193,6 +310,9 @@ export function createCatalogStore(db, now = Date.now) {
193
310
  const current = await loadProduct(id);
194
311
  const handle = input.handle === undefined ? current.handle : assertHandle(input.handle);
195
312
  const ref = input.contentRef === undefined ? current.contentRef : input.contentRef;
313
+ const imageMediaIds = input.imageMediaIds === undefined
314
+ ? current.imageMediaIds
315
+ : normalizeImageIds(input.imageMediaIds);
196
316
  await db.query(sql `
197
317
  update ${products}
198
318
  set handle = ${handle},
@@ -200,6 +320,7 @@ export function createCatalogStore(db, now = Date.now) {
200
320
  status = ${input.status ?? current.status},
201
321
  content_collection = ${ref?.collection ?? null},
202
322
  content_entry_id = ${ref?.entryId ?? null},
323
+ image_media_ids = ${JSON.stringify(imageMediaIds)},
203
324
  updated_at = ${stamp()}
204
325
  where id = ${id}`);
205
326
  return loadProduct(id);
@@ -212,6 +333,7 @@ export function createCatalogStore(db, now = Date.now) {
212
333
  deleteProduct: async (id) => {
213
334
  await db.transaction(async (tx) => {
214
335
  await tx.query(sql `delete from ${variants} where product_id = ${id}`);
336
+ await tx.query(sql `delete from ${productTerms} where product_id = ${id}`);
215
337
  await tx.query(sql `delete from ${products} where id = ${id}`);
216
338
  });
217
339
  },
@@ -229,7 +351,12 @@ export function createCatalogStore(db, now = Date.now) {
229
351
  statement =
230
352
  index === 0 ? sql `${statement} where ${condition}` : sql `${statement} and ${condition}`;
231
353
  }
232
- statement = sql `${statement} order by created_at desc, id desc`;
354
+ // `id` breaks a tie on the sort column deterministically — the same
355
+ // reason the original `created_at desc, id desc` default already did.
356
+ const column = identifier(options?.sort === 'title' ? 'title' : options?.sort === 'handle' ? 'handle' : 'created_at', d);
357
+ const direction = unsafeRaw(options?.direction === 'asc' ? 'asc' : 'desc');
358
+ const idColumn = identifier('id', d);
359
+ statement = sql `${statement} order by ${column} ${direction}, ${idColumn} ${direction}`;
233
360
  // `limit()` inlines the count: MySQL prepared statements reject a
234
361
  // placeholder there, and the helper validates it so inlining is safe.
235
362
  statement = sql `${statement} limit ${limit(options?.limit ?? 100)} offset ${limit(options?.offset ?? 0)}`;
@@ -263,14 +390,31 @@ export function createCatalogStore(db, now = Date.now) {
263
390
  hint: 'Use allowBackorder if this variant should sell past zero.',
264
391
  });
265
392
  }
393
+ const lowStockThreshold = assertNullableNonNegativeInt(input.lowStockThreshold ?? null, 'A low-stock threshold');
394
+ const compareAtPriceMinor = input.compareAtPriceMinor === undefined || input.compareAtPriceMinor === null
395
+ ? null
396
+ : assertMinor(input.compareAtPriceMinor, 'A compare-at price');
397
+ const saleStartsAt = assertNullableIsoDate(input.saleStartsAt ?? null, 'A sale start date');
398
+ const saleEndsAt = assertNullableIsoDate(input.saleEndsAt ?? null, 'A sale end date');
399
+ const widthMm = assertNullableNonNegativeInt(input.widthMm ?? null, 'A width');
400
+ const heightMm = assertNullableNonNegativeInt(input.heightMm ?? null, 'A height');
401
+ const depthMm = assertNullableNonNegativeInt(input.depthMm ?? null, 'A depth');
402
+ const imageMediaId = input.imageMediaId === undefined || input.imageMediaId === null
403
+ ? null
404
+ : input.imageMediaId.trim() || null;
266
405
  await db.query(sql `
267
406
  insert into ${variants} (id, product_id, sku, title, price_minor, currency, on_hand,
268
- allow_backorder, weight_grams, tax_category, position, created_at, updated_at)
407
+ allow_backorder, weight_grams, tax_category, position,
408
+ low_stock_threshold, compare_at_price_minor, sale_starts_at, sale_ends_at,
409
+ width_mm, height_mm, depth_mm, image_media_id, created_at, updated_at)
269
410
  values (${id}, ${input.productId}, ${sku}, ${input.title},
270
411
  ${assertMinor(input.priceMinor, 'A variant price')}, ${assertCurrency(input.currency)},
271
412
  ${onHand}, ${fromBool(input.allowBackorder ?? false, d)},
272
413
  ${input.weightGrams ?? 0}, ${input.taxCategory ?? 'standard'},
273
- ${input.position ?? 0}, ${at}, ${at})`);
414
+ ${input.position ?? 0}, ${lowStockThreshold ?? null}, ${compareAtPriceMinor},
415
+ ${saleStartsAt ?? null}, ${saleEndsAt ?? null},
416
+ ${widthMm ?? null}, ${heightMm ?? null}, ${depthMm ?? null}, ${imageMediaId},
417
+ ${at}, ${at})`);
274
418
  return loadVariant(id);
275
419
  },
276
420
  readVariant: async (id) => {
@@ -293,6 +437,34 @@ export function createCatalogStore(db, now = Date.now) {
293
437
  hint: 'A SKU identifies one sellable thing. Pick another.',
294
438
  });
295
439
  }
440
+ const lowStockThreshold = input.lowStockThreshold === undefined
441
+ ? current.lowStockThreshold
442
+ : assertNullableNonNegativeInt(input.lowStockThreshold, 'A low-stock threshold');
443
+ const compareAtPriceMinor = input.compareAtPriceMinor === undefined
444
+ ? current.compareAtPriceMinor
445
+ : input.compareAtPriceMinor === null
446
+ ? null
447
+ : assertMinor(input.compareAtPriceMinor, 'A compare-at price');
448
+ const saleStartsAt = input.saleStartsAt === undefined
449
+ ? current.saleStartsAt
450
+ : assertNullableIsoDate(input.saleStartsAt, 'A sale start date');
451
+ const saleEndsAt = input.saleEndsAt === undefined
452
+ ? current.saleEndsAt
453
+ : assertNullableIsoDate(input.saleEndsAt, 'A sale end date');
454
+ const widthMm = input.widthMm === undefined
455
+ ? current.widthMm
456
+ : assertNullableNonNegativeInt(input.widthMm, 'A width');
457
+ const heightMm = input.heightMm === undefined
458
+ ? current.heightMm
459
+ : assertNullableNonNegativeInt(input.heightMm, 'A height');
460
+ const depthMm = input.depthMm === undefined
461
+ ? current.depthMm
462
+ : assertNullableNonNegativeInt(input.depthMm, 'A depth');
463
+ const imageMediaId = input.imageMediaId === undefined
464
+ ? current.imageMediaId
465
+ : input.imageMediaId === null
466
+ ? null
467
+ : input.imageMediaId.trim() || null;
296
468
  // Stock is deliberately absent from this method. Setting it as one field
297
469
  // among many is how a concurrent sale gets overwritten by a form that
298
470
  // was rendered a minute ago; setStock/restock/takeStock say what they do.
@@ -306,6 +478,14 @@ export function createCatalogStore(db, now = Date.now) {
306
478
  weight_grams = ${input.weightGrams ?? current.weightGrams},
307
479
  tax_category = ${input.taxCategory ?? current.taxCategory},
308
480
  position = ${input.position ?? current.position},
481
+ low_stock_threshold = ${lowStockThreshold ?? null},
482
+ compare_at_price_minor = ${compareAtPriceMinor ?? null},
483
+ sale_starts_at = ${saleStartsAt ?? null},
484
+ sale_ends_at = ${saleEndsAt ?? null},
485
+ width_mm = ${widthMm ?? null},
486
+ height_mm = ${heightMm ?? null},
487
+ depth_mm = ${depthMm ?? null},
488
+ image_media_id = ${imageMediaId},
309
489
  updated_at = ${stamp()}
310
490
  where id = ${id}`);
311
491
  return loadVariant(id);
@@ -317,7 +497,15 @@ export function createCatalogStore(db, now = Date.now) {
317
497
  const result = await db.query(sql `select * from ${variants} where product_id = ${productId} order by position asc, created_at asc, id asc`);
318
498
  return result.rows.map(decodeVariant);
319
499
  },
320
- setStock: async (variantId, onHand) => {
500
+ listLowStock: async () => {
501
+ const thresholdColumn = identifier('low_stock_threshold', d);
502
+ const result = await db.query(sql `
503
+ select * from ${variants}
504
+ where ${thresholdColumn} is not null and on_hand <= ${thresholdColumn}
505
+ order by on_hand asc, id asc`);
506
+ return result.rows.map(decodeVariant);
507
+ },
508
+ setStock: async (variantId, onHand, options) => {
321
509
  if (!Number.isInteger(onHand) || onHand < 0) {
322
510
  throw new CogentaError({
323
511
  code: 'COMMERCE_QUANTITY_INVALID',
@@ -325,17 +513,23 @@ export function createCatalogStore(db, now = Date.now) {
325
513
  hint: 'A stock take sets what is on the shelf. It is never negative.',
326
514
  });
327
515
  }
328
- await loadVariant(variantId);
516
+ const current = await loadVariant(variantId);
329
517
  await db.query(sql `update ${variants} set on_hand = ${onHand}, updated_at = ${stamp()} where id = ${variantId}`);
518
+ const delta = onHand - current.onHand;
519
+ if (delta !== 0) {
520
+ await recordMovement(db, variantId, delta, onHand, 'stock_take', options);
521
+ }
330
522
  return loadVariant(variantId);
331
523
  },
332
- restock: async (requests, tx) => {
524
+ restock: async (requests, tx, options) => {
333
525
  const wanted = coalesce(requests);
334
526
  if (wanted.length === 0)
335
527
  return;
336
528
  const run = async (executor) => {
337
529
  for (const request of [...wanted].sort((a, b) => a.variantId.localeCompare(b.variantId))) {
338
530
  await executor.query(sql `update ${variants} set on_hand = on_hand + ${request.quantity}, updated_at = ${stamp()} where id = ${request.variantId}`);
531
+ const after = await loadVariant(request.variantId, executor);
532
+ await recordMovement(executor, request.variantId, request.quantity, after.onHand, 'restock', options);
339
533
  }
340
534
  };
341
535
  if (tx === undefined)
@@ -344,6 +538,39 @@ export function createCatalogStore(db, now = Date.now) {
344
538
  await run(tx);
345
539
  },
346
540
  takeStock,
541
+ listStockMovements: async (variantId) => {
542
+ const result = await db.query(sql `select * from ${stockMovements} where variant_id = ${variantId} order by created_at desc, id desc`);
543
+ return result.rows.map(decodeStockMovement);
544
+ },
545
+ listProductTerms: readProductTerms,
546
+ setProductTerms: async (productId, taxonomy, termIds) => {
547
+ await loadProduct(productId);
548
+ const trimmedTaxonomy = taxonomy.trim();
549
+ if (trimmedTaxonomy === '') {
550
+ throw new CogentaError({
551
+ code: 'COMMERCE_PRODUCT_INVALID',
552
+ message: 'A taxonomy name is required to classify a product.',
553
+ hint: 'Name the taxonomy this set of terms belongs to.',
554
+ });
555
+ }
556
+ const uniqueTermIds = [...new Set(termIds.map((termId) => termId.trim()).filter(Boolean))];
557
+ await db.transaction(async (tx) => {
558
+ await tx.query(sql `delete from ${productTerms} where product_id = ${productId} and taxonomy = ${trimmedTaxonomy}`);
559
+ for (const termId of uniqueTermIds) {
560
+ const id = newId(now);
561
+ await tx.query(sql `
562
+ insert into ${productTerms} (id, product_id, taxonomy, term_id, created_at)
563
+ values (${id}, ${productId}, ${trimmedTaxonomy}, ${termId}, ${stamp()})`);
564
+ }
565
+ });
566
+ return readProductTerms(productId);
567
+ },
568
+ readProductByContentRef: async (collection, entryId) => {
569
+ const result = await db.query(sql `select * from ${products}
570
+ where content_collection = ${collection} and content_entry_id = ${entryId}`);
571
+ const row = result.rows[0];
572
+ return row === undefined ? null : decodeProduct(row);
573
+ },
347
574
  };
348
575
  }
349
576
  /** Internal. Rolls a partial reservation back by unwinding the transaction. */
@@ -1 +1 @@
1
- {"version":3,"file":"store.js","sourceRoot":"","sources":["../../src/catalog/store.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"store.js","sourceRoot":"","sources":["../../src/catalog/store.ts"],"names":[],"mappings":"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"}
@@ -23,6 +23,13 @@ export interface Product {
23
23
  readonly title: string;
24
24
  readonly status: ProductStatus;
25
25
  readonly contentRef: ContentRef | null;
26
+ /** Media library ids, in display order — the first is the cover shown in
27
+ * admin lists and order lines. Direct on the commercial record rather than
28
+ * only reachable through `contentRef`: a product with no linked entry (most
29
+ * of them, day one) still needs a photo to be sellable at all. Opaque ids,
30
+ * same as `contentRef` — this package does not depend on the media store
31
+ * and never validates that one exists, only that the admin's own picker did. */
32
+ readonly imageMediaIds: readonly string[];
26
33
  readonly createdAt: string;
27
34
  readonly updatedAt: string;
28
35
  }
@@ -39,6 +46,26 @@ export interface Variant {
39
46
  /** Names a tax category, matched by the tax rules. `standard` by default. */
40
47
  readonly taxCategory: string;
41
48
  readonly position: number;
49
+ /** Below this count (inclusive), `CatalogStore.listLowStock` reports the
50
+ * variant. `null` means "not watched" — never "watched at zero" (fiche 51
51
+ * task 4). */
52
+ readonly lowStockThreshold: number | null;
53
+ /** The "was" price, shown struck through next to `priceMinor`. `null` means
54
+ * no promotion is running (fiche 51 task 5). */
55
+ readonly compareAtPriceMinor: number | null;
56
+ /** The window `compareAtPriceMinor` applies in. Either may be `null` alone —
57
+ * an open start or an open end — but a promotion needs `compareAtPriceMinor`
58
+ * set to mean anything; see `isOnSale`. */
59
+ readonly saleStartsAt: string | null;
60
+ readonly saleEndsAt: string | null;
61
+ /** Millimetres. `null` when not measured, same convention as the price fields above. */
62
+ readonly widthMm: number | null;
63
+ readonly heightMm: number | null;
64
+ readonly depthMm: number | null;
65
+ /** A single media library id, or `null` — one photo per variant (a colour,
66
+ * a size), same convention as the product's own gallery above but never a
67
+ * list: a variant is one sellable thing, not a set to browse. */
68
+ readonly imageMediaId: string | null;
42
69
  readonly createdAt: string;
43
70
  readonly updatedAt: string;
44
71
  }
@@ -47,12 +74,14 @@ export interface CreateProductInput {
47
74
  readonly title: string;
48
75
  readonly status?: ProductStatus;
49
76
  readonly contentRef?: ContentRef | null;
77
+ readonly imageMediaIds?: readonly string[];
50
78
  }
51
79
  export interface UpdateProductInput {
52
80
  readonly handle?: string;
53
81
  readonly title?: string;
54
82
  readonly status?: ProductStatus;
55
83
  readonly contentRef?: ContentRef | null;
84
+ readonly imageMediaIds?: readonly string[];
56
85
  }
57
86
  export interface CreateVariantInput {
58
87
  readonly productId: string;
@@ -65,6 +94,14 @@ export interface CreateVariantInput {
65
94
  readonly weightGrams?: number;
66
95
  readonly taxCategory?: string;
67
96
  readonly position?: number;
97
+ readonly lowStockThreshold?: number | null;
98
+ readonly compareAtPriceMinor?: number | null;
99
+ readonly saleStartsAt?: string | null;
100
+ readonly saleEndsAt?: string | null;
101
+ readonly widthMm?: number | null;
102
+ readonly heightMm?: number | null;
103
+ readonly depthMm?: number | null;
104
+ readonly imageMediaId?: string | null;
68
105
  }
69
106
  export interface UpdateVariantInput {
70
107
  readonly sku?: string;
@@ -75,6 +112,52 @@ export interface UpdateVariantInput {
75
112
  readonly weightGrams?: number;
76
113
  readonly taxCategory?: string;
77
114
  readonly position?: number;
115
+ readonly lowStockThreshold?: number | null;
116
+ readonly compareAtPriceMinor?: number | null;
117
+ readonly saleStartsAt?: string | null;
118
+ readonly saleEndsAt?: string | null;
119
+ readonly widthMm?: number | null;
120
+ readonly heightMm?: number | null;
121
+ readonly depthMm?: number | null;
122
+ readonly imageMediaId?: string | null;
123
+ }
124
+ /** One classification of a product against a term of a taxonomy the site
125
+ * declares (ADR-0022) — never a foreign key, for the reason `tables.ts`'s
126
+ * `productTerms` comment gives. */
127
+ export interface ProductTerm {
128
+ readonly taxonomy: string;
129
+ readonly termId: string;
130
+ }
131
+ /** Why a stock movement happened. `manual` covers a correction typed directly
132
+ * into the admin — anything that is not a sale, a restock or a stock take. */
133
+ export declare const STOCK_MOVEMENT_REASONS: readonly ['sale', 'restock', 'stock_take', 'manual'];
134
+ export type StockMovementReason = (typeof STOCK_MOVEMENT_REASONS)[number];
135
+ /** What every stock-moving method (`setStock`/`restock`/`takeStock`) records
136
+ * beyond the movement itself — optional everywhere, since none of this
137
+ * package's own callers (an order placing or cancelling) currently supply it,
138
+ * and their movements are still recorded, just with `actorId`/`referenceId`
139
+ * left `null`. */
140
+ export interface StockMovementOptions {
141
+ readonly actorId?: string | null;
142
+ readonly referenceId?: string | null;
143
+ readonly note?: string | null;
144
+ }
145
+ /** One row of a variant's append-only stock history (fiche 51 task 4). Never
146
+ * updated or deleted after it is written — a correction is a further row,
147
+ * never an edit to this one. */
148
+ export interface StockMovement {
149
+ readonly id: string;
150
+ readonly variantId: string;
151
+ /** Positive for stock added, negative for stock taken. */
152
+ readonly delta: number;
153
+ /** What `onHand` became right after this movement. */
154
+ readonly balanceAfter: number;
155
+ readonly reason: StockMovementReason;
156
+ readonly actorId: string | null;
157
+ /** An order id, most often — `null` when the movement has no such origin (a stock take). */
158
+ readonly referenceId: string | null;
159
+ readonly note: string | null;
160
+ readonly createdAt: string;
78
161
  }
79
162
  /** What one reservation asked for. */
80
163
  export interface StockRequest {
@@ -92,4 +175,13 @@ export interface StockShortfall {
92
175
  readonly requested: number;
93
176
  readonly available: number;
94
177
  }
178
+ /**
179
+ * Whether a variant's promotion (fiche 51 task 5) applies right now.
180
+ *
181
+ * `compareAtPriceMinor` is what makes a promotion exist at all — a schedule
182
+ * with no "was" price to show has nothing to display. An open start or end
183
+ * means "always", not "never": a sale with only an end date is already
184
+ * running, and one with only a start date has no announced finish.
185
+ */
186
+ export declare function isOnSale(variant: Pick<Variant, 'compareAtPriceMinor' | 'saleStartsAt' | 'saleEndsAt'>, now?: Date): boolean;
95
187
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/catalog/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/catalog/types.ts"],"names":[],"mappings":"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"}