@flowselections/logistiek-engine 1.0.26 → 1.0.28
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 +24 -24
- package/dist-lib/components/AfmetingenBronnenCard.d.ts +2 -0
- package/dist-lib/components/AfmetingenBronnenCard.d.ts.map +1 -0
- package/dist-lib/components/AfmetingenBronnenCard.js +46 -0
- package/dist-lib/components/BufferDebugCard.d.ts.map +1 -1
- package/dist-lib/components/BufferDebugCard.js +6 -1
- package/dist-lib/components/ConsistentieCard.d.ts.map +1 -1
- package/dist-lib/components/ConsistentieCard.js +1 -1
- package/dist-lib/components/KarplanStatusCard.d.ts +2 -0
- package/dist-lib/components/KarplanStatusCard.d.ts.map +1 -0
- package/dist-lib/components/KarplanStatusCard.js +31 -0
- package/dist-lib/components/RegiePage.d.ts.map +1 -1
- package/dist-lib/components/RegiePage.js +3 -1
- package/dist-lib/components/RuleEnginePage.d.ts.map +1 -1
- package/dist-lib/components/RuleEnginePage.js +7 -4
- package/dist-lib/components/rule-engine/FloridayConnectionBanner.d.ts +2 -0
- package/dist-lib/components/rule-engine/FloridayConnectionBanner.d.ts.map +1 -0
- package/dist-lib/components/rule-engine/FloridayConnectionBanner.js +41 -0
- package/dist-lib/components/rule-engine/RuleFieldInput.d.ts.map +1 -1
- package/dist-lib/components/rule-engine/RuleFieldInput.js +9 -0
- package/dist-lib/hooks/useRecalcJob.d.ts.map +1 -1
- package/dist-lib/hooks/useRecalcJob.js +26 -1
- package/dist-lib/hooks/useScannersPrinters.d.ts +11 -0
- package/dist-lib/hooks/useScannersPrinters.d.ts.map +1 -0
- package/dist-lib/hooks/useScannersPrinters.js +65 -0
- package/dist-lib/index.d.ts +2 -0
- package/dist-lib/index.d.ts.map +1 -1
- package/dist-lib/index.js +2 -0
- package/dist-lib/integrations/supabase/auth-middleware.d.ts +2063 -78
- package/dist-lib/integrations/supabase/auth-middleware.d.ts.map +1 -1
- package/dist-lib/integrations/supabase/client.d.ts +20293 -0
- package/dist-lib/integrations/supabase/client.d.ts.map +1 -0
- package/dist-lib/integrations/supabase/client.js +13 -0
- package/dist-lib/integrations/supabase/client.server.d.ts +2063 -78
- 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/moduleClient.d.ts +2063 -78
- package/dist-lib/integrations/supabase/moduleClient.d.ts.map +1 -1
- package/dist-lib/integrations/supabase/types.d.ts +2097 -68
- package/dist-lib/integrations/supabase/types.d.ts.map +1 -1
- package/dist-lib/integrations/supabase/types.js +1 -0
- package/dist-lib/lib/attachAuthToken.d.ts +2 -0
- package/dist-lib/lib/attachAuthToken.d.ts.map +1 -0
- package/dist-lib/lib/attachAuthToken.js +50 -0
- package/dist-lib/lib/bufferMatching.d.ts.map +1 -1
- package/dist-lib/lib/bufferMatching.js +1 -0
- package/dist-lib/lib/cartPlanRequests.server.d.ts +13 -0
- package/dist-lib/lib/cartPlanRequests.server.d.ts.map +1 -0
- package/dist-lib/lib/cartPlanRequests.server.js +168 -0
- package/dist-lib/lib/controlScan.server.d.ts +12 -0
- package/dist-lib/lib/controlScan.server.d.ts.map +1 -0
- package/dist-lib/lib/controlScan.server.js +197 -0
- package/dist-lib/lib/dimensionData.server.d.ts +37 -0
- package/dist-lib/lib/dimensionData.server.d.ts.map +1 -0
- package/dist-lib/lib/dimensionData.server.js +167 -0
- package/dist-lib/lib/dimensionPlanner.d.ts +95 -0
- package/dist-lib/lib/dimensionPlanner.d.ts.map +1 -0
- package/dist-lib/lib/dimensionPlanner.js +248 -0
- package/dist-lib/lib/floridayDocuments.functions.d.ts +6240 -285
- package/dist-lib/lib/floridayDocuments.functions.d.ts.map +1 -1
- package/dist-lib/lib/floridayDocuments.functions.js +4 -3
- package/dist-lib/lib/floridayPush.functions.d.ts +2064 -79
- package/dist-lib/lib/floridayPush.functions.d.ts.map +1 -1
- package/dist-lib/lib/floridayPush.functions.js +2 -1
- package/dist-lib/lib/handlers/logistics-tick.server.d.ts.map +1 -1
- package/dist-lib/lib/handlers/logistics-tick.server.js +57 -0
- package/dist-lib/lib/loadCarrierPlanner.d.ts +3 -0
- package/dist-lib/lib/loadCarrierPlanner.d.ts.map +1 -1
- package/dist-lib/lib/loadCarrierPlanning.functions.d.ts +10302 -377
- package/dist-lib/lib/loadCarrierPlanning.functions.d.ts.map +1 -1
- package/dist-lib/lib/loadCarrierPlanning.functions.js +6 -5
- package/dist-lib/lib/loadCarrierPlanning.server.d.ts +46 -0
- package/dist-lib/lib/loadCarrierPlanning.server.d.ts.map +1 -1
- package/dist-lib/lib/loadCarrierPlanning.server.js +673 -31
- package/dist-lib/lib/logisticsPlanner.d.ts.map +1 -1
- package/dist-lib/lib/logisticsPlanner.js +24 -9
- package/dist-lib/lib/logisticsRecalcJob.functions.d.ts +4163 -193
- package/dist-lib/lib/logisticsRecalcJob.functions.d.ts.map +1 -1
- package/dist-lib/lib/logisticsRecalcJob.functions.js +3 -2
- package/dist-lib/lib/logisticsRecalcJob.server.d.ts.map +1 -1
- package/dist-lib/lib/logisticsRecalcJob.server.js +1 -0
- package/dist-lib/lib/logisticsRecalculate.functions.d.ts +2064 -79
- package/dist-lib/lib/logisticsRecalculate.functions.d.ts.map +1 -1
- package/dist-lib/lib/logisticsRecalculate.functions.js +3 -1
- package/dist-lib/lib/modulePrompts.d.ts.map +1 -1
- package/dist-lib/lib/modulePrompts.js +2567 -1563
- package/dist-lib/lib/planQueue.server.d.ts.map +1 -1
- package/dist-lib/lib/planQueue.server.js +6 -0
- package/dist-lib/lib/readableServerErrors.d.ts +2 -0
- package/dist-lib/lib/readableServerErrors.d.ts.map +1 -0
- package/dist-lib/lib/readableServerErrors.js +36 -0
- package/dist-lib/lib/ruleEngineSchema.d.ts +1 -1
- package/dist-lib/lib/ruleEngineSchema.d.ts.map +1 -1
- package/dist-lib/lib/ruleEngineSchema.js +83 -51
- package/dist-lib/lib/ruleEngineWizard.d.ts.map +1 -1
- package/dist-lib/lib/ruleEngineWizard.js +6 -6
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"planQueue.server.d.ts","sourceRoot":"","sources":["../../src/lib/planQueue.server.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAI5D,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB,2FAA2F;IAC3F,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB;AAwBD,wFAAwF;AACxF,wBAAsB,YAAY,CAChC,EAAE,EAAE,cAAc,EAClB,OAAO,GAAE;IAAE,UAAU,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;CAAO,GAC3D,OAAO,CAAC,eAAe,CAAC,CAsG1B;
|
|
1
|
+
{"version":3,"file":"planQueue.server.d.ts","sourceRoot":"","sources":["../../src/lib/planQueue.server.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAI5D,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB,2FAA2F;IAC3F,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB;AAwBD,wFAAwF;AACxF,wBAAsB,YAAY,CAChC,EAAE,EAAE,cAAc,EAClB,OAAO,GAAE;IAAE,UAAU,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;CAAO,GAC3D,OAAO,CAAC,eAAe,CAAC,CAsG1B;AA0CD,4EAA4E;AAE5E,wBAAsB,cAAc,CAAC,EAAE,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CAEtE"}
|
|
@@ -132,6 +132,7 @@ async function runDayLevelSteps(sb, dates, result) {
|
|
|
132
132
|
{ fn: "logistics_schedule_tasks", args: {} },
|
|
133
133
|
{ fn: "logistics_sync_task_carriers", args: { p_order_ref: null } },
|
|
134
134
|
{ fn: "logistics_sync_pick_queue", args: {} },
|
|
135
|
+
{ fn: "logistics_prune_buffer_member_queue", args: {} },
|
|
135
136
|
{ fn: "logistics_apply_document_layouts", args: {} },
|
|
136
137
|
{ fn: "logistics_capacity_day_check", args: { p_from: from, p_to: to >= from ? to : from } },
|
|
137
138
|
];
|
|
@@ -146,6 +147,11 @@ async function syncPickQueue(sb, result) {
|
|
|
146
147
|
const { error } = await sb.rpc("logistics_sync_pick_queue", {});
|
|
147
148
|
if (error && result.errors.length < 10) {
|
|
148
149
|
result.errors.push(`logistics_sync_pick_queue: ${error.message}`);
|
|
150
|
+
return;
|
|
151
|
+
}
|
|
152
|
+
const { error: pruneError } = await sb.rpc("logistics_prune_buffer_member_queue", {});
|
|
153
|
+
if (pruneError && result.errors.length < 10) {
|
|
154
|
+
result.errors.push(`logistics_prune_buffer_member_queue: ${pruneError.message}`);
|
|
149
155
|
}
|
|
150
156
|
}
|
|
151
157
|
/** Ruimt afgeronde wachtrijrijen op volgens de ingestelde bewaartermijn. */
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"readableServerErrors.d.ts","sourceRoot":"","sources":["../../src/lib/readableServerErrors.ts"],"names":[],"mappings":"AA2BA,eAAO,MAAM,oBAAoB,yIAWhC,CAAC"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
// ============================================================================
|
|
2
|
+
// src/lib/readableServerErrors.ts — foutmeldingen die de browser kan tonen
|
|
3
|
+
// ============================================================================
|
|
4
|
+
// De auth-middleware gooit bij een probleem een Response. Zo'n object kan niet
|
|
5
|
+
// over de serverfunctie-verbinding worden verstuurd; de browser kreeg daardoor
|
|
6
|
+
// "[object Response]" en een leeg scherm. Deze middleware zet elke Response om
|
|
7
|
+
// in een gewone fout met leesbare tekst.
|
|
8
|
+
// ============================================================================
|
|
9
|
+
import { createMiddleware } from "@tanstack/react-start";
|
|
10
|
+
async function describe(e) {
|
|
11
|
+
if (typeof Response !== "undefined" && e instanceof Response) {
|
|
12
|
+
let body = "";
|
|
13
|
+
try {
|
|
14
|
+
body = (await e.clone().text()).slice(0, 300);
|
|
15
|
+
}
|
|
16
|
+
catch {
|
|
17
|
+
/* body niet leesbaar */
|
|
18
|
+
}
|
|
19
|
+
if (e.status === 401) {
|
|
20
|
+
return "Je sessie is verlopen of ontbreekt. Log opnieuw in en probeer het nog een keer.";
|
|
21
|
+
}
|
|
22
|
+
return body || `Serverfout (${e.status})`;
|
|
23
|
+
}
|
|
24
|
+
return String(e?.message ?? e);
|
|
25
|
+
}
|
|
26
|
+
export const readableServerErrors = createMiddleware({ type: "function" }).server(async ({ next }) => {
|
|
27
|
+
try {
|
|
28
|
+
return await next();
|
|
29
|
+
}
|
|
30
|
+
catch (e) {
|
|
31
|
+
if (typeof Response !== "undefined" && e instanceof Response) {
|
|
32
|
+
throw new Error(await describe(e));
|
|
33
|
+
}
|
|
34
|
+
throw e;
|
|
35
|
+
}
|
|
36
|
+
});
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export type FieldType = "toggle" | "select" | "number" | "text" | "textarea" | "time" | "priority" | "radio" | "days" | "layout" | "pickstation" | "guidance";
|
|
1
|
+
export type FieldType = "toggle" | "select" | "number" | "text" | "textarea" | "time" | "priority" | "radio" | "days" | "layout" | "pickstation" | "scanner" | "printer" | "guidance";
|
|
2
2
|
export interface FieldOption {
|
|
3
3
|
value: string;
|
|
4
4
|
label: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ruleEngineSchema.d.ts","sourceRoot":"","sources":["../../src/lib/ruleEngineSchema.ts"],"names":[],"mappings":"AAQA,MAAM,MAAM,SAAS,GACjB,QAAQ,GACR,QAAQ,GACR,QAAQ,GACR,MAAM,GACN,UAAU,GACV,MAAM,GACN,UAAU,GACV,OAAO,GACP,MAAM,GACN,QAAQ,GACR,aAAa,GACb,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"ruleEngineSchema.d.ts","sourceRoot":"","sources":["../../src/lib/ruleEngineSchema.ts"],"names":[],"mappings":"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"}
|
|
@@ -66,15 +66,27 @@ export const RULE_STEPS = [
|
|
|
66
66
|
{ value: "order_type", label: "Zelfde ordertype" },
|
|
67
67
|
],
|
|
68
68
|
},
|
|
69
|
+
{
|
|
70
|
+
key: "buffer_close_reference",
|
|
71
|
+
label: "Buffer sluit ten opzichte van",
|
|
72
|
+
type: "select",
|
|
73
|
+
default: "checkin",
|
|
74
|
+
options: [
|
|
75
|
+
{ value: "checkin", label: "De aanmeldtijd" },
|
|
76
|
+
{ value: "pick_start", label: "De start van het picken" },
|
|
77
|
+
],
|
|
78
|
+
description: "Kies waar de sluittijd vanaf wordt teruggerekend. Bij \u201cstart van het picken\u201d is de buffer dicht zodra de order richting het pickstation gaat.",
|
|
79
|
+
dependsOn: { key: "buffer_enabled", in: [true] },
|
|
80
|
+
},
|
|
69
81
|
{
|
|
70
82
|
key: "buffer_close_before_minutes",
|
|
71
|
-
label: "Buffer sluit ... minuten v\u00f3\u00f3r
|
|
83
|
+
label: "Buffer sluit ... minuten v\u00f3\u00f3r",
|
|
72
84
|
type: "number",
|
|
73
85
|
unit: "minuten",
|
|
74
86
|
min: 0,
|
|
75
87
|
max: 1440,
|
|
76
88
|
default: 60,
|
|
77
|
-
description: "De gecombineerde order wordt zoveel minuten v\u00f3\u00f3r
|
|
89
|
+
description: "De gecombineerde order wordt zoveel minuten v\u00f3\u00f3r het gekozen moment gesloten. Daarna kan er geen order meer bij.",
|
|
78
90
|
dependsOn: { key: "buffer_enabled", in: [true] },
|
|
79
91
|
},
|
|
80
92
|
],
|
|
@@ -174,6 +186,17 @@ export const RULE_STEPS = [
|
|
|
174
186
|
id: "werkwijze",
|
|
175
187
|
label: "Werkwijze",
|
|
176
188
|
fields: [
|
|
189
|
+
{
|
|
190
|
+
key: "cart_layout_method",
|
|
191
|
+
label: "Methode voor karrenindeling",
|
|
192
|
+
type: "select",
|
|
193
|
+
default: "belading",
|
|
194
|
+
description: "Geldt voor alle orders. Bij afmetingen worden fust- en planthoogtes gebruikt; ontbreekt een maat, dan wordt er niets ingedeeld.",
|
|
195
|
+
options: [
|
|
196
|
+
{ value: "belading", label: "Indelen op basis van belading" },
|
|
197
|
+
{ value: "afmetingen", label: "Indelen op basis van afmetingen" },
|
|
198
|
+
],
|
|
199
|
+
},
|
|
177
200
|
{
|
|
178
201
|
key: "mode",
|
|
179
202
|
label: "Hoe ontstaat een belading?",
|
|
@@ -227,6 +250,27 @@ export const RULE_STEPS = [
|
|
|
227
250
|
dependsOn: { key: "mode", in: ["auto"] },
|
|
228
251
|
},
|
|
229
252
|
{ key: "max_boxes_per_pallet", label: "Maximaal aantal dozen per pallet", type: "number", min: 1, max: 200, default: 40, dependsOn: [{ key: "mode", in: ["auto"] }, { key: "fill_boxes_as_much_as_fits", in: [false] }] },
|
|
253
|
+
{
|
|
254
|
+
key: "full_cart_min_layers",
|
|
255
|
+
label: "Vanaf hoeveel lagen telt een kar als volle kar",
|
|
256
|
+
type: "number",
|
|
257
|
+
min: 1,
|
|
258
|
+
max: 20,
|
|
259
|
+
default: 5,
|
|
260
|
+
description: "Een kar met dit aantal gevulde lagen of meer geldt als volle kar; daaronder als deelkar. Dat bepaalt welke pakbon-variant wordt meegestuurd.",
|
|
261
|
+
dependsOn: { key: "mode", in: ["auto"] },
|
|
262
|
+
},
|
|
263
|
+
{
|
|
264
|
+
key: "full_cart_min_percentage",
|
|
265
|
+
label: "Of vanaf hoeveel beladingspercentage telt een kar als volle kar",
|
|
266
|
+
type: "number",
|
|
267
|
+
min: 1,
|
|
268
|
+
max: 100,
|
|
269
|
+
default: 80,
|
|
270
|
+
unit: "%",
|
|
271
|
+
description: "Een kar met dit beladingspercentage of meer geldt óók als volle kar, ook als het aantal lagen onder de drempel blijft. Handig als je met verschillende fusthoogtes werkt.",
|
|
272
|
+
dependsOn: { key: "mode", in: ["auto"] },
|
|
273
|
+
},
|
|
230
274
|
{ key: "optimal_fill", label: "Optimale vulling berekenen", type: "toggle", default: true, dependsOn: { key: "mode", in: ["auto"] } },
|
|
231
275
|
],
|
|
232
276
|
},
|
|
@@ -630,14 +674,6 @@ export const RULE_STEPS = [
|
|
|
630
674
|
unit: "uur",
|
|
631
675
|
dependsOn: { key: "packing_slip_release", in: ["hours_before_pick"] },
|
|
632
676
|
},
|
|
633
|
-
{
|
|
634
|
-
key: "packing_slip_group_identical_carts",
|
|
635
|
-
label: "Gelijke karren op één pakbon",
|
|
636
|
-
type: "toggle",
|
|
637
|
-
default: true,
|
|
638
|
-
description: "Bij picken per kar: karren met dezelfde inhoud komen op één pakbon, met bovenaan hoe vaak die kar gemaakt moet worden.",
|
|
639
|
-
dependsOn: { step: "order_picken", key: "pick_mode", in: ["cart", "smallest"] },
|
|
640
|
-
},
|
|
641
677
|
{
|
|
642
678
|
key: "packing_slip_carts_per_print",
|
|
643
679
|
label: "Aantal karren dat je in één keer uitprint",
|
|
@@ -649,32 +685,15 @@ export const RULE_STEPS = [
|
|
|
649
685
|
description: "Hoeveel karren je tegelijk uitprint. Elke afwijkende karindeling levert een eigen pakbon op: 3 karren met 3 verschillende indelingen worden dus 3 pakbonnen. Hoeveel karindelingen op één vel passen bepaalt de pakbon-layout.",
|
|
650
686
|
dependsOn: [
|
|
651
687
|
{ step: "order_picken", key: "pick_mode", in: ["cart", "smallest"] },
|
|
652
|
-
{ key: "packing_slip_group_identical_carts", in: [true] },
|
|
653
688
|
],
|
|
654
689
|
},
|
|
655
690
|
{ key: "packing_slip_station", label: "Pickstation", type: "pickstation" },
|
|
656
|
-
{
|
|
657
|
-
key: "packing_slip_barcode",
|
|
658
|
-
label: "Barcode op de pakbon",
|
|
659
|
-
type: "toggle",
|
|
660
|
-
default: true,
|
|
661
|
-
description: "Elke kar krijgt een eigen barcode op de pakbon. Die barcode scan je later om de juiste verzendbrief te maken. Waar de barcode staat, bepaal je in de Layout maker.",
|
|
662
|
-
},
|
|
663
691
|
{
|
|
664
692
|
key: "packing_slip_layout",
|
|
665
|
-
label: "Pakbon
|
|
693
|
+
label: "Pakbon layout",
|
|
666
694
|
type: "layout",
|
|
667
695
|
layoutTypes: ["pakbon"],
|
|
668
|
-
description: "De pakbon voor een
|
|
669
|
-
},
|
|
670
|
-
{
|
|
671
|
-
key: "packing_slip_partial_layout",
|
|
672
|
-
label: "Pakbon resterende order / deelkar",
|
|
673
|
-
type: "layout",
|
|
674
|
-
layoutTypes: ["pakbon"],
|
|
675
|
-
fallbackKey: "packing_slip_layout",
|
|
676
|
-
description: "De pakbon voor de laatste kar die niet helemaal vol is, of voor een order die binnen \u00e9\u00e9n kar past. Leeg laten betekent: dezelfde layout als de volle kar.",
|
|
677
|
-
dependsOn: { step: "order_picken", key: "pick_mode", in: ["order", "cart", "smallest"] },
|
|
696
|
+
description: "De pakbon-layout voor dit soort orders. Of gelijke karren gebundeld worden, of er een barcode op staat en hoe een volle kar en een deelkar eruitzien, stel je in de Layout maker in. Op \u201cAutomatisch\u201d pakt de Layout maker zijn eigen actieve layout. Levert Floriday een kant-en-klare pakbon als PDF, dan wordt die altijd gebruikt.",
|
|
678
697
|
},
|
|
679
698
|
{
|
|
680
699
|
key: "packing_slip_help",
|
|
@@ -703,6 +722,11 @@ export const RULE_STEPS = [
|
|
|
703
722
|
label: "Zodra de order wordt vrijgegeven",
|
|
704
723
|
description: "Volgt exact de instellingen bij \u201c3. Order picken\u201d.",
|
|
705
724
|
},
|
|
725
|
+
{
|
|
726
|
+
value: "with_packing_slip",
|
|
727
|
+
label: "Gelijk met de bijbehorende pakbon",
|
|
728
|
+
description: "De sticker komt op hetzelfde moment vrij als de pakbon van die order of kar.",
|
|
729
|
+
},
|
|
706
730
|
{
|
|
707
731
|
value: "hours_before_pick",
|
|
708
732
|
label: "X uur v\u00f3\u00f3r het geplande pickmoment",
|
|
@@ -720,7 +744,13 @@ export const RULE_STEPS = [
|
|
|
720
744
|
unit: "uur",
|
|
721
745
|
dependsOn: { key: "sticker_release", in: ["hours_before_pick"] },
|
|
722
746
|
},
|
|
723
|
-
{
|
|
747
|
+
{
|
|
748
|
+
key: "sticker_station",
|
|
749
|
+
label: "Pickstation",
|
|
750
|
+
type: "pickstation",
|
|
751
|
+
dependsOn: { key: "sticker_release", in: ["with_pick_release", "hours_before_pick"] },
|
|
752
|
+
description: "Bij \u201cgelijk met de bijbehorende pakbon\u201d volgt de sticker automatisch het pickstation waar de pakbon geprint wordt; dat geldt dan voor alle pickstations gelijk.",
|
|
753
|
+
},
|
|
724
754
|
{
|
|
725
755
|
key: "sticker_layout",
|
|
726
756
|
label: "Welke layout voor dit soort orders?",
|
|
@@ -759,28 +789,16 @@ export const RULE_STEPS = [
|
|
|
759
789
|
{ key: "shipping_note_station", label: "Pickstation", type: "pickstation" },
|
|
760
790
|
{
|
|
761
791
|
key: "shipping_note_layout",
|
|
762
|
-
label: "
|
|
763
|
-
type: "layout",
|
|
764
|
-
layoutTypes: ["verzendlabel", "transportdocument"],
|
|
765
|
-
description: "Geldt voor verzendbrieven, transportbrieven en verzendlabels. Op \u201cAutomatisch\u201d pakt de Layout maker zijn eigen actieve layout. Levert Floriday een kant-en-klare brief als PDF, dan wordt die altijd gebruikt.",
|
|
766
|
-
},
|
|
767
|
-
{
|
|
768
|
-
key: "delivery_note_layout",
|
|
769
|
-
label: "Layout voor de afleverbrief",
|
|
770
|
-
type: "layout",
|
|
771
|
-
layoutTypes: ["afleverbrief", "transportdocument", "verzendlabel"],
|
|
772
|
-
fallbackKey: "shipping_note_layout",
|
|
773
|
-
fallbackLabel: "verzendbrieven",
|
|
774
|
-
description: "Geldt alleen voor afleverbrieven en afleverbonnen. Laat je dit leeg, dan volgt de afleverbrief de instelling voor verzendbrieven.",
|
|
775
|
-
},
|
|
776
|
-
{
|
|
777
|
-
key: "auction_note_layout",
|
|
778
|
-
label: "Layout voor de veilingbrief",
|
|
792
|
+
label: "Verzendbrief voor BVO orders",
|
|
779
793
|
type: "layout",
|
|
780
|
-
layoutTypes: [
|
|
781
|
-
|
|
782
|
-
|
|
783
|
-
|
|
794
|
+
layoutTypes: [
|
|
795
|
+
"verzendlabel",
|
|
796
|
+
"transportdocument",
|
|
797
|
+
"afleverbrief",
|
|
798
|
+
"veilingbrief",
|
|
799
|
+
"veilingbon",
|
|
800
|
+
],
|
|
801
|
+
description: "\u00c9\u00e9n layout voor de verzend-, aflever- en veilingbrief van BVO orders. Op \u201cAutomatisch\u201d pakt de Layout maker zijn eigen actieve layout. Levert Floriday een kant-en-klare brief als PDF, dan wordt die altijd gebruikt.",
|
|
784
802
|
},
|
|
785
803
|
{
|
|
786
804
|
key: "shipping_note_help",
|
|
@@ -870,6 +888,20 @@ export const RULE_STEPS = [
|
|
|
870
888
|
{ value: "skip", label: "Controle overslaan" },
|
|
871
889
|
],
|
|
872
890
|
},
|
|
891
|
+
{
|
|
892
|
+
key: "control_scanner_id",
|
|
893
|
+
label: "Scanner",
|
|
894
|
+
type: "scanner",
|
|
895
|
+
dependsOn: [{ key: "control_mode", in: ["scanner"] }],
|
|
896
|
+
description: "De scanner die bij deze controlepost hoort. Alle pakbonnen die gecontroleerd moeten worden, komen bij deze scanner binnen.",
|
|
897
|
+
},
|
|
898
|
+
{
|
|
899
|
+
key: "control_printer_id",
|
|
900
|
+
label: "Printer voor de afleverbrief",
|
|
901
|
+
type: "printer",
|
|
902
|
+
dependsOn: [{ key: "control_mode", in: ["scanner"] }],
|
|
903
|
+
description: "De printer waarop de afleverbrief automatisch wordt uitgeprint zodra een pakbon is goedgekeurd. Bij een Floriday-order is dat de officiële afleverbrief van Floriday.",
|
|
904
|
+
},
|
|
873
905
|
{
|
|
874
906
|
key: "control_print_items",
|
|
875
907
|
label: "Wat wordt er uitgeprint?",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ruleEngineWizard.d.ts","sourceRoot":"","sources":["../../src/lib/ruleEngineWizard.ts"],"names":[],"mappings":"AAQA,OAAO,EAGL,KAAK,SAAS,EACd,KAAK,SAAS,EAEf,MAAM,oBAAoB,CAAC;AAE5B,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,sEAAsE;IACtE,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,SAAS,EAAE,CAAC;IACpB,2EAA2E;IAC3E,cAAc,EAAE,OAAO,CAAC;CACzB;AAeD,eAAO,MAAM,YAAY,EAAE,UAAU,EAsDpC,CAAC;AA+BF,wBAAgB,eAAe,CAAC,KAAK,EAAE,SAAS,GAAG,OAAO,CAEzD;
|
|
1
|
+
{"version":3,"file":"ruleEngineWizard.d.ts","sourceRoot":"","sources":["../../src/lib/ruleEngineWizard.ts"],"names":[],"mappings":"AAQA,OAAO,EAGL,KAAK,SAAS,EACd,KAAK,SAAS,EAEf,MAAM,oBAAoB,CAAC;AAE5B,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,sEAAsE;IACtE,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,SAAS,EAAE,CAAC;IACpB,2EAA2E;IAC3E,cAAc,EAAE,OAAO,CAAC;CACzB;AAeD,eAAO,MAAM,YAAY,EAAE,UAAU,EAsDpC,CAAC;AA+BF,wBAAgB,eAAe,CAAC,KAAK,EAAE,SAAS,GAAG,OAAO,CAEzD;AAkED,wBAAgB,SAAS,CAAC,KAAK,EAAE,SAAS,GAAG,MAAM,GAAG,SAAS,CAE9D;AAyCD,sEAAsE;AACtE,wBAAgB,YAAY,CAAC,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAStF"}
|
|
@@ -106,8 +106,10 @@ export function isAdvancedField(field) {
|
|
|
106
106
|
// ── Extra uitleg ────────────────────────────────────────────────────────────
|
|
107
107
|
// Aanvullende tooltipteksten voor velden die nog geen uitleg hadden.
|
|
108
108
|
const EXTRA_HELP = {
|
|
109
|
+
buffer_close_reference: "Aanmeldtijd: de buffer sluit vóór het moment dat de order wordt aangemeld. Start van het picken: de buffer sluit vóór het moment dat het picken begint, zodat er niets meer bij kan zodra de order naar het pickstation gaat.",
|
|
109
110
|
load_carrier_types: "Zet alleen de ladingdragers aan die je in de praktijk gebruikt.",
|
|
110
111
|
mix_carrier_types: "Aan: één order mag over verschillende soorten dragers verdeeld worden.",
|
|
112
|
+
cart_layout_method: "Belading: het systeem rekent met het aantal planten per fust, fusten per laag en lagen per kar. Afmetingen: het systeem legt de fusten fysiek in op lengte, breedte en hoogte en draait ze waar nodig. Deze keuze geldt voor alle orders.",
|
|
111
113
|
mode: "Automatisch: het systeem maakt de indeling. Scannen: een medewerker bepaalt het zelf.",
|
|
112
114
|
multi_order: "Aan: orders van meerdere bestellingen mogen op dezelfde drager staan.",
|
|
113
115
|
max_orders: "Meer orders op één drager betekent minder karren, maar wel meer sorteerwerk.",
|
|
@@ -116,6 +118,7 @@ const EXTRA_HELP = {
|
|
|
116
118
|
max_boxes_per_pallet: "Het aantal dozen dat je fysiek op één pallet kwijt kunt.",
|
|
117
119
|
optimal_fill: "Aan: het systeem zoekt de indeling waarbij de minste dragers nodig zijn.",
|
|
118
120
|
pick_mode: "Bepaalt waar een pickopdracht over gaat: één order, één kar, een hele buffer, of \u201ckleinste telt\u201d — dan pick je per order zolang de order binnen één kar past en per kar zodra hij over meerdere karren gaat.",
|
|
121
|
+
full_cart_min_percentage: "Een kar geldt als vol zodra het beladingspercentage dit percentage bereikt, ook als het aantal gevulde lagen onder de lagen-drempel blijft.",
|
|
119
122
|
scanner: "Met scanner werk je foutlozer; zonder scanner werk je op papier.",
|
|
120
123
|
capacity_alert_email: "Stuurt naast de melding ook een e-mail naar de opgegeven adressen.",
|
|
121
124
|
internal_alert_enabled: "Je eigen team krijgt bericht zodra een levering vertraagd raakt.",
|
|
@@ -132,16 +135,13 @@ const EXTRA_HELP = {
|
|
|
132
135
|
packing_slip_release: "Bepaalt op welk moment de pakbon bij het pickstation verschijnt.",
|
|
133
136
|
packing_slip_hours_before: "Zoveel uur vóór het picken staat de pakbon klaar.",
|
|
134
137
|
packing_slip_station: "Het pickstation waar de pakbon uitgeprint wordt.",
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
sticker_release: "Bepaalt op welk moment de stickers bij het pickstation verschijnen.",
|
|
138
|
+
packing_slip_layout: "De layout die de Engine bij elke pakbon meestuurt. Bundelen van gelijke karren, de barcode en het verschil tussen een volle kar en een deelkar stel je in de Layout maker in.",
|
|
139
|
+
sticker_release: "Bepaalt op welk moment de stickers bij het pickstation verschijnen. Kies \u201cgelijk met de bijbehorende pakbon\u201d als sticker en pakbon altijd samen uit de printer moeten komen.",
|
|
138
140
|
sticker_hours_before: "Zoveel uur vóór het picken staan de stickers klaar.",
|
|
139
141
|
sticker_station: "Het pickstation waar de stickers uitgeprint worden.",
|
|
140
142
|
shipping_note_release: "Bepaalt op welk moment de verzendbrief beschikbaar komt.",
|
|
141
143
|
shipping_note_station: "Het pickstation waar de verzendbrief uitgeprint wordt.",
|
|
142
|
-
shipping_note_layout: "
|
|
143
|
-
delivery_note_layout: "Alleen voor afleverbrieven en afleverbonnen. Leeg laten betekent: dezelfde layout als de verzendbrief.",
|
|
144
|
-
auction_note_layout: "Alleen voor veilingbrieven en veilingbonnen. Leeg laten betekent: dezelfde layout als de verzendbrief.",
|
|
144
|
+
shipping_note_layout: "\u00c9\u00e9n layout voor de verzend-, aflever- en veilingbrief van BVO orders.",
|
|
145
145
|
production_note_release: "Bepaalt op welk moment de productiebon beschikbaar komt.",
|
|
146
146
|
production_note_station: "Het pickstation waar de productiebon uitgeprint wordt.",
|
|
147
147
|
control_mode: "Hoe je controleert of de kar klopt voordat hij weggaat.",
|