0001013: Bank Statement w/Reconcile for print incorporated in core.
authorJoe Hunt <joe.hunt.consulting@gmail.com>
Wed, 31 Aug 2011 21:39:41 +0000 (23:39 +0200)
committerJoe Hunt <joe.hunt.consulting@gmail.com>
Wed, 31 Aug 2011 21:39:41 +0000 (23:39 +0200)
reporting/rep602.php [new file with mode: 0644]
reporting/reports_main.php

diff --git a/reporting/rep602.php b/reporting/rep602.php
new file mode 100644 (file)
index 0000000..fec3d0e
--- /dev/null
@@ -0,0 +1,220 @@
+<?php
+/**********************************************************************
+    Copyright (C) FrontAccounting, LLC.
+       Released under the terms of the GNU General Public License, GPL, 
+       as published by the Free Software Foundation, either version 3 
+       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 License here <http://www.gnu.org/licenses/gpl-3.0.html>.
+***********************************************************************/
+$page_security = 'SA_BANKREP';
+// ----------------------------------------------------------------
+// $ Revision: 2.3.3-1
+// Creator:    Chaitanya-India <3chaitanya@gmail.com>
+// date_:      2005-05-19
+// Title:      Bank Statements w/Reconcile
+// Desc:       Bank Statement w/ Reconcile like the normal Bank Statement but with reconcile columns\r
+// ----------------------------------------------------------------
+$path_to_root="..";
+
+include_once($path_to_root . "/includes/session.inc");
+include_once($path_to_root . "/includes/date_functions.inc");
+include_once($path_to_root . "/includes/data_checks.inc");
+include_once($path_to_root . "/gl/includes/gl_db.inc");
+
+//----------------------------------------------------------------------------------------------------
+
+print_bank_transactions_reconcile();
+
+//----------------------------------------------------------------------------------------------------
+
+function get_bank_balance_to($to, $account)
+{
+       $to = date2sql($to);
+       $sql = "SELECT SUM(amount) FROM ".TB_PREF."bank_trans WHERE bank_act='$account'
+       AND trans_date < '$to'";
+       $result = db_query($sql, "The starting balance on hand could not be calculated");
+       $row = db_fetch_row($result);
+       return $row[0];
+}
+
+function get_bank_transactions($from, $to, $account)
+{
+       $from = date2sql($from);
+       $to = date2sql($to);
+       $sql = "SELECT ".TB_PREF."bank_trans.*, ".TB_PREF."comments.memo_\r
+                       FROM ".TB_PREF."bank_trans LEFT JOIN ".TB_PREF."comments ON \r
+                       (".TB_PREF."bank_trans.type = ".TB_PREF."comments.type\r
+                       AND ".TB_PREF."bank_trans.trans_no = ".TB_PREF."comments.id)\r
+               WHERE ".TB_PREF."bank_trans.bank_act = '$account'
+               AND trans_date >= '$from'
+               AND trans_date <= '$to'
+               ORDER BY trans_date,".TB_PREF."bank_trans.id";
+
+       return db_query($sql,"The transactions for '$account' could not be retrieved");
+}
+
+function print_bank_transactions_reconcile()
+{
+       global $path_to_root, $systypes_array;
+
+       $acc = $_POST['PARAM_0'];
+       $from = $_POST['PARAM_1'];
+       $to = $_POST['PARAM_2'];
+       $comments = $_POST['PARAM_3'];
+       $destination = $_POST['PARAM_4'];
+       if ($destination)
+               include_once($path_to_root . "/reporting/includes/excel_report.inc");
+       else
+               include_once($path_to_root . "/reporting/includes/pdf_report.inc");
+
+       $rep = new FrontReport(_('Bank Statement w/Reconcile'), "BankStatementReconcile", user_pagesize(), 9, "L");
+       $dec = user_price_dec();
+
+       $cols = array(0, 90, 110, 170, 225, 450, 500, 550, 600, 660, 700);\r
+
+       $aligns = array('left', 'left', 'left', 'left', 'left', 'right', 'right', 'right', 'center', 'left');\r
+
+       $headers = array(_('Type'),     _('#'), _('Reference'), _('Date'), _('Person/Item'),
+               _('Debit'),     _('Credit'), _('Balance'), _('Reco Date'), _('Narration'));\r
+
+       $account = get_bank_account($acc);
+       $act = $account['bank_account_name']." - ".$account['bank_curr_code']." - ".$account['bank_account_number'];
+       $params =   array(      0 => $comments,
+           1 => array('text' => _('Period'), 'from' => $from, 'to' => $to),
+           2 => array('text' => _('Bank Account'),'from' => $act,'to' => ''));
+
+       $rep->Font();
+       $rep->Info($params, $cols, $headers, $aligns);
+       $rep->NewPage();
+
+
+       $prev_balance = get_bank_balance_to($from, $account["id"]);
+
+       $trans = get_bank_transactions($from, $to, $account['id']);
+
+       $rows = db_num_rows($trans);
+       if ($prev_balance != 0.0 || $rows != 0)
+       {
+               $rep->Font('bold');
+               $rep->TextCol(0, 3,     $act);
+               $rep->TextCol(3, 5, _('Opening Balance'));
+               if ($prev_balance > 0.0)
+                       $rep->AmountCol(5, 6, abs($prev_balance), $dec);
+               else
+                       $rep->AmountCol(6, 7, abs($prev_balance), $dec);
+               $rep->Font();
+               $total = $prev_balance;
+               $rep->NewLine(2);
+               if ($rows > 0)
+               {
+                       // Keep a running total as we loop through
+                       // the transactions.
+                       $total_debit = $total_credit = 0;                       \r
+                       
+                       while ($myrow=db_fetch($trans))
+                       {
+                               $total += $myrow['amount'];
+
+                               $rep->TextCol(0, 1, $systypes_array[$myrow["type"]]);
+                               $rep->TextCol(1, 2,     $myrow['trans_no']);
+                               $rep->TextCol(2, 3,     $myrow['ref']);
+                               $rep->DateCol(3, 4,     $myrow["trans_date"], true);
+                               $rep->TextCol(4, 5,     payment_person_name($myrow["person_type_id"],$myrow["person_id"], false));
+                               if ($myrow['amount'] > 0.0)
+                               {
+                                       $rep->AmountCol(5, 6, abs($myrow['amount']), $dec);
+                                       $total_debit += abs($myrow['amount']);
+                               }
+                               else
+                               {
+                                       $rep->AmountCol(6, 7, abs($myrow['amount']), $dec);
+                                       $total_credit += abs($myrow['amount']);
+                               }
+                               $rep->AmountCol(7, 8, $total, $dec);
+                               if ($myrow["reconciled"] && $myrow["reconciled"] != '0000-00-00')\r
+                                       $rep->DateCol(8, 9,     $myrow["reconciled"], true);\r
+                               $rep->TextCol(9, 10, $myrow['memo_']);\r
+                               $rep->NewLine();
+                               if ($rep->row < $rep->bottomMargin + $rep->lineHeight)
+                               {
+                                       $rep->Line($rep->row - 2);
+                                       $rep->NewPage();
+                               }
+                       }
+                       $rep->NewLine();
+               }
+               
+               // Print totals for the debit and credit columns.
+               $rep->TextCol(3, 5, _("Total Debit / Credit"));
+               $rep->AmountCol(5, 6, $total_debit, $dec);
+               $rep->AmountCol(6, 7, $total_credit, $dec);
+               $rep->NewLine(2);
+
+               $rep->Font('bold');
+               $rep->TextCol(3, 5,     _("Ending Balance"));
+               if ($total > 0.0)
+                       $rep->AmountCol(5, 6, abs($total), $dec);
+               else
+                       $rep->AmountCol(6, 7, abs($total), $dec);
+               $rep->Font();
+               $rep->NewLine(2);       \r
+               
+               // Print the difference between starting and ending balances.
+               $net_change = ($total - $prev_balance); 
+               $rep->TextCol(3, 5, _("Net Change"));
+               if ($total > 0.0)
+                       $rep->AmountCol(5, 6, $net_change, $dec, 0, 0, 0, 0, null, 1, True);
+               else
+                       $rep->AmountCol(6, 7, $net_change, $dec, 0, 0, 0, 0, null, 1, True);
+               $rep->Font();\r
+               $rep->NewLine(2);       \r
+               \r
+               // Calculate Bank Balance as per reco\r
+               $date = date2sql($to);\r
+               $sql = "SELECT SUM(IF(reconciled<='$date' AND reconciled !='0000-00-00', amount, 0)) as reconciled,\r
+                                SUM(amount) as books_total\r
+                       FROM ".TB_PREF."bank_trans trans\r
+                       WHERE bank_act=".db_escape($account['id'])."\r
+                       AND trans_date <= '$date'";     \r
+                       \r
+               //      ." AND trans.reconciled IS NOT NULL";\r
+               //display_notification($sql);\r
+               $t_result = db_query($sql,"Cannot retrieve reconciliation data");\r
+\r
+               if ($t_row = db_fetch($t_result)) {\r
+                       $books_total = $t_row['books_total'];\r
+                       $reconciled = $t_row['reconciled'];\r
+               }                       \r
+               $difference = $books_total - $reconciled;               \r
+               \r
+               // Bank Balance (by Reco)\r
+               $rep->Font('bold');\r
+               $rep->TextCol(3, 5,     _("Bank Balance"));\r
+               if ($reconciled > 0.0)\r
+                       $rep->AmountCol(5, 6, abs($reconciled), $dec);\r
+               else\r
+                       $rep->AmountCol(6, 7, abs($reconciled), $dec);\r
+               $rep->Font();\r
+               $rep->NewLine(2);       \r
+\r
+               // Reco Difference\r
+               $rep->Font('bold');\r
+               $rep->TextCol(3, 5,     _("Difference"));\r
+               if ($difference > 0.0)\r
+                       $rep->AmountCol(5, 6, abs($difference), $dec);\r
+               else\r
+                       $rep->AmountCol(6, 7, abs($difference), $dec);\r
+               $rep->Font();\r
+               $rep->NewLine(2);       \r
+                       \r
+               $rep->Line($rep->row - $rep->lineHeight + 4);\r
+               $rep->NewLine(2, 1);                    \r
+                       \r
+       }
+       $rep->End();
+}
+
+?>
\ No newline at end of file
index 718484a03b34e911c451d346e065485d78e80bb3..baeeba36f6141a78718853a0ec89f0a0a0940836 100644 (file)
@@ -224,13 +224,18 @@ if ($dim > 0)
        //              _('Comments'),'TEXTBOX')));
 }
 $reports->addReportClass(_('Banking'), RC_BANKING);
-       $reports->addReport(RC_BANKING,  601, _('Bank &Statement'),
+$reports->addReport(RC_BANKING,  601, _('Bank &Statement'),
+array( _('Bank Accounts') => 'BANK_ACCOUNTS',
+               _('Start Date') => 'DATEBEGINM',
+               _('End Date') => 'DATEENDM',
+               _('Comments') => 'TEXTBOX',
+               _('Destination') => 'DESTINATION'));
+$reports->addReport(RC_BANKING, 602, _('Bank Statement w/&Reconcile'),
        array(  _('Bank Accounts') => 'BANK_ACCOUNTS',
                        _('Start Date') => 'DATEBEGINM',
                        _('End Date') => 'DATEENDM',
                        _('Comments') => 'TEXTBOX',
                        _('Destination') => 'DESTINATION'));
-
 $reports->addReportClass(_('General Ledger'), RC_GL);
 $reports->addReport(RC_GL, 701, _('Chart of &Accounts'),
        array(  _('Show Balances') => 'YES_NO',