1711 lines
56 KiB
PHP
Executable File
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ó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ñ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ó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ó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ó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ó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ón: X";
|
|
echo $time = number_format(($end - $start), 2);
|
|
|
|
break;
|
|
|
|
}//switch
|
|
|
|
?>
|