diff --git a/core/trunk/structure.sql b/core/trunk/structure.sql index ffce6373a6df9359a3cbb86dd0be33a13473ab8d..ccb123f41ec2c1de07592859ab9ecc8699ca5d94 100644 --- a/core/trunk/structure.sql +++ b/core/trunk/structure.sql @@ -3299,6 +3299,48 @@ CREATE TABLE photo_capture CONSTRAINT photo_capture_pkey PRIMARY KEY (res_id) ); +-- fileplan module +DROP SEQUENCE IF EXISTS fp_fileplan_positions_position_id_seq; +CREATE SEQUENCE fp_fileplan_positions_position_id_seq + INCREMENT 1 + MINVALUE 1 + MAXVALUE 9223372036854775807 + START 10 + CACHE 1; + +DROP TABLE IF EXISTS fp_fileplan; +CREATE TABLE fp_fileplan +( + fileplan_id serial NOT NULL, + fileplan_label character varying(255), + user_id character varying(128) DEFAULT NULL, + entity_id character varying(32) DEFAULT NULL, + is_serial_id character varying(1) NOT NULL DEFAULT 'Y', + enabled character varying(1) NOT NULL DEFAULT 'Y', + CONSTRAINT fp_fileplan_pkey PRIMARY KEY (fileplan_id) + ); + +DROP TABLE IF EXISTS fp_fileplan_positions; +CREATE TABLE fp_fileplan_positions +( + position_id character varying(32) NOT NULL, + position_label character varying(255), + parent_id character varying(32) DEFAULT NULL, + fileplan_id bigint NOT NULL, + enabled character varying(1) NOT NULL DEFAULT 'Y', + CONSTRAINT fp_fileplan_positions_pkey PRIMARY KEY (fileplan_id, position_id) +); + +DROP TABLE IF EXISTS fp_res_fileplan_positions; +CREATE TABLE fp_res_fileplan_positions +( + res_id bigint NOT NULL, + coll_id character varying(32) NOT NULL, + fileplan_id bigint NOT NULL, + position_id character varying(32) NOT NULL, + CONSTRAINT fp_res_fileplan_positions_pkey PRIMARY KEY (res_id, coll_id, fileplan_id, position_id) +); + --VIEWS --view for demo DROP VIEW IF EXISTS res_view; @@ -3545,3 +3587,19 @@ LEFT JOIN (SELECT res_letterbox.folders_system_id, count(res_letterbox.folders_s FROM res_letterbox GROUP BY res_letterbox.folders_system_id) r ON r.folders_system_id = folders.folders_system_id WHERE folders.foldertype_id = foldertypes.foldertype_id; + +-- View fileplan +CREATE OR REPLACE VIEW fp_view_fileplan AS + SELECT fp_fileplan.fileplan_id, fp_fileplan.fileplan_label, + fp_fileplan.user_id, fp_fileplan.entity_id, fp_fileplan.enabled, + fp_fileplan_positions.position_id, fp_fileplan_positions.position_label, + fp_fileplan_positions.parent_id, + fp_fileplan_positions.enabled AS position_enabled, + COALESCE(r.count_document, 0::bigint) AS count_document + FROM fp_fileplan, + fp_fileplan_positions + LEFT JOIN ( SELECT fp_res_fileplan_positions.position_id, + count(fp_res_fileplan_positions.res_id) AS count_document + FROM fp_res_fileplan_positions + GROUP BY fp_res_fileplan_positions.position_id) r ON r.position_id::text = fp_fileplan_positions.position_id::text + WHERE fp_fileplan.fileplan_id = fp_fileplan_positions.fileplan_id;