problème TVA |
Bienvenue invité ( Connexion | Inscription )
problème TVA |
10 Jan 2012, 10:52
Message
#1
|
|
Ceinture blanche+ OSC Groupe : Membres Messages : 34 Inscrit : 3-December 04 Membre no 3972 |
Bonjour,
j'ai un problème avec ma TVA, en effet, la TVA est passée de 5.5% à 7%. Je voudrais changer tous les prix HT de mon catalogue sans bouger les prix TTC. Si je change le taux dans l'admin, je me retrouve avec tous les prix TTC augmentés, alors que je ne veux pas qu'ils changent. Y a-t'il une solution ou vais-je devoir changer le taux 1 par 1 sur mes produits ? |
|
10 Jan 2012, 18:05
Message
#2
|
|
5eme dan OSC Groupe : Administrateur Messages : 9221 Inscrit : 4-March 03 Lieu : Pau Membre no 927 |
Salut, Il va falloir bricoler la solution passe, je pense, par l'ajout d'un champ price_ttc dans la table products une première opération consiste à écrire dans un script une requête qui va stocker la valeur TTC de chaque produit dans ce champ ton taux de tva est réglé à 5.5 lors de cette opération. Après tu changes le taux de tva, tes prix HT ne changent pas dans la bdd seul l'affichage ttc est modifié. Donc opération inverse avec un script qui recalcule le HT avec la nouvelle TVA à partir du TTC stocké précédemment et là, tous les products_price vont être modifiés. Tu vérifies que tes prix sont bons et tu peux virer le champ price_ttc, sinon il faudra peut-être ajuster un peu les valeurs en fonction des arrondis. Certains produits risquent en effet de perdre ou gagner un centime au passage, ça va dépendre de tes prix. Donc préalable à tout ça, un backup de la table products après, comme je dois aussi effectuer une opération du même ordre, j'essayerai de balancer quelques bouts de code ici ... Donc patience ou action... tu as le mode opératoire. -------------------- Tout d'abord : - Ni Hotline ni Service Après Vente, ces forums sont un lieu d'échange. BIEN POSER SA QUESTION (généralités)
Les "Informations Importantes" que vous devez ABSOLUMENT avoir lues : Règlement, Bien poser sa question dans ces forums et Bien utiliser les Forums. Les raccourcis pour gagner du temps : la FAQ, les PDF de la Doc (MS2-fr): PDF-V1 et PDF-V2, le moteur de Recherche sur les forums , la Liste des Contributions de Corbin. ----------------------------- Quelques sites de référence --------------------------- PHP: Le site du Zéro et PHP Débutant avec la DOC en français -- HTML: Self HTML - WebProgrammation -- CSS: OpenWeb - AlsaCréations - CSS/Edge -- Autres ressources: - XajaX - highslide js Les bons outils : EasyPHP - WAMP-5 - - Notepad++ - Firefox et son extension WebDeveloper Le gène idéal c'est le gène original. Le génie des halles est un Génie des Alpages qui tente d'être à la page. (Merci f'murrr pour les cours de philosophie de chien) |
|
11 Jan 2012, 09:21
Message
#3
|
|
5eme dan OSC Groupe : Administrateur Messages : 9221 Inscrit : 4-March 03 Lieu : Pau Membre no 927 |
ok, alors pas forcément nécessaire de stocker le prix ttc dans la bdd mais ça peut aider par la suite dont j'ai laissé cette option
1/ sauvegarde de la table products via phpMyAdmin 2/ création du taux de TVA à 7% via l'administration du site - Il faut aussi vérifier via phpMyAdmin qu'un seul taux de TVA à 7% est dans la table tax_rates. - Il se peut en effet qu'une vieille taxe (florida) traine dans cette table avec ce même taux et donc fausse la récupération de l'id de taxe 3/ utiliser le script ci-dessous Code require('includes/application_top.php'); $time_start = date('H:i:s'); // ajout du champ products_price_ttc s'il n'existe pas $qry_chk = tep_db_query("SHOW COLUMNS FROM ".TABLE_PRODUCTS." LIKE 'products_price_ttc'"); if (tep_db_num_rows($qry_chk)<1 ) { tep_db_query("ALTER TABLE ".TABLE_PRODUCTS." ADD products_price_ttc DECIMAL(15,4) NOT NULL AFTER products_price "); } // récupération des index de taxe $tax_55_id = $tax_70_id = 0; $tax_qry = tep_db_query("select tax_class_id, tax_rate from ".TABLE_TAX_RATES." "); while ($tax_res = tep_db_fetch_array($tax_qry)){ if ($tax_res['tax_rate'] == '5.500') $tax_55_id = $tax_res['tax_class_id']; if ($tax_res['tax_rate'] == '7.000') $tax_70_id = $tax_res['tax_class_id']; } // mise à jour des prix en bdd et enregistrement du prix ttc souhaité $qry = tep_db_query("select products_id, products_price from ".TABLE_PRODUCTS." where products_tax_class_id ='$tax_55_id'"); $count = 0; if ($tax_70_id != 0 && $tax_70_id != $tax_55_id){ while ($res = tep_db_fetch_array($qry)){ $ttc = $res['products_price'] * 1.055; $new_ht = round($ttc / 1.07 , 4); // arrondi à 4 décimales pour ajuster au mieux tep_db_query("update ".TABLE_PRODUCTS." set products_price = '$new_ht', products_price_ttc = '$ttc', products_tax_class_id = '$tax_70_id' where products_id = ".(int)$res['products_id']." "); $count++; } } $time_end = date('H:i:s'); echo "Début $time_start <br> Fin $time_end <br> $count prix mis à jour."; require(DIR_WS_INCLUDES . 'application_bottom.php'); Quelques précautions tout de même : ce script qui balaye toute la table products n'est pas très rapide. on peut surement optimiser ce code en ne faisant qu'une requête par exemple mais je n'ai pas pris le temps de me creuser la tête pour ça, car c'est une requête assez complexe faisant une mise à jour en direct dans mysql Sur ma machine en local et une base de 3000 produits, ce script a mis 3 minutes. Mais ma machine n'est pas un serveur en ligne sous Linux et sous Win, le serveur local n'est pas des plus véloces. On peut donc espérer un traitement 4 à 5 fois plus rapide en ligne sur un hébergement musclé. Cependant, si le serveur menace de couper à cause d'un max time exec trop court il vaut mieux ajouter une interruption avant. Dans la mesure ou ce script effectue une modification de l'index de taxe, il ne prend en compte que les produits dont le taux est à 5.5, il suffit alors d'ajouter dans la boucle while de mise à jour un exit soit tous les 500 enregistrements soit au bout de x secondes. puis on relance le script autant de fois que nécessaire. Après on peut faire la même chose avec la TVA à 19.6 si elle est appelée à changer (sur certains produits ça va arriver) suffira d'adapter ce script. -------------------- Tout d'abord : - Ni Hotline ni Service Après Vente, ces forums sont un lieu d'échange. BIEN POSER SA QUESTION (généralités)
Les "Informations Importantes" que vous devez ABSOLUMENT avoir lues : Règlement, Bien poser sa question dans ces forums et Bien utiliser les Forums. Les raccourcis pour gagner du temps : la FAQ, les PDF de la Doc (MS2-fr): PDF-V1 et PDF-V2, le moteur de Recherche sur les forums , la Liste des Contributions de Corbin. ----------------------------- Quelques sites de référence --------------------------- PHP: Le site du Zéro et PHP Débutant avec la DOC en français -- HTML: Self HTML - WebProgrammation -- CSS: OpenWeb - AlsaCréations - CSS/Edge -- Autres ressources: - XajaX - highslide js Les bons outils : EasyPHP - WAMP-5 - - Notepad++ - Firefox et son extension WebDeveloper Le gène idéal c'est le gène original. Le génie des halles est un Génie des Alpages qui tente d'être à la page. (Merci f'murrr pour les cours de philosophie de chien) |
|
14 Jan 2012, 19:48
Message
#4
|
|
Ceinture blanche+ OSC Groupe : Membres Messages : 34 Inscrit : 3-December 04 Membre no 3972 |
merci pour ton aide, je vais essayer
|
|
Version bas débit | Nous sommes le : 28th March 2024 - 09:02 |
Ce site est déclaré auprès de la commision Nationale de l'Informatique et des Libertés (déclaration n°: 1043896) |