#!/perl/bin/perl.exe
#-------------------------------------------------------------------------
#-------------------------------------------------------------------------
# Information Software SA
# Date In: 2013-09-17
# Updates: 2013-09-17
# Author:Rodolfo Machon
# File Name: empleados_remuneraciones_rept.pl
#------------------------------------------------------------------------- 
#-------------------------------------------------------------------------
#Perl Modules
use CGI;
use Win32::ODBC;
#------------------------------------------------------------------------- 
#-------------------------------------------------------------------------
#HTML printing activation
print "Content-type: text/html\n\n";
#------------------------------------------------------------------------- 
#-------------------------------------------------------------------------
#Getting parameters
$form				= new CGI;
$lan				= $form->param('lan');
$appid				= $form->param('appid');
$i8_empleado_id		= $form->param('id');
#------------------------------------------------------------------------- 
#-------------------------------------------------------------------------
#Define subdirectories and general variables
$PATH		= "/Program Files (x86)/Apache Group/Apache/htdocs/$appid/$lan/";
$file 		= "es_empleado_remuneraciones_rept.html";
#------------------------------------------------------------------------- 
#-------------------------------------------------------------------------
# Open Data Base Connections
if (!($dbh = new Win32::ODBC($appid))){connect_fail($appid)}
#------------------------------------------------------------------------- 
#-------------------------------------------------------------------------
# MAIN-PROGRAM
%planillas		= get_planillas();
%cargos		    = get_cargos();
%descuentos		= get_descuentos();
%departamentos	= get_departamentos();
%lineas			= get_lineas();
%generales      = get_generales();
%planillas_tiempos   		= get_planillas_tiempos();
%planillas_remuneraciones   = get_planillas_remuneraciones();
%planillas_descuentos       = get_planillas_descuentos();
%planillas_descuentos_otros = get_planillas_descuentos_otros();	
%planillas_inasistencias    = get_planillas_inasistencias();
%planillas_retenciones      = get_planillas_retenciones();
$table 					    = construct_table();    
construct_page();
exit;
#------------------------------------------------------------------------- 
#-------------------------------------------------------------------------
#SUBROUTINES LEVEL I
sub get_planillas {
    my %hash = ();
    my $sql  = "SELECT a.i8_planilla_id,b.v128_planilla,a.i8_periodo,a.dt_pago,a.dt_planilla,a.dt_desde,a.dt_hasta
					  ,a.c8_linea_id,a.i2_tipo_departamento_id,a.i2_seccion_id,a.i2_forma_pago_id
					  ,a.c2_tipo_contrato_id,a.c2_frecuencia_pago_id,a.i4_pago,a.c8_estado,a.i2_cargo_id,c.d82_valor
                FROM sdr_empleados_planillas a
				LEFT JOIN sdm_planillas b ON a.i8_planilla_id=b.i8_planilla_id
				LEFT JOIN sdr_empleados_planillas_remuneraciones c ON a.i8_planilla_id=c.i8_planilla_id and c.c2_tipo_remuneracion_id='DE'
                WHERE a.i8_empleado_id='$i8_empleado_id'
               ";
    if($dbh->Sql($sql)){SQL_fail($dbh,$sql,'sub get_planillas')};
    while($dbh->FetchRow()){
        my @row       = $dbh->Data();
        $hash{$row[0]} = [@row];
    }
    return %hash;
}
sub get_cargos {
    my %car = ();
    my $sql = "SELECT a.i2_cargo_id,a.v64_cargo
                FROM sdm_empleados_cargos a
                ORDER BY a.i2_cargo_id";
    if($dbh->Sql($sql)){SQL_fail($dbh,$sql,'sub get_cargos')};
    while($dbh->FetchRow()){
        undef my @row;
	@row          = $dbh->Data();
        $car{$row[0]} = $row[1];
    }
    return %car;
}
sub get_descuentos {
    my %des = ();
    my $sql = "SELECT a.i2_descuento_id,a.v64_descuento,a.c8_descuento
                FROM sdm_descuentos a
                ORDER BY a.i2_descuento_id";
    if($dbh->Sql($sql)){SQL_fail($dbh,$sql,'sub get_descuentos')};
    while($dbh->FetchRow()){
        undef my @row;
		@row          = $dbh->Data();
        $des{$row[0]} = $row[2] ;
    }
    return %des;
}
sub get_departamentos {
    my %dep = ();
    my $sql = "SELECT a.i2_tipo_departamento_id,a.v64_tipo_departamento
                FROM sdm_tipo_departamentos_rh a
                ORDER BY a.i2_tipo_departamento_id";
    if($dbh->Sql($sql)){SQL_fail($dbh,$sql,'sub get_departamentos')};
    while($dbh->FetchRow()){
        undef my @row;
	@row          = $dbh->Data();
        $dep{$row[0]} = $row[1] ;
    }
    return %dep;
}
sub get_lineas {
    my %lin = ();
    my $sql = "SELECT a.c8_linea_id,a.v64_linea
                FROM sdm_lineas a
                ORDER BY a.c8_linea_id";
    if($dbh->Sql($sql)){SQL_fail($dbh,$sql,'sub get_lineas')};
    while($dbh->FetchRow()){
        my @row       = $dbh->Data();
        $lin{$row[0]} = $row[1] ;
    }
    return %lin;
}
sub get_generales {
    my %emp = ();
    my $sql = "SELECT a.i8_empleado_id,a.v64_nombres,a.v64_apellidos,
						b.i2_cargo_id,b.c2_tipo_contrato_id,b.i2_horas_laborales
                FROM sdm_empleados a
                LEFT JOIN sdd_empleado_cargos b on a.i8_empleado_id = b.i8_empleado_id
                WHERE a.i8_empleado_id='$i8_empleado_id'
				";
    if($dbh->Sql($sql)){SQL_fail($dbh,$sql,'sub get_empleados_generales')};
    while($dbh->FetchRow()){
        my @row       = $dbh->Data();
        $emp{$row[0]} = [@row];
    }
    return %emp;
}
sub get_planillas_tiempos {
    my %emp = ();
    my $sql = "SELECT a.i8_planilla_id,a.c2_tipo_tiempo_id,a.d82_valor
                FROM sdr_empleados_planillas_tiempos a
                WHERE a.i8_empleado_id='$i8_empleado_id'
                ORDER BY a.i8_empleado_id";
    if($dbh->Sql($sql)){SQL_fail($dbh,$sql,'sub get_empleados_tiempos')};
    while($dbh->FetchRow()){
        my @row          	   = $dbh->Data();
        $emp{$row[0]}{$row[1]} = $row[2] ;
    }
    return %emp;
}
sub get_planillas_remuneraciones {
    my %emp = ();
    my $sql = "SELECT a.i8_planilla_id,a.c2_tipo_remuneracion_id,a.d82_valor
                FROM sdr_empleados_planillas_remuneraciones a
                WHERE a.i8_empleado_id='$i8_empleado_id'
				";
    if($dbh->Sql($sql)){SQL_fail($dbh,$sql,'sub get_empleados_remuneraciones')};
    while($dbh->FetchRow()){
        my @row                = $dbh->Data();
        $emp{$row[0]}{$row[1]} = $row[2] ;
    }
    return %emp;
}
sub get_planillas_descuentos {
    my %emp = ();
    my $sql = "SELECT a.i8_planilla_id,a.i2_descuento_id,a.d82_valor
                FROM sdr_empleados_planillas_descuentos a
                WHERE a.i8_empleado_id='$i8_empleado_id' and a.i2_descuento_id between '10' and '19'
				";
    if($dbh->Sql($sql)){SQL_fail($dbh,$sql,'sub get_empleados_descuentos')};
    while($dbh->FetchRow()){
        undef my @row;
	@row          = $dbh->Data();
        $emp{$row[0]}{$row[1]} = $row[2];
    }
    return %emp;
}
sub get_planillas_descuentos_otros {
    my %emp = ();
    my $sql = "SELECT a.i8_planilla_id,a.i2_descuento_id,a.d82_valor
                FROM sdr_empleados_planillas_descuentos a
                WHERE a.i8_empleado_id='$i8_empleado_id' and a.i2_descuento_id between '20' and '50'
                ORDER BY a.i8_empleado_id";
    if($dbh->Sql($sql)){SQL_fail($dbh,$sql,'sub get_empleados_descuentos')};
    while($dbh->FetchRow()){
        my @row                = $dbh->Data();
        $emp{$row[0]}{$row[1]} = $row[2];
    }
    return %emp;
}
sub get_planillas_inasistencias {
    my %emp = ();
    my $sql = "SELECT a.i8_planilla_id,a.c2_tipo_inasistencia_id,a.d82_valor
                FROM sdr_empleados_planillas_inasistencias a
                WHERE a.i8_empleado_id='$i8_empleado_id'
				";
    if($dbh->Sql($sql)){SQL_fail($dbh,$sql,'sub get_empleados_inasistencias')};
    while($dbh->FetchRow()){
        my @row          	   = $dbh->Data();
        $emp{$row[0]}{$row[1]} = $row[2];
    }
    return %emp;
}
sub get_planillas_retenciones {
    my %emp = ();
    my $sql = "SELECT a.i8_planilla_id,a.i8_institucion_id,a.d82_valor
                FROM sdr_empleados_planillas_retenciones a
                WHERE a.i8_empleado_id='$i8_empleado_id'
				";
    if($dbh->Sql($sql)){SQL_fail($dbh,$sql,'sub get_empleados_retenciones')};
    while($dbh->FetchRow()){
        undef my @row;
	@row          = $dbh->Data();
        $emp{$row[0]}{$row[1]} = $row[2];
    }
    return %emp;
}
sub construct_table {
    my %des	       = ();
    my %emp_des    = ();
    my %emp_des_otr= ();	
    my %emp_ret    = ();
    my $tab_body   = "";
	my $count	   = 1;
    my $t_dias_mes = 0;
    my $t_dias_lab = 0;
    my $t_dias_inc = 0;	
    my $t_dias_ina = 0;
    my $t_minutos  = 0;
    my $t_remu_no  = 0.00;
    my $t_remu_re  = 0.00;
    my $t_remu_bo  = 0.00;
    my $t_remu_as  = 0.00;
    my $t_remu_va  = 0.00;
    my $t_remu_xd  = 0.00;
    my $t_remu_xn  = 0.00;
    my $t_remu_in  = 0.00;
    my $t_remu_de  = 0.00;
    my $t_dedu_in  = 0.00;	
    my $t_dedu_ot  = 0.00;
    my $t_dedu_10  = 0.00;
    my $t_dedu_af  = 0.00;
    my $t_dedu_11  = 0.00;
    my $t_dedu_lt  = 0.00;
    my $t_dedu_od  = 0.00;
	my $t_dedu_td  = 0.00;
	my $t_remu_li  = 0.00;
	my $ano		   = substr($periodo,0,4);
	my $header	  = "<DIV ID=header><br><br>
			<TABLE>
			    <TR>
					<TD width=10% align=center valign=top rowspan=5><img src=/icons/REM_v30/logo.jpg width=60px height=60px></TD>
					<TD valign=top colspan=2><h5>ALCALDIA MUNICIPAL DE </h5></TD>
					<TD></TD>
			    </TR>
			    <TR>
					<TD width=2% valign=top>{linea_1}</TD>
					<TD valign=top>{linea_nombre_1}</TD>
					<TD></TD>
			    </TR>
			    <TR>
					<TD width=2% valign=top>{linea_2}</TD>
					<TD valign=top>{linea_nombre_2}</TD>
					<TD colspan=2 valign=top>PLANILLA CORRESPONDIENTE AL MES DE $mes DEL AŅO $ano</TD>					
			    </TR>
			    <TR>
					<TD width=2% valign=top>{linea_3}</TD>
					<TD valign=top><a href=javascript:AbrirBoletas('$i8_empleado_id','$dep')>{linea_nombre_3}</a></TD>
					<TD></TD>					
			    </TR>
			</TABLE>
			{tabla}
		    </DIV>";
    my $tab_head  = "<thead class=grid_head>
						<tr>
							<td colspan=5> </td>
							<td colspan=4 align=center>DIAS</td>
							<td align=center>MIN</td>							
							<td colspan=2 align=center>SUELDO</td>
							<td colspan=6 align=center>OTROS INGRESOS</td>
							<td colspan=2 align=center>OTROS DESC</td>
							<td align=center>SUELDO</td>
							<td colspan=6 align=center>DEDUCCIONES</td>
							<td align=center>SUELDO</td>
						</tr>
						<tr>
							<td>No.</td>
							<td>ID</td>
							<td>NOMBRE</td>
							<td>CARGO</td>
							<td>AFP</td>
							<td>MES</td>
							<td>LAB</td>
							<td>INC</td>
							<td>INA</td>
							<td>TAR</td>							
							<td>NOMINAL</td>
							<td>MES</td>
							<td>BONIF</td>
							<td>ASUETO</td>
							<td>VACA</td>
							<td>H.DIU</td>
							<td>H.NOT</td>
							<td>INCA</td>
							<td>INCA</td>
							<td>OTROS</td>
							<td>DEVEN</td>
							<td>ISSS</td>
							<td>AFP</td>
							<td>RENTA</td>
							<td>TARDIAS</td>
							<td>RETENC</td>
							<td>TOTAL</td>
							<td>LIQUIDO</td>
							<td class=firma>FIRMA</td>
							</tr>
						</thead>";
    my $row_body  = "<tbody class=grid_body>
						<tr>
							<td>{count}</td>
							<td>{empleado}</td>
							<td align=left><a href=javascript:AbrirBoleta('$i8_empleado_id','{empleado}')>{apellidos}, {nombres}</a></td>
							<td align=left>{cargo}</td>
							<td align=left>{afp}</td>
							<td align=right>{dias_mes}</td>
							<td align=right>{dias_lab}</td>
							<td align=right>{dias_inc}</td>
							<td align=right>{dias_ina}</td>
							<td align=right>{minutos}</td>							
							<td align=right>{sueldo_nominal}</td>
							<td align=right>{sueldo_real}</td>	
							<td align=right>{remuneracion_bonificacion}</td>
							<td align=right>{remuneracion_asueto}</td>
							<td align=right>{remuneracion_vacacion}</td>
							<td align=right>{remuneracion_diurnas}</td>
							<td align=right>{remuneracion_nocturnas}</td>
							<td align=right>{remuneracion_incapacidad}</td>
							<td align=right>{deduccion_incapacidad}</td>
							<td align=right>{deduccion_otros}</td>
							<td align=right>{sueldo_devengado}</td>
							<td align=right>{deduccion_isss}</td>
							<td align=right>{deduccion_afp}</td>
							<td align=right>{deduccion_renta}</td>
							<td align=right>{deduccion_tardias}</td>
							<td align=right>{deduccion_retencion}</td>
							<td align=right>{deduccion_total}</td>
							<td align=right>{sueldo_liquido}</td>
							<td align=right></td>
							</tr>
						</tbody>";
    my $tab_foot  = "<tfoot class=grid_foot>
						<tr>
							<td> </td>
							<td> </td>
							<td> </td>
							<td> </td>
							<td>TOTAL</td>
							<td align=right>{t_dias_mes}</td>
							<td align=right>{t_dias_lab}</td>
							<td align=right>{t_dias_inc}</td>
							<td align=right>{t_dias_ina}</td>
							<td align=right>{t_minutos}</td>
							<td align=right>{t_remu_no}</td>
							<td align=right>{t_remu_re}</td>
							<td align=right>{t_remu_bo}</td>
							<td align=right>{t_remu_as}</td>
							<td align=right>{t_remu_va}</td>
							<td align=right>{t_remu_xd}</td>
							<td align=right>{t_remu_xn}</td>
							<td align=right>{t_remu_in}</td>
							<td align=right>{t_dedu_in}</td>							
							<td align=right>{t_dedu_ot}</td>
							<td align=right>{t_remu_de}</td>
							<td align=right>{t_dedu_10}</td>
							<td align=right>{t_dedu_af}</td>
							<td align=right>{t_dedu_11}</td>
							<td align=right>{t_dedu_lt}</td>
							<td align=right>{t_dedu_od}</td>
							<td align=right>{t_dedu_td}</td>
							<td align=right>{t_remu_li}</td>
						</tr>
					</tfoot>";
	my $firmas = "<DIV id=firmas_div><br><br><br><br><br><br><TABLE id=firmas>
					<TR><TD>_______________________</TD><TD>_______________________</TD><TD>_______________________</TD><TD>_______________________</TD><TD>_______________________</TD></TR>    
					<TR><TD>DESE</TD><TD>VISTO BUENO</TD><TD>ELABORADO</TD><TD>CANCELADO</TD><TD>REGISTRADO</TD></TR>
					<TR><TD>AURELIANO BRIZUELA</TD><TD>GREGORIA DEL CARMEN TERESON</TD><TD>SONIA MARIA ESQUIVEL DE FRANCO</TD><TD>NORMA YESENIA ARRIOLA DE QUIJADA</TD><TD>FRANCISCO JAVIER ELIAS JUAREZ</TD></TR>
					<TR><TD>ALCALDE MUNICIPAL</TD><TD>SINDICO MUNICIPAL INTERINO</TD><TD>JEFE DE RECURSOS HUMANOS</TD><TD>TESORERA MUNICIPAL</TD><TD>CONTADOR MUNICIPAL</TD></TR>
				   </TABLE></DIV>";
	my ($linea_1,$linea_2,$linea_3,$linea_nombre_1,$linea_nombre_2,$linea_nombre_3)   = get_linea($dep);
    foreach my $k (sort numeros keys %planillas_descuentos){
		foreach my $kk (sort numeros keys %{$planillas_descuentos{$k}}){
			$emp_des{$k} += $planillas_descuentos{$k}{$kk};
		}
    }
    foreach my $k (sort numeros keys %planillas_descuentos_otros){
		foreach my $kk (sort numeros keys %{$planillas_descuentos_otros{$k}}){
			$emp_des_otr{$k} += $planillas_descuentos_otros{$k}{$kk};
		}
    }	
    foreach my $k (sort numeros keys %planillas_retenciones){
		foreach my $kk (sort numeros keys %{$planillas_retenciones{$k}}){
			$emp_ret{$k} += $planillas_retenciones{$k}{$kk};
		}
    }
	foreach my $k (sort numeros keys %planillas){
		my $rb    = $row_body;
		my $afpn  = get_afp($i8_empleado_id);
		my $odes  = sprintf("%.2f",$emp_ret{$k});
		my $deso  = sprintf("%.2f",$emp_des_otr{$k});		
		my $tdes  = sprintf("%.2f",$emp_des{$k} + $emp_ret{$k});
		my $afp   = $planillas_descuentos{$k}{'12'}
				  + $planillas_descuentos{$k}{'13'}
				  + $planillas_descuentos{$k}{'14'}
				  + $planillas_descuentos{$k}{'15'};#crecer+confia+impep+ipsfa;
		$afp 	  = sprintf("%.2f",$afp);
		$rb =~ s/\{count}/$count/g;
		$rb =~ s/\{empleado}/$k/g;
		$rb =~ s/\{apellidos}/$generales{$i8_empleado_id}[2]/g;
		$rb =~ s/\{nombres}/${$i8_empleado_id}[1]/g;
		$rb =~ s/\{cargo}/$generales{$i8_empleado_id}[3]}/g;
		$rb =~ s/\{afp}/$afpn/g;
		$rb =~ s/\{dias_mes}/$planillas_tiempos{$k}{'DM'}/g;
		$rb =~ s/\{dias_lab}/$planillas_tiempos{$k}{'DT'}/g;
		$rb =~ s/\{dias_inc}/$planillas_tiempos{$k}{'DI'}/g;
		$rb =~ s/\{dias_ina}/$planillas_tiempos{$k}{'DN'}/g;
		$rb =~ s/\{minutos}/$planillas_tiempos{$k}{'LT'}/g;	   
		if($planillas_remuneraciones{$k}{'NO'} ne ""){$rb =~ s/\{sueldo_nominal}/$planillas_remuneraciones{$k}{'NO'}/g;}else{$rb =~ s/\{sueldo_nominal}/0.00/g;}
		if($planillas_remuneraciones{$k}{'RE'} ne ""){$rb =~ s/\{sueldo_real}/$planillas_remuneraciones{$k}{'RE'}/g;}else{$rb =~ s/\{sueldo_real}/0.00/g;}			
		if($planillas_remuneraciones{$k}{'BO'} ne ""){$rb =~ s/\{remuneracion_bonificacion}/$planillas_remuneraciones{$k}{'BO'}/g;}else{$rb =~ s/\{remuneracion_bonificacion}/0.00/g;}
		if($planillas_remuneraciones{$k}{'AS'} ne ""){$rb =~ s/\{remuneracion_asueto}/$planillas_remuneraciones{$k}{'AS'}/g;}else{$rb =~ s/\{remuneracion_asueto}/0.00/g;}
		if($planillas_remuneraciones{$k}{'VA'} ne ""){$rb =~ s/\{remuneracion_vacacion}/$planillas_remuneraciones{$k}{'VA'}/g;}else{$rb =~ s/\{remuneracion_vacacion}/0.00/g;}
		if($planillas_remuneraciones{$k}{'XD'} ne ""){$rb =~ s/\{remuneracion_diurnas}/$planillas_remuneraciones{$k}{'XD'}/g;}else{$rb =~ s/\{remuneracion_diurnas}/0.00/g;}
		if($planillas_remuneraciones{$k}{'XN'} ne ""){$rb =~ s/\{remuneracion_nocturnas}/$planillas_remuneraciones{$k}{'XN'}/g;}else{$rb =~ s/\{remuneracion_nocturnas}/0.00/g;}
		if($planillas_remuneraciones{$k}{'IN'} ne ""){$rb =~ s/\{remuneracion_incapacidad}/$planillas_remuneraciones{$k}{'IN'}/g;}else{$rb =~ s/\{remuneracion_incapacidad}/0.00/g;}
		if($planillas_inasistencias{$k}{'EX'} ne "") {$rb =~ s/\{deduccion_incapacidad}/$planillas_inasistencias{$k}{'EX'}/g;}else{$rb =~ s/\{deduccion_incapacidad}/0.00/g;}		
		if($deso ne ""){$rb =~ s/\{deduccion_otros}/$deso/g;}else{$rb =~ s/\{deduccion_otros}/0.00/g;}
		if($planillas_remuneraciones{$k}{'DE'} ne ""){$rb =~ s/\{sueldo_devengado}/$planillas_remuneraciones{$k}{'DE'}/g;}else{$rb =~ s/\{sueldo_devengado}/0.00/g;}
		if($planillas_descuentos{$k}{'10'} ne ""){$rb =~ s/\{deduccion_isss}/$planillas_descuentos{$k}{'10'}/g;}else{$rb =~ s/\{deduccion_isss}/0.00/g;}
		if( $afp ne ""){$rb =~ s/\{deduccion_afp}/$afp/g;}else{$rb =~ s/\{deduccion_afp}/0.00/g;}
		if($planillas_descuentos{$k}{'11'} ne ""){$rb =~ s/\{deduccion_renta}/$planillas_descuentos{$k}{'11'}/g;}else{$rb =~ s/\{deduccion_renta}/0.00/g;}
		if($planillas_inasistencias{$k}{'LT'} ne ""){$rb =~ s/\{deduccion_tardias}/$planillas_inasistencias{$k}{'LT'}/g;}else{$rb =~ s/\{deduccion_tardias}/0.00/g;}			
		if($odes ne ""){$rb =~ s/\{deduccion_retencion}/$odes/g;}else{$rb =~ s/\{deduccion_retencion}/0.00/g;}
		if($tdes ne ""){$rb =~ s/\{deduccion_total}/$tdes/g;}else{$rb =~ s/\{deduccion_total}/0.00/g;}			
		if($planillas_remuneraciones{$k}{'LI'} ne ""){$rb =~ s/\{sueldo_liquido}/$planillas_remuneraciones{$k}{'LI'}/g;}else{$rb =~ s/\{sueldo_liquido}/0.00/g;}
		
		$tab_body .= $rb;
		$count++;
		$t_dias_mes += $planillas_tiempos{$k}{'DM'};
		$t_dias_lab += $planillas_tiempos{$k}{'DT'};
		$t_dias_inc += $planillas_tiempos{$k}{'DI'};
		$t_dias_ina += $planillas_tiempos{$k}{'DN'};
		$t_minutos  += $planillas_tiempos{$k}{'LT'};					
		$t_remu_no  += $planillas_remuneraciones{$k}{'NO'};
		$t_remu_re  += $planillas_remuneraciones{$k}{'RE'};
		$t_remu_bo  += $planillas_remuneraciones{$k}{'BO'};
		$t_remu_as  += $planillas_remuneraciones{$k}{'AS'};
		$t_remu_va  += $planillas_remuneraciones{$k}{'VA'};
		$t_remu_xd  += $planillas_remuneraciones{$k}{'XD'};			
		$t_remu_xn  += $planillas_remuneraciones{$k}{'XN'};
		$t_remu_in  += $planillas_remuneraciones{$k}{'IN'};
		$t_dedu_in  += $planillas_inasistencias{$k}{'EX'};				
		$t_dedu_ot  += $deso;		
		$t_remu_de  += $planillas_remuneraciones{$k}{'DE'};			
		$t_dedu_10  += $planillas_descuentos{$k}{'10'};
		$t_dedu_af  += $afp;
		$t_dedu_11  += $planillas_descuentos{$k}{'11'};
		$t_dedu_lt  += $planillas_inasistencias{$k}{'LT'};			
		$t_dedu_od  += $odes;
		$t_dedu_td  += $tdes;
		$t_remu_li  += $planillas_remuneraciones{$k}{'LI'};
	}	
    $t_remu_no  = sprintf("%.2f",$t_remu_no);
    $t_remu_re  = sprintf("%.2f",$t_remu_re);
    $t_remu_bo  = sprintf("%.2f",$t_remu_bo);
    $t_remu_as  = sprintf("%.2f",$t_remu_as);
    $t_remu_va  = sprintf("%.2f",$t_remu_va);
    $t_remu_xd  = sprintf("%.2f",$t_remu_xd);
    $t_remu_xn  = sprintf("%.2f",$t_remu_xn);
    $t_remu_in  = sprintf("%.2f",$t_remu_in);
	$t_dedu_in  = sprintf("%.2f",$t_dedu_in);		
	$t_dedu_ot  = sprintf("%.2f",$t_dedu_ot);	
    $t_remu_de  = sprintf("%.2f",$t_remu_de);
    $t_dedu_10  = sprintf("%.2f",$t_dedu_10);
    $t_dedu_af  = sprintf("%.2f",$t_dedu_af);
    $t_dedu_11  = sprintf("%.2f",$t_dedu_11);
    $t_dedu_lt  = sprintf("%.2f",$t_dedu_lt);
    $t_dedu_od  = sprintf("%.2f",$t_dedu_od);
    $t_dedu_td  = sprintf("%.2f",$t_dedu_td); 
    $t_remu_li  = sprintf("%.2f",$t_remu_li); 
    
    $tab_foot =~ s/{t_dias_mes}/$t_dias_mes/g;
    $tab_foot =~ s/{t_dias_lab}/$t_dias_lab/g;
    $tab_foot =~ s/{t_dias_inc}/$t_dias_inc/g;
    $tab_foot =~ s/{t_dias_ina}/$t_dias_ina/g;
    $tab_foot =~ s/{t_minutos}/$t_minutos/g;	
    $tab_foot =~ s/{t_remu_no}/$t_remu_no/g;
    $tab_foot =~ s/{t_remu_re}/$t_remu_re/g;
    $tab_foot =~ s/{t_remu_bo}/$t_remu_bo/g;
    $tab_foot =~ s/{t_remu_as}/$t_remu_as/g;
    $tab_foot =~ s/{t_remu_va}/$t_remu_va/g;
    $tab_foot =~ s/{t_remu_xd}/$t_remu_xd/g;
    $tab_foot =~ s/{t_remu_xn}/$t_remu_xn/g;
    $tab_foot =~ s/{t_remu_in}/$t_remu_in/g;
    $tab_foot =~ s/{t_dedu_in}/$t_dedu_in/g;	
    $tab_foot =~ s/{t_dedu_ot}/$t_dedu_ot/g;
    $tab_foot =~ s/{t_remu_de}/$t_remu_de/g;
    $tab_foot =~ s/{t_dedu_10}/$t_dedu_10/g;
    $tab_foot =~ s/{t_dedu_af}/$t_dedu_af/g;
    $tab_foot =~ s/{t_dedu_11}/$t_dedu_11/g;
    $tab_foot =~ s/{t_dedu_lt}/$t_dedu_lt/g;
    $tab_foot =~ s/{t_dedu_od}/$t_dedu_od/g;
	$tab_foot =~ s/{t_dedu_td}/$t_dedu_td/g;
	$tab_foot =~ s/{t_remu_li}/$t_remu_li/g;

	$table     = "<table id='empleados_descuentos' class=grid>{tab_head}{tab_body}{tab_foot}</table";
    $table 	   =~ s/{tab_head}/$tab_head/g;
    $table 	   =~ s/{tab_body}/$tab_body/g;
    $table 	   =~ s/{tab_foot}/$tab_foot/g;
    $header    =~ s/{linea_1}/$linea_1/g;
    $header    =~ s/{linea_nombre_1}/$linea_nombre_1/g;
    $header    =~ s/{linea_2}/$linea_2/g;
    $header    =~ s/{linea_nombre_2}/$linea_nombre_2/g;
    $header    =~ s/{linea_3}/$linea_3/g;
    $header    =~ s/{linea_nombre_3}/$linea_nombre_3/g;
    $header    =~ s/{tabla}/$table/g;
	$header   .= $firmas;
    return ($header);
}
sub construct_page {
	open (DATA, "$PATH$file");
	while ($line = <DATA>) {
		$line =~ s/\{lan}/$lan/g;
		$line =~ s/\{appid}/$appid/g;
		$line =~ s/\{planillas_remuneraciones_tab}/$table/g;
		print $line;
	}	
}
#-------------------------------------------------------------------------
#SUBROUTINES LEVEL II
sub get_afp {
	my ($k) = @_;
	my $afpid = "";
	foreach my $kk (sort numeros keys %{$planillas_descuentos{$k}}){
		if($kk ne "10" && $kk ne "11"){$afpid = $kk;}
    }
	return $descuentos{$afpid};
}
sub get_linea {
	my ($k) = @_;
	my $lin3 = "";
	foreach my $kk (sort numeros keys %{$empleados{$k}}){
		if($empleados{$k}{$kk}[2]){$lin3 = $empleados{$k}{$kk}[2];}
    }
	my $lin1   = substr($lin3,0,2);	
	my $lin2   = substr($lin3,0,4);
	my $lin1_n = $lineas{$lin1};
	my $lin2_n = $lineas{$lin2};
	my $lin3_n = $lineas{$lin3};
	return ($lin1,$lin2,$lin3,$lin1_n,$lin2_n,$lin3_n);
}

#------------------------------------------------------------------------- 
#AUXILIAR-SUBROUTINES
sub SQL_fail {
    my ($dbh,$query,$section)= @_;
    print "SQL failed in Section $section<br>";
    print "Query: ".$query."<br>";    
    print "Error: ".$dbh->Error()."\n<br>";
    $dbh->Close();
    exit;
}
sub connect_fail {
    my ($DSN) = @_;
    print "Error connecting to $DSN<br>";
    print "Error:".Win32::ODBC::Error()."<br>";
    exit;
}
sub numeros {$a<=>$b}
#--------------------------------------------------------------------