Fixed bug in Bank Accounts edition.
[fa-stable.git] / gl / manage / bank_accounts.php
index 97a5dbba252aad596f8e5a37efe76245860f0d9a..73486b1d64bb3d9e6fcb197ecfea5058910ca7b8 100644 (file)
@@ -25,28 +25,20 @@ if ($Mode=='ADD_ITEM' || $Mode=='UPDATE_ITEM')
 
        //initialise no input errors assumed initially before we test
        $input_error = 0;
-       $curr = get_company_currency();
-       if ($curr != $_POST['BankAccountCurrency'])
-       {
-               $sql = "SELECT account_code     FROM ".TB_PREF."bank_accounts
-                       WHERE account_code = '".$_POST['account_code']."'
-                       AND id <> $selected_id";
-               $result = db_query($sql,"could not get bank accounts");
-               if (db_num_rows($result) > 0)
-               {
-                       $input_error = 1;
-                       display_error(_("The GL account is already in use."));
-                       set_focus('account_code');
-               }
-       }       
+
        //first off validate inputs sensible
-       if ($input_error == 0 && strlen($_POST['bank_account_name']) == 0) 
+       if (strlen($_POST['bank_account_name']) == 0) 
        {
                $input_error = 1;
                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. Select another GL account."));
+               set_focus('account_code');
+       }
        if ($input_error != 1)
        {
        if ($selected_id != -1) 
@@ -76,21 +68,15 @@ elseif( $Mode == 'Delete')
        //the link to delete a selected record was clicked instead of the submit button
 
        $cancel_delete = 0;
-       $acc = db_escape($selected_id);
        // PREVENT DELETES IF DEPENDENT RECORDS IN 'bank_trans'
 
-       $sql= "SELECT COUNT(*) FROM ".TB_PREF."bank_trans WHERE bank_act=$acc";
-       $result = db_query($sql,"check failed");
-       $myrow = db_fetch_row($result);
-       if ($myrow[0] > 0) 
+       if (key_in_foreign_table($selected_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."));
        }
-       $sql= "SELECT COUNT(*) FROM ".TB_PREF."sales_pos WHERE pos_account=$acc";
-       $result = db_query($sql,"check failed");
-       $myrow = db_fetch_row($result);
-       if ($myrow[0] > 0) 
+
+       if (key_in_foreign_table($selected_id, 'sales_pos', 'pos_account'))
        {
                $cancel_delete = 1;
                display_error(_("Cannot delete this bank account because POS definitions have been created using this account."));
@@ -112,18 +98,10 @@ if ($Mode == 'RESET')
 
 /* Always show the list of accounts */
 
-$sql = "SELECT account.*, gl_account.account_name 
-       FROM ".TB_PREF."bank_accounts account, ".TB_PREF."chart_master gl_account 
-       WHERE account.account_code = gl_account.account_code";
-if (!check_value('show_inactive')) $sql .= " AND !account.inactive";
-$sql .= " ORDER BY account_code, bank_curr_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_table(TABLESTYLE, "width='80%'");
 
 $th = array(_("Account Name"), _("Type"), _("Currency"), _("GL Account"), 
        _("Bank"), _("Number"), _("Bank Address"), _("Dflt"), '','');
@@ -157,11 +135,11 @@ while ($myrow = db_fetch($result))
 inactive_control_row($th);
 end_table(1);
 
-$is_editing = $selected_id != -1; 
+$is_used = $selected_id != -1 && key_in_foreign_table($selected_id, 'bank_trans', 'bank_act');
 
-start_table($table_style2);
+start_table(TABLESTYLE2);
 
-if ($is_editing
+if ($selected_id != -1
 {
   if ($Mode == 'Edit') {       
        $myrow = get_bank_account($selected_id);
@@ -176,25 +154,25 @@ if ($is_editing)
        $_POST['dflt_curr_act'] = $myrow["dflt_curr_act"];
   }
        hidden('selected_id', $selected_id);
-       hidden('account_code');
-       hidden('account_type');
-       hidden('BankAccountCurrency', $_POST['BankAccountCurrency']);   
+       }
        set_focus('bank_account_name');
 } 
 
 text_row(_("Bank Account Name:"), 'bank_account_name', null, 50, 100);
 
-if ($is_editing
+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_editing
+if ($is_used
 {
        label_row(_("Bank Account Currency:"), $_POST['BankAccountCurrency']);
+       hidden('BankAccountCurrency', $_POST['BankAccountCurrency']);
 } 
 else 
 {
@@ -203,10 +181,11 @@ else
 
 yesno_list_row(_("Default currency account:"), 'dflt_curr_act');
 
-$curr = get_company_currency();
-if ($is_editing && $curr == $_POST['BankAccountCurrency'])
+if($is_used)
+{
        label_row(_("Bank Account GL Code:"), $_POST['account_code']);
-else
+       hidden('account_code');
+} else 
        gl_all_accounts_list_row(_("Bank Account GL Code:"), 'account_code', null);
 
 text_row(_("Bank Name:"), 'bank_name', null, 50, 60);