djespace

Utilisateur open source
  • Compteur de contenus

    337
  • Inscrit(e) le

  • Dernière visite


Tout ce qui a été posté par djespace

  1. djespace a ajouté un sujet dans PEEL SHOPPING : logiciel open source de boutique en ligne   

    Ajouter Étape Avant Expédition (Nouveau Statut De Livraison)
    Bonjour,

    Je souhaiterai ajouter un nouveau statut de livraison. Jusqu'ici, rien de compliqué, je l'ajoute dans la base mySQL.
    Le truc c'est que j'aimerais que le passage d'une commande dans ce nouveau statut intérmédiaire (avant expédition) envoi un mail au client, lui disant que sa commande est en cours de préparation.
    Créer un nouveau modèle d'email ne devrait pas être compliqué non plus :
    Encore que, il faut pouvoir utiliser quelques infos sur la commande comme le numéro, le nom du client, éventuellement le rappel des produits commandés... je ne sais pas si n'importe quel nouveau modèle d'email peut utiliser ces variables ou pas?

    Par contre générer l'envoi de tel modèle d'email lors du passage à ce nouveau statut, ça je sais pas faire...
    Ou dois-je agir et comment ?


    Merci.
    • 1 réponse
    • 1 060 vues
  2. djespace a ajouté un message dans un sujet  Afficher Le Descriptif Court Dans L'affichage Par Catégorie En V7.0   

    Bonjour, 
    J'ai réussi à me débrouiller en attaquant le problème dans l'autre sens. 
    J'ai pu obtenir le résultat souhaité après quelques semaines...

    Il me reste 2/3 bricoles.
    actuellement, lorsque l'on applique une promotion sur un produit, l'ancien prix apparaît barré sous le nouveaux prix.
    Comment le faire apparaître sur la même ligne, avant le nouveau prix ?

    Merci.
    • 0
  3. djespace a ajouté un message dans un sujet  Votre Avis Sur Butterflive... Ça Marche Chez Vous ?   

    Moi je ne parviens même pas à finaliser mon inscription....
    • 0
  4. djespace a ajouté un message dans un sujet  Afficher Nombre D'avis Et Note Moyenne Fiche Produit   

    Bonjour et merci.

    J'ai commencé par le plus facile :
    copier la ligne d'affichage de la notre moyenne avec les étoiles dans produit_details_html.tpl

    Ensuite je pense qu'il faut insérer la requête SQL dans display_product.php ?
    A quel endroit dois-je la copier ?
    J'ai fait quelques essais mais ça ne fonctionne pas.

    Pouvez-vous m'aider ?
    Merci par avance.
    • 0
  5. djespace a ajouté un sujet dans PEEL SHOPPING : logiciel open source de boutique en ligne   

    Afficher Nombre D'avis Et Note Moyenne Fiche Produit
    Bonjour,

    Voila, tout est dans le titre.
    Je souhaiterais afficher dans les fiches article (au niveau du lien "lire les avis") le nombre d'avis déposé, ainsi que la note moyenne (utilisant les symbole étoile comme dans liste_avis.php).
    Comment puis-je faire ?

    Merci beaucoup.
    • 3 réponses
    • 1 415 vues
  6. djespace a ajouté un message dans un sujet  Paypal   

    Bonjour,

    Tout les utilisateurs peel de paypal sont concernés par cette modification ?
    Parce que je n'ai, à ce jour reçu aucun mail de paypal.
    • 0
  7. djespace a ajouté un message dans un sujet  Ajouter L'état De Stock Des Produit Dans Le Caddie.   

    Bonjour Simon,

    J'ai réalisé les modifs,
    Le message d'erreur pour l'id produit a bien disparu. (J'ai toujours mon erreur pour stock_remain_all mais c'est un autre problème...)

    Je crois donc que vous n'irez pas plus loin,
    Merci à vous.
    • 0
  8. djespace a ajouté un message dans un sujet  Ajouter L'état De Stock Des Produit Dans Le Caddie.   

    Bonjour,


    Merci Simon, mais une proposition m'avait à l'époque déjà été faite, et je n'ai nullement l'intention de re-payer un développement qui m'a déjà été facturé.
    C'est la raison pour laquelle j'essaie de me dépatouiller tout seul, avec le forum, et ce même si ça prends du temps....

    La seul différence avec le développement acheté pour peel 6.3.1, c'est qu'il y a smarty désormais dans peel7.
    Et certaines variables ont besoin d'être définie. C'était le cas pour "product_object", simple à résoudre, c'est le cas pour "id" également.
    Pour stock_remain_all, il va falloir la définir mais aussi lui donner le calcul de stock pour en afficher l'état. Cette fonction est effectivement déja présente dans d'autres fichiers, je pense qu'il s'agit simplement de la copier au bon endroit (chose que je ne dois pas bien faire). Vous pouvez m'aider là dessus je pense d'autant qu'il s'agit du même fichier (display_caddie.php) et que vous trouverez le problème rapidement.
     
     
    Par contre, je ne  parviens pas à vous envoyer le fichier. Je n'en ai pas la permission.
    Voici le code du fichier :
     
    Merci par avance.
    François;
     
    <?php // This file should be in UTF8 without BOM - Accents examples: éèê // +----------------------------------------------------------------------+ // | Copyright (c) 2004-2013 Advisto SAS, service PEEL - contact@peel.fr | // +----------------------------------------------------------------------+ // | This file is part of PEEL Shopping 7.0.0, which is subject to an | // | opensource GPL license: you are allowed to customize the code | // | for your own needs, but must keep your changes under GPL | // | More information: https://www.peel.fr/lire/licence-gpl-70.html'>https://www.peel.fr/lire/licence-gpl-70.html | // +----------------------------------------------------------------------+ // | Author: Advisto SAS, RCS 479 205 452, France, https://www.peel.fr/ | // +----------------------------------------------------------------------+ // $Id: display_caddie.php 35860 2013-03-13 14:10:20Z sdelaporte $ // Fichier inclue uniquement sur les pages qui font appels aux fonctions ci-dessous if (!defined('IN_PEEL')) { die(); } if (!function_exists('get_caddie_content_html')) { /** * get_caddie_content_html() * * @param class $form_error_object * @param mixed $mode_transport * @param boolean $display_cart_title_image * @return */ function get_caddie_content_html(&$form_error_object, $mode_transport, $display_cart_title_image = true) { $output = ''; $listcadeaux_owner = ''; // vérifie pour offrir les frais de port que le seuil d'offre ou le nombre de produits sont différents de 0 // si différent de 0, on 'construit' le message à afficher // Attention : un test !empty ne marche pas sur seuil_total_used car au format "0.00" $seuil_total_used = (is_reseller_module_active() && is_reseller()) ? $GLOBALS['site_parameters']['seuil_total_reve'] : $GLOBALS['site_parameters']['seuil_total']; $shipping_text = ''; // Récupération des informations de la zone sélectionnée pour adapter le message. if(!empty($_SESSION['session_caddie']->zoneId)) { $q = query('SELECT on_franco_amount, on_franco_nb_products FROM peel_zones WHERE id="'.intval($_SESSION['session_caddie']->zoneId).'"'); $zone_result = fetch_assoc($q); $on_franco_amount = $zone_result['on_franco_amount']; $on_franco_nb_products = $zone_result['on_franco_nb_products']; } if (round($seuil_total_used, 2) > 0 || !empty($GLOBALS['site_parameters']['nb_product']) || (!empty($on_franco_amount) && round($on_franco_amount, 2) > 0) || (!empty($on_franco_nb_products) && $on_franco_nb_products > 0)) { $shipping_text .= $GLOBALS['STR_SHIPPING_COST'] . ' (' . $GLOBALS['STR_OFFERED'] . ' '; // Le seuil d'exonération des frais de port pour une zone est prioritaire sur le seuil d'exonération des frais de port de la configuration général de la boutique if((!empty($on_franco_amount) && round($on_franco_amount, 2) > 0) || (!empty($on_franco_nb_products) && $on_franco_nb_products > 0)) { $shipping_text .= !empty($on_franco_amount)? $GLOBALS['STR_FROM'] . ' ' . fprix($on_franco_amount, true) . ' ' . $GLOBALS['STR_TTC'] : ''; if(!empty($on_franco_nb_products)) { $shipping_text .= !empty($on_franco_amount)? ' ' . $GLOBALS['STR_OR'] . ' '. $GLOBALS['STR_FROM'] . ' ' . $on_franco_nb_products . ' ' . $GLOBALS['STR_PRODUCTS_PURCHASED'] : $GLOBALS['STR_FROM'] . ' ' . $on_franco_nb_products . ' ' . $GLOBALS['STR_PRODUCTS_PURCHASED']; } } elseif (round($seuil_total_used, 2) > 0 ) { $shipping_text .= $GLOBALS['STR_FROM'] . ' ' . fprix($seuil_total_used, true) . ' ' . $GLOBALS['STR_TTC']; } if (!empty($GLOBALS['site_parameters']['nb_product']) && empty($on_franco_nb_products)) { $shipping_text .= (round($seuil_total_used, 2) > 0 || (!empty($on_franco_amount) && round($on_franco_amount, 2) > 0) ? ' ' . $GLOBALS['STR_OR_COORDINATION'] : '') . ' ' . $GLOBALS['STR_FROM'] . ' ' . $GLOBALS['site_parameters']['nb_product'] . ' ' . $GLOBALS['STR_PRODUCT_BUY']; } $shipping_text .= ')'; } $tpl = $GLOBALS['tplEngine']->createTemplate('caddie_content_html.tpl'); $tpl->assign('is_empty', ($_SESSION['session_caddie']->count_products() == 0)); $tpl->assign('STR_EMPTY_CADDIE', $GLOBALS['STR_EMPTY_CADDIE']); if(!($_SESSION['session_caddie']->count_products() == 0)){ $tpl->assign('STR_BEFORE_TWO_POINTS', $GLOBALS['STR_BEFORE_TWO_POINTS']); if (is_module_vacances_active() && get_vacances_type() == 1) { $tpl->assign('global_error', vb($GLOBALS['site_parameters']['module_vacances_client_msg_' . $_SESSION['session_langue']])); } $tpl->assign('erreur_caddie', $_SESSION['session_caddie']->affiche_erreur_caddie()); $tpl->assign('action', get_current_url(false)); $tpl->assign('products_summary_table', get_caddie_products_summary_table(true, true, $mode_transport, $shipping_text)); $tpl->assign('shipping_text', $shipping_text); $tpl->assign('STR_UPDATE', $GLOBALS['STR_UPDATE']); if (est_identifie()) { $tpl->assign('code_promo', array( 'txt' => $GLOBALS['STR_CODE_PROMO'], 'value' => vb($_SESSION['session_caddie']->code_promo), )); if (!empty($_SESSION['session_caddie']->code_promo)) { $tpl->assign('code_promo_delete', array( 'href' => get_current_url(false) . '?code_promo=delete', 'src' => $GLOBALS['wwwroot'] . '/icones/rupture.png', 'txt' => $GLOBALS['STR_DELETE'] )); } } else { $tpl->assign('membre_href', $GLOBALS['wwwroot'] . '/membre.php'); $tpl->assign('STR_LOGIN_FOR_REBATE', $GLOBALS['STR_LOGIN_FOR_REBATE']); $tpl->assign('STR_PLEASE_LOGIN', $GLOBALS['STR_PLEASE_LOGIN']); $tpl->assign('STR_REBATE_NOW', $GLOBALS['STR_REBATE_NOW']); } $tpl->assign('is_mode_transport', !empty($mode_transport)); if (!empty($mode_transport)) { $tpl->assign('zone_error', $form_error_object->text('pays_zone')); $tpl->assign('STR_DELIVERY', $GLOBALS['STR_DELIVERY']); $tpl->assign('STR_SHIPPING_ZONE', $GLOBALS['STR_SHIPPING_ZONE']); $tpl->assign('STR_REFRESH', $GLOBALS['STR_REFRESH']); $tpl->assign('STR_SHIP_ZONE_CHOOSE', $GLOBALS['STR_SHIP_ZONE_CHOOSE']); // On gère le port : même en cas de tarification indépendante de la zone de livraison, // il faut demander la zone afin de pouvoir identifier les modes de livraison possibles $sqlZone = 'SELECT id, nom_' . $_SESSION['session_langue'] . ' AS nom FROM peel_zones ORDER BY position, nom'; $resZone = query($sqlZone); $zone_options = array(); while ($Zone = fetch_assoc($resZone)) { $selected = false; if (empty($_SESSION['session_caddie']->zoneId)) { // L'utilisateur vient d'arriver sur la page de caddie : on présélectionne la zone liée à l'adresse de son compte if (!empty($_SESSION['session_utilisateur']['zoneId']) && $_SESSION['session_utilisateur']['zoneId'] == $Zone['id']) { $selected = true; $_SESSION['session_caddie']->set_zone($_SESSION['session_utilisateur']['zoneId']); } } elseif (!empty($_SESSION['session_caddie']->zoneId) && $_SESSION['session_caddie']->zoneId == $Zone['id']) { $selected = true; } $zone_options[] = array( 'value' => $Zone['id'], 'issel' => $selected, 'name' => $Zone['nom'] ); } $tpl->assign('zone_options', $zone_options); $tpl->assign('zone', $_SESSION['session_caddie']->zone); $tpl->assign('STR_SHIPPING_ZONE', $GLOBALS['STR_SHIPPING_ZONE']); $tpl->assign('is_zone', (!empty($_SESSION['session_caddie']->zoneId) && !empty($mode_transport))); if (!empty($_SESSION['session_caddie']->zoneId) && !empty($mode_transport)) { if ($mode_transport == 1) { // Ici on est dans le cas où le calcul des frais de ports est par poids ou par montant total $sqlType = 'SELECT DISTINCT(t.id), t.nom_' . $_SESSION['session_langue'] . ' FROM peel_tarifs tf INNER JOIN peel_types t ON t.id = tf.type WHERE t.etat = 1 AND tf.zone = "' . intval($_SESSION['session_caddie']->zoneId) . '" AND (poidsmin<="' . floatval($_SESSION['session_caddie']->total_poids) . '" OR poidsmin=0) AND (poidsmax>="' . floatval($_SESSION['session_caddie']->total_poids) . '" OR poidsmax=0) AND (totalmin<="' . floatval($_SESSION['session_caddie']->total_produit) . '" OR totalmin=0) AND (totalmax>="' . floatval($_SESSION['session_caddie']->total_produit) . '" OR totalmax=0)'; $resType = query($sqlType); } $tpl->assign('shipping_type_error', $form_error_object->text('type')); $tpl->assign('STR_SHIPPING_TYPE', $GLOBALS['STR_SHIPPING_TYPE']); $tpl->assign('STR_SHIP_TYPE_CHOOSE', $GLOBALS['STR_SHIP_TYPE_CHOOSE']); $tpl->assign('STR_ERREUR_TYPE', $GLOBALS['STR_ERREUR_TYPE']); if (!empty($resType) && num_rows($resType) > 0) { $type_options = array(); while ($Type = fetch_assoc($resType)) { $type_options[] = array( 'value' => intval($Type['id']), 'issel' => (vb($_SESSION['session_caddie']->typeId) == $Type['id']), 'name' => $Type['nom_' . $_SESSION['session_langue']] ); } $tpl->assign('shipping_type_options', $type_options); } } } $tpl->assign('is_cart_preservation_module_active', is_cart_preservation_module_active()); $tpl->assign('preservation_href', $GLOBALS['wwwroot'] . '/modules/cart_preservation/cart_preservation.php?mode=save'); $tpl->assign('STR_SAVE_CART', $GLOBALS['STR_SAVE_CART']); if (round($_SESSION['session_caddie']->avoir_user, 2) > round($_SESSION['session_caddie']->avoir, 2)) $tpl->assign('STR_SUGGEST', $GLOBALS['STR_SUGGEST']); if ($GLOBALS['site_parameters']['minimal_amount_to_order'] > $_SESSION['session_caddie']->total_produit) { $tpl->assign('is_minimum_error', true); $tpl->assign('STR_MINIMUM_PURCHASE_OF', $GLOBALS['STR_MINIMUM_PURCHASE_OF']); $tpl->assign('minimum_prix', fprix($GLOBALS['site_parameters']['minimal_amount_to_order'], true)); $tpl->assign('STR_REQUIRED_VALIDATE_ORDER', $GLOBALS['STR_REQUIRED_VALIDATE_ORDER']); } else { $tpl->assign('is_minimum_error', false); $tpl->assign('STR_ORDER', $GLOBALS['STR_ORDER']); } $tpl->assign('shopping_href', $GLOBALS['wwwroot'] . '/achat/'); $tpl->assign('empty_list_href', get_current_url(false) . '?func=vide'); $tpl->assign('STR_SHOPPING', $GLOBALS['STR_SHOPPING']); $tpl->assign('STR_EMPTY_LIST', $GLOBALS['STR_EMPTY_LIST']); $tpl->assign('STR_EMPTY_CART', $GLOBALS['STR_EMPTY_CART']); } $output = $tpl->fetch(); return $output; } } if (!function_exists('get_order_step1')) { /** * get_order_step1() * * @param array $frm Array with all fields data * @param class $form_error_object * @param mixed $mode_transport * @return */ function get_order_step1(&$frm, &$form_error_object, $mode_transport) { $output = ''; if (empty($_SESSION['session_caddie']) || $_SESSION['session_caddie']->count_products() == 0) { $output .= $GLOBALS['STR_EMPTY_CADDIE']; } else { $tpl = $GLOBALS['tplEngine']->createTemplate('order_step1.tpl'); $tpl->assign('error_cvg', $form_error_object->text('cgv')); $tpl->assign('action', get_current_url(false)); $tpl->assign('societe1', $frm['societe1']); $tpl->assign('nom1_error', $form_error_object->text('nom1')); $tpl->assign('nom1', $frm['nom1']); $tpl->assign('prenom1_error', $form_error_object->text('prenom1')); $tpl->assign('prenom1', $frm['prenom1']); $tpl->assign('email1_error', $form_error_object->text('email1')); $tpl->assign('email1', $frm['email1']); $tpl->assign('contact1_error', $form_error_object->text('contact1')); $tpl->assign('contact1', $frm['contact1']); $tpl->assign('adresse1_error', $form_error_object->text('adresse1')); $tpl->assign('adresse1', $frm['adresse1']); $tpl->assign('code_postal1_error', $form_error_object->text('code_postal1')); $tpl->assign('code_postal1', $frm['code_postal1']); $tpl->assign('ville1_error', $form_error_object->text('ville1')); $tpl->assign('ville1', $frm['ville1']); $tpl->assign('pays1_error', $form_error_object->text('pays1')); $tpl->assign('pays1_options', get_country_select_options($frm['pays1'], null)); $tpl->assign('STR_STEP1', $GLOBALS['STR_STEP1']); $tpl->assign('STR_BEFORE_TWO_POINTS', $GLOBALS['STR_BEFORE_TWO_POINTS']); $tpl->assign('STR_INVOICE_ADDRESS', $GLOBALS['STR_INVOICE_ADDRESS']); $tpl->assign('STR_SOCIETE', $GLOBALS['STR_SOCIETE']); $tpl->assign('STR_NAME', $GLOBALS['STR_NAME']); $tpl->assign('STR_FIRST_NAME', $GLOBALS['STR_FIRST_NAME']); $tpl->assign('STR_EMAIL', $GLOBALS['STR_EMAIL']); $tpl->assign('STR_TELEPHONE', $GLOBALS['STR_TELEPHONE']); $tpl->assign('STR_ADDRESS', $GLOBALS['STR_ADDRESS']); $tpl->assign('STR_ZIP', $GLOBALS['STR_ZIP']); $tpl->assign('STR_TOWN', $GLOBALS['STR_TOWN']); $tpl->assign('STR_COUNTRY', $GLOBALS['STR_COUNTRY']); if (!empty($mode_transport) && is_delivery_address_necessary_for_delivery_type(vn($_SESSION['session_caddie']->typeId)) && (!is_socolissimo_module_active() || empty($_SESSION['session_commande']['is_socolissimo_order']))) { $tpl->assign('is_mode_transport', true); $tpl->assign('STR_SHIP_ADDRESS', $GLOBALS['STR_SHIP_ADDRESS']); if(is_icirelais_module_active() && !empty($_SESSION['session_commande']['is_icirelais_order'])) { $tpl->assign('text_temp_address', STR_MODULE_ICIRELAIS_TEMP_ADDRESS); } $tpl->assign('societe2', $frm['societe2']); $tpl->assign('nom2_error', $form_error_object->text('nom2')); $tpl->assign('nom2', $frm['nom2']); $tpl->assign('prenom2_error', $form_error_object->text('prenom2')); $tpl->assign('prenom2', $frm['prenom2']); $tpl->assign('email2_error', $form_error_object->text('email2')); $tpl->assign('email2', $frm['email2']); $tpl->assign('contact2_error', $form_error_object->text('contact2')); $tpl->assign('contact2', $frm['contact2']); $tpl->assign('adresse2_error', $form_error_object->text('adresse2')); $tpl->assign('adresse2', $frm['adresse2']); $tpl->assign('code_postal2_error', $form_error_object->text('code_postal2')); $tpl->assign('code_postal2', $frm['code_postal2']); $tpl->assign('ville2_error', $form_error_object->text('ville2')); $tpl->assign('ville2', $frm['ville2']); $tpl->assign('pays2_error', $form_error_object->text('pays2')); $tpl->assign('pays2_options', get_country_select_options($frm['pays2'], null, 'name', false, $_SESSION['session_caddie']->zoneId)); }else { $tpl->assign('is_mode_transport', false); } if ($_SESSION['session_caddie']->total > 0) { $tpl->assign('is_payment_cgv', true); if(isset($erreurs['paiement'])) { $tpl->assign('STR_ERR_PAYMENT', $GLOBALS['STR_ERR_PAYMENT']); } $tpl->assign('payment_error', $form_error_object->text('payment_technical_code')); $tpl->assign('payment_select', get_payment_select($_SESSION['session_caddie']->payment_technical_code)); $tpl->assign('STR_PAYMENT', $GLOBALS['STR_PAYMENT']); $tpl->assign('STR_CGV_OK', $GLOBALS['STR_CGV_OK']); } else { $tpl->assign('is_payment_cgv', false); } $tpl->assign('commentaires', $frm['commentaires']); $tpl->assign('STR_COMMENTS', $GLOBALS['STR_COMMENTS']); $tpl->assign('STR_ETAPE_SUIVANTE', $GLOBALS['STR_ETAPE_SUIVANTE']); $output = $tpl->fetch(); } return $output; } } if (!function_exists('get_order_step2')) { /** * get_order_step2() * * @param array $frm Array with all fields data * @param mixed $mode_transport * @return */ function get_order_step2(&$frm, $mode_transport) { $output = ''; if ($_SESSION['session_caddie']->count_products() == 0) { $output .= $GLOBALS['STR_EMPTY_CADDIE']; } else { $tpl = $GLOBALS['tplEngine']->createTemplate('order_step2.tpl'); $tpl->assign('STR_BEFORE_TWO_POINTS', $GLOBALS['STR_BEFORE_TWO_POINTS']); $tpl->assign('STR_STEP2', $GLOBALS['STR_STEP2']); $tpl->assign('STR_DATE', $GLOBALS['STR_DATE']); $tpl->assign('STR_INVOICE_ADDRESS', $GLOBALS['STR_INVOICE_ADDRESS']); $tpl->assign('STR_SOCIETE', $GLOBALS['STR_SOCIETE']); $tpl->assign('STR_CUSTOMER', $GLOBALS['STR_CUSTOMER']); $tpl->assign('STR_TELEPHONE', $GLOBALS['STR_TELEPHONE']); $tpl->assign('STR_EMAIL', $GLOBALS['STR_EMAIL']); $tpl->assign('STR_ADDRESS', $GLOBALS['STR_ADDRESS']); $tpl->assign('STR_ZIP', $GLOBALS['STR_ZIP']); $tpl->assign('STR_TOWN', $GLOBALS['STR_TOWN']); $tpl->assign('STR_COUNTRY', $GLOBALS['STR_COUNTRY']); $tpl->assign('date', get_formatted_date()); $tpl->assign('societe1', $frm['societe1']); $tpl->assign('nom1', $frm['nom1']); $tpl->assign('prenom1', $frm['prenom1']); $tpl->assign('contact1', $frm['contact1']); $tpl->assign('email1', $frm['email1']); $tpl->assign('adresse1', $frm['adresse1']); $tpl->assign('code_postal1', $frm['code_postal1']); $tpl->assign('ville1', $frm['ville1']); $tpl->assign('pays1', $frm['pays1']); if (trim($frm['commentaires']) != '') { $tpl->assign('STR_COMMENTS', $GLOBALS['STR_COMMENTS']); $tpl->assign('commentaires', $frm['commentaires']); } if (!empty($mode_transport)) { $tpl->assign('STR_SHIPPING_TYPE', $GLOBALS['STR_SHIPPING_TYPE']); $tpl->assign('STR_SHIP_ADDRESS', $GLOBALS['STR_SHIP_ADDRESS']); $tpl->assign('STR_PAYMENT', $GLOBALS['STR_PAYMENT']); $tpl->assign('STR_DELIVERY', $GLOBALS['STR_DELIVERY']); $tpl->assign('is_mode_transport', true); $tpl->assign('payment', get_payment_name($_SESSION['session_caddie']->payment_technical_code)); $tpl->assign('shipping_zone', $_SESSION['session_caddie']->zone); $tpl->assign('shipping_type', $_SESSION['session_caddie']->type); $is_delivery_address_necessary_for_delivery_type = is_delivery_address_necessary_for_delivery_type(vn($_SESSION['session_caddie']->typeId)); $tpl->assign('is_delivery_address_necessary_for_delivery_type', $is_delivery_address_necessary_for_delivery_type); if($is_delivery_address_necessary_for_delivery_type) { $tpl->assign('societe2', $frm['societe2']); $tpl->assign('nom2', $frm['nom2']); $tpl->assign('prenom2', $frm['prenom2']); $tpl->assign('email2', $frm['email2']); $tpl->assign('contact2', $frm['contact2']); $tpl->assign('adresse2', $frm['adresse2']); $tpl->assign('code_postal2', $frm['code_postal2']); $tpl->assign('ville2', $frm['ville2']); $tpl->assign('pays2', $frm['pays2']); } } else { $tpl->assign('is_mode_transport', false); } $tpl->assign('action', $GLOBALS['wwwroot'] . '/achat/fin_commande.php'); if (is_icirelais_module_active() && !empty($_SESSION['session_commande']['is_icirelais_order'])) { $tpl->assign('icirelais_id_delivery_points_radio_inputs', get_icirelais_id_delivery_points_radio_inputs()); } if(is_tnt_module_active() && $GLOBALS['web_service_tnt']->is_type_tntdropoffpoint(vn($_SESSION['session_caddie']->typeId)) && $GLOBALS['web_service_tnt']->is_type_linked_to_tnt(vn($_SESSION['session_caddie']->typeId)) && (defined('IN_STEP1') || defined('IN_STEP2') || defined('IN_STEP3'))) { try { $tpl->assign('get_tnt_id_delivery_points_radio_inputs', $GLOBALS['web_service_tnt']->get_tnt_id_delivery_points_radio_inputs()); } catch (SoapFault $ex) { // var_dump($ex->faultcode, $ex->faultstring, $ex->detail); echo $GLOBALS['tplEngine']->createTemplate('global_error.tpl', array('message' => $GLOBALS['STR_MODULE_TNT_ERREUR_WEBSERVICE'] . $GLOBALS['STR_BEFORE_TWO_POINTS'] . ': '.$ex->faultstring))->fetch(); } } $tpl->assign('caddie_products_summary_table', get_caddie_products_summary_table(false, true, $mode_transport, null)); $tpl->assign('STR_ORDER', $GLOBALS['STR_ORDER']); $tpl->assign('STR_BACK_TO_CADDIE_TXT', $GLOBALS['STR_BACK_TO_CADDIE_TXT']); $output = $tpl->fetch(); } return $output; } } if (!function_exists('get_order_step3')) { /** * get_order_step3() * * @param integer $commandeid * @return */ function get_order_step3($commandeid) { $tpl = $GLOBALS['tplEngine']->createTemplate('order_step3.tpl'); $tpl->assign('payment_form', get_payment_form($commandeid, null, true)); $tpl->assign('resume_commande', affiche_resume_commande($commandeid, false, true)); $tpl->assign('conversion_page', affiche_contenu_html("conversion_page", true)); $tpl->assign('STR_STEP3', $GLOBALS['STR_STEP3']); $tpl->assign('STR_MSG_THANKS', $GLOBALS["STR_MSG_THANKS"]); echo $tpl->fetch(); } } if (!function_exists('affiche_resume_commande')) { /** * affiche_resume_commande() * * @param integer $id * @param boolean $affiche_statut * @param boolean $show_only_owned_by_current_user * @return */ function affiche_resume_commande($id, $affiche_statut, $show_only_owned_by_current_user = true) { if(!empty($_SESSION['session_last_bill_viewed']) && $id == $_SESSION['session_last_bill_viewed']){ // L'utilisateur a payé une commande sans s'être connecté à son compte. On l'autorise à voir le résumé de sa commande $where = 'id = "' . intval($_SESSION['session_last_bill_viewed']) . '"'; } else { // Cas normal d'un utilisateur connecté à son compte // OU si un utilisateur non loggué vient voir cette page sans avoir $_SESSION['session_last_bill_viewed'] correct : par exemple moteur Google Adsense qui vient pour afficher les publicités => il n'y aura rien de trouvé => page sans infos de commandes => normal $where = 'id = "' . intval($id) . '"'; } if($show_only_owned_by_current_user){ $where .= ' AND id_utilisateur = "' . intval(vb($_SESSION['session_utilisateur']['id_utilisateur'])) . '"'; } $qid_commande = query('SELECT * FROM peel_commandes WHERE '.$where); $commande = fetch_object($qid_commande); $output = ''; if (!empty($commande)) { $order_infos = get_order_infos_array($commande); $tpl = $GLOBALS['tplEngine']->createTemplate('resume_commande.tpl'); $tpl->assign('STR_BEFORE_TWO_POINTS', $GLOBALS['STR_BEFORE_TWO_POINTS']); $tpl->assign('STR_ORDER_DETAIL', $GLOBALS['STR_ORDER_DETAIL']); $tpl->assign('STR_ORDER_NUMBER', $GLOBALS['STR_ORDER_NUMBER']); $tpl->assign('STR_DATE', $GLOBALS['STR_DATE']); $tpl->assign('STR_AMOUNT', $GLOBALS['STR_AMOUNT']); $tpl->assign('STR_TTC', $GLOBALS['STR_TTC']); $tpl->assign('STR_INVOICE_ADDRESS', $GLOBALS['STR_INVOICE_ADDRESS']); $tpl->assign('STR_PAYMENT', $GLOBALS['STR_PAYMENT']); $tpl->assign('id', $id); $tpl->assign('date', get_formatted_date($commande->o_timestamp, 'short', 'long')); $tpl->assign('order_amount', $order_infos['net_infos_array']['montant']); $tpl->assign('bill_address', $order_infos['client_infos_bill']); if (!empty($GLOBALS['site_parameters']['mode_transport'])) { $tpl->assign('STR_SHIP_ADDRESS', $GLOBALS['STR_SHIP_ADDRESS']); $tpl->assign('ship_address', $order_infos['client_infos_ship']); } $tpl->assign('payment', get_payment_name($commande->paiement)); if (!empty($GLOBALS['site_parameters']['mode_transport'])) { $tpl->assign('STR_SHIPPING_TYPE', $GLOBALS['STR_SHIPPING_TYPE']); $tpl->assign('shipping_type', $commande->type); } if (!empty($commande->delivery_tracking)) { $tpl->assign('is_delivery_tracking', true); $tpl->assign('STR_TRACKING_LINK', $GLOBALS['STR_TRACKING_LINK']); $tpl->assign('delivery_tracking', $commande->delivery_tracking); if(is_icirelais_module_active()){ $tpl->assign('icirelais', array( 'src' => $GLOBALS['wwwroot'] . '/modules/icirelais/js/icirelais.js', 'value' => vb($commande->delivery_tracking) )); $tpl->assign('STR_MODULE_ICIRELAIS_TRACKING_URL', STR_MODULE_ICIRELAIS_TRACKING_URL); $tpl->assign('STR_MODULE_ICIRELAIS_COMMENT_TRACKING', STR_MODULE_ICIRELAIS_COMMENT_TRACKING); $tpl->assign('STR_MODULE_ICIRELAIS_ERROR_TRACKING', STR_MODULE_ICIRELAIS_ERROR_TRACKING); $tpl->assign('STR_MODULE_ICIRELAIS_CREATE_TRACKING', STR_MODULE_ICIRELAIS_CREATE_TRACKING); } } else { $tpl->assign('is_delivery_tracking', false); } if((defined('IN_STEP1') || defined('IN_STEP2') || defined('IN_STEP3')) && is_tnt_module_active() && $GLOBALS['web_service_tnt']->is_type_linked_to_tnt(vn($_SESSION['session_caddie']->typeId))) { $receiver_info['type_id'] = ''; if(!empty($commande->type)) { // Récupération des informations sur le type de transport sélectionné. $sql = 'SELECT * FROM peel_types WHERE nom_' . $commande->lang . ' = "'. nohtml_real_escape_string($commande->type).'"'; $q = query($sql); if ($this_type = fetch_assoc($q)) { if ($this_type['is_tnt'] == 0) { die($GLOBALS['STR_MODULE_TNT_NOT_ASSOCIATED_ORDER']); } } } // Determine le type de livraison (DROPOFFPOINT,ENTERPRISE,INDIVIDUAL), et le code de service TNT associé(J,JD,JZ) if(!empty($_POST['relais_tnt']) && $this_type['tnt_threshold'] == 0) { // le relais colis est transmis en paramètre, et le type de livraison correspond à une livraison en relais colis $tab_relais_tnt = explode('###', $_POST['relais_tnt']); $order_infos['code_postal2'] = $tab_relais_tnt[0]; $order_infos['ville2'] = $tab_relais_tnt[1]; $receiver_info['type_id'] = $tab_relais_tnt[2];// code XETT du relai de colis $receiver_info['type'] = 'DROPOFFPOINT'; } else { $order_infos['code_postal2'] = $_SESSION['session_commande']['code_postal2']; $order_infos['ville2'] = $_SESSION['session_commande']['ville2']; } if(!empty($commande->xETTCode) && $this_type['tnt_threshold'] == 0) { // le code xETTCode est renseigné pour la commande, et le type de livraison correspond à une livraison en relais colis $receiver_info['type_id'] = $commande->xETTCode; // code XETT du relai de colis $receiver_info['type'] = 'DROPOFFPOINT'; } elseif(!empty($_SESSION['session_commande']['societe2'])) { // Ce n'est pas une commande à livrer en point relais, et un nom d'entreprise est renseigné dans l'adresse de livraison => Livraison en entreprise (code J). $receiver_info['type'] = 'ENTERPRISE'; } else { // Autres cas : livraison à chez le particulier $receiver_info['type'] = 'INDIVIDUAL'; } try { $tpl->assign('STR_MODULE_TNT_FEASIBILITY_REPORT', $GLOBALS['STR_MODULE_TNT_FEASIBILITY_REPORT']); $tpl->assign('tnt_message', $GLOBALS['web_service_tnt']->get_tnt_feasibility_test($order_infos, $receiver_info, true)); } catch (SoapFault $ex) { $tpl->assign('tnt_erreur_message', $GLOBALS['STR_MODULE_TNT_ERREUR_WEBSERVICE'] . BEFORE_TWO_POINTS . ': '.$ex->faultstring ); } $tpl->assign('tnt_message', $tnt_message); } if ($affiche_statut === 1 || $affiche_statut === true) { $tpl->assign('is_payment_delivery_status', true); $tpl->assign('order_statut_paiement_name', get_payment_status_name($commande->id_statut_paiement)); $tpl->assign('STR_ORDER_STATUT_PAIEMENT', $GLOBALS['STR_ORDER_STATUT_PAIEMENT']); $tpl->assign('STR_ORDER_STATUT_LIVRAISON', $GLOBALS['STR_ORDER_STATUT_LIVRAISON']); $tpl->assign('order_statut_livraison_name', get_delivery_status_name($commande->id_statut_livraison)); if (in_array($commande->id_statut_paiement, array(2,3))) { $tpl->assign('STR_INVOICE', $GLOBALS['STR_INVOICE']); $tpl->assign('STR_PRINT_YOUR_BILL', $GLOBALS['STR_PRINT_YOUR_BILL']); $tpl->assign('invoice', array( 'src' => $GLOBALS['wwwroot'] . '/images/view_pdf.gif', 'href' => $GLOBALS['wwwroot'] . '/factures/commande_pdf.php?code_facture=' . urlencode($commande->code_facture) . '&mode=facture', )); } } else { $tpl->assign('is_payment_delivery_status', false); } if (is_payback_module_active()){ $tpl->assign('STR_MODULE_PAYBACK_RETURN_REQUEST', $GLOBALS['STR_MODULE_PAYBACK_RETURN_REQUEST']); if(!defined('STR_RETURN_THIS_PRODUCT')) { $tpl->assign('return_this_product_txt', ''); } else { $tpl->assign('return_this_product_txt', $GLOBALS['STR_MODULE_PAYBACK_RETURN_THIS_PRODUCT']); } } $tpl->assign('is_conditionnement_module_active', is_conditionnement_module_active()); $products_data = array(); $product_infos_array = get_product_infos_array_in_order($id, $commande->devise, $commande->currency_rate); foreach ($product_infos_array as $this_ordered_product) { if (is_attributes_module_active()) { $this_ordered_product["product_text"] = display_option_image($this_ordered_product["product_text"], true); } if(is_conditionnement_module_active ()) { // Les produits sont conditionnés sous forme de lot if(!empty($this_ordered_product['conditionnement'])){ $qte_total = intval($this_ordered_product['quantite']) * $this_ordered_product['conditionnement']; }else{ $qte_total = $this_ordered_product['quantite']; } } $products_data[] = array( 'reference' => $this_ordered_product['reference'], 'product_text' => str_replace("\n", '<br />', $this_ordered_product["product_text"]), 'prix' => fprix($this_ordered_product['prix'], true, $commande->devise, true, $commande->currency_rate), 'conditionnement' => (!empty($product_object->conditionnement)?$product_object->conditionnement:'-'), 'conditionnement_qty' => vb($qte_total), 'quantite' => $this_ordered_product['quantite'], 'total_prix' => fprix($this_ordered_product['total_prix'], true, $commande->devise, true, $commande->currency_rate), 'is_form_retour' => (is_payback_module_active() && in_array($commande->id_statut_paiement, array(2,3)) && $commande->id_statut_livraison == 3 && $this_ordered_product['statut'] = 1 && $this_ordered_product['quantite'] > 0), 'action' => $GLOBALS['wwwroot'] . '/modules/payback/form_retour.php', 'commandeid' => $commande->id, 'utilisateurid' => $commande->id_utilisateur, 'paiement' => $commande->paiement, 'langue' => $commande->lang, 'nom_produit' => $this_ordered_product['nom_produit'], 'taille_produit' => $this_ordered_product['taille'], 'couleur_produit' => $this_ordered_product['couleur'], 'id_produit' => $this_ordered_product['id'], 'prix_ht_produit' => $this_ordered_product['prix_ht'], 'prix_ttc_produit' => $this_ordered_product['prix'], 'tva_produit' => $this_ordered_product['tva'], ); } $tpl->assign('products_data', $products_data); $tpl->assign('STR_LIST_PRODUCT', $GLOBALS['STR_LIST_PRODUCT']); $tpl->assign('STR_REFERENCE', $GLOBALS['STR_REFERENCE']); $tpl->assign('STR_PRODUCT', $GLOBALS['STR_PRODUCT']); $tpl->assign('STR_SOLD_PRICE', $GLOBALS['STR_SOLD_PRICE']); $tpl->assign('STR_QUANTITY', $GLOBALS['STR_QUANTITY']); $tpl->assign('STR_TOTAL_TTC', $GLOBALS['STR_TOTAL_TTC']); $tpl->assign('STR_CONDITIONNEMENT', $GLOBALS['STR_CONDITIONNEMENT']); $tpl->assign('STR_CONDITIONNEMENT_QTY', $GLOBALS['STR_CONDITIONNEMENT_QTY']); $output .= $tpl->fetch(); } return $output; } } if (!function_exists('affiche_liste_commandes')) { /** * affiche_liste_commandes() * * @param string $order * @param string $sort * @return */ function affiche_liste_commandes($order = "id" , $sort = "DESC") { $nb = 30; $output = ''; // Charge la liste des commandes et les affiche. $sql = "SELECT * FROM peel_commandes WHERE id_utilisateur = '" . intval($_SESSION['session_utilisateur']['id_utilisateur']) . "' ORDER BY " . nohtml_real_escape_string($order) . " " . nohtml_real_escape_string($sort) . ""; $tpl = $GLOBALS['tplEngine']->createTemplate('liste_commandes.tpl'); $Links = new Multipage($sql, 'commandes_history'); $results_array = $Links->Query(); if (empty($results_array)) { $tpl->assign('STR_NO_ORDER', $GLOBALS['STR_NO_ORDER']); } else { $tpl->assign('STR_TABLE_SUMMARY_ORDERS', $GLOBALS['STR_TABLE_SUMMARY_ORDERS']); $tpl->assign('STR_ORDER_NUMBER', $GLOBALS['STR_ORDER_NUMBER']); $tpl->assign('STR_DATE', $GLOBALS['STR_DATE']); $tpl->assign('STR_ORDER_STATUT_PAIEMENT', $GLOBALS['STR_ORDER_STATUT_PAIEMENT']); $tpl->assign('STR_ORDER_STATUT_LIVRAISON', $GLOBALS['STR_ORDER_STATUT_LIVRAISON']); $tpl->assign('STR_AMOUNT', $GLOBALS['STR_AMOUNT']); $tpl->assign('STR_PDF_BILL', $GLOBALS['STR_PDF_BILL']); $orders = array(); foreach ($results_array as $order) { $orders[] = array( 'href' => get_current_url(false) . '?mode=details&id=' . $order['id'] . '&timestamp=' . urlencode($order['o_timestamp']), 'info_src' => $GLOBALS['wwwroot'] . '/icones/info.gif', 'pdf_src' => $GLOBALS['wwwroot'] . '/images/view_pdf.gif', 'facture_href' => $GLOBALS['wwwroot'] . '/factures/commande_pdf.php?code_facture=' . $order['code_facture'] . '&mode=facture', 'id' => $order['id'], 'date' => get_formatted_date($order['o_timestamp']), 'payment_status_name' => get_payment_status_name($order['id_statut_paiement']), 'delivery_status_name' => get_delivery_status_name($order['id_statut_livraison']), 'prix' => fprix($order['montant'], true, $order['devise'], true, $order['currency_rate']), ); } $tpl->assign('orders', $orders); $tpl->assign('multipage', $Links->GetMultipage()); } $tpl->assign('STR_ORDER_HISTORY', $GLOBALS['STR_ORDER_HISTORY']); $output .= $tpl->fetch(); return $output; } } if (!function_exists('affichage_fin_cb')) { /** * affichage_fin_cb() * * @param integer $order_id * @param boolean $payment_validated * @return */ function affichage_fin_cb($order_id, $payment_validated, $message = '') { $tpl = $GLOBALS['tplEngine']->createTemplate('fin_cb.tpl'); $tpl->assign('payment_validated', $payment_validated); $tpl->assign('message', $message); if ($payment_validated) { $tpl->assign('payment_msg', $GLOBALS['STR_PAYMENT_SUCCEED']); $tpl->assign('bottom_msg', $GLOBALS['STR_YOU_CAN_EDIT_YOUR_ORDER']); $tpl->assign('resume_commande', affiche_resume_commande($order_id, false, true)); }else{ $tpl->assign('payment_msg', $GLOBALS['STR_PAYMENT_FAILED']); $tpl->assign('bottom_msg', $GLOBALS['STR_ORDER_RENEW_INVITE']); } $tpl->assign('STR_ORDER_STATUT', $GLOBALS['STR_ORDER_STATUT']); echo $tpl->fetch(); } } if (!function_exists('get_caddie_products_summary_table')) { /** * get_caddie_products_summary_table() * * @param mixed $with_form_fields * @param mixed $with_totals_summary * @param mixed $mode_transport * @param mixed $shipping_text * @return */ function get_caddie_products_summary_table($with_form_fields = false, $with_totals_summary = true, $mode_transport, $shipping_text = null) { $output = ''; if (empty($shipping_text)) { $shipping_text = $GLOBALS['STR_SHIPPING_COST']; } if (display_prices_with_taxes_active()) { $total_remise_displayed = $_SESSION['session_caddie']->total_remise; $total_ecotaxe_displayed = $_SESSION['session_caddie']->total_ecotaxe_ttc; $small_order_overcost_displayed = $_SESSION['session_caddie']->small_order_overcost_amount; $cout_transport_displayed = $_SESSION['session_caddie']->cout_transport; $taxes_displayed = $GLOBALS['STR_TTC']; } else { $total_remise_displayed = $_SESSION['session_caddie']->total_remise_ht; $total_ecotaxe_displayed = $_SESSION['session_caddie']->total_ecotaxe_ht; $small_order_overcost_displayed = $_SESSION['session_caddie']->small_order_overcost_amount_ht; $cout_transport_displayed = $_SESSION['session_caddie']->cout_transport_ht; $taxes_displayed = $GLOBALS['STR_HT']; } $tpl = $GLOBALS['tplEngine']->createTemplate('caddie_products_summary_table.tpl'); $tpl->assign('taxes_displayed', $taxes_displayed); $tpl->assign('suppression_src', $GLOBALS['wwwroot'] . '/images/suppression.png'); $tpl->assign('no_photo_src', $GLOBALS['repertoire_upload'] . '/' . $GLOBALS['site_parameters']['default_picture']); $tpl->assign('with_form_fields', $with_form_fields); $tpl->assign('is_conditionnement_module_active', is_conditionnement_module_active()); $tpl->assign('is_attributes_module_active', is_attributes_module_active()); $tpl->assign('tarif_paiement', fprix($_SESSION['session_caddie']->tarif_paiement, true)); $tpl->assign('STR_BEFORE_TWO_POINTS', $GLOBALS['STR_BEFORE_TWO_POINTS']); $tpl->assign('STR_TABLE_SUMMARY_CADDIE', $GLOBALS['STR_TABLE_SUMMARY_CADDIE']); $tpl->assign('STR_FRAIS_GESTION', $GLOBALS['STR_FRAIS_GESTION']); $tpl->assign('STR_PRODUCT', $GLOBALS['STR_PRODUCT']); $tpl->assign('STR_STOCK', $GLOBALS['STR_STOCK']); $tpl->assign('STR_UNIT_PRICE', $GLOBALS['STR_UNIT_PRICE']); $tpl->assign('STR_OPTION_PRICE', $GLOBALS['STR_OPTION_PRICE']); $tpl->assign('STR_QUANTITY', $GLOBALS['STR_QUANTITY']); $tpl->assign('STR_REMISE', $GLOBALS['STR_REMISE']); $tpl->assign('STR_TOTAL_PRICE', $GLOBALS['STR_TOTAL_PRICE']); $tpl->assign('STR_DELETE_PROD_CART', $GLOBALS['STR_DELETE_PROD_CART']); $tpl->assign('STR_FOR_GIFT', $GLOBALS['STR_FOR_GIFT']); $tpl->assign('STR_DELIVERY_STOCK', $GLOBALS['STR_DELIVERY_STOCK']); $tpl->assign('STR_COLOR', $GLOBALS['STR_COLOR']); $tpl->assign('STR_SIZE', $GLOBALS['STR_SIZE']); $tpl->assign('STR_EMAIL_FRIEND', $GLOBALS['STR_EMAIL_FRIEND']); $tpl->assign('STR_HOLIDAY_AVAILABLE_CADDIE', $GLOBALS['STR_HOLIDAY_AVAILABLE_CADDIE']); $tpl->assign('STR_DAYS', $GLOBALS['STR_DAYS']); $tpl->assign('STR_ECOTAXE', $GLOBALS['STR_ECOTAXE']); $tpl->assign('STR_INCLUDED', $GLOBALS['STR_INCLUDED']); $products = array(); foreach ($_SESSION['session_caddie']->articles as $numero_ligne => $product_id) { $product_object = new Product($product_id, null, false, null, true, !is_user_tva_intracom_for_no_vat() && !is_micro_entreprise_module_active()); $product_object->set_configuration(vb($_SESSION['session_caddie']->couleurId[$numero_ligne]), vb($_SESSION['session_caddie']->tailleId[$numero_ligne]), vn($_SESSION['session_caddie']->id_attribut[$numero_ligne]), is_reseller_module_active() && is_reseller()); if (!empty($product_object->id)) { // Récupération des variables du caddie $couleur = vb($_SESSION['session_caddie']->couleurId[$numero_ligne]); $taille = vb($_SESSION['session_caddie']->tailleId[$numero_ligne]); if (is_giftlist_module_active()) { $listcadeaux_owner = vn($_SESSION['session_caddie']->giftlist_owners[$numero_ligne]); } $quantite = vn($_SESSION['session_caddie']->quantite[$numero_ligne]); if (is_stock_advanced_module_active() && $product_object->on_stock == 1) { $stock_commandable = get_stock_commandable($product_object, $quantite); } $prix = vn($_SESSION['session_caddie']->prix[$numero_ligne]); $prix_ht = vn($_SESSION['session_caddie']->prix_ht[$numero_ligne]); $prix_cat = vn($_SESSION['session_caddie']->prix_cat[$numero_ligne]); $prix_cat_ht = vn($_SESSION['session_caddie']->prix_cat_ht[$numero_ligne]); $total_prix = vn($_SESSION['session_caddie']->total_prix[$numero_ligne]); $total_prix_ht = vn($_SESSION['session_caddie']->total_prix_ht[$numero_ligne]); $tva_percent = vn($_SESSION['session_caddie']->tva_percent[$numero_ligne]); $tva = vn($_SESSION['session_caddie']->tva[$numero_ligne]); $poids = vb($_SESSION['session_caddie']->poids[$numero_ligne]); $points = vb($_SESSION['session_caddie']->points[$numero_ligne]); $percent_remise_produit = vn($_SESSION['session_caddie']->percent_remise_produit[$numero_ligne]); $remise = vn($_SESSION['session_caddie']->remise[$numero_ligne]); $remise_ht = vn($_SESSION['session_caddie']->remise_ht[$numero_ligne]); if (is_stock_advanced_module_active()) { $etat_stock = vn($_SESSION['session_caddie']->etat_stock[$numero_ligne]); $delivery_stock = vb($_SESSION['session_caddie']->delai_stock[$numero_ligne]); } $email_check = vb($_SESSION['session_caddie']->email_check[$numero_ligne]); if (is_module_ecotaxe_active()) { $ecotaxe = vb($_SESSION['session_caddie']->ecotaxe_ttc[$numero_ligne]); } // $total_attribut = vn($_SESSION['session_caddie']->total_prix_attribut[$numero_ligne]); $urlprod_with_cid = $product_object->get_product_url(true, false) . "cId=" . $_SESSION['session_caddie']->couleurId[$numero_ligne]; $display_picture = $product_object->get_product_main_picture(false, $_SESSION['session_caddie']->couleurId[$numero_ligne]); if (display_prices_with_taxes_active()) { $option = vn($_SESSION['session_caddie']->option[$numero_ligne]); $remise_displayed = $remise; // $total_attribut_displayed = $total_attribut; $prix_cat_displayed = $prix_cat; $prix_avant_code_promo_sans_option_displayed = $_SESSION['session_caddie']->prix_avant_code_promo[$numero_ligne] - $_SESSION['session_caddie']->option[$numero_ligne] * (1 - $_SESSION['session_caddie']->percent_remise_produit[$numero_ligne] / 100); $total_prix_displayed = $total_prix; } else { $option = vn($_SESSION['session_caddie']->option_ht[$numero_ligne]); $remise_displayed = $remise_ht; // $total_attribut_displayed = $total_attribut / (1 + $product_object->tva / 100); $prix_cat_displayed = $prix_cat_ht; $prix_avant_code_promo_sans_option_displayed = $_SESSION['session_caddie']->prix_ht_avant_code_promo[$numero_ligne] - $_SESSION['session_caddie']->option_ht[$numero_ligne] * (1 - $_SESSION['session_caddie']->percent_remise_produit[$numero_ligne] / 100); $total_prix_displayed = $total_prix_ht; } $tmpProd = array( 'delete_href' => $GLOBALS['wwwroot'] . '/achat/caddie_affichage.php?func=enleve&ligne=' . $numero_ligne . '&id=' . $product_object->id, 'urlprod_with_cid' => $urlprod_with_cid, 'numero_ligne' => $numero_ligne, 'id' => $product_id, 'listcadeaux_owner' => vb($listcadeaux_owner), 'option' => $option, 'id_attribut' => vb($_SESSION['session_caddie']->id_attribut[$numero_ligne]), 'name' => $product_object->name, 'configuration_attributs_description' => (!empty($product_object->configuration_attributs_list) ? $product_object->configuration_attributs_description : NULL), 'email_check' => $email_check, 'prix' => fprix($prix_cat_displayed, true) ); if ($display_picture) { $tmpProd['src'] = $GLOBALS['repertoire_upload'] . '/thumbs/' . thumbs($display_picture, 75, 75, 'fit'); } else { $tmpProd['src'] = $GLOBALS['repertoire_upload'] . '/thumbs/' . thumbs($GLOBALS['site_parameters']['default_picture'], 75, 75, 'fit'); } if (is_giftlist_module_active() && $listcadeaux_owner) { $tmpProd['listcadeaux_owner_name'] = getUsername($listcadeaux_owner); } if (is_stock_advanced_module_active() && !empty($delivery_stock)) { $tmpProd['delivery_stock'] = get_formatted_duration((intval($delivery_stock) * 24 * 3600), false, 'month'); } if (!empty($_SESSION['session_caddie']->couleurId[$numero_ligne])) { $tmpProd['color'] = array( 'name' => get_color_name($couleur), 'id' => intval($_SESSION['session_caddie']->couleurId[$numero_ligne]) ); } if (!empty($_SESSION['session_caddie']->tailleId[$numero_ligne])) { $tmpProd['size'] = array( 'name' => get_size_name($taille), 'id' => intval($_SESSION['session_caddie']->tailleId[$numero_ligne]) ); } if (is_module_vacances_active() && get_vacances_type() == 2) { //on récupère le fournisseur pour afficher sa date de retour $supplier_back = query("SELECT on_vacances, on_vacances_date FROM peel_utilisateurs WHERE id_utilisateur = " . $product_object->id_utilisateur . ""); $res_supplier_back = fetch_assoc($supplier_back); $nbjours = get_vacances_jours($product_object->id_utilisateur); if ($nbjours) { $tmpProd['vacances'] = array( 'nbjours' => $nbjours, 'date' => get_formatted_date($res_supplier_back['on_vacances_date']) ); } } if (round($prix_cat_displayed, 2) != round($prix_avant_code_promo_sans_option_displayed, 2)) { $tmpProd['prix_promo'] = fprix($prix_avant_code_promo_sans_option_displayed, true); } if (is_module_ecotaxe_active() && !empty($ecotaxe)) { $tmpProd['prix_ecotaxe'] = fprix($ecotaxe, true); } if ($option != 0) { $tmpProd['option_prix'] = fprix($option * (1 - $_SESSION['session_caddie']->percent_remise_produit[$numero_ligne] / 100), true); if (!empty($_SESSION['session_caddie']->percent_remise_produit[$numero_ligne])) $tmpProd['option_prix_remise'] = fprix($option, true); } if ($with_form_fields && $product_object->on_download == 0) { $tmpProd['quantite'] = array( 'value' => $quantite, ); if (is_stock_advanced_module_active() && $product_object->on_stock == 1) { // On prépare le message à afficher en javascript si la quantité demandée est trop élevée par rapport au stock disponible $message = ''; $display_message = false; $force_update_quantity = false; if ($product_object->allow_add_product_with_no_stock_in_cart() == false) { // Ensuite, doit t'on mettre à jour la quantité dans le champ. Il est possible de mettre plus de produits au panier si la configuration du site le permet. Cette information est fourni par la fonction $product_object->allow_add_product_with_no_stock_in_cart(). // Préparation du message pour les utilisateurs afin de les informer sur les conditions de modification de quantité pour ce produit. if (!empty($product_object->resupplying)) { $force_update_quantity = true; $display_message = true; // La quantité à ajouter est égal au maximum de la quantité commandable $message = $GLOBALS['STR_QUANTITY_INSUFFICIENT'] . "\n"; if ($stock_commandable == 0) { // Aucun produit ajouté au caddie $message .= $GLOBALS['STR_ZERO_PRODUCT_ADD']; // on n'ajoute rien au panier } elseif ($stock_commandable == 1) { // un seul produit ajouté $message .= $stock_commandable . ' ' . $GLOBALS['STR_QUANTITY_PRODUCT_ADD']; } else { // plus de un produit ajoutés au caddie $message .= $stock_commandable . ' ' . $GLOBALS['STR_QUANTITY_PRODUCTS_ADD']; } } } elseif (affiche_etat_stock(get_stock_temp($product_object->id), false, true, $product_object->resupplying, "id") == 1) { // Il faut déjà savoir si il faut afficher un message. La règle est qu'il ne faut pas afficher de message si l'etat de stock du produit n'est pas à l'état 1 $display_message = true; $force_update_quantity = false; // Message spécifique pour les produits non resupplying $message = $GLOBALS['STR_POPUP_QUANTITY_MESSAGE_1'] . ' ' . $stock_commandable . ' ' . $GLOBALS['STR_POPUP_QUANTITY_MESSAGE_2'] . " [QUANTIY] " . $GLOBALS['STR_POPUP_QUANTITY_MESSAGE_3'] . " \r\n" . ' ==> ' . affiche_etat_stock(null, false, true, $product_object->resupplying, "name"); } $tmpProd['quantite']['display_message'] = $display_message; $tmpProd['quantite']['force_update_quantity'] = $force_update_quantity; $tmpProd['quantite']['message'] = $message; $tmpProd['quantite']['stock_commandable'] = $stock_commandable; } } else { $tmpProd['quantite'] = $quantite; } if(is_conditionnement_module_active ()) { if(!empty($product_object->conditionnement)){ $tmpProd['conditionnement_qty'] = intval($quantite) * intval($product_object->conditionnement); }else{ $tmpProd['conditionnement_qty'] = intval($quantite); } $tmpProd['conditionnement'] = (!empty($product_object->conditionnement)?$product_object->conditionnement:'-'); } if($remise_displayed > 0) { $tmpProd['remise'] = fprix($remise_displayed, true); } $tmpProd['total_prix'] = fprix($total_prix_displayed, true); $products[] = $tmpProd; } unset($product_object); } $tpl->assign('products', $products); $tpl->assign('with_totals_summary', $with_totals_summary); $tpl->assign('STR_WITH_PROMO_CODE', $GLOBALS['STR_WITH_PROMO_CODE']); $tpl->assign('STR_ON_CATEGORY', $GLOBALS['STR_ON_CATEGORY']); $tpl->assign('STR_SMALL_ORDER_OVERCOST_TEXT', $GLOBALS['STR_SMALL_ORDER_OVERCOST_TEXT']); $tpl->assign('STR_OFFERED', $GLOBALS['STR_OFFERED']); $tpl->assign('STR_FROM', $GLOBALS['STR_FROM']); $tpl->assign('STR_TTC', $GLOBALS['STR_TTC']); $tpl->assign('STR_TOTAL_HT', $GLOBALS['STR_TOTAL_HT']); $tpl->assign('STR_VAT', $GLOBALS['STR_VAT']); $tpl->assign('STR_NO_VAT_APPLIABLE', $GLOBALS['STR_NO_VAT_APPLIABLE']); $tpl->assign('STR_AVOIR', $GLOBALS['STR_AVOIR']); $tpl->assign('net_txt', $GLOBALS['STR_NET']); $tpl->assign('STR_ORDER_POINT', $GLOBALS['STR_ORDER_POINT']); $tpl->assign('STR_GIFT_POINTS', $GLOBALS['STR_GIFT_POINTS']); $product_object = new Product($id, null, false, null, true, !is_user_tva_intracom_for_no_vat() && !is_micro_entreprise_module_active()); $tpl->assign('affiche_etat_stock', affiche_etat_stock($stock_remain_all, false, true, $product_object->resupplying)); if ($with_totals_summary) { if (is_module_ecotaxe_active() && !empty($_SESSION['session_caddie']->total_ecotaxe_ttc)) { $tpl->assign('total_ecotaxe', fprix($total_ecotaxe_displayed, true)); } // - Si la session client contient une remise > 0 if (!empty($_SESSION['session_caddie']->total_remise)) { $tpl->assign('total_remise', fprix($total_remise_displayed, true)); if (!empty($_SESSION['session_caddie']->percent_code_promo) || !empty($_SESSION['session_caddie']->valeur_code_promo)) { $tpl->assign('code_promo', array( 'value' => $_SESSION['session_caddie']->code_promo, 'total' => (!empty($_SESSION['session_caddie']->percent_code_promo) ? fprix($_SESSION['session_caddie']->total_reduction_percent_code_promo, true) : fprix($_SESSION['session_caddie']->valeur_code_promo, true)), 'cat_name' => (!empty($_SESSION['session_caddie']->cat_code_promo) ? get_category_name($_SESSION['session_caddie']->cat_code_promo) : FALSE) )); } } // Attention : un test !empty ne marche pas sur $GLOBALS['site_parameters']['small_order_overcost_limit'] car au format "0.00" if ($GLOBALS['site_parameters']['small_order_overcost_limit'] != 0 && $_SESSION['session_caddie']->total >= $GLOBALS['site_parameters']['minimal_amount_to_order']) { $tpl->assign('sool', array( 'prix' => fprix($small_order_overcost_displayed, true), 'limit_prix' => fprix($GLOBALS['site_parameters']['small_order_overcost_limit'], true) )); } if ($mode_transport != 0) { $tpl->assign('transport', array( 'prix' => fprix($cout_transport_displayed, true), 'shipping_text' => $shipping_text )); } // if ($_SESSION['session_caddie']->total > 0) { if (!is_micro_entreprise_module_active()) { $tpl->assign('micro', array( 'prix_th' => fprix($_SESSION['session_caddie']->total_ht, true), 'prix_tva' => fprix($_SESSION['session_caddie']->total_tva, true) )); } if (!empty($_SESSION['session_caddie']->avoir)) { $tpl->assign('prix_avoir', fprix($_SESSION['session_caddie']->avoir, true)); } $tpl->assign('prix_total', fprix($_SESSION['session_caddie']->total, true)); $tpl->assign('total_points', $_SESSION['session_caddie']->total_points); } $output = $tpl->fetch(); return $output; } } ?>
    • 0
  9. djespace a ajouté un message dans un sujet  Ajouter L'état De Stock Des Produit Dans Le Caddie.   

    Bonjour,
     
    J'ai rajouté la ligne pour initialiser la classe Product.
    Le message concerné disparaît, par contre j'ai le même avec id maintenant :
     
    Notice: Undefined variable: id in /home/www/ledsboutique/lib/fonctions/display_caddie.php on line 910  
    Comment lui dire justement que $id est l'id du produit ?
     
    Pour le second message d'erreur :
    Je peux vous envoyer le fichier si vous voulez.
    Sinon quelle partie du code dois-je copier et ou exactement ?
    J'ai beau faire dans un sens ou dans l'autre, avec la fonction affiche_critere_stock ou get_product_stock_state, je n'y parviens pas.


    Merci.
     
    • 0
  10. djespace a ajouté un sujet dans PEEL SHOPPING : logiciel open source de boutique en ligne   

    Ajouter L'état De Stock Des Produit Dans Le Caddie.
    Bonjour,

    Je cherche à adapter sur mon peel 7 un développement que j'avais fait faire pour ma version 6.3.1
    Il s'agit d'afficher l'état de stock sur chaque ligne produit dans le panier.

     
    Je suis parvenu à un premier résultat :
    qui consiste à assigner l'affichage de mon état de stock dans display_caddie.php en ajoutant ceci ligne 1826 :
    $tpl->assign('affiche_etat_stock', affiche_etat_stock($stock_remain_all, false, true, $product_object->resupplying)); Ensuite je peux utiliser la variable ($affiche_etat_stock) dans caddie_products_summary_table.tpl, ligne 75
     
    <td scope="row" class="lignecaddie_stock" align="center"> {if isset($affiche_etat_stock)}{$affiche_etat_stock}{/if} </td> J'ai bien l'affichage de mon état de stock sur chacune de mes lignes mais j'obtiens un message d'erreur car la variable "stock_remain_all" n'est pas définie et du coup l'état de stock n'est pas juste (c'est celui définit par défaut) :

    Notice: Undefined variable: stock_remain_all in /home/www/ledsboutique/lib/fonctions/display_caddie.php on line 910 Notice: Undefined variable: product_object in /home/www/ledsboutique/lib/fonctions/display_caddie.php on line 910 Notice: Trying to get property of non-object in /home/www/ledsboutique/lib/fonctions/display_caddie.php on line 910
     
     
     
    D'après ce que  j'ai compris, l'état de stock est calculé à chaque fois en fonction de la quantité encore disponible, et de celle demandée....
    Il faudrait donc renseigner le code de ce calcul dans display_caddie ?

    Je suis bloqué là, si vous pouvez me sortir de là.
    Merci.
    • 6 réponses
    • 2 116 vues
  11. djespace a ajouté un message dans un sujet  Ajouter Informations Et Liens Du Compte Dans Le Header (Peel7)   

    C'est bon trouvé !

    j'utilise finalement la variable {$total.value} qui est déja assignée dans la fonction "affiche_mini_caddie"

    Bon week-end à tous !
    • 0
  12. djespace a ajouté un message dans un sujet  Ajouter Informations Et Liens Du Compte Dans Le Header (Peel7)   

    Re,
    Par contre je cherche à afficher le montant totdal u panier à côté du nombre de produit (dans mini_caddie.tpl)
    J'ai assigné la variable order_amount dans la fonction mini_caddie du fichier display.php comme ceci :
     
    $tpl->assign('order_amount', $order_infos['net_infos_array']['montant']); J'utilise ensuite la variable {$order_amount} dans le fichier .tpl
    Rien ne se passe. Pas de message d'erreur, mais pas de montant affiché non plus.

    Utilise-je la bonne variable ? manque-t-il quelque chose ?

    Merci.
    • 0
  13. djespace a ajouté un message dans un sujet  Ajouter Informations Et Liens Du Compte Dans Le Header (Peel7)   

    Bonjour,

    Merci Simon,
    Une fois de plus, j'ai réussi !
    Finalement je commence a comprendre le fonctionnement de smarty, c'est toujours pareils, on assigne les variables dans le fichier php, après on les utilise comme bon nous semble dans les templates.

    Merci encore. ;)
    • 0
  14. djespace a ajouté un message dans un sujet  Afficher Le Descriptif Court Dans L'affichage Par Catégorie En V7.0   

    Bonjour,

    Dans mon cas, la fonction d'ajout au panier des produits dans les pages catalogue est déja activée (souvenez vous de ma fonction resupplying...)
    le formulaire ne prend en compte que le choix de quantité du bloc critere_stock.tpl, mais pas le nouveau ajouté dans produits.tpl.

    Par ailleurs, (je pense que le problème doit être lié):
    j'ai réussi à afficher l'état de stock (utilisant la variable 'affiche_etat_stock') dans mon fichier produits.tpl.
    Pour cela j'ai du assigner cette variable dans display_product.php, au niveau de ma fonction affiche_produits.
    L'état de stock s'affiche bien mais il n'est pas juste.
    Quel que soit le produit, l'Id de l'état de stock est le même ! (celui par défault probablement).

    J'ai l'impression que l'affiche n'est pas lié au produit...
    Il doit aussi se mettre à jour selon les attributs, couleurs ou tailles (comme dans le cadre normal)

    Idem pour le prix, sauf que je ne parviens même pas à l'afficher (utilisant la variable product_affiche_prix)
     
    En fait il faudrait que tous les élément de la fonction affiche critere stock soit utilisable dans le tpl produits, comme il l'est pour critere_stock.tpl.


    Pouvez vous m'aider, merci.
    • 0
  15. djespace a ajouté un message dans un sujet  Afficher Le Descriptif Court Dans L'affichage Par Catégorie En V7.0   

    Bonjour,
    J'avance doucement.

    J'ai réussi à afficher la cellule du choix de quantité dans produits.tpl
    Mais celui-ci n'est pas pris en compte lors de l'ajout au panier... je ne sais pas comment faire.
    Peut-être vais-je le laisser à droite dans le bloc initial.

    Pour l'affichage de la promotion, comment faire pour formater son affichage (nombre de décimale par exemple ?

    Merci.
    • 0
  16. djespace a ajouté un message dans un sujet  Afficher Le Descriptif Court Dans L'affichage Par Catégorie En V7.0   

    Re,

    Lorsque j'essaie de récupérer la variable du prix pour l'afficher sous le nom du produit (dans mon exemple), je l'utilise dans le fichier produit.tpl mais ça ne fonctionne pas car la variable n'est pas indexée visiblement (message d'erreur)
    J'ai besoin de mélanger les variables en fait, le prix, l'état de stock et la quantité seront sortis du bloc d'ajout au panier pour être affiché avec le nom, le descriptif court... (comme mon illustration)

    Est-ce possible ?
    Comment indexer l'affichage du prix, le choix de quantité, etc.... pour les afficher dans produits.tpl ?
    • 0
  17. djespace a ajouté un message dans un sujet  Afficher Le Descriptif Court Dans L'affichage Par Catégorie En V7.0   

    Hello,

    Merci Simon, l'idée me semble clair.
    J'ai commencer par dupliquer mon .tpl et ajouté le test dans la fonction affiche_critere_stock mais j'ai une page blanche avec un message d'erreur lorsque je tente d'afficher une catégorie.

     
    Fatal error: Uncaught exception 'SmartyException' with message 'Unable to load template file 'critere_stock_in_catalog.tpl'' in /home/www/ledsboutique/lib/templateEngines/smarty/sysplugins/smarty_internal_templatebase.php:128 Stack trace: #0 /home/www/ledsboutique/lib/templateEngines/SmartyTemplate.php(52): Smarty_Internal_TemplateBase->fetch() #1 /home/www/ledsboutique/lib/fonctions/display_product.php(1057): SmartyTemplate->fetch() #2 /home/www/ledsboutique/lib/fonctions/display_product.php(660): affiche_critere_stock('231', 'catalogue_detai...', NULL, true, true) #3 /home/www/ledsboutique/lib/fonctions/display_product.php(413): affiche_produits(8, NULL, 'category', '30', 'line', true, NULL, 4, false) #4 /home/www/ledsboutique/achat/index.php(50): get_products_list_brief_html(8, true) #5 {main} thrown in /home/www/ledsboutique/lib/templateEngines/smarty/sysplugins/smarty_internal_templatebase.php on line 128 On dirait que le test fonctionne, car il cherche bien à charger le nouveau fichier. Seulement il n'y parviens pas.
    J'ai modifié l'id du nouveau fichier (dans ses premières lignes) au cas ou, mais rien en change.


    EDIT: j'ai renommé le fichier et ça fonctionne... j'avais du faire une erreur.
    J'attaque la suite, je reviens vers vous si besoin.
    • 0
  18. djespace a ajouté un message dans un sujet  Afficher Le Descriptif Court Dans L'affichage Par Catégorie En V7.0   

    Bonjour,
    Je rencontre des difficultés à faire ce que je veux:

    Premier point:
    Comment faire pour afficher d'autres informations sur le produit dans les pages catalogue ?
    Je souhaiterai notamment afficher la référence et éventuellement les remises en pourcentage (lorsqu'il y en a sur le produit).
    Puis je récupérer les variable des fiches articles pour les afficher dans les pages catalogue ?

    Second point:
    J'ai aussi besoin d'afficher autrement le prix, le choix de la quantité etc...
    Dans quel fichier trouve-ton le formatage du cadre de la fonction add_to_cart ?
    Et puis-je l'inclure dans la page produits.tpl, histoire de me faire un formatage au poil ?
    autrement dit, mélanger des blocs comme celui du prix au descriptif court, et au titre...

    Pour être plus clair, voila ce que je cherche à obtenir dans mes pages catalogues:


     
     
    Merci.
    • 0
  19. djespace a ajouté un message dans un sujet  Nombre De Colonnes Des Pages Peel V7   

    Résolu, j'avais un float:left qui trainait dans le css.
    La suite au prochain épisode !
    • 0
  20. djespace a ajouté un message dans un sujet  Nombre De Colonnes Des Pages Peel V7   

    Bonjour,

    J'ai un petit soucis avec cette variable.
    Je souhaite un affichage en 1 seule colonne dans mes pages catalogues.
    J'ai donc modifié la variable achat_index_page_columns_count dans le back-office.
    Cela fonctionne parfaitement sous chrome. mais pas sur mozilla ni sous ie. (j'arrive tout de même a avoir une seule catégorie pour laquelle ça marche... pourquoi ?)
    En fait ça supprimé bien la colonne de droite mais la colonne du milieu ne s'étend pas.

    Merci de votre retour.
    • 0
  21. djespace a ajouté un message dans un sujet  Affichage En Ligne Catégorie Racine   

    Merci encore.
    • 0
  22. djespace a ajouté un message dans un sujet  Affichage En Ligne Catégorie Racine   

    Merci Simon (avec quelques mois de retard).

    Ca fonctionne pour ma page http://www.monsite.fr/achat/ ainsi que beaucoup d'autres pages je suppose.
    En revanche ça n'a pas affecté ma page http://www.monsite.fr/achat/promotions.php.

    Comment faire pour y afficher mes produits en ligne également ?

    Merci d'avance.
    • 0
  23. djespace a ajouté un message dans un sujet  Suivi Des Clics (Conversions) Google Adwords   

    Bonsoir,

    Merci m'sieur Simon ! ;)
    • 0
  24. djespace a ajouté un sujet dans PEEL SHOPPING : logiciel open source de boutique en ligne   

    Suivi Des Clics (Conversions) Google Adwords
    Bonjour,

    J'utilise google adwords, ce dernier me permet d'identifier les visiteurs (provenant de mes campagnes publicitaires) qui aboutissent sur une vente.
    Pour se faire, je dois coller un bout de code dans entre les balise <body> et </body> d'une page symbolisant une validation de commande.

    J'ai donc pensé à la page fin_commande.php qui ne s'affiche en effet que lorsqu'une commande est validée.
    Seul problème, il n'y a pas de balise body dans ce fichier. Et je n'ai pas trouvé de fichier smarty associé à cette page.

    Ou puis-je, ou dois-je insérer ce code ?

    merci.
    • 2 réponses
    • 1 635 vues

Twitter Advisto ecommerce

Facebook PEEL Shopping