false, 'message' => 'ID mescola non valido']); exit; } try { $pdo = DBHandlerSelect::getInstance()->getConnection(); // Blocca la cancellazione se ci sono dati collegati: meglio disattivare $chk = $pdo->prepare("SELECT COUNT(*) FROM mescole_supplier_lots WHERE idmescola = ?"); $chk->execute([$id]); $nLotti = (int)$chk->fetchColumn(); $chk = $pdo->prepare("SELECT COUNT(*) FROM mescole_files WHERE idmescola = ?"); $chk->execute([$id]); $nFile = (int)$chk->fetchColumn(); if ($nLotti > 0 || $nFile > 0) { $parti = []; if ($nLotti > 0) $parti[] = $nLotti . ' lotto/i fornitore'; if ($nFile > 0) $parti[] = $nFile . ' file'; echo json_encode([ 'success' => false, 'message' => 'Impossibile eliminare: la mescola ha ' . implode(' e ', $parti) . '. Rimuovili prima, oppure disattiva la mescola.' ]); exit; } $pdo->beginTransaction(); // Le associazioni con le linee non sono dati storici: si possono rimuovere $pdo->prepare("DELETE FROM mescole_lines WHERE idmescola = ?")->execute([$id]); $pdo->prepare("DELETE FROM mescole WHERE id = ?")->execute([$id]); $pdo->commit(); echo json_encode(['success' => true]); } catch (Throwable $e) { if (isset($pdo) && $pdo->inTransaction()) { $pdo->rollBack(); } echo json_encode(['success' => false, 'message' => 'Errore database: ' . $e->getMessage()]); }