owebia / magento2-module-advanced-shipping

Other
91 stars 29 forks source link

Pb pour créer une règle FDP offert au dessus d'un montant TTC avec discount #72

Open angelflo opened 4 years ago

angelflo commented 4 years ago

Bonjour,

J'utilise actuellement la fonction : $request->package_value_with_discount pour tester si le prix total taxe comprise (TTC) avec remise (discount) est supérieur à 100 € pour offrir les frais de port, mais je viens de me rendre compte qu'à priori cette fonction prend le prix HT pour son calcul. J'ai donc regardé les autres possibilité sur votre doc mais je vois que l'option dont j'ai besoin : $quote->grand_total: total (including tax) with discount (known issues #3, you should avoid using this value) semble avoir des problèmes et que vous déconseillez son utilisation ?

1/ Avez-vous résolu ce problème de votre coté ? 2/ Sinon, quelle solution me conseillez vous pour vérifier le prix TTC avec les éventuels code promo déduits ?

Merci d'avance. En espérant une réponse claire (avec un exemple du code) et rapide car je dois pas passer en production demain et que je viens de découvrir ce pb au dernier moment.

owebia commented 4 years ago

Bonjour,

L'extension ne fournit que des valeurs déjà calculées par Magento. A l'étape du choix de la méthode de livraison, Magento n'a pas encore renseigné $quote->grand_total. Magento ne fournit pas de moyen universel pour récupérer le total TTC après remise mais avant frais de livraison (lorsque les prix des produits sont renseignés HT).

Cordialement, A.L.

angelflo commented 4 years ago

Bonjour, Tout d'abord un grand merci pour votre réponse. J'avoue être un peu surpris ... cela me semble être un cas de figure des plus courant ... on pourrait meme parler de "b.a.ba". : Frais de port offert pour toute commande de plus de 100 € => on parle toujours au client en TTC et on retire toujours le motant des réductions ...

Tous les sites ecommerce sur lesquels je commande offre la livraison au delà d'un certain montant TTC dans le panier en prenant soin de calculer ce montant après les réductions éventuelles. Quand on vend en B2C, le client se base sur son montant d'achat TTC ce qui est tout à fait normal, et du coté e-commercant nous avons besoin de vérifier un montant avec les réductions appliquées pour déterminer la valeur du panier d'achat. C'est quand même "étonnant" (pour ne pas dire hallucinant) qu'une règle aussi triviale que cela ne puisse pas etre mise en place dans magento. Avez-vous prévu d'implémenter cela dans une MAJ de votre extension ?

owebia commented 4 years ago

Bonjour,

En effet, c'est surprenant mais c'était déjà le cas avec Magento 1.

Vous pouvez peut-être essayer ceci :

$totals = $quote->collectTotals()->getTotals();
$subtotalInclTaxAndDiscount = $totals['grand_total']->getValue() - $totals['shipping']->getValue();

Mais je ne peux pas vous garantir que cela fonctionnera dans tous les cas de figure et que cela n'aura pas d'impact sur le processus de commande (collectTotals est censé être appelé qu'une seule fois pour figer les valeurs). Comme les montants des méthodes de livraison sont récupérées via un appel ajax, je suppose que cela ne devrait pas causer d'effet de bord.

Il faudra néanmoins faire des tests en profondeur pour vérifier que les valeurs stockées par Magento sont correctes après sélection de la méthode de livraison (par exemple, la TVA sur les frais de livraison).

Cordialement, A.L.

angelflo commented 4 years ago

en essayant une solution assez sale : ($request->package_value_with_discount * 1.2 >= 100) cad en ajouter la TVA en dur dans le code de la méthode cela semble faire le job, avez-vous une idée si cela peut générer des effets de bord auquel je n'ai pas pensé ?

owebia commented 4 years ago

Si vous ne manipulez pas la variable $quote, vous n'aurez pas d'effet de bord. A.L.

JoachimCanu commented 4 years ago

J'ai utilisé $quote->__subtotal_with_discount_incl_tax au lieu de $request->package_value_with_discount. Aucun soucis pour moi.

(Magento 2.3.5 et magento2-module-advanced-shipping 2.8.5)