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