Rerun bank_accounts.php. Fixed missing Date Picker.
[fa-stable.git] / gl / manage / bank_accounts.php
index 5081e3b5d6140acd32a0f050d7f29fb58f8abcc5..e7e71749a5f5f6249a9bdfe859cafa75493beab1 100644 (file)
@@ -1,14 +1,39 @@
 <?php
-
-$page_security = 10;
-$path_to_root="../..";
+/**********************************************************************
+    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 
+       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.  
+    See the License here <http://www.gnu.org/licenses/gpl-3.0.html>.
+***********************************************************************/
+$page_security = 'SA_BANKACCOUNT';
+$path_to_root = "../..";
+include($path_to_root . "/includes/db_pager.inc");
 include($path_to_root . "/includes/session.inc");
 
-page(_("Bank Accounts"));
+$js = "";
+if (user_use_date_picker())
+       $js .= get_js_date_picker();
+
+page(_($help_context = "Bank Accounts"), isset($_GET['bank_id']), false, "", $js);
 
 include($path_to_root . "/includes/ui.inc");
+include_once($path_to_root . "/includes/ui/attachment.inc");
 
 simple_page_mode();
+
+if (isset($_GET['bank_id'])) 
+{
+       $_POST['bank_id'] = $_GET['bank_id'];
+}
+
+$bank_id = get_post('bank_id', ''); 
+if ($selected_id != -1)
+       $bank_id = $selected_id;
+
 //-----------------------------------------------------------------------------------
 
 if ($Mode=='ADD_ITEM' || $Mode=='UPDATE_ITEM') 
@@ -24,25 +49,36 @@ if ($Mode=='ADD_ITEM' || $Mode=='UPDATE_ITEM')
                display_error(_("The bank account name cannot be empty."));
                set_focus('bank_account_name');
        } 
-       
+       if ($Mode=='ADD_ITEM' && (gl_account_in_bank_accounts(get_post('account_code')) 
+                       || key_in_foreign_table(get_post('account_code'), 'gl_trans', 'account'))) {
+               $input_error = 1;
+               display_error(_("The GL account selected is already in use or has transactions. Select another empty GL account."));
+               set_focus('account_code');
+       }
        if ($input_error != 1)
        {
-       if ($selected_id != -1
+       if ($bank_id
        {
                
-               update_bank_account($selected_id, $_POST['account_type'], $_POST['bank_account_name'], $_POST['bank_name'], 
-                       $_POST['bank_account_number'], 
-                       $_POST['bank_address'], $_POST['BankAccountCurrency']);         
+               update_bank_account($bank_id, $_POST['account_code'],
+                               $_POST['account_type'], $_POST['bank_account_name'], 
+                               $_POST['bank_name'], $_POST['bank_account_number'], 
+                       $_POST['bank_address'], $_POST['BankAccountCurrency'],
+                       $_POST['dflt_curr_act'], $_POST['bank_charge_act']);
+                       $Ajax->activate('bank_id'); // in case of status change
                        display_notification(_('Bank account has been updated'));
        } 
        else 
        {
     
-               add_bank_account($_POST['account_code'], $_POST['account_type'], $_POST['bank_account_name'], $_POST['bank_name'], 
-                       $_POST['bank_account_number'], 
-                       $_POST['bank_address'], $_POST['BankAccountCurrency']);
+               add_bank_account($_POST['account_code'], $_POST['account_type'], 
+                               $_POST['bank_account_name'], $_POST['bank_name'], 
+                       $_POST['bank_account_number'], $_POST['bank_address'], 
+                               $_POST['BankAccountCurrency'], $_POST['dflt_curr_act'], $_POST['bank_charge_act']);
+                       $bank_id = $_POST['bank_id'] = db_insert_id();
                        display_notification(_('New bank account has been added'));
-       }
+                       $Ajax->activate('_page_body');
+               }
                $Mode = 'RESET';
        }
 } 
@@ -51,20 +87,22 @@ elseif( $Mode == 'Delete')
        //the link to delete a selected record was clicked instead of the submit button
 
        $cancel_delete = 0;
-
        // PREVENT DELETES IF DEPENDENT RECORDS IN 'bank_trans'
 
-       $sql= "SELECT COUNT(*) FROM ".TB_PREF."bank_trans WHERE bank_act='$selected_id'";
-       $result = db_query($sql,"check failed");
-       $myrow = db_fetch_row($result);
-       if ($myrow[0] > 0) 
+       if (key_in_foreign_table($bank_id, 'bank_trans', 'bank_act') || key_in_foreign_table(get_post('account_code'), 'gl_trans', 'account'))
        {
                $cancel_delete = 1;
                display_error(_("Cannot delete this bank account because transactions have been created using this account."));
        }
+
+       if (key_in_foreign_table($bank_id, 'sales_pos', 'pos_account'))
+       {
+               $cancel_delete = 1;
+               display_error(_("Cannot delete this bank account because POS definitions have been created using this account."));
+       }
        if (!$cancel_delete) 
        {
-               delete_bank_account($selected_id);
+               delete_bank_account($bank_id);
                display_notification(_('Selected bank account has been deleted'));
        } //end if Delete bank account
        $Mode = 'RESET';
@@ -72,24 +110,25 @@ elseif( $Mode == 'Delete')
 
 if ($Mode == 'RESET')
 {
-       $selected_id = -1;
+       $bank_id = '';
        $_POST['bank_name']  =  $_POST['bank_account_name']  = '';
        $_POST['bank_account_number'] = $_POST['bank_address'] = '';
+       $_POST['bank_charge_act'] = get_company_pref('bank_charge_act');
+       $Ajax->activate('_page_body');
 }
+if (!isset($_POST['bank_charge_act']))
+       $_POST['bank_charge_act'] = get_company_pref('bank_charge_act');
 
 /* Always show the list of accounts */
 
-$sql = "SELECT ".TB_PREF."bank_accounts.*, ".TB_PREF."chart_master.account_name FROM ".TB_PREF."bank_accounts, ".TB_PREF."chart_master 
-       WHERE ".TB_PREF."bank_accounts.account_code = ".TB_PREF."chart_master.account_code";
-$result = db_query($sql,"could not get bank accounts");
-
-check_db_error("The bank accounts set up could not be retreived", $sql);
+$result = get_bank_accounts(check_value('show_inactive'));
 
-start_form();
-start_table("$table_style width='80%'");
+start_form(true);
+start_table(TABLESTYLE, "width='80%'");
 
-$th = array(_("GL Account"), _("Bank"), _("Account Name"),
-       _("Type"), _("Number"), _("Currency"), _("Bank Address"),'','');
+$th = array(_("Account Name"), _("Type"), _("Currency"), _("GL Account"), 
+       _("Bank"), _("Number"), _("Bank Address"), _("Dflt"), '','');
+inactive_control_column($th);
 table_header($th);     
 
 $k = 0; 
@@ -98,74 +137,134 @@ while ($myrow = db_fetch($result))
        
        alt_table_row_color($k);
 
+    label_cell($myrow["bank_account_name"], "nowrap");
+       label_cell($bank_account_types[$myrow["account_type"]], "nowrap");
+    label_cell($myrow["bank_curr_code"], "nowrap");
     label_cell($myrow["account_code"] . " " . $myrow["account_name"], "nowrap");
     label_cell($myrow["bank_name"], "nowrap");
-    label_cell($myrow["bank_account_name"], "nowrap");
-       label_cell(bank_account_types::name($myrow["account_type"]), "nowrap");
     label_cell($myrow["bank_account_number"], "nowrap");
-    label_cell($myrow["bank_curr_code"], "nowrap");
     label_cell($myrow["bank_address"]);
-       edit_button_cell("Edit".$myrow["account_code"], _("Edit"));
-       edit_button_cell("Delete".$myrow["account_code"], _("Delete"));
+    if ($myrow["dflt_curr_act"])
+               label_cell(_("Yes"));
+       else
+               label_cell(_("No"));
+
+       inactive_control_cell($myrow["id"], $myrow["inactive"], 'bank_accounts', 'id');
+       edit_button_cell("Edit".$myrow["id"], _("Edit"));
+       delete_button_cell("Delete".$myrow["id"], _("Delete"));
     end_row(); 
 }
 
-end_table();
-end_form();
-echo '<br>';
-start_form();
-
-$is_editing = $selected_id != -1; 
+inactive_control_row($th);
+end_table(1);
 
-start_table($table_style2);
 
-if ($is_editing) 
+function bank_account_settings($bank_id)
 {
-  if ($Mode == 'Edit') {       
-       $myrow = get_bank_account($selected_id);
-
-       $_POST['account_code'] = $myrow["account_code"];
-       $_POST['account_type'] = $myrow["account_type"];
-       $_POST['bank_name']  = $myrow["bank_name"];
-       $_POST['bank_account_name']  = $myrow["bank_account_name"];
-       $_POST['bank_account_number'] = $myrow["bank_account_number"];
-       $_POST['bank_address'] = $myrow["bank_address"];
-       $_POST['BankAccountCurrency'] = $myrow["bank_curr_code"];
-  }
-       hidden('selected_id', $selected_id);
-       hidden('account_code');
-       hidden('BankAccountCurrency', $_POST['BankAccountCurrency']);   
-       label_row(_("Bank Account GL Code:"), $_POST['account_code']);
-       set_focus('account_type');
-} 
-else 
-{
-       gl_all_accounts_list_row(_("Bank Account GL Code:"), 'account_code', null, true);       
-       set_focus('account_code');
-}
+       global $Mode, $bank_account_types, $page_nested;
 
-bank_account_types_list_row(_("Account Type:"), 'account_type', null); 
+       $is_used = $bank_id && key_in_foreign_table($bank_id, 'bank_trans', 'bank_act');
+       
+       start_table(TABLESTYLE2);
 
-text_row(_("Bank Name:"), 'bank_name', null, 50, 60);
-text_row(_("Bank Account Name:"), 'bank_account_name', null, 50, 100);
-text_row(_("Bank Account Number:"), 'bank_account_number', null, 30, 60);
+       if ($bank_id) 
+       {
+               if ($Mode == 'Edit') {  
+                       $myrow = get_bank_account($bank_id);
 
-if ($is_editing) 
-{
-       label_row(_("Bank Account Currency:"), $_POST['BankAccountCurrency']);
-} 
-else 
-{
-       currencies_list_row(_("Bank Account Currency:"), 'BankAccountCurrency', null);
-}      
+                       $_POST['account_code'] = $myrow["account_code"];
+                       $_POST['account_type'] = $myrow["account_type"];
+                       $_POST['bank_name']  = $myrow["bank_name"];
+                       $_POST['bank_account_name']  = $myrow["bank_account_name"];
+                       $_POST['bank_account_number'] = $myrow["bank_account_number"];
+                       $_POST['bank_address'] = $myrow["bank_address"];
+                       $_POST['BankAccountCurrency'] = $myrow["bank_curr_code"];
+                       $_POST['dflt_curr_act'] = $myrow["dflt_curr_act"];
+                       $_POST['bank_charge_act'] = $myrow["bank_charge_act"];
+               }
+               hidden('bank_id', $bank_id);
+               set_focus('bank_account_name');
+       } 
 
-textarea_row(_("Bank Address:"), 'bank_address', null, 40, 5);
+       text_row(_("Bank Account Name:"), 'bank_account_name', null, 50, 100);
 
-end_table(1);
+       if ($is_used) 
+       {
+               label_row(_("Account Type:"), $bank_account_types[$_POST['account_type']]);
+               hidden('account_type');
+       } 
+       else 
+       {
+               bank_account_types_list_row(_("Account Type:"), 'account_type', null); 
+       }
+       if ($is_used) 
+       {
+               label_row(_("Bank Account Currency:"), $_POST['BankAccountCurrency']);
+               hidden('BankAccountCurrency', $_POST['BankAccountCurrency']);
+       } 
+       else 
+       {
+               currencies_list_row(_("Bank Account Currency:"), 'BankAccountCurrency', null);
+       }       
 
-submit_add_or_update_center($selected_id == -1, '', true);
+       yesno_list_row(_("Default currency account:"), 'dflt_curr_act');
+
+       if($is_used)
+       {
+               label_row(_("Bank Account GL Code:"), $_POST['account_code']);
+               hidden('account_code');
+       } else 
+               gl_all_accounts_list_row(_("Bank Account GL Code:"), 'account_code', null);
+
+       gl_all_accounts_list_row(_("Bank Charges Account:"), 'bank_charge_act', null, true);
+       text_row(_("Bank Name:"), 'bank_name', null, 50, 60);
+       text_row(_("Bank Account Number:"), 'bank_account_number', null, 30, 60);
+       textarea_row(_("Bank Address:"), 'bank_address', null, 40, 5);
+
+       end_table(1);
+
+       submit_add_or_update_center(!$bank_id, '', 'both');
+}
+
+if (!$bank_id)
+{
+       unset($_POST['_tabs_sel']); // force settings tab for new customer
+       display_heading("");
+}
+else
+{
+       $act = get_bank_account($bank_id);
+       if ($act)
+               display_heading($act['bank_account_name']." - ".$act['bank_curr_code']);
+}
+if ($bank_id)
+       hidden('bank_id', $bank_id);
+
+tabbed_content_start('tabs', array(
+               'settings' => array(_('&General settings'), $bank_id),
+               'transactions' => array(_('&Transactions'), (user_check_access('SA_BANKTRANSVIEW') ? $bank_id : null)),
+               'attachments' => array(_('Attachments'), (user_check_access('SA_ATTACHDOCUMENT') ? $bank_id : null)),
+       ));
+       
+       switch (get_post('_tabs_sel')) {
+               default:
+               case 'settings':
+                       $Mode = "Edit";
+                       bank_account_settings($bank_id); 
+                       break;
+               case 'transactions':
+                       $_GET['bank_account'] = $bank_id;
+                       include_once($path_to_root."/gl/inquiry/bank_inquiry.php");
+                       break;
+               case 'attachments':
+                       $_GET['trans_no'] = $bank_id;
+                       $_GET['type_no']= ST_BANKACCOUNT;
+                       $attachments = new attachments('attachment', $bank_id, 'bank_accounts');
+                       $attachments->show();
+       };
+br();
+tabbed_content_end();
 
 end_form();
 
-end_page();
-?>
+end_page(@$_REQUEST['popup']);