Jump to content

Ajouter Le Taux De Tva Pour Chaque Article Dans La Facture


Recommended Posts

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

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

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

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 :

 

post-499459-0-12113900-1362923669_thumb.png

 

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

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

Merci emily_d pour ta réponse,

 

c'est vrai que c'est une idée que je n'avais pas pensé :rolleyes: , 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

{$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 by emily_d (see edit history)
Link to comment
Share on other sites

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 by emily_d (see edit history)
  • Like 1
Link to comment
Share on other sites

  • 5 months later...

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

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...