@flowselections/floriday-afhandeling-module 1.0.25 → 1.0.27

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.
Files changed (123) hide show
  1. package/dist-lib/components/afhandeling/CapacityWarning.d.ts +10 -0
  2. package/dist-lib/components/afhandeling/CapacityWarning.d.ts.map +1 -0
  3. package/dist-lib/components/afhandeling/CapacityWarning.js +12 -0
  4. package/dist-lib/components/afhandeling/ControlePage.d.ts.map +1 -1
  5. package/dist-lib/components/afhandeling/ControlePage.js +7 -2
  6. package/dist-lib/components/afhandeling/DagDetailDialog.d.ts.map +1 -1
  7. package/dist-lib/components/afhandeling/DagDetailDialog.js +158 -62
  8. package/dist-lib/components/afhandeling/LeveringenPage.d.ts.map +1 -1
  9. package/dist-lib/components/afhandeling/LeveringenPage.js +2 -10
  10. package/dist-lib/components/afhandeling/PickAgendaView.d.ts.map +1 -1
  11. package/dist-lib/components/afhandeling/PickAgendaView.js +4 -11
  12. package/dist-lib/components/afhandeling/VervoerdersPage.d.ts.map +1 -1
  13. package/dist-lib/components/afhandeling/VervoerdersPage.js +2 -5
  14. package/dist-lib/components/afhandeling/VerzetOrderDialog.d.ts +14 -0
  15. package/dist-lib/components/afhandeling/VerzetOrderDialog.d.ts.map +1 -0
  16. package/dist-lib/components/afhandeling/VerzetOrderDialog.js +203 -0
  17. package/dist-lib/components/afhandeling/WeekAgendaView.d.ts.map +1 -1
  18. package/dist-lib/components/afhandeling/WeekAgendaView.js +7 -3
  19. package/dist-lib/components/pickstation/PickstationPage.d.ts.map +1 -1
  20. package/dist-lib/components/pickstation/PickstationPage.js +1 -0
  21. package/dist-lib/components/settings/VervoerdersSettingsCard.d.ts.map +1 -1
  22. package/dist-lib/components/settings/VervoerdersSettingsCard.js +2 -5
  23. package/dist-lib/hooks/useCapacityCheck.d.ts +10 -0
  24. package/dist-lib/hooks/useCapacityCheck.d.ts.map +1 -0
  25. package/dist-lib/hooks/useCapacityCheck.js +22 -0
  26. package/dist-lib/hooks/useEngineTasks.d.ts +14 -0
  27. package/dist-lib/hooks/useEngineTasks.d.ts.map +1 -0
  28. package/dist-lib/hooks/useEngineTasks.js +49 -0
  29. package/dist-lib/hooks/useOrderPlanning.d.ts +8 -2
  30. package/dist-lib/hooks/useOrderPlanning.d.ts.map +1 -1
  31. package/dist-lib/hooks/useOrderPlanning.js +95 -93
  32. package/dist-lib/index.d.ts +0 -3
  33. package/dist-lib/index.d.ts.map +1 -1
  34. package/dist-lib/index.js +1 -5
  35. package/dist-lib/integrations/supabase/auth-middleware.d.ts +9010 -5433
  36. package/dist-lib/integrations/supabase/auth-middleware.d.ts.map +1 -1
  37. package/dist-lib/integrations/supabase/client.d.ts +9010 -5433
  38. package/dist-lib/integrations/supabase/client.d.ts.map +1 -1
  39. package/dist-lib/integrations/supabase/client.server.d.ts +9010 -5433
  40. package/dist-lib/integrations/supabase/client.server.d.ts.map +1 -1
  41. package/dist-lib/integrations/supabase/types.d.ts +9184 -5544
  42. package/dist-lib/integrations/supabase/types.d.ts.map +1 -1
  43. package/dist-lib/lib/afhandelingSettings.functions.d.ts +7186 -32
  44. package/dist-lib/lib/afhandelingSettings.functions.d.ts.map +1 -1
  45. package/dist-lib/lib/carriers.functions.d.ts +17965 -80
  46. package/dist-lib/lib/carriers.functions.d.ts.map +1 -1
  47. package/dist-lib/lib/cartAssignments.functions.d.ts +17965 -80
  48. package/dist-lib/lib/cartAssignments.functions.d.ts.map +1 -1
  49. package/dist-lib/lib/cartControl.functions.d.ts +35962 -170
  50. package/dist-lib/lib/cartControl.functions.d.ts.map +1 -1
  51. package/dist-lib/lib/cartControl.functions.js +103 -13
  52. package/dist-lib/lib/floriday.functions.d.ts +9010 -5433
  53. package/dist-lib/lib/floriday.functions.d.ts.map +1 -1
  54. package/dist-lib/lib/logisticsEngine/capacity.d.ts +19 -0
  55. package/dist-lib/lib/logisticsEngine/capacity.d.ts.map +1 -0
  56. package/dist-lib/lib/logisticsEngine/capacity.js +91 -0
  57. package/dist-lib/lib/logisticsEngine/engine.d.ts +99 -0
  58. package/dist-lib/lib/logisticsEngine/engine.d.ts.map +1 -0
  59. package/dist-lib/lib/logisticsEngine/engine.js +102 -0
  60. package/dist-lib/lib/logisticsEngine/reschedule.d.ts +65 -0
  61. package/dist-lib/lib/logisticsEngine/reschedule.d.ts.map +1 -0
  62. package/dist-lib/lib/logisticsEngine/reschedule.js +86 -0
  63. package/dist-lib/lib/logisticsEngine/staffPlanning.d.ts +37 -0
  64. package/dist-lib/lib/logisticsEngine/staffPlanning.d.ts.map +1 -0
  65. package/dist-lib/lib/logisticsEngine/staffPlanning.js +100 -0
  66. package/dist-lib/lib/serverFnError.d.ts +10 -0
  67. package/dist-lib/lib/serverFnError.d.ts.map +1 -0
  68. package/dist-lib/lib/serverFnError.js +29 -0
  69. package/dist-lib/lib/serverRoutes/index.d.ts +0 -1
  70. package/dist-lib/lib/serverRoutes/index.d.ts.map +1 -1
  71. package/dist-lib/lib/serverRoutes/index.js +0 -1
  72. package/dist-lib/lib/timezone.d.ts +27 -0
  73. package/dist-lib/lib/timezone.d.ts.map +1 -0
  74. package/dist-lib/lib/timezone.js +68 -0
  75. package/package.json +6 -21
  76. package/dist-lib/components/engine/CapaciteitsmaatregelenPage.d.ts +0 -2
  77. package/dist-lib/components/engine/CapaciteitsmaatregelenPage.d.ts.map +0 -1
  78. package/dist-lib/components/engine/CapaciteitsmaatregelenPage.js +0 -40
  79. package/dist-lib/components/engine/CapaciteitsmonitorPage.d.ts +0 -2
  80. package/dist-lib/components/engine/CapaciteitsmonitorPage.d.ts.map +0 -1
  81. package/dist-lib/components/engine/CapaciteitsmonitorPage.js +0 -49
  82. package/dist-lib/components/engine/FormulesPage.d.ts +0 -2
  83. package/dist-lib/components/engine/FormulesPage.d.ts.map +0 -1
  84. package/dist-lib/components/engine/FormulesPage.js +0 -252
  85. package/dist-lib/components/engine/PlaceholderPage.d.ts +0 -6
  86. package/dist-lib/components/engine/PlaceholderPage.d.ts.map +0 -1
  87. package/dist-lib/components/engine/PlaceholderPage.js +0 -6
  88. package/dist-lib/components/engine/StrategieenPage.d.ts +0 -2
  89. package/dist-lib/components/engine/StrategieenPage.d.ts.map +0 -1
  90. package/dist-lib/components/engine/StrategieenPage.js +0 -80
  91. package/dist-lib/lib/logisticsEngine/capacity.functions.d.ts +0 -64978
  92. package/dist-lib/lib/logisticsEngine/capacity.functions.d.ts.map +0 -1
  93. package/dist-lib/lib/logisticsEngine/capacity.functions.js +0 -90
  94. package/dist-lib/lib/logisticsEngine/config.d.ts +0 -140
  95. package/dist-lib/lib/logisticsEngine/config.d.ts.map +0 -1
  96. package/dist-lib/lib/logisticsEngine/config.js +0 -488
  97. package/dist-lib/lib/logisticsEngine/enginePickTime.d.ts +0 -29
  98. package/dist-lib/lib/logisticsEngine/enginePickTime.d.ts.map +0 -1
  99. package/dist-lib/lib/logisticsEngine/enginePickTime.js +0 -136
  100. package/dist-lib/lib/logisticsEngine/evaluate.functions.d.ts +0 -16278
  101. package/dist-lib/lib/logisticsEngine/evaluate.functions.d.ts.map +0 -1
  102. package/dist-lib/lib/logisticsEngine/evaluate.functions.js +0 -104
  103. package/dist-lib/lib/logisticsEngine/expression.d.ts +0 -21
  104. package/dist-lib/lib/logisticsEngine/expression.d.ts.map +0 -1
  105. package/dist-lib/lib/logisticsEngine/expression.js +0 -263
  106. package/dist-lib/lib/logisticsEngine/formulas.functions.d.ts +0 -32512
  107. package/dist-lib/lib/logisticsEngine/formulas.functions.d.ts.map +0 -1
  108. package/dist-lib/lib/logisticsEngine/formulas.functions.js +0 -58
  109. package/dist-lib/lib/logisticsEngine/safetyLayer.d.ts +0 -83
  110. package/dist-lib/lib/logisticsEngine/safetyLayer.d.ts.map +0 -1
  111. package/dist-lib/lib/logisticsEngine/safetyLayer.js +0 -182
  112. package/dist-lib/lib/logisticsEngine/strategies.functions.d.ts +0 -129961
  113. package/dist-lib/lib/logisticsEngine/strategies.functions.d.ts.map +0 -1
  114. package/dist-lib/lib/logisticsEngine/strategies.functions.js +0 -176
  115. package/dist-lib/lib/logisticsEngine/variables.d.ts +0 -29
  116. package/dist-lib/lib/logisticsEngine/variables.d.ts.map +0 -1
  117. package/dist-lib/lib/logisticsEngine/variables.js +0 -144
  118. package/dist-lib/lib/logisticsEngine/wizard.functions.d.ts +0 -64976
  119. package/dist-lib/lib/logisticsEngine/wizard.functions.d.ts.map +0 -1
  120. package/dist-lib/lib/logisticsEngine/wizard.functions.js +0 -175
  121. package/dist-lib/lib/serverRoutes/logisticsTick.handler.d.ts +0 -3
  122. package/dist-lib/lib/serverRoutes/logisticsTick.handler.d.ts.map +0 -1
  123. package/dist-lib/lib/serverRoutes/logisticsTick.handler.js +0 -42
@@ -1,80 +0,0 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import { useState } from "react";
3
- import { Link } from "@tanstack/react-router";
4
- import { useMutation, useQuery, useQueryClient } from "@tanstack/react-query";
5
- import { useServerFn } from "@tanstack/react-start";
6
- import { Card, CardContent, CardHeader, CardTitle, CardDescription, Button, Input, Label, Textarea, Badge, Dialog, DialogContent, DialogHeader, DialogTitle, DialogFooter, toast, } from "@flowselections/core";
7
- import { Plus, Power, PowerOff, Pencil, Trash2, CalendarRange, Sigma } from "lucide-react";
8
- import { listStrategies, saveStrategy, deleteStrategy, activateStrategy, deactivateAllStrategies, listSchedules, saveSchedule, deleteSchedule, } from "../../lib/logisticsEngine/strategies.functions";
9
- export function StrategieenPage() {
10
- const qc = useQueryClient();
11
- const fetchStrategies = useServerFn(listStrategies);
12
- const fetchSchedules = useServerFn(listSchedules);
13
- const saveStrat = useServerFn(saveStrategy);
14
- const activate = useServerFn(activateStrategy);
15
- const deactivateAll = useServerFn(deactivateAllStrategies);
16
- const delStrat = useServerFn(deleteStrategy);
17
- const saveSched = useServerFn(saveSchedule);
18
- const delSched = useServerFn(deleteSchedule);
19
- const strategiesQ = useQuery({
20
- queryKey: ["logistics", "strategies"],
21
- queryFn: async () => (await fetchStrategies()).strategies,
22
- });
23
- const schedulesQ = useQuery({
24
- queryKey: ["logistics", "schedules"],
25
- queryFn: async () => (await fetchSchedules()).schedules,
26
- });
27
- const [editOpen, setEditOpen] = useState(false);
28
- const [editing, setEditing] = useState(null);
29
- const [schedOpen, setSchedOpen] = useState(false);
30
- const [schedStrategy, setSchedStrategy] = useState(null);
31
- const invalidate = () => {
32
- void qc.invalidateQueries({ queryKey: ["logistics", "strategies"] });
33
- void qc.invalidateQueries({ queryKey: ["logistics", "schedules"] });
34
- };
35
- const saveMut = useMutation({
36
- mutationFn: (p) => saveStrat({ data: p }),
37
- onSuccess: () => { invalidate(); setEditOpen(false); toast.success("Strategie opgeslagen"); },
38
- onError: (e) => toast.error(e.message),
39
- });
40
- const activateMut = useMutation({
41
- mutationFn: (id) => activate({ data: { id } }),
42
- onSuccess: () => { invalidate(); toast.success("Strategie geactiveerd"); },
43
- });
44
- const delMut = useMutation({
45
- mutationFn: (id) => delStrat({ data: { id } }),
46
- onSuccess: () => { invalidate(); toast.success("Verwijderd"); },
47
- });
48
- const deactivateMut = useMutation({
49
- mutationFn: () => deactivateAll(),
50
- onSuccess: () => { invalidate(); toast.success("Alle strategieën gepauzeerd"); },
51
- });
52
- return (_jsxs("main", { className: "p-6 space-y-6", children: [_jsxs("div", { className: "flex items-start justify-between", children: [_jsxs("div", { children: [_jsx("h1", { className: "text-2xl font-semibold", children: "Logistieke Strategie\u00EBn" }), _jsx("p", { className: "text-sm text-muted-foreground", children: "Iedere strategie bevat zijn eigen complete instellingen. Er mag altijd maximaal \u00E9\u00E9n strategie actief zijn." })] }), _jsxs("div", { className: "flex gap-2", children: [_jsxs(Button, { variant: "outline", onClick: () => deactivateMut.mutate(), children: [_jsx(PowerOff, { className: "w-4 h-4 mr-2" }), " Alles pauzeren"] }), _jsxs(Button, { onClick: () => { setEditing({ name: "", priority: 100, color: "#3b82f6" }); setEditOpen(true); }, children: [_jsx(Plus, { className: "w-4 h-4 mr-2" }), " Nieuwe strategie"] })] })] }), _jsxs("div", { className: "grid gap-3 md:grid-cols-2", children: [(strategiesQ.data ?? []).map((s) => (_jsxs(Card, { className: s.is_active ? "border-primary" : "", children: [_jsxs(CardHeader, { className: "flex-row items-start justify-between gap-2 space-y-0", children: [_jsxs("div", { className: "flex items-center gap-3", children: [_jsx("div", { className: "w-4 h-4 rounded", style: { background: s.color } }), _jsxs("div", { children: [_jsx(CardTitle, { className: "text-base", children: s.name }), _jsxs(CardDescription, { children: ["prio ", s.priority, " \u00B7 v", s.version, " \u00B7 gewijzigd ", new Date(s.updated_at).toLocaleString("nl-NL")] })] })] }), s.is_active && _jsx(Badge, { children: "Actief" })] }), _jsxs(CardContent, { className: "space-y-3", children: [s.description && _jsx("p", { className: "text-sm text-muted-foreground", children: s.description }), _jsxs("div", { className: "flex flex-wrap gap-2", children: [_jsxs(Button, { size: "sm", variant: s.is_active ? "outline" : "default", onClick: () => activateMut.mutate(s.id), children: [_jsx(Power, { className: "w-4 h-4 mr-2" }), " ", s.is_active ? "Opnieuw activeren" : "Activeren"] }), _jsxs(Button, { size: "sm", variant: "outline", onClick: () => { setEditing(s); setEditOpen(true); }, children: [_jsx(Pencil, { className: "w-4 h-4 mr-2" }), " Bewerken"] }), _jsxs(Button, { size: "sm", variant: "outline", onClick: () => { setSchedStrategy(s); setSchedOpen(true); }, children: [_jsx(CalendarRange, { className: "w-4 h-4 mr-2" }), " Planner"] }), _jsx(Button, { size: "sm", variant: "outline", asChild: true, children: _jsxs(Link, { to: "/afhandeling/engine/formules", search: { strategy: s.id }, children: [_jsx(Sigma, { className: "w-4 h-4 mr-2" }), " Formules"] }) }), _jsx(Button, { size: "sm", variant: "ghost", className: "text-destructive", onClick: () => {
53
- if (confirm(`Verwijder strategie "${s.name}"?`))
54
- delMut.mutate(s.id);
55
- }, children: _jsx(Trash2, { className: "w-4 h-4" }) })] })] })] }, s.id))), (strategiesQ.data ?? []).length === 0 && !strategiesQ.isLoading && (_jsx(Card, { children: _jsx(CardContent, { className: "py-8 text-center text-muted-foreground", children: "Nog geen strategie\u00EBn. Klik op \"Nieuwe strategie\" om te starten." }) }))] }), _jsx(Dialog, { open: editOpen, onOpenChange: setEditOpen, children: _jsxs(DialogContent, { children: [_jsx(DialogHeader, { children: _jsx(DialogTitle, { children: editing?.id ? "Strategie bewerken" : "Nieuwe strategie" }) }), _jsxs("div", { className: "space-y-3", children: [_jsxs("div", { children: [_jsx(Label, { children: "Naam" }), _jsx(Input, { value: editing?.name ?? "", onChange: (e) => setEditing({ ...editing, name: e.target.value }) })] }), _jsxs("div", { children: [_jsx(Label, { children: "Omschrijving" }), _jsx(Textarea, { rows: 3, value: editing?.description ?? "", onChange: (e) => setEditing({ ...editing, description: e.target.value }) })] }), _jsxs("div", { className: "grid grid-cols-2 gap-3", children: [_jsxs("div", { children: [_jsx(Label, { children: "Prioriteit" }), _jsx(Input, { type: "number", value: editing?.priority ?? 100, onChange: (e) => setEditing({ ...editing, priority: Number(e.target.value) }) })] }), _jsxs("div", { children: [_jsx(Label, { children: "Kleur" }), _jsx(Input, { type: "color", value: editing?.color ?? "#3b82f6", onChange: (e) => setEditing({ ...editing, color: e.target.value }) })] })] })] }), _jsxs(DialogFooter, { children: [_jsx(Button, { variant: "outline", onClick: () => setEditOpen(false), children: "Annuleren" }), _jsx(Button, { onClick: () => saveMut.mutate({
56
- id: editing?.id, name: editing?.name ?? "",
57
- description: editing?.description ?? null,
58
- priority: editing?.priority, color: editing?.color,
59
- }), children: "Opslaan" })] })] }) }), _jsx(SchedulesDialog, { open: schedOpen, onOpenChange: setSchedOpen, strategy: schedStrategy, schedules: (schedulesQ.data ?? []).filter((x) => x.strategy_id === schedStrategy?.id), onSave: (p) => saveSched({ data: p }).then(invalidate), onDelete: (id) => delSched({ data: { id } }).then(invalidate) })] }));
60
- }
61
- function SchedulesDialog(props) {
62
- const [draft, setDraft] = useState({ rule_type: "date_range", start_date: "", end_date: "", condition_expression: "", priority: 100 });
63
- if (!props.strategy)
64
- return null;
65
- return (_jsx(Dialog, { open: props.open, onOpenChange: props.onOpenChange, children: _jsxs(DialogContent, { className: "max-w-2xl", children: [_jsx(DialogHeader, { children: _jsxs(DialogTitle, { children: ["Planner \u2014 ", props.strategy.name] }) }), _jsxs("div", { className: "space-y-4", children: [_jsxs("div", { className: "space-y-2", children: [props.schedules.length === 0 && (_jsx("p", { className: "text-sm text-muted-foreground", children: "Nog geen automatische regels. Voeg er een toe:" })), props.schedules.map((s) => (_jsxs("div", { className: "flex items-center justify-between border rounded p-2 text-sm", children: [_jsxs("div", { children: [_jsx(Badge, { variant: "outline", children: s.rule_type === "date_range" ? "Datum" : "Conditie" }), " ", s.rule_type === "date_range"
66
- ? `${s.start_date ?? "…"} → ${s.end_date ?? "…"}`
67
- : _jsx("code", { className: "bg-muted px-1 rounded", children: s.condition_expression }), _jsxs("span", { className: "text-muted-foreground ml-2", children: ["prio ", s.priority] })] }), _jsx(Button, { size: "sm", variant: "ghost", onClick: () => props.onDelete(s.id), children: _jsx(Trash2, { className: "w-4 h-4" }) })] }, s.id)))] }), _jsxs("div", { className: "border rounded p-3 space-y-3", children: [_jsxs("div", { className: "flex gap-2", children: [_jsx(Button, { size: "sm", variant: draft.rule_type === "date_range" ? "default" : "outline", onClick: () => setDraft({ ...draft, rule_type: "date_range" }), children: "Datumreeks" }), _jsx(Button, { size: "sm", variant: draft.rule_type === "condition" ? "default" : "outline", onClick: () => setDraft({ ...draft, rule_type: "condition" }), children: "Conditie" })] }), draft.rule_type === "date_range" ? (_jsxs("div", { className: "grid grid-cols-2 gap-2", children: [_jsxs("div", { children: [_jsx(Label, { children: "Van" }), _jsx(Input, { type: "date", value: draft.start_date, onChange: (e) => setDraft({ ...draft, start_date: e.target.value }) })] }), _jsxs("div", { children: [_jsx(Label, { children: "Tot" }), _jsx(Input, { type: "date", value: draft.end_date, onChange: (e) => setDraft({ ...draft, end_date: e.target.value }) })] })] })) : (_jsxs("div", { children: [_jsxs(Label, { children: ["Conditie-formule (bv. ", _jsx("code", { children: "openCarts > 40" }), ")"] }), _jsx(Input, { value: draft.condition_expression, onChange: (e) => setDraft({ ...draft, condition_expression: e.target.value }) })] })), _jsxs("div", { children: [_jsx(Label, { children: "Prioriteit" }), _jsx(Input, { type: "number", value: draft.priority, onChange: (e) => setDraft({ ...draft, priority: Number(e.target.value) }) })] }), _jsxs(Button, { size: "sm", onClick: async () => {
68
- await props.onSave({
69
- strategy_id: props.strategy.id,
70
- rule_type: draft.rule_type,
71
- start_date: draft.rule_type === "date_range" ? draft.start_date || null : null,
72
- end_date: draft.rule_type === "date_range" ? draft.end_date || null : null,
73
- condition_expression: draft.rule_type === "condition" ? draft.condition_expression : null,
74
- priority: draft.priority,
75
- is_enabled: true,
76
- });
77
- setDraft({ rule_type: "date_range", start_date: "", end_date: "", condition_expression: "", priority: 100 });
78
- toast.success("Regel toegevoegd");
79
- }, children: [_jsx(Plus, { className: "w-4 h-4 mr-2" }), " Regel toevoegen"] })] })] }), _jsx(DialogFooter, { children: _jsx(Button, { variant: "outline", onClick: () => props.onOpenChange(false), children: "Sluiten" }) })] }) }));
80
- }