From e1076de25b431e31bf38136c200b80876cca7fc3 Mon Sep 17 00:00:00 2001 From: Dany De Bontridder Date: Fri, 11 May 2018 21:39:09 +0200 Subject: [PATCH] task #448 : currency always used and remove parameter 'use_currency' from parameters, add SQL script --- include/acc_currency_cfg.inc.php | 5 +- include/constant.php | 2 +- include/sql/patch/upgrade128.sql | 106 +++++++++++++++++++++++++++++++ 3 files changed, 108 insertions(+), 5 deletions(-) create mode 100644 include/sql/patch/upgrade128.sql diff --git a/include/acc_currency_cfg.inc.php b/include/acc_currency_cfg.inc.php index c60bb29f3..aea388ab7 100644 --- a/include/acc_currency_cfg.inc.php +++ b/include/acc_currency_cfg.inc.php @@ -29,10 +29,7 @@ if (!defined('ALLOWED')) { die('Appel direct ne sont pas permis'); } echo '
'; global $g_parameter; -if ( $g_parameter->MY_CURRENCY=='N'){ - echo h2info(_("Vous n'utilisez pas les devises , vous devez le configurer dans COMPANY")); - return; -} + require_once NOALYSS_INCLUDE."/class/currency_mtable.class.php"; require_once NOALYSS_INCLUDE."/lib/manage_table_sql.class.php"; require_once NOALYSS_INCLUDE.'/database/v_currency_last_value_sql.class.php'; diff --git a/include/constant.php b/include/constant.php index 67f0da304..cce784f4b 100644 --- a/include/constant.php +++ b/include/constant.php @@ -110,7 +110,7 @@ if ( !defined ("NOALYSS_PACKAGE_REPOSITORY")) { if ( ! defined ("SYSINFO_DISPLAY")) { define ("SYSINFO_DISPLAY",TRUE); } -define ("DBVERSION",128); +define ("DBVERSION",129); define ("MONO_DATABASE",25); define ("DBVERSIONREPO",18); define ('NOTFOUND','--not found--'); diff --git a/include/sql/patch/upgrade128.sql b/include/sql/patch/upgrade128.sql new file mode 100644 index 000000000..a491ed5f1 --- /dev/null +++ b/include/sql/patch/upgrade128.sql @@ -0,0 +1,106 @@ +begin; +INSERT INTO public.menu_ref +(me_code, me_menu, me_file, me_url, me_description, me_parameter, me_javascript, me_type, me_description_etendue) +VALUES('CFGCURRENCY', 'Devises', 'acc_currency_cfg.inc.php', NULL, 'Configuration des devises', NULL,NULL,'ME','Permet de configurer les devises'); + +INSERT INTO public.profile_menu +(pm_id, me_code, me_code_dep, p_id, p_order, p_type_display, pm_default, pm_id_dep) +VALUES(nextval('profile_menu_pm_id_seq'), 'CFGCURRENCY', 'PARAM', 1, 50, 'E', 0, 45); + +-- Drop table + +-- DROP TABLE public.currency + +CREATE TABLE public.currency ( + id serial NOT NULL, + cr_code_iso varchar(10) NULL, + CONSTRAINT currency_pk PRIMARY KEY (id), + CONSTRAINT currency_un UNIQUE (cr_code_iso) +); + + +-- Drop table + +-- DROP TABLE public.currency_history + +CREATE TABLE public.currency_history ( + id serial NOT NULL, + ch_value numeric(20,6) NOT NULL, + ch_from date NOT NULL, + currency_id int4 NOT NULL, + CONSTRAINT currency_history_pk PRIMARY KEY (id), + CONSTRAINT currency_history_currency_fk FOREIGN KEY (currency_id) REFERENCES currency(id) + ON DELETE RESTRICT ON UPDATE CASCADE +) +; + +-- Ajouter commentaire sur colonne + +ALTER TABLE public.currency ADD cr_name varchar(80) NULL; +insert into currency (id,cr_code_iso,cr_name) values (0,'EUR','EUR'); +insert into currency_history (ch_value,ch_from,currency_id) values (1,to_date('01.01.2000','DD.MM.YYYY'),0); + +ALTER TABLE public.currency_history ADD CONSTRAINT currency_history_check CHECK (ch_value > 0) ; + +-- Create view to manage the table +create view v_currency_last_value as +with recent_rate as +( select + currency_id,max(ch_from) as rc_from + from + currency_history + group by currency_id + ) +select + cr1.id as currency_id, + cr1.cr_name, + cr1.cr_code_iso, + ch1.id as currency_history_id, + ch1.ch_value as ch_value, + to_char(rc_from,'DD.MM.YYYY') as str_from +from +currency as cr1 +join recent_rate on (currency_id=cr1.id) +join currency_history as ch1 on (recent_rate.currency_id=ch1.currency_id and rc_from=ch1.ch_from); + +COMMENT ON COLUMN public.currency_history.id IS 'pk' ; +COMMENT ON COLUMN public.currency_history.ch_value IS 'rate of currency depending of currency of the folder' ; +COMMENT ON COLUMN public.currency_history.ch_from IS 'Date when the rate is available' ; +COMMENT ON COLUMN public.currency_history.currency_id IS 'FK to currency' ; +COMMENT ON COLUMN public.currency.cr_code_iso IS 'Code ISO' ; +COMMENT ON COLUMN public.currency.cr_name IS 'Name of the currency' ; + + + +-- Drop table + +-- DROP TABLE public.operation_currency + +CREATE TABLE public.operation_currency ( + id bigserial NOT NULL, + oc_amount numeric(6) NOT NULL, -- amount in currency + oc_vat_amount numeric(6) NULL DEFAULT 0, -- vat amount in currency + oc_price_unit numeric(6) NULL, -- unit price in currency + j_id int8 NOT NULL, -- fk to jrnx + CONSTRAINT operation_currency_pk PRIMARY KEY (id) +); + +ALTER TABLE public.operation_currency ADD CONSTRAINT operation_currency_jrnx_fk FOREIGN KEY (j_id) REFERENCES public.jrnx(j_id) ON DELETE CASCADE ON UPDATE CASCADE; + +-- Column comments + +COMMENT ON COLUMN public.operation_currency.oc_amount IS 'amount in currency' ; +COMMENT ON COLUMN public.operation_currency.oc_vat_amount IS 'vat amount in currency' ; +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 0; +update jrn set currency_id=0; +alter table jrn add currency_rate numeric (20,6) default 1; +update jrn set currency_rate=1; +alter table jrn add currency_rate_ref numeric(20,6) default 1; +update jrn set currency_rate_ref=1; +ALTER TABLE public.jrn ADD CONSTRAINT jrn_currency_fk FOREIGN KEY (currency_id) REFERENCES public.currency(id) ON DELETE RESTRICT ON UPDATE RESTRICT; + + +insert into version (val,v_description) values (129,'Currency : create view , create tables '); +commit; \ No newline at end of file