fphred Posted January 10, 2014 Share Posted January 10, 2014 (edited) Bonjour à la communauté et merci pour votre partage constant ! Je bloque sur un problème... Ma version de prestashop est 1.5.41 Je souhaite calculer la tva sur marge au lieu de la tva sur le prix, tva sur marge qui est applicable lorsque l'on ne peut pas récupérer la tva sur le produit acheté au fournisseur (particuliers dans mon cas). tva sur marge = tva% * marge / 100 = tva% * (prix de vente ht - prix d'achat ht) / 100 Mais il n'y pas de moyen de configurer prestashop comme ça à ma connaissance... Est-ce que quelqu'un à déjà été confronté à ce problème et a finalement trouvé une solution ? Merci beaucoup d'avance pour votre aide et la partage de votre expérience Edited January 31, 2014 by fphred (see edit history) Link to comment Share on other sites More sharing options...
fphred Posted January 31, 2014 Author Share Posted January 31, 2014 J'ai trouvé la solution, il y a des informations dans www.prestashop.com/forums/topic/34101-tva-sur-marge-resolu-solution/?hl=%2Btva+%2Bmarge#entry1519850 qui concerne une ancienne version de prestashop et www.prestashop.com/forums/topic/189895-créer-champ-produit-presta-15-override-classe-productphp-et-adminproductsphp/ ... En fait il y a pleins de fichiers à overrider ou à modifier... Contactez-moi pour plus d'informations... je vous enverrai les fichiers... ce serait trop long à expliquer ici Link to comment Share on other sites More sharing options...
Mileskabal Posted February 6, 2014 Share Posted February 6, 2014 Bonjour/Bonsoir, Je suis interessé par plus d'informations et/ou vos fichiers... Je suis déjà parvenu à ajouter une case à cocher pour la taxe sur la marge, que j'ai placé juste en dessous de la règle de taxe, et le calcul en javascript pour caculer le bon prix de vente HT (en modifiant : admin/themes/default/template/controller/products/prices.tpl et js/price.js) Mais pour garder l'information de la case coché et ajouter un champ dans la BDD comme le suggère lesdeux liens, ça a pas l'air si évident. Et ce qui parait le plus compliqué c'est de trouver où se fait ensuite le calcul pou l'inscription en base des taxes calculés sur l marge) D'avance merci Link to comment Share on other sites More sharing options...
fphred Posted February 7, 2014 Author Share Posted February 7, 2014 Ok, J'ai essayé de partager les fichiers mais en afit je ne sais pas comment faire. Quelqu'un le sait ? Je ne comprend pas... My Media devrait fonctionner mais aucune fenetre n'apparait quand je clique sur Search... Help !? Link to comment Share on other sites More sharing options...
Mileskabal Posted February 7, 2014 Share Posted February 7, 2014 bonjour, merci de répondre si vite ! je ne connais pas trop ce forum, ce sont mes premiers messages... mais vous pouvez m'envoyer les fichiers par emailemail : mon_pseudo_en_minuscule @ free . fr je pourrai les mettre sur un serveur à moi et proposer le partage ! Merci !! Link to comment Share on other sites More sharing options...
Mileskabal Posted February 7, 2014 Share Posted February 7, 2014 J'ai enfin réussi... Il me reste encore un détail, c'est le calcul à partir du prix de vente TTC.... Sinon, j'aimerais bien savoir quels sont les si nombreux fichiers à éditer....Pour ajouter la taxe sur la marge, je n'ai pour ma part modifié que 4 fichiers (price.tpl, price.js, Product.php, AdminProductsController.php) et ajouté un champ aux tables 'product' et 'product_shop'.... Et tout à l'air de fonctionner... Link to comment Share on other sites More sharing options...
Mileskabal Posted February 7, 2014 Share Posted February 7, 2014 (edited) Bon, je m'en suis sorti. J'ai enfin la TVA sur la marge qui fonctionne sur mon prestashop 1.5.5.0. Je vais vous donner la procédure pour avoir dans l'admin, une case à cocher dans l'onglet Prix d'un produit, et que ça calcule automatiquement la fameuse TVA sur la marge. J'ai également ajouté le champ "TVA sur la marge" dans le listing des produits La méthode que je donne édite directement les fichiers, libre à vous de les overrider. Quand la TVA sur la marge est coché, le taux est fixe et de 20% (selon mes besoins), libre à vous encore d'adapter si vous voulez que ça prenne en compte le champ de TVA sélectionné.... Peut-être que ces modifs ne suffisent pas ? Pour l'instant, je n'ai pas encore eu de cas où ça ne fonctionne pas... Le prix est toujours bien calculé dans les cas où je suis passé.... Voilà pour le topo d'intro, place aux modifs 1. Dans la BDD ajouter un champ 'taxe_sur_marge' dans les tables "pss_product" et "pss_product_shop" `taxe_sur_marge` tinyint(1) unsigned NOT NULL DEFAULT '0' 2. Dans 'js/price.js' modifier 'calcPriceTI()' et 'calcPriceTE()' ainsi : function calcPriceTI(){ var taxMarge = $('#taxe_sur_marge').is(':checked'); var tax = getTax(); var priceTE = parseFloat(document.getElementById('priceTEReal').value.replace(/,/g, '.')); if(taxMarge){ tax = 20; var wholesale_price = parseFloat(document.getElementById('wholesale_price').value.replace(/,/g, '.')); margin = parseFloat(priceTE) - parseFloat(wholesale_price); var newPrice = parseFloat(priceTE) + (margin * tax / 100); } else{ var newPrice = priceTE * ((tax / 100) + 1); } document.getElementById('priceTI').value = (isNaN(newPrice) == true || newPrice < 0) ? '' : ps_round(newPrice, 2); document.getElementById('finalPrice').innerHTML = (isNaN(newPrice) == true || newPrice < 0) ? '' : ps_round(newPrice, 2).toFixed(2); document.getElementById('finalPriceWithoutTax').innerHTML = (isNaN(priceTE) == true || priceTE < 0) ? '' : (ps_round(priceTE, 2) + getEcotaxTaxExcluded()).toFixed(2); calcReduction(); $('#priceTI').val((parseFloat($('#priceTI').val()) + getEcotaxTaxIncluded()).toFixed(2)); $('#finalPrice').html(parseFloat($('#priceTI').val()).toFixed(2)); } function calcPriceTE(){ var taxMarge = $('#taxe_sur_marge').is(':checked'); ecotax_tax_excl = $('#ecotax').val() / (1 + ecotaxTaxRate); var tax = getTax(); var priceTI = parseFloat(document.getElementById('priceTI').value.replace(/,/g, '.')); if(taxMarge){ var wholesale_price = parseFloat(document.getElementById('wholesale_price').value.replace(/,/g, '.')); var margeTTC = priceTI - wholesale_price; var margeHT = margeTTC * 0.833; var tva = margeHT * 20 / 100; var newPrice = ps_round(priceTI - tva,2); } else{ var newPrice = ps_round(priceTI - getEcotaxTaxIncluded(), 2) / ((tax / 100) + 1); } document.getElementById('priceTE').value = (isNaN(newPrice) == true || newPrice < 0) ? '' : ps_round(newPrice.toFixed(6), 6); document.getElementById('priceTEReal').value = (isNaN(newPrice) == true || newPrice < 0) ? 0 : ps_round(newPrice, 9); document.getElementById('finalPrice').innerHTML = (isNaN(newPrice) == true || newPrice < 0) ? '' : ps_round(priceTI.toFixed(6), 6); document.getElementById('finalPriceWithoutTax').innerHTML = (isNaN(newPrice) == true || newPrice < 0) ? '' : ps_round(newPrice.toFixed(6), 6) + getEcotaxTaxExcluded(); calcReduction(); } 3. Ajouter la checkbox dans 'admin/themes/default/template/controllers/products/prices.tpl' : A jouter avant '<tr {if !$ps_use_ecotax} style="display:none;"{/if}>' : <tr> <td class="col-left"> <label>Taxe sur la marge :</label> </td> <td style="padding-bottom:10px;"> <input onclick="calcPrice();" type="checkbox" name="taxe_sur_marge" id="taxe_sur_marge" style="padding-top: 5px;" {if $product->taxe_sur_marge}checked="checked"{/if} value="1" /> <p class="preference_description" style="display: inline;">Cochez pour appliquer la taxe sur la marge</p> </td> </tr> 4. Dans la classe ProductCore 'classes\Product.php' : Dans les déclarations ajouter : /** @var boolean taxe_sur_marge */ public $taxe_sur_marge = false; Toujours dans les déclarations dans l'array $definition['fields'] ajouter sous le commentaire /* Shop fields */ : 'taxe_sur_marge' => array('type' => self::TYPE_BOOL, 'shop' => true, 'validate' => 'isBool'), Dans public static function priceCalculation() éditer ainsi : $sql = new DbQuery(); $sql->select('product_shop.`price`, product_shop.`ecotax`, product_shop.`taxe_sur_marge`, product_shop.`wholesale_price`'); ////////////////////////////////////////// $array_tmp = array( 'price' => $row['price'], 'wholesale_price' => $row['wholesale_price'], 'taxe_sur_marge' => $row['taxe_sur_marge'], 'ecotax' => $row['ecotax'], 'attribute_price' => (isset($row['attribute_price']) ? $row['attribute_price'] : null) ); ////////////////////////////////////////// if ($use_tax){ if($result['taxe_sur_marge']){ $pvht = $price; $wholesale_price = $result['wholesale_price']; $marge = $pvht-$wholesale_price; $newPrice = $pvht + ($marge * 20 / 100); $price = $newPrice; } else{ $price = $product_tax_calculator->addTaxes($price); } } 5. Dans la classe AdminProductsControllerCore 'controllers/admin/AdminProductsController.php' Dans le __construct() : --> ajouter juste après "$this->_select .= 'shop.name as shopname, ';" : $this->_select .= 'a.taxe_sur_marge as taxe_sur_marge, '; --> ajouter juste avant "if (Configuration::get('PS_STOCK_MANAGEMENT'))" : $this->fields_list['taxe_sur_marge'] = array( 'title' => 'Taxe sur Marge', 'width' => 20, 'type' => 'bool', 'align' => 'right', 'havingFilter' => false, 'orderby' => false ); Dans protected function copyFromPost() ajouter à la fin : $object->taxe_sur_marge = (int)Tools::getValue('taxe_sur_marge'); Dans public function initFormInformations() éditer ainsi : // prices array_push($product_props, 'price', 'wholesale_price', 'id_tax_rules_group', 'unit_price_ratio', 'on_sale', 'taxe_sur_marge', 'unity', 'minimum_quantity', 'additional_shipping_cost', 'available_now', 'available_later', 'available_date' ); RÉSULTAT : Edited February 7, 2014 by Mileskabal (see edit history) 2 Link to comment Share on other sites More sharing options...
Cestdujoli Posted September 18, 2014 Share Posted September 18, 2014 Bonjour, J'utilise PrestaShop™ 1.6.0.8 et j'ai un problème particulier car je vends à la fois des produits neufs et d'occasions hors en France on n'utilise pas la même règle de TVA pour ces deux types de produits. Il faudrait que je puisse avoir un panier et une facture qui se modifient en fonction de mes différents cas de figures : 1) Produit Neuf vendu en France : Prix HT avec prix TTC (TVA à 20%) 2) Produit d’Occasion vendu en France : format TVA sur marge ((Prix de vente TTC - mon Prix d'achat HT) x 0,8333 x 20%) avec indication uniquement du prix TTC et d’une mention "TVA article 297 A du CGI » 3 ) Produit neuf ou occasion vendu à l’étranger : prix HT = prix TTC avec indication "Exonération de TVA exportation art 262-I du CGI pour les ventes Hors Union Européenne" Je dois donc pouvoir aussi rentrer un prix d’achat HT, un prix de vente TTC et cocher une case "TVA sur marge" dans le cas d’une montre d’occasion. Merci d'avance pour votre aide. Link to comment Share on other sites More sharing options...
ghostfr Posted December 5, 2014 Share Posted December 5, 2014 Bonjour, J'utilise PrestaShop™ 1.6.0.8 et j'ai un problème particulier car je vends à la fois des produits neufs et d'occasions hors en France on n'utilise pas la même règle de TVA pour ces deux types de produits. Il faudrait que je puisse avoir un panier et une facture qui se modifient en fonction de mes différents cas de figures : 1) Produit Neuf vendu en France : Prix HT avec prix TTC (TVA à 20%) 2) Produit d’Occasion vendu en France : format TVA sur marge ((Prix de vente TTC - mon Prix d'achat HT) x 0,8333 x 20%) avec indication uniquement du prix TTC et d’une mention "TVA article 297 A du CGI » 3 ) Produit neuf ou occasion vendu à l’étranger : prix HT = prix TTC avec indication "Exonération de TVA exportation art 262-I du CGI pour les ventes Hors Union Européenne" Je dois donc pouvoir aussi rentrer un prix d’achat HT, un prix de vente TTC et cocher une case "TVA sur marge" dans le cas d’une montre d’occasion. Merci d'avance pour votre aide. et .... tu as trouvé la solution? meme problème chez moi !! merci si tu as des infos greg Link to comment Share on other sites More sharing options...
Kahndryl Posted December 28, 2015 Share Posted December 28, 2015 Bonjour tout le monde, Petite correction, dans public static function priceCalculation de la classe Product : if ($use_tax){ if($result['tvamargin']){ $pvht = $price; $wholesale_price = $result['wholesale_price']; $marge = $pvht-$wholesale_price; $newPrice = $pvht + ($marge * 21 / 100); $price = $newPrice; } else{ $price = $product_tax_calculator->addTaxes($price); } }else{ if($result['tvamargin']){ $pvht = $price; $wholesale_price = $result['wholesale_price']; $marge = $pvht-$wholesale_price; $newPrice = $pvht + ($marge * 21 / 100); $price = $newPrice; } } Car, dans le cas d'un professionnel intracommunautaire, il doit quand même payer la tva sur la marge car cette dernière n'est pas déductible. Bonne journée ! 1 Link to comment Share on other sites More sharing options...
samarhxc Posted October 26, 2016 Share Posted October 26, 2016 Hello, petit up pour signaler que même si le calcul est bon au niveau du produit en lui-même, la TVA figurant sur la commande n'est pas bonne. En fait il faut : - rajouter le même champs dans la table ps_order_detail - récupérer le champs 'taxe_sur_marge' de la table product dans la fonction getProducts(..) de la classe Cart. - dans la fonction saveTaxCalculator(...) de la classe OrderDetail, il faut changer à cet endroit aussi le calcul du montant de la TVA, pour que ce soit bien inséré dans la table ps_order_detail_tax et donc bien calculé sur la facture Voilà, si quelqu'un a besoin de plus de détail je pourrai expliquer en profondeur. 1 Link to comment Share on other sites More sharing options...
pikastore Posted March 11, 2017 Share Posted March 11, 2017 Bonjour, J'utilise PrestaShop™ 1.6.0.8 et j'ai un problème particulier car je vends à la fois des produits neufs et d'occasions hors en France on n'utilise pas la même règle de TVA pour ces deux types de produits. Il faudrait que je puisse avoir un panier et une facture qui se modifient en fonction de mes différents cas de figures : 1) Produit Neuf vendu en France : Prix HT avec prix TTC (TVA à 20%) 2) Produit d’Occasion vendu en France : format TVA sur marge ((Prix de vente TTC - mon Prix d'achat HT) x 0,8333 x 20%) avec indication uniquement du prix TTC et d’une mention "TVA article 297 A du CGI » 3 ) Produit neuf ou occasion vendu à l’étranger : prix HT = prix TTC avec indication "Exonération de TVA exportation art 262-I du CGI pour les ventes Hors Union Européenne" Je dois donc pouvoir aussi rentrer un prix d’achat HT, un prix de vente TTC et cocher une case "TVA sur marge" dans le cas d’une montre d’occasion. Merci d'avance pour votre aide. Salut Une solution a t elle été trouvée ? meme cas de figure pour moi ! Link to comment Share on other sites More sharing options...
Juke29 Posted November 16, 2017 Share Posted November 16, 2017 On 26/10/2016 at 5:40 AM, samarhxc said: Hello, petit up pour signaler que même si le calcul est bon au niveau du produit en lui-même, la TVA figurant sur la commande n'est pas bonne. En fait il faut : - rajouter le même champs dans la table ps_order_detail - récupérer le champs 'taxe_sur_marge' de la table product dans la fonction getProducts(..) de la classe Cart. - dans la fonction saveTaxCalculator(...) de la classe OrderDetail, il faut changer à cet endroit aussi le calcul du montant de la TVA, pour que ce soit bien inséré dans la table ps_order_detail_tax et donc bien calculé sur la facture Voilà, si quelqu'un a besoin de plus de détail je pourrai expliquer en profondeur. Moi je suis intéressée par le détail, je fais la modif sur 1.6 mais j'ai adapté avec succès jusque là. Je souhaite surtout faire en sorte que la tva soit correcte sur les commades et factures maintenant. Link to comment Share on other sites More sharing options...
samarhxc Posted November 28, 2017 Share Posted November 28, 2017 Salut, je suis actuellement en train de migrer vers 1.6, je donnerai les détails quand ce sera terminé. 1 Link to comment Share on other sites More sharing options...
Juke29 Posted December 21, 2017 Share Posted December 21, 2017 Le 28/11/2017 à 7:47 PM, samarhxc a dit : Salut, je suis actuellement en train de migrer vers 1.6, je donnerai les détails quand ce sera terminé. Salut ! Des nouvelles concernant ta migration ? Tiens-nous au courant ! Merci d'avance ! Link to comment Share on other sites More sharing options...
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now