ob_implicit_flush(true); // Fuerza el envío automático después de cada salida
ob_end_clean(); // Desactiva y limpia cualquier buffer existente
$pruebas=false;
// error_reporting(E_ALL & ~E_NOTICE);
error_reporting(E_ALL);
include('includes/configure.php');
if ($_GET['user'] == 'manelu') {
if (strlen($_POST['fecIni'])==0 or strlen($_POST['fecFin'])==0) {
$_POST['fecIni'] = date('Y-m-d',strtotime('now +1 DAY'));
$_POST['fecFin'] = date('Y-m-d',strtotime('now +1 DAY'));
}
if (strlen($_POST['fecIniBarcelona'])==0 or strlen($_POST['fecFinBarcelona'])==0) {
if (date('N')==1) {
$_POST['fecIniBarcelona'] = date('Y-m-d',strtotime('now +2 DAY'));
$_POST['fecFinBarcelona'] = date('Y-m-d',strtotime('now +2 DAY'));
} else if (date('N')==2) {
$_POST['fecIniBarcelona'] = '2000-01-01';
$_POST['fecFinBarcelona'] = '2000-01-01';
} else if (date('N')==3) { //para el viernes y sábado
$_POST['fecIniBarcelona'] = date('Y-m-d',strtotime('now +2 DAY'));
$_POST['fecFinBarcelona'] = date('Y-m-d',strtotime('now +3 DAY'));
} else if (date('N')==4) {
$_POST['fecIniBarcelona'] = '2000-01-01';
$_POST['fecFinBarcelona'] = '2000-01-01';
} else if (date('N')==5) { //serán los del lunes y martes
$_POST['fecIniBarcelona'] = date('Y-m-d',strtotime('now +4 DAY'));
$_POST['fecFinBarcelona'] = date('Y-m-d',strtotime('now +4 DAY'));
} else if (date('N')==6) {
$_POST['fecIniBarcelona'] = date('Y-m-d',strtotime('now +4 DAY'));
$_POST['fecFinBarcelona'] = date('Y-m-d',strtotime('now +4 DAY'));
} else if (date('N')==7) {
$_POST['fecIniBarcelona'] = date('Y-m-d',strtotime('now +3 DAY'));
$_POST['fecFinBarcelona'] = date('Y-m-d',strtotime('now +3 DAY'));
}
}
//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'] . "' ";
if (isset($_POST['pedidosPreparados'])) {
$tq5 .= "and o.id_order not in (select distinct id_order from ps_trazabilidad where year(date_upd)>=2025) ";
}
$tq5 .= "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_foto 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 s.fechaFoto='". $_POST['fechaFoto']."' ".
"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 Actualizado | ||||||||
| Posicion | Reserva | ID. | Producto | Lote | Antigüedad | Cantidad | Salidas | Pedidos (Sin packs) |
| Total Parcial | align="right"> echo $subTotalCantidad;?> | align="right"> echo round($salidas[$subIdProducto]['cantidad']); if ($subTotalCantidad-round($salidas[$subIdProducto]['cantidad'])<=5 and round($salidas[$subIdProducto]['cantidad'])>0) { echo ' >>VIGILAR EN CAMARA<< '; } $totSalidas += $salidas[$subIdProducto]['cantidad']; ?> | if ($subTotalCantidad<$salidas[$subIdProducto]['cantidad'] and 1==0) { $texto_query1 = "select distinct(o.id_order) pedido,id_reference " . "from ps_order_detail od ". "join ps_orders o on od.id_order=o.id_order " . "join ps_carrier ca on ca.id_carrier=o.id_carrier " . "join ps_cart d on (d.id_cart=o.id_cart) " . "where od.product_id='".$subIdProducto."' ". "and tramo_date between '".$_POST['fecIni']."' and '".$_POST['fecFin']."' ". "order by pedido desc "; //echo $texto_query1; $status_query1 = tep_db_query($texto_query1); while ($status_values1 = tep_db_fetch_array($status_query1)) { if ($status_values1['id_reference']=='1') { //Transporte Carlos echo $status_values1['pedido'].'(C) '; } else { echo $status_values1['pedido'].' '; } } } ?> | |||||
| echo $reg4['posicion_clasif']; ?> | echo $reg4['posicion_almac']; ?> | echo $reg4['products_id']?> | echo $reg4['products_name']?> | echo $reg4['fechaLote']?> | if ($reg4['dias']>14 and $reg4['dias']<=30) { $masDe21Dias+=1; ?>echo $reg4['dias']?> | } elseif ($reg4['dias']>30) { $masDe30Dias+=1; ?>echo $reg4['dias']?> | } else { ?>echo $reg4['dias']?> | } ?>echo $reg4['cantidad']?> |
| echo $reg4['posicion_clasif']; ?> | echo $reg4['posicion_almac']; ?> | Total Parcial | align="right"> echo $subTotalCantidad;?> | align="right"> echo round($salidas[$subIdProducto]['cantidad']);?> | ||||
| Total Productos diferentes: echo $nProductos;?> | ||||||||
| Productos con mas de 14 dias: echo $masDe21Dias;?> | ||||||||
| Productos con mas de 30 dias: echo $masDe30Dias;?> | ||||||||
| Productos en Naranja: echo $prodNaranja;?> | ||||||||
| Productos en Rojo: echo $prodRojo;?> | ||||||||
| Total Salidas: echo $totSalidas;?> | ||||||||
| Total Stock: echo $totCantidad;?> | ||||||||