@flowselections/floriday-afhandeling-module 1.0.32 → 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 (63) 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 +25 -5
  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/WeekAgendaView.d.ts.map +1 -1
  10. package/dist-lib/components/afhandeling/WeekAgendaView.js +16 -5
  11. package/dist-lib/components/afhandeling/WerkplekWaarschuwing.d.ts +10 -0
  12. package/dist-lib/components/afhandeling/WerkplekWaarschuwing.d.ts.map +1 -0
  13. package/dist-lib/components/afhandeling/WerkplekWaarschuwing.js +28 -0
  14. package/dist-lib/components/pickstation/PakbonTemplate.js +70 -70
  15. package/dist-lib/components/pickstation/printDocuments.d.ts +9 -2
  16. package/dist-lib/components/pickstation/printDocuments.d.ts.map +1 -1
  17. package/dist-lib/components/pickstation/printDocuments.js +8 -52
  18. package/dist-lib/components/settings/AfhandelingSettingsCard.d.ts.map +1 -1
  19. package/dist-lib/components/settings/AfhandelingSettingsCard.js +12 -1
  20. package/dist-lib/hooks/useEngineTasks.js +1 -1
  21. package/dist-lib/hooks/useOrderPlanning.d.ts.map +1 -1
  22. package/dist-lib/hooks/useOrderPlanning.js +32 -14
  23. package/dist-lib/integrations/supabase/auth-middleware.d.ts +18 -13
  24. package/dist-lib/integrations/supabase/auth-middleware.d.ts.map +1 -1
  25. package/dist-lib/integrations/supabase/client.server.d.ts +18 -13
  26. package/dist-lib/integrations/supabase/client.server.d.ts.map +1 -1
  27. package/dist-lib/integrations/supabase/{client.d.ts → moduleClient.d.ts} +20 -14
  28. package/dist-lib/integrations/supabase/moduleClient.d.ts.map +1 -0
  29. package/dist-lib/integrations/supabase/moduleClient.js +38 -0
  30. package/dist-lib/integrations/supabase/types.d.ts +19 -14
  31. package/dist-lib/integrations/supabase/types.d.ts.map +1 -1
  32. package/dist-lib/integrations/supabase/types.js +3 -0
  33. package/dist-lib/lib/afhandelingSettings.functions.d.ts +36 -26
  34. package/dist-lib/lib/afhandelingSettings.functions.d.ts.map +1 -1
  35. package/dist-lib/lib/carrierSignupMail.server.js +26 -26
  36. package/dist-lib/lib/carriers.functions.d.ts +90 -65
  37. package/dist-lib/lib/carriers.functions.d.ts.map +1 -1
  38. package/dist-lib/lib/cartAssignments.functions.d.ts +90 -65
  39. package/dist-lib/lib/cartAssignments.functions.d.ts.map +1 -1
  40. package/dist-lib/lib/cartControl.functions.d.ts +180 -130
  41. package/dist-lib/lib/cartControl.functions.d.ts.map +1 -1
  42. package/dist-lib/lib/deliveryNotePrint.d.ts +14 -6
  43. package/dist-lib/lib/deliveryNotePrint.d.ts.map +1 -1
  44. package/dist-lib/lib/deliveryNotePrint.js +61 -14
  45. package/dist-lib/lib/floriday.functions.d.ts +18 -13
  46. package/dist-lib/lib/floriday.functions.d.ts.map +1 -1
  47. package/dist-lib/lib/floridayAutoProcess.js +1 -1
  48. package/dist-lib/lib/logisticsEngine/capacity.js +1 -1
  49. package/dist-lib/lib/logisticsEngine/emitQueue.d.ts +20 -0
  50. package/dist-lib/lib/logisticsEngine/emitQueue.d.ts.map +1 -0
  51. package/dist-lib/lib/logisticsEngine/emitQueue.js +88 -0
  52. package/dist-lib/lib/logisticsEngine/engine.js +1 -1
  53. package/dist-lib/lib/logisticsEngine/reschedule.js +1 -1
  54. package/dist-lib/lib/logisticsEngine/staffPlanning.js +1 -1
  55. package/dist-lib/lib/printing.d.ts +56 -0
  56. package/dist-lib/lib/printing.d.ts.map +1 -0
  57. package/dist-lib/lib/printing.js +209 -0
  58. package/package.json +3 -1
  59. package/dist-lib/integrations/supabase/auth-attacher.d.ts +0 -2
  60. package/dist-lib/integrations/supabase/auth-attacher.d.ts.map +0 -1
  61. package/dist-lib/integrations/supabase/auth-attacher.js +0 -12
  62. package/dist-lib/integrations/supabase/client.d.ts.map +0 -1
  63. 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
  }
@@ -10242,6 +10242,7 @@ export declare const getFloridayOrders: import("@tanstack/start-client-core").Op
10242
10242
  module_registry: {
10243
10243
  Row: {
10244
10244
  created_at: string;
10245
+ enforce: boolean;
10245
10246
  is_active: boolean;
10246
10247
  last_seen_at: string;
10247
10248
  module_id: string;
@@ -10251,6 +10252,7 @@ export declare const getFloridayOrders: import("@tanstack/start-client-core").Op
10251
10252
  };
10252
10253
  Insert: {
10253
10254
  created_at?: string;
10255
+ enforce?: boolean;
10254
10256
  is_active?: boolean;
10255
10257
  last_seen_at?: string;
10256
10258
  module_id: string;
@@ -10260,6 +10262,7 @@ export declare const getFloridayOrders: import("@tanstack/start-client-core").Op
10260
10262
  };
10261
10263
  Update: {
10262
10264
  created_at?: string;
10265
+ enforce?: boolean;
10263
10266
  is_active?: boolean;
10264
10267
  last_seen_at?: string;
10265
10268
  module_id?: string;
@@ -19015,6 +19018,19 @@ export declare const getFloridayOrders: import("@tanstack/start-client-core").Op
19015
19018
  };
19016
19019
  Returns: undefined;
19017
19020
  };
19021
+ approve_mailbox_order_proposal: {
19022
+ Args: {
19023
+ p_custom_fields: import("../integrations/supabase/types").Json;
19024
+ p_customer_id: string;
19025
+ p_delivery_date: string;
19026
+ p_field_values?: import("../integrations/supabase/types").Json;
19027
+ p_lines: import("../integrations/supabase/types").Json;
19028
+ p_notes: string;
19029
+ p_proposal_id: string;
19030
+ p_reviewed_by: string;
19031
+ };
19032
+ Returns: import("../integrations/supabase/types").Json;
19033
+ };
19018
19034
  assign_cart_numbers: {
19019
19035
  Args: {
19020
19036
  p_carts: import("../integrations/supabase/types").Json;
@@ -19446,7 +19462,7 @@ export declare const getFloridayOrders: import("@tanstack/start-client-core").Op
19446
19462
  Returns: string;
19447
19463
  } | {
19448
19464
  Args: {
19449
- _feature_id?: string;
19465
+ _feature_id: string;
19450
19466
  _module_id: string;
19451
19467
  _user_id: string;
19452
19468
  };
@@ -20189,17 +20205,6 @@ export declare const getFloridayOrders: import("@tanstack/start-client-core").Op
20189
20205
  Returns: string;
20190
20206
  };
20191
20207
  logistics_emit_event: {
20192
- Args: {
20193
- p_event_type: string;
20194
- p_idempotency_key?: string;
20195
- p_order_ref: string;
20196
- p_payload?: import("../integrations/supabase/types").Json;
20197
- p_shadow?: boolean;
20198
- p_source_module: string;
20199
- p_strategy_id?: string;
20200
- };
20201
- Returns: import("../integrations/supabase/types").Json;
20202
- } | {
20203
20208
  Args: {
20204
20209
  p_event_type: string;
20205
20210
  p_idempotency_key?: string;
@@ -21656,7 +21661,7 @@ export declare const getFloridayOrders: import("@tanstack/start-client-core").Op
21656
21661
  Enums: {
21657
21662
  ai_import_status: "nieuw" | "verwerken" | "bevestigen" | "klaar" | "mislukt";
21658
21663
  app_role: "admin" | "planner" | "monteur" | "administratie" | "ai_admin" | "manager" | "warehouse" | "sales" | "developer" | "receptie";
21659
- doc_layout_type: "pakbon" | "factuur" | "offerte" | "orderbevestiging" | "etiket" | "verzendlabel" | "productlabel" | "barcode_label" | "magazijnlijst" | "controlelijst" | "transportdocument" | "vrij" | "sticker" | "productiebon";
21664
+ doc_layout_type: "pakbon" | "factuur" | "offerte" | "orderbevestiging" | "etiket" | "verzendlabel" | "productlabel" | "barcode_label" | "magazijnlijst" | "controlelijst" | "transportdocument" | "vrij" | "sticker" | "productiebon" | "veilingbon" | "afleverbrief" | "veilingbrief";
21660
21665
  doc_orientation: "portrait" | "landscape";
21661
21666
  exact_env: "staging" | "live";
21662
21667
  exact_push_status: "pending" | "sent" | "error";