Disable menu/popover animations; update manifest handling
This commit is contained in:
@@ -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') {
|
||||
|
||||
Reference in New Issue
Block a user