@flowselections/layout-maker 1.7.2 → 1.8.0
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/README.md +78 -1
- package/dist-lib/components/AfdrukKnop.d.ts +1 -1
- package/dist-lib/components/AfdrukKnop.js +2 -2
- package/dist-lib/components/AiLayoutImportDialog.js +4 -4
- package/dist-lib/components/BlokOntwerperPage.js +5 -5
- package/dist-lib/components/ComputersLijst.js +2 -2
- package/dist-lib/components/DocumentSettingsPanel.d.ts +2 -2
- package/dist-lib/components/DocumentSettingsPanel.js +3 -3
- package/dist-lib/components/FormaatOrientatieBar.d.ts +1 -1
- package/dist-lib/components/FormaatOrientatieBar.js +2 -2
- package/dist-lib/components/LayoutsPage.js +4 -4
- package/dist-lib/components/LogoBibliotheekDialog.d.ts +1 -1
- package/dist-lib/components/LogoBibliotheekDialog.js +2 -2
- package/dist-lib/components/LogosPage.d.ts +1 -1
- package/dist-lib/components/LogosPage.js +2 -2
- package/dist-lib/components/NetwerkPrintersDialog.js +2 -2
- package/dist-lib/components/PakbonBuilderPage.js +8 -8
- package/dist-lib/components/PakbonPreview.d.ts +1 -1
- package/dist-lib/components/PakbonPreview.js +3 -3
- package/dist-lib/components/PakbonSectiesPanel.d.ts +1 -1
- package/dist-lib/components/PakbonSectiesPanel.js +4 -4
- package/dist-lib/components/PrintQueuePage.d.ts.map +1 -1
- package/dist-lib/components/PrintQueuePage.js +7 -6
- package/dist-lib/components/PrinterSetupWizard.js +5 -5
- package/dist-lib/components/PrintersPage.js +7 -7
- package/dist-lib/components/ProductiebonBlokkenPanel.d.ts +1 -1
- package/dist-lib/components/ProductiebonBlokkenPanel.js +1 -1
- package/dist-lib/components/ProductiebonBuilderPage.js +6 -6
- package/dist-lib/components/ProductiebonPreview.d.ts +1 -1
- package/dist-lib/components/ProductiebonPreview.js +2 -2
- package/dist-lib/components/WerkplekConfiguratiePage.js +7 -7
- package/dist-lib/index.d.ts +62 -46
- package/dist-lib/index.d.ts.map +1 -1
- package/dist-lib/index.js +47 -47
- package/dist-lib/integrations/supabase/auth-attacher.js +1 -1
- package/dist-lib/integrations/supabase/auth-middleware.d.ts +1600 -780
- package/dist-lib/integrations/supabase/auth-middleware.d.ts.map +1 -1
- package/dist-lib/integrations/supabase/client.d.ts +1 -1
- package/dist-lib/integrations/supabase/client.js +1 -1
- package/dist-lib/integrations/supabase/client.server.d.ts +1600 -780
- package/dist-lib/integrations/supabase/client.server.d.ts.map +1 -1
- package/dist-lib/integrations/supabase/client.server.js +1 -1
- package/dist-lib/integrations/supabase/types.d.ts +1001 -165
- package/dist-lib/integrations/supabase/types.d.ts.map +1 -1
- package/dist-lib/integrations/supabase/types.js +3 -0
- package/dist-lib/lib/aiLayout.functions.d.ts +1679 -859
- package/dist-lib/lib/aiLayout.functions.d.ts.map +1 -1
- package/dist-lib/lib/aiLayout.functions.js +2 -2
- package/dist-lib/lib/aiLayout.server.d.ts +1 -1
- package/dist-lib/lib/browserPrint.d.ts +1 -1
- package/dist-lib/lib/browserPrint.js +3 -3
- package/dist-lib/lib/directPrint.d.ts +1 -1
- package/dist-lib/lib/directPrint.js +4 -4
- package/dist-lib/lib/documentPdf.d.ts +1 -1
- package/dist-lib/lib/documentProfiles.d.ts +1 -1
- package/dist-lib/lib/documentProfiles.d.ts.map +1 -1
- package/dist-lib/lib/documentProfiles.js +3 -0
- package/dist-lib/lib/documentTypes.d.ts +1 -1
- package/dist-lib/lib/documentTypes.d.ts.map +1 -1
- package/dist-lib/lib/documentTypes.js +3 -0
- package/dist-lib/lib/formaatPrinters.js +1 -1
- package/dist-lib/lib/htmlNaarPdf.server.js +1 -1
- package/dist-lib/lib/layoutPreview.d.ts +1 -1
- package/dist-lib/lib/layoutPreview.js +1 -1
- package/dist-lib/lib/logoLibrary.js +1 -1
- package/dist-lib/lib/orderData.server.d.ts +2 -1
- package/dist-lib/lib/orderData.server.d.ts.map +1 -1
- package/dist-lib/lib/orderData.server.js +7 -8
- package/dist-lib/lib/pakbonBuilder.d.ts +1 -1
- package/dist-lib/lib/pakbonHtml.d.ts +1 -1
- package/dist-lib/lib/pakbonHtml.js +2 -2
- package/dist-lib/lib/printApi.d.ts +72 -1
- package/dist-lib/lib/printApi.d.ts.map +1 -1
- package/dist-lib/lib/printApi.js +155 -15
- package/dist-lib/lib/printQueue.server.d.ts +12 -3
- package/dist-lib/lib/printQueue.server.d.ts.map +1 -1
- package/dist-lib/lib/printQueue.server.js +66 -48
- package/dist-lib/lib/printService.functions.d.ts +6628 -24446
- package/dist-lib/lib/printService.functions.d.ts.map +1 -1
- package/dist-lib/lib/printService.functions.js +5 -31
- package/dist-lib/lib/printService.server.js +1 -1
- package/dist-lib/lib/productiebonBuilder.d.ts +1 -1
- package/dist-lib/lib/productiebonHtml.js +2 -2
- package/dist-lib/lib/profielHtml.js +2 -2
- package/dist-lib/lib/queueTick.d.ts +11 -3
- package/dist-lib/lib/queueTick.d.ts.map +1 -1
- package/dist-lib/lib/queueTick.js +68 -21
- package/dist-lib/lib/queueTickClient.d.ts +8 -0
- package/dist-lib/lib/queueTickClient.d.ts.map +1 -0
- package/dist-lib/lib/queueTickClient.js +37 -0
- package/dist-lib/lib/runnerRegistry.server.d.ts +3 -2
- package/dist-lib/lib/runnerRegistry.server.d.ts.map +1 -1
- package/dist-lib/lib/runnerRegistry.server.js +6 -8
- package/dist-lib/lib/supabaseClient.d.ts +1 -1
- package/dist-lib/lib/testpagina.js +2 -2
- package/dist-lib/lib/useDocumentData.d.ts +1 -1
- package/dist-lib/lib/useDocumentData.js +1 -1
- package/dist-lib/lib/useNetwerkPrinters.js +1 -1
- package/package.json +2 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"documentProfiles.d.ts","sourceRoot":"","sources":["../../src/lib/documentProfiles.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAExD,MAAM,MAAM,cAAc,GAAG,YAAY,GAAG,OAAO,GAAG,WAAW,GAAG,OAAO,GAAG,OAAO,GAAG,OAAO,CAAC;AAEhG,MAAM,WAAW,aAAa;IAC5B,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,cAAc,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,oCAAoC;IACpC,MAAM,CAAC,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IAC5C,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED,MAAM,WAAW,eAAe;IAC9B,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,YAAY,EAAE,aAAa,EAAE,CAAC;CAC/B;AAED,MAAM,WAAW,eAAe;IAC9B,qDAAqD;IACrD,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,EAAE,MAAM,CAAC;IACrB,sCAAsC;IACtC,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,8CAA8C;IAC9C,QAAQ,EAAE,gBAAgB,EAAE,CAAC;IAC7B,gBAAgB,EAAE,MAAM,CAAC;IACzB,mBAAmB,EAAE,UAAU,GAAG,WAAW,CAAC;IAC9C,wDAAwD;IACxD,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,+CAA+C;IAC/C,MAAM,EAAE,MAAM,CAAC;IACf,mDAAmD;IACnD,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,OAAO,EAAE,eAAe,EAAE,CAAC;CAC5B;AAyBD,eAAO,MAAM,gBAAgB,EAAE,gBAAgB,EAO9C,CAAC;AAEF,eAAO,MAAM,qBAAqB,EAAE,gBAAgB,EAOnD,CAAC;AA4YF,eAAO,MAAM,kBAAkB,EAAE,eAAe,
|
|
1
|
+
{"version":3,"file":"documentProfiles.d.ts","sourceRoot":"","sources":["../../src/lib/documentProfiles.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAExD,MAAM,MAAM,cAAc,GAAG,YAAY,GAAG,OAAO,GAAG,WAAW,GAAG,OAAO,GAAG,OAAO,GAAG,OAAO,CAAC;AAEhG,MAAM,WAAW,aAAa;IAC5B,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,cAAc,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,oCAAoC;IACpC,MAAM,CAAC,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IAC5C,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED,MAAM,WAAW,eAAe;IAC9B,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,YAAY,EAAE,aAAa,EAAE,CAAC;CAC/B;AAED,MAAM,WAAW,eAAe;IAC9B,qDAAqD;IACrD,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,EAAE,MAAM,CAAC;IACrB,sCAAsC;IACtC,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,8CAA8C;IAC9C,QAAQ,EAAE,gBAAgB,EAAE,CAAC;IAC7B,gBAAgB,EAAE,MAAM,CAAC;IACzB,mBAAmB,EAAE,UAAU,GAAG,WAAW,CAAC;IAC9C,wDAAwD;IACxD,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,+CAA+C;IAC/C,MAAM,EAAE,MAAM,CAAC;IACf,mDAAmD;IACnD,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,OAAO,EAAE,eAAe,EAAE,CAAC;CAC5B;AAyBD,eAAO,MAAM,gBAAgB,EAAE,gBAAgB,EAO9C,CAAC;AAEF,eAAO,MAAM,qBAAqB,EAAE,gBAAgB,EAOnD,CAAC;AA4YF,eAAO,MAAM,kBAAkB,EAAE,eAAe,EAmB/C,CAAC;AAEF,wBAAgB,eAAe,CAAC,EAAE,EAAE,MAAM,GAAG,eAAe,CAK3D;AAED,wBAAgB,iBAAiB,IAAI,eAAe,EAAE,CAErD;AAED,MAAM,MAAM,cAAc,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;AAErE,0EAA0E;AAC1E,wBAAgB,eAAe,CAAC,OAAO,EAAE,eAAe,GAAG,cAAc,CAUxE;AAED,4EAA4E;AAC5E,wBAAgB,YAAY,CAC1B,MAAM,EAAE,cAAc,GAAG,IAAI,GAAG,SAAS,EACzC,KAAK,EAAE,eAAe,EACtB,IAAI,EAAE,aAAa,GAClB,OAAO,CAIT"}
|
|
@@ -428,6 +428,9 @@ export const DOCUMENT_PROFIELEN = [
|
|
|
428
428
|
generiek("magazijnlijst", "Magazijnlijst", "Verzamellijst voor het magazijn."),
|
|
429
429
|
generiek("controlelijst", "Controlelijst", "Afvinklijst voor controle."),
|
|
430
430
|
generiek("transportdocument", "Transportdocument", "Document voor de rit."),
|
|
431
|
+
generiek("veilingbon", "Veilingbon", "Bon voor de veiling, per kar of partij."),
|
|
432
|
+
generiek("afleverbrief", "Afleverbrief", "Afleverbrief bij een levering."),
|
|
433
|
+
generiek("veilingbrief", "Veilingbrief", "Begeleidende brief voor de veiling."),
|
|
431
434
|
generiek("vrij", "Vrij document", "Lege layout zonder vooraf ingestelde onderdelen."),
|
|
432
435
|
];
|
|
433
436
|
export function documentProfiel(id) {
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export type DocumentType = "pakbon" | "sticker" | "productiebon" | "factuur" | "offerte" | "orderbevestiging" | "etiket" | "verzendlabel" | "productlabel" | "barcode_label" | "magazijnlijst" | "controlelijst" | "transportdocument" | "vrij";
|
|
1
|
+
export type DocumentType = "pakbon" | "sticker" | "productiebon" | "factuur" | "offerte" | "orderbevestiging" | "etiket" | "verzendlabel" | "productlabel" | "barcode_label" | "magazijnlijst" | "controlelijst" | "transportdocument" | "veilingbon" | "afleverbrief" | "veilingbrief" | "vrij";
|
|
2
2
|
export declare const DOCUMENT_TYPES: {
|
|
3
3
|
value: DocumentType;
|
|
4
4
|
label: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"documentTypes.d.ts","sourceRoot":"","sources":["../../src/lib/documentTypes.ts"],"names":[],"mappings":"AAIA,MAAM,MAAM,YAAY,GACpB,QAAQ,GACR,SAAS,GACT,cAAc,GACd,SAAS,GACT,SAAS,GACT,kBAAkB,GAClB,QAAQ,GACR,cAAc,GACd,cAAc,GACd,eAAe,GACf,eAAe,GACf,eAAe,GACf,mBAAmB,GACnB,MAAM,CAAC;AAEX,eAAO,MAAM,cAAc,EAAE;IAAE,KAAK,EAAE,YAAY,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,
|
|
1
|
+
{"version":3,"file":"documentTypes.d.ts","sourceRoot":"","sources":["../../src/lib/documentTypes.ts"],"names":[],"mappings":"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"}
|
|
@@ -15,6 +15,9 @@ export const DOCUMENT_TYPES = [
|
|
|
15
15
|
{ value: "magazijnlijst", label: "Magazijnlijst" },
|
|
16
16
|
{ value: "controlelijst", label: "Controlelijst" },
|
|
17
17
|
{ value: "transportdocument", label: "Transportdocument" },
|
|
18
|
+
{ value: "veilingbon", label: "Veilingbon" },
|
|
19
|
+
{ value: "afleverbrief", label: "Afleverbrief" },
|
|
20
|
+
{ value: "veilingbrief", label: "Veilingbrief" },
|
|
18
21
|
{ value: "vrij", label: "Vrij document" },
|
|
19
22
|
];
|
|
20
23
|
export function documentTypeLabel(value) {
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
// src/lib/formaatPrinters.ts — standaardprinter per documentsoort en formaat
|
|
3
3
|
// ============================================================================
|
|
4
4
|
import { useCallback, useEffect, useState } from "react";
|
|
5
|
-
import { supabase } from "./supabaseClient";
|
|
5
|
+
import { supabase } from "./supabaseClient.js";
|
|
6
6
|
const arr = (v) => (Array.isArray(v) ? v : []);
|
|
7
7
|
export function useFormaatPrinters(documenttype) {
|
|
8
8
|
const [koppelingen, setKoppelingen] = useState([]);
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
// Gebruikt de eigen documentmaker (src/lib/htmlPdf.server.ts). Geen externe
|
|
4
4
|
// dienst, geen browser en geen instellingen per shell nodig.
|
|
5
5
|
// ============================================================================
|
|
6
|
-
import { bytesNaarBase64, htmlNaarPdfBytes } from "./htmlPdf.server";
|
|
6
|
+
import { bytesNaarBase64, htmlNaarPdfBytes } from "./htmlPdf.server.js";
|
|
7
7
|
export class PdfRenderFout extends Error {
|
|
8
8
|
constructor(code, boodschap) {
|
|
9
9
|
super(boodschap);
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { LayoutElementModel, LayoutModel } from "./documentTypes";
|
|
1
|
+
import type { LayoutElementModel, LayoutModel } from "./documentTypes.js";
|
|
2
2
|
export declare function voorbeeldContext(): Record<string, string>;
|
|
3
3
|
export declare function vulVelden(tekst: string, ctx: Record<string, string>): string;
|
|
4
4
|
export declare function conditieVoldoet(el: LayoutElementModel, ctx: Record<string, string>): boolean;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
// ============================================================================
|
|
2
2
|
// src/lib/layoutPreview.ts — voorbeeldgegevens, veldvervanging en print-HTML
|
|
3
3
|
// ============================================================================
|
|
4
|
-
import { alleVelden } from "./fieldRegistry";
|
|
4
|
+
import { alleVelden } from "./fieldRegistry.js";
|
|
5
5
|
export function voorbeeldContext() {
|
|
6
6
|
const ctx = {};
|
|
7
7
|
for (const v of alleVelden())
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
// src/lib/logoLibrary.ts — centrale Logo Bibliotheek
|
|
3
3
|
// ============================================================================
|
|
4
4
|
import { useCallback, useEffect, useState } from "react";
|
|
5
|
-
import { supabase } from "./supabaseClient";
|
|
5
|
+
import { supabase } from "./supabaseClient.js";
|
|
6
6
|
export const LOGO_BUCKET = "layout-logos";
|
|
7
7
|
export const LOGO_CATEGORIEEN = [
|
|
8
8
|
{ value: "hoofdlogo", label: "Hoofdlogo" },
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { PrintDb } from "./printQueue.server.js";
|
|
1
2
|
type Rij = Record<string, any>;
|
|
2
3
|
/** Bevat de meegestuurde payload zelf al orderregels of karren? */
|
|
3
4
|
export declare function heeftOrderInhoud(bron: unknown): boolean;
|
|
@@ -10,6 +11,6 @@ export declare function zoekOrderVerwijzing(payload: unknown): {
|
|
|
10
11
|
* Bouwt de ruwe ordergegevens (vorm die `maakPakbonOrder` verwacht) op basis
|
|
11
12
|
* van het order-id of ordernummer. Geeft `null` als de order niet te vinden is.
|
|
12
13
|
*/
|
|
13
|
-
export declare function laadOrderVanuitDatabase(payload: unknown): Promise<Rij | null>;
|
|
14
|
+
export declare function laadOrderVanuitDatabase(db: PrintDb, payload: unknown): Promise<Rij | null>;
|
|
14
15
|
export {};
|
|
15
16
|
//# sourceMappingURL=orderData.server.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"orderData.server.d.ts","sourceRoot":"","sources":["../../src/lib/orderData.server.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"orderData.server.d.ts","sourceRoot":"","sources":["../../src/lib/orderData.server.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAEnD,KAAK,GAAG,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;AAuB/B,mEAAmE;AACnE,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,OAAO,GAAG,OAAO,CAKvD;AAED,wEAAwE;AACxE,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,OAAO,GAAG;IACrD,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;CAC5B,CAyBA;AAED;;;GAGG;AACH,wBAAsB,uBAAuB,CAAC,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,GAAG,GAAG,IAAI,CAAC,CAiKhG"}
|
|
@@ -7,7 +7,6 @@
|
|
|
7
7
|
// `order_items`, `order_carts` en `order_cart_items`.
|
|
8
8
|
// Draait alleen op de server (printwachtrij).
|
|
9
9
|
// ============================================================================
|
|
10
|
-
import { adminDb as supabaseAdmin } from "./supabaseAdmin.server";
|
|
11
10
|
const arr = (v) => (Array.isArray(v) ? v : []);
|
|
12
11
|
const num = (v) => (Number.isFinite(Number(v)) ? Number(v) : 0);
|
|
13
12
|
/**
|
|
@@ -66,16 +65,16 @@ export function zoekOrderVerwijzing(payload) {
|
|
|
66
65
|
* Bouwt de ruwe ordergegevens (vorm die `maakPakbonOrder` verwacht) op basis
|
|
67
66
|
* van het order-id of ordernummer. Geeft `null` als de order niet te vinden is.
|
|
68
67
|
*/
|
|
69
|
-
export async function laadOrderVanuitDatabase(payload) {
|
|
68
|
+
export async function laadOrderVanuitDatabase(db, payload) {
|
|
70
69
|
const { orderId, ordernummer } = zoekOrderVerwijzing(payload);
|
|
71
70
|
if (!orderId && !ordernummer)
|
|
72
71
|
return null;
|
|
73
72
|
let order = null;
|
|
74
73
|
if (orderId) {
|
|
75
|
-
order = await veilig(() =>
|
|
74
|
+
order = await veilig(() => db.from("orders").select("*").eq("id", orderId).maybeSingle());
|
|
76
75
|
}
|
|
77
76
|
if (!order && ordernummer) {
|
|
78
|
-
const rijen = await veilig(() =>
|
|
77
|
+
const rijen = await veilig(() => db
|
|
79
78
|
.from("orders")
|
|
80
79
|
.select("*")
|
|
81
80
|
.eq("order_number", ordernummer)
|
|
@@ -86,8 +85,8 @@ export async function laadOrderVanuitDatabase(payload) {
|
|
|
86
85
|
if (!order)
|
|
87
86
|
return null;
|
|
88
87
|
const [regelsRuw, karrenRuw] = await Promise.all([
|
|
89
|
-
veilig(() =>
|
|
90
|
-
veilig(() =>
|
|
88
|
+
veilig(() => db.from("order_items").select("*").eq("order_id", order["id"])),
|
|
89
|
+
veilig(() => db
|
|
91
90
|
.from("order_carts")
|
|
92
91
|
.select("*")
|
|
93
92
|
.eq("order_id", order["id"])
|
|
@@ -97,7 +96,7 @@ export async function laadOrderVanuitDatabase(payload) {
|
|
|
97
96
|
const karrenRijen = arr(karrenRuw);
|
|
98
97
|
let karItems = [];
|
|
99
98
|
if (karrenRijen.length) {
|
|
100
|
-
karItems = arr(await veilig(() =>
|
|
99
|
+
karItems = arr(await veilig(() => db
|
|
101
100
|
.from("order_cart_items")
|
|
102
101
|
.select("*")
|
|
103
102
|
.in("cart_id", karrenRijen.map((k) => k["id"]))));
|
|
@@ -107,7 +106,7 @@ export async function laadOrderVanuitDatabase(payload) {
|
|
|
107
106
|
.filter((v) => typeof v === "string")));
|
|
108
107
|
const producten = new Map();
|
|
109
108
|
if (productIds.length) {
|
|
110
|
-
const data = await veilig(() =>
|
|
109
|
+
const data = await veilig(() => db
|
|
111
110
|
.from("products")
|
|
112
111
|
.select("id, product, article_number, barcode, location, unit, weight, custom_fields")
|
|
113
112
|
.in("id", productIds));
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { InstellingDef } from "./documentProfiles";
|
|
1
|
+
import type { InstellingDef } from "./documentProfiles.js";
|
|
2
2
|
export type PakbonSectieType = "logo" | "bedrijfsgegevens" | "klantgegevens" | "afleveradres" | "factuuradres" | "orderinformatie" | "transportinformatie" | "opmerkingen" | "orderregels" | "pickmethode" | "karren" | "lagen" | "producten" | "fusten" | "totalen" | "handtekening" | "tekstblok" | "qrcode" | "barcode" | "afbeelding";
|
|
3
3
|
export interface PakbonKolom {
|
|
4
4
|
key: string;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { type DemoOrder, type PakbonConfig } from "./pakbonBuilder";
|
|
1
|
+
import { type DemoOrder, type PakbonConfig } from "./pakbonBuilder.js";
|
|
2
2
|
/** Gegevensvorm van een pakbon. Gelijk aan de vorm van het live voorbeeld. */
|
|
3
3
|
export type PakbonOrder = DemoOrder;
|
|
4
4
|
export interface PakbonLogo {
|
|
@@ -7,8 +7,8 @@
|
|
|
7
7
|
// layoutconfiguratie en de echte ordergegevens. Zo tonen het live voorbeeld en
|
|
8
8
|
// de afdruk altijd exact dezelfde secties — inclusief de orderregels.
|
|
9
9
|
// ============================================================================
|
|
10
|
-
import { DEMO_ORDER, conditieContext, groepeerIdentiekeKarren, groepeerIdentiekeLagen, karBundelTekst, fustVerzamellijst, pickMethode, productVeldBreedtes, sectieOnderdrukt, laagBundelTekst, leesPakbonConfig, sectieZichtbaar, sorteerProducten, totalen, vulVeldcodes, } from "./pakbonBuilder";
|
|
11
|
-
import { haalPrintLogos } from "./logoLibrary";
|
|
10
|
+
import { DEMO_ORDER, conditieContext, groepeerIdentiekeKarren, groepeerIdentiekeLagen, karBundelTekst, fustVerzamellijst, pickMethode, productVeldBreedtes, sectieOnderdrukt, laagBundelTekst, leesPakbonConfig, sectieZichtbaar, sorteerProducten, totalen, vulVeldcodes, } from "./pakbonBuilder.js";
|
|
11
|
+
import { haalPrintLogos } from "./logoLibrary.js";
|
|
12
12
|
// --- kleine hulpjes ---------------------------------------------------------
|
|
13
13
|
const arr = (v) => (Array.isArray(v) ? v : []);
|
|
14
14
|
const opt = (s, key, fallback) => s.opties?.[key] ?? fallback;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { DocumentType } from "./documentTypes";
|
|
1
|
+
import type { DocumentType } from "./documentTypes.js";
|
|
2
2
|
export interface PrintDocumentInput {
|
|
3
3
|
/** Documentsoort, bijv. "pakbon" of "productiebon". */
|
|
4
4
|
documenttype: DocumentType | string;
|
|
@@ -18,11 +18,82 @@ export interface PrintDocumentResult {
|
|
|
18
18
|
layoutId: string;
|
|
19
19
|
printerId: string | null;
|
|
20
20
|
}
|
|
21
|
+
/** Fout wanneer een identieke aanvraag kort geleden al is aangemaakt. */
|
|
22
|
+
export declare class DubbeleAanvraagFout extends Error {
|
|
23
|
+
name: string;
|
|
24
|
+
constructor();
|
|
25
|
+
}
|
|
21
26
|
/**
|
|
22
27
|
* Zet een document in de printwachtrij. Bedoeld voor gebruik vanuit andere
|
|
23
28
|
* modules binnen dezelfde shell en database.
|
|
24
29
|
*/
|
|
25
30
|
export declare function printDocument(input: PrintDocumentInput): Promise<PrintDocumentResult>;
|
|
31
|
+
/**
|
|
32
|
+
* De printer die aan een documentsoort hangt: eerst de standaard (of nieuwste
|
|
33
|
+
* actieve) layout voor die soort, dan de printerkoppeling op die layout, anders
|
|
34
|
+
* de koppeling op papierformaat. Geeft `null` als er niets gekoppeld is.
|
|
35
|
+
*/
|
|
36
|
+
export declare function printerVoorDocumenttype(documenttype: DocumentType | string, papierformaat?: string): Promise<string | null>;
|
|
37
|
+
export interface PrintPdfInput {
|
|
38
|
+
/** Documentsoort, alleen voor overzicht en printerkeuze. */
|
|
39
|
+
documenttype: DocumentType | string;
|
|
40
|
+
documentnaam: string;
|
|
41
|
+
/** PDF als base64 (met of zonder data:-voorvoegsel) óf een webadres. */
|
|
42
|
+
pdfBase64?: string;
|
|
43
|
+
pdfUrl?: string;
|
|
44
|
+
/**
|
|
45
|
+
* Optioneel. Zonder printer wordt de printer bepaald via de gekoppelde
|
|
46
|
+
* layout of het papierformaat van de documentsoort.
|
|
47
|
+
*/
|
|
48
|
+
printerId?: string;
|
|
49
|
+
kopieen?: number;
|
|
50
|
+
papierformaat?: string;
|
|
51
|
+
payload?: Record<string, unknown>;
|
|
52
|
+
isHerprint?: boolean;
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Print een kant-en-klare PDF (klantsticker, Floriday-document, factuur van een
|
|
56
|
+
* externe dienst). De PDF gaat ongewijzigd naar de printer; er wordt geen
|
|
57
|
+
* layout gebruikt om het document op te bouwen.
|
|
58
|
+
*/
|
|
59
|
+
export declare function printPdf(input: PrintPdfInput): Promise<{
|
|
60
|
+
jobId: string;
|
|
61
|
+
}>;
|
|
62
|
+
export interface PrintHtmlInput {
|
|
63
|
+
documenttype: DocumentType | string;
|
|
64
|
+
documentnaam: string;
|
|
65
|
+
/** De opmaak die exact zo afgedrukt moet worden. */
|
|
66
|
+
html: string;
|
|
67
|
+
/** Verplicht: zonder layout kan de wachtrij zelf geen printer afleiden. */
|
|
68
|
+
printerId: string;
|
|
69
|
+
kopieen?: number;
|
|
70
|
+
payload?: Record<string, unknown>;
|
|
71
|
+
isHerprint?: boolean;
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* Print eigen opmaak. Er wordt bewust géén layout meegegeven: een gekoppelde
|
|
75
|
+
* layout wint altijd van meegestuurde HTML.
|
|
76
|
+
*/
|
|
77
|
+
export declare function printHtml(input: PrintHtmlInput): Promise<{
|
|
78
|
+
jobId: string;
|
|
79
|
+
}>;
|
|
80
|
+
/**
|
|
81
|
+
* De printer die bij een werkplek hoort. Een werkplek is de naam van de
|
|
82
|
+
* computer waarop het printprogramma draait; printers worden daaraan gekoppeld
|
|
83
|
+
* via hun locatie of systeemnaam.
|
|
84
|
+
*/
|
|
85
|
+
export declare function printerVoorWerkplek(werkplek: string, papierformaat?: string): Promise<string | null>;
|
|
86
|
+
export interface JobStatus {
|
|
87
|
+
id: string;
|
|
88
|
+
status: string;
|
|
89
|
+
documentnaam: string;
|
|
90
|
+
foutmelding: string | null;
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* Volgt één printopdracht live. Geeft een functie terug om te stoppen.
|
|
94
|
+
* Zo hoeft geen enkele andere module zelf een realtime-abonnement te bouwen.
|
|
95
|
+
*/
|
|
96
|
+
export declare function volgJobStatus(jobId: string, cb: (status: JobStatus) => void): () => void;
|
|
26
97
|
/** Alle beschikbare layouts voor een documentsoort (voor keuzelijsten elders). */
|
|
27
98
|
export declare function beschikbareLayouts(documenttype?: string): Promise<{
|
|
28
99
|
id: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"printApi.d.ts","sourceRoot":"","sources":["../../src/lib/printApi.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAIpD,MAAM,WAAW,kBAAkB;IACjC,uDAAuD;IACvD,YAAY,EAAE,YAAY,GAAG,MAAM,CAAC;IACpC,8EAA8E;IAC9E,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,0EAA0E;IAC1E,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,gDAAgD;IAChD,YAAY,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,uDAAuD;IACvD,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAClC,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAED,MAAM,WAAW,mBAAmB;IAClC,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;CAC1B;
|
|
1
|
+
{"version":3,"file":"printApi.d.ts","sourceRoot":"","sources":["../../src/lib/printApi.ts"],"names":[],"mappings":"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"}
|
package/dist-lib/lib/printApi.js
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
// ============================================================================
|
|
4
4
|
// Andere modules gebruiken uitsluitend deze functies; zij hoeven de tabellen
|
|
5
5
|
// van deze module niet te kennen.
|
|
6
|
-
import { supabase } from "./supabaseClient";
|
|
6
|
+
import { supabase } from "./supabaseClient.js";
|
|
7
7
|
const arr = (v) => (Array.isArray(v) ? v : []);
|
|
8
8
|
/** Zoekt de te gebruiken layout: expliciet, anders standaard, anders de nieuwste. */
|
|
9
9
|
async function bepaalLayout(documenttype, layoutId) {
|
|
@@ -48,6 +48,29 @@ async function bepaalPrinter(documenttype, layoutId, papierformaat) {
|
|
|
48
48
|
}
|
|
49
49
|
return null;
|
|
50
50
|
}
|
|
51
|
+
/** Rij in de wachtrij zetten. Geeft null als de dubbelbeveiliging hem tegenhield. */
|
|
52
|
+
async function zetInWachtrij(rij) {
|
|
53
|
+
const { data, error } = await supabase
|
|
54
|
+
.from("print_jobs")
|
|
55
|
+
.insert({ status: "wachtend", ...rij })
|
|
56
|
+
.select("id")
|
|
57
|
+
.maybeSingle();
|
|
58
|
+
if (error)
|
|
59
|
+
throw error;
|
|
60
|
+
const id = data?.id ?? null;
|
|
61
|
+
// Direct laten verwerken; wacht niet op de cron-ronde. Mislukt dit, dan
|
|
62
|
+
// blijft de opdracht gewoon wachtend staan voor een volgende poging.
|
|
63
|
+
if (id)
|
|
64
|
+
void startWachtrijVerwerking();
|
|
65
|
+
return id;
|
|
66
|
+
}
|
|
67
|
+
/** Fout wanneer een identieke aanvraag kort geleden al is aangemaakt. */
|
|
68
|
+
export class DubbeleAanvraagFout extends Error {
|
|
69
|
+
constructor() {
|
|
70
|
+
super("Dit document stond al in de printwachtrij; de dubbele aanvraag is genegeerd.");
|
|
71
|
+
this.name = "DubbeleAanvraagFout";
|
|
72
|
+
}
|
|
73
|
+
}
|
|
51
74
|
/**
|
|
52
75
|
* Zet een document in de printwachtrij. Bedoeld voor gebruik vanuit andere
|
|
53
76
|
* modules binnen dezelfde shell en database.
|
|
@@ -58,9 +81,7 @@ export async function printDocument(input) {
|
|
|
58
81
|
throw new Error(`Geen layout gevonden voor documenttype "${input.documenttype}"`);
|
|
59
82
|
const printerId = input.printerId ??
|
|
60
83
|
(await bepaalPrinter(input.documenttype, layout.id, layout.papierformaat ?? null));
|
|
61
|
-
const
|
|
62
|
-
.from("print_jobs")
|
|
63
|
-
.insert({
|
|
84
|
+
const jobId = await zetInWachtrij({
|
|
64
85
|
layout_id: layout.id,
|
|
65
86
|
printer_id: printerId,
|
|
66
87
|
documenttype: input.documenttype,
|
|
@@ -68,22 +89,141 @@ export async function printDocument(input) {
|
|
|
68
89
|
kopieen: input.kopieen ?? 1,
|
|
69
90
|
payload: input.payload ?? {},
|
|
70
91
|
is_herprint: input.isHerprint ?? false,
|
|
71
|
-
|
|
92
|
+
});
|
|
93
|
+
if (!jobId)
|
|
94
|
+
throw new DubbeleAanvraagFout();
|
|
95
|
+
return { jobId, layoutId: layout.id, printerId };
|
|
96
|
+
}
|
|
97
|
+
/**
|
|
98
|
+
* De printer die aan een documentsoort hangt: eerst de standaard (of nieuwste
|
|
99
|
+
* actieve) layout voor die soort, dan de printerkoppeling op die layout, anders
|
|
100
|
+
* de koppeling op papierformaat. Geeft `null` als er niets gekoppeld is.
|
|
101
|
+
*/
|
|
102
|
+
export async function printerVoorDocumenttype(documenttype, papierformaat) {
|
|
103
|
+
const layout = await bepaalLayout(documenttype);
|
|
104
|
+
if (!layout) {
|
|
105
|
+
if (!papierformaat)
|
|
106
|
+
return null;
|
|
107
|
+
const { data } = await supabase
|
|
108
|
+
.from("document_formaat_printers")
|
|
109
|
+
.select("printer_id")
|
|
110
|
+
.eq("documenttype", documenttype)
|
|
111
|
+
.eq("formaat_code", papierformaat)
|
|
112
|
+
.maybeSingle();
|
|
113
|
+
return data?.printer_id ?? null;
|
|
114
|
+
}
|
|
115
|
+
return bepaalPrinter(documenttype, layout.id, papierformaat ?? layout.papierformaat ?? null);
|
|
116
|
+
}
|
|
117
|
+
/**
|
|
118
|
+
* Print een kant-en-klare PDF (klantsticker, Floriday-document, factuur van een
|
|
119
|
+
* externe dienst). De PDF gaat ongewijzigd naar de printer; er wordt geen
|
|
120
|
+
* layout gebruikt om het document op te bouwen.
|
|
121
|
+
*/
|
|
122
|
+
export async function printPdf(input) {
|
|
123
|
+
const base64 = (input.pdfBase64 ?? "").replace(/^data:application\/pdf;base64,/i, "").trim();
|
|
124
|
+
if (!base64 && !input.pdfUrl)
|
|
125
|
+
throw new Error("Geef een PDF mee via pdfBase64 of pdfUrl.");
|
|
126
|
+
const printerId = input.printerId ??
|
|
127
|
+
(await printerVoorDocumenttype(input.documenttype, input.papierformaat));
|
|
128
|
+
if (!printerId) {
|
|
129
|
+
throw new Error(`Geen printer gekoppeld voor ${input.documenttype} — stel dit in bij Layouts en printers.`);
|
|
130
|
+
}
|
|
131
|
+
const jobId = await zetInWachtrij({
|
|
132
|
+
layout_id: null,
|
|
133
|
+
printer_id: printerId,
|
|
134
|
+
documenttype: input.documenttype,
|
|
135
|
+
documentnaam: input.documentnaam,
|
|
136
|
+
kopieen: input.kopieen ?? 1,
|
|
137
|
+
payload: input.payload ?? {},
|
|
138
|
+
is_herprint: input.isHerprint ?? false,
|
|
139
|
+
...(base64 ? { pdf_base64: base64 } : {}),
|
|
140
|
+
...(input.pdfUrl ? { pdf_url: input.pdfUrl } : {}),
|
|
141
|
+
});
|
|
142
|
+
if (!jobId)
|
|
143
|
+
throw new DubbeleAanvraagFout();
|
|
144
|
+
return { jobId };
|
|
145
|
+
}
|
|
146
|
+
/**
|
|
147
|
+
* Print eigen opmaak. Er wordt bewust géén layout meegegeven: een gekoppelde
|
|
148
|
+
* layout wint altijd van meegestuurde HTML.
|
|
149
|
+
*/
|
|
150
|
+
export async function printHtml(input) {
|
|
151
|
+
if (!input.html || input.html.trim().length < 40)
|
|
152
|
+
throw new Error("Er is geen opmaak meegegeven.");
|
|
153
|
+
if (!input.printerId)
|
|
154
|
+
throw new Error("Kies een printer: een HTML-opdracht heeft geen layout.");
|
|
155
|
+
const jobId = await zetInWachtrij({
|
|
156
|
+
layout_id: null,
|
|
157
|
+
printer_id: input.printerId,
|
|
158
|
+
documenttype: input.documenttype,
|
|
159
|
+
documentnaam: input.documentnaam,
|
|
160
|
+
kopieen: input.kopieen ?? 1,
|
|
161
|
+
payload: input.payload ?? {},
|
|
162
|
+
is_herprint: input.isHerprint ?? false,
|
|
163
|
+
render_html: input.html,
|
|
164
|
+
});
|
|
165
|
+
if (!jobId)
|
|
166
|
+
throw new DubbeleAanvraagFout();
|
|
167
|
+
return { jobId };
|
|
168
|
+
}
|
|
169
|
+
/**
|
|
170
|
+
* De printer die bij een werkplek hoort. Een werkplek is de naam van de
|
|
171
|
+
* computer waarop het printprogramma draait; printers worden daaraan gekoppeld
|
|
172
|
+
* via hun locatie of systeemnaam.
|
|
173
|
+
*/
|
|
174
|
+
export async function printerVoorWerkplek(werkplek, papierformaat) {
|
|
175
|
+
const naam = (werkplek ?? "").trim();
|
|
176
|
+
if (!naam)
|
|
177
|
+
return null;
|
|
178
|
+
const { data } = await supabase
|
|
179
|
+
.from("printers")
|
|
180
|
+
.select("id, naam, locatie, systeemnaam, papierformaat, actief")
|
|
181
|
+
.eq("actief", true)
|
|
182
|
+
.order("naam");
|
|
183
|
+
const kandidaten = arr(data).filter((p) => (p.locatie ?? "").trim().toLowerCase() === naam.toLowerCase() ||
|
|
184
|
+
(p.systeemnaam ?? "").trim().toLowerCase() === naam.toLowerCase());
|
|
185
|
+
if (!kandidaten.length)
|
|
186
|
+
return null;
|
|
187
|
+
if (papierformaat) {
|
|
188
|
+
const match = kandidaten.find((p) => p.papierformaat === papierformaat);
|
|
189
|
+
if (match)
|
|
190
|
+
return match.id;
|
|
191
|
+
}
|
|
192
|
+
return kandidaten[0].id;
|
|
193
|
+
}
|
|
194
|
+
/**
|
|
195
|
+
* Volgt één printopdracht live. Geeft een functie terug om te stoppen.
|
|
196
|
+
* Zo hoeft geen enkele andere module zelf een realtime-abonnement te bouwen.
|
|
197
|
+
*/
|
|
198
|
+
export function volgJobStatus(jobId, cb) {
|
|
199
|
+
let gestopt = false;
|
|
200
|
+
const lees = async () => {
|
|
201
|
+
const { data } = await supabase
|
|
202
|
+
.from("print_jobs")
|
|
203
|
+
.select("id, status, documentnaam, foutmelding")
|
|
204
|
+
.eq("id", jobId)
|
|
205
|
+
.maybeSingle();
|
|
206
|
+
if (data && !gestopt)
|
|
207
|
+
cb(data);
|
|
208
|
+
};
|
|
209
|
+
void lees();
|
|
210
|
+
const kanaal = supabase
|
|
211
|
+
.channel(`print_job_${jobId}`)
|
|
212
|
+
.on("postgres_changes", { event: "UPDATE", schema: "public", table: "print_jobs", filter: `id=eq.${jobId}` }, (payload) => {
|
|
213
|
+
if (!gestopt)
|
|
214
|
+
cb(payload.new);
|
|
72
215
|
})
|
|
73
|
-
.
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
// blijft de opdracht gewoon wachtend staan voor een volgende poging.
|
|
79
|
-
void startWachtrijVerwerking();
|
|
80
|
-
return { jobId: data.id, layoutId: layout.id, printerId };
|
|
216
|
+
.subscribe();
|
|
217
|
+
return () => {
|
|
218
|
+
gestopt = true;
|
|
219
|
+
void supabase.removeChannel(kanaal);
|
|
220
|
+
};
|
|
81
221
|
}
|
|
82
222
|
/** Zet de wachtrijverwerking op de achtergrond in gang (best effort). */
|
|
83
223
|
async function startWachtrijVerwerking() {
|
|
84
224
|
try {
|
|
85
|
-
const {
|
|
86
|
-
await
|
|
225
|
+
const { vraagWachtrijRonde } = await import("./queueTickClient.js");
|
|
226
|
+
await vraagWachtrijRonde();
|
|
87
227
|
}
|
|
88
228
|
catch {
|
|
89
229
|
// Geen probleem: de cron of de printwachtrij-pagina pakt het op.
|
|
@@ -1,4 +1,13 @@
|
|
|
1
|
+
import type { SupabaseClient } from "@supabase/supabase-js";
|
|
1
2
|
type Job = Record<string, any>;
|
|
3
|
+
/** De databaseclient die de shell aanlevert. De module maakt er zelf nooit een. */
|
|
4
|
+
export type PrintDb = SupabaseClient<any, any, any>;
|
|
5
|
+
/**
|
|
6
|
+
* Goedkope controle of de aangeleverde client de printtabellen kan lezen.
|
|
7
|
+
* Vervangt de oude controle op omgevingsvariabelen: die kende de module niet
|
|
8
|
+
* meer nu de shell de client levert.
|
|
9
|
+
*/
|
|
10
|
+
export declare function controleerClient(db: PrintDb): Promise<string | null>;
|
|
2
11
|
type LayoutKeuze = {
|
|
3
12
|
layout: Job | null;
|
|
4
13
|
expliciet: boolean;
|
|
@@ -7,13 +16,13 @@ type LayoutKeuze = {
|
|
|
7
16
|
* Haalt een kant-en-klare PDF van de opdracht op (klantstickers, standaard
|
|
8
17
|
* Floriday-documenten). Die gaat ongewijzigd naar de printer.
|
|
9
18
|
*/
|
|
10
|
-
export declare function kantEnKlarePdf(job: Job): Promise<string | null>;
|
|
19
|
+
export declare function kantEnKlarePdf(_db: PrintDb, job: Job): Promise<string | null>;
|
|
11
20
|
/**
|
|
12
21
|
* Bouwt de HTML van de opdracht.
|
|
13
22
|
* Volgorde: gekoppelde layout wint > meegestuurde HTML > actieve layout van
|
|
14
23
|
* het documenttype. Zo werkt een bijgewerkte layout meteen door.
|
|
15
24
|
*/
|
|
16
|
-
export declare function bouwHtml(job: Job, keuze: LayoutKeuze): Promise<string>;
|
|
25
|
+
export declare function bouwHtml(db: PrintDb, job: Job, keuze: LayoutKeuze): Promise<string>;
|
|
17
26
|
/**
|
|
18
27
|
* Controleert of het document echt iets afdrukt. Zonder deze controle kan een
|
|
19
28
|
* lege layout of een opdracht zonder gegevens een blanco vel opleveren.
|
|
@@ -26,6 +35,6 @@ export interface WachtrijResultaat {
|
|
|
26
35
|
bijgewerkt: number;
|
|
27
36
|
}
|
|
28
37
|
/** Eén ronde: wachtende opdrachten afdrukken en statussen bijwerken. */
|
|
29
|
-
export declare function verwerkWachtrij(max?: number): Promise<WachtrijResultaat>;
|
|
38
|
+
export declare function verwerkWachtrij(db: PrintDb, max?: number): Promise<WachtrijResultaat>;
|
|
30
39
|
export {};
|
|
31
40
|
//# sourceMappingURL=printQueue.server.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"printQueue.server.d.ts","sourceRoot":"","sources":["../../src/lib/printQueue.server.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"printQueue.server.d.ts","sourceRoot":"","sources":["../../src/lib/printQueue.server.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAc5D,KAAK,GAAG,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;AAE/B,mFAAmF;AACnF,MAAM,MAAM,OAAO,GAAG,cAAc,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;AAEpD;;;;GAIG;AACH,wBAAsB,gBAAgB,CAAC,EAAE,EAAE,OAAO,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAW1E;AAeD,KAAK,WAAW,GAAG;IAAE,MAAM,EAAE,GAAG,GAAG,IAAI,CAAC;IAAC,SAAS,EAAE,OAAO,CAAA;CAAE,CAAC;AAqC9D;;;GAGG;AACH,wBAAsB,cAAc,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,GAAG,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CA+BnF;AAqED;;;;GAIG;AACH,wBAAsB,QAAQ,CAAC,EAAE,EAAE,OAAO,EAAE,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,WAAW,GAAG,OAAO,CAAC,MAAM,CAAC,CAoHzF;AAGD;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAY1D;AA6ID,MAAM,WAAW,iBAAiB;IAChC,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,wEAAwE;AACxE,wBAAsB,eAAe,CAAC,EAAE,EAAE,OAAO,EAAE,GAAG,SAAI,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAmBtF"}
|