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

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

// Obtener parámetros
$equipmentId = isset($_GET['id']) ? intval($_GET['id']) : 0;

if (!$equipmentId) {
    die("ID de equipo no válido");
}

try {
    // Iniciar sesión para validar acceso por empresa
    if (session_status() === PHP_SESSION_NONE) {
        session_start();
    }
    $codempresaUsuario = null;
    if (isset($_SESSION['user']['codempleado'])) {
        $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'];
        }
    }
    // Query para obtener información del equipo
    if ($codempresaUsuario) {
        $equipo_query = "SELECT * FROM timportequipos WHERE id = ? AND codempresa = ?";
        $equipo_stmt = $conn->prepare($equipo_query);
        $equipo_stmt->execute([$equipmentId, $codempresaUsuario]);
    } else {
        // Si por alguna razón no se obtuvo la empresa, mantener comportamiento pero es preferible restringir
        $equipo_query = "SELECT * FROM timportequipos WHERE id = ?";
        $equipo_stmt = $conn->prepare($equipo_query);
        $equipo_stmt->execute([$equipmentId]);
    }
    $equipo = $equipo_stmt->fetch(PDO::FETCH_ASSOC);
    
    if (!$equipo) {
        die("Equipo no encontrado");
    }
    
    // Query para obtener el cronograma
    $cronograma_query = "SELECT * FROM tcronogramaequipo WHERE ID = ? ORDER BY fechapago ASC, nropago ASC";
    $cronograma_stmt = $conn->prepare($cronograma_query);
    $cronograma_stmt->execute([$equipmentId]);
    $cronograma = $cronograma_stmt->fetchAll(PDO::FETCH_ASSOC);
    
} catch(PDOException $e) {
    die("Error al obtener los datos: " . $e->getMessage());
}

// Configurar headers para descarga de Excel
$filename = 'Cronograma_' . preg_replace('/[^a-zA-Z0-9_-]/', '_', $equipo['nombres_ap_raz_soc']) . '_' . date('Y-m-d') . '.xls';

// Headers específicos para Excel
header('Content-Type: application/vnd.ms-excel');
header('Content-Disposition: attachment; filename="' . $filename . '"');
header('Cache-Control: no-cache, must-revalidate');
header('Expires: 0');
header('Pragma: no-cache');

// BOM para UTF-8
echo "\xEF\xBB\xBF";

// Crear el archivo Excel usando formato HTML que Excel interpreta mejor
echo '<html xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:x="urn:schemas-microsoft-com:office:excel" xmlns="http://www.w3.org/TR/REC-html40">';
echo '<head>';
echo '<meta http-equiv="Content-Type" content="text/html; charset=utf-8">';
echo '<!--[if gte mso 9]><xml><x:ExcelWorkbook><x:ExcelWorksheets><x:ExcelWorksheet><x:Name>Cronograma de Pagos</x:Name><x:WorksheetOptions><x:DefaultRowHeight>285</x:DefaultRowHeight></x:WorksheetOptions></x:ExcelWorksheet></x:ExcelWorksheets></x:ExcelWorkbook></xml><![endif]-->';
echo '</head>';
echo '<body>';

// Título principal
echo '<h2 style="color: #2d7a3d; text-align: center; margin-bottom: 20px;">CRONOGRAMA DE PAGOS</h2>';

// Información del cliente en tabla
echo '<table border="1" cellpadding="5" cellspacing="0" style="margin-bottom: 20px; width: 100%;">';
echo '<tr style="background-color: #f8f9fa; font-weight: bold;">';
echo '<td colspan="4" style="text-align: center; background-color: #2d7a3d; color: white; font-size: 14px;">INFORMACIÓN DEL CLIENTE</td>';
echo '</tr>';

echo '<tr>';
echo '<td style="font-weight: bold; width: 20%;">Cliente:</td>';
echo '<td style="width: 30%;">' . htmlspecialchars($equipo['nombres_ap_raz_soc']) . '</td>';
echo '<td style="font-weight: bold; width: 20%;">Documento:</td>';
echo '<td style="width: 30%;">' . htmlspecialchars($equipo['tipo_documento'] . ': ' . $equipo['nro_documento']) . '</td>';
echo '</tr>';

echo '<tr>';
echo '<td style="font-weight: bold;">Agente:</td>';
echo '<td>' . htmlspecialchars($equipo['agente'] ?: '-') . '</td>';
echo '<td style="font-weight: bold;">Operador:</td>';
echo '<td>' . htmlspecialchars($equipo['operador_actual'] ?: '-') . '</td>';
echo '</tr>';

echo '<tr>';
echo '<td style="font-weight: bold;">Plan:</td>';
echo '<td>' . htmlspecialchars($equipo['plan_a_evaluar'] ?: '-') . '</td>';
echo '<td style="font-weight: bold;">Estado:</td>';
echo '<td>' . htmlspecialchars($equipo['estado'] ?: '-') . '</td>';
echo '</tr>';

if ($equipo['numero_celular']) {
    echo '<tr>';
    echo '<td style="font-weight: bold;">Teléfono:</td>';
    echo '<td>' . htmlspecialchars($equipo['numero_celular']) . '</td>';
    echo '<td style="font-weight: bold;">Correo:</td>';
    echo '<td>' . htmlspecialchars($equipo['correo'] ?: '-') . '</td>';
    echo '</tr>';
}

echo '</table>';

if (!empty($cronograma)) {
    // Tabla del cronograma
    echo '<h3 style="color: #2d7a3d; margin-bottom: 15px;">DETALLE DE CUOTAS</h3>';
    echo '<table border="1" cellpadding="3" cellspacing="0" style="width: 100%;">';
    
    // Encabezados del cronograma
    echo '<tr style="background-color: #4CAF50; color: white; font-weight: bold; text-align: center;">';
    echo '<td style="width: 10%;">Nro. Pago</td>';
    echo '<td style="width: 15%;">Fecha Pago</td>';
    echo '<td style="width: 15%;">Monto (S/)</td>';
    echo '<td style="width: 15%;">Estado</td>';
    echo '<td style="width: 15%;">Fecha Pagado</td>';
    echo '<td style="width: 30%;">Observaciones</td>';
    echo '</tr>';
    
    // Datos del cronograma
    $totalMonto = 0;
    $montoPagado = 0;
    $montoPendiente = 0;
    $cuotasPagadas = 0;
    $cuotasPendientes = 0;
    
    foreach ($cronograma as $cuota) {
        $nroPago = $cuota['nropago'] ? substr($cuota['nropago'], -2) : '';
        $fechaPago = $cuota['fechapago'] ? date('d/m/Y', strtotime($cuota['fechapago'])) : '';
        $monto = number_format($cuota['monto'], 2);
        $estado = $cuota['estado'] ?: '';
        $fechaPagado = $cuota['pagadofecha'] ? date('d/m/Y', strtotime($cuota['pagadofecha'])) : '';
        $observaciones = '';
        
        // Calcular totales
        $totalMonto += $cuota['monto'];
        if (strtoupper($estado) === 'PAGADO') {
            $montoPagado += $cuota['monto'];
            $cuotasPagadas++;
        } else {
            $montoPendiente += $cuota['monto'];
            $cuotasPendientes++;
        }
        
        // Determinar color de fila según estado
        $rowColor = '';
        if (strtoupper($estado) === 'PAGADO') {
            $rowColor = 'background-color: #d4edda;';
        } elseif (strtoupper($estado) === 'PENDIENTE') {
            $rowColor = 'background-color: #fff3cd;';
        }
        
        echo '<tr style="' . $rowColor . '">';
        echo '<td style="text-align: center; font-weight: bold;">' . $nroPago . '</td>';
        echo '<td style="text-align: center;">' . $fechaPago . '</td>';
        echo '<td style="text-align: right; font-weight: bold;">S/ ' . $monto . '</td>';
        echo '<td style="text-align: center;">' . $estado . '</td>';
        echo '<td style="text-align: center;">' . $fechaPagado . '</td>';
        echo '<td>' . $observaciones . '</td>';
        echo '</tr>';
    }
    
    // Filas de totales
    echo '<tr style="background-color: #e8f5e8; font-weight: bold; font-size: 12px;">';
    echo '<td colspan="2" style="text-align: center;">TOTAL GENERAL</td>';
    echo '<td style="text-align: right;">S/ ' . number_format($totalMonto, 2) . '</td>';
    echo '<td colspan="3"></td>';
    echo '</tr>';
    
    echo '<tr style="background-color: #d4edda; font-weight: bold; font-size: 12px;">';
    echo '<td colspan="2" style="text-align: center;">PAGADO (' . $cuotasPagadas . ' cuotas)</td>';
    echo '<td style="text-align: right;">S/ ' . number_format($montoPagado, 2) . '</td>';
    echo '<td colspan="3"></td>';
    echo '</tr>';
    
    echo '<tr style="background-color: #fff3cd; font-weight: bold; font-size: 12px;">';
    echo '<td colspan="2" style="text-align: center;">PENDIENTE (' . $cuotasPendientes . ' cuotas)</td>';
    echo '<td style="text-align: right;">S/ ' . number_format($montoPendiente, 2) . '</td>';
    echo '<td colspan="3"></td>';
    echo '</tr>';
    
    echo '</table>';
    
    // Información adicional
    echo '<div style="margin-top: 20px; font-size: 11px; color: #666;">';
    echo '<p><strong>Fecha de exportación:</strong> ' . date('d/m/Y H:i:s') . '</p>';
    echo '<p><strong>Total de cuotas:</strong> ' . count($cronograma) . ' | <strong>Pagadas:</strong> ' . $cuotasPagadas . ' | <strong>Pendientes:</strong> ' . $cuotasPendientes . '</p>';
    echo '</div>';
} else {
    echo '<div style="text-align: center; padding: 20px; color: #666;">';
    echo '<p>No hay cronograma de pagos registrado para este cliente</p>';
    echo '</div>';
}

echo '</body>';
echo '</html>';

exit();
?>
