@flowselections/layout-maker 1.66.1 → 1.67.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 +87 -15
- package/dist-lib/integrations/supabase/types.d.ts.map +1 -1
- package/dist-lib/lib/orderData.server.d.ts +2 -0
- package/dist-lib/lib/orderData.server.d.ts.map +1 -1
- package/dist-lib/lib/orderData.server.js +28 -3
- 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 +2 -2
|
@@ -34,5 +34,7 @@ export declare function laadPakbonData(db: PrintDb, opties: {
|
|
|
34
34
|
* laadt de gegevens. Blijft bestaan zodat aanroepers niets hoeven te weten.
|
|
35
35
|
*/
|
|
36
36
|
export declare function laadOrderVanuitDatabase(db: PrintDb, payload: unknown): Promise<Rij | null>;
|
|
37
|
+
/** order_items.needs_sticker → "Ja" / "Nee"; onbekend → leeg. */
|
|
38
|
+
export declare function needsStickerTekst(waarde: unknown): string;
|
|
37
39
|
export {};
|
|
38
40
|
//# 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":"AAeA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAEnD,KAAK,GAAG,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;AAE/B,MAAM,MAAM,WAAW,GAAG,OAAO,GAAG,QAAQ,GAAG,MAAM,CAAC;AAwBtD,mEAAmE;AACnE,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,OAAO,GAAG,OAAO,CAKvD;AAED,+EAA+E;AAC/E,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,OAAO,GAAG;IACrD,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;CACvB,CAgCA;AAED;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,OAAO,EAAE,OAAO,GAAG;IAC7C,KAAK,EAAE,WAAW,CAAC;IACnB,EAAE,EAAE,MAAM,GAAG,IAAI,CAAC;IAClB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;CAC5B,CAMA;AAED;;;GAGG;AACH,wBAAsB,cAAc,CAClC,EAAE,EAAE,OAAO,EACX,MAAM,EAAE;IAAE,KAAK,EAAE,WAAW,CAAC;IAAC,EAAE,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,GAC7E,OAAO,CAAC,GAAG,GAAG,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"orderData.server.d.ts","sourceRoot":"","sources":["../../src/lib/orderData.server.ts"],"names":[],"mappings":"AAeA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAEnD,KAAK,GAAG,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;AAE/B,MAAM,MAAM,WAAW,GAAG,OAAO,GAAG,QAAQ,GAAG,MAAM,CAAC;AAwBtD,mEAAmE;AACnE,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,OAAO,GAAG,OAAO,CAKvD;AAED,+EAA+E;AAC/E,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,OAAO,GAAG;IACrD,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;CACvB,CAgCA;AAED;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,OAAO,EAAE,OAAO,GAAG;IAC7C,KAAK,EAAE,WAAW,CAAC;IACnB,EAAE,EAAE,MAAM,GAAG,IAAI,CAAC;IAClB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;CAC5B,CAMA;AAED;;;GAGG;AACH,wBAAsB,cAAc,CAClC,EAAE,EAAE,OAAO,EACX,MAAM,EAAE;IAAE,KAAK,EAAE,WAAW,CAAC;IAAC,EAAE,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,GAC7E,OAAO,CAAC,GAAG,GAAG,IAAI,CAAC,CAgoBrB;AAkHD;;;GAGG;AACH,wBAAsB,uBAAuB,CAAC,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,GAAG,GAAG,IAAI,CAAC,CAGhG;AAcD,iEAAiE;AACjE,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,OAAO,GAAG,MAAM,CAIzD"}
|
|
@@ -167,6 +167,9 @@ export async function laadPakbonData(db, opties) {
|
|
|
167
167
|
orders = arr(await veilig(() => db.from("orders").select("*").in("id", orderIds)));
|
|
168
168
|
}
|
|
169
169
|
}
|
|
170
|
+
// Quarantaineregels (quarantined_at gevuld) horen niet op de pakbon.
|
|
171
|
+
const quarantaineIds = new Set(regels.filter((r) => r["quarantined_at"] != null).map((r) => String(r["id"])));
|
|
172
|
+
regels = regels.filter((r) => r["quarantined_at"] == null);
|
|
170
173
|
karrenRijen.sort((a, b) => num(a["cart_number"]) - num(b["cart_number"]));
|
|
171
174
|
const eigenRegelIds = new Set(regels.map((r) => String(r["id"])));
|
|
172
175
|
const eigenOrderIds = new Set(orders.map((o) => String(o["id"])));
|
|
@@ -181,6 +184,8 @@ export async function laadPakbonData(db, opties) {
|
|
|
181
184
|
const karVanId = new Map(karrenRijen.map((k) => [String(k["id"]), k]));
|
|
182
185
|
karItems = alleItems.filter((i) => {
|
|
183
186
|
const regelId = i["order_item_id"] ? String(i["order_item_id"]) : "";
|
|
187
|
+
if (regelId && quarantaineIds.has(regelId))
|
|
188
|
+
return false;
|
|
184
189
|
if (!beperkTotEigenRegels)
|
|
185
190
|
return true;
|
|
186
191
|
if (regelId)
|
|
@@ -328,6 +333,17 @@ export async function laadPakbonData(db, opties) {
|
|
|
328
333
|
for (const r of rijen)
|
|
329
334
|
klantStickers.add(`${r["customer_key"]}|${r["trade_item_key"]}`);
|
|
330
335
|
}
|
|
336
|
+
// Bron van waarheid: order_items.needs_sticker (eigenaar Verkoop), per
|
|
337
|
+
// regel op id. Alleen als die kolom in deze database ontbreekt, geldt de
|
|
338
|
+
// oude afleiding hieronder (oudere Shells verliezen dan niets).
|
|
339
|
+
const heeftNeedsSticker = regels.some((r) => Object.prototype.hasOwnProperty.call(r, "needs_sticker"));
|
|
340
|
+
const regelVan = (bron) => regelPerId.get(String(bron["order_item_id"] ?? "")) ??
|
|
341
|
+
(Object.prototype.hasOwnProperty.call(bron, "needs_sticker") ? bron : undefined);
|
|
342
|
+
const stickerWaarde = (regel, terugval) => {
|
|
343
|
+
if (!heeftNeedsSticker)
|
|
344
|
+
return terugval();
|
|
345
|
+
return needsStickerTekst(regel?.["needs_sticker"]);
|
|
346
|
+
};
|
|
331
347
|
const stickerVoor = (orderId, p) => {
|
|
332
348
|
if (!p)
|
|
333
349
|
return "–";
|
|
@@ -458,9 +474,10 @@ export async function laadPakbonData(db, opties) {
|
|
|
458
474
|
potmaat: kenmerk(extra, ["potmaat", "Potmaat", "pot_size", "potSize", "potmaat_cm", "maat", "__potmaat"]),
|
|
459
475
|
per_stuk: perStuk,
|
|
460
476
|
aantal: perStuk * (aantal || 0),
|
|
461
|
-
|
|
477
|
+
// Onderdeel erft de waarde van de orderregel waaruit het is uitgesplitst.
|
|
478
|
+
sticker: stickerWaarde(regelVan(bron), () => stickerVoor(orderId, c ?? (r["component_trade_item_floriday_id"]
|
|
462
479
|
? { floriday_trade_item_id: r["component_trade_item_floriday_id"] }
|
|
463
|
-
: undefined)),
|
|
480
|
+
: undefined))),
|
|
464
481
|
};
|
|
465
482
|
});
|
|
466
483
|
};
|
|
@@ -501,7 +518,7 @@ export async function laadPakbonData(db, opties) {
|
|
|
501
518
|
extra["__fustsoort"] ??
|
|
502
519
|
(unit && unit.toLowerCase() !== "stuks" ? unit : "Niet ingesteld")),
|
|
503
520
|
planten_per_fust: perFust,
|
|
504
|
-
sticker: stickerVoor(orderVan(bron), p),
|
|
521
|
+
sticker: stickerWaarde(regelVan(bron), () => stickerVoor(orderVan(bron), p)),
|
|
505
522
|
onderdelen: onderdelenVoor(bron, p, aantalPlanten),
|
|
506
523
|
};
|
|
507
524
|
};
|
|
@@ -719,3 +736,11 @@ function vatFustenSamen(producten) {
|
|
|
719
736
|
.filter(([, aantal]) => aantal > 0)
|
|
720
737
|
.map(([fusttype, aantal]) => ({ fusttype, aantal }));
|
|
721
738
|
}
|
|
739
|
+
/** order_items.needs_sticker → "Ja" / "Nee"; onbekend → leeg. */
|
|
740
|
+
export function needsStickerTekst(waarde) {
|
|
741
|
+
if (waarde === true)
|
|
742
|
+
return "Ja";
|
|
743
|
+
if (waarde === false)
|
|
744
|
+
return "Nee";
|
|
745
|
+
return "";
|
|
746
|
+
}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export declare const PAKKET_VERSIE = "1.
|
|
1
|
+
export declare const PAKKET_VERSIE = "1.67.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.67.1";
|
package/package.json
CHANGED
package/sql/print-schema.sql
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
-- ============================================================================
|
|
2
2
|
set check_function_bodies = off;
|
|
3
|
-
-- layout-maker 1.
|
|
3
|
+
-- layout-maker 1.67.0 — volledig database-schema (idempotent)
|
|
4
4
|
-- Gegenereerd door scripts/bouw-schema.py. Mag zo vaak worden gedraaid als je
|
|
5
5
|
-- wilt. Bevat alleen structuur: geen adressen, sleutels of klantgegevens.
|
|
6
6
|
-- Vereiste extensies: pgcrypto, pg_net, pg_cron (en vault voor het tickgeheim).
|
|
@@ -3006,7 +3006,7 @@ CREATE POLICY "Automatische acties lezen" ON public.layout_auto_acties FOR SELEC
|
|
|
3006
3006
|
-- Referentiedata: vaste Flow Selections-standaarden (klant-onafhankelijk). Alleen een hogere versie vervangt.
|
|
3007
3007
|
INSERT INTO public.layout_standaarden AS s (sleutel, versie, documenttype, naam, omschrijving, papierformaat, breedte_mm, hoogte_mm, config)
|
|
3008
3008
|
VALUES
|
|
3009
|
-
('fs.pakbon',
|
|
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 \u2014 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
3011
|
('fs.productiebon', 1, 'productiebon', 'Productiebon', 'Standaard productiebon met de vaste blokindeling. Volledig aanpasbaar.', 'A4', 210, 297, '{}'::jsonb)
|
|
3012
3012
|
ON CONFLICT (sleutel) DO UPDATE SET
|