@flowselections/logistiek-engine 1.0.163 → 1.0.169
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/BeheerPage.d.ts.map +1 -1
- package/dist-lib/components/BeheerPage.js +3 -1
- package/dist-lib/components/GeblokkeerdeStickersCard.d.ts +2 -0
- package/dist-lib/components/GeblokkeerdeStickersCard.d.ts.map +1 -0
- package/dist-lib/components/GeblokkeerdeStickersCard.js +31 -0
- package/dist-lib/components/HerindelingMeldingCard.d.ts +2 -0
- package/dist-lib/components/HerindelingMeldingCard.d.ts.map +1 -0
- package/dist-lib/components/HerindelingMeldingCard.js +37 -0
- package/dist-lib/index.d.ts +2 -1
- package/dist-lib/index.d.ts.map +1 -1
- package/dist-lib/index.js +3 -5
- package/dist-lib/integrations/supabase/types.d.ts +364 -0
- package/dist-lib/integrations/supabase/types.d.ts.map +1 -1
- package/dist-lib/lib/autoSend.server.d.ts.map +1 -1
- package/dist-lib/lib/autoSend.server.js +14 -0
- package/dist-lib/lib/externalFulfillment.d.ts +14 -0
- package/dist-lib/lib/externalFulfillment.d.ts.map +1 -0
- package/dist-lib/lib/externalFulfillment.js +26 -0
- package/dist-lib/lib/handlers/logistics-tick.server.js +7 -0
- package/dist-lib/lib/loadCarrierPlanning.server.d.ts.map +1 -1
- package/dist-lib/lib/loadCarrierPlanning.server.js +12 -2
- package/dist-lib/lib/modulePrompts.d.ts.map +1 -1
- package/dist-lib/lib/modulePrompts.js +189 -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 +1 -0
- package/dist-lib/lib/shippingNoteQueue.server.d.ts.map +1 -1
- package/dist-lib/lib/shippingNoteQueue.server.js +12 -0
- package/dist-lib/lib/shippingNoteStates.d.ts +4 -0
- package/dist-lib/lib/shippingNoteStates.d.ts.map +1 -1
- package/dist-lib/lib/shippingNoteStates.js +4 -0
- package/dist-lib/lib/stickerQueue.server.d.ts.map +1 -1
- package/dist-lib/lib/stickerQueue.server.js +85 -9
- package/dist-lib/lib/stickerRules.d.ts +2 -0
- package/dist-lib/lib/stickerRules.d.ts.map +1 -1
- package/dist-lib/lib/stickerRules.js +5 -0
- package/package.json +1 -1
|
@@ -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;;;;;;GAmFvF"}
|
|
@@ -36,6 +36,20 @@ export async function runAutoSendQueue(sb, opts = {}) {
|
|
|
36
36
|
await finish(false, configReden ?? AUTO_SEND_ADRES_REDEN, null, true);
|
|
37
37
|
continue;
|
|
38
38
|
}
|
|
39
|
+
// 1.0.166: volledig afgehandeld in Floriday => nooit automatisch versturen. Onleesbaar => later opnieuw.
|
|
40
|
+
{
|
|
41
|
+
const { data: extern, error: externError } = await sb.rpc("logistics_order_external_state", { p_order_id: row.order_id });
|
|
42
|
+
if (externError) {
|
|
43
|
+
run.failed++;
|
|
44
|
+
await finish(false, `Afhandeling in Floriday niet leesbaar: ${externError.message}`, null);
|
|
45
|
+
continue;
|
|
46
|
+
}
|
|
47
|
+
if (extern?.full === true) {
|
|
48
|
+
run.definitief++;
|
|
49
|
+
await finish(false, "Afgehandeld in Floriday; niet automatisch verstuurd.", null, false, true);
|
|
50
|
+
continue;
|
|
51
|
+
}
|
|
52
|
+
}
|
|
39
53
|
try {
|
|
40
54
|
const body = autoSendBody(row.order_id);
|
|
41
55
|
const ts = Date.now();
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
export declare const EXTERN_AFGEHANDELD_REDEN = "Afgehandeld in Floriday";
|
|
2
|
+
export interface ExterneAfhandeling {
|
|
3
|
+
order_id: string;
|
|
4
|
+
full_fulfilled: boolean;
|
|
5
|
+
sales_order_ids: string[];
|
|
6
|
+
}
|
|
7
|
+
/** Is deze orderregel in Floriday afgehandeld? */
|
|
8
|
+
export declare function regelExternAfgehandeld(afhandeling: ExterneAfhandeling | null | undefined, sourceLineKey: unknown): boolean;
|
|
9
|
+
/** Filtert afgehandelde regels weg; regels van orders zonder afhandeling blijven. */
|
|
10
|
+
export declare function zonderExternAfgehandeld<T extends {
|
|
11
|
+
order_id?: unknown;
|
|
12
|
+
source_line_key?: unknown;
|
|
13
|
+
}>(regels: T[], afhandelingen: ExterneAfhandeling[]): T[];
|
|
14
|
+
//# sourceMappingURL=externalFulfillment.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"externalFulfillment.d.ts","sourceRoot":"","sources":["../../src/lib/externalFulfillment.ts"],"names":[],"mappings":"AAQA,eAAO,MAAM,wBAAwB,4BAA4B,CAAC;AAElE,MAAM,WAAW,kBAAkB;IACjC,QAAQ,EAAE,MAAM,CAAC;IACjB,cAAc,EAAE,OAAO,CAAC;IACxB,eAAe,EAAE,MAAM,EAAE,CAAC;CAC3B;AAID,kDAAkD;AAClD,wBAAgB,sBAAsB,CACpC,WAAW,EAAE,kBAAkB,GAAG,IAAI,GAAG,SAAS,EAClD,aAAa,EAAE,OAAO,GACrB,OAAO,CAMT;AAED,qFAAqF;AACrF,wBAAgB,uBAAuB,CAAC,CAAC,SAAS;IAAE,QAAQ,CAAC,EAAE,OAAO,CAAC;IAAC,eAAe,CAAC,EAAE,OAAO,CAAA;CAAE,EACjG,MAAM,EAAE,CAAC,EAAE,EACX,aAAa,EAAE,kBAAkB,EAAE,GAClC,CAAC,EAAE,CAML"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
// ============================================================================
|
|
2
|
+
// src/lib/externalFulfillment.ts — "Afgehandeld in Floriday" (Verkoop 1.0.96)
|
|
3
|
+
// ============================================================================
|
|
4
|
+
// Bron van waarheid is de Engine-tabel logistics_external_fulfillment, gevuld
|
|
5
|
+
// door logistics_apply_external_fulfillment na controle van de melding.
|
|
6
|
+
// Matcht altijd op order-id en Floriday-salesOrderId, nooit op naam.
|
|
7
|
+
// ============================================================================
|
|
8
|
+
export const EXTERN_AFGEHANDELD_REDEN = "Afgehandeld in Floriday";
|
|
9
|
+
const norm = (v) => String(v ?? "").trim().toLowerCase();
|
|
10
|
+
/** Is deze orderregel in Floriday afgehandeld? */
|
|
11
|
+
export function regelExternAfgehandeld(afhandeling, sourceLineKey) {
|
|
12
|
+
if (!afhandeling)
|
|
13
|
+
return false;
|
|
14
|
+
if (afhandeling.full_fulfilled === true)
|
|
15
|
+
return true;
|
|
16
|
+
const ids = Array.isArray(afhandeling.sales_order_ids) ? afhandeling.sales_order_ids.map(norm) : [];
|
|
17
|
+
const key = norm(sourceLineKey);
|
|
18
|
+
return key !== "" && ids.includes(key);
|
|
19
|
+
}
|
|
20
|
+
/** Filtert afgehandelde regels weg; regels van orders zonder afhandeling blijven. */
|
|
21
|
+
export function zonderExternAfgehandeld(regels, afhandelingen) {
|
|
22
|
+
const perOrder = new Map();
|
|
23
|
+
for (const a of Array.isArray(afhandelingen) ? afhandelingen : [])
|
|
24
|
+
perOrder.set(String(a.order_id), a);
|
|
25
|
+
return (Array.isArray(regels) ? regels : []).filter((r) => !regelExternAfgehandeld(perOrder.get(String(r.order_id ?? "")), r.source_line_key));
|
|
26
|
+
}
|
|
@@ -223,6 +223,13 @@ async function runTickRound(supabase, tickJob, ident) {
|
|
|
223
223
|
p_limit: 200,
|
|
224
224
|
});
|
|
225
225
|
shippingNotesBackfill = backfill ?? null;
|
|
226
|
+
// 1.0.168: verzendstatus van voorraadmails overnemen uit de outbox.
|
|
227
|
+
try {
|
|
228
|
+
await supabase.rpc("logistics_sync_stock_alert_email_status", { p_limit: 500 });
|
|
229
|
+
}
|
|
230
|
+
catch {
|
|
231
|
+
/* mag de ronde niet blokkeren */
|
|
232
|
+
}
|
|
226
233
|
// Zelfherstel: een eigen verzendbrief die bij een Floriday-order hoort wordt
|
|
227
234
|
// geannuleerd en vervangen door de officiele Floriday-aanvraag.
|
|
228
235
|
try {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"loadCarrierPlanning.server.d.ts","sourceRoot":"","sources":["../../src/lib/loadCarrierPlanning.server.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAGL,KAAK,cAAc,EACnB,KAAK,eAAe,EAEpB,KAAK,gBAAgB,EACtB,MAAM,sBAAsB,CAAC;AAG9B,OAAO,EAA0B,KAAK,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AACrF,OAAO,EAA+C,KAAK,aAAa,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"loadCarrierPlanning.server.d.ts","sourceRoot":"","sources":["../../src/lib/loadCarrierPlanning.server.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAGL,KAAK,cAAc,EACnB,KAAK,eAAe,EAEpB,KAAK,gBAAgB,EACtB,MAAM,sBAAsB,CAAC;AAG9B,OAAO,EAA0B,KAAK,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AACrF,OAAO,EAA+C,KAAK,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAcrG,wBAAsB,6BAA6B,CAAC,EAAE,EAAE,cAAc,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAwB/G;AAMD,UAAU,QAAQ;IAChB,gBAAgB,EAAE,MAAM,CAAC;IACzB,gBAAgB,EAAE,MAAM,CAAC;IACzB,eAAe,EAAE,MAAM,CAAC;CACzB;AAED,wDAAwD;AACxD,MAAM,MAAM,cAAc,GACtB,WAAW,GACX,eAAe,GACf,kBAAkB,GAClB,aAAa,GACb,SAAS,GACT,MAAM,CAAC;AAgBX;;;;;GAKG;AACH,wBAAgB,2BAA2B,CAAC,OAAO,EAAE,OAAO,GAAG,QAAQ,GAAG,IAAI,CAQ7E;AAED;;;;GAIG;AACH,wBAAgB,wBAAwB,CAAC,YAAY,EAAE,OAAO,GAAG,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC,CAYrF;AAgED,MAAM,WAAW,aAAa;IAC5B,mFAAmF;IACnF,cAAc,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IACvC,sFAAsF;IACtF,kBAAkB,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC;IACxD,iEAAiE;IACjE,OAAO,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;IACtC,gGAAgG;IAChG,UAAU,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,YAAY,EAAE,CAAA;KAAE,CAAC,CAAC;IAC1E,kFAAkF;IAClF,KAAK,CAAC,EAAE,KAAK,CAAC;QAAE,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;QAAC,aAAa,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CACjF;AAED,iFAAiF;AACjF,MAAM,WAAW,YAAY;IAC3B,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,GAAG,EAAE,MAAM,CAAC;CACb;AAED,6FAA6F;AAC7F,MAAM,WAAW,cAAc;IAC7B,aAAa,EAAE,MAAM,CAAC;IACtB,SAAS,EAAE,SAAS,GAAG,KAAK,GAAG,WAAW,GAAG,aAAa,GAAG,UAAU,GAAG,MAAM,GAAG,MAAM,CAAC;IAC1F,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,GAAG,EAAE,MAAM,CAAC;IACZ,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,UAAU,EAAE,OAAO,CAAC;IACpB,MAAM,EAAE,OAAO,CAAC;IAChB,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;CACrB;AAED,6EAA6E;AAC7E,wBAAgB,eAAe,CAC7B,KAAK,EAAE;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,YAAY,EAAE,CAAA;CAAE,GAAG,SAAS,EAClE,YAAY,EAAE,MAAM,GACnB,YAAY,EAAE,GAAG,IAAI,CAmBvB;AAaD;;;;;;;;;GASG;AACH,wBAAsB,0BAA0B,CAC9C,EAAE,EAAE,cAAc,EAClB,IAAI,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,EAChC,OAAO,GAAE,aAAkB,GAC1B,OAAO,CAAC,gBAAgB,EAAE,CAAC,CA6I7B;AAMD,wBAAsB,mBAAmB,CAAC,EAAE,EAAE,cAAc,GAAG,OAAO,CAAC,kBAAkB,EAAE,CAAC,CAO3F;AAUD,MAAM,WAAW,aAAa;IAC5B,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,oBAAoB,EAAE,MAAM,GAAG,IAAI,CAAC;IACpC,WAAW,EAAE,OAAO,CAAC;IACrB,8CAA8C;IAC9C,YAAY,EAAE,UAAU,GAAG,YAAY,CAAC;CACzC;AAOD,wFAAwF;AACxF,wBAAsB,iBAAiB,CAAC,EAAE,EAAE,cAAc,GAAG,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC,CAwBzF;AAED;;;;;;GAMG;AACH,wBAAsB,kBAAkB,CACtC,EAAE,EAAE,cAAc,GACjB,OAAO,CAAC,UAAU,GAAG,oBAAoB,CAAC,CAW5C;AAED,2FAA2F;AAC3F,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,cAAc,EAAE,KAAK,EAAE,aAAa,GAAG,IAAI,GAAG,cAAc,CAaxG;AAMD;;;;GAIG;AACH,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,gBAAgB,EAAE,EAC1B,OAAO,EAAE,cAAc,EACvB,OAAO,EAAE,QAAQ,GAChB,eAAe,EAAE,CAkEnB;AAUD,oFAAoF;AACpF,eAAO,MAAM,qBAAqB,uBAAuB,CAAC;AAK1D;;;;GAIG;AACH,wBAAgB,iBAAiB,CAC/B,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,aAAa,GAClB,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CA4BhC;AAyCD,wBAAgB,4BAA4B,CAAC,KAAK,EAAE,aAAa,EAAE,GAAG,eAAe,EAAE,CAwCtF;AAsED,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,OAAO,CAAC;IACZ,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,mBAAmB,EAAE,OAAO,CAAC;IAC7B,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,OAAO,CAAC,EAAE,QAAQ,GAAG,SAAS,CAAC;IAC/B,mDAAmD;IACnD,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,iFAAiF;IACjF,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACzC,KAAK,CAAC,EAAE,eAAe,EAAE,CAAC;CAC3B;AAGD,MAAM,WAAW,aAAa;IAC5B,4CAA4C;IAC5C,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,sEAAsE;IACtE,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B;;;;;OAKG;IACH,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;CACxB;AAGD,UAAU,qBAAqB;IAC7B,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;CAC3B;AAED,MAAM,WAAW,mBAAmB;IAClC,uEAAuE;IACvE,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,iEAAiE;IACjE,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,uEAAuE;IACvE,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED;;;;;GAKG;AACH,wBAAgB,8BAA8B,CAC5C,KAAK,EAAE,eAAe,EAAE,EACxB,WAAW,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,EAChC,eAAe,GAAE,mBAAwB,GACxC,qBAAqB,EAAE,CAoCzB;AAqBD;;;;;GAKG;AACH,wBAAsB,wBAAwB,CAC5C,EAAE,EAAE,cAAc,EAClB,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,EAAE,GACjB,OAAO,CAAC,MAAM,EAAE,CAAC,CAoCnB;AAID;;;;;;;;;;;GAWG;AACH,wBAAsB,oBAAoB,CACxC,EAAE,EAAE,cAAc,EAClB,QAAQ,EAAE,MAAM,EAChB,OAAO,GAAE,aAAkB,GAC1B,OAAO,CAAC,YAAY,CAAC,CAuCvB;AAED,qFAAqF;AACrF,eAAO,MAAM,mBAAmB,gFAC+C,CAAC;AAqjChF,wBAAsB,mBAAmB,CACvC,EAAE,EAAE,cAAc,EAClB,OAAO,EAAE,MAAM,EACf,OAAO,GAAE,aAAkB,GAC1B,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC,CAI9B"}
|
|
@@ -11,6 +11,7 @@ import { MODULE_VERSION } from "./moduleVersion.js";
|
|
|
11
11
|
import { fallbackCarrierProfile } from "./loadCarrierTypes.js";
|
|
12
12
|
import { planByDimensions, DIMENSION_PLANNER_VERSION } from "./dimensionPlanner.js";
|
|
13
13
|
import { buildDimensionItems, carrierDimensions } from "./dimensionData.server.js";
|
|
14
|
+
import { zonderExternAfgehandeld } from "./externalFulfillment.js";
|
|
14
15
|
// ---------------------------------------------------------------------------
|
|
15
16
|
// Buffer
|
|
16
17
|
// ---------------------------------------------------------------------------
|
|
@@ -881,14 +882,23 @@ async function replanBufferUnlocked(sb, bufferId, options = {}) {
|
|
|
881
882
|
}
|
|
882
883
|
}
|
|
883
884
|
const idList = orderIds.length > 0 ? orderIds : ["00000000-0000-0000-0000-000000000000"];
|
|
884
|
-
const { data:
|
|
885
|
+
const { data: rawItems } = await sb
|
|
885
886
|
.from("order_items")
|
|
886
887
|
.select("id, order_id, product_id, product_name, quantity, plants_per_crate, crates_per_layer, layers_per_cart, " +
|
|
887
|
-
"packing_locked_at, packing_locked_by, " +
|
|
888
|
+
"packing_locked_at, packing_locked_by, source_line_key, " +
|
|
888
889
|
"products(plants_per_crate, crates_per_layer, layers_per_cart, weight, floriday_trade_item_id)")
|
|
889
890
|
.in("order_id", idList)
|
|
890
891
|
// Regels in quarantaine (Verkoop-herstel) nooit inplannen.
|
|
891
892
|
.is("quarantined_at", null);
|
|
893
|
+
// 1.0.166: regels die in Floriday zijn afgehandeld nooit inplannen. Onleesbaar = niet plannen (fail closed).
|
|
894
|
+
const { data: extern, error: externError } = await sb
|
|
895
|
+
.from("logistics_external_fulfillment")
|
|
896
|
+
.select("order_id, full_fulfilled, sales_order_ids")
|
|
897
|
+
.in("order_id", idList);
|
|
898
|
+
if (externError) {
|
|
899
|
+
throw new Error(`Afhandeling in Floriday kon niet worden gelezen: ${externError.message}`);
|
|
900
|
+
}
|
|
901
|
+
const items = zonderExternAfgehandeld((Array.isArray(rawItems) ? rawItems : []), (Array.isArray(extern) ? extern : []));
|
|
892
902
|
// Duidelijk teveel identieke bestelregels: niet rekenen maar blokkeren.
|
|
893
903
|
// Een indeling op opgeblazen aantallen is fout en loopt in een timeout.
|
|
894
904
|
{
|
|
@@ -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;AAw9LD,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"}
|
|
@@ -1157,6 +1157,82 @@ CONTROLELIJST
|
|
|
1157
1157
|
"Aanmelden voor deze leverdatum kon tot ma 19-10 13:00", voorstel wo 21-10.
|
|
1158
1158
|
[ ] Levering wo 21-10: haalbaar, ophalen di 20-10 15:00, aanmelden di 13:00.
|
|
1159
1159
|
[ ] Afleverlocatie als GLN zonder vervoerder: vervoerder wordt gekozen.
|
|
1160
|
+
[ ] Meld terug met je pakketversie.`,
|
|
1161
|
+
},
|
|
1162
|
+
{
|
|
1163
|
+
number: 26,
|
|
1164
|
+
title: "Afgehandeld in Floriday (Verkoop 1.0.96)",
|
|
1165
|
+
date: "2026-10-19",
|
|
1166
|
+
summary: "Engine verwerkt de melding 'Afgehandeld in Floriday' (volledig of per Floriday-bestelling); Verkoop leest de stand via de dekking.",
|
|
1167
|
+
withSharedContract: false,
|
|
1168
|
+
body: `KOPPELPROMPT VERKOOP 26 – Afgehandeld in Floriday (Engine 1.0.166)
|
|
1169
|
+
|
|
1170
|
+
CONTEXT
|
|
1171
|
+
Verkoop 1.0.96 meldt een order die in Floriday zelf is afgehandeld. De Engine
|
|
1172
|
+
1.0.166 verwerkt die melding. Er verandert niets aan bestaande Engine-functies
|
|
1173
|
+
die jij al aanroept, behalve twee uitbreidingen op de dekking (zie onder).
|
|
1174
|
+
|
|
1175
|
+
WAT JIJ STUURT (ongewijzigd t.o.v. jouw plan)
|
|
1176
|
+
logistics_emit_event(
|
|
1177
|
+
p_source_module => 'verkoop',
|
|
1178
|
+
p_event_type => 'order.changed',
|
|
1179
|
+
p_order_ref => <order-id (uuid) of ordernummer>,
|
|
1180
|
+
p_payload => {
|
|
1181
|
+
"orderId": "<order-id>", -- aanbevolen
|
|
1182
|
+
"reason": "Afgehandeld in Floriday", -- exact deze tekst
|
|
1183
|
+
"floridayExternalFulfilledFull": true|false, -- verplicht, echte boolean
|
|
1184
|
+
"floridayExternalFulfilledSalesOrderIds": ["<salesOrderId uuid>", ...]
|
|
1185
|
+
},
|
|
1186
|
+
p_idempotency_key => 'extern-afgehandeld:<order-id>:<salesOrderIds gesorteerd>'
|
|
1187
|
+
)
|
|
1188
|
+
Zet VÓÓR de melding op de order:
|
|
1189
|
+
- custom_fields.floriday_external_fulfilled_at (verplicht bij full = true)
|
|
1190
|
+
- custom_fields.floriday_external_fulfilled_sales_order_ids (array; moet alle
|
|
1191
|
+
id's uit de melding bevatten)
|
|
1192
|
+
|
|
1193
|
+
WAT DE ENGINE DOET
|
|
1194
|
+
- Controle (fail closed). De melding wordt "failed" met een duidelijke reden
|
|
1195
|
+
in logistics_events.error, en er verandert niets, als:
|
|
1196
|
+
- de order niet gevonden wordt op order-id of ordernummer;
|
|
1197
|
+
- floridayExternalFulfilledFull geen true/false is;
|
|
1198
|
+
- full = true maar floriday_external_fulfilled_at ontbreekt;
|
|
1199
|
+
- een id uit de melding niet in floriday_external_fulfilled_sales_order_ids staat;
|
|
1200
|
+
- full = false zonder id's, of een id hoort bij geen enkele orderregel
|
|
1201
|
+
(order_items.source_line_key).
|
|
1202
|
+
- full = true: open taken geannuleerd (reden "Afgehandeld in Floriday"), eigen
|
|
1203
|
+
open pickregels geannuleerd (cancelled_at + reden, niets verwijderd), eigen
|
|
1204
|
+
karren gearchiveerd (omkeerbaar). Gedeelde kar: alleen het deel van deze
|
|
1205
|
+
order; de andere orders op die kar worden opnieuw ingedeeld, een al
|
|
1206
|
+
geprinte/gescande kar blijft staan en telt voor deze order als afgehandeld.
|
|
1207
|
+
- full = false: alleen de regels van de genoemde Floriday-bestellingen gaan uit
|
|
1208
|
+
de planning; de order wordt opnieuw ingepland zonder die regels.
|
|
1209
|
+
- Ook als de order al deels gepickt is: gewoon afronden, geen blokkade.
|
|
1210
|
+
- Geen verzendbrief, geen automatische verzending (bij full), geen
|
|
1211
|
+
klantstickers; zo'n sticker wordt nooit als "handled" afgemeld in Floriday.
|
|
1212
|
+
- Dezelfde melding nog eens sturen doet niets extra.
|
|
1213
|
+
|
|
1214
|
+
WAT JIJ DAARNA LEEST
|
|
1215
|
+
1. logistics_order_plan_coverage(p_order_id uuid) -> jsonb
|
|
1216
|
+
- Nieuw veld externalFulfilled: null, of
|
|
1217
|
+
{ full, salesOrderIds[], reason, appliedAt, eventId }.
|
|
1218
|
+
- full = true: state = 'afgehandeld_extern', label = 'Afgehandeld in Floriday'.
|
|
1219
|
+
- full = false: progressPct/state tellen alleen de regels die nog lopen.
|
|
1220
|
+
2. logistics_order_plan_coverage_list(p_order_ids uuid[]) -> zelfde kolommen
|
|
1221
|
+
als nu; bij full = true is state 'afgehandeld_extern' en label
|
|
1222
|
+
'Afgehandeld in Floriday'.
|
|
1223
|
+
3. Is de melding mislukt? Lees logistics_events.status/error op het eventId
|
|
1224
|
+
dat logistics_emit_event teruggeeft, en toon de reden.
|
|
1225
|
+
|
|
1226
|
+
REGELS
|
|
1227
|
+
- Match op order-id en Floriday-salesOrderId (uuid), nooit op naam.
|
|
1228
|
+
- Geen omgevingswaarden. Wijzig geen Engine-functies of -rechten.
|
|
1229
|
+
- Teksten in "je"-vorm, zonder technische termen.
|
|
1230
|
+
|
|
1231
|
+
CONTROLELIJST
|
|
1232
|
+
[ ] Volledig afgehandelde order: dekking toont "Afgehandeld in Floriday".
|
|
1233
|
+
[ ] Samengevoegde order, één bestelling afgehandeld: dekking telt alleen de rest.
|
|
1234
|
+
[ ] Melding met een salesOrderId dat bij geen regel hoort: jij toont de reden
|
|
1235
|
+
uit logistics_events.error.
|
|
1160
1236
|
[ ] Meld terug met je pakketversie.`,
|
|
1161
1237
|
},
|
|
1162
1238
|
],
|
|
@@ -4313,6 +4389,50 @@ pickstation_cart_sticker_state en elke eigen query op karren.
|
|
|
4313
4389
|
|
|
4314
4390
|
CONTROLELIJST
|
|
4315
4391
|
[ ] Een gearchiveerde kar verschijnt niet op het pickscherm en is niet printbaar.
|
|
4392
|
+
[ ] Meld terug met je pakketversie.`,
|
|
4393
|
+
},
|
|
4394
|
+
{
|
|
4395
|
+
number: 49,
|
|
4396
|
+
title: "Knop “Stickers opnieuw printen” op het pickstation",
|
|
4397
|
+
date: "2026-10-19",
|
|
4398
|
+
summary: "Knop op het openbare pickstation die via pickstation_sticker_reprint de klantstickers van een kar opnieuw laat printen.",
|
|
4399
|
+
body: `WAAROM
|
|
4400
|
+
Op het pickstation moet je klantstickers van een kar opnieuw kunnen laten
|
|
4401
|
+
printen, bijvoorbeeld als een vel vastloopt. Een herprint van de pakbon print
|
|
4402
|
+
de stickers nooit opnieuw; dat kan alleen met deze aparte knop. De Engine
|
|
4403
|
+
(1.0.164) levert de functie.
|
|
4404
|
+
|
|
4405
|
+
WAT JE BOUWT
|
|
4406
|
+
Een knop "Stickers opnieuw printen" bij een kar op het openbare pickstation.
|
|
4407
|
+
- Toon de knop alleen als public.pickstation_cart_sticker_state(p_slug,
|
|
4408
|
+
p_cart_id) toegang = true geeft en de stand van de kar minstens één
|
|
4409
|
+
klantsticker heeft die al in de printwachtrij stond of is afgemeld.
|
|
4410
|
+
- Na een klik eerst een bevestiging: "Stickers van deze kar opnieuw printen?"
|
|
4411
|
+
met een optioneel veld voor de reden.
|
|
4412
|
+
- Daarna aanroepen:
|
|
4413
|
+
rpc('pickstation_sticker_reprint', {
|
|
4414
|
+
p_slug: <slug van dit station>,
|
|
4415
|
+
p_cart_id: <id van de kar>,
|
|
4416
|
+
p_reden: <reden of null>
|
|
4417
|
+
})
|
|
4418
|
+
Antwoord:
|
|
4419
|
+
{ ok: true, aantal: n } -> melding "n sticker(s) opnieuw in de printwachtrij".
|
|
4420
|
+
{ ok: false, reden } -> reden in gewone taal tonen:
|
|
4421
|
+
onbekend_of_inactief_station -> "Dit pickstation is onbekend of staat uit."
|
|
4422
|
+
niet_in_wachtrij_station -> "Deze kar hoort niet bij dit pickstation."
|
|
4423
|
+
geen_eerder_geprinte_sticker -> "Er is voor deze kar nog geen sticker geprint."
|
|
4424
|
+
- De opdracht zelf komt binnen een minuut in de printwachtrij, via de
|
|
4425
|
+
stickerronde van de Engine. Toon na het verversen gewoon de stand van de kar.
|
|
4426
|
+
|
|
4427
|
+
REGELS
|
|
4428
|
+
- Geen eigen printopdrachten maken. Altijd via pickstation_sticker_reprint.
|
|
4429
|
+
- Pas de functie niet aan; de slugcontrole zit in de Engine.
|
|
4430
|
+
- Geen URL's of vaste id's in code.
|
|
4431
|
+
|
|
4432
|
+
CONTROLELIJST
|
|
4433
|
+
[ ] De knop staat alleen bij karren met een al geprinte klantsticker.
|
|
4434
|
+
[ ] Een verkeerd station of een verkeerde kar geeft een duidelijke melding.
|
|
4435
|
+
[ ] Een herprint van de pakbon print geen stickers opnieuw.
|
|
4316
4436
|
[ ] Meld terug met je pakketversie.`,
|
|
4317
4437
|
},
|
|
4318
4438
|
],
|
|
@@ -5406,6 +5526,45 @@ CONTROLELIJST
|
|
|
5406
5526
|
[ ] Testpakbon zonder kar wordt aangenomen in de Printwachtrij.
|
|
5407
5527
|
[ ] Testpakbon toont geen barcode.
|
|
5408
5528
|
[ ] Gewone pakbon zonder kar wordt nog steeds geweigerd.
|
|
5529
|
+
[ ] Meld terug met je pakketversie.`,
|
|
5530
|
+
},
|
|
5531
|
+
{
|
|
5532
|
+
number: 9,
|
|
5533
|
+
title: "Klantstickers: floriday_sticker_id op elke opdracht",
|
|
5534
|
+
date: "2026-10-19",
|
|
5535
|
+
summary: "Antwoord op 1.63.3: elke klantstickeropdracht draagt floriday_sticker_id; should_be_printed=false wordt geen opdracht.",
|
|
5536
|
+
body: `WAAROM
|
|
5537
|
+
Antwoord op jullie verzoek in 1.63.3. De Logistiek Engine (1.0.164) maakt
|
|
5538
|
+
klantstickers via de stickerronde aan, met documenttype 'sticker' en via
|
|
5539
|
+
layout_print_document.
|
|
5540
|
+
|
|
5541
|
+
WAT DE ENGINE NU MEESTUURT (payload van elke klantstickeropdracht)
|
|
5542
|
+
- floriday_sticker_id: het Floriday-stickernummer (stickerId), als tekst.
|
|
5543
|
+
Nooit een naam.
|
|
5544
|
+
- sticker_id: dezelfde waarde (oud veld, blijft staan).
|
|
5545
|
+
- sticker_type: POT, PRODUCT, SLEEVE, PACKAGE, LAYER of LOAD_CARRIER.
|
|
5546
|
+
- sticker_formaat_mm: { breedte, hoogte }, als die bekend is.
|
|
5547
|
+
- cart_id, order_id, order_number, print_plek_id, kopieen.
|
|
5548
|
+
- is_herprint: true alleen bij een expliciete herprint vanaf het pickstation
|
|
5549
|
+
(met herprint_reden). Een herprint van een pakbon maakt nooit
|
|
5550
|
+
stickeropdrachten.
|
|
5551
|
+
|
|
5552
|
+
AFSPRAKEN
|
|
5553
|
+
- should_be_printed = false: de Engine maakt geen opdracht aan. Jullie regel
|
|
5554
|
+
"geannuleerd / niet_nodig, geen nieuwe poging" blijft het vangnet als
|
|
5555
|
+
Floriday het later omzet.
|
|
5556
|
+
- Maat: lees die met floriday_sticker_id uit Floriday-authenticatie; anders uit
|
|
5557
|
+
de pdf; is die ook onbekend, dan niet printen (jullie regel).
|
|
5558
|
+
- Het aantal staat in kopieen. De pdf komt zonder verdubbelde pagina's.
|
|
5559
|
+
|
|
5560
|
+
WAT JE BOUWT
|
|
5561
|
+
Niets nieuws, als dit klopt met wat jullie in 1.63.3 lezen. Controleer het en
|
|
5562
|
+
meld terug.
|
|
5563
|
+
|
|
5564
|
+
CONTROLELIJST
|
|
5565
|
+
[ ] Een klantstickeropdracht van de Engine wordt herkend op floriday_sticker_id.
|
|
5566
|
+
[ ] should_be_printed = false bij Floriday leidt tot 'niet_nodig' zonder nieuwe poging.
|
|
5567
|
+
[ ] is_herprint = true wordt als herprint verwerkt.
|
|
5409
5568
|
[ ] Meld terug met je pakketversie.`,
|
|
5410
5569
|
},
|
|
5411
5570
|
],
|
|
@@ -5641,6 +5800,36 @@ CONTROLELIJST
|
|
|
5641
5800
|
[ ] Geen vaste projectlink meer in de cron.
|
|
5642
5801
|
[ ] Meld terug met je pakketversie.`,
|
|
5643
5802
|
},
|
|
5803
|
+
{
|
|
5804
|
+
number: 6,
|
|
5805
|
+
title: "Klantsticker-pdf zonder verdubbelde pagina’s",
|
|
5806
|
+
date: "2026-10-19",
|
|
5807
|
+
summary: "De Engine print het aantal zelf; haal de stickerpdf op zonder verdubbelde pagina’s en meld hoe het nu gaat.",
|
|
5808
|
+
body: `WAAROM
|
|
5809
|
+
De Logistiek Engine 1.0.164 maakt bij elke Floriday-klantsticker de
|
|
5810
|
+
printopdracht(en) aan op het moment dat de pakbon van de kar print, met het
|
|
5811
|
+
aantal uit stickerFileInformation.numberOfCopies (Suppliers API 2026v1). Je
|
|
5812
|
+
sync draait al en slaagt (in staging nu 0 stickers), en
|
|
5813
|
+
floriday_customer_stickers_cache heeft al sales_order_id, sticker_width_mm,
|
|
5814
|
+
sticker_height_mm, sticker_type, should_be_printed en data. Er ontbreekt nog
|
|
5815
|
+
één ding.
|
|
5816
|
+
|
|
5817
|
+
WAT JE BOUWT
|
|
5818
|
+
(a) Haal de pdf van een klantsticker (GET /customer-stickers/{stickerId}) op
|
|
5819
|
+
met duplicatePagesBasedOnNumberOfCopies=false, of laat die parameter weg
|
|
5820
|
+
als false de standaard is. De Engine print het aantal zelf via kopieen.
|
|
5821
|
+
Verdubbelde pagina's plus kopieen geeft dubbel zoveel stickers.
|
|
5822
|
+
(b) Meld in je terugmelding hoe getFlorydayDocument (kind "customer-sticker")
|
|
5823
|
+
dit nu doet: met of zonder verdubbelde pagina's.
|
|
5824
|
+
|
|
5825
|
+
REGELS
|
|
5826
|
+
- Verander niets aan de cachekolommen of de sync zelf; die zijn goed.
|
|
5827
|
+
- Geen URL's, sleutels of vaste id's in code of migraties.
|
|
5828
|
+
|
|
5829
|
+
CONTROLELIJST
|
|
5830
|
+
[ ] Klantsticker-pdf wordt opgehaald zonder verdubbelde pagina's.
|
|
5831
|
+
[ ] Terugmelding: hoe het nu gaat en vanaf welke pakketversie het goed is.`,
|
|
5832
|
+
},
|
|
5644
5833
|
],
|
|
5645
5834
|
},
|
|
5646
5835
|
dashboards: {
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export declare const MODULE_VERSION = "1.0.
|
|
1
|
+
export declare const MODULE_VERSION = "1.0.169";
|
|
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.169";
|
|
@@ -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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"}
|
|
@@ -763,6 +763,7 @@ export const RULE_STEPS = [
|
|
|
763
763
|
{
|
|
764
764
|
key: "sticker_release",
|
|
765
765
|
label: "Wanneer worden de stickers vrijgegeven?",
|
|
766
|
+
description: "Floriday-klantstickers printen altijd bij de pakbon van de kar.",
|
|
766
767
|
type: "radio",
|
|
767
768
|
default: "with_pick_release",
|
|
768
769
|
options: [
|
|
@@ -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,CA+
|
|
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+e1B;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"}
|
|
@@ -198,6 +198,18 @@ export async function runShippingNoteQueue(sb, options = {}) {
|
|
|
198
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
|
+
// 1.0.166: in Floriday afgehandeld (buiten het ERP om)? Geen verzendbrief.
|
|
202
|
+
{
|
|
203
|
+
const { data: extern, error: externError } = await sb.rpc("logistics_sales_order_external_fulfilled", { p_order_id: row.order_id, p_sales_order_id: salesOrderId });
|
|
204
|
+
if (externError) {
|
|
205
|
+
await wacht(`Afhandeling in Floriday kon niet worden gelezen: ${externError.message}`, "tijdelijk");
|
|
206
|
+
continue;
|
|
207
|
+
}
|
|
208
|
+
if (extern === true) {
|
|
209
|
+
await definitief("afgehandeld_in_floriday");
|
|
210
|
+
continue;
|
|
211
|
+
}
|
|
212
|
+
}
|
|
201
213
|
// Geannuleerd in Floriday? Dan direct stoppen in plaats van de volle wachttijd.
|
|
202
214
|
const { isFloridayCancelled, FLORIDAY_CANCELLED_REASON } = await import("./floridayCancellation.server.js");
|
|
203
215
|
const annulering = await isFloridayCancelled(sb, {
|
|
@@ -14,6 +14,10 @@ export declare const SHIPPING_NOTE_DEFINITIEVE_FOUTEN: {
|
|
|
14
14
|
readonly reden: "De gegevens van deze order zijn ongeldig voor Floriday.";
|
|
15
15
|
readonly advies: "Controleer de order (artikelen, karren, lagen) en druk daarna op 'Opnieuw starten'.";
|
|
16
16
|
};
|
|
17
|
+
readonly afgehandeld_in_floriday: {
|
|
18
|
+
readonly reden: "Deze order (of Floriday-bestelling) is in Floriday zelf afgehandeld; er wordt geen verzendbrief gemaakt.";
|
|
19
|
+
readonly advies: "Niets doen; de afhandeling liep buiten het ERP om.";
|
|
20
|
+
};
|
|
17
21
|
};
|
|
18
22
|
export type ShippingNoteDefinitieveFout = keyof typeof SHIPPING_NOTE_DEFINITIEVE_FOUTEN;
|
|
19
23
|
/** Instelling in module_runtime_config; geheel getal 1..200, startwaarde 60. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shippingNoteStates.d.ts","sourceRoot":"","sources":["../../src/lib/shippingNoteStates.ts"],"names":[],"mappings":"AAKA,eAAO,MAAM,uBAAuB,sFAAuF,CAAC;AAC5H,MAAM,MAAM,wBAAwB,GAAG,CAAC,OAAO,uBAAuB,CAAC,CAAC,MAAM,CAAC,CAAC;AAEhF,kEAAkE;AAClE,eAAO,MAAM,gCAAgC
|
|
1
|
+
{"version":3,"file":"shippingNoteStates.d.ts","sourceRoot":"","sources":["../../src/lib/shippingNoteStates.ts"],"names":[],"mappings":"AAKA,eAAO,MAAM,uBAAuB,sFAAuF,CAAC;AAC5H,MAAM,MAAM,wBAAwB,GAAG,CAAC,OAAO,uBAAuB,CAAC,CAAC,MAAM,CAAC,CAAC;AAEhF,kEAAkE;AAClE,eAAO,MAAM,gCAAgC;;;;;;;;;;;;;;;;;CAiBnC,CAAC;AACX,MAAM,MAAM,2BAA2B,GAAG,MAAM,OAAO,gCAAgC,CAAC;AAExF,gFAAgF;AAChF,eAAO,MAAM,8BAA8B,yCAAyC,CAAC;AACrF,eAAO,MAAM,8BAA8B,IAAI,CAAC;AAChD,eAAO,MAAM,8BAA8B,MAAM,CAAC;AAElD,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,GAAG,IAAI,CAG9D;AAED,kFAAkF;AAClF,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,2BAA2B,GAAG,IAAI,CAKnF"}
|
|
@@ -17,6 +17,10 @@ export const SHIPPING_NOTE_DEFINITIEVE_FOUTEN = {
|
|
|
17
17
|
reden: "De gegevens van deze order zijn ongeldig voor Floriday.",
|
|
18
18
|
advies: "Controleer de order (artikelen, karren, lagen) en druk daarna op 'Opnieuw starten'.",
|
|
19
19
|
},
|
|
20
|
+
afgehandeld_in_floriday: {
|
|
21
|
+
reden: "Deze order (of Floriday-bestelling) is in Floriday zelf afgehandeld; er wordt geen verzendbrief gemaakt.",
|
|
22
|
+
advies: "Niets doen; de afhandeling liep buiten het ERP om.",
|
|
23
|
+
},
|
|
20
24
|
};
|
|
21
25
|
/** Instelling in module_runtime_config; geheel getal 1..200, startwaarde 60. */
|
|
22
26
|
export const SHIPPING_NOTE_MAX_ATTEMPTS_KEY = "logistics_shipping_note_max_attempts";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stickerQueue.server.d.ts","sourceRoot":"","sources":["../../src/lib/stickerQueue.server.ts"],"names":[],"mappings":"AAeA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"stickerQueue.server.d.ts","sourceRoot":"","sources":["../../src/lib/stickerQueue.server.ts"],"names":[],"mappings":"AAeA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAe5D,MAAM,WAAW,UAAU;IACzB,MAAM,EAAE,OAAO,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB;AAoCD,wBAAsB,eAAe,CAAC,EAAE,EAAE,cAAc,EAAE,IAAI,GAAE;IAAE,KAAK,CAAC,EAAE,MAAM,CAAA;CAAO,GAAG,OAAO,CAAC,UAAU,CAAC,CA2T5G"}
|