<?php
include_once 'includes/header.php';
include_once 'config/database.php';

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

// Delete logic
if (isset($_GET['delete'])) {
    $id = $_GET['delete'];
    try {
        $stmt = $conn->prepare("DELETE FROM timportventas WHERE id = ?");
        $stmt->execute([$id]);
        $_SESSION['success'] = "Registro eliminado correctamente";
    } catch(PDOException $e) {
        $_SESSION['error'] = "Error al eliminar el registro: " . $e->getMessage();
    }
    header("Location: importarventas.php");
    exit();
}

// CSV Import logic
if ($_SERVER['REQUEST_METHOD'] == 'POST' && isset($_FILES['csv_file'])) {
    $file = $_FILES['csv_file'];
    
    if ($file['error'] == 0 && $file['type'] == 'text/csv') {
        try {
            // Obtener información del usuario logueado (similar a importarequipos.php)
            $codempleado = isset($_SESSION['user']['codempleado']) ? $_SESSION['user']['codempleado'] : null;
            $codempresa = null;

            if ($codempleado) {
                $stmt_empresa = $conn->prepare("SELECT codempresa FROM templeado WHERE codempleado = ?");
                $stmt_empresa->execute([$codempleado]);
                $resultado_empresa = $stmt_empresa->fetch(PDO::FETCH_ASSOC);
                if ($resultado_empresa) {
                    $codempresa = $resultado_empresa['codempresa'];
                }
            }

            if (!$codempleado || !$codempresa) {
                throw new Exception("No se pudo obtener la empresa del usuario logueado");
            }
            
            // Open CSV file
            $handle = fopen($file['tmp_name'], 'r');
            if ($handle === FALSE) {
                throw new Exception("No se pudo abrir el archivo CSV");
            }
            
            // Read header row
            $header = fgetcsv($handle, 1000, ';');
            if (!$header) {
                throw new Exception("No se pudo leer el encabezado del CSV");
            }
            
            // Skip header row and start importing data
            $row = 2; // Start from row 2 (after header)
            $imported = 0;
            $errors = [];
            
            while (($data = fgetcsv($handle, 1000, ';')) !== FALSE) {
                try {
                    // Validate data length
                    if (count($data) < count($header)) {
                        $errors[] = "Fila $row: Datos insuficientes";
                        $row++;
                        continue;
                    }
                    
                    // Prepare data for insertion - Skip ID column (index 0) since it's auto-increment
                    $fecha_creacion = !empty($data[1]) ? date('Y-m-d', strtotime(str_replace('/', '-', $data[1]))) : null;
                    $fecha_edicion = !empty($data[2]) ? date('Y-m-d', strtotime(str_replace('/', '-', $data[2]))) : null;
                    $agente = $data[3] ?? null;
                    $estado = $data[4] ?? null;
                    $nombres_ap_raz_soc = $data[5] ?? null;
                    $tipo_documento = $data[6] ?? null;
                    $nro_documento = $data[7] ?? null;
                    $fecha_nacimiento = !empty($data[8]) ? date('Y-m-d', strtotime(str_replace('/', '-', $data[8]))) : null;
                    $departamento_nacimiento = $data[9] ?? null;
                    $provincia_nacimiento = $data[10] ?? null;
                    $distrito_nacimiento = $data[11] ?? null;
                    $nombre_padre = $data[12] ?? null;
                    $nombre_madre = $data[13] ?? null;
                    $celular = $data[14] ?? null;
                    $correo = $data[15] ?? null;
                    $campana = $data[16] ?? null;
                    $paquete_contratado = $data[17] ?? null;
                    $tipo_venta = $data[18] ?? null;
                    $ugis = $data[19] ?? null;
                    $tecnologia = $data[20] ?? null;
                    $total_decos = !empty($data[21]) && is_numeric($data[21]) ? intval($data[21]) : null;
                    $full_claro = $data[22] ?? null;
                    $cargo_fijo = !empty($data[23]) && is_numeric($data[23]) ? floatval($data[23]) : null;
                    $tipo_urbanizacion = $data[24] ?? null;
                    $urbanizacion = $data[25] ?? null;
                    $tipo_domicilio = $data[26] ?? null;
                    $tipo_direccion = $data[27] ?? null;
                    $direccion = $data[28] ?? null;
                    $departamento = $data[29] ?? null;
                    $provincia = $data[30] ?? null;
                    $distrito = $data[31] ?? null;
                    $sec = $data[32] ?? null;
                    $fecha_sec = !empty($data[33]) ? date('Y-m-d', strtotime(str_replace('/', '-', $data[33]))) : null;
                    $sot = $data[34] ?? null;
                    $fecha_instalacion = !empty($data[35]) ? date('Y-m-d', strtotime(str_replace('/', '-', $data[35]))) : null;
                    $estado_sot = $data[36] ?? null;
                    $audio_loteado = $data[37] ?? null;
                    $audio_grabado = $data[38] ?? null;
                    $audio_conforme = $data[39] ?? null;
                    $codigodepago = $data[40] ?? null; // Nuevo campo desde CSV
                    
                    // Insert data - 39 campos en total (sin el campo id que es auto-increment)
                    $stmt = $conn->prepare("INSERT INTO timportventas (
                        fecha_creacion, fecha_edicion, agente, estado, nombres_ap_raz_soc,
                        tipo_documento, nro_documento, fecha_nacimiento, departamento_nacimiento,
                        provincia_nacimiento, distrito_nacimiento, nombre_padre, nombre_madre,
                        celular, correo, campana, paquete_contratado, tipo_venta, ugis,
                        tecnologia, total_decos, full_claro, cargo_fijo, tipo_urbanizacion,
                        urbanizacion, tipo_domicilio, tipo_direccion, direccion, departamento,
                        provincia, distrito, sec, fecha_sec, sot, fecha_instalacion, estado_sot,
                        audio_loteado, audio_grabado, audio_conforme, codigodepago, codempleado, codempresa
                    ) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)");
                    
                    // Array con exactamente 39 parámetros - Contados uno por uno
                    $params = [
                        $fecha_creacion,        // 1
                        $fecha_edicion,         // 2
                        $agente,                 // 3
                        $estado,                 // 4
                        $nombres_ap_raz_soc,    // 5
                        $tipo_documento,        // 6
                        $nro_documento,         // 7
                        $fecha_nacimiento,      // 8
                        $departamento_nacimiento, // 9
                        $provincia_nacimiento,  // 10
                        $distrito_nacimiento,   // 11
                        $nombre_padre,          // 12
                        $nombre_madre,          // 13
                        $celular,               // 14
                        $correo,                // 15
                        $campana,               // 16
                        $paquete_contratado,    // 17
                        $tipo_venta,            // 18
                        $ugis,                  // 19
                        $tecnologia,            // 20
                        $total_decos,           // 21
                        $full_claro,            // 22
                        $cargo_fijo,            // 23
                        $tipo_urbanizacion,     // 24
                        $urbanizacion,          // 25
                        $tipo_domicilio,        // 26
                        $tipo_direccion,        // 27
                        $direccion,             // 28
                        $departamento,          // 29
                        $provincia,             // 30
                        $distrito,              // 31
                        $sec,                   // 32
                        $fecha_sec,             // 33
                        $sot,                   // 34
                        $fecha_instalacion,     // 35
                        $estado_sot,            // 36
                        $audio_loteado,         // 37
                        $audio_grabado,         // 38
                        $audio_conforme,        // 39
                        $codigodepago,          // 40
                        $codempleado,           // 41
                        $codempresa             // 42
                    ];
                    
                    // Debug: Mostrar el número de parámetros
                    $paramCount = count($params);
                    if ($paramCount !== 42) {
                        throw new Exception("Error: Número de parámetros incorrecto. Esperados: 42, Encontrados: $paramCount. Parámetros: " . implode(', ', array_map(function($p) { return $p === null ? 'NULL' : (is_string($p) ? "'$p'" : $p); }, $params)));
                    }
                    
                    $stmt->execute($params);
                    
                    $imported++;
                    
                } catch (Exception $e) {
                    $errors[] = "Fila $row: " . $e->getMessage();
                }
                $row++;
            }
            
            fclose($handle);
            
            if ($imported > 0) {
                $_SESSION['success'] = "Se importaron $imported registros correctamente";
                if (!empty($errors)) {
                    $_SESSION['warning'] = "Se encontraron " . count($errors) . " errores durante la importación";
                }
            } else {
                $_SESSION['error'] = "No se pudo importar ningún registro";
            }
            
            if (!empty($errors)) {
                $_SESSION['import_errors'] = $errors;
            }
            
        } catch (Exception $e) {
            $_SESSION['error'] = "Error durante la importación: " . $e->getMessage();
        }
    } else {
        $_SESSION['error'] = "Por favor seleccione un archivo CSV válido";
    }
    
    header("Location: importarventas.php");
    exit();
}

// Fetch records with search and pagination
try {
    // Obtener la empresa del usuario logueado
    $codempresaUsuario = null;
    $stmt_empresa = $conn->prepare("SELECT codempresa FROM templeado WHERE codempleado = ?");
    $stmt_empresa->execute([$_SESSION['user']['codempleado']]);
    $resultado_empresa = $stmt_empresa->fetch(PDO::FETCH_ASSOC);
    if ($resultado_empresa) {
        $codempresaUsuario = $resultado_empresa['codempresa'];
    }
    
    $search = isset($_GET['search']) ? trim($_GET['search']) : '';
    $filtro_cronograma = isset($_GET['filtro_cronograma']) ? trim($_GET['filtro_cronograma']) : ''; // 'con', 'sin', o ''
    $page = isset($_GET['page']) ? max(1, intval($_GET['page'])) : 1;
    $records_per_page = isset($_GET['per_page']) ? max(10, min(100, intval($_GET['per_page']))) : 20;
    $offset = ($page - 1) * $records_per_page;
    
    // Count total records for pagination (consider cronograma join)
    $count_query = "SELECT COUNT(DISTINCT v.id) as total 
                    FROM timportventas v 
                    LEFT JOIN tcronogramaventas c ON v.id = c.id 
                    WHERE 1=1";
    $count_params = [];
    
    // Filtrar por empresa del usuario logueado
    if ($codempresaUsuario) {
        $count_query .= " AND v.codempresa = ?";
        $count_params[] = $codempresaUsuario;
    }
    
    if ($search) {
        $count_query .= " AND (
            v.nombres_ap_raz_soc LIKE ? OR 
            v.nro_documento LIKE ? OR 
            v.agente LIKE ? OR
            v.estado LIKE ?
        )";
        $searchTerm = "%{$search}%";
        $count_params = array_merge($count_params, [$searchTerm, $searchTerm, $searchTerm, $searchTerm]);
    }
    
    // Filtrar por cronograma
    if ($filtro_cronograma === 'con') {
        $count_query .= " AND c.id IS NOT NULL";
    } elseif ($filtro_cronograma === 'sin') {
        $count_query .= " AND c.id IS NULL";
    }
    
    $count_stmt = $conn->prepare($count_query);
    $count_stmt->execute($count_params);
    $total_records = $count_stmt->fetch(PDO::FETCH_ASSOC)['total'];
    $total_pages = ceil($total_records / $records_per_page);
    
    // Ensure page is within valid range
    if ($page > $total_pages && $total_pages > 0) {
        $page = $total_pages;
        $offset = ($page - 1) * $records_per_page;
    }
    
    // Fetch records for current page with cronograma info
    $query = "SELECT v.*, 
                     CASE WHEN c.id IS NOT NULL THEN 1 ELSE 0 END as tiene_cronograma,
                     COUNT(c.codcronogramaventas) as total_cuotas,
                     MIN(c.fechapago) as primera_cuota,
                     MAX(c.fechapago) as ultima_cuota
              FROM timportventas v 
              LEFT JOIN tcronogramaventas c ON v.id = c.id 
              WHERE 1=1";
    $params = [];
    
    // Filtrar por empresa del usuario logueado
    if ($codempresaUsuario) {
        $query .= " AND v.codempresa = ?";
        $params[] = $codempresaUsuario;
    }
    
    if ($search) {
        $query .= " AND (
            v.nombres_ap_raz_soc LIKE ? OR 
            v.nro_documento LIKE ? OR 
            v.agente LIKE ? OR
            v.estado LIKE ?
        )";
        $searchTerm = "%{$search}%";
        $params = array_merge($params, [$searchTerm, $searchTerm, $searchTerm, $searchTerm]);
    }
    
    // Filtrar por cronograma
    if ($filtro_cronograma === 'con') {
        $query .= " AND c.id IS NOT NULL";
    } elseif ($filtro_cronograma === 'sin') {
        $query .= " AND c.id IS NULL";
    }
    
    $query .= " GROUP BY v.id ORDER BY v.fecha_creacion DESC, v.id DESC LIMIT " . intval($records_per_page) . " OFFSET " . intval($offset);
    
    $stmt = $conn->prepare($query);
    $stmt->execute($params);
    $ventas = $stmt->fetchAll(PDO::FETCH_ASSOC);
    
} catch(PDOException $e) {
    $_SESSION['error'] = "Error al obtener los datos: " . $e->getMessage();
    $ventas = [];
    $total_records = 0;
    $total_pages = 0;
    $page = 1;
}
?>

<div class="col-md-10 p-4">
    <div class="d-flex justify-content-between align-items-center mb-4">
        <div>
            <h2>Importar Ventas Fija </h2>
            <?php if ($total_records > 0): ?>
                <small class="text-muted">
                    Total: <?php echo number_format($total_records); ?> registros | 
                    Página <?php echo $page; ?> de <?php echo $total_pages; ?>
                </small>
            <?php endif; ?>
        </div>
        <div>
            <button type="button" class="btn btn-success" onclick="exportarVentas()">
                <i class="fas fa-file-excel"></i> Exportar Excel
            </button>
        </div>
    </div>

    <?php if (isset($_SESSION['success'])): ?>
        <div class="alert alert-success">
            <?php 
            echo $_SESSION['success']; 
            unset($_SESSION['success']);
            ?>
        </div>
    <?php endif; ?>

    <?php if (isset($_SESSION['warning'])): ?>
        <div class="alert alert-warning">
            <?php 
            echo $_SESSION['warning']; 
            unset($_SESSION['warning']);
            ?>
        </div>
    <?php endif; ?>

    <?php if (isset($_SESSION['error'])): ?>
        <div class="alert alert-danger">
            <?php 
            echo $_SESSION['error']; 
            unset($_SESSION['error']);
            ?>
        </div>
    <?php endif; ?>

    <!-- CSV Import Form -->
    <div class="card mb-4">
        <div class="card-body">
            <h5 class="card-title">Importar Archivo CSV</h5>
            <form method="POST" action="importarventas.php" enctype="multipart/form-data">
                <div class="row">
                    <div class="col-md-6 mb-3">
                        <label class="form-label">Seleccionar archivo CSV</label>
                        <input type="file" class="form-control" name="csv_file" accept=".csv" required>
                        <div class="form-text">El archivo debe estar en formato CSV con separador punto y coma (;)</div>
                    </div>
                    <div class="col-md-6 mb-3 d-flex align-items-end">
                        <button type="submit" class="btn btn-primary">
                            <i class="fas fa-upload"></i> Importar CSV
                        </button>
                    </div>
                </div>
            </form>
        </div>
    </div>

    <!-- Import Errors Display -->
    <?php if (isset($_SESSION['import_errors']) && !empty($_SESSION['import_errors'])): ?>
        <div class="card mb-4">
            <div class="card-header bg-warning text-dark">
                <h6 class="mb-0"><i class="fas fa-exclamation-triangle"></i> Errores de Importación</h6>
            </div>
            <div class="card-body">
                <div class="table-responsive">
                    <table class="table table-sm">
                        <thead>
                            <tr>
                                <th>Error</th>
                            </tr>
                        </thead>
                        <tbody>
                            <?php foreach ($_SESSION['import_errors'] as $error): ?>
                                <tr>
                                    <td class="text-danger"><?php echo htmlspecialchars($error); ?></td>
                                </tr>
                            <?php endforeach; ?>
                        </tbody>
                    </table>
                </div>
            </div>
        </div>
        <?php unset($_SESSION['import_errors']); ?>
    <?php endif; ?>

    <!-- Search and Records per page form -->
    <div class="card mb-4">
        <div class="card-body">
            <form method="GET" action="importarventas.php" class="row g-3 align-items-end">
                <div class="col-md-3">
                    <label class="form-label">Buscar</label>
                    <input type="text" class="form-control" name="search" 
                           placeholder="Buscar por nombre, documento, agente o estado..."
                           value="<?php echo isset($_GET['search']) ? htmlspecialchars($_GET['search']) : ''; ?>">
                </div>
                <div class="col-md-2">
                    <label class="form-label">Filtro Cronograma</label>
                    <select name="filtro_cronograma" class="form-select" id="filtro_cronograma_select">
                        <option value="">Todos</option>
                        <option value="con" <?php echo (isset($_GET['filtro_cronograma']) && $_GET['filtro_cronograma'] == 'con') ? 'selected' : ''; ?>>Con Cronograma</option>
                        <option value="sin" <?php echo (isset($_GET['filtro_cronograma']) && $_GET['filtro_cronograma'] == 'sin') ? 'selected' : ''; ?>>Sin Cronograma</option>
                    </select>
                </div>
                <div class="col-md-2">
                    <button type="submit" class="btn btn-primary w-100">
                        <i class="fas fa-search"></i> Buscar
                    </button>
                </div>
                <div class="col-md-2">
                    <label class="form-label">Registros por página</label>
                    <select name="per_page" class="form-select" onchange="this.form.submit()">
                        <option value="10" <?php echo (isset($_GET['per_page']) && $_GET['per_page'] == '10') ? 'selected' : ''; ?>>10</option>
                        <option value="20" <?php echo (!isset($_GET['per_page']) || $_GET['per_page'] == '20') ? 'selected' : ''; ?>>20</option>
                        <option value="50" <?php echo (isset($_GET['per_page']) && $_GET['per_page'] == '50') ? 'selected' : ''; ?>>50</option>
                        <option value="100" <?php echo (isset($_GET['per_page']) && $_GET['per_page'] == '100') ? 'selected' : ''; ?>>100</option>
                    </select>
                </div>
                <div class="col-md-3">
                    <?php if (isset($_GET['search']) || isset($_GET['per_page']) || isset($_GET['filtro_cronograma'])): ?>
                        <a href="importarventas.php" class="btn btn-secondary w-100">
                            <i class="fas fa-times"></i> Limpiar
                        </a>
                    <?php endif; ?>
                </div>
            </form>
        </div>
    </div>

    <!-- Botones de acción múltiple -->
    <div class="card mb-4" id="accionesMultiples" style="display: none;">
        <div class="card-body">
            <div class="d-flex justify-content-between align-items-center">
                <div>
                    <span class="badge bg-info" id="registrosSeleccionados">0 registros seleccionados</span>
                </div>
                <div>
                    <button type="button" class="btn btn-danger me-2" onclick="eliminarSeleccionados()" id="btnEliminarSeleccionados">
                        <i class="fas fa-trash"></i> Eliminar Seleccionados
                    </button>
                    <button type="button" class="btn btn-warning" onclick="crearCronogramasGrupales()" id="btnCrearCronogramasGrupales">
                        <i class="fas fa-calendar-plus"></i> Crear Cronogramas Grupales
                    </button>
                </div>
            </div>
        </div>
    </div>

    <!-- List of records -->
    <div class="card">
        <div class="card-body">
            <div class="table-responsive">
                <table class="table table-striped">
                    <thead>
                        <tr>
                            <th>
                                <input type="checkbox" id="selectAll" onchange="toggleAllCheckboxes()">
                            </th>
                            <th>ID</th>
                            <th>Cliente</th>
                            <th>Documento</th>
                            <th>Agente</th>
                            <th>Estado</th>
                            <th>Paquete</th>
                            <th>Cronograma</th>
                            <th>Acciones</th>
                        </tr>
                    </thead>
                    <tbody>
                        <?php foreach ($ventas as $venta): ?>
                            <tr>
                                <td>
                                    <?php if (!$venta['tiene_cronograma']): ?>
                                        <input type="checkbox" class="venta-checkbox" value="<?php echo $venta['id']; ?>" onchange="updateSelectedCount()">
                                    <?php else: ?>
                                        <span class="text-muted">-</span>
                                    <?php endif; ?>
                                </td>
                                <td><?php echo $venta['id']; ?></td>
                                <td>
                                    <strong><?php echo htmlspecialchars($venta['nombres_ap_raz_soc'] ?: '-'); ?></strong>
                                    <?php if ($venta['celular']): ?>
                                        <br><small class="text-muted">📱 <?php echo htmlspecialchars($venta['celular']); ?></small>
                                    <?php endif; ?>
                                    <?php if ($venta['correo']): ?>
                                        <br><small class="text-muted">✉ <?php echo htmlspecialchars($venta['correo']); ?></small>
                                    <?php endif; ?>
                                </td>
                                <td>
                                    <?php echo htmlspecialchars($venta['tipo_documento'] ?: '-'); ?>
                                    <br><strong><?php echo htmlspecialchars($venta['nro_documento'] ?: '-'); ?></strong>
                                </td>
                                <td>
                                    <span class="badge bg-info"><?php echo htmlspecialchars($venta['agente'] ?: '-'); ?></span>
                                </td>
                                <td>
                                    <?php 
                                    $estadoClass = '';
                                    switch(strtoupper($venta['estado'])) {
                                        case 'ATENDIDAS':
                                            $estadoClass = 'bg-success';
                                            break;
                                        case 'EN EJECUCIÓN':
                                            $estadoClass = 'bg-warning';
                                            break;
                                        default:
                                            $estadoClass = 'bg-secondary';
                                    }
                                    ?>
                                    <span class="badge <?php echo $estadoClass; ?>">
                                        <?php echo htmlspecialchars($venta['estado'] ?: '-'); ?>
                                    </span>
                                </td>
                                <td>
                                    <small><?php echo htmlspecialchars($venta['paquete_contratado'] ?: '-'); ?></small>
                                    <?php if ($venta['tecnologia']): ?>
                                        <br><span class="badge bg-primary"><?php echo htmlspecialchars($venta['tecnologia']); ?></span>
                                    <?php endif; ?>
                                </td>
                                <td>
                                    <?php if (!empty($venta['tiene_cronograma'])): ?>
                                        <span class="badge bg-success">
                                            <i class="fas fa-check-circle"></i> Activo
                                        </span>
                                        <br><small class="text-muted">
                                            <?php echo $venta['total_cuotas']; ?> Meses
                                        </small>
                                        <?php if ($venta['primera_cuota']): ?>
                                            <br><small class="text-muted">
                                                Primera: <?php echo date('d/m/Y', strtotime($venta['primera_cuota'])); ?>
                                            </small>
                                        <?php endif; ?>
                                        <?php if ($venta['ultima_cuota']): ?>
                                            <br><small class="text-muted">
                                                Última: <?php echo date('d/m/Y', strtotime($venta['ultima_cuota'])); ?>
                                            </small>
                                        <?php endif; ?>
                                    <?php else: ?>
                                        <span class="badge bg-secondary">
                                            <i class="fas fa-times-circle"></i> Sin Cronograma
                                        </span>
                                    <?php endif; ?>
                                </td>
                                <td>
                                    <div class="btn-group" role="group">
                                        <?php if (empty($venta['tiene_cronograma'])): ?>
                                            <button type="button" class="btn btn-sm btn-success" 
                                                    onclick="openCronogramaVentasModal(<?php echo $venta['id']; ?>, '<?php echo htmlspecialchars($venta['nombres_ap_raz_soc']); ?>', '<?php echo $venta['fecha_instalacion']; ?>')"
                                                    title="Generar Cronograma de Pagos">
                                                <i class="fas fa-calendar-plus"></i>
                                            </button>
                                        <?php else: ?>
                                            <button type="button" class="btn btn-sm btn-info" 
                                                    onclick="viewCronogramaVentas(<?php echo $venta['id']; ?>)"
                                                    title="Ver Cronograma de Pagos">
                                                <i class="fas fa-calendar-check"></i>
                                            </button>
                                        <?php endif; ?>
                                        <a href="?delete=<?php echo $venta['id']; ?>" 
                                           class="btn btn-sm btn-danger"
                                           onclick="return confirm('¿Está seguro de eliminar este registro?')"
                                           title="Eliminar">
                                            <i class="fas fa-trash"></i>
                                        </a>
                                    </div>
                                </td>
                            </tr>
                        <?php endforeach; ?>
                    </tbody>
                </table>
            </div>
            
            <?php if (empty($ventas)): ?>
                <div class="text-center py-4">
                    <i class="fas fa-inbox fa-3x text-muted mb-3"></i>
                    <p class="text-muted">No hay registros de ventas importados</p>
                </div>
            <?php endif; ?>
            
            <!-- Pagination -->
            <?php if ($total_pages > 1): ?>
                <div class="d-flex justify-content-between align-items-center mt-4">
                    <div class="text-muted">
                        Mostrando <?php echo ($offset + 1); ?> - <?php echo min($offset + $records_per_page, $total_records); ?> 
                        de <?php echo $total_records; ?> registros
                    </div>
                    
                    <nav aria-label="Navegación de páginas">
                        <ul class="pagination pagination-sm mb-0">
                            <!-- First Page -->
                            <?php if ($page > 1): ?>
                                <li class="page-item">
                                    <a class="page-link" href="?<?php echo http_build_query(array_merge($_GET, ['page' => 1])); ?>" aria-label="Primera página">
                                        <i class="fas fa-angle-double-left"></i>
                                    </a>
                                </li>
                            <?php endif; ?>
                            
                            <!-- Previous Page -->
                            <?php if ($page > 1): ?>
                                <li class="page-item">
                                    <a class="page-link" href="?<?php echo http_build_query(array_merge($_GET, ['page' => $page - 1])); ?>" aria-label="Página anterior">
                                        <i class="fas fa-angle-left"></i>
                                    </a>
                                </li>
                            <?php endif; ?>
                            
                            <!-- Page Numbers -->
                            <?php
                            $start_page = max(1, $page - 2);
                            $end_page = min($total_pages, $page + 2);
                            
                            if ($start_page > 1): ?>
                                <li class="page-item disabled">
                                    <span class="page-link">...</span>
                                </li>
                            <?php endif; ?>
                            
                            <?php for ($i = $start_page; $i <= $end_page; $i++): ?>
                                <li class="page-item <?php echo ($i == $page) ? 'active' : ''; ?>">
                                    <a class="page-link" href="?<?php echo http_build_query(array_merge($_GET, ['page' => $i])); ?>">
                                        <?php echo $i; ?>
                                    </a>
                                </li>
                            <?php endfor; ?>
                            
                            <?php if ($end_page < $total_pages): ?>
                                <li class="page-item disabled">
                                    <span class="page-link">...</span>
                                </li>
                            <?php endif; ?>
                            
                            <!-- Next Page -->
                            <?php if ($page < $total_pages): ?>
                                <li class="page-item">
                                    <a class="page-link" href="?<?php echo http_build_query(array_merge($_GET, ['page' => $page + 1])); ?>" aria-label="Página siguiente">
                                        <i class="fas fa-angle-right"></i>
                                    </a>
                                </li>
                            <?php endif; ?>
                            
                            <!-- Last Page -->
                            <?php if ($page < $total_pages): ?>
                                <li class="page-item">
                                    <a class="page-link" href="?<?php echo http_build_query(array_merge($_GET, ['page' => $total_pages])); ?>" aria-label="Última página">
                                        <i class="fas fa-angle-double-right"></i>
                                    </a>
                                </li>
                            <?php endif; ?>
                        </ul>
                    </nav>
                </div>
            <?php endif; ?>
        </div>
    </div>
</div>

<!-- Modal para Cronograma de Pagos (Ventas) -->
<div class="modal fade" id="cronogramaVentasModal" tabindex="-1" aria-labelledby="cronogramaVentasModalLabel" aria-hidden="true">
    <div class="modal-dialog modal-lg">
        <div class="modal-content">
            <div class="modal-header">
                <h5 class="modal-title" id="cronogramaVentasModalLabel">
                    <i class="fas fa-calendar-plus"></i> Generar Cronograma de Pagos
                </h5>
                <button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
            </div>
            <div class="modal-body">
                <form id="cronogramaVentasForm">
                    <input type="hidden" id="ventas_id" name="venta_id">
                    <input type="hidden" id="ventas_dias_inicio_cobro_hidden" name="dias_inicio_cobro">
                    <input type="hidden" id="ventas_dias_ultimo_hidden" name="dias_ultimo">
                    
                    <div class="row mb-3">
                        <div class="col-md-6">
                            <label class="form-label">Cliente:</label>
                            <input type="text" class="form-control" id="ventas_cliente_nombre" readonly>
                        </div>
                        <div class="col-md-6">
                            <label class="form-label">Número de Pago:</label>
                            <input type="text" class="form-control" id="ventas_nropago" name="nropago" value="1" readonly>
                        </div>
                    </div>
                    
                    <div class="row mb-3">
                        <div class="col-md-6">
                            <label class="form-label">Fecha de Instalación:</label>
                            <input type="date" class="form-control" id="ventas_fecha_instalacion" name="fecha_instalacion" readonly>
                        </div>
                        <div class="col-md-6">
                            <label class="form-label">Fecha de Inicio de Cobranza:</label>
                            <input type="date" class="form-control" id="ventas_fecha_iniciocobranza" name="fecha_iniciocobranza">
                        </div>
                    </div>
                    
                    <div class="row mb-3">
                        <div class="col-md-6">
                            <label class="form-label">Fecha de Pago:</label>
                            <input type="date" class="form-control" id="ventas_fechapago" name="fechapago" readonly>
                        </div>
                        <div class="col-md-3">
                            <label class="form-label">Días Inicio Cobro:</label>
                            <input type="text" class="form-control" id="ventas_dias_inicio_cobro" >
                        </div>
                        <div class="col-md-3">
                            <label class="form-label">Días Último:</label>
                            <input type="text" class="form-control" id="ventas_dias_ultimo" >
                        </div>
                    </div>
                    
                    <div class="row mb-3">
                        <div class="col-md-6">
                            <label class="form-label">Cantidad de Meses a Generar:</label>
                            <input type="number" class="form-control" id="ventas_cantidad_meses" name="cantidad_meses" value="06" min="1" max="120" required>
                            <div class="form-text">Número de meses para generar el cronograma de pagos</div>
                        </div>
                    </div>
                    
                    <div class="alert alert-info">
                        <i class="fas fa-info-circle"></i>
                        <strong>Información:</strong> Las fechas se calculan automáticamente basándose en la configuración de la empresa.
                    </div>
                </form>
            </div>
            <div class="modal-footer">
                <button type="button" class="btn btn-secondary" data-bs-dismiss="modal">
                    <i class="fas fa-times"></i> Cancelar
                </button>
                <button type="button" class="btn btn-success" onclick="generateCronogramaVentas()">
                    <i class="fas fa-save"></i> Generar Cronograma
                </button>
            </div>
        </div>
    </div>
    </div>

<!-- Modal para Ver Cronograma (Ventas) -->
<div class="modal fade" id="cronogramaVentasViewModal" tabindex="-1" aria-labelledby="cronogramaVentasViewModalLabel" aria-hidden="true">
    <div class="modal-dialog modal-xl">
        <div class="modal-content">
            <div class="modal-header">
                <h5 class="modal-title" id="cronogramaVentasViewModalLabel">
                    <i class="fas fa-calendar-check"></i> Cronograma de Pagos
                </h5>
                <button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
            </div>
            <div class="modal-body" id="cronogramaVentasViewModalBody">
                <!-- Contenido dinámico -->
            </div>
            <div class="modal-footer">
                <button type="button" class="btn btn-secondary" data-bs-dismiss="modal">
                    <i class="fas fa-times"></i> Cerrar
                </button>
            </div>
        </div>
    </div>
    </div>

<!-- Modal para Cronogramas Grupales -->
<div class="modal fade" id="cronogramasGrupalesModal" tabindex="-1" aria-labelledby="cronogramasGrupalesModalLabel" aria-hidden="true">
    <div class="modal-dialog modal-lg">
        <div class="modal-content">
            <div class="modal-header">
                <h5 class="modal-title" id="cronogramasGrupalesModalLabel">
                    <i class="fas fa-calendar-plus"></i> Crear Cronogramas Grupales
                </h5>
                <button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
            </div>
            <div class="modal-body">
                <form id="cronogramasGrupalesForm">
                    <div class="alert alert-info">
                        <i class="fas fa-info-circle"></i>
                        <strong>Información:</strong> Se crearán cronogramas para los registros seleccionados sin cronograma.
                    </div>
                    
                    <div class="mb-3">
                        <label class="form-label">Cantidad de Meses:</label>
                        <input type="number" class="form-control" id="cantidad_meses_grupal" name="cantidad_meses_grupal" 
                               value="6" min="1" max="120" required>
                        <div class="form-text">Número de meses para generar el cronograma de pagos para todos los registros seleccionados</div>
                    </div>
                    
                    <div class="mb-3">
                        <label class="form-label">Registros Seleccionados:</label>
                        <div id="listaRegistrosSeleccionados" class="border p-3" style="max-height: 200px; overflow-y: auto;">
                            <!-- Se llena dinámicamente -->
                        </div>
                    </div>
                </form>
            </div>
            <div class="modal-footer">
                <button type="button" class="btn btn-secondary" data-bs-dismiss="modal">
                    <i class="fas fa-times"></i> Cancelar
                </button>
                <button type="button" class="btn btn-success" onclick="procesarCronogramasGrupales()">
                    <i class="fas fa-save"></i> Crear Cronogramas
                </button>
            </div>
        </div>
    </div>
</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    // File input validation
    const fileInput = document.querySelector('input[name="csv_file"]');
    const submitBtn = document.querySelector('button[type="submit"]');
    
    fileInput.addEventListener('change', function() {
        const file = this.files[0];
        if (file) {
            if (file.type !== 'text/csv' && !file.name.endsWith('.csv')) {
                alert('Por favor seleccione un archivo CSV válido');
                this.value = '';
                submitBtn.disabled = true;
            } else {
                submitBtn.disabled = false;
            }
        }
    });
    
    // Pagination enhancement - preserve search and per_page when navigating
    const paginationLinks = document.querySelectorAll('.pagination .page-link');
    paginationLinks.forEach(link => {
        link.addEventListener('click', function(e) {
            // Don't prevent default for actual page links
            if (this.getAttribute('href') && this.getAttribute('href').includes('page=')) {
                // Add loading indicator
                this.innerHTML = '<i class="fas fa-spinner fa-spin"></i>';
            }
        });
    });
    
    // Auto-submit form when per_page changes
    const perPageSelect = document.querySelector('select[name="per_page"]');
    if (perPageSelect) {
        perPageSelect.addEventListener('change', function() {
            // Reset to page 1 when changing records per page
            const pageInput = document.createElement('input');
            pageInput.type = 'hidden';
            pageInput.name = 'page';
            pageInput.value = '1';
            this.form.appendChild(pageInput);
            this.form.submit();
        });
    }
    
    // Auto-submit form when filtro_cronograma changes
    const filtroCronogramaSelect = document.querySelector('select[name="filtro_cronograma"]');
    if (filtroCronogramaSelect) {
        filtroCronogramaSelect.addEventListener('change', function() {
            // Reset to page 1 when changing cronograma filter
            const pageInput = document.createElement('input');
            pageInput.type = 'hidden';
            pageInput.name = 'page';
            pageInput.value = '1';
            this.form.appendChild(pageInput);
            this.form.submit();
        });
    }
});

// Función para exportar ventas a Excel
function exportarVentas() {
    const params = new URLSearchParams(window.location.search);
    // Exporta con filtros actuales pero sin paginación
    params.delete('page');
    params.delete('per_page');
    const url = 'export_ventas_importadas.php?' + params.toString();
    window.location.href = url;
}

// Funciones Cronograma Ventas
function openCronogramaVentasModal(ventaId, clienteNombre, fechaInstalacion) {
    document.getElementById('ventas_id').value = ventaId;
    document.getElementById('ventas_cliente_nombre').value = clienteNombre;
    document.getElementById('ventas_fecha_instalacion').value = fechaInstalacion || '';
    
    fetch('ajax/get_empresa_info_ventas.php', {
        method: 'POST',
        headers: { 'Content-Type': 'application/x-www-form-urlencoded' },
        body: 'venta_id=' + encodeURIComponent(ventaId)
    })
    .then(response => response.json())
    .then(data => {
        if (data.success) {
            const empresaInfo = data.empresa;
            document.getElementById('ventas_dias_inicio_cobro').value = empresaInfo.iniciocobro || '0';
            document.getElementById('ventas_dias_ultimo').value = empresaInfo.diasultimo || '0';
            document.getElementById('ventas_dias_inicio_cobro_hidden').value = empresaInfo.iniciocobro || '0';
            document.getElementById('ventas_dias_ultimo_hidden').value = empresaInfo.diasultimo || '0';
            
            if (fechaInstalacion) {
                const baseDate = new Date(fechaInstalacion);
                const diasUltimo = parseInt(empresaInfo.diasultimo || 0);
                const diasInicioCobro = parseInt(empresaInfo.iniciocobro || 0);
                
                const fechaPago = new Date(baseDate);
                fechaPago.setMonth(fechaPago.getMonth() + 1);
                fechaPago.setDate(fechaPago.getDate() - diasUltimo);
                
                const fechaInicioCobranza = new Date(baseDate);
                fechaInicioCobranza.setMonth(fechaInicioCobranza.getMonth() + 1);
                fechaInicioCobranza.setDate(fechaInicioCobranza.getDate() - diasInicioCobro);
                
                document.getElementById('ventas_fecha_iniciocobranza').value = fechaInicioCobranza.toISOString().split('T')[0];
                document.getElementById('ventas_fechapago').value = fechaPago.toISOString().split('T')[0];
            }
        } else {
            alert('Error al obtener información de la empresa: ' + data.message);
        }
    })
    .catch(error => {
        console.error('Error:', error);
        alert('Error al obtener información de la empresa');
    });
    
    const modal = new bootstrap.Modal(document.getElementById('cronogramaVentasModal'));
    modal.show();
    
    // Agregar event listeners para recalcular fechas cuando cambien los días
    const diasInicioCobroInput = document.getElementById('ventas_dias_inicio_cobro');
    const diasUltimoInput = document.getElementById('ventas_dias_ultimo');
    
    if (diasInicioCobroInput) {
        diasInicioCobroInput.addEventListener('input', recalcularFechasVentas);
        diasInicioCobroInput.addEventListener('change', recalcularFechasVentas);
    }
    
    if (diasUltimoInput) {
        diasUltimoInput.addEventListener('input', recalcularFechasVentas);
        diasUltimoInput.addEventListener('change', recalcularFechasVentas);
    }
}

// Función para recalcular fechas basándose en días editados
function recalcularFechasVentas() {
    const fechaInstalacion = document.getElementById('ventas_fecha_instalacion').value;
    if (!fechaInstalacion) return;
    
    const diasInicioCobro = parseInt(document.getElementById('ventas_dias_inicio_cobro').value || '0');
    const diasUltimo = parseInt(document.getElementById('ventas_dias_ultimo').value || '0');
    
    // Actualizar campos hidden con los valores editados
    document.getElementById('ventas_dias_inicio_cobro_hidden').value = diasInicioCobro;
    document.getElementById('ventas_dias_ultimo_hidden').value = diasUltimo;
    
    const baseDate = new Date(fechaInstalacion);
    
    // Calcular fecha de pago: fecha_instalacion + 1 mes - diasUltimo días
    const fechaPago = new Date(baseDate);
    fechaPago.setMonth(fechaPago.getMonth() + 1);
    fechaPago.setDate(fechaPago.getDate() - diasUltimo);
    
    // Calcular fecha de inicio de cobranza: fecha_instalacion + 1 mes - diasInicioCobro días
    const fechaInicioCobranza = new Date(baseDate);
    fechaInicioCobranza.setMonth(fechaInicioCobranza.getMonth() + 1);
    fechaInicioCobranza.setDate(fechaInicioCobranza.getDate() - diasInicioCobro);
    
    // Actualizar campos de fecha
    document.getElementById('ventas_fecha_iniciocobranza').value = fechaInicioCobranza.toISOString().split('T')[0];
    document.getElementById('ventas_fechapago').value = fechaPago.toISOString().split('T')[0];
}

function generateCronogramaVentas() {
    const form = document.getElementById('cronogramaVentasForm');
    const formData = new FormData(form);
    const cantidadMeses = parseInt(document.getElementById('ventas_cantidad_meses').value);
    if (!cantidadMeses || cantidadMeses < 1 || cantidadMeses > 120) {
        alert('Por favor ingrese un número válido de meses (1-120)');
        return;
    }
    const btn = event.target;
    const originalText = btn.innerHTML;
    btn.innerHTML = '<i class="fas fa-spinner fa-spin"></i> Generando...';
    btn.disabled = true;
    fetch('ajax/generate_cronograma_ventas.php', { method: 'POST', body: formData })
    .then(response => response.json())
    .then(data => {
        if (data.success) {
            alert(`Cronograma generado exitosamente para ${data.meses_generados} meses`);
            const modal = bootstrap.Modal.getInstance(document.getElementById('cronogramaVentasModal'));
            modal.hide();
            location.reload();
        } else {
            alert('Error al generar el cronograma: ' + data.message);
        }
    })
    .catch(error => {
        console.error('Error:', error);
        alert('Error al generar el cronograma');
    })
    .finally(() => {
        btn.innerHTML = originalText;
        btn.disabled = false;
    });
}

function viewCronogramaVentas(ventaId) {
    const modalBody = document.getElementById('cronogramaVentasViewModalBody');
    modalBody.innerHTML = '<div class="text-center py-4"><i class="fas fa-spinner fa-spin fa-2x"></i><br>Cargando cronograma...</div>';
    const modal = new bootstrap.Modal(document.getElementById('cronogramaVentasViewModal'));
    modal.show();
    fetch(`ajax/get_cronograma_ventas.php?id=${ventaId}`)
    .then(response => response.json())
    .then(data => {
        if (data.success) {
            modalBody.innerHTML = data.html;
            // Wire up buttons inside loaded content
            const exportBtn = document.getElementById('ventasExportCronogramaBtn');
            if (exportBtn) {
                exportBtn.addEventListener('click', function(){
                    const id = this.getAttribute('data-venta-id');
                    window.location.href = `ajax/export_cronograma_ventas.php?id=${id}`;
                });
            }
            const aumentarBtn = document.getElementById('ventasAumentarMesesBtn');
            if (aumentarBtn) {
                aumentarBtn.addEventListener('click', function(){
                    openAumentarMesesVentasModal(
                        this.getAttribute('data-venta-id'),
                        this.getAttribute('data-cliente'),
                        this.getAttribute('data-fecha-instalacion')
                    );
                });
            }
            const eliminarBtn = document.getElementById('ventasEliminarUltimaBtn');
            if (eliminarBtn) {
                eliminarBtn.addEventListener('click', function(){
                    eliminarUltimaCuotaVentas(this.getAttribute('data-venta-id'));
                });
            }
        } else {
            modalBody.innerHTML = `<div class=\"alert alert-danger\">Error: ${data.message}</div>`;
        }
    })
    .catch(error => {
        console.error('Error:', error);
        modalBody.innerHTML = '<div class="alert alert-danger">Error al cargar el cronograma</div>';
    });
}

// Modal temporal para aumentar meses (Ventas)
function openAumentarMesesVentasModal(ventaId, clienteNombre, fechaInstalacion) {
    const modalHtml = `
        <div class="modal fade" id="ventasAumentarMesesModal" tabindex="-1" aria-labelledby="ventasAumentarMesesModalLabel" aria-hidden="true">
            <div class="modal-dialog modal-lg">
                <div class="modal-content">
                    <div class="modal-header">
                        <h5 class="modal-title" id="ventasAumentarMesesModalLabel">
                            <i class="fas fa-plus"></i> Aumentar Meses al Cronograma
                        </h5>
                        <button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
                    </div>
                    <div class="modal-body">
                        <form id="ventasCronogramaForm">
                            <input type="hidden" name="venta_id" value="${ventaId}">
                            <input type="hidden" id="ventas_dias_inicio_cobro_hidden" name="dias_inicio_cobro" value="0">
                            <input type="hidden" id="ventas_dias_ultimo_hidden" name="dias_ultimo" value="0">
                            <div class="row mb-3">
                                <div class="col-md-6">
                                    <label class="form-label">Cliente:</label>
                                    <input type="text" class="form-control" value="${clienteNombre || ''}" readonly>
                                </div>
                                <div class="col-md-6">
                                    <label class="form-label">Fecha de Instalación:</label>
                                    <input type="date" class="form-control" id="ventas_fecha_instalacion" value="${fechaInstalacion || ''}" readonly>
                                </div>
                            </div>
                            <div class="row mb-3">
                                <div class="col-md-6">
                                    <label class="form-label">Cantidad de Meses a Agregar:</label>
                                    <input type="number" class="form-control" id="ventas_cantidad_meses" name="cantidad_meses" value="12" min="1" max="120" required>
                                    <div class="form-text">Número de meses para agregar al cronograma existente</div>
                                </div>
                            </div>
                            <div class="alert alert-info">
                                <i class="fas fa-info-circle"></i>
                                <strong>Información:</strong> Se agregarán los meses al final del cronograma existente.
                            </div>
                        </form>
                    </div>
                    <div class="modal-footer">
                        <button type="button" class="btn btn-secondary" data-bs-dismiss="modal">
                            <i class="fas fa-times"></i> Cancelar
                        </button>
                        <button type="button" class="btn btn-warning" id="ventasAumentarMesesSaveBtn">
                            <i class="fas fa-plus"></i> Aumentar Meses
                        </button>
                    </div>
                </div>
            </div>
        </div>`;
    document.body.insertAdjacentHTML('beforeend', modalHtml);
    const modal = new bootstrap.Modal(document.getElementById('ventasAumentarMesesModal'));
    modal.show();
    document.getElementById('ventasAumentarMesesModal').addEventListener('hidden.bs.modal', function(){ this.remove(); });
    document.getElementById('ventasAumentarMesesSaveBtn').addEventListener('click', function(){
        const form = document.getElementById('ventasCronogramaForm');
        const formData = new FormData(form);
        const meses = parseInt(document.getElementById('ventas_cantidad_meses').value);
        if (!meses || meses < 1 || meses > 120) {
            alert('Por favor ingrese un número válido de meses (1-120)');
            return;
        }
        const btn = this;
        const original = btn.innerHTML;
        btn.innerHTML = '<i class="fas fa-spinner fa-spin"></i> Aumentando...';
        btn.disabled = true;
        fetch('ajax/aumentar_meses_cronograma_ventas.php', { method: 'POST', body: formData })
            .then(r => r.json())
            .then(data => {
                if (data.success) {
                    alert(`Se agregaron ${data.meses_agregados} meses al cronograma`);
                    modal.hide();
                    // Refrescar cronograma
                    const ventaIdStr = formData.get('venta_id');
                    if (ventaIdStr) { viewCronogramaVentas(ventaIdStr); }
                } else {
                    alert('Error: ' + (data.message || 'No se pudo aumentar meses'));
                }
            })
            .catch(err => { console.error(err); alert('Error de red'); })
            .finally(() => { btn.innerHTML = original; btn.disabled = false; });
    });
}

function eliminarUltimaCuotaVentas(ventaId) {
    if (!confirm('¿Está seguro de eliminar la última cuota pendiente? Esta acción no se puede deshacer.')) return;
    const form = new FormData();
    form.append('venta_id', ventaId);
    fetch('ajax/eliminar_ultima_cuota_ventas.php', { method: 'POST', body: form })
        .then(r => r.json())
        .then(data => {
            if (data.success) {
                alert('Última cuota eliminada correctamente');
                viewCronogramaVentas(ventaId);
            } else {
                alert('Error al eliminar la cuota: ' + (data.message || ''));
            }
        })
        .catch(err => { console.error(err); alert('Error de red'); });
}

// Función para abrir modal de edición de cronograma (Ventas)
function openEditCronogramaVentasModal(codcronogramaventas, ventaId, currentMonto = null, currentFecha = null, defaultMonto = null) {
    // Crear un modal temporal para editar cronograma
    const modalHtml = `
        <div class="modal fade" id="tempEditCronogramaVentasModal" tabindex="-1" aria-labelledby="tempEditCronogramaVentasModalLabel" aria-hidden="true">
            <div class="modal-dialog">
                <div class="modal-content">
                    <div class="modal-header">
                        <h5 class="modal-title" id="tempEditCronogramaVentasModalLabel">
                            <i class="fas fa-edit"></i> Cobrar Mensualidad
                        </h5>
                        <button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
                    </div>
                    <div class="modal-body">
                        <form id="tempEditCronogramaVentasForm">
                            <input type="hidden" name="codcronogramaventas" value="${codcronogramaventas}">
                            <input type="hidden" name="venta_id" value="${ventaId}">
                            <input type="hidden" id="temp_default_monto" value="${defaultMonto || ''}">
                            <div class="mb-3">
                                <label class="form-label">Monto (S/)</label>
                                <input type="number" step="0.01" min="0" class="form-control" name="monto" id="temp_monto" 
                                       value="${currentMonto || ''}" placeholder="Monto a cobrar">
                                <div class="form-text">Si lo dejas vacío, se tomará del plan de la venta.</div>
                            </div>
                            <div class="mb-3">
                                <label class="form-label">Fecha pagada</label>
                                <input type="date" class="form-control" name="pagadofecha" id="temp_pagadofecha" 
                                       value="${currentFecha || ''}">
                                <div class="form-text">Si lo dejas vacío, se usará la fecha actual.</div>
                            </div>
                        </form>
                        <div id="tempCronogramaVentasAlert" class="alert d-none" role="alert"></div>
                    </div>
                    <div class="modal-footer">
                        <button type="button" class="btn btn-secondary" data-bs-dismiss="modal">
                            <i class="fas fa-times"></i> Cerrar
                        </button>
                        <button type="button" class="btn btn-primary" id="tempCronogramaVentasSaveBtn">
                            <i class="fas fa-save"></i> Guardar
                        </button>
                    </div>
                </div>
            </div>
        </div>`;
    
    // Agregar el modal al DOM
    document.body.insertAdjacentHTML('beforeend', modalHtml);
    
    // Mostrar el modal
    const modal = new bootstrap.Modal(document.getElementById('tempEditCronogramaVentasModal'));
    modal.show();
    
    // Event listener para guardar
    document.getElementById('tempCronogramaVentasSaveBtn').addEventListener('click', function() {
        const form = document.getElementById('tempEditCronogramaVentasForm');
        const formData = new FormData(form);
        const alertBox = document.getElementById('tempCronogramaVentasAlert');
        
        // Validación: monto >= default
        const defaultMontoStr = document.getElementById('temp_default_monto').value || '';
        const inputMontoStr = document.getElementById('temp_monto').value || '';
        
        if (inputMontoStr !== '' && defaultMontoStr !== '') {
            const defaultMonto = parseFloat(defaultMontoStr);
            const inputMonto = parseFloat(inputMontoStr);
            if (!isNaN(defaultMonto) && !isNaN(inputMonto) && inputMonto < defaultMonto) {
                alertBox.textContent = `El monto ingresado (S/ ${inputMonto.toFixed(2)}) no puede ser menor al monto por defecto (S/ ${defaultMonto.toFixed(2)}).`;
                alertBox.classList.remove('d-none');
                alertBox.classList.add('alert-danger');
                return;
            }
        }
        
        const btn = this;
        const originalText = btn.innerHTML;
        btn.innerHTML = '<i class="fas fa-spinner fa-spin"></i> Guardando...';
        btn.disabled = true;
        
        fetch('ajax/update_cronograma_ventas.php', {
            method: 'POST',
            body: formData
        })
        .then(r => r.json())
        .then(data => {
            if (data.success) {
                alertBox.textContent = 'Actualizado correctamente';
                alertBox.classList.remove('d-none');
                alertBox.classList.add('alert-success');
                
                // Refrescar cronograma
                setTimeout(() => {
                    modal.hide();
                    viewCronogramaVentas(ventaId);
                }, 1000);
            } else {
                alertBox.textContent = data.message || 'Error al actualizar';
                alertBox.classList.remove('d-none');
                alertBox.classList.add('alert-danger');
            }
        })
        .catch(err => {
            console.error(err);
            alertBox.textContent = 'Error de red o del servidor';
            alertBox.classList.remove('d-none');
            alertBox.classList.add('alert-danger');
        })
        .finally(() => {
            btn.innerHTML = originalText;
            btn.disabled = false;
        });
    });
    
    // Limpiar el modal cuando se cierre
    document.getElementById('tempEditCronogramaVentasModal').addEventListener('hidden.bs.modal', function() {
        this.remove();
    });
}

// Función para abrir modal de notas (Ventas)
function openNotasVentasModal(codcronogramaventas, ventaId, cuotaNumero) {
    // Crear un modal temporal para notas
    const modalHtml = `
        <div class="modal fade" id="tempNotasVentasModal" tabindex="-1" aria-labelledby="tempNotasVentasModalLabel" aria-hidden="true">
            <div class="modal-dialog modal-lg">
                <div class="modal-content">
                    <div class="modal-header">
                        <h5 class="modal-title" id="tempNotasVentasModalLabel">
                            <i class="fas fa-comment"></i> Notas de Cuota ${cuotaNumero}
                        </h5>
                        <button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
                    </div>
                    <div class="modal-body">
                        <div id="tempNotasVentasContainer">
                            <div class="text-center py-4">
                                <i class="fas fa-spinner fa-spin fa-2x"></i><br>
                                <p class="text-muted">Cargando notas...</p>
                            </div>
                        </div>
                        
                        <hr>
                        <form id="tempNuevaNotaVentasForm">
                            <input type="hidden" name="codcronogramaventas" value="${codcronogramaventas}">
                            <input type="hidden" name="venta_id" value="${ventaId}">
                            <div class="mb-3">
                                <label class="form-label">Nueva Nota</label>
                                <textarea class="form-control" name="nota" rows="3" 
                                          placeholder="Escriba su nota aquí..." maxlength="300" required></textarea>
                                <div class="form-text">Máximo 300 caracteres</div>
                            </div>
                        </form>
                        <div id="tempNotaVentasAlert" class="alert d-none" role="alert"></div>
                    </div>
                    <div class="modal-footer">
                        <button type="button" class="btn btn-secondary" data-bs-dismiss="modal">
                            <i class="fas fa-times"></i> Cerrar
                        </button>
                        <button type="button" class="btn btn-primary" id="tempGuardarNotaVentasBtn">
                            <i class="fas fa-save"></i> Guardar Nota
                        </button>
                    </div>
                </div>
            </div>
        </div>`;
    
    // Agregar el modal al DOM
    document.body.insertAdjacentHTML('beforeend', modalHtml);
    
    // Mostrar el modal
    const modal = new bootstrap.Modal(document.getElementById('tempNotasVentasModal'));
    modal.show();
    
    // Cargar las notas existentes
    cargarNotasVentas(codcronogramaventas);
    
    // Event listener para guardar nota
    document.getElementById('tempGuardarNotaVentasBtn').addEventListener('click', function() {
        const form = document.getElementById('tempNuevaNotaVentasForm');
        const formData = new FormData(form);
        const alertBox = document.getElementById('tempNotaVentasAlert');
        
        const nota = form.querySelector('textarea[name="nota"]').value.trim();
        if (!nota) {
            alertBox.textContent = 'Por favor escriba una nota';
            alertBox.classList.remove('d-none');
            alertBox.classList.add('alert-danger');
            return;
        }
        
        const btn = this;
        const originalText = btn.innerHTML;
        btn.innerHTML = '<i class="fas fa-spinner fa-spin"></i> Guardando...';
        btn.disabled = true;
        
        fetch('ajax/save_nota_cronograma_ventas.php', {
            method: 'POST',
            body: formData
        })
        .then(r => r.json())
        .then(data => {
            if (data.success) {
                alertBox.textContent = 'Nota guardada correctamente';
                alertBox.classList.remove('d-none');
                alertBox.classList.add('alert-success');
                
                // Limpiar el formulario
                form.querySelector('textarea[name="nota"]').value = '';
                
                // Recargar las notas
                cargarNotasVentas(codcronogramaventas);
            } else {
                alertBox.textContent = data.message || 'Error al guardar la nota';
                alertBox.classList.remove('d-none');
                alertBox.classList.add('alert-danger');
            }
        })
        .catch(err => {
            console.error(err);
            alertBox.textContent = 'Error de red o del servidor';
            alertBox.classList.remove('d-none');
            alertBox.classList.add('alert-danger');
        })
        .finally(() => {
            btn.innerHTML = originalText;
            btn.disabled = false;
        });
    });
    
    // Limpiar el modal cuando se cierre
    document.getElementById('tempNotasVentasModal').addEventListener('hidden.bs.modal', function() {
        this.remove();
    });
}

// Función para cargar notas existentes (Ventas)
function cargarNotasVentas(codcronogramaventas) {
    fetch(`ajax/get_notas_cronograma_ventas.php?codcronogramaventas=${codcronogramaventas}`)
        .then(response => response.json())
        .then(data => {
            if (data.success) {
                document.getElementById('tempNotasVentasContainer').innerHTML = data.html;
            } else {
                document.getElementById('tempNotasVentasContainer').innerHTML = 
                    '<div class="alert alert-danger">Error al cargar las notas: ' + data.message + '</div>';
            }
        })
        .catch(error => {
            console.error('Error:', error);
            document.getElementById('tempNotasVentasContainer').innerHTML = 
                '<div class="alert alert-danger">Error al cargar las notas</div>';
        });
}

// Función para alternar todos los checkboxes
function toggleAllCheckboxes() {
    const selectAll = document.getElementById('selectAll');
    const checkboxes = document.querySelectorAll('.venta-checkbox');
    
    checkboxes.forEach(checkbox => {
        checkbox.checked = selectAll.checked;
    });
    
    updateSelectedCount();
}

// Función para actualizar el contador de registros seleccionados
function updateSelectedCount() {
    const checkboxes = document.querySelectorAll('.venta-checkbox:checked');
    const count = checkboxes.length;
    const accionesMultiples = document.getElementById('accionesMultiples');
    const registrosSeleccionados = document.getElementById('registrosSeleccionados');
    
    if (count > 0) {
        accionesMultiples.style.display = 'block';
        registrosSeleccionados.textContent = count + ' registro' + (count !== 1 ? 's' : '') + ' seleccionado' + (count !== 1 ? 's' : '');
    } else {
        accionesMultiples.style.display = 'none';
    }
    
    // Actualizar el estado del checkbox "Seleccionar todo"
    const selectAll = document.getElementById('selectAll');
    const totalCheckboxes = document.querySelectorAll('.venta-checkbox').length;
    selectAll.checked = count === totalCheckboxes && totalCheckboxes > 0;
    selectAll.indeterminate = count > 0 && count < totalCheckboxes;
}

// Función para eliminar registros seleccionados
function eliminarSeleccionados() {
    const checkboxes = document.querySelectorAll('.venta-checkbox:checked');
    const ids = Array.from(checkboxes).map(cb => cb.value);
    
    if (ids.length === 0) {
        alert('Por favor seleccione al menos un registro para eliminar');
        return;
    }
    
    if (!confirm(`¿Está seguro de eliminar ${ids.length} registro(s) seleccionado(s)? Esta acción no se puede deshacer.`)) {
        return;
    }
    
    // Mostrar loading
    const btn = event.target;
    const originalText = btn.innerHTML;
    btn.innerHTML = '<i class="fas fa-spinner fa-spin"></i> Eliminando...';
    btn.disabled = true;
    
    fetch('ajax/eliminar_ventas_multiple.php', {
        method: 'POST',
        headers: {
            'Content-Type': 'application/x-www-form-urlencoded',
        },
        body: 'ids=' + encodeURIComponent(JSON.stringify(ids))
    })
    .then(response => response.json())
    .then(data => {
        if (data.success) {
            alert(`Se eliminaron ${data.eliminados} registro(s) correctamente`);
            location.reload();
        } else {
            alert('Error al eliminar registros: ' + data.message);
        }
    })
    .catch(error => {
        console.error('Error:', error);
        alert('Error al eliminar registros');
    })
    .finally(() => {
        btn.innerHTML = originalText;
        btn.disabled = false;
    });
}

// Función para abrir el modal de cronogramas grupales
function crearCronogramasGrupales() {
    const checkboxes = document.querySelectorAll('.venta-checkbox:checked');
    const ids = Array.from(checkboxes).map(cb => cb.value);
    
    if (ids.length === 0) {
        alert('Por favor seleccione al menos un registro sin cronograma');
        return;
    }
    
    // Obtener información de los registros seleccionados
    const registrosInfo = [];
    checkboxes.forEach(checkbox => {
        const row = checkbox.closest('tr');
        const id = checkbox.value;
        const cliente = row.cells[2].textContent.trim();
        const documento = row.cells[3].textContent.trim();
        registrosInfo.push({ id, cliente, documento });
    });
    
    // Llenar la lista de registros seleccionados
    const listaRegistros = document.getElementById('listaRegistrosSeleccionados');
    listaRegistros.innerHTML = registrosInfo.map(reg => 
        `<div class="d-flex justify-content-between align-items-center mb-2">
            <div>
                <strong>ID: ${reg.id}</strong> - ${reg.cliente}
                <br><small class="text-muted">${reg.documento}</small>
            </div>
        </div>`
    ).join('');
    
    // Mostrar el modal
    const modal = new bootstrap.Modal(document.getElementById('cronogramasGrupalesModal'));
    modal.show();
}

// Función para procesar cronogramas grupales
function procesarCronogramasGrupales() {
    const checkboxes = document.querySelectorAll('.venta-checkbox:checked');
    const ids = Array.from(checkboxes).map(cb => cb.value);
    const cantidadMeses = document.getElementById('cantidad_meses_grupal').value;
    
    if (ids.length === 0) {
        alert('Por favor seleccione al menos un registro');
        return;
    }
    
    if (!cantidadMeses || cantidadMeses < 1 || cantidadMeses > 120) {
        alert('Por favor ingrese un número válido de meses (1-120)');
        return;
    }
    
    if (!confirm(`¿Está seguro de crear cronogramas de ${cantidadMeses} meses para ${ids.length} registro(s)?`)) {
        return;
    }
    
    // Mostrar loading
    const btn = event.target;
    const originalText = btn.innerHTML;
    btn.innerHTML = '<i class="fas fa-spinner fa-spin"></i> Procesando...';
    btn.disabled = true;
    
    // Debug: Log de los IDs que se van a enviar
    console.log('IDs a enviar:', ids);
    console.log('Cantidad de meses:', cantidadMeses);
    
    fetch('ajax/crear_cronogramas_grupales_ventas.php', {
        method: 'POST',
        headers: {
            'Content-Type': 'application/x-www-form-urlencoded',
        },
        body: 'ids=' + encodeURIComponent(JSON.stringify(ids)) + '&cantidad_meses=' + encodeURIComponent(cantidadMeses)
    })
    .then(response => response.json())
    .then(data => {
        // Debug: Log de la respuesta del servidor
        console.log('Respuesta del servidor:', data);
        console.log('Debug info:', data.debug);
        
        if (data.success) {
            if (data.procesados > 0) {
                let successMsg = `Se crearon cronogramas para ${data.procesados} de ${data.total} registro(s) correctamente`;
                if (data.errores && data.errores.length > 0) {
                    successMsg += `\n\nErrores encontrados:\n${data.errores.join('\n')}`;
                }
                alert(successMsg);
                // Cerrar el modal
                const modal = bootstrap.Modal.getInstance(document.getElementById('cronogramasGrupalesModal'));
                modal.hide();
                // Recargar la página
                location.reload();
            } else {
                // Mostrar errores específicos
                let errorMsg = `No se pudieron crear cronogramas. Errores:\n`;
                if (data.errores && data.errores.length > 0) {
                    errorMsg += data.errores.join('\n');
                } else {
                    errorMsg += 'No se encontraron errores específicos';
                }
                alert(errorMsg);
            }
        } else {
            alert('Error al crear cronogramas: ' + data.message);
        }
    })
    .catch(error => {
        console.error('Error:', error);
        alert('Error al crear cronogramas grupales');
    })
    .finally(() => {
        btn.innerHTML = originalText;
        btn.disabled = false;
    });
}
</script>

<?php
include_once 'includes/footer.php';
?>
