Improved Customer and Supplier Balances Report. Option to choose last column as balance.
[fa-stable.git] / reporting / rep201.php
index 6e2af1c02cc15bfc1e580ff9825d5fec655cef67..6a9f2c2edf15fa5b912ea90130e4e16a5b5ca1d7 100644 (file)
@@ -88,11 +88,12 @@ function print_supplier_balances()
        $from = $_POST['PARAM_0'];
        $to = $_POST['PARAM_1'];
        $fromsupp = $_POST['PARAM_2'];
-       $currency = $_POST['PARAM_3'];
-       $no_zeros = $_POST['PARAM_4'];
-       $comments = $_POST['PARAM_5'];
-       $orientation = $_POST['PARAM_6'];
-       $destination = $_POST['PARAM_7'];
+       $show_balance = $_POST['PARAM_3'];
+       $currency = $_POST['PARAM_4'];
+       $no_zeros = $_POST['PARAM_5'];
+       $comments = $_POST['PARAM_6'];
+       $orientation = $_POST['PARAM_7'];
+       $destination = $_POST['PARAM_8'];
        if ($destination)
                include_once($path_to_root . "/reporting/includes/excel_report.inc");
        else
@@ -121,6 +122,8 @@ function print_supplier_balances()
        $headers = array(_('Trans Type'), _('#'), _('Date'), _('Due Date'), _('Charges'),
                _('Credits'), _('Allocated'), _('Outstanding'));
 
+       if ($show_balance)
+               $headers[7] = _('Balance');
        $aligns = array('left', 'left', 'left', 'left', 'right', 'right', 'right', 'right');
 
     $params =   array(         0 => $comments,
@@ -150,12 +153,19 @@ function print_supplier_balances()
        {
                if (!$convert && $currency != $myrow['curr_code'])
                        continue;
+               $accumulate = 0;
                $bal = get_open_balance($myrow['supplier_id'], $from, $convert);
                $init[0] = $init[1] = 0.0;
                $init[0] = round2(abs($bal['charges']), $dec);
                $init[1] = round2(Abs($bal['credits']), $dec);
                $init[2] = round2($bal['Allocated'], $dec);
-               $init[3] = round2($bal['OutStanding'], $dec);;
+               if ($show_balance)
+               {
+                       $init[3] = $init[0] - $init[1];
+                       $accumulate += $init[3];
+               }       
+               else    
+                       $init[3] = round2($bal['OutStanding'], $dec);
                $total = array(0,0,0,0);
                for ($i = 0; $i < 4; $i++)
                {
@@ -196,11 +206,13 @@ function print_supplier_balances()
                        {
                                $item[0] = round2(abs($trans['TotalAmount']) * $rate, $dec);
                                $rep->AmountCol(4, 5, $item[0], $dec);
+                               $accumulate += $item[0];
                        }
                        else
                        {
                                $item[1] = round2(abs($trans['TotalAmount']) * $rate, $dec);
                                $rep->AmountCol(5, 6, $item[1], $dec);
+                               $accumulate -= $item[1];
                        }
                        $item[2] = round2($trans['Allocated'] * $rate, $dec);
                        $rep->AmountCol(6, 7, $item[2], $dec);
@@ -208,12 +220,17 @@ function print_supplier_balances()
                                $item[3] = $item[0] - $item[2];
                        else    
                                $item[3] = ($item[1] - $item[2]) * -1;
-                       $rep->AmountCol(7, 8, $item[3], $dec);
+                       if ($show_balance)      
+                               $rep->AmountCol(7, 8, $accumulate, $dec);
+                       else    
+                               $rep->AmountCol(7, 8, $item[3], $dec);
                        for ($i = 0; $i < 4; $i++)
                        {
                                $total[$i] += $item[$i];
                                $grandtotal[$i] += $item[$i];
                        }
+                       if ($show_balance)
+                               $total[3] = $total[0] - $total[1];
                }
                $rep->Line($rep->row - 8);
                $rep->NewLine(2);
@@ -229,6 +246,8 @@ function print_supplier_balances()
        $rep->fontSize += 2;
        $rep->TextCol(0, 3,     _('Grand Total'));
        $rep->fontSize -= 2;
+       if ($show_balance)
+               $grandtotal[3] = $grandtotal[0] - $grandtotal[1];
        for ($i = 0; $i < 4; $i++)
                $rep->AmountCol($i + 4, $i + 5,$grandtotal[$i], $dec);
        $rep->Line($rep->row  - 4);