//include("../configuration_option.inc.php"); if (isset($_REQUEST['func'])) { switch ($_REQUEST['func']) { case "enleve" : /* Décrementation de la table peel_stocks_temporaires */ $error = array(); $qte = vn($_SESSION['caddie']->quantite[$_GET['ligne']]); $where = "produit_id = '".intval($_SESSION['caddie']->articles[$_GET['ligne']])."' AND couleur_id = '".intval($_SESSION['caddie']->couleurId[$_GET['ligne']])."' AND taille_id = '".intval($_SESSION['caddie']->tailleId[$_GET['ligne']])."'"; $recupST = mysql_query("SELECT stock, qte FROM peel_stocks_temp WHERE ".$where.""); $ST = mysql_fetch_array($recupST); $stock_value = $ST['stock'] + $qte; $qte_value = $ST['qte'] - $qte; $sql = "UPDATE peel_stocks_temp SET stock = '$stock_value', qte = '$qte_value' WHERE ".$where.""; @mysql_query($sql) or DIE('Une erreur de connexion à la base s est produite ' . __LINE__ . '.
' . MYSQL_ERROR()); $_SESSION['caddie']->enleve(intval($_GET['ligne'])); $_SESSION['caddie']->nettoie(); $_SESSION['caddie']->recalc_total(); if (!empty($_SESSION['caddie']->code_cheque)) { $error_check = calcul_code_cheque_cadeau($_SESSION['caddie']->code_cheque); array_push($error, $error_check); } if (!empty($_SESSION['caddie']->code_bon)) { $error_bon = calcul_code_bon_reduction($_SESSION['caddie']->code_bon); array_push($error, $error_bon); } if (!empty($_SESSION['caddie']->type)) { calcul_frais_expedition(vb($_SESSION['caddie']->type)); } header("Location:".$_SERVER["PHP_SELF"]); break; case "vide" : foreach($_SESSION['caddie']->articles as $ligne => $produitid) { $sql = "DELETE FROM peel_stocks_temp WHERE produit_id = '".intval($produitid)."' AND couleur_id = '".intval($_SESSION['caddie']->couleurId[$ligne])."' AND taille_id = '".intval($_SESSION['caddie']->tailleId[$ligne])."'"; mysql_query($sql) or DIE('Une erreur de connexion à la base s est produite ' . __LINE__ . '.
' . MYSQL_ERROR()); } $_SESSION['caddie']->init(); break; case "sauvegarde" : maj_quantite($_POST); if (est_identifie()) { header("Location:$wwwroot/achat/sauvegarde_devis.php"); } else { header("Location:$wwwroot/membre.php"); } break; case "recalc" : $error = maj_quantite($_POST); break; case "commande" : $resType = mysql_query("SELECT id FROM peel_types WHERE nom_".$_SESSION['langue']." = '".htmlspecialchars($_SESSION['caddie']->type, ENT_QUOTES)."'"); $Type = mysql_fetch_object($resType); $resZone = mysql_query("SELECT id FROM peel_zones WHERE nom_".$_SESSION['langue']." = '".htmlspecialchars($_SESSION['caddie']->zone, ENT_QUOTES)."'"); $Zone = mysql_fetch_object($resZone); if (empty($_SESSION['caddie']->pays)) { $erreur_pays = stripslashes(MSG_ERR_SHIP_COUNTRY); } elseif (empty($_SESSION['caddie']->type)) { $erreur_type = stripslashes(MSG_ERR_TYPE); } elseif (mysql_num_rows(mysql_query("SELECT 1 FROM peel_tarifs WHERE type = '".intval($Type->id)."' AND zone = '".intval($Zone->id)."'")) == 0) { # Ici on teste la cohérence entre le type et la zone $erreur_type = stripslashes(MSG_ERR_TYPE); } else { maj_quantite($_POST); $_SESSION['caddie']->nettoie(); $_SESSION['caddie']->recalc_total(); if (est_identifie()) { header("Location:$wwwroot/achat/achat_maintenant.php"); } else { header("Location:$wwwroot/membre.php"); } } break; } $_SESSION['caddie']->nettoie(); $_SESSION['caddie']->recalc_total(); } $DOC_TITLE = "PEEL.FR"; include("$repertoire_modele/caddie.php"); /****************************************************************************** * FONCTIONS *****************************************************************************/ function maj_quantite(&$form) { global $seuil; global $seuil_total; global $seuil_total_reve; global $module_lot; $type = vb($_POST['type']); $code_promo = vb($_POST['code_promo']); $code_cheque = vb($_POST['code_cheque']); $code_bon = vb($_POST['code_bon']); $ship = explode("|", $_POST['pays_zone']); $paysId = intval($ship[0]); $zoneId = intval($ship[1]); $zoneTVA = 1; /*************************************************************/ /* Récupération du nom du pays puis insertion dans le caddie */ /*************************************************************/ $sqlCountry = "SELECT pays_".$_SESSION['langue']." as pays FROM peel_pays WHERE id = '".vb($paysId)."'"; $resCountry = mysql_query($sqlCountry) or DIE('Une erreur de connexion à la base s est produite ' . __LINE__ . '.
' . MYSQL_ERROR()); if ($resCountry) { if (mysql_num_rows($resCountry) > 0) { $Country = mysql_fetch_array($resCountry); $pays = $Country['pays']; $_SESSION['caddie']->pays($pays); #- On place le nom du pays dans le caddie si il est déterminé } else { $pays = "france"; } } /****************************************************************************************************************/ /* Si le pays d'expédition est déterminé, on récupère la zone et on vérifie si la zone de TVA s'applique ou pas */ /****************************************************************************************************************/ $sqlZone = "SELECT nom_".$_SESSION['langue'].", tva FROM peel_zones WHERE id = '".vn($zoneId)."'"; $resZone = mysql_query($sqlZone); if ($resZone) { if (mysql_num_rows($resZone) > 0) { $Zone = mysql_fetch_row($resZone); $zone = $Zone[0]; $zoneTva = $Zone[1]; $_SESSION['caddie']->zone($zone, $zoneTva); #- On place la zone si elle est déterminée } else { $zone = ""; $zoneTva = 1; } } /*********************************/ /* Calcul des frais d'expédition */ /*********************************/ if (!empty($type)) { calcul_frais_expedition(vb($type)); } /*********************************/ /* Gestion du code promotionnel */ /*********************************/ $error = array(); $sql_cp = "SELECT * FROM `peel_codes_promos` WHERE nom = '".strtoupper($code_promo)."' AND `date_debut` < now( ) AND `date_fin` > now( )" or DIE('Une erreur de connexion à la base s est produite ' . __LINE__ . '.
' . MYSQL_ERROR()); $res_cp = mysql_query($sql_cp); $code = mysql_fetch_array($res_cp); if (mysql_num_rows($res_cp) > 0) { $remise_code_percent = $code['remise']; $_SESSION['caddie']->code_promo(strtoupper($code_promo), $remise_code_percent); #- On place le code promo dans le caddie si il est déterminé. } else { $remise_code = 0; if (!empty($code_promo)) { # Empeche l'affichage d'un message d'erreur si le code n'est pas renseigné. array_push($error,nl2br(MSG_ERR_CODE_PROMO)); } } /*********************************/ /* Gestion du chèque cadeau */ /*********************************/ $error_check = calcul_code_cheque_cadeau($code_cheque); array_push($error, $error_check); /*******************************************/ /* Gestion du bon de réduction */ /*******************************************/ $error_bon = calcul_code_bon_reduction($code_bon); array_push($error, $error_bon); /*****************************************************************/ /* Récupération des remises en % qui ne sont pas dans un tableau */ /*****************************************************************/ foreach ($_POST['id'] as $i => $produitid) { $sqlProd = "SELECT nom_".$_SESSION['langue']." as nom, prix, prix_revendeur, promotion, tva, etat_stock, delai_stock, points, poids, id_ecotaxe FROM peel_produits WHERE id = '".intval($produitid)."'"; $resProd = mysql_query($sqlProd) or DIE('Une erreur de connexion à la base s est produite ' . __LINE__ . '.
' . MYSQL_ERROR()); $prod = mysql_fetch_array($resProd); $points = $prod['points']; $poids = $prod['poids']; $tva_percent = !empty($zoneTva) ? $prod['tva'] : "0"; /*******************************************************************/ /* 0 - On récupère les données du caddie */ /******************************************************************/ $quantite = $_POST['quantite'][$i]; $option = vn($_POST['option'][$i]); $email_check = vb($_POST['email_check'][$i]); /**************************************************/ /* 1 - On récupère le prix catalogue (sans promo) */ /**************************************************/ /* Choix entre prix revendeur et prix public */ $prix_prod_revendeur = $prod['prix_revendeur']; $prix_prod = $prod['prix']; if ($module_lot == 1) { /* Si le module de gestion des prix / quantité est actif */ $sqlQte = "SELECT quantite, prix, prix_revendeur FROM peel_quantites WHERE produit_id = '".intval($produitid)."' ORDER BY quantite"; $resQte = mysql_query($sqlQte) or die('Une erreur de connexion à la base s est produite ' . __LINE__ . '.
' . mysql_error()); if (mysql_num_rows($resQte) > 0) { /* Si il existe des remises / quantité dans la base */ while ($Qte = mysql_fetch_array($resQte)) { if ($quantite >= $Qte['quantite']) { $prix_prod = $Qte['prix']; $prix_prod_revendeur = $Qte['prix_revendeur']; } } } } (isset($_SESSION['utilisateur']['priv']) && $_SESSION['utilisateur']['priv'] == "reve") ? $prix_cat_ht = ($prix_prod_revendeur + vn($option)) / (1+$prod['tva']/100) : $prix_cat_ht = ($prix_prod + vn($option)) / (1+$prod['tva']/100); $prix_cat_ttc = $prix_cat = $prix_cat_ht * (1 + $tva_percent/100); /****************************************************************************/ /* 2 - On calcule les promotions en valeur (calculé toujours sur le prix HT) */ /***************************************************************************/ $remise_produit_percent = vn($prod['promotion']); $remise_produit = $prix_cat_ht * $remise_produit_percent/100; /*******************************************************************/ /* 3 - On calcule le prix vendu HT et le prix TTC */ /******************************************************************/ $prix_ht = $prix_cat_ht - $remise_produit; $prix = $prix_ht * (1+$tva_percent/100); $total_prix = $prix * $quantite; $total_prix_ht = $prix_ht * $quantite; $tva = $total_prix - $total_prix_ht; /*******************************************************************/ /* 4 - Contrôle des problématiques liées à la gestion des stocks*/ /******************************************************************/ $etat_stock = $prod['etat_stock']; $delivery_stock = $prod['delai_stock']; $couleur = $_POST['couleur'][$i]; $taille = $_POST['taille'][$i]; $couleurId = vn($_POST['couleurId'][$i]); $tailleId = vn($_POST['tailleId'][$i]); $s = mysql_fetch_array(mysql_query("SELECT stock FROM peel_stocks WHERE produit_id = '".$produitid."' AND couleur_id = '".intval($couleurId)."' AND taille_id = '".intval($tailleId)."'")); if ($etat_stock == 1) { /* $s est définie dans la requête de controle du stock */ if ($quantite > $s['stock']) { $resProd = mysql_query("SELECT nom_".$_SESSION['langue']." as nom FROM peel_produits WHERE id = '".intval($produitid)."'"); $Prod = mysql_fetch_object($resProd); $message = "
Attention, Le produit ".$prod['nom']." dispose d'un stock limité à ".$s['stock']." unités.
"; array_push($error,nl2br($message)); $quantite = $s['stock']; } } /*****************************/ /* Récupération de l'écotaxe */ /*****************************/ $ecotaxe_ht = $ecotaxe_ttc = 0; $reseco = mysql_query("SELECT prix_ht, prix_ttc FROM peel_ecotaxes WHERE id = '".intval($prod['id_ecotaxe'])."'"); if (mysql_num_rows($reseco) > 0) { $eco = mysql_fetch_object($reseco); $ecotaxe_ht = $eco->prix_ht ; $ecotaxe_ttc = $eco->prix_ttc ; } /*******************************************************************/ /* 5 - On envoie les données dans l'objet caddie */ /******************************************************************/ $_SESSION['caddie']->place( $i, $produitid, $quantite, $couleur, $taille, $couleurId, $tailleId, $prix_cat, $prix_cat_ht, $prix, $prix_ht, $total_prix, $total_prix_ht, $tva_percent, $tva, $poids, $points, $remise_produit_percent, $remise_produit, $etat_stock, $delivery_stock, $option, $email_check, $ecotaxe_ttc, $ecotaxe_ht); } if (!empty($type)) { calcul_frais_expedition(vb($type)); } return $error; } /*******************************************/ /* Gestion du bon de réduction */ /*******************************************/ function calcul_code_bon_reduction(&$code_bon) { $error_bon = ""; $sql_bon = "SELECT * FROM `peel_bons_reduction` WHERE nom = '".strtoupper($code_bon)."'" or DIE('Une erreur de connexion à la base s est produite ' . __LINE__ . '.' . MYSQL_ERROR()); $res_bon = mysql_query($sql_bon); $ar_bon = mysql_fetch_array($res_bon); if (mysql_num_rows($res_bon) > 0) { if ($ar_bon['seuil'] <= $_SESSION['caddie']->total) { $remise_code_bon = $ar_bon['remise']; $bon = $ar_bon['nom']; $_SESSION['caddie']->bon_reduction(strtoupper($bon), $remise_code_bon); #- On place le code dans le caddie si il est déterminé. } else { $remise_code_bon = 0; $bon = ""; $_SESSION['caddie']->bon_reduction(strtoupper($bon), $remise_code_bon); #- On place le code dans le caddie si il est déterminé. $error_bon = nl2br(MSG_ERR_CODE_BON_SEUIL); } } else { $remise_code_bon= 0; if (!empty($code_bon)) { # Empeche l'affichage d'un message d'erreur si le code n'est pas renseigné. echo $error_bon; $error_bon = nl2br(MSG_ERR_CODE_BON); } } return $error_bon; } function calcul_code_cheque_cadeau(&$code_cheque) { $error_check = ""; $sql_check = "SELECT * FROM `peel_cheques_cadeaux` WHERE code = '".strtoupper($code_cheque)."' AND etat = '1' " or DIE('Une erreur de connexion à la base s est produite ' . __LINE__ . '.
' . MYSQL_ERROR()); $res_check = mysql_query($sql_check); $ar_check = mysql_fetch_array($res_check); if (mysql_num_rows($res_check) > 0) { if ($ar_check['seuil'] <= $_SESSION['caddie']->total) { $remise_code_check = $ar_check['remise_cheque']; $code_cheque = $ar_check['code']; $_SESSION['caddie']->cheque_cadeau(strtoupper($code_cheque), $remise_code_check); #- On place le code dans le caddie si il est déterminé. } else { $remise_code_check = 0; $code_cheque = ""; $_SESSION['caddie']->cheque_cadeau(strtoupper($code_cheque), $remise_code_check); #- On place le code dans le caddie si il est déterminé. $error_check = nl2br(MSG_ERR_CODE_CHECK_SEUIL); } } else { $remise_code_check= 0; if (!empty($code_cheque)) { # Empeche l'affichage d'un message d'erreur si le code n'est pas renseigné. $error_check = nl2br(MSG_ERR_CODE_CHECK); } } return $error_check; } function calcul_frais_expedition(&$type) { global $seuil; global $seuil_total; global $seuil_total_reve; $_SESSION['caddie']->type($type); #- On place le type d'expédition si il est déterminé $expedition = 0; $queryType = mysql_query("SELECT id FROM peel_types WHERE nom_".$_SESSION['langue']." = '".htmlspecialchars($type, ENT_QUOTES)."'") or DIE('Une erreur de connexion à la base s est produite ' . __LINE__ . '.
' . MYSQL_ERROR()); $objType = mysql_fetch_object($queryType); $queryZone = mysql_query("SELECT id FROM peel_zones WHERE nom_".$_SESSION['langue']." = '".htmlspecialchars($_SESSION['caddie']->zone, ENT_QUOTES)."'") or DIE('Une erreur de connexion à la base s est produite ' . __LINE__ . '.
' . MYSQL_ERROR()); $Zone = mysql_fetch_object($queryZone); $ZoneId = $Zone->id; $sql_tarif = "SELECT tarif, poidsmax, tva FROM peel_tarifs WHERE type = '".$objType->id."' AND zone = '".$ZoneId."' ORDER BY poidsmax ASC"; $result_tarif = mysql_query($sql_tarif) or DIE('Une erreur de connexion à la base s est produite ' . __LINE__ . '.
' . MYSQL_ERROR()); if ($result_tarif) { if (mysql_num_rows($result_tarif)) { while ($tab_tarif = mysql_fetch_array($result_tarif)) { if ($_SESSION['caddie']->total_poids <= $tab_tarif['poidsmax']) { $expedition = $tab_tarif['tarif']; $expedition_ht = $tab_tarif['tarif'] / (1+$tab_tarif['tva']/100); break; } else { $expedition = $tab_tarif['tarif']; $expedition_ht = $tab_tarif['tarif'] / (1+$tab_tarif['tva']/100); } } } } #- Vérifie si le total du panier n'excède pas les seuils définis en back office $seuil = (isset($_SESSION['utilisateur']['priv']) && $_SESSION['utilisateur']['priv'] == "reve") ? $seuil_total_reve : $seuil_total; if ($_SESSION['caddie']->total_produit > $seuil) {$expedition = 0; $expedition_ht = 0;} #- Frais de port gratuit si le total TTC des produits est > au seuil. $_SESSION['caddie']->expedition($expedition, $expedition_ht); #- On place le cout du transport dans le caddie } ?>