Bonjour à tous,
J'ai fais quelques recherches sur la TVA. Il apparait qu'il n'y a pas de règle uniforme, qu'il s’agisse de la communauté européenne ou des autres pays. Il fallait bien s'y attendre ! ;-)
En France, c’est assez simple car nous avons trois taux. En revanche, certains pays ont des taux différents suivant le type de produit. Aux états unis, c'est différent suivant les états !
Voici donc ce que je propose pour le futur module WWStore :
1) Ajouter le champ suivant à la table 'WWStore_Products' :
Rate Float, Taux (pourcentage) à appliquer
2) Créer une table 'WWStore_Taxes' comprenant les champs suivants :
TaxID Int, Identity (1, 1) Not Null, PrimaryKey
ProductID Int, idem table WWStore_Product, ForeignKey
CountryID Int, table List (EntryID, ListName=’Country’)
RegionID Int, table List (EntryID, ListName=’Region’)
Rate Float, Taux (pourcentage) à appliquer
Charges Money, Frais supplémentaires pour la destination
Description NvarChar(150), Description éventuelle concernant les frais
3) Créer une procédure nommée 'GetProductTaxRate' pour déterminer le taux adéquat à appliquer au produit.
La procédure prendrait en paramètre : le code produit, le pays, la région et retournerait le taux, le montant des frais et la description. Ceci permettrait d’avoir au choix un seul taux pour tous les produits, un taux par produit, ou enfin un taux par produit/destination. Ainsi le module ferait appel à la procédure lors du calcul des taxes. Si elle retourne un taux nul, alors on applique le taux du produit, s'il est nul on applique le taux de la boutique.
4) Modifier le formulaire produit actuel pour ajouter le taux par produit et un tableau des taux par destination.
5) Créer un formulaire de saisie pour les taux par destination
Ceci me semble assez simple à réaliser et répondrait à tous les cas possibles. Le champ 'Charges' pourrait être utile dans le cas où des frais (douanes, certificats, etc.) seraient engagés sur certaines destinations. Si vous avez des suggestions ou des améliorations, elles sont les bienvenues ! Par ailleurs, il serait peut-être bien de lui donner un autre nom ? J'ai pensé à eStore.
Gilles