Développer avec RBS Change : [Résolu] Zone de livraison et taux de TVA
-
29/01/2013 11:08
Bonjour,
j'ai un soucis avec les zones de taxes et les taux de TVA.
je suis dans un cas où je souhaite vendre à l'international.
Je souhaite donc, que le taux de TVA appliqué sur mes produits, soit différent en fonction du pays sélectionner dans l'adresse de livraison / facturation du client.
- J'ai bien créé des zones spécifiques dans le module zone.
- J'ai bien enrichi la liste modules_catalog/defaulttaxzones avec les zones créé précédemment en conservant bien le même code zone vs code listItem
- j'ai bien créé des zones de facturation différentes qui ont chacune
----- une zone d'adresse de facturation spécifique
----- un taux de taxe spécifique
- j'ai bien ajouté mes zones de facturation dans les propriétés de ma boutique
Or quand je vais en FO :
- lorsque je rempli mon panier, ma TVA est à 19.6% (TVA française, jusqu'ici tout va bien)
- lorsque je renseigne mes adresses de facturation / livraison qui correspondent à une zone pour laquelle j'ai créé un taux de taxe différent, je reste quand même sur le taux 19.6% initial.
Que dois-je faire pour pouvoir facturer un taux différent en fonction du pays de l'acheteur ?
PS : je teste sur une instance de Change initialisée par le module sample.
j'ai bien plusieurs zones de facturation avec des taux différents. J'imagine donc qu'il est possible de le faire directement depuis le BO, sans passer par du code. Mais par contre, la boutique ne contient que la zone de facturation "France". Et ça n'a aucun effet d'ajouter les autres zones de facturation à la boutique.
j'imagine donc qu'il me manque un step ou 2 pour arriver à mes fins, mais je ne vois pas lequel...Édité par Mathias 29/01/2013 11:11
Développe sous linux Ubuntu 12.04 LTS Desktop
Projet ecommerce core 3.6.7 -
31/01/2013 11:54
Alors il faut distinguer deux cas :
1) Les prix changent : dans ce cas il faut effectivement exploiter plusieurs zones de facturation (ou tarification). En effet, chaque prix est créé dans une boutique donné mais également sur une zone de tarification donnée. Il faudra alors implémenter une stratégie de sélection de cette zone (par défaut c'est la première zone de la boutique qui est retenue). Cf la méthode getCurrentBillingAreaForShop du catalog_BillingareaService.
2) Les prix ne changent pas : dans ce cas il vaut mieux passer par une zone de tarification unique mais couvrant plusieurs pays et renseigner les taux de taxe pour ces différents pays dans l'onglet taxes de cette zone.Édité par Gaël Port 31/01/2013 11:55
-
A priori nous sommes dans le cas n°2, j'attends la confirmation du client.
Concernant le cas n°1:
sur quel type d'évènement la sélection de la zone via la stratégie pourrait intervenir ? au changement de l'adresse dans le parcours de paiement ?
est-ce que cela va du coup modifier les prix dans toute la boutique en FO en prenant en compte le nouveau taux + le nouveau prix, tant que l'utilisateur est connecté ?
Développe sous linux Ubuntu 12.04 LTS Desktop
Projet ecommerce core 3.6.7 -
sur quel type d'évènement la sélection de la zone via la stratégie pourrait intervenir ? au changement de l'adresse dans le parcours de paiement ?
Par défaut ce n'est fait à aucun moment : la première fois qu'on demande la zone, elle est sélectionnée en prenant la première et on place le résultat en session une fois pour toutes.
Si dans un projet vous mettez en place une autre stratégie, c'est à vous de voir quand recalculer cette zone en fonction du moment où vous avez l'info. Cela peut-être par exemple au moment du login si l'information est dans le compte client.est-ce que cela va du coup modifier les prix dans toute la boutique en FO en prenant en compte le nouveau taux + le nouveau prix, tant que l'utilisateur est connecté ?
Oui, tous les prix affichés sont calculés en fonction de la zone courante. Et celle-ci étant stockée en session une fois sélectionnée, elle reste valable jusqu'à la fin de la session ou jusqu'à ce qu'elle soit explicitement changée. -
ok je comprends donc vu que finalement je me retrouve dans le cas1, il faut que je traite la mise en session au moment du login, en effet, avec les infos à dispo dans le compte client, mais aussi que je gère un éventuel changement de zone de tarification dans les blocks situés dans mon compte (mes addresses) mais aussi dans le parcours de paiement !
point subsidiaire :
nous avons sélectionné dans la zone de tarification l'option = saisie des prix TTC.
mon client s'attendait, du coup, à ce que les prix TTC restent inchangés, mais que ce soit le prix HT qui varie dynamiquement en fonction du taux de TVA appliqué.
sauf erreur de ma part, ce n'est pas envisageable ?
Développe sous linux Ubuntu 12.04 LTS Desktop
Projet ecommerce core 3.6.7 -
Effectivement, quelle que soit la valeur stockée (TTC ou HT), les différents prix TTC en fonction du taux seront toujours calculés sur la base du prix HT. Si vous stockez un prix TTC en base, il sera converti en fonction du taux de taxe par défaut puis reconverti en TTC pour le taux voulu.
Si vous voulez faire varier le prix HT il faudra impérativement passer par des prix différents. Par exemple en passant par des zone de tarification par pays. -
bon ben ya plus qu'à
Développe sous linux Ubuntu 12.04 LTS Desktop
Projet ecommerce core 3.6.7 -
Je me pose une question vis à vis de ce projet en particulier.
Le cas client ici est d'avoir pour tous les produits, le même tarif TTC pour toutes les zones de tarifications, donc le taux de TVA change, et le prix HT aussi, et nous aurons bien un prix par zone de facturation.
Mais si je n'affiche pas le prix ht et le taux de TVA en FO, il m'est possible de gérer la zone de facturation a utiliser uniquement au moment de la génération de la commande, a partir des infos saisies par le client (ou futur client) dans sa commande ?
j'ai peur qu'en faisant ce racccouri je rate une étape importante :-/
Développe sous linux Ubuntu 12.04 LTS Desktop
Projet ecommerce core 3.6.7 -
Bonjour, par rapport à mon message précédent, finalement pas de soucis, le check de la zone de facturation se fait à plusieurs étapes dans le process, du coup, pas de problème à ce niveau.
Par contre, je rencontre un problème lorsque j'arrive sur l'étape de choix du mode de livraison, dans un cas particulier.
Je m'explique :
- pour rappel, j'ai créé 2 zones de facturation, car je souhaite avoir des prix HT différents selon le pays de l'acheteur (en l'occurence, c'est le lieux de consommation du bien qui prône, donc c'est à partir de l'adresse de livraison que je définis la zone de facturation a utiliser, via ma stratégie perso).
- 1 zone pour les pays de la CEE, 1 zone pour les autres pays hors CEE
- voici les étapes du cas particulier
1/ je ne suis pas identifié sur le site
2/ j'ajoute un produit à mon panier
3/ j'évalue mes frais sur un produit avec un pays hors CEE
4/ j'ai bien mon tarif HT qui change et mes modes de livraison spécifiques à cette zone de facturation aussi (tout va bien, cela prouve que ma stratégie et tout le reste fonctionne).
5/ je valide mon panier
6/ je m'identifie avec mon compte utilisateur
7/ mon adresse par défaut a pour pays de livraison la France (intra CEE)
8/ puisque la methode order_CartService::refresh() est appelée sur ce block, la zone de facturation en session est automatiquement repositionnée sur l'europe du fait de mon adresse par défaut
9/ je saisi une adresse de livraison hors Europe
10/ je valide cette étape
11/ j'arrive sur le choix des modes de livraison, et j'ai un message d'erreur comme quoi il n'y a aucun mode de livraison disponible
12 / je reviens à l'étape précédente
13/ la méthode order_CartService::refresh() est ici appelée en se basant sur mon adresse hors europe, du coup la zone de facturation est positionnée en session sur hors europe.
14/je valide l'étape des adresses
15/ j'ai bien mes différents mode de livraison qui sont affichés.
(ouf )
CONCLUSION :
il manque un appel à la fonction order_CartService::refresh(),soit dans la méthode executeNextStep() du block order_BlockStdAddressStepAction oudans la mdéthode execute() du block order_BlockStdShippingStepAction.
EDIT : ça ne fonctionne pas si je force la méthode order_CartService::refresh() dans la méthode executeNextStep() du block order_BlockStdAddressStepAction....
FIN EDIT
(Sachant qu'en fait, la méthode refresh(), appelle la méthode validateCart() qui elle se charge de définir la zone de facturation en fonction du contenu du panier).
QUESTION :
est-ce un bug à remonter, ou est-ce un cas non pris en compte par Change ?Édité par Mathias 16/04/2013 11:47
Développe sous linux Ubuntu 12.04 LTS Desktop
Projet ecommerce core 3.6.7 -
A priori le ticket semble une option raisonnable
A priori en faisant l'appel à la méthode "refresh()" après l'ajout de l'adresse ça devrait, je pense, régler le problème
Pour une meilleure réponse, pensez à indiquer la version sur laquelle vous rencontrez des difficultés, ainsi que son type (CMS ou eCommerce core).
Pour tout problème d'installation indiquez le nom de l'hébergeur et s'il s'agit d'un serveur mutualisé ou dédié. -
73825.11 en réponse à 73825.10 écrit par Jean-Michel
18/04/2013 18:59
ok ça marche, je fais ça !
perso je l'ai mise en début de méthode execute() du block BlockStdShippingStepAction, et ça fonctionne très bien
Développe sous linux Ubuntu 12.04 LTS Desktop
Projet ecommerce core 3.6.7
Merci de prendre connaissance et de respecter les règles des forums.