#!/usr/bin/perl -w

use SuperObject;
use Object;
use clients;
use CGI;
use HTML::Template;
use vars qw($client $typeaction $todomap $reactionmap);

print "Content-type:text/html\n\n";

my $template=HTML::Template->new(filename=>'../template/recapCRM.tmpl',die_on_bad_params=>0);

sub getLineCRM {
    my $act=shift;
    my %strF;
	my ($mday,$mon,$year,$hour,$min) =($act->{date}=~m!(..)/(..)/(....) (..):(..)!); 
    $strF{url_act}="../lib/newCRM.pl?action_crm=".$act->{uid};
    $strF{DATE}="$mday/$mon/$year<br> à $hour H $min";
    $strF{INTER}=$act->{intervenant};
    $strF{TYPEACT}=$typeaction->{$act->{typeaction}};
    $strF{COMMENT}=$act->{commentaire};
	$strF{AFAIRE}=$todomap->{map}{$act->{todo_act}};
	$strF{REACTION}=$reactionmap->{map}{$act->{reaction}};

    return \%strF;
}

sub getLineContact {
    my $contact=shift;
    my $f_map=shift;
    my %strF;
    if (defined $f_map->{$contact->{fonction}}) {
		$contact->{fonction}=$f_map->{$contact->{fonction}} ; } 
    else { 
		$contact->{fonction} = "" ;}
    
    $strF{url_new_crm}="../lib/newCRM.pl?contact=".$contact->{uid};
    $strF{NOM}=$contact->{nom}." ".$contact->{prenom};
    $strF{FONCTION}=$contact->{fonction};
    $strF{FONCTION}.=<<EOF;
		  <br>Tel:$contact->{tel}<br>
		  Fax:$contact->{fax}<br>
		  Mail:$contact->{email}<br>
EOF
		
    return \%strF;
}

# -----------------------------------
# ========  INITIALISATIONS :
my $debug=0;
my ($id,$uid,$name);
my $query=new CGI;

if(( $query->param('h')) || ( $query->param('help'))) 
                        { &usage(); exit 0; }
if ( $query->param('o'))    { $output=$query->param('o'); } else { $output=""; }
if ( $query->param('uid'))  { $uid=$query->param('uid'); }

my ($DBHOST,$DBNAME,$DBUSER,$DBPWD)=qw(localhost pimengest pimengest pimengest);
'SuperObject'->initConnect($DBHOST,$DBNAME,$DBUSER,$DBPWD) || die 'Can t connect !';

my $actCRM=new action_crm;
my $typeaction=new typeaction;
my $typesociete=new typesociete;
my $client=new societe;
my $contact=new contact;
my $fonction=new fonction;
my $intervenant=new intervenant;
$todomap=new todo_act;
$reactionmap=new reaction;

$todomap->map('uid','nom');
$reactionmap->map('uid','nom');
$intervenant->map('uid','nom || \' \' || prenom');
$typeaction->map('uid','nom');
$typesociete->map('uid','nom');
$fonction->map('uid','nom');

my @bag_contact=@{'contact'->Select(" where societe=$uid",["uid","nom","prenom","fonction","tel","fax","mail"])};

$client->{name}=$client->{name}."*"; # pour rechercher dans les héritant
$client->loadByUid($uid);
# on ré-écrit certains champs :
$client->{typesociete}=$typesociete->{map}{$client->{typesociete}} || '---';
if ($client->{capital} eq '0') { $client->{capital}='----'; }

# ========= FIN INITIALISATION--------


my @luidCont;
my @tabContact; # contient une liste de ref de hash [ {nom=>'nom',...},{nom=>'nom',...},...]
my @todoBag;

# ------------ Boucle sur les contacts de la societe
for my $cont (@bag_contact) { 

    # Enregistrement des uid de contact :
    push @luidCont,$cont->{uid};
    
    # Chargement des données du contact :
    $ref_cont=&getLineContact($cont,$fonction->{map});
    

    # ------- boucle sur les actions CRM
    my @bag_actCRM=@{'action_crm'->Select(" where contact=".$cont->{uid}." and date<date('now') order by date DESC")};
    my @tabAct;     # contient une liste de ref de hash [ {intervenant=>'intervenant',...},..]
    for my $act (@bag_actCRM) {
	$act->{intervenant}=$intervenant->{map}{$act->{intervenant}} || '----';
	push @tabAct,&getLineCRM($act,$typeaction->{map});
    } # ------fin boucle

    $ref_cont->{ACT}=\@tabAct;
    push @tabContact,$ref_cont;

} # --------- Fin Boucle Contact


# =========== TODO ============= :
if ($#luidCont<0) {
	$luidCont[0]="select contact.uid from contact where societe=$uid";
}
my @bag_actCRM=@{'action_crm'->Select(" where contact in (".join(',',@luidCont).") and date>=date('now') order by date DESC")};

if ($#bag_actCRM>=0) {
    for my $act (@bag_actCRM) {
	$contact->loadByUid($act->{contact});
	$act->{intervenant}=$intervenant->{map}{$act->{intervenant}} || '----';
	$ref_cont = &getLineContact($contact,$fonction->{map});
	$ref_act  = &getLineCRM($act,$typeaction->{map});
	for my $key (keys(%$ref_act)) { $ref_cont->{$key}=$ref_act->{$key}; }
	push @todoBag,$ref_cont;
    }
} # ----------- Fin TODO



# Chargement :
$template->param(url_new_contact=>"../admin/rowEdit.php?table=contact&societe=".$client->{uid});
$template->param("url_societe"=>"../admin/rowEdit.php?table=societe&uid=".$client->{uid});
$template->param($client);
$template->param(CONTACT=>\@tabContact);
$template->param(TODO_ACT=>\@todoBag);

# Affichage :
print $template->output();

