@flowselections/floriday-afhandeling-module 1.0.31 → 1.0.33

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.
Files changed (66) hide show
  1. package/dist-lib/components/afhandeling/AutoProcessStatus.js +1 -1
  2. package/dist-lib/components/afhandeling/ControleLijstPrint.d.ts +6 -6
  3. package/dist-lib/components/afhandeling/ControleLijstPrint.d.ts.map +1 -1
  4. package/dist-lib/components/afhandeling/ControleLijstPrint.js +73 -48
  5. package/dist-lib/components/afhandeling/ControlePage.d.ts.map +1 -1
  6. package/dist-lib/components/afhandeling/ControlePage.js +47 -14
  7. package/dist-lib/components/afhandeling/DagDetailDialog.d.ts.map +1 -1
  8. package/dist-lib/components/afhandeling/DagDetailDialog.js +48 -24
  9. package/dist-lib/components/afhandeling/VervoerdersPage.d.ts +8 -1
  10. package/dist-lib/components/afhandeling/VervoerdersPage.d.ts.map +1 -1
  11. package/dist-lib/components/afhandeling/VervoerdersPage.js +17 -2
  12. package/dist-lib/components/afhandeling/WeekAgendaView.d.ts.map +1 -1
  13. package/dist-lib/components/afhandeling/WeekAgendaView.js +16 -5
  14. package/dist-lib/components/afhandeling/WerkplekWaarschuwing.d.ts +10 -0
  15. package/dist-lib/components/afhandeling/WerkplekWaarschuwing.d.ts.map +1 -0
  16. package/dist-lib/components/afhandeling/WerkplekWaarschuwing.js +28 -0
  17. package/dist-lib/components/pickstation/PakbonTemplate.js +70 -70
  18. package/dist-lib/components/pickstation/printDocuments.d.ts +9 -2
  19. package/dist-lib/components/pickstation/printDocuments.d.ts.map +1 -1
  20. package/dist-lib/components/pickstation/printDocuments.js +8 -52
  21. package/dist-lib/components/settings/AfhandelingSettingsCard.d.ts.map +1 -1
  22. package/dist-lib/components/settings/AfhandelingSettingsCard.js +12 -1
  23. package/dist-lib/hooks/useEngineTasks.js +1 -1
  24. package/dist-lib/hooks/useOrderPlanning.d.ts.map +1 -1
  25. package/dist-lib/hooks/useOrderPlanning.js +32 -14
  26. package/dist-lib/integrations/supabase/auth-middleware.d.ts +695 -128
  27. package/dist-lib/integrations/supabase/auth-middleware.d.ts.map +1 -1
  28. package/dist-lib/integrations/supabase/client.server.d.ts +695 -128
  29. package/dist-lib/integrations/supabase/client.server.d.ts.map +1 -1
  30. package/dist-lib/integrations/supabase/{client.d.ts → moduleClient.d.ts} +697 -129
  31. package/dist-lib/integrations/supabase/moduleClient.d.ts.map +1 -0
  32. package/dist-lib/integrations/supabase/moduleClient.js +38 -0
  33. package/dist-lib/integrations/supabase/types.d.ts +727 -155
  34. package/dist-lib/integrations/supabase/types.d.ts.map +1 -1
  35. package/dist-lib/integrations/supabase/types.js +3 -0
  36. package/dist-lib/lib/afhandelingSettings.functions.d.ts +1390 -256
  37. package/dist-lib/lib/afhandelingSettings.functions.d.ts.map +1 -1
  38. package/dist-lib/lib/carrierSignupMail.server.js +26 -26
  39. package/dist-lib/lib/carriers.functions.d.ts +3475 -640
  40. package/dist-lib/lib/carriers.functions.d.ts.map +1 -1
  41. package/dist-lib/lib/cartAssignments.functions.d.ts +3475 -640
  42. package/dist-lib/lib/cartAssignments.functions.d.ts.map +1 -1
  43. package/dist-lib/lib/cartControl.functions.d.ts +6950 -1280
  44. package/dist-lib/lib/cartControl.functions.d.ts.map +1 -1
  45. package/dist-lib/lib/deliveryNotePrint.d.ts +14 -6
  46. package/dist-lib/lib/deliveryNotePrint.d.ts.map +1 -1
  47. package/dist-lib/lib/deliveryNotePrint.js +61 -14
  48. package/dist-lib/lib/floriday.functions.d.ts +695 -128
  49. package/dist-lib/lib/floriday.functions.d.ts.map +1 -1
  50. package/dist-lib/lib/floridayAutoProcess.js +1 -1
  51. package/dist-lib/lib/logisticsEngine/capacity.js +1 -1
  52. package/dist-lib/lib/logisticsEngine/emitQueue.d.ts +20 -0
  53. package/dist-lib/lib/logisticsEngine/emitQueue.d.ts.map +1 -0
  54. package/dist-lib/lib/logisticsEngine/emitQueue.js +88 -0
  55. package/dist-lib/lib/logisticsEngine/engine.js +1 -1
  56. package/dist-lib/lib/logisticsEngine/reschedule.js +1 -1
  57. package/dist-lib/lib/logisticsEngine/staffPlanning.js +1 -1
  58. package/dist-lib/lib/printing.d.ts +56 -0
  59. package/dist-lib/lib/printing.d.ts.map +1 -0
  60. package/dist-lib/lib/printing.js +209 -0
  61. package/package.json +3 -7
  62. package/dist-lib/integrations/supabase/auth-attacher.d.ts +0 -2
  63. package/dist-lib/integrations/supabase/auth-attacher.d.ts.map +0 -1
  64. package/dist-lib/integrations/supabase/auth-attacher.js +0 -12
  65. package/dist-lib/integrations/supabase/client.d.ts.map +0 -1
  66. package/dist-lib/integrations/supabase/client.js +0 -13
@@ -6,10 +6,16 @@ export interface DeliveryNoteItem {
6
6
  }
7
7
  /** Haalt de signed URL van een enkele afleverbrief op. */
8
8
  export declare function fetchDeliveryNoteUrl(salesOrderId: string): Promise<string>;
9
- /** Print een PDF vanaf een (signed) URL via een verborgen iframe. */
10
- export declare function printPdfFromUrl(url: string): Promise<void>;
9
+ /** Print een PDF vanaf een (signed) URL via de printwachtrij. */
10
+ export declare function printPdfFromUrl(url: string, opties: {
11
+ documentnaam: string;
12
+ isHerprint?: boolean;
13
+ }): Promise<void>;
11
14
  /** Haal en print één afleverbrief. */
12
- export declare function printDeliveryNote(salesOrderId: string): Promise<void>;
15
+ export declare function printDeliveryNote(salesOrderId: string, opties?: {
16
+ documentnaam?: string;
17
+ isHerprint?: boolean;
18
+ }): Promise<void>;
13
19
  export interface BulkPrintResult {
14
20
  total: number;
15
21
  success: number;
@@ -19,8 +25,10 @@ export interface BulkPrintResult {
19
25
  }>;
20
26
  }
21
27
  /**
22
- * Print meerdere afleverbrieven als één samengevoegde PDF per chunk van 50.
23
- * Bij ≤50 items: exact één printdialoog.
28
+ * Print meerdere afleverbrieven als samengevoegde PDF's van maximaal 25 stuks.
29
+ * Te grote opdrachten worden automatisch verder opgeknipt.
24
30
  */
25
- export declare function printDeliveryNotesMerged(items: DeliveryNoteItem[]): Promise<BulkPrintResult>;
31
+ export declare function printDeliveryNotesMerged(items: DeliveryNoteItem[], opties?: {
32
+ isHerprint?: boolean;
33
+ }): Promise<BulkPrintResult>;
26
34
  //# sourceMappingURL=deliveryNotePrint.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"deliveryNotePrint.d.ts","sourceRoot":"","sources":["../../src/lib/deliveryNotePrint.ts"],"names":[],"mappings":"AAQA,MAAM,WAAW,gBAAgB;IAC/B,EAAE,EAAE,MAAM,CAAC;IACX,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,eAAe,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,kBAAkB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACpC;AA2FD,0DAA0D;AAC1D,wBAAsB,oBAAoB,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CA4BhF;AAED,qEAAqE;AACrE,wBAAsB,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAWhE;AAED,sCAAsC;AACtC,wBAAsB,iBAAiB,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAG3E;AAID,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,KAAK,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CAC9C;AAED;;;GAGG;AACH,wBAAsB,wBAAwB,CAC5C,KAAK,EAAE,gBAAgB,EAAE,GACxB,OAAO,CAAC,eAAe,CAAC,CAuD1B"}
1
+ {"version":3,"file":"deliveryNotePrint.d.ts","sourceRoot":"","sources":["../../src/lib/deliveryNotePrint.ts"],"names":[],"mappings":"AAQA,MAAM,WAAW,gBAAgB;IAC/B,EAAE,EAAE,MAAM,CAAC;IACX,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,eAAe,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,kBAAkB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACpC;AA2FD,0DAA0D;AAC1D,wBAAsB,oBAAoB,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CA4BhF;AAED,iEAAiE;AACjE,wBAAsB,eAAe,CACnC,GAAG,EAAE,MAAM,EACX,MAAM,EAAE;IAAE,YAAY,EAAE,MAAM,CAAC;IAAC,UAAU,CAAC,EAAE,OAAO,CAAA;CAAE,GACrD,OAAO,CAAC,IAAI,CAAC,CAgBf;AAED,sCAAsC;AACtC,wBAAsB,iBAAiB,CACrC,YAAY,EAAE,MAAM,EACpB,MAAM,CAAC,EAAE;IAAE,YAAY,CAAC,EAAE,MAAM,CAAC;IAAC,UAAU,CAAC,EAAE,OAAO,CAAA;CAAE,GACvD,OAAO,CAAC,IAAI,CAAC,CAMf;AAQD,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,KAAK,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CAC9C;AAUD;;;GAGG;AACH,wBAAsB,wBAAwB,CAC5C,KAAK,EAAE,gBAAgB,EAAE,EACzB,MAAM,CAAC,EAAE;IAAE,UAAU,CAAC,EAAE,OAAO,CAAA;CAAE,GAChC,OAAO,CAAC,eAAe,CAAC,CAwF1B"}
@@ -3,7 +3,7 @@
3
3
  // De Authenticatie-module accepteert een Supabase Bearer-token en stuurt
4
4
  // CORS-headers, dus we bellen direct cross-origin — geen eigen proxy nodig.
5
5
  import { printPdfBase64 } from "../components/pickstation/printDocuments";
6
- import { supabase } from "../integrations/supabase/client";
6
+ import { supabase } from "../integrations/supabase/moduleClient";
7
7
  import { resolveGatewayBaseClient } from "./gatewayBase";
8
8
  let floridayEnvironmentPromise = null;
9
9
  async function getFloridayEnvironment() {
@@ -97,8 +97,8 @@ export async function fetchDeliveryNoteUrl(salesOrderId) {
97
97
  }
98
98
  return data.url;
99
99
  }
100
- /** Print een PDF vanaf een (signed) URL via een verborgen iframe. */
101
- export async function printPdfFromUrl(url) {
100
+ /** Print een PDF vanaf een (signed) URL via de printwachtrij. */
101
+ export async function printPdfFromUrl(url, opties) {
102
102
  const res = await fetch(url);
103
103
  if (!res.ok)
104
104
  throw new Error(`PDF download mislukt (HTTP ${res.status})`);
@@ -109,19 +109,36 @@ export async function printPdfFromUrl(url) {
109
109
  binary += String.fromCharCode(...buf.subarray(i, i + chunk));
110
110
  }
111
111
  const base64 = btoa(binary);
112
- await printPdfBase64(base64);
112
+ await printPdfBase64(base64, {
113
+ documenttype: "afleverbrief",
114
+ documentnaam: opties.documentnaam,
115
+ isHerprint: opties.isHerprint,
116
+ papierformaat: "A4",
117
+ });
113
118
  }
114
119
  /** Haal en print één afleverbrief. */
115
- export async function printDeliveryNote(salesOrderId) {
120
+ export async function printDeliveryNote(salesOrderId, opties) {
116
121
  const url = await fetchDeliveryNoteUrl(salesOrderId);
117
- await printPdfFromUrl(url);
122
+ await printPdfFromUrl(url, {
123
+ documentnaam: opties?.documentnaam ?? `AFL-${salesOrderId}`,
124
+ isHerprint: opties?.isHerprint,
125
+ });
126
+ }
127
+ /** Maximaal aantal afleverbrieven in één samengevoegde printopdracht. */
128
+ const CHUNK_SIZE = 25;
129
+ /** Boven deze payloadgrootte (bytes) wordt de chunk gehalveerd. */
130
+ const MAX_PAYLOAD_BYTES = 5 * 1024 * 1024;
131
+ function base64Bytes(b64) {
132
+ return Math.floor((b64.length * 3) / 4);
133
+ }
134
+ function vandaagIso() {
135
+ return new Date().toISOString().slice(0, 10);
118
136
  }
119
- const CHUNK_SIZE = 50;
120
137
  /**
121
- * Print meerdere afleverbrieven als één samengevoegde PDF per chunk van 50.
122
- * Bij ≤50 items: exact één printdialoog.
138
+ * Print meerdere afleverbrieven als samengevoegde PDF's van maximaal 25 stuks.
139
+ * Te grote opdrachten worden automatisch verder opgeknipt.
123
140
  */
124
- export async function printDeliveryNotesMerged(items) {
141
+ export async function printDeliveryNotesMerged(items, opties) {
125
142
  const valid = items.filter((i) => i.salesOrderId || i.deliveryOrderId || i.fulfillmentOrderId);
126
143
  const summary = { total: valid.length, success: 0, failed: [] };
127
144
  if (valid.length === 0)
@@ -144,8 +161,11 @@ export async function printDeliveryNotesMerged(items) {
144
161
  enriched.push({ ...it, deliveryOrderId: doId });
145
162
  }
146
163
  }
147
- for (let i = 0; i < enriched.length; i += CHUNK_SIZE) {
148
- const chunk = enriched.slice(i, i + CHUNK_SIZE);
164
+ const dag = vandaagIso();
165
+ let deel = 0;
166
+ const printChunk = async (chunk) => {
167
+ if (chunk.length === 0)
168
+ return;
149
169
  const { status, data } = await postJson("/api/public/gateway/pdf/bulk-merged", {
150
170
  environment,
151
171
  items: chunk.map((it) => ({
@@ -159,14 +179,41 @@ export async function printDeliveryNotesMerged(items) {
159
179
  const err = data?.error ?? `HTTP ${status}`;
160
180
  for (const it of chunk)
161
181
  summary.failed.push({ id: it.id, error: err });
162
- continue;
182
+ return;
183
+ }
184
+ // Te grote samengevoegde PDF: halveren en opnieuw opvragen.
185
+ if (chunk.length > 1 && base64Bytes(data.pdfBase64) > MAX_PAYLOAD_BYTES) {
186
+ const half = Math.ceil(chunk.length / 2);
187
+ await printChunk(chunk.slice(0, half));
188
+ await printChunk(chunk.slice(half));
189
+ return;
190
+ }
191
+ deel += 1;
192
+ const documentnaam = chunk.length === 1
193
+ ? `AFL-${chunk[0].salesOrderId ?? chunk[0].deliveryOrderId ?? chunk[0].id}`
194
+ : `AFL-${dag}-deel-${deel}`;
195
+ try {
196
+ await printPdfBase64(data.pdfBase64, {
197
+ documenttype: "afleverbrief",
198
+ documentnaam,
199
+ isHerprint: opties?.isHerprint,
200
+ papierformaat: "A4",
201
+ });
202
+ }
203
+ catch (e) {
204
+ const msg = e instanceof Error ? e.message : "Printen mislukt";
205
+ for (const it of chunk)
206
+ summary.failed.push({ id: it.id, error: msg });
207
+ return;
163
208
  }
164
209
  summary.success += data.success ?? chunk.length;
165
210
  for (const r of data.results ?? []) {
166
211
  if (!r.ok)
167
212
  summary.failed.push({ id: r.id, error: r.error ?? "onbekende fout" });
168
213
  }
169
- await printPdfBase64(data.pdfBase64);
214
+ };
215
+ for (let i = 0; i < enriched.length; i += CHUNK_SIZE) {
216
+ await printChunk(enriched.slice(i, i + CHUNK_SIZE));
170
217
  }
171
218
  return summary;
172
219
  }