From 15a08b006d83fe5860a07d48a37402abde42a2d8 Mon Sep 17 00:00:00 2001 From: AV77web Date: Sun, 31 May 2026 11:54:06 +0200 Subject: [PATCH] carico degli articoli delle macchine/parti/gruppi quando vengono eliminati. --- src/app/api/macchine/[id]/route.ts | 17 +++- src/components/ArticoliMacchinaModal.tsx | 56 ++++++++---- src/components/MacchineTree.tsx | 111 +++++++++++++++++++++-- src/lib/macchine/index.ts | 79 +++++++++++++++- 4 files changed, 233 insertions(+), 30 deletions(-) diff --git a/src/app/api/macchine/[id]/route.ts b/src/app/api/macchine/[id]/route.ts index e7fcc0a..8c9dd77 100644 --- a/src/app/api/macchine/[id]/route.ts +++ b/src/app/api/macchine/[id]/route.ts @@ -102,7 +102,22 @@ export async function DELETE(request: Request, { params }: RouteParams) { } try { - const deleted = await deleteMacchina(macchinaId); + // Leggi il body per ottenere il magazzino di rientro (opzionale) + let idMagazzinoRientro: number | undefined; + try { + const body = await request.json(); + if (body.idMagazzinoRientro) { + idMagazzinoRientro = parseInt(body.idMagazzinoRientro, 10); + if (isNaN(idMagazzinoRientro)) { + idMagazzinoRientro = undefined; + } + } + } catch { + // Body vuoto o non JSON, continua senza magazzino + } + + const user = session.user.email || session.user.name || "unknown"; + const deleted = await deleteMacchina(macchinaId, idMagazzinoRientro, user); if (!deleted) { return NextResponse.json( diff --git a/src/components/ArticoliMacchinaModal.tsx b/src/components/ArticoliMacchinaModal.tsx index 0fb51b6..4e13036 100644 --- a/src/components/ArticoliMacchinaModal.tsx +++ b/src/components/ArticoliMacchinaModal.tsx @@ -18,6 +18,7 @@ interface RimuoviModalState { quantita: number; opzione: "carico" | "elimina"; idMagazzino: number | null; + articoloEsiste: boolean; } export default function ArticoliMacchinaModal({ @@ -54,14 +55,25 @@ export default function ArticoliMacchinaModal({ fetchMagazzini(); }, [macchinaStabilimentoId]); - const handleRimuoviClick = (articolo: ArticoloAssegnatoMacchina) => { + const handleRimuoviClick = async (articolo: ArticoloAssegnatoMacchina) => { + setError(null); + + // Verifica se l'articolo esiste ancora nel catalogo + let articoloEsiste = true; + try { + const res = await fetch(`/api/articoli/${articolo.id_articolo}`); + articoloEsiste = res.ok; + } catch { + articoloEsiste = false; + } + setRimuoviModal({ articolo, quantita: 1, - opzione: "carico", + opzione: articoloEsiste ? "carico" : "elimina", idMagazzino: null, + articoloEsiste, }); - setError(null); }; const handleConfermaRimozione = async () => { @@ -211,26 +223,34 @@ export default function ArticoliMacchinaModal({ /> + {!rimuoviModal.articoloEsiste && ( +
+ Questo articolo non esiste più nel catalogo. Verrà eliminato senza possibilità di rientro in magazzino. +
+ )} +
- -