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:
'.$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:
'.$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 ?>