@flowselections/floriday-voorraad 1.0.125 → 1.0.129
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/voorraad/NieuwArtikelPage.d.ts.map +1 -1
- package/dist-lib/components/voorraad/NieuwArtikelPage.js +2 -0
- package/dist-lib/components/voorraad/StockSyncStatus.d.ts.map +1 -1
- package/dist-lib/components/voorraad/StockSyncStatus.js +1 -1
- package/dist-lib/components/voorraad/VoorraadTable.d.ts.map +1 -1
- package/dist-lib/components/voorraad/VoorraadTable.js +1 -1
- package/dist-lib/hooks/useLocalTradeItems.d.ts.map +1 -1
- package/dist-lib/hooks/useLocalTradeItems.js +7 -1
- package/dist-lib/hooks/useStockSyncHealth.d.ts +7 -2
- package/dist-lib/hooks/useStockSyncHealth.d.ts.map +1 -1
- package/dist-lib/hooks/useStockSyncHealth.js +28 -5
- package/dist-lib/integrations/supabase/types.d.ts +230 -0
- package/dist-lib/integrations/supabase/types.d.ts.map +1 -1
- package/dist-lib/lib/__tests__/article-code.test.d.ts +2 -0
- package/dist-lib/lib/__tests__/article-code.test.d.ts.map +1 -0
- package/dist-lib/lib/__tests__/article-code.test.js +11 -0
- package/dist-lib/lib/article-code.d.ts +12 -0
- package/dist-lib/lib/article-code.d.ts.map +1 -0
- package/dist-lib/lib/article-code.js +29 -0
- package/dist-lib/lib/floriday-payload.d.ts.map +1 -1
- package/dist-lib/lib/floriday-payload.js +3 -0
- package/dist-lib/lib/voorraad-page-head.d.ts +19 -0
- package/dist-lib/lib/voorraad-page-head.d.ts.map +1 -0
- package/dist-lib/lib/voorraad-page-head.js +11 -0
- package/package.json +1 -1
- package/sql/floriday-voorraad-schema.sql +232 -85
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"article-code.test.d.ts","sourceRoot":"","sources":["../../../src/lib/__tests__/article-code.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { describe, it, expect } from "vitest";
|
|
2
|
+
import { articleCodeProblem } from "../article-code.js";
|
|
3
|
+
describe("artikelcode-controle", () => {
|
|
4
|
+
it("weigert Artikelcode", () => expect(articleCodeProblem("Artikelcode", "Strelitzia")).not.toBeNull());
|
|
5
|
+
it("weigert Naam", () => expect(articleCodeProblem(" naam ", "X")).not.toBeNull());
|
|
6
|
+
it("weigert test", () => expect(articleCodeProblem("TEST", "X")).not.toBeNull());
|
|
7
|
+
it("weigert leeg", () => expect(articleCodeProblem(" ", "X")).not.toBeNull());
|
|
8
|
+
it("staat TQA2710G toe", () => expect(articleCodeProblem("TQA2710G", "Gaultheria")).toBeNull());
|
|
9
|
+
it("weigert code gelijk aan naam bij handmatig", () => expect(articleCodeProblem("Strelitzia", "strelitzia", "manual")).not.toBeNull());
|
|
10
|
+
it("staat code gelijk aan naam toe bij import", () => expect(articleCodeProblem("Strelitzia", "strelitzia", "import")).toBeNull());
|
|
11
|
+
});
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Controle op invulteksten als artikelcode. Spiegel van
|
|
3
|
+
* `voorraad_placeholder_codes` (database blijft leidend; de trigger weigert
|
|
4
|
+
* vanuit het scherm). "Gelijk aan naam" alleen bij handmatig opslaan
|
|
5
|
+
* (`mode: "manual"`); bij import/overname alleen melden.
|
|
6
|
+
*/
|
|
7
|
+
export declare const PLACEHOLDER_CODES: readonly ["artikelcode", "artikelnummer", "naam", "name", "code", "article code", "articlecode", "test", "-", "x", "nvt", "n.v.t.", "tbd", "todo"];
|
|
8
|
+
export type ArticleCodeMode = "manual" | "import";
|
|
9
|
+
export declare function articleCodeProblem(code: string | null | undefined, name: string | null | undefined, mode?: ArticleCodeMode): string | null;
|
|
10
|
+
/** Gooit een fout met Nederlandse tekst bij een ongeldige code. */
|
|
11
|
+
export declare function assertArticleCode(code: string | null | undefined, name: string | null | undefined, mode?: ArticleCodeMode): void;
|
|
12
|
+
//# sourceMappingURL=article-code.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"article-code.d.ts","sourceRoot":"","sources":["../../src/lib/article-code.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,eAAO,MAAM,iBAAiB,oJAGpB,CAAC;AAEX,MAAM,MAAM,eAAe,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAElD,wBAAgB,kBAAkB,CAChC,IAAI,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,EAC/B,IAAI,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,EAC/B,IAAI,GAAE,eAA0B,GAC/B,MAAM,GAAG,IAAI,CAWf;AAED,mEAAmE;AACnE,wBAAgB,iBAAiB,CAC/B,IAAI,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,EAC/B,IAAI,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,EAC/B,IAAI,GAAE,eAA0B,GAC/B,IAAI,CAGN"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Controle op invulteksten als artikelcode. Spiegel van
|
|
3
|
+
* `voorraad_placeholder_codes` (database blijft leidend; de trigger weigert
|
|
4
|
+
* vanuit het scherm). "Gelijk aan naam" alleen bij handmatig opslaan
|
|
5
|
+
* (`mode: "manual"`); bij import/overname alleen melden.
|
|
6
|
+
*/
|
|
7
|
+
export const PLACEHOLDER_CODES = [
|
|
8
|
+
"artikelcode", "artikelnummer", "naam", "name", "code", "article code",
|
|
9
|
+
"articlecode", "test", "-", "x", "nvt", "n.v.t.", "tbd", "todo",
|
|
10
|
+
];
|
|
11
|
+
export function articleCodeProblem(code, name, mode = "manual") {
|
|
12
|
+
const raw = (code ?? "").trim();
|
|
13
|
+
const v = raw.toLowerCase();
|
|
14
|
+
if (!v)
|
|
15
|
+
return "De artikelcode is leeg.";
|
|
16
|
+
if (PLACEHOLDER_CODES.includes(v)) {
|
|
17
|
+
return `"${raw}" is een invultekst, geen artikelcode.`;
|
|
18
|
+
}
|
|
19
|
+
if (mode === "manual" && name && v === name.trim().toLowerCase()) {
|
|
20
|
+
return "De artikelcode is gelijk aan de artikelnaam.";
|
|
21
|
+
}
|
|
22
|
+
return null;
|
|
23
|
+
}
|
|
24
|
+
/** Gooit een fout met Nederlandse tekst bij een ongeldige code. */
|
|
25
|
+
export function assertArticleCode(code, name, mode = "manual") {
|
|
26
|
+
const p = articleCodeProblem(code, name, mode);
|
|
27
|
+
if (p)
|
|
28
|
+
throw new Error(`${p} Vul de echte artikelcode in.`);
|
|
29
|
+
}
|
|
@@ -1 +1 @@
|
|
|
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;
|
|
1
|
+
{"version":3,"file":"floriday-payload.d.ts","sourceRoot":"","sources":["../../src/lib/floriday-payload.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,6 +4,7 @@
|
|
|
4
4
|
// Belangrijk: dit is een PURE module - geen Supabase / fetch calls.
|
|
5
5
|
// De wizard bouwt het WizardData object en roept hier `buildAddTradeItemPayload`.
|
|
6
6
|
import { z } from "zod";
|
|
7
|
+
import { assertArticleCode } from "./article-code.js";
|
|
7
8
|
/** Hardcoded lijst met aangesloten verpakkingsleveranciers zoals in Floriday. */
|
|
8
9
|
export const PACKAGING_SUPPLIERS = [
|
|
9
10
|
{ id: "anylabel", name: "Anylabel" },
|
|
@@ -431,6 +432,8 @@ export function buildAddTradeItemPayload(d) {
|
|
|
431
432
|
const tradeItemNameNl = normaliseWs(d.name).slice(0, 120);
|
|
432
433
|
if (!supplierArticleCode)
|
|
433
434
|
throw new Error("supplierArticleCode is verplicht");
|
|
435
|
+
// Vóór publicatie: invulteksten weigeren (naam-gelijk alleen melden, kan echt zijn bij kwekers).
|
|
436
|
+
assertArticleCode(supplierArticleCode, null, "import");
|
|
434
437
|
if (!tradeItemNameNl)
|
|
435
438
|
throw new Error("tradeItemName.nl is verplicht");
|
|
436
439
|
const warehouseId = (d.warehouseId ?? "").trim();
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
export declare function voorraadPageHead(title: string, description: string): {
|
|
2
|
+
meta: ({
|
|
3
|
+
title: string;
|
|
4
|
+
name?: undefined;
|
|
5
|
+
content?: undefined;
|
|
6
|
+
property?: undefined;
|
|
7
|
+
} | {
|
|
8
|
+
name: string;
|
|
9
|
+
content: string;
|
|
10
|
+
title?: undefined;
|
|
11
|
+
property?: undefined;
|
|
12
|
+
} | {
|
|
13
|
+
property: string;
|
|
14
|
+
content: string;
|
|
15
|
+
title?: undefined;
|
|
16
|
+
name?: undefined;
|
|
17
|
+
})[];
|
|
18
|
+
};
|
|
19
|
+
//# sourceMappingURL=voorraad-page-head.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"voorraad-page-head.d.ts","sourceRoot":"","sources":["../../src/lib/voorraad-page-head.ts"],"names":[],"mappings":"AAAA,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM;;;;;;;;;;;;;;;;;EAUlE"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export function voorraadPageHead(title, description) {
|
|
2
|
+
const fullTitle = `${title} — Floriday Voorraad`;
|
|
3
|
+
return { meta: [
|
|
4
|
+
{ title: fullTitle },
|
|
5
|
+
{ name: "description", content: description },
|
|
6
|
+
{ property: "og:title", content: fullTitle },
|
|
7
|
+
{ property: "og:description", content: description },
|
|
8
|
+
{ property: "og:type", content: "website" },
|
|
9
|
+
{ name: "twitter:card", content: "summary" },
|
|
10
|
+
] };
|
|
11
|
+
}
|