Files
ventas_php/ajax/inventario-fisico.php

433 lines
13 KiB
PHP
Executable File

<?php
include_once('../init.php');
include_once('../config.php');
include_once(DOC_ROOT.'/libraries.php');
session_start();
$sucursalId = $_SESSION['idSuc'];
$Usr = $user->Info();
$smarty->assign('Usr', $Usr);
if(isset($_POST['action']))
$_POST['type'] = $_POST['action'];
switch($_POST["type"]){
case 'agregarReporte':
$inventario->setFecha(date('Y-m-d H:i:s'));
$inventario->setUsuarioId($Usr['usuarioId']);
$invFisicoId = $inventario->CrearInvFisico();
echo 'ok[#]';
echo $invFisicoId;
break;
case 'eliminarReporte':
$inventario->setInvFisicoId($_POST['invFisicoId']);
if($inventario->DeleteInvFisico()){
$resReportes = $inventario->EnumRepInvFis();
$items = array();
foreach($resReportes['items'] as $res){
$sucursal->setSucursalId($res['sucursalId']);
$res['sucursal'] = urldecode($sucursal->GetNameById());
$usuario->setUsuarioId($res['usuarioId']);
$res['usuario'] = urldecode($usuario->GetNameById());
$items[] = $res;
}
$resReportes['items'] = $items;
echo 'ok[#]';
$smarty->display(DOC_ROOT.'/templates/boxes/status.tpl');
echo "[#]";
$smarty->assign('resReportes',$resReportes);
$smarty->display(DOC_ROOT.'/templates/lists/inventario-fisico.tpl');
}//if
break;
case 'updateSucursal':
$inventario->setSucursalId($_POST['sucursalId']);
$inventario->setInvFisicoId($_POST['invFisicoId']);
$inventario->UpdSucInvFisico();
echo 'ok[#]';
echo 'La sucursal fue actualizada correctamente.';
break;
case 'agregarProducto':
$invFisicoId = $_POST['invFisicoId'];
$productoId = $_POST['productoId'];
$cantidad = $_POST['cantidad'];
if($productoId == ""){
echo 'fail[#]';
echo 'Por favor, seleccione el producto.';
exit;
}
$inventario->setInvFisicoId($invFisicoId);
$inventario->setProductoId($productoId);
if($inventario->ExistProdInvFis()){
echo 'fail[#]';
echo 'El producto ya fue agregado anteriormente.';
exit;
}
if($cantidad == ""){
echo 'fail[#]';
echo 'Por favor, ingrese la cantidad f&iacute;sica del producto.';
exit;
}
$inventario->setInvFisicoId($invFisicoId);
$inventario->setProductoId($productoId);
$inventario->setCantidad($cantidad);
$inventario->SaveInvProd();
//Obtenemos los Productos
$inventario->setInvFisicoId($invFisicoId);
$resProds = $inventario->GetInvFisicoProds();
$productos = array();
foreach($resProds as $res){
$producto->setProductoId($res['productoId']);
$infP = $producto->Info();
$proveedor->setProveedorId($infP['proveedorId']);
$res['proveedor'] = utf8_encode($proveedor->GetNameById());
$res['codigoBarra'] = $infP['codigoBarra'];
$res['modelo'] = utf8_encode($infP['modelo']);
$productos[] = $res;
}
echo 'ok[#]';
echo 'El producto fue agregado correctamente.';
echo '[#]';
$smarty->assign('productos',$productos);
$smarty->display(DOC_ROOT.'/templates/lists/inventario-fisico-prods.tpl');
break;
case 'eliminarProducto':
$invFisProdId = $_POST['invFisProdId'];
$inventario->setInvFisProdId($invFisProdId);
$infP = $inventario->InfoInvFisProd();
$inventario->DelInvFisProd();
//Obtenemos los Productos
$inventario->setInvFisicoId($infP['invFisicoId']);
$resProds = $inventario->GetInvFisicoProds();
$productos = array();
foreach($resProds as $res){
$producto->setProductoId($res['productoId']);
$infP = $producto->Info();
$proveedor->setProveedorId($infP['proveedorId']);
$res['proveedor'] = utf8_encode($proveedor->GetNameById());
$res['codigoBarra'] = $infP['codigoBarra'];
$res['modelo'] = utf8_encode($infP['modelo']);
$productos[] = $res;
}
echo 'ok[#]';
echo 'El producto fue eliminado correctamente.';
echo '[#]';
$smarty->assign('productos',$productos);
$smarty->display(DOC_ROOT.'/templates/lists/inventario-fisico-prods.tpl');
break;
case 'buscarProducto':
$sucursalId = $_POST['sucursalId'];
$codigoBarra = trim($_POST['codigoBarra']);
$producto->setCodigoBarra($codigoBarra);
$productoId = $producto->GetProductIdByCodigo();
if(!$productoId){
echo 'fail[#]';
echo 'No se encontr&oacute; el producto con ese c&oacute;digo. Por favor, verifique.';
exit;
exit;
}
$producto->setProductoId($productoId);
$nombre = $producto->GetModeloById();
echo 'ok[#]';
echo '&nbsp;'.utf8_encode($nombre);
echo '[#]';
echo $productoId;
break;
case 'ajustarInventario':
$invFisicoId = $_POST['invFisicoId'];
$inventario->setInvFisicoId($invFisicoId);
$infR = $inventario->InfoInvFisico();
$sucursalId = $infR['sucursalId'];
//Metemos los Productos que estan disponibles y no fueron agregados al reporte
$sql = 'SELECT productoId FROM inventario
WHERE sucursalId = '.$sucursalId.'
AND status = "Disponible"
GROUP BY productoId';
$util->DBSelect($_SESSION['empresaId'])->setQuery($sql);
$productos = $util->DBSelect($_SESSION['empresaId'])->GetResult();
foreach($productos as $res){
$sql = 'SELECT invFisProdId FROM inventarioFisicoProd
WHERE invFisicoId = '.$invFisicoId.'
AND productoId = '.$res['productoId'];
$util->DBSelect($_SESSION['empresaId'])->setQuery($sql);
$existe = $util->DBSelect($_SESSION['empresaId'])->GetSingle();
if(!$existe){
$sql = 'INSERT INTO inventarioFisicoProd (invFisicoId, productoId, cantidad, disponible)
VALUES('.$invFisicoId.', '.$res['productoId'].', 0, 0)';
$util->DBSelect($_SESSION['empresaId'])->setQuery($sql);
$util->DBSelect($_SESSION['empresaId'])->InsertData();
}//if
}
//Ajustamos los Productos
$resProds = $inventario->GetInvFisicoProds();
foreach($resProds as $res){
$productoId = $res['productoId'];
$inventario->setProductoId($productoId);
$inventario->setSucursalId($sucursalId);
$disponible = $inventario->GetDispByProd();
$cantAjustar = $res['cantidad'];
if($disponible > $cantAjustar){
$cantidad = $disponible - $cantAjustar;
$modo = 'Eliminar';
}else{
$cantidad = $cantAjustar - $disponible;
$modo = 'Agregar';
}
if($modo == 'Eliminar'){
$inventario->setSucursalId($sucursalId);
$inventario->setProductoId($productoId);
$inventario->setCantidad($cantidad);
$inventario->AjustarProductos();
}else{
$sql = 'SELECT proveedorId FROM producto WHERE productoId = "'.$productoId.'"';
$util->DBSelect($_SESSION["empresaId"])->setQuery($sql);
$proveedorId = $util->DBSelect($_SESSION["empresaId"])->GetSingle();
//Obtenemos el Sig. No de Pedido
$sql = 'SELECT MAX(noPedido) FROM pedido';
$util->DBSelect($_SESSION["empresaId"])->setQuery($sql);
$noPedido = $util->DBSelect($_SESSION["empresaId"])->GetSingle();
$noPedido++;
//CARGAMOS LOS PRODUCTOS
$sql = 'INSERT INTO pedido
(
proveedorId,
folioProv,
noPedido,
fecha,
fechaEntrega,
metodoCompra,
resurtido,
usuarioId,
fechaAprobacion,
userIdAprobacion,
fechaDistribucion,
userIdDistribucion,
fechaAutorizacion,
userIdAutorizacion,
fechaOrdenCompEnv,
userIdOrdenCompEnv,
fechaOrdenCompIng,
userIdOrdenCompIng,
ajuste,
status
)VALUES(
"'.$proveedorId.'",
"FOLIO'.$noPedido.'",
"'.$noPedido.'",
"'.date('Y-m-d H:i:s').'",
"'.date('Y-m-d').'",
"conIva",
"0",
"2",
"'.date('Y-m-d H:i:s').'",
"3",
"'.date('Y-m-d H:i:s').'",
"6",
"'.date('Y-m-d H:i:s').'",
"3",
"'.date('Y-m-d H:i:s').'",
"2",
"'.date('Y-m-d H:i:s').'",
"4",
"1",
"EnvSuc"
)';
$util->DBSelect($_SESSION["empresaId"])->setQuery($sql);
$pedidoId = $util->DBSelect($_SESSION["empresaId"])->InsertData();
$sql = 'SELECT * FROM producto
WHERE productoId = '.$productoId;
$util->DBSelect($_SESSION["empresaId"])->setQuery($sql);
$infP = $util->DBSelect($_SESSION["empresaId"])->GetRow();
$sql = 'INSERT INTO pedidoColor (pedidoId, productoId, colorId, cantidad)
VALUES ("'.$pedidoId.'","'.$productoId.'", 2, '.$cantidad.')';
$util->DBSelect($_SESSION["empresaId"])->setQuery($sql);
$util->DBSelect($_SESSION["empresaId"])->InsertData();
$sql = 'INSERT INTO pedidoTalla (pedidoId, productoId, tallaId, cantidad)
VALUES ("'.$pedidoId.'","'.$productoId.'", 1, 1)';
$util->DBSelect($_SESSION["empresaId"])->setQuery($sql);
$util->DBSelect($_SESSION["empresaId"])->InsertData();
$sql = 'INSERT INTO pedidoDistribucion (pedidoId, productoId, sucursalId, cantidad, status)
VALUES ("'.$pedidoId.'","'.$productoId.'", "'.$sucursalId.'", "'.$cantidad.'", "Enviado")';
$util->DBSelect($_SESSION["empresaId"])->setQuery($sql);
$util->DBSelect($_SESSION["empresaId"])->InsertData();
$sql = 'INSERT INTO pedidoProducto (pedidoId, productoId, prodCatId, prodSubcatId, totalLote,
cantLotes, cantPrendas, prendasComp, costo, precioVenta, status)
VALUES ("'.$pedidoId.'","'.$productoId.'", "'.$infP['prodCatId'].'", "'.$infP['prodSubcatId'].'", "'.$cantidad.'",
1, "'.$cantidad.'","1","'.$infP['costo'].'", "'.$infP['precioVentaIva'].'" ,"Aprobado")';
$util->DBSelect($_SESSION["empresaId"])->setQuery($sql);
$util->DBSelect($_SESSION["empresaId"])->InsertData();
//Envios
$sql = 'INSERT INTO envio (sucursalId, fecha, usuarioId, fechaRecibido, userIdRecibido, tipo, status)
VALUES ("'.$sucursalId.'","'.date('Y-m-d H:i:s').'", 4, "'.date('Y-m-d H:i:s').'", 5, "CT", "Recibido")';
$util->DBSelect($_SESSION["empresaId"])->setQuery($sql);
$envioId = $util->DBSelect($_SESSION["empresaId"])->InsertData();
$sql = 'INSERT INTO envioPedido (envioId, pedidoId, noCajas)
VALUES ("'.$envioId.'", "'.$pedidoId.'", 1)';
$util->DBSelect($_SESSION["empresaId"])->setQuery($sql);
$util->DBSelect($_SESSION["empresaId"])->InsertData();
$sql = 'INSERT INTO envioRecibir (envioId, pedidoId, productoId, noPrendas, completo)
VALUES ("'.$envioId.'", "'.$pedidoId.'", "'.$productoId.'", "'.$cantidad.'", "1")';
$util->DBSelect($_SESSION["empresaId"])->setQuery($sql);
$util->DBSelect($_SESSION["empresaId"])->InsertData();
$sql = 'SELECT * FROM producto
WHERE productoId = '.$productoId;
$util->DBSelect($_SESSION["empresaId"])->setQuery($sql);
$infP = $util->DBSelect($_SESSION["empresaId"])->GetRow();
for($k=0; $k<$cantidad; $k++){
$sql = 'INSERT INTO inventario (envioId, pedidoId, sucursalId, productoId, prodItemId, precioVenta, cantidad, status)
VALUES ("'.$envioId.'", "'.$pedidoId.'", "'.$sucursalId.'", "'.$productoId.'", "'.$productoId.'", "'.$infP['precioVentaIva'].'", "1", "Disponible")';
$util->DBSelect($_SESSION["empresaId"])->setQuery($sql);
$util->DBSelect($_SESSION["empresaId"])->InsertData();
}//for
}//else
//Actualizamos la cantidad por el disponible en caso de
//que hayan vendido algo en ultimo momento
$sql = 'UPDATE inventarioFisicoProd SET disponible = "'.$disponible.'"
WHERE invFisProdId = "'.$res['invFisProdId'].'"';
$util->DBSelect($_SESSION["empresaId"])->setQuery($sql);
$util->DBSelect($_SESSION["empresaId"])->UpdateData();
}//foreach
//Actualizamos el inventario
$sql = 'UPDATE inventarioFisico SET status = "Procesado", fechaAjuste = "'.date('Y-m-d H:i:s').'"
WHERE invFisicoId = "'.$invFisicoId.'"';
$util->DBSelect($_SESSION["empresaId"])->setQuery($sql);
$util->DBSelect($_SESSION["empresaId"])->UpdateData();
//Fin Ajustar
//Obtenemos los Productos
$inventario->setInvFisicoId($invFisicoId);
$resProds = $inventario->GetInvFisicoProds();
$productos = array();
foreach($resProds as $res){
$producto->setProductoId($res['productoId']);
$infP = $producto->Info();
$proveedor->setProveedorId($infP['proveedorId']);
$res['proveedor'] = utf8_encode($proveedor->GetNameById());
$res['codigoBarra'] = $infP['codigoBarra'];
$res['modelo'] = utf8_encode($infP['modelo']);
$productos[] = $res;
}
$util->setError(20139,'complete');
$util->PrintErrors();
echo 'ok[#]';
$smarty->display(DOC_ROOT.'/templates/boxes/status.tpl');
echo '[#]';
$smarty->assign('productos',$productos);
$smarty->display(DOC_ROOT.'/templates/lists/inventario-fisico-prods.tpl');
break;
}//switch
?>