Nous ne répondons seulement qu'aux sujets dont l'auteur a complété sa signature [Lire]



Vous avez des soucis avec votre Opencart v1.5.x, nous pouvons résoudre vos problèmes,
contactez le Bureau France !

par tel: 0 891 690 175 ou par
email

Arrondi de TVA

Programmation, discussions et suggestions pour l'amélioration de OpenCart

Arrondi de TVA

Messagepar appli » 12 Oct 2011, 07:36

Toujours le même Pb récurent.

Fatigué d'avoir des centimes qui se promènent quand je passe les factures opencart en compta, j'ai essayé de regarder pourquoi.

Opencart tronque la TVA à 2 chiffres sans appliquer d'arrondi comptable.

Exemple je viens de recevoir une petite commande :
sous total : 13,55
port : 2,65
TVA : 3,17
Total : 19,37

Je passe en compta :
sous total : 13,55
port : 2,65
TVA : 3,18
Total : 19,38

Le logiciel compta a bien appliqué l'arrondi comptable Opencart NON.
Donc quelques centaines de factures plus loin, je vous laisse apprécié le bord...

Aussi j'ai fait une petite modif système>library>cart.php

Code: Tout sélectionner
     public function getSubTotal() {
      $total = 0;
      
      foreach ($this->getProducts() as $product) {
         $total += $product['total'];
      }

      return $total;
     }
   
   public function getTaxes() {
      $taxes = array();
      
      foreach ($this->getProducts() as $product) {
         if ($product['tax_class_id']) {
            if (!isset($taxes[$product['tax_class_id']])) {
               $taxes[$product['tax_class_id']] = round($product['total'] / 100 * $this->tax->getRate($product['tax_class_id']), 2);
            } else {
               $taxes[$product['tax_class_id']] += round($product['total'] / 100 * $this->tax->getRate($product['tax_class_id']), 2);
            }
         }
      }
      
      return $taxes;


La fonction "round" arrondi.
Il semble que cela fonctionne correctement, sans cette fonction, on voit bien que le chiffre est tronqué et non arrondi.

Je reçois maintenant
sous total : 13,55
port : 2,65
TVA : 3,18
Total : 19,38

Si cela peut servir.
Open cart 1.5 et 2.03
pop up survol souris
place replace options
Avatar de l’utilisateur
appli
Utilisateur enregistré
Utilisateur enregistré
 
Messages: 16
Inscription: 21 Aoû 2011, 09:28
Localisation: AIX en PROVENCE

Re: Arrondi de TVA

Messagepar appli » 03 Nov 2011, 18:43

Bonsoir,

Je ressort ce PB.

Qui pourrait m'aider.

Exemple je viens de recevoir une commande de 108,57 ht et OC me calcul 21,31 de TVA.

Si je prends ma calculette 108,57 x 0,196 = 21,279... donc 21,28.

Comment passer cela en compta ? Lors d'un contrôle ce qui est regardé en premier c'est la TVA. Et là si il y a plusieurs dizaines de factures de ce type avec des problèmes de TVA, c'est le début des vrais PB.

I need some body help
Open cart 1.5 et 2.03
pop up survol souris
place replace options
Avatar de l’utilisateur
appli
Utilisateur enregistré
Utilisateur enregistré
 
Messages: 16
Inscription: 21 Aoû 2011, 09:28
Localisation: AIX en PROVENCE

Re: Arrondi de TVA

Messagepar LeorLindel » 05 Nov 2011, 11:56

Dans le fichier system/library/cart.php (même modif que citée plus haut)

Chercher :
Code: Tout sélectionner
      foreach ($this->getProducts() as $product) {
         if ($product['tax_class_id']) {
            if (!isset($taxes[$product['tax_class_id']])) {
               $taxes[$product['tax_class_id']] = $product['total'] / 100 * $this->tax->getRate($product['tax_class_id']);
            } else {
               $taxes[$product['tax_class_id']] += $product['total'] / 100 * $this->tax->getRate($product['tax_class_id']);
            }
         }
      }
Et remplacer par :
Code: Tout sélectionner
      foreach ($this->getProducts() as $product) {
         if ($product['tax_class_id']) {
            if (!isset($taxes[$product['tax_class_id']])) {
               $taxes[$product['tax_class_id']] = round($product['total'] / 100 * $this->tax->getRate($product['tax_class_id']),2);
            } else {
               $taxes[$product['tax_class_id']] += round($product['total'] / 100 * $this->tax->getRate($product['tax_class_id']),2);
            }
         }
      }

Dans le fichier system/library/tax.php

Chercher :
Code: Tout sélectionner
     public function calculate($value, $tax_class_id, $calculate = TRUE) {    
      if (($calculate) && (isset($this->taxes[$tax_class_id])))  {
         $rate = $this->getRate($tax_class_id);
         
            return $value + ($value * $rate / 100);
       } else {
            return $value;
       }
     }
Et remplacer par :
Code: Tout sélectionner
   public function calculate($value, $tax_class_id, $calculate = TRUE) {   
      if (($calculate) && (isset($this->taxes[$tax_class_id])))  {
         $rate = $this->getRate($tax_class_id);
         $value = $value + ($value * $rate / 100);
         $value = round($value,2);
         
            return $value + ($value * $rate / 100);
       } else {
            return $value;
       }
     }

NOTE : Ces modifications sont valables aussi pour les versions supérieures à la v1.4.9.
Image
1 - A lire avant de poster un sujet
2 - Politique sur la signature.

Quand le sujet est résolu, pensez à ajouter la petite coche verte Image dans le titre initial en éditant votre premier message et non dans votre dernière réponse.
Merci


Toutes les extensions commerciales (templates ou modules payants) ne peuvent pas faire l'objet d'ouverture de sujet, prière de bien vouloir s'adresser au concepteur en cas de problème ou demande de renseignements.

Seul, on avance plus vite, à plusieurs on avance plus loin.
Avatar de l’utilisateur
LeorLindel
Administrateur
Administrateur
 
Messages: 4227
Inscription: 19 Fév 2010, 13:44
Localisation: Lutéce


Retourner vers Développement

Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 0 invités

cron