'Acceso no autorizado.']); exit; } $data = json_decode(file_get_contents('php://input'), true); if (!$data || !isset($data['id']) || !isset($data['field']) || !isset($data['value'])) { http_response_code(400); echo json_encode(['error' => 'Datos incompletos.']); exit; } $video_id = $data['id']; $field = $data['field']; $value = $data['value']; // Whitelist allowed fields for security $allowed_fields = ['costo_producto', 'costo_fijo_film', 'comision_asesora', 'delivery', 'costo_publicitario', 'promo_1', 'promo_2', 'promo_3']; if (!in_array($field, $allowed_fields)) { http_response_code(400); echo json_encode(['error' => 'Campo no permitido.']); exit; } try { $pdo = db(); // Check if record exists $stmt = $pdo->prepare("SELECT id FROM marketing_costos WHERE video_id = ?"); $stmt->execute([$video_id]); $exists = $stmt->fetch(); if ($exists) { $sql = "UPDATE marketing_costos SET $field = ?, updated_at = CURRENT_TIMESTAMP WHERE video_id = ?"; $stmt = $pdo->prepare($sql); $stmt->execute([$value, $video_id]); } else { $sql = "INSERT INTO marketing_costos (video_id, $field) VALUES (?, ?)"; $stmt = $pdo->prepare($sql); $stmt->execute([$video_id, $value]); } // Recalculate inversion_total - Fetching fresh data after update $stmt = $pdo->prepare("SELECT costo_producto, costo_fijo_film, comision_asesora, delivery, costo_publicitario FROM marketing_costos WHERE video_id = ?"); $stmt->execute([$video_id]); $row = $stmt->fetch(PDO::FETCH_ASSOC); $costo_prod = floatval($row['costo_producto'] ?? 0); $costo_film = floatval($row['costo_fijo_film'] ?? 0); $costo_asesora = floatval($row['comision_asesora'] ?? 0); $costo_delivery = floatval($row['delivery'] ?? 0); $costo_pub = floatval($row['costo_publicitario'] ?? 0); $total = $costo_prod + $costo_film + $costo_asesora + $costo_delivery + $costo_pub; $stmt = $pdo->prepare("UPDATE marketing_costos SET inversion_total = ? WHERE video_id = ?"); $stmt->execute([$total, $video_id]); echo json_encode([ 'success' => true, 'message' => 'Campo actualizado correctamente.', 'new_total' => $total ]); } catch (PDOException $e) { http_response_code(500); echo json_encode(['error' => 'Error al actualizar la base de datos: ' . $e->getMessage()]); } ?>