@flowselections/floriday-voorraad 1.0.69 → 1.0.71

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.
@@ -36,9 +36,10 @@ describe("weekaanbod aanmaken (nagespeelde antwoorden 1.0.61)", () => {
36
36
  expect(d.label).toContain("Ongeldige prijs: Prijs te laag");
37
37
  });
38
38
  it("prijs alleen bij stuks en > 0", () => {
39
- expect(priceForRow({ sale_price: 0, unit: "stuks" })).toEqual({ ok: false, label: "Prijs ontbreekt" });
39
+ expect(priceForRow({ sale_price: 0, unit: "stuks" })).toEqual({ ok: false, label: "Prijs is 0 of lager" });
40
+ expect(priceForRow({ sale_price: -1, unit: "stuks" })).toEqual({ ok: false, label: "Prijs is 0 of lager" });
40
41
  expect(priceForRow({ sale_price: null, unit: "stuks" })).toEqual({ ok: false, label: "Prijs ontbreekt" });
41
- expect(priceForRow({ sale_price: 3, unit: "fust" })).toEqual({ ok: false, label: "Eenheid onduidelijk" });
42
+ expect(priceForRow({ sale_price: 3, unit: "fust" })).toEqual({ ok: false, label: "Eenheid is geen stuks (nu: fust)" });
42
43
  expect(priceForRow({ sale_price: 1.1, unit: "stuks" })).toEqual({ ok: true, price: 1.1 });
43
44
  });
44
45
  it("aanvraag volgens contract, week van de regel, geen packingConfigurationId", () => {
@@ -19,8 +19,10 @@ export type PriceCheck = {
19
19
  price: number;
20
20
  } | {
21
21
  ok: false;
22
- label: "Prijs ontbreekt" | "Eenheid onduidelijk";
22
+ label: string;
23
23
  };
24
+ /** M26: de werkelijke reden waarom een prijs niet bruikbaar is (of null als hij in orde is). */
25
+ export declare function priceProblem(salePrice: unknown, unit: unknown): string | null;
24
26
  /** Prijs per stuk excl. btw: alleen bij eenheid "stuks" en prijs > 0. */
25
27
  export declare function priceForRow(row: Pick<BaseSupplyRow, "sale_price" | "unit">): PriceCheck;
26
28
  /** ISO-weekjaar en ISO-week van een moment in Nederlandse tijd. */
@@ -1 +1 @@
1
- {"version":3,"file":"floriday-base-supply.d.ts","sourceRoot":"","sources":["../../src/lib/floriday-base-supply.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,MAAM,MAAM,aAAa,GAAG;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,aAAa,EAAE,MAAM,CAAC;IACtB,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,yBAAyB,EAAE,OAAO,CAAC;CACpC,CAAC;AAEF,MAAM,MAAM,UAAU,GAClB;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GAC3B;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,iBAAiB,GAAG,qBAAqB,CAAA;CAAE,CAAC;AAEpE,yEAAyE;AACzE,wBAAgB,WAAW,CAAC,GAAG,EAAE,IAAI,CAAC,aAAa,EAAE,YAAY,GAAG,MAAM,CAAC,GAAG,UAAU,CAMvF;AAED,mEAAmE;AACnE,wBAAgB,gBAAgB,CAAC,EAAE,GAAE,IAAiB,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAetF;AAED,MAAM,MAAM,QAAQ,GAAG;IACrB,IAAI,EAAE,MAAM,GAAG,WAAW,GAAG,MAAM,GAAG,OAAO,GAAG,UAAU,CAAC;IAC3D,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC3B,CAAC;AAEF,8EAA8E;AAC9E,wBAAgB,MAAM,CAAC,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,GAAG,QAAQ,CAoCnF;AAED,2EAA2E;AAC3E,wBAAgB,YAAY,CAC1B,GAAG,EAAE,aAAa,EAClB,KAAK,EAAE,MAAM,EACb,WAAW,CAAC,EAAE,SAAS,GAAG,MAAM;;;;;;;;;;EAiBjC"}
1
+ {"version":3,"file":"floriday-base-supply.d.ts","sourceRoot":"","sources":["../../src/lib/floriday-base-supply.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,MAAM,MAAM,aAAa,GAAG;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,aAAa,EAAE,MAAM,CAAC;IACtB,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,yBAAyB,EAAE,OAAO,CAAC;CACpC,CAAC;AAEF,MAAM,MAAM,UAAU,GAAG;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GAAG;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC;AAEpF,gGAAgG;AAChG,wBAAgB,YAAY,CAAC,SAAS,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,GAAG,MAAM,GAAG,IAAI,CAQ7E;AAED,yEAAyE;AACzE,wBAAgB,WAAW,CAAC,GAAG,EAAE,IAAI,CAAC,aAAa,EAAE,YAAY,GAAG,MAAM,CAAC,GAAG,UAAU,CAIvF;AAED,mEAAmE;AACnE,wBAAgB,gBAAgB,CAAC,EAAE,GAAE,IAAiB,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAetF;AAED,MAAM,MAAM,QAAQ,GAAG;IACrB,IAAI,EAAE,MAAM,GAAG,WAAW,GAAG,MAAM,GAAG,OAAO,GAAG,UAAU,CAAC;IAC3D,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC3B,CAAC;AAEF,8EAA8E;AAC9E,wBAAgB,MAAM,CAAC,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,GAAG,QAAQ,CAoCnF;AAED,2EAA2E;AAC3E,wBAAgB,YAAY,CAC1B,GAAG,EAAE,aAAa,EAClB,KAAK,EAAE,MAAM,EACb,WAAW,CAAC,EAAE,SAAS,GAAG,MAAM;;;;;;;;;;EAiBjC"}
@@ -3,15 +3,26 @@
3
3
  * wordt gebruikt door de server-route en door de tests met nagespeelde
4
4
  * antwoorden van Floriday-authenticatie 1.0.61.
5
5
  */
6
+ /** M26: de werkelijke reden waarom een prijs niet bruikbaar is (of null als hij in orde is). */
7
+ export function priceProblem(salePrice, unit) {
8
+ const u = String(unit ?? "").trim().toLowerCase();
9
+ if (u && u !== "stuks" && u !== "stuk")
10
+ return `Eenheid is geen stuks (nu: ${String(unit).trim()})`;
11
+ if (salePrice === null || salePrice === undefined || String(salePrice).trim() === "")
12
+ return "Prijs ontbreekt";
13
+ const p = Number(salePrice);
14
+ if (!Number.isFinite(p))
15
+ return "Prijs ontbreekt";
16
+ if (p <= 0)
17
+ return "Prijs is 0 of lager";
18
+ return null;
19
+ }
6
20
  /** Prijs per stuk excl. btw: alleen bij eenheid "stuks" en prijs > 0. */
7
21
  export function priceForRow(row) {
8
- const unit = String(row.unit ?? "").trim().toLowerCase();
9
- if (unit && unit !== "stuks" && unit !== "stuk")
10
- return { ok: false, label: "Eenheid onduidelijk" };
11
- const p = Number(row.sale_price);
12
- if (!Number.isFinite(p) || p <= 0)
13
- return { ok: false, label: "Prijs ontbreekt" };
14
- return { ok: true, price: Math.round(p * 1000) / 1000 };
22
+ const problem = priceProblem(row.sale_price, row.unit);
23
+ if (problem)
24
+ return { ok: false, label: problem };
25
+ return { ok: true, price: Math.round(Number(row.sale_price) * 1000) / 1000 };
15
26
  }
16
27
  /** ISO-weekjaar en ISO-week van een moment in Nederlandse tijd. */
17
28
  export function isoWeekAmsterdam(at = new Date()) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@flowselections/floriday-voorraad",
3
- "version": "1.0.69",
3
+ "version": "1.0.71",
4
4
  "sideEffects": false,
5
5
  "type": "module",
6
6
  "main": "./dist-lib/index.js",