From 1d144b3b4a182ac4cebd8e3f0f94358daedd6904 Mon Sep 17 00:00:00 2001
From: Regis Houssin <regis@dolibarr.fr>
Date: Sun, 8 Jan 2012 20:08:15 +0100
Subject: [PATCH] New: add test for vat rounded by line or on the total

---
 htdocs/admin/limits.php | 42 +++++++++++++++++++++++++++++++++++++----
 1 file changed, 38 insertions(+), 4 deletions(-)

diff --git a/htdocs/admin/limits.php b/htdocs/admin/limits.php
index 8c73a1f49a1..665db98c8fa 100644
--- a/htdocs/admin/limits.php
+++ b/htdocs/admin/limits.php
@@ -198,17 +198,51 @@ print $langs->trans("UnitPriceOfProduct").": ".price2num($s,'MU');
 print " x ".$langs->trans("Quantity").": ".$qty;
 print " - ".$langs->trans("VAT").": ".$vat.'%';
 print " &nbsp; -> &nbsp; ".$langs->trans("TotalPriceAfterRounding").": ".$tmparray[0].' / '.$tmparray[1].' / '.$tmparray[2]."<br>\n";
+print '<br>';
+
+print $langs->trans("VATRoundedByLine").' ('.$langs->trans("DolibarrDefault").')<br><br>';
 
 foreach($vat_rates as $vat)
 {
 	for ($qty=1; $qty<=2; $qty++)
 	{
-		$s=10/3;
-		$tmparray=calcul_price_total(1,$qty*price2num($s,'MU'),0,$vat,0,0,0,'HT',0);
-		print $langs->trans("UnitPriceOfProduct").": ".price2num($s,'MU');
+		$s1=10/3;
+		$s2=2/7;
+		
+		// Round by line
+		$tmparray1=calcul_price_total(1,$qty*price2num($s1,'MU'),0,$vat,0,0,0,'HT',0);
+		$tmparray2=calcul_price_total(1,$qty*price2num($s2,'MU'),0,$vat,0,0,0,'HT',0);
+		$total_ht = $tmparray1[0] + $tmparray2[0];
+		$total_tva = $tmparray1[1] + $tmparray2[1];
+		$total_ttc = $tmparray1[2] + $tmparray2[2];
+		
+		print $langs->trans("UnitPriceOfProduct").": ".(price2num($s1,'MU') + price2num($s2,'MU'));
+		print " x ".$langs->trans("Quantity").": ".$qty;
+		print " - ".$langs->trans("VAT").": ".$vat.'%';
+		print " &nbsp; -> &nbsp; ".$langs->trans("TotalPriceAfterRounding").": ".$total_ht.' / '.$total_tva.' / '.$total_ttc."<br>\n";
+	}
+}
+
+print '<br>'.$langs->trans("VATRoundedOnTotal").'<br><br>';
+
+foreach($vat_rates as $vat)
+{
+	for ($qty=1; $qty<=2; $qty++)
+	{
+		$s1=10/3;
+		$s2=2/7;
+
+		// Global round
+		$subtotal_ht = (($qty*price2num($s1,'MU')) + ($qty*price2num($s2,'MU')));
+		$tmparray3=calcul_price_total(1,$subtotal_ht,0,$vat,0,0,0,'HT',0);
+		$total_ht = $tmparray3[0];
+		$total_tva = $tmparray3[1];
+		$total_ttc = $tmparray3[2];
+
+		print $langs->trans("UnitPriceOfProduct").": ".price2num($s1+$s2,'MU');
 		print " x ".$langs->trans("Quantity").": ".$qty;
 		print " - ".$langs->trans("VAT").": ".$vat.'%';
-		print " &nbsp; -> &nbsp; ".$langs->trans("TotalPriceAfterRounding").": ".$tmparray[0].' / '.$tmparray[1].' / '.$tmparray[2]."<br>\n";
+		print " &nbsp; -> &nbsp; ".$langs->trans("TotalPriceAfterRounding").": ".$total_ht.' / '.$total_tva.' / '.$total_ttc."<br>\n";
 	}
 }
 
-- 
GitLab