<?php
include('is_logged.php');
$id_factura = $_SESSION['id_factura'];
require_once ("../config/db.php");
require_once ("../config/conexion.php");

// 1. Obtener Tasa
$query_tasa = mysqli_query($con, "SELECT tasa FROM tasa WHERE id_tasa='1'");
$rw_tasa = mysqli_fetch_array($query_tasa);
$tasa_actual = $rw_tasa['tasa'];

// 2. Obtener Datos de Factura
$sql_factura = mysqli_query($con, "SELECT numero_factura, total_venta, abono FROM facturas WHERE id_factura='".$id_factura."'");
$rw_factura = mysqli_fetch_array($sql_factura);

$numero_fact = $rw_factura['numero_factura'];
$total_venta = $rw_factura['total_venta'];
$abono_anterior = $rw_factura['abono'];

// 3. Recibir Datos POST
$id_cliente = $_POST['id_cliente'];
$condiciones = $_POST['condiciones'];
$banco = (isset($_POST['banco']) && !empty($_POST['banco'])) ? intval($_POST['banco']) : 0;
// Recibir y limpiar la referencia
$ref = (isset($_POST['ref']) && !empty($_POST['ref'])) ? $_POST['ref'] : 0; 

// Si prefieres que en la base de datos se guarde vacío en lugar de 0, 
// asegúrate de que la columna acepte NULL y usa:
// $ref = (isset($_POST['ref']) && !empty($_POST['ref'])) ? $_POST['ref'] : NULL;
$fecha_pago = $_POST['fecha_pago'];
$monto = floatval($_POST['monto']); // Forzar a número

// Convertir a moneda base si es necesario
if($condiciones == "Efectivo BsD" || $condiciones == "Transferencia bancaria" || $condiciones == "Punto") {
    $monto = $monto / $tasa_actual;
}

$nuevo_total_abono = $abono_anterior + $monto;
$por_cobrar = $total_venta - $nuevo_total_abono;

// 4. INSERTAR EN ABONOS_CLI (Hacer esto primero es mejor práctica)
$sql_insert_abono = "INSERT INTO abonos_cli (cliente, fecha_abono, monto_abono, factura, tipo_abono, banco_abono, ref_abono) 
                     VALUES ('$id_cliente', '$fecha_pago', '$monto', '$numero_fact', '$condiciones', '$banco', '$ref')";
$query_insert = mysqli_query($con, $sql_insert_abono);

if ($query_insert) {
    if($condiciones == "Efectivo BsD"){
    // 5. ACTUALIZAR FACTURA
    $sql_update_factura = "UPDATE facturas SET por_cobrar='$por_cobrar', abono='$nuevo_total_abono', fecha_pago='$fecha_pago', condiciones_efe='$monto' WHERE id_factura='$id_factura'";
    }
    else if($condiciones == "Transferencia bancaria"){
    // 5. ACTUALIZAR FACTURA
    $sql_update_factura = "UPDATE facturas SET por_cobrar='$por_cobrar', abono='$nuevo_total_abono', fecha_pago='$fecha_pago', condiciones_tra='$monto' WHERE id_factura='$id_factura'";
    }
    else if($condiciones == "Punto"){
    // 5. ACTUALIZAR FACTURA
    $sql_update_factura = "UPDATE facturas SET por_cobrar='$por_cobrar', abono='$nuevo_total_abono', fecha_pago='$fecha_pago', condiciones_pun='$monto' WHERE id_factura='$id_factura'";
    }
    else{
    // 5. ACTUALIZAR FACTURA
    $sql_update_factura = "UPDATE facturas SET por_cobrar='$por_cobrar', abono='$nuevo_total_abono', fecha_pago='$fecha_pago', condiciones_efed='$monto' WHERE id_factura='$id_factura'";
    }
    mysqli_query($con, $sql_update_factura);
    

    // Si la factura se pagó completa (margen de error de 0.01)
    if (abs($por_cobrar) < 0.01) {
        mysqli_query($con, "UPDATE facturas SET estado_factura='2' WHERE id_factura='$id_factura'");
    }

    echo "<script>alert('Abono Procesado con éxito'); window.location='../facturas.php';</script>";
} else {
    // Si falla, mostrar el error real de MySQL
    echo "Error en el registro de abono: " . mysqli_error($con);
}
?>