From b3f194930dbf86aee967753446c5c53e012fb89d Mon Sep 17 00:00:00 2001
From: Laurent Destailleur <eldy@destailleur.fr>
Date: Mon, 9 Jan 2012 00:41:09 +0100
Subject: [PATCH] Always show example for vat rate 0 even if not vat rates
 defined for country.

---
 htdocs/admin/limits.php | 114 +++++++++++++++++++++-------------------
 1 file changed, 59 insertions(+), 55 deletions(-)

diff --git a/htdocs/admin/limits.php b/htdocs/admin/limits.php
index c2af8214e55..65d4ad8f95f 100644
--- a/htdocs/admin/limits.php
+++ b/htdocs/admin/limits.php
@@ -168,31 +168,10 @@ else
 }
 
 
-$vat_rates=array();
-
-// TODO move to DAO class
-$sql.="SELECT taux as vat_rate";
-$sql.=" FROM ".MAIN_DB_PREFIX."c_tva as t, ".MAIN_DB_PREFIX."c_pays as p";
-$sql.=" WHERE t.active=1 AND t.fk_pays = p.rowid AND p.code='".$mysoc->country_code."'";
-$sql.=" ORDER BY t.taux ASC";
-
-$resql=$db->query($sql);
-if ($resql)
-{
-    $num = $db->num_rows($resql);
-    if ($num)
-    {
-        for ($i = 0; $i < $num; $i++)
-        {
-            $obj = $db->fetch_object($resql);
-            $vat_rates[$i] = $obj->vat_rate;
-        }
-    }
-}
-
 // Show examples
 print '<b>'.$langs->trans("ExamplesWithCurrentSetup").":</b><br>\n";
 
+// Always show vat rates with vat 0
 $s=2/7;$qty=1;$vat=0;
 $tmparray=calcul_price_total(1,$qty*price2num($s,'MU'),0,$vat,0,0,0,'HT',0);
 print $langs->trans("UnitPriceOfProduct").": ".price2num($s,'MU');
@@ -200,26 +179,7 @@ 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";
 
-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');
-        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";
-    }
-}
-
-
-// More examples
-// This example must be kept for test purpose with current value because value used (2/7, 10/3, and vat 0, 10)
-// were calculated to show all possible cases of rounding. If we change this, examples becomes useless or show the same rounding rule.
-
-/*
- $s=10/3;$qty=1;$vat=0;
+$s=10/3;$qty=1;$vat=0;
 $tmparray=calcul_price_total(1,$qty*price2num($s,'MU'),0,$vat,0,0,0,'HT',0);
 print $langs->trans("UnitPriceOfProduct").": ".price2num($s,'MU');
 print " x ".$langs->trans("Quantity").": ".$qty;
@@ -233,20 +193,64 @@ 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";
 
-$s=10/3;$qty=1;$vat=10;
-$tmparray=calcul_price_total(1,$qty*price2num($s,'MU'),0,$vat,0,0,0,'HT',0);
-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";
+// Add vat rates examples specific to country
+$vat_rates=array();
 
-$s=10/3;$qty=2;$vat=10;
-$tmparray=calcul_price_total(1,$qty*price2num($s,'MU'),0,$vat,0,0,0,'HT',0);
-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";
-*/
+$sql.="SELECT taux as vat_rate";
+$sql.=" FROM ".MAIN_DB_PREFIX."c_tva as t, ".MAIN_DB_PREFIX."c_pays as p";
+$sql.=" WHERE t.active=1 AND t.fk_pays = p.rowid AND p.code='".$mysoc->country_code."' AND taux != 0";
+$sql.=" ORDER BY t.taux ASC";
+$resql=$db->query($sql);
+if ($resql)
+{
+    $num = $db->num_rows($resql);
+    if ($num)
+    {
+        for ($i = 0; $i < $num; $i++)
+        {
+            $obj = $db->fetch_object($resql);
+            $vat_rates[$i] = $obj->vat_rate;
+        }
+    }
+}
+else dol_print_error($db);
+
+if (count($vat_rates))
+{
+    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');
+            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";
+        }
+    }
+}
+else
+{
+    // More examples if not specific vat rate found
+    // This example must be kept for test purpose with current value because value used (2/7, 10/3, and vat 0, 10)
+    // were calculated to show all possible cases of rounding. If we change this, examples becomes useless or show the same rounding rule.
+
+    $s=10/3;$qty=1;$vat=10;
+    $tmparray=calcul_price_total(1,$qty*price2num($s,'MU'),0,$vat,0,0,0,'HT',0);
+    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";
+
+    $s=10/3;$qty=2;$vat=10;
+    $tmparray=calcul_price_total(1,$qty*price2num($s,'MU'),0,$vat,0,0,0,'HT',0);
+    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";
+
+}
 
 
 llxFooter();
-- 
GitLab