@flowselections/floriday-voorraad 1.0.37 → 1.0.39
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/TemplatePage.d.ts +1 -1
- package/dist-lib/components/TemplatePage.d.ts.map +1 -1
- package/dist-lib/components/voorraad/AdditionalPackagingDialog.d.ts +1 -1
- package/dist-lib/components/voorraad/AdditionalPackagingDialog.d.ts.map +1 -1
- package/dist-lib/components/voorraad/ArtikelCompositionCard.d.ts +1 -1
- package/dist-lib/components/voorraad/ArtikelCompositionCard.d.ts.map +1 -1
- package/dist-lib/components/voorraad/ArtikelWizard.d.ts +1 -1
- package/dist-lib/components/voorraad/ArtikelWizard.d.ts.map +1 -1
- package/dist-lib/components/voorraad/ConnectionBadge.d.ts +1 -1
- package/dist-lib/components/voorraad/ConnectionBadge.d.ts.map +1 -1
- package/dist-lib/components/voorraad/EditArtikelPage.d.ts +1 -1
- package/dist-lib/components/voorraad/EditArtikelPage.d.ts.map +1 -1
- package/dist-lib/components/voorraad/ExcelExportButton.d.ts +1 -1
- package/dist-lib/components/voorraad/ExcelExportButton.d.ts.map +1 -1
- package/dist-lib/components/voorraad/FloridayInfoCard.d.ts +1 -1
- package/dist-lib/components/voorraad/FloridayInfoCard.d.ts.map +1 -1
- package/dist-lib/components/voorraad/FloridayStatusBadge.d.ts +1 -1
- package/dist-lib/components/voorraad/FloridayStatusBadge.d.ts.map +1 -1
- package/dist-lib/components/voorraad/FustenPage.d.ts +1 -1
- package/dist-lib/components/voorraad/FustenPage.d.ts.map +1 -1
- package/dist-lib/components/voorraad/InventorySettingsDrawer.d.ts +10 -0
- package/dist-lib/components/voorraad/InventorySettingsDrawer.d.ts.map +1 -0
- package/dist-lib/components/voorraad/InventorySettingsDrawer.js +99 -0
- package/dist-lib/components/voorraad/InventoryStatusBadge.d.ts +6 -0
- package/dist-lib/components/voorraad/InventoryStatusBadge.d.ts.map +1 -0
- package/dist-lib/components/voorraad/InventoryStatusBadge.js +43 -0
- package/dist-lib/components/voorraad/ModuleHealthCard.d.ts +1 -1
- package/dist-lib/components/voorraad/ModuleHealthCard.d.ts.map +1 -1
- package/dist-lib/components/voorraad/NieuwArtikelPage.d.ts +1 -1
- package/dist-lib/components/voorraad/NieuwArtikelPage.d.ts.map +1 -1
- package/dist-lib/components/voorraad/OrderHistoryCard.d.ts +1 -1
- package/dist-lib/components/voorraad/OrderHistoryCard.d.ts.map +1 -1
- package/dist-lib/components/voorraad/PriceStatusBadge.d.ts +1 -1
- package/dist-lib/components/voorraad/PriceStatusBadge.d.ts.map +1 -1
- package/dist-lib/components/voorraad/ProductCustomFieldsCard.d.ts +1 -1
- package/dist-lib/components/voorraad/ProductCustomFieldsCard.d.ts.map +1 -1
- package/dist-lib/components/voorraad/ProductLinkCard.d.ts +1 -1
- package/dist-lib/components/voorraad/ProductLinkCard.d.ts.map +1 -1
- package/dist-lib/components/voorraad/PublicatiesPage.d.ts +1 -1
- package/dist-lib/components/voorraad/PublicatiesPage.d.ts.map +1 -1
- package/dist-lib/components/voorraad/PublishProgressCard.d.ts +1 -1
- package/dist-lib/components/voorraad/PublishProgressCard.d.ts.map +1 -1
- package/dist-lib/components/voorraad/PublishReadinessCard.d.ts +1 -1
- package/dist-lib/components/voorraad/PublishReadinessCard.d.ts.map +1 -1
- package/dist-lib/components/voorraad/StepSamenstelling.d.ts +1 -1
- package/dist-lib/components/voorraad/StepSamenstelling.d.ts.map +1 -1
- package/dist-lib/components/voorraad/StockBulkButtons.d.ts +1 -1
- package/dist-lib/components/voorraad/StockBulkButtons.d.ts.map +1 -1
- package/dist-lib/components/voorraad/StockHistoryChart.d.ts +4 -0
- package/dist-lib/components/voorraad/StockHistoryChart.d.ts.map +1 -0
- package/dist-lib/components/voorraad/StockHistoryChart.js +53 -0
- package/dist-lib/components/voorraad/StockPushMonitor.d.ts +1 -1
- package/dist-lib/components/voorraad/StockPushMonitor.d.ts.map +1 -1
- package/dist-lib/components/voorraad/StockSyncStatus.d.ts +1 -1
- package/dist-lib/components/voorraad/StockSyncStatus.d.ts.map +1 -1
- package/dist-lib/components/voorraad/ValidationOverviewTable.d.ts +1 -1
- package/dist-lib/components/voorraad/ValidationOverviewTable.d.ts.map +1 -1
- package/dist-lib/components/voorraad/ValidationPage.d.ts +1 -1
- package/dist-lib/components/voorraad/ValidationPage.d.ts.map +1 -1
- package/dist-lib/components/voorraad/VoorraadDashboard.d.ts +1 -1
- package/dist-lib/components/voorraad/VoorraadDashboard.d.ts.map +1 -1
- package/dist-lib/components/voorraad/VoorraadPage.d.ts +1 -1
- package/dist-lib/components/voorraad/VoorraadPage.d.ts.map +1 -1
- package/dist-lib/components/voorraad/VoorraadPage.js +29 -1
- package/dist-lib/components/voorraad/VoorraadPagination.d.ts +1 -1
- package/dist-lib/components/voorraad/VoorraadPagination.d.ts.map +1 -1
- package/dist-lib/components/voorraad/VoorraadStockCard.d.ts +1 -1
- package/dist-lib/components/voorraad/VoorraadStockCard.d.ts.map +1 -1
- package/dist-lib/components/voorraad/VoorraadTable.d.ts +10 -2
- package/dist-lib/components/voorraad/VoorraadTable.d.ts.map +1 -1
- package/dist-lib/components/voorraad/VoorraadTable.js +17 -6
- package/dist-lib/components/voorraad/VoorraadVeldenCard.d.ts +1 -1
- package/dist-lib/components/voorraad/VoorraadVeldenCard.d.ts.map +1 -1
- package/dist-lib/hooks/useInventorySettings.d.ts +29 -0
- package/dist-lib/hooks/useInventorySettings.d.ts.map +1 -0
- package/dist-lib/hooks/useInventorySettings.js +62 -0
- package/dist-lib/index.d.ts +0 -1
- package/dist-lib/index.d.ts.map +1 -1
- package/dist-lib/index.js +0 -3
- package/dist-lib/integrations/supabase/auth-middleware.d.ts +8744 -5912
- package/dist-lib/integrations/supabase/auth-middleware.d.ts.map +1 -1
- package/dist-lib/integrations/supabase/client.d.ts +8744 -5912
- package/dist-lib/integrations/supabase/client.d.ts.map +1 -1
- package/dist-lib/integrations/supabase/client.js +3 -2
- package/dist-lib/integrations/supabase/client.server.d.ts +8744 -5912
- package/dist-lib/integrations/supabase/client.server.d.ts.map +1 -1
- package/dist-lib/integrations/supabase/client.server.js +1 -1
- package/dist-lib/integrations/supabase/previewAuthStorage.d.ts +6 -0
- package/dist-lib/integrations/supabase/previewAuthStorage.d.ts.map +1 -0
- package/dist-lib/integrations/supabase/previewAuthStorage.js +92 -0
- package/dist-lib/integrations/supabase/types.d.ts +5330 -2467
- package/dist-lib/integrations/supabase/types.d.ts.map +1 -1
- package/dist-lib/integrations/supabase/types.js +3 -0
- package/dist-lib/lib/floricode-required-features.functions.d.ts +8744 -5918
- package/dist-lib/lib/floricode-required-features.functions.d.ts.map +1 -1
- package/dist-lib/lib/floriday-2026v1.server.d.ts +77 -0
- package/dist-lib/lib/floriday-2026v1.server.d.ts.map +1 -0
- package/dist-lib/lib/floriday-2026v1.server.js +178 -0
- package/dist-lib/lib/floriday-customer-offer.functions.d.ts +8746 -5912
- package/dist-lib/lib/floriday-customer-offer.functions.d.ts.map +1 -1
- package/dist-lib/lib/floriday-env.functions.d.ts +7282 -1618
- package/dist-lib/lib/floriday-env.functions.d.ts.map +1 -1
- package/dist-lib/lib/floriday-gateway.functions.d.ts +22466 -5474
- package/dist-lib/lib/floriday-gateway.functions.d.ts.map +1 -1
- package/dist-lib/lib/floriday-stock-supply.server.d.ts +18 -7
- package/dist-lib/lib/floriday-stock-supply.server.d.ts.map +1 -1
- package/dist-lib/lib/floriday-stock-supply.server.js +70 -68
- package/dist-lib/lib/floriday-vbn-required.functions.d.ts +7282 -1618
- package/dist-lib/lib/floriday-vbn-required.functions.d.ts.map +1 -1
- package/dist-lib/lib/floriday-warehouse.functions.d.ts +11078 -2582
- package/dist-lib/lib/floriday-warehouse.functions.d.ts.map +1 -1
- package/dist-lib/lib/floriday-writes.functions.d.ts +7282 -1618
- package/dist-lib/lib/floriday-writes.functions.d.ts.map +1 -1
- package/dist-lib/lib/inventory-settings.functions.d.ts +47391 -0
- package/dist-lib/lib/inventory-settings.functions.d.ts.map +1 -0
- package/dist-lib/lib/inventory-settings.functions.js +97 -0
- package/dist-lib/lib/module-health.functions.d.ts +7282 -1618
- package/dist-lib/lib/module-health.functions.d.ts.map +1 -1
- package/dist-lib/lib/stock-sync.functions.d.ts +7282 -1618
- package/dist-lib/lib/stock-sync.functions.d.ts.map +1 -1
- package/package.json +1 -1
- package/dist-lib/components/settings/VoorraadSettingsCard.d.ts +0 -2
- package/dist-lib/components/settings/VoorraadSettingsCard.d.ts.map +0 -1
- package/dist-lib/components/settings/VoorraadSettingsCard.js +0 -39
- package/dist-lib/components/voorraad/ConnectionPicker.d.ts +0 -8
- package/dist-lib/components/voorraad/ConnectionPicker.d.ts.map +0 -1
- package/dist-lib/components/voorraad/ConnectionPicker.js +0 -8
|
@@ -1,30 +1,39 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Server-side voorraadpush naar Floriday.
|
|
2
|
+
* Server-side voorraadpush naar Floriday (Suppliers API 2026v1).
|
|
3
3
|
*
|
|
4
|
-
* Eén wachtrijregel = de
|
|
5
|
-
* Per regel
|
|
6
|
-
* 1. het
|
|
7
|
-
*
|
|
4
|
+
* Eén wachtrijregel = de gewenste stand van één trade item voor één
|
|
5
|
+
* handelsweek. Per regel gebeuren maximaal twee dingen, in vaste volgorde:
|
|
6
|
+
* 1. het aantal stuks → `PUT` /trade-items/{id}/base-supply/{jaar}/{week}
|
|
7
|
+
* of `PATCH` (…?numberOfPieces=…) zonder prijs
|
|
8
|
+
* 2. de beschikbaarheid → `PUT` /trade-items/availabilities-per-week
|
|
8
9
|
*
|
|
9
10
|
* Deze module bevat geen HTTP-route en geen wachtrijbeheer; hij wordt
|
|
10
11
|
* aangeroepen door de verwerker (dit project als terugvalweg, en de
|
|
11
12
|
* Floriday-Authenticatie-module als vaste verwerker).
|
|
12
13
|
*/
|
|
14
|
+
import { type ErrorClass } from "./floriday-2026v1.server";
|
|
13
15
|
export type StockQueueRow = {
|
|
14
16
|
id: string;
|
|
15
17
|
connection_id: string;
|
|
16
18
|
trade_item_id: string;
|
|
19
|
+
product_id?: string | null;
|
|
17
20
|
number_of_pieces: number | null;
|
|
18
21
|
desired_available: boolean | null;
|
|
19
22
|
attempts: number | null;
|
|
23
|
+
target_year?: number | null;
|
|
24
|
+
target_week?: number | null;
|
|
25
|
+
stock_mode?: string | null;
|
|
20
26
|
};
|
|
21
27
|
export type StockPushOutcome = {
|
|
22
28
|
ok: boolean;
|
|
23
29
|
/** Fout die niet vanzelf overgaat: niet opnieuw proberen. */
|
|
24
30
|
permanent?: boolean;
|
|
25
31
|
error?: string;
|
|
32
|
+
errorClass?: ErrorClass;
|
|
26
33
|
attemptId?: string;
|
|
27
|
-
/**
|
|
34
|
+
/** Regel sloeg op een verlopen week en is overgeslagen. */
|
|
35
|
+
skipped?: string;
|
|
36
|
+
/** Aantal is via PATCH doorgezet omdat er geen prijs bekend is. */
|
|
28
37
|
quantitySkipped?: string;
|
|
29
38
|
};
|
|
30
39
|
/** ISO-weeknummer van vandaag (of van een gegeven datum). */
|
|
@@ -38,7 +47,7 @@ export declare function isoWeekParts(input?: string | Date): {
|
|
|
38
47
|
* opnieuw geprobeerd — anders blijft een kapotte regel eindeloos rondgaan.
|
|
39
48
|
*/
|
|
40
49
|
export declare function isPermanentError(message: string): boolean;
|
|
41
|
-
/** Snelheidslimiet-
|
|
50
|
+
/** Snelheidslimiet- of vergrendelingssignaal: verwerker breekt de ronde af. */
|
|
42
51
|
export declare function isRateLimited(message: string): boolean;
|
|
43
52
|
/**
|
|
44
53
|
* Zet één wachtrijregel door naar Floriday. Gooit nooit: het resultaat
|
|
@@ -49,5 +58,7 @@ export declare function pushStockRow(params: {
|
|
|
49
58
|
supabaseAdmin: any;
|
|
50
59
|
environment: string;
|
|
51
60
|
row: StockQueueRow;
|
|
61
|
+
/** Alleen berekenen en teruggeven wat er zou gebeuren. */
|
|
62
|
+
dryRun?: boolean;
|
|
52
63
|
}): Promise<StockPushOutcome>;
|
|
53
64
|
//# sourceMappingURL=floriday-stock-supply.server.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"floriday-stock-supply.server.d.ts","sourceRoot":"","sources":["../../src/lib/floriday-stock-supply.server.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"floriday-stock-supply.server.d.ts","sourceRoot":"","sources":["../../src/lib/floriday-stock-supply.server.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAKL,KAAK,UAAU,EAChB,MAAM,0BAA0B,CAAC;AAElC,MAAM,MAAM,aAAa,GAAG;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,iBAAiB,EAAE,OAAO,GAAG,IAAI,CAAC;IAClC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC5B,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG;IAC7B,EAAE,EAAE,OAAO,CAAC;IACZ,6DAA6D;IAC7D,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,2DAA2D;IAC3D,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,mEAAmE;IACnE,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B,CAAC;AAEF,6DAA6D;AAC7D,wBAAgB,YAAY,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAElF;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAEzD;AAED,+EAA+E;AAC/E,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAGtD;AAmCD;;;;GAIG;AACH,wBAAsB,YAAY,CAAC,MAAM,EAAE;IACzC,aAAa,EAAE,GAAG,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,GAAG,EAAE,aAAa,CAAC;IACnB,0DAA0D;IAC1D,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAoH5B"}
|
|
@@ -1,26 +1,20 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Server-side voorraadpush naar Floriday.
|
|
2
|
+
* Server-side voorraadpush naar Floriday (Suppliers API 2026v1).
|
|
3
3
|
*
|
|
4
|
-
* Eén wachtrijregel = de
|
|
5
|
-
* Per regel
|
|
6
|
-
* 1. het
|
|
7
|
-
*
|
|
4
|
+
* Eén wachtrijregel = de gewenste stand van één trade item voor één
|
|
5
|
+
* handelsweek. Per regel gebeuren maximaal twee dingen, in vaste volgorde:
|
|
6
|
+
* 1. het aantal stuks → `PUT` /trade-items/{id}/base-supply/{jaar}/{week}
|
|
7
|
+
* of `PATCH` (…?numberOfPieces=…) zonder prijs
|
|
8
|
+
* 2. de beschikbaarheid → `PUT` /trade-items/availabilities-per-week
|
|
8
9
|
*
|
|
9
10
|
* Deze module bevat geen HTTP-route en geen wachtrijbeheer; hij wordt
|
|
10
11
|
* aangeroepen door de verwerker (dit project als terugvalweg, en de
|
|
11
12
|
* Floriday-Authenticatie-module als vaste verwerker).
|
|
12
13
|
*/
|
|
14
|
+
import { Floriday2026v1Client, classifyError, isPastWeek, isoWeekOf, } from "./floriday-2026v1.server";
|
|
13
15
|
/** ISO-weeknummer van vandaag (of van een gegeven datum). */
|
|
14
16
|
export function isoWeekParts(input) {
|
|
15
|
-
|
|
16
|
-
const source = Number.isNaN(parsed.getTime()) ? new Date() : parsed;
|
|
17
|
-
const date = new Date(Date.UTC(source.getUTCFullYear(), source.getUTCMonth(), source.getUTCDate()));
|
|
18
|
-
const day = date.getUTCDay() || 7;
|
|
19
|
-
date.setUTCDate(date.getUTCDate() + 4 - day);
|
|
20
|
-
const year = date.getUTCFullYear();
|
|
21
|
-
const yearStart = new Date(Date.UTC(year, 0, 1));
|
|
22
|
-
const week = Math.ceil(((date.getTime() - yearStart.getTime()) / 86400000 + 1) / 7);
|
|
23
|
-
return { year, week };
|
|
17
|
+
return isoWeekOf(input);
|
|
24
18
|
}
|
|
25
19
|
/**
|
|
26
20
|
* Bepaalt of een fout tijdelijk is (netwerk, snelheidslimiet, 5xx) of
|
|
@@ -28,21 +22,12 @@ export function isoWeekParts(input) {
|
|
|
28
22
|
* opnieuw geprobeerd — anders blijft een kapotte regel eindeloos rondgaan.
|
|
29
23
|
*/
|
|
30
24
|
export function isPermanentError(message) {
|
|
31
|
-
|
|
32
|
-
if (/\b(429|500|502|503|504)\b/.test(m))
|
|
33
|
-
return false;
|
|
34
|
-
if (/timeout|timed out|network|fetch failed|econn|socket|rate limit|too many requests/.test(m)) {
|
|
35
|
-
return false;
|
|
36
|
-
}
|
|
37
|
-
if (/\b(400|401|403|404|409|422)\b/.test(m))
|
|
38
|
-
return true;
|
|
39
|
-
if (/unauthorized|forbidden|not found|validation|invalid/.test(m))
|
|
40
|
-
return true;
|
|
41
|
-
return false;
|
|
25
|
+
return classifyError(message) === "permanent";
|
|
42
26
|
}
|
|
43
|
-
/** Snelheidslimiet-
|
|
27
|
+
/** Snelheidslimiet- of vergrendelingssignaal: verwerker breekt de ronde af. */
|
|
44
28
|
export function isRateLimited(message) {
|
|
45
|
-
|
|
29
|
+
const c = classifyError(message);
|
|
30
|
+
return c === "rate-limit" || c === "locked";
|
|
46
31
|
}
|
|
47
32
|
async function resolveWarehouseId(supabaseAdmin, connectionId, tradeItemId, cachedItem) {
|
|
48
33
|
const { data: pref } = await supabaseAdmin
|
|
@@ -71,11 +56,19 @@ async function resolveWarehouseId(supabaseAdmin, connectionId, tradeItemId, cach
|
|
|
71
56
|
* terugschrijven.
|
|
72
57
|
*/
|
|
73
58
|
export async function pushStockRow(params) {
|
|
74
|
-
const { supabaseAdmin, environment, row } = params;
|
|
59
|
+
const { supabaseAdmin, environment, row, dryRun } = params;
|
|
75
60
|
const pieces = Math.max(0, Number(row.number_of_pieces ?? 0) || 0);
|
|
76
61
|
const available = row.desired_available ?? pieces > 0;
|
|
62
|
+
// De doelweek staat vast in de regel zelf; nooit "nu" gebruiken, anders
|
|
63
|
+
// publiceert een late verwerking naar de verkeerde week.
|
|
64
|
+
const current = isoWeekOf();
|
|
65
|
+
const year = Number(row.target_year ?? current.year);
|
|
66
|
+
const week = Number(row.target_week ?? current.week);
|
|
67
|
+
if (isPastWeek(year, week)) {
|
|
68
|
+
return { ok: true, skipped: `Week ${year}-${week} is verlopen; regel overgeslagen.` };
|
|
69
|
+
}
|
|
77
70
|
try {
|
|
78
|
-
const
|
|
71
|
+
const client = new Floriday2026v1Client(supabaseAdmin, environment, row.connection_id);
|
|
79
72
|
const { data: cached } = await supabaseAdmin
|
|
80
73
|
.from("floriday_trade_items_cache")
|
|
81
74
|
.select("data")
|
|
@@ -86,15 +79,12 @@ export async function pushStockRow(params) {
|
|
|
86
79
|
return {
|
|
87
80
|
ok: false,
|
|
88
81
|
permanent: true,
|
|
82
|
+
errorClass: "permanent",
|
|
89
83
|
error: "Dit artikel staat nog niet in de lokale Floriday-cache. Synchroniseer de artikelen en probeer opnieuw.",
|
|
90
84
|
};
|
|
91
85
|
}
|
|
92
86
|
const item = cached.data ?? {};
|
|
93
|
-
|
|
94
|
-
// 1. Werkelijk aantal stuks via het weekaanbod van de lopende week.
|
|
95
|
-
// Zonder bekende prijs kan Floriday geen basisaanbod aannemen; dan
|
|
96
|
-
// zetten we alleen de beschikbaarheid en melden we dat rustig.
|
|
97
|
-
const { year, week } = isoWeekParts();
|
|
87
|
+
await resolveWarehouseId(supabaseAdmin, row.connection_id, row.trade_item_id, item);
|
|
98
88
|
const { data: supply } = await supabaseAdmin
|
|
99
89
|
.from("trade_item_supply_lines")
|
|
100
90
|
.select("price_per_piece, currency")
|
|
@@ -104,48 +94,60 @@ export async function pushStockRow(params) {
|
|
|
104
94
|
.limit(1)
|
|
105
95
|
.maybeSingle();
|
|
106
96
|
const pricePerPiece = Number(supply?.price_per_piece ?? NaN);
|
|
97
|
+
const hasPrice = Number.isFinite(pricePerPiece) && pricePerPiece > 0;
|
|
107
98
|
let quantitySkipped;
|
|
108
|
-
if (
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
99
|
+
if (dryRun) {
|
|
100
|
+
return {
|
|
101
|
+
ok: true,
|
|
102
|
+
skipped: `Proefrun: ${pieces} stuks, beschikbaar=${available}, week ${year}-${week}, ${hasPrice ? "met prijs (PUT)" : "zonder prijs (PATCH)"}.`,
|
|
103
|
+
};
|
|
104
|
+
}
|
|
105
|
+
// 1. Aantal stuks voor de doelweek.
|
|
106
|
+
const quantityResult = hasPrice
|
|
107
|
+
? await client.updateWeeklyBaseSupply({
|
|
108
|
+
tradeItemId: row.trade_item_id,
|
|
109
|
+
year,
|
|
110
|
+
week,
|
|
111
|
+
numberOfPieces: pieces,
|
|
112
|
+
pricePerPiece,
|
|
113
|
+
currency: supply?.currency ?? "EUR",
|
|
114
|
+
})
|
|
115
|
+
: await client.patchWeeklyBaseSupplyQuantity({
|
|
116
|
+
tradeItemId: row.trade_item_id,
|
|
117
|
+
year,
|
|
118
|
+
week,
|
|
119
|
+
numberOfPieces: pieces,
|
|
125
120
|
});
|
|
121
|
+
if (!quantityResult.ok) {
|
|
122
|
+
const message = quantityResult.error ?? "Onbekende fout bij het aanbod per week.";
|
|
123
|
+
const cls = classifyError(message);
|
|
124
|
+
return { ok: false, error: message, errorClass: cls, permanent: cls === "permanent" };
|
|
126
125
|
}
|
|
127
|
-
|
|
126
|
+
if (!hasPrice) {
|
|
128
127
|
quantitySkipped =
|
|
129
|
-
"Aantal
|
|
128
|
+
"Aantal doorgezet zonder prijs: het artikel is nog niet verkoopbaar tot er een prijs is.";
|
|
130
129
|
}
|
|
131
|
-
// 2.
|
|
132
|
-
const
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
module: "inventory",
|
|
138
|
-
action: "publish-continuous-stock",
|
|
139
|
-
method: "PUT",
|
|
140
|
-
path: `/suppliers-api-2026v1/trade-items/${row.trade_item_id}/continuous-stock`,
|
|
141
|
-
referenceId: row.trade_item_id,
|
|
142
|
-
idempotencyKey: `inventory:continuous-stock:${row.trade_item_id}:${available}:${pieces}`,
|
|
143
|
-
body,
|
|
130
|
+
// 2. Beschikbaarheid voor exact dezelfde week.
|
|
131
|
+
const availabilityResult = await client.updateTradeItemAvailabilityPerWeek({
|
|
132
|
+
tradeItemIds: [row.trade_item_id],
|
|
133
|
+
year,
|
|
134
|
+
week,
|
|
135
|
+
isAvailable: available,
|
|
144
136
|
});
|
|
145
|
-
|
|
137
|
+
if (!availabilityResult.ok) {
|
|
138
|
+
const message = availabilityResult.error ?? "Onbekende fout bij de beschikbaarheid.";
|
|
139
|
+
const cls = classifyError(message);
|
|
140
|
+
return { ok: false, error: message, errorClass: cls, permanent: cls === "permanent" };
|
|
141
|
+
}
|
|
142
|
+
return {
|
|
143
|
+
ok: true,
|
|
144
|
+
attemptId: availabilityResult.attemptId ?? quantityResult.attemptId,
|
|
145
|
+
quantitySkipped,
|
|
146
|
+
};
|
|
146
147
|
}
|
|
147
148
|
catch (e) {
|
|
148
149
|
const message = e instanceof Error ? e.message : String(e);
|
|
149
|
-
|
|
150
|
+
const cls = classifyError(message);
|
|
151
|
+
return { ok: false, permanent: cls === "permanent", errorClass: cls, error: message };
|
|
150
152
|
}
|
|
151
153
|
}
|