begin; CREATE or replace FUNCTION insert_quant_sold (p_internal text, p_fiche character varying, p_quant integer, p_price numeric, p_vat numeric, p_vat_code integer, p_client character varying) RETURNS void AS $body$ declare fid_client integer; fid_good integer; begin select f_id into fid_client from attr_value join jnt_fic_att_value using (jft_id) where ad_id=23 and av_text=upper(p_client); select f_id into fid_good from attr_value join jnt_fic_att_value using (jft_id) where ad_id=23 and av_text=upper(p_fiche); insert into quant_sold (qs_internal,qs_fiche,qs_quantite,qs_price,qs_vat,qs_vat_code,qs_client) values (p_internal,fid_good,p_quant,p_price,p_vat,p_vat_code,fid_client); return; end; $body$ LANGUAGE plpgsql; -- add quick code for contact insert into attr_min (frd_id,ad_id) select distinct 16,23 from attr_min where not exists (select * from attr_min where ad_id=23 and frd_id=16); insert into jnt_fic_attr (fd_id,ad_id) select fd_id,23 from fiche_def where frd_id=16 and not exists (select * from jnt_fic_attr join fiche_def using (fd_id) where frd_id=16 and ad_id=23); CREATE or replace FUNCTION update_quick_code(njft_id integer, tav_text text) RETURNS integer AS $body$ declare ns integer; nExist integer; tText text; old_qcode varchar; begin -- get current value select av_text into old_qcode from attr_value where jft_id=njft_id; -- av_text didn't change so no update if tav_text = upper( trim(old_qcode)) then return 0; end if; tText := trim(upper(tav_text)); tText := replace(tText,' ',''); if length ( tText) = 0 or tText is null then return 0; end if; ns := njft_id; loop -- av_text already used ? select count(*) into nExist from jnt_fic_att_value join attr_value using (jft_id) where ad_id=23 and av_text=tText; if nExist = 0 then exit; end if; if tText = 'FID'||ns then -- take the next sequence select nextval('s_jnt_fic_att_value') into ns; end if; tText :='FID'||ns; end loop; update attr_value set av_text = tText where jft_id=njft_id; -- update also the contact update attr_value set av_text = tText where jft_id in ( select jft_id from jnt_fic_att_value join attr_value using (jft_id) where ad_id=25 and av_text=old_qcode); update jrnx set j_qcode=tText where j_qcode = old_qcode; return ns; end; $body$ LANGUAGE plpgsql; update parm_periode set p_end = p_start where p_end is null; alter table parm_periode alter p_end set not null; create or replace function drop_it (p_constraint varchar) returns void as $body$ declare -- drop a constraint if it exists nCount integer; begin select count(*) into nCount from pg_constraint where conname=p_constraint; if nCount = 1 then execute 'alter table parm_periode drop constraint '||p_constraint ; end if; end; $body$ language plpgsql; select drop_it('parm_periode_p_start_key'); create unique index x_periode on parm_periode (p_start,p_end); update version set val=21; commit;