<?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");
-page(_("Exchange Rates"));
-
include_once($path_to_root . "/includes/date_functions.inc");
include_once($path_to_root . "/includes/ui.inc");
include_once($path_to_root . "/includes/banking.inc");
-//---------------------------------------------------------------------------------------------
+$js = "";
+if (user_use_date_picker())
+ $js .= get_js_date_picker();
+page(_($help_context = "Exchange Rates"), false, false, "", $js);
-if (isset($_GET['selected_id']))
-{
- $selected_id = $_GET['selected_id'];
-}
-elseif (isset($_POST['selected_id']))
-{
- $selected_id = $_POST['selected_id'];
-}
-else
- $selected_id = "";
-//---------------------------------------------------------------------------------------------
+simple_page_mode(false);
-function check_data()
+//---------------------------------------------------------------------------------------------
+function check_data($selected_id)
{
- if (!is_date($_POST['date_']))
+ if (!is_date($_POST['date_']))
{
display_error( _("The entered date is invalid."));
+ set_focus('date_');
return false;
}
- if (!is_numeric($_POST['BuyRate']))
+ if (input_num('BuyRate') <= 0)
{
- display_error( _("The exchange rate must be numeric."));
+ display_error( _("The exchange rate cannot be zero or a negative number."));
+ set_focus('BuyRate');
return false;
}
- if ($_POST['BuyRate'] <= 0)
+ if (!$selected_id && get_date_exchange_rate($_POST['curr_abrev'], $_POST['date_']))
{
- display_error( _("The exchange rate cannot be zero or a negative number."));
+ display_error( _("The exchange rate for the date is already there."));
+ set_focus('date_');
return false;
}
-
return true;
}
{
global $selected_id;
- if (!check_data())
+ if (!check_data($selected_id))
return false;
- if ($selected_id != "")
+ if ($selected_id != "")
{
- update_exchange_rate($_POST['curr_abrev'], $_POST['date_'], $_POST['BuyRate'],
- $_POST['BuyRate']);
- }
- else
+ update_exchange_rate($_POST['curr_abrev'], $_POST['date_'],
+ input_num('BuyRate'), input_num('BuyRate'));
+ }
+ else
{
- add_exchange_rate($_POST['curr_abrev'], $_POST['date_'], $_POST['BuyRate'],
- $_POST['BuyRate']);
+ add_exchange_rate($_POST['curr_abrev'], $_POST['date_'],
+ input_num('BuyRate'), input_num('BuyRate'));
}
- return true;
+ $selected_id = '';
+ clear_data();
}
//---------------------------------------------------------------------------------------------
if ($selected_id == "")
return;
delete_exchange_rate($selected_id);
-
- meta_forward($_SERVER['PHP_SELF']);
+ $selected_id = '';
+ clear_data();
}
//---------------------------------------------------------------------------------------------
-
-function display_rates($curr_code)
+function edit_link($row)
{
- 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");
+ return button('Edit'.$row["id"], _("Edit"), true, ICON_EDIT);
+}
- end_row();
+function del_link($row)
+{
+ return button('Delete'.$row["id"], _("Delete"), true, ICON_DELETE);
+}
- } //END WHILE LIST LOOP
+function display_rates($curr_code)
+{
- end_table();
}
//---------------------------------------------------------------------------------------------
function display_rate_edit()
{
- global $selected_id, $table_style2;
-
- start_table($table_style2);
+ global $selected_id, $Ajax, $SysPrefs;
+ $xchg_rate_provider = ((isset($SysPrefs->xr_providers) && isset($SysPrefs->dflt_xr_provider))
+ ? $SysPrefs->xr_providers[$SysPrefs->dflt_xr_provider] : 'ECB');
+ start_table(TABLESTYLE2);
- if (isset($_POST['get_rate']))
- {
- $_POST['BuyRate'] = get_ecb_rate($_POST['curr_abrev']);
- $_POST['BuyRate'] = number_format($_POST['BuyRate'], user_exrate_dec());
- }
- if ($selected_id != "")
+ if ($selected_id != "")
{
- //editing an existing payment terms
+ //editing an existing exchange rate
$myrow = get_exchange_rate($selected_id);
$_POST['date_'] = sql2date($myrow["date_"]);
- $_POST['BuyRate'] = $myrow["rate_buy"];
+ $_POST['BuyRate'] = maxprec_format($myrow["rate_buy"]);
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_');
}
- text_row(_("Exchange Rate:"), 'BuyRate', null, 15, 12, "", submit('get_rate',_("Get"), false));
+ if (isset($_POST['get_rate']))
+ {
+ $_POST['BuyRate'] =
+ maxprec_format(retrieve_exrate($_POST['curr_abrev'], $_POST['date_']));
+ $Ajax->activate('BuyRate');
+ }
+ amount_row(_("Exchange Rate:"), 'BuyRate', null, '',
+ submit('get_rate',_("Get"), false, _('Get current rate from') . ' ' . $xchg_rate_provider , true), 'max');
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);
}
//---------------------------------------------------------------------------------------------
-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);
+echo currencies_list('curr_abrev', null, true, 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 = "";
}
-set_global_curr_code($_POST['curr_abrev']);
+set_global_curr_code(get_post('curr_abrev'));
-if (is_company_currency($_POST['curr_abrev']))
+$sql = get_sql_for_exchange_rates(get_post('curr_abrev'));
+
+$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(get_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);
+ $table->width = "40%";
+ if ($table->rec_count == 0)
+ $table->ready = false;
+ display_db_pager($table);
br(1);
-
display_rate_edit();
}
end_page();
-?>