@flowselections/floriday-afhandeling-module 1.0.66 → 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.
- package/dist-lib/components/afhandeling/AutoProcessStatus.js +3 -3
- package/dist-lib/components/afhandeling/AutoSendStatus.js +1 -1
- package/dist-lib/components/afhandeling/CapacityWarning.d.ts +1 -1
- package/dist-lib/components/afhandeling/CapacityWarning.js +1 -1
- package/dist-lib/components/afhandeling/ControleLijstPrint.d.ts +2 -2
- package/dist-lib/components/afhandeling/ControleLijstPrint.js +2 -2
- package/dist-lib/components/afhandeling/ControlePage.js +5 -5
- package/dist-lib/components/afhandeling/DagDetailDialog.d.ts +1 -1
- package/dist-lib/components/afhandeling/DagDetailDialog.d.ts.map +1 -1
- package/dist-lib/components/afhandeling/DagDetailDialog.js +63 -22
- package/dist-lib/components/afhandeling/LeveringenPage.js +5 -5
- package/dist-lib/components/afhandeling/NieuweVervoerderPage.js +1 -1
- package/dist-lib/components/afhandeling/NuVersturenButton.js +1 -1
- package/dist-lib/components/afhandeling/PickAgendaView.d.ts +1 -1
- package/dist-lib/components/afhandeling/PickAgendaView.js +5 -5
- package/dist-lib/components/afhandeling/PickingPage.js +1 -1
- package/dist-lib/components/afhandeling/PlanningAgendaPage.d.ts +1 -1
- package/dist-lib/components/afhandeling/PlanningAgendaPage.js +2 -2
- package/dist-lib/components/afhandeling/ServiceAreaSelect.js +1 -1
- package/dist-lib/components/afhandeling/SignupMailMoments.js +5 -3
- package/dist-lib/components/afhandeling/VervoerderBewerkenPage.js +1 -1
- package/dist-lib/components/afhandeling/VervoerderForm.js +6 -6
- package/dist-lib/components/afhandeling/VervoerdersPage.js +7 -7
- package/dist-lib/components/afhandeling/VerzetOrderDialog.js +6 -6
- package/dist-lib/components/afhandeling/WeekAgendaView.d.ts +2 -2
- package/dist-lib/components/afhandeling/WeekAgendaView.js +9 -9
- package/dist-lib/components/afhandeling/WerkplekWaarschuwing.js +1 -1
- package/dist-lib/components/pickstation/PakbonTemplate.d.ts +2 -2
- package/dist-lib/components/pickstation/PakbonTemplate.js +1 -1
- package/dist-lib/components/pickstation/printDocuments.d.ts +1 -1
- package/dist-lib/components/pickstation/printDocuments.js +1 -1
- package/dist-lib/components/settings/AfhandelingSettingsCard.js +4 -4
- package/dist-lib/components/settings/VervoerdersSettingsCard.js +2 -2
- package/dist-lib/hooks/useCapacityCheck.d.ts +1 -1
- package/dist-lib/hooks/useCapacityCheck.js +1 -1
- package/dist-lib/hooks/useCartIndex.js +2 -2
- package/dist-lib/hooks/useConsistencyCheck.js +1 -1
- package/dist-lib/hooks/useEngineBufferEvents.js +1 -1
- package/dist-lib/hooks/useEngineTasks.d.ts +1 -1
- package/dist-lib/hooks/useEngineTasks.js +2 -2
- package/dist-lib/hooks/useKnownOrders.js +4 -4
- package/dist-lib/hooks/useOrderBuffers.js +1 -1
- package/dist-lib/hooks/useOrderMeldingen.js +1 -1
- package/dist-lib/hooks/useOrderPickDates.js +3 -3
- package/dist-lib/hooks/useOrderPlanning.d.ts +3 -3
- package/dist-lib/hooks/useOrderPlanning.js +13 -13
- package/dist-lib/hooks/usePickAgenda.js +4 -4
- package/dist-lib/hooks/usePickMode.d.ts +2 -2
- package/dist-lib/hooks/usePickMode.js +1 -1
- package/dist-lib/index.d.ts +16 -16
- package/dist-lib/index.js +16 -16
- package/dist-lib/integrations/supabase/auth-middleware.d.ts +1 -1
- package/dist-lib/integrations/supabase/client.server.d.ts +1 -1
- package/dist-lib/integrations/supabase/moduleClient.d.ts +1 -1
- package/dist-lib/integrations/supabase/types.d.ts +586 -0
- package/dist-lib/integrations/supabase/types.d.ts.map +1 -1
- package/dist-lib/lib/afhandelingSettings.functions.d.ts +2 -2
- package/dist-lib/lib/afhandelingSettings.functions.js +1 -1
- package/dist-lib/lib/agendaRange.js +1 -1
- package/dist-lib/lib/authGateway.server.js +2 -2
- package/dist-lib/lib/carrierMatch.server.js +1 -1
- package/dist-lib/lib/carrierPlanning.d.ts +1 -1
- package/dist-lib/lib/carrierPlanning.js +3 -3
- package/dist-lib/lib/carrierSignup.functions.d.ts +11 -4
- package/dist-lib/lib/carrierSignup.functions.d.ts.map +1 -1
- package/dist-lib/lib/carrierSignup.functions.js +2 -2
- package/dist-lib/lib/carriers.functions.d.ts +7 -7
- package/dist-lib/lib/carriers.functions.js +3 -3
- package/dist-lib/lib/cartAssignments.functions.d.ts +8 -8
- package/dist-lib/lib/cartAssignments.functions.js +1 -1
- package/dist-lib/lib/cartControl.functions.d.ts +11 -11
- package/dist-lib/lib/cartControl.functions.js +2 -2
- package/dist-lib/lib/cartMoveImpact.d.ts +1 -1
- package/dist-lib/lib/cartMoveImpact.js +1 -1
- package/dist-lib/lib/cartRescheduling.js +1 -1
- package/dist-lib/lib/deliveryNote.functions.d.ts +1 -1
- package/dist-lib/lib/deliveryNote.functions.js +2 -2
- package/dist-lib/lib/deliveryNotePrint.js +3 -3
- package/dist-lib/lib/engineLayouts.functions.d.ts +1 -1
- package/dist-lib/lib/engineLayouts.functions.js +1 -1
- package/dist-lib/lib/floriday.functions.d.ts +2 -2
- package/dist-lib/lib/floriday.functions.js +2 -2
- package/dist-lib/lib/floridayAutoProcess.js +2 -2
- package/dist-lib/lib/floridayFulfilled.d.ts +9 -0
- package/dist-lib/lib/floridayFulfilled.d.ts.map +1 -0
- package/dist-lib/lib/floridayFulfilled.js +28 -0
- package/dist-lib/lib/floridayFulfilled.test.d.ts +2 -0
- package/dist-lib/lib/floridayFulfilled.test.d.ts.map +1 -0
- package/dist-lib/lib/floridayFulfilled.test.js +28 -0
- package/dist-lib/lib/floridayFulfillmentSend.server.js +3 -3
- package/dist-lib/lib/floridayLoading.functions.d.ts +2 -2
- package/dist-lib/lib/floridayLoading.functions.d.ts.map +1 -1
- package/dist-lib/lib/floridayLoading.functions.js +24 -3
- package/dist-lib/lib/gatewayBase.server.js +1 -1
- package/dist-lib/lib/invalidatePlanning.js +1 -1
- package/dist-lib/lib/logisticsEngine/engine.js +1 -1
- package/dist-lib/lib/logisticsEngine/reschedule.js +2 -2
- package/dist-lib/lib/logisticsEngine/staffPlanning.js +1 -1
- package/dist-lib/lib/orderFulfilment.functions.d.ts +1 -1
- package/dist-lib/lib/orderFulfilment.functions.js +1 -1
- package/dist-lib/lib/pickDates.functions.d.ts +1 -1
- package/dist-lib/lib/pickDates.functions.js +2 -2
- package/dist-lib/lib/pickMode.js +1 -1
- package/dist-lib/lib/pickWorkdays.js +1 -1
- package/dist-lib/lib/pickstationOrders.server.d.ts +2 -2
- package/dist-lib/lib/pickstationOrders.server.js +4 -4
- package/dist-lib/lib/realtimeBus.js +1 -1
- package/dist-lib/lib/serverRoutes/autoSend.handler.d.ts.map +1 -1
- package/dist-lib/lib/serverRoutes/autoSend.handler.js +12 -4
- package/dist-lib/lib/serverRoutes/index.d.ts +5 -5
- package/dist-lib/lib/serverRoutes/index.js +5 -5
- package/dist-lib/lib/serverRoutes/pickstationOrders.handler.js +1 -1
- package/dist-lib/lib/serverRoutes/pickstationPrint.handler.js +1 -1
- package/dist-lib/lib/serverRoutes/pickstationStatus.handler.js +1 -1
- package/dist-lib/lib/signupMailText.d.ts.map +1 -1
- package/dist-lib/lib/signupMailText.js +4 -0
- package/dist-lib/moduleDefinition.js +3 -3
- package/package.json +5 -4
|
@@ -2,9 +2,9 @@
|
|
|
2
2
|
// - fulfillment-order/status { salesOrderIds } → fulfillmentRequestId + deliveryOrderId per order
|
|
3
3
|
// - fulfillment-order/send { deliveryOrderId, ... } → belading (enige route voor belading)
|
|
4
4
|
// Adres en geheim komen uit de omgeving; ontbreken ze, dan volgt een fout (fail closed).
|
|
5
|
-
import { resolveGatewayBaseServer } from "./gatewayBase.server";
|
|
6
|
-
import { getFloridayGatewaySecret } from "./centralSecrets.server";
|
|
7
|
-
import { signBody } from "./authGateway.server";
|
|
5
|
+
import { resolveGatewayBaseServer } from "./gatewayBase.server.js";
|
|
6
|
+
import { getFloridayGatewaySecret } from "./centralSecrets.server.js";
|
|
7
|
+
import { signBody } from "./authGateway.server.js";
|
|
8
8
|
async function signedPost(path, payload) {
|
|
9
9
|
const secret = await getFloridayGatewaySecret(); // throws als het ontbreekt
|
|
10
10
|
const base = await resolveGatewayBaseServer(); // throws als het ontbreekt
|
|
@@ -77,7 +77,7 @@ export declare const LOAD_CARRIER_REF_MAX = 14;
|
|
|
77
77
|
export declare const ACCEPTED: Set<string>;
|
|
78
78
|
/** Stelt de belading samen en toont de controles. Verstuurt niets. */
|
|
79
79
|
export declare const prepareFloridayLoading: import("@tanstack/start-client-core").RequiredFetcher<readonly [import("@tanstack/start-client-core").FunctionMiddlewareAfterServer<{}, unknown, undefined, {
|
|
80
|
-
supabase: import("../integrations/supabase/auth-middleware").AuthedSupabaseClient;
|
|
80
|
+
supabase: import("../integrations/supabase/auth-middleware.js").AuthedSupabaseClient;
|
|
81
81
|
userId: string;
|
|
82
82
|
claims: import("@supabase/auth-js").JwtPayload;
|
|
83
83
|
}, undefined, undefined, undefined>], (d: {
|
|
@@ -92,7 +92,7 @@ export declare const prepareFloridayLoading: import("@tanstack/start-client-core
|
|
|
92
92
|
* floriday_loading_attempts. Herhalen gebruikt altijd dezelfde fulfillmentOrderId.
|
|
93
93
|
*/
|
|
94
94
|
export declare const sendFloridayLoading: import("@tanstack/start-client-core").RequiredFetcher<readonly [import("@tanstack/start-client-core").FunctionMiddlewareAfterServer<{}, unknown, undefined, {
|
|
95
|
-
supabase: import("../integrations/supabase/auth-middleware").AuthedSupabaseClient;
|
|
95
|
+
supabase: import("../integrations/supabase/auth-middleware.js").AuthedSupabaseClient;
|
|
96
96
|
userId: string;
|
|
97
97
|
claims: import("@supabase/auth-js").JwtPayload;
|
|
98
98
|
}, undefined, undefined, undefined>], (d: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"floridayLoading.functions.d.ts","sourceRoot":"","sources":["../../src/lib/floridayLoading.functions.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"floridayLoading.functions.d.ts","sourceRoot":"","sources":["../../src/lib/floridayLoading.functions.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,7 +4,8 @@
|
|
|
4
4
|
// `floriday_loading_identifiers`; de Floriday-koppeling geeft ze ongewijzigd door.
|
|
5
5
|
// Sets: Floriday knipt een set op in losse verkooporders → één regel per onderdeel.
|
|
6
6
|
import { createServerFn } from "@tanstack/react-start";
|
|
7
|
-
import { requireSupabaseAuth } from "../integrations/supabase/auth-middleware";
|
|
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
|
|
@@ -163,7 +184,7 @@ async function buildLoading(supabase, orderRef) {
|
|
|
163
184
|
let status = new Map();
|
|
164
185
|
let statusFailed = false;
|
|
165
186
|
try {
|
|
166
|
-
const { fetchFulfillmentStatus } = await import("./floridayFulfillmentSend.server");
|
|
187
|
+
const { fetchFulfillmentStatus } = await import("./floridayFulfillmentSend.server.js");
|
|
167
188
|
status = await fetchFulfillmentStatus(soIds, baseFo ? [baseFo] : []);
|
|
168
189
|
}
|
|
169
190
|
catch (e) {
|
|
@@ -392,7 +413,7 @@ export async function prepareLoadingServer(supabase, orderRef) {
|
|
|
392
413
|
* gebruiken allebei deze functie met dezelfde vaste kenmerken.
|
|
393
414
|
*/
|
|
394
415
|
export async function runLoadingSend(supabase, p, actor) {
|
|
395
|
-
const { sendFulfillmentOrder, floridayFoutTekst } = await import("./floridayFulfillmentSend.server");
|
|
416
|
+
const { sendFulfillmentOrder, floridayFoutTekst } = await import("./floridayFulfillmentSend.server.js");
|
|
396
417
|
const log = async (s, row) => {
|
|
397
418
|
const rs = row.request_summary ?? {};
|
|
398
419
|
const { error } = await supabase.from("floriday_loading_attempts").insert({
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
// Server-only resolver voor de gateway-base-URL.
|
|
2
2
|
// Volgorde: PUBLIC_BASE_URL (shell levert dit) → central /api/shell-host.
|
|
3
3
|
// Nooit stille fallback: throw als niets werkt.
|
|
4
|
-
import { getShellHost } from "./centralSecrets.server";
|
|
4
|
+
import { getShellHost } from "./centralSecrets.server.js";
|
|
5
5
|
function strip(url) {
|
|
6
6
|
const trimmed = url.trim().replace(/\/$/, "");
|
|
7
7
|
if (!/^https?:\/\//i.test(trimmed)) {
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { resetAllCartOverrides } from "./cartAssignments.functions";
|
|
1
|
+
import { resetAllCartOverrides } from "./cartAssignments.functions.js";
|
|
2
2
|
/**
|
|
3
3
|
* Invalideer alle queries die invloed hebben op de logistieke planning:
|
|
4
4
|
* orders, instellingen, vervoerders. Hierdoor herberekent useOrderPlanning
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* Deze module beslist zelf niets meer over buffering, belading, picken of
|
|
5
5
|
* transport. Alle besluiten komen van de Rule Engine (stap 3 "Order picken").
|
|
6
6
|
*/
|
|
7
|
-
import { supabase } from "../../integrations/supabase/moduleClient";
|
|
7
|
+
import { supabase } from "../../integrations/supabase/moduleClient.js";
|
|
8
8
|
export const OWNER_MODULE = "afhandeling";
|
|
9
9
|
export const SOURCE_MODULE = "afhandeling";
|
|
10
10
|
/** Vraag het indelingsbesluit op. Nooit zelf indelen zonder dit besluit. */
|
|
@@ -2,8 +2,8 @@
|
|
|
2
2
|
* Order verzetten — uitsluitend via de twee RPC's van de Logistics Engine.
|
|
3
3
|
* Deze module rekent zelf niets uit en doet nooit een eigen UPDATE.
|
|
4
4
|
*/
|
|
5
|
-
import { supabase } from "../../integrations/supabase/moduleClient";
|
|
6
|
-
import { amsterdamDay, formatAmsterdam } from "../timezone";
|
|
5
|
+
import { supabase } from "../../integrations/supabase/moduleClient.js";
|
|
6
|
+
import { amsterdamDay, formatAmsterdam } from "../timezone.js";
|
|
7
7
|
export async function previewReschedule(input) {
|
|
8
8
|
const { data, error } = await supabase.rpc("logistics_reschedule_preview", {
|
|
9
9
|
p_order_ref: input.orderRef,
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { supabase } from "../../integrations/supabase/moduleClient.js";
|
|
2
|
-
import { SOURCE_MODULE } from "./engine";
|
|
2
|
+
import { SOURCE_MODULE } from "./engine.js";
|
|
3
3
|
export function toDateKey(d) {
|
|
4
4
|
const m = String(d.getMonth() + 1).padStart(2, "0");
|
|
5
5
|
const day = String(d.getDate()).padStart(2, "0");
|
|
@@ -12,7 +12,7 @@ export interface MarkOrderShippedResult {
|
|
|
12
12
|
* schrijft alleen dezelfde waarde weg en raakt verder niets aan.
|
|
13
13
|
*/
|
|
14
14
|
export declare const markOrderShipped: import("@tanstack/start-client-core").RequiredFetcher<readonly [import("@tanstack/start-client-core").FunctionMiddlewareAfterServer<{}, unknown, undefined, {
|
|
15
|
-
supabase: import("../integrations/supabase/auth-middleware").AuthedSupabaseClient;
|
|
15
|
+
supabase: import("../integrations/supabase/auth-middleware.js").AuthedSupabaseClient;
|
|
16
16
|
userId: string;
|
|
17
17
|
claims: import("@supabase/auth-js").JwtPayload;
|
|
18
18
|
}, undefined, undefined, undefined>], (input: MarkOrderShippedInput) => {
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { createServerFn } from "@tanstack/react-start";
|
|
2
|
-
import { requireSupabaseAuth } from "../integrations/supabase/auth-middleware";
|
|
2
|
+
import { requireSupabaseAuth } from "../integrations/supabase/auth-middleware.js";
|
|
3
3
|
/** Status die de Verkoop Module gebruikt voor een afgehandelde order. */
|
|
4
4
|
const SHIPPED_STATUS = "Verzonden";
|
|
5
5
|
/**
|
|
@@ -20,7 +20,7 @@ export interface ListOrderPickDatesInput {
|
|
|
20
20
|
to?: string;
|
|
21
21
|
}
|
|
22
22
|
export declare const listOrderPickDates: import("@tanstack/start-client-core").OptionalFetcher<readonly [import("@tanstack/start-client-core").FunctionMiddlewareAfterServer<{}, unknown, undefined, {
|
|
23
|
-
supabase: import("../integrations/supabase/auth-middleware").AuthedSupabaseClient;
|
|
23
|
+
supabase: import("../integrations/supabase/auth-middleware.js").AuthedSupabaseClient;
|
|
24
24
|
userId: string;
|
|
25
25
|
claims: import("@supabase/auth-js").JwtPayload;
|
|
26
26
|
}, undefined, undefined, undefined>], (input: ListOrderPickDatesInput | undefined) => ListOrderPickDatesInput, Promise<{
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { createServerFn } from "@tanstack/react-start";
|
|
2
|
-
import { requireSupabaseAuth } from "../integrations/supabase/auth-middleware";
|
|
3
|
-
import { normalizeOrderNumber } from "./orderRefs";
|
|
2
|
+
import { requireSupabaseAuth } from "../integrations/supabase/auth-middleware.js";
|
|
3
|
+
import { normalizeOrderNumber } from "./orderRefs.js";
|
|
4
4
|
function dayInAmsterdam(iso) {
|
|
5
5
|
if (!iso)
|
|
6
6
|
return null;
|
package/dist-lib/lib/pickMode.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { supabase } from "../integrations/supabase/moduleClient";
|
|
1
|
+
import { supabase } from "../integrations/supabase/moduleClient.js";
|
|
2
2
|
/** Nog nooit met succes opgehaald: werkwijze onbekend. */
|
|
3
3
|
const UNKNOWN = { pickMode: null, showCartControl: false, status: "unknown" };
|
|
4
4
|
const PICK_MODE_TIMEOUT_MS = 8000;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { createClient } from "@supabase/supabase-js";
|
|
2
|
-
import type { PickstationOrder } from "./pickstationTypes";
|
|
3
|
-
export type { PickstationLine, PickstationOrder } from "./pickstationTypes";
|
|
2
|
+
import type { PickstationOrder } from "./pickstationTypes.js";
|
|
3
|
+
export type { PickstationLine, PickstationOrder } from "./pickstationTypes.js";
|
|
4
4
|
export declare function loadTodaysPickstationOrders(client?: ReturnType<typeof createClient>): Promise<PickstationOrder[]>;
|
|
5
5
|
export declare function fetchFloridayAuctionLetterPdf(_orderId: string): Promise<{
|
|
6
6
|
base64: string;
|
|
@@ -2,9 +2,9 @@
|
|
|
2
2
|
// Uses the publishable-key Supabase client + SECURITY DEFINER RPCs so the
|
|
3
3
|
// public Pickstation works without a service-role key.
|
|
4
4
|
import { createClient } from "@supabase/supabase-js";
|
|
5
|
-
import { calculateOrderPlanning, distributePickDates, } from "./planning";
|
|
6
|
-
import { normalizePickupMoments, normalizePlanningCarriers, sanitizeWeekdays, selectCarrierForTarget, } from "./carrierPlanning";
|
|
7
|
-
import { loadPickWorkdays } from "./pickWorkdays";
|
|
5
|
+
import { calculateOrderPlanning, distributePickDates, } from "./planning.js";
|
|
6
|
+
import { normalizePickupMoments, normalizePlanningCarriers, sanitizeWeekdays, selectCarrierForTarget, } from "./carrierPlanning.js";
|
|
7
|
+
import { loadPickWorkdays } from "./pickWorkdays.js";
|
|
8
8
|
const LOG_SCOPE = "[pickstation]";
|
|
9
9
|
function debug(action, details) {
|
|
10
10
|
console.info(`${LOG_SCOPE} ${action}`, {
|
|
@@ -478,7 +478,7 @@ export async function fetchFloridayAuctionLetterPdf(_orderId) {
|
|
|
478
478
|
}
|
|
479
479
|
/** Haalt een Floriday-afleverbrief PDF op via de Authenticatie-module gateway. */
|
|
480
480
|
export async function fetchFloridayDeliveryNotePdf(salesOrderId) {
|
|
481
|
-
const { fetchDeliveryNotePdf } = await import("./authGateway.server");
|
|
481
|
+
const { fetchDeliveryNotePdf } = await import("./authGateway.server.js");
|
|
482
482
|
return fetchDeliveryNotePdf(salesOrderId);
|
|
483
483
|
}
|
|
484
484
|
export async function setCartStatus(orderSource, orderId, cartIndex, status, client) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"autoSend.handler.d.ts","sourceRoot":"","sources":["../../../src/lib/serverRoutes/autoSend.handler.ts"],"names":[],"mappings":"
|
|
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 });
|
|
@@ -35,7 +36,7 @@ export async function handleAutoSend(request, admin) {
|
|
|
35
36
|
return json(401, { ok: false, code: "timestamp_out_of_range", error: "x-timestamp valt buiten de marge van 5 minuten." });
|
|
36
37
|
let secret;
|
|
37
38
|
try {
|
|
38
|
-
const { getFloridayGatewaySecret } = await import("../centralSecrets.server");
|
|
39
|
+
const { getFloridayGatewaySecret } = await import("../centralSecrets.server.js");
|
|
39
40
|
secret = await getFloridayGatewaySecret();
|
|
40
41
|
}
|
|
41
42
|
catch {
|
|
@@ -62,7 +63,7 @@ export async function handleAutoSend(request, admin) {
|
|
|
62
63
|
let sbClient = admin ?? null;
|
|
63
64
|
if (!sbClient) {
|
|
64
65
|
try {
|
|
65
|
-
sbClient = (await import("../../integrations/supabase/client.server")).supabaseAdmin;
|
|
66
|
+
sbClient = (await import("../../integrations/supabase/client.server.js")).supabaseAdmin;
|
|
66
67
|
}
|
|
67
68
|
catch {
|
|
68
69
|
sbClient = null;
|
|
@@ -89,10 +90,17 @@ async function processOrder(orderId, sb) {
|
|
|
89
90
|
: typeof cf.salesOrderId === "string" ? cf.salesOrderId : null;
|
|
90
91
|
if (!salesOrderId)
|
|
91
92
|
return json(422, { ok: false, code: "not_floriday", error: "Order heeft geen Floriday-id." });
|
|
92
|
-
const { ACCEPTED, prepareLoadingServer, runLoadingSend } = await import("../floridayLoading.functions");
|
|
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,6 +1,6 @@
|
|
|
1
|
-
export { handlePickstationOrders } from "./pickstationOrders.handler";
|
|
2
|
-
export { handlePickstationPrint } from "./pickstationPrint.handler";
|
|
3
|
-
export { handlePickstationStatus } from "./pickstationStatus.handler";
|
|
4
|
-
export { handleDispatchCarrierSignups } from "./dispatchCarrierSignups.handler";
|
|
5
|
-
export { handleAutoSend } from "./autoSend.handler";
|
|
1
|
+
export { handlePickstationOrders } from "./pickstationOrders.handler.js";
|
|
2
|
+
export { handlePickstationPrint } from "./pickstationPrint.handler.js";
|
|
3
|
+
export { handlePickstationStatus } from "./pickstationStatus.handler.js";
|
|
4
|
+
export { handleDispatchCarrierSignups } from "./dispatchCarrierSignups.handler.js";
|
|
5
|
+
export { handleAutoSend } from "./autoSend.handler.js";
|
|
6
6
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
// Barrel voor shell-hostbare server-route handlers.
|
|
2
2
|
// Wordt via de subpath-export "@flowselections/floriday-afhandeling-module/server-routes"
|
|
3
3
|
// door het dashboard geladen; NIET re-exporteren vanuit src/index.ts (client-bundle-vrij).
|
|
4
|
-
export { handlePickstationOrders } from "./pickstationOrders.handler";
|
|
5
|
-
export { handlePickstationPrint } from "./pickstationPrint.handler";
|
|
6
|
-
export { handlePickstationStatus } from "./pickstationStatus.handler";
|
|
7
|
-
export { handleDispatchCarrierSignups } from "./dispatchCarrierSignups.handler";
|
|
8
|
-
export { handleAutoSend } from "./autoSend.handler";
|
|
4
|
+
export { handlePickstationOrders } from "./pickstationOrders.handler.js";
|
|
5
|
+
export { handlePickstationPrint } from "./pickstationPrint.handler.js";
|
|
6
|
+
export { handlePickstationStatus } from "./pickstationStatus.handler.js";
|
|
7
|
+
export { handleDispatchCarrierSignups } from "./dispatchCarrierSignups.handler.js";
|
|
8
|
+
export { handleAutoSend } from "./autoSend.handler.js";
|
|
@@ -20,7 +20,7 @@ export async function handlePickstationOrders(request, supabase) {
|
|
|
20
20
|
userAgent: request.headers.get("user-agent"),
|
|
21
21
|
});
|
|
22
22
|
try {
|
|
23
|
-
const { loadTodaysPickstationOrders } = await import("../pickstationOrders.server");
|
|
23
|
+
const { loadTodaysPickstationOrders } = await import("../pickstationOrders.server.js");
|
|
24
24
|
const orders = await loadTodaysPickstationOrders(supabase);
|
|
25
25
|
console.info("[pickstation-api] GET orders ok", {
|
|
26
26
|
requestId,
|
|
@@ -38,7 +38,7 @@ export async function handlePickstationPrint(request, supabase) {
|
|
|
38
38
|
const wantsAuction = docs.includes("auction-letter");
|
|
39
39
|
const wantsDeliveryNote = docs.includes("delivery-note");
|
|
40
40
|
const isConfirmation = body.confirmed === true;
|
|
41
|
-
const { fetchFloridayAuctionLetterPdf, fetchFloridayDeliveryNotePdf, logPrint } = await import("../pickstationOrders.server");
|
|
41
|
+
const { fetchFloridayAuctionLetterPdf, fetchFloridayDeliveryNotePdf, logPrint } = await import("../pickstationOrders.server.js");
|
|
42
42
|
const sourceOrderId = typeof body.sourceOrderId === "string" && body.sourceOrderId
|
|
43
43
|
? body.sourceOrderId
|
|
44
44
|
: body.orderId;
|
|
@@ -16,7 +16,7 @@ export async function handlePickstationStatus(request, supabase) {
|
|
|
16
16
|
return Response.json({ error: "Ongeldige invoer" }, { status: 400 });
|
|
17
17
|
}
|
|
18
18
|
try {
|
|
19
|
-
const { setCartStatus } = await import("../pickstationOrders.server");
|
|
19
|
+
const { setCartStatus } = await import("../pickstationOrders.server.js");
|
|
20
20
|
await setCartStatus(body.orderSource, body.orderId, body.cartIndex, body.status, supabase);
|
|
21
21
|
return Response.json({ ok: true, requestId }, { headers: { "Cache-Control": "no-store", "X-Robots-Tag": "noindex, nofollow" } });
|
|
22
22
|
}
|
|
@@ -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,
|
|
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"}
|
|
@@ -19,6 +19,10 @@ export function signupReasonText(reason) {
|
|
|
19
19
|
return "Dit ophaalmoment heeft geen orders meer.";
|
|
20
20
|
case "after_pickup":
|
|
21
21
|
return "De ophaaltijd is al voorbij.";
|
|
22
|
+
case "waiting_for_carts":
|
|
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.";
|
|
22
26
|
case "already_sent":
|
|
23
27
|
return "Deze stand is al verstuurd.";
|
|
24
28
|
default:
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { CalendarCheck, CalendarRange, ClipboardCheck, PackageCheck } from "lucide-react";
|
|
2
|
-
import { AfhandelingSettingsCard } from "./components/settings/AfhandelingSettingsCard";
|
|
3
|
-
import { VervoerdersSettingsCard } from "./components/settings/VervoerdersSettingsCard";
|
|
4
|
-
import { getPickMode } from "./lib/pickMode";
|
|
2
|
+
import { AfhandelingSettingsCard } from "./components/settings/AfhandelingSettingsCard.js";
|
|
3
|
+
import { VervoerdersSettingsCard } from "./components/settings/VervoerdersSettingsCard.js";
|
|
4
|
+
import { getPickMode } from "./lib/pickMode.js";
|
|
5
5
|
const baseChildren = [
|
|
6
6
|
{ label: "Pick Agenda", href: "/afhandeling/picking", icon: CalendarCheck },
|
|
7
7
|
{ label: "Planning en leveringen", href: "/afhandeling/leveringen", icon: CalendarRange },
|
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.71",
|
|
4
4
|
"private": false,
|
|
5
5
|
"sideEffects": false,
|
|
6
6
|
"type": "module",
|
|
@@ -26,7 +26,7 @@
|
|
|
26
26
|
"scripts": {
|
|
27
27
|
"dev": "vite dev",
|
|
28
28
|
"build": "vite build",
|
|
29
|
-
"build:lib": "tsc -p tsconfig.build.json && tsc-alias -p tsconfig.build.json && node -e \"require('fs').writeFileSync('dist-lib/styles.css', '@source \\\"./\\\";\\n')\"",
|
|
29
|
+
"build:lib": "tsc -p tsconfig.build.json && tsc-alias -p tsconfig.build.json --resolve-full-paths && node -e \"require('fs').writeFileSync('dist-lib/styles.css', '@source \\\"./\\\";\\n')\"",
|
|
30
30
|
"build:lib:watch": "tsc -p tsconfig.build.json --watch",
|
|
31
31
|
"build:dev": "vite build --mode development",
|
|
32
32
|
"preview": "vite preview",
|
|
@@ -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
|
-
"
|
|
75
|
+
"vitest": "^5.0.5"
|
|
75
76
|
},
|
|
76
77
|
"flowselections": {
|
|
77
78
|
"moduleId": "Afhandeling",
|