@flowselections/floriday-afhandeling-module 1.0.56 → 1.0.61
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/AutoSendStatus.d.ts +5 -0
- package/dist-lib/components/afhandeling/AutoSendStatus.d.ts.map +1 -0
- package/dist-lib/components/afhandeling/AutoSendStatus.js +22 -0
- package/dist-lib/components/afhandeling/DagDetailDialog.d.ts.map +1 -1
- package/dist-lib/components/afhandeling/DagDetailDialog.js +51 -20
- package/dist-lib/components/afhandeling/NuVersturenButton.d.ts.map +1 -1
- package/dist-lib/components/afhandeling/NuVersturenButton.js +18 -5
- package/dist-lib/components/afhandeling/WeekAgendaView.d.ts.map +1 -1
- package/dist-lib/components/afhandeling/WeekAgendaView.js +57 -10
- package/dist-lib/hooks/useConsistencyCheck.d.ts +1 -1
- package/dist-lib/hooks/useConsistencyCheck.d.ts.map +1 -1
- package/dist-lib/hooks/useConsistencyCheck.js +5 -3
- package/dist-lib/hooks/useOrderMeldingen.d.ts +12 -0
- package/dist-lib/hooks/useOrderMeldingen.d.ts.map +1 -0
- package/dist-lib/hooks/useOrderMeldingen.js +38 -0
- package/dist-lib/integrations/supabase/previewAuthStorage.d.ts.map +1 -1
- package/dist-lib/integrations/supabase/previewAuthStorage.js +22 -4
- package/dist-lib/integrations/supabase/types.d.ts +1067 -2
- package/dist-lib/integrations/supabase/types.d.ts.map +1 -1
- package/dist-lib/integrations/supabase/types.js +1 -0
- package/dist-lib/lib/cartControl.functions.d.ts.map +1 -1
- package/dist-lib/lib/cartControl.functions.js +3 -1
- package/dist-lib/lib/floriday.functions.d.ts +2 -0
- package/dist-lib/lib/floriday.functions.d.ts.map +1 -1
- package/dist-lib/lib/floriday.functions.js +1 -0
- package/dist-lib/lib/floridayLoading.functions.d.ts +11 -0
- package/dist-lib/lib/floridayLoading.functions.d.ts.map +1 -1
- package/dist-lib/lib/floridayLoading.functions.js +17 -5
- package/dist-lib/lib/serverRoutes/autoSend.handler.d.ts +2 -0
- package/dist-lib/lib/serverRoutes/autoSend.handler.d.ts.map +1 -0
- package/dist-lib/lib/serverRoutes/autoSend.handler.js +102 -0
- package/dist-lib/moduleDefinition.d.ts.map +1 -1
- package/dist-lib/moduleDefinition.js +5 -2
- package/package.json +3 -3
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cartControl.functions.d.ts","sourceRoot":"","sources":["../../src/lib/cartControl.functions.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"cartControl.functions.d.ts","sourceRoot":"","sources":["../../src/lib/cartControl.functions.ts"],"names":[],"mappings":"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"}
|
|
@@ -442,7 +442,9 @@ export const submitControlSession = createServerFn({ method: "POST" })
|
|
|
442
442
|
let deliverError = null;
|
|
443
443
|
const runBulk = async (carts) => {
|
|
444
444
|
for (const batch of chunk(carts, maxBulkCarts)) {
|
|
445
|
-
|
|
445
|
+
// Scanbron voor de Engine; de Engine legt zelf één goedgekeurde scan per kar vast.
|
|
446
|
+
const metBron = batch.map((c) => ({ ...c, afmeld_bron: "bulk" }));
|
|
447
|
+
const { error } = await supabase.rpc("control_mark_carts_delivered", { p_carts: metBron });
|
|
446
448
|
if (error && !deliverError)
|
|
447
449
|
deliverError = error.message;
|
|
448
450
|
}
|
|
@@ -20,6 +20,8 @@ export interface FloridayOrder {
|
|
|
20
20
|
hasStickers?: boolean;
|
|
21
21
|
/** Floriday salesOrderId — nodig voor afleverbrief PDF via gateway. */
|
|
22
22
|
salesOrderId?: string | null;
|
|
23
|
+
/** Floriday-afmeldstand uit de order (custom_fields.floriday_fulfilled). */
|
|
24
|
+
floridayFulfilled?: boolean;
|
|
23
25
|
/**
|
|
24
26
|
* Deze module toont uitsluitend orders uit de orderadministratie van de
|
|
25
27
|
* Verkoop-module (public.orders). Daarom is dit altijd waar; het veld blijft
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"floriday.functions.d.ts","sourceRoot":"","sources":["../../src/lib/floriday.functions.ts"],"names":[],"mappings":"AAMA,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,UAAU,GAAG,QAAQ,CAAC;IAC9B,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,YAAY,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,oEAAoE;IACpE,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,uEAAuE;IACvE,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B;;;;OAIG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,8DAA8D;IAC9D,eAAe,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACjC;AAED,MAAM,WAAW,sBAAsB;IACrC,0CAA0C;IAC1C,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,0CAA0C;IAC1C,EAAE,CAAC,EAAE,MAAM,CAAC;CACb;AAED,MAAM,WAAW,uBAAuB;IACtC,MAAM,EAAE,aAAa,EAAE,CAAC;IACxB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,6CAA6C;IAC7C,KAAK,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,EAAE,EAAE,MAAM,CAAA;KAAE,CAAC;IACpC,gFAAgF;IAChF,mBAAmB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACrC;AA4CD;;;;;GAKG;AACH,eAAO,MAAM,iBAAiB;;;;8CAEJ,sBAAsB,GAAG,SAAS,
|
|
1
|
+
{"version":3,"file":"floriday.functions.d.ts","sourceRoot":"","sources":["../../src/lib/floriday.functions.ts"],"names":[],"mappings":"AAMA,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,UAAU,GAAG,QAAQ,CAAC;IAC9B,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,YAAY,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,oEAAoE;IACpE,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,uEAAuE;IACvE,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,4EAA4E;IAC5E,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B;;;;OAIG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,8DAA8D;IAC9D,eAAe,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACjC;AAED,MAAM,WAAW,sBAAsB;IACrC,0CAA0C;IAC1C,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,0CAA0C;IAC1C,EAAE,CAAC,EAAE,MAAM,CAAC;CACb;AAED,MAAM,WAAW,uBAAuB;IACtC,MAAM,EAAE,aAAa,EAAE,CAAC;IACxB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,6CAA6C;IAC7C,KAAK,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,EAAE,EAAE,MAAM,CAAA;KAAE,CAAC;IACpC,gFAAgF;IAChF,mBAAmB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACrC;AA4CD;;;;;GAKG;AACH,eAAO,MAAM,iBAAiB;;;;8CAEJ,sBAAsB,GAAG,SAAS,8DAgMxD,CAAC;AAEL,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,+CAA+C;IAC/C,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;CACvB;AAGD;;;;;GAKG;AACH,eAAO,MAAM,eAAe;;;;;YAEsB,aAAa,EAAE;YAAU,MAAM;GAqB7E,CAAC"}
|
|
@@ -190,6 +190,7 @@ export const getFloridayOrders = createServerFn({ method: "GET" })
|
|
|
190
190
|
city: deliveryLocation?.city ?? null,
|
|
191
191
|
hasStickers: salesOrderId ? stickerOrderIds.has(salesOrderId) : false,
|
|
192
192
|
salesOrderId,
|
|
193
|
+
floridayFulfilled: fields.floriday_fulfilled === true || fields.floriday_fulfilled === "true",
|
|
193
194
|
mirrored: true,
|
|
194
195
|
mirroredOrderId: orderId,
|
|
195
196
|
};
|
|
@@ -67,6 +67,7 @@ export interface SendResult {
|
|
|
67
67
|
}
|
|
68
68
|
/** Floriday 2026v1 AddLoadCarrierConfiguration.loadCarrierReference: maximaal 14 tekens. */
|
|
69
69
|
export declare const LOAD_CARRIER_REF_MAX = 14;
|
|
70
|
+
export declare const ACCEPTED: Set<string>;
|
|
70
71
|
/** Stelt de belading samen en toont de controles. Verstuurt niets. */
|
|
71
72
|
export declare const prepareFloridayLoading: import("@tanstack/start-client-core").RequiredFetcher<readonly [import("@tanstack/start-client-core").FunctionMiddlewareAfterServer<{}, unknown, undefined, {
|
|
72
73
|
supabase: import("../integrations/supabase/auth-middleware").AuthedSupabaseClient;
|
|
@@ -92,4 +93,14 @@ export declare const sendFloridayLoading: import("@tanstack/start-client-core").
|
|
|
92
93
|
}) => {
|
|
93
94
|
orderRef: string;
|
|
94
95
|
}, Promise<SendResult>>;
|
|
96
|
+
/** Controle vooraf, ook bruikbaar vanuit de getekende auto-send-route. */
|
|
97
|
+
export declare function prepareLoadingServer(supabase: any, orderRef: string): Promise<LoadingPreview>;
|
|
98
|
+
/**
|
|
99
|
+
* De enige verzendkern (AGENTS.md): "Nu versturen" en automatisch versturen
|
|
100
|
+
* gebruiken allebei deze functie met dezelfde vaste kenmerken.
|
|
101
|
+
*/
|
|
102
|
+
export declare function runLoadingSend(supabase: any, p: LoadingPreview, actor: {
|
|
103
|
+
userId: string | null;
|
|
104
|
+
source: "manual" | "auto-send";
|
|
105
|
+
}): Promise<SendResult>;
|
|
95
106
|
//# sourceMappingURL=floridayLoading.functions.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"floridayLoading.functions.d.ts","sourceRoot":"","sources":["../../src/lib/floridayLoading.functions.ts"],"names":[],"mappings":"AAQA,MAAM,WAAW,WAAW;IAC1B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,oBAAoB,EAAE,MAAM,GAAG,IAAI,CAAC;IACpC,gBAAgB,EAAE,MAAM,CAAC;IACzB,SAAS,EAAE,MAAM,CAAC;CACnB;AACD,MAAM,WAAW,cAAc;IAC7B,oBAAoB,EAAE,MAAM,CAAC;IAC7B,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,OAAO,CAAC;IAChB,yEAAyE;IACzE,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,KAAK,EAAE,WAAW,EAAE,CAAC;CACtB;AACD,MAAM,WAAW,UAAU;IACzB,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,UAAU,EAAE,OAAO,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,eAAe,EAAE,MAAM,CAAC;IACxB,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;CAC3B;AACD,MAAM,WAAW,eAAe;IAC9B,kBAAkB,EAAE,MAAM,CAAC;IAC3B,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,QAAQ,EAAE,cAAc,EAAE,CAAC;IAC3B,+EAA+E;IAC/E,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,iBAAiB,EAAE,OAAO,GAAG,IAAI,CAAC;CACnC;AACD,MAAM,WAAW,cAAc;IAC7B,kBAAkB,EAAE,MAAM,CAAC;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,SAAS,EAAE,MAAM,CAAC;CACnB;AACD,MAAM,WAAW,cAAc;IAC7B,kBAAkB,EAAE,MAAM,GAAG,IAAI,CAAC;IAClC,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,QAAQ,EAAE,cAAc,EAAE,CAAC;IAC3B,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,UAAU,EAAE,CAAC;IACrB,SAAS,EAAE,eAAe,EAAE,CAAC;IAC7B,YAAY,EAAE,cAAc,EAAE,CAAC;IAC/B,kEAAkE;IAClE,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,OAAO,EAAE,OAAO,CAAC;CAClB;AACD,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,OAAO,CAAC;IACZ,OAAO,EAAE;QAAE,kBAAkB,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,YAAY,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;CAC3H;AAQD,4FAA4F;AAC5F,eAAO,MAAM,oBAAoB,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"floridayLoading.functions.d.ts","sourceRoot":"","sources":["../../src/lib/floridayLoading.functions.ts"],"names":[],"mappings":"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"}
|
|
@@ -85,7 +85,7 @@ const UUID_RE = /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/
|
|
|
85
85
|
// Auto-verwerking (1.0.64) neemt alleen aan; deze statussen betekenen dat de oude
|
|
86
86
|
// route tóch al belading/verzendbrief heeft gedaan → nooit nog eens versturen.
|
|
87
87
|
const AUTO_ALREADY_SENT = new Set(["sending_fulfillment", "generating_delivery_note", "done"]);
|
|
88
|
-
const ACCEPTED = new Set(["created", "already_fulfilled"]);
|
|
88
|
+
export const ACCEPTED = new Set(["created", "already_fulfilled"]);
|
|
89
89
|
async function buildLoading(supabase, orderRef) {
|
|
90
90
|
if (!orderRef)
|
|
91
91
|
throw new Error("Geen order opgegeven.");
|
|
@@ -371,15 +371,27 @@ export const sendFloridayLoading = createServerFn({ method: "POST" })
|
|
|
371
371
|
.middleware([requireSupabaseAuth])
|
|
372
372
|
.inputValidator((d) => ({ orderRef: String(d?.orderRef ?? "").trim() }))
|
|
373
373
|
.handler(async ({ data, context }) => {
|
|
374
|
-
const
|
|
375
|
-
const p = await buildLoading(supabase, data.orderRef);
|
|
374
|
+
const p = await buildLoading(context.supabase, data.orderRef);
|
|
376
375
|
if (!p.canSend)
|
|
377
376
|
throw new Error(`Niet verstuurd: ${p.blockers.join(" ") || "geen opdracht."}`);
|
|
377
|
+
return runLoadingSend(context.supabase, p, { userId: context.userId, source: "manual" });
|
|
378
|
+
});
|
|
379
|
+
/** Controle vooraf, ook bruikbaar vanuit de getekende auto-send-route. */
|
|
380
|
+
export async function prepareLoadingServer(supabase, orderRef) {
|
|
381
|
+
return buildLoading(supabase, orderRef);
|
|
382
|
+
}
|
|
383
|
+
/**
|
|
384
|
+
* De enige verzendkern (AGENTS.md): "Nu versturen" en automatisch versturen
|
|
385
|
+
* gebruiken allebei deze functie met dezelfde vaste kenmerken.
|
|
386
|
+
*/
|
|
387
|
+
export async function runLoadingSend(supabase, p, actor) {
|
|
378
388
|
const { sendFulfillmentOrder, floridayFoutTekst } = await import("./floridayFulfillmentSend.server");
|
|
379
389
|
const log = async (s, row) => {
|
|
390
|
+
const rs = row.request_summary ?? {};
|
|
380
391
|
const { error } = await supabase.from("floriday_loading_attempts").insert({
|
|
381
392
|
fulfillment_order_id: s.fulfillmentOrderId, delivery_order_id: s.deliveryOrderId,
|
|
382
|
-
sales_order_ids: s.salesOrderIds, order_refs: s.orderRefs, created_by:
|
|
393
|
+
sales_order_ids: s.salesOrderIds, order_refs: s.orderRefs, created_by: actor.userId, ...row,
|
|
394
|
+
request_summary: { ...rs, source: actor.source },
|
|
383
395
|
});
|
|
384
396
|
if (error)
|
|
385
397
|
console.warn("[belading] log mislukt", error.message);
|
|
@@ -429,4 +441,4 @@ export const sendFloridayLoading = createServerFn({ method: "POST" })
|
|
|
429
441
|
results.push({ fulfillmentOrderId: s.fulfillmentOrderId, code, httpStatus, message, deliveryNote });
|
|
430
442
|
}
|
|
431
443
|
return { ok: results.every((r) => ACCEPTED.has(r.code)), results };
|
|
432
|
-
}
|
|
444
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"autoSend.handler.d.ts","sourceRoot":"","sources":["../../../src/lib/serverRoutes/autoSend.handler.ts"],"names":[],"mappings":"AAqBA,wBAAsB,cAAc,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,QAAQ,CAAC,CAsCxE"}
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
// /api/public/hooks/afhandeling-auto-send — aanroep door de Logistieke Engine
|
|
2
|
+
// (koppelprompt 23). Getekend: x-timestamp (epoch-ms) + x-signature (hex
|
|
3
|
+
// HMAC-SHA256 over "<timestamp>.<rawBody>"), sleutel = Floriday-gatewaygeheim.
|
|
4
|
+
// Fail closed: geen geheim = niets doen. Versturen loopt via runLoadingSend.
|
|
5
|
+
import { z } from "zod";
|
|
6
|
+
const MAX_SKEW_MS = 5 * 60000;
|
|
7
|
+
const bodySchema = z.object({ orderId: z.string().uuid() }).strict();
|
|
8
|
+
const json = (status, body) => Response.json(body, { status });
|
|
9
|
+
function hex(buf) {
|
|
10
|
+
return [...new Uint8Array(buf)].map((b) => b.toString(16).padStart(2, "0")).join("");
|
|
11
|
+
}
|
|
12
|
+
function safeEqual(a, b) {
|
|
13
|
+
if (a.length !== b.length)
|
|
14
|
+
return false;
|
|
15
|
+
let d = 0;
|
|
16
|
+
for (let i = 0; i < a.length; i++)
|
|
17
|
+
d |= a.charCodeAt(i) ^ b.charCodeAt(i);
|
|
18
|
+
return d === 0;
|
|
19
|
+
}
|
|
20
|
+
export async function handleAutoSend(request) {
|
|
21
|
+
const rawBody = await request.text();
|
|
22
|
+
const ts = request.headers.get("x-timestamp")?.trim() ?? "";
|
|
23
|
+
const sig = (request.headers.get("x-signature")?.trim() ?? "").toLowerCase();
|
|
24
|
+
if (!/^\d{13}$/.test(ts))
|
|
25
|
+
return json(401, { ok: false, code: "invalid_timestamp", error: "x-timestamp moet epoch-milliseconden zijn." });
|
|
26
|
+
if (Math.abs(Date.now() - Number(ts)) > MAX_SKEW_MS)
|
|
27
|
+
return json(401, { ok: false, code: "timestamp_out_of_range", error: "x-timestamp valt buiten de marge van 5 minuten." });
|
|
28
|
+
let secret;
|
|
29
|
+
try {
|
|
30
|
+
const { getFloridayGatewaySecret } = await import("../centralSecrets.server");
|
|
31
|
+
secret = await getFloridayGatewaySecret();
|
|
32
|
+
}
|
|
33
|
+
catch {
|
|
34
|
+
return json(401, { ok: false, code: "gateway_not_configured", error: "Ondertekeningsgeheim niet beschikbaar; niets verstuurd." });
|
|
35
|
+
}
|
|
36
|
+
const key = await crypto.subtle.importKey("raw", new TextEncoder().encode(secret), { name: "HMAC", hash: "SHA-256" }, false, ["sign"]);
|
|
37
|
+
const expected = hex(await crypto.subtle.sign("HMAC", key, new TextEncoder().encode(`${ts}.${rawBody}`)));
|
|
38
|
+
if (!sig || !safeEqual(sig, expected))
|
|
39
|
+
return json(401, { ok: false, code: "invalid_signature", error: "Handtekening klopt niet." });
|
|
40
|
+
let parsed;
|
|
41
|
+
try {
|
|
42
|
+
const r = bodySchema.safeParse(JSON.parse(rawBody));
|
|
43
|
+
if (!r.success)
|
|
44
|
+
return json(400, { ok: false, code: "invalid_body", error: "Body moet {\"orderId\":\"<uuid>\"} zijn." });
|
|
45
|
+
parsed = r.data;
|
|
46
|
+
}
|
|
47
|
+
catch {
|
|
48
|
+
return json(400, { ok: false, code: "invalid_body", error: "Body is geen geldige JSON." });
|
|
49
|
+
}
|
|
50
|
+
const orderId = parsed.orderId;
|
|
51
|
+
if (request.headers.get("idempotency-key")?.trim() !== `auto-send:${orderId}`)
|
|
52
|
+
return json(400, { ok: false, code: "invalid_idempotency_key", error: "idempotency-key moet auto-send:<orderId> zijn." });
|
|
53
|
+
try {
|
|
54
|
+
return await processOrder(orderId);
|
|
55
|
+
}
|
|
56
|
+
catch (e) {
|
|
57
|
+
const msg = e instanceof Error ? e.message : String(e);
|
|
58
|
+
return json(500, { ok: false, code: "internal_error", error: msg || "Onverwachte fout tijdens versturen." });
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
async function processOrder(orderId) {
|
|
62
|
+
const { supabaseAdmin } = await import("../../integrations/supabase/client.server");
|
|
63
|
+
const sb = supabaseAdmin;
|
|
64
|
+
const { data: order, error: oErr } = await sb.from("orders")
|
|
65
|
+
.select("id, order_number, custom_fields").eq("id", orderId).is("deleted_at", null).maybeSingle();
|
|
66
|
+
if (oErr)
|
|
67
|
+
return json(500, { ok: false, code: "lookup_failed", error: `Order kon niet worden opgezocht: ${oErr.message}` });
|
|
68
|
+
if (!order)
|
|
69
|
+
return json(422, { ok: false, code: "not_floriday", error: "Order niet gevonden." });
|
|
70
|
+
const cf = order.custom_fields ?? {};
|
|
71
|
+
const salesOrderId = typeof cf.floriday_sales_order_id === "string" ? cf.floriday_sales_order_id
|
|
72
|
+
: typeof cf.salesOrderId === "string" ? cf.salesOrderId : null;
|
|
73
|
+
if (!salesOrderId)
|
|
74
|
+
return json(422, { ok: false, code: "not_floriday", error: "Order heeft geen Floriday-id." });
|
|
75
|
+
const { ACCEPTED, prepareLoadingServer, runLoadingSend } = await import("../floridayLoading.functions");
|
|
76
|
+
const ref = order.order_number ?? order.id;
|
|
77
|
+
const already = async () => {
|
|
78
|
+
if (cf.floriday_fulfilled === true)
|
|
79
|
+
return true;
|
|
80
|
+
const { data } = await sb.from("floriday_loading_attempts").select("code")
|
|
81
|
+
.eq("step", "send").contains("order_refs", [ref]).in("code", [...ACCEPTED]).limit(1);
|
|
82
|
+
return Array.isArray(data) && data.length > 0;
|
|
83
|
+
};
|
|
84
|
+
if (await already())
|
|
85
|
+
return json(200, { ok: true, code: "already_sent" });
|
|
86
|
+
let p;
|
|
87
|
+
try {
|
|
88
|
+
p = await prepareLoadingServer(sb, ref);
|
|
89
|
+
}
|
|
90
|
+
catch (e) {
|
|
91
|
+
return json(409, { ok: false, code: "not_ready", error: e instanceof Error ? e.message : String(e) });
|
|
92
|
+
}
|
|
93
|
+
if (!p.canSend)
|
|
94
|
+
return json(409, { ok: false, code: "not_ready", error: p.blockers.join(" ") || "Geen opdracht." });
|
|
95
|
+
const res = await runLoadingSend(sb, p, { userId: null, source: "auto-send" });
|
|
96
|
+
if (res.ok) {
|
|
97
|
+
const allAlready = res.results.every((r) => r.code === "already_fulfilled");
|
|
98
|
+
return json(200, { ok: true, code: allAlready ? "already_sent" : "sent", results: res.results });
|
|
99
|
+
}
|
|
100
|
+
const fail = res.results.find((r) => !ACCEPTED.has(r.code));
|
|
101
|
+
return json(502, { ok: false, code: "floriday_rejected", error: fail?.message ?? "Floriday weigert de opdracht.", results: res.results });
|
|
102
|
+
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"moduleDefinition.d.ts","sourceRoot":"","sources":["../src/moduleDefinition.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAgBvD,eAAO,MAAM,yBAAyB,EAAE,
|
|
1
|
+
{"version":3,"file":"moduleDefinition.d.ts","sourceRoot":"","sources":["../src/moduleDefinition.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAgBvD,eAAO,MAAM,yBAAyB,EAAE,UAuBvC,CAAC"}
|
|
@@ -23,9 +23,12 @@ export const floridayAfhandelingModule = {
|
|
|
23
23
|
const info = getPickMode();
|
|
24
24
|
if (info.showCartControl)
|
|
25
25
|
return [...baseChildren, cartControlChild];
|
|
26
|
-
if (info.status !== "ok") {
|
|
27
|
-
return [...baseChildren, { ...cartControlChild, label: "Controle karren (
|
|
26
|
+
if (info.status !== "ok" && info.lastError) {
|
|
27
|
+
return [...baseChildren, { ...cartControlChild, label: "Controle karren (werkwijze niet bereikbaar)" }];
|
|
28
28
|
}
|
|
29
|
+
// Werkwijze wordt nog opgehaald: zonder toevoeging tonen.
|
|
30
|
+
if (info.status !== "ok")
|
|
31
|
+
return [...baseChildren, cartControlChild];
|
|
29
32
|
return baseChildren;
|
|
30
33
|
},
|
|
31
34
|
},
|
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.61",
|
|
4
4
|
"private": false,
|
|
5
5
|
"sideEffects": false,
|
|
6
6
|
"type": "module",
|
|
@@ -49,11 +49,11 @@
|
|
|
49
49
|
"@cloudflare/vite-plugin": "^1.25.5",
|
|
50
50
|
"@eslint/js": "^9.32.0",
|
|
51
51
|
"@flowselections/core": "1.0.29",
|
|
52
|
-
"@lovable.dev/vite-tanstack-config": "2.
|
|
52
|
+
"@lovable.dev/vite-tanstack-config": "2.26.5",
|
|
53
53
|
"@rsbuild/core": "^1.0.0",
|
|
54
54
|
"@tailwindcss/vite": "^4.2.1",
|
|
55
55
|
"@tanstack/react-query": "^5.83.0",
|
|
56
|
-
"@tanstack/router-plugin": "
|
|
56
|
+
"@tanstack/router-plugin": "1.167.33",
|
|
57
57
|
"@types/node": "^22.16.5",
|
|
58
58
|
"@types/react": "^19.2.0",
|
|
59
59
|
"@types/react-dom": "^19.2.0",
|