1193 lines
48 KiB
SQL
1193 lines
48 KiB
SQL
--
|
||
-- $Id$
|
||
--
|
||
-- Script containing customer specific sql statements for the FACILITOR database
|
||
|
||
DEFINE thisfile = 'BAMG.SQL'
|
||
DEFINE dbuser = 'BAMG'
|
||
|
||
SET ECHO ON
|
||
SET DEFINE ON
|
||
COLUMN fcltlogfile NEW_VALUE fcltlogfile NOPRINT;
|
||
COLUMN fcltcusttxt NEW_VALUE fcltcusttxt NOPRINT;
|
||
WHENEVER SQLERROR CONTINUE;
|
||
SELECT adm.getscriptspoolfile('&thisfile') AS fcltlogfile FROM DUAL;
|
||
SPOOL &fcltlogfile
|
||
WHENEVER SQLERROR EXIT;
|
||
SELECT adm.checkscriptcust('&dbuser') AS fcltcusttxt FROM DUAL;
|
||
WHENEVER SQLERROR CONTINUE;
|
||
---------------------------------------
|
||
PROMPT &fcltcusttxt
|
||
---------------------------------------
|
||
SET DEFINE OFF
|
||
|
||
------ payload begin ------
|
||
|
||
-- Tijdens de import wordt ook het niveau van de afdeling meegegeven. Dit is handig voor de opbouw van de structuur
|
||
-- Deze informatie wordt opgeslagen in het veld bedrijf.
|
||
-- Alle personeelsleden worden één voor één aangeboden. Pas aan het einde worden de resultaten verwerkt.
|
||
|
||
CREATE OR REPLACE PROCEDURE bamg_import_organisatie (p_import_key IN NUMBER)
|
||
AS
|
||
c_fielddelimitor VARCHAR2 (1) := ';';
|
||
v_newline VARCHAR2 (1000); -- Input line
|
||
v_errormsg VARCHAR2 (1000);
|
||
oracle_err_num NUMBER;
|
||
oracle_err_mes VARCHAR2 (200);
|
||
v_aanduiding VARCHAR2 (200);
|
||
|
||
-- De importvelden:
|
||
v_afdelingscode VARCHAR2 (100);
|
||
v_afdelingsomschrijving VARCHAR2 (200);
|
||
v_afdelingsparent VARCHAR2 (100);
|
||
|
||
CURSOR c
|
||
IS
|
||
SELECT *
|
||
FROM fac_imp_file
|
||
WHERE fac_import_key = p_import_key
|
||
ORDER BY fac_imp_file_index;
|
||
BEGIN
|
||
FOR rec IN c
|
||
LOOP
|
||
BEGIN
|
||
v_errormsg := 'Fout FETCH te importeren rij';
|
||
|
||
v_newline := rec.fac_imp_file_line;
|
||
v_errormsg := 'Fout opvragen te importeren rij';
|
||
v_aanduiding := '';
|
||
|
||
-- Lees alle veldwaarden
|
||
fac.imp_getfield (v_newline, c_fielddelimitor, v_afdelingscode);
|
||
fac.imp_getfield (v_newline, c_fielddelimitor, v_afdelingsomschrijving);
|
||
fac.imp_getfield (v_newline, c_fielddelimitor, v_afdelingsparent);
|
||
|
||
v_aanduiding := v_afdelingscode || '|' || v_afdelingsomschrijving || '| ';
|
||
|
||
v_errormsg :=
|
||
'Fout bij toevoegen te impoteren bedrijf/afdeling [' || v_aanduiding || ']';
|
||
|
||
INSERT INTO fac_imp_organisatie (prs_afdeling_naam,
|
||
prs_afdeling_naam_parent,
|
||
prs_afdeling_omschrijving,
|
||
prs_afdeling_externid)
|
||
VALUES (SUBSTR(v_afdelingscode, 1, 15),
|
||
SUBSTR(v_afdelingsparent, 1, 15),
|
||
SUBSTR(v_afdelingsomschrijving, 1, 60),
|
||
TO_CHAR(SYSDATE, 'YYYY-MM-DD HH24:MI:SS'));
|
||
|
||
END;
|
||
END LOOP;
|
||
|
||
COMMIT;
|
||
EXCEPTION
|
||
WHEN OTHERS
|
||
THEN
|
||
oracle_err_num := SQLCODE;
|
||
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
|
||
v_errormsg := 'error ' || oracle_err_num || '/' || oracle_err_mes;
|
||
fac.imp_writelog (p_import_key,
|
||
'E',
|
||
v_errormsg,
|
||
'');
|
||
END bamg_import_organisatie;
|
||
/
|
||
|
||
CREATE OR REPLACE PROCEDURE bamg_update_organisatie(p_import_key IN NUMBER)
|
||
AS
|
||
BEGIN
|
||
-- De daadwerkelijke verwerking vindt plaats in de proceduere bamg_update_organisatie_sched
|
||
NULL;
|
||
END;
|
||
/
|
||
|
||
-- Deze is gescheduled via de bamg_daily
|
||
CREATE OR REPLACE PROCEDURE bamg_update_organisatie_sched
|
||
AS
|
||
|
||
CURSOR c(p_like VARCHAR2) IS
|
||
SELECT prs_afdeling_naam,
|
||
DECODE (prs_afdeling_naam_parent, 'BU6000', 'OC6000', prs_afdeling_naam_parent) prs_afdeling_naam_parent,
|
||
prs_afdeling_omschrijving,
|
||
prs_afdeling_externid
|
||
FROM fac_imp_organisatie
|
||
WHERE prs_afdeling_naam LIKE p_like;
|
||
|
||
CURSOR c_div IS
|
||
SELECT prs_afdeling_naam,
|
||
prs_afdeling_naam_parent,
|
||
prs_afdeling_omschrijving,
|
||
prs_afdeling_externid
|
||
FROM fac_imp_organisatie
|
||
WHERE prs_afdeling_naam NOT LIKE 'OC%'
|
||
AND prs_afdeling_naam NOT LIKE 'BU%'
|
||
AND prs_afdeling_naam NOT LIKE '%/%';
|
||
|
||
CURSOR c_org_del IS
|
||
SELECT a.prs_afdeling_key, a.prs_afdeling_naam
|
||
FROM prs_afdeling a, prs_v_afdeling_boom b
|
||
WHERE a.prs_afdeling_verwijder IS NULL
|
||
AND a.prs_afdeling_key = b.prs_afdeling_key
|
||
AND prs_afdeling_externsyncdate < SYSDATE-7
|
||
ORDER BY niveau DESC;
|
||
|
||
CURSOR c_prs_del IS
|
||
SELECT prs_perslid_key
|
||
FROM prs_perslid p
|
||
WHERE p.prs_perslid_verwijder IS NULL
|
||
AND p.prs_perslid_externsyncdate < SYSDATE-7;
|
||
|
||
v_parent_key NUMBER;
|
||
v_bedrijf_key NUMBER;
|
||
v_afdeling_key NUMBER;
|
||
v_max_datum VARCHAR2(100);
|
||
v_import_key NUMBER;
|
||
v_count NUMBER;
|
||
|
||
v_aanduiding VARCHAR2 (100);
|
||
v_errorhint VARCHAR2 (1000);
|
||
v_errormsg VARCHAR2 (1000);
|
||
oracle_err_num NUMBER;
|
||
oracle_err_mes VARCHAR2 (200);
|
||
|
||
PROCEDURE del_afdeling (p_naam IN VARCHAR2, p_key IN NUMBER)
|
||
AS
|
||
BEGIN
|
||
v_aanduiding := p_naam;
|
||
v_errorhint := 'Verwijder de afdeling: ' || p_naam;
|
||
UPDATE prs_afdeling SET prs_afdeling_verwijder = SYSDATE WHERE prs_afdeling_key = p_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.imp_writelog (
|
||
v_import_key,
|
||
'E',
|
||
v_errormsg
|
||
|| ' - '
|
||
|| v_aanduiding,
|
||
v_errorhint);
|
||
END;
|
||
|
||
PROCEDURE add_afdeling (p_naam IN VARCHAR2, p_parent IN VARCHAR2, p_omschrijving IN VARCHAR2, p_syncdate IN VARCHAR2)
|
||
AS
|
||
BEGIN
|
||
BEGIN
|
||
v_aanduiding := p_naam;
|
||
v_parent_key := NULL;
|
||
v_bedrijf_key := NULL;
|
||
|
||
IF p_parent IS NOT NULL
|
||
THEN
|
||
-- We gaan eerst op zoek naar de parent
|
||
v_errorhint := 'Zoek de parent: ' || p_parent;
|
||
SELECT prs_afdeling_key
|
||
INTO v_parent_key
|
||
FROM prs_afdeling a
|
||
WHERE a.prs_afdeling_naam = p_parent
|
||
AND prs_afdeling_verwijder IS NULL;
|
||
ELSE
|
||
v_bedrijf_key := 1; -- BAM
|
||
END IF;
|
||
|
||
BEGIN
|
||
-- Nu gaan we kijken of we de afdeling_kunnen vinden
|
||
v_errorhint := 'Zoek de afdeling: ' || p_naam;
|
||
SELECT prs_afdeling_key
|
||
INTO v_afdeling_key
|
||
FROM prs_afdeling a
|
||
WHERE a.prs_afdeling_naam = p_naam
|
||
AND prs_afdeling_verwijder IS NULL;
|
||
|
||
v_errorhint := 'Pas de afdeling aan: ' || p_naam;
|
||
UPDATE prs_afdeling
|
||
SET prs_afdeling_omschrijving = p_omschrijving,
|
||
prs_afdeling_parentkey = v_parent_key,
|
||
prs_bedrijf_key = v_bedrijf_key,
|
||
prs_afdeling_externsyncdate = TO_DATE(p_syncdate, 'yyyy-mm-dd hh24:mi:ss')
|
||
WHERE prs_afdeling_key = v_afdeling_key;
|
||
EXCEPTION
|
||
WHEN NO_DATA_FOUND
|
||
THEN
|
||
v_errorhint := 'Voeg afdeling toe: ' || p_naam;
|
||
INSERT INTO prs_afdeling (prs_afdeling_naam,
|
||
prs_afdeling_omschrijving,
|
||
prs_afdeling_parentkey,
|
||
prs_bedrijf_key,
|
||
prs_afdeling_externsyncdate)
|
||
VALUES (p_naam,
|
||
p_omschrijving,
|
||
v_parent_key,
|
||
v_bedrijf_key,
|
||
TO_DATE(p_syncdate, 'yyyy-mm-dd hh24:mi:ss'));
|
||
END;
|
||
|
||
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.imp_writelog (
|
||
v_import_key,
|
||
'E',
|
||
v_errormsg
|
||
|| ' - '
|
||
|| v_aanduiding,
|
||
v_errorhint);
|
||
|
||
END;
|
||
END;
|
||
|
||
|
||
BEGIN
|
||
SELECT MAX (fac_import_key)
|
||
INTO v_import_key
|
||
FROM fac_import_app a, fac_import i
|
||
WHERE a.fac_import_app_key = i.fac_import_app_key
|
||
AND fac_import_app_code = 'ORGANISATIE'
|
||
AND fac_import_app_prefix = 'BAMG';
|
||
BEGIN
|
||
SELECT MAX(SUBSTR(prs_afdeling_externid, 1, 10))
|
||
INTO v_max_datum
|
||
FROM fac_imp_organisatie;
|
||
|
||
DELETE fac_imp_organisatie
|
||
WHERE prs_afdeling_externid NOT LIKE v_max_datum || '%';
|
||
|
||
FOR rec IN c('OC%')
|
||
LOOP
|
||
v_aanduiding := rec.prs_afdeling_naam;
|
||
add_afdeling (rec.prs_afdeling_naam, rec.prs_afdeling_naam_parent, rec.prs_afdeling_omschrijving, rec.prs_afdeling_externid);
|
||
END LOOP;
|
||
|
||
FOR rec IN c('BU%')
|
||
LOOP
|
||
v_aanduiding := rec.prs_afdeling_naam;
|
||
add_afdeling (rec.prs_afdeling_naam, rec.prs_afdeling_naam_parent, rec.prs_afdeling_omschrijving, rec.prs_afdeling_externid);
|
||
END LOOP;
|
||
|
||
FOR rec IN c_div
|
||
LOOP
|
||
v_aanduiding := rec.prs_afdeling_naam;
|
||
add_afdeling (rec.prs_afdeling_naam, rec.prs_afdeling_naam_parent, rec.prs_afdeling_omschrijving, rec.prs_afdeling_externid);
|
||
END LOOP;
|
||
|
||
FOR rec IN c('%/%')
|
||
LOOP
|
||
v_aanduiding := rec.prs_afdeling_naam;
|
||
add_afdeling (rec.prs_afdeling_naam, rec.prs_afdeling_naam_parent, rec.prs_afdeling_omschrijving, rec.prs_afdeling_externid);
|
||
END LOOP;
|
||
|
||
-- We verwijderen personen die de laatste 7 dagen niet meer in de interface zaten.
|
||
v_count := 0;
|
||
FOR rec IN c_prs_del
|
||
LOOP
|
||
v_count := v_count +1;
|
||
END LOOP;
|
||
|
||
-- Als we meer dan 1000 personen moeten verwijderen dan is er waarschijnlijk
|
||
-- iets mis gegaan in de interface
|
||
IF v_count < 1000
|
||
THEN
|
||
FOR rec IN c_prs_del
|
||
LOOP
|
||
PRS.delete_perslid (v_import_key, rec.prs_perslid_key);
|
||
END LOOP;
|
||
END IF;
|
||
|
||
v_errorhint := 'Verwijderen afdelingen';
|
||
-- We verwijderen afdelingen die de laatste 7 dagen niet meer in de interface zaten.
|
||
v_count := 0;
|
||
FOR rec IN c_org_del
|
||
LOOP
|
||
v_count := v_count +1;
|
||
END LOOP;
|
||
|
||
-- Als we meer dan 1000 afdelingen moeten verwijderen dan is er waarschijnlijk
|
||
-- iets mis gegaan in de interface
|
||
IF v_count < 1000
|
||
THEN
|
||
FOR rec IN c_org_del
|
||
LOOP
|
||
del_afdeling (rec.prs_afdeling_naam, rec.prs_afdeling_key);
|
||
END LOOP;
|
||
END IF;
|
||
|
||
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.imp_writelog (v_import_key, 'E', v_aanduiding || v_errormsg, v_errorhint);
|
||
END;
|
||
|
||
END;
|
||
/
|
||
|
||
|
||
CREATE OR REPLACE PROCEDURE bamg_import_perslid (p_import_key IN NUMBER)
|
||
AS
|
||
v_seq_of_columns VARCHAR (255);
|
||
oracle_err_num NUMBER;
|
||
oracle_err_mes VARCHAR2 (200);
|
||
v_errormsg VARCHAR2 (200);
|
||
v_errorhint VARCHAR2 (200);
|
||
BEGIN
|
||
|
||
-- Verwijder lege records
|
||
DELETE fac_imp_file WHERE SUBSTR(fac_imp_file_line, 1,7) = ';;;;;;;' AND fac_import_key = p_import_key;
|
||
|
||
-- Voeg een header toe. Deze wordt altijd gecontroleerd en wordt niet meegenomen in de import.
|
||
INSERT INTO fac_imp_file (fac_import_key, fac_imp_file_index, fac_imp_file_line)
|
||
VALUES (p_import_key, 0, 'Header');
|
||
|
||
v_seq_of_columns := '0;0;0;0;0;0;1;2;3;5;'
|
||
-- v_alg_locatie_code 1
|
||
-- v_alg_gebouw_code 2
|
||
-- v_alg_verdieping_volgnr 3
|
||
-- v_alg_ruimte_nr 4
|
||
-- v_prs_werkplek_volgnr 5
|
||
-- v_prs_werkplek_omschrijving 6
|
||
-- v_prs_afdeling_naam 7
|
||
-- v_prs_perslid_naam 8
|
||
-- v_prs_perslid_tussenvoegsel 9
|
||
-- v_prs_perslid_voornaam 10
|
||
|| '4;6;7;8;0;9;10;11;0;13;'
|
||
-- v_prs_perslid_voorletters 11
|
||
-- v_prs_perslid_partner_naam 12
|
||
-- v_prs_perslid_partner_tussenv 13
|
||
-- v_prs_naamgebruik_code 14 0 (default) perslid_naam en perslid_tussenvoegsel worden gebruikt
|
||
-- 1 personen die de geboortenaam van de partner icm de eigen naam willen gebruiken
|
||
-- 2 personen die de geboortenaam van de partner willen gebruiken
|
||
-- 3 personen die de eigen naam icm de geboortenaam van de partner willen gebruiken
|
||
-- v_prs_perslid_geslacht 15 Gebruik 'man', 'm' of 1 voor man en 'vrouw', 'v' of 0 voor vrouw case insensitive geen default
|
||
-- v_prs_perslid_telefoonnr 16
|
||
-- v_prs_perslid_mobiel 17
|
||
-- v_prs_perslid_email 18
|
||
-- v_prs_perslid_dienstverband 19
|
||
-- v_prs_perslid_nr 20
|
||
|| '12;14;0;0;0;0;15;16;17;18;'
|
||
-- v_prs_srtperslid_omschrijving 21
|
||
-- v_prs_perslid_oslogin 22
|
||
-- v_prs_perslid_wachtwoord 23
|
||
-- v_prs_perslid_titel 24
|
||
-- v_prs_perslid_apikey 25
|
||
-- v_dummy 26
|
||
-- v_prs_kenmerk1 27
|
||
-- v_prs_kenmerk2 28
|
||
-- v_prs_kenmerk3 29
|
||
-- v_prs_kenmerk4 30
|
||
|| '0;0;0;0;0;0;0;0;0;0;'
|
||
|| '0;0;0;0;0;0';
|
||
|
||
-- v_prs_naamgebruik_code mapping BAMG
|
||
-- 01 Eigen achternaam
|
||
-- 02 Partner achternaam – eigen achternaam
|
||
-- 03 Partner achternaam
|
||
-- 04 Eigen achternaam – partner achternaam
|
||
|
||
|
||
prs.import_perslid(p_import_key, v_seq_of_columns, '%');
|
||
|
||
UPDATE fac_imp_perslid SET prs_perslid_naamgebruik_code = DECODE (prs_perslid_naamgebruik_code, 1, 0, 2, 1, 3, 2, 4, 3, 0);
|
||
|
||
END bamg_import_perslid;
|
||
/
|
||
|
||
CREATE OR REPLACE PROCEDURE bamg_update_perslid (p_import_key IN NUMBER)
|
||
AS
|
||
|
||
CURSOR c IS
|
||
SELECT *
|
||
FROM fac_imp_perslid;
|
||
|
||
v_errormsg VARCHAR2 (1000);
|
||
v_hint VARCHAR2 (1000);
|
||
oracle_err_num NUMBER;
|
||
oracle_err_mes VARCHAR2 (200);
|
||
v_count NUMBER;
|
||
|
||
v_perslid_nr PRS_PERSLID.PRS_PERSLID_NR%TYPE;
|
||
v_perslid_email PRS_PERSLID.PRS_PERSLID_EMAIL%TYPE;
|
||
v_perslid_key PRS_PERSLID.PRS_PERSLID_KEY%TYPE;
|
||
v_leiding_key PRS_PERSLID.PRS_PERSLID_KEY%TYPE;
|
||
v_afdeling_naam PRS_AFDELING.PRS_AFDELING_NAAM%TYPE;
|
||
v_kostenplaats_nr PRS_KOSTENPLAATS.PRS_KOSTENPLAATS_NR%TYPE;
|
||
v_kostenplaats_nr_new PRS_KOSTENPLAATS.PRS_KOSTENPLAATS_NR%TYPE;
|
||
v_kostenplaats_key_new PRS_KOSTENPLAATS.PRS_KOSTENPLAATS_KEY%TYPE;
|
||
v_kostenplaats_key_oud PRS_KOSTENPLAATS.PRS_KOSTENPLAATS_KEY%TYPE;
|
||
BEGIN
|
||
|
||
FOR rec IN C
|
||
LOOP
|
||
prs.update_perslid (p_import_key, 'NR', NULL);
|
||
|
||
v_perslid_email := rec.prs_perslid_email;
|
||
v_afdeling_naam := rec.prs_afdeling_naam;
|
||
v_kostenplaats_nr_new := rec.prs_kenmerk3;
|
||
|
||
INSERT INTO fac_rapport (fac_rapport_node,
|
||
fac_rapport_volgnr,
|
||
fac_rapport_regel)
|
||
VALUES ('PERSLID_I',
|
||
p_import_key,
|
||
TO_CHAR (SYSDATE, 'dd-mm-yyyy hh24:mi:ss') || ';' ||
|
||
rec.prs_perslid_naam || ';' ||
|
||
rec.prs_perslid_voornaam || ';' ||
|
||
rec.prs_perslid_nr || ';' ||
|
||
rec.prs_perslid_email);
|
||
|
||
BEGIN
|
||
SELECT prs_perslid_key
|
||
INTO v_perslid_key
|
||
FROM prs_perslid
|
||
WHERE prs_perslid_nr = rec.prs_perslid_nr
|
||
AND prs_perslid_verwijder IS NULL;
|
||
|
||
|
||
-- Zet de laatste sync datum zodat we personen met een syncdatum in het
|
||
-- verleden kunnen verwijderen in de achtergrond taak.
|
||
UPDATE prs_perslid
|
||
SET prs_perslid_externsyncdate = SYSDATE
|
||
WHERE prs_perslid_key = v_perslid_key;
|
||
|
||
-- Welke kostenplaats staat er geregistreerd bij de persoon
|
||
v_kostenplaats_nr := FLX.getflex ('PRS', 1000, v_perslid_key, 'P');
|
||
|
||
-- Check of de persoon maandaat heeft op alle kostenplaatsen
|
||
SELECT COUNT(*)
|
||
INTO v_count
|
||
FROM prs_perslidkostenplaats
|
||
WHERE prs_perslid_key = v_perslid_key
|
||
AND prs_perslidkostenplaats_boeken = 1
|
||
AND prs_kostenplaats_key IS NULL;
|
||
|
||
IF v_count = 1
|
||
THEN
|
||
IF v_kostenplaats_nr IS NOT NULL
|
||
THEN
|
||
-- Dan zetten maken we de kostenplaats leeg bij de persoon. Als iemand daarna
|
||
-- de mandatering van alle kostenplaatsen verwijderd, wordt bij de import de
|
||
-- default kostenplaats weer gelinkt.
|
||
FLX.setflex ('PRS', 1000, v_perslid_key, 'P', NULL);
|
||
END IF;
|
||
ELSE
|
||
IF COALESCE(v_kostenplaats_nr, '999') <> COALESCE(rec.prs_kenmerk3, '999')
|
||
THEN
|
||
-- verwijder het oude mandaat en voeg een nieuw mandaat toe.
|
||
-- eerst gaan we kijken of de nieuwe kostenplaats al bestaat.
|
||
IF rec.prs_kenmerk3 IS NOT NULL
|
||
THEN
|
||
BEGIN
|
||
SELECT prs_kostenplaats_key
|
||
INTO v_kostenplaats_key_new
|
||
FROM prs_kostenplaats
|
||
WHERE prs_kostenplaats_nr = rec.prs_kenmerk3
|
||
AND prs_kostenplaats_module = 'PRS';
|
||
EXCEPTION WHEN NO_DATA_FOUND
|
||
THEN
|
||
INSERT INTO prs_kostenplaats( prs_kostenplaats_nr, prs_kostenplaats_omschrijving, prs_kostenplaats_module)
|
||
VALUES (rec.prs_kenmerk3, rec.prs_kenmerk4, 'PRS')
|
||
RETURNING prs_kostenplaats_key INTO v_kostenplaats_key_new;
|
||
END;
|
||
ELSE
|
||
v_kostenplaats_key_new := -1;
|
||
END IF;
|
||
|
||
-- nu gaan we de key van de oude kostenplaats opzoeken
|
||
BEGIN
|
||
SELECT prs_kostenplaats_key
|
||
INTO v_kostenplaats_key_oud
|
||
FROM prs_kostenplaats
|
||
WHERE prs_kostenplaats_nr = v_kostenplaats_nr
|
||
AND prs_kostenplaats_module = 'PRS';
|
||
EXCEPTION WHEN NO_DATA_FOUND
|
||
THEN
|
||
v_kostenplaats_key_oud := -1;
|
||
END;
|
||
|
||
DELETE prs_perslidkostenplaats
|
||
WHERE prs_perslid_key = v_perslid_key
|
||
AND prs_kostenplaats_key = v_kostenplaats_key_oud;
|
||
|
||
IF v_kostenplaats_key_new <> -1
|
||
THEN
|
||
INSERT INTO prs_perslidkostenplaats (prs_perslid_key, prs_kostenplaats_key, prs_perslidkostenplaats_boeken, prs_perslidkostenplaats_inzage)
|
||
VALUES (v_perslid_key, v_kostenplaats_key_new, 1, 0);
|
||
END IF;
|
||
|
||
-- Pas de kostenplaats aan bij de persoon.
|
||
FLX.setflex ('PRS', 1000, v_perslid_key, 'P', rec.prs_kenmerk3);
|
||
END IF;
|
||
END IF;
|
||
|
||
-- registreren van de leidinggevende
|
||
IF rec.prs_kenmerk1 IS NOT NULL
|
||
THEN
|
||
BEGIN
|
||
SELECT prs_perslid_key
|
||
INTO v_leiding_key
|
||
FROM prs_perslid
|
||
WHERE prs_perslid_email = rec.prs_kenmerk1;
|
||
|
||
FLX.setflex ('PRS', 1040, v_perslid_key, 'P', v_leiding_key);
|
||
|
||
EXCEPTION WHEN NO_DATA_FOUND
|
||
THEN
|
||
fac.imp_writelog (p_import_key, 'W', 'Leidinggevende niet gevonden:' || rec.prs_kenmerk1, '');
|
||
END;
|
||
END IF;
|
||
|
||
-- registreren van de matrixmanager
|
||
IF rec.prs_kenmerk2 IS NOT NULL
|
||
THEN
|
||
BEGIN
|
||
SELECT prs_perslid_key
|
||
INTO v_leiding_key
|
||
FROM prs_perslid
|
||
WHERE prs_perslid_email = rec.prs_kenmerk2;
|
||
|
||
FLX.setflex ('PRS', 1041, v_perslid_key, 'P', v_leiding_key);
|
||
|
||
EXCEPTION WHEN NO_DATA_FOUND
|
||
THEN
|
||
fac.imp_writelog (p_import_key, 'W', 'Matrixmanager niet gevonden:' || rec.prs_kenmerk2, '');
|
||
END;
|
||
END IF;
|
||
|
||
EXCEPTION WHEN NO_DATA_FOUND
|
||
THEN
|
||
NULL;
|
||
-- Persoon is niet aangemaakt in de import. Hier is al een foutmeldig voor gegenereerd.
|
||
END;
|
||
END LOOP;
|
||
|
||
-- De logging in de imp_log tabel wordt te snel verwijderd. Daarom zetten we de warn+ings, errors en informatie loggings maar
|
||
-- in de fac_rapport tabel.
|
||
INSERT INTO fac_rapport (fac_rapport_node,
|
||
fac_rapport_volgnr,
|
||
fac_rapport_regel)
|
||
SELECT 'PERSLID_' || imp_log_status,
|
||
fac_import_key,
|
||
LISTAGG (
|
||
TO_CHAR (imp_log_datum, 'dd-mm-yyyy hh24:mi:ss')
|
||
|| ';'
|
||
|| imp_log_omschrijving
|
||
|| ';'
|
||
|| imp_log_hint || ';[' || v_perslid_email || ']-' || v_afdeling_naam,
|
||
CHR (10))
|
||
WITHIN GROUP (ORDER BY imp_log_datum) logline
|
||
FROM imp_log
|
||
WHERE imp_log_status IN ('W', 'E', 'I')
|
||
AND fac_import_key = p_import_key
|
||
GROUP BY fac_import_key, imp_log_status;
|
||
|
||
-- Oude logging wordt verwijderd.
|
||
DELETE fac_rapport
|
||
WHERE fac.safe_to_date (SUBSTR (fac_rapport_regel, 1, 19), 'dd-mm-yyyy hh24:mi:ss') < SYSDATE - 1
|
||
AND fac_rapport_node LIKE 'PERSLID_%';
|
||
|
||
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.imp_writelog (p_import_key,
|
||
'E',
|
||
v_errormsg || '[' || v_kostenplaats_nr_new || ']',
|
||
v_hint);
|
||
END;
|
||
/
|
||
|
||
-- view van aantal mensen en afdelingen die op de nominiatie staan om verwijderd te worden.
|
||
CREATE OR REPLACE VIEW bamg_v_import_te_verwijderen
|
||
AS
|
||
SELECT 'Organisatie' importtype,
|
||
TRUNC (prs_afdeling_externsyncdate) datum,
|
||
COUNT (*) aantal
|
||
FROM prs_afdeling
|
||
WHERE prs_afdeling_verwijder IS NULL
|
||
AND prs_afdeling_externsyncdate IS NOT NULL
|
||
AND prs_afdeling_externsyncdate < SYSDATE - 1
|
||
GROUP BY TRUNC (prs_afdeling_externsyncdate)
|
||
UNION ALL
|
||
SELECT 'Personen', TRUNC (prs_perslid_externsyncdate), COUNT (*)
|
||
FROM prs_perslid
|
||
WHERE prs_perslid_verwijder IS NULL
|
||
AND prs_perslid_externsyncdate IS NOT NULL
|
||
AND prs_perslid_externsyncdate < SYSDATE - 1
|
||
GROUP BY TRUNC (prs_perslid_externsyncdate);
|
||
|
||
-- Aantal foutmeldingen in de personen en organisatie import
|
||
CREATE OR REPLACE VIEW bamg_v_import_resultaat
|
||
AS
|
||
SELECT 'Organisatie' importtype,
|
||
TRUNC (fac_import_datum_gelezen) datum,
|
||
imp_log_omschrijving || ' - ' || imp_log_hint omschrijving
|
||
FROM fac_import i, imp_log l
|
||
WHERE fac_import_app_key = 42 -- organisatie import
|
||
AND i.fac_import_key = l.fac_import_key
|
||
AND imp_log_status = 'E'
|
||
UNION ALL
|
||
SELECT 'Personen',
|
||
TO_DATE (SUBSTR (fac_rapport_regel, 1, 10), 'dd-mm-yyyy'),
|
||
fac_rapport_regel
|
||
FROM fac_rapport
|
||
WHERE fac_rapport_node = 'PERSLID_E';
|
||
|
||
-- Contract reminder
|
||
CREATE OR REPLACE VIEW bamg_v_noti_cntreminder_coll
|
||
AS
|
||
SELECT 'CUST01' code,
|
||
'' sender,
|
||
p.prs_collega_key receiver,
|
||
'Rappel: Contract '
|
||
|| c.cnt_contract_nummer_intern
|
||
|| DECODE (cnt_contract_versie,
|
||
NULL, '',
|
||
'.' || cnt_contract_versie)
|
||
|| ' ('
|
||
|| c.cnt_contract_omschrijving
|
||
|| ' '
|
||
|| b.prs_bedrijf_naam
|
||
|| ')'
|
||
|| ' moet uiterlijk per '
|
||
|| TO_CHAR (cnt.cnt_getopzegdatum (c.cnt_contract_key),
|
||
'DD-MM-YYYY')
|
||
|| ' worden verlengd of opgezegd.' text,
|
||
c.cnt_contract_key key,
|
||
NULL xkey,
|
||
NULL xemail,
|
||
NULL xmobile,
|
||
NULL fac_srtnotificatie_key,
|
||
NULL attachments,
|
||
NULL xsender,
|
||
NULL prs_bedrijfadres_key
|
||
FROM cnt_v_aanwezigcontract c,
|
||
prs_bedrijf b,
|
||
(SELECT prs_perslid_key, prs_perslid_key prs_collega_key
|
||
FROM prs_perslid
|
||
UNION ALL
|
||
SELECT prs_perslid_key, prs_perslid_key_alt prs_collega_key
|
||
FROM prs_collega) p
|
||
WHERE b.prs_bedrijf_key = c.cnt_prs_bedrijf_key
|
||
AND c.prs_perslid_key_beh = p.prs_perslid_key
|
||
AND cnt_contract_verwijder IS NULL
|
||
AND cnt_contract_status = 0 -- actief
|
||
AND (SYSDATE BETWEEN cnt.cnt_getrappeldatum (c.cnt_contract_key)
|
||
AND cnt.cnt_getopzegdatum (c.cnt_contract_key));
|
||
|
||
-- VASTGOED
|
||
CREATE OR REPLACE VIEW bamg_v_gebouw_contract_geg
|
||
AS
|
||
SELECT FLX.getflex ('ALG',
|
||
1011,
|
||
g.alg_gebouw_key,
|
||
'G')
|
||
plaats,
|
||
FLX.getflex ('ALG',
|
||
1001,
|
||
g.alg_gebouw_key,
|
||
'G')
|
||
adres,
|
||
FLX.getflex ('ALG',
|
||
1012,
|
||
g.alg_gebouw_key,
|
||
'G')
|
||
postcode,
|
||
alg_gebouw_code,
|
||
(SELECT fac_usrdata_omschr
|
||
FROM fac_usrdata
|
||
WHERE fac_usrdata_key = FLX.getflex ('ALG',
|
||
1005,
|
||
g.alg_gebouw_key,
|
||
'G'))
|
||
eigendom,
|
||
cnt_contract_nummer_intern contract_nummer,
|
||
cnt_contract_looptijd_van,
|
||
DECODE (c.cnt_contract_key,
|
||
NULL, NULL,
|
||
FLX.getflex ('CNT',
|
||
3,
|
||
c.cnt_contract_key,
|
||
NULL))
|
||
verlengen_met,
|
||
DECODE (c.cnt_contract_key,
|
||
NULL, NULL,
|
||
FLX.getflex ('CNT',
|
||
1,
|
||
c.cnt_contract_key,
|
||
NULL))
|
||
opgezegd,
|
||
(SELECT t.cnt_termijn_aantal || ' ' || t.cnt_termijn_type
|
||
FROM cnt_termijn t
|
||
WHERE t.cnt_termijn_key = cnt_contract_rappeltermijn)
|
||
rappeltermijn,
|
||
(SELECT t.cnt_termijn_aantal || ' ' || t.cnt_termijn_type
|
||
FROM cnt_termijn t
|
||
WHERE t.cnt_termijn_key = cnt_contract_opzegtermijn)
|
||
opzegtermijn,
|
||
CNT.cnt_getOpzegdatum(c.cnt_contract_key) opzegdatum,
|
||
cnt_contract_looptijd_tot,
|
||
prs_kostenplaats_nr,
|
||
bam.prs_perslid_naam_full klantmanager,
|
||
yask.prs_perslid_naam_full contactpersoon_yask,
|
||
prs_bedrijf_naam,
|
||
prs_bedrijf_bezoek_adres,
|
||
prs_bedrijf_bezoek_plaats
|
||
FROM alg_gebouw g,
|
||
alg_locatie l,
|
||
(SELECT cnt_contract_key, alg_gebouw_key
|
||
FROM cnt_contract_plaats, alg_gebouw
|
||
WHERE cnt_alg_plaats_code = 'L'
|
||
AND cnt_alg_plaats_key = alg_locatie_key
|
||
AND cnt_contract_plaats_verwijder IS NULL
|
||
UNION ALL
|
||
SELECT cnt_contract_key, cnt_alg_plaats_key alg_gebouw_key
|
||
FROM cnt_contract_plaats
|
||
WHERE cnt_alg_plaats_code = 'G'
|
||
AND cnt_contract_plaats_verwijder IS NULL) cp,
|
||
cnt_contract c,
|
||
prs_v_perslid_fullnames bam,
|
||
prs_v_perslid_fullnames yask,
|
||
prs_kostenplaats k,
|
||
prs_bedrijf b
|
||
WHERE l.alg_locatie_key = g.alg_locatie_key
|
||
AND g.alg_gebouw_key = cp.alg_gebouw_key(+)
|
||
AND cp.cnt_contract_key = c.cnt_contract_key(+)
|
||
AND g.prs_kostenplaats_key = k.prs_kostenplaats_key(+)
|
||
AND g.prs_perslid_key_verantw = yask.prs_perslid_key(+)
|
||
AND g.prs_perslid_key_verantw2 = bam.prs_perslid_key(+)
|
||
AND c.cnt_prs_bedrijf_key = b.prs_bedrijf_key(+);
|
||
|
||
|
||
-- view om QR codes voor een deel te genereren.
|
||
CREATE OR REPLACE VIEW bamg_v_rap_qr_deel
|
||
AS
|
||
SELECT fac_bookmark_naam,
|
||
fac_bookmark_id,
|
||
ins_discipline_omschrijving,
|
||
ins_srtgroep_omschrijving,
|
||
ins_srtdeel_omschrijving,
|
||
ins_deel_omschrijving,
|
||
alg_locatie_key,
|
||
alg_gebouw_omschrijving,
|
||
ins_deel_aanmaak,
|
||
ins_deel_key
|
||
FROM fac_bookmark b, ins_v_deel_gegevens d
|
||
WHERE fac_bookmark_expire IS NULL
|
||
AND fac_bookmark_id = 'dc0pIPeiVsSco7sO';
|
||
|
||
-- view om QR codes voor een ruimte te genereren.
|
||
-- Ieder srtruimte krijgt een eigen bookmark
|
||
-- Om een link tussen bookmark en srtuimte te maken
|
||
-- wordt de omschrijving van de bookmark als volgt gevuld:
|
||
-- QR bij verkeersruimte key:30
|
||
-- De key is dan de key van de srtruimte.
|
||
CREATE OR REPLACE VIEW bamg_v_rap_qr_ruimte
|
||
AS
|
||
SELECT b.fac_bookmark_naam,
|
||
b.fac_bookmark_id,
|
||
sr.alg_srtruimte_omschrijving,
|
||
rg.alg_ruimte_omschrijving,
|
||
rg.alg_ruimte_nr,
|
||
rg.alg_ruimte_key,
|
||
alg_locatie_omschrijving,
|
||
alg_gebouw_omschrijving,
|
||
alg_verdieping_omschrijving
|
||
FROM fac_bookmark b, alg_srtruimte sr, alg_v_ruimte_gegevens rg
|
||
WHERE b.fac_bookmark_expire IS NULL
|
||
AND COALESCE(FAC.safe_to_number(TRIM(SUBSTR(b.fac_bookmark_naam, INSTR(b.fac_bookmark_naam, ':')+1))),-1) = sr.alg_srtruimte_key
|
||
AND sr.alg_srtruimte_key = rg.alg_srtruimte_key;
|
||
|
||
-- Financiele interface YASK
|
||
CREATE OR REPLACE VIEW bamg_v_kosten_rev_billing
|
||
AS
|
||
SELECT o.mld_opdr_key,
|
||
sd.ins_srtdiscipline_prefix || m.mld_melding_key || '/' || o.mld_opdr_bedrijfopdr_volgnr nummer,
|
||
a.prs_afdeling_naam opco,
|
||
DECODE (m.mld_stdmelding_key, 51, prkp.mld_kenmerkmelding_waarde, ko.prs_kostenplaats_nr) kpl_opdr,
|
||
k.prs_kostenplaats_nr kpl_bam,
|
||
k.prs_kostenplaats_omschrijving kp_omschrijving,
|
||
ks.prs_kostensoort_opmerking gb_bam,
|
||
ks.prs_kostensoort_altcode gb_rekening,
|
||
d.ins_discipline_omschrijving || ' / ' || mld_stdmelding_omschrijving dienst,
|
||
o.mld_opdr_omschrijving omschrijving,
|
||
b.prs_bedrijf_naam uitvoerende,
|
||
'Yask/' || DECODE (m.mld_stdmelding_key, 51, 'E', 'B') || '-nota '|| lower(to_char(MLD.getopdrachtstatusdate (o.mld_opdr_key, 9), 'MONTH')) || ' ' || prs_kostensoort_oms omschrijving_bam,
|
||
DECODE (m.mld_stdmelding_key, 51, 'E-budget (CHV-vast)', 'B-budget (CHV-variabel)') kd_omschrijving,
|
||
TRUNC(MLD.getopdrachtstatusdate (o.mld_opdr_key, 9), 'mm') datum,
|
||
so.mld_statusopdr_omschrijving,
|
||
MLD.getopdrachtstatusdate (o.mld_opdr_key, 9) afgerond_op,
|
||
COALESCE(FAC.safe_to_number(btw.mld_kenmerk_hint), 21) btw,
|
||
COALESCE(FAC.safe_to_number(btw.mld_kenmerkopdr_waarde), mld_opdr_kosten) bedrag_ex
|
||
FROM mld_opdr o,
|
||
mld_melding m,
|
||
prs_perslid p,
|
||
prs_v_afdeling_boom ab,
|
||
prs_afdeling a,
|
||
alg_v_onroerendgoed aok,
|
||
alg_gebouw g,
|
||
prs_kostenplaats k,
|
||
prs_kostenplaats ko,
|
||
mld_stdmelding std,
|
||
ins_tab_discipline d,
|
||
ins_srtdiscipline sd,
|
||
prs_kostensoort ks,
|
||
mld_statusopdr so,
|
||
prs_bedrijf b,
|
||
(SELECT mld_melding_key, mld_kenmerkmelding_waarde FROM mld_kenmerkmelding km WHERE mld_kenmerk_key = 981) prkp, -- 981 kostenplaats
|
||
(SELECT mld_melding_key, mld_kenmerkmelding_waarde FROM mld_kenmerkmelding km WHERE mld_kenmerk_key = 441) prks, -- 441 grootboekrekening
|
||
(SELECT mld_opdr_key, ok.mld_kenmerk_hint, mld_kenmerkopdr_waarde FROM mld_kenmerkopdr km, mld_kenmerk ok
|
||
WHERE ok.mld_srtkenmerk_key = 882 AND ok.mld_kenmerk_verwijder IS NULL AND km.mld_kenmerk_key = ok.mld_kenmerk_key) btw -- hoog, laag en nul_ procent btw
|
||
WHERE o.mld_melding_key = m.mld_melding_key
|
||
AND m.mld_alg_onroerendgoed_keys = aok.alg_onroerendgoed_keys(+)
|
||
AND aok.alg_gebouw_key = g.alg_gebouw_key(+)
|
||
AND g.prs_kostenplaats_key = k.prs_kostenplaats_key(+)
|
||
AND m.mld_stdmelding_key = std.mld_stdmelding_key
|
||
AND std.mld_ins_discipline_key = d.ins_discipline_key
|
||
AND COALESCE (o.prs_kostensoort_key, std.prs_kostensoort_key) =
|
||
ks.prs_kostensoort_key(+)
|
||
AND m.prs_perslid_key_voor = p.prs_perslid_key
|
||
AND p.prs_afdeling_key = ab.prs_afdeling_key
|
||
AND ab.prs_afdeling_key1 = a.prs_afdeling_key
|
||
AND o.prs_kostenplaats_key = ko.prs_kostenplaats_key(+)
|
||
--AND o.mld_statusopdr_key = 9 -- Afgerond
|
||
AND m.mld_melding_key = prkp.mld_melding_key(+)
|
||
AND m.mld_melding_key = prks.mld_melding_key(+)
|
||
AND o.mld_opdr_key = btw.mld_opdr_key(+)
|
||
AND d.ins_srtdiscipline_key = sd.ins_srtdiscipline_key
|
||
AND o.mld_statusopdr_key = so.mld_statusopdr_key
|
||
AND o.mld_uitvoerende_keys = b.prs_bedrijf_key(+)
|
||
UNION ALL
|
||
SELECT boi.bes_bestelopdr_key,
|
||
'B' || bes_bestelopdr_id,
|
||
a.prs_afdeling_naam
|
||
opco,
|
||
k.prs_kostenplaats_nr
|
||
kpl_opdr,
|
||
mld_adres_gebouw_ruimte
|
||
kpl_bam,
|
||
(SELECT prs_kostenplaats_omschrijving
|
||
FROM prs_kostenplaats
|
||
WHERE prs_kostenplaats_nr = mld_adres_gebouw_ruimte)
|
||
kp_omschrijving,
|
||
ks.prs_kostensoort_opmerking
|
||
gb_bam,
|
||
ks.prs_kostensoort_altcode
|
||
gb_rekening,
|
||
d.ins_discipline_omschrijving,
|
||
boi.bes_bestelopdr_item_aantal || ' * ' || sd.bes_srtdeel_omschrijving,
|
||
bd.prs_bedrijf_naam
|
||
uitvoerende,
|
||
'Yask/B-nota '
|
||
|| LOWER (TO_CHAR (bes_bestelopdr_item_verwerkt, 'MONTH'))
|
||
|| ' '
|
||
|| prs_kostensoort_oms
|
||
omschrijving_bam,
|
||
'B-budget (CHV-variabel)'
|
||
kd_omschrijving,
|
||
TRUNC (bes_bestelopdr_item_verwerkt, 'mm')
|
||
datum,
|
||
bes_bestelopdrstatuses_omschr,
|
||
(SELECT MAX (fac_tracking_datum)
|
||
FROM fac_tracking
|
||
WHERE fac_srtnotificatie_key = 20 -- BES2AF
|
||
AND fac_tracking_refkey = bo.bes_bestelopdr_key)
|
||
geleverd_op,
|
||
sd.bes_srtdeel_btw
|
||
btw,
|
||
boi.bes_bestelopdr_item_aantal * boi.bes_bestelopdr_item_prijs
|
||
bedrag_ex
|
||
FROM bes_bestelopdr_item boi,
|
||
bes_bestelopdr bo,
|
||
bes_bestelling_item bi,
|
||
bes_bestelling b,
|
||
bes_srtdeel sd,
|
||
bes_srtgroep sg,
|
||
bes_discipline d,
|
||
prs_perslid p,
|
||
prs_v_afdeling_boom ab,
|
||
prs_afdeling a,
|
||
prs_kostenplaats k,
|
||
mld_adres ad,
|
||
prs_kostensoort ks,
|
||
prs_bedrijf bd,
|
||
bes_bestelopdrstatuses bos
|
||
WHERE bes_bestelopdr_item_status = 7 -- 7 verwerkt
|
||
AND boi.bes_bestelopdr_item_key = bi.bes_bestelopdr_item_key
|
||
AND boi.bes_bestelopdr_key = bo.bes_bestelopdr_key
|
||
AND bi.bes_bestelling_key = b.bes_bestelling_key
|
||
AND b.prs_perslid_key_voor = p.prs_perslid_key
|
||
AND p.prs_afdeling_key = ab.prs_afdeling_key
|
||
AND ab.prs_afdeling_key1 = a.prs_afdeling_key
|
||
AND bi.bes_srtdeel_key = sd.bes_srtdeel_key
|
||
AND sd.bes_srtgroep_key = sg.bes_srtgroep_key
|
||
AND sg.ins_discipline_key = d.ins_discipline_key
|
||
AND b.mld_adres_key_lev = ad.mld_adres_key
|
||
AND b.prs_kostenplaats_key = k.prs_kostenplaats_key(+)
|
||
AND bo.prs_bedrijf_key = bd.prs_bedrijf_key
|
||
AND d.prs_kostensoort_key = ks.prs_kostensoort_key(+)
|
||
AND boi.bes_bestelopdr_item_status = bos.bes_bestelopdrstatuses_key(+);
|
||
|
||
-- Rapportage voor de (interne) doorbelasting
|
||
CREATE OR REPLACE VIEW bamg_v_kosten_klant
|
||
AS
|
||
SELECT kg.prs_kostenplaats_nr kostenplaats_nr_geb,
|
||
kg.prs_kostenplaats_omschrijving kostenplaats_oms_geb,
|
||
pf.prs_perslid_naam_full naam,
|
||
a.prs_afdeling_omschrijving afdeling,
|
||
k.prs_kostenplaats_nr kostenplaats_nr,
|
||
k.prs_kostenplaats_omschrijving kostenplaats_oms,
|
||
COALESCE (flx.getflex('PRS', 1060, COALESCE(prs_afdeling_key4, -1), 'A'),
|
||
COALESCE (flx.getflex('PRS', 1060, COALESCE(prs_afdeling_key3, -1), 'A'),
|
||
COALESCE (flx.getflex('PRS', 1060, COALESCE(prs_afdeling_key2, -1), 'A'),
|
||
COALESCE (flx.getflex('PRS', 1060, COALESCE(prs_afdeling_key1, -1), 'A'), '')))) debiteur,
|
||
DECODE(ab.prs_bedrijf_key, 1, 'BAM' , a1.prs_afdeling_omschrijving) ontvanger, -- bedrijf naam
|
||
DECODE(ab.prs_bedrijf_key, 1, '' , flx.getflex('PRS', 1100, prs_afdeling_key1, 'A')) adreshuisnr,
|
||
DECODE(ab.prs_bedrijf_key, 1, '' , flx.getflex('PRS', 1101, prs_afdeling_key1, 'A')) postcode,
|
||
DECODE(ab.prs_bedrijf_key, 1, '' , flx.getflex('PRS', 1102, prs_afdeling_key1, 'A')) plaats,
|
||
DECODE(ab.prs_bedrijf_key, 1, '' , flx.getflex('PRS', 1120, prs_afdeling_key1, 'A')) email,
|
||
mld_stdmelding_omschrijving omschrijving,
|
||
sd.ins_srtdiscipline_prefix || m.mld_melding_key || '/' || mld_opdr_bedrijfopdr_volgnr onzeref, -- opdrachtnr
|
||
flx.getflex('MLD', 1001, m.mld_melding_key) uwref, -- indien gevuld in opdracht
|
||
mld_opdr_kosten,
|
||
DECODE(ab.prs_bedrijf_key, 1, 'Intern' , 'Extern') internofextern,
|
||
MLD.getopdrachtstatusdate (o.mld_opdr_key, 9) afgerond_op,
|
||
o.mld_opdr_key
|
||
FROM mld_opdr o,
|
||
mld_melding m,
|
||
mld_stdmelding std,
|
||
mld_discipline md,
|
||
ins_srtdiscipline sd,
|
||
prs_perslid p,
|
||
prs_v_perslid_fullnames pf,
|
||
prs_v_afdeling_boom ab,
|
||
alg_v_onroerendgoed aogk,
|
||
prs_kostenplaats k,
|
||
prs_afdeling a1,
|
||
prs_afdeling a,
|
||
alg_gebouw g,
|
||
prs_kostenplaats kg
|
||
WHERE o.mld_melding_key = m.mld_melding_key
|
||
AND m.mld_stdmelding_key = std.mld_stdmelding_key
|
||
AND std.mld_ins_discipline_key = md.ins_discipline_key
|
||
AND md.ins_srtdiscipline_key = sd.ins_srtdiscipline_key
|
||
AND m.prs_kostenplaats_key = k.prs_kostenplaats_key
|
||
AND m.prs_perslid_key = p.prs_perslid_key
|
||
AND p.prs_afdeling_key = ab.prs_afdeling_key
|
||
AND p.prs_perslid_key = pf.prs_perslid_key
|
||
AND m.mld_alg_onroerendgoed_keys = aogk.alg_onroerendgoed_keys
|
||
AND m.mld_kosten_klant = 1
|
||
AND ab.prs_afdeling_key1 = a1.prs_afdeling_key
|
||
AND p.prs_afdeling_key = a.prs_afdeling_key
|
||
AND aogk.alg_gebouw_key = g.alg_gebouw_key
|
||
AND g.prs_kostenplaats_key = kg.prs_kostenplaats_key
|
||
UNION ALL
|
||
SELECT mld_adres_gebouw_ruimte kpl_bam,
|
||
(SELECT prs_kostenplaats_omschrijving
|
||
FROM prs_kostenplaats
|
||
WHERE prs_kostenplaats_nr = mld_adres_gebouw_ruimte)
|
||
kp_omschrijving,
|
||
pf.prs_perslid_naam_full naam,
|
||
a.prs_afdeling_omschrijving afdeling,
|
||
k.prs_kostenplaats_nr kostenplaats_nr,
|
||
k.prs_kostenplaats_omschrijving kostenplaats_oms,
|
||
COALESCE (flx.getflex('PRS', 1060, COALESCE(prs_afdeling_key4, -1), 'A'),
|
||
COALESCE (flx.getflex('PRS', 1060, COALESCE(prs_afdeling_key3, -1), 'A'),
|
||
COALESCE (flx.getflex('PRS', 1060, COALESCE(prs_afdeling_key2, -1), 'A'),
|
||
COALESCE (flx.getflex('PRS', 1060, COALESCE(prs_afdeling_key1, -1), 'A'), '')))) debiteur,
|
||
DECODE(ab.prs_bedrijf_key, 1, 'BAM' , a1.prs_afdeling_omschrijving) ontvanger, -- bedrijf naam
|
||
DECODE(ab.prs_bedrijf_key, 1, '' , flx.getflex('PRS', 1100, prs_afdeling_key1, 'A')) adreshuisnr,
|
||
DECODE(ab.prs_bedrijf_key, 1, '' , flx.getflex('PRS', 1101, prs_afdeling_key1, 'A')) postcode,
|
||
DECODE(ab.prs_bedrijf_key, 1, '' , flx.getflex('PRS', 1102, prs_afdeling_key1, 'A')) plaats,
|
||
DECODE(ab.prs_bedrijf_key, 1, '' , flx.getflex('PRS', 1120, prs_afdeling_key1, 'A')) email,
|
||
d.ins_discipline_omschrijving || ' / ' || bes_bestelopdr_item_aantal || ' * ' || bes_srtdeel_omschrijving,
|
||
'B' || bes_bestelopdr_id onzeref, -- opdrachtnr
|
||
NULL uwref, -- indien gevuld in opdracht
|
||
bes_bestelopdr_item_aantal * bes_bestelopdr_item_prijs,
|
||
DECODE(ab.prs_bedrijf_key, 1, 'Intern' , 'Extern') internofextern,
|
||
bes_bestelopdr_item_verwerkt afgerond_op,
|
||
NULL opdr_key
|
||
FROM bes_bestelopdr_item boi,
|
||
bes_bestelopdr bo,
|
||
bes_bestelling_item bi,
|
||
bes_bestelling b,
|
||
bes_srtdeel sd,
|
||
bes_srtgroep sg,
|
||
bes_discipline d,
|
||
prs_perslid p,
|
||
prs_v_perslid_fullnames_all pf,
|
||
prs_v_afdeling_boom ab,
|
||
prs_afdeling a,
|
||
prs_afdeling a1,
|
||
prs_kostenplaats k,
|
||
mld_adres ad,
|
||
prs_kostensoort ks,
|
||
prs_bedrijf bd,
|
||
bes_bestelopdrstatuses bos
|
||
WHERE bes_bestelopdr_item_status = 7 -- 7 verwerkt
|
||
AND boi.bes_bestelopdr_item_key = bi.bes_bestelopdr_item_key
|
||
AND boi.bes_bestelopdr_key = bo.bes_bestelopdr_key
|
||
AND bi.bes_bestelling_key = b.bes_bestelling_key
|
||
AND b.prs_perslid_key_voor = p.prs_perslid_key
|
||
AND p.prs_afdeling_key = ab.prs_afdeling_key
|
||
AND p.prs_perslid_key = pf.prs_perslid_key
|
||
AND p.prs_afdeling_key = a.prs_afdeling_key
|
||
AND ab.prs_afdeling_key1 = a1.prs_afdeling_key
|
||
AND bi.bes_srtdeel_key = sd.bes_srtdeel_key
|
||
AND sd.bes_srtgroep_key = sg.bes_srtgroep_key
|
||
AND sg.ins_discipline_key = d.ins_discipline_key
|
||
AND b.mld_adres_key_lev = ad.mld_adres_key
|
||
AND b.prs_kostenplaats_key = k.prs_kostenplaats_key(+)
|
||
AND bo.prs_bedrijf_key = bd.prs_bedrijf_key
|
||
AND d.prs_kostensoort_key = ks.prs_kostensoort_key(+)
|
||
AND boi.bes_bestelopdr_item_status = bos.bes_bestelopdrstatuses_key(+);
|
||
|
||
-- Rapportage om de kosten voor de reserveringen van SVZ in Breda inzichtelijk te krijgen
|
||
-- De filters worden in het rapport aangebracht.
|
||
CREATE OR REPLACE VIEW bamg_v_rap_reservering_kosten
|
||
AS
|
||
SELECT res_reservering_key || '/' || rrr.res_rsv_ruimte_volgnr nummer,
|
||
a.prs_afdeling_naam afdeling,
|
||
res_ruimte_nr ruimte,
|
||
res_rsv_ruimte_van van,
|
||
res_rsv_ruimte_tot tot,
|
||
rr.res_ruimte_prijs prijs,
|
||
(res_rsv_ruimte_tot - res_rsv_ruimte_van) * 24 * rr.res_ruimte_prijs totaal
|
||
FROM res_rsv_ruimte rrr,
|
||
prs_perslid p,
|
||
prs_afdeling a,
|
||
res_ruimte_opstelling rro,
|
||
res_ruimte rr
|
||
WHERE rrr.res_ruimte_opstel_key = rro.res_ruimte_opstel_key
|
||
AND rro.res_ruimte_key = rr.res_ruimte_key
|
||
AND rrr.res_rsv_ruimte_host_key = p.prs_perslid_key
|
||
AND p.prs_afdeling_key = a.prs_afdeling_key
|
||
AND res_ruimte_prijs IS NOT NULL;
|
||
|
||
|
||
-- Dagelijkse taak
|
||
CREATE OR REPLACE PROCEDURE bamg_daily
|
||
AS
|
||
|
||
CURSOR c_frz
|
||
IS
|
||
SELECT DISTINCT mld_opdr_key
|
||
FROM bamg_v_kosten_rev_billing
|
||
WHERE datum = ADD_MONTHS (TRUNC (SYSDATE, 'mm'), -1)
|
||
AND mld_statusopdr_omschrijving = 'Afgerond';
|
||
|
||
-- Als status geleverd is (6)
|
||
CURSOR c_frz_bes
|
||
IS
|
||
SELECT bes_bestelopdr_item_key
|
||
FROM bes_bestelopdr_item
|
||
WHERE bes_bestelopdr_item_status = 6;
|
||
|
||
v_volgnr NUMBER;
|
||
v_opdr_key NUMBER;
|
||
BEGIN
|
||
-- Verwerk de organisatieonderdelen die we een voor een via de API ontvangen hebben
|
||
-- en kijk welke organistatie-onderdelen en personen verwijderd kunnen worden.
|
||
bamg_update_organisatie_sched;
|
||
|
||
-- Anonymizeren van bezoekers (na 6 maanden) en personen (na 12 maanden)
|
||
SELECT COALESCE(MAX(fac_rapport_volgnr),0)
|
||
INTO v_volgnr
|
||
FROM fac_rapport
|
||
WHERE fac_rapport_node = 'Anonymize';
|
||
|
||
v_volgnr := v_volgnr + 1;
|
||
IF TO_CHAR (SYSDATE, 'DD') = '01'
|
||
THEN
|
||
BEGIN
|
||
ANO.anonymizebez (add_months(trunc(SYSDATE), -7), add_months(trunc(SYSDATE), -6));
|
||
INSERT INTO fac_rapport (fac_rapport_node, fac_rapport_volgnr, fac_rapport_regel)
|
||
VALUES('Anonymize', v_volgnr, 'Bezoekers geanonymizeerd ' ||
|
||
to_char(add_months(TRUNC(SYSDATE), -7), 'dd-mm-yyyy hh24:mi:ss') || ' - ' ||
|
||
to_char(add_months(TRUNC(SYSDATE), -6), 'dd-mm-yyyy hh24:mi:ss'));
|
||
EXCEPTION WHEN OTHERS
|
||
THEN
|
||
INSERT INTO fac_rapport (fac_rapport_node, fac_rapport_volgnr, fac_rapport_regel)
|
||
VALUES('Anonymize', v_volgnr, 'Error: Fout opgetreden bij het anonymizeren van bezoekers ' ||
|
||
to_char(add_months(TRUNC(SYSDATE), -7), 'dd-mm-yyyy hh24:mi:ss') || ' - ' ||
|
||
to_char(add_months(TRUNC(SYSDATE), -6), 'dd-mm-yyyy hh24:mi:ss'));
|
||
END;
|
||
|
||
BEGIN
|
||
v_volgnr := v_volgnr + 1;
|
||
ANO.anonymizeprs (add_months(TRUNC(SYSDATE), -13), add_months(TRUNC(SYSDATE), -12));
|
||
INSERT INTO fac_rapport (fac_rapport_node, fac_rapport_volgnr, fac_rapport_regel)
|
||
VALUES('Anonymize', v_volgnr, 'Personen geanonymizeerd ' ||
|
||
to_char(add_months(TRUNC(SYSDATE), -13), 'dd-mm-yyyy hh24:mi:ss') || ' - ' ||
|
||
to_char(add_months(TRUNC(SYSDATE), -12), 'dd-mm-yyyy hh24:mi:ss'));
|
||
EXCEPTION WHEN OTHERS
|
||
THEN
|
||
INSERT INTO fac_rapport (fac_rapport_node, fac_rapport_volgnr, fac_rapport_regel)
|
||
VALUES('Anonymize', v_volgnr, 'Error: Fout opgetreden bij het anonymizeren van personen ' ||
|
||
to_char(add_months(TRUNC(SYSDATE), -13), 'dd-mm-yyyy hh24:mi:ss') || ' - ' ||
|
||
to_char(add_months(TRUNC(SYSDATE), -12), 'dd-mm-yyyy hh24:mi:ss'));
|
||
END;
|
||
|
||
-- bevries alle opdrachten die de vorige maand zijn afgerond.
|
||
BEGIN
|
||
v_volgnr := v_volgnr + 1;
|
||
FOR rec in c_frz
|
||
LOOP
|
||
v_opdr_key := rec.mld_opdr_key;
|
||
-- zet de status naar verwerkt (user is facilitor)
|
||
mld.setopdrachtstatus (rec.mld_opdr_key, 7, NULL);
|
||
END LOOP;
|
||
EXCEPTION WHEN OTHERS
|
||
THEN
|
||
INSERT INTO fac_rapport (fac_rapport_node, fac_rapport_volgnr, fac_rapport_regel)
|
||
VALUES('Freeze', v_volgnr, 'Error: Fout opgetreden bij het bevriezen van de opdracht ' || to_char(SYSDATE, 'yyyymmdd hh24mi') || ' opdr_key: ' || v_opdr_key);
|
||
END;
|
||
|
||
-- bevries alle bestelopdrachten die de vorige maand zijn afgerond.
|
||
BEGIN
|
||
v_volgnr := v_volgnr + 1;
|
||
FOR rec2 in c_frz_bes
|
||
LOOP
|
||
v_opdr_key := rec2.bes_bestelopdr_item_key;
|
||
UPDATE bes_bestelopdr_item
|
||
SET bes_bestelopdr_item_status = 7 -- verwerkt
|
||
WHERE bes_bestelopdr_item_key = rec2.bes_bestelopdr_item_key;
|
||
END LOOP;
|
||
EXCEPTION WHEN OTHERS
|
||
THEN
|
||
INSERT INTO fac_rapport (fac_rapport_node, fac_rapport_volgnr, fac_rapport_regel)
|
||
VALUES('Freeze', v_volgnr, 'Error: Fout opgetreden bij het bevriezen van de bestelopdracht ' || to_char(SYSDATE, 'yyyymmdd hh24mi') || ' opdr_key: ' || v_opdr_key);
|
||
END;
|
||
END IF;
|
||
|
||
END;
|
||
/
|
||
|
||
|
||
|
||
|
||
------ 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
|