From adc3cd12394de13ea67c36c9a7563bbece7d0b51 Mon Sep 17 00:00:00 2001 From: seb Date: Wed, 16 Sep 2026 10:17:25 +0200 Subject: [PATCH] fix(manifest): align buildLines validation with OpenAPI (require sku or name, parse pu) --- src/components/manifest/manifestConfig.js | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/src/components/manifest/manifestConfig.js b/src/components/manifest/manifestConfig.js index 201d6f9..f9e27bc 100644 --- a/src/components/manifest/manifestConfig.js +++ b/src/components/manifest/manifestConfig.js @@ -104,21 +104,23 @@ export function buildLines(lines, { requireAtLeastOne }) { const outLines = []; for (const line of lines) { const sku = String(line.sku ?? '').trim(); + const name = String(line.name ?? '').trim(); const amount = parseNum(line.amount); const net = parseNum(line.net ?? line.netprice); const tax = parseNum(line.tax ?? line.taxrate); const rebate = parseNum(line.rebate); + const pu = parseNum(line.pu); const blank = - !sku && amount == null && net == null && tax == null && rebate == null; + !sku && !name && amount == null && net == null && tax == null && rebate == null; if (blank) continue; - if (!sku || amount == null || net == null || tax == null) { - throw new Error('Jede Zeile braucht SKU, Amount, Net und Tax.'); + if ((!sku && !name) || amount == null || net == null || tax == null) { + throw new Error('Jede Zeile braucht SKU oder Name, Amount, Net und Tax.'); } - const row = { sku, amount, net, tax }; + const row = { amount, net, tax }; + if (sku) row.sku = sku; + if (name) row.name = name; if (rebate != null) row.rebate = rebate; - if (line.name) row.name = line.name; - if (line.pu != null) row.pu = line.pu; - if (line.unit) row.unit = line.unit; + if (pu != null) row.pu = pu; outLines.push(row); } if (requireAtLeastOne && outLines.length === 0) {