Access to system settings moved from global scope to SysPrefs.
[fa-stable.git] / gl / inquiry / gl_account_inquiry.php
1 <?php
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");
15
16
17 include_once($path_to_root . "/admin/db/fiscalyears_db.inc");
18 include_once($path_to_root . "/includes/date_functions.inc");
19 include_once($path_to_root . "/includes/ui.inc");
20 include_once($path_to_root . "/includes/data_checks.inc");
21
22 include_once($path_to_root . "/gl/includes/gl_db.inc");
23
24 $js = '';
25 set_focus('account');
26 if ($SysPrefs->use_popup_windows)
27         $js .= get_js_open_window(800, 500);
28 if (user_use_date_picker())
29         $js .= get_js_date_picker();
30
31 page(_($help_context = "General Ledger Inquiry"), false, false, '', $js);
32
33 //----------------------------------------------------------------------------------------------------
34 // Ajax updates
35 //
36 if (get_post('Show')) 
37 {
38         $Ajax->activate('trans_tbl');
39 }
40
41 if (isset($_GET["account"]))
42         $_POST["account"] = $_GET["account"];
43 if (isset($_GET["TransFromDate"]))
44         $_POST["TransFromDate"] = $_GET["TransFromDate"];
45 if (isset($_GET["TransToDate"]))
46         $_POST["TransToDate"] = $_GET["TransToDate"];
47 if (isset($_GET["Dimension"]))
48         $_POST["Dimension"] = $_GET["Dimension"];
49 if (isset($_GET["Dimension2"]))
50         $_POST["Dimension2"] = $_GET["Dimension2"];
51 if (isset($_GET["amount_min"]))
52         $_POST["amount_min"] = $_GET["amount_min"];
53 if (isset($_GET["amount_max"]))
54         $_POST["amount_max"] = $_GET["amount_max"];
55
56 if (!isset($_POST["amount_min"]))
57         $_POST["amount_min"] = price_format(0);
58 if (!isset($_POST["amount_max"]))
59         $_POST["amount_max"] = price_format(0);
60
61 //----------------------------------------------------------------------------------------------------
62
63 function gl_inquiry_controls()
64 {
65         $dim = get_company_pref('use_dimension');
66     start_form();
67
68     start_table(TABLESTYLE_NOBORDER);
69         start_row();
70     gl_all_accounts_list_cells(_("Account:"), 'account', null, false, false, _("All Accounts"));
71         date_cells(_("from:"), 'TransFromDate', '', null, -$_SESSION["wa_current_user"]->prefs->transaction_days());
72         date_cells(_("to:"), 'TransToDate');
73     end_row();
74         end_table();
75
76         start_table(TABLESTYLE_NOBORDER);
77         start_row();
78         if ($dim >= 1)
79                 dimensions_list_cells(_("Dimension")." 1:", 'Dimension', null, true, " ", false, 1);
80         if ($dim > 1)
81                 dimensions_list_cells(_("Dimension")." 2:", 'Dimension2', null, true, " ", false, 2);
82
83         small_amount_cells(_("Amount min:"), 'amount_min', null, " ");
84         small_amount_cells(_("Amount max:"), 'amount_max', null, " ");
85         submit_cells('Show',_("Show"),'','', 'default');
86         end_row();
87         end_table();
88
89         echo '<hr>';
90     end_form();
91 }
92
93 //----------------------------------------------------------------------------------------------------
94
95 function show_results()
96 {
97         global $path_to_root, $systypes_array;
98
99         if (!isset($_POST["account"]))
100                 $_POST["account"] = null;
101
102         $act_name = $_POST["account"] ? get_gl_account_name($_POST["account"]) : "";
103         $dim = get_company_pref('use_dimension');
104
105     /*Now get the transactions  */
106     if (!isset($_POST['Dimension']))
107         $_POST['Dimension'] = 0;
108     if (!isset($_POST['Dimension2']))
109         $_POST['Dimension2'] = 0;
110         $result = get_gl_transactions($_POST['TransFromDate'], $_POST['TransToDate'], -1,
111         $_POST["account"], $_POST['Dimension'], $_POST['Dimension2'], null,
112         input_num('amount_min'), input_num('amount_max'));
113
114         $colspan = ($dim == 2 ? "6" : ($dim == 1 ? "5" : "4"));
115
116         if ($_POST["account"] != null)
117                 display_heading($_POST["account"]. "&nbsp;&nbsp;&nbsp;".$act_name);
118
119         // Only show balances if an account is specified AND we're not filtering by amounts
120         $show_balances = $_POST["account"] != null && 
121                      input_num("amount_min") == 0 && 
122                      input_num("amount_max") == 0;
123                 
124         start_table(TABLESTYLE);
125         
126         $first_cols = array(_("Type"), _("#"), _("Date"));
127         
128         if ($_POST["account"] == null)
129             $account_col = array(_("Account"));
130         else
131             $account_col = array();
132         
133         if ($dim == 2)
134                 $dim_cols = array(_("Dimension")." 1", _("Dimension")." 2");
135         else if ($dim == 1)
136                 $dim_cols = array(_("Dimension"));
137         else
138                 $dim_cols = array();
139         
140         if ($show_balances)
141             $remaining_cols = array(_("Person/Item"), _("Debit"), _("Credit"), _("Balance"), _("Memo"));
142         else
143             $remaining_cols = array(_("Person/Item"), _("Debit"), _("Credit"), _("Memo"));
144             
145         $th = array_merge($first_cols, $account_col, $dim_cols, $remaining_cols);
146                         
147         table_header($th);
148         if ($_POST["account"] != null && is_account_balancesheet($_POST["account"]))
149                 $begin = "";
150         else
151         {
152                 $begin = get_fiscalyear_begin_for_date($_POST['TransFromDate']);
153                 if (date1_greater_date2($begin, $_POST['TransFromDate']))
154                         $begin = $_POST['TransFromDate'];
155                 $begin = add_days($begin, -1);
156         }
157
158         $bfw = 0;
159         if ($show_balances) {
160             $bfw = get_gl_balance_from_to($begin, $_POST['TransFromDate'], $_POST["account"], $_POST['Dimension'], $_POST['Dimension2']);
161         start_row("class='inquirybg'");
162         label_cell("<b>"._("Opening Balance")." - ".$_POST['TransFromDate']."</b>", "colspan=$colspan");
163         display_debit_or_credit_cells($bfw, true);
164         label_cell("");
165         label_cell("");
166         end_row();
167         }
168         
169         $running_total = $bfw;
170         $j = 1;
171         $k = 0; //row colour counter
172
173         while ($myrow = db_fetch($result))
174         {
175
176         alt_table_row_color($k);
177
178         $running_total += $myrow["amount"];
179
180         $trandate = sql2date($myrow["tran_date"]);
181
182         label_cell($systypes_array[$myrow["type"]]);
183                 label_cell(get_gl_view_str($myrow["type"], $myrow["type_no"], $myrow["type_no"], true));
184         label_cell($trandate);
185         
186         if ($_POST["account"] == null)
187             label_cell($myrow["account"] . ' ' . get_gl_account_name($myrow["account"]));
188         
189                 if ($dim >= 1)
190                         label_cell(get_dimension_string($myrow['dimension_id'], true));
191                 if ($dim > 1)
192                         label_cell(get_dimension_string($myrow['dimension2_id'], true));
193                 label_cell(payment_person_name($myrow["person_type_id"],$myrow["person_id"]));
194                 display_debit_or_credit_cells($myrow["amount"]);
195                 if ($show_balances)
196                     amount_cell($running_total);
197                 if ($myrow['memo_'] == "")
198                         $myrow['memo_'] = get_comments_string($myrow['type'], $myrow['type_no']);
199         label_cell($myrow['memo_']);
200         end_row();
201
202         $j++;
203         if ($j == 12)
204         {
205                 $j = 1;
206                 table_header($th);
207         }
208         }
209         //end of while loop
210
211         if ($show_balances) {
212         start_row("class='inquirybg'");
213         label_cell("<b>" . _("Ending Balance") ." - ".$_POST['TransToDate']. "</b>", "colspan=$colspan");
214         display_debit_or_credit_cells($running_total, true);
215         label_cell("");
216         label_cell("");
217         end_row();
218         }
219
220         end_table(2);
221         if (db_num_rows($result) == 0)
222                 display_note(_("No general ledger transactions have been created for the specified criteria."), 0, 1);
223
224 }
225
226 //----------------------------------------------------------------------------------------------------
227
228 gl_inquiry_controls();
229
230 div_start('trans_tbl');
231
232 if (get_post('Show') || get_post('account'))
233     show_results();
234
235 div_end();
236
237 //----------------------------------------------------------------------------------------------------
238
239 end_page();
240