1
0
Fork 0
mirror of https://github.com/YunoHost-Apps/noalyss_ynh.git synced 2024-09-03 19:46:20 +02:00
noalyss_ynh/sources/html/admin/sql/patch/upgrade86.sql
2015-09-27 00:54:25 +02:00

181 lines
5.8 KiB
PL/PgSQL

begin;
alter table jrnx add f_id bigint;
alter table jrnx alter f_id set default null;
update jrnx set f_id=(select f_id from fiche join jnt_fic_att_value using(f_id) join attr_value using(jft_id) where ad_id=23 and av_text=jrnx.j_qcode);
alter table quant_sold alter qs_internal drop not null;
alter table quant_purchase alter qp_internal drop not null;
alter table attr_Def add ad_size text;
update attr_def set ad_size='8' where ad_type='date';
update attr_def set ad_size='6' where ad_type='numeric';
update attr_def set ad_size='22' where ad_size is null;
alter table attr_def alter ad_size set not null;
ALTER TABLE jrnx ADD CONSTRAINT jrnx_f_id_fkey FOREIGN KEY (f_id) REFERENCES fiche (f_id) MATCH SIMPLE ON UPDATE cascade ON DELETE NO ACTION;
CREATE INDEX fki_jrnx_f_id ON jrnx USING btree (f_id);
CREATE OR REPLACE FUNCTION correct_quant_purchase() returns void
as
$BODY$
declare
r_invalid quant_purchase;
s_QuickCode text;
b_j_debit bool;
r_new record;
r_jrnx record;
begin
for r_invalid in select * from quant_purchase where qp_valid='A'
loop
-- get qcode
select j_qcode into s_QuickCode from vw_poste_qcode where f_id=r_invalid.qp_fiche;
raise notice 'qp_id % Quick code is %',r_invalid.qp_id,s_QuickCode;
-- get deb or cred
select j_debit,j_grpt,j_jrn_def,j_montant into r_jrnx from jrnx where j_id=r_invalid.j_id;
if NOT FOUND then
raise notice 'error not found jrnx %',r_invalid.j_id;
update quant_purchase set qp_valid='Y' where qp_id=r_invalid.qp_id;
continue;
end if;
raise notice 'j_debit % , j_grpt % ,j_jrn_def % qp_price %',r_jrnx.j_debit,r_jrnx.j_grpt,r_jrnx.j_jrn_def ,r_invalid.qp_price;
select jr_internal,j_id,j_montant into r_new
from jrnx join jrn on (j_grpt=jr_grpt_id)
where
j_jrn_def=r_jrnx.j_jrn_def
and j_id not in (select j_id from quant_purchase)
and j_qcode=s_QuickCode
and j_montant=r_jrnx.j_montant
and j_debit != r_jrnx.j_debit;
if NOT FOUND then
raise notice 'error not found %', r_invalid.j_id;
update quant_purchase set qp_valid='Y' where qp_id=r_invalid.qp_id;
continue;
end if;
raise notice 'j_id % found amount %',r_new.j_id,r_new.j_montant;
-- insert into quant_purchase
insert into quant_purchase (qp_internal,j_id,qp_fiche,qp_quantite,qp_price,qp_vat,qp_nd_amount,qp_nd_tva_recup,qp_valid,qp_dep_priv,qp_supplier,qp_vat_code)
values (r_new.jr_internal,r_invalid.j_id,r_invalid.qp_fiche,(r_invalid.qp_quantite * (-1)),r_invalid.qp_price * (-1),r_invalid.qp_vat*(-1),r_invalid.qp_nd_amount*(-1),r_invalid.qp_nd_tva_recup*(-1) ,'Y',r_invalid.qp_dep_priv*(-1),r_invalid.qp_supplier,r_invalid.qp_vat_code);
update quant_purchase set qp_valid='Y' where qp_id=r_invalid.qp_id;
end loop;
return;
end;
$BODY$
LANGUAGE 'plpgsql' VOLATILE;
select correct_quant_purchase();
CREATE OR REPLACE FUNCTION correct_quant_sale() returns void
as
$BODY$
declare
r_invalid quant_sold;
s_QuickCode text;
b_j_debit bool;
r_new record;
r_jrnx record;
begin
for r_invalid in select * from quant_sold where qs_valid='A'
loop
-- get qcode
select j_qcode into s_QuickCode from vw_poste_qcode where f_id=r_invalid.qs_fiche;
raise notice 'qp_id % Quick code is %',r_invalid.qs_id,s_QuickCode;
-- get deb or cred
select j_debit,j_grpt,j_jrn_def,j_montant into r_jrnx from jrnx where j_id=r_invalid.j_id;
if NOT FOUND then
update quant_sold set qs_valid='Y' where qs_id=r_invalid.qs_id;
raise notice 'error not found jrnx %',r_invalid.j_id;
continue;
end if;
raise notice 'j_debit % , j_grpt % ,j_jrn_def % qs_price %',r_jrnx.j_debit,r_jrnx.j_grpt,r_jrnx.j_jrn_def ,r_invalid.qs_price;
select jr_internal,j_id,j_montant into r_new
from jrnx join jrn on (j_grpt=jr_grpt_id)
where
j_jrn_def=r_jrnx.j_jrn_def
and j_id not in (select j_id from quant_sold)
and j_qcode=s_QuickCode
and j_montant=r_jrnx.j_montant
and j_debit != r_jrnx.j_debit;
if NOT FOUND then
update quant_sold set qs_valid='Y' where qs_id=r_invalid.qs_id;
raise notice 'error not found %', r_invalid.j_id;
continue;
end if;
raise notice 'j_id % found amount %',r_new.j_id,r_new.j_montant;
-- insert into quant_sold
insert into quant_sold (qs_internal,j_id,qs_fiche,qs_quantite,qs_price,qs_vat,qs_valid,qs_client,qs_vat_code)
values (r_new.jr_internal,r_invalid.j_id,r_invalid.qs_fiche,(r_invalid.qs_quantite * (-1)),r_invalid.qs_price * (-1),r_invalid.qs_vat*(-1),'Y',r_invalid.qs_client,r_invalid.qs_vat_code);
update quant_sold set qs_valid='Y' where qs_id=r_invalid.qs_id;
end loop;
return;
end;
$BODY$
LANGUAGE 'plpgsql' VOLATILE;
select correct_quant_sale() ;
ALTER TABLE jrn_def ADD COLUMN jrn_def_bank bigint;
alter table jrn_def add jrn_def_num_op integer;
ALTER TABLE del_jrnx ADD COLUMN f_id bigint;
CREATE OR REPLACE FUNCTION comptaproc.jrnx_del()
RETURNS trigger AS
$BODY$
declare
row jrnx%ROWTYPE;
begin
row:=OLD;
insert into del_jrnx(
j_id, j_date, j_montant, j_poste, j_grpt, j_rapt, j_jrn_def,
j_debit, j_text, j_centralized, j_internal, j_tech_user, j_tech_date,
j_tech_per, j_qcode, f_id) SELECT j_id, j_date, j_montant, j_poste, j_grpt, j_rapt, j_jrn_def,
j_debit, j_text, j_centralized, j_internal, j_tech_user, j_tech_date,
j_tech_per, j_qcode, f_id from jrnx where j_id=row.j_id;
return row;
end;
$BODY$
LANGUAGE 'plpgsql' VOLATILE;
ALTER TABLE stock_goods ALTER COLUMN f_id DROP NOT NULL;
CREATE OR REPLACE FUNCTION comptaproc.jnt_fic_attr_ins()
RETURNS trigger AS
$BODY$
declare
r_record jnt_fic_attr%ROWTYPE;
i_max integer;
begin
r_record=NEW;
perform comptaproc.fiche_attribut_synchro(r_record.fd_id);
select coalesce(max(jnt_order),0) into i_max from jnt_fic_attr where fd_id=r_record.fd_id;
i_max := i_max + 10;
NEW.jnt_order=i_max;
return NEW;
end;
$BODY$
LANGUAGE 'plpgsql' VOLATILE;
CREATE TRIGGER t_jnt_fic_attr_ins
BEFORE INSERT
ON jnt_fic_attr
FOR EACH ROW
EXECUTE PROCEDURE comptaproc.jnt_fic_attr_ins();
update version set val=87;
commit;