From d05b39e40e23c3a4752261af20c5536ca5b05c63 Mon Sep 17 00:00:00 2001 From: Dany De Bontridder Date: Thu, 16 Jul 2009 17:56:40 +0000 Subject: [PATCH] Fix Bug for Postgresql 8.3 --- html/admin/sql/patch/upgrade57.sql | 43 ++++++++++++++++++++++ include/constant.php | 2 +- sql/upgrade.sql | 58 ++++++++++++++++++------------ 3 files changed, 80 insertions(+), 23 deletions(-) create mode 100644 html/admin/sql/patch/upgrade57.sql diff --git a/html/admin/sql/patch/upgrade57.sql b/html/admin/sql/patch/upgrade57.sql new file mode 100644 index 000000000..58ea47700 --- /dev/null +++ b/html/admin/sql/patch/upgrade57.sql @@ -0,0 +1,43 @@ +begin; +DROP FUNCTION tva_insert (text,numeric,text,text); + +CREATE FUNCTION tva_insert(text, numeric, text, text) RETURNS integer + AS $_$ +declare +l_tva_id integer; +p_tva_label alias for $1; +p_tva_rate alias for $2; +p_tva_comment alias for $3; +p_tva_poste alias for $4; +debit text; +credit text; +nCount integer; +begin +if length(trim(p_tva_label)) = 0 then + return 3; +end if; + +if length(trim(p_tva_poste)) != 0 then + if position (',' in p_tva_poste) = 0 then return 4; end if; + debit = split_part(p_tva_poste,',',1); + credit = split_part(p_tva_poste,',',2); + select count(*) into nCount from tmp_pcmn where pcm_val=debit::poste_comptable; + if nCount = 0 then return 4; end if; + select count(*) into nCount from tmp_pcmn where pcm_val=credit::poste_comptable; + if nCount = 0 then return 4; end if; + +end if; +select into l_tva_id nextval('s_tva') ; +insert into tva_rate(tva_id,tva_label,tva_rate,tva_comment,tva_poste) + values (l_tva_id,p_tva_label,p_tva_rate,p_tva_comment,p_tva_poste); +return 0; +end; +$_$ +LANGUAGE plpgsql; + + + +update version set val=58; + +commit; + diff --git a/include/constant.php b/include/constant.php index db40861cc..8cbe4b631 100644 --- a/include/constant.php +++ b/include/constant.php @@ -26,7 +26,7 @@ require_once ('config.inc.php'); require_once('constant.security.php'); -define ("DBVERSION",57); +define ("DBVERSION",58); define ("MAX_COMPTE",4); define ('MAX_BUD_DETAIL',20); diff --git a/sql/upgrade.sql b/sql/upgrade.sql index 83ea54504..8344eabb3 100644 --- a/sql/upgrade.sql +++ b/sql/upgrade.sql @@ -1,26 +1,40 @@ begin; -CREATE OR REPLACE FUNCTION create_missing_sequence() - RETURNS integer AS -$BODY$ -declare -p_sequence text; -nSeq integer; -c1 cursor for select jrn_def_id from jrn_def; -begin - open c1; - loop - fetch c1 into nSeq; - if not FOUND THEN - close c1; - return 0; - end if; - p_sequence:='s_jrn_pj'||nSeq::text; - execute 'create sequence '||p_sequence; - end loop; -close c1; -return 0; +DROP FUNCTION tva_insert (text,numeric,text,text); +CREATE FUNCTION tva_insert(text, numeric, text, text) RETURNS integer + AS $_$ +declare +l_tva_id integer; +p_tva_label alias for $1; +p_tva_rate alias for $2; +p_tva_comment alias for $3; +p_tva_poste alias for $4; +debit text; +credit text; +nCount integer; +begin +if length(trim(p_tva_label)) = 0 then + return 3; +end if; + +if length(trim(p_tva_poste)) != 0 then + if position (',' in p_tva_poste) = 0 then return 4; end if; + debit = split_part(p_tva_poste,',',1); + credit = split_part(p_tva_poste,',',2); + select count(*) into nCount from tmp_pcmn where pcm_val=debit::poste_comptable; + if nCount = 0 then return 4; end if; + select count(*) into nCount from tmp_pcmn where pcm_val=credit::poste_comptable; + if nCount = 0 then return 4; end if; + +end if; +select into l_tva_id nextval('s_tva') ; +insert into tva_rate(tva_id,tva_label,tva_rate,tva_comment,tva_poste) + values (l_tva_id,p_tva_label,p_tva_rate,p_tva_comment,p_tva_poste); +return 0; end; -$BODY$ - LANGUAGE 'plpgsql'; +$_$ +LANGUAGE plpgsql; + + + commit;