jerem_ Posted December 12, 2019 Share Posted December 12, 2019 Bonjour, PS 1.7.6.1 Lorsque je créé une commande par le back office, dans l'encart livraison, si j'essaye de passer "Livraison gratuite" à "Oui", le message "Aucun transporteur ne peut être appliqué à cette commande" apparait (alors que j'avais bien le bon transporteur disponible auparavant) (cf image en PJ) et je ne peux plus enregistrer la commande... Je n'avais pas ce soucis auparavant mais je n'arrive à voir d'où ça vient... Je ne sais pas si c'est depuis une migration récente du site ou un changement dans la configuration... Quelqu'un aurait une idée ? Normalement tout est bien configuré. Le client a une adresse valide pour ce transporteur. Le produit peut bien être livré par ce transporteur... et le transporteur est bien sélectionnable tant que je ne souhaite pas offrir les frais de port... D'avance merci Link to comment Share on other sites More sharing options...
jerem_ Posted December 13, 2019 Author Share Posted December 13, 2019 (edited) Bonjour, Suite de mon problème remonté... J'ai testé sur un autre site (en 1.7.5.2) et je n'ai pas rencontré le soucis... En cherchant au niveau du code, j'ai fini par trouver l'appel ajax concerné dans le controleur AdminCartsController.php : public function ajaxProcessupdateFreeShipping() { if ($this->access('edit')) { if (!$id_cart_rule = CartRule::getIdByCode(CartRule::BO_ORDER_CODE_PREFIX . (int) $this->context->cart->id)) { $cart_rule = new CartRule(); $cart_rule->code = CartRule::BO_ORDER_CODE_PREFIX . (int) $this->context->cart->id; $cart_rule->name = array(Configuration::get('PS_LANG_DEFAULT') => $this->trans('Free Shipping', array(), 'Admin.Orderscustomers.Feature')); $cart_rule->id_customer = (int) $this->context->cart->id_customer; $cart_rule->free_shipping = true; $cart_rule->quantity = 1; $cart_rule->quantity_per_user = 1; $cart_rule->minimum_amount_currency = (int) $this->context->cart->id_currency; $cart_rule->reduction_currency = (int) $this->context->cart->id_currency; $cart_rule->date_from = date('Y-m-d H:i:s', time()); $cart_rule->date_to = date('Y-m-d H:i:s', time() + 24 * 36000); $cart_rule->active = 1; $cart_rule->add(); } else { $cart_rule = new CartRule((int) $id_cart_rule); } $this->context->cart->removeCartRule((int) $cart_rule->id); if (Tools::getValue('free_shipping')) { $this->context->cart->addCartRule((int) $cart_rule->id); } echo json_encode($this->ajaxReturnVars()); } } Je ne sais pas pourquoi... mais dans le json renvoyé par cet appel ajax, "delivery_option_list" (sensé renvoyer la liste des transporteurs disponibles) se retrouve vide... J'ai tenté plusieurs choses et ai fini par testé d'afficher le contenu de $this->ajaxReturnVars() en début de fonction pour comparer avec ce qui était renvoyé en fin de fonction... Et là, surprise, les DEUX affichaient un "delivery_option_list" correctement rempli.... J'ai fini par laisser un simple appel à $this->ajaxReturnVars() en début de fonction... Il est possible que cela initialise certaines données utilisées ensuite par $cart_rule... qui, autrement, vidait mon fameux "delivery_option_list"... Mon soucis semble résolu mais je n'ai malheureusement pas le temps d'investiguer d'avantage pour comprendre la source exacte du soucis... Je laisse ici mon retour à bon entendeur... Edited December 13, 2019 by jerem_ (see edit history) Link to comment Share on other sites More sharing options...
acgm Posted December 30, 2021 Share Posted December 30, 2021 Bonjour, Je rencontre le même problème, Malheureusement ta solution m'affiche directement une erreur 500 à l'accès de la page de création de commande. Peut etre as tu avancé sur ce probleme depuis ? Link to comment Share on other sites More sharing options...
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now