@flowselections/logistiek-engine 1.0.135 → 1.0.138
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/MinuutrondeCard.d.ts.map +1 -1
- package/dist-lib/components/MinuutrondeCard.js +1 -1
- package/dist-lib/hooks/useMinuutronde.d.ts +2 -0
- package/dist-lib/hooks/useMinuutronde.d.ts.map +1 -1
- package/dist-lib/hooks/useMinuutronde.js +1 -0
- package/dist-lib/integrations/supabase/types.d.ts +6 -0
- package/dist-lib/integrations/supabase/types.d.ts.map +1 -1
- package/dist-lib/lib/controlScan.server.d.ts.map +1 -1
- package/dist-lib/lib/controlScan.server.js +4 -17
- package/dist-lib/lib/layoutPrint.server.d.ts +20 -0
- package/dist-lib/lib/layoutPrint.server.d.ts.map +1 -1
- package/dist-lib/lib/layoutPrint.server.js +55 -0
- package/dist-lib/lib/moduleVersion.d.ts +1 -1
- package/dist-lib/lib/moduleVersion.js +1 -1
- package/dist-lib/lib/shippingNoteQueue.server.d.ts.map +1 -1
- package/dist-lib/lib/shippingNoteQueue.server.js +14 -26
- package/dist-lib/lib/shippingNoteStates.d.ts +1 -1
- package/dist-lib/lib/shippingNoteStates.d.ts.map +1 -1
- package/dist-lib/lib/shippingNoteStates.js +1 -1
- package/dist-lib/lib/stopReden.js +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"controlScan.server.d.ts","sourceRoot":"","sources":["../../src/lib/controlScan.server.ts"],"names":[],"mappings":"AAiBA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAK5D,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB;AAiBD,qFAAqF;AACrF,eAAO,MAAM,yBAAyB,KAAK,CAAC;AAC5C,mDAAmD;AACnD,eAAO,MAAM,sBAAsB,KAAK,CAAC;AAgBzC,mDAAmD;AACnD,wBAAgB,mBAAmB,CACjC,GAAG,EAAE;IAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,EAC1F,GAAG,GAAE,MAAmB,GACvB,UAAU,GAAG,MAAM,GAAG,IAAI,CAK5B;AA6BD,wBAAsB,mBAAmB,CACvC,EAAE,EAAE,cAAc,EAClB,OAAO,GAAE;IAAE,KAAK,CAAC,EAAE,MAAM,CAAA;CAAO,GAC/B,OAAO,CAAC,cAAc,CAAC,
|
|
1
|
+
{"version":3,"file":"controlScan.server.d.ts","sourceRoot":"","sources":["../../src/lib/controlScan.server.ts"],"names":[],"mappings":"AAiBA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAK5D,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB;AAiBD,qFAAqF;AACrF,eAAO,MAAM,yBAAyB,KAAK,CAAC;AAC5C,mDAAmD;AACnD,eAAO,MAAM,sBAAsB,KAAK,CAAC;AAgBzC,mDAAmD;AACnD,wBAAgB,mBAAmB,CACjC,GAAG,EAAE;IAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,EAC1F,GAAG,GAAE,MAAmB,GACvB,UAAU,GAAG,MAAM,GAAG,IAAI,CAK5B;AA6BD,wBAAsB,mBAAmB,CACvC,EAAE,EAAE,cAAc,EAClB,OAAO,GAAE;IAAE,KAAK,CAAC,EAAE,MAAM,CAAA;CAAO,GAC/B,OAAO,CAAC,cAAc,CAAC,CAwPzB"}
|
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
// en dubbele scans worden al in de database geblokkeerd. Geen omgevings- of
|
|
15
15
|
// klantwaarden in deze code; de printer komt uit de werkwijze in de database.
|
|
16
16
|
// ============================================================================
|
|
17
|
-
import {
|
|
17
|
+
import { printViaLayoutGecontroleerd, floridayLayout } from "./layoutPrint.server.js";
|
|
18
18
|
import { isFloridayCancelled, FLORIDAY_CANCELLED_REASON } from "./floridayCancellation.server.js";
|
|
19
19
|
import { trace } from "./trace.server.js";
|
|
20
20
|
/** Maximaal aantal wachtrondes op Floriday voordat de controle als mislukt stopt. */
|
|
@@ -84,7 +84,7 @@ export async function runControlScanQueue(sb, options = {}) {
|
|
|
84
84
|
for (const row of rows) {
|
|
85
85
|
try {
|
|
86
86
|
if (!row.is_floriday) {
|
|
87
|
-
await sb.rpc("logistics_control_scan_finish", { _id: row.id, _ok: true, _status: "
|
|
87
|
+
await sb.rpc("logistics_control_scan_finish", { _id: row.id, _ok: true, _status: "in_printwachtrij" });
|
|
88
88
|
run.printed++;
|
|
89
89
|
continue;
|
|
90
90
|
}
|
|
@@ -239,7 +239,7 @@ export async function runControlScanQueue(sb, options = {}) {
|
|
|
239
239
|
continue;
|
|
240
240
|
}
|
|
241
241
|
// Via de Layout maker; idempotent per controle.
|
|
242
|
-
const printed = await
|
|
242
|
+
const printed = await printViaLayoutGecontroleerd(sb, {
|
|
243
243
|
documenttype: "afleverbrief",
|
|
244
244
|
layoutId: layout.layoutId,
|
|
245
245
|
documentnaam: `Afleverbrief ${row.order_number}`,
|
|
@@ -261,19 +261,6 @@ export async function runControlScanQueue(sb, options = {}) {
|
|
|
261
261
|
control_scan_id: row.id,
|
|
262
262
|
},
|
|
263
263
|
});
|
|
264
|
-
if (!printed.ok && printed.errorCode === "DUBBEL_ORIGINEEL") {
|
|
265
|
-
// Er staat al een origineel klaar: bestaande opdracht vastleggen, niet opnieuw.
|
|
266
|
-
await sb.rpc("logistics_control_scan_finish", {
|
|
267
|
-
_id: row.id,
|
|
268
|
-
_ok: true,
|
|
269
|
-
_status: "geprint",
|
|
270
|
-
_print_job_id: printed.bestaandJobId ?? null,
|
|
271
|
-
_document_url: url,
|
|
272
|
-
_fulfillment_order_id: fulfillmentOrderId,
|
|
273
|
-
});
|
|
274
|
-
run.printed++;
|
|
275
|
-
continue;
|
|
276
|
-
}
|
|
277
264
|
if (!printed.ok) {
|
|
278
265
|
await sb.rpc("logistics_control_scan_finish", {
|
|
279
266
|
_id: row.id,
|
|
@@ -290,7 +277,7 @@ export async function runControlScanQueue(sb, options = {}) {
|
|
|
290
277
|
await sb.rpc("logistics_control_scan_finish", {
|
|
291
278
|
_id: row.id,
|
|
292
279
|
_ok: true,
|
|
293
|
-
_status: "
|
|
280
|
+
_status: "in_printwachtrij",
|
|
294
281
|
_print_job_id: jobId,
|
|
295
282
|
_document_url: url,
|
|
296
283
|
_fulfillment_order_id: fulfillmentOrderId,
|
|
@@ -35,4 +35,24 @@ export declare function floridayLayout(sb: SupabaseClient, documenttype: string)
|
|
|
35
35
|
}>;
|
|
36
36
|
export declare function foutcode(message: string): string;
|
|
37
37
|
export declare function printViaLayout(sb: SupabaseClient, input: LayoutPrintInput): Promise<LayoutPrintResult>;
|
|
38
|
+
export type GecontroleerdResult = {
|
|
39
|
+
ok: true;
|
|
40
|
+
jobId: string;
|
|
41
|
+
printerId: string | null;
|
|
42
|
+
bestaand: boolean;
|
|
43
|
+
vervangtJobId?: string;
|
|
44
|
+
} | {
|
|
45
|
+
ok: false;
|
|
46
|
+
errorCode: string;
|
|
47
|
+
error: string;
|
|
48
|
+
};
|
|
49
|
+
/** Leest de status van één printopdracht op id (null = niet te lezen). */
|
|
50
|
+
export declare function printJobStatus(sb: SupabaseClient, jobId: string): Promise<string | null>;
|
|
51
|
+
/**
|
|
52
|
+
* Zoals printViaLayout, maar een teruggegeven bestaande opdracht (bestaand of
|
|
53
|
+
* DUBBEL_ORIGINEEL) telt alleen als klaar als die nog wachtend/bezig/voltooid
|
|
54
|
+
* is. Mislukt, verlopen of geannuleerd: één nieuwe opdracht met een nieuwe
|
|
55
|
+
* sleutel. Status niet leesbaar: fail closed (STATUS_ONBEKEND).
|
|
56
|
+
*/
|
|
57
|
+
export declare function printViaLayoutGecontroleerd(sb: SupabaseClient, input: LayoutPrintInput, diepte?: number): Promise<GecontroleerdResult>;
|
|
38
58
|
//# sourceMappingURL=layoutPrint.server.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"layoutPrint.server.d.ts","sourceRoot":"","sources":["../../src/lib/layoutPrint.server.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAE5D,MAAM,WAAW,gBAAgB;IAC/B,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,oHAAoH;IACpH,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACjC,mBAAmB,EAAE,MAAM,CAAC;CAC7B;AAED,MAAM,MAAM,iBAAiB,GACzB;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,QAAQ,EAAE,OAAO,CAAA;CAAE,GACxE;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,CAAC;AAInF,kGAAkG;AAClG,wBAAgB,kBAAkB,CAAC,GAAG,OAAO,EAAE,OAAO,EAAE,GAAG,MAAM,GAAG,IAAI,CAuBvE;AAED;;;GAGG;AACH,wBAAsB,cAAc,CAClC,EAAE,EAAE,cAAc,EAClB,YAAY,EAAE,MAAM,GACnB,OAAO,CAAC;IAAE,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,CAAC,CAQ5D;AAKD,wBAAgB,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAGhD;AAED,wBAAsB,cAAc,CAClC,EAAE,EAAE,cAAc,EAClB,KAAK,EAAE,gBAAgB,GACtB,OAAO,CAAC,iBAAiB,CAAC,CAqD5B"}
|
|
1
|
+
{"version":3,"file":"layoutPrint.server.d.ts","sourceRoot":"","sources":["../../src/lib/layoutPrint.server.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAE5D,MAAM,WAAW,gBAAgB;IAC/B,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,oHAAoH;IACpH,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACjC,mBAAmB,EAAE,MAAM,CAAC;CAC7B;AAED,MAAM,MAAM,iBAAiB,GACzB;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,QAAQ,EAAE,OAAO,CAAA;CAAE,GACxE;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,CAAC;AAInF,kGAAkG;AAClG,wBAAgB,kBAAkB,CAAC,GAAG,OAAO,EAAE,OAAO,EAAE,GAAG,MAAM,GAAG,IAAI,CAuBvE;AAED;;;GAGG;AACH,wBAAsB,cAAc,CAClC,EAAE,EAAE,cAAc,EAClB,YAAY,EAAE,MAAM,GACnB,OAAO,CAAC;IAAE,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,CAAC,CAQ5D;AAKD,wBAAgB,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAGhD;AAED,wBAAsB,cAAc,CAClC,EAAE,EAAE,cAAc,EAClB,KAAK,EAAE,gBAAgB,GACtB,OAAO,CAAC,iBAAiB,CAAC,CAqD5B;AAOD,MAAM,MAAM,mBAAmB,GAC3B;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,QAAQ,EAAE,OAAO,CAAC;IAAC,aAAa,CAAC,EAAE,MAAM,CAAA;CAAE,GAChG;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC;AAEpD,0EAA0E;AAC1E,wBAAsB,cAAc,CAAC,EAAE,EAAE,cAAc,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAI9F;AAED;;;;;GAKG;AACH,wBAAsB,2BAA2B,CAC/C,EAAE,EAAE,cAAc,EAClB,KAAK,EAAE,gBAAgB,EACvB,MAAM,SAAI,GACT,OAAO,CAAC,mBAAmB,CAAC,CAqC9B"}
|
|
@@ -110,3 +110,58 @@ export async function printViaLayout(sb, input) {
|
|
|
110
110
|
bestaand: Boolean(row?.["bestaand"]),
|
|
111
111
|
};
|
|
112
112
|
}
|
|
113
|
+
/** Statussen in de Printwachtrij die als "staat al klaar" tellen. */
|
|
114
|
+
const ACTIEF = new Set(["wachtend", "bezig", "voltooid"]);
|
|
115
|
+
/** Statussen die nooit als klaar tellen: er komt een nieuwe opdracht. */
|
|
116
|
+
const AFGEVALLEN = new Set(["mislukt", "verlopen", "geannuleerd"]);
|
|
117
|
+
/** Leest de status van één printopdracht op id (null = niet te lezen). */
|
|
118
|
+
export async function printJobStatus(sb, jobId) {
|
|
119
|
+
const { data, error } = await sb.rpc("logistics_print_job_state", { p_job_id: jobId });
|
|
120
|
+
if (error || typeof data !== "string" || !data)
|
|
121
|
+
return null;
|
|
122
|
+
return data;
|
|
123
|
+
}
|
|
124
|
+
/**
|
|
125
|
+
* Zoals printViaLayout, maar een teruggegeven bestaande opdracht (bestaand of
|
|
126
|
+
* DUBBEL_ORIGINEEL) telt alleen als klaar als die nog wachtend/bezig/voltooid
|
|
127
|
+
* is. Mislukt, verlopen of geannuleerd: één nieuwe opdracht met een nieuwe
|
|
128
|
+
* sleutel. Status niet leesbaar: fail closed (STATUS_ONBEKEND).
|
|
129
|
+
*/
|
|
130
|
+
export async function printViaLayoutGecontroleerd(sb, input, diepte = 0) {
|
|
131
|
+
const r = await printViaLayout(sb, input);
|
|
132
|
+
let bestaandId = null;
|
|
133
|
+
if (r.ok && r.bestaand)
|
|
134
|
+
bestaandId = r.jobId;
|
|
135
|
+
else if (!r.ok && r.errorCode === "DUBBEL_ORIGINEEL") {
|
|
136
|
+
if (!r.bestaandJobId) {
|
|
137
|
+
return {
|
|
138
|
+
ok: false,
|
|
139
|
+
errorCode: "STATUS_ONBEKEND",
|
|
140
|
+
error: "Layouts en printers meldt dat er al een origineel klaarstaat, maar gaf geen opdracht-id terug; status niet te controleren.",
|
|
141
|
+
};
|
|
142
|
+
}
|
|
143
|
+
bestaandId = r.bestaandJobId;
|
|
144
|
+
}
|
|
145
|
+
else if (r.ok)
|
|
146
|
+
return r;
|
|
147
|
+
else
|
|
148
|
+
return { ok: false, errorCode: r.errorCode, error: r.error };
|
|
149
|
+
const status = await printJobStatus(sb, bestaandId);
|
|
150
|
+
if (status && ACTIEF.has(status)) {
|
|
151
|
+
return { ok: true, jobId: bestaandId, printerId: r.ok ? r.printerId : null, bestaand: true };
|
|
152
|
+
}
|
|
153
|
+
if (!status || !AFGEVALLEN.has(status)) {
|
|
154
|
+
return {
|
|
155
|
+
ok: false,
|
|
156
|
+
errorCode: "STATUS_ONBEKEND",
|
|
157
|
+
error: `De status van bestaande printopdracht ${bestaandId} is niet te lezen (${status ?? "geen"}).`,
|
|
158
|
+
};
|
|
159
|
+
}
|
|
160
|
+
if (diepte >= 3) {
|
|
161
|
+
return { ok: false, errorCode: "PRINTFOUT", error: `Printopdracht ${bestaandId} is ${status}; vervangen lukte niet na 3 keer.` };
|
|
162
|
+
}
|
|
163
|
+
const opnieuw = await printViaLayoutGecontroleerd(sb, { ...input, idempotentieSleutel: `${input.idempotentieSleutel}:na:${bestaandId}` }, diepte + 1);
|
|
164
|
+
if (opnieuw.ok && !opnieuw.vervangtJobId)
|
|
165
|
+
return { ...opnieuw, vervangtJobId: bestaandId };
|
|
166
|
+
return opnieuw;
|
|
167
|
+
}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export declare const MODULE_VERSION = "1.0.
|
|
1
|
+
export declare const MODULE_VERSION = "1.0.138";
|
|
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.138";
|
|
@@ -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;AAO5D,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;AAO5D,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,CA2c1B;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"}
|
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
// ============================================================================
|
|
14
14
|
import { trace, newTraceId, classifyError } from "./trace.server.js";
|
|
15
15
|
import { FLOW_NODE } from "./flowNodes.js";
|
|
16
|
-
import {
|
|
16
|
+
import { printViaLayoutGecontroleerd, floridayLayout } from "./layoutPrint.server.js";
|
|
17
17
|
import { SHIPPING_NOTE_DEFINITIEVE_FOUTEN, definitieveFout, parseMaxAttempts } from "./shippingNoteStates.js";
|
|
18
18
|
const UUID_RE = /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;
|
|
19
19
|
function pickPdf(result) {
|
|
@@ -358,7 +358,7 @@ export async function runShippingNoteQueue(sb, options = {}) {
|
|
|
358
358
|
});
|
|
359
359
|
continue;
|
|
360
360
|
}
|
|
361
|
-
const printed = await
|
|
361
|
+
const printed = await printViaLayoutGecontroleerd(sb, {
|
|
362
362
|
documenttype: "afleverbrief",
|
|
363
363
|
layoutId: layout.layoutId,
|
|
364
364
|
documentnaam: `Verzendbrief ${row.order_number}`,
|
|
@@ -388,26 +388,6 @@ export async function runShippingNoteQueue(sb, options = {}) {
|
|
|
388
388
|
fulfillment_order_id: fulfillmentOrderId,
|
|
389
389
|
},
|
|
390
390
|
});
|
|
391
|
-
if (!printed.ok && printed.errorCode === "DUBBEL_ORIGINEEL") {
|
|
392
|
-
// Staat al klaar: geen mislukte poging, niet opnieuw proberen.
|
|
393
|
-
await sb.rpc("logistics_slip_note_finish", {
|
|
394
|
-
_id: row.id,
|
|
395
|
-
_ok: true,
|
|
396
|
-
_status: "in_printwachtrij",
|
|
397
|
-
_print_job_id: printed.bestaandJobId ?? null,
|
|
398
|
-
_fulfillment_order_id: fulfillmentOrderId,
|
|
399
|
-
_error_code: "dubbel_origineel",
|
|
400
|
-
_error: `Staat al in de printwachtrij${printed.bestaandJobId ? ` (opdracht ${printed.bestaandJobId})` : ""}.`,
|
|
401
|
-
});
|
|
402
|
-
run.printed++;
|
|
403
|
-
await trace(sb, {
|
|
404
|
-
...basis,
|
|
405
|
-
step: "Verzendbrief staat al in de printwachtrij",
|
|
406
|
-
status: "geslaagd",
|
|
407
|
-
decision: printed.bestaandJobId ? `bestaande opdracht ${printed.bestaandJobId}` : "bestaande opdracht",
|
|
408
|
-
});
|
|
409
|
-
continue;
|
|
410
|
-
}
|
|
411
391
|
if (!printed.ok) {
|
|
412
392
|
if (["GEEN_PRINTER", "GEEN_LAYOUT", "GEEN_EXTERN_DOCUMENT"].includes(printed.errorCode)) {
|
|
413
393
|
await faal(printed.errorCode.toLowerCase(), printed.error, fulfillmentOrderId);
|
|
@@ -419,21 +399,29 @@ export async function runShippingNoteQueue(sb, options = {}) {
|
|
|
419
399
|
}
|
|
420
400
|
const jobId = printed.jobId;
|
|
421
401
|
const printerId = printed.printerId;
|
|
402
|
+
const alKlaar = printed.bestaand;
|
|
422
403
|
await sb.rpc("logistics_slip_note_finish", {
|
|
423
404
|
_id: row.id,
|
|
424
405
|
_ok: true,
|
|
425
|
-
_status: "
|
|
406
|
+
_status: "in_printwachtrij",
|
|
426
407
|
_print_job_id: jobId,
|
|
427
408
|
_fulfillment_order_id: fulfillmentOrderId,
|
|
428
409
|
});
|
|
429
410
|
run.printed++;
|
|
430
411
|
await trace(sb, {
|
|
431
412
|
...basis,
|
|
432
|
-
step:
|
|
413
|
+
step: alKlaar
|
|
414
|
+
? `Verzendbrief staat in de printwachtrij (opdracht ${jobId})`
|
|
415
|
+
: `Verzendbrief in de printwachtrij gezet (opdracht ${jobId})`,
|
|
433
416
|
status: "geslaagd",
|
|
434
|
-
decision:
|
|
417
|
+
decision: alKlaar
|
|
418
|
+
? "bestaande opdracht is nog actief; niet opnieuw aangemaakt"
|
|
419
|
+
: printed.vervangtJobId
|
|
420
|
+
? `nieuwe opdracht, vervangt mislukte opdracht ${printed.vervangtJobId}`
|
|
421
|
+
: "samen met de pakbon naar dezelfde printer",
|
|
422
|
+
reason: "De echte printuitkomst volgt uit Layouts en printers.",
|
|
435
423
|
...(fulfillmentOrderId ? { externalRef: fulfillmentOrderId } : {}),
|
|
436
|
-
output: { printJobId: jobId, printerId, cartId },
|
|
424
|
+
output: { printJobId: jobId, printerId, cartId, vervangtJobId: printed.vervangtJobId ?? null },
|
|
437
425
|
});
|
|
438
426
|
}
|
|
439
427
|
catch (e) {
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export declare const SHIPPING_NOTE_STATUSSEN: readonly ["wachtend", "wacht_op_vrijgave", "geprint", "mislukt"];
|
|
1
|
+
export declare const SHIPPING_NOTE_STATUSSEN: readonly ["wachtend", "wacht_op_vrijgave", "in_printwachtrij", "geprint", "mislukt"];
|
|
2
2
|
export type ShippingNoteStatusWaarde = (typeof SHIPPING_NOTE_STATUSSEN)[number];
|
|
3
3
|
/** Definitieve fouten: direct mislukt, nooit opnieuw proberen. */
|
|
4
4
|
export declare const SHIPPING_NOTE_DEFINITIEVE_FOUTEN: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shippingNoteStates.d.ts","sourceRoot":"","sources":["../../src/lib/shippingNoteStates.ts"],"names":[],"mappings":"AAKA,eAAO,MAAM,uBAAuB,
|
|
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;;;;;;;;;;;;;CAanC,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"}
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
// Toegestane waarden van de verzendbriefwachtrij (09-10-2026).
|
|
3
3
|
// Zelfde waarden als in de database (logistics_slip_shipping_note, module_runtime_config).
|
|
4
4
|
// ============================================================================
|
|
5
|
-
export const SHIPPING_NOTE_STATUSSEN = ["wachtend", "wacht_op_vrijgave", "geprint", "mislukt"];
|
|
5
|
+
export const SHIPPING_NOTE_STATUSSEN = ["wachtend", "wacht_op_vrijgave", "in_printwachtrij", "geprint", "mislukt"];
|
|
6
6
|
/** Definitieve fouten: direct mislukt, nooit opnieuw proberen. */
|
|
7
7
|
export const SHIPPING_NOTE_DEFINITIEVE_FOUTEN = {
|
|
8
8
|
geen_order_id: {
|
|
@@ -160,7 +160,7 @@ export function verzendbriefStop(d) {
|
|
|
160
160
|
if (!d || !d.gevonden)
|
|
161
161
|
return null;
|
|
162
162
|
const status = (d.status ?? "").toLowerCase();
|
|
163
|
-
if (status === "geprint" || status === "klaar")
|
|
163
|
+
if (status === "in_printwachtrij" || status === "geprint" || status === "klaar")
|
|
164
164
|
return null;
|
|
165
165
|
const feiten = [];
|
|
166
166
|
if (d.status)
|