From 28a0e00de19cdb21fcd0530b9749b35cd350d459 Mon Sep 17 00:00:00 2001
From: Laurent Destailleur <eldy@destailleur.fr>
Date: Mon, 9 Jan 2012 00:02:42 +0100
Subject: [PATCH] Keep examples i used for debug purpose as comments

---
 htdocs/admin/limits.php | 222 ++++++++++++++++++++--------------------
 1 file changed, 112 insertions(+), 110 deletions(-)

diff --git a/htdocs/admin/limits.php b/htdocs/admin/limits.php
index 665db98c8fa..c2af8214e55 100644
--- a/htdocs/admin/limits.php
+++ b/htdocs/admin/limits.php
@@ -1,21 +1,21 @@
 <?php
 /* Copyright (C) 2007-2010	Laurent Destailleur	<eldy@users.sourceforge.net>
  * Copyright (C) 2009-2012	Regis Houssin		<regis@dolibarr.fr>
- * Copyright (C) 2010		Juanjo Menent		<jmenent@2byte.es>
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
+* Copyright (C) 2010		Juanjo Menent		<jmenent@2byte.es>
+*
+* This program is free software; you can redistribute it and/or modify
+* it under the terms of the GNU General Public License as published by
+* the Free Software Foundation; either version 2 of the License, or
+* (at your option) any later version.
+*
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+* GNU General Public License for more details.
+*
+* You should have received a copy of the GNU General Public License
+* along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
 
 /**
  *       \file       htdocs/admin/limits.php
@@ -36,53 +36,53 @@ $action = GETPOST('action','alpha');
 
 if ($action == 'update')
 {
-	$error=0;
-	$MAXDEC=8;
-	if ($_POST["MAIN_MAX_DECIMALS_UNIT"]  > $MAXDEC
-	 || $_POST["MAIN_MAX_DECIMALS_TOT"]   > $MAXDEC
-	 || $_POST["MAIN_MAX_DECIMALS_SHOWN"] > $MAXDEC)
-	{
-		$error++;
-		$mesg='<div class="error">'.$langs->trans("ErrorDecimalLargerThanAreForbidden",$MAXDEC).'</div>';
-	}
-
-	if ($_POST["MAIN_MAX_DECIMALS_UNIT"]  < 0
-	 || $_POST["MAIN_MAX_DECIMALS_TOT"]   < 0
-	 || $_POST["MAIN_MAX_DECIMALS_SHOWN"] < 0)
-	{
-		$langs->load("errors");
-		$error++;
-		$mesg='<div class="error">'.$langs->trans("ErrorNegativeValueNotAllowed").'</div>';
-	}
-
-	if ($_POST["MAIN_ROUNDING_RULE_TOT"])
-	{
-		if ($_POST["MAIN_ROUNDING_RULE_TOT"] * pow(10,$_POST["MAIN_MAX_DECIMALS_TOT"]) < 1)
-		{
-			$langs->load("errors");
-			$error++;
-			$mesg='<div class="error">'.$langs->trans("ErrorMAIN_ROUNDING_RULE_TOTCanMAIN_MAX_DECIMALS_TOT").'</div>';
-		}
-	}
-
-	if (! $error)
-	{
-		dolibarr_set_const($db, "MAIN_MAX_DECIMALS_UNIT",   $_POST["MAIN_MAX_DECIMALS_UNIT"],'chaine',0,'',$conf->entity);
-		dolibarr_set_const($db, "MAIN_MAX_DECIMALS_TOT",    $_POST["MAIN_MAX_DECIMALS_TOT"],'chaine',0,'',$conf->entity);
-		dolibarr_set_const($db, "MAIN_MAX_DECIMALS_SHOWN",  $_POST["MAIN_MAX_DECIMALS_SHOWN"],'chaine',0,'',$conf->entity);
-
-		dolibarr_set_const($db, "MAIN_ROUNDING_RULE_TOT",   $_POST["MAIN_ROUNDING_RULE_TOT"],'chaine',0,'',$conf->entity);
-
-		Header("Location: ".$_SERVER["PHP_SELF"]."?mainmenu=home&leftmenu=setup");
-		exit;
-	}
+    $error=0;
+    $MAXDEC=8;
+    if ($_POST["MAIN_MAX_DECIMALS_UNIT"]  > $MAXDEC
+    || $_POST["MAIN_MAX_DECIMALS_TOT"]   > $MAXDEC
+    || $_POST["MAIN_MAX_DECIMALS_SHOWN"] > $MAXDEC)
+    {
+        $error++;
+        $mesg='<div class="error">'.$langs->trans("ErrorDecimalLargerThanAreForbidden",$MAXDEC).'</div>';
+    }
+
+    if ($_POST["MAIN_MAX_DECIMALS_UNIT"]  < 0
+    || $_POST["MAIN_MAX_DECIMALS_TOT"]   < 0
+    || $_POST["MAIN_MAX_DECIMALS_SHOWN"] < 0)
+    {
+        $langs->load("errors");
+        $error++;
+        $mesg='<div class="error">'.$langs->trans("ErrorNegativeValueNotAllowed").'</div>';
+    }
+
+    if ($_POST["MAIN_ROUNDING_RULE_TOT"])
+    {
+        if ($_POST["MAIN_ROUNDING_RULE_TOT"] * pow(10,$_POST["MAIN_MAX_DECIMALS_TOT"]) < 1)
+        {
+            $langs->load("errors");
+            $error++;
+            $mesg='<div class="error">'.$langs->trans("ErrorMAIN_ROUNDING_RULE_TOTCanMAIN_MAX_DECIMALS_TOT").'</div>';
+        }
+    }
+
+    if (! $error)
+    {
+        dolibarr_set_const($db, "MAIN_MAX_DECIMALS_UNIT",   $_POST["MAIN_MAX_DECIMALS_UNIT"],'chaine',0,'',$conf->entity);
+        dolibarr_set_const($db, "MAIN_MAX_DECIMALS_TOT",    $_POST["MAIN_MAX_DECIMALS_TOT"],'chaine',0,'',$conf->entity);
+        dolibarr_set_const($db, "MAIN_MAX_DECIMALS_SHOWN",  $_POST["MAIN_MAX_DECIMALS_SHOWN"],'chaine',0,'',$conf->entity);
+
+        dolibarr_set_const($db, "MAIN_ROUNDING_RULE_TOT",   $_POST["MAIN_ROUNDING_RULE_TOT"],'chaine',0,'',$conf->entity);
+
+        Header("Location: ".$_SERVER["PHP_SELF"]."?mainmenu=home&leftmenu=setup");
+        exit;
+    }
 }
 
 
 
 /*
  * View
- */
+*/
 
 $form=new Form($db);
 
@@ -110,12 +110,12 @@ if ($action == 'edit')
 
     $var=!$var;
     print '<tr '.$bc[$var].'><td>';
-	print $form->textwithpicto($langs->trans("MAIN_MAX_DECIMALS_UNIT"),$langs->trans("ParameterActiveForNextInputOnly"));
+    print $form->textwithpicto($langs->trans("MAIN_MAX_DECIMALS_UNIT"),$langs->trans("ParameterActiveForNextInputOnly"));
     print '</td><td><input class="flat" name="MAIN_MAX_DECIMALS_UNIT" size="3" value="' . $conf->global->MAIN_MAX_DECIMALS_UNIT . '"></td></tr>';
 
     $var=!$var;
     print '<tr '.$bc[$var].'><td>';
-	print $form->textwithpicto($langs->trans("MAIN_MAX_DECIMALS_TOT"),$langs->trans("ParameterActiveForNextInputOnly"));
+    print $form->textwithpicto($langs->trans("MAIN_MAX_DECIMALS_TOT"),$langs->trans("ParameterActiveForNextInputOnly"));
     print '</td><td><input class="flat" name="MAIN_MAX_DECIMALS_TOT" size="3" value="' . $conf->global->MAIN_MAX_DECIMALS_TOT . '"></td></tr>';
 
     $var=!$var;
@@ -123,7 +123,7 @@ if ($action == 'edit')
 
     $var=!$var;
     print '<tr '.$bc[$var].'><td>';
-	print $form->textwithpicto($langs->trans("MAIN_ROUNDING_RULE_TOT"),$langs->trans("ParameterActiveForNextInputOnly"));
+    print $form->textwithpicto($langs->trans("MAIN_ROUNDING_RULE_TOT"),$langs->trans("ParameterActiveForNextInputOnly"));
     print '</td><td><input class="flat" name="MAIN_ROUNDING_RULE_TOT" size="3" value="' . $conf->global->MAIN_ROUNDING_RULE_TOT . '"></td></tr>';
 
     print '</table>';
@@ -167,6 +167,7 @@ else
     print '</div>';
 }
 
+
 $vat_rates=array();
 
 // TODO move to DAO class
@@ -178,15 +179,15 @@ $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;
-		}
-	}
+    $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
@@ -198,56 +199,57 @@ 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++)
-	{
-		$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";
-	}
+    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";
+    }
 }
 
-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").": ".$total_ht.' / '.$total_tva.' / '.$total_ttc."<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;
+$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=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;
+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";
+
+$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();
 
 $db->close();
-
 ?>
-- 
GitLab