Jump to content

totoche33

Members
  • Posts

    50
  • Joined

  • Last visited

Everything posted by totoche33

  1. As tu regardé dans outils de developpement chrome ou autre selon ton nav, si tu as pas une erreur JS qui pourrait bloqué la suite de la fonction, soit l'ouverture de détails ?
  2. hardcpp regarde un peu plus haut Au départ j'été partit sur un bouton, dans les details de commande plutôt que dans le tableau récapitulatif. Ca fonctionne également, c'est juste un overide d'une autre classe qu'il faut Tu as un tuto en anglais sur ce site : ICI
  3. Pour moi ca fonctionne une fois que je clique sur OK j'ai bien l"état qui passe à livré et reste chargé lors du reload de la page Verifie dans le JS si les ID du champs corresponde bien à ceux qui sont forcé en JS lors du sucess Okom, ton module à l'air bien sympa, tiens nous au courant
  4. Voila le code pour ajouter le bouton dans l'historique de commande directement sans ouvrir le details de la commande, avec un champs ou l'utilisateur peut saisir la date de la réception (date comprise entre J+1 après la facturation et la date du jour) Le code est surement optimisable, j'ai fait ca vite mais ca marche nikel sur Presta 1.6 Donc pour commencer sur ta view History.tpl place ce code ou tu souhaite que ton bouton s'affiche {if $order.id_order_state == 4 || $order.id_order_state == 3} <input type="hidden" value="{$order.invoice_date}" class="datefacturation"> <div id="markAsReceivedhistoryBtn-{$order.id_order|intval}"> <form action="{$link->getPageLink('history', true)|escape:'html'}" method="post" class="std" id="markAsReceivedhistory" name="{$order.id_order|intval}"> <input type="hidden" class="hidden" value="{$order.id_order|intval}" name="id_order" id='monidorder-{$order.id_order|intval}'/> <br> <table> <tr> <td>{l s='I have received this order the :'} <input type="text" id="datereceptionorder" name="datereceptionorder" value="" style="width: 90px;"></td> <td><input type="submit" class="btn btn-default button-default" name="markAsReceivedhistory" value="OK"></td> </tr> </table> <p class="clear"></p> </form> </div> {/if} Ne pas oublier dans l'outils de traduction du front office pour modifier la traduction de : I have received this order the : Ensuite sans History.js tu ajoute à la fin du fichier : function markAsReceivedhistory(id) { paramString = "ajax=true"; $('#markAsReceivedhistory').find('input').each(function(){ if($(this).attr('type') == "text"){ var date = $(this).val().split("/"); paramString += '&' + 'annee=' + date[2]; paramString += '&' + 'mois=' + date[1]; paramString += '&' + 'jour=' + date[0]; }else{ paramString += '&' + $(this).attr('name') + '=' + encodeURIComponent($(this).val()); } }); $.ajax({ type: "POST", headers: { "cache-control": "no-cache" }, url: $('#markAsReceivedhistory').attr("action") + '?rand=' + new Date().getTime(), data: paramString, success: function (msg){ //$('#block-order-detail').fadeOut('slow', function() { $('#markAsReceivedhistoryBtn-'+id).hide(); // $(this).fadeIn('slow'); $("#etatorder-"+id).removeClass('label-warning'); $("#etatorder-"+id).addClass('label-success'); $("#etatorder-"+id).html('Livré'); //}); } }); return false; } function madateDiff(date1, date2){ var diff = {} // Initialisation du retour var tmp = date2 - date1; tmp = Math.floor(tmp/1000); // Nombre de secondes entre les 2 dates diff.sec = tmp % 60; // Extraction du nombre de secondes tmp = Math.floor((tmp-diff.sec)/60); // Nombre de minutes (partie entière) diff.min = tmp % 60; // Extraction du nombre de minutes tmp = Math.floor((tmp-diff.min)/60); // Nombre d'heures (entières) diff.hour = tmp % 24; // Extraction du nombre d'heures tmp = Math.floor((tmp-diff.hour)/24); // Nombre de jours restants diff.day = tmp; return diff; } $(function() { $('form#markAsReceivedhistory').submit(function(){ monid = $("#monidorder-"+$(this).attr("name")).val(); return markAsReceivedhistory(monid); }); var now = new Date(); var annee = now.getFullYear(); var mois = ('0'+now.getMonth()+1).slice(-2); var jour = ('0'+now.getDate() ).slice(-2); date1 = new Date($(".datefacturation").val()); date2 = new Date(annee+'-'+mois+"-"+jour+" 00:00:00"); var diff = madateDiff(date1, date2); $( "#datereceptionorder" ).val(jour+'/'+mois+"/"+annee) $( "#datereceptionorder" ).datepicker({ minDate: -diff.day, maxDate: "+0D" }); }); Et pour finir il faut créer un Overide de HistoryController.php tu crée donc un fichier dans overide/controller/front et tu l'appel HistoruController.php Si tu as rien dedans tu y colle le code suivant : <?php class HistoryController extends HistoryControllerCore { public function postProcess() { //parent::postProcess(); if (Tools::isSubmit('markAsReceivedhistory')) { $idOrder = (int)(Tools::getValue('id_order')); $jour = (int)(Tools::getValue('jour')); $mois = (int)(Tools::getValue('mois')); $annee = (int)(Tools::getValue('annee')); $order = new Order($idOrder); $madate = $annee."-".$mois."-".$jour; if(Validate::isLoadedObject($order)) { if($order->getCurrentState() == 4 || $order->getCurrentState() == 3) // if the order is shipped { $new_history = new OrderHistory(); $new_history->id_order = (int)$order->id; $new_history->date_add = $madate; $new_history->changeIdOrderState(5, $order); // 5: delivered $new_history->addWithemail(false); } } else $this->_errors[] = Tools::displayError('Error: Invalid order number'); } } public function setMedia() { parent::setMedia(); $this->addJqueryUI('ui.datepicker'); } } Tu n'as plus qu'à mettre en ligne ces 3 fichiers, vider tes cache (navigateur, serveur, et class_index.php) Ca fonctionne sur une 1.6, il y aura peut être quelque adaptation à faire pour la 1.5 à voir De plus au niveau de l'overide possibilité de modifier : $order->getCurrentState() == 4 || $order->getCurrentState() == 3 afin de rajouter des statut possible ainsi que dans history.tpl pour ajouter des statut on change le if $order.id_order_state == 4 || $order.id_order_state == 3
  5. Bon le calendrier est en place, j'ai juste un probleme lors du passage de la date du JS vers le PHP pour l'enregistrement en BDD Je regarde ca et t'envois les code
  6. Je viens de regarder, et faire toute les modifs pour prestashop 1.6 pour le bouton dans le la liste des historique de commande. J'essai de mettre en place le calendrier et je te post les modifications
  7. Oui en effet cela serait pas mal, cependant pas trop le temps en ce moment pour ma part LORDBDP : Désolé j'ai été très occupé c'est dernière semaine pas eu le temps de me connecté, je regarde si je trouve une idée...
  8. L'erreur vient du IF on dirait d'après le Log qu'il ne connait pas le IF ou du moins il le prend comme une fonction Essai de remplacer : {if($order.id_order_state == 4 || $order.id_order_state == 14 || $order.id_order_state == 15 || $order.id_order_state == 16 || $order.id_order_state == 21 || $order.id_order_state == 23)} par {if $order.id_order_state == 4 || $order.id_order_state == 14 || $order.id_order_state == 15 || $order.id_order_state == 16 || $order.id_order_state == 21 || $order.id_order_state == 23}
  9. D'après les logs ton erreur vient de la ligne 62 du histpry.tpl c'est la variable $order_history.0.id_order_state qui ne doit pas être implémentée dans le controller, il faut que tu regarde comment sont retourné les id controller dans history. dans la 1.6 => il faut juste utiliser $order.id_order_state et non $order_history.0.id_order_state donc dans ton history.tpl remplace : {if($order_history.0.id_order_state == 4 || $order_history.0.id_order_state == 14 || $order_history.0.id_order_state == 15 || $order_history.0.id_order_state == 16 || $order_history.0.id_order_state == 21 || $order_history.0.id_order_state == 23)} par {if($order.id_order_state == 4 || $order.id_order_state == 14 || $order.id_order_state == 15 || $order.id_order_state == 16 || $order.id_order_state == 21 || $order.id_order_state == 23)}
  10. Il faut mettre le code du traitement du bouton dans un overide du HistoryController class OrderDetailController extends OrderDetailControllerCore { public function postProcess() { parent::postProcess(); if (Tools::isSubmit('markAsReceived')) { $idOrder = (int)(Tools::getValue('id_order')); $order = new Order($idOrder); if(Validate::isLoadedObject($order)) { if($order->getCurrentState() = 4) // if the order is shipped { $new_history = new OrderHistory(); $new_history->id_order = (int)$order->id; $new_history->changeIdOrderState(5, $order); // 5: delivered $new_history->addWithemail(true); } $this->context->smarty->assign('receipt_confirmation', true); } else $this->_errors[] = Tools::displayError('Error: Invalid order number'); } } } en modifiant : class OrderDetailController extends OrderDetailControllerCore par class HistoryController extends HistoryControllerCore Normalement avec cette modif ton bouton devrait fonctionner Pour ton calendrier il va falloir passer par du JS qui affichera un calendrier lors du clic sur bouton et ta procédure d'enregistrement du changement de statut ce fera lorsque tu clic sur le jour du calendrier (en passant en paramètre la date sélectionnée)
  11. Non il faut que que fasse des OR dans ton if if($order->getCurrentState() == 4 || $order->getCurrentState() == 5 || .....) A tu ajouter le traitement du bouton dans le controller correspondant ? Si oui = > Problème de cache il faut que tu vide le cache serveur (Dans prestashop => Parametre Avancé > Performance > Vider le cache Et via ton FTP tu va dans cache (répertoire à la racine) et supprime le class_index.php
  12. Est ce que tu utilise tout c'est ID pour shipped (de base il y en as 1 seul) si non : Remplace le 4 dans {if $order_history.0.id_order_state == 4} par l'id que tu utilise sur ta boutique si tous sont important dans ton fonctionnement, il faut que tu les rajoute dans ta condition d'affichage du bouton exemple : {if $order_history.0.id_order_state == 4 || $order_history.0.id_order_state == XX || $order_history.0.id_order_state == XX || ..... } Il faudra également faire la modifications dans l'overide de OrderDetailController.php en rajoutant tes différents id dans le if suivant if($order->getCurrentState() = 4) Pour ce qui est de l'ajout dans le tableau de recap, les modifs doivent être rapide à réalisé, je souhaitais le faire au début et je suis passé à autre chose lol
  13. non tu mets : {$order_history.0.id_order_state} Affiche cette valeur juste avant de rentrer dans la boucle d'affichage du bouton Ca donnera ca : <h3>{l s='Follow your order\'s status step-by-step'}</h3> MON ID ORDER : {$order_history.0.id_order_state}<br> {if isset($receipt_confirmation) && $receipt_confirmation} <p class="success"> {l s='Thank you for your feedback!'} </p> {/if} {if $order_history.0.id_order_state == 4} <form action="{$link->getPageLink('order-detail', true)|escape:'html'}" method="post" class="std" id="markAsReceived"> <input type="hidden" class="hidden" value="{$order->id|intval}" name="id_order" /> <input type="submit" class="exclusive" name="markAsReceived" id="markAsReceivedBtn" value="{l s='I have received this order'}"> <p class="clear"></p> </form> {/if}
  14. Le problème doit venir de ton if qui controle l'id de l'état courant {if $order_history.0.id_order_state == 4} Essai de d'afficher quelque part sur ta page => $order_history.0.id_order_state Pour voir ce qui te retourne comme valeur.
  15. As tu vérifier dans Commandes>Status a quoi correspond l'id 4 et voir si la commande sur le quel tu fais ton test pour l'affichage du bouton à bien le bon statut dans ton code actuel tu fais afficher le bouton que sur le statu ayant l'ID 4 Au niveau des modifs sur le fichier history.tpl cherche <td class="history_state">{if isset($order.order_state)}{$order.order_state|escape:'htmlall':'UTF-8'}{/if}</td> Et remplace le par <td class="history_state" id="etatorder-{$order.id_order}">{if isset($order.order_state)}{$order.order_state|escape:'htmlall':'UTF-8'}{/if}</td> Dans le fichier order-details.tpl sur le code du bouton cherche : <input type="hidden" class="hidden" value="{$order->id|intval}" name="id_order" /> Et remplace le par <input type="hidden" class="hidden" id="monidorder" value="{$order->id|intval}" name="id_order" /> Et ensuite tu fais la modif dans history.js que j'ai mise dans mon post précédent. Je n'ai pas test car pas la version 1.5 sous la main mais ca devrait marcher normalement.
  16. Je n'ai pas le temps de regarder ce week end, je regarde ca dans début de semaine prochaine voir si je trouve une correspondance avec la 1.6.x
  17. Je travail sur une version de 1.6 de presta moi d'ou la différence de code sur le history.tpl Je n'ai pas de boutique en 1.5.6 pour voir la tête du fichier dsl
  18. Bonjour, Vous pouvez régler ca via les groupes de client. Et soit effectuer des remises sur l'ensemble du groupe en % Et sinon vous pouvez régler les prix de chaque produit via des règles de prix spécifiques selon les groupes clients.
  19. Bonjour, Avez vous trouvez une solution à votre pour ce type de carte, je suis également intéressé Merci d'avance
  20. Je viens de finir les modifs pour le passage du statut en livré directement dans le tableau listant les commandes, j'ai fait ca rapidement, donc on peut surement mieux faire. Dans le fichier history.tpl chercher : <td data-value="{$order.id_order_state}" class="history_state"> {if isset($order.order_state)} <span class="label{if $order.id_order_state == 1 || $order.id_order_state == 10 || $order.id_order_state == 11} label-info{elseif $order.id_order_state == 5 || $order.id_order_state == 2 || $order.id_order_state == 12} label-success{elseif $order.id_order_state == 6 || $order.id_order_state == 7 || $order.id_order_state == 8} label-danger{elseif $order.id_order_state == 3 || $order.id_order_state == 9 || $order.id_order_state == 4} label-warning{/if}" {if $order.id_order_state > 12}style="background-color:{$order.order_state_color}id="etatorder-{$order.id_order}";"{/if}> {$order.order_state|escape:'html':'UTF-8'} </span> {/if} </td> et rajouté juste un id="etatorder-{$order.id_order}" ca donne ca : <td data-value="{$order.id_order_state}" class="history_state"> {if isset($order.order_state)} <span class="label{if $order.id_order_state == 1 || $order.id_order_state == 10 || $order.id_order_state == 11} label-info{elseif $order.id_order_state == 5 || $order.id_order_state == 2 || $order.id_order_state == 12} label-success{elseif $order.id_order_state == 6 || $order.id_order_state == 7 || $order.id_order_state == 8} label-danger{elseif $order.id_order_state == 3 || $order.id_order_state == 9 || $order.id_order_state == 4} label-warning{/if}" {if $order.id_order_state > 12}style="background-color:{$order.order_state_color};"{/if} id="etatorder-{$order.id_order}"> {$order.order_state|escape:'html':'UTF-8'} </span> {/if} </td> Dans le fichier history.js chercher $('form#markAsReceived').submit(function(){ return markAsReceived(); }); et remplacer par $('form#markAsReceived').submit(function(){ monid = $("#monidorder").val(); return markAsReceived(monid); }); pour finir toujours dans le fichier history.js chercher : function markAsReceived() { paramString = "ajax=true"; $('#markAsReceived').find('input').each(function(){ paramString += '&' + $(this).attr('name') + '=' + encodeURIComponent($(this).val()); }); $.ajax({ type: "POST", headers: { "cache-control": "no-cache" }, url: $('#markAsReceived').attr("action") + '?rand=' + new Date().getTime(), data: paramString, success: function (msg){ $('#block-order-detail').fadeOut('slow', function() { $(this).html(msg); $(this).find('#markAsReceivedBtn').fadeOut; $(this).fadeIn('slow'); }); } }); return false; } et le remplacer par function markAsReceived(id) { paramString = "ajax=true"; $('#markAsReceived').find('input').each(function(){ paramString += '&' + $(this).attr('name') + '=' + encodeURIComponent($(this).val()); }); $.ajax({ type: "POST", headers: { "cache-control": "no-cache" }, url: $('#markAsReceived').attr("action") + '?rand=' + new Date().getTime(), data: paramString, success: function (msg){ $('#block-order-detail').fadeOut('slow', function() { $(this).html(msg); $(this).find('#markAsReceivedBtn').fadeOut; $(this).fadeIn('slow'); $("#etatorder-"+id).removeClass('label-warning'); $("#etatorder-"+id).addClass('label-success'); $("#etatorder-"+id).html('Livré'); }); } }); return false; } De plus en presta 1.6 le message de retour de l'action sur le bouton n'été pas propre pour le mettre sous la forme d'un message de validation cherchez : {if isset($receipt_confirmation) && $receipt_confirmation} <p class="success"> {l s='Thank you for your feedback!'} </p> {/if} Remplassez par : {if isset($receipt_confirmation) && $receipt_confirmation} <div class="alert alert-success"> {l s='Thank you for your feedback!'} </div> {/if}
  21. Je viens de l'intégrer sur mon site. Ca fonctionne bien, j'ai juste modifier l'overide et le if d'affichage du bouton pour afficher le button sur les statut de commande 'En cours de préparation' et 'Expédier' En rajoutant un test sur l'id 3 de l'état de la commande De plus dans l'overide il faut modifier le : if($order->getCurrentState() = 4) en if($order->getCurrentState() == 4) Il me reste juste à régler un léger problème qui n'en ai pas un en fait lol Il faudrait réussir à recharger le tableau listant les commandes afin de mettre le statut de la commande à jour directement dans la liste des commandes, je regarderais ca demain.
  22. Je viens de trouver ca, je vais essayer de l'intéger demain pour voir si ca fonctionne http://nemops.com/order-received-button-prestashop/#.VIjNKWSG-zs je reviendrais vers vous pour vous dire si ca marche
  23. Oui tout à fait il est possible de le mettre sur une ligne cela va dépendre du mois je n'ai pas fait attention à ca il faut que je corrige de mon coté du coup Il s'agit de la classe col-xs-4 dans le "else" qui pose problème sur les longues lignes il faut modifier la ligne 134 : <div class="col-xs-4"> en <div style="padding-left: 5px"> sachant que le padding left permet de gérer le décalage vous pouvez modifier la valeur comme bon vous semble. De plus je peux voir sur votre screen que le mois et en anglais, vous avez du oublier de faire la traduction dans le backoffice
  24. Oui autant pour moi. Prestashop 1.6.0.6 mais normalement ne change pas sur les versions supérieures. Pour le bout de code il ce situe à partie de la ligne 87 du fichier identity.tpl (d'où la numérotation dans mon bloc de code Le code d'origine est : <div class="form-group"> <label> {l s='Date of Birth'} </label> <div class="row"> <div class="col-xs-4"> <select name="days" id="days" class="form-control"> <option value="">-</option> {foreach from=$days item=v} <option value="{$v}" {if ($sl_day == $v)}selected="selected"{/if}>{$v} </option> {/foreach} </select> </div> <div class="col-xs-4"> <select id="months" name="months" class="form-control"> <option value="">-</option> {foreach from=$months key=k item=v} <option value="{$k}" {if ($sl_month == $k)}selected="selected"{/if}>{l s=$v} </option> {/foreach} </select> </div> <div class="col-xs-4"> <select id="years" name="years" class="form-control"> <option value="">-</option> {foreach from=$years item=v} <option value="{$v}" {if ($sl_year == $v)}selected="selected"{/if}>{$v} </option> {/foreach} </select> </div> </div> </div> à remplacer par <div class="form-group"> <label> {l s='Date of Birth'} </label> <div class="row"> {if !$sl_year} <div class="col-xs-4"> <select name="days" id="days" class="form-control"> <option value="">-</option> {foreach from=$days item=v} <option value="{$v}" {if ($sl_day == $v)}selected="selected"{/if}>{$v} </option> {/foreach} </select> </div> <div class="col-xs-4"> <select id="months" name="months" class="form-control"> <option value="">-</option> {foreach from=$months key=k item=v} <option value="{$k}" {if ($sl_month == $k)}selected="selected"{/if}>{l s=$v} </option> {/foreach} </select> </div> <div class="col-xs-4"> <select id="years" name="years" class="form-control"> <option value="">-</option> {foreach from=$years item=v} <option value="{$v}" {if ($sl_year == $v)}selected="selected"{/if}>{$v} </option> {/foreach} </select> </div> {else} {* {l s='January'} {l s='February'} {l s='March'} {l s='April'} {l s='May'} {l s='June'} {l s='July'} {l s='August'} {l s='September'} {l s='October'} {l s='November'} {l s='December'} *} <div class="col-xs-4"> <span>{$sl_day}</span> <span> {foreach from=$months key=k item=month} {if ($sl_month == $k)} {l s=$month} {/if} {/foreach} </span> <span> {$sl_year}</span> </div> {/if} </div> </div> Pour faire plus simple, il faut : <div class="form-group"> <label> {l s='Date of Birth'} </label> <div class="row"> {if !$sl_year} <!-- CODE PRESTASHOP (l 92 à l 116) --> {else} {* {l s='January'} {l s='February'} {l s='March'} {l s='April'} {l s='May'} {l s='June'} {l s='July'} {l s='August'} {l s='September'} {l s='October'} {l s='November'} {l s='December'} *} <div class="col-xs-4"> <span>{$sl_day}</span> <span> {foreach from=$months key=k item=month} {if ($sl_month == $k)} {l s=$month} {/if} {/foreach} </span> <span> {$sl_year}</span> </div> {/if} </div> </div> En espérant t'avoir aider.
×
×
  • Create New...