@flowselections/layout-maker 1.69.8 → 1.69.10

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.
@@ -131,7 +131,7 @@ const pakbon = {
131
131
  ["telefoon", "Telefoonnummer"],
132
132
  ["email", "E-mailadres"],
133
133
  ["referentie", "Referentie"],
134
- ["transporteur", "Transporteur"],
134
+ ["transporteur", "Vervoerder"],
135
135
  ["chauffeur", "Chauffeur"],
136
136
  ["route", "Route"],
137
137
  ["pickstation", "Pickstation"],
@@ -258,7 +258,7 @@ const verzendlabel = {
258
258
  ["land", "Land", true],
259
259
  ]),
260
260
  vinkjes("verzending", "Verzending", [
261
- ["transporteur", "Transporteur", true],
261
+ ["transporteur", "Vervoerder", true],
262
262
  ["verzendmethode", "Verzendmethode"],
263
263
  ["route", "Route"],
264
264
  ["track_trace", "Track & Trace", true],
@@ -1 +1 @@
1
- {"version":3,"file":"eigenDocumenten.d.ts","sourceRoot":"","sources":["../../src/lib/eigenDocumenten.ts"],"names":[],"mappings":"AAkBA,eAAO,MAAM,2BAA2B,4IAC8F,CAAC;AAEvI,MAAM,MAAM,gBAAgB,GAAG;IAAE,UAAU,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,SAAS,GAAG,SAAS,GAAG,OAAO,GAAG,KAAK,CAAA;CAAE,CAAC;AAExH;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAC9B,OAAO,EAAE,OAAO,EAChB,UAAU,EAAE,OAAO,EACnB,QAAQ,GAAE,OAAc,EACxB,OAAO,GAAE;IAAE,UAAU,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,GAAG,IAAW,GAC/D,gBAAgB,GAAG,IAAI,CAmBzB;AAED,gFAAgF;AAChF,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,OAAO,GAAG,MAAM,GAAG,IAAI,CAGtF;AAED,8EAA8E;AAC9E,wBAAgB,mBAAmB,CAAC,WAAW,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,MAAM,GAAG,IAAI,CAIhH;AAED,6EAA6E;AAC7E,wBAAgB,cAAc,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,GAAG,IAAI,CAI9D;AAGD,eAAO,MAAM,kBAAkB,+HAErB,CAAC;AACX,MAAM,MAAM,QAAQ,GAAG,CAAC,OAAO,kBAAkB,CAAC,CAAC,MAAM,CAAC,CAAC;AAE3D,eAAO,MAAM,yBAAyB,2BAA2B,CAAC;AAElE,MAAM,MAAM,SAAS,GAAG;IAAE,aAAa,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AAChF,MAAM,MAAM,WAAW,GAAG,SAAS,GAAG;IAAE,UAAU,EAAE,SAAS,EAAE,CAAA;CAAE,CAAC;AAOlE,2EAA2E;AAC3E,wBAAgB,aAAa,CAAC,OAAO,EAAE,OAAO,GAAG,WAAW,EAAE,GAAG,IAAI,CAOpE;AAED,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,CAK1D;AAED,wBAAgB,eAAe,CAC7B,OAAO,EAAE,OAAO,EAChB,GAAG,EAAE,OAAO,EACZ,IAAI,EAAE;IAAE,UAAU,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,EAC/C,OAAO,EAAE;IAAE,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,GAClD,MAAM,CAiCR;AAGD,eAAO,MAAM,sBAAsB,EAAE;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,OAAO,CAAA;CAAE,EAmBvF,CAAC;AAEF,eAAO,MAAM,gCAAgC,UAAuE,CAAC;AAarH,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,OAAO,GAAG,MAAM,EAAE,CAK5D;AAED,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,OAAO,GAAG,MAAM,CAaxE"}
1
+ {"version":3,"file":"eigenDocumenten.d.ts","sourceRoot":"","sources":["../../src/lib/eigenDocumenten.ts"],"names":[],"mappings":"AAkBA,eAAO,MAAM,2BAA2B,4IAC8F,CAAC;AAEvI,MAAM,MAAM,gBAAgB,GAAG;IAAE,UAAU,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,SAAS,GAAG,SAAS,GAAG,OAAO,GAAG,KAAK,CAAA;CAAE,CAAC;AAExH;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAC9B,OAAO,EAAE,OAAO,EAChB,UAAU,EAAE,OAAO,EACnB,QAAQ,GAAE,OAAc,EACxB,OAAO,GAAE;IAAE,UAAU,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,GAAG,IAAW,GAC/D,gBAAgB,GAAG,IAAI,CAmBzB;AAED,gFAAgF;AAChF,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,OAAO,GAAG,MAAM,GAAG,IAAI,CAGtF;AAED,8EAA8E;AAC9E,wBAAgB,mBAAmB,CAAC,WAAW,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,MAAM,GAAG,IAAI,CAIhH;AAED,6EAA6E;AAC7E,wBAAgB,cAAc,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,GAAG,IAAI,CAI9D;AAGD,eAAO,MAAM,kBAAkB,+HAErB,CAAC;AACX,MAAM,MAAM,QAAQ,GAAG,CAAC,OAAO,kBAAkB,CAAC,CAAC,MAAM,CAAC,CAAC;AAE3D,eAAO,MAAM,yBAAyB,2BAA2B,CAAC;AAElE,MAAM,MAAM,SAAS,GAAG;IAAE,aAAa,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AAChF,MAAM,MAAM,WAAW,GAAG,SAAS,GAAG;IAAE,UAAU,EAAE,SAAS,EAAE,CAAA;CAAE,CAAC;AAOlE,2EAA2E;AAC3E,wBAAgB,aAAa,CAAC,OAAO,EAAE,OAAO,GAAG,WAAW,EAAE,GAAG,IAAI,CAOpE;AAED,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,CAK1D;AAED,wBAAgB,eAAe,CAC7B,OAAO,EAAE,OAAO,EAChB,GAAG,EAAE,OAAO,EACZ,IAAI,EAAE;IAAE,UAAU,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,EAC/C,OAAO,EAAE;IAAE,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,GAClD,MAAM,CAiCR;AAGD,eAAO,MAAM,sBAAsB,EAAE;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,OAAO,CAAA;CAAE,EAoBvF,CAAC;AAEF,eAAO,MAAM,gCAAgC,UAAuE,CAAC;AAarH,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,OAAO,GAAG,MAAM,EAAE,CAK5D;AAED,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,OAAO,GAAG,MAAM,CAaxE"}
@@ -137,6 +137,7 @@ export const CONTROLELIJST_KOLOMMEN = [
137
137
  { veld: "land", label: "Land", standaard: false },
138
138
  { veld: "klaarzetten_datum", label: "Klaarzetdatum", standaard: false },
139
139
  { veld: "klaarzetten_tijd", label: "Klaarzettijd", standaard: false },
140
+ { veld: "carrier_label", label: "Vervoerder", standaard: false },
140
141
  { veld: "ophaal_datum", label: "Ophaaldatum", standaard: false },
141
142
  { veld: "ophaal_tijd", label: "Ophaaltijd", standaard: false },
142
143
  { veld: "leverdatum", label: "Leverdatum", standaard: false },
@@ -38,8 +38,9 @@ registreerEntiteit({
38
38
  { pad: "order.referentie", label: "Referentie", soort: "tekst", voorbeeld: "Inkoop 8891" },
39
39
  { pad: "order.verkoper", label: "Verkoper", soort: "tekst", voorbeeld: "Jan de Vries" },
40
40
  { pad: "order.opmerking", label: "Opmerking", soort: "tekst", voorbeeld: "Voor 10:00 leveren" },
41
- { pad: "order.transporteur", label: "Transporteur", soort: "tekst", voorbeeld: "DHL" },
42
- { pad: "order.track_trace", label: "Track & Trace", soort: "tekst", voorbeeld: "3SDHL0099213" },
41
+ { pad: "order.carrier_label", label: "Vervoerder", soort: "tekst", voorbeeld: "Voorbeeld Transport BV" },
42
+ { pad: "order.transporteur", label: "Transporteur", soort: "tekst", voorbeeld: "Voorbeeld Transport BV" },
43
+ { pad: "order.track_trace", label: "Track & Trace", soort: "tekst", voorbeeld: "3SVB0099213" },
43
44
  { pad: "order.locatie", label: "Locatie", soort: "tekst", voorbeeld: "Magazijn 2" },
44
45
  { pad: "order.aantal_karren", label: "Aantal karren", soort: "getal", voorbeeld: 3 },
45
46
  { pad: "order.totaal", label: "Ordertotaal", soort: "bedrag", voorbeeld: "€ 1.284,50" },
@@ -333,7 +333,7 @@ export const SECTIE_REGISTER = [
333
333
  label: "Transportinformatie",
334
334
  omschrijving: "Transporteur, route en chauffeur.",
335
335
  opties: [
336
- { key: "toonTransporteur", label: "Transporteur", type: "schakelaar", standaard: true },
336
+ { key: "toonTransporteur", label: "Vervoerder (carrier_label uit de Engine)", type: "schakelaar", standaard: true },
337
337
  { key: "toonRoute", label: "Route", type: "schakelaar", standaard: true },
338
338
  { key: "toonChauffeur", label: "Chauffeur", type: "schakelaar", standaard: false },
339
339
  { key: "toonTrack", label: "Track & trace", type: "schakelaar", standaard: false },
@@ -1056,10 +1056,10 @@ export const DEMO_ORDER = {
1056
1056
  land: "Nederland",
1057
1057
  },
1058
1058
  transport: {
1059
- transporteur: "DHL Fresh",
1059
+ transporteur: "Voorbeeld Transport BV",
1060
1060
  route: "Route Zuid",
1061
1061
  chauffeur: "J. Bakker",
1062
- track: "3SDHL8842190",
1062
+ track: "3SVB8842190",
1063
1063
  },
1064
1064
  karren: [
1065
1065
  {
@@ -1181,7 +1181,7 @@ export const CONDITIE_VELDEN = [
1181
1181
  { value: "aantal_lagen", label: "Aantal lagen" },
1182
1182
  { value: "aantal_fusten", label: "Aantal fusten" },
1183
1183
  { value: "aantal_producten", label: "Aantal producten" },
1184
- { value: "transporteur", label: "Transporteur" },
1184
+ { value: "transporteur", label: "Vervoerder (carrier_label)" },
1185
1185
  { value: "documentsoort", label: "Documentsoort" },
1186
1186
  { value: "klant", label: "Klant" },
1187
1187
  { value: "route", label: "Route" },
@@ -17,6 +17,19 @@ export declare class GeenDocumentFout extends Error {
17
17
  export declare class WachtOpLayoutFout extends Error {
18
18
  name: string;
19
19
  }
20
+ /** Geen vervoerder (of Engine te oud): wachten tot hij is ingesteld, onbegrensd. */
21
+ export declare class WachtOpVervoerderFout extends Error {
22
+ name: string;
23
+ }
24
+ /**
25
+ * Bepaalt de vervoerder voor een eigen document. Alleen carrier_label uit de
26
+ * Engine (payload of logistics_brief_transport). Geeft null voor documenten
27
+ * zonder vervoerder (of Floriday 1-op-1). Gooit WachtOpVervoerderFout als hij
28
+ * ontbreekt; nooit een naam opzoeken, nooit "onbekend".
29
+ */
30
+ export declare function bepaalVervoerder(db: PrintDb, job: Job, p: Job, layout: Job | null): Promise<string | null>;
31
+ /** Wacht op een vervoerder: blijft wachtend (geen eindstatus), reden zichtbaar in de wachtrij. */
32
+ export declare function wachtOpVervoerder(db: PrintDb, job: Job, reden: string): Promise<"wachtend">;
20
33
  /** Blijvende contractfout: opnieuw proberen met dezelfde invoer kan niet slagen. */
21
34
  export declare class EngineContractFout extends GeenDocumentFout {
22
35
  name: string;
@@ -1 +1 @@
1
- {"version":3,"file":"printQueue.server.d.ts","sourceRoot":"","sources":["../../src/lib/printQueue.server.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"printQueue.server.d.ts","sourceRoot":"","sources":["../../src/lib/printQueue.server.ts"],"names":[],"mappings":"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"}
@@ -3,13 +3,13 @@
3
3
  // Pakt wachtende opdrachten op, maakt er een PDF van en stuurt die stil naar
4
4
  // de juiste printer. Draait alleen op de server (cron / interne aanroep).
5
5
  // ============================================================================
6
- import { metVervoerder } from "./vervoerder.js";
6
+ import { carrierUitPayload, carrierUitTransport, ENGINE_TE_OUD, geenVervoerderTekst, metVervoerder, VERVOERDER_DOCUMENTEN, voorbeeldVervoerder } from "./vervoerder.js";
7
7
  import { maakPakbonOrder, renderPakbonDocument, voorbeeldPakbonOrder, } from "./pakbonHtml.js";
8
8
  import { bouwPakbonScanInhoud, bewaarPakbonScanInhoud } from "./pakbonScan.js";
9
9
  import { bouwPakbonBarcodeVerzoek, geleverdeBarcodeVoorJob, vraagPakbonBarcodeAan, } from "./pakbonBarcodeVerzoek.js";
10
10
  import { bepaalVolleKarStand, deelkarRegels, leesAfleverbriefConfig, pakbonLayoutVariant, } from "./pakbonBuilder.js";
11
11
  import { renderProductiebonDocument } from "./productiebonHtml.js";
12
- import { heeftOrderInhoud, laadOrderVanuitDatabase, laadPakbonData } from "./orderData.server.js";
12
+ import { heeftOrderInhoud, laadOrderVanuitDatabase, laadPakbonData, zoekOrderVerwijzing } from "./orderData.server.js";
13
13
  import { profielHeeftInhoud, renderProfielDocument } from "./profielHtml.js";
14
14
  import { bouwDocumentHtml, voorbeeldContext } from "./layoutPreview.js";
15
15
  import { AfbeeldingInhoudFout, htmlNaarPdfServer, PdfRenderFout } from "./htmlNaarPdf.server.js";
@@ -132,6 +132,71 @@ export class WachtOpLayoutFout extends Error {
132
132
  this.name = "WachtOpLayoutFout";
133
133
  }
134
134
  }
135
+ /** Geen vervoerder (of Engine te oud): wachten tot hij is ingesteld, onbegrensd. */
136
+ export class WachtOpVervoerderFout extends Error {
137
+ constructor() {
138
+ super(...arguments);
139
+ this.name = "WachtOpVervoerderFout";
140
+ }
141
+ }
142
+ /**
143
+ * Bepaalt de vervoerder voor een eigen document. Alleen carrier_label uit de
144
+ * Engine (payload of logistics_brief_transport). Geeft null voor documenten
145
+ * zonder vervoerder (of Floriday 1-op-1). Gooit WachtOpVervoerderFout als hij
146
+ * ontbreekt; nooit een naam opzoeken, nooit "onbekend".
147
+ */
148
+ export async function bepaalVervoerder(db, job, p, layout) {
149
+ const dt = normaliseerDocumenttype(layout?.documenttype ?? job.documenttype);
150
+ if (!VERVOERDER_DOCUMENTEN.includes(dt))
151
+ return null;
152
+ if (String(layout?.bron ?? "") === "floriday" || String(p._herkomst ?? "") === "floriday")
153
+ return null;
154
+ if (isTestprintJob(job) || p.voorbeeld === true)
155
+ return voorbeeldVervoerder(p);
156
+ const ref = zoekOrderVerwijzing(p);
157
+ const ordernummer = String(ref.ordernummer ?? p.order_number ?? p.ordernummer ?? "").trim();
158
+ let r = carrierUitPayload(p);
159
+ if (r.soort === "afwezig") {
160
+ if (!ref.orderId) {
161
+ // Engine-opdracht zonder carrier_label en zonder order: Engine te oud.
162
+ if (isEngineOpdracht(job))
163
+ throw new WachtOpVervoerderFout(ENGINE_TE_OUD);
164
+ return null;
165
+ }
166
+ const { data, error } = await db.rpc("logistics_brief_transport", {
167
+ p_order_id: ref.orderId,
168
+ ...(ref.cartId ? { p_cart_id: ref.cartId } : {}),
169
+ });
170
+ if (error)
171
+ throw new WachtOpVervoerderFout(`${ENGINE_TE_OUD} (${String(error.message ?? "").slice(0, 120)})`);
172
+ r = carrierUitTransport(data);
173
+ if (r.soort === "afwezig")
174
+ throw new WachtOpVervoerderFout(ENGINE_TE_OUD);
175
+ }
176
+ if (r.soort === "geen")
177
+ throw new WachtOpVervoerderFout(geenVervoerderTekst(ordernummer));
178
+ return r.label;
179
+ }
180
+ /** Wacht op een vervoerder: blijft wachtend (geen eindstatus), reden zichtbaar in de wachtrij. */
181
+ export async function wachtOpVervoerder(db, job, reden) {
182
+ const nu = new Date().toISOString();
183
+ await db
184
+ .from("print_jobs")
185
+ .update({
186
+ status: "wachtend",
187
+ foutcode: "GEEN_VERVOERDER",
188
+ foutmelding: reden.slice(0, 500),
189
+ pogingen: Number(job.pogingen ?? 0) + 1,
190
+ volgende_poging: new Date(Date.now() + 5 * 60 * 1000).toISOString(),
191
+ opgepakt_op: null,
192
+ voltooid_op: null,
193
+ updated_at: nu,
194
+ })
195
+ .eq("id", job.id)
196
+ .neq("status", "geannuleerd");
197
+ await log(db, job.id, "wacht_op_vervoerder", reden);
198
+ return "wachtend";
199
+ }
135
200
  /** Blijvende contractfout: opnieuw proberen met dezelfde invoer kan niet slagen. */
136
201
  export class EngineContractFout extends GeenDocumentFout {
137
202
  constructor() {
@@ -922,6 +987,8 @@ export async function bouwHtml(db, job, keuze, uitkomst) {
922
987
  return meegestuurd;
923
988
  }
924
989
  const p = (job.payload ?? {});
990
+ // Vervoerder: alleen carrier_label uit de Engine. Ontbreekt hij → wachten.
991
+ const carrierLabel = await bepaalVervoerder(db, job, p, layout);
925
992
  const liggend = String(layout.orientatie ?? "portrait") === "landscape";
926
993
  const b = Number(layout.breedte_mm ?? 210);
927
994
  const h = Number(layout.hoogte_mm ?? 297);
@@ -997,7 +1064,7 @@ export async function bouwHtml(db, job, keuze, uitkomst) {
997
1064
  const gekozen = (cartId ? karren.find((k) => String(k?.cart_id ?? "").trim() === cartId) : null) ??
998
1065
  karren[0] ??
999
1066
  null;
1000
- const metTerugval = await metBedrijfsTerugval(db, { ...volledig, karren: gekozen ? [gekozen] : [] }, layout);
1067
+ const metTerugval = await metBedrijfsTerugval(db, metVervoerder({ ...volledig, karren: gekozen ? [gekozen] : [] }, p, carrierLabel), layout);
1001
1068
  const order = metTerugval.order;
1002
1069
  layout = metTerugval.layout;
1003
1070
  return renderPakbonDocument(leesAfleverbriefConfig(layout.config), order, {
@@ -1074,7 +1141,7 @@ export async function bouwHtml(db, job, keuze, uitkomst) {
1074
1141
  if (isTestpakbon)
1075
1142
  order = zonderBarcodes(order);
1076
1143
  // Vervoerder/ophaalmoment alleen uit de printopdracht; ontbrekend = weglaten.
1077
- order = metVervoerder(order, p);
1144
+ order = metVervoerder(order, p, carrierLabel);
1078
1145
  if (isEngineOpdracht(job) && !isTestpakbon) {
1079
1146
  let barcode = String(engineBarcode ?? "").trim();
1080
1147
  if (!barcode) {
@@ -1271,6 +1338,13 @@ export async function bouwHtml(db, job, keuze, uitkomst) {
1271
1338
  ? null
1272
1339
  : await laadOrderVanuitDatabase(db, p).catch(() => null);
1273
1340
  const gegevens = { ...(uitDatabase ?? {}), ...(meegegeven ?? {}) };
1341
+ if (carrierLabel !== null) {
1342
+ // Eén bron: carrier_label. Overschrijft elke andere transporteurwaarde.
1343
+ gegevens.carrier_label = carrierLabel;
1344
+ gegevens.transporteur = carrierLabel;
1345
+ gegevens.verzending = { ...(gegevens.verzending ?? {}), transporteur: carrierLabel };
1346
+ gegevens.order = { ...(gegevens.order ?? {}), transporteur: carrierLabel, carrier_label: carrierLabel };
1347
+ }
1274
1348
  const profielData = p.voorbeeld === true ? { ...voorbeeldContext(), ...(gegevens ?? {}) } : gegevens;
1275
1349
  const profielHtml = renderProfielDocument(String(layout.documenttype), cfg, profielData, {
1276
1350
  breedteMm,
@@ -1749,6 +1823,9 @@ async function verwerkJob(db, job) {
1749
1823
  return "verstuurd";
1750
1824
  }
1751
1825
  catch (e) {
1826
+ if (e instanceof WachtOpVervoerderFout) {
1827
+ return await wachtOpVervoerder(db, job, e.message);
1828
+ }
1752
1829
  if (e instanceof WachtOpLayoutFout) {
1753
1830
  return await wachtOpLayout(db, job, e.message);
1754
1831
  }
@@ -1 +1 @@
1
- {"version":3,"file":"profielHtml.d.ts","sourceRoot":"","sources":["../../src/lib/profielHtml.ts"],"names":[],"mappings":"AAuBA,MAAM,WAAW,mBAAmB;IAClC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,qDAAqD;IACrD,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACzB;AA2ND,kEAAkE;AAClE,wBAAgB,kBAAkB,CAAC,YAAY,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,GAAG,OAAO,CAWjF;AAED,oEAAoE;AACpE,wBAAgB,qBAAqB,CACnC,YAAY,EAAE,MAAM,EACpB,MAAM,EAAE,OAAO,EACf,QAAQ,EAAE,OAAO,EACjB,MAAM,GAAE,mBAAwB,GAC/B,MAAM,CAwCR"}
1
+ {"version":3,"file":"profielHtml.d.ts","sourceRoot":"","sources":["../../src/lib/profielHtml.ts"],"names":[],"mappings":"AAuBA,MAAM,WAAW,mBAAmB;IAClC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,qDAAqD;IACrD,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACzB;AA4ND,kEAAkE;AAClE,wBAAgB,kBAAkB,CAAC,YAAY,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,GAAG,OAAO,CAWjF;AAED,oEAAoE;AACpE,wBAAgB,qBAAqB,CACnC,YAAY,EAAE,MAAM,EACpB,MAAM,EAAE,OAAO,EACf,QAAQ,EAAE,OAAO,EACjB,MAAM,GAAE,mBAAwB,GAC/B,MAAM,CAwCR"}
@@ -48,7 +48,8 @@ const SYNONIEMEN = {
48
48
  plaats: ["ontvanger.plaats", "klant.plaats", "adres.plaats"],
49
49
  land: ["ontvanger.land", "klant.land", "adres.land"],
50
50
  klantnaam: ["klant.naam", "ontvanger.bedrijf", "klantnaam"],
51
- transporteur: ["verzending.transporteur", "order.transporteur", "transporteur"],
51
+ transporteur: ["carrier_label", "order.carrier_label", "verzending.transporteur", "order.transporteur", "transporteur"],
52
+ carrier_label: ["carrier_label", "order.carrier_label"],
52
53
  verzendmethode: ["verzending.methode", "order.verzendmethode", "verzendmethode"],
53
54
  route: ["verzending.route", "order.route", "route"],
54
55
  track_trace: ["verzending.track_trace", "order.track_trace", "trackTrace"],
@@ -1,2 +1,2 @@
1
- export declare const PAKKET_VERSIE = "1.69.8";
1
+ export declare const PAKKET_VERSIE = "1.69.10";
2
2
  //# sourceMappingURL=versie.generated.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"versie.generated.d.ts","sourceRoot":"","sources":["../../src/lib/versie.generated.ts"],"names":[],"mappings":"AACA,eAAO,MAAM,aAAa,WAAW,CAAC"}
1
+ {"version":3,"file":"versie.generated.d.ts","sourceRoot":"","sources":["../../src/lib/versie.generated.ts"],"names":[],"mappings":"AACA,eAAO,MAAM,aAAa,YAAY,CAAC"}
@@ -1,2 +1,2 @@
1
1
  // Gegenereerd door scripts/schrijf-versie.cjs uit package.json. Niet met de hand wijzigen.
2
- export const PAKKET_VERSIE = "1.69.8";
2
+ export const PAKKET_VERSIE = "1.69.10";
@@ -3,11 +3,35 @@ export interface VervoerderInfo {
3
3
  ophaalmoment: string;
4
4
  ophaaladres: string;
5
5
  }
6
+ /** Documentsoorten van deze module die een vervoerder moeten tonen. */
7
+ export declare const VERVOERDER_DOCUMENTEN: readonly ["pakbon", "afleverbrief", "verzendlabel", "transportdocument"];
8
+ /** Voorbeeldwaarden voor testprint en editor (geen echte vervoerdersnaam). */
9
+ export declare const VOORBEELD_VERVOERDERS: readonly ["Voorbeeld Transport BV", "Eigen vervoer", "Afhalen"];
10
+ export declare const ENGINE_TE_OUD = "Logistieke Engine 1.0.184 of hoger nodig: de opdracht bevat geen vervoerder (carrier_label). Er is niets geprint.";
11
+ export declare function geenVervoerderTekst(ordernummer: string): string;
12
+ export type CarrierUitkomst = {
13
+ soort: "ok";
14
+ label: string;
15
+ } | {
16
+ soort: "geen";
17
+ } | {
18
+ soort: "afwezig";
19
+ };
20
+ /** Kiest het voorbeeldlabel voor een testprint (alleen één van de drie). */
21
+ export declare function voorbeeldVervoerder(payload: unknown): string;
22
+ /** Leest carrier_label uit één transportobject (payload of logistics_brief_transport). */
23
+ export declare function carrierUitTransport(t: unknown): CarrierUitkomst;
24
+ /** Zoekt carrier_label in de payload (bovenin, transport, data, data.transport). */
25
+ export declare function carrierUitPayload(payload: unknown): CarrierUitkomst;
6
26
  /** ISO-tijd (UTC) → leesbaar in Europe/Amsterdam. Ongeldig → leeg. */
7
27
  export declare function ophaalmomentTekst(iso: unknown): string;
8
- export declare function vervoerderUitPayload(payload: unknown): VervoerderInfo;
9
- /** Zet bekende waarden op order.transport; ontbrekende blijven leeg (regel valt weg). */
28
+ /** Ophaalmoment/-adres uit de payload. De vervoerder komt hier NIET vandaan. */
29
+ export declare function vervoerderUitPayload(payload: unknown, carrierLabel?: string | null): VervoerderInfo;
30
+ /**
31
+ * Zet vervoerder (alleen carrier_label) en ophaalgegevens op order.transport.
32
+ * Elke andere bronwaarde voor de transporteur wordt overschreven: geen terugval.
33
+ */
10
34
  export declare function metVervoerder<T extends {
11
35
  transport: Record<string, unknown>;
12
- }>(order: T, payload: unknown): T;
36
+ }>(order: T, payload: unknown, carrierLabel?: string | null): T;
13
37
  //# sourceMappingURL=vervoerder.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"vervoerder.d.ts","sourceRoot":"","sources":["../../src/lib/vervoerder.ts"],"names":[],"mappings":"AAKA,MAAM,WAAW,cAAc;IAC7B,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;CACrB;AAID,sEAAsE;AACtE,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,OAAO,GAAG,MAAM,CAUtD;AAeD,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,OAAO,GAAG,cAAc,CAWrE;AAED,yFAAyF;AACzF,wBAAgB,aAAa,CAAC,CAAC,SAAS;IAAE,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAAE,EAAE,KAAK,EAAE,CAAC,EAAE,OAAO,EAAE,OAAO,GAAG,CAAC,CAW7G"}
1
+ {"version":3,"file":"vervoerder.d.ts","sourceRoot":"","sources":["../../src/lib/vervoerder.ts"],"names":[],"mappings":"AAMA,MAAM,WAAW,cAAc;IAC7B,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;CACrB;AAKD,uEAAuE;AACvE,eAAO,MAAM,qBAAqB,0EAA2E,CAAC;AAE9G,8EAA8E;AAC9E,eAAO,MAAM,qBAAqB,iEAAkE,CAAC;AAErG,eAAO,MAAM,aAAa,sHAC2F,CAAC;AAEtH,wBAAgB,mBAAmB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAG/D;AAED,MAAM,MAAM,eAAe,GACvB;IAAE,KAAK,EAAE,IAAI,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GAC9B;IAAE,KAAK,EAAE,MAAM,CAAA;CAAE,GACjB;IAAE,KAAK,EAAE,SAAS,CAAA;CAAE,CAAC;AAEzB,4EAA4E;AAC5E,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,CAG5D;AAMD,0FAA0F;AAC1F,wBAAgB,mBAAmB,CAAC,CAAC,EAAE,OAAO,GAAG,eAAe,CAa/D;AAED,oFAAoF;AACpF,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,OAAO,GAAG,eAAe,CAWnE;AAED,sEAAsE;AACtE,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,OAAO,GAAG,MAAM,CAUtD;AAeD,gFAAgF;AAChF,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,OAAO,EAAE,YAAY,GAAE,MAAM,GAAG,IAAW,GAAG,cAAc,CAQzG;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAAC,CAAC,SAAS;IAAE,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAAE,EAC5E,KAAK,EAAE,CAAC,EACR,OAAO,EAAE,OAAO,EAChB,YAAY,GAAE,MAAM,GAAG,IAAW,GACjC,CAAC,CAYH"}
@@ -1,8 +1,61 @@
1
1
  // ============================================================================
2
2
  // src/lib/vervoerder.ts — vervoerder en ophaalmoment uit de printopdracht.
3
- // Alleen uit payload; nooit aanvullen. Een vervoerdersadres is geen ophaaladres.
3
+ // De vervoerder komt uitsluitend uit `carrier_label` van de Logistieke Engine
4
+ // (1.0.184+). Nooit opzoeken op naam, nooit terugvallen op een andere naam.
4
5
  // ============================================================================
5
6
  const tekst = (v) => (typeof v === "string" ? v.trim() : "");
7
+ const obj = (v) => (v && typeof v === "object" ? v : null);
8
+ /** Documentsoorten van deze module die een vervoerder moeten tonen. */
9
+ export const VERVOERDER_DOCUMENTEN = ["pakbon", "afleverbrief", "verzendlabel", "transportdocument"];
10
+ /** Voorbeeldwaarden voor testprint en editor (geen echte vervoerdersnaam). */
11
+ export const VOORBEELD_VERVOERDERS = ["Voorbeeld Transport BV", "Eigen vervoer", "Afhalen"];
12
+ export const ENGINE_TE_OUD = "Logistieke Engine 1.0.184 of hoger nodig: de opdracht bevat geen vervoerder (carrier_label). Er is niets geprint.";
13
+ export function geenVervoerderTekst(ordernummer) {
14
+ const nr = ordernummer.trim() || "zonder nummer";
15
+ return `Geen vervoerder bij order ${nr}: stel er een in bij de order of bij Afhandeling → Vervoerders`;
16
+ }
17
+ /** Kiest het voorbeeldlabel voor een testprint (alleen één van de drie). */
18
+ export function voorbeeldVervoerder(payload) {
19
+ const gevraagd = tekst(obj(payload)?.["voorbeeld_carrier_label"]);
20
+ return VOORBEELD_VERVOERDERS.includes(gevraagd) ? gevraagd : VOORBEELD_VERVOERDERS[0];
21
+ }
22
+ function isGeenBron(o) {
23
+ return [o["carrier_source"], o["vervoerder_bron"], o["bron"]].some((v) => tekst(v).toLowerCase() === "geen");
24
+ }
25
+ /** Leest carrier_label uit één transportobject (payload of logistics_brief_transport). */
26
+ export function carrierUitTransport(t) {
27
+ const o = obj(t);
28
+ if (!o)
29
+ return { soort: "afwezig" };
30
+ if (isGeenBron(o))
31
+ return { soort: "geen" };
32
+ const label = tekst(o["carrier_label"]);
33
+ if (label)
34
+ return { soort: "ok", label };
35
+ if ("carrier_label" in o)
36
+ return { soort: "geen" };
37
+ // De Engine meldt zelf dat de vervoerder ontbreekt.
38
+ const onbekend = Array.isArray(o["onbekend"]) ? o["onbekend"].map(tekst) : [];
39
+ if (onbekend.some((x) => x === "vervoerder" || x === "vervoerder_niet_eenduidig" || x === "order")) {
40
+ return { soort: "geen" };
41
+ }
42
+ return { soort: "afwezig" };
43
+ }
44
+ /** Zoekt carrier_label in de payload (bovenin, transport, data, data.transport). */
45
+ export function carrierUitPayload(payload) {
46
+ const p = obj(payload) ?? {};
47
+ const d = obj(p["data"]);
48
+ const plekken = [p, obj(p["transport"]), d, obj(d?.["transport"])];
49
+ let geen = false;
50
+ for (const plek of plekken) {
51
+ const r = carrierUitTransport(plek);
52
+ if (r.soort === "ok")
53
+ return r;
54
+ if (r.soort === "geen")
55
+ geen = true;
56
+ }
57
+ return geen ? { soort: "geen" } : { soort: "afwezig" };
58
+ }
6
59
  /** ISO-tijd (UTC) → leesbaar in Europe/Amsterdam. Ongeldig → leeg. */
7
60
  export function ophaalmomentTekst(iso) {
8
61
  const s = tekst(iso);
@@ -31,26 +84,28 @@ function adresTekst(v) {
31
84
  ].filter(Boolean);
32
85
  return delen.join(", ");
33
86
  }
34
- export function vervoerderUitPayload(payload) {
87
+ /** Ophaalmoment/-adres uit de payload. De vervoerder komt hier NIET vandaan. */
88
+ export function vervoerderUitPayload(payload, carrierLabel = null) {
35
89
  const p = (payload && typeof payload === "object" ? payload : {});
36
- const v = (p["vervoerder"] && typeof p["vervoerder"] === "object" ? p["vervoerder"] : {});
37
- const naam = tekst(v["naam"]);
38
- const code = tekst(v["code"]);
39
90
  return {
40
- transporteur: naam ? (code ? `${naam} (${code})` : naam) : "",
91
+ transporteur: carrierLabel ?? "",
41
92
  ophaalmoment: ophaalmomentTekst(p["ophaalmoment"]),
42
93
  // Alleen payload.ophaaladres; vervoerder.adres wordt bewust genegeerd.
43
94
  ophaaladres: adresTekst(p["ophaaladres"]),
44
95
  };
45
96
  }
46
- /** Zet bekende waarden op order.transport; ontbrekende blijven leeg (regel valt weg). */
47
- export function metVervoerder(order, payload) {
48
- const v = vervoerderUitPayload(payload);
97
+ /**
98
+ * Zet vervoerder (alleen carrier_label) en ophaalgegevens op order.transport.
99
+ * Elke andere bronwaarde voor de transporteur wordt overschreven: geen terugval.
100
+ */
101
+ export function metVervoerder(order, payload, carrierLabel = null) {
102
+ const v = vervoerderUitPayload(payload, carrierLabel);
49
103
  return {
50
104
  ...order,
51
105
  transport: {
52
106
  ...order.transport,
53
- ...(v.transporteur ? { transporteur: v.transporteur } : {}),
107
+ transporteur: v.transporteur,
108
+ carrier_label: v.transporteur,
54
109
  ophaalmoment: v.ophaalmoment,
55
110
  ophaaladres: v.ophaaladres,
56
111
  },
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@flowselections/layout-maker",
3
- "version": "1.69.8",
3
+ "version": "1.69.10",
4
4
  "flowselections": {
5
5
  "moduleId": "layout-maker",
6
6
  "pages": [
@@ -143,7 +143,7 @@
143
143
  "devDependencies": {
144
144
  "@cloudflare/vite-plugin": "^1.25.5",
145
145
  "@eslint/js": "^9.32.0",
146
- "@flowselections/core": "1.0.29",
146
+ "@flowselections/core": "1.0.30",
147
147
  "@lovable.dev/vite-tanstack-config": "2.26.5",
148
148
  "@rsbuild/core": "^1.0.0",
149
149
  "@tailwindcss/vite": "^4.2.1",