function genListadoCruzadoAsArray($IdProducto, $IdTallaje = false, $IdLang = false) { $IdProducto = CleanID($IdProducto); $IdTallaje = CleanID($IdTallaje); $out = ""; //Cadena de salida if (!$IdLang) { $IdLang = getSesionDato("IdLenguajeDefecto"); } $sql = "SELECT Referencia, IdTallaje FROM ges_productos WHERE IdProducto='{$IdProducto}' AND Eliminado='0'"; $row = queryrow($sql); if (!$row) { return false; } $tReferencia = CleanRealMysql($row["Referencia"]); if (!$IdTallaje) { $IdTallaje = $row["IdTallaje"]; } if (!$IdTallaje) { $IdTallaje = 2; } //gracefull degradation $sql = "SELECT ges_locales.NombreComercial,ges_modelos.Color,\n\t\tges_detalles.Talla, SUM(ges_almacenes.Unidades) as TotalUnidades FROM ges_almacenes INNER\n\t\tJOIN ges_locales ON ges_almacenes.IdLocal = ges_locales.IdLocal INNER\n\t\tJOIN ges_productos ON ges_almacenes.IdProducto =\n\t\tges_productos.IdProducto INNER JOIN ges_modelos ON\n\t\tges_productos.IdColor = ges_modelos.IdColor INNER JOIN ges_detalles ON\n\t\tges_productos.IdTalla = ges_detalles.IdTalla\n\t\tWHERE\n\t\tges_productos.Referencia = '{$tReferencia}'\n\t\tAND ges_modelos.IdIdioma = 1\n\t\tAND ges_locales.Eliminado = 0\n\t\tGROUP BY ges_almacenes.IdLocal, ges_productos.IdColor, ges_productos.IdTalla\n\t\tORDER BY ges_almacenes.IdLocal, ges_productos.IdColor"; $data = array(); $colores = array(); $tallas = array(); $locales = array(); $tallasTallaje = array(); $listaColores = array(); $res = query($sql, "Generando Listado Cruzado"); while ($row = Row($res)) { $color = $row["Color"]; $talla = $row["Talla"]; $nombre = $row["NombreComercial"]; $unidades = CleanInt($row["TotalUnidades"]); $colores[$color] = 1; $tallas[$talla] = 1; $locales[$nombre] = 1; $num = 0; //echo "Adding... c:$color,t:$talla,n:$nombre,u:$unidades<br>"; $data[$color][$talla][$nombre] = $unidades; } $sql = "SELECT Talla,SizeOrden FROM ges_detalles WHERE IdTallaje= '{$IdTallaje}' AND IdIdioma='{$IdLang}' AND Eliminado='0'" . "\t ORDER BY SizeOrden ASC, Talla ASC"; $res = query($sql); $numtallas = 0; while ($row = Row($res)) { $orden = intval($row["SizeOrden"]); $talla = $row["Talla"]; $posicion = GetOrdenVacio($tallasTallaje, $orden); $tallasTallaje[$posicion] = $talla; $numtallas++; } //$out .= "<table class='forma'>"; //$out .= "<tr><td class='nombre'>".$tReferencia."</td>"; $out_nombretabla = $tReferencia; $out_tallas = array(); $out_tallas["talla_0"] = "{$tReferencia}/Tienda"; $out_tallas["talla_1"] = "C o l o r"; $num = 2; foreach ($tallasTallaje as $k => $v) { $out_tallas["talla_{$num}"] = $v; $num++; } $out_base = array(); $out_rows = array(); $numrow = 0; $out_filas = array(); $out_bloques = array(); foreach ($locales as $l => $v2) { $out_base["nombre"] = $l; $out_bloques[] = $l; foreach ($colores as $c => $v1) { $row = array(); $row[] = $l; $row[] = $c; foreach ($tallasTallaje as $k2 => $t) { if (isset($data[$c][$t][$l])) { $u = $data[$c][$t][$l]; } else { $u = ""; } //$out .= "<td class='unidades' align='center'>" . $u . "</td>"; $row[] = $u; } $out_rows[] = $row; //$out .= "</tr>"; } } //$out .= "</table>"; $out_final = array(); $out_final["heads"] = $out_tallas; $out_final["rows"] = $out_rows; $out_final["numheads"] = count($out_tallas); //$out_final["rowheads"] = $out_filas; $out_final["nombretabla"] = $out_nombretabla; //$out_final["bloques"] = $out_bloques; return $out_final; }
function genListadoCruzado($IdProducto, $IdTallaje = false, $IdLang = false) { $IdProducto = CleanID($IdProducto); $IdTallaje = CleanID($IdTallaje); $out = ""; //Cadena de salida if (!$IdLang) { $IdLang = getSesionDato("IdLenguajeDefecto"); } $sql = "SELECT Referencia, IdTallaje, IdProdBase,UnidadMedida FROM ges_productos WHERE IdProducto='{$IdProducto}' AND Eliminado='0'"; $row = queryrow($sql); if (!$row) { return false; } $tReferencia = CleanRealMysql($row["Referencia"]); if (!$IdTallaje) { $IdTallaje = $row["IdTallaje"]; } if (!$IdTallaje) { $IdTallaje = 2; } //gracefull degradation $IdProdBase = $row["IdProdBase"]; $UnidadMedida = $row["UnidadMedida"]; $sql = "SELECT ges_contenedores.Contenedor,ges_productos.VentaMenudeo,ges_productos.UnidadesPorContenedor,ges_locales.NombreComercial,ges_modelos.Color,\n ges_detalles.Talla, SUM(ges_almacenes.Unidades) as TotalUnidades FROM ges_almacenes INNER\n JOIN ges_locales ON ges_almacenes.IdLocal = ges_locales.IdLocal INNER\n JOIN ges_productos ON ges_almacenes.IdProducto =\n ges_productos.IdProducto INNER JOIN ges_modelos ON\n ges_productos.IdColor = ges_modelos.IdColor INNER JOIN ges_detalles ON\n ges_productos.IdTalla = ges_detalles.IdTalla INNER JOIN ges_contenedores ON \n ges_productos.IdContenedor = ges_contenedores.IdContenedor\n WHERE\n ges_productos.Referencia = '{$tReferencia}'\n AND\n ges_modelos.IdIdioma = 1\n AND ges_locales.Eliminado =0\n GROUP BY ges_almacenes.IdLocal, ges_productos.IdColor, ges_productos.IdTalla\n ORDER BY ges_almacenes.IdLocal, ges_productos.IdColor"; $data = array(); $colores = array(); $tallas = array(); $locales = array(); $tallasTallaje = array(); $listaColores = array(); $res = query($sql, "Generando Listado Cruzado"); while ($row = Row($res)) { $color = $row["Color"]; $talla = NormalizaTalla($row["Talla"]); $nombre = $row["NombreComercial"]; $unidades = CleanInt($row["TotalUnidades"]); $ventamenudeo = $row["VentaMenudeo"]; $undsxcont = $row["UnidadesPorContenedor"]; $contenedor = $row["Contenedor"]; $colores[$color] = 1; $tallas[$talla] = 1; $locales[$nombre] = 1; //echo "Adding... c:$color,t:$talla,n:$nombre,u:$unidades<br>"; $num = 0; $enteros = 0; $puchos = 0; if ($ventamenudeo == "0" && $unidades != 0) { $data[$color][$talla][$nombre] = $unidades . $UnidadMedida; } if ($ventamenudeo == "1" && $unidades != 0) { if ($undsxcont > $unidades) { $puchos = ""; $enteros = $unidades; } else { $enteros = intval($unidades / $undsxcont); $puchos = $unidades % $undsxcont; } if ($puchos == 0) { $data[$color][$talla][$nombre] = $enteros . $contenedor; } else { $data[$color][$talla][$nombre] = $enteros . $contenedor . "+" . $puchos . $UnidadMedida; } } } $sql = "SELECT Talla,SizeOrden FROM ges_detalles,ges_productos WHERE ges_detalles.IdTallaje= '{$IdTallaje}' AND ges_detalles.IdTalla = ges_productos.IdTalla AND ges_productos.IdProdBase = '{$IdProdBase}' AND IdIdioma='{$IdLang}' AND ges_detalles.Eliminado='0'" . "\t ORDER BY SizeOrden ASC, Talla + 0 ASC"; $res = query($sql); $numtallas = 0; while ($row = Row($res)) { $orden = intval($row["SizeOrden"]); $talla = NormalizaTalla($row["Talla"]); $posicion = GetOrdenVacio($tallasTallaje, $orden, $talla); $tallasTallaje[$posicion] = $talla; $numtallas++; } $out .= "<table class='forma'>"; $num = 0; /*$out .= "<tr><td class='nombre'>".$tReferencia."</td>"; foreach ($tallasTallaje as $k=>$v) { $out .= "<td class='lh' id='talla_$num'>".($v)."</td>"; $num++; } $out .= "</tr>";*/ foreach ($locales as $l => $v2) { $out .= "<tr class='f'><td></td><td class='lh' colspan='" . $numtallas . "'>" . $l . "</td></tr>"; $out .= "<tr><td class='nombre'>" . $tReferencia . "</td>"; foreach ($tallasTallaje as $k => $v) { $out .= "<td class='lhz' id='talla_{$num}' style='width: 16px!important;background-color: #ccc'>" . $v . "</td>"; $num++; } $out .= "</tr>"; foreach ($colores as $c => $v1) { $out .= "<tr class='f'><td class='lh'>" . $c . "</td>"; foreach ($tallasTallaje as $k2 => $t) { if (isset($data[$c][$t][$l])) { $num = $data[$c][$t][$l]; $color = $num < 0 ? "red" : "black"; $u = "<b style='color: {$color}'>" . $data[$c][$t][$l] . "</b>"; } else { $u = "-"; } $out .= "<td align='center'>" . $u . "</td>"; } $out .= "</tr>"; } $out .= "<tr><td><font color='white'>-</font></td></tr>\n"; } $out .= "</table>"; return $out; }