Files
Customer/BAMG/bamg.sql
Arthur Egberink 19e05ef6c9 BAMG#67179 -- Rapport voor interne doorbelasting toegevoegd (ook voor bestellingen)
svn path=/Customer/trunk/; revision=54264
2021-12-22 19:20:43 +00:00

1193 lines
48 KiB
SQL
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
--
-- $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