2567 lines
64 KiB
PHP
Executable File
2567 lines
64 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 'addVenta':
|
|
|
|
$smarty->assign('DOC_ROOT', DOC_ROOT);
|
|
$smarty->display(DOC_ROOT.'/templates/boxes/agregar-venta-popup.tpl');
|
|
|
|
break;
|
|
|
|
case 'cancelVenta':
|
|
|
|
$ventaId = $_POST['ventaId'];
|
|
|
|
$venta->setVentaId($ventaId);
|
|
$venta->setUsuarioId($_SESSION['loginKey']);
|
|
|
|
if(!$venta->CancelVenta()){
|
|
echo 'fail[#]';
|
|
exit;
|
|
}
|
|
|
|
//Devolvemos los productos a inventario
|
|
$venta->DevolverProductos();
|
|
|
|
$venta->setSucursalId($sucursalId);
|
|
$ventas = $venta->Enumerate();
|
|
|
|
$items = array();
|
|
foreach($ventas['items'] as $res){
|
|
|
|
$fecha = date('d-m-Y',strtotime($res['fecha']));
|
|
$hora = date('H:i:s',strtotime($res['fecha']));
|
|
$fecha = $util->FormatDateDMMMY($fecha);
|
|
$res['fecha'] = $fecha.' '.$hora;
|
|
|
|
$usuario->setUsuarioId($res['usuarioId']);
|
|
$res['usuario'] = utf8_encode($usuario->GetNameById());
|
|
|
|
$sucursal->setSucursalId($res['sucursalId']);
|
|
$res['sucursal'] = urldecode($sucursal->GetNameById());
|
|
|
|
$items[] = $res;
|
|
}
|
|
$ventas['items'] = $items;
|
|
|
|
echo 'ok[#]';
|
|
$smarty->display(DOC_ROOT.'/templates/boxes/status.tpl');
|
|
echo '[#]';
|
|
|
|
$smarty->assign('ventas', $ventas);
|
|
$smarty->assign('DOC_ROOT', DOC_ROOT);
|
|
$smarty->display(DOC_ROOT.'/templates/lists/ventas.tpl');
|
|
|
|
break;
|
|
|
|
case 'cancelVentaCentral':
|
|
|
|
$ventaId = $_POST['ventaId'];
|
|
|
|
$venta->setVentaId($ventaId);
|
|
$infV = $venta->Info();
|
|
|
|
$venta->setUsuarioId($_SESSION['loginKey']);
|
|
|
|
if(!$venta->CancelVenta()){
|
|
echo 'fail[#]';
|
|
exit;
|
|
}
|
|
|
|
//Devolvemos los productos a inventario
|
|
$venta->DevolverProductos();
|
|
|
|
$venta->setSucursalId($infV['sucursalId']);
|
|
$ventas = $venta->Enumerate();
|
|
|
|
$items = array();
|
|
foreach($ventas['items'] as $res){
|
|
|
|
$fecha = date('d-m-Y',strtotime($res['fecha']));
|
|
$hora = date('H:i:s',strtotime($res['fecha']));
|
|
$fecha = $util->FormatDateDMMMY($fecha);
|
|
$res['fecha'] = $fecha.' '.$hora;
|
|
|
|
$usuario->setUsuarioId($res['usuarioId']);
|
|
$res['usuario'] = utf8_encode($usuario->GetNameById());
|
|
|
|
$sucursal->setSucursalId($res['sucursalId']);
|
|
$res['sucursal'] = urldecode($sucursal->GetNameById());
|
|
|
|
$items[] = $res;
|
|
}
|
|
$ventas['items'] = $items;
|
|
|
|
echo 'ok[#]';
|
|
$smarty->display(DOC_ROOT.'/templates/boxes/status.tpl');
|
|
echo '[#]';
|
|
|
|
$smarty->assign('ventas', $ventas);
|
|
$smarty->assign('DOC_ROOT', DOC_ROOT);
|
|
$smarty->display(DOC_ROOT.'/templates/lists/ventas.tpl');
|
|
|
|
break;
|
|
|
|
case 'deleteVenta2':
|
|
|
|
$ventaId = $_POST['ventaId'];
|
|
|
|
$venta->setVentaId($ventaId);
|
|
|
|
if(!$venta->DeleteVenta2()){
|
|
echo 'fail[#]';
|
|
exit;
|
|
}
|
|
|
|
//Devolvemos los productos a inventario
|
|
$venta->DevolverProductos2();
|
|
|
|
$venta->setSucursalId($sucursalId);
|
|
$ventas = $venta->Enumerate2();
|
|
|
|
$items = array();
|
|
foreach($ventas['items'] as $res){
|
|
|
|
$fecha = date('d-m-Y',strtotime($res['fecha']));
|
|
$hora = date('H:i:s',strtotime($res['fecha']));
|
|
$fecha = $util->FormatDateDMMMY($fecha);
|
|
$res['fecha'] = $fecha.' '.$hora;
|
|
|
|
$usuario->setUsuarioId($res['usuarioId']);
|
|
$res['usuario'] = utf8_encode($usuario->GetNameById());
|
|
|
|
$sucursal->setSucursalId($res['sucursalId']);
|
|
$res['sucursal'] = urldecode($sucursal->GetNameById());
|
|
|
|
$items[] = $res;
|
|
}
|
|
$ventas['items'] = $items;
|
|
|
|
echo 'ok[#]';
|
|
$smarty->display(DOC_ROOT.'/templates/boxes/status.tpl');
|
|
echo '[#]';
|
|
|
|
$smarty->assign('ventas', $ventas);
|
|
$smarty->assign('DOC_ROOT', DOC_ROOT);
|
|
$smarty->display(DOC_ROOT.'/templates/lists/ventas.tpl');
|
|
|
|
break;
|
|
|
|
case 'cobrarVta':
|
|
|
|
$vendedorId = $_POST['vendedorId'];
|
|
|
|
$_SESSION['pagosVta'] = array();
|
|
|
|
$conceptos = $_SESSION['conceptos'];
|
|
|
|
if(count($conceptos) == 0){
|
|
echo 'fail[#]';
|
|
echo 'Debe agregar al menos un producto.';
|
|
exit;
|
|
}
|
|
|
|
if($vendedorId == ''){
|
|
echo 'fail[#]';
|
|
echo 'Por favor, seleccione al vendedor.';
|
|
exit;
|
|
}
|
|
|
|
$abonoMon = 0;
|
|
$saldoAbonar = 0;
|
|
$subtotal = 0;
|
|
foreach($conceptos as $res){
|
|
|
|
if($res['descuento'] == '100%')
|
|
$res['total'] = 0;
|
|
|
|
if($res['promocionId']){
|
|
$promocion->setPromocionId($res['promocionId']);
|
|
$infPR = $promocion->Info();
|
|
|
|
if($infPR['aplica'] == 'CompraXabonoM'){
|
|
$abonoMon = 1;
|
|
$saldoAbonar += ($infPR['valorDesc'] / 100) * $res['total'];
|
|
}
|
|
}
|
|
|
|
$subtotal += $res['total'];
|
|
}
|
|
|
|
$saldoAbonar = number_format($saldoAbonar,2,'.','');
|
|
|
|
$total = $subtotal;
|
|
|
|
//Obtenemos el total si es Venta por Devolucion
|
|
$infDev = $_SESSION['infDev'];
|
|
if($infDev){
|
|
$card['metodoPagoId'] = 6;
|
|
$card['cantidad'] = $infDev['total'];
|
|
$totalPagado = $infDev['total'];
|
|
|
|
if($totalPagado < $total)
|
|
$porPagar = $total - $totalPagado;
|
|
else
|
|
$cambio = $totalPagado - $total;
|
|
}else{
|
|
$card['metodoPagoId'] = 1;
|
|
$card['cantidad'] = '';
|
|
$totalPagado = 0;
|
|
$porPagar = 0;
|
|
$cambio = 0;
|
|
}
|
|
|
|
//$card['saldoMon'] = '0.00';
|
|
|
|
$pagos[] = $card;
|
|
|
|
$_SESSION['pagosVta'] = $pagos;
|
|
|
|
$metodosPago = $metodoPago->EnumerateAll();
|
|
$metodosPago = $util->EncodeResult($metodosPago);
|
|
|
|
echo 'ok[#]';
|
|
|
|
$smarty->assign('abonoMon', $abonoMon);
|
|
$smarty->assign('saldoAbonar', $saldoAbonar);
|
|
$smarty->assign('pagos', $pagos);
|
|
$smarty->assign('total', $total);
|
|
$smarty->assign('totalPagado', $totalPagado);
|
|
$smarty->assign('porPagar', $porPagar);
|
|
$smarty->assign('cambio', $cambio);
|
|
$smarty->assign('metodosPago', $metodosPago);
|
|
$smarty->assign('DOC_ROOT', DOC_ROOT);
|
|
$smarty->display(DOC_ROOT.'/templates/boxes/cobrar-venta-popup.tpl');
|
|
|
|
break;
|
|
|
|
case 'cobrarVtaDesc':
|
|
|
|
$ventaId = $_POST['ventaId'];
|
|
|
|
$_SESSION['pagosVta'] = array();
|
|
|
|
$venta->setVentaId($ventaId);
|
|
$info = $venta->Info();
|
|
|
|
$total = number_format($info['totalDesc'],2,'.','');
|
|
|
|
//Agregamos el Pago en Efectivo por default
|
|
|
|
$card['metodoPagoId'] = 1;
|
|
$card['cantidad'] = '';
|
|
$card['saldoFav'] = '0.00';
|
|
//$card['saldoMon'] = '0.00';
|
|
|
|
$pagos[] = $card;
|
|
|
|
$_SESSION['pagosVta'] = $pagos;
|
|
|
|
$metodosPago = $metodoPago->EnumerateAll();
|
|
$metodosPago = $util->EncodeResult($metodosPago);
|
|
|
|
echo 'ok[#]';
|
|
|
|
$smarty->assign('pagos', $pagos);
|
|
$smarty->assign('ventaId', $ventaId);
|
|
$smarty->assign('total', $total);
|
|
$smarty->assign('metodosPago', $metodosPago);
|
|
$smarty->assign('DOC_ROOT', DOC_ROOT);
|
|
$smarty->display(DOC_ROOT.'/templates/boxes/cobrar-venta-popup.tpl');
|
|
|
|
break;
|
|
|
|
case 'buscarProducto':
|
|
|
|
$proveedores = $proveedor->EnumerateAll();
|
|
$proveedores = $util->EncodeResult($proveedores);
|
|
|
|
$categorias = $prodCat->EnumerateAll();
|
|
$categorias = $util->EncodeResult($categorias);
|
|
|
|
$categorias = $prodCat->EnumerateAll();
|
|
$categorias = $util->EncodeResult($categorias);
|
|
|
|
$atribVal->setAtributoId(1);
|
|
$tallas = $atribVal->EnumerateAll();
|
|
$tallas = $util->EncodeResult($tallas);
|
|
|
|
$atribVal->setAtributoId(2);
|
|
$colores = $atribVal->EnumerateAll();
|
|
$colores = $util->EncodeResult($colores);
|
|
|
|
echo 'ok[#]';
|
|
|
|
$smarty->assign('tallas', $tallas);
|
|
$smarty->assign('colores', $colores);
|
|
$smarty->assign('categorias', $categorias);
|
|
$smarty->assign('proveedores', $proveedores);
|
|
$smarty->assign('DOC_ROOT', DOC_ROOT);
|
|
$smarty->display(DOC_ROOT.'/templates/boxes/buscar-producto-venta-popup.tpl');
|
|
|
|
break;
|
|
|
|
case 'saveVenta':
|
|
|
|
$tipo = $_POST['tipo'];
|
|
$codigoAbonar = trim($_POST['codigoAbonar']);
|
|
$idVendedor = $_POST['idVendedor'];
|
|
|
|
if($idVendedor == ''){
|
|
echo 'fail[#]';
|
|
echo 'Por favor, seleccione al vendedor.';
|
|
exit;
|
|
}
|
|
|
|
//Guardamos los Pagos
|
|
|
|
$resPagos = $_POST['metodoPago'];
|
|
|
|
$resPagos = $util->CheckArray($resPagos);
|
|
|
|
$pagoTotal = 0;
|
|
$pagosVta = array();
|
|
foreach($resPagos as $k => $val){
|
|
|
|
$card['metodoPagoId'] = $val;
|
|
$card['cantidad'] = trim($_POST['cantidad_'.$k]);
|
|
$idVta = trim($_POST['idVta_'.$k]);
|
|
|
|
$card['idVta'] = $idVta;
|
|
$card['devolucionId'] = $devolucionId;
|
|
|
|
$pagoTotal += $card['cantidad'];
|
|
|
|
$pagosVta[] = $card;
|
|
|
|
}
|
|
|
|
if(count($pagosVta) == 0 && $tipo != 'descuento'){
|
|
echo 'fail[#]';
|
|
echo 'Debe agregar al menos un pago.';
|
|
exit;
|
|
}
|
|
|
|
foreach($pagosVta as $res){
|
|
|
|
if($res['metodoPagoId'] == ''){
|
|
echo 'fail[#]';
|
|
echo utf8_encode('Debe elegir la Forma de Pago.');
|
|
exit;
|
|
}
|
|
|
|
if($res['cantidad'] == ''){
|
|
echo 'fail[#]';
|
|
echo 'Debe ingresar la cantidad.';
|
|
exit;
|
|
}
|
|
|
|
}//foreach
|
|
|
|
$conceptos = $_SESSION['conceptos'];
|
|
|
|
if(count($conceptos) == 0){
|
|
echo 'fail[#]';
|
|
echo 'Debe agregar al menos un producto.';
|
|
exit;
|
|
}
|
|
|
|
//Obtenemos los Totales
|
|
|
|
$abonoMon = 0;
|
|
$saldoAbonar = 0;
|
|
$total = 0;
|
|
$promocionId = 0;
|
|
foreach($conceptos as $res){
|
|
|
|
if($res['descuento'] == '100%')
|
|
$res['total'] = 0;
|
|
|
|
$total += $res['total'];
|
|
|
|
if($res['promocionId']){
|
|
|
|
$promocionId = $res['promocionId'];
|
|
|
|
$promocion->setPromocionId($res['promocionId']);
|
|
$infPR = $promocion->Info();
|
|
|
|
if($infPR['aplica'] == 'CompraXabonoM'){
|
|
$abonoMon = 1;
|
|
$saldoAbonar += ($infPR['valorDesc'] / 100) * $res['total'];
|
|
}
|
|
|
|
}//if
|
|
|
|
}//foreach
|
|
|
|
if($abonoMon){
|
|
|
|
if($codigoAbonar != ''){
|
|
|
|
$saldoAbonar = number_format($saldoAbonar,2,'.','');
|
|
|
|
$monedero->setCodigo($codigoAbonar);
|
|
$monederoId = $monedero->GetIdByCodigo();
|
|
|
|
if(!$monederoId){
|
|
echo 'fail[#]';
|
|
echo 'El Codigo del Monedero o Tarjeta No existe. Por favor, verifique.';
|
|
exit;
|
|
}
|
|
|
|
}
|
|
|
|
}//if
|
|
|
|
//Obtenemos los Totales
|
|
|
|
$total = 0;
|
|
foreach($conceptos as $res){
|
|
if($res['descuento'] == '100%')
|
|
$res['total'] = 0;
|
|
|
|
$total += $res['total'];
|
|
}
|
|
|
|
//Checamos si es Venta de Mayoreo, ya que no aplica en el Buen Fin.
|
|
|
|
if($tipo == 'descuento'){
|
|
|
|
$idPromo = $promocion->GetBuenFinIdActivo();
|
|
|
|
if($idPromo){
|
|
if($total >= 2000){
|
|
|
|
$promocion->setPromocionId($idPromo);
|
|
$promo = $promocion->Info();
|
|
|
|
$fechaHoy = date('Y-m-d');
|
|
|
|
if($fechaHoy >= $promo['fechaIni'] && $fechaHoy <= $promo['fechaFin']){
|
|
echo 'fail[#]';
|
|
echo 'El descuento No Aplica para compras de mayoreo durante el Buen Fin.';
|
|
exit;
|
|
}
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
if($pagoTotal < $total && $tipo != 'descuento'){
|
|
echo 'addPago[#]';
|
|
exit;
|
|
}
|
|
|
|
$sucursal->setSucursalId($sucursalId);
|
|
$porcIva = $sucursal->GetIva();
|
|
$porcIva = $porcIva / 100;
|
|
|
|
$subtotal = $total / (1 + $porcIva);
|
|
$subtotal = number_format($subtotal,2,'.','');
|
|
|
|
$iva = $subtotal * $porcIva;
|
|
$iva = number_format($iva,2,'.','');
|
|
|
|
$fecha = date('Y-m-d H:i:s');
|
|
|
|
$venta->setSucursalId($sucursalId);
|
|
$folio = $venta->GetNextFolio();
|
|
|
|
$venta->setSucursalId($sucursalId);
|
|
$venta->setUsuarioId($_SESSION['loginKey']);
|
|
$venta->setVendedorId($idVendedor);
|
|
$venta->setFolio($folio);
|
|
$venta->setFecha($fecha);
|
|
$venta->setPromocionId($promocionId);
|
|
$venta->setSubtotal($subtotal);
|
|
$venta->setIva($iva);
|
|
$venta->setTotal($total);
|
|
$venta->setPago($pagoTotal);
|
|
|
|
if($tipo == 'descuento')
|
|
$venta->setStatus('Descuento');
|
|
else
|
|
$venta->setStatus('Activo');
|
|
|
|
$ventaId = $venta->Save();
|
|
$ventaIdActual = $ventaId;
|
|
|
|
//Guardamos los Productos
|
|
|
|
foreach($conceptos as $res){
|
|
|
|
$prodItemId = $res['prodItemId'];
|
|
|
|
$producto->setProdItemId($prodItemId);
|
|
$info = $producto->GetInfoItemById();
|
|
|
|
$venta->setVentaId($ventaId);
|
|
$venta->setPromocionId($res['promocionId']);
|
|
$venta->setCantidad($res['cantidad']);
|
|
$venta->setPrecioUnitario($res['precio']);
|
|
$venta->setTotal($res['total']);
|
|
|
|
if($res['tipoProd'] == 'producto'){
|
|
$venta->setProdItemId($prodItemId);
|
|
$venta->setProductoId($info['productoId']);
|
|
$venta->setMonederoId(0);
|
|
}else{
|
|
$venta->setMonederoId($prodItemId);
|
|
$venta->setProdItemId(0);
|
|
$venta->setProductoId(0);
|
|
|
|
$monedero->setMonederoId($prodItemId);
|
|
$monedero->setStatus('Vendido');
|
|
$monedero->UpdateStatus();
|
|
}
|
|
|
|
if($res['descuento'] > 0){
|
|
$venta->setTipoDesc('Porcentaje');
|
|
$venta->setValDesc(100);
|
|
}else{
|
|
$venta->setTipoDesc('');
|
|
$venta->setValDesc(0);
|
|
}
|
|
|
|
$venta->SaveProducto();
|
|
|
|
//Actualizamos el Status de los Productos a Vendido
|
|
$venta->setUsuarioId($_SESSION['loginKey']);
|
|
if($res['tipoProd'] == 'producto'){
|
|
$venta->setProdItemId($info['productoId']);
|
|
$venta->VenderProductos();
|
|
}
|
|
|
|
}//foreach
|
|
|
|
//Guardamos la Devolucion
|
|
|
|
if(count($_SESSION['infDev'])){
|
|
|
|
$ventaId = $_SESSION['infDev']['ventaId'];
|
|
|
|
//Obtenemos la informacion de la Venta
|
|
|
|
$devolucion->setVentaId($ventaId);
|
|
$infV = $devolucion->InfoVenta();
|
|
$totalP = $devolucion->GetCantAllProds();
|
|
|
|
$fecha = date('Y-m-d H:i:s');
|
|
|
|
$conceptosD = $_SESSION['conceptosD'];
|
|
|
|
$totalD = 0;
|
|
foreach($conceptosD as $res)
|
|
$totalD += $res['total'];
|
|
|
|
$devolucion->setVentaId($ventaId);
|
|
$devolucion->setSucursalId($sucursalId);
|
|
$devolucion->setUsuarioId($_SESSION['loginKey']);
|
|
$devolucion->setFecha($fecha);
|
|
$devolucion->setTotal($totalD);
|
|
|
|
$devolucionId = $devolucion->Save();
|
|
|
|
//Guardamos los Productos
|
|
|
|
foreach($conceptosD as $res){
|
|
|
|
$prodItemId = $res['prodItemId'];
|
|
|
|
$producto->setProdItemId($prodItemId);
|
|
$info = $producto->GetInfoItemById();
|
|
|
|
$devolucion->setDevolucionId($devolucionId);
|
|
$devolucion->setProdItemId($prodItemId);
|
|
$devolucion->setProductoId($info['productoId']);
|
|
$devolucion->setCantidad($res['cantidad']);
|
|
$devolucion->setPrecioUnitario($res['precio']);
|
|
$devolucion->setTotal($res['total']);
|
|
|
|
$devolucion->SaveProducto();
|
|
|
|
//Marcamos como devueltos los productos
|
|
$venta->setVentaId($_SESSION['infDev']['ventaId']);
|
|
$venta->setProductoId($info['productoId']);
|
|
$venta->setCantidad($res['cantidad']);
|
|
$venta->MarcarProdDevueltos();
|
|
|
|
//Devolvemos los productos
|
|
$venta->DevolverProdsByCant2();
|
|
|
|
}//foreach
|
|
|
|
//Cancelamos el ticket y creamos el nuevo
|
|
$devolucion->setSucursalId($sucursalId);
|
|
$devolucion->setDevolucionId($devolucionId);
|
|
$devolucion->CancelarTicket();
|
|
|
|
}//if
|
|
|
|
//Fin de la Devolucion
|
|
|
|
//Guardamos los Pagos
|
|
|
|
foreach($pagosVta as $res){
|
|
|
|
$venta->setVentaId($ventaIdActual);
|
|
$venta->setMetodoPagoId($res['metodoPagoId']);
|
|
$venta->setMonederoId($res['monederoId']);
|
|
$venta->setCantidad($res['cantidad']);
|
|
|
|
if($res['metodoPagoId'] == 6)
|
|
$venta->setDevolucionId($devolucionId);
|
|
else
|
|
$venta->setDevolucionId(0);
|
|
|
|
$venta->SavePago();
|
|
|
|
}//foreach
|
|
|
|
$_SESSION['pagosVta'] = array();
|
|
|
|
$conceptos = array();
|
|
$_SESSION['conceptos'] = array();
|
|
|
|
//Generamos Registro en la Tabla ControlVenta
|
|
$venta->setUsuarioId($_SESSION['loginKey']);
|
|
$venta->setSucursalId($sucursalId);
|
|
$venta->ControlVenta();
|
|
|
|
//Checamos nuevamente si se descontaron los productos de inventario.
|
|
$venta->setVentaId($ventaIdActual);
|
|
$venta->CheckProdInv();
|
|
|
|
$_SESSION['conceptosD'] = array();
|
|
$_SESSION['infDev'] = array();
|
|
|
|
echo 'ok[#]';
|
|
echo $ventaIdActual;
|
|
|
|
echo '[#]';
|
|
$smarty->assign('conceptos', $conceptos);
|
|
$smarty->assign('DOC_ROOT', DOC_ROOT);
|
|
$smarty->display(DOC_ROOT.'/templates/lists/conceptos.tpl');
|
|
|
|
echo '[#]';
|
|
echo '0.00';
|
|
echo '[#]';
|
|
echo '0.00';
|
|
echo '[#]';
|
|
echo '0.00';
|
|
|
|
break;
|
|
|
|
case 'saveVentaDesc':
|
|
|
|
$ventaId = $_POST['idVta'];
|
|
|
|
$resPagos = $_POST['metodoPago'];
|
|
|
|
$resPagos = $util->CheckArray($resPagos);
|
|
|
|
$pagoTotal = 0;
|
|
$pagosVta = array();
|
|
foreach($resPagos as $k => $val){
|
|
|
|
$card['metodoPagoId'] = $val;
|
|
$card['cantidad'] = trim($_POST['cantidad_'.$k]);
|
|
$idVta = trim($_POST['idVta_'.$k]);
|
|
|
|
$card['idVta'] = $idVta;
|
|
$card['devolucionId'] = $devolucionId;
|
|
|
|
$pagoTotal += $card['cantidad'];
|
|
|
|
$pagosVta[] = $card;
|
|
|
|
}
|
|
|
|
if(count($pagosVta) == 0){
|
|
echo 'fail[#]';
|
|
echo 'Debe agregar al menos un pago.';
|
|
exit;
|
|
}
|
|
|
|
foreach($pagosVta as $res){
|
|
|
|
if($res['metodoPagoId'] == ''){
|
|
echo 'fail[#]';
|
|
echo utf8_encode('Debe elegir la Forma de Pago.');
|
|
exit;
|
|
}
|
|
|
|
if($res['cantidad'] == ''){
|
|
echo 'fail[#]';
|
|
echo 'Debe ingresar la cantidad.';
|
|
exit;
|
|
}
|
|
|
|
}//foreach
|
|
|
|
$venta->setVentaId($ventaId);
|
|
$info = $venta->Info();
|
|
$total = number_format($info['totalDesc'],2,'.','');
|
|
|
|
if($pagoTotal < $total){
|
|
//echo 'fail[#]';
|
|
//echo 'El Total Pagado es menor que el Total de la Venta. Por favor, verifique.';
|
|
echo 'addPago[#]';
|
|
exit;
|
|
}
|
|
|
|
$venta->setVentaId($ventaId);
|
|
$venta->setStatus('Activo');
|
|
$venta->UpdateStatus();
|
|
|
|
$fecha = date('Y-m-d H:i:s');
|
|
|
|
//Guardamos los Pagos
|
|
|
|
$pagoTotal = 0;
|
|
foreach($pagosVta as $res){
|
|
|
|
$venta->setVentaId($ventaId);
|
|
$venta->setMetodoPagoId($res['metodoPagoId']);
|
|
$venta->setMonederoId($res['monederoId']);
|
|
$venta->setCantidad($res['cantidad']);
|
|
$venta->setDevolucionId($res['devolucionId']);
|
|
|
|
$pagoTotal += $res['cantidad'];
|
|
|
|
$venta->SavePago();
|
|
|
|
//Actualizamos el Status a Usado = 1
|
|
$devolucion->setVentaId($res['idVta']);
|
|
$devolucion->UpdateUsado();
|
|
|
|
/*
|
|
//Guardamos registro en el historial del monedero
|
|
if($res['monederoId']){
|
|
|
|
$monedero->setFecha($fecha);
|
|
$monedero->setMonederoId($res['monederoId']);
|
|
$monedero->setVentaId($ventaId);
|
|
$monedero->setTotal($res['cantidad']);
|
|
$monedero->setTipo('Pago');
|
|
$monedero->SaveHistorial();
|
|
|
|
//Actualizamos el Saldo
|
|
$monedero->RemoveSaldo();
|
|
|
|
}//if
|
|
*/
|
|
|
|
}//foreach
|
|
|
|
$venta->setVentaId($ventaId);
|
|
$venta->setPago($pagoTotal);
|
|
$venta->UpdateTotalPago();
|
|
|
|
$_SESSION['pagosVta'] = array();
|
|
|
|
$conceptos = array();
|
|
$_SESSION['conceptos'] = array();
|
|
|
|
echo 'ok[#]';
|
|
echo $ventaId;
|
|
|
|
break;
|
|
|
|
case 'saveEspera':
|
|
|
|
$vendedorId = $_POST['vendedorId'];
|
|
|
|
$conceptos = $_SESSION['conceptos'];
|
|
|
|
if(count($conceptos) == 0){
|
|
echo 'fail[#]';
|
|
echo 'Debe agregar al menos un producto.';
|
|
exit;
|
|
}
|
|
|
|
$tienePromo = false;
|
|
foreach($conceptos as $res){
|
|
if($res['promocionId'] != ''){
|
|
$tienePromo = true;
|
|
break;
|
|
}
|
|
}
|
|
|
|
if($vendedorId == ''){
|
|
echo 'fail[#]';
|
|
echo 'Por favor, seleccione al vendedor.';
|
|
exit;
|
|
}
|
|
|
|
if($tienePromo){
|
|
echo 'fail[#]';
|
|
echo 'La venta no se puede poner en espera ya que tiene una promocion aplicada.';
|
|
echo ' Por favor, verifique.';
|
|
exit;
|
|
}
|
|
|
|
//Obtenemos los Totales
|
|
|
|
$total = 0;
|
|
$promocionId = 0;
|
|
foreach($conceptos as $res){
|
|
if($res['descuento'] == '100%')
|
|
$res['total'] = 0;
|
|
|
|
$total += $res['total'];
|
|
|
|
if($res['promocionId'])
|
|
$promocionId = $res['promocionId'];
|
|
}
|
|
|
|
//Obtenemos los Totales
|
|
|
|
$sucursal->setSucursalId($sucursalId);
|
|
$porcIva = $sucursal->GetIva();
|
|
$porcIva = $porcIva / 100;
|
|
|
|
$subtotal = $total / (1 + $porcIva);
|
|
$subtotal = number_format($subtotal,2,'.','');
|
|
|
|
$iva = $subtotal * $porcIva;
|
|
$iva = number_format($iva,2,'.','');
|
|
|
|
$venta->setSucursalId($sucursalId);
|
|
$venta->setVendedorId($vendedorId);
|
|
$venta->setUsuarioId($_SESSION['loginKey']);
|
|
$venta->setFecha(date('Y-m-d H:i:s'));
|
|
$venta->setPromocionId($promocionId);
|
|
$venta->setSubtotal($subtotal);
|
|
$venta->setIva($iva);
|
|
$venta->setTotal($total);
|
|
$venta->setPago($pagoTotal);
|
|
$venta->setStatus('Activo');
|
|
|
|
$ventaId = $venta->Save2();
|
|
|
|
//Guardamos los Productos
|
|
|
|
foreach($conceptos as $res){
|
|
|
|
$prodItemId = $res['prodItemId'];
|
|
|
|
$producto->setProdItemId($prodItemId);
|
|
$info = $producto->GetInfoItemById();
|
|
|
|
$venta->setVentaId($ventaId);
|
|
$venta->setPromocionId($res['promocionId']);
|
|
$venta->setCantidad($res['cantidad']);
|
|
$venta->setPrecioUnitario($res['precio']);
|
|
$venta->setTotal($res['total']);
|
|
|
|
if($res['tipoProd'] == 'producto'){
|
|
$venta->setProdItemId($prodItemId);
|
|
$venta->setProductoId($info['productoId']);
|
|
$venta->setMonederoId(0);
|
|
}else{
|
|
$venta->setMonederoId($prodItemId);
|
|
$venta->setProdItemId(0);
|
|
$venta->setProductoId(0);
|
|
}
|
|
|
|
if($res['descuento'] > 0){
|
|
$venta->setTipoDesc('Porcentaje');
|
|
$venta->setValDesc(100);
|
|
}else{
|
|
$venta->setTipoDesc('');
|
|
$venta->setValDesc(0);
|
|
}
|
|
|
|
$venta->SaveProducto2();
|
|
|
|
//Actualizamos el Status de los Productos a Vendido
|
|
$venta->setUsuarioId($_SESSION['loginKey']);
|
|
if($res['tipoProd'] == 'producto')
|
|
$venta->VenderProductos2();
|
|
|
|
}//foreach
|
|
|
|
$conceptos = array();
|
|
$_SESSION['conceptos'] = array();
|
|
|
|
//Generamos Registro en la Tabla ControlVenta
|
|
$venta->setUsuarioId($_SESSION['loginKey']);
|
|
$venta->setSucursalId($sucursalId);
|
|
$venta->ControlVenta();
|
|
|
|
echo 'ok[#]';
|
|
|
|
break;
|
|
|
|
case 'cancelarVenta':
|
|
|
|
$_SESSION['pagosVta'] = array();
|
|
|
|
$conceptos = $_SESSION['conceptos'];
|
|
|
|
$conceptos = $util->CheckArray($conceptos);
|
|
|
|
//Desapartamos los productos
|
|
|
|
foreach($conceptos as $res){
|
|
|
|
$venta->setCantidad($res['cantidad']);
|
|
$venta->setSucursalId($sucursalId);
|
|
$venta->setProductoId($res['productoId']);
|
|
$venta->setUsuarioId($_SESSION['loginKey']);
|
|
$venta->DesapartarProducts();
|
|
|
|
}
|
|
|
|
$conceptos = array();
|
|
$_SESSION['conceptos'] = array();
|
|
|
|
$_SESSION['conceptosD'] = array();
|
|
$_SESSION['infDev'] = array();
|
|
|
|
//Generamos Registro en la Tabla ControlVenta
|
|
$venta->setUsuarioId($_SESSION['loginKey']);
|
|
$venta->setSucursalId($sucursalId);
|
|
$venta->ControlVenta();
|
|
|
|
echo 'ok[#]';
|
|
|
|
$smarty->assign('conceptos', $conceptos);
|
|
$smarty->assign('DOC_ROOT', DOC_ROOT);
|
|
$smarty->display(DOC_ROOT.'/templates/lists/conceptos.tpl');
|
|
|
|
|
|
break;
|
|
|
|
case 'limpiarForm':
|
|
|
|
$conceptos = array();
|
|
|
|
echo 'ok[#]';
|
|
$venta->setSucursalId($sucursalId);
|
|
echo $venta->GetNextFolio();
|
|
|
|
echo '[#]';
|
|
$smarty->assign('conceptos', $conceptos);
|
|
$smarty->assign('DOC_ROOT', DOC_ROOT);
|
|
$smarty->display(DOC_ROOT.'/templates/lists/conceptos.tpl');
|
|
|
|
break;
|
|
|
|
case 'checkMonedero':
|
|
|
|
$codigo = trim($_POST['codigo']);
|
|
|
|
if($codigo == ''){
|
|
echo 'fail[#]';
|
|
echo 'Debe ingresar el Codigo del Monedero o Tarjeta';
|
|
exit;
|
|
}
|
|
|
|
$monedero->setCodigo($codigo);
|
|
$monederoId = $monedero->GetIdByCodigo();
|
|
|
|
if($monederoId){
|
|
|
|
$monedero->setMonederoId($monederoId);
|
|
$infM = $monedero->Info();
|
|
|
|
echo 'ok[#]';
|
|
echo number_format($infM['saldo'],2);
|
|
|
|
}else{
|
|
echo 'fail[#]';
|
|
echo 'El Codigo del Monedero o Tarjeta No existe. Por favor, verifique.';
|
|
}
|
|
|
|
break;
|
|
|
|
case 'checkSaldo':
|
|
|
|
$ventaId = $_POST['ventaId'];
|
|
|
|
if($ventaId == ''){
|
|
echo 'fail[#]';
|
|
echo 'Debe ingresar el No. de Ticket.';
|
|
exit;
|
|
}
|
|
|
|
$devolucion->setVentaId($ventaId);
|
|
$saldo = $devolucion->GetSaldo();
|
|
|
|
echo 'ok[#]';
|
|
echo number_format($saldo,2);
|
|
|
|
break;
|
|
|
|
case 'getProdInfoVta':
|
|
|
|
$productoId = $_POST['productoId'];
|
|
|
|
$producto->setProductoId($productoId);
|
|
$infP = $producto->Info();
|
|
|
|
$producto->setCodigoBarra($infP['codigoBarra']);
|
|
$producto->setProductoId(0);
|
|
$prodItemId = $producto->GetProductByCodigo();
|
|
|
|
$inventario->setSucursalId($sucursalId);
|
|
$inventario->setProductoId($productoId);
|
|
$disponible = $inventario->GetDispByProd();
|
|
|
|
$producto->setSucursalId($sucursalId);
|
|
$producto->setProductoId($productoId);
|
|
$precioVentaIva = $producto->GetVentaPrice();
|
|
|
|
echo 'ok[#]';
|
|
echo $precioVentaIva;
|
|
echo '[#]';
|
|
echo $disponible;
|
|
echo '[#]';
|
|
echo utf8_encode($infP['modelo']);
|
|
echo '[#]';
|
|
echo $prodItemId;
|
|
|
|
break;
|
|
|
|
case 'getProdInfoVtaByCode':
|
|
|
|
$codigoBarra = $_POST['codigoBarra'];
|
|
|
|
$producto->setCodigoBarra($codigoBarra);
|
|
$prodItemId = $producto->GetActiveProductByCodigo();
|
|
|
|
$producto->setProdItemId($prodItemId);
|
|
$info = $producto->GetInfoItemById();
|
|
|
|
$producto->setProductoId($info['productoId']);
|
|
$infP = $producto->Info();
|
|
|
|
$producto->setSucursalId($sucursalId);
|
|
$precioVentaIva = $producto->GetVentaPrice();
|
|
|
|
$inventario->setSucursalId($sucursalId);
|
|
$inventario->setProductoId($info['productoId']);
|
|
$disponible = $inventario->GetDispByProd();
|
|
|
|
$producto->setProdItemId($prodItemId);
|
|
$nombre = $producto->GetModeloById();
|
|
|
|
echo 'ok[#]';
|
|
echo $precioVentaIva;
|
|
echo '[#]';
|
|
echo $disponible;
|
|
echo '[#]';
|
|
echo utf8_encode($nombre);
|
|
echo '[#]';
|
|
echo $prodItemId;
|
|
|
|
break;
|
|
|
|
case 'getMonInfoVta':
|
|
|
|
$monederoId = $_POST['monederoId'];
|
|
|
|
$monedero->setMonederoId($monederoId);
|
|
$infM = $monedero->Info();
|
|
|
|
echo 'ok[#]';
|
|
echo number_format($infM['saldo'],2);
|
|
|
|
break;
|
|
|
|
case 'updateCambio':
|
|
|
|
$resPagos = $_POST['metodoPago'];
|
|
$resPagos = $util->CheckArray($resPagos);
|
|
|
|
//Obtenemos el Total de los Pagos
|
|
|
|
$totalPago = 0;
|
|
foreach($resPagos as $k => $val)
|
|
$totalPago += trim($_POST['cantidad_'.$k]);
|
|
|
|
//Obtenemos el Total de los Productos
|
|
|
|
$conceptos = $_SESSION['conceptos'];
|
|
|
|
$subtotal = 0;
|
|
foreach($conceptos as $res){
|
|
|
|
if($res['descuento'] == '100%')
|
|
$res['total'] = 0;
|
|
|
|
$subtotal += $res['total'];
|
|
}
|
|
/*
|
|
$sucursal->setSucursalId($sucursalId);
|
|
$porcIva = $sucursal->GetIva();
|
|
$porcIva = $porcIva / 100;
|
|
|
|
$iva = $subtotal * $porcIva;
|
|
$iva = number_format($iva,2,'.','');
|
|
|
|
$total = $subtotal + $iva;
|
|
*/
|
|
|
|
$total = $subtotal;
|
|
|
|
$cambio = 0;
|
|
if($totalPago > $total)
|
|
$cambio = $totalPago - $total;
|
|
|
|
$porPagar = 0;
|
|
if($totalPago < $total)
|
|
$porPagar = $total - $totalPago;
|
|
|
|
echo 'ok[#]';
|
|
echo number_format($totalPago,2);
|
|
echo '[#]';
|
|
echo number_format($porPagar,2);
|
|
echo '[#]';
|
|
echo number_format($cambio,2);
|
|
|
|
break;
|
|
|
|
case 'updateCambioDesc':
|
|
|
|
$ventaId = $_POST['idVta'];
|
|
$resPagos = $_POST['metodoPago'];
|
|
$resPagos = $util->CheckArray($resPagos);
|
|
|
|
//Obtenemos el Total de los Pagos
|
|
|
|
$totalPago = 0;
|
|
foreach($resPagos as $k => $val)
|
|
$totalPago += trim($_POST['cantidad_'.$k]);
|
|
|
|
//Obtenemos el Total de los Productos
|
|
|
|
$venta->setVentaId($ventaId);
|
|
$info = $venta->Info();
|
|
|
|
$total = $info['totalDesc'];
|
|
$total = number_format($total,2,'.','');
|
|
|
|
$cambio = 0;
|
|
if($totalPago > $total)
|
|
$cambio = $totalPago - $total;
|
|
|
|
$porPagar = 0;
|
|
if($totalPago < $total)
|
|
$porPagar = $total - $totalPago;
|
|
|
|
echo 'ok[#]';
|
|
echo number_format($totalPago,2);
|
|
echo '[#]';
|
|
echo number_format($porPagar,2);
|
|
echo '[#]';
|
|
echo number_format($cambio,2);
|
|
|
|
break;
|
|
|
|
case 'checkDesctos':
|
|
|
|
$descuento->setSucursalId($sucursalId);
|
|
$descuento->setUsuarioId($_SESSION['loginKey']);
|
|
$descuento->setStatus('DescAp');
|
|
$ventas = $descuento->EnumByStatus();
|
|
|
|
$totalVtas = count($ventas);
|
|
|
|
if($totalVtas == 1){
|
|
|
|
$res = $ventas[0];
|
|
echo 'ok[#]';
|
|
echo 'La Venta No. '.$res['ventaId'].' ya tiene descuentos aplicados. Favor de verificar.';
|
|
|
|
}elseif($totalVtas > 1){
|
|
|
|
echo 'ok[#]';
|
|
echo 'Existen ventas con descuentos aplicados. Favor de verificar.';
|
|
|
|
}
|
|
|
|
//Liberamos los Productos que hayan sido Apartados por accidente
|
|
$venta->setSucursalId($sucursalId);
|
|
$venta->LiberarProductos();
|
|
|
|
break;
|
|
|
|
case 'checkVtasEspera':
|
|
|
|
$venta->setSucursalId($sucursalId);
|
|
$venta->setUsuarioId($_SESSION['loginKey']);
|
|
$exist = $venta->ExistVentaEspera();
|
|
|
|
if($exist){
|
|
echo 'ok[#]';
|
|
echo 'Existen ventas en espera. Favor de verificar.';
|
|
}
|
|
|
|
break;
|
|
|
|
//PRODUCTOS
|
|
|
|
case 'addProduct':
|
|
|
|
$prodItemId = $_POST['prodItemId'];
|
|
$cantidad = $_POST['cantidad'];
|
|
$tipoProd = $_POST['tipoProd'];
|
|
|
|
if($tipoProd == 'tarjeta'){
|
|
|
|
$conceptos = $_SESSION['conceptos'];
|
|
|
|
$monedero->setMonederoId($prodItemId);
|
|
$infM = $monedero->Info();
|
|
|
|
$card['name'] = 'Tarjeta de Prepago de '.$infM['saldo'];
|
|
$card['prodItemId'] = $prodItemId;
|
|
$card['tipoProd'] = 'tarjeta';
|
|
$card['cantidad'] = $cantidad;
|
|
$card['descuento'] = '0.00';
|
|
$card['precio'] = $infM['saldo'];
|
|
$total = $card['precio'] * $cantidad;
|
|
$card['total'] = number_format($total,2,'.','');
|
|
|
|
$conceptos[] = $card;
|
|
|
|
}else{
|
|
|
|
for($k=1; $k<=$cantidad; $k++){
|
|
|
|
//Obtenemos el Precio para poder agruparlo.
|
|
|
|
$producto->setProdItemId($prodItemId);
|
|
$info = $producto->GetInfoItemById();
|
|
|
|
$productoId = $info['productoId'];
|
|
|
|
$producto->setProductoId($productoId);
|
|
$producto->setSucursalId($sucursalId);
|
|
$precioVenta = $producto->GetVentaPrice();
|
|
|
|
//Checamos el precio para poder agruparlos
|
|
|
|
$agregar = true;
|
|
$cant = 1;
|
|
|
|
/*
|
|
$resConceptos = $_SESSION['conceptos'];
|
|
|
|
$conceptos = array();
|
|
foreach($resConceptos as $res){
|
|
|
|
if($res['prodItemId'] == $prodItemId){
|
|
if($res['precio'] == $precioVenta){
|
|
|
|
$res['cantidad'] += $cant;
|
|
|
|
$total = $res['precio'] * $res['cantidad'];
|
|
$res['total'] = number_format($total,2,'.','');
|
|
|
|
$agregar = false;
|
|
|
|
}//if
|
|
}//if
|
|
|
|
$conceptos[] = $res;
|
|
|
|
}//foreach
|
|
*/
|
|
|
|
$conceptos = $_SESSION['conceptos'];
|
|
|
|
if($agregar){
|
|
|
|
$producto->setProdItemId($prodItemId);
|
|
$info = $producto->GetInfoItemById();
|
|
|
|
$productoId = $info['productoId'];
|
|
|
|
$producto->setProductoId($productoId);
|
|
$infP = $producto->Info();
|
|
|
|
$producto->setSucursalId($sucursalId);
|
|
$precioVentaIva = $producto->GetVentaPrice();
|
|
|
|
$name = $info['codigoBarra'].'<br>';
|
|
$name .= $infP['modelo'];
|
|
|
|
$card['name'] = utf8_encode($name);
|
|
$card['productoId'] = $productoId;
|
|
$card['prodItemId'] = $prodItemId;
|
|
$card['tipoProd'] = 'producto';
|
|
$card['cantidad'] = $cant;
|
|
$card['descuento'] = '0.00';
|
|
$card['precio'] = $precioVentaIva;
|
|
$card['precioR'] = $precioVentaIva;
|
|
$total = $card['precio'] * $cant;
|
|
$card['total'] = number_format($total,2,'.','');
|
|
|
|
$conceptos[] = $card;
|
|
|
|
}//if
|
|
|
|
$_SESSION['conceptos'] = $conceptos;
|
|
|
|
//Apartamos los productos
|
|
$venta->setCantidad($cant);
|
|
$venta->setSucursalId($sucursalId);
|
|
$venta->setProductoId($productoId);
|
|
$venta->setUsuarioId($_SESSION['loginKey']);
|
|
$venta->ApartarProducts();
|
|
|
|
}//for
|
|
|
|
}//if
|
|
|
|
//Obtenemos los Totales
|
|
|
|
$total = 0;
|
|
foreach($conceptos as $res){
|
|
if($res['descuento'] == '100%')
|
|
$res['total'] = 0;
|
|
$total += $res['total'];
|
|
}
|
|
|
|
$sucursal->setSucursalId($sucursalId);
|
|
$porcIva = $sucursal->GetIva();
|
|
$porcIva = $porcIva / 100;
|
|
|
|
$subtotal = $total / (1 + $porcIva);
|
|
$subtotal = number_format($subtotal,2,'.','');
|
|
|
|
$iva = $subtotal * $porcIva;
|
|
$iva = number_format($iva,2,'.','');
|
|
|
|
//Agrupamos los Productos solo para Vista
|
|
|
|
$prodIds = array();
|
|
foreach($conceptos as $res){
|
|
|
|
$productoId = $res['productoId'];
|
|
|
|
if(!in_array($productoId, $prodIds))
|
|
$prodIds[] = $productoId;
|
|
|
|
}//foreach
|
|
|
|
$concepts = array();
|
|
foreach($prodIds as $productoId){
|
|
|
|
$total2 = 0;
|
|
$precio = 0;
|
|
$cantidad = 0;
|
|
$card = array();
|
|
foreach($conceptos as $res){
|
|
|
|
if($res['productoId'] == $productoId){
|
|
|
|
if($res['promocionId'] > 0){
|
|
if($res['descuento'] == '100%')
|
|
$res['total'] = 0;
|
|
|
|
$concepts[] = $res;
|
|
continue;
|
|
}
|
|
|
|
$card = $res;
|
|
|
|
if($res['precio'] > $precio)
|
|
$precio = $res['precio'];
|
|
|
|
$cantidad += $res['cantidad'];
|
|
|
|
if($res['descuento'] == '100%')
|
|
$res['total'] = 0;
|
|
|
|
$total2 += $res['total'];
|
|
}
|
|
|
|
}//foreach
|
|
|
|
if($card){
|
|
$card['precio'] = $precio;
|
|
$card['cantidad'] = $cantidad;
|
|
$card['total'] = $total2;
|
|
|
|
$concepts[] = $card;
|
|
}
|
|
|
|
}//foreach
|
|
|
|
echo 'ok[#]';
|
|
|
|
$smarty->assign('conceptos', $concepts);
|
|
$smarty->assign('DOC_ROOT', DOC_ROOT);
|
|
$smarty->display(DOC_ROOT.'/templates/lists/conceptos.tpl');
|
|
|
|
echo '[#]';
|
|
|
|
echo number_format($subtotal,2);
|
|
echo '[#]';
|
|
echo number_format($iva,2);
|
|
echo '[#]';
|
|
echo number_format($total,2);
|
|
|
|
break;
|
|
|
|
case 'deleteProduct':
|
|
|
|
$productoId = $_POST['k'];
|
|
|
|
$resConceptos = $_SESSION['conceptos'];
|
|
|
|
foreach($resConceptos as $res){
|
|
if($res['productoId'] == $productoId){
|
|
$infP = $res;
|
|
break;
|
|
}
|
|
}
|
|
|
|
$cantidad = 0;
|
|
$conceptos = array();
|
|
foreach($resConceptos as $res){
|
|
|
|
if($infP['productoId'] == $res['productoId'])
|
|
$cantidad += $res['cantidad'];
|
|
else
|
|
$conceptos[] = $res;
|
|
|
|
}//foreach
|
|
$infP['cantidad'] = $cantidad;
|
|
|
|
$_SESSION['conceptos'] = $conceptos;
|
|
|
|
//Agrupamos los Productos solo para Vista
|
|
|
|
$prodIds = array();
|
|
foreach($conceptos as $res){
|
|
|
|
$productoId = $res['productoId'];
|
|
|
|
if(!in_array($productoId, $prodIds))
|
|
$prodIds[] = $productoId;
|
|
|
|
}//foreach
|
|
|
|
$concepts = array();
|
|
foreach($prodIds as $productoId){
|
|
|
|
$total2 = 0;
|
|
$precio = 0;
|
|
$cantidad = 0;
|
|
$card = array();
|
|
$cardP = array();
|
|
foreach($conceptos as $res){
|
|
|
|
if($res['productoId'] == $productoId){
|
|
|
|
if($res['promocionId'] > 0){
|
|
if($res['descuento'] == '100%')
|
|
$res['total'] = 0;
|
|
|
|
$concepts[] = $res;
|
|
continue;
|
|
}
|
|
|
|
$card = $res;
|
|
|
|
if($res['precio'] > $precio)
|
|
$precio = $res['precio'];
|
|
|
|
$cantidad += $res['cantidad'];
|
|
|
|
if($res['descuento'] == '100%')
|
|
$res['total'] = 0;
|
|
|
|
$total2 += $res['total'];
|
|
|
|
}//if
|
|
|
|
}//foreach
|
|
|
|
if($card){
|
|
$card['precio'] = $precio;
|
|
$card['cantidad'] = $cantidad;
|
|
$card['total'] = $total2;
|
|
|
|
$concepts[] = $card;
|
|
}
|
|
|
|
}//foreach
|
|
|
|
//Obtenemos los Totales
|
|
|
|
$total = 0;
|
|
foreach($concepts as $res)
|
|
$total += $res['total'];
|
|
|
|
$sucursal->setSucursalId($sucursalId);
|
|
$porcIva = $sucursal->GetIva();
|
|
$porcIva = $porcIva / 100;
|
|
|
|
$subtotal = $total / (1 + $porcIva);
|
|
$subtotal = number_format($subtotal,2,'.','');
|
|
|
|
$iva = $subtotal * $porcIva;
|
|
$iva = number_format($iva,2,'.','');
|
|
|
|
//Desapartamos los productos
|
|
if($infP['tipoProd'] == 'producto'){
|
|
$venta->setCantidad($infP['cantidad']);
|
|
$venta->setSucursalId($sucursalId);
|
|
$venta->setProductoId($infP['productoId']);
|
|
$venta->setUsuarioId($_SESSION['loginKey']);
|
|
$venta->DesapartarProducts();
|
|
}
|
|
|
|
echo 'ok[#]';
|
|
|
|
$smarty->assign('conceptos', $concepts);
|
|
$smarty->assign('DOC_ROOT', DOC_ROOT);
|
|
$smarty->display(DOC_ROOT.'/templates/lists/conceptos.tpl');
|
|
|
|
echo '[#]';
|
|
|
|
echo number_format($subtotal,2);
|
|
echo '[#]';
|
|
echo number_format($iva,2);
|
|
echo '[#]';
|
|
echo number_format($total,2);
|
|
echo '[#]';
|
|
echo $infP['prodItemId'];
|
|
|
|
break;
|
|
|
|
//METODOS DE PAGO
|
|
|
|
case 'savePagos':
|
|
|
|
$metodoPago = $_POST['metodoPago'];
|
|
|
|
$pagos = array();
|
|
foreach($metodoPago as $k => $val){
|
|
|
|
$card['metodoPagoId'] = $val;
|
|
$card['cantidad'] = trim($_POST['cantidad_'.$k]);
|
|
$card['idVta'] = trim($_POST['idVta_'.$k]);
|
|
|
|
/*
|
|
$card['codigoMon'] = trim($_POST['codigoMon_'.$k]);
|
|
$monedero->setCodigo($card['codigoMon']);
|
|
$monederoId = $monedero->GetIdByCodigo();
|
|
if($monederoId){
|
|
$monedero->setMonederoId($monederoId);
|
|
$infM = $monedero->Info();
|
|
$card['saldoMon'] = number_format($infM['saldo'],2);
|
|
}
|
|
*/
|
|
|
|
if($card['idVta']){
|
|
$devolucion->setVentaId($card['idVta']);
|
|
$saldoFav = $devolucion->GetSaldo();
|
|
$card['saldoFav'] = number_format($saldoFav,2);
|
|
}//if
|
|
|
|
$pagos[] = $card;
|
|
|
|
}//foreach
|
|
|
|
$_SESSION['pagosVta'] = $pagos;
|
|
|
|
break;
|
|
|
|
case 'addPago':
|
|
|
|
//Guardamos los Pagos
|
|
|
|
$resPagos = $_POST['metodoPago'];
|
|
|
|
$resPagos = $util->CheckArray($resPagos);
|
|
|
|
$pagos = array();
|
|
foreach($resPagos as $k => $val){
|
|
|
|
$card['metodoPagoId'] = $val;
|
|
$card['cantidad'] = trim($_POST['cantidad_'.$k]);
|
|
$card['idVta'] = trim($_POST['idVta_'.$k]);
|
|
$card['saldoFav'] = '0.00';
|
|
|
|
/*
|
|
$card['codigoMon'] = trim($_POST['codigoMon_'.$k]);
|
|
$card['saldoMon'] = '0.00';
|
|
$monedero->setCodigo($card['codigoMon']);
|
|
$monederoId = $monedero->GetIdByCodigo();
|
|
if($monederoId){
|
|
$monedero->setMonederoId($monederoId);
|
|
$infM = $monedero->Info();
|
|
$card['saldoMon'] = number_format($infM['saldo'],2);
|
|
}
|
|
*/
|
|
|
|
if($card['idVta']){
|
|
$devolucion->setVentaId($card['idVta']);
|
|
$saldoFav = $devolucion->GetSaldo();
|
|
$card['saldoFav'] = number_format($saldoFav,2);
|
|
}//if
|
|
|
|
$pagos[] = $card;
|
|
|
|
}//foreach
|
|
|
|
//Agregamos el Nuevo Pago
|
|
|
|
$card['metodoPagoId'] = '';
|
|
$card['cantidad'] = '';
|
|
$card['idVta'] = '';
|
|
$card['saldoFav'] = '0.00';
|
|
|
|
/*
|
|
$card['codigoMon'] = '';
|
|
$card['saldoMon'] = '0.00';
|
|
*/
|
|
|
|
$pagos[] = $card;
|
|
|
|
$_SESSION['pagosVta'] = $pagos;
|
|
|
|
$metodosPago = $metodoPago->EnumerateAll();
|
|
$metodosPago = $util->EncodeResult($metodosPago);
|
|
|
|
$smarty->assign('pagos', $pagos);
|
|
$smarty->assign('metodosPago', $metodosPago);
|
|
$smarty->assign('DOC_ROOT', DOC_ROOT);
|
|
$smarty->display(DOC_ROOT.'/templates/lists/pagos-venta.tpl');
|
|
|
|
break;
|
|
|
|
case 'deletePago':
|
|
|
|
//Guardamos los Pagos
|
|
|
|
$resPagos = $_POST['metodoPago'];
|
|
|
|
$resPagos = $util->CheckArray($resPagos);
|
|
|
|
$pagos = array();
|
|
foreach($resPagos as $k => $val){
|
|
|
|
$card['metodoPagoId'] = $val;
|
|
$card['cantidad'] = trim($_POST['cantidad_'.$k]);
|
|
$card['idVta'] = trim($_POST['idVta_'.$k]);
|
|
$card['saldoFav'] = '0.00';
|
|
|
|
/*
|
|
$card['codigoMon'] = trim($_POST['codigoMon_'.$k]);
|
|
$card['saldoMon'] = '0.00';
|
|
$monedero->setCodigo($card['codigoMon']);
|
|
$monederoId = $monedero->GetIdByCodigo();
|
|
if($monederoId){
|
|
$monedero->setMonederoId($monederoId);
|
|
$infM = $monedero->Info();
|
|
$card['saldoMon'] = number_format($infM['saldo'],2);
|
|
}
|
|
*/
|
|
|
|
if($card['idVta']){
|
|
$devolucion->setVentaId($card['idVta']);
|
|
$saldoFav = $devolucion->GetSaldo();
|
|
$card['saldoFav'] = number_format($saldoFav,2);
|
|
}//if
|
|
|
|
$pagos[] = $card;
|
|
|
|
}
|
|
|
|
//Eliminamos el Pago
|
|
|
|
$k = $_POST['k'];
|
|
|
|
unset($pagos[$k]);
|
|
|
|
$_SESSION['pagosVta'] = $pagos;
|
|
|
|
$metodosPago = $metodoPago->EnumerateAll();
|
|
$metodosPago = $util->EncodeResult($metodosPago);
|
|
|
|
$smarty->assign('pagos', $pagos);
|
|
$smarty->assign('metodosPago', $metodosPago);
|
|
$smarty->assign('DOC_ROOT', DOC_ROOT);
|
|
$smarty->display(DOC_ROOT.'/templates/lists/pagos-venta.tpl');
|
|
|
|
break;
|
|
|
|
//***
|
|
|
|
case 'loadSubcats':
|
|
|
|
$prodSubcat->setProdCatId($_POST['prodCatId']);
|
|
$subcategorias = $prodSubcat->EnumerateAll();
|
|
$subcategorias = $util->EncodeResult($subcategorias);
|
|
|
|
echo 'ok[#]';
|
|
|
|
$smarty->assign('subcategorias', $subcategorias);
|
|
$smarty->assign('DOC_ROOT', DOC_ROOT);
|
|
$smarty->display(DOC_ROOT.'/templates/lists/enumProdSubcatVta.tpl');
|
|
|
|
break;
|
|
|
|
case 'loadProductos':
|
|
|
|
$disponible = $_POST['disponible'];
|
|
|
|
$producto->setProveedorId($_POST['proveedorId']);
|
|
$producto->setProdCatId($_POST['prodCatId']);
|
|
$producto->setProdSubcatId($_POST['prodSubcatId']);
|
|
|
|
$resProds = $producto->SearchVta();
|
|
|
|
$productos = array();
|
|
foreach($resProds as $res){
|
|
|
|
$inventario->setSucursalId($sucursalId);
|
|
$inventario->setProductoId($res['productoId']);
|
|
$res['disponible'] = $inventario->GetDispByProd();
|
|
$res['nombre'] = $res['modelo'];
|
|
|
|
$producto->setSucursalId($sucursalId);
|
|
$producto->setProductoId($res['productoId']);
|
|
$res['precioVentaIva'] = $producto->GetVentaPrice();
|
|
|
|
if($disponible){
|
|
if($res['disponible'])
|
|
$productos[] = $res;
|
|
}else
|
|
$productos[] = $res;
|
|
|
|
}//foreach
|
|
|
|
echo 'ok[#]';
|
|
|
|
$smarty->assign('productos', $productos);
|
|
$smarty->assign('DOC_ROOT', DOC_ROOT);
|
|
$smarty->display(DOC_ROOT.'/templates/lists/enumProdVta.tpl');
|
|
|
|
break;
|
|
|
|
case 'aplicarPromo':
|
|
|
|
$sucursalId = $_SESSION['idSuc'];
|
|
|
|
//Checamos los Productos
|
|
|
|
$idProds = array(0);
|
|
$conceptos = $_SESSION['conceptos'];
|
|
|
|
$promoId = 0;
|
|
foreach($conceptos as $res){
|
|
$producto->setProdItemId($res['prodItemId']);
|
|
$infP = $producto->GetInfoItemById();
|
|
|
|
if($res['promocionId'] > 0){
|
|
$idProds = array(0);
|
|
$promoId = $res['promocionId'];
|
|
break;
|
|
}
|
|
|
|
$idProds[] = $infP['productoId'];
|
|
|
|
}
|
|
|
|
if($promoId){
|
|
|
|
$promocion->setPromocionId($promoId);
|
|
$nomPromo = utf8_encode($promocion->GetNameById());
|
|
|
|
$promocion->setPromocionId($promocionId);
|
|
$info = $promocion->Info();
|
|
|
|
$res['nombre'] = utf8_encode($info['nombre']);
|
|
|
|
$promociones[] = $res;
|
|
|
|
$smarty->assign('promoId',$promoId);
|
|
$smarty->assign('nomPromo',$nomPromo);
|
|
|
|
}else{
|
|
|
|
$idProductos = implode(',', $idProds);
|
|
|
|
//Obtenemos las Promociones por Producto
|
|
|
|
$resPromos1 = $promocion->EnumPromosByProd($idProductos);
|
|
$resPromos2 = $promocion->EnumPromosAplicaTodos();
|
|
|
|
$resPromos = array();
|
|
foreach($resPromos1 as $res)
|
|
$resPromos[]['promocionId'] = $res['promocionId'];
|
|
foreach($resPromos2 as $res)
|
|
$resPromos[]['promocionId'] = $res['promocionId'];
|
|
|
|
//Checamos que Promociones aplican
|
|
|
|
$promociones = array();
|
|
foreach($resPromos as $res){
|
|
|
|
$promocionId = $res['promocionId'];
|
|
|
|
$promocion->setPromocionId($promocionId);
|
|
$promocion->setSucursalId($sucursalId);
|
|
|
|
if(!$promocion->ExistSucursal())
|
|
continue;
|
|
|
|
$infP = $promocion->Info();
|
|
|
|
if($infP['status'] == 'Inactivo')
|
|
continue;
|
|
|
|
if($infP['vigencia'] == 'Periodo'){
|
|
|
|
if(date('Y-m-d') < $infP['fechaIni'])
|
|
continue;
|
|
elseif(date('Y-m-d') > $infP['fechaFin'])
|
|
continue;
|
|
|
|
}//if
|
|
|
|
//Checamos en los Productos si aplica esta Promo
|
|
|
|
$aplica = false;
|
|
foreach($idProds as $productoId){
|
|
|
|
$promocion->setPromocionId($promocionId);
|
|
$promocion->setProductoId($productoId);
|
|
|
|
//Si la promocion NO aplica a TODOS los productos entonces checar el producto
|
|
if($infP['aplicaTodos'] == 0){
|
|
if(!$promocion->ExistProdInPromo())
|
|
continue;
|
|
}
|
|
|
|
if($promocion->ExcProdInPromo())
|
|
continue;
|
|
|
|
$nomAplica = $infP['aplica'];
|
|
|
|
if($nomAplica == 'XxY'){
|
|
|
|
$promocion->setProductoId($productoId);
|
|
$cantProds = $promocion->GetCantProdsVta();
|
|
|
|
if($cantProds >= $infP['valorX']){
|
|
$aplica = true;
|
|
break;
|
|
}
|
|
|
|
}elseif($nomAplica == 'N1Desc'){
|
|
|
|
$promocion->setProductoId($productoId);
|
|
$cantProds = $promocion->GetCantProdsVta();
|
|
|
|
if($cantProds >= $infP['valorN']){
|
|
$aplica = true;
|
|
break;
|
|
}
|
|
|
|
}elseif($nomAplica == 'DescCuenta'){
|
|
|
|
$promocion->setProductoId($productoId);
|
|
$totalCompra = $promocion->GetTotalByProdVta();
|
|
|
|
if($totalCompra >= $infP['totalCompra']){
|
|
$aplica = true;
|
|
break;
|
|
}
|
|
|
|
}elseif($nomAplica == 'CompraX'){
|
|
|
|
$promocion->setProductoId($productoId);
|
|
$totalCompra = $promocion->GetTotalByProdVta();
|
|
|
|
if($totalCompra >= $infP['totalCompra']){
|
|
|
|
$producto->setSucursalId($sucursalId);
|
|
$producto->setProductoId($infP['productoId']);
|
|
if($producto->IsAvailable()){
|
|
$aplica = true;
|
|
break;
|
|
}
|
|
|
|
}//if
|
|
|
|
}elseif($nomAplica == 'CompraXabonoM'){
|
|
|
|
$promocion->setProductoId($productoId);
|
|
$totalCompra = $promocion->GetTotalByProdVta();
|
|
|
|
if($totalCompra >= $infP['totalCompra']){
|
|
$aplica = true;
|
|
break;
|
|
}
|
|
|
|
}elseif($nomAplica == 'ArtConDesc'){
|
|
|
|
$promocion->setProductoId($productoId);
|
|
$totalCompra = $promocion->GetTotalByProdVta();
|
|
|
|
if($totalCompra >= $infP['totalCompra']){
|
|
$aplica = true;
|
|
break;
|
|
}
|
|
|
|
}elseif($nomAplica == '3x2'){
|
|
|
|
$promocion->setPromocionId($promocionId);
|
|
$cantProds = $promocion->GetCantGralProdsVta();
|
|
|
|
if($cantProds >= 3){
|
|
$aplica = true;
|
|
|
|
foreach($promociones as $p){
|
|
if($p['promocionId'] == $promocionId){
|
|
$aplica = false;
|
|
break;
|
|
}
|
|
}
|
|
|
|
break;
|
|
}
|
|
|
|
}//elseif
|
|
|
|
}//foreach
|
|
|
|
if(!$aplica)
|
|
continue;
|
|
|
|
$promocion->setPromocionId($promocionId);
|
|
$info = $promocion->Info();
|
|
|
|
$res['nombre'] = utf8_encode($info['nombre']);
|
|
|
|
$promociones[] = $res;
|
|
|
|
}//foreach
|
|
|
|
}//else
|
|
|
|
echo 'ok[#]';
|
|
|
|
$smarty->assign('promociones', $promociones);
|
|
$smarty->assign('DOC_ROOT', DOC_ROOT);
|
|
$smarty->display(DOC_ROOT.'/templates/boxes/aplicar-promo-venta-popup.tpl');
|
|
|
|
echo '[#]';
|
|
echo count($promociones);
|
|
|
|
break;
|
|
|
|
case 'asignarPromo':
|
|
|
|
$promocionId = $_POST['promocionId'];
|
|
$sucursalId = $_SESSION['idSuc'];
|
|
$resConceptos = $_SESSION['conceptos'];
|
|
|
|
$promocion->setPromocionId($promocionId);
|
|
$infP = $promocion->Info();
|
|
|
|
$nomAplica = $infP['aplica'];
|
|
|
|
$totalDescBuenFin = 0;
|
|
$aplicadoBuenFin = false;
|
|
|
|
$subtotal = 0;
|
|
$concepts = array();
|
|
foreach($resConceptos as $kC => $res){
|
|
|
|
$prodR = array();
|
|
|
|
$producto->setProdItemId($res['prodItemId']);
|
|
$infI = $producto->GetInfoItemById();
|
|
$productoId = $infI['productoId'];
|
|
|
|
$promocion->setPromocionId($promocionId);
|
|
$promocion->setProductoId($productoId);
|
|
|
|
$existePromo = false;
|
|
if($infP['aplicaTodos'] == 1){
|
|
$existePromo = true;
|
|
}else{
|
|
if($promocion->ExistProdInPromo())
|
|
$existePromo = true;
|
|
}
|
|
|
|
if($existePromo){
|
|
|
|
if($nomAplica == 'XxY'){
|
|
|
|
$promocion->setProductoId($productoId);
|
|
$cantProds = $promocion->GetCantProdsVta();
|
|
|
|
if($cantProds >= $infP['valorX']){
|
|
|
|
$venta->setPromocionId($promocionId);
|
|
$prodsWithPromo = $venta->GetProdsWithPromo($concepts);
|
|
|
|
$cociente = $cantProds / $infP['valorX'];
|
|
$cociente = floor($cociente);
|
|
|
|
$valorX = $cociente * $infP['valorX'];
|
|
|
|
/*
|
|
$cociente = $res['cantidad'] / $infP['valorX'];
|
|
$cociente = floor($cociente);
|
|
$residuo = $res['cantidad'] - ($cociente * $infP['valorX']);
|
|
|
|
$total = $res['precio'] * $infP['valorY'];
|
|
$total *= $cociente;
|
|
$total += $res['precio'] * $residuo;
|
|
*/
|
|
|
|
if($prodsWithPromo < $valorX){
|
|
|
|
$res['precio'] = $infP['valorY'];
|
|
$total = $infP['valorY'];
|
|
|
|
/*********/
|
|
|
|
$res['promocionId'] = $promocionId;
|
|
$res['promocion'] = utf8_encode($infP['nombre']);
|
|
|
|
$res['total'] = $total;
|
|
|
|
}//if
|
|
|
|
}//if
|
|
|
|
}elseif($nomAplica == 'DescCuenta'){
|
|
|
|
$venta->setProductoId($res['productoId']);
|
|
$cantP = $venta->GetCantConcepto();
|
|
$totalVta = $venta->GetTotalConceptos();
|
|
|
|
//if($res['total'] > $infP['totalCompra']){
|
|
if($totalVta > $infP['totalCompra']){
|
|
|
|
$total = $res['total'];
|
|
|
|
if($infP['tipoDesc'] == 'Porcentaje'){
|
|
|
|
$totalDesc = ($infP['valorDesc'] / 100) * $total;
|
|
$total = $total - $totalDesc;
|
|
$res['total'] = number_format($total,2,'.','');
|
|
|
|
}else{
|
|
|
|
$vDesc = $infP['valorDesc'] / $cantP;
|
|
|
|
//$total = $total - $infP['valorDesc'];
|
|
$total -= $vDesc;
|
|
$res['total'] = number_format($total,2,'.','');
|
|
|
|
}
|
|
|
|
$res['promocionId'] = $promocionId;
|
|
$res['promocion'] = utf8_encode($infP['nombre']);
|
|
|
|
}//if
|
|
|
|
}elseif($nomAplica == 'N1Desc'){
|
|
|
|
$promocion->setProductoId($productoId);
|
|
$cantProds = $promocion->GetCantProdsVta();
|
|
|
|
if($cantProds > $infP['valorN']){
|
|
|
|
$venta->setProductoId($productoId);
|
|
$prodsAct = $venta->GetCurrentProds($kC);
|
|
|
|
if($prodsAct > $infP['valorN']){
|
|
|
|
$total = $res['total'];
|
|
|
|
if($infP['tipoDesc'] == 'Porcentaje'){
|
|
|
|
$totalDesc = ($infP['valorDesc'] / 100) * ($res['precio'] * $res['cantidad']);
|
|
$precio = $res['precio'] - $totalDesc;
|
|
$total = $total - $totalDesc;
|
|
|
|
$res['precio'] = number_format($precio,2,'.','');
|
|
$res['total'] = number_format($total,2,'.','');
|
|
|
|
}else{
|
|
|
|
$totalDesc = $infP['valorDesc'] * $res['cantidad'];
|
|
$precio = $res['precio'] - $totalDesc;
|
|
$total = $total - $totalDesc;
|
|
|
|
$res['precio'] = number_format($precio,2,'.','');
|
|
$res['total'] = number_format($total,2,'.','');
|
|
|
|
}
|
|
|
|
$res['promocionId'] = $promocionId;
|
|
$res['promocion'] = utf8_encode($infP['nombre']);
|
|
|
|
}//if
|
|
|
|
}//if
|
|
|
|
}elseif($nomAplica == 'ArtConDesc'){
|
|
|
|
$total = $res['total'];
|
|
|
|
/*
|
|
$tempTotal = 0;
|
|
for($k=1; $k<=$res['cantidad']; $k++){
|
|
$tempTotal += $res['precio'];
|
|
if($tempTotal >= $infP['totalCompra']){
|
|
break;
|
|
}
|
|
}
|
|
*/
|
|
|
|
$venta->setProductoId($res['productoId']);
|
|
$tempTotal = $venta->GetTotalByBloque($kC);
|
|
/*
|
|
echo 'Total = '.$tempTotal;
|
|
echo '<br> kC = '.$kC;
|
|
*/
|
|
if($tempTotal >= $infP['totalCompra']){
|
|
|
|
$tempTotal = $venta->GetTotalByBloqueAnt($kC);
|
|
|
|
/*
|
|
echo '<br>';
|
|
echo 'Total Ant = '.$tempTotal;
|
|
echo '<br> kC = '.$kC;
|
|
echo '<br>';
|
|
*/
|
|
/*
|
|
for($k=1; $k<=$res['cantidad']; $k++){
|
|
$tempTotal += $res['precio'];
|
|
if($tempTotal >= $infP['totalCompra']){
|
|
break;
|
|
}
|
|
}
|
|
|
|
$cantResto = $res['cantidad'] - $k;
|
|
*/
|
|
|
|
if($tempTotal >= $infP['totalCompra'])
|
|
$cantResto = 1;
|
|
|
|
if($cantResto > 0){
|
|
|
|
if($infP['tipoDesc'] == 'Porcentaje'){
|
|
|
|
$totalDesc = ($infP['valorDesc'] / 100) * ($res['precio'] * $cantResto);
|
|
$precio = $res['precio'] - $totalDesc;
|
|
$total = $total - $totalDesc;
|
|
|
|
$res['price'] = number_format($precio,2,'.','');
|
|
$res['total'] = number_format($total,2,'.','');
|
|
|
|
}else{
|
|
|
|
$totalDesc = $infP['valorDesc'] * $cantResto;
|
|
$precio = $res['precio'] - $totalDesc;
|
|
$total = $total - $totalDesc;
|
|
|
|
$res['price'] = number_format($precio,2,'.','');
|
|
$res['total'] = number_format($total,2,'.','');
|
|
|
|
}
|
|
|
|
$res['promocionId'] = $promocionId;
|
|
$res['promocion'] = utf8_encode($infP['nombre']);
|
|
|
|
}//if
|
|
|
|
}//if
|
|
|
|
}elseif($nomAplica == 'CompraX'){
|
|
|
|
$venta->setProductoId($res['productoId']);
|
|
$totalVta = $venta->GetTotalConceptos();
|
|
|
|
if($totalVta > $infP['totalCompra']){
|
|
|
|
$prodR = array();
|
|
|
|
$venta->setPromocionId($promocionId);
|
|
if(!$venta->ExistPromoInConceptos($concepts)){
|
|
|
|
$producto->setProductoId($infP['productoId']);
|
|
$infProd = $producto->Info();
|
|
|
|
$producto->setProductoId(0);
|
|
$producto->setCodigoBarra($infProd['codigoBarra']);
|
|
$prodItemId = $producto->GetProductByCodigo();
|
|
$producto->setProductoId($infP['productoId']);
|
|
|
|
$nomProd = $infProd['modelo'];
|
|
|
|
$prodR['name'] = utf8_encode($infProd['codigoBarra'].'<br>'.$nomProd);
|
|
$prodR['productoId'] = $infP['productoId'];
|
|
$prodR['prodItemId'] = $prodItemId;
|
|
$prodR['cantidad'] = $infP['cantArtRegalo'];
|
|
|
|
$totalP = $prodR['cantidad'] * $infProd['precioVenta'];
|
|
|
|
$prodR['descuento'] = '100%';
|
|
$prodR['precio'] = $infProd['precioVenta'];
|
|
$prodR['total'] = $totalP;
|
|
|
|
//Apartamos los productos
|
|
$venta->setCantidad($infP['cantArtRegalo']);
|
|
$venta->setSucursalId($sucursalId);
|
|
$venta->setProductoId($infP['productoId']);
|
|
$venta->setUsuarioId($_SESSION['loginKey']);
|
|
$venta->ApartarProducts();
|
|
|
|
}//else
|
|
|
|
$res['promocionId'] = $promocionId;
|
|
$res['promocion'] = utf8_encode($infP['nombre']);
|
|
|
|
}//elseif
|
|
|
|
}elseif($nomAplica == 'CompraXabonoM'){
|
|
|
|
if($res['total'] > $infP['totalCompra']){
|
|
|
|
$res['promocionId'] = $promocionId;
|
|
$res['promocion'] = utf8_encode($infP['nombre']);
|
|
|
|
}//elseif
|
|
|
|
}elseif($nomAplica == '3x2'){
|
|
|
|
$promocion->setPromocionId($promocionId);
|
|
|
|
if(!$aplicadoBuenFin){
|
|
$cantProds = $promocion->GetCantGralProdsVta();
|
|
|
|
if($cantProds >= 3){
|
|
$prodId = $promocion->GetProdBuenFin();
|
|
|
|
if($productoId == $prodId){
|
|
$res['promocionId'] = $promocionId;
|
|
$res['promocion'] = utf8_encode($infP['nombre']);
|
|
$aplicadoBuenFin = true;
|
|
|
|
$res['descuento'] = '100%';
|
|
//$res['total'] = 0;
|
|
$totalDescBuenFin = $res['total'];
|
|
}
|
|
|
|
}
|
|
|
|
}//if
|
|
|
|
}//elseif
|
|
|
|
}//if
|
|
|
|
$subtotal += $res['total'];
|
|
|
|
$concepts[] = $res;
|
|
|
|
if(count($prodR))
|
|
$concepts[] = $prodR;
|
|
|
|
}//foreach
|
|
|
|
$_SESSION['conceptos'] = $concepts;
|
|
|
|
$conceptos = $concepts;
|
|
|
|
//Obtenemos los Totales
|
|
|
|
$total = $subtotal - $totalDescBuenFin;
|
|
|
|
$sucursal->setSucursalId($sucursalId);
|
|
$porcIva = $sucursal->GetIva();
|
|
$porcIva = $porcIva / 100;
|
|
|
|
$subtotal = $total / (1 + $porcIva);
|
|
$subtotal = number_format($subtotal,2,'.','');
|
|
|
|
$iva = $subtotal * $porcIva;
|
|
$iva = number_format($iva,2,'.','');
|
|
|
|
//Agrupamos los Productos solo para Vista
|
|
|
|
$prodIds = array();
|
|
foreach($conceptos as $res){
|
|
|
|
$productoId = $res['productoId'];
|
|
|
|
if(!in_array($productoId, $prodIds))
|
|
$prodIds[] = $productoId;
|
|
|
|
}//foreach
|
|
|
|
$concepts = array();
|
|
foreach($prodIds as $productoId){
|
|
|
|
$total2 = 0;
|
|
$precio = 0;
|
|
$cantidad = 0;
|
|
$card = array();
|
|
$cardP = array();
|
|
foreach($conceptos as $res){
|
|
|
|
if($res['productoId'] == $productoId){
|
|
|
|
if($res['promocionId'] > 0){
|
|
if($res['descuento'] == '100%')
|
|
$res['total'] = 0;
|
|
|
|
$concepts[] = $res;
|
|
$card = array();
|
|
continue;
|
|
}
|
|
|
|
$card = $res;
|
|
|
|
if($res['precio'] > $precio)
|
|
$precio = $res['precio'];
|
|
|
|
$cantidad += $res['cantidad'];
|
|
|
|
if($res['descuento'] == '100%')
|
|
$res['total'] = 0;
|
|
|
|
$total2 += $res['total'];
|
|
|
|
}//if
|
|
|
|
}//foreach
|
|
|
|
if($card){
|
|
$card['precio'] = $precio;
|
|
$card['cantidad'] = $cantidad;
|
|
$card['total'] = $total2;
|
|
|
|
$concepts[] = $card;
|
|
}
|
|
|
|
}//foreach
|
|
|
|
echo 'ok[#]';
|
|
|
|
$smarty->assign('conceptos', $concepts);
|
|
$smarty->assign('DOC_ROOT', DOC_ROOT);
|
|
$smarty->display(DOC_ROOT.'/templates/lists/conceptos.tpl');
|
|
|
|
echo '[#]';
|
|
|
|
echo number_format($subtotal,2);
|
|
echo '[#]';
|
|
echo number_format($iva,2);
|
|
echo '[#]';
|
|
echo number_format($total,2);
|
|
|
|
break;
|
|
|
|
case 'eliminarPromo':
|
|
|
|
$promocionId = $_POST['promocionId'];
|
|
$sucursalId = $_SESSION['idSuc'];
|
|
$resConceptos = $_SESSION['conceptos'];
|
|
|
|
$promocion->setPromocionId($promocionId);
|
|
$infP = $promocion->Info();
|
|
|
|
$nomAplica = $infP['aplica'];
|
|
|
|
$elimProd = false;
|
|
$subtotal = 0;
|
|
$concepts = array();
|
|
foreach($resConceptos as $res){
|
|
|
|
if($res['promocionId'] == $promocionId){
|
|
|
|
$res['precio'] = $res['precioR'];
|
|
|
|
$total = $res['cantidad'] * $res['precioR'];
|
|
$res['total'] = number_format($total,2,'.','');
|
|
|
|
unset($res['promocionId']);
|
|
unset($res['promocion']);
|
|
|
|
if($nomAplica == 'CompraX'){
|
|
$elimProd = true;
|
|
}
|
|
|
|
if($nomAplica == '3x2')
|
|
$res['descuento'] = '0.00';
|
|
|
|
}//if
|
|
|
|
if($elimProd){
|
|
if($res['productoId'] == $infP['productoId']){
|
|
//Desapartamos los productos
|
|
$venta->setCantidad($infP['cantArtRegalo']);
|
|
$venta->setSucursalId($sucursalId);
|
|
$venta->setProductoId($infP['productoId']);
|
|
$venta->setUsuarioId($_SESSION['loginKey']);
|
|
$venta->DesapartarProducts();
|
|
$elimProd = false;
|
|
continue;
|
|
}
|
|
}
|
|
|
|
$subtotal += $res['total'];
|
|
|
|
$concepts[] = $res;
|
|
|
|
}//foreach
|
|
|
|
$_SESSION['conceptos'] = $concepts;
|
|
|
|
//Obtenemos los Totales
|
|
|
|
$total = $subtotal;
|
|
|
|
$sucursal->setSucursalId($sucursalId);
|
|
$porcIva = $sucursal->GetIva();
|
|
$porcIva = $porcIva / 100;
|
|
|
|
$subtotal = $total / (1 + $porcIva);
|
|
$subtotal = number_format($subtotal,2,'.','');
|
|
|
|
$iva = $subtotal * $porcIva;
|
|
$iva = number_format($iva,2,'.','');
|
|
|
|
$conceptos = $concepts;
|
|
|
|
//Agrupamos los Productos solo para Vista
|
|
|
|
$prodIds = array();
|
|
foreach($conceptos as $res){
|
|
|
|
$productoId = $res['productoId'];
|
|
|
|
if(!in_array($productoId, $prodIds))
|
|
$prodIds[] = $productoId;
|
|
|
|
}//foreach
|
|
|
|
$concepts = array();
|
|
foreach($prodIds as $productoId){
|
|
|
|
$total2 = 0;
|
|
$precio = 0;
|
|
$cantidad = 0;
|
|
$card = array();
|
|
foreach($conceptos as $res){
|
|
|
|
if($res['productoId'] == $productoId){
|
|
|
|
if($res['promocionId'] > 0){
|
|
if($res['descuento'] == '100%')
|
|
$res['total'] = 0;
|
|
|
|
$concepts[] = $res;
|
|
continue;
|
|
}
|
|
|
|
$card = $res;
|
|
|
|
if($res['precio'] > $precio)
|
|
$precio = $res['precio'];
|
|
|
|
$cantidad += $res['cantidad'];
|
|
|
|
if($res['descuento'] == '100%')
|
|
$res['total'] = 0;
|
|
|
|
$total2 += $res['total'];
|
|
|
|
}//if
|
|
|
|
}//foreach
|
|
|
|
if($card){
|
|
$card['precio'] = $precio;
|
|
$card['cantidad'] = $cantidad;
|
|
$card['total'] = $total2;
|
|
|
|
$concepts[] = $card;
|
|
}
|
|
|
|
}//foreach
|
|
|
|
echo 'ok[#]';
|
|
|
|
$smarty->assign('conceptos', $concepts);
|
|
$smarty->assign('DOC_ROOT', DOC_ROOT);
|
|
$smarty->display(DOC_ROOT.'/templates/lists/conceptos.tpl');
|
|
|
|
echo '[#]';
|
|
|
|
echo number_format($subtotal,2);
|
|
echo '[#]';
|
|
echo number_format($iva,2);
|
|
echo '[#]';
|
|
echo number_format($total,2);
|
|
|
|
break;
|
|
|
|
case 'mark':
|
|
|
|
$notasFact = $_SESSION['notasPorFacturar'];
|
|
$idNota = $_POST['id'];
|
|
|
|
if(!$notasFact){
|
|
$notasFact = array();
|
|
}
|
|
|
|
if(!in_array($idNota, $notasFact)){
|
|
$notasFact[$idNota] = $idNota;
|
|
}else{
|
|
unset($notasFact[$idNota]);
|
|
}
|
|
|
|
$_SESSION["notasPorFacturar"] = $notasFact;
|
|
|
|
$notas = array();
|
|
foreach($notasFact as $id){
|
|
$notas[] = $id;
|
|
}
|
|
|
|
sort($notas);
|
|
|
|
echo "{#}";
|
|
echo implode(" - ", $notas);
|
|
|
|
break;
|
|
|
|
}//switch
|
|
|
|
?>
|