diff --git a/backend/src/services/ausruestungsanfrage.service.ts b/backend/src/services/ausruestungsanfrage.service.ts index 1abe109..2249d89 100644 --- a/backend/src/services/ausruestungsanfrage.service.ts +++ b/backend/src/services/ausruestungsanfrage.service.ts @@ -519,6 +519,16 @@ async function updateRequest( } 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(); + 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]); for (const item of data.items) { let itemBezeichnung = item.bezeichnung; @@ -531,10 +541,11 @@ async function updateRequest( itemBezeichnung = artikelResult.rows[0].bezeichnung; } } + const prevGeliefert = geliefertMap.get(`${item.artikel_id ?? 0}:${itemBezeichnung}`) ?? false; await client.query( - `INSERT INTO ausruestung_anfrage_positionen (anfrage_id, artikel_id, bezeichnung, menge, notizen) - VALUES ($1, $2, $3, $4, $5)`, - [id, item.artikel_id || null, itemBezeichnung, item.menge, item.notizen || null], + `INSERT INTO ausruestung_anfrage_positionen (anfrage_id, artikel_id, bezeichnung, menge, notizen, geliefert) + VALUES ($1, $2, $3, $4, $5, $6)`, + [id, item.artikel_id || null, itemBezeichnung, item.menge, item.notizen || null, prevGeliefert], ); } } diff --git a/frontend/src/pages/Ausruestungsanfrage.tsx b/frontend/src/pages/Ausruestungsanfrage.tsx index 1f10e05..5d4106e 100644 --- a/frontend/src/pages/Ausruestungsanfrage.tsx +++ b/frontend/src/pages/Ausruestungsanfrage.tsx @@ -1185,7 +1185,7 @@ function MeineAnfragenTab() { getOptionLabel={o => o.name} value={newFuerBenutzer} onChange={(_, v) => setNewFuerBenutzer(v)} - renderInput={params => } + renderInput={params => } /> )}