6 Commits

Author SHA1 Message Date
Jos Groot Lipman
2276df94f2 UWVA#36449 Branch DB28b
svn path=/Database/branches/DB28/; revision=29512
2016-05-24 15:26:42 +00:00
Erik Groener
5fb93a5ec5 UWVA#36449 2016.1 RES/BEZ: notificatie bezoekersoproepsysteem.
svn path=/Database/branches/DB28/; revision=29505
2016-05-24 12:17:14 +00:00
Erik Groener
673bb1cff3 UWVA#36449 2016.1 RES/BEZ: notificatie bezoekersoproepsysteem.
svn path=/Database/branches/DB28/; revision=29501
2016-05-24 09:42:36 +00:00
Erik Groener
d7bc21a0c4 UWVA#36449 2016.1 RES/BEZ: notificatie bezoekersoproepsysteem.
svn path=/Database/branches/DB28/; revision=29478
2016-05-20 14:10:46 +00:00
Erik Groener
3ed06d9e01 UWVA#36449 2016.1 RES/BEZ: notificatie bezoekersoproepsysteem.
svn path=/Database/branches/DB28/; revision=29459
2016-05-19 12:31:42 +00:00
Jos Groot Lipman
b215265512 Branch DB28
svn path=/Database/branches/DB28/; revision=29429
2016-05-18 10:46:25 +00:00
236 changed files with 29116 additions and 124452 deletions

View File

@@ -4,14 +4,9 @@
CREATE OR REPLACE PACKAGE adm
AS
FUNCTION systeminfo RETURN VARCHAR2;
PROCEDURE systrackscriptId (svnid IN VARCHAR2, force IN NUMBER DEFAULT 1);
PROCEDURE trydrop (n IN VARCHAR2);
PROCEDURE tryalter (n IN VARCHAR2);
FUNCTION scriptspoolfile(custpattern IN VARCHAR2, scriptname IN VARCHAR2) RETURN VARCHAR2;
FUNCTION getscriptspoolfile(scriptname IN VARCHAR2) RETURN VARCHAR2;
FUNCTION checkscriptcust(custpattern IN VARCHAR2) RETURN VARCHAR2;
PROCEDURE fix_mld_t_uitvoertijd;
END adm;
/
@@ -21,9 +16,9 @@ AS
-- ($Id$)
PROCEDURE systrackscriptId (svnid IN VARCHAR2, force IN NUMBER DEFAULT 1)
AS
revisionnr adm_tracking.adm_tracking_revision%TYPE;
scriptname adm_tracking.adm_tracking_name%TYPE;
tempstr VARCHAR2 (100);
revisionnr VARCHAR2 (60);
scriptname VARCHAR2 (60);
tempstr VARCHAR2 (60);
BEGIN
-- op het gemakje ontleden
tempstr := REPLACE (svnid, '$Id: ', '');
@@ -70,7 +65,7 @@ AS
DBMS_OUTPUT.put_line ('Not found, no need to drop: ' || n);
NULL;
ELSE
raise_application_error(-20001, 'Error trying to DROP ' || n || ': ' || SQLERRM);
raise_application_error (-20001, 'Error trying to DROP ' || n || ': ' || SQLERRM);
END IF;
END;
@@ -98,167 +93,10 @@ AS
DBMS_OUTPUT.put_line ('Already exists, not altered: ' || n);
NULL;
ELSE
raise_application_error(-20001, 'Error trying to ALTER ' || n || ': ' || SQLERRM);
raise_application_error (-20001, 'Error trying to ALTER ' || n || ': ' || SQLERRM);
END IF;
END;
FUNCTION scriptspoolfile (custpattern IN VARCHAR2, -- eg ^SGGR for 'start with SGGR', ATCH|BONS for two schema
scriptname IN VARCHAR2)
RETURN VARCHAR2
IS
lstname VARCHAR2(4000);
tekst VARCHAR2(4000);
BEGIN
tekst := adm.checkscriptcust(custpattern);
lstname := adm.getscriptspoolfile(scriptname);
RETURN lstname;
END;
FUNCTION getscriptspoolfile(scriptname IN VARCHAR2)
RETURN VARCHAR2
IS
lstname VARCHAR2 (255);
BEGIN
lstname := scriptname
|| '_' || USER || '_' || SYS_CONTEXT ('USERENV', 'SERVICE_NAME')
|| '_' || SYS_CONTEXT ('USERENV', 'SERVER_HOST')
|| '_' || TO_CHAR (SYSDATE, 'YYYYMMDD_HH24MISS')
|| '.lst';
RETURN UPPER(lstname);
END;
FUNCTION systeminfo
RETURN VARCHAR2
IS
tekst VARCHAR2 (4000);
TYPE table_varchar IS TABLE OF VARCHAR2 (32);
var_table_varchar table_varchar;
BEGIN
var_table_varchar :=
table_varchar ('TERMINAL',
'HOST',
'LANGUAGE',
'CURRENT_USER',
'SESSION_USER',
'DB_DOMAIN',
'DB_NAME',
'SERVER_HOST',
'SERVICE_NAME',
'IP_ADDRESS');
SELECT banner_full
INTO tekst
FROM v$version;
tekst := tekst || CHR(10) ||'Time: ' || TO_CHAR(SYSDATE, 'YYYY-MM-DD HH24:MI:SS');
tekst := tekst || CHR(10) ||'OS-user: ' || SYS_CONTEXT('USERENV','OS_USER');
FOR elem IN 1 .. var_table_varchar.COUNT
LOOP
tekst := tekst ||
CHR(10) ||
var_table_varchar (elem) || ': ' ||
SYS_CONTEXT ('USERENV', var_table_varchar (elem));
END LOOP;
return tekst;
END;
FUNCTION checkscriptcust(custpattern IN VARCHAR2)
RETURN VARCHAR2
IS
klant VARCHAR2(4);
groep VARCHAR2(4);
fout NUMBER(1) := 0;
qry VARCHAR2(4000);
tekst VARCHAR2 (4000);
BEGIN
-- Wat handige info voor in de SPOOL-file (vooral bij licentieklanten waar we het niet altijd weten)
tekst := adm.systeminfo;
BEGIN
-- EXECUTE IMMEDIATE oplossing omdat in het CREA-script de fac_version_tabel er niet op tijd
-- is, daardoor deze hele package invalid is en aan het eind de REGISTERRUN faalt
-- (ook al gebruikt REGISTERRUN deze checkscriptcust niet)
qry := 'SELECT fac_version_cust'
|| ' , fac_version_group'
|| ' FROM fac_version';
EXECUTE IMMEDIATE qry INTO klant, groep;
EXCEPTION
WHEN OTHERS THEN
klant := USER;
groep := USER;
fout := 1;
END;
IF NOT (custpattern = klant OR (custpattern = groep AND groep IS NOT NULL) OR REGEXP_LIKE(USER, custpattern, 'i'))
THEN
IF (INSTR(custpattern,'^') = 0 OR fout = 0)
THEN
tekst := 'User should be ' || custpattern || ' but is ' || USER;
ELSE
tekst := 'User should match ' || custpattern || ' but is ' || USER;
END IF;
tekst := CHR(10)
|| '============================================' || CHR(10)
|| 'Wrong user!!!!!!!!!' || CHR(10)
|| tekst || CHR(10)
|| '============================================' || CHR(10);
raise_application_error(-20001, tekst);
END IF;
-- Voor als een once-script ooit tabellen aanmaakt.
EXECUTE IMMEDIATE 'ALTER SESSION SET nls_length_semantics=''char''';
RETURN tekst;
END;
-- Als je een database importeert onder een andere user wordt de schemanaam voor de defaults
-- van mld_t_uitvoertijd 'bevroren' en kun je de database nooit meer onder een ander schema
-- inlezen. In deze procedure herdefiniereren we alle default waardes zodat je de database
-- daarna na exporteren gemakkelijk ergens anders kunt inlezen
-- Er is niet automatisch te bepalen wanneer dit al dan niet nodig is. Daarom doen we het:
-- * In de epiloog van een upgrade
-- * Na anonimiseren (wat nog wel eens gebeurt vlak na een database refresh)
PROCEDURE fix_mld_t_uitvoertijd
IS
--
-- data_default is van het datatype LONG. Daarop kan geen string-bewerking als INSTR(), SUBSTR() en REPLACE() worden gedaan.
-- Daarom moeten de benodigde gegevens eerst in een tijdelijke tabel ingelezen worden zodat het datatype VARCHAR2 wordt. Voor
-- het huidige doel (de owner van MLD_T_UITVOERTIJD verwijderen) is de stringlengte van 1000 voldoende.
-- Met FETCH .. BULK COLLECT INTO .. worden alle records die volgen uit de query in 1 keer opgehaald. Dit is sneller dan een fetch in een loop.
--
TYPE ut_row IS RECORD
( tab_name VARCHAR2(100)
, col_name VARCHAR2(100)
, data_default VARCHAR2(1000)
);
TYPE ut_tab IS TABLE OF ut_row
INDEX BY PLS_INTEGER;
qry_txt VARCHAR2(1000);
upd_txt VARCHAR2(1000);
l_table ut_tab;
l_cursor SYS_REFCURSOR;
l_pos INTEGER;
l_default VARCHAR2(1000);
BEGIN
qry_txt := 'SELECT table_name, column_name, data_default'
|| ' FROM user_tab_columns'
|| ' WHERE data_type = ''MLD_T_UITVOERTIJD''';
OPEN l_cursor FOR qry_txt;
FETCH l_cursor BULK COLLECT INTO l_table;
CLOSE l_cursor;
FOR indx IN 1 .. l_table.COUNT
LOOP
l_pos := INSTR(l_table(indx).data_default, '"."');
IF (l_pos > 0)
THEN
l_default := REPLACE(REPLACE(SUBSTR(l_table(indx).data_default, l_pos+3, 100), '"', ''),'''','');
upd_txt := 'ALTER TABLE '|| l_table(indx).tab_name ||' MODIFY '|| l_table(indx).col_name ||' DEFAULT '|| l_default;
dbms_output.put_line(upd_txt);
EXECUTE IMMEDIATE upd_txt;
END IF;
END LOOP;
END;
END adm;
/

View File

@@ -1,9 +0,0 @@
/*
* $Revision$
* $Id$
*/
CREATE SEQUENCE adm_s_adm_tracking_key MINVALUE 1;
// De package is er nog niet bij de CREA dus uitgeschakeld
// REGISTERONCE('$Id$')

View File

@@ -5,14 +5,8 @@
CREATE_TABLE(adm_tracking, 0)
(
adm_tracking_key
NUMBER(10)
CONSTRAINT adm_k_adm_tracking_key PRIMARY KEY,
adm_tracking_name VARCHAR2 (60),
adm_tracking_revision VARCHAR2 (60),
adm_tracking_date DATE DEFAULT SYSDATE,
adm_tracking_osuser VARCHAR2 (60) DEFAULT SYS_CONTEXT('USERENV','OS_USER')
);
// De package is er nog niet bij de CREA dus uitgeschakeld
// REGISTERONCE('$Id$')

View File

@@ -1,63 +0,0 @@
/*
* $Revision$
* $Id$
*
*/
CREATE_TRIGGER(adm_t_adm_tracking_B_I)
BEFORE INSERT ON adm_tracking
FOR EACH ROW
BEGIN
UPDATE_PRIMARY_KEY(adm_tracking_key, adm_s_adm_tracking_key);
END;
/
//
// Deze triggers zijn om access buiten de applicatie om te tracken,
// bijvoorbeeld met SQLPlus of Toad maar dat kan van alles zijn
// Ten behoeve van extra auditing. Standaard doen we dat niet, omdat
// - het vereist niet-default privileges voor het SCHEMA (of niet?)
// - we weten niet altijd hoe we de webserver zelf uit kunnen sluiten
// Als we meer weten kunnen we deze misschien wel standaard aanzetten
//
/*
CREATE_TRIGGER(fclt_t_schema_session_on)
AFTER
LOGON
ON SCHEMA
WHEN ( SYS_CONTEXT ('USERENV', 'OS_USER') <> 'IUSR'
AND SYS_CONTEXT ('USERENV', 'OS_USER') NOT LIKE 'OracleService%')
BEGIN
INSERT INTO adm_tracking (adm_tracking_name)
SELECT 'Login using '
|| SYS_CONTEXT ('USERENV', 'MODULE')
|| ' from '
|| SYS_CONTEXT ('USERENV', 'HOST')
FROM DUAL;
END;
/
CREATE_TRIGGER(fclt_t_schema_session_off)
BEFORE
LOGOFF
ON SCHEMA
WHEN ( SYS_CONTEXT ('USERENV', 'OS_USER') <> 'IUSR'
AND SYS_CONTEXT ('USERENV', 'OS_USER') NOT LIKE 'OracleService%')
BEGIN
INSERT INTO adm_tracking (adm_tracking_name)
SELECT 'Logoff using '
|| SYS_CONTEXT ('USERENV', 'MODULE')
|| ' from '
|| SYS_CONTEXT ('USERENV', 'HOST')
FROM DUAL;
END;
/
-- Wel definieren en uitzetten is riskant, want een disabled trigger lijkt fout
ALTER TRIGGER fclt_t_schema_session_on DISABLE;
ALTER TRIGGER fclt_t_schema_session_off DISABLE;
*/
// De package is er nog niet bij de CREA dus uitgeschakeld
// REGISTERRUN('$Id$')

View File

@@ -36,17 +36,17 @@
dummy1, child_verwijder, child_key, dummy2) \
BEGIN \
IF :new.parent_verwijder IS NOT NULL \
THEN \
_THEN \
UPDATE child_table \
SET child_verwijder = :new.parent_verwijder \
WHERE child_table.child_key = :new.parent_key \
AND child_table.ins_alg_ruimte_type = 'W' \
AND child_table.ins_deel_verwijder IS NULL; \
ELSIF (:new.parent_verwijder IS NULL AND :old.parent_verwijder IS NOT NULL)\
THEN \
_ELSIF (:new.parent_verwijder IS NULL AND :old.parent_verwijder IS NOT NULL)\
_THEN \
UPDATE child_table \
SET child_verwijder = :new.parent_verwijder \
WHERE child_table.child_key = :new.parent_key \
AND ins_alg_ruimte_type = 'W'; \
END_IF; \
_END_IF; \
END

View File

@@ -17,11 +17,6 @@ create index alg_i_alg_verdieping1 on alg_verdieping(alg_gebouw_key);
create index alg_i_alg_ruimte1 on alg_ruimte(alg_verdieping_key);
create index alg_i_alg_ruimte2 on alg_ruimte(alg_srtruimte_key);
create index alg_i_alg_ruimte3 on alg_ruimte(alg_ruimte_key, alg_ruimte_nr);
create index alg_i_alg_kenmerk1 on alg_kenmerk(alg_kenmerk_code);
create index alg_i_alg_onroerendgoed_note1 on alg_onroerendgoed_note(alg_onroerendgoed_key, alg_onroerendgoed_typ);
// speciaal tbv ins_v_alg_overzicht:
CREATE INDEX alg_i_alg_ruimte4 on alg_ruimte(alg_verdieping_key,alg_ruimte_key, alg_ruimte_upper_nr, alg_ruimte_nr);

View File

@@ -3,7 +3,7 @@
* $Id$
*/
_FAC_MODULE('ALG','lcl_module_ALG')
_FAC_MODULE('ALG','Vastgoedbeheer')
DEF_FAC_MESSAGE ('ALG_OPENST_MELDING', 'heeft openstaande melding', '');
DEF_FAC_MESSAGE ('ALG_BEVAT_OBJECT', 'bevat object', '');

View File

@@ -3,22 +3,20 @@
* $Id$
*/
CREATE SEQUENCE alg_s_alg_import_key MINVALUE 1;
CREATE SEQUENCE alg_s_alg_regio_key MINVALUE 1;
CREATE SEQUENCE alg_s_alg_district_key MINVALUE 1;
CREATE SEQUENCE alg_s_alg_locatie_key MINVALUE 1;
CREATE SEQUENCE alg_s_alg_onroerendgoed_keys MINVALUE 1;
CREATE SEQUENCE alg_s_alg_srtgebouw_key MINVALUE 1;
CREATE SEQUENCE alg_s_alg_srtruimte_key MINVALUE 1;
CREATE SEQUENCE alg_s_alg_srtruimte_lg_key MINVALUE 1;
CREATE SEQUENCE alg_s_alg_import_key MINVALUE 1;
CREATE SEQUENCE alg_s_alg_regio_key MINVALUE 1;
CREATE SEQUENCE alg_s_alg_district_key MINVALUE 1;
CREATE SEQUENCE alg_s_alg_locatie_key MINVALUE 1;
CREATE SEQUENCE alg_s_alg_onroerendgoed_keys MINVALUE 1;
CREATE SEQUENCE alg_s_alg_srtgebouw_key MINVALUE 1;
CREATE SEQUENCE alg_s_alg_srtruimte_key MINVALUE 1;
CREATE SEQUENCE alg_s_alg_srtruimte_lg_key MINVALUE 1;
CREATE SEQUENCE alg_s_alg_objectdeel_key MINVALUE 1;
CREATE SEQUENCE alg_s_alg_systeemcluster_key MINVALUE 1;
CREATE SEQUENCE alg_s_alg_bouwdeel_key MINVALUE 1;
CREATE SEQUENCE alg_s_alg_srtterrein_key MINVALUE 1;
CREATE SEQUENCE alg_s_alg_srtverdieping_key MINVALUE 1;
CREATE SEQUENCE alg_s_alg_objectdeel_key MINVALUE 1;
CREATE SEQUENCE alg_s_alg_systeemcluster_key MINVALUE 1;
CREATE SEQUENCE alg_s_alg_bouwdeel_key MINVALUE 1;
CREATE SEQUENCE alg_s_alg_srtterrein_key MINVALUE 1;
CREATE SEQUENCE alg_s_alg_srtverdieping_key MINVALUE 1;
CREATE SEQUENCE alg_s_alg_kenmerk_key MINVALUE 1000;
CREATE SEQUENCE alg_s_alg_onrgoedkenmerk_key MINVALUE 1;
CREATE SEQUENCE alg_s_alg_algfaq_key MINVALUE 1;
CREATE SEQUENCE alg_s_alg_onroerendgoed_note_key MINVALUE 1;
CREATE SEQUENCE alg_s_alg_kenmerk_key MINVALUE 1000;
CREATE SEQUENCE alg_s_alg_onrgoedkenmerk_key MINVALUE 1;

View File

@@ -21,10 +21,6 @@ CREATE_TABLE(alg_regio,0)
alg_regio_verwijder
DATE
DEFAULT NULLDATUM,
alg_regio_externnr
VARCHAR2(256),
alg_regio_externsyncdate
DATE,
CONSTRAINT alg_u_alg_regio_upper UNIQUE(alg_regio_upper, alg_regio_verwijder)
);
@@ -49,10 +45,6 @@ CREATE_TABLE(alg_district,0)
alg_district_verwijder
DATE
DEFAULT NULLDATUM,
alg_district_externnr
VARCHAR2(256),
alg_district_externsyncdate
DATE,
CONSTRAINT alg_u_alg_district_upper UNIQUE(alg_regio_key, alg_district_upper,alg_district_verwijder)
);
@@ -101,32 +93,18 @@ CREATE_TABLE(alg_locatie,0)
alg_locatie_verantw
VARCHAR2(30),
alg_locatie_verantw_tel
VARCHAR2(20),
VARCHAR2(15),
alg_locatie_email /* might be used as sender */
VARCHAR2(200),
alg_locatie_x
NUMBER(16,6),
alg_locatie_y
NUMBER(16,6),
alg_locatie_mjb_score1
NUMBER(6,2),
alg_locatie_vervaldatum
DATE,
alg_locatie_image
VARCHAR2(255),
alg_locatie_externnr
VARCHAR2(256),
alg_locatie_externsyncdate
DATE,
alg_locatie_volgnr
NUMBER(3),
alg_locatie_timezone
VARCHAR2(40),
-- in MLD_TAB.SRC:
-- mld_dienstniveau_key
-- NUMBER(10)
-- REFERENCES mld_dienstniveau(mld_dienstniveau_key) ON DELETE SET NULL,
CONSTRAINT alg_u_alg_locatie_code UNIQUE(alg_district_key, alg_locatie_code, alg_locatie_verwijder),
CONSTRAINT alg_u_alg_locatie_code UNIQUE(alg_locatie_code, alg_locatie_verwijder),
CONSTRAINT alg_u_alg_locatie_upper UNIQUE(alg_district_key, alg_locatie_upper, alg_locatie_verwijder)
);
@@ -158,28 +136,10 @@ CREATE_TABLE(alg_srtterreinsector,0)
alg_srtterreinsector_verwijder
DATE
DEFAULT NULL,
prs_verhuurbaar
NUMBER(1),
alg_srtterreinsector_code
VARCHAR2(10),
alg_srtterreinsec_t_uitvtijd /* pr3 */
MLD_T_UITVOERTIJD
CONSTRAINT alg_c_alg_srtterrein_t_uitvt CHECK(alg_srtterreinsec_t_uitvtijd.tijdsduur >= 0),
alg_srtterreinsec_t_uitv_pr1
MLD_T_UITVOERTIJD
CONSTRAINT alg_c_alg_srtterrein_t_uitv1 CHECK(alg_srtterreinsec_t_uitv_pr1.tijdsduur >= 0),
alg_srtterreinsec_t_uitv_pr2
MLD_T_UITVOERTIJD
CONSTRAINT alg_c_alg_srtterrein_t_uitv2 CHECK(alg_srtterreinsec_t_uitv_pr2.tijdsduur >= 0),
alg_srtterreinsec_t_uitv_pr4
MLD_T_UITVOERTIJD
CONSTRAINT alg_c_alg_srtterrein_t_uitv4 CHECK(alg_srtterreinsec_t_uitv_pr4.tijdsduur >= 0),
CONSTRAINT alg_u_alg_srtterreinsec_upper UNIQUE(alg_srtterreinsector_upper, alg_srtterreinsector_verwijder)
CONSTRAINT alg_u_alg_srtterreinsec_upper UNIQUE(alg_srtterreinsector_upper, alg_srtterreinsector_verwijder),
prs_verhuurbaar NUMBER(1),
alg_srtterreinsector_code VARCHAR2(10)
);
ALTER TABLE alg_srtterreinsector MODIFY alg_srtterreinsec_t_uitvtijd DEFAULT MLD_T_UITVOERTIJD(NULL, NULL);
ALTER TABLE alg_srtterreinsector MODIFY alg_srtterreinsec_t_uitv_pr1 DEFAULT MLD_T_UITVOERTIJD(NULL, NULL);
ALTER TABLE alg_srtterreinsector MODIFY alg_srtterreinsec_t_uitv_pr2 DEFAULT MLD_T_UITVOERTIJD(NULL, NULL);
ALTER TABLE alg_srtterreinsector MODIFY alg_srtterreinsec_t_uitv_pr4 DEFAULT MLD_T_UITVOERTIJD(NULL, NULL);
CREATE_TABLE(alg_terreinsector,0)
(
@@ -191,12 +151,13 @@ CREATE_TABLE(alg_terreinsector,0)
NOT_NULL(alg_locatie_key, alg_r_alg_locatie_key1)
CONSTRAINT alg_r_alg_locatie_key2 REFERENCES alg_locatie(alg_locatie_key),
alg_terreinsector_omschrijving
VARCHAR2(60),
VARCHAR2(50)
NOT_NULL(alg_terreinsector_omschrijving, alg_c_alg_terreinsector_omschr),
alg_terreinsector_code
VARCHAR2(12)
NOT_NULL(alg_terreinsector_code, alg_c_alg_terreinsector_code),
alg_terreinsector_naam
VARCHAR2(60)
VARCHAR2(30)
NOT_NULL(alg_terreinsector_naam, alg_c_alg_terreinsector_naam),
alg_terreinsector_upper
VARCHAR2(30)
@@ -217,28 +178,11 @@ CREATE_TABLE(alg_terreinsector,0)
alg_terreinsector_verwijder
DATE
DEFAULT NULLDATUM,
alg_terreinsector_vervaldatum
DATE,
alg_terreinsector_ordernr
VARCHAR2(30),
alg_terreinsector_image
VARCHAR2(255),
alg_terreinsector_getekend
DATE
DEFAULT NULLDATUM,
alg_terreinsector_toon_telef
NUMBER(3) DEFAULT(0) NOT NULL
CONSTRAINT alg_c_alg_terreinsector_telf CHECK(alg_terreinsector_toon_telef IN (0,1,2,3)), /* 0=Onzichtbaar; 1=Niet verplicht; 2=Verplicht bij parkeerplaats. 3=Altijd verplicht */
alg_terreinsector_toon_email
NUMBER(3) DEFAULT(0) NOT NULL
CONSTRAINT alg_c_alg_terreinsector_mail CHECK(alg_terreinsector_toon_email IN (0,1,2,3)), /* 0=Onzichtbaar; 1=Niet verplicht; 2=Verplicht bij parkeerplaats. 3=Altijd verplicht */
alg_terreinsector_toon_kentk
NUMBER(3) DEFAULT(0) NOT NULL
CONSTRAINT alg_c_alg_terreinsector_kent CHECK(alg_terreinsector_toon_kentk IN (0,1,2,3)), /* 0=Onzichtbaar; 1=Niet verplicht; 2=Verplicht bij parkeerplaats. 3=Altijd verplicht */
alg_terreinsector_externnr
VARCHAR2(256),
alg_terreinsector_extsyncdate
DATE,
-- in PRS_TAB.SRC:
-- prs_kostenplaats_key
-- NUMBER(10)
@@ -246,12 +190,6 @@ CREATE_TABLE(alg_terreinsector,0)
-- prs_afdeling_key
-- NUMBER(10)
-- CONSTRAINT alg_r_prs_afdeling1 REFERENCES prs_afdeling(prs_afdeling_key),
-- prs_perslid_key_verantw
-- NUMBER(10)
-- CONSTRAINT alg_r_prs_perslid_key3 REFERENCES prs_perslid(prs_perslid_key),
-- prs_perslid_key_verantw2
-- NUMBER(10)
-- CONSTRAINT alg_r_prs_perslid_key4 REFERENCES prs_perslid(prs_perslid_key),
CONSTRAINT alg_u_alg_terreinsector_upper UNIQUE(alg_locatie_key, alg_terreinsector_upper, alg_terreinsector_verwijder)
);
@@ -277,52 +215,8 @@ CREATE_TABLE(alg_srtgebouw,0)
alg_srtgebouw_verwijder
DATE
DEFAULT NULLDATUM,
alg_srtgebouw_aspect_max_vg /* Veiligheid - Gezondheid */
NUMBER(2)
DEFAULT 1
NOT NULL,
alg_srtgebouw_aspect_max_ch /* Cultuur Historische waarde */
NUMBER(2)
DEFAULT 2
NOT NULL,
alg_srtgebouw_aspect_max_gb /* Gebruik en Bedrijfsproces */
NUMBER(2)
DEFAULT 3
NOT NULL,
alg_srtgebouw_aspect_max_tv /* Technische Vervolgschade */
NUMBER(2)
DEFAULT 5
NOT NULL,
alg_srtgebouw_aspect_max_tk /* Toename Klachtenonderhoud */
NUMBER(2)
DEFAULT 5
NOT NULL,
alg_srtgebouw_aspect_max_be /* Beleving - Esthetica */
NUMBER(2)
DEFAULT 7
NOT NULL,
alg_srtgebouw_aspect_max_en /* Energie (aanvulling) */
NUMBER(2)
DEFAULT 4
NOT NULL,
alg_srtgebouw_t_uitvoertijd /* pr3 */
MLD_T_UITVOERTIJD
CONSTRAINT alg_c_alg_srtgebouw_t_uitvtijd CHECK(alg_srtgebouw_t_uitvoertijd.tijdsduur >= 0),
alg_srtgebouw_t_uitvoer_pr1
MLD_T_UITVOERTIJD
CONSTRAINT alg_c_alg_srtgebouw_t_uitv_pr1 CHECK(alg_srtgebouw_t_uitvoer_pr1.tijdsduur >= 0),
alg_srtgebouw_t_uitvoer_pr2
MLD_T_UITVOERTIJD
CONSTRAINT alg_c_alg_srtgebouw_t_uitv_pr2 CHECK(alg_srtgebouw_t_uitvoer_pr2.tijdsduur >= 0),
alg_srtgebouw_t_uitvoer_pr4
MLD_T_UITVOERTIJD
CONSTRAINT alg_c_alg_srtgebouw_t_uitv_pr4 CHECK(alg_srtgebouw_t_uitvoer_pr4.tijdsduur >= 0),
CONSTRAINT alg_u_alg_srtgebouw_upper UNIQUE(alg_srtgebouw_upper, alg_srtgebouw_verwijder)
);
ALTER TABLE alg_srtgebouw MODIFY alg_srtgebouw_t_uitvoertijd DEFAULT MLD_T_UITVOERTIJD(NULL, NULL);
ALTER TABLE alg_srtgebouw MODIFY alg_srtgebouw_t_uitvoer_pr1 DEFAULT MLD_T_UITVOERTIJD(NULL, NULL);
ALTER TABLE alg_srtgebouw MODIFY alg_srtgebouw_t_uitvoer_pr2 DEFAULT MLD_T_UITVOERTIJD(NULL, NULL);
ALTER TABLE alg_srtgebouw MODIFY alg_srtgebouw_t_uitvoer_pr4 DEFAULT MLD_T_UITVOERTIJD(NULL, NULL);
CREATE_TABLE(alg_gebouw,0)
(
@@ -337,20 +231,17 @@ CREATE_TABLE(alg_gebouw,0)
NUMBER(10)
CONSTRAINT alg_r_alg_srtgebouw_key REFERENCES alg_srtgebouw(alg_srtgebouw_key),
alg_gebouw_naam
VARCHAR2(60)
VARCHAR2(30)
NOT_NULL(alg_gebouw_naam, alg_c_alg_gebouw_naam),
alg_gebouw_code
VARCHAR2(12)
NOT_NULL(alg_gebouw_code, alg_c_alg_gebouw_code),
alg_gebouw_omschrijving
VARCHAR2(60),
VARCHAR2(60)
NOT_NULL(alg_gebouw_omschrijving, alg_c_alg_gebouw_omschrijving),
alg_gebouw_upper
VARCHAR2(30) /* 12 ware genoeg geweest */
NOT_NULL(alg_gebouw_upper, alg_c_alg_gebouw_upper),
alg_gebouw_adres
VARCHAR2(50),
alg_gebouw_postcode
VARCHAR2(12),
alg_gebouw_aanmaak
DATE
DEFAULT SYSDATE
@@ -381,17 +272,14 @@ CREATE_TABLE(alg_gebouw,0)
-- CONSTRAINT alg_r_mld_adres_key1 REFERENCES mld_adres(mld_adres_key),
alg_gebouw_opmerking
VARCHAR2(50),
-- in PRS_TAB.SRC: de gebouwverantwoordelijke (1 en 2)
-- in PRS_TAB.SRC: de gebouwverantwoordelijke
-- prs_perslid_key_verantw
-- NUMBER(10)
-- CONSTRAINT alg_r_prs_perslid_key1 REFERENCES prs_perslid(prs_perslid_key),
-- prs_perslid_key_verantw2
-- NUMBER(10)
-- CONSTRAINT alg_r_prs_perslid_key2 REFERENCES prs_perslid(prs_perslid_key),
alg_gebouw_dwgx
NUMBER(16,3),
NUMBER(10,3),
alg_gebouw_dwgy
NUMBER(16,3),
NUMBER(10,3),
alg_gebouw_x
NUMBER(16,6),
alg_gebouw_y
@@ -410,42 +298,8 @@ CREATE_TABLE(alg_gebouw,0)
DEFAULT 1
CONSTRAINT alg_c_alg_gebouw_bez CHECK(alg_gebouw_bez IS NULL
OR alg_gebouw_bez = 1),
alg_gebouw_mld
NUMBER(1)
DEFAULT(1)
CONSTRAINT alg_c_alg_gebouw_mld CHECK(alg_gebouw_mld IS NULL
OR alg_gebouw_mld = 1),
alg_gebouw_email
VARCHAR2(200),
alg_gebouw_vervaldatum
DATE,
alg_gebouw_image
VARCHAR2(255),
alg_gebouw_mjb_score1
NUMBER(6,2),
alg_gebouw_toon_telefoon
NUMBER(3) DEFAULT(0) NOT NULL
CONSTRAINT alg_c_alg_gebouw_toon_telf CHECK(alg_gebouw_toon_telefoon IN (0,1,2,3)), /* 0=Onzichtbaar; 1=Niet verplicht; 2=Verplicht bij parkeerplaats. 3=Altijd verplicht */
alg_gebouw_toon_email
NUMBER(3) DEFAULT(0) NOT NULL
CONSTRAINT alg_c_alg_gebouw_toon_mail CHECK(alg_gebouw_toon_email IN (0,1,2,3)), /* 0=Onzichtbaar; 1=Niet verplicht; 2=Verplicht bij parkeerplaats. 3=Altijd verplicht */
alg_gebouw_toon_kenteken
NUMBER(3) DEFAULT(0) NOT NULL
CONSTRAINT alg_c_alg_gebouw_toon_kent CHECK(alg_gebouw_toon_kenteken IN (0,1,2,3)), /* 0=Onzichtbaar; 1=Niet verplicht; 2=Verplicht bij parkeerplaats. 3=Altijd verplicht */
alg_gebouw_groep
VARCHAR2(60),
alg_gebouw_externnr
VARCHAR2(256),
alg_gebouw_externsyncdate
DATE,
mld_vrije_dagen_id
VARCHAR2(50),
alg_gebouw_virtueel
NUMBER(1) DEFAULT(0) NOT NULL, /* 0=normaal, 1=virtueel gebouw */
-- in MLD_TAB.SRC:
-- mld_dienstniveau_key
-- NUMBER(10)
-- REFERENCES mld_dienstniveau(mld_dienstniveau_key) ON DELETE SET NULL,
CONSTRAINT alg_u_alg_gebouw_upper UNIQUE(alg_locatie_key, alg_gebouw_upper, alg_gebouw_verwijder)
);
@@ -476,11 +330,6 @@ CREATE_TABLE(alg_verdieping,0)
NOT_NULL(alg_verdieping_volgnr, alg_c_alg_verdieping_volgnr),
alg_verdieping_tekening /* references the drawingfile */
VARCHAR2(32),
alg_verdieping_dwgz
NUMBER(16,3),
alg_verdieping_bruto_vloeropp
NUMBER(12,2)
CONSTRAINT alg_c_alg_verdieping_vloeropp CHECK(alg_verdieping_bruto_vloeropp >= 0),
alg_verdieping_in_bewerking
NUMBER(1)
CONSTRAINT alg_c_alg_verdieping_in_bewerk CHECK(alg_verdieping_in_bewerking IS NULL
@@ -488,12 +337,6 @@ CREATE_TABLE(alg_verdieping,0)
alg_verdieping_code
VARCHAR2(10)
NOT_NULL(alg_verdieping_code, alg_c_alg_verdieping_code),
alg_verdieping_externnr
VARCHAR2(256),
alg_verdieping_externsyncdate
DATE,
alg_verdieping_virtueel
NUMBER(1) DEFAULT(0) NOT NULL, /* 0=normaal, 1=virtuele verdieping */
-- in MLD_TAB.SRC:
-- mld_dienstniveau_key
-- NUMBER(10)
@@ -544,23 +387,11 @@ CREATE_TABLE(alg_srtruimte,0)
alg_srtruimte_t_uitvoertijd
MLD_T_UITVOERTIJD
CONSTRAINT alg_c_alg_srtruimt_t_uitvtijd CHECK(alg_srtruimte_t_uitvoertijd.tijdsduur >= 0),
alg_srtruimte_t_uitvoer_pr1
MLD_T_UITVOERTIJD
CONSTRAINT alg_c_alg_srtruimt_t_uitv_pr1 CHECK(alg_srtruimte_t_uitvoer_pr1.tijdsduur >= 0),
alg_srtruimte_t_uitvoer_pr2
MLD_T_UITVOERTIJD
CONSTRAINT alg_c_alg_srtruimt_t_uitv_pr2 CHECK(alg_srtruimte_t_uitvoer_pr2.tijdsduur >= 0),
alg_srtruimte_t_uitvoer_pr4
MLD_T_UITVOERTIJD
CONSTRAINT alg_c_alg_srtruimt_t_uitv_pr4 CHECK(alg_srtruimte_t_uitvoer_pr4.tijdsduur >= 0),
CONSTRAINT alg_c_prs_werkplek_verhuurbaar CHECK(NOT(prs_bevat_werkplek = 1
AND prs_verhuurbaar IS NULL)),
CONSTRAINT alg_u_alg_srtruimte_upper UNIQUE(alg_srtruimte_upper, alg_srtruimte_verwijder)
);
ALTER TABLE alg_srtruimte MODIFY alg_srtruimte_t_uitvoertijd DEFAULT MLD_T_UITVOERTIJD(NULL, NULL);
ALTER TABLE alg_srtruimte MODIFY alg_srtruimte_t_uitvoer_pr1 DEFAULT MLD_T_UITVOERTIJD(NULL, NULL);
ALTER TABLE alg_srtruimte MODIFY alg_srtruimte_t_uitvoer_pr2 DEFAULT MLD_T_UITVOERTIJD(NULL, NULL);
ALTER TABLE alg_srtruimte MODIFY alg_srtruimte_t_uitvoer_pr4 DEFAULT MLD_T_UITVOERTIJD(NULL, NULL);
CREATE_TABLE(alg_srtruimte_locatiegebouw,0)
(
@@ -605,10 +436,10 @@ CREATE_TABLE(alg_ruimte,0)
NUMBER(10)
CONSTRAINT alg_r_alg_srtruimte_key REFERENCES alg_srtruimte(alg_srtruimte_key),
alg_ruimte_nr
VARCHAR2(20)
VARCHAR2(10)
NOT_NULL(alg_ruimte_nr, alg_c_alg_ruimte_nr),
alg_ruimte_upper_nr /* references into the drawing */
VARCHAR2(20)
VARCHAR2(10)
NOT_NULL(alg_ruimte_upper_nr, alg_c_alg_ruimte_upper_nr),
alg_ruimte_acadkey
VARCHAR2(10),
@@ -655,12 +486,6 @@ CREATE_TABLE(alg_ruimte,0)
NUMBER(1)
-- DEFAULT NULL op gebouw terugvallen
CONSTRAINT alg_c_alg_ruimte_werk CHECK(alg_ruimte_werkdagen IN (0,1)),
alg_ruimte_externnr
VARCHAR2(256),
alg_ruimte_externsyncdate
DATE,
alg_ruimte_virtueel
NUMBER(1) DEFAULT(0) NOT NULL, /* 0=normaal, 1=virtuele ruimte */
-- in MLD_TAB.SRC:
-- mld_dienstniveau_key
-- NUMBER(10)
@@ -714,36 +539,27 @@ CREATE_TABLE(alg_kenmerk,0)
,alg_kenmerk_niveau
VARCHAR2(1)
CONSTRAINT alg_c_alg_kenmerk_niveau1 CHECK(alg_kenmerk_niveau IS NOT NULL
AND alg_kenmerk_niveau IN ('R','V','G','T','L','D','E'))
AND alg_kenmerk_niveau IN ('R','V','G','T','L','D'))
,alg_kenmerk_volgnr
NUMBER(3)
NOT NULL
,alg_kenmerk_rolcode
NUMBER(4)
DEFAULT 7 NOT NULL
,alg_kenmerk_omschrijving
VARCHAR2(50)
,alg_kenmerk_upper
VARCHAR2(50)
,alg_kenmerk_code
VARCHAR2(60)
,alg_kenmerk_hint
VARCHAR2(255)
,alg_kenmerk_default
VARCHAR2(4000)
,alg_kenmerk_show_expr
VARCHAR2(4000)
,alg_kenmerk_dimensie
VARCHAR2(10)
,alg_kenmerk_kenmerktype
VARCHAR2(1)
CONSTRAINT alg_c_alg_kenmerk_type1 CHECK(alg_kenmerk_kenmerktype IN ('C','N','D','R','X','L','Q','F','M','E','S', 'l'))
,alg_kenmerk_systeem
NUMBER(2)
NUMBER(1)
,alg_kenmerk_toonbaar
NUMBER(1)
,alg_kenmerk_inlijst
NUMBER(1)
DEFAULT 0 NOT NULL
,alg_kenmerk_uniek
NUMBER(1)
,alg_kenmerk_regexp
@@ -771,49 +587,6 @@ CREATE_TABLE(alg_kenmerk,0)
,alg_kenmerk_verwijder
DATE
DEFAULT NULLDATUM
,fac_functie_key
NUMBER(10)
CONSTRAINT fac_r_alg_kenmerk_functie REFERENCES fac_functie (fac_functie_key)
);
-- Koppeltabel tussen de Kennisbank (FAQ) en plaats (alg_v_allonroerendgoed)
CREATE_TABLE(alg_algfaq, 0)
(
alg_algfaq_key
NUMBER(10)
CONSTRAINT alg_k_algfaq_key PRIMARY KEY,
alg_locatie_key
NUMBER(10)
NOT_NULL(alg_locatie_key, mld_c_alg_locatie_key)
CONSTRAINT mld_r_mld_locatie_key1 REFERENCES alg_locatie(alg_locatie_key) ON DELETE CASCADE,
alg_onroerendgoed_keys
NUMBER(10),
fac_faq_key
NUMBER(10)
NOT_NULL(fac_faq_key, alg_c_fac_faq_key)
CONSTRAINT alg_r_fac_faq_key1 REFERENCES fac_faq(fac_faq_key) ON DELETE CASCADE
);
CREATE_TABLE(alg_onroerendgoed_note, 0)
( alg_onroerendgoed_note_key
NUMBER (10)
CONSTRAINT alg_k_alg_onroerendgoed_note_key PRIMARY KEY
, alg_onroerendgoed_key
NUMBER (10)
CONSTRAINT alg_c_alg_onroerendgoed_key1 CHECK(alg_onroerendgoed_key IS NOT NULL)
, alg_onroerendgoed_typ
VARCHAR (1)
CONSTRAINT alg_c_alg_onroerendgoed_typ1 CHECK(alg_onroerendgoed_typ IS NOT NULL)
CONSTRAINT alg_c_alg_onroerendgoed_typ2 CHECK(alg_onroerendgoed_typ IN ('R','V','G','L'))
, alg_onroerendgoed_note_aanmaak
DATE
DEFAULT SYSDATE
--, prs_perslid_key
-- NUMBER (10)
-- CONSTRAINT alg_r_prs_perslid_key5 REFERENCES prs_perslid (prs_perslid_key) ON DELETE SET NULL
, alg_onroerendgoed_note_omschrijving
VARCHAR2 (4000 CHAR)
);
REGISTERONCE('$Id$')
REGISTERONCE('$Id$')

View File

@@ -59,8 +59,7 @@ BEGIN
INTO dummy
FROM cnt_v_aanwezigcontract_plaats, cnt_v_aanwezigcontract
WHERE cnt_v_aanwezigcontract_plaats.cnt_contract_key = cnt_v_aanwezigcontract.cnt_contract_key
AND cnt_v_aanwezigcontract.cnt_contract_looptijd_tot > SYSDATE
AND cnt_v_aanwezigcontract.cnt_contract_status <> 1
AND cnt_v_aanwezigcontract.cnt_contract_looptijd_tot > sysdate
AND cnt_v_aanwezigcontract_plaats.cnt_alg_plaats_key = :old.alg_locatie_key
AND cnt_v_aanwezigcontract_plaats.cnt_alg_plaats_code = 'L';
raise_application_error(-20000,'cnt_m028');
@@ -78,10 +77,10 @@ BEGIN
WHERE mld_alg_locatie_key=:old.alg_locatie_key
AND fac_activiteit_key IS NULL
AND mld_melding_status IN (0,2,3,4,7);
raise_application_error(-20001, 'alg_m999 Locatie kan nog niet verwijderd worden. Er zijn nog lopende meldingen');
APPLICATION_ERROR(-20000, 'alg_m999 Locatie kan nog niet verwijderd worden. Er zijn nog lopende meldingen');
EXCEPTION
WHEN NO_DATA_FOUND THEN NULL;
WHEN TOO_MANY_ROWS THEN raise_application_error(-20001,'alg_m999 Locatie kan nog niet verwijderd worden. Er zijn nog lopende meldingen');
WHEN TOO_MANY_ROWS THEN raise_application_error(-20000,'alg_m999 Locatie kan nog niet verwijderd worden. Er zijn nog lopende meldingen');
END;
DELETE FROM cad_tekening WHERE alg_locatie_key=:old.alg_locatie_key;
@@ -95,6 +94,9 @@ BEFORE INSERT OR UPDATE ON alg_terreinsector
FOR EACH ROW
BEGIN
UPDATE_PRIMARY_KEY(alg_terreinsector_key, alg_s_alg_onroerendgoed_keys);
:new.alg_terreinsector_omschrijving := SUBSTRB(:new.alg_terreinsector_code ||' - '|| :new.alg_terreinsector_naam,1,50);
UPDATE_UPPER(alg_terreinsector_code,alg_terreinsector_upper,alg_terreinsector);
UPDATE_AANMAAKDATUM(alg_terreinsector, alg_terreinsector_aanmaak);
SET_VERWIJDER_CHILDREN_DEELT(ins_deel, alg_terreinsector_key, alg_terreinsector_verwijder, NULL,
@@ -107,8 +109,7 @@ BEGIN
INTO dummy
FROM cnt_v_aanwezigcontract_plaats, cnt_v_aanwezigcontract
WHERE cnt_v_aanwezigcontract_plaats.cnt_contract_key = cnt_v_aanwezigcontract.cnt_contract_key
AND cnt_v_aanwezigcontract.cnt_contract_looptijd_tot > SYSDATE
AND cnt_v_aanwezigcontract.cnt_contract_status <> 1
AND cnt_v_aanwezigcontract.cnt_contract_looptijd_tot > sysdate
AND cnt_v_aanwezigcontract_plaats.cnt_alg_plaats_key = :old.alg_terreinsector_key
AND cnt_v_aanwezigcontract_plaats.cnt_alg_plaats_code = 'T';
raise_application_error(-20000,'cnt_m027');
@@ -116,6 +117,20 @@ BEGIN
WHEN NO_DATA_FOUND THEN NULL;
WHEN TOO_MANY_ROWS THEN raise_application_error(-20000,'cnt_m027');
END;
/* CONN#465 */
DECLARE
dummy CHAR;
BEGIN
SELECT 'x'
INTO dummy
FROM cnt_contract_onrgoed co
WHERE co.ALG_ONRGOED_KEY = :old.alg_terreinsector_key
AND co.ALG_ONRGOED_NIVEAU = 'T';
APPLICATION_ERROR_GOTO(-20000,'alg_m999 Terrein heeft nog huurcontract');
EXCEPTION
WHEN NO_DATA_FOUND THEN NULL;
WHEN TOO_MANY_ROWS THEN APPLICATION_ERROR_GOTO(-20000,'alg_m999 Terrein heeft nog huurcontract');
END;
DECLARE
dummy CHAR;
BEGIN
@@ -125,10 +140,10 @@ BEGIN
WHERE mld_alg_onroerendgoed_keys=:old.alg_terreinsector_key
AND fac_activiteit_key IS NULL
AND mld_melding_status IN (0,2,3,4,7);
raise_application_error(-20001, 'alg_m999 Terrein kan nog niet verwijderd worden. Er zijn nog lopende meldingen');
APPLICATION_ERROR(-20000, 'alg_m999 Terrein kan nog niet verwijderd worden. Er zijn nog lopende meldingen');
EXCEPTION
WHEN NO_DATA_FOUND THEN NULL;
WHEN TOO_MANY_ROWS THEN raise_application_error(-20001, 'alg_m999 Terrein kan nog niet verwijderd worden. Er zijn nog lopende meldingen');
WHEN TOO_MANY_ROWS THEN APPLICATION_ERROR(-20000, 'alg_m999 Terrein kan nog niet verwijderd worden. Er zijn nog lopende meldingen');
END;
/* Terrein kent geen bezoekers */
END IF;
@@ -154,6 +169,7 @@ BEGIN
UPDATE_PRIMARY_KEY(alg_gebouw_key, alg_s_alg_onroerendgoed_keys);
UPDATE_UPPER(alg_gebouw_code, alg_gebouw_upper,alg_gebouw);
UPDATE_AANMAAKDATUM(alg_gebouw, alg_gebouw_aanmaak);
:new.alg_gebouw_omschrijving := SUBSTRB(:new.alg_gebouw_code ||' - '|| :new.alg_gebouw_naam,1,60);
LAAT_VERDIEPING_VERVALLEN_VOOR_GEBOUW('alg_m54');
IF :new.alg_gebouw_verwijder IS NOT NULL AND :old.alg_gebouw_verwijder IS NULL THEN
DECLARE
@@ -163,14 +179,13 @@ BEGIN
INTO dummy
FROM cnt_v_aanwezigcontract_plaats, cnt_v_aanwezigcontract
WHERE cnt_v_aanwezigcontract_plaats.cnt_contract_key = cnt_v_aanwezigcontract.cnt_contract_key
AND cnt_v_aanwezigcontract.cnt_contract_looptijd_tot > SYSDATE
AND cnt_v_aanwezigcontract.cnt_contract_status <> 1
AND cnt_v_aanwezigcontract.cnt_contract_looptijd_tot > sysdate
AND cnt_v_aanwezigcontract_plaats.cnt_alg_plaats_key = :old.alg_gebouw_key
AND cnt_v_aanwezigcontract_plaats.cnt_alg_plaats_code = 'G';
raise_application_error(-20000,'cnt_m026');
APPLICATION_ERROR_GOTO(-20000,'cnt_m026');
EXCEPTION
WHEN NO_DATA_FOUND THEN NULL;
WHEN TOO_MANY_ROWS THEN raise_application_error(-20000,'cnt_m026');
WHEN TOO_MANY_ROWS THEN APPLICATION_ERROR_GOTO(-20000,'cnt_m026');
END;
DECLARE
@@ -182,10 +197,10 @@ BEGIN
WHERE mld_alg_onroerendgoed_keys = :OLD.alg_gebouw_key
AND fac_activiteit_key IS NULL
AND mld_melding_status IN (0,2,3,4,7);
raise_application_error(-20001, 'alg_m999 Gebouw kan nog niet verwijderd worden. Er zijn nog lopende meldingen');
APPLICATION_ERROR(-20000, 'alg_m999 Gebouw kan nog niet verwijderd worden. Er zijn nog lopende meldingen');
EXCEPTION
WHEN NO_DATA_FOUND THEN NULL;
WHEN TOO_MANY_ROWS THEN raise_application_error(-20001, 'alg_m999 Gebouw kan nog niet verwijderd worden. Er zijn nog lopende meldingen');
WHEN TOO_MANY_ROWS THEN APPLICATION_ERROR(-20000, 'alg_m999 Gebouw kan nog niet verwijderd worden. Er zijn nog lopende meldingen');
END;
/* Wissen laat een ingevulde locatie_key over, wat goed is */
@@ -214,14 +229,13 @@ BEGIN
INTO dummy
FROM cnt_v_aanwezigcontract_plaats, cnt_v_aanwezigcontract
WHERE cnt_v_aanwezigcontract_plaats.cnt_contract_key = cnt_v_aanwezigcontract.cnt_contract_key
AND cnt_v_aanwezigcontract.cnt_contract_looptijd_tot > SYSDATE
AND cnt_v_aanwezigcontract.cnt_contract_status <> 1
AND cnt_v_aanwezigcontract.cnt_contract_looptijd_tot > sysdate
AND cnt_v_aanwezigcontract_plaats.cnt_alg_plaats_key = :old.alg_verdieping_key
AND cnt_v_aanwezigcontract_plaats.cnt_alg_plaats_code = 'V';
raise_application_error(-20000,'cnt_m025');
APPLICATION_ERROR_GOTO(-20000,'cnt_m025');
EXCEPTION
WHEN NO_DATA_FOUND THEN NULL;
WHEN TOO_MANY_ROWS THEN raise_application_error(-20000,'cnt_m025');
WHEN TOO_MANY_ROWS THEN APPLICATION_ERROR_GOTO(-20000,'cnt_m025');
END;
DECLARE
dummy CHAR;
@@ -232,10 +246,10 @@ BEGIN
WHERE mld_alg_onroerendgoed_keys=:old.alg_verdieping_key
AND fac_activiteit_key IS NULL
AND mld_melding_status IN (0,2,3,4,7);
raise_application_error(-20001, 'alg_m999 Verdieping kan nog niet verwijderd worden. Er zijn nog lopende meldingen');
APPLICATION_ERROR(-20000, 'alg_m999 Verdieping kan nog niet verwijderd worden. Er zijn nog lopende meldingen');
EXCEPTION
WHEN NO_DATA_FOUND THEN NULL;
WHEN TOO_MANY_ROWS THEN raise_application_error(-20001, 'alg_m999 Verdieping kan nog niet verwijderd worden. Er zijn nog lopende meldingen');
WHEN TOO_MANY_ROWS THEN APPLICATION_ERROR(-20000, 'alg_m999 Verdieping kan nog niet verwijderd worden. Er zijn nog lopende meldingen');
END;
DELETE FROM cad_tekening WHERE alg_verdieping_key=:old.alg_verdieping_key;
@@ -296,10 +310,10 @@ BEGIN
AND ALG_SR_2.alg_srtruimte_key = :new.alg_srtruimte_key
AND ALG_SR_2.prs_bevat_werkplek IS NULL
AND PRS_W.prs_alg_ruimte_key = :new.alg_ruimte_key;
raise_application_error(-20000, 'prs_m034');
APPLICATION_ERROR_GOTO(-20000, 'prs_m034');
EXCEPTION
WHEN NO_DATA_FOUND THEN NULL;
WHEN TOO_MANY_ROWS THEN raise_application_error(-20000, 'prs_m034');
WHEN TOO_MANY_ROWS THEN APPLICATION_ERROR_GOTO(-20000, 'prs_m034');
END;
END IF;
IF :new.alg_ruimte_verwijder IS NOT NULL AND :old.alg_ruimte_verwijder IS NULL THEN
@@ -310,14 +324,27 @@ BEGIN
INTO dummy
FROM cnt_v_aanwezigcontract_plaats, cnt_v_aanwezigcontract
WHERE cnt_v_aanwezigcontract_plaats.cnt_contract_key = cnt_v_aanwezigcontract.cnt_contract_key
AND cnt_v_aanwezigcontract.cnt_contract_looptijd_tot > SYSDATE
AND cnt_v_aanwezigcontract.cnt_contract_status <> 1
AND cnt_v_aanwezigcontract.cnt_contract_looptijd_tot > sysdate
AND cnt_v_aanwezigcontract_plaats.cnt_alg_plaats_key = :old.alg_ruimte_key
AND cnt_v_aanwezigcontract_plaats.cnt_alg_plaats_code = 'R';
raise_application_error(-20000,'cnt_m024');
APPLICATION_ERROR_GOTO(-20000,'cnt_m024');
EXCEPTION
WHEN NO_DATA_FOUND THEN NULL;
WHEN TOO_MANY_ROWS THEN raise_application_error(-20000,'cnt_m024');
WHEN TOO_MANY_ROWS THEN APPLICATION_ERROR_GOTO(-20000,'cnt_m024');
END;
DECLARE
dummy CHAR;
BEGIN
SELECT 'x'
INTO dummy
FROM cnt_contract_onrgoed co
WHERE co.alg_onrgoed_key = :old.alg_ruimte_key
AND co.alg_onrgoed_niveau = 'R';
APPLICATION_ERROR_GOTO(-20000,'alg_m999 Ruimte heeft nog huurcontract');
EXCEPTION
WHEN NO_DATA_FOUND THEN NULL;
WHEN TOO_MANY_ROWS THEN APPLICATION_ERROR_GOTO(-20000,'alg_m999 Ruimte heeft nog huurcontract');
END;
DECLARE
@@ -353,10 +380,10 @@ BEGIN
AND rd.res_rsv_deel_verwijder IS NULL
AND res_rsv_ruimte_tot > SYSDATE-14
AND rd.res_status_bo_key < 5);
raise_application_error(-20000, 'res_m039');
APPLICATION_ERROR(-20000, 'res_m039');
EXCEPTION
WHEN NO_DATA_FOUND THEN NULL;
WHEN TOO_MANY_ROWS THEN raise_application_error(-20000, 'res_m039');
WHEN TOO_MANY_ROWS THEN APPLICATION_ERROR(-20000, 'res_m039');
END;
DECLARE
@@ -368,10 +395,10 @@ BEGIN
WHERE mld_alg_onroerendgoed_keys=:old.alg_ruimte_key
AND fac_activiteit_key IS NULL
AND mld_melding_status IN (0,2,3,4,7);
raise_application_error(-20001, 'Ruimte kan nog niet verwijderd worden. Er zijn nog lopende meldingen');
APPLICATION_ERROR(-20000, 'Ruimte kan nog niet verwijderd worden. Er zijn nog lopende meldingen');
EXCEPTION
WHEN NO_DATA_FOUND THEN NULL;
WHEN TOO_MANY_ROWS THEN raise_application_error(-20001, 'alg_m999 Ruimte kan nog niet verwijderd worden. Er zijn nog lopende meldingen');
WHEN TOO_MANY_ROWS THEN APPLICATION_ERROR(-20000, 'alg_m999 Ruimte kan nog niet verwijderd worden. Er zijn nog lopende meldingen');
END;
DECLARE
@@ -383,10 +410,10 @@ BEGIN
WHERE ins_alg_ruimte_key=:old.alg_ruimte_key
AND ins_deel_verwijder IS NULL
AND ins_alg_ruimte_type = 'R';
raise_application_error(-20001, 'alg_m999 Ruimte kan nog niet verwijderd worden. Er zijn nog objecten');
APPLICATION_ERROR(-20000, 'alg_m999 Ruimte kan nog niet verwijderd worden. Er zijn nog objecten');
EXCEPTION
WHEN NO_DATA_FOUND THEN NULL;
WHEN TOO_MANY_ROWS THEN raise_application_error(-20001, 'alg_m999 Ruimte kan nog niet verwijderd worden. Er zijn nog objecten');
WHEN TOO_MANY_ROWS THEN APPLICATION_ERROR(-20000, 'alg_m999 Ruimte kan nog niet verwijderd worden. Er zijn nog objecten');
END;
UPDATE res_alg_ruimte
@@ -415,19 +442,20 @@ BEFORE INSERT OR UPDATE ON alg_kenmerk
FOR EACH ROW
BEGIN
UPDATE_PRIMARY_KEY(alg_kenmerk_key, alg_s_alg_kenmerk_key);
UPDATE_UPPER(alg_kenmerk_omschrijving, alg_kenmerk_upper, alg_kenmerk);
UPDATE_UPPER(alg_kenmerk_code, alg_kenmerk_code, alg_kenmerk);
UPDATE_UPPER(alg_kenmerk_omschrijving, alg_kenmerk_upper,alg_kenmerk);
IF (:new.alg_kenmerk_verwijder IS NOT NULL AND :old.alg_kenmerk_verwijder IS NULL AND
:new.alg_kenmerk_systeem = 1)
THEN
raise_application_error(-20000, 'ALG_M238');
APPLICATION_ERROR(-20003, 'ALG_M238');
END IF;
IF :new.alg_kenmerk_kenmerktype IN ('C', 'N') AND :new.alg_kenmerk_lengte IS NULL
IF (:new.alg_kenmerk_kenmerktype IN ('C','N'))
AND :new.alg_kenmerk_lengte IS NULL
THEN
raise_application_error(-20000, 'ALG_C_ALG_KENMERK_LENGTE');
APPLICATION_ERROR(-20000, 'ALG_C_ALG_KENMERK_LENGTE');
END IF;
-- Numeriek mag niet te lang zijn (numeric overflow)
IF :new.alg_kenmerk_kenmerktype = 'N' AND :new.alg_kenmerk_lengte > 20
IF :new.alg_kenmerk_kenmerktype = 'N'
AND :new.alg_kenmerk_lengte > 20
THEN
:new.alg_kenmerk_lengte := 20;
END IF;
@@ -449,9 +477,9 @@ BEGIN
AND FAC.SAFE_TO_NUMBER(alg_onrgoedkenmerk_waarde) < :new.alg_kenmerk_nmin
AND rownum=1);
IF :new.alg_kenmerk_niveau = 'G' THEN
raise_application_error(-20000, 'ALG_C_ALG_KENMERK_MIN_G');
APPLICATION_ERROR(-20000, 'ALG_C_ALG_KENMERK_MIN_G');
ELSE
raise_application_error(-20000, 'ALG_C_ALG_KENMERK_MIN_R');
APPLICATION_ERROR(-20000, 'ALG_C_ALG_KENMERK_MIN_R');
END IF;
EXCEPTION
WHEN NO_DATA_FOUND
@@ -459,9 +487,9 @@ BEGIN
WHEN TOO_MANY_ROWS THEN
BEGIN
IF :new.alg_kenmerk_niveau = 'G' THEN
raise_application_error(-20000, 'ALG_C_ALG_KENMERK_MIN_G');
APPLICATION_ERROR(-20000, 'ALG_C_ALG_KENMERK_MIN_G');
ELSE
raise_application_error(-20000, 'ALG_C_ALG_KENMERK_MIN_R');
APPLICATION_ERROR(-20000, 'ALG_C_ALG_KENMERK_MIN_R');
END IF;
END;
END;
@@ -482,9 +510,9 @@ BEGIN
AND FAC.SAFE_TO_NUMBER(alg_onrgoedkenmerk_waarde) > :new.alg_kenmerk_nmax
AND rownum=1);
IF :new.alg_kenmerk_niveau = 'G' THEN
raise_application_error(-20000, 'ALG_C_ALG_KENMERK_MAX_G');
APPLICATION_ERROR(-20000, 'ALG_C_ALG_KENMERK_MAX_G');
ELSE
raise_application_error(-20000, 'ALG_C_ALG_KENMERK_MAX_R');
APPLICATION_ERROR(-20000, 'ALG_C_ALG_KENMERK_MAX_R');
END IF;
EXCEPTION
WHEN NO_DATA_FOUND
@@ -492,9 +520,9 @@ BEGIN
WHEN TOO_MANY_ROWS THEN
BEGIN
IF :new.alg_kenmerk_niveau = 'G' THEN
raise_application_error(-20000, 'ALG_C_ALG_KENMERK_MAX_G');
APPLICATION_ERROR(-20000, 'ALG_C_ALG_KENMERK_MAX_G');
ELSE
raise_application_error(-20000, 'ALG_C_ALG_KENMERK_MAX_R');
APPLICATION_ERROR(-20000, 'ALG_C_ALG_KENMERK_MAX_R');
END IF;
END;
END;
@@ -549,7 +577,7 @@ BEGIN
END IF;
EXCEPTION
WHEN NO_DATA_FOUND
THEN raise_application_error(-20000, 'ALG_M015');
THEN APPLICATION_ERROR_GOTO(-20000, 'ALG_M015');
END;
SELECT alg_kenmerk_omschrijving
, alg_kenmerk_kenmerktype
@@ -567,7 +595,7 @@ BEGIN
WHERE alg_kenmerk_key = :new.alg_kenmerk_key;
EXCEPTION
WHEN NO_DATA_FOUND
THEN raise_application_error(-20000,'INS_R_INS_KENMERK_KEY1');
THEN APPLICATION_ERROR_GOTO(-20000,'INS_R_INS_KENMERK_KEY1');
END;
/* Kijk welk KenmerkType gebruikt wordt.
@@ -583,8 +611,8 @@ BEGIN
*/
IF LENGTH(KenmerkWaarde) > KenmerkLengte
THEN
APPLICATION_ERROR_GOTO(-20004, 'ALG_M232,'|| KenmerkOmschr ||','
|| TO_CHAR(KenmerkLengte));
APPLICATION_ERROR(-20004, 'ALG_M232,'|| KenmerkOmschr ||','
|| TO_CHAR(KenmerkLengte));
END IF;
ELSIF KenmerkType = 'N'
/*
@@ -611,8 +639,8 @@ BEGIN
THEN FormatMask := REPLACE(FormatMask, '9', '#');
FormatMask := REPLACE(FormatMask, '0', '#');
FormatMask := REPLACE(FormatMask, 'D', '.');
APPLICATION_ERROR_GOTO(-20004,'ALG_M233,'|| KenmerkOmschr ||','
|| FormatMask);
RAISE_APPLICATION_ERROR(-20004,'ALG_M233,'|| KenmerkOmschr ||','
|| FormatMask);
END;
/*
** Controleer of de waarde binnen NMin en NMax ligt
@@ -671,31 +699,4 @@ BEGIN
END;
/
CREATE_TRIGGER(alg_t_alg_algfaq_B_I)
BEFORE INSERT ON alg_algfaq
FOR EACH ROW
BEGIN
UPDATE_PRIMARY_KEY(alg_algfaq_key, alg_s_alg_algfaq_key);
END;
/
CREATE_TRIGGER(alg_t_alg_algfaq_B_IU)
BEFORE INSERT OR UPDATE ON alg_algfaq
FOR EACH ROW
BEGIN
IF :new.alg_onroerendgoed_keys IS NOT NULL
THEN
CHECK_REFERENCE_ONROERENDGOED(alg_onroerendgoed_keys, 'alg_m239 alg_onroerendgoed_keys ('|| :new.alg_onroerendgoed_keys ||') bestaat niet');
END IF;
END;
/
CREATE_TRIGGER(alg_t_alg_onroerendgoed_note_B_I)
BEFORE INSERT ON alg_onroerendgoed_note
FOR EACH ROW
BEGIN
UPDATE_PRIMARY_KEY(alg_onroerendgoed_note_key, alg_s_alg_onroerendgoed_note_key);
END;
/
REGISTERRUN('$Id$')

View File

@@ -86,7 +86,7 @@ CREATE_VIEW(alg_v_verdieping_gegevens,0) AS
SELECT ALG_L.alg_locatie_key, ALG_L.alg_district_key,
ALG_L.alg_locatie_omschrijving, ALG_L.alg_locatie_code,
ALG_L.alg_locatie_upper, ALG_G.alg_gebouw_key,
ALG_G.alg_srtgebouw_key, ALG_G.alg_gebouw_naam, ALG_G.alg_gebouw_omschrijving,
ALG_G.alg_srtgebouw_key, ALG_G.alg_gebouw_omschrijving,
ALG_G.alg_gebouw_upper, ALG_V.alg_verdieping_key,
ALG_V.alg_verdieping_omschrijving, ALG_V.alg_verdieping_upper,
ALG_V.alg_verdieping_volgnr, ALG_V.alg_verdieping_code,
@@ -121,7 +121,7 @@ DEFINIEER_VIEW_AANWEZIG(alg_v_srtvloer, alg_srtvloer_verwijder,
CREATE_VIEW(alg_v_ruimte_gegevens, 0) AS
SELECT alg_l.alg_locatie_key, alg_l.alg_district_key, alg_l.alg_locatie_omschrijving, alg_l.alg_locatie_code,
alg_l.alg_locatie_upper, alg_g.alg_gebouw_key, alg_g.alg_srtgebouw_key, alg_g.alg_gebouw_omschrijving, alg_g.alg_gebouw_naam,
alg_l.alg_locatie_upper, alg_g.alg_gebouw_key, alg_g.alg_srtgebouw_key, alg_g.alg_gebouw_omschrijving,
alg_g.alg_gebouw_upper, alg_v.alg_verdieping_key, alg_v.alg_verdieping_omschrijving,
alg_v.alg_verdieping_upper, alg_v.alg_verdieping_volgnr, alg_v.alg_verdieping_code,
alg_v.alg_verdieping_tekening, alg_r.alg_ruimte_key, alg_r.alg_srtruimte_key, alg_r.alg_ruimte_nr,
@@ -146,8 +146,8 @@ CREATE_VIEW(alg_v_ruimte_gegevens, 0) AS
AND alg_l.alg_locatie_key = alg_g.alg_locatie_key;
CREATE_VIEW(alg_v_ruimte_gegevens_all, 0) AS
SELECT alg_l.alg_locatie_key, alg_l.alg_district_key, alg_l.alg_locatie_omschrijving, alg_l.alg_locatie_adres, alg_l.alg_locatie_code,
alg_l.alg_locatie_upper, alg_g.alg_gebouw_key, alg_g.alg_srtgebouw_key, alg_g.alg_gebouw_omschrijving, alg_g.alg_gebouw_naam,
SELECT alg_l.alg_locatie_key, alg_l.alg_district_key, alg_l.alg_locatie_omschrijving, alg_l.alg_locatie_code,
alg_l.alg_locatie_upper, alg_g.alg_gebouw_key, alg_g.alg_srtgebouw_key, alg_g.alg_gebouw_omschrijving,
alg_g.alg_gebouw_upper, alg_v.alg_verdieping_key, alg_v.alg_verdieping_omschrijving,
alg_v.alg_verdieping_upper, alg_v.alg_verdieping_volgnr, alg_v.alg_verdieping_code,
alg_v.alg_verdieping_tekening, alg_r.alg_ruimte_key, alg_r.alg_srtruimte_key, alg_r.alg_ruimte_nr,
@@ -281,10 +281,6 @@ CREATE_VIEW(alg_v_allonrgoed_gegevens,0)
alg_gebouw_key,
alg_gebouw_code,
alg_gebouw_naam,
alg_gebouw_toon_telefoon,
alg_gebouw_toon_email,
alg_gebouw_toon_kenteken,
alg_gebouw_groep,
alg_terreinsector_key,
alg_terreinsector_code,
alg_terreinsector_naam,
@@ -293,7 +289,7 @@ CREATE_VIEW(alg_v_allonrgoed_gegevens,0)
)
AS
SELECT alg_r.alg_ruimte_key,
DECODE (SUBSTR (alg_g.alg_gebouw_code, 1, 1), '_', '', alg_g.alg_gebouw_code)
DECODE (SUBSTR (alg_g.alg_gebouw_code, 1, 1), '_', '', '-' || alg_g.alg_gebouw_code)
|| DECODE (SUBSTR (alg_v.alg_verdieping_code, 1, 1),
'_', '',
'-' || alg_v.alg_verdieping_code)
@@ -318,10 +314,6 @@ AS
alg_g.alg_gebouw_key,
alg_g.alg_gebouw_code,
alg_g.alg_gebouw_naam,
alg_g.alg_gebouw_toon_telefoon,
alg_g.alg_gebouw_toon_email,
alg_g.alg_gebouw_toon_kenteken,
alg_g.alg_gebouw_groep,
TO_NUMBER (NULL),
NULL,
NULL,
@@ -336,7 +328,7 @@ AS
AND alg_l.alg_locatie_key = alg_g.alg_locatie_key
UNION ALL
SELECT alg_v.alg_verdieping_key,
DECODE (SUBSTR (alg_g.alg_gebouw_code, 1, 1), '_', '', alg_g.alg_gebouw_code)
DECODE (SUBSTR (alg_g.alg_gebouw_code, 1, 1), '_', '', '-' || alg_g.alg_gebouw_code)
|| DECODE (SUBSTR (alg_v.alg_verdieping_code, 1, 1),
'_', '',
'-' || alg_v.alg_verdieping_code),
@@ -357,10 +349,6 @@ AS
alg_g.alg_gebouw_key,
alg_g.alg_gebouw_code,
alg_g.alg_gebouw_naam,
alg_g.alg_gebouw_toon_telefoon,
alg_g.alg_gebouw_toon_email,
alg_g.alg_gebouw_toon_kenteken,
alg_g.alg_gebouw_groep,
TO_NUMBER (NULL),
NULL,
NULL,
@@ -371,7 +359,7 @@ AS
AND alg_l.alg_locatie_key = alg_g.alg_locatie_key
UNION ALL
SELECT alg_g.alg_gebouw_key,
DECODE (SUBSTR (alg_g.alg_gebouw_code, 1, 1), '_', '', alg_g.alg_gebouw_code),
DECODE (SUBSTR (alg_g.alg_gebouw_code, 1, 1), '_', '', '-' || alg_g.alg_gebouw_code),
DECODE (SUBSTR (alg_g.alg_gebouw_code, 1, 1),
'_', alg_l.alg_locatie_omschrijving,
alg_g.alg_gebouw_naam),
@@ -386,10 +374,6 @@ AS
alg_g.alg_gebouw_key,
alg_g.alg_gebouw_code,
alg_g.alg_gebouw_naam,
alg_g.alg_gebouw_toon_telefoon,
alg_g.alg_gebouw_toon_email,
alg_g.alg_gebouw_toon_kenteken,
alg_g.alg_gebouw_groep,
TO_NUMBER (NULL),
NULL,
NULL,
@@ -401,7 +385,7 @@ AS
SELECT alg_t.alg_terreinsector_key,
DECODE (SUBSTR (alg_t.alg_terreinsector_code, 1, 1),
'_', '',
alg_t.alg_terreinsector_code),
'-' || alg_t.alg_terreinsector_code),
DECODE (SUBSTR (alg_t.alg_terreinsector_code, 1, 1),
'_', alg_l.alg_locatie_omschrijving,
alg_terreinsector_naam),
@@ -416,10 +400,6 @@ AS
TO_NUMBER (NULL),
NULL,
NULL,
alg_t.alg_terreinsector_toon_telef,
alg_t.alg_terreinsector_toon_email,
alg_t.alg_terreinsector_toon_kentk,
NULL,
alg_t.alg_terreinsector_key,
alg_t.alg_terreinsector_code,
alg_t.alg_terreinsector_naam,
@@ -452,7 +432,7 @@ CREATE_VIEW(alg_v_onroerendgoed_gegevens,0)
)
AS
SELECT alg_r.alg_ruimte_key,
DECODE (SUBSTR (alg_g.alg_gebouw_code, 1, 1), '_', '', alg_g.alg_gebouw_code)
DECODE (SUBSTR (alg_g.alg_gebouw_code, 1, 1), '_', '', '-' || alg_g.alg_gebouw_code)
|| DECODE (SUBSTR (alg_v.alg_verdieping_code, 1, 1),
'_', '',
'-' || alg_v.alg_verdieping_code)
@@ -491,7 +471,7 @@ AS
AND alg_l.alg_locatie_key = alg_g.alg_locatie_key
UNION ALL
SELECT alg_v.alg_verdieping_key,
DECODE (SUBSTR (alg_g.alg_gebouw_code, 1, 1), '_', '', alg_g.alg_gebouw_code)
DECODE (SUBSTR (alg_g.alg_gebouw_code, 1, 1), '_', '', '-' || alg_g.alg_gebouw_code)
|| DECODE (SUBSTR (alg_v.alg_verdieping_code, 1, 1),
'_', '',
'-' || alg_v.alg_verdieping_code),
@@ -522,7 +502,7 @@ AS
AND alg_l.alg_locatie_key = alg_g.alg_locatie_key
UNION ALL
SELECT alg_g.alg_gebouw_key,
DECODE (SUBSTR (alg_g.alg_gebouw_code, 1, 1), '_', '', alg_g.alg_gebouw_code),
DECODE (SUBSTR (alg_g.alg_gebouw_code, 1, 1), '_', '', '-' || alg_g.alg_gebouw_code),
DECODE (SUBSTR (alg_g.alg_gebouw_code, 1, 1),
'_', alg_l.alg_locatie_omschrijving,
alg_g.alg_gebouw_naam),
@@ -548,7 +528,7 @@ AS
SELECT alg_t.alg_terreinsector_key,
DECODE (SUBSTR (alg_t.alg_terreinsector_code, 1, 1),
'_', '',
alg_t.alg_terreinsector_code),
'-' || alg_t.alg_terreinsector_code),
DECODE (SUBSTR (alg_t.alg_terreinsector_code, 1, 1),
'_', alg_l.alg_locatie_omschrijving,
alg_terreinsector_naam),
@@ -571,6 +551,15 @@ AS
FROM alg_terreinsector alg_t, alg_locatie alg_l
WHERE alg_l.alg_locatie_key = alg_t.alg_locatie_key;
CREATE_VIEW(alg_v_alg_ruimte_verdieping,0)
AS SELECT ALG_R.alg_ruimte_key
, ALG_V.alg_verdieping_key
FROM alg_ruimte ALG_R,
alg_verdieping ALG_V
WHERE ALG_R.alg_verdieping_key = ALG_V.alg_verdieping_key
AND ALG_R.alg_ruimte_verwijder IS NULL;
CREATE_VIEW(alg_v_my_room, 0) AS
SELECT DISTINCT r.alg_ruimte_key, r.alg_verdieping_key, pl.prs_perslid_key
FROM alg_ruimte r,
@@ -957,8 +946,8 @@ CREATE_VIEW(ALG_V_ONRGOED_BOOM, 0 )
(ALG_REGIO_KEY, ALG_DISTRICT_KEY, ALG_LOCATIE_KEY, ALG_GEBOUW_KEY, ALG_VERDIEPING_KEY,
ALG_RUIMTE_KEY)
AS
SELECT a1.alg_regio_key, a2.alg_district_key, a3.alg_locatie_key,
a4.alg_gebouw_key, a5.alg_verdieping_key, a5.alg_ruimte_key
SELECT a0.alg_regio_key, a1.alg_district_key, a2.alg_locatie_key,
a3.alg_gebouw_key, a4.alg_verdieping_key, a5.alg_ruimte_key
FROM alg_regio a0,
alg_district a1,
alg_locatie a2,
@@ -1269,179 +1258,259 @@ SELECT m.mld_alg_onroerendgoed_keys, 'ALG_OPENST_MELDING',
SELECT a.alg_onrgoed_keys, 'ALG_TOEK_AFSPRAAK', TO_CHAR (a.bez_afspraak_datum), a.bez_afspraak_key, a.alg_locatie_key
FROM bez_afspraak a
WHERE a.bez_afspraak_datum > SYSDATE;
/
/* ROOT VIEWS for User defined Reports (UDR) */
CREATE_VIEW(alg_v_udr_ruimte, 1)
CREATE_VIEW(alg_v_qvw_algemeen, 0)
(
fclt_f_district,
fclt_f_gebouw,
gemeente,
adres,
fclt_f_verdieping,
ruimte,
fclt_f_divisie,
fclt_f_afdeling,
fclt_f_ruimtesoort,
fclt_f_ruimtegebruik,
fclt_f_vloersoort,
nen2580,
vloer,
bezetting,
wp,
fclt_3d_gebouw_key
)
AS
SELECT alg_l.alg_locatie_code
|| '-'
|| alg_g.alg_gebouw_code
|| '-'
|| alg_v.alg_verdieping_code
|| '-'
|| alg_r.alg_ruimte_nr
ruimte_aanduiding,
alg_d.alg_district_omschrijving
district,
alg_re.alg_regio_omschrijving
regio,
alg_l.alg_locatie_omschrijving
locatie,
COALESCE (alg_g.alg_gebouw_adres, alg_l.alg_locatie_adres)
adres,
COALESCE (alg_g.alg_gebouw_postcode, alg_l.alg_locatie_postcode)
postcode,
alg_l.alg_locatie_plaats
plaats,
alg_l.alg_locatie_mjb_score1
locatieconditiescore,
alg_g.alg_gebouw_naam
gebouw,
alg_g.alg_gebouw_omschrijving
gebouwomschrijving,
lcl.x ('alg_srtruimte_omschrijving',
alg_sg.alg_srtgebouw_key,
alg_srtgebouw_omschrijving)
gebouwsoort,
alg_g.alg_gebouw_groep,
alg_g.alg_gebouw_bruto_vloeropp
gebouwoppervlakte,
alg_g.alg_gebouw_omtrek
gebouwomtrek,
alg_g.alg_gebouw_mjb_score1
gebouwconditiescore,
(SELECT p.prs_perslid_naam_friendly
FROM prs_v_perslid_fullnames_all p
WHERE p.prs_perslid_key = alg_g.prs_perslid_key_verantw)
gebouwverantwoordelijke1,
(SELECT p.prs_perslid_naam_friendly
FROM prs_v_perslid_fullnames_all p
WHERE p.prs_perslid_key = alg_g.prs_perslid_key_verantw2)
gebouwverantwoordelijke2,
alg_v.alg_verdieping_code
verdieping,
alg_v.alg_verdieping_omschrijving
verdiepingomschrijving,
alg_v.alg_verdieping_volgnr
verdiepingvolgnr,
alg_r.alg_ruimte_nr
ruimte,
alg_r.alg_ruimte_omschrijving
ruimteomschrijving,
lcl.x ('alg_srtruimte_omschrijving',
alg_sr.alg_srtruimte_key,
alg_srtruimte_omschrijving)
ruimtesoort,
alg_sr.alg_srtruimte_code
ruimtesoortcode,
alg_sr.alg_srtruimte_prijs
ruimtesoortprijs1,
alg_sr.alg_srtruimte_prijs2
ruimtesoortprijs2,
alg_sr.alg_srtruimte_prijs3
ruimtesoortprijs3,
alg_sr.alg_srtruimte_prijs4
ruimtesoortprijs4,
alg_sr.alg_srtruimte_prijs5
ruimtesoortprijs5,
DECODE (alg_sr.prs_verhuurbaar, 1, lcl.l ('lcl_yes'), lcl.l ('lcl_no'))
ruimtesoortverhuurbaar,
DECODE (alg_sr.prs_bevat_werkplek, 1, lcl.l ('lcl_yes'), lcl.l ('lcl_no'))
ruimtesoortwerkplekken,
alg_r.alg_ruimte_vloer_omschrijving
vloer,
alg_r.alg_ruimte_omtrek
omtrek,
alg_r.alg_ruimte_inhoud
inhoud,
alg_r.alg_ruimte_bruto_vloeropp
oppervlakte1,
alg_ruimte_opp_alt1
oppervlakte2,
alg_ruimte_opp_alt2
oppervlakte3,
alg_r.alg_ruimte_opmerking
ruimteopmerking,
alg_r.alg_ruimte_key,
alg_v.alg_verdieping_key,
alg_g.alg_gebouw_key,
alg_l.alg_locatie_key,
alg_l.alg_district_key,
alg_re.alg_regio_key
FROM alg_locatie alg_l,
alg_gebouw alg_g,
alg_verdieping alg_v,
alg_ruimte alg_r,
alg_srtruimte alg_sr,
alg_srtgebouw alg_sg,
alg_district alg_d,
alg_regio alg_re
WHERE alg_r.alg_ruimte_verwijder IS NULL
AND alg_v.alg_verdieping_key = alg_r.alg_verdieping_key
AND alg_g.alg_gebouw_key = alg_v.alg_gebouw_key
AND alg_l.alg_locatie_key = alg_g.alg_locatie_key
AND alg_d.alg_district_key = alg_l.alg_district_key
AND alg_re.alg_regio_key = alg_d.alg_regio_key
AND alg_r.alg_srtruimte_key = alg_sr.alg_srtruimte_key(+)
AND alg_g.alg_srtgebouw_key = alg_sg.alg_srtgebouw_key(+);
SELECT x.district,
x.gebouw,
COALESCE (y.gemeente, x.plaats),
COALESCE (y.adres, x.adres),
x.verdieping,
x.ruimtenr,
x.divisie,
x.afdeling,
x.ruimtesoort,
x.ruimtegebruik,
x.vloersoort,
ROUND (x.nen2580_opp, 2),
ROUND (x.vloer_opp, 2),
TO_CHAR (100 * ROUND (x.bezetting, 2)) || '%',
x.werkplekken,
x.alg_gebouw_key
FROM ( (SELECT a.alg_gebouw_key,
a.gebouw,
a.adres,
a.plaats,
a.district,
a.verdieping,
a.alg_ruimte_key,
a.ruimtenr,
b.divisie,
b.afdeling,
a.ruimtesoort,
f.ruimtegebruik,
DECODE (
a.nen2580_opp,
NULL,
NULL,
(a.nen2580_opp * COALESCE (b.afd_bez, 1))
/ COALESCE (g.tot_bez, 1)
)
nen2580_opp,
DECODE (
a.vloer_opp,
NULL,
NULL,
(a.vloer_opp * COALESCE (b.afd_bez, 1))
/ COALESCE (g.tot_bez, 1)
)
vloer_opp,
COALESCE (b.afd_bez, 0) / COALESCE (g.tot_bez, 1)
bezetting,
d.werkplekken,
h.vloersoort
FROM (SELECT r.alg_ruimte_key,
r.alg_ruimte_nr ruimtenr,
v.alg_verdieping_code
verdieping,
g.alg_gebouw_key,
g.alg_gebouw_code gebouw,
l.alg_locatie_adres adres,
l.alg_locatie_plaats
plaats,
d.alg_district_omschrijving
district,
sr.alg_srtruimte_omschrijving
ruimtesoort,
r.alg_ruimte_bruto_vloeropp
nen2580_opp,
r.alg_ruimte_opp_alt1
vloer_opp
FROM alg_v_aanwezigruimte r,
alg_verdieping v,
alg_gebouw g,
alg_locatie l,
alg_district d,
alg_srtruimte sr
WHERE r.alg_verdieping_key =
v.alg_verdieping_key
AND v.alg_gebouw_key =
g.alg_gebouw_key
AND g.alg_locatie_key =
l.alg_locatie_key
AND l.alg_district_key =
d.alg_district_key
AND r.alg_srtruimte_key =
sr.alg_srtruimte_key(+))
a
LEFT JOIN -- divisie(s) op ruimte
(SELECT ra.alg_ruimte_key,
afd.prs_afdeling_omschrijving
|| ' ['
|| afd.prs_afdeling_naam
|| ']'
divisie,
(SELECT a1.prs_afdeling_omschrijving
|| ' ['
|| a1.prs_afdeling_naam
|| ']'
FROM prs_afdeling a1
WHERE a1.prs_afdeling_key =
ra.prs_afdeling_key)
afdeling,
ra.prs_ruimteafdeling_bezetting
afd_bez
FROM prs_v_aanwezigruimteafdeling ra,
prs_v_afdeling_boom ab,
prs_afdeling afd
WHERE ra.prs_afdeling_key =
ab.prs_afdeling_key
AND ab.prs_afdeling_key1 =
afd.prs_afdeling_key)
b
ON a.alg_ruimte_key = b.alg_ruimte_key
LEFT JOIN
(SELECT ok.alg_onrgoed_key,
ok.alg_onrgoedkenmerk_waarde
werkplekken
FROM alg_onrgoedkenmerk ok
WHERE ok.alg_kenmerk_key =
(SELECT alg_kenmerk_key
FROM alg_kenmerk
WHERE UPPER(alg_kenmerk_omschrijving) LIKE '%WERKPLEK%'
AND alg_kenmerk_systeem = 1
AND alg_kenmerk_verwijder IS NULL)
AND ok.alg_onrgoed_niveau = 'R'
AND ok.alg_onrgoedkenmerk_verwijder IS NULL)
d
ON a.alg_ruimte_key = d.alg_onrgoed_key
LEFT JOIN
(SELECT ok.alg_onrgoed_key,
ud.fac_usrdata_omschr ruimtegebruik
FROM alg_onrgoedkenmerk ok,
fac_usrdata ud
WHERE ok.alg_kenmerk_key =
(SELECT alg_kenmerk_key
FROM alg_kenmerk
WHERE UPPER(alg_kenmerk_omschrijving) LIKE '%GEBRUIK%'
AND alg_kenmerk_systeem = 1
AND alg_kenmerk_verwijder IS NULL)
AND ok.alg_onrgoed_niveau = 'R'
AND ok.alg_onrgoedkenmerk_waarde =
ud.fac_usrdata_key) f
ON a.alg_ruimte_key = f.alg_onrgoed_key
LEFT JOIN
(SELECT ok.alg_onrgoed_key,
ud.fac_usrdata_omschr vloersoort
FROM alg_onrgoedkenmerk ok,
fac_usrdata ud
WHERE ok.alg_kenmerk_key =
(SELECT alg_kenmerk_key
FROM alg_kenmerk
WHERE UPPER(alg_kenmerk_omschrijving) LIKE '%VLOER%'
AND alg_kenmerk_systeem = 1
AND alg_kenmerk_verwijder IS NULL)
AND ok.alg_onrgoed_niveau = 'R'
AND ok.alg_onrgoedkenmerk_waarde =
ud.fac_usrdata_key) h
ON a.alg_ruimte_key = h.alg_onrgoed_key
LEFT JOIN -- bezettingstotaal
( SELECT ra.alg_ruimte_key,
SUM (ra.prs_ruimteafdeling_bezetting)
tot_bez
FROM prs_v_aanwezigruimteafdeling ra
GROUP BY ra.alg_ruimte_key) g
ON a.alg_ruimte_key = g.alg_ruimte_key) x
LEFT JOIN -- adres info bij gebouw
(SELECT g.alg_gebouw_key,
a.mld_adres_bezoek_plaats gemeente,
a.mld_adres_bezoek_adres adres
FROM alg_gebouw g, mld_adres a
WHERE g.mld_adres_key = a.mld_adres_key
AND a.mld_adres_verwijder IS NULL) y
ON x.alg_gebouw_key = y.alg_gebouw_key);
CREATE_VIEW(alg_v_udr_terrein, 1)
AS
SELECT alg_l.alg_locatie_code || '-' || alg_t.alg_terreinsector_code
terrein_aanduiding,
alg_d.alg_district_omschrijving
district,
alg_re.alg_regio_omschrijving
regio,
alg_l.alg_locatie_omschrijving
locatie,
alg_l.alg_locatie_adres
adres,
alg_l.alg_locatie_postcode
postcode,
alg_l.alg_locatie_plaats
plaats,
alg_l.alg_locatie_mjb_score1
locatieconditiescore,
alg_t.alg_terreinsector_naam
terrein,
alg_t.alg_terreinsector_omschrijving
terreinomschrijving,
lcl.x ('alg_srtterreinsec_omschrijving',
alg_st.alg_srtterreinsector_key,
alg_srtterreinsec_omschrijving)
terreinsoort,
alg_st.alg_srtterreinsector_code
terreinsoortcode,
alg_st.alg_srtterreinsector_prijs
terreinsoortprijs1,
alg_st.alg_srtterreinsector_prijs2
terreinsoortprijs2,
alg_st.alg_srtterreinsector_prijs3
terreinsoortprijs3,
alg_st.alg_srtterreinsector_prijs4
terreinsoortprijs4,
alg_st.alg_srtterreinsector_prijs5
terreinsoortprijs5,
DECODE (alg_st.prs_verhuurbaar, 1, lcl.l ('lcl_yes'), lcl.l ('lcl_no'))
terreinsoortverhuurbaar,
alg_t.alg_terreinsector_omtrek
omtrek,
alg_t.alg_terreinsector_oppervlak
oppervlakte,
alg_t.alg_terreinsector_key,
alg_l.alg_locatie_key,
alg_l.alg_district_key,
alg_re.alg_regio_key
FROM alg_locatie alg_l,
alg_terreinsector alg_t,
alg_srtterreinsector alg_st,
alg_district alg_d,
alg_regio alg_re
WHERE alg_t.alg_terreinsector_verwijder IS NULL
AND alg_l.alg_locatie_key = alg_t.alg_locatie_key
AND alg_d.alg_district_key = alg_l.alg_district_key
AND alg_re.alg_regio_key = alg_d.alg_regio_key
AND alg_t.alg_srtterreinsector_key = alg_st.alg_srtterreinsector_key(+);
-- Vooralsnog even rechttoerechtaan, moet aangepast worden
CREATE_VIEW(alg_v_api_regios, 1) AS
SELECT alg_regio_key key,
alg_regio_omschrijving regioomschrijving
FROM alg_v_aanwezigregio;
CREATE_VIEW(alg_v_api_districten, 1) AS
SELECT alg_district_key key,
alg_regio_omschrijving regioomschrijving,
alg_district_omschrijving districtomschrijving
FROM alg_v_district_gegevens;
CREATE_VIEW(alg_v_api_locaties, 1) AS
SELECT l.alg_locatie_key key,
lg.alg_regio_omschrijving regioomschrijving,
lg.alg_district_omschrijving districtomschrijving,
l.alg_locatie_code locatiecode,
l.alg_locatie_omschrijving locatieomschrijving,
l.alg_locatie_adres locatieadres,
l.alg_locatie_postcode locatiepostcode,
l.alg_locatie_plaats locatieplaats,
l.alg_locatie_x locatiex,
l.alg_locatie_y locatiey
FROM alg_v_locatie_gegevens lg, alg_locatie l
WHERE lg.alg_locatie_key = l.alg_locatie_key;
CREATE_VIEW(alg_v_api_gebouwen, 1) AS
SELECT g.alg_gebouw_key key,
l.alg_locatie_code locatiecode,
g.alg_gebouw_code gebouwcode,
g.alg_gebouw_naam gebouwnaam,
sg.alg_srtgebouw_omschrijving soortgebouw,
l.alg_locatie_adres locatieadres,
l.alg_locatie_postcode locatiepostcode,
l.alg_locatie_plaats locatieplaats,
COALESCE(l.alg_locatie_x, g.alg_gebouw_x) gebouwx,
COALESCE(l.alg_locatie_y, g.alg_gebouw_y) gebouwy
FROM alg_locatie l,
alg_v_aanweziggebouw g,
alg_v_aanwezigsrtgebouw sg
WHERE l.alg_locatie_key = g.alg_locatie_key AND
g.alg_srtgebouw_key = sg.alg_srtgebouw_key (+);
CREATE_VIEW(alg_v_api_verdiepingen, 1) AS
SELECT alg_verdieping_key key,
alg_locatie_code locatiecode,
alg_gebouw_code gebouwcode,
alg_verdieping_code verdiepingcode,
alg_verdieping_omschrijving verdiepingomschrijving,
alg_verdieping_volgnr verdiepingvolgnr
FROM alg_v_verdieping_gegevens vg, alg_gebouw g
WHERE g.alg_gebouw_key = vg.alg_gebouw_key;
CREATE_VIEW(alg_v_api_ruimten, 1) AS
SELECT alg_ruimte_key key,
alg_locatie_code locatiecode,
alg_gebouw_code gebouwcode,
alg_verdieping_code verdiepingcode,
alg_ruimte_nr ruimtecode,
alg_ruimte_omschrijving ruimtenaam,
alg_srtruimte_omschrijving soortruimte
FROM alg_v_ruimte_gegevens rg, alg_gebouw g
WHERE g.alg_gebouw_key = rg.alg_gebouw_key;
REGISTERRUN('$Id$')

View File

@@ -1,13 +0,0 @@
/* $Revision$
* $Id$
*/
CREATE UNIQUE INDEX aut_i_idp_code ON aut_idp(aut_idp_code);
CREATE UNIQUE INDEX aut_i_idp2 ON aut_idp(aut_idp_issuer, aut_idp_audience, aut_idp_type);
CREATE UNIQUE INDEX aut_i_sp_code ON aut_sp(aut_sp_code);
CREATE UNIQUE INDEX aut_i_cp_refreshtkn ON aut_client_perslid(aut_client_perslid_refreshtkn);
CREATE UNIQUE INDEX aut_i_cp_accesstoken ON aut_client_perslid(aut_client_perslid_accesstoken);
REGISTERONCE('$Id$')

View File

@@ -1,24 +0,0 @@
/*
* $Revision$
* $Id$
*/
_FAC_MODULE('AUT','lcl_module_AUT')
INSERT INTO aut_idp
(aut_idp_code, aut_idp_type, aut_idp_algorithm,
aut_idp_omschrijving, aut_idp_opmerking,
aut_idp_secret, aut_idp_audience, aut_idp_issuer, aut_idp_clockskew)
VALUES ('_INTERNAL', 4, 'HS256',
'Internal use', 'Internal use only. Do not modify',
DBMS_RANDOM.string('a', 32), 'internal.facilitor.nl', 'internal.facilitor.nl', 30
);
INSERT INTO aut_idp_map
(aut_idp_key, aut_idp_map_from, aut_idp_map_to, aut_idp_map_identify)
SELECT aut_idp_key, 'perslid_key', 99, 1
FROM aut_idp
WHERE aut_idp_code = '_INTERNAL';
REGISTERONCE('$Id$')

View File

@@ -1,15 +0,0 @@
/*
* $Revision$
* $Id$
*/
CREATE SEQUENCE aut_s_aut_idp_key MINVALUE 1;
CREATE SEQUENCE aut_s_aut_idp_map_key MINVALUE 1;
CREATE SEQUENCE aut_s_aut_sp_key MINVALUE 1;
CREATE SEQUENCE aut_s_aut_sp_map_key MINVALUE 1;
CREATE SEQUENCE aut_s_aut_client_key MINVALUE 1;
CREATE SEQUENCE aut_s_aut_client_perslid_key MINVALUE 1;
REGISTERONCE('$Id$')

View File

@@ -1,220 +0,0 @@
/*
* $Revision$
* $Id$
*/
// Documentatie in de wiki onder Authenticeren
CREATE TABLE aut_idp
(
aut_idp_key
NUMBER(10)
CONSTRAINT aut_k_idp_key PRIMARY KEY,
aut_idp_code -- Voor &sso=<code>
VARCHAR2(30),
aut_idp_type -- 1=Internal (login.asp, future use), 2=UID_DEC (deprecated),
NUMBER(3), -- 3=GUID-encrypted (deprecated), 4=JWT, 5=SAML (future use)
aut_idp_algorithm -- HS256 is HMAC-SHA256
VARCHAR2(30),
aut_idp_omschrijving
VARCHAR2(30),
aut_idp_opmerking
VARCHAR2(320),
aut_idp_secret
VARCHAR2(128),
aut_idp_audience
VARCHAR2(128),
aut_idp_issuer
VARCHAR2(128),
aut_idp_remote_loginurl
VARCHAR2(128),
aut_idp_remote_logouturl
VARCHAR2(128),
aut_idp_saml_metaurl
VARCHAR2(128),
aut_idp_clockskew
NUMBER(10),
aut_idp_duration
NUMBER(10),
aut_idp_autocreate
NUMBER(1)
DEFAULT 0 -- +1: create; +2: update
NOT NULL,
prs_afdeling_key
NUMBER(10)
CONSTRAINT aut_r_idp_prs_afdeling REFERENCES prs_afdeling(prs_afdeling_key) ON DELETE CASCADE,
prs_bedrijf_key
NUMBER(10)
CONSTRAINT aut_r_idp_prs_bedrijf REFERENCES prs_bedrijf(prs_bedrijf_key) ON DELETE CASCADE,
fac_functie_key
NUMBER(10)
CONSTRAINT aut_r_idp_functie REFERENCES fac_functie(fac_functie_key),
aut_idp_internal -- can be used for FACFAC
NUMBER(1)
DEFAULT 0 NOT NULL,
aut_idp_ipfilter
VARCHAR2(320),
aut_idp_ipauto
NUMBER(1)
DEFAULT 0 NOT NULL,
aut_idp_loglevel
NUMBER(1) DEFAULT 0 NOT NULL,
aut_idp_aanmaak
DATE
DEFAULT SYSDATE
);
CREATE TABLE aut_idp_map
(
aut_idp_map_key
NUMBER(10)
CONSTRAINT aut_k_idp_map_key PRIMARY KEY,
aut_idp_key
NUMBER(10)
CONSTRAINT aut_r_idp_map_id REFERENCES aut_idp(aut_idp_key) ON DELETE CASCADE,
aut_idp_map_from -- as sent in JWT
VARCHAR(100)
NOT NULL,
aut_idp_map_to -- FACILITOR column of 1000+kenmerk_key
NUMBER(10)
NOT NULL,
aut_idp_map_identify
NUMBER(1)
DEFAULT 0
NOT NULL,
aut_idp_map_autocreate -- unused/future use
NUMBER(1)
DEFAULT 0 -- +1: create; +2: update
NOT NULL,
aut_idp_map_default
VARCHAR(256),
aut_idp_map_aanmaak
DATE
DEFAULT SYSDATE
);
CREATE TABLE aut_sp
(
aut_sp_key
NUMBER(10)
CONSTRAINT aut_k_sp_key PRIMARY KEY,
aut_sp_code -- Nodig?
VARCHAR2(30),
aut_sp_type -- 1=Internal (login.asp, future use), 2=UID_DEC (deprecated),
NUMBER(3), -- 3=GUID-encrypted (deprecated), 4=JWT, 5=SAML (future use)
aut_sp_algorithm -- HS256 is HMAC-SHA256
VARCHAR2(30),
aut_sp_omschrijving
VARCHAR2(30),
aut_sp_opmerking
VARCHAR2(320),
aut_sp_secret
VARCHAR2(128),
aut_sp_audience
VARCHAR2(128),
aut_idp_duration
NUMBER(10),
aut_sp_issuer
VARCHAR2(128),
aut_sp_redirect_uri
VARCHAR2(320),
fac_functie_key
NUMBER(10)
CONSTRAINT aut_r_sp_functie REFERENCES fac_functie(fac_functie_key),
aut_sp_internal
NUMBER(1)
DEFAULT 0 NOT NULL,
aut_sp_loglevel
NUMBER(1) DEFAULT 0 NOT NULL,
aut_sp_aanmaak
DATE
DEFAULT SYSDATE
);
-- Mapping attributen
CREATE TABLE aut_sp_map
(
aut_sp_map_key
NUMBER(10)
CONSTRAINT aut_k_sp_map_key PRIMARY KEY,
aut_sp_key
NUMBER(10)
CONSTRAINT aut_r_sp_map_id REFERENCES aut_sp(aut_sp_key),
aut_sp_map_from
NUMBER(3)
NOT NULL,
aut_sp_map_to -- as sent in JWT
VARCHAR(100)
NOT NULL,
aut_sp_map_aanmaak
DATE
DEFAULT SYSDATE
);
-- Clients (zoals al dan niet native App's)
CREATE TABLE aut_client
(
aut_client_key
NUMBER(10)
CONSTRAINT aut_k_aut_client_key PRIMARY KEY,
aut_client_id
VARCHAR2(64),
aut_client_type -- 1=Internal (login.asp, future use), 2=UID_DEC (deprecated),
NUMBER(3), -- 3=GUID-encrypted (deprecated), 4=JWT, 5=SAML (future use)
aut_client_omschrijving
VARCHAR2(30),
aut_client_opmerking
VARCHAR2(320),
aut_client_secret
VARCHAR2(128),
prs_bedrijf_key -- reference to find tech-adres (bedrijfadres of type N) for notifications
NUMBER(10)
CONSTRAINT aut_r_prs_bedrijf_key1 REFERENCES prs_bedrijf(prs_bedrijf_key) ON DELETE CASCADE,
aut_client_customuri -- future use
VARCHAR2(128),
aut_client_aanmaak
DATE
DEFAULT SYSDATE
);
-- Koppeling client en (toestemming gegeven door) perslid
CREATE TABLE aut_client_perslid
(
aut_client_perslid_key
NUMBER(10)
CONSTRAINT aut_k_client_perslid PRIMARY KEY,
aut_client_key
NUMBER(10)
CONSTRAINT aut_r_aut_client_id REFERENCES aut_client(aut_client_key) ON DELETE CASCADE,
aut_client_perslid_device_id
VARCHAR(320),
aut_client_perslid_device_name
VARCHAR(320),
aut_client_perslid_appbuild
NUMBER(10),
aut_client_perslid_appversion
VARCHAR2(20),
aut_client_perslid_scope
VARCHAR(320)
DEFAULT NULL,
aut_client_perslid_pushtoken
VARCHAR(320),
aut_client_perslid_refreshtkn -- unused yet
VARCHAR(320),
aut_client_perslid_refreshdate
DATE,
aut_client_perslid_accesstoken
VARCHAR(320),
aut_client_perslid_accessdate
DATE,
aut_client_perslid_login -- wanneer voor het laatst de app gebruikt
DATE,
prs_perslid_key
NUMBER(10)
CONSTRAINT aut_r_aut_client_perslid REFERENCES prs_perslid(prs_perslid_key) ON DELETE CASCADE
CONSTRAINT aut_c_aut_client_perslid CHECK(prs_perslid_key IS NOT NULL),
aut_client_perslid_aanmaak
DATE
DEFAULT SYSDATE
);
REGISTERONCE('$Id$')

View File

@@ -1,57 +0,0 @@
/*
* $Revision$
* $Id$
*
*/
CREATE_TRIGGER(aut_t_aut_idp_B_IU)
BEFORE INSERT OR UPDATE ON aut_idp
FOR EACH ROW
BEGIN
UPDATE_PRIMARY_KEY(aut_idp_key, aut_s_aut_idp_key);
:new.aut_idp_code := UPPER(:new.aut_idp_code);
END;
/
CREATE_TRIGGER(aut_t_aut_idp_map_B_I)
BEFORE INSERT ON aut_idp_map
FOR EACH ROW
BEGIN
UPDATE_PRIMARY_KEY(aut_idp_map_key, aut_s_aut_idp_map_key);
END;
/
CREATE_TRIGGER(aut_t_aut_sp_B_IU)
BEFORE INSERT ON aut_sp
FOR EACH ROW
BEGIN
UPDATE_PRIMARY_KEY(aut_sp_key, aut_s_aut_sp_key);
:new.aut_sp_code := UPPER(:new.aut_sp_code);
END;
/
CREATE_TRIGGER(aut_t_aut_sp_map_B_I)
BEFORE INSERT ON aut_sp_map
FOR EACH ROW
BEGIN
UPDATE_PRIMARY_KEY(aut_sp_map_key, aut_s_aut_sp_map_key);
END;
/
CREATE_TRIGGER(aut_t_aut_client_B_I)
BEFORE INSERT ON aut_client
FOR EACH ROW
BEGIN
UPDATE_PRIMARY_KEY(aut_client_key, aut_s_aut_client_key);
END;
/
CREATE_TRIGGER(aut_t_aut_client_perslid_B_I)
BEFORE INSERT ON aut_client_perslid
FOR EACH ROW
BEGIN
UPDATE_PRIMARY_KEY(aut_client_perslid_key, aut_s_aut_client_perslid_key);
END;
/
REGISTERRUN('$Id$')

View File

@@ -29,9 +29,6 @@ create index bes_i_bes_bestelopdr_p_prs_key on bes_bestelopdr (prs_perslid_key);
create index bes_i_bes_bestelopdr_datum on bes_bestelopdr(bes_bestelopdr_datum);
create index bes_i_bes_bestelopdr_item on bes_bestelopdr_item(bes_bestelopdr_item_verwerkt);
create index bes_i_bes_bestellever_prs_key on bes_bestellevr (prs_perslid_key);
create index bes_i_bes_bestellevr_item1 ON bes_bestellevr_item(bes_bestellevr_key);
create index bes_i_bes_srtdeel1 on bes_srtdeel(bes_srtgroep_key);
CREATE UNIQUE INDEX bes_i_bes_srtdeel2 ON bes_srtdeel(bes_srtdeel_nr, prs_bedrijf_key, bes_srtgroep_key, bes_srtdeel_verwijder);
CREATE INDEX bes_i_bes_srtdeel_prs_bdr_key on bes_srtdeel (prs_bedrijf_key);
@@ -43,13 +40,17 @@ create index prs_i_prs_afdeling_p_bdr_key on prs_afdeling (prs_bedrijf_key);
create unique index bes_i_bes_disc_params1 on bes_disc_params(bes_ins_discipline_key);
CREATE INDEX bes_i_bes_kenmerkbestell1 ON bes_kenmerkbestell(bes_bestelling_key);
CREATE INDEX bes_i_bes_kenmerkbestell2 ON bes_kenmerkbestell(bes_kenmerk_key);
CREATE INDEX bes_i_bes_kenmerkbestell3 ON bes_kenmerkbestell(bes_kenmerkbestell_waarde);
CREATE INDEX bes_i_bes_kenmerkbesteli1 ON bes_kenmerkbesteli(bes_bestelling_item_key);
CREATE INDEX bes_i_bes_srtkenmerk1 ON bes_srtkenmerk(bes_srtkenmerk_code);
CREATE INDEX bes_i_bes_kenmerk1 ON bes_kenmerk(bes_kenmerk_code);
CREATE INDEX bes_i_bes_kenmerkbesteli2 ON bes_kenmerkbesteli(bes_kenmerk_key);
CREATE INDEX bes_i_bes_kenmerkbesteli3 ON bes_kenmerkbesteli(bes_kenmerkbesteli_waarde);
CREATE INDEX bes_i_bes_favoriet1 ON bes_favoriet(prs_perslid_key);
CREATE INDEX bes_i_bes_srtdeel_prijs1 ON bes_srtdeel_prijs (bes_srtdeel_key);
CREATE INDEX bes_i_bes_srtprod_prijs1 ON bes_srtprod_prijs (bes_srtprod_key);
REGISTERONCE('$Id$')

View File

@@ -4,7 +4,7 @@
* $Id$
*/
_FAC_MODULE('BES','lcl_module_BES')
_FAC_MODULE('BES','Bestellingenmodule')
DEF_STATUS('bestelling', 1, 'lcl_bes_afgewezen');
DEF_STATUS('bestelling', 2, 'lcl_bes_new');
@@ -14,7 +14,6 @@ DEF_STATUS('bestelling', 5, 'lcl_bes_besteld');
DEF_STATUS('bestelling', 6, 'lcl_bes_geleverd');
DEF_STATUS('bestelling', 7, 'lcl_bes_verwerkt');
DEF_STATUS('bestelling', 8, 'lcl_bes_is_bescan');
DEF_STATUS('bestelling', 9, 'lcl_bes_ontvangen');
DEF_STATUS('bestelopdr', 1, 'lcl_bes_ord_afgewezen');
DEF_STATUS('bestelopdr', 2, 'lcl_bes_ord_new');

File diff suppressed because it is too large Load Diff

View File

@@ -10,8 +10,6 @@ CREATE SEQUENCE bes_s_bes_bestelling_key MINVALUE 1 NOCACHE;
CREATE SEQUENCE bes_s_bes_bestelling_item_key MINVALUE 1;
CREATE SEQUENCE bes_s_bes_bestelopdr_key MINVALUE 1 NOCACHE;
CREATE SEQUENCE bes_s_bes_bestelopdr_item_key MINVALUE 1;
CREATE SEQUENCE bes_s_bes_bestellevr_key MINVALUE 1;
CREATE SEQUENCE bes_s_bes_bestellevr_item_key MINVALUE 1;
CREATE SEQUENCE bes_s_bes_cXMLparams_key MINVALUE 1;
CREATE SEQUENCE bes_s_bes_disc_params_key MINVALUE 1;
@@ -25,7 +23,12 @@ CREATE SEQUENCE bes_s_bes_favoriet_key MINVALUE 1;
CREATE SEQUENCE bes_s_bes_staffeltabel_key MINVALUE 1;
CREATE SEQUENCE bes_s_bes_staffel_key MINVALUE 1;
CREATE SEQUENCE bes_s_bes_srtprod_key MINVALUE 1;
CREATE SEQUENCE bes_s_bes_grootheid_key MINVALUE 1;
CREATE SEQUENCE bes_s_bes_srtdeel_prijs_key MINVALUE 1;
CREATE SEQUENCE bes_s_bes_srtprod_prijs_key MINVALUE 1;
CREATE SEQUENCE bes_s_bes_bedrijf_srtprod_key MINVALUE 1;
CREATE SEQUENCE bes_s_bes_bedrijf_bedrijf_key MINVALUE 1;
REGISTERONCE('$Id$')

View File

@@ -43,7 +43,74 @@ CREATE_TABLE(bes_srtgroep,0)
CONSTRAINT bes_u_bes_srtgroep_oms UNIQUE(ins_discipline_key, bes_srtgroep_omschrijving, bes_srtgroep_verwijder)
);
-- Gewicht/volume/aantal van een artikel
CREATE_TABLE(bes_grootheid,0)
(
bes_grootheid_key
NUMBER(10)
CONSTRAINT bes_k_bes_grootheid_key PRIMARY KEY,
/* Naam is b.v. kilogram, liter, aantal (of gram, milliliter, aantal, ...)*/
bes_grootheid_naam
VARCHAR2(25),
bes_grootheid_verwijder
DATE
DEFAULT NULLDATUM
);
-- Assortiment van producent/fabrikant (genormaliseerde producten)
CREATE_TABLE(bes_srtprod,0)
(
bes_srtprod_key
NUMBER(10)
CONSTRAINT bes_k_bes_srtprod_key PRIMARY KEY,
bes_srtgroep_key
NUMBER(10)
NOT_NULL(bes_srtgroep_key, bes_c_bes_srtgroep_key3) // echt?
CONSTRAINT bes_r_bes_srtgroep_key4 REFERENCES bes_srtgroep,
bes_srtprod_omschrijving
VARCHAR2(100)
NOT_NULL(bes_srtprod_omschrijving, bes_c_bes_srtprod_omschrijving),
bes_srtprod_opmerking
VARCHAR2(2000 CHAR),
bes_srtprod_aanmaak
DATE
DEFAULT SYSDATE
NOT_NULL(bes_srtprod_aanmaak, bes_c_bes_srtprod_aanmaak),
bes_srtprod_verwijder
DATE
DEFAULT NULLDATUM,
bes_srtprod_volgnr
NUMBER(3),
bes_srtprod_btw
NUMBER(3),
bes_srtprod_eenheid
VARCHAR2(30),
bes_srtprod_nr
VARCHAR2(32),
/* MB: Optionele referentie naar producent/fabrikant */
prs_bedrijf_key
NUMBER(10)
CONSTRAINT bes_r_prs_bedrijf_key5 REFERENCES prs_bedrijf(prs_bedrijf_key),
/* MB: artikel wordt door producent gemaakt tot aan deze datum, mag leeg zijn (= geen maak-limiet) */
bes_srtprod_vervaldatum
DATE,
bes_srtprod_image
VARCHAR2(255),
bes_srtprod_veelvoud
NUMBER(6),
/* MB: Verwijzing naar eenheid van een grootheid (gram / milliliter / aantal) */
bes_grootheid_key
NUMBER(10) CONSTRAINT bes_r_bes_grootheid REFERENCES bes_grootheid(bes_grootheid_key) ON DELETE CASCADE,
/* MB Hier het getal aan gewicht, inhoud of aantal in te vullen : */
/* b.v. 1000 (en betekent in combi met bes_grootheid_key b.v. 1000 gram) */
bes_grootheid_getal
NUMBER(10),
bes_srtprod_margebedrag /* bedrag van de fee per 1 grootheid van dit product */
NUMBER(12,6),
bes_srtprod_margebedragpct /* percentage van de producentfee dat voor ons is, de rest is voor whoever */
NUMBER(3)
);
CREATE_TABLE(bes_srtdeel,0)
(
@@ -83,6 +150,9 @@ CREATE_TABLE(bes_srtdeel,0)
prs_bedrijf_key
NUMBER(10)
CONSTRAINT bes_r_prs_bedrijf_key3 REFERENCES prs_bedrijf(prs_bedrijf_key),
bes_srtprod_key
NUMBER(10)
CONSTRAINT bes_r_bes_srtprod_key2 REFERENCES bes_srtprod(bes_srtprod_key),
bes_srtdeel_vervaldatum
DATE,
bes_srtdeel_image
@@ -90,10 +160,8 @@ CREATE_TABLE(bes_srtdeel,0)
bes_srtdeel_details_loc
VARCHAR2(255),
bes_srtdeel_veelvoud
NUMBER(9,3),
bes_srtdeel_minimum
NUMBER(6),
bes_srtdeel_maximum
bes_srtdeel_minimum
NUMBER(6),
bes_staffeltabel_key
NUMBER(10)
@@ -121,10 +189,7 @@ CREATE_TABLE(bes_srtdeel,0)
bes_srtdeel_maxbestel /* De voorrraad is het maximum aantal dat ik mag bestellen {0=nee (default), 1=ja} */
NUMBER(1)
DEFAULT 0
NOT NULL,
ins_srtdeel_key /* objectrelatie */
NUMBER(10)
CONSTRAINT ins_r_ins_srtdeel_key4 REFERENCES ins_srtdeel(ins_srtdeel_key)
NOT NULL
);
@@ -173,21 +238,19 @@ CREATE_TABLE(bes_bestelling, 0)
bes_bestelling_fiat_user
NUMBER(10)
CONSTRAINT bes_r_bes_bestelling_fiat REFERENCES prs_perslid(prs_perslid_key),
bes_bestelling_fiatbedrag /* Tot zover gefiatteerd */
NUMBER(11,2),
mld_adres_key_lev
NUMBER(10)
CONSTRAINT bes_r_mld_adres_key_lev REFERENCES mld_adres(mld_adres_key),
bes_bestelling_levkosten
NUMBER(11,2),
NUMBER(8,2),
bes_bestelling_korting
NUMBER(11,2),
NUMBER(8,2),
fac_activiteit_key
NUMBER(10)
CONSTRAINT fac_r_fac_activiteit3 REFERENCES fac_activiteit(fac_activiteit_key) ON DELETE CASCADE,
mld_melding_key /* optionele verwijzing naar veroorzakende melding */
NUMBER(10)
CONSTRAINT bes_r_mld_melding1 REFERENCES mld_melding(mld_melding_key) ON DELETE SET NULL,
CONSTRAINT bes_r_mld_melding1 REFERENCES mld_melding(mld_melding_key),
bes_bestelling_kto_verstuurd
DATE,
bes_bestelling_satisfaction
@@ -195,13 +258,7 @@ CREATE_TABLE(bes_bestelling, 0)
bes_bestelling_satisfaction_op
VARCHAR2(2000),
bes_bestelling_approved
NUMBER(11,2),
bes_bestelling_lev_opm
VARCHAR2(320),
bes_bestelling_externnr
VARCHAR2(256),
bes_bestelling_externsyncdate
DATE
NUMBER(11,2)
);
CREATE_TABLE(bes_bestelopdr, 0)
@@ -230,9 +287,9 @@ CREATE_TABLE(bes_bestelopdr, 0)
bes_bestelopdr_leverdatum
DATE,
bes_bestelopdr_levkosten
NUMBER(11,2),
NUMBER(8,2),
bes_bestelopdr_korting
NUMBER(11,2),
NUMBER(8,2),
bes_bestelopdr_opmerking
VARCHAR2(320),
cnt_contract_key
@@ -241,22 +298,12 @@ CREATE_TABLE(bes_bestelopdr, 0)
NUMBER(10)
CONSTRAINT bes_r_opdr_prs_user_key1 REFERENCES prs_perslid(prs_perslid_key),
bes_bestelopdr_delivery_opmerk
VARCHAR2(320),
bes_bestelopdr_flag
NUMBER(1),
bes_bestelopdr_externnr
VARCHAR2(256),
bes_bestelopdr_externsyncdate
DATE
VARCHAR2(320)
);
ALTER TABLE cnt_contract ADD bes_bestelopdr_key
NUMBER(10)
CONSTRAINT cnt_r_bes_bestelopdr_key REFERENCES bes_bestelopdr(bes_bestelopdr_key);
ALTER TABLE ins_deel
ADD bes_bestelopdr_key
NUMBER(10)
CONSTRAINT bes_r_bes_bestelopdr_key3 REFERENCES bes_bestelopdr(bes_bestelopdr_key);
CREATE_TABLE(bes_bestelopdr_item, 0)
(
@@ -270,22 +317,20 @@ CREATE_TABLE(bes_bestelopdr_item, 0)
bes_bestelopdr_item_posnr
NUMBER(5),
bes_bestelopdr_item_aantal
NUMBER(15,3)
NUMBER(5)
CONSTRAINT bes_c_bes_bestelopdr_i_aantal CHECK(bes_bestelopdr_item_aantal IS NOT NULL),
bes_bestelopdr_item_aantalontv
NUMBER(15,3),
NUMBER(5),
bes_bestelopdr_item_aantalexp
NUMBER(15,3),
NUMBER(5),
bes_bestelopdr_item_omschrijv
VARCHAR2(320),
bes_bestelopdr_item_opmerking
VARCHAR2(100),
bes_bestelopdr_item_prijs
NUMBER(15,6),
NUMBER(12,6),
bes_bestelopdr_item_inkprijs
NUMBER(14,5),
NUMBER(8,2),
bes_bestelopdr_item_brutoprijs
NUMBER(14,5),
NUMBER(8,2),
bes_bestelopdr_item_ontvangen
DATE,
bes_bestelopdr_item_status
@@ -297,38 +342,6 @@ CREATE_TABLE(bes_bestelopdr_item, 0)
OR (bes_bestelopdr_item_aantal<0 AND bes_bestelopdr_item_aantalontv>=bes_bestelopdr_item_aantal))
);
CREATE_TABLE(bes_bestellevr, 0)
(
bes_bestellevr_key
NUMBER(10)
CONSTRAINT bes_k_bes_bestellevr_key PRIMARY KEY,
bes_bestellevr_pakbon
VARCHAR(50),
bes_bestellevr_datum
DATE
DEFAULT SYSDATE,
prs_perslid_key
NUMBER(10) REFERENCES prs_perslid(prs_perslid_key) ON DELETE SET NULL,
bes_bestellevr_opmerk
VARCHAR2(320),
bes_bestellevr_externsyncdate
DATE
);
CREATE_TABLE(bes_bestellevr_item, 0)
(
bes_bestellevr_item_key
NUMBER(10)
CONSTRAINT bes_k_bestel_lev_item_key PRIMARY KEY,
bes_bestellevr_key
NUMBER(10) REFERENCES bes_bestellevr(bes_bestellevr_key) ON DELETE CASCADE,
bes_bestelopdr_item_key
NUMBER(10)
CONSTRAINT bes_r_bes_bestelopdr_i_key2 REFERENCES bes_bestelopdr_item(bes_bestelopdr_item_key) ON DELETE CASCADE,
bes_bestellevr_item_aantal
NUMBER(15,3)
);
CREATE_TABLE(bes_bestelling_item, 0)
(
bes_bestelling_item_key
@@ -343,19 +356,19 @@ CREATE_TABLE(bes_bestelling_item, 0)
CONSTRAINT bes_c_bes_srtdeel_key1 CHECK(bes_srtdeel_key IS NOT NULL)
CONSTRAINT bes_r_bes_srtdeel_key REFERENCES bes_srtdeel(bes_srtdeel_key),
bes_bestelling_item_aantal
NUMBER(15,3)
NUMBER(5)
CONSTRAINT bes_c_bes_bestelling_i_aantal CHECK(bes_bestelling_item_aantal IS NOT NULL),
bes_bestelling_item_brutoprijs /* verkoopprijs ten tijde van bestelling */
NUMBER(14,5),
NUMBER(8,2),
bes_bestelling_item_prijs /* incl. kortingen */
NUMBER(15,6),
NUMBER(12,6),
bes_bestelling_item_inkprijs /* inkoopprijs ten tijde van bestelling */
NUMBER(15,6),
NUMBER(12,6),
bes_bestelopdr_item_key
NUMBER(10)
CONSTRAINT bes_r_bes_bestelopdr_i_key1 REFERENCES bes_bestelopdr_item(bes_bestelopdr_item_key),
bes_bestelling_item_aantalontv
NUMBER(15,3),
NUMBER(5),
bes_bestelling_item_status
NUMBER(10),
CONSTRAINT bes_c_bes_bestelling_item
@@ -390,15 +403,11 @@ CREATE_TABLE(bes_disc_params, 0)
NUMBER(10)
NOT_NULL(bes_ins_discipline_key, bes_c_ins_discipline_key)
CONSTRAINT bes_r_ins_discipine_key REFERENCES ins_tab_discipline(ins_discipline_key),
bes_disc_params_fiatflow /* Fiatterings flow 0=fiatteur->besbof 1=besbof->fiatteur */
NUMBER(1)
DEFAULT 0
CONSTRAINT bes_c_disc_params_fiatflow CHECK(bes_disc_params_fiatflow IN (0,1)),
bes_disc_params_bestellimiet
NUMBER(11,2)
NUMBER(8,2)
DEFAULT 100000,
bes_disc_params_min_bedrag
NUMBER(11,2)
NUMBER(8,2)
DEFAULT 0,
bes_disc_params_auto_order
NUMBER(1)
@@ -422,8 +431,6 @@ CREATE_TABLE(bes_disc_params, 0)
CONSTRAINT bes_c_disc_params1 CHECK(bes_disc_params_factmatchmode IN (2,3)), /* leeg mag ook */
bes_disc_params_leverdagen /* default levertijd */
NUMBER,
bes_disc_params_expire_tijd
NUMBER(5,2), /* grenstijdstip van de dag voor die freeze (bv 16.5) */
bes_disc_params_punchouturl
VARCHAR2(1024),
bes_disc_params_punch_bedr_key
@@ -493,36 +500,10 @@ CREATE_TABLE(bes_disc_params, 0)
bes_disc_params_bestellimiet5
NUMBER(11,2)
DEFAULT 1000000,
bes_disc_params_freeartikel /* Deprecated, gaat van 2017.3 via bes_disc_params_bestelmode */
bes_disc_params_freeartikel /* Vrije-artikel mode {0=ouderwets, 1=vrij artikelen, 2=met suggest voor bestaande (future)} */
NUMBER(1)
DEFAULT 0
NOT NULL,
bes_disc_params_bestelmode /* 0=ouderwets artikelselector, 1=vrij artikelen, 2=bestellijst, 3=actuele lijst */
NUMBER(1)
DEFAULT 0
NOT NULL,
bes_disc_params_fotomode /* 0=alleen bij kiezen artikel, 1=ook in bestellijst */
NUMBER(1)
DEFAULT 0
NOT NULL,
bes_disc_params_ins_mode /* bestelcatalogusinstellingen {0=Niet van toepassing, 1=Aanmaken en koppelen (Nog niet ondersteund), 2=Koppelen} */
NUMBER(1)
DEFAULT 0
NOT NULL,
bes_disc_params_fe_confirm /* Besteller bevestigt ontvangst {0=Nee (default), 1=Ja} */
NUMBER(1)
DEFAULT 0
NOT NULL,
bes_disc_params_hide_cost_fe /* Onderdruk kosten in bestellijst voor FE {0=Nee (default), 1=Ja} */
NUMBER(1)
DEFAULT 0
NOT NULL,
bes_disc_params_deliver_fe
NUMBER(1)
DEFAULT 0
NOT NULL,
bes_disc_params_autodeliverdays /* Als bes_disc_params_fe_confirm = 0 AND bes_disc_params_deliver_fe = 0, dan wordt deze bestelopdracht na bes_disc_params_autodeliverdays dagen als 'geleverd' gemarkeerd */
NUMBER(4)
NOT NULL
);
//// flexprops
@@ -536,16 +517,12 @@ CREATE_TABLE(bes_srtkenmerk, 0)
VARCHAR2(50)
, bes_srtkenmerk_upper
VARCHAR2(50)
, bes_srtkenmerk_code
VARCHAR2(60)
, bes_srtkenmerk_dimensie
VARCHAR2(10)
, bes_srtkenmerk_kenmerktype
VARCHAR2(1)
, bes_srtkenmerk_systeem -- &1=systeemkemerk, &2=tonen in bestelaanvraag overzicht, &16=tonen in bestelopdracht overzicht.
NUMBER(2) -- &4=vertrouwelijk en &8=anonimiseren blijven dan gereserveerd voor toekomstig gebruik.
DEFAULT 0
NOT NULL
, bes_srtkenmerk_systeem
NUMBER(1)
, bes_srtkenmerk_lengte
NUMBER(4)
, bes_srtkenmerk_dec
@@ -566,6 +543,9 @@ CREATE_TABLE(bes_srtkenmerk, 0)
, CONSTRAINT bes_c_bes_srtkenmerk_omschr CHECK(bes_srtkenmerk_omschrijving IS NOT NULL)
, CONSTRAINT bes_srtkenmerk_omschrijving CHECK(bes_srtkenmerk_omschrijving IS NOT NULL)
, CONSTRAINT bes_u_bes_srtkenmerk_upper UNIQUE(bes_srtkenmerk_upper, bes_srtkenmerk_verwijder)
, CONSTRAINT bes_c_bes_srtkenmerk_kenmtype CHECK(bes_srtkenmerk_kenmerktype IN ('C','N','D','R','X','L','Q','F','M','E','S', 'l'))
, CONSTRAINT bes_c_bes_srtkenmerk_systeem CHECK(bes_srtkenmerk_systeem IS NULL
OR bes_srtkenmerk_systeem = 1)
, CONSTRAINT bes_c_bes_srtkenmerk_lengte CHECK(bes_srtkenmerk_lengte >= 1
AND bes_srtkenmerk_lengte <= 4000)
, CONSTRAINT bes_c_bes_srtkenmerk_max_min CHECK(bes_srtkenmerk_nmax >= bes_srtkenmerk_nmin)
@@ -585,15 +565,11 @@ CREATE_TABLE(bes_kenmerk, 0)
, bes_kenmerk_type
VARCHAR2(1)
CONSTRAINT bes_c_ins_kenmerk_type CHECK
(bes_kenmerk_type IS NOT NULL AND bes_kenmerk_type IN ('B', 'I'))
(bes_kenmerk_type is not null and (bes_kenmerk_type IN( 'B', 'I')))
, bes_kenmerk_niveau
VARCHAR2(1)
CONSTRAINT bes_c_ins_kenmerk_niveau2 CHECK
(bes_kenmerk_niveau IS NOT NULL AND (bes_kenmerk_niveau IN( 'D', 'G', 'S')))
, bes_kenmerk_omschrijving
VARCHAR2(50) /* optionele overrule van srtkenmerk_omschrijving */
, bes_kenmerk_code
VARCHAR2(60)
(bes_kenmerk_niveau is not null and (bes_kenmerk_niveau IN( 'D', 'G', 'S')))
, bes_kenmerk_verplicht
NUMBER(1)
, bes_kenmerk_groep
@@ -601,15 +577,9 @@ CREATE_TABLE(bes_kenmerk, 0)
DEFAULT 0 NOT NULL
, bes_kenmerk_toonbaar
NUMBER(1)
, bes_kenmerk_inlijst
NUMBER(1)
DEFAULT 0 NOT NULL
, bes_kenmerk_volgnummer
NUMBER(3)
NOT NULL
, bes_kenmerk_rolcode
NUMBER(4)
DEFAULT 7 NOT NULL
, bes_kenmerk_uniek
NUMBER(1)
, bes_kenmerk_regexp
@@ -621,21 +591,16 @@ CREATE_TABLE(bes_kenmerk, 0)
DEFAULT SYSDATE
, bes_kenmerk_default
VARCHAR2(4000)
, bes_kenmerk_show_expr
VARCHAR2(4000)
, bes_kenmerk_verwijder
DATE
DEFAULT NULLDATUM
, fac_functie_key
NUMBER(10)
CONSTRAINT fac_r_bes_kenmerk_functie REFERENCES fac_functie (fac_functie_key)
, CONSTRAINT bes_c_bes_srtkenmerk_key1 CHECK(bes_srtkenmerk_key IS NOT NULL)
, CONSTRAINT bes_r_bes_srtkenmerk_key2 FOREIGN KEY(bes_srtkenmerk_key) REFERENCES bes_srtkenmerk(bes_srtkenmerk_key)
, CONSTRAINT bes_c_bes_kenmerk_niveau1 CHECK(bes_kenmerk_niveau IS NOT NULL)
, CONSTRAINT bes_c_bes_kenmerk_toonbaar CHECK(bes_kenmerk_toonbaar IS NULL
OR bes_kenmerk_toonbaar = 1)
, CONSTRAINT bes_c_bes_kenmerk_aanmaak CHECK(bes_kenmerk_aanmaak IS NOT NULL)
, CONSTRAINT bes_u_bes_kenmerk UNIQUE(bes_srtkenmerk_key, bes_srtinstallatie_key, bes_kenmerk_type, bes_kenmerk_niveau, bes_kenmerk_omschrijving, bes_kenmerk_groep, bes_kenmerk_verwijder)
, CONSTRAINT bes_u_bes_kenmerk UNIQUE(bes_srtkenmerk_key, bes_srtinstallatie_key, bes_kenmerk_type, bes_kenmerk_niveau, bes_kenmerk_groep, bes_kenmerk_verwijder)
);
CREATE_TABLE(bes_kenmerkbestell, 0)
@@ -719,9 +684,9 @@ CREATE_TABLE(bes_srtdeel_prijs,0)
NUMBER(10)
CONSTRAINT bes_r_bes_srtdeel_key1 REFERENCES bes_srtdeel(bes_srtdeel_key) ON DELETE CASCADE,
bes_srtdeel_prijs_prijs
NUMBER(14,5),
NUMBER(8,2),
bes_srtdeel_prijs_inkprijs
NUMBER(14,5),
NUMBER(8,2),
/* MB: Tot aan deze datum geldt deze prijs, daarna is deze prijs niet meer geldig (Farmers wilde dit ook). */
bes_srtdeel_prijs_vervaldatum
DATE,
@@ -730,7 +695,62 @@ CREATE_TABLE(bes_srtdeel_prijs,0)
NUMBER(1)
);
-- Prijsverloop van producten van fabriaknt
CREATE_TABLE(bes_srtprod_prijs,0)
(
bes_srtprod_prijs_key
NUMBER(10)
CONSTRAINT bes_k_bes_srtprod_prijs_key PRIMARY KEY,
bes_srtprod_key
NUMBER(10)
CONSTRAINT bes_r_bes_srtprod_key REFERENCES bes_srtprod(bes_srtprod_key),
bes_srtprod_prijs_prijs
NUMBER(8,2),
bes_srtprod_prijs_inkprijs
NUMBER(8,2),
/* MB: Tot aan deze datum geldt deze prijs, daarna is deze prijs niet meer geldig */
bes_srtprod_prijs_vervaldatum
DATE,
/* MB: Prioriteit/prijspakker instelling op producentartikelprijs-nivo, schaal van 1 (=lage prio) - 4 (=hoogste prio), mag leeg zijn (= 0: laagste prio) */
bes_srtprod_prijs_prio
NUMBER(1)
);
-- Een productsample voor een klant
CREATE_TABLE(bes_bedrijf_srtprod, 0)
(
bes_bedrijf_srtprod_key
NUMBER(10)
CONSTRAINT bes_k_bedrijf_srtprod_key PRIMARY KEY,
prs_bedrijf_key
NUMBER(10)
CONSTRAINT bes_r_bedrijf_key1 REFERENCES prs_bedrijf(prs_bedrijf_key) ON DELETE CASCADE,
bes_srtprod_key
NUMBER(10)
CONSTRAINT bes_r_srtprod_key1 REFERENCES bes_srtprod(bes_srtprod_key) ON DELETE CASCADE,
bes_bedrijf_srtprod_weging
NUMBER(12,2),
bes_bedrijf_srtprod_opmerking
VARCHAR2(320),
bes_bedrijf_srtprod_prijs
NUMBER(8,2)
);
/* MB: Voorkeursleveranciers ---------------------------------------------------------------------------*/
CREATE_TABLE(bes_bedrijf_bedrijf,0)
(
bes_bedrijf_bedrijf_key
NUMBER(10)
CONSTRAINT bes_k_bes_bedrijf_bedrijf_key PRIMARY KEY,
/* Klant: interne bedrijf */
prs_bedrijf_key_klant
NUMBER(10)
CONSTRAINT prs_r_prs_bedrijf_bedrijf_key1 REFERENCES prs_bedrijf(prs_bedrijf_key),
/* Leverancier: externe bedrijf */
prs_bedrijf_key_lev
NUMBER(10)
CONSTRAINT prs_r_prs_bedrijf_bedrijf_key2 REFERENCES prs_bedrijf(prs_bedrijf_key)
);
REGISTERONCE('$Id$')

View File

@@ -33,20 +33,13 @@ BEGIN
* Dit is vervallen. Elke trigger bemoeit zich alleen met zichzelf, en er zijn
* een tweetal functies bes.updatebestellingstatus en bes.updatebestelopdrstatus
* die desgevraagd tellen wat de stand is en daarop zonodig de parent aanpassen
* Daarvan wordt dan ook tracking bijgehouden.
* Daarvan wordt dan ook tracjking bijgehouden.
*/
CREATE_TRIGGER(bes_t_bes_bestelling_B_I)
BEFORE INSERT ON bes_bestelling
FOR EACH ROW
BEGIN
UPDATE_PRIMARY_KEY(bes_bestelling_key,bes_s_bes_bestelling_key);
END;
/
CREATE_TRIGGER(bes_t_bes_bestelling_B_IU)
BEFORE INSERT OR UPDATE ON bes_bestelling
FOR EACH ROW
BEGIN
UPDATE_PRIMARY_KEY(bes_bestelling_key,bes_s_bes_bestelling_key);
IF :old.bes_bestelling_status IS NULL
THEN
-- weet niet of dit (nog)nodig is, om de status op 2 te zetten
@@ -59,13 +52,6 @@ BEGIN
THEN
fac.clrnotifications ('BESAP1', :new.bes_bestelling_key);
END IF;
-- Beoordeling van de bestelling
IF (:new.bes_bestelling_satisfaction IS NOT NULL
AND (:old.bes_bestelling_satisfaction IS NULL OR :old.bes_bestelling_satisfaction <> :new.bes_bestelling_satisfaction))
THEN
fac.trackaction('#BESLIK', :old.bes_bestelling_key, NULL , SYSDATE, REPLACE(lcl.l('lcl_faclike_changed'), '{0}', :new.bes_bestelling_satisfaction));
END IF;
END;
/
@@ -79,8 +65,8 @@ BEGIN
END;
/
CREATE_TRIGGER(bes_t_bes_bestelling_item_B_I)
BEFORE INSERT
CREATE_TRIGGER(bes_t_bes_bestelling_item_B_IU)
BEFORE INSERT OR UPDATE
ON bes_bestelling_item
FOR EACH ROW
BEGIN
@@ -88,20 +74,12 @@ BEGIN
END;
/
CREATE_TRIGGER(bes_t_bes_bestelopdr_B_I)
BEFORE INSERT
ON bes_bestelopdr
FOR EACH ROW
BEGIN
UPDATE_PRIMARY_KEY(bes_bestelopdr_key,bes_s_bes_bestelopdr_key);
END;
/
CREATE_TRIGGER(bes_t_bes_bestelopdr_B_IU)
BEFORE INSERT OR UPDATE
ON bes_bestelopdr
FOR EACH ROW
BEGIN
UPDATE_PRIMARY_KEY(bes_bestelopdr_key,bes_s_bes_bestelopdr_key);
IF :OLD.bes_bestelopdr_datum IS NULL
THEN
:NEW.bes_bestelopdr_datum := SYSDATE;
@@ -116,8 +94,8 @@ END;
/
CREATE_TRIGGER(bes_t_bes_bestelopdr_item_B_I)
BEFORE INSERT
CREATE_TRIGGER(bes_t_bes_bestelopdr_item_B_IU)
BEFORE INSERT OR UPDATE
ON bes_bestelopdr_item
FOR EACH ROW
BEGIN
@@ -125,24 +103,6 @@ BEGIN
END;
/
CREATE_TRIGGER(bes_t_bes_bestellevr_B_I)
BEFORE INSERT
ON bes_bestellevr
FOR EACH ROW
BEGIN
UPDATE_PRIMARY_KEY(bes_bestellevr_key,bes_s_bes_bestellevr_key);
END;
/
CREATE_TRIGGER(bes_t_bes_bestellevr_item_B_I)
BEFORE INSERT
ON bes_bestellevr_item
FOR EACH ROW
BEGIN
UPDATE_PRIMARY_KEY(bes_bestellevr_item_key,bes_s_bes_bestellevr_item_key);
END;
/
CREATE_TRIGGER(bes_t_bes_bestelopdr_item_b_u)
BEFORE UPDATE
ON bes_bestelopdr_item
@@ -187,47 +147,6 @@ END;
/
AUDIT_BEGIN(bes_disc_params)
AUDIT_VALUE(bes_disc_params, bes_disc_params_bestellimiet)
AUDIT_VALUE(bes_disc_params, bes_disc_params_bestellimiet2)
AUDIT_VALUE(bes_disc_params, bes_disc_params_bestellimiet3)
AUDIT_VALUE(bes_disc_params, bes_disc_params_bestellimiet4)
AUDIT_VALUE(bes_disc_params, bes_disc_params_bestellimiet5)
AUDIT_VALUE(bes_disc_params, bes_disc_params_min_bedrag)
AUDIT_VALUE(bes_disc_params, bes_disc_params_auto_order)
AUDIT_VALUE(bes_disc_params, bes_disc_params_autoacceptrfo)
AUDIT_VALUE(bes_disc_params, bes_disc_params_herfiat)
AUDIT_VALUE(bes_disc_params, bes_disc_params_herfiatpct)
AUDIT_VALUE(bes_disc_params, bes_disc_params_herfiatmarge)
AUDIT_VALUE(bes_disc_params, bes_disc_params_factuurpct)
AUDIT_VALUE(bes_disc_params, bes_disc_params_factuurmarge)
AUDIT_VALUE(bes_disc_params, bes_disc_params_factmatchmode)
AUDIT_VALUE(bes_disc_params, bes_disc_params_factuurappr)
AUDIT_VALUE(bes_disc_params, bes_disc_params_factuurgrens)
AUDIT_VALUE(bes_disc_params, bes_disc_params_pgb)
AUDIT_VALUE(bes_disc_params, bes_disc_params_leverdagen)
AUDIT_VALUE(bes_disc_params, bes_disc_params_remoteconfirm)
AUDIT_VALUE(bes_disc_params, bes_disc_params_freeartikel)
AUDIT_VALUE(bes_disc_params, bes_disc_params_punchouturl)
AUDIT_VALUE(bes_disc_params, bes_disc_params_punch_bedr_key)
AUDIT_VALUE(bes_disc_params, bes_disc_params_logo_url)
AUDIT_VALUE(bes_disc_params, bes_disc_params_noti_dagen)
AUDIT_VALUE(bes_disc_params, bes_disc_params_noti_opdr)
AUDIT_VALUE(bes_disc_params, bes_disc_params_bonotify)
AUDIT_VALUE(bes_disc_params, bes_disc_params_retour)
AUDIT_VALUE(bes_disc_params, bes_disc_params_retour_url)
AUDIT_VALUE(bes_disc_params, bes_disc_params_levopm_url)
AUDIT_VALUE(bes_disc_params, bes_ins_discipline_key_inkoop)
AUDIT_VALUE(bes_disc_params, bes_disc_params_singlegroep)
AUDIT_VALUE(bes_disc_params, bes_disc_params_kpautorisatie)
AUDIT_VALUE(bes_disc_params, bes_disc_params_maxartikel)
AUDIT_VALUE(bes_disc_params, bes_disc_params_contract)
AUDIT_VALUE(bes_disc_params, bes_disc_params_cnt_disckey)
AUDIT_VALUE(bes_disc_params, bes_disc_params_cnt_termijn)
AUDIT_VALUE(bes_disc_params, bes_disc_params_cnt_opzegterm)
AUDIT_VALUE(bes_disc_params, bes_disc_params_for_others)
AUDIT_END()
CREATE_TRIGGER(BES_T_BES_DISC_PARAMS_B_IU)
BEFORE INSERT OR UPDATE ON bes_disc_params
FOR EACH ROW
@@ -243,21 +162,21 @@ CREATE_TRIGGER(bes_t_bes_srtkenmerk_b_iu)
BEGIN
UPDATE_PRIMARY_KEY(bes_srtkenmerk_key, bes_s_bes_srtkenmerk_key);
UPDATE_UPPER(bes_srtkenmerk_omschrijving, bes_srtkenmerk_upper,bes_srtkenmerk);
UPDATE_UPPER(bes_srtkenmerk_code, bes_srtkenmerk_code, bes_srtkenmerk);
UPDATE_AANMAAKDATUM(bes_srtkenmerk,bes_srtkenmerk_aanmaak);
IF (:new.bes_srtkenmerk_verwijder IS NOT NULL AND :old.bes_srtkenmerk_verwijder IS NULL AND
:new.bes_srtkenmerk_systeem = 1)
THEN
raise_application_error(-20000, 'bes_C_bes_SRTKENMERK_SYSTEEM');
raise_application_error(-20003, 'bes_C_bes_SRTKENMERK_SYSTEEM');
END IF;
IF :NEW.bes_srtkenmerk_kenmerktype IN ('C', 'N') AND :NEW.bes_srtkenmerk_lengte IS NULL
IF (:NEW.bes_srtkenmerk_kenmerktype = 'C' OR :NEW.bes_srtkenmerk_kenmerktype = 'N')
AND :NEW.bes_srtkenmerk_lengte IS NULL
THEN
raise_application_error(-20000, 'bes_C_bes_SRTKENMERK_LENGTE');
raise_application_error (-20000, 'bes_C_bes_SRTKENMERK_LENGTE');
END IF;
-- Numeriek mag niet te lang zijn (numeric overflow)
IF :new.bes_srtkenmerk_kenmerktype = 'N' AND :new.bes_srtkenmerk_lengte > 20
IF :new.bes_srtkenmerk_kenmerktype = 'N'
AND :new.bes_srtkenmerk_lengte > 20
THEN
:new.bes_srtkenmerk_lengte := 20;
END IF;
@@ -286,14 +205,14 @@ BEGIN
FROM bes_kenmerk
WHERE bes_srtkenmerk_key = :OLD.bes_srtkenmerk_key));
raise_application_error(-20000, 'bes_C_bes_SRTKENMERK_MIN');
raise_application_error (-20000, 'bes_C_bes_SRTKENMERK_MIN');
EXCEPTION
WHEN NO_DATA_FOUND
THEN
NULL;
WHEN TOO_MANY_ROWS
THEN
raise_application_error(-20000, 'bes_C_bes_SRTKENMERK_MIN');
raise_application_error (-20000, 'bes_C_bes_SRTKENMERK_MIN');
END;
END IF;
@@ -319,14 +238,14 @@ BEGIN
FROM bes_kenmerk
WHERE bes_srtkenmerk_key = :OLD.bes_srtkenmerk_key));
raise_application_error(-20000, 'bes_C_bes_SRTKENMERK_MAX');
raise_application_error (-20000, 'bes_C_bes_SRTKENMERK_MAX');
EXCEPTION
WHEN NO_DATA_FOUND
THEN
NULL;
WHEN TOO_MANY_ROWS
THEN
raise_application_error(-20000, 'bes_C_bes_SRTKENMERK_MAX');
raise_application_error (-20000, 'bes_C_bes_SRTKENMERK_MAX');
END;
END IF;
END IF;
@@ -342,7 +261,6 @@ BEGIN
-- FSN#13902: we tolereren het achteraf verplicht maken
UPDATE_PRIMARY_KEY(bes_kenmerk_key, bes_s_bes_kenmerk_key);
UPDATE_AANMAAKDATUM(bes_kenmerk, bes_kenmerk_aanmaak);
UPDATE_UPPER(bes_kenmerk_code, bes_kenmerk_code, bes_kenmerk);
END;
/
@@ -387,7 +305,7 @@ BEGIN
--
IF kenmerkverplicht IS NOT NULL AND kenmerkbestellingwaarde IS NULL
THEN
APPLICATION_ERROR_GOTO(-20004, 'bes_m240,' || srtkenmerkomschr);
raise_application_error (-20004, 'bes_m240,' || srtkenmerkomschr);
--
-- Kijk welk KenmerkType gebruikt wordt.
-- Aan de hand daarvan moet een controle uitgevoerd worden.
@@ -398,7 +316,7 @@ BEGIN
-- Controleer of de lengte te groot of goed is.
IF LENGTH (kenmerkbestellingwaarde) > srtkenmerklengte
THEN
APPLICATION_ERROR_GOTO(-20004, 'bes_m241,' || srtkenmerkomschr || ',' || TO_CHAR (srtkenmerklengte));
raise_application_error (-20004, 'bes_m241,' || srtkenmerkomschr || ',' || TO_CHAR (srtkenmerklengte));
END IF;
ELSIF srtkenmerktype = 'N'
THEN
@@ -420,13 +338,13 @@ BEGIN
formatmask := REPLACE (formatmask, '9', '#');
formatmask := REPLACE (formatmask, '0', '#');
formatmask := REPLACE (formatmask, 'D', '.');
APPLICATION_ERROR_GOTO(-20004, 'bes_m242,' || srtkenmerkomschr || ',' || formatmask);
raise_application_error (-20004, 'bes_m242,' || srtkenmerkomschr || ',' || formatmask);
END;
-- Controleer of de waarde binnen NMin en NMax ligt.
IF (srtkenmerknmin IS NOT NULL AND numberwaarde < srtkenmerknmin)
OR (srtkenmerknmax IS NOT NULL AND numberwaarde > srtkenmerknmax)
THEN
APPLICATION_ERROR_GOTO(-20004,
raise_application_error (-20004,
'bes_m243,'
|| srtkenmerkomschr
|| ','
@@ -443,7 +361,7 @@ BEGIN
formatmask := REPLACE (formatmask, '9', '#');
formatmask := REPLACE (formatmask, '0', '#');
formatmask := REPLACE (formatmask, 'D', '.');
APPLICATION_ERROR_GOTO(-20004, 'bes_m242,' || srtkenmerkomschr || ',' || formatmask);
raise_application_error (-20004, 'bes_m242,' || srtkenmerkomschr || ',' || formatmask);
END IF;
END IF;
@@ -502,7 +420,7 @@ BEGIN
--
IF kenmerkverplicht IS NOT NULL AND kenmerkbestelitemwaarde IS NULL
THEN
APPLICATION_ERROR_GOTO(-20004, 'bes_m240,' || srtkenmerkomschr);
raise_application_error (-20004, 'bes_m240,' || srtkenmerkomschr);
--
-- Kijk welk KenmerkType gebruikt wordt.
-- Aan de hand daarvan moet een controle uitgevoerd worden.
@@ -513,7 +431,7 @@ BEGIN
-- Controleer of de lengte te groot of goed is.
IF LENGTH (kenmerkbestelitemwaarde) > srtkenmerklengte
THEN
APPLICATION_ERROR_GOTO(-20004, 'bes_m241,' || srtkenmerkomschr || ',' || TO_CHAR (srtkenmerklengte));
raise_application_error (-20004, 'bes_m241,' || srtkenmerkomschr || ',' || TO_CHAR (srtkenmerklengte));
END IF;
ELSIF srtkenmerktype = 'N'
THEN
@@ -535,13 +453,13 @@ BEGIN
formatmask := REPLACE (formatmask, '9', '#');
formatmask := REPLACE (formatmask, '0', '#');
formatmask := REPLACE (formatmask, 'D', '.');
APPLICATION_ERROR_GOTO(-20004, 'bes_m242,' || srtkenmerkomschr || ',' || formatmask);
raise_application_error (-20004, 'bes_m242,' || srtkenmerkomschr || ',' || formatmask);
END;
-- Controleer of de waarde binnen NMin en NMax ligt.
IF (srtkenmerknmin IS NOT NULL AND numberwaarde < srtkenmerknmin)
OR (srtkenmerknmax IS NOT NULL AND numberwaarde > srtkenmerknmax)
THEN
APPLICATION_ERROR_GOTO(-20004,
raise_application_error (-20004,
'bes_m243,'
|| srtkenmerkomschr
|| ','
@@ -558,7 +476,7 @@ BEGIN
formatmask := REPLACE (formatmask, '9', '#');
formatmask := REPLACE (formatmask, '0', '#');
formatmask := REPLACE (formatmask, 'D', '.');
APPLICATION_ERROR_GOTO(-20004, 'bes_m242,' || srtkenmerkomschr || ',' || formatmask);
raise_application_error (-20004, 'bes_m242,' || srtkenmerkomschr || ',' || formatmask);
END IF;
END IF;
@@ -600,6 +518,22 @@ BEGIN
END;
/
CREATE_TRIGGER(bes_t_bes_srtprod_B_IU)
BEFORE INSERT OR UPDATE ON bes_srtprod
FOR EACH ROW
BEGIN
UPDATE_PRIMARY_KEY(bes_srtprod_key, bes_s_bes_srtprod_key);
END;
/
CREATE_TRIGGER(bes_t_bes_grootheid_B_IU)
BEFORE INSERT OR UPDATE ON bes_grootheid
FOR EACH ROW
BEGIN
UPDATE_PRIMARY_KEY(bes_grootheid_key, bes_s_bes_grootheid_key);
END;
/
CREATE_TRIGGER(bes_t_bes_srtdeel_prijs_B_IU)
BEFORE INSERT OR UPDATE ON bes_srtdeel_prijs
FOR EACH ROW
@@ -608,6 +542,30 @@ BEGIN
END;
/
CREATE_TRIGGER(bes_t_bes_srtprod_prijs_B_IU)
BEFORE INSERT OR UPDATE ON bes_srtprod_prijs
FOR EACH ROW
BEGIN
UPDATE_PRIMARY_KEY(bes_srtprod_prijs_key, bes_s_bes_srtprod_prijs_key);
END;
/
CREATE_TRIGGER(bes_t_bes_bedrijf_srtprod_BIU)
BEFORE INSERT OR UPDATE ON bes_bedrijf_srtprod
FOR EACH ROW
BEGIN
UPDATE_PRIMARY_KEY(bes_bedrijf_srtprod_key, bes_s_bes_bedrijf_srtprod_key);
END;
/
CREATE_TRIGGER(bes_t_bes_bedrijf_bedrijf_B_IU)
BEFORE INSERT OR UPDATE ON bes_bedrijf_bedrijf
FOR EACH ROW
BEGIN
UPDATE_PRIMARY_KEY(bes_bedrijf_bedrijf_key, bes_s_bes_bedrijf_bedrijf_key);
END;
/
REGISTERRUN('$Id$')
#endif // BES

View File

@@ -27,21 +27,235 @@ AS
*/
CREATE_VIEW(bes_bestellingstatuses, 0)
AS
SELECT fac_code2label_code bes_bestellingstatuses_key,
COALESCE (fac_locale_xsl_cust, fac_locale_xsl_tekst) bes_bestellingstatuses_omschr
FROM fac_locale_xsl fl, fac_code2label fs
WHERE fl.fac_locale_xsl_label = fac_code2label_label
AND fac_code2label_domein = 'bestelling'
AND fac_locale_xsl_lang = lcl.getuserlanguage ();
SELECT fac_code2label_code bes_bestellingstatuses_key,
COALESCE (fac_locale_xsl_cust, fac_locale_xsl_tekst) bes_bestellingstatuses_omschr
FROM fac_locale_xsl fl, fac_code2label fs
WHERE fl.fac_locale_xsl_label = fac_code2label_label
AND fac_code2label_domein = 'bestelling'
AND fac_locale_xsl_lang = lcl.getuserlanguage ();
CREATE_VIEW(bes_bestelopdrstatuses, 0)
AS
SELECT fac_code2label_code bes_bestelopdrstatuses_key,
COALESCE (fac_locale_xsl_cust, fac_locale_xsl_tekst) bes_bestelopdrstatuses_omschr
FROM fac_locale_xsl fl, fac_code2label fs
WHERE fl.fac_locale_xsl_label = fac_code2label_label
AND fac_code2label_domein = 'bestelopdr'
AND fac_locale_xsl_lang = lcl.getuserlanguage ();
SELECT fac_code2label_code bes_bestelopdrstatuses_key,
COALESCE (fac_locale_xsl_cust, fac_locale_xsl_tekst) bes_bestelopdrstatuses_omschr
FROM fac_locale_xsl fl, fac_code2label fs
WHERE fl.fac_locale_xsl_label = fac_code2label_label
AND fac_code2label_domein = 'bestelopdr'
AND fac_locale_xsl_lang = lcl.getuserlanguage ();
CREATE_VIEW(bes_v_qvw_algemeen, 0) (bes_bestelling_key,
bestelaanvraagnr,
besteldatum,
besteller,
invoerder,
kostensoortgroep,
kostensoort,
kpn,
kpn_omschrijving,
prs_bedrijf_key,
afdeling_code,
afdeling_omschrijving,
alg_locatie_key,
locatie_code,
district_omschijving,
afleveradres,
mandaat,
personeelsnr,
werkplek,
ins_discipline_key,
catalogus,
bes_srtgroep_key,
groep,
afleverdatum,
doorlooptijd_werkdgn,
sla_tijd,
productcode,
prijs,
inkoopprijs,
status,
gefiatteerddoor,
bestelopdrachtnummer,
aantal,
itemprijs,
iteminkoopprijs,
bes_srtdeel_key,
productomschrijving,
itemposnr
)
AS
SELECT bes_bestelling_key, bestelaanvraagnr, besteldatum, besteller, invoerder, kostensoortgroep,kostensoort, kpn, kpn_omschrijving, prs_bedrijf_key,
afdeling_code, afdeling_omschrijving, alg_locatie_key, locatie_code, district_omschijving, afleveradres, mandaat,
personeelsnr, werkplek, ins_discipline_key, catalogus, bes_srtgroep_key, groep, afleverdatum, doorlooptijd_werkdgn, sla_tijd,
productcode, prijs, inkoopprijs, status, gefiatteerddoor, bestelopdrachtnummer, aantal, itemprijs, iteminkoopprijs, bes_srtdeel_key, productomschrijving, itemposnr
FROM (SELECT b.bes_bestelling_key bes_bestelling_key, 'A-' || b.bes_bestelling_key bestelaanvraagnr,
TRUNC(b.bes_bestelling_datum) besteldatum,
(SELECT prs_perslid_naam_full
FROM prs_v_perslid_fullnames_all pf
WHERE pf.prs_perslid_key = p.prs_perslid_key) besteller,
(SELECT prs_perslid_naam_full
FROM prs_v_perslid_fullnames_all pf
WHERE pf.prs_perslid_key = COALESCE(fac.gettrackinguserkey ('BESNEW', b.bes_bestelling_key), fac.gettrackinguserkey ('BESAP2', b.bes_bestelling_key))) invoerder,
(SELECT ksg.prs_kostensoortgrp_oms
FROM prs_kostensoortgrp ksg,
prs_kostensoort ks
WHERE ksg.prs_kostensoortgrp_key = ks.prs_kostensoortgrp_key
AND ks.prs_kostensoort_key =
(SELECT MAX(COALESCE(bsg.prs_kostensoort_key, disc.prs_kostensoort_key))
FROM bes_discipline disc,
bes_srtgroep bsg
WHERE disc.ins_discipline_key = d.ins_discipline_key)) kostensoortgroep,
(SELECT ks.prs_kostensoort_oms
FROM prs_kostensoort ks
WHERE ks.prs_kostensoort_key =
(SELECT MAX(COALESCE(bsg.prs_kostensoort_key, disc.prs_kostensoort_key))
FROM bes_discipline disc,
bes_srtgroep bsg
WHERE disc.ins_discipline_key = bsg.ins_discipline_key
AND disc.ins_discipline_key = d.ins_discipline_key)) kostensoort,
k.prs_kostenplaats_nr kpn,
k.prs_kostenplaats_omschrijving kpn_omschrijving,
(SELECT prs_bedrijf_key
FROM prs_v_afdeling pva
WHERE pva.prs_afdeling_key = a.prs_afdeling_key) prs_bedrijf_key,
a.prs_afdeling_naam afdeling_code,
a.prs_afdeling_omschrijving afdeling_omschrijving,
ma.alg_locatie_key alg_locatie_key,
(SELECT alg_locatie_code
FROM alg_locatie l
WHERE l.alg_locatie_key = ma.alg_locatie_key) locatie_code,
(SELECT alg_district_omschrijving
FROM alg_locatie l, alg_district d
WHERE l.alg_district_key = d.alg_district_key
AND l.alg_locatie_key = ma.alg_locatie_key) district_omschijving,
ma.mld_adres_naam afleveradres, NVL ((SELECT pr.fac_profiel_limiet
FROM fac_profiel pr
WHERE p.fac_profiel_key = pr.fac_profiel_key), 0) mandaat,
prs_perslid_nr personeelsnr, wp2.prs_werkplek_aanduiding werkplek,
d.ins_discipline_key ins_discipline_key,
d.ins_discipline_omschrijving catalogus,
sg.bes_srtgroep_key bes_srtgroep_key,
sg.bes_srtgroep_omschrijving groep,
TRUNC(bes_bestelling_leverdatum) afleverdatum,
fac.count_work_days (b.bes_bestelling_datum, NVL (fac.gettrackingdate ('BESOTV', b.bes_bestelling_key), SYSDATE)) doorlooptijd_werkdgn,
NVL ((SELECT bdp.bes_disc_params_leverdagen
FROM bes_disc_params bdp
WHERE d.ins_discipline_key = bdp.bes_ins_discipline_key), 0) sla_tijd,
sd.bes_srtdeel_nr productcode,
bi.bes_bestelling_item_prijs * bi.bes_bestelling_item_aantal prijs,
NVL(bes.getsrtdeelinkprijs(sd.bes_srtdeel_key, bes_bestelling_datum), bi.bes_bestelling_item_prijs) * bi.bes_bestelling_item_aantal inkoopprijs,
(SELECT bes_bestellingstatuses_omschr
FROM bes_bestellingstatuses bs
WHERE bs.bes_bestellingstatuses_key = b.bes_bestelling_status) status,
(SELECT prs_perslid_naam_full
FROM prs_v_perslid_fullnames_all pf
WHERE pf.prs_perslid_key = b.bes_bestelling_fiat_user) gefiatteerddoor,
'O-' || bo.bes_bestelopdr_id bestelopdrachtnummer, bi.bes_bestelling_item_aantal aantal,
bi.bes_bestelling_item_prijs itemprijs,
NVL(bes.getsrtdeelinkprijs(sd.bes_srtdeel_key, bes_bestelling_datum), bi.bes_bestelling_item_prijs) iteminkoopprijs,
sd.bes_srtdeel_key bes_srtdeel_key,
sd.bes_srtdeel_omschrijving productomschrijving,
boi.bes_bestelopdr_item_posnr itemposnr
FROM bes_bestelling b,
prs_perslid p,
prs_kostenplaats k,
prs_afdeling a,
mld_adres ma,
(SELECT pw.prs_perslid_key,
MIN (prs_werkplek_aanduiding) || DECODE (COUNT (*), 1, '', '...') prs_werkplek_aanduiding
FROM prs_v_werkplek_gegevens wp, prs_perslidwerkplek pw
WHERE wp.prs_werkplek_key = pw.prs_werkplek_key
GROUP BY pw.prs_perslid_key) wp2,
bes_bestelling_item bi,
bes_bestelopdr_item boi,
bes_bestelopdr bo,
bes_srtdeel sd,
bes_srtgroep sg,
ins_tab_discipline d
WHERE b.prs_perslid_key = p.prs_perslid_key
AND b.prs_kostenplaats_key = k.prs_kostenplaats_key
AND p.prs_afdeling_key = a.prs_afdeling_key
AND b.mld_adres_key_lev = ma.mld_adres_key
AND wp2.prs_perslid_key(+) = p.prs_perslid_key
AND b.bes_bestelling_key = bi.bes_bestelling_key
AND bi.bes_bestelopdr_item_key = boi.bes_bestelopdr_item_key(+)
AND boi.bes_bestelopdr_key = bo.bes_bestelopdr_key(+)
AND bi.bes_srtdeel_key = sd.bes_srtdeel_key
AND sd.bes_srtgroep_key = sg.bes_srtgroep_key
AND sg.ins_discipline_key = d.ins_discipline_key);
CREATE_VIEW(bes_v_qvw_locale, 0)
(fac_locale_kolomkeyval, fac_locale_kolomnaam, fac_locale_tekst_nl, fac_locale_tekst_en, fac_locale_tekst_de, fac_locale_tekst_fr)
AS
WITH bqa AS (SELECT DISTINCT ins_discipline_key,
catalogus,
bes_srtgroep_key,
groep,
bes_srtdeel_key,
productomschrijving
FROM bes_v_qvw_algemeen)
SELECT DISTINCT bqa.ins_discipline_key,
'INS_DISCIPLINE_OMSCHRIJVING',
bqa.catalogus,
COALESCE (en.fac_locale_tekst, bqa.catalogus),
COALESCE (de.fac_locale_tekst, bqa.catalogus),
COALESCE (fr.fac_locale_tekst, bqa.catalogus)
FROM fac_locale en,
fac_locale de,
fac_locale fr,
bqa
WHERE bqa.ins_discipline_key = en.fac_locale_kolomkeyval(+)
AND en.fac_locale_kolomnaam(+) = 'INS_DISCIPLINE_OMSCHRIJVING'
AND en.fac_locale_lang(+) = 'EN'
AND bqa.ins_discipline_key = de.fac_locale_kolomkeyval(+)
AND de.fac_locale_kolomnaam(+) = 'INS_DISCIPLINE_OMSCHRIJVING'
AND de.fac_locale_lang(+) = 'DE'
AND bqa.ins_discipline_key = fr.fac_locale_kolomkeyval(+)
AND fr.fac_locale_kolomnaam(+) = 'INS_DISCIPLINE_OMSCHRIJVING'
AND fr.fac_locale_lang(+) = 'FR'
UNION ALL
SELECT DISTINCT bqa.bes_srtgroep_key,
'BES_SRTGROEP_OMSCHRIJVING',
bqa.groep,
COALESCE (en.fac_locale_tekst, bqa.groep),
COALESCE (de.fac_locale_tekst, bqa.groep),
COALESCE (fr.fac_locale_tekst, bqa.groep)
FROM fac_locale en,
fac_locale de,
fac_locale fr,
bqa
WHERE bqa.bes_srtgroep_key = en.fac_locale_kolomkeyval(+)
AND en.fac_locale_kolomnaam(+) = 'BES_SRTGROEP_OMSCHRIJVING'
AND en.fac_locale_lang(+) = 'EN'
AND bqa.bes_srtgroep_key = de.fac_locale_kolomkeyval(+)
AND de.fac_locale_kolomnaam(+) = 'BES_SRTGROEP_OMSCHRIJVING'
AND de.fac_locale_lang(+) = 'DE'
AND bqa.bes_srtgroep_key = fr.fac_locale_kolomkeyval(+)
AND fr.fac_locale_kolomnaam(+) = 'BES_SRTGROEP_OMSCHRIJVING'
AND fr.fac_locale_lang(+) = 'FR'
UNION ALL
SELECT DISTINCT bqa.bes_srtdeel_key,
'BES_SRTDEEL_OMSCHRIJVING',
bqa.productomschrijving,
COALESCE (en.fac_locale_tekst, bqa.productomschrijving),
COALESCE (de.fac_locale_tekst, bqa.productomschrijving),
COALESCE (fr.fac_locale_tekst, bqa.productomschrijving)
FROM fac_locale en,
fac_locale de,
fac_locale fr,
bqa
WHERE bqa.bes_srtdeel_key = en.fac_locale_kolomkeyval(+)
AND en.fac_locale_kolomnaam(+) = 'BES_SRTDEEL_OMSCHRIJVING'
AND en.fac_locale_lang(+) = 'EN'
AND bqa.bes_srtdeel_key = de.fac_locale_kolomkeyval(+)
AND de.fac_locale_kolomnaam(+) = 'BES_SRTDEEL_OMSCHRIJVING'
AND de.fac_locale_lang(+) = 'DE'
AND bqa.bes_srtdeel_key = fr.fac_locale_kolomkeyval(+)
AND fr.fac_locale_kolomnaam(+) = 'BES_SRTDEEL_OMSCHRIJVING'
AND fr.fac_locale_lang(+) = 'FR';
-- Vooralsnog placeholders, moeten aangepast worden
CREATE_VIEW(bes_v_api_bestellingen, 1) AS SELECT * from bes_bestelling;
CREATE_VIEW(bes_v_api_bestelopdrachten, 1) AS SELECT * from bes_bestelopdr;
/* ROOT VIEWS for User defined Reports (UDR) */
CREATE_VIEW(bes_v_udr_bestelling, 1)
@@ -61,10 +275,8 @@ CREATE_VIEW(bes_v_udr_bestelling, 1)
afdeling_omschrijving,
fclt_3d_locatie_key,
locatie_code,
regio_omschrijving,
district_omschrijving,
afleveradres,
afleverplaats,
mandaat,
fclt_3d_discipline_key,
catalogus,
@@ -100,10 +312,8 @@ AS
afdeling_omschrijving,
alg_locatie_key,
locatie_code,
regio_omschrijving,
district_omschijving,
afleveradres,
afleverplaats,
mandaat,
ins_discipline_key,
catalogus,
@@ -167,19 +377,12 @@ AS
FROM alg_locatie l
WHERE l.alg_locatie_key = ma.alg_locatie_key)
locatie_code,
(SELECT alg_regio_omschrijving
FROM alg_locatie l, alg_district d, alg_regio r
WHERE r.alg_regio_key = d.alg_regio_key
AND l.alg_district_key = d.alg_district_key
AND l.alg_locatie_key = ma.alg_locatie_key)
regio_omschrijving,
(SELECT alg_district_omschrijving
FROM alg_locatie l, alg_district d
WHERE l.alg_district_key = d.alg_district_key
AND l.alg_locatie_key = ma.alg_locatie_key)
district_omschijving,
ma.mld_adres_naam afleveradres,
b.bes_bestelling_plaats afleverplaats,
NVL ( (SELECT pr.fac_profiel_limiet
FROM fac_profiel pr
WHERE p.fac_profiel_key = pr.fac_profiel_key), 0)
@@ -229,16 +432,16 @@ AS
bes_srtdeel sd,
bes_srtgroep sg,
ins_tab_discipline d
WHERE b.prs_perslid_key = p.prs_perslid_key
AND b.prs_kostenplaats_key = k.prs_kostenplaats_key(+)
AND p.prs_afdeling_key = a.prs_afdeling_key
AND b.mld_adres_key_lev = ma.mld_adres_key
AND b.bes_bestelling_key = bi.bes_bestelling_key
AND bi.bes_bestelopdr_item_key = boi.bes_bestelopdr_item_key(+)
AND boi.bes_bestelopdr_key = bo.bes_bestelopdr_key(+)
AND bi.bes_srtdeel_key = sd.bes_srtdeel_key
AND sd.bes_srtgroep_key = sg.bes_srtgroep_key
AND sg.ins_discipline_key = d.ins_discipline_key);
WHERE b.prs_perslid_key = p.prs_perslid_key
AND b.prs_kostenplaats_key = k.prs_kostenplaats_key
AND p.prs_afdeling_key = a.prs_afdeling_key
AND b.mld_adres_key_lev = ma.mld_adres_key
AND b.bes_bestelling_key = bi.bes_bestelling_key
AND bi.bes_bestelopdr_item_key = boi.bes_bestelopdr_item_key(+)
AND boi.bes_bestelopdr_key = bo.bes_bestelopdr_key(+)
AND bi.bes_srtdeel_key = sd.bes_srtdeel_key
AND sd.bes_srtgroep_key = sg.bes_srtgroep_key
AND sg.ins_discipline_key = d.ins_discipline_key);
CREATE_VIEW(bes_v_allsrtinstallatie, 0)
(
@@ -249,10 +452,7 @@ CREATE_VIEW(bes_v_allsrtinstallatie, 0)
SRTDEEL_OMS,
BES_DISCIPLINE_KEY,
BES_SRTGROEP_KEY,
BES_SRTDEEL_KEY,
BES_DISCIPLINE_VERWIJDER,
BES_SRTGROEP_VERWIJDER,
BES_SRTDEEL_VERWIJDER
BES_SRTDEEL_KEY
)
AS
SELECT 'D',
@@ -262,23 +462,17 @@ AS
NULL srtdeel_oms,
bes_ID.ins_discipline_key,
NULL bes_srtgroep_key,
NULL bes_srtdeel_key,
bes_ID.ins_discipline_verwijder bes_discipline_verwijder,
NULL bes_srtgroep_verwijder,
NULL bes_srtdeel_verwijder
NULL bes_srtdeel_key
FROM bes_discipline bes_ID
UNION
SELECT 'G',
bes_SG.bes_srtgroep_key,
bes_ID.ins_discipline_omschrijving,
bes_SG.bes_srtgroep_omschrijving,
NULL srtdeel_oms,
NULL,
bes_ID.ins_discipline_key,
bes_SG.bes_srtgroep_key,
NULL bes_srtdeel_key,
bes_ID.ins_discipline_verwijder bes_discipline_verwijder,
bes_SG.bes_srtgroep_verwijder,
NULL bes_srtdeel_verwijder
NULL
FROM bes_discipline bes_ID, bes_srtgroep bes_SG
WHERE bes_ID.ins_discipline_key = bes_SG.ins_discipline_key
UNION
@@ -289,180 +483,11 @@ AS
bes_SD.bes_srtdeel_omschrijving,
bes_ID.ins_discipline_key,
bes_SG.bes_srtgroep_key,
bes_SD.bes_srtdeel_key,
bes_ID.ins_discipline_verwijder bes_discipline_verwijder,
bes_SG.bes_srtgroep_verwijder,
bes_SD.bes_srtdeel_verwijder
bes_SD.bes_srtdeel_key
FROM bes_discipline bes_ID, bes_srtgroep bes_SG, bes_srtdeel bes_SD
WHERE bes_SG.bes_srtgroep_key = bes_SD.bes_srtgroep_key
AND bes_ID.ins_discipline_key = bes_SG.ins_discipline_key;
CREATE_VIEW(bes_v_rap_sync_catalogus, 0)
(
CATALOGUS_NAAM,
LEVERANCIER,
CAT_DATUM,
ARTIKELNR,
GROEP,
OMSCHRIJVING,
PRIJS,
EENHEID,
PICTURE,
ORDERAANTAL,
TAX,
DUEDATE,
INKOOPPRIJS,
MINIMUM,
STAFFELTABEL,
WIJZIGDAGEN,
ANNULEERDAGEN,
OPMERKING
)
AS
SELECT bd.ins_discipline_omschrijving,
b.prs_bedrijf_naam,
NULL,
sd.bes_srtdeel_nr,
sg.bes_srtgroep_omschrijving,
sd.bes_srtdeel_omschrijving,
REPLACE (TO_CHAR (bes.getsrtdeelprijs (sd.bes_srtdeel_key, NULL)), ',', '.'),
sd.bes_srtdeel_eenheid,
sd.bes_srtdeel_image,
TO_CHAR (sd.bes_srtdeel_veelvoud),
TO_CHAR (sd.bes_srtdeel_btw),
TO_CHAR (sd.bes_srtdeel_vervaldatum, 'yyyymmdd'),
REPLACE (TO_CHAR (bes.getsrtdeelinkprijs (sd.bes_srtdeel_key, NULL)), ',', '.'),
TO_CHAR (sd.bes_srtdeel_minimum),
bs.bes_staffeltabel_naam,
TO_CHAR (sd.bes_srtdeel_wijzigdagen),
TO_CHAR (sd.bes_srtdeel_annuleerdagen),
sd.bes_srtdeel_opmerking
FROM bes_discipline bd,
bes_srtgroep sg,
bes_srtdeel sd,
prs_bedrijf b,
bes_staffeltabel bs
WHERE bd.ins_discipline_module = 'BES'
AND bd.ins_discipline_verwijder IS NULL
AND bd.ins_discipline_key = sg.ins_discipline_key
AND sg.bes_srtgroep_verwijder IS NULL
AND sg.bes_srtgroep_key = sd.bes_srtgroep_key
AND sd.bes_srtdeel_verwijder IS NULL
AND sd.prs_bedrijf_key = b.prs_bedrijf_key
AND sd.bes_staffeltabel_key = bs.bes_staffeltabel_key;
CREATE_VIEW(bes_v_average_current_stock, 0)
AS
-- Gemiddelde voorraad en bestellingen voor "Actuele lijst" artikelen.
SELECT sd.bes_srtdeel_key,
sd.bes_srtdeel_volgnr volgnummer,
sd.bes_srtdeel_nr artikelnummer,
sd.bes_srtdeel_omschrijving artikel,
sd.bes_srtdeel_notitie notitie,
dp.bes_ins_discipline_key,
bd.ins_discipline_omschrijving discipline,
g.bes_srtgroep_key,
g.bes_srtgroep_omschrijving groep,
sd.bes_srtdeel_voorraadmax voorraadmax,
sd.bes_srtdeel_voorraadmin voorraadmin,
sd.bes_srtdeel_maxbestel maxbestel,
sd.bes_srtdeel_minimum bestelmin,
sd.bes_srtdeel_maximum bestelmax,
sd.bes_srtdeel_veelvoud bestelveelvoud,
sd.bes_srtdeel_eenheid eenheid,
sd.bes_srtdeel_vervaldatum vervaldatum,
(SELECT COUNT(*)
FROM bes_kenmerk bk,
bes_srtkenmerk sk,
bes_srtdeel sd2,
bes_srtgroep sg
WHERE sd2.bes_srtgroep_key = sg.bes_srtgroep_key
AND (bk.bes_srtinstallatie_key = sg.ins_discipline_key
AND bk.bes_kenmerk_niveau LIKE 'D'
OR bk.bes_srtinstallatie_key = sg.bes_srtgroep_key
AND bk.bes_kenmerk_niveau LIKE 'G'
OR bk.bes_srtinstallatie_key = sd2.bes_srtdeel_key
AND bk.bes_kenmerk_niveau LIKE 'S')
AND bk.bes_kenmerk_type = 'I'
AND bk.bes_srtkenmerk_key = sk.bes_srtkenmerk_key
AND bk.bes_kenmerk_verwijder IS NULL
AND sk.bes_srtkenmerk_verwijder IS NULL
AND sd2.bes_srtdeel_key = sd.bes_srtdeel_key) aantal_kenmerken,
SUM(CASE WHEN b.bes_bestelling_status = 6 THEN 0 ELSE bi.bes_bestelling_item_aantal END) - SUM(CASE WHEN b.bes_bestelling_status = 6 THEN 0 ELSE COALESCE(bi.bes_bestelling_item_aantalontv, 0) END) in_bestelling,
SUM(bi.bes_bestelling_item_aantal) besteld,
SUM(COALESCE(bi.bes_bestelling_item_aantalontv, 0)) geleverd,
COALESCE(bes.getsrtdeelprijs(sd.bes_srtdeel_key, NULL), 0) prijs,
MIN(b.bes_bestelling_datum) eerste_bestelling,
MAX(b.bes_bestelling_datum) laatste_bestelling,
ROUND(MAX(b.bes_bestelling_datum) - MIN(b.bes_bestelling_datum)) historie_dagen,
COUNT(sd.bes_srtdeel_key) aantal_bestellingen,
ROUND((MAX(b.bes_bestelling_datum) - MIN(b.bes_bestelling_datum)) / COUNT(sd.bes_srtdeel_key)) bestel_periode_dagen,
CASE
WHEN MAX(b.bes_bestelling_datum) - MIN(b.bes_bestelling_datum) = 0
THEN NULL
ELSE ROUND((COUNT(sd.bes_srtdeel_key) / ((MAX(b.bes_bestelling_datum) - MIN(b.bes_bestelling_datum)) / 365)) / 12, 1)
END bestellingen_per_maand,
CASE
WHEN MAX(b.bes_bestelling_datum) - MIN(b.bes_bestelling_datum) = 0
THEN NULL
ELSE ROUND((((MAX(b.bes_bestelling_datum) - MIN(b.bes_bestelling_datum)) / 365) * SUM(bi.bes_bestelling_item_aantal)) / 12, 1)
END artikelen_per_maand,
CASE
WHEN MAX(b.bes_bestelling_datum) - MIN(b.bes_bestelling_datum) = 0
THEN NULL
ELSE ROUND((((MAX(b.bes_bestelling_datum) - MIN(b.bes_bestelling_datum)) / 365) * SUM(bi.bes_bestelling_item_aantal)) * COALESCE(bes.getsrtdeelprijs(sd.bes_srtdeel_key, NULL), 0) / 12)
END totaal_per_maand,
CASE
WHEN MAX(b.bes_bestelling_datum) - MIN(b.bes_bestelling_datum) = 0
THEN NULL
ELSE ROUND(COUNT(sd.bes_srtdeel_key) / ((MAX(b.bes_bestelling_datum) - MIN(b.bes_bestelling_datum)) / 365), 1)
END bestellingen_per_jaar,
CASE
WHEN MAX(b.bes_bestelling_datum) - MIN(b.bes_bestelling_datum) = 0
THEN NULL
ELSE ROUND(((MAX(b.bes_bestelling_datum) - MIN(b.bes_bestelling_datum)) / 365) * SUM(bi.bes_bestelling_item_aantal))
END artikelen_per_jaar,
CASE
WHEN MAX(b.bes_bestelling_datum) - MIN(b.bes_bestelling_datum) = 0
THEN NULL
ELSE ROUND(((MAX(b.bes_bestelling_datum) - MIN(b.bes_bestelling_datum)) / 365) * SUM(bi.bes_bestelling_item_aantal)) * COALESCE(bes.getsrtdeelprijs(sd.bes_srtdeel_key, NULL), 0)
END totaal_per_jaar
FROM bes_discipline bd,
bes_v_aanwezigsrtgroep g,
bes_v_aanwezigsrtdeel sd,
bes_disc_params dp,
bes_bestelling b,
bes_bestelling_item bi
WHERE sd.bes_srtgroep_key = g.bes_srtgroep_key
AND dp.bes_disc_params_bestelmode = 3
AND g.ins_discipline_key = bd.ins_discipline_key
AND bd.ins_discipline_key = dp.bes_ins_discipline_key
AND sd.bes_srtdeel_key = bi.bes_srtdeel_key
AND bi.bes_bestelling_key = b.bes_bestelling_key
AND b.bes_bestelling_status IN (2, 3, 4, 5, 6)
AND (sd.bes_srtdeel_vervaldatum IS NULL
OR sd.bes_srtdeel_vervaldatum > SYSDATE)
GROUP BY sd.bes_srtdeel_volgnr,
sd.bes_srtdeel_nr,
sd.bes_srtdeel_key,
sd.bes_srtdeel_omschrijving,
sd.bes_srtdeel_notitie,
dp.bes_ins_discipline_key,
bd.ins_discipline_omschrijving,
g.bes_srtgroep_key,
g.bes_srtgroep_omschrijving,
sd.bes_srtdeel_voorraadmax,
sd.bes_srtdeel_voorraadmin,
sd.bes_srtdeel_maxbestel,
sd.bes_srtdeel_minimum,
sd.bes_srtdeel_maximum,
sd.bes_srtdeel_veelvoud,
sd.bes_srtdeel_eenheid,
sd.bes_srtdeel_vervaldatum
ORDER BY sd.bes_srtdeel_volgnr,
sd.bes_srtdeel_nr;
REGISTERRUN('$Id$')
#endif // BES

View File

@@ -10,13 +10,8 @@ create index bez_i_bez_afspraak_bez4 on bez_afspraak (bez_afspraak_datum);
CREATE INDEX bez_i_bez_afspraak_bez5 ON bez_afspraak(bez_afspraak_contact_key, bez_afspraak_datum);
CREATE INDEX bez_i_bez_afspraak_bez6 ON bez_afspraak(bez_afspraak_host_key, bez_afspraak_datum);
CREATE INDEX bez_i_bez_afspraak_bez7 ON bez_afspraak(alg_locatie_key);
CREATE INDEX bez_i_bez_afspraak_bez8 ON bez_afspraak(mld_opdr_key);
create index bez_i_bez_bezoeker_afsp on bez_bezoekers (bez_afspraak_key);
CREATE INDEX bez_i_bez_bezoekers1 ON bez_bezoekers(prs_perslid_key);
CREATE INDEX bez_i_bez_bezoekers2 ON bez_bezoekers(prs_contactpersoon_key);
CREATE INDEX bez_i_bez_kenmerk1 ON bez_kenmerk(bez_kenmerk_code);
REGISTERONCE('$Id$')

View File

@@ -3,7 +3,14 @@
* $Id$
*/
_FAC_MODULE('BEZ','lcl_module_BEZ')
_FAC_MODULE('BEZ','Bezoekersregistratie')
INSERT INTO bez_actie (bez_actie_omschrijving) VALUES ('Onbekend');
INSERT INTO bez_actie (bez_actie_omschrijving) VALUES ('Ontvanger bellen');
INSERT INTO bez_actie (bez_actie_omschrijving) VALUES ('Begeleiden naar ontvanger');
INSERT INTO bez_actie (bez_actie_omschrijving) VALUES ('Verwijzen naar ontvanger');
INSERT INTO bez_actie (bez_actie_omschrijving) VALUES ('Op laten halen (bellen)');
REGISTERONCE('$Id$')
#endif // BEZ

View File

@@ -6,20 +6,11 @@
*/
CREATE OR REPLACE PACKAGE bez AS
PROCEDURE copy_afspraak (pkey IN NUMBER, newdate IN DATE, puserkey IN NUMBER, prsvkey_to IN NUMBER);
PROCEDURE copy_afspraak (pkey IN NUMBER, newdate IN DATE, puserkey IN NUMBER, prsvkey_to IN NUMBER, newafspraakkey OUT NUMBER);
PROCEDURE sync_resafspraak (presvruimtevan IN NUMBER, presvruimtenaar IN NUMBER);
PROCEDURE claim_parking (pbez_bezoekers_key IN NUMBER, palg_gebter_key IN NUMBER);
FUNCTION hasparking (pbez_bezoekers_key IN NUMBER) RETURN NUMBER;
FUNCTION afssprintf (ps IN VARCHAR2 , p_afspraak_key IN NUMBER) RETURN VARCHAR2 ;
FUNCTION bzksprintf (ps IN VARCHAR2 , p_bezoekers_key IN NUMBER) RETURN VARCHAR2 ;
PROCEDURE remove (p_afspraak_key IN NUMBER);
PROCEDURE notifyafspraakbedrijven (p_afspraak_key NUMBER,
ptrackingkey NUMBER,
pnotidelay NUMBER DEFAULT NULL);
PROCEDURE notifybezoekerbedrijven (p_bezoekers_key NUMBER,
ptrackingkey NUMBER,
pnotidelay NUMBER DEFAULT NULL);
END bez;
/
@@ -28,30 +19,18 @@ CREATE OR REPLACE PACKAGE BODY bez AS
PROCEDURE copy_afspraak (pkey IN NUMBER, newdate IN DATE, puserkey IN NUMBER, prsvkey_to IN NUMBER)
AS
newafspraakkey bez_afspraak.bez_afspraak_key%TYPE;
BEGIN
copy_afspraak (pkey, newdate, puserkey, prsvkey_to, newafspraakkey);
END;
-- Variant waarbij je newafspraakkey terug krijgt
PROCEDURE copy_afspraak (pkey IN NUMBER, newdate IN DATE, puserkey IN NUMBER, prsvkey_to IN NUMBER, newafspraakkey OUT NUMBER)
AS
newbezoekerskey bez_bezoekers.bez_bezoekers_key%TYPE;
hasparking NUMBER;
nieuwvan DATE;
nieuwtot DATE;
alg_gebter_key ins_deel.ins_alg_ruimte_key%TYPE;
CURSOR bezoekers
IS
SELECT bez_bezoekers_key,
bez_afspraak_naam,
bez_afspraak_bedrijf,
bez_bezoekers_opmerking,
bez_bezoekers_telefoon,
bez_bezoekers_email,
bez_bezoekers_kenteken,
prs_contactpersoon_key,
prs_perslid_key
bez_afspraak_opmerking,
prs_contactpersoon_key
FROM bez_bezoekers
WHERE bez_afspraak_key = pkey;
BEGIN
@@ -75,29 +54,17 @@ CREATE OR REPLACE PACKAGE BODY bez AS
SELECT bez_s_bez_afspraak_key.NEXTVAL INTO newafspraakkey FROM DUAL;
INSERT INTO bez_afspraak (bez_afspraak_key,
prs_perslid_key,
bez_afspraak_host_key,
bez_afspraak_contact_key,
bez_afspraak_gastheer,
bez_afspraak_telefoonnr,
bez_afspraak_datum, bez_actie_key,
alg_locatie_key, res_rsv_ruimte_key,
mld_opdr_key,
alg_onrgoed_keys, bez_afspraak_ruimte,
bez_afspraak_opmerking, bez_afspraak_eind
INSERT INTO bez_afspraak (bez_afspraak_key, prs_perslid_key, bez_afspraak_host_key, bez_afspraak_contact_key, bez_afspraak_gastheer, bez_afspraak_datum, bez_actie_key, alg_locatie_key, res_rsv_ruimte_key, alg_onrgoed_keys, bez_afspraak_ruimte, bez_afspraak_opmerking, bez_afspraak_eind
)
SELECT newafspraakkey,
puserkey,
a.bez_afspraak_host_key,
a.bez_afspraak_contact_key,
a.bez_afspraak_gastheer,
a.bez_afspraak_telefoonnr,
nieuwvan,
a.bez_actie_key,
a.alg_locatie_key,
prsvkey_to,
mld_opdr_key,
a.alg_onrgoed_keys,
a.bez_afspraak_ruimte,
a.bez_afspraak_opmerking,
@@ -115,24 +82,16 @@ CREATE OR REPLACE PACKAGE BODY bez AS
bez_afspraak_key,
bez_afspraak_naam,
bez_afspraak_bedrijf,
bez_bezoekers_opmerking,
bez_bezoekers_telefoon,
bez_bezoekers_email,
bez_bezoekers_kenteken,
prs_contactpersoon_key,
prs_perslid_key
bez_afspraak_opmerking,
prs_contactpersoon_key
)
VALUES (
newbezoekerskey,
newafspraakkey,
b.bez_afspraak_naam,
b.bez_afspraak_bedrijf,
b.bez_bezoekers_opmerking,
b.bez_bezoekers_telefoon,
b.bez_bezoekers_email,
b.bez_bezoekers_kenteken,
b.prs_contactpersoon_key,
b.prs_perslid_key
b.bez_afspraak_opmerking,
b.prs_contactpersoon_key
);
-- Als de bron een P had, dan de bestemming ook
@@ -140,37 +99,12 @@ CREATE OR REPLACE PACKAGE BODY bez AS
IF (hasparking > 0)
THEN
-- Probeer in/op het/dezelfde gebouw/terreinsector een lege parkeerplaats te vinden.
-- Lukt dit niet dan probeer op dezelfde locatie een lege parkeerplaats te vinden.
SELECT CASE WHEN ins_alg_ruimte_type = 'T'
THEN id.ins_alg_ruimte_key
ELSE og.alg_gebouw_key
END
INTO alg_gebter_key
FROM res_rsv_deel rrd,
res_deel rd,
ins_deel id,
alg_v_allonroerendgoed og
WHERE rrd.res_deel_key = rd.res_deel_key
AND rd.res_ins_deel_key = id.ins_deel_key
AND (id.ins_alg_ruimte_key = og.alg_ruimte_key
OR id.ins_alg_ruimte_key = og.alg_terreinsector_key)
AND rrd.bez_bezoekers_key = b.bez_bezoekers_key;
claim_parking (newbezoekerskey, alg_gebter_key);
hasparking := bez.hasparking (newbezoekerskey);
IF hasparking = 0
THEN
-- dan maar de oude methode: overal zoeken
claim_parking (newbezoekerskey, null);
END IF;
claim_parking (newbezoekerskey, null);
-- Eventueel: controleren of de nieuwe nu ook een P heeft,
-- en zo niet dat dan tracken; goed doordenken!
END IF;
-- Kopieer de flexkenmerken van de bezoekers
-- Do not copy backoffice characteristics (> 900)
INSERT INTO bez_kenmerkwaarde
( bez_bezoekers_key,
bez_kenmerk_key,
@@ -183,7 +117,6 @@ CREATE OR REPLACE PACKAGE BODY bez AS
bez_kenmerk k
WHERE w.bez_kenmerk_key = k.bez_kenmerk_key
AND w.bez_bezoekers_key = b.bez_bezoekers_key
AND k.bez_kenmerk_volgnr <= 900
AND w.bez_kenmerkwaarde_verwijder IS NULL;
END LOOP;
@@ -237,10 +170,6 @@ CREATE OR REPLACE PACKAGE BODY bez AS
END IF;
END;
-- Pas op met testen van deze PROCEDURE. De user voor autorisatie wordt bepaald
-- via sys_context('USERENV', 'CLIENT_IDENTIFIER')
-- ASP-code zet die indirect via fac.initsession
-- Compacter kun je dat doen via DBMS_SESSION.SET_IDENTIFIER(3); (met 3=key van de user)
PROCEDURE claim_parking (pbez_bezoekers_key IN NUMBER, palg_gebter_key IN NUMBER)
AS
lafspraakkey bez_afspraak.bez_afspraak_key%TYPE;
@@ -253,7 +182,6 @@ CREATE OR REPLACE PACKAGE BODY bez AS
lparkeerkey res_deel.res_deel_key%TYPE;
bez_parkingdiscipline_key NUMBER;
lpreposttime NUMBER(5,4); -- we gaan nog delen door 24, res_disc_params.res_disc_params_preposttime%TYPE is dan te klein;
lautlevel fac_v_webgebruiker.fac_gebruiker_prs_level_write%TYPE;
BEGIN
-- Claim een (nieuwe) parkeerplaats voor de gegeven bezoeker
-- Reserveer voor de tijden van de bijbehorende afspraak cq. res_rsv_ruimte
@@ -326,147 +254,71 @@ CREATE OR REPLACE PACKAGE BODY bez AS
FROM res_disc_params rdp
WHERE rdp.res_ins_discipline_key = bez_parkingdiscipline_key;
SELECT COALESCE((SELECT w.fac_gebruiker_prs_level_write
FROM fac_v_webgebruiker w,
fac_functie f
WHERE w.fac_functie_key = f.fac_functie_key
AND w.prs_perslid_key = TO_NUMBER(SYS_CONTEXT('USERENV', 'CLIENT_IDENTIFIER'))
AND f.fac_functie_code = 'WEB_BEZPAF'),
9) lautlevel
INTO lautlevel
FROM DUAL;
-- lpreposttime is nu in dagen (in uren / 24 = in dagen).
-- In de query wordt rekening gehouden met 1 minuut marge voor afrondfouten (+/- 1 / 1440).
-- Heb ik een gebouwkey of terreinkey meegekregen?
IF palg_gebter_key IS NULL
THEN
-- Wat is een vrije parkeerplaats
SELECT MIN (res_deel_key) -- logischer maken?
INTO lparkeerkey
FROM (SELECT d.res_deel_key,
(SELECT MIN (rd.res_deel_key)
FROM res_v_aanwezigrsv_deel rd
WHERE d.res_deel_key = rd.res_deel_key
AND rd.res_rsv_deel_van BETWEEN TRUNC (lbegin) AND leinde - 1 / 1440 + lpreposttime
AND rd.res_rsv_deel_tot BETWEEN lbegin + 1 / 1440 - lpreposttime AND TRUNC (lbegin) + 1
AND rd.res_rsv_deel_van < leinde - 1 / 1440 + lpreposttime
AND rd.res_rsv_deel_tot > lbegin + 1 / 1440 - lpreposttime
AND d.res_discipline_key = bez_parkingdiscipline_key) aantal
FROM res_v_aanwezigdeel d,
ins_deel id,
alg_v_aanwezigterreinsector t,
alg_locatie l
WHERE d.res_ins_deel_key = id.ins_deel_key
AND id.ins_alg_locatie_key = llocatiekey
AND d.res_discipline_key = bez_parkingdiscipline_key
AND id.ins_alg_ruimte_key = t.alg_terreinsector_key(+)
AND id.ins_alg_locatie_key = l.alg_locatie_key
-- outer join mag hier niet en dit filter is niet nodig? AND id.ins_alg_ruimte_type = 'T'(+)
AND t.alg_terreinsector_key IN
(SELECT alg_terreinsector_key
FROM alg_v_aanwezigterreinsector t2
WHERE (lautlevel < 0
OR (lautlevel = 9 AND t2.prs_afdeling_key IS NULL)
OR (lautlevel > 0
AND (t2.prs_afdeling_key IS NULL
OR t2.prs_afdeling_key IN
(SELECT prs_afdeling_key
FROM prs_v_afdeling_familie a
WHERE a.prs_afdeling_elder_key IN
(SELECT aa.prs_afdeling_elder_key
FROM prs_v_afdeling_familie aa
WHERE aa.prs_afdeling_key = (SELECT prs_afdeling_key
FROM prs_perslid
WHERE prs_perslid_key = TO_NUMBER(sys_context('USERENV', 'CLIENT_IDENTIFIER')))
AND aa.niveau = lautlevel))))
OR (lautlevel = 0
AND (t2.prs_afdeling_key IS NULL
OR t2.prs_afdeling_key IN
(SELECT a.prs_afdeling_key
FROM prs_v_afdeling a
WHERE a.prs_bedrijf_key = (SELECT a.prs_bedrijf_key
FROM prs_perslid p,
prs_v_afdeling a
WHERE p.prs_afdeling_key = a.prs_afdeling_key
AND p.prs_perslid_key = TO_NUMBER(sys_context('USERENV', 'CLIENT_IDENTIFIER'))))))))
-- Is de parkeerplaats reserveerbaar op de begindag. Meerdaagse parkeerplaatsen worden niet ondersteund.
-- (bits & (2^(dow-1))) = (2^(dow-1))
AND BITAND(d.res_deel_beschikbaar_bits, POWER(2, (fac.getweekdaynum(TRUNC(lbegin)) - 1))) =
POWER(2, (fac.getweekdaynum(TRUNC (lbegin)) - 1))
AND (d.res_deel_vervaldatum IS NULL OR d.res_deel_vervaldatum > lbegin)
AND (id.ins_deel_vervaldatum IS NULL OR id.ins_deel_vervaldatum > lbegin)
AND (l.alg_locatie_vervaldatum IS NULL OR l.alg_locatie_vervaldatum > TRUNC(lbegin))
AND (t.alg_terreinsector_vervaldatum IS NULL OR t.alg_terreinsector_vervaldatum > TRUNC(lbegin))
ORDER BY id.ins_deel_upper)
WHERE aantal IS NULL;
SELECT MIN (res_deel_key) -- logischer maken?
INTO lparkeerkey
FROM ( SELECT d.res_deel_key,
(SELECT MIN (rd.res_deel_key)
FROM res_v_aanwezigrsv_deel rd
WHERE d.res_deel_key = rd.res_deel_key
AND rd.res_rsv_deel_van BETWEEN TRUNC (lbegin) AND leinde - 1 / 1440 + lpreposttime
AND rd.res_rsv_deel_tot BETWEEN lbegin + 1 / 1440 - lpreposttime AND TRUNC (lbegin) + 1
AND rd.res_rsv_deel_van < leinde - 1 / 1440 + lpreposttime
AND rd.res_rsv_deel_tot > lbegin + 1 / 1440 - lpreposttime
AND d.res_discipline_key = bez_parkingdiscipline_key)
aantal
FROM res_v_aanwezigdeel d, ins_deel id, alg_v_aanwezigterreinsector t
WHERE d.res_ins_deel_key = id.ins_deel_key
AND id.ins_alg_locatie_key = llocatiekey
AND d.res_discipline_key = bez_parkingdiscipline_key
AND id.ins_alg_ruimte_key = t.alg_terreinsector_key(+)
-- outer join mag hier niet en dit filter is niet nodig? AND id.ins_alg_ruimte_type = 'T'(+)
AND t.prs_afdeling_key IS NULL -- Alleen 'gewone' parkeerplaatsen
-- Is de parkeerplaats reserveerbaar op de begindag. Meerdaagse parkeerplaatsen worden niet ondersteund.
-- (bits & (2^(dow-1))) = (2^(dow-1))
AND BITAND(d.res_deel_beschikbaar_bits,
POWER(2,
(fac.getweekdaynum(TRUNC(lbegin)) - 1))) =
POWER(2, (fac.getweekdaynum(TRUNC (lbegin)) - 1))
ORDER BY id.ins_deel_upper)
WHERE aantal IS NULL;
ELSE
-- Wat is een vrije parkeerplaats
-- Er is een gebouwkey of terreinkey meegegeven. Hierbinnen moet de parkeerplaats gereserveerd worden.
SELECT MIN (res_deel_key) -- logischer maken?
INTO lparkeerkey
FROM (SELECT d.res_deel_key,
(SELECT MIN (rd.res_deel_key)
FROM res_v_aanwezigrsv_deel rd
WHERE d.res_deel_key = rd.res_deel_key
AND rd.res_rsv_deel_van BETWEEN TRUNC (lbegin) AND leinde - 1 / 1440 + lpreposttime
AND rd.res_rsv_deel_tot BETWEEN lbegin + 1 / 1440 - lpreposttime AND TRUNC (lbegin) + 1
AND rd.res_rsv_deel_van < leinde - 1 / 1440 + lpreposttime
AND rd.res_rsv_deel_tot > lbegin + 1 / 1440 - lpreposttime
AND d.res_discipline_key = bez_parkingdiscipline_key)
aantal
FROM res_v_aanwezigdeel d,
ins_deel id,
alg_v_allonroerendgoed og,
alg_v_aanwezigterreinsector t,
alg_locatie l
WHERE d.res_ins_deel_key = id.ins_deel_key
AND id.ins_alg_locatie_key = llocatiekey
AND d.res_discipline_key = bez_parkingdiscipline_key
AND id.ins_alg_ruimte_key = t.alg_terreinsector_key(+)
AND id.ins_alg_locatie_key = l.alg_locatie_key
AND (id.ins_alg_ruimte_key = og.alg_ruimte_key
OR id.ins_alg_ruimte_key = og.alg_terreinsector_key)
AND (og.alg_gebouw_key = palg_gebter_key -- De tabel alg_gebouw heeft geen referentie naar de afdelingen tabel (geen prs_afdeling_key kolom).
OR (og.alg_terreinsector_key = palg_gebter_key
AND og.alg_terreinsector_key IN
(SELECT alg_terreinsector_key
FROM alg_v_aanwezigterreinsector t2
WHERE (lautlevel < 0
OR (lautlevel = 9 AND t2.prs_afdeling_key IS NULL)
OR (lautlevel > 0
AND (t2.prs_afdeling_key IS NULL
OR t2.prs_afdeling_key IN
(SELECT prs_afdeling_key
FROM prs_v_afdeling_familie a
WHERE a.prs_afdeling_elder_key IN
(SELECT aa.prs_afdeling_elder_key
FROM prs_v_afdeling_familie aa
WHERE aa.prs_afdeling_key = (SELECT prs_afdeling_key
FROM prs_perslid
WHERE prs_perslid_key = TO_NUMBER(sys_context('USERENV', 'CLIENT_IDENTIFIER')))
AND aa.niveau = lautlevel))))
OR (lautlevel = 0
AND (t2.prs_afdeling_key IS NULL
OR t2.prs_afdeling_key IN
(SELECT a.prs_afdeling_key
FROM prs_v_afdeling a
WHERE a.prs_bedrijf_key = (SELECT a.prs_bedrijf_key
FROM prs_perslid p,
prs_v_afdeling a
WHERE p.prs_afdeling_key = a.prs_afdeling_key
AND p.prs_perslid_key = TO_NUMBER(sys_context('USERENV', 'CLIENT_IDENTIFIER'))))))))))
AND id.ins_alg_ruimte_type IN ('R', 'T')
-- Is de parkeerplaats reserveerbaar op de begindag. Meerdaagse parkeerplaatsen worden niet ondersteund.
-- (bits & (2^(dow-1))) = (2^(dow-1))
AND BITAND(d.res_deel_beschikbaar_bits, POWER(2, (fac.getweekdaynum(TRUNC(lbegin)) - 1))) =
POWER(2, (fac.getweekdaynum(TRUNC(lbegin)) - 1))
AND (d.res_deel_vervaldatum IS NULL OR d.res_deel_vervaldatum > lbegin)
AND (id.ins_deel_vervaldatum IS NULL OR id.ins_deel_vervaldatum > lbegin)
AND (l.alg_locatie_vervaldatum IS NULL OR l.alg_locatie_vervaldatum > TRUNC(lbegin))
AND (t.alg_terreinsector_vervaldatum IS NULL OR t.alg_terreinsector_vervaldatum > TRUNC(lbegin))
ORDER BY id.ins_deel_upper)
WHERE aantal IS NULL;
SELECT MIN (res_deel_key) -- logischer maken?
INTO lparkeerkey
FROM ( SELECT d.res_deel_key,
(SELECT MIN (rd.res_deel_key)
FROM res_v_aanwezigrsv_deel rd
WHERE d.res_deel_key = rd.res_deel_key
AND rd.res_rsv_deel_van BETWEEN TRUNC (lbegin) AND leinde - 1 / 1440 + lpreposttime
AND rd.res_rsv_deel_tot BETWEEN lbegin + 1 / 1440 - lpreposttime AND TRUNC (lbegin) + 1
AND rd.res_rsv_deel_van < leinde - 1 / 1440 + lpreposttime
AND rd.res_rsv_deel_tot > lbegin + 1 / 1440 - lpreposttime
AND d.res_discipline_key = bez_parkingdiscipline_key)
aantal
FROM res_v_aanwezigdeel d, ins_deel id, alg_v_allonroerendgoed og
WHERE d.res_ins_deel_key = id.ins_deel_key
AND id.ins_alg_locatie_key = llocatiekey
AND d.res_discipline_key = bez_parkingdiscipline_key
AND (id.ins_alg_ruimte_key = og.alg_ruimte_key
OR id.ins_alg_ruimte_key = og.alg_terreinsector_key)
AND (og.alg_gebouw_key = palg_gebter_key
OR og.alg_terreinsector_key = palg_gebter_key)
AND id.ins_alg_ruimte_type IN ('R', 'T')
-- Is de parkeerplaats reserveerbaar op de begindag. Meerdaagse parkeerplaatsen worden niet ondersteund.
-- (bits & (2^(dow-1))) = (2^(dow-1))
AND BITAND(d.res_deel_beschikbaar_bits,
POWER(2,
(fac.getweekdaynum(TRUNC(lbegin)) - 1))) =
POWER(2, (fac.getweekdaynum(TRUNC (lbegin)) - 1))
ORDER BY id.ins_deel_upper)
WHERE aantal IS NULL;
END IF;
IF lparkeerkey IS NOT NULL
@@ -501,6 +353,7 @@ CREATE OR REPLACE PACKAGE BODY bez AS
RETURN aantal;
END;
FUNCTION afssprintf (ps IN VARCHAR2, p_afspraak_key IN NUMBER) RETURN VARCHAR2 IS
lafspraak_datum bez_afspraak.bez_afspraak_datum%TYPE;
lbezoek VARCHAR2 (200);
@@ -524,9 +377,9 @@ CREATE OR REPLACE PACKAGE BODY bez AS
GROUP BY bez_afspraak_key;
s :=
REPLACE (REPLACE (REPLACE (s, '##NAAM##', lbezoek), '##KEY##', TO_CHAR (p_afspraak_key)),
REPLACE (REPLACE (REPLACE (s, '##NAAM##', lbezoek), '##KEY##', NUMBER_TO_CHAR (p_afspraak_key)),
'##DATUM##',
TO_CHAR (lafspraak_datum, 'DD-MM-YY HH24:MI')
DATE_TO_CHAR (lafspraak_datum, 'DD-MM-YY HH24:MI')
);
END IF;
RETURN s;
@@ -556,100 +409,16 @@ CREATE OR REPLACE PACKAGE BODY bez AS
AND bez_bezoekers_key = p_bezoekers_key;
s :=
REPLACE (REPLACE (REPLACE (REPLACE (REPLACE (s, '##NAAM##', lbezoek), '##KEY##', TO_CHAR (lafspraak_key)),
REPLACE (REPLACE (REPLACE (REPLACE (REPLACE (s, '##NAAM##', lbezoek), '##KEY##', NUMBER_TO_CHAR (lafspraak_key)),
'##DATUM##',
TO_CHAR (lafspraak_datum, 'DD-MM-YY HH24:MI')
DATE_TO_CHAR (lafspraak_datum, 'DD-MM-YY HH24:MI')
), '##BEDRIJF##', lbedrijf), '##PASNR##', lbadgenr);
END IF;
RETURN s;
END;
PROCEDURE remove(p_afspraak_key IN NUMBER)
IS
CURSOR c_bezoekers IS
SELECT bez_bezoekers_key
FROM bez_bezoekers
WHERE bez_afspraak_key = p_afspraak_key;
BEGIN
FOR ref_bezoekers IN c_bezoekers
LOOP
DELETE FROM bez_bezoekers
WHERE bez_bezoekers_key = ref_bezoekers.bez_bezoekers_key;
-- Van de volgende tabel worden de records die naar deze bez_bezoekers_key
-- verwijzen met ON DELETE CASCADE verwijderd;
-- bez_kenmerkwaarde
-- In de volgende tabel wordt bez_bezoekers_key leeg gemaakt bij het verwijderen van bez_bezoekers:
-- res_rsv_deel
fac.remove_tracking('bezoeker', ref_bezoekers.bez_bezoekers_key);
END LOOP;
DELETE FROM bez_afspraak
WHERE bez_afspraak_key = p_afspraak_key;
fac.remove_tracking('afspraak', p_afspraak_key);
END;
-- Alleen generieke bedrijven
PROCEDURE notifyafspraakbedrijven (p_afspraak_key NUMBER,
ptrackingkey NUMBER,
pnotidelay NUMBER DEFAULT NULL)
IS
BEGIN
FOR bedrijfrec IN (SELECT b.prs_bedrijf_key,
'G' bedrijfadres_type,
a.alg_locatie_key,
a.bez_afspraak_key
FROM prs_bedrijf b,
bez_afspraak a
WHERE a.bez_afspraak_key = p_afspraak_key
AND EXISTS
(SELECT 1
FROM prs_bedrijfadres ba
WHERE ba.prs_bedrijf_key = b.prs_bedrijf_key
AND ba.prs_bedrijfadres_startdatum <= SYSDATE
AND ba.prs_bedrijfadres_type = 'G'))
LOOP
fac.notifybedrijf (pbedrijf_key => bedrijfrec.prs_bedrijf_key,
pbedrijfadres_type => bedrijfrec.bedrijfadres_type,
prefkey => p_afspraak_key,
ptrackingkey => ptrackingkey,
preference => TO_CHAR(bedrijfrec.bez_afspraak_key),
plocatie_key => bedrijfrec.alg_locatie_key,
pnotidelay => pnotidelay);
END LOOP;
END;
-- Alleen generieke bedrijven
PROCEDURE notifybezoekerbedrijven (p_bezoekers_key NUMBER,
ptrackingkey NUMBER,
pnotidelay NUMBER DEFAULT NULL)
IS
BEGIN
FOR bedrijfrec IN (SELECT b.prs_bedrijf_key,
'G' bedrijfadres_type,
a.alg_locatie_key,
a.bez_afspraak_key
FROM prs_bedrijf b,
bez_afspraak a,
bez_bezoekers bb
WHERE bb.bez_afspraak_key = a.bez_afspraak_key
AND EXISTS
(SELECT 1
FROM prs_bedrijfadres ba
WHERE ba.prs_bedrijf_key = b.prs_bedrijf_key
AND ba.prs_bedrijfadres_startdatum <= SYSDATE
AND ba.prs_bedrijfadres_type = 'G'))
LOOP
fac.notifybedrijf (pbedrijf_key => bedrijfrec.prs_bedrijf_key,
pbedrijfadres_type => bedrijfrec.bedrijfadres_type,
prefkey => p_bezoekers_key,
ptrackingkey => ptrackingkey,
preference => TO_CHAR(bedrijfrec.bez_afspraak_key),
plocatie_key => bedrijfrec.alg_locatie_key,
pnotidelay => pnotidelay);
END LOOP;
END;
END bez;
/

View File

@@ -3,10 +3,9 @@
* $Id$
*/
CREATE SEQUENCE bez_s_bez_afspraak_key MINVALUE 1;
CREATE SEQUENCE bez_s_bez_bezoekers_key MINVALUE 1;
CREATE SEQUENCE bez_s_bez_actie_groep_key MINVALUE 1;
CREATE SEQUENCE bez_s_bez_actie_key MINVALUE 1;
CREATE SEQUENCE bez_s_bez_afspraak_key MINVALUE 1;
CREATE SEQUENCE bez_s_bez_bezoekers_key MINVALUE 1;
CREATE SEQUENCE bez_s_bez_actie_key MINVALUE 1;
CREATE SEQUENCE bez_s_bez_kenmerk_key MINVALUE 1000;
CREATE SEQUENCE bez_s_bez_kenmerkwaarde_key MINVALUE 1;

View File

@@ -4,24 +4,6 @@
* $Id$
*/
CREATE_TABLE(bez_actie_groep, 0)
( bez_actie_groep_key
NUMBER(10)
CONSTRAINT bez_k_bez_actie_groep_key PRIMARY KEY,
bez_actie_groep_omschrijving
VARCHAR2(64),
bez_actie_groep_default
NUMBER(1) DEFAULT 0 NOT NULL,
bez_actie_groep_verwijder
DATE,
CONSTRAINT BEZ_U_BEZ_ACTIE_GROEP UNIQUE(bez_actie_groep_omschrijving, bez_actie_groep_verwijder)
);
ALTER TABLE alg_gebouw
ADD bez_actie_groep_key
NUMBER(10)
REFERENCES bez_actie_groep(bez_actie_groep_key);
CREATE_TABLE(bez_actie,0)
(
bez_actie_key
@@ -33,12 +15,8 @@ CREATE_TABLE(bez_actie,0)
NUMBER(1),
bez_actie_flags
NUMBER(3) DEFAULT 0 NOT NULL, -- 0x001=oproepen, 0x002=autobadge
bez_actie_groep_key
NUMBER(10) NOT NULL
REFERENCES bez_actie_groep,
bez_actie_verwijder
DATE,
CONSTRAINT BEZ_U_BEZ_ACTIE UNIQUE(bez_actie_groep_key, bez_actie_omschrijving, bez_actie_verwijder)
DATE
);
ALTER TABLE res_ruimte
@@ -61,9 +39,9 @@ CREATE_TABLE(bez_afspraak,0)
NUMBER(10)
REFERENCES prs_perslid(prs_perslid_key),
bez_afspraak_gastheer
VARCHAR2(120),
VARCHAR2(50),
bez_afspraak_telefoonnr
VARCHAR2(20),
VARCHAR2(15),
bez_afspraak_datum
DATE
DEFAULT NULL,
@@ -76,9 +54,6 @@ CREATE_TABLE(bez_afspraak,0)
res_rsv_ruimte_key
NUMBER(10)
REFERENCES res_rsv_ruimte(res_rsv_ruimte_key),
mld_opdr_key
NUMBER(10)
REFERENCES mld_opdr(mld_opdr_key),
alg_onrgoed_keys
NUMBER(10),
bez_afspraak_ruimte
@@ -86,13 +61,6 @@ CREATE_TABLE(bez_afspraak,0)
bez_afspraak_opmerking
VARCHAR2(320),
bez_afspraak_eind
DATE,
bez_afspraak_aanmaak
DATE
DEFAULT SYSDATE NOT NULL,
bez_afspraak_externnr
VARCHAR2(256),
bez_afspraak_externsyncdate
DATE
);
@@ -105,7 +73,7 @@ CREATE_TABLE(bez_bezoekers,0)
NUMBER(10)
REFERENCES bez_afspraak,
bez_afspraak_naam -- naam bezoeker
VARCHAR2(60),
VARCHAR2(30),
bez_afspraak_bedrijf -- naam bedrijf bezoeker
VARCHAR2(60),
prs_contactpersoon_key -- optioneel
@@ -116,33 +84,17 @@ CREATE_TABLE(bez_bezoekers,0)
CONSTRAINT bez_r_prs_perslid REFERENCES prs_perslid(prs_perslid_key),
bez_bezoekers_pasnr
VARCHAR2(30),
bez_bezoekers_opmerking
VARCHAR2(50),
bez_afspraak_opmerking
VARCHAR2(50),
bez_bezoekers_done
DATE,
bez_bezoekers_out
DATE,
bez_bezoekers_done_actual
DATE,
bez_bezoekers_out_actual
DATE,
bez_bezoekers_oproep
DATE,
bez_bezoekers_flags -- documentatie in appl/bez/xxx.inc
NUMBER(10)
DEFAULT 0 NOT NULL,
bez_bezoekers_flag
NUMBER(1),
bez_bezoekers_aanmaak
DATE
DEFAULT SYSDATE NOT NULL,
bez_bezoekers_telefoon VARCHAR2(20),
bez_bezoekers_email VARCHAR2(200),
bez_bezoekers_kenteken VARCHAR2(10),
bez_bezoekers_externnr VARCHAR2(256),
bez_bezoekers_externsyncdate DATE
DEFAULT 0 NOT NULL
);
@@ -161,33 +113,24 @@ CREATE_TABLE(bez_kenmerk,0)
,bez_kenmerk_volgnr
NUMBER(3)
NOT NULL
,bez_kenmerk_rolcode
NUMBER(4)
DEFAULT 7 NOT NULL
,bez_kenmerk_omschrijving
VARCHAR2(50)
,bez_kenmerk_upper
VARCHAR2(50)
,bez_kenmerk_code
VARCHAR2(60)
,bez_kenmerk_hint
VARCHAR2(255)
,bez_kenmerk_default
VARCHAR2(4000)
,bez_kenmerk_show_expr
VARCHAR2(4000)
,bez_kenmerk_dimensie
VARCHAR2(10)
,bez_kenmerk_kenmerktype
VARCHAR2(1)
,bez_kenmerk_systeem -- &1 = systeemkm, &8 = anonimiseren
NUMBER(2)
DEFAULT 0 NOT NULL
CONSTRAINT bez_c_bez_kenmerk_type2 CHECK
(bez_kenmerk_kenmerktype IN ('C','N','D','R','X','L','Q','F','M','E','S', 'l'))
,bez_kenmerk_systeem
NUMBER(1)
,bez_kenmerk_toonbaar
NUMBER(1)
,bez_kenmerk_inlijst
NUMBER(1)
DEFAULT 0 NOT NULL
,bez_kenmerk_uniek
NUMBER(1)
,bez_kenmerk_regexp
@@ -215,9 +158,6 @@ CREATE_TABLE(bez_kenmerk,0)
,bez_kenmerk_verwijder
DATE
DEFAULT NULLDATUM
,fac_functie_key
NUMBER(10)
CONSTRAINT fac_r_bez_kenmerk_functie REFERENCES fac_functie (fac_functie_key)
);
CREATE_TABLE(bez_kenmerkwaarde,0)

View File

@@ -3,22 +3,14 @@
* $Id$
*/
CREATE_TRIGGER(bez_t_bez_afspraak_B_I)
BEFORE INSERT ON bez_afspraak
FOR EACH ROW
BEGIN
UPDATE_PRIMARY_KEY(bez_afspraak_key,bez_s_bez_afspraak_key);
END;
/
CREATE_TRIGGER(bez_t_bez_afspraak_B_IU)
BEFORE INSERT OR UPDATE ON bez_afspraak
FOR EACH ROW
DECLARE dummy NUMBER;
BEGIN
IF sys_context('USERENV', 'ACTION') = 'ANONYMIZE' OR
sys_context('USERENV', 'ACTION') = 'DBUPGRADE' THEN
RETURN;
END IF;
UPDATE_PRIMARY_KEY(bez_afspraak_key,bez_s_bez_afspraak_key);
dummy := :new.bez_afspraak_key;
IF :new.bez_afspraak_contact_key IS NULL AND :new.prs_perslid_key IS NOT NULL THEN
:new.bez_afspraak_contact_key := :new.prs_perslid_key;
@@ -66,26 +58,18 @@ CREATE_TRIGGER(bez_t_bez_afspraak_d)
ON bez_afspraak
FOR EACH ROW
BEGIN
DELETE FROM bez_bezoekers WHERE bez_afspraak_key = :OLD.bez_afspraak_key;
DELETE FROM bez_bezoekers WHERE bez_afspraak_key=:OLD.bez_afspraak_key;
END;
/
CREATE_TRIGGER(bez_t_bez_bezoekers_B_I)
BEFORE INSERT ON bez_bezoekers
CREATE_TRIGGER(bez_t_bez_bezoekers_B_IU)
BEFORE INSERT OR UPDATE ON bez_bezoekers
FOR EACH ROW
BEGIN
UPDATE_PRIMARY_KEY(bez_bezoekers_key,bez_s_bez_bezoekers_key);
END;
/
CREATE_TRIGGER(bez_t_bez_actie_groep_B_I)
BEFORE INSERT ON bez_actie_groep
FOR EACH ROW
BEGIN
UPDATE_PRIMARY_KEY(bez_actie_groep_key, bez_s_bez_actie_groep_key);
END;
/
CREATE_TRIGGER(bez_t_bez_actie_B_IU)
BEFORE INSERT OR UPDATE ON bez_actie
FOR EACH ROW
@@ -99,43 +83,41 @@ CREATE_TRIGGER(bez_t_notificatie_afspraak_d)
ON bez_afspraak
FOR EACH ROW
BEGIN
-- Alle notificaties verwijderen van de "afspraak" xmlnode die behoren bij de verwijderde afspraak.
fac.clrnotifications_xmlnode('afspraak', :OLD.bez_afspraak_key);
-- Tracking verwijderen die niet weg gaat als de afspraak wordt verwijderd.
fac.clrtracking_xmlnode('afspraak', :OLD.bez_afspraak_key);
fac.clrnotifications('BEZMUT', :OLD.bez_afspraak_key);
fac.clrnotifications('BEZUPD', :OLD.bez_afspraak_key);
END;
/
CREATE_TRIGGER(bez_t_notificatie_bezoekers_d)
AFTER DELETE
ON bez_bezoekers
FOR EACH ROW
BEGIN
-- Alle notificaties verwijderen van de "bezoeker" xmlnode die behoren bij de verwijderde bezoeker.
fac.clrnotifications_xmlnode('bezoeker', :OLD.bez_bezoekers_key);
-- Tracking verwijderen die niet weg gaat als de bezoeker wordt verwijderd.
fac.clrtracking_xmlnode('bezoeker', :OLD.bez_bezoekers_key);
fac.clrnotifications('BEZDO%', :OLD.bez_bezoekers_key);
fac.clrnotifications('BEZOU%', :OLD.bez_bezoekers_key);
fac.clrnotifications('BEZBAD', :OLD.bez_bezoekers_key);
END;
/
CREATE_TRIGGER(bez_t_bez_kenmerk_b_iu)
BEFORE INSERT OR UPDATE ON bez_kenmerk
FOR EACH ROW
BEGIN
UPDATE_PRIMARY_KEY(bez_kenmerk_key, bez_s_bez_kenmerk_key);
UPDATE_UPPER(bez_kenmerk_omschrijving, bez_kenmerk_upper, bez_kenmerk);
UPDATE_UPPER(bez_kenmerk_code, bez_kenmerk_code, bez_kenmerk);
UPDATE_UPPER(bez_kenmerk_omschrijving, bez_kenmerk_upper,bez_kenmerk);
IF (:new.bez_kenmerk_verwijder IS NOT NULL AND :old.bez_kenmerk_verwijder IS NULL AND
:new.bez_kenmerk_systeem = 1)
THEN
raise_application_error(-20000, 'ALG_M238');
APPLICATION_ERROR(-20003, 'ALG_M238');
END IF;
IF (:new.bez_kenmerk_kenmerktype IN ('C','N'))
AND :new.bez_kenmerk_lengte IS NULL
THEN
raise_application_error(-20000, 'ALG_C_ALG_KENMERK_LENGTE');
APPLICATION_ERROR(-20000, 'ALG_C_ALG_KENMERK_LENGTE');
END IF;
IF :new.bez_kenmerk_kenmerktype = 'N'
AND :new.bez_kenmerk_lengte > 20
@@ -236,7 +218,7 @@ BEGIN
WHERE bez_kenmerk_key = :new.bez_kenmerk_key;
EXCEPTION
WHEN NO_DATA_FOUND
THEN raise_application_error(-20000,'INS_R_INS_KENMERK_KEY1');
THEN APPLICATION_ERROR_GOTO(-20000,'INS_R_INS_KENMERK_KEY1');
END;
/* Kijk welk KenmerkType gebruikt wordt.
@@ -280,7 +262,7 @@ BEGIN
THEN FormatMask := REPLACE(FormatMask, '9', '#');
FormatMask := REPLACE(FormatMask, '0', '#');
FormatMask := REPLACE(FormatMask, 'D', '.');
APPLICATION_ERROR_GOTO(-20004,'ALG_M233,'|| KenmerkOmschr ||','
RAISE_APPLICATION_ERROR(-20004,'ALG_M233,'|| KenmerkOmschr ||','
|| FormatMask);
END;
/*

View File

@@ -4,133 +4,47 @@
* $Id$
*/
CREATE_VIEW(bez_v_api_afspraken, 1) AS
SELECT a.bez_afspraak_key,
a.prs_perslid_key,
p1.prs_perslid_naam_full bez_afspraak_host,
p2.prs_perslid_naam_full bez_afspraak_contact,
a.bez_afspraak_datum,
a.bez_actie_key,
og.alg_onroerendgoed_code,
og.alg_onroerendgoed_omschrijving,
a.bez_afspraak_ruimte,
a.bez_afspraak_opmerking,
a.bez_afspraak_eind,
b.bez_bezoekers_key,
b.bez_afspraak_naam bezoeker_naam,
b.bez_afspraak_bedrijf bezoeker_bedrijf,
b.bez_afspraak_opmerking bezoeker_opmerking,
b.bez_bezoekers_done,
b.bez_bezoekers_out,
b.bez_bezoekers_pasnr
FROM bez_afspraak a,
bez_bezoekers b,
prs_v_perslid_fullnames_all p1,
prs_v_perslid_fullnames_all p2,
alg_v_allonrgoed_gegevens og
WHERE a.bez_afspraak_key = b.bez_afspraak_key
AND p1.prs_perslid_key = a.bez_afspraak_host_key
AND p2.prs_perslid_key = a.bez_afspraak_contact_key
AND a.alg_onrgoed_keys = og.alg_onroerendgoed_keys;
/* ROOT VIEWS for User defined Reports (UDR) */
CREATE_VIEW(bez_v_udr_bezoeker, 1)
(
key,
afspraak_key,
reservering_key,
host,
contact,
invoerder,
plaats_code,
plaats_omschrijving,
regio,
district,
locatie_code,
locatie_naam,
locatie_plaats,
gebouw_key,
gebouw_code,
gebouw_naam,
verdieping_code,
verdieping_naam,
ruimte_code,
ruimte_naam,
afspraak_ruimte,
afspraak_opmerking,
bezoeker_naam,
bezoeker_bedrijf,
bezoek_van,
weekdag_bezoek_van,
bezoek_tot,
actie,
bezoeker_opmerking,
bezoeker_binnen,
bezoeker_buiten,
pasnr,
parkeerplaats,
fclt_3d_locatie_key,
fclt_3d_divisie_key,
divisie_naam,
divisie_omschrijving,
fclt_3d_afdeling_key,
selfservice
)
AS
SELECT b.bez_bezoekers_key,
a.bez_afspraak_key,
a.res_rsv_ruimte_key,
COALESCE (p1.prs_perslid_naam_full, a.bez_afspraak_gastheer) bez_afspraak_host,
p2.prs_perslid_naam_full bez_afspraak_contact,
p3.prs_perslid_naam_full bez_afspraak_invoerder,
og.alg_onroerendgoed_code,
og.alg_onroerendgoed_omschrijving,
r.alg_regio_omschrijving,
d.alg_district_omschrijving,
l.alg_locatie_code,
l.alg_locatie_omschrijving,
l.alg_locatie_plaats,
COALESCE(og.alg_gebouw_code, og.alg_terreinsector_code) alg_gebouw_code,
COALESCE(og.alg_gebouw_naam, og.alg_terreinsector_naam) alg_gebouw_naam,
og.alg_gebouw_key,
og.alg_verdieping_code,
og.alg_verdieping_omschrijving,
og.alg_ruimte_nr,
og.alg_ruimte_omschrijving,
a.bez_afspraak_ruimte,
a.bez_afspraak_opmerking,
b.bez_afspraak_naam bezoeker_naam,
b.bez_afspraak_bedrijf bezoeker_bedrijf,
a.bez_afspraak_datum,
TO_CHAR(a.bez_afspraak_datum, 'D') weekdag_bezoek_van,
a.bez_afspraak_eind,
ba.bez_actie_omschrijving,
b.bez_bezoekers_opmerking bezoeker_opmerking,
b.bez_bezoekers_done,
b.bez_bezoekers_out,
b.bez_bezoekers_pasnr,
rd.res_deel_omschrijving,
a.alg_locatie_key,
an.prs_afdeling_key,
an.prs_afdeling_naam,
an.prs_afdeling_omschrijving,
pp1.prs_afdeling_key,
DECODE (p2.prs_perslid_naam_full, p3.prs_perslid_naam_full, lcl.l ('lcl_yes'), lcl.l ('lcl_no')) selfservice
FROM bez_afspraak a,
bez_bezoekers b,
prs_v_perslid_fullnames_all p1,
prs_v_perslid_fullnames_all p2,
prs_v_perslid_fullnames_all p3,
alg_v_allonrgoed_gegevens og,
alg_locatie l,
alg_district d,
alg_regio r,
bez_actie ba,
prs_perslid pp1,
prs_v_afdeling_boom ab,
prs_v_afdeling an,
res_rsv_deel rrd,
res_deel rd
WHERE a.bez_afspraak_key = b.bez_afspraak_key
AND pp1.prs_perslid_key(+) = a.bez_afspraak_host_key
AND p1.prs_perslid_key(+) = a.bez_afspraak_host_key
AND p2.prs_perslid_key = a.bez_afspraak_contact_key
AND p3.prs_perslid_key(+) = a.prs_perslid_key
AND a.bez_actie_key = ba.bez_actie_key
AND l.alg_district_key = d.alg_district_key
AND d.alg_regio_key = r.alg_regio_key
AND l.alg_locatie_key = a.alg_locatie_key
AND a.alg_onrgoed_keys = og.alg_onroerendgoed_keys(+)
AND b.bez_bezoekers_key = rrd.bez_bezoekers_key(+)
AND rrd.res_deel_key = rd.res_deel_key(+)
AND ab.prs_afdeling_key1 = an.prs_afdeling_key(+)
AND ab.prs_afdeling_key(+) = pp1.prs_afdeling_key
AND a.bez_afspraak_datum >= TO_DATE ('01-01-2010', 'DD-MM-YYYY');
CREATE_VIEW(bez_v_udr_reserveringbezoeker, 1)
(
bezoeker_key,
afspraak_key,
reservering_key,
key,
host,
contact,
plaats_code,
plaats_omschrijving,
regio,
district,
locatie_code,
locatie_naam,
gebouw_key,
gebouw_code,
gebouw_naam,
verdieping_code,
@@ -149,135 +63,62 @@ CREATE_VIEW(bez_v_udr_reserveringbezoeker, 1)
bezoeker_buiten,
pasnr,
parkeerplaats,
nummer,
res_omschrijving,
invoerdatum,
datum,
gastheer,
invoerder,
kostensoortgroep,
kostensoort,
kpn,
kpn_omschrijving,
fclt_3d_divisie_key,
divisie_naam,
divisie_omschrijving,
fclt_3d_afdeling_key,
afdeling_code,
afdeling_omschrijving,
regio_omschrijving,
district_omschijving,
fclt_3d_locatie_key,
locatie,
locatie_omschrijving,
locatie_plaats,
gebouw,
verdieping,
ruimte,
opstelling,
capaciteit,
no_show,
mandaat,
personeelsnr,
fclt_3d_discipline_key,
catalogus_key,
catalogus,
reserveerbare_ruimte,
bezoekers,
van,
tot,
duur,
status,
bostatus,
activiteit,
srtactiviteit_key,
activiteitsoort
)
fclt_3d_afdeling_key
)
AS
SELECT
b.key bezoeker_key,
b.afspraak_key,
b.reservering_key,
b.host,
--b.contact,
--b.invoerder,
b.plaats_code,
b.plaats_omschrijving,
b.regio,
b.district,
b.locatie_code,
b.locatie_naam,
--b.locatie_plaats,
b.gebouw_key,
b.gebouw_code,
b.gebouw_naam,
b.verdieping_code,
b.verdieping_naam,
b.ruimte_code,
b.ruimte_naam,
b.afspraak_ruimte,
b.afspraak_opmerking,
b.bezoeker_naam,
b.bezoeker_bedrijf,
b.bezoek_van,
b.bezoek_tot,
b.actie,
b.bezoeker_opmerking,
b.bezoeker_binnen,
b.bezoeker_buiten,
b.pasnr,
b.parkeerplaats,
--b.fclt_3d_locatie_key,
--b.fclt_3d_afdeling_key,
--b.selfservice,
--r.key,
r.nummer,
r.res_omschrijving,
r.invoerdatum,
r.datum,
r.gastheer,
--r.contact,
r.invoerder,
r.kostensoortgroep,
r.kostensoort,
r.kpn,
r.kpn_omschrijving,
r.fclt_3d_divisie_key,
r.divisie_naam,
r.divisie_omschrijving,
r.fclt_3d_afdeling_key,
r.afdeling_code,
r.afdeling_omschrijving,
r.regio_omschrijving,
r.district_omschijving,
r.fclt_3d_locatie_key,
r.locatie,
r.locatie_omschrijving,
r.locatie_plaats,
r.gebouw,
r.verdieping,
r.ruimte,
r.opstelling,
r.capaciteit,
r.no_show,
r.mandaat,
r.personeelsnr,
r.fclt_3d_discipline_key,
r.catalogus_key,
r.catalogus,
r.reserveerbare_ruimte,
r.bezoekers,
r.van,
r.tot,
r.duur,
r.status,
r.bostatus,
r.activiteit,
r.srtactiviteit_key,
r.activiteitsoort
FROM res_v_udr_reservering r, bez_v_udr_bezoeker b
WHERE b.reservering_key = r.key;
SELECT b.bez_bezoekers_key,
COALESCE (p1.prs_perslid_naam_full, a.bez_afspraak_gastheer) bez_afspraak_host,
p2.prs_perslid_naam_full bez_afspraak_contact,
og.alg_onroerendgoed_code,
og.alg_onroerendgoed_omschrijving,
r.alg_regio_omschrijving,
d.alg_district_omschrijving,
l.alg_locatie_code,
l.alg_locatie_omschrijving,
og.alg_gebouw_code,
og.alg_gebouw_naam,
og.alg_verdieping_code,
og.alg_verdieping_omschrijving,
og.alg_ruimte_nr,
og.alg_ruimte_omschrijving,
a.bez_afspraak_ruimte,
a.bez_afspraak_opmerking,
b.bez_afspraak_naam bezoeker_naam,
b.bez_afspraak_bedrijf bezoeker_bedrijf,
a.bez_afspraak_datum,
a.bez_afspraak_eind,
ba.bez_actie_omschrijving,
b.bez_afspraak_opmerking bezoeker_opmerking,
b.bez_bezoekers_done,
b.bez_bezoekers_out,
b.bez_bezoekers_pasnr,
rd.res_deel_omschrijving,
og.alg_locatie_key,
pp1.prs_afdeling_key
FROM bez_afspraak a,
bez_bezoekers b,
prs_v_perslid_fullnames_all p1,
prs_v_perslid_fullnames_all p2,
alg_v_allonrgoed_gegevens og,
alg_locatie l,
alg_district d,
alg_regio r,
bez_actie ba,
prs_perslid pp1,
res_rsv_deel rrd,
res_deel rd
WHERE a.bez_afspraak_key = b.bez_afspraak_key
AND pp1.prs_perslid_key(+) = a.bez_afspraak_host_key
AND p1.prs_perslid_key(+) = a.bez_afspraak_host_key
AND p2.prs_perslid_key = a.bez_afspraak_contact_key
AND a.bez_actie_key = ba.bez_actie_key
AND l.alg_district_key = d.alg_district_key
AND d.alg_regio_key = r.alg_regio_key
AND l.alg_locatie_key = og.alg_locatie_key
AND a.alg_onrgoed_keys = og.alg_onroerendgoed_keys
AND b.bez_bezoekers_key = rrd.bez_bezoekers_key(+)
AND rrd.res_deel_key = rd.res_deel_key(+);
REGISTERRUN('$Id$')

View File

@@ -1,16 +0,0 @@
#ifdef BGT
/*
* $Revision$
* $Id$
*/
CREATE INDEX bgt_i_bgt_budget_key_naar ON bgt_budgetmutatie(bgt_budget_key_naar);
CREATE INDEX bgt_i_bgt_budget_key_van ON bgt_budgetmutatie(bgt_budget_key_van);
CREATE INDEX bgt_i_bgt_disc_params ON bgt_disc_params(bgt_ins_discipline_key);
CREATE INDEX bgt_i_bgt_budget ON bgt_budget(ins_discipline_key, bgt_project_key, bgt_kostenrubriek_key, prs_kostensoortgrp_key, prs_kostensoort_key);
REGISTERONCE('$Id$')
#endif // BGT

View File

@@ -1,16 +0,0 @@
#ifdef BGT
/*
* $Revision$
* $Id$
*/
_FAC_MODULE('BGT','lcl_module_BGT')
/*
** De MESSAGES van de BGT module.
*/
DEF_FAC_MESSAGE ('BGT_U_BUDGET' ,'Dit budget bestaat al.');
REGISTERONCE('$Id$')
#endif // BGT

View File

@@ -1,460 +0,0 @@
#ifdef BGT
/*
* $Revision$
* $Id$
*/
CREATE OR REPLACE PACKAGE bgt
AS
FUNCTION getMutatieOpBudget( p_budget_key IN NUMBER
, p_mutatie_key IN NUMBER
, p_btw IN NUMBER
) RETURN NUMBER;
FUNCTION getBudgetMutaties ( p_budget_key IN NUMBER
, p_btw IN NUMBER
, p_datum_van DATE DEFAULT NULL
, p_datum_tot DATE DEFAULT NULL
) RETURN NUMBER;
FUNCTION getBudgetOpDatum ( p_budget_key IN NUMBER
, p_btw IN NUMBER
, p_datum DATE DEFAULT NULL
) RETURN NUMBER;
FUNCTION getBudgetSoortMutatie ( p_kostenrubriek_key IN NUMBER
, p_kostensoortgrp_key IN NUMBER
, p_kostensoort_key IN NUMBER
, p_btw IN NUMBER
, p_soortmutatie IN VARCHAR2
, p_datum IN DATE DEFAULT NULL
) RETURN NUMBER;
FUNCTION getSoortMutatie ( p_mutatie_key IN NUMBER
) RETURN VARCHAR2;
FUNCTION getContractwaarde( p_srtkey IN VARCHAR2
, p_key IN NUMBER
, p_btw IN NUMBER
, p_status NUMBER DEFAULT 3
, p_datum_van DATE DEFAULT NULL
, p_datum_tot DATE DEFAULT NULL
) RETURN NUMBER;
FUNCTION getRaming ( p_mld_opdr_key IN NUMBER
, p_btw IN NUMBER
, p_datum_van DATE DEFAULT NULL
, p_datum_tot DATE DEFAULT NULL
) RETURN NUMBER;
FUNCTION getGecontracteerd ( p_mld_opdr_key IN NUMBER
, p_btw IN NUMBER
, p_datum_van DATE DEFAULT NULL
, p_datum_tot DATE DEFAULT NULL
) RETURN NUMBER;
FUNCTION getGefactureerdSoort( p_kostensoort_key IN NUMBER
, p_btw IN NUMBER
) RETURN NUMBER;
FUNCTION getGefactureerd ( p_mld_opdr_key IN NUMBER
, p_btw IN NUMBER
, p_datum_van DATE DEFAULT NULL
, p_datum_tot DATE DEFAULT NULL
) RETURN NUMBER;
FUNCTION getTefactureren ( p_mld_opdr_key IN NUMBER
, p_btw IN NUMBER
, p_datum_van DATE DEFAULT NULL
, p_datum_tot DATE DEFAULT NULL
) RETURN NUMBER;
END bgt;
/
CREATE OR REPLACE PACKAGE BODY bgt
AS
FUNCTION getMutatieOpBudget( p_budget_key IN NUMBER
, p_mutatie_key IN NUMBER
, p_btw IN NUMBER
) RETURN NUMBER
IS
v_bedrag_mut NUMBER;
BEGIN
-- p_btw: 0=excl.btw, 1=btw, 2=incl.btw.
BEGIN
SELECT COALESCE(SUM(bedrag_mutatie), 0)
INTO v_bedrag_mut
FROM (SELECT bgt_budgetmutatie_key
, bgt_budget_key_van budget_key
, CASE WHEN p_btw=0 THEN COALESCE(bgt_budget_bedrag_van, 0)
WHEN p_btw=1 THEN COALESCE(bgt_budget_btwbedrag_van, 0)
WHEN p_btw=2 THEN COALESCE(bgt_budget_bedrag_van, 0) + COALESCE(bgt_budget_btwbedrag_van, 0)
END bedrag_mutatie
FROM bgt_budgetmutatie
UNION
SELECT bgt_budgetmutatie_key
, bgt_budget_key_naar budget_key
, CASE WHEN p_btw=0 THEN COALESCE(bgt_budget_bedrag_naar, 0)
WHEN p_btw=1 THEN COALESCE(bgt_budget_btwbedrag_naar, 0)
WHEN p_btw=2 THEN COALESCE(bgt_budget_bedrag_naar, 0) + COALESCE(bgt_budget_btwbedrag_naar, 0)
END bedrag_mutatie
FROM bgt_budgetmutatie
) mut
WHERE mut.budget_key = p_budget_key
AND mut.bgt_budgetmutatie_key = DECODE(p_mutatie_key , NULL, mut.bgt_budgetmutatie_key, p_mutatie_key);
EXCEPTION
WHEN NO_DATA_FOUND THEN
v_bedrag_mut := NULL;
END;
RETURN v_bedrag_mut;
END getMutatieOpBudget;
FUNCTION getBudgetMutaties ( p_budget_key IN NUMBER
, p_btw IN NUMBER
, p_datum_van DATE DEFAULT NULL
, p_datum_tot DATE DEFAULT NULL -- eigenlijk: tot-en-met
) RETURN NUMBER
IS
v_bedrag_mut NUMBER;
BEGIN
-- p_btw: 0=excl.btw, 1=btw, 2=incl.btw.
-- NB: dit zijn zowel onderlinge mutaties als van-naar reserve mutaties!!
BEGIN
SELECT COALESCE(SUM(mut.bedrag_mutaties), 0)
INTO v_bedrag_mut
FROM (SELECT CASE WHEN p_btw=0 THEN COALESCE(SUM(bgt_budget_bedrag_van), 0)
WHEN p_btw=1 THEN COALESCE(SUM(bgt_budget_btwbedrag_van), 0)
WHEN p_btw=2 THEN COALESCE(SUM(bgt_budget_bedrag_van), 0) + COALESCE(SUM(bgt_budget_btwbedrag_van), 0)
END bedrag_mutaties
FROM bgt_budgetmutatie
WHERE bgt_budget_key_van = p_budget_key
AND ((p_datum_van IS NOT NULL AND TRUNC(bgt_budgetmutatie_datum) >= p_datum_van) OR p_datum_van IS NULL)
AND ((p_datum_tot IS NOT NULL AND TRUNC(bgt_budgetmutatie_datum) <= p_datum_tot) OR p_datum_tot IS NULL)
UNION
SELECT CASE WHEN p_btw=0 THEN COALESCE(SUM(bgt_budget_bedrag_naar), 0)
WHEN p_btw=1 THEN COALESCE(SUM(bgt_budget_btwbedrag_naar), 0)
WHEN p_btw=2 THEN COALESCE(SUM(bgt_budget_bedrag_naar), 0) + COALESCE(SUM(bgt_budget_btwbedrag_naar), 0)
END bedrag_mutaties
FROM bgt_budgetmutatie
WHERE bgt_budget_key_naar = p_budget_key
AND ((p_datum_van IS NOT NULL AND TRUNC(bgt_budgetmutatie_datum) >= p_datum_van) OR p_datum_van IS NULL)
AND ((p_datum_tot IS NOT NULL AND TRUNC(bgt_budgetmutatie_datum) <= p_datum_tot) OR p_datum_tot IS NULL)
) mut;
EXCEPTION
WHEN NO_DATA_FOUND THEN
v_bedrag_mut := NULL;
END;
RETURN v_bedrag_mut;
END getBudgetMutaties;
FUNCTION getBudgetOpDatum ( p_budget_key IN NUMBER
, p_btw IN NUMBER
, p_datum DATE DEFAULT NULL
) RETURN NUMBER
IS
v_huidig_budget NUMBER;
v_mutatie NUMBER;
v_datum_budget NUMBER;
BEGIN
-- p_btw: 0=excl.btw, 1=btw, 2=incl.btw.
BEGIN
SELECT CASE WHEN p_btw=0 THEN COALESCE(bgt_budget_bedrag, 0)
WHEN p_btw=1 THEN COALESCE(bgt_budget_btwbedrag, 0)
WHEN p_btw=2 THEN COALESCE(bgt_budget_bedrag, 0) + COALESCE(bgt_budget_btwbedrag, 0)
END huidig_budget
, CASE WHEN p_btw=0 THEN BGT.getBudgetMutaties(bgt_budget_key, 0, p_datum+1, NULL)
WHEN p_btw=1 THEN BGT.getBudgetMutaties(bgt_budget_key, 1, p_datum+1, NULL)
WHEN p_btw=2 THEN BGT.getBudgetMutaties(bgt_budget_key, 0, p_datum+1, NULL) + BGT.getBudgetMutaties(bgt_budget_key, 1, p_datum+1, NULL)
END mutaties
INTO v_huidig_budget
, v_mutatie
FROM bgt_budget
WHERE bgt_budget_key = p_budget_key;
--
v_datum_budget := v_huidig_budget - v_mutatie;
EXCEPTION
WHEN NO_DATA_FOUND THEN
v_datum_budget := NULL;
END;
RETURN v_datum_budget;
END getBudgetOpDatum;
FUNCTION getBudgetSoortMutatie ( p_kostenrubriek_key IN NUMBER
, p_kostensoortgrp_key IN NUMBER
, p_kostensoort_key IN NUMBER
, p_btw IN NUMBER
, p_soortmutatie IN VARCHAR2
, p_datum IN DATE DEFAULT NULL
) RETURN NUMBER
IS
v_bedrag NUMBER;
BEGIN
-- p_btw: 0=excl.btw, 1=btw, 2=incl.btw.
BEGIN
SELECT COALESCE(SUM(bgt_mutatie_bedrag), 0) bgt_mutatie_bedrag
INTO v_bedrag
FROM ( SELECT b.bgt_kostenrubriek_key
, b.prs_kostensoortgrp_key
, b.prs_kostensoort_key
, b.bgt_budget_isreserve
, TRUNC(m.bgt_budgetmutatie_datum) bgt_budgetmutatie_datum
, CASE WHEN p_btw=0 THEN COALESCE(m.bgt_budget_bedrag_van, 0)
WHEN p_btw=1 THEN COALESCE(m.bgt_budget_btwbedrag_van, 0)
WHEN p_btw=2 THEN COALESCE(m.bgt_budget_bedrag_van, 0) + COALESCE(m.bgt_budget_btwbedrag_van, 0)
END bgt_mutatie_bedrag
, BGT.getSoortMutatie (m.bgt_budgetmutatie_key) bgt_mutatie_soort
FROM bgt_budget b
, bgt_budgetmutatie m
WHERE b.bgt_budget_key = m.bgt_budget_key_van
UNION ALL
SELECT b.bgt_kostenrubriek_key
, b.prs_kostensoortgrp_key
, b.prs_kostensoort_key
, b.bgt_budget_isreserve
, TRUNC(m.bgt_budgetmutatie_datum) bgt_budgetmutatie_datum
, CASE WHEN p_btw=0 THEN COALESCE(m.bgt_budget_bedrag_naar, 0)
WHEN p_btw=1 THEN COALESCE(m.bgt_budget_btwbedrag_naar, 0)
WHEN p_btw=2 THEN COALESCE(m.bgt_budget_bedrag_naar, 0) + COALESCE(m.bgt_budget_btwbedrag_naar, 0)
END bgt_mutatie_bedrag
, BGT.getSoortMutatie (m.bgt_budgetmutatie_key) bgt_mutatie_soort
FROM bgt_budget b
, bgt_budgetmutatie m
WHERE b.bgt_budget_key = m.bgt_budget_key_naar
) single_mutatie
WHERE INSTR(p_soortmutatie, bgt_mutatie_soort) > 0
AND ( (p_kostenrubriek_key IS NOT NULL AND p_kostensoortgrp_key = -1 AND p_kostensoort_key = -1 AND bgt_kostenrubriek_key = p_kostenrubriek_key)
OR (p_kostenrubriek_key IS NOT NULL AND p_kostensoortgrp_key IS NULL AND p_kostensoort_key IS NULL AND bgt_kostenrubriek_key = p_kostenrubriek_key AND prs_kostensoortgrp_key IS NULL AND prs_kostensoort_key IS NULL)
OR (p_kostenrubriek_key IS NOT NULL AND p_kostensoortgrp_key IS NOT NULL AND p_kostensoort_key IS NOT NULL AND prs_kostensoort_key = p_kostensoort_key)
OR (p_kostenrubriek_key IS NULL AND p_kostensoortgrp_key IS NOT NULL AND p_kostensoort_key = -1 AND prs_kostensoortgrp_key = p_kostensoortgrp_key)
OR (p_kostenrubriek_key IS NULL AND p_kostensoortgrp_key IS NOT NULL AND p_kostensoort_key IS NULL AND prs_kostensoortgrp_key = p_kostensoortgrp_key AND prs_kostensoort_key IS NULL)
OR (p_kostenrubriek_key IS NULL AND p_kostensoortgrp_key IS NULL AND p_kostensoort_key IS NOT NULL AND prs_kostensoort_key = p_kostensoort_key)
)
AND (TRUNC(bgt_budgetmutatie_datum) <= p_datum OR p_datum IS NULL);
EXCEPTION
WHEN NO_DATA_FOUND THEN
v_bedrag := NULL;
END;
RETURN v_bedrag;
END getBudgetSoortMutatie;
FUNCTION getSoortMutatie( p_mutatie_key IN NUMBER
) RETURN VARCHAR2
IS
v_budget_van bgt_budgetmutatie.bgt_budget_key_van%TYPE;
v_budget_naar bgt_budgetmutatie.bgt_budget_key_naar%TYPE;
v_mutatie_omschrijving bgt_budgetmutatie.bgt_budgetmutatie_omschrijving%TYPE;
v_mutatie_reserve bgt_budgetmutatie.bgt_budgetmutatie_reserve%TYPE;
v_mutatie_code bgt_budgetmutatie.bgt_budgetmutatie_code%TYPE;
v_mutatie_level_van VARCHAR2(1);
v_mutatie_level_naar VARCHAR2(1);
v_soort_mutatie VARCHAR2(1);
v_budget_isreserve bgt_budget.bgt_budget_isreserve%TYPE;
BEGIN
BEGIN
SELECT m.bgt_budget_key_van
, m.bgt_budget_key_naar
, m.bgt_budgetmutatie_omschrijving
, m.bgt_budgetmutatie_reserve
, m.bgt_budgetmutatie_code
, CASE WHEN bv.prs_kostensoort_key IS NOT NULL
THEN 'S'
ELSE CASE WHEN bv.prs_kostensoortgrp_key IS NOT NULL
THEN 'G'
ELSE CASE WHEN bv.bgt_kostenrubriek_key IS NOT NULL
THEN 'R'
ELSE 'P'
END
END
END mutatie_level_van
, CASE WHEN bn.prs_kostensoort_key IS NOT NULL
THEN 'S'
ELSE CASE WHEN bn.prs_kostensoortgrp_key IS NOT NULL
THEN 'G'
ELSE CASE WHEN bn.bgt_kostenrubriek_key IS NOT NULL
THEN 'R'
ELSE 'P'
END
END
END mutatie_level_naar
, bv.bgt_budget_isreserve
INTO v_budget_van
, v_budget_naar
, v_mutatie_omschrijving
, v_mutatie_reserve
, v_mutatie_code
, v_mutatie_level_van
, v_mutatie_level_naar
, v_budget_isreserve
FROM bgt_budget bv
, bgt_budget bn
, bgt_budgetmutatie m
WHERE m.bgt_budget_key_van = bv.bgt_budget_key(+)
AND m.bgt_budget_key_naar = bn.bgt_budget_key(+)
AND m.bgt_budgetmutatie_key = p_mutatie_key;
--
-- Mutatie van-naar reserve (tussen algemeenreserve en kostensoort of kostenrubriek en kostensoort)
-- (Is dus allebei tussen kostenrubriek en kostensoort).
-- Maak nog onderscheid tussen automatische overboeking A (correctie van budget tgv meer gecontracteerd dan budget)
-- overboeking wegens meer-minderwerk W
-- en een gewone mutatie van/naar reserve.
IF ( (v_mutatie_level_van = 'R')
OR (v_mutatie_level_naar = 'R')
) THEN
IF (v_mutatie_reserve = 1) THEN -- 'AO Automatische overboeking'
IF (v_mutatie_code = 'W') THEN
v_soort_mutatie := 'W';
ELSE
v_soort_mutatie := 'A';
END IF;
ELSE
v_soort_mutatie := 'R';
END IF;
END IF;
--
-- Mutatie extra budget (er wordt geld aan algemeenreserve, kostenrubriek of kostensoort toegevoegd OF onttrokken.
IF ((v_budget_van = v_budget_naar) OR (v_budget_van IS NULL) OR (v_budget_naar IS NULL) ) THEN
v_soort_mutatie := 'E';
END IF;
--
-- Onderlinge mutatie (mutaties tussen kostensoorten)
IF ( (v_budget_van <> v_budget_naar)
AND (v_mutatie_level_van = 'S')
AND (v_mutatie_level_naar = 'S')
) THEN
v_soort_mutatie := 'M';
END IF;
EXCEPTION
WHEN NO_DATA_FOUND THEN
v_soort_mutatie := NULL;
END;
--
RETURN v_soort_mutatie;
END getSoortMutatie;
FUNCTION getContractwaarde( p_srtkey IN VARCHAR2
, p_key IN NUMBER
, p_btw IN NUMBER
, p_status NUMBER DEFAULT 3
, p_datum_van DATE DEFAULT NULL
, p_datum_tot DATE DEFAULT NULL -- eigenlijk: tot-en-met
) RETURN NUMBER
IS
v_bedrag NUMBER;
BEGIN
-- p_srtkey: SRT=prs_kostensoort_key, OPDR=mld_opdr_key.
-- p_btw: 0=excl.btw, 1=btw, 2=incl.btw.
-- p_status: 1=raming, 2=gecontracteerd, 3=alles.
BEGIN
SELECT CASE WHEN p_btw=0 THEN SUM(COALESCE(mld_opdr_kosten, 0))
WHEN p_btw=1 THEN SUM(COALESCE(mld_opdr_kosten_btw, 0))
WHEN p_btw=2 THEN SUM(COALESCE(mld_opdr_kosten, 0)) + SUM(COALESCE(mld_opdr_kosten_btw, 0))
END contracten
INTO v_bedrag
FROM mld_opdr
WHERE p_key = DECODE(p_srtkey, 'SRT', prs_kostensoort_key, 'OPDR', mld_opdr_key)
AND ( (p_status = 1 AND mld_statusopdr_key = 10)
OR (p_status = 2 AND mld_statusopdr_key <> 10)
OR (p_status = 3 AND mld_statusopdr_key = mld_statusopdr_key)
)
AND ((p_datum_van IS NOT NULL AND TRUNC(mld_opdr_datumbegin) >= p_datum_van) OR p_datum_van IS NULL)
AND ((p_datum_tot IS NOT NULL AND TRUNC(mld_opdr_datumbegin) <= p_datum_tot) OR p_datum_tot IS NULL);
EXCEPTION
WHEN NO_DATA_FOUND THEN
v_bedrag := NULL;
END;
RETURN v_bedrag;
END getContractwaarde;
FUNCTION getRaming( p_mld_opdr_key IN NUMBER
, p_btw IN NUMBER
, p_datum_van DATE DEFAULT NULL
, p_datum_tot DATE DEFAULT NULL
) RETURN NUMBER
IS
v_bedrag NUMBER;
BEGIN
v_bedrag := BGT.getContractwaarde('OPDR', p_mld_opdr_key, p_btw, 1, p_datum_van, p_datum_tot);
RETURN v_bedrag;
END getRaming;
FUNCTION getGecontracteerd( p_mld_opdr_key IN NUMBER
, p_btw IN NUMBER
, p_datum_van DATE DEFAULT NULL
, p_datum_tot DATE DEFAULT NULL
) RETURN NUMBER
IS
v_bedrag NUMBER;
BEGIN
v_bedrag := BGT.getContractwaarde('OPDR', p_mld_opdr_key, p_btw, 2, p_datum_van, p_datum_tot);
RETURN v_bedrag;
END getGecontracteerd;
FUNCTION getGefactureerdSoort( p_kostensoort_key IN NUMBER
, p_btw IN NUMBER
) RETURN NUMBER
IS
v_bedrag NUMBER;
BEGIN
BEGIN
SELECT SUM(BGT.getGefactureerd(mld_opdr_key, p_btw, NULL, NULL))
INTO v_bedrag
FROM mld_opdr
WHERE prs_kostensoort_key = p_kostensoort_key;
EXCEPTION
WHEN NO_DATA_FOUND THEN
v_bedrag := NULL;
END;
RETURN v_bedrag;
END getGefactureerdSoort;
FUNCTION getGefactureerd ( p_mld_opdr_key IN NUMBER
, p_btw IN NUMBER
, p_datum_van DATE DEFAULT NULL
, p_datum_tot DATE DEFAULT NULL -- eigenlijk: tot-en-met
) RETURN NUMBER
IS
v_bedrag NUMBER;
BEGIN
-- p_btw: 0=excl.btw, 1=btw, 2=incl.btw.
v_bedrag := 0;
BEGIN
SELECT CASE WHEN p_btw=0 THEN SUM(COALESCE(fin_factuur_totaal, 0))
WHEN p_btw=1 THEN SUM(COALESCE(fin_factuur_totaal_btw, 0))
WHEN p_btw=2 THEN SUM(COALESCE(fin_factuur_totaal, 0)) + SUM(COALESCE(fin_factuur_totaal_btw, 0))
END facturen
INTO v_bedrag
FROM fin_factuur
WHERE ((p_datum_van IS NOT NULL AND TRUNC(fin_factuur_advies) >= p_datum_van) OR p_datum_van IS NULL)
AND ((p_datum_tot IS NOT NULL AND TRUNC(fin_factuur_advies) <= p_datum_tot) OR p_datum_tot IS NULL)
AND mld_opdr_key = p_mld_opdr_key;
EXCEPTION
WHEN NO_DATA_FOUND THEN
v_bedrag := 0;
END;
RETURN v_bedrag;
END getGefactureerd;
FUNCTION getTefactureren ( p_mld_opdr_key IN NUMBER
, p_btw IN NUMBER
, p_datum_van DATE DEFAULT NULL
, p_datum_tot DATE DEFAULT NULL
) RETURN NUMBER
IS
v_statusopdr NUMBER;
v_cont NUMBER;
v_fact NUMBER;
v_bedrag NUMBER;
BEGIN
-- p_btw: 0=excl.btw, 1=btw, 2=incl.btw.
v_bedrag := 0;
BEGIN
SELECT NVL(mld_statusopdr_key, 0)
INTO v_statusopdr
FROM mld_opdr
WHERE mld_opdr_key = p_mld_opdr_key;
--
IF (v_statusopdr <> 10) THEN
v_cont := getGecontracteerd(p_mld_opdr_key, p_btw, p_datum_van, p_datum_tot);
v_fact := getGefactureerd(p_mld_opdr_key, p_btw, p_datum_van, p_datum_tot);
v_bedrag := COALESCE(v_cont, 0) - COALESCE(v_fact, 0);
END IF;
END;
RETURN v_bedrag;
END getTefactureren;
END bgt;
/
REGISTERRUN('$Id$')
#endif // BGT

View File

@@ -1,16 +0,0 @@
#ifdef BGT
/*
* $Revision$
* $Id$
*/
CREATE SEQUENCE bgt_s_bgt_disc_params_key MINVALUE 1;
CREATE SEQUENCE bgt_s_bgt_project_key MINVALUE 1;
CREATE SEQUENCE bgt_s_bgt_kostenrubriek_key MINVALUE 1;
CREATE SEQUENCE bgt_s_bgt_budget_key MINVALUE 1;
CREATE SEQUENCE bgt_s_bgt_budgetmutatie_key MINVALUE 1;
REGISTERONCE('$Id$')
#endif // BGT

View File

@@ -1,166 +0,0 @@
#ifdef BGT
/*
* $Revision$
* $Id$
*/
/* discipline=project */
CREATE_TABLE(bgt_disc_params,0)
(
bgt_disc_params_key
NUMBER (10) PRIMARY KEY NOT NULL,
bgt_ins_discipline_key
NUMBER (10)
CONSTRAINT bgt_r_ins_discipine_key REFERENCES ins_tab_discipline (ins_discipline_key),
bgt_disc_params_code -- projectcode
VARCHAR2 (20 CHAR),
bgt_disc_params_opdrachtgever
VARCHAR2 (200 CHAR),
bgt_disc_params_startdatum
DATE
);
/* deelproject */
CREATE_TABLE(bgt_project, 0)
(
bgt_project_key
NUMBER (10) PRIMARY KEY NOT NULL,
ins_discipline_key
NUMBER (10)
CONSTRAINT bgt_r_ins_discipline_key1 REFERENCES ins_tab_discipline (ins_discipline_key),
bgt_project_code
VARCHAR2 (20 CHAR)
CONSTRAINT bgt_c_bgt_project_code NOT NULL,
bgt_project_omschrijving
VARCHAR2 (60 CHAR),
bgt_project_volgnr
NUMBER (3),
bgt_project_prijspeildatum
DATE,
bgt_project_info
VARCHAR2 (4000 CHAR),
bgt_project_notes
VARCHAR2 (4000 CHAR),
bgt_project_aanmaak
DATE DEFAULT SYSDATE,
bgt_project_verwijder
DATE,
prs_kostenplaats_key
NUMBER (10)
CONSTRAINT bgt_r_prs_kostenplaats_key1 REFERENCES prs_kostenplaats (prs_kostenplaats_key),
CONSTRAINT bgt_u_bgt_project UNIQUE(ins_discipline_key, bgt_project_code, bgt_project_verwijder)
);
CREATE_TABLE(bgt_kostenrubriek,0)
(
bgt_kostenrubriek_key
NUMBER (10) PRIMARY KEY NOT NULL,
bgt_project_key
NUMBER (10)
CONSTRAINT bgt_c_bgt_kostenrubriek1 NOT NULL
CONSTRAINT bgt_r_bgt_project_key1 REFERENCES bgt_project (bgt_project_key),
bgt_kostenrubriek_code
VARCHAR2 (20 CHAR),
bgt_kostenrubriek_oms
VARCHAR2 (60 CHAR) NOT NULL,
fin_btwtabelwaarde_key
NUMBER(10)
CONSTRAINT bgt_r_fin_btwtabelwaarde_key REFERENCES fin_btwtabelwaarde (fin_btwtabelwaarde_key)
);
ALTER TABLE prs_kostensoortgrp ADD bgt_kostenrubriek_key NUMBER(10) CONSTRAINT prs_r_bgt_kostenrubriek_key1 REFERENCES bgt_kostenrubriek (bgt_kostenrubriek_key);
CREATE_TABLE(bgt_budget,1)
(
bgt_budget_key
NUMBER (10) PRIMARY KEY NOT NULL,
ins_discipline_key
NUMBER (10)
CONSTRAINT prs_r_ins_discipline_key1 REFERENCES ins_tab_discipline (ins_discipline_key), /* ik denk nog not null?*/
bgt_project_key
NUMBER (10)
CONSTRAINT prs_r_bgt_project_key1 REFERENCES bgt_project (bgt_project_key), /* ik denk nog not null?*/
bgt_kostenrubriek_key
NUMBER (10)
CONSTRAINT prs_r_bgt_kostenrubriek_key2 REFERENCES bgt_kostenrubriek (bgt_kostenrubriek_key),
prs_kostensoortgrp_key
NUMBER (10)
CONSTRAINT prs_r_kostensoortgrp_key2 REFERENCES prs_kostensoortgrp (prs_kostensoortgrp_key),
prs_kostensoort_key
NUMBER (10)
CONSTRAINT prs_r_kostensoort_key2 REFERENCES prs_kostensoort (prs_kostensoort_key),
prs_kostenplaatsgrp_key
NUMBER (10)
CONSTRAINT prs_r_kostenplaatsgrp_key3 REFERENCES prs_kostenplaatsgrp (prs_kostenplaatsgrp_key),
prs_kostenplaats_key
NUMBER (10)
CONSTRAINT prs_r_kostenplaats_key5 REFERENCES prs_kostenplaats (prs_kostenplaats_key),
bgt_budget_bedrag
NUMBER (12,2),
bgt_budget_btwbedrag
NUMBER (12,2),
bgt_budget_isreserve
NUMBER(1)
DEFAULT (0)
NOT NULL
CONSTRAINT bgt_c_bgt_budget_isreserve CHECK(bgt_budget_isreserve IN (0,1)),
bgt_budget_begin
DATE,
bgt_budget_eind
DATE,
bgt_budget_aanmaak
DATE DEFAULT SYSDATE,
bgt_budget_vervaldatum
DATE, -- of gewoon verwijderdatum?
CONSTRAINT bgt_c_bgt_budget1 CHECK ( (bgt_budget_isreserve = 0 AND ( bgt_kostenrubriek_key IS NOT NULL
OR (bgt_kostenrubriek_key IS NOT NULL AND prs_kostensoortgrp_key IS NOT NULL)
OR (bgt_kostenrubriek_key IS NOT NULL AND prs_kostensoortgrp_key IS NOT NULL AND prs_kostensoort_key IS NOT NULL)
OR prs_kostenplaatsgrp_key IS NOT NULL
OR (prs_kostenplaatsgrp_key IS NOT NULL AND prs_kostenplaats_key IS NOT NULL)
)
)
OR (bgt_budget_isreserve = 1 AND prs_kostensoortgrp_key IS NULL AND prs_kostenplaats_key IS NULL)
),
CONSTRAINT bgt_u_budget UNIQUE (bgt_kostenrubriek_key, prs_kostensoortgrp_key, prs_kostensoort_key)
);
-- under construction
CREATE_TABLE(bgt_budgetmutatie, 1)
(
bgt_budgetmutatie_key
NUMBER (10) PRIMARY KEY,
bgt_budgetmutatie_datum
DATE NOT NULL,
bgt_budgetmutatie_omschrijving
VARCHAR2 (100) NOT NULL,
prs_perslid_key
NUMBER (10)
NOT NULL
CONSTRAINT bgt_r_prs_perslid_key2 REFERENCES prs_perslid (prs_perslid_key),
bgt_budget_key_van
NUMBER (10)
CONSTRAINT bgt_r_bgt_budget1 REFERENCES bgt_budget (bgt_budget_key),
bgt_budget_bedrag_van
NUMBER (12, 2),
bgt_budget_btwbedrag_van
NUMBER (12, 2),
bgt_budget_key_naar
NUMBER (10)
CONSTRAINT bgt_r_bgt_budget2 REFERENCES bgt_budget (bgt_budget_key),
bgt_budget_bedrag_naar
NUMBER (12, 2),
bgt_budget_btwbedrag_naar
NUMBER (12, 2),
bgt_budgetmutatie_reserve
NUMBER (1)
DEFAULT (0)
NOT NULL,
bgt_budgetmutatie_code
VARCHAR2 (2),
bgt_budgetmutatie_volgnr
NUMBER (3),
CONSTRAINT bgt_c_bgt_budget_key1 CHECK(bgt_budget_key_van IS NOT NULL OR bgt_budget_key_naar IS NOT NULL)
);
REGISTERONCE('$Id$')
#endif // BGT

View File

@@ -1,94 +0,0 @@
#ifdef BGT
/*
* $Revision$
* $Id$
*/
AUDIT_BEGIN(bgt_disc_params)
AUDIT_VALUE(bgt_disc_params, bgt_ins_discipline_key)
AUDIT_END()
CREATE_TRIGGER(bgt_t_bgt_disc_params_b_i)
BEFORE INSERT ON bgt_disc_params
FOR EACH ROW
BEGIN
UPDATE_PRIMARY_KEY(bgt_disc_params_key, bgt_s_bgt_disc_params_key);
END;
/
CREATE_TRIGGER(bgt_t_bgt_project_B_I)
BEFORE INSERT ON bgt_project
FOR EACH ROW
BEGIN
UPDATE_PRIMARY_KEY(bgt_project_key,bgt_s_bgt_project_key);
END;
/
CREATE_TRIGGER(bgt_t_bgt_kostenrubriek_B_I)
BEFORE INSERT ON bgt_kostenrubriek
FOR EACH ROW
BEGIN
UPDATE_PRIMARY_KEY(bgt_kostenrubriek_key,bgt_s_bgt_kostenrubriek_key);
END;
/
CREATE_TRIGGER(bgt_t_bgt_budget_B_I)
BEFORE INSERT ON bgt_budget
FOR EACH ROW
BEGIN
UPDATE_PRIMARY_KEY(bgt_budget_key,bgt_s_bgt_budget_key);
END;
/
CREATE_TRIGGER(bgt_t_bgt_budgetmutatie_B_I)
BEFORE INSERT ON bgt_budgetmutatie
FOR EACH ROW
BEGIN
UPDATE_PRIMARY_KEY(bgt_budgetmutatie_key,bgt_s_bgt_budgetmutatie_key);
END;
/
CREATE_TRIGGER(bgt_t_bgt_budgetmutatie_B_IU)
BEFORE INSERT OR UPDATE ON bgt_budgetmutatie
FOR EACH ROW
BEGIN
-- Bij insert moet het nieuwe mutatiebedrag bij het budgetbedrag worden opgeteld.
-- Bij update moet het VERSCHIL tussen het oude- en nieuwe mutatiebedrag bij het budgetbedrag worden opgeteld.
IF (:new.bgt_budget_key_van IS NOT NULL) THEN
UPDATE bgt_budget
SET bgt_budget_bedrag = NVL(bgt_budget_bedrag, 0) + (NVL(:new.bgt_budget_bedrag_van, 0) - NVL(:old.bgt_budget_bedrag_van, 0))
, bgt_budget_btwbedrag = NVL(bgt_budget_btwbedrag, 0) + (NVL(:new.bgt_budget_btwbedrag_van, 0) - NVL(:old.bgt_budget_btwbedrag_van, 0))
WHERE bgt_budget_key = :new.bgt_budget_key_van;
END IF;
IF (:new.bgt_budget_key_naar IS NOT NULL) THEN
UPDATE bgt_budget
SET bgt_budget_bedrag = NVL(bgt_budget_bedrag, 0) + (NVL(:new.bgt_budget_bedrag_naar, 0) - NVL(:old.bgt_budget_bedrag_naar, 0))
, bgt_budget_btwbedrag = NVL(bgt_budget_btwbedrag, 0) + (NVL(:new.bgt_budget_btwbedrag_naar, 0) - NVL(:old.bgt_budget_btwbedrag_naar, 0))
WHERE bgt_budget_key = :new.bgt_budget_key_naar;
END IF;
END;
/
CREATE_TRIGGER(bgt_t_bgt_budgetmutatie_B_D)
BEFORE DELETE ON bgt_budgetmutatie
FOR EACH ROW
BEGIN
IF (:old.bgt_budget_key_van IS NOT NULL) THEN
UPDATE bgt_budget
SET bgt_budget_bedrag = NVL(bgt_budget_bedrag, 0) - NVL(:old.bgt_budget_bedrag_van, 0)
, bgt_budget_btwbedrag = NVL(bgt_budget_btwbedrag, 0) - NVL(:old.bgt_budget_btwbedrag_van, 0)
WHERE bgt_budget_key = :old.bgt_budget_key_van;
END IF;
IF (:old.bgt_budget_key_naar IS NOT NULL) THEN
UPDATE bgt_budget
SET bgt_budget_bedrag = NVL(bgt_budget_bedrag, 0) - NVL(:old.bgt_budget_bedrag_naar, 0)
, bgt_budget_btwbedrag = NVL(bgt_budget_btwbedrag, 0) - NVL(:old.bgt_budget_btwbedrag_naar, 0)
WHERE bgt_budget_key = :old.bgt_budget_key_naar;
END IF;
END;
/
REGISTERRUN('$Id$')
#endif // BGT

View File

@@ -1,129 +0,0 @@
#ifdef BGT
/*
* $Revision$
* $Id$
*/
CREATE_VIEW(ctr_discipline, 0)
AS
SELECT * FROM ins_tab_discipline WHERE ins_discipline_module = 'BGT';
DEFINIEER_VIEW_AANWEZIG(ctr_discipline, ins_discipline_verwijder,
bgt_v_aanwezigdiscipline, 0);
CREATE OR REPLACE VIEW bgt_v_project_gegevens
AS
SELECT pr.ins_discipline_key FCLT_3D_DISCIPLINE_KEY
, pr.ins_discipline_key
, pr.bgt_project_key
, dp.bgt_disc_params_opdrachtgever opdrachtgever
, dp.bgt_disc_params_code pcode
, dp.bgt_disc_params_code || ' ' || id.ins_discipline_omschrijving project
, id.ins_discipline_omschrijving projectnaam
, pr.bgt_project_code dcode
, pr.bgt_project_code || ' - ' || pr.bgt_project_omschrijving subproject
, pr.bgt_project_omschrijving subprojectnaam
, id.ins_discipline_verwijder
, pr.bgt_project_verwijder
FROM ins_tab_discipline id
, bgt_disc_params dp
, bgt_project pr
WHERE id.ins_discipline_module = 'BGT'
AND id.ins_discipline_key = dp.bgt_ins_discipline_key
AND id.ins_discipline_key = pr.ins_discipline_key;
CREATE OR REPLACE VIEW bgt_v_project_full
AS
SELECT pr.ins_discipline_key FCLT_3D_DISCIPLINE_KEY
, pr.ins_discipline_key
, pr.bgt_project_key
, pr.opdrachtgever
, pr.pcode
, pr.project
, pr.projectnaam
, pr.dcode
, pr.subproject
, pr.subprojectnaam
, pr.ins_discipline_verwijder
, pr.bgt_project_verwijder
, kr.bgt_kostenrubriek_key
, kr.bgt_kostenrubriek_code rcode
, kr.bgt_kostenrubriek_oms kostenrubriek
, NULL prs_kostensoortgrp_key
, NULL gcode
, NULL kostengroep
, NULL prs_kostensoort_key
, NULL scode
, NULL kostensoort
, kr.bgt_kostenrubriek_code kostencode
, SUBSTR(kr.bgt_kostenrubriek_oms, INSTR(kr.bgt_kostenrubriek_oms, ' ',1,1)+1) kostennaam
FROM bgt_v_project_gegevens pr
, bgt_kostenrubriek kr
WHERE pr.bgt_project_key = kr.bgt_project_key
UNION
SELECT pr.ins_discipline_key FCLT_3D_DISCIPLINE_KEY
, pr.ins_discipline_key
, pr.bgt_project_key
, pr.opdrachtgever
, pr.pcode
, pr.project
, pr.projectnaam
, pr.dcode
, pr.subproject
, pr.subprojectnaam
, pr.ins_discipline_verwijder
, pr.bgt_project_verwijder
, kr.bgt_kostenrubriek_key
, kr.bgt_kostenrubriek_code rcode
, kr.bgt_kostenrubriek_oms kostenrubriek
, kg.prs_kostensoortgrp_key
, kg.prs_kostensoortgrp_altcode gcode
, kg.prs_kostensoortgrp_oms kostengroep
, NULL
, NULL
, NULL
, kg.prs_kostensoortgrp_altcode kostencode
, SUBSTR(kg.prs_kostensoortgrp_oms, INSTR(kg.prs_kostensoortgrp_oms, ' ',1,1)+1) kostennaam
FROM bgt_v_project_gegevens pr
, bgt_kostenrubriek kr
, prs_kostensoortgrp kg
WHERE pr.bgt_project_key = kr.bgt_project_key
AND kr.bgt_kostenrubriek_key = kg.bgt_kostenrubriek_key
UNION
SELECT pr.ins_discipline_key FCLT_3D_DISCIPLINE_KEY
, pr.ins_discipline_key
, pr.bgt_project_key
, pr.opdrachtgever
, pr.pcode
, pr.project
, pr.projectnaam
, pr.dcode
, pr.subproject
, pr.subprojectnaam
, pr.ins_discipline_verwijder
, pr.bgt_project_verwijder
, kr.bgt_kostenrubriek_key
, kr.bgt_kostenrubriek_code rcode
, kr.bgt_kostenrubriek_oms kostenrubriek
, kg.prs_kostensoortgrp_key
, kg.prs_kostensoortgrp_altcode gcode
, kg.prs_kostensoortgrp_oms kostengroep
, ks.prs_kostensoort_key
, ks.prs_kostensoort_altcode scode
, ks.prs_kostensoort_oms kostensoort
, ks.prs_kostensoort_altcode kostencode
, SUBSTR(ks.prs_kostensoort_oms, INSTR(ks.prs_kostensoort_oms, ' ',1,1)+1) kostennaam
FROM bgt_v_project_gegevens pr
, bgt_kostenrubriek kr
, prs_kostensoortgrp kg
, prs_kostensoort ks
WHERE pr.bgt_project_key = kr.bgt_project_key
AND kr.bgt_kostenrubriek_key = kg.bgt_kostenrubriek_key
AND kg.prs_kostensoortgrp_key = ks.prs_kostensoortgrp_key;
REGISTERRUN('$Id$')
#endif // BGT

View File

@@ -2,29 +2,111 @@
/* CAD_INI.SRC
* $Revision$
* $Id$
*
* Initialisatie die nooit fout is
*/
_FAC_MODULE('CAD','lcl_module_CAD')
_FAC_MODULE('CAD','Facilitor Graphics')
INSERT INTO cad_legenda (cad_legenda_key, cad_legenda_omschrijving, cad_legenda_discreet) VALUES (1, 'Default legenda', 1);
INSERT INTO cad_legenda (cad_legenda_key, cad_legenda_omschrijving, cad_legenda_discreet) VALUES (2, 'Aantallen', 0);
// IN prj_ini: INSERT INTO cad_legenda (cad_legenda_key, cad_legenda_omschrijving, cad_legenda_discreet) VALUES (3, 'Default project legenda', 1);
-- Een voorbeeldlegenda
INSERT INTO cad_legendawaarde (cad_legenda_key, cad_legendawaarde_value, cad_legendawaarde_rgb, cad_legendawaarde_omschr) VALUES (2,'0','FFFFFF','0');
INSERT INTO cad_legendawaarde (cad_legenda_key, cad_legendawaarde_value, cad_legendawaarde_rgb, cad_legendawaarde_omschr) VALUES (2,'1','FDF68D','01');
INSERT INTO cad_legendawaarde (cad_legenda_key, cad_legendawaarde_value, cad_legendawaarde_rgb, cad_legendawaarde_omschr) VALUES (2,'2','FFF10F','02');
INSERT INTO cad_legendawaarde (cad_legenda_key, cad_legendawaarde_value, cad_legendawaarde_rgb, cad_legendawaarde_omschr) VALUES (2,'3','FFDD81','03');
INSERT INTO cad_legendawaarde (cad_legenda_key, cad_legendawaarde_value, cad_legendawaarde_rgb, cad_legendawaarde_omschr) VALUES (2,'4','FDC01B','04');
INSERT INTO cad_legendawaarde (cad_legenda_key, cad_legendawaarde_value, cad_legendawaarde_rgb, cad_legendawaarde_omschr) VALUES (2,'5','FFBF81','05');
INSERT INTO cad_legendawaarde (cad_legenda_key, cad_legendawaarde_value, cad_legendawaarde_rgb, cad_legendawaarde_omschr) VALUES (2,'10','FF8309','10');
INSERT INTO cad_legendawaarde (cad_legenda_key, cad_legendawaarde_value, cad_legendawaarde_rgb, cad_legendawaarde_omschr) VALUES (2,'20','FF8143','20');
INSERT INTO cad_legendawaarde (cad_legenda_key, cad_legendawaarde_value, cad_legendawaarde_rgb, cad_legendawaarde_omschr) VALUES (2,'50','FF5A09','50');
INSERT INTO cad_legendawaarde (cad_legenda_key, cad_legendawaarde_value, cad_legendawaarde_rgb, cad_legendawaarde_omschr) VALUES (2,'99','FF0000','99');
INSERT INTO cad_legenda (cad_legenda_omschrijving, cad_legenda_discreet) VALUES ('Default legenda', 1);
INSERT INTO cad_legenda (cad_legenda_omschrijving, cad_legenda_discreet) VALUES ('Aantallen', 0);
-- Overige thema's en label's in de INI's
UPDATE cad_legenda SET cad_legenda_key=1 WHERE cad_legenda_omschrijving='Default legenda';
UPDATE cad_legenda SET cad_legenda_key=2 WHERE cad_legenda_omschrijving='Aantallen';
INSERT INTO cad_legendawaarde (cad_legenda_key, cad_legendawaarde_value, cad_legendawaarde_rgb, cad_legendawaarde_omschr)
VALUES (2,'0','FFFFFF','0');
INSERT INTO cad_legendawaarde (cad_legenda_key, cad_legendawaarde_value, cad_legendawaarde_rgb, cad_legendawaarde_omschr)
VALUES (2,'1','FDF68D','01');
INSERT INTO cad_legendawaarde (cad_legenda_key, cad_legendawaarde_value, cad_legendawaarde_rgb, cad_legendawaarde_omschr)
VALUES (2,'2','FFF10F','02');
INSERT INTO cad_legendawaarde (cad_legenda_key, cad_legendawaarde_value, cad_legendawaarde_rgb, cad_legendawaarde_omschr)
VALUES (2,'3','FFDD81','03');
INSERT INTO cad_legendawaarde (cad_legenda_key, cad_legendawaarde_value, cad_legendawaarde_rgb, cad_legendawaarde_omschr)
VALUES (2,'4','FDC01B','04');
INSERT INTO cad_legendawaarde (cad_legenda_key, cad_legendawaarde_value, cad_legendawaarde_rgb, cad_legendawaarde_omschr)
VALUES (2,'5','FFBF81','05');
INSERT INTO cad_legendawaarde (cad_legenda_key, cad_legendawaarde_value, cad_legendawaarde_rgb, cad_legendawaarde_omschr)
VALUES (2,'10','FF8309','10');
INSERT INTO cad_legendawaarde (cad_legenda_key, cad_legendawaarde_value, cad_legendawaarde_rgb, cad_legendawaarde_omschr)
VALUES (2,'20','FF8143','20');
INSERT INTO cad_legendawaarde (cad_legenda_key, cad_legendawaarde_value, cad_legendawaarde_rgb, cad_legendawaarde_omschr)
VALUES (2,'50','FF5A09','50');
INSERT INTO cad_legendawaarde (cad_legenda_key, cad_legendawaarde_value, cad_legendawaarde_rgb, cad_legendawaarde_omschr)
VALUES (2,'99','FF0000','99');
INSERT INTO cad_thema (cad_thema_omschrijving, cad_legenda_key, cad_thema_view, cad_thema_type, fac_functie_key)
SELECT 'Ruimtefunctie', 1, 'cad_v_thema_srtruimte', 1, fac_functie_key
FROM fac_functie
WHERE fac_functie_code = 'WEB_ALGUSE';
INSERT INTO cad_thema (cad_thema_omschrijving, cad_legenda_key, cad_thema_view, cad_thema_type, fac_functie_key)
SELECT 'Vloerafwerking', 1, 'cad_v_thema_vloerafwerking', 1, fac_functie_key
FROM fac_functie
WHERE fac_functie_code = 'WEB_ALGUSE';
INSERT INTO cad_thema (cad_thema_omschrijving, cad_legenda_key, cad_thema_view, cad_thema_type, fac_functie_key)
SELECT 'Open meldingen', 2, 'cad_v_thema_openmeldingen', 1, fac_functie_key
FROM fac_functie
WHERE fac_functie_code = 'WEB_MLDBAC';
INSERT INTO CAD_THEMA
( CAD_THEMA_OMSCHRIJVING, CAD_LEGENDA_KEY, CAD_THEMA_VIEW, CAD_THEMA_TYPE, fac_functie_key )
SELECT 'Bezetting: aantal werkplekken', 1, 'CAD_V_THEMA_AANTALWP', '1', fac_functie_key
from fac_functie
where fac_functie_code = 'WEB_PRSBOF';
INSERT INTO CAD_THEMA
( CAD_THEMA_OMSCHRIJVING, CAD_LEGENDA_KEY, CAD_THEMA_VIEW,CAD_THEMA_TYPE, fac_functie_key )
SELECT 'Oppervlakte: Gemiddeld/werkplek', 1, 'CAD_V_THEMA_WPOPP', '1', fac_functie_key
from fac_functie
where fac_functie_code = 'WEB_PRSBOF';
-- NB: deze gaat met vaste key 12, een harde default voor infobord.
INSERT INTO cad_thema
( cad_thema_key, cad_thema_omschrijving, cad_legenda_key, cad_thema_view, cad_thema_type, fac_functie_key )
SELECT 12, 'Actuele bezetting', 1, 'cad_v_thema_srtruimtesensor', '1', fac_functie_key
from fac_functie
where fac_functie_code = 'WEB_RESFOF';
-- De cad_thema_key sequence gaat later vanzelf wel verder met 21.
INSERT INTO cad_label (cad_label_omschrijving, cad_label_view, cad_label_type, fac_functie_key, cad_label_size)
SELECT 'Ruimtefunctie/opp', 'cad_v_label_srtruimteopp', 1, fac_functie_key, 360
FROM fac_functie
WHERE fac_functie_code = 'WEB_ALGUSE';
INSERT INTO cad_label (cad_label_omschrijving, cad_label_view, cad_label_type, fac_functie_key, cad_label_size)
SELECT 'Bewoners', 'cad_v_label_bewoner', 1, fac_functie_key, 300
FROM fac_functie
WHERE fac_functie_code = 'WEB_PRSUSE';
INSERT INTO CAD_LABEL
( CAD_LABEL_OMSCHRIJVING, CAD_LABEL_VIEW, CAD_LABEL_TYPE, CAD_LABEL_SIZE, FAC_FUNCTIE_KEY )
SELECT 'Werkplekken', 'cad_v_label_werkplekken', '1', 800, fac_functie_key
from fac_functie
where fac_functie_code = 'WEB_PRSBOF';
INSERT INTO CAD_LABEL
( CAD_LABEL_OMSCHRIJVING, CAD_LABEL_VIEW, CAD_LABEL_TYPE, CAD_LABEL_SIZE, FAC_FUNCTIE_KEY )
SELECT 'Bewoners/werkplekken', 'cad_v_label_bewonerwp', '1', 800, fac_functie_key
from fac_functie
where fac_functie_code = 'WEB_PRSUSE';
INSERT INTO CAD_LABEL
( CAD_LABEL_OMSCHRIJVING, CAD_LABEL_VIEW, CAD_LABEL_TYPE, CAD_LABEL_SIZE, FAC_FUNCTIE_KEY )
SELECT 'Ruimtefunctie/opp', 'prj_v_cad_v_label_srtruimteopp', '5', 800, fac_functie_key
from fac_functie
where fac_functie_code = 'WEB_ALGUSE';
-- NB: deze gaat met vaste key 12, een harde default voor infobord.
INSERT INTO cad_label
( cad_label_key, cad_label_omschrijving, cad_label_view, cad_label_type, cad_label_size, cad_label_visible, fac_functie_key )
SELECT 12, 'Flexibele ruimtes', 'cad_v_label_bezetbareruimtes', '1', 500, 0, fac_functie_key
from fac_functie
where fac_functie_code = 'WEB_RESFOF';
-- De cad_label_key sequence gaat later vanzelf wel verder met 21.
REGISTERONCE('$Id$')

View File

@@ -6,7 +6,7 @@
CREATE SEQUENCE cad_s_cad_tekening_key MINVALUE 1;
CREATE SEQUENCE cad_s_cad_legenda_key MINVALUE 21;
CREATE SEQUENCE cad_s_cad_legenda_key MINVALUE 1;
CREATE SEQUENCE cad_s_cad_legendawaarde_key MINVALUE 1;
CREATE SEQUENCE cad_s_cad_thema_key MINVALUE 1;
CREATE SEQUENCE cad_s_cad_label_key MINVALUE 1;

View File

@@ -15,7 +15,7 @@ CREATE_TABLE(cad_tekening, 0)
NUMBER(10)
NOT_NULL(alg_locatie_key, cad_c_alg_locatie_key)
CONSTRAINT cad_r_alg_locatie_key REFERENCES alg_locatie(alg_locatie_key) ON DELETE CASCADE,
alg_verdieping_key
alg_verdieping_key
NUMBER(10)
CONSTRAINT cad_r_alg_verdieping_key REFERENCES alg_verdieping(alg_verdieping_key) ON DELETE CASCADE,
cad_tekening_filenaam
@@ -82,11 +82,9 @@ CREATE_TABLE(cad_thema,0)
(
cad_thema_key
NUMBER(10) PRIMARY KEY,
cad_thema_omschrijving /* de naam */
cad_thema_omschrijving
VARCHAR2(60)
NOT_NULL(cad_thema_omschrijving, cad_c_cad_thema_omschr),
cad_thema_opmerking /* de uitleg */
VARCHAR2(4000),
cad_legenda_key
NUMBER(10)
CONSTRAINT cad_r_cad_legenda_key REFERENCES cad_legenda(cad_legenda_key),
@@ -94,37 +92,22 @@ CREATE_TABLE(cad_thema,0)
VARCHAR2(1000)
NOT_NULL(cad_thema_view, cad_c_cad_thema_view),
cad_thema_type
NUMBER(3)
VARCHAR2(3)
CONSTRAINT cad_c_cad_thema_type CHECK (cad_thema_type BETWEEN 1 AND 255),
fac_functie_key
NUMBER(10)
CONSTRAINT cad_fac_functie_key1 REFERENCES fac_functie(fac_functie_key),
cad_thema_onclick_url
VARCHAR2(512),
cad_thema_aanmaak
DATE
DEFAULT SYSDATE
CONSTRAINT cad_c_cad_thema_aanmaak NOT NULL
VARCHAR2(512)
);
ALTER TABLE mld_stdmelding
ADD
(
cad_thema_key
NUMBER(10)
CONSTRAINT mld_r_cad_thema_key1 REFERENCES cad_thema(cad_thema_key)
);
CREATE_TABLE(cad_label,0)
(
cad_label_key
NUMBER(10) PRIMARY KEY,
cad_label_omschrijving /* de naam */
cad_label_omschrijving
VARCHAR2(60)
NOT_NULL(cad_label_omschrijving, cad_c_cad_label_omschr),
cad_label_opmerking /* de uitleg */
VARCHAR2(4000),
cad_label_view
VARCHAR2(1000)
NOT_NULL(cad_label_view, cad_c_cad_label_view),
@@ -133,20 +116,14 @@ CREATE_TABLE(cad_label,0)
CONSTRAINT cad_c_cad_label_type CHECK (cad_label_type BETWEEN 1 AND 31),
cad_label_size
NUMBER,
cad_label_rotation
NUMBER(3), /* (0-360) */
fac_functie_key
NUMBER(10)
CONSTRAINT cad_fac_functie_key2 REFERENCES fac_functie(fac_functie_key),
cad_label_visible /* eigenlijk zou cad_label_label_visible beter zijn, of het id-label erbij getoond moet worden */
cad_label_visible
NUMBER(1)
DEFAULT 1
NOT NULL
CONSTRAINT cad_c_cad_label_visible CHECK (cad_label_visible IN (0,1)),
cad_label_aanmaak
DATE
DEFAULT SYSDATE
CONSTRAINT cad_c_cad_label_aanmaak NOT NULL
CONSTRAINT cad_c_cad_label_visible CHECK (cad_label_visible IN (0,1))
);
CREATE_TABLE(cad_imp_contour,0)

View File

@@ -11,6 +11,51 @@ CREATE_VIEW(cad_v_cad_aanwezigtekening,0) AS
FROM ins_discipline)
OR C_T.ins_discipline_key IS NULL);
CREATE_VIEW(cad_v_cad_tekening_gegevens,0)
(cad_tekening_key,
alg_locatie_key,
alg_locatie_code,
alg_gebouw_key,
alg_gebouw_code,
alg_verdieping_key,
alg_verdieping_omschrijving,
ins_discipline_key,
ins_discipline_omschrijving) AS
SELECT C_T.cad_tekening_key,
C_T.alg_locatie_key,
ALG_L.alg_locatie_code,
ALG_G.alg_gebouw_key,
ALG_G.alg_gebouw_code,
C_T.alg_verdieping_key,
ALG_V.alg_verdieping_omschrijving,
C_T.ins_discipline_key,
INS_D.ins_discipline_omschrijving
FROM alg_locatie ALG_L,
alg_verdieping ALG_V,
alg_gebouw ALG_G,
ins_discipline INS_D,
cad_v_cad_aanwezigtekening C_T
WHERE C_T.alg_locatie_key = ALG_L.alg_locatie_key
AND C_T.alg_verdieping_key = ALG_V.alg_verdieping_key (+)
AND ALG_V.alg_gebouw_key = ALG_G.alg_gebouw_key (+)
AND C_T.ins_discipline_key = INS_D.ins_discipline_key (+);
CREATE_VIEW(cad_v_plattegrond,0) AS
SELECT * FROM cad_tekening
WHERE cad_tekening_verwijder IS NULL
AND UPPER(cad_tekening_type) = 'P';
CREATE_VIEW(cad_v_contour,0) AS
SELECT * FROM cad_tekening
WHERE cad_tekening_verwijder IS NULL
AND UPPER(cad_tekening_type) = 'C';
CREATE_VIEW(cad_v_discipline,0) AS
SELECT * FROM cad_tekening
WHERE cad_tekening_verwijder IS NULL
AND UPPER(cad_tekening_type) = 'D';
/* mapping van labels in tekening met ruimtenr in database
* let op: de applicatie kan van een specifieke variant gebruikmaken
* deze heet dan XXXX_V_SYNC..
@@ -36,6 +81,84 @@ SELECT
t.alg_terreinsector_code
FROM alg_v_aanwezigterreinsector t;
/* View met ALLE tekeningen, ongeacht de autorisatie; minimale kolommen, gebruikt in CAD_PAC.SRC */
CREATE_VIEW(cad_v_cad_tekening,0) AS
SELECT ins_discipline_key,
alg_locatie_key,
alg_verdieping_key,
cad_tekening_type,
cad_tekening_filenaam
FROM cad_tekening C_T
WHERE cad_tekening_verwijder IS NULL;
/* 29-06-1998 KTH LOG#1905
* View CAD_V_INS_DEEL wordt door de AutoCAD Map-user FCLTCAD geraadpleegd.
* Bij die user heet de SYNONYM ernaar toe anders (zie CAD_ROL).
*/
CREATE_VIEW(cad_v_ins_deel,0)
(ins_deel_key,
ins_deel_cadlabel,
ins_srtdeel_omschrijving,
ins_deel_oppervlak,
ins_deel_omtrek
) AS
SELECT D.ins_deel_key,
D.ins_deel_omschrijving,
SD.ins_srtdeel_omschrijving,
NVL(TO_CHAR(D.ins_deel_oppervlak),'-')||' m2',
NVL(TO_CHAR(D.ins_deel_omtrek),'-')||' m'
FROM all_v_aanwezigdeel D, ins_srtdeel SD
WHERE SD.ins_srtdeel_key=D.ins_srtdeel_key;
CREATE_VIEW(cad_v_lpn_ins_deel_2,0) AS
SELECT
D.ins_deel_key,
ins_srtkenmerk_omschrijving,
KD.ins_kenmerkdeel_waarde ||' '|| SK.ins_srtkenmerk_dimensie INS_KENMERKDEEL_WAARDE2
FROM
ins_srtkenmerk SK,
ins_kenmerk K,
ins_kenmerkdeel KD,
ins_deel D
WHERE SK.ins_srtkenmerk_key=K.ins_srtkenmerk_key
AND K.ins_kenmerk_key=KD.ins_kenmerk_key
AND KD.ins_deel_key=D.ins_deel_key
AND KD.ins_kenmerkdeel_verwijder IS NULL;
CREATE_VIEW(cad_v_lpn_ins_deel_1,0) AS
SELECT
D.ins_deel_key,
SD.ins_srtdeel_omschrijving,
D.ins_deel_omschrijving
FROM
ins_srtdeel SD,
ins_deel D
WHERE D.ins_srtdeel_key = SD.ins_srtdeel_key;
CREATE_VIEW(cad_v_prs_werkplek,0)
(prs_werkplek_key,
prs_werkplek_cadlabel,
prs_werkplek_volgnr,
prs_werkplek_omschrijving,
prs_werkplek_opp
) AS
SELECT W.prs_werkplek_key,
W.prs_werkplek_volgnr,
W.prs_werkplek_volgnr,
W.prs_werkplek_omschrijving,
W.prs_werkplek_opp /* Alleen een waarde indien prs_werkplek_vastopp 1 is, anders te traag? */
FROM prs_werkplek W;
CREATE_VIEW(cad_v_lpn_prs_werkplek_1,0) AS
SELECT W.prs_werkplek_key,
W.prs_werkplek_volgnr,
W.prs_werkplek_omschrijving
FROM prs_werkplek W;
/* Standard thema/label views */
// Zowel label-views als thema-views hebben de kolommen alg_ruimte_key en waarde
// Feature: Sommige thema views kunnen updatable zijn!
@@ -50,19 +173,22 @@ SELECT
CREATE_VIEW(cad_v_label_bewoner, 0)
(alg_ruimte_key, waarde)
AS
SELECT prs_w.prs_alg_ruimte_key,
prs_p.prs_perslid_naam_friendly
FROM prs_werkplek prs_w, prs_perslidwerkplek prs_pw, prs_v_perslid_fullnames prs_p
WHERE prs_w.prs_werkplek_key = prs_pw.prs_werkplek_key
AND prs_pw.prs_perslid_key IS NOT NULL
AND prs_pw.prs_perslid_key = prs_p.prs_perslid_key
AND prs_w.prs_werkplek_virtueel = 0
UNION
SELECT prs_w.prs_alg_ruimte_key, '['||lcl.l('lcl_free')||']'
FROM prs_werkplek prs_w, prs_v_werkplek_bezetting prs_wb
WHERE prs_w.prs_werkplek_key = prs_wb.prs_werkplek_key
AND prs_w.prs_werkplek_virtueel = 0
AND prs_wb.prs_werkplek_bezetting < 100;
SELECT prs_w.prs_alg_ruimte_key,
prs_p.prs_perslid_naam
|| DECODE (prs_p.prs_perslid_voorletters, NULL, '', ', ' || prs_p.prs_perslid_voorletters)
|| DECODE (prs_p.prs_perslid_voornaam, NULL, '', ' (' || prs_p.prs_perslid_voornaam || ')')
FROM prs_werkplek prs_w, prs_perslidwerkplek prs_pw, prs_perslid prs_p
WHERE prs_w.prs_werkplek_key = prs_pw.prs_werkplek_key
AND prs_pw.prs_perslid_key IS NOT NULL
AND prs_pw.prs_perslid_key = prs_p.prs_perslid_key
AND prs_w.prs_werkplek_virtueel = 0
UNION
SELECT prs_w.prs_alg_ruimte_key, '[Vrij]'
FROM prs_werkplek prs_w, prs_v_werkplek_bezetting prs_wb
WHERE prs_w.prs_werkplek_key = prs_wb.prs_werkplek_key
AND prs_w.prs_werkplek_virtueel = 0
AND prs_wb.prs_werkplek_bezetting < 100;
-- Toont alle afdelingen die aan een ruimte gekoppeld zijn
CREATE_VIEW(cad_v_label_afdelingen, 0)
@@ -112,30 +238,6 @@ BEGIN
END;
/
-- Toont de huidige afdeling die aan een ruimte gekoppeld is, en Meerdere! indien meerdere.
-- Ondersteunt dus (wel) bezettingsintervallen/historie. Niet sleepbaar want geen triviaal antwoord op
-- welke periode je dan moet doen (nu tot onbepaald zou kunnen, en dan moet je dus de huidige periode sluiten)
-- Gebruik prs_afdeling_naam6 formattering (ongeacht S(prs_dep_string))
CREATE_VIEW(cad_v_thema_huidigeafdelingen, 0)
(
alg_ruimte_key
, waarde
)
AS
SELECT x.alg_ruimte_key,
DECODE (x.aantal,
1, SUBSTR (x.sp, 1, 60),
'Meerdere!')
FROM (SELECT ra.alg_ruimte_key,
MIN (d.prs_afdeling_naam || '-' || d.prs_afdeling_omschrijving) sp,
MIN (d.prs_afdeling_key) sp_key,
COUNT (ra.prs_afdeling_key) aantal
FROM prs_v_aanwezigruimteafdeling ra, prs_v_aanwezigafdeling d
WHERE ra.prs_afdeling_key = d.prs_afdeling_key
AND SYSDATE BETWEEN ra.prs_ruimteafdeling_ingangsdatum
AND COALESCE (ra.prs_ruimteafdeling_einddatum, TRUNC (SYSDATE) + 1)
GROUP BY ra.alg_ruimte_key) x;
// De afdelingsbezetting maar dan gebaseerd op de afdelingen
// van de de personen die op de werkplekken zitten
CREATE_VIEW(cad_v_thema_prsafdelingen, 0)
@@ -149,31 +251,37 @@ SELECT wp.prs_alg_ruimte_key, d.prs_afdeling_naam
CREATE_VIEW(cad_v_label_bewonerwp, 0) (alg_ruimte_key,waarde)
AS
SELECT DISTINCT prs_alg_ruimte_key, waarde
FROM (SELECT prs_w.prs_alg_ruimte_key,
CHR (1)
|| prs_w.prs_werkplek_volgnr
|| ' '
|| prs_p.prs_perslid_naam_friendly
|| ' '
|| TO_CHAR (NVL (prs_pw.prs_perslidwerkplek_bezetting, 0))
|| '%'
waarde
FROM prs_werkplek prs_w, prs_perslidwerkplek prs_pw, prs_v_perslid_fullnames prs_p
WHERE prs_w.prs_werkplek_key = prs_pw.prs_werkplek_key
AND prs_pw.prs_perslid_key IS NOT NULL
AND prs_pw.prs_perslid_key = prs_p.prs_perslid_key
UNION
SELECT prs_w.prs_alg_ruimte_key,
CHR (1)
|| prs_w.prs_werkplek_volgnr
|| ' '|| initcap(lcl.l('lcl_free'))||' '
|| TO_CHAR (100 - NVL (SUM (prs_wb.prs_perslidwerkplek_bezetting), 0))
|| '%'
FROM prs_werkplek prs_w, prs_perslidwerkplek prs_wb
WHERE prs_w.prs_werkplek_key = prs_wb.prs_werkplek_key(+)
GROUP BY prs_w.prs_alg_ruimte_key, prs_w.prs_werkplek_key, prs_w.prs_werkplek_volgnr
HAVING SUM (NVL (prs_wb.prs_perslidwerkplek_bezetting, 0)) < 100) data;
SELECT DISTINCT prs_alg_ruimte_key, waarde
FROM (SELECT prs_w.prs_alg_ruimte_key,
CHR (1)
|| prs_w.prs_werkplek_volgnr
|| ' '
|| prs_p.prs_perslid_naam
|| DECODE (prs_p.prs_perslid_voorletters, NULL, '', ', ' || prs_p.prs_perslid_voorletters)
|| DECODE (prs_p.prs_perslid_voornaam, NULL, '', ' (' || prs_p.prs_perslid_voornaam || ')')
|| ': '
|| TO_CHAR (NVL (prs_pw.prs_perslidwerkplek_bezetting, 0))
|| '%' waarde
FROM prs_werkplek prs_w,
prs_perslidwerkplek prs_pw,
prs_perslid prs_p
WHERE prs_w.prs_werkplek_key = prs_pw.prs_werkplek_key
AND prs_pw.prs_perslid_key IS NOT NULL
AND prs_pw.prs_perslid_key = prs_p.prs_perslid_key
UNION
SELECT prs_w.prs_alg_ruimte_key,
CHR (1)
|| prs_w.prs_werkplek_volgnr
|| ' Vrij: '
|| TO_CHAR (100 - NVL (SUM (prs_wb.prs_perslidwerkplek_bezetting), 0))
|| '%'
FROM prs_werkplek prs_w,
prs_perslidwerkplek prs_wb
WHERE prs_w.prs_werkplek_key = prs_wb.prs_werkplek_key(+)
GROUP BY prs_w.prs_alg_ruimte_key, prs_w.prs_werkplek_key, prs_w.prs_werkplek_volgnr
HAVING SUM (NVL (prs_wb.prs_perslidwerkplek_bezetting, 0)) < 100) DATA
/
CREATE_VIEW(CAD_V_THEMA_AANTALWP, 0) (ALG_RUIMTE_KEY, WAARDE)
AS
@@ -232,25 +340,18 @@ SELECT ra.alg_ruimte_key, 'mismatch'
CREATE_VIEW(cad_v_label_srtruimteopp,0)
(alg_ruimte_key, waarde)
AS
SELECT r.alg_ruimte_key,
lcl.x ('alg_srtruimte_omschrijving',
sr.alg_srtruimte_key,
sr.alg_srtruimte_omschrijving)
|| DECODE (r.alg_ruimte_bruto_vloeropp,
NULL, '',
' (' || r.alg_ruimte_bruto_vloeropp || ' m2)')
FROM alg_v_aanwezigruimte r, alg_srtruimte sr
WHERE r.alg_srtruimte_key = sr.alg_srtruimte_key;
SELECT r.alg_ruimte_key,
sr.alg_srtruimte_omschrijving || ' (' || r.alg_ruimte_bruto_vloeropp || ' m2)'
FROM alg_v_aanwezigruimte r, alg_srtruimte sr
WHERE r.alg_srtruimte_key = sr.alg_srtruimte_key;
-- Ruimtesoort
CREATE_VIEW(cad_v_thema_srtruimte, 0)
(alg_ruimte_key, waarde, waarde_key)
AS
SELECT r.alg_ruimte_key,
sr.alg_srtruimte_omschrijving, // deze moet niet vertaald worden, dat regelt de programmatuur
r.alg_srtruimte_key
FROM alg_v_aanwezigruimte r, alg_srtruimte sr
WHERE r.alg_srtruimte_key = sr.alg_srtruimte_key(+);
SELECT r.alg_ruimte_key, sr.alg_srtruimte_omschrijving, r.alg_srtruimte_key
FROM alg_v_aanwezigruimte r, alg_srtruimte sr
WHERE r.alg_srtruimte_key = sr.alg_srtruimte_key(+);
CREATE_TRIGGER(cad_t_thema_srtruimte_i_iu)
INSTEAD OF INSERT OR UPDATE ON cad_v_thema_srtruimte
@@ -262,6 +363,27 @@ BEGIN
END;
/
-- Bezetting
-- Afdelingen
CREATE_VIEW(cad_v_thema_vloerafwerking, 0)
(alg_ruimte_key, waarde)
AS
SELECT r.alg_ruimte_key,
va.fac_usrdata_omschr
FROM alg_ruimte r,
(SELECT rr.alg_ruimte_key, ud.fac_usrdata_omschr
FROM alg_onrgoedkenmerk ok,
fac_usrdata ud,
fac_kenmerkdomein rk,
alg_kenmerk k,
alg_v_aanwezigruimte rr
WHERE rk.fac_usrtab_key = ud.fac_usrtab_key
AND k.fac_kenmerkdomein_key = rk.fac_kenmerkdomein_key
AND TO_CHAR (ud.fac_usrdata_key) = ok.alg_onrgoedkenmerk_waarde
AND k.alg_kenmerk_key = 2
AND rr.alg_ruimte_key = ok.alg_onrgoed_key) va
WHERE va.alg_ruimte_key = r.alg_ruimte_key;
--Meldingen
CREATE_VIEW(cad_v_thema_openmeldingen,0)
@@ -275,24 +397,26 @@ AS
CREATE_VIEW(cad_v_label_bewoner2,0) (alg_ruimte_key, waarde)
AS
SELECT alg_ruimte_key,
pf.prs_perslid_naam_friendly
|| '-'
|| CASE
WHEN aantalwp > 1 AND norm_verband IS NOT NULL THEN norm_verband || '/'
ELSE ''
END
|| CASE
WHEN p.prs_perslid_dienstverband IS NOT NULL
THEN
p.prs_perslid_dienstverband || '%'
ELSE
''
END
FROM prs_v_perslid_fullnames pf, prs_perslid p, prs_v_norm_verband pnv
WHERE pf.prs_perslid_key = p.prs_perslid_key
AND pnv.prs_perslid_key = p.prs_perslid_key
AND p.prs_perslid_verwijder IS NULL;
SELECT alg_ruimte_key,
prs_p.prs_perslid_naam
|| DECODE (prs_p.prs_perslid_voorletters,
NULL, '',
', ' || prs_p.prs_perslid_voorletters
)
|| DECODE (prs_p.prs_perslid_voornaam,
NULL, '',
' (' || prs_p.prs_perslid_voornaam || ')'
)
|| '-'
|| CASE
WHEN aantalwp > 1
THEN norm_verband || '/'
ELSE ''
END
|| prs_p.prs_perslid_dienstverband
|| ' FTE'
FROM prs_perslid prs_p, prs_v_norm_verband pnv
WHERE pnv.prs_perslid_key = prs_p.prs_perslid_key;
CREATE OR REPLACE FORCE VIEW PRJ_V_CAD_LABEL_BEWONERWPE
(
@@ -301,48 +425,59 @@ CREATE OR REPLACE FORCE VIEW PRJ_V_CAD_LABEL_BEWONERWPE
HIGHLIGHT
)
AS
SELECT DISTINCT prj_werkplek_key, waarde, DECODE (prj_selectie_key, NULL, 0, 1)
FROM (SELECT prj_r.prj_scenario_key,
prs_w.prj_werkplek_key,
prs_p.prs_perslid_naam_friendly
|| ': '
|| TO_CHAR (NVL (prs_pw.prj_perslidwerkplek_bezetting, 0))
|| '%'
waarde,
'PRJ_WERKPLEK'
label_soort,
prs_pw.prj_werkplek_key
label_key
FROM prj_ruimte prj_r,
prj_werkplek prs_w,
(SELECT *
FROM prj_perslidwerkplek
WHERE prj_perslidwerkplek_verwijder IS NULL) prs_pw,
prs_v_perslid_fullnames prs_p
WHERE prs_w.prj_werkplek_key = prs_pw.prj_werkplek_key
AND prs_pw.prs_perslid_key IS NOT NULL
AND prs_pw.prs_perslid_key = prs_p.prs_perslid_key
AND prs_w.prj_ruimte_key = prj_r.prj_ruimte_key
UNION
SELECT -1,
prs_w.prj_werkplek_key,
' Vrij: '
|| TO_CHAR (100 - NVL (SUM (prs_wb.prj_perslidwerkplek_bezetting), 0))
|| '%',
'PRJ_WERKPLEK',
prs_w.prj_werkplek_key
FROM prj_werkplek prs_w,
(SELECT *
FROM prj_perslidwerkplek
WHERE prj_perslidwerkplek_verwijder IS NULL) prs_wb
WHERE prs_w.prj_werkplek_key = prs_wb.prj_werkplek_key(+)
AND prj_werkplek_verwijder IS NULL
GROUP BY prs_w.prj_werkplek_key, prs_w.prj_werkplek_key, prs_w.prj_werkplek_volgnr
HAVING SUM (NVL (prs_wb.prj_perslidwerkplek_bezetting, 0)) < 100) data,
prj_selectie ps
WHERE ps.prj_scenario_key(+) = data.prj_scenario_key
AND ps.prj_selectie_tabelnaam(+) = label_soort
AND ps.prj_selectie_tabelkey(+) = label_key;
SELECT DISTINCT
prj_werkplek_key, waarde, DECODE (prj_selectie_key, NULL, 0, 1)
FROM (SELECT prj_r.prj_scenario_key,
prs_w.prj_werkplek_key,
prs_p.prs_perslid_naam
|| DECODE (prs_p.prs_perslid_voorletters,
NULL, '',
', ' || prs_p.prs_perslid_voorletters)
|| DECODE (prs_p.prs_perslid_voornaam,
NULL, '',
' (' || prs_p.prs_perslid_voornaam || ')')
|| ': '
|| TO_CHAR (NVL (prs_pw.prj_perslidwerkplek_bezetting, 0))
|| '%'
waarde,
'PRJ_WERKPLEK' label_soort,
prs_pw.prj_werkplek_key label_key
FROM PRJ_RUIMTE prj_r,
PRJ_WERKPLEK prs_w,
(SELECT *
FROM PRJ_PERSLIDWERKPLEK
WHERE prj_perslidwerkplek_verwijder IS NULL) prs_pw,
PRS_PERSLID prs_p
WHERE prs_w.prj_werkplek_key = prs_pw.prj_werkplek_key
AND prs_pw.prs_perslid_key IS NOT NULL
AND prs_pw.prs_perslid_key = prs_p.prs_perslid_key
AND prs_w.prj_ruimte_key = prj_r.prj_ruimte_key
UNION
SELECT -1,
prs_w.prj_werkplek_key,
' Vrij: '
|| TO_CHAR(100
- NVL (
SUM (prs_wb.prj_perslidwerkplek_bezetting),
0))
|| '%',
'PRJ_WERKPLEK',
prs_w.prj_werkplek_key
FROM PRJ_WERKPLEK prs_w,
(SELECT *
FROM PRJ_PERSLIDWERKPLEK
WHERE prj_perslidwerkplek_verwijder IS NULL) prs_wb
WHERE prs_w.prj_werkplek_key = prs_wb.prj_werkplek_key(+)
AND prj_werkplek_verwijder IS NULL
GROUP BY prs_w.prj_werkplek_key,
prs_w.prj_werkplek_key,
prs_w.prj_werkplek_volgnr
HAVING SUM (NVL (prs_wb.prj_perslidwerkplek_bezetting, 0)) < 100)
DATA,
PRJ_SELECTIE ps
WHERE ps.prj_scenario_key(+) = DATA.prj_scenario_key
AND ps.prj_selectie_tabelnaam(+) = label_soort
AND ps.prj_selectie_tabelkey(+) = label_key;
/* Lijstje met (ALGCAD) wijzigingen op een ruimte
Kolom FAC_TRACKING_DATUM om een klantspecifieke beperking mogelijk te maken
@@ -431,14 +566,26 @@ CREATE_VIEW(cad_v_label_wp_bewoner, 0)
AS
SELECT DISTINCT
prs_w.prs_werkplek_key,
prs_p.prs_perslid_naam_friendly
DECODE (
prs_p.prs_perslid_voornaam,
NULL,
DECODE (prs_p.prs_perslid_voorletters,
NULL, '',
prs_p.prs_perslid_voorletters || ' '),
prs_p.prs_perslid_voornaam || ' ')
|| DECODE (prs_p.prs_perslid_tussenvoegsel,
NULL, '',
prs_p.prs_perslid_tussenvoegsel || ' ')
|| prs_p.prs_perslid_naam
|| CASE
WHEN prs_pw.prs_perslidwerkplek_bezetting < 100
THEN
' (' || TO_CHAR (NVL (prs_pw.prs_perslidwerkplek_bezetting, 0)) || '%)'
END
waarde
FROM prs_werkplek prs_w, prs_perslidwerkplek prs_pw, prs_v_perslid_fullnames prs_p
FROM prs_werkplek prs_w,
prs_perslidwerkplek prs_pw,
prs_perslid prs_p
WHERE prs_w.prs_werkplek_key = prs_pw.prs_werkplek_key
AND prs_pw.prs_perslid_key IS NOT NULL
AND prs_pw.prs_perslid_key = prs_p.prs_perslid_key;
@@ -476,7 +623,7 @@ CREATE_VIEW(cad_v_label_bezetbareruimtes, 0)
waarde
)
AS
SELECT rar.alg_ruimte_key, MIN (COALESCE(res_ruimte_friendlyname, res_ruimte_nr)) waarde
SELECT rar.alg_ruimte_key, MIN (res_ruimte_nr) waarde
FROM res_ruimte_opstelling rro, res_ruimte rr, res_alg_ruimte rar
WHERE rro.res_ruimte_key = rr.res_ruimte_key
AND rar.res_ruimte_key = rr.res_ruimte_key
@@ -499,7 +646,7 @@ AS
CREATE_VIEW(cad_v_label_ruimte_reservering,0)
(ALG_RUIMTE_KEY, WAARDE)
AS
SELECT rar.alg_ruimte_key, MAX (COALESCE(res_ruimte_friendlyname, res_ruimte_nr) || res_info.tekst) waarde
SELECT rar.alg_ruimte_key, MAX (res_ruimte_nr || res_info.tekst) waarde
FROM res_ruimte_opstelling rro,
res_ruimte rr,
res_alg_ruimte rar,
@@ -566,114 +713,6 @@ AS
AND res_rsv_deel_tot - 1 / 24 / 60) res -- NU bezig
WHERE isd.ins_deel_key = res.res_ins_deel_key(+);
-- Deze core-view wordt direct als label-thema (13) gebruikt, maar kan ook als basis voor een alternatief via
-- create view myview (fclt_f_datum, ins_deel_key, waarde) as select fclt_f_datum, ins_deel_key, waarde3 from cad_v_label_deel_res_datum.
-- Kijkt nu hard maximaal 42 dagen tov van nu vooruit, wat hopelijk even genoeg is voor alle situaties
-- De verschillende waardevarianten zijn presentatie alternatieven, evt meerdere regels onder elkaar
-- Merk op dat waarde_html ook een class meeneemt, waarmee in CSS gestyld kan worden
-- Voor 2d
-- waarde1: Naam (van-tot)
-- waarde: van Naam [default]
-- waarde3: Naam
-- Voor 3d
-- waarde_html: van Naam [default]
-- waarde_html2: Naam
CREATE_VIEW(cad_v_label_deel_res_datum, 0)
(
fclt_f_datum,
ins_deel_key,
res_deel_omschrijving,
waarde1,
waarde,
waarde3,
waarde_html,
waarde_html2
)
AS
WITH
datums
AS
( SELECT TRUNC (SYSDATE) + LEVEL - 1 datum
FROM DUAL
CONNECT BY LEVEL <= 42)
SELECT datums.datum
fclt_f_datum,
isd.res_ins_deel_key
ins_deel_key,
res_deel_omschrijving,
CHR (10)
|| LISTAGG (
DECODE (
naam,
NULL, '',
'[s40]'
|| naam
|| ' ('
|| TO_CHAR (res_rsv_deel_van, 'HH24:MI')
|| '-'
|| DECODE (TRUNC (res_rsv_deel_tot),
TRUNC (res_rsv_deel_van), TO_CHAR (res_rsv_deel_tot, 'HH24:MI'),
TO_CHAR (res_rsv_deel_tot, 'DD-MM-YYYY HH24:MI'))
|| ')'),
CHR (10))
WITHIN GROUP (ORDER BY res_rsv_deel_van)
waarde1,
CHR (10)
|| LISTAGG (
DECODE (naam,
NULL, '',
'[s40]' || TO_CHAR (res_rsv_deel_van, 'HH24:MI') || ' ' || naam),
CHR (10))
WITHIN GROUP (ORDER BY res_rsv_deel_van)
waarde2,
CHR (10)
|| LISTAGG (DECODE (naam, NULL, '', '[s40]' || naam), CHR (10))
WITHIN GROUP (ORDER BY res_rsv_deel_van)
waarde3,
LISTAGG (
DECODE (
naam,
NULL, '',
'<span class="body">'
|| TO_CHAR (res_rsv_deel_van, 'HH24:MI')
|| ' '
|| naam
|| '</span>'),
'<br>')
WITHIN GROUP (ORDER BY res_rsv_deel_van)
waarde_html,
LISTAGG (DECODE (naam, NULL, '', '<span class="body">' || naam || '</span>'), '<br>')
WITHIN GROUP (ORDER BY res_rsv_deel_van)
waarde_html2
FROM res_v_aanwezigdeel isd,
datums,
(SELECT datum,
res_ins_deel_key,
DECODE (p.prs_perslid_visibility,
1, pf.prs_perslid_naam_friendly,
a.prs_afdeling_omschrijving)
naam,
res_rsv_deel_van,
res_rsv_deel_tot
FROM res_v_aanwezigdeel r,
res_v_aanwezigrsv_deel rrd,
res_rsv_ruimte rrr,
prs_v_perslid_fullnames pf,
prs_perslid p,
prs_afdeling a,
datums
WHERE r.res_deel_key = rrd.res_deel_key
AND rrd.res_rsv_ruimte_key = rrr.res_rsv_ruimte_key
AND rrr.res_rsv_ruimte_host_key = pf.prs_perslid_key
AND pf.prs_perslid_key = p.prs_perslid_key
AND p.prs_afdeling_key = a.prs_afdeling_key
AND datum + 1 >= res_rsv_deel_van
AND datum < res_rsv_deel_tot ) res -- Bezet
WHERE isd.res_ins_deel_key = res.res_ins_deel_key(+) AND datums.datum = res.datum(+)
GROUP BY datums.datum, isd.res_ins_deel_key, res_deel_omschrijving;
--
-- Thema's gebaseerd op objectstatus van objecten binnen ruimte/werkplek (typisch sensoren)
--
@@ -782,188 +821,6 @@ AS
AND sd.ins_srtgroep_key = fac.getSetting('ins_occupationsensors_srtgroep_key')
AND d.ins_deel_state IS NOT NULL;
-- View voor reserveerbare (werkplek)OBJECTEN, het default thema met key 13
-- Deze core-view wordt direct als kleur-objecten-thema gebruikt, maar kan ook als basis voor een alternatief via worden gebruikt
-- Kijkt nu hard maximaal 42 dagen tov van nu vooruit, wat hopelijk even genoeg is voor alle situaties
-- De verschillende waardevarianten zijn presentatie alternatieven, evt meerdere regels onder elkaar
-- waarde1: Voor hele dagen: Vrij(0) of Bezet (3)
-- waarde: Voor halve dagen: Vrij(0), Ochtendbezet(1), MiddagBezet(2), Helemaalbezet(3)
-- waarde3: Voor tellen: Het aantal reservering op de dag, met 0 is dus Vrij
CREATE_VIEW(cad_v_thema_deel_res_datum,0)
(
fclt_f_datum,
ins_deel_key,
min_van,
max_tot,
waarde1,
waarde,
waarde3
)
AS
WITH
datums
AS
( SELECT TRUNC (SYSDATE) + LEVEL - 1 datum
FROM DUAL
CONNECT BY LEVEL <= 42)
SELECT datum
fclt_f_datum,
ins_deel_key,
MIN (res_rsv_deel_van)
min_van,
MAX (res_rsv_deel_tot)
max_tot,
CASE WHEN MAX (res_rsv_deel_tot) IS NULL THEN 0 ELSE 3 -- hele dag
END
waarde1,
CASE
WHEN MAX (res_rsv_deel_tot) IS NULL THEN 0
WHEN TO_CHAR (MAX (res_rsv_deel_tot), 'HH24') <= 13 THEN 1 -- ochtend
WHEN TO_CHAR (MIN (res_rsv_deel_van), 'HH24') >= 12 THEN 2 -- middag
ELSE 3 -- hele dag
END
waarde,
COUNT (res_rsv_deel_tot) -- aantal reservering deze dag
waarde3
FROM (SELECT datums.datum,
res_ins_deel_key ins_deel_key,
res_rsv_deel_van,
res_rsv_deel_tot
FROM res_v_aanwezigdeel r,
ins_deel d,
datums,
(SELECT datum,
res_deel_key,
res_rsv_deel_van,
res_rsv_deel_tot
FROM datums, res_v_aanwezigrsv_deel rrd
WHERE res_rsv_deel_van > TRUNC(SYSDATE) - 1 -- negeer alle irrelevante historie sowieso
AND datum + 1 >= res_rsv_deel_van
AND datum < res_rsv_deel_tot) blokkerend -- vandaag en nog niet afgelopen
WHERE r.res_deel_key = blokkerend.res_deel_key(+)
AND datums.datum = blokkerend.datum(+)
AND (r.res_deel_vervaldatum IS NULL or r.res_deel_vervaldatum > datums.datum)
AND d.ins_deel_key = r.res_ins_deel_key)
GROUP BY datum, ins_deel_key
ORDER BY datum, ins_deel_key;
-- Paar views om de populariteit van reserveerbare objecten te kunnen illustreren
-- Basisview, met aantal per datum
CREATE_VIEW(cad_v_thema_deel_gereserveerd,0)
AS
SELECT TRUNC (rrd.res_rsv_deel_van) datum,
rd.res_ins_deel_key ins_deel_key,
rd.res_deel_omschrijving,
COUNT (*) aantal
FROM res_rsv_deel rrd, res_deel rd
WHERE rrd.res_deel_key = rd.res_deel_key
GROUP BY TRUNC (rrd.res_rsv_deel_van), rd.res_ins_deel_key, rd.res_deel_omschrijving;
-- Totaal gereserveerde dagen of delen daarvan in de afgelopen 1, 4 resp 8 wkn
CREATE_VIEW(cad_v_thema_deel_populair_1wkn,0)
AS
SELECT ins_deel_key, res_deel_omschrijving, COUNT (*) waarde
FROM cad_v_thema_deel_gereserveerd
WHERE datum BETWEEN SYSDATE - 8 AND SYSDATE
GROUP BY ins_deel_key, res_deel_omschrijving;
CREATE_VIEW(cad_v_thema_deel_populair_4wkn,0)
AS
SELECT ins_deel_key, res_deel_omschrijving, COUNT (*) waarde
FROM cad_v_thema_deel_gereserveerd
WHERE datum BETWEEN SYSDATE - 29 AND SYSDATE
GROUP BY ins_deel_key, res_deel_omschrijving;
CREATE_VIEW(cad_v_thema_deel_populair_8wkn,0)
AS
SELECT ins_deel_key, res_deel_omschrijving, COUNT (*) waarde
FROM cad_v_thema_deel_gereserveerd
WHERE datum BETWEEN SYSDATE - 57 AND SYSDATE
GROUP BY ins_deel_key, res_deel_omschrijving;
-- Toekomstig populair
CREATE_VIEW(cad_v_thema_deel_populair_futu,0)
AS
SELECT ins_deel_key, res_deel_omschrijving, COUNT (*) waarde
FROM cad_v_thema_deel_gereserveerd
WHERE datum > SYSDATE
GROUP BY ins_deel_key, res_deel_omschrijving;
// Een basisview om sensorgemiddelde per ruimte per dag te berekenen
// AI-generated, nog niet nageteld, maar who cares.
// Bevat alleen sensoren met niet-discrete numerieke waarden zoals temperatuur, niet bezetting
// Bevat het ruimtegemiddelde van alle sensoren van hetzelfde srtdeel gedurende de kantoortijden
CREATE_VIEW(ins_v_sensorgemiddele_per_ruimte_per_dag, 0)
AS
WITH
sensor_data
AS
(SELECT d.ins_alg_ruimte_key
, d.ins_srtdeel_key
, sd.ins_srtdeel_code
, sd.ins_srtdeel_omschrijving
, sh.ins_deel_statedate
, sh.ins_deel_state
, LEAD (sh.ins_deel_statedate) OVER (PARTITION BY d.ins_alg_ruimte_key, sd.ins_srtdeel_omschrijving ORDER BY sh.ins_deel_statedate) AS next_statedate
FROM ins_deel d
JOIN ins_deel_state_history sh ON sh.ins_deel_key = d.ins_deel_key
JOIN ins_srtdeel sd ON sd.ins_srtdeel_key = d.ins_srtdeel_key
WHERE d.ins_alg_ruimte_type = 'R' AND sd.ins_srtdeel_sensortype = 2),
bounded_intervals
AS
(SELECT ins_alg_ruimte_key
, ins_srtdeel_key
, ins_srtdeel_code
, ins_srtdeel_omschrijving
, TRUNC (ins_deel_statedate) AS datum
, GREATEST (ins_deel_statedate, TRUNC (ins_deel_statedate) + fac.getsetting ('fac_t_startofworkday') / 24) AS start_time
, LEAST (NVL (next_statedate, TRUNC (ins_deel_statedate) + 1), TRUNC (ins_deel_statedate) + fac.getsetting ('fac_t_endofworkday') / 24) AS end_time
, ins_deel_state
FROM sensor_data
WHERE -- Alleen intervallen die de kantoortijd raken
NVL (next_statedate, TRUNC (ins_deel_statedate) + 1) > TRUNC (ins_deel_statedate) + fac.getsetting ('fac_t_startofworkday') / 24
AND ins_deel_statedate < TRUNC (ins_deel_statedate) + fac.getsetting ('fac_t_endofworkday') / 24),
gewogen_data
AS
(SELECT ins_alg_ruimte_key
, ins_srtdeel_key
, ins_srtdeel_code
, ins_srtdeel_omschrijving
, datum
, ins_deel_state
, (end_time - start_time) * 24 * 60 AS duration_minutes -- of * 24 * 60 * 60 voor seconden
FROM bounded_intervals
WHERE end_time > start_time -- filter eventueel negatieve of nulduur
)
SELECT ins_alg_ruimte_key
, ins_srtdeel_key
, ins_srtdeel_code
, ins_srtdeel_omschrijving
, datum
, ROUND (SUM (ins_deel_state * duration_minutes) / SUM (duration_minutes), 2) AS gewogen_gemiddelde
FROM gewogen_data
GROUP BY ins_alg_ruimte_key
, ins_srtdeel_key
, ins_srtdeel_code
, ins_srtdeel_omschrijving
, datum
ORDER BY ins_alg_ruimte_key, datum;
CREATE_VIEW(cad_v_co2_daggemiddelde, 0)
AS
SELECT ins_alg_ruimte_key alg_ruimte_key, datum fclt_f_datum, gewogen_gemiddelde waarde
FROM ins_v_sensorgemiddele_per_ruimte_per_dag
WHERE ins_srtdeel_code = 'CO2';
CREATE_VIEW(cad_v_temp_daggemiddelde)
AS
SELECT ins_alg_ruimte_key alg_ruimte_key, datum fclt_f_datum, gewogen_gemiddelde waarde
FROM ins_v_sensorgemiddele_per_ruimte_per_dag
WHERE ins_srtdeel_code = 'TEMP';
REGISTERRUN('$Id$')
#endif // CAD

59
CARE.SRC Normal file
View File

@@ -0,0 +1,59 @@
-- [CARE*.SQL]
--
-- Script tbv het initialiseren van de Facilitor Care-Webb omgeving in Oracle
-- Copyright 2010 SG|facilitor bv.
-- All rights reserved!
/*
* $Revision$
* $Id$
*/
#include "modules.h"
#include "comsql.h"
SET TIME ON
SET DEFINE OFF
SPOOL xcarewebb
PROMPT [carewebb.lst]
PROMPT
PROMPT Copyright 2013 SG|facilitor bv. ALL RIGHTS RESERVED.
PROMPT
PROMPT Dit is de gegenereerde list-file van CARExxxx.sql welke
PROMPT is gebruikt om de Facilitor(r) Care-Webb _VERSION omgeving in Oracle aan te
PROMPT maken.
PROMPT
PROMPT Dit script is gerund in user:
SHOW USER
PROMPT
PROMPT
SET LINESIZE 1000
SET ECHO ON
#include "care\care_tab.src"
#include "care\care_ind.src"
#include "care\care_vie.src"
#include "care\care_pac.src"
#include "care\care_ini.src"
COMMIT;
///////////////////////////// finally compile all views, triggers etc acc to the latest state ///////
BEGIN DBMS_UTILITY.COMPILE_SCHEMA(USER, FALSE); END;
/
REGISTERONCE('$Id$')
COMMIT;
///////////////////////////// Report invalid objects, if any ///////
SET ECHO OFF
SET LINESIZE 132
PROMPT List of all invalid objects after Facilitor Care-Webb upgrade:
SELECT _VERSION||' Warning: ' || object_type || ' ' || object_name || ' is ' || status
FROM user_objects
WHERE object_type IN ('VIEW', 'TRIGGER', 'PACKAGE', 'PROCEDURE', 'FUNCTION', 'PACKAGE BODY')
AND status <> 'VALID'
AND UPPER(object_name) LIKE 'CARE%'
ORDER BY object_name;
SELECT 'Care-Webb/' || USER || ' is now ' || fac.getdbversion() FROM DUAL;
PROMPT De upgrade is gereed, controleer de LST-files.
PROMPT Neem bij vragen, twijfels of problemen contact op met Facilitor.
SPOOL OFF

View File

@@ -5,7 +5,7 @@
* $Id$
*/
_FAC_MODULE('CARE','lcl_module_CARE')
_FAC_MODULE('CARE','Care-Webb')
------------ De eenvoudige bedrijfsstructuur vormgeven via 3 nivo's: bedrijf, afdeling en subafdeling ------------
@@ -179,31 +179,9 @@ VALUES (1020, 'L', 50, 'Documenten archief','<span style="color:red">Archivering
INSERT INTO alg_kenmerk (alg_kenmerk_key,alg_kenmerk_niveau,alg_kenmerk_volgnr,alg_kenmerk_omschrijving,alg_kenmerk_kenmerktype)
VALUES (1021, 'L', 60, 'Archief','M');
-- ALT HV CODES CAK
INSERT INTO alg_kenmerk (alg_kenmerk_key,alg_kenmerk_niveau,alg_kenmerk_volgnr,alg_kenmerk_omschrijving,alg_kenmerk_kenmerktype, alg_kenmerk_verplicht, alg_kenmerk_groep, alg_kenmerk_lengte)
VALUES (2000, 'L', 70, 'Alt HV1','C', 2, 1, 3);
INSERT INTO alg_kenmerk (alg_kenmerk_key,alg_kenmerk_niveau,alg_kenmerk_volgnr,alg_kenmerk_omschrijving,alg_kenmerk_kenmerktype, alg_kenmerk_verplicht, alg_kenmerk_groep, alg_kenmerk_lengte)
VALUES (2001, 'L', 75, 'Alt HV2','C', 2, 2, 3);
INSERT INTO alg_kenmerk (alg_kenmerk_key,alg_kenmerk_niveau,alg_kenmerk_volgnr,alg_kenmerk_omschrijving,alg_kenmerk_kenmerktype, alg_kenmerk_verplicht, alg_kenmerk_groep, alg_kenmerk_lengte)
VALUES (2002, 'L', 80, 'Alt HV3','C', 2, 3, 3);
INSERT INTO alg_kenmerk (alg_kenmerk_key,alg_kenmerk_niveau,alg_kenmerk_volgnr,alg_kenmerk_omschrijving,alg_kenmerk_kenmerktype, alg_kenmerk_verplicht, alg_kenmerk_groep)
VALUES (2003, 'L', 72, 'Alt HV1 startdatum','D', 2, 1);
INSERT INTO alg_kenmerk (alg_kenmerk_key,alg_kenmerk_niveau,alg_kenmerk_volgnr,alg_kenmerk_omschrijving,alg_kenmerk_kenmerktype, alg_kenmerk_verplicht, alg_kenmerk_groep)
VALUES (2004, 'L', 77, 'Alt HV2 startdatum','D', 2, 2);
INSERT INTO alg_kenmerk (alg_kenmerk_key,alg_kenmerk_niveau,alg_kenmerk_volgnr,alg_kenmerk_omschrijving,alg_kenmerk_kenmerktype, alg_kenmerk_verplicht, alg_kenmerk_groep)
VALUES (2005, 'L', 82, 'Alt HV3 startdatum','D', 2, 3);
INSERT INTO alg_kenmerk (alg_kenmerk_key,alg_kenmerk_niveau,alg_kenmerk_volgnr,alg_kenmerk_omschrijving,alg_kenmerk_kenmerktype)
VALUES (2006, 'L', 65, 'Alternatieve HV codes tbv CAK','L');
-- Sequence bijstellen
DROP SEQUENCE alg_s_alg_kenmerk_key;
CREATE SEQUENCE alg_s_alg_kenmerk_key START WITH 3000 NOCACHE;
CREATE SEQUENCE alg_s_alg_kenmerk_key START WITH 2000 NOCACHE;
------------------- Voor elke persoon (= client en verzorger) de volgende kenmerken -------------------
@@ -365,10 +343,7 @@ CREATE SEQUENCE ins_s_ins_srtdiscipline_key START WITH 2000 NOCACHE;
UPDATE mld_typeopdr
SET mld_typeopdr_omschrijving = 'Verzorgen/huishoudelijke hulp',
mld_typeopdr_sluitmelding = 0,
mld_typeopdr_uren = 5,
mld_typeopdr_materiaal = 0,
mld_typeopdr_totaal = 0,
mld_typeopdr_factuur = 0
mld_typeopdr_matchtype = 3
WHERE mld_typeopdr_key = 5;
INSERT INTO mld_typeopdr_srtdiscipline (mld_typeopdr_key, ins_srtdiscipline_key) VALUES (5, 1);
@@ -892,7 +867,7 @@ AND UPPER(FAC_LOCALEITEMS_LCL) = 'LCL_MLD_BEHANDELAAR';
-- BONS#31596: Iwmo factuurrapport via XSL
-- Rapport Iwmo) FACTUURrapport voor Iwmo:
-- Rapport Iwmo) FACTUURrapport voor Iwmo:
INSERT INTO fac_usrrap
(fac_usrrap_omschrijving,
fac_usrrap_view_name,
@@ -1544,7 +1519,7 @@ INSERT INTO fac_usrrap
0
FROM fac_functie WHERE fac_functie_code = 'WEB_MLDBAC';
-- Rapport R) FACTUURrapport met detailgegevens client per beschikking - variant R:
-- Rapport R) FACTUURrapport met detailgegevens client per beschikking - variant R:
INSERT INTO fac_usrrap
(fac_usrrap_omschrijving,
fac_usrrap_view_name,
@@ -1591,8 +1566,8 @@ INSERT INTO fac_usrrap
fac_functie_key,
0
FROM fac_functie WHERE fac_functie_code = 'WEB_MLDBAC';
-- BONS#36043: Totaallijst clienten in zorg (outerjoin uren):
-- BONS#36043: Totaallijst clienten in zorg (outerjoin uren):
INSERT INTO fac_usrrap
(fac_usrrap_omschrijving,
fac_usrrap_view_name,
@@ -1611,48 +1586,8 @@ INSERT INTO fac_usrrap
'Totaal lijst cli<6C>nten in zorg (ook zonder uren)',
fac_functie_key,
0
FROM fac_functie WHERE fac_functie_code = 'WEB_MLDBAC';
FROM fac_functie WHERE fac_functie_code = 'WEB_MLDBAC';
-- BONS#40385: Totaallijst clienten in zorg met medewerker (outerjoin uren):
INSERT INTO fac_usrrap
(fac_usrrap_omschrijving,
fac_usrrap_view_name,
fac_usrrap_vraagbegindatum,
fac_usrrap_vraageinddatum,
fac_usrrap_functie,
fac_usrrap_info,
fac_functie_key,
fac_usrrap_autorefresh
)
SELECT 'Totaal lijst cli<6C>nten in zorg MDW',
'care_v_rap_tot_clientzorg_mdw',
0,
0,
1,
'Totaal lijst cli<6C>nten in zorg met gekoppelde medewerker',
fac_functie_key,
0
FROM fac_functie WHERE fac_functie_code = 'WEB_MLDBAC';
INSERT INTO fac_usrrap
(fac_usrrap_omschrijving,
fac_usrrap_view_name,
fac_usrrap_vraagbegindatum,
fac_usrrap_vraageinddatum,
fac_usrrap_functie,
fac_usrrap_info,
fac_functie_key,
fac_usrrap_autorefresh
)
SELECT 'Totaal lijst cli<6C>nten in zorg - zonder uren',
'care_v_rap_tot_clientzorg_all',
0,
0,
1,
'Totaal lijst cli<6C>nten in zorg met gekoppelde medewerker',
fac_functie_key,
0
FROM fac_functie WHERE fac_functie_code = 'WEB_MLDBAC';
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
@@ -2170,31 +2105,9 @@ INSERT INTO fac_usrrap
0
FROM fac_functie WHERE fac_functie_code = 'WEB_MLDBAC';
INSERT INTO fac_usrrap
(fac_usrrap_omschrijving,
fac_usrrap_view_name,
fac_usrrap_in_huidige_locatie,
fac_usrrap_template,
fac_usrrap_macro,
fac_usrrap_vraagbegindatum,
fac_usrrap_vraageinddatum,
fac_usrrap_functie,
fac_usrrap_info,
fac_functie_key,
fac_usrrap_autorefresh
)
SELECT 'Instroom en Uitstroom per Client',
'care_v_rap_in_uitstroom',
NULL,
NULL,
NULL,
0,
0,
0,
'Instroom en uitstroomdatum per Client',
fac_functie_key,
0
FROM fac_functie WHERE fac_functie_code = 'WEB_MLDBAC';
----------- Alle overbodige menuitem (module BES, BEZ, CAD, etc uit het menu halen)
@@ -2228,6 +2141,12 @@ UPDATE prs_bedrijf SET prs_bedrijf_uitvoerende = NULL WHERE prs_bedrijf_key = 2;
UPDATE prs_afdeling SET prs_afdeling_naam = 'Adm', prs_afdeling_omschrijving = 'Administratie'
WHERE prs_afdeling_key = 1;
-- Een insert in fac_qlikview t.b.v. de Analyzer-autorisatie in Qlikview-file 'fclt_care'
INSERT INTO fac_qlikview (fac_qlikview_omschrijving, fac_qlikview_qvw_name, fac_functie_key)
SELECT 'Beschikkingen', 'fclt_care', fac_functie_key
FROM fac_functie
WHERE fac_functie_code = 'WEB_MLDBAC';
-- Een insert in de periodetabel van alle weken tot en met 1 jaar terug.
INSERT INTO care_periode (jaar, periode, week, maandag)
SELECT
@@ -2239,7 +2158,7 @@ FROM DUAL
CONNECT BY LEVEL <= 1*52+1;
INSERT INTO care_t_qvw_periodeweektabel
SELECT
SELECT
TO_CHAR (SYSDATE - 7*(LEVEL-1), 'IYYY') jaar,
DECODE(FLOOR((TO_CHAR (SYSDATE - 7*(LEVEL-1),'IW') - 1) /4) + 1, 14, 13,FLOOR((TO_CHAR (SYSDATE - 7*(LEVEL-1),'IW') - 1) /4) + 1) periode,
TO_CHAR (SYSDATE - 7*(LEVEL-1), 'IW') week,
@@ -2247,7 +2166,7 @@ SELECT
FROM DUAL
CONNECT BY LEVEL <= 1*52+1
UNION
SELECT
SELECT
TO_CHAR (SYSDATE + 7*(LEVEL), 'IYYY') jaar,
DECODE(FLOOR((TO_CHAR (SYSDATE + 7*(LEVEL),'IW') - 1) /4) + 1, 14, 13,FLOOR((TO_CHAR (SYSDATE + 7*(LEVEL),'IW') - 1) /4) + 1) periode,
TO_CHAR (SYSDATE + 7*(LEVEL), 'IW') week,

View File

@@ -13,32 +13,32 @@ AS
RETURN DATE;
FUNCTION goodmonday_end (p_mld_key IN NUMBER)
RETURN DATE;
PROCEDURE care_v_rap2_factuur_uren_a (user_key IN NUMBER, p_datum_van IN VARCHAR2, p_datum_tot IN VARCHAR2, p_cursor OUT t_cursor, p_where IN VARCHAR2 DEFAULT NULL);
PROCEDURE care_v_rap2_factuur_uren_e (user_key IN NUMBER, p_datum_van IN VARCHAR2, p_datum_tot IN VARCHAR2, p_cursor OUT t_cursor, p_where IN VARCHAR2 DEFAULT NULL);
PROCEDURE care_v_rap2_factuur_uren_a (user_key IN NUMBER, p_datum_van IN VARCHAR2, p_datum_tot IN VARCHAR2, p_cursor OUT t_cursor, p_where IN VARCHAR2);
PROCEDURE care_v_rap2_factuur_uren_e (user_key IN NUMBER, p_datum_van IN VARCHAR2, p_datum_tot IN VARCHAR2, p_cursor OUT t_cursor, p_where IN VARCHAR2);
END care;
/
CREATE OR REPLACE PACKAGE BODY care
AS
FUNCTION goodmonday_start (p_mld_key IN NUMBER)
RETURN DATE
IS
-- Herindicaties/vorige indicaties van dezelfde client die in dezelfde week start/eindigt.
l_mld_key NUMBER(10);
l_good_monday DATE;
BEGIN
--- Vorige beschikking: bij herindicatie midden in de week is 1 van beide beschikkingen geldig
--- Herindicatie midden in de week wordt gekenmerkt door:
--- dezelfde client, dezelfde gemeente, eindweek van de vorige is gelijk aan beginweek van herindicatie,
--- Herindicatie midden in de week wordt gekenmerkt door:
--- dezelfde client, dezelfde gemeente, eindweek van de vorige is gelijk aan beginweek van herindicatie,
--- en het maakt niet uit wat de product is/wordt.
--- Baas' van dubbele beschikking is diegene met de meeste aantal uren, ongeacht HV1->HV2 overgang.
--- Bij gelijke aantal uren is de nieuwe beschikking de baas.
-- Selecteer de vorige beschikking b1 van de beschikking b2 die meer uren heeft.
SELECT MAX(b1.mld_melding_key)
INTO l_mld_key
@@ -51,14 +51,14 @@ AS
AND b1.prs_client_key = b2.prs_client_key
AND b1.gemeente_code = b2.gemeente_code
AND b1.uren_beschikking > b2.uren_beschikking;
IF l_mld_key IS NOT NULL
THEN
-- Er is een vorige indicatie met meer uren, die is de 'baas'.
-- Dat betekent dat de goede maandag van de beschikking b2 verder, naar de volgende week wordt gezet
-- Dat betekent dat de goede maandag van de beschikking b2 verder, naar de volgende week wordt gezet
-- (ipv standaard op maandag deze week)
SELECT ( TRUNC (mld_melding_datum) + 7
- DECODE (TO_CHAR (mld_melding_datum, 'D'), '1', 8, TO_CHAR (mld_melding_datum, 'D'))
+ 2)
@@ -75,7 +75,7 @@ AS
FROM mld_melding
WHERE mld_melding_key = p_mld_key;
END IF;
RETURN l_good_monday;
END;
@@ -83,19 +83,19 @@ FUNCTION goodmonday_end (p_mld_key IN NUMBER)
RETURN DATE
IS
-- Herindicaties/vorige indicaties van dezelfde client die in dezelfde week start/eindigt.
l_mld_key NUMBER(10);
l_good_monday DATE;
BEGIN
--- Volgende beschikking: bij herindicatie midden in de week is 1 van beide beschikkingen geldig
--- Herindicatie midden in de week wordt gekenmerkt door:
--- dezelfde client, dezelfde gemeente, eindjaar/week van de vorige is gelijk aan beginjaar/week van herindicatie,
--- Herindicatie midden in de week wordt gekenmerkt door:
--- dezelfde client, dezelfde gemeente, eindjaar/week van de vorige is gelijk aan beginjaar/week van herindicatie,
--- en het maakt niet uit wat de product is/wordt.
--- Baas' van dubbele beschikking is diegene met de meeste aantal uren, ongeacht HV1->HV2 overgang.
--- Bij gelijke aantal uren is de nieuwe beschikking de baas.
-- Controleer of die er is, en zo ja, selecteer de volgende beschikking b2 van de beschikking b1 die MEER
--- Bij gelijke aantal uren is de nieuwe beschikking de baas.
-- Controleer of die er is, en zo ja, selecteer de volgende beschikking b2 van de beschikking b1 die MEER
-- of GELIJK AANTAL uren heeft.
SELECT MAX(b2.mld_melding_key)
INTO l_mld_key
@@ -108,63 +108,63 @@ FUNCTION goodmonday_end (p_mld_key IN NUMBER)
AND b1.prs_client_key = b2.prs_client_key
AND b1.gemeente_code = b2.gemeente_code
AND b2.uren_beschikking >= b1.uren_beschikking;
IF l_mld_key IS NOT NULL
THEN
-- Er is een volgende indicatie b2 met MEER of GELIJK AANTAL uren, die is de 'baas' is.
-- Dat betekent dat de goede maandag van de beschikking b2 op de maandag van deze week wordt gezet
-- Dat betekent dat de goede maandag van de beschikking b2 op de maandag van deze week wordt gezet
-- (ipv standaard op maandag de volgende week)
SELECT ( TRUNC (mld_melding_einddatum)
- DECODE (TO_CHAR (mld_melding_einddatum, 'D'), '1', 8, TO_CHAR (mld_melding_einddatum, 'D'))
+ 2)
INTO l_good_monday
FROM mld_melding
WHERE mld_melding_key = p_mld_key;
ELSE
-- Er is GEEN volgende indicatie is of GEEN volgende indicatie met MEER of GELIJK AANTAL uren, dus deze is de 'baas'.
-- Dat betekent dat de goede maandag van de beschikking b2 standaard op maandag van de volgende week komt te staan.
SELECT ( TRUNC (mld_melding_einddatum) + 7
- DECODE (TO_CHAR (mld_melding_einddatum, 'D'), '1', 8, TO_CHAR (mld_melding_einddatum, 'D'))
+ 2)
INTO l_good_monday
FROM mld_melding
WHERE mld_melding_key = p_mld_key;
WHERE mld_melding_key = p_mld_key;
END IF;
RETURN l_good_monday;
END;
PROCEDURE care_v_rap2_factuur_uren_a
( user_key IN NUMBER,
(user_key IN NUMBER,
p_datum_van IN VARCHAR2,
p_datum_tot IN VARCHAR2,
p_cursor OUT t_cursor,
p_where IN VARCHAR2 DEFAULT NULL
p_cursor OUT t_cursor,
p_where IN VARCHAR2
)
AS
v_datum_van DATE;
v_datum_tot DATE;
v_datum_tot DATE;
BEGIN
DELETE FROM care_periode;
INSERT INTO care_periode (jaar, periode, week, maandag)
SELECT
SELECT
TO_CHAR (SYSDATE - 7*(LEVEL-1), 'IYYY') jaar,
LEAST(FLOOR((TO_CHAR (SYSDATE - 7*(LEVEL-1),'IW') - 1) /4) + 1, 13) periode,
TO_CHAR (SYSDATE - 7*(LEVEL-1), 'IW') week,
TRUNC (SYSDATE - 7*(LEVEL-1), 'IW') startdatum
FROM DUAL
CONNECT BY LEVEL <= 1*52+1;
DELETE FROM CARE_T_BESCHIKK_X_PERIODETABEL;
INSERT INTO CARE_T_BESCHIKK_X_PERIODETABEL(JAAR, PERIODE,WEEK_VAN,WEEK_TM,BSN,PRODUCT,UREN_BESCHIKKING)
SELECT pw.jaar, pw.periode, MIN(week), MAX(week), b.client_bsn, b.product, SUM(b.uren_beschikking)
FROM care_periode pw, care_v_beschikking_all b
@@ -174,7 +174,7 @@ PROCEDURE care_v_rap2_factuur_uren_a
GROUP BY pw.jaar, pw.periode, b.client_bsn, b.product;
OPEN p_cursor FOR
'SELECT
'SELECT
fclt_f_periode,
factuurdatum,
wzacode,
@@ -192,35 +192,35 @@ PROCEDURE care_v_rap2_factuur_uren_a
bedrag_euro,
bedrag_centen
FROM care_v_rap2_factuur_uren_a' || p_where;
END care_v_rap2_factuur_uren_a;
PROCEDURE care_v_rap2_factuur_uren_e
( user_key IN NUMBER,
PROCEDURE care_v_rap2_factuur_uren_e
(user_key IN NUMBER,
p_datum_van IN VARCHAR2,
p_datum_tot IN VARCHAR2,
p_cursor OUT t_cursor,
p_where IN VARCHAR2 DEFAULT NULL
p_cursor OUT t_cursor,
p_where IN VARCHAR2
)
AS
v_datum_van DATE;
v_datum_tot DATE;
v_datum_tot DATE;
BEGIN
DELETE FROM care_periode;
INSERT INTO care_periode (jaar, periode, week, maandag)
SELECT
SELECT
TO_CHAR (SYSDATE - 7*(LEVEL-1), 'IYYY') jaar,
LEAST(FLOOR((TO_CHAR (SYSDATE - 7*(LEVEL-1),'IW') - 1) /4) + 1, 13) periode,
TO_CHAR (SYSDATE - 7*(LEVEL-1), 'IW') week,
TRUNC (SYSDATE - 7*(LEVEL-1), 'IW') startdatum
FROM DUAL
CONNECT BY LEVEL <= 1*52+1;
DELETE FROM CARE_T_BESCHIKK_X_PERIODETABEL;
INSERT INTO CARE_T_BESCHIKK_X_PERIODETABEL(JAAR, PERIODE,WEEK_VAN,WEEK_TM,BSN,PRODUCT,UREN_BESCHIKKING)
SELECT pw.jaar, pw.periode, MIN(week), MAX(week), b.client_bsn, b.product, SUM(b.uren_beschikking)
FROM care_periode pw, care_v_beschikking_all b
@@ -229,8 +229,8 @@ PROCEDURE care_v_rap2_factuur_uren_e
AND b.beschikking_datum_tot >= sysdate - 53*7
GROUP BY pw.jaar, pw.periode, b.client_bsn, b.product;
OPEN p_cursor FOR
'SELECT
OPEN p_cursor FOR
'SELECT
fclt_x_periode,
periode,
weeknrs,
@@ -247,7 +247,7 @@ PROCEDURE care_v_rap2_factuur_uren_e
uren,
bedrag_euro
FROM care_v_rap2_factuur_uren_e' || p_where;
END care_v_rap2_factuur_uren_e;
END care;

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -1,57 +0,0 @@
#ifdef CND
/*
* $Revision$
* $Id$
*/
-- Tabel tbv importfunctie 'Verwerken van NEN2767 gebreken/resultaten'
CREATE_TABLE(cnd_imp_nen2767_results,0)
(
fac_import_key NUMBER (10),
alg_gebouw_code VARCHAR2 (12),
ins_deel_omschrijving VARCHAR2 (60),
mld_melding_datum VARCHAR2 (20),
mld_melding_omschrijving VARCHAR2 (2000),
prs_perslid_email VARCHAR2 (200),
gebrekcode VARCHAR2 (20),
ernst VARCHAR2 (50),
omvang VARCHAR2 (50),
intensiteit VARCHAR2 (50),
aspect1 VARCHAR2 (20),
aspect2 VARCHAR2 (20),
aspect3 VARCHAR2 (20),
aspect4 VARCHAR2 (20),
aspect5 VARCHAR2 (20),
aspect6 VARCHAR2 (20),
aspect7 VARCHAR2 (20),
foto VARCHAR2 (50),
condscore NUMBER (6, 2),
prioscore NUMBER (6, 2),
kosten NUMBER (10, 2),
plandatum DATE,
flex1 VARCHAR2 (255),
flex2 VARCHAR2 (255),
flex3 VARCHAR2 (255),
flex4 VARCHAR2 (255),
flex5 VARCHAR2 (255),
flex6 VARCHAR2 (255),
flex7 VARCHAR2 (255),
flex8 VARCHAR2 (255),
flex9 VARCHAR2 (255),
flex10 VARCHAR2 (255)
);
-- Tabel tbv importfunctie 'Aanvullen van combinaties objectsoorten x standaard melding'
CREATE_TABLE(cnd_imp_srtdeel_mlddiscipline,0)
(
fac_import_key NUMBER (10),
ins_srtdeel_code VARCHAR2 (10),
ins_srtgroep_omschrijving VARCHAR2 (60),
ins_discipline_omschrijving VARCHAR2 (60),
mld_discipline_omschrijving VARCHAR2 (60)
);
REGISTERRUN('$Id$')
#endif // CND

View File

@@ -1,13 +0,0 @@
#ifdef CND
/*
* $Revision$
* $Id$
*/
-----------------------------------------------------------------------------------------------------------------------
-- Additional triggers for tables that are related to CND. AFTER-update, ze mogen de normale flow niet beinvloeden
-----------------------------------------------------------------------------------------------------------------------
REGISTERRUN('$Id$')
#endif // CND

View File

@@ -1,452 +0,0 @@
#ifdef CND
/*
* $Revision$
* $Id$
*/
-- CND_V_NEN2767_ALLE_GEBREKEN: hierin zitten alle meldingen (gebreken) die nu relevant voor de berekening kunnen zijn
-- dus gebreken die erkend zijn maar nog niet verwerkt of afgewezen.
-- Niet uit te sluiten valt dat er dubbele registraties zijn, dat wordt ontdubbeld in cnd_v_nen2767_per_srtgebrek
-- Het is daarmee niet aannemelijk dat je deze view nodig hebt, gebruik cnd_v_nen2767_per_srtgebrek.
-- Merk op: op alle 3 de aspecten in mld_kenmerkmelding zit geen outer join, omdat ze overal verplicht zijn;
-- zonder deze waarden is de conditiescore ook niet te berekenen overigens.
-- Full version, met ernst, intensiteit en omvang
CREATE_VIEW(cnd_v_nen2767_alle_gebreken_fl,0)
(
ins_deel_key,
mld_melding_key,
mld_stdmelding_key,
mld_melding_status,
ernst,
intensiteit,
omvang
)
AS
WITH
w_srtdisc_key AS (SELECT fac.getsetting ('cnd_gebreken_srtdisc_key') sdk FROM DUAL)
SELECT d.ins_deel_key,
m.mld_melding_key,
m.mld_stdmelding_key,
m.mld_melding_status,
km_ernst.mld_kenmerkmelding_waarde,
km_intensiteit.mld_kenmerkmelding_waarde,
ud_omvang.fac_usrdata_prijs
FROM mld_melding m,
mld_stdmelding sm,
mld_discipline disc,
mld_melding_object mo,
ins_deel d,
mld_kenmerkmelding km_ernst,
mld_kenmerk k_ernst,
mld_srtkenmerk sk_ernst,
mld_kenmerkmelding km_intensiteit,
mld_kenmerk k_intensiteit,
mld_srtkenmerk sk_intensiteit,
mld_kenmerkmelding km_omvang,
mld_kenmerk k_omvang,
mld_srtkenmerk sk_omvang,
fac_usrdata ud_omvang,
w_srtdisc_key
WHERE disc.ins_srtdiscipline_key = w_srtdisc_key.sdk
AND sm.mld_stdmelding_code <> 'GEEN'
AND disc.ins_discipline_verwijder IS NULL
AND sm.mld_ins_discipline_key = disc.ins_discipline_key
AND m.mld_stdmelding_key = sm.mld_stdmelding_key
AND mo.mld_melding_key = m.mld_melding_key
AND mo.mld_melding_object_verwijder IS NULL
AND d.ins_deel_key = mo.ins_deel_key
AND km_ernst.mld_melding_key = m.mld_melding_key
AND k_ernst.mld_kenmerk_key = km_ernst.mld_kenmerk_key
AND k_ernst.mld_srtkenmerk_key = sk_ernst.mld_srtkenmerk_key
AND sk_ernst.mld_srtkenmerk_code = 'ERNST'
AND km_intensiteit.mld_melding_key = m.mld_melding_key
AND k_intensiteit.mld_kenmerk_key = km_intensiteit.mld_kenmerk_key
AND k_intensiteit.mld_srtkenmerk_key = sk_intensiteit.mld_srtkenmerk_key
AND sk_intensiteit.mld_srtkenmerk_code = 'INTENSITEIT'
AND km_omvang.mld_melding_key = m.mld_melding_key
AND k_omvang.mld_kenmerk_key = km_omvang.mld_kenmerk_key
AND k_omvang.mld_srtkenmerk_key = sk_omvang.mld_srtkenmerk_key
AND sk_omvang.mld_srtkenmerk_code = 'OMVANG'
AND ud_omvang.fac_usrdata_key = fac.safe_to_number (km_omvang.mld_kenmerkmelding_waarde)
AND m.mld_melding_status NOT IN (1, 6);
-- Smaller/faster version, zonder ernst, intensiteit en omvang
CREATE_VIEW(cnd_v_nen2767_alle_gebreken,0)
(
ins_deel_key,
mld_melding_key,
mld_stdmelding_key
)
AS
WITH
w_srtdisc_key AS (SELECT fac.getsetting ('cnd_gebreken_srtdisc_key') sdk FROM DUAL)
SELECT d.ins_deel_key,
m.mld_melding_key,
m.mld_stdmelding_key
FROM mld_melding m,
mld_stdmelding sm,
mld_discipline disc,
mld_melding_object mo,
ins_deel d,
w_srtdisc_key
WHERE disc.ins_srtdiscipline_key = w_srtdisc_key.sdk
AND sm.mld_stdmelding_code <> 'GEEN'
AND disc.ins_discipline_verwijder IS NULL
AND sm.mld_ins_discipline_key = disc.ins_discipline_key
AND m.mld_stdmelding_key = sm.mld_stdmelding_key
AND mo.mld_melding_key = m.mld_melding_key
AND mo.mld_melding_object_verwijder IS NULL
AND d.ins_deel_key = mo.ins_deel_key
AND m.mld_melding_status NOT IN (1, 6);
-- Ontdubbel eventuele zelfde gebreken die op hetzelfde object zijn gemaakt, dus wanneer na elkaar
-- hetzelfde gebrek (stdmelding) is ingelegd, dan geldt de laatste (=hoogste melding_key)
CREATE_VIEW(cnd_v_nen2767_per_srtgebrek,0)
(
ins_deel_key,
mld_melding_key,
mld_stdmelding_key,
mld_melding_status,
ernst,
intensiteit,
omvang
)
AS
SELECT a.ins_deel_key,
a.mld_melding_key,
a.mld_stdmelding_key,
a.mld_melding_status,
a.ernst,
a.intensiteit,
a.omvang
FROM cnd_v_nen2767_alle_gebreken_fl a,
( SELECT a2.mld_stdmelding_key,
a2.ins_deel_key,
MAX (a2.mld_melding_key) AS mld_melding_key
FROM cnd_v_nen2767_alle_gebreken a2
GROUP BY a2.mld_stdmelding_key, a2.ins_deel_key) b
WHERE a.mld_melding_key = b.mld_melding_key
AND a.ins_deel_key = b.ins_deel_key;
CREATE_VIEW(cnd_v_nen2767_gebrek,0)
AS
WITH
w_srtdisc_key AS (SELECT fac.getsetting ('cnd_gebreken_srtdisc_key') sdk FROM DUAL)
SELECT mo.ins_deel_key,
m.mld_melding_key,
m.mld_stdmelding_key,
m.mld_melding_status,
m.mld_melding_datum
FROM mld_melding m,
mld_stdmelding sm,
mld_discipline disc,
mld_melding_object mo,
w_srtdisc_key
WHERE disc.ins_srtdiscipline_key = w_srtdisc_key.sdk
AND disc.ins_discipline_verwijder IS NULL
AND sm.mld_ins_discipline_key = disc.ins_discipline_key
AND m.mld_stdmelding_key = sm.mld_stdmelding_key
AND mo.mld_melding_key = m.mld_melding_key
AND mo.mld_melding_object_verwijder IS NULL
AND m.mld_melding_status NOT IN (1,6);
CREATE_VIEW(cnd_v_nen2767_srtgebrek,0)
AS
SELECT a.ins_deel_key,
a.mld_melding_key,
a.mld_stdmelding_key,
a.mld_melding_status,
a.mld_melding_datum
FROM cnd_v_nen2767_gebrek a,
( SELECT a2.mld_stdmelding_key,
a2.ins_deel_key,
MAX (a2.mld_melding_key) AS mld_melding_key
FROM cnd_v_nen2767_gebrek a2
GROUP BY a2.mld_stdmelding_key, a2.ins_deel_key) b
WHERE a.mld_melding_key = b.mld_melding_key
AND a.ins_deel_key = b.ins_deel_key;
CREATE_VIEW(cnd_v_aggr_cond_score,0)
(
alg_locatie_key,
alg_gebouw_key,
ins_deel_key,
ins_deel_aantal,
ins_deel_mjb_score1,
kosten,
correctiefactor,
totale_vervangingswaarde,
correctie_vervangingswaarde
)
AS
SELECT l.alg_locatie_key,
g.alg_gebouw_key,
d.ins_deel_key,
MAX (d.ins_deel_aantal),
MAX (d.ins_deel_mjb_score1),
MAX (
COALESCE (sc.INS_SRTCONTROLE_KOSTEN, 0)
+ COALESCE (sc.INS_SRTCONTROLE_KOSTEN2, 0)
+ COALESCE (sc.INS_SRTCONTROLE_KOSTEN3, 0)
+ COALESCE (sc.INS_SRTCONTROLE_MATERIAAL, 0))
kosten,
cnd.nen2767_corr_cond_score (MAX (d.ins_deel_mjb_score1))
correctiefactor,
MAX (d.ins_deel_aantal)
* MAX (
COALESCE (sc.INS_SRTCONTROLE_KOSTEN, 0)
+ COALESCE (sc.INS_SRTCONTROLE_KOSTEN2, 0)
+ COALESCE (sc.INS_SRTCONTROLE_KOSTEN3, 0)
+ COALESCE (sc.INS_SRTCONTROLE_MATERIAAL, 0))
totale_vervangingswaarde,
MAX (d.ins_deel_aantal)
* MAX (
COALESCE (sc.INS_SRTCONTROLE_KOSTEN, 0)
+ COALESCE (sc.INS_SRTCONTROLE_KOSTEN2, 0)
+ COALESCE (sc.INS_SRTCONTROLE_KOSTEN3, 0)
+ COALESCE (sc.INS_SRTCONTROLE_MATERIAAL, 0))
* cnd.nen2767_corr_cond_score (MAX (d.ins_deel_mjb_score1))
correctie_vervangingswaarde
FROM ins_deel d,
ins_v_defined_inspect_xcp sc,
alg_ruimte r,
alg_verdieping v,
alg_gebouw g,
alg_locatie l
WHERE d.ins_deel_verwijder IS NULL
AND ins_deel_mjb_score1 IS NOT NULL
AND sc.ins_deel_key = d.ins_deel_key
AND d.ins_alg_ruimte_type = 'R'
AND d.ins_alg_ruimte_key = r.alg_ruimte_key
AND r.alg_verdieping_key = v.alg_verdieping_key
AND v.alg_gebouw_key = g.alg_gebouw_key
AND g.alg_locatie_key = l.alg_locatie_key
AND ins_scenario_key = 1
AND ctr_ismjob = 1
GROUP BY d.ins_deel_key, l.alg_locatie_key, g.alg_gebouw_key;
CREATE_VIEW(cnd_v_rap_conditiemetingen, 0)
(
mld_melding_key,
complexnummer,
complexnaam,
clusternummer,
clusternaam,
gebouwgroep,
hoofdrecept,
groeprecept,
subrecept,
identificatie,
gebreknr,
datum_tijd,
datum,
inspecteur,
status,
gebrek,
omschrijving,
ernst,
omvang,
intensiteit,
veiligheid_gezondheid,
cultuurhistorische_waarde,
gebruik_en_bedrijfsproces,
technische_vervolgschade,
toename_klachtenonderhoud,
beleving_esthetica,
foto
)
AS
SELECT m.mld_melding_key,
l.alg_locatie_code complexnummer,
l.alg_locatie_omschrijving complexnaam,
aog.alg_gebouw_code clusternummer,
aog.alg_gebouw_naam clusternaam,
aog.alg_gebouw_groep groep,
id.ins_discipline_omschrijving hoofdrecept,
isg.ins_srtgroep_omschrijving groeprecept,
isd.ins_srtdeel_omschrijving || ' (' || isd.ins_srtdeel_code || ')'
subrecept,
d.ins_deel_omschrijving identificatie,
m.mld_melding_key gebreknummer,
m.mld_melding_datum datum_tijd,
TO_CHAR (mld_melding_datum, 'DD-MM-YYYY') datum,
pf.prs_perslid_naam_full inspecteur,
s.mld_statuses_omschrijving status,
std.mld_stdmelding_omschrijving gebrek,
m.mld_melding_omschrijving omschrijving,
(SELECT fac_usrdata_omschr
FROM mld_kenmerkmelding mk,
mld_kenmerk k,
mld_srtkenmerk sk,
fac_kenmerkdomein kd,
fac_usrtab ut,
fac_usrdata ud
WHERE sk.mld_srtkenmerk_code = 'ERNST'
AND sk.mld_srtkenmerk_key = k.mld_srtkenmerk_key
AND k.mld_kenmerk_key = mk.mld_kenmerk_key
AND sk.fac_kenmerkdomein_key = kd.fac_kenmerkdomein_key
AND ut.fac_usrtab_key = kd.fac_usrtab_key
AND ud.fac_usrtab_key = ut.fac_usrtab_key
AND TO_CHAR (fac_usrdata_key) = mld_kenmerkmelding_waarde
AND mk.mld_melding_key = m.mld_melding_key)
ernst,
(SELECT fac_usrdata_omschr
FROM mld_kenmerkmelding mk,
mld_kenmerk k,
mld_srtkenmerk sk,
fac_kenmerkdomein kd,
fac_usrtab ut,
fac_usrdata ud
WHERE sk.mld_srtkenmerk_code = 'OMVANG'
AND sk.mld_srtkenmerk_key = k.mld_srtkenmerk_key
AND k.mld_kenmerk_key = mk.mld_kenmerk_key
AND sk.fac_kenmerkdomein_key = kd.fac_kenmerkdomein_key
AND ut.fac_usrtab_key = kd.fac_usrtab_key
AND ud.fac_usrtab_key = ut.fac_usrtab_key
AND TO_CHAR (fac_usrdata_key) = mld_kenmerkmelding_waarde
AND mk.mld_melding_key = m.mld_melding_key)
omvang,
(SELECT fac_usrdata_omschr
FROM mld_kenmerkmelding mk,
mld_kenmerk k,
mld_srtkenmerk sk,
fac_kenmerkdomein kd,
fac_usrtab ut,
fac_usrdata ud
WHERE sk.mld_srtkenmerk_code = 'INTENSITEIT'
AND sk.mld_srtkenmerk_key = k.mld_srtkenmerk_key
AND k.mld_kenmerk_key = mk.mld_kenmerk_key
AND sk.fac_kenmerkdomein_key = kd.fac_kenmerkdomein_key
AND ut.fac_usrtab_key = kd.fac_usrtab_key
AND ud.fac_usrtab_key = ut.fac_usrtab_key
AND TO_CHAR (fac_usrdata_key) = mld_kenmerkmelding_waarde
AND mk.mld_melding_key = m.mld_melding_key)
intensiteit,
(SELECT fac_usrdata_omschr
FROM mld_kenmerkmelding mk,
mld_kenmerk k,
mld_srtkenmerk sk,
fac_kenmerkdomein kd,
fac_usrtab ut,
fac_usrdata ud
WHERE sk.mld_srtkenmerk_code = 'ASPECT1'
AND sk.mld_srtkenmerk_key = k.mld_srtkenmerk_key
AND k.mld_kenmerk_key = mk.mld_kenmerk_key
AND sk.fac_kenmerkdomein_key = kd.fac_kenmerkdomein_key
AND ut.fac_usrtab_key = kd.fac_usrtab_key
AND ud.fac_usrtab_key = ut.fac_usrtab_key
AND TO_CHAR (fac_usrdata_key) = mld_kenmerkmelding_waarde
AND mk.mld_melding_key = m.mld_melding_key)
veiligheid_gezondheid,
(SELECT fac_usrdata_omschr
FROM mld_kenmerkmelding mk,
mld_kenmerk k,
mld_srtkenmerk sk,
fac_kenmerkdomein kd,
fac_usrtab ut,
fac_usrdata ud
WHERE sk.mld_srtkenmerk_code = 'ASPECT2'
AND sk.mld_srtkenmerk_key = k.mld_srtkenmerk_key
AND k.mld_kenmerk_key = mk.mld_kenmerk_key
AND sk.fac_kenmerkdomein_key = kd.fac_kenmerkdomein_key
AND ut.fac_usrtab_key = kd.fac_usrtab_key
AND ud.fac_usrtab_key = ut.fac_usrtab_key
AND TO_CHAR (fac_usrdata_key) = mld_kenmerkmelding_waarde
AND mk.mld_melding_key = m.mld_melding_key)
cultuurhistorische_waarde,
(SELECT fac_usrdata_omschr
FROM mld_kenmerkmelding mk,
mld_kenmerk k,
mld_srtkenmerk sk,
fac_kenmerkdomein kd,
fac_usrtab ut,
fac_usrdata ud
WHERE sk.mld_srtkenmerk_code = 'ASPECT3'
AND sk.mld_srtkenmerk_key = k.mld_srtkenmerk_key
AND k.mld_kenmerk_key = mk.mld_kenmerk_key
AND sk.fac_kenmerkdomein_key = kd.fac_kenmerkdomein_key
AND ut.fac_usrtab_key = kd.fac_usrtab_key
AND ud.fac_usrtab_key = ut.fac_usrtab_key
AND TO_CHAR (fac_usrdata_key) = mld_kenmerkmelding_waarde
AND mk.mld_melding_key = m.mld_melding_key)
gebruik_en_bedrijfsproces,
(SELECT fac_usrdata_omschr
FROM mld_kenmerkmelding mk,
mld_kenmerk k,
mld_srtkenmerk sk,
fac_kenmerkdomein kd,
fac_usrtab ut,
fac_usrdata ud
WHERE sk.mld_srtkenmerk_code = 'ASPECT4'
AND sk.mld_srtkenmerk_key = k.mld_srtkenmerk_key
AND k.mld_kenmerk_key = mk.mld_kenmerk_key
AND sk.fac_kenmerkdomein_key = kd.fac_kenmerkdomein_key
AND ut.fac_usrtab_key = kd.fac_usrtab_key
AND ud.fac_usrtab_key = ut.fac_usrtab_key
AND TO_CHAR (fac_usrdata_key) = mld_kenmerkmelding_waarde
AND mk.mld_melding_key = m.mld_melding_key)
technische_vervolgschade,
(SELECT fac_usrdata_omschr
FROM mld_kenmerkmelding mk,
mld_kenmerk k,
mld_srtkenmerk sk,
fac_kenmerkdomein kd,
fac_usrtab ut,
fac_usrdata ud
WHERE sk.mld_srtkenmerk_code = 'ASPECT5'
AND sk.mld_srtkenmerk_key = k.mld_srtkenmerk_key
AND k.mld_kenmerk_key = mk.mld_kenmerk_key
AND sk.fac_kenmerkdomein_key = kd.fac_kenmerkdomein_key
AND ut.fac_usrtab_key = kd.fac_usrtab_key
AND ud.fac_usrtab_key = ut.fac_usrtab_key
AND TO_CHAR (fac_usrdata_key) = mld_kenmerkmelding_waarde
AND mk.mld_melding_key = m.mld_melding_key)
toename_klachtenonderhoud,
(SELECT fac_usrdata_omschr
FROM mld_kenmerkmelding mk,
mld_kenmerk k,
mld_srtkenmerk sk,
fac_kenmerkdomein kd,
fac_usrtab ut,
fac_usrdata ud
WHERE sk.mld_srtkenmerk_code = 'ASPECT6'
AND sk.mld_srtkenmerk_key = k.mld_srtkenmerk_key
AND k.mld_kenmerk_key = mk.mld_kenmerk_key
AND sk.fac_kenmerkdomein_key = kd.fac_kenmerkdomein_key
AND ut.fac_usrtab_key = kd.fac_usrtab_key
AND ud.fac_usrtab_key = ut.fac_usrtab_key
AND TO_CHAR (fac_usrdata_key) = mld_kenmerkmelding_waarde
AND mk.mld_melding_key = m.mld_melding_key)
beleving_esthetica,
(SELECT k.mld_kenmerk_key
FROM mld_kenmerk k, mld_srtkenmerk sk
WHERE sk.mld_srtkenmerk_code = 'FOTO' AND sk.mld_srtkenmerk_key = k.mld_srtkenmerk_key)
foto
FROM mld_melding m,
mld_melding_object mo,
ins_deel d,
ins_srtdeel isd,
ins_srtgroep isg,
ins_discipline id,
alg_v_allonrgoed_gegevens aog,
alg_locatie l,
mld_statuses s,
prs_v_perslid_fullnames_all pf,
mld_stdmelding std
WHERE m.mld_melding_key = mo.mld_melding_key
AND d.ins_deel_key = mo.ins_deel_key
AND d.ins_srtdeel_key = isd.ins_srtdeel_key
AND isd.ins_srtgroep_key = isg.ins_srtgroep_key
AND isg.ins_discipline_key = id.ins_discipline_key
AND m.mld_alg_onroerendgoed_keys = aog.alg_onroerendgoed_keys
AND l.alg_locatie_key = aog.alg_locatie_key
AND s.mld_statuses_key = m.mld_melding_status
AND m.prs_perslid_key = pf.prs_perslid_key
AND m.mld_stdmelding_key = std.mld_stdmelding_key;
REGISTERRUN('$Id$')
#endif // CND

View File

@@ -21,13 +21,10 @@ create index cnt_i_cnt_contract_plaats2 on cnt_contract_plaats(cnt_contract_key)
create index cnt_i_cnt_contract_object1 on cnt_contract_object(cnt_contract_key);
CREATE INDEX cnt_i_cnt_contract_object2 ON cnt_contract_object(cnt_ins_deel_key);
CREATE INDEX cnt_i_cnt_contract_onrg1 ON cnt_contract_onrgoed(cnt_contract_key);
CREATE INDEX cnt_i_cnt_contract_onrg2 ON cnt_contract_onrgoed(alg_onrgoed_key);
CREATE INDEX cnt_i_cnt_contract_note1 ON cnt_contract_note(cnt_contract_key);
CREATE UNIQUE INDEX cnt_i_cnt_factuurschema1 ON cnt_factuurschema(cnt_contract_key, cnt_factuurschema_boekmaand);
CREATE INDEX cnt_i_cnt_srtkenmerk1 ON cnt_srtkenmerk(cnt_srtkenmerk_code);
CREATE INDEX cnt_i_cnt_kenmerk1 ON cnt_kenmerk(cnt_kenmerk_code);
CREATE INDEX cnt_i_cnt_verlengschema ON cnt_verlengschema(cnt_contract_key);
REGISTERONCE('$Id$')

View File

@@ -5,7 +5,7 @@
/*
** Bij installatie van modules moet de tabel FAC_MODULE gevuld of ge-update worden.
*/
_FAC_MODULE('CNT','lcl_module_CNT')
_FAC_MODULE('CNT','Contractbeheer')
/*
** De MESSAGES van de CNT module.
@@ -63,11 +63,20 @@ DEF_FAC_MESSAGE ('cnt_r_cnt_contract_stdmld' ,'De aangegeven dienst bestaat n
DEF_FAC_MESSAGE ('cnt_r_cnt_contract_bedrijf' ,'Het aangegeven bedrijf bestaat niet.' ,'That company does not exist.');
DEF_FAC_MESSAGE ('cnt_r_cnt_contractint' ,'De aangegeven interne contactpersoon bestaat niet.' ,'That internal contact person does not exist');
INSERT INTO cnt_typecontract VALUES (1, 'lcl_cnt_typecontract1'); //Objecten
INSERT INTO cnt_typecontract VALUES (3, 'lcl_cnt_typecontract3'); //Plaats/Objectsoort
INSERT INTO cnt_typecontract VALUES (4, 'lcl_cnt_typecontract4'); //Geen
INSERT INTO cnt_typecontract VALUES (5, 'lcl_cnt_typecontract5'); //Plaats
INSERT INTO cnt_typecontract VALUES (6, 'lcl_cnt_typecontract6'); //Mantel
INSERT INTO cnt_mutatie_status VALUES (0, 'Vervallen');
INSERT INTO cnt_mutatie_status VALUES (1, 'Open');
INSERT INTO cnt_mutatie_status VALUES (2, 'Concept');
INSERT INTO cnt_mutatie_status VALUES (3, 'Ontvangen/Ok');
INSERT INTO cnt_mutatie_status VALUES (4, 'Ontvangen/NietOk');
INSERT INTO cnt_mutatie_status VALUES (5, 'Voltooid');
INSERT INTO cnt_mutatie_status VALUES (6, 'Geexporteerd');
INSERT INTO cnt_typecontract VALUES (1, 'Onderhoud/Maintenance');
INSERT INTO cnt_typecontract VALUES (2, 'Huur/Rental');
INSERT INTO cnt_typecontract VALUES (3, 'Ondersteuning/Support');
INSERT INTO cnt_typecontract VALUES (4, 'Algemeen/Generic');
INSERT INTO cnt_typecontract VALUES (5, 'Leverancier/Supplier');
INSERT INTO cnt_typecontract VALUES (6, 'Mantel/Master');
INSERT INTO cnt_termijn (cnt_termijn_type, cnt_termijn_aantal, cnt_termijn_omschrijving, cnt_termijn_volgnummer) VALUES ('W', 0, 'Geen', 10);
INSERT INTO cnt_termijn (cnt_termijn_type, cnt_termijn_aantal, cnt_termijn_omschrijving, cnt_termijn_volgnummer) VALUES ('W', 1, '1 Week', 20);

View File

@@ -6,28 +6,21 @@
CREATE OR REPLACE PACKAGE cnt AS
PROCEDURE setcontractstatus (pcontractkey IN NUMBER, pstatus IN NUMBER, puserkey IN NUMBER);
FUNCTION getVerlengschemaEinddatum(startdatum IN DATE, cnt_key IN NUMBER, volgnr IN NUMBER) RETURN DATE;
FUNCTION cnt_getTermijndatum (pdate IN DATE, ptermijn_key IN NUMBER, prichting IN NUMBER) RETURN DATE;
FUNCTION termijnjaarfactor (ptermijn_key IN NUMBER) RETURN NUMBER;
FUNCTION cnt_getOpzegdatum (pcnt_contract_key IN NUMBER) RETURN DATE;
FUNCTION cnt_getRappeldatum (pcnt_contract_key IN NUMBER) RETURN DATE;
FUNCTION cnt_contract_status (van IN DATE, rappel IN DATE, opzeg IN DATE, tot IN DATE) RETURN NUMBER;
PROCEDURE autoverleng_contract;
PROCEDURE autoinactiveer_contract;
FUNCTION cnt_contract_items (cntKey IN NUMBER) RETURN VARCHAR2;
PROCEDURE cnt_complete_mutatie(p_mutaite_key IN NUMBER);
PROCEDURE splitscontract (p_key IN NUMBER, p_datum IN DATE, p_user IN NUMBER, p_amount NUMBER);
PROCEDURE generatefactuurschema (pcontractkey IN NUMBER,ptermijnbedrag IN NUMBER DEFAULT NULL);
FUNCTION getnieuwsteversiekey(p_key IN NUMBER) RETURN NUMBER;
FUNCTION sprintf (ps IN VARCHAR2 , p_contract_key IN NUMBER) RETURN VARCHAR2;
PROCEDURE remove(p_contract_key IN NUMBER);
PROCEDURE notifycontractbedrijven (pcntkey NUMBER,
ptrackingkey NUMBER,
pnotidelay NUMBER DEFAULT NULL);
PRAGMA RESTRICT_REFERENCES (cnt_contract_items, WNDS, WNPS);
PRAGMA RESTRICT_REFERENCES (cnt_contract_status, WNDS, WNPS);
END cnt;
END Cnt;
/
CREATE OR REPLACE PACKAGE BODY cnt AS
@@ -39,7 +32,7 @@ CREATE OR REPLACE PACKAGE BODY cnt AS
AS
currentstatus cnt_contract.cnt_contract_status%TYPE;
newstatus cnt_contract.cnt_contract_status%TYPE;
eventcode VARCHAR(7); -- fac_srtnotificatie.fac_srtnotificatie_code%TYPE is te klein voor '@CNTNEW'
eventcode fac_srtnotificatie.fac_srtnotificatie_code%TYPE;
BEGIN
SELECT cnt_contract_status
INTO currentstatus
@@ -52,12 +45,11 @@ CREATE OR REPLACE PACKAGE BODY cnt AS
IF currentstatus IS NULL
THEN
newstatus := pstatus;
eventcode := 'CNTNEW'; -- direct ook notificeren
eventcode := 'CNTNEW';
ELSIF currentstatus = 2 OR currentstatus = 3 -- Het kan ook zijn dat er geen fiattering nodig is.
THEN
newstatus := pstatus;
eventcode := 'CNTFIT';
fac.notifytrackingbedrijven('CNTNEW', pcontractkey); -- Nu alsnog notificeren, we zijn helemaal klaar met fiatteren
END IF;
WHEN 1 -- Gesloten
THEN
@@ -71,7 +63,7 @@ CREATE OR REPLACE PACKAGE BODY cnt AS
IF currentstatus IS NULL
THEN
newstatus := pstatus;
eventcode := '@CNTNEW'; -- nog niet notificeren
eventcode := 'CNTNEW';
ELSIF currentstatus = 3
THEN
newstatus := pstatus;
@@ -79,7 +71,7 @@ CREATE OR REPLACE PACKAGE BODY cnt AS
END IF;
WHEN 3 -- Ter goedkeuring
THEN
IF currentstatus = 2 OR currentstatus IS NULL
IF currentstatus = 2
THEN
newstatus := pstatus;
eventcode := 'CNTCPT';
@@ -102,27 +94,6 @@ CREATE OR REPLACE PACKAGE BODY cnt AS
END IF;
END;
-- Bepaal de einddatum na x iteraties van het verlengschema vanaf een startdatum.
FUNCTION getVerlengschemaEinddatum(startdatum IN DATE, cnt_key IN NUMBER, volgnr IN NUMBER) RETURN DATE
IS
CURSOR c_verleng
IS
SELECT cnt_verlengschema_volgnr
, cnt_verlengschema_verlengtermijn
FROM cnt_verlengschema
WHERE cnt_verlengschema_volgnr <= volgnr
AND cnt_contract_key = cnt_key;
einddatum DATE := startdatum;
BEGIN
FOR c IN c_verleng
LOOP
einddatum := cnt.cnt_getTermijndatum(einddatum, c.cnt_verlengschema_verlengtermijn, 1);
END LOOP;
RETURN einddatum;
END;
-- Deze functie bepaalt de datum door het termijn (ptermijn_key) van de datum (pdate) in mindering te brengen.
-- Indien de 29, 30 of 31 datum niet in de betreffende maand voorkomt wordt de eerste van de volgende maand genomen.
-- prichting geeft aan of ten opzichte van pdate achteruit (-1) of vooruit (1, of anders) moet worden gerekend.
@@ -262,154 +233,117 @@ CREATE OR REPLACE PACKAGE BODY cnt AS
RETURN 4;
END;
PROCEDURE autoverleng_contract
IS
CURSOR c_verleng IS
SELECT c.cnt_contract_key
, c.ins_discipline_key
, c.cnt_contract_nummer_intern
, c.cnt_contract_omschrijving
, c.cnt_contract_looptijd_tot
, c.cnt_contract_verleng_termijn
, o.cnt_termijn_omschrijving opzegtermijn
, cnt.cnt_getTermijndatum (c.cnt_contract_looptijd_tot, c.cnt_contract_opzegtermijn, -1) dtopzeggen
, v.cnt_termijn_omschrijving verlengtermijn
, cnt.cnt_getTermijndatum (c.cnt_contract_looptijd_tot, c.cnt_contract_verleng_termijn, 1) dtnieuw
FROM cnt_contract c
, cnt_disc_params p
, cnt_termijn o
, cnt_termijn v
WHERE c.ins_discipline_key = p.cnt_ins_discipline_key
AND c.cnt_contract_opzegtermijn = o.cnt_termijn_key
AND c.cnt_contract_verleng_termijn = v.cnt_termijn_key
AND c.cnt_contract_verwijder IS NULL
AND BITAND(p.cnt_disc_params_opties,1) = 1 -- Dit contracttype mag automatisch verlengd worden
AND BITAND(c.cnt_contract_verlenging,4) = 4 -- Dit contract mag automatisch verlengd worden
AND TRUNC(SYSDATE) > cnt.cnt_getTermijndatum (c.cnt_contract_looptijd_tot, c.cnt_contract_opzegtermijn, -1)
AND NOT EXISTS
( SELECT 1
FROM cnt_contract cn
WHERE cn.cnt_contract_nummer_intern = c.cnt_contract_nummer_intern
AND cn.cnt_contract_versie > c.cnt_contract_versie
AND cn.cnt_contract_looptijd_van = (c.cnt_contract_looptijd_tot + 1)
AND cn.cnt_contract_verwijder IS NULL
);
FUNCTION cnt_contract_items (cntKey IN NUMBER)
RETURN VARCHAR2
AS
ret VARCHAR2(512);
var_ckey NUMBER;
CURSOR query(cntKey NUMBER) IS
SELECT 1 ckey, S.INS_SRTDEEL_CODE || ' ' ||S.INS_SRTDEEL_OMSCHRIJVING cntText
from CNT_CONTRACT_OBJECT O, INS_V_AANWEZIGSRTDEEL S
WHERE O.CNT_CONTRACT_KEY = cntKey
AND S.ins_srtdeel_key = O.cnt_ins_srtdeel_key
AND O.cnt_ins_DEEL_key IS NULL
UNION
SELECT 2 ckey, D.INS_DEEL_OMSCHRIJVING cntText
from CNT_CONTRACT_OBJECT O, INS_V_AANWEZIGDEEL D
WHERE O.CNT_CONTRACT_KEY = cntKey
AND D.ins_DEEL_key = O.cnt_ins_DEEL_key
UNION
SELECT 3 ckey, g.alg_locatie_omschrijving cntText
FROM alg_v_aanweziglocatie g, CNT_v_aanwezigCONTRACT_PLAATS P
WHERE p.CNT_CONTRACT_KEY = cntKey
AND p.cnt_alg_plaats_key = g.alg_locatie_key
AND p.CNT_ALG_PLAATS_CODE = 'L'
UNION
SELECT 4 ckey, l.alg_locatie_omschrijving || ' ' ||g.alg_gebouw_omschrijving cntText
FROM alg_v_aanweziggebouw g, CNT_v_aanwezigCONTRACT_PLAATS P, alg_locatie l
WHERE p.CNT_CONTRACT_KEY = cntKey
AND p.cnt_alg_plaats_key = g.alg_gebouw_key
AND p.CNT_ALG_PLAATS_CODE = 'G'
AND l.alg_locatie_key = g.alg_locatie_key
UNION
SELECT 5 ckey, l.alg_locatie_omschrijving || ' ' ||alg_terreinsector_naam cntText
FROM alg_v_aanwezigterreinsector T, CNT_v_aanwezigCONTRACT_PLAATS P, alg_locatie l
WHERE p.CNT_CONTRACT_KEY = cntKey
AND p.cnt_alg_plaats_key = T.alg_terreinsector_key
AND p.CNT_ALG_PLAATS_CODE = 'T'
AND l.alg_locatie_key = t.alg_locatie_key
ORDER BY 2;
tracking VARCHAR2(4000);
this_verlengschema_key cnt_verlengschema.cnt_verlengschema_key%TYPE;
next_verlengschema_key cnt_verlengschema.cnt_verlengschema_key%TYPE;
next_termijn cnt_termijn.cnt_termijn_key%TYPE;
infinite_prolongate NUMBER(1) := 0;
BEGIN
FOR cnt_verloopt IN c_verleng
LOOP
UPDATE cnt_contract
SET cnt_contract_looptijd_tot = cnt_verloopt.dtnieuw
WHERE cnt_contract_key = cnt_verloopt.cnt_contract_key;
tracking := REPLACE(REPLACE(lcl.l('lcl_cnt_prolongation_tracking')
, '{0}', cnt_verloopt.verlengtermijn
)
, '{1}', TO_CHAR(cnt_verloopt.dtnieuw,'dd-mm-yyyy')
);
fac.trackaction ('CNTUPD', cnt_verloopt.cnt_contract_key, NULL, NULL, tracking);
-- Heeft dit automatisch verlengbaar contract een verlengschema?
BEGIN
SELECT this_schema_key
, next_schema_key
INTO this_verlengschema_key
, next_verlengschema_key
FROM ( SELECT cnt_verlengschema_key AS this_schema_key
, LEAD(cnt_verlengschema_key) OVER(ORDER BY cnt_verlengschema_volgnr) AS next_schema_key
FROM cnt_verlengschema
WHERE cnt_contract_key = cnt_verloopt.cnt_contract_key
)
WHERE rownum = 1;
-- Dan eerstvolgende verlengtermijn uit verlengschema naar het veld verlengtermijn in contract kopieren...
IF next_verlengschema_key IS NOT NULL
THEN
SELECT cnt_verlengschema_verlengtermijn
INTO next_termijn
FROM cnt_verlengschema
WHERE cnt_verlengschema_key = next_verlengschema_key;
ELSE
IF infinite_prolongate = 1
THEN
next_termijn := cnt_verloopt.cnt_contract_verleng_termijn;
ELSE
next_termijn := NULL;
END IF;
END IF;
UPDATE cnt_contract
SET cnt_contract_verleng_termijn = next_termijn
WHERE cnt_contract_key = cnt_verloopt.cnt_contract_key;
-- ...en deze verlengtermijn uit het verlengschema verwijderen.
DELETE
FROM cnt_verlengschema
WHERE cnt_verlengschema_key = this_verlengschema_key;
EXCEPTION
WHEN NO_DATA_FOUND THEN NULL;
-- Laat laatste verlengtermijn staan als er geen volgende in het schema gevonden kan worden.
END;
ret := null;
var_ckey := -1;
FOR cntitem_rec IN query(cntKey) LOOP
IF var_ckey = -1 THEN
ret := cntitem_rec.cntText;
ELSE
IF LENGTH(ret)+LENGTH(cntitem_rec.cntText)<(512-5) THEN
ret := ret || CHR(10) || cntitem_rec.cntText;
ELSE
ret := ret || CHR(10) || '...';
RETURN ret;
END IF;
END IF;
var_ckey := cntitem_rec.ckey;
END LOOP;
RETURN ret;
END;
PROCEDURE autoinactiveer_contract
PROCEDURE cnt_complete_mutatie(p_mutaite_key IN NUMBER)
IS
l_prs_perslid_key prs_perslid.prs_perslid_key%TYPE;
tracking VARCHAR2(4000);
CURSOR c_inactiveer IS
SELECT c.cnt_contract_key
FROM cnt_contract c
WHERE c.cnt_contract_inactiveren = 1
AND TRUNC(c.cnt_contract_looptijd_tot) < TRUNC(SYSDATE)
AND NOT EXISTS (SELECT f.fin_factuur_key -- Contract mag geen openstaande facturen hebben.
FROM fin_factuur f
WHERE f.cnt_contract_key = c.cnt_contract_key
AND f.fin_factuur_statuses_key NOT IN (1,7)
AND f.fin_factuur_verwijder IS NULL);
-- The following actions should be executed when the state becomes 'Voltooid':
-- Find the matching records in the CNT_CONTRACT_ONRGOED table where one row without a mutation_key
-- filled in matches a row with a mutation_key filled in.
-- The match will be successful if both rows have the same ALG_ONRGOED_KEY,
-- the same ALG_ONRGOED_NIVEAU and the same CNT_CONTRACT_KEY.
-- From these matching records the one without CNT_MUTATION_KEY should be deleted
BEGIN
BEGIN
SELECT prs_perslid_key
INTO l_prs_perslid_key
FROM prs_perslid
WHERE prs_perslid_oslogin = '_SYSTEEM' AND prs_perslid_verwijder IS NULL;
EXCEPTION
WHEN NO_DATA_FOUND
THEN
fac.putsystemnotification ('Invalid configuration: missing _SYSTEEM user', 1);
END;
DELETE
cnt_contract_onrgoed
WHERE cnt_contract_onrgoed_key IN (
SELECT a.cnt_contract_onrgoed_key
FROM cnt_contract_onrgoed b, cnt_contract_onrgoed a
WHERE a.cnt_contract_key = b.cnt_contract_key
AND a.alg_onrgoed_key = b.alg_onrgoed_key
AND a.alg_onrgoed_niveau = b.alg_onrgoed_niveau
AND b.cnt_mutatie_key = p_mutaite_key
AND a.cnt_mutatie_key IS NULL);
FOR cnt_inactiveer IN c_inactiveer
LOOP
cnt.setcontractstatus(cnt_inactiveer.cnt_contract_key, 1, l_prs_perslid_key); -- Zorgt ook voor tracking en daarmee notificatie.
-- Delete the entries in the CNT_CONTRACT_ONRGOED table with the mutation_key equal
-- to the CNT_MUTATION that will be accepted and where the area size (CNT_CONTRACT_ONRGOED_OPP) = 0.
DELETE
cnt_contract_onrgoed
WHERE cnt_mutatie_key = p_mutaite_key
AND CNT_CONTRACT_ONRGOED_OPP = 0;
UPDATE cnt_contract
SET cnt_contract_inactiveren = 0
WHERE cnt_contract_key = cnt_inactiveer.cnt_contract_key;
tracking := lcl.l('lcl_cnt_is_cntupd') || CHR(10) || lcl.l('lcl_cnt_auto_close') || ': ' || lcl.l('lcl_Yes') || lcl.l('lcl_trackto') || lcl.l('lcl_No');
fac.trackaction('CNTUPD', cnt_inactiveer.cnt_contract_key, NULL, NULL, tracking);
END LOOP;
END;
-- Set the Mutation_key to NULL from the rows where the CNT_MUTATION_KEY will be equal to the CNT_MUTATION that was accepted.
UPDATE
cnt_contract_onrgoed
SET cnt_mutatie_key = NULL
WHERE cnt_mutatie_key = p_mutaite_key;
-- The state of the mutation should be set to 'Voltooid'
UPDATE cnt_mutatie
SET CNT_MUTATIE_DATUM_VOLTOOID = SYSDATE,
CNT_MUTATIE_STATUS = 5
WHERE cnt_mutatie_key = p_mutaite_key;
END cnt_complete_mutatie;
PROCEDURE splitscontract (p_key IN NUMBER, p_datum IN DATE, p_user IN NUMBER, p_amount NUMBER)
IS
begin1 DATE;
eind1 DATE;
versie1 cnt_contract.cnt_contract_versie%TYPE;
newkey NUMBER;
nummer1 cnt_contract.cnt_contract_nummer_intern%TYPE;
amount1 cnt_contract.cnt_contract_kosten%TYPE;
approve_new cnt_disc_params.cnt_disc_params_approve_new%TYPE;
srtcontract_type cnt_disc_params.cnt_srtcontract_type%TYPE;
new_status cnt_contract.cnt_contract_status%TYPE;
tracking VARCHAR2 (4000);
splitsen BOOLEAN := TRUE;
begin1 DATE;
eind1 DATE;
versie1 cnt_contract.cnt_contract_versie%TYPE;
newkey NUMBER;
nummer1 cnt_contract.cnt_contract_nummer_intern%TYPE;
amount1 cnt_contract.cnt_contract_kosten%TYPE;
srtcontract_type cnt_disc_params.cnt_srtcontract_type%TYPE;
new_status cnt_contract.cnt_contract_status%TYPE;
BEGIN
-- Splits het contract met p_key in twee delen: het oude dat eindigt op p_datum - 1,
-- en een nieuwe kopie die begint op die p_datum
-- Splits het contract met p_key in twee delen: het oude dat eindigt op p_datum,
-- en een nieuwe kopie die begint op die datum
-- p_amount is -optioneel- het bedrag dat bij het oude contract moeten blijven
-- de rest komt bij de nieuwe. Als p_amount NULL is, eindigen beide contracten
-- met het originele bedrag.
@@ -424,40 +358,26 @@ CREATE OR REPLACE PACKAGE BODY cnt AS
COALESCE (c.cnt_contract_versie, '0'),
cnt_contract_nummer_intern,
cnt_contract_kosten,
cdp.cnt_srtcontract_type,
cdp.cnt_disc_params_approve_new,
c.cnt_contract_status
INTO begin1, eind1, versie1, nummer1, amount1, srtcontract_type, approve_new, new_status
cdp.cnt_srtcontract_type
INTO begin1, eind1, versie1, nummer1, amount1, srtcontract_type
FROM cnt_contract c,
cnt_disc_params cdp
WHERE c.ins_discipline_key = cdp.cnt_ins_discipline_key
AND c.cnt_contract_key = p_key;
AND c.cnt_contract_key = p_key
AND c.cnt_contract_looptijd_van < p_datum
AND c.cnt_contract_looptijd_tot > p_datum;
EXCEPTION
WHEN NO_DATA_FOUND
THEN
RETURN;
END;
IF (begin1 < p_datum AND eind1 > p_datum)
IF (fac.getsetting('cnt_contract_approval') = 1 AND srtcontract_type != 6)
THEN
-- Splitsen van contract.
begin1 := p_datum;
IF (fac.getsetting('cnt_contract_approval') = 1 AND srtcontract_type != 6) -- niet voor mantelcontracten
THEN
new_status := 2; -- altijd op nieuw(=concept)
ELSE
new_status := 0; -- direct actief
END IF;
ELSIF (eind1 < p_datum)
THEN
-- Verlengen van contract
begin1 := eind1 + 1;
eind1 := p_datum;
splitsen := FALSE;
new_status := 2; -- altijd op nieuw
ELSE
RETURN;
new_status := 0; -- direct actief
END IF;
-- de datum is een zinvolle splitsdatum, alles in orde
INSERT INTO cnt_contract (cnt_contract_nummer, cnt_contract_omschrijving, cnt_contract_looptijd_tot, cnt_contract_kosten,
cnt_contract_uurloon, cnt_prs_bedrijf_key, cnt_prs_afdeling_key, cnt_prs_perslid_key,
@@ -466,11 +386,11 @@ CREATE OR REPLACE PACKAGE BODY cnt AS
prs_perslid_key_eig, prs_perslid_key_beh, prs_afdeling_key_eig, cnt_contract_status,
cnt_contract_looptijd_van, prs_kostenplaats_key, cnt_contract_termijnkosten, prs_kostensoort_key,
cnt_contract_opmerking, cnt_contract_mantel_key, cnt_contract_opzegtermijn,
cnt_contract_rappeltermijn, cnt_contract_versie, prs_dienst_key, cnt_contract_termijntermijn
cnt_contract_rappeltermijn, cnt_contract_versie
)
SELECT cnt_contract_nummer,
cnt_contract_omschrijving,
eind1,
cnt_contract_looptijd_tot,
amount1 - COALESCE(p_amount, 0),
cnt_contract_uurloon,
cnt_prs_bedrijf_key,
@@ -487,7 +407,7 @@ CREATE OR REPLACE PACKAGE BODY cnt AS
prs_perslid_key_beh,
prs_afdeling_key_eig,
new_status,
begin1,
p_datum,
prs_kostenplaats_key,
cnt_contract_termijnkosten,
prs_kostensoort_key,
@@ -495,9 +415,7 @@ CREATE OR REPLACE PACKAGE BODY cnt AS
cnt_contract_mantel_key,
cnt_contract_opzegtermijn,
cnt_contract_rappeltermijn,
TO_CHAR (versie1 + 1),
prs_dienst_key,
cnt_contract_termijntermijn
TO_CHAR (versie1 + 1)
FROM cnt_contract
WHERE cnt_contract_key = p_key;
@@ -509,26 +427,13 @@ CREATE OR REPLACE PACKAGE BODY cnt AS
AND cnt_contract_versie = TO_CHAR (versie1 + 1)
AND cnt_contract_verwijder IS NULL;
--- Een versieloos oud contract krijgt expliciet versie 0
--- Looptijd_tot en kosten moteen alleen bij splitsen worden aangepast.
IF splitsen
THEN
UPDATE cnt_contract
SET cnt_contract_looptijd_tot = p_datum - 1,
cnt_contract_versie = versie1,
cnt_contract_kosten = COALESCE(p_amount, cnt_contract_kosten)
WHERE cnt_contract_key = p_key;
ELSE
UPDATE cnt_contract
SET cnt_contract_versie = versie1
WHERE cnt_contract_key = p_key;
END IF;
UPDATE cnt_contract
SET cnt_contract_looptijd_tot = p_datum - 1,
cnt_contract_versie = versie1,
cnt_contract_kosten = COALESCE(p_amount, cnt_contract_kosten)
WHERE cnt_contract_key = p_key;
tracking := lcl.l('lcl_cnt_is_cntupd') || CHR(10) || lcl.l('lcl_cnt_enddate') || ': ' || TO_CHAR(eind1, 'dd-mm-yyyy') || lcl.l('lcl_trackto') || TO_CHAR((p_datum - 1), 'dd-mm-yyyy');
IF (p_amount IS NOT NULL AND p_amount <> amount1)
THEN
tracking := tracking || CHR(10) || lcl.l('lcl_cnt_contract_sum') || ': ' || amount1 || lcl.l('lcl_trackto') || p_amount;
END IF;
fac.trackaction ('CNTUPD', p_key, p_user, NULL, tracking);
fac.trackaction ('CNTUPD', p_key, p_user, NULL, NULL);
-- de basis is gelegd, nu de aanhang meekopieren
-- flexkenmerken
@@ -561,6 +466,18 @@ CREATE OR REPLACE PACKAGE BODY cnt AS
FROM cnt_contract_object cob
WHERE cob.cnt_contract_key = p_key AND cob.cnt_contract_object_verwijder IS NULL;
--cnt_contract_onrgoed
INSERT INTO cnt_contract_onrgoed (cnt_contract_key, alg_onrgoed_key, alg_onrgoed_niveau, alg_srtonrgoed_key, cnt_contract_onrgoed_opp, cnt_srtruimte_prijs
)
SELECT newkey,
cog.alg_onrgoed_key,
cog.alg_onrgoed_niveau,
cog.alg_srtonrgoed_key,
cog.cnt_contract_onrgoed_opp,
cog.cnt_srtruimte_prijs
FROM cnt_contract_onrgoed cog
WHERE cog.cnt_contract_key = p_key AND cog.cnt_mutatie_key IS NULL;
--cnt_contract_plaats
INSERT INTO cnt_contract_plaats (cnt_contract_key, cnt_alg_plaats_code, cnt_alg_plaats_key, cnt_contract_plaats_gewicht
)
@@ -582,52 +499,12 @@ CREATE OR REPLACE PACKAGE BODY cnt AS
--cnt_factuurschema: splitst op dezelfde grensdatum
UPDATE cnt_factuurschema
SET cnt_contract_key = newkey
WHERE cnt_contract_key = p_key
AND cnt_factuurschema_boekmaand >= TO_CHAR(p_datum, 'YYYY-MM');
WHERE cnt_contract_key = p_key AND cnt_factuurschema_datum > p_datum;
fac.trackaction ('CNTNEW', newkey, p_user, NULL, NULL);
END splitscontract;
-- Genereer een factuurschema met een gelijk bedrag per maand gedurende
-- de looptijd van het contract
-- Verondersteld dat er nog geen schema was.
PROCEDURE generatefactuurschema (
pcontractkey IN NUMBER,
ptermijnbedrag IN NUMBER DEFAULT NULL)
AS
maanden NUMBER (10);
maand NUMBER (10);
ltermijnbedrag cnt_factuurschema.cnt_factuurschema_bedrag%TYPE;
BEGIN
FOR cnt_rec
IN (SELECT cnt_contract_kosten,
cnt_contract_looptijd_tot,
cnt_contract_looptijd_van
FROM cnt_contract
WHERE cnt_contract_key = pcontractkey)
LOOP
maanden :=
1
+ TRUNC(MONTHS_BETWEEN (cnt_rec.cnt_contract_looptijd_tot,
cnt_rec.cnt_contract_looptijd_van));
ltermijnbedrag :=
COALESCE (ptermijnbedrag, cnt_rec.cnt_contract_kosten / maanden);
FOR maand IN 0 .. maanden - 1
LOOP
INSERT INTO cnt_factuurschema (cnt_contract_key,
cnt_factuurschema_boekmaand,
cnt_factuurschema_bedrag)
VALUES (pcontractkey,
TO_CHAR (
ADD_MONTHS (cnt_rec.cnt_contract_looptijd_van, maand),
'YYYY-MM'),
ltermijnbedrag);
END LOOP;
END LOOP;
END;
-- Zoek de key van de hoogste revisie van het meegegeven contract
-- Beseffende dat _versie een oplopende reeks is en hopende dat
-- nummer_intern hetzelfde blijft over versies en vrij uniek is
@@ -684,15 +561,15 @@ CREATE OR REPLACE PACKAGE BODY cnt AS
-- ##KEY## = cnt_contract_nummer_intern
IF INSTR (s, '#') > 0
THEN
SELECT COALESCE(b.prs_bedrijf_naam, p.prs_perslid_naam_full, a.prs_afdeling_omschrijving),
c.cnt_contract_omschrijving,
c.cnt_contract_nummer_intern
SELECT COALESCE(prs_bedrijf_naam, fac.getsetting ('prs_pers_string'), fac.getsetting ('prs_dep_string')),
cnt_contract_omschrijving,
cnt_contract_nummer_intern
INTO varlev,
varomsch,
varnummer
FROM cnt_contract c,
prs_bedrijf b,
prs_v_perslid_fullnames_all p,
prs_perslid p,
prs_afdeling a
WHERE c.cnt_prs_bedrijf_key = b.prs_bedrijf_key(+)
AND c.cnt_prs_perslid_key = p.prs_perslid_key(+)
@@ -707,156 +584,6 @@ CREATE OR REPLACE PACKAGE BODY cnt AS
RETURN s;
END;
PROCEDURE remove(p_contract_key IN NUMBER)
IS
CURSOR c_contract IS
SELECT cnt_contract_key
FROM cnt_contract
WHERE cnt_contract_mantel_key = p_contract_key;
CURSOR c_factuur IS
SELECT fin_factuur_key
FROM fin_factuur
WHERE cnt_contract_key = p_contract_key;
CURSOR c_bijlagen(p_refkey IN NUMBER) IS
SELECT fac_bijlagen_key
FROM fac_bijlagen b
, cnt_contract r
WHERE b.fac_bijlagen_refkey = r.cnt_contract_key
AND b.fac_bijlagen_module = 'CNT'
AND b.fac_bijlagen_refkey = p_refkey;
BEGIN
-- Verwijder alle subcontracten van dit contract.
FOR ref_contract IN c_contract
LOOP
cnt.remove(ref_contract.cnt_contract_key);
END LOOP;
FOR ref_factuur IN c_factuur
LOOP
fin.remove(ref_factuur.fin_factuur_key);
END LOOP;
FOR ref_bijlagen IN c_bijlagen(p_contract_key)
LOOP
flx.deleteflexbijlage (ref_bijlagen.fac_bijlagen_key);
END LOOP;
FOR ref_mldopdr IN (SELECT mld_opdr_key
FROM mld_opdr
WHERE cnt_contract_key = p_contract_key
)
LOOP
-- Verwijder melding-opdrachten die aan dit contract zitten.
mld.remove_opdr(ref_mldopdr.mld_opdr_key);
END LOOP;
DELETE FROM cnt_contract
WHERE cnt_contract_key = p_contract_key;
-- Van de volgende tabellen worden de records die naar deze p_contact_key
-- verwijzen met ON DELETE CASCADE ook verwijderd:
-- cnt_contract_note
-- cnt_contract_object
-- cnt_contract_plaats
-- cnt_contract_dienst
-- cnt_factuurschema
-- cnt_kenmerkcontract
-- In de volgende tabel wordt cnt_contract_key leeg gemaakt bij het verwijderen van p_contract_key:
-- mld_opdr
fac.remove_tracking('contract', p_contract_key);
-- NB:
-- Tabel bes_bestelopdr heeft ook een cnt_contract key, maar deze heeft geen referential integrity constraint.
-- In geen enkele omgeving is cnt_contract_key in deze tabel ingevuld.
END;
PROCEDURE notifycontractbedrijven (pcntkey NUMBER,
ptrackingkey NUMBER,
pnotidelay NUMBER DEFAULT NULL)
AS
BEGIN
FOR bedrijfrec
IN (SELECT b.prs_bedrijf_key,
l.alg_locatie_key,
CASE WHEN b.prs_bedrijf_key = c.cnt_prs_bedrijf_key THEN 'C' ELSE 'G' END bedrijfadres_type,
cnt_contract_nummer_intern,
c.ins_discipline_key,
COALESCE (l.alg_locatie_email, ins_discipline_email),
d.prs_bedrijf_key persoon_bedrijf_key -- van de melder, niet de uitvoerende
FROM prs_bedrijf b,
cnt_contract c,
ins_tab_discipline d,
alg_locatie l,
prs_perslid p,
prs_v_afdeling d,
( SELECT cnt_contract_key,
DECODE (MIN (cp1.cnt_alg_plaats_code),
'L', MIN (cp1.cnt_alg_plaats_key),
MIN (alg_boom.alg_locatie_key))
cnt_locatie_key
FROM cnt_contract_plaats cp1,
(SELECT alg_r.alg_ruimte_key,
alg_r.alg_verdieping_key,
alg_v.alg_gebouw_key,
alg_g.alg_locatie_key,
'R' alg_type
FROM alg_ruimte alg_r, alg_verdieping alg_v, alg_gebouw alg_g
WHERE alg_r.alg_verdieping_key = alg_v.alg_verdieping_key
AND alg_v.alg_gebouw_key = alg_g.alg_gebouw_key
UNION
SELECT TO_NUMBER (NULL),
alg_v.alg_verdieping_key,
alg_v.alg_gebouw_key,
alg_g.alg_locatie_key,
'V' alg_type
FROM alg_verdieping alg_v, alg_gebouw alg_g
WHERE alg_v.alg_gebouw_key = alg_g.alg_gebouw_key
UNION
SELECT TO_NUMBER (NULL),
TO_NUMBER (NULL),
alg_g.alg_gebouw_key,
alg_g.alg_locatie_key,
'G' alg_type
FROM alg_gebouw alg_g) alg_boom
WHERE cp1.cnt_alg_plaats_key =
CASE cp1.cnt_alg_plaats_code
WHEN 'G' THEN alg_boom.alg_gebouw_key(+)
WHEN 'V' THEN alg_boom.alg_verdieping_key(+)
WHEN 'R' THEN alg_boom.alg_ruimte_key(+)
END
AND cp1.cnt_alg_plaats_code = alg_boom.alg_type(+)
AND cp1.cnt_contract_plaats_verwijder IS NULL
GROUP BY cnt_contract_key
HAVING COUNT (1) = 1) cp
WHERE c.cnt_contract_key = pcntkey
AND d.ins_discipline_key = c.ins_discipline_key
AND c.cnt_contract_key = cp.cnt_contract_key(+)
AND cp.cnt_locatie_key = l.alg_locatie_key(+)
AND d.prs_afdeling_key = p.prs_afdeling_key
AND p.prs_perslid_key = c.prs_perslid_key_beh
AND ( b.prs_bedrijf_key = c.cnt_prs_bedrijf_key -- type 'C'
OR EXISTS
(SELECT 1
FROM prs_bedrijfadres ba
WHERE ba.prs_bedrijf_key = b.prs_bedrijf_key
AND ba.prs_bedrijfadres_startdatum <= SYSDATE
AND ba.prs_bedrijfadres_type = 'G')))
LOOP
fac.notifybedrijf (pbedrijf_key => bedrijfrec.prs_bedrijf_key,
pbedrijfadres_type => bedrijfrec.bedrijfadres_type,
prefkey => pcntkey,
ptrackingkey => ptrackingkey,
preference => bedrijfrec.cnt_contract_nummer_intern,
pdiscipline_key => bedrijfrec.ins_discipline_key,
plocatie_key => bedrijfrec.alg_locatie_key,
pbedrijf_key2 => bedrijfrec.persoon_bedrijf_key,
pnotidelay => pnotidelay);
END LOOP;
END;
END cnt;
/

View File

@@ -16,9 +16,11 @@ CREATE SEQUENCE cnt_s_cnt_srtkenmerk_key MINVALUE 1;
CREATE SEQUENCE cnt_s_cnt_kenmerk_key MINVALUE 1;
CREATE SEQUENCE cnt_s_cnt_kenmerkcontract_key MINVALUE 1;
CREATE SEQUENCE cnt_s_cnt_onrgoed_key MINVALUE 1;
CREATE SEQUENCE cnt_s_cnt_mutatie_key MINVALUE 1;
CREATE SEQUENCE cnt_s_cnt_contract_note_key MINVALUE 1;
CREATE SEQUENCE cnt_s_cnt_factuurschema_key MINVALUE 1;
CREATE SEQUENCE cnt_s_cnt_verlengschema_key MINVALUE 1;
REGISTERONCE('$Id$')

View File

@@ -44,14 +44,6 @@ CREATE_TABLE(cnt_disc_params, 0)
CONSTRAINT cnt_r_cnt_typecontract_key REFERENCES cnt_typecontract(cnt_typecontract_key),
cnt_disc_params_opmerking
VARCHAR2(320),
cnt_disc_params_verkoopcontr
NUMBER(1)
DEFAULT 0
NOT NULL,
cnt_disc_params_factuurschema
NUMBER(1)
DEFAULT 0
NOT NULL,
cnt_disc_params_factuurmarge
NUMBER(8,2)
DEFAULT 0,
@@ -66,37 +58,7 @@ CREATE_TABLE(cnt_disc_params, 0)
/* bewust niet, irrelevant voor cnt: cnt_disc_params_factmatchmode -- 2-weg of 3-weg matching? */
cnt_disc_params_termijndefault
NUMBER(10)
CONSTRAINT cnt_r_cnt_disc_params_tdefault REFERENCES cnt_termijn(cnt_termijn_key),
cnt_disc_params_fin NUMBER(1)
DEFAULT 1 NOT NULL,
cnt_disc_params_binding
NUMBER(3)
DEFAULT (3)
NOT NULL, /* 2=Persoon 1=Bedrijf 3=Alles*/
cnt_disc_params_leverancier /* indien Bedrijf: Leveranciers? */
NUMBER(1)
DEFAULT 0
NOT NULL,
cnt_disc_params_uitvoerende /* indien Bedrijf: Uitvoerenden? */
NUMBER(1)
DEFAULT 0
NOT NULL,
cnt_disc_params_huurder /* indien Bedrijf: Huurders? */
NUMBER(1)
DEFAULT 0
NOT NULL,
cnt_disc_params_opties
NUMBER(1)
DEFAULT 0
NOT NULL,
cnt_disc_params_ksverplicht /* Kostensoort verplicht {0=niet verplicht (default), 1=verplicht} */
NUMBER(1)
DEFAULT 0
NOT NULL,
cnt_disc_params_approve_new /* nieuw/gesplitst contract altijd acorderen {0=nee (default), 1=ja} */
NUMBER(1)
DEFAULT 0
NOT NULL
CONSTRAINT cnt_r_cnt_disc_params_tdefault REFERENCES cnt_termijn(cnt_termijn_key)
);
@@ -124,10 +86,6 @@ CREATE_TABLE(cnt_contract,0)
, cnt_contract_looptijd_tot
DATE
CONSTRAINT cnt_c_cnt_contract_tot CHECK(cnt_contract_looptijd_tot IS NOT NULL)
, cnt_contract_inactiveren /* Automatisch sluiten na einddatum (0=nee, 1=ja) */
NUMBER(1)
DEFAULT 0
CONSTRAINT cnt_r_cnt_contract_inactiveren CHECK(cnt_contract_inactiveren IN (0,1))
, cnt_contract_kosten
NUMBER(11,2)
, cnt_contract_termijnkosten
@@ -158,7 +116,7 @@ CREATE_TABLE(cnt_contract,0)
, cnt_contract_nummer_intern
VARCHAR2(30)
, cnt_contract_korting
NUMBER(5,2)
NUMBER(4,2)
CONSTRAINT cnt_c_cnt_contract_korting CHECK(0 <= cnt_contract_korting AND cnt_contract_korting <= 100)
, prs_contactpersoon_key
NUMBER(10)
@@ -200,10 +158,7 @@ CREATE_TABLE(cnt_contract,0)
, cnt_contract_verlenging /* 00=vragen nee (0), 01=vragen ja (1), 10=vast nee (2), 11=vast ja (3) */
NUMBER(1)
DEFAULT 2
CONSTRAINT cnt_r_cnt_contract_verlenging CHECK(cnt_contract_verlenging IN (0,1,2,3,4,5,6,7))
, cnt_contract_verleng_termijn
NUMBER(10)
CONSTRAINT cnt_r_cnt_termijn_key5 REFERENCES cnt_termijn(cnt_termijn_key)
CONSTRAINT cnt_r_cnt_contract_verlenging CHECK(cnt_contract_verlenging IN (0,1,2,3))
, cnt_contract_approved
NUMBER(11,2)
, cnt_contract_teverzenden
@@ -224,7 +179,7 @@ CREATE_TABLE(cnt_contract_object,0)
CONSTRAINT cnt_k_cnt_contract_object_key PRIMARY KEY
, cnt_contract_key
NUMBER(10)
CONSTRAINT cnt_r_cnt_contract_key_object REFERENCES cnt_contract(cnt_contract_key) ON DELETE CASCADE
CONSTRAINT cnt_r_cnt_contract_key_object REFERENCES cnt_contract(cnt_contract_key)
, cnt_ins_srtdeel_key
NUMBER(10)
CONSTRAINT cnt_r_ins_srtdeel_key REFERENCES ins_srtdeel(ins_srtdeel_key)
@@ -245,7 +200,7 @@ CREATE_TABLE(cnt_contract_plaats,0)
CONSTRAINT cnt_k_cnt_contract_plaats PRIMARY KEY
, cnt_contract_key
NUMBER(10)
CONSTRAINT cnt_r_cnt_contract_key_plaats REFERENCES cnt_contract(cnt_contract_key) ON DELETE CASCADE
CONSTRAINT cnt_r_cnt_contract_key_plaats REFERENCES cnt_contract(cnt_contract_key)
, cnt_alg_plaats_key
NUMBER(10)
, cnt_alg_plaats_code
@@ -266,7 +221,7 @@ CREATE_TABLE (CNT_CONTRACT_DIENST,0)
PRIMARY KEY,
cnt_contract_key
NUMBER(10)
CONSTRAINT cnt_r_cnt_contract_dienst REFERENCES cnt_contract(cnt_contract_key) ON DELETE CASCADE,
CONSTRAINT cnt_r_cnt_contract_dienst REFERENCES cnt_contract(cnt_contract_key),
mld_stdmelding_key
NUMBER(10)
CONSTRAINT cnt_r_cnt_contract_stdmld REFERENCES mld_stdmelding(mld_stdmelding_key),
@@ -288,7 +243,7 @@ ALTER TABLE mld_opdr ADD
(
cnt_contract_key
NUMBER(10)
CONSTRAINT mld_r_cnt_contract_key REFERENCES cnt_contract(cnt_contract_key) ON DELETE SET NULL
CONSTRAINT mld_r_cnt_contract_key REFERENCES cnt_contract(cnt_contract_key)
);
ALTER TABLE mld_opdr ADD
@@ -299,9 +254,10 @@ ALTER TABLE mld_opdr ADD
);
ALTER TABLE mld_opdr DROP CONSTRAINT mld_r_mld_melding_key1;
ALTER TABLE mld_opdr ADD
(
CONSTRAINT mld_r_mld_melding_key3 CHECK(mld_melding_key IS NOT NULL OR cnt_contract_key IS NOT NULL OR prs_kostensoort_key IS NOT NULL)
CONSTRAINT MLD_R_MLD_MELDING_KEY3 CHECK(mld_melding_key IS NOT NULL OR cnt_contract_key IS NOT NULL)
);
CREATE_TABLE(cnt_srtkenmerk, 0)
@@ -312,14 +268,12 @@ CREATE_TABLE(cnt_srtkenmerk, 0)
VARCHAR2(50)
, cnt_srtkenmerk_upper
VARCHAR2(50)
, cnt_srtkenmerk_code
VARCHAR2(60)
, cnt_srtkenmerk_dimensie
VARCHAR2(10)
, cnt_srtkenmerk_kenmerktype
VARCHAR2(1)
, cnt_srtkenmerk_systeem
NUMBER(2)
NUMBER(1)
, cnt_srtkenmerk_lengte
NUMBER(4)
, cnt_srtkenmerk_dec
@@ -340,6 +294,7 @@ CREATE_TABLE(cnt_srtkenmerk, 0)
, CONSTRAINT cnt_c_cnt_srtkenmerk_omschr CHECK(cnt_srtkenmerk_omschrijving IS NOT NULL)
, CONSTRAINT cnt_srtkenmerk_omschrijving CHECK(cnt_srtkenmerk_omschrijving IS NOT NULL)
, CONSTRAINT cnt_u_cnt_srtkenmerk_upper UNIQUE(cnt_srtkenmerk_upper, cnt_srtkenmerk_verwijder)
, CONSTRAINT cnt_c_cnt_srtkenmerk_kenmtype CHECK(cnt_srtkenmerk_kenmerktype IN ('C','N','D','R','X','L','Q','F','M','E','S', 'l'))
, CONSTRAINT cnt_c_cnt_srtkenmerk_systeem CHECK(cnt_srtkenmerk_systeem IS NULL
OR cnt_srtkenmerk_systeem = 1)
, CONSTRAINT cnt_c_cnt_srtkenmerk_lengte CHECK(cnt_srtkenmerk_lengte >= 1
@@ -360,10 +315,6 @@ CREATE_TABLE(cnt_kenmerk, 0)
NUMBER(10) /* verwijst naar ins_discipline */
, cnt_kenmerk_niveau
VARCHAR2(1)
, cnt_kenmerk_omschrijving
VARCHAR2(50) /* optionele overrule van srtkenmerk_omschrijving */
, cnt_kenmerk_code
VARCHAR2(60)
, cnt_kenmerk_verplicht
NUMBER(1)
, cnt_kenmerk_groep
@@ -371,15 +322,11 @@ CREATE_TABLE(cnt_kenmerk, 0)
DEFAULT 0 NOT NULL
, cnt_kenmerk_toonbaar
NUMBER(1)
, cnt_kenmerk_inlijst
NUMBER(1)
DEFAULT 0 NOT NULL
, cnt_kenmerk_volgnummer
NUMBER(3)
NOT NULL
, cnt_kenmerk_rolcode
NUMBER(4)
DEFAULT 7 NOT NULL
, cnt_kenmerk_locatiekolom
VARCHAR2(30)
, cnt_kenmerk_uniek
NUMBER(1)
, cnt_kenmerk_regexp
@@ -393,10 +340,6 @@ CREATE_TABLE(cnt_kenmerk, 0)
DATE
DEFAULT NULLDATUM
, cnt_kenmerk_default VARCHAR2(4000)
, cnt_kenmerk_show_expr VARCHAR2(4000)
, fac_functie_key
NUMBER(10)
CONSTRAINT fac_r_cnt_kenmerk_functie REFERENCES fac_functie (fac_functie_key)
, CONSTRAINT cnt_r_cnt_srtkenmerk_key1 CHECK(cnt_srtkenmerk_key IS NOT NULL)
, CONSTRAINT cnt_r_cnt_srtkenmerk_key2 FOREIGN KEY(cnt_srtkenmerk_key) REFERENCES cnt_srtkenmerk(cnt_srtkenmerk_key)
, CONSTRAINT cnt_c_cnt_kenmerk_niveau1 CHECK(cnt_kenmerk_niveau IS NOT NULL)
@@ -404,7 +347,7 @@ CREATE_TABLE(cnt_kenmerk, 0)
, CONSTRAINT cnt_c_cnt_kenmerk_toonbaar CHECK(cnt_kenmerk_toonbaar IS NULL
OR cnt_kenmerk_toonbaar = 1)
, CONSTRAINT cnt_c_cnt_kenmerk_aanmaak CHECK(cnt_kenmerk_aanmaak IS NOT NULL)
, CONSTRAINT cnt_u_cnt_kenmerk UNIQUE(cnt_srtkenmerk_key, cnt_srtcontract_key, cnt_kenmerk_niveau, cnt_kenmerk_omschrijving, cnt_kenmerk_groep, cnt_kenmerk_verwijder)
, CONSTRAINT cnt_u_cnt_kenmerk UNIQUE(cnt_srtkenmerk_key, cnt_srtcontract_key, cnt_kenmerk_niveau, cnt_kenmerk_groep, cnt_kenmerk_verwijder)
);
CREATE_TABLE(cnt_kenmerkcontract, 0)
@@ -433,6 +376,65 @@ CREATE_TABLE(cnt_kenmerkcontract, 0)
, CONSTRAINT cnt_r_kenmerk_contract FOREIGN KEY (cnt_contract_key) REFERENCES cnt_contract(cnt_contract_key) ON DELETE CASCADE
);
CREATE_TABLE(cnt_mutatie, 0)
( cnt_mutatie_key NUMBER(10)
CONSTRAINT cnt_k_cnt_mutatie_key PRIMARY KEY,
cnt_mutatie_omschrijving VARCHAR2(50),
cnt_mutatie_datum DATE,
cnt_mutatie_datum_concept DATE,
cnt_mutatie_datum_ontvangen DATE,
cnt_mutatie_datum_voltooid DATE,
cnt_mutatie_datum_ingang DATE,
prs_perslid_key NUMBER(10)
CONSTRAINT cnt_r_prs_perslid_key REFERENCES prs_perslid(prs_perslid_key),
cnt_mutatie_status NUMBER(1) -- Open = 1 Concept = 2 OntvangenOK = 3 OntvangenNOK = 4 Voltooid = 5
);
CREATE_TABLE(cnt_mutatie_status,0)
(
cnt_mutatie_status
NUMBER(10)
CONSTRAINT cnt_k_cnt_mutatie_status_key PRIMARY KEY,
cnt_mutatie_status_omschrijv
VARCHAR2(30)
);
CREATE_TABLE(cnt_contract_onrgoed, 0)
( cnt_contract_onrgoed_key
NUMBER(10)
CONSTRAINT cnt_k_cnt_contract_onrgoed_key PRIMARY KEY,
cnt_contract_key
NUMBER(10)
CONSTRAINT cnt_r_cnt_contract_key REFERENCES cnt_contract(cnt_contract_key),
alg_onrgoed_key
NUMBER(10),
alg_onrgoed_niveau
VARCHAR2(1)
CONSTRAINT cnt_c_cnt_onrgoed_niveau CHECK(alg_onrgoed_niveau IN ('R', 'T')),
cnt_mutatie_key
NUMBER(10)
CONSTRAINT cnt_r_cnt_mutatie_key REFERENCES cnt_mutatie(cnt_mutatie_key) on delete cascade,
cnt_contract_onrgoed_opp
NUMBER(8,2),
alg_srtonrgoed_key
NUMBER(10),
cnt_mld_melding_key
NUMBER(10)
CONSTRAINT cnt_r_mld_melding_key REFERENCES mld_melding(mld_melding_key),
cnt_mutatie_status_key
NUMBER(10)
DEFAULT 1
CONSTRAINT cnt_r_cnt_mutatie_status REFERENCES cnt_mutatie_status(cnt_mutatie_status),
cnt_srtruimte_prijs
NUMBER(8,2),
cnt_contract_onrgoed_key_org
NUMBER(10)
CONSTRAINT cnt_r_cnt_contract_onrgoed_key REFERENCES cnt_contract_onrgoed(cnt_contract_onrgoed_key)
);
CREATE_TABLE(cnt_contract_note, 0)
(
cnt_contract_note_key NUMBER (10) PRIMARY KEY,
@@ -449,31 +451,13 @@ CREATE_TABLE(cnt_factuurschema , 0)
cnt_contract_key
NUMBER(10)
NOT NULL
CONSTRAINT cnt_r_cnt_factuurschema1 REFERENCES cnt_contract(cnt_contract_key) ON DELETE CASCADE,
cnt_factuurschema_boekmaand /* format YYYY-MM */
VARCHAR2(7),
CONSTRAINT cnt_r_cnt_factuurschema1 REFERENCES cnt_contract(cnt_contract_key),
cnt_factuurschema_datum
DATE,
cnt_factuurschema_bedrag
NUMBER(11,2),
cnt_factuurschema_opmerking
VARCHAR2(320),
cnt_factuurschema_aanmaak
DATE
DEFAULT SYSDATE
);
CREATE_TABLE(cnt_verlengschema, 0)
(
cnt_verlengschema_key
NUMBER(10)
PRIMARY KEY,
cnt_contract_key
NUMBER(10)
CONSTRAINT cnt_r_cnt_contract_key2 REFERENCES cnt_contract(cnt_contract_key),
cnt_verlengschema_volgnr
NUMBER(2),
cnt_verlengschema_verlengtermijn
NUMBER(10)
CONSTRAINT cnt_r_cnt_termijn_key6 REFERENCES cnt_termijn(cnt_termijn_key)
cnt_factuurschema_referentie
VARCHAR2(20)
);
REGISTERONCE('$Id$')

View File

@@ -3,16 +3,6 @@
* $Id$
*/
AUDIT_BEGIN(cnt_disc_params)
AUDIT_VALUE(cnt_disc_params, cnt_srtcontract_type)
AUDIT_VALUE(cnt_disc_params, cnt_disc_params_factuurschema)
AUDIT_VALUE(cnt_disc_params, cnt_disc_params_factuurpct)
AUDIT_VALUE(cnt_disc_params, cnt_disc_params_factuurmarge)
AUDIT_VALUE(cnt_disc_params, cnt_disc_params_factuurappr)
AUDIT_VALUE(cnt_disc_params, cnt_disc_params_factuurgrens)
AUDIT_VALUE(cnt_disc_params, cnt_disc_params_opmerking)
AUDIT_END()
CREATE_TRIGGER(cnt_t_cnt_disc_params_b_iu)
BEFORE INSERT OR UPDATE ON cnt_disc_params
FOR EACH ROW
@@ -54,7 +44,7 @@ BEGIN
THEN
CHECK_KEY_REFERENCE(alg_v_aanweziglocatie , alg_locatie_key , :new.cnt_alg_plaats_key, 'cnt_m003');
ELSE
raise_application_error(-20000, 'cnt_m008');
APPLICATION_ERROR(-20000, 'cnt_m008');
END IF;
END IF;
END;
@@ -74,7 +64,7 @@ BEGIN
OR ( :new.cnt_prs_perslid_key IS NOT NULL
AND :new.cnt_prs_afdeling_key IS NOT NULL)
THEN
raise_application_error(-20000,'cnt_m002');
APPLICATION_ERROR_GOTO(-20000,'cnt_m002');
ELSE
UPDATE_PRIMARY_KEY(cnt_contract_key,cnt_s_cnt_contract_key);
IF :new.cnt_contract_nummer_intern IS NULL
@@ -85,6 +75,14 @@ BEGIN
SET_VERWIJDER_CHILDREN(cnt_contract_object,cnt_contract_key,cnt_contract_verwijder,cnt_contract_object_verwijder,cnt_contract);
SET_VERWIJDER_CHILDREN(cnt_contract_plaats,cnt_contract_key,cnt_contract_verwijder,cnt_contract_plaats_verwijder,cnt_contract);
BEGIN IF :new.cnt_contract_verwijder IS NOT NULL
OR ( :new.cnt_contract_verwijder IS NULL
AND :old.cnt_contract_verwijder IS NOT NULL)
THEN
DELETE cnt_contract_onrgoed
WHERE cnt_contract_onrgoed.cnt_contract_key = :new.cnt_contract_key;
END IF;
END;
END;
/
@@ -133,17 +131,17 @@ BEFORE INSERT OR UPDATE ON cnt_srtkenmerk
FOR EACH ROW
BEGIN
UPDATE_PRIMARY_KEY(cnt_srtkenmerk_key, cnt_s_cnt_srtkenmerk_key);
UPDATE_UPPER(cnt_srtkenmerk_omschrijving, cnt_srtkenmerk_upper, cnt_srtkenmerk);
UPDATE_UPPER(cnt_srtkenmerk_code, cnt_srtkenmerk_code, cnt_srtkenmerk);
UPDATE_UPPER(cnt_srtkenmerk_omschrijving, cnt_srtkenmerk_upper,cnt_srtkenmerk);
UPDATE_AANMAAKDATUM(cnt_srtkenmerk, cnt_srtkenmerk_aanmaak);
IF (:new.cnt_srtkenmerk_verwijder IS NOT NULL AND :old.cnt_srtkenmerk_verwijder IS NULL AND
:new.cnt_srtkenmerk_systeem = 1)
THEN
raise_application_error(-20000, 'CNT_C_CNT_SRTKENMERK_SYSTEEM');
raise_application_error(-20003, 'CNT_C_CNT_SRTKENMERK_SYSTEEM');
END IF;
--
IF :new.cnt_srtkenmerk_kenmerktype IN ('C', 'N') AND :new.cnt_srtkenmerk_lengte IS NULL
IF (:new.cnt_srtkenmerk_kenmerktype = 'C'
OR :new.cnt_srtkenmerk_kenmerktype = 'N')
AND :new.cnt_srtkenmerk_lengte IS NULL
THEN
raise_application_error(-20000, 'CNT_C_CNT_SRTKENMERK_LENGTE');
END IF;
@@ -215,7 +213,6 @@ BEGIN
-- FSN#13902: we tolereren het achteraf verplicht maken
UPDATE_PRIMARY_KEY(cnt_kenmerk_key, cnt_s_cnt_kenmerk_key);
UPDATE_AANMAAKDATUM(cnt_kenmerk, cnt_kenmerk_aanmaak);
UPDATE_UPPER(cnt_kenmerk_code, cnt_kenmerk_code, cnt_kenmerk);
END;
/
@@ -299,7 +296,7 @@ BEGIN
THEN FormatMask := REPLACE(FormatMask, '9', '#');
FormatMask := REPLACE(FormatMask, '0', '#');
FormatMask := REPLACE(FormatMask, 'D', '.');
APPLICATION_ERROR_GOTO(-20004,'cnt_m242,'||SrtKenmerkOmschr||','||FormatMask);
raise_application_error(-20004,'cnt_m242,'||SrtKenmerkOmschr||','||FormatMask);
END;
-- Controleer of de waarde binnen NMin en NMax ligt.
IF (SrtKenmerkNMin IS NOT NULL AND NumberWaarde < SrtKenmerkNMin)
@@ -334,6 +331,26 @@ BEGIN
END;
/
CREATE_TRIGGER(cnt_t_cnt_contract_onrg_B_IU)
BEFORE INSERT OR UPDATE ON cnt_contract_onrgoed
FOR EACH ROW
BEGIN
UPDATE_PRIMARY_KEY(cnt_contract_onrgoed_key,cnt_s_cnt_onrgoed_key);
END;
/
CREATE_TRIGGER(cnt_t_cnt_mutatie_B_IU)
BEFORE INSERT OR UPDATE ON cnt_mutatie
FOR EACH ROW
BEGIN
:new.cnt_mutatie_datum := SYSDATE;
UPDATE_PRIMARY_KEY(cnt_mutatie_key,cnt_s_cnt_mutatie_key);
IF :new.cnt_mutatie_key IS NOT NULL AND :old.cnt_mutatie_key IS NULL THEN
:new.cnt_mutatie_datum_ingang := SYSDATE;
END IF;
END;
/
CREATE_TRIGGER(cnt_t_cnt_termijn_B_IU)
BEFORE INSERT OR UPDATE ON cnt_termijn
FOR EACH ROW
@@ -357,14 +374,6 @@ BEGIN
END;
/
CREATE OR REPLACE TRIGGER cnt_t_cnt_verlengschema_B_I
BEFORE INSERT ON cnt_verlengschema
FOR EACH ROW
BEGIN
UPDATE_PRIMARY_KEY(cnt_verlengschema_key,cnt_s_cnt_verlengschema_key);
END;
/
REGISTERRUN('$Id$')
#endif // CNT

File diff suppressed because it is too large Load Diff

552
COMSQL.H
View File

@@ -21,6 +21,10 @@
* It is now defined by external macro _DBV
*/
/* The minimum required software version */
#define _VERSIONMAJ 2016
#define _VERSIONMIN 1
#define _VERSIONPATCH '0'
#define _VERSION '2016.1.0'
#define _DBV_STRING _MKSTRING(_DBV)
#define REGISTERONCE(svnid) \
@@ -54,7 +58,7 @@ BEGIN adm.systrackscriptId(svnid, 0); END;~/
END IF; \
EXCEPTION \
WHEN NO_DATA_FOUND THEN \
raise_application_error(-20000, message); \
APPLICATION_ERROR(-20000, message); \
END
#define CHECK_KEY_REFERENCE(table, primary_key, ref_key, message) \
@@ -69,9 +73,9 @@ BEGIN adm.systrackscriptId(svnid, 0); END;~/
WHERE primary_key = ref_key; \
EXCEPTION \
WHEN NO_DATA_FOUND \
THEN raise_application_error(-20000, message); \
THEN APPLICATION_ERROR(-20000, message); \
WHEN mutating_table \
THEN NULL; \
_THEN NULL; \
END
@@ -81,6 +85,20 @@ BEGIN adm.systrackscriptId(svnid, 0); END;~/
#define CREATE_TABLE(table_name, level) \
CREATE TABLE table_name
#define _SPOOL(x) \
SPOOL x
#define _EQ_OLD(x,y) \
x = :old.y
#define PROMPT1(x) \
PROMPT x
#define PROMPT2(x,y) \
PROMPT x,y
#define _INTO_VAR(x) \
INTO x
#define CREATE_SEQUENCE(sequence_name, minval) \
CREATE SEQUENCE sequence_name MINVALUE minval;
@@ -90,15 +108,122 @@ CREATE SEQUENCE sequence_name MINVALUE minval;
#define CREATE_TRIGGER(trigger_name) \
CREATE OR REPLACE TRIGGER trigger_name
#define _END_TRIGGER() \
END;~/
#define CREATE_PROCEDURE(pack_name, proc_name) \
CREATE OR REPLACE PROCEDURE proc_name
#define MONEY \
NUMBER
#define VARCHAR \
VARCHAR2
#define _LONG_RAW \
LONG RAW
#define _CONCAT \
||
#define _ALTER_MODIFY_START \
MODIFY
#define _ALTER_ADD_START \
ADD (
#define _ALTER_END \
)
#define _IDENTITY(x,y)
#define _TYPE(tab,fld) \
tab.fld%TYPE
#define _CREATE_OR_REPLACE \
CREATE OR REPLACE
#define _RETURN_LENGTH(x) \
#define _DECLARE_VAR(x) \
x
#define _SET_VAR(x) \
x
#define _VAR(x) \
x
#define _ASSIGN \
:=
#define _RETURNS \
RETURN
#define _AS \
IS
#define _GO \
;
#define _GO2 \
;~/
#define _NOTFOUND(x) \
x%NOTFOUND
#define INSTR2(a, b) \
INSTR(a, b)
#define SUBSTR2 \
SUBSTR
#define TRUNC_DATE \
TRUNC
#define _LOOP \
loop
#define _FOR(i,a,b) \
FOR i in a .. b loop
#define _END_LOOP \
end loop
#define _EXIT \
exit
#define _FROM_DUAL \
FROM DUAL
#define _EXEC0(p) \
p
#define _EXEC1(p,a1) \
p(a1)
#define _EXEC2(p,a1,a2) \
p(a1,a2)
#define _EXEC3(p,a1,a2,a3) \
p(a1,a2,a3)
#define _EXEC4(p,a1,a2,a3, a4) \
p(a1,a2,a3,a4)
#define _EXEC5(p,a1,a2,a3,a4,a5) \
p(a1,a2,a3,a4,a5)
#define _EXEC6(p,a1,a2,a3,a4,a5,a6) \
p(a1,a2,a3,a4,a5,a6)
#define _INTO1(x)
#define _INTO2(x) \
INTO x
#define _INTO3(x) \
,x
#define UPDATE_UPPER(omschrijving, upper_omschrijving,tab) \
:new.upper_omschrijving := UPPER(:new.omschrijving)
@@ -110,24 +235,127 @@ INSTR(a, b)
END IF; \
END
#define _CC \
||
#define _OPLUS \
(+)
#define _OSTAR
#define _DECODE_BEGIN \
DECODE(
#define _DECODE_WHEN \
,
#define _DECODE_THEN \
,
#define _DECODE_ELSE \
,
#define _DECODE_END \
)
#define _THEN \
THEN
#define _FOUND(x) \
x%FOUND = TRUE
#define _IN_PACKAGE(pak,fp,fname) \
fp fname
#define _INPUT \
IN
#define _OUTPUT(x) \
OUT x
#define _DATEPART(x,y) \
TO_CHAR(x,#@y)
#define DATE_TO_CHAR \
TO_CHAR
#define NUMBER_TO_CHAR \
TO_CHAR
#define _MOD \
MOD
#define _NUM2HM(x) \
TO_NUMBER(TO_CHAR(x,'HH24.MI'))
#define _TO_CHAR(x) \
TO_CHAR(x)
#define _TO_NUMBER(x) \
TO_NUMBER(x)
#define _TO_NUMBER2(x,y) \
TO_NUMBER(x,y)
#define _TO_NUMBER3(x,y,z) \
TO_NUMBER(x,y,z)
#define _TO_DATE(x) \
TO_DATE(x)
#define _TO_DATE2(x,y) \
TO_DATE(x,y)
#define _DECLARE_CURSOR(x) \
CURSOR x
#define _CURSOR_PARAM(x) \
(x)
#define _CURSOR_PARAM2(x,y) \
(x,y)
#define _CURSOR_PARAM3(x,y,z) \
(x,y,z)
#define _CURSOR_FOR \
IS
#define _OPEN_CURSOR1(query, s, rec) \
FOR rec IN query LOOP
#define _OPEN_CURSOR2(query, s, rec, key) \
FOR rec IN query(key) LOOP
// , val s := rec.val;
#define _CLOSE_CURSOR(query, s) \
END LOOP;
#define _BEGIN_SQLS_PROC \
AS
#define _BEGIN_ORA_PROC \
BEGIN
#define _END_PROC \
END;~/
#define _END_IF \
END IF;
#define _ELSE \
ELSE
#define _ELSIF \
ELSIF
#define _FAC_MODULE(module,omschrijving) \
INSERT INTO fac_module (fac_module_name, fac_module_version, fac_module_date, fac_module_remark, fac_module_extern) \
VALUES (module,_DBV_STRING,TO_CHAR(SYSDATE,'YYYYMMDD'),omschrijving, 1);
VALUES (module,_VERSION,TO_CHAR(SYSDATE,'YYYYMMDD'),omschrijving, 1);
#define APPLICATION_ERROR(code,text) raise_application_error(code, text)
#define APPLICATION_ERROR_GOTO(code,text) raise_application_error(code, text)
@@ -137,6 +365,63 @@ END IF;
FROM DUAL; \
END IF
#define CHECK_UNIQUE_OMSCHRIJVING(tabel, upper_omschrijving, \
exc_msg_GEEN_OMSCHRIJVING, \
exc_msg_BESTAANDE_OMSCHRIJVING) \
DECLARE \
dummy CHAR := 'N'; \
BEGIN \
SELECT 'X' INTO dummy \
FROM tabel \
GROUP BY upper_omschrijving \
HAVING COUNT(*) > 1; \
APPLICATION_ERROR(-20001, exc_msg_BESTAANDE_OMSCHRIJVING); \
EXCEPTION \
WHEN NO_DATA_FOUND \
THEN NULL; \
\
WHEN TOO_MANY_ROWS \
THEN APPLICATION_ERROR(-20001, exc_msg_BESTAANDE_OMSCHRIJVING); \
END
#define CHECK_UNIQUE_KEY_OMSCHRIJVING(tabel, key, upper_omschrijving, \
exc_msg_GEEN_OMSCHRIJVING, \
exc_msg_BESTAANDE_OMSCHRIJVING) \
DECLARE \
dummy CHAR := 'N'; \
BEGIN \
SELECT 'X' INTO dummy \
FROM tabel \
GROUP BY key, upper_omschrijving \
HAVING COUNT(*) > 1; \
APPLICATION_ERROR(-20001, exc_msg_BESTAANDE_OMSCHRIJVING); \
EXCEPTION \
WHEN NO_DATA_FOUND \
THEN NULL; \
\
WHEN TOO_MANY_ROWS \
THEN APPLICATION_ERROR(-20001, exc_msg_BESTAANDE_OMSCHRIJVING); \
END
#define CHECK_UNIQUE_DEEL_KEY_OMSCHRIJVING(tabel, up_key, naast_key, \
upper_omschrijving, exc_msg_GEEN_OMSCHRIJVING, \
exc_msg_BESTAANDE_OMSCHRIJVING) \
DECLARE \
dummy CHAR := 'N'; \
BEGIN \
SELECT 'X' INTO dummy \
FROM tabel \
GROUP BY up_key, naast_key, upper_omschrijving \
HAVING COUNT(*) > 1; \
APPLICATION_ERROR(-20001, exc_msg_BESTAANDE_OMSCHRIJVING); \
EXCEPTION \
WHEN NO_DATA_FOUND \
THEN NULL; \
\
WHEN TOO_MANY_ROWS \
THEN APPLICATION_ERROR(-20001, exc_msg_BESTAANDE_OMSCHRIJVING); \
END
#define LAAT_VERDIEPING_VERVALLEN_VOOR_GEBOUW(exc_msg_VERDIEPING_IN_GEBRUIK) \
BEGIN \
IF :new.alg_gebouw_verwijder IS NOT NULL \
@@ -150,10 +435,10 @@ END IF;
END IF; \
EXCEPTION \
WHEN NO_DATA_FOUND \
THEN raise_application_error(-20000, exc_msg_VERDIEPING_IN_GEBRUIK); \
THEN APPLICATION_ERROR(-20000, exc_msg_VERDIEPING_IN_GEBRUIK); \
\
WHEN TOO_MANY_ROWS \
THEN raise_application_error(-20000, exc_msg_VERDIEPING_IN_GEBRUIK); \
THEN APPLICATION_ERROR(-20000, exc_msg_VERDIEPING_IN_GEBRUIK); \
END
#define LAAT_RUIMTE_VERVALLEN_VOOR_VERDIEPING(exc_msg_RUIMTE_IN_GEBRUIK) \
@@ -169,10 +454,10 @@ END IF;
END IF; \
EXCEPTION \
WHEN NO_DATA_FOUND \
THEN raise_application_error(-20000, exc_msg_RUIMTE_IN_GEBRUIK); \
THEN APPLICATION_ERROR(-20000, exc_msg_RUIMTE_IN_GEBRUIK); \
\
WHEN TOO_MANY_ROWS \
THEN raise_application_error(-20000, exc_msg_RUIMTE_IN_GEBRUIK); \
THEN APPLICATION_ERROR(-20000, exc_msg_RUIMTE_IN_GEBRUIK); \
END
#define CHECK_NOG_REFERENCES(tabel,tabel_verwijder_veld,reference_view, \
@@ -186,13 +471,65 @@ END IF;
SELECT 'x' INTO dummy \
FROM reference_view \
WHERE reference_view.key_veld = :old.key_veld; \
raise_application_error(-20000, message); \
APPLICATION_ERROR(-20000,message); \
END IF; \
EXCEPTION \
WHEN NO_DATA_FOUND THEN \
NULL; \
WHEN TOO_MANY_ROWS THEN \
raise_application_error(-20000, message); \
APPLICATION_ERROR(-20000,message); \
END
#define CHECK_REFERENCE_INST(key_veld, message) \
DECLARE \
dummy CHAR; \
BEGIN \
SELECT 'X' INTO dummy \
FROM ins_v_aanwezigdeel \
WHERE ins_deel_key = :new.key_veld; \
EXCEPTION \
WHEN NO_DATA_FOUND THEN \
BEGIN \
SELECT 'X' INTO dummy \
FROM ins_v_aanwezigonderdeel \
WHERE ins_onderdeel_key = :new.key_veld; \
EXCEPTION \
WHEN NO_DATA_FOUND THEN \
BEGIN \
SELECT 'X' INTO dummy \
FROM ins_v_aanwezigelement \
WHERE ins_element_key = :new.key_veld; \
EXCEPTION \
WHEN NO_DATA_FOUND THEN \
APPLICATION_ERROR(-20000, message); \
END; \
END; \
END
#define CHECK_REFERENCE_SRTINST(key_veld, message) \
DECLARE \
dummy CHAR; \
BEGIN \
SELECT 'X' INTO dummy \
FROM ins_v_aanwezigsrtdeel \
WHERE ins_srtdeel_key = :new.key_veld; \
EXCEPTION \
WHEN NO_DATA_FOUND THEN \
BEGIN \
SELECT 'X' INTO dummy \
FROM ins_v_aanwezigsrtonderdeel \
WHERE ins_srtonderdeel_key = :new.key_veld; \
EXCEPTION \
WHEN NO_DATA_FOUND THEN \
BEGIN \
SELECT 'X' INTO dummy \
FROM ins_v_aanwezigsrtelement \
WHERE ins_srtelement_key = :new.key_veld; \
EXCEPTION \
WHEN NO_DATA_FOUND THEN \
APPLICATION_ERROR(-20000, message); \
END; \
END; \
END
#define CHECK_REFERENCE_ONROERENDGOED(key_veld, message) \
@@ -222,7 +559,7 @@ END IF;
WHERE alg_terreinsector_key = :new.key_veld; \
EXCEPTION \
WHEN NO_DATA_FOUND THEN \
raise_application_error(-20000, message); \
APPLICATION_ERROR(-20000,message); \
END; \
END; \
END; \
@@ -233,12 +570,56 @@ CEIL
#define NULLDATUM NULL
#define CREATE_VOLGNR(volgnr_srt, volgnr_periode) \
INSERT INTO fac_volgnrs (fac_volgnr_srt, fac_volgnr_periode) \
VALUES(volgnr_srt, volgnr_periode)
#define UPDATE_VOLGNR(key_veld, fac_volgnr_srt) \
IF :new.key_veld IS NULL \
THEN \
:new.key_veld := FAC_P_FAC_VOLGNR.FAC_VOLGNR_NEXTVAL(fac_volgnr_srt); \
END IF
#define DEFINIEER_VIEW_AANWEZIG(table, verwijder_veld, view_name, level) \
CREATE_VIEW (view_name,level) AS \
SELECT * \
FROM table \
WHERE table.verwijder_veld IS NULLDATUM
#define CHECK_REFERENCE_DEFAULTUITV(key_veld, message) \
DECLARE \
dummy CHAR; \
BEGIN \
SELECT 'X' INTO dummy \
FROM mld_v_defaultuitv \
WHERE bco_defaultuitv_keys = :new.key_veld; \
EXCEPTION \
WHEN NO_DATA_FOUND THEN \
APPLICATION_ERROR(-20000, message); \
END
#define UPDATE_WEEKINGAVE(weekingave_veld) \
BEGIN \
:new.weekingave_veld := to_number( \
to_char(:new.mld_opdr_datumbegin, 'YYWW')); \
END
#define SET_VERWIJDER_CHILDREN2(child_table, parent_key, child_key, parent_verwijder, \
child_verwijder) \
BEGIN \
IF :new.parent_verwijder IS NOT NULL OR \
(:new.parent_verwijder IS NULL AND :old.parent_verwijder IS NOT NULL) \
THEN \
UPDATE child_table \
SET child_verwijder = :new.parent_verwijder \
WHERE \
child_table.child_key = :new.parent_key; \
END IF; \
END
#define DELETE_CHILDREN(child_table, parent_key) \
BEGIN \
DELETE FROM child_table \
@@ -247,118 +628,57 @@ CEIL
#define DEF_FAC_MESSAGE(a,b,c) INSERT INTO fac_message VALUES (a,b)
// Default Setup volgens;
#define DEF_SETUP(n, f) INSERT INTO ini_setup (ini_setup_name, ini_setup_name_full) VALUES (UPPER(n), f)
#define UPD_FAC_FUNCTIE2(c, o, m, l, d, g, i) UPDATE fac_functie SET fac_functie_omschrijving=o,fac_functie_module=m,fac_functie_min_level=l, fac_functie_discipline=d, fac_functie_groep=g, fac_functie_info=i) WHERE fac_functie_code=c
#define DEF_FAC_FUNCTIE3(c, m, l, d, g) INSERT INTO fac_functie (fac_functie_code, fac_functie_omschrijving,fac_functie_module,fac_functie_min_level, fac_functie_discipline, fac_functie_groep, fac_functie_info) VALUES(c, 'lcl_' || c, m, l, d, g, 'lcl_' || c || '_info')
#define DEF_FAC_FUNCTIE3x(c, x, m, l, d, g) INSERT INTO fac_functie (fac_functie_code, fac_functie_omschrijving,fac_functie_module,fac_functie_min_level, fac_functie_discipline, fac_functie_groep, fac_functie_info) VALUES(c||x, 'lcl_' || c ||x, m, l, d, g, 'lcl_' || c || x ||'_info')
#define DEF_FAC_FUNCTIE(c, o, m, l) INSERT INTO fac_functie (fac_functie_code, fac_functie_omschrijving,fac_functie_module,fac_functie_min_level) VALUES(c, o, m, l)
#define UPD_FAC_FUNCTIE(c, o, m, l) UPDATE fac_functie SET fac_functie_omschrijving=0,fac_functie_module=m,fac_functie_min_level=l) WHERE fac_functie_code=c
#define DEF_FAC_FUNCTIE2(c, o, m, l, d, g, i) INSERT INTO fac_functie (fac_functie_code, fac_functie_omschrijving,fac_functie_module,fac_functie_min_level, fac_functie_discipline, fac_functie_groep, fac_functie_info) VALUES(c, o, m, l, d, g, i)
#define UPD_FAC_FUNCTIE2(c, o, m, l, d, g, i) UPDATE fac_functie SET fac_functie_omschrijving=0,fac_functie_module=m,fac_functie_min_level=l, fac_functie_discipline=d, fac_functie_groep=g, fac_functie_info=i) WHERE fac_functie_code=c
#define DEF_FAC_SRTNOT(c, m, o, u, g, x, d) INSERT INTO fac_srtnotificatie (fac_srtnotificatie_code, fac_srtnotificatie_mode, fac_srtnotificatie_oms, fac_srtnotificatie_url, fac_srtnotificatie_groep, fac_srtnotificatie_xmlnode, fac_srtnotificatie_delay) VALUES (c, m, o, u, g, x, d)
#define DEF_MENUKOP(g, s, i) INSERT INTO fac_menu (fac_menu_volgnr, fac_menu_altlabel, fac_menu_altgroep, fac_menu_image, fac_menu_level) SELECT COALESCE(MAX(fac_menuitems_key),0)*100+50, s, g, i, 1 FROM fac_menuitems
#define DEF_MENUKOPV(g, v, s, i) INSERT INTO fac_menu (fac_menu_volgnr, fac_menu_altlabel, fac_menu_altgroep, fac_menu_image, fac_menu_level) VALUES (v, s, g, i, 1)
#define DEF_MENUKOP(g, s) INSERT INTO fac_menu (fac_menu_volgnr, fac_menu_altlabel, fac_menu_altgroep, fac_menu_level) SELECT COALESCE(MAX(fac_menuitems_key),0)*100+50, s, g, 1 FROM fac_menuitems
#define DEF_MENUKOPV(g, v, s) INSERT INTO fac_menu (fac_menu_volgnr, fac_menu_altlabel, fac_menu_altgroep, fac_menu_level) VALUES (v, s, g, 1)
#define DEF_MENUITEM(g, l, i, m, u, s, d, f, rw, x, img) INSERT INTO fac_menuitems (fac_menuitems_groep, fac_menuitems_label, fac_menuitems_oms, fac_menuitems_module, fac_menuitems_url, fac_menuitems_srtdisc, fac_menuitems_disc, fac_functie_key, fac_menuitems_rw, fac_menuitems_default, fac_menuitems_image) SELECT g, l, i, m, u, s, d, fac_functie_key, rw, x, img FROM fac_functie WHERE fac_functie_code=f
#define DEF_MENUENTRY(g, v, l, i, m, u, s, d, f) INSERT INTO fac_menu (fac_menu_volgnr, fac_menu_altlabel, fac_menu_info, fac_menu_alturl, fac_menu_altgroep, fac_menu_level, fac_functie_key) SELECT v, l, i, u, g, 2, fac_functie_key FROM fac_functie WHERE fac_functie_code = f AND NOT EXISTS (SELECT '' FROM fac_menu WHERE fac_menu_alturl = u)
#define DEF_MENUENTRY(g, v, l, i, m, u, s, d, f) INSERT INTO fac_menu (fac_menu_volgnr, fac_menu_altlabel, fac_menu_info, fac_menu_alturl, fac_menu_altgroep, fac_functie_key) SELECT v, l, i, u, g, fac_functie_key FROM fac_functie WHERE fac_functie_code = f AND NOT EXISTS (SELECT '' FROM fac_menu WHERE fac_menu_alturl = u)
#define DEF_SETTING(m, n, d, t) INSERT INTO fac_setting (fac_setting_module, fac_setting_name, fac_setting_default, fac_setting_description) VALUES (m, n, d, t)
#define DEF_BOOKMARK(x, p, q) INSERT INTO fac_bookmark (fac_bookmark_id, fac_bookmark_naam, fac_bookmark_xmlnode, fac_bookmark_path, fac_bookmark_query) VALUES (DBMS_RANDOM.string ('a', 16), x, x, p, q)
#define DEF_BOOKMARK(x, p, q)INSERT INTO fac_bookmark (fac_bookmark_id, fac_bookmark_naam, fac_bookmark_xmlnode, fac_bookmark_path, fac_bookmark_query) VALUES (DBMS_RANDOM.string ('a', 16), x, x, p, q)
// We begonnen te denken dat het om statussen ging, maar het werd meer. De naam van de macro bleef echter
#define DEF_STATUS(x, c, t) INSERT INTO fac_code2label (fac_code2label_domein ,fac_code2label_code, fac_code2label_label) VALUES (x, c, t)
#define DEF_STATUS(x, c, t)INSERT INTO fac_code2label (fac_code2label_domein ,fac_code2label_code, fac_code2label_label) VALUES (x, c, t)
// Voeg (nieuwe, default) menukop met label a van groep g en level l toe na bestaande menuoptie met label b, increment n
#define MENU_INSKOP_AFTER(a, b, g, n) INSERT INTO fac_menu (fac_menu_volgnr, fac_menu_altlabel, fac_menu_altgroep, fac_menu_level) SELECT fac_menu_volgnr + n, a, g, 1 FROM fac_menu m WHERE m.fac_menuitems_key = (SELECT MAX (mm.fac_menuitems_key) FROM fac_menu mm, fac_menuitems mmi WHERE mm.fac_menuitems_key = mmi.fac_menuitems_key AND mmi.fac_menuitems_label = b)
// Voeg (nieuwe, default) menuoptie met label a toe na de eerste bestaande menukop met label b, increment n
#define MENU_INS_AFTERKOP(a, b, n) INSERT INTO fac_menu (fac_menuitems_key, fac_menu_altlabel, fac_menu_alturl, fac_menu_altgroep, fac_menu_image, fac_menu_info, fac_menu_volgnr, fac_menu_level) SELECT i.fac_menuitems_key, i.fac_menuitems_label, i.fac_menuitems_url, i.fac_menuitems_groep, i.fac_menuitems_image, i.fac_menuitems_oms, MIN (m.fac_menu_volgnr) + n, 2 FROM fac_menuitems i, fac_menu m WHERE i.fac_menuitems_key = (SELECT MAX (mmi.fac_menuitems_key) FROM fac_menuitems mmi WHERE mmi.fac_menuitems_label = a) AND m.fac_menu_altlabel = b GROUP BY i.fac_menuitems_key
#define MENU_INS_AFTERKOP(a, b, n) INSERT INTO fac_menu (fac_menuitems_key, fac_menu_volgnr) SELECT i.fac_menuitems_key, MIN (m.fac_menu_volgnr) + n FROM fac_menuitems i, fac_menu m WHERE i.fac_menuitems_key = (SELECT MAX (mmi.fac_menuitems_key) FROM fac_menuitems mmi WHERE mmi.fac_menuitems_label = a) AND m.fac_menu_altlabel = b GROUP BY i.fac_menuitems_key
// Voeg (nieuwe, default) menuoptie met label a toe na bestaande menuoptie met label b, increment n
#define MENU_INS_AFTER(a, b, n) INSERT INTO fac_menu (fac_menuitems_key, fac_menu_altlabel, fac_menu_alturl, fac_menu_altgroep, fac_menu_image, fac_menu_info, fac_menu_volgnr, fac_menu_level) SELECT i.fac_menuitems_key, i.fac_menuitems_label, i.fac_menuitems_url, i.fac_menuitems_groep, i.fac_menuitems_image, i.fac_menuitems_oms, m.fac_menu_volgnr + n, 2 FROM fac_menuitems i, fac_menu m WHERE i.fac_menuitems_key = (SELECT MAX(mmi.fac_menuitems_key) FROM fac_menuitems mmi WHERE mmi.fac_menuitems_label = a) AND m.fac_menuitems_key = (SELECT MAX(mm.fac_menuitems_key) FROM fac_menu mm, fac_menuitems mmi WHERE mm.fac_menuitems_key = mmi.fac_menuitems_key AND mmi.fac_menuitems_label = b)
#define MENU_INS_AFTER(a, b, n) INSERT INTO fac_menu (fac_menuitems_key, fac_menu_volgnr) SELECT i.fac_menuitems_key, m.fac_menu_volgnr + n FROM fac_menuitems i, fac_menu m WHERE i.fac_menuitems_key = (SELECT MAX(mmi.fac_menuitems_key) FROM fac_menuitems mmi WHERE mmi.fac_menuitems_label = a) AND m.fac_menuitems_key = (SELECT MAX(mm.fac_menuitems_key) FROM fac_menu mm, fac_menuitems mmi WHERE mm.fac_menuitems_key = mmi.fac_menuitems_key AND mmi.fac_menuitems_label = b)
// poging 1
#define MENU_MOV_AFTER(b, a, n) UPDATE fac_menu SET fac_menu_volgnr = (SELECT m.fac_menu_volgnr + n FROM fac_menuitems i, fac_menu m WHERE m.fac_menuitems_key=i.fac_menuitems_key AND i.fac_menuitems_key = (SELECT MAX(mmi.fac_menuitems_key) FROM fac_menuitems mmi WHERE mmi.fac_menuitems_label = a)) WHERE fac_menuitems_key = (SELECT MAX(mm.fac_menuitems_key) FROM fac_menu mm, fac_menuitems mmi WHERE mm.fac_menuitems_key = mmi.fac_menuitems_key AND mmi.fac_menuitems_label = b)
// Default widget's volgens;
#define DEF_WIDGET(t, n, c, u, p) INSERT INTO fac_widget (fac_widget_type, fac_widget_naam, fac_widget_content, fac_widget_url, fac_widget_public) VALUES (UPPER(t), n, c, u, p)
// NOT_NULL(): Columnconstraint ipv. NOT NULL, De melding ORA-1400: mandatory (NOT NULL)...
// geeft de constraintnaam niet, zodat de melding niet vertaald kan worden.
// De CHECK() geeft het wel, dus wordt deze gebruikt.
#define NOT_NULL(column, constraint_name) CONSTRAINT constraint_name CHECK(column IS NOT NULL)
#define DEF_IMPORT2(aut, code, oms_nl, oms_en, csv_typ, charset, folder, files) \
DECLARE ~\
imp_key NUMBER(10); ~\
BEGIN ~\
INSERT INTO fac_import_app (fac_import_app_code, ~\
fac_import_app_oms, ~\
fac_functie_key, ~\
fac_import_app_csv, ~\
fac_import_app_charset, ~\
fac_import_app_folder, ~\
fac_import_app_files) ~\
VALUES (UPPER (code), ~\
oms_nl, ~\
(SELECT fac_functie_key ~\
FROM fac_functie ~\
WHERE fac_functie_code = aut), ~\
csv_typ, ~\
charset, ~\
folder, ~\
files) ~\
RETURNING fac_import_app_key INTO imp_key; ~\
INSERT INTO fac_locale (fac_locale_lang, fac_locale_kolomkeyval, fac_locale_kolomnaam, fac_locale_tekst) ~\
VALUES ('EN', imp_key, 'FAC_IMPORT_APP_OMS', oms_en); ~\
END; ~\
/ ~\
#define BEGIN_MODULE(m) \
DECLARE ~\
dummy VARCHAR2(1); ~\
BEGIN ~\
SELECT 'x'INTO dummy ~\
FROM fac_module ~\
WHERE fac_module_name = UPPER(#@m);
#define DEF_IMPORT(aut, code, oms_nl, oms_en, csv_typ) \
DEF_IMPORT2(aut, code, oms_nl, oms_en, csv_typ, NULL, NULL, NULL) ~\
#define SQL_SPOOL(SQLRegel) \
dbms_output.put_line(#@SQLRegel);
#define DEF_RAPPORT(grp, aut, func, view, oms_nl, info_nl, oms_en, info_en) \
DECLARE ~\
rap_key NUMBER(10); ~\
BEGIN ~\
INSERT INTO fac_usrrap ~\
( fac_usrrap_omschrijving, fac_usrrap_view_name ~\
, fac_usrrap_vraagbegindatum, fac_usrrap_vraageinddatum ~\
, fac_usrrap_functie, fac_usrrap_autorefresh ~\
, fac_usrrap_info ~\
, fac_functie_key, fac_usrrap_groep ~\
) ~\
VALUES ( oms_nl, view, 0, 0, func, 0, info_nl ~\
, (SELECT fac_functie_key FROM fac_functie ~\
WHERE fac_functie_code = aut ~\
), grp ~\
) ~\
RETURNING fac_usrrap_key INTO rap_key; ~\
INSERT INTO fac_locale ( fac_locale_lang, fac_locale_kolomkeyval, fac_locale_kolomnaam, fac_locale_tekst) ~\
VALUES ('EN', rap_key, 'FAC_USRRAP_OMSCHRIJVING', oms_en); ~\
INSERT INTO fac_locale ( fac_locale_lang, fac_locale_kolomkeyval, fac_locale_kolomnaam, fac_locale_tekst) ~\
VALUES ('EN', rap_key, 'FAC_USRRAP_INFO', info_en); ~\
END; ~\
/ ~\
#define END_MODULE(m) \
EXCEPTION ~\
WHEN NO_DATA_FOUND THEN dbms_output.put_line('--Module ' ||#@m|| ' niet aanwezig'); ~\
END; ~/
#define DEF_RAPPORT_COL(oms_nl, volgnr, col, f, d, t, v, label_nl, label_en) \
DECLARE ~\
col_key NUMBER(10); ~\
BEGIN ~\
INSERT INTO fac_usrrap_cols ~\
( fac_usrrap_key, fac_usrrap_cols_volgnr ~\
, fac_usrrap_cols_column_name, fac_usrrap_cols_caption ~\
, fac_usrrap_cols_filter, fac_usrrap_cols_filterdefault ~\
, fac_usrrap_cols_datatype, fac_usrrap_cols_visible ~\
) ~\
VALUES ( (SELECT fac_usrrap_key ~\
FROM fac_usrrap ~\
WHERE fac_usrrap_omschrijving = oms_nl ~\
) ~\
, volgnr, col, label_nl ~\
, f, d, t, v ~\
) ~\
RETURNING fac_usrrap_cols_key INTO col_key; ~\
/* INSERT INTO fac_locale ( fac_locale_lang, fac_locale_kolomkeyval, fac_locale_kolomnaam, fac_locale_tekst) */ ~\
/* VALUES ('EN', col_key, 'FAC_USRRAP_COLS_CAPTION', label_en); */ ~\
END; ~\
/ ~\
#define UPDMOD(m, n) \
BEGIN_MODULE(m) ~\
SQL_SPOOL(START n.m) ~\
END_MODULE(m)
#define START_LOCALEITEMS(dialect_id) \
DECLARE ~ \
@@ -380,36 +700,4 @@ END; ~\
/ ~ \
COMMIT;
#define AUDIT_BEGIN(table) ~\
CREATE OR REPLACE TRIGGER aud_t_##table## ~\
AFTER INSERT OR UPDATE OR DELETE ON table ~\
FOR EACH ROW ~\
DECLARE ~\
action VARCHAR2(1); ~\
BEGIN ~\
IF DELETING THEN ~\
action := 'D'; ~\
ELSIF INSERTING THEN ~\
action := 'I'; ~\
ELSE ~\
action := 'U'; ~\
END IF;
#define AUDIT_VALUE_K(table, tablekey, column) ~\
aud.auditaction(STRINGIZE(table), ~\
:old.tablekey, ~\
:new.tablekey, ~\
STRINGIZE(column), ~\
:old.column, ~\
:new.column, ~\
action);
#define AUDIT_VALUE(table, column) ~\
AUDIT_VALUE_K(table, table##_key, column)
#define AUDIT_END() ~\
END; ~\
/ ~ \
#endif // _COMSQL_H

View File

@@ -1,9 +0,0 @@
/*
* $Revision$
* $Id$
*/
CREATE UNIQUE INDEX ctr_i_ctr_disc_params1 ON ctr_disc_params(ctr_ins_discipline_key);
REGISTERONCE('$Id$')

View File

@@ -1,24 +0,0 @@
#ifdef CTR
/*
* $Revision$
* $Id$
*/
_FAC_MODULE('CTR','lcl_module_CTR')
INSERT INTO ins_tab_discipline (ins_discipline_module, ins_discipline_omschrijving) values ('CTR', 'Controle');
INSERT INTO ctr_disc_params(ctr_ins_discipline_key, ctr_disc_params_controle_type)
SELECT MAX(ins_discipline_key), 1 FROM ins_tab_discipline;
INSERT INTO ins_tab_discipline (ins_discipline_module, ins_discipline_omschrijving) values ('CTR', 'Vervanging');
INSERT INTO ctr_disc_params(ctr_ins_discipline_key, ctr_disc_params_controle_type)
SELECT MAX(ins_discipline_key), 2 FROM ins_tab_discipline;
INSERT INTO ins_tab_discipline (ins_discipline_module, ins_discipline_omschrijving) values ('CTR', 'Certificering');
insert into ctr_disc_params(ctr_ins_discipline_key, ctr_disc_params_controle_type)
SELECT MAX(ins_discipline_key), 3 FROM ins_tab_discipline;
REGISTERONCE('$Id$')
#endif // MRK

View File

@@ -1,123 +0,0 @@
#ifdef CTR
/*
* $Id$
* $Revision$
*/
START_LOCALEITEMS('CTR_DISCIPLINE_KEY')
DEFINE_LOCALEITEM(ins_controlemode_success)
DEFINE_LOCALEITEM(ins_srtcontrole_groep)
DEFINE_LOCALEITEM(ins_srtcontrole_kosten)
DEFINE_LOCALEITEM(ins_srtcontrole_kosten2)
DEFINE_LOCALEITEM(ins_srtcontrole_kosten3)
DEFINE_LOCALEITEM(ins_srtcontrole_materiaal)
DEFINE_LOCALEITEM(ins_srtcontrole_opmerking)
DEFINE_LOCALEITEM(ins_srtcontrole_percentage)
DEFINE_LOCALEITEM(ins_srtcontrole_uren)
DEFINE_LOCALEITEM(lcl_bld_terra)
DEFINE_LOCALEITEM(lcl_building)
DEFINE_LOCALEITEM(lcl_cancel)
DEFINE_LOCALEITEM(lcl_change)
DEFINE_LOCALEITEM(lcl_count)
DEFINE_LOCALEITEM(lcl_date)
DEFINE_LOCALEITEM(lcl_delete)
DEFINE_LOCALEITEM(lcl_discipline)
DEFINE_LOCALEITEM(lcl_district)
DEFINE_LOCALEITEM(lcl_estate_gebouw_title)
DEFINE_LOCALEITEM(lcl_ins_additional_details)
DEFINE_LOCALEITEM(lcl_ins_change_xcp)
DEFINE_LOCALEITEM(lcl_ins_close)
DEFINE_LOCALEITEM(lcl_ins_controle)
DEFINE_LOCALEITEM(lcl_ins_controle_act_req)
DEFINE_LOCALEITEM(lcl_ins_controle_afgemeld)
DEFINE_LOCALEITEM(lcl_ins_controle_afgerond)
DEFINE_LOCALEITEM(lcl_ins_controle_dagelijks)
DEFINE_LOCALEITEM(lcl_ins_controle_datum)
DEFINE_LOCALEITEM(lcl_ins_controle_derde)
DEFINE_LOCALEITEM(lcl_ins_controle_eenheid)
DEFINE_LOCALEITEM(lcl_ins_controle_eennalaatste)
DEFINE_LOCALEITEM(lcl_ins_controle_eerste)
DEFINE_LOCALEITEM(lcl_ins_controle_first)
DEFINE_LOCALEITEM(lcl_ins_controle_gestart)
DEFINE_LOCALEITEM(lcl_ins_controle_groep)
DEFINE_LOCALEITEM(lcl_ins_controle_identical_values)
DEFINE_LOCALEITEM(lcl_ins_controle_is_upd)
DEFINE_LOCALEITEM(lcl_ins_controle_jaarlijks)
DEFINE_LOCALEITEM(lcl_ins_controle_laatste)
DEFINE_LOCALEITEM(lcl_ins_controle_legenda)
DEFINE_LOCALEITEM(lcl_ins_controle_maandelijks)
DEFINE_LOCALEITEM(lcl_ins_controle_mode)
DEFINE_LOCALEITEM(lcl_ins_controle_notholiday)
DEFINE_LOCALEITEM(lcl_ins_controle_opm)
DEFINE_LOCALEITEM(lcl_ins_controle_pending)
DEFINE_LOCALEITEM(lcl_ins_controle_period)
DEFINE_LOCALEITEM(lcl_ins_controle_period_fronttext)
DEFINE_LOCALEITEM(lcl_ins_controle_period_ofthemonth)
DEFINE_LOCALEITEM(lcl_ins_controle_period_rearday)
DEFINE_LOCALEITEM(lcl_ins_controle_period_rearhour)
DEFINE_LOCALEITEM(lcl_ins_controle_period_rearmonth)
DEFINE_LOCALEITEM(lcl_ins_controle_period_rearmonthon)
DEFINE_LOCALEITEM(lcl_ins_controle_period_rearweek)
DEFINE_LOCALEITEM(lcl_ins_controle_period_rearweekon)
DEFINE_LOCALEITEM(lcl_ins_controle_period_rearyear)
DEFINE_LOCALEITEM(lcl_ins_controle_period_rearyearin)
DEFINE_LOCALEITEM(lcl_ins_controle_plan)
DEFINE_LOCALEITEM(lcl_ins_controle_plandate)
DEFINE_LOCALEITEM(lcl_ins_controle_soon)
DEFINE_LOCALEITEM(lcl_ins_controle_srt)
DEFINE_LOCALEITEM(lcl_ins_controle_srt_verplicht)
DEFINE_LOCALEITEM(lcl_ins_controle_ter_uitvoer)
DEFINE_LOCALEITEM(lcl_ins_controle_tweede)
DEFINE_LOCALEITEM(lcl_ins_controle_uurlijks)
DEFINE_LOCALEITEM(lcl_ins_controle_vierde)
DEFINE_LOCALEITEM(lcl_ins_controle_vijfde)
DEFINE_LOCALEITEM(lcl_ins_controle_wekelijks)
DEFINE_LOCALEITEM(lcl_ins_finish)
DEFINE_LOCALEITEM(lcl_ins_finishing)
DEFINE_LOCALEITEM(lcl_ins_info)
DEFINE_LOCALEITEM(lcl_ins_inspecteur)
DEFINE_LOCALEITEM(lcl_ins_interval_kenmerken)
DEFINE_LOCALEITEM(lcl_ins_kosten)
DEFINE_LOCALEITEM(lcl_ins_object)
DEFINE_LOCALEITEM(lcl_ins_planned_activities)
DEFINE_LOCALEITEM(lcl_ins_respijt)
DEFINE_LOCALEITEM(lcl_ins_schedule)
DEFINE_LOCALEITEM(lcl_ins_srtcontrole_insp)
DEFINE_LOCALEITEM(lcl_ins_srtcontrole_repl)
DEFINE_LOCALEITEM(lcl_ins_srtcontrole_type)
DEFINE_LOCALEITEM(lcl_ins_start)
DEFINE_LOCALEITEM(lcl_ins_starting)
DEFINE_LOCALEITEM(lcl_ins_status)
DEFINE_LOCALEITEM(lcl_ins_vervaldatum)
DEFINE_LOCALEITEM(lcl_location)
DEFINE_LOCALEITEM(lcl_mjb_becancelled)
DEFINE_LOCALEITEM(lcl_mjb_dragdrop)
DEFINE_LOCALEITEM(lcl_mjb_frequency)
DEFINE_LOCALEITEM(lcl_mjb_group)
DEFINE_LOCALEITEM(lcl_mjb_inclbtw)
DEFINE_LOCALEITEM(lcl_mjb_inflation)
DEFINE_LOCALEITEM(lcl_mjb_overruled_xcp)
DEFINE_LOCALEITEM(lcl_mjb_phasingout)
DEFINE_LOCALEITEM(lcl_mjb_uptoyear)
DEFINE_LOCALEITEM(lcl_name)
DEFINE_LOCALEITEM(lcl_obj_group)
DEFINE_LOCALEITEM(lcl_obj_identification)
DEFINE_LOCALEITEM(lcl_obj_sort)
DEFINE_LOCALEITEM(lcl_opdr_plandate)
DEFINE_LOCALEITEM(lcl_park)
DEFINE_LOCALEITEM(lcl_remark)
DEFINE_LOCALEITEM(lcl_search)
DEFINE_LOCALEITEM(lcl_search_generic)
DEFINE_LOCALEITEM(lcl_select_controlemode)
DEFINE_LOCALEITEM(lcl_select_discipline)
DEFINE_LOCALEITEM(lcl_select_srtcontrole)
DEFINE_LOCALEITEM(lcl_shared_doaction)
DEFINE_LOCALEITEM(lcl_show)
DEFINE_LOCALEITEM(lcl_status_details)
DEFINE_LOCALEITEM(lcl_submit)
DEFINE_LOCALEITEM(lcl_Total)
DEFINE_LOCALEITEM(lcl_valutasign)
END_LOCALEITEMS()
REGISTERONCE('$Id$')
#endif // CTR

View File

@@ -1,389 +0,0 @@
#ifdef CTR
/*
* $Revision$
* $Id$
*/
CREATE OR REPLACE PACKAGE ctr AS
PROCEDURE taak_naar_ter_uitvoering(pmld_stdmelding_key IN NUMBER,
pmld_subject IN VARCHAR2,
pins_srtcontrole_info IN VARCHAR2,
pprs_kostenplaats_key IN NUMBER,
pprs_perslid_key IN NUMBER,
pmld_stdmelding_default_disc IN NUMBER,
palg_locatie_key IN NUMBER,
palg_onroerendgoed_keys IN NUMBER,
pins_deel_key IN NUMBER,
pdeelsrtcontrole_key IN NUMBER);
RETURN NUMBER;
PROCEDURE melding_voor_geplande_taken_maken;
END ctr;
/
CREATE OR REPLACE PACKAGE BODY ctr AS
PROCEDURE taak_naar_ter_uitvoering(pmld_stdmelding_key IN NUMBER,
pmld_subject IN VARCHAR2,
pins_srtcontrole_info IN VARCHAR2,
pprs_kostenplaats_key IN NUMBER,
pprs_perslid_key IN NUMBER,
pmld_stdmelding_default_disc IN NUMBER,
palg_locatie_key IN NUMBER,
palg_onroerendgoed_keys IN NUMBER,
pins_deel_key IN NUMBER,
pdeelsrtcontrole_key IN NUMBER)
AS
c_applname VARCHAR2 (50) := 'AFMELDEN_ORD';
v_errormsg VARCHAR2 (1000);
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
v_aanduiding VARCHAR2 (200);
l_new_melding_key mld_melding.mld_melding_key%TYPE;
l_new_melding_object_key mld_melding_object.mld_melding_object_key%TYPE;
BEGIN
SELECT mld_s_mld_melding_key.NEXTVAL INTO l_new_melding_key FROM DUAL;
INSERT INTO mld_melding(prs_perslid_key,
prs_perslid_key_voor,
mld_melding_datum,
mld_ins_discipline_key,
mld_stdmelding_key,
mld_melding_omschrijving,
mld_melding_onderwerp,
mld_meldbron_key,
prs_kostenplaats_key,
mld_alg_locatie_key,
mld_melding_spoed,
mld_alg_onroerendgoed_keys,
mld_melding_module,
mld_melding_key)
VALUES (pprs_perslid_key,
pprs_perslid_key,
SYSDATE,
pmld_stdmelding_default_disc,
pmld_stdmelding_key,
pins_srtcontrole_info,
pmld_subject,
10,
pprs_kostenplaats_key,
palg_locatie_key,
3, -- Default prioriteit 3.
palg_onroerendgoed_keys,
'MLD',
l_new_melding_key);
SELECT mld_s_mld_object_key.NEXTVAL INTO l_new_melding_object_key FROM DUAL;
INSERT INTO mld_melding_object(ins_deel_key,
mld_melding_key,
ins_deelsrtcontrole_key,
mld_melding_object_key)
VALUES (pins_deel_key,
l_new_melding_key,
pdeelsrtcontrole_key,
l_new_melding_object_key);
mld.setmeldingstatus(l_new_melding_key, 2, NULL, 1);
IF pmld_stdmelding_default_disc IS NOT NULL -- mldbhg notificatie.
THEN
mld.notifybackoffice (l_new_melding_key, 'MLDBHG', 2);
END IF;
mld.mld_nextworkflowstep (l_new_melding_key, -1);
mld.mld_addautoorder(l_new_melding_key);
COMMIT;
EXCEPTION
WHEN OTHERS
THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
v_errormsg := 'ORACLE (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
fac.writelog (c_applname, 'E', v_aanduiding || v_errormsg, 'Taak afgebroken!');
END;
-- Automatische starten en ter uitvoering zetten van taken die voor vandaag of eerder zijn gepland (via plandatum of berekend).
-- Er wordt bij de taak ook direct een melding aangemaakt.
-- voorwaarden: 1) Er is een stdmelding gedefinieerd bij de periodieke taak.
-- 2) Alleen periodieke taken, GEEN mjob taken.
PROCEDURE melding_voor_geplande_taken_maken
AS
c_applname VARCHAR2 (50) := 'MELDING_VOOR_GEPLANDE_TAKEN_MAKEN';
v_errormsg VARCHAR2 (1000);
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
v_aanduiding VARCHAR2 (200);
v_count_tot NUMBER (10);
l_prs_perslid_key prs_perslid.prs_perslid_key%TYPE;
l_new_deelsrtcontrole_key ins_deelsrtcontrole.ins_deelsrtcontrole_key%TYPE;
l_deelsrtcontrole_key ins_deelsrtcontrole.ins_deelsrtcontrole_key%TYPE;
mjb_approvedmld_desc fac_setting.fac_setting_default%TYPE;
mld_subject VARCHAR2 (200);
CURSOR c_taak_naar_ter_uitvoering
IS
-- Ingeplande taken.
SELECT idsc.ins_deelsrtcontrole_key,
idsc.ins_deel_key,
idsc.ins_srtcontrole_key,
idsc.ins_scenario_key,
xcp.mld_stdmelding_key,
sm.mld_stdmelding_default_disc,
CASE
WHEN d.ins_alg_ruimte_type IN ('T', 'R')
THEN
COALESCE(xcp.prs_kostenplaats_key,
(SELECT prs_kostenplaats_key
FROM alg_gebouw
WHERE alg_gebouw_key = (SELECT alg.alg_gebouw_key FROM alg_v_allonroerendgoed alg WHERE alg.alg_onroerendgoed_keys = d.ins_alg_ruimte_key)))
WHEN d.ins_alg_ruimte_type IN ('W')
THEN
COALESCE(xcp.prs_kostenplaats_key,
(SELECT prs_kostenplaats_key
FROM alg_gebouw
WHERE alg_gebouw_key = (SELECT wpg.alg_gebouw_key FROM prs_v_werkplek_gegevens wpg WHERE wpg.prs_werkplek_key = d.ins_alg_ruimte_key)))
ELSE
NULL
END prs_kostenplaats_key,
xcp.ins_srtcontrole_omschrijving,
xcp.ins_srtcontrole_info,
isd.ins_srtdeel_omschrijving,
CASE
WHEN d.ins_alg_ruimte_type IN ('T', 'R')
THEN
(SELECT alg.alg_locatie_key FROM alg_v_allonroerendgoed alg WHERE alg.alg_onroerendgoed_keys = d.ins_alg_ruimte_key)
WHEN d.ins_alg_ruimte_type IN ('W')
THEN
(SELECT wpg.alg_locatie_key FROM prs_v_werkplek_gegevens wpg WHERE wpg.prs_werkplek_key = d.ins_alg_ruimte_key)
WHEN d.ins_alg_ruimte_type IN ('P', 'A')
THEN
NULL
END alg_locatie_key,
CASE
WHEN d.ins_alg_ruimte_type IN ('T', 'R')
THEN
(SELECT alg.alg_onroerendgoed_keys FROM alg_v_allonroerendgoed alg WHERE alg.alg_onroerendgoed_keys = d.ins_alg_ruimte_key)
WHEN d.ins_alg_ruimte_type IN ('W')
THEN
(SELECT wpg.alg_ruimte_key FROM prs_v_werkplek_gegevens wpg WHERE wpg.prs_werkplek_key = d.ins_alg_ruimte_key)
WHEN d.ins_alg_ruimte_type IN ('P', 'A')
THEN
NULL
END alg_onroerendgoed_keys,
CASE
WHEN (SELECT COUNT(ins_deelsrtcontrole_key)
FROM ins_deelsrtcontrole idsc2
WHERE idsc2.ins_deel_key = idsc.ins_deel_key
AND idsc2.ins_srtcontrole_key = idsc.ins_srtcontrole_key
AND idsc2.ins_scenario_key = idsc.ins_scenario_key
AND idsc2.ins_deelsrtcontrole_status = 6) >= 1
THEN
ins.nextcyclusdate(idsc.ins_deel_key, idsc.ins_srtcontrole_key, 1, 1)
ELSE NULL
END nextdate
FROM ins_deelsrtcontrole idsc,
ins_v_defined_inspect_xcp xcp,
ins_v_deelenonderdeel d,
ins_srtdeel isd,
mld_stdmelding sm
WHERE xcp.ins_srtcontrole_key = idsc.ins_srtcontrole_key
AND xcp.ins_deel_key = idsc.ins_deel_key
AND xcp.ins_scenario_key = idsc.ins_scenario_key
AND xcp.mld_stdmelding_key = sm.mld_stdmelding_key
AND d.ins_deel_key = idsc.ins_deel_key
AND d.ins_srtdeel_key = isd.ins_srtdeel_key
AND d.ins_alg_ruimte_type IN ('T', 'R', 'P', 'W', 'A')
AND TRUNC(idsc.ins_deelsrtcontrole_plandatum, 'dd') <= TRUNC(SYSDATE, 'dd')
AND (xcp.ins_srtcontrole_eind IS NULL OR xcp.ins_srtcontrole_eind > SYSDATE)
AND d.ins_deel_verwijder IS NULL
AND (d.ins_deel_vervaldatum IS NULL OR d.ins_deel_vervaldatum > SYSDATE)
AND idsc.ins_scenario_key = 1
AND idsc.ins_deelsrtcontrole_status = 0
AND xcp.ctr_ismjob = 0
AND xcp.mld_stdmelding_key IS NOT NULL
UNION
-- Berekende taken t.o.v. de laatste inspectie (met historie).
SELECT NULL ins_deelsrtcontrole_key,
idsc.ins_deel_key,
idsc.ins_srtcontrole_key,
idsc.ins_scenario_key,
xcp.mld_stdmelding_key,
sm.mld_stdmelding_default_disc,
CASE
WHEN d.ins_alg_ruimte_type IN ('T', 'R')
THEN
COALESCE(xcp.prs_kostenplaats_key,
(SELECT prs_kostenplaats_key
FROM alg_gebouw
WHERE alg_gebouw_key = (SELECT alg.alg_gebouw_key FROM alg_v_allonroerendgoed alg WHERE alg.alg_onroerendgoed_keys = d.ins_alg_ruimte_key)))
WHEN d.ins_alg_ruimte_type IN ('W')
THEN
COALESCE(xcp.prs_kostenplaats_key,
(SELECT prs_kostenplaats_key
FROM alg_gebouw
WHERE alg_gebouw_key = (SELECT wpg.alg_gebouw_key FROM prs_v_werkplek_gegevens wpg WHERE wpg.prs_werkplek_key = d.ins_alg_ruimte_key)))
ELSE
NULL
END prs_kostenplaats_key,
xcp.ins_srtcontrole_omschrijving,
xcp.ins_srtcontrole_info,
isd.ins_srtdeel_omschrijving,
CASE
WHEN d.ins_alg_ruimte_type IN ('T', 'R')
THEN
(SELECT alg.alg_locatie_key FROM alg_v_allonroerendgoed alg WHERE alg.alg_onroerendgoed_keys = d.ins_alg_ruimte_key)
WHEN d.ins_alg_ruimte_type IN ('W')
THEN
(SELECT wpg.alg_locatie_key FROM prs_v_werkplek_gegevens wpg WHERE wpg.prs_werkplek_key = d.ins_alg_ruimte_key)
WHEN d.ins_alg_ruimte_type IN ('P', 'A')
THEN
NULL
END alg_locatie_key,
CASE
WHEN d.ins_alg_ruimte_type IN ('T', 'R')
THEN
(SELECT alg.alg_onroerendgoed_keys FROM alg_v_allonroerendgoed alg WHERE alg.alg_onroerendgoed_keys = d.ins_alg_ruimte_key)
WHEN d.ins_alg_ruimte_type IN ('W')
THEN
(SELECT wpg.alg_ruimte_key FROM prs_v_werkplek_gegevens wpg WHERE wpg.prs_werkplek_key = d.ins_alg_ruimte_key)
WHEN d.ins_alg_ruimte_type IN ('P', 'A')
THEN
NULL
END alg_onroerendgoed_keys,
CASE
WHEN (SELECT COUNT(ins_deelsrtcontrole_key)
FROM ins_deelsrtcontrole idsc2
WHERE idsc2.ins_deel_key = idsc.ins_deel_key
AND idsc2.ins_srtcontrole_key = idsc.ins_srtcontrole_key
AND idsc2.ins_scenario_key = idsc.ins_scenario_key
AND idsc2.ins_deelsrtcontrole_status = 6) >= 1
THEN
ins.nextcyclusdate(idsc.ins_deel_key, idsc.ins_srtcontrole_key, 1, 1)
ELSE NULL
END nextdate
FROM ins_deelsrtcontrole idsc,
ins_v_defined_inspect_xcp xcp,
ins_v_deelenonderdeel d,
ins_srtdeel isd,
mld_stdmelding sm
WHERE xcp.ins_srtcontrole_key = idsc.ins_srtcontrole_key
AND xcp.ins_deel_key = idsc.ins_deel_key
AND xcp.ins_scenario_key = idsc.ins_scenario_key
AND xcp.mld_stdmelding_key = sm.mld_stdmelding_key
AND d.ins_deel_key = idsc.ins_deel_key
AND d.ins_srtdeel_key = isd.ins_srtdeel_key
AND d.ins_alg_ruimte_type IN ('T', 'R', 'P', 'W', 'A')
AND TRUNC(ins.nextcyclusdate(idsc.ins_deel_key, idsc.ins_srtcontrole_key, 1, 1), 'dd') <= TRUNC(SYSDATE, 'dd')
AND (xcp.ins_srtcontrole_eind IS NULL OR xcp.ins_srtcontrole_eind > SYSDATE)
AND d.ins_deel_verwijder IS NULL
AND (d.ins_deel_vervaldatum IS NULL OR d.ins_deel_vervaldatum > SYSDATE)
AND idsc.ins_scenario_key = 1
AND idsc.ins_deelsrtcontrole_key = (SELECT MAX(ins_deelsrtcontrole_key)
FROM ins_deelsrtcontrole idsc2
WHERE idsc2.ins_deel_key = idsc.ins_deel_key
AND idsc2.ins_srtcontrole_key = idsc.ins_srtcontrole_key
AND idsc2.ins_scenario_key = idsc.ins_scenario_key
AND idsc2.ins_deelsrtcontrole_status = 6)
AND (SELECT MAX(ins_deelsrtcontrole_key)
FROM ins_deelsrtcontrole idsc2
WHERE idsc2.ins_deel_key = idsc.ins_deel_key
AND idsc2.ins_srtcontrole_key = idsc.ins_srtcontrole_key
AND idsc2.ins_scenario_key = idsc.ins_scenario_key
AND idsc2.ins_deelsrtcontrole_status != 6) IS NULL -- Er mag geen lopende taak aanwezig zijn.
AND xcp.ctr_ismjob = 0
AND xcp.mld_stdmelding_key IS NOT NULL;
BEGIN
v_count_tot := 0;
FOR rec IN c_taak_naar_ter_uitvoering
LOOP
BEGIN
v_errormsg := 'Fout starten taak';
v_aanduiding := '[' || TO_CHAR (rec.ins_deel_key) || '/' || TO_CHAR (rec.ins_srtcontrole_key) || '] ';
BEGIN
SELECT prs_perslid_key
INTO l_prs_perslid_key
FROM prs_perslid
WHERE prs_perslid_oslogin = '_SYSTEEM' AND prs_perslid_verwijder IS NULL;
EXCEPTION
WHEN NO_DATA_FOUND
THEN
fac.putsystemnotification ('Invalid configuration: missing _SYSTEEM user', 1);
END;
-- Stap 1 is de taak starten.
IF rec.ins_deelsrtcontrole_key IS NULL
THEN
SELECT ins_s_ins_deelsrtcontrole_key.NEXTVAL INTO l_new_deelsrtcontrole_key FROM DUAL;
INSERT INTO ins_deelsrtcontrole (ins_deelsrtcontrole_key,
ins_deel_key,
ins_srtcontrole_key,
ins_deelsrtcontrole_status,
prs_perslid_key,
ins_deelsrtcontrole_datum_org)
VALUES (l_new_deelsrtcontrole_key,
rec.ins_deel_key,
rec.ins_srtcontrole_key,
2,
l_prs_perslid_key,
rec.nextdate);
l_deelsrtcontrole_key := l_new_deelsrtcontrole_key;
ELSE
l_deelsrtcontrole_key := rec.ins_deelsrtcontrole_key;
-- Het ins_deelsrtcontrole record bestaat al omdat de taak al is ingepland.
END IF;
ins.setinspectstatus(l_deelsrtcontrole_key, 2, NULL);
-- Stap 2 is de taak ter uitvoering brengen door een melding aan te maken en deze te koppelen aan de gestarte taak.
mjb_approvedmld_desc := fac.getsetting('mjb_approvedmelding_description');
IF mjb_approvedmld_desc = 2
THEN
mld_subject := rec.ins_srtcontrole_omschrijving;
ELSIF mjb_approvedmld_desc = 3
THEN
mld_subject := rec.ins_srtcontrole_omschrijving || ' (' || rec.ins_srtdeel_omschrijving || ')';
ELSE -- mjb_approvedmelding_description = 1
mld_subject := rec.ins_srtdeel_omschrijving;
END IF;
-- Melding aangmaken en koppelen.
ctr.taak_naar_ter_uitvoering(rec.mld_stdmelding_key,
mld_subject,
rec.ins_srtcontrole_info,
rec.prs_kostenplaats_key,
l_prs_perslid_key,
rec.mld_stdmelding_default_disc,
rec.alg_locatie_key,
rec.alg_onroerendgoed_keys,
rec.ins_deel_key,
l_deelsrtcontrole_key);
ins.setinspectstatus(l_deelsrtcontrole_key, 3, NULL);
v_count_tot := v_count_tot + 1;
IF MOD (v_count_tot, 500) = 0 THEN COMMIT; END IF;
END;
END LOOP;
fac.writelog (c_applname, 'S', '#Taken gestart: ' || TO_CHAR (v_count_tot), '');
COMMIT;
EXCEPTION
WHEN OTHERS
THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
v_errormsg := 'ORACLE (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
fac.writelog (c_applname, 'E', v_aanduiding || v_errormsg, 'Taak afgebroken!');
END;
END ctr;
/
REGISTERRUN('$Id$')
#endif // CTR

View File

@@ -1,11 +0,0 @@
#ifdef CTR
/*
* $Revision$
* $Id$
*/
CREATE SEQUENCE ctr_s_ctr_disc_params_key MINVALUE 1;
REGISTERONCE('$Id$')
#endif // CTR

View File

@@ -1,33 +0,0 @@
#ifdef CTR
/*
* $Revision$
* $Id$
*/
CREATE_TABLE (ctr_disc_params,0)
(
ctr_disc_params_key
NUMBER(10),
ctr_ins_discipline_key
NUMBER(10),
ctr_disc_params_controle_type // 1=controle, 2=vervanging, 3=certificering, rest ntb
NUMBER(1)
DEFAULT(1)
CONSTRAINT ctr_disc_params_controle_type NOT NULL,
ctr_disc_params_ismjob
NUMBER(1) -- valid are 0, 1
DEFAULT 0
NOT NULL,
mld_stdmelding_key
NUMBER(10)
CONSTRAINT mld_r_mld_stdmelding_key6 REFERENCES mld_stdmelding,
CONSTRAINT ctr_c_ins_discipline_key CHECK (ctr_ins_discipline_key IS NOT NULL),
CONSTRAINT ctr_k_ctr_disc_params_key PRIMARY KEY (ctr_disc_params_key),
CONSTRAINT ctr_r_ins_discipine_key FOREIGN KEY (ctr_ins_discipline_key)
REFERENCES ins_tab_discipline (ins_discipline_key)
);
REGISTERONCE('$Id$')
#endif // CTR

View File

@@ -1,25 +0,0 @@
#ifdef CTR
/*
* $Revision$
* $Id$
*/
AUDIT_BEGIN(ctr_disc_params)
AUDIT_VALUE(ctr_disc_params, ctr_ins_discipline_key)
AUDIT_VALUE(ctr_disc_params, ctr_disc_params_controle_type)
AUDIT_VALUE(ctr_disc_params, ctr_disc_params_ismjob)
AUDIT_VALUE(ctr_disc_params, mld_stdmelding_key)
AUDIT_END()
CREATE_TRIGGER(ctr_t_ctr_disc_params_b_iu)
BEFORE INSERT OR UPDATE ON ctr_disc_params
FOR EACH ROW
BEGIN
UPDATE_PRIMARY_KEY(ctr_disc_params_key, ctr_s_ctr_disc_params_key);
END;
/
REGISTERRUN('$Id$')
#endif // CTR

View File

@@ -1,548 +0,0 @@
#ifdef CTR
/*
* $Revision$
* $Id$
*/
CREATE_VIEW(ctr_discipline, 0)
AS
SELECT * FROM ins_tab_discipline WHERE ins_discipline_module = 'CTR';
DEFINIEER_VIEW_AANWEZIG(ctr_discipline, ins_discipline_verwijder,
ctr_v_aanwezigdiscipline, 0);
CREATE_VIEW(ctr_v_allsrtinstallatie, 0)
(
niveau,
ctr_srtinstallatie_key,
discipline_oms,
srtcontrole_oms,
ins_discipline_key,
ins_srtcontrole_key
)
AS
SELECT 'E',
cd.ins_discipline_key,
cd.ins_discipline_omschrijving,
NULL ins_srtcontrole_omschrijving,
cd.ins_discipline_key,
NULL ins_srtcontrole_key
FROM ctr_discipline cd
UNION
SELECT 'C',
isc.ins_srtcontrole_key,
cd.ins_discipline_omschrijving,
isc.ins_srtcontrole_omschrijving,
cd.ins_discipline_key,
isc.ins_srtcontrole_key
FROM ctr_discipline cd,
ins_srtcontrole isc
WHERE cd.ins_discipline_key = isc.ctr_discipline_key
UNION
SELECT 'T' niveau,
NULL ctr_srtinstallatie_key,
NULL discipline_oms,
NULL srtcontrole_oms,
NULL ins_discipline_key,
NULL ins_srtcontrole_key
FROM DUAL;
CREATE_VIEW(ctr_v_monthly_recurring_tasks, 0)
AS
-- Inspecties die dit jaar en volgend jaar nog uitgevoerd moeten worden.
SELECT ig.discipline,
ig.soort,
ig.groep,
ig.soortcode,
ig.omschrijving object,
ig.opmerking,
ig.locatie_omschrijving locatie,
ig.gebouw,
ig.ruimtenr,
ig.perslid persoon,
ig.aantal,
ig.srtcontrole_omschrijving taak,
ig.ins_srtcontrole_eenheid eenheid,
ig.ins_srtcontrole_periode periode,
ig.taaksoort,
ig.ins_deelsrtcontrole_datum inspectiedatum,
ig.controlemode_omschrijving taakafhandeling,
ig.ins_deelsrtcontrole_opmerking inspectie_opmerking,
ins_deelsrtcontrole_status inspectie_code,
ig.deelsrtcontrole_status inspectie_status,
ins_controlemode_success succesvol,
TO_CHAR(ig.volgendedatum, 'MM') maand,
TO_CHAR(ig.volgendedatum, 'YYYY') jaar,
TO_CHAR(ig.volgendedatum, 'YYYY-MM') jaarmaand,
ig.ins_deelsrtcontrole_datum_org orgdatum,
ig.ins_deelsrtcontrole_plandatum plandatum,
ig.volgendedatum,
ig.vervaldatum,
ig.ins_deel_key deel_key,
ig.ins_srtcontrole_key,
ig.ins_deelsrtcontrole_key
FROM (WITH
comps(ins_deel_key,
ins_srtcontrole_key,
ins_deelsrtcontrole_datum,
ins_srtcontrole_mode,
ins_srtcontrole_eenheid,
ins_srtcontrole_periode,
ins_srtcontrole_bits,
volgendedatum,
discipline,
soort,
groep,
soortcode,
omschrijving,
opmerking,
locatie_omschrijving,
gebouw,
ruimtenr,
aantal,
srtcontrole_omschrijving,
taaksoort,
ins_deelsrtcontrole_datum_org,
controlemode_omschrijving,
ins_deelsrtcontrole_opmerking,
perslid,
ins_deelsrtcontrole_plandatum,
ins_deelsrtcontrole_status,
ins_controlemode_success,
deelsrtcontrole_status,
vervaldatum,
ins_deelsrtcontrole_key)
AS
(SELECT *
FROM (
-- 1a) Dit deel bepaald de laatste inspectie (geplande(0), gestarte(2), afgemeld(5) of verwerkt(6)),
-- inclusief de allereerste inspectie die nog niet gereed gemeld is.
SELECT di.deel_key ins_deel_key,
xcp.ins_srtcontrole_key,
di.ins_deelsrtcontrole_datum,
xcp.ins_srtcontrole_mode,
xcp.ins_srtcontrole_eenheid,
xcp.ins_srtcontrole_periode,
xcp.ins_srtcontrole_bits,
COALESCE(di.ins_deelsrtcontrole_plandatum,
CASE
WHEN di.ins_deelsrtcontrole_status IN (2, 3)
AND di.ins_deelsrtcontrole_datum_org IS NULL
THEN -- Gestart(2) en de allereerste inspectie (ins_deelsrtcontrole_datum_org is NULL).
-- Periodieke taken:
-- De startdatum is MAX(startdatum, aanmaakdatum/registratiedatum) en heeft altijd een waarde (ins_deel_aanmaak is altijd gevuld).
-- Er is nog geen inspectie geweest en de startdatum is ingevuld of de registratiedatum ligt in de toekomst.
-- Er geldt dan het volgende:
-- Voor Controle(1): Eerste inspectie tonen op MAX(startdatum, registratiedatum) van het object.
-- Voor Vervanging(2) of Certificering(3):
-- a) Als de startdatum het verst ligt: Eerste inspectie tonen op de startdatum.
-- b) Als registratiedatum het verst in de toekomst ligt: Eerste inspectie tonen op 1 periode verder dan de registratiedatum.
-- De aanmaakdatum/Registratiedatum is altijd ingevuld en als er al een inspectie is geweest,
-- zijn de startdatum en registratiedatum niet meer van belang.
CASE
-- Er geldt dat (ctr_ismjob = 0), dus de eerste when is toch niet geldig.
--WHEN di.ctr_ismjob = 1
--THEN
-- ins_deelsrtcontrole_freezedate
WHEN xcp.ctr_controle_type = 1
THEN -- Controle(1).
CASE
WHEN xcp.ins_srtcontroledl_xcp_startdat IS NOT NULL
AND xcp.ins_srtcontroledl_xcp_startdat >= xcp.ins_deel_aanmaak
THEN
xcp.ins_srtcontroledl_xcp_startdat
ELSE
xcp.ins_deel_aanmaak
END
ELSE -- Vervanging(2), Certificering(3).
CASE
WHEN xcp.ins_srtcontroledl_xcp_startdat IS NOT NULL
AND xcp.ins_srtcontroledl_xcp_startdat >= xcp.ins_deel_aanmaak
THEN
xcp.ins_srtcontroledl_xcp_startdat
ELSE
fac.nextcyclusdate(
-- er is nog geen inspectie geweest, dus de laatste inspectie is null
COALESCE(
NULL,
GREATEST(
COALESCE(xcp.ins_srtcontroledl_xcp_startdat,
xcp.ins_deel_aanmaak),
COALESCE(xcp.ins_deel_aanmaak,
xcp.ins_srtcontroledl_xcp_startdat))),
xcp.ins_srtcontrole_mode,
xcp.ins_srtcontrole_eenheid,
xcp.ins_srtcontrole_periode,
xcp.ins_srtcontrole_bits,
1, -- steps. De eerste inspectie is nog niet geweest dus 1 periode verder dan startdatum/aanmaakdatum.
0) -- Er geldt dat (ctr_ismjob = 0)
END
END
WHEN di.ins_deelsrtcontrole_status IN (2, 3)
AND di.ins_deelsrtcontrole_datum_org IS NOT NULL
THEN -- Gestart(2) en niet de allereerste inspectie.
di.ins_deelsrtcontrole_datum_org
ELSE -- Status is Gereed gemeld(5) of Voltooid(6).
CASE xcp.ins_srtcontrole_mode
WHEN 0
THEN -- Moment mode: ga uit van de originele berekende inspectiedatum.
di.ins_deelsrtcontrole_datum_org
ELSE -- Interval mode: ga uit van de werkelijke inspectiedatum.
di.ins_deelsrtcontrole_datum
END
END) volgendedatum,
discipline,
soort,
groep,
soortcode,
omschrijving,
opmerking,
locatie_omschrijving,
gebouw,
ruimtenr,
aantal,
srtcontrole_omschrijving,
ctr_discipline_omschrijving taaksoort,
ins_deelsrtcontrole_datum_org,
controlemode_omschrijving,
ins_deelsrtcontrole_opmerking,
perslid,
ins_deelsrtcontrole_plandatum,
di.ins_deelsrtcontrole_status,
COALESCE(
(SELECT icm.ins_controlemode_success
FROM ins_controlemode icm
WHERE icm.ins_controlemode_key =
(SELECT di2.ins_controlemode_key
FROM ins_deelsrtcontrole di2
WHERE di2.ins_deelsrtcontrole_key = di.ins_deelsrtcontrole_key)),
-1) ins_controlemode_success,
CASE di.ins_deelsrtcontrole_status
WHEN 0
THEN
lcl.L('lcl_ins_controle_pending')
WHEN 2
THEN
lcl.L('lcl_ins_controle_gestart')
WHEN 3
THEN
lcl.L('lcl_ins_controle_ter_uitvoer')
WHEN 5
THEN
CASE
WHEN ((SELECT icm.ins_controlemode_success
FROM ins_controlemode icm
WHERE icm.ins_controlemode_key =
(SELECT di2.ins_controlemode_key
FROM ins_deelsrtcontrole di2
WHERE di2.ins_deelsrtcontrole_key = di.ins_deelsrtcontrole_key)) =
1)
THEN
lcl.L('lcl_ins_controlemode_approved')
ELSE
lcl.L('lcl_ins_controlemode_deprecated')
END
WHEN 6
THEN
CASE
WHEN ((SELECT icm.ins_controlemode_success
FROM ins_controlemode icm
WHERE icm.ins_controlemode_key =
(SELECT ins_controlemode_key
FROM ins_deelsrtcontrole
WHERE ins_deelsrtcontrole_key = di.ins_deelsrtcontrole_key)) =
1)
THEN
lcl.L('lcl_ins_controlemode_approved')
ELSE
lcl.L('lcl_ins_controlemode_deprecated')
END
END deelsrtcontrole_status,
xcp.ins_srtcontrole_eind vervaldatum,
di.ins_deelsrtcontrole_key
FROM ins_v_udr_deelinspect di,
ins_v_defined_inspect_xcp xcp,
ctr_disc_params dp
WHERE di.ins_srtcontrole_key = xcp.ins_srtcontrole_key
AND di.deel_key = xcp.ins_deel_key
AND xcp.ctr_discipline_key = dp.ctr_ins_discipline_key
AND dp.ctr_disc_params_ismjob = 0
AND xcp.ins_srtcontrole_eenheid > 2
AND xcp.ins_scenario_key = 1
AND xcp.ins_srtcontrole_periode > 0
AND di.ins_deelsrtcontrole_key = (SELECT MAX(ins_deelsrtcontrole_key)
FROM ins_deelsrtcontrole id2
WHERE id2.ins_deel_key = di.deel_key
AND id2.ins_srtcontrole_key = di.ins_srtcontrole_key
AND id2.ins_scenario_key = 1)
UNION ALL
-- 1b) Dit deel bepaald de allereerste inspectie van een taak die nog niet ingepland of gestart is. Er is dus nog geen ins_deelsrtcontrole record van
SELECT d.deel_key ins_deel_key,
xcp.ins_srtcontrole_key,
NULL,
xcp.ins_srtcontrole_mode,
xcp.ins_srtcontrole_eenheid,
xcp.ins_srtcontrole_periode,
xcp.ins_srtcontrole_bits,
-- Gestart(2) en de allereerste inspectie (ins_deelsrtcontrole_datum_org is NULL).
-- Periodieke taken:
-- De startdatum is MAX(startdatum, aanmaakdatum/registratiedatum) en heeft altijd een waarde (ins_deel_aanmaak is altijd gevuld).
-- Er is nog geen inspectie geweest en de startdatum is ingevuld of de registratiedatum ligt in de toekomst.
-- Er geldt dan het volgende:
-- Voor Controle(1): Eerste inspectie tonen op MAX(startdatum, registratiedatum) van het object.
-- Voor Vervanging(2) of Certificering(3):
-- a) Als de startdatum het verst ligt: Eerste inspectie tonen op de startdatum.
-- b) Als registratiedatum het verst in de toekomst ligt: Eerste inspectie tonen op 1 periode verder dan de registratiedatum.
-- De aanmaakdatum/Registratiedatum is altijd ingevuld en als er al een inspectie is geweest,
-- zijn de startdatum en registratiedatum niet meer van belang.
CASE
-- Er geldt dat (ctr_ismjob = 0), dus de eerste when is toch niet geldig.
--WHEN xcp.ctr_ismjob = 1
--THEN
-- xcp.ins_deelsrtcontrole_freezedate
WHEN xcp.ctr_controle_type = 1
THEN -- Controle(1).
CASE
WHEN xcp.ins_srtcontroledl_xcp_startdat IS NOT NULL
AND xcp.ins_srtcontroledl_xcp_startdat >= xcp.ins_deel_aanmaak
THEN
xcp.ins_srtcontroledl_xcp_startdat
ELSE
xcp.ins_deel_aanmaak
END
ELSE -- Vervanging(2), Certificering(3).
CASE
WHEN xcp.ins_srtcontroledl_xcp_startdat IS NOT NULL
AND xcp.ins_srtcontroledl_xcp_startdat >= xcp.ins_deel_aanmaak
THEN
xcp.ins_srtcontroledl_xcp_startdat
ELSE
fac.nextcyclusdate(
-- er is nog geen inspectie geweest, dus de laatste inspectie is null
COALESCE(
NULL,
GREATEST(
COALESCE(xcp.ins_srtcontroledl_xcp_startdat,
xcp.ins_deel_aanmaak),
COALESCE(xcp.ins_deel_aanmaak,
xcp.ins_srtcontroledl_xcp_startdat))),
xcp.ins_srtcontrole_mode,
xcp.ins_srtcontrole_eenheid,
xcp.ins_srtcontrole_periode,
xcp.ins_srtcontrole_bits,
1, -- steps. De eerste inspectie is nog niet geweest dus 1 periode verder dan startdatum/aanmaakdatum.
0) -- Er geldt dat (ctr_ismjob = 0)
END
END
volgendedatum,
d.discipline,
d.soort,
d.groep,
d.soortcode,
d.omschrijving,
d.opmerking,
d.locatie_omschrijving,
d.gebouw,
d.ruimtenr,
d.aantal,
(SELECT isc.ins_srtcontrole_omschrijving
FROM ins_srtcontrole isc
WHERE isc.ins_srtcontrole_key = xcp.ins_srtcontrole_key) srtcontrole_omschrijving,
(SELECT cd.ins_discipline_omschrijving
FROM ctr_discipline cd,
ins_srtcontrole isc
WHERE isc.ins_srtcontrole_key = xcp.ins_srtcontrole_key
AND isc.ctr_discipline_key = cd.ins_discipline_key) taaksoort,
ins_deelsrtcontrole_datum_org,
NULL controlemode_omschrijving,
ins_deelsrtcontrole_opmerking,
NULL perslid,
ins_deelsrtcontrole_plandatum,
-1 ins_deelsrtcontrole_status,
-1 ins_controlemode_success,
lcl.L('lcl_ins_controlemode_notplaned') deelsrtcontrole_status,
xcp.ins_srtcontrole_eind vervaldatum,
NULL ins_deelsrtcontrole_key
FROM ins_v_udr_deel d,
ins_deelsrtcontrole idsc,
ins_v_defined_inspect_xcp xcp,
ctr_disc_params dp
WHERE xcp.ins_srtcontrole_key = idsc.ins_srtcontrole_key(+)
AND xcp.ins_deel_key = idsc.ins_deel_key(+)
AND xcp.ins_scenario_key = idsc.ins_scenario_key(+)
AND xcp.ins_deel_key = d.deel_key
AND xcp.ctr_discipline_key = dp.ctr_ins_discipline_key
AND dp.ctr_disc_params_ismjob = 0
AND xcp.ins_srtcontrole_eenheid > 2
AND xcp.ins_scenario_key = 1
AND idsc.ins_deel_key IS NULL
AND idsc.ins_srtcontrole_key IS NULL
AND xcp.ins_srtcontrole_periode > 0
AND (idsc.ins_deelsrtcontrole_key IS NULL
OR idsc.ins_deelsrtcontrole_key =
(SELECT MAX(ins_deelsrtcontrole_key)
FROM ins_deelsrtcontrole id2
WHERE id2.ins_deel_key = d.deel_key
AND id2.ins_srtcontrole_key = xcp.ins_srtcontrole_key
AND id2.ins_scenario_key = 1)))
UNION ALL
-- 1c) Dit deel bepaalt/berekent de toekomstige inspecties van dit jaar en volgend jaar.
SELECT m.ins_deel_key,
m.ins_srtcontrole_key,
NULL ins_deelsrtcontrole_datum,
m.ins_srtcontrole_mode,
m.ins_srtcontrole_eenheid,
m.ins_srtcontrole_periode,
m.ins_srtcontrole_bits,
fac.nextcyclusdate(m.volgendedatum,
m.ins_srtcontrole_mode,
m.ins_srtcontrole_eenheid,
m.ins_srtcontrole_periode,
m.ins_srtcontrole_bits,
1,
0),
m.discipline,
m.soort,
m.groep,
m.soortcode,
m.omschrijving,
m.opmerking,
m.locatie_omschrijving,
m.gebouw,
m.ruimtenr,
m.aantal,
m.srtcontrole_omschrijving,
m.taaksoort,
NULL ins_deelsrtcontrole_datum_org,
NULL controlemode_omschrijving,
NULL ins_deelsrtcontrole_opmerking,
NULL perslid,
NULL ins_deelsrtcontrole_plandatum,
-1 ins_deelsrtcontrole_status,
-1 ins_controlemode_success,
lcl.L('lcl_ins_controlemode_notplaned') deelsrtcontrole_status,
m.vervaldatum,
NULL ins_deelsrtcontrole_key
FROM comps m
WHERE TRUNC(fac.nextcyclusdate(m.volgendedatum,
m.ins_srtcontrole_mode,
m.ins_srtcontrole_eenheid,
m.ins_srtcontrole_periode,
m.ins_srtcontrole_bits,
1,
0), 'YYYY') <=
TRUNC(ADD_MONTHS(SYSDATE, 24), 'YYYY'))
SELECT *
FROM comps) ig
WHERE (ig.vervaldatum IS NULL
OR ig.vervaldatum > ig.volgendedatum)
AND ig.volgendedatum BETWEEN TRUNC(ADD_MONTHS(SYSDATE, -12), 'YYYY') AND TRUNC(ADD_MONTHS(SYSDATE, 24), 'YYYY')
AND TRUNC(ig.volgendedatum, 'YYYY') < TRUNC(ADD_MONTHS(SYSDATE, 24), 'YYYY') -- 1 januari in het jaar dat 2 jaar verder ligt niet meetellen.
UNION ALL
-- 2) Inspecties die vorig jaar en dit jaar zijn uitgevoerd, uitgezonderd de laatste.
SELECT di.discipline,
di.soort,
di.groep,
di.soortcode,
di.omschrijving object,
di.opmerking,
di.locatie_omschrijving locatie,
di.gebouw,
di.ruimtenr,
di.perslid persoon,
di.aantal,
di.srtcontrole_omschrijving taak,
sc.ins_srtcontrole_eenheid eenheid,
sc.ins_srtcontrole_periode periode,
di.ctr_discipline_omschrijving taaksoort,
di.ins_deelsrtcontrole_datum inspectiedatum,
di.controlemode_omschrijving taakafhandeling,
di.ins_deelsrtcontrole_opmerking inspectie_opmerking,
(SELECT ins_deelsrtcontrole_status
FROM ins_deelsrtcontrole
WHERE ins_deelsrtcontrole_key = di.ins_deelsrtcontrole_key)
inspectie_code,
CASE (SELECT di2.ins_deelsrtcontrole_status
FROM ins_deelsrtcontrole di2
WHERE di2.ins_deelsrtcontrole_key = di.ins_deelsrtcontrole_key)
WHEN 0
THEN
lcl.L('lcl_ins_controle_pending')
WHEN 2
THEN
lcl.L('lcl_ins_controle_gestart')
WHEN 3
THEN
lcl.L('lcl_ins_controle_ter_uitvoer')
WHEN 5
THEN
CASE
WHEN ((SELECT icm.ins_controlemode_success
FROM ins_controlemode icm
WHERE icm.ins_controlemode_key =
(SELECT ins_controlemode_key
FROM ins_deelsrtcontrole
WHERE ins_deelsrtcontrole_key = di.ins_deelsrtcontrole_key)) =
1)
THEN
lcl.L('lcl_ins_controlemode_approved')
ELSE
lcl.L('lcl_ins_controlemode_deprecated')
END
WHEN 6
THEN
CASE
WHEN ((SELECT icm.ins_controlemode_success
FROM ins_controlemode icm
WHERE icm.ins_controlemode_key =
(SELECT ins_controlemode_key
FROM ins_deelsrtcontrole
WHERE ins_deelsrtcontrole_key = di.ins_deelsrtcontrole_key)) =
1)
THEN
lcl.L('lcl_ins_controlemode_approved')
ELSE
lcl.L('lcl_ins_controlemode_deprecated')
END
END inspectie_status,
COALESCE((SELECT icm.ins_controlemode_success
FROM ins_controlemode icm
WHERE icm.ins_controlemode_key = (SELECT di2.ins_controlemode_key
FROM ins_deelsrtcontrole di2
WHERE di2.ins_deelsrtcontrole_key = di.ins_deelsrtcontrole_key)),
-1) ins_controlemode_success,
TO_CHAR(di.ins_deelsrtcontrole_datum, 'MM') maand,
TO_CHAR(di.ins_deelsrtcontrole_datum, 'YYYY') jaar,
TO_CHAR(di.ins_deelsrtcontrole_datum, 'YYYY-MM') jaarmaand,
di.ins_deelsrtcontrole_datum_org orgdatum,
di.ins_deelsrtcontrole_plandatum plandatum,
di.ins_deelsrtcontrole_datum volgendedatum,
di.vervaldatum,
di.deel_key,
sc.ins_srtcontrole_key,
di.ins_deelsrtcontrole_key
FROM ins_v_udr_deelinspect di,
ins_srtcontrole sc,
ctr_disc_params dp
WHERE di.ins_srtcontrole_key = sc.ins_srtcontrole_key
AND sc.ctr_discipline_key = dp.ctr_ins_discipline_key
AND dp.ctr_disc_params_ismjob = 0
AND sc.ins_srtcontrole_eenheid > 2
AND di.ins_deelsrtcontrole_datum BETWEEN TRUNC(ADD_MONTHS(SYSDATE, -12), 'YYYY')
AND TRUNC(ADD_MONTHS(SYSDATE, 24), 'YYYY')
AND di.ins_deelsrtcontrole_key NOT IN (SELECT MAX(ins_deelsrtcontrole_key)
FROM ins_deelsrtcontrole id2
WHERE id2.ins_deel_key = di.deel_key
AND id2.ins_srtcontrole_key = di.ins_srtcontrole_key
AND id2.ins_scenario_key = 1);
CREATE_VIEW(ctr_v_monthly_recurring_tasksy, 0) // alleen huidige jaar
AS
SELECT *
FROM ctr_v_monthly_recurring_tasks
WHERE jaar = TO_CHAR (SYSDATE, 'YYYY');
REGISTERRUN('$Id$')
#endif // CTR

View File

@@ -1,14 +0,0 @@
#ifdef EXC
/*
* $Revision$
* $Id$
*/
CREATE INDEX exc_i_exc_import1 ON exc_import(fac_import_key);
CREATE INDEX exc_i_exc_import2
ON exc_import (APPT_ID || '|' || RECUR_ID, SEQ_NR, FAC_IMPORT_KEY);
REGISTERONCE('$Id$')
#endif // EXC

View File

@@ -1,44 +0,0 @@
#ifdef EXC
/* $Revision$
* $Id$
*/
_FAC_MODULE('EXC', 'lcl_module_EXC')
DEF_IMPORT2('WEB_PRSSYS', 'EXCHANGE', 'Import van reserveringen vanuit Exchange online', 'Import of reservations from Exchange online', 0, 'UTF-8', ' .\csv', 'exch_*.csv')
DEF_IMPORT2('WEB_PRSSYS', 'EXCHFULL', 'Import van alle reserveringen vanuit Exchange online', 'Import of all reservations from Exchange online', 0, 'UTF-8', ' .\csv', 'full_*.csv')
INSERT INTO fac_api (fac_api_name,
fac_api_filepath,
fac_api_loglevel,
fac_api_viewmapping_json)
VALUES ('MSGRAPHNOTIFICATION',
'appl/api/api_msgraphnotification.asp',
0,
NULL);
-- Toevoegen gebruiker om notificaties van MS Graph te verwerken
INSERT INTO prs_perslid (prs_perslid_module,
prs_srtperslid_key,
prs_afdeling_key,
prs_perslid_naam,
prs_perslid_oslogin,
prs_perslid_apikey,
prs_perslid_flags,
prs_perslid_opmerking)
SELECT prs_perslid_module,
prs_srtperslid_key,
prs_afdeling_key,
'API-user tbv. Exchange-koppeling',
'_MSGRAPHNOTIFICATION',
DBMS_RANDOM.string ('a', 32),
36,
'System account for Exchange notifications.'
|| CHR (13)
|| 'Contact Facilitor for configuration.'
FROM prs_perslid
WHERE prs_perslid_oslogin = '_FACILITOR';
REGISTERONCE('$Id$')
#endif // EXC

File diff suppressed because it is too large Load Diff

View File

@@ -1,8 +0,0 @@
/*
* $Revision$
* $Id$
*/
CREATE SEQUENCE exc_s_import_key MINVALUE 1;
REGISTERONCE('$Id$')

View File

@@ -1,44 +0,0 @@
/* EXC_TAB.SRC
* $Revision$
* $Id$
*/
CREATE_TABLE(exc_import, 0)
(
exc_import_key
NUMBER(10)
CONSTRAINT exc_k_exc_import_key PRIMARY KEY,
room_id
VARCHAR2(256),
subject
VARCHAR2(200),
starttime
DATE,
endtime
DATE,
organizer
VARCHAR2(200),
att_mail
VARCHAR2(200),
att_name
VARCHAR2(200),
visibility -- 0=Private, 1=Normal
NUMBER(4)
DEFAULT 1,
modifier
VARCHAR2(1),
appt_id
VARCHAR2(500),
recur_id
VARCHAR2(500),
seq_nr
NUMBER(16),
fac_import_key
NUMBER(10)
CONSTRAINT exc_r_fac_import_key1 REFERENCES fac_import(fac_import_key) ON DELETE CASCADE,
gelukt
NUMBER(1),
CONSTRAINT exc_c_visibility CHECK (modifier = 'D' OR visibility IS NOT NULL)
);
REGISTERONCE('$Id$')

View File

@@ -1,18 +0,0 @@
#ifdef EXC
/*
* $Revision$
* $Id$
*/
CREATE_TRIGGER(exc_t_exc_import_B_I)
BEFORE INSERT ON exc_import
FOR EACH ROW
BEGIN
UPDATE_PRIMARY_KEY(exc_import_key, exc_s_import_key);
END;
/
REGISTERRUN('$Id$')
#endif // EXC

View File

@@ -2,19 +2,10 @@
* $Id$
*/
CREATE INDEX fac_i_audit_perslidkey1 ON fac_audit(prs_perslid_key);
CREATE INDEX fac_i_audit_tabel1 ON fac_audit(fac_audit_tabelnaam, fac_audit_tabelkey);
CREATE UNIQUE INDEX fac_i_fac_bookmark1 ON fac_bookmark(fac_bookmark_id);
CREATE INDEX fac_i_fac_groep1 ON fac_groep(fac_groep_externid);
CREATE UNIQUE INDEX fac_i_fac_gebruikersgroep1 ON fac_gebruikersgroep(prs_perslid_key, fac_groep_key);
CREATE INDEX fac_i_fac_selectie1 ON fac_selectie(fac_selectie_node,fac_selectie_tabel);
create index fac_i_fac_result1 on fac_result(fac_result_sessionid);
CREATE UNIQUE INDEX fac_i_fac_profielwaarde1 ON fac_profielwaarde (fac_profiel_key, ins_discipline_key);
create index fac_i_fac_perfmon_sample1 on fac_perfmon_sample(fac_perfmon_sample_datum);
@@ -22,17 +13,12 @@ create index fac_i_fac_perfmon_sample2 on fac_perfmon_sample(fac_perfmon_sample_
create index fac_i_fac_perfmon_sample3 on fac_perfmon_sample(prs_perslid_key);
CREATE UNIQUE INDEX fac_i_srtnotificatie_code1 ON fac_srtnotificatie(fac_srtnotificatie_code);
CREATE UNIQUE INDEX fac_i_srtnotificatie_code2 on fac_srtnotificatie(fac_srtnotificatie_key, fac_srtnotificatie_xmlnode);
CREATE INDEX fac_i_notificatie1 ON fac_notificatie(prs_perslid_key_receiver, fac_notificatie_status);
CREATE INDEX fac_i_notificatie2 ON fac_notificatie(fac_srtnotificatie_key);
-- voor ontdubbelingen:
CREATE INDEX fac_i_notificatie3 ON fac_notificatie(fac_notificatie_refkey);
CREATE UNIQUE INDEX fac_i_fac_xml1 ON fac_xml(fac_session_id, fac_xml_volgnr);
CREATE INDEX fac_i_fac_session1 ON fac_session(prs_perslid_key);
CREATE UNIQUE INDEX fac_i_fac_session2 ON fac_session(fac_session_sessionid_hash);
CREATE UNIQUE INDEX fac_i_fac_sequence1 ON fac_sequence(fac_sequence_name);
CREATE UNIQUE INDEX fac_i_fac_import_app1
ON fac_import_app (fac_import_app_code,
@@ -42,42 +28,15 @@ CREATE UNIQUE INDEX fac_i_fac_import_app1
CREATE INDEX imp_i_log_importkey1 ON imp_log(fac_import_key);
CREATE INDEX imp_i_imp_log2 ON imp_log(imp_log_applicatie);
CREATE INDEX fac_i_fac_imp_file1 ON fac_imp_file(fac_import_key);
CREATE INDEX fac_i_fac_imp_csv1 ON fac_imp_csv(fac_import_key);
-- Maakt opruimen efficienter:
CREATE INDEX fac_i_import_appkey1 ON fac_import(fac_import_app_key, fac_import_key);
CREATE INDEX fac_i_import_appkey1 ON fac_import(fac_import_app_key);
CREATE INDEX fac_i_tracking_refkey1 ON fac_tracking(fac_tracking_refkey);
CREATE INDEX fac_i_tracking_perslidkey1 ON fac_tracking(prs_perslid_key);
CREATE INDEX fac_i_tracking_srtnotkey1 ON fac_tracking(fac_srtnotificatie_key);
CREATE INDEX fac_i_imp_factuur1 ON fac_imp_factuur (ordernr);
CREATE INDEX fac_i_imp_factuur2 ON fac_imp_factuur (fac_import_key);
CREATE UNIQUE INDEX fac_i_fac_locale_xref1 ON fac_locale_xref (fac_locale_xref_filepath, fac_locale_xsl_key);
CREATE UNIQUE INDEX fac_i_fac_code2label ON fac_code2label (fac_code2label_domein, fac_code2label_code);
CREATE UNIQUE INDEX fac_i_fac_menuitems1 ON fac_menuitems (fac_menuitems_label);
CREATE INDEX fac_i_fac_menu_perslid_key ON fac_menu (prs_perslid_key);
CREATE UNIQUE INDEX fac_i_imp_usrdata1 ON fac_imp_usrdata (fac_usrtab_naam, fac_usrdata_code);
CREATE UNIQUE INDEX fac_i_fac_api1 ON fac_api (fac_api_name);
create index fac_i_fac_usrrap_volgnr on fac_usrrap(fac_usrrap_volgnr, fac_usrrap_omschrijving);
CREATE INDEX fac_i_fac_bijlagen_root_key ON fac_bijlagen(fac_bijlagen_root_key);
CREATE INDEX fac_i_fac_bijlagen_refkey1 ON fac_bijlagen(fac_bijlagen_refkey);
CREATE INDEX fac_i_fac_note_group1 ON fac_note_group(fac_note_group_xmlnode, fac_note_group_volgnr);
CREATE INDEX faq_i_faq_kenmerk1 ON faq_kenmerk(faq_kenmerk_code);
CREATE INDEX fac_i_fac_gui_counter1 ON fac_gui_counter(prs_perslid_key);
CREATE UNIQUE INDEX fac_i_fac_usrrap_cols1 ON fac_usrrap_cols(fac_usrrap_key, UPPER(fac_usrrap_cols_column_name));
REGISTERONCE('$Id$')

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

5114
FAC/FAC_LCLASP.SRC Normal file

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

5
FAC/FAC_LCLMDL.csv Normal file
View File

@@ -0,0 +1,5 @@
model;field;NL;EN;DE;FR
mld_afmeldtekst;name;de omschrijving van de afmeldtekst;;;
;description;de tekst van de afmeldtekst die bij de afhandeling van meldingen wordt gebruikt;;;
;vakgroep;de vakgroep waar de afmeldtekst beschikbaar is. Wordt ook een melding gevuld dan is deze tekst alleen bij de specifieke melding te gebruiken;;;
;melding;de melding waar de afmeldtekst beschikbaar is. Worden de velden Vakgroep en Melding leeg gelaten dan is de tekst te gebruiken bij alle meldingen;;;
1 model field NL EN DE FR
2 mld_afmeldtekst name de omschrijving van de afmeldtekst
3 description de tekst van de afmeldtekst die bij de afhandeling van meldingen wordt gebruikt
4 vakgroep de vakgroep waar de afmeldtekst beschikbaar is. Wordt ook een melding gevuld dan is deze tekst alleen bij de specifieke melding te gebruiken
5 melding de melding waar de afmeldtekst beschikbaar is. Worden de velden Vakgroep en Melding leeg gelaten dan is de tekst te gebruiken bij alle meldingen

File diff suppressed because it is too large Load Diff

View File

@@ -1,47 +0,0 @@
/* $Revision$
* $Id$
*/
/* FAC_PACA, (A means Audit) to be included from fac_pac.src, isolated for convenience only
* The Audit-package source. Contains all functions for audit.
*
* Usage: aud.auditaction(...);
*
*/
CREATE OR REPLACE PACKAGE aud
AS
PROCEDURE auditaction (tabelnaam VARCHAR2, tabelkey_oud NUMBER, tabelkey_nieuw NUMBER, veldnaam VARCHAR2, waarde_oud VARCHAR2, waarde_nieuw VARCHAR2, action VARCHAR2, opmerk VARCHAR2 DEFAULT NULL);
END aud;
/
CREATE OR REPLACE PACKAGE BODY aud
AS
PROCEDURE auditaction (tabelnaam VARCHAR2, tabelkey_oud NUMBER, tabelkey_nieuw NUMBER, veldnaam VARCHAR2, waarde_oud VARCHAR2, waarde_nieuw VARCHAR2, action VARCHAR2, opmerk VARCHAR2 DEFAULT NULL)
IS
BEGIN
IF (action <> 'I' AND COALESCE(waarde_oud, 'bUSnDIaVjRS56D3z') <> COALESCE(waarde_nieuw, 'bUSnDIaVjRS56D3z')) OR
(action = 'I' AND waarde_nieuw IS NOT NULL)
THEN
INSERT INTO fac_audit (fac_audit_tabelnaam,
fac_audit_tabelkey,
fac_audit_veldnaam,
fac_audit_actie,
fac_audit_waarde_oud,
fac_audit_waarde_nieuw,
prs_perslid_key,
fac_audit_opmerking)
VALUES (tabelnaam,
COALESCE(tabelkey_nieuw, tabelkey_oud),
veldnaam,
CASE WHEN action = 'D' OR SUBSTR(veldnaam, -9) = 'verwijder' THEN 'D' ELSE action END,
waarde_oud,
waarde_nieuw,
sys_context('USERENV', 'CLIENT_IDENTIFIER'),
opmerk);
END IF;
END;
END aud;
/
REGISTERRUN('$Id$')

File diff suppressed because it is too large Load Diff

View File

@@ -1,678 +0,0 @@
/* $Revision$
* $Id$
*/
/* Purge (definitief echt verijderen) van data >7 jaar zoals met UWVA#61083
* gerealiseerd voor UWV en met MNNL#78302 voor MN.
* Proces heeft te maken met het irrelevant raken van data en een wettelijke
* bewaarplicht (voor bv belastingdienst) en daarmee impliciet een opruimvrijheid
* na die periode, naast emotionele en praktische voordelen, zoals kleinere backupfiles
* minder data bij datalekken en de mogelijkheid om nog meer op te ruimen.
*
* Gebruik: BEGIN del.fac_purge(1); END;
*
* Kan en mag herhaaldelijk worden aangeroepen en verwijdert wat verstreken is
* en geen latere afhankelijkheden heeft. Er is een lichte volgorde-afhankelijkheid
* (de gekozen volgorde is bewust) wat automatisch door herhaling wordt gecompenseerd.
*
* Praktisch bezien zou een jaarlijkse aanroep best volstaan, maar met een dagelijkse
* aanroep blijf je zeer strikt binnen het regime en blijft de (performance) impact
* zeer bescheiden.
* Er zijn wettelijke termijnen van 7 jaren (84 maanden), maar zoals iedere constante
* in de core kan die te overrulen worden met setting datapurge_period (years).
*
* -- TODO: Misschien ook nog schonen vastgoed, personen, objecten en nog meer?
* -- TODO: Periodieke bestelaanvragen/opdrachten niet beschouwen?
*/
/* NOTE: since views and package are tighly related, the views are contained here instead of FAC_VIE.SRC */
CREATE_VIEW(fac_v_2purge_bes,0)
(
jaar,
bes_bestelling_key
)
AS
WITH b
AS (SELECT bes_bestelling_key,
bes_bestelling_datum,
bes_bestelling_retourvan_key,
COALESCE (
fac.gettrackingdate ('BESREJ', bes_bestelling_key),
fac.gettrackingdate ('BESOTV', bes_bestelling_key))
gesloten
FROM bes_bestelling
WHERE bes_bestelling_status IN (1, 6, 7, 8, 9) -- Gesloten bestelling
AND bes_bestelling_datum < TRUNC (ADD_MONTHS (TRUNC (ADD_MONTHS (SYSDATE, -1), 'yyyy'), -fac.getsetting ('datapurge_period') * 12)))
SELECT TO_CHAR (b.bes_bestelling_datum, 'yyyy') jaar, bes_bestelling_key
FROM b
WHERE bes_bestelling_retourvan_key IS NULL -- Alleen bron-bestelling (dus zonder de retouren)
AND NOT EXISTS -- Geen later gewijzigde child-bestelopdrachten!
(SELECT 1
FROM fac_tracking t, fac_srtnotificatie sn, bes_bestelopdr_item boi, bes_bestelling_item bbi
WHERE t.fac_tracking_datum > TRUNC (ADD_MONTHS (TRUNC (ADD_MONTHS (SYSDATE, -1), 'yyyy'), -fac.getsetting ('datapurge_period') * 12))
AND t.fac_srtnotificatie_key = sn.fac_srtnotificatie_key
AND sn.fac_srtnotificatie_xmlnode = 'bestelopdracht'
AND sn.fac_srtnotificatie_code <> 'BES2AN'
AND t.fac_tracking_refkey = boi.bes_bestelopdr_key
AND boi.bes_bestelopdr_item_key = bbi.bes_bestelopdr_item_key
AND bbi.bes_bestelling_key = b.bes_bestelling_key)
AND NOT EXISTS -- Geen lopende facturen op child-bestelopdrachten!
(SELECT 1
FROM fin_factuur f, bes_bestelopdr_item boi, bes_bestelling_item bbi
WHERE f.fin_factuur_verwijder IS NULL
AND f.fin_factuur_statuses_key IN (2, 3, 5, 6) -- Lopende factuur
AND f.bes_bestelopdr_key = boi.bes_bestelopdr_key
AND boi.bes_bestelopdr_item_key = bbi.bes_bestelopdr_item_key
AND bbi.bes_bestelling_key = b.bes_bestelling_key);
CREATE_VIEW(fac_v_2purge_bez,0)
(
jaar,
bez_afspraak_key,
bezoekers
)
AS
WITH a
AS ( SELECT a.bez_afspraak_key,
a.bez_afspraak_datum,
COUNT (*) bezoekers
FROM bez_afspraak a, bez_bezoekers b
WHERE a.bez_afspraak_datum < TRUNC (ADD_MONTHS (TRUNC (ADD_MONTHS (SYSDATE, -1), 'yyyy'), -fac.getsetting ('datapurge_period') * 12))
AND a.bez_afspraak_key = b.bez_afspraak_key
GROUP BY a.bez_afspraak_key, a.bez_afspraak_datum)
SELECT TO_CHAR (a.bez_afspraak_datum, 'yyyy') jaar, bez_afspraak_key, bezoekers
FROM a;
CREATE_VIEW(fac_v_2purge_res,0)
(
jaar,
verwijderd,
res_rsv_ruimte_key
)
AS
WITH r
AS (SELECT res_rsv_ruimte_key,
res_reservering_key,
res_rsv_ruimte_volgnr,
res_rsv_ruimte_tot,
res_rsv_ruimte_verwijder
FROM res_rsv_ruimte
WHERE res_rsv_ruimte_tot < TRUNC (ADD_MONTHS (TRUNC (ADD_MONTHS (SYSDATE, -1), 'yyyy'), -fac.getsetting ('datapurge_period') * 12)))
SELECT TO_CHAR (res_rsv_ruimte_tot, 'yyyy') jaar, DECODE (res_rsv_ruimte_verwijder, NULL, 'J', 'N') verwijderd, res_rsv_ruimte_key
FROM r
WHERE NOT EXISTS -- Geen latere child-reserveringen!
(SELECT 1
FROM res_rsv_ruimte cr -- Child-reserveringen!
WHERE cr.res_rsv_ruimte_tot > TRUNC (ADD_MONTHS (TRUNC (ADD_MONTHS (SYSDATE, -1), 'yyyy'), -fac.getsetting ('datapurge_period') * 12))
AND cr.res_reservering_key = r.res_reservering_key);
-- TODO: Periodieke meldingen/opdrachten niet beschouwen? => Bij MN niet gebruikt!
CREATE_VIEW(fac_v_2purge_mld,0)
(
jaar,
datum,
mld_melding_key
)
AS
WITH m
AS (SELECT mld_melding_key,
mld_melding_datum,
mld_melding_start_key,
mld_melding_parentkey,
COALESCE (
fac.gettrackingdate ('MLDREJ', mld_melding_key),
fac.gettrackingdate ('MLDAFM', mld_melding_key), -- Soms niet Afgemeld?
fac.gettrackingdate ('MLDVER', mld_melding_key))
gesloten
FROM mld_melding
WHERE mld_melding_status IN (1, 5, 6) -- Gesloten
AND mld_melding_datum < TRUNC (ADD_MONTHS (TRUNC (ADD_MONTHS (SYSDATE, -1), 'yyyy'), -fac.getsetting ('datapurge_period') * 12)))
SELECT TO_CHAR (m.mld_melding_datum, 'yyyy') jaar, m.mld_melding_datum datum, mld_melding_key
FROM m
WHERE m.gesloten < TRUNC (ADD_MONTHS (TRUNC (ADD_MONTHS (SYSDATE, -1), 'yyyy'), -fac.getsetting ('datapurge_period') * 12))
AND (m.mld_melding_start_key IS NULL OR m.mld_melding_key = m.mld_melding_start_key) -- Alleen bron-melding
AND m.mld_melding_parentkey IS NULL -- Alleen bron-melding
AND NOT EXISTS -- Geen later gewijzigde child-opdrachten!
(SELECT 1
FROM fac_tracking t, fac_srtnotificatie sn, mld_opdr o
WHERE t.fac_tracking_datum > TRUNC (ADD_MONTHS (TRUNC (ADD_MONTHS (SYSDATE, -1), 'yyyy'), -fac.getsetting ('datapurge_period') * 12))
AND t.fac_srtnotificatie_key = sn.fac_srtnotificatie_key
AND sn.fac_srtnotificatie_xmlnode = 'opdracht'
AND sn.fac_srtnotificatie_code <> 'ORDANO'
AND t.fac_tracking_refkey = o.mld_opdr_key
AND o.mld_melding_key = m.mld_melding_key)
AND EXISTS -- Eventuele start-melding ook > 7 jaar gesloten!
(SELECT 1
FROM m sm -- Start-meldingen!
WHERE sm.mld_melding_key = COALESCE (m.mld_melding_start_key, m.mld_melding_key))
AND EXISTS -- Eventuele parent-melding ook > 7 jaar gesloten!
(SELECT 1
FROM m pm -- Parent-meldingen!
WHERE pm.mld_melding_key = COALESCE (m.mld_melding_parentkey, m.mld_melding_key))
AND NOT EXISTS -- Eventuele vervolg-melding ook > 7 jaar gesloten!
(SELECT 1
FROM mld_melding vm, -- Vervolg-meldingen!
fac_tracking t,
fac_srtnotificatie sn
WHERE vm.mld_melding_start_key = m.mld_melding_key
AND vm.mld_melding_key = t.fac_tracking_refkey
AND t.fac_srtnotificatie_key = sn.fac_srtnotificatie_key
AND sn.fac_srtnotificatie_xmlnode = 'melding'
AND sn.fac_srtnotificatie_code <> 'MLDANO'
AND (vm.mld_melding_status NOT IN (1, 5, 6) -- Lopend
OR (EXISTS (SELECT 1 FROM mld_melding vvm where vvm.mld_melding_start_key = vm.mld_melding_key)) -- Geneste vervolgmeldingen. Te ingewikkeld
OR t.fac_tracking_datum > TRUNC (ADD_MONTHS (TRUNC (ADD_MONTHS (SYSDATE, -1), 'yyyy'), -fac.getsetting ('datapurge_period') * 12)))) -- Geraakt < 7 jaar geleden
AND NOT EXISTS -- Eventuele child-melding ook > 7 jaar gesloten!
(SELECT 1
FROM mld_melding cm, -- Child-meldingen!
fac_tracking t,
fac_srtnotificatie sn
WHERE cm.mld_melding_parentkey = m.mld_melding_key
AND cm.mld_melding_key = t.fac_tracking_refkey
AND t.fac_srtnotificatie_key = sn.fac_srtnotificatie_key
AND sn.fac_srtnotificatie_xmlnode = 'melding'
AND sn.fac_srtnotificatie_code <> 'MLDANO'
AND (cm.mld_melding_status NOT IN (1, 5, 6) -- Lopend
OR t.fac_tracking_datum > TRUNC (ADD_MONTHS (TRUNC (ADD_MONTHS (SYSDATE, -1), 'yyyy'), -fac.getsetting ('datapurge_period') * 12)))) -- Geraakt < 7 jaar geleden
AND NOT EXISTS -- Geen lopende facturen op child-opdrachten!
(SELECT 1
FROM fin_factuur f, mld_opdr o
WHERE f.fin_factuur_verwijder IS NULL
AND f.fin_factuur_statuses_key IN (2, 3, 5, 6) -- Lopende factuur
AND f.mld_opdr_key = o.mld_opdr_key
AND o.mld_melding_key = m.mld_melding_key);
CREATE_VIEW(fac_v_2purge_cnt,0)
(
ins_discipline_key,
contractsoort,
cnt_contract_key,
contractnr,
cnt_contract_omschrijving,
cnt_contract_looptijd_tot,
cnt_contract_status
)
AS
SELECT DISTINCT
c.ins_discipline_key,
cd.ins_discipline_omschrijving,
c.cnt_contract_key,
c.cnt_contract_nummer_intern || DECODE (c.cnt_contract_versie, NULL, '', '.' || c.cnt_contract_versie)
contractnr,
c.cnt_contract_omschrijving,
c.cnt_contract_looptijd_tot,
c.cnt_contract_status
FROM cnt_contract c, cnt_discipline cd
WHERE c.cnt_contract_looptijd_tot < TRUNC (ADD_MONTHS (TRUNC (ADD_MONTHS (SYSDATE, -1), 'yyyy'), -fac.getsetting ('datapurge_period') * 12)) -- Verlopen > 7 jaar geleden
AND c.ins_discipline_key = cd.ins_discipline_key
AND NOT EXISTS -- Geen dossier-contract onder dezelfde mantel <= 7 jaar geleden
(SELECT 1
FROM cnt_contract dc
WHERE dc.cnt_contract_verwijder IS NULL
AND dc.cnt_contract_looptijd_tot >= TRUNC (ADD_MONTHS (TRUNC (ADD_MONTHS (SYSDATE, -1), 'yyyy'), -fac.getsetting ('datapurge_period') * 12))
AND dc.cnt_contract_mantel_key = c.cnt_contract_key)
AND NOT EXISTS -- Geen lopende facturen op contract!
(SELECT 1
FROM fin_factuur
WHERE fin_factuur_verwijder IS NULL
AND fin_factuur_statuses_key IN (2, 3, 5, 6) -- Lopende factuur
AND cnt_contract_key = c.cnt_contract_key);
/* candidate rootview for a fac_v_rap_2purge_all report */
CREATE_VIEW(fac_v_2purge_all,0)
(
module,
jaar,
aantal,
subaantal
)
AS
SELECT 'BES', jaar, COUNT (*) aantal, NULL subaantal
FROM fac_v_2purge_bes
GROUP BY 'BES', jaar
UNION ALL
SELECT 'BEZ', jaar, COUNT (*) aantal, SUM (bezoekers) subaantal
FROM fac_v_2purge_bez
GROUP BY 'BEZ', jaar
UNION ALL
SELECT 'RES', jaar, COUNT (*) aantal, NULL subaantal
FROM fac_v_2purge_res
GROUP BY 'RES', jaar
UNION ALL
SELECT 'MLD', jaar, COUNT (*) aantal, NULL subaantal
FROM fac_v_2purge_mld
GROUP BY 'MLD', jaar
UNION ALL
SELECT 'CNT', TO_CHAR (cnt_contract_looptijd_tot, 'yyyy') jaar, COUNT ( * ) aantal, NULL subaantal
FROM fac_v_2purge_cnt
GROUP BY 'CNT', TO_CHAR (cnt_contract_looptijd_tot, 'yyyy');
/* THE PACKAGE (that does the job using the views above) */
CREATE OR REPLACE PACKAGE del
AS
-- If you are verysure, call this procedure with parameter 1
-- If you need extended logging, add 2 (so use 3)
PROCEDURE fac_purge (iamverysure IN NUMBER DEFAULT 0);
END del;
/
CREATE OR REPLACE PACKAGE BODY del
AS
PROCEDURE fac_purge(iamverysure IN NUMBER DEFAULT 0)
AS
-- BES per jaar
CURSOR cbes (p_jaar VARCHAR2)
IS
SELECT bes_bestelling_key
FROM fac_v_2purge_bes
WHERE jaar <= p_jaar
ORDER BY 1;
-- BEZ per jaar (samen met RES)
CURSOR cbez (p_jaar VARCHAR2)
IS
SELECT bez_afspraak_key
FROM fac_v_2purge_bez
WHERE jaar <= p_jaar
ORDER BY 1;
-- RES per jaar (samen met BEZ)
CURSOR cres (p_jaar VARCHAR2)
IS
SELECT res_rsv_ruimte_key
FROM fac_v_2purge_res
WHERE jaar <= p_jaar
ORDER BY 1;
-- MLD per jaar (of maand)
CURSOR cmld (p_datum DATE)
IS
SELECT mld_melding_key
FROM fac_v_2purge_mld
WHERE TRUNC (datum) <= p_datum
ORDER BY 1;
-- CNT allemaal tegelijk, hoeft niet per jaar
CURSOR ccnt
IS
SELECT ins_discipline_key, cnt_contract_key
FROM fac_v_2purge_cnt
ORDER BY 1, 2;
v_errormsg VARCHAR2 (1000);
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
v_count NUMBER (10);
v_jaar1 VARCHAR2 (4);
v_jaar2 VARCHAR2 (4);
v_datum DATE;
v_purgeblock_start DATE; -- voor logging-timing
v_purgeblock_end DATE; -- voor logging-timing
v_genesisdatum DATE; -- de nieuwe datum van het begin der aarde, alles voor deze datum mag weg.
BEGIN
-- Early Exit
IF fac.getsetting ('datapurge_period') = 99
THEN
fac.writelog ('$PURGE$','S','No purge of data, purge is disabled', 'Configuration of datapurge_period 99 (default) means disabled');
RETURN;
END IF;
-- Bepalen we obv vandaag en de setting datapurge_period (in jaren, default 99)
-- We vinden januari een uitloopmaand, vandaar de -1. Als iemand anders dat zwaarwegend anders gaat vinden
-- dan moet dat een datapurge_gracemonths worden. Dezelfde berekening zit ook in alle views hierboven
-- > Dit is dus 1 januari van het jaar dat bewaard moet blijven <
-- (niet onlogisch om deze datum als parameter aan de purge mee te kunnen geven?)
v_genesisdatum := TRUNC (ADD_MONTHS (TRUNC (ADD_MONTHS (SYSDATE, -1), 'yyyy'), -fac.getsetting ('datapurge_period') * 12));
DBMS_OUTPUT.put_line('About to (re)purge anything before '||TO_CHAR(v_genesisdatum,'DD-MM-YYYY'));
IF BITAND(iamverysure,1) = 1
THEN
fac.writelog ('$PURGE$','I','Purge anything before '||TO_CHAR(v_genesisdatum,'DD-MM-YYYY'), '');
ELSE
fac.writelog ('$PURGE$','I','Purge SIMULATION OF anything before '||TO_CHAR(v_genesisdatum,'DD-MM-YYYY'), '');
END IF;
SELECT COALESCE(SUM (aantal),0) INTO v_count FROM fac_v_2purge_all;
fac.writelog ('$PURGE$','S','There is a grand total of '||TO_CHAR (v_count, '999G999G999', 'NLS_NUMERIC_CHARACTERS = '',.''')||' items to possibly purge.', '');
DBMS_OUTPUT.put_line('There is a grand total of '||TO_CHAR(v_count)||' items to purge.');
IF v_count = 0
THEN
DBMS_OUTPUT.put_line('So nothing to purge, bye.');
fac.writelog ('$PURGE$','S','So nothing to purge, done.', '');
RETURN;
END IF;
DBMS_OUTPUT.put_line('Starting bestellingen');
-- Telkens een jaartje schonen totdat achterstand ingelopen
v_count := 0;
v_purgeblock_start := SYSDATE;
SELECT MIN (jaar), MAX (jaar)
INTO v_jaar1, v_jaar2
FROM fac_v_2purge_bes
WHERE jaar > '1990';
DBMS_OUTPUT.put_line('Range is '||v_jaar1||'-'||v_jaar2);
FOR r IN cbes (v_jaar2)
LOOP
BEGIN
v_errormsg := 'Error purging bestelling: ' || TO_CHAR (r.bes_bestelling_key);
IF BITAND(iamverysure,1) = 1
THEN
bes.remove (r.bes_bestelling_key);
END IF;
IF BITAND(iamverysure,2) = 2
THEN
fac.writelog ('$PURGE$','I','Purged '||TO_CHAR(r.bes_bestelling_key)||'.', '');
END IF;
v_count := v_count + 1;
-- Elke 1000 BES een COMMIT
IF MOD (v_count, 1000) = 0
THEN
COMMIT;
END IF;
EXCEPTION
WHEN OTHERS
THEN
v_errormsg := v_errormsg || '/'|| SUBSTR (SQLERRM, 1, 200);
fac.writelog ('$PURGE$','E', v_errormsg, 'BES-loop');
END;
END LOOP;
v_purgeblock_end := SYSDATE;
IF v_jaar1 = v_jaar2
THEN
fac.writelog (
'$PURGE$',
'S',
'Step 1/5 #Bestellingen purged (year=' || v_jaar2 || '): ' || TO_CHAR (v_count, '999G999G999', 'NLS_NUMERIC_CHARACTERS = '',.'''),
TO_CHAR (ROUND ((v_purgeblock_end - v_purgeblock_start) * 24 * 60), 'FM990') || 'm');
ELSE
fac.writelog (
'$PURGE$',
'S',
'Step 1/5 #Bestellingen purged (years='
|| v_jaar1
|| '-'
|| v_jaar2
|| '): '
|| TO_CHAR (v_count, '999G999G999', 'NLS_NUMERIC_CHARACTERS = '',.'''),
TO_CHAR (ROUND ((v_purgeblock_end - v_purgeblock_start) * 24 * 60), 'FM990') || 'm');
END IF;
DBMS_OUTPUT.put_line('Bestellingen done.');
COMMIT;
DBMS_OUTPUT.put_line('Starting bezoekers');
v_count := 0;
v_purgeblock_start := SYSDATE;
SELECT MIN (jaar), MAX (jaar)
INTO v_jaar1, v_jaar2
FROM fac_v_2purge_bez
WHERE jaar > '1990';
DBMS_OUTPUT.put_line('Range is '||v_jaar1||'-'||v_jaar2);
FOR r IN cbez (v_jaar2)
LOOP
BEGIN
v_errormsg := 'Error purging afspraak: ' || TO_CHAR (r.bez_afspraak_key);
IF BITAND(iamverysure,1) = 1
THEN
bez.remove (r.bez_afspraak_key);
END IF;
IF BITAND(iamverysure,2) = 2
THEN
fac.writelog ('$PURGE$','I','Purged '||TO_CHAR(r.bez_afspraak_key)||'.', '');
END IF;
v_count := v_count + 1;
-- Elke 1000 BEZ een COMMIT
IF MOD (v_count, 1000) = 0
THEN
COMMIT;
END IF;
EXCEPTION
WHEN OTHERS
THEN
v_errormsg := v_errormsg || '/'|| SUBSTR (SQLERRM, 1, 200);
fac.writelog ('$PURGE$','E', v_errormsg, 'BEZ-loop');
END;
END LOOP;
v_purgeblock_end := SYSDATE;
IF v_jaar1 = v_jaar2
THEN
fac.writelog (
'$PURGE$',
'S',
'Step 2/5 #Afspraken purged (year=' || v_jaar2 || '): ' || TO_CHAR (v_count, '999G999G999', 'NLS_NUMERIC_CHARACTERS = '',.'''),
TO_CHAR (ROUND ((v_purgeblock_end - v_purgeblock_start) * 24 * 60), 'FM990') || 'm');
ELSE
fac.writelog (
'$PURGE$',
'S',
'Step 2/5 #Afspraken purged (years='
|| v_jaar1
|| '-'
|| v_jaar2
|| '): '
|| TO_CHAR (v_count, '999G999G999', 'NLS_NUMERIC_CHARACTERS = '',.'''),
TO_CHAR (ROUND ((v_purgeblock_end - v_purgeblock_start) * 24 * 60), 'FM990') || 'm');
END IF;
COMMIT;
DBMS_OUTPUT.put_line('Bezoekers done.');
DBMS_OUTPUT.put_line('Starting reserveringen');
v_count := 0;
v_purgeblock_start := SYSDATE;
-- jaren kennelijk als BEZ
FOR r IN cres (v_jaar2)
LOOP
BEGIN
v_errormsg := 'Error purging reservering: ' || TO_CHAR (r.res_rsv_ruimte_key);
IF BITAND(iamverysure,1) = 1
THEN
res.remove (r.res_rsv_ruimte_key);
END IF;
IF BITAND(iamverysure,2) = 2
THEN
fac.writelog ('$PURGE$','I','Purged '||TO_CHAR(r.res_rsv_ruimte_key)||'.', '');
END IF;
v_count := v_count + 1;
-- Elke 1000 RES een COMMIT
IF MOD (v_count, 1000) = 0
THEN
COMMIT;
END IF;
EXCEPTION
WHEN OTHERS
THEN
v_errormsg := v_errormsg || '/'|| SUBSTR (SQLERRM, 1, 200);
fac.writelog ('$PURGE$','E', v_errormsg, 'RES-loop');
END;
END LOOP;
v_purgeblock_end := SYSDATE;
IF v_jaar1 = v_jaar2
THEN
fac.writelog (
'$PURGE$',
'S',
'Step 3/5 #Reserveringen purged (year=' || v_jaar1 || '): ' || TO_CHAR (v_count, '999G999G999', 'NLS_NUMERIC_CHARACTERS = '',.'''),
TO_CHAR (ROUND ((v_purgeblock_end - v_purgeblock_start) * 24 * 60), 'FM990') || 'm');
ELSE
fac.writelog (
'$PURGE$',
'S',
'Step 3/5 #Reserveringen purged (years='
|| v_jaar1
|| '-'
|| v_jaar2
|| '): '
|| TO_CHAR (v_count, '999G999G999', 'NLS_NUMERIC_CHARACTERS = '',.'''),
TO_CHAR (ROUND ((v_purgeblock_end - v_purgeblock_start) * 24 * 60), 'FM990') || 'm');
END IF;
DBMS_OUTPUT.put_line('Reserveringen done.');
COMMIT;
DBMS_OUTPUT.put_line('Starting meldingen');
v_count := 0;
v_purgeblock_start := SYSDATE;
SELECT MIN (jaar), MAX (jaar)
INTO v_jaar1, v_jaar2
FROM fac_v_2purge_mld
WHERE jaar > '1990';
DBMS_OUTPUT.put_line('Range is '||v_jaar1||'-'||v_jaar2);
v_errormsg := 'Fout bepalen oudste datum';
v_datum := fac.safe_to_date ('31-12-' || v_jaar2, 'dd-mm-yyyy');
FOR r IN cmld (v_datum)
LOOP
BEGIN
v_errormsg := 'Error purging melding: ' || TO_CHAR (r.mld_melding_key);
IF BITAND(iamverysure,1) = 1
THEN
mld.remove (r.mld_melding_key);
END IF;
IF BITAND(iamverysure,2) = 2
THEN
fac.writelog ('$PURGE$','I','Purged '||TO_CHAR(r.mld_melding_key)||'.', '');
END IF;
v_count := v_count + 1;
-- Elke 1000 MLD een COMMIT
IF MOD (v_count, 1000) = 0
THEN
COMMIT;
END IF;
EXCEPTION
WHEN OTHERS
THEN
v_errormsg := v_errormsg || '/'|| SUBSTR (SQLERRM, 1, 200);
fac.writelog ('$PURGE$','E', v_errormsg, 'MLD-loop');
END;
END LOOP;
v_purgeblock_end := SYSDATE;
--fac.writelog ('$PURGE$', 'S', '#Meldingen purged (maand=' || TO_CHAR (v_datum - 1, 'yyyy-mm') || '): ' || TO_CHAR (v_count), TO_CHAR (ROUND ((v_purgeblock_end - v_purgeblock_start) * 24 * 60), 'FM990') || 'm');
--fac.writelog ('$PURGE$', 'S', '#Meldingen purged (year=' || TO_CHAR (v_datum - 1, 'yyyy') || '): ' || TO_CHAR (v_count), TO_CHAR (ROUND ((v_purgeblock_end - v_purgeblock_start) * 24 * 60), 'FM990') || 'm');
IF v_jaar1 = v_jaar2
THEN
fac.writelog (
'$PURGE$',
'S',
'Step 4/5 #Meldingen purged (year=' || v_jaar1 || '): ' || TO_CHAR (v_count, '999G999G999', 'NLS_NUMERIC_CHARACTERS = '',.'''),
TO_CHAR (ROUND ((v_purgeblock_end - v_purgeblock_start) * 24 * 60), 'FM990') || 'm');
ELSE
fac.writelog (
'$PURGE$',
'S',
'Step 4/5 #Meldingen purged (years='
|| v_jaar1
|| '-'
|| v_jaar2
|| '): '
|| TO_CHAR (v_count, '999G999G999', 'NLS_NUMERIC_CHARACTERS = '',.'''),
TO_CHAR (ROUND ((v_purgeblock_end - v_purgeblock_start) * 24 * 60), 'FM990') || 'm');
END IF;
COMMIT;
DBMS_OUTPUT.put_line('Meldingen done.');
DBMS_OUTPUT.put_line('Starting contracten');
v_count := 0;
v_purgeblock_start := SYSDATE;
--v_errormsg := 'Fout bepalen oudste datum';
--SELECT MIN (cnt_contract_looptijd_tot)
-- INTO v_datum
-- FROM fac_v_2purge_cnt
-- WHERE cnt_contract_looptijd_tot > TO_DATE ( '01-01-1999', 'dd-mm-yyyy');
--v_datum := TRUNC (ADD_MONTHS (v_datum, 12), 'yyyy');
SELECT TO_CHAR(MIN (cnt_contract_looptijd_tot), 'YYYY'), TO_CHAR (MAX (cnt_contract_looptijd_tot), 'YYYY')
INTO v_jaar1, v_jaar2
FROM fac_v_2purge_cnt;
DBMS_OUTPUT.put_line('Range is '||v_jaar1||'-'||v_jaar2);
-- Alle te schonen contracten(-dossiers) in 1x
FOR r IN ccnt
LOOP
BEGIN
v_errormsg := 'Error purging contract: ' || TO_CHAR (r.cnt_contract_key);
IF BITAND(iamverysure,1) = 1
THEN
cnt.remove (r.cnt_contract_key);
END IF;
IF BITAND(iamverysure,2) = 2
THEN
fac.writelog ('$PURGE$','I','Purged '||TO_CHAR(r.cnt_contract_key)||'.', '');
END IF;
v_count := v_count + 1;
-- Elke 1000 CNT een COMMIT!
IF MOD (v_count, 1000) = 0
THEN
COMMIT;
END IF;
EXCEPTION
WHEN OTHERS
THEN
v_errormsg := v_errormsg || '/'|| SUBSTR (SQLERRM, 1, 200);
fac.writelog ('$PURGE$','E', v_errormsg, 'CNT-loop');
END;
END LOOP;
v_purgeblock_end := SYSDATE;
--fac.writelog ('$PURGE$', 'S', '#Contracten purged (year=' || TO_CHAR (v_datum - 1, 'yyyy') || '): ' || TO_CHAR (v_count), TO_CHAR (ROUND ((v_purgeblock_end - v_purgeblock_start) * 24 * 60), 'FM990') || 'm');
IF v_jaar1 = v_jaar2
THEN
fac.writelog (
'$PURGE$',
'S',
'Step 5/5 #Contracten purged (year=' || v_jaar1 || '): ' || TO_CHAR (v_count, '999G999G999', 'NLS_NUMERIC_CHARACTERS = '',.'''),
TO_CHAR (ROUND ((v_purgeblock_end - v_purgeblock_start) * 24 * 60), 'FM990') || 'm');
ELSE
fac.writelog (
'$PURGE$',
'S',
'Step 5/5 #Contracten purged (years='
|| v_jaar1
|| '-'
|| v_jaar2
|| '): '
|| TO_CHAR (v_count, '999G999G999', 'NLS_NUMERIC_CHARACTERS = '',.'''),
TO_CHAR (ROUND ((v_purgeblock_end - v_purgeblock_start) * 24 * 60), 'FM990') || 'm');
END IF;
COMMIT;
DBMS_OUTPUT.put_line('Contracten done.');
-- Na afloop checken of nog restjes zijn
SELECT COALESCE(SUM (aantal),0) INTO v_count FROM fac_v_2purge_all;
fac.writelog ('$PURGE$','I','There is a grand total of '||TO_CHAR (v_count, '999G999G999', 'NLS_NUMERIC_CHARACTERS = '',.''')||' items left to purge.', '');
EXCEPTION
WHEN OTHERS
THEN
v_errormsg := v_errormsg || '/'|| SUBSTR (SQLERRM, 1, 200);
fac.writelog ('$PURGE$','E', 'Purge aborted!', v_errormsg);
COMMIT;
END;
END del;
/

File diff suppressed because it is too large Load Diff

View File

@@ -1,950 +0,0 @@
/* $Revision$
* $Id$
*/
/* FAC_PACFLEX
*
* Contains all functions for flex values.
*
*/
CREATE OR REPLACE PACKAGE flx
AS
PROCEDURE gettableinf (pmodule IN OUT VARCHAR2,
o_ktable OUT VARCHAR2, -- Naam kenmerk tabel
o_ktable_kdefault OUT VARCHAR2,
o_kvtable OUT VARCHAR2, -- Naam kenmerk waarden tabel
o_kvtable_refkey OUT VARCHAR2,
o_kvtable_kniveau OUT VARCHAR2,
o_kvtable_kwaarde OUT VARCHAR2,
o_kvtable_kkey OUT VARCHAR2,
o_kvtable_kdelete OUT VARCHAR2,
o_ktable_kshowexpr OUT VARCHAR2
);
FUNCTION getflex (pmodule IN VARCHAR2,
p_kenmerk_key IN NUMBER,
p_ref_key IN NUMBER,
p_niveau IN VARCHAR2 DEFAULT NULL,
p_optional IN NUMBER DEFAULT 0) RETURN VARCHAR2;
PROCEDURE setflex (pmodule IN VARCHAR2,
p_kenmerk_key IN NUMBER,
p_ref_key IN NUMBER,
p_waarde 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_multi IN NUMBER DEFAULT 0);
PROCEDURE deleteflex (pmodule IN VARCHAR2,
p_kenmerk_key IN NUMBER,
p_ref_key IN NUMBER,
p_niveau IN VARCHAR2,
p_waardekey IN NUMBER DEFAULT NULL);
PROCEDURE setflexbijlage (p_module IN VARCHAR2,
p_kenmerk_key IN NUMBER,
p_ref_key IN NUMBER,
p_disk_directory IN VARCHAR2,
p_disk_filename IN VARCHAR2,
p_filename IN VARCHAR2,
p_file_size IN NUMBER,
p_file_date IN DATE,
p_digest IN VARCHAR2 DEFAULT NULL,
p_root_key IN NUMBER DEFAULT NULL);
PROCEDURE copyflexbijlage ( p_module IN VARCHAR2
, p_refkey IN NUMBER
, p_kenmerk_key IN NUMBER
, p_from_bijlagen_key IN NUMBER
);
PROCEDURE deleteflexbijlage (p_bijlagen_key IN NUMBER
,p_fileisgone IN BOOLEAN DEFAULT FALSE);
PROCEDURE deleteflexbijlage (p_module IN VARCHAR2,
p_kenmerk_key IN NUMBER,
p_ref_key IN NUMBER,
p_disk_directory IN VARCHAR2,
p_filename IN VARCHAR2);
FUNCTION getflexexprtype (pmodule IN VARCHAR2,
p_kenmerk_key IN NUMBER) RETURN VARCHAR2;
FUNCTION getflexexpression (pmodule IN VARCHAR2,
p_kenmerk_key IN NUMBER) RETURN VARCHAR2;
FUNCTION getflexshowexpr (pmodule IN VARCHAR2,
p_kenmerk_key IN NUMBER) RETURN VARCHAR2;
FUNCTION getdomeinwaarde (dkey IN NUMBER,
waarde IN VARCHAR2,
ignorewhenxmlnode IN NUMBER DEFAULT 0) RETURN VARCHAR2;
PROCEDURE evaluateflexexpressions (pmodule IN VARCHAR2, prefkey IN NUMBER, puserkey IN NUMBER, psavetodb IN NUMBER);
END flx;
/
CREATE OR REPLACE PACKAGE BODY flx
AS
PROCEDURE gettableinf (pmodule IN OUT VARCHAR2,
o_ktable OUT VARCHAR2, -- Naam kenmerk tabel
o_ktable_kdefault OUT VARCHAR2,
o_kvtable OUT VARCHAR2, -- Naam kenmerk waarden tabel
o_kvtable_refkey OUT VARCHAR2,
o_kvtable_kniveau OUT VARCHAR2,
o_kvtable_kwaarde OUT VARCHAR2,
o_kvtable_kkey OUT VARCHAR2,
o_kvtable_kdelete OUT VARCHAR2,
o_ktable_kshowexpr OUT VARCHAR2
)
AS
l_module VARCHAR2 (4);
BEGIN
l_module := pmodule;
o_kvtable_kniveau := NULL;
CASE
WHEN pmodule = 'ALG'
THEN o_kvtable := 'alg_onrgoedkenmerk';
o_kvtable_refkey := 'alg_onrgoed_key';
o_kvtable_kniveau := 'alg_onrgoed_niveau';
WHEN pmodule = 'BEZ'
THEN o_kvtable := 'bez_kenmerkwaarde';
o_kvtable_refkey := 'bez_bezoekers_key';
WHEN pmodule = 'BES'
THEN o_kvtable := 'bes_kenmerkbestell';
o_kvtable_refkey := 'bes_bestelling_key';
WHEN pmodule = 'CNT'
THEN o_kvtable := 'cnt_kenmerkcontract';
o_kvtable_refkey := 'cnt_contract_key';
WHEN pmodule = 'FAQ'
THEN o_kvtable := 'faq_kenmerkwaarde';
o_kvtable_refkey := 'fac_faq_key';
WHEN pmodule = 'FIN'
THEN o_kvtable := 'fin_kenmerkfactuur';
o_kvtable_refkey := 'fin_factuur_key';
WHEN pmodule = 'FINR'
THEN o_kvtable := 'fin_kenmerkfactregel';
o_kvtable_refkey := 'fin_factuurregel_key';
l_module := 'FIN';
WHEN pmodule = 'CIL' OR pmodule = 'SLE'
THEN o_kvtable := 'ins_kenmerkdeel';
o_kvtable_refkey := 'ins_deel_key';
WHEN pmodule = 'INS'
THEN o_kvtable := 'ins_kenmerkdeel';
o_kvtable_refkey := 'ins_deel_key';
WHEN pmodule = 'MLD'
THEN o_kvtable := 'mld_kenmerkmelding';
o_kvtable_refkey := 'mld_melding_key';
WHEN pmodule = 'OPD'
THEN o_kvtable := 'mld_kenmerkopdr';
o_kvtable_refkey := 'mld_opdr_key';
l_module := 'MLD';
WHEN pmodule = 'PRS'
THEN o_kvtable := 'prs_kenmerklink';
o_kvtable_refkey := 'prs_link_key';
o_kvtable_kniveau := 'prs_kenmerklink_niveau';
WHEN pmodule = 'RES'
THEN o_kvtable := 'res_kenmerkwaarde';
o_kvtable_refkey := 'res_rsv_ruimte_key';
END CASE;
IF l_module = 'RES'
THEN o_kvtable_kwaarde := 'res_kenmerkreservering_waarde'; -- RES is uitzondering
ELSE o_kvtable_kwaarde := o_kvtable || '_waarde';
END IF;
o_ktable := l_module || '_kenmerk';
o_ktable_kdefault := l_module || '_kenmerk_default';
o_ktable_kshowexpr := l_module || '_kenmerk_show_expr';
o_kvtable_kkey := l_module || '_kenmerk_key';
o_kvtable_kdelete := o_kvtable || '_verwijder';
END;
FUNCTION getflex (pmodule IN VARCHAR2,
p_kenmerk_key IN NUMBER,
p_ref_key IN NUMBER,
p_niveau IN VARCHAR2 DEFAULT NULL,
p_optional IN NUMBER DEFAULT 0) RETURN VARCHAR2
IS
l_sql_kenm VARCHAR2 (4500);
l_waarde VARCHAR2 (4000);
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_module VARCHAR2 (4);
BEGIN
IF p_optional = 1 AND p_ref_key IS NULL
THEN
return NULL;
END IF;
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 ' || l_kcolumnname_waarde ||
' FROM ' || l_kenmval_tablename ||
' WHERE ' || l_kcolumnname_refkey || ' = ' || p_ref_key ||
' AND ' || l_kcolumnname_kkey || ' = ' || p_kenmerk_key ||
' AND ' || l_kcolumnname_delete || ' IS NULL';
-- Merk op dat p_kenmerk_key uniek genoeg is, eigenlijk we hoeven p_niveau niet mee te nemen
-- Toch controleren we hem gewoon wel voor de tabellen die er mee werken
IF l_kcolumnname_niveau IS NOT NULL
THEN
l_sql_kenm := l_sql_kenm || ' AND ' || l_kcolumnname_niveau || ' = ''' || p_niveau || '''';
END IF;
BEGIN
EXECUTE IMMEDIATE l_sql_kenm INTO l_waarde;
RETURN l_waarde;
EXCEPTION
WHEN NO_DATA_FOUND
THEN
RETURN NULL;
END;
END;
-- Let wel: we doen alleen een insert, nooit een update
PROCEDURE setflexbijlage (p_module IN VARCHAR2,
p_kenmerk_key IN NUMBER,
p_ref_key IN NUMBER,
p_disk_directory IN VARCHAR2,
p_disk_filename IN VARCHAR2,
p_filename IN VARCHAR2,
p_file_size IN NUMBER,
p_file_date IN DATE,
p_digest IN VARCHAR2 DEFAULT NULL,
p_root_key IN NUMBER DEFAULT NULL)
AS
l_bijlagen_key fac_bijlagen.fac_bijlagen_key%TYPE;
l_disk_filename fac_bijlagen.fac_bijlagen_disk_filename%TYPE;
BEGIN
IF (p_disk_filename = p_filename) THEN
l_disk_filename := '';
ELSE
l_disk_filename := p_disk_filename;
END IF;
BEGIN
SELECT fac_bijlagen_key
INTO l_bijlagen_key
FROM fac_bijlagen
WHERE fac_bijlagen_verwijder IS NULL
AND fac_bijlagen_module = p_module
AND fac_bijlagen_refkey = p_ref_key
AND fac_bijlagen_disk_directory = p_disk_directory
AND fac_bijlagen_filename = p_filename;
UPDATE fac_bijlagen
SET fac_bijlagen_disk_filename = l_disk_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;
EXCEPTION
WHEN NO_DATA_FOUND THEN
INSERT INTO fac_bijlagen
( fac_bijlagen_module
, fac_bijlagen_refkey
, fac_bijlagen_kenmerk_key
, fac_bijlagen_disk_directory
, fac_bijlagen_disk_filename
, fac_bijlagen_filename
, fac_bijlagen_file_size
, fac_bijlagen_aanmaak
, fac_bijlagen_digest
, fac_bijlagen_root_key
) VALUES
( p_module
, p_ref_key
, p_kenmerk_key
, p_disk_directory
, l_disk_filename
, p_filename
, p_file_size
, p_file_date
, p_digest
, p_root_key
)
RETURNING fac_bijlagen_key INTO l_bijlagen_key;
END;
END;
PROCEDURE copyflexbijlage ( p_module IN VARCHAR2
, p_refkey IN NUMBER
, p_kenmerk_key IN NUMBER
, p_from_bijlagen_key IN NUMBER
)
AS
BEGIN
INSERT INTO fac_bijlagen
( fac_bijlagen_module
, fac_bijlagen_refkey
, fac_bijlagen_kenmerk_key
, fac_bijlagen_disk_directory
, fac_bijlagen_filename
, fac_bijlagen_digest
, fac_bijlagen_file_size
, fac_bijlagen_root_key
, fac_bijlagen_aanmaak
)
SELECT p_module
, p_refkey
, p_kenmerk_key
, '*see root*'
, fac_bijlagen_filename
, fac_bijlagen_digest
, fac_bijlagen_file_size
, fac_bijlagen_root_key
, fac_bijlagen_aanmaak
FROM fac_bijlagen
WHERE fac_bijlagen_key = p_from_bijlagen_key;
END;
PROCEDURE deleteflexbijlage (p_bijlagen_key IN NUMBER
,p_fileisgone IN BOOLEAN DEFAULT FALSE)
AS
v_cur_root_key NUMBER;
v_new_root_key NUMBER;
v_cur_disk_dir fac_bijlagen.fac_bijlagen_disk_directory%TYPE;
BEGIN
-- Bepaal de nieuwe root_key als het huidige record wordt verwijderd,
SELECT MIN(n1.fac_bijlagen_root_key)
, MIN(n1.fac_bijlagen_key)
, MIN(n2.fac_bijlagen_disk_directory)
INTO v_cur_root_key
, v_new_root_key
, v_cur_disk_dir
FROM fac_bijlagen n1
, fac_bijlagen n2
WHERE n1.fac_bijlagen_root_key = n2.fac_bijlagen_root_key
AND n1.fac_bijlagen_verwijder IS NULL
AND n2.fac_bijlagen_verwijder IS NULL
AND n2.fac_bijlagen_key = p_bijlagen_key
AND n1.fac_bijlagen_key <> p_bijlagen_key;
IF (v_cur_root_key <> v_new_root_key)
THEN
-- Wijzig de root_key van alle records die naar het te verwijderen record verwijzen
UPDATE fac_bijlagen
SET fac_bijlagen_root_key = v_new_root_key
WHERE fac_bijlagen_root_key = v_cur_root_key;
-- Wijzig alleen van de nieuwe root de directory
UPDATE fac_bijlagen
SET fac_bijlagen_disk_directory = v_cur_disk_dir
WHERE fac_bijlagen_key = v_new_root_key;
END IF;
--
-- Nu mag dit record verwijderd worden
IF (p_fileisgone)
THEN
IF (v_cur_root_key IS NULL AND v_new_root_key IS NULL)
THEN
-- Query heeft geen andere bijlage gevonden die de nieuwe root_key kan worden.
-- Er zijn dan geen kopieen van de bijlage, of van alle kopieen is ook de verwijderdatum gezet.
-- Verwijder eerst de kopieen met verwijderdatum.
DELETE FROM fac_bijlagen
WHERE fac_bijlagen_verwijder IS NOT NULL
AND fac_bijlagen_root_key = p_bijlagen_key;
END IF;
DELETE FROM fac_bijlagen
WHERE fac_bijlagen_key = p_bijlagen_key;
ELSE
UPDATE fac_bijlagen
SET fac_bijlagen_verwijder = SYSDATE
WHERE fac_bijlagen_key = p_bijlagen_key;
END IF;
END;
PROCEDURE deleteflexbijlage (p_module IN VARCHAR2,
p_kenmerk_key IN NUMBER,
p_ref_key IN NUMBER,
p_disk_directory IN VARCHAR2,
p_filename IN VARCHAR2)
AS
v_bijlagen_key NUMBER(10);
CURSOR c_bijlagen
IS
SELECT fac_bijlagen_key
FROM fac_bijlagen
WHERE fac_bijlagen_module = p_module
AND fac_bijlagen_disk_directory = p_disk_directory
AND fac_bijlagen_refkey = p_ref_key
AND fac_bijlagen_kenmerk_key = p_kenmerk_key
AND fac_bijlagen_verwijder IS NULL
AND fac_bijlagen_filename = p_filename;
BEGIN
FOR bijl IN c_bijlagen
LOOP
flx.deleteflexbijlage(bijl.fac_bijlagen_key);
END LOOP;
END;
PROCEDURE setflex (pmodule IN VARCHAR2,
p_kenmerk_key IN NUMBER,
p_ref_key IN NUMBER,
p_waarde IN VARCHAR2)
AS
BEGIN
setflex(pmodule, p_kenmerk_key, p_ref_key, NULL, p_waarde);
END;
PROCEDURE setflex (pmodule IN VARCHAR2,
p_kenmerk_key IN NUMBER,
p_ref_key IN NUMBER,
p_niveau IN VARCHAR2,
p_waarde IN VARCHAR2,
p_multi IN NUMBER DEFAULT 0)
AS
l_module VARCHAR2 (4);
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;
l_sql_upsert := '';
IF l_aantal_kenm = 0
THEN
IF l_kcolumnname_niveau IS NOT NULL AND p_niveau IS NOT NULL
THEN
l_niveau_col := ', ' || l_kcolumnname_niveau;
l_niveau_val := ', ''' || p_niveau || '''';
END IF;
l_sql_upsert := 'INSERT INTO ' || l_kenmval_tablename ||
' (' || l_kcolumnname_refkey ||
' , ' || l_kcolumnname_kkey ||
' , ' || l_kcolumnname_waarde ||
l_niveau_col ||
' )' ||
' VALUES (' || p_ref_key ||
' , ' || p_kenmerk_key ||
' , :p_waarde'||
l_niveau_val ||
' )';
ELSE
-- Voor p_multi zijn er geen wijzigingen!
IF (p_multi = 0) THEN
l_sql_upsert := 'UPDATE ' || l_kenmval_tablename ||
' SET ' || l_kcolumnname_waarde || ' = :p_waarde' ||
' 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 IS NOT NULL) THEN
DBMS_SQL.PARSE (l_cursor_upsert, l_sql_upsert, DBMS_SQL.native);
DBMS_SQL.BIND_VARIABLE(l_cursor_upsert, ':p_waarde', p_waarde);
l_rowsprocessed := DBMS_SQL.EXECUTE (l_cursor_upsert);
DBMS_SQL.CLOSE_CURSOR(l_cursor_upsert);
END IF;
END;
PROCEDURE deleteflex (pmodule IN VARCHAR2,
p_kenmerk_key IN NUMBER,
p_ref_key IN NUMBER,
p_niveau IN VARCHAR2,
p_waardekey IN NUMBER DEFAULT NULL)
AS
l_module VARCHAR2 (4);
l_sql_delete VARCHAR2 (4500);
l_rowsprocessed NUMBER DEFAULT 0;
l_cursor_delete INTEGER DEFAULT DBMS_SQL.open_cursor;
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 VARCHAR2 (40);
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);
-- Merk op dat p_kenmerk_key uniek genoeg is, eigenlijk we hoeven p_niveau niet mee te nemen
IF l_kcolumnname_niveau IS NOT NULL
THEN
l_niveau := ' AND ' || l_kcolumnname_niveau || ' = ''' || p_niveau || '''';
ELSE
l_niveau := '';
END IF;
l_sql_delete := 'DELETE FROM ' || l_kenmval_tablename ||
' WHERE ' || l_kcolumnname_refkey || ' = ' || p_ref_key ||
' AND ' || l_kcolumnname_kkey || ' = ' || p_kenmerk_key ||
' AND ' || l_kcolumnname_delete || ' IS NULL' ||
l_niveau;
IF (p_waardekey IS NOT NULL) THEN -- Specifieke flex-bijlage
l_sql_delete := l_sql_delete ||
' AND ' || l_kcolumnname_waarde || ' = ' || TO_CHAR(p_waardekey);
END IF;
DBMS_SQL.parse (l_cursor_delete, l_sql_delete, DBMS_SQL.native);
l_rowsprocessed := DBMS_SQL.execute (l_cursor_delete);
DBMS_SQL.close_cursor(l_cursor_delete);
END;
FUNCTION getflexexprtype (pmodule IN VARCHAR2,
p_kenmerk_key IN NUMBER) RETURN VARCHAR2
IS
l_module VARCHAR2 (4);
l_sql_expr VARCHAR2 (4500);
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_expr VARCHAR2 (4);
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);
-- Expressie opvragen uit de default waarde uit de kenmerk tabel.
l_sql_expr := 'SELECT (SUBSTR (' || l_kcolumnname_default || ', 1, 2))' ||
' FROM ' || l_kenmerk_tablename ||
' WHERE ' || l_kcolumnname_kkey || ' = ' || p_kenmerk_key;
EXECUTE IMMEDIATE l_sql_expr INTO l_expr;
IF l_expr = '##'
THEN
l_sql_expr := 'SELECT (SUBSTR (' || l_kcolumnname_default || ', 3, 4))' ||
' FROM ' || l_kenmerk_tablename ||
' WHERE ' || l_kcolumnname_kkey || ' = ' || p_kenmerk_key;
EXECUTE IMMEDIATE l_sql_expr INTO l_expr;
ELSE
l_expr := NULL;
END IF;
RETURN l_expr;
END;
FUNCTION getflexexpression (pmodule IN VARCHAR2,
p_kenmerk_key IN NUMBER) RETURN VARCHAR2
IS
l_module VARCHAR2 (4);
l_sql_expr VARCHAR2 (4500);
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_expr VARCHAR2 (4000);
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);
-- Expressie opvragen uit de default waarde uit de kenmerk tabel.
l_sql_expr := 'SELECT (SUBSTR (' || l_kcolumnname_default || ', 9))' ||
' FROM ' || l_kenmerk_tablename ||
' WHERE ' || l_kcolumnname_kkey || ' = ' || p_kenmerk_key;
EXECUTE IMMEDIATE l_sql_expr INTO l_expr;
RETURN l_expr;
END;
FUNCTION getflexshowexpr (pmodule IN VARCHAR2,
p_kenmerk_key IN NUMBER) RETURN VARCHAR2
IS
l_module VARCHAR2 (4);
l_sql_expr VARCHAR2 (4500);
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_expr VARCHAR2 (4000);
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);
-- Expressie opvragen uit de default waarde uit de kenmerk tabel.
l_sql_expr := 'SELECT (SUBSTR (' || l_kcolumnname_showexpr || ', 9))' ||
' FROM ' || l_kenmerk_tablename ||
' WHERE ' || l_kcolumnname_kkey || ' = ' || p_kenmerk_key;
EXECUTE IMMEDIATE l_sql_expr INTO l_expr;
RETURN l_expr;
END;
FUNCTION getdomeinwaarde (dkey IN NUMBER, waarde IN VARCHAR2, ignorewhenxmlnode IN NUMBER DEFAULT 0)
RETURN VARCHAR2
IS
sresult VARCHAR2 (255);
kolomnaam fac_kenmerkdomein.fac_kenmerkdomein_kolomnaam%TYPE;
kolomtxt fac_kenmerkdomein.fac_kenmerkdomein_kolomtxt%TYPE;
objectnaam fac_kenmerkdomein.fac_kenmerkdomein_objectnaam%TYPE;
xmlnode fac_kenmerkdomein.fac_kenmerkdomein_xmlnode%TYPE;
resultvalue VARCHAR2 (1000);
BEGIN
IF waarde IS NULL
THEN
resultvalue := NULL; -- gauw klaar mee
ELSE
SELECT rsk.fac_kenmerkdomein_kolomnaam,
rsk.fac_kenmerkdomein_kolomtxt,
rsk.fac_kenmerkdomein_objectnaam,
rsk.fac_kenmerkdomein_xmlnode
INTO kolomnaam,
kolomtxt,
objectnaam,
xmlnode
FROM fac_kenmerkdomein rsk
WHERE rsk.fac_kenmerkdomein_key = dkey;
IF (xmlnode IS NOT NULL AND ignorewhenxmlnode = 1)
THEN
RETURN waarde;
END IF;
-- Optimalisatie: meestal is het dezelfde query op de usrdata-tabel
-- Dan hoeven we niet te bouwen en steeds te parsen (FSN#25653)
IF kolomtxt = 'FAC_USRDATA_OMSCHR'
AND objectnaam = 'FAC_USRDATA'
AND kolomnaam = 'FAC_USRDATA_KEY'
THEN
SELECT fac_usrdata_omschr
INTO resultvalue
FROM fac_usrdata
WHERE fac_usrdata_key = fac.safe_to_number(waarde);
ELSE
sresult := 'SELECT MIN(' || kolomtxt || ') FROM ' || objectnaam || ' WHERE ' || kolomnaam || ' = :bd_waarde';
EXECUTE IMMEDIATE sresult INTO resultvalue USING waarde;
END IF;
END IF;
RETURN resultvalue;
END;
PROCEDURE evaluateflexexpressions (pmodule IN VARCHAR2, prefkey IN NUMBER, puserkey IN NUMBER, psavetodb IN NUMBER)
AS
l_module VARCHAR2 (4);
l_sql_exprval VARCHAR2 (4500);
l_rowsprocessed NUMBER DEFAULT 0;
l_cursor_exprval NUMBER; -- INTEGER DEFAULT DBMS_SQL.open_cursor;
l_desctab DBMS_SQL.desc_tab;
l_colcnt NUMBER;
l_expr VARCHAR2 (4000);
l_exprtype VARCHAR2 (4);
l_exprval VARCHAR2 (4000);
l_exprval_num NUMBER;
l_exprval_date DATE;
l_cntbind NUMBER;
l_cnt NUMBER;
l_bvar VARCHAR2 (1000);
l_rflex VARCHAR2 (1000) DEFAULT '(\:flex[0-9_]+)'; -- supports ':flex111 = ''538'''
l_kenmerkwaarde fac_kenmwaarden.fac_kenmwaarden_waarde%TYPE;
l_kenmerkw_date DATE;
l_kenmerkw_num NUMBER;
l_kenmerktype fac_kenmwaarden.fac_kenmwaarden_kenmerktype%TYPE;
l_kenmerk_key fac_kenmwaarden.fac_kenmwaarden_kenmerk_key%TYPE;
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_val VARCHAR2 (1) DEFAULT '';
CURSOR c_expressions
IS
SELECT fac_kenmwaarden_kenmerk_key,
fac_kenmwaarden_kenmerktype,
fac_kenmwaarden_kenmerklen,
fac_kenmwaarden_kenmerkdec,
fac_kenmwaarden_niveau,
fac_kenmwaarden_waarde
FROM fac_kenmwaarden
WHERE fac_kenmwaarden_module = pmodule
AND fac_kenmwaarden_refkey = prefkey
AND prs_perslid_key = puserkey
AND fac_kenmwaarden_isexpr = 1
ORDER BY fac_kenmwaarden_key;
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);
FOR expr IN c_expressions
LOOP
l_cursor_exprval := DBMS_SQL.open_cursor;
-- Expressie opvragen.
l_exprtype := flx.getflexexprtype(pmodule, expr.fac_kenmwaarden_kenmerk_key);
l_expr := flx.getflexexpression(pmodule, expr.fac_kenmwaarden_kenmerk_key);
IF l_exprtype IS NOT NULL AND l_expr IS NOT NULL
THEN
l_sql_exprval := 'SELECT ' || '(' || l_expr || ')' || ' FROM DUAL';
BEGIN
DBMS_SQL.parse (l_cursor_exprval, l_sql_exprval, DBMS_SQL.native);
EXCEPTION
WHEN OTHERS THEN
raise_application_error (
-20001,
'Error parsing flex-expression ' || pmodule || ' kenmerkkey:' || expr.fac_kenmwaarden_kenmerk_key
|| CHR(10) || SQLERRM
|| CHR(10) || l_sql_exprval
|| CHR(10) || 'Original: ' || l_expr);
END;
--DBMS_SQL.describe_columns(l_cursor_exprval, l_colcnt, l_desctab);
IF expr.fac_kenmwaarden_kenmerktype = 'N'
THEN
DBMS_SQL.define_column(l_cursor_exprval, 1, l_exprval_num);
ELSIF expr.fac_kenmwaarden_kenmerktype = 'V'
THEN
DBMS_SQL.define_column(l_cursor_exprval, 1, l_exprval_num);
ELSE
DBMS_SQL.define_column(l_cursor_exprval, 1, l_exprval, 4000);
END IF;
l_cntbind := REGEXP_COUNT (l_sql_exprval,
l_rflex,
1,
'i');
FOR l_cnt IN 1 .. l_cntbind
LOOP
l_bvar := REGEXP_SUBSTR (l_sql_exprval,
l_rflex,
1,
l_cnt,
'i');
l_kenmerk_key := TO_NUMBER (SUBSTR (l_bvar, 6));
BEGIN
SELECT fac_kenmwaarden_waarde,
fac_kenmwaarden_kenmerktype
INTO l_kenmerkwaarde,
l_kenmerktype
FROM fac_kenmwaarden
WHERE fac_kenmwaarden_module = l_module
AND fac_kenmwaarden_refkey = prefkey
AND prs_perslid_key = puserkey
AND fac_kenmwaarden_kenmerk_key = l_kenmerk_key;
EXCEPTION
WHEN NO_DATA_FOUND
THEN
l_kenmerkwaarde := NULL;
l_kenmerktype := NULL;
END;
BEGIN
-- Als <20><>n van de flexkenmerken NULL is, dan met die waarde verder rekenen. Waarde kan bewust NULL zijn
CASE l_kenmerktype
WHEN 'D'
THEN
l_kenmerkw_date := TO_DATE(l_kenmerkwaarde, 'DD-MM-YYYY');
DBMS_SQL.bind_variable (l_cursor_exprval, l_bvar, l_kenmerkw_date);
WHEN 'N'
THEN
l_kenmerkw_num := TO_NUMBER(l_kenmerkwaarde);
DBMS_SQL.bind_variable (l_cursor_exprval, l_bvar, l_kenmerkw_num);
WHEN 'V'
THEN
l_kenmerkw_num := TO_NUMBER(l_kenmerkwaarde);
DBMS_SQL.bind_variable (l_cursor_exprval, l_bvar, l_kenmerkw_num);
ELSE
DBMS_SQL.bind_variable (l_cursor_exprval, l_bvar, l_kenmerkwaarde);
END CASE;
EXCEPTION
WHEN OTHERS THEN
raise_application_error (
-20001,
'Error binding flex-expression ' || pmodule|| ' kkey:' || expr.fac_kenmwaarden_kenmerk_key
|| ' type: ' || l_kenmerktype || ' val: ' || l_kenmerkwaarde
|| CHR(10) || SQLERRM
|| CHR(10) || l_sql_exprval
|| CHR(10) || 'Original: ' || l_expr);
END;
END LOOP;
BEGIN
l_rowsprocessed := DBMS_SQL.execute_and_fetch (l_cursor_exprval);
EXCEPTION
WHEN OTHERS THEN
raise_application_error (
-20001,
'Error executing flex-expression ' || pmodule|| ' kkey:' || expr.fac_kenmwaarden_kenmerk_key
|| CHR(10) || SQLERRM
|| CHR(10) || l_sql_exprval
|| CHR(10) || 'Original: ' || l_expr);
END;
IF expr.fac_kenmwaarden_kenmerktype = 'N'
THEN
DBMS_SQL.column_value (l_cursor_exprval, 1, l_exprval_num);
l_exprval := TO_CHAR(l_exprval_num);
IF (l_exprval IS NOT NULL AND expr.fac_kenmwaarden_kenmerkdec > 0)
THEN
-- Voeg gewenst aantal decimalen toe
-- en een voorloop nul als het begint met een punt.
IF (INSTR(l_exprval,'.') = 0)
THEN
l_exprval := l_exprval || '.';
ELSIF (INSTR(l_exprval,'.') = 1)
THEN
l_exprval := '0' || l_exprval;
END IF;
l_exprval := l_exprval || RPAD('0', expr.fac_kenmwaarden_kenmerkdec, '0');
l_exprval := SUBSTR(l_exprval, 1, INSTR(l_exprval, '.') + expr.fac_kenmwaarden_kenmerkdec);
END IF;
ELSIF expr.fac_kenmwaarden_kenmerktype = 'V'
THEN
DBMS_SQL.column_value (l_cursor_exprval, 1, l_exprval_num);
l_exprval := TO_CHAR(l_exprval_num);
ELSE
DBMS_SQL.column_value (l_cursor_exprval, 1, l_exprval);
END IF;
IF l_kcolumnname_niveau IS NOT NULL
THEN
IF psavetodb = 1
THEN
-- Waarde opslaan in de database
flx.setflex (l_module, expr.fac_kenmwaarden_kenmerk_key, prefkey, expr.fac_kenmwaarden_niveau, l_exprval);
END IF;
-- Waarde van de expressie flexkenmerk in de tijdelijke kenmerk waarden tabel (fac_kenmwaarden) vullen met de nieuwe waarde.
-- Expressie flexkenmerken die afhankelijke zijn van andere expressie flexkenmerken worden dan ook goed berekend.
UPDATE fac_kenmwaarden
SET fac_kenmwaarden_waarde = l_exprval
WHERE fac_kenmwaarden_module = pmodule
AND fac_kenmwaarden_refkey = prefkey
AND fac_kenmwaarden_kenmerk_key = expr.fac_kenmwaarden_kenmerk_key
AND fac_kenmwaarden_niveau = expr.fac_kenmwaarden_niveau
AND prs_perslid_key = puserkey
AND fac_kenmwaarden_isexpr = 1;
ELSE
IF psavetodb = 1
THEN
-- Waarde opslaan in de database
flx.setflex (l_module, expr.fac_kenmwaarden_kenmerk_key, prefkey, l_exprval);
END IF;
-- Waarde van de expressie flexkenmerk in de tijdelijke kenmerk waarden tabel (fac_kenmwaarden) vullen met de nieuwe waarde.
-- Expressie flexkenmerken die afhankelijke zijn van andere expressie flexkenmerken worden dan ook goed berekend.
UPDATE fac_kenmwaarden
SET fac_kenmwaarden_waarde = l_exprval
WHERE fac_kenmwaarden_module = pmodule
AND fac_kenmwaarden_refkey = prefkey
AND fac_kenmwaarden_kenmerk_key = expr.fac_kenmwaarden_kenmerk_key
AND prs_perslid_key = puserkey
AND fac_kenmwaarden_niveau IS NULL
AND fac_kenmwaarden_isexpr = 1;
END IF;
END IF;
-- hierboven zijn ##EXPR## berekende kenmerken verwerkt
-- Nu nog eventuele ##SHOW## om voorwaardelijk zichtbaar te maken
l_expr := flx.getflexshowexpr(pmodule, expr.fac_kenmwaarden_kenmerk_key);
IF l_expr IS NOT NULL
THEN
DBMS_OUTPUT.PUT_LINE('Berekenen show-expressie voor kenmerk ' || expr.fac_kenmwaarden_kenmerk_key);
l_sql_exprval := 'SELECT CASE'
|| ' WHEN NVL (TO_CHAR(' || l_expr || '), ''0'') = ''0'''
|| ' THEN 0' -- als l_expr NULL, 0 of '0' oplevert
|| ' ELSE 1' -- alle andere waarden
|| ' END showexpr'
|| ' FROM DUAL';
BEGIN
DBMS_SQL.parse (l_cursor_exprval, l_sql_exprval, DBMS_SQL.native);
EXCEPTION
WHEN OTHERS THEN
raise_application_error (
-20001,
'Error parsing flex-expression ' || pmodule || ' kenmerkkey:' || expr.fac_kenmwaarden_kenmerk_key
|| CHR(10) || SQLERRM
|| CHR(10) || l_sql_exprval
|| CHR(10) || 'Original: ' || l_expr);
END;
--DBMS_SQL.describe_columns(l_cursor_exprval, l_colcnt, l_desctab);
DBMS_SQL.define_column(l_cursor_exprval, 1, l_exprval_num); -- onze expressie is altijd numeriek
l_cntbind := REGEXP_COUNT (l_sql_exprval,
l_rflex,
1,
'i');
FOR l_cnt IN 1 .. l_cntbind
LOOP
l_bvar := REGEXP_SUBSTR (l_sql_exprval,
l_rflex,
1,
l_cnt,
'i');
l_kenmerk_key := TO_NUMBER (SUBSTR (l_bvar, 6));
BEGIN
SELECT fac_kenmwaarden_waarde,
fac_kenmwaarden_kenmerktype
INTO l_kenmerkwaarde,
l_kenmerktype
FROM fac_kenmwaarden
WHERE fac_kenmwaarden_module = l_module
AND fac_kenmwaarden_refkey = prefkey
AND prs_perslid_key = puserkey
AND fac_kenmwaarden_kenmerk_key = l_kenmerk_key;
EXCEPTION
WHEN NO_DATA_FOUND
THEN
l_kenmerkwaarde := NULL;
l_kenmerktype := NULL;
END;
-- Als <20><>n van de flexkenmerken NULL is, dan met die waarde verder rekenen. Waarde kan bewust NULL zijn
CASE l_kenmerktype
WHEN 'D'
THEN
l_kenmerkw_date := TO_DATE(l_kenmerkwaarde, 'DD-MM-YYYY');
DBMS_SQL.bind_variable (l_cursor_exprval, l_bvar, l_kenmerkw_date);
WHEN 'N'
THEN
l_kenmerkw_num := TO_NUMBER(l_kenmerkwaarde);
DBMS_SQL.bind_variable (l_cursor_exprval, l_bvar, l_kenmerkw_num);
WHEN 'V'
THEN
l_kenmerkw_num := TO_NUMBER(l_kenmerkwaarde);
DBMS_SQL.bind_variable (l_cursor_exprval, l_bvar, l_kenmerkw_num);
ELSE
DBMS_SQL.bind_variable (l_cursor_exprval, l_bvar, l_kenmerkwaarde);
END CASE;
END LOOP;
BEGIN
l_rowsprocessed := DBMS_SQL.execute_and_fetch (l_cursor_exprval);
EXCEPTION
WHEN OTHERS THEN
raise_application_error (
-20001,
'Error executing flex-expression ' || pmodule|| ' kkey:' || expr.fac_kenmwaarden_kenmerk_key
|| CHR(10) || SQLERRM
|| CHR(10) || l_sql_exprval);
END;
DBMS_SQL.column_value (l_cursor_exprval, 1, l_exprval_num);
UPDATE fac_kenmwaarden
SET fac_kenmwaarden_exprwaarde = TO_CHAR(l_exprval_num) -- '0' of '1'
WHERE fac_kenmwaarden_module = pmodule
AND fac_kenmwaarden_refkey = prefkey
AND fac_kenmwaarden_kenmerk_key = expr.fac_kenmwaarden_kenmerk_key
AND prs_perslid_key = puserkey
AND fac_kenmwaarden_isexpr = 1;
END IF;
DBMS_SQL.close_cursor(l_cursor_exprval);
END LOOP;
END;
END flx;
/
REGISTERRUN('$Id$')

View File

@@ -27,13 +27,11 @@ AS
FUNCTION xl (pnaam IN VARCHAR2, pkey IN NUMBER, pdefault IN VARCHAR2, plang IN VARCHAR2)
RETURN VARCHAR2;
FUNCTION x (pnaam IN VARCHAR2, pkey IN NUMBER, pdefault IN VARCHAR2, pautolcl IN NUMBER DEFAULT 1)
FUNCTION x (pnaam IN VARCHAR2, pkey IN NUMBER, pdefault IN VARCHAR2)
RETURN VARCHAR2;
FUNCTION L (pnaam IN VARCHAR2, pautolcl IN NUMBER DEFAULT 0)
FUNCTION L (pnaam IN VARCHAR2)
RETURN VARCHAR2;
PROCEDURE fallback_languages;
END lcl;
/
@@ -45,26 +43,13 @@ AS
AS
userlang VARCHAR2 (10);
BEGIN
-- Cache de databasetaal in een package-global
IF fcltdblanguage IS NULL
THEN
SELECT fac_version_lang INTO fcltdblanguage FROM fac_version;
DBMS_OUTPUT.put_line ('Recaching language ' || fcltdblanguage);
END IF;
-- Bepaalt de applicatietaal van de user zoals vanuit ASP gezet
-- Links is wat Oracle teruggeeft, rechts wat ISO-639 vindt (onze keuze)
userlang := SYS_CONTEXT ('userenv', 'LANG');
RETURN CASE userlang
WHEN 'NL' THEN 'NL'
WHEN 'GB' THEN 'EN'
WHEN 'D' THEN 'DE'
WHEN 'F' THEN 'FR'
WHEN 'S' THEN 'SV'
WHEN 'N' THEN 'NO'
WHEN 'DK' THEN 'DA'
WHEN 'SF' THEN 'FI'
ELSE fcltdblanguage
WHEN 'D' THEN 'DE'
WHEN 'F' THEN 'FR'
ELSE userlang
END;
END;
@@ -72,7 +57,7 @@ AS
AS
nlslang VARCHAR2 (30);
setsql VARCHAR2 (60);
lflcode VARCHAR2 (10); -- locale kopie
lflcode VARCHAR2 (3); -- locale kopie
BEGIN
-- Zet de sessie in de juiste taal, gegeven de FACILITOR-tweeletterige taalcode
@@ -84,7 +69,7 @@ AS
INTO lflcode
FROM fac_version;
ELSE
lflcode := SUBSTR(flcode, 1, 10);
lflcode := flcode;
END IF;
@@ -103,18 +88,6 @@ AS
WHEN 'FR'
THEN
nlslang := 'FRENCH';
WHEN 'SV'
THEN
nlslang := 'SWEDISH';
WHEN 'NO'
THEN
nlslang := 'NORWEGIAN';
WHEN 'DA'
THEN
nlslang := 'DANISH';
WHEN 'FI'
THEN
nlslang := 'FINNISH';
ELSE
nlslang := 'DUTCH';
END CASE;
@@ -137,7 +110,7 @@ AS
FUNCTION xl (pnaam IN VARCHAR2, pkey IN NUMBER, pdefault IN VARCHAR2, plang IN VARCHAR2)
RETURN VARCHAR2
AS
retval fac_locale_xsl.fac_locale_xsl_tekst%TYPE;
retval VARCHAR2(2000); --fac_locale.fac_locale_tekst%TYPE;
BEGIN
BEGIN
-- language vertaling, geen dialect. Geldt voor kolommen
@@ -161,12 +134,11 @@ AS
FUNCTION x (pnaam IN VARCHAR2, pkey IN NUMBER, pdefault IN VARCHAR2, pautolcl IN NUMBER DEFAULT 1)
FUNCTION x (pnaam IN VARCHAR2, pkey IN NUMBER, pdefault IN VARCHAR2)
RETURN VARCHAR2
AS
requiredlang fac_version.fac_version_lang%TYPE;
retval fac_locale_xsl.fac_locale_xsl_tekst%TYPE;
retval VARCHAR2(2000); --fac_locale.fac_locale_tekst%TYPE;
BEGIN
-- Cache de databasetaal in een package-global
IF fcltdblanguage IS NULL
@@ -179,137 +151,32 @@ AS
IF (requiredlang = fcltdblanguage OR pkey IS NULL)
THEN
-- DBMS_OUTPUT.put_line ('Using default language ' || requiredlang);
DBMS_OUTPUT.put_line ('Using default language ' || requiredlang);
retval := pdefault;
ELSE
-- DBMS_OUTPUT.put_line ('Using notdefault language ' || requiredlang);
DBMS_OUTPUT.put_line ('Using notdefault language ' || requiredlang);
retval := lcl.xl (pnaam, pkey, pdefault, requiredlang);
END IF;
-- Voor lcl_noti_* maar verder generiek
IF pautolcl = 1 THEN
retval := lcl.L(retval, pautolcl);
END IF;
RETURN retval;
END;
-- Oracle variant van de ASP-L functie
-- Geef pautolcl=1 mee als je niet zeker weet of het een lcl is
-- Geeft de lcl zelf retour als deze niet gedefinieerd is (beter dan nodatafound)
FUNCTION l (pnaam IN VARCHAR2, pautolcl IN NUMBER DEFAULT 0)
RETURN VARCHAR2
FUNCTION L (pnaam IN VARCHAR2)
RETURN VARCHAR2
AS
retval fac_locale_xsl.fac_locale_xsl_tekst%TYPE;
retval VARCHAR2(2000); --fac_locale.fac_locale_tekst%TYPE;
BEGIN
-- Voor lcl_noti_* maar verder generiek
IF pautolcl = 1 AND pnaam NOT LIKE 'lcl_%'
THEN
RETURN pnaam;
END IF;
BEGIN
SELECT COALESCE (fac_locale_xsl_cust, fac_locale_xsl_tekst)
INTO retval
FROM fac_locale_xsl
WHERE fac_locale_xsl_lang = lcl.getuserlanguage ()
AND fac_locale_xsl_label = pnaam
AND fac_locale_xsl_module = 'ASP';
EXCEPTION
WHEN NO_DATA_FOUND
THEN
retval := pnaam;
END;
RETURN retval;
END;
PROCEDURE fallback_languages
AS
BEGIN
-- Eerst: missende LCL's aanmaken vanuit NL (die ik compleet veronderstel)
-- Eerder ggeimporteerde talen zijn mogelijk niet compleet namelijk
FOR c_lang IN (SELECT DISTINCT (fac_locale_xsl_lang) lang
FROM fac_locale_xsl
WHERE fac_locale_xsl_lang <> 'NL')
LOOP
DBMS_OUTPUT.PUT_LINE ('Updating language ' || c_lang.lang);
SELECT COALESCE(fac_locale_xsl_cust, fac_locale_xsl_tekst)
INTO retval
FROM fac_locale_xsl
WHERE fac_locale_xsl_lang = lcl.getuserlanguage ()
AND fac_locale_xsl_label = pnaam
AND fac_locale_xsl_module = 'ASP';
INSERT INTO fac_locale_xsl (fac_locale_xsl_lang,
fac_locale_xsl_module,
fac_locale_xsl_label,
fac_locale_xsl_tekst,
fac_locale_xsl_isvalid)
SELECT c_lang.lang,
fac_locale_xsl_module,
fac_locale_xsl_label,
'@@',
0
FROM fac_locale_xsl x2
WHERE fac_locale_xsl_lang = 'NL'
AND NOT EXISTS
(SELECT 1
FROM fac_locale_xsl x3
WHERE x3.fac_locale_xsl_lang = c_lang.lang
AND x2.fac_locale_xsl_label =
x3.fac_locale_xsl_label
AND x2.fac_locale_xsl_module =
x3.fac_locale_xsl_module);
END LOOP;
-- Dan: Engelstalig terugvallen op de database taal (of NL)
UPDATE fac_locale_xsl flx1
SET fac_locale_xsl_isvalid = 0,
fac_locale_xsl_tekst =
(SELECT fac_locale_xsl_tekst
FROM fac_locale_xsl flx2
WHERE flx1.fac_locale_xsl_label = flx2.fac_locale_xsl_label
AND flx1.fac_locale_xsl_module =
flx2.fac_locale_xsl_module
AND fac_locale_xsl_lang =
COALESCE((SELECT fac_version_lang FROM fac_version), 'NL'))
WHERE ( fac_locale_xsl_isvalid = 0
OR fac_locale_xsl_tekst IS NULL
OR fac_locale_xsl_tekst = '@'
OR fac_locale_xsl_tekst = '@@')
AND fac_locale_xsl_lang = 'EN';
-- Dan: Nu nog steeds missende Engelstalig echt terugvallen op NL. Altijd beter dan '@@'
UPDATE fac_locale_xsl flx1
SET fac_locale_xsl_isvalid = 0,
fac_locale_xsl_tekst =
(SELECT fac_locale_xsl_tekst
FROM fac_locale_xsl flx2
WHERE flx1.fac_locale_xsl_label = flx2.fac_locale_xsl_label
AND flx1.fac_locale_xsl_module =
flx2.fac_locale_xsl_module
AND fac_locale_xsl_lang = 'NL')
WHERE ( fac_locale_xsl_isvalid = 0
OR fac_locale_xsl_tekst IS NULL
OR fac_locale_xsl_tekst = '@'
OR fac_locale_xsl_tekst = '@@')
AND fac_locale_xsl_lang = 'EN';
-- Daarna: Alle andere talen terugvallen op Engelstalig
UPDATE fac_locale_xsl flx1
SET fac_locale_xsl_isvalid = 0,
fac_locale_xsl_tekst =
(SELECT fac_locale_xsl_tekst
FROM fac_locale_xsl flx2
WHERE flx1.fac_locale_xsl_label = flx2.fac_locale_xsl_label
AND flx1.fac_locale_xsl_module =
flx2.fac_locale_xsl_module
AND fac_locale_xsl_lang = 'EN')
WHERE ( fac_locale_xsl_isvalid = 0
OR fac_locale_xsl_tekst IS NULL
OR fac_locale_xsl_tekst = '@'
OR fac_locale_xsl_tekst = '@@')
AND fac_locale_xsl_lang NOT IN
('EN', 'NL');
-- En allerlaatst: lege teksten zijn altijd valid
UPDATE fac_locale_xsl flx1
SET fac_locale_xsl_isvalid = 1
WHERE fac_locale_xsl_tekst IS NULL;
RETURN retval;
END;
END lcl;
END lcl;
/
REGISTERRUN('$Id$')

View File

@@ -1,178 +0,0 @@
/* $Revision$
* $Id$
*/
/* FAC_PACTSK
*
* Contains all functions for tasker.
*
*/
/* Als tijdens een upgrade de PROCEDURE waittask loopt dan 'hangt' de package
recreate totdat de timeout van waittask optreedt (max 60 seconde).
Door hier even een willekeurige taak te starten eindigt waittask even
en hebben wij de kans te upgraden.
Van de PUTORDERS taak weten we dat het vrij onschuldig is als die een
keer wordt gestart zonder dat er eigenlijk iets te doen is.
In omgevingen waar de tasker niet draait zal geen fac_task record zijn
en dan doet dit statement ook niets.
*/
UPDATE fac_task
SET fac_task_nextrun = SYSDATE
WHERE fac_task_key =
(SELECT MIN (fac_task_key)
FROM fac_task tt, fac_cust tsko
WHERE tt.fac_cust_key = tsko.fac_cust_key
AND fac_cust_enabled > 0
AND BITAND (fac_task_flags, 1) = 1
AND fac_task_code = 'PUTORDERS');
-- Zodat de externe tasker het ziet:
COMMIT;
CREATE OR REPLACE PACKAGE tsk
AS
PROCEDURE registercust (p_customerid VARCHAR2 DEFAULT NULL,
p_schema VARCHAR2 DEFAULT NULL);
PROCEDURE registertask (p_taskcode VARCHAR2,
p_customerid VARCHAR2 DEFAULT NULL);
PROCEDURE starttask (p_taskcode VARCHAR2,
p_nextrun DATE DEFAULT SYSDATE,
p_customerid VARCHAR2 DEFAULT NULL);
PROCEDURE waittask (pinterval NUMBER DEFAULT 5,
ptimeout NUMBER DEFAULT 300);
END tsk;
/
CREATE OR REPLACE PACKAGE BODY tsk
AS
PROCEDURE registercust (p_customerid VARCHAR2 DEFAULT NULL,
p_schema VARCHAR2 DEFAULT NULL)
AS
tsk_master_schema VARCHAR(32);
custid fac_version.fac_version_cust%TYPE;
selfid fac_version.fac_version_cust%TYPE;
fac_schema fac_version.fac_version_schema%TYPE;
currentdb_schema VARCHAR2 (64);
tsksql VARCHAR2 (4000);
BEGIN
SELECT fac_version_cust,
fac_version_schema
INTO selfid,
fac_schema
FROM fac_version;
custid := COALESCE(p_customerid, selfid);
tsk_master_schema := fac.getsetting ('tsk_master_schema');
currentdb_schema := SYS_CONTEXT ('USERENV', 'CURRENT_SCHEMA');
IF tsk_master_schema IS NULL OR tsk_master_schema = '*SELF*' OR tsk_master_schema = currentdb_schema
THEN -- zelf oplossen
BEGIN
INSERT INTO fac_cust(fac_cust_customerid, fac_cust_schema)
VALUES(custid, COALESCE(p_schema, fac_schema));
EXCEPTION
WHEN DUP_VAL_ON_INDEX
THEN
NULL;
END;
-- Schema bijwerken
UPDATE fac_cust
SET fac_cust_schema = COALESCE(p_schema, fac_schema)
WHERE fac_cust_customerid = custid;
ELSE -- Remote register
tsksql := 'BEGIN ' || tsk_master_schema || '.tsk.registercust(:custid, :schema); END;';
EXECUTE IMMEDIATE tsksql USING selfid, fac_schema;
END IF;
END;
PROCEDURE registertask (p_taskcode VARCHAR2,
p_customerid VARCHAR2 DEFAULT NULL)
AS
tsk_master_schema VARCHAR(32);
selfid fac_version.fac_version_cust%TYPE;
tsksql VARCHAR2 (4000);
currentdb_schema VARCHAR2 (64);
BEGIN
SELECT fac_version_cust INTO selfid FROM fac_version;
tsk_master_schema := fac.getsetting ('tsk_master_schema');
currentdb_schema := SYS_CONTEXT ('USERENV', 'CURRENT_SCHEMA');
IF tsk_master_schema IS NULL OR tsk_master_schema = '*SELF*' OR tsk_master_schema = currentdb_schema
THEN -- zelf oplossen
BEGIN
INSERT INTO fac_task(fac_cust_key, fac_task_code)
SELECT fac_cust_key, p_taskcode
FROM fac_cust
WHERE fac_cust_customerid = COALESCE(p_customerid, selfid);
EXCEPTION
WHEN DUP_VAL_ON_INDEX
THEN
NULL;
END;
ELSE -- start remote tasker
tsksql := 'BEGIN ' || tsk_master_schema || '.tsk.registertask(:taskcode, :custid); END;';
EXECUTE IMMEDIATE tsksql USING p_taskcode, selfid;
END IF;
END;
-- veronderstelt dat taak al correct is geregistreerd
PROCEDURE starttask (p_taskcode VARCHAR2,
p_nextrun DATE DEFAULT SYSDATE,
p_customerid VARCHAR2 DEFAULT NULL)
AS
tsk_master_schema VARCHAR(32);
selfid fac_version.fac_version_cust%TYPE;
tsksql VARCHAR2 (4000);
currentdb_schema VARCHAR2 (64);
BEGIN
SELECT fac_version_cust INTO selfid FROM fac_version;
tsk_master_schema := fac.getsetting ('tsk_master_schema');
currentdb_schema := SYS_CONTEXT ('USERENV', 'CURRENT_SCHEMA');
IF tsk_master_schema IS NULL OR tsk_master_schema = '*SELF*' OR tsk_master_schema = currentdb_schema
THEN -- zelf oplossen
UPDATE fac_task
SET fac_task_nextrun = fac.safe_LEAST (p_nextrun, fac_task_nextrun)
WHERE fac_task_code = p_taskcode
AND fac_cust_key = (SELECT fac_cust_key
FROM fac_cust
WHERE fac_cust_customerid = COALESCE(p_customerid, selfid));
ELSE -- start remote tasker
tsksql := 'BEGIN ' || tsk_master_schema || '.tsk.starttask(:taskcode, :nextrun, :custid); END;';
EXECUTE IMMEDIATE tsksql USING p_taskcode, p_nextrun, selfid;
END IF;
END;
-- Keert terug als er iets interessants in fac_task staat
-- of als timeout is verstreken
PROCEDURE waittask (pinterval NUMBER DEFAULT 5,
ptimeout NUMBER DEFAULT 300)
AS
timeend DATE;
firsttask DATE;
BEGIN
timeend := SYSDATE + ptimeout / 60/60/24;
WHILE timeend > SYSDATE
LOOP
SELECT MIN (fac_task_nextrun)
INTO firsttask
FROM fac_task tt, fac_cust tsko
WHERE tt.fac_cust_key = tsko.fac_cust_key
AND fac_cust_enabled > 0
AND fac_task_nextrun <= SYSDATE
AND BITAND (fac_task_flags, 1) = 1;
IF firsttask <= SYSDATE
THEN
RETURN;
END IF;
DBMS_SESSION.SLEEP(pinterval); -- Dit maakt dat in de Oracle statistics allerlei timer events
-- hoog scoren in 'Top 5 Timed Events' Dat is verder niet erg.
END LOOP;
END;
END tsk;
/
-- tsk_master_schema needs:
-- GRANT EXECUTE ON tsk TO PUBLIC
REGISTERRUN('$Id$')

File diff suppressed because it is too large Load Diff

View File

@@ -24,40 +24,25 @@ CREATE SEQUENCE fac_s_fac_export_app_key MINVALUE 1;
CREATE SEQUENCE fac_s_fac_import_key MINVALUE 1;
CREATE SEQUENCE fac_s_fac_activiteit_key MINVALUE 1;
CREATE SEQUENCE fac_s_fac_setting_key MINVALUE 1;
CREATE SEQUENCE fac_s_fac_qlikview_key MINVALUE 1;
CREATE SEQUENCE fac_s_fac_tracking_key MINVALUE 1;
CREATE SEQUENCE fac_s_fac_menuitems_key MINVALUE 1;
CREATE SEQUENCE fac_s_fac_menu_key MINVALUE 1;
CREATE SEQUENCE fac_s_fac_nieuws_key MINVALUE 1;
CREATE SEQUENCE fac_s_fac_nieuws_groep_key MINVALUE 1;
CREATE SEQUENCE fac_s_fac_faq_key MINVALUE 1;
CREATE SEQUENCE fac_s_fac_locale_key MINVALUE 1;
CREATE SEQUENCE fac_s_fac_localeitems_key MINVALUE 1;
CREATE SEQUENCE fac_s_fac_locale_mgt_key MINVALUE 1;
CREATE SEQUENCE fac_s_fac_locale_xsl_key MINVALUE 1;
CREATE SEQUENCE fac_s_fac_locale_xref_key MINVALUE 1;
CREATE SEQUENCE fac_s_fac_kenmerkdomein_key MINVALUE 1;
CREATE SEQUENCE fac_s_fac_kenmwaarden_key MINVALUE 1;
CREATE SEQUENCE fac_s_fac_widget_key MINVALUE 1;
CREATE SEQUENCE fac_s_fac_widget_page_key MINVALUE 100;
CREATE SEQUENCE fac_s_fac_widget_onpage_key MINVALUE 1;
CREATE SEQUENCE fac_s_fac_note_group_key MINVALUE 1;
CREATE SEQUENCE fac_s_fac_code2label_key MINVALUE 1;
CREATE SEQUENCE imp_s_imp_log_key MINVALUE 1;
CREATE SEQUENCE fac_s_imp_csv_key MINVALUE 1;
CREATE SEQUENCE fac_s_fac_api_key MINVALUE 1;
CREATE SEQUENCE fac_s_fac_audit_key MINVALUE 1;
CREATE SEQUENCE fac_s_fac_auditfail_key MINVALUE 1;
CREATE SEQUENCE faq_s_faq_kenmerk_key MINVALUE 1;
CREATE SEQUENCE faq_s_faq_kenmerkwaarde_key MINVALUE 1;
CREATE SEQUENCE faq_s_fac_gui_counter_key MINVALUE 1;
CREATE SEQUENCE fac_s_fac_email_setting_key MINVALUE 1;
CREATE SEQUENCE fac_s_fac_bookmark_key MINVALUE 1;
CREATE SEQUENCE fac_s_fac_session_key MINVALUE 1;
CREATE SEQUENCE fac_s_fac_sequence_key MINVALUE 1;
CREATE SEQUENCE fac_s_fac_bijlagen_key MINVALUE 1;
CREATE SEQUENCE fac_s_fac_layout_key MINVALUE 100;
CREATE SEQUENCE fac_s_fac_cust_key MINVALUE 1;
CREATE SEQUENCE fac_s_fac_task_key MINVALUE 1;
-- CREATE SEQUENCE fac_s_fac_queue_key MINVALUE 1;
-- Some free to use sequence to generate unique and sequential numbers
-- with custom procedures like exports or invoicing

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -4,21 +4,21 @@
*
*/
CREATE_TRIGGER(fac_t_fac_functie_B_I)
BEFORE INSERT ON fac_functie
#define FAC_ERROR_CODE -20999
CREATE_TRIGGER(fac_t_fac_error_B_IU)
BEFORE INSERT OR UPDATE ON fac_error
FOR EACH ROW
BEGIN
APPLICATION_ERROR(FAC_ERROR_CODE, '');
END;
/
CREATE_TRIGGER(fac_t_fac_functie_B_IU)
BEFORE INSERT OR UPDATE ON fac_functie
FOR EACH ROW
BEGIN
UPDATE_PRIMARY_KEY(fac_functie_key, fac_s_fac_functie_key);
:new.fac_functie_volgnr :=
CASE
WHEN SUBSTR (:new.fac_functie_code, 8, 3) IN ('USE', 'FOF', 'BOF')
AND SUBSTR (:new.fac_functie_code, 5, 3) <> 'UUR'
THEN 250
WHEN SUBSTR (:new.fac_functie_code, 8, 3) IN ('BAC', 'MAN')
THEN 500
WHEN SUBSTR (:new.fac_functie_code, 8, 3) IN ('BO2', 'BO3', 'AFR', 'NOS', 'OAP')
THEN 750
END;
END;
/
@@ -28,6 +28,7 @@ FOR EACH ROW
BEGIN
UPDATE_PRIMARY_KEY(fac_groep_key, fac_s_fac_groep_key);
:new.fac_groep_upper := UPPER(:new.fac_groep_omschrijving);
:new.fac_groep_aanmaak := SYSDATE;
END;
/
@@ -39,29 +40,6 @@ BEGIN
END;
/
AUDIT_BEGIN(fac_gebruikersgroep)
AUDIT_VALUE(fac_gebruikersgroep, fac_groep_key)
AUDIT_VALUE(fac_gebruikersgroep, prs_perslid_key)
AUDIT_END()
CREATE_TRIGGER(fac_t_fac_email_setting_B_IU)
BEFORE INSERT OR UPDATE ON fac_email_setting
FOR EACH ROW
BEGIN
UPDATE_PRIMARY_KEY(fac_email_setting_key, fac_s_fac_email_setting_key);
END;
/
AUDIT_BEGIN(fac_groeprechten)
AUDIT_VALUE(fac_groeprechten, fac_groep_key)
AUDIT_VALUE(fac_groeprechten, fac_functie_key)
AUDIT_VALUE(fac_groeprechten, ins_discipline_key)
AUDIT_VALUE(fac_groeprechten, fac_gebruiker_alg_level_read)
AUDIT_VALUE(fac_groeprechten, fac_gebruiker_prs_level_read)
AUDIT_VALUE(fac_groeprechten, fac_gebruiker_alg_level_write)
AUDIT_VALUE(fac_groeprechten, fac_gebruiker_prs_level_write)
AUDIT_END()
CREATE_TRIGGER(fac_t_fac_groeprechten_B_IU)
BEFORE INSERT OR UPDATE ON fac_groeprechten
FOR EACH ROW
@@ -159,7 +137,7 @@ BEGIN
-- Omdat de ASP dit voorkomt, is dit een error als vangnet
IF keepit = 1 AND (:new.fac_gebruiker_prs_level_read = 9 OR :new.fac_gebruiker_alg_level_read = 9)
THEN
raise_application_error(-20001, 'FAC_MGG1 this is insufficient authorisation for this right');
raise_application_error (-20000, 'FAC_MGG1 this is insufficient authorisation for this right');
END IF;
IF keepit = 0 THEN
Dummy := fac.remember_SavePrimaryKey('FAC_GROEPRECHTEN',:new.fac_groeprechten_key);
@@ -190,15 +168,6 @@ BEGIN
END;
/
CREATE_TRIGGER(fac_t_fac_version_B_IU)
BEFORE INSERT OR UPDATE ON fac_version
FOR EACH ROW
BEGIN
:new.fac_version_cust := UPPER(:new.fac_version_cust);
:new.fac_version_group := UPPER(:new.fac_version_group);
END;
/
CREATE_TRIGGER(fac_t_fac_message_B_IU)
BEFORE INSERT OR UPDATE ON fac_message
FOR EACH ROW
@@ -207,29 +176,13 @@ BEGIN
END;
/
CREATE_TRIGGER(fac_t_fac_usrtab_B_I)
BEFORE INSERT ON fac_usrtab
FOR EACH ROW
BEGIN
UPDATE_PRIMARY_KEY(fac_usrtab_key, fac_s_fac_usrtab_key);
UPDATE_AANMAAKDATUM(fac_usrtab, fac_usrtab_aanmaak);
END;
/
CREATE_TRIGGER(fac_t_fac_usrtab_B_IU)
BEFORE INSERT OR UPDATE ON fac_usrtab
FOR EACH ROW
BEGIN
UPDATE_PRIMARY_KEY(fac_usrtab_key, fac_s_fac_usrtab_key);
:new.fac_usrtab_object := 'USR_'||UPPER(:new.fac_usrtab_naam);
END;
/
CREATE_TRIGGER(fac_t_fac_usrdata_B_I)
BEFORE INSERT ON fac_usrdata
FOR EACH ROW
BEGIN
UPDATE_PRIMARY_KEY(fac_usrdata_key, fac_s_fac_usrdata_key);
UPDATE_AANMAAKDATUM(fac_usrdata, fac_usrdata_aanmaak);
UPDATE_AANMAAKDATUM(fac_usrtab, fac_usrtab_aanmaak);
END;
/
@@ -237,7 +190,9 @@ CREATE_TRIGGER(fac_t_fac_usrdata_B_IU)
BEFORE INSERT OR UPDATE ON fac_usrdata
FOR EACH ROW
BEGIN
UPDATE_PRIMARY_KEY(fac_usrdata_key, fac_s_fac_usrdata_key);
:new.fac_usrdata_upper := UPPER(:new.fac_usrdata_code);
UPDATE_AANMAAKDATUM(fac_usrdata, fac_usrdata_aanmaak);
END;
/
@@ -292,10 +247,6 @@ BEGIN
END;
/
AUDIT_BEGIN(fac_profiel)
AUDIT_VALUE(fac_profiel, fac_profiel_omschrijving)
AUDIT_VALUE(fac_profiel, fac_profiel_limiet)
AUDIT_END()
CREATE_TRIGGER(fac_t_fac_profiel_B_IU)
BEFORE INSERT OR UPDATE ON fac_profiel
@@ -305,12 +256,6 @@ BEGIN
END;
/
AUDIT_BEGIN(fac_profielwaarde)
AUDIT_VALUE(fac_profielwaarde, fac_profiel_key)
AUDIT_VALUE(fac_profielwaarde, fac_profielwaarde_limiet)
AUDIT_VALUE(fac_profielwaarde, ins_discipline_key)
AUDIT_END()
CREATE_TRIGGER(fac_t_fac_profielwaarde_B_IU)
BEFORE INSERT OR UPDATE ON fac_profielwaarde
FOR EACH ROW
@@ -327,6 +272,14 @@ BEGIN
END;
/
CREATE_TRIGGER(fac_t_fac_notificatie_B_IU)
BEFORE INSERT OR UPDATE ON fac_notificatie
FOR EACH ROW
BEGIN
UPDATE_PRIMARY_KEY(fac_notificatie_key, fac_s_fac_notificatie_key);
END;
/
CREATE_TRIGGER(fac_t_fac_notificatie_B_I)
BEFORE INSERT
ON fac_notificatie
@@ -334,18 +287,10 @@ CREATE_TRIGGER(fac_t_fac_notificatie_B_I)
DECLARE
loms web_user_messages.web_user_mess_dsc%TYPE;
lxmlnode fac_srtnotificatie.fac_srtnotificatie_xmlnode%TYPE;
lparamkey web_user_messages.web_user_mess_action_params%TYPE;
realuser VARCHAR(64);
BEGIN
UPDATE_PRIMARY_KEY(fac_notificatie_key, fac_s_fac_notificatie_key);
dbms_application_info.read_client_info (:NEW.fac_notificatie_realuser); -- is gezet achteraan m_connections.inc, wordt opgepikt door putorders
-- Kopieer direct naar statusinformatie op de portal indien van toepassing
-- Daarbij worden alle oude berichten (eerst) verwijderd
IF BITAND (:NEW.fac_notificatie_status, 1) = 1
AND :new.prs_perslid_key_receiver IS NOT NULL
AND :new.fac_notificatie_queue = 'DEFAULT'
IF BITAND (:NEW.fac_notificatie_status, 1) = 1 AND :new.prs_perslid_key_receiver IS NOT NULL
THEN
-- strip zodat we alleen de eerste regel overhouden
loms := SUBSTR(:NEW.fac_notificatie_oms, 1, 512);
@@ -355,13 +300,6 @@ BEGIN
IF INSTR (loms, chr(10)) > 0 THEN
loms := SUBSTR (loms, 1, INSTR (loms, chr(10)) -1);
END IF;
IF INSTR (loms, '<br>') > 0 THEN
loms := SUBSTR (loms, 1, INSTR (loms, '<br>') -1);
END IF;
-- meestal is dit de doorklik-key
lparamkey := COALESCE (:new.fac_notificatie_extrakey, :new.fac_notificatie_refkey);
-- Verwijder oudere (achterhaalde) portalberichten over hetzelfde
IF :NEW.fac_srtnotificatie_key IS NOT NULL
THEN
@@ -370,55 +308,35 @@ BEGIN
FROM fac_srtnotificatie
WHERE fac_srtnotificatie_key = :NEW.fac_srtnotificatie_key;
-- de optionele tracking-key is geen goede doorklik-key voor melding/opdracht
IF lxmlnode IN ('melding', 'opdracht')
THEN
lparamkey := :new.fac_notificatie_refkey;
END IF;
DELETE FROM web_user_messages
WHERE fac_srtnotificatie_key IN
(SELECT fac_srtnotificatie_key
FROM fac_srtnotificatie
WHERE fac_srtnotificatie_xmlnode = lxmlnode)
AND prs_perslid_key_receiver = :NEW.prs_perslid_key_receiver
AND web_user_mess_action_params = lparamkey;
AND web_user_mess_action_params = COALESCE (:NEW.fac_notificatie_extrakey, :NEW.fac_notificatie_refkey);
END IF;
-- En voeg de nieuwe toe. Let op: als een extrakey bekend is, wordt die als parameter gebruikt, anders gewoon refkey
INSERT INTO web_user_messages
(prs_perslid_key_sender, prs_perslid_key_receiver, web_user_mess_dsc, web_user_mess_action_status,
web_user_mess_action_params, fac_srtnotificatie_key, web_user_mess_prioriteit
)
VALUES (:NEW.prs_perslid_key_sender, :NEW.prs_perslid_key_receiver, loms, 1,
lparamkey, :NEW.fac_srtnotificatie_key,
COALESCE (:NEW.fac_notificatie_extrakey, :NEW.fac_notificatie_refkey), :NEW.fac_srtnotificatie_key,
:NEW.fac_notificatie_prioriteit
);
END IF;
-- Always clear the notify_to_statinfo bit, even when no :new.prs_perslid_key_receiver
:NEW.fac_notificatie_status := BITAND (:NEW.fac_notificatie_status, 255 - 1);
:NEW.fac_notificatie_queue:=UPPER(:NEW.fac_notificatie_queue);
END;
/
CREATE_TRIGGER(fac_t_fac_notificatie_A_IU)
AFTER INSERT OR UPDATE
ON fac_notificatie
FOR EACH ROW
CREATE_TRIGGER(fac_t_fac_notificatie_A_U)
AFTER UPDATE ON fac_notificatie
BEGIN
IF INSERTING OR UPDATING ('fac_notificatie_notbefore')
THEN
IF BITAND(:NEW.fac_notificatie_status, 2 + 4 + 32) > 0 -- Alleen EMAIL, SMS of APPPUSH
OR :NEW.prs_bedrijfadres_key IS NOT NULL
OR :NEW.fac_notificatie_systeemadres IS NOT NULL
THEN
tsk.starttask(p_taskcode => 'PUTORDERS', p_nextrun => :NEW.fac_notificatie_notbefore);
ELSIF :NEW.fac_notificatie_queue = 'EXCHANGE'
THEN
tsk.starttask(p_taskcode => 'EXCHANGE', p_nextrun => :NEW.fac_notificatie_notbefore);
END IF;
END IF;
-- Ruim alle totaal verwerkte notificaties op.
DELETE FROM fac_notificatie WHERE fac_notificatie_status=0 AND fac_notificatie_systeemadres IS NULL;
END;
/
@@ -428,7 +346,6 @@ FOR EACH ROW
BEGIN
UPDATE_PRIMARY_KEY(fac_notificatie_job_key, fac_s_fac_notificatie_job_key);
:new.fac_notificatie_job_view:=UPPER(:new.fac_notificatie_job_view);
:new.fac_notificatie_job_queue:=UPPER(:new.fac_notificatie_job_queue);
END;
/
@@ -464,14 +381,6 @@ BEGIN
END;
/
CREATE_TRIGGER(fac_t_imp_csv_B_I)
BEFORE INSERT ON fac_imp_csv
FOR EACH ROW
BEGIN
UPDATE_PRIMARY_KEY(fac_imp_csv_key, fac_s_imp_csv_key);
END;
/
CREATE_TRIGGER(imp_t_notificatie_imp_log)
AFTER INSERT
ON imp_log
@@ -481,8 +390,6 @@ BEGIN
scode fac_srtnotificatie.fac_srtnotificatie_code%TYPE;
smode fac_srtnotificatie.fac_srtnotificatie_mode%TYPE;
sappl imp_log.imp_log_applicatie%TYPE;
pkey prs_perslid.prs_perslid_key%TYPE;
l_naam_friendly prs_v_perslid_fullnames_all.prs_perslid_naam_friendly%TYPE;
BEGIN
IF :NEW.imp_log_status = 'F'
THEN
@@ -516,22 +423,7 @@ BEGIN
AND fi.fac_import_key = :NEW.fac_import_key;
END IF;
l_naam_friendly := ''; -- 'User unknown'
pkey := fac.safe_to_number(sys_context('USERENV', 'CLIENT_IDENTIFIER'));
IF pkey > 0 THEN
BEGIN
SELECT prs_perslid_naam_friendly
INTO l_naam_friendly
FROM prs_v_perslid_fullnames_all
WHERE prs_perslid_key = pkey;
l_naam_friendly := ' (' || l_naam_friendly || ', key ' || pkey || ')';
EXCEPTION
WHEN NO_DATA_FOUND -- for putorders a.o. this is unknown
THEN l_naam_friendly := '??Perslid ' || pkey || ' not found ??';
END;
END IF;
fac.putsystemnotification (sappl||': '||:NEW.imp_log_omschrijving || ' ' || l_naam_friendly, smode);
fac.putsystemnotification (sappl||': '||:NEW.imp_log_omschrijving, smode);
END IF;
END;
END;
@@ -546,10 +438,6 @@ BEGIN
END;
/
AUDIT_BEGIN(fac_setting)
AUDIT_VALUE(fac_setting, fac_setting_pvalue)
AUDIT_END()
CREATE_TRIGGER(fac_t_fac_setting_B_IU)
BEFORE INSERT or UPDATE ON fac_setting
FOR EACH ROW
@@ -569,7 +457,6 @@ BEGIN
-- Het kan geen kwaad om wijzigingen te tracken
IF :new.fac_setting_datum <> :old.fac_setting_datum
THEN
:new.prs_perslid_key := sys_context('USERENV', 'CLIENT_IDENTIFIER');
INSERT INTO adm_tracking (adm_tracking_name, adm_tracking_revision, adm_tracking_osuser)
VALUES (SUBSTR('S('||:new.fac_setting_name||')', 1, 60),
SUBSTR(:new.fac_setting_pvalue, 1, 60),
@@ -579,64 +466,31 @@ BEGIN
END;
/
-- Door de COMPOUND TRIGGER kunnen we notifytrackingbedrijven doen in de AFTER STATEMENT
-- met alleen de newkey als parameter. Dat kan omdat bij mijn weten er eigenlijk
-- nooit een insert into meerdere FAC_TRACKING records is in een enkel statement
CREATE_TRIGGER(fac_t_fac_qlikview_b_iu)
BEFORE INSERT OR UPDATE ON fac_qlikview
FOR EACH ROW
BEGIN
UPDATE_PRIMARY_KEY(fac_qlikview_key, fac_s_fac_qlikview_key);
UPDATE_AANMAAKDATUM(fac_qlikview, fac_qlikview_aanmaak);
END;
/
CREATE_TRIGGER(fac_t_fac_tracking_b_i)
FOR INSERT
ON fac_tracking
COMPOUND TRIGGER
newkey fac_tracking.fac_tracking_key%TYPE;
srtkey fac_tracking.fac_srtnotificatie_key%TYPE;
refkey fac_tracking.fac_tracking_refkey%TYPE;
omschr fac_tracking.fac_tracking_oms%TYPE;
prskey fac_tracking.prs_perslid_key%TYPE;
notify_bedrijven BOOLEAN := FALSE;
BEFORE EACH ROW
IS
BEGIN
UPDATE_PRIMARY_KEY(fac_tracking_key, fac_s_fac_tracking_key);
IF newkey IS NOT NULL THEN
raise_application_error(-20001, 'Unexpected multi-insert of fac_tracking'); -- for safety
END IF;
-- dit event moet mogelijk ook actief worden genotificeerd,
-- dat kan expliciet worden onderdrukt door de omschrijving te prefixen met een # of @
IF SUBSTR(:new.fac_tracking_oms, 1, 1) = '#'
THEN
-- bedoeld om te onderdrukken, maar moeten we wel weer verwijderen
:new.fac_tracking_oms := SUBSTR(:new.fac_tracking_oms, 2);
-- En nu dus niet notificeren
NULL;
ELSIF SUBSTR(:new.fac_tracking_oms, 1, 1) = '@' -- Technische adressen niet notificeren, wel personen
THEN
:new.fac_tracking_oms := SUBSTR(:new.fac_tracking_oms, 2);
newkey := :new.fac_tracking_key;
ELSE
newkey := :new.fac_tracking_key;
notify_bedrijven := TRUE;
-- Alleen hier ook fac.notifytrackingbedrijven uitvoeren
END IF;
srtkey := :new.fac_srtnotificatie_key;
refkey := :new.fac_tracking_refkey;
prskey := :new.prs_perslid_key;
omschr := :new.fac_tracking_oms;
END BEFORE EACH ROW;
AFTER STATEMENT
IS
BEGIN
IF newkey IS NOT NULL
THEN
fac.notifytracking(srtkey, prskey, omschr, refkey, newkey);
IF notify_bedrijven
THEN
fac.notifytrackingbedrijven (newkey);
END IF;
END IF;
END AFTER STATEMENT;
BEFORE INSERT ON fac_tracking
FOR EACH ROW
BEGIN
UPDATE_PRIMARY_KEY(fac_tracking_key, fac_s_fac_tracking_key);
-- dit event moet mogelijk ook actief worden genotificeerd,
-- dat kan expliciet worden onderdrukt door de omschrijving te prefixen met een #
IF SUBSTR(:new.fac_tracking_oms, 1, 1) = '#'
THEN
-- bedoeld om te onderdrukken, maar moeten we wel weer verwijderen
:new.fac_tracking_oms := SUBSTR(:new.fac_tracking_oms, 2);
-- Moet ik nou nog iets doen om NULL te maken als dit alleen de # was?
-- En nu dus niet tracken
ELSE
fac.notifytracking(:new.fac_srtnotificatie_key, :new.prs_perslid_key, :new.fac_tracking_oms, :new.fac_tracking_refkey);
END IF;
END;
/
@@ -655,13 +509,6 @@ BEGIN
UPDATE_PRIMARY_KEY(fac_menu_key, fac_s_fac_menu_key);
END;
/
CREATE_TRIGGER(fac_t_fac_nieuws_groep_b_iu)
BEFORE INSERT OR UPDATE ON fac_nieuws_groep
FOR EACH ROW
BEGIN
UPDATE_PRIMARY_KEY(fac_nieuws_groep_key, fac_s_fac_nieuws_groep_key);
END;
/
CREATE_TRIGGER(fac_t_fac_nieuws__b_iu)
BEFORE INSERT OR UPDATE ON fac_nieuws
FOR EACH ROW
@@ -674,7 +521,6 @@ BEFORE INSERT OR UPDATE ON fac_faq
FOR EACH ROW
BEGIN
UPDATE_PRIMARY_KEY(fac_faq_key, fac_s_fac_faq_key);
:new.fac_faq_wijzigdatum := SYSDATE;
END;
/
CREATE_TRIGGER(fac_t_fac_locale_b_iu)
@@ -694,6 +540,14 @@ BEGIN
:new.fac_localeitems_dialect_id := UPPER (:new.fac_localeitems_dialect_id);
END;
/
CREATE_TRIGGER(fac_t_fac_locale_mgt_b_iu)
BEFORE INSERT OR UPDATE ON fac_locale_mgt
FOR EACH ROW
BEGIN
UPDATE_PRIMARY_KEY(fac_locale_mgt_key, fac_s_fac_locale_mgt_key);
:new.fac_locale_mgt_lang := UPPER (:new.fac_locale_mgt_lang);
END;
/
CREATE_TRIGGER(fac_t_fac_locale_xsl_b_iu)
BEFORE INSERT OR UPDATE ON fac_locale_xsl
FOR EACH ROW
@@ -735,7 +589,7 @@ BEGIN
IF objecttype IS NULL
THEN
raise_application_error(-20001, 'FAC_MXX3 Invalid object');
raise_application_error (-20000, 'FAC_MXX3 Invalid object');
ELSIF objecttype IN ('TABLE', 'VIEW')
THEN
DECLARE
@@ -750,7 +604,7 @@ BEGIN
EXCEPTION
WHEN NO_DATA_FOUND
THEN
raise_application_error(-20000, 'ALG_M236');
raise_application_error (-20000, 'ALG_M236');
END;
DECLARE
@@ -765,50 +619,25 @@ BEGIN
EXCEPTION
WHEN NO_DATA_FOUND
THEN
raise_application_error(-20000, 'ALG_M237');
raise_application_error (-20000, 'ALG_M237');
END;
ELSIF objecttype <> 'SYNONYM'
THEN
raise_application_error(-20000, 'ALG_M235');
raise_application_error (-20000, 'ALG_M235');
END IF;
END;
/
CREATE_TRIGGER(fac_t_fac_kenmwaarden_B_IU)
BEFORE INSERT OR UPDATE ON fac_kenmwaarden
FOR EACH ROW
BEGIN
UPDATE_PRIMARY_KEY(fac_kenmwaarden_key, fac_s_fac_kenmwaarden_key);
END;
/
CREATE_TRIGGER(fac_t_fac_widget_B_IU)
BEFORE INSERT OR UPDATE ON fac_widget
FOR EACH ROW
BEGIN
UPDATE_PRIMARY_KEY(fac_widget_key, fac_s_fac_widget_key);
:new.fac_widget_type := UPPER(:new.fac_widget_type);
UPDATE_AANMAAKDATUM(fac_widget, fac_widget_aanmaak);
END;
/
CREATE_TRIGGER(fac_t_fac_widget_page_B_I)
BEFORE INSERT ON fac_widget_page
FOR EACH ROW
BEGIN
UPDATE_PRIMARY_KEY(fac_widget_page_key, fac_s_fac_widget_page_key);
END;
/
CREATE_TRIGGER(fac_t_fac_widget_onpage_B_I)
BEFORE INSERT ON fac_widget_onpage
FOR EACH ROW
BEGIN
UPDATE_PRIMARY_KEY(fac_widget_onpage_key, fac_s_fac_widget_onpage_key);
END;
/
CREATE_TRIGGER(fac_t_fac_code2label_B_IU)
BEFORE INSERT OR UPDATE ON fac_code2label
FOR EACH ROW
@@ -825,22 +654,6 @@ BEGIN
END;
/
CREATE_TRIGGER(fac_t_fac_audit_b_i)
BEFORE INSERT ON fac_audit
FOR EACH ROW
BEGIN
UPDATE_PRIMARY_KEY(fac_audit_key, fac_s_fac_audit_key);
END;
/
CREATE_TRIGGER(fac_t_fac_auditfail_b_i)
BEFORE INSERT ON fac_auditfail
FOR EACH ROW
BEGIN
UPDATE_PRIMARY_KEY(fac_auditfail_key, fac_s_fac_auditfail_key);
END;
/
CREATE_TRIGGER(faq_t_faq_kenmerkwaarde_b_iu)
BEFORE INSERT OR UPDATE ON faq_kenmerkwaarde
FOR EACH ROW
@@ -885,7 +698,7 @@ BEGIN
WHERE faq_kenmerk_key = :new.faq_kenmerk_key;
EXCEPTION
WHEN NO_DATA_FOUND
THEN raise_application_error(-20000,'INS_R_INS_KENMERK_KEY1');
THEN APPLICATION_ERROR_GOTO(-20000,'INS_R_INS_KENMERK_KEY1');
END;
/* Kijk welk KenmerkType gebruikt wordt.
@@ -901,7 +714,7 @@ BEGIN
*/
IF LENGTH(KenmerkWaarde) > KenmerkLengte
THEN
APPLICATION_ERROR_GOTO(-20004, 'faq_m232,'|| KenmerkOmschr ||','
APPLICATION_ERROR(-20004, 'faq_m232,'|| KenmerkOmschr ||','
|| TO_CHAR(KenmerkLengte));
END IF;
ELSIF KenmerkType = 'N'
@@ -929,7 +742,7 @@ BEGIN
THEN FormatMask := REPLACE(FormatMask, '9', '#');
FormatMask := REPLACE(FormatMask, '0', '#');
FormatMask := REPLACE(FormatMask, 'D', '.');
APPLICATION_ERROR_GOTO(-20004,'faq_m233,'|| KenmerkOmschr ||','
RAISE_APPLICATION_ERROR(-20004,'faq_m233,'|| KenmerkOmschr ||','
|| FormatMask);
END;
/*
@@ -982,19 +795,19 @@ BEFORE INSERT OR UPDATE ON faq_kenmerk
FOR EACH ROW
BEGIN
UPDATE_PRIMARY_KEY(faq_kenmerk_key, faq_s_faq_kenmerk_key);
UPDATE_UPPER(faq_kenmerk_omschrijving, faq_kenmerk_upper, faq_kenmerk);
UPDATE_UPPER(faq_kenmerk_code, faq_kenmerk_code, faq_kenmerk);
UPDATE_UPPER(faq_kenmerk_omschrijving, faq_kenmerk_upper,faq_kenmerk);
IF (:new.faq_kenmerk_verwijder IS NOT NULL AND :old.faq_kenmerk_verwijder IS NULL AND
:new.faq_kenmerk_systeem = 1)
THEN
raise_application_error(-20000, 'faq_m238');
APPLICATION_ERROR(-20003, 'faq_m238');
END IF;
IF :new.faq_kenmerk_kenmerktype IN ('C','N') AND :new.faq_kenmerk_lengte IS NULL
IF (:new.faq_kenmerk_kenmerktype IN ('C','N'))
AND :new.faq_kenmerk_lengte IS NULL
THEN
raise_application_error(-20000, 'FAQ_C_FAQ_KENMERK_LENGTE');
APPLICATION_ERROR(-20000, 'FAQ_C_FAQ_KENMERK_LENGTE');
END IF;
IF :new.faq_kenmerk_kenmerktype = 'N' AND :new.faq_kenmerk_lengte > 20
IF :new.faq_kenmerk_kenmerktype = 'N'
AND :new.faq_kenmerk_lengte > 20
THEN
:new.faq_kenmerk_lengte := 20;
END IF;
@@ -1015,12 +828,12 @@ BEGIN
WHERE faq_kenmerk_key = :old.faq_kenmerk_key
AND FAC.SAFE_TO_NUMBER(faq_kenmerkwaarde_waarde) < :new.faq_kenmerk_nmin
AND rownum=1);
raise_application_error(-20000, 'FAQ_C_FAQ_KENMERK_MIN');
APPLICATION_ERROR(-20000, 'FAQ_C_FAQ_KENMERK_MIN');
EXCEPTION
WHEN NO_DATA_FOUND
THEN NULL;
WHEN TOO_MANY_ROWS THEN
raise_application_error(-20000, 'FAQ_C_FAQ_KENMERK_MIN');
APPLICATION_ERROR(-20000, 'FAQ_C_FAQ_KENMERK_MIN');
END;
END IF;
IF :old.faq_kenmerk_nmax <> :new.faq_kenmerk_nmax OR
@@ -1038,13 +851,13 @@ BEGIN
WHERE faq_kenmerk_key = :old.faq_kenmerk_key
AND FAC.SAFE_TO_NUMBER(faq_kenmerkwaarde_waarde) > :new.faq_kenmerk_nmax
AND rownum=1);
raise_application_error(-20000, 'FAQ_C_FAQ_KENMERK_MAX');
APPLICATION_ERROR(-20000, 'FAQ_C_FAQ_KENMERK_MAX');
EXCEPTION
WHEN NO_DATA_FOUND
THEN NULL;
WHEN TOO_MANY_ROWS THEN
BEGIN
raise_application_error(-20000, 'FAQ_C_FAQ_KENMERK_MAX');
APPLICATION_ERROR(-20000, 'FAQ_C_FAQ_KENMERK_MAX');
END;
END;
END IF;
@@ -1061,95 +874,4 @@ BEGIN
END;
/
CREATE_TRIGGER(fac_t_fac_bookmark_B_I)
BEFORE INSERT ON fac_bookmark
FOR EACH ROW
BEGIN
UPDATE_PRIMARY_KEY(fac_bookmark_key, fac_s_fac_bookmark_key);
END;
/
CREATE_TRIGGER(fac_t_fac_session_B_I)
BEFORE INSERT ON fac_session
FOR EACH ROW
BEGIN
UPDATE_PRIMARY_KEY(fac_session_key, fac_s_fac_session_key);
END;
/
CREATE_TRIGGER(fac_t_fac_sequence_B_I)
BEFORE INSERT ON fac_sequence
FOR EACH ROW
BEGIN
UPDATE_PRIMARY_KEY(fac_sequence_key, fac_s_fac_sequence_key);
END;
/
CREATE_TRIGGER(fac_t_fac_bijlagen_B_I)
BEFORE INSERT ON fac_bijlagen
FOR EACH ROW
BEGIN
UPDATE_PRIMARY_KEY(fac_bijlagen_key, fac_s_fac_bijlagen_key);
IF :new.fac_bijlagen_root_key IS NULL THEN
:new.fac_bijlagen_root_key := :new.fac_bijlagen_key;
END IF;
END;
/
CREATE_TRIGGER(fac_t_fac_layout_B_I)
BEFORE INSERT ON fac_layout
FOR EACH ROW
BEGIN
UPDATE_PRIMARY_KEY(fac_layout_key, fac_s_fac_layout_key);
END;
/
CREATE_TRIGGER(fac_t_fac_cust_B_I)
BEFORE INSERT ON fac_cust
FOR EACH ROW
BEGIN
UPDATE_PRIMARY_KEY(fac_cust_key, fac_s_fac_cust_key);
END;
/
CREATE_TRIGGER(fac_t_fac_cust_B_IU)
BEFORE INSERT OR UPDATE ON fac_cust
FOR EACH ROW
BEGIN
:new.fac_cust_customerid := UPPER(:new.fac_cust_customerid);
END;
/
CREATE_TRIGGER(fac_t_fac_task_B_I)
BEFORE INSERT ON fac_task
FOR EACH ROW
BEGIN
UPDATE_PRIMARY_KEY(fac_task_key, fac_s_fac_task_key);
END;
/
CREATE_TRIGGER(fac_t_fac_task_B_IU)
BEFORE INSERT OR UPDATE ON fac_task
FOR EACH ROW
BEGIN
:new.fac_task_code := UPPER(:new.fac_task_code);
END;
/
-- CREATE_TRIGGER(fac_t_fac_queue_B_I)
-- BEFORE INSERT ON fac_queue
-- FOR EACH ROW
-- BEGIN
-- UPDATE_PRIMARY_KEY(fac_queue_key, fac_s_fac_queue_key);
-- END;
-- /
CREATE_TRIGGER(fac_t_fac_note_group_B_I)
BEFORE INSERT ON fac_note_group
FOR EACH ROW
BEGIN
UPDATE_PRIMARY_KEY(fac_note_group_key, fac_s_fac_note_group_key);
END;
/
REGISTERRUN('$Id$')

File diff suppressed because it is too large Load Diff

View File

@@ -1,661 +0,0 @@
/* FAC_VIEEXP.SRC
* $Revision$
* $Id$
*
* Views die niet in de andere *_VIE.SRC kunnen omdat deze views gebruiken die dan nog niet gedefinieerd zijn.
*/
-- import: FIP: Aanvullen technische bedrijfsadressen
-- importsheet: Inventarisatie Externe bedrijven, tabblad Technische adressen
-- importtabel: fac_imp_bedrijfadres
CREATE OR REPLACE VIEW fac_v_exp_bedrijfadres
AS
SELECT b.prs_bedrijf_naam Bedrijfsnaam
, b.prs_leverancier_nr Leveranciernummer
, a.prs_bedrijfadres_type Kanaal
, (SELECT m.mld_typeopdr_omschrijving
FROM mld_typeopdr m
WHERE m.mld_typeopdr_key = a.mld_typeopdr_key) Opdrachttype
, a.prs_bedrijfadres_url Adres
, a.prs_bedrijfadres_ordermode Ordermode
, a.prs_bedrijfadres_certificate Certificaat
, a.prs_bedrijfadres_xsl Xsl_template
, a.prs_bedrijfadres_ext Extensie
, a.prs_bedrijfadres_attachfile Vaste_bijlage
, a.prs_bedrijfadres_username Login
, a.prs_bedrijfadres_password Wachtwoord
, a.prs_bedrijfadres_sender Afzender
, a.prs_bedrijfadres_replyaddress Reply_adres
, (SELECT p.prs_perslid_oslogin
FROM prs_perslid p
WHERE p.prs_perslid_key = a.prs_bedrijfadres_lockuser_key) Vaste_gebruiker
, a.prs_bedrijfadres_lockexpire Expire_days
FROM prs_bedrijfadres a
, prs_v_aanwezigbedrijf b
WHERE a.prs_bedrijf_key = b.prs_bedrijf_key
;
-- import: FIP: Aanvullen contactpersonen
-- importsheet: Inventarisatie Externe bedrijven, tabblad Contactpersonen
-- importtabel: fac_v_exp_contactpersoon
CREATE OR REPLACE VIEW fac_v_exp_contactpersoon
AS
SELECT b.prs_bedrijf_naam Bedrijfsnaam
, b.prs_leverancier_nr Leveranciernummer
, DECODE (u.prs_perslid_email, NULL
, DECODE (u.prs_perslid_oslogin, NULL, NULL, 2), 1) Persoonmatchcode
, DECODE (u.prs_perslid_email, NULL
, DECODE (u.prs_perslid_oslogin, NULL, NULL, u.prs_perslid_oslogin), u.prs_perslid_email) Persoonmatchwaarde
, c.prs_contactpersoon_naam ContactPersoonAchternaam
, c.prs_contactpersoon_tussenv Tussenvoegsel
, c.prs_contactpersoon_voorletters Voorletters
, c.prs_contactpersoon_voornaam Voornaam
, c.prs_contactpersoon_aanhef Titel
, c.prs_contactpersoon_titel Aanhef
, c.prs_contactpersoon_telefoon_1 Telefoonnummer
, c.prs_contactpersoon_telefoon_2 Mobiel
, c.prs_contactpersoon_email Email
, c.prs_contactpersoon_functie Functie
, REPLACE (c.prs_contactpersoon_opmerking, CHR(13)) Opmerking
, l.alg_locatie_code Locatiecode
FROM prs_contactpersoon c
, prs_contactpersoon_locatie p
, prs_v_aanwezigperslid u
, prs_v_aanwezigbedrijf b
, alg_v_aanweziglocatie l
WHERE c.prs_bedrijf_key = b.prs_bedrijf_key
AND c.prs_perslid_key = u.prs_perslid_key(+)
AND c.prs_contactpersoon_key = p.prs_contactpersoon_key(+)
AND p.alg_locatie_key = l.alg_locatie_key(+)
AND c.prs_contactpersoon_verwijder IS NULL
;
-- import: FIP: Aanvullen externe bedrijven
-- importsheet: Inventarisatie Externe bedrijven, tabblad Externe Bedrijven
-- importtabel: fac_imp_ext_bedrijf
-- NB: Overeenkomstdatum als varchar2 ophalen omdat alleen de datum (dd-mm-yyyy) ingelezen wordt.
-- Met trunc() blijft het een timestamp!
CREATE OR REPLACE VIEW fac_v_exp_ext_bedrijf
AS
SELECT b.prs_bedrijf_naam Bedrijfsnaam
, b.prs_leverancier_nr Leveranciernummer
, b.prs_bedrijf_bezoek_adres Bezoek_adres
, b.prs_bedrijf_bezoek_postcode Bezoek_postcode
, b.prs_bedrijf_bezoek_plaats Bezoek_plaats
, b.prs_bedrijf_bezoek_land Bezoek_land
, b.prs_bedrijf_post_adres Post_adres
, b.prs_bedrijf_post_postcode Post_postcode
, b.prs_bedrijf_post_plaats Post_plaats
, b.prs_bedrijf_post_land Post_land
, b.prs_bedrijf_telefoon Bedrijf_telefoon
, b.prs_bedrijf_fax Bedrijf_fax
, b.prs_bedrijf_email Bedrijf_email
, b.prs_bedrijf_contact_persoon Contact_persoon
, b.prs_bedrijf_contact_telefoon Contact_telefoon
, b.prs_bedrijf_contact_fax Contact_fax
, NULL Bedrijf_xsl
, NULL Bedrijf_orderadres
, CASE WHEN b.prs_bedrijf_leverancier = 1 THEN 'J' ELSE '' END Leverancier
, CASE WHEN b.prs_bedrijf_uitvoerende = 1 THEN 'J' ELSE '' END Uitvoerende
, CASE WHEN b.prs_bedrijf_contract = 1 THEN 'J' ELSE '' END Contractant
, CASE WHEN b.prs_bedrijf_huurder = 1 THEN 'J' ELSE '' END Huurder
, CASE WHEN b.prs_bedrijf_ingids = 1 THEN 'J' ELSE '' END Tooningids
, b.prs_bedrijf_uurloon Uurloon
, b.prs_overeenkomst_nr Overeenkomstnummer
, TO_CHAR(b.prs_overeenkomst_datum,'dd-mm-yyyy') Overeenkomstdatum
, REPLACE (b.prs_bedrijf_opmerking, CHR(13)) Opmerking
, d.prs_dienst_omschrijving Dienst
, CASE WHEN l.alg_locatie_key IS NULL
THEN (SELECT MAX(v.alg_locatie_code) FROM alg_v_gebouw_gegevens v WHERE v.alg_gebouw_key = l.alg_gebouw_key)
ELSE (SELECT MAX(v.alg_locatie_code) FROM alg_v_gebouw_gegevens v WHERE v.alg_locatie_key = l.alg_locatie_key)
END Locatiecode
, (SELECT alg_gebouw_code
FROM alg_v_gebouw_gegevens
WHERE alg_gebouw_key = l.alg_gebouw_key
) Gebouwcode
, r.prs_relatietype_omschrijving Relatietype
, NULL Overig1 -- kenmerk1
, NULL Overig2 -- kenmerk2
, NULL Overig3 -- kenmerk3
FROM prs_bedrijf b
, prs_relatietype r
, prs_bedrijfdienstlocatie l
, prs_dienst d
WHERE b.prs_relatietype_key = r.prs_relatietype_key(+)
AND b.prs_bedrijf_key = l.prs_bedrijf_key(+)
AND l.prs_dienst_key = d.prs_dienst_key(+)
AND b.prs_bedrijf_verwijder IS NULL
AND r.prs_relatietype_verwijder IS NULL
AND b.prs_bedrijf_intern IS NULL
;
-- import: FIP: 9-Aanvullen van inspectiedefinities
-- importsheet: Inventarisatie Inspecties
-- importtabel: fac_imp_inspectie
CREATE OR REPLACE VIEW fac_v_exp_inspectie
AS
SELECT a.discipline_oms Disciplineomschrijving
, a.srtgroep_oms Groepsoortomschrijving
, s.ins_srtdeel_code Objectsoortcode
, c.ins_srtcontrole_omschrijving Controle_omschrijving
, c.ins_srtcontrole_info Controle_informatie
, c.ins_srtcontrole_periode Controle_periode
, c.ins_srtcontrole_eenheid Eenheid
, c.ins_srtcontrole_mode Controle_mode
, c.ins_srtcontrole_bits Bits
, (SELECT t.ins_discipline_omschrijving
FROM ctr_discipline t
WHERE t.ins_discipline_key = c.ctr_discipline_key
) Taakcategorie
FROM ins_srtcontrole c
, ins_srtdeel s
, ins_v_allsrtinstallatie a
WHERE c.ins_srtcontrole_niveau = a.niveau
AND c.ins_srtinstallatie_key = a.ins_srtinstallatie_key
AND a.ins_srtdeel_key = s.ins_srtdeel_key(+)
;
-- import: FIP: 6-Aanvullen objecten
-- importsheet: Inventarisatie Objecten-56894
-- importtabel: fac_imp_ins
-- NB: Ingangsdatum en vervaldatum als varchar2 ophalen omdat alleen de datum (dd-mm-yyyy) ingelezen wordt.
-- Met trunc() blijft het een timestamp!
CREATE OR REPLACE VIEW fac_v_exp_ins
AS
SELECT DISTINCT d.ins_discipline_omschrijving Disciplineomschrijving
, k.prs_kostensoort_oms Disciplinekostensoort
, d.ins_srtgroep_omschrijving Groepsoortomschrijving
, sd.ins_srtdeel_code Objectsoortcode
, sd.ins_srtdeel_omschrijving Objectsoortomschrijving
, id.ins_deel_omschrijving Objectidentificatie
, REPLACE (id.ins_deel_opmerking, CHR(13)) Objectopmerking
, sd.ins_srtdeel_uitleenbaar Reserveerbaar
, sd.ins_srtdeel_eenheid Eenheid
, sd.ins_srtdeel_prijs Prijs
, l.alg_locatie_code Locatiecode
, d.alg_gebouw_code Gebouwcode
, d.alg_verdieping_code Bouwlaagvolgnummer
, d.alg_ruimte_nr Ruimtenummer
, DECODE(rd.res_deel_alg_level, -1,'', 0,'E', 1,'D', 2,'L', 3,'G', 4,'V', 5,'R') Reserveringscope
, DECODE(r.ins_discipline_min_level, 1,'O', 2,'V', 3,'R', 4,'P', 5,'W', '') Catalogustype
, r.ins_discipline_omschrijving Catalogusnaam
, c.prs_kostensoort_oms Cataloguskostensoort
, NULL Persoonmatchcode
, NULL Persoonmatchwaarde
, TO_CHAR(id.ins_deel_aanmaak,'dd-mm-yyyy') Ingangsdatum
, TO_CHAR(id.ins_deel_vervaldatum,'dd-mm-yyyy') Vervaldatum
, id.ins_deel_aantal Aantal
, id.ins_deel_externnr Externnr
, NULL Parentobjectsoortomschr
, NULL Parentobjectidentificatie
, NULL Kenmerk1
, NULL Kenmerk2
, NULL Kenmerk3
, NULL Kenmerk4
, NULL Kenmerk5
, NULL Kenmerk6
, NULL Kenmerk7
, NULL Kenmerk8
, NULL Kenmerk9
, NULL Kenmerk10
, NULL Kenmerk11
, NULL Kenmerk12
, NULL Kenmerk13
, NULL Kenmerk14
, NULL Kenmerk15
, NULL Kenmerk16
, NULL Kenmerk17
, NULL Kenmerk18
, NULL Kenmerk19
, NULL Kenmerk20
FROM ins_v_deel_gegevens d
, ins_discipline i
, ins_srtdeel sd
, alg_locatie l
, alg_gebouw g
, ins_deel id
, prs_kostensoort k
, prs_kostensoort c
, res_deel rd
, res_discipline r
WHERE d.ins_srtdeel_key = sd.ins_srtdeel_key
AND d.alg_locatie_key = l.alg_locatie_key(+)
AND d.alg_gebouw_key = g.alg_gebouw_key(+)
AND d.ins_deel_key = id.ins_deel_key
AND d.ins_discipline_key = i.ins_discipline_key
AND id.ins_deel_key = rd.res_ins_deel_key(+)
AND rd.res_discipline_key = r.ins_discipline_key(+)
AND i.prs_kostensoort_key = k.prs_kostensoort_key(+)
AND r.prs_kostensoort_key = c.prs_kostensoort_key(+)
AND id.ins_deel_verwijder IS NULL
;
-- import: FIP: 5-Aanvullen servicedesk
-- importsheet: Inventarisatie Meldingen
-- importtabel: fac_imp_mld
CREATE OR REPLACE FORCE VIEW fac_v_exp_mld
AS
SELECT sd.ins_srtdiscipline_omschrijving vakgroeptype
, sd.ins_srtdiscipline_prefix prefix
, COALESCE(sd.ins_srtdiscipline_alg, 0) plaatsgegevens
, COALESCE(sd.ins_srtdiscipline_ins, 0) objectgegevens
, COALESCE(sd.ins_srtdiscipline_bes, 0) bestelgegevens
, md.ins_discipline_omschrijving vakgroep
, sm.mld_stdmelding_omschrijving standaardmelding
, mg.mld_stdmeldinggroep_naam groep
, ks.prs_kostensoort_oms kostensoort
, REPLACE(mld.uitvoertijd_to_unit(sm.mld_stdmelding_t_accepttijd, 'U'), ',', '.') acceptatietijd
, REPLACE(mld.uitvoertijd_to_unit(sm.mld_stdmelding_t_accept_pr1, 'U'), ',', '.') acceptatietijd_kritiek
, REPLACE(mld.uitvoertijd_to_unit(sm.mld_stdmelding_t_accept_pr2, 'U'), ',', '.') acceptatietijd_hoog
, REPLACE(mld.uitvoertijd_to_unit(sm.mld_stdmelding_t_accept_pr4, 'U'), ',', '.') acceptatietijd_laag
, REPLACE(mld.uitvoertijd_to_unit(sm.mld_stdmelding_t_uitvoertijd, 'D'), ',', '.') uitvoertijd
, REPLACE(mld.uitvoertijd_to_unit(sm.mld_stdmelding_t_uitvtijd_pr1, 'D'), ',', '.') uitvoertijd_kritiek
, REPLACE(mld.uitvoertijd_to_unit(sm.mld_stdmelding_t_uitvtijd_pr2, 'D'), ',', '.') uitvoertijd_hoog
, REPLACE(mld.uitvoertijd_to_unit(sm.mld_stdmelding_t_uitvtijd_pr4, 'D'), ',', '.') uitvoertijd_laag
, mp.mld_disc_params_directklaar directklaar
, pd.prs_dienst_omschrijving dienst
, sm.mld_stdmelding_notfrontend notfrontend
, sm.alg_onrgoed_niveau alg_niveau
, mt.mld_typeopdr_omschrijving opdrachttype
, sm.mld_stdmelding_hint hint
, sm.mld_stdmelding_kopieerbaar kopieerbaar
, sm.mld_stdmelding_afmeldtext tekst_bij_afmelden
, DECODE(sm.mld_stdmelding_doublecheck, 1, 'i', 2, 'a', 3, 'b', 'n') dubbele_meldingen
, mld_stdmelding_slabewaken sla_bewaken
, mld_stdmelding_objects_allowed max_objecten
, md.ins_discipline_image disc_image
, sm.mld_stdmelding_image stdm_image
, sm.mld_stdmelding_externnr externnr
FROM mld_stdmelding sm
, mld_discipline md
, ins_srtdiscipline sd
, mld_disc_params mp
, prs_dienst pd
, mld_stdmeldinggroep mg
, prs_kostensoort ks
, mld_typeopdr mt
WHERE sm.mld_ins_discipline_key = md.ins_discipline_key
AND sm.mld_ins_discipline_key = mp.mld_disc_params_key(+)
AND md.ins_srtdiscipline_key = sd.ins_srtdiscipline_key(+)
AND sm.mld_stdmeldinggroep_key = mg.mld_stdmeldinggroep_key(+)
AND sm.prs_kostensoort_key = ks.prs_kostensoort_key(+)
AND sm.mld_typeopdr_key = mt.mld_typeopdr_key(+)
AND sm.prs_dienst_key = pd.prs_dienst_key(+)
AND sm.mld_stdmelding_verwijder IS NULL
AND ( sm.mld_stdmelding_vervaldatum IS NULL
OR sm.mld_stdmelding_vervaldatum > SYSDATE)
AND md.ins_discipline_verwijder IS NULL
AND sd.ins_srtdiscipline_verwijder IS NULL
;
-- import: FIP: 1-Aanvullen districten t/m gebouwen
-- importsheet: Inventarisatie Vastgoed, tabblad Locaties
-- importtabel: fac_imp_onrgoed1
CREATE OR REPLACE FORCE VIEW fac_v_exp_onrgoed1
AS
SELECT r.alg_regio_omschrijving Regio,
d.alg_district_omschrijving District,
l.alg_locatie_code Locatiecode,
l.alg_locatie_omschrijving Locatieomschrijving,
l.alg_locatie_verantw Contactpersoon,
l.alg_locatie_verantw_tel Telefoonnummer,
l.alg_locatie_adres Bezoekadres,
l.alg_locatie_postcode Postcode,
l.alg_locatie_plaats Plaats,
l.alg_locatie_land Land,
l.alg_locatie_post_adres Postadres,
l.alg_locatie_post_postcode Postpostcode,
l.alg_locatie_post_plaats Postplaats,
l.alg_locatie_post_land Postland,
sg.alg_srtgebouw_omschrijving Gebouwfunctie,
g.alg_gebouw_code Gebouwcode,
g.alg_gebouw_naam Gebouwnaam,
g.alg_gebouw_adres Gebouwadres,
g.alg_gebouw_postcode Gebouwpostcode,
NULL kenmerk1,
NULL kenmerk2,
NULL kenmerk3,
NULL kenmerk4,
NULL kenmerk5,
NULL kenmerk6,
NULL kenmerk7,
NULL kenmerk8,
NULL kenmerk9,
NULL kenmerk10
FROM alg_gebouw g,
alg_srtgebouw sg,
alg_locatie l,
alg_district d,
alg_regio r
WHERE g.alg_locatie_key = l.alg_locatie_key
AND l.alg_district_key = d.alg_district_key
AND d.alg_regio_key = r.alg_regio_key
AND g.alg_srtgebouw_key = sg.alg_srtgebouw_key
AND g.alg_gebouw_verwijder IS NULL
AND l.alg_locatie_verwijder IS NULL
AND ( l.alg_locatie_vervaldatum IS NULL
OR l.alg_locatie_vervaldatum > TRUNC (SYSDATE))
AND ( g.alg_gebouw_vervaldatum IS NULL
OR TRUNC (g.alg_gebouw_vervaldatum) > TRUNC (SYSDATE))
;
-- import: FIP: 2-Aanvullen bouwlagen en ruimten
-- importsheet: Inventarisatie Vastgoed, tabblad Ruimten
-- importtabel: fac_imp_onrgoed2
CREATE OR REPLACE VIEW fac_v_exp_onrgoed2
AS
SELECT l.alg_locatie_code Locatiecode
, g.alg_gebouw_code Gebouwcode
, v.alg_verdieping_volgnr Bouwlaagvolgnummer
, s.alg_srtruimte_omschrijving Ruimtefunctie
, r.alg_ruimte_nr Ruimtenummer
, r.alg_ruimte_omschrijving Ruimteomschrijving
, r.alg_ruimte_bruto_vloeropp Vloeroppervlak
, pa.prs_afdeling_naam Afdelingscode
, ra.prs_ruimteafdeling_bezetting Bezetting
, CASE WHEN rb.aantal IS NULL
THEN 0
ELSE 1
END ReserveerbareRuimte
, rd.ins_discipline_omschrijving Categorie
, rp.res_disc_params_expire_dagen Expiredagen
, rr.res_ruimte_prijs Prijs
, ro.res_opstelling_omschrijving Opstelling
, rro.res_ruimte_opstel_bezoekers AantalBezoekers
, rr.res_ruimte_nr Naam
, rr.res_ruimte_omschrijving Omschrijving
, NULL Kenmerk1
, NULL Kenmerk2
, NULL Kenmerk3
, NULL Kenmerk4
, NULL Kenmerk5
FROM alg_v_aanweziglocatie l
, alg_v_aanweziggebouw g
, alg_v_aanwezigverdieping v
, alg_v_aanwezigruimte r
, alg_v_aanwezigsrtruimte s
, prs_v_aanwezigruimteafdeling ra
, prs_v_aanwezigafdeling pa
, res_v_aanwezigalg_ruimte rar
, res_v_aanwezigruimte rr
, res_v_aanwezigdiscipline rd
, res_disc_params rp
, res_ruimte_opstelling rro
, res_v_aanwezigopstelling ro
, (SELECT rar.alg_ruimte_key
, COUNT(*) aantal
FROM res_v_aanwezigalg_ruimte rar
, res_ruimte rr
WHERE rar.res_ruimte_key = rr.res_ruimte_key
AND rr.res_ruimte_verwijder IS NULL
AND ( rr.res_ruimte_vervaldatum IS NULL
OR rr.res_ruimte_vervaldatum > SYSDATE
)
AND rr.res_ruimte_cv = 0
GROUP BY rar.alg_ruimte_key
) rb
WHERE l.alg_locatie_key = g.alg_locatie_key
AND g.alg_gebouw_key = v.alg_gebouw_key
AND v.alg_verdieping_key = r.alg_verdieping_key
AND r.alg_srtruimte_key = s.alg_srtruimte_key(+)
AND r.alg_ruimte_key = ra.alg_ruimte_key(+)
AND ra.prs_afdeling_key = pa.prs_afdeling_key(+)
AND r.alg_ruimte_key = rar.alg_ruimte_key(+)
AND rar.res_ruimte_key = rr.res_ruimte_key(+)
AND rr.res_discipline_key = rd.ins_discipline_key(+)
AND rd.ins_discipline_key = rp.res_ins_discipline_key(+)
AND rr.res_ruimte_key = rro.res_ruimte_key(+)
AND rro.res_opstelling_key = ro.res_opstelling_key(+)
AND r.alg_ruimte_key = rb.alg_ruimte_key(+)
AND rro.res_ruimte_opstel_verwijder IS NULL
AND (g.alg_gebouw_vervaldatum IS NULL OR g.alg_gebouw_vervaldatum > TRUNC(SYSDATE))
AND (rr.res_ruimte_vervaldatum IS NULL OR rr.res_ruimte_vervaldatum > TRUNC(SYSDATE));
;
-- import: FIP: 3-Aanvullen organisatiestructuur
-- importsheet: Inventarisatie Organisatiestructuur
-- importtabel: fac_imp_organisatie
CREATE OR REPLACE VIEW fac_v_exp_organisatie
AS -- import: FIP: 3-Aanvullen organisatiestructuur
-- importsheet: ?
SELECT b.prs_bedrijf_naam Bedrijfsnaam
, ap.prs_afdeling_naam Afdelingscodeparent
, a.prs_afdeling_naam Afdelingscode
, a.prs_afdeling_omschrijving Afdelingsomschrijving
, k.prs_kostenplaats_nr Kostenplaats
, a.prs_afdeling_externid Externid
FROM prs_afdeling a
, prs_afdeling ap
, prs_kostenplaats k
, prs_v_aanwezigbedrijf b
WHERE a.prs_kostenplaats_key = k.prs_kostenplaats_key(+)
AND a.prs_bedrijf_key = b.prs_bedrijf_key(+)
AND a.prs_afdeling_parentkey = ap.prs_afdeling_key(+)
AND a.prs_afdeling_verwijder IS NULL
AND ap.prs_afdeling_verwijder IS NULL
AND k.prs_kostenplaats_verwijder IS NULL
;
-- import: FIP: 4-Aanvullen personen
-- importsheet: Inventarisatie Personen, tabblad Personen
-- importtabel: fac_imp_perslid
CREATE OR REPLACE VIEW fac_v_exp_perslid
AS
SELECT l.alg_locatie_code Locatiecode
, o.alg_gebouw_code Gebouwcode
, v.alg_verdieping_volgnr Bouwlaagvolgnummer
, o.alg_ruimte_nr Ruimtenummer
, b.prs_perslidwerkplek_volgnr Werkplekvolgnummer
, w.prs_werkplek_omschrijving Omschrijving
, a.prs_afdeling_naam Afdelingscode
, p.prs_perslid_naam PersoonAchternaam
, p.prs_perslid_tussenvoegsel Tussenvoegsel
, p.prs_perslid_voorletters Voorletters
, p.prs_perslid_voornaam Voornaam
, p.prs_perslid_titel TitelAanhef
, p.prs_perslid_telefoonnr Telefoonnummer
, p.prs_perslid_mobiel Mobiel
, p.prs_perslid_email Email
, s.prs_srtperslid_omschrijving Functie
, p.prs_perslid_nr Personeelsnummer
, p.prs_perslid_oslogin Loginnaam
, null Password
, k.prs_kostenplaats_nr Kostenplaatsnr
, null NVT2
, null NVT3
, null NVT4
, null NVT5
, null NVT6
, null NVT7
, null Kenmerk1
, null Kenmerk2
, null Kenmerk3
, null Kenmerk4
, null Kenmerk5
, null Kenmerk6
, null Kenmerk7
, null Kenmerk8
, null Kenmerk9
, null Kenmerk10
, null Kenmerk11
, null Kenmerk12
, null Kenmerk13
, null Kenmerk14
, null Kenmerk15
, null Kenmerk16
, null Kenmerk17
, null Kenmerk18
, null Kenmerk19
, null Kenmerk20
FROM prs_perslid p
, prs_srtperslid s
, prs_afdeling a
, alg_v_onroerendgoed_gegevens o
, alg_locatie l
, alg_verdieping v
, prs_perslidwerkplek b
, prs_werkplek w
, prs_kostenplaats k
WHERE p.prs_srtperslid_key = s.prs_srtperslid_key(+)
AND p.prs_afdeling_key = a.prs_afdeling_key(+)
AND w.prs_alg_ruimte_key = o.alg_onroerendgoed_keys(+)
AND o.alg_locatie_key = l.alg_locatie_key(+)
AND o.alg_verdieping_key = v.alg_verdieping_key(+)
AND p.prs_perslid_key = b.prs_perslid_key(+)
AND b.prs_werkplek_key = w.prs_werkplek_key(+)
AND p.prs_kostenplaats_key = k.prs_kostenplaats_key(+)
AND p.prs_perslid_verwijder IS NULL
AND p.prs_perslid_inactief IS NULL
AND p.prs_perslid_flags = 0
AND p.prs_perslid_apikey IS NULL
;
CREATE OR REPLACE FORCE VIEW fac_v_exp_contract
AS
SELECT c.cnt_contract_nummer_intern ContractNr --A_nummer_intern
, c.cnt_contract_versie Versie --B_versie
, c.cnt_contract_nummer ExternNr --C_nummer_extern
, (SELECT ins_discipline_omschrijving
FROM cnt_discipline
WHERE ins_discipline_key = c.ins_discipline_key) ContractSoort --D_contractsoort
, c.cnt_contract_omschrijving Beschrijving --E_beschrijving
, m.cnt_contract_nummer_intern MantelNr --F_mantel_nummer
, m.cnt_contract_versie MantelNr_versie --G_mantel_versie
, TRANSLATE(c.cnt_contract_document, chr(10)||chr(13), '\n') Omschrijving --H_omschrijving
, (SELECT prs_dienst_omschrijving
FROM prs_dienst
WHERE prs_dienst_key = c.prs_dienst_key) Dienst --I_dienst
, a.prs_afdeling_naam Eigenaar_afd --J_afdeling
, e.prs_perslid_email Eigenaar_email --K_eigenaar
, b.prs_perslid_email Beheerder_email --L_beheerder
, TRANSLATE(c.cnt_contract_opmerking, chr(10)||chr(13), '\n') Opmerking --M_opmerking
, TO_CHAR(c.cnt_contract_looptijd_van, 'dd-mm-yyyy') Ingangsdatum --N_ingangsdatum
, TO_CHAR(cnt.cnt_getTermijndatum( cnt.cnt_getTermijndatum( c.cnt_contract_looptijd_tot
, c.cnt_contract_opzegtermijn
, -1)
, c.cnt_contract_rappeltermijn
, -1), 'dd-mm-yyyy') Rappeldatum --O_rappeldatum
, TO_CHAR(cnt.cnt_getTermijndatum( c.cnt_contract_looptijd_tot
, c.cnt_contract_opzegtermijn
, -1), 'dd-mm-yyyy') Opzegdatum --P_opzegdatum
, TO_CHAR(c.cnt_contract_looptijd_tot, 'dd-mm-yyyy') Einddatum --Q_einddatum
, CASE WHEN c.cnt_prs_perslid_key IS NOT NULL
THEN 'P'
ELSE 'B'
END Soort_contactpartij --R_soortcontact
, CASE WHEN c.cnt_prs_perslid_key IS NOT NULL
THEN (SELECT prs_perslid_email
FROM prs_perslid
WHERE prs_perslid_key = c.cnt_prs_perslid_key)
ELSE (SELECT prs_bedrijf_naam
FROM prs_bedrijf
WHERE prs_bedrijf_key = c.cnt_prs_bedrijf_key)
END Bedrijfsnaam --S_bedrijfnaam
, (SELECT prs_contactpersoon_email
FROM prs_contactpersoon
WHERE prs_contactpersoon_key = c.prs_contactpersoon_key) ContactNaam --T_contactpersoon
, (SELECT prs_kostenplaats_nr
FROM prs_kostenplaats
WHERE prs_kostenplaats_key = c.prs_kostenplaats_key) KostenplaatsCode --U_kostenplaatscode
, (SELECT prs_kostensoort_oms
FROM prs_kostensoort
WHERE prs_kostensoort_key = c.prs_kostensoort_key) KostensoortCode --V_kostensoortcode
, TO_CHAR(c.cnt_contract_kosten) Contractbedrag --W_contractbedrag
, TO_CHAR(c.cnt_contract_termijnkosten) Termijnbedrag --X_termijnbedrag
, TO_CHAR(c.cnt_contract_uurloon) Uurtarief --Y_uurtarief
, TO_CHAR(c.cnt_contract_korting) Korting --Z_korting
, CASE WHEN p.cnt_alg_plaats_code IN ('L','T','G','V','R')
THEN g.alg_locatie_code
ELSE NULL
END locatiecode --AA_locatiecode
, CASE WHEN p.cnt_alg_plaats_code IN ('T')
THEN g.alg_terreinsector_code
ELSE NULL
END terreincode --AB_terreincode
, CASE WHEN p.cnt_alg_plaats_code IN ('G','V','R')
THEN g.alg_gebouw_code
ELSE NULL
END gebouwcode --AC_gebouwcode
, CASE WHEN p.cnt_alg_plaats_code IN ('V','R')
THEN g.alg_verdieping_code
ELSE NULL
END verdiepingcode --AD_verdiepingcode
, CASE WHEN p.cnt_alg_plaats_code IN ('R')
THEN g.alg_ruimte_nr
ELSE NULL
END ruimtecode --AE_ruimtecode
, c.cnt_contract_verlenging Verlengen --AF_verlengen
FROM cnt_contract c
, (SELECT mm.cnt_contract_key
, mm.cnt_contract_nummer_intern
, mm.cnt_contract_versie
FROM cnt_contract mm
, cnt_disc_params md
WHERE mm.ins_discipline_key = md.cnt_ins_discipline_key
AND md.cnt_srtcontract_type = 6
AND mm.cnt_contract_status != 1
) m
, (SELECT o.*, l.alg_locatie_code
FROM alg_v_onroerendgoed_gegevens o
, alg_locatie l
WHERE o.alg_locatie_key = l.alg_locatie_key
UNION
SELECT l.alg_locatie_key, NULL, NULL
, l.alg_locatie_code, NULL
, NULL, NULL, NULL
, NULL, NULL, NULL
, NULL, NULL, NULL
, NULL, NULL, NULL
, l.alg_locatie_key, 'L', l.alg_locatie_code
FROM alg_locatie l
) g
, cnt_contract_plaats p
, prs_afdeling a
, prs_v_aanwezigperslid b
, prs_v_aanwezigperslid e
, prs_kostenplaats k
WHERE c.cnt_contract_mantel_key = m.cnt_contract_key(+)
AND c.cnt_contract_key = p.cnt_contract_key(+)
AND c.prs_afdeling_key_eig = a.prs_afdeling_key
AND c.prs_perslid_key_beh = b.prs_perslid_key
AND c.prs_perslid_key_eig = e.prs_perslid_key(+)
AND c.prs_kostenplaats_key = k.prs_kostenplaats_key
AND c.cnt_contract_verwijder IS NULL
AND a.prs_afdeling_verwijder IS NULL
AND b.prs_perslid_email IS NOT NULL
AND k.prs_kostenplaats_verwijder IS NULL
ORDER BY c.cnt_contract_nummer_intern
, c.cnt_contract_versie
;
CREATE OR REPLACE FORCE VIEW fac_v_exp_res_artikel_sync
AS
SELECT ra.res_artikel_key ArtikelKey
, rd.ins_discipline_omschrijving CatalogusNaam
, pk.prs_kostensoort_oms CatalogusKostensoort
, ra.res_artikel_nr ArtikelNummer
, ra.res_artikel_omschrijving ArtikelOmschrijving
, ra.res_artikel_eenheid ArtikelEenheid
, ra.res_artikel_prijs ArtikelPrijs
, ra.res_artikel_prijs_vast ArtikelPrijsVast
, ra.res_artikel_inkoopprijs ArtikelInkoopprijs
, ra.res_artikel_kostenpersoneel ArtikelPersoneelkosten
, ra.res_artikel_kostenalgemeen ArtikelAlgemenekosten
, ra.res_artikel_BTW ArtikelBTW
, ra.res_artikel_opmerking ArtikelOpmerking
, ra.res_artikel_groep ArtikelGroep
, ra.res_artikel_volgnummer ArtikelVolgnummer
, TO_CHAR(ra.res_artikel_ingangsdatum, 'yyyymmdd') ArtikelIngangsdatum
, TO_CHAR(ra.res_artikel_vervaldatum, 'yyyymmdd') ArtikelVervaldatum
, ra.res_artikel_minimum ArtikelMinimum
, ra.res_artikel_externnr Externnr
FROM res_artikel ra
, res_discipline rd
, prs_kostensoort pk
WHERE ra.res_discipline_key = rd.ins_discipline_key
AND rd.prs_kostensoort_key = pk.prs_kostensoort_key(+)
AND ra.res_artikel_verwijder IS NULL
AND TRUNC(ra.res_artikel_vervaldatum) > TRUNC(SYSDATE)
;
REGISTERRUN('$Id$')

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -1,13 +0,0 @@
{
"type": "service_account",
"project_id": "facilitor-165209",
"private_key_id": "042cb975b9b456956773da035272efce0cf00285",
"private_key": "-----BEGIN PRIVATE KEY-----\nMIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCQQJNL05OmzmCp\nu5yFfOdH21TkMGFYDvAUYqlvGu3waIEbnYU4Gu2FEj2rGRgcnrgOKWYxp+b58BkM\nWxBZ61wgpRIvvFUTHSmR3pLU3eRaxTlqJPFYHAQavi28a38nlM5EMXWGmLOKI25j\nUe4vbU3+WnP0kTTjLnSK0Pcm/bSp/b/zuERi1WcDtFLvVP/ZdwnAy/CzILbkC8Wm\nCckVYgFmcxK91mZ755mafn5Pn4zt8HkA4NzZivqhM4vOn7zXaJnwON2sQNxUTyJv\n+q8Pa4FRHHBPVO86uKWEUlciRDoVokZyon7a0QeVJv5otuLJF1p15+jUNN5eMGgV\nUOBkfzBnAgMBAAECggEAOVUpFfCcFSaeXaee8KExjSo75cvizKx3OCr0e5/A5RWs\nBs1HFwMA1yxmTTwWjL16mspSfzbkAv+t/O6uo4Z7YdAp18YrLAMhtAO56Rfd/EO5\n65mOQL411Wkz5Vj2O0WV652av+muJh+p7piwKbJwVsEdqB0UX5zlngyqxpj8drk2\niIEwz6diyRWv3dczZfhbbZLfVuRDLicfcyLK566OIg1a2WhniZbntksrwFLC5lkq\n8nRepvgTeIGg9b5Q+zP74iENU/onfyLSZ82KB+SVgC68D5wBjAVcoVk1MCD7SpSE\nkze4Dbo+rdOVFb/vB7g80pT8EagFZ8jpvzWQyE6HaQKBgQDEWhYHkXVffwEle9lo\nmanlFAkR/OYw99oglWhkAUWsBonegxccdDkprpnoaeQxzFhr5vwdd/Bt4J1y5W48\nhJUF61AN7FJ1+3DfBZ7Lg9i/HmtoaQUebTFjJOU6V4FIP/LkWke4xKinmg2sr875\nL9aTkMyFEPLL4vXYp/AJxIaUjwKBgQC8EsxphJ6vSnkX5wrFRKEfrswwHb9+N9kx\n5UVeO8SRyt3PJ1lJqpqgIHcQh18HFtdbSwgLZOYZilkyfDIoVNx7UJyb59vFTKdO\n/epGyT583MQk8Yoy0bdQEPgkTWk2yKjhW7CJcTLDpd2/GNf7r5mHsk1Qwi5XaxKu\nmeHX6KICqQKBgDVFC3z6JZHG7xSwSQdryP/xM5TBu+HFHFSCtFONVM2a6ISJpBeA\nIJICYJcBQ3uPKN39SKDmDUCCE7U8MXARuCxm7s0YNDb2BGU9LRuhpYgURKeK9myO\nyztOozH004o6bzcslxC1qdvum48iE1DffaODQTlIo9ZUuMYSqbi8rJZZAoGALwpk\npl/NcPqnnxrizsSDqHEIEWDfbKp7YMd/ujooyG59XDrzUkGhuztjjHbPhe5onyT9\nNhxekTTRapc11HClVRKsmTI8/fRWRKOt3VaokoKFbNgdQOjDePtFlY7nKhS2aOeO\nGFJ/5/+snwePvhwFwrMOM4zeGm9llNZYbrB5FUECgYEAo/VqIOKag9wwMhw7CiYv\nSx2xtRf4KJT9cEtNYm3DBLZrJsUNKdIH8MujHTZ83ISybN0j9OkcA+5jEsFGGcnt\niKQ2wVPcSEm74ujx+RjOtElrTfYaUf1da/eqIH+cCrLfGA4qdglt7jGDKYSJ/nlC\n3hqreqJE75MQnvGOOr3Eoh4=\n-----END PRIVATE KEY-----\n",
"client_email": "firebase-adminsdk-xts0z@facilitor-165209.iam.gserviceaccount.com",
"client_id": "106239533568553355908",
"auth_uri": "https://accounts.google.com/o/oauth2/auth",
"token_uri": "https://oauth2.googleapis.com/token",
"auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs",
"client_x509_cert_url": "https://www.googleapis.com/robot/v1/metadata/x509/firebase-adminsdk-xts0z%40facilitor-165209.iam.gserviceaccount.com",
"universe_domain": "googleapis.com"
}

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

Some files were not shown because too many files have changed in this diff Show More