#!/perl/bin/perl.exe
$|=1;
#------------------------------------------------------
#Perl Modules
use Win32::ODBC;
use CGI;
#------------------------------------------------------
#------------------------------------------------------
#HTML printing activation
print "Content-type: text/html\n\n";
#------------------------------------------------------
#------------------------------------------------------
#Get parameters
$form	 = new CGI;
$lan	 = $form->param("lan");
$appid	 = $form->param("appid");
#------------------------------------------------------
#------------------------------------------------------
#Define subdirectories and general variables
$PATH1 		= "../".$lan."/";
$PATH 		= "../".$lan."/inmuebles_files/";##los archivos de sectores y parcelas estan aqui
$file_html	= $lan."_init_table_inmuebles".".html";
$filename1	= "parcelario.csv";
$client1	= "sdm_inmuebles";

$i8_inmueble_id	= 10000001;
@frentes;
@calles;
$line;
$line1;
$contador=0;
$sql="";
$sector_id="";
$v64_nombres="";
$v64_apellidos="";
$cntd=0;
$txt_comentario="";
#------------------------------------------------------
#------------------------------------------------------
# ODBC
if (!($db = new Win32::ODBC($appid))){print "Error connecting to $appid <br>";print "Error: " . Win32::ODBC::Error() . "<br>";exit;}
if (!($dbc = new Win32::ODBC($appid))){print "Error connecting to $appid <br>";print "Error: " . Win32::ODBC::Error() . "<br>";exit;}
if (!($dbb = 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;}
if (!($db2 = new Win32::ODBC($appid))){print "Error connecting to $appid <br>";print "Error: " . Win32::ODBC::Error() . "<br>";exit;}
if (!($db3 = new Win32::ODBC($appid))){print "Error connecting to $appid <br>";print "Error: " . Win32::ODBC::Error() . "<br>";exit;}
if (!($db4 = new Win32::ODBC($appid))){print "Error connecting to $appid <br>";print "Error: " . Win32::ODBC::Error() . "<br>";exit;}

#------------------------------------------------------
#------------------------------------------------------
#Main Program
#init_file_table();
#update_record();
#print $PATH.$filename1;

insert_inmuebles_naturales($filename2);
#insert_inmuebles_juridicos($filename1);

##insert_inmuebles_rurales();##pendiente por ni poseer los nits
construct_page();
$db->Close();
exit;
#------------------------------------------------------
#------------------------------------------------------
# SUB-ROUTINES

sub insert_inmuebles_naturales{
	$parcela_last=0;	
	#print $PATH.$filename1;
	#insertando los registros de los usu arios desde el archivo de excel que esta en la carpeta es:usuarios
	open (A,"$PATH$filename1");
	#print "$PATH$filename2";
	$i=0;
	$i2=0;
	$t=0;
	print "<table border=1><tr><td>Clave</td><td>Nombres</td><td>Apellidos</td><td>Numero Puerta</td><td>Direccion</td></tr>";
	
	while ($line = <A>) {
		$casa=0;
		#print $line;
		$i=$i+1;
		if($i==10){$t=1}
		#print "<br>Contador:$i<br>";
		#print "<br>$line<br>";
		$x1=-1;
		$x11=-1;
		$x12=-1;
		$x13=-1;
		$x14=-1;
		$x2=-1;
		$x3=-1;
		$x4=-1;
		$x5=-1;
		$x6=-1;
		$x7=-1;
		$x8=-1;
		$x9=-1;
		$x10=-1;
		$x11=-1;
		$var=-1;
		$cntd=0;
		$x31=-1;
		$x32=-1;
		$x33=-1;
		$x34=-1;
		$x35=-1;
		$x36=-1;
		$x37=-1;
		$x38=-1;
		$x39=-1;
		($sector_id,$i4_parcela,$direccion,$municipio,$area,$perimetro,$propietario,$ref_cnr)=split(/\|/,$line);##la primera linea esta el numero de frentes,
		$sector_id==~ s/^\s*(.*\S)\s*$/$1/;
		$i4_parcela==~ s/^\s*(.*\S)\s*$/$1/;
		$direccion==~ s/^\s*(.*\S)\s*$/$1/;
		$municipio==~ s/^\s*(.*\S)\s*$/$1/;
		$propietario==~ s/^\s*(.*\S)\s*$/$1/;
		#print "<br>$x1$x2$x3$x4$x5$x6$x7$x8$x9$x10$x111$x12$x13$x14$x31$x32$x33$x34$x35$x36$x37$x38$x39<br>";
		if($x1>=0 or $x2>=0 or $x3>=0 or $x4>=0 or $x5>=0 or $x6>=0 or $x7>=0 or $x8>=0 or $x9>=0 or $x10>=0 or $x111>=0 or $x12>=0 or $x13>=0 or $x14>=0 or $x31>=0 or $x32>=0 or $x33>=0 or $x34>=0 or $x35>=0 or $x36>=0 or $x37>=0 or $x38>=0 or $x39>=0){$var=1;}
		($v64_apellidos,$v64_nombres)=split(/\,/,$propietario);
		$c16_codigo_catastral_id="0619".$sector_id.$i4_parcela;
		##comparar el nombre del propietario con el nombre del dui
		#if($sector_id eq "U02" or $i==3){$t=1}
		$v64_nombres =~ s/^\s*(.*\S)\s*$/$1/;
		@na=split(/\ /,$v64_nombres);
		@nb=split(/\ /,$v64_apellidos);
		$n1=$na[0];
		$n2=$na[1];
		$n3=$na[2];
		$n4=$na[3];
		$n1==~ s/^\s*(.*\S)\s*$/$1/;
		$n2==~ s/^\s*(.*\S)\s*$/$1/;
		$n3==~ s/^\s*(.*\S)\s*$/$1/;
		$n4==~ s/^\s*(.*\S)\s*$/$1/;
		
		if($n2 eq ""){$v64_nombres=$n1}
		else{
			if($n3 eq "")
			{$v64_nombres =$n1." ".$n2}
			else{
			if($n4 eq "")
			{$v64_nombres =$n1." ".$n2." ".$n3}
			else
			{$v64_nombres =$n1." ".$n2." ".$n3." ".$n4}
			}
		}
		
		$v64_nombres =~ s/^\s*(.*\S)\s*$/$1/;
		$v64_apellidos =~ s/^\s*(.*\S)\s*$/$1/;
		if($i4_parcela == $parcela_last){
			$cntd=1
			#actualizar el inmueble anterior con los propietarios adicionales
					
		}

	
			$nombre=$v64_nombres;
			$apellido=$v64_apellidos;
			#print "<br>comparacion:$v64_nombres-;$nombre-<br>";
			#print "<br>comparacion:$v64_apellidos-;$apellido-<br>";
			$bandera=0;
			#print "$v64_nombres$nombre$v64_apellidos$apellido$var$cntd";
			if ($v64_nombres eq $nombre and $v64_apellidos eq $apellido and $cntd==0)
			{
				$txt_comentario="";
				$cntd=0;
				$flg=1;
				$bandera=1;
				$contador=0;
				$casa="";
				$conc=substr($sector_id,0,3);
				if($conc eq "U02" or $conc eq "U03" or $conc eq "U04" or $conc eq "U05" or $conc eq "U06" or $conc eq "U07" or $conc eq "U08")
				{
					open (B,"$PATH$sector_id.csv");
					#print "$PATH$sector_id.csv";
					$ba=0;
					$i2=0;
					while ($line1 = <B> and $ba==0)
					{
						$i2=$i2+1;
						#print "<br>$line1<br>";
						if($i2==1){						
							($num_frentes)=split(/\|/,$line1);											
						}					
						if($num_frentes==3)
						{
							my($sector,$parcela,$f1,$c1,$f2,$c2,$f3,$c3,$poligono_id,$block_id,$num_casa)=split(/\|/,$line1);
							 
							##primero insertar en la tablas smd_inmuebles el registro
							#print "<br>Parcela1:$parcela;parcela2:$i4_parcela";
							if($parcela==$i4_parcela)
							{
								$ba=1;
								$c4_casa=chomp($num_casa);
								$bc=1;
								$casa=$num_casa;
									
								
							}
						}
						if($num_frentes==4)
						{
							my($sector,$parcela,$f1,$c1,$f2,$c2,$f3,$c3,$f4,$c4,$poligono_id,$block_id,$num_casa)=split(/\|/,$line1);
							 
							##primero insertar en la tablas smd_inmuebles el registro
							#print "<br>Parcela1:$parcela;parcela2:$i4_parcela";
							if($parcela==$i4_parcela)
							{
								$ba=1;
								$c4_casa=chomp($num_casa);
								$bc=1;
								$casa=$num_casa;
									
								
							}
						}

						
					}
				}
				else
				{
								#$flg=1;
								#seleccionar el tipo de sector y nom
								open(D,"$PATH$sector_id"."_DIR.csv");
								$bc=0;
								while($line4=<D> and $bc==0)
								{
									
									($sec,$parc,$dir,$pol,$blc,$casa)=split(/\|/,$line4);
									
									if($parc==$i4_parcela)
									{
										$c2_poligono=$pol;
										$c2_block=$blc;
										$c4_casa=chomp($casa);
										$bc=1;
										$num_casa=$casa;
									}
									
								}
								#print "$PATH$sector_id"."_DIR.csv";
								#print "<br>$casa<br>";
								close(D);
				}
					#}
				#}
				print "<tr><td>$sector_id$i4_parcela</td><td>$v64_nombres</td><td>$v64_apellidos</td><td>$casa</td><td>$direccion</td></tr>";
				
				#close(B);
			}
			else			
			{
				if($cntd==1)
				{
					#concatenando el nombre anterior con el actual
					#$txt_comentario=$txt_comentario.$v64_nombres.",".$v64_apellidos."|";
					#$sql="update sdm_inmuebles set txt_referencia='$txt_comentario' where i8_inmueble_id=$i8_inmueble_id-1";
					#print $sql;
					#if ($db2->Sql($sql)){print "SQL failed. select<br>";print "$sql<br>";print "Error: ".$db2->Error()."<br>";$db2->Close();exit;}
				}	
			}
		#}
		
		#busco en MACONDO pero no encontro
		#if($bandera==-1 and ($contador==0 or $contador==1))
		#{
			##
			#print "entra opcion 1";
		#	$sql="select a.i8_contribuyente_id,a.c11_dui_id,a.v64_nombres,a.v64_apellidos from sdm_contribuyentes a, sdd_contribuyente_direcciones b where a.i8_contribuyente_id=b.i8_contribuyente_id and a.v64_nombres like \"$v64_nombres%\" and a.v64_apellidos like \"$v64_apellidos%\"";
		#	$contador=$contador+1;
		#	goto ERR;
			
		#}
		#if($bandera==0 and ($contador==0 or $contador==1))
		#{
			##
			#print "entra opcion 2";
		#	$sql="select a.i8_contribuyente_id,a.c11_dui_id,a.v64_nombres,a.v64_apellidos from sdm_contribuyentes a, sdd_contribuyente_direcciones b where a.i8_contribuyente_id=b.i8_contribuyente_id and a.v64_nombres like \"$v64_nombres%\" and a.v64_apellidos like \"$v64_apellidos%\"";
		#	$contador=$contador+1;
		#	goto ERR;
			
		#}
		#if(($bandera==-1 or $bandera==0)and $contador==2)
		#{
			
			##crear el nuevo contribuyente O buscarlo en segundo plano, el contribuyente pueder residir en otro municipio
				
				#goto ERR1:
				#print "entra opcion 3";
				##si el propietario no existe en la base de duis se debe agregar al final de la tabla de contribuyentes
				#primero obtener el ultimo id de contribuyente
		#		$sql="select max(i8_contribuyente_id) from sdm_contribuyentes";
				#print $sql."<br>";
		#		if ($db4->Sql($sql)){print "SQL failed. insert_direccion<br>";print "$sql<br>";print "Error: ".$db4->Error()."<br>";$db4->Close();exit;}
		#		while($db4->FetchRow()){undef @r;@r=$db4->Data();$last_i8_contribuyente_id=$r[0];}
				#insertar el nuevo contribuyente
		#		$i8_contribuyente_id=$last_i8_contribuyente_id+1;
		#		$v128_contribuyente=$v64_nombres." ".$v64_apellidos;
		#		$c14_dui_id="00000000";
		#		$sql="insert into sdm_contribuyentes(i8_contribuyente_id,v128_contribuyente,v64_nombres,v64_apellidos,c1_tipo_persona_id,c11_dui_id,ts_in,ts_update) values ($i8_contribuyente_id,\"$v128_contribuyente\",\"$v64_nombres\",\"$v64_apellidos\",\"N\",\"$c14_dui_id\",now(),now())";	
				#print $sql."<br>";
		#		if ($db4->Sql($sql)){print "SQL failed. insert_contribuyente<br>";print "$sql<br>";print "Error: ".$db4->Error()."<br>";$db4->Close();exit;}
				#insertar la direccion correspondiente al contribuyente				
		#		$sql="insert into sdd_contribuyente_direcciones (i8_contribuyente_id,ts_update,ts_in) values($i8_contribuyente_id,now(),now())";
				#print $sql."<br>";
		#		if ($db4->Sql($sql)){print "SQL failed. insert_contribuyente<br>";print "$sql<br>";print "Error: ".$db4->Error()."<br>";$db4->Close();exit;}
		#		$nombre=$v64_nombres;
		#		$apellido=$v64_apellidos;
		#		$sql="select a.i8_contribuyente_id,a.c11_dui_id,a.v64_nombres,a.v64_apellidos from sdm_contribuyentes a, sdd_contribuyente_direcciones b where a.i8_contribuyente_id=b.i8_contribuyente_id and a.v64_nombres like \"$v64_nombres%\" and a.v64_apellidos like \"$v64_apellidos%\"";
		#		goto ERR;
		#}
		#abrir el archivo donde estan los sectores
		$parcela_last=$i4_parcela;
		$cntd=0;
	}
	close(A);
	print "</table>";
	
}

sub construct_page {
	open (DATA, "$PATH1$file_html");
		while ($line = <DATA>){
			$line =~ s/{lan}/$lan/g;
			$line =~ s/{appid}/$appid/g;
			$line =~ s/{total_contribuyentes}/$i/g;
			$line =~ s/{total_direcciones}/$ii/g;
			print $line;
		}		
	close (DATA);
}