@flowselections/floriday-afhandeling-module 1.0.30 → 1.0.32

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 (45) hide show
  1. package/dist-lib/components/afhandeling/ControlePage.d.ts.map +1 -1
  2. package/dist-lib/components/afhandeling/ControlePage.js +23 -10
  3. package/dist-lib/components/afhandeling/LeveringenPage.d.ts.map +1 -1
  4. package/dist-lib/components/afhandeling/LeveringenPage.js +7 -24
  5. package/dist-lib/components/afhandeling/PickAgendaView.d.ts.map +1 -1
  6. package/dist-lib/components/afhandeling/PickAgendaView.js +22 -24
  7. package/dist-lib/components/afhandeling/VervoerdersPage.d.ts +8 -1
  8. package/dist-lib/components/afhandeling/VervoerdersPage.d.ts.map +1 -1
  9. package/dist-lib/components/afhandeling/VervoerdersPage.js +17 -2
  10. package/dist-lib/components/afhandeling/WeekAgendaView.d.ts +5 -1
  11. package/dist-lib/components/afhandeling/WeekAgendaView.d.ts.map +1 -1
  12. package/dist-lib/components/afhandeling/WeekAgendaView.js +19 -29
  13. package/dist-lib/hooks/useEngineTasks.d.ts +2 -0
  14. package/dist-lib/hooks/useEngineTasks.d.ts.map +1 -1
  15. package/dist-lib/hooks/useEngineTasks.js +19 -4
  16. package/dist-lib/hooks/useOrderPlanning.d.ts +12 -1
  17. package/dist-lib/hooks/useOrderPlanning.d.ts.map +1 -1
  18. package/dist-lib/hooks/useOrderPlanning.js +65 -26
  19. package/dist-lib/integrations/supabase/auth-middleware.d.ts +1351 -164
  20. package/dist-lib/integrations/supabase/auth-middleware.d.ts.map +1 -1
  21. package/dist-lib/integrations/supabase/client.d.ts +1351 -164
  22. package/dist-lib/integrations/supabase/client.d.ts.map +1 -1
  23. package/dist-lib/integrations/supabase/client.server.d.ts +1351 -164
  24. package/dist-lib/integrations/supabase/client.server.d.ts.map +1 -1
  25. package/dist-lib/integrations/supabase/types.d.ts +1360 -168
  26. package/dist-lib/integrations/supabase/types.d.ts.map +1 -1
  27. package/dist-lib/integrations/supabase/types.js +12 -1
  28. package/dist-lib/lib/afhandelingSettings.functions.d.ts +2614 -240
  29. package/dist-lib/lib/afhandelingSettings.functions.d.ts.map +1 -1
  30. package/dist-lib/lib/agendaRange.d.ts +13 -0
  31. package/dist-lib/lib/agendaRange.d.ts.map +1 -0
  32. package/dist-lib/lib/agendaRange.js +25 -0
  33. package/dist-lib/lib/carriers.functions.d.ts +6535 -600
  34. package/dist-lib/lib/carriers.functions.d.ts.map +1 -1
  35. package/dist-lib/lib/cartAssignments.functions.d.ts +6535 -600
  36. package/dist-lib/lib/cartAssignments.functions.d.ts.map +1 -1
  37. package/dist-lib/lib/cartControl.functions.d.ts +13070 -1200
  38. package/dist-lib/lib/cartControl.functions.d.ts.map +1 -1
  39. package/dist-lib/lib/floriday.functions.d.ts +1367 -166
  40. package/dist-lib/lib/floriday.functions.d.ts.map +1 -1
  41. package/dist-lib/lib/floriday.functions.js +86 -20
  42. package/dist-lib/lib/logisticsEngine/engine.d.ts +16 -3
  43. package/dist-lib/lib/logisticsEngine/engine.d.ts.map +1 -1
  44. package/dist-lib/lib/logisticsEngine/engine.js +13 -6
  45. package/package.json +2 -8
@@ -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
- .handler(async ({ context }) => {
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
- .order("updated_at", { ascending: false })
95
- .limit(500);
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
- const { data: customers } = await supabase
129
- .from("floriday_customers_cache")
130
- .select("data")
131
- .in("data->>organizationId", buyerIds);
132
- for (const c of customers ?? []) {
133
- const d = (c.data ?? {});
134
- const orgId = d.organizationId ??
135
- d.organization_id;
136
- const name = d.commercialName ??
137
- d.name ??
138
- d.company_name ??
139
- d.commercial_name;
140
- if (orgId && name)
141
- nameByOrgId.set(orgId, name);
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
- .order("created_at", { ascending: false })
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: EngineLoadComposePayload;
49
- result: Record<string, unknown> | null;
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<boolean>;
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":"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"}
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
- const TASK_COLUMNS = "id, task_type, status, order_ref, buffer_ref, owner_module, payload, result, planned_start, planned_end, due_at, priority, sequence, rule_version, shadow, error, claimed_by, claimed_at, started_at, completed_at, created_at, updated_at";
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
- .eq("owner_module", OWNER_MODULE)
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 ?? 500);
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.30",
3
+ "version": "1.0.32",
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.12.0",
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",
@@ -106,12 +106,6 @@
106
106
  "route": "afhandeling/vervoerders/nieuw",
107
107
  "title": "Nieuwe vervoerder",
108
108
  "nav": false
109
- },
110
- {
111
- "export": "VervoerderBewerkenPage",
112
- "route": "afhandeling/vervoerders/$carrierId/bewerken",
113
- "title": "Vervoerder bewerken",
114
- "nav": false
115
109
  }
116
110
  ]
117
111
  }