Jump to content

totoche33

Members
  • Posts

    50
  • Joined

  • Last visited

About totoche33

  • Birthday 06/12/1986

Profile Information

  • Location
    Bordeaux
  • Activity
    User/Merchant

Recent Profile Visitors

2,910,072 profile views

totoche33's Achievements

Newbie

Newbie (1/14)

7

Reputation

  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.
×
×
  • Create New...