altocompta/sql/upgrade.sql
Dany De Bontridder bf13768b51 Add :
Multi comment
related operation
related action
2012-05-31 02:51:49 +00:00

162 lines
5.1 KiB
PL/PgSQL

CREATE OR REPLACE FUNCTION comptaproc.check_balance(p_grpt integer)
RETURNS numeric AS
$BODY$
declare
amount_jrnx_debit numeric;
amount_jrnx_credit numeric;
amount_jrn numeric;
begin
select coalesce(sum (j_montant),0) into amount_jrnx_credit
from jrnx
where
j_grpt=p_grpt
and j_debit=false;
select coalesce(sum (j_montant),0) into amount_jrnx_debit
from jrnx
where
j_grpt=p_grpt
and j_debit=true;
select coalesce(jr_montant,0) into amount_jrn
from jrn
where
jr_grpt_id=p_grpt;
if ( amount_jrnx_debit != amount_jrnx_credit )
then
return abs(amount_jrnx_debit-amount_jrnx_credit);
end if;
if ( amount_jrn != amount_jrnx_credit)
then
return -1*abs(amount_jrn - amount_jrnx_credit);
end if;
return 0;
end;
$BODY$
LANGUAGE plpgsql;
update op_predef set od_direct='t' where od_jrn_type='ODS';
INSERT INTO menu_ref(
me_code, me_menu, me_file, me_url, me_description, me_parameter,
me_javascript, me_type)
VALUES ('BK', 'Banque', 'bank.inc.php', null, 'Information Banque', null,null,'ME');
INSERT INTO profile_menu(
me_code, me_code_dep, p_id, p_order, p_type_display, pm_default)
VALUES ('BK', 'GESTION', 1, 4, 'E', 0);
INSERT INTO profile_menu(
me_code, me_code_dep, p_id, p_order, p_type_display, pm_default)
VALUES ('BK', 'GESTION', 2, 4, 'E', 0);
update menu_ref set me_description='Grand livre analytique' where me_code='ANCGL';
alter table action_gestion add ag_remind_date date;
drop table jrn_action;
update action_gestion set ag_dest=null;
alter table action_gestion alter ag_dest type bigint using ag_dest::numeric;
alter table action_gestion alter ag_dest set default null;
COMMENT ON COLUMN action_gestion.ag_dest IS ' is the profile which has to take care of this action ';
ALTER TABLE action_gestion
ADD CONSTRAINT profile_fkey FOREIGN KEY (ag_dest)
REFERENCES profile (p_id) MATCH SIMPLE
ON UPDATE SET NULL ON DELETE SET NULL;
CREATE TABLE action_gestion_comment
(
agc_id bigserial NOT NULL, -- PK
ag_id bigint, -- FK to action_gestion
agc_date timestamp with time zone,
agc_comment text, -- comment
tech_user text, -- user_login
CONSTRAINT action_gestion_comment_pkey PRIMARY KEY (agc_id ),
CONSTRAINT action_gestion_comment_ag_id_fkey FOREIGN KEY (ag_id)
REFERENCES action_gestion (ag_id) MATCH SIMPLE
ON UPDATE CASCADE ON DELETE CASCADE
);
ALTER TABLE action_gestion_comment ALTER COLUMN agc_date SET DEFAULT now();
COMMENT ON COLUMN action_gestion_comment.agc_id IS 'PK';
COMMENT ON COLUMN action_gestion_comment.ag_id IS 'FK to action_gestion';
COMMENT ON COLUMN action_gestion_comment.agc_comment IS 'comment';
COMMENT ON COLUMN action_gestion_comment.tech_user IS 'user_login';
insert into action_gestion_comment (ag_id,agc_date,agc_comment,tech_user) select ag_id,ag_timestamp,ag_comment,ag_owner from action_gestion;
ALTER TABLE action_gestion drop COLUMN ag_comment;
CREATE TABLE action_gestion_operation
(
ago_id bigserial NOT NULL, -- pk
ag_id bigint, -- fk to action_gestion
jr_id bigint, -- fk to jrn
CONSTRAINT action_comment_operation_pkey PRIMARY KEY (ago_id ),
CONSTRAINT action_comment_operation_ag_id_fkey FOREIGN KEY (ag_id)
REFERENCES action_gestion (ag_id) MATCH SIMPLE
ON UPDATE CASCADE ON DELETE CASCADE,
CONSTRAINT action_comment_operation_jr_id_fkey FOREIGN KEY (jr_id)
REFERENCES jrn (jr_id) MATCH SIMPLE
ON UPDATE CASCADE ON DELETE CASCADE
);
COMMENT ON COLUMN action_comment_operation.ago_id IS 'pk';
COMMENT ON COLUMN action_comment_operation.ag_id IS 'fk to action_gestion';
COMMENT ON COLUMN action_comment_operation.jr_id IS 'fk to jrn';
CREATE TABLE action_gestion_related
(
aga_id bigserial NOT NULL, -- pk
aga_least bigint NOT NULL, -- fk to action_gestion
aga_greatest bigint NOT NULL,
CONSTRAINT action_gestion_related_pkey PRIMARY KEY (aga_id ),
CONSTRAINT action_gestion_related_aga_greatest_fkey FOREIGN KEY (aga_greatest)
REFERENCES action_gestion (ag_id) MATCH SIMPLE
ON UPDATE CASCADE ON DELETE CASCADE,
CONSTRAINT action_gestion_related_aga_least_fkey FOREIGN KEY (aga_least)
REFERENCES action_gestion (ag_id) MATCH SIMPLE
ON UPDATE CASCADE ON DELETE CASCADE,
CONSTRAINT ux_aga_least_aga_greatest UNIQUE (aga_least , aga_greatest )
);
COMMENT ON COLUMN action_gestion_related.aga_id IS 'pk';
COMMENT ON COLUMN action_gestion_related.aga_least IS 'fk to action_gestion, smallest ag_id';
COMMENT ON COLUMN action_gestion_related.aga_greatest IS 'fk to action_gestion greatest ag_id';
-- Trigger: trg_action_gestion_related on action_gestion_related
CREATE OR REPLACE FUNCTION comptaproc.action_gestion_related_ins_up()
RETURNS trigger AS
$BODY$
declare
nTmp bigint;
begin
if NEW.aga_least > NEW.aga_greatest then
nTmp := NEW.aga_least;
NEW.aga_least := NEW.aga_greatest;
NEW.aga_greatest := nTmp;
end if;
if NEW.aga_least = NEW.aga_greatest then
return NULL;
end if;
return NEW;
end;
$BODY$
LANGUAGE plpgsql ;
-- DROP TRIGGER trg_action_gestion_related ON action_gestion_related;
CREATE TRIGGER trg_action_gestion_related
BEFORE INSERT OR UPDATE
ON action_gestion_related
FOR EACH ROW
EXECUTE PROCEDURE comptaproc.action_gestion_related_ins_up();