#!/usr/bin/perl $SHOP_DATAS_DIR = 'shop_datas'; # Nom du sous répertoire qui contiendra la configuration de la boutique : CHMOD 777 ! ################################################################################## ## Script : WEBSHOP-fr ## ## Version : 4.3 ## ## Première version le : 29.03.2002 ## ## Dernière modification : 06.03.2004 ## ## Auteur : Guillaume BRIERE ## ## Site : http://www.webshop-fr.com ## ## Démo : http://www.webshop-fr.com/demo/ ## ## Démo de l'Administration : http://www.webshop-fr.com/demo/demo-admin.cgi ## ## FAQ : http://www.webshop-fr.com/faq/ ## ################################################################################## ## N?de dépôt : 00034090 ## ## http://www.copyrightdepot.com/rep26/00034090.htm ## ################################################################################## ## IL EST STRICTEMENT INTERDIT DE DISTRIBUER CE LOGICIEL DE QUELQUES MANIERES ## ## QUE CE SOIT ! ## ################################################################################## ## IL EST STRICTEMENT INTERDIT DE MODIFIER LES LIGNES CI-DESSOUS SANS LE ## ## CONSENTEMENT DE L'AUTEUR ! ## ################################################################################## &recup_conf('CONF','CONFIG.dat'); $DOMAIN = $CONF{'VAR_DOMAIN'}; $script = ($ENV{'REQUEST_URI'} || $ENV{'SCRIPT_NAME'}); $script =~ s/\?.*//gs; $site_base = 'http://'.$DOMAIN; $CGI = $site_base.$script; read(STDIN,$temp,$ENV{'CONTENT_LENGTH'}); {$temp = "$temp\&$ENV{'QUERY_STRING'}";} @pairs=split(/&/,$temp); foreach $item(@pairs) { ($mots,$content)=split(/=/,$item,2); $content=~tr/+/ /; $content=~s/%(..)/pack("c",hex($1))/ge; $content =~ s/\/>/g; $content{$mots}="$content"; $Form{$mots} .= "\0" if (defined($Form{$mots})); $Form{$mots} .= "$content"; } $lang = $Form{'lang'}; if ((!$lang) || ($lang > $CONF{VAR_NB_LANGUES})) { $lang = 1; } $fic_lang = 'LANG_'.$lang.'.dat'; if (!-e "$SHOP_DATAS_DIR/$fic_lang") { $fic_lang = 'LANG_1.dat'; $lang = 1; } &recup_conf('LANG',"$fic_lang"); $col_nom = 'nom'.$lang; $col_desc = 'description'.$lang; $col_options = 'options_'.$lang; $partner = $Form{'partner'}; if (!$Form{'partner'}) { $partner = 0; } $num_dev = $Form{'devise'}; if (!$Form{'devise'}) { $num_dev = 0; } if ($num_dev > $CONF{VEN_NB_DEV}) { $num_dev = 0; } $query_rev = ''; $query_lang = ''; $query_dev = ''; $query_partner = ''; if ($lang != 1) { $query_lang = '&lang='.$lang; } if ($num_dev != 0) { $query_dev = '&devise='.$num_dev; } use DBI; $dbh = DBI->connect("DBI:mysql:$CONF{MYSQL_DATABASE}:$CONF{MYSQL_HOSTNAME}", $CONF{MYSQL_USER}, $CONF{MYSQL_PASSWORD}); if ($partner > 0) { $sel_part = $dbh->prepare("SELECT url_site,logo,texte_page,couleur_fond,image_fond,police_textes_1,taille_textes_1,couleur_textes_1,police_textes_2,taille_textes_2,couleur_textes_2,devise FROM $CONF{MYSQL_TAB_AFFILIATION} WHERE id='$partner' AND validation='1'"); $sel_part->execute; $exist_partner = $sel_part->rows; if ($exist_partner == 1) { $pt = 'pt'; ($url_site,$logo,$texte_page,$couleur_fond,$image_fond,$police_textes_1,$taille_textes_1,$couleur_textes_1,$police_textes_2,$taille_textes_2,$couleur_textes_2,$dev_affilie) = $sel_part->fetchrow(); $style = "FONT-FACE: $police_textes_2; COLOR: $couleur_textes_2; FONT-SIZE: $taille_textes_2$pt"; $num_dev = $dev_affilie; $query_partner = '&partner='.$partner; if ($num_dev != 0) { $query_dev = '&devise='.$num_dev; } } $sel_part->finish; } if (($Form{'rev'}) && ($CONF{REV_AUTORISE} == 1)) { $rev = $Form{'rev'}; $sel_rev = $dbh->prepare("SELECT pourcent_gain,devise FROM $CONF{MYSQL_TAB_AFFILIATION} WHERE code_rev='$rev' AND validation='1' AND total_ttc>=$CONF{REV_SEUIL_AUTORISE}"); $sel_rev->execute; $exist_rev = $sel_rev->rows; if ($exist_rev == 1) { ($pourcent_reduc_rev,$num_dev_rev) = $sel_rev->fetchrow(); $num_dev = $num_dev_rev; $query_rev = "&rev=$rev"; $exist_partner = 0; $query_partner = ''; if ($num_dev != 0) { $query_dev = '&devise='.$num_dev; } } $sel_rev->finish; } $query = $query_lang.$query_partner.$query_dev.$query_rev; if ($Form{'ACT'} eq 'category') { &affiche_cat; } elsif ($Form{'ACT'} eq 'OUT') { &out; } elsif ($Form{'ACT'} eq 'news') { &news; } elsif ($Form{'ACT'} eq 'offer') { &offer; } elsif ($Form{'ACT'} eq 'bestsaler') { &bestsaler; } elsif ($Form{'ACT'} eq 'search') { &search; } elsif ($Form{'ACT'} eq 'alpha') { α } elsif ($Form{'ACT'} eq 'suivi') { &suivi; } elsif ($Form{'ACT'} eq 'cart') { &cart; } elsif ($Form{'ACT'} eq 'purchase') { ℴ } elsif ($Form{'ACT'} eq 'pay') { &pay; } else { &home; } ## AFFICHAGE DE LA PAGE D'ACCUEIL ## sub home { ## ON COMPTE LE NOMBRE DE RAYONS ET ARTICLES : ## $sth_nb_art = $dbh->prepare("SELECT id FROM $CONF{MYSQL_TAB_ARTICLES}"); $sth_nb_art->execute; $nb_art = $sth_nb_art->rows; $sth_nb_art->finish; $sth_nb_cat = $dbh->prepare("SELECT id FROM $CONF{MYSQL_TAB_RAYONS}"); $sth_nb_cat->execute; $nb_cat = $sth_nb_cat->rows; $sth_nb_cat->finish; $sth_rayons = $dbh->prepare("SELECT id,$col_nom,image,$col_desc,nb_art,nb_sous_cat_aff FROM $CONF{MYSQL_TAB_RAYONS} WHERE id_cat_sup=0 ORDER BY $col_nom"); $sth_rayons->execute; ## POUR CHAQUE CAT MERE ON AFFICHE : ## $i = 0; while (($id,$nom_rayon,$image,$description,$nb_art_cat,$nb_sous_cat_max)=$sth_rayons->fetchrow()) { $n = 0; $i++; $desc[$i] = $description; $aff_nom_cat[$i] = "$nom_rayon"; $aff_img_cat[$i] = ""; $nombre_art[$i] = $nb_art_cat; $sth_sous_cat = $dbh->prepare("SELECT id,$col_nom FROM $CONF{MYSQL_TAB_RAYONS} WHERE id_cat_sup=$id ORDER BY $col_nom LIMIT $nb_sous_cat_max"); $sth_sous_cat->execute; $nb_sous = $sth_sous_cat->rows; while (($id_sous_cat,$nom_sous_cat)=$sth_sous_cat->fetchrow()) { $n++; $aff_sous_cat[$i] .= "$nom_sous_cat"; if ($n == $nb_sous) { $aff_sous_cat[$i] .= ' ...'; } else { $aff_sous_cat[$i] .= $CONF{AFF_SEP_SOUSCAT}; } } $sth_sous_cat->finish; } $sth_rayons->finish; $dbh->disconnect; &recup_conf('LANG',"$fic_lang"); $page_rayons = $CONF{'DIR_HTML_ROOT'}.'/rayons.html'; open(PAGEHTML, "<$page_rayons"); while (){ $aff_ray .= $_; } close(PAGEHTML); foreach $i(1..$i) { if ($desc[$i] eq '') { $desc[$i] = ' '; } $affiche_ray = $aff_ray; $affiche_ray =~ s/####NOM_RAYON####/$aff_nom_cat[$i]/; $affiche_ray =~ s/####NB_ARTICLES####/$nombre_art[$i] $LANG{MOT_ARTICLES}/; $affiche_ray =~ s/####DESCRIPTION####/$desc[$i]/; $affiche_ray =~ s/####IMAGE####/$aff_img_cat[$i]/; $affiche_ray =~ s/####SOUS_CATEGORIES####/$aff_sous_cat[$i]/; if ($CONF{AFF_ACCUEIL_COLS} == 1) { $aff .= $affiche_ray; } else { $aff_rubrique[$i] = $affiche_ray; } } if ($CONF{AFF_ACCUEIL_COLS} == 2) { $n_tab = sprintf ("%u",($i / 2)); $n_tab2 = $n_tab + 1; $t2 = $i - $n_tab ; $t1 = $n_tab; if ($t1 < $t2) { $n_tab = $n_tab + 1; $n_tab2 = $n_tab2 + 1; } $aff = "
"; foreach $i(1..$n_tab) { $aff .= $aff_rubrique[$i]; } $aff .= ""; foreach $i($n_tab2..$i) { $aff .= $aff_rubrique[$i]; } $aff .= "

"; } if ($CONF{AFF_ACCUEIL_COLS} == 3) { $n_tab = sprintf ("%.2f",($i / 3)); $i2 = 0; if ($n_tab =~ /^\d+\.33/) { $n_tab =~ s/(\d+)\.\d+/$1/; $n_tab++; $n_tab2 = $n_tab; $n_tab3 = $n_tab - 1; } elsif ($n_tab =~ /^\d+\.66/) { $n_tab =~ s/(\d+)\.\d+/$1/; $n_tab++; $n_tab2 = $n_tab - 1; $n_tab3 = $n_tab - 1; } else { $n_tab2 = $n_tab; $n_tab3 = $n_tab; } $aff = "
"; foreach $n_tab(1..$n_tab) { $i2++; $aff .= $aff_rubrique[$i2]; } $aff .= ""; foreach $n_tab2(1..$n_tab2) { $i2++; $aff .= $aff_rubrique[$i2]; } $aff .= ""; foreach $n_tab3(1..$n_tab3) { $i2++; $aff .= $aff_rubrique[$i2]; } $aff .= "

"; } $phrase = $LANG{'ACCUEIL_PHRASE'}; $phrase =~ s/%%%NB_ART%%%/$nb_art/; $phrase =~ s/%%%NB_CAT%%%/$nb_cat/; if (defined $Form{'search'}) { $phrase .= "\n"; open (FIC_SEARCH,"<$SHOP_DATAS_DIR/FORM_SEARCH_$lang\.dat"); while () { $phrase .= $_; } close (FIC_SEARCH); $phrase =~ s/%%%URL_SEARCH%%%/$CGI?ACT=search$query/g; $phrase =~ s/%%%STYLE%%%/$CONF{AFF_FORM_STYLE}/g; } $qw_BACK = "&BACK=home"; $qw_ACT = "ACT=home"; &aff_menu; $licence = $CONF{'VAR_LICENCE'}; @LICE = split (/-/,$licence); foreach $lic(@LICE) { $ser .= chr($lic); } $ser2 = reverse $ser; $serveur_n = $ENV{'SERVER_NAME'} || $ENV{'HTTP_HOST'}; $serveur_n =~ s/www\.//i; if ($ser2 ne $serveur_n) { $aff = "NUMERO DE LICENCE INCORRECT !!
"; open (MAIL,"|$CONF{VAR_SENDMAIL} -t"); print MAIL "To: info\@webshop-fr.com\nFrom: $CONF{ADMIN_EMAIL}\n"; print MAIL "Subject: MODIF WEBSHOP Boutique\n\n"; print MAIL "WEBSHOP BOUTIQUE, PROBLEME LICENCE :\n $site_base\n $CGI\n"; close (MAIL); } print "Content-type: text/html\n\n"; &le_cach; &affichage; exit; } ## AFFICHAGE DES ARTICLES ET RAYONS ## sub affiche_cat { $page = $Form{'page'}; if (!$page) { $page = 1; } $cat = $Form{'cat'}; &date; $sth_rayon = $dbh->prepare("SELECT $col_nom,image,$col_desc,nb_art,id_cat_sup FROM $CONF{MYSQL_TAB_RAYONS} WHERE id=$cat"); $sth_rayon->execute; ($nom_cat_act,$image,$description,$nb_art,$id_cat_sup) = $sth_rayon->fetchrow(); $aff_rayon .= "$description$CONF{AFF_SEP}\n"; $sth_sous_rayon = $dbh->prepare("SELECT id,$col_nom,image,nb_art,nb_sous_cat_aff FROM $CONF{MYSQL_TAB_RAYONS} WHERE id_cat_sup=$cat ORDER BY $col_nom"); $sth_sous_rayon->execute; $m = 0; while (($id_sous_cat,$nom_sous_cat,$puce_img,$nb_art_sous,$nb_sous_cat_aff) = $sth_sous_rayon->fetchrow()) { $m++; $m2 = 0; $puce2 = qq~~; if ($puce_img ne $CONF{'IMG_ESP'}) { $puce2 = ""; } $aff_sous_rayon[$m] = "$puce2 $nom_sous_cat ($nb_art_sous)
"; $sth_sous_cat = $dbh->prepare("SELECT id,$col_nom FROM $CONF{MYSQL_TAB_RAYONS} WHERE id_cat_sup=$id_sous_cat ORDER BY $col_nom LIMIT $nb_sous_cat_aff"); $sth_sous_cat->execute; $nb_sous = $sth_sous_cat->rows; if ($nb_sous > 0) {$aff_sous_rayon[$m] .= "("; } while (($id_sous_sous_cat,$nom_sous_sous_cat)=$sth_sous_cat->fetchrow()) { $m2++; $aff_sous_rayon[$m] .= "$nom_sous_sous_cat"; if ($m2 == $nb_sous) { $aff_sous_rayon[$m] .= ' ...)
'; } else { $aff_sous_rayon[$m] .= $CONF{AFF_SEP_SOUSCAT}; } } $sth_sous_cat->finish; } $sth_sous_rayon->finish; $affichage_sous_cat = ''; if ($m != 0) { $n_tab = sprintf ("%u",($m / 2)); $n_tab2 = $n_tab + 1; $t2 = $m - $n_tab ; $t1 = $n_tab; if ($t1 < $t2) { $n_tab = $n_tab + 1; $n_tab2 = $n_tab2 + 1; } $affichage_sous_cat = "
"; foreach $m(1..$n_tab) { $affichage_sous_cat .= "$aff_sous_rayon[$m]\n"; } $affichage_sous_cat .= ""; foreach $m($n_tab2..$m) { $affichage_sous_cat .= "$aff_sous_rayon[$m]\n"; } $affichage_sous_cat .= "
$CONF{AFF_SEP}"; } $ord = $Form{'order'}; $ord_p = 'pmin'; $ord_n = 'name'; $ord_v = 'vplus'; $ord_news = 'news_plus'; if ($ord eq 'nmin') { $ORDER = "$col_nom DESC"; } elsif ($ord eq 'pmin') { $ORDER = 'prix_ttc'; $ord_p = 'pplus'; } elsif ($ord eq 'pplus') { $ORDER = 'prix_ttc DESC'; } elsif ($ord eq 'vplus') { $ORDER = 'nb_vente DESC'; $ord_v = 'vmin'; } elsif ($ord eq 'vmin') { $ORDER = 'nb_vente'; } elsif ($ord eq 'news_plus') { $ORDER = 'id DESC'; $ord_news = 'news_min'; } elsif ($ord eq 'news_min') { $ORDER = 'id'; } else { $ord = 'name'; $ORDER = "$col_nom"; $ord_n = 'nmin'; } $page_moins = $page - 1; $debut = $page_moins * $CONF{AFF_MAX_PAR_PAGE}; $art_select = "SELECT id,$col_nom,image,$col_options,prix_ttc,$col_desc,stock,promotion,prix_promo,date_debut_promo,date_fin_promo,id_rayon FROM $CONF{MYSQL_TAB_ARTICLES} WHERE id_rayon=$cat"; $art_select2 = " ORDER BY $ORDER LIMIT $debut,$CONF{AFF_MAX_PAR_PAGE}"; $art_selection = $art_select.$art_select2; $compte_art = $dbh->prepare($art_select); $compte_art->execute; $nombre_art = $compte_art->rows; $compte_art->finish; $s = ''; if ($nombre_art > 1) { $s = 's'; } $sth_art = $dbh->prepare($art_selection); $sth_art->execute; $qw_ACT_0 = "ACT=category&cat=$cat&order=$ord"; $qw_BACK = "&BACK=category&cat=$cat&page=$page&order=$ord"; $qw_ACT = "ACT=category&cat=$cat&page=$page&order=$ord"; &aff_items; $arbo = "$LANG{MOT_ACCUEIL} "; if ($id_cat_sup != 0) { $id_cat_sup_bis = $id_cat_sup; $n_sous = 0; while ($id_cat_sup_bis != 0) { $n_sous++; $sth_arbo = $dbh->prepare("SELECT id,$col_nom,id_cat_sup FROM $CONF{MYSQL_TAB_RAYONS} WHERE id=$id_cat_sup"); $sth_arbo->execute; ($id_arbo,$nom_arbo,$id_cat_sup)=$sth_arbo->fetchrow(); $arbo[$n_sous] .= " $nom_arbo "; $sth_arbo->finish; $id_cat_sup_bis = $id_cat_sup; } for ($n_sous2 = $n_sous; $n_sous2 >= 1; $n_sous2--) { $arbo .= $arbo[$n_sous2]; } } $arbo .= " $nom_cat_act"; $sth_rayon->finish; $dbh->disconnect; $nombre_articles_in_cat = $LANG{'NOMBRE_ARTICLES_IN_CAT'}; $nombre_articles_in_cat =~ s/%%%S%%%/$s/g; $nombre_articles_in_cat =~ s/%%%NB_ART%%%/$nombre_art/g; $aff_num = ''.$deb_num.' - '.$fin_num.' '.$nombre_articles_in_cat; if ($nombre_art == 0) { $aff_num = $LANG{'NO_ITEMS_IN'}; } $aff_ord = ''; if ($nombre_art != 0) { $aff_ord = "

$LANG{CLASSER_PAR} : [$LANG{NAME}] - [$LANG{PRICE}] - "; $aff_ord .= "[$LANG{MOT_TOP_VENTE}] - [$LANG{MOT_NOUVEAUTES}]

"; } $phrase = $aff_java.$arbo; if (defined $Form{'search'}) { $phrase .= "\n"; open (FIC_SEARCH,"<$SHOP_DATAS_DIR/FORM_SEARCH_$lang\.dat"); while () { $phrase .= $_; } close (FIC_SEARCH); $phrase =~ s/%%%URL_SEARCH%%%/$CGI?ACT=search$query/g; $phrase =~ s/%%%STYLE%%%/$CONF{AFF_FORM_STYLE}/g; } $aff = $aff_rayon.$affichage_sous_cat.$aff_num.$aff_ord.$aff_articles.$nav; print "Content-type: text/html\n\n"; &aff_menu; &affichage; exit; } sub verif_lic { my ($num_lic) = @_; $ser = ''; @LICE = split (/-/,$num_lic); foreach $lic(@LICE) { $ser .= chr($lic); } $ser2 = reverse $ser; $serveur_n = $ENV{'SERVER_NAME'} || $ENV{'HTTP_HOST'}; $serveur_n =~ s/www\.//i; if ($ser2 eq $serveur_n) { return(1); } else { return (0); } } ### AFFICHAGE DES NOUVEAUTES ### sub news { $page = $Form{'page'}; if (!$page) { $page = 1; } $max_par_page = $CONF{AFF_MAX_PAR_PAGE}; $page_moins = $page - 1; $debut = $page_moins * $max_par_page; if ($max_par_page > $CONF{AFF_MAX_NEWS}) { $max_par_page = $CONF{AFF_MAX_NEWS}; } $art_select = "SELECT id,$col_nom,image,$col_options,prix_ttc,$col_desc,stock,promotion,prix_promo,date_debut_promo,date_fin_promo,id_rayon FROM $CONF{MYSQL_TAB_ARTICLES} ORDER BY id DESC LIMIT $debut,$max_par_page"; $art_num = $dbh->prepare("SELECT id FROM $CONF{MYSQL_TAB_ARTICLES} LIMIT $CONF{AFF_MAX_NEWS}"); $art_num->execute; $nombre_art = $art_num->rows; $art_num->finish; $sth_art = $dbh->prepare($art_select); $sth_art->execute; $qw_ACT_0 = "ACT=news"; $qw_BACK = "&BACK=news&page=$page"; $qw_ACT = "ACT=news&page=$page"; &date; &aff_items; $dbh->disconnect; $nombre_articles_in_news = $LANG{'NOMBRE_ARTICLES_IN_NEWS'}; $nombre_articles_in_news =~ s/%%%NB_ART%%%/$nombre_art/g; $aff_num = ''.$deb_num.' - '.$fin_num.' '.$nombre_articles_in_news; if ($nombre_art == 0) { $aff_num = ''.$LANG{'NO_ITEMS_IN'}.''; } $phrase = $aff_java."\n".$LANG{'MOT_NOUVEAUTES'}."\n"; if (defined $Form{'search'}) { $phrase .= "\n"; open (FIC_SEARCH,"<$SHOP_DATAS_DIR/FORM_SEARCH_$lang\.dat"); while () { $phrase .= $_; } close (FIC_SEARCH); $phrase =~ s/%%%URL_SEARCH%%%/$CGI?ACT=search$query/g; $phrase =~ s/%%%STYLE%%%/$CONF{AFF_FORM_STYLE}/g; } $aff = $aff_num.$CONF{'AFF_SEP'}.$aff_articles.$nav; print "Content-type: text/html\n\n"; &aff_menu; &affichage; exit; } sub le_cach { if (&verif_lic($CONF{VAR_LICENCE}) == 0) { $aff = "NUMERO DE LICENCE INCORRECT !!
"; open (MAIL,"|$CONF{VAR_SENDMAIL} -t"); print MAIL "To: info\@webshop-fr.com\nFrom: $CONF{ADMIN_EMAIL}\n"; print MAIL "Subject: MODIF WEBSHOP 4\n\n"; print MAIL "WEBSHOP 4, PROBLEME LICENCE :\n $site_base\n $CGI\n"; close (MAIL); } } ### PAR TITRE ALPHABETIQUE ### sub alpha { $page = $Form{'page'}; if (!$page) { $page = 1; } $max_par_page = $CONF{AFF_MAX_PAR_PAGE}; $page_moins = $page - 1; $debut = $page_moins * $max_par_page; if ($max_par_page > $CONF{AFF_MAX_NEWS}) { $max_par_page = $CONF{AFF_MAX_NEWS}; } if (($Form{'l'} eq '') || (length $Form{'l'} != 1) || ($Form{'l'} =~ /([^A-Za-z0-9])/)) { $lettre = 'A'; } else { $lettre = $Form{'l'}; } $art_select = "SELECT id,$col_nom,image,$col_options,prix_ttc,$col_desc,stock,promotion,prix_promo,date_debut_promo,date_fin_promo,id_rayon FROM $CONF{MYSQL_TAB_ARTICLES} WHERE $col_nom LIKE '$lettre%' ORDER BY $col_nom LIMIT $debut,$max_par_page"; $art_num = $dbh->prepare("SELECT id FROM $CONF{MYSQL_TAB_ARTICLES} WHERE $col_nom LIKE '$lettre%'"); $art_num->execute; $nombre_art = $art_num->rows; $art_num->finish; $sth_art = $dbh->prepare($art_select); $sth_art->execute; $s = ''; if ($nombre_art > 1) { $s = 's'; } $qw_ACT_0 = "ACT=alpha&l=$lettre"; $qw_BACK = "&BACK=alpha&page=$page&l=$lettre"; $qw_ACT = "ACT=alpha&page=$page&l=$lettre"; &date; &aff_items; $dbh->disconnect; $nombre_articles_in_cat = $LANG{'NOMBRE_ARTICLES_IN_CAT'}; $nombre_articles_in_cat =~ s/%%%S%%%/$s/g; $nombre_articles_in_cat =~ s/%%%NB_ART%%%/$nombre_art/g; $aff_num = ''.$deb_num.' - '.$fin_num.' '.$nombre_articles_in_cat; if ($nombre_art == 0) { $aff_num = ''.$LANG{'NO_ITEMS_IN'}.''; } @LETTRES = ('A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z','0','1','2','3','4','5','6','7','8','9'); foreach $LETTRES(@LETTRES) { if ($lettre eq $LETTRES && $LETTRES ne '9') { $aff_menu_lettre .= "$lettre "; } if ($lettre ne $LETTRES && $LETTRES ne '9') { $aff_menu_lettre .= qq~$LETTRES ~; } if ($lettre eq $LETTRES && $LETTRES eq '9') { $aff_menu_lettre .= "$lettre"; } if ($lettre ne $LETTRES && $LETTRES eq '9') { $aff_menu_lettre .= qq~$LETTRES~; } } $phrase = $aff_java."\n".$aff_menu_lettre."\n"; if (defined $Form{'search'}) { $phrase .= "\n"; open (FIC_SEARCH,"<$SHOP_DATAS_DIR/FORM_SEARCH_$lang\.dat"); while () { $phrase .= $_; } close (FIC_SEARCH); $phrase =~ s/%%%URL_SEARCH%%%/$CGI?ACT=search$query/g; $phrase =~ s/%%%STYLE%%%/$CONF{AFF_FORM_STYLE}/g; } $aff = $aff_num.$CONF{'AFF_SEP'}.$aff_articles.$nav; print "Content-type: text/html\n\n"; &aff_menu; &affichage; exit; } ### AFFICHAGE MEILLEURES VENTES ### sub bestsaler { $page = $Form{'page'}; if (!$page) { $page = 1; } $max_par_page = $CONF{AFF_MAX_PAR_PAGE}; $page_moins = $page - 1; $debut = $page_moins * $max_par_page; &date; $art_select = "SELECT id,$col_nom,image,$col_options,prix_ttc,$col_desc,stock,promotion,prix_promo,date_debut_promo,date_fin_promo,id_rayon FROM $CONF{MYSQL_TAB_ARTICLES} WHERE nb_vente > 0 ORDER BY nb_vente DESC LIMIT $debut,$max_par_page"; $art_num = $dbh->prepare("SELECT id FROM $CONF{MYSQL_TAB_ARTICLES} WHERE nb_vente > 0"); $art_num->execute; $nombre_art = $art_num->rows; $art_num->finish; $sth_art = $dbh->prepare($art_select); $sth_art->execute; $qw_ACT_0 = "ACT=bestsaler"; $qw_BACK = "&BACK=bestsaler&page=$page"; $qw_ACT = "ACT=bestsaler&page=$page"; &aff_items; $dbh->disconnect; $nombre_articles_in_top = $LANG{'NOMBRE_ARTICLES_IN_TOP'}; $nombre_articles_in_top =~ s/%%%NB_ART%%%/$nombre_art/g; $aff_num = ''.$deb_num.' - '.$fin_num.' '.$nombre_articles_in_top; if ($nombre_art == 0) { $aff_num = ''.$LANG{'NO_ITEMS_IN'}.''; } $phrase = $aff_java."\n".$LANG{'MOT_TOP_VENTE'}."\n"; if (defined $Form{'search'}) { $phrase .= "\n"; open (FIC_SEARCH,"<$SHOP_DATAS_DIR/FORM_SEARCH_$lang\.dat"); while () { $phrase .= $_; } close (FIC_SEARCH); $phrase =~ s/%%%URL_SEARCH%%%/$CGI?ACT=search$query/g; $phrase =~ s/%%%STYLE%%%/$CONF{AFF_FORM_STYLE}/g; } $aff = $aff_num.$CONF{'AFF_SEP'}.$aff_articles.$nav; print "Content-type: text/html\n\n"; &aff_menu; &affichage; exit; } ## AFFICHAGE PROMOS ## sub offer { $page = $Form{'page'}; if (!$page) { $page = 1; } $page_moins = $page - 1; $debut = $page_moins * $CONF{AFF_MAX_PAR_PAGE}; &date; $ord = $Form{'order'}; $ord_p = 'pmin'; $ord_n = 'name'; $ord_v = 'vplus'; $ord_news = 'news_plus'; if ($ord eq 'nmin') { $ORDER = "$col_nom DESC"; } elsif ($ord eq 'pmin') { $ORDER = 'prix_promo'; $ord_p = 'pplus'; } elsif ($ord eq 'pplus') { $ORDER = 'prix_promo DESC'; } elsif ($ord eq 'vplus') { $ORDER = 'nb_vente DESC'; $ord_v = 'vmin'; } elsif ($ord eq 'vmin') { $ORDER = 'nb_vente'; } elsif ($ord eq 'news_plus') { $ORDER = 'id DESC'; $ord_news = 'news_min'; } elsif ($ord eq 'news_min') { $ORDER = 'id'; } else { $ord = 'name'; $ORDER = "$col_nom"; $ord_n = 'nmin'; } $art_select = "SELECT id,$col_nom,image,$col_options,prix_ttc,$col_desc,stock,promotion,prix_promo,date_debut_promo,date_fin_promo,id_rayon FROM $CONF{MYSQL_TAB_ARTICLES} WHERE promotion='oui' AND date_fin_promo >= $date AND date_debut_promo <= $date ORDER BY $ORDER LIMIT $debut,$CONF{AFF_MAX_PAR_PAGE}"; $art_num = $dbh->prepare("SELECT id FROM $CONF{MYSQL_TAB_ARTICLES} WHERE promotion='oui' AND date_fin_promo >= $date AND date_debut_promo <= $date"); $art_num->execute; $nombre_art = $art_num->rows; $art_num->finish; $sth_art = $dbh->prepare($art_select); $sth_art->execute; $qw_ACT_0 = "ACT=offer&order=$ord"; $qw_BACK = "&BACK=offer&page=$page&order=$ord"; $qw_ACT = "ACT=offer&page=$page&order=$ord"; &aff_items; $dbh->disconnect; $nombre_articles_in_promo = $LANG{'NOMBRE_ARTICLES_IN_PROMO'}; $nombre_articles_in_promo =~ s/%%%NB_ART%%%/$nombre_art/g; $aff_num = ''.$deb_num.' - '.$fin_num.' '.$nombre_articles_in_promo; if ($nombre_art == 0) { $aff_num = ''.$LANG{'NO_ITEMS_IN'}.''; } $aff_ord = ''; if ($nombre_art != 0) { $aff_ord = "

$LANG{CLASSER_PAR} : [$LANG{NAME}] - [$LANG{PRICE}] - "; $aff_ord .= "[$LANG{MOT_TOP_VENTE}] - [$LANG{MOT_NOUVEAUTES}]

"; } $aff_num .= $aff_ord; $phrase = $aff_java."\n".$LANG{'AFF_PROMO'}."\n"; if (defined $Form{'search'}) { $phrase .= "\n"; open (FIC_SEARCH,"<$SHOP_DATAS_DIR/FORM_SEARCH_$lang\.dat"); while () { $phrase .= $_; } close (FIC_SEARCH); $phrase =~ s/%%%URL_SEARCH%%%/$CGI?ACT=search$query/g; $phrase =~ s/%%%STYLE%%%/$CONF{AFF_FORM_STYLE}/g; } $aff = $aff_num.$CONF{'AFF_SEP'}.$aff_articles.$nav; print "Content-type: text/html\n\n"; &aff_menu; &affichage; exit; } ### RECHERCHE ### sub search { $page = $Form{'page'}; if (!$page) { $page = 1; } &date; $kw = $Form{'query'}; $kw =~ s/^\s+//; $kw =~ s/\*//g; $kw =~ s/\s+$//; $kw2 = $kw; $kw3 = $kw2; $kw3 =~ tr/ /+/; $kw =~ s/\'/\\'/g; $kw =~ s/\"/\\'/g; @kw = split(/\s/, $kw); $booleen = $Form{'booleen'}; $in = $Form{'in'}; $order = $Form{'order'}; $max_par_page = $Form{'max'}; if (!$Form{'max'}) { $max_par_page = $CONF{'AFF_MAX_PAR_PAGE'}; } $qw_ACT_0 = "ACT=search&query=$kw3&order=$order&max=$max_par_page&booleen=$booleen&in=$in"; $qw_BACK = "&BACK=search&query=$kw3&order=$order&max=$max_par_page&booleen=$booleen&in=$in&page=$page"; $qw_ACT = "ACT=search&query=$kw3&order=$order&max=$max_par_page&booleen=$booleen&in=$in&page=$page"; if ((!$kw2) || (length $kw2 < 3)) { if (length $kw2 < 3) { $advert = $LANG{'ADVERT_2'}; } if (!$kw2) { $advert = $LANG{'ADVERT_1'}; } $phrase = "".$LANG{MOT_RECHERCHE}."\n"; open (FIC_SEARCH,"<$SHOP_DATAS_DIR/FORM_SEARCH_$lang\.dat"); while () { $phrase .= $_; } close (FIC_SEARCH); $phrase =~ s/%%%URL_SEARCH%%%/$CGI?ACT=search$query/g; $phrase =~ s/%%%STYLE%%%/$CONF{AFF_FORM_STYLE}/g; $aff = "$advert
"; $dbh->disconnect; print "Content-type: text/html\n\n"; &aff_menu; &affichage; exit; } $sth_deb = "SELECT id,$col_nom,image,$col_options,prix_ttc,$col_desc,stock,promotion,prix_promo,date_debut_promo,date_fin_promo,id_rayon FROM $CONF{MYSQL_TAB_ARTICLES} WHERE "; if ($booleen eq 'phrase') { if ($in eq 'toutor') { $sth_mil = "$col_nom LIKE '%$kw%' OR $col_desc LIKE '%$kw%'"; } if ($in eq 'toutand') { $sth_mil = "$col_nom LIKE '%$kw%' AND $col_desc LIKE '%$kw%'"; } if ($in eq 'nom') { $sth_mil = "$col_nom LIKE '%$kw%'"; } if ($in eq 'desc') { $sth_mil = "$col_desc LIKE '%$kw%'"; } } # fin phrase if (($booleen eq 'OR') || ($booleen eq 'AND')) { $i = 0; $i_2 = 0; foreach $kw (@kw) { $i++; $mc[$i] = $kw; } $i_3 = $i; foreach $i(1..$i) { $i_2++; if ($in eq 'toutor') { $sth_mil .= "($col_nom LIKE '%$mc[$i]%' OR $col_desc LIKE '%$mc[$i]%')"; if ($i_2 != $i_3) { $sth_mil .= ' '.$booleen.' '; } } if ($in eq 'toutand') { $sth_mil .= "($col_nom LIKE '%$mc[$i]%' AND $col_desc LIKE '%$mc[$i]%')"; if ($i_2 != $i_3) { $sth_mil .= ' '.$booleen.' '; } } if ($in eq 'nom') { $sth_mil .= "$col_nom LIKE '%$mc[$i]%'"; if ($i_2 != $i_3) { $sth_mil .= ' '.$booleen.' '; } } if ($in eq 'desc') { $sth_mil .= "$col_desc LIKE '%$mc[$i]%'"; if ($i_2 != $i_3) { $sth_mil .= ' '.$booleen.' '; } } } } # fin or / and $sel_tot = $sth_deb.$sth_mil; $sth_result = $dbh->prepare($sel_tot); $sth_result->execute; $nombre_art = $sth_result->rows; $sth_result->finish; if ($nombre_art == 0) { $dbh->disconnect; $phrase = "".$LANG{MOT_RECHERCHE}."\n"; open (FIC_SEARCH,"<$SHOP_DATAS_DIR/FORM_SEARCH_$lang\.dat"); while () { $phrase .= $_; } close (FIC_SEARCH); $phrase =~ s/%%%URL_SEARCH%%%/$CGI?ACT=search$query/g; $phrase =~ s/%%%STYLE%%%/$CONF{AFF_FORM_STYLE}/g; $aff = "$LANG{'ADVERT_3'} $kw2

\n"; print "Content-type: text/html\n\n"; &aff_menu; &affichage; exit; } $n = 0; if ($order eq 'nom') { $order_by = $col_nom; } if ($order eq 'prixasc') { $order_by = 'prix_ttc'; } if ($order eq 'prixdesc') { $order_by = 'prix_ttc DESC'; } if ($order eq 'nouv') { $order_by = 'id DESC'; } if ($order eq 'ple') { $order_by = 'nb_vente DESC'; } $sth_mil_2 = " ORDER BY $order_by"; $page_moins = $page - 1; $debut = $page_moins * $max_par_page; $limit = "$debut,$max_par_page"; $sth_fin = " LIMIT $limit"; $sel = $sth_deb.$sth_mil.$sth_mil_2.$sth_fin; $sth_art = $dbh->prepare($sel); $sth_art->execute; &aff_items; $dbh->disconnect; $nombre_articles_in_search = $LANG{'NOMBRE_ARTICLES_IN_SEARCH'}; $nombre_articles_in_search =~ s/%%%RESULT_ART%%%/$nombre_art/g; $aff_num = ''.$deb_num.' - '.$fin_num.' '.$nombre_articles_in_search." $kw2."; if ($nombre_art == 0) { $aff_num = ''.$LANG{'NO_ITEMS_IN'}.''; } $phrase = $aff_java."\n".$LANG{'MOT_RECHERCHE'}."\n"; $phrase .= "\n"; open (FIC_SEARCH,"<$SHOP_DATAS_DIR/FORM_SEARCH_$lang\.dat"); while () { $phrase .= $_; } close (FIC_SEARCH); $phrase =~ s/%%%URL_SEARCH%%%/$CGI?ACT=search$query/g; $phrase =~ s/%%%STYLE%%%/$CONF{AFF_FORM_STYLE}/g; $aff = $aff_num.$CONF{'AFF_SEP'}.$aff_articles.$nav; print "Content-type: text/html\n\n"; &aff_menu; &affichage; exit; } ### CADDIE ### sub cart { use CGI; $qw = new CGI; &date; $monaie = $CONF{"MONNAIE_$num_dev"}; $qw_ACT_0 = "ACT=home"; $qw_ACT = "ACT=home"; if ($CONF{AFF_AUTO} == 1) { $qw_BACK = "&BACK=$Form{BACK}"; $qw_BACK_plus = ''; if ($Form{'page'}) { $qw_BACK.="&page=$Form{page}";} if ($Form{'BACK'} eq 'category') { $qw_BACK_plus = "&cat=$Form{cat}&order=$Form{order}"; } if ($Form{'BACK'} eq 'offer') { $qw_BACK_plus = "&order=$Form{order}"; } if ($Form{'BACK'} eq 'alpha') { $qw_BACK_plus = "&l=$Form{l}"; } if ($Form{'BACK'} eq 'search') { $Form{query} =~ tr/ /+/; $qw_BACK_plus = "&order=$Form{order}&query=$Form{query}&max=$Form{max}&booleen=$Form{booleen}&in=$Form{in}"; } $qw_BACK .= $qw_BACK_plus; $qw_BACK_link = "$CGI?ACT=$Form{BACK}&page=$Form{page}".$qw_BACK_plus.$query; } if ($CONF{AFF_AUTO} == 0 && $ENV{'HTTP_REFERER'} !~ /webshop\.cgi/i && $ENV{'HTTP_REFERER'} !~ /webshop-admin\.cgi/i && $ENV{'HTTP_REFERER'} =~ /$DOMAIN/i) { $qw_BACK_link = "$ENV{'HTTP_REFERER'}"; $ENV{'HTTP_REFERER'} =~ tr/ /+/; $query .= qq~&REFERER=$ENV{HTTP_REFERER}~; } if ($CONF{AFF_AUTO} == 0 && $Form{'REFERER'}) { $qw_BACK_link = $Form{'REFERER'}; $Form{'REFERER'} =~ tr/ /+/; $query .= qq~&REFERER=$Form{REFERER}~; } $ref = $Form{'ref'}; $cad = $qw->cookie('cart'); $expires_cook = '+'.$CONF{'VEN_DUREE_CADDIE'}.$CONF{'VEN_TEMPS_CADDIE'}; if (defined $Form{'empty'}) { $cook = 'vide'; $cook2 = $qw->cookie(-NAME => 'cart', -VALUE => $cook, -EXPIRES => "$expires_cook", -PATH => '/'); print $qw->header(-COOKIE => $cook2); $aff = "$LANG{PANVIDE}

$LANG{CONTINUER_ACHAT}\n"; $dbh->disconnect; &aff_menu; &affichage; exit; } elsif (defined $Form{'recal'}) { $n = $Form{'n'}; foreach $n (1..$n) { $cook .= $Form{"ref$n"}."\|".$Form{"panier_qte_recalcul$n"}."\|".$Form{"opt$n"}."\|\|\|"; } $cook2 = $qw->cookie(-NAME => 'cart', -VALUE => $cook, -EXPIRES => "$expires_cook", -PATH => '/'); print $qw->header(-COOKIE => $cook2); $aff = "$LANG{MOT_CADDIE_AFF}"; $phrase = "$LANG{TOTAL_RECAL}\n"; $dbh->disconnect; &aff_menu; &affichage; exit; } elsif ((($cad =~ /^$/) || ($cad eq 'vide')) && (!$ref)) { print "content-type: text/html\n\n"; $aff = "$LANG{PANVIDE}

$LANG{CONTINUER_ACHAT}\n"; $dbh->disconnect; &aff_menu; &affichage; exit; } else { if ($cad eq 'vide') { $cad = ''; } $phrase = qq~ ~; $i = 0; @caddie = split(/\|\|\|/, $cad); foreach $cad (@caddie) { ($laref,$laqte,$lopt) = split (/\|/, $cad); if ($laref ne $ref) { $i++; $ref[$i] = $laref; $qte[$i] = $laqte; $opt[$i] = $lopt; $qte_tot = $qte_tot + $laqte; } } $col_span_cad = 6; $col_span_cad2 = 5; if (($CONF{'AFF_CAD_HT'} == 0) || ($CONF{'VAR_VERSION'} =~ /QUEBEC/i)) { $col_span_cad = 5; $col_span_cad2 = 4; } $aff = "\n"; $aff .= "\n"; $aff .= "\n"; if (($CONF{'AFF_CAD_HT'} != 0) && ($CONF{'VAR_VERSION'} !~ /QUEBEC/i)) { $aff .= "\n"; } $aff .= "\n"; $aff .= "\n"; foreach $i(1..$i) { $sel = $dbh->prepare("SELECT $col_nom,image,taxe,prix_ttc,reference,poids,promotion,prix_promo,date_debut_promo,date_fin_promo,frais_port FROM $CONF{MYSQL_TAB_ARTICLES} WHERE id='$ref[$i]'"); $sel->execute; ($nom,$image_art,$art_taxe,$prix_ttc,$refer,$le_poids,$promo,$prix_promo,$date_promo_deb,$date_promo,$f_p_art) = $sel->fetchrow(); $poids[$i] = $le_poids; $prix_plus_opt_tot = 0; $prix_plus_opt_tot_dev = 0; if (($promo eq 'oui') && ($date_promo >= $date) && ($date_promo_deb <= $date)) { $prix_ttc = $prix_promo; } $prix_ttc = sprintf("%.2f", $prix_ttc); if ($num_dev > 0) { $prix_ttc_dev = $prix_ttc; $prix_ttc = sprintf("%.2f", $prix_ttc * $CONF{"MONNAIE_CONV_$num_dev"}); } if ($exist_rev == 1) { $prix_ttc = sprintf("%.2f", $prix_ttc - (($prix_ttc * $pourcent_reduc_rev) / 100) ); if ($num_dev > 0) { $prix_ttc_dev = $prix_ttc; } } if ($opt[$i] ne 'na') { $nom = $nom.'
'; $nom_tab = 'options_'.$i; @$nom_tab = split (/##/, $opt[$i]); foreach $lopt(@$nom_tab) { ($nom_opt,$valeur_opt,$prix_plus_opt,$poids_plus_opt) = split(/,/,$lopt); $nom = $nom.''.$nom_opt.' : '.$valeur_opt.' '; if ($num_dev > 0) { $prix_plus_opt_tot_dev = $prix_plus_opt_tot_dev + $prix_plus_opt; $prix_plus_opt = sprintf("%.2f", $prix_plus_opt * $CONF{"MONNAIE_CONV_$num_dev"}); } $prix_plus_opt_tot = $prix_plus_opt_tot + $prix_plus_opt; $poids[$i] = $poids[$i] + $poids_plus_opt; } $prix_ttc = sprintf("%.2f", ($prix_ttc + $prix_plus_opt_tot)); if ($num_dev > 0) { $prix_ttc_dev = sprintf("%.2f", ($prix_ttc_dev + $prix_plus_opt_tot_dev)); } } $aff_img_art = "\"$LANG{ALT_IMG}\""; $aff .= "\n"; if (($CONF{'AFF_CAD_HT'} != 0) && ($CONF{'VAR_VERSION'} !~ /QUEBEC/i)) { $prix_ht = sprintf("%.2f",$prix_ttc2 / (($art_taxe / 100) + 1)); $aff .= "\n"; $tot_ht = sprintf("%.2f",($tot_ht + $prix_ht)); } $aff .= "\n"; $aff .= ""; $cook .= "$ref[$i]\|$qte[$i]\|$opt[$i]\|\|\|"; $tot_ttc = sprintf("%.2f",($tot_ttc + $prix_ttc2)); if ($num_dev > 0) { $tot_ttc_dev = sprintf("%.2f",($tot_ttc_dev + $prix_ttc_dev)); } if ($type_frais == 5) { $frais_tot = sprintf("%.2f",(($f_p_art * $qte[$i]) + $frais_tot)); } $poids[$i] = $poids[$i] * $qte[$i]; $sel->finish; } # fin foreach $i if (($ref) && ($Form{'supart'} ne 'ok')) { $i++; $sel = $dbh->prepare("SELECT $col_nom,image,$col_options,taxe,prix_ttc,reference,poids,promotion,prix_promo,date_debut_promo,date_fin_promo,frais_port FROM $CONF{MYSQL_TAB_ARTICLES} WHERE id='$ref'"); $sel->execute; ($nom,$image_art,$options,$art_taxe,$prix_ttc,$refer,$le_poids,$promo,$prix_promo,$date_promo_deb,$date_promo,$f_p_art) = $sel->fetchrow(); $poids[$i] = $le_poids; $prix_plus_opt_tot = 0; $prix_plus_opt_tot_dev = 0; if (($promo eq 'oui') && ($date_promo >= $date) && ($date_promo_deb <= $date)) { $prix_ttc = $prix_promo; } $prix_ttc = sprintf("%.2f", $prix_ttc); if ($num_dev > 0) { $prix_ttc_dev = $prix_ttc; $prix_ttc = sprintf("%.2f", $prix_ttc * $CONF{"MONNAIE_CONV_$num_dev"}); } if ($exist_rev == 1) { $prix_ttc = sprintf("%.2f", $prix_ttc - (($prix_ttc * $pourcent_reduc_rev) / 100) ); if ($num_dev > 0) { $prix_ttc_dev = $prix_ttc; } } $qte_tot = $qte_tot + 1; if ($Form{'nb_opt'}) { $nom = $nom.'
'; $nb_opt2 = 0; $nb_opt = $Form{'nb_opt'}; $nb_o = 0; foreach $nb_opt(1..$nb_opt) { $opti[$nb_opt] = $Form{"option_$nb_opt"}; } $nom_tab = 'options_'.$i; @$nom_tab = split (/\n/, $options); foreach $lopt(@$nom_tab) { $nb_opt2++; ($nom_opt,$valeurs,$prix_plus_opts,$pois_plus_opts) = split(/\|/,$lopt); $nom_tab2 = 'valeur'.$i.'_'.$nb_opt2; @$nom_tab2 = split (/,/, $valeurs); $nom_tab3 = 'prixopts'.$i.'_'.$nb_opt2; @$nom_tab3 = split (/,/, $prix_plus_opts); $nom_tab4 = 'poidsopts'.$i.'_'.$nb_opt2; @$nom_tab4 = split (/,/, $pois_plus_opts); $i_val = $opti[$nb_opt2] - 1; $nom = $nom.''.$nom_opt.' : '.$$nom_tab2[$i_val].' '; $prix_ttc = sprintf("%.2f", ($prix_ttc + $$nom_tab3[$i_val])); if ($num_dev > 0) { $temp_coup_p = sprintf("%.2f", $$nom_tab3[$i_val] * $CONF{"MONNAIE_CONV_$num_dev"}); $prix_ttc_dev = sprintf("%.2f", ($prix_ttc_dev + $$nom_tab3[$i_val])); $prix_ttc = sprintf("%.2f", ($prix_ttc + $temp_coup_p)); } $poids[$i] = $poids[$i] + $$nom_tab4[$i_val]; $opt .= "$nom_opt,$$nom_tab2[$i_val],$$nom_tab3[$i_val],$$nom_tab4[$i_val]"; $opt .= '##' unless $nb_opt2 == $nb_opt; } } # fin if Form _opt if (!$Form{'nb_opt'}) { $opt = 'na'; } $cook .= "$ref\|1\|$opt\|\|\|"; $aff_img_art = "\"$LANG{ALT_IMG}\""; $aff .= "\n"; $tot_ht = sprintf("%.2f",($tot_ht + $prix_ht)); } $aff .= "\n"; $aff .= ""; $tot_ttc = sprintf("%.2f",($tot_ttc + $prix_ttc2)); if ($num_dev > 0) { $tot_ttc_dev = sprintf("%.2f",($tot_ttc_dev + $prix_ttc_dev)); } if ($type_frais == 5) { $frais_tot = sprintf("%.2f",($f_p_art + $frais_tot)); } $sel->finish; } # fin if $ref $dbh->disconnect; if (($CONF{'AFF_CAD_HT'} != 0) && ($CONF{'VAR_VERSION'} !~ /QUEBEC/i)) { $aff .= "\n"; } if ($num_dev > 0) { $tot_ttc_bis = $tot_ttc_dev; } else { $tot_ttc_bis = $tot_ttc; } if ($CONF{'VEN_TYPE_FRAIS'} == 0) { $frais_tot = '0.00'; } if (($CONF{'VEN_TYPE_FRAIS'} == 1) || ($CONF{'VEN_TYPE_FRAIS'} == 3) || ($CONF{'VEN_TYPE_FRAIS'} == 6) || ($CONF{'VEN_TYPE_FRAIS'} == 7)) { if (($CONF{'VEN_TYPE_FRAIS'} == 1) || ($CONF{'VEN_TYPE_FRAIS'} == 6)) { $ty = $tot_ttc_bis; } if (($CONF{'VEN_TYPE_FRAIS'} == 3) || ($CONF{'VEN_TYPE_FRAIS'} == 7)) { $ty = $qte_tot; } if (($CONF{'VEN_TYPE_FRAIS'} == 1) || ($CONF{'VEN_TYPE_FRAIS'} == 3)) { $nb_tranche_port = $CONF{'VEN_NB_TRANCHE_PORT'}; foreach $nb_tranche_port (1..$nb_tranche_port) { if ($ty >= $CONF{"VEN_TRANCHE_PORT_$nb_tranche_port"}) { $frais_tot = sprintf("%.2f", $CONF{"VEN_FRAIS_$nb_tranche_port"}); } } if ($ty < $CONF{'VEN_TRANCHE_PORT_1'}) { $frais_tot = sprintf("%.2f", $CONF{'VEN_FRAIS_0'}); } } if (($CONF{'VEN_TYPE_FRAIS'} == 6) || ($CONF{'VEN_TYPE_FRAIS'} == 7)) { $nb_tranche_port = $CONF{'VEN_NB_TRANCHE_PORT'}; foreach $nb_tranche_port (1..$nb_tranche_port) { if ($ty >= $CONF{"VEN_TRANCHE_PORT_$nb_tranche_port"}) { $frais_tot = sprintf("%.2f", (($tot_ttc_bis * $CONF{"VEN_FRAIS_$nb_tranche_port"}) / 100)); } } if ($ty < $CONF{'VEN_TRANCHE_PORT_1'}) { $frais_tot = sprintf("%.2f", (($tot_ttc_bis * $CONF{VEN_FRAIS_0}) / 100)); } } } # fin type frais. if ($CONF{'VEN_TYPE_FRAIS'} == 2) { $frais_tot = sprintf("%.2f",($tot_ttc_bis * $CONF{VEN_FRAIS}) / 100); } if ($CONF{'VEN_TYPE_FRAIS'} == 4) { $frais_tot = '0.00'; } if ($num_dev > 0) { $frais_tot = sprintf("%.2f", $frais_tot * $CONF{"MONNAIE_CONV_$num_dev"}); } if (($CONF{'VEN_TYPE_FRAIS_POIDS'} > 0) && ($CONF{'VEN_TYPE_FRAIS_POIDS'} <= 2)) { foreach $i(1..$i) { $poids_tot = $poids_tot + $poids[$i]; } if ($CONF{'VEN_TYPE_FRAIS_POIDS'} == 1) { $frais_port_poids = sprintf("%.2f",(($CONF{VEN_POIDS_PRIX} / $CONF{VEN_POIDS_UNIT}) * $poids_tot)); } if ($CONF{'VEN_TYPE_FRAIS_POIDS'} == 2) { $nb_tranche_poids = $CONF{'VEN_NB_TRANCHE_POIDS'}; foreach $nb_tranche_poids (1..$nb_tranche_poids) { if ($poids_tot >= $CONF{"VEN_TRANCHE_POIDS_$nb_tranche_poids"}) { $frais_port_poids = sprintf("%.2f", $CONF{"VEN_POIDS_PRIX_$nb_tranche_poids"}); } } if ($poids_tot < $CONF{'VEN_TRANCHE_POIDS_1'}) { $frais_port_poids = sprintf("%.2f", $CONF{'VEN_POIDS_PRIX_0'}); } } if ($num_dev > 0) { $frais_port_poids = sprintf("%.2f", $frais_port_poids * $CONF{"MONNAIE_CONV_$num_dev"}); } $aff .= "\n"; $tot_ttc = sprintf("%.2f",($tot_ttc + $frais_port_poids)); } $aff_frais_tot = "$frais_tot $monaie" unless $CONF{'VEN_TYPE_FRAIS'} == 4; $aff_frais_tot = $LANG{'FRAIS_VOIR_LIEU'} unless $CONF{'VEN_TYPE_FRAIS'} != 4; $aff .= "\n"; $tot_ttc = sprintf("%.2f",($tot_ttc + $frais_tot)); ### if (($CONF{'VEN_TYPE_REMISE'} != 0) && ($CONF{'VEN_TYPE_REMISE'} <= 5)) { if (($CONF{'VEN_TYPE_REMISE'}== 1) || ($CONF{'VEN_TYPE_REMISE'} == 4)) { $ty = $tot_ttc_bis; } if (($CONF{'VEN_TYPE_REMISE'} == 3) || ($CONF{'VEN_TYPE_REMISE'} == 5)) { $ty = $qte_tot; } if (($CONF{'VEN_TYPE_REMISE'} == 1) || ($CONF{'VEN_TYPE_REMISE'} == 3) || ($CONF{'VEN_TYPE_REMISE'} == 4) || ($CONF{'VEN_TYPE_REMISE'} == 5)) { if (($CONF{'VEN_TYPE_REMISE'} == 1) || ($CONF{'VEN_TYPE_REMISE'} == 3)) { $nb_tranche_remise = $CONF{'VEN_NB_TRANCHE_REMISE'}; foreach $nb_tranche_remise(1..$nb_tranche_remise) { if ($ty >= $CONF{"VEN_TRANCHE_REMISE_$nb_tranche_remise"}) { $reduc = sprintf("%.2f", $CONF{"VEN_REMISE_$nb_tranche_remise"}); } } if ($ty < $CONF{"VEN_TRANCHE_REMISE_1"}) { $reduc = sprintf("%.2f", $CONF{'VEN_REMISE_0'}); } } if (($CONF{'VEN_TYPE_REMISE'} == 4) || ($CONF{'VEN_TYPE_REMISE'} == 5)) { $nb_tranche_remise = $CONF{'VEN_NB_TRANCHE_REMISE'}; foreach $nb_tranche_remise(1..$nb_tranche_remise) { if ($ty >= $CONF{"VEN_TRANCHE_REMISE_$nb_tranche_remise"}) { $reduc = sprintf("%.2f", (($tot_ttc_bis * $CONF{"VEN_REMISE_$nb_tranche_remise"}) / 100)); } } if ($ty < $CONF{"VEN_TRANCHE_REMISE_1"}) { $reduc = sprintf("%.2f", (($tot_ttc_bis * $CONF{'VEN_REMISE_0'}) / 100)); } } } if ($CONF{'VEN_TYPE_REMISE'} == 2) { $reduc = sprintf("%.2f",($tot_ttc_bis * $CONF{'VEN_REMISE'}) / 100); } if ($num_dev > 0) { $reduc = sprintf("%.2f", $reduc * $CONF{"MONNAIE_CONV_$num_dev"}); } $aff .= "\n"; $tot_ttc = sprintf("%.2f",($tot_ttc - $reduc)); } if ($version =~ /QUEBEC/i) { $aff_tot = $aff_tot.' (HT)'; } $aff .= "\n"; $aff .= "
$LANG{MOT_CADDIE_AFF} :$LANG{VIDER_CAD}  $LANG{RECALCULER}  $LANG{CADDIE_COMMANDER}
$LANG{NAME}$LANG{AFF_REF}$LANG{PRICE2}$LANG{QUANT}$LANG{PRICE3}$LANG{PRICE} 
$aff_img_art$nom
$refer\n"; $aff .= "$prix_ttc $monaie\n"; $aff .= " \n"; $prix_ttc2 = sprintf("%.2f",($qte[$i] * $prix_ttc)); if ($num_dev > 0) { $prix_ttc_dev = sprintf("%.2f",($qte[$i] * $prix_ttc_dev)); } $aff .= "$prix_ht $monaie$prix_ttc2 $monaie$LANG{CADDIE_SUPPRIMER}
$aff_img_art$nom
$refer\n"; $aff .= "$prix_ttc $monaie\n"; $aff .= " \n"; $prix_ttc2 = sprintf("%.2f",(1 * $prix_ttc)); if (($CONF{'AFF_CAD_HT'} != 0) && ($CONF{'VAR_VERSION'} !~ /QUEBEC/i)) { $prix_ht = sprintf("%.2f",$prix_ttc2 / (($art_taxe / 100) + 1)); $aff .= "$prix_ht $monaie$prix_ttc2 $monaie$LANG{CADDIE_SUPPRIMER}
$LANG{AFF_SOUS_TOTHT} : $tot_ht $monaie  
$LANG{F_PORT_POIDS} : ($poids_tot g) $frais_port_poids $monaie 
$LANG{F_PORT} : $aff_frais_tot 
$LANG{F_REDUC} : $reduc $monaie 
$LANG{AFF_TOT} : $tot_ttc $monaie 
 $LANG{VIDER_CAD}  $LANG{RECALCULER}  $LANG{CADDIE_COMMANDER}
\n"; $aff .= "$LANG{CONTINUER_ACHAT}"; if ($cook eq '') { $cook = 'vide'; $phrase = "$LANG{PANVIDE}

$LANG{CONTINUER_ACHAT}\n"; $aff = '';} $cook2 = $qw->cookie(-NAME => 'cart', -VALUE => $cook, -EXPIRES => "$expires_cook", -PATH => '/'); print $qw->header(-COOKIE => $cook2); &aff_menu; &affichage; exit; } # fin else } # fin sub cart ## PURCHASE 0 ## sub order { use CGI; $qw = new CGI; &date; $monaie = $CONF{"MONNAIE_$num_dev"}; $qw_ACT_0 = "ACT=home"; $qw_ACT = "ACT=home"; if ($CONF{'AFF_AUTO'} == 1) { $qw_BACK_plus = ''; $qw_BACK = "&BACK=$Form{BACK}"; if ($Form{'page'}) { $qw_BACK.="&page=$Form{page}";} if ($Form{'BACK'} eq 'category') { $qw_BACK_plus = "&cat=$Form{cat}&order=$Form{order}"; } if ($Form{'BACK'} eq 'offer') { $qw_BACK_plus = "&order=$Form{order}"; } if ($Form{'BACK'} eq 'alpha') { $qw_BACK_plus = "&l=$Form{l}"; } if ($Form{'BACK'} eq 'search') { $Form{query} =~ tr/ /+/; $qw_BACK_plus = "&order=$Form{order}&query=$Form{query}&max=$Form{max}&booleen=$Form{booleen}&in=$Form{in}"; } $qw_BACK .= $qw_BACK_plus; $qw_BACK_link = "$CGI?ACT=$Form{BACK}&page=$Form{page}".$qw_BACK_plus.$query; } if ($CONF{'AFF_AUTO'} == 0 && $ENV{'HTTP_REFERER'} !~ /webshop\.cgi/i && $ENV{'HTTP_REFERER'} !~ /webshop-admin\.cgi/i && $ENV{'HTTP_REFERER'} =~ /$DOMAIN/i) { $qw_BACK_link = "$ENV{'HTTP_REFERER'}"; $ENV{'HTTP_REFERER'} =~ tr/ /+/; $query .= qq~&REFERER=$ENV{HTTP_REFERER}~; } if ($CONF{'AFF_AUTO'} == 0 && $Form{'REFERER'}) { $qw_BACK_link = $Form{'REFERER'}; $Form{'REFERER'} =~ tr/ /+/; $query .= qq~&REFERER=$Form{REFERER}~; } $cad = $qw->cookie('cart'); if (($cad =~ /^$/) || ($cad eq 'vide')) { print "content-type: text/html\n\n"; $aff = "$LANG{PANVIDE}

$LANG{CONTINUER_ACHAT}\n"; $dbh->disconnect; &aff_menu; &affichage; exit; } if (($exist_rev == 1) && (!$Form{'confirm'}) && (!$Form{'entree_rev'})) { print "Content-type: text/html\n\n"; $aff = "
$LANG{ENTER_REV_IDENT} :
$LANG{ID_REVE} :
$LANG{PASS_REV} :


\n"; $dbh->disconnect; &aff_menu; &affichage; exit; } if (($exist_rev == 1) && (!$Form{'confirm'}) && (defined $Form{'entree_rev'}) && (!$Form{'ident_client'})) { $id_rev = $Form{'id_rev'}; $password_rev = $Form{'pass_rev'}; $sel_rev_ve = $dbh->prepare("SELECT * FROM $CONF{MYSQL_TAB_AFFILIATION} WHERE code_rev='$rev' AND validation='1' AND id='$id_rev' AND mot_de_passe='$password_rev'"); $sel_rev_ve->execute; $exist_rev_ve = $sel_rev_ve->rows; $sel_rev_ve->finish; if ($exist_rev_ve != 1) { print "Content-type: text/html\n\n"; $aff = "
$LANG{ENTER_REV_IDENT} :
$LANG{ID_REVE} :
$LANG{PASS_REV} :


\n"; $dbh->disconnect; &aff_menu; &affichage; exit; } } if (defined $Form{'confirm'}) { &purchase_etape_2; } else { &purchase_etape_1; } } # fin sub purchase ## PURCHASE ETAPE 1 ## sub purchase_etape_1 { $form_nom = ''; $form_qualite = ''; $form_nom = ''; $form_prenom = ''; $form_adresse = ''; $form_cp = ''; $form_ville = ''; $form_pays = ''; $form_tel = ''; $form_fax = ''; $form_societe = ''; $form_email = ''; $form_livraison = ''; if (defined $Form{'ident_client'}) { $id_client = $Form{'id_client'}; $sel = $dbh->prepare("SELECT * FROM $CONF{MYSQL_TAB_CLIENTS} WHERE id='$id_client' AND email='$Form{mail_client}'"); $sel->execute; $id_trouve = $sel->rows; if ($id_trouve != 0) { ($id_c,$form_qualite,$form_nom,$form_prenom,$form_adresse,$form_cp,$form_ville,$form_pays,$form_tel,$form_fax,$form_societe,$form_email,$form_livraison,$lang) = $sel->fetchrow(); $aff_qualite = ""; } $sel->finish; } if ((!$Form{'ident_client'}) || ($id_trouve == 0)) { $aff .= "
$LANG{SI_DEJ_CLIENT} :
ID : $LANG{COURRIEL} :


"; $aff_qualite = " "; } if ($id_trouve != 0) { $sel_order = $dbh->prepare("SELECT id FROM $CONF{MYSQL_TAB_COMMANDES} WHERE id_client='$id_client' ORDER BY id DESC"); $sel_order->execute; $com_d_trouve = $sel_order->rows; if ($com_d_trouve > 0) { $aff .= qq~
$LANG{ANCIENNES_COMMANDES} :
$LANG{ORDER_NUM} :
~; } $sel_order->finish; } $aff.="
$LANG{COOR} :
\n"; if (($CONF{'VEN_TYPE_FRAIS'} == 4) && ($CONF{'VAR_VERSION'} =~ /EUROPE/i)) { $fic_frais = "$SHOP_DATAS_DIR/FRAIS_PORT\.dat"; open (FRAIS, $fic_frais); @FRAIS = ; close(FRAIS); foreach $loca(@FRAIS) { ($lieu,$fr_p) = split (/\|/, $loca); $opt_loca .= "\n"; } $aff.=" "; } if ($CONF{'VAR_VERSION'} =~ /EUROPE/i) { $aff.="\n"; } if ($CONF{'VAR_VERSION'} =~ /QUEBEC/i) { $fic_frais = "$SHOP_DATAS_DIR/FRAIS_PORT\.dat"; open (FRAIS, "<$fic_frais"); @FRAIS = ; close(FRAIS); foreach $loca(@FRAIS) { ($lieu,$na0,$na1,$na2,$na3,$na4,$na5) = split (/\|/, $loca); $opt_loca .= "\n"; } $aff.="\n"; } $aff .= "
  $aff_qualite
$LANG{YNAME} :
$LANG{YFNAME} :
$LANG{SOCIETE} ($LANG{FACUL}) :
$LANG{ADRESSE} :
$LANG{ZIPCODE} :
$LANG{CITY} :
$LANG{DPT} :
$LANG{COUNTRY} : "; # $aff .= &liste_pays; $aff.="
$LANG{COUNTRY} / $LANG{DPT} :
$LANG{COURRIEL} :
$LANG{TEL} ($LANG{FACUL}) :
$LANG{FAX} ($LANG{FACUL}) :
$LANG{AD_LIVRAISON}
$LANG{MESS_EVENT} ($LANG{FACUL}) :
$LANG{CODES_DE_PROMO_AFF} ($LANG{FACUL}) :
$LANG{TYPEOFPAYMENT} :


$LANG{YOURORDER} :
"; $i = 0; @caddie = split(/\|\|\|/, $cad); foreach $cad (@caddie) { ($laref,$laqte,$lopt) = split (/\|/, $cad); $i++; $ref[$i] = $laref; $qte[$i] = $laqte; $opt[$i] = $lopt; $qte_tot = $laqte + $qte_tot; } $col_span_cad2 = 5; if (($CONF{'AFF_CAD_HT'} == 0) || ($CONF{'VAR_VERSION'} =~ /QUEBEC/i)) { $col_span_cad2 = 4; } $aff .= "\n"; $aff .= "\n"; if (($CONF{'AFF_CAD_HT'} != 0) && ($CONF{'VAR_VERSION'} !~ /QUEBEC/i)) { $aff .= "\n"; } $aff .= "\n"; foreach $i(1..$i) { $sel = $dbh->prepare("SELECT $col_nom,image,taxe,prix_ttc,reference,poids,promotion,prix_promo,date_debut_promo,date_fin_promo,frais_port FROM $CONF{MYSQL_TAB_ARTICLES} WHERE id='$ref[$i]'"); $sel->execute; ($nom,$image_art,$art_taxe,$prix_ttc,$refer,$le_poids,$promo,$prix_promo,$date_promo_deb,$date_promo,$f_p_art) = $sel->fetchrow(); $poids[$i] = $le_poids; $prix_plus_opt_tot = 0; $prix_plus_opt_tot_dev = 0; if (($promo eq 'oui') && ($date_promo >= $date) && ($date_promo_deb <= $date)) { $prix_ttc = $prix_promo; } $prix_ttc = sprintf("%.2f", $prix_ttc); if ($num_dev > 0) { $prix_ttc_dev = $prix_ttc; $prix_ttc = sprintf("%.2f", $prix_ttc * $CONF{"MONNAIE_CONV_$num_dev"}); } if ($exist_rev == 1) { $prix_ttc = sprintf("%.2f", $prix_ttc - (($prix_ttc * $pourcent_reduc_rev) / 100) ); if ($num_dev > 0) { $prix_ttc_dev = $prix_ttc; } } if ($opt[$i] ne 'na') { $nom = $nom.'
'; $nom_tab = 'options_'.$i; @$nom_tab = split (/##/, $opt[$i]); foreach $lopt(@$nom_tab) { ($nom_opt,$valeur_opt,$prix_plus_opt,$poids_plus_opt) = split(/,/,$lopt); $nom = $nom.''.$nom_opt.' : '.$valeur_opt.' '; if ($num_dev > 0) { $prix_plus_opt_tot_dev = $prix_plus_opt_tot_dev + $prix_plus_opt; $prix_plus_opt = sprintf("%.2f", $prix_plus_opt * $CONF{"MONNAIE_CONV_$num_dev"}); } $prix_plus_opt_tot = $prix_plus_opt_tot + $prix_plus_opt; $poids[$i] = $poids[$i] + $poids_plus_opt; } $prix_ttc = sprintf("%.2f", ($prix_ttc + $prix_plus_opt_tot)); if ($num_dev > 0) { $prix_ttc_dev = sprintf("%.2f", ($prix_ttc_dev + $prix_plus_opt_tot_dev)); } } $aff_img_art = "\"$LANG{ALT_IMG}\""; $aff .= "\n"; $aff .= "\n\n"; $prix_ttc2 = sprintf("%.2f",($qte[$i] * $prix_ttc)); if ($num_dev > 0) { $prix_ttc_dev = sprintf("%.2f",($qte[$i] * $prix_ttc_dev)); } if (($CONF{'AFF_CAD_HT'} != 0) && ($CONF{'VAR_VERSION'} !~ /QUEBEC/i)) { $prix_ht = sprintf("%.2f",$prix_ttc2 / (($art_taxe / 100) + 1)); $aff .= "\n"; $tot_ht = sprintf("%.2f",($tot_ht + $prix_ht)); } $aff .= "\n"; $tot_ttc = sprintf("%.2f",($tot_ttc + $prix_ttc2)); if ($num_dev > 0) { $tot_ttc_dev = sprintf("%.2f",($tot_ttc_dev + $prix_ttc_dev)); } if ($type_frais == 5) { $frais_tot = sprintf("%.2f",(($f_p_art * $qte[$i]) + $frais_tot)); } $poids[$i] = $poids[$i] * $qte[$i]; $sel->finish; } # fin foreach $i $dbh->disconnect; if (($CONF{'AFF_CAD_HT'} != 0) && ($CONF{'VAR_VERSION'} !~ /QUEBEC/i)) { $aff .= "\n"; } if ($num_dev > 0) { $tot_ttc_bis = $tot_ttc_dev; } else { $tot_ttc_bis = $tot_ttc; } if ($CONF{'VEN_TYPE_FRAIS'} == 0) { $frais_tot = '0.00'; } if (($CONF{'VEN_TYPE_FRAIS'} == 1) || ($CONF{'VEN_TYPE_FRAIS'} == 3) || ($CONF{'VEN_TYPE_FRAIS'} == 6) || ($CONF{'VEN_TYPE_FRAIS'} == 7)) { if (($CONF{'VEN_TYPE_FRAIS'} == 1) || ($CONF{'VEN_TYPE_FRAIS'} == 6)) { $ty = $tot_ttc_bis; } if (($CONF{'VEN_TYPE_FRAIS'} == 3) || ($CONF{'VEN_TYPE_FRAIS'} == 7)) { $ty = $qte_tot; } if (($CONF{'VEN_TYPE_FRAIS'} == 1) || ($CONF{'VEN_TYPE_FRAIS'} == 3)) { $nb_tranche_port = $CONF{'VEN_NB_TRANCHE_PORT'}; foreach $nb_tranche_port (1..$nb_tranche_port) { if ($ty >= $CONF{"VEN_TRANCHE_PORT_$nb_tranche_port"}) { $frais_tot = sprintf("%.2f", $CONF{"VEN_FRAIS_$nb_tranche_port"}); } } if ($ty < $CONF{'VEN_TRANCHE_PORT_1'}) { $frais_tot = sprintf("%.2f", $CONF{'VEN_FRAIS_0'}); } } if (($CONF{'VEN_TYPE_FRAIS'} == 6) || ($CONF{'VEN_TYPE_FRAIS'} == 7)) { $nb_tranche_port = $CONF{'VEN_NB_TRANCHE_PORT'}; foreach $nb_tranche_port (1..$nb_tranche_port) { if ($ty >= $CONF{"VEN_TRANCHE_PORT_$nb_tranche_port"}) { $frais_tot = sprintf("%.2f", (($tot_ttc_bis * $CONF{"VEN_FRAIS_$nb_tranche_port"}) / 100)); } } if ($ty < $CONF{'VEN_TRANCHE_PORT_1'}) { $frais_tot = sprintf("%.2f", (($tot_ttc_bis * $CONF{VEN_FRAIS_0}) / 100)); } } } if ($CONF{'VEN_TYPE_FRAIS'} == 2) { $frais_tot = sprintf("%.2f",($tot_ttc_bis * $CONF{VEN_FRAIS}) / 100); } if ($CONF{'VEN_TYPE_FRAIS'} == 4) { $frais_tot = '0.00'; } if ($num_dev > 0) { $frais_tot = sprintf("%.2f", $frais_tot * $CONF{"MONNAIE_CONV_$num_dev"}); } if (($CONF{'VEN_TYPE_FRAIS_POIDS'} > 0) && ($CONF{'VEN_TYPE_FRAIS_POIDS'} <= 2)) { foreach $i(1..$i) { $poids_tot = $poids_tot + $poids[$i]; } if ($CONF{'VEN_TYPE_FRAIS_POIDS'} == 1) { $frais_port_poids = sprintf("%.2f",(($CONF{VEN_POIDS_PRIX} / $CONF{VEN_POIDS_UNIT}) * $poids_tot)); } if ($CONF{'VEN_TYPE_FRAIS_POIDS'} == 2) { $nb_tranche_poids = $CONF{'VEN_NB_TRANCHE_POIDS'}; foreach $nb_tranche_poids (1..$nb_tranche_poids) { if ($poids_tot >= $CONF{"VEN_TRANCHE_POIDS_$nb_tranche_poids"}) { $frais_port_poids = sprintf("%.2f", $CONF{"VEN_POIDS_PRIX_$nb_tranche_poids"}); } } if ($poids_tot < $CONF{'VEN_TRANCHE_POIDS_1'}) { $frais_port_poids = sprintf("%.2f", $CONF{'VEN_POIDS_PRIX_0'}); } } if ($num_dev > 0) { $frais_port_poids = sprintf("%.2f", $frais_port_poids * $CONF{"MONNAIE_CONV_$num_dev"}); } $aff .= "\n"; $tot_ttc = sprintf("%.2f",($tot_ttc + $frais_port_poids)); } $aff_frais_tot = "$frais_tot $monaie" unless $CONF{'VEN_TYPE_FRAIS'} == 4; $aff_frais_tot = $LANG{'FRAIS_VOIR_LIEU'} unless $CONF{'VEN_TYPE_FRAIS'} != 4; $aff .= "\n"; $tot_ttc = sprintf("%.2f",($tot_ttc + $frais_tot)); if (($CONF{'VEN_TYPE_REMISE'} != 0) && ($CONF{'VEN_TYPE_REMISE'} <= 5)) { if (($CONF{'VEN_TYPE_REMISE'}== 1) || ($CONF{'VEN_TYPE_REMISE'} == 4)) { $ty = $tot_ttc_bis; } if (($CONF{'VEN_TYPE_REMISE'} == 3) || ($CONF{'VEN_TYPE_REMISE'} == 5)) { $ty = $qte_tot; } if (($CONF{'VEN_TYPE_REMISE'} == 1) || ($CONF{'VEN_TYPE_REMISE'} == 3) || ($CONF{'VEN_TYPE_REMISE'} == 4) || ($CONF{'VEN_TYPE_REMISE'} == 5)) { if (($CONF{'VEN_TYPE_REMISE'} == 1) || ($CONF{'VEN_TYPE_REMISE'} == 3)) { $nb_tranche_remise = $CONF{'VEN_NB_TRANCHE_REMISE'}; foreach $nb_tranche_remise(1..$nb_tranche_remise) { if ($ty >= $CONF{"VEN_TRANCHE_REMISE_$nb_tranche_remise"}) { $reduc = sprintf("%.2f", $CONF{"VEN_REMISE_$nb_tranche_remise"}); } } if ($ty < $CONF{"VEN_TRANCHE_REMISE_1"}) { $reduc = sprintf("%.2f", $CONF{'VEN_REMISE_0'}); } } if (($CONF{'VEN_TYPE_REMISE'} == 4) || ($CONF{'VEN_TYPE_REMISE'} == 5)) { $nb_tranche_remise = $CONF{'VEN_NB_TRANCHE_REMISE'}; foreach $nb_tranche_remise(1..$nb_tranche_remise) { if ($ty >= $CONF{"VEN_TRANCHE_REMISE_$nb_tranche_remise"}) { $reduc = sprintf("%.2f", (($tot_ttc_bis * $CONF{"VEN_REMISE_$nb_tranche_remise"}) / 100)); } } if ($ty < $CONF{"VEN_TRANCHE_REMISE_1"}) { $reduc = sprintf("%.2f", (($tot_ttc_bis * $CONF{'VEN_REMISE_0'}) / 100)); } } } if ($CONF{'VEN_TYPE_REMISE'} == 2) { $reduc = sprintf("%.2f",($tot_ttc_bis * $CONF{'VEN_REMISE'}) / 100); } if ($num_dev > 0) { $reduc = sprintf("%.2f", $reduc * $CONF{"MONNAIE_CONV_$num_dev"}); } $aff .= "\n"; $tot_ttc = sprintf("%.2f",($tot_ttc - $reduc)); } if ($CONF{VAR_VERSION} =~ /QUEBEC/i) { $aff_tot = $aff_tot.' (HT)'; } $aff .= "
$LANG{NAME}$LANG{AFF_REF}$LANG{PRICE2}$LANG{QUANT}$LANG{PRICE3}$LANG{PRICE}
$aff_img_art$nom
$refer$prix_ttc $monaie$qte[$i]$prix_ht $monaie$prix_ttc2 $monaie
$LANG{AFF_SOUS_TOTHT} : $tot_ht $monaie 
$LANG{F_PORT_POIDS} : ($poids_tot g) $frais_port_poids $monaie
$LANG{F_PORT} : $aff_frais_tot
$LANG{F_REDUC} : $reduc $monaie
$LANG{AFF_TOT} : $tot_ttc $monaie
\n"; $aff.="

>\" name=confirm>
"; $phrase = "\n\n".$LANG{'MOT_COMMANDER'}.''." ($LANG{CONTINUER_ACHAT})"; print "Content-type: text/html\n\n"; &aff_menu; &affichage; exit; } # fin etape 1 sub le_vli { $vli = &v_li; if ($vli == 0) { $aff = "LICENCE INCORRECT !!
"; open (MAIL,"|$CONF{VAR_SENDMAIL} -t"); print MAIL "To: info\@webshop-fr.com\nFrom: $CONF{ADMIN_EMAIL}\n"; print MAIL "Subject: MODIF WEBSHOP 4\n\n"; print MAIL "WEBSHOP 4, PROBLEME LICENCE :\n $site_base\n $CGI\n"; close (MAIL); } } sub purchase_etape_2 { $mail = $Form{'email'}; $erreur = 0; $aff_loca = ''; if (!$Form{'nom'}) { $erreur++; $aff_erreur = "$LANG{AFF_ERROR_FORM} $LANG{YNAME}..\n"; } if (&verifie_email($mail) == 0) { $erreur++; $aff_erreur = "$LANG{AFF_ERROR_FORM_EMAIL} $LANG{COURRIEL}...\n"; } if (!$Form{'prenom'}) { $erreur++; $aff_erreur = "$LANG{AFF_ERROR_FORM} $LANG{YNAME}..\n"; } if (!$Form{'adresse'}) { $erreur++; $aff_erreur = "$LANG{AFF_ERROR_FORM} $LANG{ADRESSE}..\n"; } if (!$Form{'cp'}) { $erreur++; $aff_erreur = "$LANG{AFF_ERROR_FORM} $LANG{ZIPCODE}..\n"; } if (!$Form{'ville'}) { $erreur++; $aff_erreur = "$LANG{AFF_ERROR_FORM} $LANG{CITY}..\n"; } if ((!$Form{'pays'}) && ($version =~ /EU/i)) { $erreur++; $aff_erreur = "$LANG{AFF_ERROR_FORM} $LANG{COUNTRY}..\n"; } if ($Form{'code_promo'} ne '') { if (length $Form{'code_promo'} == 10) { $sth_v_code = $dbh->prepare("SELECT type,remise FROM $CONF{MYSQL_TAB_CODES} WHERE code='$Form{code_promo}' AND date_debut<=$date AND date_fin>=$date AND nb_utilisation>0 AND valid=1"); $sth_v_code->execute; $verif_code = $sth_v_code->rows; if ($verif_code == 1) { ($type_code,$remise_code) = $sth_v_code->fetchrow(); } $sth_v_code->finish; } if ((length $Form{'code_promo'} != 10) || ($verif_code != 1)) { $erreur++; $aff_erreur = "$LANG{AFF_ERROR_FORM} $LANG{CODES_DE_PROMO_AFF}..\n"; } } if ($CONF{'VEN_TYPE_FRAIS'} == 4) { $fic_frais = "$SHOP_DATAS_DIR/FRAIS_PORT\.dat"; open (FRAIS, "<$fic_frais"); @FRAIS = ; close(FRAIS); foreach $loca(@FRAIS) { if ($CONF{'VAR_VERSION'} =~ /EUROPE/i) { ($lieu,$fr_p) = split (/\|/, $loca); } if ($CONF{'VAR_VERSION'} =~ /QUEBEC/i) { ($lieu,$fr_p,$na1,$na2,$na3,$na4,$na5) = split (/\|/, $loca); } if ($lieu eq $Form{'localisation'}) { if ($CONF{'VAR_VERSION'} =~ /QUEBEC/i) { $LANG{'DPT'} = "$LANG{COUNTRY} / $LANG{DPT}"; } if ($fr_p =~ /na/i) { $erreur++; $aff_erreur = "$LANG{AFF_ERROR_FORM} $LANG{DPT}..\n"; } else { $aff_loca = "$LANG{DPT} :$Form{'localisation'}\n"; $frais_tot = $fr_p; } last; } } } if ($CONF{'VAR_VERSION'} =~ /QUEBEC/i) { $fic_frais = "$SHOP_DATAS_DIR/FRAIS_PORT\.dat"; open (FRAIS, "<$fic_frais"); @FRAIS = ; close(FRAIS); foreach $loca(@FRAIS) { ($lieu,$fr_p,$syst_taxe,$la_t1,$la_t2,$n_tax1,$n_tax2) = split (/\|/, $loca); if ($lieu eq $Form{'localisation'}) { if ($syst_taxe =~ /na/i) { $erreur++; $aff_erreur = "$LANG{AFF_ERROR_FORM} $LANG{COUNTRY} / $LANG{DPT}..\n"; } else { $aff_loca = "$LANG{COUNTRY} / $LANG{DPT} :$Form{'localisation'}\n"; } last; } } } if ($erreur != 0) { print "Content-type: text/html\n\n"; $phrase = "$LANG{'ERROR_FORMULAIRE'}
$aff_erreur\n"; $aff=" $LANG{'BACKTO'}"; $dbh->disconnect; &aff_menu; &affichage; exit; } $LANG{'ADVERT_IP'} =~ s/%%%REMOTE_ADR%%%/$ENV{REMOTE_ADDR}/g; $phrase = "\n\n".$LANG{'VEUILLEZ_CONFIRM'}." ($LANG{CONTINUER_ACHAT})\n

".$LANG{'ADVERT_IP'}; $id_client = $Form{'id_client'}; if (!$Form{'id_client'}) { #$nom = $Form{'nom'}; $nom =~ s/\'/\\'/g; #$prenom = $Form{'prenom'}; $prenom =~ s/\'/\\'/g; #$ville = $Form{'ville'}; $ville =~ s/\'/\\'/g; $sel_c = $dbh->prepare("SELECT id FROM $CONF{'MYSQL_TAB_CLIENTS'} WHERE nom=? AND prenom=? AND email=? AND code_postal=? AND ville=? AND qualite=?"); $sel_c->execute($Form{nom},$Form{prenom},$mail,$Form{cp},$Form{ville},$Form{qualite}); $trouv = $sel_c->rows; if ($trouv == 1) { $id_client = $sel_c->fetchrow(); $phrase .= '

'.$LANG{'AFF_DEJ_CLIENT'}.' : '.$id_client.''; } $sel_c->finish; } if ($trouv == 1 || $Form{'id_client'}) { if ($Form{'id_client'}) { $id_client_t = $Form{'id_client'}; } else { $id_client_t = $id_client; } $sel_order = $dbh->prepare("SELECT id FROM $CONF{MYSQL_TAB_COMMANDES} WHERE id_client='$id_client_t' ORDER BY id DESC"); $sel_order->execute; $com_d_trouve = $sel_order->rows; if ($com_d_trouve > 0) { $aff .= qq~
$LANG{ANCIENNES_COMMANDES} :
$LANG{ORDER_NUM} :
~; } $sel_order->finish; } $aff.="
$LANG{COOR} :
\n"; if ($Form{'societe'} ne '') { $aff.="\n"; } $aff.=" $aff_loca "; if ($CONF{'VAR_VERSION'} =~ /EUROPE/i) { $aff .= " \n"; } $aff.="\n"; if ($Form{'tel'} ne '') { $aff.="\n"; } if ($Form{'fax'} ne '') { $aff.="\n"; } if ($Form{'ad_livraison'} ne '') { $livraison = $Form{'ad_livraison'}; $livraison =~ s/\r\n/
/g; $aff.="\n"; } if ($Form{'message'} ne '') { $mess = $Form{'message'}; $mess =~ s/\r\n/
/g; $aff.="\n"; } if ($verif_code == 1) { $aff.="\n"; } if ($Form{'payby'} eq 'cc') { $pay_by = $LANG{'C_C'}; } if ($Form{'payby'} eq 'cheque') { $pay_by = $LANG{'CHEQUE'}; } if ($Form{'payby'} eq 'rembour') { $aff_frais_remb = ''; if ($CONF{'VEN_PAYBY_REMBOUR_FRAIS'} > 0) { $f_sup_rembour = sprintf("%.2f", $CONF{'VEN_PAYBY_REMBOUR_FRAIS'}); if ($num_dev > 0) { $f_sup_rembour = sprintf("%.2f", $f_sup_rembour * $CONF{"MONNAIE_CONV_$num_dev"}); } $aff_frais_remb = ' (+'.$f_sup_rembour.' '.$monaie.')'; } $pay_by = $LANG{'CONTRE_REMBOUR'}.$aff_frais_remb; } if ($Form{'payby'} eq 'virement') { $pay_by = $LANG{'VIREMENT'}; } if ($Form{'payby'} eq 'mandat') { $pay_by = $LANG{'MANDAT_P'}; } $aff.="
$LANG{YNAME} / $LANG{YFNAME} : $Form{'qualite'} $Form{'nom'} $Form{'prenom'} \n"; if ((defined $Form{'id_client'}) || ($trouv == 1)) { $aff.=""; } $aff.="
$LANG{SOCIETE} :$Form{'societe'}
$LANG{ADRESSE} : $Form{'adresse'}
$LANG{ZIPCODE} / $LANG{CITY} : $Form{'cp'} $Form{'ville'}
$LANG{COUNTRY} : $Form{'pays'}
$LANG{COURRIEL} : $mail
$LANG{TEL} :$Form{'tel'}
$LANG{FAX} :$Form{'fax'}
$$LANG{AD_LIVRAISON} :$livraison
$LANG{MESS_EVENT} :$mess
$LANG{CODES_DE_PROMO_AFF} :$Form{'code_promo'}
$LANG{TYPEOFPAYMENT} : $pay_by


$LANG{YOURORDER} :
"; $i = 0; @caddie = split(/\|\|\|/, $cad); foreach $cad (@caddie) { ($laref,$laqte,$lopt) = split (/\|/, $cad); $i++; $ref[$i] = $laref; $qte[$i] = $laqte; $opt[$i] = $lopt; $qte_tot = $qte_tot + $laqte; } $col_span_cad2 = 5; if (($CONF{'AFF_CAD_HT'} == 0) || ($CONF{'VAR_VERSION'} =~ /QUEBEC/i)) { $col_span_cad2 = 4; } $aff .= "\n"; $aff .= "\n"; if (($CONF{'AFF_CAD_HT'} != 0) && ($CONF{'VAR_VERSION'} !~ /QUEBEC/i)) { $aff .= "\n"; } $aff .= "\n"; foreach $i(1..$i) { $sel = $dbh->prepare("SELECT $col_nom,image,taxe,prix_ttc,reference,poids,promotion,prix_promo,date_debut_promo,date_fin_promo,frais_port FROM $CONF{MYSQL_TAB_ARTICLES} WHERE id='$ref[$i]'"); $sel->execute; ($nom,$image_art,$art_taxe,$prix_ttc,$refer,$le_poids,$promo,$prix_promo,$date_promo_deb,$date_promo,$f_p_art) = $sel->fetchrow(); $poids[$i] = $le_poids; $prix_plus_opt_tot = 0; $prix_plus_opt_tot_dev = 0; if (($promo eq 'oui') && ($date_promo >= $date) && ($date_promo_deb <= $date)) { $prix_ttc = $prix_promo; } $prix_ttc = sprintf("%.2f", $prix_ttc); if ($num_dev > 0) { $prix_ttc_dev = $prix_ttc; $prix_ttc = sprintf("%.2f", $prix_ttc * $CONF{"MONNAIE_CONV_$num_dev"}); } if ($exist_rev == 1) { $prix_ttc = sprintf("%.2f", $prix_ttc - (($prix_ttc * $pourcent_reduc_rev) / 100) ); if ($num_dev > 0) { $prix_ttc_dev = $prix_ttc; } } if ($opt[$i] ne 'na') { $nom = $nom.'
'; $nom_tab = 'options_'.$i; @$nom_tab = split (/##/, $opt[$i]); foreach $lopt(@$nom_tab) { ($nom_opt,$valeur_opt,$prix_plus_opt,$poids_plus_opt) = split(/,/,$lopt); $nom = $nom.''.$nom_opt.' : '.$valeur_opt.' '; if ($num_dev > 0) { $prix_plus_opt_tot_dev = $prix_plus_opt_tot_dev + $prix_plus_opt; $prix_plus_opt = sprintf("%.2f", $prix_plus_opt * $CONF{"MONNAIE_CONV_$num_dev"}); } $prix_plus_opt_tot = $prix_plus_opt_tot + $prix_plus_opt; $poids[$i] = $poids[$i] + $poids_plus_opt; } $prix_ttc = sprintf("%.2f", ($prix_ttc + $prix_plus_opt_tot)); if ($num_dev > 0) { $prix_ttc_dev = sprintf("%.2f", ($prix_ttc_dev + $prix_plus_opt_tot_dev)); } } $aff_img_art = "\"$LANG{ALT_IMG}\""; $aff .= "\n"; $aff .= "\n\n"; $prix_ttc2 = sprintf("%.2f",($qte[$i] * $prix_ttc)); if ($num_dev > 0) { $prix_ttc_dev = sprintf("%.2f",($qte[$i] * $prix_ttc_dev)); } if (($CONF{'AFF_CAD_HT'} != 0) && ($CONF{'VAR_VERSION'} !~ /QUEBEC/i)) { $prix_ht = sprintf("%.2f",$prix_ttc2 / (($art_taxe / 100) + 1)); $aff .= "\n"; $tot_ht = sprintf("%.2f",($tot_ht + $prix_ht)); } $aff .= "\n"; $tot_ttc = sprintf("%.2f",($tot_ttc + $prix_ttc2)); if ($num_dev > 0) { $tot_ttc_dev = sprintf("%.2f",($tot_ttc_dev + $prix_ttc_dev)); } if ($type_frais == 5) { $frais_tot = sprintf("%.2f",(($f_p_art * $qte[$i]) + $frais_tot)); } $poids[$i] = $poids[$i] * $qte[$i]; $sel->finish; } # fin foreach $i $dbh->disconnect; if (($CONF{'AFF_CAD_HT'} != 0) && ($CONF{'VAR_VERSION'} !~ /QUEBEC/i)) { $aff .= "\n"; } if ($num_dev > 0) { $tot_ttc_bis = $tot_ttc_dev; } else { $tot_ttc_bis = $tot_ttc; } if ($CONF{'VEN_TYPE_FRAIS'} == 0) { $frais_tot = '0.00'; } if (($CONF{'VEN_TYPE_FRAIS'} == 1) || ($CONF{'VEN_TYPE_FRAIS'} == 3) || ($CONF{'VEN_TYPE_FRAIS'} == 6) || ($CONF{'VEN_TYPE_FRAIS'} == 7)) { if (($CONF{'VEN_TYPE_FRAIS'} == 1) || ($CONF{'VEN_TYPE_FRAIS'} == 6)) { $ty = $tot_ttc_bis; } if (($CONF{'VEN_TYPE_FRAIS'} == 3) || ($CONF{'VEN_TYPE_FRAIS'} == 7)) { $ty = $qte_tot; } if (($CONF{'VEN_TYPE_FRAIS'} == 1) || ($CONF{'VEN_TYPE_FRAIS'} == 3)) { $nb_tranche_port = $CONF{'VEN_NB_TRANCHE_PORT'}; foreach $nb_tranche_port (1..$nb_tranche_port) { if ($ty >= $CONF{"VEN_TRANCHE_PORT_$nb_tranche_port"}) { $frais_tot = sprintf("%.2f", $CONF{"VEN_FRAIS_$nb_tranche_port"}); } } if ($ty < $CONF{'VEN_TRANCHE_PORT_1'}) { $frais_tot = sprintf("%.2f", $CONF{'VEN_FRAIS_0'}); } } if (($CONF{'VEN_TYPE_FRAIS'} == 6) || ($CONF{'VEN_TYPE_FRAIS'} == 7)) { $nb_tranche_port = $CONF{'VEN_NB_TRANCHE_PORT'}; foreach $nb_tranche_port (1..$nb_tranche_port) { if ($ty >= $CONF{"VEN_TRANCHE_PORT_$nb_tranche_port"}) { $frais_tot = sprintf("%.2f", (($tot_ttc_bis * $CONF{"VEN_FRAIS_$nb_tranche_port"}) / 100)); } } if ($ty < $CONF{'VEN_TRANCHE_PORT_1'}) { $frais_tot = sprintf("%.2f", (($tot_ttc_bis * $CONF{VEN_FRAIS_0}) / 100)); } } } if ($CONF{'VEN_TYPE_FRAIS'} == 2) { $frais_tot = sprintf("%.2f",($tot_ttc_bis * $CONF{VEN_FRAIS}) / 100); } if ($num_dev > 0) { $frais_tot = sprintf("%.2f", $frais_tot * $CONF{"MONNAIE_CONV_$num_dev"}); } if (($CONF{'VEN_TYPE_FRAIS_POIDS'} > 0) && ($CONF{'VEN_TYPE_FRAIS_POIDS'} <= 2)) { foreach $i(1..$i) { $poids_tot = $poids_tot + $poids[$i]; } if ($CONF{'VEN_TYPE_FRAIS_POIDS'} == 1) { $frais_port_poids = sprintf("%.2f",(($CONF{VEN_POIDS_PRIX} / $CONF{VEN_POIDS_UNIT}) * $poids_tot)); } if ($CONF{'VEN_TYPE_FRAIS_POIDS'} == 2) { $nb_tranche_poids = $CONF{'VEN_NB_TRANCHE_POIDS'}; foreach $nb_tranche_poids (1..$nb_tranche_poids) { if ($poids_tot >= $CONF{"VEN_TRANCHE_POIDS_$nb_tranche_poids"}) { $frais_port_poids = sprintf("%.2f", $CONF{"VEN_POIDS_PRIX_$nb_tranche_poids"}); } } if ($poids_tot < $CONF{'VEN_TRANCHE_POIDS_1'}) { $frais_port_poids = sprintf("%.2f", $CONF{'VEN_POIDS_PRIX_0'}); } } if ($num_dev > 0) { $frais_port_poids = sprintf("%.2f", $frais_port_poids * $CONF{"MONNAIE_CONV_$num_dev"}); } $aff .= "\n"; $tot_ttc = sprintf("%.2f",($tot_ttc + $frais_port_poids)); } $aff .= "\n"; $tot_ttc = sprintf("%.2f",($tot_ttc + $frais_tot)); if (($CONF{'VEN_TYPE_REMISE'} != 0) && ($CONF{'VEN_TYPE_REMISE'} <= 5)) { if (($CONF{'VEN_TYPE_REMISE'}== 1) || ($CONF{'VEN_TYPE_REMISE'} == 4)) { $ty = $tot_ttc_bis; } if (($CONF{'VEN_TYPE_REMISE'} == 3) || ($CONF{'VEN_TYPE_REMISE'} == 5)) { $ty = $qte_tot; } if (($CONF{'VEN_TYPE_REMISE'} == 1) || ($CONF{'VEN_TYPE_REMISE'} == 3) || ($CONF{'VEN_TYPE_REMISE'} == 4) || ($CONF{'VEN_TYPE_REMISE'} == 5)) { if (($CONF{'VEN_TYPE_REMISE'} == 1) || ($CONF{'VEN_TYPE_REMISE'} == 3)) { $nb_tranche_remise = $CONF{'VEN_NB_TRANCHE_REMISE'}; foreach $nb_tranche_remise(1..$nb_tranche_remise) { if ($ty >= $CONF{"VEN_TRANCHE_REMISE_$nb_tranche_remise"}) { $reduc = sprintf("%.2f", $CONF{"VEN_REMISE_$nb_tranche_remise"}); } } if ($ty < $CONF{"VEN_TRANCHE_REMISE_1"}) { $reduc = sprintf("%.2f", $CONF{'VEN_REMISE_0'}); } } if (($CONF{'VEN_TYPE_REMISE'} == 4) || ($CONF{'VEN_TYPE_REMISE'} == 5)) { $nb_tranche_remise = $CONF{'VEN_NB_TRANCHE_REMISE'}; foreach $nb_tranche_remise(1..$nb_tranche_remise) { if ($ty >= $CONF{"VEN_TRANCHE_REMISE_$nb_tranche_remise"}) { $reduc = sprintf("%.2f", (($tot_ttc_bis * $CONF{"VEN_REMISE_$nb_tranche_remise"}) / 100)); } } if ($ty < $CONF{"VEN_TRANCHE_REMISE_1"}) { $reduc = sprintf("%.2f", (($tot_ttc_bis * $CONF{'VEN_REMISE_0'}) / 100)); } } } if ($CONF{'VEN_TYPE_REMISE'} == 2) { $reduc = sprintf("%.2f",($tot_ttc_bis * $CONF{'VEN_REMISE'}) / 100); } if ($num_dev > 0) { $reduc = sprintf("%.2f", $reduc * $CONF{"MONNAIE_CONV_$num_dev"}); } $aff .= "\n"; $tot_ttc = sprintf("%.2f",($tot_ttc - $reduc)); } if (($CONF{VAR_VERSION} =~ /QUEBEC/i) && ($syst_taxe != 0)) # ICI { if ($syst_taxe == 1) { $la_taxe = sprintf("%.2f",($tot_ttc * $la_t1) / 100); $tot_ttc = sprintf("%.2f",($tot_ttc + $la_taxe)); $aff .= "\n"; } if ($syst_taxe == 2) { $la_taxe1 = sprintf("%.2f",($tot_ttc * $la_t1) / 100); $la_taxe2 = sprintf("%.2f",($tot_ttc * $la_t2) / 100); $tot_ttc = sprintf("%.2f",($tot_ttc + $la_taxe1 + $la_taxe2)); $aff .= "\n"; $aff .= "\n"; } if ($syst_taxe == 3) { $la_taxe1 = sprintf("%.2f",($tot_ttc * $la_t1) / 100); $tot_ttc = sprintf("%.2f",($tot_ttc + $la_taxe1)); $la_taxe2 = sprintf("%.2f",($tot_ttc * $la_t2) / 100); $tot_ttc = sprintf("%.2f",($tot_ttc + $la_taxe2)); $aff .= "\n"; $aff .= "\n"; } } if ($verif_code == 1) { if ($type_code == 2) { $tot_rem_code = sprintf("%.2f",($tot_ttc * $remise_code) / 100); $tot_ttc = sprintf("%.2f",$tot_ttc - (($tot_ttc * $remise_code) / 100)); } if ($type_code == 1) { if ($num_dev > 0) { $remise_code = sprintf("%.2f", $remise_code * $CONF{"MONNAIE_CONV_$num_dev"}); } $tot_ttc = sprintf("%.2f",$tot_ttc - $remise_code); $tot_rem_code = $remise_code; } $aff .= ""; } if ($f_sup_rembour) { $tot_ttc = sprintf("%.2f",$tot_ttc + $f_sup_rembour); $aff .= "\n"; } $aff .= "
$LANG{NAME}$LANG{AFF_REF}$LANG{PRICE2}$LANG{QUANT}$LANG{PRICE3}$LANG{PRICE}
$aff_img_art$nom
$refer$prix_ttc $monaie$qte[$i]$prix_ht $monaie$prix_ttc2 $monaie
$LANG{AFF_SOUS_TOTHT} : $tot_ht $monaie 
$LANG{F_PORT_POIDS} : ($poids_tot g) $frais_port_poids $monaie
$LANG{F_PORT} : $frais_tot $monaie
$LANG{F_REDUC} : $reduc $monaie
$LANG{'AFF_TAX'} ($n_tax1) : $la_taxe $monaie
$LANG{'AFF_TAX'} 1 ($n_tax1): $la_taxe1 $monaie
$LANG{'AFF_TAX'} 2 ($n_tax2): $la_taxe2 $monaie
$LANG{'AFF_TAX'} 1 ($n_tax1) : $la_taxe1 $monaie
$LANG{'AFF_TAX'} 2 ($n_tax2) : $la_taxe2 $monaie
$LANG{'CODES_DE_PROMO_AFF'} : - $tot_rem_code $monaie
$LANG{'CONTRE_REMBOUR'} : $f_sup_rembour $monaie
$LANG{'AFF_TOT'} : $tot_ttc $monaie
\n"; $aff.="

>\" onClick=\"this.value='...'\">
"; print "Content-type: text/html\n\n"; &aff_menu; &le_vli; &affichage; exit; } # fin sub etape_2 sub pay { use CGI; $qw = new CGI; &date; $monaie = $CONF{"MONNAIE_$num_dev"}; $qw_ACT_0 = "ACT=home"; $qw_ACT = "ACT=home"; if ($CONF{'AFF_AUTO'} == 1) { $qw_BACK_plus = ''; $qw_BACK = "&BACK=$Form{BACK}&page=$Form{page}"; if ($Form{'BACK'} eq 'category') { $qw_BACK_plus = "&cat=$Form{cat}&order=$Form{order}"; } if ($Form{'BACK'} eq 'offer') { $qw_BACK_plus = "&order=$Form{order}"; } if ($Form{'BACK'} eq 'alpha') { $qw_BACK_plus = "&l=$Form{l}"; } if ($Form{'BACK'} eq 'search') { $Form{query} =~ tr/ /+/; $qw_BACK_plus = "&order=$Form{order}&query=$Form{query}&max=$Form{max}&booleen=$Form{booleen}&in=$Form{in}"; } $qw_BACK .= $qw_BACK_plus; $qw_BACK_link = "$CGI?ACT=$Form{BACK}&page=$Form{page}".$qw_BACK_plus.$query; } if ($CONF{'AFF_AUTO'} == 0 && $ENV{'HTTP_REFERER'} !~ /webshop\.cgi/i && $ENV{'HTTP_REFERER'} !~ /webshop-admin\.cgi/i && $ENV{'HTTP_REFERER'} =~ /$DOMAIN/i) { $qw_BACK_link = "$ENV{'HTTP_REFERER'}"; $ENV{'HTTP_REFERER'} =~ tr/ /+/; $query .= qq~&REFERER=$ENV{HTTP_REFERER}~; } if ($CONF{'AFF_AUTO'} == 0 && $Form{'REFERER'}) { $qw_BACK_link = $Form{'REFERER'}; $Form{'REFERER'} =~ tr/ /+/; $query .= qq~&REFERER=$Form{REFERER}~; } $nomdusite = ($ENV{'SERVER_NAME'} || $ENV{'HTTP_HOST'}); if ($ENV{'HTTP_REFERER'} !~ /$nomdusite/i || !$ENV{'HTTP_REFERER'}) { print "Content-type: text/html\n\n"; $aff = "ACCESS DENIED FROM $ENV{'HTTP_REFERER'} !
\n"; $dbh->disconnect; &aff_menu; &affichage; exit; } $cad = $qw->cookie('cart'); if (($cad =~ /^\s+$/) || ($cad eq 'vide')) { print "Content-type: text/html\n\n"; $aff = "$LANG{PANVIDE}

$LANG{CONTINUER_ACHAT}\n"; $dbh->disconnect; &aff_menu; &affichage; exit; } $qualite = $Form{'qualite'}; $nom = $Form{'nom'}; $prenom = $Form{'prenom'}; $adresse = $Form{'adresse'}; $code_postal = $Form{'cp'}; $ville = $Form{'ville'}; $pays = $Form{'pays'}; $mail = $Form{'email'}; $coordonees = "$LANG{YNAME} : $qualite $nom $prenom\n"; if ($Form{'societe'}) { $societe = $Form{'societe'}; $coordonees .= "$LANG{SOCIETE} : $societe\n"; } else { $societe = '---'; } $coordonees .= "$LANG{ADRESSE} : $adresse\n$LANG{ZIPCODE} / $LANG{CITY} : $code_postal $ville\n"; #$nom =~ s/\'/\\'/g; $prenom =~ s/\'/\\'/g; $adresse =~ s/\'/\\'/g; $ville =~ s/\'/\\'/g; #$pays =~ s/\'/\\'/g; $societe =~ s/\'/\\'/; if (($CONF{'VEN_TYPE_FRAIS'} == 4) && ($CONF{'VAR_VERSION'} =~ /EUROPE/i)) { $coordonees .= "$LANG{'DPT'} : $Form{'localisation'}\n"; } if ($CONF{'VAR_VERSION'} =~ /EUROPE/i) { $coordonees .= "$LANG{'COUNTRY'} : $pays\n"; } if ($CONF{'VAR_VERSION'}=~ /QUEBEC/i) { $coordonees .= "$LANG{'COUNTRY'} / $LANG{'DPT'} : $Form{'localisation'}\n"; $pays = $Form{'localisation'}; } $coordonees .= "$LANG{'COURRIEL'} : $mail\n"; if ($Form{'tel'}) { $tel = $Form{'tel'}; $coordonees .= "$LANG{'TEL'} : $tel\n"; } else { $tel = '---'; } if ($Form{'fax'}) { $fax = $Form{'fax'}; $coordonees .= "$LANG{'FAX'} : $fax\n"; } else { $fax = '---'; } if ($Form{'ad_livraison'}) { $livraison = $Form{'ad_livraison'}; $coordonees .= "$LANG{AD_LIVRAISON} : $livraison\n";} else { $livraison = '---'; } if ($Form{'message'}) { $message = $Form{'message'}; $coordonees .= "$LANG{MESS_EVENT} : $message\n"; } else { $message = '---'; } #$livraison =~ s/\'/\\'/; $message =~ s/\'/\\'/; if ($Form{'code_promo'}) { $code_promo = $Form{'code_promo'}; $sth_v_code = $dbh->prepare("SELECT type,remise FROM $CONF{MYSQL_TAB_CODES} WHERE code='$code_promo' AND date_debut<=$date AND date_fin>=$date AND nb_utilisation>0 AND valid=1"); $sth_v_code->execute; $verif_code = $sth_v_code->rows; if ($verif_code == 1) { ($type_code,$remise_code) = $sth_v_code->fetchrow(); $coordonees .= "$LANG{'CODES_DE_PROMO_AFF'} : $code_promo\n"; } $sth_v_code->finish; } $deja_client = 0; if (!$Form{'id_client'}) { $sel_c_2 = $dbh->prepare("SELECT id FROM $CONF{MYSQL_TAB_CLIENTS} WHERE nom=? AND prenom=? AND email=? AND code_postal=? AND ville=? AND qualite=?"); $sel_c_2->execute($nom,$prenom,$mail,$code_postal,$ville,$qualite); $dd_c = $sel_c_2->rows; if ($dd_c > 0) { $id_client2 = $sel_c_2->fetchrow(); $deja_client = 1; } $sel_c_2->finish; } if ((defined $Form{'id_client'}) || ($deja_client == 1)) { $id_client = $Form{'id_client'}; if (($deja_client == 1) && (!$Form{'id_client'})) { $id_client = $id_client2; } $ins_sth = $dbh->prepare("UPDATE $CONF{MYSQL_TAB_CLIENTS} SET qualite=?,nom=?,prenom=?,adresse=?,code_postal=?,ville=?,pays=?,tel=?,fax=?,societe=?,email=?,adresse_livraison=?,lang=? WHERE id='$id_client'"); } if ((!$Form{'id_client'}) && ($deja_client == 0)) { $ins_sth = $dbh->prepare("INSERT INTO $CONF{MYSQL_TAB_CLIENTS} (qualite,nom,prenom,adresse,code_postal,ville,pays,tel,fax,societe,email,adresse_livraison,lang) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?)"); } $ins_sth->execute($qualite,$nom,$prenom,$adresse,$code_postal,$ville,$pays,$tel,$fax,$societe,$mail,$livraison,$lang); $ins_sth->finish; if (!$Form{'id_client'}) { $sel_c = $dbh->prepare("SELECT id FROM $CONF{MYSQL_TAB_CLIENTS} WHERE nom=? AND prenom=? AND email=? AND code_postal=? AND ville=? AND qualite=?"); $sel_c->execute($nom,$prenom,$mail,$code_postal,$ville,$qualite); $id_client = $sel_c->fetchrow(); $sel_c->finish; } if (!$id_client) { print "content-type: text/html\n\n"; $aff = "ERROR !! ID CLIENT INTROUVABLE !"; $dbh->disconnect; &aff_menu; &affichage; exit; } $coordonees = "$LANG{'IDENTIFIANT'} : $id_client\n".$coordonees; if ($Form{'payby'} ne 'cc') { $col_span_cad2 = 5; if (($CONF{'AFF_CAD_HT'} == 0) || ($CONF{'VAR_VERSION'} =~ /QUEBEC/i)) { $col_span_cad2 = 4; } $recap_html .= "\n"; $recap_html .= "\n"; if (($CONF{'AFF_CAD_HT'} != 0) && ($CONF{'VAR_VERSION'} !~ /QUEBEC/i)) { $recap_html .= "\n"; } $recap_html .= "\n"; } @caddie = split(/\|\|\|/, $cad); $i_o = 0; foreach $cad (@caddie) { ($laref,$laqte,$lopt) = split (/\|/, $cad); $i_o++; $sel = $dbh->prepare("SELECT $col_nom,image,taxe,prix_ttc,reference,poids,promotion,prix_promo,date_debut_promo,date_fin_promo,frais_port,is_support_time,support_time FROM $CONF{MYSQL_TAB_ARTICLES} WHERE id='$laref'"); $sel->execute; ($nom,$image_art,$art_taxe,$prix_ttc,$refer,$le_poids,$promo,$prix_promo,$date_promo_deb,$date_promo,$f_p_art,$is_support_time,$support_time) = $sel->fetchrow(); if($is_support_time eq '1'){ $updatesupport = $dbh->prepare("update $CONF{MYSQL_TAB_CLIENTS} set support_time=support_time+$support_time WHERE id='$id_client'"); $updatesupport->execute; $updatesupport-finish; } $poids[$i_o] = $le_poids; $prix_plus_opt_tot = 0; if (($promo eq 'oui') && ($date_promo >= $date) && ($date_promo_deb <= $date)) { $prix_ttc = $prix_promo; } $prix_ttc = sprintf("%.2f", $prix_ttc); if ($num_dev > 0) { $prix_ttc_dev = $prix_ttc; $prix_ttc = sprintf("%.2f", $prix_ttc * $CONF{"MONNAIE_CONV_$num_dev"}); } if ($exist_rev == 1) { $prix_ttc = sprintf("%.2f", $prix_ttc - (($prix_ttc * $pourcent_reduc_rev) / 100) ); if ($num_dev > 0) { $prix_ttc_dev = $prix_ttc; } } if ($lopt ne 'na') { $nom = $nom.'
'; $nom_tab = 'options_'.$i_o; @$nom_tab = split (/##/, $lopt); foreach $opt(@$nom_tab) { ($nom_opt,$valeur_opt,$prix_plus_opt,$poids_plus_opt) = split(/,/,$opt); $nom = $nom.''.$nom_opt.' : '.$valeur_opt.' '; if ($num_dev > 0) { $prix_plus_opt_tot_dev = $prix_plus_opt_tot_dev + $prix_plus_opt; $prix_plus_opt = sprintf("%.2f", $prix_plus_opt * $CONF{"MONNAIE_CONV_$num_dev"}); } $prix_plus_opt_tot = $prix_plus_opt_tot + $prix_plus_opt; $poids[$i_o] = $poids[$i_o] + $poids_plus_opt; } $prix_ttc = sprintf("%.2f", ($prix_ttc + $prix_plus_opt_tot)); if ($num_dev > 0) { $prix_ttc_dev = sprintf("%.2f", ($prix_ttc_dev + $prix_plus_opt_tot_dev)); } } $prix_ttc2 = sprintf("%.2f",($laqte * $prix_ttc)); $tot_ttc = sprintf("%.2f",($tot_ttc + $prix_ttc2)); if ($num_dev > 0) { $prix_ttc_dev = sprintf("%.2f",($laqte * $prix_ttc_dev)); $tot_ttc_dev = sprintf("%.2f",($tot_ttc_dev + $prix_ttc_dev)); } $qte_tot = $laqte + $qte_tot; $nom2 = $nom; $nom2 =~ s/ / /g; $nom2 =~ s/
/\n/g; $nom2 =~ s/<([^\>]+)>//g; $recap .= "$LANG{NAME} : $nom2\n$LANG{AFF_REF} : $refer\n$LANG{QUANT} : $laqte\n"; if (($CONF{'AFF_CAD_HT'} != 0) && ($CONF{'VAR_VERSION'} !~ /QUEBEC/i)) { $prix_ht = sprintf("%.2f",$prix_ttc2 / (($art_taxe / 100) + 1)); $tot_ht = sprintf("%.2f",($tot_ht + $prix_ht)); $recap .= "$LANG{PRICE3} : $prix_ht $monaie\n"; } if ($CONF{'VAR_VERSION'} =~ /EUROPE/i) { $tot_comm_ht = sprintf("%.2f",($tot_comm_ht + ($prix_ttc2 / (($art_taxe / 100) + 1)))); } if ($CONF{'VAR_VERSION'} =~ /QUEBEC/i) { $tot_comm_ht = sprintf("%.2f",($tot_comm_ht + $prix_ttc2)); } $recap .= "$LANG{PRICE}: $prix_ttc2 $monaie\n\n"; if ($Form{'payby'} ne 'cc') { $aff_img_art = "\"$LANG{ALT_IMG}\""; $recap_html .= "\n"; $recap_html .= "\n\n"; if (($CONF{'AFF_CAD_HT'} != 0) && ($CONF{'VAR_VERSION'} !~ /QUEBEC/i)) { $recap_html .= "\n"; } $recap_html .= "\n"; } if ($CONF{'VEN_TYPE_FRAIS'} == 5) { $frais_tot = sprintf("%.2f",(($f_p_art * $laqte) + $frais_tot)); } $poids[$i_o] = $poids[$i_o] * $laqte; $sel->finish; $up_article_v = $dbh->prepare("UPDATE $CONF{MYSQL_TAB_ARTICLES} SET date_debut_promo=date_debut_promo,date_fin_promo=date_fin_promo,nb_vente=nb_vente+1 WHERE id='$laref'"); $up_article_v->execute; $up_article_v->finish; } $les_articles = $recap; if (($CONF{'AFF_CAD_HT'} != 0) && ($CONF{'VAR_VERSION'} !~ /QUEBEC/i)) { $recap .= "$LANG{AFF_SOUS_TOTHT} : $tot_ht $monaie\n"; if ($Form{'payby'} ne 'cc') { $recap_html.= "\n"; } } if ($num_dev > 0) { $tot_ttc_bis = $tot_ttc_dev; } else { $tot_ttc_bis = $tot_ttc; } if ($CONF{'VEN_TYPE_FRAIS'} == 0) { $frais_tot = '0.00'; } if (($CONF{'VEN_TYPE_FRAIS'} == 1) || ($CONF{'VEN_TYPE_FRAIS'} == 3) || ($CONF{'VEN_TYPE_FRAIS'} == 6) || ($CONF{'VEN_TYPE_FRAIS'} == 7)) { if (($CONF{'VEN_TYPE_FRAIS'} == 1) || ($CONF{'VEN_TYPE_FRAIS'} == 6)) { $ty = $tot_ttc_bis; } if (($CONF{'VEN_TYPE_FRAIS'} == 3) || ($CONF{'VEN_TYPE_FRAIS'} == 7)) { $ty = $qte_tot; } if (($CONF{'VEN_TYPE_FRAIS'} == 1) || ($CONF{'VEN_TYPE_FRAIS'} == 3)) { $nb_tranche_port = $CONF{'VEN_NB_TRANCHE_PORT'}; foreach $nb_tranche_port (1..$nb_tranche_port) { if ($ty >= $CONF{"VEN_TRANCHE_PORT_$nb_tranche_port"}) { $frais_tot = sprintf("%.2f", $CONF{"VEN_FRAIS_$nb_tranche_port"}); } } if ($ty < $CONF{'VEN_TRANCHE_PORT_1'}) { $frais_tot = sprintf("%.2f", $CONF{'VEN_FRAIS_0'}); } } if (($CONF{'VEN_TYPE_FRAIS'} == 6) || ($CONF{'VEN_TYPE_FRAIS'} == 7)) { $nb_tranche_port = $CONF{'VEN_NB_TRANCHE_PORT'}; foreach $nb_tranche_port (1..$nb_tranche_port) { if ($ty >= $CONF{"VEN_TRANCHE_PORT_$nb_tranche_port"}) { $frais_tot = sprintf("%.2f", (($tot_ttc_bis * $CONF{"VEN_FRAIS_$nb_tranche_port"}) / 100)); } } if ($ty < $CONF{'VEN_TRANCHE_PORT_1'}) { $frais_tot = sprintf("%.2f", (($tot_ttc_bis * $CONF{VEN_FRAIS_0}) / 100)); } } } if ($CONF{'VEN_TYPE_FRAIS'} == 2) { $frais_tot = sprintf("%.2f",($tot_ttc_bis * $CONF{VEN_FRAIS}) / 100); } if ($CONF{'VEN_TYPE_FRAIS'} == 4) { $fic_frais = "$SHOP_DATAS_DIR/FRAIS_PORT\.dat";; open (FRAIS, "<$fic_frais"); @FRAIS = ; close(FRAIS); foreach $loca(@FRAIS) { if ($CONF{'VAR_VERSION'} =~ /QUEBEC/i) { ($lieu,$fr_p,$na1,$na2,$na3,$na4,$na5) = split (/\|/, $loca); } if ($CONF{'VAR_VERSION'} =~ /EUROPE/i) { ($lieu,$fr_p) = split (/\|/, $loca); } if ($lieu eq "$Form{'localisation'}") { $frais_tot = $fr_p; last; } } } if ($num_dev > 0) { $frais_tot = sprintf("%.2f", $frais_tot * $CONF{"MONNAIE_CONV_$num_dev"}); } if (($CONF{'VEN_TYPE_FRAIS_POIDS'} > 0) && ($CONF{'VEN_TYPE_FRAIS_POIDS'} <= 2)) { foreach $i_o(1..$i_o) { $poids_tot = $poids_tot + $poids[$i_o]; } if ($CONF{'VEN_TYPE_FRAIS_POIDS'} == 1) { $frais_port_poids = sprintf("%.2f",(($CONF{VEN_POIDS_PRIX} / $CONF{VEN_POIDS_UNIT}) * $poids_tot)); } if ($CONF{'VEN_TYPE_FRAIS_POIDS'} == 2) { $nb_tranche_poids = $CONF{'VEN_NB_TRANCHE_POIDS'}; foreach $nb_tranche_poids (1..$nb_tranche_poids) { if ($poids_tot >= $CONF{"VEN_TRANCHE_POIDS_$nb_tranche_poids"}) { $frais_port_poids = sprintf("%.2f", $CONF{"VEN_POIDS_PRIX_$nb_tranche_poids"}); } } if ($poids_tot < $CONF{'VEN_TRANCHE_POIDS_1'}) { $frais_port_poids = sprintf("%.2f", $CONF{'VEN_POIDS_PRIX_0'}); } } if ($num_dev > 0) { $frais_port_poids = sprintf("%.2f", $frais_port_poids * $CONF{"MONNAIE_CONV_$num_dev"}); } if ($Form{'payby'} ne 'cc') { $recap_html .= "\n"; } $recap .= "$LANG{F_PORT_POIDS} : ($poids_tot g) : $frais_port_poids $monaie\n"; $tot_ttc = sprintf("%.2f",($tot_ttc + $frais_port_poids)); } $recap .= "$LANG{F_PORT} : $frais_tot $monaie\n"; if ($Form{'payby'} ne 'cc') { $recap_html .= "\n"; } $tot_ttc = sprintf("%.2f",($tot_ttc + $frais_tot)); if (($CONF{'VEN_TYPE_REMISE'} != 0) && ($CONF{'VEN_TYPE_REMISE'} <= 5)) { if (($CONF{'VEN_TYPE_REMISE'}== 1) || ($CONF{'VEN_TYPE_REMISE'} == 4)) { $ty = $tot_ttc_bis; } if (($CONF{'VEN_TYPE_REMISE'} == 3) || ($CONF{'VEN_TYPE_REMISE'} == 5)) { $ty = $qte_tot; } if (($CONF{'VEN_TYPE_REMISE'} == 1) || ($CONF{'VEN_TYPE_REMISE'} == 3) || ($CONF{'VEN_TYPE_REMISE'} == 4) || ($CONF{'VEN_TYPE_REMISE'} == 5)) { if (($CONF{'VEN_TYPE_REMISE'} == 1) || ($CONF{'VEN_TYPE_REMISE'} == 3)) { $nb_tranche_remise = $CONF{'VEN_NB_TRANCHE_REMISE'}; foreach $nb_tranche_remise(1..$nb_tranche_remise) { if ($ty >= $CONF{"VEN_TRANCHE_REMISE_$nb_tranche_remise"}) { $reduc = sprintf("%.2f", $CONF{"VEN_REMISE_$nb_tranche_remise"}); } } if ($ty < $CONF{"VEN_TRANCHE_REMISE_1"}) { $reduc = sprintf("%.2f", $CONF{'VEN_REMISE_0'}); } } if (($CONF{'VEN_TYPE_REMISE'} == 4) || ($CONF{'VEN_TYPE_REMISE'} == 5)) { $nb_tranche_remise = $CONF{'VEN_NB_TRANCHE_REMISE'}; foreach $nb_tranche_remise(1..$nb_tranche_remise) { if ($ty >= $CONF{"VEN_TRANCHE_REMISE_$nb_tranche_remise"}) { $reduc = sprintf("%.2f", (($tot_ttc_bis * $CONF{"VEN_REMISE_$nb_tranche_remise"}) / 100)); } } if ($ty < $CONF{"VEN_TRANCHE_REMISE_1"}) { $reduc = sprintf("%.2f", (($tot_ttc_bis * $CONF{'VEN_REMISE_0'}) / 100)); } } } if ($CONF{'VEN_TYPE_REMISE'} == 2) { $reduc = sprintf("%.2f",($tot_ttc_bis * $CONF{'VEN_REMISE'}) / 100); } if ($num_dev > 0) { $reduc = sprintf("%.2f", $reduc * $CONF{"MONNAIE_CONV_$num_dev"}); } if ($Form{'payby'} ne 'cc') { $recap_html .= "\n"; } $recap .= "$LANG{F_REDUC} : $reduc $monaie\n"; $tot_ttc = sprintf("%.2f",($tot_ttc - $reduc)); } if ($CONF{'VAR_VERSION'} =~ /QUEBEC/i) { $fic_frais = "$SHOP_DATAS_DIR/FRAIS_PORT\.dat"; open (FRAIS, "<$fic_frais"); @FRAIS = ; close(FRAIS); foreach $loca(@FRAIS) { ($lieu,$fr_p,$syst_taxe,$la_t1,$la_t2,$n_tax1,$n_tax2) = split (/\|/, $loca); if ($lieu eq $Form{'localisation'}) { last; } } if ($syst_taxe == 1) { $la_taxe1 = sprintf("%.2f",($tot_ttc * $la_t1) / 100); $tot_ttc = sprintf("%.2f",($tot_ttc + $la_taxe1)); $recap .= "$LANG{AFF_TAX} ($n_tax1) : $la_taxe1 $monaie\n"; if ($Form{'payby'} ne 'cc') { $recap_html .= "\n"; } } if ($syst_taxe == 2) { $la_taxe1 = sprintf("%.2f",($tot_ttc * $la_t1) / 100); $la_taxe2 = sprintf("%.2f",($tot_ttc * $la_t2) / 100); $tot_ttc = sprintf("%.2f",($tot_ttc + $la_taxe1 + $la_taxe2)); $recap .= "$LANG{AFF_TAX} 1 ($n_tax1) : $la_taxe1 $monaie\n"; $recap .= "$LANG{AFF_TAX} 2 ($n_tax2) : $la_taxe2 $monaie\n"; if ($Form{'payby'} ne 'cc') { $recap_html .= "\n"; $recap_html .= "\n"; } } if ($syst_taxe == 3) { $la_taxe1 = sprintf("%.2f",($tot_ttc * $la_t1) / 100); $tot_ttc = sprintf("%.2f",($tot_ttc + $la_taxe1)); $la_taxe2 = sprintf("%.2f",($tot_ttc * $la_t2) / 100); $tot_ttc = sprintf("%.2f",($tot_ttc + $la_taxe2)); $recap .= "$LANG{AFF_TAX} 1 ($n_tax1) : $la_taxe1 $monaie\n"; $recap .= "$LANG{AFF_TAX} 2 ($n_tax2) : $la_taxe2 $monaie\n"; if ($Form{'payby'} ne 'cc') { $recap_html .= "\n"; $recap_html .= "\n"; } } } $reduc_plus = $reduc; if ($verif_code == 1) { if ($type_code == 2) { $tot_rem_code = sprintf("%.2f",($tot_ttc * $remise_code) / 100); $tot_ttc = sprintf("%.2f",$tot_ttc - (($tot_ttc * $remise_code) / 100)); } if ($type_code == 1) { if ($num_dev > 0) { $remise_code = sprintf("%.2f", $remise_code * $CONF{"MONNAIE_CONV_$num_dev"}); } $tot_ttc = sprintf("%.2f",$tot_ttc - $remise_code); $tot_rem_code = $remise_code; } if ($Form{'payby'} ne 'cc') { $recap_html .= ""; } $recap .= "$LANG{CODES_DE_PROMO_AFF} : - $tot_rem_code $monaie\n"; $reduc_plus = sprintf("%.2f",$reduc + $tot_rem_code); } if ($Form{'payby'} eq 'cheque') { $mode_paiement = $LANG{'CHEQUE'}; } elsif ($Form{'payby'} eq 'rembour') { $aff_frais_remb = ''; if ($CONF{'VEN_PAYBY_REMBOUR_FRAIS'} > 0) { $f_sup_rembour = sprintf("%.2f", $CONF{'VEN_PAYBY_REMBOUR_FRAIS'}); if ($num_dev > 0) { $f_sup_rembour = sprintf("%.2f", $f_sup_rembour * $CONF{"MONNAIE_CONV_$num_dev"}); } $aff_frais_remb = ' (+'.$f_sup_rembour.' '.$monaie.')'; } $mode_paiement = $LANG{'CONTRE_REMBOUR'}.$aff_frais_remb; } elsif ($Form{'payby'} eq 'mandat') { $mode_paiement = $LANG{'MANDAT_P'}; } elsif ($Form{'payby'} eq 'virement') { $mode_paiement = $LANG{'VIREMENT'}; } else { $mode_paiement = $LANG{'C_C'}; } if ($f_sup_rembour) { $tot_ttc = sprintf("%.2f",$tot_ttc + $f_sup_rembour); } if ($Form{'payby'} ne 'cc') { if ($f_sup_rembour) { $recap_html .= "\n"; $recap .= "$mode_paiement\n"; } $recap_html .= "\n"; } $recap .= "$LANG{AFF_TOT}\n=> $tot_ttc $monaie\n"; $et_ttt = 0; if ($verif_code == 1) { $up_code = $dbh->prepare("UPDATE $CONF{MYSQL_TAB_CODES} SET date_debut=date_debut,date_fin=date_fin,nb_utilisation=nb_utilisation-1 WHERE code='$code_promo'"); $up_code->execute; $up_code->finish; } $sth_com = $dbh->prepare("INSERT INTO $CONF{MYSQL_TAB_COMMANDES} (articles,id_client,frais_port,remise,total_ttc,total_ht,mode_paiement,date_commande,etat_traitement,id_partenaire,commentaires,devise) VALUES (?,?,?,?,?,?,?,?,?,?,?,?)"); $sth_com->execute($les_articles,$id_client,$frais_tot,$reduc_plus,$tot_ttc,$tot_comm_ht,$mode_paiement,$date2,$et_ttt,$partner,$message,$num_dev); $sth_com->finish; $sel_com = $dbh->prepare("SELECT id FROM $CONF{MYSQL_TAB_COMMANDES} WHERE date_commande='$date2' AND id_client='$id_client' AND etat_traitement='0'"); # AND total_ttc='$tot_ttc' $sel_com->execute; $id_commande = $sel_com->fetchrow(); if (!$id_commande) { print "content-type: text/html\n\n"; $aff = 'ERROR !! ID COMMANDE INTROUVABLE'; $sel_com->finish; $dbh->disconnect; &aff_menu; &affichage; exit; } $nom_site = $DOMAIN; open (MAIL, "|$CONF{VAR_SENDMAIL} -t") || die "ne peut ouvrir $CONF{VAR_SENDMAIL}!\n"; print MAIL "From: $mail ($qualite $Form{nom} $prenom)\n"; print MAIL "Reply-To: $mail\n"; print MAIL "To: $CONF{ADMIN_EMAIL}\n"; print MAIL "X-Mailer: WEBSHOP-FR v4.0\n"; print MAIL "X-Priority: 1\n"; print MAIL "Subject: [$nom_site] => Commande en ligne !\n\n"; print MAIL "Voici le détail de la commande ?traiter\n\n"; print MAIL "=> Commande n?$id_commande du $date2\n\n"; if ($partner > 0) { print MAIL "Provenant du partenaire n?$partner\n"; } print MAIL "Id Client : $id_client\n"; print MAIL "Mode de paiement : $mode_paiement\n\n"; print MAIL "=> Récapitulatif de la commande n?$id_commande\n\n"; print MAIL "$recap\n"; print MAIL "=> Coordonnées (id : $id_client)\n\n"; print MAIL "$coordonees\n"; print MAIL "-------------------------------------------------------------------\n"; print MAIL "Autres informations disponibles sur le client\n"; print MAIL "Ip : $ENV{'REMOTE_ADDR'}\n"; if ($ENV{'REMOTE_HOST'}) { print MAIL "Host : $ENV{'REMOTE_HOST'}\n"; } print MAIL "Langue : $ENV{'HTTP_ACCEPT_LANGUAGE'}\n"; print MAIL "Système : $ENV{'HTTP_USER_AGENT'}\n"; print MAIL "-------------------------------------------------------------------\n"; close(MAIL); $page_mail = $SHOP_DATAS_DIR.'/MAIL_LANG_'.$lang.'.dat'; open(PAGE_MAIL, "<$page_mail"); while (){ $texte .= $_; } close(PAGE_MAIL); $coordonees =~ s/
/\n/g; $texte =~ s/%%%ID_CLIENT%%%/$id_client/g; $texte =~ s/%%%NUMERO_COMMANDE%%%/$id_commande/g; $texte =~ s/%%%COORDONEES%%%/$coordonees/g; $texte =~ s/%%%RECAPITULATIF%%%/$recap/g; $texte =~ s/%%%DATE%%%/$date2/g; $quer_l = ''; $quer_ndev = ''; if ($lang != 1) { $quer_l = '&lang=$lang'; } if ($num_dev != 0) { $quer_ndev = '&devise=$num_dev'; } $url_suivi = "$CGI?ACT=suivi&id=$id_commande&id_client=$id_client$quer_l$quer_ndev"; $texte =~ s/%%%URL_SUIVI%%%/$url_suivi/g; $phrase_paiement = $LANG{'TYPEOFPAYMENT'}.' : '.$mode_paiement.".\n"; if ($Form{'payby'} ne 'cc') { if ($Form{'payby'} eq 'virement') { $phrase_paiement .= $CONF{'VEN_PAYBY_VIR_PHRASE'}; } else { $phrase_paiement .= $LANG{'PHRASE_PAYBY_CHEQUE'}; } } if ($Form{'payby'} eq 'cc') { $phrase_paiement .= $LANG{'PHRASE_PAYBY_C_C'}; } $phrase_paiement =~ s/
/\n/g; $texte =~ s/%%%PHRASE_PAIEMENT%%%/$phrase_paiement/g; open (MAIL2, "|$CONF{VAR_SENDMAIL} -t") || die "ne peut ouvrir $CONF{VAR_SENDMAIL}!\n"; print MAIL2 "From: $CONF{ADMIN_EMAIL} ($CONF{VAR_SHOP_NAME})\n"; print MAIL2 "Reply-To: $CONF{ADMIN_EMAIL}\n"; print MAIL2 "X-sender: $CONF{ADMIN_EMAIL}\n"; print MAIL2 "To: $mail\n"; print MAIL2 "X-Mailer: WEBSHOP-FR v4.0\n"; print MAIL2 "X-Priority: 1\n"; print MAIL2 "Subject: [$nom_site] => $LANG{YOURORDER} !\n\n"; print MAIL2 "$texte\n"; close(MAIL2); if ($Form{'payby'} eq 'cc') { if ($CONF{'VEN_PAYBY_CC'} == 1) # BLUEPAID { $lang_blue = $CONF{"BLUEPAID_LANG_$lang"}; $url_bluepaid = $CONF{'BLUEPAID_URL'}; $dev_blue = $CONF{"BLUEPAID_DEV_$num_dev"}; print "Location: $url_bluepaid?id_boutique=$CONF{BLUEPAID_ID_BOUTIQUE}&id_client=$id_client&montant=$tot_ttc&devise=$dev_blue&langue=$lang_blue\n\n"; } if ($CONF{'VEN_PAYBY_CC'} == 6) # CYBERMUT chez nfrance.com { $lang_nfr = $CONF{"CYBERMUT_NFR_LANG_$lang"}; if ($lang_nfr == 1) { $lang_nfr = 'francais'; } else { $lang_nfr = 'anglais'; } print "Location: $CONF{CYBERMUT_NFR_URL}?montant=$tot_ttc&lib-texte=payment&langue=$lang_nfr\n\n"; } if ($CONF{'VEN_PAYBY_CC'} == 2) # CYBERMUT chez OVH.com { use LWP::Simple; $monaie_cyb = 'EUR'; $url_cyb_complete = "$CONF{CYBERMUT_OVH_URL}?montont=$tot_ttc$monaie_cyb&reference=$id_commande&URL_SERVEUR_HOMEPAGE=$CONF{CYBERMUT_OVH_RETOUR}&URL_SERVEUR_OK=$CONF{CYBERMUT_OVH_RETOUR_OK}&URL_SERVEUR_ERR=$CONF{CYBERMUT_OVH_RETOUR_ERR}&texte_libre=paiement"; $code_html_cyb = get($url_cyb_complete); $replace = qq~
finish; $dbh->disconnect; print "Content-type: text/html\n\n"; &aff_menu; &affichage; exit; } if ($CONF{'VEN_PAYBY_CC'} == 5) # KLIK AND PAY { $code_lang = $CONF{"KLIKANDPAY_LANG_$lang"}; $aff = qq~ \n ~; $sel_com->finish; $dbh->disconnect; print "Content-type: text/html\n\n"; &aff_menu; &affichage; exit; } if ($CONF{'VEN_PAYBY_CC'} == 3) # PAYBOX { $IBS_TOTAL = $tot_ttc; $IBS_TOTAL =~ s/\.//g; $IBS_DEVISE = $CONF{"PAYBOX_IBS_DEVISE_$num_dev"}; $url_query = "IBS_MODE=1&IBS_SITE=$CONF{PAYBOX_IBS_SITE}&IBS_RANG=$CONF{PAYBOX_IBS_RANG}&IBS_TOTAL=$IBS_TOTAL&IBS_DEVISE=$IBS_DEVISE&IBS_CMD=$id_commande&IBS_PORTEUR=$mail&IBS_RETOUR=montant:M;maref:R;auto:A;trans:T"; $url_box = $CONF{'PAYBOX_URL'}.'?'.$url_query; print "Location: $url_box\n\n"; } if ($CONF{'VEN_PAYBY_CC'} == 4) { print "Location: $CONF{PGP_URL}?idc=$id_commande&id=$id_client&montant=$tot_ttc&lang=$lang&partner=$partner&devise=$num_dev\n\n"; } if ($CONF{'VEN_PAYBY_CC'} == 7) # Le système Sogenactif chez OVH { use LWP::Simple; use URI::Escape; # récupération du formulaire affichant le bouton # remplacez 0XXX par votre numéro de Siret (précéd?du 0) my $url = $CONF{'SOGENACTIF_URL'}.'0'.$CONF{'SOGENACTIF_SIRET'}.'/request.cgi?'; $url .= "amount=".uri_escape($tot_ttc); $url .= "&order_id=".uri_escape($id_commande); # Si d'autres paramètres sont nécessaires, il suffit de les passer ici # et de décommenter la ligne (exemple: language: enlever le # du début de ligne) $soge_dev = $CONG{"SOGENACTIF_DEVISE_$num_dev"}; $url .= "¤cy_code=".uri_escape($soge_dev); # pour l'euro $soge_lang = $CONG{"SOGENACTIF_LANG_$lang"}; $url .= "&language=".uri_escape($soge_lang); # pour changer la langue # appel du CGI: $images_cartes = get($url); # affichage des cartes bancaires acceptées: $aff = $images_cartes; $sel_com->finish; $dbh->disconnect; print "Content-type: text/html\n\n"; &aff_menu; &affichage; exit; } } # fin paiement par cc $sel_com->finish; $dbh->disconnect; if ($Form{'payby'} ne 'cc') { $aff_loca = ''; $phrase_paiement =~ s/\n/
/g; if (($CONF{'VEN_TYPE_FRAIS'} == 4) && ($CONF{'VAR_VERSION'} =~ /EUROPE/i)) { $aff_loca = "
\n"; } $phrase = "\n\n".$phrase_paiement; $aff .= "$LANG{COOR} :
$LANG{NAME}$LANG{AFF_REF}$LANG{PRICE2}$LANG{QUANT}$LANG{PRICE3}$LANG{PRICE}
$aff_img_art$nom
$refer$prix_ttc $monaie$laqte$prix_ht $monaie$prix_ttc2 $monaie
$LANG{AFF_SOUS_TOTHT} : $tot_ht $monaie 
$LANG{F_PORT_POIDS} : ($poids_tot g) $frais_port_poids $monaie
$LANG{F_PORT} : $frais_tot $monaie
$LANG{F_REDUC} : $reduc $monaie
$LANG{AFF_TAX} ($n_tax1) : $la_taxe1 $monaie
$LANG{AFF_TAX} 1 ($n_tax1): $la_taxe1 $monaie
$LANG{AFF_TAX} 2 ($n_tax2): $la_taxe2 $monaie
$LANG{AFF_TAX} 1 ($n_tax1): $la_taxe1 $monaie
$LANG{AFF_TAX} 2 ($n_tax2): $la_taxe2 $monaie
$LANG{CODES_DE_PROMO_AFF} : - $tot_rem_code $monaie
$LANG{'CONTRE_REMBOUR'} : $f_sup_rembour $monaie
$LANG{AFF_TOT} : $tot_ttc $monaie
$LANG{DPT} :$Form{'localisation'}
"; if ($Form{'societe'} ne '') { $aff.=""; } $aff .=" $aff_loca \n"; if ($CONF{'VAR_VERSION'} =~ /EUROPE/i) { $aff .= "\n"; } if ($CONF{'VAR_VERSION'} =~ /QUEBEC/i) { $aff .= "\n"; } $aff .= "\n"; if ($Form{'tel'} ne '') { $aff.="\n"; } if ($Form{'fax'} ne '') { $aff.="\n"; } if ($Form{'ad_livraison'} ne '') { $livraison = $Form{'ad_livraison'}; $livraison =~ s/\r\n/
/g; $aff.="\n"; } if ($Form{'message'} ne '') { $mess = $Form{'message'}; $mess =~ s/\r\n/
/g; $aff.="\n"; } $aff .= "
$LANG{IDENTIFIANT} : $id_client
$LANG{YNAME} / $LANG{YFNAME} : $Form{'qualite'} $Form{'nom'} $Form{'prenom'}
$LANG{SOCIETE} :$Form{'societe'}
$LANG{ADRESSE} : $Form{'adresse'}
$LANG{ZIPCODE} / $LANG{CITY} : $Form{'cp'} $Form{'ville'}
$LANG{COUNTRY} :$Form{'pays'}
$LANG{COUNTRY} / $LANG{DPT} :$Form{'localisation'}
$LANG{COURRIEL} : $mail
$LANG{TEL} :$Form{'tel'}
$LANG{FAX} :$Form{'fax'}
$LANG{AD_LIVRAISON} :$livraison
$LANG{MESS_EVENT} :$mess


$LANG{YOURORDER} : (N?$id_commande)
".$recap_html.'
'; print "Content-type: text/html\n\n"; &aff_menu; &affichage; } exit; } # fin sub pay #### SUIVI ### sub v_li { use LWP::Simple; my $url = 'http://www.webshop-fr.com/LIC/LICS.txt'; my $tr_l = 0; $etat = head($url); if (!$etat) { return(1); } else { $vli = get($url); @LOIG = split (/\n/, $vli); foreach $LOIG(@LOIG) { if ($LOIG =~ /$DOMAIN/i) { $tr_l++; } } if ($tr_l > 0) { return(1); } else { return(0); } } } sub suivi { $qw_ACT_0 = 'ACT=home'; $qw_BACK = ''; $qw_ACT = 'ACT=home'; $id = $Form{'id'}; $id_client = $Form{'id_client'}; $selc = $dbh->prepare("SELECT articles,frais_port,remise,total_ttc,mode_paiement,date_commande,etat_traitement,devise FROM $CONF{MYSQL_TAB_COMMANDES} WHERE id='$id' AND id_client='$id_client'"); $selc->execute; $exist = $selc->rows; if ($exist == 1) { ($recap,$fport,$rem,$tot_ttc,$modepay,$date,$etat,$dev_com) = $selc->fetchrow(); $sel = $dbh->prepare("SELECT qualite,nom,prenom FROM $CONF{MYSQL_TAB_CLIENTS} WHERE id='$id_client'"); $sel->execute; $exist2 = $sel->rows; if ($exist2 == 1) { ($qua,$nom,$pre) = $sel->fetchrow(); $aff_client = "$LANG{'BY'} $qua $nom $pre
"; } $sel->finish; $letat = $LANG{'STATUT_1'} unless $etat != 0; $letat = $LANG{'STATUT_2'} unless $etat != 1; $letat = $LANG{'STATUT_3'} unless $etat != 2; $recap =~ s/\n/
/g; $monnaie = $CONF{"MONNAIE_$dev_com"}; $phrase = "$LANG{ORDER_NUM} $id ($date)"; $aff .= "".$aff_client; $aff .= "$LANG{LE_STATUT} : $letat

$LANG{YOURORDER} :
$recap\n"; if ($rem != 0) { $aff .= "$LANG{F_REDUC} : $rem $monnaie
\n" } $aff .= "$LANG{F_PORT} : $fport $monnaie
\n"; $aff .= "$LANG{AFF_TOT} : $tot_ttc $monnaie
\n"; $aff .= "$LANG{TYPEOFPAYMENT} : $modepay
\n"; } else { $phrase = ''.$LANG{SORRYBUT}.''; } $selc->finish; $dbh->disconnect; print "Content-type: text/html\n\n"; &aff_menu; &le_vli; &affichage; exit; } ## GESTION DE L'AFFICHAGE ## sub affichage { $page_boutique = $CONF{'DIR_HTML_ROOT'}.'/webshop_'.$lang.'.html'; if ($exist_partner == 1) { $page_boutique = $CONF{'DIR_HTML_ROOT'}.'/affiliation_'.$lang.'.html';} open(PAGE_HTML, "<$page_boutique") || &erreur("Impossible d'ouvrir le fichier $page_boutique !
Veuillez vérifier sa présence !","$!"); while (){ $affichage .= $_; } close(PAGE_HTML); if ($exist_partner == 1) { $aff_logo = ''; $aff_image_fond = ''; if ($logo ne 'aucun') { $aff_logo = ""; } if ($image_fond ne 'aucune') { $aff_image_fond = "background=\"$image_fond\""; } $affichage =~ s/####LOGO####/$aff_logo/g; $affichage =~ s/####TEXTE_PAGE####/$texte_page/g; $affichage =~ s/####BGCOLOR####/$couleur_fond/g; $affichage =~ s/####BACKGROUND####/$aff_image_fond/g; $affichage =~ s/####FONT_FACE_1####/$police_textes_1/g; $affichage =~ s/####FONT_FACE_2####/$police_textes_2/g; $affichage =~ s/####FONT_COLOR_1####/$couleur_textes_1/g; $affichage =~ s/####FONT_COLOR_2####/$couleur_textes_2/g; $affichage =~ s/####FONT_SIZE_1####/$taille_textes_1/g; $affichage =~ s/####FONT_SIZE_2####/$taille_textes_2/g; } $affichage =~ s/####AFFICHAGE####/$aff/; $affichage =~ s/####PHRASE####/$phrase/g; $affichage =~ s/####RECHERCHE####/$aff_rech/g; $affichage =~ s/####ACCUEIL####/$aff_acc/g; $affichage =~ s/####NOUVEAUTES####/$aff_nouv/g; $affichage =~ s/####PROMOTIONS####/$aff_prom/g; $affichage =~ s/####TOP_VENTES####/$aff_topvente/g; $affichage =~ s/####ALPHABETIQUE####/$aff_alpha/g; $affichage =~ s/####CADDIE####/$aff_cad/g; $affichage =~ s/####COMMANDER####/$aff_com/g; print $affichage; } ############################### sub date { ($sec,$min,$heure,$jour,$mois,$an) = localtime(time); $mois++; $an+=1900; if ($jour < 10) { $jour='0'.$jour; } if ($mois < 10) { $mois='0'.$mois; } if ($min < 10) {$min='0'.$min;} if ($heure < 10) {$heur='0'.$heure;} if ($sec < 10) {$sec='0'.$sec;} $date = $an.$mois.$jour; $date2 = "$jour/$mois/$an $heure:$min $sec s"; } sub recup_conf { my $HASH = $_[0]; %$HASH = (); open (CONF_FIC,"$SHOP_DATAS_DIR/$_[1]"); while ($line=) { chomp($line); if ( ($line !~ /^$/) && ($line !~ /^#/) && ($line =~ /^(.*)=================(.*)$/) ) { $$HASH{"$1"}="$2"; } } close (CONF_FIC); } sub erreur { print "Content-type: text/html\n\n"; print "ERREUR :
$_[0]
\n"; print "
Message d'erreur : $_[1]


\n"; print "RETOUR AU FORMULAIRE
\n"; exit; } sub aff_menu { $aff_rech = "$CGI?$qw_ACT$query&search=y"; $aff_acc = "$CGI?ACT=home$query"; $aff_nouv = "$CGI?ACT=news$query"; $aff_topvente = "$CGI?ACT=bestsaler$query"; $aff_cad = "$CGI?ACT=cart$qw_BACK$query"; $aff_com = "$CGI?ACT=purchase$qw_BACK$query"; $aff_prom = "$CGI?ACT=offer$query"; $aff_alpha = "$CGI?ACT=alpha$query"; } sub aff_items { $monaie = $CONF{"MONNAIE_$num_dev"}; $aff_java = "\n"; $n = 0; $page_articles = $CONF{'DIR_HTML_ROOT'}.'/articles.html'; open(PAGEHTML, "<$page_articles"); while (){ $aff_art .= $_; } close(PAGEHTML); while (($id_art,$nom_art,$image_art,$options,$prix_ttc,$desc_art,$in_stock,$promo,$prix_promo,$date_promo_deb,$date_promo,$liduray) = $sth_art->fetchrow()) { $affiche_art = $aff_art; $n++; $nombre = $debut + $n; $aff_img_art = "\"$LANG{ALT_IMG}\""; if ($num_dev > 0) { $prix_ttc = sprintf("%.2f", $prix_ttc * $CONF{"MONNAIE_CONV_$num_dev"}); } $af_prix = "$prix_ttc $monaie"; if ($exist_rev == 1) { $prix_rev = sprintf("%.2f", $prix_ttc - (($prix_ttc * $pourcent_reduc_rev) / 100) ); $af_prix = "$prix_ttc - $pourcent_reduc_rev% = $prix_rev $monaie"; } if (($promo eq 'oui') && ($date_promo >= $date) && ($date_promo_deb <= $date)) { $an_promo = substr $date_promo,0,4; $mois_promo = substr $date_promo,4,2; $jour_promo = substr $date_promo,6,2; $date_fin = $jour_promo.'.'.$mois_promo.'.'.$an_promo; if ($num_dev > 0) { $prix_promo = sprintf("%.2f", $prix_promo * $CONF{"MONNAIE_CONV_$num_dev"}); } $af_prix = "$aff_promo ($LANG{JUSQUAU} $date_fin) $prix_ttc $monaie $prix_promo $monaie"; if ($exist_rev == 1) { $prix_promo_rev = sprintf("%.2f", $prix_promo - (($prix_promo * $pourcent_reduc_rev) / 100) ); $af_prix = "$aff_promo ($LANG{JUSQUAU} $date_fin) $prix_ttc $monaie $prix_promo - $pourcent_reduc_rev% = $prix_promo_rev $monaie"; } } if ($in_stock eq 'non') { $aj_cad = $LANG{NON_DISPONIBLE}; } else { $select_opt = ''; $nb_opt = 0; if ($options ne '') { $nom_tab = 'option_'.$n; @$nom_tab = split (/\n/, $options); foreach $lopt(@$nom_tab) { $nb_opt++; $i_val = 0; ($nom_opt,$valeurs,$prix_plus_opts,$poids_plus_opts) = split(/\|/,$lopt); $nom_tab2 = 'valeur'.$n.'_'.$nb_opt; @$nom_tab2 = split (/,/, $valeurs); $nom_tab3 = 'prixopts'.$n.'_'.$nb_opt; @$nom_tab3 = split (/,/, $prix_plus_opts); $select_opt .= "$nom_opt : \n "; } } if ($nb_opt > 0) { $select_opt .= ""; } $ajouter_au_panier = $LANG{'AJOUTER_AU_PANIER'}; $ajouter_au_panier =~ s/%%%IMG_CADDIE%%%/$CONF{IMG_CADDIE_URL}/; $aj_cad = ""; $aj_cad .= ""; $aj_cad .= ""; $aj_cad .= "
$select_opt
$ajouter_au_panier
"; } if ($desc_art eq '') { $desc_art = ' '; } if ($Form{'ACT'} eq 'news' || $Form{'ACT'} eq 'offer' || $Form{'ACT'} eq 'bestsaler' || $Form{'ACT'} eq 'search' || $Form{'ACT'} eq 'alpha') { $sel_lenom_ray = $dbh->prepare("SELECT $col_nom FROM $CONF{MYSQL_TAB_RAYONS} WHERE id='$liduray'"); $sel_lenom_ray->execute; $nom_du_ray = $sel_lenom_ray->fetchrow(); $sel_lenom_ray->finish; $desc_art = qq~$LANG{MOT_RUBRIQUE} : $nom_du_ray
\n~.$desc_art; } $affiche_art =~ s/####NOM_ARTICLE####/$nom_art/; $affiche_art =~ s/####IMAGE####/$aff_img_art/; $affiche_art =~ s/####DESCRIPTION####/$desc_art/; $affiche_art =~ s/####PRIX_TTC####/$af_prix/; $affiche_art =~ s/####AJOUT_CADDIE####/$aj_cad/; $affiche_art =~ s/####NUMERO####/$nombre/; $aff_articles .= $affiche_art; } $sth_art->finish; $nbpgetot = $nombre_art / $CONF{AFF_MAX_PAR_PAGE}; if ($nbpgetot =~ /\./) { $nbpgetot = int($nbpgetot); $nbpgetot = $nbpgetot + 1; } $deb_num = $debut + 1; $fin_num = $debut + $n; $nav = ''; if ($nombre_art > $CONF{AFF_MAX_PAR_PAGE}) { $nav = "$LANG{PAGE_DE_RESULTATS}   "; if ($page != 1) { $nav .= "   "; } foreach $nbpgetot(1..$nbpgetot) { if ($nbpgetot == $page) { $nav .= "$page   "; } else { $nav .="$nbpgetot   "; } } if ($page != $nbpgetot) { $page_plus = $page + 1; $nav .= ""; } $nav .= ''; } } # fin sub aff_item sub verifie_email { local ($email)=@_; $email=~ s/\.\@/\@/; if ($email eq '') { return(0);} if ($email!~ /\@/) { return(0);} if ($email=~ /[\,|\s|\;]/) {return (0);} if ($email =~ /(@.*@)|(\.\.)|(@\.)|(\.@)|(^\.)|(\.$)/ || ($email !~ /^.+\@localhost$/ && $email !~ /^.+\@\[?(\w|[-.])+\.[a-zA-Z]{2,3}|[0-9]{1,3}\]?$/)) { return(0); }else{ return(1); } } sub out { $url_suivi = $Form{'out'}; print "Location: $url_suivi\n\n"; exit; } sub liste_pays { if ($form_pays) { return qq||; } else { return < LISTE_P } # fin else }