diff --git a/htdocs/compta/facture.php b/htdocs/compta/facture.php
index b1420656396..0228b6a2f1f 100644
--- a/htdocs/compta/facture.php
+++ b/htdocs/compta/facture.php
@@ -281,7 +281,7 @@ if (empty($reshook))
// Multicurrency rate
else if ($action == 'setmulticurrencyrate' && $user->rights->facture->creer) {
- $result = $object->setMulticurrencyRate(price2num(GETPOST('multicurrency_tx')));
+ $result = $object->setMulticurrencyRate(price2num(GETPOST('multicurrency_tx')), GETPOST('calculation_mode', 'int'));
}
else if ($action == 'setinvoicedate' && $user->rights->facture->creer)
@@ -3237,10 +3237,16 @@ else if ($id > 0 || ! empty($ref))
print '
id . '">' . img_edit($langs->transnoentitiesnoconv('SetMultiCurrencyCode'), 1) . ' | ';
print '';
print '';
- if ($action == 'editmulticurrencyrate') {
+ if ($action == 'editmulticurrencyrate' || $action == 'actualizemulticurrencyrate') {
+ if($action == 'actualizemulticurrencyrate') {
+ list($object->fk_multicurrency, $object->multicurrency_tx) = MultiCurrency::getIdAndTxFromCode($object->db, $object->multicurrency_code);
+ }
$form->form_multicurrency_rate($_SERVER['PHP_SELF'] . '?id=' . $object->id, $object->multicurrency_tx, 'multicurrency_tx', $object->multicurrency_code);
} else {
$form->form_multicurrency_rate($_SERVER['PHP_SELF'] . '?id=' . $object->id, $object->multicurrency_tx, 'none', $object->multicurrency_code);
+ print '';
}
print ' | ';
//}
diff --git a/htdocs/core/class/commonobject.class.php b/htdocs/core/class/commonobject.class.php
index e9a7607d011..c3b3d97d202 100644
--- a/htdocs/core/class/commonobject.class.php
+++ b/htdocs/core/class/commonobject.class.php
@@ -1491,9 +1491,10 @@ abstract class CommonObject
* Change the multicurrency rate
*
* @param double $rate multicurrency rate
+ * @param int $mode mode 1 : amounts in company currency will be recalculated, mode 2 : amounts in foreign currency
* @return int >0 if OK, <0 if KO
*/
- function setMulticurrencyRate($rate)
+ function setMulticurrencyRate($rate, $mode=1)
{
dol_syslog(get_class($this).'::setMulticurrencyRate('.$id.')');
if ($this->statut >= 0 || $this->element == 'societe')
@@ -1513,6 +1514,10 @@ abstract class CommonObject
{
foreach ($this->lines as &$line)
{
+ if($mode == 1) {
+ $line->subprice = 0;
+ }
+
switch ($this->element) {
case 'propal':
$this->updateline($line->id, $line->subprice, $line->qty, $line->remise_percent, $line->tva_tx, $line->localtax1_tx, $line->localtax2_tx, $line->desc, 'HT', $line->info_bits, $line->special_code, $line->fk_parent_line, $line->skip_update_total, $line->fk_fournprice, $line->pa_ht, $line->label, $line->product_type, $line->date_start, $line->date_end, $line->array_options, $line->fk_unit);
@@ -1521,7 +1526,7 @@ abstract class CommonObject
$this->updateline($line->id, $line->desc, $line->subprice, $line->qty, $line->remise_percent, $line->tva_tx, $line->localtax1_tx, $line->localtax2_tx, 'HT', $line->info_bits, $line->date_start, $line->date_end, $line->product_type, $line->fk_parent_line, $line->skip_update_total, $line->fk_fournprice, $line->pa_ht, $line->label, $line->special_code, $line->array_options, $line->fk_unit);
break;
case 'facture':
- $this->updateline($line->id, $line->desc, $line->subprice, $line->qty, $line->remise_percent, $line->date_start, $line->date_end, $line->tva_tx, $line->localtax1_tx, $line->localtax2_tx, 'HT', $line->info_bits, $line->product_type, $line->fk_parent_line, $line->skip_update_total, $line->fk_fournprice, $line->pa_ht, $line->label, $line->special_code, $line->array_options, $line->situation_percent, $line->fk_unit);
+ $this->updateline($line->id, $line->desc, $line->subprice, $line->qty, $line->remise_percent, $line->date_start, $line->date_end, $line->tva_tx, $line->localtax1_tx, $line->localtax2_tx, 'HT', $line->info_bits, $line->product_type, $line->fk_parent_line, $line->skip_update_total, $line->fk_fournprice, $line->pa_ht, $line->label, $line->special_code, $line->array_options, $line->situation_percent, $line->fk_unit, $line->multicurrency_subprice);
break;
case 'supplier_proposal':
$this->updateline($line->id, $line->subprice, $line->qty, $line->remise_percent, $line->tva_tx, $line->localtax1_tx, $line->localtax2_tx, $line->desc, 'HT', $line->info_bits, $line->special_code, $line->fk_parent_line, $line->skip_update_total, $line->fk_fournprice, $line->pa_ht, $line->label, $line->product_type, $line->array_options, $line->ref_fourn);
@@ -3307,7 +3312,7 @@ abstract class CommonObject
print ''.$langs->trans('PriceUHT').' | ';
// Multicurrency
- if (!empty($conf->multicurrency->enabled)) print ''.$langs->trans('PriceUHTCurrency').' | ';
+ if (!empty($conf->multicurrency->enabled)) print ''.$langs->trans('PriceUHTCurrency', $this->multicurrency_code).' | ';
if ($inputalsopricewithtax) print ''.$langs->trans('PriceUTTC').' | ';
@@ -3343,7 +3348,7 @@ abstract class CommonObject
print ''.$langs->trans('TotalHTShort').' | ';
// Multicurrency
- if (!empty($conf->multicurrency->enabled)) print ''.$langs->trans('TotalHTShortCurrency').' | ';
+ if (!empty($conf->multicurrency->enabled)) print ''.$langs->trans('TotalHTShortCurrency', $this->multicurrency_code).' | ';
if ($outputalsopricetotalwithtax) print ''.$langs->trans('TotalTTCShort').' | ';
diff --git a/htdocs/core/class/html.form.class.php b/htdocs/core/class/html.form.class.php
index 012fbe8953a..3c54cd0a525 100644
--- a/htdocs/core/class/html.form.class.php
+++ b/htdocs/core/class/html.form.class.php
@@ -3956,7 +3956,11 @@ class Form
print '';
}