<?php 
//ini_set('display_errors', 1);
//ini_set('display_startup_errors', 1);
//error_reporting(E_ALL);
$r="../";
require_once($r."inc/funciones.php");
validNotSession($r);

function redondearHaciaArribaMultiplo50($numero) {
    $redondeado = ceil($numero / 50) * 50;
    return $redondeado;
}
function redondearHaciaArribaMultiplo1($numero) {
    $redondeado = ceil($numero / 1) * 1;
    return $redondeado;
}

function calcularPorcentajeDeCien($porcentaje) {
    return (100 + $porcentaje) / 100;
}

if(isset($_POST['actionprecios'])){
    if(isset($_POST['final']) && empty($_POST['final'])){
        echo mensage('ATENCIÓN','Debes agregar el porcentaje de ganancia del precio final.','warning');
        exit();
    }    
    $final = $_POST['final'];

    if(isset($_POST['comercailizador']) && empty($_POST['comercailizador'])){
        echo mensage('ATENCIÓN','Debes agregar el porcentaje de ganancia del precio comercializador.','warning');
        exit();
    }
    $comercailizador = $_POST['comercailizador'];

    if(isset($_POST['web']) && empty($_POST['web'])){
        echo mensage('ATENCIÓN','Debes agregar el porcentaje de ganancia del precio web.','warning');
        exit();
    }
    $web = $_POST['web'];
    
    $result = $mysqli->query("UPDATE `config_precios` 
        SET `precio_final`='$final', 
            `precio_comercializador`='$comercailizador', 
            `precio_web`='$web' 
        WHERE id=1");

    if ($result) {
        echo mensage('ÉXITO', '¡Tus datos han sido guardados exitosamente!', 'success', 1, 1);
        exit();
    } else {
        echo mensage('ERROR', 'Hubo un problema al guardar los datos. Por favor, intenta nuevamente.', 'danger');
        exit();
    }
}

$mysqli = connectDB($r);

/* CONFIG GLOBAL */
$qry0 = $mysqli->query("SELECT * FROM config_precios ORDER BY id DESC LIMIT 1");
$row0 = $qry0->fetch_assoc();

$gcomercial = $row0['precio_comercializador'];
$gfinal     = $row0['precio_final'];
$gweb       = $row0['precio_web'];

$min_ganancia_kilo = min($gcomercial, $gfinal, $gweb);

$diferencia_comercial = $gcomercial - $min_ganancia_kilo;
$diferencia_final     = $gfinal - $min_ganancia_kilo;
$diferencia_web       = $gweb - $min_ganancia_kilo;


/* RECORRER PRODUCTOS */
$sqlProductos = "SELECT id, unidad2 FROM z_productos WHERE unidad2='Kilo' AND eliminado = 0";
$resProductos = $mysqli->query($sqlProductos);

while ($prod = $resProductos->fetch_assoc()) {

    $idProducto = (int)$prod['id'];
    $unidad = $mysqli->real_escape_string($prod['unidad2']);

    /* PRECIO BASE KILO (presentación 22) */
    $qryKilo = $mysqli->query("
        SELECT precio 
        FROM z_producto_presentacion 
        WHERE idproducto = $idProducto AND idpresentacion = 22
        LIMIT 1
    ");

    if ($qryKilo->num_rows == 0) continue;

    $precio_kilo = $qryKilo->fetch_assoc()['precio'];

    /* PRESENTACIONES PREDETERMINADAS */
    $sqlPresentaciones = "
        SELECT id, ganancia, cantidad
        FROM z_presentaciones_productos
        WHERE unidad = '$unidad'
        AND predeterminado = 'si'
    ";

    $resPresentaciones = $mysqli->query($sqlPresentaciones);

    while ($pres = $resPresentaciones->fetch_assoc()) {

        $idPresentacion = (int)$pres['id'];
        $ganancia       = (float)$pres['ganancia'];
        $cantidadkilos  = (float)$pres['cantidad'];

        /* EVITAR DUPLICADOS */
        $existe = $mysqli->query("
            SELECT id 
            FROM z_producto_presentacion
            WHERE idproducto = $idProducto 
            AND idpresentacion = $idPresentacion
            LIMIT 1
        ");

        if ($existe->num_rows > 0) continue;

        /* FACTORES */
        if ($ganancia == 0) {
            $factor_comercial = 1 + (($ganancia + $gcomercial) / 100);
            $factor_final     = 1 + (($ganancia + $gfinal) / 100);
            $factor_web       = 1 + (($ganancia + $gweb) / 100);
        } else {
            $factor_comercial = 1 + (($ganancia + $diferencia_comercial) / 100);
            $factor_final     = 1 + (($ganancia + $diferencia_final) / 100);
            $factor_web       = 1 + (($ganancia + $diferencia_web) / 100);
        }

        /* CALCULO PRECIOS */
        $subtotal = $precio_kilo * $cantidadkilos;

        $precio_web_final      = redondearHaciaArribaMultiplo1($subtotal * $factor_web);
        $precio_cliente_final  = redondearHaciaArribaMultiplo1($subtotal * $factor_final);
        $precio_comercial      = redondearHaciaArribaMultiplo1($subtotal * $factor_comercial);

        /* INSERT DIRECTO CON PRECIOS */
        $mysqli->query("
            INSERT INTO z_producto_presentacion
            (idproducto, idpresentacion, precio, minorista, mayorista)
            VALUES
            (
                $idProducto,
                $idPresentacion,
                '$precio_web_final',
                '$precio_cliente_final',
                '$precio_comercial'
            )
        ");
    }
}
?>
