Files
ventas_php/ajax/ventas.php

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
?>