@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.
- package/dist-lib/components/verkoop/CreateOrderPage.js +1 -1
- package/dist-lib/components/verkoop/DiagnoseConnectionDialog.js +1 -1
- package/dist-lib/components/verkoop/EditLocalOrderDialog.js +3 -3
- package/dist-lib/components/verkoop/OrderControlStatusCard.js +1 -1
- package/dist-lib/components/verkoop/OrderKarindelingCard.js +2 -2
- package/dist-lib/components/verkoop/OrderLinePackingCard.js +1 -1
- package/dist-lib/components/verkoop/OrderShipmentsCard.js +1 -1
- package/dist-lib/components/verkoop/ProductDimensionsSettings.js +1 -1
- package/dist-lib/components/verkoop/SalesOrderDetailView.d.ts +1 -1
- package/dist-lib/components/verkoop/SalesOrderDetailView.js +12 -12
- package/dist-lib/components/verkoop/SalesOrdersFilterPanel.d.ts +1 -1
- package/dist-lib/components/verkoop/SalesOrdersFilters.js +1 -1
- package/dist-lib/components/verkoop/SalesOrdersTable.d.ts +1 -1
- package/dist-lib/components/verkoop/SalesOrdersTable.js +2 -2
- package/dist-lib/components/verkoop/StockConsumptionAlertsBanner.js +1 -1
- package/dist-lib/components/verkoop/VerkoopOrdersPage.js +15 -15
- package/dist-lib/index.d.ts +4 -5
- package/dist-lib/index.d.ts.map +1 -1
- package/dist-lib/index.js +5 -6
- package/dist-lib/integrations/supabase/auth-middleware.d.ts +1 -1
- package/dist-lib/integrations/supabase/client.d.ts +1 -1
- package/dist-lib/integrations/supabase/client.server.d.ts +1 -1
- package/dist-lib/integrations/supabase/types.d.ts +346 -0
- package/dist-lib/integrations/supabase/types.d.ts.map +1 -1
- package/dist-lib/lib/belading.server.js +1 -1
- package/dist-lib/lib/buffer-events.functions.d.ts +1 -1
- package/dist-lib/lib/buffer-events.functions.js +1 -1
- package/dist-lib/lib/cart-layers.functions.d.ts +4 -4
- package/dist-lib/lib/cart-layers.functions.js +2 -2
- package/dist-lib/lib/cart-lock.functions.d.ts +1 -1
- package/dist-lib/lib/cart-lock.functions.js +2 -2
- package/dist-lib/lib/cart-planning-settings.functions.d.ts +11 -11
- package/dist-lib/lib/cart-planning-settings.functions.js +1 -1
- package/dist-lib/lib/cart-replan.functions.d.ts +4 -4
- package/dist-lib/lib/cart-replan.functions.js +9 -9
- package/dist-lib/lib/create-order.functions.d.ts +18 -18
- package/dist-lib/lib/create-order.functions.js +15 -15
- package/dist-lib/lib/cron/index.d.ts +3 -3
- package/dist-lib/lib/cron/index.js +3 -3
- package/dist-lib/lib/cron/invoice-due.js +1 -1
- package/dist-lib/lib/cron/sync-salesorders.js +2 -2
- package/dist-lib/lib/cron/sync-tradeitems.js +1 -1
- package/dist-lib/lib/engine-block-alerts.server.js +4 -4
- package/dist-lib/lib/expand-group-order-items.d.ts +1 -1
- package/dist-lib/lib/floriday-change-diff.check.js +2 -2
- package/dist-lib/lib/floriday-gateway.server.d.ts +1 -1
- package/dist-lib/lib/floriday-gateway.server.js +2 -2
- package/dist-lib/lib/floriday-logistic-labels.functions.d.ts +2 -2
- package/dist-lib/lib/floriday-logistic-labels.functions.js +5 -5
- package/dist-lib/lib/floriday-mirror.functions.d.ts +1 -1
- package/dist-lib/lib/floriday-mirror.functions.d.ts.map +1 -1
- package/dist-lib/lib/floriday-mirror.functions.js +19 -12
- package/dist-lib/lib/floriday-public.functions.d.ts +7 -7
- package/dist-lib/lib/floriday-public.functions.js +2 -2
- package/dist-lib/lib/floriday-status.d.ts +1 -1
- package/dist-lib/lib/floriday-status.server.d.ts +1 -1
- package/dist-lib/lib/floriday-status.server.js +2 -2
- package/dist-lib/lib/floriday-sync.js +1 -1
- package/dist-lib/lib/floriday-unlinked-products.js +1 -1
- package/dist-lib/lib/floriday-writes.functions.d.ts +3 -3
- package/dist-lib/lib/floriday-writes.functions.js +3 -3
- package/dist-lib/lib/invoice-timing.functions.d.ts +5 -5
- package/dist-lib/lib/invoice-timing.functions.js +8 -8
- package/dist-lib/lib/invoice-timing.server.d.ts +8 -3
- package/dist-lib/lib/invoice-timing.server.d.ts.map +1 -1
- package/dist-lib/lib/invoice-timing.server.js +70 -34
- package/dist-lib/lib/load-carriers.functions.d.ts +2 -2
- package/dist-lib/lib/load-carriers.functions.js +2 -2
- package/dist-lib/lib/load-carriers.server.d.ts +1 -1
- package/dist-lib/lib/load-carriers.server.js +1 -1
- package/dist-lib/lib/logistics-buffer.server.js +1 -1
- package/dist-lib/lib/logistics-engine.functions.d.ts +8 -8
- package/dist-lib/lib/logistics-engine.functions.js +6 -6
- package/dist-lib/lib/logistics-engine.server.d.ts +1 -1
- package/dist-lib/lib/logistics-engine.server.js +4 -4
- package/dist-lib/lib/logistics-stock.functions.d.ts +3 -3
- package/dist-lib/lib/logistics-stock.functions.js +3 -3
- package/dist-lib/lib/order-addresses.functions.d.ts +1 -1
- package/dist-lib/lib/order-addresses.functions.js +2 -2
- package/dist-lib/lib/order-block-mail.server.js +3 -3
- package/dist-lib/lib/order-buffers.functions.d.ts +3 -3
- package/dist-lib/lib/order-buffers.functions.js +3 -3
- package/dist-lib/lib/order-cancel.server.js +6 -6
- package/dist-lib/lib/order-carrier.functions.d.ts +2 -2
- package/dist-lib/lib/order-carrier.functions.js +2 -2
- package/dist-lib/lib/order-fulfill.functions.d.ts +1 -1
- package/dist-lib/lib/order-fulfill.functions.js +3 -3
- package/dist-lib/lib/order-item-packing.functions.d.ts +3 -3
- package/dist-lib/lib/order-item-packing.functions.js +3 -3
- package/dist-lib/lib/order-patch.check.d.ts +2 -0
- package/dist-lib/lib/order-patch.check.d.ts.map +1 -0
- package/dist-lib/lib/order-patch.check.js +40 -0
- package/dist-lib/lib/order-patch.d.ts +18 -0
- package/dist-lib/lib/order-patch.d.ts.map +1 -0
- package/dist-lib/lib/order-patch.js +105 -0
- package/dist-lib/lib/order-pickup.functions.d.ts +2 -2
- package/dist-lib/lib/order-pickup.functions.js +3 -3
- package/dist-lib/lib/order-shipments.functions.d.ts +4 -4
- package/dist-lib/lib/order-shipments.functions.js +6 -6
- package/dist-lib/lib/plan-coverage.check.js +1 -1
- package/dist-lib/lib/plan-coverage.server.d.ts +1 -1
- package/dist-lib/lib/plan-coverage.server.js +1 -1
- package/dist-lib/lib/product-dimensions.functions.d.ts +2 -2
- package/dist-lib/lib/product-dimensions.functions.js +1 -1
- package/dist-lib/lib/salesorders-list.functions.d.ts +5 -5
- package/dist-lib/lib/salesorders-list.functions.js +4 -4
- package/dist-lib/lib/salesorders-list.server.d.ts +2 -2
- package/dist-lib/lib/salesorders-list.server.js +17 -17
- package/dist-lib/lib/salesorders-mapping.d.ts +3 -3
- package/dist-lib/lib/salesorders-mapping.js +2 -2
- package/dist-lib/lib/salesorders.functions.d.ts +7 -7
- package/dist-lib/lib/salesorders.functions.js +20 -20
- package/dist-lib/lib/stock-consumption-alerts.functions.d.ts +2 -2
- package/dist-lib/lib/stock-consumption-alerts.functions.js +1 -1
- package/dist-lib/lib/tradeitems.functions.d.ts +1068 -1068
- package/dist-lib/lib/tradeitems.functions.js +3 -3
- package/dist-lib/lib/useAllowedLoadCarriers.d.ts +1 -1
- package/dist-lib/lib/useAllowedLoadCarriers.js +1 -1
- package/dist-lib/lib/useBufferEvents.d.ts +1 -1
- package/dist-lib/lib/useBufferEvents.js +2 -2
- package/dist-lib/lib/useLocalSalesOrderDetailQuery.d.ts +2 -2
- package/dist-lib/lib/useLocalSalesOrderDetailQuery.js +2 -2
- package/dist-lib/lib/useSalesOrderDetailQuery.d.ts +1 -1
- package/dist-lib/lib/useSalesOrderDetailQuery.js +2 -2
- package/dist-lib/lib/useSalesOrdersQuery.d.ts +2 -2
- package/dist-lib/lib/useSalesOrdersQuery.js +3 -3
- 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 @@
|
|
|
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>>;
|