Files
ventas_php/ajax/reportes-ventas.php

1711 lines
56 KiB
PHP
Executable File

<?php
include_once('../init.php');
include_once('../config.php');
include_once(DOC_ROOT.'/libraries.php');
$Usr = $user->Info();
$smarty->assign('Usr', $Usr);
switch($_POST["type"]){
case 'tipoReporte'://tipos de reportes de ventas
switch($_POST['selectRventas'])
{
case "gral":
$dateNow=$reportes->dateNow();
$smarty->assign("dateNow",$dateNow);
if($Usr['type'] == "gerente")
{
$smarty->assign("tipo","gerente");
$reportes->setIdSuc($Usr['sucursalId']);
$resSuc=$reportes->infVendSuc();
$resSuc=$util->DecodeUrlResult($resSuc);
$smarty->assign("resSuc",$resSuc);
}
if($Usr['type'] == 'admin' || $Usr['type'] == 'centralizador' || $Usr['type'] == 'almacen' || $Usr['type'] == 'facturacion' || $Usr['type'] == 'direccion' || $Usr['type'] == 'compras' || $Usr['type'] == 'supervisor')
{
$smarty->assign("tipo","admin");
$resSuc=$reportes->EnumSucursales($Usr['type'],$Usr['usuarioId']);
$resSuc=$util->DecodeUrlResult($resSuc);
$smarty->assign("resSuc",$resSuc);
}
$smarty->display(DOC_ROOT.'/templates/forms/filtro-gral.tpl');
break;
case "gralDias":
$dateNow = $reportes->dateNow();
if($Usr['type'] == "gerente"){
$reportes->setIdSuc($Usr['sucursalId']);
$resSuc=$reportes->infVendSuc();
$resSuc=$util->DecodeUrlResult($resSuc);
$smarty->assign("resSuc",$resSuc);
$smarty->assign("tipo","gerente");
}
if($Usr['type'] == "admin" || $Usr['type'] == 'centralizador' || $Usr['type'] == 'almacen' || $Usr['type'] == 'facturacion' || $Usr['type'] == 'direccion' || $Usr['type'] == 'compras' || $Usr['type'] == 'supervisor'){
$resSuc=$reportes->EnumSucursales($Usr['type'],$Usr['usuarioId']);
$resSuc=$util->DecodeUrlResult($resSuc);
$smarty->assign("resSuc",$resSuc);
$smarty->assign("tipo","admin");
}
$smarty->assign("dateNow",$dateNow);
$smarty->display(DOC_ROOT.'/templates/forms/filtro-gral-dias.tpl');
break;
case "vend":
if($Usr['type']=="admin" || $Usr['type'] == 'centralizador' || $Usr['type'] == 'almacen' || $Usr['type'] == 'facturacion' || $Usr['type'] == 'direccion' || $Usr['type'] == 'compras' || $Usr['type'] == 'supervisor')
{
$reportes->setTypeUser("admin");
$smarty->assign("tipo","admin");
$resSuc=$reportes->EnumSucursales($Usr['type'],$Usr['usuarioId']);
$resSuc=$util->DecodeUrlResult($resSuc);
$smarty->assign("resSuc",$resSuc);
}
if($Usr['type']=="gerente")
{
$reportes->setTypeUser("gerente");
$smarty->assign("tipo","gerente");
$reportes->setIdSuc($Usr['sucursalId']);
$resSuc=$reportes->infVendSuc();
$resSuc=$util->DecodeUrlResult($resSuc);
$smarty->assign("resSuc",$resSuc);
$resVend=$reportes->selectVend();
$resVend=$util->EncodeResult($resVend);
$smarty->assign("resVend",$resVend);
}
$dateNow=$reportes->dateNow();
$smarty->assign("dateNow",$dateNow);
$smarty->display(DOC_ROOT.'/templates/forms/filtro-vend.tpl');
break;
case "temp":
if($Usr['type']=="gerente")
{
$smarty->assign("tipo","gerente");
$reportes->setTypeUser("gerente");
$reportes->setIdSuc($Usr['sucursalId']);
$resSuc=$reportes->infVendSuc();
$resSuc=$util->DecodeUrlResult($resSuc);
$smarty->assign("resSuc",$resSuc);
}
if($Usr['type']=="admin" || $Usr['type'] == 'centralizador' || $Usr['type'] == 'almacen' || $Usr['type'] == 'facturacion' || $Usr['type'] == 'direccion' || $Usr['type'] == 'compras' || $Usr['type'] == 'supervisor')
{
$smarty->assign("tipo","admin");
$reportes->setTypeUser("admin");
$resSuc=$reportes->EnumSucursales($Usr['type'],$Usr['usuarioId']);
$resSuc=$util->DecodeUrlResult($resSuc);
$smarty->assign("resSuc",$resSuc);
}
for($i=2012;$i<2051;$i++)
{
$anio[]=$i;
}
$smarty->assign("anio",$anio);
$resTemp=$reportes->enumTemporada();
$resTemp=$util->EncodeResult($resTemp);
$smarty->assign("resTemp",$resTemp);
$smarty->display(DOC_ROOT.'/templates/forms/filtro-tempo.tpl');
break;
case "fpago":
$dateNow=$reportes->dateNow();
$smarty->assign("dateNow",$dateNow);
if($Usr['type']=="gerente")
{
$smarty->assign("tipo","gerente");
$reportes->setTypeUser("gerente");
$reportes->setIdSuc($Usr['sucursalId']);
$resSuc=$reportes->infVendSuc();
$resSuc=$util->DecodeUrlResult($resSuc);
$smarty->assign("resSuc",$resSuc);
}
if($Usr['type']=="admin" || $Usr['type'] == 'centralizador' || $Usr['type'] == 'almacen' || $Usr['type'] == 'facturacion' || $Usr['type'] == 'direccion' || $Usr['type'] == 'compras' || $Usr['type'] == 'supervisor')
{
$smarty->assign("tipo","admin");
$reportes->setTypeUser("admin");
$resSuc=$reportes->EnumSucursales($Usr['type'],$Usr['usuarioId']);
$resSuc=$util->DecodeUrlResult($resSuc);
$smarty->assign("resSuc",$resSuc);
}
$dateNow=$reportes->dateNow();
$smarty->assign("dateNow",$dateNow);
$resFpago = $reportes->EnumFpago2();
$resFpago = $util->DecodeUrlResult($resFpago);
$smarty->assign("resFpago",$resFpago);
$smarty->display(DOC_ROOT.'/templates/forms/filtro-pago.tpl');
break;
case "proMasVend"://Productos mas vendidos
$dateNow=$reportes->dateNow();
$smarty->assign("dateNow",$dateNow);
if($Usr['type']=="gerente")
{
$smarty->assign("tipo","gerente");
$reportes->setIdSuc($Usr['sucursalId']);
$resSuc=$reportes->infVendSuc();
$resSuc=$util->DecodeUrlResult($resSuc);
$smarty->assign("resSuc",$resSuc);
}
if($Usr['type'] == "admin" || $Usr['type'] == 'centralizador' || $Usr['type'] == 'direccion' || $Usr['type'] == 'almacen' || $Usr['type'] == 'facturacion' || $Usr['type'] == 'compras' || $Usr['type'] == 'supervisor')
{
$smarty->assign("tipo","admin");
$resSuc=$reportes->EnumSucursales($Usr['type'],$Usr['usuarioId']);
$resSuc=$util->DecodeUrlResult($resSuc);
$smarty->assign("resSuc",$resSuc);
}
$smarty->display(DOC_ROOT.'/templates/forms/filtro-proMasVend.tpl');
break;
case "vendProveedor":
$dateNow=$reportes->dateNow();
if($Usr['type']=="gerente")
{
$smarty->assign("tipo","gerente");
$reportes->setIdSuc($Usr['sucursalId']);
$resSuc=$reportes->infVendSuc();
$resSuc=$util->DecodeUrlResult($resSuc);
$smarty->assign("resSuc",$resSuc);
$resProveedor=$reportes->proveedores();
$resProveedor=$util->EncodeResult($resProveedor);
$smarty->assign("resProveedor",$resProveedor);
}
if($Usr['type']=="admin" || $Usr['type'] == 'centralizador' || $Usr['type'] == 'almacen' || $Usr['type'] == 'facturacion' || $Usr['type'] == 'direccion' || $Usr['type'] == 'compras' || $Usr['type'] == 'supervisor')
{
$smarty->assign("tipo","admin");
$resSuc=$reportes->EnumSucursales($Usr['type'],$Usr['usuarioId']);
$resSuc=$util->DecodeUrlResult($resSuc);
$resProveedor=$reportes->proveedores();
$resProveedor=$util->EncodeResult($resProveedor);
$smarty->assign("resProveedor",$resProveedor);
$smarty->assign("resSuc",$resSuc);
}
$smarty->assign("dateNow",$dateNow);
$smarty->display(DOC_ROOT.'/templates/forms/filtro-reporte-ventasProveedor.tpl');
break;
case 'prodProv':
$dateNow = $reportes->dateNow();
$resProveedor =$reportes->proveedores();
$resProveedor = $util->EncodeResult($resProveedor);
if($Usr['type']=="gerente"){
$smarty->assign("tipo","gerente");
$reportes->setIdSuc($Usr['sucursalId']);
$resSuc=$reportes->infVendSuc();
$resSuc=$util->DecodeUrlResult($resSuc);
}
if($Usr['type']=="admin" || $Usr['type'] == 'centralizador'){
$smarty->assign("tipo","admin");
$resSuc=$reportes->enumsucursales();
$resSuc=$util->DecodeUrlResult($resSuc);
}
$smarty->assign("resSuc",$resSuc);
$smarty->assign("dateNow",$dateNow);
$smarty->assign("resProveedor",$resProveedor);
$smarty->display(DOC_ROOT.'/templates/forms/filtro-reporte-prod-prov.tpl');
break;
case 'prodProv2':
$dateNow = $reportes->dateNow();
$resProveedor = $reportes->proveedores();
$proveedores = $util->EncodeResult($resProveedor);
$categorias = $prodCat->EnumerateAll();
$categorias = $util->EncodeResult($categorias);
$resSuc = $reportes->enumsucursales();
$sucursales = $util->DecodeUrlResult($resSuc);
$smarty->assign("tipo","admin");
$smarty->assign("categorias",$categorias);
$smarty->assign("sucursales",$sucursales);
$smarty->assign("dateNow",$dateNow);
$smarty->assign("proveedores",$proveedores);
$smarty->display(DOC_ROOT.'/templates/forms/filtro-reporte-prod-prov2.tpl');
break;
case "buenFinProv":
$fechaHoy = $reportes->dateNow();
$resSuc = $reportes->enumSucursales();
$sucursales = $util->DecodeUrlResult($resSuc);
$resProveedor = $reportes->proveedores();
$proveedores = $util->EncodeResult($resProveedor);
$smarty->assign('proveedores',$proveedores);
$smarty->assign('sucursales',$sucursales);
$smarty->assign('tipo',$Usr['type']);
$smarty->assign('fechaHoy',$fechaHoy);
$smarty->display(DOC_ROOT.'/templates/forms/filtro-buenfin-prov.tpl');
break;
case 'prodsTransito':
$resSuc = $reportes->enumSucursales();
$sucursales = $util->DecodeUrlResult($resSuc);
$smarty->assign('sucursales',$sucursales);
$smarty->display(DOC_ROOT.'/templates/forms/filtro-prods-transito.tpl');
break;
default:
echo "";
}//switch
break;
case "dependSuc":
$reportes->setIdsuc($_POST['sucursal']);
$resVend=$reportes->selectVend();
$resVend=$util->EncodeResult($resVend);
$smarty->assign("resVend",$resVend);
$smarty->display(DOC_ROOT.'/templates/forms/select-vend.tpl');
break;
case 'tipoGral':
include_once(DOC_ROOT."/ajax/reportes/tipoGral.php");
break;
//Por Vendedor
case "tipoVend":
$fechaIni = $_POST['fechaI'];
$fechaFin = $_POST['fechaF'];
$fechaI = date('Y-m-d',strtotime($fechaIni));
$fechaF = date('Y-m-d',strtotime($fechaFin));
$sucursalId = $_POST['sucursalId2'];
$vendedorId = $_POST['vendedorId'];
$start = microtime(true);
$usrType = $Usr['type'];
if($sucursalId)
$sqlFilter = ' AND s.sucursalId = '.$sucursalId;
if($Usr['type'] == 'supervisor')
$sql = 'SELECT s.sucursalId, s.nombre
FROM sucursal s, usuarioSuc us
WHERE s.sucursalId = us.sucursalId
AND us.usuarioId = '.$Usr['usuarioId'].$sqlFilter.'
ORDER BY s.noSuc';
else
$sql = 'SELECT s.sucursalId, s.nombre, s.iva
FROM sucursal s WHERE 1 '.$sqlFilter.'
ORDER BY s.noSuc';
$util->DBSelect($_SESSION['empresaId'])->setQuery($sql);
$sucursals = $util->DBSelect($_SESSION['empresaId'])->GetResult();
//Obtenemos los Vendedores
if($vendedorId != 'todos')
$sqlFilter2 = ' AND usuarioId = '.$vendedorId;
$infoVendedor = $comision->getInfoVendedor();
$ventaTotal = 0;
$data = array();
$ventasVendedor = array();
foreach($sucursals as $suc){
$sucursalId = $suc['sucursalId'];
$data[$sucursalId] = $suc;
$sql = 'SELECT * FROM usuario
WHERE type = "vendedor"
AND sucursalId = '.$sucursalId.$sqlFilter2;
$util->DB()->setQuery($sql);
$vendedores = $util->DB()->GetResult();
foreach($vendedores as $vend){
$usuarioId = $vend['usuarioId'];
$sql = 'SELECT SUM(IF( venta.totalDesc <>0, venta.totalDesc, venta.total )) FROM venta
WHERE ((status = "Cancelado" AND cancelDev = "1") OR status <> "Cancelado")
AND ventaIdAnt = 0
AND status <> "Descuento"
AND venta.vendedorId = "'.$vend['usuarioId'].'"
AND venta.fecha >= "'.$fechaI.' 00:00:00"
AND venta.fecha <= "'.$fechaF.' 23:59:59"';
$util->DBSelect($_SESSION['empresaId'])->setQuery($sql);
$vend['totalventas'] = $util->DBSelect($_SESSION['empresaId'])->GetSingle();
$data[$sucursalId]['ventasucursal'] += $vend['totalventas'];
$ventaTotal += $vend['totalventas'];
$sql = 'SELECT SUM(d.total)
FROM devolucion d, venta v
WHERE d.ventaId = v.ventaId
AND d.fecha >= "'.$fechaI.' 00:00:00"
AND d.fecha <= "'.$fechaF.' 23:59:59"
AND d.sucursalId = '.$sucursalId.'
AND v.vendedorId = '.$vend['usuarioId'];
$util->DBSelect($_SESSION['empresaId'])->setQuery($sql);
$devTotal = $util->DBSelect($_SESSION['empresaId'])->GetSingle();
$vend['totalventas'] -= $devTotal;
$ventaTotal -= $devTotal;
$data[$sucursalId]['ventasucursal'] -= $devTotal;
$comisionVendedor = 0;
if($vend['totalventas'] > 0 && $vend['totalventas'] <= $infoVendedor['rango']){
$totalVtas = $vend['totalventas'];
$totalVtas = $totalVtas / (1 + ($suc['iva']/100));
$comisionVendedor = ($totalVtas * $infoVendedor['comisionBajo'])/100;
}elseif($vend['totalventas'] > $infoVendedor['rango']){
$totalVtas = $vend['totalventas'];
$totalVtas = $totalVtas / (1 + ($suc['iva']/100));
$comisionVendedor = ($totalVtas * $infoVendedor['comisionAlto'])/100;
}
$vend['comisionVendedor'] = $comisionVendedor;
$data[$sucursalId]['vendedor'][$usuarioId] = $vend;
}//foreach vendedor
}//foreach
$smarty->assign('fi',$fechaIni);
$smarty->assign('ff',$fechaFin);
$smarty->assign('ventas',$data);
$smarty->assign('ventaTotal',$ventaTotal);
$smarty->assign('DOC_ROOT', DOC_ROOT);
$smarty->display(DOC_ROOT.'/templates/lists/reportes-vendedor.tpl');
$end = microtime(true);
echo 'Tiempo de Ejecuci&oacute;n: ';
echo $time = number_format(($end - $start), 2);
break;
//Reporte por Temporada
case "tipoTempo":
if($_POST['anio'] == ''){
$util->setError(0,'error','Por favor, seleccione el a&ntilde;o.');
$util->PrintErrors();
echo 'fail[#]';
$smarty->display(DOC_ROOT.'/templates/boxes/status.tpl');
exit;
}
$start = microtime(true);
$anio = $_POST['anio'];
$sucursalId = $_POST['idSuc'];
$temporadaId = $_POST['idTemp'];
$usrType = $Usr['type'];
$reportes->setTypeUser($usrType);
$reportes->setIdSuc($sucursalId);
$reportes->setIdTempo($_POST['idTemp']);
$reportes->setAnio($anio);
$temporadas = $reportes->enumTemporada();
$temporadas = $util->EncodeResult($temporadas);
$resSucursales = $reportes->EnumSucursales($Usr['type'],$Usr['usuarioId']);
$fechaI = $anio.'-01-01';
$fechaF = $anio.'-12-31';
$sucursales = array();
foreach($resSucursales as $suc){
$suc['temporadas'] = $temporadas;
$resTemp = array();
foreach($temporadas as $temp){
$sql = 'SELECT p.modelo, p.codigoBarra, SUM(vp.cantidad) AS vendidos
FROM venta v, ventaProducto vp, producto p
WHERE v.ventaId = vp.ventaId
AND p.productoId = vp.productoId
AND ((v.status = "Cancelado" AND v.cancelDev = "1") OR v.status <> "Cancelado")
AND v.fecha >= "'.$fechaI.' 00:00:00"
AND v.fecha <= "'.$fechaF.' 23:59:59"
AND v.sucursalId = "'.$suc['sucursalId'].'"
AND p.temporadaId = "'.$temp['temporadaId'].'"
GROUP BY vp.productoId';
$util->DBSelect($_SESSION['empresaId'])->setQuery($sql);
$resProductos = $util->DBSelect($_SESSION['empresaId'])->GetResult();
$totalVendidos = 0;
$productos = array();
foreach($resProductos as $res){
$reportes->setFechaI($fechaI);
$reportes->setFechaF($fechaF);
$reportes->setProductoId($res['productoId']);
$reportes->setIdSuc($suc['sucursalId']);
$devueltos = $reportes->GetTotalProdDevBySuc();
$totVend = $res['vendidos'] - $devueltos;
$totalVendidos += $totVend;
$res['vendidos'] = $totVend;
$res['modelo'] = utf8_encode($res['modelo']);
$productos[] = $res;
}
$products = $reportes->orderMultiDimensionalArray($productos,"vendidos",true);
$temp['productos'] = $products;
$temp['totalVendidos'] = $totalVendidos;
$resTemp[] = $temp;
}
$suc['temporadas'] = $resTemp;
$sucursales[] = $suc;
}
echo 'ok[#]';
$smarty->assign('sucursales',$sucursales);
$smarty->display(DOC_ROOT.'/templates/lists/reportes-temporada.tpl');
$end = microtime(true);
echo "Tiempo de Ejecuci&oacute;n: ";
echo $time = number_format(($end - $start), 2);
break;
//Reporte Formas de Pago
case "tipoFpago":
$start = microtime(true);
$idSuc = $_POST['idSuc'];
$idMetodoPago = $_POST['idFpago'];
$fechaIni = $_POST['fechaI'];
$fechaFin = $_POST['fechaF'];
$fechaIni2 = date('Y-m-d',strtotime($fechaIni));
$fechaFin2 = date('Y-m-d',strtotime($fechaFin));
$reportes->setIdSuc($idSuc);
$resSuc = $reportes->EnumSucursales($Usr['type'],$Usr['usuarioId']);
$totales = array();
$formasPago = array();
$sucursales = array();
foreach($resSuc as $suc){
$idSuc = $suc['sucursalId'];
$metodosPago = array();
$totalS = 0;
if($idMetodoPago){
$metodoPago->setMetodoPagoId($idMetodoPago);
$resMetodosPago = $metodoPago->EnumSingle();
}else{
$resMetodosPago = $reportes->EnumFpago2();
}
if($idMetodoPago == 1 || count($resMetodosPago) > 1){
$sql = 'SELECT IF(totalDesc > 0, totalDesc, total) totalVenta,
(
SELECT SUM(vp.cantidad)
FROM ventaPago vp
WHERE vp.ventaId = v.ventaId
) AS totalPago
FROM venta v
WHERE ((v.status = "Cancelado" AND v.cancelDev = "1") OR v.status <> "Cancelado")
AND v.ventaIdAnt = 0
AND v.status <> "Descuento"
AND v.fecha >= "'.$fechaIni2.' 00:00:00"
AND v.fecha <= "'.$fechaFin2.' 23:59:59"
AND v.sucursalId = "'.$idSuc.'"';
$util->DBSelect($_SESSION['empresaId'])->setQuery($sql);
$vtas = $util->DBSelect($_SESSION['empresaId'])->GetResult();
$cambio = 0;
foreach($vtas as $res)
$cambio += $res['totalPago'] - $res['totalVenta'];
}else{
$cambio = 0;
}
$totalCambio = $cambio;
//Metodos de Pago
foreach($resMetodosPago as $val){
$metodoPagoId = $val['metodoPagoId'];
$valT = $metodosPago[$metodoPagoId];
$valT2 = $formasPago[$metodoPagoId];
$sql = 'SELECT SUM(vp.cantidad) FROM venta AS v
LEFT JOIN ventaPago AS vp ON v.ventaId = vp.ventaId
WHERE ((v.status = "Cancelado" AND v.cancelDev = "1") OR v.status <> "Cancelado")
AND v.ventaIdAnt = 0
AND v.status <> "Descuento"
AND v.fecha >= "'.$fechaIni2.' 00:00:00"
AND v.fecha <= "'.$fechaFin2.' 23:59:59"
AND v.sucursalId = "'.$idSuc.'"
AND vp.metodoPagoId = '.$val['metodoPagoId'];
$util->DBSelect($_SESSION['empresaId'])->setQuery($sql);
$totalM = $util->DBSelect($_SESSION['empresaId'])->GetSingle();
$valT['total'] += $totalM;
$valT['nombre'] = $val['nombre'];
$valT2['total'] += $totalM;
$valT2['nombre'] = $val['nombre'];
$metodosPago[$metodoPagoId] = $valT;
$formasPago[$metodoPagoId] = $valT2;
$totales['ventas'] += $totalM;
$totalS += $totalM;
}//foreach
//Obtenemos losg pagos con Saldo a Favor
if(count($metodosPago) > 1 || isset($metodosPago[1]) == true){
$sql = 'SELECT SUM(vp.cantidad) FROM venta AS v
LEFT JOIN ventaPago AS vp ON v.ventaId = vp.ventaId
WHERE ((v.status = "Cancelado" AND v.cancelDev = "1") OR v.status <> "Cancelado")
AND v.ventaIdAnt = 0
AND v.status <> "Descuento"
AND v.fecha >= "'.$fechaIni2.' 00:00:00"
AND v.fecha <= "'.$fechaFin2.' 23:59:59"
AND v.sucursalId = "'.$idSuc.'"
AND vp.metodoPagoId = 6';
$util->DBSelect($_SESSION['empresaId'])->setQuery($sql);
$totalSF = $util->DBSelect($_SESSION['empresaId'])->GetSingle();
}
//Eliminamos las Devoluciones
$sql = 'SELECT SUM(dev.total) FROM venta AS vta, devolucion AS dev
WHERE vta.ventaId = dev.ventaId
AND dev.fecha >= "'.$fechaIni2.' 00:00:00"
AND dev.fecha <= "'.$fechaFin2.' 23:59:59"
AND dev.sucursalId = "'.$idSuc.'"
ORDER BY vta.ventaId ASC';
$util->DBSelect($_SESSION['empresaId'])->setQuery($sql);
$totalDev = $util->DBSelect($_SESSION['empresaId'])->GetSingle();
if(count($metodosPago) > 1 || isset($metodosPago[1]) == true){
$mEF = $metodosPago[1];
$mEF['total'] = $mEF['total'] - $totalCambio + $totalSF - $totalDev;
$metodosPago[1] = $mEF;
$mEF = $formasPago[1];
$mEF['total'] = $mEF['total'] - $totalCambio + $totalSF - $totalDev;
$formasPago[1] = $mEF;
}
$suc['metodosPago'] = $metodosPago;
$suc['total'] = $totalS - $totalCambio + $totalSF - $totalDev;
$totales['ventas'] += $totalSF;
$totales['total'] += $suc['total'];
if(count($metodosPago))
$sucursales[] = $suc;
}//foreach
$smarty->assign("idMetodoPago",$idMetodoPago);
$smarty->assign("totales",$totales);
$smarty->assign("formasPago",$formasPago);
$smarty->assign("sucursales",$sucursales);
$smarty->display(DOC_ROOT.'/templates/lists/reportes-pago.tpl');
$end = microtime(true);
echo "Tiempo de Ejecuci&oacute;n: ";
echo $time = number_format(($end - $start), 2);
break;
//REPORTE PRODUCTOS
case "tipoProMasVend":
$start = microtime(true);
$reportes->setFechaI($_POST['fechaI']);
$reportes->setFechaF($_POST['fechaF']);
$orden = $_POST['orden'];
$fechaI = date('Y-m-d',strtotime($_POST['fechaI']));
$fechaF = date('Y-m-d',strtotime($_POST['fechaF']));
$smarty->assign("fi",$_POST['fechaI']);
$smarty->assign("ff",$_POST['fechaF']);
$smarty->assign("orden",$_POST['orden']);
$smarty->assign("type",$Usr);
if($orden == "mayor")
$mayormenor = true;
else
$mayormenor = false;
if($Usr['type']=="admin")
$smarty->assign("tipo","admin");
if($Usr['type']=="gerente")
$smarty->assign("tipo","gerente");
$reportes->setIdSuc($_POST['sucursal']);
$resSucursales = $reportes->EnumSucursales($Usr['type'],$Usr['usuarioId']);
$totDispGral = 0;
$totProdsGral = 0;
$totImpGral = 0;
$prodsGral = array();
foreach($resSucursales as $res){
$sucursalId = $res['sucursalId'];
$reportes->setIdSuc($sucursalId);
$sql = 'SELECT p.productoId, p.codigoBarra, p.modelo, p.costo, p.precioVentaIva AS precioVenta, SUM(vp.cantidad) AS vendidos
FROM ventaProducto AS vp, venta AS v, producto AS p
WHERE v.ventaId = vp.ventaId
AND vp.productoId = p.productoId
AND ((v.status = "Cancelado" AND v.cancelDev = "1") OR v.status <> "Cancelado")
AND v.fecha >= "'.$fechaI.' 00:00:00"
AND v.fecha <= "'.$fechaF.' 23:59:59"
AND v.sucursalId = "'.$sucursalId.'"
GROUP BY vp.productoId ORDER BY p.productoId';
$util->DBSelect($_SESSION['empresaId'])->setQuery($sql);
$resProds = $util->DBSelect($_SESSION['empresaId'])->GetResult();
$sql = 'SELECT SUM(cantidad) AS disponible, productoId FROM inventario
WHERE sucursalId = '.$sucursalId.'
AND status = "Disponible" GROUP BY productoId ORDER BY productoId';
$util->DBSelect($_SESSION['empresaId'])->setQuery($sql);
$disponibles = $util->DBSelect($_SESSION['empresaId'])->GetResultById("productoId");
$start = microtime(true);
$sql = 'SELECT SUM(cantidad) AS ventasDescontadas, inventario.productoId FROM inventario
JOIN pedido ON pedido.pedidoId = inventario.pedidoId
WHERE inventario.sucursalId = '.$sucursalId.'
AND pedido.ventaDesc = "Si"
GROUP BY inventario.productoId ORDER BY inventario.productoId';
$util->DBSelect($_SESSION['empresaId'])->setQuery($sql);
$ventasDescontadas = $util->DBSelect($_SESSION['empresaId'])->GetResultById("productoId");
//Importe Venta
$sql = 'SELECT SUM(
IF(vp.tipoDesc = "Porcentaje", vp.total - (vp.total * (vp.valDesc / 100)),
IF(vp.tipoDesc = "Dinero", vp.total - vp.valDesc, vp.total)
)
) AS total, vp.productoId FROM ventaProducto AS vp, venta AS v
WHERE v.ventaId = vp.ventaId
AND ((v.status = "Cancelado" AND v.cancelDev = "1") OR v.status <> "Cancelado")
AND v.fecha >= "'.$fechaI.' 00:00:00"
AND v.fecha <= "'.$fechaF.' 23:59:59"
AND v.sucursalId = "'.$sucursalId.'"
GROUP BY vp.productoId';
$util->DBSelect($_SESSION['empresaId'])->setQuery($sql);
$impVendArray = $util->DBSelect($_SESSION['empresaId'])->GetResultById("productoId");
$totalDisp = 0;
$totalProds = 0;
$totalImporte = 0;
$productos = array();
foreach($resProds as $prod){
$prod["disponible"] = $disponibles[$prod["productoId"]]["disponible"];
$prod["ventasDescontadas"] = $ventasDescontadas[$prod["productoId"]]["ventasDescontadas"];
$productoId = $prod['productoId'];
$reportes->setProductoId($productoId);
$devueltos = $reportes->GetTotalProdDevBySuc();
$totalVendidos = $prod['vendidos'] - $devueltos;
$prod['vendidos'] = $totalVendidos;
if($prod['vendidos'] == 0)
continue;
$impVend = $impVendArray[$prod["productoId"]]["total"];;
//Este tambien se puede mejorar de la misma manera
$impDev = $reportes->GetImpTotalProdDevBySuc();
$importe = $impVend - $impDev;
$prod['total'] = $importe;
$prod['disponible'] -= $prod['ventasDescontadas'];
$totalDisp += $prod['disponible'];
$totalProds += $totalVendidos;
$totalImporte += $importe;
//Productos General MasMenos Vendidos
$cardP = array();
$cardP = $prodsGral[$productoId];
if(count($cardP) == 0){
$cardP['modelo'] = utf8_encode($prod['modelo']);
$cardP['codigoBarra'] = $prod['codigoBarra'];
$cardP['precioVenta'] = $prod['precioVenta'];
$cardP['costo'] = $prod['costo'];
}
$cardP['total'] = $importe;
$inventario->setProductoId($productoId);
$inventario->setSucursalId($sucursalId);
$cardP['disponible'] += $prod['disponible'];
$cardP['vendidos'] += $totalVendidos;
$totDispGral += $prod['disponible'];
$totProdsGral += $totalVendidos;
$totImpGral += $cardP['total'];
$prodsGral[$productoId] = $cardP;
$productos[] = $prod;
}
$res['productos'] = $reportes->orderMultiDimensionalArray($productos,'vendidos',$mayormenor);
$res['disponible'] = $totalDisp;
$res['vendidos'] = $totalProds;
$res['importe'] = $totalImporte;
$sucursales[] = $res;
}//foreach
$prodsGral2 = $reportes->orderMultiDimensionalArray($prodsGral,'vendidos',$mayormenor);
$smarty->assign('totDispGral',$totDispGral);
$smarty->assign('totProdsGral',$totProdsGral);
$smarty->assign('totImpGral',$totImpGral);
$smarty->assign('prodsGral',$prodsGral2);
$smarty->assign('sucursales',$sucursales);
$smarty->display(DOC_ROOT.'/templates/lists/reportes-proMasVend.tpl');
$end = microtime(true);
echo "Tiempo de Ejecuci&oacute;n: ";
echo $time = number_format(($end - $start), 2);
break;
case 'tipoVentasProv':
$start = microtime(true);
$idSucursal = $_POST['idSucursal'];
$idProveedor = $_POST['idProveedor'];
$fechaIni = date('Y-m-d',strtotime($_POST['fechaI']));
$fechaFin = date('Y-m-d',strtotime($_POST['fechaF']));
$reportes->setIdSuc($idSucursal);
$resSuc=$reportes->EnumSucursales($Usr['type'],$Usr['usuarioId']);
if($idProveedor)
$sqlFilter = ' AND proveedorId = '.$idProveedor;
$sql = 'SELECT proveedorId, nombre FROM proveedor
WHERE baja = "0" '.$sqlFilter.'
ORDER BY proveedorId ASC';
$util->DBSelect($_SESSION['empresaId'])->setQuery($sql);
$resProv = $util->DBSelect($_SESSION['empresaId'])->GetResult();
$totales['inv'] = 0;
$totales['prods'] = 0;
$totales['vtas'] = 0;
$sucursales = array();
foreach($resSuc as $res){
$sucursalId = $res['sucursalId'];
$totalInvG = 0;
$totalProdsG = 0;
$totalVtasG = 0;
$proveedores = array();
foreach($resProv as $val){
$sql = 'SELECT SUM(vp.cantidad) AS totalProds , SUM(vp.total) AS totalVtas
FROM venta AS v, ventaProducto AS vp, producto AS p
WHERE v.ventaId = vp.ventaId
AND vp.productoId = p.productoId
AND ((v.status = "Cancelado" AND v.cancelDev = "1") OR v.status <> "Cancelado")
AND v.status <> "Descuento"
AND v.fecha >= "'.$fechaIni.' 00:00:00"
AND v.fecha <= "'.$fechaFin.' 23:59:59"
AND v.sucursalId = "'.$sucursalId.'"
AND p.proveedorId = '.$val['proveedorId'];
$util->DBSelect($_SESSION['empresaId'])->setQuery($sql);
$row = $util->DBSelect($_SESSION['empresaId'])->GetRow();
$totalProds = $row['totalProds'];
$totalVtas = $row['totalVtas'];
$sql = 'SELECT SUM(dp.cantidad) AS totalProdsDev, SUM(dp.total) AS totalDevs
FROM venta AS v, devolucion AS d, devolucionProducto AS dp, producto AS p
WHERE v.ventaId = d.ventaId
AND d.devolucionId = dp.devolucionId
AND dp.productoId = p.productoId
AND ((v.status = "Cancelado" AND v.cancelDev = "1") OR v.status <> "Cancelado")
AND v.status <> "Descuento"
AND v.fecha >= "'.$fechaIni.' 00:00:00"
AND v.fecha <= "'.$fechaFin.' 23:59:59"
AND v.sucursalId = "'.$sucursalId.'"
AND p.proveedorId = '.$val['proveedorId'];
$util->DBSelect($_SESSION['empresaId'])->setQuery($sql);
$row = $util->DBSelect($_SESSION['empresaId'])->GetRow();
$totalProds -= $row['totalProdsDev'];
$totalVtas -= $row['totalDevs'];
if($totalProds){
$a = 1;
}else{
continue;
}
//Inventario Disponible
$sql = 'SELECT SUM(inv.cantidad)
FROM inventario AS inv, producto AS prod, proveedor AS prov
WHERE inv.productoId = prod.productoId
AND prod.proveedorId = prov.proveedorId
AND inv.status = "Disponible"
AND prod.proveedorId = "'.$val['proveedorId'].'"
AND inv.sucursalId = "'.$sucursalId.'"';
$util->DBSelect($_SESSION['empresaId'])->setQuery($sql);
$totalInv = $util->DBSelect($_SESSION['empresaId'])->GetSingle();
//Eliminamos las ventas no descontadas
$sql = 'SELECT SUM(cantidad)
FROM inventario
LEFT JOIN pedido ON pedido.pedidoId = inventario.pedidoId
WHERE sucursalId = "'.$sucursalId.'"
AND pedido.proveedorId = "'.$val['proveedorId'].'"
AND pedido.ventaDesc = "Si"';
$util->DBSelect($_SESSION['empresaId'])->setQuery($sql);
$totalInvDesc = $util->DBSelect($_SESSION['empresaId'])->GetSingle();
$val['nombre'] = utf8_encode($val['nombre']);
$val['totalInv'] = $totalInv - $totalInvDesc;
$val['totalProds'] = $totalProds;
$val['totalVtas'] = $totalVtas;
$totalInvG += $totalInv;
$totalProdsG += $totalProds;
$totalVtasG += $totalVtas;
$proveedores[] = $val;
}//foreach
$res['proveedores'] = $proveedores;
$res['totalInv'] = $totalInvG;
$res['totalProds'] = $totalProdsG;
$res['totalVtas'] = $totalVtasG;
$totales['inv'] += $totalInvG;
$totales['prods'] += $totalProdsG;
$totales['vtas'] += $totalVtasG;
$sucursales[] = $res;
}//foreach
$smarty->assign('totales',$totales);
$smarty->assign('sucursales',$sucursales);
$smarty->display(DOC_ROOT.'/templates/lists/reportes-ventasProveedor.tpl');
$end = microtime(true);
echo "Tiempo de Ejecuci&oacute;n: ";
echo $time = number_format(($end - $start), 2);
break;
case 'tipoProdProv':
$proveedorId = $_POST['idProveedor'];
$sucursalId = $_POST['idSucursal'];
$mesI = $_POST['mesI'];
$anioI = $_POST['anioI'];
$mesF = $_POST['mesF'];
$anioF = $_POST['anioF'];
$codigoBarra = trim($_POST['codigoBarra']);
if($codigoBarra == '' && $proveedorId == ''){
$util->setError(0,'error','Seleccione el proveedor','');
$util->PrintErrors();
echo 'fail[#]';
$smarty->display(DOC_ROOT.'/templates/boxes/status.tpl');
exit;
}
if($codigoBarra != ''){
$producto->setCodigoBarra($codigoBarra);
$productoId = $producto->GetProductIdByCodigo();
$sql = "SELECT proveedorId FROM producto WHERE productoId = ".$productoId;
$util->DBSelect($_SESSION['empresaId'])->setQuery($sql);
$proveedorId = $util->DBSelect($_SESSION['empresaId'])->GetSingle();
}
//Obtener el Ultimo Reporte Generado
$sql = "SELECT reporte, fecha FROM `reporteProvBest` WHERE proveedorId = ".$proveedorId;
$util->DBSelect($_SESSION['empresaId'])->setQuery($sql);
$row = $util->DBSelect($_SESSION['empresaId'])->GetRow();
$reporte = $row['reporte'];
$fechaRep = date('d-m-Y',strtotime($row['fecha']));
$resSucursales = unserialize(urldecode($reporte));
//Obtenemos los Periodos
$strFechaI = strtotime('01-'.$mesI.'-'.$anioI);
$mI = intval($mesI);
$yI = $anioI;
$mF = intval($mesF);
$yF = $anioF;
$anios = $yF - $yI;
if($anios == 0){
$meses = $mF - $mI;
$meses += 1;
}else{
$meses = (12 - $mI) + 1 + $mF;
}
$fIni = $anioI.'-'.$mesI.'-01';
$fFin = $yF.'-'.$mesF.'-31';
//Meses Actuales
$aniosX = date('Y') - 2013;
$mesesX = (12 - 6) + 1 + $mF;
$mK = $mesesX - $meses;
$periodo = array();
for($m=0; $m<$meses; $m++){
$fecha = date('Y-m-d',strtotime('+'.$m.' month',$strFechaI));
$mm = date('m',strtotime($fecha));
$y = date('Y',strtotime($fecha));
$mes = $util->GetMMMName($mm);
$fPerI = $y.'-'.$mm.'-01';
$fPerF = $y.'-'.$mm.'-31';
if($fPerI >= $fIni && $fPerF <= $fFin)
$periodo[$mK] = $mes.' '.$y;
$mK++;
}//for
//Sucursales Calculos
$totIniciales = array();
$totEntradas = array();
$totSalidas = array();
$totEntradasA = array();
$totSalidasA = array();
$totBloqueados = array();
$totPzas = 0;
$totImporte = 0;
$totVtas = 0;
$totImporteVtas = 0;
$products = array();
$sucursales = array();
foreach($resSucursales as $res){
if($sucursalId > 0 && $sucursalId != $res['sucursalId'])
continue;
$totSubs = array();
$totCats = array();
$productos = array();
foreach($res['productos'] as $k1 => $cat){
$cats = array();
foreach($cat as $k2 => $subcat){
$subcats = array();
foreach($subcat as $k3 => $prod){
//Totales Generales
$idProd = $prod['productoId'];
if($productoId > 0 && $prod['productoId'] != $productoId)
continue;
foreach($periodo as $kP => $per){
$totalPzas = $prod['iniciales'][$kP];
$totalPzas += $prod['entradas'][$kP];
$totalPzas -= $prod['salidas'][$kP];
$totalPzas += $prod['entradasA'][$kP];
$totalPzas -= $prod['salidasA'][$kP];
$totalPzas -= $prod['bloqueados'][$kP];
$totSubs[$k2][$kP]['inicial'] += $prod['iniciales'][$kP];
$totSubs[$k2][$kP]['entradas'] += $prod['entradas'][$kP];
$totSubs[$k2][$kP]['salidas'] += $prod['salidas'][$kP];
$totSubs[$k2][$kP]['entradasA'] += $prod['entradasA'][$kP];
$totSubs[$k2][$kP]['salidasA'] += $prod['salidasA'][$kP];
$totSubs[$k2][$kP]['bloqueados'] += $prod['salidasA'][$kP];
$totCats[$k1][$kP]['inicial'] += $prod['iniciales'][$kP];
$totCats[$k1][$kP]['entradas'] += $prod['entradas'][$kP];
$totCats[$k1][$kP]['salidas'] += $prod['salidas'][$kP];
$totCats[$k1][$kP]['entradasA'] += $prod['entradasA'][$kP];
$totCats[$k1][$kP]['salidasA'] += $prod['salidasA'][$kP];
$totCats[$k1][$kP]['bloqueados'] += $prod['salidasA'][$kP];
$totIniciales[$kP] += $prod['iniciales'][$kP];
$totEntradas[$kP] += $prod['entradas'][$kP];
$totSalidas[$kP] += $prod['salidas'][$kP];
$totEntradasA[$kP] += $prod['entradasA'][$kP];
$totSalidasA[$kP] += $prod['salidasA'][$kP];
$totBloqueados[$kP] += $prod['bloqueados'][$kP];
//Totales Generales
$products[$idProd]['iniciales'][$kP] += $prod['iniciales'][$kP];
$products[$idProd]['entradas'][$kP] += $prod['entradas'][$kP];
$products[$idProd]['salidas'][$kP] += $prod['salidas'][$kP];
$products[$idProd]['entradasA'][$kP] += $prod['entradasA'][$kP];
$products[$idProd]['salidasA'][$kP] += $prod['salidasA'][$kP];
$products[$idProd]['bloqueados'][$kP] += $prod['bloqueados'][$kP];
$prodTotales['iniciales'][$kP] += $prod['iniciales'][$kP];
$prodTotales['entradas'][$kP] += $prod['entradas'][$kP];
$prodTotales['salidas'][$kP] += $prod['salidas'][$kP];
$prodTotales['entradasA'][$kP] += $prod['entradasA'][$kP];
$prodTotales['salidasA'][$kP] += $prod['salidasA'][$kP];
$prodTotales['bloqueados'][$kP] += $prod['bloqueados'][$kP];
}//foreach
$totalVtas = 0;
foreach($periodo as $kP => $per)
$totalVtas += $prod['salidasVtas'][$kP];
$prod['totalPzas'] = $totalPzas;
$prod['importe'] = $prod['costo'] * $totalPzas;
$prod['totalVtas'] = $totalVtas;
$prod['precioVta'] = $prod['precioVentaIva'];
$prod['importeVtas'] = $totalVtas * $prod['precioVentaIva'];
$subcats[$k3] = $prod;
//Totales Generales
$products[$idProd]['codigoBarra'] = $prod['codigoBarra'];
$products[$idProd]['modelo'] = $prod['modelo'];
$products[$idProd]['fecha'] = $prod['fecha'];
$products[$idProd]['costo'] = $prod['costo'];
$products[$idProd]['precioVta'] = $prod['precioVta'];
$products[$idProd]['totalPzas'] += $prod['totalPzas'];
$products[$idProd]['importe'] += $prod['importe'];
$products[$idProd]['totalVtas'] += $prod['totalVtas'];
$products[$idProd]['importeVtas'] += $prod['importeVtas'];
$prodTotales['totalPzas'] += $prod['totalPzas'];
$prodTotales['importe'] += $prod['importe'];
$prodTotales['totalVtas'] += $prod['totalVtas'];
$prodTotales['importeVtas'] += $prod['importeVtas'];
//Otros Totales
$totPzas += $prod['totalPzas'];
$totImporte += $prod['importe'];
$totVtas += $prod['totalVtas'];
$totImporteVtas += $prod['importeVtas'];
//Totales
$totSubs[$k2]['totalPzas'] += $totalPzas;
$totSubs[$k2]['importe'] += $prod['importe'];
$totSubs[$k2]['totalVtas'] += $totalVtas;
$totSubs[$k2]['importeVtas'] += $prod['importeVtas'];
$totCats[$k1]['totalPzas'] += $totalPzas;
$totCats[$k1]['importe'] += $prod['importe'];
$totCats[$k1]['totalVtas'] += $totalVtas;
$totCats[$k1]['importeVtas'] += $prod['importeVtas'];
//Totales Generales
$totEntradas[$m] += $cantEntrada;
$totSalidas[$m] += $cantSalida;
$totEntradasA[$m] += $cantEntradaA;
$totSalidasA[$m] += $cantSalidaA;
$totBloqueados[$m] += $cantBloqueados;
}//foreach
$cats[$k2] = $subcats;
}//foreach
$productos[$k1] = $cats;
}//foreach
$res['productos'] = $productos;
$res['totSubs'] = $totSubs;
$res['totCats'] = $totCats;
$totalPzas = ($cantInicial + $cantEntrada - $cantSalida + $cantEntradaA - $cantSalidaA - $cantBloqueados);
$res['totalPzas'] = $totalPzas;
$res['totIniciales'] = $totIniciales;
$res['totEntradas'] = $totEntradas;
$res['totSalidas'] = $totSalidas;
$res['totEntradasA'] = $totEntradasA;
$res['totSalidasA'] = $totSalidasA;
$res['totBloqueados'] = $totBloqueados;
$res['totPzas'] = $totPzas;
$res['totImporte'] = $totImporte;
$res['totVtas'] = $totVtas;
$res['totImporteVtas'] = $totImporteVtas;
$sucursales[] = $res;
}//foreach
//Other
$width = 800 + ($meses * 50);
$perIni = $util->GetMMMName($mesI).' '.$anioI;
$perFin = $util->GetMMMName($mesF).' '.$anioF;
$titulo = 'Periodo: <br>'.$perIni.' a '.$perFin;
$colspan = 11 + ($meses*2);
$smarty->assign('titulo',$titulo);
$smarty->assign('fechaRep',$fechaRep);
$smarty->assign('colspan',$colspan);
$smarty->assign('width',$width);
$smarty->assign('periodo',$periodo);
//Totales Globales
$smarty->assign('products',$products);
$smarty->assign('prodTotales',$prodTotales);
echo 'ok[#]';
$smarty->assign('sucursales',$sucursales);
$smarty->display(DOC_ROOT.'/templates/lists/reportes-prod-prov.tpl');
break;
case 'tipoProdProv2':
$proveedorId = $_POST['idProveedor'];
$sucursalId = $_POST['idSucursal'];
$fechaI = $_POST['fechaI'];
$codigoBarra = trim($_POST['codigoBarra']);
$reportes->setIdSuc($sucursalId);
$resSuc = $reportes->EnumSucursales();
if($codigoBarra != ''){
$producto->setCodigoBarra($codigoBarra);
$productoId = $producto->GetProductIdByCodigo();
$producto->setProductoId($productoId);
$infP = $producto->Info();
$proveedorId = $infP['proveedorId'];
}
$sucursales = array();
foreach($resSuc as $suc){
$sucursalId = $suc['sucursalId'];
$producto->setProveedorId($proveedorId);
$resProds = $producto->EnumByProveedor();
$proveedor->setProveedorId($proveedorId);
$nomProv = $proveedor->GetNameById();
$strFechaI = $fechaI;
$totPzas = 0;
$totImporte = 0;
$totVtas = 0;
$totImporteVtas = 0;
$totIniciales = array();
$totEntradas = array();
$totSalidas = array();
$productos = array();
$resCategorias = array();
$resSubcats = array();
foreach($resProds as $res){
$prodCatId = $res['prodCatId'];
$prodSubcatId = $res['prodSubcatId'];
if($productoId > 0 && $res['productoId'] != $productoId)
continue;
if(!in_array($prodCatId, $resCategorias)){
$resCategorias[] = $prodCatId;
}
if(count($resSubcats[$prodCatId]) == 0)
$resSubcats[$prodCatId] = array();
$resSub = $resSubcats[$prodCatId];
if(!in_array($prodSubcatId, $resSub)){
$resSubcats[$prodCatId][] = $prodSubcatId;
}
$producto->setProductoId($res['productoId']);
$infP = $producto->Info();
$producto->setProductoId($res['productoId']);
$res['fecha'] = $producto->GetFechaUltCompra();
if($res['fecha'] == 0)
continue;
$res['modelo'] = utf8_encode($res['modelo']);
//Obtenemos el Saldo Inicial
$fechaII = '2013-06-01';
$fechaFF = date('Y-m-d',strtotime($fechaI));
$producto->setProductoId($res['productoId']);
$producto->setFechaIni($fechaII);
$producto->setFechaFin($fechaFF);
$producto->setSucursalId($sucursalId);
$cantSalidaI = $producto->GetCantVendido();
$cantSalidaI += $producto->GetSalEnvTT();
$cantEntradaI = $producto->GetCantTotalCompBySuc();
$cantEntradaI += $producto->GetEntEnvTT();
$cantEntradaAI = $producto->GetEntAjusteEnv();
$cantSalidaAI = $producto->GetSalAjusteEnv();
$cantInicial = $cantEntradaI - $cantSalidaI + $cantEntradaAI - $cantSalidaAI;
$totalVtas = 0;
$mostrar = false;
$totalPzas = 0;
$iniciales = array();
$entradas = array();
$salidas = array();
$m = 0;
$fechaIni = $fechaFF;
$fechaFin = $fechaFF;
$producto->setProductoId($res['productoId']);
$producto->setFechaIni($fechaIni);
$producto->setFechaFin($fechaFin);
$producto->setSucursalId($sucursalId);
$cantSalida = $producto->GetCantVendido();
$cantSalida += $producto->GetSalEnvTT();
$cantEntrada = $producto->GetCantTotalCompBySuc();
$cantEntrada += $producto->GetEntEnvTT();
$cantEntradaA = $producto->GetEntAjusteEnv();
$cantSalidaA = $producto->GetSalAjusteEnv();
$totalVtas += $cantSalida;
$totalPzas = ($cantInicial + $cantEntrada - $cantSalida + $cantEntradaA - $cantSalidaA);
$totSubs[$prodSubcatId][$m]['inicial'] += $cantInicial;
$totSubs[$prodSubcatId][$m]['entradas'] += $cantEntrada;
$totSubs[$prodSubcatId][$m]['salidas'] += $cantSalida;
$totSubs[$prodSubcatId][$m]['entradasA'] += $cantEntradaA;
$totSubs[$prodSubcatId][$m]['salidasA'] += $cantSalidaA;
$totCats[$prodCatId][$m]['inicial'] += $cantInicial;
$totCats[$prodCatId][$m]['entradas'] += $cantEntrada;
$totCats[$prodCatId][$m]['salidas'] += $cantSalida;
$totCats[$prodCatId][$m]['entradasA'] += $cantEntradaA;
$totCats[$prodCatId][$m]['salidasA'] += $cantSalidaA;
if($cantEntrada > 0 || $cantEntradaA > 0 || $cantInicial > 0)
$mostrar = true;
if($cantSalida > 0 || $cantSalidaA > 0 || $cantInicial > 0)
$mostrar = true;
if($mostrar == true){
$iniciales[$m] = $cantInicial;
$entradas[$m] = $cantEntrada;
$salidas[$m] = $cantSalida;
$entradasA[$m] = $cantEntradaA;
$salidasA[$m] = $cantSalidaA;
$totIniciales[$m] += $cantInicial;
$totEntradas[$m] += $cantEntrada;
$totSalidas[$m] += $cantSalida;
$totEntradasA[$m] += $cantEntradaA;
$totSalidasA[$m] += $cantSalidaA;
}else{
$iniciales[$m] = 0;
$entradas[$m] = 0;
$salidas[$m] = 0;
$entradasA[$m] = 0;
$salidasA[$m] = 0;
}
$cantInicial = $cantInicial + $cantEntrada - $cantSalida + $cantEntradaA - $cantSalidaA;
$res['iniciales'] = $iniciales;
$res['entradas'] = $entradas;
$res['salidas'] = $salidas;
$res['entradasA'] = $entradasA;
$res['salidasA'] = $salidasA;
$res['totalPzas'] = $totalPzas;
$res['proveedor'] = $nomProv;
$res['importe'] = $res['costo'] * $totalPzas;
$res['totalVtas'] = $totalVtas;
$res['precioVta'] = $infP['precioVentaIva'];
$res['importeVtas'] = $totalVtas * $infP['precioVentaIva'];
$totSubs[$prodSubcatId]['totalPzas'] += $totalPzas;
$totCats[$prodCatId]['totalPzas'] += $totalPzas;
$totSubs[$prodSubcatId]['importe'] += $res['importe'];
$totCats[$prodCatId]['importe'] += $res['importe'];
$totSubs[$prodSubcatId]['totalVtas'] += $totalVtas;
$totCats[$prodCatId]['totalVtas'] += $totalVtas;
$totSubs[$prodSubcatId]['importeVtas'] += $res['importeVtas'];
$totCats[$prodCatId]['importeVtas'] += $res['importeVtas'];
$res['prodCatId'] = $infP['prodCatId'];
$res['prodSubcatId'] = $infP['prodSubcatId'];
if($mostrar == true){
$totPzas += $totalPzas;
$totImporte += $res['importe'];
$totVtas += $totalVtas;
$totImporteVtas += $res['importeVtas'];
$productos[$prodCatId][$prodSubcatId][] = $res;
}
}//foreach
$categorias = array();
foreach($resCategorias as $prodCatId){
$card['prodCatId'] = $prodCatId;
$prodCat->setProdCatId($prodCatId);
$card['nombre'] = utf8_encode($prodCat->GetNameById());
$categorias[] = $card;
}
$subcategorias = array();
foreach($resSubcats as $prodCatId => $subcats){
$card = array();
$subcats2 = array();
foreach($subcats as $prodSubcatId){
$card['prodSubcatId'] = $prodSubcatId;
$prodSubcat->setProdSubcatId($prodSubcatId);
$card['nombre'] = utf8_encode($prodSubcat->GetNameById());
$subcats2[] = $card;
}
$subcategorias[$prodCatId] = $subcats2;
}
$suc['productos'] = $productos;
$suc['categorias'] = $categorias;
$suc['subcategorias'] = $subcategorias;
$suc['totSubs'] = $totSubs;
$suc['totCats'] = $totCats;
$suc['totIniciales'] = $totIniciales;
$suc['totEntradas'] = $totEntradas;
$suc['totSalidas'] = $totSalidas;
$suc['totEntradasA'] = $totEntradasA;
$suc['totSalidasA'] = $totSalidasA;
$suc['totPzas'] = $totPzas;
$suc['totImporte'] = $totImporte;
$suc['totVtas'] = $totVtas;
$suc['totImporteVtas'] = $totImporteVtas;
$sucursales[] = $suc;
}//foreach
$meses = 1;
$periodo = array();
for($m=0; $m<$meses; $m++)
$periodo[$m] = $fechaI;
$width = 800 + ($meses * 50);
$titulo = 'Periodo: <br>'.$fechaI;
$colspan = 11 + ($meses*2);
$smarty->assign('titulo',$titulo);
$smarty->assign('colspan',$colspan);
$smarty->assign('width',$width);
$smarty->assign('periodo',$periodo);
$smarty->assign('sucursales',$sucursales);
$smarty->display(DOC_ROOT.'/templates/lists/reportes-prod-prov2.tpl');
break;
case '_tipoProMasVend':
$start = microtime(true);
$reportes->setFechaI($_POST['fechaI']);
$reportes->setFechaF($_POST['fechaF']);
$orden = $_POST['orden'];
$fechaI = date('Y-m-d',strtotime($_POST['fechaI']));
$fechaF = date('Y-m-d',strtotime($_POST['fechaF']));
$smarty->assign("fi",$_POST['fechaI']);
$smarty->assign("ff",$_POST['fechaF']);
$smarty->assign("orden",$_POST['orden']);
$smarty->assign("type",$Usr);
if($orden == "mayor")
$mayormenor = true;
else
$mayormenor = false;
if($Usr['type']=="admin")
$smarty->assign("tipo","admin");
if($Usr['type']=="gerente")
$smarty->assign("tipo","gerente");
$reportes->setIdSuc($_POST['sucursal']);
$resSucursales = $reportes->EnumSucursales($Usr['type'],$Usr['usuarioId']);
$totDispGral = 0;
$totProdsGral = 0;
$totImpGral = 0;
$prodsGral = array();
foreach($resSucursales as $res){
$sucursalId = $res['sucursalId'];
$reportes->setIdSuc($sucursalId);
$sql = 'SELECT p.productoId, p.codigoBarra, p.modelo, p.costo, p.precioVentaIva AS precioVenta,
SUM(vp.cantidad) AS vendidos
FROM ventaProducto AS vp, venta AS v, producto AS p
WHERE v.ventaId = vp.ventaId
AND vp.productoId = p.productoId
AND ((v.status = "Cancelado" AND v.cancelDev = "1") OR v.status <> "Cancelado")
AND v.fecha >= "'.$fechaI.' 00:00:00"
AND v.fecha <= "'.$fechaF.' 23:59:59"
AND v.sucursalId = "'.$sucursalId.'"
GROUP BY vp.productoId';
$util->DBSelect($_SESSION['empresaId'])->setQuery($sql);
$resProds = $util->DBSelect($_SESSION['empresaId'])->GetResult();
$totalDisp = 0;
$totalProds = 0;
$totalImporte = 0;
$productos = array();
foreach($resProds as $prod){
$productoId = $prod['productoId'];
$sql = 'SELECT SUM(cantidad) FROM inventario
WHERE sucursalId = '.$sucursalId.'
AND productoId = '.$productoId.'
AND status = "Disponible"';
$util->DBSelect($_SESSION['empresaId'])->setQuery($sql);
$prod['disponible'] = $util->DBSelect($_SESSION['empresaId'])->GetSingle();
$reportes->setProductoId($productoId);
$devueltos = $reportes->GetTotalProdDevBySuc();
$totalVendidos = $prod['vendidos'] - $devueltos;
$prod['vendidos'] = $totalVendidos;
if($prod['vendidos'] == 0)
continue;
$sql = 'SELECT SUM(
IF(vp.tipoDesc = "Porcentaje", vp.total - (vp.total * (vp.valDesc / 100)),
IF(vp.tipoDesc = "Dinero", vp.total - vp.valDesc, vp.total)
)
) AS total FROM ventaProducto AS vp, venta AS v
WHERE v.ventaId = vp.ventaId
AND ((v.status = "Cancelado" AND v.cancelDev = "1") OR v.status <> "Cancelado")
AND v.fecha >= "'.$fechaI.' 00:00:00"
AND v.fecha <= "'.$fechaF.' 23:59:59"
AND v.sucursalId = "'.$sucursalId.'"
AND vp.productoId = "'.$productoId.'"';
$util->DBSelect($_SESSION['empresaId'])->setQuery($sql);
$impVend = $util->DBSelect($_SESSION['empresaId'])->GetSingle();
$impDev = $reportes->GetImpTotalProdDevBySuc();
$importe = $impVend - $impDev;
$prod['total'] = $importe;
$totalDisp += $prod['disponible'];
$totalProds += $totalVendidos;
$totalImporte += $importe;
//Productos General MasMenos Vendidos
$cardP = array();
$cardP = $prodsGral[$productoId];
if(count($cardP) == 0){
$cardP['modelo'] = utf8_encode($prod['modelo']);
$cardP['codigoBarra'] = $prod['codigoBarra'];
$cardP['precioVenta'] = $prod['precioVenta'];
$cardP['costo'] = $prod['costo'];
}
$cardP['total'] = $importe;
$inventario->setProductoId($productoId);
$inventario->setSucursalId($sucursalId);
$prod['disponible'] -= $inventario->VentasDescontadasBest();
$cardP['disponible'] += $prod['disponible'];
$cardP['vendidos'] += $totalVendidos;
$totDispGral += $prod['disponible'];
$totProdsGral += $totalVendidos;
$totImpGral += $cardP['total'];
$prodsGral[$productoId] = $cardP;
$productos[] = $prod;
}
$res['productos'] = $reportes->orderMultiDimensionalArray($productos,'vendidos',$mayormenor);
$res['disponible'] = $totalDisp;
$res['vendidos'] = $totalProds;
$res['importe'] = $totalImporte;
$sucursales[] = $res;
}//foreach
$prodsGral2 = $reportes->orderMultiDimensionalArray($prodsGral,'vendidos',$mayormenor);
$smarty->assign('totDispGral',$totDispGral);
$smarty->assign('totProdsGral',$totProdsGral);
$smarty->assign('totImpGral',$totImpGral);
$smarty->assign('prodsGral',$prodsGral2);
$smarty->assign('sucursales',$sucursales);
$smarty->display(DOC_ROOT.'/templates/lists/reportes-proMasVend.tpl');
$end = microtime(true);
echo "Tiempo de Ejecuci&oacute;n: X";
echo $time = number_format(($end - $start), 2);
break;
}//switch
?>