HMOD#58494 -- Implementatie Humanitas Onder Dak - cust sql

svn path=/Customer/trunk/; revision=45411
This commit is contained in:
Jos Migo
2020-01-10 13:07:29 +00:00
parent bc778f5172
commit 9a053d6518

View File

@@ -217,6 +217,8 @@ AS
v_elvy VARCHAR2 (20);
v_hodnet VARCHAR2 (20);
v_proactive VARCHAR2 (20);
v_opmerking VARCHAR2 (1000);
v_volgnr NUMBER (10);
CURSOR c
IS
@@ -229,7 +231,6 @@ BEGIN
---- 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;
@@ -246,12 +247,10 @@ BEGIN
v_errormsg := 'Fout opvragen te importeren rij';
v_aanduiding := '';
-- Lees alle veldwaarden: versiedatum;omschrijving;code;token;mob;hit;lap_en_sim;lapt;tnc;tnc omschrijving;facilitor;adp;absentiemanager;regas;checks;accountview;elvy;hodnet;proactive
-- 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_versiedatum);
v_errormsg := 'Fout opvragen te importeren kolom/rij 2';
fac.imp_getfield (v_newline, c_fielddelimitor, v_omschrijving);
v_errormsg := 'Fout opvragen te importeren kolom/rij 3';
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_token);
fac.imp_getfield (v_newline, c_fielddelimitor, v_mob);
@@ -259,9 +258,7 @@ BEGIN
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_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);
@@ -271,6 +268,7 @@ BEGIN
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;
@@ -279,8 +277,7 @@ BEGIN
-- Skip until the header is found
IF header_is_valid = 0
THEN
IF v_versiedatum = 'versiedatum'
AND v_omschrijving = 'omschrijving'
IF v_omschrijving = 'omschrijving'
AND v_code = 'code'
AND v_token = 'token'
AND v_mob = 'mob'
@@ -298,16 +295,26 @@ BEGIN
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,
@@ -328,7 +335,9 @@ BEGIN
accountview,
elvy,
hodnet,
proactive)
proactive,
volgnr,
opmerking)
VALUES (v_versiedatum,
v_omschrijving,
v_code,
@@ -347,7 +356,9 @@ BEGIN
v_accountview,
v_elvy,
v_hodnet,
v_proactive);
v_proactive,
v_volgnr,
v_opmerking);
END IF;
END;
END LOOP;
@@ -363,7 +374,7 @@ BEGIN
IF v_ongeldig > 0
THEN
ROLLBACK;
-- Met rollback haalt hij ook al mijn errors en warnings weg!?? Daarom een DELETE
-- 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 (
@@ -409,6 +420,8 @@ BEGIN
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,
@@ -429,7 +442,9 @@ CREATE OR REPLACE VIEW hmod_v_koffersysteem
ACCOUNTVIEW,
ELVY,
HODNET,
PROACTIVE
PROACTIVE,
VOLGNR,
OPMERKING
)
AS
SELECT OMSCHRIJVING || ' (' || code || ')' AS omschrijving_totaal,
@@ -450,9 +465,254 @@ AS
accountview,
elvy,
hodnet,
proactive
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;
/
------ payload end ------