Jump to content

base de données mise a jour 1.4


Recommended Posts

Bonjour,

J'ai développé un module pour les anciennes version de prestashop, or il se trouve que dans la 1.4 le champs id_tax a était modifié en id_tax_rules_group dans plusieurs tables , je voulais savoir si cela allez être définitif pour les prochaines versions de prestashop ?

J'aurais aimé savoir aussi si c'etais possible de faire une condition si c'est id_tax_rules_group appliquer tel action et si c'est id_tax appliqué une autre action dans une seule et même requête.

merci
Cordialement

Link to comment
Share on other sites

Bonjour,

Malheureusement (et cela vaut pour tout projet informatique), on ne peut pas assurer que le schéma des tables ne bouge plus. Dans tous les cas, je suis presque sûr que id_tax_rules_group restera pour toute les futurs versions 1.4.x.


Pour votre requête il est bien sûr possible d'effectuer des conditions SQL (if, ifnull, ...) mais il est préférable dans votre cas d'effectuer deux requête en fonction de la version de Prestashop :

if (version_compare(_PS_VERSION_, 1.4) >= 0)
{
}else
{
}




En remplaçant "1.4" par le numéro de version où id_tax_rules_group est apparu (il semble que ça soit la 1.4.0.5).


Pour mysql je vous conseil de faire un tours sur la documentation officielle (en français) : http://dev.mysql.com/doc/refman/5.0/fr/control-flow-functions.html

Link to comment
Share on other sites

La réponse semble effectivement cohérente, sauf que faire un LEFT JOIN conditionnel, ce n'est pas possible.

L'on est obligé de reprendre du code, le seul SQL ne suffit pas pour régler ce problème.

Par ailleurs, comment géré le changement de champ sur la fiche produit ; en effet, auparavant id_tax représentait le taux de tva.

Maintenant il faut passer par les règles, c'est id_tax_rules_group qui contient l'id de la taxe. Mais comment associé les 2 (je structurellement avec du SQL) ?

Link to comment
Share on other sites

Bonjour,

Pour récupérer le taux de la tax ou son id, il faut soit effectuer une jointure avec id_tax_rules_group + un group by soit utiliser une fonction native de prestashop : TaxRulesGroup::getTaxesRate().

Cette dernière prends quatre paramètres : l'identifiant id_tax_rules_group, l'identifiant du pays, d'identifiant de l'état et du comté. Les deux derniers sont optionnelles (on peut les remplacer par '0').

Voici un exemple d'utilisation :

TaxRulesGroup::getTaxesRate(28, Configuration::get('PS_COUNTRY_DEFAULT'), 0, 0);



Où "28" est l'id_tax_rules_group .

Cette fonction retourne un nombre flottant qui est le taux de tax en %.


Il est possible de récupérer l'identifiant du pays du visiteur grâce à :

$id_country = (int)$cookie->id_country;

Link to comment
Share on other sites

Afin de récupérer le bon taux de TVA pour la commande, je suis d'accord. Pour le taux de TVA par défaut sur la fiche produit, je suis sceptique ...

Fiscalement, le taux de TVA du produit dépend du pays de la boutique. Ensuite, l'on peut envisager les taux de TVA par zone de livraison.

Je pense donc que le taux de TVA par défaut doit être lié à la boutique ; je ne vois pas l'utilité de l'autre variable :-(

Link to comment
Share on other sites

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 account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...