3480 lines
129 KiB
MySQL
3480 lines
129 KiB
MySQL
--
|
|
-- $Id$
|
|
--
|
|
-- Script containing customer specific configuration sql statements for gvba: Gemeentelijk vervoersbedrijf Amsterdam
|
|
|
|
DEFINE thisfile = 'GVBA.SQL'
|
|
DEFINE dbuser = '^GVBA'
|
|
|
|
SET ECHO ON
|
|
SET DEFINE ON
|
|
COLUMN fcltlogfile NEW_VALUE fcltlogfile NOPRINT;
|
|
WHENEVER SQLERROR EXIT;
|
|
SELECT adm.scriptspoolfile('&dbuser', '&thisfile') AS fcltlogfile FROM DUAL;
|
|
WHENEVER SQLERROR CONTINUE;
|
|
SPOOL &fcltlogfile
|
|
SET DEFINE OFF
|
|
|
|
------ payload begin ------
|
|
|
|
CREATE OR REPLACE PACKAGE gvba AS
|
|
-- Hulpfuncties en procedures:
|
|
--
|
|
PROCEDURE to_log (p_import_key IN NUMBER, p_do_log BOOLEAN, p_message VARCHAR2, p_proces VARCHAR2);
|
|
|
|
--
|
|
--
|
|
/* SELECT gvba_p_ps.get_prs_kenmerk_key('P','LAATSTE PS IMPORT') FROM dual; */
|
|
FUNCTION get_prs_kenmerk_key( p_kenmerk_niveau IN VARCHAR2, p_kenmerk_omschrijving VARCHAR2) RETURN NUMBER;
|
|
|
|
--
|
|
--
|
|
/* Opvragen prs_kostenplaats_key. Indien onbekend retourneer dan -1 */
|
|
FUNCTION get_prs_kostenplaats_key(p_kostenplaats_nr IN VARCHAR2) RETURN NUMBER;
|
|
--
|
|
/*
|
|
BEGIN gvba.set_prs_kostenplaats_key('testing'); END;
|
|
SELECT gvba.get_prs_kostenplaats_key('tesTing') FROM dual;
|
|
*/
|
|
/* Aanmaken p_kostenplaats_nr indien onbekend */
|
|
PROCEDURE set_prs_kostenplaats_key(p_kostenplaats_nr IN VARCHAR2);
|
|
|
|
--
|
|
--
|
|
/* Opvragen prs_kostenplaats_key. Indien onbekend retourneer dan -1 */
|
|
FUNCTION get_prs_perslidkp_key(p_prs_perslid_key IN NUMBER, p_kostenplaats_key IN NUMBER) RETURN NUMBER;
|
|
--
|
|
/*
|
|
BEGIN gvba.set_prs_perslidkp_key(4,21); END;
|
|
SELECT gvba.get_prs_perslidkp_key(4,21) FROM dual;
|
|
*/
|
|
/* Aanmaken p_kostenplaats_nr indien onbekend */
|
|
PROCEDURE set_prs_perslidkp_key(p_prs_perslid_key IN NUMBER, p_kostenplaats_key IN NUMBER);
|
|
|
|
--
|
|
--
|
|
/* Opvragen functie. Indien onbekend retourneer dan -1 */
|
|
FUNCTION get_prs_srtperslid_key(p_prs_srtperslid_omschrijving IN VARCHAR2) RETURN NUMBER;
|
|
--
|
|
/*
|
|
BEGIN gvba.set_prs_srtperslid_key('Onbekend'); END;
|
|
SELECT gvba.get_prs_srtperslid_key('Onbekend') FROM dual;
|
|
*/
|
|
/* Aanmaken p_prs_srtperslid_omschrijving indien onbekend */
|
|
PROCEDURE set_prs_srtperslid_key(p_prs_srtperslid_omschrijving IN VARCHAR2);
|
|
|
|
--
|
|
--
|
|
/* Opvragen functie. Indien onbekend retourneer dan -1 */
|
|
FUNCTION get_prs_afdeling_key(p_prs_afdeling_naam IN VARCHAR2) RETURN NUMBER;
|
|
--
|
|
--
|
|
/* Opvragen functie. Indien onbekend retourneer dan -1 */
|
|
FUNCTION get_prs_afdeling_parent_key(p_prs_afdeling_naam IN VARCHAR2) RETURN NUMBER;
|
|
--
|
|
--
|
|
/* Opvragen functie. Indien onbekend retourneer dan -1 */
|
|
FUNCTION get_prs_afdeling_bedrijf_key(p_prs_afdeling_naam IN VARCHAR2) RETURN NUMBER;
|
|
--
|
|
--
|
|
/* Opvragen functie. Indien onbekend retourneer dan -1 */
|
|
FUNCTION get_prs_afdeling_max_volgnr(p_prs_afdeling_naam IN VARCHAR2) RETURN NUMBER;
|
|
|
|
--
|
|
--
|
|
/* Opvragen functie. Indien onbekend retourneer dan -1 */
|
|
FUNCTION get_prs_afdeling_key_volgnr(p_prs_afdeling_naam IN VARCHAR2, p_prs_kostenplaats_nr IN VARCHAR2) RETURN NUMBER;
|
|
--
|
|
--
|
|
/* Aanmaken p_prs_srtperslid_omschrijving indien onbekend */
|
|
PROCEDURE set_prs_afdeling_key_volgnr(p_prs_afdeling_naam IN VARCHAR2, p_prs_kostenplaats_nr IN VARCHAR2);
|
|
|
|
--
|
|
--
|
|
/* gvba_p_ps.set_prs_ckenmerk_waarde(10225,11982,'Onbekend'); */
|
|
PROCEDURE set_prs_ckenmerk_waarde( p_kenmerk_key NUMBER, p_link_key NUMBER, p_kenmerk_waarde VARCHAR2);
|
|
--
|
|
FUNCTION get_prs_ckenmerk_waarde( p_kenmerk_key NUMBER, p_link_key NUMBER) RETURN VARCHAR2;
|
|
--
|
|
/* gvba_p_ps.set_prs_dkenmerk_waarde(1024,11982,SYSDATE+1); */
|
|
PROCEDURE set_prs_dkenmerk_waarde( p_kenmerk_key NUMBER, p_link_key NUMBER, p_kenmerk_waarde DATE);
|
|
--
|
|
--
|
|
/* Opvragen functie. Indien onbekend retourneer dan -1 */
|
|
FUNCTION get_gvba_ruimte_key(p_ruimte IN VARCHAR2, p_locatie IN VARCHAR2) RETURN NUMBER;
|
|
|
|
--
|
|
--
|
|
/* gvba_p_ps.set_prs_ckenmerk_waarde(10225,11982,'Onbekend'); */
|
|
PROCEDURE set_prs_werkplek_key( p_ruimte_key NUMBER, p_werkplek_virtueel NUMBER);
|
|
--
|
|
FUNCTION get_prs_werkplek_key( p_ruimte_key NUMBER, p_werkplek_virtueel NUMBER) RETURN NUMBER;
|
|
|
|
PROCEDURE set_mandaat_vrijstelling;
|
|
|
|
PROCEDURE verleng_mandaat_vrijstelling (p_deel_key NUMBER, p_user_key NUMBER, p_jaren NUMBER);
|
|
|
|
END gvba;
|
|
/
|
|
|
|
|
|
CREATE OR REPLACE PACKAGE BODY gvba AS
|
|
--
|
|
-- to_log
|
|
PROCEDURE to_log (p_import_key IN NUMBER, p_do_log BOOLEAN, p_message VARCHAR2, p_proces VARCHAR2) IS
|
|
v_dummy VARCHAR2(16);
|
|
BEGIN
|
|
IF p_do_log THEN
|
|
fac.imp_writelog (p_import_key,
|
|
'I',
|
|
p_message,
|
|
''
|
|
);
|
|
COMMIT; -- to commit logging
|
|
END IF;
|
|
EXCEPTION
|
|
WHEN OTHERS
|
|
THEN v_dummy := 'Dummy opdracht';
|
|
END to_log;
|
|
--
|
|
--
|
|
FUNCTION get_prs_kenmerk_key( p_kenmerk_niveau IN VARCHAR2, p_kenmerk_omschrijving VARCHAR2) RETURN NUMBER
|
|
IS
|
|
-- variabelen
|
|
v_dummy VARCHAR2(16);
|
|
v_count NUMBER(10);
|
|
v_kenmerk_key NUMBER(10);
|
|
BEGIN
|
|
|
|
SELECT MAX(k.prs_kenmerk_key), COUNT(*)
|
|
INTO v_kenmerk_key, v_count
|
|
FROM PRS_KENMERK k
|
|
WHERE trim(k.prs_kenmerk_upper) = UPPER(trim(p_kenmerk_omschrijving))
|
|
AND k.prs_kenmerk_niveau = p_kenmerk_niveau
|
|
AND k.prs_kenmerk_verwijder IS NULL;
|
|
|
|
IF (v_count <> 1) THEN
|
|
|
|
v_kenmerk_key := -1;
|
|
|
|
END IF;
|
|
|
|
RETURN v_kenmerk_key;
|
|
|
|
EXCEPTION
|
|
WHEN OTHERS
|
|
THEN RETURN -1;
|
|
|
|
END get_prs_kenmerk_key;
|
|
--
|
|
--
|
|
FUNCTION get_prs_kostenplaats_key(p_kostenplaats_nr IN VARCHAR2) RETURN NUMBER
|
|
IS
|
|
-- variabelen
|
|
v_dummy VARCHAR2(16);
|
|
v_count NUMBER(10);
|
|
v_kostenplaats_key NUMBER(10);
|
|
BEGIN
|
|
|
|
SELECT NVL(MAX(prs_kostenplaats_key),-1), COUNT(*)
|
|
INTO v_kostenplaats_key, v_count
|
|
FROM prs_kostenplaats
|
|
WHERE prs_kostenplaats_verwijder is null
|
|
AND prs_kostenplaats_upper = upper(substr(p_kostenplaats_nr,1,30));
|
|
|
|
RETURN v_kostenplaats_key;
|
|
|
|
EXCEPTION
|
|
WHEN OTHERS
|
|
THEN RETURN -1;
|
|
|
|
END get_prs_kostenplaats_key;
|
|
--
|
|
--
|
|
PROCEDURE set_prs_kostenplaats_key(p_kostenplaats_nr IN VARCHAR2)
|
|
IS
|
|
-- variabelen
|
|
v_dummy VARCHAR2(16);
|
|
v_count NUMBER(10);
|
|
v_kostenplaats_key NUMBER(10);
|
|
BEGIN
|
|
|
|
v_kostenplaats_key := get_prs_kostenplaats_key(p_kostenplaats_nr);
|
|
|
|
IF (v_kostenplaats_key = -1) THEN
|
|
|
|
SELECT prs_s_prs_kostenplaats_key.NEXTVAL INTO v_kostenplaats_key FROM DUAL;
|
|
|
|
INSERT INTO PRS_KOSTENPLAATS
|
|
(prs_kostenplaats_key
|
|
,prs_kostenplaats_nr
|
|
,prs_kostenplaats_omschrijving
|
|
,prs_kostenplaats_module
|
|
)
|
|
VALUES
|
|
(v_kostenplaats_key
|
|
,SUBSTR(p_kostenplaats_nr,1,30)
|
|
,''
|
|
,'PRS'
|
|
);
|
|
|
|
COMMIT;
|
|
|
|
END IF;
|
|
|
|
EXCEPTION
|
|
WHEN OTHERS
|
|
THEN v_kostenplaats_key := -1;
|
|
END set_prs_kostenplaats_key;
|
|
--
|
|
--
|
|
FUNCTION get_prs_perslidkp_key(p_prs_perslid_key IN NUMBER, p_kostenplaats_key IN NUMBER) RETURN NUMBER
|
|
IS
|
|
-- variabelen
|
|
v_dummy VARCHAR2(16);
|
|
v_count NUMBER(10);
|
|
v_perslidkostenplaats_key NUMBER(10);
|
|
BEGIN
|
|
|
|
SELECT NVL(MAX(prs_perslidkostenplaats_key),-1), COUNT(*)
|
|
INTO v_perslidkostenplaats_key, v_count
|
|
FROM prs_perslidkostenplaats
|
|
WHERE prs_perslid_key = p_prs_perslid_key
|
|
AND prs_kostenplaats_key = p_kostenplaats_key;
|
|
|
|
RETURN v_perslidkostenplaats_key;
|
|
|
|
EXCEPTION
|
|
WHEN OTHERS
|
|
THEN RETURN -1;
|
|
|
|
END get_prs_perslidkp_key;
|
|
--
|
|
--
|
|
PROCEDURE set_prs_perslidkp_key(p_prs_perslid_key IN NUMBER, p_kostenplaats_key IN NUMBER)
|
|
IS
|
|
-- variabelen
|
|
v_dummy VARCHAR2(16);
|
|
v_count NUMBER(10);
|
|
v_perslidkostenplaats_key NUMBER(10);
|
|
BEGIN
|
|
|
|
v_perslidkostenplaats_key := get_prs_perslidkp_key(p_kostenplaats_key,p_prs_perslid_key);
|
|
|
|
IF (v_perslidkostenplaats_key = -1) THEN
|
|
|
|
-- 1 kostenplaatscombinatie
|
|
DELETE FROM PRS_PERSLIDKOSTENPLAATS
|
|
WHERE prs_perslid_key = p_prs_perslid_key;
|
|
|
|
SELECT prs_s_prs_perslidkp_key.nextval INTO v_perslidkostenplaats_key FROM DUAL;
|
|
|
|
INSERT INTO PRS_PERSLIDKOSTENPLAATS
|
|
(prs_perslid_key
|
|
,prs_kostenplaats_key
|
|
,prs_perslidkostenplaats_boeken
|
|
,prs_perslidkostenplaats_inzage)
|
|
VALUES
|
|
(p_prs_perslid_key
|
|
,p_kostenplaats_key
|
|
,1
|
|
,1
|
|
);
|
|
|
|
COMMIT;
|
|
|
|
END IF;
|
|
|
|
EXCEPTION
|
|
WHEN OTHERS
|
|
THEN v_perslidkostenplaats_key := -1;
|
|
END set_prs_perslidkp_key;
|
|
--
|
|
--
|
|
FUNCTION get_prs_srtperslid_key(p_prs_srtperslid_omschrijving IN VARCHAR2) RETURN NUMBER
|
|
IS
|
|
-- variabelen
|
|
v_dummy VARCHAR2(16);
|
|
v_count NUMBER(10);
|
|
v_srtperslid_key NUMBER(10);
|
|
BEGIN
|
|
|
|
SELECT NVL(MAX(prs_srtperslid_key),-1), COUNT(*)
|
|
INTO v_srtperslid_key, v_count
|
|
FROM prs_srtperslid
|
|
WHERE prs_srtperslid_verwijder IS NULL
|
|
AND prs_srtperslid_upper = upper(p_prs_srtperslid_omschrijving);
|
|
|
|
RETURN v_srtperslid_key;
|
|
|
|
EXCEPTION
|
|
WHEN OTHERS
|
|
THEN RETURN -1;
|
|
|
|
END get_prs_srtperslid_key;
|
|
--
|
|
--
|
|
PROCEDURE set_prs_srtperslid_key(p_prs_srtperslid_omschrijving IN VARCHAR2)
|
|
IS
|
|
-- variabelen
|
|
v_dummy VARCHAR2(16);
|
|
v_count NUMBER(10);
|
|
v_srtperslid_key NUMBER(10);
|
|
BEGIN
|
|
|
|
v_srtperslid_key := get_prs_srtperslid_key(p_prs_srtperslid_omschrijving);
|
|
|
|
IF (v_srtperslid_key = -1) THEN
|
|
|
|
SELECT prs_s_prs_alluitvoerende_keys.nextval INTO v_srtperslid_key FROM DUAL;
|
|
|
|
INSERT INTO PRS_SRTPERSLID
|
|
(prs_srtperslid_omschrijving
|
|
)
|
|
VALUES
|
|
(p_prs_srtperslid_omschrijving
|
|
);
|
|
|
|
COMMIT;
|
|
|
|
END IF;
|
|
|
|
EXCEPTION
|
|
WHEN OTHERS
|
|
THEN v_srtperslid_key := -1;
|
|
END set_prs_srtperslid_key;
|
|
--
|
|
--
|
|
FUNCTION get_prs_afdeling_key(p_prs_afdeling_naam IN VARCHAR2) RETURN NUMBER
|
|
IS
|
|
-- variabelen
|
|
v_dummy VARCHAR2(16);
|
|
v_count NUMBER(10);
|
|
v_afdeling_key NUMBER(10);
|
|
BEGIN
|
|
|
|
SELECT NVL(MAX(prs_afdeling_key),-1), COUNT(*)
|
|
INTO v_afdeling_key, v_count
|
|
FROM prs_afdeling
|
|
WHERE prs_afdeling_verwijder IS NULL
|
|
AND prs_afdeling_upper = upper(p_prs_afdeling_naam);
|
|
|
|
RETURN v_afdeling_key;
|
|
|
|
EXCEPTION
|
|
WHEN OTHERS
|
|
THEN RETURN -1;
|
|
|
|
END get_prs_afdeling_key;
|
|
--
|
|
--
|
|
FUNCTION get_prs_afdeling_parent_key(p_prs_afdeling_naam IN VARCHAR2) RETURN NUMBER
|
|
IS
|
|
-- variabelen
|
|
v_dummy VARCHAR2(16);
|
|
v_count NUMBER(10);
|
|
v_afdeling_key NUMBER(10);
|
|
BEGIN
|
|
|
|
SELECT NVL(MAX(prs_afdeling_parentkey),-1), COUNT(*)
|
|
INTO v_afdeling_key, v_count
|
|
FROM prs_afdeling
|
|
WHERE prs_afdeling_verwijder IS NULL
|
|
AND prs_afdeling_upper = upper(p_prs_afdeling_naam);
|
|
|
|
IF (v_count = 0) THEN
|
|
SELECT prs_afdeling_parentkey
|
|
INTO v_afdeling_key
|
|
FROM prs_afdeling
|
|
WHERE prs_afdeling_verwijder IS NULL
|
|
AND SUBSTR(prs_afdeling_upper,1,5) = upper(SUBSTR(p_prs_afdeling_naam,1,5));
|
|
END IF;
|
|
|
|
RETURN v_afdeling_key;
|
|
|
|
EXCEPTION
|
|
WHEN OTHERS
|
|
THEN RETURN -1;
|
|
|
|
END get_prs_afdeling_parent_key;
|
|
--
|
|
--
|
|
FUNCTION get_prs_afdeling_bedrijf_key(p_prs_afdeling_naam IN VARCHAR2) RETURN NUMBER
|
|
IS
|
|
-- variabelen
|
|
v_dummy VARCHAR2(16);
|
|
v_count NUMBER(10);
|
|
v_bedrijf_key NUMBER(10);
|
|
BEGIN
|
|
|
|
SELECT NVL(MAX(prs_bedrijf_key),NULL), COUNT(*)
|
|
INTO v_bedrijf_key, v_count
|
|
FROM prs_afdeling
|
|
WHERE prs_afdeling_verwijder IS NULL
|
|
AND prs_afdeling_upper = upper(p_prs_afdeling_naam);
|
|
|
|
RETURN v_bedrijf_key;
|
|
|
|
EXCEPTION
|
|
WHEN OTHERS
|
|
THEN RETURN -1;
|
|
|
|
END get_prs_afdeling_bedrijf_key;
|
|
--
|
|
--
|
|
FUNCTION get_prs_afdeling_key_volgnr(p_prs_afdeling_naam IN VARCHAR2, p_prs_kostenplaats_nr IN VARCHAR2) RETURN NUMBER
|
|
IS
|
|
-- variabelen
|
|
v_dummy VARCHAR2(16);
|
|
v_count NUMBER(10);
|
|
v_afdeling_key NUMBER(10);
|
|
BEGIN
|
|
|
|
SELECT NVL(MAX(a.prs_afdeling_key),-1), COUNT(*)
|
|
INTO v_afdeling_key, v_count
|
|
FROM prs_afdeling a, prs_kostenplaats k
|
|
WHERE a.prs_afdeling_verwijder IS NULL
|
|
AND SUBSTR(a.prs_afdeling_upper, 1, INSTR(a.prs_afdeling_upper, '/')-1) = upper(p_prs_afdeling_naam)
|
|
AND INSTR(a.prs_afdeling_upper, '/') > 0
|
|
AND a.prs_kostenplaats_key = k.prs_kostenplaats_key
|
|
AND k.prs_kostenplaats_upper = upper(p_prs_kostenplaats_nr);
|
|
|
|
RETURN v_afdeling_key;
|
|
|
|
EXCEPTION
|
|
WHEN OTHERS
|
|
THEN RETURN -1;
|
|
|
|
END get_prs_afdeling_key_volgnr;
|
|
--
|
|
--
|
|
FUNCTION get_prs_afdeling_max_volgnr(p_prs_afdeling_naam IN VARCHAR2) RETURN NUMBER
|
|
IS
|
|
-- variabelen
|
|
v_dummy VARCHAR2(16);
|
|
v_count NUMBER(10);
|
|
v_volgnr NUMBER(4);
|
|
BEGIN
|
|
|
|
-- Bepaal het laagst beschikbare volgnummer.
|
|
SELECT max(COALESCE(Fac.safe_to_number(SUBSTR(a.prs_afdeling_upper, INSTR(a.prs_afdeling_upper, '/')+1, 4))
|
|
,1
|
|
)
|
|
)
|
|
INTO v_volgnr
|
|
FROM prs_afdeling a
|
|
WHERE a.prs_afdeling_verwijder IS NULL
|
|
AND SUBSTR(a.prs_afdeling_upper, 1, INSTR(a.prs_afdeling_upper, '/')-1) = upper(p_prs_afdeling_naam)
|
|
AND INSTR(a.prs_afdeling_upper, '/') > 0;
|
|
|
|
RETURN NVL(v_volgnr,0);
|
|
|
|
EXCEPTION
|
|
WHEN OTHERS
|
|
THEN RETURN 0; -- Bestaat nog niet dus
|
|
|
|
END get_prs_afdeling_max_volgnr;
|
|
--
|
|
--
|
|
PROCEDURE set_prs_afdeling_key_volgnr(p_prs_afdeling_naam IN VARCHAR2, p_prs_kostenplaats_nr IN VARCHAR2)
|
|
IS
|
|
-- variabelen
|
|
v_dummy VARCHAR2(16);
|
|
v_count NUMBER(10);
|
|
v_afdeling_key NUMBER(10);
|
|
v_afdeling_parentkey NUMBER(10);
|
|
v_bedrijf_key NUMBER(10);
|
|
v_kostenplaats_key NUMBER(10);
|
|
v_volgnr NUMBER(1);
|
|
v_afdeling_naam VARCHAR(10);
|
|
v_afdeling_omschrijving VARCHAR(60);
|
|
|
|
BEGIN
|
|
|
|
v_afdeling_key := get_prs_afdeling_key_volgnr(p_prs_afdeling_naam, p_prs_kostenplaats_nr);
|
|
|
|
IF (v_afdeling_key = -1) THEN
|
|
-- Kijk of de combinatie afdeling/kostenplaats al bestaat
|
|
-- SELECT get_prs_afdeling_key_volgnr(p_prs_afdeling_naam,p_prs_kostenplaats_nr) into v_afdeling_key from dual;
|
|
IF (v_afdeling_key = -1) THEN
|
|
|
|
-- Aanmaken kostenplaats indien deze nog niet zou bestaan
|
|
set_prs_kostenplaats_key(p_prs_kostenplaats_nr);
|
|
SELECT get_prs_kostenplaats_key(p_prs_kostenplaats_nr) into v_kostenplaats_key from dual;
|
|
-- Wat is de parent van de gelijknamige afdeling, dwz de afdeling zonder volgnummer? Alleen aan
|
|
-- afdelingen met volgnummer worden mensen gekoppeld. Afdelingen met volgnummer zijn geen parent
|
|
-- van een afdeling.
|
|
SELECT get_prs_afdeling_parent_key(p_prs_afdeling_naam) into v_afdeling_parentkey from dual;
|
|
SELECT get_prs_afdeling_bedrijf_key(p_prs_afdeling_naam) into v_bedrijf_key from dual;
|
|
SELECT get_prs_afdeling_max_volgnr(p_prs_afdeling_naam) into v_volgnr from dual;
|
|
SELECT prs_s_prs_afdeling_key.nextval INTO v_afdeling_key FROM DUAL;
|
|
v_afdeling_naam := p_prs_afdeling_naam || '/' || TO_CHAR(v_volgnr+1);
|
|
|
|
SELECT NVL(PRS_AFDELING_OMSCHRIJVING, v_afdeling_naam)
|
|
INTO v_afdeling_omschrijving
|
|
FROM PRS_AFDELING
|
|
WHERE prs_afdeling_verwijder is null
|
|
AND prs_afdeling_naam = p_prs_afdeling_naam;
|
|
|
|
-- Aanname: length(p_prs_afdeling_naam||'/'||volgnr) <= 10. Huidige afdelingen hebben
|
|
-- max(length(p_prs_afdeling_naam) = 8
|
|
INSERT INTO PRS_AFDELING
|
|
(prs_afdeling_naam
|
|
,prs_afdeling_parentkey
|
|
,prs_afdeling_omschrijving
|
|
,prs_bedrijf_key
|
|
,prs_kostenplaats_key
|
|
)
|
|
VALUES
|
|
(v_afdeling_naam
|
|
,DECODE(v_afdeling_parentkey,-1,NULL,v_afdeling_parentkey)
|
|
,v_afdeling_omschrijving
|
|
,DECODE(v_bedrijf_key,-1,NULL,v_bedrijf_key)
|
|
,v_kostenplaats_key
|
|
);
|
|
|
|
COMMIT;
|
|
|
|
END IF;
|
|
|
|
END IF;
|
|
|
|
EXCEPTION
|
|
WHEN OTHERS
|
|
THEN v_afdeling_key := -1;
|
|
END set_prs_afdeling_key_volgnr;
|
|
--
|
|
--
|
|
FUNCTION get_prs_ckenmerk_waarde( p_kenmerk_key NUMBER, p_link_key NUMBER) RETURN VARCHAR2
|
|
IS
|
|
-- variabelen
|
|
v_dummy VARCHAR2(16);
|
|
v_count NUMBER(10);
|
|
v_waarde VARCHAR2(128);
|
|
v_gebouw_key NUMBER(10);
|
|
BEGIN
|
|
|
|
SELECT MAX(kl.prs_kenmerklink_waarde), COUNT(*)
|
|
INTO v_waarde, v_count
|
|
FROM PRS_KENMERKLINK kl
|
|
WHERE 0=0
|
|
AND kl.prs_link_key = p_link_key
|
|
AND kl.prs_kenmerk_key = p_kenmerk_key
|
|
AND kl.prs_kenmerklink_verwijder IS NULL;
|
|
|
|
IF (v_count <> 1) THEN
|
|
|
|
v_waarde := '';
|
|
|
|
END IF;
|
|
|
|
RETURN v_waarde;
|
|
|
|
EXCEPTION
|
|
WHEN OTHERS
|
|
THEN RETURN '';
|
|
|
|
END get_prs_ckenmerk_waarde;
|
|
--
|
|
--
|
|
PROCEDURE set_prs_ckenmerk_waarde( p_kenmerk_key NUMBER, p_link_key NUMBER, p_kenmerk_waarde VARCHAR2)
|
|
IS
|
|
-- variabelen
|
|
v_dummy VARCHAR2(16);
|
|
v_count NUMBER(10);
|
|
v_locatie_key NUMBER(10);
|
|
v_gebouw_key NUMBER(10);
|
|
v_kenmerk_waarde VARCHAR(1024);
|
|
v_kenmerk_niveau VARCHAR2(1);
|
|
BEGIN
|
|
|
|
v_kenmerk_waarde := NVL(get_prs_ckenmerk_waarde(p_kenmerk_key,p_link_key),'Er is nog geen waarde .....');
|
|
|
|
IF v_kenmerk_waarde <> p_kenmerk_waarde THEN
|
|
|
|
-- Waarde voor flexprop is gewijzigd
|
|
|
|
DELETE
|
|
FROM PRS_KENMERKLINK
|
|
WHERE prs_kenmerk_key = p_kenmerk_key
|
|
AND prs_link_key = p_link_key;
|
|
|
|
IF p_kenmerk_waarde IS NOT NULL THEN
|
|
|
|
BEGIN
|
|
SELECT prs_kenmerk_niveau
|
|
INTO v_kenmerk_niveau
|
|
FROM PRS_KENMERK
|
|
WHERE prs_kenmerk_key = p_kenmerk_key;
|
|
EXCEPTION WHEN NO_DATA_FOUND THEN
|
|
v_kenmerk_niveau := NULL;
|
|
END;
|
|
|
|
INSERT INTO PRS_KENMERKLINK
|
|
(PRS_LINK_KEY
|
|
,PRS_KENMERKLINK_NIVEAU
|
|
,PRS_KENMERK_KEY
|
|
,PRS_KENMERKLINK_WAARDE
|
|
) VALUES
|
|
(p_link_key
|
|
,v_kenmerk_niveau
|
|
,p_kenmerk_key
|
|
,p_kenmerk_waarde
|
|
);
|
|
|
|
END IF;
|
|
|
|
COMMIT;
|
|
|
|
END IF;
|
|
|
|
EXCEPTION
|
|
WHEN OTHERS
|
|
THEN v_dummy := 'Dummy opdracht';
|
|
|
|
END set_prs_ckenmerk_waarde;
|
|
--
|
|
--
|
|
PROCEDURE set_prs_dkenmerk_waarde( p_kenmerk_key NUMBER, p_link_key NUMBER, p_kenmerk_waarde DATE)
|
|
IS
|
|
-- variabelen
|
|
v_dummy VARCHAR2(16);
|
|
v_count NUMBER(10);
|
|
v_locatie_key NUMBER(10);
|
|
v_gebouw_key NUMBER(10);
|
|
v_date VARCHAR2(10);
|
|
v_kenmerk_niveau VARCHAR2(1);
|
|
BEGIN
|
|
|
|
DELETE
|
|
FROM PRS_KENMERKLINK
|
|
WHERE prs_kenmerk_key = p_kenmerk_key
|
|
AND prs_link_key = p_link_key;
|
|
|
|
IF p_kenmerk_waarde IS NOT NULL THEN
|
|
|
|
v_date := TO_CHAR(p_kenmerk_waarde,'DD-MM-YYYY');
|
|
BEGIN
|
|
SELECT prs_kenmerk_niveau
|
|
INTO v_kenmerk_niveau
|
|
FROM PRS_KENMERK
|
|
WHERE prs_kenmerk_key = p_kenmerk_key;
|
|
EXCEPTION WHEN NO_DATA_FOUND THEN
|
|
v_kenmerk_niveau := NULL;
|
|
END;
|
|
|
|
INSERT INTO PRS_KENMERKLINK
|
|
(PRS_LINK_KEY
|
|
,PRS_KENMERKLINK_NIVEAU
|
|
,PRS_KENMERK_KEY
|
|
,PRS_KENMERKLINK_WAARDE
|
|
) VALUES
|
|
(p_link_key
|
|
,v_kenmerk_niveau
|
|
,p_kenmerk_key
|
|
,v_date
|
|
);
|
|
|
|
END IF;
|
|
|
|
COMMIT;
|
|
|
|
EXCEPTION
|
|
WHEN OTHERS
|
|
THEN v_dummy := 'Dummy opdracht';
|
|
|
|
END set_prs_dkenmerk_waarde;
|
|
--
|
|
--
|
|
FUNCTION get_gvba_ruimte_key(p_ruimte IN VARCHAR2, p_locatie IN VARCHAR2) RETURN NUMBER
|
|
-- RETURN = -1 --> geen fout opgetreden, ruimte hoeft niet opgezocht te worden
|
|
-- RETURN = 0 --> geen fout opgetreden, ruimte hoeft niet opgezocht te worden
|
|
-- RETURN > 0 --> bestaande alg_ruimte_key
|
|
IS
|
|
-- variabelen
|
|
v_dummy VARCHAR2(16);
|
|
v_count NUMBER(10);
|
|
v_ruimte_key NUMBER(10);
|
|
BEGIN
|
|
|
|
v_ruimte_key := 0;
|
|
|
|
IF trim(upper(p_locatie)) = 'ARLANDAWE' THEN
|
|
|
|
SELECT NVL (MAX (r.alg_ruimte_key), -1), COUNT (*)
|
|
INTO v_ruimte_key, v_count
|
|
FROM (SELECT v.alg_verdieping_volgnr, r.alg_ruimte_key, r.alg_ruimte_nr
|
|
FROM ALG_RUIMTE r, ALG_VERDIEPING v
|
|
WHERE r.alg_ruimte_verwijder IS NULL
|
|
AND r.alg_verdieping_key = v.alg_verdieping_key
|
|
AND v.alg_gebouw_key = 7) r
|
|
WHERE 1 = 1
|
|
AND INSTR (TRIM(UPPER (p_ruimte)),
|
|
TRIM(UPPER (r.alg_verdieping_volgnr || '.' || r.alg_ruimte_nr)),
|
|
1
|
|
) > 0;
|
|
|
|
IF v_count <> 1 THEN
|
|
v_ruimte_key := -1;
|
|
END IF;
|
|
|
|
END IF;
|
|
|
|
/*
|
|
IF trim(upper(p_locatie)) = 'x' THEN
|
|
|
|
... ruimte-vertaling voor anddere locaties ...
|
|
|
|
END IF;
|
|
*/
|
|
|
|
RETURN v_ruimte_key;
|
|
|
|
EXCEPTION
|
|
WHEN OTHERS
|
|
THEN RETURN -1;
|
|
|
|
END get_gvba_ruimte_key;
|
|
--
|
|
--
|
|
|
|
--
|
|
--
|
|
FUNCTION get_prs_werkplek_key( p_ruimte_key NUMBER, p_werkplek_virtueel NUMBER) RETURN NUMBER
|
|
IS
|
|
-- variabelen
|
|
v_count NUMBER(10);
|
|
v_werkplek_key NUMBER(10);
|
|
BEGIN
|
|
|
|
SELECT MIN(prs_werkplek_key), COUNT(*)
|
|
INTO v_werkplek_key, v_count
|
|
FROM prs_werkplek
|
|
WHERE prs_alg_ruimte_key = p_ruimte_key
|
|
AND prs_werkplek_module = 'IMP'
|
|
AND prs_werkplek_virtueel = p_werkplek_virtueel;
|
|
|
|
IF (v_count <= 0) THEN
|
|
|
|
v_werkplek_key := -1;
|
|
|
|
END IF;
|
|
|
|
RETURN v_werkplek_key;
|
|
EXCEPTION
|
|
WHEN OTHERS
|
|
THEN RETURN -1;
|
|
|
|
END get_prs_werkplek_key;
|
|
--
|
|
--
|
|
PROCEDURE set_prs_werkplek_key( p_ruimte_key NUMBER, p_werkplek_virtueel NUMBER)
|
|
IS
|
|
-- variabelen
|
|
v_dummy VARCHAR2(1024);
|
|
v_count NUMBER(10);
|
|
v_werkplek_key NUMBER(10);
|
|
v_werkplek_volgnr NUMBER(3);
|
|
v_ruimte_nr VARCHAR2(10);
|
|
BEGIN
|
|
|
|
v_werkplek_key := get_prs_werkplek_key(p_ruimte_key, p_werkplek_virtueel);
|
|
|
|
IF v_werkplek_key = -1 THEN
|
|
|
|
SELECT NVL(MAX(prs_werkplek_volgnr),0)+1, COUNT(*)
|
|
INTO v_werkplek_volgnr, v_count
|
|
FROM PRS_WERKPLEK
|
|
WHERE prs_alg_ruimte_key = p_ruimte_key;
|
|
|
|
SELECT alg_ruimte_nr
|
|
INTO v_ruimte_nr
|
|
FROM alg_ruimte
|
|
WHERE alg_ruimte_verwijder IS NULL
|
|
AND alg_ruimte_key = p_ruimte_key;
|
|
|
|
insert into PRS_WERKPLEK
|
|
(PRS_WERKPLEK_MODULE
|
|
,PRS_WERKPLEK_VOLGNR
|
|
,PRS_WERKPLEK_OMSCHRIJVING
|
|
,PRS_ALG_RUIMTE_KEY
|
|
,PRS_WERKPLEK_VIRTUEEL
|
|
)
|
|
values
|
|
('IMP'
|
|
,v_werkplek_volgnr
|
|
,v_ruimte_nr||'/'||to_char(v_werkplek_volgnr)
|
|
,p_ruimte_key
|
|
,p_werkplek_virtueel
|
|
);
|
|
|
|
COMMIT;
|
|
|
|
END IF;
|
|
|
|
EXCEPTION
|
|
WHEN OTHERS
|
|
THEN v_dummy := 'Dummy opdracht';
|
|
|
|
END set_prs_werkplek_key;
|
|
--
|
|
PROCEDURE set_mandaat_vrijstelling
|
|
AS
|
|
CURSOR c IS
|
|
SELECT m.*,
|
|
bedrijf_key,
|
|
kenteken,
|
|
berijder,
|
|
einddatum,
|
|
gvb_onderdeel
|
|
FROM mld_melding m,
|
|
(SELECT mld_melding_key, mld_kenmerkmelding_waarde bedrijf_key
|
|
FROM mld_kenmerkmelding
|
|
WHERE mld_kenmerk_key = 201) b,
|
|
(SELECT mld_melding_key, mld_kenmerkmelding_waarde kenteken
|
|
FROM mld_kenmerkmelding
|
|
WHERE mld_kenmerk_key = 202) k,
|
|
(SELECT mld_melding_key, mld_kenmerkmelding_waarde berijder
|
|
FROM mld_kenmerkmelding
|
|
WHERE mld_kenmerk_key = 203) v,
|
|
(SELECT mld_melding_key, mld_kenmerkmelding_waarde einddatum
|
|
FROM mld_kenmerkmelding
|
|
WHERE mld_kenmerk_key = 204) e,
|
|
(SELECT mld_melding_key,
|
|
mld_kenmerkmelding_waarde gvb_onderdeel
|
|
FROM mld_kenmerkmelding
|
|
WHERE mld_kenmerk_key = 221) g
|
|
WHERE m.mld_melding_key = b.mld_melding_key(+)
|
|
AND m.mld_melding_key = k.mld_melding_key(+)
|
|
AND m.mld_melding_key = v.mld_melding_key(+)
|
|
AND m.mld_melding_key = e.mld_melding_key(+)
|
|
AND m.mld_melding_key = g.mld_melding_key(+)
|
|
AND m.mld_stdmelding_key = 721 -- Mandaten en vrijstellingen
|
|
AND m.mld_melding_status = 4 -- Geaccepteeerd
|
|
AND NOT EXISTS
|
|
(SELECT mld_melding_object_key
|
|
FROM mld_melding_object mo
|
|
WHERE mo.mld_melding_key = m.mld_melding_key);
|
|
|
|
-- kenmerk 283 is gevuld als de melding afgehandeld is.
|
|
CURSOR c_del IS
|
|
SELECT m.*,
|
|
kenteken
|
|
FROM mld_melding m,
|
|
(SELECT mld_melding_key, mld_kenmerkmelding_waarde kenteken
|
|
FROM mld_kenmerkmelding
|
|
WHERE mld_kenmerk_key = 282) k
|
|
WHERE m.mld_melding_key = k.mld_melding_key(+)
|
|
AND m.mld_stdmelding_key = 801 -- Intrekken vrijstelling
|
|
AND m.mld_melding_status = 4 -- Geaccepteeerd
|
|
AND NOT EXISTS
|
|
(SELECT mld_kenmerkmelding_key
|
|
FROM mld_kenmerkmelding km
|
|
WHERE km.mld_melding_key = m.mld_melding_key
|
|
AND km.mld_kenmerk_key = 283);
|
|
|
|
v_berijder_arr VARCHAR2 (1000);
|
|
v_kenteken_arr VARCHAR2 (1000);
|
|
v_berijder VARCHAR2 (100);
|
|
v_kenteken VARCHAR2 (100);
|
|
v_bedrijf_naam VARCHAR2 (100);
|
|
v_loop NUMBER;
|
|
v_deel_key NUMBER;
|
|
v_vrijstelling_nr NUMBER;
|
|
v_einddatum DATE;
|
|
v_einddatum_max DATE;
|
|
|
|
v_oud_verval_str VARCHAR2(20);
|
|
v_new_verval_str VARCHAR2(20);
|
|
v_deel_vervaldatum DATE;
|
|
|
|
oracle_err_num NUMBER;
|
|
oracle_err_mes VARCHAR2 (200);
|
|
v_errormsg VARCHAR2 (200);
|
|
v_hint VARCHAR2 (200);
|
|
|
|
PROCEDURE get_element (p_string IN OUT VARCHAR2, p_field OUT VARCHAR2)
|
|
AS
|
|
v_index NUMBER;
|
|
BEGIN
|
|
v_index := INSTR (p_string, '#');
|
|
|
|
IF v_index = 0
|
|
THEN
|
|
p_field := p_string;
|
|
p_string := NULL;
|
|
ELSE
|
|
p_field := SUBSTR (p_string, 1, v_index - 1);
|
|
p_string := SUBSTR (p_string, v_index + 1);
|
|
END IF;
|
|
END;
|
|
BEGIN
|
|
FOR rec IN c
|
|
LOOP
|
|
v_berijder_arr := REPLACE (rec.berijder, CHR (13), '#');
|
|
v_berijder_arr := REPLACE (v_berijder_arr, CHR (10), '#');
|
|
v_berijder_arr := REPLACE (v_berijder_arr, '##', '#');
|
|
v_loop := 1;
|
|
|
|
v_hint := 'Opzoeken bedrijf: ' || rec.bedrijf_key;
|
|
|
|
SELECT prs_bedrijf_naam
|
|
INTO v_bedrijf_naam
|
|
FROM prs_bedrijf
|
|
WHERE prs_bedrijf_key = rec.bedrijf_key;
|
|
|
|
v_hint := 'Instellen einddatum: ' || rec.einddatum;
|
|
v_einddatum := TO_DATE (rec.einddatum, 'dd-mm-yyyy');
|
|
|
|
IF TO_CHAR(SYSDATE, 'MM') IN (12,13)
|
|
THEN
|
|
v_einddatum_max := TO_DATE (TO_CHAR (SYSDATE, 'yy')+1 || '1231', 'yymmdd');
|
|
ELSE
|
|
v_einddatum_max := TO_DATE (TO_CHAR (SYSDATE, 'yy') || '1231', 'yymmdd');
|
|
END IF;
|
|
|
|
IF v_einddatum IS NULL OR v_einddatum > v_einddatum_max
|
|
THEN
|
|
v_einddatum := v_einddatum_max;
|
|
END IF;
|
|
|
|
WHILE v_berijder_arr IS NOT NULL AND v_loop < 20
|
|
LOOP
|
|
BEGIN
|
|
get_element (v_berijder_arr, v_berijder);
|
|
DBMS_OUTPUT.put_line (v_berijder);
|
|
v_loop := v_loop + 1;
|
|
v_hint := 'Aanmaken mandaat: ' || v_berijder;
|
|
|
|
|
|
|
|
INSERT INTO ins_deel (ins_srtdeel_key,
|
|
ins_alg_ruimte_key,
|
|
ins_alg_ruimte_type,
|
|
ins_deel_aantal,
|
|
ins_deel_omschrijving,
|
|
ins_discipline_key,
|
|
ins_alg_locatie_key,
|
|
ins_deel_vervaldatum)
|
|
VALUES (
|
|
141,
|
|
rec.prs_perslid_key_voor,
|
|
'P',
|
|
1,
|
|
'MAN '
|
|
|| v_bedrijf_naam
|
|
|| '-'
|
|
|| v_berijder,
|
|
641,
|
|
NULL,
|
|
v_einddatum)
|
|
RETURNING ins_deel_key
|
|
INTO v_deel_key;
|
|
|
|
v_hint :=
|
|
'Aanmaken mandaat: '
|
|
|| v_berijder
|
|
|| ' bedrijf kenmerk: '
|
|
|| rec.bedrijf_key;
|
|
|
|
INSERT INTO ins_kenmerkdeel (ins_deel_key,
|
|
ins_kenmerk_key,
|
|
ins_kenmerkdeel_waarde)
|
|
VALUES (v_deel_key, 21, rec.bedrijf_key);
|
|
|
|
v_hint :=
|
|
'Aanmaken mandaat: '
|
|
|| v_berijder
|
|
|| ' berijder kenmerk: '
|
|
|| v_berijder;
|
|
|
|
INSERT INTO ins_kenmerkdeel (ins_deel_key,
|
|
ins_kenmerk_key,
|
|
ins_kenmerkdeel_waarde)
|
|
VALUES (v_deel_key, 22, v_berijder);
|
|
|
|
v_hint :=
|
|
'Aanmaken mandaat: '
|
|
|| v_berijder
|
|
|| ' GVB onderdeel kenmerk: '
|
|
|| v_berijder;
|
|
|
|
INSERT INTO ins_kenmerkdeel (ins_deel_key,
|
|
ins_kenmerk_key,
|
|
ins_kenmerkdeel_waarde)
|
|
VALUES (v_deel_key, 41, rec.gvb_onderdeel);
|
|
|
|
v_hint :=
|
|
'Aanmaken mandaat: '
|
|
|| v_berijder
|
|
|| ' Koppelen aan melding: '
|
|
|| rec.mld_melding_key;
|
|
|
|
INSERT INTO mld_melding_object (mld_melding_key,
|
|
ins_deel_key)
|
|
VALUES (rec.mld_melding_key, v_deel_key);
|
|
EXCEPTION
|
|
WHEN OTHERS
|
|
THEN
|
|
oracle_err_num := SQLCODE;
|
|
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
|
|
v_errormsg :=
|
|
'OTHERS (error '
|
|
|| oracle_err_num
|
|
|| '/'
|
|
|| oracle_err_mes
|
|
|| ')';
|
|
fac.writelog ('Export mandaat',
|
|
'E',
|
|
v_errormsg,
|
|
v_hint);
|
|
END;
|
|
END LOOP;
|
|
|
|
|
|
v_kenteken_arr := REPLACE (rec.kenteken, CHR (13), '#');
|
|
v_kenteken_arr := REPLACE (v_kenteken_arr, CHR (10), '#');
|
|
v_kenteken_arr := REPLACE (v_kenteken_arr, '##', '#');
|
|
v_loop := 1;
|
|
|
|
v_hint := 'Instellen einddatum: ' || rec.einddatum;
|
|
|
|
v_hint := 'Instellen einddatum: ' || rec.einddatum;
|
|
v_einddatum := TO_DATE (rec.einddatum, 'dd-mm-yyyy');
|
|
|
|
v_einddatum_max := add_months(SYSDATE, 5*12);
|
|
IF v_einddatum IS NULL OR v_einddatum > v_einddatum_max
|
|
THEN
|
|
v_einddatum := v_einddatum_max;
|
|
END IF;
|
|
|
|
WHILE v_kenteken_arr IS NOT NULL AND v_loop < 20
|
|
LOOP
|
|
BEGIN
|
|
SELECT FAC.safe_to_number (
|
|
MAX (SUBSTR (ins_deel_omschrijving, 6)))
|
|
INTO v_vrijstelling_nr
|
|
FROM ins_deel
|
|
WHERE ins_srtdeel_key = 161
|
|
AND ins_deel_omschrijving LIKE
|
|
'VRIJ %';
|
|
|
|
IF v_vrijstelling_nr IS NULL
|
|
THEN
|
|
v_vrijstelling_nr := 1;
|
|
ELSE
|
|
v_vrijstelling_nr := v_vrijstelling_nr + 1;
|
|
END IF;
|
|
|
|
get_element (v_kenteken_arr, v_kenteken);
|
|
DBMS_OUTPUT.put_line (v_kenteken);
|
|
v_loop := v_loop + 1;
|
|
v_hint := 'Aanmaken vrijstelling: ' || v_vrijstelling_nr;
|
|
|
|
INSERT INTO ins_deel (ins_srtdeel_key,
|
|
ins_alg_ruimte_key,
|
|
ins_alg_ruimte_type,
|
|
ins_deel_aantal,
|
|
ins_deel_omschrijving,
|
|
ins_discipline_key,
|
|
ins_alg_locatie_key,
|
|
ins_deel_vervaldatum)
|
|
VALUES (
|
|
161,
|
|
rec.prs_perslid_key_voor,
|
|
'P',
|
|
1,
|
|
'VRIJ '
|
|
|| TO_CHAR (v_vrijstelling_nr, 'fm0000'),
|
|
641,
|
|
NULL,
|
|
v_einddatum)
|
|
RETURNING ins_deel_key
|
|
INTO v_deel_key;
|
|
|
|
v_hint :=
|
|
'Aanmaken vrijstelling: '
|
|
|| v_kenteken
|
|
|| 'bedrijf kenmerk: '
|
|
|| rec.bedrijf_key;
|
|
|
|
INSERT INTO ins_kenmerkdeel (ins_deel_key,
|
|
ins_kenmerk_key,
|
|
ins_kenmerkdeel_waarde)
|
|
VALUES (v_deel_key, 21, rec.bedrijf_key);
|
|
|
|
v_hint :=
|
|
'Aanmaken vrijstelling: '
|
|
|| v_kenteken
|
|
|| 'kenteken kenmerk: '
|
|
|| v_kenteken;
|
|
|
|
INSERT INTO ins_kenmerkdeel (ins_deel_key,
|
|
ins_kenmerk_key,
|
|
ins_kenmerkdeel_waarde)
|
|
VALUES (v_deel_key, 23, v_kenteken);
|
|
|
|
v_hint :=
|
|
'Aanmaken mandaat: '
|
|
|| v_berijder
|
|
|| ' GVB onderdeel kenmerk: '
|
|
|| v_berijder;
|
|
|
|
INSERT INTO ins_kenmerkdeel (ins_deel_key,
|
|
ins_kenmerk_key,
|
|
ins_kenmerkdeel_waarde)
|
|
VALUES (v_deel_key, 41, rec.gvb_onderdeel);
|
|
|
|
INSERT INTO mld_melding_object (mld_melding_key,
|
|
ins_deel_key)
|
|
VALUES (rec.mld_melding_key, v_deel_key);
|
|
|
|
-- vul het kenmerk 283 met de huidige datum om aan te geven dat deze
|
|
-- melding is afgehandeld.
|
|
MLD.upsertmeldingkenmerk (283, rec.mld_melding_key, TO_CHAR(SYSDATE, 'DD-MM-YYYY'));
|
|
|
|
EXCEPTION
|
|
WHEN OTHERS
|
|
THEN
|
|
oracle_err_num := SQLCODE;
|
|
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
|
|
v_errormsg :=
|
|
'OTHERS (error '
|
|
|| oracle_err_num
|
|
|| '/'
|
|
|| oracle_err_mes
|
|
|| ')';
|
|
fac.writelog ('Export vrijstellingen',
|
|
'E',
|
|
v_errormsg,
|
|
v_hint);
|
|
END;
|
|
END LOOP;
|
|
END LOOP;
|
|
|
|
-- intrekken vrijstellingen
|
|
FOR rec IN c_del
|
|
LOOP
|
|
v_kenteken_arr := REPLACE (rec.kenteken, CHR (13), '#');
|
|
v_kenteken_arr := REPLACE (v_kenteken_arr, CHR (10), '#');
|
|
v_kenteken_arr := REPLACE (v_kenteken_arr, '##', '#');
|
|
v_loop := 1;
|
|
|
|
WHILE v_kenteken_arr IS NOT NULL AND v_loop < 20
|
|
LOOP
|
|
BEGIN
|
|
get_element (v_kenteken_arr, v_kenteken);
|
|
DBMS_OUTPUT.put_line (v_kenteken);
|
|
v_loop := v_loop + 1;
|
|
|
|
SELECT MAX(d.ins_deel_key)
|
|
INTO v_deel_key
|
|
FROM ins_deel d, ins_kenmerkdeel kd
|
|
WHERE d.ins_deel_key = kd.ins_deel_key
|
|
AND kd.ins_kenmerk_key = 23 -- kenteken
|
|
AND TRIM(UPPER(REPLACE(v_kenteken,'-'))) = TRIM(UPPER(REPLACE(kd.ins_kenmerkdeel_waarde,'-')))
|
|
AND kd.ins_kenmerkdeel_verwijder IS NULL
|
|
AND d.ins_deel_verwijder IS NULL
|
|
AND ins_deel_vervaldatum > SYSDATE;
|
|
|
|
SELECT ins_deel_vervaldatum
|
|
INTO v_deel_vervaldatum
|
|
FROM ins_deel
|
|
WHERE ins_deel_key = v_deel_key;
|
|
|
|
UPDATE ins_deel
|
|
SET ins_deel_vervaldatum = SYSDATE
|
|
WHERE ins_deel_key = v_deel_key;
|
|
|
|
v_oud_verval_str := SUBSTR(TO_CHAR(v_deel_vervaldatum, 'Day'),1,2) || TO_CHAR(v_deel_vervaldatum, ' dd-mm-yyyy');
|
|
v_new_verval_str := SUBSTR(TO_CHAR(SYSDATE, 'Day'),1,2) || TO_CHAR(SYSDATE, ' dd-mm-yyyy');
|
|
|
|
fac.trackaction('INSUPD', v_deel_key, rec.prs_perslid_key, NULL, 'Object gewijzigd' || CHR(10)
|
|
|| 'Vervaldatum: ' || v_oud_verval_str || ' --> ' || v_new_verval_str);
|
|
|
|
INSERT INTO mld_melding_object (mld_melding_key,
|
|
ins_deel_key)
|
|
VALUES (rec.mld_melding_key, v_deel_key);
|
|
|
|
EXCEPTION WHEN NO_DATA_FOUND
|
|
THEN
|
|
-- LOG geen vrijstelling gevonden met dit kenteken.
|
|
fac.writelog ('Export vrijstellingen',
|
|
'E',
|
|
'Geen vrijstelling gevonden met dit kenteken: ' || v_kenteken,
|
|
'');
|
|
END;
|
|
END LOOP;
|
|
END LOOP;
|
|
|
|
COMMIT;
|
|
END;
|
|
|
|
PROCEDURE verleng_mandaat_vrijstelling (p_deel_key NUMBER, p_user_key NUMBER, p_jaren NUMBER)
|
|
AS
|
|
v_oud_verval INS_DEEL.INS_DEEL_VERVALDATUM%TYPE;
|
|
v_contact INS_DEEL.INS_ALG_RUIMTE_KEY%TYPE;
|
|
v_jaren NUMBER;
|
|
v_new_verval DATE;
|
|
v_new_verval_str VARCHAR2(20);
|
|
v_oud_verval_str VARCHAR2(20);
|
|
BEGIN
|
|
SELECT ins_deel_vervaldatum, ins_alg_ruimte_key
|
|
INTO v_oud_verval, v_contact
|
|
FROM ins_deel
|
|
WHERE ins_deel_key = p_deel_key;
|
|
|
|
v_new_verval := TO_DATE('3112' || TO_CHAR(SYSDATE, 'YY') + p_jaren, 'DDMMYY');
|
|
v_new_verval_str := SUBSTR(TO_CHAR(v_new_verval, 'Day'),1,2) || TO_CHAR(v_new_verval, ' dd-mm-yyyy');
|
|
v_oud_verval_str := SUBSTR(TO_CHAR(v_oud_verval, 'Day'),1,2) || TO_CHAR(v_oud_verval, ' dd-mm-yyyy');
|
|
|
|
-- extra check. Alleen de contactpersoon mag verlengen. Verder is het onzinnig om verlopen
|
|
-- mandaten en vrijstellingen te verlengen.
|
|
IF v_contact = p_user_key AND v_oud_verval > SYSDATE
|
|
THEN
|
|
UPDATE ins_deel
|
|
SET ins_deel_vervaldatum = v_new_verval
|
|
WHERE ins_deel_key = p_deel_key;
|
|
|
|
fac.trackaction('INSUPD', p_deel_key, p_user_key, NULL, 'Object gewijzigd' || CHR(10)
|
|
|| 'Vervaldatum: ' || v_oud_verval_str || ' --> ' || v_new_verval_str);
|
|
|
|
fac.trackaction ('CUST01', p_deel_key, p_user_key, NULL, '#Mandaat/Vrijstelling is verlengd');
|
|
END IF;
|
|
END;
|
|
--
|
|
END gvba;
|
|
/
|
|
|
|
|
|
|
|
CREATE OR REPLACE VIEW gvba_v_imp_organisatie
|
|
AS
|
|
SELECT orgb.nivo, org.code prs_afdeling_naam,
|
|
omschrijving prs_afdeling_omschrijving,
|
|
pcode prs_afdeling_naam_parent,
|
|
DECODE((select count(*) from prs_afdeling af where af.prs_afdeling_verwijder is null and af.prs_afdeling_upper = upper(org.code)),0,'ADD','MOD') Aktie
|
|
FROM gvba_imp_organisatie org,
|
|
(SELECT 5 nivo, code prs_afdeling_naam
|
|
FROM gvba_imp_organisatie
|
|
WHERE ppppcode IS NOT NULL
|
|
UNION ALL
|
|
SELECT 4 nivos, code prs_afdeling_naam
|
|
FROM gvba_imp_organisatie
|
|
WHERE pppcode IS NOT NULL AND ppppcode IS NULL
|
|
UNION ALL
|
|
SELECT 3 nivos, code prs_afdeling_naam
|
|
FROM gvba_imp_organisatie
|
|
WHERE ppcode IS NOT NULL AND pppcode IS NULL
|
|
UNION ALL
|
|
SELECT 2 nivos, code prs_afdeling_naam
|
|
FROM gvba_imp_organisatie
|
|
WHERE pcode IS NOT NULL AND ppcode IS NULL
|
|
UNION ALL
|
|
SELECT 1 nivos, code prs_afdeling_naam
|
|
FROM gvba_imp_organisatie
|
|
WHERE pcode IS NULL) orgb
|
|
WHERE org.code = orgb.prs_afdeling_naam
|
|
AND org.pppppcode IS NULL -- afdelingsnivo 6 wordt niet ondersteund
|
|
AND org.code = orgb.prs_afdeling_naam
|
|
AND NOT EXISTS (SELECT 'Dubbele afdelingen in importbestand uitsluiten'
|
|
FROM GVBA_IMP_ORGANISATIE org2
|
|
WHERE org2.code = org.code
|
|
GROUP BY code
|
|
HAVING COUNT(*) > 1
|
|
)
|
|
UNION ALL
|
|
SELECT niveau nivo, prs_afdeling_naam, prs_afdeling_omschrijving, '', 'DEL'
|
|
FROM GVBA_IMP_ORGANISATIE org, prs_v_afdeling af
|
|
WHERE af.prs_afdeling_verwijder IS NULL
|
|
AND UPPER (org.code(+)) = af.prs_afdeling_upper
|
|
/
|
|
|
|
|
|
|
|
CREATE OR REPLACE PROCEDURE gvba_import_organisatie (
|
|
p_import_key IN NUMBER
|
|
)
|
|
AS
|
|
|
|
CURSOR c1 IS
|
|
SELECT *
|
|
FROM fac_imp_file
|
|
WHERE fac_import_key = p_import_key;
|
|
|
|
rec1 c1%ROWTYPE;
|
|
|
|
v_newline fac_imp_file.fac_imp_file_line%TYPE; -- Import line
|
|
v_fielddelimitor VARCHAR2 (1); -- Field seperator
|
|
v_errormsg VARCHAR (200);
|
|
oracle_err_num NUMBER;
|
|
oracle_err_mes VARCHAR2 (200);
|
|
v_errmes VARCHAR(1024);
|
|
|
|
-- De importvelden
|
|
v_code VARCHAR2(100);
|
|
v_omschrijving VARCHAR2(100);
|
|
v_pcode VARCHAR2(100);
|
|
v_ppcode VARCHAR2(100);
|
|
v_pppcode VARCHAR2(100);
|
|
v_ppppcode VARCHAR2(100);
|
|
v_pppppcode VARCHAR2(100);
|
|
|
|
-- Overig
|
|
header_is_valid BOOLEAN;
|
|
v_controle_res VARCHAR2 (30);
|
|
v_teller INTEGER;
|
|
BEGIN
|
|
v_fielddelimitor := ';';
|
|
header_is_valid := TRUE; -- No header present
|
|
|
|
DELETE FROM gvba_imp_organisatie;
|
|
|
|
commit;
|
|
|
|
BEGIN
|
|
v_teller := 0;
|
|
OPEN c1;
|
|
IF c1%ISOPEN THEN
|
|
|
|
v_teller := 1;
|
|
|
|
LOOP
|
|
BEGIN
|
|
v_errmes := 'Fout FETCH te importeren rij';
|
|
FETCH c1 INTO rec1;
|
|
EXIT WHEN c1%NOTFOUND;
|
|
|
|
v_errmes := 'Fout opvragen te importeren rij';
|
|
|
|
v_newline := rec1.fac_imp_file_line;
|
|
fac.imp_getfield (v_newline, v_fielddelimitor, v_code);
|
|
fac.imp_getfield (v_newline, v_fielddelimitor, v_omschrijving);
|
|
fac.imp_getfield (v_newline, v_fielddelimitor, v_pcode);
|
|
fac.imp_getfield (v_newline, v_fielddelimitor, v_ppcode);
|
|
fac.imp_getfield (v_newline, v_fielddelimitor, v_pppcode);
|
|
fac.imp_getfield (v_newline, v_fielddelimitor, v_ppppcode);
|
|
fac.imp_getfield (v_newline, v_fielddelimitor, v_pppppcode);
|
|
|
|
v_errmes := 'Fout bij schrijven te importeren rij in Facilitor database';
|
|
|
|
INSERT INTO gvba_imp_organisatie
|
|
(code
|
|
,omschrijving
|
|
,pcode
|
|
,ppcode
|
|
,pppcode
|
|
,ppppcode
|
|
,pppppcode
|
|
)
|
|
VALUES (SUBSTR (v_code, 1, 10),
|
|
SUBSTR (v_omschrijving, 1, 60),
|
|
SUBSTR (v_pcode, 1, 10),
|
|
SUBSTR (v_ppcode, 1, 10),
|
|
SUBSTR (v_pppcode, 1, 10),
|
|
SUBSTR (v_ppppcode, 1, 10),
|
|
SUBSTR (v_pppppcode, 1, 10)
|
|
);
|
|
|
|
v_teller := v_teller + 1;
|
|
COMMIT; -- alles is goed gegaan
|
|
|
|
EXCEPTION WHEN OTHERS THEN
|
|
ROLLBACK;
|
|
|
|
oracle_err_num := SQLCODE;
|
|
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
|
|
fac.imp_writelog (p_import_key,
|
|
'E',
|
|
v_errmes,
|
|
'Oracle foutmelding (' || oracle_err_num || '/' || oracle_err_mes || ')'
|
|
);
|
|
|
|
COMMIT; -- Logging opslaan
|
|
|
|
END;
|
|
END LOOP;
|
|
|
|
END IF;
|
|
CLOSE c1;
|
|
COMMIT;
|
|
END;
|
|
|
|
END;
|
|
/
|
|
|
|
CREATE OR REPLACE PROCEDURE gvba_update_organisatie (
|
|
p_import_key IN NUMBER
|
|
)
|
|
AS
|
|
|
|
-- Constanten
|
|
c_bedrijf_naam VARCHAR(30) := 'GVBA';
|
|
|
|
CURSOR c1 IS
|
|
SELECT *
|
|
FROM gvba_v_imp_organisatie
|
|
WHERE aktie = 'ADD'
|
|
ORDER BY nivo;
|
|
|
|
rec1 c1%ROWTYPE;
|
|
|
|
CURSOR c2 IS
|
|
SELECT *
|
|
FROM gvba_v_imp_organisatie
|
|
WHERE aktie = 'MOD'
|
|
ORDER BY nivo DESC;
|
|
|
|
rec2 c2%ROWTYPE;
|
|
|
|
--
|
|
afdeling_parent_key NUMBER(10);
|
|
v_bedrijf_key NUMBER(10);
|
|
v_teller INTEGER;
|
|
v_afdeling_key NUMBER(10);
|
|
oracle_err_num NUMBER;
|
|
oracle_err_mes VARCHAR2 (200);
|
|
v_errmes VARCHAR(1024);
|
|
|
|
|
|
BEGIN
|
|
|
|
v_errmes := 'Afdelingen toevoegen';
|
|
-- Afdelingen toevoegen
|
|
BEGIN
|
|
v_teller := 0;
|
|
OPEN c1;
|
|
IF c1%ISOPEN THEN
|
|
|
|
v_teller := 1;
|
|
|
|
LOOP
|
|
BEGIN
|
|
v_errmes := 'Fout bij lezen nieuw toe te voegen afdeling';
|
|
FETCH c1 INTO rec1;
|
|
EXIT WHEN c1%NOTFOUND;
|
|
|
|
v_bedrijf_key := TO_NUMBER(NULL);
|
|
afdeling_parent_key := TO_NUMBER(NULL);
|
|
|
|
IF (rec1.PRS_AFDELING_NAAM_PARENT IS NULL)
|
|
THEN
|
|
|
|
afdeling_parent_key := TO_NUMBER(NULL);
|
|
|
|
v_errmes := 'Fout bij bepalen bedrijf';
|
|
select prs_bedrijf_key
|
|
into v_bedrijf_key
|
|
from prs_bedrijf
|
|
where prs_bedrijf_verwijder is null
|
|
and prs_bedrijf_naam = c_bedrijf_naam;
|
|
|
|
ELSE
|
|
|
|
v_errmes := 'Fout bij bepalen afdeling';
|
|
SELECT prs_afdeling_key
|
|
INTO afdeling_parent_key
|
|
FROM prs_afdeling
|
|
WHERE prs_afdeling_naam = UPPER(trim(rec1.prs_afdeling_naam_parent))
|
|
AND prs_afdeling_verwijder is null;
|
|
|
|
v_bedrijf_key := TO_NUMBER(NULL);
|
|
|
|
END IF;
|
|
|
|
v_errmes := 'Fout bij toevoegen afdeling';
|
|
|
|
INSERT INTO PRS_AFDELING
|
|
(prs_afdeling_naam
|
|
,prs_afdeling_parentkey
|
|
,prs_afdeling_omschrijving
|
|
,prs_bedrijf_key
|
|
)
|
|
VALUES
|
|
(rec1.prs_afdeling_naam
|
|
,afdeling_parent_key
|
|
,rec1.prs_afdeling_omschrijving
|
|
,v_bedrijf_key
|
|
);
|
|
|
|
v_teller := v_teller + 1;
|
|
COMMIT; -- alles is goed gegaan
|
|
|
|
EXCEPTION WHEN OTHERS THEN
|
|
ROLLBACK;
|
|
|
|
oracle_err_num := SQLCODE;
|
|
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
|
|
fac.imp_writelog (p_import_key,
|
|
'E',
|
|
'Afdelingen toevoegen: ' || v_errmes,
|
|
'Oracle foutmelding (' || oracle_err_num || '/' || oracle_err_mes || ')'
|
|
);
|
|
|
|
COMMIT; -- Logging opslaan
|
|
|
|
END;
|
|
END LOOP;
|
|
|
|
END IF;
|
|
CLOSE c1;
|
|
COMMIT;
|
|
END;
|
|
|
|
v_errmes := 'Afdelingen wijzigen';
|
|
-- Afdelingen wijzigen
|
|
BEGIN
|
|
v_teller := 0;
|
|
OPEN c2;
|
|
IF c2%ISOPEN THEN
|
|
|
|
v_teller := 1;
|
|
|
|
LOOP
|
|
BEGIN
|
|
v_errmes := 'Fout FETCH te importeren rij';
|
|
FETCH c2 INTO rec2;
|
|
EXIT WHEN c2%NOTFOUND;
|
|
|
|
v_bedrijf_key := TO_NUMBER(NULL);
|
|
afdeling_parent_key := TO_NUMBER(NULL);
|
|
|
|
IF (rec2.PRS_AFDELING_NAAM_PARENT IS NULL)
|
|
THEN
|
|
|
|
afdeling_parent_key := TO_NUMBER(NULL);
|
|
|
|
v_errmes := 'Fout bij bepalen bedrijf';
|
|
select prs_bedrijf_key
|
|
into v_bedrijf_key
|
|
from prs_bedrijf
|
|
where prs_bedrijf_verwijder is null
|
|
and prs_bedrijf_naam = c_bedrijf_naam;
|
|
|
|
ELSE
|
|
|
|
v_errmes := 'Fout bij bepalen parent afdeling';
|
|
SELECT prs_afdeling_key
|
|
INTO afdeling_parent_key
|
|
FROM prs_afdeling
|
|
WHERE prs_afdeling_naam = UPPER(trim(rec2.prs_afdeling_naam_parent))
|
|
AND prs_afdeling_verwijder is null;
|
|
|
|
v_bedrijf_key := TO_NUMBER(NULL);
|
|
|
|
END IF;
|
|
|
|
v_errmes := 'Fout bij update afdeling met afdelingnaam <' || rec2.prs_afdeling_naam || '>';
|
|
UPDATE PRS_AFDELING
|
|
SET prs_afdeling_omschrijving = rec2.prs_afdeling_omschrijving,
|
|
prs_afdeling_parentkey = afdeling_parent_key
|
|
WHERE ( prs_afdeling_naam = UPPER(trim(rec2.prs_afdeling_naam))
|
|
OR ( SUBSTR(prs_afdeling_upper, 1, INSTR(prs_afdeling_upper, '/')-1) = upper(trim(rec2.prs_afdeling_naam))
|
|
AND INSTR(prs_afdeling_upper, '/') > 0
|
|
)
|
|
)
|
|
AND prs_afdeling_verwijder is null;
|
|
|
|
v_teller := v_teller + 1;
|
|
COMMIT; -- alles is goed gegaan
|
|
|
|
EXCEPTION WHEN OTHERS THEN
|
|
ROLLBACK;
|
|
|
|
oracle_err_num := SQLCODE;
|
|
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
|
|
fac.imp_writelog (p_import_key,
|
|
'E',
|
|
v_errmes,
|
|
'Oracle foutmelding (' || oracle_err_num || '/' || oracle_err_mes || ')'
|
|
);
|
|
|
|
COMMIT; -- Logging opslaan
|
|
|
|
END;
|
|
END LOOP;
|
|
|
|
END IF;
|
|
CLOSE c2;
|
|
COMMIT;
|
|
END;
|
|
|
|
-- Zet default kostenplaats_key
|
|
update prs_afdeling
|
|
set prs_kostenplaats_key = (select prs_kostenplaats_key from prs_kostenplaats where prs_kostenplaats_nr ='00000')
|
|
where prs_kostenplaats_key IS NULL;
|
|
|
|
commit;
|
|
|
|
END;
|
|
/
|
|
|
|
|
|
CREATE OR REPLACE VIEW gvba_v_imp_persoon
|
|
AS
|
|
SELECT
|
|
DECODE(p.prs_perslid_key,NULL,'ADD','MOD') AKTIE
|
|
, p.prs_perslid_key
|
|
, SUBSTR(gp.personeelsnummer,1,10) PRS_PERSLID_NR
|
|
, SUBSTR(gp.achternaam,1,30) PRS_PERSLID_NAAM
|
|
, SUBSTR(gp.voornaam,1,30) PRS_PERSLID_VOORNAAM
|
|
, SUBSTR(gp.tussenvoegsels,1,15) PRS_PERSLID_TUSSENVOEGSEL
|
|
, SUBSTR(gp.voorletters,1,10) PRS_PERSLID_VOORLETTERS
|
|
, SUBSTR(gp.telefoon,1,15) PRS_PERSLID_TELEFOONNR
|
|
, SUBSTR(gp.mobiel,1,15) PRS_PERSLID_MOBIEL
|
|
, SUBSTR(gp.grip,1,15) flex_grip
|
|
, SUBSTR(gp.login,1,30) PRS_PERSLID_OSLOGIN
|
|
, SUBSTR(gp.email,1,200) PRS_PERSLID_EMAIL
|
|
, NVL(SUBSTR(gp.functie,1,30),'Onbekend') PRS_SRTPERSLID_OMSCHRIJVING
|
|
, NVL(SUBSTR(trim(gp.organisatiecode),1,10),'Onbekend') PRS_AFDELING_NAAM
|
|
, SUBSTR(gp.kostenplaats,1,30) PRS_KOSTENPLAATS_NR
|
|
, fac.safe_to_date(gp.datum_indienst,'YYYYMMDD') PRS_PERSLID_INGANGSDATUM
|
|
, fac.safe_to_date(gp.datum_uitdienst,'YYYYMMDD') PRS_PERSLID_EINDDATUM
|
|
, SUBSTR(gp.locatie_code,1,30) flex_locatie
|
|
, SUBSTR(gp.gebouw_code,1,30) flex_gebouw
|
|
, SUBSTR(gp.verdieping_code,1,30) flex_verdieping
|
|
, SUBSTR(gp.ruimte_nr,1,30) flex_ruimte
|
|
FROM gvba_imp_persoon gp, prs_perslid p
|
|
WHERE gp.personeelsnummer = p.prs_perslid_nr(+);
|
|
/
|
|
|
|
CREATE OR REPLACE VIEW gvba_v_imp_persoon_del
|
|
AS
|
|
SELECT
|
|
p.prs_perslid_key
|
|
,p.prs_perslid_nr
|
|
FROM gvba_imp_persoon gp, prs_perslid p
|
|
WHERE gp.personeelsnummer(+) = p.prs_perslid_nr
|
|
AND p.prs_perslid_verwijder is null
|
|
AND gp.personeelsnummer IS NULL
|
|
AND p.prs_perslid_nr is not null;
|
|
/
|
|
|
|
|
|
CREATE OR REPLACE PROCEDURE gvba_import_persoon (
|
|
p_import_key IN NUMBER
|
|
)
|
|
AS
|
|
CURSOR c1 IS
|
|
SELECT *
|
|
FROM fac_imp_file
|
|
WHERE fac_import_key = p_import_key;
|
|
rec1 c1%ROWTYPE;
|
|
v_newline fac_imp_file.fac_imp_file_line%TYPE; -- Import line
|
|
v_fielddelimitor VARCHAR2 (1); -- Field seperator
|
|
v_errormsg VARCHAR (200);
|
|
oracle_err_num NUMBER;
|
|
oracle_err_mes VARCHAR2 (200);
|
|
v_errmes VARCHAR(1024);
|
|
-- De importvelden
|
|
v_personeelsnummer VARCHAR2(100);
|
|
v_achternaam VARCHAR2(100);
|
|
v_voornaam VARCHAR2(100);
|
|
v_tussenvoegsel VARCHAR2(100);
|
|
v_voorletters VARCHAR2(100);
|
|
v_telefoon VARCHAR2(100);
|
|
v_mobiel VARCHAR2(100);
|
|
v_grip VARCHAR2(100);
|
|
v_login VARCHAR2(100);
|
|
v_email VARCHAR2(200);
|
|
v_functie VARCHAR2(100);
|
|
v_organisatie_code VARCHAR2(100);
|
|
v_kostenplaats VARCHAR2(100);
|
|
v_datum_indienst VARCHAR2(100);
|
|
v_datum_uitdienst VARCHAR2(100);
|
|
v_locatie VARCHAR2(100);
|
|
v_gebouw VARCHAR2(100);
|
|
v_verdieping VARCHAR2(100);
|
|
v_ruimte_nr VARCHAR2(100);
|
|
-- Overig
|
|
header_is_valid BOOLEAN;
|
|
v_controle_res VARCHAR2 (30);
|
|
v_teller INTEGER;
|
|
BEGIN
|
|
v_fielddelimitor := ';';
|
|
header_is_valid := TRUE; -- No header present
|
|
DELETE FROM GVBA_IMP_PERSOON;
|
|
|
|
commit;
|
|
|
|
BEGIN
|
|
v_teller := 0;
|
|
OPEN c1;
|
|
IF c1%ISOPEN THEN
|
|
v_teller := 1;
|
|
LOOP
|
|
BEGIN
|
|
v_errmes := 'Fout FETCH te importeren rij';
|
|
FETCH c1 INTO rec1;
|
|
EXIT WHEN c1%NOTFOUND;
|
|
v_errmes := 'Fout opvragen te importeren rij';
|
|
v_newline := rec1.fac_imp_file_line;
|
|
fac.imp_getfield (v_newline, v_fielddelimitor, v_personeelsnummer);
|
|
fac.imp_getfield (v_newline, v_fielddelimitor, v_achternaam);
|
|
fac.imp_getfield (v_newline, v_fielddelimitor, v_voornaam);
|
|
fac.imp_getfield (v_newline, v_fielddelimitor, v_tussenvoegsel);
|
|
fac.imp_getfield (v_newline, v_fielddelimitor, v_voorletters);
|
|
fac.imp_getfield (v_newline, v_fielddelimitor, v_telefoon);
|
|
fac.imp_getfield (v_newline, v_fielddelimitor, v_mobiel);
|
|
fac.imp_getfield (v_newline, v_fielddelimitor, v_grip);
|
|
fac.imp_getfield (v_newline, v_fielddelimitor, v_login);
|
|
fac.imp_getfield (v_newline, v_fielddelimitor, v_email);
|
|
fac.imp_getfield (v_newline, v_fielddelimitor, v_functie);
|
|
fac.imp_getfield (v_newline, v_fielddelimitor, v_organisatie_code);
|
|
fac.imp_getfield (v_newline, v_fielddelimitor, v_kostenplaats);
|
|
fac.imp_getfield (v_newline, v_fielddelimitor, v_datum_indienst);
|
|
fac.imp_getfield (v_newline, v_fielddelimitor, v_datum_uitdienst);
|
|
fac.imp_getfield (v_newline, v_fielddelimitor, v_locatie);
|
|
fac.imp_getfield (v_newline, v_fielddelimitor, v_gebouw);
|
|
fac.imp_getfield (v_newline, v_fielddelimitor, v_verdieping);
|
|
fac.imp_getfield (v_newline, v_fielddelimitor, v_ruimte_nr);
|
|
v_errmes := 'Fout bij schrijven te importeren rij in Facilitor database';
|
|
INSERT INTO GVBA_IMP_PERSOON
|
|
(personeelsnummer
|
|
,achternaam
|
|
,voornaam
|
|
,tussenvoegsels
|
|
,voorletters
|
|
,telefoon
|
|
,mobiel
|
|
,grip
|
|
,login
|
|
,email
|
|
,functie
|
|
,organisatiecode
|
|
,kostenplaats
|
|
,datum_indienst
|
|
,datum_uitdienst
|
|
,locatie_code
|
|
,gebouw_code
|
|
,verdieping_code
|
|
,ruimte_nr
|
|
)
|
|
VALUES (SUBSTR (v_personeelsnummer, 1, 16),
|
|
SUBSTR (v_achternaam, 1, 30),
|
|
SUBSTR (v_voornaam, 1, 30),
|
|
SUBSTR (v_tussenvoegsel, 1, 15),
|
|
SUBSTR (v_voorletters, 1, 10),
|
|
SUBSTR (v_telefoon, 1, 15),
|
|
SUBSTR (v_mobiel, 1, 15),
|
|
SUBSTR (v_grip, 1, 15),
|
|
SUBSTR (v_login, 1, 30),
|
|
SUBSTR (v_email, 1, 200),
|
|
SUBSTR (v_functie, 1, 30),
|
|
SUBSTR (v_organisatie_code, 1, 10),
|
|
SUBSTR (v_kostenplaats, 1, 30),
|
|
SUBSTR (v_datum_indienst, 1, 8),
|
|
SUBSTR (v_datum_uitdienst, 1, 8),
|
|
SUBSTR (v_locatie, 1, 10),
|
|
SUBSTR (v_gebouw, 1, 10),
|
|
SUBSTR (v_verdieping, 1, 10),
|
|
SUBSTR (v_ruimte_nr, 1, 10)
|
|
);
|
|
v_teller := v_teller + 1;
|
|
COMMIT; -- alles is goed gegaan
|
|
EXCEPTION WHEN OTHERS THEN
|
|
ROLLBACK;
|
|
oracle_err_num := SQLCODE;
|
|
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
|
|
fac.imp_writelog (p_import_key,
|
|
'E',
|
|
'Personen import: '|| v_errmes,
|
|
'Oracle foutmelding (' || oracle_err_num || '/' || oracle_err_mes || ')'
|
|
);
|
|
COMMIT; -- Logging opslaan
|
|
END;
|
|
END LOOP;
|
|
END IF;
|
|
CLOSE c1;
|
|
COMMIT;
|
|
END;
|
|
END;
|
|
/
|
|
|
|
|
|
CREATE OR REPLACE VIEW gvba_v_afdeling_kpn_imp AS
|
|
SELECT UPPER(prs_afdeling_naam)||prs_kostenplaats_nr afdeling_kpn
|
|
FROM gvba_v_imp_persoon;
|
|
/
|
|
|
|
CREATE OR REPLACE VIEW gvba_v_afdeling_kpn_fclt AS
|
|
SELECT a.prs_afdeling_key, SUBSTR(a.prs_afdeling_upper, 1, INSTR(a.prs_afdeling_upper, '/')-1)||k.prs_kostenplaats_nr afdeling_kpn, prs_afdeling_verwijder
|
|
FROM PRS_AFDELING a, PRS_KOSTENPLAATS k
|
|
WHERE a.prs_kostenplaats_key = k.prs_kostenplaats_key
|
|
AND INSTR(a.prs_afdeling_upper, '/') > 0;
|
|
/
|
|
|
|
CREATE OR REPLACE VIEW gvba_v_afdeling_del AS
|
|
SELECT fclt.prs_afdeling_key
|
|
FROM gvba_v_afdeling_kpn_fclt fclt, gvba_v_afdeling_kpn_imp imp
|
|
WHERE imp.afdeling_kpn(+) = fclt.afdeling_kpn
|
|
AND imp.afdeling_kpn IS NULL
|
|
AND fclt.prs_afdeling_key not in (select prs_afdeling_key from prs_v_aanwezigperslid)
|
|
AND fclt.prs_afdeling_verwijder is null;
|
|
/
|
|
|
|
CREATE OR REPLACE PROCEDURE gvba_update_persoon (
|
|
p_import_key IN NUMBER
|
|
)
|
|
AS
|
|
|
|
CURSOR c1 IS
|
|
SELECT *
|
|
FROM gvba_v_imp_persoon
|
|
WHERE aktie in ('ADD','MOD');
|
|
-- AND prs_perslid_nr <= '10009';
|
|
|
|
rec1 c1%ROWTYPE;
|
|
|
|
CURSOR c2 IS
|
|
SELECT *
|
|
FROM gvba_v_imp_persoon_del
|
|
WHERE 1=1;
|
|
|
|
rec2 c2%ROWTYPE;
|
|
|
|
v_teller INTEGER;
|
|
v_count NUMBER(10);
|
|
v_perslidkostenplaats_key NUMBER(10);
|
|
v_kostenplaats_key NUMBER(10);
|
|
v_perslid_key NUMBER(10);
|
|
v_afdeling_key NUMBER(10);
|
|
v_srtperslid_key NUMBER(10);
|
|
v_prs_kenmerk_key NUMBER(10);
|
|
v_ruimte_key NUMBER(10);
|
|
v_werkplek_key NUMBER(10);
|
|
|
|
v_newline VARCHAR2 (1000); -- Import line
|
|
v_fielddelimitor VARCHAR2 (1); -- Field seperator
|
|
v_errormsg VARCHAR (200);
|
|
oracle_err_num NUMBER;
|
|
oracle_err_mes VARCHAR2 (200);
|
|
v_errmes VARCHAR(1024);
|
|
v_debug BOOLEAN;
|
|
|
|
|
|
BEGIN
|
|
|
|
v_debug := FALSE;
|
|
|
|
IF v_debug THEN
|
|
fac.imp_writelog (p_import_key,
|
|
'I',
|
|
'Processing PROCEDURE gvba_update_persoon',
|
|
'SET v_debug = FALSE to skip this information'
|
|
);
|
|
commit;
|
|
END IF;
|
|
|
|
|
|
-- Personen toevoegen/wijzigen
|
|
BEGIN
|
|
|
|
OPEN c1;
|
|
IF c1%ISOPEN THEN
|
|
|
|
LOOP
|
|
|
|
BEGIN
|
|
|
|
FETCH c1 INTO rec1;
|
|
EXIT WHEN c1%NOTFOUND;
|
|
|
|
v_afdeling_key := -1;
|
|
|
|
IF ((rec1.prs_afdeling_naam <> 'Onbekend') AND (rec1.prs_kostenplaats_nr IS NOT NULL)) THEN
|
|
v_errmes := 'Fout bij bepalen/aanmaken afdeling a.d.h.v. de afdelings-code <' || rec1.prs_afdeling_naam || '>';
|
|
gvba.set_prs_afdeling_key_volgnr(rec1.prs_afdeling_naam, rec1.prs_kostenplaats_nr);
|
|
select gvba.get_prs_afdeling_key_volgnr(rec1.prs_afdeling_naam, rec1.prs_kostenplaats_nr) into v_afdeling_key from dual;
|
|
END IF;
|
|
|
|
IF (v_afdeling_key = -1) THEN
|
|
-- Kennelijk afdeling 'Onbekend' of geen kostenplaats, dan koppelen op de 'oude' manier
|
|
SELECT gvba.get_prs_afdeling_key(rec1.prs_afdeling_naam)
|
|
INTO v_afdeling_key
|
|
FROM dual;
|
|
IF (v_afdeling_key = -1) THEN
|
|
-- Indine afdeling niet gevonden, zoek dan op 5 cijferige code
|
|
SELECT NVL(MAX(prs_afdeling_key),NULL), COUNT(*)
|
|
INTO v_afdeling_key, v_count
|
|
FROM prs_afdeling
|
|
WHERE prs_afdeling_verwijder IS NULL
|
|
AND prs_afdeling_upper like upper(SUBSTR(rec1.prs_afdeling_naam,1,5))||'%';
|
|
END IF;
|
|
END IF;
|
|
|
|
v_errmes := 'Fout bij bepalen/aanmaken functie a.d.h.v. de functie-omschrijving <' || rec1.prs_srtperslid_omschrijving || '>';
|
|
gvba.set_prs_srtperslid_key(rec1.prs_srtperslid_omschrijving);
|
|
SELECT gvba.get_prs_srtperslid_key(rec1.prs_srtperslid_omschrijving)
|
|
INTO v_srtperslid_key
|
|
FROM dual;
|
|
IF (v_srtperslid_key = -1) THEN v_srtperslid_key := TO_NUMBER(NULL); END IF;
|
|
|
|
-- Stel dat er dubbelen in het importbestand staan ...
|
|
v_errmes := 'Fout bij bepalen persoon met personeelsnummer <' || rec1.PRS_PERSLID_NR || '>';
|
|
SELECT NVL(MAX(prs_perslid_key),-1), COUNT(*)
|
|
INTO v_perslid_key, v_count
|
|
FROM prs_perslid
|
|
WHERE prs_perslid_verwijder is null
|
|
AND upper(prs_perslid_nr) = upper(rec1.PRS_PERSLID_NR);
|
|
|
|
IF (v_perslid_key = -1) THEN
|
|
|
|
v_errmes := 'Fout bij toevoegen persoon met persoonnr <' || rec1.prs_perslid_nr || '>';
|
|
|
|
SELECT prs_s_prs_alluitvoerende_keys.NEXTVAL
|
|
INTO v_perslid_key
|
|
FROM DUAL;
|
|
|
|
INSERT INTO prs_perslid
|
|
(prs_perslid_key
|
|
,prs_perslid_naam
|
|
,prs_perslid_nr
|
|
,prs_perslid_module
|
|
,prs_perslid_tussenvoegsel
|
|
,prs_perslid_voorletters
|
|
,prs_perslid_voornaam
|
|
,prs_perslid_ingangsdatum
|
|
,prs_perslid_einddatum
|
|
,prs_perslid_telefoonnr
|
|
,prs_perslid_mobiel
|
|
,prs_perslid_oslogin
|
|
,prs_srtperslid_key
|
|
,prs_afdeling_key
|
|
,prs_perslid_email)
|
|
values
|
|
(v_perslid_key
|
|
,rec1.prs_perslid_naam
|
|
,rec1.prs_perslid_nr
|
|
,'PRS'
|
|
,rec1.prs_perslid_tussenvoegsel
|
|
,rec1.prs_perslid_voorletters
|
|
,rec1.prs_perslid_voornaam
|
|
,rec1.prs_perslid_ingangsdatum
|
|
,rec1.prs_perslid_einddatum
|
|
,rec1.prs_perslid_telefoonnr
|
|
,rec1.prs_perslid_mobiel
|
|
,rec1.prs_perslid_oslogin
|
|
,v_srtperslid_key
|
|
,v_afdeling_key
|
|
,rec1.prs_perslid_email
|
|
);
|
|
|
|
ELSE
|
|
|
|
v_errmes := 'Fout bij wijzigen persoon met persoonnr <' || rec1.prs_perslid_nr || '>' || ' (' || rec1.prs_afdeling_naam||','||rec1.prs_kostenplaats_nr||','||to_char(v_afdeling_key)||')';
|
|
UPDATE prs_perslid
|
|
SET prs_perslid_naam = rec1.prs_perslid_naam
|
|
,prs_perslid_tussenvoegsel = rec1.prs_perslid_tussenvoegsel
|
|
,prs_perslid_voorletters = rec1.prs_perslid_voorletters
|
|
,prs_perslid_voornaam = rec1.prs_perslid_voornaam
|
|
,prs_perslid_ingangsdatum = rec1.prs_perslid_ingangsdatum
|
|
,prs_perslid_einddatum = rec1.prs_perslid_einddatum
|
|
,prs_perslid_telefoonnr = rec1.prs_perslid_telefoonnr
|
|
,prs_perslid_mobiel = rec1.prs_perslid_mobiel
|
|
,prs_perslid_oslogin = rec1.prs_perslid_oslogin
|
|
,prs_perslid_email = rec1.prs_perslid_email
|
|
,prs_srtperslid_key = v_srtperslid_key
|
|
,prs_afdeling_key = v_afdeling_key
|
|
,prs_perslid_verwijder = NULL
|
|
WHERE prs_perslid_key = v_perslid_key;
|
|
|
|
END IF;
|
|
|
|
-- Virtuele werkplekken bijwerken indien mogelijk
|
|
BEGIN
|
|
|
|
IF rec1.flex_ruimte IS NULL THEN
|
|
|
|
v_errmes := 'Verwijder eventueel aanwezige virtuele werkplek voor persoon. Dit voor persoon met persoonnr <' || rec1.prs_perslid_nr || '>';
|
|
DELETE FROM prs_perslidwerkplek pw
|
|
WHERE 1=1
|
|
AND pw.prs_perslid_key = v_perslid_key
|
|
AND EXISTS (SELECT 'x'
|
|
FROM PRS_WERKPLEK w
|
|
WHERE w.prs_werkplek_key = pw.prs_werkplek_key
|
|
AND w.prs_werkplek_module = 'IMP'
|
|
AND w.prs_werkplek_virtueel = 0
|
|
AND rownum=1);
|
|
|
|
ELSE
|
|
|
|
v_errmes := 'Vraag ruimte op in Facilitor? Dit voor persoon met persoonnr <' || rec1.prs_perslid_nr || '>';
|
|
v_ruimte_key := gvba.get_gvba_ruimte_key(rec1.flex_ruimte,rec1.flex_locatie);
|
|
|
|
IF v_ruimte_key > 0 THEN -- Ruimte gevonden
|
|
|
|
v_errmes := 'Maak virtuele werkplek aan indien niet aanwezig? Dit voor persoon met persoonnr <' || rec1.prs_perslid_nr || '>';
|
|
gvba.set_prs_werkplek_key(v_ruimte_key,0);
|
|
v_errmes := 'Vraag virtuele werkplek op in Facilitor? Dit voor persoon met persoonnr <' || rec1.prs_perslid_nr || '>';
|
|
v_werkplek_key := gvba.get_prs_werkplek_key(v_ruimte_key,0);
|
|
|
|
v_errmes := 'Is de virtuele werkplek gewijzigd? Dit voor persoon met persoonnr <' || rec1.prs_perslid_nr || '>';
|
|
select count(*)
|
|
into v_count
|
|
from prs_perslidwerkplek pw, prs_werkplek w
|
|
where pw.prs_perslid_key = v_perslid_key
|
|
and pw.prs_werkplek_key = v_werkplek_key
|
|
and pw.prs_werkplek_key = w.prs_werkplek_key
|
|
and w.prs_werkplek_module = 'IMP'
|
|
and w.prs_werkplek_virtueel = 0;
|
|
|
|
IF (v_count = 0) THEN
|
|
|
|
v_errmes := 'Verwijder eventueel aanwezige virtuele werkplek voor persoon. Dit voor persoon met persoonnr <' || rec1.prs_perslid_nr || '>';
|
|
DELETE FROM prs_perslidwerkplek pw
|
|
WHERE 1=1
|
|
AND pw.prs_perslid_key = v_perslid_key
|
|
AND EXISTS (SELECT 'x'
|
|
FROM PRS_WERKPLEK w
|
|
WHERE w.prs_werkplek_key = pw.prs_werkplek_key
|
|
AND w.prs_werkplek_module = 'IMP'
|
|
AND w.prs_werkplek_virtueel = 0
|
|
AND rownum=1);
|
|
|
|
v_errmes := 'Voeg werkplek toe voor persoon met persoonnr <' || rec1.prs_perslid_nr || '>';
|
|
insert into PRS_PERSLIDWERKPLEK
|
|
(prs_perslid_key
|
|
,prs_werkplek_key)
|
|
values
|
|
(v_perslid_key
|
|
,v_werkplek_key);
|
|
|
|
ELSE
|
|
|
|
v_errmes := 'Geen werkplekwijziging voor persoon met persoonnr <' || rec1.prs_perslid_nr || '>';
|
|
|
|
END IF;
|
|
|
|
ELSE
|
|
|
|
IF v_ruimte_key = -1 THEN -- Fout bij zoeken ruimte
|
|
v_errmes := 'Geen werkplekwijziging voor persoon met persoonnr <' || rec1.prs_perslid_nr || '>';
|
|
fac.imp_writelog (p_import_key,
|
|
'I',
|
|
v_errmes,
|
|
'Foutmelding (Koppeling persoon/werkplek niet gewijzigd omdat ruimte <'|| rec1.flex_ruimte || '> niet kan worden gevonden.)'
|
|
);
|
|
commit;
|
|
|
|
ELSE -- v_ruimte_key = 0
|
|
v_errmes := 'Geen werkplek aanmaken!';
|
|
END IF;
|
|
|
|
COMMIT; -- Logging opslaan
|
|
|
|
END IF;
|
|
|
|
END IF;
|
|
|
|
|
|
EXCEPTION WHEN OTHERS THEN
|
|
oracle_err_num := SQLCODE;
|
|
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
|
|
fac.imp_writelog (p_import_key,
|
|
'I',
|
|
'Koppeling persoon/werkplek: '|| v_errmes,
|
|
'Oracle foutmelding (' || oracle_err_num || '/' || oracle_err_mes || ')'
|
|
);
|
|
COMMIT; -- Logging opslaan
|
|
-- Ga door met het toevoegen wijzigen van de persoon!
|
|
END;
|
|
|
|
v_errmes := 'Fout bij toevoegen flexibele kenmerken voor persoon met persoonnr <' || rec1.prs_perslid_nr || '>';
|
|
BEGIN -- FlexProps
|
|
|
|
v_errmes := 'Fout bij toevoegen flexibele kenmerken Kostenplaats voor persoon met persoonnr <' || rec1.prs_perslid_nr || '>';
|
|
SELECT gvba.get_prs_kenmerk_key('P','Kostenplaats')
|
|
INTO v_prs_kenmerk_key
|
|
FROM dual;
|
|
gvba.set_prs_ckenmerk_waarde(v_prs_kenmerk_key,v_perslid_key,rec1.prs_kostenplaats_nr);
|
|
|
|
v_errmes := 'Fout bij toevoegen flexibele kenmerken Grip voor persoon met persoonnr <' || rec1.prs_perslid_nr || '>';
|
|
SELECT gvba.get_prs_kenmerk_key('P','Grip')
|
|
INTO v_prs_kenmerk_key
|
|
FROM dual;
|
|
gvba.set_prs_ckenmerk_waarde(v_prs_kenmerk_key,v_perslid_key,rec1.FLEX_GRIP);
|
|
|
|
v_errmes := 'Fout bij toevoegen flexibele kenmerken LocatieCode voor persoon met persoonnr <' || rec1.prs_perslid_nr || '>';
|
|
SELECT gvba.get_prs_kenmerk_key('P','LocatieCode')
|
|
INTO v_prs_kenmerk_key
|
|
FROM dual;
|
|
gvba.set_prs_ckenmerk_waarde(v_prs_kenmerk_key,v_perslid_key,rec1.FLEX_LOCATIE);
|
|
|
|
v_errmes := 'Fout bij toevoegen flexibele kenmerken GebouwCode voor persoon met persoonnr <' || rec1.prs_perslid_nr || '>';
|
|
SELECT gvba.get_prs_kenmerk_key('P','GebouwCode')
|
|
INTO v_prs_kenmerk_key
|
|
FROM dual;
|
|
gvba.set_prs_ckenmerk_waarde(v_prs_kenmerk_key,v_perslid_key,rec1.FLEX_GEBOUW);
|
|
|
|
v_errmes := 'Fout bij toevoegen flexibele kenmerken VerdiepingCode voor persoon met persoonnr <' || rec1.prs_perslid_nr || '>';
|
|
SELECT gvba.get_prs_kenmerk_key('P','VerdiepingCode')
|
|
INTO v_prs_kenmerk_key
|
|
FROM dual;
|
|
gvba.set_prs_ckenmerk_waarde(v_prs_kenmerk_key,v_perslid_key,rec1.FLEX_VERDIEPING);
|
|
|
|
v_errmes := 'Fout bij toevoegen flexibele kenmerken RuimteNr voor persoon met persoonnr <' || rec1.prs_perslid_nr || '>';
|
|
SELECT gvba.get_prs_kenmerk_key('P','RuimteNr')
|
|
INTO v_prs_kenmerk_key
|
|
FROM dual;
|
|
gvba.set_prs_ckenmerk_waarde(v_prs_kenmerk_key,v_perslid_key,rec1.FLEX_RUIMTE);
|
|
|
|
END;
|
|
|
|
COMMIT; -- Er zijn geen fouten opgetreden
|
|
|
|
EXCEPTION WHEN OTHERS THEN
|
|
|
|
ROLLBACK;
|
|
|
|
oracle_err_num := SQLCODE;
|
|
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
|
|
fac.imp_writelog (p_import_key,
|
|
'E',
|
|
'Personen toevoegen/wijzigen: '|| v_errmes,
|
|
'Oracle foutmelding (' || oracle_err_num || '/' || oracle_err_mes || ')'
|
|
);
|
|
|
|
COMMIT; -- Logging opslaan
|
|
|
|
END;
|
|
|
|
END LOOP;
|
|
|
|
CLOSE c1;
|
|
COMMIT;
|
|
|
|
END IF; -- IF c1%ISOPEN THEN
|
|
|
|
END; -- Personen toevoegen/wijzigen
|
|
|
|
|
|
-- Personen verwijderen
|
|
BEGIN
|
|
v_teller := 0;
|
|
OPEN c2;
|
|
IF c2%ISOPEN THEN
|
|
|
|
v_teller := 1;
|
|
|
|
LOOP
|
|
BEGIN
|
|
v_errmes := 'Fout FETCH te importeren rij';
|
|
FETCH c2 INTO rec2;
|
|
EXIT WHEN c2%NOTFOUND;
|
|
|
|
SELECT count(*)
|
|
INTO v_count
|
|
FROM prs_v_verplichting
|
|
WHERE prs_perslid_key = rec2.prs_perslid_key;
|
|
|
|
IF (v_count = 0) THEN
|
|
|
|
update prs_perslid
|
|
set prs_perslid_verwijder = sysdate
|
|
where prs_perslid_key = rec2.prs_perslid_key;
|
|
|
|
-- Verwijder nu pas, als de persoon 'verwijderd' is, eventueel aanwezige kenmerken
|
|
update prs_kenmerklink
|
|
set prs_kenmerklink_verwijder = sysdate
|
|
where prs_link_key = rec2.prs_perslid_key;
|
|
|
|
-- Verwijder nu pas de werkplekken, als koppeling prs_perslid met prs_werkplek
|
|
-- Aanname/FSN#26947: GVBA-setting op EXPLICIETE werkplekken!
|
|
DELETE FROM prs_perslidwerkplek WHERE prs_perslid_key = rec2.prs_perslid_key;
|
|
|
|
ELSE
|
|
|
|
fac.imp_writelog (p_import_key,
|
|
'E',
|
|
'Persoon met personeelsnummer ' || rec2.prs_perslid_nr || ' kan niet verwijderd worden.',
|
|
'Persoon heeft nog ' || to_char(v_count) || ' openstaande verplichting(en).'
|
|
);
|
|
commit;
|
|
|
|
END IF;
|
|
|
|
v_teller := v_teller + 1;
|
|
COMMIT; -- alles is goed gegaan
|
|
|
|
EXCEPTION WHEN OTHERS THEN
|
|
ROLLBACK;
|
|
|
|
oracle_err_num := SQLCODE;
|
|
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
|
|
fac.imp_writelog (p_import_key,
|
|
'E',
|
|
'Personen verwijderen: '|| v_errmes,
|
|
'Oracle foutmelding (' || oracle_err_num || '/' || oracle_err_mes || ')'
|
|
);
|
|
|
|
COMMIT; -- Logging opslaan
|
|
|
|
END;
|
|
END LOOP;
|
|
|
|
END IF;
|
|
CLOSE c2;
|
|
COMMIT;
|
|
END;
|
|
|
|
-- Afdelingen opruimen
|
|
UPDATE PRS_AFDELING
|
|
SET prs_afdeling_verwijder = SYSDATE
|
|
WHERE prs_afdeling_key IN (SELECT prs_afdeling_key FROM gvba_v_afdeling_del);
|
|
|
|
|
|
END;
|
|
/
|
|
|
|
|
|
|
|
|
|
-- toevoegen ruimtes
|
|
CREATE OR REPLACE PROCEDURE gvba_import_ruimte (
|
|
p_import_key IN NUMBER
|
|
)
|
|
AS
|
|
|
|
CURSOR c1 IS
|
|
SELECT *
|
|
FROM fac_imp_file
|
|
WHERE fac_import_key = p_import_key;
|
|
|
|
rec1 c1%ROWTYPE;
|
|
|
|
v_newline fac_imp_file.fac_imp_file_line%TYPE; -- Import line
|
|
v_fielddelimitor VARCHAR2 (1); -- Field seperator
|
|
v_errormsg VARCHAR (200);
|
|
oracle_err_num NUMBER;
|
|
oracle_err_mes VARCHAR2 (200);
|
|
v_errmes VARCHAR(1024);
|
|
|
|
-- De importvelden
|
|
v_locatie VARCHAR2(5);
|
|
v_gebouw VARCHAR2(5);
|
|
v_verdieping NUMBER(3);
|
|
v_ruimte VARCHAR2(10);
|
|
v_omschrijving VARCHAR2(30);
|
|
|
|
-- Overig
|
|
header_is_valid BOOLEAN;
|
|
v_controle_res VARCHAR2 (30);
|
|
v_teller INTEGER;
|
|
BEGIN
|
|
v_fielddelimitor := ';';
|
|
header_is_valid := TRUE; -- No header present
|
|
|
|
DELETE FROM gvba_imp_ruimte;
|
|
|
|
BEGIN
|
|
v_teller := 0;
|
|
OPEN c1;
|
|
IF c1%ISOPEN THEN
|
|
|
|
v_teller := 1;
|
|
|
|
LOOP
|
|
BEGIN
|
|
v_errmes := 'Fout FETCH te importeren rij';
|
|
FETCH c1 INTO rec1;
|
|
EXIT WHEN c1%NOTFOUND;
|
|
|
|
v_errmes := 'Fout opvragen te importeren rij';
|
|
|
|
v_newline := rec1.fac_imp_file_line;
|
|
fac.imp_getfield (v_newline, v_fielddelimitor, v_locatie);
|
|
fac.imp_getfield (v_newline, v_fielddelimitor, v_gebouw);
|
|
fac.imp_getfield (v_newline, v_fielddelimitor, v_verdieping);
|
|
fac.imp_getfield (v_newline, v_fielddelimitor, v_ruimte);
|
|
fac.imp_getfield (v_newline, v_fielddelimitor, v_omschrijving);
|
|
|
|
v_errmes := 'Fout bij schrijven te importeren rij in Facilitor database';
|
|
|
|
INSERT INTO gvba_imp_ruimte
|
|
(locatie
|
|
,gebouw
|
|
,verdieping
|
|
,ruimte
|
|
,omschrijving
|
|
)
|
|
VALUES (SUBSTR (v_locatie, 1, 5),
|
|
SUBSTR (v_gebouw, 1, 5),
|
|
TO_NUMBER (v_verdieping),
|
|
SUBSTR (v_ruimte, 1, 10),
|
|
SUBSTR (v_omschrijving, 1, 30)
|
|
);
|
|
|
|
v_teller := v_teller + 1;
|
|
COMMIT; -- alles is goed gegaan
|
|
|
|
EXCEPTION WHEN OTHERS THEN
|
|
ROLLBACK;
|
|
|
|
oracle_err_num := SQLCODE;
|
|
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
|
|
fac.imp_writelog (p_import_key,
|
|
'E',
|
|
v_errmes || '(' || rec1.fac_imp_file_line || ')',
|
|
'Oracle foutmelding (' || oracle_err_num || '/' || oracle_err_mes || ')'
|
|
);
|
|
|
|
COMMIT; -- Logging opslaan
|
|
|
|
END;
|
|
END LOOP;
|
|
|
|
END IF;
|
|
CLOSE c1;
|
|
COMMIT;
|
|
END;
|
|
|
|
END;
|
|
/
|
|
|
|
CREATE OR REPLACE PROCEDURE gvba_update_ruimte (
|
|
p_import_key IN NUMBER
|
|
)
|
|
AS
|
|
|
|
-- Constanten
|
|
c_bedrijf_naam VARCHAR(30) := 'GVBA';
|
|
|
|
CURSOR c1 IS
|
|
SELECT locatie, gebouw, verdieping, ruimte, omschrijving
|
|
FROM gvba_imp_ruimte;
|
|
|
|
rec1 c1%ROWTYPE;
|
|
|
|
|
|
--
|
|
v_locatie_key NUMBER(10);
|
|
v_gebouw_key NUMBER(10);
|
|
v_verdieping_key NUMBER(10);
|
|
v_count INTEGER;
|
|
v_teller INTEGER;
|
|
oracle_err_num NUMBER;
|
|
oracle_err_mes VARCHAR2 (200);
|
|
v_errmes VARCHAR(1024);
|
|
|
|
|
|
BEGIN
|
|
|
|
v_errmes := 'ruimte toevoegen';
|
|
-- Afdelingen toevoegen
|
|
BEGIN
|
|
v_teller := 0;
|
|
OPEN c1;
|
|
IF c1%ISOPEN THEN
|
|
|
|
v_teller := 1;
|
|
|
|
LOOP
|
|
BEGIN
|
|
v_errmes := 'Fout bij lezen nieuw toe te voegen locatie';
|
|
FETCH c1 INTO rec1;
|
|
EXIT WHEN c1%NOTFOUND;
|
|
|
|
SELECT count(*)
|
|
INTO v_count
|
|
FROM alg_v_aanweziglocatie
|
|
WHERE alg_locatie_code = upper(rec1.locatie);
|
|
|
|
IF v_count = 0 THEN
|
|
INSERT INTO alg_locatie (
|
|
alg_locatie_code,
|
|
alg_locatie_omschrijving,
|
|
alg_district_key)
|
|
VALUES (
|
|
rec1.locatie,
|
|
rec1.locatie,
|
|
1);
|
|
END IF;
|
|
|
|
SELECT alg_locatie_key
|
|
INTO v_locatie_key
|
|
FROM alg_v_aanweziglocatie
|
|
WHERE alg_locatie_code = upper(rec1.locatie);
|
|
|
|
v_errmes := 'Fout bij lezen nieuw toe te voegen gebouw';
|
|
SELECT count(*)
|
|
INTO v_count
|
|
FROM alg_v_aanweziggebouw
|
|
WHERE alg_locatie_key = v_locatie_key
|
|
AND alg_gebouw_code = upper(rec1.gebouw);
|
|
|
|
IF v_count = 0 THEN
|
|
INSERT INTO alg_gebouw (
|
|
alg_locatie_key,
|
|
alg_gebouw_naam,
|
|
alg_gebouw_code,
|
|
alg_srtgebouw_key)
|
|
VALUES (
|
|
v_locatie_key,
|
|
rec1.gebouw,
|
|
rec1.gebouw,
|
|
1);
|
|
END IF;
|
|
|
|
SELECT alg_gebouw_key
|
|
INTO v_gebouw_key
|
|
FROM alg_v_aanweziggebouw
|
|
WHERE alg_locatie_key = v_locatie_key
|
|
AND alg_gebouw_code = upper(rec1.gebouw);
|
|
|
|
v_errmes := 'Fout bij lezen nieuw toe te voegen verdieping';
|
|
SELECT count(*)
|
|
INTO v_count
|
|
FROM alg_v_aanwezigverdieping
|
|
WHERE alg_gebouw_key = v_gebouw_key
|
|
AND alg_verdieping_volgnr = rec1.verdieping;
|
|
|
|
v_errmes := 'Fout bij lezen nieuw toe te voegen verdieping aantal='||v_count;
|
|
IF v_count = 0 THEN
|
|
INSERT INTO alg_verdieping (
|
|
alg_gebouw_key,
|
|
alg_verdieping_omschrijving,
|
|
alg_verdieping_volgnr,
|
|
alg_verdieping_code)
|
|
VALUES (
|
|
v_gebouw_key,
|
|
DECODE (rec1.verdieping,
|
|
-1, 'Kelder',
|
|
0, 'Begane grond',
|
|
1, 'Eerste verdieping',
|
|
2, 'Tweede verdieping',
|
|
3, 'Derde verdieping',
|
|
4, 'Vierde verdieping',
|
|
5, 'Vijfde verdieping',
|
|
null),
|
|
rec1.verdieping,
|
|
DECODE (rec1.verdieping,
|
|
-1, 'K',
|
|
0, 'BG',
|
|
1, '1',
|
|
2, '2',
|
|
3, '3',
|
|
4, '4',
|
|
5, '5',
|
|
null)
|
|
);
|
|
END IF;
|
|
|
|
SELECT alg_verdieping_key
|
|
INTO v_verdieping_key
|
|
FROM alg_v_aanwezigverdieping
|
|
WHERE alg_gebouw_key = v_gebouw_key
|
|
AND alg_verdieping_volgnr = rec1.verdieping;
|
|
|
|
v_errmes := 'Fout bij lezen nieuw toe te voegen ruimte';
|
|
SELECT count(*)
|
|
INTO v_count
|
|
FROM alg_v_aanwezigruimte
|
|
WHERE alg_verdieping_key = v_verdieping_key
|
|
AND alg_ruimte_nr = rec1.ruimte;
|
|
|
|
IF v_count = 0 THEN
|
|
INSERT INTO alg_ruimte (
|
|
alg_verdieping_key,
|
|
alg_ruimte_omschrijving,
|
|
alg_ruimte_nr,
|
|
alg_srtruimte_key)
|
|
VALUES (
|
|
v_verdieping_key,
|
|
rec1.omschrijving,
|
|
rec1.ruimte,
|
|
1
|
|
);
|
|
END IF;
|
|
|
|
|
|
|
|
v_teller := v_teller + 1;
|
|
COMMIT; -- alles is goed gegaan
|
|
|
|
EXCEPTION WHEN OTHERS THEN
|
|
ROLLBACK;
|
|
|
|
oracle_err_num := SQLCODE;
|
|
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
|
|
fac.imp_writelog (p_import_key,
|
|
'E',
|
|
'Ruimte toevoegen('|| rec1.locatie || ',' || rec1.gebouw ||',' || rec1.verdieping || ',' || rec1.ruimte || ',' || rec1.omschrijving || '): ' || v_errmes,
|
|
'Oracle foutmelding (' || oracle_err_num || '/' || oracle_err_mes || ')'
|
|
);
|
|
|
|
COMMIT; -- Logging opslaan
|
|
|
|
END;
|
|
END LOOP;
|
|
|
|
END IF;
|
|
CLOSE c1;
|
|
COMMIT;
|
|
END;
|
|
|
|
|
|
|
|
END;
|
|
/
|
|
|
|
CREATE OR REPLACE PACKAGE GVBA_RAP AS
|
|
-- PACKAGES voor de GVBA specifieke rapportages
|
|
TYPE t_cursor IS REF CURSOR;
|
|
PROCEDURE gvba_rap_kwismelding (user_key IN NUMBER, p_datum_van IN VARCHAR2, p_datum_tot IN VARCHAR2, p_cursor OUT t_cursor);
|
|
END;
|
|
/
|
|
|
|
/* Formatted on 13-5-2013 11:45:15 (QP5 v5.115.810.9015) */
|
|
CREATE OR REPLACE PACKAGE BODY GVBA_RAP
|
|
AS
|
|
--
|
|
-- Algemene procedures en functies.
|
|
--
|
|
|
|
PROCEDURE gvba_rap_kwismelding (user_key IN NUMBER,
|
|
p_datum_van IN VARCHAR2-- Let wel: formaat '13-05-2005'
|
|
,
|
|
p_datum_tot IN VARCHAR2,
|
|
p_cursor OUT t_cursor)
|
|
AS
|
|
v_datum_van DATE;
|
|
v_datum_tot DATE;
|
|
BEGIN
|
|
v_datum_van := fac.safe_to_date (p_datum_van, 'dd-mm-yyyy');
|
|
v_datum_tot := fac.safe_to_date (p_datum_tot, 'dd-mm-yyyy');
|
|
|
|
OPEN p_cursor FOR
|
|
SELECT DISTINCT
|
|
m.mld_melding_key nummer,
|
|
TO_CHAR (m.mld_melding_datum, 'DD-MM-YYYY HH24:MI') datum,
|
|
(SELECT mld_statuses_omschrijving
|
|
FROM mld_statuses s
|
|
WHERE m.mld_melding_status = s.mld_statuses_key)
|
|
status,
|
|
TO_CHAR (
|
|
mld.getmeldingstatusdate (m.mld_melding_key,
|
|
m.mld_melding_status),
|
|
'YYYY-MM-DD HH24:MI'
|
|
)
|
|
laatste_actie,
|
|
(SELECT sd.ins_srtdiscipline_omschrijving
|
|
FROM ins_srtdiscipline sd
|
|
WHERE sd.ins_srtdiscipline_key =
|
|
md.ins_srtdiscipline_key)
|
|
kwis,
|
|
SUBSTR (md.ins_discipline_omschrijving, 3) vakgroep,
|
|
(SELECT stdm.mld_stdmelding_omschrijving
|
|
FROM mld_stdmelding stdm
|
|
WHERE m.mld_stdmelding_key = stdm.mld_stdmelding_key)
|
|
melding,
|
|
m.mld_melding_omschrijving omschrijving,
|
|
m.mld_melding_opmerking actie,
|
|
(SELECT d.prs_afdeling_naam6
|
|
FROM prs_v_afdeling d
|
|
WHERE p.prs_afdeling_key = d.prs_afdeling_key)
|
|
organisatie,
|
|
p.prs_perslid_naam
|
|
|| DECODE (NVL (p.prs_perslid_voorletters, ''),
|
|
'', '',
|
|
', ' || p.prs_perslid_voorletters)
|
|
|| DECODE (NVL (p.prs_perslid_tussenvoegsel, ''),
|
|
'', '',
|
|
' ' || p.prs_perslid_tussenvoegsel)
|
|
|| DECODE (NVL (p.prs_perslid_voornaam, ''),
|
|
'', '',
|
|
' (' || p.prs_perslid_voornaam || ')')
|
|
naam,
|
|
(SELECT k.prs_kostenplaats_nr
|
|
|| ' '
|
|
|| k.prs_kostenplaats_omschrijving
|
|
FROM prs_kostenplaats k
|
|
WHERE k.prs_kostenplaats_key = m.prs_kostenplaats_key)
|
|
kostenplaats,
|
|
(SELECT alg_locatie_code
|
|
FROM alg_locatie l
|
|
WHERE m.mld_alg_locatie_key = l.alg_locatie_key)
|
|
|| (SELECT DECODE (g.alg_gebouw_code,
|
|
NULL, '',
|
|
'-' || g.alg_gebouw_code)
|
|
|| DECODE (g.alg_verdieping_code,
|
|
NULL, '',
|
|
'-' || g.alg_verdieping_code)
|
|
|| DECODE (g.alg_ruimte_nr,
|
|
NULL, '',
|
|
'-' || g.alg_ruimte_nr)
|
|
|| DECODE (g.alg_terreinsector_code,
|
|
NULL, '',
|
|
'-' || g.alg_terreinsector_code)
|
|
FROM alg_v_allonrgoed_gegevens g
|
|
WHERE m.mld_alg_onroerendgoed_keys =
|
|
g.alg_onroerendgoed_keys)
|
|
plaats
|
|
FROM mld_melding m,
|
|
mld_stdmelding std,
|
|
mld_discipline md,
|
|
alg_v_onroerendgoed_gegevens v,
|
|
alg_locatie l,
|
|
prs_perslid p
|
|
WHERE m.mld_alg_locatie_key = l.alg_locatie_key(+)
|
|
AND m.mld_alg_onroerendgoed_keys =
|
|
v.alg_onroerendgoed_keys(+)
|
|
AND m.prs_perslid_key = p.prs_perslid_key
|
|
AND m.mld_stdmelding_key = std.mld_stdmelding_key
|
|
AND std.mld_ins_discipline_key = md.ins_discipline_key
|
|
AND m.mld_melding_datum BETWEEN v_datum_van AND v_datum_tot
|
|
ORDER BY 1, 2, 3 DESC;
|
|
END;
|
|
END;
|
|
/
|
|
|
|
CREATE OR REPLACE VIEW gvba_v_huurder
|
|
AS
|
|
SELECT prs_bedrijf_key, prs_bedrijf_naam, prs_bedrijf_verwijder
|
|
FROM prs_bedrijf
|
|
WHERE prs_bedrijf_huurder = 1;
|
|
|
|
--GVBA#12148
|
|
CREATE OR REPLACE VIEW gvba_v_perslid_last_login (hide_f_datum, naam, login)
|
|
AS
|
|
SELECT SYSDATE - prs_perslid_login, pf.prs_perslid_naam_full,
|
|
TO_CHAR (prs_perslid_login, 'dd-mm-yyyy hh24:mi')
|
|
FROM prs_perslid p, prs_v_perslid_fullnames pf
|
|
WHERE p.prs_perslid_key = pf.prs_perslid_key
|
|
AND prs_perslid_login IS NOT NULL;
|
|
|
|
|
|
CREATE OR REPLACE VIEW GVBA_V_RAP_ERRORLOG
|
|
(
|
|
HIDE_F_IMP_LOG_DATUM,
|
|
FCLT_F_APPLICATIE,
|
|
FCLT_F_DATUM,
|
|
TIJDSTIP,
|
|
FCLT_F_NIVEAU,
|
|
FCLT_F_OMSCHRIJVING
|
|
)
|
|
AS
|
|
SELECT imp_log_datum hide_f_imp_log_datum,
|
|
imp_log_applicatie,
|
|
TO_CHAR (imp_log_datum, 'YYYYMMDD') fclt_f_datum,
|
|
TO_CHAR (imp_log_datum, 'HH24:MI:SS') tijdstip,
|
|
DECODE (imp_log_status,
|
|
'F', 'Fataal',
|
|
'E', 'Error',
|
|
'W', 'Waarschuwing',
|
|
'I', 'Informatief',
|
|
'-')
|
|
fclt_f_niveau,
|
|
imp_log_omschrijving fclt_f_omschrijving
|
|
FROM imp_log;
|
|
|
|
|
|
-----------------------------------------
|
|
-- Koppeling met Strukton
|
|
-----------------------------------------
|
|
|
|
CREATE OR REPLACE PROCEDURE gvba_import_opdrstat_strukton (
|
|
p_import_key IN NUMBER)
|
|
AS
|
|
c_delim VARCHAR2 (1) := ';';
|
|
v_newline VARCHAR2 (1000); -- Input line
|
|
v_errormsg VARCHAR2 (1000);
|
|
oracle_err_num NUMBER;
|
|
oracle_err_mes VARCHAR2 (200);
|
|
v_aanduiding VARCHAR2 (1200);
|
|
v_dummy VARCHAR2 (200);
|
|
header_is_valid NUMBER := 0;
|
|
v_count NUMBER;
|
|
v_count_tot NUMBER (10) := 0;
|
|
v_count_import NUMBER (10) := 0;
|
|
v_ongeldig NUMBER (1) := 0;
|
|
-- De importvelden
|
|
v_mld_opdr_opmerking VARCHAR2 (4000);
|
|
v_mld_opdr_key NUMBER (10);
|
|
v_mld_opdr_key_tekst VARCHAR2 (100);
|
|
v_extern_nummer VARCHAR2 (100);
|
|
v_status NUMBER (10);
|
|
v_status_tekst VARCHAR2 (100);
|
|
v_status_code VARCHAR2 (100);
|
|
v_datumtijd DATE;
|
|
v_datumtijd_tekst VARCHAR2 (100);
|
|
v_opmerking VARCHAR2 (3000);
|
|
v_totaal NUMBER (8,2);
|
|
v_totaal_str VARCHAR2 (100);
|
|
|
|
-- Overige velden:
|
|
CURSOR c1
|
|
IS
|
|
SELECT *
|
|
FROM fac_imp_file
|
|
WHERE fac_import_key = p_import_key
|
|
ORDER BY fac_imp_file_index;
|
|
BEGIN
|
|
-- Eerst opruiming
|
|
DELETE FROM gvba_imp_opdrstat_strukton;
|
|
|
|
COMMIT;
|
|
|
|
FOR rec1 IN c1
|
|
LOOP
|
|
BEGIN
|
|
v_newline := rec1.fac_imp_file_line;
|
|
v_errormsg := 'Fout opvragen te importeren rij';
|
|
v_aanduiding := '';
|
|
v_ongeldig := 0;
|
|
|
|
fac.imp_getfield (v_newline, c_delim, v_mld_opdr_key_tekst);
|
|
fac.imp_getfield (v_newline, c_delim, v_extern_nummer);
|
|
fac.imp_getfield (v_newline, c_delim, v_status_code); -- typeID
|
|
fac.imp_getfield (v_newline, c_delim, v_datumtijd_tekst);
|
|
fac.imp_getfield (v_newline, c_delim, v_status_tekst);
|
|
fac.imp_getfield (v_newline, c_delim, v_opmerking);
|
|
fac.imp_getfield (v_newline, c_delim, v_totaal_str);
|
|
v_totaal := fac.safe_to_number(v_totaal_str);
|
|
|
|
fac.imp_writelog (p_import_key, 'I', 'v_totaal_str:' || v_totaal_str || ' v_totaal:' || v_totaal || ' fac.safe_to_number(v_totaal_str):' || fac.safe_to_number(v_totaal_str),'');
|
|
|
|
v_opmerking := substr(v_opmerking, 1, 1000);
|
|
-- verwijder de markering voor cr/lf die we zelf in de stylesheet toegevoegd hebben.
|
|
v_opmerking := replace(v_opmerking, '@@',CHR (13) || CHR (10));
|
|
v_aanduiding :=
|
|
'['
|
|
|| v_extern_nummer
|
|
|| '|'
|
|
|| v_mld_opdr_key_tekst
|
|
|| '|'
|
|
|| v_status_tekst
|
|
|| '|'
|
|
|| v_opmerking
|
|
|| '] ';
|
|
|
|
-- Ik controleer of ik een geldige header heb, dat is: in de juiste kolommen
|
|
-- de juiste kolomkop. Ik controleer daarbij ALLE kolommen!
|
|
-- Ik negeer alles totdat ik een geldige header ben gepasseerd.
|
|
IF (header_is_valid = 0)
|
|
THEN
|
|
IF UPPER (TRIM (v_mld_opdr_key_tekst)) = 'REFERENCEID'
|
|
AND UPPER (TRIM (v_extern_nummer)) = 'SERVICEREQUESTID'
|
|
AND UPPER (TRIM (v_status_code)) = 'TYPEID'
|
|
AND UPPER (TRIM (v_datumtijd_tekst)) = 'DATETIME'
|
|
AND UPPER (TRIM (v_opmerking)) = 'REMARKS'
|
|
AND UPPER (TRIM (v_totaal_str)) = 'TOTAL'
|
|
THEN
|
|
header_is_valid := 1;
|
|
END IF;
|
|
ELSE
|
|
v_count_tot := v_count_tot + 1;
|
|
-- Controleer alle veldwaarden
|
|
v_errormsg := 'Fout inlezen mld_opdr_key [' || v_aanduiding || ']';
|
|
v_mld_opdr_key := TRIM (v_mld_opdr_key);
|
|
|
|
BEGIN
|
|
SELECT o.mld_opdr_key, o.mld_opdr_opmerking
|
|
INTO v_mld_opdr_key, v_mld_opdr_opmerking
|
|
FROM mld_opdr o, mld_melding m, ins_tab_discipline d, ins_srtdiscipline sd, mld_stdmelding std
|
|
WHERE o.mld_melding_key = m.mld_melding_key
|
|
AND m.mld_stdmelding_key = std.mld_stdmelding_key
|
|
AND std.mld_ins_discipline_key = d.ins_discipline_key
|
|
AND d.ins_srtdiscipline_key = sd.ins_srtdiscipline_key
|
|
AND sd.ins_srtdiscipline_prefix || m.mld_melding_key || '/' || o.mld_opdr_bedrijfopdr_volgnr = v_mld_opdr_key_tekst;
|
|
|
|
EXCEPTION WHEN NO_DATA_FOUND THEN
|
|
BEGIN
|
|
fac.imp_writelog (p_import_key, 'W', 'Opdracht kan niet gevonden worden. [' || v_aanduiding || ']', '');
|
|
|
|
-- kijk nu of de opdracht gevonden kan worden a.d.h.v het Struktonnummer
|
|
SELECT o.mld_opdr_key, o.mld_opdr_opmerking
|
|
INTO v_mld_opdr_key, v_mld_opdr_opmerking
|
|
FROM mld_opdr o, mld_kenmerkopdr ko, mld_kenmerk k
|
|
WHERE o.mld_opdr_key = ko.mld_opdr_key
|
|
AND ko.mld_kenmerk_key = k.mld_kenmerk_key
|
|
AND k.mld_srtkenmerk_key = 35
|
|
AND ko.mld_kenmerkopdr_waarde = v_extern_nummer;
|
|
|
|
EXCEPTION WHEN OTHERS THEN
|
|
v_ongeldig := 1;
|
|
v_errormsg := 'Opdracht kan niet gevonden worden (intern/externnr). [' || v_aanduiding || ']';
|
|
v_mld_opdr_key := NULL;
|
|
END;
|
|
END;
|
|
|
|
IF v_ongeldig = 0
|
|
THEN
|
|
v_errormsg :=
|
|
'Fout bij bepalen status [' || v_aanduiding || ']';
|
|
|
|
CASE
|
|
WHEN v_status_code = '5'
|
|
THEN
|
|
v_status := 5; -- uitgegeven
|
|
WHEN v_status_code = '10'
|
|
THEN
|
|
v_status := 8; -- geaccepteerd
|
|
WHEN v_status_code = '20' -- monteur gereed
|
|
THEN
|
|
v_status := 6; -- afgemeld
|
|
WHEN v_status_code = '25' -- specialist gereed
|
|
THEN
|
|
v_status := 6; -- afgemeld
|
|
WHEN v_status_code = '30' -- technisch gereed
|
|
THEN
|
|
v_status := 6; -- afgemeld -- afgerond
|
|
WHEN v_status_code = '70'
|
|
THEN
|
|
v_status := 1; -- geannuleerd
|
|
WHEN v_status_code = '80'
|
|
THEN
|
|
v_status := 1; -- afgewezen
|
|
ELSE
|
|
v_status := NULL;
|
|
v_ongeldig := 1; -- nog te bezien.
|
|
END CASE;
|
|
END IF;
|
|
|
|
-- Lees alle veldwaarden
|
|
IF v_ongeldig = 0
|
|
THEN
|
|
v_errormsg :=
|
|
'Fout bij converteren datumtijd [' || v_aanduiding || ']';
|
|
v_datumtijd :=
|
|
fac.safe_to_date (
|
|
REPLACE (
|
|
SUBSTR (v_datumtijd_tekst,
|
|
1,
|
|
INSTR (v_datumtijd_tekst, '.') - 1),
|
|
'T',
|
|
' '),
|
|
'yyyy-mm-dd hh24:mi:ss');
|
|
|
|
IF v_datumtijd = NULL
|
|
THEN
|
|
v_ongeldig := 0;
|
|
END IF;
|
|
END IF;
|
|
|
|
IF v_ongeldig = 0
|
|
THEN
|
|
v_errormsg :=
|
|
'Fout bij aanvullen opmerking [' || v_aanduiding || ']';
|
|
|
|
-- controleer of de opmerking niet leeg is en of dezelfde opmerking al bij een eerdere statusovergang
|
|
-- gemeld is.
|
|
IF v_opmerking IS NOT NULL AND INSTR(COALESCE(v_mld_opdr_opmerking, 'QueQuLeQue'), v_opmerking) = 0
|
|
THEN
|
|
v_opmerking :=
|
|
'['
|
|
|| v_datumtijd_tekst
|
|
|| '] - '
|
|
|| v_status_tekst
|
|
|| CHR (13)
|
|
|| CHR (10)
|
|
|| v_opmerking;
|
|
ELSE
|
|
v_opmerking :=
|
|
'[' || v_datumtijd_tekst || '] - ' || v_status_tekst;
|
|
END IF;
|
|
END IF;
|
|
|
|
-- Insert geformatteerde import record
|
|
IF (v_ongeldig = 0)
|
|
THEN
|
|
BEGIN
|
|
v_errormsg :=
|
|
'Fout toevoegen opdracht status ['
|
|
|| v_aanduiding
|
|
|| ']';
|
|
|
|
INSERT INTO gvba_imp_opdrstat_strukton (mld_opdr_key,
|
|
extern_nummer,
|
|
status,
|
|
datumtijd,
|
|
opmerking,
|
|
totaal)
|
|
VALUES (v_mld_opdr_key,
|
|
v_extern_nummer,
|
|
v_status,
|
|
v_datumtijd,
|
|
v_opmerking,
|
|
v_totaal);
|
|
|
|
v_count_import := v_count_import + 1;
|
|
EXCEPTION
|
|
WHEN OTHERS
|
|
THEN
|
|
oracle_err_num := SQLCODE;
|
|
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
|
|
v_errormsg :=
|
|
v_errormsg
|
|
|| ' ORACLE (error '
|
|
|| oracle_err_num
|
|
|| '/'
|
|
|| oracle_err_mes
|
|
|| ')';
|
|
fac.imp_writelog (
|
|
p_import_key,
|
|
'E',
|
|
v_aanduiding || v_errormsg,
|
|
'Fout bij toevoegen regel aan importtabel gvba_imp_opdr_status_strukton.');
|
|
END;
|
|
ELSE
|
|
fac.imp_writelog (p_import_key,
|
|
'E',
|
|
v_errormsg,
|
|
'');
|
|
END IF;
|
|
END IF;
|
|
END;
|
|
END LOOP;
|
|
|
|
IF (header_is_valid = 0)
|
|
THEN
|
|
fac.imp_writelog (p_import_key,
|
|
'E',
|
|
'Ongeldig importbestand',
|
|
'Geen header of header niet volgens specificatie!');
|
|
END IF;
|
|
|
|
COMMIT;
|
|
EXCEPTION
|
|
WHEN OTHERS
|
|
THEN
|
|
oracle_err_num := SQLCODE;
|
|
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
|
|
v_errormsg :=
|
|
v_errormsg
|
|
|| 'ORACLE (error '
|
|
|| oracle_err_num
|
|
|| '/'
|
|
|| oracle_err_mes
|
|
|| ')';
|
|
fac.imp_writelog (p_import_key,
|
|
'E',
|
|
v_aanduiding || v_errormsg,
|
|
'Inleesproces opdrachtstatusberichten afgebroken!');
|
|
END;
|
|
/
|
|
|
|
|
|
|
|
|
|
CREATE OR REPLACE PROCEDURE gvba_update_opdrstat_strukton (
|
|
p_import_key IN NUMBER)
|
|
AS
|
|
-- Cursor loopt - in volgorde! - over alle ingelezen opdrachtstatusberichten.
|
|
CURSOR c1
|
|
IS
|
|
SELECT mld_opdr_key,
|
|
extern_nummer,
|
|
datumtijd,
|
|
status,
|
|
opmerking,
|
|
totaal
|
|
FROM gvba_imp_opdrstat_strukton
|
|
ORDER BY 1, 3;
|
|
|
|
CURSOR cp (
|
|
c_opdr_key IN NUMBER)
|
|
IS
|
|
SELECT pf.prs_perslid_key
|
|
FROM fac_tracking tr,
|
|
fac_srtnotificatie str,
|
|
prs_v_perslid_fullnames_all pf
|
|
WHERE tr.fac_srtnotificatie_key = str.fac_srtnotificatie_key
|
|
AND tr.prs_perslid_key = pf.prs_perslid_key(+)
|
|
AND (str.fac_srtnotificatie_code = 'ORDFOK'
|
|
AND tr.fac_tracking_refkey = c_opdr_key
|
|
AND str.fac_srtnotificatie_xmlnode IN ('opdracht'))
|
|
ORDER BY fac_tracking_datum DESC, fac_tracking_key DESC;
|
|
|
|
v_errormsg VARCHAR2 (1000);
|
|
oracle_err_num NUMBER;
|
|
oracle_err_mes VARCHAR2 (200);
|
|
v_aanduiding VARCHAR2 (200);
|
|
v_count_tot NUMBER (10);
|
|
v_count NUMBER (10);
|
|
v_mld_key NUMBER (10) := 0;
|
|
v_opdr_key NUMBER (10) := 0;
|
|
v_opdr_status NUMBER (10) := 0;
|
|
v_user_key NUMBER (10) := 0;
|
|
v_melding_status NUMBER (10);
|
|
v_opdr_approved mld_opdr.mld_opdr_approved%TYPE;
|
|
v_approver_key prs_perslid.prs_perslid_key%TYPE;
|
|
v_mld_typeopdr_key mld_typeopdr.mld_typeopdr_key%TYPE;
|
|
v_mld_kenmerk_key mld_kenmerk.mld_kenmerk_key%TYPE;
|
|
v_mld_kenmerkopdr_key mld_kenmerkopdr.mld_kenmerkopdr_key%TYPE;
|
|
v_mld_srtkenmerk_key mld_srtkenmerk.mld_srtkenmerk_key%TYPE;
|
|
v_perslid_key prs_perslid.prs_perslid_key%TYPE;
|
|
v_opdr_kosten mld_opdr.mld_opdr_kosten%TYPE;
|
|
v_typeopdr_gvs mld_typeopdr.mld_typeopdr_gvs%TYPE;
|
|
v_mld_kk mld_melding.mld_kosten_klant%TYPE;
|
|
v_mld_kostenpl_key mld_melding.prs_kostenplaats_key%TYPE;
|
|
v_opdr_kostenpl_key mld_opdr.prs_kostenplaats_key%TYPE;
|
|
v_mld_perslid_key mld_melding.prs_perslid_key%TYPE;
|
|
v_mld_disc_key ins_tab_discipline.ins_discipline_key%TYPE;
|
|
v_refiat NUMBER (1);
|
|
v_reapprove NUMBER (1);
|
|
BEGIN
|
|
-- Loop door alle geimporteerde opdrachtstatusberichten en verwerk deze.
|
|
v_count_tot := 0;
|
|
|
|
-- Stel de key in van het srtkenmerk 'Ref. Nr. Leverancier'. Hier wordt
|
|
-- het nummer dat Strukton aan de call gegeven heeft geregistreerd.
|
|
v_mld_srtkenmerk_key := 81;
|
|
v_user_key := 44554; -- Strukton user
|
|
|
|
FOR rec IN c1
|
|
LOOP
|
|
BEGIN
|
|
v_aanduiding :=
|
|
'['
|
|
|| rec.mld_opdr_key
|
|
|| '|'
|
|
|| SUBSTR (rec.opmerking, 1, 100)
|
|
|| '] ';
|
|
v_count_tot := v_count_tot + 1;
|
|
v_count := 0;
|
|
|
|
-- Key van melding/opdracht bepalen en externnr bij opdracht opslaan.
|
|
IF (rec.mld_opdr_key IS NOT NULL)
|
|
THEN
|
|
v_errormsg := 'Fout bij bepalen opdracht.';
|
|
|
|
SELECT mld_melding_key,
|
|
mld_opdr_key,
|
|
mld_statusopdr_key,
|
|
mld_typeopdr_key
|
|
INTO v_mld_key,
|
|
v_opdr_key,
|
|
v_opdr_status,
|
|
v_mld_typeopdr_key
|
|
FROM mld_opdr
|
|
WHERE mld_opdr_key = rec.mld_opdr_key;
|
|
|
|
v_errormsg := 'Fout bij bepalen kenmerk extern nummer.';
|
|
|
|
SELECT k.mld_kenmerk_key
|
|
INTO v_mld_kenmerk_key
|
|
FROM mld_kenmerk k
|
|
WHERE k.mld_srtkenmerk_key = v_mld_srtkenmerk_key
|
|
AND k.mld_typeopdr_key = v_mld_typeopdr_key;
|
|
|
|
v_errormsg := 'Fout bij bepalen kenmerkopdracht extern nummer.';
|
|
|
|
SELECT MAX (ko.mld_kenmerkopdr_key)
|
|
INTO v_mld_kenmerkopdr_key
|
|
FROM mld_kenmerkopdr ko
|
|
WHERE ko.mld_opdr_key = v_opdr_key
|
|
AND v_mld_kenmerk_key = ko.mld_kenmerk_key;
|
|
|
|
v_errormsg := 'Fout bij aanpassen extern nummer.';
|
|
|
|
IF v_mld_kenmerkopdr_key IS NULL
|
|
THEN
|
|
-- kenmerk toevoegen
|
|
INSERT INTO mld_kenmerkopdr (mld_kenmerk_key,
|
|
mld_opdr_key,
|
|
mld_kenmerkopdr_waarde)
|
|
VALUES (v_mld_kenmerk_key, v_opdr_key, rec.extern_nummer);
|
|
ELSE
|
|
-- kenmerk aanpassen
|
|
UPDATE mld_kenmerkopdr
|
|
SET mld_kenmerkopdr_waarde = rec.extern_nummer
|
|
WHERE mld_kenmerkopdr_key = v_mld_kenmerkopdr_key;
|
|
END IF;
|
|
|
|
v_errormsg := 'Fout bij bijwerken opdracht-opmerking.';
|
|
|
|
v_count := LENGTH (rec.opmerking) + 5; -- Beetje speling qua lengte!
|
|
|
|
UPDATE mld_opdr
|
|
SET mld_opdr_opmerking =
|
|
DECODE (
|
|
mld_opdr_opmerking,
|
|
NULL,
|
|
rec.opmerking,
|
|
rec.opmerking
|
|
|| CHR (13)
|
|
|| CHR (10)
|
|
|| SUBSTR (mld_opdr_opmerking, 1, (4000 - v_count)))
|
|
WHERE mld_opdr_key = v_opdr_key;
|
|
|
|
IF v_opdr_status <> rec.status
|
|
THEN
|
|
IF rec.status = 8 AND v_opdr_status = 5
|
|
THEN
|
|
-- Accepteer opdracht als de opdracht uitgegeven was
|
|
mld.setopdrachtstatus (v_opdr_key, 8, v_user_key); -- Facilitor
|
|
ELSIF rec.status = 6 AND v_opdr_status = 5
|
|
THEN
|
|
-- Meld de opdracht af als deze uitgegeven was
|
|
mld.setopdrachtstatus (v_opdr_key, 8, v_user_key); -- Facilitor, eerst accepteren
|
|
mld.setopdrachtstatus (v_opdr_key, 6, v_user_key); -- Facilitor
|
|
ELSIF rec.status = 6 AND v_opdr_status = 8
|
|
THEN
|
|
-- Meld de opdracht af als deze geaccepteerd was
|
|
mld.setopdrachtstatus (v_opdr_key, 6, v_user_key); -- Facilitor
|
|
ELSIF rec.status = 1 AND v_opdr_status = 5
|
|
THEN
|
|
-- Opdracht is afgewezen op het moment dat de opdracht nog niet geaccepteerd is.
|
|
mld.setopdrachtstatus (v_opdr_key, 1, v_user_key); -- Facilitor
|
|
mld.updatemeldingstatusav (v_mld_key,
|
|
0,
|
|
v_user_key,
|
|
0);
|
|
ELSIF rec.status = 1 AND v_opdr_status = 8
|
|
THEN
|
|
-- Opdracht is afgewezen op het moment dat de opdracht al geaccepteerd is.
|
|
mld.setopdrachtstatus (v_opdr_key, 6, v_user_key); -- Facilitor
|
|
--MLD.updatemeldingstatusAV (v_mld_key, 0, v_user_key, 0);
|
|
ELSIF rec.status = 9 AND v_opdr_status = 6
|
|
THEN
|
|
-- Opdracht is afgerond en opdrachtstatus was afgemeld.
|
|
mld.setopdrachtstatus (v_opdr_key, 9, v_user_key); -- Facilitor
|
|
END IF;
|
|
|
|
IF rec.status = 6 AND v_opdr_status <> 6
|
|
THEN
|
|
-- Als er geen open opdrachten zijn wordt de melding afgemeld.
|
|
MLD.updatemeldingstatusAV (v_mld_key, 1, v_user_key, 0);
|
|
|
|
SELECT mld_melding_status
|
|
INTO v_melding_status
|
|
FROM mld_melding
|
|
WHERE mld_melding_key = v_mld_key;
|
|
|
|
IF v_melding_status = 5
|
|
THEN
|
|
UPDATE mld_melding
|
|
SET mld_melding_opmerking = rec.opmerking || CHR (10) || CHR (13) || mld_melding_opmerking
|
|
WHERE mld_melding_key = v_mld_key;
|
|
END IF;
|
|
ELSE
|
|
IF rec.status = 9 AND v_opdr_status <> 9
|
|
THEN
|
|
-- Oorspronkelijke gegevens opdracht ophalen.
|
|
-- var opdr_info = mld.mld_opdr_info(opdr_key);
|
|
SELECT mld_opdr_kosten,
|
|
mld_typeopdr_gvs,
|
|
mld_kosten_klant,
|
|
m.prs_kostenplaats_key,
|
|
o.prs_kostenplaats_key,
|
|
m.prs_perslid_key,
|
|
std.mld_ins_discipline_key
|
|
INTO v_opdr_kosten,
|
|
v_typeopdr_gvs,
|
|
v_mld_kk,
|
|
v_mld_kostenpl_key,
|
|
v_opdr_kostenpl_key,
|
|
v_mld_perslid_key,
|
|
v_mld_disc_key
|
|
FROM mld_opdr o,
|
|
mld_melding m,
|
|
mld_typeopdr t,
|
|
mld_stdmelding std
|
|
WHERE o.mld_melding_key = m.mld_melding_key
|
|
AND m.mld_stdmelding_key = std.mld_stdmelding_key
|
|
AND o.mld_typeopdr_key = t.mld_typeopdr_key
|
|
AND o.mld_opdr_key = v_opdr_key;
|
|
|
|
-- Hergoedkeuring (Ter goedkeuring) wordt (pas) vereist als het opdrachtbedrag hoger is dan al is goedgekeurd en boven de GVS-grens uitkomt.
|
|
-- Herfiattering (Ter fiattering) wordt (pas) vereist indien het bedrag boven het mandaat van de oorspronkelijke (laatste) fiatteur uitkomt
|
|
-- en boven de GVS-grens uitkomt.
|
|
-- Hergoedkeuring en herfiattering kan alleen als het totaalbedrag van de opdracht is verhoogd en alleen in de statussen 5, 8, 6 en 9 (de uitvoeringsfase en de afhandelingsfase).
|
|
-- Hergoedkeuring en herfiattering kan leiden tot een tijdelijke terugkeer naar de voorfase status 3 of 10.
|
|
IF rec.totaal > v_opdr_kosten
|
|
THEN
|
|
fac.imp_writelog (p_import_key, 'I', 'rec.totaal > v_opdr_kosten: ' || rec.totaal || ' - ' || v_opdr_kosten, '');
|
|
|
|
-- Hergoedkeuring (Ter goedkeuring) wordt (pas) vereist als het opdrachtbedrag hoger is dan al is goedgekeurd en boven de GVS-grens uitkomt.
|
|
IF rec.totaal > COALESCE (v_opdr_approved, 0) AND rec.totaal > v_typeopdr_gvs
|
|
THEN
|
|
v_reapprove := 1;
|
|
ELSE
|
|
v_reapprove := 0;
|
|
END IF;
|
|
|
|
fac.imp_writelog (p_import_key, 'I', 'hergoedkeuring: ' || v_reapprove || ' - ' || v_opdr_approved || ' - ' || v_typeopdr_gvs, '');
|
|
|
|
|
|
-- Herfiattering (Ter fiattering) wordt (pas) vereist indien het bedrag boven het mandaat van de oorspronkelijke (laatste) fiatteur uitkomt
|
|
-- en boven de GVS-grens uitkomt.
|
|
-- Bepaal het mandaat van de oorspronkelijke (laatste) fiatteur.
|
|
-- Ook als er de vorige keer geen kosten waren dan moet pas worden geherfiatteerd als (tot_kosten > mandaat),
|
|
-- waarbij de mandaat van de Melder/aanvrager van melding of de user is.
|
|
v_perslid_key := NULL;
|
|
|
|
IF rec.totaal > v_opdr_kosten AND rec.totaal > 0 AND rec.totaal > v_typeopdr_gvs
|
|
THEN
|
|
fac.imp_writelog (p_import_key, 'I', 'F - rec.totaal > v_opdr_kosten: ' || rec.totaal || ' - ' || v_opdr_kosten || ' - ' || v_typeopdr_gvs, '');
|
|
-- De totale kosten zijn verhoogd en het bedrag zit boven de GVS-grens.
|
|
-- Bepaling oorspronkelijke (laatste) fiatteur, als die er was.
|
|
v_perslid_key := NULL;
|
|
|
|
FOR rec2 IN cp (v_opdr_key)
|
|
LOOP
|
|
BEGIN
|
|
v_perslid_key := rec2.prs_perslid_key;
|
|
END;
|
|
END LOOP;
|
|
|
|
fac.imp_writelog (p_import_key, 'I', 'F - laatste fiatteur: ' || v_perslid_key, '');
|
|
|
|
IF v_perslid_key IS NULL
|
|
THEN
|
|
-- Dan waren de opdracht kosten onder het mandaat van mijzelf of de BO-medewerker.
|
|
-- Als de kostenplaats bij de opdracht overruled is dan wordt altijd tegen het profiel van de BO-medewerker getest.
|
|
IF v_mld_kk = 1
|
|
AND v_mld_kostenpl_key = v_opdr_kostenpl_key
|
|
THEN
|
|
v_perslid_key := v_mld_perslid_key; -- Melder/aanvrager van melding
|
|
END IF;
|
|
END IF;
|
|
|
|
fac.imp_writelog (p_import_key, 'I', 'F - indien onbekend terugvallen op melder: ' || v_perslid_key, '');
|
|
|
|
|
|
IF fac.getsetting ('mld_use_order_approval') = 1
|
|
AND (rec.totaal >
|
|
fac.getsetting ('can_selfapprove')
|
|
OR rec.totaal >
|
|
prs.getprofiellimiet (v_perslid_key, v_mld_disc_key))
|
|
THEN
|
|
-- Er moet (opnieuw) gefiatteerd worden. Is er wel iemand met voldoende mandaat? Indien er niemand gevonden kan worden mag de wijziging niet doorgaan.
|
|
-- Het mandaat is al te hoog voor de melder/aanvrager van de melding of mijzelf.
|
|
|
|
v_approver_key :=
|
|
prs.getkpverantwoordelijke (
|
|
v_opdr_kostenpl_key,
|
|
fac.getsetting ('prs_approvemethod'),
|
|
v_user_key);
|
|
v_refiat := 1;
|
|
-- er moet (her)fiattering plaatsvinden
|
|
fac.imp_writelog (p_import_key, 'I', 'F - (her)fiatteur: ' || v_approver_key, '');
|
|
END IF;
|
|
END IF;
|
|
END IF;
|
|
|
|
IF v_reapprove = 1 OR v_refiat = 1
|
|
THEN
|
|
-- Zet de refiat waarden. Het hergoedkeurings- en/of herfiatteringstraject wordt opnieuw ingegaan. // Tracking hiervan is niet nodig.
|
|
IF v_opdr_kosten > 0
|
|
THEN
|
|
UPDATE mld_opdr
|
|
SET mld_opdr_materiaal_refiat = mld_opdr_materiaal,
|
|
mld_opdr_kosten_refiat = mld_opdr_kosten
|
|
WHERE mld_opdr_key = v_opdr_key;
|
|
END IF;
|
|
|
|
-- Ook voor status 5 wordt refiatstatus gezet zodat bekend is dat het om een herfiattering gaat. De fiatteringsvoorwaarde is dan iets anders.
|
|
UPDATE mld_opdr
|
|
SET mld_statusopdr_key_refiat = mld_statusopdr_key
|
|
WHERE mld_opdr_key = v_opdr_key;
|
|
|
|
-- Goedkeuring opnieuw ingaan kan alleen als het approved bedrag leeg is.
|
|
UPDATE mld_opdr
|
|
SET mld_opdr_approved_refiat = mld_opdr_approved
|
|
WHERE mld_opdr_key = v_opdr_key;
|
|
|
|
UPDATE mld_opdr
|
|
SET mld_opdr_approved = NULL,
|
|
mld_opdr_materiaal = rec.totaal,
|
|
mld_opdr_kosten = rec.totaal
|
|
WHERE mld_opdr_key = v_opdr_key;
|
|
ELSE
|
|
UPDATE mld_opdr
|
|
SET mld_opdr_materiaal = rec.totaal,
|
|
mld_opdr_kosten = rec.totaal
|
|
WHERE mld_opdr_key = v_opdr_key;
|
|
END IF;
|
|
|
|
-- geef in de tracking aan dat de kosten via de interface aangepast zijn.
|
|
IF v_opdr_kosten <> rec.totaal
|
|
THEN
|
|
fac.trackaction ('ORDUPD', v_opdr_key, v_user_key, SYSDATE,
|
|
'Gewijzigd' || CHR (13) || CHR (10)
|
|
|| 'Materiaal: ' || v_opdr_kosten || ' --> ' || rec.totaal || CHR (13) || CHR (10)
|
|
|| 'Totaal: ' || v_opdr_kosten || ' --> ' || rec.totaal);
|
|
END IF;
|
|
|
|
IF v_reapprove = 1
|
|
THEN
|
|
-- Zetten van de status van de gewijzigde opdracht op "Ter goedkeuring" en afhandelen van de tracking (status + uitvoerende tracking) en daarmee notificatie.
|
|
-- status = 10; Ter goedkeuring.
|
|
mld.setopdrachtstatus (v_opdr_key, 10, v_user_key);
|
|
ELSE
|
|
IF v_refiat = 1
|
|
THEN
|
|
-- Zetten van de status van de gewijzigde opdracht op "Ter fiattering" en afhandelen van de tracking (status + uitvoerende tracking) en daarmee notificatie.
|
|
-- status = 3; // Ter fiattering.
|
|
mld.setopdrachtstatus (v_opdr_key, 3, v_user_key);
|
|
END IF;
|
|
END IF;
|
|
END IF;
|
|
END IF;
|
|
END IF;
|
|
END IF;
|
|
|
|
COMMIT;
|
|
EXCEPTION
|
|
WHEN OTHERS
|
|
THEN
|
|
oracle_err_num := SQLCODE;
|
|
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
|
|
v_errormsg :=
|
|
v_errormsg
|
|
|| ' ORACLE (error '
|
|
|| oracle_err_num
|
|
|| '/'
|
|
|| oracle_err_mes
|
|
|| ')';
|
|
fac.imp_writelog (p_import_key,
|
|
'E',
|
|
v_aanduiding || v_errormsg,
|
|
'Fout bij verwerken opdrachtstatusbericht.');
|
|
END;
|
|
END LOOP;
|
|
|
|
COMMIT;
|
|
END;
|
|
/
|
|
|
|
-- begin gvba_export_daily_task('DAILY_TASK', 'NOW', NULL, NULL); end;
|
|
CREATE OR REPLACE PROCEDURE gvba_export_daily_task (
|
|
p_applname IN VARCHAR2,
|
|
p_applrun IN VARCHAR2,
|
|
p_filedir IN VARCHAR2,
|
|
p_filename IN VARCHAR2)
|
|
AS
|
|
BEGIN
|
|
GVBA.set_mandaat_vrijstelling;
|
|
END;
|
|
/
|
|
|
|
-- rapport tbv mandaten en vrijstellingen
|
|
CREATE OR REPLACE VIEW gvba_v_rap_mand_vrij
|
|
AS
|
|
SELECT d.ins_deel_key,
|
|
ins_srtdeel_upper,
|
|
ins_deel_omschrijving,
|
|
prs_perslid_volnaam,
|
|
d.prs_perslid_key,
|
|
ins_deel_vervaldatum,
|
|
ins_deel_aanmaak,
|
|
(SELECT prs_bedrijf_naam
|
|
FROM ins_kenmerkdeel kmd, prs_bedrijf b
|
|
WHERE kmd.ins_deel_key = d.ins_deel_key
|
|
AND kmd.ins_kenmerk_key = 21
|
|
AND FAC.safe_to_number (kmd.ins_kenmerkdeel_waarde) =
|
|
b.prs_bedrijf_key)
|
|
bedrijf,
|
|
(SELECT ins_kenmerkdeel_waarde
|
|
FROM ins_kenmerkdeel kmd
|
|
WHERE kmd.ins_deel_key = d.ins_deel_key AND kmd.ins_kenmerk_key = 22)
|
|
berijder,
|
|
(SELECT ins_kenmerkdeel_waarde
|
|
FROM ins_kenmerkdeel kmd
|
|
WHERE kmd.ins_deel_key = d.ins_deel_key AND kmd.ins_kenmerk_key = 23)
|
|
kenteken,
|
|
(SELECT ins_kenmerkdeel_waarde
|
|
FROM ins_kenmerkdeel kmd
|
|
WHERE kmd.ins_deel_key = d.ins_deel_key AND kmd.ins_kenmerk_key = 41)
|
|
gvb_onderdeel,
|
|
(SELECT ins_kenmerkdeel_waarde
|
|
FROM ins_kenmerkdeel kmd
|
|
WHERE kmd.ins_deel_key = d.ins_deel_key AND kmd.ins_kenmerk_key = 61)
|
|
afw_contact,
|
|
CASE WHEN dv.fac_tracking_datum > SYSDATE -100 THEN 'Verlengd' ELSE 'Verlengen' END verlengstatus,
|
|
TO_CHAR(SYSDATE, 'MM') verlengmaand,
|
|
dv.fac_tracking_datum verlengd_op
|
|
FROM ins_v_deel_gegevens d,
|
|
( SELECT fac_tracking_refkey, MAX(fac_tracking_datum) fac_tracking_datum
|
|
FROM fac_tracking t, fac_srtnotificatie sn
|
|
WHERE t.fac_srtnotificatie_key = sn.fac_srtnotificatie_key
|
|
AND sn.fac_srtnotificatie_code = 'CUST01' -- man/vrij is verlengd
|
|
AND TRUNC(t.fac_tracking_datum, 'YY') = TRUNC(SYSDATE, 'YY')
|
|
GROUP BY fac_tracking_refkey) dv
|
|
WHERE ins_discipline_key = 641
|
|
AND ins_deel_vervaldatum > SYSDATE
|
|
AND d.ins_deel_key = dv.fac_tracking_refkey(+);
|
|
|
|
-- rapport tbv mandaten en vrijstellingen
|
|
CREATE OR REPLACE VIEW gvba_v_rap_mand_vrij_meld
|
|
AS
|
|
SELECT d.ins_deel_key,
|
|
ins_srtdeel_upper,
|
|
ins_deel_omschrijving,
|
|
prs_perslid_volnaam,
|
|
d.prs_perslid_key,
|
|
ins_deel_vervaldatum,
|
|
ins_deel_aanmaak,
|
|
(SELECT prs_bedrijf_naam
|
|
FROM ins_kenmerkdeel kmd, prs_bedrijf b
|
|
WHERE kmd.ins_deel_key = d.ins_deel_key
|
|
AND kmd.ins_kenmerk_key = 21
|
|
AND FAC.safe_to_number (kmd.ins_kenmerkdeel_waarde) =
|
|
b.prs_bedrijf_key)
|
|
bedrijf,
|
|
(SELECT ins_kenmerkdeel_waarde
|
|
FROM ins_kenmerkdeel kmd
|
|
WHERE kmd.ins_deel_key = d.ins_deel_key AND kmd.ins_kenmerk_key = 22)
|
|
berijder,
|
|
(SELECT ins_kenmerkdeel_waarde
|
|
FROM ins_kenmerkdeel kmd
|
|
WHERE kmd.ins_deel_key = d.ins_deel_key AND kmd.ins_kenmerk_key = 23)
|
|
kenteken,
|
|
(SELECT ins_kenmerkdeel_waarde
|
|
FROM ins_kenmerkdeel kmd
|
|
WHERE kmd.ins_deel_key = d.ins_deel_key AND kmd.ins_kenmerk_key = 41)
|
|
gvb_onderdeel,
|
|
(SELECT ins_kenmerkdeel_waarde
|
|
FROM ins_kenmerkdeel kmd
|
|
WHERE kmd.ins_deel_key = d.ins_deel_key AND kmd.ins_kenmerk_key = 61)
|
|
afw_contact,
|
|
m.mld_melding_key,
|
|
s.mld_statuses_omschrijving
|
|
FROM ins_v_deel_gegevens d, mld_melding_object mo, mld_melding m, mld_statuses s
|
|
WHERE ins_discipline_key = 641
|
|
AND ins_deel_vervaldatum > SYSDATE
|
|
AND d.ins_deel_key = mo.ins_deel_key(+)
|
|
AND mo.mld_melding_key = m.mld_melding_key(+)
|
|
AND m.mld_melding_status = s.mld_statuses_key(+);
|
|
|
|
-- VIEW tbv maandaten en vrijstellingen.
|
|
CREATE OR REPLACE VIEW gvba_v_rap_statusverlenging
|
|
AS
|
|
SELECT alg_plaatsaanduiding,
|
|
SUM (verlengd) cverlengd,
|
|
SUM (niet_verlengd) cnietverlengd,
|
|
COUNT (*) totaal
|
|
FROM (SELECT alg_plaatsaanduiding,
|
|
CASE
|
|
WHEN ins_deel_vervaldatum >
|
|
ADD_MONTHS (TRUNC (SYSDATE, 'Y'), 12)
|
|
THEN
|
|
1
|
|
ELSE
|
|
0
|
|
END verlengd,
|
|
CASE
|
|
WHEN ins_deel_vervaldatum <
|
|
ADD_MONTHS (TRUNC (SYSDATE, 'Y'), 12)
|
|
THEN
|
|
1
|
|
ELSE
|
|
0
|
|
END niet_verlengd
|
|
FROM ins_v_deel_gegevens
|
|
WHERE ins_discipline_key = 641 AND ins_deel_vervaldatum > SYSDATE)
|
|
GROUP BY alg_plaatsaanduiding;
|
|
|
|
------ payload end ------
|
|
|
|
SET DEFINE OFF
|
|
BEGIN adm.systrackscriptId ('$Id$', 0); END;
|
|
/
|
|
|
|
COMMIT;
|
|
SET ECHO OFF
|
|
SPOOL OFF
|
|
SET DEFINE ON
|
|
PROMPT Logfile of this upgrade is: &fcltlogfile |