diff --git a/sql/upgrade.sql b/sql/upgrade.sql index 130c9dc95..e7e99f15d 100644 --- a/sql/upgrade.sql +++ b/sql/upgrade.sql @@ -1,135 +1 @@ -CREATE OR REPLACE FUNCTION comptaproc.insert_quick_code(nf_id integer, tav_text text) - RETURNS integer AS -$BODY$ - declare - ns integer; - nExist integer; - tText text; - tBase text; - tName text; - nCount Integer; - nDuplicate Integer; - begin - tText := lower(trim(tav_text)); - tText := replace(tText,' ',''); - tText:= translate(tText,E' $€µ£%+/\\!(){}(),;&|"#''^<>*',''); - tText := translate(tText,E'éèêëàâäïîüûùöôç','eeeeaaaiiuuuooc'); - nDuplicate := 0; - tBase := tText; - loop - -- take the next sequence - select nextval('s_jnt_fic_att_value') into ns; - if length (tText) = 0 or tText is null then - select count(*) into nCount from fiche_detail where f_id=nf_id and ad_id=1; - if nCount = 0 then - tText := 'FICHE'||ns::text; - else - select ad_value into tName from fiche_detail where f_id=nf_id and ad_id=1; - - tName := lower(trim(tName)); - tName := substr(tName,1,6); - tName := replace(tName,' ',''); - tName:= translate(tName,E' $€µ£%+/\\!(){}(),;&|"#''^<>*',''); - tName := translate(tName,E'éèêëàâäïîüûùöôç','eeeeaaaiiuuuooc'); - tBase := tName; - if nDuplicate = 0 then - tText := tName; - else - tText := tName||nDuplicate::text; - end if; - end if; - end if; - -- av_text already used ? - select count(*) into nExist - from fiche_detail - where - ad_id=23 and ad_value=upper(tText); - - if nExist = 0 then - exit; - end if; - nDuplicate := nDuplicate + 1 ; - tText := tBase || nDuplicate::text; - - if nDuplicate > 9999 then - raise Exception 'too many duplicate % duplicate# %',tText,nDuplicate; - end if; - end loop; - - - insert into fiche_detail(jft_id,f_id,ad_id,ad_value) values (ns,nf_id,23,upper(tText)); - return ns; - end; -$BODY$ -LANGUAGE plpgsql; - -update fiche_detail set ad_value=replace(ad_value,'''','-') where ad_id=23; - -CREATE OR REPLACE FUNCTION comptaproc.update_quick_code(njft_id integer, tav_text text) - RETURNS integer AS -$BODY$ - declare - ns integer; - nExist integer; - tText text; - tBase text; - old_qcode varchar; - num_rows_jrnx integer; - num_rows_predef integer; - begin - -- get current value - select ad_value into old_qcode from fiche_detail where jft_id=njft_id; - -- av_text didn't change so no update - if tav_text = upper( trim(old_qcode)) then - raise notice 'nothing to change % %' , tav_text,old_qcode; - return 0; - end if; - - tText := trim(lower(tav_text)); - tText := replace(tText,' ',''); - -- valid alpha is [ . : - _ ] - tText := translate(tText,E' $€µ£%+/\\!(){}(),;&|"#''^<>*',''); - tText := translate(tText,E'éèêëàâäïîüûùöôç','eeeeaaaiiuuuooc'); - tText := upper(tText); - if length ( tText) = 0 or tText is null then - return 0; - end if; - - ns := njft_id; - tBase := tText; - loop - -- av_text already used ? - select count(*) into nExist - from fiche_detail - where - ad_id=23 and ad_value=tText - and jft_id <> njft_id; - - if nExist = 0 then - exit; - end if; - if tText = tBase||ns then - -- take the next sequence - select nextval('s_jnt_fic_att_value') into ns; - end if; - tText :=tBase||ns; - - end loop; - update fiche_detail set ad_value = tText where jft_id=njft_id; - - -- update also the contact - update fiche_detail set ad_value = tText - where jft_id in - ( select jft_id - from fiche_detail - where ad_id=25 and ad_value=old_qcode); - - - return ns; - end; -$BODY$ - LANGUAGE plpgsql; - -DROP FUNCTION comptaproc.insert_quant_purchase(text, numeric, character varying, numeric, numeric, numeric, integer, numeric, numeric, numeric, numeric, character varying, numeric); -DROP FUNCTION comptaproc.insert_quant_purchase(text, numeric, text, numeric, numeric, numeric, integer, numeric, numeric, numeric, numeric, text, numeric); -DROP FUNCTION comptaproc.insert_quant_sold(text, numeric, character varying, numeric, numeric, numeric, integer, character varying, numeric); +alter table action_gestion drop ag_ref_ag_id; \ No newline at end of file