-
Posts
149 -
Joined
-
Last visited
About magicJu
- Birthday 03/06/1986
Contact Methods
- Website
Profile Information
-
Location
Avignon, France
-
Interests
Magic, Ecommerce, Music
-
Activity
User/Merchant
Recent Profile Visitors
4,657,401 profile views
magicJu's Achievements
-
[PS1.7.2] Form process with loggedin customer
magicJu replied to magicJu's topic in Addons, modules and themes developers
Hello again, It seems that changing the form method from GET to POST solved the issue ! Maybe because the cart url is followed by ?action=show and the GET method deletes it... -
Hi all, I'm facing an issue with a little custom module I'm developping. The aim is to put the gift message and gift wrapping box on the Cart page. I can display the form, the checkbox in a custom hook. Everything is working fine with a visitor, but it doesn't work with a logged in customer. My code : My Module : <?php if (!defined('_PS_VERSION_')) { exit; } class CandyMessageOnCart extends Module { public function __construct() { $this->name = 'candymessageoncart'; $this->tab = 'administration'; $this->version = '1.0.0'; $this->author = 'Julien FOURNIER'; $this->need_instance = 0; $this->ps_versions_compliancy = array('min' => '1.6', 'max' => _PS_VERSION_); $this->bootstrap = true; parent::__construct(); $this->displayName = $this->l('Carte cadeau au panier'); $this->description = $this->l('Ajout du message cadeau au panier'); $this->confirmUninstall = $this->l('Are you sure you want to uninstall?'); /*if (!Configuration::get('candyextendcorews')) $this->warning = $this->l('No name provided');*/ } public function install() { if (Shop::isFeatureActive()) Shop::setContext(Shop::CONTEXT_ALL); if (!parent::install() || !$this->registerHook('displayMessageOnCart') || !$this->registerHook('header') ) return false; return true; } public function uninstall() { if (!parent::uninstall()) return false; return true; } public function hookdisplayMessageOnCart() { Logger::addLog('Candymessage : affichage module', 1); if($this->context->customer->isLogged()) dump($this->context->customer->id); $this->processSaveMessageToCart(); $cart_id = $this->context->cart->id; $cart = new Cart($cart_id); $message_gift = $cart->gift_message; $gift = $cart->gift; //$message_gift = $this->context->cart->gift_message; $this->context->smarty->assign(array('gift_message'=>$message_gift, 'gift'=>$gift)); return $this->context->smarty->fetch('module:candymessageoncart/views/templates/hook/cart.tpl'); } public function processSaveMessageToCart() { Logger::addLog('Candymessage : ProcessMessage', 1); if(Tools::isSubmit('save_msg_candymessage')) { Logger::addLog('Candymessage : Formulaire soumis', 1); if($this->context->customer->isLogged()) dump($this->context->customer->id); $cart_id = $this->context->cart->id; $message = Tools::getValue('gift_message'); $gift = Tools::getValue('gift_option'); $gift_bool = 0; if($gift == 'on') $gift_bool = 1; $cart = new Cart($cart_id); $cart->gift = $gift_bool; $cart->gift_message = $message; $cart->update(); } } TPL file : <div class="message col-xs-12 col-lg-12 col-sm-12"> <h4 style="color: #FF0090;text-transform: uppercase">J'ajoute un joli mot à ma commande :<small> <i style="display: inline" class="fa fa-question-circle" data-toggle="tooltip" data-html="true" title="<strong>Ajoutez un mot d'accompagnement à votre commande.</strong><br /> Souhaitez un joyeux annivesaire, un prompt rétablissement ou félicitez votre famille !" data-placement="left"></i></small></h4> <form method="get" action=""> {*<input type="hidden" name="cart_id" value="{$cart_id}">*} <textarea name="gift_message" style="width: 100%" class="form-control candymessage_message">{$gift_message}</textarea> <input type="checkbox" name="gift_option" {if $gift}checked="checked"{/if}> <label for="gift_option" class="candymessage_label">Je souhaite que mon message soit manuscrit et accompagné d'une brochette de bonbons (+2.90€TTC)</label> <input type="submit" name="save_msg_candymessage" class="btn save_msg fancy-btn fancy-btn-small" value="Enregistrer"> </form> </div> With a visitor, the "Tools::isSubmit" is running. Then, it redirects me to the cart page. With a customer, nothing is saved and it redirects me to the homepage. I can't see what is happening there ! Thanks for your help.
-
Bonsoir, J'essai actuellement de mettre à jour les clients depuis un outil que je développe. J'ai un souci sur l'envoi du XML qui me retourne cette erreur : <?xml version="1.0" encoding="UTF-8"?> <prestashop xmlns:xlink="http://www.w3.org/1999/xlink"> <errors> <error> <code><![CDATA[85]]></code> <message><![CDATA[Validation error: "Property Customer->passwd length (50) must be between 0 and 32"]]></message> </error> </errors> </prestashop> Effectivement, lorsque je récupère le client, j'ai un passwd comme ceci : <passwd><![CDATA[6dcf9270acf07808b9cb754705ba58ff2e51a0fc:131095121]]></passwd> Visiblement, PS veut le password en clair. Le problème est que je ne le connais pas et que je ne veux surtout pas le changer ! Si je fais un unset() de la ligne passwd du XML que je reçois, j'ai ce message : <?xml version="1.0" encoding="UTF-8"?> <prestashop xmlns:xlink="http://www.w3.org/1999/xlink"> <errors> <error> <code><![CDATA[41]]></code> <message><![CDATA[parameter "passwd" required]]></message> </error> </errors> </prestashop> Ma question est donc : y-a-t-il une solution pour éviter d'avoir à fournir le password du client dans le XML que j'envoie à PS ? Je n'ai pas trouvé de documentation à ce sujet. Merci d'avance,
-
Bonjour, Nous avons, sur une boutique besoin de modifier le fonctionnement de l'emballage cadeau et du message. En effet, toutes nos commandes (en fait, plutôt 95%) sont des cadeaux et sont directement livrées à leur heureux destinataire. Nous proposons forcément de mettre un message dans la commande. Nous utilisons l'option emballage cadeau pour proposer un service + : message manuscrit et carte haut de gamme. Le fonctionnement de PS fait que le champs du message n'apparaît que lorsque la checkbox est cochée... Si je force l'affichage du champ texte, le message n'est pas pris en compte. Je suppose donc que cela se passe ici (order-opc.js) : function updateCarrierSelectionAndGift() { var recyclablePackage = 0; var gift = 0; var giftMessage = ''; var idCarrier = 0; if ($('input#recyclable:checked').length) recyclablePackage = 1; if ($('input#gift:checked').length) { gift = 1; giftMessage = encodeURIComponent($('textarea#gift_message').val()); } Ici : // Gift checkbox update $('input#gift').unbind('click').click(function () { if ($('input#gift').is(':checked')) $('p#gift_div').show(); else $('p#gift_div').hide(); updateCarrierSelectionAndGift(); }); if ($('input#gift').is(':checked')) $('p#gift_div').show(); else $('p#gift_div').hide(); Et ici : $('textarea#gift_message').unbind('change').change(function () { updateCarrierSelectionAndGift(); }); J'ai sorti la dernière ligne du premier bloc pour récupérer la valeur en permanence. Et ai commenté les autres. Malheureusement, dès que je change un transporteur (par exemple), le champs se vide et se met à undifined (que la case "emballage cadeau" soit cochée ou non). Merci de votre aide. Bonne journée,
-
Bonjour, J'ai un souci sur le One Page Checkout de PS 1.6.0.9. Voici le problème : J'ai le One page Checkout d'activé (celui de PS) ainsi que 3 transporteurs (Exapaq Classic, Exapaq relais et Chronopost). Lorsque j'arrive au choix du transporteur, celui par défaut est sélectionné. Si je choisi un autre transporteur, la sélection revient au premier. J'ai testé sur un autre thème : le problème n'est pas présent. J'en déduis donc que c'est mon template (complètement custom). Je suppose que j'ai un javasccript qui intervient au milieu, mais je n'arrive pas à l'identifier. Je fais appel à vous si vous avez une idée de ce qu'il faut faire... Merci d'avance, Bien cordialement,
-
Bonsoir, J'ai une problématique depuis quelques jours que je n'arrive pas à résoudre... Même après plusieurs heures de recherche ! J'ai une boutique qui pointe sur mondomaine1.com J'ai une seconde boutique qui pointe sur mondomaine1.com/pro Tout ça fonctionne bien !! Je souhaite ajouter mondomaine2.com sur une nouvelle boutique (catalogue différent, clients différents...) J'ai crée une boutique dans le même groupe que les 2 premières. J'ai défini une URL (www.mondomaine2.com). Lorsque j'accède à www.mondomaine2.com j'ai une page blanche. Ce n'est pas un problème de DNS car je pingue bien le serveur de mondomaine2.com. De même, si je mets la boutique en mode maintenance, j'ai bien la page de maintenance qui s'affiche ! Je penche donc pour un souci de htaccess... Mais mes compétences ne sont pas assez larges pour trouver une piste ! Y-a-t-il quelqu'un qui a eu le même souci ?? Question annexe : dois-je créer un nouveau groupe de boutique pour cette troisième boutique ! Merci d'avance, Bonne soirée,
-
Bonjour, Voilà ce qui ressort : [PrestaShopException] Property LoyaltyModule->date_add is not valid at line 846 in file classes/ObjectModel.php 840. 841. $message = $this->validateField($field, $this->$field); 842. if ($message !== true) 843. { 844. if ($die) 845. throw new PrestaShopException($message); 846. return $error_return ? $message : false; 847. } 848. } 849. 850. return true; ObjectModelCore->validateFields - [line 260 - classes/ObjectModel.php] ObjectModelCore->getFields - [line 605 - classes/ObjectModel.php] ObjectModelCore->update - [line 425 - classes/ObjectModel.php] - [1 Arguments] ObjectModelCore->save - [line 59 - modules/loyalty/LoyaltyModule.php] - [2 Arguments] LoyaltyModule->save - [line 235 - modules/loyalty/LoyaltyModule.php] LoyaltyModule::registerDiscount - [line 150 - modules/loyalty/controllers/front/default.php] - [1 Arguments] LoyaltyDefaultModuleFrontController->processTransformPoints - [line 55 - modules/loyalty/controllers/front/default.php] LoyaltyDefaultModuleFrontController->postProcess - [line 171 - classes/controller/Controller.php] ControllerCore->run - [line 373 - classes/Dispatcher.php] DispatcherCore->dispatch - [line 28 - index.php] Cela provient du fait que j'ai importé à la main les points de fidélité de mes clients (prestashop ne le permettant pas...) en omettant date_add et date_upd. Je viens de passer une requête SQL pour modifier ces 2 champs et ai fait un test. J'ai réussi à transformer les points de fidélité. En revanche, je ne vois pas le coupon de réduction s'afficher en dessous et je n'ai aucun message d'erreur. Bonne journée,
-
Bonsoir, Je rencontre une erreur 500 lorsque j'essaie de transformer des points de fidélité en coupon. C'est sur la page http://www.xxx.com/module/loyalty/default?process=transformpoints Je n'ai pas beaucoup d'informations... Un client m'a signalé le problème. PS 1.6.0.9 Programme fidélité 1.2.6 Merci d'avance pour votre aide ! Julien
-
Bonjour, Non, cela n'a pas résolu le problème, mais j'ai une autre piste ! Voici la fonction qui fait le message : public function generateMessage($values) { $message = "\n".$this->l('Payment Type : ').$values['p']."\n".$this->l('Card Type : ').$values['c']."\n".$this->l('Expiry Date of Card (YY/MM) : ').$values['d']."\n".$this->l('Country code of IP Address of the cardholder : ').$values['i']."\n\n".$this->l('Paybox Transaction ID : ').$values['s']."\n".$this->l('Reference of the Order : ').$values['r']."\n". $this->l('Paybox Call Number : ').$values['t']."\n".$this->l('Authorisation Number : ').$values['a']."\n". $this->l('Subscriber Number : ').$values['b']."\n".$this->l('Transaction processing date on the Paybox platform : ').$values['w']."\n\n".$this->l('Amount of Transaction : ').$values['m']."\n\n". $this->l('Signature of the Fields : ').$values['k']."\n"; return $message; } Il suffirait de retourner : "" !!! Mon site actuel n'est pas sous Prestashop ! On est en cours de migration en fait !!!
-
Visiblement, ça n'intéresse personne ! J'ai quend même trouvé une piste. Dans le fichier Validation.php du module (4.0.5) à la ligne 249 : $order_message = ''; foreach ($values as $key => $value) $order_message .= $key.': '.$value.'<br>'; if (isset($order_message) && !empty($order_message)) { $msg = new Message(); $message = $order_message; if (Validate::isCleanHtml($order_message)) { $msg->message = $order_message; $msg->id_order = (int)$order->id; $msg->private = 1; $msg->add(); } } Donc, en commentant la ligne $msg->add();, ça devrait le faire !