@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.
@@ -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,CAwPzB"}
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;AAqzJD,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"}
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.138";
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.138";
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,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"}
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) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@flowselections/logistiek-engine",
3
- "version": "1.0.138",
3
+ "version": "1.0.140",
4
4
  "flowselections": {
5
5
  "moduleId": "logistiek-engine",
6
6
  "pages": [