Improved Customer and Supplier Balances Report. Option to choose last column as balance.
authorJoe Hunt <joe.hunt.consulting@gmail.com>
Fri, 19 Apr 2013 06:16:18 +0000 (08:16 +0200)
committerJoe Hunt <joe.hunt.consulting@gmail.com>
Fri, 19 Apr 2013 06:16:18 +0000 (08:16 +0200)
reporting/rep101.php
reporting/rep201.php
reporting/reports_main.php

index b098dad56f5c9740f1c6e32c54e8199da074cd4e..6bff59510dad8e2f30edd1c665c4e9dc8c216d58 100644 (file)
@@ -99,11 +99,12 @@ function print_customer_balances()
        $from = $_POST['PARAM_0'];
        $to = $_POST['PARAM_1'];
        $fromcust = $_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
@@ -132,6 +133,8 @@ function print_customer_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,
@@ -159,13 +162,20 @@ function print_customer_balances()
        while ($myrow = db_fetch($result))
        {
                if (!$convert && $currency != $myrow['curr_code']) continue;
-
+               
+               $accumulate = 0;
                $bal = get_open_balance($myrow['debtor_no'], $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);
 
                $res = get_transactions($myrow['debtor_no'], $from, $to);
                if ($no_zeros && db_num_rows($res) == 0) continue;
@@ -211,11 +221,13 @@ function print_customer_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);
@@ -223,24 +235,31 @@ function print_customer_balances()
                                $item[3] = $item[0] + $item[1] - $item[2];
                        else    
                                $item[3] = $item[0] - $item[1] + $item[2];
-                       $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);
                $rep->TextCol(0, 3, _('Total'));
                for ($i = 0; $i < 4; $i++)
                        $rep->AmountCol($i + 4, $i + 5, $total[$i], $dec);
-               $rep->Line($rep->row  - 4);
-               $rep->NewLine(2);
+               $rep->Line($rep->row  - 4);
+               $rep->NewLine(2);
        }
        $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);
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);
index edb270b2964f91c064e921d90f5cc22ba70317e6..77f00de76c208045d76bb6242f11be18f8e3596d 100644 (file)
@@ -34,6 +34,7 @@ $reports->addReport(RC_CUSTOMER, 101, _('Customer &Balances'),
        array(  _('Start Date') => 'DATEBEGIN',
                        _('End Date') => 'DATEENDM',
                        _('Customer') => 'CUSTOMERS_NO_FILTER',
+                       _('Show Balance') => 'YES_NO',
                        _('Currency Filter') => 'CURRENCY',
                        _('Suppress Zeros') => 'YES_NO',
                        _('Comments') => 'TEXTBOX',
@@ -148,6 +149,7 @@ $reports->addReport(RC_SUPPLIER, 201, _('Supplier &Balances'),
        array(  _('Start Date') => 'DATEBEGIN',
                        _('End Date') => 'DATEENDM',
                        _('Supplier') => 'SUPPLIERS_NO_FILTER',
+                       _('Show Balance') => 'YES_NO',
                        _('Currency Filter') => 'CURRENCY',
                        _('Suppress Zeros') => 'YES_NO',
                        _('Comments') => 'TEXTBOX',