<?php
// backend/deducciones/generar_formato_deduccion.php
require_once __DIR__ . '/../db/conexion.php';

// Usar FPDF desde Composer
require_once __DIR__ . '/../../vendor/autoload.php';

header('Content-Type: application/json');

// Recibe los datos por POST (JSON)
$input = json_decode(file_get_contents('php://input'), true);

// Validar datos mínimos
$campos = ['concepto','monto','interes_fijo','parcialidades','periodicidad','id_quincena','solicitante'];
foreach ($campos as $campo) {
    if (!isset($input[$campo])) {
        echo json_encode(['success' => false, 'message' => "Falta el campo $campo"]);
        exit;
    }
}

// Obtener datos de la quincena de inicio
$id_quincena = intval($input['id_quincena']);
$sql = "SELECT nombre, fecha_inicio, fecha_fin FROM Quincenas WHERE id_quincena = $id_quincena LIMIT 1";
$res = $conn->query($sql);
if (!$res || $res->num_rows === 0) {
    echo json_encode(['success' => false, 'message' => 'Quincena no encontrada']);
    exit;
}
$quincena = $res->fetch_assoc();

// Calcular fechas de pago
$fechas = [];
$fecha_base = $quincena['fecha_fin'];
$parcialidades = intval($input['parcialidades']);
$periodicidad = $input['periodicidad'];

for ($i = 0; $i < $parcialidades; $i++) {
    $fecha = new DateTime($fecha_base);
    if ($periodicidad === 'Mensual') {
        $fecha->modify("+{$i} month");
        // Último día del mes
        $fecha->modify('last day of this month');
    } else { // Quincenal
        $fecha->modify("+" . ($i * 15) . " days");
        // Si cae después del 15, poner último día del mes
        $dia = (int)$fecha->format('d');
        if ($dia > 15) {
            $fecha->modify('last day of this month');
        } else {
            $fecha->setDate($fecha->format('Y'), $fecha->format('m'), 15);
        }
    }
    $fechas[] = $fecha->format('d/m/Y');
}

// Calcular monto por parcialidad
$monto = floatval($input['monto']);
$interes = floatval($input['interes_fijo']);
$total = $monto + ($monto * ($interes / 100));
$monto_parcialidad = $parcialidades > 0 ? $total / $parcialidades : 0;

// Crear PDF
$pdf = new \FPDF();

try {
    $pdf->AddPage();
    $pdf->SetFont('Arial','B',14);
    $pdf->Cell(0,10,'Formato de Deduccion',0,1,'C');
    $pdf->SetFont('Arial','',11);
    $pdf->Ln(5);
    $pdf->Cell(0,8,'Concepto: ' . $input['concepto'],0,1);
    $pdf->Cell(0,8,'Monto: $' . number_format($monto,2),0,1);
    $pdf->Cell(0,8,'Interes fijo: ' . $interes . '%',0,1);
    $pdf->Cell(0,8,'Parcialidades: ' . $parcialidades,0,1);
    $pdf->Cell(0,8,'Periodicidad: ' . $periodicidad,0,1);
    $pdf->Cell(0,8,'Quincena de inicio: ' . $quincena['nombre'] . ' (' . $quincena['fecha_inicio'] . ' al ' . $quincena['fecha_fin'] . ')',0,1);
    $pdf->Ln(5);

    // Tabla de calendario de pagos
    $pdf->SetFont('Arial','B',11);
    $pdf->Cell(40,8,'Fecha',1);
    $pdf->Cell(40,8,'Monto',1);
    $pdf->Cell(50,8,'No. Parcialidad',1);
    $pdf->Cell(50,8,'Periodicidad',1);
    $pdf->Ln();
    $pdf->SetFont('Arial','',11);
    for ($i = 0; $i < $parcialidades; $i++) {
        $pdf->Cell(40,8,$fechas[$i],1);
        $pdf->Cell(40,8,'$' . number_format($monto_parcialidad,2),1);
        $pdf->Cell(50,8,($parcialidades-$i),1);
        $pdf->Cell(50,8,$periodicidad,1);
        $pdf->Ln();
    }
    $pdf->Ln(10);
    $pdf->SetFont('Arial','I',10);
    $pdf->Cell(0,8,'Nombre del solicitante: ' . $input['solicitante'],0,1);

    // Guardar PDF temporalmente
    $nombre_archivo = 'formato_deduccion_' . uniqid() . '.pdf';
    $ruta = __DIR__ . '/../../frontend/deducciones/assets/formats/' . $nombre_archivo;
    $pdf->Output('F', $ruta);

    // Devolver ruta relativa para frontend
    echo json_encode([
        'success' => true,
        'file' => 'frontend/deducciones/assets/formats/' . $nombre_archivo
    ]);
} catch (Exception $e) {
    http_response_code(500);
    echo json_encode([
        'success' => false,
        'message' => 'Error al generar PDF: ' . $e->getMessage()
    ]);
}
