Stock Limpio
"; } //Las siguientes funciones no las uso, pero no las guardo porque son muy interesantes para manejar arrays, por si las necesito en otro momento. function searchArrayKeyVal($sKey, $id, $array) { foreach ($array as $key => $val) { if ($val[$sKey] == $id) { return $key; } } return false; } //Busco una función para identificar no solo al producto, sino también al producto y su fecha de lote function buscaClave($pId,$fl,$array) { foreach ($array as $key => $val) { if ($val[0] == $pId and $val[1] == $fl) { return $key; } } return false; } //Esta función busca la clave sólo usando el producto function buscaClaveProducto($pId,$array) { foreach ($array as $key => $val) { if ($val[0] == $pId) { return $key; } } return false; } $status_array = array(); $status_array[] = array('id' => '0', 'text' => 'Ver Todo'); $status_array[] = array('id' => '1', 'text' => 'Productos con mas de 30 dias'); $status_array[] = array('id' => '2', 'text' => 'Productos entre 14 y 30 dias'); $status_array[] = array('id' => '3', 'text' => 'Ordenados por posicion'); //Cargo en un array las salidas de cada producto para las fechas indicadas $tq5 = "select op.product_id products_id,sum(product_quantity) products_quantity " . "from ps_order_detail op join ps_orders o on op.id_order=o.id_order " . "join ps_cart dd on (dd.id_cart=o.id_cart) " . "join ps_address ad on o.id_address_delivery=ad.id_address ". "join ps_carrier ca on ca.id_carrier=o.id_carrier " . "where dd.tramo_date between '" . $_POST['fecIni'] . "' and '" . $_POST['fecFin'] . "' ". "and o.current_state in (2,3,4,5,14,16) ". "group by 1"; //echo $tq5; $reg_query5 = tep_db_query($tq5); $salidas = array(); while ($status_values = tep_db_fetch_array($reg_query5)) { //Averiguo si el producto actual es un menú $texto_query1 = "select p.id_product_item products_id,p.quantity products_quantity " . "from ps_pack p ". "where p.id_product_pack=".$status_values['products_id']; $status_query1 = tep_db_query($texto_query1); if (tep_db_num_rows($status_query1)>0) { while ($status_values1 = tep_db_fetch_array($status_query1)) { $salidas[$status_values1['products_id']] = array('cantidad'=>$salidas[$status_values1['products_id']]['cantidad']+$status_values1['products_quantity']*$status_values['products_quantity']); } } else { $salidas[$status_values['products_id']] = array('cantidad'=>$salidas[$status_values['products_id']]['cantidad']+$status_values['products_quantity']); } } //print_r($salidas); $reg_query4_sql = "select p.id_product products_id,name products_name,round(cantidad) cantidad,fechaLote,datediff(now(),fechaLote) dias,posicion_clasif,posicion_almac ". "from ps_product p left join ps_stock_web s on (s.products_id=p.id_product) ". "join ps_product_lang pd on (p.id_product=pd.id_product and id_lang=1) ". "left join ps_product_ptl ptl on (p.id_product=ptl.id_product) ". "where p.active=1 ". "and pd.name not like '%menu%' ". "and pd.name not like '%pack%' ". "and pd.name not like '%Semana%' ". "and pd.name not like '%Monedero%' ". "group by p.id_product,fechaLote "; if ($_POST['tipoInforme']==1) { $reg_query4_sql .="having dias>30 order by dias desc,products_name "; }elseif ($_POST['tipoInforme']==2) { $reg_query4_sql .="having dias>14 and dias<=30 order by dias desc,products_name "; }elseif ($_POST['tipoInforme']==3) { $reg_query4_sql .="order by posicion_clasif,products_name,dias desc "; }else { $reg_query4_sql .="order by products_name,dias desc "; } //echo $reg_query4_sql.'
'; $reg_query4 = tep_db_query($reg_query4_sql); ?> Stock Logística en Web - www.noCocinoMas.es

Salidas Fecha Inicial:     Fecha Final:     


$subIdProducto and $subIdProducto<>0) { $totSalidas += $salidas[$subIdProducto]['cantidad']; if ($subTotalCantidad<15) {$prodNaranja+=1;} } if (($reg4['products_id']<>$subIdProducto and $subIdProducto<>0) /*or $colorFondo<>'white'*/) { //$claveSalida = buscaClaveProducto($reg4['products_id'],$salidas); if (!strpos(strtoupper($reg4['products_name']),'FAMILIAR') and !strpos(strtoupper($reg4['products_name']),'DUKAN') and !strpos(strtoupper($reg4['products_name']),'GRANDE')) { $nProductos +=1; } if ($subTotalCantidad-round($salidas[$subIdProducto]['cantidad'])<=5 and round($salidas[$subIdProducto]['cantidad'])>0) { ?> 14 and $reg4['dias']<=30) { $masDe21Dias+=1; $colorFondo='brown'; $colorLetra='white'; } elseif ($reg4['dias']>30) { $masDe30Dias+=1; $colorFondo='red'; $colorLetra='white'; } else { $colorFondo='white'; $colorLetra='black'; } $subTotalCantidad += $reg4['cantidad']; $subIdProducto = $reg4['products_id']; $posicion_clasif = $reg4['posicion_clasif']; $posicion_almac = $reg4['posicion_almac']; $products_name=$reg4['products_name']; $dias=$reg4['dias']; $fechaLote=$reg4['fechaLote']; ob_flush(); flush(); } if ($subIdProducto<>0) { $nProductos +=1; $totSalidas += $salidas[$subIdProducto]['cantidad']; if ($reg4['dias']>14 and $reg4['dias']<=30) { $masDe21Dias+=1; } if ($reg4['dias']>30) { $masDe30Dias+=1; } if ($subTotalCantidad<10) { $prodNaranja+=1; } if ($subTotalCantidad<$salidas[$subIdProducto]['cantidad']) { $prodRojo +=1; } $totCantidad +=$reg4['cantidad']; ?>
Stock Actualizado
Posicion Reserva ID. Producto Lote Cantidad Salidas
'.$products_name.''; ?> Total Parcial align="right"> $subIdProducto and $subIdProducto<>0)) { echo " bgcolor=red "; $prodRojo +=1; } else { echo " bgcolor=blue "; } ?> align="right"> $subIdProducto and $subIdProducto<>0) and ($subTotalCantidad-round($salidas[$subIdProducto]['cantidad'])<=5 and round($salidas[$subIdProducto]['cantidad'])>0)) { echo '   >>VIGILAR EN CAMARA<< >> '; } echo '   '.round($salidas[$subIdProducto]['cantidad']); /*$totSalidas += $salidas[$subIdProducto]['cantidad'];*/ ?>
 
Total Parcial align="right"> align="right">
Total Productos diferentes:
Productos con mas de 14 dias:
Productos con mas de 30 dias:
Productos en Naranja:
Productos en Rojo:
Total Salidas:
Total Stock: