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

date_default_timezone_set('America/La_Paz');

if (!isset($_GET["anio"])) {
    die("Año no especificado.");
}

$anio = intval($_GET["anio"]);
$empresa = "Recicladora Santiago";

// Obtener datos
$datosJson = ControladorTransacciones::ctrBalanceMensual($anio);
$datos = json_decode($datosJson, true);
$meses = ["Enero", "Febrero", "Marzo", "Abril", "Mayo", "Junio", "Julio", "Agosto", "Septiembre", "Octubre", "Noviembre", "Diciembre"];

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

// Título con fondo azul
$pdf->SetFillColor(0, 102, 204);
$pdf->SetTextColor(255, 255, 255);
$pdf->SetFont('helvetica', 'B', 16);
$pdf->Cell(0, 12, "Balance Financiero - $anio", 0, 1, 'C', true);

// Empresa y fecha
$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") . " ", 0, 1, 'C');

// Espacio
$pdf->Ln(5);

// Centro de tabla
$mesWidth = 30;
$cellWidth = 60;
$totalTableWidth = $mesWidth + $cellWidth * 2;
$pageWidth = $pdf->GetPageWidth() - $pdf->getMargins()['left'] - $pdf->getMargins()['right'];
$startX = ($pageWidth - $totalTableWidth) / 2 + $pdf->getMargins()['left'];

// Cabecera
$pdf->SetFont('helvetica', 'B', 11);
$pdf->SetFillColor(0, 123, 255);
$pdf->SetX($startX);
$pdf->Cell($mesWidth, 8, 'Mes', 1, 0, 'C', 1);
$pdf->Cell($cellWidth, 8, 'Ingresos', 1, 0, 'C', 1);
$pdf->Cell($cellWidth, 8, 'Gastos', 1, 1, 'C', 1);

// Filas
$pdf->SetFont('helvetica', '', 10);
$totalIngresos = 0;
$totalGastos = 0;

for ($i = 0; $i < 12; $i++) {
    $ingreso = isset($datos["ingresos"][$i]) ? $datos["ingresos"][$i] : 0;
    $gasto = isset($datos["gastos"][$i]) ? $datos["gastos"][$i] : 0;

    $pdf->SetX($startX);
    $fillColor = $i % 2 == 0 ? [245, 245, 245] : [255, 255, 255];
    $pdf->SetFillColor(...$fillColor);
    $pdf->Cell($mesWidth, 8, $meses[$i], 1, 0, 'C', 1);
    $pdf->Cell($cellWidth, 8, 'Bs ' . number_format($ingreso, 2), 1, 0, 'R', 1);
    $pdf->Cell($cellWidth, 8, 'Bs ' . number_format($gasto, 2), 1, 1, 'R', 1);

    $totalIngresos += $ingreso;
    $totalGastos += $gasto;
}

// Totales
$pdf->SetFont('helvetica', 'B', 11);
$pdf->SetFillColor(0, 123, 255);
$pdf->SetX($startX);
$pdf->Cell($mesWidth, 8, 'TOTAL', 1, 0, 'R', 1);
$pdf->Cell($cellWidth, 8, 'Bs ' . number_format($totalIngresos, 2), 1, 0, 'R', 1);
$pdf->Cell($cellWidth, 8, 'Bs ' . number_format($totalGastos, 2), 1, 1, 'R', 1);

// Balance Neto
$balanceNeto = $totalIngresos - $totalGastos;
$pdf->Ln(10);
$pdf->SetFont('helvetica', 'B', 13);
$pdf->SetFillColor(230, 230, 230);
$pdf->Cell(0, 10, 'Balance Neto: Bs ' . number_format($balanceNeto, 2), 0, 1, 'C', true);

// Evaluación
$textoEval = $balanceNeto > 0 ? "Balance positivo" : ($balanceNeto < 0 ? "¡Cuidado! Más gastos que ingresos" : "Balance equilibrado");
$pdf->Ln(5);
$pdf->SetFont('helvetica', 'B', 13);
$pdf->MultiCell(0, 8, "Evaluación Financiera: $textoEval", 0, 'C');

// Gráfico Circular
$pdf->Ln(8);
$total = $totalIngresos + $totalGastos;
$porcIngresos = $total > 0 ? ($totalIngresos / $total) * 360 : 0;
$porcGastos = 360 - $porcIngresos;

$xc = 105;
$yc = $pdf->GetY() + 30;
$r = 20;

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

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

// Salida
$pdf->Output("Balance_Financiero_$anio.pdf", 'I');
