diff --git a/htdocs/multicurrency/class/multicurrency.class.php b/htdocs/multicurrency/class/multicurrency.class.php index a7ef2153c9f..81d85b7c470 100644 --- a/htdocs/multicurrency/class/multicurrency.class.php +++ b/htdocs/multicurrency/class/multicurrency.class.php @@ -4,6 +4,7 @@ * Copyright (C) 2015 Florian Henry * Copyright (C) 2015 Raphaël Doursenaud * Copyright (C) 2016 Pierre-Henry Favre + * Copyright (C) 2024 Ferran Marcet * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -912,7 +913,8 @@ class CurrencyRate extends CommonObjectLine // Update request $sql = "UPDATE ".MAIN_DB_PREFIX.$this->table_element; - $sql .= "SET rate = ".((float) $this->rate); + $sql .= " SET rate = ".((float) $this->rate); + $sql .= ", rate_indirect = ".((float) $this->rate_indirect); if (!empty($this->date_sync)) { $sql .= ", date_sync = '".$this->db->idate($this->date_sync)."'"; } diff --git a/htdocs/multicurrency/multicurrency_rate.php b/htdocs/multicurrency/multicurrency_rate.php index 94c0438f71e..40fb99eba4a 100644 --- a/htdocs/multicurrency/multicurrency_rate.php +++ b/htdocs/multicurrency/multicurrency_rate.php @@ -10,7 +10,7 @@ * Copyright (C) 2013 Florian Henry * Copyright (C) 2013 Adolfo segura * Copyright (C) 2015 Jean-François Ferry - * Copyright (C) 2016 Ferran Marcet + * Copyright (C) 2016-2024 Ferran Marcet * Copyright (C) 2023 Lenin Rivas * * This program is free software; you can redistribute it and/or modify @@ -58,7 +58,7 @@ $search_code = GETPOST('search_code', 'alpha'); $multicurrency_code = GETPOST('multicurrency_code', 'alpha'); $dateinput = dol_mktime(0, 0, 0, GETPOST('dateinputmonth', 'int'), GETPOST('dateinputday', 'int'), GETPOST('dateinputyear', 'int')); $rateinput = price2num(GETPOST('rateinput', 'alpha')); -$rateindirectinput = price2num(GETPOST('rateinidirectinput', 'alpha')); +$rateindirectinput = price2num(GETPOST('rateindirectinput', 'alpha')); $optioncss = GETPOST('optioncss', 'alpha'); $limit = GETPOST('limit', 'int') ? GETPOST('limit', 'int') : $conf->liste_limit; $sortfield = GETPOST('sortfield', 'aZ09comma'); @@ -168,6 +168,7 @@ if ($action == 'update') { $currencyRate->date_sync = $dateinput; $currencyRate->fk_multicurrency = $fk_currency; $currencyRate->rate = $rateinput; + $currencyRate->rate_indirect = $rateindirectinput; $res = $currencyRate->update(); if ($res) { setEventMessages($langs->trans('successUpdateRate'), null); @@ -244,6 +245,7 @@ if (empty($reshook)) { $search_date_sync = ""; $search_date_sync_end=""; $search_rate = ""; + $search_rate_indirect = ""; $search_code = ""; $search_array_options = array(); } @@ -347,6 +349,9 @@ if ($search_date_sync && $search_date_sync_end) { if ($search_rate) { $sql .= natural_search('cr.rate', $search_rate, 1); } +if ($search_rate_indirect) { + $sql .= natural_search('cr.rate_indirect', $search_rate_indirect, 1); +} if ($search_code) { $sql .= natural_search('m.code', $search_code); } @@ -408,6 +413,9 @@ if ($resql) { if ($search_rate) { $param = "&search_rate=".urlencode($search_rate); } + if ($search_rate_indirect) { + $param = "&search_rate_indirect=".urlencode($search_rate_indirect); + } if ($search_code != '') { $param.="&search_code=".urlencode($search_code); } @@ -502,6 +510,12 @@ if ($resql) { print ''; print ''; } + // rate indirect + if (!empty($arrayfields['cr.rate_indirect']['checked'])) { + print ''; + print ''; + print ''; + } // Fields from hook $parameters = array('arrayfields'=>$arrayfields); @@ -531,6 +545,9 @@ if ($resql) { if (!empty($arrayfields['cr.rate']['checked'])) { print_liste_field_titre($arrayfields['cr.rate']['label'], $_SERVER["PHP_SELF"], "cr.rate", "", $param, "", $sortfield, $sortorder); } + if (!empty($arrayfields['cr.rate_indirect']['checked'])) { + print_liste_field_titre($arrayfields['cr.rate_indirect']['label'], $_SERVER["PHP_SELF"], "cr.rate_indirect", "", $param, "", $sortfield, $sortorder); + } // Hook fields $parameters = array('arrayfields'=>$arrayfields, 'param'=>$param, 'sortfield'=>$sortfield, 'sortorder'=>$sortorder); @@ -557,7 +574,25 @@ if ($resql) { } print ''; print '' . $form->selectMultiCurrency($obj->code, 'multicurrency_code', 1, " code != '".$conf->currency."'", true) . ''; - print ''; + print ''; + + if (getDolGlobalString('MULTICURRENCY_USE_RATE_INDIRECT')) { + print ''; + // LRR Calculate Rate Direct + print ''; + print ''; + } + print ''; print ''; print '';