FCLT#57835 *Alle* Flexkenmerk bijlagen in de database opslaan

svn path=/Database/trunk/; revision=43197
This commit is contained in:
Erik Groener
2019-07-03 09:11:45 +00:00
parent a6c43efe22
commit 537af2bb60
13 changed files with 149 additions and 87 deletions

View File

@@ -570,7 +570,6 @@ CREATE_TABLE(alg_onrgoedkenmerk,0)
,alg_onrgoedkenmerk_verwijder
DATE
DEFAULT NULLDATUM
,CONSTRAINT alg_u_alg_onrgoedkenmerk_key UNIQUE(alg_onrgoed_key, alg_kenmerk_key, alg_onrgoedkenmerk_verwijder)
);
CREATE_TABLE(alg_kenmerk,0)

View File

@@ -665,7 +665,6 @@ CREATE_TABLE(bes_kenmerkbestell, 0)
, CONSTRAINT bes_c_bes_kenmerk_key1 CHECK(bes_kenmerk_key IS NOT NULL)
, CONSTRAINT bes_r_bes_kenmerk_key2 FOREIGN KEY(bes_kenmerk_key) REFERENCES bes_kenmerk(bes_kenmerk_key)
, CONSTRAINT bes_c_bes_kenmerkbestell_aanm CHECK(bes_kenmerkbestell_aanmaak IS NOT NULL)
, CONSTRAINT bes_u_bes_kenmerkbestell UNIQUE(bes_kenmerk_key, bes_bestelling_key, bes_kenmerkbestell_verwijder)
);
CREATE_TABLE(bes_kenmerkbesteli, 0)
@@ -689,7 +688,6 @@ CREATE_TABLE(bes_kenmerkbesteli, 0)
, CONSTRAINT bes_c_bes_kenmerk_key3 CHECK(bes_kenmerk_key IS NOT NULL)
, CONSTRAINT bes_r_bes_kenmerk_key4 FOREIGN KEY(bes_kenmerk_key) REFERENCES bes_kenmerk(bes_kenmerk_key)
, CONSTRAINT bes_c_bes_kenmerkbesteli_aanm CHECK(bes_kenmerkbesteli_aanmaak IS NOT NULL)
, CONSTRAINT bes_u_bes_kenmerkbesteli UNIQUE(bes_kenmerk_key, bes_bestelling_item_key, bes_kenmerkbesteli_verwijder)
);
CREATE_TABLE(bes_favoriet, 0)

View File

@@ -193,8 +193,7 @@ CREATE_TABLE(bez_kenmerkwaarde,0)
NOT_NULL(bez_kenmerkwaarde_aanmaak, bez_c_bez_kenmerkwaarde_aanm)
, bez_kenmerkwaarde_verwijder
DATE
DEFAULT NULLDATUM,
CONSTRAINT bez_u_bez_kenmerkwaarde_key UNIQUE(bez_bezoekers_key, bez_kenmerk_key)
DEFAULT NULLDATUM
);
REGISTERONCE('$Id$')

View File

@@ -382,7 +382,6 @@ CREATE_TABLE(cnt_kenmerkcontract, 0)
, CONSTRAINT cnt_r_cnt_kenmerk_key1 CHECK(cnt_kenmerk_key IS NOT NULL)
, CONSTRAINT cnt_r_cnt_kenmerk_key2 FOREIGN KEY(cnt_kenmerk_key) REFERENCES cnt_kenmerk(cnt_kenmerk_key)
, CONSTRAINT cnt_c_cnt_kenmerkcontract_aan CHECK(cnt_kenmerkcontract_aanmaak IS NOT NULL)
, CONSTRAINT cnt_u_cnt_kenmerkcontract UNIQUE(cnt_contract_key, cnt_kenmerk_key, cnt_kenmerkcontract_verwijder)
, CONSTRAINT cnt_r_kenmerk_contract FOREIGN KEY (cnt_contract_key) REFERENCES cnt_contract(cnt_contract_key) ON DELETE CASCADE
);

View File

@@ -29,11 +29,12 @@
p_kenmerk_key IN NUMBER,
p_ref_key IN NUMBER,
p_waarde IN VARCHAR2);
PROCEDURE setflex (pmodule IN VARCHAR2,
PROCEDURE setflex (pmodule IN VARCHAR2,
p_kenmerk_key IN NUMBER,
p_ref_key IN NUMBER,
p_niveau IN VARCHAR2,
p_waarde IN VARCHAR2);
p_waarde IN VARCHAR2,
p_multi IN NUMBER DEFAULT 0);
PROCEDURE deleteflex (pmodule IN VARCHAR2,
p_kenmerk_key IN NUMBER,
p_ref_key IN NUMBER,
@@ -46,7 +47,8 @@
p_disk_filename IN VARCHAR2,
p_filename IN VARCHAR2,
p_file_size IN NUMBER,
p_file_date IN DATE);
p_file_date IN DATE,
p_digest IN VARCHAR2 DEFAULT NULL);
FUNCTION getflexexprtype (pmodule IN VARCHAR2,
p_kenmerk_key IN NUMBER,
p_niveau IN VARCHAR2 DEFAULT NULL) RETURN VARCHAR2;
@@ -134,6 +136,7 @@
o_kvtable_kdelete := o_kvtable || '_verwijder';
END;
FUNCTION getflex (pmodule IN VARCHAR2,
p_kenmerk_key IN NUMBER,
p_ref_key IN NUMBER,
@@ -183,45 +186,76 @@
p_disk_filename IN VARCHAR2,
p_filename IN VARCHAR2,
p_file_size IN NUMBER,
p_file_date IN DATE)
p_file_date IN DATE,
p_digest IN VARCHAR2 DEFAULT NULL)
AS
l_bijlagen_key NUMBER (10);
l_bijlagen_key fac_bijlagen.fac_bijlagen_key%TYPE;
l_disk_filename fac_bijlagen.fac_bijlagen_disk_filename%TYPE;;
l_err VARCHAR2(100);
BEGIN
l_bijlagen_key := p_bijlagen_key;
IF (p_bijlagen_key = -1) THEN
INSERT INTO fac_bijlagen_1
( fac_bijlagen_module
, deel_key
, kenmerk_key
, fac_bijlagen_disk_directory
, fac_bijlagen_disk_filename
, fac_bijlagen_filename
, fac_bijlagen_file_size
, fac_bijlagen_aanmaak
) VALUES
( p_module
, p_ref_key
, p_kenmerk_key
, p_disk_directory
, p_disk_filename
, p_filename
, p_file_size
, p_file_date
)
RETURNING fac_bijlagen_key INTO l_bijlagen_key;
-- setflex(p_module, p_kenmerk_key, p_ref_key, NULL, TO_CHAR(l_bijlagen_key));
IF (p_disk_filename = p_filename) THEN
l_disk_filename := '';
ELSE
UPDATE fac_bijlagen_1
SET fac_bijlagen_module = p_module
, deel_key = p_ref_key
, kenmerk_key = p_kenmerk_key
, fac_bijlagen_disk_directory = p_disk_directory
, fac_bijlagen_disk_filename = p_disk_filename
, fac_bijlagen_filename = p_filename
, fac_bijlagen_file_size = p_file_size
, fac_bijlagen_aanmaak = p_file_date
WHERE fac_bijlagen_key = l_bijlagen_key;
l_disk_filename := p_disk_filename;
END IF;
BEGIN
IF (p_bijlagen_key > 0) THEN
l_err := 'UPDATE fout bijlagen_key:' || p_bijlagen_key;
UPDATE fac_bijlagen
SET fac_bijlagen_module = p_module
, fac_bijlagen_disk_directory = p_disk_directory
, fac_bijlagen_disk_filename = l_disk_filename
, fac_bijlagen_filename = p_filename
, fac_bijlagen_file_size = p_file_size
, fac_bijlagen_aanmaak = p_file_date
, fac_bijlagen_digest = p_digest
WHERE fac_bijlagen_key = l_bijlagen_key;
ELSE
BEGIN
SELECT fac_bijlagen_key
INTO l_bijlagen_key
FROM fac_bijlagen
WHERE fac_bijlagen_module = p_module
AND fac_bijlagen_disk_directory = p_disk_directory
AND ((fac_bijlagen_disk_filename = l_disk_filename) OR (fac_bijlagen_disk_filename IS NULL AND l_disk_filename IS NULL))
AND fac_bijlagen_filename = p_filename
AND fac_bijlagen_file_size = p_file_size
AND fac_bijlagen_aanmaak = p_file_date
AND ((fac_bijlagen_digest = p_digest) OR (fac_bijlagen_digest IS NULL AND p_digest IS NULL));
--insert into x_test (a) values ('bijlagen_key ' || l_bijlagen_key || ' gevonden.');
EXCEPTION
WHEN NO_DATA_FOUND THEN
l_err := 'INSERT fout:' ||p_disk_directory||'/'||p_filename;
INSERT INTO fac_bijlagen
( fac_bijlagen_module
, fac_bijlagen_disk_directory
, fac_bijlagen_disk_filename
, fac_bijlagen_filename
, fac_bijlagen_file_size
, fac_bijlagen_aanmaak
, fac_bijlagen_digest
) VALUES
( p_module
, p_disk_directory
, l_disk_filename
, p_filename
, p_file_size
, p_file_date
, p_digest
)
RETURNING fac_bijlagen_key INTO l_bijlagen_key;
--insert into x_test (a) values ('bijlage ' || l_bijlagen_key || ' toegevoegd.');
END;
l_err := 'Kenmerk fout: '||p_module||','||p_kenmerk_key||','||p_ref_key||','||l_bijlagen_key;
setflex(p_module, p_kenmerk_key, p_ref_key, NULL, TO_CHAR(l_bijlagen_key), 1);
END IF;
EXCEPTION
WHEN OTHERS THEN
DBMS_OUTPUT.put_line(l_err);
--insert into x_test (a) values (l_err);
END;
END;
PROCEDURE setflex (pmodule IN VARCHAR2,
@@ -236,36 +270,44 @@
p_kenmerk_key IN NUMBER,
p_ref_key IN NUMBER,
p_niveau IN VARCHAR2,
p_waarde IN VARCHAR2)
p_waarde IN VARCHAR2,
p_multi IN NUMBER DEFAULT 0)
AS
l_module VARCHAR2 (3);
l_sql_kenm VARCHAR2 (4500);
l_sql_insert VARCHAR2 (4500);
l_sql_update VARCHAR2 (4500);
l_sql VARCHAR2 (4500);
l_rowsprocessed NUMBER DEFAULT 0;
l_cursor_upsert INTEGER DEFAULT DBMS_SQL.open_cursor;
l_aantal_kenm NUMBER;
l_kenmerk_tablename VARCHAR2 (30);
l_kenmval_tablename VARCHAR2 (30);
l_kcolumnname_refkey VARCHAR2 (30);
l_kcolumnname_niveau VARCHAR2 (30);
l_kcolumnname_waarde VARCHAR2 (30);
l_kcolumnname_default VARCHAR2 (30);
l_kcolumnname_kkey VARCHAR2 (30);
l_kcolumnname_delete VARCHAR2 (30);
l_kcolumnname_showexpr VARCHAR2 (30);
l_niveau_col VARCHAR2 (32) DEFAULT '';
l_niveau_val VARCHAR2 (7) DEFAULT '';
l_module VARCHAR2 (3);
l_sql_kenm VARCHAR2 (4500);
l_sql_upsert VARCHAR2 (4500);
l_rowsprocessed NUMBER DEFAULT 0;
l_cursor_upsert INTEGER DEFAULT DBMS_SQL.open_cursor;
l_aantal_kenm NUMBER;
l_kenmerk_tablename VARCHAR2 (30);
l_kenmval_tablename VARCHAR2 (30);
l_kcolumnname_refkey VARCHAR2 (30);
l_kcolumnname_niveau VARCHAR2 (30);
l_kcolumnname_waarde VARCHAR2 (30);
l_kcolumnname_default VARCHAR2 (30);
l_kcolumnname_kkey VARCHAR2 (30);
l_kcolumnname_delete VARCHAR2 (30);
l_kcolumnname_showexpr VARCHAR2 (30);
l_niveau_col VARCHAR2 (32) DEFAULT '';
l_niveau_val VARCHAR2 (7) DEFAULT '';
BEGIN
l_module := pmodule;
flx.gettableinf (l_module, l_kenmerk_tablename, l_kcolumnname_default, l_kenmval_tablename, l_kcolumnname_refkey, l_kcolumnname_niveau, l_kcolumnname_waarde, l_kcolumnname_kkey, l_kcolumnname_delete, l_kcolumnname_showexpr);
l_sql_kenm := 'SELECT COUNT(*)' ||
' FROM ' || l_kenmval_tablename ||
' WHERE ' || l_kcolumnname_refkey || ' = ' || p_ref_key ||
' AND ' || l_kcolumnname_kkey || ' = ' || p_kenmerk_key ||
' AND ' || l_kcolumnname_delete || ' IS NULL';
-- Voor het kenmerktype Map kunnen/mogen meerdere regels met dezelde refkey en kenmerk_key bestaan.
-- In dat geval dus toevoegen als ook de verwijzing naar fac_bijlagen (in p_waarde) nog niet bestaat.
IF (p_multi = 1) THEN
l_sql_kenm := l_sql_kenm || ' AND ' || l_kcolumnname_waarde || ' = ' || p_waarde;
END IF;
EXECUTE IMMEDIATE l_sql_kenm INTO l_aantal_kenm;
insert into x_test (a) values (l_aantal_kenm ||': '|| l_sql_kenm);
l_sql_upsert := '';
IF l_aantal_kenm = 0
THEN
IF l_kcolumnname_niveau IS NOT NULL AND p_niveau IS NOT NULL
@@ -273,7 +315,7 @@
l_niveau_col := ', ' || l_kcolumnname_niveau;
l_niveau_val := ', ''' || p_niveau || '''';
END IF;
l_sql_insert := 'INSERT INTO ' || l_kenmval_tablename ||
l_sql_upsert := 'INSERT INTO ' || l_kenmval_tablename ||
' (' || l_kcolumnname_refkey ||
' , ' || l_kcolumnname_kkey ||
' , ' || l_kcolumnname_waarde ||
@@ -284,19 +326,23 @@
' , :pwaarde'||
l_niveau_val ||
' )';
l_sql := l_sql_insert;
ELSE
l_sql_update := 'UPDATE ' || l_kenmval_tablename ||
' SET ' || l_kcolumnname_waarde || ' = :pwaarde' ||
' WHERE ' || l_kcolumnname_refkey || ' = ' || p_ref_key ||
' AND ' || l_kcolumnname_kkey || ' = ' || p_kenmerk_key ||
' AND ' || l_kcolumnname_delete || ' IS NULL';
l_sql := l_sql_update;
-- Voor p_multi zijn er geen wijzigingen!
IF (p_multi = 0) THEN
l_sql_upsert := 'UPDATE ' || l_kenmval_tablename ||
' SET ' || l_kcolumnname_waarde || ' = :pwaarde' ||
' WHERE ' || l_kcolumnname_refkey || ' = ' || p_ref_key ||
' AND ' || l_kcolumnname_kkey || ' = ' || p_kenmerk_key ||
' AND ' || l_kcolumnname_delete || ' IS NULL';
END IF;
END IF;
IF (l_sql_upsert <> '') THEN
DBMS_SQL.parse (l_cursor_upsert, l_sql_upsert, DBMS_SQL.native);
DBMS_SQL.BIND_VARIABLE(l_cursor_upsert,':pwaarde', p_waarde);
l_rowsprocessed := DBMS_SQL.execute (l_cursor_upsert);
DBMS_SQL.close_cursor(l_cursor_upsert);
END IF;
DBMS_SQL.parse (l_cursor_upsert, l_sql, DBMS_SQL.native);
DBMS_SQL.BIND_VARIABLE(l_cursor_upsert,':pwaarde', p_waarde);
l_rowsprocessed := DBMS_SQL.execute (l_cursor_upsert);
DBMS_SQL.close_cursor(l_cursor_upsert);
END;
PROCEDURE deleteflex (pmodule IN VARCHAR2,
p_kenmerk_key IN NUMBER,

View File

@@ -1946,8 +1946,7 @@ CREATE_TABLE(faq_kenmerkwaarde, 0)
DEFAULT SYSDATE
NOT_NULL(faq_kenmerkwaarde_aanmaak, faq_c_faq_kenmerkwaarde_aanm),
faq_kenmerkwaarde_verwijder DATE
DEFAULT NULLDATUM,
CONSTRAINT faq_u_faq_kenmerkwaarde_key UNIQUE(fac_faq_key, faq_kenmerk_key, faq_kenmerkwaarde_verwijder)
DEFAULT NULLDATUM
);
CREATE_TABLE(fac_qvw_ticket, 0)
@@ -1997,7 +1996,6 @@ CREATE_TABLE(fac_bijlagen, 0)
fac_bijlagen_disk_directory VARCHAR2(200)
NOT NULL,
fac_bijlagen_disk_filename VARCHAR2(200)
NOT NULL,
fac_bijlagen_filename VARCHAR2(200)
NOT NULL,
fac_bijlagen_description VARCHAR2(500),

View File

@@ -976,6 +976,7 @@ BEFORE INSERT ON fac_bijlagen
FOR EACH ROW
BEGIN
UPDATE_PRIMARY_KEY(fac_bijlagen_key, fac_s_fac_bijlagen_key);
:new.fac_bijlagen_root_key := :new.fac_bijlagen_key;
END;
/

View File

@@ -249,8 +249,7 @@ CREATE_TABLE(fin_kenmerkfactuur,0)
NOT_NULL(fin_kenmerkfactuur_aanmaak, fin_c_fin_kenmerkfactuur_aanm)
,fin_kenmerkfactuur_verwijder
DATE
DEFAULT NULLDATUM,
CONSTRAINT fin_u_fin_kenmerkfactuur_key UNIQUE(fin_factuur_key, fin_kenmerk_key, fin_kenmerkfactuur_verwijder)
DEFAULT NULLDATUM
);
CREATE_TABLE(fin_kenmerkfactregel,0)
@@ -271,8 +270,7 @@ CREATE_TABLE(fin_kenmerkfactregel,0)
NOT_NULL(fin_kenmerkfactregel_aanmaak, fin_c_kenmerkfactregel_aanm)
,fin_kenmerkfactregel_verwijder
DATE
DEFAULT NULLDATUM,
CONSTRAINT fin_u_kenmerkfactregel_key UNIQUE(fin_factuurregel_key, fin_kenmerk_key, fin_kenmerkfactregel_verwijder)
DEFAULT NULLDATUM
);
CREATE_TABLE(fin_factuur_note, 0)

View File

@@ -798,8 +798,7 @@ CREATE_TABLE(ins_kenmerkdeel,0)
CONSTRAINT ins_c_ins_kenmerkdeel_aanmaak NOT NULL,
ins_kenmerkdeel_verwijder
DATE
DEFAULT NULLDATUM,
CONSTRAINT ins_u_ins_kenmerkdeel UNIQUE(ins_kenmerk_key, ins_deel_key, ins_kenmerkdeel_verwijder)
DEFAULT NULLDATUM
// Kan ook naar ins_srtdeel wijzen CONSTRAINT ins_r_kenmerk_deel FOREIGN KEY (ins_deel_key) REFERENCES ins_deel(ins_deel_key) ON DELETE CASCADE
);

View File

@@ -1176,7 +1176,6 @@ CREATE_TABLE(mld_kenmerkmelding, 0)
, CONSTRAINT mld_r_mld_kenmerk_key1 CHECK(mld_kenmerk_key IS NOT NULL)
, CONSTRAINT mld_r_mld_kenmerk_key2 FOREIGN KEY(mld_kenmerk_key) REFERENCES mld_kenmerk(mld_kenmerk_key)
, CONSTRAINT mld_c_mld_kenmerkmelding_aanm CHECK(mld_kenmerkmelding_aanmaak IS NOT NULL)
, CONSTRAINT mld_u_mld_kenmerkmelding UNIQUE(mld_kenmerk_key, mld_melding_key, mld_kenmerkmelding_verwijder)
, CONSTRAINT mld_r_kenmerk_melding FOREIGN KEY (mld_melding_key) REFERENCES mld_melding(mld_melding_key) ON DELETE CASCADE
);

View File

@@ -1042,7 +1042,6 @@ CREATE_TABLE(prs_kenmerklink,0)
,prs_kenmerklink_verwijder
DATE
DEFAULT NULLDATUM
,CONSTRAINT prs_u_prs_kenmerklink_key UNIQUE(prs_link_key, prs_kenmerk_key, prs_kenmerklink_verwijder)
);
CREATE_TABLE(prs_contactpersoon, 0)

View File

@@ -774,7 +774,6 @@ CREATE_TABLE(res_kenmerkwaarde, 0)
, CONSTRAINT res_r_res_kenmerk_key1 CHECK(res_kenmerk_key IS NOT NULL)
, CONSTRAINT res_r_res_rsv_ruimte_key2 FOREIGN KEY(res_rsv_ruimte_key) REFERENCES res_rsv_ruimte(res_rsv_ruimte_key) ON DELETE CASCADE
, CONSTRAINT res_c_res_kenmerkwaarde_aanm CHECK(res_kenmerkwaarde_aanmaak IS NOT NULL)
, CONSTRAINT res_u_res_kenmerkwaarde UNIQUE(res_rsv_ruimte_key, res_kenmerk_key, res_kenmerkwaarde_verwijder)
);
CREATE_TABLE(res_kenmerkartikel, 0)

View File

@@ -392,6 +392,34 @@ CREATE SEQUENCE fac_s_fac_bijlagen_key MINVALUE 1;
CREATE INDEX fac_i_fac_bijlagen_root_key ON fac_bijlagen(fac_bijlagen_root_key);
BEGIN
adm.tyalter('TABLE alg_onrgoedkenmerk DROP CONSTRAINT alg_u_alg_onrgoedkenmerk_key');
adm.trydrop('INDEX alg_u_alg_onrgoedkenmerk_key');
adm.tyalter('TABLE bes_kenmerkbesteli DROP CONSTRAINT bes_u_bes_kenmerkbesteli');
adm.trydrop('INDEX bes_u_bes_kenmerkbesteli');
adm.tyalter('TABLE bes_kenmerkbestell DROP CONSTRAINT bes_u_bes_kenmerkbestell');
adm.trydrop('INDEX bes_u_bes_kenmerkbestell');
adm.tyalter('TABLE bez_kenmerkwaarde DROP CONSTRAINT bez_u_bez_kenmerkwaarde_key');
adm.trydrop('INDEX bez_u_bez_kenmerkwaarde_key');
adm.tyalter('TABLE cnt_kenmerkcontract DROP CONSTRAINT cnt_u_cnt_kenmerkcontract');
adm.trydrop('INDEX cnt_u_cnt_kenmerkcontract');
adm.tyalter('TABLE faq_kenmerkwaarde DROP CONSTRAINT faq_u_faq_kenmerkwaarde_key');
adm.trydrop('INDEX faq_u_faq_kenmerkwaarde_key');
adm.tyalter('TABLE fin_kenmerkfactregel DROP CONSTRAINT fin_u_kenmerkfactregel_key');
adm.trydrop('INDEX fin_u_kenmerkfactregel_key');
adm.tyalter('TABLE fin_kenmerkfactuur DROP CONSTRAINT fin_u_fin_kenmerkfactuur_key');
adm.trydrop('INDEX fin_u_fin_kenmerkfactuur_key');
adm.tyalter('TABLE ins_kenmerkdeel DROP CONSTRAINT ins_u_ins_kenmerkdeel');
adm.trydrop('INDEX ins_u_ins_kenmerkdeel');
adm.tyalter('TABLE mld_kenmerkmelding DROP CONSTRAINT mld_u_mld_kenmerkmelding');
adm.trydrop('INDEX mld_u_mld_kenmerkmelding');
adm.tyalter('TABLE prs_kenmerklink DROP CONSTRAINT prs_u_prs_kenmerklink_key');
adm.trydrop('INDEX prs_u_prs_kenmerklink_key');
adm.tyalter('TABLE res_kenmerkwaarde DROP CONSTRAINT res_u_res_kenmerkwaarde');
adm.trydrop('INDEX res_u_res_kenmerkwaarde');
END;
/
/////////////////////////////////////////////////////////////////////////////////////////// FCLT#54611
INSERT INTO fac_usrrap (fac_usrrap_omschrijving, fac_usrrap_view_name,fac_usrrap_info, fac_functie_key)
SELECT 'Usage Statistics','FAC_V_USAGE_STATISTICS','Basisrapport voor gebruik statistieken', fac_functie_key