1616 lines
62 KiB
MySQL
1616 lines
62 KiB
MySQL
|
||
-- $Id$
|
||
--
|
||
-- Script containing customer specific db-configuration for PCHD.
|
||
|
||
DEFINE thisfile = 'PCHD.SQL'
|
||
DEFINE dbuser = '^PCHD'
|
||
DEFINE custid = 'PCHD'
|
||
|
||
SET ECHO ON
|
||
SET DEFINE ON
|
||
COLUMN fcltlogfile NEW_VALUE fcltlogfile NOPRINT;
|
||
WHENEVER SQLERROR EXIT;
|
||
SELECT adm.scriptspoolfile('&dbuser', '&thisfile') AS fcltlogfile FROM DUAL;
|
||
WHENEVER SQLERROR CONTINUE;
|
||
SPOOL &fcltlogfile
|
||
SET DEFINE OFF
|
||
SET DEFINE OFF
|
||
|
||
------ payload begin ------
|
||
|
||
CREATE OR REPLACE VIEW pchd_v_imp_prs_perslid_sync
|
||
(
|
||
prs_afdeling_naam,
|
||
prs_perslid_naam,
|
||
prs_perslid_tussenvoegsel,
|
||
prs_perslid_voorletters,
|
||
prs_perslid_voornaam,
|
||
prs_perslid_titel,
|
||
prs_perslid_telefoonnr,
|
||
prs_perslid_mobiel,
|
||
prs_perslid_email,
|
||
prs_perslid_apikey,
|
||
prs_srtperslid_omschrijving,
|
||
prs_perslid_nr,
|
||
prs_perslid_oslogin,
|
||
prs_perslid_oslogin2,
|
||
prs_perslid_geslacht,
|
||
prs_perslid_dienstverband
|
||
)
|
||
AS
|
||
SELECT pg.prs_afdeling_naam,
|
||
p.prs_perslid_naam,
|
||
p.prs_perslid_tussenvoegsel,
|
||
p.prs_perslid_voorletters,
|
||
p.prs_perslid_voornaam,
|
||
p.prs_perslid_titel,
|
||
p.prs_perslid_telefoonnr,
|
||
p.prs_perslid_mobiel,
|
||
p.prs_perslid_email,
|
||
p.prs_perslid_apikey,
|
||
pg.prs_srtperslid_omschrijving,
|
||
p.prs_perslid_nr,
|
||
p.prs_perslid_oslogin,
|
||
p.prs_perslid_oslogin2,
|
||
p.prs_perslid_geslacht,
|
||
p.prs_perslid_dienstverband
|
||
FROM prs_v_perslid_gegevens pg, prs_perslid p, prs_v_afdeling a
|
||
WHERE p.prs_perslid_key = pg.prs_perslid_key
|
||
AND p.prs_afdeling_key = a.prs_afdeling_key
|
||
AND a.prs_bedrijf_key = fac.getsetting ('xd_primary_bedrijfkey');
|
||
|
||
|
||
CREATE OR REPLACE VIEW pchd_v_opdrachtenfacturatie
|
||
(
|
||
maand,
|
||
district,
|
||
locatie,
|
||
vakgroeptype,
|
||
vakgroep,
|
||
aantal_opdrachten,
|
||
totale_kosten_opdrachten,
|
||
reeds_gefactureerd,
|
||
nog_te_verwachten_kosten
|
||
)
|
||
AS
|
||
SELECT TO_CHAR (mo.mld_opdr_datumbegin, 'YYYY-MM'),
|
||
d.alg_district_omschrijving,
|
||
l.alg_locatie_omschrijving,
|
||
insr.ins_srtdiscipline_omschrijving,
|
||
md.ins_discipline_omschrijving,
|
||
COUNT (mo.mld_opdr_key),
|
||
SUM (mo.mld_opdr_kosten),
|
||
SUM (ff.fin_factuur_totaal),
|
||
SUM (mo.mld_opdr_kosten) - SUM (ff.fin_factuur_totaal)
|
||
FROM ins_srtdiscipline insr,
|
||
mld_discipline md,
|
||
mld_opdr mo,
|
||
mld_melding mm,
|
||
mld_stdmelding mstd,
|
||
fin_factuur ff,
|
||
alg_locatie l,
|
||
alg_district d
|
||
WHERE insr.ins_srtdiscipline_key = md.ins_srtdiscipline_key
|
||
AND md.ins_discipline_key = mstd.mld_ins_discipline_key
|
||
AND mm.mld_stdmelding_key = mstd.mld_stdmelding_key
|
||
AND mm.mld_melding_key = mo.mld_melding_key
|
||
AND mo.mld_opdr_key = ff.mld_opdr_key
|
||
AND l.alg_locatie_key = mm.mld_alg_locatie_key
|
||
and d.alg_district_key = l.alg_district_key
|
||
AND ff.fin_factuur_verwijder IS NULL
|
||
AND ff.fin_factuur_statuses_key IN (6, 7) -- Ingevoerd, Incompleet, Akkoord, Verwerkt
|
||
AND mo.mld_statusopdr_key NOT IN (1, 2)
|
||
GROUP BY TO_CHAR (mo.mld_opdr_datumbegin, 'YYYY-MM'),
|
||
l.alg_locatie_omschrijving,
|
||
insr.ins_srtdiscipline_omschrijving,
|
||
md.ins_discipline_omschrijving,
|
||
d.alg_district_omschrijving;
|
||
|
||
|
||
|
||
--View om te zien welke kostenplaatsen er aan een locatie gekoppeld zijn.
|
||
--PCHD#55359
|
||
CREATE OR REPLACE VIEW PCHD_V_RAP_KOSTENPLAATS_LOC
|
||
(
|
||
locatie_omschrijving,
|
||
kostenplaats_key,
|
||
kostenplaats_omschrijving
|
||
)
|
||
AS
|
||
SELECT DISTINCT l.alg_locatie_omschrijving , prsa.prs_kostenplaats_key, kost.prs_kostenplaats_omschrijving
|
||
FROM alg_locatie l,
|
||
alg_gebouw g,
|
||
alg_verdieping v,
|
||
alg_ruimte r,
|
||
prs_ruimteafdeling ra,
|
||
prs_afdeling prsa,
|
||
prs_kostenplaats kost
|
||
WHERE g.alg_locatie_key = l.alg_locatie_key(+)
|
||
AND v.alg_gebouw_key (+) = g.alg_gebouw_key
|
||
AND r.alg_verdieping_key(+) = v.alg_verdieping_key
|
||
AND r.ALG_RUIMTE_KEY = ra.ALG_RUIMTE_KEY (+)
|
||
AND prsa.PRS_AFDELING_KEY = ra.PRS_AFDELING_KEY
|
||
AND prsa.prs_kostenplaats_key = kost.prs_kostenplaats_key;
|
||
|
||
|
||
|
||
-- draft versie van PPI rapportage voor truckparking
|
||
CREATE OR REPLACE VIEW pchd_v_rap_mld_truckparking
|
||
(
|
||
hide_f_ts,
|
||
fclt_d_datum,
|
||
tijd,
|
||
fclt_f_locatie,
|
||
vakgroep,
|
||
melding,
|
||
melder,
|
||
omschrijving,
|
||
afhandeling,
|
||
datum_tijd_tht,
|
||
datum_tijd_afgemeld,
|
||
telaat
|
||
)
|
||
AS
|
||
SELECT TO_CHAR (mld_melding_datum, 'yyyymmddhh24mi'),
|
||
TO_CHAR (mld_melding_datum, 'dd-mm-yyyy'),
|
||
TO_CHAR (mld_melding_datum, 'hh24:mi'),
|
||
alg_locatie_omschrijving,
|
||
ins_discipline_omschrijving,
|
||
mld_stdmelding_omschrijving,
|
||
pf.prs_perslid_naam_full,
|
||
mld_melding_omschrijving,
|
||
mld_melding_opmerking,
|
||
TO_CHAR (mld_melding_einddatum_std, 'dd-mm-yyyy hh24:mi'),
|
||
TO_CHAR (
|
||
COALESCE (mld.getmeldingstatusdate (m.mld_melding_key, 5),
|
||
mld.getmeldingstatusdate (m.mld_melding_key, 1),
|
||
NULL),
|
||
'dd-mm-yyyy hh24:mi'),
|
||
DECODE (
|
||
SIGN(mld_melding_einddatum_std
|
||
- COALESCE (
|
||
COALESCE (
|
||
mld.getmeldingstatusdate (m.mld_melding_key, 5),
|
||
mld.getmeldingstatusdate (m.mld_melding_key, 1)),
|
||
SYSDATE)),
|
||
-1,
|
||
'Ja')
|
||
FROM mld_melding m,
|
||
mld_stdmelding std,
|
||
ins_tab_discipline d,
|
||
prs_v_perslid_fullnames_all pf,
|
||
alg_locatie l
|
||
WHERE m.mld_stdmelding_key = std.mld_stdmelding_key
|
||
AND std.mld_ins_discipline_key = d.ins_discipline_key
|
||
AND m.prs_perslid_key = pf.prs_perslid_key
|
||
AND m.mld_alg_locatie_key = l.alg_locatie_key
|
||
AND d.ins_srtdiscipline_key = 61;
|
||
|
||
--PCHD#53705 - Import personen vanuit AD VolkerWessels
|
||
CREATE OR REPLACE PROCEDURE pchd_import_perslid (p_import_key IN NUMBER)
|
||
IS
|
||
c_fielddelimitor VARCHAR2 (1) := ';';
|
||
v_newline VARCHAR2 (1000); -- Input line
|
||
v_aanduiding VARCHAR2 (200);
|
||
v_errorhint VARCHAR2 (1000);
|
||
v_errormsg VARCHAR2 (1000);
|
||
oracle_err_num NUMBER;
|
||
oracle_err_mes VARCHAR2 (200);
|
||
header_is_valid NUMBER := 0;
|
||
v_ongeldig NUMBER (1);
|
||
v_count_tot NUMBER (10);
|
||
v_count_import NUMBER (10);
|
||
v_count NUMBER;
|
||
-- De importvelden:
|
||
v_prs_perslid_voornaam VARCHAR2 (256);
|
||
v_prs_perslid_naam VARCHAR2 (256);
|
||
v_prs_perslid_tussenvoegsel VARCHAR2 (256);
|
||
v_prs_perslid_oslogin VARCHAR2 (256);
|
||
v_prs_perslid_oslogin2 VARCHAR2 (256);
|
||
v_prs_perslid_wm VARCHAR2 (256);
|
||
v_prs_perslid_organisation VARCHAR2 (256);
|
||
v_prs_perslid_companycode VARCHAR2 (256);
|
||
v_prs_afdeling_naam VARCHAR2 (256);
|
||
v_prs_perslid_costcarrier VARCHAR2 (256);
|
||
v_prs_srtperslid_omschrijving VARCHAR2 (256);
|
||
v_prs_perslid_managedby VARCHAR2 (256);
|
||
v_prs_perslid_email VARCHAR2 (256);
|
||
v_prs_perslid_telefoonnr VARCHAR2 (256);
|
||
v_prs_perslid_mobiel VARCHAR2 (256);
|
||
v_prs_perslid_vestigingsnaam VARCHAR2 (256);
|
||
v_prs_perslid_vestigingsnummer VARCHAR2 (256);
|
||
-- Overig:
|
||
|
||
CURSOR c1
|
||
IS
|
||
SELECT *
|
||
FROM fac_imp_file
|
||
WHERE fac_import_key = p_import_key
|
||
ORDER BY fac_imp_file_index;
|
||
BEGIN
|
||
DELETE FROM pchd_imp_prs;
|
||
|
||
COMMIT;
|
||
|
||
v_count_tot := 0;
|
||
v_count_import := 0;
|
||
|
||
FOR rec1 IN c1
|
||
LOOP
|
||
BEGIN
|
||
v_newline := rec1.fac_imp_file_line;
|
||
v_aanduiding := '';
|
||
v_errorhint := 'Fout bij opvragen te importeren rij';
|
||
v_ongeldig := 0;
|
||
-- Lees alle veldwaarden
|
||
|
||
-- 01
|
||
fac.imp_getfield (v_newline, c_fielddelimitor, v_prs_perslid_voornaam);
|
||
-- 02
|
||
fac.imp_getfield (v_newline, c_fielddelimitor, v_prs_perslid_naam);
|
||
-- 03
|
||
fac.imp_getfield (v_newline, c_fielddelimitor, v_prs_perslid_tussenvoegsel);
|
||
-- 04
|
||
fac.imp_getfield (v_newline, c_fielddelimitor, v_prs_perslid_oslogin);
|
||
-- 05
|
||
fac.imp_getfield (v_newline, c_fielddelimitor, v_prs_perslid_wm);
|
||
-- 06
|
||
fac.imp_getfield (v_newline, c_fielddelimitor, v_prs_perslid_organisation);
|
||
-- 07
|
||
fac.imp_getfield (v_newline, c_fielddelimitor, v_prs_perslid_companycode);
|
||
-- 08
|
||
fac.imp_getfield (v_newline, c_fielddelimitor, v_prs_afdeling_naam);
|
||
-- 09
|
||
fac.imp_getfield (v_newline, c_fielddelimitor, v_prs_perslid_costcarrier);
|
||
-- 10
|
||
fac.imp_getfield (v_newline, c_fielddelimitor, v_prs_srtperslid_omschrijving);
|
||
-- 11
|
||
--fac.imp_getfield (v_newline, c_fielddelimitor, v_prs_perslid_managedby);
|
||
-- 12
|
||
fac.imp_getfield (v_newline, c_fielddelimitor, v_prs_perslid_email);
|
||
-- 13
|
||
fac.imp_getfield (v_newline, c_fielddelimitor, v_prs_perslid_telefoonnr);
|
||
-- 14
|
||
fac.imp_getfield (v_newline, c_fielddelimitor, v_prs_perslid_mobiel);
|
||
-- 15
|
||
fac.imp_getfield (v_newline, c_fielddelimitor, v_prs_perslid_vestigingsnaam);
|
||
-- 16
|
||
fac.imp_getfield (v_newline, c_fielddelimitor, v_prs_perslid_vestigingsnummer);
|
||
|
||
|
||
--
|
||
v_aanduiding :=
|
||
'['
|
||
|| v_prs_perslid_oslogin
|
||
|| '|'
|
||
|| v_prs_perslid_naam
|
||
|| '|'
|
||
|| v_prs_perslid_tussenvoegsel
|
||
|| '|'
|
||
|| v_prs_perslid_voornaam
|
||
|| '] ';
|
||
|
||
-- Ik controleer of ik een geldige header heb, dat is: in de juiste kolommen
|
||
-- de juiste kolomkop. Ik controleer daarbij ALLE kolommen!
|
||
-- Ik negeer alles totdat ik een geldige header ben gepasseerd.
|
||
IF (header_is_valid = 0)
|
||
THEN
|
||
IF UPPER (v_prs_perslid_voornaam) = 'FIRSTNAME'
|
||
AND UPPER (v_prs_perslid_naam) = 'LASTNAME'
|
||
AND UPPER (v_prs_perslid_tussenvoegsel) = 'MIDDLENAME'
|
||
AND UPPER (v_prs_perslid_oslogin) = 'USERNAME'
|
||
AND UPPER (v_prs_perslid_wm) = 'WM'
|
||
AND UPPER (v_prs_perslid_organisation) = 'ORGANISATION'
|
||
AND UPPER (v_prs_perslid_companycode) = 'COMPANYCODE'
|
||
AND UPPER (v_prs_afdeling_naam) = 'DEPARTMENT'
|
||
AND UPPER (v_prs_perslid_costcarrier) = 'COSTCARRIER'
|
||
AND UPPER (v_prs_srtperslid_omschrijving) = 'FUNCTION'
|
||
--AND UPPER (v_prs_perslid_managedby) = 'MANAGEDBY'
|
||
AND UPPER (v_prs_perslid_email) = 'EMAIL'
|
||
AND UPPER (v_prs_perslid_telefoonnr) = 'PHONENUMBER'
|
||
AND UPPER (v_prs_perslid_mobiel) = 'MOBILENUMBER'
|
||
AND UPPER (v_prs_perslid_vestigingsnaam) = 'VESTIGINGSNAAM'
|
||
AND UPPER (v_prs_perslid_vestigingsnummer) = 'VESTIGINGSNUMMER'
|
||
THEN
|
||
header_is_valid := 1;
|
||
END IF;
|
||
ELSE
|
||
|
||
--
|
||
|
||
v_errorhint := 'Ongeldige naam';
|
||
v_prs_perslid_naam := TRIM (v_prs_perslid_naam);
|
||
|
||
IF LENGTH (v_prs_perslid_naam) > 30
|
||
THEN
|
||
v_prs_perslid_naam := SUBSTR (v_prs_perslid_naam, 1, 30);
|
||
fac.imp_writelog (p_import_key,
|
||
'W',
|
||
v_aanduiding || 'Naam te lang',
|
||
'Naam wordt afgebroken tot ['
|
||
|| v_prs_perslid_naam
|
||
|| ']'
|
||
);
|
||
ELSE
|
||
IF (v_prs_perslid_naam IS NULL)
|
||
THEN
|
||
v_ongeldig := 1;
|
||
fac.imp_writelog
|
||
(p_import_key,
|
||
'E',
|
||
v_aanduiding || 'Naam onbekend',
|
||
'Naam is verplicht; regel wordt overgeslagen!'
|
||
);
|
||
END IF;
|
||
END IF;
|
||
COMMIT;
|
||
|
||
--
|
||
v_errorhint := 'Ongeldig tussenvoegsel';
|
||
v_prs_perslid_tussenvoegsel := TRIM (v_prs_perslid_tussenvoegsel);
|
||
|
||
IF LENGTH (v_prs_perslid_tussenvoegsel) > 10
|
||
THEN
|
||
v_prs_perslid_tussenvoegsel :=
|
||
SUBSTR (v_prs_perslid_tussenvoegsel, 1, 10);
|
||
fac.imp_writelog (p_import_key,
|
||
'W',
|
||
v_aanduiding || 'Tussenvoegsel te lang',
|
||
'Tussenvoegsel wordt afgebroken tot ['
|
||
|| v_prs_perslid_tussenvoegsel
|
||
|| ']'
|
||
);
|
||
COMMIT;
|
||
END IF;
|
||
|
||
--
|
||
v_errorhint := 'Ongeldige voornaam';
|
||
v_prs_perslid_voornaam := TRIM (v_prs_perslid_voornaam);
|
||
|
||
IF LENGTH (v_prs_perslid_voornaam) > 30
|
||
THEN
|
||
v_prs_perslid_voornaam :=
|
||
SUBSTR (v_prs_perslid_voornaam, 1, 30);
|
||
fac.imp_writelog (p_import_key,
|
||
'W',
|
||
v_aanduiding || 'Voornaam is te lang',
|
||
'Voornaam wordt afgebroken tot ['
|
||
|| v_prs_perslid_voornaam
|
||
|| ']'
|
||
);
|
||
ELSE
|
||
IF (v_prs_perslid_voornaam IS NULL)
|
||
THEN
|
||
v_prs_perslid_voornaam := '-';
|
||
fac.imp_writelog
|
||
(p_import_key,
|
||
'W',
|
||
v_aanduiding || 'Voornaam onbekend',
|
||
'Voornaam wordt gezet op [-]'
|
||
);
|
||
END IF;
|
||
END IF;
|
||
COMMIT;
|
||
|
||
--
|
||
v_errorhint := 'Ongeldige bedrijfsnaam';
|
||
v_prs_perslid_wm := TRIM (v_prs_perslid_wm);
|
||
|
||
IF LENGTH (v_prs_perslid_wm) > 60
|
||
THEN
|
||
v_prs_perslid_wm := SUBSTR (v_prs_perslid_wm, 1, 60);
|
||
fac.imp_writelog (p_import_key,
|
||
'W',
|
||
v_aanduiding || 'Bedrijfsnaam te lang',
|
||
'Bedrijfsnaam wordt afgebroken tot ['
|
||
|| v_prs_perslid_wm
|
||
|| ']'
|
||
);
|
||
v_ongeldig :=1;
|
||
ELSE
|
||
IF (v_prs_perslid_wm IS NULL)
|
||
THEN
|
||
v_ongeldig := 1;
|
||
fac.imp_writelog
|
||
(p_import_key,
|
||
'E',
|
||
v_aanduiding || 'Bedrijfsnaam onbekend',
|
||
'Bedrijfsnaam is verplicht; regel wordt overgeslagen!'
|
||
);
|
||
END IF;
|
||
END IF;
|
||
COMMIT;
|
||
|
||
--
|
||
v_errorhint := 'Ongeldige organisatienaam';
|
||
v_prs_perslid_organisation := TRIM (v_prs_perslid_organisation);
|
||
|
||
IF LENGTH (v_prs_perslid_organisation) > 60
|
||
THEN
|
||
v_prs_perslid_organisation := SUBSTR (v_prs_perslid_organisation, 1, 60);
|
||
fac.imp_writelog (p_import_key,
|
||
'W',
|
||
v_aanduiding || 'Organisatienaam te lang',
|
||
'Organisatienaam wordt afgebroken tot ['
|
||
|| v_prs_perslid_organisation
|
||
|| ']'
|
||
);
|
||
v_ongeldig :=1;
|
||
ELSE
|
||
IF (v_prs_afdeling_naam IS NULL)
|
||
THEN
|
||
v_ongeldig := 1;
|
||
fac.imp_writelog
|
||
(p_import_key,
|
||
'E',
|
||
v_aanduiding || 'Organisatienaam onbekend',
|
||
'Organisatienaam is verplicht; regel wordt overgeslagen!'
|
||
);
|
||
END IF;
|
||
END IF;
|
||
COMMIT;
|
||
|
||
--
|
||
v_errorhint := 'Ongeldige afdelingsnaam ';
|
||
v_prs_afdeling_naam := TRIM (v_prs_afdeling_naam);
|
||
|
||
IF LENGTH (v_prs_afdeling_naam) > 60
|
||
THEN
|
||
v_prs_afdeling_naam := SUBSTR (v_prs_afdeling_naam, 1, 60);
|
||
fac.imp_writelog (p_import_key,
|
||
'W',
|
||
v_aanduiding || 'Afdelingsnaam te lang',
|
||
'Afdelingsnaam wordt afgebroken tot ['
|
||
|| v_prs_afdeling_naam
|
||
|| ']'
|
||
);
|
||
v_ongeldig :=1;
|
||
ELSE
|
||
IF (v_prs_afdeling_naam IS NULL)
|
||
THEN
|
||
v_ongeldig := 1;
|
||
fac.imp_writelog
|
||
(p_import_key,
|
||
'E',
|
||
v_aanduiding || 'Afdelingsnaam onbekend',
|
||
'Afdelingsnaam is verplicht; regel wordt overgeslagen!'
|
||
);
|
||
END IF;
|
||
END IF;
|
||
COMMIT;
|
||
|
||
--
|
||
v_errorhint := 'Ongeldige functie';
|
||
v_prs_srtperslid_omschrijving := TRIM (v_prs_srtperslid_omschrijving);
|
||
|
||
IF LENGTH (v_prs_srtperslid_omschrijving) >60
|
||
THEN
|
||
v_prs_srtperslid_omschrijving :=
|
||
SUBSTR (v_prs_srtperslid_omschrijving, 1, 60);
|
||
fac.imp_writelog (p_import_key,
|
||
'W',
|
||
v_aanduiding || 'Functie te lang',
|
||
'Functie wordt afgebroken tot ['
|
||
|| v_prs_srtperslid_omschrijving
|
||
|| ']'
|
||
);
|
||
v_ongeldig :=1;
|
||
ELSE
|
||
IF (v_prs_srtperslid_omschrijving IS NULL)
|
||
THEN
|
||
v_ongeldig := 1;
|
||
fac.imp_writelog
|
||
(p_import_key,
|
||
'E',
|
||
v_aanduiding || 'Functie onbekend',
|
||
'Functie is verplicht; regel wordt overgeslagen!'
|
||
);
|
||
END IF;
|
||
END IF;
|
||
COMMIT;
|
||
|
||
--
|
||
v_errorhint := 'Ongeldig telefoonnummer';
|
||
v_prs_perslid_telefoonnr := TRIM (v_prs_perslid_telefoonnr);
|
||
|
||
IF LENGTH (REPLACE(v_prs_perslid_telefoonnr,' ','')) > 15
|
||
THEN
|
||
v_prs_perslid_telefoonnr :=
|
||
SUBSTR (REPLACE(v_prs_perslid_telefoonnr,' ',''), 1, 15);
|
||
fac.imp_writelog (p_import_key,
|
||
'W',
|
||
v_aanduiding || 'Telefoonnummer te lang',
|
||
'Telefoonnummer wordt afgebroken tot ['
|
||
|| v_prs_perslid_telefoonnr
|
||
|| ']'
|
||
);
|
||
COMMIT;
|
||
END IF;
|
||
|
||
--
|
||
v_errorhint := 'Ongeldig mobiel nr';
|
||
v_prs_perslid_mobiel := TRIM (v_prs_perslid_mobiel);
|
||
|
||
IF LENGTH (REPLACE(v_prs_perslid_mobiel,' ','')) > 15
|
||
THEN
|
||
v_prs_perslid_telefoonnr :=
|
||
SUBSTR (REPLACE(v_prs_perslid_mobiel,' ',''), 1, 15);
|
||
fac.imp_writelog (p_import_key,
|
||
'W',
|
||
v_aanduiding || 'Mobiel te lang',
|
||
'Mobiel wordt afgebroken tot ['
|
||
|| v_prs_perslid_mobiel
|
||
|| ']'
|
||
);
|
||
COMMIT;
|
||
END IF;
|
||
|
||
|
||
--
|
||
v_errorhint := 'Ongeldig e-mailadres';
|
||
v_prs_perslid_email := TRIM (v_prs_perslid_email);
|
||
|
||
IF LENGTH (v_prs_perslid_email) > 50
|
||
THEN
|
||
v_prs_perslid_email := SUBSTR (v_prs_perslid_email, 1, 50);
|
||
fac.imp_writelog (p_import_key,
|
||
'W',
|
||
v_aanduiding || 'E-mailadres te lang',
|
||
'E-mailadres wordt afgebroken tot ['
|
||
|| v_prs_perslid_email
|
||
|| ']'
|
||
);
|
||
COMMIT;
|
||
END IF;
|
||
|
||
--
|
||
v_errorhint := 'Ongeldig loginnaam';
|
||
v_prs_perslid_oslogin := TRIM (v_prs_perslid_oslogin);
|
||
|
||
IF LENGTH (v_prs_perslid_oslogin) > 30
|
||
THEN
|
||
v_prs_perslid_oslogin := SUBSTR (v_prs_perslid_oslogin, 1, 30);
|
||
fac.imp_writelog (p_import_key,
|
||
'W',
|
||
v_aanduiding || 'Loginnaam te lang',
|
||
'Loginnaam wordt afgebroken tot ['
|
||
|| v_prs_perslid_oslogin
|
||
|| ']'
|
||
);
|
||
v_ongeldig :=1;
|
||
COMMIT;
|
||
END IF;
|
||
|
||
-- IF LENGTH (v_prs_perslid_managedby) > 256
|
||
-- THEN
|
||
-- v_prs_perslid_managedby :=
|
||
-- SUBSTR (v_prs_perslid_managedby, 1, 256);
|
||
-- fac.imp_writelog (p_import_key,
|
||
-- 'W',
|
||
-- v_aanduiding || 'Managed by is te lang',
|
||
-- 'Managed by wordt afgebroken tot ['
|
||
-- || v_prs_perslid_managedby
|
||
-- || ']'
|
||
-- );
|
||
-- COMMIT;
|
||
-- END IF;
|
||
|
||
|
||
-- Insert geformatteerde import record
|
||
IF v_ongeldig = 0
|
||
THEN
|
||
BEGIN
|
||
v_errorhint :=
|
||
'Fout bij toevoegen regel aan importtabel pchd_imp_prs';
|
||
|
||
INSERT INTO pchd_imp_prs
|
||
(prs_perslid_naam,
|
||
prs_perslid_tussenvoegsel,
|
||
prs_perslid_voornaam,
|
||
prs_afdeling_naam,
|
||
prs_srtperslid_omschrijving,
|
||
prs_perslid_telefoonnr,
|
||
prs_perslid_mobiel,
|
||
prs_perslid_oslogin,
|
||
prs_perslid_email,
|
||
prs_perslid_wm,
|
||
prs_perslid_organisation,
|
||
prs_perslid_companycode,
|
||
prs_perslid_costcarrier,
|
||
--prs_perslid_managedby,
|
||
prs_perslid_vestigingsnaam,
|
||
prs_perslid_vestigingsnummer
|
||
)
|
||
VALUES
|
||
(v_prs_perslid_naam,
|
||
v_prs_perslid_tussenvoegsel,
|
||
v_prs_perslid_voornaam,
|
||
v_prs_afdeling_naam,
|
||
v_prs_srtperslid_omschrijving,
|
||
REPLACE(v_prs_perslid_telefoonnr,' ',''),
|
||
REPLACE(v_prs_perslid_mobiel,' ',''),
|
||
v_prs_perslid_oslogin,
|
||
v_prs_perslid_email,
|
||
v_prs_perslid_wm,
|
||
v_prs_perslid_organisation,
|
||
v_prs_perslid_companycode,
|
||
v_prs_perslid_costcarrier,
|
||
v_prs_perslid_vestigingsnaam,
|
||
v_prs_perslid_vestigingsnummer
|
||
);
|
||
COMMIT;
|
||
v_count_import := v_count_import + 1;
|
||
EXCEPTION
|
||
WHEN OTHERS
|
||
THEN
|
||
oracle_err_num := SQLCODE;
|
||
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
|
||
v_errormsg :=
|
||
v_errorhint
|
||
|| ' ORACLE (error '
|
||
|| oracle_err_num
|
||
|| '/'
|
||
|| oracle_err_mes
|
||
|| ')';
|
||
fac.imp_writelog
|
||
(p_import_key,
|
||
'E',
|
||
v_aanduiding || v_errormsg,
|
||
'Ingelezen regel kan niet worden weggeschreven!'
|
||
);
|
||
COMMIT;
|
||
END;
|
||
END IF;
|
||
END IF;
|
||
END;
|
||
END LOOP;
|
||
COMMIT;
|
||
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_aanduiding || v_errormsg,
|
||
v_errorhint
|
||
);
|
||
COMMIT;
|
||
END pchd_import_perslid;
|
||
/
|
||
|
||
CREATE OR REPLACE PROCEDURE pchd_update_perslid (p_import_key IN NUMBER)
|
||
IS
|
||
-- LET OP: moet idem zijn als declaratie bij pchd_IMPORT_PERSLID
|
||
c_persoon_inactief VARCHAR2 (30) := 'INACTIEF: ';
|
||
-- Maximaal percentage aan nieuwe medewerkers tov. actieve medewerkers met een nummer
|
||
c_max_delta_percentage NUMBER (10) := 1000;
|
||
-- Ruimte waar personen in geplaatst worden (indien nog geen ruimte in opgegeven gebouw)
|
||
c_ruimte_nr VARCHAR2 (10) := '000';
|
||
-- Groep waar personen in geplaatst worden (indien nog geen groep)
|
||
c_groep_upper VARCHAR2 (30) := '_default VWInfra';
|
||
c_key_default_rol NUMBER(10) := 661; --781 is Key voor autorisatiegroep _default VWInfra in ACCEPTATIE!! In productie is dit 661 (in branch 621)
|
||
v_aanduiding VARCHAR2 (200);
|
||
v_errorhint VARCHAR2 (1000);
|
||
v_errormsg VARCHAR2 (1000);
|
||
oracle_err_num NUMBER;
|
||
oracle_err_mes VARCHAR2 (200);
|
||
v_count_prs_actual NUMBER (10);
|
||
v_count_prs_import NUMBER (10); -- Matching actual persons!
|
||
v_count_tot NUMBER (10);
|
||
v_count_error NUMBER (10);
|
||
v_count NUMBER (10);
|
||
--
|
||
v_perslid_key NUMBER (10);
|
||
v_afdeling_key NUMBER (10);
|
||
v_afdeling_parentkey NUMBER (10);
|
||
v_bedrijf_key NUMBER (10);
|
||
v_kostenplaats_key NUMBER (10);
|
||
v_srtperslid_key NUMBER (10);
|
||
v_locatie_key NUMBER (10);
|
||
v_gebouw_key NUMBER (10);
|
||
v_verdieping_key NUMBER (10);
|
||
v_ruimte_key NUMBER (10);
|
||
v_wp_key NUMBER (10);
|
||
v_wp_volgnr NUMBER (3);
|
||
v_wp_oms VARCHAR2 (30);
|
||
v_groep_defaultnaam VARCHAR2 (30);
|
||
v_prs_bedrijf_key VARCHAR2 (30);
|
||
v_prs_afdeling_key VARCHAR2 (30);
|
||
v_prs_company_key VARCHAR2 (30);
|
||
v_prs_perslid_costcarrier VARCHAR2 (30);
|
||
v_prs_perslid_managedby VARCHAR2 (30);
|
||
v_prs_perslid_oslogin VARCHAR2 (30);
|
||
v_prs_perslid_oslogin2 VARCHAR2 (30);
|
||
|
||
-- Bepalen alle personen die in aanmerking komen om verwijderd te worden (INACTIEF)!
|
||
CURSOR cdelprs
|
||
IS
|
||
SELECT p.prs_perslid_key, p.prs_perslid_oslogin, p.prs_perslid_naam,
|
||
p.prs_perslid_voornaam
|
||
FROM prs_v_aanwezigperslid p
|
||
WHERE p.prs_perslid_oslogin IS NOT NULL
|
||
AND SUBSTR(p.prs_perslid_oslogin,1,1) <> '_'
|
||
AND EXISTS (
|
||
SELECT 1
|
||
FROM prs_kenmerklink km
|
||
WHERE km.prs_link_key = p.prs_perslid_key
|
||
AND km.prs_kenmerk_key = 1041 -- Key voor Kenmerk 'Import personen uit AD'. In ACCEPTATIEOMGEVING BRANCH: 1040 / In PRODUCTIEOMGEVING: 1041
|
||
AND km.prs_kenmerklink_waarde = '1461') -- Key voor waarde "Ja" bij kenmerk 'Import personen uit AD'.)
|
||
AND NOT EXISTS (
|
||
SELECT 1
|
||
FROM pchd_imp_prs ip
|
||
WHERE UPPER(ip.prs_perslid_oslogin) = UPPER(p.prs_perslid_oslogin));
|
||
|
||
--Bepalen alle functie omschrijvingen in het import bestand.
|
||
CURSOR csperslid
|
||
IS
|
||
SELECT UPPER(prs_srtperslid_omschrijving) prs_srtperslid_omschrijving
|
||
FROM pchd_imp_prs
|
||
GROUP BY UPPER (prs_srtperslid_omschrijving);
|
||
|
||
--Bepalen alle wm (werkmaatschappijen) in het import bestand.
|
||
CURSOR cwm
|
||
IS
|
||
SELECT UPPER(prs_perslid_wm) prs_perslid_wm
|
||
FROM pchd_imp_prs
|
||
GROUP BY UPPER (prs_perslid_wm);
|
||
|
||
--Bepalen alle organisaties in het import bestand.
|
||
CURSOR corg
|
||
IS
|
||
SELECT UPPER (prs_perslid_organisation) prs_perslid_organisation, UPPER (prs_perslid_companycode) prs_perslid_companycode, UPPER (prs_perslid_wm) prs_perslid_wm
|
||
FROM pchd_imp_prs
|
||
GROUP BY UPPER (prs_perslid_organisation), UPPER (prs_perslid_companycode), UPPER (prs_perslid_wm);
|
||
|
||
--Bepalen alle afdeling omschrijvingen in het import bestand.
|
||
CURSOR cdep
|
||
IS
|
||
SELECT UPPER(prs_afdeling_naam) prs_afdeling_naam, UPPER (prs_perslid_organisation) prs_perslid_organisation, UPPER (prs_perslid_wm) prs_perslid_wm
|
||
FROM pchd_imp_prs
|
||
GROUP BY UPPER(prs_afdeling_naam), UPPER (prs_perslid_organisation), UPPER (prs_perslid_wm);
|
||
|
||
CURSOR cperslid
|
||
IS
|
||
SELECT *
|
||
FROM pchd_imp_prs;
|
||
|
||
CURSOR cwerkplek
|
||
IS
|
||
SELECT p.prs_perslid_key,
|
||
i.prs_perslid_oslogin,
|
||
MIN (rg_nvt.alg_ruimte_key) alg_ruimte_key,
|
||
alg_gebouw_key
|
||
FROM prs_ruimteafdeling ra,
|
||
pchd_imp_prs i,
|
||
prs_perslid p,
|
||
prs_afdeling a,
|
||
prs_afdeling bu,
|
||
alg_v_ruimte_gegevens rg_nvt
|
||
WHERE UPPER (p.prs_perslid_oslogin) = UPPER (i.prs_perslid_oslogin)
|
||
AND p.prs_afdeling_key = a.prs_afdeling_key
|
||
AND bu.prs_afdeling_key = ra.prs_afdeling_key
|
||
AND rg_nvt.alg_ruimte_key = ra.alg_ruimte_key
|
||
AND UPPER (rg_nvt.alg_ruimte_nr) = 'N.V.T.'
|
||
AND bu.prs_afdeling_key = a.prs_afdeling_parentkey
|
||
AND NOT EXISTS
|
||
(SELECT prs_perslidwerkplek_key
|
||
FROM prs_v_perslidwerkplek_gegevens pwpg
|
||
WHERE pwpg.prs_perslid_key = p.prs_perslid_key
|
||
AND pwpg.alg_gebouw_key = rg_nvt.alg_gebouw_key)
|
||
GROUP BY p.prs_perslid_key, i.prs_perslid_oslogin, rg_nvt.alg_gebouw_key;
|
||
|
||
|
||
BEGIN
|
||
SELECT DECODE (COUNT (*), 0, 1, COUNT (*))
|
||
INTO v_count_prs_actual
|
||
FROM prs_perslid
|
||
WHERE prs_perslid_verwijder IS NULL AND prs_perslid_oslogin IS NOT NULL;
|
||
|
||
SELECT DECODE (COUNT (*), 0, 1, COUNT (*))
|
||
INTO v_count_prs_import
|
||
FROM prs_perslid p, pchd_imp_prs ip
|
||
WHERE p.prs_perslid_oslogin IS NOT NULL
|
||
AND p.prs_perslid_verwijder IS NULL
|
||
AND p.prs_perslid_oslogin = ip.prs_perslid_oslogin;
|
||
|
||
IF ( (TRUNC ((v_count_prs_import / v_count_prs_actual) * 100) >=
|
||
(100 - c_max_delta_percentage
|
||
)
|
||
)
|
||
)
|
||
THEN
|
||
-- Geldig importbestand wat betreft aantal personen
|
||
|
||
-- Personen verwijderen/inactiefmaken
|
||
FOR recdelprs IN cdelprs
|
||
LOOP
|
||
BEGIN
|
||
PRS.delete_perslid(p_import_key, recdelprs.prs_perslid_key);
|
||
END;
|
||
END LOOP;
|
||
|
||
v_count_tot := 0;
|
||
v_count_error := 0;
|
||
|
||
-- Toevoegen functies
|
||
FOR recsperslid IN csperslid
|
||
LOOP
|
||
BEGIN
|
||
v_count_tot := v_count_tot + 1;
|
||
v_aanduiding := recsperslid.prs_srtperslid_omschrijving || ' - ';
|
||
v_errorhint := 'Fout bij bepalen functie';
|
||
|
||
SELECT COUNT (*)
|
||
INTO v_count
|
||
FROM prs_srtperslid
|
||
WHERE UPPER (prs_srtperslid_omschrijving) =
|
||
UPPER (recsperslid.prs_srtperslid_omschrijving)
|
||
AND prs_srtperslid_verwijder IS NULL;
|
||
|
||
IF (v_count = 0)
|
||
THEN
|
||
v_errorhint := 'Fout bij toevoegen functie';
|
||
|
||
INSERT INTO prs_srtperslid
|
||
(prs_srtperslid_omschrijving
|
||
)
|
||
VALUES (recsperslid.prs_srtperslid_omschrijving
|
||
);
|
||
COMMIT;
|
||
END IF;
|
||
EXCEPTION
|
||
WHEN OTHERS
|
||
THEN
|
||
v_count_error := v_count_error + 1;
|
||
oracle_err_num := SQLCODE;
|
||
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
|
||
v_errormsg :=
|
||
'OTHERS (error '
|
||
|| oracle_err_num
|
||
|| '/'
|
||
|| oracle_err_mes
|
||
|| ')';
|
||
fac.imp_writelog (p_import_key,
|
||
'E',
|
||
v_aanduiding || v_errormsg,
|
||
v_errorhint
|
||
);
|
||
COMMIT;
|
||
END;
|
||
END LOOP;
|
||
|
||
v_count_tot := 0;
|
||
v_count_error := 0;
|
||
|
||
-- Toevoegen bedrijf (wm: werkmaatschappij)
|
||
FOR recwm IN cwm
|
||
LOOP
|
||
BEGIN
|
||
v_count_tot := v_count_tot + 1;
|
||
v_aanduiding := recwm.prs_perslid_wm || ' - ';
|
||
v_errorhint := 'Fout bij bepalen bedrijf (wm)';
|
||
|
||
SELECT COUNT (*)
|
||
INTO v_count
|
||
FROM prs_bedrijf
|
||
WHERE UPPER (prs_bedrijf_naam) =
|
||
UPPER (recwm.prs_perslid_wm)
|
||
AND prs_bedrijf_verwijder IS NULL;
|
||
|
||
IF (v_count = 0)
|
||
THEN
|
||
v_errorhint := 'Fout bij toevoegen bedrijf (wm)';
|
||
|
||
INSERT INTO prs_bedrijf
|
||
(prs_bedrijf_naam,
|
||
prs_bedrijf_intern)
|
||
VALUES (recwm.prs_perslid_wm,
|
||
1);
|
||
COMMIT;
|
||
END IF;
|
||
EXCEPTION
|
||
WHEN OTHERS
|
||
THEN
|
||
v_count_error := v_count_error + 1;
|
||
oracle_err_num := SQLCODE;
|
||
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
|
||
v_errormsg :=
|
||
'OTHERS (error '
|
||
|| oracle_err_num
|
||
|| '/'
|
||
|| oracle_err_mes
|
||
|| ')';
|
||
fac.imp_writelog (p_import_key,
|
||
'E',
|
||
v_aanduiding || v_errormsg,
|
||
v_errorhint
|
||
);
|
||
COMMIT;
|
||
END;
|
||
END LOOP;
|
||
|
||
fac.imp_writelog (p_import_key,
|
||
'S',
|
||
'Bedrijf: verwerkte regels zonder foutmelding: '
|
||
|| TO_CHAR (v_count_tot - v_count_error),
|
||
''
|
||
);
|
||
fac.imp_writelog (p_import_key,
|
||
'S',
|
||
'Bedrijf: verwerkte regels met foutmelding: '
|
||
|| TO_CHAR (v_count_error),
|
||
''
|
||
);
|
||
COMMIT;
|
||
|
||
v_count_tot := 0;
|
||
v_count_error := 0;
|
||
|
||
-- Toevoegen Organisatie
|
||
|
||
FOR recorg IN corg
|
||
LOOP
|
||
BEGIN
|
||
v_count_tot := v_count_tot + 1;
|
||
v_aanduiding := recorg.prs_perslid_organisation || ' - ' || recorg.prs_perslid_wm || ' - ' ;
|
||
v_errorhint := 'Fout bij bepalen organisatie';
|
||
|
||
-- Zoek bedrijf
|
||
v_errorhint := 'Zoek werkmaatschappij';
|
||
SELECT prs_bedrijf_key
|
||
INTO v_bedrijf_key
|
||
FROM prs_bedrijf pb
|
||
WHERE UPPER (pb.prs_bedrijf_naam) = UPPER (recorg.prs_perslid_wm)
|
||
AND pb.prs_bedrijf_verwijder IS NULL
|
||
AND pb.prs_bedrijf_intern = 1;
|
||
|
||
SELECT COUNT (*)
|
||
INTO v_count
|
||
FROM prs_afdeling
|
||
WHERE UPPER (prs_afdeling_omschrijving) =
|
||
UPPER (recorg.prs_perslid_organisation)
|
||
AND prs_bedrijf_key = v_bedrijf_key
|
||
AND prs_afdeling_verwijder IS NULL;
|
||
|
||
IF (v_count = 0)
|
||
THEN
|
||
v_errorhint := 'Fout bij toevoegen organisatie';
|
||
SELECT prs_s_prs_afdeling_key.nextval
|
||
INTO v_afdeling_key
|
||
FROM DUAL;
|
||
|
||
INSERT INTO prs_afdeling
|
||
(prs_bedrijf_key,
|
||
prs_afdeling_key,
|
||
prs_afdeling_naam,
|
||
prs_afdeling_omschrijving
|
||
)
|
||
VALUES (v_bedrijf_key,
|
||
v_afdeling_key,
|
||
recorg.prs_perslid_wm || v_afdeling_key,
|
||
recorg.prs_perslid_organisation
|
||
);
|
||
COMMIT;
|
||
END IF;
|
||
EXCEPTION
|
||
WHEN OTHERS
|
||
THEN
|
||
v_count_error := v_count_error + 1;
|
||
oracle_err_num := SQLCODE;
|
||
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
|
||
v_errormsg :=
|
||
'OTHERS (error '
|
||
|| oracle_err_num
|
||
|| '/'
|
||
|| oracle_err_mes
|
||
|| ')';
|
||
fac.imp_writelog (p_import_key,
|
||
'E',
|
||
v_aanduiding || v_errormsg,
|
||
v_errorhint
|
||
);
|
||
COMMIT;
|
||
END;
|
||
END LOOP;
|
||
|
||
fac.imp_writelog (p_import_key,
|
||
'S',
|
||
'Organisatie: verwerkte regels zonder foutmelding: '
|
||
|| TO_CHAR (v_count_tot - v_count_error),
|
||
''
|
||
);
|
||
fac.imp_writelog (p_import_key,
|
||
'S',
|
||
'Organisatie: verwerkte regels met foutmelding: '
|
||
|| TO_CHAR (v_count_error),
|
||
''
|
||
);
|
||
COMMIT;
|
||
|
||
v_count_tot := 0;
|
||
v_count_error := 0;
|
||
|
||
-- Toevoegen afdeling
|
||
FOR recdep IN cdep
|
||
LOOP
|
||
BEGIN
|
||
v_count_tot := v_count_tot + 1;
|
||
v_aanduiding := recdep.prs_afdeling_naam || ' - ' || recdep.prs_perslid_organisation || ' - ' || recdep.prs_perslid_wm || ' - ';
|
||
v_errorhint := 'Fout bij bepalen afdeling';
|
||
|
||
-- Kijken of de waarde uit de import al voorkomt. Er wordt gecontroleerd op unieke voorkomende afdelingomschrijvingen.
|
||
-- ??De import is er dus niet op toegerust om meerdere afdelingen te hebben met zelfde omschrijving maar ondere verschillende moeder-afdelingen.
|
||
v_errorhint := 'Zoek bovenliggende afdeling';
|
||
SELECT prs_afdeling_key, prs_kostenplaats_key
|
||
INTO v_afdeling_parentkey, v_kostenplaats_key
|
||
FROM prs_afdeling pa, prs_bedrijf pb
|
||
WHERE UPPER (pa.prs_afdeling_omschrijving) = UPPER (recdep.prs_perslid_organisation)
|
||
AND pa.prs_afdeling_verwijder IS NULL
|
||
AND pa.prs_bedrijf_key = pb.prs_bedrijf_key
|
||
AND pb.prs_bedrijf_naam = recdep.prs_perslid_wm;
|
||
|
||
SELECT COUNT (*), MAX(prs_afdeling_key)
|
||
INTO v_count, v_afdeling_key
|
||
FROM prs_afdeling
|
||
WHERE UPPER (prs_afdeling_omschrijving) =
|
||
UPPER (recdep.prs_afdeling_naam)
|
||
AND prs_afdeling_parentkey = v_afdeling_parentkey
|
||
AND prs_afdeling_verwijder IS NULL;
|
||
|
||
IF (v_count = 0)
|
||
THEN
|
||
v_errorhint := 'Fout bij toevoegen afdeling';
|
||
SELECT prs_s_prs_afdeling_key.nextval
|
||
INTO v_afdeling_key
|
||
FROM DUAL;
|
||
|
||
INSERT INTO prs_afdeling
|
||
(prs_afdeling_parentkey,
|
||
prs_afdeling_key,
|
||
prs_afdeling_naam,
|
||
prs_kostenplaats_key,
|
||
prs_afdeling_omschrijving
|
||
)
|
||
VALUES (v_afdeling_parentkey,
|
||
v_afdeling_key,
|
||
recdep.prs_perslid_wm || v_afdeling_key,
|
||
v_kostenplaats_key,
|
||
recdep.prs_afdeling_naam
|
||
);
|
||
ELSIF v_count = 1
|
||
THEN
|
||
UPDATE prs_afdeling
|
||
SET prs_kostenplaats_key = v_kostenplaats_key
|
||
WHERE prs_afdeling_key = v_afdeling_key;
|
||
END IF;
|
||
COMMIT;
|
||
EXCEPTION
|
||
WHEN OTHERS
|
||
THEN
|
||
v_count_error := v_count_error + 1;
|
||
oracle_err_num := SQLCODE;
|
||
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
|
||
v_errormsg :=
|
||
'OTHERS (error '
|
||
|| oracle_err_num
|
||
|| '/'
|
||
|| oracle_err_mes
|
||
|| ')';
|
||
fac.imp_writelog (p_import_key,
|
||
'E',
|
||
v_aanduiding || v_errormsg,
|
||
v_errorhint
|
||
);
|
||
COMMIT;
|
||
END;
|
||
END LOOP;
|
||
|
||
fac.imp_writelog (p_import_key,
|
||
'S',
|
||
'Afdeling: verwerkte regels zonder foutmelding: '
|
||
|| TO_CHAR (v_count_tot - v_count_error),
|
||
''
|
||
);
|
||
fac.imp_writelog (p_import_key,
|
||
'S',
|
||
'Afdeling: verwerkte regels met foutmelding: '
|
||
|| TO_CHAR (v_count_error),
|
||
''
|
||
);
|
||
COMMIT;
|
||
|
||
v_count_tot := 0;
|
||
v_count_error := 0;
|
||
|
||
-- Toevoegen personen
|
||
FOR recperslid IN cperslid
|
||
LOOP
|
||
BEGIN
|
||
v_count_tot := v_count_tot + 1;
|
||
v_aanduiding :=
|
||
recperslid.prs_perslid_oslogin
|
||
|| '|'
|
||
|| recperslid.prs_perslid_naam
|
||
|| '|'
|
||
|| recperslid.prs_perslid_voornaam
|
||
|| ' - ';
|
||
v_errorhint :=
|
||
'Fout bij bepalen functie ['
|
||
|| recperslid.prs_srtperslid_omschrijving
|
||
|| ']';
|
||
|
||
-- Zoek functie-KEY behorend bij de functie van de persoon
|
||
SELECT prs_srtperslid_key
|
||
INTO v_srtperslid_key
|
||
FROM prs_srtperslid
|
||
WHERE prs_srtperslid_verwijder IS NULL
|
||
AND UPPER (prs_srtperslid_omschrijving) =
|
||
UPPER (recperslid.prs_srtperslid_omschrijving);
|
||
|
||
v_errorhint :=
|
||
'Fout bij bepalen afdeling persoon ['
|
||
|| recperslid.prs_afdeling_naam || '-' || recperslid.prs_perslid_organisation || '-' || recperslid.prs_perslid_wm
|
||
|| ']';
|
||
|
||
-- Zoek afdeling-KEY behorend bij de afdeling van de persoon
|
||
SELECT a2.prs_afdeling_key
|
||
INTO v_afdeling_key
|
||
FROM prs_bedrijf b, prs_afdeling a1, prs_afdeling a2
|
||
WHERE b.prs_bedrijf_verwijder IS NULL
|
||
AND b.prs_bedrijf_naam = recperslid.prs_perslid_wm
|
||
AND b.prs_bedrijf_key = a1.prs_bedrijf_key
|
||
AND a1.prs_afdeling_verwijder IS NULL
|
||
AND UPPER (a1.prs_afdeling_omschrijving) = UPPER (recperslid.prs_perslid_organisation)
|
||
AND a1.prs_afdeling_key = a2.prs_afdeling_parentkey
|
||
AND a2.prs_afdeling_verwijder IS NULL
|
||
AND UPPER (a2.prs_afdeling_omschrijving) = UPPER (recperslid.prs_afdeling_naam);
|
||
|
||
v_errorhint := 'Fout bij bepalen persoon';
|
||
|
||
-- Zoek perslid-KEY, behorend bij bestaand persoon, voor het updaten van de juiste persoon
|
||
SELECT COUNT (*), MAX(prs_perslid_key)
|
||
INTO v_count, v_perslid_key
|
||
FROM prs_perslid
|
||
WHERE prs_perslid_verwijder IS NULL
|
||
AND UPPER (prs_perslid_oslogin) = UPPER (recperslid.prs_perslid_oslogin);
|
||
|
||
IF (v_count = 0)
|
||
THEN
|
||
v_errorhint := 'Fout bij toevoegen persoon';
|
||
|
||
INSERT INTO prs_perslid
|
||
(prs_perslid_module,
|
||
prs_srtperslid_key,
|
||
prs_afdeling_key,
|
||
prs_perslid_voornaam,
|
||
prs_perslid_naam,
|
||
prs_perslid_tussenvoegsel,
|
||
prs_perslid_oslogin,
|
||
prs_perslid_email,
|
||
prs_perslid_telefoonnr,
|
||
prs_perslid_mobiel
|
||
)
|
||
VALUES ('PRS',
|
||
v_srtperslid_key,
|
||
v_afdeling_key,
|
||
recperslid.prs_perslid_voornaam,
|
||
recperslid.prs_perslid_naam,
|
||
recperslid.prs_perslid_tussenvoegsel,
|
||
recperslid.prs_perslid_oslogin,
|
||
recperslid.prs_perslid_email,
|
||
recperslid.prs_perslid_telefoonnr,
|
||
recperslid.prs_perslid_mobiel
|
||
) RETURNING prs_perslid_key INTO v_perslid_key;
|
||
|
||
v_errorhint := 'Fout bij bepalen loginnaam';
|
||
ELSIF v_count = 1
|
||
THEN
|
||
v_errorhint := 'Fout bij wijzigen persoon';
|
||
BEGIN
|
||
UPDATE prs_perslid p
|
||
SET p.prs_srtperslid_key = v_srtperslid_key,
|
||
p.prs_afdeling_key = v_afdeling_key,
|
||
p.prs_perslid_voornaam = recperslid.prs_perslid_voornaam,
|
||
p.prs_perslid_naam = recperslid.prs_perslid_naam,
|
||
p.prs_perslid_tussenvoegsel = recperslid.prs_perslid_tussenvoegsel,
|
||
p.prs_perslid_oslogin = recperslid.prs_perslid_oslogin,
|
||
p.prs_perslid_telefoonnr = recperslid.prs_perslid_telefoonnr,
|
||
p.prs_perslid_mobiel = recperslid.prs_perslid_mobiel,
|
||
p.prs_perslid_email = recperslid.prs_perslid_email
|
||
WHERE p.prs_perslid_key = v_perslid_key;
|
||
END;
|
||
ELSIF v_count > 1
|
||
THEN
|
||
fac.imp_writelog (p_import_key,
|
||
'E',
|
||
v_aanduiding
|
||
|| ' kan persoon niet 1-duidig bepalen',
|
||
v_errorhint
|
||
);
|
||
END IF;
|
||
|
||
IF v_count < 2
|
||
THEN
|
||
v_errorhint := 'Fout bij toevoegen kenmerk import personen uit AD';
|
||
|
||
-- Toevoegen kenmerk "Import personen uit AD'
|
||
-- Key voor Kenmerk 'Import personen uit AD': 1041
|
||
-- Waarde "Ja" voor Kenmerk 'Import personen uit AD'.
|
||
PRS.upsertkenmerk (1041, v_perslid_key, '1461');
|
||
|
||
|
||
v_errorhint := 'Fout bij toevoegen kenmerk Costcarrier';
|
||
-- Toevoegen kenmerk "Costcarrier'
|
||
-- Key voor Kenmerk 'Costcarrier': 1060
|
||
PRS.upsertkenmerk (1060, v_perslid_key, recperslid.prs_perslid_costcarrier);
|
||
|
||
-- Toevoegen kenmerk "Company code'
|
||
-- Key voor Kenmerk 'Costcarrier': 1080
|
||
PRS.upsertkenmerk (1080, v_perslid_key, recperslid.prs_perslid_companycode);
|
||
|
||
END IF;
|
||
|
||
|
||
EXCEPTION
|
||
WHEN OTHERS
|
||
THEN
|
||
v_count_error := v_count_error + 1;
|
||
oracle_err_num := SQLCODE;
|
||
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
|
||
v_errormsg :=
|
||
'OTHERS (error '
|
||
|| oracle_err_num
|
||
|| '/'
|
||
|| oracle_err_mes
|
||
|| ')';
|
||
fac.imp_writelog (p_import_key,
|
||
'E',
|
||
v_aanduiding || v_errormsg,
|
||
v_errorhint
|
||
);
|
||
COMMIT;
|
||
END;
|
||
END LOOP;
|
||
|
||
fac.imp_writelog (p_import_key,
|
||
'S',
|
||
'Persoon: verwerkte regels zonder foutmelding: '
|
||
|| TO_CHAR (v_count_tot - v_count_error),
|
||
''
|
||
);
|
||
fac.imp_writelog (p_import_key,
|
||
'S',
|
||
'Persoon: verwerkte regels met foutmelding: '
|
||
|| TO_CHAR (v_count_error),
|
||
''
|
||
);
|
||
COMMIT;
|
||
|
||
v_count_tot := 0;
|
||
v_count_error := 0;
|
||
|
||
-- Iedereen krijgt _default-rol die nog geen groep heeft.
|
||
INSERT INTO fac_gebruikersgroep (prs_perslid_key, fac_groep_key)
|
||
SELECT prs_perslid_key, 661
|
||
FROM prs_perslid p, pchd_imp_prs i
|
||
WHERE UPPER (i.prs_perslid_oslogin) = p.prs_perslid_oslogin
|
||
AND NOT EXISTS
|
||
(SELECT gg.prs_perslid_key
|
||
FROM fac_gebruikersgroep gg, fac_groep g
|
||
WHERE gg.prs_perslid_key = p.prs_perslid_key
|
||
AND gg.fac_groep_key = g.fac_groep_key
|
||
AND fac_groep_omschrijving = c_groep_upper);
|
||
|
||
|
||
|
||
ELSE
|
||
fac.imp_writelog
|
||
(p_import_key,
|
||
'E',
|
||
'Verschil tussen het actuele aantal en het te importeren aantal personen te groot; zie specificatie!',
|
||
'- max. verschilpercentage = ['
|
||
|| TO_CHAR (c_max_delta_percentage)
|
||
|| '%] <br> '
|
||
|| '- #personen importbestand = ['
|
||
|| TO_CHAR (v_count_prs_import)
|
||
|| '] <br> '
|
||
|| '- #personen Facilitor = ['
|
||
|| TO_CHAR (v_count_prs_actual)
|
||
|| ']'
|
||
);
|
||
COMMIT;
|
||
END IF; -- Geldig importbestand wat betreft aantal inserts
|
||
COMMIT;
|
||
|
||
FOR recwerkplek IN cwerkplek
|
||
LOOP
|
||
BEGIN
|
||
-- Maximaal <20><>n werkplek per gebouw
|
||
prs.movetoruimte (recwerkplek.prs_perslid_key, recwerkplek.alg_ruimte_key, 'G', 0);
|
||
END;
|
||
END LOOP;
|
||
COMMIT;
|
||
|
||
END pchd_update_perslid;
|
||
/
|
||
|
||
CREATE OR REPLACE FORCE VIEW pchd_v_rap_catresbasis
|
||
(
|
||
resnr,
|
||
locatie,
|
||
gebouw,
|
||
ruimte,
|
||
contactp,
|
||
kostenpl,
|
||
datum,
|
||
van,
|
||
tot,
|
||
artikel,
|
||
aantal,
|
||
levering,
|
||
dieet,
|
||
wensen
|
||
)
|
||
AS
|
||
SELECT rr.res_reservering_key || '/' || rr.res_rsv_ruimte_volgnr,
|
||
rg.alg_locatie_omschrijving,
|
||
rg.alg_gebouw_omschrijving,
|
||
rg.alg_ruimte_nr,
|
||
pf.prs_perslid_naam_full,
|
||
(SELECT MAX (kmw.res_kenmerkreservering_waarde)
|
||
FROM res_kenmerkwaarde kmw, res_kenmerk km, res_srtkenmerk sk
|
||
WHERE kmw.res_rsv_ruimte_key = rr.res_rsv_ruimte_key
|
||
AND km.res_kenmerk_key = kmw.res_kenmerk_key
|
||
AND sk.res_srtkenmerk_key = km.res_srtkenmerk_key
|
||
AND sk.res_srtkenmerk_key = 2)
|
||
kostenplaats, -- Kenmerksoort: Kostenplaats binnen werkmaatschappij'
|
||
TRUNC (rr.res_rsv_ruimte_van) datum,
|
||
TO_CHAR (rr.res_rsv_ruimte_van, 'HH24:MI') van,
|
||
TO_CHAR (rr.res_rsv_ruimte_tot, 'HH24:MI') tot,
|
||
rart.res_artikel_omschrijving soort_catering,
|
||
ra.res_rsv_artikel_aantal aantal,
|
||
ra.res_rsv_artikel_levering,
|
||
(SELECT MAX (rkmw.res_kenmerkreservering_waarde)
|
||
FROM res_kenmerkwaarde rkmw, res_kenmerk rkm, res_srtkenmerk rsk
|
||
WHERE rsk.res_srtkenmerk_key = rkm.res_srtkenmerk_key
|
||
AND rkm.res_kenmerk_key = rkmw.res_kenmerk_key
|
||
AND rkmw.res_rsv_ruimte_key = rr.res_rsv_ruimte_key
|
||
AND rsk.res_srtkenmerk_key = 21) -- Kenmerksoort 'Dieetwensen / allergieen'
|
||
kmdieet,
|
||
(SELECT MAX (rkmw.res_kenmerkreservering_waarde)
|
||
FROM res_kenmerkwaarde rkmw, res_kenmerk rkm, res_srtkenmerk rsk
|
||
WHERE rsk.res_srtkenmerk_key = rkm.res_srtkenmerk_key
|
||
AND rkm.res_kenmerk_key = rkmw.res_kenmerk_key
|
||
AND rkmw.res_rsv_ruimte_key = rr.res_rsv_ruimte_key
|
||
AND rsk.res_srtkenmerk_key = 41) -- Kenmerksoort 'Aanvullende wensen lunch'
|
||
kmwens
|
||
FROM res_rsv_ruimte rr,
|
||
res_rsv_artikel ra,
|
||
res_artikel rart,
|
||
alg_v_ruimte_gegevens rg,
|
||
prs_v_perslid_fullnames_all pf,
|
||
(SELECT rr2.res_rsv_ruimte_key,
|
||
COALESCE (rr2.alg_ruimte_key, r2r.alg_ruimte_key)
|
||
alg_ruimte_key
|
||
FROM res_v_rsv_ruimte_2_alg_ruimte r2r, res_rsv_ruimte rr2
|
||
WHERE r2r.res_rsv_ruimte_key(+) = rr2.res_rsv_ruimte_key) r2a
|
||
WHERE rr.res_rsv_ruimte_key = ra.res_rsv_ruimte_key
|
||
AND rr.res_rsv_ruimte_verwijder IS NULL
|
||
AND r2a.alg_ruimte_key = rg.alg_ruimte_key
|
||
AND r2a.res_rsv_ruimte_key = rr.res_rsv_ruimte_key
|
||
AND rr.res_rsv_ruimte_contact_key = pf.prs_perslid_key
|
||
AND ra.res_artikel_key = rart.res_artikel_key
|
||
AND ra.res_rsv_artikel_verwijder IS NULL
|
||
AND rart.res_discipline_key = 743 -- Discipline / Catalogus "Lunch"
|
||
AND rr.res_status_fo_key <= 5;
|
||
|
||
-- Levert de catering voor morgen
|
||
CREATE OR REPLACE FORCE VIEW pchd_v_rap_catres1
|
||
AS
|
||
SELECT resnr,
|
||
locatie,
|
||
gebouw,
|
||
ruimte,
|
||
contactp,
|
||
kostenpl,
|
||
datum,
|
||
van,
|
||
tot,
|
||
artikel,
|
||
aantal,
|
||
dieet,
|
||
wensen
|
||
FROM pchd_v_rap_catresbasis
|
||
WHERE TRUNC (levering) = TRUNC (fac.datumtijdplusuitvoertijd (SYSDATE,
|
||
1,
|
||
'D',
|
||
0,
|
||
24,
|
||
1))
|
||
AND fac.getweekdaynum (SYSDATE) NOT IN (1, 7);
|
||
|
||
|
||
-- Levert de catering lijst voor vandaag
|
||
CREATE OR REPLACE FORCE VIEW pchd_v_rap_catres2
|
||
AS
|
||
SELECT resnr,
|
||
locatie,
|
||
gebouw,
|
||
ruimte,
|
||
contactp,
|
||
kostenpl,
|
||
datum,
|
||
van,
|
||
tot,
|
||
artikel,
|
||
aantal,
|
||
dieet,
|
||
wensen
|
||
FROM pchd_v_rap_catresbasis
|
||
WHERE fac.getweekdaynum (SYSDATE) NOT IN (1, 7)
|
||
AND TRUNC (levering) = TRUNC (SYSDATE);
|
||
|
||
CREATE OR REPLACE VIEW pchd_v_noti_catres1
|
||
(
|
||
code,
|
||
sender,
|
||
receiver,
|
||
text,
|
||
key,
|
||
xkey
|
||
)
|
||
AS
|
||
SELECT DISTINCT
|
||
'CUST01' AS code,
|
||
NULL,
|
||
10481, -- Persoon "Verhoef B.V.", voor de emailadressen
|
||
'Cateringreserveringen',
|
||
(SELECT fac_usrrap_key
|
||
FROM fac_usrrap
|
||
WHERE UPPER(fac_usrrap_view_name) = 'PCHD_V_RAP_CATRES1')
|
||
rapportnr,
|
||
NULL
|
||
FROM DUAL
|
||
WHERE fac.iswerkdag (SYSDATE) = 1;
|
||
|
||
|
||
|
||
CREATE OR REPLACE VIEW PCHD_V_CNTR_CNTRREF
|
||
(
|
||
CONTRACT_KEY,
|
||
CONTRACT_NUMMER,
|
||
VERWIJDER_DATUM
|
||
)
|
||
AS
|
||
SELECT cnt.cnt_contract_key,
|
||
cnt.cnt_contract_key || ' - ' || cdisc.INS_DISCIPLINE_OMSCHRIJVING,
|
||
cnt.CNT_CONTRACT_VERWIJDER
|
||
FROM cnt_contract cnt, cnt_discipline cdisc
|
||
WHERE cnt.INS_DISCIPLINE_KEY = cdisc.INS_DISCIPLINE_KEY;
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
CREATE OR REPLACE VIEW pchd_v_noti_catres2
|
||
(
|
||
code,
|
||
sender,
|
||
receiver,
|
||
text,
|
||
key,
|
||
xkey
|
||
)
|
||
AS
|
||
SELECT DISTINCT
|
||
'CUST02' AS code,
|
||
NULL,
|
||
10481, -- Persoon "Verhoef B.V.", voor de emailadressen
|
||
'Cateringreserveringen',
|
||
(SELECT fac_usrrap_key
|
||
FROM fac_usrrap
|
||
WHERE UPPER(fac_usrrap_view_name) = 'PCHD_V_RAP_CATRES2')
|
||
rapportnr,
|
||
NULL
|
||
FROM DUAL
|
||
WHERE fac.iswerkdag (SYSDATE) = 1;
|
||
|
||
|
||
|
||
-- PCHD#55492 VIEW om referentievelden naar meldingen te kunnen maken.
|
||
CREATE OR REPLACE VIEW pchd_v_mld_mldref
|
||
(
|
||
MELDING_KEY,
|
||
MELDING_NUMMER
|
||
)
|
||
AS
|
||
SELECT m.mld_melding_key,
|
||
srt.INS_SRTDISCIPLINE_PREFIX
|
||
|| m.mld_melding_key
|
||
|| ' - '
|
||
|| sm.MLD_STDMELDING_OMSCHRIJVING
|
||
FROM mld_melding m, ins_srtdiscipline srt, mld_stdmelding sm, mld_discipline d
|
||
WHERE m.MLD_STDMELDING_KEY = sm.MLD_STDMELDING_KEY AND
|
||
sm.MLD_INS_DISCIPLINE_KEY = d.INS_DISCIPLINE_KEY
|
||
AND d.INS_SRTDISCIPLINE_KEY = srt.INS_SRTDISCIPLINE_KEY;
|
||
|
||
|
||
|
||
--Rapport tbv controle welke werkplekken extra zijn aangemaakt tav cursor in import.
|
||
--Deze werkplekken kunnen mogelijk verwijderd worden.
|
||
--De select in de NOT EXIST is de cursor van de import, met filter op prs_key en ruimte_key tav de werkplekken. Bovendien controle op omschrijving van bu en wm tov de import-gegevens.
|
||
CREATE OR REPLACE VIEW pchd_v_rap_extrawerkplekken
|
||
AS
|
||
SELECT pwp.prs_perslidwerkplek_key,
|
||
p.prs_perslid_key,
|
||
p.prs_perslid_naam,
|
||
p.prs_perslid_oslogin,
|
||
og.alg_plaatsaanduiding,
|
||
d.alg_district_omschrijving,
|
||
l.alg_locatie_omschrijving,
|
||
og.alg_verdieping_omschrijving,
|
||
og.alg_gebouw_naam,
|
||
og.alg_ruimte_nr
|
||
FROM prs_perslidwerkplek pwp,
|
||
prs_werkplek wp,
|
||
prs_perslid p,
|
||
pchd_imp_prs i,
|
||
alg_v_allonrgoed_gegevens og,
|
||
alg_locatie l,
|
||
alg_district d
|
||
WHERE pwp.prs_werkplek_key = wp.prs_werkplek_key
|
||
AND pwp.prs_perslid_key = p.prs_perslid_key
|
||
AND p.prs_perslid_oslogin = UPPER (i.prs_perslid_oslogin)
|
||
AND wp.prs_alg_ruimte_key = og.alg_ruimte_key
|
||
AND og.alg_locatie_key = l.alg_locatie_key
|
||
AND l.alg_district_key = d.alg_district_key
|
||
AND NOT EXISTS
|
||
(SELECT p.prs_perslid_key,
|
||
i.prs_perslid_oslogin,
|
||
ra.alg_ruimte_key,
|
||
g.alg_gebouw_omschrijving
|
||
FROM alg_ruimte ir,
|
||
alg_verdieping v,
|
||
alg_gebouw g,
|
||
alg_locatie l,
|
||
pchd_imp_prs ii,
|
||
prs_perslid ip,
|
||
prs_afdeling a,
|
||
prs_ruimteafdeling ra
|
||
WHERE ir.alg_verdieping_key = v.alg_verdieping_key
|
||
AND v.alg_gebouw_key = g.alg_gebouw_key
|
||
AND g.alg_locatie_key = l.alg_locatie_key
|
||
AND UPPER (a.prs_afdeling_omschrijving) =
|
||
UPPER (ii.prs_perslid_organisation)
|
||
AND UPPER (ii.prs_perslid_wm) =
|
||
(SELECT b.prs_bedrijf_naam_upper
|
||
FROM prs_bedrijf b, prs_v_afdeling ba
|
||
WHERE ba.prs_bedrijf_key = b.prs_bedrijf_key
|
||
AND ba.prs_afdeling_key = a.prs_afdeling_key)
|
||
AND UPPER (ip.prs_perslid_oslogin) =
|
||
UPPER (ii.prs_perslid_oslogin)
|
||
AND ra.prs_afdeling_key = a.prs_afdeling_key
|
||
AND ra.prs_ruimteafdeling_verwijder IS NULL
|
||
AND ra.alg_ruimte_key = ir.alg_ruimte_key
|
||
AND UPPER (ir.alg_ruimte_nr) = 'N.V.T.'
|
||
AND ip.prs_perslid_key = p.prs_perslid_key
|
||
AND ir.alg_ruimte_key = wp.prs_alg_ruimte_key);
|
||
|
||
------ 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
|