diff --git a/htdocs/commande/class/commande.class.php b/htdocs/commande/class/commande.class.php
index f90fac176dc..6e9043f1943 100644
--- a/htdocs/commande/class/commande.class.php
+++ b/htdocs/commande/class/commande.class.php
@@ -1301,6 +1301,7 @@ class Commande extends CommonOrder
{
global $conf, $hookmanager;
+ dol_include_once('/multicurrency/class/multicurrency.class.php');
dol_include_once('/core/class/extrafields.class.php');
$error = 0;
@@ -1376,6 +1377,29 @@ class Commande extends CommonOrder
$this->origin = $object->element;
$this->origin_id = $object->id;
+ // Multicurrency (test on $this->multicurrency_tx because we should take the default rate only if not using origin rate)
+ if (!empty($conf->multicurrency->enabled)) {
+ if (!empty($object->multicurrency_code)) {
+ $this->multicurrency_code = $object->multicurrency_code;
+ }
+ if (!empty($conf->global->MULTICURRENCY_USE_ORIGIN_TX) && !empty($object->multicurrency_tx)) {
+ $this->multicurrency_tx = $object->multicurrency_tx;
+ }
+
+ if (!empty($this->multicurrency_code) && empty($this->multicurrency_tx)) {
+ $tmparray = MultiCurrency::getIdAndTxFromCode($this->db, $this->multicurrency_code, $this->date_commande);
+ $this->fk_multicurrency = $tmparray[0];
+ $this->multicurrency_tx = $tmparray[1];
+ } else {
+ $this->fk_multicurrency = MultiCurrency::getIdFromCode($this->db, $this->multicurrency_code);
+ }
+ if (empty($this->fk_multicurrency)) {
+ $this->multicurrency_code = $conf->currency;
+ $this->fk_multicurrency = 0;
+ $this->multicurrency_tx = 1;
+ }
+ }
+
// get extrafields from original line
$object->fetch_optionals();
diff --git a/htdocs/compta/facture/card.php b/htdocs/compta/facture/card.php
index 0589ad18c05..d8e235193b5 100644
--- a/htdocs/compta/facture/card.php
+++ b/htdocs/compta/facture/card.php
@@ -3067,8 +3067,8 @@ if ($action == 'create') {
$remise_absolue = (!empty($expesrc->remise_absolue) ? $expesrc->remise_absolue : (!empty($soc->remise_absolue) ? $soc->remise_absolue : 0));
if (!empty($conf->multicurrency->enabled)) {
- $currency_code = (!empty($expesrc->currency_code) ? $expesrc->currency_code : (!empty($soc->currency_code) ? $soc->currency_code : $objectsrc->multicurrency_code));
- $currency_tx = (!empty($expesrc->currency_tx) ? $expesrc->currency_tx : (!empty($soc->currency_tx) ? $soc->currency_tx : $objectsrc->currency_tx));
+ $currency_code = (!empty($expesrc->multicurrency_code) ? $expesrc->multicurrency_code : (!empty($soc->multicurrency_code) ? $soc->multicurrency_code : $objectsrc->multicurrency_code));
+ $currency_tx = (!empty($expesrc->multicurrency_tx) ? $expesrc->multicurrency_tx : (!empty($soc->multicurrency_tx) ? $soc->multicurrency_tx : $objectsrc->multicurrency_tx));
}
//Replicate extrafields
@@ -4678,16 +4678,16 @@ if ($action == 'create') {
if ($displayWarranty) {
// Retained Warranty
print '
';
- print '';
+ print '| ';
print $langs->trans('RetainedWarranty');
print ' | ';
- if ($action != 'editretainedwarranty' && $user->rights->facture->creer) {
+ if ($action != 'editretainedwarranty' && $user->rights->facture->creer && $object->statut == Facture::STATUS_DRAFT) {
print 'id.'">'.img_edit($langs->trans('setretainedwarranty'), 1).' | ';
}
print ' ';
print ' | ';
- if ($action == 'editretainedwarranty') {
+ if ($action == 'editretainedwarranty' && $object->statut == Facture::STATUS_DRAFT) {
print ' |
|