@flowselections/logistiek-engine 1.0.100 → 1.0.106

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 (48) hide show
  1. package/dist-lib/integrations/supabase/auth-middleware.d.ts +290 -0
  2. package/dist-lib/integrations/supabase/auth-middleware.d.ts.map +1 -1
  3. package/dist-lib/integrations/supabase/client.server.d.ts +290 -0
  4. package/dist-lib/integrations/supabase/client.server.d.ts.map +1 -1
  5. package/dist-lib/integrations/supabase/moduleClient.d.ts +290 -0
  6. package/dist-lib/integrations/supabase/moduleClient.d.ts.map +1 -1
  7. package/dist-lib/integrations/supabase/types.d.ts +296 -0
  8. package/dist-lib/integrations/supabase/types.d.ts.map +1 -1
  9. package/dist-lib/lib/cartCoverage.functions.d.ts +290 -0
  10. package/dist-lib/lib/cartCoverage.functions.d.ts.map +1 -1
  11. package/dist-lib/lib/controlScan.server.d.ts.map +1 -1
  12. package/dist-lib/lib/controlScan.server.js +37 -0
  13. package/dist-lib/lib/floridayCartCarriers.d.ts +61 -0
  14. package/dist-lib/lib/floridayCartCarriers.d.ts.map +1 -0
  15. package/dist-lib/lib/floridayCartCarriers.js +113 -0
  16. package/dist-lib/lib/floridayCartCarriers.test.d.ts +2 -0
  17. package/dist-lib/lib/floridayCartCarriers.test.d.ts.map +1 -0
  18. package/dist-lib/lib/floridayCartCarriers.test.js +66 -0
  19. package/dist-lib/lib/floridayDocuments.functions.d.ts +870 -0
  20. package/dist-lib/lib/floridayDocuments.functions.d.ts.map +1 -1
  21. package/dist-lib/lib/floridayDocuments.server.d.ts +7 -0
  22. package/dist-lib/lib/floridayDocuments.server.d.ts.map +1 -1
  23. package/dist-lib/lib/floridayDocuments.server.js +16 -1
  24. package/dist-lib/lib/floridayPush.functions.d.ts +290 -0
  25. package/dist-lib/lib/floridayPush.functions.d.ts.map +1 -1
  26. package/dist-lib/lib/floridayPush.server.d.ts +2 -0
  27. package/dist-lib/lib/floridayPush.server.d.ts.map +1 -1
  28. package/dist-lib/lib/floridayPush.server.js +54 -3
  29. package/dist-lib/lib/loadCarrierPlanning.functions.d.ts +1450 -0
  30. package/dist-lib/lib/loadCarrierPlanning.functions.d.ts.map +1 -1
  31. package/dist-lib/lib/loadCarrierPlanning.server.d.ts.map +1 -1
  32. package/dist-lib/lib/loadCarrierPlanning.server.js +6 -3
  33. package/dist-lib/lib/logisticsRecalcJob.functions.d.ts +580 -0
  34. package/dist-lib/lib/logisticsRecalcJob.functions.d.ts.map +1 -1
  35. package/dist-lib/lib/logisticsRecalculate.functions.d.ts +290 -0
  36. package/dist-lib/lib/logisticsRecalculate.functions.d.ts.map +1 -1
  37. package/dist-lib/lib/modulePrompts.d.ts.map +1 -1
  38. package/dist-lib/lib/modulePrompts.js +81 -0
  39. package/dist-lib/lib/moduleVersion.d.ts +1 -1
  40. package/dist-lib/lib/moduleVersion.js +1 -1
  41. package/dist-lib/lib/plannerDiff.functions.d.ts +290 -0
  42. package/dist-lib/lib/plannerDiff.functions.d.ts.map +1 -1
  43. package/dist-lib/lib/quarantineFilter.test.d.ts +2 -0
  44. package/dist-lib/lib/quarantineFilter.test.d.ts.map +1 -0
  45. package/dist-lib/lib/quarantineFilter.test.js +18 -0
  46. package/dist-lib/lib/shippingNoteQueue.server.d.ts.map +1 -1
  47. package/dist-lib/lib/shippingNoteQueue.server.js +29 -1
  48. package/package.json +3 -3
@@ -6,6 +6,7 @@ export declare function hashPayload(value: unknown): string;
6
6
  export interface FloridayPushPayload {
7
7
  deliveryOrderId: string;
8
8
  fulfillmentRequestIds: string[];
9
+ loadCarriers: import("./floridayCartCarriers.js").LoadCarrier[];
9
10
  }
10
11
  export type BuildResult = {
11
12
  ok: true;
@@ -26,6 +27,7 @@ export declare function findDeliveryOrderForSalesOrder(sb: SupabaseClient, sales
26
27
  ok: true;
27
28
  deliveryOrderId: string;
28
29
  fulfillmentRequestIds: string[];
30
+ requestDetails: import("./floridayCartCarriers.js").DeliveryRequestInput[];
29
31
  matches: number;
30
32
  } | {
31
33
  ok: false;
@@ -1 +1 @@
1
- {"version":3,"file":"floridayPush.server.d.ts","sourceRoot":"","sources":["../../src/lib/floridayPush.server.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAE5D,eAAO,MAAM,mBAAmB,KAAK,CAAC;AACtC,eAAO,MAAM,2BAA2B,MAAM,CAAC;AAc/C,mFAAmF;AACnF,wBAAgB,WAAW,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAUlD;AAcD,MAAM,WAAW,mBAAmB;IAClC,eAAe,EAAE,MAAM,CAAC;IACxB,qBAAqB,EAAE,MAAM,EAAE,CAAC;CACjC;AAED,MAAM,MAAM,WAAW,GACnB;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,OAAO,EAAE,mBAAmB,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GACxD;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,OAAO,CAAA;CAAE,CAAC;AAUnE;;;;GAIG;AACH,wBAAsB,8BAA8B,CAClD,EAAE,EAAE,cAAc,EAClB,YAAY,EAAE,MAAM,GACnB,OAAO,CACN;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,eAAe,EAAE,MAAM,CAAC;IAAC,qBAAqB,EAAE,MAAM,EAAE,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GACvF;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAC7C,CAqDA;AAED,8CAA8C;AAC9C,wBAAsB,oBAAoB,CACxC,EAAE,EAAE,cAAc,EAClB,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,WAAW,CAAC,CA+EtB;AAQD,wBAAsB,iBAAiB,CAAC,EAAE,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAW3F;AAED,wBAAsB,mBAAmB,CAAC,EAAE,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAGhG;AA6BD;;;;;;GAMG;AACH,MAAM,MAAM,WAAW,GAAG,IAAI,GAAG,OAAO,GAAG,mBAAmB,GAAG,gBAAgB,CAAC;AAElF,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,gBAAgB,EAAE,MAAM,CAAC;IACzB,aAAa,EAAE,MAAM,CAAC;IACtB,8EAA8E;IAC9E,OAAO,EAAE,MAAM,CAAC;CACjB;AAYD,wBAAsB,oBAAoB,CACxC,EAAE,EAAE,cAAc,EAClB,IAAI,GAAE;IAAE,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,UAAU,CAAC,EAAE,MAAM,CAAA;CAAO,GACjD,OAAO,CAAC,eAAe,CAAC,CA+K1B;AAQD,wBAAsB,wBAAwB,CAAC,EAAE,EAAE,cAAc,EAAE,IAAI,SAAK,GAAG,OAAO,CAAC,IAAI,CAAC,CAS3F"}
1
+ {"version":3,"file":"floridayPush.server.d.ts","sourceRoot":"","sources":["../../src/lib/floridayPush.server.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAE5D,eAAO,MAAM,mBAAmB,KAAK,CAAC;AACtC,eAAO,MAAM,2BAA2B,MAAM,CAAC;AAc/C,mFAAmF;AACnF,wBAAgB,WAAW,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAUlD;AAaD,MAAM,WAAW,mBAAmB;IAClC,eAAe,EAAE,MAAM,CAAC;IACxB,qBAAqB,EAAE,MAAM,EAAE,CAAC;IAChC,YAAY,EAAE,OAAO,2BAA2B,EAAE,WAAW,EAAE,CAAC;CACjE;AAED,MAAM,MAAM,WAAW,GACnB;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,OAAO,EAAE,mBAAmB,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GACxD;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,OAAO,CAAA;CAAE,CAAC;AAUnE;;;;GAIG;AACH,wBAAsB,8BAA8B,CAClD,EAAE,EAAE,cAAc,EAClB,YAAY,EAAE,MAAM,GACnB,OAAO,CACN;IACE,EAAE,EAAE,IAAI,CAAC;IACT,eAAe,EAAE,MAAM,CAAC;IACxB,qBAAqB,EAAE,MAAM,EAAE,CAAC;IAChC,cAAc,EAAE,OAAO,2BAA2B,EAAE,oBAAoB,EAAE,CAAC;IAC3E,OAAO,EAAE,MAAM,CAAC;CACjB,GACD;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAC7C,CAoEA;AAED,8CAA8C;AAC9C,wBAAsB,oBAAoB,CACxC,EAAE,EAAE,cAAc,EAClB,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,WAAW,CAAC,CAyHtB;AAQD,wBAAsB,iBAAiB,CAAC,EAAE,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAW3F;AAED,wBAAsB,mBAAmB,CAAC,EAAE,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAGhG;AA6BD;;;;;;GAMG;AACH,MAAM,MAAM,WAAW,GAAG,IAAI,GAAG,OAAO,GAAG,mBAAmB,GAAG,gBAAgB,CAAC;AAElF,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,gBAAgB,EAAE,MAAM,CAAC;IACzB,aAAa,EAAE,MAAM,CAAC;IACtB,8EAA8E;IAC9E,OAAO,EAAE,MAAM,CAAC;CACjB;AAYD,wBAAsB,oBAAoB,CACxC,EAAE,EAAE,cAAc,EAClB,IAAI,GAAE;IAAE,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,UAAU,CAAC,EAAE,MAAM,CAAA;CAAO,GACjD,OAAO,CAAC,eAAe,CAAC,CA+K1B;AAQD,wBAAsB,wBAAwB,CAAC,EAAE,EAAE,cAAc,EAAE,IAAI,SAAK,GAAG,OAAO,CAAC,IAAI,CAAC,CAS3F"}
@@ -79,10 +79,24 @@ export async function findDeliveryOrderForSalesOrder(sb, salesOrderId) {
79
79
  error: `Delivery-order ${String(row["floriday_id"] ?? "")} bevat geen fulfillmentRequests voor sales-order ${salesOrderId}.`,
80
80
  };
81
81
  }
82
+ const num = (v) => (typeof v === "number" ? v : v == null || v === "" ? null : Number(v));
83
+ const str = (v) => (typeof v === "string" && v.trim() ? v : null);
84
+ const requestDetails = requests
85
+ .filter((r) => fulfillmentRequestIds.includes(String(r["fulfillmentRequestId"] ?? r["id"] ?? "")))
86
+ .map((r) => ({
87
+ fulfillmentRequestId: String(r["fulfillmentRequestId"] ?? r["id"] ?? ""),
88
+ numberOfPackages: num(r["numberOfPackages"]),
89
+ serviceCode: num(r["serviceCode"]),
90
+ packingAgentOrganizationId: str(r["packingAgentOrganizationId"]),
91
+ deliveryRemarks: str(r["deliveryRemarks"]),
92
+ commercialInvoiceReference: str(r["commercialInvoiceReference"]),
93
+ alternativeDisplayName: str(r["alternativeDisplayName"]),
94
+ }));
82
95
  return {
83
96
  ok: true,
84
97
  deliveryOrderId: String(row["floriday_id"] ?? ""),
85
98
  fulfillmentRequestIds,
99
+ requestDetails,
86
100
  matches: rows.length,
87
101
  };
88
102
  }
@@ -121,7 +135,7 @@ export async function buildFloridayPayload(sb, orderRef) {
121
135
  }
122
136
  const { data: carts, error: cartsError } = await sb
123
137
  .from("order_carts")
124
- .select("id, cart_number, carrier_type, total_layers_used, max_layers, occupancy_pct, weight_kg, order_cart_items(product_id, product_name, crates, boxes, plants_per_crate)")
138
+ .select("id, cart_number, carrier_type, total_layers_used, max_layers, occupancy_pct, weight_kg, order_cart_items(product_id, product_name, crates, boxes, plants_per_crate, order_item_id)")
125
139
  .eq("order_id", row["id"])
126
140
  .order("cart_number", { ascending: true });
127
141
  if (cartsError) {
@@ -132,8 +146,8 @@ export async function buildFloridayPayload(sb, orderRef) {
132
146
  permanent: false,
133
147
  };
134
148
  }
135
- const indeling = (Array.isArray(carts) ? carts : []).map((c) => {
136
- const cart = c;
149
+ const cartRows = (Array.isArray(carts) ? carts : []);
150
+ const indeling = cartRows.map((cart) => {
137
151
  const items = Array.isArray(cart["order_cart_items"])
138
152
  ? cart["order_cart_items"]
139
153
  : [];
@@ -150,9 +164,46 @@ export async function buildFloridayPayload(sb, orderRef) {
150
164
  .sort((a, b) => String(a.productId).localeCompare(String(b.productId))),
151
165
  };
152
166
  });
167
+ // Orderregel → Floriday fulfillmentRequest (order_items.source_line_key).
168
+ const { data: orderItems, error: itemsError } = await sb
169
+ .from("order_items")
170
+ .select("id, source_line_key")
171
+ .eq("order_id", row["id"])
172
+ // Regels in quarantaine (Verkoop-herstel) gaan niet mee naar Floriday.
173
+ .is("quarantined_at", null);
174
+ if (itemsError) {
175
+ return {
176
+ ok: false,
177
+ code: "db_error_order_items",
178
+ error: `Orderregels niet leesbaar: ${itemsError.message}`,
179
+ permanent: false,
180
+ };
181
+ }
182
+ const requestByItem = new Map();
183
+ for (const it of (Array.isArray(orderItems) ? orderItems : [])) {
184
+ const key = String(it["source_line_key"] ?? "").trim();
185
+ if (key)
186
+ requestByItem.set(String(it["id"]), key);
187
+ }
188
+ const { buildCartCarriers } = await import("./floridayCartCarriers.js");
189
+ const carriers = buildCartCarriers(cartRows.map((cart) => ({
190
+ cartNumber: cart["cart_number"] ?? null,
191
+ layersUsed: cart["total_layers_used"] ?? null,
192
+ items: (Array.isArray(cart["order_cart_items"])
193
+ ? cart["order_cart_items"]
194
+ : []).map((i) => ({
195
+ fulfillmentRequestId: requestByItem.get(String(i["order_item_id"] ?? "")) ?? null,
196
+ crates: i["crates"] ?? null,
197
+ })),
198
+ })), found.requestDetails);
199
+ if (!carriers.ok) {
200
+ // Geen stille terugval op 0 lagen: zonder kloppende indeling niet versturen.
201
+ return { ok: false, code: carriers.code, error: carriers.error, permanent: false };
202
+ }
153
203
  const payload = {
154
204
  deliveryOrderId: found.deliveryOrderId,
155
205
  fulfillmentRequestIds: found.fulfillmentRequestIds,
206
+ loadCarriers: carriers.loadCarriers,
156
207
  };
157
208
  // De hash bewaakt ook de karindeling, zodat een herindeling opnieuw pusht.
158
209
  return { ok: true, payload, hash: hashPayload({ payload, indeling }) };