<?php
include 'conexion3.php';

$pago_id = intval($_GET['pago_id']);
$proveedor_id = intval($_GET['proveedor_id']);

$pago = $conn->query("SELECT importe, fecha, caja, nota FROM pagos_facturas WHERE id = $pago_id AND proveedor_id = $proveedor_id AND (factura_id IS NULL OR factura_id = 0)")->fetch_assoc();
if (!$pago) {
    die("Pago no válido o ya imputado.");
}

$restante = floatval($pago['importe']);

$facturas = $conn->query("
    SELECT id, monto, pagado
    FROM facturas
    WHERE proveedor_id = $proveedor_id AND monto > pagado
    ORDER BY fecha_emision ASC
");

while ($restante > 0.01 && $f = $facturas->fetch_assoc()) {
    $fid = $f['id'];
    $saldo = $f['monto'] - $f['pagado'];
    $a_imputar = min($restante, $saldo);

    if ($a_imputar > 0.01) {
        $conn->query("
            INSERT INTO pagos_facturas (proveedor_id, factura_id, fecha, importe, caja, nota)
            VALUES ($proveedor_id, $fid, '{$pago['fecha']}', $a_imputar, '{$pago['caja']}', CONCAT('{$pago['nota']}', ' (imputación automática)'))
        ");

        // Actualizar el campo pagado de la factura
        $conn->query("
            UPDATE facturas
            SET pagado = (
                SELECT IFNULL(SUM(importe), 0) FROM pagos_facturas WHERE factura_id = $fid
            )
            WHERE id = $fid
        ");

        $restante -= $a_imputar;
    }
}

// Crear nuevo pago si queda remanente
if ($restante > 0.01) {
    $conn->query("
        INSERT INTO pagos_facturas (proveedor_id, fecha, importe, caja, nota)
        VALUES ($proveedor_id, '{$pago['fecha']}', $restante, '{$pago['caja']}', 'Remanente de imputación automática')
    ");
}

// Eliminar el pago original
$conn->query("DELETE FROM pagos_facturas WHERE id = $pago_id");

header("Location: cuenta_proveedor.php?proveedor_id=$proveedor_id");
exit;
