@flowselections/floriday-verkoop-module 1.0.66 → 1.0.67
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/verkoop/AnalyticsCards.d.ts +1 -1
- package/dist-lib/components/verkoop/AnalyticsCards.d.ts.map +1 -1
- package/dist-lib/components/verkoop/CartAssignmentWizard.d.ts +1 -1
- package/dist-lib/components/verkoop/CartAssignmentWizard.d.ts.map +1 -1
- package/dist-lib/components/verkoop/CartAssignmentWizard.js +1 -1
- package/dist-lib/components/verkoop/CartLayersDialog.d.ts +1 -1
- package/dist-lib/components/verkoop/CartLayersDialog.d.ts.map +1 -1
- package/dist-lib/components/verkoop/CartLayersDialog.js +1 -1
- package/dist-lib/components/verkoop/CreateOrderPage.d.ts +1 -1
- package/dist-lib/components/verkoop/CreateOrderPage.d.ts.map +1 -1
- package/dist-lib/components/verkoop/CreateOrderPage.js +5 -5
- package/dist-lib/components/verkoop/DiagnoseConnectionDialog.d.ts +1 -1
- package/dist-lib/components/verkoop/DiagnoseConnectionDialog.d.ts.map +1 -1
- package/dist-lib/components/verkoop/EditLocalOrderDialog.d.ts +1 -1
- package/dist-lib/components/verkoop/EditLocalOrderDialog.d.ts.map +1 -1
- package/dist-lib/components/verkoop/EngineBufferCard.d.ts +1 -1
- package/dist-lib/components/verkoop/EngineBufferCard.d.ts.map +1 -1
- package/dist-lib/components/verkoop/EngineBufferCard.js +1 -1
- package/dist-lib/components/verkoop/InvoiceTimingSettings.d.ts +1 -1
- package/dist-lib/components/verkoop/InvoiceTimingSettings.d.ts.map +1 -1
- package/dist-lib/components/verkoop/InvoiceTimingSettings.js +2 -2
- package/dist-lib/components/verkoop/OrderAfleverbrievenCard.d.ts +1 -1
- package/dist-lib/components/verkoop/OrderAfleverbrievenCard.d.ts.map +1 -1
- package/dist-lib/components/verkoop/OrderAfleverbrievenCard.js +1 -1
- package/dist-lib/components/verkoop/OrderCarrierPicker.d.ts +1 -1
- package/dist-lib/components/verkoop/OrderCarrierPicker.d.ts.map +1 -1
- package/dist-lib/components/verkoop/OrderCarrierPicker.js +1 -1
- package/dist-lib/components/verkoop/OrderControlStatusCard.d.ts +1 -1
- package/dist-lib/components/verkoop/OrderControlStatusCard.d.ts.map +1 -1
- package/dist-lib/components/verkoop/OrderKarindelingCard.d.ts +2 -2
- package/dist-lib/components/verkoop/OrderKarindelingCard.d.ts.map +1 -1
- package/dist-lib/components/verkoop/OrderKarindelingCard.js +4 -4
- package/dist-lib/components/verkoop/OrderLinePackingCard.d.ts +1 -1
- package/dist-lib/components/verkoop/OrderLinePackingCard.d.ts.map +1 -1
- package/dist-lib/components/verkoop/OrderPickupMomentPicker.d.ts +1 -1
- package/dist-lib/components/verkoop/OrderPickupMomentPicker.d.ts.map +1 -1
- package/dist-lib/components/verkoop/OrderPickupMomentPicker.js +1 -1
- package/dist-lib/components/verkoop/OrderShipmentsCard.d.ts +2 -2
- package/dist-lib/components/verkoop/OrderShipmentsCard.d.ts.map +1 -1
- package/dist-lib/components/verkoop/OrderShipmentsCard.js +2 -2
- package/dist-lib/components/verkoop/ProductDimensionsSettings.d.ts +1 -1
- package/dist-lib/components/verkoop/ProductDimensionsSettings.d.ts.map +1 -1
- package/dist-lib/components/verkoop/ProductDimensionsSettings.js +1 -1
- package/dist-lib/components/verkoop/SalesOrderDetailPage.d.ts +1 -1
- package/dist-lib/components/verkoop/SalesOrderDetailPage.d.ts.map +1 -1
- package/dist-lib/components/verkoop/SalesOrderDetailPage.js +12 -12
- package/dist-lib/components/verkoop/SalesOrderDetailView.d.ts +1 -1
- package/dist-lib/components/verkoop/SalesOrderDetailView.d.ts.map +1 -1
- package/dist-lib/components/verkoop/SalesOrdersFilterPanel.d.ts +1 -1
- package/dist-lib/components/verkoop/SalesOrdersFilterPanel.d.ts.map +1 -1
- package/dist-lib/components/verkoop/SalesOrdersFilters.d.ts +1 -1
- package/dist-lib/components/verkoop/SalesOrdersFilters.d.ts.map +1 -1
- package/dist-lib/components/verkoop/SalesOrdersTable.d.ts +2 -1
- package/dist-lib/components/verkoop/SalesOrdersTable.d.ts.map +1 -1
- package/dist-lib/components/verkoop/SalesOrdersTable.js +3 -3
- package/dist-lib/components/verkoop/SearchableSelect.d.ts +1 -1
- package/dist-lib/components/verkoop/SearchableSelect.d.ts.map +1 -1
- package/dist-lib/components/verkoop/StockConsumptionAlertsBanner.d.ts +1 -1
- package/dist-lib/components/verkoop/StockConsumptionAlertsBanner.d.ts.map +1 -1
- package/dist-lib/components/verkoop/VerkoopOrdersPage.d.ts +1 -1
- package/dist-lib/components/verkoop/VerkoopOrdersPage.d.ts.map +1 -1
- package/dist-lib/components/verkoop/WeekCalendar.d.ts +1 -1
- package/dist-lib/components/verkoop/WeekCalendar.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/tradeitems.functions.d.ts +1117 -12
- package/dist-lib/lib/tradeitems.functions.d.ts.map +1 -1
- package/dist-lib/lib/useBufferEvents.d.ts +2 -2
- package/dist-lib/lib/useBufferEvents.d.ts.map +1 -1
- package/dist-lib/lib/useLocalSalesOrderDetailQuery.d.ts +2 -2
- package/dist-lib/lib/useLocalSalesOrderDetailQuery.d.ts.map +1 -1
- package/dist-lib/lib/useSalesOrderDetailQuery.d.ts +1 -1
- package/dist-lib/lib/useSalesOrderDetailQuery.d.ts.map +1 -1
- package/dist-lib/lib/useSalesOrdersQuery.d.ts +1 -1
- package/dist-lib/lib/useSalesOrdersQuery.d.ts.map +1 -1
- package/package.json +131 -131
- package/dist-lib/components/floriday/FlorydaySyncHealthBanner.d.ts +0 -9
- package/dist-lib/components/floriday/FlorydaySyncHealthBanner.d.ts.map +0 -1
- package/dist-lib/components/floriday/FlorydaySyncHealthBanner.js +0 -26
- package/dist-lib/components/karindeling/AfmetingenTab.d.ts +0 -6
- package/dist-lib/components/karindeling/AfmetingenTab.d.ts.map +0 -1
- package/dist-lib/components/karindeling/AfmetingenTab.js +0 -128
- package/dist-lib/components/karindeling/KarindelingPage.d.ts +0 -2
- package/dist-lib/components/karindeling/KarindelingPage.d.ts.map +0 -1
- package/dist-lib/components/karindeling/KarindelingPage.js +0 -102
- package/dist-lib/components/ui/dropdown-menu.d.ts +0 -9
- package/dist-lib/components/ui/dropdown-menu.d.ts.map +0 -1
- package/dist-lib/components/ui/dropdown-menu.js +0 -14
- package/dist-lib/components/verkoop/AutoFulfillmentStatusCard.d.ts +0 -4
- package/dist-lib/components/verkoop/AutoFulfillmentStatusCard.d.ts.map +0 -1
- package/dist-lib/components/verkoop/AutoFulfillmentStatusCard.js +0 -95
- package/dist-lib/components/verkoop/CreateOrderDialog.d.ts +0 -5
- package/dist-lib/components/verkoop/CreateOrderDialog.d.ts.map +0 -1
- package/dist-lib/components/verkoop/CreateOrderDialog.js +0 -33
- package/dist-lib/lib/cron/mirror-floriday-orders.d.ts +0 -4
- package/dist-lib/lib/cron/mirror-floriday-orders.d.ts.map +0 -1
- package/dist-lib/lib/cron/mirror-floriday-orders.js +0 -23
- package/dist-lib/lib/cron/push-order-statuses.d.ts +0 -4
- package/dist-lib/lib/cron/push-order-statuses.d.ts.map +0 -1
- package/dist-lib/lib/cron/push-order-statuses.js +0 -23
- package/dist-lib/lib/floriday/floriday.server.d.ts +0 -14
- package/dist-lib/lib/floriday/floriday.server.d.ts.map +0 -1
- package/dist-lib/lib/floriday/floriday.server.js +0 -92
- package/dist-lib/lib/floriday/sales-orders.functions.d.ts +0 -4736
- package/dist-lib/lib/floriday/sales-orders.functions.d.ts.map +0 -1
- package/dist-lib/lib/floriday/sales-orders.functions.js +0 -193
- package/dist-lib/lib/floriday-auto-fulfillment.functions.d.ts +0 -77581
- package/dist-lib/lib/floriday-auto-fulfillment.functions.d.ts.map +0 -1
- package/dist-lib/lib/floriday-auto-fulfillment.functions.js +0 -65
- package/dist-lib/lib/floriday-auto-fulfillment.server.d.ts +0 -21
- package/dist-lib/lib/floriday-auto-fulfillment.server.d.ts.map +0 -1
- package/dist-lib/lib/floriday-auto-fulfillment.server.js +0 -352
- package/dist-lib/lib/floriday-status-sync.server.d.ts +0 -14
- package/dist-lib/lib/floriday-status-sync.server.d.ts.map +0 -1
- package/dist-lib/lib/floriday-status-sync.server.js +0 -130
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/** Verse buffergegevens na elk Engine-seintje. */
|
|
2
|
-
export declare function useBufferEvents(enabled?: boolean): import("@tanstack/react-query").UseQueryResult<
|
|
2
|
+
export declare function useBufferEvents(enabled?: boolean): import("@tanstack/react-query").UseQueryResult<{
|
|
3
3
|
events: import("./buffer-events.functions").BufferEventRow[];
|
|
4
|
-
}
|
|
4
|
+
}, Error>;
|
|
5
5
|
//# sourceMappingURL=useBufferEvents.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useBufferEvents.d.ts","sourceRoot":"","sources":["../../src/lib/useBufferEvents.ts"],"names":[],"mappings":"AAWA,kDAAkD;AAClD,wBAAgB,eAAe,CAAC,OAAO,UAAO;;
|
|
1
|
+
{"version":3,"file":"useBufferEvents.d.ts","sourceRoot":"","sources":["../../src/lib/useBufferEvents.ts"],"names":[],"mappings":"AAWA,kDAAkD;AAClD,wBAAgB,eAAe,CAAC,OAAO,UAAO;;UAgE7C"}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
export declare function useLocalSalesOrderDetailQuery(id: string | null | undefined): import("@tanstack/react-query").UseQueryResult<
|
|
1
|
+
export declare function useLocalSalesOrderDetailQuery(id: string | null | undefined): import("@tanstack/react-query").UseQueryResult<{
|
|
2
2
|
order: import("./salesorders-mapping").SalesOrderDTO | null;
|
|
3
3
|
bufferId: string | null;
|
|
4
4
|
bufferSiblings: import("./salesorders-mapping").SalesOrderDTO[];
|
|
5
5
|
sellerFallback: string | null;
|
|
6
6
|
environment: "staging" | "live";
|
|
7
|
-
}
|
|
7
|
+
}, Error>;
|
|
8
8
|
//# sourceMappingURL=useLocalSalesOrderDetailQuery.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useLocalSalesOrderDetailQuery.d.ts","sourceRoot":"","sources":["../../src/lib/useLocalSalesOrderDetailQuery.ts"],"names":[],"mappings":"AAQA,wBAAgB,6BAA6B,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS;;;;;;
|
|
1
|
+
{"version":3,"file":"useLocalSalesOrderDetailQuery.d.ts","sourceRoot":"","sources":["../../src/lib/useLocalSalesOrderDetailQuery.ts"],"names":[],"mappings":"AAQA,wBAAgB,6BAA6B,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS;;;;;;UA2C1E"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export declare function useSalesOrderDetailQuery(id: string | null | undefined): import("@tanstack/react-query").UseQueryResult<
|
|
1
|
+
export declare function useSalesOrderDetailQuery(id: string | null | undefined): import("@tanstack/react-query").UseQueryResult<import("./salesorders.functions").SalesOrderDetailResult, Error>;
|
|
2
2
|
//# sourceMappingURL=useSalesOrderDetailQuery.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useSalesOrderDetailQuery.d.ts","sourceRoot":"","sources":["../../src/lib/useSalesOrderDetailQuery.ts"],"names":[],"mappings":"AASA,wBAAgB,wBAAwB,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,
|
|
1
|
+
{"version":3,"file":"useSalesOrderDetailQuery.d.ts","sourceRoot":"","sources":["../../src/lib/useSalesOrderDetailQuery.ts"],"names":[],"mappings":"AASA,wBAAgB,wBAAwB,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,mHA6CrE"}
|
|
@@ -26,5 +26,5 @@ export declare function derivePeriodWindow(filters?: SalesOrderFilters): {
|
|
|
26
26
|
until?: string;
|
|
27
27
|
dateField: "ordered" | "delivery";
|
|
28
28
|
};
|
|
29
|
-
export declare function useSalesOrdersQuery(filters?: SalesOrderFilters, options?: SalesOrdersQueryOptions): import("@tanstack/react-query").UseQueryResult<
|
|
29
|
+
export declare function useSalesOrdersQuery(filters?: SalesOrderFilters, options?: SalesOrdersQueryOptions): import("@tanstack/react-query").UseQueryResult<SalesOrdersPage, Error>;
|
|
30
30
|
//# sourceMappingURL=useSalesOrdersQuery.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useSalesOrdersQuery.d.ts","sourceRoot":"","sources":["../../src/lib/useSalesOrdersQuery.ts"],"names":[],"mappings":"AASA,OAAO,EAGL,KAAK,aAAa,EAClB,KAAK,iBAAiB,EACtB,KAAK,iBAAiB,EACvB,MAAM,uBAAuB,CAAC;AAE/B,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAEjD,MAAM,MAAM,SAAS,GAAG,KAAK,GAAG,UAAU,GAAG,SAAS,CAAC;AAEvD,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,aAAa,EAAE,CAAC;IACxB,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,iBAAiB,CAAC;IAC1B,YAAY,EAAE,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;IACxC,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,WAAW,EAAE,SAAS,GAAG,MAAM,CAAC;IAChC,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,SAAS,EAAE,OAAO,CAAC;CACpB;AAED,MAAM,WAAW,uBAAuB;IACtC,GAAG,CAAC,EAAE,SAAS,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,CAAC,EAAE,iBAAiB,GAAG;IAC/D,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,SAAS,GAAG,UAAU,CAAC;CACnC,CAwCA;AAED,wBAAgB,mBAAmB,CACjC,OAAO,CAAC,EAAE,iBAAiB,EAC3B,OAAO,CAAC,EAAE,uBAAuB,
|
|
1
|
+
{"version":3,"file":"useSalesOrdersQuery.d.ts","sourceRoot":"","sources":["../../src/lib/useSalesOrdersQuery.ts"],"names":[],"mappings":"AASA,OAAO,EAGL,KAAK,aAAa,EAClB,KAAK,iBAAiB,EACtB,KAAK,iBAAiB,EACvB,MAAM,uBAAuB,CAAC;AAE/B,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAEjD,MAAM,MAAM,SAAS,GAAG,KAAK,GAAG,UAAU,GAAG,SAAS,CAAC;AAEvD,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,aAAa,EAAE,CAAC;IACxB,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,iBAAiB,CAAC;IAC1B,YAAY,EAAE,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;IACxC,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,WAAW,EAAE,SAAS,GAAG,MAAM,CAAC;IAChC,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,SAAS,EAAE,OAAO,CAAC;CACpB;AAED,MAAM,WAAW,uBAAuB;IACtC,GAAG,CAAC,EAAE,SAAS,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,CAAC,EAAE,iBAAiB,GAAG;IAC/D,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,SAAS,GAAG,UAAU,CAAC;CACnC,CAwCA;AAED,wBAAgB,mBAAmB,CACjC,OAAO,CAAC,EAAE,iBAAiB,EAC3B,OAAO,CAAC,EAAE,uBAAuB,0EAgElC"}
|
package/package.json
CHANGED
|
@@ -1,131 +1,131 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "@flowselections/floriday-verkoop-module",
|
|
3
|
-
"version": "1.0.
|
|
4
|
-
"private": false,
|
|
5
|
-
"sideEffects": false,
|
|
6
|
-
"type": "module",
|
|
7
|
-
"main": "./dist-lib/index.js",
|
|
8
|
-
"types": "./dist-lib/index.d.ts",
|
|
9
|
-
"exports": {
|
|
10
|
-
".": {
|
|
11
|
-
"types": "./dist-lib/index.d.ts",
|
|
12
|
-
"default": "./dist-lib/index.js"
|
|
13
|
-
},
|
|
14
|
-
"./cron": {
|
|
15
|
-
"types": "./dist-lib/lib/cron/index.d.ts",
|
|
16
|
-
"default": "./dist-lib/lib/cron/index.js"
|
|
17
|
-
},
|
|
18
|
-
"./styles": "./dist-lib/styles.css"
|
|
19
|
-
},
|
|
20
|
-
"files": [
|
|
21
|
-
"dist-lib"
|
|
22
|
-
],
|
|
23
|
-
"publishConfig": {
|
|
24
|
-
"access": "public"
|
|
25
|
-
},
|
|
26
|
-
"scripts": {
|
|
27
|
-
"dev": "vite dev",
|
|
28
|
-
"build": "vite build",
|
|
29
|
-
"build:lib": "tsc -p tsconfig.build.json && tsc-alias -p tsconfig.build.json && node -e \"require('fs').writeFileSync('dist-lib/styles.css', '@source \\\"./\\\";\\n')\"",
|
|
30
|
-
"build:lib:watch": "tsc -p tsconfig.build.json --watch",
|
|
31
|
-
"build:dev": "vite build --mode development",
|
|
32
|
-
"preview": "vite preview",
|
|
33
|
-
"lint": "eslint ."
|
|
34
|
-
},
|
|
35
|
-
"peerDependencies": {
|
|
36
|
-
"@flowselections/core": "1.0.
|
|
37
|
-
"@tanstack/react-query": "^5.0.0",
|
|
38
|
-
"@tanstack/react-router": "^1.0.0",
|
|
39
|
-
"@tanstack/react-start": "^1.0.0",
|
|
40
|
-
"lucide-react": "^0.500.0",
|
|
41
|
-
"react": "^18 || ^19",
|
|
42
|
-
"react-dom": "^18 || ^19",
|
|
43
|
-
"sonner": "^2.0.0"
|
|
44
|
-
},
|
|
45
|
-
"dependencies": {
|
|
46
|
-
"@flowselections/layout-maker": "1.13.2",
|
|
47
|
-
"@supabase/supabase-js": "^2.110.7",
|
|
48
|
-
"date-fns": "^4.3.0",
|
|
49
|
-
"zod": "^4.4.3"
|
|
50
|
-
},
|
|
51
|
-
"devDependencies": {
|
|
52
|
-
"@cloudflare/vite-plugin": "^1.25.5",
|
|
53
|
-
"@eslint/js": "^9.32.0",
|
|
54
|
-
"@flowselections/core": "1.0.
|
|
55
|
-
"@lovable.dev/vite-tanstack-config": "2.23.1",
|
|
56
|
-
"@rsbuild/core": "^1.0.0",
|
|
57
|
-
"@tailwindcss/vite": "^4.2.1",
|
|
58
|
-
"@tanstack/react-query": "^5.83.0",
|
|
59
|
-
"@tanstack/react-router": "^1.168.0",
|
|
60
|
-
"@tanstack/react-start": "^1.167.14",
|
|
61
|
-
"@tanstack/router-plugin": "^1.167.10",
|
|
62
|
-
"@types/node": "^22.16.5",
|
|
63
|
-
"@types/react": "^19.2.0",
|
|
64
|
-
"@types/react-dom": "^19.2.0",
|
|
65
|
-
"@vitejs/plugin-react": "^5.0.4",
|
|
66
|
-
"eslint": "^9.32.0",
|
|
67
|
-
"eslint-plugin-react-hooks": "^5.2.0",
|
|
68
|
-
"eslint-plugin-react-refresh": "^0.4.20",
|
|
69
|
-
"globals": "^15.15.0",
|
|
70
|
-
"lucide-react": "^0.575.0",
|
|
71
|
-
"react": "^19.2.0",
|
|
72
|
-
"react-dom": "^19.2.0",
|
|
73
|
-
"sonner": "^2.0.7",
|
|
74
|
-
"tailwindcss": "^4.2.1",
|
|
75
|
-
"tw-animate-css": "^1.3.4",
|
|
76
|
-
"typescript": "^5.8.3",
|
|
77
|
-
"tsc-alias": "^1.8.0",
|
|
78
|
-
"typescript-eslint": "^8.56.1",
|
|
79
|
-
"vite": "^7.3.1",
|
|
80
|
-
"vite-tsconfig-paths": "^6.0.2",
|
|
81
|
-
"nitro": "3.0.260603-beta"
|
|
82
|
-
},
|
|
83
|
-
"flowselections": {
|
|
84
|
-
"moduleId": "Verkoop",
|
|
85
|
-
"pages": [
|
|
86
|
-
{
|
|
87
|
-
"export": "VerkoopOrdersPage",
|
|
88
|
-
"route": "floriday-verkoop/verkooporders",
|
|
89
|
-
"title": "Verkooporders"
|
|
90
|
-
},
|
|
91
|
-
{
|
|
92
|
-
"export": "CreateOrderPage",
|
|
93
|
-
"route": "floriday-verkoop/verkooporders/nieuw",
|
|
94
|
-
"title": "Nieuwe bestelling",
|
|
95
|
-
"nav": false
|
|
96
|
-
},
|
|
97
|
-
{
|
|
98
|
-
"export": "SalesOrderDetailPage",
|
|
99
|
-
"route": "floriday-verkoop/verkooporders/$salesOrderId",
|
|
100
|
-
"title": "Orderdetails",
|
|
101
|
-
"nav": false
|
|
102
|
-
}
|
|
103
|
-
],
|
|
104
|
-
"serverRoutes": [
|
|
105
|
-
{
|
|
106
|
-
"routePath": "/api/public/cron/replan-carts",
|
|
107
|
-
"import": "@flowselections/floriday-verkoop-module/cron",
|
|
108
|
-
"handler": "replanCartsCron",
|
|
109
|
-
"methods": [
|
|
110
|
-
"POST"
|
|
111
|
-
]
|
|
112
|
-
},
|
|
113
|
-
{
|
|
114
|
-
"routePath": "/api/public/cron/sync-salesorders",
|
|
115
|
-
"import": "@flowselections/floriday-verkoop-module/cron",
|
|
116
|
-
"handler": "syncSalesOrdersCron",
|
|
117
|
-
"methods": [
|
|
118
|
-
"POST"
|
|
119
|
-
]
|
|
120
|
-
},
|
|
121
|
-
{
|
|
122
|
-
"routePath": "/api/public/cron/invoice-due",
|
|
123
|
-
"import": "@flowselections/floriday-verkoop-module/cron",
|
|
124
|
-
"handler": "invoiceDueCron",
|
|
125
|
-
"methods": [
|
|
126
|
-
"POST"
|
|
127
|
-
]
|
|
128
|
-
}
|
|
129
|
-
]
|
|
130
|
-
}
|
|
131
|
-
}
|
|
1
|
+
{
|
|
2
|
+
"name": "@flowselections/floriday-verkoop-module",
|
|
3
|
+
"version": "1.0.67",
|
|
4
|
+
"private": false,
|
|
5
|
+
"sideEffects": false,
|
|
6
|
+
"type": "module",
|
|
7
|
+
"main": "./dist-lib/index.js",
|
|
8
|
+
"types": "./dist-lib/index.d.ts",
|
|
9
|
+
"exports": {
|
|
10
|
+
".": {
|
|
11
|
+
"types": "./dist-lib/index.d.ts",
|
|
12
|
+
"default": "./dist-lib/index.js"
|
|
13
|
+
},
|
|
14
|
+
"./cron": {
|
|
15
|
+
"types": "./dist-lib/lib/cron/index.d.ts",
|
|
16
|
+
"default": "./dist-lib/lib/cron/index.js"
|
|
17
|
+
},
|
|
18
|
+
"./styles": "./dist-lib/styles.css"
|
|
19
|
+
},
|
|
20
|
+
"files": [
|
|
21
|
+
"dist-lib"
|
|
22
|
+
],
|
|
23
|
+
"publishConfig": {
|
|
24
|
+
"access": "public"
|
|
25
|
+
},
|
|
26
|
+
"scripts": {
|
|
27
|
+
"dev": "vite dev",
|
|
28
|
+
"build": "vite build",
|
|
29
|
+
"build:lib": "tsc -p tsconfig.build.json && tsc-alias -p tsconfig.build.json && node -e \"require('fs').writeFileSync('dist-lib/styles.css', '@source \\\"./\\\";\\n')\"",
|
|
30
|
+
"build:lib:watch": "tsc -p tsconfig.build.json --watch",
|
|
31
|
+
"build:dev": "vite build --mode development",
|
|
32
|
+
"preview": "vite preview",
|
|
33
|
+
"lint": "eslint ."
|
|
34
|
+
},
|
|
35
|
+
"peerDependencies": {
|
|
36
|
+
"@flowselections/core": "1.0.28",
|
|
37
|
+
"@tanstack/react-query": "^5.0.0",
|
|
38
|
+
"@tanstack/react-router": "^1.0.0",
|
|
39
|
+
"@tanstack/react-start": "^1.0.0",
|
|
40
|
+
"lucide-react": "^0.500.0",
|
|
41
|
+
"react": "^18 || ^19",
|
|
42
|
+
"react-dom": "^18 || ^19",
|
|
43
|
+
"sonner": "^2.0.0"
|
|
44
|
+
},
|
|
45
|
+
"dependencies": {
|
|
46
|
+
"@flowselections/layout-maker": "1.13.2",
|
|
47
|
+
"@supabase/supabase-js": "^2.110.7",
|
|
48
|
+
"date-fns": "^4.3.0",
|
|
49
|
+
"zod": "^4.4.3"
|
|
50
|
+
},
|
|
51
|
+
"devDependencies": {
|
|
52
|
+
"@cloudflare/vite-plugin": "^1.25.5",
|
|
53
|
+
"@eslint/js": "^9.32.0",
|
|
54
|
+
"@flowselections/core": "1.0.28",
|
|
55
|
+
"@lovable.dev/vite-tanstack-config": "2.23.1",
|
|
56
|
+
"@rsbuild/core": "^1.0.0",
|
|
57
|
+
"@tailwindcss/vite": "^4.2.1",
|
|
58
|
+
"@tanstack/react-query": "^5.83.0",
|
|
59
|
+
"@tanstack/react-router": "^1.168.0",
|
|
60
|
+
"@tanstack/react-start": "^1.167.14",
|
|
61
|
+
"@tanstack/router-plugin": "^1.167.10",
|
|
62
|
+
"@types/node": "^22.16.5",
|
|
63
|
+
"@types/react": "^19.2.0",
|
|
64
|
+
"@types/react-dom": "^19.2.0",
|
|
65
|
+
"@vitejs/plugin-react": "^5.0.4",
|
|
66
|
+
"eslint": "^9.32.0",
|
|
67
|
+
"eslint-plugin-react-hooks": "^5.2.0",
|
|
68
|
+
"eslint-plugin-react-refresh": "^0.4.20",
|
|
69
|
+
"globals": "^15.15.0",
|
|
70
|
+
"lucide-react": "^0.575.0",
|
|
71
|
+
"react": "^19.2.0",
|
|
72
|
+
"react-dom": "^19.2.0",
|
|
73
|
+
"sonner": "^2.0.7",
|
|
74
|
+
"tailwindcss": "^4.2.1",
|
|
75
|
+
"tw-animate-css": "^1.3.4",
|
|
76
|
+
"typescript": "^5.8.3",
|
|
77
|
+
"tsc-alias": "^1.8.0",
|
|
78
|
+
"typescript-eslint": "^8.56.1",
|
|
79
|
+
"vite": "^7.3.1",
|
|
80
|
+
"vite-tsconfig-paths": "^6.0.2",
|
|
81
|
+
"nitro": "3.0.260603-beta"
|
|
82
|
+
},
|
|
83
|
+
"flowselections": {
|
|
84
|
+
"moduleId": "Verkoop",
|
|
85
|
+
"pages": [
|
|
86
|
+
{
|
|
87
|
+
"export": "VerkoopOrdersPage",
|
|
88
|
+
"route": "floriday-verkoop/verkooporders",
|
|
89
|
+
"title": "Verkooporders"
|
|
90
|
+
},
|
|
91
|
+
{
|
|
92
|
+
"export": "CreateOrderPage",
|
|
93
|
+
"route": "floriday-verkoop/verkooporders/nieuw",
|
|
94
|
+
"title": "Nieuwe bestelling",
|
|
95
|
+
"nav": false
|
|
96
|
+
},
|
|
97
|
+
{
|
|
98
|
+
"export": "SalesOrderDetailPage",
|
|
99
|
+
"route": "floriday-verkoop/verkooporders/$salesOrderId",
|
|
100
|
+
"title": "Orderdetails",
|
|
101
|
+
"nav": false
|
|
102
|
+
}
|
|
103
|
+
],
|
|
104
|
+
"serverRoutes": [
|
|
105
|
+
{
|
|
106
|
+
"routePath": "/api/public/cron/replan-carts",
|
|
107
|
+
"import": "@flowselections/floriday-verkoop-module/cron",
|
|
108
|
+
"handler": "replanCartsCron",
|
|
109
|
+
"methods": [
|
|
110
|
+
"POST"
|
|
111
|
+
]
|
|
112
|
+
},
|
|
113
|
+
{
|
|
114
|
+
"routePath": "/api/public/cron/sync-salesorders",
|
|
115
|
+
"import": "@flowselections/floriday-verkoop-module/cron",
|
|
116
|
+
"handler": "syncSalesOrdersCron",
|
|
117
|
+
"methods": [
|
|
118
|
+
"POST"
|
|
119
|
+
]
|
|
120
|
+
},
|
|
121
|
+
{
|
|
122
|
+
"routePath": "/api/public/cron/invoice-due",
|
|
123
|
+
"import": "@flowselections/floriday-verkoop-module/cron",
|
|
124
|
+
"handler": "invoiceDueCron",
|
|
125
|
+
"methods": [
|
|
126
|
+
"POST"
|
|
127
|
+
]
|
|
128
|
+
}
|
|
129
|
+
]
|
|
130
|
+
}
|
|
131
|
+
}
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
interface Props {
|
|
2
|
-
environment: "staging" | "live";
|
|
3
|
-
resources: string[];
|
|
4
|
-
/** Max minuten dat een sync mag achterlopen voordat de banner verschijnt. */
|
|
5
|
-
staleAfterMinutes?: number;
|
|
6
|
-
}
|
|
7
|
-
export declare function FlorydaySyncHealthBanner({ environment, resources, staleAfterMinutes, }: Props): import("react/jsx-runtime").JSX.Element | null;
|
|
8
|
-
export {};
|
|
9
|
-
//# sourceMappingURL=FlorydaySyncHealthBanner.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"FlorydaySyncHealthBanner.d.ts","sourceRoot":"","sources":["../../../src/components/floriday/FlorydaySyncHealthBanner.tsx"],"names":[],"mappings":"AAKA,UAAU,KAAK;IACb,WAAW,EAAE,SAAS,GAAG,MAAM,CAAC;IAChC,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,6EAA6E;IAC7E,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED,wBAAgB,wBAAwB,CAAC,EACvC,WAAW,EACX,SAAS,EACT,iBAAsB,GACvB,EAAE,KAAK,kDAmCP"}
|
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
-
import { useQuery } from "@tanstack/react-query";
|
|
3
|
-
import { useServerFn } from "@tanstack/react-start";
|
|
4
|
-
import { AlertTriangle } from "lucide-react";
|
|
5
|
-
import { getFlorydaySyncHealth } from "../../lib/floriday-public.functions";
|
|
6
|
-
export function FlorydaySyncHealthBanner({ environment, resources, staleAfterMinutes = 30, }) {
|
|
7
|
-
const fetchHealth = useServerFn(getFlorydaySyncHealth);
|
|
8
|
-
const { data } = useQuery({
|
|
9
|
-
queryKey: ["floriday", "sync-health", environment, resources.join(",")],
|
|
10
|
-
queryFn: () => fetchHealth({ data: { environment, resources } }),
|
|
11
|
-
staleTime: 60000,
|
|
12
|
-
refetchInterval: 120000,
|
|
13
|
-
});
|
|
14
|
-
if (!data || !data.resources)
|
|
15
|
-
return null;
|
|
16
|
-
const now = Date.now();
|
|
17
|
-
const stale = data.resources.filter((r) => {
|
|
18
|
-
if (!r.lastSyncedAt)
|
|
19
|
-
return true;
|
|
20
|
-
const age = (now - new Date(r.lastSyncedAt).getTime()) / 60000;
|
|
21
|
-
return age > staleAfterMinutes || Boolean(r.lastError);
|
|
22
|
-
});
|
|
23
|
-
if (stale.length === 0)
|
|
24
|
-
return null;
|
|
25
|
-
return (_jsxs("div", { className: "flex items-start gap-3 rounded-md border border-amber-300 bg-amber-50 px-4 py-3 text-sm text-amber-900", children: [_jsx(AlertTriangle, { className: "mt-0.5 h-4 w-4 shrink-0" }), _jsxs("div", { className: "space-y-1", children: [_jsx("div", { className: "font-medium", children: "Floriday-data is mogelijk verouderd" }), _jsx("ul", { className: "space-y-0.5 text-xs", children: stale.map((r) => (_jsxs("li", { children: [_jsx("strong", { children: r.resource }), ":", " ", r.lastSyncedAt ? `laatste sync ${new Date(r.lastSyncedAt).toLocaleString("nl-NL")}` : "nooit gesynchroniseerd", r.lastError ? ` — ${r.lastError}` : ""] }, r.resource))) })] })] }));
|
|
26
|
-
}
|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
import { type CartType, type CrateType } from "../../lib/cart-planning-settings.functions";
|
|
2
|
-
export declare function AfmetingenTab({ cartTypes, crateTypes, }: {
|
|
3
|
-
cartTypes: CartType[];
|
|
4
|
-
crateTypes: CrateType[];
|
|
5
|
-
}): import("react/jsx-runtime").JSX.Element;
|
|
6
|
-
//# sourceMappingURL=AfmetingenTab.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"AfmetingenTab.d.ts","sourceRoot":"","sources":["../../../src/components/karindeling/AfmetingenTab.tsx"],"names":[],"mappings":"AAuBA,OAAO,EAQL,KAAK,QAAQ,EACb,KAAK,SAAS,EACf,MAAM,wCAAwC,CAAC;AAMhD,wBAAgB,aAAa,CAAC,EAC5B,SAAS,EACT,UAAU,GACX,EAAE;IACD,SAAS,EAAE,QAAQ,EAAE,CAAC;IACtB,UAAU,EAAE,SAAS,EAAE,CAAC;CACzB,2CA+BA"}
|
|
@@ -1,128 +0,0 @@
|
|
|
1
|
-
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
2
|
-
import { useState } from "react";
|
|
3
|
-
import { useMutation, useQuery, useQueryClient } from "@tanstack/react-query";
|
|
4
|
-
import { useServerFn } from "@tanstack/react-start";
|
|
5
|
-
import { Badge, Button, Card, CardContent, CardDescription, CardHeader, CardTitle, Input, Label, Separator, Table, TableBody, TableCell, TableHead, TableHeader, TableRow, toast, } from "@flowselections/core";
|
|
6
|
-
import { Star, Trash2 } from "lucide-react";
|
|
7
|
-
import { deleteCartType, deleteCrateType, listUsedCartCarriers, listUsedCratePackages, setDefaultCartType, upsertCartType, upsertCrateType, } from "../../lib/cart-planning-settings.functions";
|
|
8
|
-
function areaM2(lengthCm, widthCm) {
|
|
9
|
-
return ((lengthCm * widthCm) / 10000).toFixed(2);
|
|
10
|
-
}
|
|
11
|
-
export function AfmetingenTab({ cartTypes, crateTypes, }) {
|
|
12
|
-
return (_jsxs("div", { className: "space-y-6", children: [_jsxs(Card, { children: [_jsxs(CardHeader, { children: [_jsx(CardTitle, { children: "Karren / containers" }), _jsxs(CardDescription, { children: ["Stel per kar-type de laag-afmetingen in. Fusten per laag =", " ", _jsx("em", { children: "laag-oppervlakte / fust-oppervlakte" }), ". \u00C9\u00E9n type is de standaard en wordt gebruikt door de planner."] })] }), _jsx(CardContent, { className: "space-y-4", children: _jsx(CartTypesEditor, { cartTypes: cartTypes }) })] }), _jsxs(Card, { children: [_jsxs(CardHeader, { children: [_jsx(CardTitle, { children: "Fusten" }), _jsx(CardDescription, { children: "Stel per fust-type de afmetingen in. Wordt gecombineerd met het gekozen kar-type om te bepalen hoeveel fusten er op een laag passen (ook bij menging)." })] }), _jsx(CardContent, { className: "space-y-4", children: _jsx(CrateTypesEditor, { crateTypes: crateTypes }) })] })] }));
|
|
13
|
-
}
|
|
14
|
-
function CartTypesEditor({ cartTypes }) {
|
|
15
|
-
const qc = useQueryClient();
|
|
16
|
-
const upsert = useServerFn(upsertCartType);
|
|
17
|
-
const remove = useServerFn(deleteCartType);
|
|
18
|
-
const setDefault = useServerFn(setDefaultCartType);
|
|
19
|
-
const fetchCarriers = useServerFn(listUsedCartCarriers);
|
|
20
|
-
const { data: carriers = [] } = useQuery({
|
|
21
|
-
queryKey: ["used-cart-carriers"],
|
|
22
|
-
queryFn: () => fetchCarriers(),
|
|
23
|
-
});
|
|
24
|
-
const [name, setName] = useState("");
|
|
25
|
-
const [len, setLen] = useState(135);
|
|
26
|
-
const [wid, setWid] = useState(56);
|
|
27
|
-
const [layers, setLayers] = useState(4);
|
|
28
|
-
const invalidate = () => qc.invalidateQueries({ queryKey: ["cart-planning-bundle"] });
|
|
29
|
-
const addMut = useMutation({
|
|
30
|
-
mutationFn: () => upsert({
|
|
31
|
-
data: {
|
|
32
|
-
name: name.trim(),
|
|
33
|
-
layer_length_cm: len,
|
|
34
|
-
layer_width_cm: wid,
|
|
35
|
-
layers_per_cart: layers,
|
|
36
|
-
is_default: cartTypes.length === 0,
|
|
37
|
-
},
|
|
38
|
-
}),
|
|
39
|
-
onSuccess: () => {
|
|
40
|
-
toast.success("Kar-type opgeslagen");
|
|
41
|
-
setName("");
|
|
42
|
-
setLen(135);
|
|
43
|
-
setWid(56);
|
|
44
|
-
setLayers(4);
|
|
45
|
-
invalidate();
|
|
46
|
-
},
|
|
47
|
-
onError: (e) => toast.error(e?.message ?? "Fout"),
|
|
48
|
-
});
|
|
49
|
-
const delMut = useMutation({
|
|
50
|
-
mutationFn: (id) => remove({ data: { id } }),
|
|
51
|
-
onSuccess: invalidate,
|
|
52
|
-
});
|
|
53
|
-
const defMut = useMutation({
|
|
54
|
-
mutationFn: (id) => setDefault({ data: { id } }),
|
|
55
|
-
onSuccess: () => {
|
|
56
|
-
toast.success("Standaard bijgewerkt");
|
|
57
|
-
invalidate();
|
|
58
|
-
},
|
|
59
|
-
});
|
|
60
|
-
return (_jsxs(_Fragment, { children: [_jsxs("div", { className: "grid gap-3 rounded-md border p-3 lg:grid-cols-5", children: [_jsxs("div", { className: "space-y-2 lg:col-span-2", children: [_jsx(Label, { children: "Naam" }), _jsx(Input, { list: "used-cart-carriers", value: name, onChange: (e) => {
|
|
61
|
-
const v = e.target.value;
|
|
62
|
-
setName(v);
|
|
63
|
-
const match = carriers.find((c) => c.label === v || c.name === v);
|
|
64
|
-
if (match) {
|
|
65
|
-
if (match.layer_length_cm)
|
|
66
|
-
setLen(match.layer_length_cm);
|
|
67
|
-
if (match.layer_width_cm)
|
|
68
|
-
setWid(match.layer_width_cm);
|
|
69
|
-
if (match.layers_per_cart)
|
|
70
|
-
setLayers(match.layers_per_cart);
|
|
71
|
-
}
|
|
72
|
-
}, placeholder: carriers.length > 0
|
|
73
|
-
? "Kies uit lijst of typ zelf"
|
|
74
|
-
: "bv. Deense container" }), _jsx("datalist", { id: "used-cart-carriers", children: carriers.map((c) => (_jsx("option", { value: c.label, children: c.usage_count > 0 ? `${c.usage_count}× gebruikt` : "niet in gebruik" }, c.key))) }), carriers.length > 0 && (_jsxs("p", { className: "text-xs text-muted-foreground", children: [carriers.length, " kar-types bekend uit Floriday; afmetingen worden automatisch ingevuld."] }))] }), _jsxs("div", { className: "space-y-2", children: [_jsx(Label, { children: "Lengte (cm)" }), _jsx(Input, { type: "number", min: 1, value: len, onChange: (e) => setLen(Number(e.target.value)) })] }), _jsxs("div", { className: "space-y-2", children: [_jsx(Label, { children: "Breedte (cm)" }), _jsx(Input, { type: "number", min: 1, value: wid, onChange: (e) => setWid(Number(e.target.value)) })] }), _jsxs("div", { className: "space-y-2", children: [_jsx(Label, { children: "Lagen / kar" }), _jsx(Input, { type: "number", min: 1, value: layers, onChange: (e) => setLayers(Number(e.target.value)) })] }), _jsx("div", { className: "lg:col-span-5", children: _jsx(Button, { disabled: !name.trim() || addMut.isPending, onClick: () => addMut.mutate(), children: "Toevoegen" }) })] }), _jsx(Separator, {}), _jsxs(Table, { children: [_jsx(TableHeader, { children: _jsxs(TableRow, { children: [_jsx(TableHead, { children: "Naam" }), _jsx(TableHead, { className: "text-right", children: "Lengte" }), _jsx(TableHead, { className: "text-right", children: "Breedte" }), _jsx(TableHead, { className: "text-right", children: "Oppervlakte (m\u00B2)" }), _jsx(TableHead, { children: "Standaard" }), _jsx(TableHead, { className: "w-16" })] }) }), _jsx(TableBody, { children: cartTypes.length === 0 ? (_jsx(TableRow, { children: _jsx(TableCell, { colSpan: 6, className: "text-sm text-muted-foreground", children: "Nog geen kar-types." }) })) : (cartTypes.map((c) => (_jsxs(TableRow, { children: [_jsx(TableCell, { children: c.name }), _jsxs(TableCell, { className: "text-right", children: [c.layer_length_cm, " cm"] }), _jsxs(TableCell, { className: "text-right", children: [c.layer_width_cm, " cm"] }), _jsx(TableCell, { className: "text-right", children: areaM2(c.layer_length_cm, c.layer_width_cm) }), _jsx(TableCell, { children: c.is_default ? (_jsx(Badge, { children: "Standaard" })) : (_jsxs(Button, { size: "sm", variant: "ghost", onClick: () => defMut.mutate(c.id), disabled: defMut.isPending, children: [_jsx(Star, { className: "mr-1 h-4 w-4" }), " Maak standaard"] })) }), _jsx(TableCell, { children: _jsx(Button, { variant: "ghost", size: "sm", onClick: () => delMut.mutate(c.id), children: _jsx(Trash2, { className: "h-4 w-4" }) }) })] }, c.id)))) })] })] }));
|
|
75
|
-
}
|
|
76
|
-
function CrateTypesEditor({ crateTypes }) {
|
|
77
|
-
const qc = useQueryClient();
|
|
78
|
-
const upsert = useServerFn(upsertCrateType);
|
|
79
|
-
const remove = useServerFn(deleteCrateType);
|
|
80
|
-
const fetchUsed = useServerFn(listUsedCratePackages);
|
|
81
|
-
const { data: usedPackages = [] } = useQuery({
|
|
82
|
-
queryKey: ["used-crate-packages"],
|
|
83
|
-
queryFn: () => fetchUsed(),
|
|
84
|
-
});
|
|
85
|
-
const [name, setName] = useState("");
|
|
86
|
-
const [len, setLen] = useState(60);
|
|
87
|
-
const [wid, setWid] = useState(40);
|
|
88
|
-
const [plants, setPlants] = useState(1);
|
|
89
|
-
const invalidate = () => qc.invalidateQueries({ queryKey: ["cart-planning-bundle"] });
|
|
90
|
-
const addMut = useMutation({
|
|
91
|
-
mutationFn: () => upsert({
|
|
92
|
-
data: {
|
|
93
|
-
name: name.trim(),
|
|
94
|
-
length_cm: len,
|
|
95
|
-
width_cm: wid,
|
|
96
|
-
plants_per_crate: plants,
|
|
97
|
-
},
|
|
98
|
-
}),
|
|
99
|
-
onSuccess: () => {
|
|
100
|
-
toast.success("Fust-type opgeslagen");
|
|
101
|
-
setName("");
|
|
102
|
-
setLen(60);
|
|
103
|
-
setWid(40);
|
|
104
|
-
setPlants(1);
|
|
105
|
-
invalidate();
|
|
106
|
-
},
|
|
107
|
-
onError: (e) => toast.error(e?.message ?? "Fout"),
|
|
108
|
-
});
|
|
109
|
-
const delMut = useMutation({
|
|
110
|
-
mutationFn: (id) => remove({ data: { id } }),
|
|
111
|
-
onSuccess: invalidate,
|
|
112
|
-
});
|
|
113
|
-
return (_jsxs(_Fragment, { children: [_jsxs("div", { className: "grid gap-3 rounded-md border p-3 lg:grid-cols-5", children: [_jsxs("div", { className: "space-y-2 lg:col-span-2", children: [_jsx(Label, { children: "Naam" }), _jsx(Input, { list: "used-crate-packages", value: name, onChange: (e) => {
|
|
114
|
-
const v = e.target.value;
|
|
115
|
-
setName(v);
|
|
116
|
-
const match = usedPackages.find((p) => p.label === v);
|
|
117
|
-
if (match) {
|
|
118
|
-
if (match.pieces_per_package)
|
|
119
|
-
setPlants(match.pieces_per_package);
|
|
120
|
-
if (match.length_cm)
|
|
121
|
-
setLen(match.length_cm);
|
|
122
|
-
if (match.width_cm)
|
|
123
|
-
setWid(match.width_cm);
|
|
124
|
-
}
|
|
125
|
-
}, placeholder: usedPackages.length > 0
|
|
126
|
-
? "Kies uit lijst of typ zelf"
|
|
127
|
-
: "bv. Fust 40x60" }), _jsx("datalist", { id: "used-crate-packages", children: usedPackages.map((p) => (_jsx("option", { value: p.label, children: p.usage_count > 0 ? `${p.usage_count}× gebruikt` : "niet in gebruik" }, p.key))) }), usedPackages.length > 0 && (_jsxs("p", { className: "text-xs text-muted-foreground", children: [usedPackages.length, " fusten bekend uit VBN-lijst; afmetingen worden automatisch ingevuld."] }))] }), _jsxs("div", { className: "space-y-2", children: [_jsx(Label, { children: "Lengte (cm)" }), _jsx(Input, { type: "number", min: 1, value: len, onChange: (e) => setLen(Number(e.target.value)) })] }), _jsxs("div", { className: "space-y-2", children: [_jsx(Label, { children: "Breedte (cm)" }), _jsx(Input, { type: "number", min: 1, value: wid, onChange: (e) => setWid(Number(e.target.value)) })] }), _jsxs("div", { className: "space-y-2", children: [_jsx(Label, { children: "Planten / fust" }), _jsx(Input, { type: "number", min: 1, value: plants, onChange: (e) => setPlants(Number(e.target.value)) })] }), _jsx("div", { className: "lg:col-span-5", children: _jsx(Button, { disabled: !name.trim() || addMut.isPending, onClick: () => addMut.mutate(), children: "Toevoegen" }) })] }), _jsx(Separator, {}), _jsxs(Table, { children: [_jsx(TableHeader, { children: _jsxs(TableRow, { children: [_jsx(TableHead, { children: "Naam" }), _jsx(TableHead, { className: "text-right", children: "Lengte" }), _jsx(TableHead, { className: "text-right", children: "Breedte" }), _jsx(TableHead, { className: "text-right", children: "Oppervlakte (m\u00B2)" }), _jsx(TableHead, { className: "text-right", children: "Planten / fust" }), _jsx(TableHead, { className: "w-16" })] }) }), _jsx(TableBody, { children: crateTypes.length === 0 ? (_jsx(TableRow, { children: _jsx(TableCell, { colSpan: 6, className: "text-sm text-muted-foreground", children: "Nog geen fust-types." }) })) : (crateTypes.map((c) => (_jsxs(TableRow, { children: [_jsx(TableCell, { children: c.name }), _jsxs(TableCell, { className: "text-right", children: [c.length_cm, " cm"] }), _jsxs(TableCell, { className: "text-right", children: [c.width_cm, " cm"] }), _jsx(TableCell, { className: "text-right", children: areaM2(c.length_cm, c.width_cm) }), _jsx(TableCell, { className: "text-right", children: c.plants_per_crate }), _jsx(TableCell, { children: _jsx(Button, { variant: "ghost", size: "sm", onClick: () => delMut.mutate(c.id), children: _jsx(Trash2, { className: "h-4 w-4" }) }) })] }, c.id)))) })] })] }));
|
|
128
|
-
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"KarindelingPage.d.ts","sourceRoot":"","sources":["../../../src/components/karindeling/KarindelingPage.tsx"],"names":[],"mappings":"AA8CA,wBAAgB,eAAe,4CAuD9B"}
|