2 /**********************************************************************
3 Copyright (C) FrontAccounting, LLC.
4 Released under the terms of the GNU General Public License, GPL,
5 as published by the Free Software Foundation, either version 3
6 of the License, or (at your option) any later version.
7 This program is distributed in the hope that it will be useful,
8 but WITHOUT ANY WARRANTY; without even the implied warranty of
9 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
10 See the License here <http://www.gnu.org/licenses/gpl-3.0.html>.
11 ***********************************************************************/
12 $page_security = 'SA_GLTRANSVIEW';
13 $path_to_root = "../..";
14 include_once($path_to_root . "/includes/session.inc");
16 include($path_to_root . "/includes/db_pager.inc");
18 include_once($path_to_root . "/admin/db/fiscalyears_db.inc");
19 include_once($path_to_root . "/includes/date_functions.inc");
20 include_once($path_to_root . "/includes/ui.inc");
21 include_once($path_to_root . "/includes/data_checks.inc");
23 include_once($path_to_root . "/gl/includes/gl_db.inc");
27 if ($SysPrefs->use_popup_windows)
28 $js .= get_js_open_window(800, 500);
29 if (user_use_date_picker())
30 $js .= get_js_date_picker();
32 page(_($help_context = "General Ledger Inquiry"), false, false, '', $js);
34 //----------------------------------------------------------------------------------------------------
39 $Ajax->activate('trans_tbl');
42 if (isset($_GET["account"]))
43 $_POST["account"] = $_GET["account"];
44 if (isset($_GET["TransFromDate"]))
45 $_POST["TransFromDate"] = $_GET["TransFromDate"];
46 if (isset($_GET["TransToDate"]))
47 $_POST["TransToDate"] = $_GET["TransToDate"];
48 if (isset($_GET["Dimension"]))
49 $_POST["Dimension"] = $_GET["Dimension"];
50 if (isset($_GET["Dimension2"]))
51 $_POST["Dimension2"] = $_GET["Dimension2"];
52 if (isset($_GET["amount_min"]))
53 $_POST["amount_min"] = $_GET["amount_min"];
54 if (isset($_GET["amount_max"]))
55 $_POST["amount_max"] = $_GET["amount_max"];
57 if (!isset($_POST["amount_min"]))
58 $_POST["amount_min"] = price_format(0);
59 if (!isset($_POST["amount_max"]))
60 $_POST["amount_max"] = price_format(0);
62 //----------------------------------------------------------------------------------------------------
64 function gl_inquiry_controls()
66 $dim = get_company_pref('use_dimension');
69 start_table(TABLESTYLE_NOBORDER);
71 gl_all_accounts_list_cells(_("Account:"), 'account', null, false, false, _("All Accounts"));
72 date_cells(_("from:"), 'TransFromDate', '', null, -user_transaction_days());
73 date_cells(_("to:"), 'TransToDate');
77 start_table(TABLESTYLE_NOBORDER);
80 dimensions_list_cells(_("Dimension")." 1:", 'Dimension', null, true, " ", false, 1);
82 dimensions_list_cells(_("Dimension")." 2:", 'Dimension2', null, true, " ", false, 2);
84 ref_cells(_("Memo:"), 'Memo', '',null, _('Enter memo fragment or leave empty'));
85 small_amount_cells(_("Amount min:"), 'amount_min', null, " ");
86 small_amount_cells(_("Amount max:"), 'amount_max', null, " ");
87 submit_cells('Show',_("Show"),'','', 'default');
95 //----------------------------------------------------------------------------------------------------
97 function show_results()
99 global $path_to_root, $systypes_array;
101 if (!isset($_POST["account"]))
102 $_POST["account"] = null;
104 $act_name = $_POST["account"] ? get_gl_account_name($_POST["account"]) : "";
105 $dim = get_company_pref('use_dimension');
107 /*Now get the transactions */
108 if (!isset($_POST['Dimension']))
109 $_POST['Dimension'] = 0;
110 if (!isset($_POST['Dimension2']))
111 $_POST['Dimension2'] = 0;
112 $result = get_gl_transactions($_POST['TransFromDate'], $_POST['TransToDate'], -1,
113 $_POST["account"], $_POST['Dimension'], $_POST['Dimension2'], null,
114 input_num('amount_min'), input_num('amount_max'), null, null, $_POST['Memo']);
116 $colspan = ($dim == 2 ? "7" : ($dim == 1 ? "6" : "5"));
118 if ($_POST["account"] != null)
119 display_heading($_POST["account"]. " ".$act_name);
121 // Only show balances if an account is specified AND we're not filtering by amounts
122 $show_balances = $_POST["account"] != null &&
123 input_num("amount_min") == 0 &&
124 input_num("amount_max") == 0;
126 start_table(TABLESTYLE);
128 $first_cols = array(_("Type"), _("#"), _("Reference"), _("Date"));
130 if ($_POST["account"] == null)
131 $account_col = array(_("Account"));
133 $account_col = array();
136 $dim_cols = array(_("Dimension")." 1", _("Dimension")." 2");
138 $dim_cols = array(_("Dimension"));
143 $remaining_cols = array(_("Person/Item"), _("Debit"), _("Credit"), _("Balance"), _("Memo"), "");
145 $remaining_cols = array(_("Person/Item"), _("Debit"), _("Credit"), _("Memo"), "");
147 $th = array_merge($first_cols, $account_col, $dim_cols, $remaining_cols);
150 if ($_POST["account"] != null && is_account_balancesheet($_POST["account"]))
154 $begin = get_fiscalyear_begin_for_date($_POST['TransFromDate']);
155 if (date1_greater_date2($begin, $_POST['TransFromDate']))
156 $begin = $_POST['TransFromDate'];
157 $begin = add_days($begin, -1);
161 if ($show_balances) {
162 $bfw = get_gl_balance_from_to($begin, $_POST['TransFromDate'], $_POST["account"], $_POST['Dimension'], $_POST['Dimension2']);
163 start_row("class='inquirybg'");
164 label_cell("<b>"._("Opening Balance")." - ".$_POST['TransFromDate']."</b>", "colspan=$colspan");
165 display_debit_or_credit_cells($bfw, true);
171 $running_total = $bfw;
173 $k = 0; //row colour counter
175 while ($myrow = db_fetch($result))
178 alt_table_row_color($k);
180 $running_total += $myrow["amount"];
182 $trandate = sql2date($myrow["tran_date"]);
184 label_cell($systypes_array[$myrow["type"]]);
185 label_cell(get_gl_view_str($myrow["type"], $myrow["type_no"], $myrow["type_no"], true));
186 label_cell(get_trans_view_str($myrow["type"],$myrow["type_no"],$myrow['reference']));
187 label_cell($trandate);
189 if ($_POST["account"] == null)
190 label_cell($myrow["account"] . ' ' . get_gl_account_name($myrow["account"]));
193 label_cell(get_dimension_string($myrow['dimension_id'], true));
195 label_cell(get_dimension_string($myrow['dimension2_id'], true));
196 label_cell(payment_person_name($myrow["person_type_id"],$myrow["person_id"]));
197 display_debit_or_credit_cells($myrow["amount"]);
199 amount_cell($running_total);
200 if ($myrow['memo_'] == "")
201 $myrow['memo_'] = get_comments_string($myrow['type'], $myrow['type_no']);
202 label_cell($myrow['memo_']);
203 if ($myrow["type"] == ST_JOURNAL)
204 echo "<td>" . trans_editor_link( $myrow["type"], $myrow["type_no"]) . "</td>";
218 if ($show_balances) {
219 start_row("class='inquirybg'");
220 label_cell("<b>" . _("Ending Balance") ." - ".$_POST['TransToDate']. "</b>", "colspan=$colspan");
221 display_debit_or_credit_cells($running_total, true);
228 if (db_num_rows($result) == 0)
229 display_note(_("No general ledger transactions have been created for the specified criteria."), 0, 1);
233 //----------------------------------------------------------------------------------------------------
235 gl_inquiry_controls();
237 div_start('trans_tbl');
239 if (get_post('Show') || get_post('account'))
244 //----------------------------------------------------------------------------------------------------