#!/usr/bin/perl

#############################################################################################
# DŽfinition des librairie systéme utilisé par le script.                                   #
use CGI;                                                                                    #
use CGI::Carp qw(fatalsToBrowser);                                                          #
use DBI;                                                                                    #
#############################################################################################
# Définition des librairie définit pour le projet utilisé par le script.                    #
require "./look.pm";                                                                        #
require "./data.pm";                                                                        #
#############################################################################################
$query = new CGI;                                                                           #
#############################################################################################
# Connection ˆ la base de données.                                                          #
$dbh = DBI->connect( $main::db_base , $main::db_user, $main::db_pass ) || die $DBI::errstr; #
#############################################################################################
# Variable contenant les emails de réception des commandes.                                 #
$MAIL_TO = q'alto@naostech.fr,commande@mafma.com';                                          #
#$MAIL_TO = q'alto@naosnet.net';                                                             #
#############################################################################################
# Début de la page html.                                                                    #
&html_begin;                                                                                #
#############################################################################################
# Format de texte ˆ envoyé par email.                                                       #
# MAIL : est le format permettant d'envoyer les coordonnées de l'acheteur.                  #
format MAIL =
Bon de commande:
+---------------------------------------------------------------------------------+

Nom                  : @<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
$Nom
Adresse email        : @<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
$Email
Adresse de livraison : @<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
$Adresse
Code postal          : @<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
$CP
Ville                : @<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
$Ville
Pays                 : @<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
$Pays
8 premier digit CB   : @<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
$FirstDigit
8 dernier digit CB   : @<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
$LastDigit
Date de validité     : @<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
$DateValidite
+---------------------------------------------------------------------------------+

Référence(s) commandée(s) :
+------------+---------------+----------+----------------+
| Code       | Prix Unitaire | Quantité | Prix Total     |
+------------+---------------+----------+----------------+
.
# MAIL2 : est le format permettant d'envoyer les commandes de l'acheteur.                   #
format MAIL2 =
| @<<<<<<<<< | @<<<<<<<<<<<< | @<<<<<<< | @<<<<<<<<<<<<< |
$Code $PrixFF $qty $SousTotalFF
+------------+---------------+----------+----------------+
.
# Ouverture du fichier permettant d'envoyer le mail de commande.                            #
open( MAIL, "|sendmail -t");                                                                #
print MAIL << "EOT";                                                                        #
From:nobody
Subject: Bon de commande.
To: $MAIL_TO

EOT
#############################################################################################
# Récupération des variables passées par le CGI.                                            #
@pairs = split( /&/, $query->query_string );                                                #	
foreach $pair(@pairs) {                                                                     #
	my($name,$value) = split( /=/, $pair );                                             #
	$name  =~ tr/+/ /;                                                                  #
	$name  =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;                        #
	$value =~ tr/+/ /;                                                                  #
	$value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;                        #
	                                                                                    #
	my($param,$code) = split( /-/, $name );                                             #
	if ($param eq "cod")                                                                #
	{                                                                                   #
	    push @codes, $value;                                                            #
	}                                                                                   # 
	if ($param eq "qty")                                                                # 
	{                                                                                   #
	    push @quantites, $value;                                                        #
	}                                                                                   #                                                                                  #
	if ($param eq 'Nom') { $Nom = $value; }                                             #
	if ($param eq 'Adresse') { $Adresse = $value; }                                     #
	if ($param eq 'Ville') { $Ville = $value; }                                         #
	if ($param eq 'CP') { $CP = $value; }                                               #
	if ($param eq 'Pays') { $Pays = $value; }                                           #
	if ($param eq 'Email') { $Email = $value; }                                         #
	if ($param eq 'FirstDigit') { $FirstDigit = $value; }                               #
	if ($param eq 'LastDigit') { $LastDigit = $value; }                                #
	if ($param eq 'DateValidite') { $DateValidite = $value; }                           #
}                                                                                           #
write MAIL;                                                                                 #
print << "EOT";                                                                             #
<center>
<FONT SIZE="5" COLOR="#FFFFFF"><B>Vous avez command&eacute; les produits suivants.</B></FONT>
<BR><FONT SIZE="3" COLOR="#FFFFFF">Vous recevrez un email qui confirmera votre commande.</FONT>
<BR><FONT SIZE="5" COLOR="#FFFF66"><B>You ordered the following items :</B></FONT>
<BR><FONT SIZE="3" COLOR="#FFFF66">You'll receive an email to confirm your order.</FONT>
<BR>
<TABLE BORDER="1" CELLSPACING="1" CELLPADDING="1" BGCOLOR="#FFEBCD">
    <TR>
	   <TD ALIGN="CENTER" VALIGN="MIDDLE">
	   <FONT SIZE="1" COLOR="#004080" FACE="Arial">Code</FONT><BR>
	   <FONT SIZE="1" COLOR="#800000"><B><EM>Code</EM><B></FONT>
	   </TD>
	   <TD ALIGN="CENTER" VALIGN="MIDDLE">
	   <FONT SIZE="1" COLOR="#004080" FACE="Arial"><B>Echelle</B></FONT><BR>
	   <FONT SIZE="1" COLOR="#800000"><B><EM>Scale</EM><B></FONT>
	   </TD>
	   <TD ALIGN="CENTER" VALIGN="MIDDLE">
	   <FONT SIZE="1" COLOR="#004080" FACE="Arial"><B>Fabricant</B></FONT><BR>
	   <FONT SIZE="1" COLOR="#800000" FACE="Arial"><B><EM>Manufacturer</EM></B></FONT>
	   </TD>
	   <TD ALIGN="CENTER" VALIGN="MIDDLE">
	   <FONT SIZE="1" COLOR="#004080" FACE="Arial">Description</FONT><BR>
	   <FONT SIZE="1" COLOR="#800000" FACE="Arial"><B><EM>Description</EM></B></FONT>
	   </TD>
	   <TD ALIGN="CENTER" VALIGN="MIDDLE">
	   <FONT SIZE="1" COLOR="#004080" FACE="Arial"><B>Prix unitaires (FRF)</B></FONT><BR>
	   <FONT SIZE="1" COLOR="#800000" FACE="Arial"><B><EM>Unit prices (FRF)</EM></B></FONT>
	   </TD>
	   <TD ALIGN="CENTER" VALIGN="MIDDLE">
	   <FONT SIZE="1" COLOR="#004080" FACE="Arial"><B>Prix unitaires (EU)</B></FONT><BR>
	   <FONT SIZE="1" COLOR="#800000" FACE="Arial"><B><EM>Unit prices (EU)</EM></B></FONT>
	   </TD>
	   <TD ALIGN="CENTER" VALIGN="MIDDLE">
	   <FONT SIZE="1" COLOR="#004080" FACE="Arial">Qt&eacute;</FONT><BR>
	   <FONT SIZE="1" COLOR="#800000" FACE="Arial"><B><EM>qty</EM></B></FONT>
	   </TD>
	   <TD ALIGN="CENTER" VALIGN="MIDDLE">
	   <FONT SIZE="1" COLOR="#004080" FACE="Arial"><B>Sous total (FRF)</B></FONT><BR>
	   <FONT SIZE="1" COLOR="#800000" FACE="Arial"><B><EM>Sub total (FRF)</EM></B></FONT>
	   </TD>
	   <TD ALIGN="CENTER" VALIGN="MIDDLE">
	   <FONT SIZE="1" COLOR="#004080" FACE="Arial"><B>Sous total (EU)</B></FONT><BR>
	   <FONT SIZE="1" COLOR="#800000" FACE="Arial"><B><EM>Sub total (EU)</EM></B></FONT>
	   </TD>
    </TR>
EOT
$QUERY_GETDATA  = "select Echelle, Fabricant, Description, Prix from Produits " ;         #
$QUERY_GETDATA .= "where CodeProduit=?" ;                                                 #
$sth = $dbh->prepare( $QUERY_GETDATA ) || die $dbh->errstr;                               #
###########################################################################################
# Traitement des donnŽes.                                                                 #
$total = 0;                                                                               #
$i = 0;                                                                                   #
while (@codes)                                                                            #
{                                                                                         #
	$Code = shift(@codes);                                                            #
	$qty = shift(@quantites);                                                         #
	$qty = &data_normalize_qty($qty);                                                 #
	$rv = $sth->execute( $Code ) || die $dbh->errstr;                                 #
	($Echelle, $Fabricant, $Description, $Prix) = $sth->fetchrow_array;               #
	$PrixFF = sprintf "%2.2f FRF", $Prix;                                              #
	$PrixEU = sprintf "%2.2f EU", $Prix/$main::euro;                                  #
	$SousTotalFF = sprintf "%2.2f FRF", $Prix*$qty;	# Sous total HT en FRF.            #
	$SousTotalEU = sprintf "%2.2f EU", $Prix*$qty/$main::euro; # Sous total HT en EU. #
	$Echelle =  sprintf "1/%2d eme", $Echelle; # Formatage du champ echelle.          #
	select(MAIL);    # Permet de renvoyer STDOUT vers le descripteur de fichier MAIL. #
	$~ = "MAIL2";    # On selection le formattage MAIL2 des donnŽes.                  #
	write;           # On Žcrit la ligne.                                             #
	select(STDOUT);  # Puis on reselectionne STDOUT.                                  #
	print << "EOT";                                                                   #
	<TR>
	    <TD ALIGN="LEFT" VALIGN="MIDDLE">
	    <FONT SIZE="1" COLOR="#004080" FACE="Arial">$Code</FONT>
	    </TD>
	    <TD ALIGN="LEFT" VALIGN="MIDDLE">
	    <FONT SIZE="1" COLOR="#004080" FACE="Arial">$Echelle</FONT>
	    </TD>
	    <TD ALIGN="LEFT" VALIGN="MIDDLE">
	    <FONT SIZE="1" COLOR="#004080" FACE="Arial">$Fabricant</FONT>
	    </TD>
	    <TD ALIGN="LEFT" VALIGN="MIDDLE">
	    <FONT SIZE="1" COLOR="#004080" FACE="Arial">$Description</FONT>
	    </TD>
	    <TD ALIGN="RIGHT" VALIGN="MIDDLE" NOWRAP>
	    <FONT SIZE="1" COLOR="#004080" FACE="Arial">$PrixFF</FONT>
	    </TD>
	    <TD ALIGN="RIGHT" VALIGN="MIDDLE" NOWRAP>
	    <FONT SIZE="1" COLOR="#004080" FACE="Arial">$PrixEU</FONT>
	    </TD>
	    <TD ALIGN="RIGHT" VALIGN="MIDDLE" NOWRAP>
	    <FONT SIZE="1" COLOR="#004080" FACE="Arial">$qty</FONT>
	    </TD>
	    <TD ALIGN="RIGHT" VALIGN="MIDDLE" NOWRAP>
	    <FONT SIZE="1" COLOR="#004080" FACE="Arial">$SousTotalFF</FONT>
	    </TD>
	    <TD ALIGN="RIGHT" VALIGN="MIDDLE" NOWRAP>
	    <FONT SIZE="1" COLOR="#004080" FACE="Arial">$SousTotalEU</FONT>
	    </TD>
	</TR>
EOT
$total += $Prix*$qty;                                                                     #
}                                                                                         #
$totalPrixFFHT = sprintf "%2.2f FRF", $total ;                                             #
$totalPrixEUHT = sprintf "%2.2f EU", $total/$main::euro;                                  #
$tvaFF = sprintf "%2.2f FRF", $total*0.206 ;                                               #
$tvaEU = sprintf "%2.2f EU", $total*0.206/$main::euro ;                                   #
$totalPrixFFTTC = sprintf "%2.2f FRF", $total*1.206 ;                                      #
$totalPrixEUTTC = sprintf "%2.2f EU", $total*1.206/$main::euro ;                          #
$FraisPortCeeFF = 50 ;                                                                    #
$FraisPortCeeFF = sprintf "%2.2f FRF",  $FraisPortCeeFF ;                                  #
$FraisPortHorsCeeFF = 90 ;                                                                #
$FraisPortHorsCeeFF = sprintf "%2.2f FRF",  $FraisPortHorsCeeFF ;                          #
$FraisPortCeeEU = sprintf "%2.2f EU",  $FraisPortCeeFF/$main::euro ;                      #
$FraisPortHorsCeeEU = sprintf "%2.2f EU",  $FraisPortHorsCeeFF/$main::euro ;              #
print MAIL << "EOT";                                                                      #

Total de la command H.T. en Francs : $totalPrixFFHT
Total de la command H.T. en Euro : $totalPrixEUHT
TVA en Francs : $tvaFF
TVA en Euro : $tvaEU
Total de la command T.T.C. en Francs : $totalPrixFFTTC
Total de la command T.T.C. en Euro : $totalPrixEUTTC

C'est sympa non ??
-----------------:))
EOT
print << "EOT";                                                                           #
<TR BGCOLOR="#379815">
    <TD ALIGN="RIGHT" VALIGN="MIDDLE" COLSPAN="10">
    <TABLE BORDER="1" CELLSPACING="1" CELLPADDING="1" BGCOLOR="#FFEBCD">
	<TR>
	    <TD ALIGN="RIGHT" VALIGN="MIDDLE">
	    <FONT SIZE="1" COLOR="#004080" FACE="Arial">Prix Total</FONT><BR>
	    <FONT SIZE="1" COLOR="#800000" FACE="Arial">Total Price</FONT>
	    </TD>
	    <TD ALIGN="CENTER" VALIGN="MIDDLE">
	    <FONT SIZE="1" COLOR="#004080" FACE="Arial">$totalPrixFFHT</FONT>
	    </TD>
	    <TD ALIGN="RIGHT" VALIGN="MIDDLE">
	    <FONT SIZE="1" COLOR="#004080" FACE="Arial">$totalPrixEUHT</FONT>
	    </TD>
	</TR>
    </TABLE>
    </TD>
</TR>
</TABLE>
<TABLE BORDER="1" CELLSPACING="1" CELLPADDING="1" BGCOLOR="#379815">
    <TR>
	<TD>
	<FONT SIZE="2" COLOR="#FFFFFF"><B>Commentaires</B></FONT>
	<BR><FONT SIZE="2" COLOR="#FFFF66"><B>Comments</B></FONT>
	</TD>
	<TD>
	<FONT SIZE="2" COLOR="#FFFFFF"><B>T.V.A. FRF</B></FONT>
	<BR><FONT SIZE="2" COLOR="#FFFF66"><B>V.A.T. FRF</B></FONT>
	</TD>
	<TD>
	<FONT SIZE="2" COLOR="#FFFFFF"><B>T.V.A. EU</B></FONT>
	<BR><FONT SIZE="2" COLOR="#FFFF66"><B>V.A.T. EU</B></FONT>
	</TD>
    </TR>
    <TR>
	<TD ALIGN="RIGHT" VALIGN="MIDDLE">
	<FONT SIZE="2" COLOR="#FFFFFF"><B>Si vous &ecirc;tes dans un pays de la C.E.E. vous devrez acquitter la T.V.A.</B></FONT>
	<BR><FONT SIZE="2" COLOR="#FFFF66"><B>If you here in the E.E.C. country, you have to pay the V.A.T.</B></FONT>
	</TD>
	<TD>
	<FONT SIZE="2" COLOR="#FFFFFF"><B>$tvaFF</B></FONT>
	</TD>
	<TD>
	<FONT SIZE="2" COLOR="#FFFFFF"><B>$tvaEU</B></FONT>
	</TD>
    </TR>
    <TR>
	<TD></TD>
	<TD>
	<FONT SIZE="2" COLOR="#FFFFFF"><B>Frais de port FRF</B></FONT>
	<BR><FONT SIZE="2" COLOR="#FFFF66"><B>Shipment fees FRF</B></FONT>
	</TD>
	<TD>
	<FONT SIZE="2" COLOR="#FFFFFF"><B>Frais de port. EU</B></FONT>
	<BR><FONT SIZE="2" COLOR="#FFFF66"><B>Shipment fees EU</B></FONT>
	</TD>
    </TR>
    <TR>
	<TD ALIGN="RIGHT" VALIGN="MIDDLE">
	<FONT SIZE="2" COLOR="#FFFFFF"><B>Pays de la C.E.E.</B></FONT>
	<BR><FONT SIZE="2" COLOR="#FFFF66"><B>Inside the E.E.C.</B></FONT>
	</TD>
	<TD>
	<FONT SIZE="2" COLOR="#FFFFFF"><B>$FraisPortCeeFF</B></FONT>
	</TD>
	<TD>
	<FONT SIZE="2" COLOR="#FFFFFF"><B>$FraisPortCeeEU</B></FONT>
	</TD>
    </TR>
    <TR>
	<TD ALIGN="RIGHT" VALIGN="MIDDLE">
	<FONT SIZE="2" COLOR="#FFFFFF"><B>Pays hors de la C.E.E.</B></FONT>
	<BR><FONT SIZE="2" COLOR="#FFFF66"><B>Outside E.E.C. country</B></FONT>
	</TD>
	<TD>
	<FONT SIZE="2" COLOR="#FFFFFF"><B>$FraisPortHorsCeeFF</B></FONT>
	</TD>
	<TD>
	<FONT SIZE="2" COLOR="#FFFFFF"><B>$FraisPortHorsCeeEU</B></FONT>
	</TD>
    </TR>
    <TR>
	<TD ALIGN="RIGHT" VALIGN="MIDDLE" COLSPAN="3">
	<FONT SIZE="2" COLOR="#FFFFFF"><B>Si vous passez plus d'une commande dans la m&ecirc;me journ&eacute;e, les frais de port 
	ne vous serons comptabilis&eacute;s qu'une seule fois.</B></FONT>
	<BR><FONT SIZE="2" COLOR="#FFFF66"><B>If you place more than one order per day, 
	you'll have to pay just one shipment fee.</B></FONT>
	</TD>
    </TR>
</TABLE>
EOT
&html_end;                                                                             #
close(MAIL);                                                                           #
$dbh->disconnect;                                                                      #
exit;                                                                                  #
########################################################################################
