false, 'message' => 'Error desconocido.']; if ($_SERVER['REQUEST_METHOD'] === 'POST') { $fecha = $_POST['fecha'] ?? null; $field = $_POST['field'] ?? null; $value = $_POST['value'] ?? null; if (!$fecha || !$field || $value === null) { $response['message'] = 'Datos incompletos: fecha, campo o valor no proporcionados.'; echo json_encode($response); exit; } // Lista blanca de campos editables para seguridad $allowed_fields = [ 'bcp_yape', 'banco_nacion', 'interbank', 'bbva', 'otros_ingresos', 'tu_1', 'tu_2', 'tu_3', 'fl_1', 'fl_2', 'fl_3' ]; if (!in_array($field, $allowed_fields)) { $response['message'] = "El campo '{$field}' no es editable."; echo json_encode($response); exit; } try { $db = db(); // Verificar si ya existe una fila para esa fecha $stmt_check = $db->prepare("SELECT id FROM flujo_de_caja WHERE fecha = ?"); $stmt_check->execute([$fecha]); $existing_id = $stmt_check->fetchColumn(); if ($existing_id) { // Si existe, actualizar el campo específico $sql = "UPDATE flujo_de_caja SET {$field} = ? WHERE id = ?"; $stmt = $db->prepare($sql); $stmt->execute([$value, $existing_id]); } else { // Si no existe, crear una nueva fila con el valor $sql = "INSERT INTO flujo_de_caja (fecha, {$field}) VALUES (?, ?)"; $stmt = $db->prepare($sql); $stmt->execute([$fecha, $value]); } if ($stmt->rowCount() > 0 || $existing_id) { $response['success'] = true; $response['message'] = 'Dato guardado correctamente.'; } else { $response['message'] = 'No se realizaron cambios.'; } } catch (PDOException $e) { // Capturar errores de la base de datos $response['message'] = "Error de base de datos: " . $e->getMessage(); } } else { $response['message'] = 'Método de solicitud no válido.'; } echo json_encode($response); ?>