<?php
session_start();
header('Content-Type: application/json; charset=UTF-8');

require_once __DIR__ . '/../config/database.php';

function json_response($data, $code = 200) {
    http_response_code($code);
    echo json_encode($data, JSON_UNESCAPED_UNICODE);
    exit;
}

try {
    if (!isset($_SESSION['user']['codempleado'])) {
        json_response(['success' => false, 'message' => 'No autorizado'], 401);
    }

    $codcronogramaventas = isset($_POST['codcronogramaventas']) ? (int)$_POST['codcronogramaventas'] : 0;
    $ventaId = isset($_POST['venta_id']) ? (int)$_POST['venta_id'] : 0;
    $monto = isset($_POST['monto']) ? trim($_POST['monto']) : '';
    $pagadofecha = isset($_POST['pagadofecha']) ? trim($_POST['pagadofecha']) : '';

    if ($codcronogramaventas <= 0 || $ventaId <= 0) {
        json_response(['success' => false, 'message' => 'Parámetros inválidos'], 400);
    }

    $database = new Database();
    $conn = $database->getConnection();

    // Verificar empresa del usuario
    $stmtEmpresa = $conn->prepare("SELECT codempresa FROM templeado WHERE codempleado = ?");
    $stmtEmpresa->execute([$_SESSION['user']['codempleado']]);
    $empresa = $stmtEmpresa->fetch(PDO::FETCH_ASSOC);
    if (!$empresa || !$empresa['codempresa']) {
        json_response(['success' => false, 'message' => 'No se encontró empresa del usuario'], 403);
    }
    $codempresaUsuario = $empresa['codempresa'];

    // Verificar que la venta pertenezca a la empresa
    $stmtVenta = $conn->prepare("SELECT id FROM timportventas WHERE id = ? AND codempresa = ?");
    $stmtVenta->execute([$ventaId, $codempresaUsuario]);
    if (!$stmtVenta->fetch(PDO::FETCH_ASSOC)) {
        json_response(['success' => false, 'message' => 'Venta no encontrada o sin permisos'], 404);
    }

    // Preparar datos para actualización
    $montoValue = null;
    if ($monto !== '' && is_numeric($monto)) {
        $montoValue = (float)$monto;
    }

    $pagadofechaValue = null;
    if ($pagadofecha !== '') {
        $pagadofechaValue = $pagadofecha;
    }

    // Actualizar el cronograma
    $stmt = $conn->prepare("UPDATE tcronogramaventas SET monto = ?, pagadofecha = ?, estado = 'PAGADO' WHERE codcronogramaventas = ? AND id = ?");
    $stmt->execute([$montoValue, $pagadofechaValue, $codcronogramaventas, $ventaId]);

    if ($stmt->rowCount() === 0) {
        json_response(['success' => false, 'message' => 'No se actualizó ningún registro'], 404);
    }

    json_response(['success' => true, 'message' => 'Cronograma actualizado correctamente']);
} catch (Throwable $e) {
    json_response(['success' => false, 'message' => 'Error del servidor: ' . $e->getMessage()], 500);
}
