<?php 

$r="../";
require_once($r."inc/funciones.php");
$mysqli = connectDB($r);

function mensage($title,$msn,$tipo,$reload = 0,$modal = 0){
    $response = '<div class="alert alert-'.$tipo.' alert-dismissible fade show" role="alert">  <strong>'.$title.'</strong><br/> '.$msn.'  <button type="button" class="close" data-dismiss="alert" aria-label="Close">    <span aria-hidden="true">&times;</span>  </button></div>';
    if($reload){
        $response .= "<script>setTimeout(function(){   window.location.reload(1);}, 5000);</script>";
    }
    if($modal){
        $response .= "<script>$('.modal').modal('hide');</script>";
    }
    return $response;
}

function recalcularPresentacion($idpresentacion,$ganancia) {
    global $mysqli;

    // Datos globales de configuración
    $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;

    // Cantidad en kilos de la presentación editada
    $cantidadkilos = sinfo('z_presentaciones_productos', $idpresentacion)['cantidad'];
    $gananciapresentacion = $ganancia;

    // Todos los productos que usan esta presentación
    $productos = $mysqli->query("
        SELECT DISTINCT idproducto 
        FROM z_producto_presentacion 
        WHERE idpresentacion = $idpresentacion
    ");

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

        $idproducto = $prod['idproducto'];

        // Precio base kilo
        $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'];

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

        // Subtotales
        $subtotal = $precio_kilo * $cantidadkilos;

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

        // Update
        $mysqli->query("
            UPDATE z_producto_presentacion
            SET 
                precio     = '$precio_web_final',
                minorista  = '$precio_cliente_final',
                mayorista  = '$precio_comercial'
            WHERE idproducto = $idproducto
              AND idpresentacion = $idpresentacion
        ");
    }
}

function swalmsn($status,$mensaje,$action=NULL){
    $response = array(    'status' => $status,    'mensaje' => $mensaje,    'action' => $action);
    echo json_encode($response);
    exit();
}
function redondearHaciaArribaMultiplo50($numero) {
    // Redondea hacia arriba al múltiplo de 50 más cercano
    $redondeado = ceil($numero / 50) * 50;
    return $redondeado;
}
function redondearHaciaArribaMultiplo1($numero) {
    // Redondea hacia arriba al múltiplo de 50 más cercano
    $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();
    }
}

if(isset($_POST['actionpresent'])){
    
    $presentacion = trim($_POST['presentacion']);
    if (empty($presentacion)) {
        echo mensage('ATENCIÓN', 'Debes agregar el nombre de la presentación.', 'warning');
        exit();
    }
    
    $unidades = trim($_POST['cantidad']);
    if (empty($unidades)) {
        echo mensage('ATENCIÓN', 'Debes agregar las Cantidad de la presentación.', 'warning');
        exit();
    }
    
    $ganancia = trim($_POST['ganancia']);
    if (empty($ganancia) && $ganancia != 0) {
        echo mensage('ATENCIÓN', 'Debes agregar el porcentaje de ganancia de la presentación.', 'warning');
        exit();
    }
    
    $unidad = trim($_POST['unidad']);
    if (empty($unidad)) {
        echo mensage('ATENCIÓN', 'Debes agregar la unidad de medida principal de la presentación.', 'warning');
        exit();
    }
    
    $predeterminado = isset($_POST['predeterminado']) ? trim($_POST['predeterminado']) : 'no';
    if ($predeterminado !== 'si' && $predeterminado !== 'no') {
        echo mensage('ATENCIÓN', 'Valor inválido para predeterminado.', 'warning');
        exit();
    }

    
    $tipo_producto = trim($_POST['unidad']);
    if (empty($tipo_producto)) {
        echo mensage('ATENCIÓN', 'Debes seleccionar el tipo de producto.', 'warning');
        exit();
    }
    if (!in_array($tipo_producto, ['Kilo','Litro','Pieza'])) {
        echo mensage('ATENCIÓN', 'Tipo de producto inválido.', 'warning');
        exit();
    }
    
    $actualizarTodos = isset($_POST['actualizar_todos']) ? 1 : 0;

    if(empty($_POST['actionpresent'])){
        $sql1 = $mysqli->query("SELECT * FROM `z_presentaciones_productos` WHERE `presentacion` LIKE '$presentacion'");
        if ($sql1->num_rows > 0) {
            echo mensage('ERROR', 'Ya se encuentra registrada una presentación con ese nombre.', 'warning');
            exit();
        } 
        
        $result = $mysqli->query("INSERT INTO `z_presentaciones_productos`(`presentacion`, `cantidad`, `ganancia`, `unidad`, `predeterminado`, `actualizar`) VALUES ('$presentacion','$unidades','$ganancia','$unidad','$predeterminado',$actualizarTodos)");
        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();
        }
    }else{
        
        $idpresentacion = $_POST['actionpresent'];
        
        $sql1 = $mysqli->query("SELECT * FROM `z_presentaciones_productos` WHERE `presentacion` LIKE '$presentacion' AND id!=$idpresentacion");
        if ($sql1->num_rows > 0) {
            echo mensage('ERROR', 'Ya se encuentra registrada una presentación con ese nombre.', 'warning');
            exit();
        } 
        $result = $mysqli->query("UPDATE `z_presentaciones_productos` SET `presentacion`='$presentacion',`cantidad`='$unidades',`ganancia`='$ganancia',`unidad`='$unidad',`predeterminado`='$predeterminado',`actualizar`='$actualizarTodos' WHERE `id`='$idpresentacion'");
    
        if ($result) {
            if ($actualizarTodos) {
                recalcularPresentacion($idpresentacion,$ganancia);
            }
            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();
        }
        exit();
    }
}