PHP 7.X produces A non-numeric value encountered in \includes\date_functions.inc...
[fa-stable.git] / gl / inquiry / gl_trial_balance.php
index 12aa232445eb8404c49d476992d4877348d43b22..0dd1dcfa0327ef8f740b374d8c0acf89b2d70724 100644 (file)
@@ -1,12 +1,12 @@
 <?php
 /**********************************************************************
     Copyright (C) FrontAccounting, LLC.
 <?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 
+       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
        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.  
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
     See the License here <http://www.gnu.org/licenses/gpl-3.0.html>.
 ***********************************************************************/
 $page_security = 'SA_GLANALYTIC';
     See the License here <http://www.gnu.org/licenses/gpl-3.0.html>.
 ***********************************************************************/
 $page_security = 'SA_GLANALYTIC';
@@ -22,7 +22,7 @@ include_once($path_to_root . "/includes/data_checks.inc");
 include_once($path_to_root . "/gl/includes/gl_db.inc");
 
 $js = "";
 include_once($path_to_root . "/gl/includes/gl_db.inc");
 
 $js = "";
-if ($use_date_picker)
+if (user_use_date_picker())
        $js = get_js_date_picker();
 
 page(_($help_context = "Trial Balance"), false, false, "", $js);
        $js = get_js_date_picker();
 
 page(_($help_context = "Trial Balance"), false, false, "", $js);
@@ -33,7 +33,7 @@ $pdeb = $pcre = $cdeb = $ccre = $tdeb = $tcre = $pbal = $cbal = $tbal = 0;
 //----------------------------------------------------------------------------------------------------
 // Ajax updates
 //
 //----------------------------------------------------------------------------------------------------
 // Ajax updates
 //
-if (get_post('Show')) 
+if (get_post('Show'))
 {
        $Ajax->activate('balance_tbl');
 }
 {
        $Ajax->activate('balance_tbl');
 }
@@ -46,7 +46,13 @@ function gl_inquiry_controls()
 
     start_table(TABLESTYLE_NOBORDER);
 
 
     start_table(TABLESTYLE_NOBORDER);
 
-    date_cells(_("From:"), 'TransFromDate', '', null, -30);
+       $date = today();
+       if (!isset($_POST['TransToDate']))
+               $_POST['TransToDate'] = end_month($date);
+       if (!isset($_POST['TransFromDate']))
+               $_POST['TransFromDate'] = add_days(end_month($date), -user_transaction_days());
+       start_row();    
+    date_cells(_("From:"), 'TransFromDate');
        date_cells(_("To:"), 'TransToDate');
        if ($dim >= 1)
                dimensions_list_cells(_("Dimension")." 1:", 'Dimension', null, true, " ", false, 1);
        date_cells(_("To:"), 'TransToDate');
        if ($dim >= 1)
                dimensions_list_cells(_("Dimension")." 1:", 'Dimension', null, true, " ", false, 1);
@@ -54,8 +60,8 @@ function gl_inquiry_controls()
                dimensions_list_cells(_("Dimension")." 2:", 'Dimension2', null, true, " ", false, 2);
        check_cells(_("No zero values"), 'NoZero', null);
        check_cells(_("Only balances"), 'Balance', null);
                dimensions_list_cells(_("Dimension")." 2:", 'Dimension2', null, true, " ", false, 2);
        check_cells(_("No zero values"), 'NoZero', null);
        check_cells(_("Only balances"), 'Balance', null);
-
        submit_cells('Show',_("Show"),'','', 'default');
        submit_cells('Show',_("Show"),'','', 'default');
+       end_row();
     end_table();
     end_form();
 }
     end_table();
     end_form();
 }
@@ -64,33 +70,51 @@ function gl_inquiry_controls()
 
 function display_trial_balance($type, $typename)
 {
 
 function display_trial_balance($type, $typename)
 {
-       global $path_to_root;
-       
-       global $k, $pdeb, $pcre, $cdeb, $ccre, $tdeb, $tcre, $pbal, $cbal, $tbal;
-       $printtitle = 0; //Flag for printing type name          
+       global $path_to_root, $SysPrefs,
+                $k, $pdeb, $pcre, $cdeb, $ccre, $tdeb, $tcre, $pbal, $cbal, $tbal;
+
+       $printtitle = 0; //Flag for printing type name
 
        $k = 0;
 
 
        $k = 0;
 
-       //$accounts = get_gl_accounts();
        //Get Accounts directly under this group/type
        //Get Accounts directly under this group/type
-       $accounts = get_gl_accounts(null, null, $type);         
-       
-       $begin = begin_fiscalyear();
+       $accounts = get_gl_accounts(null, null, $type);
+
+       $begin = get_fiscalyear_begin_for_date($_POST['TransFromDate']);
        if (date1_greater_date2($begin, $_POST['TransFromDate']))
                $begin = $_POST['TransFromDate'];
        $begin = add_days($begin, -1);
        if (date1_greater_date2($begin, $_POST['TransFromDate']))
                $begin = $_POST['TransFromDate'];
        $begin = add_days($begin, -1);
-       
+
+       $Apdeb=$pdeb;
+       $Apcre=$pcre;
+       $Acdeb=$cdeb;
+       $Accre=$ccre;
+       $Atdeb=$tdeb;
+       $Atcre=$tcre;
+       $Apbal=$pbal;
+       $Acbal=$cbal;
+       $Atbal=$tbal;
+
        while ($account = db_fetch($accounts))
        {
        while ($account = db_fetch($accounts))
        {
-               //Print Type Title if it has atleast one non-zero account       
+               //Print Type Title if it has atleast one non-zero account
                if (!$printtitle)
                if (!$printtitle)
-               {       
+               {
                        start_row("class='inquirybg' style='font-weight:bold'");
                        label_cell(_("Group")." - ".$type ." - ".$typename, "colspan=8");
                        start_row("class='inquirybg' style='font-weight:bold'");
                        label_cell(_("Group")." - ".$type ." - ".$typename, "colspan=8");
-                       end_row();              
-                       $printtitle = 1;                
-               }       
-       
+                       end_row();
+                       $printtitle = 1;
+               }
+
+               // FA doesn't really clear the closed year, therefore the brought forward balance includes all the transactions from the past, even though the balance is null.
+               // If we want to remove the balanced part for the past years, this option removes the common part from from the prev and tot figures.
+               if (@$SysPrefs->clear_trial_balance_opening)
+               {
+                       $open = get_balance($account["account_code"], $_POST['Dimension'], $_POST['Dimension2'], $begin,  $begin, false, true);
+                       $offset = min($open['debit'], $open['credit']);
+               } else
+                       $offset = 0;
+
                $prev = get_balance($account["account_code"], $_POST['Dimension'], $_POST['Dimension2'], $begin, $_POST['TransFromDate'], false, false);
                $curr = get_balance($account["account_code"], $_POST['Dimension'], $_POST['Dimension2'], $_POST['TransFromDate'], $_POST['TransToDate'], true, true);
                $tot = get_balance($account["account_code"], $_POST['Dimension'], $_POST['Dimension2'], $begin, $_POST['TransToDate'], false, true);
                $prev = get_balance($account["account_code"], $_POST['Dimension'], $_POST['Dimension2'], $begin, $_POST['TransFromDate'], false, false);
                $curr = get_balance($account["account_code"], $_POST['Dimension'], $_POST['Dimension2'], $_POST['TransFromDate'], $_POST['TransToDate'], true, true);
                $tot = get_balance($account["account_code"], $_POST['Dimension'], $_POST['Dimension2'], $begin, $_POST['TransToDate'], false, true);
@@ -107,23 +131,23 @@ function display_trial_balance($type, $typename)
                        display_debit_or_credit_cells($prev['balance']);
                        display_debit_or_credit_cells($curr['balance']);
                        display_debit_or_credit_cells($tot['balance']);
                        display_debit_or_credit_cells($prev['balance']);
                        display_debit_or_credit_cells($curr['balance']);
                        display_debit_or_credit_cells($tot['balance']);
-                       
+
                }
                else
                {
                }
                else
                {
-                       amount_cell($prev['debit']);
-                       amount_cell($prev['credit']);
+                       amount_cell($prev['debit']-$offset);
+                       amount_cell($prev['credit']-$offset);
                        amount_cell($curr['debit']);
                        amount_cell($curr['credit']);
                        amount_cell($curr['debit']);
                        amount_cell($curr['credit']);
-                       amount_cell($tot['debit']);
-                       amount_cell($tot['credit']);
+                       amount_cell($tot['debit']-$offset);
+                       amount_cell($tot['credit']-$offset);
                        $pdeb += $prev['debit'];
                        $pcre += $prev['credit'];
                        $cdeb += $curr['debit'];
                        $ccre += $curr['credit'];
                        $tdeb += $tot['debit'];
                        $tcre += $tot['credit'];
                        $pdeb += $prev['debit'];
                        $pcre += $prev['credit'];
                        $cdeb += $curr['debit'];
                        $ccre += $curr['credit'];
                        $tdeb += $tot['debit'];
                        $tcre += $tot['credit'];
-               }       
+               }
                $pbal += $prev['balance'];
                $cbal += $curr['balance'];
                $tbal += $tot['balance'];
                $pbal += $prev['balance'];
                $cbal += $curr['balance'];
                $tbal += $tot['balance'];
@@ -139,11 +163,32 @@ function display_trial_balance($type, $typename)
                {
                        start_row("class='inquirybg' style='font-weight:bold'");
                        label_cell(_("Group")." - ".$type ." - ".$typename, "colspan=8");
                {
                        start_row("class='inquirybg' style='font-weight:bold'");
                        label_cell(_("Group")." - ".$type ." - ".$typename, "colspan=8");
-                       end_row();              
-                       $printtitle = 1;                
+                       end_row();
+                       $printtitle = 1;
+
                }
                display_trial_balance($accounttype["id"], $accounttype["name"].' ('.$typename.')');
        }
                }
                display_trial_balance($accounttype["id"], $accounttype["name"].' ('.$typename.')');
        }
+
+       start_row("class='inquirybg' style='font-weight:bold'");
+       label_cell(_("Total") ." - ".$typename, "colspan=2");
+
+       if (!check_value('Balance'))
+       {
+               amount_cell($pdeb-$Apdeb );
+               amount_cell($pcre-$Apcre);
+               amount_cell($cdeb-$Acdeb );
+               amount_cell($ccre-$Accre );
+               amount_cell($tdeb-$Atdeb );
+               amount_cell($tcre-$Atcre);
+       }
+       else
+       {
+               display_debit_or_credit_cells($pbal-$Apbal);
+               display_debit_or_credit_cells($cbal-$Acbal );
+               display_debit_or_credit_cells($tbal-$Atbal);
+       }
+       end_row();
 }
 
 //----------------------------------------------------------------------------------------------------
 }
 
 //----------------------------------------------------------------------------------------------------
@@ -158,8 +203,8 @@ if (isset($_POST['TransFromDate']))
                display_error(_("The from date cannot be bigger than the fiscal year end."));
                set_focus('TransFromDate');
                return;
                display_error(_("The from date cannot be bigger than the fiscal year end."));
                set_focus('TransFromDate');
                return;
-       }       
-}      
+       }
+}
 div_start('balance_tbl');
 if (!isset($_POST['Dimension']))
        $_POST['Dimension'] = 0;
 div_start('balance_tbl');
 if (!isset($_POST['Dimension']))
        $_POST['Dimension'] = 0;
@@ -200,36 +245,31 @@ while ($class = db_fetch($classresult))
        }
 }
 
        }
 }
 
-       //$prev = get_balance(null, $begin, $_POST['TransFromDate'], false, false);
-       //$curr = get_balance(null, $_POST['TransFromDate'], $_POST['TransToDate'], true, true);
-       //$tot = get_balance(null, $begin, $_POST['TransToDate'], false, true);
-       if (!check_value('Balance'))
-       {
-               start_row("class='inquirybg' style='font-weight:bold'");
-               label_cell(_("Total") ." - ".$_POST['TransToDate'], "colspan=2");
-               amount_cell($pdeb);
-               amount_cell($pcre);
-               amount_cell($cdeb);
-               amount_cell($ccre);
-               amount_cell($tdeb);
-               amount_cell($tcre);
-               end_row();
-       }       
+if (!check_value('Balance'))
+{
        start_row("class='inquirybg' style='font-weight:bold'");
        start_row("class='inquirybg' style='font-weight:bold'");
-       label_cell(_("Ending Balance") ." - ".$_POST['TransToDate'], "colspan=2");
-       display_debit_or_credit_cells($pbal);
-       display_debit_or_credit_cells($cbal);
-       display_debit_or_credit_cells($tbal);
+       label_cell(_("Total") ." - ".$_POST['TransToDate'], "colspan=2");
+       amount_cell($pdeb);
+       amount_cell($pcre);
+       amount_cell($cdeb);
+       amount_cell($ccre);
+       amount_cell($tdeb);
+       amount_cell($tcre);
        end_row();
        end_row();
-
-       end_table(1);
-       if (($pbal = round2($pbal, user_price_dec())) != 0 && $_POST['Dimension'] == 0 && $_POST['Dimension2'] == 0)
-               display_warning(_("The Opening Balance is not in balance, probably due to a non closed Previous Fiscalyear."));
-       div_end();
+}
+start_row("class='inquirybg' style='font-weight:bold'");
+label_cell(_("Ending Balance") ." - ".$_POST['TransToDate'], "colspan=2");
+display_debit_or_credit_cells($pbal);
+display_debit_or_credit_cells($cbal);
+display_debit_or_credit_cells($tbal);
+end_row();
+
+end_table(1);
+if (($pbal = round2($pbal, user_price_dec())) != 0 && $_POST['Dimension'] == 0 && $_POST['Dimension2'] == 0)
+       display_warning(_("The Opening Balance is not in balance, probably due to a non closed Previous Fiscalyear."));
+div_end();
 
 //----------------------------------------------------------------------------------------------------
 
 end_page();
 
 
 //----------------------------------------------------------------------------------------------------
 
 end_page();
 
-?>
-