This commit is contained in:
seb
2026-07-13 03:50:13 +02:00
parent 955fe2c164
commit d471f2411d

View File

@@ -52,6 +52,19 @@ function toNumber(value, fallback = 0) {
return Number.isFinite(n) ? n : fallback; 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) // JTL maps VAT rates to Steuerklassen: 19% => 1 (voller Satz), 7% => 2 (ermäßigt)
function steuerklasseForVat(vat) { function steuerklasseForVat(vat) {
if (vat >= 15) return 1; if (vat >= 15) return 1;
@@ -435,10 +448,10 @@ export async function createOrder(order) {
try { try {
const zahlungsartCache = new Map(); const zahlungsartCache = new Map();
// Always use the server's current time for stored timestamps (dErstellt, // Use the client-supplied order.creationDate for stored timestamps (dErstellt,
// number-sequence date placeholders, payment date) rather than trusting // number-sequence date placeholders, payment date), falling back to the
// the client-supplied order.creationDate. // server's current time if it's missing/unparseable.
const orderDate = new Date(); const orderDate = parseOrderDate(order.creationDate);
const { kKunde, kKundengruppe } = await resolveCustomer(transaction, order, defaults); const { kKunde, kKundengruppe } = await resolveCustomer(transaction, order, defaults);
const zahlungsart = await resolveZahlungsart(transaction, order.paymentMethodName, zahlungsartCache); const zahlungsart = await resolveZahlungsart(transaction, order.paymentMethodName, zahlungsartCache);
const cAuftragsNr = await nextOrderNumber(transaction, orderDate); const cAuftragsNr = await nextOrderNumber(transaction, orderDate);