@flowselections/floriday-verkoop-module 1.0.60 → 1.0.61

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 (140) hide show
  1. package/dist-lib/components/floriday/FlorydaySyncHealthBanner.d.ts +9 -0
  2. package/dist-lib/components/floriday/FlorydaySyncHealthBanner.d.ts.map +1 -0
  3. package/dist-lib/components/floriday/FlorydaySyncHealthBanner.js +26 -0
  4. package/dist-lib/components/karindeling/AfmetingenTab.d.ts +6 -0
  5. package/dist-lib/components/karindeling/AfmetingenTab.d.ts.map +1 -0
  6. package/dist-lib/components/karindeling/AfmetingenTab.js +128 -0
  7. package/dist-lib/components/karindeling/KarindelingPage.d.ts +2 -0
  8. package/dist-lib/components/karindeling/KarindelingPage.d.ts.map +1 -0
  9. package/dist-lib/components/karindeling/KarindelingPage.js +102 -0
  10. package/dist-lib/components/ui/dropdown-menu.d.ts +9 -0
  11. package/dist-lib/components/ui/dropdown-menu.d.ts.map +1 -0
  12. package/dist-lib/components/ui/dropdown-menu.js +14 -0
  13. package/dist-lib/components/verkoop/AnalyticsCards.d.ts +1 -1
  14. package/dist-lib/components/verkoop/AnalyticsCards.d.ts.map +1 -1
  15. package/dist-lib/components/verkoop/AutoFulfillmentStatusCard.d.ts +1 -1
  16. package/dist-lib/components/verkoop/AutoFulfillmentStatusCard.d.ts.map +1 -1
  17. package/dist-lib/components/verkoop/CartAssignmentWizard.d.ts +1 -1
  18. package/dist-lib/components/verkoop/CartAssignmentWizard.d.ts.map +1 -1
  19. package/dist-lib/components/verkoop/CartLayersDialog.d.ts +1 -1
  20. package/dist-lib/components/verkoop/CartLayersDialog.d.ts.map +1 -1
  21. package/dist-lib/components/verkoop/CreateOrderDialog.d.ts +5 -0
  22. package/dist-lib/components/verkoop/CreateOrderDialog.d.ts.map +1 -0
  23. package/dist-lib/components/verkoop/CreateOrderDialog.js +33 -0
  24. package/dist-lib/components/verkoop/CreateOrderPage.d.ts +1 -1
  25. package/dist-lib/components/verkoop/CreateOrderPage.d.ts.map +1 -1
  26. package/dist-lib/components/verkoop/DiagnoseConnectionDialog.d.ts +1 -1
  27. package/dist-lib/components/verkoop/DiagnoseConnectionDialog.d.ts.map +1 -1
  28. package/dist-lib/components/verkoop/EditLocalOrderDialog.d.ts +1 -1
  29. package/dist-lib/components/verkoop/EditLocalOrderDialog.d.ts.map +1 -1
  30. package/dist-lib/components/verkoop/EngineBufferCard.d.ts +1 -1
  31. package/dist-lib/components/verkoop/EngineBufferCard.d.ts.map +1 -1
  32. package/dist-lib/components/verkoop/InvoiceTimingSettings.d.ts +1 -1
  33. package/dist-lib/components/verkoop/InvoiceTimingSettings.d.ts.map +1 -1
  34. package/dist-lib/components/verkoop/OrderAfleverbrievenCard.d.ts +1 -1
  35. package/dist-lib/components/verkoop/OrderAfleverbrievenCard.d.ts.map +1 -1
  36. package/dist-lib/components/verkoop/OrderCarrierPicker.d.ts +1 -1
  37. package/dist-lib/components/verkoop/OrderCarrierPicker.d.ts.map +1 -1
  38. package/dist-lib/components/verkoop/OrderControlStatusCard.d.ts +1 -1
  39. package/dist-lib/components/verkoop/OrderControlStatusCard.d.ts.map +1 -1
  40. package/dist-lib/components/verkoop/OrderKarindelingCard.d.ts +1 -1
  41. package/dist-lib/components/verkoop/OrderKarindelingCard.d.ts.map +1 -1
  42. package/dist-lib/components/verkoop/OrderPickupMomentPicker.d.ts +1 -1
  43. package/dist-lib/components/verkoop/OrderPickupMomentPicker.d.ts.map +1 -1
  44. package/dist-lib/components/verkoop/OrderShipmentsCard.d.ts +1 -1
  45. package/dist-lib/components/verkoop/OrderShipmentsCard.d.ts.map +1 -1
  46. package/dist-lib/components/verkoop/ProductDimensionsSettings.d.ts +1 -1
  47. package/dist-lib/components/verkoop/ProductDimensionsSettings.d.ts.map +1 -1
  48. package/dist-lib/components/verkoop/SalesOrderDetailPage.d.ts +1 -1
  49. package/dist-lib/components/verkoop/SalesOrderDetailPage.d.ts.map +1 -1
  50. package/dist-lib/components/verkoop/SalesOrderDetailView.d.ts +1 -1
  51. package/dist-lib/components/verkoop/SalesOrderDetailView.d.ts.map +1 -1
  52. package/dist-lib/components/verkoop/SalesOrdersFilterPanel.d.ts +1 -1
  53. package/dist-lib/components/verkoop/SalesOrdersFilterPanel.d.ts.map +1 -1
  54. package/dist-lib/components/verkoop/SalesOrdersFilters.d.ts +1 -1
  55. package/dist-lib/components/verkoop/SalesOrdersFilters.d.ts.map +1 -1
  56. package/dist-lib/components/verkoop/SalesOrdersTable.d.ts +1 -2
  57. package/dist-lib/components/verkoop/SalesOrdersTable.d.ts.map +1 -1
  58. package/dist-lib/components/verkoop/SearchableSelect.d.ts +1 -1
  59. package/dist-lib/components/verkoop/SearchableSelect.d.ts.map +1 -1
  60. package/dist-lib/components/verkoop/StockConsumptionAlertsBanner.d.ts +1 -1
  61. package/dist-lib/components/verkoop/StockConsumptionAlertsBanner.d.ts.map +1 -1
  62. package/dist-lib/components/verkoop/VerkoopOrdersPage.d.ts +1 -1
  63. package/dist-lib/components/verkoop/VerkoopOrdersPage.d.ts.map +1 -1
  64. package/dist-lib/components/verkoop/WeekCalendar.d.ts +1 -1
  65. package/dist-lib/components/verkoop/WeekCalendar.d.ts.map +1 -1
  66. package/dist-lib/integrations/supabase/auth-middleware.d.ts +280 -0
  67. package/dist-lib/integrations/supabase/auth-middleware.d.ts.map +1 -1
  68. package/dist-lib/integrations/supabase/client.server.d.ts +280 -0
  69. package/dist-lib/integrations/supabase/client.server.d.ts.map +1 -1
  70. package/dist-lib/integrations/supabase/types.d.ts +280 -0
  71. package/dist-lib/integrations/supabase/types.d.ts.map +1 -1
  72. package/dist-lib/lib/buffer-events.functions.d.ts +280 -0
  73. package/dist-lib/lib/buffer-events.functions.d.ts.map +1 -1
  74. package/dist-lib/lib/cart-layers.functions.d.ts +1124 -36
  75. package/dist-lib/lib/cart-layers.functions.d.ts.map +1 -1
  76. package/dist-lib/lib/cart-lock.functions.d.ts +280 -0
  77. package/dist-lib/lib/cart-lock.functions.d.ts.map +1 -1
  78. package/dist-lib/lib/cart-planning-settings.functions.d.ts +3080 -0
  79. package/dist-lib/lib/cart-planning-settings.functions.d.ts.map +1 -1
  80. package/dist-lib/lib/cart-replan.functions.d.ts +840 -0
  81. package/dist-lib/lib/cart-replan.functions.d.ts.map +1 -1
  82. package/dist-lib/lib/create-order.functions.d.ts +4777 -102
  83. package/dist-lib/lib/create-order.functions.d.ts.map +1 -1
  84. package/dist-lib/lib/cron/push-order-statuses.d.ts +4 -0
  85. package/dist-lib/lib/cron/push-order-statuses.d.ts.map +1 -0
  86. package/dist-lib/lib/cron/push-order-statuses.js +23 -0
  87. package/dist-lib/lib/floriday/floriday.server.d.ts +14 -0
  88. package/dist-lib/lib/floriday/floriday.server.d.ts.map +1 -0
  89. package/dist-lib/lib/floriday/floriday.server.js +92 -0
  90. package/dist-lib/lib/floriday/sales-orders.functions.d.ts +4736 -0
  91. package/dist-lib/lib/floriday/sales-orders.functions.d.ts.map +1 -0
  92. package/dist-lib/lib/floriday/sales-orders.functions.js +193 -0
  93. package/dist-lib/lib/floriday-auto-fulfillment.functions.d.ts +13288 -2362
  94. package/dist-lib/lib/floriday-auto-fulfillment.functions.d.ts.map +1 -1
  95. package/dist-lib/lib/floriday-logistic-labels.functions.d.ts +560 -0
  96. package/dist-lib/lib/floriday-logistic-labels.functions.d.ts.map +1 -1
  97. package/dist-lib/lib/floriday-mirror.functions.d.ts +280 -0
  98. package/dist-lib/lib/floriday-mirror.functions.d.ts.map +1 -1
  99. package/dist-lib/lib/floriday-mirror.functions.js +282 -117
  100. package/dist-lib/lib/floriday-public.functions.d.ts +1960 -0
  101. package/dist-lib/lib/floriday-public.functions.d.ts.map +1 -1
  102. package/dist-lib/lib/floriday-status-sync.server.d.ts +14 -0
  103. package/dist-lib/lib/floriday-status-sync.server.d.ts.map +1 -0
  104. package/dist-lib/lib/floriday-status-sync.server.js +130 -0
  105. package/dist-lib/lib/floriday-writes.functions.d.ts +560 -0
  106. package/dist-lib/lib/floriday-writes.functions.d.ts.map +1 -1
  107. package/dist-lib/lib/invoice-timing.functions.d.ts +1120 -0
  108. package/dist-lib/lib/invoice-timing.functions.d.ts.map +1 -1
  109. package/dist-lib/lib/load-carriers.functions.d.ts +280 -0
  110. package/dist-lib/lib/load-carriers.functions.d.ts.map +1 -1
  111. package/dist-lib/lib/logistics-engine.functions.d.ts +1405 -15
  112. package/dist-lib/lib/logistics-engine.functions.d.ts.map +1 -1
  113. package/dist-lib/lib/logistics-stock.functions.d.ts +560 -0
  114. package/dist-lib/lib/logistics-stock.functions.d.ts.map +1 -1
  115. package/dist-lib/lib/order-addresses.functions.d.ts +280 -0
  116. package/dist-lib/lib/order-addresses.functions.d.ts.map +1 -1
  117. package/dist-lib/lib/order-buffers.functions.d.ts +840 -0
  118. package/dist-lib/lib/order-buffers.functions.d.ts.map +1 -1
  119. package/dist-lib/lib/order-carrier.functions.d.ts +560 -0
  120. package/dist-lib/lib/order-carrier.functions.d.ts.map +1 -1
  121. package/dist-lib/lib/order-fulfill.functions.d.ts +280 -0
  122. package/dist-lib/lib/order-fulfill.functions.d.ts.map +1 -1
  123. package/dist-lib/lib/order-pickup.functions.d.ts +560 -0
  124. package/dist-lib/lib/order-pickup.functions.d.ts.map +1 -1
  125. package/dist-lib/lib/order-shipments.functions.d.ts +1120 -0
  126. package/dist-lib/lib/order-shipments.functions.d.ts.map +1 -1
  127. package/dist-lib/lib/product-dimensions.functions.d.ts +560 -0
  128. package/dist-lib/lib/product-dimensions.functions.d.ts.map +1 -1
  129. package/dist-lib/lib/salesorders-list.functions.d.ts +560 -0
  130. package/dist-lib/lib/salesorders-list.functions.d.ts.map +1 -1
  131. package/dist-lib/lib/salesorders-list.server.d.ts.map +1 -1
  132. package/dist-lib/lib/salesorders-list.server.js +62 -3
  133. package/dist-lib/lib/salesorders.functions.d.ts +1680 -0
  134. package/dist-lib/lib/salesorders.functions.d.ts.map +1 -1
  135. package/dist-lib/lib/salesorders.functions.js +6 -1
  136. package/dist-lib/lib/stock-consumption-alerts.functions.d.ts +560 -0
  137. package/dist-lib/lib/stock-consumption-alerts.functions.d.ts.map +1 -1
  138. package/dist-lib/lib/tradeitems.functions.d.ts +280 -0
  139. package/dist-lib/lib/tradeitems.functions.d.ts.map +1 -1
  140. package/package.json +1 -1
@@ -0,0 +1,14 @@
1
+ type SyncAction = "commit" | "cancel" | null;
2
+ /** Welke Floriday-actie hoort bij onze opgeslagen status? */
3
+ export declare function actionForStatus(status: string): SyncAction;
4
+ export interface StatusPushResult {
5
+ ok: boolean;
6
+ processed: number;
7
+ pushed: number;
8
+ skipped: number;
9
+ failed: number;
10
+ errors: string[];
11
+ }
12
+ export declare function pushOrderStatusesToFloriday(limit?: number): Promise<StatusPushResult>;
13
+ export {};
14
+ //# sourceMappingURL=floriday-status-sync.server.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"floriday-status-sync.server.d.ts","sourceRoot":"","sources":["../../src/lib/floriday-status-sync.server.ts"],"names":[],"mappings":"AAWA,KAAK,UAAU,GAAG,QAAQ,GAAG,QAAQ,GAAG,IAAI,CAAC;AAW7C,6DAA6D;AAC7D,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,UAAU,CAM1D;AAED,MAAM,WAAW,gBAAgB;IAC/B,EAAE,EAAE,OAAO,CAAC;IACZ,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB;AAED,wBAAsB,2BAA2B,CAC/C,KAAK,SAAM,GACV,OAAO,CAAC,gBAAgB,CAAC,CAuH3B"}
@@ -0,0 +1,130 @@
1
+ // Statuswijzigingen uit ons ERP doorzetten naar Floriday.
2
+ //
3
+ // Floriday kent voor een verkooporder maar twee schrijfacties op de status:
4
+ // PATCH /sales-orders/{id}/commit (ACCEPTED -> COMMITTED)
5
+ // PATCH /sales-orders/{id}/cancel (ACCEPTED -> CANCELLED)
6
+ // Verzending/levering gaat in Floriday niet via de verkooporder maar via
7
+ // fulfillment-orders (afleverbrieven); dat blijft de bestaande route.
8
+ //
9
+ // Geen omgevingswaarden in deze module: environment en sleutels komen uit
10
+ // floriday_connections / de centrale auth-module.
11
+ const CANCEL_STATUSES = new Set([
12
+ "geannuleerd",
13
+ "cancelled",
14
+ "canceled",
15
+ "vervallen",
16
+ "afgewezen",
17
+ "rejected",
18
+ ]);
19
+ /** Welke Floriday-actie hoort bij onze opgeslagen status? */
20
+ export function actionForStatus(status) {
21
+ const s = String(status ?? "").trim().toLowerCase();
22
+ if (CANCEL_STATUSES.has(s))
23
+ return "cancel";
24
+ // Alle overige werkstatussen betekenen: wij gaan hem leveren.
25
+ if (s.length === 0)
26
+ return null;
27
+ return "commit";
28
+ }
29
+ export async function pushOrderStatusesToFloriday(limit = 100) {
30
+ const { supabaseAdmin } = await import("../integrations/supabase/client.server");
31
+ const { florydayWrite } = await import("./floriday-gateway.server");
32
+ const result = {
33
+ ok: true,
34
+ processed: 0,
35
+ pushed: 0,
36
+ skipped: 0,
37
+ failed: 0,
38
+ errors: [],
39
+ };
40
+ const { data: queue, error: qErr } = await supabaseAdmin
41
+ .from("floriday_status_sync_queue")
42
+ .select("order_id, floriday_sales_order_id, target_status, attempts")
43
+ .eq("state", "pending")
44
+ .order("requested_at", { ascending: true })
45
+ .limit(Math.min(500, Math.max(1, limit)));
46
+ if (qErr)
47
+ throw new Error(`statuswachtrij lezen faalde: ${qErr.message}`);
48
+ if (!queue || queue.length === 0)
49
+ return result;
50
+ // Actieve Floriday-connectie bepaalt de omgeving. Ontbreekt die, dan stoppen
51
+ // we bewust met een duidelijke fout in plaats van een aanname.
52
+ const { data: conn } = await supabaseAdmin
53
+ .from("floriday_connections")
54
+ .select("environment")
55
+ .eq("is_active", true)
56
+ .limit(1)
57
+ .maybeSingle();
58
+ const environment = conn?.environment
59
+ ? String(conn.environment).toLowerCase() === "production" ||
60
+ String(conn.environment).toLowerCase() === "live"
61
+ ? "live"
62
+ : "staging"
63
+ : null;
64
+ if (!environment) {
65
+ throw new Error("Geen actieve Floriday-connectie gevonden; statuswijzigingen worden niet verstuurd.");
66
+ }
67
+ const salesOrderIds = queue.map((q) => String(q.floriday_sales_order_id));
68
+ const { data: cached } = await supabaseAdmin
69
+ .from("floriday_salesorders_cache")
70
+ .select("sales_order_id, data")
71
+ .in("sales_order_id", salesOrderIds);
72
+ const floridayStatusById = new Map();
73
+ for (const row of cached ?? []) {
74
+ const status = String((row.data ?? {})?.status ?? "").toUpperCase();
75
+ floridayStatusById.set(String(row.sales_order_id), status);
76
+ }
77
+ for (const item of queue) {
78
+ result.processed += 1;
79
+ const orderId = String(item.order_id);
80
+ const salesOrderId = String(item.floriday_sales_order_id);
81
+ const action = actionForStatus(String(item.target_status ?? ""));
82
+ const currentFloriday = floridayStatusById.get(salesOrderId) ?? "";
83
+ const markDone = async (state, error) => {
84
+ await supabaseAdmin.from("floriday_status_sync_queue")
85
+ .update({
86
+ state,
87
+ error,
88
+ attempts: Number(item.attempts ?? 0) + 1,
89
+ processed_at: new Date().toISOString(),
90
+ })
91
+ .eq("order_id", orderId);
92
+ };
93
+ if (!action) {
94
+ result.skipped += 1;
95
+ await markDone("skipped", "Geen Floriday-actie voor deze status");
96
+ continue;
97
+ }
98
+ // Floriday accepteert commit/cancel alleen vanuit ACCEPTED. Staat de order
99
+ // daar al verder, dan is er niets te doen (en is dat geen fout).
100
+ if (currentFloriday && currentFloriday !== "ACCEPTED") {
101
+ const alreadyThere = (action === "cancel" && currentFloriday === "CANCELLED") ||
102
+ (action === "commit" && currentFloriday === "COMMITTED");
103
+ result.skipped += 1;
104
+ await markDone(alreadyThere ? "done" : "skipped", alreadyThere
105
+ ? null
106
+ : `Floriday-status is ${currentFloriday}; ${action} is daar niet meer toegestaan`);
107
+ continue;
108
+ }
109
+ const res = await florydayWrite(supabaseAdmin, environment, {
110
+ module: "sales",
111
+ action: `sales-order-${action}`,
112
+ method: "PATCH",
113
+ path: `/sales-orders/${encodeURIComponent(salesOrderId)}/${action}`,
114
+ referenceId: salesOrderId,
115
+ }, null);
116
+ if (res.ok) {
117
+ result.pushed += 1;
118
+ await markDone("done", null);
119
+ }
120
+ else {
121
+ result.failed += 1;
122
+ const msg = `${salesOrderId}: ${res.error ?? `HTTP ${res.status}`}`;
123
+ result.errors.push(msg);
124
+ await markDone("failed", msg.slice(0, 500));
125
+ }
126
+ }
127
+ if (result.failed > 0)
128
+ result.ok = false;
129
+ return result;
130
+ }