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

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

try {
    // Iniciar sesión para conocer el usuario y su 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 clientes duplicados
    $query = "SELECT 
                nro_documento,
                tipo_documento,
                COUNT(*) as cantidad_duplicados,
                GROUP_CONCAT(CONCAT(nombres_ap_raz_soc, ' (ID: ', id, ')') SEPARATOR ' | ') as clientes_info,
                GROUP_CONCAT(DISTINCT agente SEPARATOR ', ') as agentes,
                GROUP_CONCAT(DISTINCT estado SEPARATOR ', ') as estados,
                MIN(fecha_creacion) as primera_fecha,
                MAX(fecha_creacion) as ultima_fecha
              FROM timportventas 
              WHERE nro_documento IS NOT NULL 
                AND nro_documento != '' 
                AND tipo_documento IS NOT NULL 
                AND tipo_documento != ''";
    $params = [];
    if ($codempresaUsuario) {
        $query .= " AND codempresa = ?";
        $params[] = $codempresaUsuario;
    }
    $query .= "
              GROUP BY nro_documento, tipo_documento 
              HAVING COUNT(*) > 1 
              ORDER BY cantidad_duplicados DESC, nro_documento ASC";
    
    $stmt = $conn->prepare($query);
    $stmt->execute($params);
    $duplicados = $stmt->fetchAll(PDO::FETCH_ASSOC);
    
} catch(PDOException $e) {
    die("Error al obtener los datos: " . $e->getMessage());
}

// Configurar headers para descarga de Excel
$filename = 'Clientes_Duplicados_Ventas_' . date('Y-m-d_H-i-s') . '.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>Clientes Duplicados Ventas</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: #FF9800; text-align: center; margin-bottom: 20px;">CLIENTES CON DOCUMENTOS DUPLICADOS - VENTAS</h2>';

if (!empty($duplicados)) {
    // Información resumen
    $totalDuplicados = count($duplicados);
    $totalRegistros = array_sum(array_column($duplicados, 'cantidad_duplicados'));
    $maxDuplicados = max(array_column($duplicados, 'cantidad_duplicados'));
    
    // Tabla de resumen
    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: #FF9800; color: white; font-size: 14px;">RESUMEN DE DUPLICADOS</td>';
    echo '</tr>';
    
    echo '<tr>';
    echo '<td style="font-weight: bold; width: 25%;">Documentos Duplicados:</td>';
    echo '<td style="width: 25%; text-align: center; font-weight: bold;">' . $totalDuplicados . '</td>';
    echo '<td style="font-weight: bold; width: 25%;">Total de Registros:</td>';
    echo '<td style="width: 25%; text-align: right; font-weight: bold;">' . $totalRegistros . '</td>';
    echo '</tr>';
    
    echo '<tr style="background-color: #fff3cd;">';
    echo '<td style="font-weight: bold;">Máximo Duplicados:</td>';
    echo '<td style="text-align: center; font-weight: bold;">' . $maxDuplicados . '</td>';
    echo '<td style="font-weight: bold;">Fecha de Exportación:</td>';
    echo '<td style="text-align: right; font-weight: bold;">' . date('d/m/Y H:i:s') . '</td>';
    echo '</tr>';
    
    echo '</table>';
    
    // Tabla detallada de duplicados
    echo '<h3 style="color: #FF9800; margin-bottom: 15px;">DETALLE DE DUPLICADOS</h3>';
    echo '<table border="1" cellpadding="3" cellspacing="0" style="width: 100%;">';
    
    // Encabezados
    echo '<tr style="background-color: #FF9800; color: white; font-weight: bold; text-align: center;">';
    echo '<td style="width: 8%;">#</td>';
    echo '<td style="width: 12%;">Tipo Doc.</td>';
    echo '<td style="width: 15%;">Número Doc.</td>';
    echo '<td style="width: 8%;">Cantidad</td>';
    echo '<td style="width: 35%;">Clientes (ID)</td>';
    echo '<td style="width: 12%;">Agentes</td>';
    echo '<td style="width: 10%;">Estados</td>';
    echo '</tr>';
    
    // Datos de los duplicados
    $contador = 1;
    foreach ($duplicados as $duplicado) {
        // Determinar color de fila según cantidad de duplicados
        $rowColor = '';
        if ($duplicado['cantidad_duplicados'] >= 5) {
            $rowColor = 'background-color: #ffebee;'; // Rojo claro para muchos duplicados
        } elseif ($duplicado['cantidad_duplicados'] >= 3) {
            $rowColor = 'background-color: #fff3e0;'; // Naranja claro para duplicados moderados
        } else {
            $rowColor = 'background-color: #f3e5f5;'; // Púrpura claro para pocos duplicados
        }
        
        echo '<tr style="' . $rowColor . '">';
        echo '<td style="text-align: center; font-weight: bold;">' . $contador . '</td>';
        echo '<td style="text-align: center;">' . htmlspecialchars($duplicado['tipo_documento']) . '</td>';
        echo '<td style="text-align: center; font-weight: bold;">' . htmlspecialchars($duplicado['nro_documento']) . '</td>';
        echo '<td style="text-align: center; font-weight: bold; color: #d32f2f;">' . $duplicado['cantidad_duplicados'] . '</td>';
        echo '<td style="font-size: 11px;">' . htmlspecialchars($duplicado['clientes_info']) . '</td>';
        echo '<td style="text-align: center; font-size: 11px;">' . htmlspecialchars($duplicado['agentes'] ?: '-') . '</td>';
        echo '<td style="text-align: center; font-size: 11px;">' . htmlspecialchars($duplicado['estados'] ?: '-') . '</td>';
        echo '</tr>';
        $contador++;
    }
    
    echo '</table>';
    
    // Tabla de estadísticas por tipo de documento
    echo '<h3 style="color: #FF9800; margin-top: 30px; margin-bottom: 15px;">ESTADÍSTICAS POR TIPO DE DOCUMENTO</h3>';
    echo '<table border="1" cellpadding="5" cellspacing="0" style="width: 100%;">';
    
    // Agrupar por tipo de documento
    $statsPorTipo = [];
    foreach ($duplicados as $duplicado) {
        $tipo = $duplicado['tipo_documento'];
        if (!isset($statsPorTipo[$tipo])) {
            $statsPorTipo[$tipo] = ['cantidad' => 0, 'registros' => 0];
        }
        $statsPorTipo[$tipo]['cantidad']++;
        $statsPorTipo[$tipo]['registros'] += $duplicado['cantidad_duplicados'];
    }
    
    // Encabezados de estadísticas
    echo '<tr style="background-color: #2196F3; color: white; font-weight: bold; text-align: center;">';
    echo '<td style="width: 30%;">Tipo de Documento</td>';
    echo '<td style="width: 20%;">Documentos Duplicados</td>';
    echo '<td style="width: 20%;">Total de Registros</td>';
    echo '<td style="width: 30%;">Promedio por Documento</td>';
    echo '</tr>';
    
    // Datos de estadísticas
    foreach ($statsPorTipo as $tipo => $stats) {
        $promedio = round($stats['registros'] / $stats['cantidad'], 2);
        echo '<tr style="background-color: #e3f2fd;">';
        echo '<td style="font-weight: bold;">' . htmlspecialchars($tipo) . '</td>';
        echo '<td style="text-align: center; font-weight: bold;">' . $stats['cantidad'] . '</td>';
        echo '<td style="text-align: center; font-weight: bold;">' . $stats['registros'] . '</td>';
        echo '<td style="text-align: center; font-weight: bold;">' . $promedio . '</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 documentos duplicados:</strong> ' . $totalDuplicados . '</p>';
    echo '<p><strong>Total de registros afectados:</strong> ' . $totalRegistros . '</p>';
    echo '<p><strong>Máximo duplicados por documento:</strong> ' . $maxDuplicados . '</p>';
    echo '</div>';
} else {
    echo '<div style="text-align: center; padding: 20px; color: #666;">';
    echo '<p>No se encontraron documentos duplicados</p>';
    echo '</div>';
}

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

exit();
?>
