@flowselections/pick-schermen-kwekers 1.0.82 → 1.0.84
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/fs-ui/DataTable.js +2 -2
- package/dist-lib/components/fs-ui/TableSkeleton.js +1 -1
- package/dist-lib/components/pick/DocumentChoiceMelding.d.ts +1 -1
- package/dist-lib/components/pick/DocumentChoiceMelding.d.ts.map +1 -1
- package/dist-lib/components/settings/ReferentiedataPickdocumentenCard.d.ts.map +1 -1
- package/dist-lib/components/settings/ReferentiedataPickdocumentenCard.js +10 -3
- package/dist-lib/hooks/useCartStickerStates.d.ts +1 -1
- package/dist-lib/hooks/useCartStickerStates.d.ts.map +1 -1
- package/dist-lib/hooks/usePickConfig.d.ts +11 -11
- package/dist-lib/hooks/usePickConfig.d.ts.map +1 -1
- package/dist-lib/hooks/usePickPrintStatus.d.ts +2 -2
- package/dist-lib/hooks/usePickQueue.d.ts +3 -3
- package/dist-lib/hooks/usePickQueue.d.ts.map +1 -1
- package/dist-lib/hooks/usePickReferenceData.d.ts +1 -1
- package/dist-lib/hooks/usePickReferenceData.d.ts.map +1 -1
- package/dist-lib/integrations/supabase/client.js +1 -1
- package/dist-lib/integrations/supabase/client.server.js +1 -1
- package/dist-lib/lib/layoutApi.d.ts +23 -0
- package/dist-lib/lib/layoutApi.d.ts.map +1 -0
- package/dist-lib/lib/layoutApi.js +94 -0
- package/dist-lib/lib/layoutMaker/documentProfiles.d.ts +50 -0
- package/dist-lib/lib/layoutMaker/documentProfiles.d.ts.map +1 -0
- package/dist-lib/lib/layoutMaker/documentProfiles.js +458 -0
- package/dist-lib/lib/layoutMaker/documentTypes.d.ts +123 -0
- package/dist-lib/lib/layoutMaker/documentTypes.d.ts.map +1 -0
- package/dist-lib/lib/layoutMaker/documentTypes.js +74 -0
- package/dist-lib/lib/layoutMaker/logoLibrary.d.ts +13 -0
- package/dist-lib/lib/layoutMaker/logoLibrary.d.ts.map +1 -0
- package/dist-lib/lib/layoutMaker/logoLibrary.js +54 -0
- package/dist-lib/lib/layoutMaker/pakbonBuilder.d.ts +196 -0
- package/dist-lib/lib/layoutMaker/pakbonBuilder.d.ts.map +1 -0
- package/dist-lib/lib/layoutMaker/pakbonBuilder.js +813 -0
- package/dist-lib/lib/layoutMaker/pakbonHtml.d.ts +48 -0
- package/dist-lib/lib/layoutMaker/pakbonHtml.d.ts.map +1 -0
- package/dist-lib/lib/layoutMaker/pakbonHtml.js +703 -0
- package/dist-lib/lib/layoutRenderer.d.ts +7 -0
- package/dist-lib/lib/layoutRenderer.d.ts.map +1 -0
- package/dist-lib/lib/layoutRenderer.js +233 -0
- package/dist-lib/lib/layoutTypes.d.ts +84 -0
- package/dist-lib/lib/layoutTypes.d.ts.map +1 -0
- package/dist-lib/lib/layoutTypes.js +25 -0
- package/dist-lib/lib/orderContext.d.ts +50 -0
- package/dist-lib/lib/orderContext.d.ts.map +1 -0
- package/dist-lib/lib/orderContext.js +162 -0
- package/dist-lib/lib/pakbonOrderInput.d.ts +8 -0
- package/dist-lib/lib/pakbonOrderInput.d.ts.map +1 -0
- package/dist-lib/lib/pakbonOrderInput.js +150 -0
- package/package.json +2 -2
|
@@ -0,0 +1,150 @@
|
|
|
1
|
+
function txt(v) {
|
|
2
|
+
return v === null || v === undefined ? "" : String(v);
|
|
3
|
+
}
|
|
4
|
+
/** Productnamen komen soms als vertaal-JSON ({"nl":"..."}) uit de database. */
|
|
5
|
+
function naam(v) {
|
|
6
|
+
const s = txt(v).trim();
|
|
7
|
+
if (!s.startsWith("{"))
|
|
8
|
+
return s;
|
|
9
|
+
try {
|
|
10
|
+
const parsed = JSON.parse(s);
|
|
11
|
+
const keys = ["nl", "en", "de", ...Object.keys(parsed)];
|
|
12
|
+
for (const k of keys) {
|
|
13
|
+
const w = parsed[k];
|
|
14
|
+
if (typeof w === "string" && w.trim())
|
|
15
|
+
return w;
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
catch {
|
|
19
|
+
// geen JSON: onbewerkt teruggeven
|
|
20
|
+
}
|
|
21
|
+
return s;
|
|
22
|
+
}
|
|
23
|
+
function obj(raw) {
|
|
24
|
+
return raw && typeof raw === "object" && !Array.isArray(raw) ? raw : {};
|
|
25
|
+
}
|
|
26
|
+
function arr(raw) {
|
|
27
|
+
return Array.isArray(raw) ? raw : [];
|
|
28
|
+
}
|
|
29
|
+
function product(p) {
|
|
30
|
+
return {
|
|
31
|
+
artikelnummer: txt(p.artikelnummer),
|
|
32
|
+
artikelnaam: naam(p.artikelnaam),
|
|
33
|
+
potmaat: txt(p.potmaat),
|
|
34
|
+
kleur: txt(p.kleur),
|
|
35
|
+
aantal: Number(p.aantal) || 0,
|
|
36
|
+
locatie: txt(p.locatie),
|
|
37
|
+
barcode: txt(p.barcode),
|
|
38
|
+
opmerking: txt(p.opmerking),
|
|
39
|
+
fust_aantal: Number(p.fust_aantal) || 0,
|
|
40
|
+
fustsoort: txt(p.fustsoort),
|
|
41
|
+
planten_per_fust: Number(p.planten_per_fust) || 0,
|
|
42
|
+
};
|
|
43
|
+
}
|
|
44
|
+
/** Fusten van een laag, samengevoegd per fustsoort. */
|
|
45
|
+
function fusten(producten) {
|
|
46
|
+
const map = new Map();
|
|
47
|
+
for (const p of arr(producten)) {
|
|
48
|
+
const soort = txt(p.fustsoort) || "Fust";
|
|
49
|
+
map.set(soort, (map.get(soort) ?? 0) + (Number(p.fust_aantal) || 0));
|
|
50
|
+
}
|
|
51
|
+
return [...map.entries()]
|
|
52
|
+
.filter(([, aantal]) => aantal > 0)
|
|
53
|
+
.map(([fusttype, aantal]) => ({ fusttype, aantal }));
|
|
54
|
+
}
|
|
55
|
+
function kar(k, index, transport) {
|
|
56
|
+
const lagen = arr(k.lagen).map((l, j) => ({
|
|
57
|
+
laagnummer: Number(l.laagnummer) || j + 1,
|
|
58
|
+
belading: txt(l.belading),
|
|
59
|
+
potmaat: txt(arr(l.producten)[0]?.potmaat),
|
|
60
|
+
producten: arr(l.producten).map(product),
|
|
61
|
+
fusten: fusten(arr(l.producten)),
|
|
62
|
+
}));
|
|
63
|
+
return {
|
|
64
|
+
karnummer: Number(k.karnummer) || index + 1,
|
|
65
|
+
route: transport["route"] ?? "",
|
|
66
|
+
chauffeur: transport["chauffeur"] ?? "",
|
|
67
|
+
gewicht: "",
|
|
68
|
+
lagen: lagen.length
|
|
69
|
+
? lagen
|
|
70
|
+
: [
|
|
71
|
+
{
|
|
72
|
+
laagnummer: 1,
|
|
73
|
+
belading: "",
|
|
74
|
+
potmaat: "",
|
|
75
|
+
producten: arr(k.producten).map(product),
|
|
76
|
+
fusten: fusten(arr(k.producten)),
|
|
77
|
+
},
|
|
78
|
+
],
|
|
79
|
+
};
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* Bouwt de invoer voor `maakPakbonOrder()` uit de opgehaalde ordercontext.
|
|
83
|
+
* Orderregels zonder karren worden als platte productlijst meegegeven; de
|
|
84
|
+
* layout-module plaatst die zelf in één kar/laag.
|
|
85
|
+
*/
|
|
86
|
+
export function pakbonOrderInput(data) {
|
|
87
|
+
const order = obj(data.order);
|
|
88
|
+
const klant = obj(data.klant);
|
|
89
|
+
const aflever = obj(data.afleveradres);
|
|
90
|
+
const transport = {
|
|
91
|
+
transporteur: txt(order["transporteur"] ?? order["carrier"] ?? order["transporter"]),
|
|
92
|
+
route: txt(order["route"] ?? order["route_name"]),
|
|
93
|
+
chauffeur: txt(order["chauffeur"] ?? order["driver"]),
|
|
94
|
+
track: txt(order["track_trace"] ?? order["tracking_code"]),
|
|
95
|
+
};
|
|
96
|
+
const karren = arr(data.karren).map((k, i) => kar(k, i, transport));
|
|
97
|
+
const losseRegels = arr(data.regels).map((r) => ({
|
|
98
|
+
artikelnummer: txt(r["article_number"] ?? r["artikelnummer"]),
|
|
99
|
+
artikelnaam: naam(r["product_name"] ?? r["artikelnaam"] ?? r["product"]),
|
|
100
|
+
potmaat: txt(r["potmaat"] ?? r["pot_size"]),
|
|
101
|
+
aantal: Number(r["quantity"] ?? r["aantal"]) || 0,
|
|
102
|
+
locatie: txt(r["location"] ?? r["locatie"]),
|
|
103
|
+
barcode: txt(r["barcode"]),
|
|
104
|
+
fust_aantal: Number(r["crates"] ?? r["fust_aantal"]) || 0,
|
|
105
|
+
fustsoort: txt(r["unit"] ?? r["fustsoort"]),
|
|
106
|
+
planten_per_fust: Number(r["plants_per_crate"] ?? r["planten_per_fust"]) || 0,
|
|
107
|
+
opmerking: txt(r["notes"] ?? r["opmerking"]),
|
|
108
|
+
}));
|
|
109
|
+
const adres = [aflever["adres"], aflever["adres2"]].filter(Boolean).join(" · ");
|
|
110
|
+
const plaats = [aflever["postcode"], aflever["plaats"]].filter(Boolean).join(" ");
|
|
111
|
+
return {
|
|
112
|
+
order: {
|
|
113
|
+
nummer: txt(order["ordernummer"] ?? order["order_number"]),
|
|
114
|
+
datum: txt(order["orderdatum"] ?? order["order_date"]),
|
|
115
|
+
leverdatum: txt(order["leverdatum"] ?? order["delivery_date"]),
|
|
116
|
+
referentie: txt(order["referentie"] ?? order["reference"]),
|
|
117
|
+
opmerking: txt(order["notes"] ?? order["opmerking"] ?? order["remarks"]),
|
|
118
|
+
},
|
|
119
|
+
bedrijf: {
|
|
120
|
+
naam: txt(order["company_name"] ?? ""),
|
|
121
|
+
adres: "",
|
|
122
|
+
plaats: "",
|
|
123
|
+
telefoon: "",
|
|
124
|
+
email: "",
|
|
125
|
+
kvk: "",
|
|
126
|
+
btw: "",
|
|
127
|
+
},
|
|
128
|
+
klant: {
|
|
129
|
+
naam: txt(klant["naam"] ?? klant["name"]),
|
|
130
|
+
nummer: txt(klant["klantnummer"] ?? klant["customer_number"]),
|
|
131
|
+
contact: txt(klant["contact_name"] ?? klant["contactpersoon"] ?? klant["email"]),
|
|
132
|
+
referentie: txt(order["customer_reference"] ?? order["referentie"]),
|
|
133
|
+
},
|
|
134
|
+
afleveradres: {
|
|
135
|
+
naam: txt(aflever["naam"]),
|
|
136
|
+
adres,
|
|
137
|
+
plaats,
|
|
138
|
+
land: txt(aflever["land"]),
|
|
139
|
+
},
|
|
140
|
+
factuuradres: {
|
|
141
|
+
naam: txt(klant["naam"] ?? klant["name"]),
|
|
142
|
+
adres: txt(klant["invoice_address"] ?? aflever["adres"]),
|
|
143
|
+
plaats: txt(klant["invoice_city"] ?? aflever["plaats"]),
|
|
144
|
+
land: txt(klant["invoice_country"] ?? aflever["land"]),
|
|
145
|
+
},
|
|
146
|
+
transport,
|
|
147
|
+
karren,
|
|
148
|
+
producten: karren.length ? [] : losseRegels,
|
|
149
|
+
};
|
|
150
|
+
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@flowselections/pick-schermen-kwekers",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.84",
|
|
4
4
|
"flowselections": {
|
|
5
5
|
"moduleId": "pick-schermen",
|
|
6
6
|
"schema": {
|
|
@@ -70,7 +70,7 @@
|
|
|
70
70
|
"@flowselections/layout-maker": "^1.19.0",
|
|
71
71
|
"@cloudflare/vite-plugin": "^1.25.5",
|
|
72
72
|
"@eslint/js": "^9.32.0",
|
|
73
|
-
"@flowselections/core": "1.0.
|
|
73
|
+
"@flowselections/core": "1.0.37",
|
|
74
74
|
"@lovable.dev/vite-tanstack-config": "2.26.5",
|
|
75
75
|
"@rsbuild/core": "^1.0.0",
|
|
76
76
|
"@tailwindcss/vite": "^4.2.1",
|