#!/perl/bin/perl.exe
$|=1;
#-------------------------------------------------------------------------
#-------------------------------------------------------------------------
# Author:Rodolfo Machon
# Company:WebSoft, SA de CV 
# Nombre del archivo: financiamiento.plan.calc.pl
# Created: 2016-07-17
# Updates: 2016-07-17,2022-08-18
# Copyright - All Rights Reserved
#------------------------------------------------------------------------- 
#-------------------------------------------------------------------------
#PERL MODULES
use CGI;
use CGI::Carp qw(fatalsToBrowser);
use DBI;
use Encode;
use Encode qw/is_utf8 decode/;
#--------------------------------------------------------------------------
# HTML PRINTING ACTIVATION
print "Content-type: text/html; charset=utf-8\n\n";
#--------------------------------------------------------------------------
#--------------------------------------------------------------------------
# GET PARAMETERS
$form	= new CGI;
$clase  = $form->param('clase');
$id		= $form->param('id');
#-------------------------------------------------------------------------
#-------------------------------------------------------------------------
# CHECK PARAMETERS
if ($clase eq ""){print "Your are not passing CLASE parameter<br>";}
if ($id eq ""){print "Your are not passing ID parameter<br>";}
#-------------------------------------------------------------------------
#-------------------------------------------------------------------------
# GET VARIABLES
get_app_data();
#--------------------------------------------------------------------------
#--------------------------------------------------------------------------
# OPEN DATABASE CONNECTIONS - ODBCs
$dbh 	  = DBI->connect("dbi:ODBC:$appid",'','',{PrintError => 1, RaiseError => 1});
if (!$dbh) {print "error: connection: $DBI::err\n$DBI::errstr\n$DBI::state\n";}
#--------------------------------------------------------------------------
#--------------------------------------------------------------------------
# MAIN-PROGRAM
@financiamiento = ();
%financiamiento_detalle = ();
plantillas();
$finan_activo = get_financiamiento();
if($finan_activo eq "NO"){print "NO";exit}
get_financiamiento_detalles();
construct_page();
exit;
#------------------------------------------------------------------------- 
#-------------------------------------------------------------------------
# LEVEL 1
sub get_financiamiento {
	my $fa		= "NO";
	my %finan	= ();
	my $sql		= "SELECT i8_financiamiento_id
						 ,i8_".$clase."_id
						 ,i8_contribuyente_id
						 ,i4_periodos_mora
						 ,i6_desde
						 ,i6_hasta
						 ,c2_fiesta
						 ,c2_interes
						 ,c2_multa
						 ,c2_icc
						 ,i2_cuotas
						 ,d82_mora
						 ,d82_cargo_corriente
						 ,v32_tipo_suscriptor
						 ,txt_financiamiento
						 ,c8_estado
						 ,c8_tipo_cuota
						 ,ts_update
						 ,ts_in
					FROM sdd_".$clase."_financiamientos
					WHERE i8_".$clase."_id='".$id."' and c8_estado='ACTIVO'
					LIMIT 1";
    my $sth = $dbh->prepare($sql);
    $sth->execute or die SQL_fail($sql,$dbh,'sub get_financiamiento');
    if (my @financiamiento = $sth->fetchrow_array) {
		$fa = "SI"
	}
	return $fa;
}
sub get_financiamiento_detalles {
	my $count =0;
	my $sql = "SELECT	dt_vencimiento
					   ,i4_periodos_mora
					   ,i6_desde
					   ,i6_hasta
					   ,d82_mora_tasas
					   ,d82_mora_fiestas
					   ,d82_mora_interes
					   ,d82_mora_multas
					   ,d82_mora_multa_minima
					   ,d82_mora_total
					   ,d82_corriente_tasas
					   ,d82_corriente_fiestas
					   ,d82_corriente_total
					   ,d82_cuota
					   ,c8_estado
					   ,dt_pago
					   ,d82_pago
					   ,i8_".$clase."_id
					   ,i8_financiamiento_id
		       FROM sdd_".$clase."_financiamientos_detalle
		       WHERE  i8_financiamiento_id='".$financiamiento[0]."' order by dt_vencimiento asc";
    my $sth = $dbh->prepare($sql);
    $sth->execute or die SQL_fail($sql,$dbh,'sub get_financiamiento_detalles');
    while (my @row = $sth->fetchrow_array) {
		$financiamiento_detalle{$count}=[@row];
		$count++;
	}
}
sub construct_page {
	my $count   = 0;
	my $detail1 = "";
	foreach $key(sort {$a<=>$b} keys %financiamiento_detalle){
		$count++;
		my @detalle = @{$financiamiento_detalle{$key}};
		$detail1 .= $detail;
		for (my $i=0;$i<=$#detalle;$i++){
			$detail1 =~ s/{$campos_d[$i]}/$detalle[$i]/g;
			$detail1 =~ s/{count}/$count/g;	
		}
	}
	for (my $i=0;$i<=$#financiamiento;$i++){
		$master   =~ s/{$campos[$i]}/$financiamiento[$i]/g;
		$detail_h =~ s/{rowset}/$detail1/g;
	}
	print "$finan_activo~$master$detail_h";
}
#-------------------------------------------------------------------------
#-------------------------------------------------------------------------
# LEVEL 2
sub plantillas {
	@campos = split(/\,/,'i8_financiamiento_id,id,i8_contribuyente_id,i4_periodos_mora,i6_desde,i6_hasta,c2_fiesta,c2_interes,c2_multa,c2_icc,i2_cuotas,d82_mora,d82_cargo_corriente,v32_tipo_suscriptor,txt_financiamiento,c8_estado,c8_tipo_cuota,ts_update,ts_in');
	$master = "<TABLE id=plan_pago>
				    <TR>
						<TH>FINANCIAMIENTO</TH>				    
						<TH>PERIODOS</TH>
						<TH>DESDE</TH>
						<TH>HASTA</TH>
						<TH>MORA</TH>
						<TH>MENSUALIDAD</TH>
						<TH>CUOTAS</TH>
						<TH>FIESTAS</TH>	    
						<TH>INTERES</TH>
						<TH>MULTA</TH>
						<TH>MENSUALIDAD</TH>
						<TH>TIPO CUOTA</TH>
						<TH>SALIR A</TH>
				    </TR>
				    <TR>
						<TD>{i8_financiamiento_id}</TD>
						<TD>{i4_periodos_mora}</td>
						<TD>{i6_desde}</td>
						<TD>{i6_hasta}</td>
						<TD>{d82_mora}</td>		
						<TD>{d82_cargo_corriente}</td>
						<TD>{i2_cuotas}</TD>
						<TD>{c2_fiesta}</td>
						<TD>{c2_interes}</td>
						<TD>{c2_multa}</td>
						<TD>{c2_icc}</td>
						<TD>{c8_tipo_cuota}</td>
						<TD><input type=button id=IrEstado name=IrEstado value='ESTADO CUENTA' onClick=GoEstado() class=button10></td>
				    </TR>
				</TABLE>
				";
	@campos_d = split(/\,/,'dt_vencimiento,i4_periodos_mora,i6_desde,i6_hasta,d82_mora_tasas,d82_mora_fiestas,d82_mora_interes,d82_mora_multas,d82_mora_multa_minima,d82_mora_total,d82_corriente_tasas,d82_corriente_fiestas,d82_corriente_total,d82_cuota,c8_estado,dt_pago,d82_pago');
	$detail_h = "<TABLE id=plan_pago_detalle>
			<tr>
				<TH colspan=5></TH>
				<TH colspan=6>MORA</td>
				<TH colspan=3>CORRIENTE</td>
				<TH colspan=2></td>
			</tr>
			<tr>
				<TH>No</TH>
				<TH>Vencimiento</td>
				<TH>Periodos</td>
				<TH>Desde</td>
				<TH>Hasta</td>	    
				<TH>Tasas</td>
				<TH>Fiestas</td>
				<TH>Intereses</td>
				<TH>Multa</td>
				<TH>M.Mínima</td>
				<TH>Total</td>
				<TH>Tasas</td>
				<TH>Fiestas</td>
				<TH>Total</td>
				<TH>Cuota</td>
				<TH>Estado</TH>
				<TH>Pagado El</TH>
				<TH>Monto</TH>
			    <TH><input type=button id=Cuota name=Cuota value='PAGAR' onClick=PagarCuota() class=button10></TH>
			</tr>{rowset}
		    </TABLE>";
	$detail = "<TR>
			    <TD>{count}</TD>
			    <TD>{dt_vencimiento}</TD>
			    <TD>{i4_periodos_mora}</TD>
			    <TD>{i6_desde}</TD>
			    <TD>{i6_hasta}</TD>	    
				<TH>{d82_mora_tasas}</td>
				<TH>{d82_mora_fiestas}</td>
				<TH>{d82_mora_interes}</td>
				<TH>{d82_mora_multas}</td>
				<TH>{d82_mora_multa_minima}</td>
				<TH>{d82_mora_total}</td>
				<TH>{d82_corriente_tasas}</td>
				<TH>{d82_corriente_fiestas}</td>
				<TH>{d82_corriente_total}</td>
			    <TD>{d82_cuota}</TD>
			    <TD>{c8_estado}</TD>
			    <TD>{dt_pago}</TD>
			    <TD>{d82_pago}</TD>			    
			</TR>";		    
}
#-------------------------------------------------------------------------
#-------------------------------------------------------------------------
#AUXILIAR-SUBROUTINES
sub get_app_data {
    my $schema  = "app.data.xml";
    my $xml     = new XML::Simple;
    my $data    = $xml->XMLin("../xml/".$schema);
    $appid      = $data->{portal}->{app};
    $lan        = $data->{portal}->{lang};
}
sub SQL_fail {
    my ($dbh,$query,$section)= @_;
    print "SQL failed in Section $section<br>";
    print "Query: ".$query."<br>";    
    print "la clase: $clase<br>";
    exit;
}
#------------------------------------------------------------------------- 
#-------------------------------------------------------------------------