<?php
require_once('conecta.php');
mysqli_set_charset($conecta, "utf8");

if (session_status() == PHP_SESSION_NONE) { session_start(); }
$usuario_imprime = isset($_SESSION['usuario']) ? $_SESSION['usuario'] : 'Admin';




// Tus variables existentes
$desde = (isset($_POST['desde_fecha']) && !empty($_POST['desde_fecha'])) ? mysqli_real_escape_string($conecta, $_POST['desde_fecha']) : date('Y-m-d');
$hasta = (isset($_POST['hasta_fecha']) && !empty($_POST['hasta_fecha'])) ? mysqli_real_escape_string($conecta, $_POST['hasta_fecha']) : date('Y-m-d');

// Formateo a DD/MM/AA
$desde_formateado = date("d/m/y", strtotime($desde));
$hasta_formateado = date("d/m/y", strtotime($hasta));

// 1. Obtener tipos de cuenta dinámicos
$query_tipos = mysqli_query($conecta, "SELECT nombre FROM tipo_cuenta");
$tipos = array();
while ($row = mysqli_fetch_assoc($query_tipos)) { $tipos[] = $row['nombre']; }

function generarSelect($tabla, $tipos) {
    $sql = "";
    foreach ($tipos as $nom) {
        $campo = ($tabla == 'cobro') ? 'cb.importe_cobro' : 'dg.importe';
        $sql .= "SUM(CASE WHEN tc.nombre = '$nom' THEN $campo ELSE 0 END) AS '$nom', ";
    }
    return rtrim($sql, ", ");
}

// 2. Consultas unificadas
$sql_v = "SELECT c.denominacion, ".generarSelect('cobro', $tipos).", SUM(cb.importe_cobro) AS total_cta FROM cobro cb JOIN cuenta c ON cb.idcuenta = c.idcuenta JOIN tipo_cuenta tc ON cb.idtipo_cuenta = tc.idtipo_cuenta WHERE cb.anulado = 'NO' AND cb.fecha BETWEEN '$desde' AND '$hasta' GROUP BY c.denominacion";
$sql_g = "SELECT c.denominacion, ".generarSelect('det_gasto', $tipos).", SUM(dg.importe) AS total_cta FROM det_gasto dg JOIN gasto g ON dg.idgasto = g.idgasto JOIN cuenta c ON dg.idcuenta = c.idcuenta JOIN tipo_cuenta tc ON dg.idtipo_cuenta = tc.idtipo_cuenta WHERE g.anulado = 'NO' AND dg.anulado = 'NO' AND g.fecha BETWEEN '$desde' AND '$hasta' GROUP BY c.denominacion";

$res_ventas = mysqli_query($conecta, $sql_v);
$res_gastos = mysqli_query($conecta, $sql_g);

// 3. Procesar saldos generales
$saldos = array();
while ($f = mysqli_fetch_assoc($res_ventas)) { $saldos[$f['denominacion']]['ingreso'] = $f['total_cta']; }
mysqli_data_seek($res_ventas, 0);
while ($f = mysqli_fetch_assoc($res_gastos)) { $saldos[$f['denominacion']]['egreso'] = (isset($saldos[$f['denominacion']]['egreso']) ? $saldos[$f['denominacion']]['egreso'] : 0) + $f['total_cta']; }
?>
<!DOCTYPE html>
<html lang="es">
<head><meta charset="UTF-8">
<style>
    body { font-family: Arial; font-size: 11px; }
    table { width: 100%; border-collapse: collapse; margin-bottom: 20px; }
    th { background: #333; color: #fff; padding: 5px; }
    td { border: 1px solid #ccc; padding: 5px; text-align: right; }
    .total { font-weight: bold; background: #eee; }
</style></head>
<body>
    <h2>Resumen Financiero (<?php echo "$desde_formateado al $hasta_formateado"; ?>)</h2>
    
    <h3>Detalle de Ingresos (Ventas)</h3>
    <table>
        <tr><th>Cuenta</th><?php foreach($tipos as $t) echo "<th>$t</th>"; ?><th>Total</th></tr>
        <?php while($f = mysqli_fetch_assoc($res_ventas)) { 
            echo "<tr><td style='text-align:left;'>{$f['denominacion']}</td>";
            foreach($tipos as $t) echo "<td>".number_format($f[$t],0,',','.')."</td>";
            echo "<td>".number_format($f['total_cta'],0,',','.')."</td></tr>";
        } ?>
    </table>

    <h3>Detalle de Egresos (Gastos)</h3>
    <table>
        <tr><th>Cuenta</th><?php foreach($tipos as $t) echo "<th>$t</th>"; ?><th>Total</th></tr>
        <?php mysqli_data_seek($res_gastos, 0); while($f = mysqli_fetch_assoc($res_gastos)) { 
            echo "<tr><td style='text-align:left;'>{$f['denominacion']}</td>";
            foreach($tipos as $t) echo "<td>".number_format($f[$t],0,',','.')."</td>";
            echo "<td>".number_format($f['total_cta'],0,',','.')."</td></tr>";
        } ?>
    </table>

    <h3>Balance General de Saldos</h3>
    <table>
        <tr><th>Cuenta</th><th>Total Ingresos</th><th>Total Gastos</th><th>Saldo Neto</th></tr>
        <?php $tot_i = 0; $tot_e = 0; $tot_s = 0;
        foreach ($saldos as $cta => $val) { 
            $ing = isset($val['ingreso']) ? $val['ingreso'] : 0;
            $egr = isset($val['egreso']) ? $val['egreso'] : 0;
            $saldo = $ing - $egr;
            $tot_i += $ing; $tot_e += $egr; $tot_s += $saldo;
        ?>
        <tr><td style='text-align:left;'><?php echo $cta; ?></td>
            <td><?php echo number_format($ing,0,',','.'); ?></td>
            <td><?php echo number_format($egr,0,',','.'); ?></td>
            <td class="total"><?php echo number_format($saldo,0,',','.'); ?></td>
        </tr>
        <?php } ?>
        <tr class="total"><td>TOTAL GENERAL</td>
            <td><?php echo number_format($tot_i,0,',','.'); ?></td>
            <td><?php echo number_format($tot_e,0,',','.'); ?></td>
            <td><?php echo number_format($tot_s,0,',','.'); ?></td>
        </tr>
    </table>

    <div style="margin-top:30px; font-size:10px;">
        Informe generado el: <?php echo date('d/m/Y H:i:s'); ?> | Usuario: <?php echo $usuario_imprime; ?>
    </div>
</body>
</html>