<?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);
    }

    if ($_SERVER['REQUEST_METHOD'] !== 'POST') {
        json_response(['success' => false, 'message' => 'Método no permitido'], 405);
    }

    $ids_json = $_POST['ids'] ?? '';
    $monto = $_POST['monto'] ?? '';

    if (empty($ids_json) || empty($monto)) {
        json_response(['success' => false, 'message' => 'Datos incompletos'], 400);
    }

    $ids = json_decode($ids_json, true);
    if (!is_array($ids) || empty($ids)) {
        json_response(['success' => false, 'message' => 'IDs inválidos'], 400);
    }

    $monto = floatval($monto);
    if ($monto <= 0) {
        json_response(['success' => false, 'message' => 'El monto debe ser mayor a 0'], 400);
    }

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

    // Obtener 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'];

    // Validar que todos los registros pertenezcan a ventas de la empresa del usuario
    $placeholders = str_repeat('?,', count($ids) - 1) . '?';
    $stmt = $conn->prepare("
        SELECT cv.codcronogramaventas 
        FROM tcronogramaventas cv
        INNER JOIN timportventas iv ON cv.id = iv.id
        WHERE cv.codcronogramaventas IN ($placeholders)
        AND iv.codempresa = ?
        AND cv.estado = 'PENDIENTE'
    ");
    $params = array_merge($ids, [$codempresaUsuario]);
    $stmt->execute($params);
    $validIds = $stmt->fetchAll(PDO::FETCH_COLUMN);

    if (empty($validIds)) {
        json_response(['success' => false, 'message' => 'No se encontraron registros válidos para actualizar'], 404);
    }

    // Actualizar los montos
    $placeholders_update = str_repeat('?,', count($validIds) - 1) . '?';
    $updateStmt = $conn->prepare("
        UPDATE tcronogramaventas 
        SET monto = ? 
        WHERE codcronogramaventas IN ($placeholders_update)
        AND estado = 'PENDIENTE'
    ");
    $updateParams = array_merge([$monto], $validIds);
    $updateStmt->execute($updateParams);

    $updated_count = $updateStmt->rowCount();

    json_response([
        'success' => true,
        'message' => "Se actualizaron $updated_count cuota(s) correctamente",
        'updated_count' => $updated_count
    ]);

} catch (Throwable $e) {
    error_log('Error en bulk_update_monto_cronograma_ventas.php: ' . $e->getMessage());
    json_response(['success' => false, 'message' => 'Error del servidor: ' . $e->getMessage()], 500);
}

