Feature 5388: Print Invoices (documents) list gets too long. Fixed by default 180...
[fa-stable.git] / reporting / rep704.php
index 1c6b091f639ff832dc941408accae9fd0805e026..f62b2d192bc98d412ce4b2816dda1ba0df19a707 100644 (file)
@@ -1,33 +1,39 @@
 <?php
-
-$page_security = 2;
+/**********************************************************************
+    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_GLREP';
 // ----------------------------------------------------------------
 // $ Revision: 2.0 $
 // Creator:    Joe Hunt
 // date_:      2005-05-19
 // Title:      GL Accounts Transactions
 // ----------------------------------------------------------------
-$path_to_root="../";
+$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");
+include_once($path_to_root . "/includes/session.inc");
+include_once($path_to_root . "/admin/db/fiscalyears_db.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");
 
 //----------------------------------------------------------------------------------------------------
 
-// trial_inquiry_controls();
 print_GL_transactions();
 
 //----------------------------------------------------------------------------------------------------
 
 function print_GL_transactions()
 {
-       global $path_to_root;
-
-       include_once($path_to_root . "reporting/includes/pdf_report.inc");
+       global $path_to_root, $systypes_array;
 
-       $rep = new FrontReport(_('GL Account Transactions'), "GLAccountTransactions.pdf", user_pagesize());
        $dim = get_company_pref('use_dimension');
        $dimension = $dimension2 = 0;
 
@@ -40,34 +46,56 @@ function print_GL_transactions()
                $dimension = $_POST['PARAM_4'];
                $dimension2 = $_POST['PARAM_5'];
                $comments = $_POST['PARAM_6'];
+               $orientation = $_POST['PARAM_7'];
+               $destination = $_POST['PARAM_8'];
        }
-       else if ($dim == 1)
+       elseif ($dim == 1)
        {
                $dimension = $_POST['PARAM_4'];
                $comments = $_POST['PARAM_5'];
+               $orientation = $_POST['PARAM_6'];
+               $destination = $_POST['PARAM_7'];
        }
        else
        {
                $comments = $_POST['PARAM_4'];
+               $orientation = $_POST['PARAM_5'];
+               $destination = $_POST['PARAM_6'];
        }
-       $dec = user_price_dec();
+       if ($destination)
+               include_once($path_to_root . "/reporting/includes/excel_report.inc");
+       else
+               include_once($path_to_root . "/reporting/includes/pdf_report.inc");
+       $orientation = ($orientation ? 'L' : 'P');
 
-       $cols = array(0, 70, 90, 140, 210, 280, 340, 400, 450, 510, 570);
-       //------------0--1---2---3----4----5----6----7----8----9----10-------
-       //-----------------------dim1-dim2-----------------------------------
-       //-----------------------dim1----------------------------------------
-       //-------------------------------------------------------------------
-       $aligns = array('left', 'left', 'left', 'left', 'left', 'left', 'right', 'right', 'right');
+       $rep = new FrontReport(_('GL Account Transactions'), "GLAccountTransactions", user_pagesize(), 9, $orientation);
+       $dec = user_price_dec();
 
        if ($dim == 2)
-               $headers = array(_('Type'),     _('#'), _('Date'), _('Dimension')." 1", _('Dimension')." 2", 
+       {
+               $cols = array(0, 65, 105, 125, 175, 230, 290, 345, 405, 465, 525);
+               //------------0--1---2----3----4----5----6----7----8----9----10-------
+               //------------------------dim1-dim2-----------------------------------
+               $headers = array(_('Type'),     _('Ref'), _('#'),       _('Date'), _('Dimension')." 1", _('Dimension')." 2",
                        _('Person/Item'), _('Debit'),   _('Credit'), _('Balance'));
-       else if ($dim == 1)             
-               $headers = array(_('Type'),     _('#'), _('Date'), _('Dimension'), "", _('Person/Item'),
+       }
+       elseif ($dim == 1)
+       {
+               $cols = array(0, 65, 105, 125, 175, 260, 260, 345, 405, 465, 525);
+               //------------0--1---2----3----4----5----6----7----8----9----10-------
+               //------------------------dim1----------------------------------------
+               $headers = array(_('Type'),     _('Ref'), _('#'),       _('Date'), _('Dimension'), "", _('Person/Item'),
                        _('Debit'),     _('Credit'), _('Balance'));
-       else    
-               $headers = array(_('Type'),     _('#'), _('Date'), "", "", _('Person/Item'),
+       }
+       else
+       {
+               $cols = array(0, 65, 105, 125, 175, 175, 175, 345, 405, 465, 525);
+               //------------0--1---2----3----4----5----6----7----8----9----10-------
+               //--------------------------------------------------------------------
+               $headers = array(_('Type'),     _('Ref'), _('#'),       _('Date'), "", "", _('Person/Item'),
                        _('Debit'),     _('Credit'), _('Balance'));
+       }
+       $aligns = array('left', 'left', 'left', 'left', 'left', 'left', 'left', 'right', 'right', 'right');
 
        if ($dim == 2)
        {
@@ -79,7 +107,7 @@ function print_GL_transactions()
                        4 => array('text' => _('Dimension')." 2", 'from' => get_dimension_string($dimension2),
                             'to' => ''));
     }
-    else if ($dim == 1)
+    elseif ($dim == 1)
     {
        $params =   array(      0 => $comments,
                                    1 => array('text' => _('Period'), 'from' => $from, 'to' => $to),
@@ -93,75 +121,91 @@ function print_GL_transactions()
                                    1 => array('text' => _('Period'), 'from' => $from, 'to' => $to),
                                    2 => array('text' => _('Accounts'),'from' => $fromacc,'to' => $toacc));
     }
-       
+    if ($orientation == 'L')
+       recalculate_cols($cols);
+
        $rep->Font();
        $rep->Info($params, $cols, $headers, $aligns);
-       $rep->Header();
+       $rep->NewPage();
 
        $accounts = get_gl_accounts($fromacc, $toacc);
 
-       while ($account=db_fetch($accounts)) 
+       while ($account=db_fetch($accounts))
        {
-               $begin = begin_fiscalyear();
                if (is_account_balancesheet($account["account_code"]))
                        $begin = "";
-               elseif ($from < $begin)
-                       $begin = $from;
+               else
+               {
+                       $begin = get_fiscalyear_begin_for_date($from);
+                       if (date1_greater_date2($begin, $from))
+                               $begin = $from;
+                       $begin = add_days($begin, -1);
+               }
                $prev_balance = get_gl_balance_from_to($begin, $from, $account["account_code"], $dimension, $dimension2);
 
                $trans = get_gl_transactions($from, $to, -1, $account['account_code'], $dimension, $dimension2);
                $rows = db_num_rows($trans);
                if ($prev_balance == 0.0 && $rows == 0)
                        continue;
-               $rep->Font('bold');     
-               $rep->TextCol(0, 3,     $account['account_code'] . " " . $account['account_name']);
-               $rep->TextCol(3, 5, _('Opening Balance'));
+               $rep->Font('bold');
+               $rep->TextCol(0, 4,     $account['account_code'] . " " . $account['account_name'], -2);
+               $rep->TextCol(4, 6, _('Opening Balance'));
                if ($prev_balance > 0.0)
-                       $rep->TextCol(6, 7,     number_format2(abs($prev_balance), $dec));
+                       $rep->AmountCol(7, 8, abs($prev_balance), $dec);
                else
-                       $rep->TextCol(7, 8,     number_format2(abs($prev_balance), $dec));
-               $rep->Font();   
+                       $rep->AmountCol(8, 9, abs($prev_balance), $dec);
+               $rep->Font();
                $total = $prev_balance;
                $rep->NewLine(2);
-               if ($rows > 0) 
+               if ($rows > 0)
                {
                        while ($myrow=db_fetch($trans))
                        {
                                $total += $myrow['amount'];
 
-                               $rep->TextCol(0, 1,     systypes::name($myrow["type"]));
-                               $rep->TextCol(1, 2,     $myrow['type_no']);
-                               $rep->TextCol(2, 3,     sql2date($myrow["tran_date"]));
+                               $rep->TextCol(0, 1, $systypes_array[$myrow["type"]], -2);
+                               $reference = get_reference($myrow["type"], $myrow["type_no"]);
+                               $rep->TextCol(1, 2, $reference);
+                               $rep->TextCol(2, 3,     $myrow['type_no'], -2);
+                               $rep->DateCol(3, 4,     $myrow["tran_date"], true);
                                if ($dim >= 1)
-                                       $rep->TextCol(3, 4,     get_dimension_string($myrow['dimension_id']));
+                                       $rep->TextCol(4, 5,     get_dimension_string($myrow['dimension_id']));
                                if ($dim > 1)
-                                       $rep->TextCol(4, 5,     get_dimension_string($myrow['dimension2_id']));
-                               $rep->TextCol(5, 6,     payment_person_types::person_name($myrow["person_type_id"],$myrow["person_id"], false));
+                                       $rep->TextCol(5, 6,     get_dimension_string($myrow['dimension2_id']));
+                               $txt = payment_person_name($myrow["person_type_id"],$myrow["person_id"], false);
+                               $memo = $myrow['memo_'];
+                               if ($txt != "")
+                               {
+                                       if ($memo != "")
+                                               $txt = $txt."/".$memo;
+                               }
+                               else
+                                       $txt = $memo;
+                               $rep->TextCol(6, 7,     $txt, -2);
                                if ($myrow['amount'] > 0.0)
-                                       $rep->TextCol(6, 7,     number_format2(abs($myrow['amount']), $dec));
-                               else    
-                                       $rep->TextCol(7, 8,     number_format2(abs($myrow['amount']), $dec));
-                               $rep->TextCol(8, 9,     number_format2($total, $dec));
+                                       $rep->AmountCol(7, 8, abs($myrow['amount']), $dec);
+                               else
+                                       $rep->AmountCol(8, 9, abs($myrow['amount']), $dec);
+                               $rep->TextCol(9, 10, number_format2($total, $dec));
                                $rep->NewLine();
-                               if ($rep->row < $rep->bottomMargin + $rep->lineHeight) 
+                               if ($rep->row < $rep->bottomMargin + $rep->lineHeight)
                                {
                                        $rep->Line($rep->row - 2);
-                                       $rep->Header();
+                                       $rep->NewPage();
                                }
                        }
                        $rep->NewLine();
                }
-               $rep->Font('bold');     
-               $rep->TextCol(3, 5,     _("Ending Balance"));
+               $rep->Font('bold');
+               $rep->TextCol(4, 6,     _("Ending Balance"));
                if ($total > 0.0)
-                       $rep->TextCol(6, 7,     number_format2(abs($total), $dec));
+                       $rep->AmountCol(7, 8, abs($total), $dec);
                else
-                       $rep->TextCol(7, 8,     number_format2(abs($total), $dec));
-               $rep->Font();   
+                       $rep->AmountCol(8, 9, abs($total), $dec);
+               $rep->Font();
                $rep->Line($rep->row - $rep->lineHeight + 4);
                $rep->NewLine(2, 1);
        }
        $rep->End();
 }
 
-?>
\ No newline at end of file