@flowselections/floriday-verkoop-module 1.0.86 → 1.0.90

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 (127) hide show
  1. package/dist-lib/components/verkoop/CreateOrderPage.js +1 -1
  2. package/dist-lib/components/verkoop/DiagnoseConnectionDialog.js +1 -1
  3. package/dist-lib/components/verkoop/EditLocalOrderDialog.js +3 -3
  4. package/dist-lib/components/verkoop/OrderControlStatusCard.js +1 -1
  5. package/dist-lib/components/verkoop/OrderKarindelingCard.js +2 -2
  6. package/dist-lib/components/verkoop/OrderLinePackingCard.js +1 -1
  7. package/dist-lib/components/verkoop/OrderShipmentsCard.js +1 -1
  8. package/dist-lib/components/verkoop/ProductDimensionsSettings.js +1 -1
  9. package/dist-lib/components/verkoop/SalesOrderDetailView.d.ts +1 -1
  10. package/dist-lib/components/verkoop/SalesOrderDetailView.js +12 -12
  11. package/dist-lib/components/verkoop/SalesOrdersFilterPanel.d.ts +1 -1
  12. package/dist-lib/components/verkoop/SalesOrdersFilters.js +1 -1
  13. package/dist-lib/components/verkoop/SalesOrdersTable.d.ts +1 -1
  14. package/dist-lib/components/verkoop/SalesOrdersTable.js +2 -2
  15. package/dist-lib/components/verkoop/StockConsumptionAlertsBanner.js +1 -1
  16. package/dist-lib/components/verkoop/VerkoopOrdersPage.js +15 -15
  17. package/dist-lib/index.d.ts +4 -5
  18. package/dist-lib/index.d.ts.map +1 -1
  19. package/dist-lib/index.js +5 -6
  20. package/dist-lib/integrations/supabase/auth-middleware.d.ts +1 -1
  21. package/dist-lib/integrations/supabase/client.d.ts +1 -1
  22. package/dist-lib/integrations/supabase/client.server.d.ts +1 -1
  23. package/dist-lib/integrations/supabase/types.d.ts +346 -0
  24. package/dist-lib/integrations/supabase/types.d.ts.map +1 -1
  25. package/dist-lib/lib/belading.server.js +1 -1
  26. package/dist-lib/lib/buffer-events.functions.d.ts +1 -1
  27. package/dist-lib/lib/buffer-events.functions.js +1 -1
  28. package/dist-lib/lib/cart-layers.functions.d.ts +4 -4
  29. package/dist-lib/lib/cart-layers.functions.js +2 -2
  30. package/dist-lib/lib/cart-lock.functions.d.ts +1 -1
  31. package/dist-lib/lib/cart-lock.functions.js +2 -2
  32. package/dist-lib/lib/cart-planning-settings.functions.d.ts +11 -11
  33. package/dist-lib/lib/cart-planning-settings.functions.js +1 -1
  34. package/dist-lib/lib/cart-replan.functions.d.ts +4 -4
  35. package/dist-lib/lib/cart-replan.functions.js +9 -9
  36. package/dist-lib/lib/create-order.functions.d.ts +18 -18
  37. package/dist-lib/lib/create-order.functions.js +15 -15
  38. package/dist-lib/lib/cron/index.d.ts +3 -3
  39. package/dist-lib/lib/cron/index.js +3 -3
  40. package/dist-lib/lib/cron/invoice-due.js +1 -1
  41. package/dist-lib/lib/cron/sync-salesorders.js +2 -2
  42. package/dist-lib/lib/cron/sync-tradeitems.js +1 -1
  43. package/dist-lib/lib/engine-block-alerts.server.js +4 -4
  44. package/dist-lib/lib/expand-group-order-items.d.ts +1 -1
  45. package/dist-lib/lib/floriday-change-diff.check.js +2 -2
  46. package/dist-lib/lib/floriday-gateway.server.d.ts +1 -1
  47. package/dist-lib/lib/floriday-gateway.server.js +2 -2
  48. package/dist-lib/lib/floriday-logistic-labels.functions.d.ts +2 -2
  49. package/dist-lib/lib/floriday-logistic-labels.functions.js +5 -5
  50. package/dist-lib/lib/floriday-mirror.functions.d.ts +1 -1
  51. package/dist-lib/lib/floriday-mirror.functions.d.ts.map +1 -1
  52. package/dist-lib/lib/floriday-mirror.functions.js +19 -12
  53. package/dist-lib/lib/floriday-public.functions.d.ts +7 -7
  54. package/dist-lib/lib/floriday-public.functions.js +2 -2
  55. package/dist-lib/lib/floriday-status.d.ts +1 -1
  56. package/dist-lib/lib/floriday-status.server.d.ts +1 -1
  57. package/dist-lib/lib/floriday-status.server.js +2 -2
  58. package/dist-lib/lib/floriday-sync.js +1 -1
  59. package/dist-lib/lib/floriday-unlinked-products.js +1 -1
  60. package/dist-lib/lib/floriday-writes.functions.d.ts +3 -3
  61. package/dist-lib/lib/floriday-writes.functions.js +3 -3
  62. package/dist-lib/lib/invoice-timing.functions.d.ts +5 -5
  63. package/dist-lib/lib/invoice-timing.functions.js +8 -8
  64. package/dist-lib/lib/invoice-timing.server.d.ts +8 -3
  65. package/dist-lib/lib/invoice-timing.server.d.ts.map +1 -1
  66. package/dist-lib/lib/invoice-timing.server.js +70 -34
  67. package/dist-lib/lib/load-carriers.functions.d.ts +2 -2
  68. package/dist-lib/lib/load-carriers.functions.js +2 -2
  69. package/dist-lib/lib/load-carriers.server.d.ts +1 -1
  70. package/dist-lib/lib/load-carriers.server.js +1 -1
  71. package/dist-lib/lib/logistics-buffer.server.js +1 -1
  72. package/dist-lib/lib/logistics-engine.functions.d.ts +8 -8
  73. package/dist-lib/lib/logistics-engine.functions.js +6 -6
  74. package/dist-lib/lib/logistics-engine.server.d.ts +1 -1
  75. package/dist-lib/lib/logistics-engine.server.js +4 -4
  76. package/dist-lib/lib/logistics-stock.functions.d.ts +3 -3
  77. package/dist-lib/lib/logistics-stock.functions.js +3 -3
  78. package/dist-lib/lib/order-addresses.functions.d.ts +1 -1
  79. package/dist-lib/lib/order-addresses.functions.js +2 -2
  80. package/dist-lib/lib/order-block-mail.server.js +3 -3
  81. package/dist-lib/lib/order-buffers.functions.d.ts +3 -3
  82. package/dist-lib/lib/order-buffers.functions.js +3 -3
  83. package/dist-lib/lib/order-cancel.server.js +6 -6
  84. package/dist-lib/lib/order-carrier.functions.d.ts +2 -2
  85. package/dist-lib/lib/order-carrier.functions.js +2 -2
  86. package/dist-lib/lib/order-fulfill.functions.d.ts +1 -1
  87. package/dist-lib/lib/order-fulfill.functions.js +3 -3
  88. package/dist-lib/lib/order-item-packing.functions.d.ts +3 -3
  89. package/dist-lib/lib/order-item-packing.functions.js +3 -3
  90. package/dist-lib/lib/order-patch.check.d.ts +2 -0
  91. package/dist-lib/lib/order-patch.check.d.ts.map +1 -0
  92. package/dist-lib/lib/order-patch.check.js +40 -0
  93. package/dist-lib/lib/order-patch.d.ts +18 -0
  94. package/dist-lib/lib/order-patch.d.ts.map +1 -0
  95. package/dist-lib/lib/order-patch.js +105 -0
  96. package/dist-lib/lib/order-pickup.functions.d.ts +2 -2
  97. package/dist-lib/lib/order-pickup.functions.js +3 -3
  98. package/dist-lib/lib/order-shipments.functions.d.ts +4 -4
  99. package/dist-lib/lib/order-shipments.functions.js +6 -6
  100. package/dist-lib/lib/plan-coverage.check.js +1 -1
  101. package/dist-lib/lib/plan-coverage.server.d.ts +1 -1
  102. package/dist-lib/lib/plan-coverage.server.js +1 -1
  103. package/dist-lib/lib/product-dimensions.functions.d.ts +2 -2
  104. package/dist-lib/lib/product-dimensions.functions.js +1 -1
  105. package/dist-lib/lib/salesorders-list.functions.d.ts +5 -5
  106. package/dist-lib/lib/salesorders-list.functions.js +4 -4
  107. package/dist-lib/lib/salesorders-list.server.d.ts +2 -2
  108. package/dist-lib/lib/salesorders-list.server.js +17 -17
  109. package/dist-lib/lib/salesorders-mapping.d.ts +3 -3
  110. package/dist-lib/lib/salesorders-mapping.js +2 -2
  111. package/dist-lib/lib/salesorders.functions.d.ts +7 -7
  112. package/dist-lib/lib/salesorders.functions.js +20 -20
  113. package/dist-lib/lib/stock-consumption-alerts.functions.d.ts +2 -2
  114. package/dist-lib/lib/stock-consumption-alerts.functions.js +1 -1
  115. package/dist-lib/lib/tradeitems.functions.d.ts +1068 -1068
  116. package/dist-lib/lib/tradeitems.functions.js +3 -3
  117. package/dist-lib/lib/useAllowedLoadCarriers.d.ts +1 -1
  118. package/dist-lib/lib/useAllowedLoadCarriers.js +1 -1
  119. package/dist-lib/lib/useBufferEvents.d.ts +1 -1
  120. package/dist-lib/lib/useBufferEvents.js +2 -2
  121. package/dist-lib/lib/useLocalSalesOrderDetailQuery.d.ts +2 -2
  122. package/dist-lib/lib/useLocalSalesOrderDetailQuery.js +2 -2
  123. package/dist-lib/lib/useSalesOrderDetailQuery.d.ts +1 -1
  124. package/dist-lib/lib/useSalesOrderDetailQuery.js +2 -2
  125. package/dist-lib/lib/useSalesOrdersQuery.d.ts +2 -2
  126. package/dist-lib/lib/useSalesOrdersQuery.js +3 -3
  127. package/package.json +2 -2
@@ -9,10 +9,10 @@
9
9
  // De correctie is strikt lokaal: hij wordt NOOIT teruggestuurd als wijziging
10
10
  // van het Floriday-artikel zelf — dat loopt uitsluitend via de voorraad-module.
11
11
  import { createServerFn } from "@tanstack/react-start";
12
- import { productNameForStorage } from "./product-name";
12
+ import { productNameForStorage } from "./product-name.js";
13
13
  import { z } from "zod";
14
- import { requireSupabaseAuth } from "../integrations/supabase/auth-middleware";
15
- import { resolveOrderRow } from "./order-row.server";
14
+ import { requireSupabaseAuth } from "../integrations/supabase/auth-middleware.js";
15
+ import { resolveOrderRow } from "./order-row.server.js";
16
16
  /**
17
17
  * Belading per bestelregel van één order, inclusief de handmatige
18
18
  * "vastgezet"-markering. `orderId` mag een lokale orders.id of een
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=order-patch.check.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"order-patch.check.d.ts","sourceRoot":"","sources":["../../src/lib/order-patch.check.ts"],"names":[],"mappings":""}
@@ -0,0 +1,40 @@
1
+ // Controle zonder testomgeving: `bun src/lib/order-patch.check.ts`.
2
+ import { diffPatch, distinctFilter } from "./order-patch.js";
3
+ let failed = 0;
4
+ const eq = (name, got, want) => {
5
+ const ok = JSON.stringify(got) === JSON.stringify(want);
6
+ if (!ok)
7
+ failed++;
8
+ console.log(`${ok ? "OK " : "FOUT"} ${name}${ok ? "" : ` — kreeg ${JSON.stringify(got)}`}`);
9
+ };
10
+ const row = {
11
+ status: "Nog te picken",
12
+ delivery_date: "2026-10-16",
13
+ invoice_due_at: "2026-10-16T16:00:00+00:00",
14
+ total: "12.50",
15
+ custom_fields: { a: 1, b: { c: 2 } },
16
+ };
17
+ // Niets veranderd → niets opslaan
18
+ eq("alles gelijk → leeg", diffPatch(row, { ...row }), {});
19
+ eq("zelfde moment, andere notatie", diffPatch(row, { invoice_due_at: "2026-10-16T16:00:00.000Z" }), {});
20
+ eq("jsonb andere volgorde", diffPatch(row, { custom_fields: { b: { c: 2 }, a: 1 } }), {});
21
+ eq("bedrag 12.5 = 12.50", diffPatch(row, { total: "12.5" }), {});
22
+ eq("leeg blijft leeg", diffPatch({ invoice_due_at: null }, { invoice_due_at: null }), {});
23
+ // Echte wijziging → wél opslaan
24
+ eq("nieuwe status uit Floriday", diffPatch(row, { status: "geannuleerd" }), { status: "geannuleerd" });
25
+ eq("nieuwe leverdatum", diffPatch(row, { delivery_date: "2026-10-17" }), { delivery_date: "2026-10-17" });
26
+ eq("gewijzigd factuurmoment", diffPatch(row, { invoice_due_at: "2026-10-17T16:00:00.000Z" }), { invoice_due_at: "2026-10-17T16:00:00.000Z" });
27
+ eq("gewijzigde extra gegevens", Object.keys(diffPatch(row, { custom_fields: { a: 2, b: { c: 2 } } })), ["custom_fields"]);
28
+ eq("leeg → gevuld", diffPatch({ invoice_due_at: null }, { invoice_due_at: "2026-10-17T16:00:00.000Z" }), { invoice_due_at: "2026-10-17T16:00:00.000Z" });
29
+ eq("gevuld → leeg", diffPatch(row, { invoice_due_at: null }), { invoice_due_at: null });
30
+ eq("alleen gewijzigd veld mee", Object.keys(diffPatch(row, { status: row.status, total: "13" })), ["total"]);
31
+ // Voorwaarde in de database
32
+ eq("filter naar leeg", distinctFilter({ invoice_due_at: null }), "invoice_due_at.not.is.null");
33
+ eq("filter met waarde", distinctFilter({ status: "Gereed voor facturatie" }), 'status.is.null,status.neq."Gereed voor facturatie"');
34
+ eq("filter jsonb", distinctFilter({ custom_fields: { a: "x,y" } }), 'custom_fields.is.null,custom_fields.neq."{\\"a\\":\\"x,y\\"}"');
35
+ eq("lege patch → geen filter", distinctFilter({}), null);
36
+ if (failed) {
37
+ console.log(`${failed} controle(s) mislukt`);
38
+ process.exit(1);
39
+ }
40
+ console.log("Alle controles geslaagd");
@@ -0,0 +1,18 @@
1
+ export declare function sameJson(a: unknown, b: unknown): boolean;
2
+ export declare function sameValue(key: string, prev: unknown, next: unknown): boolean;
3
+ /** Alleen de velden die echt anders zijn dan de huidige rij. */
4
+ export declare function diffPatch<T extends Record<string, unknown>>(current: Record<string, unknown> | null | undefined, patch: T): Partial<T>;
5
+ /**
6
+ * PostgREST `or`-filter: de rij wordt alleen geraakt als minstens één veld uit
7
+ * de patch in de database anders is (IS DISTINCT FROM). Leeg → null.
8
+ */
9
+ export declare function distinctFilter(patch: Record<string, unknown>): string | null;
10
+ /**
11
+ * Slaat alleen gewijzigde velden op, met de "alleen als anders"-voorwaarde ook
12
+ * in de database. Geeft het aantal echt bijgewerkte rijen (0 of 1).
13
+ */
14
+ export declare function updateOrderIfChanged(supabase: any, orderId: string, current: Record<string, unknown> | null | undefined, patch: Record<string, unknown>): Promise<{
15
+ written: number;
16
+ changed: string[];
17
+ }>;
18
+ //# sourceMappingURL=order-patch.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"order-patch.d.ts","sourceRoot":"","sources":["../../src/lib/order-patch.ts"],"names":[],"mappings":"AAwBA,wBAAgB,QAAQ,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,GAAG,OAAO,CAExD;AAQD,wBAAgB,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,GAAG,OAAO,CAe5E;AAED,gEAAgE;AAChE,wBAAgB,SAAS,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACzD,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,GAAG,SAAS,EACnD,KAAK,EAAE,CAAC,GACP,OAAO,CAAC,CAAC,CAAC,CAQZ;AAMD;;;GAGG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,GAAG,IAAI,CAY5E;AAED;;;GAGG;AACH,wBAAsB,oBAAoB,CACxC,QAAQ,EAAE,GAAG,EACb,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,GAAG,SAAS,EACnD,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC7B,OAAO,CAAC;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,EAAE,CAAA;CAAE,CAAC,CAYjD"}
@@ -0,0 +1,105 @@
1
+ // Alleen opslaan wat echt verandert. Elke opslag op `orders` laat triggers van
2
+ // andere modules afgaan (planning, factuurkoppelingen, updated_at), dus een
3
+ // gelijke waarde terugschrijven mag nooit.
4
+ //
5
+ // 1) diffPatch: vergelijking vooraf (jsonb op inhoud, tijdstippen als moment).
6
+ // 2) distinctFilter: dezelfde voorwaarde ook in de database (IS DISTINCT FROM),
7
+ // zodat twee rondes tegelijk niet allebei schrijven.
8
+ const DATE_KEYS = new Set(["delivery_date", "order_date"]);
9
+ const NUMERIC_KEYS = new Set(["total"]);
10
+ function canon(v) {
11
+ if (Array.isArray(v))
12
+ return v.map(canon);
13
+ if (v && typeof v === "object") {
14
+ const out = {};
15
+ for (const k of Object.keys(v).sort()) {
16
+ const x = v[k];
17
+ if (x !== undefined)
18
+ out[k] = canon(x);
19
+ }
20
+ return out;
21
+ }
22
+ return v;
23
+ }
24
+ export function sameJson(a, b) {
25
+ return JSON.stringify(canon(a ?? null)) === JSON.stringify(canon(b ?? null));
26
+ }
27
+ function asInstant(v) {
28
+ if (v === null || v === undefined || v === "")
29
+ return null;
30
+ const t = new Date(String(v)).getTime();
31
+ return Number.isNaN(t) ? null : t;
32
+ }
33
+ export function sameValue(key, prev, next) {
34
+ const pNull = prev === null || prev === undefined;
35
+ const nNull = next === null || next === undefined;
36
+ if (pNull || nNull)
37
+ return pNull && nNull;
38
+ if (typeof next === "object" || typeof prev === "object")
39
+ return sameJson(prev, next);
40
+ if (NUMERIC_KEYS.has(key))
41
+ return Number(prev) === Number(next);
42
+ if (DATE_KEYS.has(key))
43
+ return String(prev).slice(0, 10) === String(next).slice(0, 10);
44
+ const ps = String(prev);
45
+ const ns = String(next);
46
+ if (ps === ns)
47
+ return true;
48
+ // Tijdstippen in een andere notatie/tijdzone: zelfde moment = gelijk.
49
+ if (/^\d{4}-\d{2}-\d{2}T/.test(ps) && /^\d{4}-\d{2}-\d{2}T/.test(ns)) {
50
+ return asInstant(ps) === asInstant(ns);
51
+ }
52
+ return false;
53
+ }
54
+ /** Alleen de velden die echt anders zijn dan de huidige rij. */
55
+ export function diffPatch(current, patch) {
56
+ const out = {};
57
+ for (const k of Object.keys(patch)) {
58
+ const next = patch[k];
59
+ if (next === undefined)
60
+ continue;
61
+ if (!sameValue(k, current?.[k], next))
62
+ out[k] = next;
63
+ }
64
+ return out;
65
+ }
66
+ function quote(v) {
67
+ return `"${v.replace(/\\/g, "\\\\").replace(/"/g, '\\"')}"`;
68
+ }
69
+ /**
70
+ * PostgREST `or`-filter: de rij wordt alleen geraakt als minstens één veld uit
71
+ * de patch in de database anders is (IS DISTINCT FROM). Leeg → null.
72
+ */
73
+ export function distinctFilter(patch) {
74
+ const parts = [];
75
+ for (const [k, v] of Object.entries(patch)) {
76
+ if (v === undefined)
77
+ continue;
78
+ if (v === null) {
79
+ parts.push(`${k}.not.is.null`);
80
+ continue;
81
+ }
82
+ const lit = typeof v === "object" ? JSON.stringify(v) : String(v);
83
+ parts.push(`${k}.is.null`, `${k}.neq.${quote(lit)}`);
84
+ }
85
+ return parts.length ? parts.join(",") : null;
86
+ }
87
+ /**
88
+ * Slaat alleen gewijzigde velden op, met de "alleen als anders"-voorwaarde ook
89
+ * in de database. Geeft het aantal echt bijgewerkte rijen (0 of 1).
90
+ */
91
+ export async function updateOrderIfChanged(supabase, orderId, current, patch) {
92
+ const diff = diffPatch(current, patch);
93
+ const changed = Object.keys(diff);
94
+ if (changed.length === 0)
95
+ return { written: 0, changed };
96
+ const filter = distinctFilter(diff);
97
+ const { data, error } = await supabase.from("orders")
98
+ .update(diff)
99
+ .eq("id", orderId)
100
+ .or(filter)
101
+ .select("id");
102
+ if (error)
103
+ throw new Error(error.message);
104
+ return { written: (data ?? []).length, changed };
105
+ }
@@ -10,7 +10,7 @@ export interface PickupMomentOption {
10
10
  }
11
11
  export declare function buildPickupOptions(carrier: any | null, deliveryISO: string | null): PickupMomentOption[];
12
12
  export declare const getOrderPickupMoment: import("@tanstack/start-client-core").OptionalFetcher<readonly [import("@tanstack/start-client-core").FunctionMiddlewareAfterServer<{}, unknown, undefined, {
13
- supabase: import("../integrations/supabase/auth-middleware").AuthedSupabaseClient;
13
+ supabase: import("../integrations/supabase/auth-middleware.js").AuthedSupabaseClient;
14
14
  userId: string;
15
15
  claims: import("@supabase/auth-js").User;
16
16
  }, undefined, undefined, undefined>], (input: unknown) => {
@@ -27,7 +27,7 @@ export declare const getOrderPickupMoment: import("@tanstack/start-client-core")
27
27
  hasCarrier: boolean;
28
28
  }>>;
29
29
  export declare const setOrderPickupMoment: import("@tanstack/start-client-core").OptionalFetcher<readonly [import("@tanstack/start-client-core").FunctionMiddlewareAfterServer<{}, unknown, undefined, {
30
- supabase: import("../integrations/supabase/auth-middleware").AuthedSupabaseClient;
30
+ supabase: import("../integrations/supabase/auth-middleware.js").AuthedSupabaseClient;
31
31
  userId: string;
32
32
  claims: import("@supabase/auth-js").User;
33
33
  }, undefined, undefined, undefined>], (input: unknown) => {
@@ -1,9 +1,9 @@
1
1
  // Ophaalmoment (pickup moment) van een order lezen en wijzigen.
2
2
  import { createServerFn } from "@tanstack/react-start";
3
3
  import { z } from "zod";
4
- import { requireSupabaseAuth } from "../integrations/supabase/auth-middleware";
5
- import { normalizeTime } from "./carrier-availability";
6
- import { assertRowsAffected, resolveOrderRow } from "./order-row.server";
4
+ import { requireSupabaseAuth } from "../integrations/supabase/auth-middleware.js";
5
+ import { normalizeTime } from "./carrier-availability.js";
6
+ import { assertRowsAffected, resolveOrderRow } from "./order-row.server.js";
7
7
  function addDaysISO(iso, n) {
8
8
  const [y, m, d] = iso.split("-").map(Number);
9
9
  const dt = new Date(y, (m ?? 1) - 1, d ?? 1);
@@ -1,5 +1,5 @@
1
1
  export declare const listOrderShipments: import("@tanstack/start-client-core").OptionalFetcher<readonly [import("@tanstack/start-client-core").FunctionMiddlewareAfterServer<{}, unknown, undefined, {
2
- supabase: import("../integrations/supabase/auth-middleware").AuthedSupabaseClient;
2
+ supabase: import("../integrations/supabase/auth-middleware.js").AuthedSupabaseClient;
3
3
  userId: string;
4
4
  claims: import("@supabase/auth-js").User;
5
5
  }, undefined, undefined, undefined>], (input: unknown) => {
@@ -40,7 +40,7 @@ export declare const listOrderShipments: import("@tanstack/start-client-core").O
40
40
  }[];
41
41
  }>>;
42
42
  export declare const createShipment: import("@tanstack/start-client-core").OptionalFetcher<readonly [import("@tanstack/start-client-core").FunctionMiddlewareAfterServer<{}, unknown, undefined, {
43
- supabase: import("../integrations/supabase/auth-middleware").AuthedSupabaseClient;
43
+ supabase: import("../integrations/supabase/auth-middleware.js").AuthedSupabaseClient;
44
44
  userId: string;
45
45
  claims: import("@supabase/auth-js").User;
46
46
  }, undefined, undefined, undefined>], (input: unknown) => {
@@ -60,7 +60,7 @@ export declare const createShipment: import("@tanstack/start-client-core").Optio
60
60
  shipmentId: string;
61
61
  }>>;
62
62
  export declare const markShipmentShipped: import("@tanstack/start-client-core").OptionalFetcher<readonly [import("@tanstack/start-client-core").FunctionMiddlewareAfterServer<{}, unknown, undefined, {
63
- supabase: import("../integrations/supabase/auth-middleware").AuthedSupabaseClient;
63
+ supabase: import("../integrations/supabase/auth-middleware.js").AuthedSupabaseClient;
64
64
  userId: string;
65
65
  claims: import("@supabase/auth-js").User;
66
66
  }, undefined, undefined, undefined>], (input: unknown) => {
@@ -69,7 +69,7 @@ export declare const markShipmentShipped: import("@tanstack/start-client-core").
69
69
  ok: true;
70
70
  }>>;
71
71
  export declare const cancelShipment: import("@tanstack/start-client-core").OptionalFetcher<readonly [import("@tanstack/start-client-core").FunctionMiddlewareAfterServer<{}, unknown, undefined, {
72
- supabase: import("../integrations/supabase/auth-middleware").AuthedSupabaseClient;
72
+ supabase: import("../integrations/supabase/auth-middleware.js").AuthedSupabaseClient;
73
73
  userId: string;
74
74
  claims: import("@supabase/auth-js").User;
75
75
  }, undefined, undefined, undefined>], (input: unknown) => {
@@ -5,10 +5,10 @@
5
5
  // - deleteShipment : annuleert een geplande levering
6
6
  // - markShipmentShipped : boekt voorraad af via RPC (fysiek + gereserveerd)
7
7
  import { createServerFn } from "@tanstack/react-start";
8
- import { productNameForStorage } from "./product-name";
8
+ import { productNameForStorage } from "./product-name.js";
9
9
  import { z } from "zod";
10
- import { requireSupabaseAuth } from "../integrations/supabase/auth-middleware";
11
- import { resolveOrderRow } from "./order-row.server";
10
+ import { requireSupabaseAuth } from "../integrations/supabase/auth-middleware.js";
11
+ import { resolveOrderRow } from "./order-row.server.js";
12
12
  const ShipmentItemInput = z.object({
13
13
  orderItemId: z.string().uuid(),
14
14
  productId: z.string().uuid().nullable().optional(),
@@ -128,7 +128,7 @@ export const createShipment = createServerFn({ method: "POST" })
128
128
  .handler(async ({ data, context }) => {
129
129
  const orderRow = await resolveOrderRow(context.supabase, data.orderId);
130
130
  await assertRemainingCapacity(context.supabase, orderRow.id, data.items.map((i) => ({ orderItemId: i.orderItemId, quantity: i.quantity })));
131
- const { supabaseAdmin } = await import("../integrations/supabase/client.server");
131
+ const { supabaseAdmin } = await import("../integrations/supabase/client.server.js");
132
132
  const { data: shipment, error } = await supabaseAdmin.from("order_shipments")
133
133
  .insert({
134
134
  order_id: orderRow.id,
@@ -160,7 +160,7 @@ export const markShipmentShipped = createServerFn({ method: "POST" })
160
160
  .middleware([requireSupabaseAuth])
161
161
  .inputValidator((input) => z.object({ shipmentId: z.string().uuid() }).parse(input))
162
162
  .handler(async ({ data }) => {
163
- const { supabaseAdmin } = await import("../integrations/supabase/client.server");
163
+ const { supabaseAdmin } = await import("../integrations/supabase/client.server.js");
164
164
  const { error } = await supabaseAdmin.rpc("mark_shipment_shipped", {
165
165
  p_shipment_id: data.shipmentId,
166
166
  });
@@ -183,7 +183,7 @@ export const cancelShipment = createServerFn({ method: "POST" })
183
183
  if (s.status === "shipped") {
184
184
  throw new Error("Reeds verzonden bezorgmomenten kunnen niet worden geannuleerd.");
185
185
  }
186
- const { supabaseAdmin } = await import("../integrations/supabase/client.server");
186
+ const { supabaseAdmin } = await import("../integrations/supabase/client.server.js");
187
187
  const { error } = await supabaseAdmin.from("order_shipments").delete().eq("id", data.shipmentId);
188
188
  if (error)
189
189
  throw new Error(error.message);
@@ -1,6 +1,6 @@
1
1
  // Test (draait mee in de typecontrole én als script: `bun src/lib/plan-coverage.check.ts`).
2
2
  // Ontbrekende tellingen moeten "onbekend" tonen, nooit "0".
3
- import { combinedCartCount, coverageDetailText, parsePlanCoverageListRow, summarize } from "./plan-coverage";
3
+ import { combinedCartCount, coverageDetailText, parsePlanCoverageListRow, summarize } from "./plan-coverage.js";
4
4
  function eq(actual, expected, name) {
5
5
  if (actual !== expected)
6
6
  throw new Error(`${name}: verwacht "${expected}", kreeg "${actual}"`);
@@ -1,3 +1,3 @@
1
- import { type PlanCoverage } from "./plan-coverage";
1
+ import { type PlanCoverage } from "./plan-coverage.js";
2
2
  export declare function loadPlanCoverage(supabase: any, orderIds: string[], mode?: "list" | "detail"): Promise<Map<string, PlanCoverage>>;
3
3
  //# sourceMappingURL=plan-coverage.server.d.ts.map
@@ -7,7 +7,7 @@
7
7
  // - Details (mode "detail"): per order, want alleen die geeft karren en pickrijen.
8
8
  // - Kort geheugen per order-id zodat opnieuw tekenen geen nieuwe vragen doet.
9
9
  // - Fail closed: een fout geeft "Indeling onbekend", nooit "Geen indeling".
10
- import { parsePlanCoverage, parsePlanCoverageListRow, unknownCoverage } from "./plan-coverage";
10
+ import { parsePlanCoverage, parsePlanCoverageListRow, unknownCoverage } from "./plan-coverage.js";
11
11
  const TTL_MS = 30000;
12
12
  const CONCURRENCY = 12;
13
13
  const cache = new Map(); // sleutel: mode:orderId
@@ -12,7 +12,7 @@ export interface ProductDimensionRow {
12
12
  incomplete: boolean;
13
13
  }
14
14
  export declare const listProductDimensions: import("@tanstack/start-client-core").OptionalFetcher<readonly [import("@tanstack/start-client-core").FunctionMiddlewareAfterServer<{}, unknown, undefined, {
15
- supabase: import("../integrations/supabase/auth-middleware").AuthedSupabaseClient;
15
+ supabase: import("../integrations/supabase/auth-middleware.js").AuthedSupabaseClient;
16
16
  userId: string;
17
17
  claims: import("@supabase/auth-js").User;
18
18
  }, undefined, undefined, undefined>], (input: unknown) => {
@@ -24,7 +24,7 @@ export declare const listProductDimensions: import("@tanstack/start-client-core"
24
24
  incompleteCount: number;
25
25
  }>>;
26
26
  export declare const saveProductDimensions: import("@tanstack/start-client-core").OptionalFetcher<readonly [import("@tanstack/start-client-core").FunctionMiddlewareAfterServer<{}, unknown, undefined, {
27
- supabase: import("../integrations/supabase/auth-middleware").AuthedSupabaseClient;
27
+ supabase: import("../integrations/supabase/auth-middleware.js").AuthedSupabaseClient;
28
28
  userId: string;
29
29
  claims: import("@supabase/auth-js").User;
30
30
  }, undefined, undefined, undefined>], (input: unknown) => {
@@ -3,7 +3,7 @@
3
3
  // deze module vult alleen de maten aan en verzint nooit een waarde.
4
4
  import { createServerFn } from "@tanstack/react-start";
5
5
  import { z } from "zod";
6
- import { requireSupabaseAuth } from "../integrations/supabase/auth-middleware";
6
+ import { requireSupabaseAuth } from "../integrations/supabase/auth-middleware.js";
7
7
  export const listProductDimensions = createServerFn({ method: "GET" })
8
8
  .middleware([requireSupabaseAuth])
9
9
  .inputValidator((input) => z
@@ -1,5 +1,5 @@
1
1
  export declare const listSalesOrders: import("@tanstack/start-client-core").OptionalFetcher<readonly [import("@tanstack/start-client-core").FunctionMiddlewareAfterServer<{}, unknown, undefined, {
2
- supabase: import("../integrations/supabase/auth-middleware").AuthedSupabaseClient;
2
+ supabase: import("../integrations/supabase/auth-middleware.js").AuthedSupabaseClient;
3
3
  userId: string;
4
4
  claims: import("@supabase/auth-js").User;
5
5
  }, undefined, undefined, undefined>], (input: unknown) => {
@@ -12,17 +12,17 @@ export declare const listSalesOrders: import("@tanstack/start-client-core").Opti
12
12
  search?: string | undefined;
13
13
  status?: string | undefined;
14
14
  all?: boolean | undefined;
15
- }, Promise<import("./salesorders-list.server").ListResult>>;
15
+ }, Promise<import("./salesorders-list.server.js").ListResult>>;
16
16
  export declare const getLocalSalesOrderDetail: import("@tanstack/start-client-core").OptionalFetcher<readonly [import("@tanstack/start-client-core").FunctionMiddlewareAfterServer<{}, unknown, undefined, {
17
- supabase: import("../integrations/supabase/auth-middleware").AuthedSupabaseClient;
17
+ supabase: import("../integrations/supabase/auth-middleware.js").AuthedSupabaseClient;
18
18
  userId: string;
19
19
  claims: import("@supabase/auth-js").User;
20
20
  }, undefined, undefined, undefined>], (input: unknown) => {
21
21
  id: string;
22
22
  }, Promise<{
23
- order: import("./salesorders-mapping").SalesOrderDTO | null;
23
+ order: import("./salesorders-mapping.js").SalesOrderDTO | null;
24
24
  bufferId: string | null;
25
- bufferSiblings: import("./salesorders-mapping").SalesOrderDTO[];
25
+ bufferSiblings: import("./salesorders-mapping.js").SalesOrderDTO[];
26
26
  sellerFallback: string | null;
27
27
  environment: "staging" | "live";
28
28
  }>>;
@@ -2,8 +2,8 @@
2
2
  // Alle logica staat in salesorders-list.server.ts.
3
3
  import { createServerFn } from "@tanstack/react-start";
4
4
  import { z } from "zod";
5
- import { requireSupabaseAuth } from "../integrations/supabase/auth-middleware";
6
- import { buildSalesOrdersList } from "./salesorders-list.server";
5
+ import { requireSupabaseAuth } from "../integrations/supabase/auth-middleware.js";
6
+ import { buildSalesOrdersList } from "./salesorders-list.server.js";
7
7
  const listInput = z.object({
8
8
  since: z.string().optional(),
9
9
  until: z.string().optional(),
@@ -21,7 +21,7 @@ export const listSalesOrders = createServerFn({ method: "POST" })
21
21
  .middleware([requireSupabaseAuth])
22
22
  .inputValidator((input) => listInput.parse(input ?? {}))
23
23
  .handler(async ({ data, context }) => {
24
- const { supabaseAdmin } = await import("../integrations/supabase/client.server");
24
+ const { supabaseAdmin } = await import("../integrations/supabase/client.server.js");
25
25
  return buildSalesOrdersList(context.supabase, data, supabaseAdmin);
26
26
  });
27
27
  const localDetailInput = z.object({
@@ -31,7 +31,7 @@ export const getLocalSalesOrderDetail = createServerFn({ method: "POST" })
31
31
  .middleware([requireSupabaseAuth])
32
32
  .inputValidator((input) => localDetailInput.parse(input))
33
33
  .handler(async ({ data, context }) => {
34
- const { supabaseAdmin } = await import("../integrations/supabase/client.server");
34
+ const { supabaseAdmin } = await import("../integrations/supabase/client.server.js");
35
35
  const result = await buildSalesOrdersList(context.supabase, {
36
36
  dateField: "ordered",
37
37
  tab: "all",
@@ -1,6 +1,6 @@
1
1
  import type { SupabaseClient } from "@supabase/supabase-js";
2
- import { type SalesOrderDTO, type SalesOrdersTotals } from "./salesorders-mapping";
3
- import { type OrderStage } from "./order-status";
2
+ import { type SalesOrderDTO, type SalesOrdersTotals } from "./salesorders-mapping.js";
3
+ import { type OrderStage } from "./order-status.js";
4
4
  /** "backlog" is géén status: het is een aparte weergave van "Te picken". */
5
5
  export type StatusTab = "all" | OrderStage | "backlog" | "not_reported";
6
6
  export interface ListParams {
@@ -1,19 +1,19 @@
1
- import { loadReviewDismissals, isReviewDismissed } from "./review-dismissals.server";
2
- import { customerDisplayName } from "./customer-name";
3
- import { isNotReportedLocally } from "./floriday-status";
4
- import { unlinkedFloridayProducts } from "./floriday-unlinked-products";
5
- import { resolveProductName } from "./product-name";
6
- import { centralOrderNumber, computeTotals, mapJsonbToSalesOrderDTO, packingConfigFromFloridayPacking, } from "./salesorders-mapping";
7
- import { cratePackageName, loadCarrierName, mergeTypeNames } from "./load-carrier-labels";
8
- import { engineLoadCarrierLabel, normalizeLoadCarrierCode } from "./load-carriers";
9
- import { normalizeTime, resolveDeliveryTimeForDate } from "./carrier-availability";
10
- import { loadPlanCoverage } from "./plan-coverage.server";
11
- import { combineStages } from "./floriday-status";
12
- import { combinedCartCount, mergeSummaries, summarize } from "./plan-coverage";
13
- import { resolveOrderNumbers } from "./order-numbers.server";
14
- import { mergeStages, resolveOrderStage } from "./order-status";
15
- import { buildPickupOptions } from "./order-pickup.functions";
16
- import { loadBacklogFlags } from "./order-backlog.server";
1
+ import { loadReviewDismissals, isReviewDismissed } from "./review-dismissals.server.js";
2
+ import { customerDisplayName } from "./customer-name.js";
3
+ import { isNotReportedLocally } from "./floriday-status.js";
4
+ import { unlinkedFloridayProducts } from "./floriday-unlinked-products.js";
5
+ import { resolveProductName } from "./product-name.js";
6
+ import { centralOrderNumber, computeTotals, mapJsonbToSalesOrderDTO, packingConfigFromFloridayPacking, } from "./salesorders-mapping.js";
7
+ import { cratePackageName, loadCarrierName, mergeTypeNames } from "./load-carrier-labels.js";
8
+ import { engineLoadCarrierLabel, normalizeLoadCarrierCode } from "./load-carriers.js";
9
+ import { normalizeTime, resolveDeliveryTimeForDate } from "./carrier-availability.js";
10
+ import { loadPlanCoverage } from "./plan-coverage.server.js";
11
+ import { combineStages } from "./floriday-status.js";
12
+ import { combinedCartCount, mergeSummaries, summarize } from "./plan-coverage.js";
13
+ import { resolveOrderNumbers } from "./order-numbers.server.js";
14
+ import { mergeStages, resolveOrderStage } from "./order-status.js";
15
+ import { buildPickupOptions } from "./order-pickup.functions.js";
16
+ import { loadBacklogFlags } from "./order-backlog.server.js";
17
17
  const FO_CAP = 20000;
18
18
  const LOCAL_CAP = 5000;
19
19
  const PROPOSAL_CAP = 2000;
@@ -1132,7 +1132,7 @@ export async function buildSalesOrdersList(supabase, params, connectionSupabase
1132
1132
  : [];
1133
1133
  const allIds = Array.from(new Set(visible.flatMap(idsOf))).slice(0, 100);
1134
1134
  if (allIds.length) {
1135
- const { loadFloridayStatuses } = await import("./floriday-status.server");
1135
+ const { loadFloridayStatuses } = await import("./floriday-status.server.js");
1136
1136
  const res = await loadFloridayStatuses(allIds);
1137
1137
  for (const o of visible) {
1138
1138
  const ids = idsOf(o);
@@ -1,4 +1,4 @@
1
- import { type OrderStage } from "./order-status";
1
+ import { type OrderStage } from "./order-status.js";
2
2
  export interface SalesOrderDTO {
3
3
  id: string;
4
4
  orderNumber: string;
@@ -84,7 +84,7 @@ export interface SalesOrderDTO {
84
84
  * Indelingsstatus uit logistics_order_plan_coverage (alleen voor zichtbare
85
85
  * rijen opgehaald). Ontbreekt = niet opgevraagd.
86
86
  */
87
- planCoverage?: import("./plan-coverage").PlanCoverageSummary | null;
87
+ planCoverage?: import("./plan-coverage.js").PlanCoverageSummary | null;
88
88
  /**
89
89
  * Achterstand zoals de Logistiek Engine die meldt (logistics_order_backlog_info).
90
90
  * Nooit zelf berekend; `backlogUnknown` betekent dat de vraag niet lukte.
@@ -96,7 +96,7 @@ export interface SalesOrderDTO {
96
96
  /** Floriday salesOrderId's op deze order (voor het statusoverzicht). */
97
97
  floridayIds?: string[];
98
98
  /** Floriday-stand uit het statusoverzicht; alleen weergave. */
99
- floridayStatus?: import("./floriday-status").FloridayStatusSummary | null;
99
+ floridayStatus?: import("./floriday-status.js").FloridayStatusSummary | null;
100
100
  /** Actieve orderregels: stuks en prijs per stuk (voor de totaalregel). */
101
101
  priceLines?: {
102
102
  pieces: number;
@@ -1,6 +1,6 @@
1
1
  // Client-safe mapping: jsonb cache row -> SalesOrderDTO used by the UI.
2
- import { cratePackageName, loadCarrierName } from "./load-carrier-labels";
3
- import { orderStageLabel } from "./order-status";
2
+ import { cratePackageName, loadCarrierName } from "./load-carrier-labels.js";
3
+ import { orderStageLabel } from "./order-status.js";
4
4
  function toNum(v, d = 0) {
5
5
  if (typeof v === "number")
6
6
  return v;
@@ -1,7 +1,7 @@
1
- import { type SalesOrderDTO } from "./salesorders-mapping";
1
+ import { type SalesOrderDTO } from "./salesorders-mapping.js";
2
2
  export declare function runSalesOrdersSyncFromCron(): Promise<any>;
3
3
  export declare const runSalesOrdersSync: import("@tanstack/start-client-core").OptionalFetcher<readonly [import("@tanstack/start-client-core").FunctionMiddlewareAfterServer<{}, unknown, undefined, {
4
- supabase: import("../integrations/supabase/auth-middleware").AuthedSupabaseClient;
4
+ supabase: import("../integrations/supabase/auth-middleware.js").AuthedSupabaseClient;
5
5
  userId: string;
6
6
  claims: import("@supabase/auth-js").User;
7
7
  }, undefined, undefined, undefined>], undefined, Promise<{
@@ -10,7 +10,7 @@ export declare const runSalesOrdersSync: import("@tanstack/start-client-core").O
10
10
  mirrored: number;
11
11
  }>>;
12
12
  export declare const createSalesOrder: import("@tanstack/start-client-core").OptionalFetcher<readonly [import("@tanstack/start-client-core").FunctionMiddlewareAfterServer<{}, unknown, undefined, {
13
- supabase: import("../integrations/supabase/auth-middleware").AuthedSupabaseClient;
13
+ supabase: import("../integrations/supabase/auth-middleware.js").AuthedSupabaseClient;
14
14
  userId: string;
15
15
  claims: import("@supabase/auth-js").User;
16
16
  }, undefined, undefined, undefined>], (data: unknown) => {
@@ -28,7 +28,7 @@ export declare const createSalesOrder: import("@tanstack/start-client-core").Opt
28
28
  attemptId: string | undefined;
29
29
  }>>;
30
30
  export declare const diagnoseFloridayConnection: import("@tanstack/start-client-core").OptionalFetcher<readonly [import("@tanstack/start-client-core").FunctionMiddlewareAfterServer<{}, unknown, undefined, {
31
- supabase: import("../integrations/supabase/auth-middleware").AuthedSupabaseClient;
31
+ supabase: import("../integrations/supabase/auth-middleware.js").AuthedSupabaseClient;
32
32
  userId: string;
33
33
  claims: import("@supabase/auth-js").User;
34
34
  }, undefined, undefined, undefined>], undefined, Promise<{
@@ -64,14 +64,14 @@ export type SalesOrderDetailResult = {
64
64
  bufferSiblings: SalesOrderDTO[];
65
65
  };
66
66
  export declare const getSalesOrderDetail: import("@tanstack/start-client-core").OptionalFetcher<readonly [import("@tanstack/start-client-core").FunctionMiddlewareAfterServer<{}, unknown, undefined, {
67
- supabase: import("../integrations/supabase/auth-middleware").AuthedSupabaseClient;
67
+ supabase: import("../integrations/supabase/auth-middleware.js").AuthedSupabaseClient;
68
68
  userId: string;
69
69
  claims: import("@supabase/auth-js").User;
70
70
  }, undefined, undefined, undefined>], (d: unknown) => {
71
71
  id: string;
72
72
  }, Promise<SalesOrderDetailResult>>;
73
73
  export declare const setSalesOrderControlled: import("@tanstack/start-client-core").OptionalFetcher<readonly [import("@tanstack/start-client-core").FunctionMiddlewareAfterServer<{}, unknown, undefined, {
74
- supabase: import("../integrations/supabase/auth-middleware").AuthedSupabaseClient;
74
+ supabase: import("../integrations/supabase/auth-middleware.js").AuthedSupabaseClient;
75
75
  userId: string;
76
76
  claims: import("@supabase/auth-js").User;
77
77
  }, undefined, undefined, undefined>], (d: unknown) => {
@@ -93,7 +93,7 @@ export type FloridaySyncHealth = {
93
93
  failingComponents: string[];
94
94
  };
95
95
  export declare const getFloridaySyncHealth: import("@tanstack/start-client-core").OptionalFetcher<readonly [import("@tanstack/start-client-core").FunctionMiddlewareAfterServer<{}, unknown, undefined, {
96
- supabase: import("../integrations/supabase/auth-middleware").AuthedSupabaseClient;
96
+ supabase: import("../integrations/supabase/auth-middleware.js").AuthedSupabaseClient;
97
97
  userId: string;
98
98
  claims: import("@supabase/auth-js").User;
99
99
  }, undefined, undefined, undefined>], undefined, Promise<FloridaySyncHealth>>;