feat: Produkte loeschen, und ein sichtbarer Grund, wenn es nicht geht
Fuer Ernten und Chargen gab es das Loeschen bereits, fuer Produkte nicht.
Neue Server Action deleteProductAction samt Knopf in der Produktliste,
im selben Muster wie die beiden vorhandenen: Bestaetigungsdialog,
Audit-Log-Eintrag, Pruefung vor dem Loeschen.
Geloescht werden kann nur, was nie bestellt wurde. OrderItem verweist mit
onDelete: Restrict auf das Produkt, und das ist Absicht: Bestellpositionen
und die daraus erzeugten Rechnungen sind Belege ueber einen vergangenen
Vorgang. Verschwaende das Produkt darunter weg, verloere eine bereits
gestellte Rechnung ihren Bezug — bei zehn Jahren Aufbewahrungspflicht
(§ 147 AO) keine Option. Die Meldung sagt deshalb nicht nur "geht nicht",
sondern nennt den Ausweg: inaktiv schalten, dann verschwindet das Produkt
aus dem Shop und der Beleg bleibt.
Mit dem Produkt gehen Lagerbestand, Bewertungen, Wunschlisten-Eintraege und
Verfuegbarkeits-Benachrichtigungen (onDelete: Cascade). Hochgeladene Bilder
bleiben liegen: sie koennen anderswo eingebunden sein, und eine verwaiste
Datei ist harmloser als ein totes Bild an anderer Stelle.
Auf allen drei Seiten fehlte bisher ausserdem die Erklaerung, warum der
Loeschknopf manchmal gar nicht da ist — er verschwand wortlos, sobald etwas
darauf verwies. Jetzt steht an seiner Stelle der Grund ("bereits verkauft"
bzw. "in Verwendung").
Co-Authored-By: Claude Opus 5 (1M context) <[email protected]>
This commit is contained in:
1 parent
dc13bd071b
commit
8f0f06fd13
7 files changed
+103
-6
No files matched your search
@@ -811,6 +811,7 @@ export const en: Dictionary = {
|
||||
},
|
||||
adminBatchesPage: {
|
||||
backToDashboard: "Back to dashboard",
|
||||
notDeletable: "in use",
|
||||
title: "Batches",
|
||||
colBatch: "Batch",
|
||||
colHarvest: "Harvest",
|
||||
@@ -877,6 +878,7 @@ export const en: Dictionary = {
|
||||
},
|
||||
adminHarvestsPage: {
|
||||
backToDashboard: "Back to dashboard",
|
||||
notDeletable: "in use",
|
||||
title: "Harvests",
|
||||
colType: "Type",
|
||||
colYear: "Year",
|
||||
@@ -931,6 +933,9 @@ export const en: Dictionary = {
|
||||
},
|
||||
adminProductsPage: {
|
||||
backToDashboard: "Back to dashboard",
|
||||
delete: "Delete",
|
||||
deleteConfirm: (label) => `Really delete "${label}"? This cannot be undone.`,
|
||||
notDeletable: "already sold",
|
||||
title: "Products",
|
||||
newProduct: "New product",
|
||||
colProduct: "Product",
|
||||
|
||||
Reference in new issue
Block a user