Merged stable branch up to 2.3.10
[fa-stable.git] / gl / manage / currencies.php
index eadbaf92656854a40ce4f2aa774069c188770839..a6cf55afddb27d58ae3da4b90304b22d348f55ad 100644 (file)
@@ -1,10 +1,19 @@
 <?php
-
-$page_security = 9;
-$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_CURRENCY';
+$path_to_root = "../..";
 include_once($path_to_root . "/includes/session.inc");
 
-page(_("Currencies"));
+page(_($help_context = "Currencies"));
 
 include_once($path_to_root . "/includes/ui.inc");
 include_once($path_to_root . "/includes/banking.inc");
@@ -56,14 +65,14 @@ function handle_submit()
        {
 
                update_currency($_POST['Abbreviation'], $_POST['Symbol'], $_POST['CurrencyName'], 
-                       $_POST['country'], $_POST['hundreds_name']);
+                       $_POST['country'], $_POST['hundreds_name'], check_value('auto_update'));
                display_notification(_('Selected currency settings has been updated'));
        } 
        else 
        {
 
                add_currency($_POST['Abbreviation'], $_POST['Symbol'], $_POST['CurrencyName'], 
-                       $_POST['country'], $_POST['hundreds_name']);
+                       $_POST['country'], $_POST['hundreds_name'], check_value('auto_update'));
                display_notification(_('New currency has been added'));
        }       
        $Mode = 'RESET';
@@ -71,45 +80,33 @@ function handle_submit()
 
 //---------------------------------------------------------------------------------------------
 
-function check_can_delete()
+function check_can_delete($curr)
 {
-       global $selected_id;
-               
-       if ($selected_id == "")
+
+       if ($curr == "")
                return false;
+
        // PREVENT DELETES IF DEPENDENT RECORDS IN debtors_master
-       $sql= "SELECT COUNT(*) FROM ".TB_PREF."debtors_master WHERE curr_code = '$selected_id'";
-       $result = db_query($sql);
-       $myrow = db_fetch_row($result);
-       if ($myrow[0] > 0) 
+       if (key_in_foreign_table($curr, 'debtors_master', 'curr_code'))
        {
                display_error(_("Cannot delete this currency, because customer accounts have been created referring to this currency."));
                return false;
        }
 
-       $sql= "SELECT COUNT(*) FROM ".TB_PREF."suppliers WHERE curr_code = '$selected_id'";
-       $result = db_query($sql);
-       $myrow = db_fetch_row($result);
-       if ($myrow[0] > 0) 
+       if (key_in_foreign_table($curr, 'suppliers', 'curr_code'))
        {
                display_error(_("Cannot delete this currency, because supplier accounts have been created referring to this currency."));
                return false;
        }
-               
-       $sql= "SELECT COUNT(*) FROM ".TB_PREF."company WHERE curr_default = '$selected_id'";
-       $result = db_query($sql);
-       $myrow = db_fetch_row($result);
-       if ($myrow[0] > 0) 
+
+       if ($curr == get_company_pref('curr_default'))
        {
                display_error(_("Cannot delete this currency, because the company preferences uses this currency."));
                return false;
        }
        
        // see if there are any bank accounts that use this currency
-       $sql= "SELECT COUNT(*) FROM ".TB_PREF."bank_accounts WHERE bank_curr_code = '$selected_id'";
-       $result = db_query($sql);
-       $myrow = db_fetch_row($result);
-       if ($myrow[0] > 0) 
+       if (key_in_foreign_table($curr, 'bank_accounts', 'bank_curr_code'))
        {
                display_error(_("Cannot delete this currency, because thre are bank accounts that use this currency."));
                return false;
@@ -123,7 +120,7 @@ function check_can_delete()
 function handle_delete()
 {
        global $selected_id, $Mode;
-       if (check_can_delete()) {
+       if (check_can_delete($selected_id)) {
        //only delete if used in neither customer or supplier, comp prefs, bank trans accounts
                delete_currency($selected_id);
                display_notification(_('Selected currency has been deleted'));
@@ -135,15 +132,13 @@ function handle_delete()
 
 function display_currencies()
 {
-       global $table_style;
-
-       $company_currency = get_company_currency();     
+       $company_currency = get_company_currency();
        
-    $result = get_currencies();
-       start_form();    
-    start_table($table_style);
+    $result = get_currencies(check_value('show_inactive'));
+    start_table(TABLESTYLE);
     $th = array(_("Abbreviation"), _("Symbol"), _("Currency Name"),
-       _("Hundredths name"), _("Country"), "", "");
+       _("Hundredths name"), _("Country"), _("Auto update"), "", "");
+       inactive_control_column($th);
     table_header($th); 
     
     $k = 0; //row colour counter
@@ -163,17 +158,20 @@ function display_currencies()
                label_cell($myrow["currency"]);
                label_cell($myrow["hundreds_name"]);
                label_cell($myrow["country"]);
+               label_cell(     $myrow[1] == $company_currency ? '-' : 
+                       ($myrow["auto_update"] ? _('Yes') :_('No')), "align='center'");
+               inactive_control_cell($myrow["curr_abrev"], $myrow["inactive"], 'currencies', 'curr_abrev');
                edit_button_cell("Edit".$myrow["curr_abrev"], _("Edit"));
                if ($myrow["curr_abrev"] != $company_currency)
-                       edit_button_cell("Delete".$myrow["curr_abrev"], _("Delete"));
+                       delete_button_cell("Delete".$myrow["curr_abrev"], _("Delete"));
                else
                        label_cell('');
                end_row();
                
     } //END WHILE LIST LOOP
     
+       inactive_control_row($th);
     end_table();
-       end_form();    
     display_note(_("The marked currency is the home currency which cannot be deleted."), 0, 0, "class='currentfg'");
 }
 
@@ -181,10 +179,9 @@ function display_currencies()
 
 function display_currency_edit($selected_id)
 {
-       global $table_style2, $Mode;
+       global $Mode;
        
-       start_form();
-       start_table($table_style2);
+       start_table(TABLESTYLE2);
 
        if ($selected_id != '') 
        {
@@ -197,6 +194,7 @@ function display_currency_edit($selected_id)
                        $_POST['CurrencyName']  = $myrow["currency"];
                        $_POST['country']  = $myrow["country"];
                        $_POST['hundreds_name']  = $myrow["hundreds_name"];
+                       $_POST['auto_update']  = $myrow["auto_update"];
                }
                hidden('Abbreviation');
                hidden('selected_id', $selected_id);
@@ -204,19 +202,18 @@ function display_currency_edit($selected_id)
        } 
        else 
        { 
-               text_row_ex(_("Currency Abbreviation:"), 'Abbreviation', 4, 3);         
+               $_POST['auto_update']  = 1;
+               text_row_ex(_("Currency Abbreviation:"), 'Abbreviation', 4, 3);
        }
 
        text_row_ex(_("Currency Symbol:"), 'Symbol', 10);
        text_row_ex(_("Currency Name:"), 'CurrencyName', 20);
        text_row_ex(_("Hundredths Name:"), 'hundreds_name', 15);        
        text_row_ex(_("Country:"), 'country', 40);      
-
+       check_row(_("Automatic exchange rate update:"), 'auto_update', get_post('auto_update'));
        end_table(1);
 
-       submit_add_or_update_center($selected_id == '', '', true);
-
-       end_form();
+       submit_add_or_update_center($selected_id == '', '', 'both');
 }
 
 //---------------------------------------------------------------------------------------------
@@ -238,10 +235,11 @@ if ($Mode == 'RESET')
                $_POST['hundreds_name']  = '';
 }
 
+start_form();
 display_currencies();
 
 display_currency_edit($selected_id);
-
+end_form();
 //---------------------------------------------------------------------------------------------
 
 end_page();