Jump to content

Augmentation de la TVA au 1er janvier 2014


chloe45

Recommended Posts

Bonjour à tous,

J'aimerais ouvrir un post sur la futur augmentation de la TVA au 1er janvier 2014 afin de mieux palier à certains bug en avance avant cette date.

Je viens de faire le test sur une boutique, en modifiant le taux de tva de 19,6% à 20% dans le back office tout va bien apparemment.

Maintenant mes prix sont tous augmenté sur ma boutique, exemple un produit à 6,90€ vient de passer à 6,92 euros avec la taxe à 20%

J'ai dans ma boutique environ 3000 produits.

Le problème c'est que 6,90 euros c'est pour mes clients un prix psychologique et ce n'est pas pensable d'avoir un 6,92 euros

Donc à mon avis, mon entreprise va subir cette augmentation que nous n'allons pas répercuter sur le client (sauf pour certains articles)
J'aimerais donc savoir si il est possible de conserver mes prix actuel mais en modifiant tout de même la tva ?

Si ce n'est pas possible je vais devoir tout modifier à la main ? (ou avec un gros module très connu mais qui coute aussi assez chers?)

Si vous avez des pistes , d'avance merci !

Edited by chloe45 (see edit history)
Link to comment
Share on other sites

Bonjour Chloe45,

 

En effet ce comportement est celui par défaut de Presta.

 

En fait, les prix sont stockés en HT dans la base de données. C'est la raison pour laquelle lorsque l'on modifie la TVA, il garde toujours le même prix HT mais modifie le prix TTC. Tu as une solution qui peut être intéressante si tu connais un petit peu MySQL.

 

19,6/20 = 0,9966667

Tu multiplies tes prix HT par 0,9966667 avec une requête SQL et le tour est joué ! (il faudra ensuite simplement modifier la TVA 19,6% e 20% dans le back de Presta).

Edited by cadeaumaestro (see edit history)
Link to comment
Share on other sites

Bonjour,

 

Prestapricing te permet de corriger simplement les prix pour les arrondir en prix psychologique. Le module n'est pas trop chère 85 €. Fais un tour sur le site du dev sitolog.com

 

En plus cela pourra servir dans la gestion au quotidien.

Link to comment
Share on other sites

Bonjour,

 

Prestapricing te permet de corriger simplement les prix pour les arrondir en prix psychologique. Le module n'est pas trop chère 85 €. Fais un tour sur le site du dev sitolog.com

 

En plus cela pourra servir dans la gestion au quotidien.

 

Effectivement avec prestapricing c'est parfait !

Link to comment
Share on other sites

  • 2 months later...
  • 2 weeks later...

Si ca ne pose pas de probleme ca en 1 clic c'est fait dans le BO

Le soucis c'est que les prix vont du coup changer exemple un produit de 10 euros ttc va passer à 10,03€ ttc avec la tva à 20%

 

La solution c'est d'utiliser un module de gestion en masse de prix

Link to comment
Share on other sites

A priori voici la requête a effectuer:

 

Vérification

SELECT price,price*0.9966667 new_price FROM ps_product;

Action

Update ps_product set price=price*0.9966667;

Attention c'est donné sans garanti hein pensez à faire une sauvegarde au moins de votre table :)

 

Bon réveillon !

Link to comment
Share on other sites

Je pense que la meilleure solution serais de mttren place un cron qui mette à jour le taux de TVA le 01/01/14 à 00h01.

Dans mon cas de conserver mon TTC identique et modifier que le HT
Donc mon cron à pour tache de
1- Faire un sauvegarde de ma base

    mysqldump -u DB_user --password=DB_pass  -h DB_host DB_prod | \ mysql -u DB_user --password=DB_pass -h DB_host DB_beta

2- Modifier tous les prix HT
 ==> Nouveau HT = HT*1.196/1.2

   update `ps_product` set `price` = `price`* 1.196/1.2;
    update `ps_product_shop` set `price` = `price`* 1.196/1.2;
    update `ps_product_attribute` set `price` = `price`* 1.196/1.2;
    update `ps_product_attribute_shop` set `price` = `price`* 1.196/1.2;

3- Modifier le Taux

  update `ps_tax` set `rate` = 20 WHERE `rate` = 19.6;
  update `ps_tax_lang` set `name` = 'TVA FR 20%' WHERE `name` = 'TVA FR 19.6%';
  update `ps_tax_rules_group` set `name` = 'FR Taux standard (20%)' WHERE `name` = 'FR Taux standard (19.6%)';

  update `ps_tax` set `rate` = 10 WHERE `rate` = 7;
  update `ps_tax_lang` set `name` = 'TVA FR 10%' WHERE `name` = 'TVA FR 7%';
  update `ps_tax_rules_group` set `name` = 'FR Taux réduit (10%)' WHERE `name` = 'FR Taux réduit (7%)';

  update `ps_tax` set `rate` = 5 WHERE `rate` = 5.5;
  update `ps_tax_lang` set `name` = 'TVA FR 5%' WHERE `name` = 'TVA FR 5.5%';
  update `ps_tax_rules_group` set `name` = 'FR Taux réduit (5%)' WHERE `name` = 'FR Taux réduit (5.5%)';

Attention:

la solution :

price=price*0.9966667;

ou

price=price*1.196/1.2;

n'est correct que pour les produits dont tx passe de 19.6 à 20%

 

donc attention si vous avez des produits à 7=10%, ou 5.5=>5%

Edited by jd440 (see edit history)
  • Like 1
Link to comment
Share on other sites

Il y a plusieurs partit

 

Le cron, ou la tache programmé c'est à voir du coté de ton hebergeur.

 

Après il faut voir ce que tu programme

La première partit (backup) peut se faire directement en ligne de commande.

 

Pour la partit de mise à jour des prix et taux, Il fraudrait programmer quelque choses

 

Je suis entrain de plancher dessus.

Link to comment
Share on other sites

Et voici mon bout de code;

Si quelqu'un a des amélioration hésitez pas:

<?php
error_reporting(E_ALL); 
include(dirname(__FILE__).'/../../config/config.inc.php');
require_once(dirname(__FILE__).'/../../init.php');

if (!Configuration::get('NEWRATE_RESTORE'))
	echo "t1";
		// Generer Security Token si il n'existe pas
		if (!Configuration::get('NEWR_SECURITY_TOKEN'))
			Configuration::updateValue('NEWR_SECURITY_TOKEN', Tools::passwdGen(30));

		//Vérifier Security Token
		if (Tools::getValue('security') == Configuration::get('NEWR_SECURITY_TOKEN'))
		{
			$action = ((Tools::getValue('action')) ? (Tools::getValue('action')) : '');
			if ($action !=''){
				$multiple = '(1.196/1.2)';

				if (($action == 'nvxtx')&&(!Configuration::get('NEWRATE_UPDATE'))) {
					echo "update";
					$multiple = '*'.$multiple;
					$nvxtx1 = 20;
					$nvxtx2 = 10;
					//$nvxtx3 = 5;
					$oldtx1 = 19.6;
					$oldtx2 = 7;
					//$oldtx3 = 5.5;
				} elseif (( $action == 'restoretx')&&(!Configuration::get('NEWRATE_RESTORE'))) {
					echo "restore";
					$multiple = '/'.$multiple;	
					$nvxtx1 = 19.6;
					$nvxtx2 = 7;
					//$nvxtx3 = 5.5;
					$oldtx1 = 20;
					$oldtx2 = 10;
					//$oldtx3 = 5;
				}
                    $sql = '
                        update `'._DB_PREFIX_.'product` set `price` = `price`'.$multiple.';
                        update `'._DB_PREFIX_.'product_shop` set `price` = `price`'.$multiple.';
                        update `'._DB_PREFIX_.'product_attribute` set `price` = `price`'.$multiple.';
                        update `'._DB_PREFIX_.'product_attribute_shop` set `price` = `price`'.$multiple.';
                        update `'._DB_PREFIX_.'tax` set `rate` = '.$nvxtx1.' WHERE `rate` = '.$oldtx1.';
                        update `'._DB_PREFIX_.'tax_lang` set `name` = \'TVA FR '.$nvxtx1.'%\' WHERE `name` = \'TVA FR '.$oldtx1.'%\';
                        update `'._DB_PREFIX_.'tax_rules_group` set `name` = \'FR Taux standard ('.$nvxtx1.'%)\' WHERE `name` = \'FR Taux standard ('.$oldtx1.'%)\';
                        update `'._DB_PREFIX_.'tax` set `rate` = '.$nvxtx2.' WHERE `rate` = '.$oldtx2.';
                        update `'._DB_PREFIX_.'tax_lang` set `name` = \'TVA FR '.$nvxtx2.'%\' WHERE `name` = \'TVA FR '.$oldtx2.'%\';
                        update `'._DB_PREFIX_.'tax_rules_group` set `name` = \'FR Taux réduit ('.$nvxtx2.'%)\' WHERE `name` = \'FR Taux réduit ('.$oldtx2.'%)\';';
/*
                    $sql = '
                        update `'._DB_PREFIX_.'tax` set `rate` = '.$nvxtx3.' WHERE `rate` = '.$oldtx3.';
                        update `'._DB_PREFIX_.'tax_lang` set `name` = \'TVA FR '.$nvxtx3.'%\' WHERE `name` = \'TVA FR '.$oldtx3.'%\';
                        update `'._DB_PREFIX_.'tax_rules_group` set `name` = \'FR Taux réduit ('.$nvxtx3.'%)\' WHERE `name` = \'FR Taux réduit ('.$oldtx3.'%)\';
                        ';
*/                   

					
				if (($action == 'nvxtx')&&(!Configuration::get('NEWRATE_UPDATE'))) {
					echo "update";
					
					Db::getInstance()->ExecuteS($sql);
					Configuration::updateValue('NEWRATE_UPDATE', date("dmy-His"));
					// Suppression d'une clé
					Configuration::deleteByName('NEWRATE_RESTORE');
				} elseif (( $action == 'restoretx')&&(!Configuration::get('NEWRATE_RESTORE'))) {
					echo "restore";
					
					Db::getInstance()->ExecuteS($sql);
					Configuration::updateValue('NEWRATE_RESTORE', date("dmy-His"));
					// Suppression d'une clé
					Configuration::deleteByName('NEWRATE_UPDATE');
				} elseif ( $action == 'backupquantity') {
					$sql = "SELECT 
							  pss.`id_product` , 
							  ps.`reference`,
							  st.`id_product_attribute`, st.`id_shop`, st.`id_shop_group`, st.`quantity`, st.`depends_on_stock`, st.`out_of_stock`, psl.`name`
							FROM 
							  `ps_product` ps,
							  `ps_product_shop` pss, 
							  `ps_product_lang` psl, 
							  `ps_stock_available` st
							WHERE 
							  ps.`id_product` = pss.`id_product`
							  AND  pss.`id_product` = psl.`id_product`
							  AND  ps.`id_product` = st.`id_product`
							AND  pss.`id_shop` = psl.`id_shop`
							AND  pss.`id_shop` = st.`id_shop`
							AND psl.`id_lang` =5";
					if ($list = Db::getInstance()->ExecuteS($sql))
					{
						$file_name = _PS_MODULE_DIR_.'updatetaxrate/backup/file'.date("dmy-His").'.csv';
						$fp = fopen($file_name, 'w');
						foreach ($list as $fields) {
						    fputcsv($fp, $fields);
						}

						fclose($fp);
					}
				}
				echo "stop";
				
		}
	} else { echo "OUST!!!!";}


Edited by jd440 (see edit history)
Link to comment
Share on other sites

Je pense que la meilleure solution serais de mttren place un cron qui mette à jour le taux de TVA le 01/01/14 à 00h01.

 

Dans mon cas de conserver mon TTC identique et modifier que le HT

Donc mon cron à pour tache de

1- Faire un sauvegarde de ma base

    mysqldump -u DB_user --password=DB_pass  -h DB_host DB_prod | \ mysql -u DB_user --password=DB_pass -h DB_host DB_beta

2- Modifier tous les prix HT

 ==> Nouveau HT = HT*1.196/1.2

   update `ps_product` set `price` = `price`* 1.196/1.2;
    update `ps_product_shop` set `price` = `price`* 1.196/1.2;
    update `ps_product_attribute` set `price` = `price`* 1.196/1.2;
    update `ps_product_attribute_shop` set `price` = `price`* 1.196/1.2;

3- Modifier le Taux

  update `ps_tax` set `rate` = 20 WHERE `rate` = 19.6;
  update `ps_tax_lang` set `name` = 'TVA FR 20%' WHERE `name` = 'TVA FR 19.6%';
  update `ps_tax_rules_group` set `name` = 'FR Taux standard (20%)' WHERE `name` = 'FR Taux standard (19.6%)';

  update `ps_tax` set `rate` = 10 WHERE `rate` = 7;
  update `ps_tax_lang` set `name` = 'TVA FR 10%' WHERE `name` = 'TVA FR 7%';
  update `ps_tax_rules_group` set `name` = 'FR Taux réduit (10%)' WHERE `name` = 'FR Taux réduit (7%)';

  update `ps_tax` set `rate` = 5 WHERE `rate` = 5.5;
  update `ps_tax_lang` set `name` = 'TVA FR 5%' WHERE `name` = 'TVA FR 5.5%';
  update `ps_tax_rules_group` set `name` = 'FR Taux réduit (5%)' WHERE `name` = 'FR Taux réduit (5.5%)';

Attention:

la solution :

price=price*0.9966667;

ou

price=price*1.196/1.2;

n'est correct que pour les produits dont tx passe de 19.6 à 20%

 

donc attention si vous avez des produits à 7=10%, ou 5.5=>5%

 

 

Je pense que cette solution est la plus simple, et correcte.

  • Like 1
Link to comment
Share on other sites

salut,

 

Pour eviter de baisser le prix des produits à TVA 5.5, il serait préférable d'ajouter uen clause where sur la colonne "id_tax_rules_group" non ?

une truc du genre :

 

   update `ps_product` where id_tax_rules_group=1 set `price` = `price`* 1.196/1.2;
    update `ps_product_shop` where id_tax_rules_group=1 set `price` = `price`* 1.196/1.2;
    update `ps_product_attribute` where id_tax_rules_group=1 set `price` = `price`* 1.196/1.2;
    update `ps_product_attribute_shop` where id_tax_rules_group=1 set `price` = `price`* 1.196/1.2;

 

si id_tax_rules_group correspond bien à votre id de tax correspond à la tva 19.6 :)

Link to comment
Share on other sites

Je pense que la meilleure solution serais de mttren place un cron qui mette à jour le taux de TVA le 01/01/14 à 00h01.

 

Dans mon cas de conserver mon TTC identique et modifier que le HT

Donc mon cron à pour tache de

1- Faire un sauvegarde de ma base

    mysqldump -u DB_user --password=DB_pass  -h DB_host DB_prod | \ mysql -u DB_user --password=DB_pass -h DB_host DB_beta

2- Modifier tous les prix HT

 ==> Nouveau HT = HT*1.196/1.2

   update `ps_product` set `price` = `price`* 1.196/1.2;
    update `ps_product_shop` set `price` = `price`* 1.196/1.2;
    update `ps_product_attribute` set `price` = `price`* 1.196/1.2;
    update `ps_product_attribute_shop` set `price` = `price`* 1.196/1.2;

3- Modifier le Taux

  update `ps_tax` set `rate` = 20 WHERE `rate` = 19.6;
  update `ps_tax_lang` set `name` = 'TVA FR 20%' WHERE `name` = 'TVA FR 19.6%';
  update `ps_tax_rules_group` set `name` = 'FR Taux standard (20%)' WHERE `name` = 'FR Taux standard (19.6%)';

  update `ps_tax` set `rate` = 10 WHERE `rate` = 7;
  update `ps_tax_lang` set `name` = 'TVA FR 10%' WHERE `name` = 'TVA FR 7%';
  update `ps_tax_rules_group` set `name` = 'FR Taux réduit (10%)' WHERE `name` = 'FR Taux réduit (7%)';

  update `ps_tax` set `rate` = 5 WHERE `rate` = 5.5;
  update `ps_tax_lang` set `name` = 'TVA FR 5%' WHERE `name` = 'TVA FR 5.5%';
  update `ps_tax_rules_group` set `name` = 'FR Taux réduit (5%)' WHERE `name` = 'FR Taux réduit (5.5%)';

Attention:

la solution :

price=price*0.9966667;

ou

price=price*1.196/1.2;

n'est correct que pour les produits dont tx passe de 19.6 à 20%

 

donc attention si vous avez des produits à 7=10%, ou 5.5=>5%

 

D'accord mais comment créer ce cron. Que doit ont faire avec sa ? ou le mettre ?

Link to comment
Share on other sites

Bonjour à tous.

 

Concernant le script le jd440 il y a un truc qui m'embête un peu pour ma part. Il modifie la taxe actuelle de 19.6% pour la passer à 20% Cela risque de poser un soucis pour tous les produits ayant été achetés avec cette taxe mais qui étaient avant à 19.6% (soucis d'affichage uniquement pas de calcul).

 

Je pense qu'il vaut mieux créer un nouveau taux de TVA à 20% dans le BO, une nouvelle règles de taxe s'appliquant à ce taux, et ensuite modifier l'id_tax_rules_group de tous les produit et attributs concernés. Ainsi au niveau de l'historique des achats la taxe restera présente. Pas besoin donc de touché à l'update des tables tax.

 

 

 

Mais sinon le script devrait fonctionner :)

Edited by IllicoPresta (see edit history)
  • Like 1
Link to comment
Share on other sites

Merci pour ce retour,

 

Je vais ameliorer le script de ce sens.

1- Ameliorer la mise a jour des prix en fonction de  comme le proposait @hphilg
http://www.prestashop.com/forums/topic/269407-augmentation-de-la-tva-au-1er-janvier-2014/page-2?do=findComment&comment=1481226

2- créer des nouvelles taxes correspondaux nouveaux taux, et mettre jour id_tax_group des produits en conséquences.


Je pense qu'il vaut mieux créer un nouveau taux de TVA à 20% dans le BO, une nouvelle règles de taxe s'appliquant à ce taux, et ensuite modifier l'id_tax_rules_group de tous les produit et attributs concernés. Ainsi au niveau de l'historique des achats la taxe restera présente. Pas besoin donc de touché à l'update des tables tax.

 

 

 

Mais sinon le script devrait fonctionner :)

Link to comment
Share on other sites

Et voici:

<?php
error_reporting(E_ALL);
include(dirname(__FILE__).'/../../config/config.inc.php');
require_once(dirname(__FILE__).'/../../init.php');

if (!Configuration::get('NEWRATE_RESTORE'))
    echo "t1";
        // Generer Security Token si il n'existe pas
        if (!Configuration::get('NEWR_SECURITY_TOKEN'))
            Configuration::updateValue('NEWR_SECURITY_TOKEN', Tools::passwdGen(30));

        //Vérifier Security Token
        if (Tools::getValue('security') == Configuration::get('NEWR_SECURITY_TOKEN'))
        {
            $action = ((Tools::getValue('action')) ? (Tools::getValue('action')) : '');
            if ($action !=''){
                $multiple = '(1.196/1.2)';
                $multiple2 = '(1.7/1.1)';

                if (($action == 'nvxtx')&&(!Configuration::get('NEWRATE_UPDATE'))) {
                    echo "update";
                    $multiple = '*'.$multiple;
                    $multiple2 = '*'.$multiple2;
                    $nvxtx1 = 20;
                    $nvxtx2 = 10;
                    $nvxtx3 = 5;
                    $oldtx1 = 19.6;
                    $oldtx2 = 7;
                    $oldtx3 = 5.5;
                    $sql = '
                    update `'._DB_PREFIX_.'product` set `price` = `price`'.$multiple.'  where `id_tax_rules_group`=1;
                    update `'._DB_PREFIX_.'product` set `id_tax_rules_group`=5 where `id_tax_rules_group`=1;
                    update `'._DB_PREFIX_.'product_shop` set `price` = `price`'.$multiple.'  where `id_tax_rules_group`=1;
                    update `'._DB_PREFIX_.'product_shop` set `id_tax_rules_group`=5 where `id_tax_rules_group`=1;
                    update `'._DB_PREFIX_.'tax_rule` set `id_tax` = 5 WHERE `id_tax` = 1;
                    
                    update `'._DB_PREFIX_.'product` set `price` = `price`'.$multiple2.' where `id_tax_rules_group`=2;
                    update `'._DB_PREFIX_.'product` set `id_tax_rules_group`=6 where `id_tax_rules_group`=2;
                    update `'._DB_PREFIX_.'product_shop` set `price` = `price`'.$multiple2.' where `id_tax_rules_group`=2;
                    update `'._DB_PREFIX_.'product_shop` set `id_tax_rules_group`=6 where `id_tax_rules_group`=2;
                    update `'._DB_PREFIX_.'tax_rule` set `id_tax` = 6 WHERE `id_tax` = 2;

                    INSERT INTO `'._DB_PREFIX_.'tax` (`id_tax`, `rate`, `active`, `deleted`) VALUES (\'5\', \'20\', \'1\', \'0\');
                    INSERT INTO `'._DB_PREFIX_.'tax` (`id_tax`, `rate`, `active`, `deleted`) VALUES (\'6\', \'10\', \'1\', \'0\');
                    INSERT INTO `'._DB_PREFIX_.'tax_lang` (`id_tax` ,`id_lang` ,`name`)VALUES (\'5\', \'5\', \'TVA FR 20%\');
                    INSERT INTO `'._DB_PREFIX_.'tax_lang` (`id_tax` ,`id_lang` ,`name`)VALUES (\'6\', \'5\', \'TVA FR 10%\');
                    INSERT INTO `'._DB_PREFIX_.'tax_rules_group` (`id_tax_rules_group`, `name`, `active`) VALUES (\'5\', \'FR Taux standard (20%)\', \'1\');
                    INSERT INTO `'._DB_PREFIX_.'tax_rules_group` (`id_tax_rules_group`, `name`, `active`) VALUES (\'6\', \'FR Taux standard (10%)\', \'1\');
                    update `'._DB_PREFIX_.'tax_rules_group_shop` set `id_tax_rules_group` = 5 WHERE `id_tax_rules_group` = 1;
                    update `'._DB_PREFIX_.'tax_rules_group_shop` set `id_tax_rules_group` = 6 WHERE `id_tax_rules_group` = 2;
                    update `'._DB_PREFIX_.'carrier_tax_rules_group_shop` set `id_tax_rules_group` = 5 WHERE `id_tax_rules_group` = 1;
                    update `'._DB_PREFIX_.'carrier_tax_rules_group_shop` set `id_tax_rules_group` = 6 WHERE `id_tax_rules_group` = 2;
                    update `'._DB_PREFIX_.'tax_rule` set `id_tax_rules_group` = 5 WHERE `id_tax_rules_group` = 1;
                    update `'._DB_PREFIX_.'tax_rule` set `id_tax_rules_group` = 6 WHERE `id_tax_rules_group` = 2;';
                    echo "<hr/> ".$sql;                        

                } elseif (( $action == 'restoretx')&&(!Configuration::get('NEWRATE_RESTORE'))) {
                    echo "restore";
                    $multiple = '/'.$multiple;    
                    $multiple2 = '/'.$multiple2;    
                    $nvxtx1 = 19.6;
                    $nvxtx2 = 7;
                    $nvxtx3 = 5.5;
                    $oldtx1 = 20;
                    $oldtx2 = 10;
                    $oldtx3 = 5;
                    $sql = '
                    update `'._DB_PREFIX_.'product` set `price` = `price`'.$multiple.'  where `id_tax_rules_group`=5;
                    update `'._DB_PREFIX_.'product` set `id_tax_rules_group`=1 where `id_tax_rules_group`=5;
                    update `'._DB_PREFIX_.'product_shop` set `price` = `price`'.$multiple.'  where `id_tax_rules_group`=5;
                    update `'._DB_PREFIX_.'product_shop` set `id_tax_rules_group`=1 where `id_tax_rules_group`=5;
                    update `'._DB_PREFIX_.'tax_rule` set `id_tax` = 1 WHERE `id_tax` = 5;
                    
                    update `'._DB_PREFIX_.'product` set `price` = `price`'.$multiple2.' where `id_tax_rules_group`=6;
                    update `'._DB_PREFIX_.'product` set `id_tax_rules_group`=2 where `id_tax_rules_group`=6;
                    update `'._DB_PREFIX_.'product_shop` set `price` = `price`'.$multiple2.' where `id_tax_rules_group`=6;
                    update `'._DB_PREFIX_.'product_shop` set `id_tax_rules_group`=2 where `id_tax_rules_group`=6;
                    update `'._DB_PREFIX_.'tax_rule` set `id_tax` = 2 WHERE `id_tax` = 6;

                    DELETE FROM `'._DB_PREFIX_.'tax` WHERE `id_tax` =5;
                    DELETE FROM `'._DB_PREFIX_.'tax` WHERE `id_tax`=6;
                    DELETE FROM `'._DB_PREFIX_.'tax_lang` WHERE `id_tax` = 5;
                    DELETE FROM `'._DB_PREFIX_.'tax_lang` WHERE `id_tax`  =6;
                    DELETE FROM `'._DB_PREFIX_.'tax_rules_group` WHERE `id_tax_rules_group` = 5;
                    DELETE FROM `'._DB_PREFIX_.'tax_rules_group` WHERE `id_tax_rules_group` = 6;

                    update `'._DB_PREFIX_.'tax_rules_group_shop` set `id_tax_rules_group` = 1 WHERE `id_tax_rules_group` = 5;
                    update `'._DB_PREFIX_.'tax_rules_group_shop` set `id_tax_rules_group` = 2 WHERE `id_tax_rules_group` = 6;
                    update `'._DB_PREFIX_.'carrier_tax_rules_group_shop` set `id_tax_rules_group` = 1 WHERE `id_tax_rules_group` = 5;
                    update `'._DB_PREFIX_.'carrier_tax_rules_group_shop` set `id_tax_rules_group` = 2 WHERE `id_tax_rules_group` = 6;
                    update `'._DB_PREFIX_.'tax_rule` set `id_tax_rules_group` = 1 WHERE `id_tax_rules_group` = 5;
                    update `'._DB_PREFIX_.'tax_rule` set `id_tax_rules_group` = 2 WHERE `id_tax_rules_group` = 6;';
                    echo $sql;
                }

				if (($action == 'nvxtx')&&(!Configuration::get('NEWRATE_UPDATE'))) {
					echo "update";
					Db::getInstance()->ExecuteS($sql);
					Configuration::updateValue('NEWRATE_UPDATE', date("dmy-His"));
					// Suppression d'une clé
					Configuration::deleteByName('NEWRATE_RESTORE');
				} elseif (( $action == 'restoretx')&&(!Configuration::get('NEWRATE_RESTORE'))) {
					echo "restore";
					
					Db::getInstance()->ExecuteS($sql);
					Configuration::updateValue('NEWRATE_RESTORE', date("dmy-His"));
					// Suppression d'une clé
					Configuration::deleteByName('NEWRATE_UPDATE');
				} elseif ( $action == 'backupquantity') {
					$sql = "SELECT 
							  pss.`id_product` , 
							  ps.`reference`,
							  st.`id_product_attribute`, st.`id_shop`, st.`id_shop_group`, st.`quantity`, st.`depends_on_stock`, st.`out_of_stock`, psl.`name`
							FROM 
							  `ps_product` ps,
							  `ps_product_shop` pss, 
							  `ps_product_lang` psl, 
							  `ps_stock_available` st
							WHERE 
							  ps.`id_product` = pss.`id_product`
							  AND  pss.`id_product` = psl.`id_product`
							  AND  ps.`id_product` = st.`id_product`
							AND  pss.`id_shop` = psl.`id_shop`
							AND  pss.`id_shop` = st.`id_shop`
							AND psl.`id_lang` =5";
					if ($list = Db::getInstance()->ExecuteS($sql))
					{
						$file_name = _PS_MODULE_DIR_.'updatetaxrate/backup/file'.date("dmy-His").'.csv';
						$fp = fopen($file_name, 'w');
						foreach ($list as $fields) {
						    fputcsv($fp, $fields);
						}

						fclose($fp);
					}
				}
				echo "stop";
				
		}
	} else { echo "OUST!!!!";}


Edited by jd440 (see edit history)
Link to comment
Share on other sites

Si je puis me permettre,, il faut changer le prix et l'id de TVA en même temps... dans la même requête (single commit). Si pour une raison quelconque quelque chose ne se passe pas comme prévu vous terminez avec un base de données qui n'est plus intègre...

  • Like 1
Link to comment
Share on other sites

merci @doekia

C'est corrigé

<?php
error_reporting(E_ALL); 
include(dirname(__FILE__).'/../../config/config.inc.php');
require_once(dirname(__FILE__).'/../../init.php');

if (!Configuration::get('NEWRATE_RESTORE'))
	echo "t1";
		// Generer Security Token si il n'existe pas
		if (!Configuration::get('NEWR_SECURITY_TOKEN'))
			Configuration::updateValue('NEWR_SECURITY_TOKEN', Tools::passwdGen(30));

		//Vérifier Security Token
		if (Tools::getValue('security') == Configuration::get('NEWR_SECURITY_TOKEN'))
		{
			$action = ((Tools::getValue('action')) ? (Tools::getValue('action')) : '');
			if ($action !=''){
				$multiple = '(1.196/1.2)';
				$multiple2 = '(1.07/1.1)';

				if (($action == 'nvxtx')&&(!Configuration::get('NEWRATE_UPDATE'))) {
					echo "update";
					$multiple = '*'.$multiple;
					$multiple2 = '*'.$multiple2;
					$nvxtx1 = 20;
					$nvxtx2 = 10;
					$oldtx1 = 19.6;
					$oldtx2 = 7;
					$sql = '
					update `'._DB_PREFIX_.'product` set `price` = `price`'.$multiple.', `id_tax_rules_group`=5 where `id_tax_rules_group`=1;
					update `'._DB_PREFIX_.'product_shop` set `price` = `price`'.$multiple.', `id_tax_rules_group`=5 where `id_tax_rules_group`=1;
					update `'._DB_PREFIX_.'tax_rule` set `id_tax` = 5 WHERE `id_tax` = 1;
					
					update `'._DB_PREFIX_.'product` set `price` = `price`'.$multiple2.', `id_tax_rules_group`=6 where `id_tax_rules_group`=2;
					update `'._DB_PREFIX_.'product_shop` set `price` = `price`'.$multiple2.', `id_tax_rules_group`=6 where `id_tax_rules_group`=2;
					update `'._DB_PREFIX_.'tax_rule` set `id_tax` = 6 WHERE `id_tax` = 2;

					INSERT INTO `'._DB_PREFIX_.'tax` (`id_tax`, `rate`, `active`, `deleted`) VALUES (\'5\', \'20\', \'1\', \'0\');
					INSERT INTO `'._DB_PREFIX_.'tax` (`id_tax`, `rate`, `active`, `deleted`) VALUES (\'6\', \'10\', \'1\', \'0\');
					INSERT INTO `'._DB_PREFIX_.'tax_lang` (`id_tax` ,`id_lang` ,`name`)VALUES (\'5\', \'5\', \'TVA FR 20%\');
					INSERT INTO `'._DB_PREFIX_.'tax_lang` (`id_tax` ,`id_lang` ,`name`)VALUES (\'6\', \'5\', \'TVA FR 10%\');
					INSERT INTO `'._DB_PREFIX_.'tax_rules_group` (`id_tax_rules_group`, `name`, `active`) VALUES (\'5\', \'FR Taux standard (20%)\', \'1\');
					INSERT INTO `'._DB_PREFIX_.'tax_rules_group` (`id_tax_rules_group`, `name`, `active`) VALUES (\'6\', \'FR Taux standard (10%)\', \'1\');
					update `'._DB_PREFIX_.'tax_rules_group_shop` set `id_tax_rules_group` = 5 WHERE `id_tax_rules_group` = 1;
					update `'._DB_PREFIX_.'tax_rules_group_shop` set `id_tax_rules_group` = 6 WHERE `id_tax_rules_group` = 2;
					update `'._DB_PREFIX_.'carrier_tax_rules_group_shop` set `id_tax_rules_group` = 5 WHERE `id_tax_rules_group` = 1;
					update `'._DB_PREFIX_.'carrier_tax_rules_group_shop` set `id_tax_rules_group` = 6 WHERE `id_tax_rules_group` = 2;
					update `'._DB_PREFIX_.'tax_rule` set `id_tax_rules_group` = 5 WHERE `id_tax_rules_group` = 1;
					update `'._DB_PREFIX_.'tax_rule` set `id_tax_rules_group` = 6 WHERE `id_tax_rules_group` = 2;';
					echo "<hr/> ".$sql;						

				} elseif (( $action == 'restoretx')&&(!Configuration::get('NEWRATE_RESTORE'))) {
					echo "restore";
					$multiple = '/'.$multiple;	
					$multiple2 = '/'.$multiple2;	
					$nvxtx1 = 19.6;
					$nvxtx2 = 7;
					$oldtx1 = 20;
					$oldtx2 = 10;
					$sql = '
					update `'._DB_PREFIX_.'product` set `price` = `price`'.$multiple.', `id_tax_rules_group`=1 where `id_tax_rules_group`=5;
					update `'._DB_PREFIX_.'product_shop` set `price` = `price`'.$multiple.', `id_tax_rules_group`=1 where `id_tax_rules_group`=5;
					update `'._DB_PREFIX_.'tax_rule` set `id_tax` = 1 WHERE `id_tax` = 5;
					
					update `'._DB_PREFIX_.'product` set `price` = `price`'.$multiple2.', `id_tax_rules_group`=2 where `id_tax_rules_group`=6;
					update `'._DB_PREFIX_.'product_shop` set `price` = `price`'.$multiple2.', `id_tax_rules_group`=2 where `id_tax_rules_group`=6;
					update `'._DB_PREFIX_.'tax_rule` set `id_tax` = 2 WHERE `id_tax` = 6;

					DELETE FROM `'._DB_PREFIX_.'tax` WHERE `id_tax` =5;
					DELETE FROM `'._DB_PREFIX_.'tax` WHERE `id_tax`=6;
					DELETE FROM `'._DB_PREFIX_.'tax_lang` WHERE `id_tax` = 5;
					DELETE FROM `'._DB_PREFIX_.'tax_lang` WHERE `id_tax`  =6;
					DELETE FROM `'._DB_PREFIX_.'tax_rules_group` WHERE `id_tax_rules_group` = 5;
					DELETE FROM `'._DB_PREFIX_.'tax_rules_group` WHERE `id_tax_rules_group` = 6;

					update `'._DB_PREFIX_.'tax_rules_group_shop` set `id_tax_rules_group` = 1 WHERE `id_tax_rules_group` = 5;
					update `'._DB_PREFIX_.'tax_rules_group_shop` set `id_tax_rules_group` = 2 WHERE `id_tax_rules_group` = 6;
					update `'._DB_PREFIX_.'carrier_tax_rules_group_shop` set `id_tax_rules_group` = 1 WHERE `id_tax_rules_group` = 5;
					update `'._DB_PREFIX_.'carrier_tax_rules_group_shop` set `id_tax_rules_group` = 2 WHERE `id_tax_rules_group` = 6;
					update `'._DB_PREFIX_.'tax_rule` set `id_tax_rules_group` = 1 WHERE `id_tax_rules_group` = 5;
					update `'._DB_PREFIX_.'tax_rule` set `id_tax_rules_group` = 2 WHERE `id_tax_rules_group` = 6;';
					echo $sql; 
				}

				if (($action == 'nvxtx')&&(!Configuration::get('NEWRATE_UPDATE'))) {
					echo "update";
					Db::getInstance()->ExecuteS($sql);
					Configuration::updateValue('NEWRATE_UPDATE', date("dmy-His"));
					// Suppression d'une clé
					Configuration::deleteByName('NEWRATE_RESTORE');
				} elseif (( $action == 'restoretx')&&(!Configuration::get('NEWRATE_RESTORE'))) {
					echo "restore";
					
					Db::getInstance()->ExecuteS($sql);
					Configuration::updateValue('NEWRATE_RESTORE', date("dmy-His"));
					// Suppression d'une clé
					Configuration::deleteByName('NEWRATE_UPDATE');
				} elseif ( $action == 'backupquantity') {
					$sql = "SELECT 
							  pss.`id_product` , 
							  ps.`reference`,
							  st.`id_product_attribute`, st.`id_shop`, st.`id_shop_group`, st.`quantity`, st.`depends_on_stock`, st.`out_of_stock`, psl.`name`
							FROM 
							  `ps_product` ps,
							  `ps_product_shop` pss, 
							  `ps_product_lang` psl, 
							  `ps_stock_available` st
							WHERE 
							  ps.`id_product` = pss.`id_product`
							  AND  pss.`id_product` = psl.`id_product`
							  AND  ps.`id_product` = st.`id_product`
							AND  pss.`id_shop` = psl.`id_shop`
							AND  pss.`id_shop` = st.`id_shop`
							AND psl.`id_lang` =5";
					if ($list = Db::getInstance()->ExecuteS($sql))
					{
						$file_name = _PS_MODULE_DIR_.'updatetaxrate/backup/file'.date("dmy-His").'.csv';
						$fp = fopen($file_name, 'w');
						foreach ($list as $fields) {
						    fputcsv($fp, $fields);
						}

						fclose($fp);
					}
				}
				echo "stop";
				
		}
	} else { echo "OUST!!!!";}


ps:

Publier pas de corriger aussi les taux transporteur.

Edited by jd440 (see edit history)
  • Like 1
Link to comment
Share on other sites

Ici :

$multiple2 = '(1.7/1.1)';

Ne serait-ce pas plutôt :

$multiple2 = '(1.07/1.1)';

Je suppose également que les lignes suivantes sont aussi obsolètes :

$nvxtx3 = 5;
[...]
$oldtx3 = 5.5;
$nvxtx3 = 5.5;
[...]
$oldtx3 = 5;

Merci pour votre contribution :)

Merci c est corrige.

 

J'ai ajouter aussi le recalcul de price attribute

<?php
error_reporting(E_ALL); 
include(dirname(__FILE__).'/../../config/config.inc.php');
require_once(dirname(__FILE__).'/../../init.php');

if (!Configuration::get('NEWRATE_RESTORE'))
	echo "t1";
		// Generer Security Token si il n'existe pas
		if (!Configuration::get('NEWR_SECURITY_TOKEN'))
			Configuration::updateValue('NEWR_SECURITY_TOKEN', Tools::passwdGen(30));

		//Vérifier Security Token
		if (Tools::getValue('security') == Configuration::get('NEWR_SECURITY_TOKEN'))
		{
			$action = ((Tools::getValue('action')) ? (Tools::getValue('action')) : '');
			if ($action !=''){
				$multiple = '(1.196/1.2)';
				$multiple2 = '(1.07/1.1)';

				if (($action == 'nvxtx')&&(!Configuration::get('NEWRATE_UPDATE'))) {
					echo "update";
					$multiple = '*'.$multiple;
					$multiple2 = '*'.$multiple2;
					$nvxtx1 = 20;
					$nvxtx2 = 10;
					$oldtx1 = 19.6;
					$oldtx2 = 7;
					$sql = '
					update `'._DB_PREFIX_.'product` set `price` = `price`'.$multiple.', `id_tax_rules_group`=5 where `id_tax_rules_group`=1;
					update `'._DB_PREFIX_.'product_attribute` set `price` = `price`'.$multiple.' where `id_tax_rules_group`=5;
					update `'._DB_PREFIX_.'product_shop` set `price` = `price`'.$multiple.', `id_tax_rules_group`=5 where `id_tax_rules_group`=1;
					update `'._DB_PREFIX_.'tax_rule` set `id_tax` = 5 WHERE `id_tax` = 1;
					
					update `'._DB_PREFIX_.'product` set `price` = `price`'.$multiple2.', `id_tax_rules_group`=6 where `id_tax_rules_group`=2;
					update `'._DB_PREFIX_.'product_attribute` set `price` = `price`'.$multiple2.' where `id_tax_rules_group`=6;
					update `'._DB_PREFIX_.'product_shop` set `price` = `price`'.$multiple2.', `id_tax_rules_group`=6 where `id_tax_rules_group`=2;
					update `'._DB_PREFIX_.'tax_rule` set `id_tax` = 6 WHERE `id_tax` = 2;

					INSERT INTO `'._DB_PREFIX_.'tax` (`id_tax`, `rate`, `active`, `deleted`) VALUES (\'5\', \'20\', \'1\', \'0\');
					INSERT INTO `'._DB_PREFIX_.'tax` (`id_tax`, `rate`, `active`, `deleted`) VALUES (\'6\', \'10\', \'1\', \'0\');
					INSERT INTO `'._DB_PREFIX_.'tax_lang` (`id_tax` ,`id_lang` ,`name`)VALUES (\'5\', \'5\', \'TVA FR 20%\');
					INSERT INTO `'._DB_PREFIX_.'tax_lang` (`id_tax` ,`id_lang` ,`name`)VALUES (\'6\', \'5\', \'TVA FR 10%\');
					INSERT INTO `'._DB_PREFIX_.'tax_rules_group` (`id_tax_rules_group`, `name`, `active`) VALUES (\'5\', \'FR Taux standard (20%)\', \'1\');
					INSERT INTO `'._DB_PREFIX_.'tax_rules_group` (`id_tax_rules_group`, `name`, `active`) VALUES (\'6\', \'FR Taux standard (10%)\', \'1\');
					update `'._DB_PREFIX_.'tax_rules_group_shop` set `id_tax_rules_group` = 5 WHERE `id_tax_rules_group` = 1;
					update `'._DB_PREFIX_.'tax_rules_group_shop` set `id_tax_rules_group` = 6 WHERE `id_tax_rules_group` = 2;
					update `'._DB_PREFIX_.'carrier_tax_rules_group_shop` set `id_tax_rules_group` = 5 WHERE `id_tax_rules_group` = 1;
					update `'._DB_PREFIX_.'carrier_tax_rules_group_shop` set `id_tax_rules_group` = 6 WHERE `id_tax_rules_group` = 2;
					update `'._DB_PREFIX_.'tax_rule` set `id_tax_rules_group` = 5 WHERE `id_tax_rules_group` = 1;
					update `'._DB_PREFIX_.'tax_rule` set `id_tax_rules_group` = 6 WHERE `id_tax_rules_group` = 2;';
					echo "<hr/> ".$sql;						

				} elseif (( $action == 'restoretx')&&(!Configuration::get('NEWRATE_RESTORE'))) {
					echo "restore";
					$multiple = '/'.$multiple;	
					$multiple2 = '/'.$multiple2;	
					$nvxtx1 = 19.6;
					$nvxtx2 = 7;
					$oldtx1 = 20;
					$oldtx2 = 10;
					$sql = '
					update `'._DB_PREFIX_.'product` set `price` = `price`'.$multiple.', `id_tax_rules_group`=1 where `id_tax_rules_group`=5;
					update `'._DB_PREFIX_.'product_shop` set `price` = `price`'.$multiple.', `id_tax_rules_group`=1 where `id_tax_rules_group`=5;
					update `'._DB_PREFIX_.'tax_rule` set `id_tax` = 1 WHERE `id_tax` = 5;
					
					update `'._DB_PREFIX_.'product` set `price` = `price`'.$multiple2.', `id_tax_rules_group`=2 where `id_tax_rules_group`=6;
					update `'._DB_PREFIX_.'product_shop` set `price` = `price`'.$multiple2.', `id_tax_rules_group`=2 where `id_tax_rules_group`=6;
					update `'._DB_PREFIX_.'tax_rule` set `id_tax` = 2 WHERE `id_tax` = 6;

					DELETE FROM `'._DB_PREFIX_.'tax` WHERE `id_tax` =5;
					DELETE FROM `'._DB_PREFIX_.'tax` WHERE `id_tax`=6;
					DELETE FROM `'._DB_PREFIX_.'tax_lang` WHERE `id_tax` = 5;
					DELETE FROM `'._DB_PREFIX_.'tax_lang` WHERE `id_tax`  =6;
					DELETE FROM `'._DB_PREFIX_.'tax_rules_group` WHERE `id_tax_rules_group` = 5;
					DELETE FROM `'._DB_PREFIX_.'tax_rules_group` WHERE `id_tax_rules_group` = 6;

					update `'._DB_PREFIX_.'tax_rules_group_shop` set `id_tax_rules_group` = 1 WHERE `id_tax_rules_group` = 5;
					update `'._DB_PREFIX_.'tax_rules_group_shop` set `id_tax_rules_group` = 2 WHERE `id_tax_rules_group` = 6;
					update `'._DB_PREFIX_.'carrier_tax_rules_group_shop` set `id_tax_rules_group` = 1 WHERE `id_tax_rules_group` = 5;
					update `'._DB_PREFIX_.'carrier_tax_rules_group_shop` set `id_tax_rules_group` = 2 WHERE `id_tax_rules_group` = 6;
					update `'._DB_PREFIX_.'tax_rule` set `id_tax_rules_group` = 1 WHERE `id_tax_rules_group` = 5;
					update `'._DB_PREFIX_.'tax_rule` set `id_tax_rules_group` = 2 WHERE `id_tax_rules_group` = 6;';
					echo $sql; 
				}

				if (($action == 'nvxtx')&&(!Configuration::get('NEWRATE_UPDATE'))) {
					echo "update";
					Db::getInstance()->ExecuteS($sql);
					Configuration::updateValue('NEWRATE_UPDATE', date("dmy-His"));
					// Suppression d'une clé
					Configuration::deleteByName('NEWRATE_RESTORE');
				} elseif (( $action == 'restoretx')&&(!Configuration::get('NEWRATE_RESTORE'))) {
					echo "restore";
					
					Db::getInstance()->ExecuteS($sql);
					Configuration::updateValue('NEWRATE_RESTORE', date("dmy-His"));
					// Suppression d'une clé
					Configuration::deleteByName('NEWRATE_UPDATE');
				} elseif ( $action == 'backupquantity') {
					$sql = "SELECT 
							  pss.`id_product` , 
							  ps.`reference`,
							  st.`id_product_attribute`, st.`id_shop`, st.`id_shop_group`, st.`quantity`, st.`depends_on_stock`, st.`out_of_stock`, psl.`name`
							FROM 
							  `ps_product` ps,
							  `ps_product_shop` pss, 
							  `ps_product_lang` psl, 
							  `ps_stock_available` st
							WHERE 
							  ps.`id_product` = pss.`id_product`
							  AND  pss.`id_product` = psl.`id_product`
							  AND  ps.`id_product` = st.`id_product`
							AND  pss.`id_shop` = psl.`id_shop`
							AND  pss.`id_shop` = st.`id_shop`
							AND psl.`id_lang` =5";
					if ($list = Db::getInstance()->ExecuteS($sql))
					{
						$file_name = _PS_MODULE_DIR_.'updatetaxrate/backup/file'.date("dmy-His").'.csv';
						$fp = fopen($file_name, 'w');
						foreach ($list as $fields) {
						    fputcsv($fp, $fields);
						}

						fclose($fp);
					}
				}
				echo "stop";
				
		}
	} else { echo "OUST!!!!";}


  • Like 1
Link to comment
Share on other sites

  • 2 weeks later...

Bonjour

Pour le code fourni il suffit de placer le fichier créé dans le dossier admin et de l'executer en mettant l'url ?

Merci

Est ce que le code est fonctionnel pour un prestashop 1.4.1.0 ?

 

Mais une question, si l'on créer une nouvelle taxe, n'est il pas plus simple de l'appliquer dans les champs de la bdd qui sont concernés ? comme cela on ne touche pas aux anciennes factures

Link to comment
Share on other sites

Entre deux coupes de champagne (bonne année tout le monde !), la même question m'a effectivement traversé l'esprit.

 

Ma tâche cron et mes quelques requêtes SQL ont parfaitement fonctionné, seulement voilà, si je clique sur une ancienne commande, elle a également le nouveau taux alors qu'il faudrait qu'elle affiche l'ancien taux et l'ancien prix HT, tout du moins pour toutes les commandes payées en 2013 et antérieur.

 

Ca me semble relativement anodin, je suppose que peu de personnes vont rechercher d'anciennes factures, et que peu de personnes passent commandes le soir du réveillon, mais sait-on jamais...

Edited by shroom (see edit history)
  • Like 1
Link to comment
Share on other sites

Tu n'as aucun bug avec les factures générées en 2013?

J'aurai mieux fait d'acheter un module payant

Bref j'ai passé mon réveillon a changer tous les frais de ports sur mes 7 sites prestashop...

Et j'ai du désactivé les factures pour tous mes clients

Tant pis

Link to comment
Share on other sites

aucun.

Le problème vient d'avoir changer le taux de la tva il me semble au lieu d'en créer un nouvelle et de réaffecter celle-ci aux produits.

 

Si tu as le backup d'avant le cron, remonte-le et passe un module.

Gain de temps et d'efficacité..

Link to comment
Share on other sites

Pas de backup

Par contre il est vrai qu'il aurait fallu recréer un nouveau taux a 20%

Puis ensuite réduire les prix HT via SQL

J'aurai pu le faire mais j'ai été tenté par celui de store commander...

Il me reste une solution :

Remettre le taux a 19,6%

Puis recréer un taux a 20%

Ça résoudra le problème des factures etc

Link to comment
Share on other sites

Edit: en fait tout semble fonctionner correctement en procédant de la sorte (hors transporteur) :

- créer une nouvelle taxe et sa règle

- mettre à jour les tables "product" et "product_shop" en indiquant cette nouvelle règle

- procéder à la conversion du prix HT

Edited by shroom (see edit history)
Link to comment
Share on other sites

Bonjour,

 

J'ai utiliser ça :

Update ps_product set price=price*0.9966667;

 

Puis passer la TVA de 19.6% à 20% dans le BO de prestashop.

 

Fonctionne parfaitement et fait en 2 minutes, les factures de 2013 sont ok.

 

Je rencontre un seul petit problème, depuis le changement de la TVA, quelques commandes payé par Paypal ont le statut erreur de paiement. 

 

En vérifiant sur Paypal la commande est bien payée mais il y à un écart de 1 ou 2 cts. 

 

Savez vous comment réglée ce problème.

 

Bonne année 2014 à tous.

 

Arnaud

Link to comment
Share on other sites

Bonjour

En voulant modifier mon taux de TVA, après une journée éprouvante et fatigante (première erreur) et sans avoir fait de backup !!(erreur fatale), j'ai appuyé sur le bouton "supprimer" (et bêtement j'ai validé) mon taux de tva à 19,60%.

Pas grave, me direz vous, il suffit d'en recréer un. Sauf que j'utilise un script d'import de données en bloc (format CSV) créé par mon webmaster avec qui je n'ai plus de contact. Qui utilisait sans doute le fait que la TVA à 19,60%  était repérée par son ID n° 1.

Je n'ai plus que des taxes à ID 2, 3, ou 4. Connaissez vous un moyen de recréer une taxe avec une ID n° 1

Link to comment
Share on other sites

Bonjour,

 

Prestapricing te permet de corriger simplement les prix pour les arrondir en prix psychologique. Le module n'est pas trop chère 85 €. Fais un tour sur le site du dev sitolog.com

 

En plus cela pourra servir dans la gestion au quotidien.

 

85 € pour un changement de TVA ! C est quand même exagéré !

Link to comment
Share on other sites

  • 2 weeks later...

En fait depuis l'augmentation de la TVA, beaucoup de forum parlent de l'augmentation des prix de vente mais jamais des prix d'achat...et pourtant... ils sont bien présent aussi -_-

 

Voici un petit tuto sans pretention afin de permettre a tous le monde d'augmenter ses prix d'achats en masse :

 

1 Aller sur phpmyadmin de votre hebergeur

- choisir la table que l'on veut sauvegarder ex : ps_product
- l'exporter au format sql et CSV pour MS Excel.

2 Creer une base en localhost pour tester si tout se deroule bien
- importer dedans la table ps_product


3 ensuite ouvrir le fichier CSV que l'on a exporté de la base de donnée en ligne
- copier la colonne des tarifs a augmenter
- coller la colonne dans un autre excel a part et realiser l'augmentation désirée

- dans le tableur d'origine, remplacer les anciennes valeurs par les nouvelles
- enregistrer le tout sous dans le meme format

le nouveau fichier CSV avec les nouveaux tarifs est pret


4 Afin d'etre sur que tout se deroule bien, il faut le tester en localhost
- importer le nouveau fichier CSV et cocher : Remplacer les données de la table avec le fichier
- executer

Normalement tout doit etre ok a ce niveau

5 repeter l'operation sur la base de donnée en ligne


pour prestashop 1.4:
sauvegarder la table ps_product

pour prestashop 1.5:
sauvegarder la table ps_product
sauvegarder la table ps_product_shop

 

voili voilou :)

les prix sont augmentés en masse

je ne l'ai pas testé sur les prix de ventes mais la methode reste la meme

Edited by albatore (see edit history)
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...