fix(manifest): align buildLines validation with OpenAPI (require sku or name, parse pu)

This commit is contained in:
seb
2026-09-16 10:17:25 +02:00
parent 0130ee6516
commit adc3cd1239

View File

@@ -104,21 +104,23 @@ export function buildLines(lines, { requireAtLeastOne }) {
const outLines = []; const outLines = [];
for (const line of lines) { for (const line of lines) {
const sku = String(line.sku ?? '').trim(); const sku = String(line.sku ?? '').trim();
const name = String(line.name ?? '').trim();
const amount = parseNum(line.amount); const amount = parseNum(line.amount);
const net = parseNum(line.net ?? line.netprice); const net = parseNum(line.net ?? line.netprice);
const tax = parseNum(line.tax ?? line.taxrate); const tax = parseNum(line.tax ?? line.taxrate);
const rebate = parseNum(line.rebate); const rebate = parseNum(line.rebate);
const pu = parseNum(line.pu);
const blank = 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 (blank) continue;
if (!sku || amount == null || net == null || tax == null) { if ((!sku && !name) || amount == null || net == null || tax == null) {
throw new Error('Jede Zeile braucht SKU, Amount, Net und Tax.'); 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 (rebate != null) row.rebate = rebate;
if (line.name) row.name = line.name; if (pu != null) row.pu = pu;
if (line.pu != null) row.pu = line.pu;
if (line.unit) row.unit = line.unit;
outLines.push(row); outLines.push(row);
} }
if (requireAtLeastOne && outLines.length === 0) { if (requireAtLeastOne && outLines.length === 0) {