@flowselections/layout-maker 1.68.1 → 1.69.1
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/integrations/supabase/types.d.ts +86 -0
- package/dist-lib/integrations/supabase/types.d.ts.map +1 -1
- package/dist-lib/lib/printQueue.server.d.ts +5 -0
- package/dist-lib/lib/printQueue.server.d.ts.map +1 -1
- package/dist-lib/lib/printQueue.server.js +33 -0
- package/dist-lib/lib/standaardenBron.d.ts.map +1 -1
- package/dist-lib/lib/standaardenBron.js +16 -0
- package/dist-lib/lib/versie.generated.d.ts +1 -1
- package/dist-lib/lib/versie.generated.js +1 -1
- package/package.json +1 -1
- package/sql/print-schema.sql +102 -1
|
@@ -65,6 +65,11 @@ export declare function kantEnKlarePdf(db: PrintDb, job: Job): Promise<string |
|
|
|
65
65
|
* Volgorde: gekoppelde layout wint > meegestuurde HTML > actieve layout van
|
|
66
66
|
* het documenttype. Zo werkt een bijgewerkte layout meteen door.
|
|
67
67
|
*/
|
|
68
|
+
/** Leest payload.sticker_afbeelding; null als niet volledig. */
|
|
69
|
+
export declare function stickerAfbeeldingUitPayload(payload: unknown): {
|
|
70
|
+
bucket: string;
|
|
71
|
+
pad: string;
|
|
72
|
+
} | null;
|
|
68
73
|
export declare function bouwHtml(db: PrintDb, job: Job, keuze: LayoutKeuze, uitkomst?: BronUitkomst): Promise<string>;
|
|
69
74
|
/**
|
|
70
75
|
* Controleert of het document echt iets afdrukt. Zonder deze controle kan een
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"printQueue.server.d.ts","sourceRoot":"","sources":["../../src/lib/printQueue.server.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAwC5D,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;AAiFD,2EAA2E;AAC3E,qBAAa,gBAAiB,SAAQ,KAAK;IAChC,IAAI,SAAsB;CACpC;AAED,+EAA+E;AAC/E,qBAAa,iBAAkB,SAAQ,KAAK;IACjC,IAAI,SAAuB;CACrC;AAED,oFAAoF;AACpF,qBAAa,kBAAmB,SAAQ,gBAAgB;IAC7C,IAAI,SAAwB;CACtC;AAED;;;;;GAKG;AACH,MAAM,MAAM,WAAW,GAAG;IAAE,MAAM,EAAE,GAAG,GAAG,IAAI,CAAC;IAAC,WAAW,EAAE,OAAO,CAAA;CAAE,CAAC;AAEvE,yEAAyE;AACzE,MAAM,MAAM,aAAa,GAAG,YAAY,GAAG,cAAc,GAAG,aAAa,GAAG,aAAa,GAAG,eAAe,CAAC;AAE5G,6EAA6E;AAC7E,MAAM,MAAM,YAAY,GAAG;IAAE,IAAI,EAAE,aAAa,CAAA;CAAE,CAAC;AAcnD,4EAA4E;AAC5E,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,OAAO,GAAG,MAAM,CAI7D;AASD,sEAAsE;AACtE,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,GAAG,GAAG,MAAM,CAQnD;AAkCD,yEAAyE;AACzE,wBAAgB,cAAc,CAAC,GAAG,EAAE;IAAE,OAAO,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,OAAO,CAIlE;AAED,wFAAwF;AACxF,wBAAgB,cAAc,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,CAAC,CAe7C;AA8ND;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,SAAS,GAAG;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAQlH;AAWD;;;GAGG;AACH,wBAAsB,cAAc,CAAC,EAAE,EAAE,OAAO,EAAE,GAAG,EAAE,GAAG,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAqClF;AA2UD;;;;GAIG;AACH,wBAAsB,QAAQ,CAC5B,EAAE,EAAE,OAAO,EACX,GAAG,EAAE,GAAG,EACR,KAAK,EAAE,WAAW,EAClB,QAAQ,CAAC,EAAE,YAAY,GACtB,OAAO,CAAC,MAAM,CAAC,
|
|
1
|
+
{"version":3,"file":"printQueue.server.d.ts","sourceRoot":"","sources":["../../src/lib/printQueue.server.ts"],"names":[],"mappings":"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"}
|
|
@@ -817,6 +817,32 @@ async function logosVoor(db, layout) {
|
|
|
817
817
|
* Volgorde: gekoppelde layout wint > meegestuurde HTML > actieve layout van
|
|
818
818
|
* het documenttype. Zo werkt een bijgewerkte layout meteen door.
|
|
819
819
|
*/
|
|
820
|
+
/** Leest payload.sticker_afbeelding; null als niet volledig. */
|
|
821
|
+
export function stickerAfbeeldingUitPayload(payload) {
|
|
822
|
+
const p = (payload ?? {});
|
|
823
|
+
const a = p["sticker_afbeelding"];
|
|
824
|
+
const bucket = typeof a?.["bucket"] === "string" ? a["bucket"].trim() : "";
|
|
825
|
+
const pad = typeof a?.["pad"] === "string" ? a["pad"].trim() : "";
|
|
826
|
+
return bucket && pad ? { bucket, pad } : null;
|
|
827
|
+
}
|
|
828
|
+
async function eigenStickerHtml(db, p, breedteMm, hoogteMm) {
|
|
829
|
+
const bron = stickerAfbeeldingUitPayload(p);
|
|
830
|
+
if (!bron) {
|
|
831
|
+
throw new GeenDocumentFout("Eigen sticker: er is geen stickerafbeelding meegestuurd (payload.sticker_afbeelding met bucket en pad).");
|
|
832
|
+
}
|
|
833
|
+
const { data, error } = await db
|
|
834
|
+
.storage.from(bron.bucket).download(bron.pad);
|
|
835
|
+
if (error || !data) {
|
|
836
|
+
throw new GeenDocumentFout(`Eigen sticker: afbeelding niet gevonden in de opslag (${bron.bucket}): ${error?.message ?? "leeg bestand"}`);
|
|
837
|
+
}
|
|
838
|
+
const bytes = new Uint8Array(await data.arrayBuffer());
|
|
839
|
+
let ruw = "";
|
|
840
|
+
for (let i = 0; i < bytes.length; i += 8192)
|
|
841
|
+
ruw += String.fromCharCode(...bytes.subarray(i, i + 8192));
|
|
842
|
+
const type = data.type || (bron.pad.toLowerCase().endsWith(".png") ? "image/png" : "image/jpeg");
|
|
843
|
+
const src = `data:${type};base64,${btoa(ruw)}`;
|
|
844
|
+
return `<!doctype html><html><head><meta charset="utf-8"><style>@page{size:${breedteMm}mm ${hoogteMm}mm;margin:0}html,body{margin:0;padding:0}img{display:block;width:${breedteMm}mm;height:${hoogteMm}mm;object-fit:contain}</style></head><body><img src="${src}" alt="Sticker"></body></html>`;
|
|
845
|
+
}
|
|
820
846
|
export async function bouwHtml(db, job, keuze, uitkomst) {
|
|
821
847
|
let layout = keuze.layout;
|
|
822
848
|
const noteer = (bron) => {
|
|
@@ -848,6 +874,13 @@ export async function bouwHtml(db, job, keuze, uitkomst) {
|
|
|
848
874
|
const breedteMm = liggend ? h : b;
|
|
849
875
|
const hoogteMm = liggend ? b : h;
|
|
850
876
|
const cfg = (layout.config ?? {});
|
|
877
|
+
// Eigen sticker (fs.eigen_sticker): tekent de afbeelding uit
|
|
878
|
+
// payload.sticker_afbeelding = { bucket, pad } op ware grootte.
|
|
879
|
+
if (cfg.eigen_sticker && typeof cfg.eigen_sticker === "object") {
|
|
880
|
+
const html = await eigenStickerHtml(db, p, breedteMm, hoogteMm);
|
|
881
|
+
noteer("eigen_layout");
|
|
882
|
+
return html;
|
|
883
|
+
}
|
|
851
884
|
// Stickers met "kies altijd de layout van de klant": meegestuurde opmaak van
|
|
852
885
|
// de klant wint. Is er niets meegestuurd, dan bepaalt de terugvalkeuze of we
|
|
853
886
|
// deze layout gebruiken of de opdracht netjes laten mislukken.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"standaardenBron.d.ts","sourceRoot":"","sources":["../../src/lib/standaardenBron.ts"],"names":[],"mappings":"AAQA,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,EAAE,MAAM,CAAC;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACjC;AAED,eAAO,MAAM,gBAAgB,EAAE,aAAa,
|
|
1
|
+
{"version":3,"file":"standaardenBron.d.ts","sourceRoot":"","sources":["../../src/lib/standaardenBron.ts"],"names":[],"mappings":"AAQA,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,EAAE,MAAM,CAAC;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACjC;AAED,eAAO,MAAM,gBAAgB,EAAE,aAAa,EAsP3C,CAAC;AAMF,8GAA8G;AAC9G,wBAAgB,cAAc,IAAI,MAAM,CAevC"}
|
|
@@ -234,6 +234,22 @@ export const STANDAARDEN_BRON = [
|
|
|
234
234
|
"breedte_mm": 210,
|
|
235
235
|
"hoogte_mm": 297,
|
|
236
236
|
"config": {}
|
|
237
|
+
},
|
|
238
|
+
{
|
|
239
|
+
"sleutel": "fs.eigen_sticker",
|
|
240
|
+
"versie": 1,
|
|
241
|
+
"documenttype": "sticker",
|
|
242
|
+
"naam": "Eigen sticker",
|
|
243
|
+
"omschrijving": "Sticker voor eigen orders: drukt de stickerafbeelding van de klant (payload.sticker_afbeelding) op ware grootte af. Volledig aanpasbaar.",
|
|
244
|
+
"papierformaat": "LABEL_100x62",
|
|
245
|
+
"breedte_mm": 100,
|
|
246
|
+
"hoogte_mm": 62,
|
|
247
|
+
"config": {
|
|
248
|
+
"eigen_sticker": {
|
|
249
|
+
"afbeelding": "payload.sticker_afbeelding",
|
|
250
|
+
"passend": "ware_grootte"
|
|
251
|
+
}
|
|
252
|
+
}
|
|
237
253
|
}
|
|
238
254
|
];
|
|
239
255
|
function lit(s) {
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export declare const PAKKET_VERSIE = "1.
|
|
1
|
+
export declare const PAKKET_VERSIE = "1.69.1";
|
|
2
2
|
//# sourceMappingURL=versie.generated.d.ts.map
|
|
@@ -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.
|
|
2
|
+
export const PAKKET_VERSIE = "1.69.1";
|
package/package.json
CHANGED
package/sql/print-schema.sql
CHANGED
|
@@ -3008,7 +3008,8 @@ INSERT INTO public.layout_standaarden AS s (sleutel, versie, documenttype, naam,
|
|
|
3008
3008
|
VALUES
|
|
3009
3009
|
('fs.pakbon', 2, 'pakbon', 'Pakbon', 'Standaarddocument voor eigen orders, met kolom Sticker. Volledig aanpasbaar — aanpassen kan per klant.', 'A4', 210, 297, '{"pakbon":{"secties":[{"id":"logo-std","type":"logo","titel":"Logo","zichtbaar":true,"opties":{"uitlijning":"left","hoogte":18},"condities":[]},{"id":"bedrijfsgegevens-std","type":"bedrijfsgegevens","titel":"Bedrijfsgegevens","zichtbaar":true,"opties":{"toonNaam":true,"toonAdres":true,"toonContact":true,"toonKvk":false},"condities":[]},{"id":"klantgegevens-std","type":"klantgegevens","titel":"Klantgegevens","zichtbaar":true,"opties":{"toonKlantnummer":true,"toonContact":true,"toonReferentie":true},"condities":[]},{"id":"afleveradres-std","type":"afleveradres","titel":"Afleveradres","zichtbaar":true,"opties":{"toonLand":true},"condities":[]},{"id":"orderinformatie-std","type":"orderinformatie","titel":"Orderinformatie","zichtbaar":true,"opties":{"toonOrdernummer":true,"toonDatum":true,"toonLeverdatum":true,"toonReferentie":true},"condities":[]},{"id":"pickmethode-std","type":"pickmethode","titel":"Pickmethode","zichtbaar":true,"opties":{"methode":"kar","kop":"Te verzamelen fusten — karindeling zelf bepalen","velden":["artikelnummer","artikelnaam","potmaat","kleur","locatie","fustsoort","planten_per_fust","fust_aantal","aantal"],"toonFusthoogte":true,"toonTotaal":true,"toonBarcode":true,"barcodeHoogte":15},"condities":[]},{"id":"karren-std","type":"karren","titel":"Karren","zichtbaar":true,"opties":{"modus":"pagina","bundel_identiek":true,"velden":["karnummer","lagen","producten"],"scheiding":"kop","koptekst":"KAR {kar}","kleur":"#e8eef7"},"condities":[]},{"id":"lagen-std","type":"lagen","titel":"Lagen","zichtbaar":true,"opties":{"modus":"apart","velden":["laagnummer","belading","producten"],"koptekst":"Laag {laag}"},"condities":[]},{"id":"producten-std","type":"producten","titel":"Producten op een laag","zichtbaar":true,"opties":{"weergave":"tabel","velden":["artikelnummer","artikelnaam","potmaat","aantal","sticker"],"toonSamenstelling":true,"onderdeelVelden":["artikelnaam","kleur","potmaat","aantal"],"groeperen":false,"kop_eenmalig":true,"sortering":"eigen"},"condities":[]},{"id":"fusten-std","type":"fusten","titel":"Fusten","zichtbaar":true,"opties":{"modus":"totaal","velden":["fusttype","aantal"]},"condities":[]},{"id":"totalen-std","type":"totalen","titel":"Totalen","zichtbaar":true,"opties":{"velden":["producten","karren","lagen"],"uitlijning":"right","elke_pagina":false,"toon_paginanummer":false},"condities":[]},{"id":"handtekening-std","type":"handtekening","titel":"Handtekening","zichtbaar":true,"opties":{"label":"Voor ontvangst getekend","toonNaam":true,"toonDatum":true,"toonBarcode":true},"condities":[]}]}}'::jsonb),
|
|
3010
3010
|
('fs.afleverbrief_bvo', 1, 'afleverbrief', 'Afleverbrief (BVO)', 'Verzendbrief voor eigen (niet-Floriday) orders. Volledig aanpasbaar.', 'A4', 210, 297, '{}'::jsonb),
|
|
3011
|
-
('fs.productiebon', 1, 'productiebon', 'Productiebon', 'Standaard productiebon met de vaste blokindeling. Volledig aanpasbaar.', 'A4', 210, 297, '{}'::jsonb)
|
|
3011
|
+
('fs.productiebon', 1, 'productiebon', 'Productiebon', 'Standaard productiebon met de vaste blokindeling. Volledig aanpasbaar.', 'A4', 210, 297, '{}'::jsonb),
|
|
3012
|
+
('fs.eigen_sticker', 1, 'sticker', 'Eigen sticker', 'Sticker voor eigen orders: drukt de stickerafbeelding van de klant (payload.sticker_afbeelding) op ware grootte af. Volledig aanpasbaar.', 'LABEL_100x62', 100, 62, '{"eigen_sticker":{"afbeelding":"payload.sticker_afbeelding","passend":"ware_grootte"}}'::jsonb)
|
|
3012
3013
|
ON CONFLICT (sleutel) DO UPDATE SET
|
|
3013
3014
|
versie = EXCLUDED.versie, documenttype = EXCLUDED.documenttype, naam = EXCLUDED.naam,
|
|
3014
3015
|
omschrijving = EXCLUDED.omschrijving, papierformaat = EXCLUDED.papierformaat,
|
|
@@ -3203,3 +3204,103 @@ do $$ begin
|
|
|
3203
3204
|
if to_regclass('public.invoice_branding_settings') is null then raise notice 'layout-maker: invoice_branding_settings ontbreekt; voorinvullen uit factuurgegevens overgeslagen'; end if;
|
|
3204
3205
|
if to_regprocedure('public.floriday_eigen_organisatie()') is null then raise notice 'layout-maker: floriday_eigen_organisatie() ontbreekt; voorinvullen uit Floriday overgeslagen'; end if;
|
|
3205
3206
|
end $$;
|
|
3207
|
+
|
|
3208
|
+
-- 1.69.0: automatische documentkeuze voor alle modules
|
|
3209
|
+
CREATE OR REPLACE FUNCTION public.layout_voor_document(p_order_id uuid, p_documenttype text)
|
|
3210
|
+
RETURNS jsonb
|
|
3211
|
+
LANGUAGE plpgsql
|
|
3212
|
+
STABLE SECURITY DEFINER
|
|
3213
|
+
SET search_path TO 'public'
|
|
3214
|
+
AS $function$
|
|
3215
|
+
DECLARE
|
|
3216
|
+
v_soort text := lower(btrim(coalesce(p_documenttype, '')));
|
|
3217
|
+
v_bestaat boolean;
|
|
3218
|
+
v_floriday boolean;
|
|
3219
|
+
v_type text;
|
|
3220
|
+
v_bron text;
|
|
3221
|
+
v_n int;
|
|
3222
|
+
v_l public.document_layouts%ROWTYPE;
|
|
3223
|
+
v_naam text;
|
|
3224
|
+
BEGIN
|
|
3225
|
+
IF v_soort NOT IN ('pakbon','productiebon','verzenddocument','afleverbrief','veilingbrief','sticker','traysticker','eigen_sticker') THEN
|
|
3226
|
+
RETURN jsonb_build_object('ok', false, 'layout_id', NULL, 'bron', NULL, 'documenttype', nullif(v_soort,''),
|
|
3227
|
+
'breedte_mm', NULL, 'hoogte_mm', NULL, 'reden', 'Onbekende documentsoort: ' || coalesce(nullif(v_soort,''), '(leeg)') || '.');
|
|
3228
|
+
END IF;
|
|
3229
|
+
SELECT true, coalesce(o.order_source = 'floriday', false) INTO v_bestaat, v_floriday
|
|
3230
|
+
FROM public.orders o WHERE o.id = p_order_id;
|
|
3231
|
+
IF v_bestaat IS NULL THEN
|
|
3232
|
+
RETURN jsonb_build_object('ok', false, 'layout_id', NULL, 'bron', NULL, 'documenttype', v_soort,
|
|
3233
|
+
'breedte_mm', NULL, 'hoogte_mm', NULL, 'reden', 'Order niet gevonden.');
|
|
3234
|
+
END IF;
|
|
3235
|
+
|
|
3236
|
+
IF v_soort IN ('pakbon','productiebon') THEN
|
|
3237
|
+
v_type := v_soort; v_bron := 'eigen';
|
|
3238
|
+
ELSIF v_soort = 'verzenddocument' THEN
|
|
3239
|
+
IF v_floriday THEN
|
|
3240
|
+
RETURN jsonb_build_object('ok', false, 'layout_id', NULL, 'bron', 'floriday', 'documenttype', 'verzenddocument',
|
|
3241
|
+
'breedte_mm', NULL, 'hoogte_mm', NULL,
|
|
3242
|
+
'reden', 'Layouts kan niet eenduidig zien of Floriday een afleverbrief of een veilingbrief aan deze order heeft gekoppeld. Vraag het document op als afleverbrief of veilingbrief.');
|
|
3243
|
+
END IF;
|
|
3244
|
+
v_type := 'afleverbrief'; v_bron := 'eigen';
|
|
3245
|
+
ELSIF v_soort = 'afleverbrief' THEN
|
|
3246
|
+
v_type := 'afleverbrief'; v_bron := CASE WHEN v_floriday THEN 'floriday' ELSE 'eigen' END;
|
|
3247
|
+
ELSIF v_soort = 'veilingbrief' THEN
|
|
3248
|
+
IF NOT v_floriday THEN
|
|
3249
|
+
RETURN jsonb_build_object('ok', false, 'layout_id', NULL, 'bron', 'eigen', 'documenttype', 'veilingbrief',
|
|
3250
|
+
'breedte_mm', NULL, 'hoogte_mm', NULL,
|
|
3251
|
+
'reden', 'Een veilingbrief hoort alleen bij een Floriday-order; voor een eigen order wordt de afleverbrief gebruikt.');
|
|
3252
|
+
END IF;
|
|
3253
|
+
v_type := 'veilingbrief'; v_bron := 'floriday';
|
|
3254
|
+
ELSIF v_soort = 'sticker' THEN
|
|
3255
|
+
IF NOT v_floriday THEN
|
|
3256
|
+
RETURN jsonb_build_object('ok', false, 'layout_id', NULL, 'bron', 'eigen', 'documenttype', 'sticker',
|
|
3257
|
+
'breedte_mm', NULL, 'hoogte_mm', NULL,
|
|
3258
|
+
'reden', 'Dit is een eigen order; vraag een eigen sticker op (eigen_sticker).');
|
|
3259
|
+
END IF;
|
|
3260
|
+
v_type := 'sticker'; v_bron := 'floriday';
|
|
3261
|
+
ELSIF v_soort = 'eigen_sticker' THEN
|
|
3262
|
+
IF v_floriday THEN
|
|
3263
|
+
RETURN jsonb_build_object('ok', false, 'layout_id', NULL, 'bron', 'floriday', 'documenttype', 'sticker',
|
|
3264
|
+
'breedte_mm', NULL, 'hoogte_mm', NULL,
|
|
3265
|
+
'reden', 'Dit is een Floriday-order; vraag de Floriday-sticker op (sticker).');
|
|
3266
|
+
END IF;
|
|
3267
|
+
v_type := 'sticker'; v_bron := 'eigen';
|
|
3268
|
+
ELSE -- traysticker
|
|
3269
|
+
v_type := 'traysticker'; v_bron := CASE WHEN v_floriday THEN 'floriday' ELSE 'eigen' END;
|
|
3270
|
+
END IF;
|
|
3271
|
+
|
|
3272
|
+
IF v_bron = 'floriday' THEN
|
|
3273
|
+
SELECT count(*) INTO v_n FROM public.document_layouts
|
|
3274
|
+
WHERE actief IS TRUE AND bron = 'floriday' AND documenttype::text = v_type;
|
|
3275
|
+
IF v_n = 1 THEN
|
|
3276
|
+
SELECT * INTO v_l FROM public.document_layouts
|
|
3277
|
+
WHERE actief IS TRUE AND bron = 'floriday' AND documenttype::text = v_type;
|
|
3278
|
+
END IF;
|
|
3279
|
+
ELSE
|
|
3280
|
+
SELECT count(*) INTO v_n FROM public.document_layouts
|
|
3281
|
+
WHERE actief IS TRUE AND is_standaard IS TRUE AND coalesce(bron,'eigen') = 'eigen' AND documenttype::text = v_type;
|
|
3282
|
+
IF v_n = 1 THEN
|
|
3283
|
+
SELECT * INTO v_l FROM public.document_layouts
|
|
3284
|
+
WHERE actief IS TRUE AND is_standaard IS TRUE AND coalesce(bron,'eigen') = 'eigen' AND documenttype::text = v_type;
|
|
3285
|
+
END IF;
|
|
3286
|
+
END IF;
|
|
3287
|
+
|
|
3288
|
+
IF v_l.id IS NULL THEN
|
|
3289
|
+
v_naam := CASE v_type WHEN 'afleverbrief' THEN 'afleverbrief' WHEN 'veilingbrief' THEN 'veilingbrief'
|
|
3290
|
+
WHEN 'productiebon' THEN 'productiebon' WHEN 'pakbon' THEN 'pakbon' WHEN 'traysticker' THEN 'traysticker' ELSE 'sticker' END;
|
|
3291
|
+
RETURN jsonb_build_object('ok', false, 'layout_id', NULL, 'bron', v_bron, 'documenttype', v_type,
|
|
3292
|
+
'breedte_mm', NULL, 'hoogte_mm', NULL,
|
|
3293
|
+
'reden', CASE
|
|
3294
|
+
WHEN v_type = 'traysticker' AND v_bron = 'eigen' AND v_n = 0 THEN 'Voor eigen orders is geen traysticker ingesteld.'
|
|
3295
|
+
WHEN v_bron = 'floriday' AND v_n > 1 THEN 'Er zijn meerdere actieve Floriday-layouts voor ' || v_naam || '. Zet er één uit in Layouts en printers.'
|
|
3296
|
+
WHEN v_bron = 'floriday' THEN 'Geen actieve Floriday-layout voor ' || v_naam || '. Activeer de Floriday-systeemlayout in Layouts en printers.'
|
|
3297
|
+
WHEN v_n > 1 THEN 'Er zijn meerdere standaardlayouts voor ' || v_naam || '. Kies er één in Layouts en printers.'
|
|
3298
|
+
ELSE 'Maak of activeer een ' || v_naam || 'layout in Layouts en printers en maak deze standaard.' END);
|
|
3299
|
+
END IF;
|
|
3300
|
+
|
|
3301
|
+
RETURN jsonb_build_object('ok', true, 'layout_id', v_l.id, 'bron', v_bron, 'documenttype', v_type,
|
|
3302
|
+
'breedte_mm', v_l.breedte_mm, 'hoogte_mm', v_l.hoogte_mm, 'reden', NULL);
|
|
3303
|
+
END;
|
|
3304
|
+
$function$;
|
|
3305
|
+
REVOKE ALL ON FUNCTION public.layout_voor_document(uuid, text) FROM PUBLIC, anon;
|
|
3306
|
+
GRANT EXECUTE ON FUNCTION public.layout_voor_document(uuid, text) TO authenticated, service_role;
|