X-Git-Url: https://git.llucax.com/mecon/scripts.git/blobdiff_plain/fa98072ed1b6d30af6d93d04c953bacbe2eb6f90..refs/heads/master:/novedades/cargas_de_datos/web020 diff --git a/novedades/cargas_de_datos/web020 b/novedades/cargas_de_datos/web020 index 1fa07b5..3f58314 100755 --- a/novedades/cargas_de_datos/web020 +++ b/novedades/cargas_de_datos/web020 @@ -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 = ; +print web020_corregido $registro; +$registro = ; +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=; - -# 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= 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 = ; + 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; -