Rerun bank_accounts.php. Fixed missing Date Picker.
[fa-stable.git] / gl / manage / bank_accounts.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_BANKACCOUNT';
13 $path_to_root = "../..";
14 include($path_to_root . "/includes/db_pager.inc");
15 include($path_to_root . "/includes/session.inc");
16
17 $js = "";
18 if (user_use_date_picker())
19         $js .= get_js_date_picker();
20
21 page(_($help_context = "Bank Accounts"), isset($_GET['bank_id']), false, "", $js);
22
23 include($path_to_root . "/includes/ui.inc");
24 include_once($path_to_root . "/includes/ui/attachment.inc");
25
26 simple_page_mode();
27
28 if (isset($_GET['bank_id'])) 
29 {
30         $_POST['bank_id'] = $_GET['bank_id'];
31 }
32
33 $bank_id = get_post('bank_id', ''); 
34 if ($selected_id != -1)
35         $bank_id = $selected_id;
36
37 //-----------------------------------------------------------------------------------
38
39 if ($Mode=='ADD_ITEM' || $Mode=='UPDATE_ITEM') 
40 {
41
42         //initialise no input errors assumed initially before we test
43         $input_error = 0;
44
45         //first off validate inputs sensible
46         if (strlen($_POST['bank_account_name']) == 0) 
47         {
48                 $input_error = 1;
49                 display_error(_("The bank account name cannot be empty."));
50                 set_focus('bank_account_name');
51         } 
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'))) {
54                 $input_error = 1;
55                 display_error(_("The GL account selected is already in use or has transactions. Select another empty GL account."));
56                 set_focus('account_code');
57         }
58         if ($input_error != 1)
59         {
60         if ($bank_id) 
61         {
62                 
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'));
70         } 
71         else 
72         {
73     
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');
81                 }
82                 $Mode = 'RESET';
83         }
84
85 elseif( $Mode == 'Delete')
86 {
87         //the link to delete a selected record was clicked instead of the submit button
88
89         $cancel_delete = 0;
90         // PREVENT DELETES IF DEPENDENT RECORDS IN 'bank_trans'
91
92         if (key_in_foreign_table($bank_id, 'bank_trans', 'bank_act') || key_in_foreign_table(get_post('account_code'), 'gl_trans', 'account'))
93         {
94                 $cancel_delete = 1;
95                 display_error(_("Cannot delete this bank account because transactions have been created using this account."));
96         }
97
98         if (key_in_foreign_table($bank_id, 'sales_pos', 'pos_account'))
99         {
100                 $cancel_delete = 1;
101                 display_error(_("Cannot delete this bank account because POS definitions have been created using this account."));
102         }
103         if (!$cancel_delete) 
104         {
105                 delete_bank_account($bank_id);
106                 display_notification(_('Selected bank account has been deleted'));
107         } //end if Delete bank account
108         $Mode = 'RESET';
109
110
111 if ($Mode == 'RESET')
112 {
113         $bank_id = '';
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');
118 }
119 if (!isset($_POST['bank_charge_act']))
120         $_POST['bank_charge_act'] = get_company_pref('bank_charge_act');
121
122 /* Always show the list of accounts */
123
124 $result = get_bank_accounts(check_value('show_inactive'));
125
126 start_form(true);
127 start_table(TABLESTYLE, "width='80%'");
128
129 $th = array(_("Account Name"), _("Type"), _("Currency"), _("GL Account"), 
130         _("Bank"), _("Number"), _("Bank Address"), _("Dflt"), '','');
131 inactive_control_column($th);
132 table_header($th);      
133
134 $k = 0; 
135 while ($myrow = db_fetch($result)) 
136 {
137         
138         alt_table_row_color($k);
139
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"));
149         else
150                 label_cell(_("No"));
151
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"));
155     end_row(); 
156 }
157
158 inactive_control_row($th);
159 end_table(1);
160
161
162 function bank_account_settings($bank_id)
163 {
164         global $Mode, $bank_account_types, $page_nested;
165
166         $is_used = $bank_id && key_in_foreign_table($bank_id, 'bank_trans', 'bank_act');
167         
168         start_table(TABLESTYLE2);
169
170         if ($bank_id) 
171         {
172                 if ($Mode == 'Edit') {  
173                         $myrow = get_bank_account($bank_id);
174
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"];
184                 }
185                 hidden('bank_id', $bank_id);
186                 set_focus('bank_account_name');
187         } 
188
189         text_row(_("Bank Account Name:"), 'bank_account_name', null, 50, 100);
190
191         if ($is_used) 
192         {
193                 label_row(_("Account Type:"), $bank_account_types[$_POST['account_type']]);
194                 hidden('account_type');
195         } 
196         else 
197         {
198                 bank_account_types_list_row(_("Account Type:"), 'account_type', null); 
199         }
200         if ($is_used) 
201         {
202                 label_row(_("Bank Account Currency:"), $_POST['BankAccountCurrency']);
203                 hidden('BankAccountCurrency', $_POST['BankAccountCurrency']);
204         } 
205         else 
206         {
207                 currencies_list_row(_("Bank Account Currency:"), 'BankAccountCurrency', null);
208         }       
209
210         yesno_list_row(_("Default currency account:"), 'dflt_curr_act');
211
212         if($is_used)
213         {
214                 label_row(_("Bank Account GL Code:"), $_POST['account_code']);
215                 hidden('account_code');
216         } else 
217                 gl_all_accounts_list_row(_("Bank Account GL Code:"), 'account_code', null);
218
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);
223
224         end_table(1);
225
226         submit_add_or_update_center(!$bank_id, '', 'both');
227 }
228
229 if (!$bank_id)
230 {
231         unset($_POST['_tabs_sel']); // force settings tab for new customer
232         display_heading("");
233 }
234 else
235 {
236         $act = get_bank_account($bank_id);
237         if ($act)
238                 display_heading($act['bank_account_name']." - ".$act['bank_curr_code']);
239 }
240 if ($bank_id)
241         hidden('bank_id', $bank_id);
242
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)),
247         ));
248         
249         switch (get_post('_tabs_sel')) {
250                 default:
251                 case 'settings':
252                         $Mode = "Edit";
253                         bank_account_settings($bank_id); 
254                         break;
255                 case 'transactions':
256                         $_GET['bank_account'] = $bank_id;
257                         include_once($path_to_root."/gl/inquiry/bank_inquiry.php");
258                         break;
259                 case 'attachments':
260                         $_GET['trans_no'] = $bank_id;
261                         $_GET['type_no']= ST_BANKACCOUNT;
262                         $attachments = new attachments('attachment', $bank_id, 'bank_accounts');
263                         $attachments->show();
264         };
265 br();
266 tabbed_content_end();
267
268 end_form();
269
270 end_page(@$_REQUEST['popup']);