Flux d’activité

Flux d’activité de Messages

  1. ked


    Bonjour,

     

    lorsque j'essaie de passer une commande test sur le site j'obtiens en haut le message d'erreur suivant:

     

    Warning: str_pad() expects parameter 2 to be long, string given in /home/www/dc5b0d89027476cffd8fe341cc6e161b/web/lib/fonctions/order.php on line 65

     

    Quelqu'un a t-il une idée de quoi cela peut venir?

     

    Merci bcp

     

  2. djespace


    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;
    
    	}
    
    }
    
    
    
    ?>
  3. francisp78


    Bonjour à toute l'équipe d'advisto,

    J'ai reçu un message de Paypal dont le sujet est : Action requise avant le 7 octobre 2013.

     

    Une partie du contenu du message est :

     

    "...Les marchands doivent mettre à jour leurs scripts IPN et/ou PDT pour pouvoir utiliser le protocole HTTP 1.1 et inclure l'en-tête HTTP "Host" et "Connection: close” dans le script de retransmission de données IPN..."

     

    Mon site est sous Peel Premium version 6.3.

     

    Y-a-t-il des modifications à effectuer sur le module Paypal, pour qu'il fonctionne correctement à la date du 7 octobre 2013 conformément à la suggestion de mise à jour de Paypal?

     

    Cordialement

     

    Francis P. 

  4. Simon développeur PEEL


    Bonjour,

     

    Vous pouvez envoyer le fichier display_caddie pour résoudre le problème de l'id indéfini.

    Par contre pour le calcul de stock_remain_all, il faut se rapprocher du service commercial pour que l'on traite ce type de sujet. Les problématiques liés aux calculs des stocks n'est jamais simple et nécessite du temps pour être traité correctement.

  5. eXtreme


    De retour pour mon problème de nom des images.

     

    J'ai fait un test avec la version 7.3. Dans lib\fonctions\fonctions.php format_filename_base je le passe en $rename_file à false ça marche.

     

    Par contre dans la version 6.3 dans lib\fonctions\fonctions.php j'ai pas function format_filename_base ?

     

    function upload($the_file, $rename_file = true, $file_kind = null, $image_max_width = null, $image_max_height = null)
    {
    	$error = get_upload_errors_text($the_file, $file_kind); // Teste la validité du téléchargement
    	if (empty($error)) {
    		// Upload OK
    		$extension = pathinfo($the_file['name'], PATHINFO_EXTENSION);
    		if ($rename_file) {
    			$dateheure = strftime("%d%m%y_%H%M%S");
    			$mdp = MDP();
    			$the_new_file_name_without_extension = $dateheure . "_PEEL_" . $mdp;
    		} else {
    			$modified_old_name_without_extension = String::strtolower(String::convert_accents(str_replace(array('%2520', '%20', ';', ',', ' ', '^', '
    

     

    J'ai beau chercher, je trouve pas :mellow:

  6. Simon développeur PEEL


    Bonjour,

     

    Oui, effectivement, il faut que la fonction upload soit paramétré de cette façon

    upload('image', false, 'image_or_pdf', $GLOBALS['site_parameters']['image_max_width'], $GLOBALS['site_parameters']['image_max_height'], null, null, vb($frm['image']));

    pour permettre l'upload de fichier PDF. C'est le cas sur la version 7.0.3 actuellement.

     

    La correction que je donne reste valable pour exploiter le PDF en front office.

  7. djespace


    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.
     

  8. Simon développeur PEEL


    Bonjour,

     

    Il faut modifier le code qui affiche les fichiers pour les articles et rubriques, puisque celui-ci prévoit juste l'affichage d'image. Les corrections à apporter sont :

    Dans le fichier lib/fonctions/display_caddie.php, remplacer 

                if (!empty($article['image1'])){
                    $this_thumb = thumbs($article['image1'], $GLOBALS['site_parameters']['medium_width'], $GLOBALS['site_parameters']['medium_height'], 'fit');
                    $tpl->assign('image_src', $GLOBALS['repertoire_upload'] . '/thumbs/' . $this_thumb);
                }

    par

                if (!empty($article['image1'])) {
                    if (pathinfo($article['image1'], PATHINFO_EXTENSION) == 'pdf') {
                        $this_thumb = thumbs('logoPDF_small.png', $GLOBALS['site_parameters']['medium_width'], $GLOBALS['site_parameters']['medium_height'], 'fit', $GLOBALS['dirroot'] .'/images/');
                    } else {
                        $this_thumb = thumbs($article['image1'], $GLOBALS['site_parameters']['medium_width'], $GLOBALS['site_parameters']['medium_height'], 'fit');
                    }
                    $tpl->assign('main_image', array(
                        'href' => $GLOBALS['repertoire_upload'] . '/' . String::rawurlencode($article['image1']),
                        'src' => $GLOBALS['repertoire_upload'] . '/thumbs/' . $this_thumb,
                        'is_pdf' => !(pathinfo($article['image1'], PATHINFO_EXTENSION) != 'pdf')
                    ));
                }

    dans la fonction get_article_details_html et

     

                if (!empty($rowrub['image'])) {
                    $this_thumb = thumbs($rowrub['image'], $GLOBALS['site_parameters']['medium_width'], $GLOBALS['site_parameters']['medium_height'], 'fit');
                    $tpl->assign('image_src', $GLOBALS['repertoire_upload'] . '/thumbs/' . $this_thumb);
                }

    par

                if (!empty($rowrub['image'])) {
                    if (pathinfo($rowrub['image'], PATHINFO_EXTENSION) == 'pdf') {
                        $this_thumb = thumbs('logoPDF_small.png', $GLOBALS['site_parameters']['medium_width'], $GLOBALS['site_parameters']['medium_height'], 'fit', $GLOBALS['dirroot'] .'/images/');
                    } else {
                        $this_thumb = thumbs($rowrub['image'], $GLOBALS['site_parameters']['medium_width'], $GLOBALS['site_parameters']['medium_height'], 'fit');
                    }
                    $tpl->assign('main_image', array(
                        'href' => $GLOBALS['repertoire_upload'] . '/' . String::rawurlencode($rowrub['image']),
                        'src' => $GLOBALS['repertoire_upload'] . '/thumbs/' . $this_thumb,
                        'is_pdf' => !(pathinfo($rowrub['image'], PATHINFO_EXTENSION) != 'pdf')
                    ));
                }

    dans la fonction get_articles_list_brief_html(). Ensuite, dans le fichier articles_list_brief_html.tpl, remplacer 

     

            {if isset($image_src)}
                <p><img style="margin: 5px;" src="{$image_src|escape:'html'}" alt="{$name}" /></p>
            {/if}

    par

            {if isset($main_image)}
                {if $main_image.is_pdf}
                    <a style="margin: 5px;" href="{$main_image.href|escape:'html'}" onclick="return(window.open(this.href)?false:true);"><img src="{$wwwroot}/images/logoPDF_small.png" alt="{$name}" /></a>
                {else}
                    <p><img style="margin: 5px;" src="{$main_image.href|escape:'html'}" alt="{$name}" /></p>
                {/if}
            {/if}

     

    puis dans le fichier article_details_html.tpl, remplacer 

            {if isset($image_src)}
                <p class="center"><img src="{$image_src|escape:'html'}" alt="{$titre}" /></p>
            {/if}
    

    par 

            {if isset($main_image)}
                {if $main_image.is_pdf}
                    <a style="margin: 5px;" href="{$main_image.href|escape:'html'}" onclick="return(window.open(this.href)?false:true);"><img src="{$wwwroot}/images/logoPDF_small.png" alt="{$titre}" /></a>
                {else}
                    <p><img style="margin: 5px;" src="{$main_image.href|escape:'html'}" alt="{$titre}" /></p>
                {/if}
            {/if}

     

    Ces corrections seront également dans la futur version.

  9. Simon développeur PEEL


    Bonjour,

    Pour l'erreur
    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
    => Il faut initialiser la classe Product au dessus de la ligne concernée : $product_object = new Product($id, null, false, null, true, !is_user_tva_intracom_for_no_vat() && !is_micro_entreprise_module_active());
    $id est l'id du produit.

    Pour l'erreur Notice: Undefined variable: stock_remain_all in /home/www/ledsboutique/lib/fonctions/display_caddie.php on line 910, déboguer sans voir l'ensemble du code est difficile. Je peux vous proposer d'utiliser la fonction get_product_stock_state de la classe Product, ou de reprendre l'intégralité du calcul de cette variable de la fonction affiche_critere_stock dans la page lib\fonctions\display_product.php

  10. J1P


    Bonjour,

     

    Ma version Premium 6.2

     

    Voila je rencontre un probleme et je ne trouve pas la solution, je suis sans doute idiote car c'est sans doute sous mes yeux

     

    J'ai ajoute un nouveau champ dans codes promo, lorsque j'ajoute un code promo j'ai cree un champ qui s'appelle link pour pouvoir afficher un lien personnalise au code promo.

    Jusque la tout va bien, ce lien apparait bien dans la base de donnees et est donc bien enregistre avec le code promo

     

    Le probleme vient lorsque j'envoies un email contenant le code promo a un client, a la place de mon lien il apparait juste [LINK]

     

    Voici mon template email

     

    Hello [CIVILITE] [PRENOM] [NOM_FAMILLE],

    In order to thank you for your order on our online shop, we are offering you this promotional code: [NOM_CODE_PROMO].

    It allows you to benefit from a [REMISE] discount on your next order.

    This promotional code can only be used by you once, and you can use it from now on until the following date [DATE_FIN].

     

    Please visit our special offer at [LINK]

     

    J'oublies certainement quelquechose mais je ne vois

     

    Une idee ?

     

    Merci ANh

  11. kimono


    J'ai une boutique en ligne de produits japonais utilisant un compte Paypal situé au Japon. Je désire donc être réglé en yens, néanmoins ma clientèle se trouvant essentiellement en Europe je veux permettre l'affichage des prix en euros et éventuellement dans d'autres devises.

    Le problème c'est que lorsque le client affiche le tarif en euro le règlement s'effectue aussi en euro, je dois donc ensuite payer les frais de conversion de devise vers le yen, alors que normalement c'est le client qui devrait régler cette conversion.

     

    La plupart des autres logiciels marchand permettent le règlement dans une seule devise, les autres devises ne s'affichant qu'à titre d'information.

    Cette possibilité est-elle prévue par Peel ?

  12. djespace


    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.

  13. Gilles Boussin


    Je mets un autre de vos sujets ici pour ne pas tout éparpiller :

     

    "

    si je choisis la méthode Globale (catégorie et ses sous-catégories) j'ai les produits qui apparaissent sous les catégories mais pas en mode individuel.
     
    comprends pas car cette fonctionnalité ne sert qu'à compter
    

    "

     

    => cette fonctionnalité de la page de configuration de votre site sert pour compter et présenter dans les catégories.

     

    Elle répond à votre première question.

  14. Gilles Boussin


    Dans votre exemple "je souhaite que le client puisse consulter tous les arrosoirs toutes marques confondues." j'imaginais que vous vouliez faire une requête poru les trouver automatiquement.

     

    Si vous voulez utiliser la table de correspondance, très bien, il vous suffit de la remplir soit manuellement, soit avec un script, lancé par vous ou par un cron.

     

    Gilles

  15. paulanna


    Vous pouvez chercher peel_produits_references dans le code, voir où ça sert, et remplacer par le fonctionnement que vous souhaitez sans utiliser cette table.

     

    ok mais il faut bien que je stocke les produits similaires quelques part

     

    en fait je vois pas comment rejoindre les produits similaires de mon arrosoir

     

    est-ce que je dois faire cela manuellement ?

Twitter Advisto ecommerce

Facebook PEEL Shopping