@flowselections/floriday-voorraad 1.0.23 → 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 (106) hide show
  1. package/dist-lib/assets/floriday-logo.png.asset.json +4 -4
  2. package/dist-lib/components/TemplatePage.d.ts +1 -1
  3. package/dist-lib/components/TemplatePage.d.ts.map +1 -1
  4. package/dist-lib/components/voorraad/AdditionalPackagingDialog.d.ts +1 -1
  5. package/dist-lib/components/voorraad/AdditionalPackagingDialog.d.ts.map +1 -1
  6. package/dist-lib/components/voorraad/ArtikelCompositionCard.d.ts +1 -1
  7. package/dist-lib/components/voorraad/ArtikelCompositionCard.d.ts.map +1 -1
  8. package/dist-lib/components/voorraad/ArtikelWizard.d.ts +1 -1
  9. package/dist-lib/components/voorraad/ArtikelWizard.d.ts.map +1 -1
  10. package/dist-lib/components/voorraad/ArtikelWizard.js +633 -101
  11. package/dist-lib/components/voorraad/ConnectionBadge.d.ts +1 -1
  12. package/dist-lib/components/voorraad/ConnectionBadge.d.ts.map +1 -1
  13. package/dist-lib/components/voorraad/EditArtikelPage.d.ts +1 -1
  14. package/dist-lib/components/voorraad/EditArtikelPage.d.ts.map +1 -1
  15. package/dist-lib/components/voorraad/ExcelExportButton.d.ts +1 -1
  16. package/dist-lib/components/voorraad/ExcelExportButton.d.ts.map +1 -1
  17. package/dist-lib/components/voorraad/FloridayInfoCard.d.ts +1 -1
  18. package/dist-lib/components/voorraad/FloridayInfoCard.d.ts.map +1 -1
  19. package/dist-lib/components/voorraad/FloridayStatusBadge.d.ts +1 -1
  20. package/dist-lib/components/voorraad/FloridayStatusBadge.d.ts.map +1 -1
  21. package/dist-lib/components/voorraad/NieuwArtikelPage.d.ts +1 -1
  22. package/dist-lib/components/voorraad/NieuwArtikelPage.d.ts.map +1 -1
  23. package/dist-lib/components/voorraad/OrderHistoryCard.d.ts +1 -1
  24. package/dist-lib/components/voorraad/OrderHistoryCard.d.ts.map +1 -1
  25. package/dist-lib/components/voorraad/PriceStatusBadge.d.ts +1 -1
  26. package/dist-lib/components/voorraad/PriceStatusBadge.d.ts.map +1 -1
  27. package/dist-lib/components/voorraad/ProductLinkCard.d.ts +1 -1
  28. package/dist-lib/components/voorraad/ProductLinkCard.d.ts.map +1 -1
  29. package/dist-lib/components/voorraad/StepSamenstelling.d.ts +10 -0
  30. package/dist-lib/components/voorraad/StepSamenstelling.d.ts.map +1 -0
  31. package/dist-lib/components/voorraad/StepSamenstelling.js +333 -0
  32. package/dist-lib/components/voorraad/StockBulkButtons.d.ts +1 -1
  33. package/dist-lib/components/voorraad/StockBulkButtons.d.ts.map +1 -1
  34. package/dist-lib/components/voorraad/ValidationOverviewTable.d.ts +1 -1
  35. package/dist-lib/components/voorraad/ValidationOverviewTable.d.ts.map +1 -1
  36. package/dist-lib/components/voorraad/ValidationPage.d.ts +1 -1
  37. package/dist-lib/components/voorraad/ValidationPage.d.ts.map +1 -1
  38. package/dist-lib/components/voorraad/VoorraadDashboard.d.ts +1 -1
  39. package/dist-lib/components/voorraad/VoorraadDashboard.d.ts.map +1 -1
  40. package/dist-lib/components/voorraad/VoorraadPage.d.ts +1 -1
  41. package/dist-lib/components/voorraad/VoorraadPage.d.ts.map +1 -1
  42. package/dist-lib/components/voorraad/VoorraadPage.js +14 -3
  43. package/dist-lib/components/voorraad/VoorraadPagination.d.ts +1 -1
  44. package/dist-lib/components/voorraad/VoorraadPagination.d.ts.map +1 -1
  45. package/dist-lib/components/voorraad/VoorraadStockCard.d.ts +1 -1
  46. package/dist-lib/components/voorraad/VoorraadStockCard.d.ts.map +1 -1
  47. package/dist-lib/components/voorraad/VoorraadTable.d.ts +1 -1
  48. package/dist-lib/components/voorraad/VoorraadTable.d.ts.map +1 -1
  49. package/dist-lib/components/voorraad/VoorraadTable.js +6 -13
  50. package/dist-lib/hooks/useFloriday.d.ts +6 -6
  51. package/dist-lib/hooks/useFloriday.d.ts.map +1 -1
  52. package/dist-lib/hooks/useFloridayPriceGroups.d.ts +20 -0
  53. package/dist-lib/hooks/useFloridayPriceGroups.d.ts.map +1 -0
  54. package/dist-lib/hooks/useFloridayPriceGroups.js +55 -0
  55. package/dist-lib/hooks/useFloridayVbnRequired.d.ts +5 -0
  56. package/dist-lib/hooks/useFloridayVbnRequired.d.ts.map +1 -0
  57. package/dist-lib/hooks/useFloridayVbnRequired.js +16 -0
  58. package/dist-lib/hooks/useLocalTradeItems.d.ts.map +1 -1
  59. package/dist-lib/hooks/useLocalTradeItems.js +14 -0
  60. package/dist-lib/hooks/useTradeItemSpec.d.ts.map +1 -1
  61. package/dist-lib/hooks/useTradeItemSpec.js +48 -1
  62. package/dist-lib/hooks/useTradeItemSupplyLine.d.ts +1 -1
  63. package/dist-lib/hooks/useTradeItemSupplyLine.d.ts.map +1 -1
  64. package/dist-lib/hooks/useVbnRegulatoryFeatures.d.ts +1 -1
  65. package/dist-lib/hooks/useVbnRegulatoryFeatures.d.ts.map +1 -1
  66. package/dist-lib/integrations/supabase/auth-middleware.d.ts +2378 -361
  67. package/dist-lib/integrations/supabase/auth-middleware.d.ts.map +1 -1
  68. package/dist-lib/integrations/supabase/client.d.ts +2378 -361
  69. package/dist-lib/integrations/supabase/client.d.ts.map +1 -1
  70. package/dist-lib/integrations/supabase/client.server.d.ts +2378 -361
  71. package/dist-lib/integrations/supabase/client.server.d.ts.map +1 -1
  72. package/dist-lib/integrations/supabase/types.d.ts +2412 -344
  73. package/dist-lib/integrations/supabase/types.d.ts.map +1 -1
  74. package/dist-lib/integrations/supabase/types.js +11 -9
  75. package/dist-lib/lib/centralSecrets.server.d.ts +21 -0
  76. package/dist-lib/lib/centralSecrets.server.d.ts.map +1 -0
  77. package/dist-lib/lib/centralSecrets.server.js +111 -0
  78. package/dist-lib/lib/floricode-required-features.functions.d.ts +2378 -367
  79. package/dist-lib/lib/floricode-required-features.functions.d.ts.map +1 -1
  80. package/dist-lib/lib/floriday-customer-offer.functions.d.ts +2380 -361
  81. package/dist-lib/lib/floriday-customer-offer.functions.d.ts.map +1 -1
  82. package/dist-lib/lib/floriday-gateway.functions.d.ts +10760 -675
  83. package/dist-lib/lib/floriday-gateway.functions.d.ts.map +1 -1
  84. package/dist-lib/lib/floriday-gateway.server.d.ts.map +1 -1
  85. package/dist-lib/lib/floriday-gateway.server.js +34 -9
  86. package/dist-lib/lib/floriday-payload.d.ts +21 -3
  87. package/dist-lib/lib/floriday-payload.d.ts.map +1 -1
  88. package/dist-lib/lib/floriday-payload.js +167 -34
  89. package/dist-lib/lib/floriday-vbn-required.functions.d.ts +27769 -0
  90. package/dist-lib/lib/floriday-vbn-required.functions.d.ts.map +1 -0
  91. package/dist-lib/lib/floriday-vbn-required.functions.js +85 -0
  92. package/dist-lib/lib/floriday-warehouse.functions.d.ts +6542 -491
  93. package/dist-lib/lib/floriday-warehouse.functions.d.ts.map +1 -1
  94. package/dist-lib/lib/floriday-writes.functions.d.ts +4647 -612
  95. package/dist-lib/lib/floriday-writes.functions.d.ts.map +1 -1
  96. package/dist-lib/lib/floriday-writes.functions.js +36 -1
  97. package/dist-lib/lib/trade-item-prices.d.ts +43 -0
  98. package/dist-lib/lib/trade-item-prices.d.ts.map +1 -0
  99. package/dist-lib/lib/trade-item-prices.js +229 -0
  100. package/package.json +3 -3
  101. package/dist-lib/components/settings/VoorraadSettingsCard.d.ts +0 -2
  102. package/dist-lib/components/settings/VoorraadSettingsCard.d.ts.map +0 -1
  103. package/dist-lib/components/settings/VoorraadSettingsCard.js +0 -39
  104. package/dist-lib/components/voorraad/ConnectionPicker.d.ts +0 -8
  105. package/dist-lib/components/voorraad/ConnectionPicker.d.ts.map +0 -1
  106. package/dist-lib/components/voorraad/ConnectionPicker.js +0 -8
@@ -1 +1 @@
1
- {"version":3,"file":"floriday-gateway.server.d.ts","sourceRoot":"","sources":["../../src/lib/floriday-gateway.server.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"floriday-gateway.server.d.ts","sourceRoot":"","sources":["../../src/lib/floriday-gateway.server.ts"],"names":[],"mappings":"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"}
@@ -21,13 +21,38 @@
21
21
  // beschikbaar wanneer dist-lib client-side wordt gebundeld door de shell.
22
22
  const CALLER = "voorraad";
23
23
  const WRITE_PATH = "/api/public/gateway/write";
24
- function getConfig() {
25
- const url = process.env.FLORIDAY_GATEWAY_URL;
26
- const secret = process.env.FLORIDAY_GATEWAY_SECRET;
27
- if (!url || !secret) {
28
- throw new Error("FLORIDAY_GATEWAY_URL / FLORIDAY_GATEWAY_SECRET ontbreken — gateway niet bereikbaar.");
24
+ async function resolveGatewayUrl() {
25
+ const explicit = process.env.FLORIDAY_GATEWAY_URL;
26
+ if (explicit)
27
+ return explicit.replace(/\/$/, "");
28
+ const publicBase = process.env.PUBLIC_BASE_URL;
29
+ if (publicBase)
30
+ return publicBase.replace(/\/$/, "");
31
+ const { getShellHost } = await import("./centralSecrets.server");
32
+ const host = await getShellHost();
33
+ return host.replace(/\/$/, "");
34
+ }
35
+ async function resolveGatewaySecret() {
36
+ const explicit = process.env.FLORIDAY_GATEWAY_SECRET;
37
+ if (explicit)
38
+ return explicit;
39
+ const { getFloridayGatewaySecret } = await import("./centralSecrets.server");
40
+ return getFloridayGatewaySecret();
41
+ }
42
+ async function getConfig() {
43
+ try {
44
+ const [url, secret] = await Promise.all([
45
+ resolveGatewayUrl(),
46
+ resolveGatewaySecret(),
47
+ ]);
48
+ return { url, secret };
49
+ }
50
+ catch (e) {
51
+ throw new Error("Gateway-configuratie niet resolvbaar — vereist één van " +
52
+ "(FLORIDAY_GATEWAY_URL | PUBLIC_BASE_URL | central /api/shell-host) " +
53
+ "en één van (FLORIDAY_GATEWAY_SECRET | central /api/secret/floriday_gateway_secret). " +
54
+ `Onderliggende fout: ${e.message}`);
29
55
  }
30
- return { url: url.replace(/\/$/, ""), secret };
31
56
  }
32
57
  async function hmacSha256Hex(secret, data) {
33
58
  const key = await globalThis.crypto.subtle.importKey("raw", new TextEncoder().encode(secret), { name: "HMAC", hash: "SHA-256" }, false, ["sign"]);
@@ -40,7 +65,7 @@ async function sign(ts, rawBody, secret) {
40
65
  return hmacSha256Hex(secret, `${ts}.${rawBody}`);
41
66
  }
42
67
  async function doSignedFetch(path, rawBody) {
43
- const { url, secret } = getConfig();
68
+ const { url, secret } = await getConfig();
44
69
  // x-floriday-timestamp MOET per call vers gezet worden op Date.now()
45
70
  // (unix-MILLISECONDEN, niet seconden, niet gecached). De HMAC wordt
46
71
  // berekend over exact `${timestamp}.${rawBody}` met diezelfde string.
@@ -152,7 +177,7 @@ function toHex(buf) {
152
177
  * base64-inflatie en geen formData-buffering meer.
153
178
  */
154
179
  export async function gatewayMediaUpload(input) {
155
- const { url, secret } = getConfig();
180
+ const { url, secret } = await getConfig();
156
181
  const timestamp = Date.now().toString();
157
182
  const bodyHashBuf = await crypto.subtle.digest("SHA-256", input.bytes);
158
183
  const bodyHash = toHex(bodyHashBuf);
@@ -215,7 +240,7 @@ export async function gatewayMediaUpload(input) {
215
240
  */
216
241
  export async function reportGatewayFailure(report) {
217
242
  try {
218
- const { url, secret } = getConfig();
243
+ const { url, secret } = await getConfig();
219
244
  const body = JSON.stringify({ caller: CALLER, ...report });
220
245
  const timestamp = Date.now().toString();
221
246
  const sigHex = await hmacSha256Hex(secret, `${timestamp}.${body}`);
@@ -33,6 +33,8 @@ export interface PackingConfigurationInput {
33
33
  customerOrganizationIds: string[];
34
34
  /** Eerste belading = primair. Wordt door de UI beheerd. */
35
35
  isPrimary: boolean;
36
+ /** Belading niet aanbieden via Direct Sale (Floriday `isHiddenForDirectSales`). */
37
+ isHiddenForDirectSales?: boolean;
36
38
  }
37
39
  /** Hardcoded lijst met aangesloten verpakkingsleveranciers zoals in Floriday. */
38
40
  export declare const PACKAGING_SUPPLIERS: {
@@ -64,6 +66,8 @@ export interface PhotoInput {
64
66
  name?: string;
65
67
  primary?: boolean;
66
68
  sortOrder?: number;
69
+ /** Floriday foto-type; bepaalt de categorie-badge ("Detail", "Standaard", …). */
70
+ type?: PhotoTypeEnum;
67
71
  /** Floriday mediaId (UUID), teruggegeven door POST /media (AddImage). */
68
72
  imageId?: string | null;
69
73
  /** Lokale blob/object URL voor previewweergave in de wizard (niet verstuurd) */
@@ -90,17 +94,26 @@ export interface WizardData {
90
94
  warehouseId: string;
91
95
  packingConfigurations: PackingConfigurationInput[];
92
96
  additionalPackaging: AdditionalPackagingInput[];
93
- yearRound: boolean;
97
+ availabilityMode: "YEAR_ROUND" | "SPECIFIC" | "UNSPECIFIED";
94
98
  weeks: number[];
95
99
  offerForSale: boolean;
96
- /** Verkoopprijs per stuk (EUR). */
100
+ /** Basisprijs per stuk (EUR) — wordt naar `weekly-base-supply` gepusht. */
97
101
  salePricePerPiece: number;
98
102
  /** Voorraad in stuks die direct beschikbaar wordt gesteld. */
99
103
  saleStockPieces: number;
100
104
  /** ISO date (YYYY-MM-DD); default vandaag. */
101
105
  offerStartDate: string;
106
+ /**
107
+ * Prijs per Floriday-prijsgroepId (leeg / 0 = niet publiceren voor die groep).
108
+ * Wordt gepusht als `weekly-supply-lines` met de klanten van de groep.
109
+ */
110
+ priceGroupPrices: Record<string, number>;
102
111
  /** Lokaal ERP-product waar dit concept uit is ontstaan; geen Floriday-koppeling. */
103
112
  linkedProductId?: string;
113
+ /** BTW-percentage voor facturatie (lokaal, niet naar Floriday). Leeg = default uit app_settings. */
114
+ vatRate?: number | null;
115
+ /** Twinfield-boekhoudcode (VH/VL/VN/VG). Leeg = default uit app_settings. */
116
+ vatCode?: string | null;
104
117
  }
105
118
  export declare function isValidGtin13(gtin: string): boolean;
106
119
  export declare const stepSchemas: {
@@ -154,7 +167,11 @@ export declare const stepSchemas: {
154
167
  }, z.core.$strip>>;
155
168
  }, z.core.$strip>;
156
169
  beschikbaarheid: z.ZodObject<{
157
- yearRound: z.ZodBoolean;
170
+ availabilityMode: z.ZodEnum<{
171
+ YEAR_ROUND: "YEAR_ROUND";
172
+ SPECIFIC: "SPECIFIC";
173
+ UNSPECIFIED: "UNSPECIFIED";
174
+ }>;
158
175
  weeks: z.ZodArray<z.ZodNumber>;
159
176
  }, z.core.$strip>;
160
177
  aanbieden: z.ZodObject<{
@@ -254,5 +271,6 @@ export declare function buildAddTradeItemPayload(d: WizardData): AddTradeItemPay
254
271
  */
255
272
  export declare function buildUpdateTradeItemPayload(d: WizardData): UpdateTradeItemPayload;
256
273
  export declare const emptyWizardData: WizardData;
274
+ export declare function normalizeFloridayProductGroup(raw: unknown): ProductGroup | null;
257
275
  export declare function floridayCacheToWizardData(raw: any): WizardData;
258
276
  //# sourceMappingURL=floriday-payload.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"floriday-payload.d.ts","sourceRoot":"","sources":["../../src/lib/floriday-payload.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"floriday-payload.d.ts","sourceRoot":"","sources":["../../src/lib/floriday-payload.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,MAAM,MAAM,YAAY,GAAG,YAAY,GAAG,WAAW,GAAG,cAAc,CAAC;AACvE,MAAM,MAAM,WAAW,GAAG,SAAS,GAAG,mBAAmB,CAAC;AAE1D,MAAM,MAAM,aAAa,GAAG,KAAK,GAAG,UAAU,CAAC;AAE/C,MAAM,WAAW,yBAAyB;IACxC,EAAE,EAAE,MAAM,CAAC;IACX,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,kFAAkF;IAClF,MAAM,EAAE,aAAa,CAAC;IACtB,+BAA+B;IAC/B,WAAW,EAAE,MAAM,CAAC;IACpB,sFAAsF;IACtF,aAAa,EAAE,MAAM,CAAC;IACtB,qCAAqC;IACrC,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,0BAA0B;IAC1B,eAAe,EAAE,MAAM,CAAC;IACxB,gBAAgB,EAAE,MAAM,CAAC;IACzB,oBAAoB,EAAE,MAAM,CAAC;IAC7B,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,yEAAyE;IACzE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,4CAA4C;IAC5C,kBAAkB,EAAE,OAAO,CAAC;IAC5B,uBAAuB,EAAE,MAAM,EAAE,CAAC;IAClC,2DAA2D;IAC3D,SAAS,EAAE,OAAO,CAAC;IACnB,mFAAmF;IACnF,sBAAsB,CAAC,EAAE,OAAO,CAAC;CAClC;AAED,iFAAiF;AACjF,eAAO,MAAM,mBAAmB,EAAE;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,EAgB7D,CAAC;AAEF;;;;;;;;;GASG;AACH,MAAM,WAAW,wBAAwB;IACvC,EAAE,EAAE,MAAM,CAAC;IACX,mBAAmB,EAAE,MAAM,CAAC;IAC5B,qBAAqB,EAAE,MAAM,CAAC;IAC9B,gBAAgB,EAAE,MAAM,CAAC;IACzB,gBAAgB,EAAE,MAAM,CAAC;IACzB,+FAA+F;IAC/F,mBAAmB,EAAE,MAAM,CAAC;IAC5B,qBAAqB,EAAE,MAAM,CAAC;CAC/B;AAED,MAAM,WAAW,UAAU;IACzB,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,iFAAiF;IACjF,IAAI,CAAC,EAAE,aAAa,CAAC;IACrB,yEAAyE;IACzE,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,gFAAgF;IAChF,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAGD,MAAM,WAAW,UAAU;IAEzB,YAAY,EAAE,YAAY,GAAG,IAAI,CAAC;IAClC,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAEhB,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,WAAW,EAAE,WAAW,CAAC;IACzB,iBAAiB,EAAE,OAAO,CAAC;IAE3B,aAAa,EAAE,MAAM,CAAC;IACtB,eAAe,EAAE,MAAM,CAAC;IACxB,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAElB,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAEjC,uBAAuB,EAAE,MAAM,EAAE,CAAC;IAElC,MAAM,EAAE,UAAU,EAAE,CAAC;IAErB,WAAW,EAAE,MAAM,CAAC;IAEpB,qBAAqB,EAAE,yBAAyB,EAAE,CAAC;IAEnD,mBAAmB,EAAE,wBAAwB,EAAE,CAAC;IAKhD,gBAAgB,EAAE,YAAY,GAAG,UAAU,GAAG,aAAa,CAAC;IAC5D,KAAK,EAAE,MAAM,EAAE,CAAC;IAEhB,YAAY,EAAE,OAAO,CAAC;IACtB,2EAA2E;IAC3E,iBAAiB,EAAE,MAAM,CAAC;IAC1B,8DAA8D;IAC9D,eAAe,EAAE,MAAM,CAAC;IACxB,8CAA8C;IAC9C,cAAc,EAAE,MAAM,CAAC;IACvB;;;OAGG;IACH,gBAAgB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACzC,oFAAoF;IACpF,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,oGAAoG;IACpG,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,6EAA6E;IAC7E,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACzB;AAID,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAOnD;AAID,eAAO,MAAM,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA+HvB,CAAC;AAEF,MAAM,MAAM,OAAO,GACf,KAAK,GACL,SAAS,GACT,UAAU,GACV,eAAe,GACf,SAAS,GACT,OAAO,GACP,WAAW,GACX,YAAY,GACZ,YAAY,GACZ,eAAe,GACf,iBAAiB,GACjB,WAAW,CAAC;AAEhB,wBAAgB,YAAY,CAC1B,GAAG,EAAE,OAAO,EACZ,IAAI,EAAE,UAAU,GACf;IAAE,EAAE,EAAE,IAAI,CAAA;CAAE,GAAG;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,MAAM,EAAE,MAAM,EAAE,CAAA;CAAE,CA+DhD;AAID;;;;;GAKG;AACH,wBAAgB,uBAAuB,CACrC,CAAC,EAAE,UAAU,GACZ;IACD,gBAAgB,EAAE,MAAM,CAAC;IACzB,cAAc,EAAE,MAAM,CAAC;IACvB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,gBAAgB,EAAE,MAAM,CAAC;IACzB,oBAAoB,EAAE,MAAM,CAAC;IAC7B,WAAW,EAAE,kBAAkB,CAAC;IAChC,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,CA8BA;AAOD,MAAM,MAAM,eAAe,GACvB,MAAM,GAAG,iBAAiB,GAAG,gBAAgB,GAC7C,cAAc,GAAG,QAAQ,GAAG,aAAa,CAAC;AAC9C,MAAM,MAAM,kBAAkB,GAAG,eAAe,GAAG,MAAM,GAAG,MAAM,CAAC;AAEnE,MAAM,MAAM,aAAa,GACrB,SAAS,GAAG,OAAO,GAAG,MAAM,GAAG,QAAQ,GAAG,OAAO,GACjD,iBAAiB,GAAG,OAAO,GAAG,QAAQ,GAAG,MAAM,GAAG,OAAO,GACzD,WAAW,GAAG,OAAO,CAAC;AA2B1B,MAAM,WAAW,uBAAuB;IACtC,OAAO,EAAE,OAAO,CAAC;IACjB,gBAAgB,EAAE,MAAM,CAAC;IACzB,OAAO,EAAE;QAAE,cAAc,CAAC,EAAE,MAAM,CAAC;QAAC,eAAe,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAC/D,gBAAgB,EAAE,MAAM,CAAC;IACzB,oBAAoB,EAAE,MAAM,CAAC;IAC7B,WAAW,EAAE,kBAAkB,CAAC;IAChC,sBAAsB,EAAE,OAAO,CAAC;IAChC,uBAAuB,CAAC,EAAE,MAAM,CAAC;IACjC,8BAA8B,CAAC,EAAE,MAAM,EAAE,CAAC;IAC1C,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAWD,wBAAgB,yBAAyB,CACvC,CAAC,EAAE,yBAAyB,EAC5B,OAAO,UAAQ,GACd,uBAAuB,CAyCzB;AAED,MAAM,WAAW,mBAAmB;IAClC,WAAW,EAAE,MAAM,CAAC;IACpB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,cAAc,EAAE,MAAM,CAAC;IACvB,aAAa,EAAE;QAAE,EAAE,EAAE,MAAM,CAAA;KAAE,CAAC;IAC9B,eAAe,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,YAAY,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IAC7D,uBAAuB,CAAC,EAAE,MAAM,EAAE,CAAC;IACnC,eAAe,CAAC,EAAE;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IAC3D,MAAM,EAAE;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,GAAG,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,aAAa,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IACpF;;;;OAIG;IACH,WAAW,EAAE,MAAM,CAAC;IACpB,qBAAqB,EAAE,uBAAuB,EAAE,CAAC;IACjD,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;IAC1B,uBAAuB,CAAC,EAAE,MAAM,EAAE,CAAC;IACnC,4EAA4E;IAC5E,8BAA8B,CAAC,EAAE,MAAM,EAAE,CAAC;IAC1C,iBAAiB,EAAE,OAAO,CAAC;CAC5B;AAED;;;GAGG;AACH,MAAM,MAAM,sBAAsB,GAAG,IAAI,CACvC,mBAAmB,EACnB,aAAa,GAAG,qBAAqB,GAAG,aAAa,CACtD,CAAC;AAoBF,wBAAgB,wBAAwB,CAAC,CAAC,EAAE,UAAU,GAAG,mBAAmB,CAwI3E;AAED;;;;GAIG;AACH,wBAAgB,2BAA2B,CAAC,CAAC,EAAE,UAAU,GAAG,sBAAsB,CASjF;AAGD,eAAO,MAAM,eAAe,EAAE,UA8B7B,CAAC;AAmBF,wBAAgB,6BAA6B,CAAC,GAAG,EAAE,OAAO,GAAG,YAAY,GAAG,IAAI,CAoC/E;AA4CD,wBAAgB,yBAAyB,CAAC,GAAG,EAAE,GAAG,GAAG,UAAU,CA2K9D"}
@@ -107,11 +107,11 @@ export const stepSchemas = {
107
107
  }),
108
108
  beschikbaarheid: z
109
109
  .object({
110
- yearRound: z.boolean(),
110
+ availabilityMode: z.enum(["YEAR_ROUND", "SPECIFIC", "UNSPECIFIED"]),
111
111
  weeks: z.array(z.number().int().min(1).max(53)),
112
112
  })
113
- .refine((v) => v.yearRound || v.weeks.length > 0, {
114
- message: "Kies jaarrond of selecteer minstens één week",
113
+ .refine((v) => v.availabilityMode !== "SPECIFIC" || v.weeks.length > 0, {
114
+ message: "Selecteer minstens één week of kies jaarrond/niet gespecificeerd",
115
115
  path: ["weeks"],
116
116
  }),
117
117
  aanbieden: z
@@ -265,11 +265,18 @@ export function buildPackingConfigPayload(p, primary = false) {
265
265
  if (!vbnPackageCode && !customPackageId) {
266
266
  throw new Error(`Fusttype ontbreekt voor beladingsconfiguratie "${p.id}" — kies een VBN-fust of een custom package.`);
267
267
  }
268
+ // Floriday's `package`-union accepteert exact één tak. Bij SUPPLIER met een
269
+ // geldige custom package heeft die voorrang; anders vallen we terug op VBN.
268
270
  const pkg = {};
269
- if (vbnPackageCode)
271
+ if (customPackageId && p.source === "SUPPLIER") {
272
+ pkg.customPackageId = customPackageId;
273
+ }
274
+ else if (vbnPackageCode) {
270
275
  pkg.vbnPackageCode = vbnPackageCode;
271
- if (customPackageId)
276
+ }
277
+ else if (customPackageId) {
272
278
  pkg.customPackageId = customPackageId;
279
+ }
273
280
  const payload = {
274
281
  primary: Boolean(primary),
275
282
  piecesPerPackage: Math.max(1, Math.min(9999, Number(p.unitsPerPackage) || 1)),
@@ -277,7 +284,7 @@ export function buildPackingConfigPayload(p, primary = false) {
277
284
  packagesPerLayer: Math.max(1, Math.min(9999, Number(p.packagesPerLayer) || 1)),
278
285
  layersPerLoadCarrier: Math.max(1, Math.min(9999, Number(p.layersPerLoadCarrier) || 1)),
279
286
  loadCarrier: normaliseLoadCarrier(p.loadCarrier),
280
- isHiddenForDirectSales: false,
287
+ isHiddenForDirectSales: Boolean(p.isHiddenForDirectSales),
281
288
  };
282
289
  // Alleen geldige VRS-packaging UUIDs meesturen; supplierId-string uit de
283
290
  // hardcoded lijst is GEEN uuid en hoort niet in de Floriday-payload.
@@ -285,7 +292,9 @@ export function buildPackingConfigPayload(p, primary = false) {
285
292
  payload.floricodeVrsPackagingId = p.packagingSupplierId;
286
293
  }
287
294
  if (p.isCustomerSpecific && p.customerOrganizationIds.length > 0) {
288
- payload.allowedCustomerOrganizationIds = p.customerOrganizationIds;
295
+ const uuids = p.customerOrganizationIds.filter(isUuid);
296
+ if (uuids.length > 0)
297
+ payload.allowedCustomerOrganizationIds = uuids;
289
298
  }
290
299
  if (p.photoUrl)
291
300
  payload.photoUrl = p.photoUrl;
@@ -416,18 +425,24 @@ export function buildAddTradeItemPayload(d) {
416
425
  tradeItemName: { nl: tradeItemNameNl },
417
426
  characteristics,
418
427
  customerOrganizationIds: isCustomerSpecific ? d.customerOrganizationIds : [],
419
- seasonalPeriods: d.yearRound
428
+ seasonalPeriods: d.availabilityMode === "YEAR_ROUND"
420
429
  ? [{ startWeek: 1, endWeek: 53 }]
421
- : weeksToSeasonalPeriods(d.weeks),
430
+ : d.availabilityMode === "UNSPECIFIED"
431
+ ? []
432
+ : (() => {
433
+ const p = weeksToSeasonalPeriods(d.weeks);
434
+ if (p.length === 0) {
435
+ throw new Error("Kies minstens één week voor 'Specifieke periode', of kies jaarrond/niet gespecificeerd.");
436
+ }
437
+ return p;
438
+ })(),
422
439
  photos,
423
440
  warehouseId,
424
441
  packingConfigurations,
425
- botanicalNames: botanicalNames.length ? botanicalNames : undefined,
426
- countryOfOriginIsoCodes: countryOfOriginIsoCodes.length ? countryOfOriginIsoCodes : undefined,
427
- additionalPackagingMaterialIds: additionalPackagingMaterialIds.length
428
- ? additionalPackagingMaterialIds
429
- : undefined,
430
- isHiddenInCatalog: isCustomerSpecific ? true : !d.visibleInExplorer,
442
+ botanicalNames,
443
+ countryOfOriginIsoCodes,
444
+ additionalPackagingMaterialIds,
445
+ isHiddenInCatalog: !d.visibleInExplorer,
431
446
  };
432
447
  }
433
448
  /**
@@ -461,29 +476,74 @@ export const emptyWizardData = {
461
476
  warehouseId: "",
462
477
  packingConfigurations: [],
463
478
  additionalPackaging: [],
464
- yearRound: true,
479
+ availabilityMode: "YEAR_ROUND",
465
480
  weeks: [],
466
481
  offerForSale: true,
467
482
  salePricePerPiece: 0,
468
483
  saleStockPieces: 0,
469
484
  offerStartDate: new Date().toISOString().slice(0, 10),
485
+ priceGroupPrices: {},
486
+ vatRate: null,
487
+ vatCode: null,
470
488
  };
471
489
  // -------- Reverse mapper: Floriday cache row -> WizardData ----------------
472
490
  // Used by the detail/edit page to hydrate the wizard from an existing
473
491
  // published trade item.
474
- function productGroupFromVbn(vbnProductCode) {
475
- const n = Number(vbnProductCode);
476
- if (!Number.isFinite(n) || n <= 0)
492
+ function productGroupFromFloricodePrefix(raw) {
493
+ const text = String(raw ?? "").trim();
494
+ if (!/^\d+$/.test(text))
477
495
  return null;
478
- const s = String(Math.floor(n));
479
- if (s.startsWith("10"))
496
+ if (text.startsWith("10") || text.startsWith("11"))
480
497
  return "CUT_FLOWER";
481
- if (s.startsWith("20"))
498
+ if (text.startsWith("20") || text.startsWith("21") || text.startsWith("29"))
482
499
  return "POT_PLANT";
483
- if (s.startsWith("30"))
500
+ if (text.startsWith("30") || text.startsWith("31"))
484
501
  return "GARDEN_PLANT";
485
502
  return null;
486
503
  }
504
+ function productGroupFromVbn(vbnProductCode) {
505
+ return productGroupFromFloricodePrefix(vbnProductCode);
506
+ }
507
+ export function normalizeFloridayProductGroup(raw) {
508
+ if (!raw)
509
+ return null;
510
+ if (typeof raw === "object") {
511
+ const o = raw;
512
+ const candidates = [
513
+ o.productGroup,
514
+ o.productGroupId,
515
+ o.product_group_id,
516
+ o.vbnProductGroup,
517
+ o.vbnProductGroupId,
518
+ o.vbn_product_group_id,
519
+ o.code,
520
+ o.id,
521
+ o.name,
522
+ o.description,
523
+ o.value,
524
+ ];
525
+ for (const candidate of candidates) {
526
+ const group = normalizeFloridayProductGroup(candidate);
527
+ if (group)
528
+ return group;
529
+ }
530
+ return null;
531
+ }
532
+ const prefixed = productGroupFromFloricodePrefix(raw);
533
+ if (prefixed)
534
+ return prefixed;
535
+ const s = String(raw).trim().toUpperCase().replace(/[\s-]+/g, "_");
536
+ if (s === "CUT_FLOWER" || s === "POT_PLANT" || s === "GARDEN_PLANT") {
537
+ return s;
538
+ }
539
+ if (s.includes("TUIN") || s.includes("GARDEN"))
540
+ return "GARDEN_PLANT";
541
+ if (s.includes("SNIJ") || s.includes("CUT") || s.includes("FLOWER"))
542
+ return "CUT_FLOWER";
543
+ if (s.includes("KAMER") || s.includes("POT"))
544
+ return "POT_PLANT";
545
+ return null;
546
+ }
487
547
  function pickName(value) {
488
548
  if (!value)
489
549
  return "";
@@ -512,15 +572,44 @@ function expandSeasonalPeriods(periods) {
512
572
  const e = Number(p?.endWeek ?? p?.startWeek);
513
573
  if (!Number.isFinite(s) || !Number.isFinite(e))
514
574
  continue;
515
- for (let w = Math.max(1, s); w <= Math.min(53, e); w++)
516
- out.add(w);
575
+ const sc = Math.max(1, Math.min(53, s));
576
+ const ec = Math.max(1, Math.min(53, e));
577
+ if (ec >= sc) {
578
+ for (let w = sc; w <= ec; w++)
579
+ out.add(w);
580
+ }
581
+ else {
582
+ // Wrap-around (bv. week 50..3) — Floriday interpreteert dit als
583
+ // [start..53] + [1..end].
584
+ for (let w = sc; w <= 53; w++)
585
+ out.add(w);
586
+ for (let w = 1; w <= ec; w++)
587
+ out.add(w);
588
+ }
517
589
  }
518
590
  return [...out].sort((a, b) => a - b);
519
591
  }
520
592
  export function floridayCacheToWizardData(raw) {
521
593
  if (!raw || typeof raw !== "object")
522
594
  return { ...emptyWizardData };
523
- const vbn = raw.vbnProductCode ?? raw.vbnCode ?? "";
595
+ const vbn = raw.vbnProductCode ??
596
+ raw.vbnCode ??
597
+ raw.vbnProduct?.code ??
598
+ raw.vbnProduct?.vbnCode ??
599
+ raw.vbnProductCodeId ??
600
+ "";
601
+ const vbnNameHint = (typeof raw.vbnProduct?.name === "object"
602
+ ? (raw.vbnProduct.name?.nl ?? raw.vbnProduct.name?.en)
603
+ : raw.vbnProduct?.name) ?? "";
604
+ const productGroup = normalizeFloridayProductGroup(raw.productGroup) ??
605
+ normalizeFloridayProductGroup(raw.productGroupId) ??
606
+ normalizeFloridayProductGroup(raw.product_group_id) ??
607
+ normalizeFloridayProductGroup(raw.vbnProductGroup) ??
608
+ normalizeFloridayProductGroup(raw.vbnProductGroupId) ??
609
+ normalizeFloridayProductGroup(raw.vbn_product_group_id) ??
610
+ normalizeFloridayProductGroup(raw.vbnProduct) ??
611
+ normalizeFloridayProductGroup(raw.product) ??
612
+ productGroupFromVbn(vbn);
524
613
  const characteristics = Array.isArray(raw.characteristics) ? raw.characteristics : [];
525
614
  const features = {};
526
615
  for (const c of characteristics) {
@@ -540,6 +629,7 @@ export function floridayCacheToWizardData(raw) {
540
629
  url: p.url,
541
630
  primary: i === primaryPhotoIdxNorm,
542
631
  sortOrder: p.sortIndex ?? i,
632
+ type: p?.type ?? "WEBSHOPFRIENDLY",
543
633
  }));
544
634
  const packings = Array.isArray(raw.packingConfigurations)
545
635
  ? raw.packingConfigurations
@@ -550,24 +640,31 @@ export function floridayCacheToWizardData(raw) {
550
640
  })();
551
641
  const packingConfigurations = packings.map((p, i) => {
552
642
  const vrsId = p?.floricodeVrsPackagingId ?? p?.packagingSupplierId ?? undefined;
643
+ const customPkgId = p?.package?.customPackageId ?? p?.packagingSupplierMaterialId ?? undefined;
553
644
  const allowed = Array.isArray(p?.allowedCustomerOrganizationIds)
554
645
  ? p.allowedCustomerOrganizationIds
555
646
  : Array.isArray(p?.customerOrganizationIds)
556
647
  ? p.customerOrganizationIds
557
648
  : [];
649
+ const hasSupplier = Boolean(vrsId) || Boolean(customPkgId);
558
650
  return {
559
651
  id: `existing-${i}`,
560
- source: vrsId ? "SUPPLIER" : "VBN",
652
+ floridayId: p?.packingConfigurationId ?? p?.id ?? undefined,
653
+ source: hasSupplier ? "SUPPLIER" : "VBN",
561
654
  packagingType: String(p?.package?.vbnPackageCode ?? ""),
562
- loadCarrier: String(p?.loadCarrier ?? "NONE"),
655
+ loadCarrier: String(p?.loadCarrier ?? ""),
563
656
  packagingSupplierId: vrsId ?? undefined,
564
- packagingMaterialId: p?.package?.customPackageId ?? p?.packagingSupplierMaterialId ?? undefined,
657
+ packagingSupplierName: p?.packagingSupplierName ?? undefined,
658
+ packagingMaterialId: customPkgId ?? undefined,
659
+ packagingMaterialName: p?.packagingMaterialName ?? undefined,
565
660
  unitsPerPackage: Number(p?.piecesPerPackage ?? 1),
566
661
  packagesPerLayer: Number(p?.packagesPerLayer ?? 1),
567
662
  layersPerLoadCarrier: Number(p?.layersPerLoadCarrier ?? 1),
663
+ photoUrl: typeof p?.photoUrl === "string" ? p.photoUrl : undefined,
568
664
  isCustomerSpecific: allowed.length > 0,
569
665
  customerOrganizationIds: allowed,
570
666
  isPrimary: i === primaryPackingIdxNorm,
667
+ isHiddenForDirectSales: Boolean(p?.isHiddenForDirectSales),
571
668
  };
572
669
  });
573
670
  const customerOrgIds = Array.isArray(raw.customerOrganizationIds)
@@ -583,10 +680,25 @@ export function floridayCacheToWizardData(raw) {
583
680
  ? raw.seasonalPeriods
584
681
  : [];
585
682
  const weeks = expandSeasonalPeriods(seasonalPeriods);
683
+ // Sync S62 (Land van herkomst characteristic) met stap-3 land-van-oorsprong.
684
+ // Floriday kan één van beide leeg laten; wij houden ze deterministisch gelijk
685
+ // zodat de PUT-payload nooit afhangt van welke stap laatst is geopend.
686
+ const firstCountry = countries
687
+ .map((c) => String(c ?? "").trim().toUpperCase())
688
+ .find((c) => /^[A-Z]{2}$/.test(c));
689
+ const existingS62 = String(features["S62"] ?? "").trim().toUpperCase();
690
+ if (!existingS62 && firstCountry) {
691
+ features["S62"] = firstCountry;
692
+ }
693
+ const hydratedCountryOfOrigin = countries.length
694
+ ? countries.join(",")
695
+ : existingS62
696
+ ? existingS62
697
+ : firstCountry ?? "";
586
698
  return {
587
- productGroup: productGroupFromVbn(vbn),
699
+ productGroup,
588
700
  vbnCode: vbn ? String(vbn) : "",
589
- vbnName: "",
701
+ vbnName: vbnNameHint ? String(vbnNameHint) : "",
590
702
  articleCode: String(raw.supplierArticleCode ?? raw.articleCode ?? ""),
591
703
  name: pickName(raw.tradeItemName ?? raw.name),
592
704
  nameEn: pickNameEn(raw.tradeItemName ?? raw.name),
@@ -595,7 +707,7 @@ export function floridayCacheToWizardData(raw) {
595
707
  articleType: customerOrgIds.length > 0 ? "CUSTOMER_SPECIFIC" : "REGULAR",
596
708
  visibleInExplorer: !raw.isHiddenInCatalog,
597
709
  botanicalName: botanicalNames.join("; "),
598
- countryOfOrigin: countries.join(","),
710
+ countryOfOrigin: hydratedCountryOfOrigin,
599
711
  producerCode: "",
600
712
  lotNumber: "",
601
713
  features,
@@ -604,13 +716,34 @@ export function floridayCacheToWizardData(raw) {
604
716
  warehouseId: String(raw.warehouseId ?? raw.warehouse?.warehouseId ?? ""),
605
717
  packingConfigurations,
606
718
  additionalPackaging: [],
607
- yearRound: weeks.length === 0 || weeks.length >= 52,
608
- weeks: weeks.length >= 52 ? [] : weeks,
719
+ availabilityMode: (() => {
720
+ if (seasonalPeriods.length === 0)
721
+ return "UNSPECIFIED";
722
+ if (seasonalPeriods.length === 1 &&
723
+ Number(seasonalPeriods[0]?.startWeek) === 1 &&
724
+ (Number(seasonalPeriods[0]?.endWeek) === 53 ||
725
+ Number(seasonalPeriods[0]?.endWeek) === 52)) {
726
+ return "YEAR_ROUND";
727
+ }
728
+ return "SPECIFIC";
729
+ })(),
730
+ weeks: (() => {
731
+ if (seasonalPeriods.length === 0)
732
+ return [];
733
+ if (seasonalPeriods.length === 1 &&
734
+ Number(seasonalPeriods[0]?.startWeek) === 1 &&
735
+ (Number(seasonalPeriods[0]?.endWeek) === 53 ||
736
+ Number(seasonalPeriods[0]?.endWeek) === 52)) {
737
+ return [];
738
+ }
739
+ return weeks;
740
+ })(),
609
741
  // Reeds gepubliceerd via de wizard — commerciële velden staan uit voor edit,
610
742
  // want een bestaand CustomerOffer wordt hier niet opnieuw aangemaakt.
611
743
  offerForSale: false,
612
744
  salePricePerPiece: 0,
613
745
  saleStockPieces: 0,
614
746
  offerStartDate: new Date().toISOString().slice(0, 10),
747
+ priceGroupPrices: {},
615
748
  };
616
749
  }