Info(); if($Usr['type'] != 'admin' && $Usr['type'] != 'gerente' && $Usr['type'] != 'centralizador'){ header('Location: '.WEB_ROOT); exit; } $name = "R_Productos_Proveedor"; extract($_POST); if($_POST['type'] == '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 != ''){ $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; $sucursales = array(); foreach($resSucursales as $res){ if($sucursalId > 0 && $sucursalId != $res['sucursalId']) continue; $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['bloqueados'][$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['bloqueados'][$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; $productos[] = $prod; }//foreach }//foreach }//foreach $res['productos'] = $productos; $res['totSubs'] = $totSubs; $res['totCats'] = $totCats; $totalPzas = ($cantInicial + $cantEntrada - $cantSalida + $cantEntradaA - $cantSalidaA); $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); $x = "
Periodo: ".$perIni." a ".$perFin."

Los datos no son generados en tiempo real.
Ult. Act. del Reporte: ".$fechaRep."


"; foreach($sucursales as $suc){ $x .= ""; foreach($periodo as $mes) $x .= ""; $x .= " "; foreach($periodo as $mes){ $x .= ""; $x .= ""; $x .= ""; $x .= ""; $x .= ""; $x .= ""; } $x .= " "; foreach($suc['productos'] as $res){ $x .= " "; foreach($periodo as $m => $val){ $x .= ""; $x .= ""; $x .= ""; $x .= ""; $x .= ""; $x .= ""; } $x .= ""; }//foreach if(count($suc['productos']) > 0){ $x .= " "; foreach($periodo as $m => $val){ $x .= ""; $x .= ""; $x .= ""; $x .= ""; $x .= ""; $x .= ""; } $x .= ""; }//if $x .= "
Sucursal: ".utf8_decode(urldecode($suc['nombre']))."
".$mes."
Codigo Producto No. Prov.InicialEntradaSalidaAjuste SalidaAjuste EntradaBloqueadosUltima Compra Total Piezas Costo Importe Total de Inv. Total Ventas Precio Venta Importe Total Ventas
".$res['codigoBarra']." ".$res['modelo']." ".$res['proveedorId']."".number_format($res['iniciales'][$m],0)."".number_format($res['entradas'][$m],0)."".number_format($res['salidas'][$m],0)."".number_format($res['entradasA'][$m],0)."".number_format($res['salidasA'][$m],0)."".number_format($res['bloqueados'][$m],0)."".date('d-m-Y',strtotime($res['fecha']))." ".number_format($res['totalPzas'],0)." $".number_format($res['costo'],2)." $".number_format($res['importe'],2)." ".number_format($res['totalVtas'],0)." $".number_format($res['precioVta'],2)." $".number_format($res['importeVtas'],2)."
TOTALES ".number_format($suc['totIniciales'][$m],0)."".number_format($suc['totEntradas'][$m],0)."".number_format($suc['totSalidas'][$m],0)."".number_format($suc['totEntradasA'][$m],0)."".number_format($suc['totSalidasA'][$m],0)."".number_format($suc['bloqueados'][$m],0)." ".number_format($suc['totPzas'],0)." $".number_format($suc['totImporte'],2)." ".number_format($suc['totVtas'],0)." $".number_format($suc['totImporteVtas'],2)."
"; }//foreach //Totales Generales $x .= ""; foreach($periodo as $mes) $x .= ""; $x .= " "; foreach($periodo as $mes){ $x .= ""; $x .= ""; $x .= ""; $x .= ""; $x .= ""; $x .= ""; } $x .= " "; foreach($products as $res){ $x .= " "; foreach($periodo as $m => $val){ $x .= ""; $x .= ""; $x .= ""; $x .= ""; $x .= ""; $x .= ""; } $x .= ""; }//foreach if(count($suc['productos']) > 0){ $x .= " "; foreach($periodo as $m => $val){ $x .= ""; $x .= ""; $x .= ""; $x .= ""; $x .= ""; $x .= ""; } $x .= ""; }//if $x .= "
TOTALES GENERALES
".$mes."
Codigo Producto No. Prov.InicialEntradaSalidaAjuste SalidaAjuste EntradaBloqueadosUltima Compra Total Piezas Costo Importe Total de Inv. Total Ventas Precio Venta Importe Total Ventas
".$res['codigoBarra']." ".$res['modelo']." ".$res['proveedorId']."".number_format($res['iniciales'][$m],0)."".number_format($res['entradas'][$m],0)."".number_format($res['salidas'][$m],0)."".number_format($res['entradasA'][$m],0)."".number_format($res['salidasA'][$m],0)."".number_format($res['bloqueados'][$m],0)."".date('d-m-Y',strtotime($res['fecha']))." ".number_format($res['totalPzas'],0)." $".number_format($res['costo'],2)." $".number_format($res['importe'],2)." ".number_format($res['totalVtas'],0)." $".number_format($res['precioVta'],2)." $".number_format($res['importeVtas'],2)."
TOTALES ".number_format($prodTotales['iniciales'][$m],0)."".number_format($prodTotales['entradas'][$m],0)."".number_format($prodTotales['salidas'][$m],0)."".number_format($prodTotales['entradasA'][$m],0)."".number_format($prodTotales['salidasA'][$m],0)."".number_format($prodTotales['bloqueados'][$m],0)." ".number_format($prodTotales['totalPzas'],0)." $".number_format($prodTotales['totImporte'],2)." ".number_format($prodTotales['totalVtas'],0)." $".number_format($prodTotales['importeVtas'],2)."
"; }else{ $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; $totales = array(); $totSaldos = array(); $productos = array(); foreach($resProds as $res){ if($productoId > 0 && $res['productoId'] != $productoId) continue; $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; $suc['productos'] = $productos; $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']; if($mostrar == true){ $totPzas += $totalPzas; $totImporte += $res['importe']; $totVtas += $totalVtas; $totImporteVtas += $res['importeVtas']; $productos[] = $res; } }//foreach $suc['productos'] = $productos; $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; $colspan = 11 + ($meses*2); $x = "
Periodo: ".$fechaI."


"; foreach($sucursales as $suc){ $x .= ""; foreach($periodo as $mes) $x .= ""; $x .= " "; foreach($periodo as $mes){ $x .= ""; $x .= ""; $x .= ""; $x .= ""; $x .= ""; } $x .= " "; foreach($suc['productos'] as $res){ $x .= " "; foreach($periodo as $m => $val){ $x .= ""; $x .= ""; $x .= ""; $x .= ""; $x .= ""; } $x .= ""; }//foreach if(count($suc['productos']) > 0){ $x .= " "; foreach($periodo as $m => $val){ $x .= ""; $x .= ""; $x .= ""; $x .= ""; $x .= ""; } $x .= ""; }//if $x .= "
Sucursal: ".utf8_decode(urldecode($suc['nombre']))."
".$fechaI."
Codigo Producto No. Prov.InicialEntradaSalidaAjuste EntradaAjuste SalidaUltima Compra Total Piezas Costo Importe Total de Inv. Total Ventas Precio Venta Importe Total Ventas
".$res['codigoBarra']." ".$res['modelo']." ".$res['proveedorId']."".number_format($res['iniciales'][$m],0)."".number_format($res['entradas'][$m],0)."".number_format($res['salidas'][$m],0)."".number_format($res['entradasA'][$m],0)."".number_format($res['salidasA'][$m],0)."".date('d-m-Y',strtotime($res['fecha']))." ".number_format($res['totalPzas'],0)." $".number_format($res['costo'],2)." $".number_format($res['importe'],2)." ".number_format($res['totalVtas'],0)." $".number_format($res['precioVta'],2)." $".number_format($res['importeVtas'],2)."
TOTALES ".number_format($suc['totIniciales'][$m],0)."".number_format($suc['totEntradas'][$m],0)."".number_format($suc['totSalidas'][$m],0)."".number_format($suc['totEntradasA'][$m],0)."".number_format($suc['totSalidasA'][$m],0)." ".number_format($suc['totPzas'],0)." $".number_format($suc['totImporte'],2)." ".number_format($suc['totVtas'],0)." $".number_format($suc['totImporteVtas'],2)."
"; }//foreach }//else if($_POST['type'] == 'tipoProdProv') header("Content-Type: application/vnd.ms-excel; charset=utf-8"); header("Content-type: application/x-msexcel; charset=utf-8"); header("Content-Disposition: attachment; filename=".$name.".xls"); header("Pragma: no-cache"); header("Expires: 0"); echo $x; ?>