rework internal order system
This commit is contained in:
@@ -519,6 +519,16 @@ async function updateRequest(
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (data.items) {
|
if (data.items) {
|
||||||
|
// Preserve geliefert state for matching items (by artikel_id + bezeichnung)
|
||||||
|
const existingPositionen = await client.query(
|
||||||
|
'SELECT artikel_id, bezeichnung, geliefert FROM ausruestung_anfrage_positionen WHERE anfrage_id = $1',
|
||||||
|
[id],
|
||||||
|
);
|
||||||
|
const geliefertMap = new Map<string, boolean>();
|
||||||
|
for (const p of existingPositionen.rows) {
|
||||||
|
geliefertMap.set(`${p.artikel_id ?? 0}:${p.bezeichnung}`, p.geliefert);
|
||||||
|
}
|
||||||
|
|
||||||
await client.query('DELETE FROM ausruestung_anfrage_positionen WHERE anfrage_id = $1', [id]);
|
await client.query('DELETE FROM ausruestung_anfrage_positionen WHERE anfrage_id = $1', [id]);
|
||||||
for (const item of data.items) {
|
for (const item of data.items) {
|
||||||
let itemBezeichnung = item.bezeichnung;
|
let itemBezeichnung = item.bezeichnung;
|
||||||
@@ -531,10 +541,11 @@ async function updateRequest(
|
|||||||
itemBezeichnung = artikelResult.rows[0].bezeichnung;
|
itemBezeichnung = artikelResult.rows[0].bezeichnung;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
const prevGeliefert = geliefertMap.get(`${item.artikel_id ?? 0}:${itemBezeichnung}`) ?? false;
|
||||||
await client.query(
|
await client.query(
|
||||||
`INSERT INTO ausruestung_anfrage_positionen (anfrage_id, artikel_id, bezeichnung, menge, notizen)
|
`INSERT INTO ausruestung_anfrage_positionen (anfrage_id, artikel_id, bezeichnung, menge, notizen, geliefert)
|
||||||
VALUES ($1, $2, $3, $4, $5)`,
|
VALUES ($1, $2, $3, $4, $5, $6)`,
|
||||||
[id, item.artikel_id || null, itemBezeichnung, item.menge, item.notizen || null],
|
[id, item.artikel_id || null, itemBezeichnung, item.menge, item.notizen || null, prevGeliefert],
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1185,7 +1185,7 @@ function MeineAnfragenTab() {
|
|||||||
getOptionLabel={o => o.name}
|
getOptionLabel={o => o.name}
|
||||||
value={newFuerBenutzer}
|
value={newFuerBenutzer}
|
||||||
onChange={(_, v) => setNewFuerBenutzer(v)}
|
onChange={(_, v) => setNewFuerBenutzer(v)}
|
||||||
renderInput={params => <TextField {...params} label="Für wen (optional)" />}
|
renderInput={params => <TextField {...params} label="Für wen (optional)" InputLabelProps={{ ...params.InputLabelProps, shrink: true }} placeholder="Mitglied auswählen..." />}
|
||||||
/>
|
/>
|
||||||
)}
|
)}
|
||||||
<TextField
|
<TextField
|
||||||
|
|||||||
Reference in New Issue
Block a user