Buenas noches.
Me estoy volviendo loco pues he de realizar una pequeña modificación en un programa de facturación y no encuentro cómo hacerlo.
El asunto es que el programa en Perl ha de abrir un fichero donde se encuentra el número de cliente y el número de la última factura, algo así como:
Using text Syntax Highlighting
987;1
1030;1
987;2
1030;2
Coloreado en 0.000 segundos, usando
GeSHi 1.0.8.4
compararlo con el número de cliente que se está facturando.
El programa ha de quedarse con el último número, excepto si el número de cliente no existe aún en dicho fichero en cuyo caso el número de factura ha de ser "1", y sumarle uno y después grabar los datos de la última factura en el fichero.
Lo he conseguido si solo manejo un cliente, pero en cuanto meto más de uno no sé por qué pero siempre me asigna 1 a todas las facturas.
Aquí está mi código:
Using perl Syntax Highlighting
# Generamos y comprobamos el número de la factura.
open( NoFACTURAS, "NoFACTURAS.txt" ) || die "ERROR";
while (<NoFACTURAS>) {
( $id_nofac, $_nofac ) = split /;/, $_;
# Eliminamos el salto de linea de la variable $_nofac.
chomp($_nofac);
if ( $matricula eq $id_nofac ) {
print "ID coincide $id_nofac\n";
print "Número de factura anterior $_nofac\n";
$_nofac++;
print "No factura +1 = $_nofac\n";
}
}
if ( $_nofac eq '' ) # Si no hay número de factura anterior entonces...
{
$_nofac = "1" # el número de factura es 1
}
print "factura número $_nofac\n";
print "matricula número $matricula\n";
print "id_nofac número $id_nofac\n";
# Grabamos la línea de la nueva factura
close(NoFACTURAS);
open( SALIDANoFACTURAS, ">>NoFACTURAS.txt" ) || die "ERROR";
print SALIDANoFACTURAS "$matricula;$_nofac\n";
close(SALIDANoFACTURAS);
Coloreado en 0.004 segundos, usando
GeSHi 1.0.8.4
Al final siempre el número de factura es "1".
¿Alguien ve dónde he metido la pata?
Muchas gracias.
--
Josele