3280 lines
142 KiB
SQL
3280 lines
142 KiB
SQL
--
|
|
-- $Id$
|
|
--
|
|
-- Script containing customer specific db-configuration for SVRZ.
|
|
DEFINE thisfile = 'HMOD.SQL'
|
|
DEFINE dbuser = '^HMOD'
|
|
|
|
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
|
|
|
|
------ payload begin ------
|
|
|
|
|
|
CREATE OR REPLACE PROCEDURE hmod_import_koffer (p_import_key IN NUMBER)
|
|
AS
|
|
c_fielddelimitor VARCHAR2 (1) := ';';
|
|
v_newline VARCHAR2 (1000); -- Input line
|
|
v_errormsg VARCHAR2 (1000);
|
|
oracle_err_num NUMBER;
|
|
oracle_err_mes VARCHAR2 (200);
|
|
header_is_valid NUMBER;
|
|
v_count NUMBER;
|
|
v_ongeldig NUMBER (1);
|
|
v_mode NUMBER (1);
|
|
v_aanduiding VARCHAR2 (200);
|
|
-- v_all_null BOOLEAN;
|
|
v_count_error NUMBER (10);
|
|
v_count_tot NUMBER (10);
|
|
v_count_import NUMBER (10);
|
|
-- De importvelden:
|
|
v_versiedatum VARCHAR2 (15);
|
|
v_omschrijving VARCHAR2 (250);
|
|
v_code VARCHAR2 (30);
|
|
v_token VARCHAR2 (20);
|
|
v_mob VARCHAR2 (20);
|
|
v_hit VARCHAR2 (20);
|
|
v_lap_en_sim VARCHAR2 (20);
|
|
v_lapt VARCHAR2 (20);
|
|
v_tnc VARCHAR2 (20);
|
|
v_tnc_omschrijving VARCHAR2 (100);
|
|
v_facilitor VARCHAR2 (20);
|
|
v_adp VARCHAR2 (20);
|
|
v_absentiemanager VARCHAR2 (20);
|
|
v_regas VARCHAR2 (20);
|
|
v_checks VARCHAR2 (20);
|
|
v_accountview VARCHAR2 (20);
|
|
v_elvy VARCHAR2 (20);
|
|
v_hodnet VARCHAR2 (20);
|
|
v_proactive VARCHAR2 (20);
|
|
v_opmerking VARCHAR2 (1000);
|
|
v_volgnr NUMBER (10);
|
|
v_lettercode VARCHAR2 (30);
|
|
|
|
CURSOR c
|
|
IS
|
|
SELECT *
|
|
FROM fac_imp_file
|
|
WHERE fac_import_key = p_import_key
|
|
ORDER BY fac_imp_file_index;
|
|
BEGIN
|
|
-- Vorige inlees eerst verwijderen
|
|
---- Voor hmod_koffersysteem geldt dat je inlezen op dezelfde dag mag/kunt overschrijven. Voorgaande versiedatums blijven staan.
|
|
DELETE FROM hmod_imp_koffersysteem
|
|
WHERE versiedatum = TO_CHAR(TRUNC (SYSDATE),'DD-MM-YYYY');
|
|
COMMIT;
|
|
|
|
header_is_valid := 0;
|
|
v_ongeldig := 0;
|
|
v_count_error := 0;
|
|
header_is_valid := 0;
|
|
v_count_tot := 0;
|
|
v_count_import := 0;
|
|
|
|
FOR rec IN c
|
|
LOOP
|
|
BEGIN
|
|
v_newline := rec.fac_imp_file_line;
|
|
v_errormsg := 'Fout opvragen te importeren rij';
|
|
v_aanduiding := '';
|
|
|
|
-- Lees alle veldwaarden: omschrijving;code;token;mob;hit;lap_en_sim;lapt;tnc;tnc omschrijving;facilitor;adp;absentiemanager;regas;checks;accountview;elvy;hodnet;proactive;opmerking
|
|
v_errormsg := 'Fout opvragen te importeren kolom/rij 1';
|
|
fac.imp_getfield (v_newline, c_fielddelimitor, v_omschrijving);
|
|
v_errormsg := 'Fout opvragen te importeren kolom/rij 2';
|
|
fac.imp_getfield (v_newline, c_fielddelimitor, v_code);
|
|
fac.imp_getfield (v_newline, c_fielddelimitor, v_lettercode);
|
|
fac.imp_getfield (v_newline, c_fielddelimitor, v_token);
|
|
fac.imp_getfield (v_newline, c_fielddelimitor, v_mob);
|
|
fac.imp_getfield (v_newline, c_fielddelimitor, v_hit);
|
|
fac.imp_getfield (v_newline, c_fielddelimitor, v_lap_en_sim);
|
|
fac.imp_getfield (v_newline, c_fielddelimitor, v_lapt);
|
|
fac.imp_getfield (v_newline, c_fielddelimitor, v_tnc);
|
|
fac.imp_getfield (v_newline, c_fielddelimitor, v_tnc_omschrijving);
|
|
fac.imp_getfield (v_newline, c_fielddelimitor, v_facilitor);
|
|
fac.imp_getfield (v_newline, c_fielddelimitor, v_adp);
|
|
fac.imp_getfield (v_newline, c_fielddelimitor, v_absentiemanager);
|
|
fac.imp_getfield (v_newline, c_fielddelimitor, v_regas);
|
|
fac.imp_getfield (v_newline, c_fielddelimitor, v_checks);
|
|
fac.imp_getfield (v_newline, c_fielddelimitor, v_accountview);
|
|
fac.imp_getfield (v_newline, c_fielddelimitor, v_elvy);
|
|
fac.imp_getfield (v_newline, c_fielddelimitor, v_hodnet);
|
|
fac.imp_getfield (v_newline, c_fielddelimitor, v_proactive);
|
|
fac.imp_getfield (v_newline, c_fielddelimitor, v_opmerking);
|
|
|
|
v_aanduiding :=
|
|
v_versiedatum || '|' || v_omschrijving || '|' || v_code;
|
|
v_count_tot := v_count_tot + 1;
|
|
|
|
-- Skip until the header is found
|
|
IF header_is_valid = 0
|
|
THEN
|
|
IF v_omschrijving = 'omschrijving'
|
|
AND v_code = 'code'
|
|
AND v_lettercode = 'lettercode'
|
|
AND v_token = 'token'
|
|
AND v_mob = 'mob'
|
|
AND v_hit = 'hit'
|
|
AND v_lap_en_sim = 'lap_en_sim'
|
|
AND v_lapt = 'lapt'
|
|
AND v_tnc = 'tnc'
|
|
AND v_tnc_omschrijving = 'tnc omschrijving'
|
|
AND v_facilitor = 'facilitor'
|
|
AND v_adp = 'adp'
|
|
AND v_absentiemanager = 'absentiemanager'
|
|
AND v_regas = 'regas'
|
|
AND v_checks = 'checks'
|
|
AND v_accountview = 'accountview'
|
|
AND v_elvy = 'elvy'
|
|
AND v_hodnet = 'hodnet'
|
|
AND v_proactive = 'proactive'
|
|
AND v_opmerking = 'opmerking'
|
|
THEN
|
|
header_is_valid := 1;
|
|
END IF;
|
|
ELSE -- Header OK. Vanaf hier in de LOOP eventueel variabele vullen.
|
|
|
|
BEGIN
|
|
v_errormsg := 'Versiedatum wordt sysdatum ';
|
|
|
|
SELECT TO_CHAR (TRUNC (SYSDATE), 'DD-MM-YYYY')
|
|
INTO v_versiedatum
|
|
FROM DUAL;
|
|
|
|
-- volgnr vullen - dit numerieke veld gebruiken we voor kenmerkdomein-key..
|
|
---- dit zou ik ook kunnen vullen buiten de LOOP, toch?
|
|
SELECT COALESCE (MAX (volgnr), 0)
|
|
INTO v_volgnr
|
|
FROM hmod_imp_koffersysteem;
|
|
v_volgnr := v_volgnr + 1 ;
|
|
|
|
END;
|
|
|
|
INSERT INTO hmod_imp_koffersysteem (versiedatum,
|
|
omschrijving,
|
|
code,
|
|
lettercode,
|
|
token,
|
|
mob,
|
|
hit,
|
|
lap_en_sim,
|
|
lapt,
|
|
tnc,
|
|
tnc_omschrijving,
|
|
facilitor,
|
|
adp,
|
|
absentiemanager,
|
|
regas,
|
|
checks,
|
|
accountview,
|
|
elvy,
|
|
hodnet,
|
|
proactive,
|
|
volgnr,
|
|
opmerking)
|
|
VALUES (v_versiedatum,
|
|
v_omschrijving,
|
|
v_code,
|
|
v_lettercode,
|
|
v_token,
|
|
v_mob,
|
|
v_hit,
|
|
v_lap_en_sim,
|
|
v_lapt,
|
|
v_tnc,
|
|
v_tnc_omschrijving,
|
|
v_facilitor,
|
|
v_adp,
|
|
v_absentiemanager,
|
|
v_regas,
|
|
v_checks,
|
|
v_accountview,
|
|
v_elvy,
|
|
v_hodnet,
|
|
v_proactive,
|
|
v_volgnr,
|
|
v_opmerking);
|
|
END IF;
|
|
END;
|
|
END LOOP;
|
|
|
|
IF header_is_valid = 0
|
|
THEN
|
|
fac.imp_writelog (p_import_key,
|
|
'E',
|
|
'Ongeldig importbestand',
|
|
'Geen header of header niet volgens specificatie!');
|
|
ELSE
|
|
-- Afsluiting: Rollback/Delete tabel als er fouten in csv zitten. Initieel voor import koffersysteem nog zonder foutcheck opgezet, dus ook geen v_ongeldig aan het vullen...
|
|
IF v_ongeldig > 0
|
|
THEN
|
|
ROLLBACK;
|
|
-- Met rollback haalt hij ook al mijn errors en waarschuwingen weg!?? Daarom een DELETE
|
|
-- delete from hmod_imp_contractscope where <alleen de ingelzen versiedatum ;
|
|
COMMIT;
|
|
fac.imp_writelog (
|
|
p_import_key,
|
|
'E',
|
|
'Niet ingelezen. Staan aantal ongeldige regels in csv-bestand. Zie bovenstaande ERRORS. Pas deze eerst aan!',
|
|
'');
|
|
ELSE
|
|
COMMIT;
|
|
fac.imp_writelog (
|
|
p_import_key,
|
|
'S',
|
|
'Aantal ingelezen regels: ' || TO_CHAR (v_count_import),
|
|
'');
|
|
END IF;
|
|
END IF;
|
|
EXCEPTION
|
|
WHEN OTHERS
|
|
THEN
|
|
ROLLBACK;
|
|
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 || ' - Check !!!! : ' || v_aanduiding,
|
|
'');
|
|
END hmod_import_koffer;
|
|
/
|
|
|
|
CREATE OR REPLACE PROCEDURE hmod_update_koffer (p_import_key IN NUMBER)
|
|
AS
|
|
v_errormsg VARCHAR (200);
|
|
v_errorhint VARCHAR (200);
|
|
oracle_err_mes VARCHAR2 (150);
|
|
currentversion fac_module.fac_module_version%TYPE;
|
|
v_aanduiding VARCHAR (100);
|
|
v_count NUMBER;
|
|
BEGIN
|
|
-- hmod_update_koffer (p_import_key);
|
|
NULL;
|
|
END hmod_update_koffer;
|
|
/
|
|
|
|
-- Voor UDR-rapportage.
|
|
-- Later stadium nog aanvullen met personen-koppeling zodat men goed overzicht heeft van wat er per persoon is uitgereikt. Bij herziening van de koffer oook direct in beeld heeft waar eventuele vervolgacties gedaan moeten worden.
|
|
CREATE OR REPLACE VIEW hmod_v_koffersysteem
|
|
(
|
|
OMSCHRIJVING_TOTAAL,
|
|
VERSIEDATUM,
|
|
OMSCHRIJVING,
|
|
CODE,
|
|
LETTERCODE,
|
|
TOKEN,
|
|
MOB,
|
|
HIT,
|
|
LAP_EN_SIM,
|
|
LAPT,
|
|
TNC,
|
|
TNC_OMSCHRIJVING,
|
|
FACILITOR,
|
|
ADP,
|
|
ABSENTIEMANAGER,
|
|
REGAS,
|
|
CHECKS,
|
|
ACCOUNTVIEW,
|
|
ELVY,
|
|
HODNET,
|
|
PROACTIVE,
|
|
VOLGNR,
|
|
OPMERKING
|
|
)
|
|
AS
|
|
SELECT OMSCHRIJVING || ' (' || code || ')' AS omschrijving_totaal,
|
|
versiedatum,
|
|
omschrijving,
|
|
code,
|
|
lettercode,
|
|
token,
|
|
mob,
|
|
hit,
|
|
lap_en_sim,
|
|
lapt,
|
|
tnc,
|
|
tnc_omschrijving,
|
|
facilitor,
|
|
adp,
|
|
absentiemanager,
|
|
regas,
|
|
checks,
|
|
accountview,
|
|
elvy,
|
|
hodnet,
|
|
proactive,
|
|
volgnr,
|
|
opmerking
|
|
FROM hmod_imp_koffersysteem;
|
|
|
|
-- Voor keuzelijst (kenmerk domein)
|
|
CREATE OR REPLACE VIEW hmod_v_koffersysteem_huidig
|
|
(
|
|
VOLGNR,
|
|
OMSCHRIJVING,
|
|
VERSIEDATUM
|
|
)
|
|
AS
|
|
SELECT
|
|
VOLGNR,
|
|
OMSCHRIJVING_TOTAAL,
|
|
VERSIEDATUM
|
|
FROM hmod_v_koffersysteem
|
|
WHERE versiedatum = (select max(versiedatum) from hmod_v_koffersysteem)
|
|
ORDER BY omschrijving, versiedatum DESC
|
|
;
|
|
|
|
-- Basisview en rapportview voor de telefoon-objecten mobiel en vast per persoon
|
|
CREATE OR REPLACE VIEW HMOD_V_TELEFOONNR_KLANTOBJECT
|
|
(
|
|
PRS_PERSLID_KEY,
|
|
PRS_NAAM,
|
|
SOORT,
|
|
NUMMER_OBJECT,
|
|
INS_DEEL_KEY, -- KEY 1
|
|
INS_DEEL_AANMAAK,
|
|
INS_DEEL_KEY2, -- KEY2 voor MOBIEL-SIM-OBJECT
|
|
VASTNR_HUIDIG,
|
|
MOBIELNR_HUIDIG
|
|
)
|
|
AS
|
|
SELECT p.prs_perslid_key,
|
|
prs_perslid_naam || ' (' || prs_perslid_voornaam || ')'
|
|
AS naam_werknemer,
|
|
sd.ins_srtdeel_omschrijving,
|
|
d.ins_deel_upper,
|
|
d.ins_deel_key
|
|
key1,
|
|
d.ins_deel_aanmaak,
|
|
NULL
|
|
key2,
|
|
p.prs_perslid_telefoonnr,
|
|
p.prs_perslid_mobiel
|
|
FROM prs_perslid p,
|
|
ins_deel d,
|
|
ins_srtdeel sd,
|
|
prs_v_aanwezigafdeling v
|
|
WHERE p.prs_perslid_key = d.ins_alg_ruimte_key
|
|
AND d.ins_srtdeel_key = 70 -- Telefooncentralenummers
|
|
AND d.ins_alg_ruimte_type = 'P'
|
|
AND d.ins_deel_verwijder IS NULL
|
|
AND d.ins_deel_actief = 1
|
|
AND ( d.ins_deel_vervaldatum IS NULL
|
|
OR TRUNC (d.ins_deel_vervaldatum) > TRUNC (SYSDATE))
|
|
AND d.ins_srtdeel_key = sd.ins_srtdeel_key
|
|
AND p.prs_perslid_verwijder IS NULL
|
|
AND p.prs_afdeling_key = v.prs_afdeling_key
|
|
AND v.prs_bedrijf_key = 41 -- Personen binnen bedrijf Humanitas onder Dak
|
|
AND p.prs_perslid_key NOT IN (721) -- M.u.v. perslid voor met nr '999001' (bestemd voor objecten nog uit te lenen...)
|
|
UNION ALL
|
|
SELECT p.prs_perslid_key,
|
|
prs_perslid_naam || ' (' || prs_perslid_voornaam || ')'
|
|
AS Naam_werknemer,
|
|
sd.ins_srtdeel_omschrijving,
|
|
dd.ins_deel_upper,
|
|
d.ins_deel_key
|
|
Key1,
|
|
d.ins_deel_aanmaak,
|
|
dd.ins_deel_key
|
|
Key2,
|
|
p.prs_perslid_telefoonnr,
|
|
p.prs_perslid_mobiel
|
|
FROM prs_perslid p,
|
|
ins_deel d,
|
|
ins_srtdeel sd,
|
|
prs_v_aanwezigafdeling v,
|
|
ins_kenmerkdeel kd,
|
|
ins_deel dd
|
|
WHERE p.prs_perslid_key = d.ins_alg_ruimte_key
|
|
AND d.ins_srtdeel_key = 69 -- Mobieltelefoon
|
|
AND d.ins_alg_ruimte_type = 'P'
|
|
AND d.ins_deel_verwijder IS NULL
|
|
AND d.ins_deel_actief = 1
|
|
AND ( d.ins_deel_vervaldatum IS NULL
|
|
OR TRUNC (d.ins_deel_vervaldatum) > TRUNC (SYSDATE))
|
|
AND d.ins_srtdeel_key = sd.ins_srtdeel_key
|
|
AND p.prs_perslid_verwijder IS NULL
|
|
AND p.prs_afdeling_key = v.prs_afdeling_key
|
|
AND v.prs_bedrijf_key = 41 -- afdeling binnen bedrijf Humanitas..
|
|
AND p.prs_perslid_key NOT IN (721) -- perslid voor met nr '999001' voor objecten nog uit te lenen...
|
|
AND d.ins_deel_key = kd.ins_deel_key
|
|
AND kd.ins_kenmerk_key = 152
|
|
AND kd.ins_kenmerkdeel_verwijder IS NULL
|
|
AND fac.safe_to_number (kd.ins_kenmerkdeel_waarde) =
|
|
dd.ins_deel_key
|
|
AND dd.ins_srtdeel_key = 341 -- SIM-kaarten en nummers
|
|
AND dd.ins_deel_verwijder IS NULL
|
|
AND dd.ins_deel_actief = 1
|
|
AND ( dd.ins_deel_vervaldatum IS NULL
|
|
OR TRUNC (dd.ins_deel_vervaldatum) > TRUNC (SYSDATE)) ;
|
|
|
|
|
|
CREATE OR REPLACE PROCEDURE hmod_prs_telefoonnummers (
|
|
p_applname IN VARCHAR2,
|
|
p_applrun IN VARCHAR2
|
|
)
|
|
AS
|
|
CURSOR c_vast
|
|
IS
|
|
SELECT PRS_PERSLID_KEY, PRS_NAAM, SOORT, NUMMER_OBJECT, INS_DEEL_KEY, INS_DEEL_AANMAAK, INS_DEEL_KEY2, VASTNR_HUIDIG, MOBIELNR_HUIDIG
|
|
FROM HMOD_V_TELEFOONNR_KLANTOBJECT
|
|
WHERE SOORT = 'Telefooncentralenummers' AND (VASTNR_HUIDIG<>NUMMER_OBJECT OR VASTNR_HUIDIG is null) ;
|
|
|
|
CURSOR c_mob
|
|
IS
|
|
SELECT PRS_PERSLID_KEY, PRS_NAAM, SOORT, NUMMER_OBJECT, INS_DEEL_KEY, INS_DEEL_AANMAAK, INS_DEEL_KEY2, VASTNR_HUIDIG, MOBIELNR_HUIDIG
|
|
FROM HMOD_V_TELEFOONNR_KLANTOBJECT
|
|
WHERE SOORT = 'Mobieletelefoon' AND (MOBIELNR_HUIDIG<>NUMMER_OBJECT OR MOBIELNR_HUIDIG is null) ;
|
|
|
|
CURSOR c_delvast
|
|
IS
|
|
SELECT p.prs_perslid_key, p.prs_perslid_telefoonnr
|
|
FROM prs_perslid p
|
|
WHERE
|
|
p.prs_perslid_key not in (select v.prs_perslid_key from HMOD_V_TELEFOONNR_KLANTOBJECT v where v.soort = 'Telefooncentralenummers')
|
|
and p.prs_afdeling_key in (select v.prs_afdeling_key from prs_v_aanwezigafdeling v where v.prs_bedrijf_key = 41 and v.prs_afdeling_verwijder is null) -- Onderdeel bedrijf Humanitas...
|
|
and p.prs_perslid_telefoonnr is not null ;
|
|
|
|
CURSOR c_delmob
|
|
IS
|
|
SELECT p.prs_perslid_key, p.prs_perslid_mobiel
|
|
FROM prs_perslid p
|
|
WHERE
|
|
p.prs_perslid_key not in (select v.prs_perslid_key from HMOD_V_TELEFOONNR_KLANTOBJECT v where v.soort = 'Mobieletelefoon')
|
|
and p.prs_afdeling_key in (select v.prs_afdeling_key from prs_v_aanwezigafdeling v where v.prs_bedrijf_key = 41 and v.prs_afdeling_verwijder is null) -- Onderdeel bedrijf Humanitas...
|
|
and p.prs_perslid_mobiel is not null ;
|
|
|
|
v_telefoon_vast VARCHAR2(15);
|
|
v_telefoon_mobiel VARCHAR2(15);
|
|
|
|
v_errormsg VARCHAR (200);
|
|
v_errorhint VARCHAR (200);
|
|
oracle_err_mes VARCHAR2 (150);
|
|
currentversion fac_module.fac_module_version%TYPE;
|
|
v_aanduiding VARCHAR (100);
|
|
v_count NUMBER;
|
|
|
|
BEGIN
|
|
v_count:=0;
|
|
|
|
FOR rec IN c_vast
|
|
LOOP
|
|
|
|
v_aanduiding :=
|
|
'Vast nummer gewijzigd, ' || CHR(10)
|
|
|| 'van ' || COALESCE(rec.vastnr_huidig,'<leeg>') || ' naar ' || rec.nummer_object ;
|
|
v_errorhint := 'telefoonnr vast aanpassen';
|
|
|
|
UPDATE prs_perslid p
|
|
SET prs_perslid_telefoonnr = rec.nummer_object
|
|
WHERE p.prs_perslid_key = rec.prs_perslid_key ;
|
|
|
|
fac.trackaction (
|
|
'PRSUPD',
|
|
rec.prs_perslid_key,
|
|
3,
|
|
SYSDATE,
|
|
v_aanduiding);
|
|
|
|
END LOOP;
|
|
|
|
FOR rec IN c_mob
|
|
LOOP
|
|
v_aanduiding :=
|
|
'Mobielnummer gewijzigd, ' || CHR(10)
|
|
|| 'van ' || COALESCE(rec.mobielnr_huidig,'<leeg>') || ' naar ' || rec.nummer_object ;
|
|
v_errorhint := 'telefoonnr mobiel aanpassen';
|
|
|
|
UPDATE prs_perslid p
|
|
SET prs_perslid_mobiel = rec.nummer_object
|
|
WHERE p.prs_perslid_key = rec.prs_perslid_key ;
|
|
|
|
fac.trackaction (
|
|
'PRSUPD',
|
|
rec.prs_perslid_key,
|
|
3,
|
|
SYSDATE,
|
|
v_aanduiding);
|
|
|
|
END LOOP;
|
|
|
|
FOR rec IN c_delvast
|
|
LOOP
|
|
v_aanduiding :=
|
|
'Vast nummer verwijderd ' || CHR(10)
|
|
|| 'Was ' || rec.prs_perslid_telefoonnr ;
|
|
v_errorhint := 'vast nummer verwijderen';
|
|
|
|
UPDATE prs_perslid p
|
|
SET p.prs_perslid_telefoonnr = ''
|
|
WHERE p.prs_perslid_key = rec.prs_perslid_key ;
|
|
|
|
fac.trackaction (
|
|
'PRSUPD',
|
|
rec.prs_perslid_key,
|
|
3,
|
|
SYSDATE,
|
|
v_aanduiding);
|
|
|
|
END LOOP;
|
|
|
|
FOR rec IN c_delmob
|
|
LOOP
|
|
v_aanduiding :=
|
|
'Mobielnummer verwijderd ' || CHR(10)
|
|
|| 'Was ' || rec.prs_perslid_mobiel ;
|
|
v_errorhint := 'mobielnummer verwijderen';
|
|
|
|
UPDATE prs_perslid p
|
|
SET p.prs_perslid_mobiel = ''
|
|
WHERE p.prs_perslid_key = rec.prs_perslid_key ;
|
|
|
|
fac.trackaction (
|
|
'PRSUPD',
|
|
rec.prs_perslid_key,
|
|
3,
|
|
SYSDATE,
|
|
v_aanduiding);
|
|
|
|
END LOOP;
|
|
|
|
END;
|
|
/
|
|
|
|
-- script om dagelijks terugkerende scripts aan te roepen.
|
|
CREATE OR REPLACE PROCEDURE hmod_select_daily_task (p_applname IN VARCHAR2, p_applrun IN VARCHAR2)
|
|
AS
|
|
BEGIN
|
|
-- job om de telefoonnummers in persoonkaart te synchroniseren met de eigendommen (gekoppelde telefoonobjecten vast en mobiel)
|
|
hmod_prs_telefoonnummers (p_applname, p_applrun);
|
|
END;
|
|
/
|
|
|
|
-- Rapport van de import-personen ADP.
|
|
---- Zowel te gebruiken bij LEZEN als bij VERWERKEN
|
|
---- Deze view wordt tevens gebruikt als cursor voor de import-proceduren
|
|
CREATE OR REPLACE VIEW hmod_v_prsimport
|
|
(
|
|
PRS_PERSLID_KEY,
|
|
PRS_PERSLID_NR,
|
|
PRS_PERSLID_NAAM,
|
|
PRS_PERSLID_VOORNAAM,
|
|
PRS_PERSLID_OSLOGIN,
|
|
PRS_DATUM_UITDIENST,
|
|
PRS_STATUS,
|
|
FORMATIEPLAATS_HUIDIG,
|
|
FORMATIEPLAATS_CSV,
|
|
LETTERCODE,
|
|
TOKEN,
|
|
MOB,
|
|
HIT,
|
|
LAP_EN_SIM,
|
|
LAPT,
|
|
TNC,
|
|
TNC_OMSCHRIJVING,
|
|
FACILITOR,
|
|
ADP,
|
|
ABSENTIEMANAGER,
|
|
REGAS,
|
|
CHECKS,
|
|
ACCOUNTVIEW,
|
|
ELVY,
|
|
HODNET,
|
|
PROACTIVE,
|
|
OPMERKING_KOFFERSYSTEEM,
|
|
DATUM_GELEZEN,
|
|
DATUM_VERWERKT
|
|
)
|
|
AS -- Bestaande personen die ook weer in deze PRS-import zitten
|
|
SELECT basis.prs_perslid_key,
|
|
basis.prs_perslid_nr,
|
|
basis.prs_perslid_naam,
|
|
i.prs_perslid_voornaam,
|
|
basis.prs_perslid_oslogin,
|
|
basis.DatumUitDienst,
|
|
CASE
|
|
WHEN d.datum_verwerkt is not null THEN i.prs_perslid_partner_naam -- Deze vul ik tijdens de import met de prs_status
|
|
WHEN d.datum_verwerkt is null and k.code is null THEN 'Basis - Fout'
|
|
ELSE basis.koffersysteem_status
|
|
END as prs_status,
|
|
COALESCE(basis.formatieplaats_huidig,'nvt'),
|
|
COALESCE (k.code, i.prs_kenmerk3 || ' LET OP! formatieplaats uit CSV staat niet in actueel koffersysteem') AS formatieplaats_CSV,
|
|
k.lettercode,
|
|
k.token,
|
|
k.mob,
|
|
k.hit,
|
|
k.lap_en_sim,
|
|
k.lapt,
|
|
k.tnc,
|
|
k.tnc_omschrijving,
|
|
k.facilitor,
|
|
k.adp,
|
|
k.absentiemanager,
|
|
k.regas,
|
|
k.checks,
|
|
k.accountview,
|
|
k.elvy,
|
|
k.hodnet,
|
|
k.proactive,
|
|
k.opmerking,
|
|
d.datum_gelezen,
|
|
d.datum_verwerkt
|
|
FROM (SELECT p.prs_perslid_key,
|
|
p.prs_perslid_nr,
|
|
p.prs_perslid_naam,
|
|
p.prs_perslid_oslogin,
|
|
a.prs_bedrijf_key,
|
|
b.prs_bedrijf_naam,
|
|
(SELECT prs_kenmerklink_waarde
|
|
FROM prs_kenmerklink
|
|
WHERE prs_link_key = p.prs_perslid_key
|
|
AND prs_kenmerk_key = 1025
|
|
AND prs_kenmerklink_niveau = 'P'
|
|
AND prs_kenmerklink_verwijder IS NULL)
|
|
AS formatieplaats_huidig,
|
|
(SELECT prs_kenmerklink_waarde
|
|
FROM prs_kenmerklink
|
|
WHERE prs_link_key = p.prs_perslid_key
|
|
AND prs_kenmerk_key = 1100
|
|
AND prs_kenmerklink_niveau = 'P'
|
|
AND prs_kenmerklink_verwijder IS NULL)
|
|
AS DatumUitDienst,
|
|
(SELECT kd.fac_usrdata_omschr
|
|
FROM prs_kenmerklink k, fac_usrdata kd
|
|
WHERE k.prs_link_key = p.prs_perslid_key
|
|
AND k.prs_kenmerk_key = 1081 -- Kenmerkveld Status
|
|
AND k.prs_kenmerklink_niveau = 'P'
|
|
AND k.prs_kenmerklink_verwijder IS NULL
|
|
AND k.prs_kenmerklink_waarde = kd.fac_usrdata_key
|
|
AND kd.fac_usrtab_key = 82) as Koffersysteem_status
|
|
FROM prs_perslid p,
|
|
prs_v_afdeling a,
|
|
prs_bedrijf b
|
|
WHERE p.prs_afdeling_key = a.prs_afdeling_key
|
|
AND a.prs_bedrijf_key = b.prs_bedrijf_key
|
|
AND p.prs_perslid_verwijder IS NULL) basis,
|
|
fac_imp_perslid i,
|
|
hmod_imp_koffersysteem k,
|
|
(SELECT i.fac_import_key,
|
|
MAX (f.fac_import_datum_gelezen) AS datum_gelezen,
|
|
MAX (f.fac_import_datum_verwerkt) AS datum_verwerkt
|
|
FROM fac_import f, fac_imp_perslid i
|
|
WHERE f.fac_import_key = i.fac_import_key AND f.fac_import_app_key = 41
|
|
GROUP BY i.fac_import_key,
|
|
f.fac_import_datum_gelezen,
|
|
f.fac_import_datum_verwerkt) d
|
|
WHERE basis.prs_perslid_nr = i.prs_perslid_nr
|
|
AND i.prs_kenmerk3 = k.code (+)
|
|
AND basis.prs_bedrijf_key = 41 -- Alleen voor Humanitas onder Dak mensen
|
|
UNION ALL -- NIEUWE PERSONEN die nog niet in BEDRIJF HUMANITAS zitten en die dus bij import toegevoegd gaan worden en met juiste koffersysteem gevuld moet worden...
|
|
---- Nieuwe personen zitten bij INLEZEN aan deze kant (omdat ze nog geen prs_perslid_key hebben). Bij verwerken hebben ze dit wel en dan zitten de NIEUWE personen in bovenstaande union..
|
|
SELECT -1 AS prs_perslid_key,
|
|
i.prs_perslid_nr,
|
|
i.prs_perslid_naam,
|
|
i.prs_perslid_voornaam,
|
|
NULL as prs_perslid_oslogin, -- Nieuwe mensen krijgen handmatig via voorkant een login
|
|
'' as DatumUitDienst,
|
|
CASE
|
|
WHEN k.code is null THEN 'Nieuw - Fout'
|
|
ELSE 'Nieuw'
|
|
END as prs_status,
|
|
'nvt' AS formatieplaats_huidig,
|
|
COALESCE (k.code, i.prs_kenmerk3 || ' LET OP! formatieplaats uit CSV staat niet in actueel koffersysteem') AS formatieplaats_CSV,
|
|
k.lettercode,
|
|
k.token,
|
|
k.mob,
|
|
k.hit,
|
|
k.lap_en_sim,
|
|
k.lapt,
|
|
k.tnc,
|
|
k.tnc_omschrijving,
|
|
k.facilitor,
|
|
k.adp,
|
|
k.absentiemanager,
|
|
k.regas,
|
|
k.checks,
|
|
k.accountview,
|
|
k.elvy,
|
|
k.hodnet,
|
|
k.proactive,
|
|
k.opmerking,
|
|
d.datum_gelezen,
|
|
d.datum_verwerkt
|
|
FROM fac_imp_perslid i, hmod_imp_koffersysteem k,
|
|
(SELECT i.fac_import_key,
|
|
MAX (f.fac_import_datum_gelezen) AS datum_gelezen,
|
|
MAX (f.fac_import_datum_verwerkt) AS datum_verwerkt
|
|
FROM fac_import f, fac_imp_perslid i
|
|
WHERE f.fac_import_key = i.fac_import_key AND f.fac_import_app_key = 41
|
|
GROUP BY i.fac_import_key,
|
|
f.fac_import_datum_gelezen,
|
|
f.fac_import_datum_verwerkt) d
|
|
WHERE i.prs_kenmerk3 = k.code(+)
|
|
AND i.fac_import_key = d.fac_import_key
|
|
AND UPPER(i.prs_perslid_nr) NOT IN
|
|
(SELECT UPPER(p.prs_perslid_nr)
|
|
FROM prs_perslid p,
|
|
prs_bedrijf b,
|
|
prs_v_afdeling a
|
|
WHERE p.prs_afdeling_key = a.prs_afdeling_key
|
|
AND a.prs_bedrijf_key = b.prs_bedrijf_key
|
|
AND p.prs_perslid_nr IS NOT NULL
|
|
AND p.prs_perslid_verwijder IS NULL
|
|
AND b.prs_bedrijf_key = 41 -- Humanitas onder Dak
|
|
)
|
|
UNION ALL -- Alle HUMANITAS medewerkers die wel in Facilitor staan, maar niet in CSV-import zitten - Indien nodig handmatig te verwijderen
|
|
SELECT basis.prs_perslid_key,
|
|
basis.prs_perslid_nr,
|
|
basis.prs_perslid_naam,
|
|
basis.prs_perslid_voornaam,
|
|
basis.prs_perslid_oslogin,
|
|
basis.DatumUitDienst,
|
|
'Verwijderen' AS prs_status,
|
|
basis.formatieplaats_huidig,
|
|
'nvt' AS formatieplaats_CSV,
|
|
k.lettercode,
|
|
k.token,
|
|
k.mob,
|
|
k.hit,
|
|
k.lap_en_sim,
|
|
k.lapt,
|
|
k.tnc,
|
|
k.tnc_omschrijving,
|
|
k.facilitor,
|
|
k.adp,
|
|
k.absentiemanager,
|
|
k.regas,
|
|
k.checks,
|
|
k.accountview,
|
|
k.elvy,
|
|
k.hodnet,
|
|
k.proactive,
|
|
k.opmerking,
|
|
d.datum_gelezen,
|
|
d.datum_verwerkt
|
|
FROM (SELECT p.prs_perslid_key,
|
|
COALESCE(p.prs_perslid_nr,'999') as prs_perslid_nr,
|
|
p.prs_perslid_naam,
|
|
p.prs_perslid_voornaam,
|
|
p.prs_perslid_oslogin,
|
|
a.prs_bedrijf_key,
|
|
b.prs_bedrijf_naam,
|
|
(SELECT prs_kenmerklink_waarde
|
|
FROM prs_kenmerklink
|
|
WHERE prs_link_key = p.prs_perslid_key
|
|
AND prs_kenmerk_key = 1025
|
|
AND prs_kenmerklink_niveau = 'P'
|
|
AND prs_kenmerklink_verwijder IS NULL)
|
|
AS formatieplaats_huidig,
|
|
(SELECT prs_kenmerklink_waarde
|
|
FROM prs_kenmerklink
|
|
WHERE prs_link_key = p.prs_perslid_key
|
|
AND prs_kenmerk_key = 1100
|
|
AND prs_kenmerklink_niveau = 'P'
|
|
AND prs_kenmerklink_verwijder IS NULL)
|
|
AS DatumUitDienst,
|
|
(SELECT kd.fac_usrdata_omschr
|
|
FROM prs_kenmerklink k, fac_usrdata kd
|
|
WHERE k.prs_link_key = p.prs_perslid_key
|
|
AND k.prs_kenmerk_key = 1081 -- Kenmerkveld Status
|
|
AND k.prs_kenmerklink_niveau = 'P'
|
|
AND k.prs_kenmerklink_verwijder IS NULL
|
|
AND k.prs_kenmerklink_waarde = kd.fac_usrdata_key
|
|
AND kd.fac_usrtab_key = 82) as Koffersysteem_status
|
|
FROM prs_perslid p,
|
|
prs_v_afdeling a,
|
|
prs_bedrijf b
|
|
WHERE p.prs_afdeling_key = a.prs_afdeling_key
|
|
AND a.prs_bedrijf_key = b.prs_bedrijf_key
|
|
AND b.prs_bedrijf_key = 41
|
|
AND p.prs_perslid_verwijder IS NULL) basis,
|
|
hmod_imp_koffersysteem k,
|
|
( SELECT i.fac_import_key,
|
|
MAX (f.fac_import_datum_gelezen) AS datum_gelezen,
|
|
MAX (f.fac_import_datum_verwerkt) AS datum_verwerkt
|
|
FROM fac_import f, fac_imp_perslid i
|
|
WHERE f.fac_import_key = i.fac_import_key
|
|
AND f.fac_import_app_key = 41
|
|
GROUP BY i.fac_import_key,
|
|
f.fac_import_datum_gelezen,
|
|
f.fac_import_datum_verwerkt) d
|
|
WHERE basis.formatieplaats_huidig = k.code(+)
|
|
AND basis.Koffersysteem_status != 'Nvt'
|
|
AND basis.prs_perslid_nr NOT IN (SELECT i.prs_perslid_nr
|
|
FROM fac_imp_perslid i) ;
|
|
|
|
CREATE OR REPLACE PROCEDURE hmod_import_perslid (p_import_key IN NUMBER)
|
|
AS
|
|
v_errormsg VARCHAR2 (1000) := '-';
|
|
v_errorhint VARCHAR2 (1000) := '-';
|
|
oracle_err_num NUMBER;
|
|
oracle_err_mes VARCHAR2 (200);
|
|
v_aanduiding VARCHAR2 (1000);
|
|
v_count NUMBER;
|
|
v_count_leeg NUMBER;
|
|
v_count_fout NUMBER;
|
|
v_count_nieuw NUMBER;
|
|
v_count_verwijder NUMBER;
|
|
v_count_codeverschilt NUMBER;
|
|
|
|
CURSOR c -- Alle medewerkers HUMANITAS die in aangeleverde ADP-personen-bestand zitten
|
|
IS
|
|
SELECT prs_perslid_key,
|
|
prs_perslid_nr,
|
|
prs_perslid_voornaam,
|
|
prs_perslid_oslogin,
|
|
prs_status,
|
|
formatieplaats_huidig,
|
|
formatieplaats_csv,
|
|
lettercode,
|
|
token,
|
|
mob,
|
|
hit,
|
|
lap_en_sim,
|
|
lapt,
|
|
tnc,
|
|
tnc_omschrijving,
|
|
facilitor,
|
|
adp,
|
|
absentiemanager,
|
|
regas,
|
|
checks,
|
|
accountview,
|
|
elvy,
|
|
hodnet,
|
|
proactive
|
|
FROM
|
|
hmod_v_prsimport WHERE instr(prs_status,'Verwijderen') = 0 and prs_status is not null ;
|
|
|
|
BEGIN
|
|
v_errorhint := 'Generieke import';
|
|
|
|
-- Standaard Import. De sequence array staat beschreven in PRS_PAC.SRC bij de import_perslid-PROCEDURE.
|
|
prs.import_perslid (
|
|
p_import_key,
|
|
'0;0;0;0;0;0;1;2;0;3;0;0;0;0;0;0;0;5;0;7;6;0;0;4;0;0;8;9;10;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0',
|
|
'Afdelingscode;Volbrief;Roepnaam;Geslacht;Zakelijk e-mailadres;Omschrijving verkort;Werknemernummer;Geboortenaam;Aanhef brief;Formatie code%');
|
|
|
|
-- DEF2: Afdelingscode;Volbrief;Roepnaam;Geslacht;Zakelijk e-mailadres;Omschrijving verkort;Werknemernummer;Geboortenaam;Aanhef brief;Formatie code'
|
|
----- 1 2 3 4 5 6 7 8 9 10
|
|
|
|
COMMIT;
|
|
|
|
FOR rec IN c
|
|
LOOP
|
|
BEGIN
|
|
-- Koffersysteem-kenmerken vullen
|
|
IF rec.prs_status = 'Basis' or rec.prs_status = 'Nieuw' -- Dan alle koffersysteemvelden naar personenkaart wegschrijven...
|
|
THEN
|
|
|
|
UPDATE fac_imp_perslid p
|
|
SET prs_kenmerk6 = rec.token, -- Token
|
|
prs_kenmerk7 = rec.mob, -- Mobiel
|
|
prs_kenmerk8 = rec.hit, -- Hit
|
|
prs_kenmerk9 = rec.lap_en_sim, -- Lap+Sim
|
|
prs_kenmerk10 = rec.lapt, -- Lapt
|
|
prs_kenmerk11 = rec.tnc, -- Toegangsniveau
|
|
prs_kenmerk12 = rec.facilitor, -- Facilitor
|
|
prs_kenmerk13 = rec.adp, -- ADP
|
|
prs_kenmerk14 = rec.absentiemanager, -- Absentiemanager
|
|
prs_kenmerk15 = rec.regas, -- Regas
|
|
prs_kenmerk16 = rec.checks, -- Checks
|
|
prs_kenmerk17 = rec.accountview, -- Accountview
|
|
prs_kenmerk18 = rec.elvy, -- Elvy
|
|
prs_kenmerk19 = rec.hodnet, -- HodNet
|
|
prs_kenmerk20 = rec.proactive -- Proactive
|
|
WHERE p.prs_perslid_nr = rec.prs_perslid_nr;
|
|
END IF;
|
|
|
|
-- De prs_status (= status voor deze import) ook wegschrijven in fac_imp_perslid.
|
|
---- Om updateprocedure mee te sturen... + om rapport import prs goed mee te vullen..
|
|
---- Omdat er voor koffersysteem al 20 kenmerken gevuld worden, moet ik hier ander veld voor (mis)bruiken.
|
|
UPDATE fac_imp_perslid p
|
|
SET prs_perslid_partner_naam = rec.prs_status -- Partner_naam voor misbruiken. Wordt in standaard update niet gebruikt (omdat PRS_PERSLID_NAAMGEBRUIK_CODE op 0 meegaat..)
|
|
WHERE p.prs_perslid_nr = rec.prs_perslid_nr;
|
|
|
|
-- Voorletter vullen vanuit Roepnaam
|
|
UPDATE fac_imp_perslid p
|
|
SET prs_perslid_voorletters = substr(rec.prs_perslid_voornaam,1,1)
|
|
WHERE p.prs_perslid_nr = rec.prs_perslid_nr and rec.prs_perslid_voornaam is not null;
|
|
|
|
-- Basiskoffer - Lettercode vullen -
|
|
UPDATE fac_imp_perslid p
|
|
SET prs_kenmerk4 = rec.lettercode
|
|
WHERE p.prs_perslid_nr = rec.prs_perslid_nr;
|
|
|
|
-- Loginnaam vullen vanuit huidige personenkaart
|
|
UPDATE fac_imp_perslid p
|
|
SET prs_perslid_oslogin = rec.prs_perslid_oslogin
|
|
WHERE p.prs_perslid_nr = rec.prs_perslid_nr ;
|
|
|
|
END;
|
|
END LOOP;
|
|
|
|
BEGIN
|
|
v_errormsg := 'Checks op importbestand ';
|
|
v_aanduiding := 'Raadpleeg rapport en pas csv-bestand aan en lees opnieuw in';
|
|
v_count := 0;
|
|
v_count_leeg:=0;
|
|
v_count_fout := 0;
|
|
v_count_nieuw := 0;
|
|
v_count_verwijder :=0;
|
|
v_count_codeverschilt := 0;
|
|
|
|
-- Nog even alles tellen. NOG NAGAAN/AFSPREKEN wanneer de import moet doorlopen en wanneer men het eerst wil raadplegen..
|
|
SELECT count (*) INTO v_count FROM hmod_v_prsimport;
|
|
SELECT count (*) INTO v_count_nieuw FROM fac_imp_perslid WHERE (prs_perslid_partner_naam = 'Nieuw' or prs_perslid_partner_naam = 'Nieuw - Fout') ;
|
|
SELECT count (*) INTO v_count_fout FROM fac_imp_perslid WHERE INSTR (prs_perslid_partner_naam, 'Fout') > 0 ;
|
|
SELECT count (*) INTO v_count_verwijder FROM hmod_v_prsimport WHERE INSTR (prs_status, 'Verwijderen') > 0 ;
|
|
SELECT count (*) INTO v_count_leeg FROM fac_imp_perslid WHERE prs_perslid_partner_naam is null ;
|
|
SELECT count (*) INTO v_count_codeverschilt FROM hmod_v_prsimport WHERE prs_status = 'Basis' and formatieplaats_huidig <> formatieplaats_csv ;
|
|
|
|
IF v_count_leeg > 0 THEN
|
|
fac.imp_writelog (
|
|
p_import_key, 'W', 'Aantal personen zonder import-status is: ' || v_count_leeg,
|
|
'ACTIE: ' || v_aanduiding);
|
|
END IF;
|
|
|
|
IF v_count_fout > 0 THEN
|
|
fac.imp_writelog (
|
|
p_import_key, 'W', 'Aantal personen zonder gekoppelde formatieplaats is: ' || v_count_fout,
|
|
'ACTIE: ' || v_aanduiding);
|
|
END IF;
|
|
|
|
IF v_count_codeverschilt > 0 THEN
|
|
fac.imp_writelog (
|
|
p_import_key, 'W', 'Aantal personen die op BASIS staan, hebben in csv andere formatieplaats dan nu in Facilitor: ' || v_count_codeverschilt,
|
|
'ACTIE: ' || v_aanduiding);
|
|
END IF;
|
|
|
|
IF v_count_verwijder > 0 THEN
|
|
fac.imp_writelog (
|
|
p_import_key, 'W', 'Aantal te verwijderen personen is: '|| v_count_verwijder,
|
|
'Ter info');
|
|
END IF;
|
|
|
|
IF v_count_nieuw > 0 THEN
|
|
fac.imp_writelog (
|
|
p_import_key, 'W', 'Aantal nieuw in te lezen personen is: '|| v_count_nieuw,
|
|
'Ter info');
|
|
END IF;
|
|
|
|
IF v_count > 0 THEN
|
|
fac.imp_writelog (
|
|
p_import_key, 'W', 'Aantal totaal te muteren personen is: '|| v_count,
|
|
'Ter info');
|
|
END IF;
|
|
|
|
END;
|
|
|
|
-- Nog wat updates uitvoeren op tussentabel...
|
|
UPDATE fac_imp_perslid
|
|
SET prs_perslid_geslacht =
|
|
CASE
|
|
WHEN prs_perslid_titel = 'Man' THEN 1
|
|
WHEN prs_perslid_titel = 'Vrouw' THEN 0
|
|
ELSE NULL
|
|
END,
|
|
prs_kenmerk1 = -- Meisjesnaam leegmaken indien man
|
|
CASE
|
|
WHEN prs_perslid_titel = 'Man' THEN ''
|
|
ELSE prs_kenmerk1
|
|
END
|
|
;
|
|
|
|
-- Titel kan nu leeggemaakt worden..
|
|
UPDATE fac_imp_perslid
|
|
SET prs_perslid_titel = '' ;
|
|
|
|
EXCEPTION
|
|
WHEN OTHERS
|
|
THEN
|
|
oracle_err_num := SQLCODE;
|
|
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
|
|
v_errormsg := 'ORACLE (error ' || oracle_err_num || '/' || oracle_err_mes || ') ';
|
|
fac.imp_writelog (p_import_key, 'E', v_errormsg || v_errorhint, 'Inleesproces personen afgebroken!');
|
|
END hmod_import_perslid;
|
|
/
|
|
|
|
-- DE UPDATE
|
|
CREATE OR REPLACE PROCEDURE hmod_update_perslid (p_import_key IN NUMBER)
|
|
IS
|
|
|
|
CURSOR c_flex -- Alle records pakken. O.a. voor updaten van de algemene flex-kenmerkvelden
|
|
IS
|
|
SELECT p.prs_perslid_key, p.prs_perslid_nr, i.prs_perslid_partner_naam,i.prs_kenmerk1, i.prs_kenmerk2, i.prs_kenmerk3
|
|
FROM prs_v_aanwezigperslid p, fac_imp_perslid i
|
|
WHERE p.prs_perslid_nr = i.prs_perslid_nr
|
|
ORDER BY 2;
|
|
|
|
|
|
CURSOR c_flex_koffer -- De flexkenmerken koffersysteem - alleen updaten voor die gevuld zijn
|
|
IS
|
|
SELECT p.prs_perslid_key, p.prs_perslid_nr, i.prs_perslid_partner_naam, i.prs_kenmerk4, i.prs_kenmerk6,i.prs_kenmerk7,i.prs_kenmerk8,i.prs_kenmerk9,i.prs_kenmerk10,i.prs_kenmerk11,i.prs_kenmerk12,i.prs_kenmerk13,i.prs_kenmerk14,i.prs_kenmerk15,i.prs_kenmerk16,i.prs_kenmerk17,i.prs_kenmerk18,i.prs_kenmerk19,i.prs_kenmerk20
|
|
FROM prs_v_aanwezigperslid p, fac_imp_perslid i
|
|
WHERE p.prs_perslid_nr = i.prs_perslid_nr AND (i.prs_perslid_partner_naam = 'Basis' or i.prs_perslid_partner_naam = 'Nieuw')
|
|
ORDER BY 2;
|
|
|
|
-- CURSOR DELETE
|
|
----- Goed standaard voorbeeld van STANDAARD DELETE bij Vesteda (VEST)
|
|
---- Voor HMOD: <NOG VASTSTELLEN! HOE/WAT !!!>
|
|
---- Indien er clienten in Faciltior zitten, deze sowieso uitsluiten van verwijderactie
|
|
---- Handmatig aangemaakte persoon 'Beumer applicatiebeheer' en 'Claudia ten Cate' + ......?
|
|
---- Omdat er via HRM-workflow wordt gewerkt, beste om dit via kenmerkveld te laten lopen met CHECK ADP-import
|
|
CURSOR c_del -- Alle medewerkers van bedrijf HUMANITAS die niet in aangeleverde ADP-personen-bestand zitten
|
|
IS
|
|
SELECT prs_perslid_key,
|
|
prs_perslid_nr,
|
|
prs_status
|
|
FROM
|
|
hmod_v_prsimport WHERE prs_status = 'Verwijderen' ;
|
|
|
|
|
|
v_errorhint VARCHAR2 (1000) := '';
|
|
v_errormsg VARCHAR2 (1000);
|
|
oracle_err_num NUMBER;
|
|
oracle_err_mes VARCHAR2 (200);
|
|
v_aanduiding VARCHAR2 (1000);
|
|
v_count NUMBER;
|
|
v_count_leeg NUMBER;
|
|
v_count_fout NUMBER;
|
|
v_count_nieuw NUMBER;
|
|
v_count_verwijder NUMBER;
|
|
v_count_codeverschilt NUMBER;
|
|
|
|
BEGIN
|
|
-- Generieke update.
|
|
v_errorhint :='Fout in generieke update';
|
|
|
|
-- Nog even alles tellen. NOG NAGAAN/AFSPREKEN wanneer de import moet doorlopen en wanneer men het eerst wil raadplegen..
|
|
v_aanduiding := 'Import afgebroken (conform afspraak) - Zie rapport voor specificaties';
|
|
SELECT count (*) INTO v_count FROM hmod_v_prsimport;
|
|
SELECT count (*) INTO v_count_nieuw FROM fac_imp_perslid WHERE (prs_perslid_partner_naam = 'Nieuw' or prs_perslid_partner_naam = 'Nieuw - Fout');
|
|
SELECT count (*) INTO v_count_fout FROM fac_imp_perslid WHERE INSTR (prs_perslid_partner_naam, 'Fout') > 0 ;
|
|
SELECT count (*) INTO v_count_verwijder FROM hmod_v_prsimport WHERE INSTR (prs_status, 'Verwijderen') > 0 ;
|
|
SELECT count (*) INTO v_count_leeg FROM fac_imp_perslid WHERE prs_perslid_partner_naam is null ;
|
|
SELECT count (*) INTO v_count_codeverschilt FROM hmod_v_prsimport WHERE prs_status = 'Basis' and formatieplaats_huidig <> formatieplaats_csv ;
|
|
|
|
IF v_count < 10
|
|
THEN
|
|
fac.imp_writelog (p_import_key, 'E', 'Het aantal te importeren personen is te klein: ' || TO_CHAR (v_count), v_aanduiding);
|
|
RETURN;
|
|
END IF;
|
|
|
|
IF v_count_fout > 3
|
|
THEN
|
|
fac.imp_writelog (p_import_key, 'E', 'Er zitten in import teveel medewerkers met prs_status FOUT: ' || TO_CHAR (v_count_fout), v_aanduiding);
|
|
RETURN;
|
|
END IF;
|
|
|
|
IF v_count_nieuw > 10 -- Bijvoorbeeld als alle personeelsnr's in csv zonder vooloopnull zijn... (NOG CHECKEN in KPN)
|
|
THEN
|
|
fac.imp_writelog (p_import_key, 'E', 'Er zijn teveel NIEUWE medewerkers in import, kan niet kloppen: ' || TO_CHAR (v_count_nieuw), v_aanduiding);
|
|
RETURN;
|
|
END IF;
|
|
|
|
IF v_count_leeg > 0
|
|
THEN
|
|
fac.imp_writelog (p_import_key, 'E', 'Er zitten in import medewerkers ZONDER prs_status: ' || TO_CHAR (v_count_leeg), v_aanduiding);
|
|
RETURN;
|
|
END IF;
|
|
|
|
IF v_count_codeverschilt > 10 THEN -- Zou 0 moeten zijn straks in praktijk!!!!!
|
|
fac.imp_writelog (p_import_key, 'E', 'Er zijn (teveel) personen die op BASIS staan, maar in csv andere formatieplaats hebben dan nu in Facilitor: ' || TO_CHAR (v_count_codeverschilt), v_aanduiding);
|
|
RETURN;
|
|
END IF;
|
|
|
|
|
|
-- Generieke update. NR - key personeelsnr - NULL is geen werkplekken verwijderd
|
|
prs.update_perslid (p_import_key, 'NR', 'NULL');
|
|
|
|
-- Update flexvelden algemeen
|
|
FOR rec IN c_flex
|
|
LOOP
|
|
BEGIN
|
|
v_aanduiding := 'Import prs - ' || TO_CHAR(sysdate, 'dd/mm/yyyy - hh:mi:ss') || ' - status: ' || rec.prs_perslid_partner_naam;
|
|
|
|
v_errorhint:='Fout bijwerken meisjes';
|
|
PRS.upsertkenmerk (1023, rec.prs_perslid_key, rec.prs_kenmerk1); -- Meisjesnaam
|
|
v_errorhint:='Fout bijwerken briefaanhef';
|
|
PRS.upsertkenmerk (1024, rec.prs_perslid_key, rec.prs_kenmerk2); -- Brief aanhef
|
|
v_errorhint:='Fout bijwerken formatieplaats';
|
|
PRS.upsertkenmerk (1025, rec.prs_perslid_key, rec.prs_kenmerk3); -- Formatieplaats
|
|
|
|
-- Nog paar kenmerkvelden bijwerken
|
|
DELETE FROM prs_kenmerklink
|
|
WHERE prs_link_key = rec.prs_perslid_key
|
|
AND prs_kenmerk_key = 1082 -- Veld om aan te geven dat persoon verwijderd kan worden. Voor de personen die meekomen in de fac_imp_perslid moet deze leeggemaakt worden...
|
|
AND prs_kenmerklink_niveau = 'P'
|
|
AND prs_kenmerklink_verwijder IS NULL;
|
|
|
|
IF rec.prs_perslid_partner_naam = 'Nieuw' or rec.prs_perslid_partner_naam = 'Nieuw - Fout'
|
|
THEN
|
|
v_errorhint:='Nieuwe personen krijgen altijd basiskoffer mee';
|
|
PRS.upsertkenmerk (1081, rec.prs_perslid_key, '143'); -- Koffersysteem (status) = key 143
|
|
|
|
-- Toevoegen nieuwe personen aan de autorisatiegroep Werknemer - key 79
|
|
INSERT INTO fac_gebruikersgroep (fac_groep_key, fac_gebruikersgroep_aanmaak, prs_perslid_key)
|
|
VALUES (79, sysdate, rec.prs_perslid_key);
|
|
|
|
END IF;
|
|
|
|
fac.trackaction ('PRSUPD', rec.prs_perslid_key, 3,sysdate, v_aanduiding) ;
|
|
|
|
END;
|
|
|
|
END LOOP;
|
|
|
|
-- Update flexvelden Koffersysteem
|
|
FOR rec IN c_flex_koffer
|
|
LOOP
|
|
BEGIN
|
|
v_errorhint:='Fout bijwerken Token';
|
|
PRS.upsertkenmerk (1068, rec.prs_perslid_key, rec.prs_kenmerk6); -- Token, 6 , 1068
|
|
v_errorhint:='Fout bijwerken Mobiel';
|
|
PRS.upsertkenmerk (1067, rec.prs_perslid_key, rec.prs_kenmerk7); -- Mobiel 7 , 1067
|
|
v_errorhint:='Fout bijwerken Hit';
|
|
PRS.upsertkenmerk (1069, rec.prs_perslid_key, rec.prs_kenmerk8); -- Hit 8 , 1069
|
|
v_errorhint:='Fout bijwerken Lap+Sim';
|
|
PRS.upsertkenmerk (1063, rec.prs_perslid_key, rec.prs_kenmerk9); -- Lap+Sim 9 , 1063
|
|
v_errorhint:='Fout bijwerken Lapt';
|
|
PRS.upsertkenmerk (1065, rec.prs_perslid_key, rec.prs_kenmerk10); -- Lapt 10, 1065
|
|
v_errorhint:='Fout bijwerken Toegangsniveau';
|
|
PRS.upsertkenmerk (1061, rec.prs_perslid_key, rec.prs_kenmerk11); -- Toegangsniveau 11, 1061
|
|
v_errorhint:='Fout bijwerken Facilitor';
|
|
PRS.upsertkenmerk (1072, rec.prs_perslid_key, rec.prs_kenmerk12); -- Facilitor 12 , 1072
|
|
v_errorhint:='Fout bijwerken ADP';
|
|
PRS.upsertkenmerk (1073, rec.prs_perslid_key, rec.prs_kenmerk13); -- ADP 13 , 1073
|
|
v_errorhint:='Fout bijwerken Absentiemanager';
|
|
PRS.upsertkenmerk (1074, rec.prs_perslid_key, rec.prs_kenmerk14); -- Absentiemanager 14, 1074
|
|
v_errorhint:='Fout bijwerken Regas';
|
|
PRS.upsertkenmerk (1075, rec.prs_perslid_key, rec.prs_kenmerk15); -- Regas 15, 1075
|
|
v_errorhint:='Fout bijwerken Checks';
|
|
PRS.upsertkenmerk (1076, rec.prs_perslid_key, rec.prs_kenmerk16); -- Checks 15, 1076
|
|
v_errorhint:='Fout bijwerken Accountview';
|
|
PRS.upsertkenmerk (1077, rec.prs_perslid_key, rec.prs_kenmerk17); -- Accountview 17, 1077
|
|
v_errorhint:='Fout bijwerken Elvy';
|
|
PRS.upsertkenmerk (1078, rec.prs_perslid_key, rec.prs_kenmerk18); -- Elvy 18, 1078
|
|
v_errorhint:='Fout bijwerken HodNet';
|
|
PRS.upsertkenmerk (1079, rec.prs_perslid_key, rec.prs_kenmerk19); -- HodNet 19, 1079
|
|
v_errorhint:='Fout bijwerken Proactive';
|
|
PRS.upsertkenmerk (1080, rec.prs_perslid_key, rec.prs_kenmerk20); -- Proactive 20, 1080
|
|
v_errorhint:='Fout bijwerken Basiskoffer';
|
|
PRS.upsertkenmerk (1028, rec.prs_perslid_key, rec.prs_kenmerk4); -- Basiskoffer
|
|
END;
|
|
END LOOP;
|
|
|
|
FOR rec IN c_del
|
|
LOOP
|
|
-- prs.delete_perslid (p_import_key, rec.prs_perslid_key); -- Deze niet draaien voor HMOD ivm de workflow HRM die men in Facilitor uitvoert...?
|
|
-- wel vullen van een kenmerkveld ADP-import 1082
|
|
BEGIN
|
|
v_aanduiding := 'Import prs - ' || TO_CHAR(sysdate, 'dd/mm/yyyy - hh:mi:ss') || ' - status: ' || rec.prs_status;
|
|
|
|
v_errorhint:='Bijwerken veld verwijderen';
|
|
PRS.upsertkenmerk (1082, rec.prs_perslid_key,'let op: verwijderen' );
|
|
|
|
fac.trackaction ('PRSUPD', rec.prs_perslid_key, 3,sysdate, v_aanduiding) ;
|
|
|
|
END;
|
|
END LOOP;
|
|
|
|
BEGIN
|
|
-- Telefoongegevens komen niet mee met de ADP-import. Deze velden worden dus bij deze prs-import leeggegooid.
|
|
-- De telefoonnummers worden gevuld vanuit de aan de persoon gekoppelde telefoonobjecten (vast en mobiel)
|
|
-- Daarom aan eind van deze prs-import deze telefoonvelden weer vullen door het dagelijks script wat hiervoor 's nachts draait, nogmaals te runnen.
|
|
hmod_prs_telefoonnummers (null, null);
|
|
END;
|
|
|
|
COMMIT;
|
|
|
|
EXCEPTION
|
|
WHEN OTHERS
|
|
THEN
|
|
oracle_err_num := SQLCODE;
|
|
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
|
|
v_errormsg := 'ORACLE (error ' || oracle_err_num || '/' || oracle_err_mes || ') ';
|
|
fac.imp_writelog (p_import_key, 'E', v_errormsg || v_errorhint, 'Importproces personen afgebroken!');
|
|
|
|
END hmod_update_perslid;
|
|
/
|
|
|
|
-- Rapporview voor HMOD voor de Informatiegids om de telefoonnummers van Management te kunnen opvragen...
|
|
CREATE OR REPLACE VIEW hmod_v_rap_informatiegids
|
|
(
|
|
BEDRIJFSNAAM,
|
|
CONTACTPERSOON,
|
|
CONTACT_TEL,
|
|
CONTACT_MAIL,
|
|
FUNCTIE
|
|
)
|
|
AS
|
|
SELECT v.BEDRIJFSNAAM,
|
|
v.CONTACT_NAAM,
|
|
v.CONTACT_TEL,
|
|
v.CONTACT_EMAIL,
|
|
v.FUNCTIE
|
|
FROM (SELECT 0 AS soort,
|
|
b.prs_bedrijf_key,
|
|
b.prs_bedrijf_naam AS bedrijfsnaam,
|
|
b.prs_bedrijf_contact_persoon AS contact_naam,
|
|
b.prs_bedrijf_telefoon AS contact_tel,
|
|
b.prs_bedrijf_email AS contact_email,
|
|
'nvt' AS functie
|
|
FROM prs_bedrijf b
|
|
WHERE b.prs_bedrijf_ingids IS NOT NULL
|
|
AND b.prs_bedrijf_verwijder IS NULL
|
|
UNION ALL
|
|
SELECT 1 AS soort,
|
|
b.prs_bedrijf_key,
|
|
b.prs_bedrijf_naam AS bedrijfsnaam,
|
|
c.prs_contactpersoon_naam AS contact_naam,
|
|
c.prs_contactpersoon_telefoon_1 AS contact_tel,
|
|
c.prs_contactpersoon_email AS contact_email,
|
|
c.prs_contactpersoon_functie AS functie
|
|
FROM prs_bedrijf b, prs_contactpersoon c
|
|
WHERE b.prs_bedrijf_ingids IS NOT NULL
|
|
AND b.prs_bedrijf_verwijder IS NULL
|
|
AND b.prs_bedrijf_key = c.prs_bedrijf_key
|
|
AND c.prs_contactpersoon_verwijder IS NULL) v
|
|
ORDER BY v.bedrijfsnaam, v.soort;
|
|
|
|
-- Hieronder de standaard import voor Objecten. Vanaf versie 2020.1 komt hier revisie op waardoor er ook direct op organisatie/afdeling ingelezen kan worden.
|
|
-- Dit inlezen p organsiatie/afdeling is per direct al voor HMOD van toepassing. Daarom deze procedure al via deze cust opgeleverd.
|
|
-- Indien versie 2020.1 draait op SAAS dan deze procedure verwijderen en droppen.
|
|
|
|
CREATE OR REPLACE PROCEDURE fac_import_ins2 (p_import_key IN NUMBER)
|
|
IS
|
|
c_delim VARCHAR2 (1) := ';';
|
|
v_newline fac_imp_file.fac_imp_file_line%TYPE; -- Input line
|
|
v_errormsg VARCHAR2 (1000);
|
|
v_errorhint VARCHAR2 (1000);
|
|
oracle_err_num NUMBER;
|
|
oracle_err_mes VARCHAR2 (200);
|
|
header_is_valid NUMBER;
|
|
v_count_tot NUMBER (10);
|
|
v_count_import NUMBER (10);
|
|
v_ongeldig NUMBER (1);
|
|
v_aanduiding VARCHAR (400);
|
|
v_ins_srtkenmerk_key1 VARCHAR2 (255);
|
|
v_ins_srtkenmerk_key2 VARCHAR2 (255);
|
|
v_ins_srtkenmerk_key3 VARCHAR2 (255);
|
|
v_ins_srtkenmerk_key4 VARCHAR2 (255);
|
|
v_ins_srtkenmerk_key5 VARCHAR2 (255);
|
|
v_ins_srtkenmerk_key6 VARCHAR2 (255);
|
|
v_ins_srtkenmerk_key7 VARCHAR2 (255);
|
|
v_ins_srtkenmerk_key8 VARCHAR2 (255);
|
|
v_ins_srtkenmerk_key9 VARCHAR2 (255);
|
|
v_ins_srtkenmerk_key10 VARCHAR2 (255);
|
|
v_ins_srtkenmerk_key11 VARCHAR2 (255);
|
|
v_ins_srtkenmerk_key12 VARCHAR2 (255);
|
|
v_ins_srtkenmerk_key13 VARCHAR2 (255);
|
|
v_ins_srtkenmerk_key14 VARCHAR2 (255);
|
|
v_ins_srtkenmerk_key15 VARCHAR2 (255);
|
|
v_ins_srtkenmerk_key16 VARCHAR2 (255);
|
|
v_ins_srtkenmerk_key17 VARCHAR2 (255);
|
|
v_ins_srtkenmerk_key18 VARCHAR2 (255);
|
|
v_ins_srtkenmerk_key19 VARCHAR2 (255);
|
|
v_ins_srtkenmerk_key20 VARCHAR2 (255);
|
|
-- De importvelden
|
|
v_ins_discipline_omschrijving VARCHAR2 (255); -- C60
|
|
v_ins_discipline_kostensoort VARCHAR2 (255); --C60
|
|
v_ins_srtgroep_omschrijving VARCHAR2 (255); -- C60
|
|
v_ins_srtdeel_code VARCHAR2 (255); -- C10
|
|
v_ins_srtdeel_omschrijving VARCHAR2 (255); -- C100
|
|
v_ins_deel_omschrijving VARCHAR2 (255); -- C60
|
|
v_ins_deel_opmerking VARCHAR2 (1000); -- C320
|
|
v_reserveerbaar VARCHAR2 (255); -- C1
|
|
v_reserveerbaar_n NUMBER (1); -- N1
|
|
v_res_deel_eenheid VARCHAR2 (255); -- C10
|
|
v_res_deel_prijs VARCHAR2 (255); -- N7,2
|
|
v_res_deel_prijs_n NUMBER (7, 2); -- N7,2
|
|
v_alg_locatie_code VARCHAR2 (255); -- C10
|
|
v_alg_gebouw_code VARCHAR2 (255); -- C12
|
|
v_alg_verdieping_volgnr VARCHAR2 (255); -- N3
|
|
v_alg_verdieping_volgnr_n NUMBER (3); -- N3
|
|
v_alg_ruimte_nr VARCHAR2 (255); -- C10
|
|
v_res_deel_alg_level VARCHAR2 (255); -- C1 (naar -1 t/m 5)
|
|
v_res_deel_alg_level_n NUMBER (1); -- N1
|
|
v_res_discipline_omschrijving VARCHAR2 (255); -- C60
|
|
v_res_discipline_kostensoort VARCHAR2 (255); -- C60
|
|
v_prs_perslid_matchcode VARCHAR2 (4000);
|
|
v_prs_perslid_matchwaarde VARCHAR2 (4000);
|
|
v_ins_kenmerkwaarde1 VARCHAR2 (4000);
|
|
v_ins_kenmerkwaarde2 VARCHAR2 (4000);
|
|
v_ins_kenmerkwaarde3 VARCHAR2 (4000);
|
|
v_ins_kenmerkwaarde4 VARCHAR2 (4000);
|
|
v_ins_kenmerkwaarde5 VARCHAR2 (4000);
|
|
v_ins_kenmerkwaarde6 VARCHAR2 (4000);
|
|
v_ins_kenmerkwaarde7 VARCHAR2 (4000);
|
|
v_ins_kenmerkwaarde8 VARCHAR2 (4000);
|
|
v_ins_kenmerkwaarde9 VARCHAR2 (4000);
|
|
v_ins_kenmerkwaarde10 VARCHAR2 (4000);
|
|
v_ins_kenmerkwaarde11 VARCHAR2 (4000);
|
|
v_ins_kenmerkwaarde12 VARCHAR2 (4000);
|
|
v_ins_kenmerkwaarde13 VARCHAR2 (4000);
|
|
v_ins_kenmerkwaarde14 VARCHAR2 (4000);
|
|
v_ins_kenmerkwaarde15 VARCHAR2 (4000);
|
|
v_ins_kenmerkwaarde16 VARCHAR2 (4000);
|
|
v_ins_kenmerkwaarde17 VARCHAR2 (4000);
|
|
v_ins_kenmerkwaarde18 VARCHAR2 (4000);
|
|
v_ins_kenmerkwaarde19 VARCHAR2 (4000);
|
|
v_ins_kenmerkwaarde20 VARCHAR2 (4000);
|
|
v_ins_deel_aanmaak VARCHAR2 (255); -- DATE
|
|
v_ins_deel_aanmaak_d DATE;
|
|
v_ins_deel_vervaldatum VARCHAR2 (255); -- DATE
|
|
v_ins_deel_vervaldatum_d DATE;
|
|
v_ins_deel_aantal VARCHAR2 (255); -- N8,2
|
|
v_ins_deel_aantal_n NUMBER(8, 2);
|
|
v_file_index NUMBER;
|
|
|
|
-- Overige velden:
|
|
CURSOR c1
|
|
IS
|
|
SELECT *
|
|
FROM fac_imp_file
|
|
WHERE fac_import_key = p_import_key
|
|
ORDER BY fac_imp_file_index;
|
|
|
|
-- Controleer tijdens import-fase alleen op bestaan van kenmerksoort (of
|
|
-- deze - via een kenmerk - wel is gedefinieerd voor de betreffende object-
|
|
-- discipline/groep/soort, volgt pas tijdens de update-fase)!
|
|
--
|
|
-- kw is bijvoorbeeld 'Parkeercode' of 'Parkeercode|3' waarbij de laatste in groep 3 zit
|
|
-- het resultaat is NULL (als niet gevonden) of 234|3 voor strkenmer_key 234 in groep 3
|
|
-- Als geen groep is meegegeven wordt 234|0 opgeleverd (de default groep)
|
|
FUNCTION bepaal_srtkenmerk_key (p_kw IN VARCHAR)
|
|
RETURN VARCHAR
|
|
IS
|
|
v_srtkenmerk_key NUMBER;
|
|
v_kenmerk_groep NUMBER;
|
|
v_kw VARCHAR(250);
|
|
BEGIN
|
|
v_kenmerk_groep := 0;
|
|
v_kw := p_kw;
|
|
IF INSTR (v_kw, '|') > 1
|
|
THEN
|
|
v_kenmerk_groep := SUBSTR (v_kw, INSTR (v_kw, '|') + 1);
|
|
v_kw := SUBSTR (v_kw, 1, INSTR (v_kw, '|') - 1);
|
|
END IF;
|
|
|
|
IF fac.safe_to_number (v_kw) IS NULL
|
|
THEN -- kenmerkwaarde is alfanumeriek (dus omschrijving)!
|
|
SELECT ins_srtkenmerk_key
|
|
INTO v_srtkenmerk_key
|
|
FROM ins_v_aanwezigsrtkenmerk
|
|
WHERE ins_srtkenmerk_upper = UPPER (v_kw)
|
|
AND ins_srtkenmerk_kenmerktype IN ('C', 'D', 'N', 'R', 'S', 'X', 'B', 'V');
|
|
ELSE -- kenmerkwaarde is numeriek (dus key)!
|
|
SELECT ins_srtkenmerk_key
|
|
INTO v_srtkenmerk_key
|
|
FROM ins_v_aanwezigsrtkenmerk
|
|
WHERE ins_srtkenmerk_key = fac.safe_to_number (v_kw)
|
|
AND ins_srtkenmerk_kenmerktype IN ('C', 'D', 'N', 'R', 'S', 'X', 'B', 'V');
|
|
END IF;
|
|
|
|
RETURN TO_CHAR(v_srtkenmerk_key) || '|' || TO_CHAR(v_kenmerk_groep);
|
|
EXCEPTION
|
|
WHEN NO_DATA_FOUND
|
|
THEN
|
|
IF p_kw IS NULL OR UPPER (p_kw) LIKE 'KENMERK%'
|
|
THEN
|
|
RETURN NULL;
|
|
ELSE
|
|
fac.imp_writelog (p_import_key,
|
|
'W',
|
|
'Fout bij bepalen kenmerksoort [' || p_kw || ']',
|
|
'Bestaat niet of type ongeldig');
|
|
COMMIT;
|
|
RETURN NULL;
|
|
END IF;
|
|
END;
|
|
BEGIN
|
|
-- Eerst opruiming
|
|
DELETE FROM fac_imp_ins;
|
|
|
|
COMMIT;
|
|
|
|
v_count_tot := 0;
|
|
v_count_import := 0;
|
|
header_is_valid := 0;
|
|
v_prs_perslid_matchcode := '';
|
|
|
|
FOR rec1 IN c1
|
|
LOOP
|
|
BEGIN
|
|
v_newline := rec1.fac_imp_file_line;
|
|
v_file_index := rec1.fac_imp_file_index;
|
|
v_errormsg := 'Fout bij opvragen importregel';
|
|
v_aanduiding := '';
|
|
v_ongeldig := 0;
|
|
-- Lees alle veldwaarden
|
|
fac.imp_getfield (v_newline, c_delim, v_ins_discipline_omschrijving);
|
|
fac.imp_getfield (v_newline, c_delim, v_ins_discipline_kostensoort);
|
|
fac.imp_getfield (v_newline, c_delim, v_ins_srtgroep_omschrijving);
|
|
fac.imp_getfield (v_newline, c_delim, v_ins_srtdeel_code);
|
|
fac.imp_getfield (v_newline, c_delim, v_ins_srtdeel_omschrijving);
|
|
fac.imp_getfield (v_newline, c_delim, v_ins_deel_omschrijving);
|
|
fac.imp_getfield (v_newline, c_delim, v_ins_deel_opmerking);
|
|
fac.imp_getfield (v_newline, c_delim, v_reserveerbaar);
|
|
fac.imp_getfield (v_newline, c_delim, v_res_deel_eenheid);
|
|
fac.imp_getfield (v_newline, c_delim, v_res_deel_prijs);
|
|
fac.imp_getfield (v_newline, c_delim, v_alg_locatie_code);
|
|
fac.imp_getfield (v_newline, c_delim, v_alg_gebouw_code);
|
|
fac.imp_getfield (v_newline, c_delim, v_alg_verdieping_volgnr);
|
|
fac.imp_getfield (v_newline, c_delim, v_alg_ruimte_nr);
|
|
fac.imp_getfield (v_newline, c_delim, v_res_deel_alg_level);
|
|
fac.imp_getfield (v_newline, c_delim, v_res_discipline_omschrijving);
|
|
fac.imp_getfield (v_newline, c_delim, v_res_discipline_kostensoort);
|
|
fac.imp_getfield (v_newline, c_delim, v_prs_perslid_matchcode);
|
|
fac.imp_getfield (v_newline, c_delim, v_prs_perslid_matchwaarde);
|
|
fac.imp_getfield (v_newline, c_delim, v_ins_deel_aanmaak);
|
|
fac.imp_getfield (v_newline, c_delim, v_ins_deel_vervaldatum);
|
|
fac.imp_getfield (v_newline, c_delim, v_ins_deel_aantal);
|
|
fac.imp_getfield (v_newline, c_delim, v_ins_kenmerkwaarde1);
|
|
fac.imp_getfield (v_newline, c_delim, v_ins_kenmerkwaarde2);
|
|
fac.imp_getfield (v_newline, c_delim, v_ins_kenmerkwaarde3);
|
|
fac.imp_getfield (v_newline, c_delim, v_ins_kenmerkwaarde4);
|
|
fac.imp_getfield (v_newline, c_delim, v_ins_kenmerkwaarde5);
|
|
fac.imp_getfield (v_newline, c_delim, v_ins_kenmerkwaarde6);
|
|
fac.imp_getfield (v_newline, c_delim, v_ins_kenmerkwaarde7);
|
|
fac.imp_getfield (v_newline, c_delim, v_ins_kenmerkwaarde8);
|
|
fac.imp_getfield (v_newline, c_delim, v_ins_kenmerkwaarde9);
|
|
fac.imp_getfield (v_newline, c_delim, v_ins_kenmerkwaarde10);
|
|
fac.imp_getfield (v_newline, c_delim, v_ins_kenmerkwaarde11);
|
|
fac.imp_getfield (v_newline, c_delim, v_ins_kenmerkwaarde12);
|
|
fac.imp_getfield (v_newline, c_delim, v_ins_kenmerkwaarde13);
|
|
fac.imp_getfield (v_newline, c_delim, v_ins_kenmerkwaarde14);
|
|
fac.imp_getfield (v_newline, c_delim, v_ins_kenmerkwaarde15);
|
|
fac.imp_getfield (v_newline, c_delim, v_ins_kenmerkwaarde16);
|
|
fac.imp_getfield (v_newline, c_delim, v_ins_kenmerkwaarde17);
|
|
fac.imp_getfield (v_newline, c_delim, v_ins_kenmerkwaarde18);
|
|
fac.imp_getfield (v_newline, c_delim, v_ins_kenmerkwaarde19);
|
|
fac.imp_getfield (v_newline, c_delim, v_ins_kenmerkwaarde20);
|
|
|
|
v_aanduiding :=
|
|
'['
|
|
|| v_ins_discipline_omschrijving
|
|
|| '|'
|
|
|| v_ins_srtgroep_omschrijving
|
|
|| '|'
|
|
|| v_ins_srtdeel_code
|
|
|| '|'
|
|
|| v_ins_srtdeel_omschrijving
|
|
|| '|'
|
|
|| v_ins_deel_omschrijving
|
|
|| '] ';
|
|
|
|
-- Ik controleer of ik een geldige header heb, dat is: in de juiste kolommen
|
|
-- de juiste kolomkop. Ik controleer daarbij alle NIET-kenmerk kolommen!
|
|
-- Ik negeer alles totdat ik een geldige header ben gepasseerd.
|
|
IF (header_is_valid = 0)
|
|
THEN
|
|
IF UPPER (v_ins_discipline_omschrijving) = 'DISCIPLINEOMSCHRIJVING'
|
|
AND UPPER (v_ins_discipline_kostensoort) = 'DISCIPLINEKOSTENSOORT'
|
|
AND UPPER (v_ins_srtgroep_omschrijving) = 'GROEPSOORTOMSCHRIJVING'
|
|
AND UPPER (v_ins_srtdeel_code) = 'OBJECTSOORTCODE'
|
|
AND UPPER (v_ins_srtdeel_omschrijving) = 'OBJECTSOORTOMSCHRIJVING'
|
|
AND UPPER (v_ins_deel_omschrijving) = 'OBJECTIDENTIFICATIE'
|
|
AND UPPER (v_ins_deel_opmerking) = 'OBJECTOPMERKING'
|
|
AND UPPER (v_reserveerbaar) = 'RESERVEERBAAR'
|
|
AND UPPER (v_res_deel_eenheid) = 'EENHEID'
|
|
AND UPPER (v_res_deel_prijs) = 'PRIJS'
|
|
AND UPPER (v_alg_locatie_code) = 'LOCATIECODE'
|
|
AND UPPER (v_alg_gebouw_code) = 'GEBOUWCODE'
|
|
AND UPPER (v_alg_verdieping_volgnr) = 'BOUWLAAGVOLGNUMMER'
|
|
AND UPPER (v_alg_ruimte_nr) = 'RUIMTENUMMER'
|
|
AND UPPER (v_res_deel_alg_level) = 'RESERVERINGSCOPE'
|
|
AND UPPER (v_res_discipline_omschrijving) = 'CATALOGUSNAAM'
|
|
AND UPPER (v_res_discipline_kostensoort) = 'CATALOGUSKOSTENSOORT'
|
|
AND UPPER (v_prs_perslid_matchcode) = 'PERSOONMATCHCODE'
|
|
AND UPPER (v_prs_perslid_matchwaarde) = 'PERSOONMATCHWAARDE'
|
|
AND UPPER (v_ins_deel_aanmaak) = 'INGANGSDATUM'
|
|
AND UPPER (v_ins_deel_vervaldatum) = 'VERVALDATUM'
|
|
AND UPPER (v_ins_deel_aantal) = 'AANTAL'
|
|
THEN
|
|
v_ins_srtkenmerk_key1 := bepaal_srtkenmerk_key (v_ins_kenmerkwaarde1);
|
|
v_ins_srtkenmerk_key2 := bepaal_srtkenmerk_key (v_ins_kenmerkwaarde2);
|
|
v_ins_srtkenmerk_key3 := bepaal_srtkenmerk_key (v_ins_kenmerkwaarde3);
|
|
v_ins_srtkenmerk_key4 := bepaal_srtkenmerk_key (v_ins_kenmerkwaarde4);
|
|
v_ins_srtkenmerk_key5 := bepaal_srtkenmerk_key (v_ins_kenmerkwaarde5);
|
|
v_ins_srtkenmerk_key6 := bepaal_srtkenmerk_key (v_ins_kenmerkwaarde6);
|
|
v_ins_srtkenmerk_key7 := bepaal_srtkenmerk_key (v_ins_kenmerkwaarde7);
|
|
v_ins_srtkenmerk_key8 := bepaal_srtkenmerk_key (v_ins_kenmerkwaarde8);
|
|
v_ins_srtkenmerk_key9 := bepaal_srtkenmerk_key (v_ins_kenmerkwaarde9);
|
|
v_ins_srtkenmerk_key10 := bepaal_srtkenmerk_key (v_ins_kenmerkwaarde10);
|
|
v_ins_srtkenmerk_key11 := bepaal_srtkenmerk_key (v_ins_kenmerkwaarde11);
|
|
v_ins_srtkenmerk_key12 := bepaal_srtkenmerk_key (v_ins_kenmerkwaarde12);
|
|
v_ins_srtkenmerk_key13 := bepaal_srtkenmerk_key (v_ins_kenmerkwaarde13);
|
|
v_ins_srtkenmerk_key14 := bepaal_srtkenmerk_key (v_ins_kenmerkwaarde14);
|
|
v_ins_srtkenmerk_key15 := bepaal_srtkenmerk_key (v_ins_kenmerkwaarde15);
|
|
v_ins_srtkenmerk_key16 := bepaal_srtkenmerk_key (v_ins_kenmerkwaarde16);
|
|
v_ins_srtkenmerk_key17 := bepaal_srtkenmerk_key (v_ins_kenmerkwaarde17);
|
|
v_ins_srtkenmerk_key18 := bepaal_srtkenmerk_key (v_ins_kenmerkwaarde18);
|
|
v_ins_srtkenmerk_key19 := bepaal_srtkenmerk_key (v_ins_kenmerkwaarde19);
|
|
v_ins_srtkenmerk_key20 := bepaal_srtkenmerk_key (v_ins_kenmerkwaarde20);
|
|
|
|
header_is_valid := 1;
|
|
END IF;
|
|
ELSE
|
|
v_count_tot := v_count_tot + 1;
|
|
-- Controleer alle veldwaarden
|
|
v_errormsg := 'Disciplineomschrijving ongeldig';
|
|
v_ins_discipline_omschrijving :=
|
|
TRIM (v_ins_discipline_omschrijving);
|
|
|
|
IF v_ins_discipline_omschrijving IS NULL
|
|
OR LENGTH (v_ins_discipline_omschrijving) > 60
|
|
THEN
|
|
fac.imp_writelog (p_import_key,
|
|
'W',
|
|
v_aanduiding || v_errormsg,
|
|
'Regel wordt overgeslagen');
|
|
v_ongeldig := 1;
|
|
END IF;
|
|
|
|
--
|
|
v_errormsg := 'Kostensoort ongeldig';
|
|
v_ins_discipline_kostensoort :=
|
|
TRIM (v_ins_discipline_kostensoort);
|
|
|
|
IF LENGTH (v_ins_discipline_kostensoort) > 60
|
|
THEN
|
|
v_ins_discipline_kostensoort :=
|
|
SUBSTR (v_ins_discipline_kostensoort, 1, 60);
|
|
fac.imp_writelog (
|
|
p_import_key,
|
|
'W',
|
|
v_aanduiding || v_errormsg,
|
|
'Disciplinekostensoort wordt afgebroken tot ['
|
|
|| v_ins_discipline_kostensoort
|
|
|| ']'
|
|
);
|
|
END IF;
|
|
|
|
--
|
|
v_errormsg := 'Groepsoortomschrijving ongeldig';
|
|
v_ins_srtgroep_omschrijving := TRIM (v_ins_srtgroep_omschrijving);
|
|
|
|
IF v_ins_srtgroep_omschrijving IS NULL
|
|
OR LENGTH (v_ins_srtgroep_omschrijving) > 60
|
|
THEN
|
|
fac.imp_writelog (p_import_key,
|
|
'W',
|
|
v_aanduiding || v_errormsg,
|
|
'Regel wordt overgeslagen');
|
|
v_ongeldig := 1;
|
|
END IF;
|
|
|
|
--
|
|
v_errormsg := 'Objectsoortcode ongeldig';
|
|
v_ins_srtdeel_code := TRIM (v_ins_srtdeel_code);
|
|
|
|
IF v_ins_srtdeel_code IS NULL OR LENGTH (v_ins_srtdeel_code) > 10
|
|
THEN
|
|
fac.imp_writelog (p_import_key,
|
|
'W',
|
|
v_aanduiding || v_errormsg,
|
|
'Regel wordt overgeslagen');
|
|
v_ongeldig := 1;
|
|
END IF;
|
|
|
|
--
|
|
v_errormsg := 'Objectsoortomschrijving ongeldig';
|
|
v_ins_srtdeel_omschrijving := TRIM (v_ins_srtdeel_omschrijving);
|
|
|
|
IF v_ins_srtdeel_omschrijving IS NULL
|
|
OR LENGTH (v_ins_srtdeel_omschrijving) > 100
|
|
THEN
|
|
fac.imp_writelog (p_import_key,
|
|
'W',
|
|
v_aanduiding || v_errormsg,
|
|
'Regel wordt overgeslagen');
|
|
v_ongeldig := 1;
|
|
END IF;
|
|
|
|
--
|
|
v_errormsg := 'Objectomschrijving ongeldig';
|
|
v_ins_deel_omschrijving := TRIM (v_ins_deel_omschrijving);
|
|
|
|
IF v_ins_deel_omschrijving IS NULL
|
|
OR LENGTH (v_ins_deel_omschrijving) > 60
|
|
THEN
|
|
fac.imp_writelog (p_import_key,
|
|
'W',
|
|
v_aanduiding || v_errormsg,
|
|
'Regel wordt overgeslagen');
|
|
v_ongeldig := 1;
|
|
END IF;
|
|
|
|
v_errormsg := 'Objectopmerking ongeldig';
|
|
v_ins_deel_opmerking := TRIM (v_ins_deel_opmerking);
|
|
|
|
IF LENGTH (v_ins_deel_opmerking) > 320
|
|
THEN
|
|
v_ins_deel_opmerking := SUBSTR (v_ins_deel_opmerking, 1, 320);
|
|
fac.imp_writelog (
|
|
p_import_key,
|
|
'W',
|
|
v_aanduiding || v_errormsg,
|
|
'Objectopmerking wordt afgebroken tot ['
|
|
|| v_ins_deel_opmerking
|
|
|| ']'
|
|
);
|
|
END IF;
|
|
|
|
-- Verder geen foutdetectie; kan dus stricter?
|
|
SELECT DECODE (SUBSTR (TRIM (UPPER (v_reserveerbaar)), 1, 1),
|
|
'J', 1,
|
|
0)
|
|
INTO v_reserveerbaar_n
|
|
FROM DUAL;
|
|
|
|
--
|
|
v_errormsg := 'Eenheid ongeldig';
|
|
v_res_deel_eenheid := TRIM (v_res_deel_eenheid);
|
|
|
|
IF LENGTH (v_res_deel_eenheid) > 10
|
|
THEN
|
|
v_res_deel_eenheid := SUBSTR (v_res_deel_eenheid, 1, 10);
|
|
fac.imp_writelog (
|
|
p_import_key,
|
|
'W',
|
|
v_aanduiding || v_errormsg,
|
|
'Eenheid wordt afgebroken tot ['
|
|
|| v_res_deel_eenheid
|
|
|| ']'
|
|
);
|
|
END IF;
|
|
|
|
--
|
|
v_errormsg := 'Prijs ongeldig; maximale grootte 99999.99';
|
|
v_res_deel_prijs := TRIM (v_res_deel_prijs);
|
|
v_res_deel_prijs_n := NULL;
|
|
|
|
IF (v_res_deel_prijs IS NOT NULL)
|
|
THEN
|
|
IF (fac.safe_to_number (v_res_deel_prijs) IS NULL)
|
|
THEN
|
|
v_ongeldig := 1;
|
|
fac.imp_writelog (p_import_key,
|
|
'W',
|
|
v_aanduiding || v_errormsg,
|
|
'Regel wordt overgeslagen!');
|
|
ELSE
|
|
v_res_deel_prijs_n := fac.safe_to_number (v_res_deel_prijs);
|
|
END IF;
|
|
END IF;
|
|
|
|
--
|
|
v_errormsg := 'Locatiecode ongeldig';
|
|
v_alg_locatie_code := TRIM (v_alg_locatie_code);
|
|
|
|
IF LENGTH (v_alg_locatie_code) > 10
|
|
THEN
|
|
v_alg_locatie_code := SUBSTR (v_alg_locatie_code, 1, 10);
|
|
fac.imp_writelog (
|
|
p_import_key,
|
|
'W',
|
|
v_aanduiding || v_errormsg,
|
|
'Locatiecode wordt afgebroken tot ['
|
|
|| v_alg_locatie_code
|
|
|| ']'
|
|
);
|
|
END IF;
|
|
|
|
--
|
|
v_errormsg := 'Gebouwcode ongeldig';
|
|
v_alg_gebouw_code := TRIM (v_alg_gebouw_code);
|
|
|
|
IF LENGTH (v_alg_gebouw_code) > 12
|
|
THEN
|
|
v_alg_gebouw_code := SUBSTR (v_alg_gebouw_code, 1, 12);
|
|
fac.imp_writelog (
|
|
p_import_key,
|
|
'W',
|
|
v_aanduiding || v_errormsg,
|
|
'Gebouwcode wordt afgebroken tot ['
|
|
|| v_alg_gebouw_code
|
|
|| ']'
|
|
);
|
|
END IF;
|
|
|
|
--
|
|
v_errormsg := 'Bouwlaagvolgnummer ongeldig';
|
|
v_alg_verdieping_volgnr := TRIM (v_alg_verdieping_volgnr);
|
|
v_alg_verdieping_volgnr_n := NULL;
|
|
|
|
IF (v_alg_verdieping_volgnr IS NOT NULL)
|
|
THEN
|
|
v_alg_verdieping_volgnr_n :=
|
|
ROUND (fac.safe_to_number (v_alg_verdieping_volgnr));
|
|
|
|
IF v_alg_verdieping_volgnr_n NOT BETWEEN -999 AND 999
|
|
THEN
|
|
v_ongeldig := 1;
|
|
fac.imp_writelog (p_import_key,
|
|
'W',
|
|
v_aanduiding || v_errormsg,
|
|
'Regel wordt overgeslagen!');
|
|
ELSE
|
|
v_alg_verdieping_volgnr_n :=
|
|
fac.safe_to_number (v_alg_verdieping_volgnr);
|
|
END IF;
|
|
END IF;
|
|
|
|
--
|
|
v_errormsg := 'Ruimtenummer ongeldig';
|
|
v_alg_ruimte_nr := TRIM (v_alg_ruimte_nr);
|
|
|
|
IF LENGTH (v_alg_ruimte_nr) > 10
|
|
THEN
|
|
v_alg_ruimte_nr := SUBSTR (v_alg_ruimte_nr, 1, 10);
|
|
fac.imp_writelog (
|
|
p_import_key,
|
|
'W',
|
|
v_aanduiding || v_errormsg,
|
|
'Ruimtenummer wordt afgebroken tot ['
|
|
|| v_alg_ruimte_nr
|
|
|| ']'
|
|
);
|
|
END IF;
|
|
|
|
-- Verder geen foutdetectie; kan dus stricter?
|
|
SELECT DECODE (SUBSTR (TRIM (v_res_deel_alg_level), 1, 1),
|
|
'E', 0,
|
|
'D', 1,
|
|
'L', 2,
|
|
'G', 3,
|
|
'V', 4,
|
|
'R', 5,
|
|
-1)
|
|
INTO v_res_deel_alg_level_n
|
|
FROM DUAL;
|
|
|
|
--
|
|
v_errormsg := 'Catalogusnaam ongeldig';
|
|
v_res_discipline_omschrijving :=
|
|
TRIM (v_res_discipline_omschrijving);
|
|
|
|
IF LENGTH (v_res_discipline_omschrijving) > 60
|
|
THEN
|
|
v_res_discipline_omschrijving :=
|
|
SUBSTR (TRIM (v_res_discipline_omschrijving), 1, 60);
|
|
fac.imp_writelog (
|
|
p_import_key,
|
|
'W',
|
|
v_aanduiding || v_errormsg,
|
|
'Catalogusnaam wordt afgebroken tot ['
|
|
|| v_res_discipline_omschrijving
|
|
|| ']'
|
|
);
|
|
END IF;
|
|
|
|
--
|
|
v_errormsg := 'Cataloguskostensoort ongeldig';
|
|
v_res_discipline_kostensoort :=
|
|
TRIM (v_res_discipline_kostensoort);
|
|
|
|
IF LENGTH (v_res_discipline_kostensoort) > 60
|
|
THEN
|
|
v_res_discipline_kostensoort :=
|
|
SUBSTR (TRIM (v_res_discipline_kostensoort), 1, 60);
|
|
fac.imp_writelog (
|
|
p_import_key,
|
|
'W',
|
|
v_aanduiding || v_errormsg,
|
|
'Cataloguskostensoort wordt afgebroken tot ['
|
|
|| v_res_discipline_kostensoort
|
|
|| ']'
|
|
);
|
|
END IF;
|
|
|
|
--
|
|
v_errormsg := 'Aantal ongeldig; maximale grootte 999999.99';
|
|
v_ins_deel_aantal := TRIM (v_ins_deel_aantal);
|
|
v_ins_deel_aantal := REPLACE (v_ins_deel_aantal, ',', '.');
|
|
v_ins_deel_aantal_n := NULL;
|
|
|
|
IF (v_ins_deel_aantal IS NOT NULL AND fac.getSetting('ins_explode_objects') = 0)
|
|
THEN
|
|
IF (fac.safe_to_number (v_ins_deel_aantal) IS NULL)
|
|
THEN
|
|
v_ongeldig := 1;
|
|
fac.imp_writelog (p_import_key,
|
|
'W',
|
|
v_aanduiding || v_errormsg,
|
|
'Regel wordt overgeslagen!');
|
|
ELSE
|
|
v_ins_deel_aantal_n := fac.safe_to_number (v_ins_deel_aantal);
|
|
END IF;
|
|
ELSE
|
|
v_ins_deel_aantal_n := 1;
|
|
END IF;
|
|
|
|
--
|
|
IF v_ins_deel_aanmaak IS NOT NULL
|
|
THEN
|
|
BEGIN
|
|
v_ins_deel_aanmaak_d :=
|
|
TO_DATE (v_ins_deel_aanmaak, 'dd-mm-yyyy');
|
|
EXCEPTION
|
|
WHEN OTHERS
|
|
THEN
|
|
v_ongeldig := 1;
|
|
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,
|
|
'Regel wordt overgeslagen!'
|
|
);
|
|
COMMIT;
|
|
END;
|
|
ELSE
|
|
v_ins_deel_aanmaak_d := NULL;
|
|
END IF;
|
|
|
|
--
|
|
IF v_ins_deel_vervaldatum IS NOT NULL
|
|
THEN
|
|
BEGIN
|
|
v_ins_deel_vervaldatum_d :=
|
|
TO_DATE (v_ins_deel_vervaldatum, 'dd-mm-yyyy');
|
|
EXCEPTION
|
|
WHEN OTHERS
|
|
THEN
|
|
v_ongeldig := 1;
|
|
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,
|
|
'Regel wordt overgeslagen!'
|
|
);
|
|
COMMIT;
|
|
END;
|
|
ELSE
|
|
v_ins_deel_vervaldatum_d := NULL;
|
|
END IF;
|
|
|
|
-- De rest alleen ff trimmen.
|
|
v_prs_perslid_matchcode := TRIM (v_prs_perslid_matchcode);
|
|
v_prs_perslid_matchwaarde := TRIM (v_prs_perslid_matchwaarde);
|
|
v_ins_kenmerkwaarde1 := TRIM (v_ins_kenmerkwaarde1);
|
|
v_ins_kenmerkwaarde2 := TRIM (v_ins_kenmerkwaarde2);
|
|
v_ins_kenmerkwaarde3 := TRIM (v_ins_kenmerkwaarde3);
|
|
v_ins_kenmerkwaarde4 := TRIM (v_ins_kenmerkwaarde4);
|
|
v_ins_kenmerkwaarde5 := TRIM (v_ins_kenmerkwaarde5);
|
|
v_ins_kenmerkwaarde6 := TRIM (v_ins_kenmerkwaarde6);
|
|
v_ins_kenmerkwaarde7 := TRIM (v_ins_kenmerkwaarde7);
|
|
v_ins_kenmerkwaarde8 := TRIM (v_ins_kenmerkwaarde8);
|
|
v_ins_kenmerkwaarde9 := TRIM (v_ins_kenmerkwaarde9);
|
|
v_ins_kenmerkwaarde10 := TRIM (v_ins_kenmerkwaarde10);
|
|
v_ins_kenmerkwaarde11 := TRIM (v_ins_kenmerkwaarde11);
|
|
v_ins_kenmerkwaarde12 := TRIM (v_ins_kenmerkwaarde12);
|
|
v_ins_kenmerkwaarde13 := TRIM (v_ins_kenmerkwaarde13);
|
|
v_ins_kenmerkwaarde14 := TRIM (v_ins_kenmerkwaarde14);
|
|
v_ins_kenmerkwaarde15 := TRIM (v_ins_kenmerkwaarde15);
|
|
v_ins_kenmerkwaarde16 := TRIM (v_ins_kenmerkwaarde16);
|
|
v_ins_kenmerkwaarde17 := TRIM (v_ins_kenmerkwaarde17);
|
|
v_ins_kenmerkwaarde18 := TRIM (v_ins_kenmerkwaarde18);
|
|
v_ins_kenmerkwaarde19 := TRIM (v_ins_kenmerkwaarde19);
|
|
v_ins_kenmerkwaarde20 := TRIM (v_ins_kenmerkwaarde20);
|
|
|
|
-- Insert geformatteerde import record
|
|
IF v_ongeldig = 0
|
|
THEN
|
|
BEGIN
|
|
v_errormsg := 'Fout bij wegschrijven importregel';
|
|
|
|
-- Als uit kenmerkheader een geldige kenmerksoort-key volgt,
|
|
-- dan is kenmerkwaarde<n> gevuld met <key>=<waarde>; zoniet,
|
|
-- dan is kenmerkwaarde<n> gevuld met <waarde>!
|
|
-- NB. Een NULL-waarde resulteert NIET in het wissen van een
|
|
-- kenmerkveld (bijwerken kan wel, maar wissen dus niet)!
|
|
INSERT INTO fac_imp_ins (
|
|
ins_discipline_omschrijving,
|
|
ins_discipline_kostensoort,
|
|
ins_srtgroep_omschrijving,
|
|
ins_srtdeel_code,
|
|
ins_srtdeel_omschrijving,
|
|
ins_deel_omschrijving,
|
|
ins_deel_opmerking,
|
|
reserveerbaar,
|
|
res_deel_eenheid,
|
|
res_deel_prijs,
|
|
alg_locatie_code,
|
|
alg_gebouw_code,
|
|
alg_verdieping_volgnr,
|
|
alg_ruimte_nr,
|
|
res_deel_alg_level,
|
|
res_discipline_omschrijving,
|
|
res_discipline_kostensoort,
|
|
prs_perslid_matchcode,
|
|
prs_perslid_matchwaarde,
|
|
ins_kenmerkwaarde1,
|
|
ins_kenmerkwaarde2,
|
|
ins_kenmerkwaarde3,
|
|
ins_kenmerkwaarde4,
|
|
ins_kenmerkwaarde5,
|
|
ins_kenmerkwaarde6,
|
|
ins_kenmerkwaarde7,
|
|
ins_kenmerkwaarde8,
|
|
ins_kenmerkwaarde9,
|
|
ins_kenmerkwaarde10,
|
|
ins_kenmerkwaarde11,
|
|
ins_kenmerkwaarde12,
|
|
ins_kenmerkwaarde13,
|
|
ins_kenmerkwaarde14,
|
|
ins_kenmerkwaarde15,
|
|
ins_kenmerkwaarde16,
|
|
ins_kenmerkwaarde17,
|
|
ins_kenmerkwaarde18,
|
|
ins_kenmerkwaarde19,
|
|
ins_kenmerkwaarde20,
|
|
ins_deel_aanmaak,
|
|
ins_deel_vervaldatum,
|
|
ins_deel_aantal
|
|
)
|
|
VALUES (
|
|
v_ins_discipline_omschrijving,
|
|
v_ins_discipline_kostensoort,
|
|
v_ins_srtgroep_omschrijving,
|
|
v_ins_srtdeel_code,
|
|
v_ins_srtdeel_omschrijving,
|
|
v_ins_deel_omschrijving,
|
|
v_ins_deel_opmerking,
|
|
v_reserveerbaar_n,
|
|
v_res_deel_eenheid,
|
|
v_res_deel_prijs_n,
|
|
v_alg_locatie_code,
|
|
v_alg_gebouw_code,
|
|
v_alg_verdieping_volgnr_n,
|
|
v_alg_ruimte_nr,
|
|
v_res_deel_alg_level_n,
|
|
v_res_discipline_omschrijving,
|
|
v_res_discipline_kostensoort,
|
|
v_prs_perslid_matchcode,
|
|
v_prs_perslid_matchwaarde,
|
|
DECODE (v_ins_srtkenmerk_key1,
|
|
NULL, v_ins_kenmerkwaarde1,
|
|
TO_CHAR (v_ins_srtkenmerk_key1)
|
|
|| '='
|
|
|| SUBSTR (v_ins_kenmerkwaarde1, 1, 3900)
|
|
),
|
|
DECODE (
|
|
v_ins_srtkenmerk_key2,
|
|
NULL, v_ins_kenmerkwaarde2,
|
|
TO_CHAR (v_ins_srtkenmerk_key2)
|
|
|| '='
|
|
|| SUBSTR (v_ins_kenmerkwaarde2, 1, 3900)
|
|
),
|
|
DECODE (
|
|
v_ins_srtkenmerk_key3,
|
|
NULL, v_ins_kenmerkwaarde3,
|
|
TO_CHAR (v_ins_srtkenmerk_key3)
|
|
|| '='
|
|
|| SUBSTR (v_ins_kenmerkwaarde3, 1, 3900)
|
|
),
|
|
DECODE (
|
|
v_ins_srtkenmerk_key4,
|
|
NULL, v_ins_kenmerkwaarde4,
|
|
TO_CHAR (v_ins_srtkenmerk_key4)
|
|
|| '='
|
|
|| SUBSTR (v_ins_kenmerkwaarde4, 1, 3900)
|
|
),
|
|
DECODE (
|
|
v_ins_srtkenmerk_key5,
|
|
NULL, v_ins_kenmerkwaarde5,
|
|
TO_CHAR (v_ins_srtkenmerk_key5)
|
|
|| '='
|
|
|| SUBSTR (v_ins_kenmerkwaarde5, 1, 3900)
|
|
),
|
|
DECODE (
|
|
v_ins_srtkenmerk_key6,
|
|
NULL, v_ins_kenmerkwaarde6,
|
|
TO_CHAR (v_ins_srtkenmerk_key6)
|
|
|| '='
|
|
|| SUBSTR (v_ins_kenmerkwaarde6, 1, 3900)
|
|
),
|
|
DECODE (
|
|
v_ins_srtkenmerk_key7,
|
|
NULL, v_ins_kenmerkwaarde7,
|
|
TO_CHAR (v_ins_srtkenmerk_key7)
|
|
|| '='
|
|
|| SUBSTR (v_ins_kenmerkwaarde7, 1, 3900)
|
|
),
|
|
DECODE (
|
|
v_ins_srtkenmerk_key8,
|
|
NULL, v_ins_kenmerkwaarde8,
|
|
TO_CHAR (v_ins_srtkenmerk_key8)
|
|
|| '='
|
|
|| SUBSTR (v_ins_kenmerkwaarde8, 1, 3900)
|
|
),
|
|
DECODE (
|
|
v_ins_srtkenmerk_key9,
|
|
NULL, v_ins_kenmerkwaarde9,
|
|
TO_CHAR (v_ins_srtkenmerk_key9)
|
|
|| '='
|
|
|| SUBSTR (v_ins_kenmerkwaarde9, 1, 3900)
|
|
),
|
|
DECODE (
|
|
v_ins_srtkenmerk_key10,
|
|
NULL, v_ins_kenmerkwaarde10,
|
|
TO_CHAR (v_ins_srtkenmerk_key10)
|
|
|| '='
|
|
|| SUBSTR (v_ins_kenmerkwaarde10, 1, 3900)
|
|
),
|
|
DECODE (
|
|
v_ins_srtkenmerk_key11,
|
|
NULL, v_ins_kenmerkwaarde11,
|
|
TO_CHAR (v_ins_srtkenmerk_key11)
|
|
|| '='
|
|
|| SUBSTR (v_ins_kenmerkwaarde11, 1, 3900)
|
|
),
|
|
DECODE (
|
|
v_ins_srtkenmerk_key12,
|
|
NULL, v_ins_kenmerkwaarde12,
|
|
TO_CHAR (v_ins_srtkenmerk_key12)
|
|
|| '='
|
|
|| SUBSTR (v_ins_kenmerkwaarde12, 1, 3900)
|
|
),
|
|
DECODE (
|
|
v_ins_srtkenmerk_key13,
|
|
NULL, v_ins_kenmerkwaarde13,
|
|
TO_CHAR (v_ins_srtkenmerk_key13)
|
|
|| '='
|
|
|| SUBSTR (v_ins_kenmerkwaarde13, 1, 3900)
|
|
),
|
|
DECODE (
|
|
v_ins_srtkenmerk_key14,
|
|
NULL, v_ins_kenmerkwaarde14,
|
|
TO_CHAR (v_ins_srtkenmerk_key14)
|
|
|| '='
|
|
|| SUBSTR (v_ins_kenmerkwaarde14, 1, 3900)
|
|
),
|
|
DECODE (
|
|
v_ins_srtkenmerk_key15,
|
|
NULL, v_ins_kenmerkwaarde15,
|
|
TO_CHAR (v_ins_srtkenmerk_key15)
|
|
|| '='
|
|
|| SUBSTR (v_ins_kenmerkwaarde15, 1, 3900)
|
|
),
|
|
DECODE (
|
|
v_ins_srtkenmerk_key16,
|
|
NULL, v_ins_kenmerkwaarde16,
|
|
TO_CHAR (v_ins_srtkenmerk_key16)
|
|
|| '='
|
|
|| SUBSTR (v_ins_kenmerkwaarde16, 1, 3900)
|
|
),
|
|
DECODE (
|
|
v_ins_srtkenmerk_key17,
|
|
NULL, v_ins_kenmerkwaarde17,
|
|
TO_CHAR (v_ins_srtkenmerk_key17)
|
|
|| '='
|
|
|| SUBSTR (v_ins_kenmerkwaarde17, 1, 3900)
|
|
),
|
|
DECODE (
|
|
v_ins_srtkenmerk_key18,
|
|
NULL, v_ins_kenmerkwaarde18,
|
|
TO_CHAR (v_ins_srtkenmerk_key18)
|
|
|| '='
|
|
|| SUBSTR (v_ins_kenmerkwaarde18, 1, 3900)
|
|
),
|
|
DECODE (
|
|
v_ins_srtkenmerk_key19,
|
|
NULL, v_ins_kenmerkwaarde19,
|
|
TO_CHAR (v_ins_srtkenmerk_key19)
|
|
|| '='
|
|
|| SUBSTR (v_ins_kenmerkwaarde19, 1, 3900)
|
|
),
|
|
DECODE (
|
|
v_ins_srtkenmerk_key20,
|
|
NULL, v_ins_kenmerkwaarde20,
|
|
TO_CHAR (v_ins_srtkenmerk_key20)
|
|
|| '='
|
|
|| SUBSTR (v_ins_kenmerkwaarde20, 1, 3900)
|
|
),
|
|
v_ins_deel_aanmaak_d,
|
|
v_ins_deel_vervaldatum_d,
|
|
v_ins_deel_aantal_n
|
|
);
|
|
|
|
COMMIT;
|
|
v_count_import := v_count_import + 1;
|
|
EXCEPTION
|
|
WHEN OTHERS
|
|
THEN
|
|
oracle_err_num := SQLCODE;
|
|
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
|
|
v_errormsg :=
|
|
v_errormsg
|
|
|| ' ORACLE (error '
|
|
|| oracle_err_num
|
|
|| '/'
|
|
|| oracle_err_mes
|
|
|| ')';
|
|
fac.imp_writelog (p_import_key,
|
|
'W',
|
|
v_aanduiding || v_errormsg,
|
|
'');
|
|
COMMIT;
|
|
END;
|
|
END IF;
|
|
END IF;
|
|
END;
|
|
END LOOP;
|
|
|
|
IF (header_is_valid = 0)
|
|
THEN
|
|
fac.imp_writelog (p_import_key,
|
|
'E',
|
|
'Ongeldig importbestand',
|
|
'Geen header of header niet volgens specificatie!');
|
|
ELSE
|
|
fac.imp_writelog (
|
|
p_import_key,
|
|
'S',
|
|
'Objecten/aantal ingelezen importregels: ' || TO_CHAR (v_count_tot),
|
|
''
|
|
);
|
|
fac.imp_writelog (
|
|
p_import_key,
|
|
'S',
|
|
'Objecten/aantal ongeldige niet ingelezen importregels: '
|
|
|| TO_CHAR (v_count_tot - v_count_import),
|
|
''
|
|
);
|
|
END IF;
|
|
|
|
COMMIT;
|
|
EXCEPTION
|
|
WHEN OTHERS
|
|
THEN
|
|
oracle_err_num := SQLCODE;
|
|
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
|
|
v_errormsg :=
|
|
v_errormsg
|
|
|| ' ORACLE (error '
|
|
|| oracle_err_num
|
|
|| '/'
|
|
|| oracle_err_mes
|
|
|| ')';
|
|
fac.imp_writelog (p_import_key,
|
|
'E',
|
|
v_aanduiding || v_errormsg,
|
|
'Inleesproces objecten afgebroken! regel:' || v_file_index);
|
|
END fac_import_ins2;
|
|
/
|
|
|
|
|
|
|
|
CREATE OR REPLACE PROCEDURE fac_update_ins2 (p_import_key IN NUMBER)
|
|
AS
|
|
v_errormsg VARCHAR2 (1000) := '-';
|
|
oracle_err_num NUMBER;
|
|
oracle_err_mes VARCHAR2 (200);
|
|
v_aanduiding VARCHAR2 (200);
|
|
|
|
-- SUBPROC
|
|
PROCEDURE add_kostensoort (p_import_key IN NUMBER)
|
|
AS
|
|
CURSOR c1
|
|
IS
|
|
SELECT prs_kostensoort_upper,
|
|
MAX (prs_kostensoort_omschrijving) prs_kostensoort_omschrijving
|
|
FROM ( SELECT UPPER (ins_discipline_kostensoort) prs_kostensoort_upper,
|
|
MAX (ins_discipline_kostensoort) prs_kostensoort_omschrijving
|
|
FROM fac_imp_ins
|
|
WHERE ins_discipline_kostensoort IS NOT NULL
|
|
GROUP BY UPPER (ins_discipline_kostensoort)
|
|
UNION ALL
|
|
SELECT UPPER (res_discipline_kostensoort) prs_kostensoort_upper,
|
|
MAX (res_discipline_kostensoort) prs_kostensoort_omschrijving
|
|
FROM fac_imp_ins
|
|
WHERE reserveerbaar = 1 AND res_discipline_kostensoort IS NOT NULL
|
|
GROUP BY UPPER (res_discipline_kostensoort))
|
|
GROUP BY prs_kostensoort_upper;
|
|
|
|
v_kostensoort_key NUMBER (10);
|
|
ccount NUMBER (10);
|
|
v_count_tot NUMBER (10);
|
|
v_count_update NUMBER (10);
|
|
BEGIN
|
|
v_count_tot := 0;
|
|
v_count_update := 0;
|
|
|
|
FOR rec IN c1
|
|
LOOP
|
|
BEGIN
|
|
v_count_tot := v_count_tot + 1;
|
|
v_errormsg :=
|
|
'Fout bij toevoegen kostensoort [' || rec.prs_kostensoort_omschrijving || ']';
|
|
|
|
SELECT COUNT ( * )
|
|
INTO ccount
|
|
FROM prs_kostensoort
|
|
WHERE TRIM (prs_kostensoort_upper) = rec.prs_kostensoort_upper;
|
|
|
|
IF ccount = 0
|
|
THEN
|
|
INSERT INTO prs_kostensoort (prs_kostensoort_oms)
|
|
VALUES (rec.prs_kostensoort_omschrijving);
|
|
|
|
v_count_update := v_count_update + 1;
|
|
END IF;
|
|
|
|
COMMIT;
|
|
EXCEPTION
|
|
WHEN OTHERS
|
|
THEN
|
|
oracle_err_num := SQLCODE;
|
|
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
|
|
v_errormsg :=
|
|
v_errormsg
|
|
|| ' (error '
|
|
|| oracle_err_num
|
|
|| '/'
|
|
|| oracle_err_mes
|
|
|| ')';
|
|
fac.imp_writelog (p_import_key,
|
|
'W',
|
|
v_errormsg,
|
|
'');
|
|
COMMIT;
|
|
END;
|
|
END LOOP;
|
|
|
|
fac.imp_writelog (p_import_key,
|
|
'S',
|
|
'Kostensoorten/aantal ingelezen: ' || TO_CHAR (v_count_tot),
|
|
'');
|
|
fac.imp_writelog (p_import_key,
|
|
'S',
|
|
'Kostensoorten/aantal toegevoegd: ' || TO_CHAR (v_count_update),
|
|
'');
|
|
COMMIT;
|
|
END;
|
|
|
|
-- SUBPROC
|
|
PROCEDURE add_insdiscipline (p_import_key IN NUMBER)
|
|
AS
|
|
CURSOR c1
|
|
IS
|
|
SELECT UPPER (ins_discipline_omschrijving) ins_discipline_upper,
|
|
UPPER (ins_discipline_kostensoort) ins_kostensoort_upper,
|
|
MAX (ins_discipline_omschrijving) ins_discipline_omschrijving
|
|
FROM fac_imp_ins
|
|
GROUP BY UPPER (ins_discipline_omschrijving), UPPER (ins_discipline_kostensoort);
|
|
|
|
v_discipline_key NUMBER (10);
|
|
v_kostensoort_key NUMBER (10);
|
|
ccount NUMBER (10);
|
|
v_count_tot NUMBER (10);
|
|
v_count_update NUMBER (10);
|
|
BEGIN
|
|
v_count_tot := 0;
|
|
v_count_update := 0;
|
|
|
|
FOR rec IN c1
|
|
LOOP
|
|
BEGIN
|
|
v_count_tot := v_count_tot + 1;
|
|
v_errormsg :=
|
|
'Fout bij toevoegen INS-discipline [' || rec.ins_discipline_omschrijving || ']';
|
|
|
|
SELECT COUNT ( * )
|
|
INTO ccount
|
|
FROM ins_tab_discipline
|
|
WHERE ins_discipline_verwijder IS NULL
|
|
AND ins_discipline_module = 'INS'
|
|
AND UPPER (TRIM (ins_discipline_omschrijving)) = rec.ins_discipline_upper;
|
|
|
|
IF ccount = 0
|
|
THEN
|
|
IF rec.ins_kostensoort_upper IS NULL
|
|
THEN
|
|
v_kostensoort_key := NULL;
|
|
ELSE
|
|
SELECT prs_kostensoort_key
|
|
INTO v_kostensoort_key
|
|
FROM prs_kostensoort
|
|
WHERE TRIM (prs_kostensoort_upper) = rec.ins_kostensoort_upper;
|
|
END IF;
|
|
|
|
INSERT INTO ins_tab_discipline (ins_discipline_module,
|
|
ins_discipline_omschrijving,
|
|
ins_discipline_min_level,
|
|
ins_discipline_kpnverplicht,
|
|
prs_kostensoort_key)
|
|
VALUES ('INS',
|
|
SUBSTR (rec.ins_discipline_omschrijving, 1, 60),
|
|
1,
|
|
0,
|
|
v_kostensoort_key)
|
|
RETURNING ins_discipline_key
|
|
INTO v_discipline_key;
|
|
|
|
INSERT INTO ins_disc_params (ins_discipline_key, ins_disc_params_type)
|
|
VALUES (v_discipline_key, 0);
|
|
|
|
v_count_update := v_count_update + 1;
|
|
END IF;
|
|
|
|
COMMIT;
|
|
EXCEPTION
|
|
WHEN OTHERS
|
|
THEN
|
|
oracle_err_num := SQLCODE;
|
|
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
|
|
v_errormsg :=
|
|
v_errormsg
|
|
|| ' (error '
|
|
|| oracle_err_num
|
|
|| '/'
|
|
|| oracle_err_mes
|
|
|| ')';
|
|
fac.imp_writelog (p_import_key,
|
|
'W',
|
|
v_errormsg,
|
|
'');
|
|
COMMIT;
|
|
END;
|
|
END LOOP;
|
|
|
|
fac.imp_writelog (p_import_key,
|
|
'S',
|
|
'INS-Disciplines/aantal ingelezen: ' || TO_CHAR (v_count_tot),
|
|
'');
|
|
fac.imp_writelog (p_import_key,
|
|
'S',
|
|
'INS-Disciplines/aantal toegevoegd: ' || TO_CHAR (v_count_update),
|
|
'');
|
|
COMMIT;
|
|
END;
|
|
|
|
-- SUBPROC
|
|
PROCEDURE add_resdiscipline (p_import_key IN NUMBER)
|
|
AS
|
|
CURSOR c1
|
|
IS
|
|
SELECT UPPER (res_discipline_omschrijving) res_discipline_upper,
|
|
UPPER (res_discipline_kostensoort) res_kostensoort_upper,
|
|
MAX (res_discipline_omschrijving) res_discipline_omschrijving
|
|
FROM fac_imp_ins
|
|
WHERE reserveerbaar = 1
|
|
GROUP BY UPPER (res_discipline_omschrijving), UPPER (res_discipline_kostensoort);
|
|
|
|
v_discipline_key NUMBER (10);
|
|
v_kostensoort_key NUMBER (10);
|
|
ccount NUMBER (10);
|
|
v_count_tot NUMBER (10);
|
|
v_count_update NUMBER (10);
|
|
BEGIN
|
|
v_count_tot := 0;
|
|
v_count_update := 0;
|
|
|
|
FOR rec IN c1
|
|
LOOP
|
|
BEGIN
|
|
v_count_tot := v_count_tot + 1;
|
|
v_errormsg :=
|
|
'Fout bij toevoegen RES-discipline [' || rec.res_discipline_omschrijving || ']';
|
|
|
|
SELECT COUNT ( * )
|
|
INTO ccount
|
|
FROM ins_tab_discipline
|
|
WHERE ins_discipline_verwijder IS NULL
|
|
AND ins_discipline_module = 'RES'
|
|
AND UPPER (TRIM (ins_discipline_omschrijving)) = rec.res_discipline_upper;
|
|
|
|
IF ccount = 0
|
|
THEN
|
|
IF rec.res_kostensoort_upper IS NULL
|
|
THEN
|
|
v_kostensoort_key := NULL;
|
|
ELSE
|
|
SELECT prs_kostensoort_key
|
|
INTO v_kostensoort_key
|
|
FROM prs_kostensoort
|
|
WHERE TRIM (prs_kostensoort_upper) = rec.res_kostensoort_upper;
|
|
END IF;
|
|
|
|
INSERT INTO ins_tab_discipline (ins_discipline_module,
|
|
ins_discipline_omschrijving,
|
|
ins_discipline_min_level,
|
|
ins_discipline_kpnverplicht,
|
|
prs_kostensoort_key)
|
|
VALUES ('RES',
|
|
SUBSTR (rec.res_discipline_omschrijving, 1, 60),
|
|
1,
|
|
0,
|
|
v_kostensoort_key)
|
|
RETURNING ins_discipline_key
|
|
INTO v_discipline_key;
|
|
|
|
INSERT INTO res_disc_params (res_ins_discipline_key)
|
|
VALUES (v_discipline_key);
|
|
|
|
v_count_update := v_count_update + 1;
|
|
END IF;
|
|
|
|
COMMIT;
|
|
EXCEPTION
|
|
WHEN OTHERS
|
|
THEN
|
|
oracle_err_num := SQLCODE;
|
|
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
|
|
v_errormsg :=
|
|
v_errormsg
|
|
|| ' (error '
|
|
|| oracle_err_num
|
|
|| '/'
|
|
|| oracle_err_mes
|
|
|| ')';
|
|
fac.imp_writelog (p_import_key,
|
|
'W',
|
|
v_errormsg,
|
|
'');
|
|
COMMIT;
|
|
END;
|
|
END LOOP;
|
|
|
|
fac.imp_writelog (p_import_key,
|
|
'S',
|
|
'RES-Disciplines/aantal ingelezen: ' || TO_CHAR (v_count_tot),
|
|
'');
|
|
fac.imp_writelog (p_import_key,
|
|
'S',
|
|
'RES-Disciplines/aantal toegevoegd: ' || TO_CHAR (v_count_update),
|
|
'');
|
|
COMMIT;
|
|
END;
|
|
|
|
-- SUBPROC
|
|
PROCEDURE add_srtgroep (p_import_key IN NUMBER)
|
|
AS
|
|
CURSOR c1
|
|
IS
|
|
SELECT UPPER (ins_discipline_omschrijving) ins_discipline_upper,
|
|
UPPER (ins_srtgroep_omschrijving) ins_srtgroep_upper,
|
|
MAX (ins_discipline_omschrijving) ins_discipline_omschrijving,
|
|
MAX (ins_srtgroep_omschrijving) ins_srtgroep_omschrijving
|
|
FROM fac_imp_ins
|
|
GROUP BY UPPER (ins_discipline_omschrijving), UPPER (ins_srtgroep_omschrijving);
|
|
|
|
v_discipline_key NUMBER (10);
|
|
ccount NUMBER (10);
|
|
v_count_tot NUMBER (10);
|
|
v_count_update NUMBER (10);
|
|
BEGIN
|
|
v_count_tot := 0;
|
|
v_count_update := 0;
|
|
|
|
FOR rec IN c1
|
|
LOOP
|
|
BEGIN
|
|
v_count_tot := v_count_tot + 1;
|
|
v_errormsg := 'Fout bij bepalen discipline';
|
|
|
|
SELECT ins_discipline_key
|
|
INTO v_discipline_key
|
|
FROM ins_tab_discipline
|
|
WHERE ins_discipline_verwijder IS NULL
|
|
AND ins_discipline_module = 'INS'
|
|
AND UPPER (TRIM (ins_discipline_omschrijving)) = rec.ins_discipline_upper;
|
|
|
|
v_errormsg :=
|
|
'Fout bij toevoegen groepsoort [' || rec.ins_srtgroep_omschrijving || '] ';
|
|
|
|
SELECT COUNT ( * )
|
|
INTO ccount
|
|
FROM ins_srtgroep
|
|
WHERE ins_srtgroep_verwijder IS NULL
|
|
AND ins_srtgroep_module = 'INS'
|
|
AND ins_discipline_key = v_discipline_key
|
|
AND TRIM (ins_srtgroep_upper) = rec.ins_srtgroep_upper;
|
|
|
|
IF ccount = 0
|
|
THEN
|
|
INSERT INTO ins_srtgroep (ins_discipline_key,
|
|
ins_srtgroep_module,
|
|
ins_srtgroep_omschrijving)
|
|
VALUES (v_discipline_key,
|
|
'INS',
|
|
SUBSTR (TRIM (rec.ins_srtgroep_omschrijving), 1, 60));
|
|
|
|
v_count_update := v_count_update + 1;
|
|
END IF;
|
|
|
|
COMMIT;
|
|
EXCEPTION
|
|
WHEN OTHERS
|
|
THEN
|
|
oracle_err_num := SQLCODE;
|
|
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
|
|
v_errormsg :=
|
|
v_errormsg
|
|
|| ' (error '
|
|
|| oracle_err_num
|
|
|| '/'
|
|
|| oracle_err_mes
|
|
|| ')';
|
|
fac.imp_writelog (p_import_key,
|
|
'W',
|
|
v_errormsg,
|
|
'');
|
|
COMMIT;
|
|
END;
|
|
END LOOP;
|
|
|
|
fac.imp_writelog (p_import_key,
|
|
'S',
|
|
'Groepsoorten/aantal ingelezen: ' || TO_CHAR (v_count_tot),
|
|
'');
|
|
fac.imp_writelog (p_import_key,
|
|
'S',
|
|
'Groepsoorten/aantal toegevoegd: ' || TO_CHAR (v_count_update),
|
|
'');
|
|
COMMIT;
|
|
END;
|
|
|
|
-- SUBPROC
|
|
PROCEDURE add_srtdeel (p_import_key IN NUMBER)
|
|
AS
|
|
CURSOR c1
|
|
IS
|
|
SELECT UPPER (ins_discipline_omschrijving) ins_discipline_upper,
|
|
UPPER (ins_srtgroep_omschrijving) ins_srtgroep_upper,
|
|
UPPER (ins_srtdeel_code) ins_srtdeel_code_upper,
|
|
UPPER (ins_srtdeel_omschrijving) ins_srtdeel_upper,
|
|
MAX (ins_discipline_omschrijving) ins_discipline_omschrijving,
|
|
MAX (ins_srtgroep_omschrijving) ins_srtgroep_omschrijving,
|
|
MAX (ins_srtdeel_code) ins_srtdeel_code,
|
|
MAX (ins_srtdeel_omschrijving) ins_srtdeel_omschrijving
|
|
FROM fac_imp_ins
|
|
GROUP BY UPPER (ins_discipline_omschrijving),
|
|
UPPER (ins_srtgroep_omschrijving),
|
|
UPPER (ins_srtdeel_code),
|
|
UPPER (ins_srtdeel_omschrijving);
|
|
|
|
v_discipline_key NUMBER (10);
|
|
v_srtgroep_key NUMBER (10);
|
|
ccount NUMBER (10);
|
|
v_count_tot NUMBER (10);
|
|
v_count_update NUMBER (10);
|
|
BEGIN
|
|
v_count_tot := 0;
|
|
v_count_update := 0;
|
|
|
|
FOR rec IN c1
|
|
LOOP
|
|
BEGIN
|
|
v_count_tot := v_count_tot + 1;
|
|
v_errormsg := 'Fout bij bepalen discipline';
|
|
|
|
SELECT ins_discipline_key
|
|
INTO v_discipline_key
|
|
FROM ins_tab_discipline
|
|
WHERE ins_discipline_verwijder IS NULL
|
|
AND ins_discipline_module = 'INS'
|
|
AND UPPER (TRIM (ins_discipline_omschrijving)) = rec.ins_discipline_upper;
|
|
|
|
v_errormsg := 'Fout bij bepalen groepsoort';
|
|
|
|
SELECT ins_srtgroep_key
|
|
INTO v_srtgroep_key
|
|
FROM ins_srtgroep
|
|
WHERE ins_srtgroep_verwijder IS NULL
|
|
AND ins_srtgroep_module = 'INS'
|
|
AND ins_discipline_key = v_discipline_key
|
|
AND TRIM (ins_srtgroep_upper) = rec.ins_srtgroep_upper;
|
|
|
|
v_errormsg :=
|
|
'Fout bij toevoegen objectsoort [' || rec.ins_srtdeel_omschrijving || ']';
|
|
|
|
SELECT COUNT ( * )
|
|
INTO ccount
|
|
FROM ins_srtdeel
|
|
WHERE ins_srtdeel_verwijder IS NULL
|
|
AND ins_srtdeel_module = 'INS'
|
|
AND ins_srtgroep_key = v_srtgroep_key
|
|
AND TRIM (ins_srtdeel_upper) = rec.ins_srtdeel_upper;
|
|
|
|
IF ccount = 0
|
|
THEN
|
|
-- binding 17 betekent ruimtegebonden of persoonsgebonden
|
|
INSERT INTO ins_srtdeel (ins_srtgroep_key,
|
|
ins_srtdeel_module,
|
|
ins_srtdeel_code,
|
|
ins_srtdeel_omschrijving,
|
|
ins_srtdeel_binding)
|
|
VALUES (v_srtgroep_key,
|
|
'INS',
|
|
rec.ins_srtdeel_code,
|
|
rec.ins_srtdeel_omschrijving,
|
|
17);
|
|
|
|
v_count_update := v_count_update + 1;
|
|
END IF;
|
|
|
|
COMMIT;
|
|
EXCEPTION
|
|
WHEN OTHERS
|
|
THEN
|
|
oracle_err_num := SQLCODE;
|
|
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
|
|
v_errormsg :=
|
|
v_errormsg
|
|
|| ' (error '
|
|
|| oracle_err_num
|
|
|| '/'
|
|
|| oracle_err_mes
|
|
|| ')';
|
|
fac.imp_writelog (p_import_key,
|
|
'W',
|
|
v_errormsg,
|
|
'');
|
|
COMMIT;
|
|
END;
|
|
END LOOP;
|
|
|
|
fac.imp_writelog (p_import_key,
|
|
'S',
|
|
'Objectsoorten/aantal ingelezen: ' || TO_CHAR (v_count_tot),
|
|
'');
|
|
fac.imp_writelog (p_import_key,
|
|
'S',
|
|
'Objectsoorten/aantal toegevoegd: ' || TO_CHAR (v_count_update),
|
|
'');
|
|
COMMIT;
|
|
END;
|
|
|
|
-- SUBPROC
|
|
-- p_srtkenmerkgroepwaarde = '234|1=37-ZB-DR'
|
|
-- Ofwel: srtkenmerk_key|groep=waarde
|
|
PROCEDURE upsert_inskenmerk (p_deel_key IN NUMBER,
|
|
p_srtkenmerkgroepwaarde IN VARCHAR2)
|
|
AS
|
|
v_kenmerk_key NUMBER;
|
|
v_srtkenmerk_key NUMBER;
|
|
v_groep NUMBER;
|
|
v_waarde VARCHAR(4000);
|
|
v_srtkenmerk_type VARCHAR2 (1);
|
|
ccount NUMBER;
|
|
v_objectnaam VARCHAR2 (30);
|
|
v_kolomnaam VARCHAR2 (30);
|
|
v_kolomtxt VARCHAR2 (30);
|
|
sql_stmt VARCHAR2 (1000);
|
|
v_kenmerkdeel_key NUMBER;
|
|
l_cursor_1 INTEGER;
|
|
l_rowsprocessed NUMBER DEFAULT 0;
|
|
BEGIN
|
|
IF p_srtkenmerkgroepwaarde IS NOT NULL
|
|
THEN
|
|
v_errormsg := 'Fout bij bepalen kenmerk van soort [' || p_srtkenmerkgroepwaarde || ']';
|
|
|
|
v_srtkenmerk_key := fac.safe_to_number (
|
|
SUBSTR (p_srtkenmerkgroepwaarde, 1, INSTR (p_srtkenmerkgroepwaarde, '|') - 1));
|
|
v_groep := fac.safe_to_number (
|
|
SUBSTR (p_srtkenmerkgroepwaarde,
|
|
INSTR (p_srtkenmerkgroepwaarde, '|') + 1,
|
|
INSTR (p_srtkenmerkgroepwaarde, '=') - 1 - INSTR (p_srtkenmerkgroepwaarde, '|')));
|
|
v_waarde := SUBSTR (p_srtkenmerkgroepwaarde, INSTR (p_srtkenmerkgroepwaarde, '=') + 1);
|
|
|
|
SELECT k.ins_kenmerk_key, sk.ins_srtkenmerk_kenmerktype
|
|
INTO v_kenmerk_key, v_srtkenmerk_type
|
|
FROM ins_deel d,
|
|
ins_srtdeel sd,
|
|
ins_srtgroep sg,
|
|
ins_v_aanwezigkenmerk k,
|
|
ins_v_aanwezigsrtkenmerk sk
|
|
WHERE d.ins_deel_key = p_deel_key
|
|
AND d.ins_srtdeel_key = sd.ins_srtdeel_key
|
|
AND sd.ins_srtgroep_key = sg.ins_srtgroep_key
|
|
AND k.ins_srtkenmerk_key = v_srtkenmerk_key
|
|
AND k.ins_kenmerk_groep = v_groep
|
|
AND ( (k.ins_srtinstallatie_key = sd.ins_srtdeel_key
|
|
AND k.ins_kenmerk_niveau = 'S')
|
|
OR (k.ins_srtinstallatie_key = sg.ins_srtgroep_key
|
|
AND k.ins_kenmerk_niveau = 'G')
|
|
OR (k.ins_srtinstallatie_key = sg.ins_discipline_key
|
|
AND k.ins_kenmerk_niveau = 'D'))
|
|
AND k.ins_srtkenmerk_key = sk.ins_srtkenmerk_key;
|
|
|
|
IF v_waarde IS NOT NULL
|
|
THEN
|
|
IF v_srtkenmerk_type IN ('R', 'S')
|
|
THEN
|
|
v_errormsg := 'Fout bij bepalen eigen tabel';
|
|
|
|
SELECT COUNT ( * )
|
|
INTO ccount
|
|
FROM ins_srtkenmerk sk, fac_kenmerkdomein d
|
|
WHERE sk.ins_srtkenmerk_key = v_srtkenmerk_key
|
|
AND sk.fac_kenmerkdomein_key = d.fac_kenmerkdomein_key
|
|
AND d.fac_usrtab_key IS NOT NULL;
|
|
|
|
v_errormsg := 'Fout bij bepalen nieuwe waarde [' || v_waarde || ']';
|
|
|
|
IF ccount = 1
|
|
THEN -- Eigen tabel
|
|
SELECT TO_CHAR (ud.fac_usrdata_key)
|
|
INTO v_waarde
|
|
FROM ins_srtkenmerk sk, fac_kenmerkdomein d, fac_v_aanwezigusrdata ud
|
|
WHERE sk.ins_srtkenmerk_key = v_srtkenmerk_key
|
|
AND sk.fac_kenmerkdomein_key = d.fac_kenmerkdomein_key
|
|
AND d.fac_usrtab_key = ud.fac_usrtab_key
|
|
AND UPPER (TRIM (ud.fac_usrdata_omschr)) = UPPER (v_waarde);
|
|
ELSE -- FACILITOR view/tabel
|
|
SELECT d.fac_kenmerkdomein_objectnaam,
|
|
d.fac_kenmerkdomein_kolomnaam,
|
|
d.fac_kenmerkdomein_kolomtxt
|
|
INTO v_objectnaam, v_kolomnaam, v_kolomtxt
|
|
FROM ins_srtkenmerk sk, fac_kenmerkdomein d
|
|
WHERE sk.ins_srtkenmerk_key = v_srtkenmerk_key
|
|
AND sk.fac_kenmerkdomein_key = d.fac_kenmerkdomein_key
|
|
AND d.fac_usrtab_key IS NULL;
|
|
|
|
sql_stmt :=
|
|
'SELECT MAX ('
|
|
|| v_kolomnaam
|
|
|| ') FROM '
|
|
|| v_objectnaam
|
|
|| ' WHERE UPPER (TRIM ('
|
|
|| v_kolomtxt
|
|
|| ')) = UPPER (:pwaarde)';
|
|
l_cursor_1 := DBMS_SQL.open_cursor;
|
|
DBMS_SQL.parse (l_cursor_1, sql_stmt, DBMS_SQL.native);
|
|
DBMS_SQL.BIND_VARIABLE(l_cursor_1,':pwaarde', v_waarde);
|
|
DBMS_SQL.define_column(l_cursor_1, 1, v_waarde, 255);
|
|
l_rowsprocessed := DBMS_SQL.execute_and_fetch (l_cursor_1);
|
|
DBMS_SQL.column_value (l_cursor_1, 1, v_waarde);
|
|
DBMS_SQL.close_cursor(l_cursor_1);
|
|
END IF;
|
|
ELSE -- C(Karakter)/D(Datum)/N(Numeriek)/X(Bestandsnaam)
|
|
NULL; -- v_waarde := p_waarde;
|
|
END IF;
|
|
|
|
v_errormsg := 'Fout bij bepalen huidige waarde';
|
|
|
|
SELECT COUNT ( * ), MAX (ins_kenmerkdeel_key)
|
|
INTO ccount, v_kenmerkdeel_key
|
|
FROM ins_v_aanwezigkenmerkdeel
|
|
WHERE ins_deel_key = p_deel_key AND ins_kenmerk_key = v_kenmerk_key;
|
|
|
|
IF v_srtkenmerk_type = 'N' -- Alleen voor numerieke waarden de decimale komma vervangen door punt.
|
|
THEN
|
|
v_waarde := REPLACE (v_waarde, ',', '.');
|
|
END IF;
|
|
|
|
IF ccount = 0
|
|
THEN
|
|
v_errormsg := 'Fout bij toevoegen waarde [' || v_waarde || ']';
|
|
|
|
INSERT INTO ins_kenmerkdeel (ins_deel_key, ins_kenmerk_key, ins_kenmerkdeel_waarde)
|
|
VALUES (p_deel_key, v_kenmerk_key, v_waarde);
|
|
ELSE
|
|
v_errormsg := 'Fout bij bijwerken waarde [' || v_waarde || ']';
|
|
|
|
UPDATE ins_kenmerkdeel
|
|
SET ins_kenmerkdeel_waarde = v_waarde
|
|
WHERE ins_kenmerkdeel_key = v_kenmerkdeel_key;
|
|
END IF;
|
|
ELSE
|
|
-- Verwijder kenmerken die als bestaan maar met de nieuwe import leeg zijn.
|
|
DELETE ins_kenmerkdeel
|
|
WHERE ins_kenmerk_key = v_kenmerk_key
|
|
AND ins_deel_key = p_deel_key;
|
|
END IF;
|
|
END IF;
|
|
EXCEPTION
|
|
WHEN OTHERS
|
|
THEN
|
|
oracle_err_num := SQLCODE;
|
|
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
|
|
v_errormsg :=
|
|
v_errormsg || ' (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
|
|
fac.imp_writelog (p_import_key,
|
|
'W',
|
|
v_aanduiding || v_errormsg,
|
|
'upsert_inskenmerk');
|
|
END;
|
|
|
|
-- SUBPROC
|
|
PROCEDURE add_deel (p_import_key IN NUMBER)
|
|
AS
|
|
CURSOR c1
|
|
IS
|
|
SELECT ins_discipline_omschrijving,
|
|
ins_srtgroep_omschrijving,
|
|
ins_srtdeel_code,
|
|
ins_srtdeel_omschrijving,
|
|
ins_deel_omschrijving,
|
|
ins_deel_opmerking,
|
|
alg_locatie_code,
|
|
alg_gebouw_code,
|
|
alg_verdieping_volgnr,
|
|
alg_ruimte_nr,
|
|
reserveerbaar,
|
|
res_discipline_omschrijving,
|
|
res_deel_eenheid,
|
|
res_deel_prijs,
|
|
res_deel_alg_level,
|
|
prs_perslid_matchcode,
|
|
prs_perslid_matchwaarde,
|
|
ins_kenmerkwaarde1,
|
|
ins_kenmerkwaarde2,
|
|
ins_kenmerkwaarde3,
|
|
ins_kenmerkwaarde4,
|
|
ins_kenmerkwaarde5,
|
|
ins_kenmerkwaarde6,
|
|
ins_kenmerkwaarde7,
|
|
ins_kenmerkwaarde8,
|
|
ins_kenmerkwaarde9,
|
|
ins_kenmerkwaarde10,
|
|
ins_kenmerkwaarde11,
|
|
ins_kenmerkwaarde12,
|
|
ins_kenmerkwaarde13,
|
|
ins_kenmerkwaarde14,
|
|
ins_kenmerkwaarde15,
|
|
ins_kenmerkwaarde16,
|
|
ins_kenmerkwaarde17,
|
|
ins_kenmerkwaarde18,
|
|
ins_kenmerkwaarde19,
|
|
ins_kenmerkwaarde20,
|
|
ins_deel_aanmaak,
|
|
ins_deel_vervaldatum,
|
|
ins_deel_aantal
|
|
FROM fac_imp_ins;
|
|
|
|
v_discipline_key NUMBER (10);
|
|
v_rdiscipline_key NUMBER (10);
|
|
v_srtgroep_key NUMBER (10);
|
|
v_srtdeel_key NUMBER (10);
|
|
v_locatie_key NUMBER (10);
|
|
v_gebouw_key NUMBER (10);
|
|
v_verdieping_key NUMBER (10);
|
|
v_ruimte_key NUMBER (10);
|
|
v_matchkolom VARCHAR2 (255);
|
|
sql_stmt VARCHAR2 (1000);
|
|
v_ruimte_type VARCHAR2 (10);
|
|
v_deel_key NUMBER (10);
|
|
ccount NUMBER (10);
|
|
pcount NUMBER (10);
|
|
v_count_tot NUMBER (10);
|
|
v_count_insnew NUMBER (10);
|
|
v_count_insupd NUMBER (10);
|
|
v_count_resnew NUMBER (10);
|
|
v_srtnoti_code VARCHAR2 (6);
|
|
l_cursor_1 INTEGER;
|
|
l_rowsprocessed NUMBER DEFAULT 0;
|
|
v_ins_deel_aanmaak_d DATE;
|
|
v_ins_deel_vervaldatum_d DATE;
|
|
v_ins_deel_aantal_n NUMBER(8,2);
|
|
BEGIN
|
|
v_count_tot := 0;
|
|
v_count_insnew := 0;
|
|
v_count_insupd := 0;
|
|
v_count_resnew := 0;
|
|
v_aanduiding := '';
|
|
|
|
FOR rec IN c1
|
|
LOOP
|
|
BEGIN
|
|
v_count_tot := v_count_tot + 1;
|
|
v_ins_deel_aanmaak_d := rec.ins_deel_aanmaak;
|
|
v_ins_deel_vervaldatum_d := rec.ins_deel_vervaldatum;
|
|
v_ins_deel_aantal_n := rec.ins_deel_aantal;
|
|
v_aanduiding :=
|
|
'['
|
|
|| rec.ins_discipline_omschrijving
|
|
|| '|'
|
|
|| rec.ins_srtgroep_omschrijving
|
|
|| '|'
|
|
|| rec.ins_srtdeel_code
|
|
|| '|'
|
|
|| rec.ins_srtdeel_omschrijving
|
|
|| '|'
|
|
|| rec.ins_deel_omschrijving
|
|
|| '] ';
|
|
v_errormsg := 'Fout bij bepalen discipline';
|
|
|
|
SELECT ins_discipline_key
|
|
INTO v_discipline_key
|
|
FROM ins_tab_discipline
|
|
WHERE ins_discipline_verwijder IS NULL AND ins_discipline_module = 'INS'
|
|
AND UPPER (TRIM (ins_discipline_omschrijving)) =
|
|
UPPER (rec.ins_discipline_omschrijving);
|
|
|
|
v_errormsg := 'Fout bij bepalen groepsoort';
|
|
|
|
SELECT ins_srtgroep_key
|
|
INTO v_srtgroep_key
|
|
FROM ins_srtgroep
|
|
WHERE ins_srtgroep_verwijder IS NULL
|
|
AND ins_srtgroep_module = 'INS'
|
|
AND ins_discipline_key = v_discipline_key
|
|
AND TRIM (ins_srtgroep_upper) = UPPER (rec.ins_srtgroep_omschrijving);
|
|
|
|
v_errormsg := 'Fout bij bepalen objectsoort';
|
|
|
|
SELECT ins_srtdeel_key
|
|
INTO v_srtdeel_key
|
|
FROM ins_srtdeel
|
|
WHERE ins_srtdeel_verwijder IS NULL
|
|
AND ins_srtdeel_module = 'INS'
|
|
AND ins_srtgroep_key = v_srtgroep_key
|
|
AND TRIM (UPPER(ins_srtdeel_code)) = UPPER (rec.ins_srtdeel_code)
|
|
AND TRIM (ins_srtdeel_upper) = UPPER (rec.ins_srtdeel_omschrijving);
|
|
|
|
v_locatie_key := NULL;
|
|
|
|
IF rec.alg_locatie_code IS NOT NULL
|
|
THEN -- ruimtegebonden object
|
|
v_errormsg := 'Fout bij bepalen locatie [' || rec.alg_locatie_code || ']';
|
|
|
|
SELECT alg_locatie_key
|
|
INTO v_locatie_key
|
|
FROM alg_v_aanweziglocatie
|
|
WHERE UPPER (TRIM (alg_locatie_code)) = UPPER (rec.alg_locatie_code);
|
|
|
|
v_errormsg := 'Fout bij bepalen gebouw [' || rec.alg_gebouw_code || ']';
|
|
|
|
SELECT alg_gebouw_key
|
|
INTO v_gebouw_key
|
|
FROM alg_v_aanweziggebouw
|
|
WHERE alg_locatie_key = v_locatie_key
|
|
AND UPPER (TRIM (alg_gebouw_code)) = UPPER (rec.alg_gebouw_code);
|
|
|
|
v_errormsg :=
|
|
'Fout bij bepalen verdieping [' || rec.alg_verdieping_volgnr || ']';
|
|
|
|
SELECT alg_verdieping_key
|
|
INTO v_verdieping_key
|
|
FROM alg_v_aanwezigverdieping
|
|
WHERE alg_gebouw_key = v_gebouw_key
|
|
AND alg_verdieping_volgnr = rec.alg_verdieping_volgnr;
|
|
|
|
v_errormsg := 'Fout bij bepalen ruimte [' || rec.alg_ruimte_nr || ']';
|
|
|
|
SELECT alg_ruimte_key
|
|
INTO v_ruimte_key
|
|
FROM alg_v_aanwezigruimte
|
|
WHERE alg_verdieping_key = v_verdieping_key
|
|
AND TRIM (alg_ruimte_upper_nr) = UPPER (rec.alg_ruimte_nr);
|
|
|
|
v_ruimte_type := 'R';
|
|
|
|
-- ruimtegebonden objecten hebben een unieke ID binnen locatie
|
|
SELECT COUNT ( * )
|
|
INTO ccount
|
|
FROM ins_v_aanwezigdeel
|
|
WHERE ins_deel_module = 'INS'
|
|
AND ins_srtdeel_key = v_srtdeel_key
|
|
AND ins_alg_ruimte_type = v_ruimte_type -- R
|
|
AND ins_alg_locatie_key = v_locatie_key
|
|
AND TRIM (ins_deel_upper) = UPPER (rec.ins_deel_omschrijving);
|
|
ELSE -- persoonsgebonden object
|
|
v_matchkolom := '';
|
|
|
|
CASE rec.prs_perslid_matchcode
|
|
WHEN '1'
|
|
THEN
|
|
v_matchkolom := 'PRS_PERSLID_EMAIL';
|
|
WHEN '10'
|
|
THEN
|
|
v_matchkolom := 'PRS_PERSLID_EMAIL';
|
|
WHEN '2'
|
|
THEN
|
|
v_matchkolom := 'PRS_PERSLID_OSLOGIN';
|
|
WHEN '20'
|
|
THEN
|
|
v_matchkolom := 'PRS_PERSLID_OSLOGIN';
|
|
WHEN '3'
|
|
THEN
|
|
v_matchkolom := 'PRS_PERSLID_KEY';
|
|
WHEN '30'
|
|
THEN
|
|
v_matchkolom := 'PRS_PERSLID_KEY';
|
|
WHEN '4'
|
|
THEN
|
|
v_matchkolom := 'PRS_PERSLID_NR';
|
|
WHEN '40'
|
|
THEN
|
|
v_matchkolom := 'PRS_PERSLID_NR';
|
|
WHEN '5'
|
|
THEN
|
|
v_matchkolom := 'PRS_PERSLID_VOORNAAM || '' '' || PRS_PERSLID_NAAM';
|
|
WHEN '50'
|
|
THEN
|
|
v_matchkolom := 'PRS_PERSLID_VOORNAAM || '' '' || PRS_PERSLID_NAAM';
|
|
ELSE
|
|
-- voor developers only: indien geen code wordt gebruikt,
|
|
-- kan als persoonmatchcode een kolom uit de perslid-tabel
|
|
-- worden ingevoerd, bijvoorbeeld: prs_perslid_oslogin2
|
|
v_matchkolom := rec.prs_perslid_matchcode;
|
|
END CASE;
|
|
|
|
v_errormsg := 'Fout bij bepalen persoon [' || rec.prs_perslid_matchwaarde || ']';
|
|
sql_stmt :=
|
|
'SELECT MIN (prs_perslid_key), COUNT (prs_perslid_key) '
|
|
|| ' FROM prs_v_aanwezigperslid '
|
|
|| ' WHERE UPPER ('
|
|
|| v_matchkolom
|
|
|| ') = UPPER (:pwaarde) '
|
|
|| 'GROUP BY prs_perslid_key';
|
|
--dbms_output.put_line(rec.prs_perslid_matchwaarde);
|
|
l_cursor_1 := DBMS_SQL.open_cursor;
|
|
DBMS_SQL.parse (l_cursor_1, sql_stmt, DBMS_SQL.native);
|
|
DBMS_SQL.BIND_VARIABLE(l_cursor_1,':pwaarde', rec.prs_perslid_matchwaarde);
|
|
DBMS_SQL.define_column(l_cursor_1, 1, v_ruimte_key);
|
|
DBMS_SQL.define_column(l_cursor_1, 2, pcount);
|
|
l_rowsprocessed := DBMS_SQL.execute_and_fetch (l_cursor_1);
|
|
-- Bij no rows gaat-ie naar de exception. Moet daar dan nog een cursor dicht??
|
|
DBMS_SQL.column_value (l_cursor_1, 1, v_ruimte_key);
|
|
DBMS_SQL.column_value (l_cursor_1, 2, pcount);
|
|
DBMS_SQL.close_cursor(l_cursor_1);
|
|
--dbms_output.put_line(pcount);
|
|
|
|
IF pcount != 1
|
|
THEN
|
|
fac.imp_writelog (p_import_key,
|
|
'W',
|
|
v_aanduiding || v_errormsg,
|
|
'Kan persoon niet 1-duidig bepalen');
|
|
END IF;
|
|
|
|
v_errormsg := 'Fout bij bepalen type koppeling';
|
|
|
|
IF rec.prs_perslid_matchcode in ('10','20','30','40','50') THEN
|
|
v_ruimte_type := 'A' ;
|
|
|
|
-- Koppeling aan Afdeling van desbetreffende
|
|
SELECT prs_afdeling_key
|
|
INTO v_ruimte_key
|
|
FROM prs_v_aanwezigperslid
|
|
WHERE prs_perslid_key = v_ruimte_key;
|
|
|
|
ELSE
|
|
v_ruimte_type := 'P' ;
|
|
END IF;
|
|
|
|
-- persoonsgebonden objecten hebben een unieke ID
|
|
SELECT COUNT ( * )
|
|
INTO ccount
|
|
FROM ins_v_aanwezigdeel
|
|
WHERE ins_deel_module = 'INS'
|
|
AND ins_srtdeel_key = v_srtdeel_key
|
|
AND ins_alg_ruimte_type = v_ruimte_type -- P
|
|
AND ins_alg_locatie_key IS NULL
|
|
AND TRIM (ins_deel_upper) = UPPER (rec.ins_deel_omschrijving);
|
|
END IF;
|
|
|
|
IF ccount = 0
|
|
THEN -- toevoegen object!
|
|
v_errormsg := 'Fout bij toevoegen INS-object';
|
|
|
|
INSERT INTO ins_deel (ins_discipline_key,
|
|
ins_srtdeel_key,
|
|
ins_deel_module,
|
|
ins_deel_omschrijving,
|
|
ins_deel_opmerking,
|
|
ins_alg_ruimte_key,
|
|
ins_alg_ruimte_type,
|
|
ins_alg_locatie_key,
|
|
ins_deel_aanmaak,
|
|
ins_deel_vervaldatum,
|
|
ins_deel_aantal)
|
|
VALUES (v_discipline_key,
|
|
v_srtdeel_key,
|
|
'INS',
|
|
rec.ins_deel_omschrijving,
|
|
rec.ins_deel_opmerking,
|
|
v_ruimte_key,
|
|
v_ruimte_type,
|
|
v_locatie_key,
|
|
v_ins_deel_aanmaak_d,
|
|
v_ins_deel_vervaldatum_d,
|
|
v_ins_deel_aantal_n)
|
|
RETURNING ins_deel_key
|
|
INTO v_deel_key;
|
|
|
|
-- Overslaan als reserveerbaar en geen RES-discipline of andersom,
|
|
-- dus verder geen controle op eventuele inconsistentie!
|
|
IF (rec.reserveerbaar = 1 AND rec.res_discipline_omschrijving IS NOT NULL)
|
|
THEN
|
|
v_errormsg :=
|
|
'Fout bij bepalen RES-discipline ['
|
|
|| rec.res_discipline_omschrijving
|
|
|| ']';
|
|
|
|
SELECT ins_discipline_key
|
|
INTO v_rdiscipline_key
|
|
FROM res_discipline
|
|
WHERE ins_discipline_verwijder IS NULL AND ins_discipline_module = 'RES'
|
|
AND UPPER (TRIM (ins_discipline_omschrijving)) =
|
|
UPPER (rec.res_discipline_omschrijving);
|
|
|
|
v_errormsg := 'Fout bij toevoegen RES-object';
|
|
|
|
INSERT INTO res_deel (res_ins_deel_key,
|
|
res_deel_omschrijving,
|
|
res_deel_opmerking,
|
|
res_deel_eenheid,
|
|
res_deel_prijs,
|
|
res_discipline_key,
|
|
res_deel_alg_level)
|
|
VALUES (v_deel_key,
|
|
rec.ins_deel_omschrijving,
|
|
rec.ins_deel_opmerking,
|
|
rec.res_deel_eenheid,
|
|
rec.res_deel_prijs,
|
|
v_rdiscipline_key,
|
|
rec.res_deel_alg_level);
|
|
|
|
v_count_resnew := v_count_resnew + 1;
|
|
END IF;
|
|
|
|
v_srtnoti_code := 'INSNEW';
|
|
v_count_insnew := v_count_insnew + 1;
|
|
ELSE -- bijwerken object!
|
|
v_errormsg := 'Fout bij bepalen INS-object';
|
|
|
|
SELECT ins_deel_key
|
|
INTO v_deel_key
|
|
FROM ins_v_aanwezigdeel
|
|
WHERE ins_deel_module = 'INS'
|
|
AND ins_srtdeel_key = v_srtdeel_key
|
|
AND ins_alg_ruimte_type = v_ruimte_type -- R/P
|
|
AND COALESCE (ins_alg_locatie_key, -1) = COALESCE (v_locatie_key, -1) -- gevuld/NULL
|
|
AND TRIM (ins_deel_upper) = UPPER (rec.ins_deel_omschrijving);
|
|
|
|
v_srtnoti_code := 'INSUPD';
|
|
v_count_insupd := v_count_insupd + 1;
|
|
END IF;
|
|
|
|
-- NULL-waarden resulteren NIET in het wissen van kenmerkvelden
|
|
-- (bijwerken kan wel, maar wissen dus niet)! ins_kenmerkwaarde1
|
|
upsert_inskenmerk (v_deel_key, rec.ins_kenmerkwaarde1);
|
|
upsert_inskenmerk (v_deel_key, rec.ins_kenmerkwaarde2);
|
|
upsert_inskenmerk (v_deel_key, rec.ins_kenmerkwaarde3);
|
|
upsert_inskenmerk (v_deel_key, rec.ins_kenmerkwaarde4);
|
|
upsert_inskenmerk (v_deel_key, rec.ins_kenmerkwaarde5);
|
|
upsert_inskenmerk (v_deel_key, rec.ins_kenmerkwaarde6);
|
|
upsert_inskenmerk (v_deel_key, rec.ins_kenmerkwaarde7);
|
|
upsert_inskenmerk (v_deel_key, rec.ins_kenmerkwaarde8);
|
|
upsert_inskenmerk (v_deel_key, rec.ins_kenmerkwaarde9);
|
|
upsert_inskenmerk (v_deel_key, rec.ins_kenmerkwaarde10);
|
|
upsert_inskenmerk (v_deel_key, rec.ins_kenmerkwaarde11);
|
|
upsert_inskenmerk (v_deel_key, rec.ins_kenmerkwaarde12);
|
|
upsert_inskenmerk (v_deel_key, rec.ins_kenmerkwaarde13);
|
|
upsert_inskenmerk (v_deel_key, rec.ins_kenmerkwaarde14);
|
|
upsert_inskenmerk (v_deel_key, rec.ins_kenmerkwaarde15);
|
|
upsert_inskenmerk (v_deel_key, rec.ins_kenmerkwaarde16);
|
|
upsert_inskenmerk (v_deel_key, rec.ins_kenmerkwaarde17);
|
|
upsert_inskenmerk (v_deel_key, rec.ins_kenmerkwaarde18);
|
|
upsert_inskenmerk (v_deel_key, rec.ins_kenmerkwaarde19);
|
|
upsert_inskenmerk (v_deel_key, rec.ins_kenmerkwaarde20);
|
|
|
|
fac.trackaction (v_srtnoti_code,
|
|
v_deel_key,
|
|
sys_context('USERENV', 'CLIENT_IDENTIFIER'),
|
|
NULL,
|
|
NULL);
|
|
COMMIT;
|
|
EXCEPTION
|
|
WHEN OTHERS
|
|
THEN
|
|
oracle_err_num := SQLCODE;
|
|
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
|
|
v_errormsg :=
|
|
v_errormsg
|
|
|| ' (error '
|
|
|| oracle_err_num
|
|
|| '/'
|
|
|| oracle_err_mes
|
|
|| ')';
|
|
fac.imp_writelog (p_import_key,
|
|
'W',
|
|
v_aanduiding || v_errormsg,
|
|
'');
|
|
COMMIT;
|
|
END;
|
|
END LOOP;
|
|
|
|
fac.imp_writelog (p_import_key,
|
|
'S',
|
|
'INS-objecten/aantal ingelezen: ' || TO_CHAR (v_count_tot),
|
|
'');
|
|
fac.imp_writelog (p_import_key,
|
|
'S',
|
|
'INS-objecten/aantal toegevoegd: ' || TO_CHAR (v_count_insnew),
|
|
'');
|
|
fac.imp_writelog (p_import_key,
|
|
'S',
|
|
'INS-objecten/aantal bijgewerkt: ' || TO_CHAR (v_count_insupd),
|
|
'');
|
|
fac.imp_writelog (p_import_key,
|
|
'S',
|
|
'RES-objecten/aantal toegevoegd: ' || TO_CHAR (v_count_resnew),
|
|
'');
|
|
COMMIT;
|
|
END;
|
|
-- MAIN
|
|
BEGIN
|
|
add_kostensoort (p_import_key);
|
|
add_insdiscipline (p_import_key);
|
|
add_resdiscipline (p_import_key);
|
|
add_srtgroep (p_import_key);
|
|
add_srtdeel (p_import_key);
|
|
add_deel (p_import_key);
|
|
EXCEPTION
|
|
WHEN OTHERS
|
|
THEN
|
|
oracle_err_num := SQLCODE;
|
|
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
|
|
v_errormsg :=
|
|
v_errormsg || ' (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
|
|
fac.imp_writelog (p_import_key,
|
|
'E',
|
|
v_errormsg,
|
|
'Importproces objecten afgebroken!');
|
|
END fac_update_ins2;
|
|
/
|
|
|
|
------ 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
|