Jump to content

modification du récapitulatif de commande avant paiement et de la page historique de commande


Recommended Posts

Bonjour,

 

je galère, j'essaye de modifier ces deux pages, et je n'y arrive pas.

 

Je voudrais que le prix Unitaire qui s'affiche sur ces deux pages soient celui réellement payé et non le prix remisé et le prix barré.

 

J'ai tenté dans les deux fichiers order_detail.tpl et shopping_cart.tpl mais rien à faire.

J'ai juste réussi à supprimer le prix remisé minimum et pas le reste.... :(

 

Une idée ?

 

Merci

 

 

 

 

Link to comment
Share on other sites

Bonjour,

 

je suis totalement novice et j'avance pas à pas.

J'ai aujourd'hui quasi fini de paramétrer toute ma boutique, utilisant un module Myownreservation, et là je galère sur ces points là, ainsi que sur le contenu de certains mails.

Link to comment
Share on other sites

Prestashop utilise un moteur de template qui s'appel smarty.

Pour faire simple c'est une sorte de boite qui contient toutes les informations que tu veux afficher sur ta page sous forme de variables et tableau, elle s'appel le debugger smarty.

 

Tout d'abord tu dois activer le debugger smarty pour voir le contenu de cette boite, pour faire ca va dans le fichier de configuration de smarty (smarty.config.inch.php), ligne 43 si je me rappele bien, tu remplace 

$smarty->debugging = false;

par

$smarty->debugging = true;

Ensuite dans ton navigateur tu accepte les popup pour accéder a ce debuger.

 

 

Après tu vas dans ta page ou tu veux apporter tes modifications, tu regardes dans le debugger le nom de la variable qui contient le prix que tu veux inserer, et tu la met dans ton fichier tpl a l'endroit souhaité, sous cette forme:

{$nom_de_la_variable}

si cette variable existe dans un tableau tu ecris comme ca

{$nomTableau->nom_de_la_variable}
Link to comment
Share on other sites

je n'ai pas cette ligne dans le fichier smarty.config.inch.php

 

Voila ce que j'ai : <?php

/*
* 2007-2015 PrestaShop
*
* NOTICE OF LICENSE
*
* This source file is subject to the Open Software License (OSL 3.0)
* that is bundled with this package in the file LICENSE.txt.
* It is also available through the world-wide-web at this URL:
* If you did not receive a copy of the license and are unable to
* obtain it through the world-wide-web, please send an email
* to [email protected] so we can send you a copy immediately.
*
* DISCLAIMER
*
* Do not edit or add to this file if you wish to upgrade PrestaShop to newer
* versions in the future. If you wish to customize PrestaShop for your
* needs please refer to http://www.prestashop.com for more information.
*
*  @author PrestaShop SA <[email protected]>
*  @copyright  2007-2015 PrestaShop SA
*  @license    http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
*  International Registered Trademark & Property of PrestaShop SA
*/
 
define('_PS_SMARTY_DIR_', _PS_TOOL_DIR_.'smarty/');
 
require_once(_PS_SMARTY_DIR_.'Smarty.class.php');
 
global $smarty;
$smarty = new Smarty();
$smarty->setCompileDir(_PS_CACHE_DIR_.'smarty/compile');
$smarty->setCacheDir(_PS_CACHE_DIR_.'smarty/cache');
if (!Tools::getSafeModeStatus())
$smarty->use_sub_dirs = true;
$smarty->setConfigDir(_PS_SMARTY_DIR_.'configs');
$smarty->caching = false;
if (Configuration::get('PS_SMARTY_CACHING_TYPE') == 'mysql')
{
include(_PS_CLASS_DIR_.'/SmartyCacheResourceMysql.php');
$smarty->caching_type = 'mysql';
}
$smarty->force_compile = (Configuration::get('PS_SMARTY_FORCE_COMPILE') == _PS_SMARTY_FORCE_COMPILE_) ? true : false;
$smarty->compile_check = (Configuration::get('PS_SMARTY_FORCE_COMPILE') >= _PS_SMARTY_CHECK_COMPILE_) ? true : false;
$smarty->debug_tpl = _PS_ALL_THEMES_DIR_.'debug.tpl';
 
/* Use this constant if you want to load smarty without all PrestaShop functions */
if (defined('_PS_SMARTY_FAST_LOAD_') && _PS_SMARTY_FAST_LOAD_)
return;
 
if (defined('_PS_ADMIN_DIR_'))
require_once (dirname(__FILE__).'/smartyadmin.config.inc.php');
else
require_once (dirname(__FILE__).'/smartyfront.config.inc.php');
 
smartyRegisterFunction($smarty, 'modifier', 'truncate', 'smarty_modifier_truncate');
smartyRegisterFunction($smarty, 'modifier', 'secureReferrer', array('Tools', 'secureReferrer'));
 
smartyRegisterFunction($smarty, 'function', 't', 'smartyTruncate'); // unused
smartyRegisterFunction($smarty, 'function', 'm', 'smartyMaxWords'); // unused
smartyRegisterFunction($smarty, 'function', 'p', 'smartyShowObject'); // Debug only
smartyRegisterFunction($smarty, 'function', 'd', 'smartyDieObject'); // Debug only
smartyRegisterFunction($smarty, 'function', 'l', 'smartyTranslate', false);
smartyRegisterFunction($smarty, 'function', 'hook', 'smartyHook');
smartyRegisterFunction($smarty, 'function', 'toolsConvertPrice', 'toolsConvertPrice');
smartyRegisterFunction($smarty, 'modifier', 'json_encode', array('Tools', 'jsonEncode'));
smartyRegisterFunction($smarty, 'modifier', 'json_decode', array('Tools', 'jsonDecode'));
smartyRegisterFunction($smarty, 'function', 'dateFormat', array('Tools', 'dateFormat'));
smartyRegisterFunction($smarty, 'function', 'convertPrice', array('Product', 'convertPrice'));
smartyRegisterFunction($smarty, 'function', 'convertPriceWithCurrency', array('Product', 'convertPriceWithCurrency'));
smartyRegisterFunction($smarty, 'function', 'displayWtPrice', array('Product', 'displayWtPrice'));
smartyRegisterFunction($smarty, 'function', 'displayWtPriceWithCurrency', array('Product', 'displayWtPriceWithCurrency'));
smartyRegisterFunction($smarty, 'function', 'displayPrice', array('Tools', 'displayPriceSmarty'));
smartyRegisterFunction($smarty, 'modifier', 'convertAndFormatPrice', array('Product', 'convertAndFormatPrice')); // used twice
smartyRegisterFunction($smarty, 'function', 'getAdminToken', array('Tools', 'getAdminTokenLiteSmarty'));
smartyRegisterFunction($smarty, 'function', 'displayAddressDetail', array('AddressFormat', 'generateAddressSmarty'));
smartyRegisterFunction($smarty, 'function', 'getWidthSize', array('Image', 'getWidth'));
smartyRegisterFunction($smarty, 'function', 'getHeightSize', array('Image', 'getHeight'));
smartyRegisterFunction($smarty, 'function', 'addJsDef', array('Media', 'addJsDef'));
smartyRegisterFunction($smarty, 'block', 'addJsDefL', array('Media', 'addJsDefL'));
smartyRegisterFunction($smarty, 'modifier', 'boolval', array('Tools', 'boolval'));
 
function smartyDieObject($params, &$smarty)
{
return Tools::D($params['var']);
}
 
function smartyShowObject($params, &$smarty)
{
return Tools::P($params['var']);
}
 
function smartyMaxWords($params, &$smarty)
{
Tools::displayAsDeprecated();
$params['s'] = str_replace('...', ' ...', html_entity_decode($params['s'], ENT_QUOTES, 'UTF-8'));
$words = explode(' ', $params['s']);
 
foreach($words AS &$word)
if(Tools::strlen($word) > $params['n'])
$word = Tools::substr(trim(chunk_split($word, $params['n']-1, '- ')), 0, -1);
 
return implode(' ',  Tools::htmlentitiesUTF8($words));
}
 
function smartyTruncate($params, &$smarty)
{
Tools::displayAsDeprecated();
$text = isset($params['strip']) ? strip_tags($params['text']) : $params['text'];
$length = $params['length'];
$sep = isset($params['sep']) ? $params['sep'] : '...';
 
if (Tools::strlen($text) > $length + Tools::strlen($sep))
$text = Tools::substr($text, 0, $length).$sep;
 
return (isset($params['encode']) ? Tools::htmlentitiesUTF8($text, ENT_NOQUOTES) : $text);
}
 
function smarty_modifier_truncate($string, $length = 80, $etc = '...', $break_words = false, $middle = false, $charset = 'UTF-8')
{
if (!$length)
return '';
 
$string = trim($string);
 
if (Tools::strlen($string) > $length)
{
$length -= min($length, Tools::strlen($etc));
if (!$break_words && !$middle)
$string = preg_replace('/\s+?(\S+)?$/u', '', Tools::substr($string, 0, $length+1, $charset));
return !$middle ? Tools::substr($string, 0, $length, $charset).$etc : Tools::substr($string, 0, $length/2, $charset).$etc.Tools::substr($string, -$length/2, $length, $charset);
}
else
return $string;
}
 
function smarty_modifier_htmlentitiesUTF8($string)
{
return Tools::htmlentitiesUTF8($string);
}
function smartyMinifyHTML($tpl_output, &$smarty)
{
if (in_array(Context::getContext()->controller->php_self, array('pdf-invoice', 'pdf-order-return', 'pdf-order-slip')))
return $tpl_output;
    $tpl_output = Media::minifyHTML($tpl_output);
    return $tpl_output;
}
 
function smartyPackJSinHTML($tpl_output, &$smarty)
{
if (in_array(Context::getContext()->controller->php_self, array('pdf-invoice', 'pdf-order-return', 'pdf-order-slip')))
return $tpl_output;
    $tpl_output = Media::packJSinHTML($tpl_output);
    return $tpl_output;
}
 
function smartyRegisterFunction($smarty, $type, $function, $params, $lazy = true)
{
if (!in_array($type, array('function', 'modifier', 'block')))
return false;
 
// lazy is better if the function is not called on every page
if ($lazy)
{
$lazy_register = SmartyLazyRegister::getInstance();
$lazy_register->register($params);
 
if (is_array($params))
$params = $params[1];
 
// SmartyLazyRegister allows to only load external class when they are needed
$smarty->registerPlugin($type, $function, array($lazy_register, $params));
}
else
$smarty->registerPlugin($type, $function, $params);
}
 
function smartyHook($params, &$smarty)
{
if (!empty($params['h']))
{
$id_module = null;
$hook_params = $params;
$hook_params['smarty'] = $smarty;
if (!empty($params['mod']))
{
$module = Module::getInstanceByName($params['mod']);
if ($module && $module->id)
$id_module = $module->id;
unset($hook_params['mod']);
}
unset($hook_params['h']);
return Hook::exec($params['h'], $hook_params, $id_module);
}
}
 
function toolsConvertPrice($params, &$smarty)
{
return Tools::convertPrice($params['price'], Context::getContext()->currency);
}
 
/**
 * Used to delay loading of external classes with smarty->register_plugin
 */
class SmartyLazyRegister
{
protected $registry = array();
protected static $instance;
 
/**
* Register a function or method to be dynamically called later
* @param string|array $params function name or array(object name, method name)
*/
public function register($params)
{
if (is_array($params))
$this->registry[$params[1]] = $params;
else
$this->registry[$params] = $params;
}
 
/**
* Dynamically call static function or method
*
* @param string $name function name
* @param mixed $arguments function argument
* @return mixed function return
*/
public function __call($name, $arguments)
{
$item = $this->registry[$name];
 
// case 1: call to static method - case 2 : call to static function
if (is_array($item[1]))
return call_user_func_array($item[1].'::'.$item[0], array($arguments[0], &$arguments[1]));
else
{
$args = array();
 
foreach($arguments as $a => $argument)
if($a == 0)
$args[] = $arguments[0]; 
else
$args[] = &$arguments[$a]; 
 
return call_user_func_array($item, $args);
}
}
 
public static function getInstance()
{
if (!self::$instance)
self::$instance = new SmartyLazyRegister();
return self::$instance;
}
}
Link to comment
Share on other sites

c'est simple, chaque fois que tu ouvre une page, le contenu du debugger change, donc tu va tout simplement naviguer jusqu'a atteindre ta page (fermer le debugger et recharge cette page pour etre sur), tu aura les tableau et variable conrrespondant a cette page.

Link to comment
Share on other sites

Non tu ne touches rien au debugger, la modification tu dois la faire dans le fichier tpl correspondant order_detail.tpl et shopping_cart.tpl dans ton cas. tu supprime ce que tu ne veux pas et tu ajoute la variable qui est presente dans le debugger si tu l'a bien trouvé.

Link to comment
Share on other sites

si ces données existent bien dans le debugger, alors tu as tout, il ne te reste plus qu'a les mettre dans le fichier tpl à l'endroit souhaité de cette manière {nomVariable}.

Si tu trouve ça un peu compliqué, fait moi un print screen du debugger, exactement a la variable que tu souhaite inserer et je te dis quoi mettre dans ton tpl.

Link to comment
Share on other sites

en fait je voudrais remplacer les données présentent à cet endroit qui sont le prix le plus bas de l'année

 

 

 

par le prix réel acheté par le client que je retrouve dans le mail de confirmation de commande que le client reçois

je crois que c'est : unit_price_tax_inc dans la base de donnée

post-939463-0-74629400-1425914613_thumb.png

Link to comment
Share on other sites

ok, remet le fichier smartyadmin.config.inc.php ligne 28 comme il etait avant et essaie d'ajouter ce code au tout debut des deux fichier order_detail.tpl et shopping_cart.tpl

 {debug} 

et regarde est ce que la popup s'ouvre quand tu es sur l'une des deux pages

Link to comment
Share on other sites

voilà comemnt je l'ai inséré :

 

 
 
<!DOCTYPE HTML>
<!--[if lt IE 7]> <html class="no-js lt-ie9 lt-ie8 lt-ie7" lang="{$language_code|escape:'html':'UTF-8'}"><![endif]-->
<!--[if IE 7]><html class="no-js lt-ie9 lt-ie8 ie7" lang="{$language_code|escape:'html':'UTF-8'}"><![endif]-->
<!--[if IE 8]><html class="no-js lt-ie9 ie8" lang="{$language_code|escape:'html':'UTF-8'}"><![endif]-->
<!--[if gt IE 8]> <html class="no-js ie9" lang="{$language_code|escape:'html':'UTF-8'}"><![endif]-->
<html lang="{$language_code|escape:'html':'UTF-8'}">
<head>
    {debug}
<meta charset="utf-8" />
<title>{$meta_title|escape:'html':'UTF-8'}</title>
{if isset($meta_description) AND $meta_description}
<meta name="description" content="{$meta_description|escape:'html':'UTF-8'}" />
{/if}
{if isset($meta_keywords) AND $meta_keywords}
<meta name="keywords" content="{$meta_keywords|escape:'html':'UTF-8'}" />
{/if}
<meta name="generator" content="PrestaShop" /
Link to comment
Share on other sites

c'est un peu bizzard parceque normalement il doit afficher le debugger, je vais essayer ce soir d'installer prestashop 1.6 en local et je vais verifier cette histoire de debugger, parceque ca fait un petit moment que je n'ai pas bosser sur cette version, je vais te signaler ici même comment je l'ai activé.

Link to comment
Share on other sites

ok en regardant sur le web j'ai trouvé un article qui disait de passer par firebug pour avoir les infos.

 

Tu en penses quoi ?

 

je l'ai télécharger mais c'est la meme chose que ce que je t'ai envoyé en copie d'écran

Link to comment
Share on other sites

Rebonsoir,

 

Je viens d'installer le 1.6 en local, et le debugger marche très bien, il suffit juste d'ajouter {debug} au tout debut du fichier shopping-cart.tpl. une fois le panier consulté (avec firefox) tu as le message comme quoi le navigateur a bloqué une fenetre popup, si tu l'autorise tu verra le debugger. ré-essaie a nouveau

Link to comment
Share on other sites

oui tu cherche dans le debugger la variable que tu veux inserer, et la met a la place de celle que tu veux retirer de cette manière {nomVariable}, inspire toi de comment sont ecrite les autre variable c'est très simple

Link to comment
Share on other sites

Ca y est j'ai trouvé,

 

Par contre, je ne trouve pas la donnée qui va la remplacer.

 

Je viens d'envoyé un mail au type qui a developper le module complémentaire car elle se trouve dans ce module.

Je vais aller chercher  mais c'est compliqué à première vue.

 

Pour te la faire simple :

J'ai en plus de prestashop un module appelé Myownréservation qui me permet de faire de la vente à la nuit ou à la semaine, avec des prix différent chaque jours.

 

A chaque commande, le prix change en fonction de plein de données.

Sur la base du produit, j'intègre le prix normal ainsi que la remise maxi qui sera appliqué sur le produit.

 

Et le module prend le dessus sur le prix quand il sagit de l'affichage  et de la commande.

 

voilà en deux mots....

Link to comment
Share on other sites

si tu veux l'utiliser, il faut qu'elle soit transmise dans le debugger. et si elle n'existe pas dans le debugger il faut mettre la main dans le code php et l'envoyer.

 

Si le developpeur du module est aimable il pourra te faire ça, parceque si la variable existe deja, il en aura pour 1min pour l'assigner dans smarty. ensuite tu pourra l'utiliser 

Link to comment
Share on other sites

oui en fait je ne la trouve pas, c'est ce qui m'inquiète.

je n'est que les totaux et pas les détails du panier

bon je vais voir avec le ceux qui ont développés le module, car c'est un problème qui ne devrait pas y avoir....mais ils sont plutôt cool je pense.

je te tiendrais au courant,

 

et merci pour ton aide, j'ai finalement appris des choses aujourd'hui, cool.

 

j'espère ouvrir le site pour debut avril, je te ferais signe, si tu veux voyager pas cher, ce devrait être le bon plan... :)

Link to comment
Share on other sites

Merci pour ton offre, et bonne chance pour ton site. tiens moi au courant ici si tu bloque quelque parts je jette un coup d'oeil souvent ici dans le forum.

 

et sache toujours que pour prestashop toutes les information que tu souhaites afficher passent par ce debugger, n'oublie pas de le desactiver parceque les gens aussi peuvent le regarder quand il est actif. 

Link to comment
Share on other sites

Bonjour,

 

Je me permet de revenir vers toi, car je suis toujours en galère avec mes données sur mes recap.

 

En fait, les gens du module m'ont donnés les variables, et j'essaye de les remplacer mais en vain.

 

Avec le debugger, je trouve la variable à remplacer, mais quand je la recherche dans le code source dans detail.tpl ou shopping.tpl, il n'y a rien de ce nom là.

 

Je suis un peu perdu... :)

 

J'ai fait en local un recherche dans le code source general du site, et il m'a trouvé une espèce de page smarty qui m'a l'aire d'être temporaire.

Crois tu que ce soit là qu'il faut que j'opère mes modifications ?

 

Bien à toi,

 

Cédric

Link to comment
Share on other sites

Oui il y sont mais.... voilà mon problème concret :

 

Quand un client choisi plusieurs produits, voici le recap en ligne avant paiement

Ne pas oublier que les prix sont par jours ou par séjours et donc sur une seule commande le meme produits peux avoir plusieurs prix unitaire .

 

tu trouvera dans ce message 

 

En ligne recap avant paiement 

post-939463-0-92404100-1426090521_thumb.png

Le recap après paiement dont les quantités s'additionnent par établissement (bizarre)

post-939463-0-00709700-1426090675_thumb.png

Le recap hisotirque de la commande sur le compte client

post-939463-0-54888100-1426090704_thumb.png

et le mail de confirmation lui est bon

 

et il faut que je mette de l'ordre dans tout ca :)

IGLOBER Confirmation de commande.pdf

Link to comment
Share on other sites

d'accord, donc maintenant il suffit juste que tu ecrive dans ton fichier tpl (là ou tu veux) la variable dont tu dispose deja dans le debugger de cette manière {nomdevariable} et ca devrait marcher. inspire toi de la manière dont sont ecrite les autre variable tu devrait avoir plain de variable ecrite comme ca {xxxxxxxx}

Link to comment
Share on other sites

C'est justement le problème

 

J'ai cherché l'emplacement dans le tpl et je ne le trouve pas.

 

et je viens de m'apercevoir que dans le recap en ligne, tous les produits s'additionne.

 

Je me demande si je vais pas faire un RAZ et repartir à zero car c'est vraiment le bordel.....:)

Link to comment
Share on other sites

pas la peine de tout commencer, d'abord essaie de localiser le bon fichier tpl, oublie la variable pour l'instant, et essaie de mettre un simple texte quelque part ensuite regarde si ce texte s'affiche bien.

 

Après essaie de localiser les valeurs que tu veux supprimer en ajoutant toujours le meme texte a coté de ces variable, une fois que tu as localiser le bon fichier tpl et le bon endoit dis le moi

Edited by Molmi GK (see edit history)
Link to comment
Share on other sites

On va prendre comme example le fichier tpl du panier, après pour les autre c'est un peu le meme principe :

 

Donc tu vas dans :  /themes/NomDuThemeUtilisé/shopping-cart.tpl

 

Ensuite ajoute du text quelque part, et dans ton site quand tu vas dans le panier tu devrais le voir apparaître ce texte

Link to comment
Share on other sites

je viens de changer déjà de retirer la variable qui n'étais pas bonne.

Cela ne sert à rien que je la remplace car comme le prix dépend des dates et que le recap se fait par groupe de produit, il me faudrait une ligne par produit comme dans la confirmation par mail du client

Link to comment
Share on other sites

Tu peux manipuler un fichier comme tu veux, si tu as retirer l'ancien prix et qu'il a bien disparu c'est que tu es dans le bon fichier maintenant il faut juste mettre le nouveau prix a sa place. avant de mettre ce prix, essaie de mettre un simple text a la place du prix que tu as viré met paxemple AAAA à la place de ce prix que tu as viré et regarde est ce que ce AAAA s'affiche bien dans le panier pour etre sur

Link to comment
Share on other sites

'ai réussi à faire disparaitre le prix.

Par contre, sais tu comment je peux empêcher qu'il ne fasse l'addition des produits le 5 et le 8 dans ce recap.

Le 5 est normal mais le 8 reprend toutes les colonnes.

 

post-939463-0-02070900-1426095732_thumb.png

Il doit manquer quelques choses au code et j'ai ca :

</label>

</td>
<td class="return_quantity">
<input class="order_qte_input form-control grey" name="order_qte_input[{$product.id_order_detail|intval}]" type="text" size="2" value="{$productQuantity|intval}" />
<div class="clearfix return_quantity_buttons">
<a href="#" class="return_quantity_down btn btn-default button-minus"><span><i class="icon-minus"></i></span></a>
<a href="#" class="return_quantity_up btn btn-default button-plus"><span><i class="icon-plus"></i></span></a>
</div>
<label for="cb_{$product.id_order_detail|intval}"><span class="order_qte_span editable">{$productQuantity|intval}</span></label></td>
{if $order->hasProductReturned()}
<td>
{$product['qty_returned']}
</td>
{/if}
<td class="price">
<label for="cb_{$product.id_order_detail|intval}">
{if $group_use_tax}
{convertPriceWithCurrency price=$product.unit_price_tax_incl currency=$currency}
{else}
{convertPriceWithCurrency price=$product.unit_price_tax_excl currency=$currency}
{/if}
Link to comment
Share on other sites

Est ce qu'il y a une adresse ou on peut consulter ton site, peut tu passer le fichier shopping-cart.tpl en entier. parceque avec une image et un bou de code c'est pas facile.

 

Je dirait que la somme dans ton fichier c'est : {$productQuantity|intval}, essaie de le supprimer et regarde ce que ça donne. 

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...