@flowselections/logistiek-engine 1.0.138 → 1.0.140
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/integrations/supabase/types.d.ts +78 -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 +8 -1
- package/dist-lib/lib/layoutPrint.server.d.ts +16 -0
- package/dist-lib/lib/layoutPrint.server.d.ts.map +1 -1
- package/dist-lib/lib/layoutPrint.server.js +31 -0
- package/dist-lib/lib/modulePrompts.d.ts.map +1 -1
- package/dist-lib/lib/modulePrompts.js +34 -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 +15 -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,CAgQzB"}
|
|
@@ -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 { printViaLayoutGecontroleerd, floridayLayout } from "./layoutPrint.server.js";
|
|
17
|
+
import { printViaLayoutGecontroleerd, floridayLayout, floridayPdfOpslag } 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. */
|
|
@@ -238,6 +238,12 @@ export async function runControlScanQueue(sb, options = {}) {
|
|
|
238
238
|
run.failed++;
|
|
239
239
|
continue;
|
|
240
240
|
}
|
|
241
|
+
// Blijvende verwijzing { bucket, pad } naast de tijdelijke link.
|
|
242
|
+
const pdfOpslag = await floridayPdfOpslag(sb, {
|
|
243
|
+
fulfillmentOrderId,
|
|
244
|
+
labelCode: doc["logisticLabelCode"] ?? null,
|
|
245
|
+
pdfUrl: url,
|
|
246
|
+
});
|
|
241
247
|
// Via de Layout maker; idempotent per controle.
|
|
242
248
|
const printed = await printViaLayoutGecontroleerd(sb, {
|
|
243
249
|
documenttype: "afleverbrief",
|
|
@@ -259,6 +265,7 @@ export async function runControlScanQueue(sb, options = {}) {
|
|
|
259
265
|
cart_id: row.cart_id,
|
|
260
266
|
fulfillment_order_id: fulfillmentOrderId,
|
|
261
267
|
control_scan_id: row.id,
|
|
268
|
+
...(pdfOpslag ? { pdf_opslag: pdfOpslag } : {}),
|
|
262
269
|
},
|
|
263
270
|
});
|
|
264
271
|
if (!printed.ok) {
|
|
@@ -33,6 +33,22 @@ export declare function floridayLayout(sb: SupabaseClient, documenttype: string)
|
|
|
33
33
|
layoutId: string | null;
|
|
34
34
|
reden: string | null;
|
|
35
35
|
}>;
|
|
36
|
+
/** Bucket uit een ondertekende opslaglink (/storage/v1/object/sign/<bucket>/<pad>). */
|
|
37
|
+
export declare function bucketUitLink(url: string | null | undefined): string | null;
|
|
38
|
+
/**
|
|
39
|
+
* Blijvende verwijzing naar de opgeslagen Floriday-pdf: { bucket, pad }.
|
|
40
|
+
* Het pad komt op id uit floriday_logistic_labels_cache (eigendom van de
|
|
41
|
+
* Floriday-koppeling); de bucket uit de ondertekende link. Alleen bij precies
|
|
42
|
+
* één rij; anders null (geen gok, printen gaat door met pdf_url).
|
|
43
|
+
*/
|
|
44
|
+
export declare function floridayPdfOpslag(sb: SupabaseClient, input: {
|
|
45
|
+
fulfillmentOrderId: string | null;
|
|
46
|
+
labelCode?: string | null;
|
|
47
|
+
pdfUrl: string | null;
|
|
48
|
+
}): Promise<{
|
|
49
|
+
bucket: string;
|
|
50
|
+
pad: string;
|
|
51
|
+
} | null>;
|
|
36
52
|
export declare function foutcode(message: string): string;
|
|
37
53
|
export declare function printViaLayout(sb: SupabaseClient, input: LayoutPrintInput): Promise<LayoutPrintResult>;
|
|
38
54
|
export type GecontroleerdResult = {
|
|
@@ -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;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"}
|
|
1
|
+
{"version":3,"file":"layoutPrint.server.d.ts","sourceRoot":"","sources":["../../src/lib/layoutPrint.server.ts"],"names":[],"mappings":"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"}
|
|
@@ -51,6 +51,37 @@ export async function floridayLayout(sb, documenttype) {
|
|
|
51
51
|
const id = typeof r["layout_id"] === "string" ? r["layout_id"] : null;
|
|
52
52
|
return { layoutId: id, reden: id ? null : String(r["reden"] ?? "Geen actieve Floriday-layout gevonden.") };
|
|
53
53
|
}
|
|
54
|
+
/** Bucket uit een ondertekende opslaglink (/storage/v1/object/sign/<bucket>/<pad>). */
|
|
55
|
+
export function bucketUitLink(url) {
|
|
56
|
+
if (!url)
|
|
57
|
+
return null;
|
|
58
|
+
const m = /\/storage\/v1\/object\/(?:sign|public|authenticated)\/([^/?#]+)\//.exec(url);
|
|
59
|
+
return m ? decodeURIComponent(m[1]) : null;
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Blijvende verwijzing naar de opgeslagen Floriday-pdf: { bucket, pad }.
|
|
63
|
+
* Het pad komt op id uit floriday_logistic_labels_cache (eigendom van de
|
|
64
|
+
* Floriday-koppeling); de bucket uit de ondertekende link. Alleen bij precies
|
|
65
|
+
* één rij; anders null (geen gok, printen gaat door met pdf_url).
|
|
66
|
+
*/
|
|
67
|
+
export async function floridayPdfOpslag(sb, input) {
|
|
68
|
+
if (!input.fulfillmentOrderId)
|
|
69
|
+
return null;
|
|
70
|
+
const bucket = bucketUitLink(input.pdfUrl);
|
|
71
|
+
if (!bucket)
|
|
72
|
+
return null;
|
|
73
|
+
let q = sb
|
|
74
|
+
.from("floriday_logistic_labels_cache")
|
|
75
|
+
.select("storage_path")
|
|
76
|
+
.eq("fulfillment_order_id", input.fulfillmentOrderId);
|
|
77
|
+
if (input.labelCode)
|
|
78
|
+
q = q.eq("logistic_label_code", input.labelCode);
|
|
79
|
+
const { data, error } = await q.limit(2);
|
|
80
|
+
if (error || !Array.isArray(data) || data.length !== 1)
|
|
81
|
+
return null;
|
|
82
|
+
const pad = String(data[0]["storage_path"] ?? "").trim();
|
|
83
|
+
return pad ? { bucket, pad } : null;
|
|
84
|
+
}
|
|
54
85
|
const HINT = ' Los dit op bij Layouts en printers en druk daarna op "Opnieuw proberen"; opnieuw scannen is niet nodig.';
|
|
55
86
|
export function foutcode(message) {
|
|
56
87
|
const m = /^([A-Z_]+):/.exec(message.trim());
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"modulePrompts.d.ts","sourceRoot":"","sources":["../../src/lib/modulePrompts.ts"],"names":[],"mappings":"AAWA;;;;GAIG;AACH,eAAO,MAAM,oBAAoB;;;;;;;;;;;CAIvB,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;;;;;;;;;;;CAIvB,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;AAw1JD,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"}
|
|
@@ -4774,6 +4774,40 @@ CONTROLELIJST
|
|
|
4774
4774
|
[ ] Binnen een uur staat in logistics_base_url_checks een regel met status
|
|
4775
4775
|
"geslaagd". Daarna toont de minuutronde de Engine-versie uit de Shell.`,
|
|
4776
4776
|
},
|
|
4777
|
+
{
|
|
4778
|
+
number: 4,
|
|
4779
|
+
title: "Afleverbrief-pdf: versies bewaren, nooit stil overschrijven",
|
|
4780
|
+
date: "2026-10-14",
|
|
4781
|
+
summary: "Een nieuwe versie van een afleverbrief krijgt een eigen pad; de cacherij wijst op id naar de nieuwste, oude versies blijven staan.",
|
|
4782
|
+
body: `WAAROM
|
|
4783
|
+
Layouts en printers drukt de Floriday-afleverbrief af en herprint die ook dagen
|
|
4784
|
+
later via de blijvende verwijzing { bucket, pad } die de Engine meestuurt (het
|
|
4785
|
+
pad uit floriday_logistic_labels_cache). Nu uploadt ensureLabelInStorage met
|
|
4786
|
+
upsert: true op <koppeling-id>/<fulfillmentOrderId>/<labelcode>.pdf. Haalt de
|
|
4787
|
+
koppeling na een logistieke correctie een nieuwe versie op, dan wordt de oude
|
|
4788
|
+
stil overschreven en is een eerdere print niet meer terug te vinden.
|
|
4789
|
+
|
|
4790
|
+
WAT JE BOUWT
|
|
4791
|
+
(a) Sla een nieuwe versie op onder een eigen pad met versie of tijdstip, bijv.
|
|
4792
|
+
<koppeling-id>/<fulfillmentOrderId>/<labelcode>-v2.pdf. Werk de cacherij
|
|
4793
|
+
(koppeling + fulfillment order + labelcode, op id) bij naar de nieuwste
|
|
4794
|
+
versie en laat de oude versie in de opslag staan. Geen upsert: false
|
|
4795
|
+
(dan mislukt het opslaan van een gecorrigeerde afleverbrief).
|
|
4796
|
+
(b) Ruim bestanden in floriday-logistic-labels niet automatisch op. Een
|
|
4797
|
+
eventuele opschoning alleen als die bewust is ingesteld, en nooit eerder
|
|
4798
|
+
dan 90 dagen na de leverdatum.
|
|
4799
|
+
|
|
4800
|
+
REGELS
|
|
4801
|
+
- Match op id, nooit op naam.
|
|
4802
|
+
- Geen URL's, sleutels, project-refs, klantnamen of vaste database-id's in
|
|
4803
|
+
code of migraties.
|
|
4804
|
+
|
|
4805
|
+
CONTROLELIJST
|
|
4806
|
+
[ ] Tweede versie voor dezelfde fulfillment order geeft een nieuw pad; het oude
|
|
4807
|
+
bestand bestaat nog.
|
|
4808
|
+
[ ] De cacherij wijst naar het nieuwste pad.
|
|
4809
|
+
[ ] Er is geen automatische opruiming van deze map.`,
|
|
4810
|
+
},
|
|
4777
4811
|
],
|
|
4778
4812
|
},
|
|
4779
4813
|
};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export declare const MODULE_VERSION = "1.0.
|
|
1
|
+
export declare const MODULE_VERSION = "1.0.140";
|
|
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.140";
|
|
@@ -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,CA0d1B;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 { printViaLayoutGecontroleerd, floridayLayout } from "./layoutPrint.server.js";
|
|
16
|
+
import { printViaLayoutGecontroleerd, floridayLayout, floridayPdfOpslag } 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,6 +358,19 @@ export async function runShippingNoteQueue(sb, options = {}) {
|
|
|
358
358
|
});
|
|
359
359
|
continue;
|
|
360
360
|
}
|
|
361
|
+
const pdfOpslag = await floridayPdfOpslag(sb, {
|
|
362
|
+
fulfillmentOrderId,
|
|
363
|
+
labelCode: doc["logisticLabelCode"] ?? null,
|
|
364
|
+
pdfUrl: url,
|
|
365
|
+
});
|
|
366
|
+
if (!pdfOpslag && url) {
|
|
367
|
+
await trace(sb, {
|
|
368
|
+
...basis,
|
|
369
|
+
step: "Blijvende verwijzing naar verzendbrief niet eenduidig",
|
|
370
|
+
status: "wachtend",
|
|
371
|
+
reason: "Alleen de tijdelijke link wordt meegestuurd; printen gaat door.",
|
|
372
|
+
});
|
|
373
|
+
}
|
|
361
374
|
const printed = await printViaLayoutGecontroleerd(sb, {
|
|
362
375
|
documenttype: "afleverbrief",
|
|
363
376
|
layoutId: layout.layoutId,
|
|
@@ -386,6 +399,7 @@ export async function runShippingNoteQueue(sb, options = {}) {
|
|
|
386
399
|
cart: slipPayload["cart"] ?? null,
|
|
387
400
|
barcode: slipPayload["barcode"] ?? null,
|
|
388
401
|
fulfillment_order_id: fulfillmentOrderId,
|
|
402
|
+
...(pdfOpslag ? { pdf_opslag: pdfOpslag } : {}),
|
|
389
403
|
},
|
|
390
404
|
});
|
|
391
405
|
if (!printed.ok) {
|