@flowselections/floriday-authenticatie-module 1.0.54 → 1.0.55
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/assets/floriday-logo.png.asset.json +11 -0
- package/dist-lib/components/TemplatePage.d.ts +1 -1
- package/dist-lib/components/TemplatePage.d.ts.map +1 -1
- package/dist-lib/components/floriday/FlorydayApiLogPage.d.ts +1 -1
- package/dist-lib/components/floriday/FlorydayApiLogPage.d.ts.map +1 -1
- package/dist-lib/components/floriday/FlorydayConnectionPage.d.ts +1 -1
- package/dist-lib/components/floriday/FlorydayConnectionPage.d.ts.map +1 -1
- package/dist-lib/components/floriday/FlorydayCredentialStatusBanner.d.ts +1 -1
- package/dist-lib/components/floriday/FlorydayCredentialStatusBanner.d.ts.map +1 -1
- package/dist-lib/components/floriday/FlorydayShellRoutesCard.d.ts +1 -1
- package/dist-lib/components/floriday/FlorydayShellRoutesCard.d.ts.map +1 -1
- package/dist-lib/components/floriday/FlorydaySyncHealthBanner.d.ts +1 -1
- package/dist-lib/components/floriday/FlorydaySyncHealthBanner.d.ts.map +1 -1
- package/dist-lib/components/floriday/FlorydaySyncJobsCard.d.ts +1 -1
- package/dist-lib/components/floriday/FlorydaySyncJobsCard.d.ts.map +1 -1
- package/dist-lib/components/floriday/FlorydayWebhooksCard.d.ts +1 -1
- package/dist-lib/components/floriday/FlorydayWebhooksCard.d.ts.map +1 -1
- package/dist-lib/components/floriday/TokenHealthCard.d.ts +1 -1
- package/dist-lib/components/floriday/TokenHealthCard.d.ts.map +1 -1
- package/dist-lib/components/settings/FloricodeSettingsCard.d.ts +1 -1
- package/dist-lib/components/settings/FloricodeSettingsCard.d.ts.map +1 -1
- package/dist-lib/components/settings/FlorydaySettingsCard.d.ts +1 -1
- package/dist-lib/components/settings/FlorydaySettingsCard.d.ts.map +1 -1
- package/dist-lib/components/settings/FlorydaySettingsCard.js +26 -48
- package/dist-lib/index.js +1 -1
- package/dist-lib/integrations/supabase/client.js +1 -1
- package/dist-lib/integrations/supabase/client.server.js +1 -1
- package/dist-lib/integrations/supabase/types.d.ts +372 -0
- package/dist-lib/integrations/supabase/types.d.ts.map +1 -1
- package/dist-lib/lib/cron/process-stock-queue.d.ts +18 -1
- package/dist-lib/lib/cron/process-stock-queue.d.ts.map +1 -1
- package/dist-lib/lib/cron/process-stock-queue.js +71 -23
- package/dist-lib/lib/floriday-gln.d.ts +6 -0
- package/dist-lib/lib/floriday-gln.d.ts.map +1 -0
- package/dist-lib/lib/floriday-gln.js +22 -0
- package/dist-lib/lib/floriday-own-config.d.ts +68 -0
- package/dist-lib/lib/floriday-own-config.d.ts.map +1 -0
- package/dist-lib/lib/floriday-own-config.js +73 -0
- package/dist-lib/lib/floriday-sync.functions.d.ts.map +1 -1
- package/dist-lib/lib/floriday-sync.functions.js +8 -0
- package/dist-lib/lib/floriday.functions.d.ts +38 -12
- package/dist-lib/lib/floriday.functions.d.ts.map +1 -1
- package/dist-lib/lib/floriday.functions.js +145 -41
- package/package.json +4 -504
|
@@ -16,9 +16,25 @@ export declare function isoWeekParts(input?: string | Date): {
|
|
|
16
16
|
/** Tijdelijk (netwerk/5xx/429) versus definitief (gegevensfout). */
|
|
17
17
|
export declare function isPermanentError(message: string): boolean;
|
|
18
18
|
export declare function isRateLimited(message: string): boolean;
|
|
19
|
+
export type WarehouseSource = "per_item" | "on_item" | "preferred";
|
|
20
|
+
/**
|
|
21
|
+
* Kiest het magazijn zonder te raden. Volgorde: magazijn per artikel,
|
|
22
|
+
* magazijn op het artikel, voorkeursmagazijn van de koppeling. Een kandidaat
|
|
23
|
+
* telt alleen als het id een eigen magazijn is (op id, nooit op naam).
|
|
24
|
+
*/
|
|
25
|
+
export declare function decideWarehouse(input: {
|
|
26
|
+
perItem?: string | null;
|
|
27
|
+
onItem?: string | null;
|
|
28
|
+
preferred?: string | null;
|
|
29
|
+
ownIds: Iterable<string>;
|
|
30
|
+
}): {
|
|
31
|
+
id: string;
|
|
32
|
+
source: WarehouseSource;
|
|
33
|
+
} | null;
|
|
19
34
|
export declare const SKIPPED_NO_PRICE_MESSAGE = "Prijs ontbreekt, nog niet verzonden";
|
|
35
|
+
export declare const SKIPPED_NO_WAREHOUSE_MESSAGE = "Geen voorkeursmagazijn voor deze koppeling; kies er een op de Connectie-pagina";
|
|
20
36
|
export type StockOutcome = {
|
|
21
|
-
outcome: "quantity_sent" | "skipped_no_price" | "error";
|
|
37
|
+
outcome: "quantity_sent" | "skipped_no_price" | "skipped_no_warehouse" | "error";
|
|
22
38
|
availabilitySent: boolean;
|
|
23
39
|
quantitySent: boolean;
|
|
24
40
|
error: string | null;
|
|
@@ -52,6 +68,7 @@ export declare function runStockQueueRound(supabase: SupabaseClient, limit?: num
|
|
|
52
68
|
claimed: number;
|
|
53
69
|
succeeded: number;
|
|
54
70
|
skippedNoPrice: number;
|
|
71
|
+
skippedNoWarehouse: number;
|
|
55
72
|
failed: number;
|
|
56
73
|
rateLimited: boolean;
|
|
57
74
|
}>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"process-stock-queue.d.ts","sourceRoot":"","sources":["../../../src/lib/cron/process-stock-queue.ts"],"names":[],"mappings":"AAeA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAIL,KAAK,mBAAmB,EACzB,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"process-stock-queue.d.ts","sourceRoot":"","sources":["../../../src/lib/cron/process-stock-queue.ts"],"names":[],"mappings":"AAeA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAIL,KAAK,mBAAmB,EACzB,MAAM,0BAA0B,CAAC;AAMlC,KAAK,aAAa,GAAG;IACnB,EAAE,EAAE,MAAM,CAAC;IACX,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa,EAAE,MAAM,CAAC;IACtB,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,iBAAiB,EAAE,OAAO,GAAG,IAAI,CAAC;IAClC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;CACzB,CAAC;AAEF,kCAAkC;AAClC,wBAAgB,YAAY,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAYlF;AAED,oEAAoE;AACpE,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAazD;AAED,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAEtD;AAED,MAAM,MAAM,eAAe,GAAG,UAAU,GAAG,SAAS,GAAG,WAAW,CAAC;AAEnE;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE;IACrC,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;CAC1B,GAAG;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,eAAe,CAAA;CAAE,GAAG,IAAI,CAYjD;AA6CD,eAAO,MAAM,wBAAwB,wCAAwC,CAAC;AAC9E,eAAO,MAAM,4BAA4B,mFACyC,CAAC;AAEnF,MAAM,MAAM,YAAY,GAAG;IACzB,OAAO,EAAE,eAAe,GAAG,kBAAkB,GAAG,sBAAsB,GAAG,OAAO,CAAC;IACjF,gBAAgB,EAAE,OAAO,CAAC;IAC1B,YAAY,EAAE,OAAO,CAAC;IACtB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,SAAS,EAAE,OAAO,CAAC;IACnB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;CAC1B,CAAC;AAEF,KAAK,WAAW,GAAG;IAAE,EAAE,EAAE,OAAO,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,CAAC;AAE/F;;;;;;GAMG;AACH,wBAAgB,aAAa,CAC3B,YAAY,EAAE,WAAW,GAAG,IAAI,EAChC,QAAQ,EAAE,WAAW,GAAG,IAAI,GAC3B,YAAY,CA0Bd;AAMD;;;;;GAKG;AACH,wBAAsB,YAAY,CAChC,QAAQ,EAAE,cAAc,EACxB,GAAG,EAAE,mBAAmB,EACxB,GAAG,EAAE,aAAa,GACjB,OAAO,CAAC,YAAY,CAAC,CAiEvB;AAeD,mEAAmE;AACnE,wBAAsB,kBAAkB,CACtC,QAAQ,EAAE,cAAc,EACxB,KAAK,SAAa,GACjB,OAAO,CAAC;IACT,EAAE,EAAE,IAAI,CAAC;IACT,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,EAAE,MAAM,CAAC;IACvB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,OAAO,CAAC;CACtB,CAAC,CAsCD;AAED;;;GAGG;AACH,wBAAsB,uBAAuB,CAC3C,OAAO,EAAE,OAAO,EAChB,QAAQ,EAAE,cAAc,GACvB,OAAO,CAAC,QAAQ,CAAC,CAoCnB;AAOD,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,cAAc,GAAG,IAAI,CAUlE"}
|
|
@@ -14,6 +14,7 @@
|
|
|
14
14
|
// ============================================================================
|
|
15
15
|
import { florydayWrite, getActiveFlorydayEnvironment, syncShellHostRuntimeConfig, } from "../floriday.functions.js";
|
|
16
16
|
import { verifyGatewayRequest, GATEWAY_HEADER_TIMESTAMP } from "../floriday-gateway-hmac.js";
|
|
17
|
+
import { isOwnWarehouse } from "../floriday-own-config.js";
|
|
17
18
|
const BATCH_SIZE = 25;
|
|
18
19
|
/** ISO-weeknummer van vandaag. */
|
|
19
20
|
export function isoWeekParts(input) {
|
|
@@ -49,28 +50,62 @@ export function isPermanentError(message) {
|
|
|
49
50
|
export function isRateLimited(message) {
|
|
50
51
|
return /\b429\b|rate limit|too many requests/i.test(message);
|
|
51
52
|
}
|
|
53
|
+
/**
|
|
54
|
+
* Kiest het magazijn zonder te raden. Volgorde: magazijn per artikel,
|
|
55
|
+
* magazijn op het artikel, voorkeursmagazijn van de koppeling. Een kandidaat
|
|
56
|
+
* telt alleen als het id een eigen magazijn is (op id, nooit op naam).
|
|
57
|
+
*/
|
|
58
|
+
export function decideWarehouse(input) {
|
|
59
|
+
const own = new Set(input.ownIds);
|
|
60
|
+
const candidates = [
|
|
61
|
+
[input.perItem, "per_item"],
|
|
62
|
+
[input.onItem, "on_item"],
|
|
63
|
+
[input.preferred, "preferred"],
|
|
64
|
+
];
|
|
65
|
+
for (const [raw, source] of candidates) {
|
|
66
|
+
const id = typeof raw === "string" ? raw.trim() : "";
|
|
67
|
+
if (id && own.has(id))
|
|
68
|
+
return { id, source };
|
|
69
|
+
}
|
|
70
|
+
return null;
|
|
71
|
+
}
|
|
52
72
|
async function resolveWarehouseId(supabase, connectionId, tradeItemId, cachedItem) {
|
|
53
|
-
const { data: pref } = await
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
73
|
+
const [{ data: pref }, { data: conn }, { data: whs }] = await Promise.all([
|
|
74
|
+
supabase
|
|
75
|
+
.from("trade_item_warehouse_preferences")
|
|
76
|
+
.select("warehouse_id")
|
|
77
|
+
.eq("connection_id", connectionId)
|
|
78
|
+
.eq("trade_item_id", tradeItemId)
|
|
79
|
+
.maybeSingle(),
|
|
80
|
+
supabase
|
|
81
|
+
.from("floriday_connections")
|
|
82
|
+
.select("preferred_warehouse_id")
|
|
83
|
+
.eq("id", connectionId)
|
|
84
|
+
.maybeSingle(),
|
|
85
|
+
supabase
|
|
86
|
+
.from("floriday_warehouses_cache")
|
|
87
|
+
.select("floriday_id, data")
|
|
88
|
+
.eq("connection_id", connectionId)
|
|
89
|
+
.limit(500),
|
|
90
|
+
]);
|
|
91
|
+
const ownIds = (whs ?? [])
|
|
92
|
+
.filter((w) => isOwnWarehouse({
|
|
93
|
+
isDeleted: w?.data?.isDeleted,
|
|
94
|
+
isExternal: w?.data?.isExternal,
|
|
95
|
+
hasAccess: w?.data?.hasAccess,
|
|
96
|
+
}))
|
|
97
|
+
.map((w) => String(w?.floriday_id ?? w?.data?.warehouseId ?? ""))
|
|
98
|
+
.filter(Boolean);
|
|
99
|
+
const chosen = decideWarehouse({
|
|
100
|
+
perItem: pref?.warehouse_id ?? null,
|
|
101
|
+
onItem: cachedItem?.warehouseId ?? cachedItem?.warehouse?.warehouseId ?? null,
|
|
102
|
+
preferred: conn?.preferred_warehouse_id ?? null,
|
|
103
|
+
ownIds,
|
|
104
|
+
});
|
|
105
|
+
return chosen?.id;
|
|
72
106
|
}
|
|
73
107
|
export const SKIPPED_NO_PRICE_MESSAGE = "Prijs ontbreekt, nog niet verzonden";
|
|
108
|
+
export const SKIPPED_NO_WAREHOUSE_MESSAGE = "Geen voorkeursmagazijn voor deze koppeling; kies er een op de Connectie-pagina";
|
|
74
109
|
/**
|
|
75
110
|
* Bepaalt de afsluiting van een regel uit de twee Floriday-antwoorden.
|
|
76
111
|
* Puur (geen I/O) zodat het los te testen is.
|
|
@@ -129,11 +164,21 @@ export async function pushStockRow(supabase, env, row) {
|
|
|
129
164
|
}
|
|
130
165
|
const item = cached.data ?? {};
|
|
131
166
|
const warehouseId = await resolveWarehouseId(supabase, row.connection_id, row.trade_item_id, item);
|
|
167
|
+
if (!warehouseId) {
|
|
168
|
+
// Niet raden: niets naar Floriday. De Voorraad-module zet de regel
|
|
169
|
+
// zelf terug op pending zodra er een magazijn is.
|
|
170
|
+
return {
|
|
171
|
+
outcome: "skipped_no_warehouse",
|
|
172
|
+
availabilitySent: false,
|
|
173
|
+
quantitySent: false,
|
|
174
|
+
error: SKIPPED_NO_WAREHOUSE_MESSAGE,
|
|
175
|
+
permanent: false,
|
|
176
|
+
attemptId: null,
|
|
177
|
+
};
|
|
178
|
+
}
|
|
132
179
|
// 1. Beschikbaarheid. Sleutel zonder aantal, zodat een latere echte
|
|
133
180
|
// aantal-verzending (eigen sleutel) nooit wordt overgeslagen.
|
|
134
|
-
const body = { available };
|
|
135
|
-
if (warehouseId)
|
|
136
|
-
body.warehouseId = warehouseId;
|
|
181
|
+
const body = { available, warehouseId };
|
|
137
182
|
const availability = (await florydayWrite(supabase, env, {
|
|
138
183
|
module: "inventory",
|
|
139
184
|
action: "publish-continuous-stock",
|
|
@@ -183,6 +228,7 @@ export async function runStockQueueRound(supabase, limit = BATCH_SIZE) {
|
|
|
183
228
|
const rows = (claimed ?? []);
|
|
184
229
|
let succeeded = 0;
|
|
185
230
|
let skippedNoPrice = 0;
|
|
231
|
+
let skippedNoWarehouse = 0;
|
|
186
232
|
let failed = 0;
|
|
187
233
|
let rateLimited = false;
|
|
188
234
|
for (const row of rows) {
|
|
@@ -195,6 +241,8 @@ export async function runStockQueueRound(supabase, limit = BATCH_SIZE) {
|
|
|
195
241
|
succeeded += 1;
|
|
196
242
|
else if (outcome.outcome === "skipped_no_price")
|
|
197
243
|
skippedNoPrice += 1;
|
|
244
|
+
else if (outcome.outcome === "skipped_no_warehouse")
|
|
245
|
+
skippedNoWarehouse += 1;
|
|
198
246
|
else {
|
|
199
247
|
failed += 1;
|
|
200
248
|
if (outcome.error && isRateLimited(outcome.error))
|
|
@@ -202,7 +250,7 @@ export async function runStockQueueRound(supabase, limit = BATCH_SIZE) {
|
|
|
202
250
|
}
|
|
203
251
|
await completeRow(supabase, row.id, outcome);
|
|
204
252
|
}
|
|
205
|
-
return { ok: true, claimed: rows.length, succeeded, skippedNoPrice, failed, rateLimited };
|
|
253
|
+
return { ok: true, claimed: rows.length, succeeded, skippedNoPrice, skippedNoWarehouse, failed, rateLimited };
|
|
206
254
|
}
|
|
207
255
|
/**
|
|
208
256
|
* Cron-handler, zelfde vorm en beveiliging als de overige cron-routes:
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"floriday-gln.d.ts","sourceRoot":"","sources":["../../src/lib/floriday-gln.ts"],"names":[],"mappings":"AAEA;;;GAGG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAaxD"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
// GS1 GLN-validatie (zonder serverimports).
|
|
2
|
+
/**
|
|
3
|
+
* Valideert een GS1 GLN: exact 13 cijfers met geldige check digit.
|
|
4
|
+
* Retourneert null als geldig, anders een nl-foutmelding.
|
|
5
|
+
*/
|
|
6
|
+
export function validateGln(input) {
|
|
7
|
+
const v = input.trim();
|
|
8
|
+
if (!v)
|
|
9
|
+
return "GLN-code is verplicht";
|
|
10
|
+
if (!/^\d{13}$/.test(v))
|
|
11
|
+
return "GLN-code moet uit precies 13 cijfers bestaan";
|
|
12
|
+
const digits = v.split("").map(Number);
|
|
13
|
+
// GS1 mod-10 voor GLN-13: positie 1 (meest links) ×1, positie 2 ×3, … positie 12 ×3.
|
|
14
|
+
let sum = 0;
|
|
15
|
+
for (let i = 0; i < 12; i++) {
|
|
16
|
+
sum += digits[i] * (i % 2 === 0 ? 1 : 3);
|
|
17
|
+
}
|
|
18
|
+
const check = (10 - (sum % 10)) % 10;
|
|
19
|
+
if (check !== digits[12])
|
|
20
|
+
return "GLN-code heeft een ongeldig controlecijfer";
|
|
21
|
+
return null;
|
|
22
|
+
}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
export interface OwnWarehouseInput {
|
|
2
|
+
id: string;
|
|
3
|
+
name?: string | null;
|
|
4
|
+
isDeleted?: boolean | null;
|
|
5
|
+
isExternal?: boolean | null;
|
|
6
|
+
hasAccess?: boolean | null;
|
|
7
|
+
isDefault?: boolean | null;
|
|
8
|
+
}
|
|
9
|
+
/** Eigen magazijn: niet verwijderd, niet extern, met toegang. */
|
|
10
|
+
export declare function isOwnWarehouse(w: {
|
|
11
|
+
isDeleted?: boolean | null;
|
|
12
|
+
isExternal?: boolean | null;
|
|
13
|
+
hasAccess?: boolean | null;
|
|
14
|
+
}): boolean;
|
|
15
|
+
/**
|
|
16
|
+
* Leesbare naam voor een magazijn uit de cache. Lege tekst telt als
|
|
17
|
+
* ontbrekend. Volgorde: naam, adresregel + plaats, plaats, GLN, id.
|
|
18
|
+
* Alleen voor weergave; de keuze loopt altijd op id.
|
|
19
|
+
*/
|
|
20
|
+
export declare function warehouseLabel(row: {
|
|
21
|
+
name?: unknown;
|
|
22
|
+
gln_code?: unknown;
|
|
23
|
+
floriday_id?: unknown;
|
|
24
|
+
data?: any;
|
|
25
|
+
}): string;
|
|
26
|
+
export type PreferredWarehouseDecision = {
|
|
27
|
+
kind: "keep";
|
|
28
|
+
id: string;
|
|
29
|
+
} | {
|
|
30
|
+
kind: "missing";
|
|
31
|
+
id: string;
|
|
32
|
+
} | {
|
|
33
|
+
kind: "fill";
|
|
34
|
+
id: string;
|
|
35
|
+
reason: "single" | "default";
|
|
36
|
+
} | {
|
|
37
|
+
kind: "choice_needed";
|
|
38
|
+
} | {
|
|
39
|
+
kind: "none";
|
|
40
|
+
};
|
|
41
|
+
export declare function decidePreferredWarehouse(input: {
|
|
42
|
+
currentId: string | null | undefined;
|
|
43
|
+
warehouses: OwnWarehouseInput[];
|
|
44
|
+
}): PreferredWarehouseDecision;
|
|
45
|
+
export type GlnDecision = {
|
|
46
|
+
kind: "keep";
|
|
47
|
+
gln: string;
|
|
48
|
+
} | {
|
|
49
|
+
kind: "fill";
|
|
50
|
+
gln: string;
|
|
51
|
+
} | {
|
|
52
|
+
kind: "mismatch";
|
|
53
|
+
stored: string;
|
|
54
|
+
fromFloriday: string;
|
|
55
|
+
} | {
|
|
56
|
+
kind: "unavailable";
|
|
57
|
+
stored: string | null;
|
|
58
|
+
} | {
|
|
59
|
+
kind: "invalid";
|
|
60
|
+
stored: string | null;
|
|
61
|
+
fromFloriday: string;
|
|
62
|
+
error: string;
|
|
63
|
+
};
|
|
64
|
+
export declare function decideGln(input: {
|
|
65
|
+
stored: string | null | undefined;
|
|
66
|
+
fromFloriday: string | null | undefined;
|
|
67
|
+
}): GlnDecision;
|
|
68
|
+
//# sourceMappingURL=floriday-own-config.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"floriday-own-config.d.ts","sourceRoot":"","sources":["../../src/lib/floriday-own-config.ts"],"names":[],"mappings":"AASA,MAAM,WAAW,iBAAiB;IAChC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,SAAS,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC;IAC3B,UAAU,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC;IAC5B,SAAS,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC;IAC3B,SAAS,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC;CAC5B;AAED,iEAAiE;AACjE,wBAAgB,cAAc,CAAC,CAAC,EAAE;IAChC,SAAS,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC;IAC3B,UAAU,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC;IAC5B,SAAS,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC;CAC5B,GAAG,OAAO,CAEV;AAQD;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,GAAG,EAAE;IAClC,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,IAAI,CAAC,EAAE,GAAG,CAAC;CACZ,GAAG,MAAM,CAcT;AAED,MAAM,MAAM,0BAA0B,GAClC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,MAAM,CAAA;CAAE,GAC5B;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,EAAE,EAAE,MAAM,CAAA;CAAE,GAC/B;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,QAAQ,GAAG,SAAS,CAAA;CAAE,GAC1D;IAAE,IAAI,EAAE,eAAe,CAAA;CAAE,GACzB;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC;AAErB,wBAAgB,wBAAwB,CAAC,KAAK,EAAE;IAC9C,SAAS,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC;IACrC,UAAU,EAAE,iBAAiB,EAAE,CAAC;CACjC,GAAG,0BAA0B,CAa7B;AAED,MAAM,MAAM,WAAW,GACnB;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,GAC7B;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,GAC7B;IAAE,IAAI,EAAE,UAAU,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,YAAY,EAAE,MAAM,CAAA;CAAE,GAC1D;IAAE,IAAI,EAAE,aAAa,CAAC;IAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,GAC9C;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,YAAY,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC;AAEpF,wBAAgB,SAAS,CAAC,KAAK,EAAE;IAC/B,MAAM,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC;IAClC,YAAY,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC;CACzC,GAAG,WAAW,CASd"}
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
// ============================================================================
|
|
2
|
+
// Pure beslisregels voor GLN en voorkeursmagazijn van de eigen organisatie.
|
|
3
|
+
// Geen serverimports: bruikbaar in server, client en tests.
|
|
4
|
+
// Regel: alleen lege velden worden automatisch gevuld, altijd op id; een
|
|
5
|
+
// bestaande (gebruikers)keuze wordt nooit overschreven.
|
|
6
|
+
// ============================================================================
|
|
7
|
+
import { validateGln } from "./floriday-gln.js";
|
|
8
|
+
/** Eigen magazijn: niet verwijderd, niet extern, met toegang. */
|
|
9
|
+
export function isOwnWarehouse(w) {
|
|
10
|
+
return w.isDeleted !== true && w.isExternal !== true && w.hasAccess !== false;
|
|
11
|
+
}
|
|
12
|
+
function txt(v) {
|
|
13
|
+
if (typeof v !== "string")
|
|
14
|
+
return null;
|
|
15
|
+
const t = v.trim();
|
|
16
|
+
return t ? t : null;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Leesbare naam voor een magazijn uit de cache. Lege tekst telt als
|
|
20
|
+
* ontbrekend. Volgorde: naam, adresregel + plaats, plaats, GLN, id.
|
|
21
|
+
* Alleen voor weergave; de keuze loopt altijd op id.
|
|
22
|
+
*/
|
|
23
|
+
export function warehouseLabel(row) {
|
|
24
|
+
const d = row?.data ?? {};
|
|
25
|
+
const name = txt(row?.name) ?? txt(d?.name);
|
|
26
|
+
if (name)
|
|
27
|
+
return name;
|
|
28
|
+
const addr = d?.location?.address ?? d?.address ?? {};
|
|
29
|
+
const line = txt(addr?.addressLine) ?? txt(addr?.street);
|
|
30
|
+
const city = txt(addr?.city) ?? txt(d?.location?.city);
|
|
31
|
+
if (line && city)
|
|
32
|
+
return `${line}, ${city}`;
|
|
33
|
+
if (line)
|
|
34
|
+
return line;
|
|
35
|
+
if (city)
|
|
36
|
+
return city;
|
|
37
|
+
const gln = txt(row?.gln_code) ?? txt(d?.location?.gln);
|
|
38
|
+
if (gln)
|
|
39
|
+
return `Magazijn zonder naam (GLN ${gln})`;
|
|
40
|
+
const id = txt(row?.floriday_id) ?? txt(d?.warehouseId);
|
|
41
|
+
return id ? `Magazijn zonder naam (id ${id.slice(0, 8)}…)` : "Magazijn zonder naam";
|
|
42
|
+
}
|
|
43
|
+
export function decidePreferredWarehouse(input) {
|
|
44
|
+
const own = input.warehouses.filter((w) => w.id && isOwnWarehouse(w));
|
|
45
|
+
const current = input.currentId?.trim() || null;
|
|
46
|
+
if (current) {
|
|
47
|
+
return own.some((w) => w.id === current)
|
|
48
|
+
? { kind: "keep", id: current }
|
|
49
|
+
: { kind: "missing", id: current };
|
|
50
|
+
}
|
|
51
|
+
if (own.length === 0)
|
|
52
|
+
return { kind: "none" };
|
|
53
|
+
if (own.length === 1)
|
|
54
|
+
return { kind: "fill", id: own[0].id, reason: "single" };
|
|
55
|
+
const defaults = own.filter((w) => w.isDefault === true);
|
|
56
|
+
if (defaults.length === 1)
|
|
57
|
+
return { kind: "fill", id: defaults[0].id, reason: "default" };
|
|
58
|
+
return { kind: "choice_needed" };
|
|
59
|
+
}
|
|
60
|
+
export function decideGln(input) {
|
|
61
|
+
const stored = input.stored?.trim() || null;
|
|
62
|
+
const remote = input.fromFloriday?.trim() || null;
|
|
63
|
+
if (!remote)
|
|
64
|
+
return { kind: "unavailable", stored };
|
|
65
|
+
const err = validateGln(remote);
|
|
66
|
+
if (err)
|
|
67
|
+
return { kind: "invalid", stored, fromFloriday: remote, error: err };
|
|
68
|
+
if (!stored)
|
|
69
|
+
return { kind: "fill", gln: remote };
|
|
70
|
+
if (stored === remote)
|
|
71
|
+
return { kind: "keep", gln: stored };
|
|
72
|
+
return { kind: "mismatch", stored, fromFloriday: remote };
|
|
73
|
+
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"floriday-sync.functions.d.ts","sourceRoot":"","sources":["../../src/lib/floriday-sync.functions.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAS5D,OAAO,EAOL,KAAK,mBAAmB,EACzB,MAAM,yBAAyB,CAAC;AAkDjC,MAAM,MAAM,gBAAgB,GACxB,aAAa,GACb,cAAc,GACd,wBAAwB,GACxB,UAAU,GACV,oBAAoB,GACpB,mBAAmB,GACnB,YAAY,GACZ,UAAU,GACV,oBAAoB,GACpB,gBAAgB,GAChB,iBAAiB,GACjB,gBAAgB,GAChB,WAAW,GACX,gBAAgB,GAEhB,qBAAqB,GACrB,0BAA0B,GAC1B,aAAa,GACb,cAAc,GACd,gBAAgB,GAEhB,yBAAyB,GACzB,kBAAkB,GAClB,YAAY,GACZ,4BAA4B,GAE5B,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"floriday-sync.functions.d.ts","sourceRoot":"","sources":["../../src/lib/floriday-sync.functions.ts"],"names":[],"mappings":"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"}
|
|
@@ -406,6 +406,14 @@ const RESOURCE_CONFIG = {
|
|
|
406
406
|
if (rows.length === 0)
|
|
407
407
|
return;
|
|
408
408
|
await upsertInChunks(supabase, "floriday_warehouses_cache", rows, "connection_id,floriday_id", "warehouses");
|
|
409
|
+
// Voorkeursmagazijn alleen vullen als het leeg is (op id); niet-fataal.
|
|
410
|
+
try {
|
|
411
|
+
const { autoFillPreferredWarehouse } = await import("./floriday.functions.js");
|
|
412
|
+
await autoFillPreferredWarehouse(supabase, connectionId);
|
|
413
|
+
}
|
|
414
|
+
catch (e) {
|
|
415
|
+
console.warn("[floriday] automatisch voorkeursmagazijn mislukt:", e);
|
|
416
|
+
}
|
|
409
417
|
},
|
|
410
418
|
},
|
|
411
419
|
"delivery-locations": {
|
|
@@ -1,10 +1,7 @@
|
|
|
1
1
|
import type { SupabaseClient } from "@supabase/supabase-js";
|
|
2
2
|
export type FlorydayEnvironment = "staging" | "live";
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
* Retourneert null als geldig, anders een nl-foutmelding.
|
|
6
|
-
*/
|
|
7
|
-
export declare function validateGln(input: string): string | null;
|
|
3
|
+
export { validateGln } from "./floriday-gln.js";
|
|
4
|
+
import { type GlnDecision, type PreferredWarehouseDecision } from "./floriday-own-config.js";
|
|
8
5
|
export interface FlorydayConnectionPublic {
|
|
9
6
|
id: string;
|
|
10
7
|
environment: FlorydayEnvironment;
|
|
@@ -46,6 +43,40 @@ export declare function getFlorydayAccessToken(supabase: SupabaseClient, env: Fl
|
|
|
46
43
|
forceRefresh?: boolean;
|
|
47
44
|
scope?: string;
|
|
48
45
|
}): Promise<string>;
|
|
46
|
+
/** Eigen magazijnen van een koppeling uit de cache (op id). */
|
|
47
|
+
export declare function loadOwnWarehousesFromCache(admin: SupabaseClient, connectionId: string): Promise<Array<{
|
|
48
|
+
id: string;
|
|
49
|
+
name: string;
|
|
50
|
+
gln: string | null;
|
|
51
|
+
isDefault: boolean;
|
|
52
|
+
isDeleted: boolean;
|
|
53
|
+
isExternal: boolean;
|
|
54
|
+
hasAccess: boolean;
|
|
55
|
+
}>>;
|
|
56
|
+
/**
|
|
57
|
+
* Vult preferred_warehouse_id alleen als die leeg is: bij precies één eigen
|
|
58
|
+
* magazijn, of bij meerdere met precies één Floriday-standaardmagazijn.
|
|
59
|
+
* Altijd op id; bestaande keuze wordt nooit overschreven.
|
|
60
|
+
*/
|
|
61
|
+
export declare function autoFillPreferredWarehouse(admin: SupabaseClient, connectionId: string): Promise<PreferredWarehouseDecision>;
|
|
62
|
+
export interface FlorydayOwnConfigStatus {
|
|
63
|
+
connected: boolean;
|
|
64
|
+
gln: GlnDecision | null;
|
|
65
|
+
storedGln: string | null;
|
|
66
|
+
warehouse: PreferredWarehouseDecision | null;
|
|
67
|
+
preferredWarehouseId: string | null;
|
|
68
|
+
preferredWarehouseName: string | null;
|
|
69
|
+
ownWarehouses: FlorydayWarehouse[];
|
|
70
|
+
}
|
|
71
|
+
export declare const getFlorydayOwnConfigStatus: import("@tanstack/start-client-core").RequiredFetcher<readonly [import("@tanstack/start-client-core").FunctionMiddlewareAfterServer<{}, unknown, undefined, {
|
|
72
|
+
supabase: import("../integrations/supabase/auth-middleware.js").AuthedSupabaseClient;
|
|
73
|
+
userId: string;
|
|
74
|
+
claims: import("@supabase/auth-js").JwtPayload;
|
|
75
|
+
}, undefined, undefined, undefined>], (input: {
|
|
76
|
+
environment: FlorydayEnvironment;
|
|
77
|
+
}) => {
|
|
78
|
+
environment: FlorydayEnvironment;
|
|
79
|
+
}, Promise<FlorydayOwnConfigStatus>>;
|
|
49
80
|
export declare function getActiveFlorydayEnvironment(supabase: SupabaseClient): Promise<FlorydayEnvironment>;
|
|
50
81
|
export declare function florydayFetch(supabase: SupabaseClient, pathOrEnv: string | FlorydayEnvironment, pathOrInit?: string | RequestInit, maybeInit?: RequestInit): Promise<Response>;
|
|
51
82
|
export declare const listFlorydayConnections: import("@tanstack/start-client-core").OptionalFetcher<readonly [import("@tanstack/start-client-core").FunctionMiddlewareAfterServer<{}, unknown, undefined, {
|
|
@@ -267,14 +298,10 @@ export declare const updateFlorydayPublishingSettings: import("@tanstack/start-c
|
|
|
267
298
|
claims: import("@supabase/auth-js").JwtPayload;
|
|
268
299
|
}, undefined, undefined, undefined>], (input: {
|
|
269
300
|
environment: FlorydayEnvironment;
|
|
270
|
-
|
|
271
|
-
preferred_warehouse_id?: string | null;
|
|
272
|
-
preferred_warehouse_name?: string | null;
|
|
301
|
+
preferred_warehouse_id: string;
|
|
273
302
|
}) => {
|
|
274
|
-
gln_code: string | null;
|
|
275
303
|
environment: FlorydayEnvironment;
|
|
276
|
-
preferred_warehouse_id
|
|
277
|
-
preferred_warehouse_name?: string | null;
|
|
304
|
+
preferred_warehouse_id: string;
|
|
278
305
|
}, Promise<{
|
|
279
306
|
ok: true;
|
|
280
307
|
}>>;
|
|
@@ -521,5 +548,4 @@ export declare const getFlorydayCredentialStatus: import("@tanstack/start-client
|
|
|
521
548
|
reason: "ready";
|
|
522
549
|
message: "Floriday-credential is geldig.";
|
|
523
550
|
}>>;
|
|
524
|
-
export {};
|
|
525
551
|
//# sourceMappingURL=floriday.functions.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"floriday.functions.d.ts","sourceRoot":"","sources":["../../src/lib/floriday.functions.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAc5D,MAAM,MAAM,mBAAmB,GAAG,SAAS,GAAG,MAAM,CAAC;AAErD
|
|
1
|
+
{"version":3,"file":"floriday.functions.d.ts","sourceRoot":"","sources":["../../src/lib/floriday.functions.ts"],"names":[],"mappings":"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"}
|