#!/usr/bin/perl -w

BEGIN {
    push @INC,"/var/www/pimengest/gestion/lib";
}

use strict;
use PgCharge;
use HTML::Template;

sub usage {
    print "usage:\n

";
} 

sub round{
	my($l_arg1,$l_scale)=@_;
	my $sign=1;
	if ($l_arg1<0) { $l_arg1=-$l_arg1; $sign=-1 ;}
	return 0 if ($l_arg1 == 0);
	my($l_num1,$l_num2) = 0;
	$l_num1 = 10**$l_scale * $l_arg1;
	$l_num2 = int($l_num1);
	$l_num2 = $l_num2 +1 if ($l_num1 - $l_num2 >= 0.5);
	$l_num1 =  $l_num2/10**$l_scale;
	return $l_num1*$sign; 
}

sub getArgs {
    my @args=@_;
    my $oldKey="";
    my %opts=();
    my $el;
    for $el (@args) {
		if ($el=~/^-/) {
			$el=~s/-+//g;
			$opts{$el}="";
			$oldKey=$el;
		}
		else {
			$opts{$oldKey}=$el;
		}
    }
    return %opts;
}

my %opts;
my %tags;
my $debug=0;
my $where="";
my $entete="";

my @availTags=qw(HTE LIGNES ENTETE ADRESSE TVA MTTVA DATEECH TTCE DESCR TTCF DATEEMI NO ); 
for my $tag (@availTags) {	$tags{$tag}="COUCOU";}

%opts=getArgs(@ARGV);

if (exists $opts{help}) {
    &usage();
    exit;
}
if (exists $opts{d}) {
    $debug=1;
}

if (exists $opts{id}) {
	$where="where id='".$opts{id}."'";
}

if (exists $opts{uid}) {
	$where="where uid=".$opts{uid};
}

if (exists $opts{where}) {
	$where="where ".$opts{where};
}

if (exists $opts{uid} && exists $opts{id}) { die "Only one param in 'uid','id' or 'where' should be given !\n"; }
if (exists $opts{where} && exists $opts{id}) { die "Only one param in 'uid','id' or 'where' should be given !\n"; }
if (exists $opts{where} && exists $opts{uid}) { die "Only one param in 'uid','id' or 'where' should be given !\n"; }



#============ Main ===============#
my $liste=PgCharge->new(qw( localhost pimengest pimengest pimengest));

$liste->load("devis",$where,qw( uid client id dateemission montantht montanttc devise dateecheance description));
$liste->load("devise","where abbrev='FRF'","uid","nbeuros");
#$liste->printCsv("factures",'|');


my @preLatex;
open PL,"<preLatex.tex";
@preLatex=<PL>;
close PL;

die "no devise ! $!" if ($#{@{$liste->{devise}}}<0);
print "devise : ".$liste->{devise}->[0]->{nbeuros}."\n" if ($debug);

my $uidFranc=$liste->{devise}->[0]->{uid};


if (exists $opts{entete}) {
	$liste->load("maboite","",qw(uid logo adr1 adr2 typesociete cp ville tel email headerdoc fax capital siret uetva ));
	die "no boite found ! $!" if ($#{@{$liste->{maboite}}}<0);

	my %data=%{$liste->{maboite}->[0]};

	$liste->load("typesociete","where uid=".$data{typesociete},"nom");
	die "no boite found ! $!" if ($#{@{$liste->{maboite}}}<0);
	$data{typesociete}=$liste->{typesociete}[0]{nom};

	my $tmplEntete=HTML::Template->new(filename=>"/var/www/pimengest/gestion/template/enteteFact.tmpl",die_on_bad_params=>0);
	$tmplEntete->param(\%data);
	$entete=$tmplEntete->output();
} else {
	$entete="";
}

my $tmplFact=HTML::Template->new(filename=>"/var/www/pimengest/gestion/template/preLatexDevis.tex",die_on_bad_params=>0);

my $rh_fact=$liste->{devis}[0];
# Recupération client :
$liste->load("client","where uid=".$rh_fact->{client},qw( uid nom adr1 adr2 cp ville ));
my $client=$liste->{client}[0];
$tags{ADRESSE}=$client->{nom}.'\\\\'.$client->{adr1}.'~'.$client->{adr2}.'\\\\'.$client->{cp}.'~'.$client->{ville}.'\\\\';
# Remplissage :
$tags{ENTETE}=$entete;
$tags{DESCR}=$rh_fact->{description};
$tags{HTE}=$rh_fact->{montantht};$tags{HTE}=$tags{HTE}/6.55957 if ($rh_fact->{devise}==$uidFranc);$tags{HTE}=round($tags{HTE},2);
$tags{TTCE}=$rh_fact->{montanttc};$tags{TTCE}=$tags{TTCE}/6.55957 if ($rh_fact->{devise}==$uidFranc);$tags{TTCE}=round($tags{TTCE},2);
$tags{HTF}=$rh_fact->{montantht};$tags{HTF}=$tags{HTF}*6.55957 if ($rh_fact->{devise}!=$uidFranc);$tags{HTF}=round($tags{HTF},2);
$tags{TTCF}=$rh_fact->{montanttc};$tags{TTCF}=$tags{TTCF}*6.55957 if ($rh_fact->{devise}!=$uidFranc);$tags{TTCF}=round($tags{TTCF},2);

$tags{MTTVA}=round($tags{TTCE}-$tags{HTE},2);
$tags{TVA}="19,6\\%";
$tags{DATEEMI}=$rh_fact->{dateemission};
$tags{DATEECH}=$rh_fact->{dateecheance};

$tags{NO}=$rh_fact->{id};

$tmplFact->param(\%tags);
print $tmplFact->output();



