@flowselections/logistiek-engine 1.0.151 → 1.0.155
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/AutomatischVersturenCard.d.ts.map +1 -1
- package/dist-lib/components/AutomatischVersturenCard.js +1 -1
- package/dist-lib/components/BeheerPage.d.ts.map +1 -1
- package/dist-lib/components/BeheerPage.js +2 -1
- package/dist-lib/components/ConsistentieCard.d.ts.map +1 -1
- package/dist-lib/components/ConsistentieCard.js +1 -1
- package/dist-lib/components/OpruimlijstKarrenCard.d.ts +2 -0
- package/dist-lib/components/OpruimlijstKarrenCard.d.ts.map +1 -0
- package/dist-lib/components/OpruimlijstKarrenCard.js +42 -0
- package/dist-lib/hooks/useWerkwijzeStatus.d.ts.map +1 -1
- package/dist-lib/hooks/useWerkwijzeStatus.js +28 -2
- package/dist-lib/integrations/supabase/types.d.ts +588 -0
- package/dist-lib/integrations/supabase/types.d.ts.map +1 -1
- package/dist-lib/lib/autoSend.d.ts +1 -0
- package/dist-lib/lib/autoSend.d.ts.map +1 -1
- package/dist-lib/lib/autoSend.functions.d.ts +1 -0
- package/dist-lib/lib/autoSend.functions.d.ts.map +1 -1
- package/dist-lib/lib/autoSend.functions.js +2 -0
- package/dist-lib/lib/autoSend.js +3 -0
- package/dist-lib/lib/autoSend.server.d.ts.map +1 -1
- package/dist-lib/lib/autoSend.server.js +9 -0
- package/dist-lib/lib/floridayCartCarriers.js +1 -1
- package/dist-lib/lib/floridayPush.server.js +1 -1
- package/dist-lib/lib/handlers/logistics-tick.server.js +8 -0
- package/dist-lib/lib/modulePrompts.d.ts.map +1 -1
- package/dist-lib/lib/modulePrompts.js +279 -0
- package/dist-lib/lib/moduleVersion.d.ts +1 -1
- package/dist-lib/lib/moduleVersion.js +1 -1
- package/dist-lib/lib/ruleEngineSchema.d.ts.map +1 -1
- package/dist-lib/lib/ruleEngineSchema.js +8 -1
- package/dist-lib/lib/shippingNoteQueue.server.d.ts.map +1 -1
- package/dist-lib/lib/shippingNoteQueue.server.js +10 -7
- package/dist-lib/lib/stickerRules.js +1 -1
- package/package.json +1 -1
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
export declare const AUTO_SEND_PATH = "/api/public/hooks/afhandeling-auto-send";
|
|
2
2
|
export declare const AUTO_SEND_WACHTTIJDEN_MIN: readonly [1, 5, 15, 60];
|
|
3
3
|
export declare const AUTO_SEND_MAX_POGINGEN = 5;
|
|
4
|
+
export declare const AUTO_SEND_ROUTE_ONTBREEKT = "Het adres voor automatisch versturen bestaat niet in deze Shell. Werk Afhandeling bij en publiceer de Shell opnieuw.";
|
|
4
5
|
export declare const AUTO_SEND_ADRES_REDEN = "Automatisch versturen niet mogelijk: Shell-adres ontbreekt";
|
|
5
6
|
export declare function normaliseerShellAdres(v: unknown): string | null;
|
|
6
7
|
export declare function autoSendBody(orderId: string): string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"autoSend.d.ts","sourceRoot":"","sources":["../../src/lib/autoSend.ts"],"names":[],"mappings":"AAUA,eAAO,MAAM,cAAc,4CAA4C,CAAC;AACxE,eAAO,MAAM,yBAAyB,yBAA0B,CAAC;AACjE,eAAO,MAAM,sBAAsB,IAAI,CAAC;AACxC,eAAO,MAAM,qBAAqB,+DAA+D,CAAC;AAElG,wBAAgB,qBAAqB,CAAC,CAAC,EAAE,OAAO,GAAG,MAAM,GAAG,IAAI,CAI/D;AAED,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAEpD;AASD,wBAAsB,kBAAkB,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAE5G;AAED,2EAA2E;AAC3E,wBAAgB,iBAAiB,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAGnD;AAED,MAAM,MAAM,gBAAgB,GAAG;IAAE,KAAK,EAAE,WAAW,GAAG,YAAY,GAAG,SAAS,CAAC;IAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,CAAC;AAEvG;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,gBAAgB,
|
|
1
|
+
{"version":3,"file":"autoSend.d.ts","sourceRoot":"","sources":["../../src/lib/autoSend.ts"],"names":[],"mappings":"AAUA,eAAO,MAAM,cAAc,4CAA4C,CAAC;AACxE,eAAO,MAAM,yBAAyB,yBAA0B,CAAC;AACjE,eAAO,MAAM,sBAAsB,IAAI,CAAC;AACxC,eAAO,MAAM,yBAAyB,yHACkF,CAAC;AACzH,eAAO,MAAM,qBAAqB,+DAA+D,CAAC;AAElG,wBAAgB,qBAAqB,CAAC,CAAC,EAAE,OAAO,GAAG,MAAM,GAAG,IAAI,CAI/D;AAED,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAEpD;AASD,wBAAsB,kBAAkB,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAE5G;AAED,2EAA2E;AAC3E,wBAAgB,iBAAiB,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAGnD;AAED,MAAM,MAAM,gBAAgB,GAAG;IAAE,KAAK,EAAE,WAAW,GAAG,YAAY,GAAG,SAAS,CAAC;IAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,CAAC;AAEvG;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,gBAAgB,CAqBpG"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"autoSend.functions.d.ts","sourceRoot":"","sources":["../../src/lib/autoSend.functions.ts"],"names":[],"mappings":"AAKA,eAAO,MAAM,iBAAiB;;;;;sBAEmB,OAAO;kBAAgB,MAAM,GAAG,IAAI;mBAAiB,OAAO;
|
|
1
|
+
{"version":3,"file":"autoSend.functions.d.ts","sourceRoot":"","sources":["../../src/lib/autoSend.functions.ts"],"names":[],"mappings":"AAKA,eAAO,MAAM,iBAAiB;;;;;sBAEmB,OAAO;kBAAgB,MAAM,GAAG,IAAI;mBAAiB,OAAO;oBAAkB,OAAO;GAalI,CAAC"}
|
|
@@ -10,9 +10,11 @@ export const getAutoSendConfig = createServerFn({ method: "GET" })
|
|
|
10
10
|
const { haalAutoSendSleutel } = await import("./centralSecrets.server.js");
|
|
11
11
|
const s = await haalAutoSendSleutel();
|
|
12
12
|
const adres = await leesShellAdres(supabaseAdmin);
|
|
13
|
+
const { data: ontbreekt } = await supabaseAdmin.rpc("logistics_auto_send_route_missing");
|
|
13
14
|
return {
|
|
14
15
|
sleutelOpTeHalen: s.sleutel !== null,
|
|
15
16
|
sleutelReden: s.sleutel === null ? s.reden : null,
|
|
16
17
|
adresAanwezig: adres !== null,
|
|
18
|
+
routeOntbreekt: ontbreekt === true,
|
|
17
19
|
};
|
|
18
20
|
});
|
package/dist-lib/lib/autoSend.js
CHANGED
|
@@ -10,6 +10,7 @@
|
|
|
10
10
|
export const AUTO_SEND_PATH = "/api/public/hooks/afhandeling-auto-send";
|
|
11
11
|
export const AUTO_SEND_WACHTTIJDEN_MIN = [1, 5, 15, 60];
|
|
12
12
|
export const AUTO_SEND_MAX_POGINGEN = 5;
|
|
13
|
+
export const AUTO_SEND_ROUTE_ONTBREEKT = "Het adres voor automatisch versturen bestaat niet in deze Shell. Werk Afhandeling bij en publiceer de Shell opnieuw.";
|
|
13
14
|
export const AUTO_SEND_ADRES_REDEN = "Automatisch versturen niet mogelijk: Shell-adres ontbreekt";
|
|
14
15
|
export function normaliseerShellAdres(v) {
|
|
15
16
|
if (typeof v !== "string")
|
|
@@ -63,6 +64,8 @@ export function beoordeelAntwoord(status, tekst) {
|
|
|
63
64
|
return { soort: "verstuurd", reden: null };
|
|
64
65
|
const delen = [code, fout].filter((x) => !!x && x.trim() !== "");
|
|
65
66
|
const reden = (delen.length ? delen.join(": ") : `Afhandeling antwoordde ${status}`).slice(0, 300);
|
|
67
|
+
if (status === 404)
|
|
68
|
+
return { soort: "definitief", reden: AUTO_SEND_ROUTE_ONTBREEKT };
|
|
66
69
|
if (status === 400 || status === 422)
|
|
67
70
|
return { soort: "definitief", reden };
|
|
68
71
|
return { soort: "opnieuw", reden };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"autoSend.server.d.ts","sourceRoot":"","sources":["../../src/lib/autoSend.server.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAW5D,uFAAuF;AACvF,wBAAsB,cAAc,CAAC,EAAE,EAAE,cAAc,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAS/E;AAED,wBAAsB,gBAAgB,CAAC,EAAE,EAAE,cAAc,EAAE,IAAI,GAAE;IAAE,KAAK,CAAC,EAAE,MAAM,CAAA;CAAO;;;;;;
|
|
1
|
+
{"version":3,"file":"autoSend.server.d.ts","sourceRoot":"","sources":["../../src/lib/autoSend.server.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAW5D,uFAAuF;AACvF,wBAAsB,cAAc,CAAC,EAAE,EAAE,cAAc,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAS/E;AAED,wBAAsB,gBAAgB,CAAC,EAAE,EAAE,cAAc,EAAE,IAAI,GAAE;IAAE,KAAK,CAAC,EAAE,MAAM,CAAA;CAAO;;;;;;GAkEvF"}
|
|
@@ -55,6 +55,15 @@ export async function runAutoSendQueue(sb, opts = {}) {
|
|
|
55
55
|
if (uitkomst.soort === "verstuurd") {
|
|
56
56
|
run.sent++;
|
|
57
57
|
await finish(true, null, res.status);
|
|
58
|
+
// Zelfde route als na handmatig versturen: verzendbrief direct klaarzetten.
|
|
59
|
+
try {
|
|
60
|
+
await sb.rpc("logistics_shipping_note_ensure_accepted", { p_order_id: row.order_id, p_limit: 50 });
|
|
61
|
+
const { runShippingNoteQueue } = await import("./shippingNoteQueue.server.js");
|
|
62
|
+
await runShippingNoteQueue(sb, { limit: 10 });
|
|
63
|
+
}
|
|
64
|
+
catch {
|
|
65
|
+
/* de minuutronde pakt het alsnog op */
|
|
66
|
+
}
|
|
58
67
|
}
|
|
59
68
|
else if (uitkomst.soort === "definitief") {
|
|
60
69
|
run.definitief++;
|
|
@@ -140,6 +140,6 @@ export function decideFulfillmentStatus(result) {
|
|
|
140
140
|
kind: "wachten",
|
|
141
141
|
status: status || null,
|
|
142
142
|
tijdelijk: false,
|
|
143
|
-
reden:
|
|
143
|
+
reden: "Floriday is de levering nog aan het verwerken.",
|
|
144
144
|
};
|
|
145
145
|
}
|
|
@@ -56,7 +56,7 @@ export async function findDeliveryOrderForSalesOrder(sb, salesOrderId) {
|
|
|
56
56
|
return {
|
|
57
57
|
ok: false,
|
|
58
58
|
code: "delivery_order_not_found_local",
|
|
59
|
-
error:
|
|
59
|
+
error: "Floriday heeft de levering voor deze order nog niet aangemaakt. Het systeem probeert het automatisch opnieuw.",
|
|
60
60
|
};
|
|
61
61
|
}
|
|
62
62
|
if (rows.length > 1) {
|
|
@@ -239,6 +239,14 @@ async function runTickRound(supabase, tickJob, ident) {
|
|
|
239
239
|
catch {
|
|
240
240
|
/* vrijgeven mag de ronde niet blokkeren */
|
|
241
241
|
}
|
|
242
|
+
// 1.0.153: belading door Floriday geaccepteerd (op welke manier ook
|
|
243
|
+
// verstuurd)? Dan per kar een verzendbriefaanvraag klaarzetten.
|
|
244
|
+
try {
|
|
245
|
+
await supabase.rpc("logistics_shipping_note_ensure_accepted", { p_order_id: null, p_limit: 100 });
|
|
246
|
+
}
|
|
247
|
+
catch {
|
|
248
|
+
/* mag de ronde niet blokkeren */
|
|
249
|
+
}
|
|
242
250
|
const { runShippingNoteQueue } = await import("../shippingNoteQueue.server.js");
|
|
243
251
|
if (typeof runShippingNoteQueue !== "function") {
|
|
244
252
|
throw new Error("Deze versie van de Logistiek Engine bevat geen verzendbriefverwerking. Werk de module bij.");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"modulePrompts.d.ts","sourceRoot":"","sources":["../../src/lib/modulePrompts.ts"],"names":[],"mappings":"AAWA;;;;GAIG;AACH,eAAO,MAAM,oBAAoB;;;;;;;;;;;;CAKvB,CAAC;AAEX,MAAM,MAAM,eAAe,GAAG,MAAM,OAAO,oBAAoB,CAAC;AAKhE,MAAM,WAAW,oBAAoB;IACnC,6DAA6D;IAC7D,MAAM,EAAE,MAAM,CAAC;IACf,mCAAmC;IACnC,KAAK,EAAE,MAAM,CAAC;IACd,yDAAyD;IACzD,IAAI,EAAE,MAAM,CAAC;IACb,6CAA6C;IAC7C,OAAO,EAAE,MAAM,CAAC;IAChB,qEAAqE;IACrE,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,iFAAiF;IACjF,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,+BAA+B;IAC/B,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,YAAY;IAC3B,SAAS,EAAE,eAAe,CAAC;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,oBAAoB,EAAE,CAAC;CACnC;
|
|
1
|
+
{"version":3,"file":"modulePrompts.d.ts","sourceRoot":"","sources":["../../src/lib/modulePrompts.ts"],"names":[],"mappings":"AAWA;;;;GAIG;AACH,eAAO,MAAM,oBAAoB;;;;;;;;;;;;CAKvB,CAAC;AAEX,MAAM,MAAM,eAAe,GAAG,MAAM,OAAO,oBAAoB,CAAC;AAKhE,MAAM,WAAW,oBAAoB;IACnC,6DAA6D;IAC7D,MAAM,EAAE,MAAM,CAAC;IACf,mCAAmC;IACnC,KAAK,EAAE,MAAM,CAAC;IACd,yDAAyD;IACzD,IAAI,EAAE,MAAM,CAAC;IACb,6CAA6C;IAC7C,OAAO,EAAE,MAAM,CAAC;IAChB,qEAAqE;IACrE,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,iFAAiF;IACjF,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,+BAA+B;IAC/B,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,YAAY;IAC3B,SAAS,EAAE,eAAe,CAAC;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,oBAAoB,EAAE,CAAC;CACnC;AAmiLD,eAAO,MAAM,cAAc,EAAE,YAAY,EAUL,CAAC;AAErC,gEAAgE;AAChE,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,YAAY,EACpB,QAAQ,EAAE,oBAAoB,GAC7B,MAAM,CAmBR;AAED,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,YAAY,GAAG,MAAM,CAE9D;AAED,oEAAoE;AACpE,wBAAgB,qBAAqB,IAAI,MAAM,CAiB9C;AAED,wBAAgB,oBAAoB,CAClC,SAAS,EAAE,eAAe,EAC1B,cAAc,CAAC,EAAE,MAAM,GACtB,MAAM,CAIR"}
|
|
@@ -1016,6 +1016,40 @@ CONTROLELIJST
|
|
|
1016
1016
|
[ ] Geen eigen ladingdragercontrole meer.
|
|
1017
1017
|
[ ] Nieuwe Floriday-order die wel wordt ingedeeld: geen mail.
|
|
1018
1018
|
[ ] Mail noemt de koper als klant.
|
|
1019
|
+
[ ] Meld terug met je pakketversie.`,
|
|
1020
|
+
},
|
|
1021
|
+
{
|
|
1022
|
+
number: 23,
|
|
1023
|
+
title: "Buffertotalen in logistics_order_plan_coverage_list",
|
|
1024
|
+
date: "2026-10-16",
|
|
1025
|
+
summary: "Nieuwe kolommen buffer_order_count en buffer_cart_count; tel karren per gecombineerde order, niet per order.",
|
|
1026
|
+
body: `KOPPELPROMPT VERKOOP 23 – vereist Logistiek Engine 1.0.153
|
|
1027
|
+
|
|
1028
|
+
WAAROM
|
|
1029
|
+
Verkoop telde karren per order op (FO-2601428 + FO-2601429: 3 in plaats van 2)
|
|
1030
|
+
en elke order kreeg "gedeeld" omdat buffer_id altijd gevuld is.
|
|
1031
|
+
|
|
1032
|
+
WAT ER IS
|
|
1033
|
+
public.logistics_order_plan_coverage_list(p_order_ids uuid[]) heeft twee extra
|
|
1034
|
+
kolommen; de bestaande kolommen en hun volgorde zijn ongewijzigd:
|
|
1035
|
+
- buffer_order_count int – aantal orders in dezelfde gecombineerde order
|
|
1036
|
+
(niet verwijderd, niet geannuleerd); 1 = losse order
|
|
1037
|
+
- buffer_cart_count int – aantal unieke karren van de hele gecombineerde order
|
|
1038
|
+
(een gedeelde kar telt één keer)
|
|
1039
|
+
Rechten ongewijzigd: alleen ingelogde gebruikers (authenticated, service_role).
|
|
1040
|
+
|
|
1041
|
+
WAT JIJ DOET
|
|
1042
|
+
1. Toon "gedeeld" alleen als buffer_order_count > 1, niet op buffer_id.
|
|
1043
|
+
2. Toon het aantal karren van een gecombineerde order uit buffer_cart_count;
|
|
1044
|
+
tel cart_count van de losse orders niet bij elkaar op.
|
|
1045
|
+
3. Maximaal 1000 order-id's per aanroep, zoals nu.
|
|
1046
|
+
|
|
1047
|
+
REGELS
|
|
1048
|
+
- Match op id. Geen omgevingswaarden. Wijzig geen Engine-functies of -rechten.
|
|
1049
|
+
|
|
1050
|
+
CONTROLELIJST
|
|
1051
|
+
[ ] Buffer met 2 orders en 2 karren: beide orders tonen 2 karren, "gedeeld".
|
|
1052
|
+
[ ] Losse order: geen "gedeeld".
|
|
1019
1053
|
[ ] Meld terug met je pakketversie.`,
|
|
1020
1054
|
},
|
|
1021
1055
|
],
|
|
@@ -2096,6 +2130,98 @@ CENTRAL_AUTH_URL ontbreekt — poging 0 van 5".
|
|
|
2096
2130
|
CONTROLELIJST
|
|
2097
2131
|
[ ] Antwoord bevat code (of status) en error zoals hierboven.
|
|
2098
2132
|
[ ] Handtekening van de Engine wordt geaccepteerd met dezelfde sleutel.
|
|
2133
|
+
[ ] Meld terug met je pakketversie.`,
|
|
2134
|
+
},
|
|
2135
|
+
{
|
|
2136
|
+
number: 25,
|
|
2137
|
+
title: "Zelfde vertrek als de planning: vervoerder, momentsleutel en vertrek per kar",
|
|
2138
|
+
date: "2026-10-16",
|
|
2139
|
+
summary: "Lees order_carts.carrier_id, pickup_moment_key, departure_at en late_signup over voor de aanmeldmail.",
|
|
2140
|
+
body: `KOPPELPROMPT AFHANDELING 25 – vereist Logistiek Engine 1.0.153
|
|
2141
|
+
|
|
2142
|
+
WAAROM
|
|
2143
|
+
De aanmeldmail en de planning moeten altijd hetzelfde vertrek gebruiken. De
|
|
2144
|
+
Engine rekent nu het vertrek met jouw regel uit planning.ts en legt het per
|
|
2145
|
+
kar vast.
|
|
2146
|
+
|
|
2147
|
+
WAT DE ENGINE DOET (alleen lezen in carriers)
|
|
2148
|
+
- Vervoerder per order, op id: eerst orders.custom_fields->>'carrier' (bestaat de
|
|
2149
|
+
vervoerder), dan het werkgebied zoals jouw afh_signup_groups, dan de
|
|
2150
|
+
standaardvervoerder (is_default).
|
|
2151
|
+
- Regel: bezorgdag = dag 0; per moment pickup_days en signup_days in WERKdagen
|
|
2152
|
+
terugtellen; kies het eerstvolgende moment waarvan de aanmelddeadline op het
|
|
2153
|
+
binnenkomstmoment van de order nog niet voorbij was; alle deadlines voorbij:
|
|
2154
|
+
het laatste moment, gemarkeerd "te laat aangemeld".
|
|
2155
|
+
- Werkdagen en tijdzone komen uit de instellingen bij Werktijden (pickwerkdagen),
|
|
2156
|
+
niet vast ma–vr.
|
|
2157
|
+
- Een moment zonder pickup_time of signup_time wordt overgeslagen; jij vult nu
|
|
2158
|
+
16:00/17:30 in. Voorstel: neem de Engine-regel over (geen standaardtijd).
|
|
2159
|
+
|
|
2160
|
+
NIEUWE KOLOMMEN IN order_carts (gevuld door de Engine)
|
|
2161
|
+
- carrier_id uuid
|
|
2162
|
+
- pickup_moment_key text, formaat "<pickup_days>@<pickup_time>|<signup_days>@<signup_time>", bijv. "1@15:00|1@13:00"
|
|
2163
|
+
- departure_at timestamptz (berekend vertrek)
|
|
2164
|
+
- late_signup boolean
|
|
2165
|
+
pickup_moment_id blijft leeg (carriers.pickup_moments heeft geen id per moment).
|
|
2166
|
+
Een kar met pickup_locked = true wordt niet overschreven.
|
|
2167
|
+
|
|
2168
|
+
WAT JIJ DOET
|
|
2169
|
+
1. Lees voor de aanmeldmail per kar carrier_id, pickup_moment_key en departure_at
|
|
2170
|
+
uit order_carts, op kar-id. Groepeer daarop; reken niet zelf opnieuw.
|
|
2171
|
+
2. Ontbreekt departure_at (oude orders): val terug op je huidige berekening en
|
|
2172
|
+
toon in "Details voor beheer" dat de planning nog niets vastlegde.
|
|
2173
|
+
3. Toon late_signup als "te laat aangemeld".
|
|
2174
|
+
4. Vervang in afh_subtract_workdays de vaste ma–vr door de pickwerkdagen
|
|
2175
|
+
(public.logistics_is_pick_workday(date)), zodat beide kanten dezelfde dagen tellen.
|
|
2176
|
+
|
|
2177
|
+
VERZENDBRIEF
|
|
2178
|
+
Na een geaccepteerde belading (automatisch, handmatig of buffer) zet de Engine
|
|
2179
|
+
nu zelf per kar de Floriday-verzendbrief klaar. Je hoeft niets extra aan te
|
|
2180
|
+
roepen; de route logistics-shipping-note-now blijft werken.
|
|
2181
|
+
|
|
2182
|
+
REGELS
|
|
2183
|
+
- Match op id. Geen omgevingswaarden. Wijzig geen Engine-functies of -rechten.
|
|
2184
|
+
|
|
2185
|
+
CONTROLELIJST
|
|
2186
|
+
[ ] Order levering maandag, geplaatst vrijdag vóór 13:00: mail en planning "vr 15:00".
|
|
2187
|
+
[ ] Na 13:00 geplaatst: "te laat aangemeld", nooit een dag zonder ophaalmoment.
|
|
2188
|
+
[ ] Mail gebruikt departure_at uit order_carts.
|
|
2189
|
+
[ ] Meld terug met je pakketversie.`,
|
|
2190
|
+
},
|
|
2191
|
+
{
|
|
2192
|
+
number: 26,
|
|
2193
|
+
title: "Werkdagen alleen via logistics_is_pick_workday (incl. afwijkende dagen)",
|
|
2194
|
+
date: "2026-10-16",
|
|
2195
|
+
summary: "Gebruik voor de aanmeldmail uitsluitend public.logistics_is_pick_workday(date) als werkdagbron.",
|
|
2196
|
+
body: `KOPPELPROMPT AFHANDELING 26 – vereist Logistiek Engine 1.0.154
|
|
2197
|
+
|
|
2198
|
+
WAAROM
|
|
2199
|
+
Werkdagen moeten op één plek worden bepaald. Vanaf 1.0.154 neemt de Engine
|
|
2200
|
+
ook de "Afwijkende dagen" uit Werktijden mee.
|
|
2201
|
+
|
|
2202
|
+
WAT public.logistics_is_pick_workday(p_date date) RETURNS boolean NU DOET
|
|
2203
|
+
1. Afwijkende dag als gesloten ingesteld → false.
|
|
2204
|
+
2. Afwijkende dag met geldige tijden (sluit > opent) → true, ook op een dag
|
|
2205
|
+
die normaal dicht is (bijv. zaterdag).
|
|
2206
|
+
3. Geen afwijkende dag → true als de weekdag in de pickwerkdagen van de
|
|
2207
|
+
werkwijze staat ÉN er een actief openingsvenster in Werktijden is.
|
|
2208
|
+
4. Tijdzone ontbreekt in Werktijden → fout (fail closed), geen standaard.
|
|
2209
|
+
Naam, argument, returntype en rechten zijn ongewijzigd.
|
|
2210
|
+
De tijden van een afwijkende dag staan in public.logistics_day_windows(date).
|
|
2211
|
+
|
|
2212
|
+
WAT JIJ DOET
|
|
2213
|
+
1. Gebruik in afh_subtract_workdays en overal in de aanmeldmail uitsluitend
|
|
2214
|
+
public.logistics_is_pick_workday(date) om werkdagen te tellen. Haal eigen
|
|
2215
|
+
weekdaglijsten (ma–vr) en eigen feestdaglogica weg.
|
|
2216
|
+
2. Vang de fout bij ontbrekende tijdzone af en toon die in "Details voor
|
|
2217
|
+
beheer"; reken niet door met een standaard.
|
|
2218
|
+
|
|
2219
|
+
REGELS
|
|
2220
|
+
- Wijzig geen Engine-functies of -rechten. Geen omgevingswaarden.
|
|
2221
|
+
|
|
2222
|
+
CONTROLELIJST
|
|
2223
|
+
[ ] Maandag als gesloten afwijkende dag: aanmelddeadline en ophaalmoment schuiven naar de vorige werkdag, gelijk aan de planning.
|
|
2224
|
+
[ ] Zaterdag met afwijkende tijden telt als werkdag.
|
|
2099
2225
|
[ ] Meld terug met je pakketversie.`,
|
|
2100
2226
|
},
|
|
2101
2227
|
],
|
|
@@ -3898,6 +4024,123 @@ REGELS
|
|
|
3898
4024
|
CONTROLELIJST
|
|
3899
4025
|
[ ] Bij een net geprinte pakbon verschijnt geen "tijdelijk niet bereikbaar" meer.`,
|
|
3900
4026
|
},
|
|
4027
|
+
{
|
|
4028
|
+
number: 46,
|
|
4029
|
+
title: "Vaste karnummering, wachtende deelkar en verzendstatus",
|
|
4030
|
+
date: "2026-10-16",
|
|
4031
|
+
summary: "Kar X van Y is overal gelijk, een wachtende deelkar blijft zichtbaar maar is niet printbaar tot wachtTot, en nieuwe leesfunctie pickstation_auto_send_status.",
|
|
4032
|
+
body: `KOPPELPROMPT PICKSCHERMEN 46 — vereist Logistiek Engine 1.0.152.
|
|
4033
|
+
Eerst de Engine installeren, daarna de nieuwe Pickschermen-versie.
|
|
4034
|
+
|
|
4035
|
+
1. VASTE NUMMERING (geen wijziging in veldnamen)
|
|
4036
|
+
Een kar houdt na indeling altijd hetzelfde nummer, ook als andere karren al
|
|
4037
|
+
geprint of gescand zijn. Overal gelijk:
|
|
4038
|
+
- pick_queue: document_number "PB-<order>-K<n>", payload.cartSeq, payload.cartIndex,
|
|
4039
|
+
payload.cartTotal, payload.totalCarts, payload.cartLabel ("Kar n van N").
|
|
4040
|
+
- pick_queue_cart_plan(_queue_item_id): root totalCarts = root cartTotal = N,
|
|
4041
|
+
carts[0].cartSeq/cartTotal/cartLabel gelijk aan de regel.
|
|
4042
|
+
- logistics_cart_plan_status: totalCarts = N; pickMode is nu een object
|
|
4043
|
+
({ pickMode, cartsPerPrint, showCartControl, autoSendLoading }), geen tekst meer.
|
|
4044
|
+
Je mag de kar blijven weggooien als cartTotal van de kar ≠ cartTotal van de root;
|
|
4045
|
+
dat komt niet meer voor.
|
|
4046
|
+
Items in carts[].items hebben nu orderId en orderNumber; belongsToOrder hoort bij
|
|
4047
|
+
de order die het meeste op die kar heeft (carts[].orderId).
|
|
4048
|
+
Meldingen (warnings, zoals een voorraadtekort) staan alleen nog in het karplan
|
|
4049
|
+
van kar 1 van een order.
|
|
4050
|
+
|
|
4051
|
+
2. WACHTENDE DEELKAR (nieuw)
|
|
4052
|
+
Een deelkar die nog wacht staat nu als regel in de wachtrij in plaats van te
|
|
4053
|
+
ontbreken. Velden in payload én in pick_queue_cart_plan (root):
|
|
4054
|
+
- printbaar boolean; false zolang de kar wacht
|
|
4055
|
+
- wachtTot tijdstip (ISO, UTC) tot wanneer de kar wacht, of null
|
|
4056
|
+
- wachtReden tekst voor de medewerker, bijv. "Deelkar wacht tot 22:40 op mogelijke aanvulling."
|
|
4057
|
+
Toon zo'n regel grijs met de tekst "Deelkar wacht tot HH:MM op mogelijke
|
|
4058
|
+
aanvulling" (HH:MM in de tijdzone van de vestiging; wachtReden bevat die tekst al).
|
|
4059
|
+
Print een regel met printbaar = false NOOIT, ook niet bij "alles printen". Zodra
|
|
4060
|
+
de wachttijd voorbij is, zet de Engine printbaar op true bij de volgende ronde.
|
|
4061
|
+
due_at van de regel is gelijk aan wachtTot.
|
|
4062
|
+
|
|
4063
|
+
3. AFGESLOTEN REGELS
|
|
4064
|
+
De Engine verwijdert geen pickregels meer, maar sluit ze af:
|
|
4065
|
+
- kar gescand/afgemeld → completed_at
|
|
4066
|
+
- kar vervallen door herindeling, of order geannuleerd/verwijderd → cancelled_at
|
|
4067
|
+
Blijf regels met completed_at of cancelled_at verbergen.
|
|
4068
|
+
|
|
4069
|
+
4. NIEUWE LEESFUNCTIE pickstation_auto_send_status(p_slug text, p_order_id uuid) returns jsonb
|
|
4070
|
+
Zonder login, alleen lezen. Toegang alleen als p_slug een actief pickstation is en
|
|
4071
|
+
de order in een niet-geannuleerde regel van dat station staat (payload.orderId of
|
|
4072
|
+
payload.orderIds) — zelfde controle als pickstation_order_sticker_meldingen.
|
|
4073
|
+
Met toegang:
|
|
4074
|
+
{ toegang: true, status: { status, sentAt, sentHow, nextAttemptAt, attempts,
|
|
4075
|
+
maxAttempts, orderId, orderIds, bufferId, routeOntbreekt, tekst } }
|
|
4076
|
+
status: geen | wachtend | bezig | verstuurd | mislukt
|
|
4077
|
+
sentHow: automatisch | handmatig (alleen bij verstuurd)
|
|
4078
|
+
tekst: kant-en-klare zin voor de medewerker
|
|
4079
|
+
Zonder toegang: { toegang: false, reden } met reden
|
|
4080
|
+
onbekend_of_inactief_station | niet_in_wachtrij_station.
|
|
4081
|
+
Bij een buffer is er één verzendtaak voor alle orders; elke order van de buffer
|
|
4082
|
+
geeft dezelfde status.
|
|
4083
|
+
|
|
4084
|
+
5. REGELS
|
|
4085
|
+
- Match altijd op id, nooit op naam. Niets hardcoded.
|
|
4086
|
+
- Wijzig geen rechten of RLS.
|
|
4087
|
+
|
|
4088
|
+
CONTROLELIJST
|
|
4089
|
+
[ ] Buffer van 2 karren: na print+scan kar 1 blijft "PB-…-K2 · Kar 2 van 2" staan.
|
|
4090
|
+
[ ] Wachtende deelkar is zichtbaar met "wacht tot", niet printbaar.
|
|
4091
|
+
[ ] pickstation_auto_send_status toont "Verstuurd (handmatig) om …" na handmatig versturen.
|
|
4092
|
+
[ ] Meld terug met je pakketversie.`,
|
|
4093
|
+
},
|
|
4094
|
+
{
|
|
4095
|
+
number: 47,
|
|
4096
|
+
title: "Velden per kar: fust, vertrek, begin pickvenster en reden",
|
|
4097
|
+
date: "2026-10-16",
|
|
4098
|
+
summary: "pickStartsAt/reasonCode in de karplanstatus; cartCrates/departureAt in pickregel en karplan.",
|
|
4099
|
+
body: `KOPPELPROMPT PICKSCHERMEN 47 – vereist Logistiek Engine 1.0.153
|
|
4100
|
+
|
|
4101
|
+
WAAROM
|
|
4102
|
+
Het pickstation moet tonen wanneer een kar vertrekt, hoeveel fust er op déze
|
|
4103
|
+
kar staat en wanneer het picken begint, zonder zelf tijden af te leiden.
|
|
4104
|
+
|
|
4105
|
+
NIEUWE VELDEN (ontbrekende waarde = null, nooit een terugvalwaarde)
|
|
4106
|
+
1. logistics_cart_plan_status(p_ref) (en dus ook de openbare variant):
|
|
4107
|
+
- pickStartsAt: ISO-tijd in UTC, begin van het pickvenster, of null
|
|
4108
|
+
- reasonCode: 'pick_window_not_started' | 'not_released' | 'plan_missing' | 'ready'
|
|
4109
|
+
- reason blijft bestaan (tekst voor de medewerker)
|
|
4110
|
+
2. pick_queue.payload (alleen karregels van de Engine, payload.cartRowFor gevuld):
|
|
4111
|
+
- cartCrates: fust op déze kar
|
|
4112
|
+
- bufferCrates: fust van alle karren van de order of gecombineerde order
|
|
4113
|
+
- departureAt: ISO UTC vertrekmoment van de kar, of null
|
|
4114
|
+
- pickStartsAt: ISO UTC begin pickvenster, of null
|
|
4115
|
+
- forcedPickDay: 'JJJJ-MM-DD' als de regel bewust vooruit is gemaakt
|
|
4116
|
+
- payload.crates blijft ongewijzigd (totaal), gebruik voortaan cartCrates
|
|
4117
|
+
3. pick_queue_cart_plan(_queue_item_id), in de root én in elk element van carts[]:
|
|
4118
|
+
- cartCrates, bufferCrates, departureAt, pickStartsAt
|
|
4119
|
+
- releaseAt: ISO UTC moment waarop de kar printbaar wordt, of null
|
|
4120
|
+
- releaseReason: tekst waarom de kar nog niet vrij is, of null
|
|
4121
|
+
- carrierId, pickupMomentKey, lateSignup (alleen in carts[])
|
|
4122
|
+
|
|
4123
|
+
WAT JE TOONT
|
|
4124
|
+
- reasonCode = 'pick_window_not_started' en pickStartsAt gevuld:
|
|
4125
|
+
"Wordt vrijgegeven <dag> <datum> om <tijd>" (tijdzone van de vestiging).
|
|
4126
|
+
- departureAt gevuld: "Vertrek <dag> <tijd>". Null: geen vertrektijd tonen.
|
|
4127
|
+
- Fust: cartCrates; eventueel "van <bufferCrates>" ernaast.
|
|
4128
|
+
- Vooruit printen: kies alleen werkdagen. pick_sync_pick_day geeft bij een
|
|
4129
|
+
niet-werkdag { error: 'Kies een werkdag om vooruit te printen.' }; toon die tekst.
|
|
4130
|
+
Bij een bewust gekozen werkdag zijn alle karren printbaar, behalve een
|
|
4131
|
+
deelkar die nog wacht (printbaar=false, wachtTot, wachtReden).
|
|
4132
|
+
|
|
4133
|
+
REGELS
|
|
4134
|
+
- Match op id (cartId, queue-id), nooit op naam. Niets hardcoded.
|
|
4135
|
+
- Wijzig geen rechten of RLS; de rechten van deze functies zijn ongewijzigd.
|
|
4136
|
+
|
|
4137
|
+
CONTROLELIJST
|
|
4138
|
+
[ ] Order met levering maandag, geplaatst vrijdag: pickdag vrijdag, vertrek volgens ophaalmoment.
|
|
4139
|
+
[ ] Niet-vrijgegeven kar toont "Wordt vrijgegeven … om …".
|
|
4140
|
+
[ ] Bufferkar toont het eigen aantal fust (cartCrates), niet het totaal.
|
|
4141
|
+
[ ] Vooruit printen op een werkdag maakt karren printbaar, behalve een wachtende deelkar.
|
|
4142
|
+
[ ] Meld terug met je pakketversie.`,
|
|
4143
|
+
},
|
|
3901
4144
|
],
|
|
3902
4145
|
},
|
|
3903
4146
|
scanners: {
|
|
@@ -5225,6 +5468,42 @@ CONTROLELIJST
|
|
|
5225
5468
|
[ ] Terugmelding met de telling per bron.
|
|
5226
5469
|
[ ] Melding sluit vanzelf als de bron sluit.
|
|
5227
5470
|
[ ] Teller daalt; geen meldingen van verzonden of geannuleerde orders.
|
|
5471
|
+
[ ] Meld terug met je pakketversie.`,
|
|
5472
|
+
},
|
|
5473
|
+
{
|
|
5474
|
+
number: 2,
|
|
5475
|
+
title: "Vertrek per ophaalmoment en karrencontrole vandaag",
|
|
5476
|
+
date: "2026-10-16",
|
|
5477
|
+
summary: "Twee alleen-lezen functies voor het dashboard: logistics_pickup_moments_today en control_today_scan_summary.",
|
|
5478
|
+
body: `KOPPELPROMPT DASHBOARDS 2 – vereist Logistiek Engine 1.0.153
|
|
5479
|
+
|
|
5480
|
+
WAAROM
|
|
5481
|
+
Je vroeg om het vertrek per ophaalmoment vandaag en de karrencontrole van
|
|
5482
|
+
vandaag. Beide functies zijn er nu; alleen lezen, alleen voor ingelogde gebruikers.
|
|
5483
|
+
|
|
5484
|
+
1. public.logistics_pickup_moments_today() returns jsonb (array):
|
|
5485
|
+
{ carrier_id, pickup_moment_key, departure_at, naam_vervoerder, karren_totaal, karren_klaar }
|
|
5486
|
+
- Gegroepeerd op order_carts.carrier_id + pickup_moment_key + departure_at, nooit op naam.
|
|
5487
|
+
- "Vandaag" = logistics_local_today(): karren uit logistics_cart_index(vandaag, vandaag)
|
|
5488
|
+
plus karren met departure_at op vandaag (tijdzone van de vestiging).
|
|
5489
|
+
- karren_klaar = karren met een goedgekeurde controlescan (afmelden legt die ook vast).
|
|
5490
|
+
- Karren zonder vertrek: één aparte rij met carrier_id = null, pickup_moment_key = null,
|
|
5491
|
+
departure_at = null. naam_vervoerder is alleen voor weergave.
|
|
5492
|
+
- pickup_moment_id blijft leeg; gebruik het niet.
|
|
5493
|
+
|
|
5494
|
+
2. public.control_today_scan_summary() returns jsonb:
|
|
5495
|
+
{ karren_totaal, karren_gescand, dag }
|
|
5496
|
+
- Op unieke kar uit logistics_cart_index(vandaag, vandaag); gescand = goedgekeurde scan.
|
|
5497
|
+
- Dit is dezelfde definitie als de Controlepost. control_get_todays_carts() telt
|
|
5498
|
+
karnummers (ook losse/oude); gebruik daarom deze functie en niet die combinatie.
|
|
5499
|
+
|
|
5500
|
+
REGELS
|
|
5501
|
+
- Match op id. Geen omgevingswaarden. Wijzig geen Engine-functies of -rechten.
|
|
5502
|
+
|
|
5503
|
+
CONTROLELIJST
|
|
5504
|
+
[ ] Tegel "Vertrek vandaag" toont per ophaalmoment totaal en klaar.
|
|
5505
|
+
[ ] Karren zonder vertrek staan in een eigen rij.
|
|
5506
|
+
[ ] Karrencontrole vandaag gelijk aan de Controlepost.
|
|
5228
5507
|
[ ] Meld terug met je pakketversie.`,
|
|
5229
5508
|
},
|
|
5230
5509
|
],
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export declare const MODULE_VERSION = "1.0.
|
|
1
|
+
export declare const MODULE_VERSION = "1.0.155";
|
|
2
2
|
//# sourceMappingURL=moduleVersion.d.ts.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
// Automatisch gegenereerd door prebuild:lib; niet handmatig aanpassen.
|
|
2
|
-
export const MODULE_VERSION = "1.0.
|
|
2
|
+
export const MODULE_VERSION = "1.0.155";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ruleEngineSchema.d.ts","sourceRoot":"","sources":["../../src/lib/ruleEngineSchema.ts"],"names":[],"mappings":"AAQA,MAAM,MAAM,SAAS,GACjB,QAAQ,GACR,QAAQ,GACR,QAAQ,GACR,MAAM,GACN,UAAU,GACV,MAAM,GACN,UAAU,GACV,OAAO,GACP,MAAM,GACN,QAAQ,GACR,aAAa,GACb,SAAS,GACT,SAAS,GACT,UAAU,CAAC;AAMf,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,uDAAuD;IACvD,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,cAAc;IAC7B,GAAG,EAAE,MAAM,CAAC;IACZ,EAAE,EAAE,OAAO,EAAE,CAAC;IACd,sDAAsD;IACtD,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,SAAS;IACxB,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,SAAS,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,WAAW,EAAE,CAAC;IACxB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,8FAA8F;IAC9F,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB,wFAAwF;IACxF,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,6DAA6D;IAC7D,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,mEAAmE;IACnE,QAAQ,CAAC,EAAE;QACT,MAAM,EAAE,MAAM,CAAC;QACf,WAAW,EAAE,MAAM,CAAC;QACpB,YAAY,EAAE,MAAM,CAAC;KACtB,CAAC;IACF,wGAAwG;IACxG,SAAS,CAAC,EAAE,cAAc,GAAG,cAAc,EAAE,CAAC;CAC/C;AAGD,MAAM,WAAW,SAAS;IACxB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,SAAS,EAAE,CAAC;CACrB;AAED,MAAM,WAAW,QAAQ;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,SAAS,EAAE,CAAC;IACpB,kBAAkB,EAAE,OAAO,CAAC;CAC7B;AAID,eAAO,MAAM,gBAAgB,EAAE,WAAW,EAQzC,CAAC;AAEF,eAAO,MAAM,mBAAmB,EAAE,WAAW,EAK5C,CAAC;AAEF,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB;AAED,MAAM,WAAW,aAAa;IAC5B,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAChC,UAAU,EAAE,aAAa,EAAE,CAAC;CAC7B;AAED,MAAM,MAAM,kBAAkB,GAAG,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;AAI9D,eAAO,MAAM,UAAU,EAAE,QAAQ,
|
|
1
|
+
{"version":3,"file":"ruleEngineSchema.d.ts","sourceRoot":"","sources":["../../src/lib/ruleEngineSchema.ts"],"names":[],"mappings":"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"}
|
|
@@ -339,7 +339,14 @@ export const RULE_STEPS = [
|
|
|
339
339
|
label: "Automatisch versturen na de laatste goedgekeurde kar",
|
|
340
340
|
type: "toggle",
|
|
341
341
|
default: false,
|
|
342
|
-
description: "Alleen voor Floriday-orders. Staat dit aan, dan vraagt de Engine Afhandeling om de belading te versturen zodra alle karren van de order goedgekeurd zijn gescand. Eén keer per order; bij een fout tot 5 pogingen met oplopende wachttijd.",
|
|
342
|
+
description: "Alleen voor Floriday-orders. Staat dit aan, dan vraagt de Engine Afhandeling om de belading te versturen zodra alle karren van de order goedgekeurd zijn gescand. Eén keer per order, bij een buffer één keer voor alle orders samen; bij een fout tot 5 pogingen met oplopende wachttijd.",
|
|
343
|
+
},
|
|
344
|
+
{
|
|
345
|
+
key: "deelkar_wacht_minuten",
|
|
346
|
+
label: "Wachttijd deelkar (minuten)",
|
|
347
|
+
type: "number",
|
|
348
|
+
default: 15,
|
|
349
|
+
description: "Zo lang wacht een niet-volle kar na de start van het picken op mogelijke aanvulling. Het pickscherm toont tot hoe laat.",
|
|
343
350
|
},
|
|
344
351
|
{
|
|
345
352
|
key: "scanner",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shippingNoteQueue.server.d.ts","sourceRoot":"","sources":["../../src/lib/shippingNoteQueue.server.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAQ5D,MAAM,WAAW,eAAe;IAC9B,uDAAuD;IACvD,OAAO,EAAE,MAAM,CAAC;IAChB,uDAAuD;IACvD,OAAO,EAAE,MAAM,CAAC;IAChB,qEAAqE;IACrE,OAAO,EAAE,MAAM,CAAC;IAChB,iFAAiF;IACjF,QAAQ,EAAE,MAAM,CAAC;IACjB,iDAAiD;IACjD,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB;AAoCD,wBAAsB,oBAAoB,CACxC,EAAE,EAAE,cAAc,EAClB,OAAO,GAAE;IAAE,KAAK,CAAC,EAAE,MAAM,CAAA;CAAO,GAC/B,OAAO,CAAC,eAAe,CAAC,
|
|
1
|
+
{"version":3,"file":"shippingNoteQueue.server.d.ts","sourceRoot":"","sources":["../../src/lib/shippingNoteQueue.server.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAQ5D,MAAM,WAAW,eAAe;IAC9B,uDAAuD;IACvD,OAAO,EAAE,MAAM,CAAC;IAChB,uDAAuD;IACvD,OAAO,EAAE,MAAM,CAAC;IAChB,qEAAqE;IACrE,OAAO,EAAE,MAAM,CAAC;IAChB,iFAAiF;IACjF,QAAQ,EAAE,MAAM,CAAC;IACjB,iDAAiD;IACjD,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB;AAoCD,wBAAsB,oBAAoB,CACxC,EAAE,EAAE,cAAc,EAClB,OAAO,GAAE;IAAE,KAAK,CAAC,EAAE,MAAM,CAAA;CAAO,GAC/B,OAAO,CAAC,eAAe,CAAC,CA+d1B;AAMD,MAAM,MAAM,mBAAmB,GAAG,QAAQ,GAAG,aAAa,GAAG,IAAI,CAAC;AAElE,qGAAqG;AACrG,wBAAsB,uBAAuB,CAAC,EAAE,EAAE,cAAc,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAQ9F;AAED,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,OAAO,GAAG,mBAAmB,CAG5E;AAED,wBAAgB,kBAAkB,CAAC,WAAW,EAAE,mBAAmB,GAAG,MAAM,CAI3E"}
|
|
@@ -195,7 +195,7 @@ export async function runShippingNoteQueue(sb, options = {}) {
|
|
|
195
195
|
}
|
|
196
196
|
const salesOrderId = String(order?.["floriday_sales_order_id"] ?? "").trim();
|
|
197
197
|
if (!salesOrderId) {
|
|
198
|
-
await faal("sales_order_ontbreekt", "
|
|
198
|
+
await faal("sales_order_ontbreekt", "Deze Floriday-order mist het Floriday-nummer. Werk de order bij via Orders.");
|
|
199
199
|
continue;
|
|
200
200
|
}
|
|
201
201
|
// Geannuleerd in Floriday? Dan direct stoppen in plaats van de volle wachttijd.
|
|
@@ -333,12 +333,15 @@ export async function runShippingNoteQueue(sb, options = {}) {
|
|
|
333
333
|
continue;
|
|
334
334
|
}
|
|
335
335
|
// De pakbon is de bron voor printplek en kar; de printer kiest de Layout maker.
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
336
|
+
// Aanvragen die zijn klaargezet na een geaccepteerde belading (1.0.153)
|
|
337
|
+
// hebben geen pakbon-printopdracht: dan geldt de kar van de aanvraag zelf.
|
|
338
|
+
const naAcceptatie = String(row.batch_key ?? "").startsWith("na-acceptatie:");
|
|
339
|
+
const { data: slip } = naAcceptatie
|
|
340
|
+
? { data: null }
|
|
341
|
+
: await sb.from("print_jobs").select("payload, is_herprint").eq("id", row.slip_job_id).maybeSingle();
|
|
342
|
+
const slipRow = naAcceptatie
|
|
343
|
+
? { payload: { cart_id: row.cart_id }, is_herprint: false }
|
|
344
|
+
: (slip ?? null);
|
|
342
345
|
if (!slipRow) {
|
|
343
346
|
await faal("pakbon_verdwenen", "De bijbehorende pakbon bestaat niet meer; er wordt geen losse verzendbrief gemaakt.", fulfillmentOrderId);
|
|
344
347
|
continue;
|
|
@@ -77,7 +77,7 @@ export function controleerEtiket(sticker, etiketten, bron = "sticker") {
|
|
|
77
77
|
if (etiketten === null) {
|
|
78
78
|
return {
|
|
79
79
|
ok: false,
|
|
80
|
-
reden: "
|
|
80
|
+
reden: "Sticker niet geprint: het etiketformaat van de printer is onbekend. Stel het geladen etiket in bij Printen.",
|
|
81
81
|
etiket: null,
|
|
82
82
|
};
|
|
83
83
|
}
|