<?php
require_once ("../config/db.php");
require_once ("../config/conexion.php");

$con_tasa=mysqli_query($con,"select * from tasa where id_tasa='1'");
while ($dato_tasa=mysqli_fetch_array($con_tasa)) {
    $id_tasa=$dato_tasa['id_tasa'];
    $tasa_actual=$dato_tasa['tasa'];
    $ult_act=$dato_tasa['fecha'];
}

$desde = $_POST['desde'];
$hasta = $_POST['hasta'];
$sTable = "compras ";
$sWhere = " ";

if($_POST['desde']!="" && $_POST['hasta']!="") {
    $sWhere.= "WHERE fecha BETWEEN '$desde' AND '$hasta' ORDER BY id_compra DESC";
} else if($_POST['desde']!="" && $_POST['hasta']=="") {
    $sWhere.= "WHERE fecha = '$desde' ORDER BY id_compra DESC";
} else if($_POST['desde']=="" && $_POST['hasta']!="") {
    $sWhere.= "WHERE fecha = '$hasta' ORDER BY id_compra DESC";
} else {
    $sWhere = "ORDER BY id_compra DESC";
}

include 'pagination.php';
$page = (isset($_REQUEST['page']) && !empty($_REQUEST['page']))?$_REQUEST['page']:1;
$per_page = 30;
$adjacents = 4;
$offset = ($page - 1) * $per_page;

$count_query = mysqli_query($con, "SELECT count(*) AS numrows FROM $sTable $sWhere");
$row= mysqli_fetch_array($count_query);
$numrows = $row['numrows'];
$total_pages = ceil($numrows/$per_page);
$reload = './reportes.php';

$sql="SELECT * FROM $sTable $sWhere LIMIT $offset,$per_page";
$query = mysqli_query($con, $sql);

// Inicialización de acumuladores globales
$j=0; $total_total=0; $resta_total=0; $total_excento=0; $total_base=0; $total_iva=0;
$venta_total=0; $excento_total=0; $base_total=0; $iva_total=0;

// 1. CÁLCULO DE TOTALES SUPERIORES (RESUMEN DEL PERÍODO)
$sql_total="SELECT * FROM $sTable $sWhere";
$query_total=mysqli_query($con,$sql_total);
while($r = mysqli_fetch_array($query_total)) {
    $factura_actual = $r['numero_fact'];
    
    // Sumamos los subtotales directamente desde el detalle de compra (Precios con IVA incluido)
    $sub_det = mysqli_query($con, "SELECT 
        SUM(CASE WHEN exento = 1 THEN (cantidad * precio_compra) ELSE 0 END) as exento_prod,
        SUM(CASE WHEN exento = 0 THEN (cantidad * precio_compra) ELSE 0 END) as gravado_con_iva
        FROM detalle_compra WHERE numero_compra = '$factura_actual'");
    
    $fetch_det = mysqli_fetch_array($sub_det);
    $reg_excento = ($fetch_det['exento_prod'] != null) ? $fetch_det['exento_prod'] : 0;
    $reg_gravado_con_iva = ($fetch_det['gravado_con_iva'] != null) ? $fetch_det['gravado_con_iva'] : 0;

    // Salvaguarda: Si la factura no cuenta con registros en la tabla detalle_compra
    if ($reg_excento == 0 && $reg_gravado_con_iva == 0) {
        // Asumimos por defecto que el valor entero de la cabecera es Gravado con IVA
        $reg_gravado_con_iva = $r['total'];
    }

    // DESGLOSE MATEMÁTICO CORRECTO
    // Base Imponible = Monto Gravado con IVA / (1 + impuesto)
    $reg_base = $reg_gravado_con_iva / (1 + (TAX / 100));
    // IVA = Monto Gravado con IVA - Base Imponible (Evita errores por redondeo de decimales)
    $reg_iva = $reg_gravado_con_iva - $reg_base;
    
    // El total exacto reconstruido de la factura
    $reg_total_factura = $reg_excento + $reg_base + $reg_iva;

    // Sumas acumuladas para el cuadro resumen superior
    $venta_total   += $reg_total_factura;
    $excento_total += $reg_excento; 
    $base_total    += $reg_base;
    $iva_total     += $reg_iva;  
}

// Formateos de totales del cuadro resumen superior
$ventaf_total=number_format($venta_total,2,",", ".");
$dolar_a_bolivar_total=$venta_total*$tasa_actual;
$dolar_a_bolivarf_total=number_format($dolar_a_bolivar_total,2,",", ".");

$excentof_total=number_format($excento_total,2,",", ".");
$dolar_a_bolivarexc_total=$excento_total*$tasa_actual;
$dolar_a_bolivarexcf_total=number_format($dolar_a_bolivarexc_total,2,",", ".");

$basef_total=number_format($base_total,2,",", ".");
$dolar_a_bolivarbase_total=$base_total*$tasa_actual;
$dolar_a_bolivarbasef_total=number_format($dolar_a_bolivarbase_total,2,",", ".");

$ivaf_total=number_format($iva_total,2,",", ".");
$dolar_a_bolivariva_total=$iva_total*$tasa_actual;
$dolar_a_bolivarivaf_total=number_format($dolar_a_bolivariva_total,2,",", ".");
?>

<div class="table-responsive">
    <table class="table table-bordered">
        <tr class="warning" style="font-size:11px; font-weight:bold;">
            <th>Monto Factura con IVA</th>
            <th>Exentas o Exoneradas</th>
            <th>Base Imponible</th>
            <th>% IVA</th>
            <th>Crédito Fiscal</th>
        </tr>
        <tr>
            <td>$ <?php echo $ventaf_total;?><br><small class="text-muted">Bs <?php echo $dolar_a_bolivarf_total;?></small></td>
            <td>$ <?php echo $excentof_total;?><br><small class="text-muted">Bs <?php echo $dolar_a_bolivarexcf_total;?></small></td>
            <td>$ <?php echo $basef_total;?><br><small class="text-muted">Bs <?php echo $dolar_a_bolivarbasef_total;?></small></td>
            <td><?php echo TAX;?> %</td>
            <td>$ <?php echo $ivaf_total;?><br><small class="text-muted">Bs <?php echo $dolar_a_bolivarivaf_total;?></small></td>
        </tr>
    </table>
</div>

<div class="text-right" style="margin-bottom:10px;">
    <a href="imp_compras.php?desde=<?php echo $desde;?>&hasta=<?php echo $hasta;?>" target="_blank" class="btn btn-danger">
        <span class="glyphicon glyphicon-print"></span> Descargar PDF
    </a>
</div>

<div class="table-responsive">
    <table class="table table-striped table-hover table-condensed">
        <thead>
            <tr class="info" style="font-size:10px;">
                <th colspan="6">DATOS GENERALES</th>
                <th class="text-center">NO GRAVADAS</th>
                <th colspan="3" class="text-center">GRAVADAS</th>
                <th>ESTADO</th>
            </tr>
            <tr class="info" style="font-size:10px;">
                <th>#</th>
                <th>Fecha</th>
                <th>Rif</th>
                <th>Proveedor</th>
                <th>Factura</th>
                <th>Total c/IVA</th>
                <th>Exentas</th>
                <th>Base</th>
                <th>%</th>
                <th>IVA</th>
                <th>Estado</th>
            </tr>
        </thead>
        <tbody>
            <?php
            if($numrows>0) {
                while($registro2 = mysqli_fetch_array($query)) {
                    $por_pagar=$registro2['por_pagar'];
                    $factura_fila = $registro2['numero_fact'];
                    
                    if($por_pagar<=0) { $text_estado="Pagada"; $label_class='label-success'; }
                    else { $text_estado="Por Pagar"; $label_class='label-warning'; }

                    // 2. CÁLCULO DINÁMICO POR CADA FILA DE LA TABLA PÁGINADA
                    $sub_det_fila = mysqli_query($con, "SELECT 
                        SUM(CASE WHEN exento = 1 THEN (cantidad * precio_compra) ELSE 0 END) as exento_prod,
                        SUM(CASE WHEN exento = 0 THEN (cantidad * precio_compra) ELSE 0 END) as gravado_con_iva
                        FROM detalle_compra WHERE numero_compra = '$factura_fila'");
                    
                    $fetch_det_fila = mysqli_fetch_array($sub_det_fila);
                    $excento = ($fetch_det_fila['exento_prod'] != null) ? $fetch_det_fila['exento_prod'] : 0;
                    $gravado_con_iva_fila = ($fetch_det_fila['gravado_con_iva'] != null) ? $fetch_det_fila['gravado_con_iva'] : 0;

                    if ($excento == 0 && $gravado_con_iva_fila == 0) {
                        $gravado_con_iva_fila = $registro2['total'];
                    }

                    // Desglose de la fila actual
                    $base = $gravado_con_iva_fila / (1 + (TAX / 100));
                    $iva = $gravado_con_iva_fila - $base;
                    
                    // Re-calculamos el total exacto sumando los desgloses reales de esta fila
                    $total_venta = $excento + $base + $iva;

                    // Acumuladores de la fila inferior de totales
                    $total_total += $total_venta;         
                    $resta_total += $por_pagar;
                    $total_excento += $excento;
                    $total_base += $base;
                    $total_iva += $iva;
                    $j++;

                    $id_proveedor=$registro2['proveedor'];
                    $consulta_proveedor = mysqli_query($con,"select * from proveedores where id_pro='$id_proveedor'");
                    $datos_proveedor=mysqli_fetch_array($consulta_proveedor);
                ?>
                <tr style="font-size:10px;">
                    <td><?php echo $j;?></td>
                    <td><?php echo $registro2['fecha'];?></td>
                    <td><?php echo $datos_proveedor['rif_proveedor'];?></td>
                    <td><?php echo $datos_proveedor['nombre_proveedor'];?></td>
                    <td><?php echo $registro2['numero_fact'];?></td>
                    <td>$ <?php echo number_format($total_venta,2,",",".");?><br>Bs <?php echo number_format($total_venta*$tasa_actual,2,",",".");?></td>
                    <td>$ <?php echo number_format($excento,2,",",".");?><br>Bs <?php echo number_format($excento*$tasa_actual,2,",",".");?></td>
                    <td>$ <?php echo number_format($base,2,",",".");?><br>Bs <?php echo number_format($base*$tasa_actual,2,",",".");?></td>
                    <td><?php echo TAX;?>%</td>
                    <td>$ <?php echo number_format($iva,2,",",".");?><br>Bs <?php echo number_format($iva*$tasa_actual,2,",",".");?></td>
                    <td><span class="label <?php echo $label_class;?>"><?php echo $text_estado;?></span></td>
                </tr>
            <?php } ?>
            <tr class="active" style="font-size:11px; font-weight:bold;">
                <td colspan="5" class="text-right">TOTALES</td>
                <td>$ <?php echo number_format($total_total,2,",",".");?><br>Bs <?php echo number_format($total_total*$tasa_actual,2,",",".");?></td>
                <td>$ <?php echo number_format($total_excento,2,",",".");?><br>Bs <?php echo number_format($total_excento*$tasa_actual,2,",",".");?></td>
                <td>$ <?php echo number_format($total_base,2,",",".");?><br>Bs <?php echo number_format($total_base*$tasa_actual,2,",",".");?></td>
                <td></td>
                <td>$ <?php echo number_format($total_iva,2,",",".");?><br>Bs <?php echo number_format($total_iva*$tasa_actual,2,",",".");?></td>
                <td>Deuda: $<?php echo number_format($resta_total,2,",",".");?></td>
            </tr>
            <?php } else { ?>
                <tr><td colspan="11" class="text-center">No se encontraron resultados</td></tr>
            <?php } ?>
        </tbody>
    </table>
    <div class="pull-right">
        <?php echo paginate($reload, $page, $total_pages, $adjacents);?>
    </div>
</div>