otra vez peleandome con el codigo.
Resulta que con este codigo se envia el fichero con esta estructura
Código:
a un concentrador que traduce el pedido para el erp (o algo así)9901585?? 000018?3? 000019?2?
En un servidor windows dentro de la lan de la empresa funciona perfectamente,
pero una vez alojada la web fuera de la empresa en servidor linux no funciona:
La ip es una ip publica fija.
Código PHP:
<?php
$fichero = $_SESSION['telex'];
$fichero = "P01web" . $fichero;
$f = fopen($fichero,"r");
$conexion=fsockopen("8x.xxx.xx.xx","5000");
$ped = 0;
// le pasamos la cabecera del cliente
$val = fgets($f,30);
fwrite($conexion,"010100000000000000".$val[0].$val[1].$val[2].$val[3].$val[4].$val[5].$val[6]." ".$val[0].$val[1].$val[2].$val[3].$val[4].$val[5].$val[6]." \n");
fwrite($conexion,"1010".$val[0].$val[1].$val[2].$val[3].$val[4].$val[5].$val[6]." \n"); // no se procesa
$val = fgets( $f, 30);
$ped = 0;
// le vamos pasando articulo y cantidad
while(!feof($f)){
$ped = $ped +1 ;
$pal2 = split("\?",$val);
if(strlen($pal2[1]) == 0) $pal2[1] = "0001"; // para que pida al menos una unidad si lo deja en blanco
if(strlen($pal2[1]) == 1) $pal2[1] = "000".$pal2[1];
if(strlen($pal2[1]) == 2) $pal2[1] = "00".$pal2[1];
if(strlen($pal2[1]) == 3) $pal2[1] = "0".$pal2[1];
fwrite($conexion,"1020000000".$pal2[0]."0".$pal2[1]."\n");
$val = fgets( $f, 30);
}
fwrite($conexion,"10500000000000000000\n");
fwrite($conexion,"0199\n");
set_time_limit(50);
sleep(4);
fclose($f);
// MUESTRA LAS FALTAS
$val = fread($conexion,44);
$val = fread($conexion,74);
$comp = substr($val,0,4);
//fclose($conexion);
if(strcmp($comp,"2010") == 0){
$fin = 1;
while($fin == 1){
$val = fread($conexion,4);
if(strcmp($val,"0199") == 0){
$fin = 0;
}
if(strcmp($val,"2011") == 0){
$val = fread($conexion,52);
}
if(strcmp($val,"2015") == 0){
$val = fread($conexion,46);
$articulo = substr($val,6,6);
$cpedida = substr($val,14,3);
$cservida = substr($val,14,3) - substr($val,18,3);
$incidencia = substr($val,29,2);
if(strcmp($incidencia,"36") == 0) $incidencia = "Servido parcialmente";
if(strcmp($incidencia,"01") == 0) $incidencia ="No hay existencias";
if(strcmp($incidencia,"11") == 0) $incidencia ="Articulo de Baja";
if(strcmp($incidencia,"04") == 0) $incidencia ="Articulo desconocido";
if(strcmp($incidencia,"10") == 0) $incidencia ="No envia laboratorio";
if(strcmp($incidencia,"00") != 0 ){
?>
<tr>
<td><?php echo $articulo; ?></td>
<td><?php echo $cpedida; ?></td>
<td><?php echo $cservida; ?></td>
<td><?php echo $incidencia; ?></td>
</tr>
<?php
}
$val = "";
$articulo = "";
$cpedida = "";
$cservida ="";
$incidencia = "";
}
}
}else {
echo "No se han podido devolver las faltas. Disculpe las molestias.";
}
fclose($conexion);
?>