getConnection(); $data = json_decode(file_get_contents('php://input'), true); $idquotations = $data['idquotations'] ?? null; $parts = $data['parts'] ?? []; if (!$idquotations || empty($parts)) { echo json_encode(['success' => false, 'message' => 'Dati mancanti']); exit; } try { $pdo->beginTransaction(); // Elimina tutte le parti esistenti per idquotations $stmt = $pdo->prepare("DELETE FROM identification_parts WHERE idquotations = :idquotations"); $stmt->execute([':idquotations' => $idquotations]); // Prepara l'inserimento delle nuove parti $stmt = $pdo->prepare(" INSERT INTO identification_parts (idquotations, part_number, part_description, mix, created_at, updated_at) VALUES (:idquotations, :part_number, :part_description, :mix, NOW(), NOW()) "); $part_ids = []; foreach ($parts as $part) { $partNumber = $part['part_number'] ?? null; $partDescription = $part['part_description'] ?? ''; $mix = $part['mix'] ?? 'N'; if (!$partNumber || !$partDescription) { throw new PDOException("Numero parte o descrizione mancante per parte: " . json_encode($part)); } $stmt->execute([ ':idquotations' => $idquotations, ':part_number' => $partNumber, ':part_description' => $partDescription, ':mix' => $mix ]); $part_ids[] = $pdo->lastInsertId(); } $pdo->commit(); echo json_encode([ 'success' => true, 'part_ids' => $part_ids, 'message' => 'Parti rinumerate con successo' ]); } catch (PDOException $e) { $pdo->rollBack(); echo json_encode([ 'success' => false, 'message' => 'Errore nel salvataggio: ' . $e->getMessage() ]); }