]> git.llucax.com Git - mecon/scripts.git/blobdiff - novedades/cargas_de_datos/web020
- Se chequean errores al abrir archivos
[mecon/scripts.git] / novedades / cargas_de_datos / web020
index 1fa07b5cac5aa14f22f38149ef6a59e1d766e9ab..3f583143bea52ccbb63b0bf2e0081a52ede18355 100755 (executable)
@@ -1,91 +1,61 @@
-#!/usr/bin/perl -w
+#!/usr/bin/perl
 
 use strict;
 
-# Recibo los parametros de la linea de comando e inicializo 
-# las variables generales
+my $origen = shift;
+my $destino = shift;
+open web020, "< ".$origen."/web020";
+open web020_corregido, "> ".$destino."/web020";
 
-if(!$ARGV[0] || !$ARGV[1])
+my $registro = <web020>;
+print web020_corregido $registro;
+$registro = <web020>;
+while ($registro)
 {
-       print "No me pasaste los parametros adecuados\nuso\nweb020.pl origen destino";
-       exit;
-}
-
-my $origen=$ARGV[0];
-my $destino=$ARGV[1];
-my $arch_salida="$destino/web020";
-my $arch_entrada="$origen/web020";
-my $linea;
-my @datos_linea_anterior;
-my $contador;
-
-# Archivos de entrada y salida
-open arch_ent, "<$arch_entrada";
-open arch_sal, ">$arch_salida";
-
-# Leo el encabezado
-$linea=<arch_ent>;
-
-# Grabo el encabezado en el archivo de salida
-print arch_sal $linea;
-
-my @linea_anterior=(0,0,'nada',0);
-my @campos;
-
-# Leo la cantidad de lineas del archivo de entrada
-my $aux;
-$aux=`wc -l $arch_entrada`;
-($aux)=$aux=~/\s(\d*)\s/;
-# Bucle que recorre el archivo de entrada linea por linea
-for ($contador = $aux ;$contador > 0 ; $contador --)
-{
-       $linea=<arch_ent> unless ($contador == 1);
-       @campos=split(",",$linea);
-       
-       if(     $linea_anterior[0] eq $campos[0] and
-               $linea_anterior[1] eq $campos[1] and
-               $linea_anterior[2] eq $campos[2] and
-               $linea_anterior[3] eq $campos[3])
+       my @campos = split(",",$registro);
+       my %agente = ();
+       my %nov = ();
+       $agente{'nrodoc'} = $campos[3];
+       while ($agente{'nrodoc'} == $campos[3] and $registro)
        {
-               my $dias;
-               $dias=0;
-               foreach my $item (1..31) 
+               my $anio = $campos[0];
+               my $mes = $campos[1];
+               my $novedad = $campos[2];
+               if (!defined($nov{$novedad}->{$anio}->{$mes}))
+               {
+                       foreach my $dia (1..31)
+                       {
+                               $dia = "0".$dia if($dia < 10);
+                               $nov{$novedad}->{$anio}->{$mes}->{$dia} = $campos[$dia+3];
+                       }
+               }else
                {
-                       if(     $linea_anterior[3+$item] ne "00" or
-                               $campos[3+$item] ne "00")
+                       foreach my $nov_dia (1..31)
                        {
-                               $campos[3+$item]="01";
-                               $dias++;
+                               $nov_dia = "0".$nov_dia if($nov_dia < 10);
+                               if($campos[$nov_dia+3] ne "00") {$nov{$novedad}->{$anio}->{$mes}->{$nov_dia}="01"};
                        }
                }
-               $campos[35]=$dias;
-       }else
+               $registro = <web020>;
+               if($registro) {@campos = split(",",$registro);}
+       }
+       foreach my $novedad (sort(keys(%nov)))
        {
-               if(     $linea_anterior[0] and 
-                       $linea_anterior[1] and
-                       $linea_anterior[2])
+               foreach my $anio (sort(keys(%{$nov{$novedad}})))
                {
-                       print arch_sal $linea_anterior[$_]."," foreach (0..35);
-                       print arch_sal "\n";
-               }else
-               {
-                       if($contador < $aux)
+                       foreach my $mes (sort(keys(%{$nov{$novedad}->{$anio}})))
                        {
-                               my $linea_archivo;
-                               $linea_archivo = $aux - $contador + 1;
-                               print "Error en la linea ".$linea_archivo.": ";
-                               print $linea_anterior[$_]."," foreach (0..35);
-                               print "\n";
+                               print web020_corregido $anio.",".$mes.",".$novedad.",".$agente{'nrodoc'}.",";
+                               my $total = 0;
+                               my $chequeo = 0;
+                               foreach  my $dia (sort(keys(%{$nov{$novedad}->{$anio}->{$mes}})))
+                               {
+                                       print web020_corregido $nov{$novedad}->{$anio}->{$mes}->{$dia}.",";
+                                       $total++ if($nov{$novedad}->{$anio}->{$mes}->{$dia} > 0);
+                               }
+                               print web020_corregido $total."\n";
                        }
                }
        }
-
-       @linea_anterior=@campos;
 }
 
-print arch_sal $linea_anterior[$_]."," foreach (0..35);
-print arch_sal "\n";
-
-close arch_ent;
-close arch_sal;
-