CWTD#18704: Gewijzigd importbestand

svn path=/Customer/trunk/; revision=14537
This commit is contained in:
Peter Koerhuis
2010-12-09 09:55:24 +00:00
parent d81d454deb
commit 13d35c1e81

View File

@@ -1,7 +1,7 @@
-- Script containing customer specific configuration sql statements for CWTD
-- (c) 2008 Facilitor
-- $Revision: 6 $
-- $Modtime: 6-05-09 16:55 $
-- $Revision: 7 $
-- $Modtime: 9-12-10 11:45 $
--
-- Support: +31 53 4800700
@@ -22,7 +22,8 @@ AS
FROM fac_imp_file
WHERE fac_imp_file_applicatie = 'PERSOON'
ORDER BY fac_imp_file_index;
next_record c_cursor%ROWTYPE;
next_record c_cursor%ROWTYPE;
v_newline VARCHAR2 (1000); -- Import line
v_field VARCHAR2 (100); -- Import field
@@ -34,20 +35,21 @@ AS
-- 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_naamcompl VARCHAR2 (1000);
v_perslid_geslacht VARCHAR2 (1000);
v_perslid_ingangsdatum VARCHAR2 (1000);
v_perslid_einddatum VARCHAR2 (1000);
v_locatie_omschrijving VARCHAR2 (1000);
@@ -59,16 +61,11 @@ AS
-- 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) := '"';
c_del_in_str2 VARCHAR2(16) := '"';
v_value VARCHAR2(1000);
@@ -113,43 +110,48 @@ BEGIN
v_newline := SUBSTR(next_record.FAC_IMP_FILE_LINE,1,c_max_import_str_len);
fac.imp_getfield (v_newline, v_fielddelimitor, v_perslid_nr);
fac.imp_getfield (v_newline, v_fielddelimitor, v_perslid_naam);
fac.imp_getfield (v_newline, v_fielddelimitor, v_perslid_geslacht);
fac.imp_getfield (v_newline, v_fielddelimitor, v_perslid_partn_tussen);
fac.imp_getfield (v_newline, v_fielddelimitor, v_perslid_partn_naam);
fac.imp_getfield (v_newline, v_fielddelimitor, v_perslid_voornaam);
fac.imp_getfield (v_newline, v_fielddelimitor, v_perslid_tussenvoegsel);
fac.imp_getfield (v_newline, v_fielddelimitor, v_perslid_voorletters);
fac.imp_getfield (v_newline, v_fielddelimitor, v_perslid_telefoonnr);
fac.imp_getfield (v_newline, v_fielddelimitor, v_perslid_mobiel);
fac.imp_getfield (v_newline, v_fielddelimitor, v_perslid_oslogin);
v_perslid_oslogin := '';
fac.imp_getfield (v_newline, v_fielddelimitor, v_perslid_email);
fac.imp_getfield (v_newline, v_fielddelimitor, v_srtperslid_omschrijving);
fac.imp_getfield (v_newline, v_fielddelimitor, v_afdeling_naam);
fac.imp_getfield (v_newline, v_fielddelimitor, v_perslid_ingangsdatum);
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);
fac.imp_getfield (v_newline, v_fielddelimitor, v_perslid_einddatum); -- Uit Dienst
v_perslid_einddatum := '';
fac.imp_getfield (v_newline, v_fielddelimitor, v_locatie_omschrijving);
fac.imp_getfield (v_newline, v_fielddelimitor, v_perslid_naamcompl);
v_perslid_oslogin := '';
-- Skip until the header is found
IF ( v_perslid_nr = 'Personeelsnummer' AND
v_perslid_naam = 'Geboortenaam' AND
v_perslid_geslacht = 'geslacht' AND
v_perslid_partn_tussen = 'voorvoegsel echtg./partner' AND
v_perslid_partn_naam = 'naam echtg./partner' AND
v_perslid_voornaam = 'roepnaam' AND
v_perslid_tussenvoegsel = 'voorvoegsel' AND
v_perslid_voorletters = 'voorletters' AND
v_perslid_telefoonnr = 'Telefoon intern' AND
v_perslid_mobiel = 'GSM nummer zaak' AND
v_perslid_email = 'E-mailadres werk' AND
v_srtperslid_omschrijving = 'Functienaam volledig' AND
v_afdeling_naam = 'Locatie' AND
v_locatie_omschrijving = 'Standplaats'
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;
@@ -166,9 +168,11 @@ BEGIN
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);
@@ -182,16 +186,17 @@ BEGIN
,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
,prs_perslid_naamcompl
,cwtd_imp_persoon_aanmaak
)
VALUES(v_perslid_nr
@@ -202,16 +207,17 @@ BEGIN
,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
,v_perslid_naamcompl
,sysdate
);
@@ -234,7 +240,7 @@ BEGIN
COMMIT;
END;
END LOOP;
IF header_found = FALSE THEN
fac.imp_writelog (p_applname, p_applrun, 'E', 'Geen geldige header gevonden', '');
END IF;
@@ -252,7 +258,7 @@ EXCEPTION
END;
/
-- show errors;
SHOW ERRORS;
CREATE OR REPLACE PROCEDURE cwtd_update_persoon (p_applname IN VARCHAR2, p_applrun IN VARCHAR2)
AS
@@ -285,48 +291,51 @@ AS
CURSOR c_prs_del
IS
SELECT p.prs_perslid_key, p.prs_perslid_nr
FROM PRS_PERSLID p, (select prs_perslid_nr
from cwtd_imp_persoon
where prs_perslid_nr is not null) lp
WHERE 1=1
AND p.prs_perslid_nr IS NOT NULL
AND p.prs_perslid_verwijder IS NULL
AND p.prs_perslid_nr = lp.prs_perslid_nr(+)
AND lp.prs_perslid_nr is null
ORDER BY 2, 1;
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_naamcompl
, 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, c_srtperslid_omschr_default) prs_srtperslid_omschrijving
, lp.prs_perslid_nr
, '' prs_perslid_titel
, p.prs_perslid_verwijder
, INSTR (lp.prs_perslid_naamcompl, lp.prs_perslid_naam) ind_eigen
, INSTR (lp.prs_perslid_naamcompl, NVL (lp.prs_perslid_partn_naam, 'xxxxxx')) ind_partner
FROM cwtd_imp_persoon lp, prs_perslid p
WHERE 1=1
AND lp.prs_perslid_nr = p.prs_perslid_nr(+)
-- 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, p.prs_perslid_key DESC;
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_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);
@@ -334,6 +343,7 @@ AS
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);
@@ -359,31 +369,36 @@ AS
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
--return;
-- Constanten:
select sysdate, sysdate, sysdate
into c_perslid_aanmaak, c_perslid_verwijder, c_perslid_ingangsdatum
from dual;
--TODO
DELETE FROM imp_log
WHERE imp_log_applicatie = 'PERSOON';
-- Delete
-- 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
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_applname, p_applrun, 'E', 'Geen records gevonden om te importeren.', '');
commit;
return;
COMMIT;
RETURN;
END IF;
FOR rec_prs_del IN c_prs_del
@@ -400,7 +415,6 @@ BEGIN
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. ';
@@ -413,10 +427,7 @@ BEGIN
'Persoon verwijderd met personeelsnummer ['||rec_prs_del.prs_perslid_nr||']',
''
);
commit; -- tbv logging
ELSE
-- Controleer of er ACTUELE verplichtingen zijn
SELECT COUNT (*)
INTO v_count
@@ -439,9 +450,7 @@ BEGIN
''
);
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
@@ -480,8 +489,9 @@ BEGIN
END LOOP;
COMMIT;
-- Update
v_errormsg := 'Persoonsgegevens worden nu angepast (toevoegen/wijzigen) ';
-- *** Update ***************************************************************
v_errormsg := 'Persoonsgegevens worden nu aangepast (toevoegen/wijzigen) ';
FOR rec_prs_upd IN c_prs_upd
LOOP
@@ -509,11 +519,10 @@ BEGIN
THEN
v_errormsg := 'Persoon met achternaam ['||rec_prs_upd.prs_perslid_naam||' heeft geen personeelsnummer ';
fac.imp_writelog (p_applname, p_applrun, 'E', v_errormsg, v_errorhint);
commit; -- logging
v_update := FALSE;
END IF;
-- overgenomen uit de CONN perman koppeling.
-- (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
@@ -534,7 +543,7 @@ BEGIN
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);
@@ -558,10 +567,6 @@ BEGIN
END IF;
END IF;
-- Controle: PRS_PERSLID_NAAM
IF v_update AND v_perslid_naam IS NULL
THEN
@@ -570,7 +575,7 @@ BEGIN
v_update := FALSE;
END IF;
-- Controle: Kan persoon gereactieveerd worden of is er al een persoon met dezelfde prs_perslid_nr actief
-- 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
@@ -579,7 +584,7 @@ BEGIN
INTO v_prs_key_cnt
FROM prs_perslid p
WHERE p.prs_perslid_verwijder IS NULL
AND p.prs_perslid_nr LIKE rec_prs_upd.prs_perslid_nr
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
@@ -610,7 +615,6 @@ BEGIN
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.
@@ -628,9 +632,9 @@ BEGIN
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
, '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);
@@ -667,16 +671,10 @@ BEGIN
-- Functie bestaat kennelijk niet, maak 'm maar aan
INSERT INTO prs_srtperslid
(prs_srtperslid_omschrijving
)
VALUES (v_srtperslid_omschr
);
-- Wat is de key van deze nieuwe geworden?
SELECT prs_srtperslid_key
INTO v_srtperslid_key
FROM prs_srtperslid
WHERE prs_srtperslid_omschrijving = v_srtperslid_omschr AND prs_srtperslid_verwijder IS NULL;
(prs_srtperslid_omschrijving)
VALUES (v_srtperslid_omschr)
RETURNING prs_srtperslid_key
INTO v_srtperslid_key;
WHEN OTHERS
THEN
v_errorhint :=
@@ -717,8 +715,6 @@ BEGIN
|| '/'
|| rec_prs_upd.prs_perslid_nr
);
commit;
ELSE
v_errormsg := 'Persoon kan niet worden gewijzigd';
@@ -734,21 +730,18 @@ BEGIN
prs_afdeling_key = v_afdeling_key,
prs_perslid_verwijder = NULL,
prs_perslid_email = rec_prs_upd.prs_perslid_email
WHERE prs_perslid_nr = rec_prs_upd.prs_perslid_nr
AND 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
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
);
commit;
END IF;
EXCEPTION
WHEN OTHERS
@@ -762,7 +755,7 @@ BEGIN
END;
END IF;
-- *** Werkplek ***
-- *** Werkplek *******************************************************
v_errorhint := 'Kan geen werkplek toevoegen';
IF v_update AND (v_aktie = 'UPDATE')
@@ -777,8 +770,7 @@ BEGIN
EXCEPTION
WHEN OTHERS
THEN
fac.imp_writelog (p_applname,
p_applrun,
fac.imp_writelog (p_applname, p_applrun,
'I',
v_errormsg,
'Het aantal werkplekken kan niet bepaald worden?! personeelsnummer: '
@@ -786,6 +778,7 @@ BEGIN
);
v_update := FALSE;
END;
IF v_update AND v_nr_werkplek = 1
THEN
BEGIN
@@ -808,14 +801,14 @@ BEGIN
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);
v_update := (v_current_gebouw_key != v_new_gebouw_key);
EXCEPTION
WHEN OTHERS
THEN
fac.imp_writelog (p_applname,
p_applrun,
fac.imp_writelog (p_applname, p_applrun,
'I',
v_errormsg,
'huidige of nieuwe alg_gebouw_key kan niet bepaald worden?! personeelsnummer: '
@@ -841,7 +834,8 @@ BEGIN
SELECT prs_perslid_key
INTO v_perslid_key
FROM prs_perslid
WHERE prs_perslid_nr = rec_prs_upd.prs_perslid_nr AND prs_perslid_verwijder IS NULL;
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
@@ -870,7 +864,7 @@ BEGIN
SELECT g.alg_gebouw_key
INTO v_gebouw_key
FROM FAC_USRDATA ud, ALG_gebouw g
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
@@ -930,8 +924,8 @@ BEGIN
|| rec_prs_upd.prs_perslid_nr
|| ': bepalen ruimte (ruimte zou bekend moeten zijn)';
SELECT alg_ruimte_key
INTO 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
@@ -941,14 +935,12 @@ BEGIN
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
);
(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_key
INTO 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
@@ -956,54 +948,125 @@ BEGIN
-- Altijd ruimte met deze notatie!
END;
BEGIN
v_errorhint :=
'Persoon met persoonnummer '
|| rec_prs_upd.prs_perslid_nr
|| ': bepalen werkplek (werkplek zou bekend moeten zijn)';
-- *** IMPLICIETE WERKPLEK (NIEUW) *********************************************
-- Persoon krijgt wp op fictieve of echte ruimte.
v_errorhint := 'Fout bij bepalen vrije werkplek';
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
);
SELECT COUNT ( * )
INTO v_count
FROM prs_v_aanwezigwerkplek w
WHERE w.prs_alg_ruimte_key = v_ruimte_key
AND NOT EXISTS
(SELECT 1
FROM prs_v_aanwezigperslidwerkplek pw
WHERE pw.prs_werkplek_key = w.prs_werkplek_key);
-- 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')
IF (v_count > 0)
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;
SELECT MIN (w.prs_werkplek_key)
INTO v_werkplek_key
FROM prs_v_aanwezigwerkplek w
WHERE w.prs_alg_ruimte_key = v_ruimte_key
AND NOT EXISTS
(SELECT 1
FROM prs_v_aanwezigperslidwerkplek pw
WHERE pw.prs_werkplek_key = w.prs_werkplek_key);
-- Verwijder (hard) de mogelijk eerder logisch verwijderde
-- koppeling tussen dezelfde persoon en werkplek!!!
DELETE FROM prs_perslidwerkplek pw
WHERE pw.prs_perslid_key = v_perslid_key
AND pw.prs_werkplek_key = v_werkplek_key
AND pw.prs_perslidwerkplek_verwijder IS NOT NULL;
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;
END IF;
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;
@@ -1012,6 +1075,7 @@ BEGIN
COMMIT;
v_buffercount := 0;
END IF;
EXCEPTION
WHEN OTHERS
THEN
@@ -1075,13 +1139,10 @@ END;
/
CREATE OR REPLACE VIEW CWTD_V_NOTI_CNTREMINDER
(CODE, SENDER, RECEIVER, TEXT, KEY,
(CODE, SENDER, RECEIVER, TEXT, KEY,
PAR1, PAR2, XKEY)
AS
AS
SELECT '', '', 2521,
'Rapp<EFBFBD>l: Contract '
|| c.cnt_contract_nummer_intern
@@ -1099,11 +1160,8 @@ SELECT '', '', 2521,
AND trunc(SYSDATE) = trunc(cnt.cnt_getrappeldatum(c.cnt_contract_key));
show errors
SHOW ERRORS
COMMIT;
spool off
SPOOL OFF