File "controlPesoProm.php"

Full Path: C:/wamp64/www/INVENTALMACEN/login/controlPesoProm.php
File size: 7.54 KB
MIME-type: text/x-php
Charset: utf-8

<?php
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);


$nprod = $data['nomItem'] ?? '';

// Asignar valores por defecto a los campos numéricos
$empacado = floatval($inpUnidad) ?: 0;
$bultos = 0;
$cajas = 0;
$cnastaPll = 0;
$cnastaPv = 0;
$ctillaPll = 0;
$ctillaPv = 0;

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

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

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

/*
$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);


// 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;

    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) {

    // Normalizar inpPesoProm
if ($inpPesoProm === '' || $inpPesoProm === null) {
    $inpPesoProm = null; // si quieres permitir NULL en la BD
} else {
    $inpPesoProm = str_replace(',', '.', $inpPesoProm); // coma → punto
    $inpPesoProm = (float)$inpPesoProm;
}


    $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);
    $stmt->bindValue(17, $inpPesoProm, is_null($inpPesoProm) ? PDO::PARAM_NULL : PDO::PARAM_STR);

    $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;
    $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;
}
*/