GetMMMName(intval($mesI)); $perIni = $nomMes.' '.$anioI; $nomMes = $util->GetMMMName(intval($mesF)); $perFin = $nomMes.' '.$anioF; if($codigoBarra != ''){ $producto->setCodigoBarra($codigoBarra); $productoId = $producto->GetProductIdByCodigo(); $producto->setProductoId($productoId); $infP = $producto->Info(); $proveedorId = $infP['proveedorId']; } $mI = intval($mesI); $mF = intval($mesF); $yI = $anioI; $yF = $anioF; $anios = $yF - $yI; if($anios == 0){ $meses = $mF - $mI; $meses += 1; }else{ $meses = (12 - $mI) + 1 + $mF; } $sql = 'SELECT proveedorId FROM proveedor WHERE proveedorId = 111'; $util->DBSelect($_SESSION['empresaId'])->setQuery($sql); $proveedores = $util->DBSelect($_SESSION['empresaId'])->GetResult(); foreach($proveedores as $prov){ if(!isset($_SESSION)) session_start(); // CAMBIO CRÍTICO: Eliminar hardcodeo - usar valor dinámico o predeterminado // Los crons ahora deben recibir empresaId como parámetro o usar predeterminado if(!isset($_SESSION['empresaId']) || empty($_SESSION['empresaId'])) { $_SESSION['empresaId'] = 1; // Valor predeterminado para crons } $proveedorId = $prov['proveedorId']; $reportes->setIdSuc(0); $resSuc = $reportes->EnumSucursales(); $sucursales = array(); foreach($resSuc as $suc){ $sucursalId = $suc['sucursalId']; $producto->setProveedorId($proveedorId); $sql = "SELECT * FROM producto WHERE baja = '0' AND proveedorId = '".$proveedorId."' ORDER BY descripcion LIMIT 10"; $util->DBSelect($_SESSION["empresaId"])->setQuery($sql); $resProds = $util->DBSelect($_SESSION["empresaId"])->GetResult(); $proveedor->setProveedorId($proveedorId); $nomProv = $proveedor->GetNameById(); $strFechaI = strtotime('01-'.$mesI.'-'.$anioI); $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'; $strFF = date('Y-m-01',$strFechaI); $strFF = strtotime($strFF); $fechaFF = date('Y-m-d',strtotime('-1 day',$strFF)); $producto->setProductoId($res['productoId']); $producto->setFechaIni($fechaII); $producto->setFechaFin($fechaFF); $producto->setSucursalId($sucursalId); $cantSalidaI = $producto->GetCantVendidoOld(); $cantSalidaI += $producto->GetSalEnvTTOld(); $cantEntradaI = $producto->GetCantTotalCompBySucOld(); $cantEntradaI += $producto->GetEntEnvTT(); $cantEntradaAI = $producto->GetEntAjusteEnvOld(); $cantSalidaAI = $producto->GetSalAjusteEnv(); $cantInicial = $cantEntradaI - $cantSalidaI + $cantEntradaAI - $cantSalidaAI; $totalVtas = 0; $mostrar = false; $totalPzas = 0; $iniciales = array(); $entradas = array(); $salidas = array(); for($m=0; $m<$meses; $m++){ $fechaIni = date('Y-m-01',strtotime('+'.$m.' month',$strFechaI)); $fechaFin = date('Y-m-31',strtotime('+'.$m.' month',$strFechaI)); $producto->setProductoId($res['productoId']); $producto->setFechaIni($fechaIni); $producto->setFechaFin($fechaFin); $producto->setSucursalId($sucursalId); $cantSalida = $producto->GetCantVendidoOld(); $cantSalidaVtas = $cantSalida; $totalVtas += $cantSalida; $cantSalida += $producto->GetSalEnvTTOld(); $cantEntrada = $producto->GetCantTotalCompBySucOld(); $cantEntrada += $producto->GetEntEnvTT(); $cantEntradaA = $producto->GetEntAjusteEnvOld(); $cantSalidaA = $producto->GetSalAjusteEnv(); //$cantEntradaA += $producto->GetEntAjusteExcel(); $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; $salidasVtas[$m] = $cantSalidaVtas; $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; $salidasVtas[$m] = 0; } $cantInicial = $cantInicial + $cantEntrada - $cantSalida + $cantEntradaA - $cantSalidaA; }//for $res['iniciales'] = $iniciales; $res['entradas'] = $entradas; $res['salidas'] = $salidas; $res['salidasVtas'] = $salidasVtas; $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 //**** $serialize = urlencode(serialize($sucursales)); $sql = "REPLACE INTO `reporteProvBest` ( `proveedorId` , `fecha` , `reporte` , `sucursal` ) VALUES ( '".$proveedorId."', '".date("Y-m-d H:i:s")."', '".$serialize."', '')" ; //$util->DBSelect($_SESSION['empresaId'])->setQuery($sql); //$util->DBSelect($_SESSION['empresaId'])->InsertData(); }//foreach echo 'Done'; $end = microtime(true); echo "Tiempo de Ejecucion: "; echo $time = number_format(($end - $start), 2); exit; ?>