PROR#74299 -- Inrichten Prorail omgeving

svn path=/Customer/trunk/; revision=60861
This commit is contained in:
Norbert Wassink
2023-06-20 19:10:00 +00:00
parent 66ac426624
commit ae6dcebb0f

View File

@@ -41,6 +41,8 @@ AS
PROCEDURE inactivate_prs;
PROCEDURE mandateer_prs(p_perslid_key IN NUMBER);
@@ -101,204 +103,53 @@ AS
FROM prs_v_aanwezigperslid p
WHERE p.prs_perslid_login <
TRUNC (ADD_MONTHS (SYSDATE, -12), 'mm')
AND NOT EXISTS (SELECT * -- alleen de NIET AFAS account moeten worden verwijderd
FROM prs_kenmerklink pkl, prs_kenmerk pk
WHERE pk.prs_kenmerk_upper='AFAS ACCOUNT'
AND pk.prs_kenmerk_key = pkl.prs_kenmerk_key
AND pkl.prs_link_key=p.prs_perslid_key
AND pkl.prs_kenmerklink_waarde='1')
GROUP BY p.prs_perslid_key, p.prs_perslid_oslogin;
BEGIN
FOR rec IN prs_del
LOOP
BEGIN
v_errormsg := 'Verwijderen van de persoon is NIET gelukt';
v_errorhint :=
'Heeft de persoon met prs_perslid_key '
|| TO_CHAR (rec.prs_perslid_key)
|| ' historie?';
SELECT prs_perslid_naam_full, prs_perslid_nr
INTO v_perslid_naam, v_perslid_nr
FROM prs_perslid p, prs_v_perslid_fullnames pf
WHERE p.prs_perslid_key = pf.prs_perslid_key
AND p.prs_perslid_key = rec.prs_perslid_key;
-- *** Budgethouderschap ***
-- Voor hoeveel kostenplaatsen is deze persoon budgethouder?
SELECT COUNT (*)
INTO v_count
FROM prs_kostenplaats
WHERE prs_perslid_key = rec.prs_perslid_key;
IF (v_count > 0)
THEN
UPDATE prs_kostenplaats
SET prs_perslid_key = NULL
WHERE prs_perslid_key = rec.prs_perslid_key;
fac.writelog (
'inact_prs',
'I',
'Budgethouderschap van te verwijderen persoon ('
|| v_count
|| ' stuks) vervallen.',
'Naam/persoonsnr: '
|| v_perslid_naam
|| '/'
|| v_perslid_nr);
END IF;
-- *** Vervangers ***
-- koppelingen met vervangers dienen ook verwijderd te worden
SELECT COUNT (*)
INTO v_count
FROM prs_collega
WHERE prs_perslid_key = rec.prs_perslid_key
OR prs_perslid_key_alt = rec.prs_perslid_key;
IF (v_count > 0)
THEN
DELETE FROM prs_collega
WHERE prs_perslid_key = rec.prs_perslid_key
OR prs_perslid_key_alt = rec.prs_perslid_key;
fac.writelog (
'inact_prs',
'I',
'Te verwijderen persoon heeft vervanger(s). Koppeling(en) verwijderd.',
'Naam/persoonsnr: '
|| v_perslid_naam
|| '/'
|| v_perslid_nr);
END IF;
-- *** werkplekken ***
DELETE prs_perslidwerkplek
WHERE prs_perslid_key = rec.prs_perslid_key;
-- *** Verplichtingen ***
SELECT COUNT (*)
INTO v_count
FROM prs_v_verplichting_refcheck vp
WHERE vp.prs_perslid_key = rec.prs_perslid_key;
IF v_count = 0
THEN
-- Persoon heeft geen enkele (actuele of historische) verplichting
v_errorhint :=
'Verwijderen van persoon met key '
|| TO_CHAR (rec.prs_perslid_key);
-- Referenties in tabellen naar deze pers_perslid_key moeten eerst verwijderd worden.
-- Door cascade verwijderen van deze record onstaan audits op die tabellen die audit tracking hebben.
-- Daardoor onstaan "ORxA-04091:table VLKC.FAC_AUDIT is mutating, trigger/function may not see it" foutmeldingen
-- op de delete van de prs_perslid_key uit de prs_perslid tabel.
-- De tabellen prs_kostenplaats, prs_kostenplaatsgrp, prs_perslidkostenplaats en fac_gebruikersgroep hebben een prs_perslid_key referentie en audit tracking.
DELETE FROM prs_kostenplaats
WHERE prs_perslid_key = rec.prs_perslid_key;
DELETE FROM prs_kostenplaatsgrp
WHERE prs_perslid_key = rec.prs_perslid_key;
DELETE FROM prs_perslidkostenplaats
WHERE prs_perslid_key = rec.prs_perslid_key;
DELETE FROM fac_gebruikersgroep
WHERE prs_perslid_key = rec.prs_perslid_key;
DELETE FROM prs_perslid
WHERE prs_perslid_key = rec.prs_perslid_key;
fac.writelog (
'inact_prs',
'I',
'Persoon verwijderd.',
'Achternaam/persoonsnr: '
|| v_perslid_naam
|| '/'
|| v_perslid_nr);
ELSE
-- Controleer of er ACTUELE verplichtingen zijn
SELECT COUNT (*)
INTO v_count
FROM prs_v_verplichting_keys vp
WHERE vp.prs_perslid_key = rec.prs_perslid_key;
IF v_count > 0
THEN
UPDATE prs_perslid
SET prs_perslid_naam =
SUBSTR ('INACTIEF:' || prs_perslid_naam,
1,
60),
prs_perslid_oslogin = NULL,
prs_perslid_oslogin2 = NULL
WHERE prs_perslid_key = rec.prs_perslid_key
AND prs_perslid_naam NOT LIKE 'INACTIEF:%';
fac.writelog (
'inact_prs',
'I',
'Persoon als INACTIEF gemarkeerd of was al INACTIEF gemarkeerd.',
'Achternaam/persoonsnr: '
|| v_perslid_naam
|| '/'
|| v_perslid_nr);
ELSE
BEGIN
UPDATE prs_perslid
SET prs_perslid_verwijder = SYSDATE
WHERE prs_perslid_key = rec.prs_perslid_key;
fac.writelog (
'inact_prs',
'I',
'Persoon ge?ctiveerd.',
'Achternaam/persoonsnr: '
|| v_perslid_naam
|| '/'
|| v_perslid_nr);
EXCEPTION
WHEN OTHERS
THEN
-- Kennelijk heeft de persoon toch ernstige verplichtingen
v_errorhint :=
'Persoon heeft nog (max. '
|| TO_CHAR (v_count)
|| ') verplichtingen. Naam/persoonsnr: '
|| v_perslid_naam
|| '/'
|| v_perslid_nr;
fac.writelog (
'inact_prs',
'I',
'Inactiveren persoon is niet gelukt',
v_errorhint);
END;
END IF;
END IF;
EXCEPTION
WHEN OTHERS
THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
v_errormsg :=
'(ORACLE error '
|| oracle_err_num
|| '/'
|| oracle_err_mes
|| ')';
fac.writelog ('inact_prs',
'E',
v_errormsg,
v_errorhint);
END;
prs.delete_perslid(NULL, rec.prs_perslid_key);
END LOOP;
END;
-- Mandateren op alle kostenplaatsen
PROCEDURE mandateer_prs(p_perslid_key IN NUMBER)
AS
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
v_errormsg VARCHAR2 (200);
BEGIN
v_errormsg :='Mandatering voor '||(p_perslid_key);
INSERT INTO prs_perslidkostenplaats(prs_perslid_key,
prs_perslidkostenplaats_boeken,
prs_perslidkostenplaats_inzage,
prs_perslidkostenplaats_aanmk)
VALUES(p_perslid_key,
1,
0,
SYSDATE);
EXCEPTION
WHEN OTHERS
THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
v_errormsg :=
'OTHERS (error '
|| oracle_err_num
|| '/'
|| oracle_err_mes
|| ')';
fac.writelog ('Mandatering medewerker',
'E',
v_errormsg,
'');
END;
END;
/
@@ -638,14 +489,7 @@ BEGIN
FOR rec_man IN p_mandaat
LOOP
INSERT INTO prs_perslidkostenplaats(prs_perslid_key,
prs_perslidkostenplaats_boeken,
prs_perslidkostenplaats_inzage,
prs_perslidkostenplaats_aanmk)
VALUES(rec_man.prs_perslid_key,
1,
0,
SYSDATE);
pror.mandateer_prs(rec_man.prs_perslid_key);
END LOOP;
COMMIT;
@@ -689,6 +533,20 @@ END;
-- END IMPORT ins_deel
CREATE OR REPLACE PROCEDURE pror_daily
AS
BEGIN
-- inactiveren personen die 12 maanden niet hebben ingelogd
pror.inactivate_prs ();
END;
/
-- NOTIFICATIE VIEWS
-- Noifictaie View tbv te late annulering outlook reservereing inc catering
@@ -707,18 +565,18 @@ CREATE OR REPLACE VIEW pror_v_outl_cat_annu
)
AS
SELECT DISTINCT rrr.res_reservering_key||'/'||rrr.RES_RSV_RUIMTE_VOLGNR reserveringNr,
rrr.res_rsv_ruimte_key key,
rrr.res_reservering_key key,
'CUST02' cust_code,
'Reservering '||rrr.res_reservering_key||'/'||rrr.RES_RSV_RUIMTE_VOLGNR||' op '|| TO_CHAR(rrr.res_rsv_ruimte_van,'DD-MM-YYYY HH24:MI')||' is verwijderd buiten anullerings horizon.' text,
(SElECT p.prs_perslid_naam_friendly
FROM prs_v_perslid_fullnames_all p
WHERE p.prs_perslid_key= rrr.RES_RSV_RUIMTE_HOST_KEY) gastheer,
'norbert.wassink@facilitor.nl' receiver,
--'cateringmanagerprorail@prorail.nl' receiver,
null receiver,
NULL sender,
NULL xemail,
'norbert.wassink@facilitor.nl' xemail,
--'cateringmanagerprorail@prorail.nl' xemail,
NULL xmobile,
NULL xkey
rrr.res_rsv_ruimte_key xkey
FROM res_rsv_ruimte rrr, res_rsv_artikel rra
WHERE rrr.res_rsv_ruimte_verwijder IS NOT NULL
AND rrr.res_status_fo_key=4
@@ -726,7 +584,39 @@ AS
AND NOT EXISTS (SElECT *
FROM fac_tracking ft
WHERE fac_tracking_refkey=rrr.res_rsv_ruimte_key
AND ft.fac_srtnotificatie_key=281);
AND ft.fac_srtnotificatie_key=223
AND ft.fac_tracking_oms LIKE '%CUST02%');
CREATE OR REPLACE VIEW pror_v_outl_cat_annu
(
sender,
receiver,
code,
text,
key,
xkey,
xemail,
xmobile
)
AS
SELECT
NULL sender,
rrr.res_rsv_ruimte_host_key receiver,
'CUST01'code,
'Reservering '||rrr.res_reservering_key||'/ '||rrr.res_rsv_ruimte_volgnr||
' is door '||(SELECT prs_perslid_naam_friendly FROM prs_v_perslid_fullnames WHERE prs_perslid_key= rrr.res_rsv_ruimte_contact_key)||
' voor u aangemaakt.' text,
rrr.res_reservering_key key,
NULL xkey,
NULL xemail,
NULL xmobile
FROM res_rsv_ruimte rrr
WHERE rrr.res_rsv_ruimte_host_key<>rrr.res_rsv_ruimte_contact_key
AND NOT EXISTS (SELECT *
FROM fac_tracking ft
WHERE fac_tracking_refkey=rrr.res_rsv_ruimte_key
AND ft.fac_srtnotificatie_key=223
AND ft.fac_tracking_oms LIKE '%CUST01%');
-- EINDE NOTIFICATIE VIEWS
@@ -1399,19 +1289,15 @@ END;
/
-- EINDE PROVAT EXPORT
-- EXPORT VAN CATERING BESTELLINGE TBV COMPASSGROUP
-- EXPORT VAN CATERING BESTELLINGE TBV Eurest
--
CREATE OR REPLACE PROCEDURE PROR_SELECT_COMPASS_CAT(
p_applname IN VARCHAR2,
p_applrun IN VARCHAR2
)
-- VIEW TBV EUREST EXPORT (ook gebruikt in rapportage)
CREATE OR REPLACE VIEW pror_v_select_eurest_cat
AS
CURSOR sel
IS
SELECT distinct rra.res_rsv_ruimte_key rrr_key,
SELECT distinct rra.res_rsv_ruimte_key rrr_key,
rrr.res_reservering_key||'/'||rrr.res_rsv_ruimte_volgnr reservering,
rrr.res_rsv_ruimte_opmerking opmerking,
null extra_opmerking,
rrr.res_rsv_ruimte_van van,
rrr.res_rsv_ruimte_tot tot,
(SELECT prs_perslid_naam_friendly FROM prs_v_perslid_fullnames WHERE prs_perslid_key=rrr.res_rsv_ruimte_contact_key) aanvrager,
@@ -1447,14 +1333,75 @@ AS
AND rra.res_artikel_key = ra.res_artikel_key
-- AND ra.res_discipline_key = rd.ins_discipline_key
-- AND rd.ins_discipline_key = rdp.res_ins_discipline_key
AND rra.res_status_bo_key = 5 -- afgemeld
AND rrr.res_status_bo_key = 2 -- afgemeld
AND rrr.RES_STATUS_FO_KEY = 2
--AND rdp.prs_bedrijf_key = b.prs_bedrijf_key
--AND rdp.prs_bedrijf_key = 90501 -- Cirfood algemeen
AND p.prs_perslid_key=rrr.res_rsv_ruimte_contact_key
AND rra.res_rsv_artikel_verwijder IS NULL
AND rrr.res_rsv_ruimte_verwijder IS NULL
AND rrr.res_rsv_ruimte_externsyncdate IS NULL;
AND rrr.res_rsv_ruimte_externsyncdate IS NULL
UNION
SELECT distinct rra.res_rsv_ruimte_key rrr_key,
rrr.res_reservering_key||'/'||rrr.res_rsv_ruimte_volgnr reservering,
rrr.res_rsv_ruimte_opmerking opmerking,
'Te late annulering' extra_opmerking,
rrr.res_rsv_ruimte_van van,
rrr.res_rsv_ruimte_tot tot,
(SELECT prs_perslid_naam_friendly FROM prs_v_perslid_fullnames WHERE prs_perslid_key=rrr.res_rsv_ruimte_contact_key) aanvrager,
p.prs_perslid_telefoonnr telefoon,
p.prs_perslid_email email,
k.prs_kostenplaats_key,
k.prs_kostenplaats_nr kostenplaats,
k.prs_kostenplaats_omschrijving,
-- b.prs_bedrijf_key,
-- b.prs_overeenkomst_nr,
COALESCE (
(SELECT alg_ruimte_nr
FROM alg_v_allonrgoed_gegevens alg
WHERE alg.alg_ruimte_key=rrr.alg_ruimte_key),
(SELECT MIN(alg.alg_ruimte_nr)
FROM res_ruimte_opstelling rro, res_ruimte rr, res_alg_ruimte rarm, alg_v_ruimte_gegevens_all alg
WHERE rrr.res_ruimte_opstel_key = rro.res_ruimte_opstel_key
AND rr.res_ruimte_key = rro.res_ruimte_key
AND rarm.res_ruimte_key = rr.res_ruimte_key
AND rarm.res_alg_ruimte_verwijder IS NULL
AND alg.alg_ruimte_key = rarm.alg_ruimte_key)) ruimtenr
FROM res_rsv_artikel rra,
res_artikel ra,
-- res_discipline rd,
-- res_disc_params rdp,
-- prs_bedrijf b,
res_rsv_ruimte rrr,
prs_kostenplaats k,
prs_v_perslid_gegevens p
WHERE rrr.res_rsv_ruimte_van > TO_DATE('01-05-2022','DD-MM-YYYY')
AND rrr.res_rsv_ruimte_key = rra.res_rsv_ruimte_key
AND rrr.prs_kostenplaats_key = k.prs_kostenplaats_key(+)
AND rra.res_artikel_key = ra.res_artikel_key
-- AND ra.res_discipline_key = rd.ins_discipline_key
-- AND rd.ins_discipline_key = rdp.res_ins_discipline_key
AND rrr.res_status_fo_key = 4 -- vervallen en te laat uit outllok afgemeld
AND rrr.res_status_bo_key = 2 -- vervallen en te laat uit outllok afgemeld
--AND rdp.prs_bedrijf_key = b.prs_bedrijf_key
--AND rdp.prs_bedrijf_key = 90501 -- Cirfood algemeen
AND p.prs_perslid_key=rrr.res_rsv_ruimte_contact_key
--AND rra.res_rsv_artikel_verwijder IS NULL
-- AND rrr.res_rsv_ruimte_verwijder IS NULL
AND rrr.RES_RSV_RUIMTE_EXTERNNR IS NOT NULL
AND rrr.res_rsv_ruimte_externsyncdate IS NULL;
CREATE OR REPLACE PROCEDURE PROR_SELECT_EUREST_CAT(
p_applname IN VARCHAR2,
p_applrun IN VARCHAR2
)
AS
CURSOR sel
IS
SELECT *
FROM PROR_V_SELECT_EUREST_CAT
WHERE TO_CHAR(van,'MM')=TO_CHAR(ADD_MONTHS(SYSDATE,-1),'MM');
CURSOR sel_art(p_rrr_key NUMBER)
IS
@@ -1472,7 +1419,7 @@ AS
res_discipline rd
WHERE rra.res_rsv_ruimte_key=p_rrr_key
AND rra.res_artikel_key = ra.res_artikel_key
AND rra.res_status_bo_key = 5 -- afgemeld
-- AND rra.res_status_bo_key = 2 -- afgemeld
AND rra.res_rsv_artikel_verwijder IS NULL
AND ra.res_artikel_btw IN (0, 9, 21)
AND rd.ins_discipline_key=ra.res_discipline_key;
@@ -1485,7 +1432,7 @@ AS
v_artikelprijs NUMBER;
BEGIN
v_bestand :='CMPS-EX';
v_bestand :='EUR-EX';
v_counter:=0;
-- CIRFOOD settings
@@ -1501,7 +1448,7 @@ BEGIN
pror.add_xml_row (v_bestand, '<?xml version="1.0" encoding="windows-1252"?>');
pror.add_xml_row (v_bestand, '<Message version="1.1">');
pror.add_xml_row (v_bestand, '<Header>');
pror.add_xml_row (v_bestand, '<ShopToken>'||v_shop_token||'</ShopToken>');
/* pror.add_xml_row (v_bestand, '<ShopToken>'||v_shop_token||'</ShopToken>'); */
pror.add_xml_row (v_bestand, '<Sender>');
pror.add_xml_row (v_bestand, '<ID>1</ID>');
pror.add_xml_row (v_bestand, '<Name>Prorail</Name>');
@@ -1568,11 +1515,11 @@ BEGIN
pror.add_xml_element (v_bestand, 'VatPercentage',rec_art.btw);
pror.add_xml_row(v_bestand, '</Price>');
pror.add_xml_row(v_bestand, '</OrderLine>');
-- UPDATE res_rsv_artikel SET res_rsv_artikel_externsyncdate=SYSDATE WHERE res_rsv_artikel_key=rec_art.res_rsv_artikel_key;
UPDATE res_rsv_artikel SET res_rsv_artikel_externsyncdate=SYSDATE WHERE res_rsv_artikel_key=rec_art.res_rsv_artikel_key;
END LOOP;
pror.add_xml_row(v_bestand, '</OrderLines>');
pror.add_xml_row(v_bestand, '</Order>');
-- UPDATE res_rsv_ruimte SET res_rsv_ruimte_externsyncdate=SYSDATE WHERE res_rsv_ruimte_key=rec.rrr_key;
UPDATE res_rsv_ruimte SET res_rsv_ruimte_externsyncdate=SYSDATE WHERE res_rsv_ruimte_key=rec.rrr_key;
END LOOP;
pror.add_xml_row (v_bestand, '</Orders>');
pror.add_xml_row (v_bestand, '</Content>');
@@ -1586,7 +1533,7 @@ BEGIN
END;
/
CREATE OR REPLACE VIEW PROR_V_EXPORT_COMPASS_CAT
CREATE OR REPLACE VIEW PROR_V_EXPORT_EUREST_CAT
(
result,
result_order
@@ -1594,7 +1541,7 @@ CREATE OR REPLACE VIEW PROR_V_EXPORT_COMPASS_CAT
AS
SELECT fac_rapport_regel, fac_rapport_volgnr
FROM fac_rapport
WHERE fac_rapport_node LIKE 'CMPS-EX%';
WHERE fac_rapport_node LIKE 'EUR-EX%';
-- EINDE EXPORT COMPASSGROUP
------ payload end ------