@flowselections/floriday-afhandeling-module 1.0.29 → 1.0.31
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/afhandeling/LeveringenPage.d.ts.map +1 -1
- package/dist-lib/components/afhandeling/LeveringenPage.js +7 -24
- package/dist-lib/components/afhandeling/PickAgendaView.d.ts.map +1 -1
- package/dist-lib/components/afhandeling/PickAgendaView.js +22 -24
- package/dist-lib/components/afhandeling/WeekAgendaView.d.ts +5 -1
- package/dist-lib/components/afhandeling/WeekAgendaView.d.ts.map +1 -1
- package/dist-lib/components/afhandeling/WeekAgendaView.js +19 -29
- package/dist-lib/hooks/useEngineTasks.d.ts +2 -0
- package/dist-lib/hooks/useEngineTasks.d.ts.map +1 -1
- package/dist-lib/hooks/useEngineTasks.js +19 -4
- package/dist-lib/hooks/useOrderPlanning.d.ts +12 -1
- package/dist-lib/hooks/useOrderPlanning.d.ts.map +1 -1
- package/dist-lib/hooks/useOrderPlanning.js +65 -26
- package/dist-lib/integrations/supabase/auth-middleware.d.ts +629 -4
- package/dist-lib/integrations/supabase/auth-middleware.d.ts.map +1 -1
- package/dist-lib/integrations/supabase/client.d.ts +629 -4
- package/dist-lib/integrations/supabase/client.d.ts.map +1 -1
- package/dist-lib/integrations/supabase/client.server.d.ts +629 -4
- package/dist-lib/integrations/supabase/client.server.d.ts.map +1 -1
- package/dist-lib/integrations/supabase/types.d.ts +630 -5
- package/dist-lib/integrations/supabase/types.d.ts.map +1 -1
- package/dist-lib/integrations/supabase/types.js +12 -1
- package/dist-lib/lib/afhandelingSettings.functions.d.ts +1378 -128
- package/dist-lib/lib/afhandelingSettings.functions.d.ts.map +1 -1
- package/dist-lib/lib/agendaRange.d.ts +13 -0
- package/dist-lib/lib/agendaRange.d.ts.map +1 -0
- package/dist-lib/lib/agendaRange.js +25 -0
- package/dist-lib/lib/carriers.functions.d.ts +3265 -140
- package/dist-lib/lib/carriers.functions.d.ts.map +1 -1
- package/dist-lib/lib/cartAssignments.functions.d.ts +3265 -140
- package/dist-lib/lib/cartAssignments.functions.d.ts.map +1 -1
- package/dist-lib/lib/cartControl.functions.d.ts +6650 -400
- package/dist-lib/lib/cartControl.functions.d.ts.map +1 -1
- package/dist-lib/lib/floriday.functions.d.ts +647 -8
- package/dist-lib/lib/floriday.functions.d.ts.map +1 -1
- package/dist-lib/lib/floriday.functions.js +86 -20
- package/dist-lib/lib/logisticsEngine/engine.d.ts +16 -3
- package/dist-lib/lib/logisticsEngine/engine.d.ts.map +1 -1
- package/dist-lib/lib/logisticsEngine/engine.js +13 -6
- package/package.json +2 -2
|
@@ -76,14 +76,62 @@ async function getActiveConnectionId(supabase) {
|
|
|
76
76
|
const { data: conn } = await q.maybeSingle();
|
|
77
77
|
return conn?.id ?? null;
|
|
78
78
|
}
|
|
79
|
+
const DELIVERY_PATH = "data->delivery->>latestDeliveryDateTime";
|
|
80
|
+
function dayKey(d) {
|
|
81
|
+
return `${d.getFullYear()}-${String(d.getMonth() + 1).padStart(2, "0")}-${String(d.getDate()).padStart(2, "0")}`;
|
|
82
|
+
}
|
|
83
|
+
function defaultRange() {
|
|
84
|
+
const now = new Date();
|
|
85
|
+
const from = new Date(now.getTime() - 14 * 86400000);
|
|
86
|
+
const to = new Date(now.getTime() + 37 * 86400000);
|
|
87
|
+
return { from: dayKey(from), to: dayKey(to) };
|
|
88
|
+
}
|
|
89
|
+
/** Eerste leverdatum ná het venster, anders de laatste ervóór. Voor auto-jump. */
|
|
90
|
+
async function findNearestDeliveryDate(supabase, connectionId, range) {
|
|
91
|
+
const base = () => {
|
|
92
|
+
let q = supabase
|
|
93
|
+
.from("floriday_salesorders_cache")
|
|
94
|
+
.select("dd:data->delivery->>latestDeliveryDateTime")
|
|
95
|
+
.eq("is_deleted", false)
|
|
96
|
+
.limit(1);
|
|
97
|
+
if (connectionId)
|
|
98
|
+
q = q.eq("connection_id", connectionId);
|
|
99
|
+
return q;
|
|
100
|
+
};
|
|
101
|
+
try {
|
|
102
|
+
const { data: next } = await base()
|
|
103
|
+
.gt(DELIVERY_PATH, `${range.to}T23:59:59Z`)
|
|
104
|
+
.order(DELIVERY_PATH, { ascending: true });
|
|
105
|
+
const nextDate = next?.[0]?.dd;
|
|
106
|
+
if (nextDate)
|
|
107
|
+
return nextDate;
|
|
108
|
+
const { data: prev } = await base()
|
|
109
|
+
.lt(DELIVERY_PATH, `${range.from}T00:00:00Z`)
|
|
110
|
+
.order(DELIVERY_PATH, { ascending: false });
|
|
111
|
+
return prev?.[0]?.dd ?? null;
|
|
112
|
+
}
|
|
113
|
+
catch (e) {
|
|
114
|
+
console.warn("[planning-orders] nearest delivery date lookup failed", {
|
|
115
|
+
message: e instanceof Error ? e.message : String(e),
|
|
116
|
+
});
|
|
117
|
+
return null;
|
|
118
|
+
}
|
|
119
|
+
}
|
|
79
120
|
export const getFloridayOrders = createServerFn({ method: "GET" })
|
|
80
121
|
.middleware([requireSupabaseAuth])
|
|
81
|
-
.
|
|
122
|
+
.inputValidator((input) => input ?? {})
|
|
123
|
+
.handler(async ({ context, data }) => {
|
|
82
124
|
const supabase = context.supabase;
|
|
83
125
|
const startedAt = Date.now();
|
|
126
|
+
const fallback = defaultRange();
|
|
127
|
+
const range = {
|
|
128
|
+
from: data.from ?? fallback.from,
|
|
129
|
+
to: data.to ?? fallback.to,
|
|
130
|
+
};
|
|
84
131
|
console.info("[planning-orders] load started", {
|
|
85
132
|
at: new Date().toISOString(),
|
|
86
133
|
userId: context.userId,
|
|
134
|
+
range,
|
|
87
135
|
sources: ["floriday_salesorders_cache", "orders"],
|
|
88
136
|
});
|
|
89
137
|
const connectionId = await getActiveConnectionId(supabase);
|
|
@@ -91,8 +139,10 @@ export const getFloridayOrders = createServerFn({ method: "GET" })
|
|
|
91
139
|
.from("floriday_salesorders_cache")
|
|
92
140
|
.select("floriday_id, status, buyer_organization_id, data, updated_at")
|
|
93
141
|
.eq("is_deleted", false)
|
|
94
|
-
.
|
|
95
|
-
.
|
|
142
|
+
.gte(DELIVERY_PATH, `${range.from}T00:00:00Z`)
|
|
143
|
+
.lte(DELIVERY_PATH, `${range.to}T23:59:59Z`)
|
|
144
|
+
.order(DELIVERY_PATH, { ascending: true })
|
|
145
|
+
.limit(1500);
|
|
96
146
|
if (connectionId)
|
|
97
147
|
ordersQuery = ordersQuery.eq("connection_id", connectionId);
|
|
98
148
|
const { data: rows, error } = await ordersQuery;
|
|
@@ -125,20 +175,30 @@ export const getFloridayOrders = createServerFn({ method: "GET" })
|
|
|
125
175
|
const buyerIds = Array.from(new Set(Array.from(buyerOrgByFloridayId.values())));
|
|
126
176
|
const nameByOrgId = new Map();
|
|
127
177
|
if (buyerIds.length > 0) {
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
178
|
+
// Via de geïndexeerde kolom organization_id; het JSON-pad (data->>'organizationId')
|
|
179
|
+
// dwingt een seq scan over ~24k rijen af en kost seconden.
|
|
180
|
+
const CHUNK = 200;
|
|
181
|
+
for (let i = 0; i < buyerIds.length; i += CHUNK) {
|
|
182
|
+
const { data: customers, error: custErr } = await supabase
|
|
183
|
+
.from("floriday_customers_cache")
|
|
184
|
+
.select("organization_id, data")
|
|
185
|
+
.in("organization_id", buyerIds.slice(i, i + CHUNK));
|
|
186
|
+
if (custErr) {
|
|
187
|
+
console.warn("[planning-orders] customer lookup failed", { message: custErr.message });
|
|
188
|
+
break;
|
|
189
|
+
}
|
|
190
|
+
for (const c of customers ?? []) {
|
|
191
|
+
const d = (c.data ?? {});
|
|
192
|
+
const orgId = c.organization_id ??
|
|
193
|
+
d.organizationId ??
|
|
194
|
+
null;
|
|
195
|
+
const name = d.commercialName ??
|
|
196
|
+
d.name ??
|
|
197
|
+
d.company_name ??
|
|
198
|
+
d.commercial_name;
|
|
199
|
+
if (orgId && name)
|
|
200
|
+
nameByOrgId.set(orgId, name);
|
|
201
|
+
}
|
|
142
202
|
}
|
|
143
203
|
}
|
|
144
204
|
// Reserve/lookup interne FO-nummers voor alle Floriday-orders (centrale teller).
|
|
@@ -244,12 +304,15 @@ export const getFloridayOrders = createServerFn({ method: "GET" })
|
|
|
244
304
|
salesOrderId: floridayId,
|
|
245
305
|
};
|
|
246
306
|
});
|
|
247
|
-
// Ook handmatige / mailbox-orders uit public.orders meenemen
|
|
307
|
+
// Ook handmatige / mailbox-orders uit public.orders meenemen — alleen
|
|
308
|
+
// binnen hetzelfde leverdatumvenster.
|
|
248
309
|
const { data: manualRows, error: manualError } = await supabase
|
|
249
310
|
.from("orders")
|
|
250
311
|
.select("id, order_number, customer_name, customer_id, delivery_date, status, total, created_at, custom_fields, order_items(id, quantity, products(plants_per_crate, crates_per_layer, layers_per_cart))")
|
|
251
312
|
.is("deleted_at", null)
|
|
252
|
-
.
|
|
313
|
+
.gte("delivery_date", range.from)
|
|
314
|
+
.lte("delivery_date", range.to)
|
|
315
|
+
.order("delivery_date", { ascending: true })
|
|
253
316
|
.limit(1000);
|
|
254
317
|
let partialError;
|
|
255
318
|
if (manualError) {
|
|
@@ -349,12 +412,15 @@ export const getFloridayOrders = createServerFn({ method: "GET" })
|
|
|
349
412
|
}
|
|
350
413
|
const dedupedFloriday = orders.filter((o) => !manualFloridayIds.has(o.id));
|
|
351
414
|
const combined = [...manualOrders, ...dedupedFloriday];
|
|
415
|
+
const nearestDeliveryDate = combined.length === 0 ? await findNearestDeliveryDate(supabase, connectionId, range) : null;
|
|
352
416
|
console.info("[planning-orders] load completed", {
|
|
353
417
|
floridayOrders: orders.length,
|
|
354
418
|
manualOrders: manualOrders.length,
|
|
355
419
|
totalOrders: combined.length,
|
|
420
|
+
range,
|
|
421
|
+
nearestDeliveryDate,
|
|
356
422
|
partialError: partialError ?? null,
|
|
357
423
|
durationMs: Date.now() - startedAt,
|
|
358
424
|
});
|
|
359
|
-
return { orders: combined, error: partialError };
|
|
425
|
+
return { orders: combined, error: partialError, range, nearestDeliveryDate };
|
|
360
426
|
});
|
|
@@ -45,8 +45,8 @@ export interface EngineTask {
|
|
|
45
45
|
order_ref: string;
|
|
46
46
|
buffer_ref: string | null;
|
|
47
47
|
owner_module: string;
|
|
48
|
-
payload
|
|
49
|
-
result
|
|
48
|
+
payload?: EngineLoadComposePayload | null;
|
|
49
|
+
result?: Record<string, unknown> | null;
|
|
50
50
|
planned_start: string | null;
|
|
51
51
|
planned_end: string | null;
|
|
52
52
|
due_at: string | null;
|
|
@@ -75,6 +75,11 @@ export interface BufferDecisionInput {
|
|
|
75
75
|
}
|
|
76
76
|
/** Vraag het indelingsbesluit op. Nooit zelf indelen zonder dit besluit. */
|
|
77
77
|
export declare function getBufferDecision(input: BufferDecisionInput): Promise<EngineBufferDecision | null>;
|
|
78
|
+
/** Resultaat van een meldpoging bij de Engine. */
|
|
79
|
+
export interface EngineEmitResult {
|
|
80
|
+
ok: boolean;
|
|
81
|
+
error?: string;
|
|
82
|
+
}
|
|
78
83
|
/** Meld een gebeurtenis aan de Engine (bv. order.received / order.changed). */
|
|
79
84
|
export declare function emitEngineEvent(params: {
|
|
80
85
|
eventType: string;
|
|
@@ -82,11 +87,19 @@ export declare function emitEngineEvent(params: {
|
|
|
82
87
|
payload?: Record<string, unknown>;
|
|
83
88
|
shadow?: boolean;
|
|
84
89
|
idempotencyKey?: string;
|
|
85
|
-
}): Promise<
|
|
90
|
+
}): Promise<EngineEmitResult>;
|
|
91
|
+
/** Modules waarvan deze agenda taken toont (pick.execute staat op pickschermen). */
|
|
92
|
+
export declare const OWNER_MODULES: string[];
|
|
86
93
|
/** Haal de taken op die deze module moet uitvoeren. */
|
|
87
94
|
export declare function listEngineTasks(options?: {
|
|
88
95
|
taskTypes?: string[];
|
|
89
96
|
statuses?: string[];
|
|
97
|
+
ownerModules?: string[];
|
|
98
|
+
/** Alleen taken met planned_start binnen dit venster (plus taken zonder start). */
|
|
99
|
+
plannedFrom?: string | null;
|
|
100
|
+
plannedTo?: string | null;
|
|
101
|
+
/** Zware payload/result meenemen. Standaard uit. */
|
|
102
|
+
includePayload?: boolean;
|
|
90
103
|
limit?: number;
|
|
91
104
|
}): Promise<EngineTask[]>;
|
|
92
105
|
export declare function claimEngineTask(taskId: string, worker?: string): Promise<boolean>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"engine.d.ts","sourceRoot":"","sources":["../../../src/lib/logisticsEngine/engine.ts"],"names":[],"mappings":"AAQA,eAAO,MAAM,YAAY,gBAAgB,CAAC;AAC1C,eAAO,MAAM,aAAa,gBAAgB,CAAC;AAE3C,MAAM,MAAM,eAAe,GACvB,SAAS,GACT,kBAAkB,GAClB,iBAAiB,GACjB,QAAQ,GACR,KAAK,GACL,OAAO,CAAC;AAEZ,MAAM,MAAM,gBAAgB,GACxB,SAAS,GACT,OAAO,GACP,aAAa,GACb,MAAM,GACN,SAAS,GACT,WAAW,GACX,QAAQ,CAAC;AAEb,MAAM,MAAM,cAAc,GACtB,cAAc,GACd,iBAAiB,GACjB,oBAAoB,GACpB,qBAAqB,GACrB,oBAAoB,CAAC;AAEzB,MAAM,WAAW,oBAAoB;IACnC,MAAM,EAAE,OAAO,CAAC;IAChB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;IACzB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,OAAO,CAAC;QAAC,KAAK,CAAC,EAAE,OAAO,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CACtF;AAED,MAAM,WAAW,iBAAiB;IAChC,GAAG,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,IAAI,CAAC,EAAE,eAAe,GAAG,IAAI,CAAC;IAC9B,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IACrB,KAAK,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IACvC,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED,MAAM,WAAW,wBAAwB;IACvC,YAAY,CAAC,EAAE,iBAAiB,EAAE,CAAC;IACnC,QAAQ,CAAC,EAAE,WAAW,GAAG,aAAa,CAAC;IACvC,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,OAAO,CAAC,EAAE,UAAU,GAAG,UAAU,GAAG,MAAM,GAAG,IAAI,CAAC;IAClD,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,YAAY,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"engine.d.ts","sourceRoot":"","sources":["../../../src/lib/logisticsEngine/engine.ts"],"names":[],"mappings":"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"}
|
|
@@ -40,24 +40,31 @@ export async function emitEngineEvent(params) {
|
|
|
40
40
|
});
|
|
41
41
|
if (error) {
|
|
42
42
|
console.error("[engine] emit event failed", { message: error.message, orderRef: params.orderRef });
|
|
43
|
-
return false;
|
|
43
|
+
return { ok: false, error: error.message };
|
|
44
44
|
}
|
|
45
|
-
return true;
|
|
45
|
+
return { ok: true };
|
|
46
46
|
}
|
|
47
|
-
|
|
47
|
+
/** Modules waarvan deze agenda taken toont (pick.execute staat op pickschermen). */
|
|
48
|
+
export const OWNER_MODULES = ["afhandeling", "pickschermen"];
|
|
49
|
+
/** Lichte kolomset: payload/result zijn tot ~100 kB per rij en niet nodig in lijsten. */
|
|
50
|
+
const TASK_LIST_COLUMNS = "id, task_type, status, order_ref, buffer_ref, owner_module, planned_start, planned_end, due_at, priority, sequence, rule_version, shadow, error, claimed_by, claimed_at, started_at, completed_at, created_at, updated_at";
|
|
51
|
+
const TASK_COLUMNS = `${TASK_LIST_COLUMNS}, payload, result`;
|
|
48
52
|
/** Haal de taken op die deze module moet uitvoeren. */
|
|
49
53
|
export async function listEngineTasks(options) {
|
|
50
54
|
let query = supabase
|
|
51
55
|
.from("logistics_tasks")
|
|
52
|
-
.select(TASK_COLUMNS)
|
|
53
|
-
.
|
|
56
|
+
.select(options?.includePayload ? TASK_COLUMNS : TASK_LIST_COLUMNS)
|
|
57
|
+
.in("owner_module", options?.ownerModules ?? OWNER_MODULES)
|
|
54
58
|
.order("planned_start", { ascending: true, nullsFirst: false })
|
|
55
59
|
.order("sequence", { ascending: true })
|
|
56
|
-
.limit(options?.limit ??
|
|
60
|
+
.limit(options?.limit ?? 2000);
|
|
57
61
|
if (options?.taskTypes?.length)
|
|
58
62
|
query = query.in("task_type", options.taskTypes);
|
|
59
63
|
if (options?.statuses?.length)
|
|
60
64
|
query = query.in("status", options.statuses);
|
|
65
|
+
if (options?.plannedFrom && options?.plannedTo) {
|
|
66
|
+
query = query.or(`planned_start.is.null,and(planned_start.gte.${options.plannedFrom}T00:00:00Z,planned_start.lte.${options.plannedTo}T23:59:59Z)`);
|
|
67
|
+
}
|
|
61
68
|
const { data, error } = await query;
|
|
62
69
|
if (error) {
|
|
63
70
|
console.error("[engine] list tasks failed", { message: error.message });
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@flowselections/floriday-afhandeling-module",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.31",
|
|
4
4
|
"private": false,
|
|
5
5
|
"sideEffects": false,
|
|
6
6
|
"type": "module",
|
|
@@ -47,7 +47,7 @@
|
|
|
47
47
|
"@cloudflare/vite-plugin": "^1.25.5",
|
|
48
48
|
"@eslint/js": "^9.32.0",
|
|
49
49
|
"@flowselections/core": "1.0.16",
|
|
50
|
-
"@lovable.dev/vite-tanstack-config": "2.
|
|
50
|
+
"@lovable.dev/vite-tanstack-config": "2.13.1",
|
|
51
51
|
"@rsbuild/core": "^1.0.0",
|
|
52
52
|
"@tailwindcss/vite": "^4.2.1",
|
|
53
53
|
"@tanstack/react-query": "^5.83.0",
|