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