@flowselections/floriday-afhandeling-module 1.0.69 → 1.0.71

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 (30) hide show
  1. package/dist-lib/components/afhandeling/ControlePage.js +1 -1
  2. package/dist-lib/components/afhandeling/DagDetailDialog.d.ts.map +1 -1
  3. package/dist-lib/components/afhandeling/DagDetailDialog.js +5 -1
  4. package/dist-lib/components/afhandeling/VervoerdersPage.js +1 -1
  5. package/dist-lib/components/afhandeling/VerzetOrderDialog.js +1 -1
  6. package/dist-lib/components/afhandeling/WerkplekWaarschuwing.d.ts +9 -9
  7. package/dist-lib/hooks/useOrderBuffers.d.ts +2 -2
  8. package/dist-lib/hooks/useOrderBuffers.d.ts.map +1 -1
  9. package/dist-lib/hooks/useOrderMeldingen.d.ts +1 -1
  10. package/dist-lib/hooks/useOrderMeldingen.d.ts.map +1 -1
  11. package/dist-lib/hooks/usePickMode.d.ts +1 -1
  12. package/dist-lib/integrations/supabase/client.server.js +1 -1
  13. package/dist-lib/integrations/supabase/types.d.ts +333 -0
  14. package/dist-lib/integrations/supabase/types.d.ts.map +1 -1
  15. package/dist-lib/lib/carrierSignup.functions.d.ts +1 -0
  16. package/dist-lib/lib/carrierSignup.functions.d.ts.map +1 -1
  17. package/dist-lib/lib/deliveryNotePrint.d.ts +33 -33
  18. package/dist-lib/lib/floridayFulfilled.d.ts +9 -0
  19. package/dist-lib/lib/floridayFulfilled.d.ts.map +1 -0
  20. package/dist-lib/lib/floridayFulfilled.js +28 -0
  21. package/dist-lib/lib/floridayFulfilled.test.d.ts +2 -0
  22. package/dist-lib/lib/floridayFulfilled.test.d.ts.map +1 -0
  23. package/dist-lib/lib/floridayFulfilled.test.js +28 -0
  24. package/dist-lib/lib/floridayLoading.functions.d.ts.map +1 -1
  25. package/dist-lib/lib/floridayLoading.functions.js +21 -0
  26. package/dist-lib/lib/serverRoutes/autoSend.handler.d.ts.map +1 -1
  27. package/dist-lib/lib/serverRoutes/autoSend.handler.js +9 -1
  28. package/dist-lib/lib/signupMailText.d.ts.map +1 -1
  29. package/dist-lib/lib/signupMailText.js +2 -0
  30. package/package.json +4 -3
@@ -44,6 +44,7 @@ export interface SignupGroup {
44
44
  orderNumber: string | null;
45
45
  }[];
46
46
  late_order_ids?: string[];
47
+ floriday_done_order_ids?: string[];
47
48
  wait_until?: string | null;
48
49
  last: {
49
50
  sent_at: string;
@@ -1 +1 @@
1
- {"version":3,"file":"carrierSignup.functions.d.ts","sourceRoot":"","sources":["../../src/lib/carrierSignup.functions.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"carrierSignup.functions.d.ts","sourceRoot":"","sources":["../../src/lib/carrierSignup.functions.ts"],"names":[],"mappings":"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"}
@@ -1,34 +1,34 @@
1
- export interface DeliveryNoteItem {
2
- id: string;
3
- salesOrderId?: string | null;
4
- deliveryOrderId?: string | null;
5
- fulfillmentOrderId?: string | null;
6
- }
7
- /** Haalt de signed URL van een enkele afleverbrief op. */
8
- export declare function fetchDeliveryNoteUrl(salesOrderId: string): Promise<string>;
9
- /** Print een PDF vanaf een (signed) URL via de printwachtrij. */
10
- export declare function printPdfFromUrl(url: string, opties: {
11
- documentnaam: string;
12
- isHerprint?: boolean;
13
- }): Promise<void>;
14
- /** Haal en print één afleverbrief. */
15
- export declare function printDeliveryNote(salesOrderId: string, opties?: {
16
- documentnaam?: string;
17
- isHerprint?: boolean;
18
- }): Promise<void>;
19
- export interface BulkPrintResult {
20
- total: number;
21
- success: number;
22
- failed: Array<{
23
- id: string;
24
- error: string;
25
- }>;
26
- }
27
- /**
28
- * Print meerdere afleverbrieven als samengevoegde PDF's van maximaal 25 stuks.
29
- * Te grote opdrachten worden automatisch verder opgeknipt.
30
- */
31
- export declare function printDeliveryNotesMerged(items: DeliveryNoteItem[], opties?: {
32
- isHerprint?: boolean;
33
- }): Promise<BulkPrintResult>;
1
+ export interface DeliveryNoteItem {
2
+ id: string;
3
+ salesOrderId?: string | null;
4
+ deliveryOrderId?: string | null;
5
+ fulfillmentOrderId?: string | null;
6
+ }
7
+ /** Haalt de signed URL van een enkele afleverbrief op. */
8
+ export declare function fetchDeliveryNoteUrl(salesOrderId: string): Promise<string>;
9
+ /** Print een PDF vanaf een (signed) URL via de printwachtrij. */
10
+ export declare function printPdfFromUrl(url: string, opties: {
11
+ documentnaam: string;
12
+ isHerprint?: boolean;
13
+ }): Promise<void>;
14
+ /** Haal en print één afleverbrief. */
15
+ export declare function printDeliveryNote(salesOrderId: string, opties?: {
16
+ documentnaam?: string;
17
+ isHerprint?: boolean;
18
+ }): Promise<void>;
19
+ export interface BulkPrintResult {
20
+ total: number;
21
+ success: number;
22
+ failed: Array<{
23
+ id: string;
24
+ error: string;
25
+ }>;
26
+ }
27
+ /**
28
+ * Print meerdere afleverbrieven als samengevoegde PDF's van maximaal 25 stuks.
29
+ * Te grote opdrachten worden automatisch verder opgeknipt.
30
+ */
31
+ export declare function printDeliveryNotesMerged(items: DeliveryNoteItem[], opties?: {
32
+ isHerprint?: boolean;
33
+ }): Promise<BulkPrintResult>;
34
34
  //# sourceMappingURL=deliveryNotePrint.d.ts.map
@@ -0,0 +1,9 @@
1
+ /** Floriday-id (salesOrderId) van een order uit custom_fields. */
2
+ export declare function floridaySalesOrderId(cf: Record<string, unknown> | null | undefined): string | null;
3
+ /**
4
+ * In Floriday zelf afgehandeld (Verkoop 1.0.96): floriday_external_fulfilled_at gevuld, of het
5
+ * Floriday-id van de order staat in floriday_external_fulfilled_sales_order_ids van een order.
6
+ * `extraLists` = die lijsten uit andere (gebundelde) orders; er wordt op salesOrderId gematcht.
7
+ */
8
+ export declare function isFloridayExternallyFulfilled(cf: Record<string, unknown> | null | undefined, extraLists?: unknown[]): boolean;
9
+ //# sourceMappingURL=floridayFulfilled.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"floridayFulfilled.d.ts","sourceRoot":"","sources":["../../src/lib/floridayFulfilled.ts"],"names":[],"mappings":"AAAA,kEAAkE;AAClE,wBAAgB,oBAAoB,CAAC,EAAE,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,GAAG,SAAS,GAAG,MAAM,GAAG,IAAI,CAKlG;AAED;;;;GAIG;AACH,wBAAgB,6BAA6B,CAC3C,EAAE,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,GAAG,SAAS,EAC9C,UAAU,GAAE,OAAO,EAAO,GACzB,OAAO,CAUT"}
@@ -0,0 +1,28 @@
1
+ /** Floriday-id (salesOrderId) van een order uit custom_fields. */
2
+ export function floridaySalesOrderId(cf) {
3
+ const c = cf ?? {};
4
+ if (typeof c.floriday_sales_order_id === "string" && c.floriday_sales_order_id)
5
+ return c.floriday_sales_order_id;
6
+ if (typeof c.salesOrderId === "string" && c.salesOrderId)
7
+ return c.salesOrderId;
8
+ return null;
9
+ }
10
+ /**
11
+ * In Floriday zelf afgehandeld (Verkoop 1.0.96): floriday_external_fulfilled_at gevuld, of het
12
+ * Floriday-id van de order staat in floriday_external_fulfilled_sales_order_ids van een order.
13
+ * `extraLists` = die lijsten uit andere (gebundelde) orders; er wordt op salesOrderId gematcht.
14
+ */
15
+ export function isFloridayExternallyFulfilled(cf, extraLists = []) {
16
+ const c = cf ?? {};
17
+ const at = c.floriday_external_fulfilled_at;
18
+ if (typeof at === "string" && at.trim() !== "")
19
+ return true;
20
+ const so = floridaySalesOrderId(c);
21
+ if (!so)
22
+ return false;
23
+ for (const l of [c.floriday_external_fulfilled_sales_order_ids, ...extraLists]) {
24
+ if (Array.isArray(l) && l.some((x) => typeof x === "string" && x.toLowerCase() === so.toLowerCase()))
25
+ return true;
26
+ }
27
+ return false;
28
+ }
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=floridayFulfilled.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"floridayFulfilled.test.d.ts","sourceRoot":"","sources":["../../src/lib/floridayFulfilled.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,28 @@
1
+ import { describe, expect, it } from "vitest";
2
+ import { floridaySalesOrderId, isFloridayExternallyFulfilled } from "./floridayFulfilled.js";
3
+ describe("isFloridayExternallyFulfilled", () => {
4
+ it("kent een order met floriday_external_fulfilled_at als afgehandeld", () => {
5
+ expect(isFloridayExternallyFulfilled({ floriday_external_fulfilled_at: "2026-10-19T10:00:00Z" })).toBe(true);
6
+ });
7
+ it("kent een order waarvan het id in floriday_external_fulfilled_sales_order_ids staat als afgehandeld", () => {
8
+ expect(isFloridayExternallyFulfilled({
9
+ salesOrderId: "aaaaaaaa-1111-2222-3333-444444444444",
10
+ floriday_external_fulfilled_sales_order_ids: ["AAAAAAAA-1111-2222-3333-444444444444"],
11
+ })).toBe(true);
12
+ });
13
+ it("kent een order waarvan het id in de lijst van een gebundelde order staat als afgehandeld", () => {
14
+ expect(isFloridayExternallyFulfilled({ salesOrderId: "aaaaaaaa-1111-2222-3333-444444444444" }, [
15
+ ["bbbbbbbb-1111-2222-3333-444444444444"],
16
+ ["AAAAAAAA-1111-2222-3333-444444444444"],
17
+ ])).toBe(true);
18
+ });
19
+ it("kent een gewone order niet als afgehandeld", () => {
20
+ expect(isFloridayExternallyFulfilled({ salesOrderId: "aaaaaaaa-1111-2222-3333-444444444444" })).toBe(false);
21
+ expect(isFloridayExternallyFulfilled(null)).toBe(false);
22
+ });
23
+ it("leest het Floriday-id uit beide veldnamen", () => {
24
+ expect(floridaySalesOrderId({ floriday_sales_order_id: "x" })).toBe("x");
25
+ expect(floridaySalesOrderId({ salesOrderId: "y" })).toBe("y");
26
+ expect(floridaySalesOrderId({})).toBeNull();
27
+ });
28
+ });
@@ -1 +1 @@
1
- {"version":3,"file":"floridayLoading.functions.d.ts","sourceRoot":"","sources":["../../src/lib/floridayLoading.functions.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"floridayLoading.functions.d.ts","sourceRoot":"","sources":["../../src/lib/floridayLoading.functions.ts"],"names":[],"mappings":"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"}
@@ -5,6 +5,7 @@
5
5
  // Sets: Floriday knipt een set op in losse verkooporders → één regel per onderdeel.
6
6
  import { createServerFn } from "@tanstack/react-start";
7
7
  import { requireSupabaseAuth } from "../integrations/supabase/auth-middleware.js";
8
+ import { isFloridayExternallyFulfilled } from "./floridayFulfilled.js";
8
9
  const arr = (v) => (Array.isArray(v) ? v : []);
9
10
  const num = (v) => v == null || v === "" || !Number.isFinite(Number(v)) ? null : Number(v);
10
11
  /** Floriday 2026v1 AddLoadCarrierConfiguration.loadCarrierReference: maximaal 14 tekens. */
@@ -139,6 +140,26 @@ async function buildLoading(supabase, orderRef) {
139
140
  queue.push(s.id);
140
141
  }
141
142
  }
143
+ // Afgehandeld in Floriday (Verkoop): die orders/bestellingen nooit versturen; match op salesOrderId.
144
+ {
145
+ const { data: cfRows, error: cfErr } = coverage.size
146
+ ? await supabase.from("orders").select("id, custom_fields").in("id", [...coverage.keys()])
147
+ : { data: [], error: null };
148
+ if (cfErr)
149
+ throw new Error(cfErr.message);
150
+ const lists = (cfRows ?? []).map((r) => r.custom_fields?.floriday_external_fulfilled_sales_order_ids);
151
+ const done = [];
152
+ for (const r of cfRows ?? []) {
153
+ const cf = r.custom_fields ?? {};
154
+ if (cf.floriday_fulfilled === true || cf.floriday_fulfilled === "true" || isFloridayExternallyFulfilled(cf, lists)) {
155
+ done.push(coverage.get(r.id)?.ref ?? r.id);
156
+ coverage.delete(r.id);
157
+ }
158
+ }
159
+ if (done.length && coverage.size === 0) {
160
+ blockers.push(`Afgehandeld in Floriday — er wordt niets verstuurd (${done.join(", ")}).`);
161
+ }
162
+ }
142
163
  // Gecontroleerd = elke kar van de order is bij de controlebalie afgemeld (scan of "Controle uitvoeren").
143
164
  const orderIds = [...coverage.keys()].sort();
144
165
  // Zelfde regel als Floriday-authenticatie: per Engine-kar (ook gedeeld) een rij in
@@ -1 +1 @@
1
- {"version":3,"file":"autoSend.handler.d.ts","sourceRoot":"","sources":["../../../src/lib/serverRoutes/autoSend.handler.ts"],"names":[],"mappings":"AA2BA,sFAAsF;AACtF,wBAAsB,cAAc,CAAC,OAAO,EAAE,OAAO,EAAE,KAAK,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,QAAQ,CAAC,CAgDzF"}
1
+ {"version":3,"file":"autoSend.handler.d.ts","sourceRoot":"","sources":["../../../src/lib/serverRoutes/autoSend.handler.ts"],"names":[],"mappings":"AA4BA,sFAAsF;AACtF,wBAAsB,cAAc,CAAC,OAAO,EAAE,OAAO,EAAE,KAAK,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,QAAQ,CAAC,CAgDzF"}
@@ -3,6 +3,7 @@
3
3
  // HMAC-SHA256 over "<timestamp>.<rawBody>"), sleutel = Floriday-gatewaygeheim.
4
4
  // Fail closed: geen geheim = niets doen. Versturen loopt via runLoadingSend.
5
5
  import { z } from "zod";
6
+ import { isFloridayExternallyFulfilled } from "../floridayFulfilled.js";
6
7
  const MAX_SKEW_MS = 5 * 60000;
7
8
  const bodySchema = z.object({ orderId: z.string().uuid() }).strict();
8
9
  const json = (status, body) => Response.json(body, { status });
@@ -92,7 +93,14 @@ async function processOrder(orderId, sb) {
92
93
  const { ACCEPTED, prepareLoadingServer, runLoadingSend } = await import("../floridayLoading.functions.js");
93
94
  const ref = order.order_number ?? order.id;
94
95
  const already = async () => {
95
- if (cf.floriday_fulfilled === true)
96
+ if (cf.floriday_fulfilled === true || cf.floriday_fulfilled === "true")
97
+ return true;
98
+ if (isFloridayExternallyFulfilled(cf))
99
+ return true;
100
+ // Gebundelde orders: Floriday-id kan in de lijst van een andere order staan.
101
+ const { data: lists } = await sb.from("orders").select("id")
102
+ .is("deleted_at", null).contains("custom_fields", { floriday_external_fulfilled_sales_order_ids: [salesOrderId] }).limit(1);
103
+ if (Array.isArray(lists) && lists.length > 0)
96
104
  return true;
97
105
  const { data } = await sb.from("floriday_loading_attempts").select("code")
98
106
  .eq("step", "send").contains("order_refs", [ref]).in("code", [...ACCEPTED]).limit(1);
@@ -1 +1 @@
1
- {"version":3,"file":"signupMailText.d.ts","sourceRoot":"","sources":["../../src/lib/signupMailText.ts"],"names":[],"mappings":"AACA,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,MAAM,GAAG,IAAI,CA2BjF;AAED,wBAAgB,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,EAAE,EAAE,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM,CAGjF;AAED,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,EAAE,EAAE,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM,CAGpF"}
1
+ {"version":3,"file":"signupMailText.d.ts","sourceRoot":"","sources":["../../src/lib/signupMailText.ts"],"names":[],"mappings":"AACA,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,MAAM,GAAG,IAAI,CA6BjF;AAED,wBAAgB,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,EAAE,EAAE,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM,CAGjF;AAED,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,EAAE,EAAE,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM,CAGpF"}
@@ -21,6 +21,8 @@ export function signupReasonText(reason) {
21
21
  return "De ophaaltijd is al voorbij.";
22
22
  case "waiting_for_carts":
23
23
  return "Een order heeft nog geen karindeling; de aanmeldmail wacht even.";
24
+ case "floriday_fulfilled":
25
+ return "Alle orders van dit ophaalmoment zijn afgehandeld in Floriday; er wordt niets aangemeld.";
24
26
  case "already_sent":
25
27
  return "Deze stand is al verstuurd.";
26
28
  default:
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@flowselections/floriday-afhandeling-module",
3
- "version": "1.0.69",
3
+ "version": "1.0.71",
4
4
  "private": false,
5
5
  "sideEffects": false,
6
6
  "type": "module",
@@ -62,16 +62,17 @@
62
62
  "eslint-plugin-react-hooks": "^5.2.0",
63
63
  "eslint-plugin-react-refresh": "^0.4.20",
64
64
  "globals": "^15.15.0",
65
+ "nitro": "3.0.260603-beta",
65
66
  "react": "^19.2.0",
66
67
  "react-dom": "^19.2.0",
67
68
  "tailwindcss": "^4.2.1",
69
+ "tsc-alias": "^1.8.0",
68
70
  "tw-animate-css": "^1.3.4",
69
71
  "typescript": "^5.8.3",
70
- "tsc-alias": "^1.8.0",
71
72
  "typescript-eslint": "^8.56.1",
72
73
  "vite": "^7.3.1",
73
74
  "vite-tsconfig-paths": "^6.0.2",
74
- "nitro": "3.0.260603-beta"
75
+ "vitest": "^5.0.5"
75
76
  },
76
77
  "flowselections": {
77
78
  "moduleId": "Afhandeling",