#!/perl/bin/perl.exe
$|=1;
#------------------------------------------------------
#Perl Modules
use Win32::ODBC;
use Date::Calc qw(Add_Delta_Days); 

use CGI;
#------------------------------------------------------
#------------------------------------------------------
#HTML printing activation
print "Content-type: text/html\n\n";
#------------------------------------------------------
#------------------------------------------------------
#Get parameters
$form	 	= new CGI;
#$lan	 	= $form->param("lan");
$appid	 	= "RTM_v30";
#$clase		= $form->param("clase");
$id	 	= $form->param("id");
$periodo	= $form->param("i8_periodo");
$inmueble_new	=$form->param("i8_inmueble_id");
$lan="es";
#------------------------------------------------------
#------------------------------------------------------
#Define subdirectories and general variables
$PATH 		= "../".$lan."/";
$file_html	= "es_abonos_rcrd.html";
#print $PATH.$file_html;
#------------------------------------------------------
#------------------------------------------------------
# ODBC
if (!($db = new Win32::ODBC($appid))){print "Error connecting to $appid <br>";print "Error: " . Win32::ODBC::Error() . "<br>";exit;}
if (!($db1 = new Win32::ODBC($appid))){print "Error connecting to $appid <br>";print "Error: " . Win32::ODBC::Error() . "<br>";exit;}
#------------------------------------------------------
#------------------------------------------------------
#print "Inmueble:$inmueble_new";
#inserta los nis
$nis_anterior=0;
$parcela_anterior=0;
#insert_inmuebles_nis();
if($inmueble_new ne "")
{
    update_datos();
}
get_datos();

construct_page();
$db->Close();
exit;
#------------------------------------------------------
#------------------------------------------------------
# SUB-ROUTINES
sub update_datos
{
    $sql="update sdd_inmueble_abonos set i8_inmueble_id='$inmueble_new' where i8_inmueble_id='$id' and i8_periodo='$periodo'";
    #print $sql;
    if ($db1->Sql($sql)){print "SQL failed. 6<br>";print "$sql<br>";print "Error: " . $db1->Error() . "<br>";$db1->Close();exit;}
}
sub get_datos()
{
   $sql="select dt_abono,c16_recibo_id,v64_abono_agencia,v64_abono_sucursal from sdd_inmueble_abonos where i8_inmueble_id='$id' and i8_periodo='$periodo'";
   #print $sql;
   if ($db1->Sql($sql)){print "SQL failed. 6<br>";print "$sql<br>";print "Error: " . $db1->Error() . "<br>";$db1->Close();exit;}
   while($db1->FetchRow)
   {
    print $row;
    undef @row;
    @row=$db1->Data();
    $dt_abono=$row[0];
    $c16_recibo_id=$row[1];
    $v64_abono_agencia=$row[2];
    $v64_abono_sucursal=$row[3];
    }
}
sub insert_inmuebles_nis
{
    #print "<table border=1><tr><td>NIS</td><td>Parcela</td><td>Sector</td></tr>";
    $parcela_last=0;
    $sql="delete from sdd_inmueble_nis";
    if ($db1->Sql($sql)){print "SQL failed. 6<br>";print "$sql<br>";print "Error: " . $db1->Error() . "<br>";$db1->Close();exit;}
    $sql="delete from sdd_inmueble_disposiciones_finales";
    if ($db1->Sql($sql)){print "SQL failed. 6<br>";print "$sql<br>";print "Error: " . $db1->Error() . "<br>";$db1->Close();exit;}
    $sql="delete from sdd_inmueble_suministros_energias";
    if ($db1->Sql($sql)){print "SQL failed. 6<br>";print "$sql<br>";print "Error: " . $db1->Error() . "<br>";$db1->Close();exit;}
    $sql="delete from sdd_inmueble_suministro_energia_tarifas";
    if ($db1->Sql($sql)){print "SQL failed. 6<br>";print "$sql<br>";print "Error: " . $db1->Error() . "<br>";$db1->Close();exit;}
    #print "entra$PATH$filename ";
    open (A,"$PATH$filename");
    #leyendo el archivo
    $error1="<table border=1>";
    $error2="<table border=1>";
    $i=0;
    $cont=0;
    while($line = <A>)
    {
        $i++;
        
        
	#($c1,$c2,$c3,$c4)=split(/\,/,$line);
        ($clave,$sector,$parcela,$nis,$n,$n1,$n2,$nombres,$apellidos,$num_casa,$direccion)=split(/\,/,$line);
        #$c4=substr($c2,0,3);
        #$l=length($c2);
        #$c3=substr($c2,3,$l);
        chomp($parcela);
        chomp($sector);
        #print "$c1,$c2,$c3,$c4";
        $c3==~ s/^\s*(.*\S)\s*$/$1/;
        $c4==~ s/^\s*(.*\S)\s*$/$1/;
        ##$c3 es la parcela
        if($nis==$nis_anterior or $parcela==$parcela_anterior)
        {
            $cont=$cont+1;
            ($c11,$c22,$c33,$c44)=split(/\,/,$line_anterior);
            if($nis==$nis_anterior)
            {
                if($cont==1){$error1=$error1."<tr><td>$nis</td><td>$parcela</td><td>$sector</td></tr>";$error1=$error1."<tr><td>$c11</td><td>$c33</td><td>$c44</td></tr>"}
                else{$error1=$error1."<tr><td>$nis</td><td>$parcela</td><td>$sector</td></tr>";}
            }
            if($parcela==$parcela_anterior)
            {
                if($cont==1){$error2=$error2."<tr><td>$nis</td><td>$parcela</td><td>$sector</td></tr>";$error2=$error2."<tr><td>$c11</td><td>$c33</td><td>$c44</td></tr>"}
                else{$error2=$error2."<tr><td>$nis</td><td>$parcela</td><td>$sector</td></tr>";}
            }
            #borrando el primer registro
            $sql="delete from sdd_inmueble_nis where i8_nis_id='$nis'";
            if ($db1->Sql($sql)){print "SQL failed. 6<br>";print "$sql<br>";print "Error: " . $db1->Error() . "<br>";$db1->Close();exit;}
            #$sql="delete from sdd_inmueble_disposiciones_finales where i8_nis_id='$c1'";
            #if ($db1->Sql($sql)){print "SQL failed. 6<br>";print "$sql<br>";print "Error: " . $db1->Error() . "<br>";$db1->Close();exit;}
            $sql="delete from sdd_inmueble_suministros_energias where i8_nis_id='$nis'";
            if ($db1->Sql($sql)){print "SQL failed. 6<br>";print "$sql<br>";print "Error: " . $db1->Error() . "<br>";$db1->Close();exit;}
            $sql="delete from sdd_inmueble_suministro_energia_tarifas where i8_nis_id='$nis'";
            if ($db1->Sql($sql)){print "SQL failed. 6<br>";print "$sql<br>";print "Error: " . $db1->Error() . "<br>";$db1->Close();exit;}
        }
        else
        {
            $cont=0;
            #print $line."<br>";
                    #buscando si existe en la tabla de sdm_inmuebles
            
            
            $sql="select i8_inmueble_id,i4_parcela from sdm_inmuebles where c16_codigo_catastral_id like '%-$sector%' and i4_parcela='$parcela'";
            #print "<br>$sql";
            $bb=0;
            if ($db->Sql($sql)){print "SQL failed. 6<br>";print "$sql<br>";print "Error: " . $db->Error() . "<br>";$db->Close();exit;}
            while($db->FetchRow() and $bb==0)
            {
                $bb=1;
                $bc=0;
                undef @row1;
                @row1=$db->Data();
                $inmuebleid=$row1[0];
                    $parcela=$row1[1];
                        
                        #si se ha encontrado, insertar en la tabla sdd_inmueble_nis
                    $sql="insert into sdd_inmueble_nis (i8_inmueble_id,i8_nis_id,ts_update,ts_in) values($row1[0],$nis,now(),now())";
                    #print "<br>$sql";
                    if ($db1->Sql($sql)){print "SQL failed. 6<br>";print "$sql<br>";print "Error: " . $db->Error() . "<br>";$db->Close();exit;}
                    $sql="insert into sdd_inmueble_disposiciones_finales(dt_desde,dt_hasta,i2_tipo_disposicion_final_id,i8_inmueble_id,ts_in,ts_update) values('1999/05/01','2020/12/31',1,$inmuebleid,now(),now())";
                        #print $sql;
                    if ($db1->Sql($sql)){print "SQL failed. 6<br>";print "$sql<br>";print "Error: " . $db->Error() . "<br>";$db->Close();exit;}
                        ##crear el registro en la tabla inmueble_suministros_energias
                    open(B,"$PATH$file1");
                    $bn=0;
                    while($line2=<B> and $bn==0)
                    {
                        #print "<br>line3:$line2";
                        ($nis1,$medidor,$nic,$union,$nombre,$direccion,$tarifa)=split(/\,/,$line2);
                        #@dir=split(/\|/,$direccion);
                        #$direccion=$dir[0].$dir[1].$dir[2].$dir[3].$dir[4].$dir[5].$dir[6].$dir[7].$dir[8];
                        #@nombres=split(/\|/,$nombre);
                        if($nis1==$nis)
                        {
                            #creadno el registro
                         #   $apellidos=$nombres[1]." ".$nombres[2];
                            $sql="insert into sdd_inmueble_suministros_energias (c16_medidor_id,c2_gravable,dt_desde,dt_hasta,i8_inmueble_id,i8_nis_id,txt_comentario,v64_nombres,v64_apellidos,ts_in,ts_update) values('$medidor','SI','1999/05/01','2020/12/31',$inmuebleid,$nis,\"$direccion\",\"$nombres\",\"$apellidos\",now(),now())";
                            #print "<br>$sql";
                            if ($db1->Sql($sql)){print "SQL failed. 6<br>";print "$sql<br>";print "Error: " . $db1->Error() . "<br>";$db1->Close();exit;}
                            $sql="insert into sdd_inmueble_suministro_energia_tarifas (i8_inmueble_id,i8_nis_id,ts_in,ts_update,c4_tarifa_id,dt_desde,dt_hasta) values($inmuebleid,$nis,now(),now(),'$tarifa','1999/05/01','2020/12/31')";
                            #print "<br>$sql";
                            if ($db1->Sql($sql)){print "SQL failed. 6<br>";print "$sql<br>";print "Error: " . $db1->Error() . "<br>";$db1->Close();exit;}
                            $bn=1;
                            $bc=1;
                        }
                        
                    }
                    close(B);
            }
        }
        #CNT:
        
        #if($nis_anterior==$nis or $parcela_anterior==$parcela)
        #{
            #se deben reportar los datos del nis y la parcela que tiene problemas para revision
        #    print "<tr><td>$c1</td><td>$c3</td><td>$c4</td></tr>";
            
        #}
        $line_anterior=$line;
        $parcela_anterior=$c3;
        $nis_anterior=$c1;
    }#fin del while
    close(A);
    $error1=$error1."</table>";
    $error2=$error2."</table>";
    #print "</table>";
    print "Nis repetidos para varias parcelas<br>";
    print $error1;
    print "Parcelas repetidos para varios nis<br>";
    print $error2;

}



###migrar ordenanzas parametrizadas con:


sub construct_page {
    
	open (DATA, "$PATH$file_html");
		while ($line = <DATA>){
			$line =~ s/{lan}/$lan/g;
			$line =~ s/{appid}/$appid/g;
			$line =~ s/{total_sectores}/$i/g;
			$line =~ s/{i8_inmueble_id}/$id/g;
			$line =~ s/{id}/$id/g;
			$line =~ s/{i8_periodo}/$periodo/g;
			$line =~ s/{dt_abono}/$dt_abono/g;
			$line =~ s/{c16_recibo_id}/$c16_recibo_id/g;
			$line =~ s/{v64_abono_agencia}/$v64_abono_agencia/g;
			$line =~ s/{v64_abono_sucursal}/$v64_abono_sucursal/g;
			print $line;
		}		
	close (DATA);
}