Switch to new access levels system
[fa-stable.git] / gl / manage / exchange_rates.php
index 5ece97ad248abd1f369b7035b2e081e3162499fa..dd2ee6e6dbe7295ee201118d6a6af24fd0acaea2 100644 (file)
@@ -1,7 +1,17 @@
 <?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_EXCHANGERATE';
+$path_to_root = "../..";
+include($path_to_root . "/includes/db_pager.inc");
 include_once($path_to_root . "/includes/session.inc");
 
 include_once($path_to_root . "/includes/date_functions.inc");
@@ -13,34 +23,18 @@ if ($use_date_picker)
        $js .= get_js_date_picker();
 page(_("Exchange Rates"), false, false, "", $js);
 
-//---------------------------------------------------------------------------------------------
+simple_page_mode(false);
 
-if (isset($_GET['selected_id']))
-{
-       $selected_id = $_GET['selected_id'];
-} 
-elseif (isset($_POST['selected_id']))
-{
-       $selected_id = $_POST['selected_id'];
-}
-else
-       $selected_id = "";
 //---------------------------------------------------------------------------------------------
 function check_data()
 {
-       if (!is_date($_POST['date_'])) 
+       if (!is_date($_POST['date_']))
        {
                display_error( _("The entered date is invalid."));
                set_focus('date_');
                return false;
        }
-       if (!check_num('BuyRate', 0))
-       {
-               display_error( _("The exchange rate must be numeric and greater than zero."));
-               set_focus('BuyRate');
-               return false;
-       }
-       if ($_POST['BuyRate'] <= 0)
+       if (input_num('BuyRate') <= 0)
        {
                display_error( _("The exchange rate cannot be zero or a negative number."));
                set_focus('BuyRate');
@@ -59,20 +53,20 @@ function handle_submit()
        if (!check_data())
                return false;
 
-       if ($selected_id != "") 
+       if ($selected_id != "")
        {
 
                update_exchange_rate($_POST['curr_abrev'], $_POST['date_'],
-                input_num('BuyRate'), input_num('BuyRate'));
-       } 
-       else 
+               input_num('BuyRate'), input_num('BuyRate'));
+       }
+       else
        {
 
                add_exchange_rate($_POST['curr_abrev'], $_POST['date_'],
                    input_num('BuyRate'), input_num('BuyRate'));
        }
 
-       return true;
+       $selected_id = '';
 }
 
 //---------------------------------------------------------------------------------------------
@@ -84,55 +78,35 @@ function handle_delete()
        if ($selected_id == "")
                return;
        delete_exchange_rate($selected_id);
-
-       meta_forward($_SERVER['PHP_SELF']);
+       $selected_id = '';
 }
 
 //---------------------------------------------------------------------------------------------
+function edit_link($row) 
+{
+  return button('Edit'.$row["id"], _("Edit"), true, ICON_EDIT);
+}
+
+function del_link($row) 
+{
+  return button('Delete'.$row["id"], _("Delete"), true, ICON_DELETE);
+}
 
 function display_rates($curr_code)
 {
        global $table_style;
 
-       $result = get_exchange_rates($curr_code);
-
-       br(2);
-       start_table($table_style);
-       $th = array(_("Date to Use From"), _("Exchange Rate"), "", "");
-       table_header($th);
-
-    $k = 0; //row colour counter
-
-    while ($myrow = db_fetch($result)) 
-    {
-
-               alt_table_row_color($k);
-
-       label_cell(sql2date($myrow["date_"]));
-               label_cell(number_format2($myrow["rate_buy"], user_exrate_dec()), "nowrap align=right");
-               edit_link_cell("selected_id=" . $myrow["id"]);
-               delete_link_cell("selected_id=" . $myrow["id"]. "&delete=1");
-
-               end_row();
-
-    } //END WHILE LIST LOOP
-
-    end_table();
 }
 
 //---------------------------------------------------------------------------------------------
 
 function display_rate_edit()
 {
-       global $selected_id, $table_style2;
+       global $selected_id, $table_style2, $Ajax;
 
        start_table($table_style2);
 
-       if (isset($_POST['get_rate']))
-       {
-               $_POST['BuyRate'] = exrate_format(get_ecb_rate($_POST['curr_abrev']));
-       }       
-       if ($selected_id != "") 
+       if ($selected_id != "")
        {
                //editing an existing exchange rate
 
@@ -143,20 +117,28 @@ function display_rate_edit()
 
                hidden('selected_id', $selected_id);
                hidden('date_', $_POST['date_']);
-               hidden('curr_abrev', $_POST['curr_abrev']);
 
                label_row(_("Date to Use From:"), $_POST['date_']);
-       } 
-       else 
+       }
+       else
        {
+               $_POST['date_'] = Today();
+               $_POST['BuyRate'] = '';
                date_row(_("Date to Use From:"), 'date_');
        }
-       small_amount_row(_("Exchange Rate:"), 'BuyRate', null, '', 
-         submit('get_rate',_("Get")), user_exrate_dec());
+       if (isset($_POST['get_rate']))
+       {
+               $_POST['BuyRate'] = 
+                       exrate_format(retrieve_exrate($_POST['curr_abrev'], $_POST['date_']));
+               $Ajax->activate('BuyRate');
+       }
+       small_amount_row(_("Exchange Rate:"), 'BuyRate', null, '',
+               submit('get_rate',_("Get"), false, _('Get current ECB rate') , true),
+               user_exrate_dec());
 
        end_table(1);
 
-       submit_add_or_update_center($selected_id == "");
+       submit_add_or_update_center($selected_id == '', '', 'both');
 
        display_note(_("Exchange rates are entered against the company currency."), 1);
 }
@@ -172,36 +154,29 @@ function clear_data()
 
 //---------------------------------------------------------------------------------------------
 
-if (isset($_POST['ADD_ITEM']) || isset($_POST['UPDATE_ITEM'])) 
-{
-
-       if (handle_submit()) 
-       {
-               meta_forward($_SERVER['PHP_SELF']);
-       }
-}
+if ($Mode=='ADD_ITEM' || $Mode=='UPDATE_ITEM') 
+       handle_submit();
 
 //---------------------------------------------------------------------------------------------
 
-if (isset($_GET['delete'])) 
-{
-
+if ($Mode == 'Delete')
        handle_delete();
-}
+
 
 //---------------------------------------------------------------------------------------------
 
-echo "<center>";
-start_form(false, true);
+start_form();
 
 if (!isset($_POST['curr_abrev']))
        $_POST['curr_abrev'] = get_global_curr_code();
 
+echo "<center>";
 echo _("Select a currency :") . "  ";
-currencies_list('curr_abrev', $_POST['curr_abrev'], true);
+currencies_list('curr_abrev', null, true);
+echo "</center>";
 
 // if currency sel has changed, clear the form
-if ($_POST['curr_abrev'] != get_global_curr_code()) 
+if ($_POST['curr_abrev'] != get_global_curr_code())
 {
        clear_data();
        $selected_id = "";
@@ -209,20 +184,36 @@ if ($_POST['curr_abrev'] != get_global_curr_code())
 
 set_global_curr_code($_POST['curr_abrev']);
 
-if (is_company_currency($_POST['curr_abrev'])) 
+$sql = "SELECT date_, rate_buy, id FROM "
+       .TB_PREF."exchange_rates "
+       ."WHERE curr_code='".$_POST['curr_abrev']."'
+        ORDER BY date_ DESC";
+
+$cols = array(
+       _("Date to Use From") => 'date', 
+       _("Exchange Rate") => 'rate',
+       array('insert'=>true, 'fun'=>'edit_link'),
+       array('insert'=>true, 'fun'=>'del_link'),
+);
+$table =& new_db_pager('orders_tbl', $sql, $cols);
+
+if (is_company_currency($_POST['curr_abrev']))
 {
 
        display_note(_("The selected currency is the company currency."), 2);
        display_note(_("The company currency is the base currency so exchange rates cannot be set for it."), 1);
-} 
-else 
+}
+else
 {
 
-    display_rates($_POST['curr_abrev']);
-
-       hyperlink_no_params($_SERVER['PHP_SELF'], _("Enter a New Exchange Rate"));
+       br(1);
+       if (list_updated('curr_abrev')) {
+               $table->set_sql($sql);
+               $table->set_columns($cols);
+       }
+       $table->width = "40%";
+       display_db_pager($table);
        br(1);
-
     display_rate_edit();
 }