From d471f2411d7365a98abf6a14c377311363474f89 Mon Sep 17 00:00:00 2001 From: seb Date: Mon, 13 Jul 2026 03:50:13 +0200 Subject: [PATCH] da --- src/queries/create-order.js | 21 +++++++++++++++++---- 1 file changed, 17 insertions(+), 4 deletions(-) diff --git a/src/queries/create-order.js b/src/queries/create-order.js index b43acb8..93987a2 100644 --- a/src/queries/create-order.js +++ b/src/queries/create-order.js @@ -52,6 +52,19 @@ function toNumber(value, fallback = 0) { return Number.isFinite(n) ? n : fallback; } +// order.creationDate comes in as "YYYY-MM-DD HH:mm:ss" (no timezone); treat it as +// local server time, same as `new Date('YYYY-MM-DDTHH:mm:ss')` would. Falls back to +// the server's current time if missing/unparseable. +function parseOrderDate(creationDate) { + if (creationDate) { + const parsed = new Date(String(creationDate).replace(' ', 'T')); + if (!Number.isNaN(parsed.getTime())) { + return parsed; + } + } + return new Date(); +} + // JTL maps VAT rates to Steuerklassen: 19% => 1 (voller Satz), 7% => 2 (ermäßigt) function steuerklasseForVat(vat) { if (vat >= 15) return 1; @@ -435,10 +448,10 @@ export async function createOrder(order) { try { const zahlungsartCache = new Map(); - // Always use the server's current time for stored timestamps (dErstellt, - // number-sequence date placeholders, payment date) rather than trusting - // the client-supplied order.creationDate. - const orderDate = new Date(); + // Use the client-supplied order.creationDate for stored timestamps (dErstellt, + // number-sequence date placeholders, payment date), falling back to the + // server's current time if it's missing/unparseable. + const orderDate = parseOrderDate(order.creationDate); const { kKunde, kKundengruppe } = await resolveCustomer(transaction, order, defaults); const zahlungsart = await resolveZahlungsart(transaction, order.paymentMethodName, zahlungsartCache); const cAuftragsNr = await nextOrderNumber(transaction, orderDate);