Disable menu/popover animations; update manifest handling

This commit is contained in:
seb
2026-08-08 10:09:19 +02:00
parent 87acdd929e
commit 2cbe5dabb2
6 changed files with 109 additions and 17 deletions

View File

@@ -44,6 +44,16 @@ export function formatDate(iso) {
return d.toLocaleDateString('de-DE');
}
/**
* Delivery documents have a server-allocated, read-only `number` plus an
* optional user-entered `externalNumber`. Returns the display value for a
* field, defaulting to a dash when empty.
*/
export function numberDisplay(value) {
if (value == null || String(value).trim() === '') return '–';
return String(value);
}
export function dateInputValue(iso) {
if (!iso) return '';
const d = new Date(iso);
@@ -105,20 +115,35 @@ export function buildLines(lines, { requireAtLeastOne }) {
}
/**
* @param {{ number: string, date: string, partyId: number|null, lines: object[] }} form
* @param {{ partyField: 'supplierId'|'entityId', requireAtLeastOne: boolean }} opts
* @param {{ number: string, externalNumber?: string, date: string, partyId: number|null, lines: object[] }} form
* @param {{ partyField: 'supplierId'|'entityId', requireAtLeastOne: boolean, externalNumber?: boolean }} opts
*/
export function buildManifestBody(form, { partyField, requireAtLeastOne }) {
const number = String(form.number ?? '').trim();
export function buildManifestBody(
form,
{ partyField, requireAtLeastOne, externalNumber: useExternalNumber },
) {
const date = form.date;
if (!number) throw new Error('Nummer fehlt.');
if (!date) throw new Error('Datum fehlt.');
const body = {
number,
date,
lines: buildLines(form.lines, { requireAtLeastOne }),
};
let body;
if (useExternalNumber) {
// Delivery: number is server-allocated/read-only. The caller-supplied
// reference goes in externalNumber (nullable; empty string → null).
const externalNumber = String(form.externalNumber ?? '').trim();
body = {
externalNumber: externalNumber || null,
date,
lines: buildLines(form.lines, { requireAtLeastOne }),
};
} else {
const number = String(form.number ?? '').trim();
if (!number) throw new Error('Nummer fehlt.');
body = {
number,
date,
lines: buildLines(form.lines, { requireAtLeastOne }),
};
}
if (form.partyId != null) body[partyField] = form.partyId;
else if (!requireAtLeastOne) body[partyField] = null;
return body;
@@ -192,6 +217,9 @@ export function manifestConfig(kind) {
listPromise: (ctx) => ctx.deliveries ?? ctx.deliveryPromise,
partiesByIdFromList: (parties) =>
Object.fromEntries(parties.map((row) => [row.id, row])),
// Delivery uses a server-allocated read-only number plus an optional
// caller-supplied external reference.
externalNumber: true,
};
}
if (kind === 'quote') {