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_BANKACCOUNT';
13 $path_to_root = "../..";
14 include($path_to_root . "/includes/db_pager.inc");
15 include($path_to_root . "/includes/session.inc");
18 if (user_use_date_picker())
19 $js .= get_js_date_picker();
21 page(_($help_context = "Bank Accounts"), isset($_GET['bank_id']), false, "", $js);
23 include($path_to_root . "/includes/ui.inc");
24 include_once($path_to_root . "/includes/ui/attachment.inc");
28 if (isset($_GET['bank_id']))
30 $_POST['bank_id'] = $_GET['bank_id'];
33 $bank_id = get_post('bank_id', '');
34 if ($selected_id != -1)
35 $bank_id = $selected_id;
37 //-----------------------------------------------------------------------------------
39 if ($Mode=='ADD_ITEM' || $Mode=='UPDATE_ITEM')
42 //initialise no input errors assumed initially before we test
45 //first off validate inputs sensible
46 if (strlen($_POST['bank_account_name']) == 0)
49 display_error(_("The bank account name cannot be empty."));
50 set_focus('bank_account_name');
52 if ($Mode=='ADD_ITEM' && (gl_account_in_bank_accounts(get_post('account_code'))
53 || key_in_foreign_table(get_post('account_code'), 'gl_trans', 'account'))) {
55 display_error(_("The GL account selected is already in use or has transactions. Select another empty GL account."));
56 set_focus('account_code');
58 if ($input_error != 1)
63 update_bank_account($bank_id, $_POST['account_code'],
64 $_POST['account_type'], $_POST['bank_account_name'],
65 $_POST['bank_name'], $_POST['bank_account_number'],
66 $_POST['bank_address'], $_POST['BankAccountCurrency'],
67 $_POST['dflt_curr_act'], $_POST['bank_charge_act']);
68 $Ajax->activate('bank_id'); // in case of status change
69 display_notification(_('Bank account has been updated'));
74 add_bank_account($_POST['account_code'], $_POST['account_type'],
75 $_POST['bank_account_name'], $_POST['bank_name'],
76 $_POST['bank_account_number'], $_POST['bank_address'],
77 $_POST['BankAccountCurrency'], $_POST['dflt_curr_act'], $_POST['bank_charge_act']);
78 $bank_id = $_POST['bank_id'] = db_insert_id();
79 display_notification(_('New bank account has been added'));
80 $Ajax->activate('_page_body');
85 elseif( $Mode == 'Delete')
87 //the link to delete a selected record was clicked instead of the submit button
90 // PREVENT DELETES IF DEPENDENT RECORDS IN 'bank_trans'
92 if (key_in_foreign_table($bank_id, 'bank_trans', 'bank_act') || key_in_foreign_table(get_post('account_code'), 'gl_trans', 'account'))
95 display_error(_("Cannot delete this bank account because transactions have been created using this account."));
98 if (key_in_foreign_table($bank_id, 'sales_pos', 'pos_account'))
101 display_error(_("Cannot delete this bank account because POS definitions have been created using this account."));
105 delete_bank_account($bank_id);
106 display_notification(_('Selected bank account has been deleted'));
107 } //end if Delete bank account
111 if ($Mode == 'RESET')
114 $_POST['bank_name'] = $_POST['bank_account_name'] = '';
115 $_POST['bank_account_number'] = $_POST['bank_address'] = '';
116 $_POST['bank_charge_act'] = get_company_pref('bank_charge_act');
117 $Ajax->activate('_page_body');
119 if (!isset($_POST['bank_charge_act']))
120 $_POST['bank_charge_act'] = get_company_pref('bank_charge_act');
122 /* Always show the list of accounts */
124 $result = get_bank_accounts(check_value('show_inactive'));
127 start_table(TABLESTYLE, "width='80%'");
129 $th = array(_("Account Name"), _("Type"), _("Currency"), _("GL Account"),
130 _("Bank"), _("Number"), _("Bank Address"), _("Dflt"), '','');
131 inactive_control_column($th);
135 while ($myrow = db_fetch($result))
138 alt_table_row_color($k);
140 label_cell($myrow["bank_account_name"], "nowrap");
141 label_cell($bank_account_types[$myrow["account_type"]], "nowrap");
142 label_cell($myrow["bank_curr_code"], "nowrap");
143 label_cell($myrow["account_code"] . " " . $myrow["account_name"], "nowrap");
144 label_cell($myrow["bank_name"], "nowrap");
145 label_cell($myrow["bank_account_number"], "nowrap");
146 label_cell($myrow["bank_address"]);
147 if ($myrow["dflt_curr_act"])
148 label_cell(_("Yes"));
152 inactive_control_cell($myrow["id"], $myrow["inactive"], 'bank_accounts', 'id');
153 edit_button_cell("Edit".$myrow["id"], _("Edit"));
154 delete_button_cell("Delete".$myrow["id"], _("Delete"));
158 inactive_control_row($th);
162 function bank_account_settings($bank_id)
164 global $Mode, $bank_account_types, $page_nested;
166 $is_used = $bank_id && key_in_foreign_table($bank_id, 'bank_trans', 'bank_act');
168 start_table(TABLESTYLE2);
172 if ($Mode == 'Edit') {
173 $myrow = get_bank_account($bank_id);
175 $_POST['account_code'] = $myrow["account_code"];
176 $_POST['account_type'] = $myrow["account_type"];
177 $_POST['bank_name'] = $myrow["bank_name"];
178 $_POST['bank_account_name'] = $myrow["bank_account_name"];
179 $_POST['bank_account_number'] = $myrow["bank_account_number"];
180 $_POST['bank_address'] = $myrow["bank_address"];
181 $_POST['BankAccountCurrency'] = $myrow["bank_curr_code"];
182 $_POST['dflt_curr_act'] = $myrow["dflt_curr_act"];
183 $_POST['bank_charge_act'] = $myrow["bank_charge_act"];
185 hidden('bank_id', $bank_id);
186 set_focus('bank_account_name');
189 text_row(_("Bank Account Name:"), 'bank_account_name', null, 50, 100);
193 label_row(_("Account Type:"), $bank_account_types[$_POST['account_type']]);
194 hidden('account_type');
198 bank_account_types_list_row(_("Account Type:"), 'account_type', null);
202 label_row(_("Bank Account Currency:"), $_POST['BankAccountCurrency']);
203 hidden('BankAccountCurrency', $_POST['BankAccountCurrency']);
207 currencies_list_row(_("Bank Account Currency:"), 'BankAccountCurrency', null);
210 yesno_list_row(_("Default currency account:"), 'dflt_curr_act');
214 label_row(_("Bank Account GL Code:"), $_POST['account_code']);
215 hidden('account_code');
217 gl_all_accounts_list_row(_("Bank Account GL Code:"), 'account_code', null);
219 gl_all_accounts_list_row(_("Bank Charges Account:"), 'bank_charge_act', null, true);
220 text_row(_("Bank Name:"), 'bank_name', null, 50, 60);
221 text_row(_("Bank Account Number:"), 'bank_account_number', null, 30, 60);
222 textarea_row(_("Bank Address:"), 'bank_address', null, 40, 5);
226 submit_add_or_update_center(!$bank_id, '', 'both');
231 unset($_POST['_tabs_sel']); // force settings tab for new customer
236 $act = get_bank_account($bank_id);
238 display_heading($act['bank_account_name']." - ".$act['bank_curr_code']);
241 hidden('bank_id', $bank_id);
243 tabbed_content_start('tabs', array(
244 'settings' => array(_('&General settings'), $bank_id),
245 'transactions' => array(_('&Transactions'), (user_check_access('SA_BANKTRANSVIEW') ? $bank_id : null)),
246 'attachments' => array(_('Attachments'), (user_check_access('SA_ATTACHDOCUMENT') ? $bank_id : null)),
249 switch (get_post('_tabs_sel')) {
253 bank_account_settings($bank_id);
256 $_GET['bank_account'] = $bank_id;
257 include_once($path_to_root."/gl/inquiry/bank_inquiry.php");
260 $_GET['trans_no'] = $bank_id;
261 $_GET['type_no']= ST_BANKACCOUNT;
262 $attachments = new attachments('attachment', $bank_id, 'bank_accounts');
263 $attachments->show();
266 tabbed_content_end();
270 end_page(@$_REQUEST['popup']);