mirror of
https://github.com/YunoHost-Apps/noalyss_ynh.git
synced 2024-09-03 19:46:20 +02:00
3a905a4a87
Update files from sources with last update on noalyss.eu
206 lines
5.8 KiB
PL/PgSQL
206 lines
5.8 KiB
PL/PgSQL
begin;
|
|
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 IF EXISTS comptaproc.insert_quant_purchase(text, numeric, character varying, numeric, numeric, numeric, integer, numeric, numeric, numeric, numeric, character varying, numeric);
|
|
DROP FUNCTION IF EXISTS comptaproc.insert_quant_purchase(text, numeric, text, numeric, numeric, numeric, integer, numeric, numeric, numeric, numeric, text, numeric);
|
|
DROP FUNCTION IF EXISTS comptaproc.insert_quant_sold(text, numeric, character varying, numeric, numeric, numeric, integer, character varying, numeric);
|
|
|
|
CREATE OR REPLACE FUNCTION comptaproc.insert_quant_purchase(p_internal text,
|
|
p_j_id numeric,
|
|
p_fiche character varying,
|
|
p_quant numeric, p_price numeric,
|
|
p_vat numeric, p_vat_code integer,
|
|
p_nd_amount numeric, p_nd_tva numeric,
|
|
p_nd_tva_recup numeric,
|
|
p_dep_priv numeric,
|
|
p_client character varying,
|
|
p_tva_sided numeric,
|
|
p_price_unit numeric)
|
|
RETURNS void AS
|
|
$BODY$
|
|
declare
|
|
fid_client integer;
|
|
fid_good integer;
|
|
account_priv account_type;
|
|
fid_good_account account_type;
|
|
n_dep_priv numeric;
|
|
begin
|
|
n_dep_priv := 0;
|
|
select p_value into account_priv from parm_code where p_code='DEP_PRIV';
|
|
select f_id into fid_client from
|
|
fiche_detail where ad_id=23 and ad_value=upper(trim(p_client));
|
|
select f_id into fid_good from
|
|
fiche_detail where ad_id=23 and ad_value=upper(trim(p_fiche));
|
|
select ad_value into fid_good_account from fiche_detail where ad_id=5 and f_id=fid_good;
|
|
if strpos( fid_good_account , account_priv ) = 1 then
|
|
n_dep_priv=p_price;
|
|
end if;
|
|
|
|
insert into quant_purchase
|
|
(qp_internal,
|
|
j_id,
|
|
qp_fiche,
|
|
qp_quantite,
|
|
qp_price,
|
|
qp_vat,
|
|
qp_vat_code,
|
|
qp_nd_amount,
|
|
qp_nd_tva,
|
|
qp_nd_tva_recup,
|
|
qp_supplier,
|
|
qp_dep_priv,
|
|
qp_vat_sided,
|
|
qp_unit)
|
|
values
|
|
(p_internal,
|
|
p_j_id,
|
|
fid_good,
|
|
p_quant,
|
|
p_price,
|
|
p_vat,
|
|
p_vat_code,
|
|
p_nd_amount,
|
|
p_nd_tva,
|
|
p_nd_tva_recup,
|
|
fid_client,
|
|
n_dep_priv,
|
|
p_tva_sided,
|
|
p_price_unit);
|
|
return;
|
|
end;
|
|
$BODY$
|
|
LANGUAGE plpgsql;
|
|
|
|
update version set val=123;
|
|
|
|
commit;
|