/[dolibarr]/dolibarr/htdocs/lib/price.lib.php
ViewVC logotype

Diff of /dolibarr/htdocs/lib/price.lib.php

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1.9 by opensides, Tue Oct 19 22:47:16 2004 UTC revision 1.10 by eldy, Sat Oct 8 15:54:09 2005 UTC
# Line 38  Line 38 
38    
39  function calcul_price($products, $remise_percent)  function calcul_price($products, $remise_percent)
40  {  {
41    $total_ht = 0;          $total_ht = 0;
42    $amount_ht = 0;          $amount_ht = 0;
43    $tva = array();          $total_tva = 0;
44    $total_tva = 0;          $total_ttc = 0;
45    $total_remise = 0;          $total_remise = 0;
46            $result[5] = array();
47    $num = sizeof($products);          
48    $i = 0;          if ( sizeof( $products ) )
   
   while ($i < $num)        
     {  
       $prod_price = $products[$i][0];  
       $prod_qty   = $products[$i][1];  
       $prod_txtva = $products[$i][2];  
   
       $lprice = $prod_qty * $prod_price;  
   
       $amount_ht = $amount_ht + $lprice;  
   
       if ($remise_percent > 0)  
49          {          {
50            $lremise = ($lprice * $remise_percent / 100);                  foreach ($products as $product)
51            $lprice = $lprice - $lremise;                  {
52            $total_remise = $total_remise + $lremise;                          $prod_price = $product[0];
53                            $prod_qty   = $product[1];
54                            $prod_txtva = $product[2];
55                    
56                            // montant total HT de la ligne
57                            $line_price_ht = $prod_qty * $prod_price;
58                    
59                            // incrémentation montant HT hors remise de l'ensemble
60                            $amount_ht += $line_price_ht;
61                    
62                            // si une remise est consentie sur l'ensemble
63                            if ($remise_percent > 0)
64                            {
65                                    // calcul de la remise sur la ligne
66                                    $line_remise = ($line_price_ht * $remise_percent / 100);
67                                    // soustraction de cette remise au montant HT de la ligne
68                                    $line_price_ht -= $line_remise;
69                                    // incrémentation du montant total de remise sur l'ensemble
70                                    $total_remise += $line_remise;
71                            }
72                            // incrémentation du montant HT remisé de l'ensemble
73                            $total_ht += $line_price_ht;
74                    
75                            // calcul de la TVA sur la ligne
76                            $line_tva = ($line_price_ht * (abs($prod_txtva) / 100));
77                    
78                            // incrémentation du montant TTC de la valeur HT, on traite la TVA ensuite
79                            $total_ttc  += $line_price_ht;
80                            // traitement de la tva non perçue récupérable
81                            if ( $prod_txtva >= 0 )
82                            {
83                                    // ce n'est pas une TVA non perçue récupérable,
84                                    // donc on incrémente le total TTC de l'ensemble, de la valeur de TVA de la ligne
85                                    $total_ttc  += $line_tva;
86                            }
87                            // dans tous les cas, on incrémente le total de TVA
88                            $total_tva += $line_tva;
89                            // on incrémente le tableau de différentiation des taux de TVA
90    // s'il faut rassembler les tva facturables ou non, du même taux
91    // dans un même ligne du tableau, remplacer la ligne suivante par :
92    //                      $result[5][abs($prod_txtva)] += $line_tva;
93                            $result[5][$prod_txtva] += $line_tva;
94                    
95                            $i++;
96                    }
97          }          }
98                  /*
99        $total_ht = $total_ht + $lprice;          * arrondis
100            */
101        $ligne_tva = ($lprice * ($prod_txtva / 100));          $total_ht  = round($total_ht, 2);
102            $total_tva = round($total_tva, 2);
103        $tva[$prod_txtva] = $tva[$prod_txtva] + $ligne_tva;          
104        $i++;          /*
105      }          *
106            */
107    /*          $result[0] = $total_ht;
108     * Sommes et arrondis          $result[1] = $total_tva;
109     */          $result[2] = $total_ttc;
110    $j=0;          $result[3] = $total_remise;
111    $result[5] = array();          $result[4] = $amount_ht;
112            
113    foreach ($tva as $key => $value)          return $result;
     {  
       $tva[$key] = round($tva[$key], 2);  
       $total_tva = $total_tva + $tva[$key];  
       $result[5][$key] = $tva[$key];  
       $j++;  
     }  
     
   $total_ht  = round($total_ht, 2);  
   $total_tva = round($total_tva, 2);  
     
   $total_ttc = $total_ht + $total_tva;  
     
   /*  
    *  
    */  
   $result[0] = $total_ht;  
   $result[1] = $total_tva;  
   $result[2] = $total_ttc;  
   $result[3] = $total_remise;  
   $result[4] = $amount_ht;  
   
   return $result;  
114  }  }
115    

Legend:
Removed from v.1.9  
changed lines
  Added in v.1.10

savannah-hackers-public@gnu.org
ViewVC Help
Powered by ViewVC 1.1.26