@flowselections/layout-maker 1.68.1 → 1.69.3
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/BedrijfsgegevensMelding.d.ts +3 -0
- package/dist-lib/components/BedrijfsgegevensMelding.d.ts.map +1 -0
- package/dist-lib/components/BedrijfsgegevensMelding.js +26 -0
- package/dist-lib/components/LayoutsPage.d.ts.map +1 -1
- package/dist-lib/components/LayoutsPage.js +2 -1
- package/dist-lib/integrations/supabase/types.d.ts +92 -0
- package/dist-lib/integrations/supabase/types.d.ts.map +1 -1
- package/dist-lib/lib/eigenDocumenten.d.ts +52 -0
- package/dist-lib/lib/eigenDocumenten.d.ts.map +1 -0
- package/dist-lib/lib/eigenDocumenten.js +182 -0
- package/dist-lib/lib/printQueue.server.d.ts +11 -0
- package/dist-lib/lib/printQueue.server.d.ts.map +1 -1
- package/dist-lib/lib/printQueue.server.js +121 -0
- package/dist-lib/lib/standaardLayouts.server.d.ts +5 -4
- package/dist-lib/lib/standaardLayouts.server.d.ts.map +1 -1
- package/dist-lib/lib/standaardLayouts.server.js +8 -38
- package/dist-lib/lib/standaardenBron.d.ts.map +1 -1
- package/dist-lib/lib/standaardenBron.js +58 -0
- package/dist-lib/lib/stickerFormaat.d.ts +1 -1
- package/dist-lib/lib/stickerFormaat.d.ts.map +1 -1
- 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 +109 -1
package/sql/print-schema.sql
CHANGED
|
@@ -3008,7 +3008,10 @@ 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),
|
|
3013
|
+
('fs.eigen_traysticker', 2, 'traysticker', 'Eigen traysticker', 'Eén sticker per fust voor eigen orders: logo/bedrijfsnaam, klant, order, leverdatum, afleverlocatie, fust x van y, product met aantal planten per fust (en onderdelen) en barcode. Elk veld aan/uit te zetten.', 'LABEL_100x62', 100, 62, '{"eigen_traysticker":{"velden":{"logo":true,"bedrijfsnaam":true,"klantnaam":true,"ordernummer":true,"leverdatum":true,"afleverlocatie":true,"tray":true,"producten":true,"barcode":true}}}'::jsonb),
|
|
3014
|
+
('fs.controlelijst', 1, 'controlelijst', 'Controlelijst karren', 'Controlelijst van de karren (Afhandeling). Kop met datum en aantal karren, tabel per kar en een voet om af te tekenen. Kolommen aan/uit te zetten.', 'A4', 210, 297, '{"controlelijst":{"kop":"Controlelijst karren","kolommen":["karnummer","klaarzetten_tekst","klantnaam","ordernummers","status_tekst"],"voet":["Gecontroleerd door","Datum en tijd","Handtekening"]}}'::jsonb)
|
|
3012
3015
|
ON CONFLICT (sleutel) DO UPDATE SET
|
|
3013
3016
|
versie = EXCLUDED.versie, documenttype = EXCLUDED.documenttype, naam = EXCLUDED.naam,
|
|
3014
3017
|
omschrijving = EXCLUDED.omschrijving, papierformaat = EXCLUDED.papierformaat,
|
|
@@ -3203,3 +3206,108 @@ do $$ begin
|
|
|
3203
3206
|
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
3207
|
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
3208
|
end $$;
|
|
3209
|
+
|
|
3210
|
+
-- 1.69.0: automatische documentkeuze voor alle modules
|
|
3211
|
+
CREATE OR REPLACE FUNCTION public.layout_voor_document(p_order_id uuid, p_documenttype text)
|
|
3212
|
+
RETURNS jsonb
|
|
3213
|
+
LANGUAGE plpgsql
|
|
3214
|
+
STABLE SECURITY DEFINER
|
|
3215
|
+
SET search_path TO 'public'
|
|
3216
|
+
AS $function$
|
|
3217
|
+
DECLARE
|
|
3218
|
+
v_soort text := lower(btrim(coalesce(p_documenttype, '')));
|
|
3219
|
+
v_bestaat boolean;
|
|
3220
|
+
v_floriday boolean;
|
|
3221
|
+
v_type text;
|
|
3222
|
+
v_bron text;
|
|
3223
|
+
v_n int;
|
|
3224
|
+
v_l public.document_layouts%ROWTYPE;
|
|
3225
|
+
v_naam text;
|
|
3226
|
+
BEGIN
|
|
3227
|
+
IF v_soort NOT IN ('pakbon','productiebon','verzenddocument','afleverbrief','veilingbrief','sticker','traysticker','eigen_sticker','controlelijst') THEN
|
|
3228
|
+
RETURN jsonb_build_object('ok', false, 'layout_id', NULL, 'bron', NULL, 'documenttype', nullif(v_soort,''),
|
|
3229
|
+
'breedte_mm', NULL, 'hoogte_mm', NULL, 'reden', 'Onbekende documentsoort: ' || coalesce(nullif(v_soort,''), '(leeg)') || '.');
|
|
3230
|
+
END IF;
|
|
3231
|
+
-- 1.69.2: de controlelijst hoort niet bij één order; p_order_id mag leeg zijn.
|
|
3232
|
+
IF v_soort = 'controlelijst' THEN
|
|
3233
|
+
v_bestaat := true; v_floriday := false;
|
|
3234
|
+
ELSE
|
|
3235
|
+
SELECT true, coalesce(o.order_source = 'floriday', false) INTO v_bestaat, v_floriday
|
|
3236
|
+
FROM public.orders o WHERE o.id = p_order_id;
|
|
3237
|
+
END IF;
|
|
3238
|
+
IF v_bestaat IS NULL THEN
|
|
3239
|
+
RETURN jsonb_build_object('ok', false, 'layout_id', NULL, 'bron', NULL, 'documenttype', v_soort,
|
|
3240
|
+
'breedte_mm', NULL, 'hoogte_mm', NULL, 'reden', 'Order niet gevonden.');
|
|
3241
|
+
END IF;
|
|
3242
|
+
|
|
3243
|
+
IF v_soort IN ('pakbon','productiebon','controlelijst') THEN
|
|
3244
|
+
v_type := v_soort; v_bron := 'eigen';
|
|
3245
|
+
ELSIF v_soort = 'verzenddocument' THEN
|
|
3246
|
+
IF v_floriday THEN
|
|
3247
|
+
RETURN jsonb_build_object('ok', false, 'layout_id', NULL, 'bron', 'floriday', 'documenttype', 'verzenddocument',
|
|
3248
|
+
'breedte_mm', NULL, 'hoogte_mm', NULL,
|
|
3249
|
+
'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.');
|
|
3250
|
+
END IF;
|
|
3251
|
+
v_type := 'afleverbrief'; v_bron := 'eigen';
|
|
3252
|
+
ELSIF v_soort = 'afleverbrief' THEN
|
|
3253
|
+
v_type := 'afleverbrief'; v_bron := CASE WHEN v_floriday THEN 'floriday' ELSE 'eigen' END;
|
|
3254
|
+
ELSIF v_soort = 'veilingbrief' THEN
|
|
3255
|
+
IF NOT v_floriday THEN
|
|
3256
|
+
RETURN jsonb_build_object('ok', false, 'layout_id', NULL, 'bron', 'eigen', 'documenttype', 'veilingbrief',
|
|
3257
|
+
'breedte_mm', NULL, 'hoogte_mm', NULL,
|
|
3258
|
+
'reden', 'Een veilingbrief hoort alleen bij een Floriday-order; voor een eigen order wordt de afleverbrief gebruikt.');
|
|
3259
|
+
END IF;
|
|
3260
|
+
v_type := 'veilingbrief'; v_bron := 'floriday';
|
|
3261
|
+
ELSIF v_soort = 'sticker' THEN
|
|
3262
|
+
IF NOT v_floriday THEN
|
|
3263
|
+
RETURN jsonb_build_object('ok', false, 'layout_id', NULL, 'bron', 'eigen', 'documenttype', 'sticker',
|
|
3264
|
+
'breedte_mm', NULL, 'hoogte_mm', NULL,
|
|
3265
|
+
'reden', 'Dit is een eigen order; vraag een eigen sticker op (eigen_sticker).');
|
|
3266
|
+
END IF;
|
|
3267
|
+
v_type := 'sticker'; v_bron := 'floriday';
|
|
3268
|
+
ELSIF v_soort = 'eigen_sticker' THEN
|
|
3269
|
+
IF v_floriday THEN
|
|
3270
|
+
RETURN jsonb_build_object('ok', false, 'layout_id', NULL, 'bron', 'floriday', 'documenttype', 'sticker',
|
|
3271
|
+
'breedte_mm', NULL, 'hoogte_mm', NULL,
|
|
3272
|
+
'reden', 'Dit is een Floriday-order; vraag de Floriday-sticker op (sticker).');
|
|
3273
|
+
END IF;
|
|
3274
|
+
v_type := 'sticker'; v_bron := 'eigen';
|
|
3275
|
+
ELSE -- traysticker
|
|
3276
|
+
v_type := 'traysticker'; v_bron := CASE WHEN v_floriday THEN 'floriday' ELSE 'eigen' END;
|
|
3277
|
+
END IF;
|
|
3278
|
+
|
|
3279
|
+
IF v_bron = 'floriday' THEN
|
|
3280
|
+
SELECT count(*) INTO v_n FROM public.document_layouts
|
|
3281
|
+
WHERE actief IS TRUE AND bron = 'floriday' 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 bron = 'floriday' AND documenttype::text = v_type;
|
|
3285
|
+
END IF;
|
|
3286
|
+
ELSE
|
|
3287
|
+
SELECT count(*) INTO v_n FROM public.document_layouts
|
|
3288
|
+
WHERE actief IS TRUE AND is_standaard IS TRUE AND coalesce(bron,'eigen') = 'eigen' AND documenttype::text = v_type;
|
|
3289
|
+
IF v_n = 1 THEN
|
|
3290
|
+
SELECT * INTO v_l FROM public.document_layouts
|
|
3291
|
+
WHERE actief IS TRUE AND is_standaard IS TRUE AND coalesce(bron,'eigen') = 'eigen' AND documenttype::text = v_type;
|
|
3292
|
+
END IF;
|
|
3293
|
+
END IF;
|
|
3294
|
+
|
|
3295
|
+
IF v_l.id IS NULL THEN
|
|
3296
|
+
v_naam := CASE v_type WHEN 'afleverbrief' THEN 'afleverbrief' WHEN 'veilingbrief' THEN 'veilingbrief'
|
|
3297
|
+
WHEN 'productiebon' THEN 'productiebon' WHEN 'pakbon' THEN 'pakbon' WHEN 'traysticker' THEN 'traysticker' WHEN 'controlelijst' THEN 'controlelijst' ELSE 'sticker' END;
|
|
3298
|
+
RETURN jsonb_build_object('ok', false, 'layout_id', NULL, 'bron', v_bron, 'documenttype', v_type,
|
|
3299
|
+
'breedte_mm', NULL, 'hoogte_mm', NULL,
|
|
3300
|
+
'reden', CASE
|
|
3301
|
+
WHEN v_type = 'traysticker' AND v_bron = 'eigen' AND v_n = 0 THEN 'Voor eigen orders is geen traysticker ingesteld.'
|
|
3302
|
+
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.'
|
|
3303
|
+
WHEN v_bron = 'floriday' THEN 'Geen actieve Floriday-layout voor ' || v_naam || '. Activeer de Floriday-systeemlayout in Layouts en printers.'
|
|
3304
|
+
WHEN v_n > 1 THEN 'Er zijn meerdere standaardlayouts voor ' || v_naam || '. Kies er één in Layouts en printers.'
|
|
3305
|
+
ELSE 'Maak of activeer een ' || v_naam || 'layout in Layouts en printers en maak deze standaard.' END);
|
|
3306
|
+
END IF;
|
|
3307
|
+
|
|
3308
|
+
RETURN jsonb_build_object('ok', true, 'layout_id', v_l.id, 'bron', v_bron, 'documenttype', v_type,
|
|
3309
|
+
'breedte_mm', v_l.breedte_mm, 'hoogte_mm', v_l.hoogte_mm, 'reden', NULL);
|
|
3310
|
+
END;
|
|
3311
|
+
$function$;
|
|
3312
|
+
REVOKE ALL ON FUNCTION public.layout_voor_document(uuid, text) FROM PUBLIC, anon;
|
|
3313
|
+
GRANT EXECUTE ON FUNCTION public.layout_voor_document(uuid, text) TO authenticated, service_role;
|