<?php
require_once "../../../controladores/transacciones.controlador.php";
require_once "../../../modelos/transacciones.modelo.php";
require_once("../tcpdf.php");

date_default_timezone_set('America/La_Paz');

$anio = isset($_GET["anio"]) ? intval($_GET["anio"]) : date("Y");
$mes = isset($_GET["mes"]) ? intval($_GET["mes"]) : date("n");
$empresa = "Recicladora Santiago";

// Obtener datos
$datosResumen = ControladorTransacciones::ctrResumenGastosMensual($anio, $mes);
$compras = $datosResumen["compras"] ?? 0;
$operativos = $datosResumen["operativos"] ?? 0;
$totalGastos = $compras + $operativos;

$gastosPorCategoria = ControladorTransacciones::ctrDetalleGastosMensuales($anio, $mes);
$detalleIngresos = ControladorTransacciones::ctrDetalleIngresos($anio, $mes);
$detalleGastos = ControladorTransacciones::ctrDetalleGastos($anio, $mes);

// Crear PDF
$pdf = new TCPDF();
$pdf->SetCreator(PDF_CREATOR);
$pdf->SetAuthor($empresa);
$pdf->SetTitle("Reporte de Finanzas - $mes/$anio");
$pdf->SetMargins(15, 20, 15);
$pdf->AddPage();

// 1. Portada
$pdf->SetFillColor(0, 123, 255);
$pdf->SetTextColor(255, 255, 255);
$pdf->SetFont('helvetica', 'B', 16);
$pdf->Cell(0, 12, "Reporte de Finanzas - $mes/$anio", 0, 1, 'C', true);
$pdf->Ln(3);
$pdf->SetFont('helvetica', '', 10);
$pdf->SetTextColor(0, 0, 0);
$pdf->Cell(0, 8, "$empresa", 0, 1, 'C');
$pdf->Cell(0, 8, "Generado el " . date("d/m/Y H:i:s") . " (Hora Bolivia)", 0, 1, 'C');
$pdf->Ln(5);

// 2. Detalle de Ingresos
$pdf->SetFillColor(0, 123, 255);
$pdf->SetTextColor(255, 255, 255);
$pdf->SetFont('helvetica', 'B', 14);
$pdf->Cell(0, 10, 'Detalle de Ingresos', 0, 1, 'C', true);
$pdf->Ln(4);

$pdf->SetFont('helvetica', 'B', 11);
$pdf->SetFillColor(230, 230, 230);
$pdf->SetTextColor(0, 0, 0); // Establece el color del texto en negro para la tabla
$pdf->Cell(40, 8, 'Fecha', 1, 0, 'C', 1);
$pdf->Cell(40, 8, 'Categoría', 1, 0, 'C', 1);
$pdf->Cell(60, 8, 'Descripción', 1, 0, 'C', 1);
$pdf->Cell(30, 8, 'Importe', 1, 1, 'C', 1);

$pdf->SetFont('helvetica', '', 10);
$totalIngresos = 0;
foreach ($detalleIngresos as $ingreso) {
    $pdf->Cell(40, 8, date("d/m/Y", strtotime($ingreso["fecha"])), 1);
    $pdf->Cell(40, 8, $ingreso["categoria"], 1);
    $pdf->Cell(60, 8, $ingreso["descripcion"], 1);
    $pdf->Cell(30, 8, 'Bs ' . number_format($ingreso["monto"], 2), 1, 1, 'R');
    $totalIngresos += $ingreso["monto"];
}
$pdf->SetFont('helvetica', 'B', 11);
$pdf->SetFillColor(200, 200, 200);
$pdf->Cell(140, 8, 'TOTAL INGRESOS', 1, 0, 'R', 1); // ¡Aquí añadimos el relleno!
$pdf->Cell(30, 8, 'Bs ' . number_format($totalIngresos, 2), 1, 1, 'R',1);

// 3. Detalle de Gastos
$pdf->AddPage();
$pdf->SetFillColor(0, 123, 255);
$pdf->SetTextColor(255, 255, 255);
$pdf->SetFont('helvetica', 'B', 14);
$pdf->Cell(0, 10, 'Detalle de Gastos', 0, 1, 'C', true);
$pdf->Ln(4);

$pdf->SetFont('helvetica', 'B', 11);
$pdf->SetFillColor(230, 230, 230);
$pdf->SetTextColor(0, 0, 0); // Establece el color del texto en negro para la tabla
$pdf->Cell(40, 8, 'Fecha', 1, 0, 'C', 1);
$pdf->Cell(40, 8, 'Categoría', 1, 0, 'C', 1);
$pdf->Cell(60, 8, 'Descripción', 1, 0, 'C', 1);
$pdf->Cell(30, 8, 'Importe', 1, 1, 'C', 1);

$pdf->SetFont('helvetica', '', 10);
$totalGastosDetalle = 0;
foreach ($detalleGastos as $gasto) {
    $pdf->Cell(40, 8, date("d/m/Y", strtotime($gasto["fecha"])), 1);
    $pdf->Cell(40, 8, $gasto["categoria"], 1);
    $pdf->Cell(60, 8, $gasto["descripcion"], 1);
    $pdf->Cell(30, 8, 'Bs ' . number_format($gasto["monto"], 2), 1, 1, 'R');
    $totalGastosDetalle += $gasto["monto"];
}
$pdf->SetFont('helvetica', 'B', 11);
$pdf->SetFillColor(200, 200, 200);
$pdf->Cell(140, 8, 'TOTAL GASTOS', 1, 0, 'R', 1); // ¡Aquí añadimos el relleno!
$pdf->Cell(30, 8, 'Bs ' . number_format($totalGastosDetalle, 2), 1, 1, 'R',1);

// 4. Detalle de Gastos por Categoría
$pdf->AddPage();
$pdf->SetFillColor(0, 123, 255);
$pdf->SetTextColor(255, 255, 255);
$pdf->SetFont('helvetica', 'B', 14);
$pdf->Cell(0, 10, 'Detalle de Gastos por Categoría', 0, 1, 'C', true);
$pdf->Ln(4);

$pdf->SetFont('helvetica', 'B', 11);
$pdf->SetFillColor(230, 230, 230);
$pdf->SetTextColor(0, 0, 0); // Establece el color del texto en negro para la tabla
$pdf->Cell(100, 8, 'Categoría', 1, 0, 'C', 1);
$pdf->Cell(50, 8, 'Monto', 1, 0, 'C', 1);
$pdf->Cell(30, 8, 'Porcentaje', 1, 1, 'C', 1);

$pdf->SetFont('helvetica', '', 10);
foreach ($gastosPorCategoria as $cat) {
    $pdf->Cell(100, 8, $cat["categoria"], 1);
    $pdf->Cell(50, 8, 'Bs ' . number_format($cat["total"], 2), 1, 0, 'R');
    $pdf->Cell(30, 8, ($totalGastos > 0 ? number_format(($cat["total"] / $totalGastos) * 100, 2) : 0) . '%', 1, 1, 'R');
}
$pdf->SetFont('helvetica', 'B', 11);
$pdf->SetFillColor(200, 200, 200);  //LIMBERT
$pdf->Cell(100, 8, 'TOTAL GASTOS POR CATEGORÍA', 1, 0, 'R', 1);
$pdf->Cell(50, 8, 'Bs ' . number_format($totalGastos, 2), 1, 0, 'R',1);
$pdf->Cell(30, 8, '100%', 1, 1, 'R',1);

// 5. Resumen de Gastos
$pdf->AddPage();
$pdf->SetFillColor(0, 123, 255);
$pdf->SetTextColor(255, 255, 255);
$pdf->SetFont('helvetica', 'B', 14);
$pdf->Cell(0, 10, 'Resumen de Gastos', 0, 1, 'C', true);
$pdf->Ln(4);

$pdf->SetFont('helvetica', 'B', 11);
$pdf->SetFillColor(230, 230, 230);
$pdf->SetTextColor(0, 0, 0); // Establece el color del texto en negro para la tabla
$pdf->Cell(80, 8, 'Tipo de Gasto', 1, 0, 'C', 1);
$pdf->Cell(60, 8, 'Monto', 1, 0, 'C', 1);
$pdf->Cell(40, 8, 'Porcentaje', 1, 1, 'C', 1);

$pdf->SetFont('helvetica', '', 10);
$pdf->Cell(80, 8, 'Compras de Inventario', 1);
$pdf->Cell(60, 8, 'Bs ' . number_format($compras, 2), 1, 0, 'R');
$pdf->Cell(40, 8, ($totalGastos > 0 ? number_format(($compras / $totalGastos) * 100, 2) : 0) . '%', 1, 1, 'R');

$pdf->Cell(80, 8, 'Gastos Operativos', 1);
$pdf->Cell(60, 8, 'Bs ' . number_format($operativos, 2), 1, 0, 'R');
$pdf->Cell(40, 8, ($totalGastos > 0 ? number_format(($operativos / $totalGastos) * 100, 2) : 0) . '%', 1, 1, 'R');

$pdf->SetFont('helvetica', 'B', 11);
$pdf->SetFillColor(200, 200, 200);
$pdf->Cell(80, 8, 'TOTAL', 1, 0, 'R', 1);
$pdf->Cell(60, 8, 'Bs ' . number_format($totalGastos, 2), 1, 0, 'R', 1);
$pdf->Cell(40, 8, '100%', 1, 1, 'R', 1);

// 6. Gráfico Circular
$pdf->Ln(8);
$porcCompras = $totalGastos > 0 ? ($compras / $totalGastos) * 360 : 0;
$porcOperativos = 360 - $porcCompras;
$xc = 105;
$yc = $pdf->GetY() + 30;
$r = 20;

$pdf->SetFillColor(102, 204, 102);
$pdf->PieSector($xc, $yc, $r, 0, $porcCompras, 'F', false);
$pdf->SetFillColor(255, 102, 102);
$pdf->PieSector($xc, $yc, $r, $porcCompras, 360, 'F', false);

$pdf->Ln(60);
$pdf->SetX(70);
$pdf->SetFillColor(102, 204, 102);
$pdf->Cell(5, 5, '', 0, 0, '', true);
$pdf->Cell(30, 5, 'Compras', 0, 0);
$pdf->SetFillColor(255, 102, 102);
$pdf->Cell(5, 5, '', 0, 0, '', true);
$pdf->Cell(30, 5, 'Gastos Operativos', 0, 1);

// Salida del PDF
$pdf->Output("Reporte_Finanzas_{$mes}_{$anio}.pdf", 'I');
?>
