Vincent.H Posted December 1, 2010 Share Posted December 1, 2010 Bonjour,J'ai un soucis sur une boutique, un client a acheté 3 produits, disons à 100 € chacun.Le client a utilisé un bon de réduction pour cette commande, lui permettant d'obtenir 40% de réduction sur la totalité.Total commande TTC : 300 €Total réduction TTC : 120 €Total final TTC : 180 €Jusque là, tout va bien.Je dois annuler un produit dans cette commande et procéder à un remboursement.Je coche donc la case rembourser, et générer un avoir pour le produit en question.L'avoir se génère correctement, mais d'un montant incorrect (100€ au lieu de 60€).Y-a-t-il une solution autre que bidouiller la base de données pour modifier le montant de l'avoir ?Je ne veux pas que la cliente reçoive l'email avec l'avoir à 100€... alors qu'en réalité il doit faire 60€.En me penchant un peu plus sur le problème, je vois que la réduction correspond à une ligne dans la facture, et non sur un produit (en modifiant son tarif). Est-ce dû à ça ?Je ne souhaite pas rembourser 100€ alors que le client n'a payé que 60€...Merci,Vincent Link to comment Share on other sites More sharing options...
fabbea Posted December 10, 2010 Share Posted December 10, 2010 Bonjourun petit UP.même souci ! Et ça me parait une lacune importante : dans tous ces cas de figures le commerçant rembourse plus que ce que le client a payé !Comment procéder pour réparer ça ? une idée ?Amicalement Link to comment Share on other sites More sharing options...
fabbea Posted December 10, 2010 Share Posted December 10, 2010 Non, personne ?Pourtant ce n'est pas un détail me semble t'il ? Link to comment Share on other sites More sharing options...
marty69 Posted December 10, 2010 Share Posted December 10, 2010 hop ! je me greffe dessus ! c'est un comportement un peu aberrant !peut être poster dans bug tracker... Link to comment Share on other sites More sharing options...
Vincent.H Posted December 13, 2010 Author Share Posted December 13, 2010 Bonjour,Je suis content de voir que je ne suis pas le seul à trouver ce "comportement" anormal.J'ai déjà reporté un bug sur le tracker il y a quelques jours, http://www.prestashop.com/bug_tracker/view/6338/Mais hélas... Aucune réponseEn testant Presta 1.4, je me suis rendu compte que le fonctionnement était malheureusement identique.Vincent Link to comment Share on other sites More sharing options...
fabbea Posted December 13, 2010 Share Posted December 13, 2010 Bonjourje vois que ce post suscite un certain intérêt, ce qui est logique.Le problème est complexe :1/ on doit rembourser le bon de réduction soit en montant en Euros, soit en %.2/On ne peut pas rembourser le bon de réduction dans son entier si le client ne retourne qu'un produit sur 3(dans l'exemple cité ci-dessus, si on ne retourne q'un seul produit, on rembourse donc 40E de bon et surtout pas 120...)Une solution "provisoire" serait d'ajouter un champ à la table "ps_order_slip", par exemple "order_slip_discount", et dans le back-office, de pourvoir indiquer un montant "à la main" lors de la création d'un avoir, pour arriver sur le bon montant.Ca se passe dans tabs/adminOrders.php...je vais essayer de m'y mettre.@ bientôt Link to comment Share on other sites More sharing options...
Vincent.H Posted December 13, 2010 Author Share Posted December 13, 2010 Bonjour,Le soucis est que la réduction apparaît sur une ligne de la facture.Pour faire bien, il faudrait que la réduction soit appliquée sur chaque produit concerné par le bon de réduction (comme pour les soldes/promotions).Le montant de l'avoir serait alors correct lors d'un retour.C'est donc plus complexe que ça. Même si cette solution fonctionne (modifier le montant de l'avoir dans la base de données), elle est loin d'être pratique.Il faudrait modifier la gestion du bon de réduction, afin de permettre l'application de la réduction sur chaque produit, et non sur le total commande.Vincent Link to comment Share on other sites More sharing options...
fabbea Posted December 13, 2010 Share Posted December 13, 2010 Re,le problème c'est que le bon de réduction ne fonctionne pas comme ça.Au niveau comptable, il est considéré comme un moyen de paiement (une sorte de chèque) offert au client pour régler sa facture.C'est pour ça qu'il se défalque sur le montant TTC, alors que les remises/promotions se défalquent sur le montant HT des produits.D'ailleurs vous avez du remarquer que la gestion des bons de réductions se fait dans l'onglet "Paiement" de Prestashop ?Donc si on défalque sur un avoir le bon de réduction ligne par ligne de produits, on va imputer le montant total de produit HT, ce qui est comptablement faux. Et ce bon aurait alors le même comportement qu'une remise, alors que ce n'est pas la même chose en comptabilité.Et vu qu'il s'agit comptablement d'un moyen de paiement, il est normal qu'il apparaisse sur une seule ligne de facture, dans le calcul des montants totaux.Dans votre exemple, le client doit bien 300E (et pas 180), mais il en paye 180 de sa poche, et le reste avec son bon d'achat.Par contre si vos aviez pratiqué une remise/promotion de 40% sur chaque article, alors à ce moment là le montant dû aurait bien été de 180E. Il y a donc une nuance, qui est de nature comptable.Amicalement.PS : si ma solution "provisoire" intéresse par hasard quelqu'un, elle est en bonne voie d'avancement... Link to comment Share on other sites More sharing options...
fabbea Posted December 14, 2010 Share Posted December 14, 2010 Bon, voici toujours une solution. Surement pas la meilleure, mais en attendant une prise en compte par l'équipe Prestashop...Création d'un champ de saisie dans la fiche de gestion d'une commande (sous Réinjecter - Générer un avoir - Bon de réduction)Aller dans Admin > Tabs > AdminOrders.php(Faire une copie de sauvegarde de AdminOrders.php)Vers la ligne 780 trouver : if ((!$order->hasBeenDelivered() AND $order->hasBeenPaid()) OR ($order->hasBeenDelivered() AND Configuration::get('PS_ORDER_RETURN'))) echo ' <input type="checkbox" id="generateCreditSlip" name="generateCreditSlip" class="button"> '.$this->l('Generate a credit slip').' <input type="checkbox" id="generateDiscount" name="generateDiscount" class="button"> '.$this->l('Generate a voucher').' <input type="checkbox" id="shippingBack" name="shippingBack" class="button" /> '.$this->l('Repay shipping costs').' '; Remplacer par if ((!$order->hasBeenDelivered() AND $order->hasBeenPaid()) OR ($order->hasBeenDelivered() AND Configuration::get('PS_ORDER_RETURN'))) /* 4eme ligne ajoutée pour créer un champ de saisie remboursement de BON réduction */ echo ' <input type="checkbox" id="generateCreditSlip" name="generateCreditSlip" class="button"> '.$this->l('Generate a credit slip').' <input type="checkbox" id="generateDiscount" name="generateDiscount" class="button"> '.$this->l('Generate a voucher').' <input type="checkbox" id="shippingBack" name="shippingBack" class="button" /> '.$this->l('Repay shipping costs').' <input type="input" id="discountBack" name="discountBack" /> '.$this->l('Remb. bon achat').' '; Enregistrer cette info en Base de données1- Accéder à la base de données :Dans la table "ps_order_slip", créer le nouveau champ order_slip_discountcolonne/nom : order_slip_discount - Type : DECIMAL - taille/valeur : 17,22- ouvrir classes > orderslip.php(faire une copie de sauvegarde de ce fichier)Après /** @var integer */ public $shipping_cost; ajouter /* Ajout remboursement bon de réduction */ /** @var decimal */ public $order_slip_discount; puis vers ligne 54, sous $fields['shipping_cost'] = intval($this->shipping_cost); ajouter /* Ajout remboursement bon de réduction */ $fields['order_slip_discount'] = $_POST['discountBack']; /* Fin du rajout */ Modifier le pdf affichant une facture d'avoirAller dans classes/ PDF.phpEn faire une copie de sauvegarde.vers la ligne 467, après if (!self::$orderSlip) { $taxDiscount = self::$order->getTaxesAverageUsed(); if ($taxDiscount != 0) $priceBreakDown['totalWithoutTax'] -= Tools::ps_round(self::$order->total_discounts / (1 + self::$order->getTaxesAverageUsed() * 0.01), 2); else $priceBreakDown['totalWithoutTax'] -= self::$order->total_discounts; $priceBreakDown['totalWithTax'] -= self::$order->total_discounts; } ajouter if (self::$orderSlip) { self::$order->total_discounts = self::$orderSlip->order_slip_discount; $priceBreakDown['totalWithTax'] -= self::$orderSlip->order_slip_discount; } Enfin, vers ligne 505, remplacer if (!self::$orderSlip AND self::$order->total_discounts != '0.00') par if (self::$order->total_discount != '0.00') En tous cas chez moi, ça marche.Amicalement Link to comment Share on other sites More sharing options...
Vincent.H Posted December 23, 2010 Author Share Posted December 23, 2010 Bonjour,Merci pour vos contributions.Visiblement le problème a été résolu (voir : http://www.prestashop.com/bug_tracker/view/6338/).Résolu dans le SVN 3836. A priori seules les classes suivante sont touchées :- Discount- Order- OrderSlip- PDFVincent Link to comment Share on other sites More sharing options...
MakeOpen Posted January 11, 2011 Share Posted January 11, 2011 La révision 3836 a été supprimée du SVN Du coup, impossible de savoir ce qui a été modifié, et le bug est toujours présent dans la version 1.3.5.0Vincent, as tu gardé les fichiers Discount, Order, OrderSlip et PDF ?Merci pour le partage Link to comment Share on other sites More sharing options...
Vincent.H Posted January 11, 2011 Author Share Posted January 11, 2011 Salut !Tu as de la chance j'avais encore ça sur mon bureau.En revanche, je n'ai pas eu le temps de tester si ça fonctionnait.Les fichiers (les 4 classes : Discount, Order, OrderSlip et PDF) sont disponibles ici :http://dl.free.fr/oAHNsJC1SAinsi qu'en PJ de cette réponse.A+,Vincent prestashop-svn-3836.zip Link to comment Share on other sites More sharing options...
MakeOpen Posted January 12, 2011 Share Posted January 12, 2011 Merci Vincent !Pour information, j'ai contacté Prestashop qui va traiter ce bug au plus tôt.Je vous tiens informé Link to comment Share on other sites More sharing options...
shopme Posted April 25, 2012 Share Posted April 25, 2012 Salut @ Fabbea petit probleme dans le cadre de remplacement, tu as remis la meme chose Link to comment Share on other sites More sharing options...
fabbea Posted April 27, 2012 Share Posted April 27, 2012 Bonjour shopme houla c'est vieux ! EN reprenant mon fichier, voici ce que je trouve echo ' <input type="checkbox" id="generateCreditSlip" name="generateCreditSlip" class="button" onclick="toogleShippingCost(this)" /> <label for="generateCreditSlip" style="float:none; font-weight:normal;">'.$this->l('Generate a credit slip').'</label><br /> <input type="checkbox" id="generateDiscount" name="generateDiscount" class="button" onclick="toogleShippingCost(this)" /> <label for="generateDiscount" style="float:none; font-weight:normal;">'.$this->l('Generate a voucher').'</label><br /> <input type="input" id="discountBack" name="discountBack" /> <label for="shippingBack" style="float:none; font-weight:normal;">'.$this->l('Remb. bon achat').'</label><br /></span>'; Il manquait apparemment la dernière ligne. Attention hack fait sur un Prestashop version 1.3, je ne sais pas ce que ça donne sur une 1.4... Amicalement Link to comment Share on other sites More sharing options...
shopme Posted April 27, 2012 Share Posted April 27, 2012 Merci Fabbea, je vais essayer je te tiendrai au courant, y a t-il d'autres solutions depuis? J'ai un autre post a ce sujet si ça t'interesse, je trouve que c'est une grosse lacune au niveau comptable http://www.prestashop.com/forums/index.php?/topic/154665-modifier-facture/page__view__findpost__p__811394 Link to comment Share on other sites More sharing options...
shopme Posted April 27, 2012 Share Posted April 27, 2012 ne fonctionne plus Link to comment Share on other sites More sharing options...
Natcha Posted June 16, 2014 Share Posted June 16, 2014 Bonjour, petit Up sur ce soucis... je suis en version 1.4.5 Quelqu-un depuis ce temps aurais t-il trouvé un solution fiable ? ou existe t-il un module pour regler ce soucis de remboursement/bon de réduction et facturation correcte ? Merci pour vos reponses ? 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