@flowselections/floriday-verkoop-module 1.0.41 → 1.0.43

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 (69) hide show
  1. package/dist-lib/components/verkoop/SalesOrdersTable.d.ts +5 -2
  2. package/dist-lib/components/verkoop/SalesOrdersTable.d.ts.map +1 -1
  3. package/dist-lib/components/verkoop/SalesOrdersTable.js +27 -13
  4. package/dist-lib/components/verkoop/VerkoopOrdersPage.d.ts.map +1 -1
  5. package/dist-lib/components/verkoop/VerkoopOrdersPage.js +141 -27
  6. package/dist-lib/integrations/supabase/auth-middleware.d.ts +1428 -172
  7. package/dist-lib/integrations/supabase/auth-middleware.d.ts.map +1 -1
  8. package/dist-lib/integrations/supabase/client.d.ts +1428 -172
  9. package/dist-lib/integrations/supabase/client.d.ts.map +1 -1
  10. package/dist-lib/integrations/supabase/client.server.d.ts +1428 -172
  11. package/dist-lib/integrations/supabase/client.server.d.ts.map +1 -1
  12. package/dist-lib/integrations/supabase/types.d.ts +1453 -170
  13. package/dist-lib/integrations/supabase/types.d.ts.map +1 -1
  14. package/dist-lib/integrations/supabase/types.js +3 -0
  15. package/dist-lib/lib/cart-lock.functions.d.ts +1428 -172
  16. package/dist-lib/lib/cart-lock.functions.d.ts.map +1 -1
  17. package/dist-lib/lib/cart-planning-settings.functions.d.ts +15224 -1408
  18. package/dist-lib/lib/cart-planning-settings.functions.d.ts.map +1 -1
  19. package/dist-lib/lib/cart-replan.functions.d.ts +4152 -384
  20. package/dist-lib/lib/cart-replan.functions.d.ts.map +1 -1
  21. package/dist-lib/lib/create-order.functions.d.ts +65255 -1978
  22. package/dist-lib/lib/create-order.functions.d.ts.map +1 -1
  23. package/dist-lib/lib/create-order.functions.js +48 -1
  24. package/dist-lib/lib/floriday-auto-fulfillment.functions.d.ts +4152 -384
  25. package/dist-lib/lib/floriday-auto-fulfillment.functions.d.ts.map +1 -1
  26. package/dist-lib/lib/floriday-logistic-labels.functions.d.ts +1428 -172
  27. package/dist-lib/lib/floriday-logistic-labels.functions.d.ts.map +1 -1
  28. package/dist-lib/lib/floriday-mirror.functions.d.ts +1428 -172
  29. package/dist-lib/lib/floriday-mirror.functions.d.ts.map +1 -1
  30. package/dist-lib/lib/floriday-mirror.functions.js +6 -1
  31. package/dist-lib/lib/floriday-public.functions.d.ts +9688 -896
  32. package/dist-lib/lib/floriday-public.functions.d.ts.map +1 -1
  33. package/dist-lib/lib/floriday-writes.functions.d.ts +6920 -640
  34. package/dist-lib/lib/floriday-writes.functions.d.ts.map +1 -1
  35. package/dist-lib/lib/invoice-timing.functions.d.ts +5536 -512
  36. package/dist-lib/lib/invoice-timing.functions.d.ts.map +1 -1
  37. package/dist-lib/lib/invoice-timing.server.d.ts.map +1 -1
  38. package/dist-lib/lib/invoice-timing.server.js +1 -0
  39. package/dist-lib/lib/load-carriers.functions.d.ts +1428 -172
  40. package/dist-lib/lib/load-carriers.functions.d.ts.map +1 -1
  41. package/dist-lib/lib/logistics-engine.functions.d.ts +6920 -640
  42. package/dist-lib/lib/logistics-engine.functions.d.ts.map +1 -1
  43. package/dist-lib/lib/logistics-stock.functions.d.ts +2768 -256
  44. package/dist-lib/lib/logistics-stock.functions.d.ts.map +1 -1
  45. package/dist-lib/lib/order-addresses.functions.d.ts +1428 -172
  46. package/dist-lib/lib/order-addresses.functions.d.ts.map +1 -1
  47. package/dist-lib/lib/order-buffers.functions.d.ts +4152 -384
  48. package/dist-lib/lib/order-buffers.functions.d.ts.map +1 -1
  49. package/dist-lib/lib/order-cancel.server.d.ts +24 -0
  50. package/dist-lib/lib/order-cancel.server.d.ts.map +1 -0
  51. package/dist-lib/lib/order-cancel.server.js +130 -0
  52. package/dist-lib/lib/order-carrier.functions.d.ts +2768 -256
  53. package/dist-lib/lib/order-carrier.functions.d.ts.map +1 -1
  54. package/dist-lib/lib/order-pickup.functions.d.ts +2768 -256
  55. package/dist-lib/lib/order-pickup.functions.d.ts.map +1 -1
  56. package/dist-lib/lib/order-shipments.functions.d.ts +5536 -512
  57. package/dist-lib/lib/order-shipments.functions.d.ts.map +1 -1
  58. package/dist-lib/lib/salesorders-list.functions.d.ts +1428 -172
  59. package/dist-lib/lib/salesorders-list.functions.d.ts.map +1 -1
  60. package/dist-lib/lib/salesorders-list.server.d.ts.map +1 -1
  61. package/dist-lib/lib/salesorders-list.server.js +4 -60
  62. package/dist-lib/lib/salesorders-mapping.d.ts +6 -0
  63. package/dist-lib/lib/salesorders-mapping.d.ts.map +1 -1
  64. package/dist-lib/lib/salesorders-mapping.js +17 -0
  65. package/dist-lib/lib/salesorders.functions.d.ts +6920 -640
  66. package/dist-lib/lib/salesorders.functions.d.ts.map +1 -1
  67. package/dist-lib/lib/tradeitems.functions.d.ts +1428 -172
  68. package/dist-lib/lib/tradeitems.functions.d.ts.map +1 -1
  69. package/package.json +1 -1
@@ -0,0 +1,24 @@
1
+ export declare const CANCELLED_STATUS = "geannuleerd";
2
+ /**
3
+ * Draait alle voorraadmutaties van een order terug en logt reversal-regels.
4
+ * Retourneert het aantal geraakte voorraadsleutels en logregels.
5
+ */
6
+ export declare function reverseOrderStockMutations(orderId: string, opts: {
7
+ orderSource?: string | null;
8
+ userId?: string | null;
9
+ reason: string;
10
+ }): Promise<{
11
+ reversedKeys: number;
12
+ reversalEntries: number;
13
+ }>;
14
+ /** Annuleert één lokale order: voorraad terug, uit planning, status geannuleerd. */
15
+ export declare function cancelLocalOrderInternal(input: {
16
+ orderId: string;
17
+ reason?: string | null;
18
+ userId?: string | null;
19
+ }): Promise<{
20
+ ok: true;
21
+ alreadyCancelled: boolean;
22
+ reversedKeys: number;
23
+ }>;
24
+ //# sourceMappingURL=order-cancel.server.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"order-cancel.server.d.ts","sourceRoot":"","sources":["../../src/lib/order-cancel.server.ts"],"names":[],"mappings":"AAQA,eAAO,MAAM,gBAAgB,gBAAgB,CAAC;AAE9C;;;GAGG;AACH,wBAAsB,0BAA0B,CAC9C,OAAO,EAAE,MAAM,EACf,IAAI,EAAE;IAAE,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GAC5E,OAAO,CAAC;IAAE,YAAY,EAAE,MAAM,CAAC;IAAC,eAAe,EAAE,MAAM,CAAA;CAAE,CAAC,CAsE5D;AAED,oFAAoF;AACpF,wBAAsB,wBAAwB,CAAC,KAAK,EAAE;IACpD,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACxB,GAAG,OAAO,CAAC;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,gBAAgB,EAAE,OAAO,CAAC;IAAC,YAAY,EAAE,MAAM,CAAA;CAAE,CAAC,CAqDzE"}
@@ -0,0 +1,130 @@
1
+ // Server-only helpers voor het annuleren van een lokale bestelling.
2
+ //
3
+ // Annuleren = order bewaren, maar uit de afhandeling halen:
4
+ // - alle voorraadmutaties terugdraaien (fysiek + gereserveerd),
5
+ // - status op `geannuleerd` met tijdstip en reden,
6
+ // - los uit de buffer, karplanning en replan-queue,
7
+ // - `invoice_due_at` leegmaken zodat automatische facturatie hem niet oppakt.
8
+ export const CANCELLED_STATUS = "geannuleerd";
9
+ /**
10
+ * Draait alle voorraadmutaties van een order terug en logt reversal-regels.
11
+ * Retourneert het aantal geraakte voorraadsleutels en logregels.
12
+ */
13
+ export async function reverseOrderStockMutations(orderId, opts) {
14
+ const { supabaseAdmin } = await import("../integrations/supabase/client.server");
15
+ const { data: mutations, error: mErr } = await supabaseAdmin
16
+ .from("stock_mutation_log")
17
+ .select("trade_item_key, qty_delta, physical_before, physical_after, reserved_before, reserved_after, mutation_type")
18
+ .eq("order_id", orderId);
19
+ if (mErr)
20
+ throw new Error(`Voorraadmutaties ophalen faalde: ${mErr.message}`);
21
+ const perKey = new Map();
22
+ for (const m of mutations ?? []) {
23
+ const key = m.trade_item_key;
24
+ if (!key)
25
+ continue;
26
+ const pd = Number(m.physical_after ?? 0) - Number(m.physical_before ?? 0);
27
+ const rd = Number(m.reserved_after ?? 0) - Number(m.reserved_before ?? 0);
28
+ const qd = Number(m.qty_delta ?? 0);
29
+ const cur = perKey.get(key) ?? { physicalDelta: 0, reservedDelta: 0, qtyDelta: 0 };
30
+ cur.physicalDelta += pd;
31
+ cur.reservedDelta += rd;
32
+ cur.qtyDelta += qd;
33
+ perKey.set(key, cur);
34
+ }
35
+ const reversalRows = [];
36
+ for (const [key, agg] of perKey.entries()) {
37
+ if (agg.physicalDelta === 0 && agg.reservedDelta === 0)
38
+ continue;
39
+ const { data: stockRows } = await supabaseAdmin
40
+ .from("trade_item_stock")
41
+ .select("id, connection_id, physical_stock, reserved_stock")
42
+ .eq("trade_item_key", key);
43
+ for (const s of stockRows ?? []) {
44
+ const physBefore = Number(s.physical_stock ?? 0);
45
+ const resvBefore = Number(s.reserved_stock ?? 0);
46
+ const physAfter = physBefore - agg.physicalDelta;
47
+ const resvAfter = Math.max(0, resvBefore - agg.reservedDelta);
48
+ const { error: uErr } = await supabaseAdmin.from("trade_item_stock")
49
+ .update({
50
+ physical_stock: physAfter,
51
+ reserved_stock: resvAfter,
52
+ updated_at: new Date().toISOString(),
53
+ })
54
+ .eq("id", s.id);
55
+ if (uErr)
56
+ throw new Error(`Voorraad terugdraaien faalde: ${uErr.message}`);
57
+ reversalRows.push({
58
+ trade_item_key: key,
59
+ connection_id: s.connection_id,
60
+ order_id: orderId,
61
+ order_source: opts.orderSource || "manual",
62
+ mutation_type: "reversal",
63
+ qty_delta: -agg.qtyDelta,
64
+ physical_before: physBefore,
65
+ physical_after: physAfter,
66
+ reserved_before: resvBefore,
67
+ reserved_after: resvAfter,
68
+ reason: opts.reason,
69
+ created_by: opts.userId ?? null,
70
+ });
71
+ }
72
+ }
73
+ if (reversalRows.length > 0) {
74
+ const { error: lErr } = await supabaseAdmin.from("stock_mutation_log").insert(reversalRows);
75
+ if (lErr)
76
+ throw new Error(`Reversal-log schrijven faalde: ${lErr.message}`);
77
+ }
78
+ return { reversedKeys: perKey.size, reversalEntries: reversalRows.length };
79
+ }
80
+ /** Annuleert één lokale order: voorraad terug, uit planning, status geannuleerd. */
81
+ export async function cancelLocalOrderInternal(input) {
82
+ const { supabaseAdmin } = await import("../integrations/supabase/client.server");
83
+ const { data: order, error: oErr } = await supabaseAdmin
84
+ .from("orders")
85
+ .select("id, status, custom_fields, order_source, floriday_sales_order_id")
86
+ .eq("id", input.orderId)
87
+ .maybeSingle();
88
+ if (oErr)
89
+ throw new Error(oErr.message);
90
+ if (!order)
91
+ throw new Error("Bestelling niet gevonden");
92
+ const o = order;
93
+ const cf = (o.custom_fields ?? {});
94
+ const src = String(cf?.source ?? o.order_source ?? "").toLowerCase();
95
+ if (src === "floriday" || src === "fo" || o.floriday_sales_order_id) {
96
+ throw new Error("FO-orders kunnen hier niet geannuleerd worden. Annuleer deze in Floriday.");
97
+ }
98
+ if (String(o.status ?? "").toLowerCase() === CANCELLED_STATUS) {
99
+ return { ok: true, alreadyCancelled: true, reversedKeys: 0 };
100
+ }
101
+ const reason = (input.reason ?? "").trim();
102
+ const { reversedKeys } = await reverseOrderStockMutations(input.orderId, {
103
+ orderSource: src,
104
+ userId: input.userId ?? null,
105
+ reason: reason ? `Bestelling geannuleerd — ${reason}` : "Bestelling geannuleerd",
106
+ });
107
+ // Uit de planning halen: karren en replan-queue opruimen.
108
+ await supabaseAdmin.from("order_carts").delete().eq("order_id", input.orderId);
109
+ await supabaseAdmin.from("cart_replan_queue").delete().eq("order_id", input.orderId);
110
+ const { error: uErr } = await supabaseAdmin.from("orders")
111
+ .update({
112
+ status: CANCELLED_STATUS,
113
+ cancelled_at: new Date().toISOString(),
114
+ cancel_reason: reason || null,
115
+ invoice_due_at: null,
116
+ buffer_id: null,
117
+ })
118
+ .eq("id", input.orderId);
119
+ if (uErr)
120
+ throw new Error(`Annuleren faalde: ${uErr.message}`);
121
+ // Engine informeren zodat buffering/transport de order laat vallen.
122
+ try {
123
+ const { notifyEngineOrder } = await import("./logistics-engine.server");
124
+ await notifyEngineOrder(input.orderId, "order.changed");
125
+ }
126
+ catch (err) {
127
+ console.warn("[cancelLocalOrder] engine-event faalde:", err);
128
+ }
129
+ return { ok: true, alreadyCancelled: false, reversedKeys };
130
+ }