@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.
- package/dist-lib/components/afhandeling/AutoProcessStatus.js +1 -1
- package/dist-lib/components/afhandeling/ControleLijstPrint.d.ts +6 -6
- package/dist-lib/components/afhandeling/ControleLijstPrint.d.ts.map +1 -1
- package/dist-lib/components/afhandeling/ControleLijstPrint.js +73 -48
- package/dist-lib/components/afhandeling/ControlePage.d.ts.map +1 -1
- package/dist-lib/components/afhandeling/ControlePage.js +25 -5
- package/dist-lib/components/afhandeling/DagDetailDialog.d.ts.map +1 -1
- package/dist-lib/components/afhandeling/DagDetailDialog.js +48 -24
- package/dist-lib/components/afhandeling/WeekAgendaView.d.ts.map +1 -1
- package/dist-lib/components/afhandeling/WeekAgendaView.js +16 -5
- package/dist-lib/components/afhandeling/WerkplekWaarschuwing.d.ts +10 -0
- package/dist-lib/components/afhandeling/WerkplekWaarschuwing.d.ts.map +1 -0
- package/dist-lib/components/afhandeling/WerkplekWaarschuwing.js +28 -0
- package/dist-lib/components/pickstation/PakbonTemplate.js +70 -70
- package/dist-lib/components/pickstation/printDocuments.d.ts +9 -2
- package/dist-lib/components/pickstation/printDocuments.d.ts.map +1 -1
- package/dist-lib/components/pickstation/printDocuments.js +8 -52
- package/dist-lib/components/settings/AfhandelingSettingsCard.d.ts.map +1 -1
- package/dist-lib/components/settings/AfhandelingSettingsCard.js +12 -1
- package/dist-lib/hooks/useEngineTasks.js +1 -1
- package/dist-lib/hooks/useOrderPlanning.d.ts.map +1 -1
- package/dist-lib/hooks/useOrderPlanning.js +32 -14
- package/dist-lib/integrations/supabase/auth-middleware.d.ts +18 -13
- package/dist-lib/integrations/supabase/auth-middleware.d.ts.map +1 -1
- package/dist-lib/integrations/supabase/client.server.d.ts +18 -13
- package/dist-lib/integrations/supabase/client.server.d.ts.map +1 -1
- package/dist-lib/integrations/supabase/{client.d.ts → moduleClient.d.ts} +20 -14
- package/dist-lib/integrations/supabase/moduleClient.d.ts.map +1 -0
- package/dist-lib/integrations/supabase/moduleClient.js +38 -0
- package/dist-lib/integrations/supabase/types.d.ts +19 -14
- package/dist-lib/integrations/supabase/types.d.ts.map +1 -1
- package/dist-lib/integrations/supabase/types.js +3 -0
- package/dist-lib/lib/afhandelingSettings.functions.d.ts +36 -26
- package/dist-lib/lib/afhandelingSettings.functions.d.ts.map +1 -1
- package/dist-lib/lib/carrierSignupMail.server.js +26 -26
- package/dist-lib/lib/carriers.functions.d.ts +90 -65
- package/dist-lib/lib/carriers.functions.d.ts.map +1 -1
- package/dist-lib/lib/cartAssignments.functions.d.ts +90 -65
- package/dist-lib/lib/cartAssignments.functions.d.ts.map +1 -1
- package/dist-lib/lib/cartControl.functions.d.ts +180 -130
- package/dist-lib/lib/cartControl.functions.d.ts.map +1 -1
- package/dist-lib/lib/deliveryNotePrint.d.ts +14 -6
- package/dist-lib/lib/deliveryNotePrint.d.ts.map +1 -1
- package/dist-lib/lib/deliveryNotePrint.js +61 -14
- package/dist-lib/lib/floriday.functions.d.ts +18 -13
- package/dist-lib/lib/floriday.functions.d.ts.map +1 -1
- package/dist-lib/lib/floridayAutoProcess.js +1 -1
- package/dist-lib/lib/logisticsEngine/capacity.js +1 -1
- package/dist-lib/lib/logisticsEngine/emitQueue.d.ts +20 -0
- package/dist-lib/lib/logisticsEngine/emitQueue.d.ts.map +1 -0
- package/dist-lib/lib/logisticsEngine/emitQueue.js +88 -0
- package/dist-lib/lib/logisticsEngine/engine.js +1 -1
- package/dist-lib/lib/logisticsEngine/reschedule.js +1 -1
- package/dist-lib/lib/logisticsEngine/staffPlanning.js +1 -1
- package/dist-lib/lib/printing.d.ts +56 -0
- package/dist-lib/lib/printing.d.ts.map +1 -0
- package/dist-lib/lib/printing.js +209 -0
- package/package.json +3 -1
- package/dist-lib/integrations/supabase/auth-attacher.d.ts +0 -2
- package/dist-lib/integrations/supabase/auth-attacher.d.ts.map +0 -1
- package/dist-lib/integrations/supabase/auth-attacher.js +0 -12
- package/dist-lib/integrations/supabase/client.d.ts.map +0 -1
- 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
|
|
10
|
-
export declare function printPdfFromUrl(url: string
|
|
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
|
|
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
|
|
23
|
-
*
|
|
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[]
|
|
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,
|
|
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/
|
|
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
|
|
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
|
|
122
|
-
*
|
|
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
|
-
|
|
148
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
|
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";
|