Files
Customer/CWTD/cwtd.sql
Ruud Lipper 53be7e8171 CWTD#35798 notijob bez bo lijst naar gebouw
svn path=/Customer/trunk/; revision=29507
2016-05-24 13:45:38 +00:00

1228 lines
52 KiB
SQL
Raw Blame History

-- Script containing customer specific configuration sql statements for CWTD
-- (c) 2008 Facilitor
-- $Revision$
-- $Id$
--
-- Support: +31 53 4800700
spool xcwtd.lst
set echo on
CREATE OR REPLACE PROCEDURE cwtd_import_persoon (
p_import_key IN NUMBER
)
AS
c_max_import_str_len NUMBER(10) := 1000;
CURSOR c_cursor IS
SELECT *
FROM fac_imp_file
WHERE fac_import_key = p_import_key
ORDER BY fac_imp_file_index;
next_record c_cursor%ROWTYPE;
v_newline VARCHAR2 (1000); -- Import line
v_field VARCHAR2 (100); -- Import field
v_fielddelimitor VARCHAR2 (1); -- Field seperator
v_errormsg VARCHAR (200);
v_errorhint VARCHAR (200);
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
-- De importvelden
v_afdeling_naam VARCHAR2 (1000);
v_afdeling_omschr VARCHAR2 (1000);
v_perslid_naam VARCHAR2 (1000);
v_perslid_tussenvoegsel VARCHAR2 (1000);
v_perslid_partn_tussen VARCHAR2 (1000);
v_perslid_partn_naam VARCHAR2 (1000);
v_perslid_voorletters VARCHAR2 (1000);
v_perslid_voornaam VARCHAR2 (1000);
v_perslid_fullname VARCHAR2 (1000);
v_perslid_telefoonnr VARCHAR2 (1000);
v_perslid_mobiel VARCHAR2 (1000);
v_perslid_oslogin VARCHAR2 (1000);
v_perslid_email VARCHAR2 (1000);
v_srtperslid_omschrijving VARCHAR2 (1000);
v_perslid_nr VARCHAR2 (1000);
v_perslid_geslacht VARCHAR2 (1000);
v_perslid_ingangsdatum VARCHAR2 (1000);
v_perslid_einddatum VARCHAR2 (1000);
v_locatie_omschrijving VARCHAR2 (1000);
v_locatie_code VARCHAR2 (1000);
v_ruimte_nr VARCHAR2 (1000);
v_dummy VARCHAR2 (1000);
header_found BOOLEAN;
v_controle_res VARCHAR2(30);
-- SUBFUNCTION
FUNCTION get_imp_value (p_value IN VARCHAR2, p_length IN NUMBER) RETURN VARCHAR2 IS
c_del_in_str VARCHAR2(16) := 'NULL';
c_del_in_str2 VARCHAR2(16) := '"';
v_value VARCHAR2(1000);
BEGIN
SELECT SUBSTR(TRIM(coalesce(replace(replace(p_value,c_del_in_str),c_del_in_str2,''),'')),1,p_length)
INTO v_value
FROM DUAL;
RETURN v_value;
EXCEPTION
WHEN OTHERS
THEN
RETURN p_value;
END;
BEGIN
-- Init
header_found := FALSE;
v_fielddelimitor := ';';
v_errormsg := '';
v_controle_res := 'OK'; -- Hier kan een controle ingebouwd worden ...
IF (v_controle_res IS NULL) THEN
v_errormsg := 'Ongeldig importbestand';
fac.imp_writelog (p_import_key, 'E', v_errormsg, '');
ELSE
-- Clear my previous imported rows
DELETE FROM cwtd_imp_persoon;
commit;
FOR next_record IN c_cursor LOOP
BEGIN
v_newline := SUBSTR(next_record.FAC_IMP_FILE_LINE,1,c_max_import_str_len);
fac.imp_getfield (v_newline, v_fielddelimitor, v_afdeling_naam); -- Afdeling
fac.imp_getfield (v_newline, v_fielddelimitor, v_afdeling_omschr); -- <afdelingomschrijving>
fac.imp_getfield (v_newline, v_fielddelimitor, v_perslid_nr); -- UP nr
fac.imp_getfield (v_newline, v_fielddelimitor, v_perslid_voorletters); -- Voorletters
fac.imp_getfield (v_newline, v_fielddelimitor, v_perslid_tussenvoegsel); -- Voorvoegsels
fac.imp_getfield (v_newline, v_fielddelimitor, v_perslid_naam); -- Achternaam
fac.imp_getfield (v_newline, v_fielddelimitor, v_perslid_partn_tussen); -- Voorvoegsels Partner
fac.imp_getfield (v_newline, v_fielddelimitor, v_perslid_partn_naam); -- Achternaam Partner
fac.imp_getfield (v_newline, v_fielddelimitor, v_perslid_voornaam); -- Roepnaam
fac.imp_getfield (v_newline, v_fielddelimitor, v_perslid_fullname); -- Volledige naam
fac.imp_getfield (v_newline, v_fielddelimitor, v_dummy); -- Functie
fac.imp_getfield (v_newline, v_fielddelimitor, v_srtperslid_omschrijving); -- <functienaam>
fac.imp_getfield (v_newline, v_fielddelimitor, v_perslid_geslacht); -- Geslacht
fac.imp_getfield (v_newline, v_fielddelimitor, v_perslid_email); -- E-mailadres
fac.imp_getfield (v_newline, v_fielddelimitor, v_perslid_telefoonnr); -- Intern nummer
fac.imp_getfield (v_newline, v_fielddelimitor, v_perslid_mobiel); -- Zakelijk mobiele nummer
fac.imp_getfield (v_newline, v_fielddelimitor, v_locatie_omschrijving); -- Vestiging
fac.imp_getfield (v_newline, v_fielddelimitor, v_perslid_ingangsdatum); -- In Dienst
v_perslid_ingangsdatum := '';
fac.imp_getfield (v_newline, v_fielddelimitor, v_perslid_einddatum); -- Uit Dienst
v_perslid_einddatum := '';
v_perslid_oslogin := '';
-- Skip until the header is found
IF (v_afdeling_naam = 'Afdeling' AND
v_afdeling_omschr IS NULL AND
v_perslid_nr = 'UP nr' AND
v_perslid_voorletters = 'Voorletters' AND
v_perslid_tussenvoegsel = 'Voorvoegsels' AND
v_perslid_naam = 'Achternaam' AND
v_perslid_partn_tussen = 'Voorvgsl Partner' AND
v_perslid_partn_naam = 'Achternaam Partner' AND
v_perslid_voornaam = 'Roepnaam' AND
v_perslid_fullname = 'Naam' AND
v_dummy = 'Functie' AND
v_srtperslid_omschrijving IS NULL AND
v_perslid_geslacht = 'Geslacht' AND
v_perslid_email = 'E-mailadres' AND
v_perslid_telefoonnr = 'Intern nummer' AND
v_perslid_mobiel = 'Zakelijk mobiele nummer' AND
v_locatie_omschrijving = 'Vestiging'
)
THEN
header_found := TRUE;
ELSIF (header_found)
THEN
BEGIN
v_errormsg := 'Kan persoonsgegevens niet inlezen: ';
v_perslid_nr := get_imp_value(v_perslid_nr,16);
v_perslid_naam := get_imp_value(v_perslid_naam,30);
v_perslid_voornaam := get_imp_value(v_perslid_voornaam,30);
v_perslid_tussenvoegsel := get_imp_value(v_perslid_tussenvoegsel,15);
v_perslid_partn_naam := get_imp_value(v_perslid_partn_naam,30);
v_perslid_partn_tussen := get_imp_value(v_perslid_partn_tussen,15);
v_perslid_fullname := get_imp_value(v_perslid_fullname,60);
v_perslid_oslogin := get_imp_value(v_perslid_oslogin,30);
v_perslid_email := get_imp_value(v_perslid_email,200);
v_afdeling_naam := get_imp_value(v_afdeling_naam,10);
v_afdeling_omschr := get_imp_value(v_afdeling_omschr,60);
v_locatie_omschrijving := get_imp_value(v_locatie_omschrijving,30);
v_srtperslid_omschrijving := get_imp_value(v_srtperslid_omschrijving,30);
-- Velden met een waarde '' zijn leeg ivm privacy overwegingen
INSERT INTO cwtd_imp_persoon
(prs_perslid_nr
,prs_perslid_naam
,prs_perslid_voornaam
,prs_perslid_geslacht
,prs_perslid_partn_tussen
,prs_perslid_partn_naam
,prs_perslid_tussenvoegsel
,prs_perslid_voorletters
,prs_perslid_fullname
,prs_perslid_telefoonnr
,prs_perslid_mobiel
,prs_perslid_oslogin
,prs_perslid_email
,prs_srtperslid_omschrijving
,prs_afdeling_naam
,prs_afdeling_omschr
,prs_perslid_ingangsdatum
,prs_perslid_einddatum
,prs_locatie_omschrijving
,cwtd_imp_persoon_aanmaak
)
VALUES(v_perslid_nr
,v_perslid_naam
,v_perslid_voornaam
,v_perslid_geslacht
,v_perslid_partn_tussen
,v_perslid_partn_naam
,v_perslid_tussenvoegsel
,v_perslid_voorletters
,v_perslid_fullname
,v_perslid_telefoonnr
,v_perslid_mobiel
,v_perslid_oslogin
,v_perslid_email
,v_srtperslid_omschrijving
,v_afdeling_naam
,v_afdeling_omschr
,''
,''
,v_locatie_omschrijving
,sysdate
);
commit;
EXCEPTION
WHEN OTHERS
THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
v_errormsg := v_errormsg || 'OTHERS (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
fac.imp_writelog (p_import_key, 'E', v_errormsg, 'personeelsnummer:'||v_perslid_nr);
commit; -- logging
END;
END IF;
COMMIT;
END;
END LOOP;
IF header_found = FALSE THEN
fac.imp_writelog (p_import_key, 'E', 'Geen geldige header gevonden', '');
END IF;
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 (p_import_key, 'E', v_errormsg, '');
END;
/
SHOW ERRORS;
CREATE OR REPLACE PROCEDURE cwtd_update_persoon (p_import_key IN NUMBER)
AS
-- Constanten (LET OP: deze waarden moeten letterlijk in de DB aabwezig zijn!)
c_usrtab_key INTEGER := 1; -- Tbv GEBOUW
c_srtgebouw_default INTEGER := 1;
c_srtruimte_default INTEGER := 1;
-- Constanten (overig)
c_prs_werkplek_omschrijving VARCHAR2 (16) := 'Onbekend';
c_srtperslid_omschr_default VARCHAR2 (16) := 'Onbekend';
c_werkplek_volgnr_default INTEGER := 1;
c_verdieping_omschr_default VARCHAR2 (16) := 'BG';
c_ruimte_omschr_default VARCHAR2 (16) := 'Onbekend';
c_ruimte_code VARCHAR2 (3) := '000';
c_commitbuffer NUMBER := 1000;
c_perslid_aanmaak DATE; -- := TO_DATE('01011980','ddmmyy'); -- ivm privacy overwegingen
c_perslid_verwijder DATE; -- := TO_DATE('01011980','ddmmyy'); -- ivm privacy overwegingen
c_perslid_ingangsdatum DATE; -- := TO_DATE('01011980','ddmmyy'); -- ivm privacy overwegingen
c_no_key_found NUMBER := 0;
c_afdeling_niveau_persoon NUMBER(1) := 3; -- Afdelingsniveau waaraan personen gekoppeld worden
-- Prefix voor persoonnaam om aan te geven dat de persoon op de nominatie staat om verwijderd te
-- worden maar dat verwijderen nog niet mogelijk is omdat de persoon verplichtingen heeft.
c_inactief VARCHAR2(16) := 'INACTIEF:';
-- om de zoveel committen
v_buffercount NUMBER := 0;
CURSOR c_prs_del
IS
SELECT prs_perslid_key, prs_perslid_nr
FROM prs_perslid
WHERE prs_perslid_nr IS NOT NULL AND prs_perslid_verwijder IS NULL
AND LTRIM (prs_perslid_nr, '0') NOT IN
( SELECT LTRIM (prs_perslid_nr, '0') FROM cwtd_imp_persoon)
ORDER BY 1;
CURSOR c_prs_upd
IS
SELECT p.prs_perslid_key,
lp.prs_locatie_omschrijving,
lp.prs_perslid_partn_tussen,
lp.prs_perslid_partn_naam,
lp.prs_perslid_fullname,
lp.prs_afdeling_naam,
lp.prs_perslid_naam,
lp.prs_perslid_tussenvoegsel,
lp.prs_perslid_voorletters,
lp.prs_perslid_voornaam,
DECODE (lp.prs_perslid_telefoonnr,
'0', NULL,
lp.prs_perslid_telefoonnr)
prs_perslid_telefoonnr,
lp.prs_perslid_mobiel,
lp.prs_perslid_oslogin,
lp.prs_perslid_email,
COALESCE (lp.prs_srtperslid_omschrijving, 'Onbekend')
prs_srtperslid_omschrijving,
lp.prs_perslid_nr,
'' prs_perslid_titel,
p.prs_perslid_verwijder,
INSTR (lp.prs_perslid_fullname, lp.prs_perslid_naam) ind_eigen,
INSTR (lp.prs_perslid_fullname,
NVL (lp.prs_perslid_partn_naam, 'xxxxxx'))
ind_partner
FROM ( SELECT * FROM cwtd_imp_persoon) lp
LEFT OUTER JOIN
( SELECT * FROM prs_perslid) p
ON LTRIM (lp.prs_perslid_nr, '0') = LTRIM (p.prs_perslid_nr, '0')
-- Dit moet analoog aan UWVA#13061: verwijderde personen moeten kunnen worden gereactiveerd.
-- AND p.prs_perslid_verwijder IS NULL
ORDER BY lp.prs_perslid_nr ASC;
v_perslid_tussenvoegsel VARCHAR2(15);
v_perslid_naam VARCHAR2(30);
v_per_indnaamsvoegen VARCHAR2(1);
v_perslid_key NUMBER (10);
v_prs_key_cnt NUMBER (10);
v_srtperslid_key NUMBER (10);
v_afdeling_key NUMBER (10);
v_gebouw_key NUMBER (10);
v_verdieping_key NUMBER (10);
v_ruimte_nr VARCHAR2 (10);
v_ruimte_key NUMBER (10);
v_werkplek_key NUMBER (10);
v_gebouw_code VARCHAR2 (10);
v_srtperslid_omschr VARCHAR (30);
rec_prs_del c_prs_del%ROWTYPE;
rec_prs_upd c_prs_upd%ROWTYPE;
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
v_errormsg VARCHAR2 (1024);
v_errorhint VARCHAR2 (1024);
v_debug VARCHAR2 (1024);
v_count NUMBER (10);
v_update BOOLEAN;
v_aktie VARCHAR (10);
v_perslid_count_imp NUMBER;
v_perslid_count_fclt NUMBER;
v_perslid_newcount_fclt NUMBER;
currentversion fac_module.fac_module_version%TYPE;
l_validatie NUMBER;
v_srtimport VARCHAR2 (10);
o_afdeling_key NUMBER (10); -- huidige (oude) afdeling
l_nrkps NUMBER;
v_nr_werkplek NUMBER;
v_current_gebouw_key NUMBER;
v_new_gebouw_key NUMBER;
v_werkplek_volgnr NUMBER(10);
v_werkplek_oms VARCHAR2 (60);
BEGIN
-- Constanten:
SELECT SYSDATE, SYSDATE, SYSDATE
INTO c_perslid_aanmaak, c_perslid_verwijder, c_perslid_ingangsdatum
FROM DUAL;
-- *** Delete ***************************************************************
v_errorhint := 'Eventueel te verwijderen personen worden verwijderd ';
SELECT COUNT (*)
INTO v_perslid_count_fclt
FROM prs_perslid
WHERE prs_perslid_nr IS NOT NULL AND prs_perslid_verwijder IS NULL;
SELECT COUNT (*)
INTO v_perslid_count_imp
FROM cwtd_imp_persoon;
IF v_perslid_count_imp < 10 THEN
fac.imp_writelog (p_import_key, 'E', 'Geen records gevonden om te importeren.', '');
COMMIT;
RETURN;
END IF;
FOR rec_prs_del IN c_prs_del
LOOP
BEGIN
v_perslid_key := rec_prs_del.prs_perslid_key;
v_errorhint := 'Verwijderen van de persoon is NIET gelukt';
SELECT COUNT (*)
INTO v_count
FROM prs_v_verplichting_refcheck pv
WHERE pv.prs_perslid_key = v_perslid_key;
IF v_count = 0
THEN
-- Persoon heeft geen enkele (actuele of historische) verplichting
v_errormsg := 'Kan persoon (kennelijk zonder historie!) niet met prs_perslid_key [' || TO_CHAR (v_perslid_key) || '] niet verwijder. ';
DELETE FROM prs_perslid
WHERE prs_perslid_key = v_perslid_key;
fac.imp_writelog (p_import_key,
'I',
'Persoon verwijderd met personeelsnummer ['||rec_prs_del.prs_perslid_nr||']',
''
);
ELSE
-- Controleer of er ACTUELE verplichtingen zijn
SELECT COUNT (*)
INTO v_count
FROM prs_v_verplichting_keys pv
WHERE pv.prs_perslid_key = v_perslid_key;
IF v_count > 0
THEN
v_errormsg := 'Kan persoon (kennelijk met historie!) niet inactiveren met prs_perslid_key [' || TO_CHAR (v_perslid_key) || ']';
UPDATE prs_perslid
SET prs_perslid_naam = SUBSTR (c_inactief || prs_perslid_naam, 1, 30),
prs_perslid_oslogin = NULL
WHERE prs_perslid_key = v_perslid_key
AND prs_perslid_naam NOT LIKE c_inactief||'%';
fac.imp_writelog (p_import_key,
'I',
'Persoon als ['||c_inactief||'] gemarkeerd met personeelsnummer ['||rec_prs_del.prs_perslid_nr||']',
''
);
ELSE
BEGIN
v_errormsg := 'Kan persoon (kennelijk met historie!) niet inactiveren (verwijderdatum zetten) met prs_perslid_key [' || TO_CHAR (v_perslid_key) || ']';
UPDATE prs_perslid
SET prs_perslid_verwijder = c_perslid_verwijder
WHERE prs_perslid_key = v_perslid_key;
fac.imp_writelog (p_import_key,
'I',
'Persoon verwijderd met personeelsnummer ['||rec_prs_del.prs_perslid_nr||']',
''
);
EXCEPTION
WHEN OTHERS
THEN
-- Kennelijk heeft de persoon toch ernstige verplichtingen
v_errorhint :=
'Persoon heeft nog (max. '
|| TO_CHAR (v_count)
|| ') verplichtingen; personeelsnummer: '
|| rec_prs_del.prs_perslid_nr;
fac.imp_writelog (p_import_key, 'I', 'Inactiveren persoon is niet gelukt', v_errorhint);
END;
END IF;
END IF;
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_errormsg, v_errorhint);
END;
END LOOP;
COMMIT;
-- *** Update ***************************************************************
v_errormsg := 'Persoonsgegevens worden nu aangepast (toevoegen/wijzigen) ';
FOR rec_prs_upd IN c_prs_upd
LOOP
BEGIN
-- Init
v_update := TRUE; -- Nog geen fouten gevonden
v_afdeling_key := c_no_key_found;
v_srtperslid_key := c_no_key_found;
v_perslid_key := c_no_key_found;
v_errormsg := '';
IF rec_prs_upd.prs_perslid_key IS NULL
THEN
v_aktie := 'INSERT';
v_errorhint := 'Persoonsgegevens kunnen niet toegevoegd worden';
ELSE
v_aktie := 'UPDATE';
v_errorhint := 'Persoonsgegevens kunnen niet gewijzigd worden';
END IF;
-- *** Controle verplichte gegevens + ophalen extra informatie ***
-- Controle: PRS_PERSLID_NR
IF rec_prs_upd.prs_perslid_nr IS NULL
THEN
v_errormsg := 'Persoon met achternaam ['||rec_prs_upd.prs_perslid_naam||' heeft geen personeelsnummer ';
fac.imp_writelog (p_import_key, 'E', v_errormsg, v_errorhint);
v_update := FALSE;
END IF;
-- (oorspronkelijk overgenomen uit de CONN perman koppeling.)
IF rec_prs_upd.ind_eigen = 0 THEN
v_per_indnaamsvoegen := 'A';
ELSIF rec_prs_upd.ind_partner = 0 THEN
v_per_indnaamsvoegen := 'X';
ELSIF rec_prs_upd.ind_partner < rec_prs_upd.ind_eigen THEN
v_per_indnaamsvoegen := 'J';
ELSE
v_per_indnaamsvoegen := 'G';
END IF;
v_perslid_tussenvoegsel := rec_prs_upd.prs_perslid_tussenvoegsel;
v_perslid_naam := rec_prs_upd.prs_perslid_naam;
-- partner - eigen
IF v_per_indnaamsvoegen = 'J'
OR v_per_indnaamsvoegen = 'W'
OR v_per_indnaamsvoegen = 'E'
OR v_per_indnaamsvoegen = 'P'
THEN
v_perslid_tussenvoegsel := rec_prs_upd.prs_perslid_partn_tussen;
IF rec_prs_upd.prs_perslid_tussenvoegsel IS NOT NULL
THEN
v_perslid_naam := SUBSTR (rec_prs_upd.prs_perslid_partn_naam || '-' || rec_prs_upd.prs_perslid_tussenvoegsel || ' ' || rec_prs_upd.prs_perslid_naam, 1, 30);
ELSE
v_perslid_naam := SUBSTR (rec_prs_upd.prs_perslid_partn_naam || '-' || rec_prs_upd.prs_perslid_naam, 1, 30);
END IF;
-- partner
ELSIF v_per_indnaamsvoegen = 'A'
THEN
v_perslid_tussenvoegsel := rec_prs_upd.prs_perslid_partn_tussen;
v_perslid_naam := SUBSTR (rec_prs_upd.prs_perslid_partn_naam, 1, 30);
-- eigen - partner
ELSIF v_per_indnaamsvoegen = 'G'
THEN
IF rec_prs_upd.prs_perslid_partn_tussen IS NOT NULL
THEN
v_perslid_naam :=
SUBSTR (rec_prs_upd.prs_perslid_naam || '-' || rec_prs_upd.prs_perslid_partn_tussen || ' ' || rec_prs_upd.prs_perslid_partn_naam, 1, 30);
ELSE
v_perslid_naam := SUBSTR (rec_prs_upd.prs_perslid_naam || '-' || rec_prs_upd.prs_perslid_partn_naam, 1, 30);
END IF;
END IF;
-- Controle: PRS_PERSLID_NAAM
IF v_update AND v_perslid_naam IS NULL
THEN
v_errormsg := 'Persoon met personeelsnummer [' || rec_prs_upd.prs_perslid_nr||'] heeft geen achternaam';
fac.imp_writelog (p_import_key, 'E', v_errormsg, v_errorhint);
v_update := FALSE;
END IF;
-- Controle: Kan persoon gereactiveerd worden of is er al een persoon met dezelfde prs_perslid_nr actief
IF v_update AND rec_prs_upd.prs_perslid_verwijder IS NOT NULL
THEN
BEGIN
-- Is er al een actieve persoon met dezelfde perslid_nr
SELECT COUNT(p.prs_perslid_key)
INTO v_prs_key_cnt
FROM prs_perslid p
WHERE p.prs_perslid_verwijder IS NULL
AND LTRIM(p.prs_perslid_nr, '0') LIKE LTRIM(rec_prs_upd.prs_perslid_nr, '0')
AND p.prs_perslid_key != rec_prs_upd.prs_perslid_key;
IF v_prs_key_cnt > 0
THEN
-- (UWVA#13270)
-- Waarde(n) gevonden: Er is al een actieve persoon met dezelfde prs_perslid_nr gevonden: Niet updaten!!!
--v_errormsg := 'Persoon hoeft niet gereactiveerd te worden; prs_perslid_nr: ' || rec_prs_upd.prs_perslid_nr;
--v_errorhint := 'Er bestaat al een persoon met dezelfde persooneelsnummer die actief is, GEEN ACTIE NODIG; personeelsnummer: ' || rec_prs_upd.prs_perslid_nr;
--fac.imp_writelog (p_import_key, 'I', v_errormsg, v_errorhint);
v_update := FALSE;
ELSE
-- Kennelijk is er geen persoon gevonden met dezelfde prs_perslid_nr
-- persoon kan gereactieveerd worden (prs_perslid_verwijder op NULL zetten)
-- v_update := TRUE;
v_errormsg := 'Persoon reactiveren; prs_perslid_nr: ' || rec_prs_upd.prs_perslid_nr;
v_errorhint := 'ACTIE wordt ondernomen; personeelsnummer: ' || rec_prs_upd.prs_perslid_nr;
fac.imp_writelog (p_import_key, 'I', v_errormsg, v_errorhint);
END IF;
EXCEPTION
WHEN OTHERS
THEN
v_update := FALSE;
v_errorhint := 'Fout in het vinden aantal actieve personen; personeelsnummer: ' || rec_prs_upd.prs_perslid_nr || '?!';
END;
END IF;
-- Controle: PRS_AFDELING_NAAM
IF v_update
THEN
BEGIN
v_errormsg := 'De afdeling ['||rec_prs_upd.prs_afdeling_naam||']'||' kan niet <20><>nduidig bepaald worden ';
-- Bepaal de afdelingskey; indien afdeling niet bestaat nieuwe toevoegen.
SELECT prs_afdeling_key
INTO v_afdeling_key
FROM prs_afdeling
WHERE prs_afdeling_naam = upper(rec_prs_upd.prs_afdeling_naam)
AND prs_afdeling_verwijder is null;
EXCEPTION
WHEN NO_DATA_FOUND
THEN
INSERT INTO prs_kostenplaats (prs_kostenplaats_nr, prs_kostenplaats_module) values (rec_prs_upd.prs_afdeling_naam, 'PRS');
INSERT INTO prs_afdeling (prs_afdeling_naam, prs_afdeling_omschrijving, prs_kostenplaats_key, prs_bedrijf_key)
VALUES
( rec_prs_upd.prs_afdeling_naam
, 'Onbekend-'||rec_prs_upd.prs_afdeling_naam
, ( SELECT prs_kostenplaats_key
FROM prs_kostenplaats
WHERE prs_kostenplaats_verwijder is null
AND prs_kostenplaats_nr = rec_prs_upd.prs_afdeling_naam)
, 2);
-- Bepaal de afdelingskey;
SELECT prs_afdeling_key
INTO v_afdeling_key
FROM prs_afdeling
WHERE prs_afdeling_naam = upper(rec_prs_upd.prs_afdeling_naam)
AND prs_afdeling_verwijder is null;
WHEN OTHERS
THEN
v_update := FALSE;
v_errorhint := 'Kan Afdeling ' || rec_prs_upd.prs_afdeling_naam || ' niet eenduidig bepalen?!';
END;
END IF;
-- Controle: PRS_SRTPERSLID_OMSCHRIJVING
IF v_update
THEN
v_srtperslid_omschr := RTRIM (INITCAP (rec_prs_upd.prs_srtperslid_omschrijving));
BEGIN
-- Bepaal de key van de functie
SELECT prs_srtperslid_key
INTO v_srtperslid_key
FROM prs_srtperslid
WHERE prs_srtperslid_upper = UPPER (v_srtperslid_omschr) AND prs_srtperslid_verwijder IS NULL;
EXCEPTION
WHEN NO_DATA_FOUND
THEN
v_errormsg := 'prs_srtperslid ' || v_srtperslid_omschr || ' bestaat niet';
-- Functie bestaat kennelijk niet, maak 'm maar aan
INSERT INTO prs_srtperslid
(prs_srtperslid_omschrijving)
VALUES (v_srtperslid_omschr)
RETURNING prs_srtperslid_key
INTO v_srtperslid_key;
WHEN OTHERS
THEN
v_errorhint :=
'Functie '
|| v_srtperslid_omschr
|| ' kan niet bepaald worden; persoonnr: '
|| rec_prs_upd.prs_perslid_nr;
v_update := FALSE;
END;
END IF;
-- *** Daadwerkelijk insert/update prs_perslid ***
IF v_update
THEN
BEGIN
IF v_aktie = 'INSERT'
THEN
v_errormsg := 'Persoon kan niet worden toegevoegd';
INSERT INTO prs_perslid
(prs_perslid_naam, prs_perslid_tussenvoegsel, prs_perslid_module,
prs_perslid_voorletters, prs_perslid_voornaam,
prs_perslid_telefoonnr, prs_perslid_mobiel, prs_perslid_oslogin, prs_perslid_email, prs_perslid_nr,
prs_perslid_titel, prs_srtperslid_key, prs_afdeling_key, prs_perslid_aanmaak, fac_profiel_key
)
VALUES (v_perslid_naam, v_perslid_tussenvoegsel, 'PRS',
rec_prs_upd.prs_perslid_voorletters, rec_prs_upd.prs_perslid_voornaam,
rec_prs_upd.prs_perslid_telefoonnr, rec_prs_upd.prs_perslid_mobiel, rec_prs_upd.prs_perslid_oslogin, rec_prs_upd.prs_perslid_email, rec_prs_upd.prs_perslid_nr,
rec_prs_upd.prs_perslid_titel, v_srtperslid_key, v_afdeling_key, c_perslid_aanmaak, 21
);
fac.imp_writelog (p_import_key,
'C',
'Nieuw persoon toegevoegd',
'Naam/persoonsnr: '
|| v_perslid_naam
|| '/'
|| rec_prs_upd.prs_perslid_nr
);
ELSE
v_errormsg := 'Persoon kan niet worden gewijzigd';
UPDATE prs_perslid
SET prs_perslid_naam = v_perslid_naam,
prs_perslid_tussenvoegsel = v_perslid_tussenvoegsel,
prs_perslid_voorletters = rec_prs_upd.prs_perslid_voorletters,
prs_perslid_voornaam = NVL (rec_prs_upd.prs_perslid_voornaam, prs_perslid_voornaam),
prs_perslid_telefoonnr = rec_prs_upd.prs_perslid_telefoonnr,
prs_perslid_titel = rec_prs_upd.prs_perslid_titel,
prs_srtperslid_key = v_srtperslid_key,
prs_afdeling_key = v_afdeling_key,
prs_perslid_verwijder = NULL,
prs_perslid_email = rec_prs_upd.prs_perslid_email
WHERE prs_perslid_key = rec_prs_upd.prs_perslid_key
AND ( prs_perslid_naam != v_perslid_naam
OR NVL (prs_perslid_tussenvoegsel, '-') != NVL (v_perslid_tussenvoegsel, '-')
OR prs_perslid_voorletters != rec_prs_upd.prs_perslid_voorletters
OR NVL (prs_perslid_voornaam, '-') != NVL (rec_prs_upd.prs_perslid_voornaam, '-')
OR NVL (prs_perslid_telefoonnr, '-') != NVL (rec_prs_upd.prs_perslid_telefoonnr, '-')
OR prs_perslid_titel != rec_prs_upd.prs_perslid_titel
OR prs_srtperslid_key != v_srtperslid_key
OR prs_afdeling_key != v_afdeling_key
OR prs_perslid_email != rec_prs_upd.prs_perslid_email
OR rec_prs_upd.prs_perslid_verwijder IS NOT NULL
);
END IF;
EXCEPTION
WHEN OTHERS
THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
v_errormsg := '(ORACLE error ' || oracle_err_num || '/' || oracle_err_mes || ')';
v_errorhint := to_char(v_afdeling_key)||'|'||rec_prs_upd.prs_afdeling_naam||'|xxx {' || v_errormsg || '}; personeelsnummer: ' || rec_prs_upd.prs_perslid_nr;
v_update := FALSE;
fac.imp_writelog (p_import_key, 'E', v_errormsg, v_errorhint);
END;
END IF;
-- *** Werkplek *******************************************************
v_errorhint := 'Kan geen werkplek toevoegen';
IF v_update AND (v_aktie = 'UPDATE')
THEN
-- bepaal aantal werkplekken
BEGIN
SELECT COUNT(*)
INTO v_nr_werkplek
FROM prs_perslidwerkplek
WHERE prs_perslid_key = rec_prs_upd.prs_perslid_key;
EXCEPTION
WHEN OTHERS
THEN
fac.imp_writelog (p_import_key,
'I',
v_errormsg,
'Het aantal werkplekken kan niet bepaald worden?! personeelsnummer: '
|| rec_prs_upd.prs_perslid_nr
);
v_update := FALSE;
END;
IF v_update AND v_nr_werkplek = 1
THEN
BEGIN
-- bepaal huidige alg_gebouw_key
SELECT alg_gebouw_key
INTO v_current_gebouw_key
FROM prs_v_werkplekperslid_gegevens pwg
, alg_gebouw g
WHERE prs_perslid_key = rec_prs_upd.prs_perslid_key
AND g.alg_gebouw_upper = pwg.alg_gebouw_upper
AND g.alg_gebouw_verwijder IS NULL;
-- bepaal nieuwe alg_gebouw_key
SELECT g.alg_gebouw_key
INTO v_new_gebouw_key
FROM fac_usrdata ud,
alg_gebouw g
WHERE ud.fac_usrtab_key = c_usrtab_key
AND ud.fac_usrdata_omschr = g.alg_gebouw_code
AND ud.fac_usrdata_code = rec_prs_upd.prs_afdeling_naam
AND g.alg_gebouw_verwijder IS NULL;
-- indien gelijk dan werkplek niet updaten.
v_update := (v_current_gebouw_key != v_new_gebouw_key);
EXCEPTION
WHEN OTHERS
THEN
fac.imp_writelog (p_import_key,
'I',
v_errormsg,
'huidige of nieuwe alg_gebouw_key kan niet bepaald worden?! personeelsnummer: '
|| rec_prs_upd.prs_perslid_nr
);
v_update := FALSE;
END;
END IF;
END IF;
IF v_update AND (rec_prs_upd.prs_afdeling_naam IS NOT NULL)
AND ((v_aktie = 'INSERT') OR (v_aktie = 'UPDATE') AND (v_nr_werkplek<=1))
THEN
IF v_aktie = 'INSERT'
THEN
v_errormsg := 'Fout bij toewijzen werkplek bij zojuist toegevoegde persoon ';
ELSE -- v_aktie = 'UPDATE'
v_errormsg := 'Fout bij het wijzigen van de werkplek';
END IF;
BEGIN
SELECT prs_perslid_key
INTO v_perslid_key
FROM prs_perslid
WHERE LTRIM (prs_perslid_nr, '0') = LTRIM (rec_prs_upd.prs_perslid_nr, '0')
AND prs_perslid_verwijder IS NULL;
EXCEPTION
WHEN TOO_MANY_ROWS
THEN
fac.imp_writelog (p_import_key,
'I',
v_errormsg,
'Het personeelsnummer is niet uniek: ' || rec_prs_upd.prs_perslid_nr
);
v_update := FALSE;
WHEN OTHERS
THEN
fac.imp_writelog (p_import_key,
'I',
v_errormsg,
'De persoon kan niet bepaald worden?! personeelsnummer: '
|| rec_prs_upd.prs_perslid_nr
);
v_update := FALSE;
END;
BEGIN
SELECT g.alg_gebouw_key
INTO v_gebouw_key
FROM fac_usrdata ud, alg_gebouw g
WHERE ud.fac_usrtab_key = c_usrtab_key
AND ud.fac_usrdata_omschr = g.alg_gebouw_code
AND ud.fac_usrdata_code = rec_prs_upd.prs_afdeling_naam
AND g.alg_gebouw_verwijder IS NULL;
EXCEPTION
WHEN OTHERS
THEN
v_update := FALSE;
END;
IF NOT v_update
THEN
v_errorhint :=
'Onbekende Gebouw-omschrijving '
|| rec_prs_upd.prs_afdeling_naam
|| '; personeelsnummer: '
|| rec_prs_upd.prs_perslid_nr;
fac.imp_writelog (p_import_key, 'I', v_errormsg, v_errorhint);
ELSE
BEGIN
v_errormsg := 'Bepalen alg_verdieping_key';
SELECT alg_verdieping_key
INTO v_verdieping_key
FROM alg_verdieping
WHERE alg_gebouw_key = v_gebouw_key AND alg_verdieping_verwijder IS NULL
AND alg_verdieping_volgnr = 0; -- Begane grond!
EXCEPTION
WHEN NO_DATA_FOUND
THEN
v_errorhint :=
'Persoon met persoonnummer ' || rec_prs_upd.prs_perslid_nr || ': toevoegen verdieping Onbekend';
INSERT INTO alg_verdieping
(alg_gebouw_key, alg_verdieping_omschrijving, alg_verdieping_volgnr,
alg_verdieping_code
)
VALUES (v_gebouw_key, c_verdieping_omschr_default, 0,
'0'
);
-- Alsnog bepalen v_verdieping_key
SELECT alg_verdieping_key
INTO v_verdieping_key
FROM alg_verdieping
WHERE alg_gebouw_key = v_gebouw_key
AND alg_verdieping_verwijder IS NULL
AND alg_verdieping_volgnr = 0; -- Begane grond!
END;
BEGIN
v_errorhint :=
'Persoon met persoonnummer '
|| rec_prs_upd.prs_perslid_nr
|| ': bepalen ruimte (ruimte zou bekend moeten zijn)';
SELECT alg_ruimte_nr, alg_ruimte_key
INTO v_ruimte_nr, v_ruimte_key
FROM alg_ruimte
WHERE alg_verdieping_key = v_verdieping_key
AND alg_ruimte_verwijder IS NULL
AND alg_ruimte_nr = c_ruimte_code;
-- Altijd ruimte met deze notatie!
EXCEPTION
WHEN NO_DATA_FOUND
THEN
INSERT INTO alg_ruimte
(alg_verdieping_key, alg_srtruimte_key, alg_ruimte_nr, alg_ruimte_omschrijving)
VALUES (v_verdieping_key, c_srtruimte_default, c_ruimte_code, c_ruimte_omschr_default);
-- Alsnog bepalen v_ruimte_key
SELECT alg_ruimte_nr, alg_ruimte_key
INTO v_ruimte_nr, v_ruimte_key
FROM alg_ruimte
WHERE alg_verdieping_key = v_verdieping_key
AND alg_ruimte_verwijder IS NULL
AND alg_ruimte_nr = c_ruimte_code;
-- Altijd ruimte met deze notatie!
END;
-- *** IMPLICIETE WERKPLEK (NIEUW) *********************************************
-- Persoon krijgt wp op fictieve of echte ruimte.
v_errorhint := 'Fout bij bepalen vrije werkplek';
SELECT COUNT ( * )
INTO v_count
FROM prs_werkplek w
WHERE w.prs_alg_ruimte_key = v_ruimte_key
AND NOT EXISTS
(SELECT 1
FROM prs_perslidwerkplek pw
WHERE pw.prs_werkplek_key = w.prs_werkplek_key);
IF (v_count > 0)
THEN
SELECT MIN (w.prs_werkplek_key)
INTO v_werkplek_key
FROM prs_werkplek w
WHERE w.prs_alg_ruimte_key = v_ruimte_key
AND NOT EXISTS
(SELECT 1
FROM prs_perslidwerkplek pw
WHERE pw.prs_werkplek_key = w.prs_werkplek_key);
v_errorhint := 'Fout bij koppelen persoon aan vrije werkplek';
INSERT INTO prs_perslidwerkplek (prs_perslid_key,
prs_werkplek_key,
prs_perslidwerkplek_bezetting
)
VALUES (v_perslid_key, v_werkplek_key, 100);
ELSE
v_errorhint := 'Fout bij bepalen nieuwe werkplek';
SELECT COALESCE (MAX (w.prs_werkplek_volgnr), 0) + 1
INTO v_werkplek_volgnr
FROM prs_werkplek w
WHERE w.prs_alg_ruimte_key = v_ruimte_key;
v_werkplek_oms := v_ruimte_nr || '/' || TO_CHAR (v_werkplek_volgnr);
v_errorhint := 'Fout bij toevoegen nieuwe werkplek';
INSERT INTO prs_werkplek (prs_werkplek_module,
prs_werkplek_volgnr,
prs_werkplek_omschrijving,
prs_alg_ruimte_key)
VALUES ('PRR',
v_werkplek_volgnr,
v_werkplek_oms,
v_ruimte_key)
RETURNING prs_werkplek_key
INTO v_werkplek_key;
v_errorhint :=
'Fout bij koppelen persoon aan nieuwe werkplek';
INSERT INTO prs_perslidwerkplek ( prs_perslid_key,
prs_werkplek_key,
prs_perslidwerkplek_bezetting
)
VALUES (v_perslid_key, v_werkplek_key, 100);
END IF;
---- *** EXPLICIETE WERKPLEK (OUD) ***********************************************
-- BEGIN
-- v_errorhint :=
-- 'Persoon met persoonnummer '
-- || rec_prs_upd.prs_perslid_nr
-- || ': bepalen werkplek (werkplek zou bekend moeten zijn)';
--
-- SELECT prs_werkplek_key
-- INTO v_werkplek_key
-- FROM prs_werkplek
-- WHERE prs_alg_ruimte_key = v_ruimte_key
-- AND prs_werkplek_verwijder IS NULL
-- AND prs_werkplek_volgnr = c_werkplek_volgnr_default;
-- -- Altijd werkplek met deze notatie!
-- EXCEPTION
-- WHEN NO_DATA_FOUND
-- THEN
-- INSERT INTO prs_werkplek
-- (prs_werkplek_volgnr, prs_werkplek_omschrijving, prs_alg_ruimte_key,
-- prs_werkplek_virtueel
-- )
-- VALUES (c_werkplek_volgnr_default, c_prs_werkplek_omschrijving, v_ruimte_key,
-- 1
-- );
--
-- -- Alsnog bepalen v_werkplek_key
-- SELECT prs_werkplek_key
-- INTO v_werkplek_key
-- FROM prs_werkplek
-- WHERE prs_alg_ruimte_key = v_ruimte_key
-- AND prs_werkplek_verwijder IS NULL
-- AND prs_werkplek_volgnr = c_werkplek_volgnr_default;
-- -- Altijd werkplek met deze notatie!
-- END;
--
-- IF v_aktie = 'INSERT' OR (v_nr_werkplek = 0 AND v_aktie = 'UPDATE')
-- THEN
-- INSERT INTO prs_perslidwerkplek
-- (prs_perslid_key, prs_werkplek_key, prs_perslidwerkplek_bezetting
-- )
-- VALUES (v_perslid_key, v_werkplek_key, 0
-- );
-- ELSE -- v_aktie = 'UPDATE' AND v_nr_werkplek = 1
-- UPDATE prs_perslidwerkplek
-- SET prs_werkplek_key = v_werkplek_key
-- WHERE prs_perslid_key = v_perslid_key;
-- END IF;
END IF; -- gebouw
END IF; -- afdeling
v_buffercount := v_buffercount + 1;
IF v_buffercount >= c_commitbuffer
THEN
COMMIT;
v_buffercount := 0;
END IF;
EXCEPTION
WHEN OTHERS
THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
v_errorhint := 'perslid_nr:' || rec_prs_upd.prs_perslid_nr || ' gebouw:' || rec_prs_upd.prs_afdeling_naam || ' ' || v_errorhint || ' {' || v_errormsg || '}';
v_errormsg := '(ORACLE error ' || oracle_err_num || '/' || oracle_err_mes || ')';
fac.imp_writelog (p_import_key, 'E', v_errormsg, v_errorhint);
END;
END LOOP;
SELECT COUNT (*)
INTO v_perslid_newcount_fclt
FROM prs_perslid
WHERE prs_perslid_nr IS NOT NULL AND prs_perslid_verwijder IS NULL;
fac.imp_writelog (p_import_key,
'S',
'Aantal actieve personen (met personeelsnr) vooraf: '
|| TO_CHAR (v_perslid_count_fclt)
|| ' nu: '
|| TO_CHAR (v_perslid_newcount_fclt),
''
);
SELECT COUNT (*)
INTO v_perslid_newcount_fclt -- misbruik
FROM prs_perslid
WHERE prs_perslid_nr IS NULL AND prs_perslid_verwijder IS NULL;
fac.imp_writelog (p_import_key,
'S',
'Aantal actieve personen zonder personeelsnr: ' || TO_CHAR (v_perslid_newcount_fclt),
''
);
-- plaats medewerkers die nog niet in de default groep zitten in de default groep.
INSERT INTO fac_gebruikersgroep
(fac_groep_key, prs_perslid_key)
(SELECT 1, prs_perslid_key
FROM prs_perslid p
WHERE prs_perslid_oslogin IS NOT NULL
AND prs_perslid_verwijder IS NULL
AND NOT EXISTS (
SELECT prs_perslid_key
FROM fac_gebruikersgroep gg
WHERE fac_groep_key = 1
AND p.prs_perslid_key = gg.prs_perslid_key));
EXCEPTION
WHEN OTHERS
THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
v_errorhint := v_errorhint || ' {' || v_errormsg || '}';
v_errormsg := '(ORACLE error ' || oracle_err_num || '/' || oracle_err_mes || ')';
fac.imp_writelog (p_import_key, 'E', v_errormsg, v_errorhint);
END;
/
CREATE OR REPLACE VIEW CWTD_V_NOTI_CNTREMINDER
(CODE, SENDER, RECEIVER, TEXT, KEY,
PAR1, PAR2, XKEY)
AS
SELECT '', '', 7282,
'Rapp<EFBFBD>l: Contract '
|| c.cnt_contract_nummer_intern
|| ' ('
|| 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.',
c.cnt_contract_key, c.cnt_contract_nummer_intern, cnt.cnt_getopzegdatum (c.cnt_contract_key), NULL
FROM cnt_v_aanwezigcontract c, prs_bedrijf b
WHERE b.prs_bedrijf_key = c.cnt_prs_bedrijf_key
AND trunc(SYSDATE) = trunc(cnt.cnt_getrappeldatum(c.cnt_contract_key));
-- backoffice bezoekers rapport (tbv notificatie naar gebouwadres)
CREATE OR REPLACE VIEW CWTD_V_RAP_BEZBO
(
datum,
van,
tot,
bezoeker,
bedrijf,
Parkeerplaats,
Contactpersoon,
Gastheer_vrouw,
Telefoon,
Ruimte,
Actie,
Opmerking,
Gebouw_code,
FCLT_H_alg_gebouw_key
)
AS
SELECT TO_CHAR (bez_afspraak_datum, 'DD-MM-YYYY') datum,
TO_CHAR (bez_afspraak_datum, 'HH24:MI') van,
TO_CHAR (bez_afspraak_eind, 'HH24:MI') tot,
bez_afspraak_naam Bezoeker,
bez_afspraak_bedrijf Bedrijf,
NVL2 (rd.res_rsv_deel_key, 'Ja', NULL) parkeer,
p.prs_perslid_naam_full Contactpersoon,
bez_afspraak_gastheer Gastheer_vrouw,
COALESCE (p2.prs_perslid_telefoonnr, p2.prs_perslid_mobiel),
aog.alg_gebouw_code
|| ' '
|| aog.alg_verdieping_code
|| ' '
|| aog.alg_ruimte_nr
ruimte,
bez_actie_omschrijving actie,
ba.bez_afspraak_opmerking opmerking,
aog.alg_gebouw_code,
aog.alg_gebouw_key
FROM bez_afspraak ba,
bez_bezoekers bb,
bez_actie bac,
alg_v_allonrgoed_gegevens aog,
res_rsv_deel rd,
prs_v_perslid_fullnames_all p,
prs_perslid p2
WHERE TRUNC (bez_afspraak_datum) = TRUNC (SYSDATE + 1)
AND bb.bez_afspraak_key = ba.bez_afspraak_key
AND ba.bez_actie_key = bac.bez_actie_key
AND aog.alg_onroerendgoed_keys = ba.alg_onrgoed_keys
AND bb.bez_bezoekers_key = rd.bez_bezoekers_key(+)
AND ba.bez_afspraak_contact_key = p.prs_perslid_key
AND p2.prs_perslid_key(+) = ba.bez_afspraak_host_key;
-- Stuur elke dag een overzicht van bezoekers naar gebouwadres
CREATE OR REPLACE VIEW CWTD_V_NOTI_BEZBO
(
CODE,
SENDER,
RECEIVER,
TEXT,
KEY,
XKEY,
XEMAIL,
XMOBILE
)
AS
SELECT 'CUST01',
NULL,
NULL,
'Bezoekers overzicht '
|| g.alg_gebouw_omschrijving
|| ' '
|| TRUNC (SYSDATE + 1),
(SELECT fac_usrrap_key
FROM fac_usrrap
WHERE fac_usrrap_view_name = 'CWTD_V_RAP_BEZBO'),
g.alg_gebouw_key,
g.alg_gebouw_email,
NULL
FROM alg_gebouw g
WHERE g.alg_gebouw_email IS NOT NULL;
SHOW ERRORS
BEGIN fac.registercustversion('CWTD', 9); END;
/
BEGIN adm.systrackscriptId('$Id$', 0); END;
/
COMMIT;
SPOOL OFF