File "controlPesoProm.php"

Full Path: C:/wamp64/www/INVENTAPP/js/controlPesoProm.php
File size: 14.21 KB
MIME-type: text/x-php
Charset: utf-8

<?php
/*include_once('../models/modelo_conexion.php');
session_start();
$objeto = new Conexion();
$conexion = $objeto->Conectar();

$listLinea = (isset($_POST['listLinea'])) ? $_POST['listLinea'] : '';
$listItem = (isset($_POST['listItem'])) ? $_POST['listItem'] : '';
$tpRegistro = (isset($_POST['tpRegistro'])) ? $_POST['tpRegistro'] : '';
$inpPeso = (isset($_POST['inpPeso'])) ? $_POST['inpPeso'] : '';
$inpPeso = str_replace(',', '.', $inpPeso); // esta linea reemplaza las posibles comas a puntos del campo inpPeso para que puedan ser leidos en el php
$inpUnidad = (isset($_POST['inpUnidad'])) ? $_POST['inpUnidad'] : '';
$inpLote = (isset($_POST['inpLote'])) ? $_POST['inpLote'] : '';
$inpPesoProm = (isset($_POST['inpPesoProm'])) ? $_POST['inpPesoProm'] : '';
$listTara = (isset($_POST['listTara'])) ? $_POST['listTara'] : '';
$inpTara = (isset($_POST['inpTara'])) ? $_POST['inpTara'] : '';
$inpBase = (isset($_POST['inpBase'])) ? $_POST['inpBase'] : '';
$ubicacion = $_SESSION['ubicacion'];
$usuario = $_SESSION['nomUser'];
$planillador = $_SESSION['planilla'];
$doc = $_SESSION['dcto'];
$checSkin = isset($_POST['checSkin']) ? true : false;
$checMap = isset($_POST['checMap']) ? true : false;

$consulta =  "SELECT * FROM `lineaxitem` where codItem = '$listItem'";
$resultado = $conexion->prepare($consulta);
$resultado->execute();
if ($resultado->rowCount() >= 1) {
    $data = $resultado->fetchAll(PDO::FETCH_ASSOC);
    $pesoMin = $data[0]['minimo'];
    $pesoMax = $data[0]['maximo'];
    $nprod = $data[0]['nomItem'];
}


switch ($listTara) {
    case 0:
        $pesoTara = 0.06;
        $bultos = $inpTara;
        $cajas = 0;
        $cnastaPll = 0;
        $cnastaPv = 0;
        $ctillaPll = 0;
        $ctillaPv = 0;

        break;
    case 1:
        $pesoTara = 0.055;
        $bultos = 0;
        $cajas = $inpTara;
        $cnastaPll = 0;
        $cnastaPv = 0;
        $ctillaPll = 0;
        $ctillaPv = 0;
        break;
    case 2:
        $pesoTara = 2;
        $bultos = 0;
        $cajas = 0;
        $cnastaPll = $inpTara;
        $cnastaPv = 0;
        $ctillaPll = 0;
        $ctillaPv = 0;
        break;
    case 3:
        $pesoTara = 2.5;
        $bultos = 0;
        $cajas = 0;
        $cnastaPll = 0;
        $cnastaPv = $inpTara;
        $ctillaPll = 0;
        $ctillaPv = 0;
        break;
    case 4:
        $pesoTara = 1.5;
        $bultos = 0;
        $cajas = 0;
        $cnastaPll = 0;
        $cnastaPv = 0;
        $ctillaPll = $inpTara;
        $ctillaPv = 0;
        break;
    case 5:
        $pesoTara = 2.3;
        $bultos = 0;
        $cajas = 0;
        $cnastaPll = 0;
        $cnastaPv = 0;
        $ctillaPll = 0;
        $ctillaPv = $inpTara;
        break;
}

$empacado = $inpUnidad * $inpTara;
$descuentoBandeja = 0;

if (isset($_POST['checSkin']) && $_POST['checSkin'] === 'on') {
    $descuentoBandeja = $empacado * 0.038;
} elseif (isset($_POST['checMap']) && $_POST['checMap'] === 'on') {
    $descuentoBandeja = $empacado * 0.030;
}

if ($inpBase === '') {
    $pesoNeto = $inpPeso - ($inpTara * $pesoTara) - $descuentoBandeja;
} else {
    $base = $inpBase * 1.5;
    $pesoNeto = $inpPeso - (($inpTara * $pesoTara) + $base) - $descuentoBandeja;
}

$valorProm = $pesoNeto / $empacado;

if ($tpRegistro == 3) {


    if ($valorProm <= $pesoMax and $valorProm >= $pesoMin) {
        $consulta = "INSERT INTO `mvdcto`(`TPDCTO`, `CODUBI`, `FECHA`, `ESTADO`, `USUARIO`, `CODPROD`, `NPROD`,
        `CANTIDAD`,`CANTEMPAQ`, `BULTOS`, `CAJAS`, `CNASTAPLL`, `CNASTAPV`, `CNASTILLAPLL`, `CNASTILLAPV`, `BASES`,
         `PLANILLADOR`, `LOTE`, `PESOPROM`) VALUES ('$doc','$ubicacion',CURRENT_DATE(),'NORMAL','$usuario','$listItem','$nprod',
         '$pesoNeto','$empacado','$bultos','$cajas','$cnastaPll','$cnastaPv','$ctillaPll','$ctillaPv','$inpBase',
         UPPER('$planillador'),'$inpLote','$valorProm')";

        $resultado = $conexion->prepare($consulta);

        if ($resultado->execute()) {
            echo json_encode(['estado' => 'ok']);
        } else {
            echo json_encode([
                'estado' => 'error_sql',
                'codigo' => $conexion->errorCode(),
                'mensaje' => $conexion->errorInfo()[2]
            ]);
        }
    } else {
        echo json_encode([
            'estado' => 'error_peso_promedio',
            'valorProm' => round($valorProm, 3),
            'rangoMin' => $pesoMin,
            'rangoMax' => $pesoMax
        ]);
        exit;
    }
} elseif ($tpRegistro == 2) {
    $consulta = "INSERT INTO `mvdcto`(`TPDCTO`, `CODUBI`, `FECHA`, `ESTADO`, `USUARIO`, `CODPROD`, `NPROD`, `CANTEMPAQ`, `BULTOS`, `CAJAS`, `CNASTAPLL`, `CNASTAPV`, `CNASTILLAPLL`, `CNASTILLAPV`, `BASES`, `PLANILLADOR`, `LOTE`, `PESOPROM`) VALUES ('$doc','$ubicacion',CURRENT_DATE(),'NORMAL','$usuario','$listItem','$nprod','$empacado','$bultos','$cajas','$cnastaPll','$cnastaPv','$ctillaPll','$ctillaPv','$inpBase',UPPER('$planillador'),'$inpLote','$valorProm')";

    $resultado = $conexion->prepare($consulta);

    if ($resultado->execute()) {
        echo json_encode([
            'estado' => 'ok',
            'tipo' => 'contado',
            'mensaje' => 'Registro Contado realizado exitosamente'
        ]);

        /* header('location:../views/registro.php'); */
/*  } else {
        $_SESSION['mensaje'] = $conexion->errorCode() . '-' . $conexion->errorInfo()[2];
        $_SESSION['tipo'] = 'danger';
        print "    <p class=\"aviso\">Error al ejecutar la consulta. SQLSTATE[{$conexion->errorCode()}]: {$conexion->errorInfo()[2]}</p>\n";
    }
} else {

    $consulta = "INSERT INTO `mvdcto`(`TPDCTO`, `CODUBI`, `FECHA`, `ESTADO`, `USUARIO`, `CODPROD`, `NPROD`, `CANTIDAD`, `BULTOS`, `CAJAS`, `CNASTAPLL`, `CNASTAPV`, `CNASTILLAPLL`, `CNASTILLAPV`, `BASES`, `PLANILLADOR`, `LOTE`) VALUES ('$doc','$ubicacion',CURRENT_DATE(),'NORMAL','$usuario','$listItem','$nprod','$pesoNeto','$bultos','$cajas','$cnastaPll','$cnastaPv','$ctillaPll','$ctillaPv','$inpBase',UPPER('$planillador'),'$inpLote')";

    $resultado = $conexion->prepare($consulta);

    if ($resultado->execute()) {
        $_SESSION['mensaje'] = 'Registro Granel realizado de manera exitosa!!!' . $cantidad;
        $_SESSION['tipo'] = 'success';
        header('location:../views/registro.php');
    } else {
        $_SESSION['mensaje'] = $conexion->errorCode() . '-' . $conexion->errorInfo()[2];
        $_SESSION['tipo'] = 'danger';
        print "    <p class=\"aviso\">Error al ejecutar la consulta. SQLSTATE[{$conexion->errorCode()}]: {$conexion->errorInfo()[2]}</p>\n";
    }
}
*/

include_once('../models/modelo_conexion.php');
session_start();

$objeto = new Conexion();
$conexion = $objeto->Conectar();

// Obtener y sanitizar inputs
$listLinea   = $_POST['listLinea']   ?? '';
$listItem    = $_POST['listItem']    ?? '';
$tpRegistro  = $_POST['tpRegistro']  ?? '';
$inpPeso     = str_replace(',', '.', $_POST['inpPeso'] ?? '');
$inpUnidad   = $_POST['inpUnidad']   ?? '';
$inpLote     = $_POST['inpLote']     ?? '';
$inpPesoProm = $_POST['inpPesoProm'] ?? '';
$listTara    = $_POST['listTara']    ?? '';
$inpTara     = $_POST['inpTara']     ?? '';
$inpBase     = $_POST['inpBase']     ?? '';

$ubicacion   = $_SESSION['ubicacion']  ?? '';
$usuario     = $_SESSION['nomUser']    ?? '';
$planillador = $_SESSION['planilla']   ?? '';
$doc         = $_SESSION['dcto']       ?? '';

$checSkin = isset($_POST['checSkin']) && $_POST['checSkin'] === 'on';
$checMap  = isset($_POST['checMap'])  && $_POST['checMap'] === 'on';

// Consultar rango de peso
$consulta = $conexion->prepare("SELECT * FROM `lineaxitem` WHERE codItem = ?");
$consulta->execute([$listItem]);
$data = $consulta->fetch(PDO::FETCH_ASSOC);

$pesoMin = $data['minimo'] ?? 0;
$pesoMax = $data['maximo'] ?? 0;
$nprod   = $data['nomItem'] ?? '';

// Definir valores por tipo de tara
$pesoTara = 0;
$bultos = 0;
$cajas = 0;
$cnastaPll = 0;
$cnastaPv = 0;
$ctillaPll = 0;
$ctillaPv = 0;

switch ($listTara) {
    case 0:
        $pesoTara = 0.06;
        $bultos = $inpTara;
        break;
    case 1:
        $pesoTara = 0.055;
        $cajas = $inpTara;
        break;
    case 2:
        $pesoTara = 2;
        $cnastaPll = $inpTara;
        break;
    case 3:
        $pesoTara = 2.5;
        $cnastaPv = $inpTara;
        break;
    case 4:
        $pesoTara = 1.5;
        $ctillaPll = $inpTara;
        break;
    case 5:
        $pesoTara = 2.3;
        $ctillaPv = $inpTara;
        break;
}

$taraCalculada = floatval($inpTara) * $pesoTara;
$descuentoBandeja = 0;

if ($checSkin) {
    $descuentoBandeja = $taraCalculada * 0.038;
} elseif ($checMap) {
    $descuentoBandeja = $taraCalculada * 0.030;
}


$empacado = floatval($inpUnidad) * floatval($inpTara);
$_SESSION['empacado']  = $empacado;

// Inicializar valores
$pesoNeto = null;
$valorProm = null;
$base = ($inpBase === '') ? 0 : floatval($inpBase) * 1.5;

// Solo calcular peso si es tipo peso
if ($tpRegistro == 3) {
    $inpPesoFloat = floatval($inpPeso);
    if ($inpPesoFloat <= 0 || $empacado == 0) {
        echo json_encode([
            'estado' => 'error_datos',
            'mensaje' => 'Peso o unidades no válidos para tipo peso.'
        ]);
        exit;
    }

    $pesoNeto = $inpPesoFloat - (($inpTara * $pesoTara) + $base) - $descuentoBandeja;
    $valorProm = $pesoNeto / $empacado;

    $_SESSION['listItem']  = $listItem;
$_SESSION['nprod']     = $nprod;
$_SESSION['pesoNeto']  = $pesoNeto;
$_SESSION['empacado']  = $empacado;
$_SESSION['inpLote']  = $inpLote;
$_SESSION['bultos']     = $bultos;
$_SESSION['cajas']      = $cajas;
$_SESSION['cnastaPll']  = $cnastaPll;
$_SESSION['cnastaPv']   = $cnastaPv;
$_SESSION['ctillaPll']  = $ctillaPll;
$_SESSION['ctillaPv']   = $ctillaPv;
$_SESSION['inpBase']    = $inpBase;


    if ($valorProm >= $pesoMin && $valorProm <= $pesoMax) {
        $sql = "INSERT INTO `mvdcto`(`TPDCTO`, `CODUBI`, `FECHA`, `ESTADO`, `USUARIO`, `CODPROD`, `NPROD`,
            `CANTIDAD`, `CANTEMPAQ`, `BULTOS`, `CAJAS`, `CNASTAPLL`, `CNASTAPV`, `CNASTILLAPLL`, `CNASTILLAPV`,
            `BASES`, `PLANILLADOR`, `LOTE`, `PESOPROM`)
            VALUES (?, ?, CURRENT_DATE(), 'NORMAL', ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, UPPER(?), ?, ?)";

        $stmt = $conexion->prepare($sql);
        $success = $stmt->execute([
            $doc,
            $ubicacion,
            $usuario,
            $listItem,
            $nprod,
            $pesoNeto,
            $empacado,
            $bultos,
            $cajas,
            $cnastaPll,
            $cnastaPv,
            $ctillaPll,
            $ctillaPv,
            $inpBase,
            $planillador,
            $inpLote,
            $valorProm

        ]);

        echo json_encode(['estado' => $success ? 'ok' : 'error_sql']);
    } else {
        echo json_encode([
            'estado' => 'error_peso_promedio',
            'valorProm' => round($valorProm, 3),
            'rangoMin' => $pesoMin,
            'rangoMax' => $pesoMax
        ]);
    }
    exit;
}

// Tipo Contado
elseif ($tpRegistro == 2) {
    
    // 🔹 Guardar en sesión
$_SESSION['listItem']  = $listItem;
$_SESSION['nprod']     = $nprod;
$_SESSION['pesoNeto']  = null;       // no aplica
$_SESSION['empacado']  = $empacado;
$_SESSION['inpLote']  = $inpLote;
$_SESSION['bultos']     = $bultos;
$_SESSION['cajas']      = $cajas;
$_SESSION['cnastaPll']  = $cnastaPll;
$_SESSION['cnastaPv']   = $cnastaPv;
$_SESSION['ctillaPll']  = $ctillaPll;
$_SESSION['ctillaPv']   = $ctillaPv;
$_SESSION['inpBase']    = $inpBase;

    $sql = "INSERT INTO `mvdcto`(`TPDCTO`, `CODUBI`, `FECHA`, `ESTADO`, `USUARIO`, `CODPROD`, `NPROD`,
        `CANTEMPAQ`, `BULTOS`, `CAJAS`, `CNASTAPLL`, `CNASTAPV`, `CNASTILLAPLL`, `CNASTILLAPV`,
        `BASES`, `PLANILLADOR`, `LOTE`, `PESOPROM`)
        VALUES (?, ?, CURRENT_DATE(), 'NORMAL', ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, UPPER(?), ?, ?)";

    $stmt = $conexion->prepare($sql);
    $success = $stmt->execute([
        $doc,
        $ubicacion,
        $usuario,
        $listItem,
        $nprod,
        $empacado,
        $bultos,
        $cajas,
        $cnastaPll,
        $cnastaPv,
        $ctillaPll,
        $ctillaPv,
        $inpBase,
        $planillador,
        $inpLote,
        $inpPesoProm
    ]);

    echo json_encode([
        'estado' => $success ? 'ok' : 'error_sql',
        'tipo' => 'contado',
        'mensaje' => $success ? 'Registro Contado realizado exitosamente' : $stmt->errorInfo()[2]
    ]);
    exit;
}

// Tipo Granel
else {

    $pesoNeto = floatval($inpPeso) - (($inpTara * $pesoTara) + $base) - $descuentoBandeja;

// 🔹 Guardar en sesión
$_SESSION['listItem']  = $listItem;
$_SESSION['nprod']     = $nprod;
$_SESSION['pesoNeto']  = $pesoNeto;
$_SESSION['empacado']  = null; 
$_SESSION['inpLote']  = $inpLote;  
$_SESSION['bultos']     = $bultos;
$_SESSION['cajas']      = $cajas;
$_SESSION['cnastaPll']  = $cnastaPll;
$_SESSION['cnastaPv']   = $cnastaPv;
$_SESSION['ctillaPll']  = $ctillaPll;
$_SESSION['ctillaPv']   = $ctillaPv;
$_SESSION['inpBase']    = $inpBase;


    $pesoNeto = floatval($inpPeso) - (($inpTara * $pesoTara) + $base) - $descuentoBandeja;
    $sql = "INSERT INTO `mvdcto`(`TPDCTO`, `CODUBI`, `FECHA`, `ESTADO`, `USUARIO`, `CODPROD`, `NPROD`,
        `CANTIDAD`, `BULTOS`, `CAJAS`, `CNASTAPLL`, `CNASTAPV`, `CNASTILLAPLL`, `CNASTILLAPV`,
        `BASES`, `PLANILLADOR`, `LOTE`)
        VALUES (?, ?, CURRENT_DATE(), 'NORMAL', ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, UPPER(?), ?)";

    $stmt = $conexion->prepare($sql);
    $success = $stmt->execute([
        $doc,
        $ubicacion,
        $usuario,
        $listItem,
        $nprod,
        $pesoNeto,
        $bultos,
        $cajas,
        $cnastaPll,
        $cnastaPv,
        $ctillaPll,
        $ctillaPv,
        $inpBase,
        $planillador,
        $inpLote
    ]);

    if ($success) {
        $_SESSION['mensaje'] = 'Registro Granel realizado de manera exitosa!';
        $_SESSION['tipo'] = 'success';
    } else {
        $_SESSION['mensaje'] = $stmt->errorInfo()[2];
        $_SESSION['tipo'] = 'danger';
    }

    header('location:../views/registro.php');
    exit;
}