diff --git a/include/class/acc_currency.class.php b/include/class/acc_currency.class.php
index 30129162e..747095738 100644
--- a/include/class/acc_currency.class.php
+++ b/include/class/acc_currency.class.php
@@ -133,6 +133,23 @@ class Acc_Currency
return $sum;
}
+ /**
+ * Return the rate used at a certain date or -1 if date if not in the format DD.MM.YYYY or -2 if no value is found
+ * @param date $p_date
+ */
+ function get_rate_date($p_date)
+ {
+ global $cn;
+ if (isDate($p_date) == null ) return -1;
+
+ $sql="select ch_value from currency_history
+ where
+ ch_from=(select max(ch_from) from currency_history where ch_from <= to_date($1,'DD.MM.YYYY') and currency_id=$2)
+ and currency_id=$2";
+ $value=$cn->get_value($sql,[$p_date,$this->get_id()]);
+ if ($value == "") return -2;
+ return $value;
+ }
}
diff --git a/include/class/acc_ledger_fin.class.php b/include/class/acc_ledger_fin.class.php
index 8ae133f55..30206fac6 100644
--- a/include/class/acc_ledger_fin.class.php
+++ b/include/class/acc_ledger_fin.class.php
@@ -630,7 +630,7 @@ class Acc_Ledger_Fin extends Acc_Ledger
$r.="";
$acc_currency=$this->get_currency();
$cur=$acc_currency->get_code();
- $cur_rate=$acc_currency->get_rate();
+ $cur_rate=$acc_currency->get_rate_date($e_date);
$default_currency=new Acc_Currency($this->db , 0);
// saldo
$r.='
'.sprintf(_("Ancien solde = %d %s"),$solde, $cur);
@@ -639,6 +639,7 @@ class Acc_Ledger_Fin extends Acc_Ledger
if ( $acc_currency->get_id() != 0)
{
+ $r.='
'.sprintf(_("Taux = %s"),$cur_rate);
$r.='
'.sprintf(_("Nouveau solde = %d %s"),bcmul($new_solde,$cur_rate),$default_currency->get_code());
}
$r.='
'.sprintf(_("Difference = %d %s"), $tot_amount, $cur);
@@ -756,7 +757,7 @@ class Acc_Ledger_Fin extends Acc_Ledger
$get_solde=true;
$acc_currency=new Acc_Currency($this->db,$this->currency_id);
- $currency_rate=$acc_currency->get_rate();
+ $currency_rate=$acc_currency->get_rate_date($e_date);
// for each item
for ($i = 0; $i < $nb_item; $i++)