From 05305dfeab8df8ebd6627a022cf38f0ee0ab11c5 Mon Sep 17 00:00:00 2001 From: Dany De Bontridder Date: Fri, 11 May 2018 20:46:40 +0200 Subject: [PATCH] Task #448 : currency_id = 0 for the default currency + display currency rate in confirm operation --- include/class/acc_currency.class.php | 3 +-- include/class/acc_ledger_purchase.class.php | 13 +++++++++---- include/class/acc_ledger_sold.class.php | 16 ++++++++++++---- include/class/currency_mtable.class.php | 9 +++++++-- sql/upgrade.sql | 2 +- 5 files changed, 30 insertions(+), 13 deletions(-) diff --git a/include/class/acc_currency.class.php b/include/class/acc_currency.class.php index 1581013d7..30129162e 100644 --- a/include/class/acc_currency.class.php +++ b/include/class/acc_currency.class.php @@ -108,8 +108,7 @@ class Acc_Currency function select_currency() { $select=new ISelect('p_currency_code'); - $a_currency[0]=["value"=>-1,"label"=>"EUR"]; - $a_currency+=$this->cn->make_array("select currency_id,cr_code_iso from v_currency_last_value order by cr_code_iso"); + $a_currency=$this->cn->make_array("select currency_id,cr_code_iso from v_currency_last_value order by cr_code_iso"); $select->value=$a_currency; $select->selected=$this->currency->cr_code_iso; diff --git a/include/class/acc_ledger_purchase.class.php b/include/class/acc_ledger_purchase.class.php index f72c2588b..3bfa1deef 100644 --- a/include/class/acc_ledger_purchase.class.php +++ b/include/class/acc_ledger_purchase.class.php @@ -1367,7 +1367,7 @@ class Acc_Ledger_Purchase extends Acc_Ledger // Currency $currency_select = $this->CurrencyInput("currency_code", "p_currency_rate" , "p_currency_euro"); - $currency_select->selected=$http->request('p_currency_code','string',-1); + $currency_select->selected=$http->request('p_currency_code','string',0); $currency_input=new INum("p_currency_rate"); $currency_input->id="p_currency_rate"; @@ -1662,7 +1662,7 @@ class Acc_Ledger_Purchase extends Acc_Ledger // Get currency code $str_code='EUR'; - if ( $p_currency_code != -1 ) { + if ( $p_currency_code != 0 ) { $acc_currency=new Acc_Currency($this->db); $acc_currency->set_id($p_currency_code); $str_code=$acc_currency->get_code(); @@ -1688,6 +1688,10 @@ class Acc_Ledger_Purchase extends Acc_Ledger {$tot} {$str_code} +EOF; + if ($p_currency_code !=0) { + $rate=_("Taux "); +$r.=<< {$decalage} @@ -1697,14 +1701,15 @@ class Acc_Ledger_Purchase extends Acc_Ledger - + {$rate} {$p_currency_rate} {$tot_eur} EUR EOF; - } else { + } + }else { $r.=<< {$decalage} diff --git a/include/class/acc_ledger_sold.class.php b/include/class/acc_ledger_sold.class.php index 65f879372..bc1ac2898 100644 --- a/include/class/acc_ledger_sold.class.php +++ b/include/class/acc_ledger_sold.class.php @@ -923,7 +923,7 @@ class Acc_Ledger_Sold extends Acc_Ledger { // Get currency code $str_code='EUR'; - if ( $p_currency_code != -1 ) { + if ( $p_currency_code != 0 ) { $acc_currency=new Acc_Currency($this->db); $acc_currency->set_id($p_currency_code); $str_code=$acc_currency->get_code(); @@ -949,7 +949,11 @@ if ( $g_parameter->MY_TVA_USE=="Y") { {$tot} {$str_code} - +EOF; + if ($p_currency_code !=0) { + $rate=_("Taux "); +$r.=<< {$decalage} @@ -958,13 +962,15 @@ if ( $g_parameter->MY_TVA_USE=="Y") { - + {$rate} {$p_currency_rate} {$tot_eur} EUR EOF; + } + } else { $r.=<< @@ -987,8 +993,10 @@ EOF; + + {$rate} {$p_currency_rate} {$tot} {$str_code} @@ -1453,7 +1461,7 @@ EOF; // Currency $currency_select = $this->CurrencyInput("currency_code", "p_currency_rate" , "p_currency_euro"); - $currency_select->selected=$http->request('p_currency_code','string',-1); + $currency_select->selected=$http->request('p_currency_code','string',0); $currency_input=new INum("p_currency_rate"); $currency_input->id="p_currency_rate"; diff --git a/include/class/currency_mtable.class.php b/include/class/currency_mtable.class.php index de3afad12..89ddf5afc 100644 --- a/include/class/currency_mtable.class.php +++ b/include/class/currency_mtable.class.php @@ -30,6 +30,7 @@ require_once NOALYSS_INCLUDE.'/database/currency_history_sql.class.php'; /** * Manage the configuration of currency , add currency, rate, remove and update * Concerned tables are v_currency_last_value _SQL , Currency_SQL , Currency_History_SQL + * currency_id = 0 for the default currency , -1 for a new one */ class Currency_MTable extends Manage_Table_SQL { @@ -110,13 +111,17 @@ class Currency_MTable extends Manage_Table_SQL * - Date of the rate * - code iso is max 10 char * - name is max 80 - * + * Default currency (id=0) cannot be changed */ function check() { global $cn; $table=$this->get_table(); $is_error=0; + if ( $table->currency_id == 0) { + $is_error++; + $this->set_error("cr_code_iso", _("Devise par défaut ne peut être changée")); + } // ------ cr_code_iso can not be empty if (trim($table->cr_code_iso)=="") { @@ -292,7 +297,7 @@ class Currency_MTable extends Manage_Table_SQL */ function display_row($p_row) { - if ($p_row['currency_id']==-1) + if ($p_row['currency_id']==0) { return; } diff --git a/sql/upgrade.sql b/sql/upgrade.sql index 29bfa60ef..73bbfe57c 100644 --- a/sql/upgrade.sql +++ b/sql/upgrade.sql @@ -94,7 +94,7 @@ COMMENT ON COLUMN public.operation_currency.oc_vat_amount IS 'vat amount in curr COMMENT ON COLUMN public.operation_currency.oc_price_unit IS 'unit price in currency' ; COMMENT ON COLUMN public.operation_currency.j_id IS 'fk to jrnx' ; -alter table jrn add currency_id bigint default -1; +alter table jrn add currency_id bigint default 0; alter table jrn add currency_rate numeric (20,6) default 1; alter table jrn add currency_rate_ref numeric(20,6) default 1; ALTER TABLE public.jrn ADD CONSTRAINT jrn_currency_fk FOREIGN KEY (currency_id) REFERENCES public.currency(id) ON DELETE RESTRICT ON UPDATE RESTRICT;