t047554 Posted March 5, 2013 Share Posted March 5, 2013 Bonjour a tous, J'ai un petit problème pour afficher le taux de TVA sur la facture. C'est à dire dans la partie ou tout les produits son listés avec le nom du produit le prix HT la quantité etc.. J'aimerai avoir après la colonne prix HT une colonne avec taux de TVA par exemple 5.5 ou 19.6 Merci pour votre aide. PS: j'ai regardé sur le site français et également sur le site anglais mais je n'ai rien trouvé Link to comment Share on other sites More sharing options...
t047554 Posted March 6, 2013 Author Share Posted March 6, 2013 Bonjour a tous, Personne n'a une idée pour m'aider ? Merci Link to comment Share on other sites More sharing options...
btsconsult Posted March 6, 2013 Share Posted March 6, 2013 Bonjour, Tu n'as de réponse, car il n'y en à pas a donner...ce n'est pas prévu par défaut dans le programme. La facture est ainsi formatée sans possibilité de la changer. Sinon, il est toujours possible de changer le code source, mais là c'est une autre paire de manche. (voir avec un DEV) Par contre je te conseille plutôt d'utiliser une vraie facturation, plutôt que celle de Prestashop. Link to comment Share on other sites More sharing options...
emily_d Posted March 7, 2013 Share Posted March 7, 2013 Tu peux formater de manière partielle une facture en modifiant les templates pdf. Dans le dossier de ton thème, crée un dossier pdf et ajoute le fichier pdf/invoice.tpl. Après tu pourras modifier le tpl comme pour un thème (même si le HTML est plus limité) et créer une colonne TVA et la calculer avec Smarty en faisant une simple soustraction. Link to comment Share on other sites More sharing options...
t047554 Posted March 10, 2013 Author Share Posted March 10, 2013 Merci pour vos réponses, D'après ce que je sais en France il me semble que l'on est obligé de mettre le taux de TVA pour chaque articles ? C'est pour cette raison que je cherche a créer un facture comme cela : Mais après beaucoup d'essais je n'ai toujours pas réussi à afficher le taux par produit Merci pour votre aide. Link to comment Share on other sites More sharing options...
emily_d Posted March 10, 2013 Share Posted March 10, 2013 Si tu essaies : {displayPrice currency=$order->id_currency price=($order_detail.unit_price_tax_incl - $order_detail.unit_price_tax_excl)} dans ta colonne TVA. Link to comment Share on other sites More sharing options...
t047554 Posted March 11, 2013 Author Share Posted March 11, 2013 Merci emily_d pour ta réponse Avec ta solution j'ai le montant de la tva qui est affiché et non pas le TAUX. J'aimerai que dans le champs TVA 5.5% ou 19.6% etc... Merci Link to comment Share on other sites More sharing options...
emily_d Posted March 11, 2013 Share Posted March 11, 2013 Vite fait je vois pas comment faire ça proprement sans toucher au code PHP, $order_detail ne contient pas de taux par produit ($order_detail.tax_rate est vide). Les taux sont dans $product_tax_breakdown mais la variable ne référence pas de produit. Autrement, il y a ça : {((($order_detail.unit_price_tax_incl / $order_detail.unit_price_tax_excl) - 1) * 100)|string_format:"%.1f"} Mais c'est vraiment pas beau. Link to comment Share on other sites More sharing options...
t047554 Posted March 11, 2013 Author Share Posted March 11, 2013 Merci emily_d pour ta réponse, c'est vrai que c'est une idée que je n'avais pas pensé , il faudra que je rajoute une condition if pour corriger car j'ai vu que le 19.6 sort a 19.7 a cause des arrondis (mais c'est vrai que c'est pas propre) j'aurai préféré aller chercher sur ps_oder_detail_tax pour prendre le id_tax et sur ps_tax pour avoir le taux dans rate. merci pour ton aide Link to comment Share on other sites More sharing options...
t047554 Posted March 12, 2013 Author Share Posted March 12, 2013 Emily_d, tu aurrais un exemple avec la modification du code PHP svp ? Merci Link to comment Share on other sites More sharing options...
emily_d Posted March 12, 2013 Share Posted March 12, 2013 (edited) {$order_detail.id_tax_rules_group} est défini pour chaque produit, il renvoie une id qui donne la bonne taxe dans la base de donnée pour la table ps_tax. Pour récupérer le taux en SQL, cela donne: SELECT rate FROM ps_tax WHERE id_tax=id_tax_rules_group; Où id_tax_rules_group correspond à la valeur de {$order_detail.id_tax_rules_group} Mais je pense que le taux doit être récupérable via $product_tax_breakdown sans passer par la base de donnée. Je regarde ça. Edited March 12, 2013 by emily_d (see edit history) Link to comment Share on other sites More sharing options...
emily_d Posted March 12, 2013 Share Posted March 12, 2013 (edited) Ok. Tu dois modifier le fichier override/classes/pdf/HTMLTemplateInvoice.php en ajoutant la méthode suivante : public function getTaxTabContent() { $invoice_address = new Address((int)$this->order->id_address_invoice); $tax_exempt = Configuration::get('VATNUMBER_MANAGEMENT') && !empty($invoice_address->vat_number) && $invoice_address->id_country != Configuration::get('VATNUMBER_COUNTRY'); $this->smarty->assign(array( 'tax_exempt' => $tax_exempt, 'use_one_after_another_method' => $this->order_invoice->useOneAfterAnotherTaxComputationMethod(), 'product_tax_breakdown' => $this->order_invoice->getProductTaxesBreakdown(), 'shipping_tax_breakdown' => $this->order_invoice->getShippingTaxesBreakdown($this->order), 'ecotax_tax_breakdown' => $this->order_invoice->getEcoTaxTaxesBreakdown(), 'wrapping_tax_breakdown' => $this->order_invoice->getWrappingTaxesBreakdown(), 'order' => $this->order, 'order_invoice' => $this->order_invoice, 'tax_rates' => Db::getInstance()->ExecuteS('SELECT id_tax,rate FROM ps_tax') )); return $this->smarty->fetch($this->getTemplate('invoice.tax-tab')); } Ce qui change par rapport au code original, c'est tax_rates' => Db::getInstance()->ExecuteS('SELECT id_tax,rate FROM ps_tax'). On crée une array pour smarty en faisant la requête SQL décrite dans le post précédant. Maintenant dans le template, on a plus qu'à récupérer le taux en faisant : {foreach $tax_rates as $tax_rate} {if $tax_rate.id_tax == $order_detail.id_tax_rules_group} {$tax_rate.rate} {/if} {/foreach} Edit Ce code présuppose que l'id de ps_tax_rules_group et ps_tax soient les mêmes, a priori c'est le cas. Edited March 12, 2013 by emily_d (see edit history) 1 Link to comment Share on other sites More sharing options...
t047554 Posted March 12, 2013 Author Share Posted March 12, 2013 Un très grand merci emily_d, Je vais testé cela demain dès que j'ai un moment, mais encore merci pour ton aide. a+ Link to comment Share on other sites More sharing options...
t047554 Posted March 14, 2013 Author Share Posted March 14, 2013 Juste un petit retour d'info maintenant que j'ai enfin eu le temps de tester. MERCI pour ton aide emily_d cela fonctionne a merveille merci et a+ Link to comment Share on other sites More sharing options...
t047554 Posted March 14, 2013 Author Share Posted March 14, 2013 J'ai une question maintenant pour mettre mon topic à résolu je fais comment? merci a+ Link to comment Share on other sites More sharing options...
lescrocs Posted August 19, 2013 Share Posted August 19, 2013 Ok. Tu dois modifier le fichier override/classes/pdf/HTMLTemplateInvoice.php en ajoutant la méthode suivante : public function getTaxTabContent() { $invoice_address = new Address((int)$this->order->id_address_invoice); $tax_exempt = Configuration::get('VATNUMBER_MANAGEMENT') && !empty($invoice_address->vat_number) && $invoice_address->id_country != Configuration::get('VATNUMBER_COUNTRY'); $this->smarty->assign(array( 'tax_exempt' => $tax_exempt, 'use_one_after_another_method' => $this->order_invoice->useOneAfterAnotherTaxComputationMethod(), 'product_tax_breakdown' => $this->order_invoice->getProductTaxesBreakdown(), 'shipping_tax_breakdown' => $this->order_invoice->getShippingTaxesBreakdown($this->order), 'ecotax_tax_breakdown' => $this->order_invoice->getEcoTaxTaxesBreakdown(), 'wrapping_tax_breakdown' => $this->order_invoice->getWrappingTaxesBreakdown(), 'order' => $this->order, 'order_invoice' => $this->order_invoice, 'tax_rates' => Db::getInstance()->ExecuteS('SELECT id_tax,rate FROM ps_tax') )); return $this->smarty->fetch($this->getTemplate('invoice.tax-tab')); } Ce qui change par rapport au code original, c'est tax_rates' => Db::getInstance()->ExecuteS('SELECT id_tax,rate FROM ps_tax'). On crée une array pour smarty en faisant la requête SQL décrite dans le post précédant. Maintenant dans le template, on a plus qu'à récupérer le taux en faisant : {foreach $tax_rates as $tax_rate} {if $tax_rate.id_tax == $order_detail.id_tax_rules_group} {$tax_rate.rate} {/if} {/foreach} Edit Ce code présuppose que l'id de ps_tax_rules_group et ps_tax soient les mêmes, a priori c'est le cas. Bonjour, je m'excuse de réouvrir ce post, mais je ne sais pas ou placer la partie du template {foreach $tax_rates as $tax_rate} {if $tax_rate.id_tax == $order_detail.id_tax_rules_group} {$tax_rate.rate} {/if} {/foreach} est ce dans "shopping-cart-product-line.tpl" ou "shopping-cart-product.tpl" ? ou totalement ailleur? 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