1673 lines
72 KiB
SQL
1673 lines
72 KiB
SQL
--
|
|
-- $Id$
|
|
--
|
|
-- Script containing customer specific sql statements for the FACILITOR database SCHG
|
|
|
|
DEFINE thisfile = 'SCHG.SQL'
|
|
DEFINE dbuser = 'SCHG'
|
|
|
|
SET ECHO ON
|
|
SET DEFINE ON
|
|
COLUMN fcltlogfile NEW_VALUE fcltlogfile NOPRINT;
|
|
COLUMN fcltcusttxt NEW_VALUE fcltcusttxt NOPRINT;
|
|
WHENEVER SQLERROR CONTINUE;
|
|
SELECT adm.getscriptspoolfile('&thisfile') AS fcltlogfile FROM DUAL;
|
|
SPOOL &fcltlogfile
|
|
WHENEVER SQLERROR EXIT;
|
|
SELECT adm.checkscriptcust('&dbuser') AS fcltcusttxt FROM DUAL;
|
|
WHENEVER SQLERROR CONTINUE;
|
|
---------------------------------------
|
|
PROMPT &fcltcusttxt
|
|
---------------------------------------
|
|
SET DEFINE OFF
|
|
|
|
------ payload begin ------
|
|
|
|
-------------------------------
|
|
--- DOMEINVIEWS ---------------
|
|
-------------------------------
|
|
|
|
-- Lijst van mederwerkers
|
|
CREATE OR REPLACE VIEW schg_v_medewerkers
|
|
(
|
|
PRS_PERSLID_KEY,
|
|
PRS_PERSLID_NAAM,
|
|
PRS_PERSLID_NR,
|
|
PRS_PERSLID_EMAIL,
|
|
PRS_PERSLID_MOBIEL,
|
|
PRS_PERSLID_VERWIJDER
|
|
)
|
|
AS
|
|
SELECT
|
|
p.prs_perslid_key,
|
|
CASE WHEN p.prs_perslid_tussenvoegsel IS NULL
|
|
THEN p.prs_perslid_voornaam || ' ' || p.prs_perslid_naam || ' (' || sp.prs_srtperslid_omschrijving || ')'
|
|
ELSE p.prs_perslid_voornaam || ' ' || p.prs_perslid_tussenvoegsel || ' ' || p.prs_perslid_naam || ' (' || sp.prs_srtperslid_omschrijving || ')'
|
|
END
|
|
prs_perslid_naam,
|
|
p.prs_perslid_nr,
|
|
p.prs_perslid_email,
|
|
p.prs_perslid_mobiel,
|
|
p.prs_perslid_verwijder
|
|
FROM
|
|
prs_perslid p,
|
|
prs_srtperslid sp,
|
|
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 = 21 -- bedrijfs_key Scharenborggroep -
|
|
AND p.prs_srtperslid_key = sp.prs_srtperslid_key
|
|
ORDER BY sp.prs_srtperslid_omschrijving, p.prs_perslid_voornaam, p.prs_perslid_naam ;
|
|
|
|
CREATE OR REPLACE VIEW schg_v_businessunits
|
|
(
|
|
PRS_AFDELING_KEY,
|
|
PRS_AFDELING_NAAM,
|
|
PRS_BEDRIJF_NAAM,
|
|
PRS_AFDELING_VERWIJDER
|
|
)
|
|
AS
|
|
SELECT a.prs_afdeling_key,
|
|
a.prs_afdeling_naam3,
|
|
b.prs_bedrijf_naam,
|
|
a.prs_afdeling_verwijder
|
|
FROM prs_v_afdeling a, prs_bedrijf b
|
|
WHERE a.prs_bedrijf_key = b.prs_bedrijf_key
|
|
AND a.niveau = 1
|
|
AND a.prs_afdeling_verwijder IS NULL
|
|
AND a.prs_bedrijf_key = 21 ;
|
|
|
|
CREATE OR REPLACE VIEW schg_v_leveranciers
|
|
(
|
|
PRS_BEDRIJF_KEY,
|
|
PRS_BEDRIJF_NAAM,
|
|
PRS_BEDRIJF_PLAATS,
|
|
PRS_BEDRIJF_VERWIJDER
|
|
)
|
|
AS
|
|
SELECT
|
|
b.prs_bedrijf_key,
|
|
b.prs_bedrijf_naam,
|
|
b.prs_bedrijf_bezoek_plaats,
|
|
b.prs_bedrijf_verwijder
|
|
FROM prs_bedrijf b
|
|
WHERE prs_bedrijf_intern IS NULL
|
|
AND b.prs_bedrijf_leverancier = 1
|
|
ORDER BY b.prs_bedrijf_naam;
|
|
|
|
CREATE OR REPLACE VIEW schg_v_contractanten
|
|
(
|
|
PRS_BEDRIJF_KEY,
|
|
PRS_BEDRIJF_NAAM,
|
|
PRS_BEDRIJF_PLAATS,
|
|
PRS_BEDRIJF_VERWIJDER
|
|
)
|
|
AS
|
|
SELECT
|
|
b.prs_bedrijf_key,
|
|
b.prs_bedrijf_naam,
|
|
b.prs_bedrijf_bezoek_plaats,
|
|
b.prs_bedrijf_verwijder
|
|
FROM prs_bedrijf b
|
|
WHERE prs_bedrijf_intern IS NULL
|
|
AND b.prs_bedrijf_contract = 1
|
|
ORDER BY b.prs_bedrijf_naam;
|
|
|
|
|
|
CREATE OR REPLACE VIEW schg_v_simkaarten
|
|
(
|
|
INS_DEEL_KEY,
|
|
SIMKAART
|
|
)
|
|
AS
|
|
SELECT
|
|
v.ins_deel_key,
|
|
CASE
|
|
WHEN d.ins_deel_vervaldatum IS NOT NULL THEN v.ins_deel_upper || ' (vervaldatum ' || to_char(d.ins_deel_vervaldatum,'dd-mm-yyyy') || ')'
|
|
ELSE v.ins_deel_upper END
|
|
simkaart
|
|
FROM ins_v_deel_gegevens v, ins_deel d
|
|
WHERE v.ins_discipline_key = 182 -- SIM-kaarten
|
|
AND v.ins_srtdeel_key = 5 -- SIM-kaarten
|
|
AND v.ins_deel_key = d.ins_deel_key
|
|
AND d.ins_deel_verwijder IS NULL
|
|
AND (d.ins_deel_vervaldatum IS NULL OR TRUNC(d.ins_deel_vervaldatum) > TRUNC(sysdate) ) ;
|
|
|
|
CREATE OR REPLACE VIEW schg_v_contracten_vh -- verkoop huur
|
|
(
|
|
CNT_CONTRACT_KEY,
|
|
OMSCHRIJVING, -- Soort - Nr.versie - Omschrijving
|
|
CONTRACTANT, -- Voor extra_tekstkolom
|
|
VERVALDATUM -- Alle contracten die al meer dan 2 maanden verlopen zijn, worden niet meer getoond in keuzelijst
|
|
)
|
|
AS
|
|
SELECT c.cnt_contract_key,
|
|
c.cnt_contract_nummer_intern
|
|
|| DECODE (c.cnt_contract_versie,
|
|
NULL, '.0',
|
|
'.' || c.cnt_contract_versie)
|
|
|| ' - '
|
|
|| c.cnt_contract_omschrijving
|
|
|| ' (' || TO_CHAR(c.cnt_contract_looptijd_tot, 'dd-mm-yyyy') || ')'
|
|
omschrijving,
|
|
(SELECT prs_bedrijf_naam
|
|
FROM prs_bedrijf
|
|
WHERE prs_bedrijf_key = c.cnt_prs_bedrijf_key)
|
|
contractant,
|
|
c.cnt_contract_looptijd_tot + 60
|
|
vervaldatum
|
|
FROM cnt_contract c, ins_tab_discipline d
|
|
WHERE c.ins_discipline_key = d.ins_discipline_key
|
|
AND d.ins_discipline_module = 'CNT'
|
|
AND d.ins_discipline_key = 22 -- huurcontract verkoop extern
|
|
;
|
|
|
|
CREATE OR REPLACE VIEW schg_v_contracten_ih --intern huurcontract
|
|
(
|
|
CNT_CONTRACT_KEY,
|
|
OMSCHRIJVING, -- Soort - Nr.versie - Omschrijving
|
|
CONTRACTANT, -- Voor extra_tekstkolom
|
|
VERVALDATUM -- Alle contracten die al meer dan 2 maanden verlopen zijn, worden niet meer getoond in keuzelijst
|
|
)
|
|
AS
|
|
SELECT c.cnt_contract_key,
|
|
c.cnt_contract_nummer_intern
|
|
|| DECODE (c.cnt_contract_versie,
|
|
NULL, '.0',
|
|
'.' || c.cnt_contract_versie)
|
|
|| ' - '
|
|
|| c.cnt_contract_omschrijving
|
|
|| ' (' || TO_CHAR(c.cnt_contract_looptijd_tot, 'dd-mm-yyyy') || ')'
|
|
omschrijving,
|
|
(SELECT prs_bedrijf_naam
|
|
FROM prs_bedrijf
|
|
WHERE prs_bedrijf_key = c.cnt_prs_bedrijf_key)
|
|
contractant,
|
|
c.cnt_contract_looptijd_tot + 60
|
|
vervaldatum
|
|
FROM cnt_contract c, ins_tab_discipline d,
|
|
(
|
|
SELECT prs_bedrijf_key,
|
|
prs_bedrijf_naam,
|
|
CASE WHEN flx.getflex ('PRS', 1000, b.prs_bedrijf_key, 'B') IS NULL THEN 0 ELSE 1 END
|
|
contract_partij_intern
|
|
FROM prs_bedrijf b
|
|
) bi -- bedrijf_intern
|
|
WHERE c.ins_discipline_key = d.ins_discipline_key
|
|
AND d.ins_discipline_module = 'CNT'
|
|
AND d.ins_discipline_key = 21 -- huurcontract vg
|
|
AND c.cnt_prs_bedrijf_key = bi.prs_bedrijf_key
|
|
AND bi.contract_partij_intern = 1
|
|
;
|
|
|
|
|
|
-------------------------------
|
|
--- RAPPORTAGES - DWH ---------
|
|
-------------------------------
|
|
|
|
CREATE OR REPLACE VIEW SCHG_V_CNT_DWH_HUURVG
|
|
(
|
|
CONTRACTSOORT,
|
|
CONTRACTTYPE, -- inkoop / verkoop
|
|
CONTRACT_NR,
|
|
CONTRACT_KEY,
|
|
ORGANISATIE_CODE,
|
|
ORGANISATIE_NAAM,
|
|
ORGANISATIE_BU_NAAM,
|
|
CONTRACT_KOSTENPLAATS_CODE,
|
|
CONTRACT_KOSTENPLAATS_OMS,
|
|
CONTRACT_PARTIJ,
|
|
CONTRACT_PARTIJ_INTERN,
|
|
CONTRACT_LOOPTIJD_VAN,
|
|
CONTRACT_LOOPTIJD_TOT,
|
|
CONTRACT_FASE_ACTIEF,
|
|
CONTRACT_STATUS,
|
|
CONTRACT_STATUS_SCHG,
|
|
CONTRACT_OPGEZEGD,
|
|
BESTEDING_CONTRACTUEEL,
|
|
BESTEDING_AVOND,
|
|
BESTEDING_DAGDEEL_BEHANDELING,
|
|
BESTEDING_DAGDEEL_OVERIG,
|
|
POD_AGENDA_AANTAL, -- aantal agenda's gekoppeld
|
|
LOCATIE_GEKOPPELD,
|
|
OH_ONDERHUUR_AANTAL -- aantal onderhuur-contracten gekoppeld
|
|
)
|
|
AS
|
|
SELECT d.ins_discipline_omschrijving
|
|
contractsoort,
|
|
CASE
|
|
WHEN dp.cnt_disc_params_verkoopcontr = 1 THEN 'verkoop'
|
|
ELSE 'inkoop'
|
|
END
|
|
contracttype,
|
|
c.cnt_contract_nummer_intern
|
|
|| '.'
|
|
|| DECODE (c.cnt_contract_versie,
|
|
NULL, '0',
|
|
c.cnt_contract_versie)
|
|
contract_nr,
|
|
c.cnt_contract_key,
|
|
cbu.prs_afdeling_naam2
|
|
organisatie_code,
|
|
cbu.prs_afdeling_naam3
|
|
organisatie_naam,
|
|
cbu.bu_naam
|
|
organisatie_bedrijfsnaam, -- BU-Scharenborggroep
|
|
kp.prs_kostenplaats_nr
|
|
contract_kostenplaats_code,
|
|
kp.prs_kostenplaats_omschrijving
|
|
contract_kostenplaats_oms,
|
|
b.prs_bedrijf_naam
|
|
contract_partij,
|
|
CASE WHEN flx.getflex ('PRS', 1000, b.prs_bedrijf_key, 'B') IS NULL THEN 0 ELSE 1 END
|
|
contract_partij_intern,
|
|
c.cnt_contract_looptijd_van
|
|
contract_looptijd_van,
|
|
c.cnt_contract_looptijd_tot
|
|
contract_looptijd_tot,
|
|
DECODE (cnt.cnt_contract_status (
|
|
c.cnt_contract_looptijd_van,
|
|
cnt.cnt_getrappeldatum (c.cnt_contract_key),
|
|
cnt.cnt_getopzegdatum (c.cnt_contract_key),
|
|
c.cnt_contract_looptijd_tot),
|
|
0, lcl.l ('lcl_cnt_future'),
|
|
1, lcl.l ('lcl_cnt_topical'),
|
|
2, lcl.l ('lcl_cnt_warn'),
|
|
3, lcl.l ('lcl_cnt_cancel'),
|
|
4, lcl.l ('lcl_cnt_past'))
|
|
contract_fase_actief,
|
|
DECODE (
|
|
c.cnt_contract_status,
|
|
0, DECODE (fac.getsetting ('cnt_contract_approval'),
|
|
1, lcl.l ('lcl_cnt_active_approval'),
|
|
lcl.l ('lcl_cnt_active')),
|
|
1, lcl.l ('lcl_cnt_inactive'),
|
|
2, lcl.l ('lcl_cnt_new'),
|
|
3, lcl.l ('lcl_cnt_forapproval'))
|
|
contract_status,
|
|
flx.getdomeinwaarde(2,
|
|
flx.getflex ('CNT',
|
|
COALESCE(
|
|
(SELECT MAX(k.cnt_kenmerk_key)
|
|
FROM cnt_kenmerk k
|
|
WHERE k.cnt_srtkenmerk_key = 22
|
|
AND k.cnt_kenmerk_verwijder IS NULL
|
|
AND k.cnt_srtcontract_key IS NULL), -1),
|
|
c.cnt_contract_key)
|
|
)
|
|
contract_status_schg,
|
|
flx.getflex ('CNT', 19, c.cnt_contract_key)
|
|
contract_opgezegd,
|
|
flx.getdomeinwaarde(5,
|
|
flx.getflex ('CNT',
|
|
COALESCE(
|
|
(SELECT MAX(k.cnt_kenmerk_key)
|
|
FROM cnt_kenmerk k
|
|
WHERE k.cnt_srtkenmerk_key = 25
|
|
AND k.cnt_kenmerk_omschrijving = 'Contractueel?'
|
|
AND k.cnt_kenmerk_verwijder IS NULL
|
|
AND k.cnt_srtcontract_key = c.ins_discipline_key), -1),
|
|
c.cnt_contract_key)
|
|
)
|
|
besteding_contractueel,
|
|
flx.getdomeinwaarde(5,
|
|
flx.getflex ('CNT',
|
|
COALESCE(
|
|
(SELECT MAX(k.cnt_kenmerk_key)
|
|
FROM cnt_kenmerk k
|
|
WHERE k.cnt_srtkenmerk_key = 25
|
|
AND k.cnt_kenmerk_omschrijving = 'Avonduren mogelijk?'
|
|
AND k.cnt_kenmerk_verwijder IS NULL
|
|
AND k.cnt_srtcontract_key = c.ins_discipline_key), -1),
|
|
c.cnt_contract_key)
|
|
)
|
|
besteding_avond,
|
|
flx.getflex (
|
|
'CNT',
|
|
COALESCE(
|
|
(SELECT MAX(k.cnt_kenmerk_key)
|
|
FROM cnt_kenmerk k
|
|
WHERE k.cnt_srtkenmerk_key = 12
|
|
AND k.cnt_kenmerk_omschrijving = 'Dagdeel - behandeling'
|
|
AND k.cnt_kenmerk_verwijder IS NULL
|
|
AND k.cnt_srtcontract_key = c.ins_discipline_key), -1),
|
|
c.cnt_contract_key)
|
|
besteding_dagdeel_behandeling,
|
|
flx.getflex (
|
|
'CNT',
|
|
COALESCE(
|
|
(SELECT MAX(k.cnt_kenmerk_key)
|
|
FROM cnt_kenmerk k
|
|
WHERE k.cnt_srtkenmerk_key = 12
|
|
AND k.cnt_kenmerk_omschrijving = 'Dagdeel - overig'
|
|
AND k.cnt_kenmerk_verwijder IS NULL
|
|
AND k.cnt_srtcontract_key = c.ins_discipline_key), -1),
|
|
c.cnt_contract_key)
|
|
besteding_dagdeel_overig,
|
|
am.agenda_aantal,
|
|
cl.locatie_gekoppeld,
|
|
oh.oh_aantal
|
|
FROM cnt_contract c,
|
|
prs_kostenplaats kp,
|
|
ins_tab_discipline d,
|
|
cnt_disc_params dp,
|
|
(SELECT a.prs_afdeling_key,
|
|
a.prs_afdeling_naam2,
|
|
a.prs_afdeling_naam3,
|
|
a1.prs_afdeling_naam3
|
|
bu_naam,
|
|
b.prs_bedrijf_naam
|
|
FROM prs_v_afdeling a, prs_bedrijf b, prs_v_afdeling_boom ab, prs_v_afdeling a1
|
|
WHERE a.prs_bedrijf_key = b.prs_bedrijf_key AND a.prs_afdeling_key = ab.prs_afdeling_key AND ab.prs_afdeling_key1 = a1.prs_afdeling_key
|
|
AND a.prs_afdeling_verwijder IS NULL) cbu, -- bu_contract_afdeling
|
|
prs_bedrijf b,
|
|
( SELECT c.cnt_contract_key,
|
|
COUNT (kc.cnt_kenmerkcontract_key)
|
|
agenda_aantal,
|
|
MAX (kc.cnt_kenmerkcontract_waarde)
|
|
agenda_key_fac
|
|
FROM cnt_contract c, cnt_kenmerkcontract kc, cnt_kenmerk k
|
|
WHERE c.cnt_contract_key = kc.cnt_contract_key
|
|
AND kc.cnt_kenmerk_key = k.cnt_kenmerk_key
|
|
AND kc.cnt_kenmerkcontract_verwijder IS NULL
|
|
AND k.cnt_kenmerk_verwijder IS NULL
|
|
AND k.cnt_srtkenmerk_key = 26 -- POD_AGENDA
|
|
GROUP BY c.cnt_contract_key) am, -- agenda_max, - detailgegevens in SCHG_V_CNT_DWH_HUURVG2
|
|
( SELECT c.cnt_contract_key,
|
|
COUNT (kc.cnt_kenmerkcontract_key)
|
|
oh_aantal,
|
|
MAX (kc.cnt_kenmerkcontract_waarde)
|
|
oh_contract_key
|
|
FROM cnt_contract c, cnt_kenmerkcontract kc, cnt_kenmerk k
|
|
WHERE c.cnt_contract_key = kc.cnt_contract_key
|
|
AND kc.cnt_kenmerk_key = k.cnt_kenmerk_key
|
|
AND kc.cnt_kenmerkcontract_verwijder IS NULL
|
|
AND k.cnt_kenmerk_verwijder IS NULL
|
|
AND k.cnt_srtkenmerk_key IN (23, 24) -- Onderhuur - gekoppelde interne en extern huurcontracten
|
|
GROUP BY c.cnt_contract_key) oh, -- Tonen er eentje MAX - detailgegevens in SCHG_V_CNT_DWH_HUURVG3
|
|
( SELECT cp.cnt_contract_key,
|
|
LISTAGG (
|
|
l.alg_locatie_omschrijving
|
|
|| ' - '
|
|
|| l.alg_locatie_plaats,
|
|
', ')
|
|
WITHIN GROUP (ORDER BY cp.cnt_contract_plaats_key) AS locatie_gekoppeld
|
|
FROM cnt_contract_plaats cp, alg_locatie l
|
|
WHERE cp.cnt_alg_plaats_code = 'L'
|
|
AND cp.cnt_alg_plaats_key = l.alg_locatie_key
|
|
GROUP BY cp.cnt_contract_key) cl -- contract_locatie(s)
|
|
WHERE c.prs_kostenplaats_key = kp.prs_kostenplaats_key
|
|
AND c.ins_discipline_key = d.ins_discipline_key
|
|
AND c.ins_discipline_key IN (21, 22) -- Alleen alle huurcontracten VG en alle huurcontracten VG EXTERNE VERKOOP. De contracten ANDERS sluiten we vooralsnog uit. ACTIE IN PROD KEY 21 en 22
|
|
AND d.ins_discipline_key = dp.cnt_ins_discipline_key(+)
|
|
AND c.cnt_prs_bedrijf_key = b.prs_bedrijf_key
|
|
AND c.prs_afdeling_key_eig = cbu.prs_afdeling_key
|
|
AND c.cnt_contract_key = am.cnt_contract_key(+)
|
|
AND c.cnt_contract_key = oh.cnt_contract_key(+)
|
|
AND c.cnt_contract_key = cl.cnt_contract_key(+);
|
|
|
|
CREATE OR REPLACE VIEW SCHG_V_CNT_DWH_HUURVG2
|
|
(
|
|
CONTRACT_NR,
|
|
CONTRACT_KEY,
|
|
ORGANISATIE_CODE,
|
|
POD_AGENDA_KEY,
|
|
VERVALDATUM
|
|
)
|
|
AS
|
|
SELECT c.cnt_contract_nummer_intern
|
|
|| '.'
|
|
|| DECODE (c.cnt_contract_versie,
|
|
NULL, '0',
|
|
c.cnt_contract_versie)
|
|
contract_nr,
|
|
c.cnt_contract_key
|
|
contract_key,
|
|
cbu.prs_afdeling_naam2
|
|
organisatie_code,
|
|
t.agenda_key_fac
|
|
pod_agenda_key,
|
|
t.fac_usrdata_vervaldatum
|
|
vervaldatum
|
|
FROM cnt_contract c,
|
|
prs_kostenplaats kp,
|
|
ins_tab_discipline d,
|
|
cnt_disc_params dp,
|
|
(SELECT a.prs_afdeling_key,
|
|
a.prs_afdeling_naam2,
|
|
a.prs_afdeling_naam3,
|
|
a1.prs_afdeling_naam3
|
|
bu_naam,
|
|
b.prs_bedrijf_naam
|
|
FROM prs_v_afdeling a, prs_bedrijf b, prs_v_afdeling_boom ab, prs_v_afdeling a1
|
|
WHERE a.prs_bedrijf_key = b.prs_bedrijf_key AND a.prs_afdeling_key = ab.prs_afdeling_key AND ab.prs_afdeling_key1 = a1.prs_afdeling_key
|
|
AND a.prs_afdeling_verwijder IS NULL) cbu, -- bu_contract_afdeling
|
|
prs_bedrijf b,
|
|
( SELECT c.cnt_contract_key,
|
|
kc.cnt_kenmerkcontract_waarde agenda_key_fac
|
|
FROM cnt_contract c, cnt_kenmerkcontract kc, cnt_kenmerk k
|
|
WHERE c.cnt_contract_key = kc.cnt_contract_key
|
|
AND kc.cnt_kenmerk_key = k.cnt_kenmerk_key
|
|
AND kc.cnt_kenmerkcontract_verwijder IS NULL
|
|
AND k.cnt_kenmerk_verwijder IS NULL
|
|
AND k.cnt_srtkenmerk_key = 26 -- POD_AGENDA
|
|
) ag, -- agenda,
|
|
(
|
|
SELECT ud.fac_usrdata_key, SUBSTR (ud.fac_usrdata_code, 5) agenda_key_fac, ud.fac_usrdata_vervaldatum
|
|
FROM fac_usrtab ut, fac_usrdata ud
|
|
WHERE ut.fac_usrtab_key = ud.fac_usrtab_key
|
|
AND ut.fac_usrtab_key = 24 -- eigen tabel POD_AGENDA_2
|
|
AND ud.fac_usrdata_verwijder IS NULL
|
|
) t -- eigen tabel waar agendas in opgenomen zijn
|
|
WHERE c.prs_kostenplaats_key = kp.prs_kostenplaats_key
|
|
AND c.ins_discipline_key = d.ins_discipline_key
|
|
AND c.ins_discipline_key IN (21) -- Alleen alle huurcontracten VG
|
|
AND d.ins_discipline_key = dp.cnt_ins_discipline_key(+)
|
|
AND c.cnt_prs_bedrijf_key = b.prs_bedrijf_key
|
|
AND c.prs_afdeling_key_eig = cbu.prs_afdeling_key
|
|
AND c.cnt_contract_key = ag.cnt_contract_key(+)
|
|
AND ag.agenda_key_fac = t.fac_usrdata_key (+) ;
|
|
|
|
-- Onderhuur - alle gekoppelde onderhuurcontracten per contract_key
|
|
CREATE OR REPLACE VIEW SCHG_V_CNT_DWH_HUURVG3
|
|
(
|
|
CONTRACT_NR,
|
|
CONTRACT_KEY,
|
|
ORGANISATIE_CODE,
|
|
OH_CONTRACT_KEY,
|
|
OH_CONTRACT_SOORT
|
|
)
|
|
AS
|
|
SELECT c.cnt_contract_nummer_intern
|
|
|| '.'
|
|
|| DECODE (c.cnt_contract_versie,
|
|
NULL, '0',
|
|
c.cnt_contract_versie)
|
|
contract_nr,
|
|
c.cnt_contract_key
|
|
contract_key,
|
|
cbu.prs_afdeling_naam2
|
|
organisatie_code,
|
|
oh.oh_contract_key
|
|
oh_contract_key,
|
|
oh.oh_contract_soort
|
|
FROM cnt_contract c,
|
|
prs_kostenplaats kp,
|
|
ins_tab_discipline d,
|
|
cnt_disc_params dp,
|
|
(SELECT a.prs_afdeling_key,
|
|
a.prs_afdeling_naam2,
|
|
a.prs_afdeling_naam3,
|
|
a1.prs_afdeling_naam3
|
|
bu_naam,
|
|
b.prs_bedrijf_naam
|
|
FROM prs_v_afdeling a, prs_bedrijf b, prs_v_afdeling_boom ab, prs_v_afdeling a1
|
|
WHERE a.prs_bedrijf_key = b.prs_bedrijf_key AND a.prs_afdeling_key = ab.prs_afdeling_key AND ab.prs_afdeling_key1 = a1.prs_afdeling_key
|
|
AND a.prs_afdeling_verwijder IS NULL) cbu, -- bu_contract_afdeling
|
|
prs_bedrijf b,
|
|
( SELECT c.cnt_contract_key,
|
|
kc.cnt_kenmerkcontract_waarde
|
|
oh_contract_key,
|
|
CASE WHEN k.cnt_srtkenmerk_key = 23 THEN 'Inkoop Intern'
|
|
WHEN k.cnt_srtkenmerk_key = 24 THEN 'Inkoop Extern'
|
|
ELSE ''
|
|
END
|
|
oh_contract_soort
|
|
FROM cnt_contract c, cnt_kenmerkcontract kc, cnt_kenmerk k
|
|
WHERE c.cnt_contract_key = kc.cnt_contract_key
|
|
AND kc.cnt_kenmerk_key = k.cnt_kenmerk_key
|
|
AND kc.cnt_kenmerkcontract_verwijder IS NULL
|
|
AND k.cnt_kenmerk_verwijder IS NULL
|
|
AND k.cnt_srtkenmerk_key IN (23, 24)
|
|
) oh -- Onderhuur - gekoppelde interne en extern huurcontracten
|
|
WHERE c.prs_kostenplaats_key = kp.prs_kostenplaats_key
|
|
AND c.ins_discipline_key = d.ins_discipline_key
|
|
AND c.ins_discipline_key IN (21) -- Alleen op Huurcontracten VG
|
|
AND d.ins_discipline_key = dp.cnt_ins_discipline_key(+)
|
|
AND c.cnt_prs_bedrijf_key = b.prs_bedrijf_key
|
|
AND c.prs_afdeling_key_eig = cbu.prs_afdeling_key
|
|
AND c.cnt_contract_key = oh.cnt_contract_key(+)
|
|
ORDER BY c.cnt_contract_key;
|
|
|
|
|
|
-------------------------------
|
|
--- RAPPORTAGE ---------------
|
|
-------------------------------
|
|
|
|
-- Dit rapport toont alle fouten van vandaag die in de tracking tabel zijn gelogd
|
|
CREATE OR REPLACE VIEW SCHG_V_RAP_TOPDESK_LOG
|
|
(
|
|
TRACKING_KEY,
|
|
MELDINGNR,
|
|
OPDR_NR,
|
|
TRACKING_DATUM,
|
|
TRACKING_OMS,
|
|
RESPONSE,
|
|
AANTAL_X
|
|
)
|
|
AS
|
|
SELECT tracking_key,
|
|
meldingnr,
|
|
opdr_nr,
|
|
tracking_datum,
|
|
tracking_oms,
|
|
response,
|
|
RANK () OVER (PARTITION BY meldingnr ORDER BY tracking_key) aantal_x
|
|
FROM (SELECT m.mld_melding_externnr
|
|
topdesknr,
|
|
TO_CHAR (m.mld_melding_key)
|
|
meldingnr,
|
|
m.mld_melding_key || '/' || o.mld_opdr_bedrijfopdr_volgnr
|
|
opdr_nr,
|
|
t.fac_tracking_key
|
|
tracking_key,
|
|
t.fac_tracking_datum
|
|
tracking_datum,
|
|
t.fac_tracking_oms
|
|
tracking_oms,
|
|
CASE
|
|
WHEN UPPER (t.fac_tracking_oms) LIKE
|
|
'%CREATING CHANGE TOPDESK%'
|
|
THEN
|
|
fac.safe_to_number (
|
|
SUBSTR (t.fac_tracking_oms, 34))
|
|
WHEN UPPER (t.fac_tracking_oms) LIKE
|
|
'%CREATING INCIDENT TOPDESK%'
|
|
THEN
|
|
fac.safe_to_number (
|
|
SUBSTR (t.fac_tracking_oms, 36))
|
|
WHEN UPPER (t.fac_tracking_oms) LIKE
|
|
'%UPDATING CHANGE TOPDESK%'
|
|
THEN
|
|
fac.safe_to_number (
|
|
SUBSTR (t.fac_tracking_oms, 34))
|
|
WHEN UPPER (t.fac_tracking_oms) LIKE
|
|
'%UPDATING INCIDENT TOPDESK%'
|
|
THEN
|
|
fac.safe_to_number (
|
|
SUBSTR (t.fac_tracking_oms, 36))
|
|
END
|
|
response
|
|
FROM fac_tracking t, mld_opdr o, mld_melding m
|
|
WHERE t.fac_tracking_refkey = o.mld_opdr_key
|
|
AND o.mld_melding_key = m.mld_melding_key
|
|
AND ( UPPER (fac_tracking_oms) LIKE
|
|
'%CREATING CHANGE TOPDESK%'
|
|
OR UPPER (fac_tracking_oms) LIKE
|
|
'%CREATING INCIDENT TOPDESK%'
|
|
OR UPPER (fac_tracking_oms) LIKE
|
|
'%UPDATING CHANGE TOPDESK%'
|
|
OR UPPER (fac_tracking_oms) LIKE
|
|
'%UPDATING INCIDENT TOPDESK%')
|
|
/*
|
|
UNION ALL
|
|
SELECT m.mld_melding_externnr
|
|
topdesknr,
|
|
TO_CHAR (m.mld_melding_key)
|
|
meldingnr,
|
|
m.mld_melding_key || '/' || o.mld_opdr_bedrijfopdr_volgnr
|
|
opdr_nr,
|
|
t.fac_tracking_key
|
|
tracking_key,
|
|
t.fac_tracking_datum
|
|
tracking_datum,
|
|
t.fac_tracking_oms
|
|
tracking_oms,
|
|
999
|
|
response
|
|
FROM fac_tracking t, mld_opdr o, mld_melding m
|
|
WHERE t.fac_tracking_refkey = o.mld_opdr_key
|
|
AND o.mld_melding_key = m.mld_melding_key
|
|
AND UPPER (fac_tracking_oms) LIKE '%TOPDESK%'
|
|
AND t.fac_srtnotificatie_key IN (225, 228, 59) -- MLDTRK, ORDTRK, MLDDOO
|
|
*/
|
|
)
|
|
WHERE response >= 400 AND TRUNC (SYSDATE) = TRUNC (tracking_datum)
|
|
GROUP BY tracking_key,
|
|
meldingnr,
|
|
opdr_nr,
|
|
tracking_datum,
|
|
tracking_oms,
|
|
response
|
|
ORDER BY meldingnr, tracking_datum DESC;
|
|
|
|
|
|
-------------------------------
|
|
--- PROCEDURES ---------------
|
|
-------------------------------
|
|
|
|
CREATE OR REPLACE PROCEDURE schg_import_perslid (p_import_key IN NUMBER)
|
|
AS
|
|
v_seq_of_columns VARCHAR (255);
|
|
oracle_err_num NUMBER;
|
|
oracle_err_mes VARCHAR2 (200);
|
|
v_errormsg VARCHAR2 (200);
|
|
v_errorhint VARCHAR2 (200);
|
|
|
|
-- overige variabelen
|
|
v_prs_afdeling_key NUMBER(10);
|
|
|
|
CURSOR c_afd
|
|
IS
|
|
SELECT i.fac_imp_file_index, i.prs_perslid_email, i.prs_afdeling_naam,
|
|
p.prs_perslid_key,
|
|
CASE WHEN p.prs_perslid_key IS NOT NULL
|
|
THEN (SELECT a.prs_afdeling_naam FROM prs_perslid pp, prs_afdeling a WHERE pp.prs_afdeling_key = a.prs_afdeling_key AND pp.prs_perslid_key = p.prs_perslid_key )
|
|
ELSE NULL
|
|
END
|
|
prs_afdeling_naam_huidig
|
|
FROM fac_imp_perslid i, prs_v_aanwezigperslid p
|
|
WHERE fac_import_key = p_import_key
|
|
AND i.prs_perslid_email = p.prs_perslid_email (+) ;
|
|
|
|
-- unieke oslogin binnen deze tenant
|
|
CURSOR c_oslogin
|
|
IS
|
|
SELECT i.fac_imp_file_index,
|
|
prs_perslid_email,
|
|
prs_perslid_nr,
|
|
prs_perslid_oslogin,
|
|
prs_perslid_voornaam,
|
|
prs_srtperslid_omschrijving,
|
|
prs_perslid_key,
|
|
( SELECT COUNT (*)
|
|
FROM fac_imp_perslid
|
|
WHERE prs_perslid_oslogin = i.prs_perslid_oslogin
|
|
AND fac_imp_file_index < i.fac_imp_file_index
|
|
GROUP BY prs_perslid_oslogin) check_dubbel
|
|
FROM fac_imp_perslid i
|
|
ORDER BY fac_imp_file_index;
|
|
|
|
-- unieke oslogin buiten deze tenant
|
|
CURSOR c_oslogin_b
|
|
IS
|
|
SELECT w.fac_imp_file_index,
|
|
w.prs_perslid_oslogin,
|
|
w.prs_perslid_email,
|
|
w.prs_perslid_nr,
|
|
w.tenant_import,
|
|
v.tenant_prskaart
|
|
FROM (
|
|
SELECT i.fac_imp_file_index, i.prs_perslid_oslogin, i.prs_perslid_nr, i.prs_perslid_email, i.prs_kenmerk13 tenant_import FROM fac_imp_perslid i WHERE i.prs_afdeling_naam IS NOT NULL AND i.prs_perslid_oslogin IS NOT NULL
|
|
) w,
|
|
(
|
|
SELECT p.prs_perslid_key,
|
|
p.prs_perslid_oslogin,
|
|
p.prs_perslid_email,
|
|
(SELECT kw.prs_kenmerklink_waarde
|
|
FROM prs_kenmerklink kw
|
|
WHERE kw.prs_kenmerk_key = 1060
|
|
AND kw.prs_kenmerklink_niveau = 'P'
|
|
AND kw.prs_link_key = p.prs_perslid_key)
|
|
tenant_prskaart -- het importbestand_schg in personenkaart
|
|
FROM prs_v_aanwezigperslid p,
|
|
prs_v_afdeling_boom ab
|
|
WHERE p.prs_afdeling_key = ab.prs_afdeling_key
|
|
AND ab.prs_bedrijf_key = 21 -- bedrijf Scharenborg Groep
|
|
AND prs_perslid_oslogin IS NOT NULL
|
|
) v
|
|
WHERE w.prs_perslid_oslogin = v.prs_perslid_oslogin
|
|
AND w.tenant_import <> tenant_prskaart
|
|
ORDER BY w.fac_imp_file_index;
|
|
|
|
|
|
BEGIN
|
|
-- Import csv formaat - kolommen:
|
|
-- 1. User Principal Name
|
|
-- 2. Display Name
|
|
-- 3. Given Name
|
|
-- 4. Surname
|
|
-- 5. Job Title
|
|
-- 6. Department
|
|
-- 7. Employee ID
|
|
-- 8. Office Location
|
|
-- 9. Mobile Phone
|
|
-- 10. Business Phone
|
|
-- 11. Street Address
|
|
-- 12. City
|
|
-- 13. State
|
|
-- 14. Postal Code
|
|
-- 15. Country
|
|
-- 16. Account Enabled
|
|
-- 17. Manager Email
|
|
-- 18. Object ID
|
|
-- 19. User Type
|
|
-- 20. Creation Type
|
|
-- 21. Usage Location
|
|
-- 22. Sign-In Names
|
|
-- 23. Other Mails
|
|
|
|
|
|
v_seq_of_columns := '0;0;0;0;0;0;19;19;0;3;'
|
|
-- v_alg_locatie_code 1
|
|
-- v_alg_gebouw_code 2
|
|
-- v_alg_verdieping_volgnr 3
|
|
-- v_alg_ruimte_nr 4
|
|
-- v_prs_werkplek_volgnr 5
|
|
-- v_prs_werkplek_omschrijving 6
|
|
-- v_prs_afdeling_naam 7 -- VERPLICHT BIJ IMPORT - Initieel vullen met User type (want department is nog niet altijd gevuld..)
|
|
-- v_prs_perslid_naam 8 -- VERPLICHT BIJ IMPORT - Initieel vullen met User type (want naam is niet altijd gevuld..)
|
|
-- v_prs_perslid_tussenvoegsel 9
|
|
-- v_prs_perslid_voornaam 10
|
|
|| '0;0;0;0;0;0;0;1;0;7;'
|
|
-- v_prs_perslid_voorletters 11
|
|
-- v_prs_perslid_partner_naam 12
|
|
-- v_prs_perslid_partner_tussenv 13
|
|
-- v_prs_naamgebruik_code 14 0 (default) perslid_naam en perslid_tussenvoegsel worden gebruikt
|
|
-- 1 personen die de geboortenaam van de partner icm de eigen naam willen gebruiken
|
|
-- 2 personen die de geboortenaam van de partner willen gebruiken
|
|
-- 3 personen die de eigen naam icm de geboortenaam van de partner willen gebruiken
|
|
-- v_prs_perslid_geslacht 15 Gebruik 'man', 'm' of 1 voor man en 'vrouw', 'v' of 0 voor vrouw case insensitive geen default
|
|
-- v_prs_perslid_telefoonnr 16
|
|
-- v_prs_perslid_mobiel 17
|
|
-- v_prs_perslid_email 18
|
|
-- v_prs_perslid_dienstverband 19
|
|
-- v_prs_perslid_nr 20
|
|
|| '19;0;0;0;0;0;1;2;3;4;'
|
|
-- v_prs_srtperslid_omschrijving 21 -- VERPLICHT BIJ IMPORT - Initieel vullen met User type (want Job Title is nog niet altijd gevuld..)
|
|
-- v_prs_perslid_oslogin 22
|
|
-- v_prs_perslid_wachtwoord 23
|
|
-- v_prs_perslid_titel 24
|
|
-- v_prs_perslid_apikey 25
|
|
-- v_dummy 26
|
|
-- v_prs_kenmerk1 27
|
|
-- v_prs_kenmerk2 28
|
|
-- v_prs_kenmerk3 29
|
|
-- v_prs_kenmerk4 30
|
|
|| '5;6;8;9;10;17;23;7;24;0;'
|
|
|| '0;0;0;0;0;20';
|
|
|
|
-- Het aangeleverde bestand heeft de gegevens komma gescheiden ipv punt-komma
|
|
v_errorhint := 'Delimiter goed zetten';
|
|
UPDATE fac_imp_file
|
|
SET fac_imp_file_line = REPLACE (fac_imp_file_line, ',', ';')
|
|
WHERE fac_import_key = p_import_key;
|
|
|
|
-- header aanvullen met bestand
|
|
-- deze voeg ik voor import toe omdat men meerdere bestanden, cq entra_id's heeft aan scharenborg_kant
|
|
UPDATE fac_imp_file i
|
|
SET i.fac_imp_file_line =
|
|
fac_imp_file_line
|
|
|| ';'
|
|
|| 'importbestand_schg'
|
|
WHERE fac_import_key = p_import_key AND fac_imp_file_index = 1;
|
|
|
|
-- regels
|
|
UPDATE fac_imp_file i
|
|
SET i.fac_imp_file_line =
|
|
fac_imp_file_line
|
|
|| ';'
|
|
|| (SELECT CASE WHEN INSTR(fac_import_filenaam, 'API')>0
|
|
THEN SUBSTR(fac_import_filenaam, 16) -- import via api1 en gen_import.asp..
|
|
ELSE UPPER(TRIM(SUBSTR(fac_import_filenaam, 1, 3))) -- handmatig import met bestandsnamen KO tenant export.csv en VCW tenant export.csv
|
|
END
|
|
FROM fac_import WHERE fac_import_key = p_import_key)
|
|
WHERE fac_import_key = p_import_key AND fac_imp_file_index > 1;
|
|
|
|
|
|
-- csv verwerken naar de fac_imp_perslid-tabel
|
|
prs.import_perslid(p_import_key, v_seq_of_columns, '"User Principal Name";"Display Name";"Given Name";"Surname";"Job Title";"Department";"Employee ID";"Office Location";"Mobile Phone";"Business Phone";"Street Address";"City";"State";"Postal Code";"Country";"Account Enabled";"Manager Email";"Object ID";"User Type";"Creation Type";"Usage Location";"Sign-In Names";"Other Mails";importbestand_schg%');
|
|
|
|
-- POST-UPDATES op data in fac_imp_perslid-tabel doen om verwerking goed/volledig/cust-specifiek te laten verlopen
|
|
|
|
-- Delete records uit importbestand SCHG
|
|
---- 1. Alle records zonder EMPLOYEE ID
|
|
---- 2. Alle records waar CREATION TYPE gevuld met Invitation
|
|
DELETE
|
|
FROM fac_imp_perslid
|
|
WHERE prs_perslid_nr IS NULL ;
|
|
|
|
DELETE
|
|
FROM fac_imp_perslid
|
|
WHERE UPPER(prs_kenmerk20) = 'INVITATION' ;
|
|
|
|
-- Vullen achternaam
|
|
UPDATE fac_imp_perslid
|
|
SET prs_perslid_naam = COALESCE(prs_kenmerk4, 'naam - onbekend') ;
|
|
|
|
-- Loginnaam afleiden van emailadres
|
|
UPDATE fac_imp_perslid
|
|
SET prs_perslid_oslogin =
|
|
UPPER((SUBSTR (prs_perslid_email,
|
|
0,
|
|
INSTR (prs_perslid_email, '@') - 1))) ;
|
|
|
|
-- Functie moet bekend zijn
|
|
-- Functie is niet altijd gevuld, functie eerst gevuld met achternaam, nu vullen met kenmerk (of 'Onbekend').
|
|
UPDATE fac_imp_perslid
|
|
SET prs_srtperslid_omschrijving =
|
|
DECODE (prs_kenmerk5, NULL, 'Onbekend', prs_kenmerk5);
|
|
|
|
v_errorhint := 'Afdeling bepalen en vullen';
|
|
-- Afdeling bepalen waar persoon onder komt te vallen
|
|
--- Structuur SCHG:
|
|
----- Per BU is er een AFD-2 waarin de afdelingsomschrijving de domeinnaam is. Bijvoorbeeld voor BU Kievit Pedicures is dit kievitpedicures.nl
|
|
----- Indien het email-domein van de NIEUWE persoon niet onder een BU-afd-2 gevonden kan worden dan laten we deze onder BU-scharenborggroep op de fallback-afdeling AD_ONBEKEND landen
|
|
----- BESTAANDE personen laten we onder de Afdelingen staan waar ze in Facilitor op gezet zijn..
|
|
|
|
FOR rec IN c_afd
|
|
LOOP
|
|
BEGIN
|
|
|
|
v_errorhint := 'Persoon aan Afdeling koppelen';
|
|
|
|
-- Als er al een afdeling aan de persoon gekoppeld is, dan wordt deze genomen.
|
|
IF rec.prs_afdeling_naam_huidig IS NOT NULL
|
|
THEN
|
|
|
|
UPDATE fac_imp_perslid
|
|
SET prs_afdeling_naam = rec.prs_afdeling_naam_huidig
|
|
WHERE fac_imp_file_index = rec.fac_imp_file_index ;
|
|
|
|
END IF;
|
|
|
|
-- Als de persoon nog onbekend is, dan koppelen we deze aan de aangemaakte AD_afdeling behorende onder dat domein
|
|
IF rec.prs_afdeling_naam_huidig IS NULL
|
|
THEN
|
|
|
|
SELECT min(prs_afdeling_key)
|
|
INTO v_prs_afdeling_key
|
|
FROM prs_v_afdeling
|
|
WHERE UPPER(prs_afdeling_omschrijving) = UPPER(SUBSTR (rec.prs_perslid_email, INSTR (rec.prs_perslid_email, '@') + 1))
|
|
AND prs_afdeling_verwijder IS NULL ;
|
|
|
|
IF v_prs_afdeling_key IS NOT NULL THEN
|
|
|
|
UPDATE fac_imp_perslid
|
|
SET prs_afdeling_naam = (SELECT a.prs_afdeling_upper FROM prs_afdeling a WHERE a.prs_afdeling_key = v_prs_afdeling_key)
|
|
WHERE fac_imp_file_index = rec.fac_imp_file_index ;
|
|
|
|
ELSE
|
|
|
|
-- fallback_afdeling
|
|
UPDATE fac_imp_perslid
|
|
SET prs_afdeling_naam = 'AD_ONBEKEND'
|
|
WHERE fac_imp_file_index = rec.fac_imp_file_index ;
|
|
|
|
END IF;
|
|
|
|
END IF;
|
|
|
|
END;
|
|
END LOOP;
|
|
|
|
-- De oslogin leiden we af van emailadres echter moet bij uitvoer van de import wel uniek zijn
|
|
-- Voor SCHG geldt dat omdat er vanuit verschillende azure-omgevingen en BU-units (domein-namen) de bestanden en records volgen en dat dus oslogin niet altijd uniek is.
|
|
-- Omdat de import-verwerking op OSLOGIN gaat (vanaf 2025-mei) zal bij dezelfde oslogin Facilitor dus 1 personenkaart aanmaken/updaten. Zie voorbeeld hieronder. Dit is niet wenselijk
|
|
--- Gaan we oplossen door in onderstaande cursor bij meerdere dezelfde OSLOGIN's alleen de eerste te importeren/verwerken + de overige via fac_tracking als waarschuwing in import-run op te nemen.
|
|
----- Voorbeeld: prs_perslid_key
|
|
------- 365 j.smit@podotherapeut.nl J.SMIT Jose Administratief Medewerker 1246
|
|
-------- 1151 j.smit@podo-it.nl J.SMIT Jay Onbekend 1246
|
|
|
|
FOR rec IN c_oslogin
|
|
LOOP
|
|
BEGIN
|
|
|
|
v_errorhint := 'Dubbele oslogin checken - BINNEN ingelezen tenant';
|
|
|
|
IF rec.check_dubbel IS NOT NULL
|
|
THEN
|
|
|
|
v_errormsg := rec.prs_perslid_email || ' (' || rec.prs_perslid_nr || ') - Niet aangemaakt ivm GEEN UNIEKE LOGIN' ;
|
|
|
|
UPDATE fac_imp_perslid
|
|
SET prs_kenmerk20 = 'oslogin_dubbel',
|
|
prs_afdeling_naam = NULL -- zodat bij prs.update_perslid dit record niet verwerkt wordt en nog aparte error-melding krijgt
|
|
WHERE fac_imp_file_index = rec.fac_imp_file_index ;
|
|
|
|
-- tracking
|
|
fac.imp_writelog (p_import_key, 'W', v_errormsg, v_errorhint);
|
|
|
|
END IF;
|
|
|
|
END;
|
|
END LOOP;
|
|
|
|
FOR rec IN c_oslogin_b
|
|
LOOP
|
|
BEGIN
|
|
|
|
v_errorhint := 'Dubbele oslogin checken - BUITEN ingelezen tenant';
|
|
|
|
v_errormsg := rec.prs_perslid_email || ' (' || rec.prs_perslid_nr || ') - Niet aangemaakt ivm GEEN UNIEKE LOGIN' ;
|
|
|
|
UPDATE fac_imp_perslid
|
|
SET prs_kenmerk20 = 'oslogin_dubbel - andere tenant',
|
|
prs_afdeling_naam = NULL -- zodat bij prs.update_perslid dit record niet verwerkt wordt en nog aparte error-melding krijgt
|
|
WHERE fac_imp_file_index = rec.fac_imp_file_index ;
|
|
|
|
-- tracking
|
|
fac.imp_writelog (p_import_key, 'W', v_errormsg, v_errorhint);
|
|
|
|
END;
|
|
END LOOP;
|
|
|
|
END schg_import_perslid;
|
|
/
|
|
|
|
CREATE OR REPLACE PROCEDURE schg_update_perslid (p_import_key IN NUMBER)
|
|
IS
|
|
|
|
-- Omdat er 2 tenant's zijn moet je bij de DELETE actie niet 'zomaar checken op 'Niet bekend, dus verwijderen'.
|
|
---- Ik heb import_bestands_naam toegevoegd en dus in DELETE alleen binnen het personenbestand in Facilitor wat uit die tenant_id komt checken.
|
|
---- We checken/matchen op OSLOGIN voor SCHG want de personeelsnummer die op Azure via Nmbrs-pakket worden gesynct blijken niet uniek te zijn.
|
|
CURSOR c_del
|
|
IS
|
|
SELECT p.prs_perslid_key,
|
|
p.prs_perslid_email,
|
|
i.prs_perslid_email
|
|
prs_perslid_email_import,
|
|
p.prs_perslid_nr,
|
|
i.prs_perslid_nr
|
|
prs_perslid_nr_import,
|
|
pf.prs_perslid_naam_full,
|
|
p.prs_perslid_oslogin,
|
|
i.prs_perslid_oslogin
|
|
prs_perslid_oslogin_import,
|
|
ib.huidige_importbestand_schg,
|
|
p.prs_importbestand_schg,
|
|
i.prs_kenmerk13,
|
|
p.prs_perslid_inactief,
|
|
p.prs_perslid_verwijder
|
|
FROM fac_imp_perslid i,
|
|
(SELECT p.prs_perslid_key,
|
|
p.prs_perslid_email,
|
|
p.prs_perslid_nr,
|
|
p.prs_perslid_oslogin,
|
|
p.prs_perslid_inactief,
|
|
p.prs_perslid_verwijder,
|
|
p.prs_afdeling_key,
|
|
(SELECT kw.prs_kenmerklink_waarde
|
|
FROM prs_kenmerklink kw
|
|
WHERE kw.prs_kenmerk_key = 1060
|
|
AND kw.prs_kenmerklink_niveau = 'P'
|
|
AND kw.prs_link_key = p.prs_perslid_key)
|
|
prs_importbestand_schg -- het importbestand_schg in personenkaart
|
|
FROM prs_perslid p) p,
|
|
prs_v_perslid_fullnames_all pf,
|
|
prs_v_afdeling_boom ab,
|
|
prs_afdeling a,
|
|
(SELECT MAX (prs_kenmerk13)
|
|
huidige_importbestand_schg
|
|
FROM fac_imp_perslid) ib -- importbestand_schg in deze run
|
|
WHERE pf.prs_perslid_key = p.prs_perslid_key
|
|
AND p.prs_perslid_verwijder IS NULL
|
|
AND p.prs_afdeling_key = ab.prs_afdeling_key
|
|
AND ab.prs_afdeling_key = a.prs_afdeling_key
|
|
AND p.prs_importbestand_schg = ib.huidige_importbestand_schg
|
|
AND ab.prs_bedrijf_key = 21 -- bedrijf Scharenborg Groep
|
|
AND p.prs_perslid_nr IS NOT NULL
|
|
-- MATCH en DELETE op OSLOGING
|
|
AND p.prs_perslid_oslogin = i.prs_perslid_oslogin(+)
|
|
AND i.prs_perslid_oslogin IS NULL
|
|
-- MATCH en DELETE op PRS_PERLID_NR
|
|
-- AND p.prs_perslid_nr = i.prs_perslid_nr(+)
|
|
-- AND i.prs_perslid_nr IS NULL
|
|
-- MATCH en DELETE op EMAIL
|
|
-- AND p.prs_perslid_email = i.prs_perslid_email(+)
|
|
-- AND i.prs_perslid_email IS NULL
|
|
;
|
|
|
|
CURSOR c_flex -- Voor updaten van de algemene flex-kenmerkvelden op actuele medewerkers
|
|
IS
|
|
SELECT p.prs_perslid_key, i.prs_kenmerk1, i.prs_kenmerk2, i.prs_kenmerk3, i.prs_kenmerk4, i.prs_kenmerk5, i.prs_kenmerk6, i.prs_kenmerk7, i.prs_kenmerk8, i.prs_kenmerk9, i.prs_kenmerk10, i.prs_kenmerk11, i.prs_kenmerk12, i.prs_kenmerk13
|
|
FROM prs_v_aanwezigperslid p, fac_imp_perslid i
|
|
WHERE p.prs_perslid_key = i.prs_perslid_key
|
|
ORDER BY 1;
|
|
|
|
CURSOR c_verantw
|
|
IS
|
|
SELECT p.prs_perslid_key,
|
|
p.prs_perslid_email,
|
|
p.prs_perslid_nr,
|
|
p.prs_perslid_oslogin,
|
|
p.manager_email_azure,
|
|
CASE WHEN p.manager_email_azure <> '<geen Manager Email>'
|
|
THEN (SELECT prs_perslid_email FROM prs_perslid WHERE UPPER(prs_perslid_email) = UPPER(p.manager_email_azure) AND prs_perslid_verwijder IS NULL)
|
|
ELSE NULL
|
|
END
|
|
manager_email_azure_fac,
|
|
CASE WHEN p.prs_perslid_key_verantw IS NOT NULL
|
|
THEN (SELECT prs_perslid_email FROM prs_perslid WHERE prs_perslid_key = p.prs_perslid_key_verantw)
|
|
ELSE NULL
|
|
END
|
|
prs_perslid_verantw_email
|
|
FROM fac_imp_perslid i,
|
|
(SELECT p.prs_perslid_key,
|
|
p.prs_perslid_email,
|
|
p.prs_perslid_nr,
|
|
p.prs_perslid_oslogin,
|
|
p.prs_perslid_key_verantw,
|
|
(SELECT kw.prs_kenmerklink_waarde
|
|
FROM prs_kenmerklink kw
|
|
WHERE kw.prs_kenmerk_key = 1030
|
|
AND kw.prs_kenmerklink_niveau = 'P'
|
|
AND kw.prs_link_key = p.prs_perslid_key)
|
|
manager_email_azure
|
|
FROM prs_perslid p) p
|
|
WHERE p.prs_perslid_key = i.prs_perslid_key ;
|
|
|
|
v_count NUMBER;
|
|
oracle_err_num NUMBER;
|
|
oracle_err_mes VARCHAR2 (200);
|
|
v_errormsg VARCHAR2 (400);
|
|
v_errorhint VARCHAR2 (400);
|
|
|
|
-- overige variabelen
|
|
v_prs_perslid_key_verantw NUMBER(10);
|
|
|
|
|
|
BEGIN
|
|
v_errorhint := 'Niet genoeg personen in bestand, import afgebroken';
|
|
|
|
SELECT COUNT ( * ) INTO v_count FROM fac_imp_perslid;
|
|
|
|
IF v_count >= 50
|
|
THEN
|
|
v_errorhint := 'Verwerken persoonsgegevens';
|
|
|
|
-- Geldig importbestand wat betreft aantal personen
|
|
|
|
-- Nu kunnen we de standaard facilitor-update doorvoeren
|
|
-- generic update
|
|
-- 'EMAIL' betekent dat op basis van Email wordt gematched.
|
|
-- 'NR' op basis personeelsnummer.
|
|
-- 'LOGIN' op basis logincode
|
|
-- 'NULL' betekent altijd geen werkplekken verwijderen
|
|
prs.update_perslid (p_import_key, 'LOGIN', NULL);
|
|
|
|
-- Na de update gaan we de mensen verwijderen die niet in dit importbestand_schg meer zitten
|
|
FOR rec IN c_del
|
|
LOOP
|
|
BEGIN
|
|
v_errorhint :=
|
|
'Verwijderen persoon: '
|
|
|| rec.prs_perslid_key
|
|
|| '-'
|
|
|| rec.prs_perslid_email
|
|
|| '-'
|
|
|| rec.prs_perslid_oslogin;
|
|
prs.delete_perslid (p_import_key, rec.prs_perslid_key);
|
|
EXCEPTION
|
|
WHEN OTHERS
|
|
THEN
|
|
oracle_err_num := SQLCODE;
|
|
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
|
|
v_errormsg := 'error ' || oracle_err_num || '/' || oracle_err_mes;
|
|
fac.imp_writelog (p_import_key,
|
|
'E',
|
|
v_errormsg,
|
|
v_errorhint);
|
|
END;
|
|
END LOOP;
|
|
|
|
-- En dan gaan we de kenmmerken bijwerken op de actuele medewerkers
|
|
FOR rec IN c_flex
|
|
LOOP
|
|
BEGIN
|
|
-- User Principal Name;Display Name;Given Name;Surname;Job Title;Department;Employee ID;Office Location;Mobile Phone;Business Phone;Street Address;City;State;Postal Code;Country;Account Enabled;Manager Email;Object ID;User Type;Creation Type;Usage Location;Sign-In Names;Other Mails;importbestand_schg%';
|
|
|
|
v_errorhint:='Fout bijwerken kenmerkvelden';
|
|
|
|
PRS.upsertkenmerk (1021, rec.prs_perslid_key, COALESCE(rec.prs_kenmerk1, '<geen User Principal Name>')); -- User Principal Name
|
|
PRS.upsertkenmerk (1022, rec.prs_perslid_key, COALESCE(rec.prs_kenmerk2, '<geen Display Name>')); -- Display Name
|
|
PRS.upsertkenmerk (1023, rec.prs_perslid_key, COALESCE(rec.prs_kenmerk3, '<geen Given Name>')); -- Given Name
|
|
PRS.upsertkenmerk (1024, rec.prs_perslid_key, COALESCE(rec.prs_kenmerk4, '<geen Surname>')); -- Surname
|
|
PRS.upsertkenmerk (1025, rec.prs_perslid_key, COALESCE(rec.prs_kenmerk5, '<geen Job Title>')); -- Job Title
|
|
PRS.upsertkenmerk (1026, rec.prs_perslid_key, COALESCE(rec.prs_kenmerk6, '<geen Department>')); -- Department
|
|
PRS.upsertkenmerk (1027, rec.prs_perslid_key, COALESCE(rec.prs_kenmerk7, '<geen Office Location>')); -- Office Location
|
|
PRS.upsertkenmerk (1028, rec.prs_perslid_key, COALESCE(rec.prs_kenmerk8, '<geen Mobile Phone>')); -- Mobile Phone
|
|
PRS.upsertkenmerk (1029, rec.prs_perslid_key, COALESCE(rec.prs_kenmerk9, '<geen Business Phone>')); -- Business Phone
|
|
PRS.upsertkenmerk (1030, rec.prs_perslid_key, COALESCE(rec.prs_kenmerk10, '<geen Manager Email>')); -- Manager Email
|
|
PRS.upsertkenmerk (1031, rec.prs_perslid_key, COALESCE(rec.prs_kenmerk11, '<geen Other Mails>')); -- Other Mails
|
|
PRS.upsertkenmerk (1032, rec.prs_perslid_key, COALESCE(rec.prs_kenmerk12, '<geen Employee ID>')); -- Employee ID
|
|
|
|
PRS.upsertkenmerk (1060, rec.prs_perslid_key, rec.prs_kenmerk13); -- importbestand_schg
|
|
|
|
END;
|
|
END LOOP;
|
|
|
|
-- En de verantwoordelijk manager updaten in de personenkaart indien nodig
|
|
FOR rec IN c_verantw
|
|
LOOP
|
|
BEGIN
|
|
v_errorhint:='Fout bijwerken verantwoordelijke';
|
|
|
|
-- als de aangeboden waarde uit azure anders is dan de huidige verantwoordelijke in de personenkaart dan gaan we personenkaart updaten
|
|
IF COALESCE(rec.manager_email_azure_fac, '<leeg>') <> COALESCE(rec.prs_perslid_verantw_email, '<leeg>')
|
|
THEN
|
|
|
|
-- geen gevonden facilitor-manager dan gevulde verantwoordelijke verwijderen
|
|
IF rec.manager_email_azure_fac IS NULL
|
|
THEN
|
|
|
|
UPDATE prs_perslid
|
|
SET prs_perslid_key_verantw = ''
|
|
WHERE prs_perslid_key = rec.prs_perslid_key ;
|
|
|
|
END IF;
|
|
|
|
-- wel gevonden facilitor-manager dan bijbehorende verantwoordelijke_key in personenkaart vullen
|
|
IF rec.manager_email_azure_fac IS NOT NULL
|
|
THEN
|
|
|
|
SELECT prs_perslid_key
|
|
INTO v_prs_perslid_key_verantw
|
|
FROM prs_perslid
|
|
WHERE prs_perslid_email = rec.manager_email_azure_fac ;
|
|
|
|
UPDATE prs_perslid
|
|
SET prs_perslid_key_verantw = v_prs_perslid_key_verantw
|
|
WHERE prs_perslid_key = rec.prs_perslid_key ;
|
|
|
|
END IF;
|
|
|
|
|
|
END IF;
|
|
|
|
|
|
END;
|
|
END LOOP;
|
|
|
|
|
|
ELSE
|
|
fac.imp_writelog (p_import_key,
|
|
'E',
|
|
v_errormsg,
|
|
v_errorhint);
|
|
COMMIT;
|
|
END IF;
|
|
|
|
COMMIT;
|
|
EXCEPTION
|
|
WHEN OTHERS
|
|
THEN
|
|
oracle_err_num := SQLCODE;
|
|
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
|
|
v_errormsg := 'Error ' || oracle_err_num || '/' || oracle_err_mes;
|
|
fac.imp_writelog (p_import_key,
|
|
'E',
|
|
v_errormsg,
|
|
v_errorhint);
|
|
END schg_update_perslid;
|
|
/
|
|
|
|
|
|
-------------------------------
|
|
--- NOTI-JOBS ---------------
|
|
-------------------------------
|
|
|
|
-- Contract-Rappel
|
|
--- Notificatie op contractbeheerder en/of verantwoordelijke
|
|
--- Onderstaand rapport is basisview en deze fungeert als bron voor de rappel-notificatie
|
|
CREATE OR REPLACE VIEW schg_v_cnt_rappel_basis
|
|
AS
|
|
SELECT d.ins_discipline_omschrijving,
|
|
c.cnt_contract_key,
|
|
c.cnt_contract_nummer_intern
|
|
|| DECODE (c.cnt_contract_versie,
|
|
NULL, '',
|
|
'.' || c.cnt_contract_versie)
|
|
cnt_contract_nr,
|
|
c.cnt_contract_looptijd_van begindatum,
|
|
c.cnt_contract_looptijd_tot einddatum,
|
|
cnt.cnt_getopzegdatum (c.cnt_contract_key) cnt_opzegdatum,
|
|
cnt.cnt_getrappeldatum (c.cnt_contract_key) cnt_rappeldatum,
|
|
DECODE (cnt.cnt_contract_status (c.cnt_contract_looptijd_van,
|
|
cnt.cnt_getrappeldatum (c.cnt_contract_key),
|
|
cnt.cnt_getopzegdatum (c.cnt_contract_key),
|
|
c.cnt_contract_looptijd_tot),
|
|
0, lcl.l ('lcl_cnt_future'),
|
|
1, lcl.l ('lcl_cnt_topical'),
|
|
2, lcl.l ('lcl_cnt_warn'),
|
|
3, lcl.l ('lcl_cnt_cancel'),
|
|
4, lcl.l ('lcl_cnt_past'))
|
|
fase_actief,
|
|
DECODE (
|
|
c.cnt_contract_status,
|
|
0,
|
|
DECODE (fac.getsetting ('cnt_contract_approval'),
|
|
1, lcl.l ('lcl_cnt_active_approval'),
|
|
lcl.l ('lcl_cnt_active')),
|
|
1,
|
|
lcl.l ('lcl_cnt_inactive'),
|
|
2,
|
|
lcl.l ('lcl_cnt_new'),
|
|
3,
|
|
lcl.l ('lcl_cnt_forapproval'))
|
|
cnt_contract_status,
|
|
(SELECT kc.cnt_kenmerkcontract_waarde
|
|
FROM cnt_kenmerkcontract kc, cnt_kenmerk k
|
|
WHERE k.cnt_kenmerk_key = kc.cnt_kenmerk_key
|
|
AND kc.cnt_contract_key = c.cnt_contract_key
|
|
AND k.cnt_kenmerk_key = 17) -- contractbeheerder
|
|
vink_beheerder,
|
|
(SELECT p.prs_perslid_email
|
|
FROM prs_perslid p
|
|
WHERE p.prs_perslid_key = c.prs_perslid_key_beh
|
|
AND p.prs_perslid_verwijder IS NULL)
|
|
beheerder_email,
|
|
(SELECT kc.cnt_kenmerkcontract_waarde
|
|
FROM cnt_kenmerkcontract kc, cnt_kenmerk k
|
|
WHERE k.cnt_kenmerk_key = kc.cnt_kenmerk_key
|
|
AND kc.cnt_contract_key = c.cnt_contract_key
|
|
AND k.cnt_kenmerk_key = 16) -- contractverantwoordelijke
|
|
vink_verantwoordelijke,
|
|
(SELECT p.prs_perslid_email
|
|
FROM prs_perslid p
|
|
WHERE p.prs_perslid_key = c.prs_perslid_key_eig
|
|
AND p.prs_perslid_verwijder IS NULL)
|
|
veantwoordelijke_email
|
|
FROM cnt_v_aanwezigcontract c, ins_tab_discipline d
|
|
WHERE c.ins_discipline_key = d.ins_discipline_key
|
|
AND d.ins_discipline_module = 'CNT';
|
|
|
|
|
|
-- SCHG: Contractbeheerder(_eig) is Beheerder/Administrateur en de Contractverantwoordelijke (_beh) is 1e aanspreekpunt die beslist over wel/niet verlengen.
|
|
CREATE OR REPLACE VIEW schg_v_noti_cntreminder
|
|
(
|
|
code,
|
|
sender,
|
|
receiver,
|
|
text,
|
|
key,
|
|
xkey,
|
|
xemail,
|
|
xmobile
|
|
)
|
|
AS -- Op rappel-datum TER INFO-mail naar de Beheerder/Administrateur sturen
|
|
SELECT 'CNTMAI',
|
|
NULL,
|
|
c.prs_perslid_key_beh,
|
|
'TER INFO: Rappel verstuurd voor contract ' || c.cnt_contract_nummer_intern
|
|
|| DECODE (c.cnt_contract_versie, NULL, '', '.' || c.cnt_contract_versie)
|
|
|| ' (' || c.cnt_contract_omschrijving || ' ' || b.prs_bedrijf_naam || ')'
|
|
|| ' - Moet uiterlijk per ' || TO_CHAR (cnt.cnt_getopzegdatum (c.cnt_contract_key), 'dd-mm-yyyy')
|
|
|| ' worden verlengd of opgezegd.',
|
|
c.cnt_contract_key,
|
|
NULL,
|
|
NULL,
|
|
NULL
|
|
FROM schg_v_cnt_rappel_basis v, cnt_v_aanwezigcontract c, prs_bedrijf b
|
|
WHERE c.cnt_prs_bedrijf_key = b.prs_bedrijf_key
|
|
AND v.cnt_contract_key = c.cnt_contract_key
|
|
AND v.vink_beheerder = 1
|
|
AND c.cnt_contract_status = 0
|
|
AND cnt.cnt_getrappeldatum (c.cnt_contract_key) = TRUNC (SYSDATE)
|
|
AND c.prs_perslid_key_beh <> COALESCE(c.prs_perslid_key_eig, -1) -- als administrateur gelijk aan 1e aanspreekpunt dan dan sturen we de info-mail niet uit
|
|
AND NOT EXISTS -- kenmerkveld 'Opgezegd' staat uit
|
|
(SELECT km.cnt_contract_key
|
|
FROM cnt_kenmerkcontract km, cnt_kenmerk k
|
|
WHERE km.cnt_contract_key = c.cnt_contract_key AND km.cnt_kenmerk_key = k.cnt_kenmerk_key AND k.cnt_kenmerk_key = 19)
|
|
UNION ALL -- Op rappel-datum ACTIE-mail naar het 1e aanspreekpunt sturen (contractverantwoordelijke)
|
|
SELECT 'CUST01',
|
|
NULL,
|
|
c.prs_perslid_key_eig,
|
|
'ACTIE: Rappel verstuurd voor contract ' || c.cnt_contract_nummer_intern
|
|
|| DECODE (c.cnt_contract_versie, NULL, '', '.' || c.cnt_contract_versie)
|
|
|| ' (' || c.cnt_contract_omschrijving || ' ' || b.prs_bedrijf_naam || ')'
|
|
|| ' - Moet uiterlijk per ' || TO_CHAR (cnt.cnt_getopzegdatum (c.cnt_contract_key), 'dd-mm-yyyy')
|
|
|| ' worden verlengd of opgezegd.',
|
|
c.cnt_contract_key,
|
|
NULL,
|
|
NULL,
|
|
NULL
|
|
FROM schg_v_cnt_rappel_basis v, cnt_v_aanwezigcontract c, prs_bedrijf b
|
|
WHERE c.cnt_prs_bedrijf_key = b.prs_bedrijf_key
|
|
AND v.cnt_contract_key = c.cnt_contract_key
|
|
AND v.vink_verantwoordelijke = 1
|
|
AND c.cnt_contract_status = 0
|
|
AND cnt.cnt_getrappeldatum (c.cnt_contract_key) = TRUNC (SYSDATE)
|
|
AND c.prs_perslid_key_eig IS NOT NULL
|
|
AND NOT EXISTS -- kenmerkveld 'Opgezegd' staat uit
|
|
(SELECT km.cnt_contract_key
|
|
FROM cnt_kenmerkcontract km, cnt_kenmerk k
|
|
WHERE km.cnt_contract_key = c.cnt_contract_key AND km.cnt_kenmerk_key = k.cnt_kenmerk_key AND k.cnt_kenmerk_key = 19)
|
|
;
|
|
|
|
-------------------------------
|
|
--- RAPPORTAGES ---------------
|
|
-------------------------------
|
|
|
|
-- Rapportage beheer simkaarten en mobiel
|
|
CREATE OR REPLACE VIEW schg_v_simkaarten_man
|
|
(
|
|
SIMKAART_NUMMER,
|
|
MOBIEL_NUMMER,
|
|
PUK_CODE,
|
|
STATUS,
|
|
OBJECT_IDENTIFICATIE,
|
|
OBJECT_VERVALDATUM,
|
|
GEKOPPELD_AAN_TYPE,
|
|
GEKOPPELD_AAN,
|
|
NR_INS_DEEL_KEY,
|
|
OBJ_INS_DEEL_KEY
|
|
)
|
|
AS
|
|
SELECT nr.ins_deel_upper,
|
|
flx.getflex ('INS', 12, nr.ins_deel_key) tel_nummer,
|
|
flx.getflex ('INS', 11, nr.ins_deel_key) puk_code,
|
|
CASE
|
|
WHEN d.ins_deel_upper IS NOT NULL THEN 'Gekoppeld'
|
|
ELSE 'Vrij'
|
|
END status,
|
|
d.ins_deel_upper,
|
|
d.ins_deel_vervaldatum,
|
|
d.gekoppeld_aan_type,
|
|
d.gekoppeld_aan,
|
|
nr.ins_deel_key,
|
|
d.ins_deel_key
|
|
FROM (SELECT v.ins_deel_key, v.ins_deel_upper
|
|
FROM ins_v_deel_gegevens v, ins_deel d
|
|
WHERE v.ins_discipline_key = 182 -- SIM-kaarten
|
|
AND v.ins_srtdeel_key = 5 -- SIM-kaarten
|
|
AND v.ins_deel_key = d.ins_deel_key
|
|
AND d.ins_deel_verwijder IS NULL
|
|
AND ( d.ins_deel_vervaldatum IS NULL
|
|
OR TRUNC (d.ins_deel_vervaldatum) > TRUNC (SYSDATE))) nr,
|
|
(SELECT d.ins_deel_key,
|
|
d.ins_deel_upper,
|
|
kw.ins_kenmerkdeel_waarde,
|
|
num.ins_deel_upper
|
|
nummer_gekoppeld,
|
|
DECODE (d.ins_alg_ruimte_type,
|
|
'R', 'Locatie',
|
|
'A', 'Afdeling',
|
|
'P', 'Persoon/Teamaccount',
|
|
'') gekoppeld_aan_type,
|
|
v.alg_plaatsaanduiding,
|
|
d.ins_deel_vervaldatum,
|
|
DECODE (d.ins_alg_ruimte_type,
|
|
'R', l.alg_locatie_omschrijving,
|
|
v.alg_plaatsaanduiding) gekoppeld_aan
|
|
FROM ins_deel d,
|
|
ins_kenmerkdeel kw,
|
|
ins_kenmerk k,
|
|
ins_deel num,
|
|
ins_v_deel_gegevens v,
|
|
alg_locatie l
|
|
WHERE d.ins_deel_key = kw.ins_deel_key
|
|
AND kw.ins_kenmerk_key = k.ins_kenmerk_key
|
|
AND k.ins_srtkenmerk_key = 25 -- SIM_kaart gekoppeld bij Pinapparaat
|
|
AND kw.ins_kenmerkdeel_verwijder IS NULL
|
|
AND kw.ins_kenmerkdeel_verwijder IS NULL
|
|
AND fac.safe_to_number (kw.ins_kenmerkdeel_waarde) =
|
|
num.ins_deel_key
|
|
AND d.ins_deel_key = v.ins_deel_key
|
|
AND d.ins_alg_locatie_key = l.alg_locatie_key(+)
|
|
) d
|
|
WHERE
|
|
nr.ins_deel_upper = d.nummer_gekoppeld(+) ;
|
|
|
|
|
|
CREATE OR REPLACE VIEW schg_v_rap_opdrachten
|
|
(
|
|
INTERN,
|
|
TYPE,
|
|
MLD_OPDR_KEY,
|
|
MLD_UITVOERENDE_KEY,
|
|
OPDRACHTNR,
|
|
STATUS,
|
|
MELDING,
|
|
BEHANDELAAR,
|
|
LOCATIE_PLAATS,
|
|
LOCATIE_OMSCHRIJVING,
|
|
GEBOUW_ADRES,
|
|
OPDRACHT_AANMAAKDATUM,
|
|
GEPLANDE_AANVANG,
|
|
GEPLANDE_AANVANG_B, -- berekend voor kalenderweergave
|
|
GEPLANDE_EINDDATUM,
|
|
GEPLANDE_EINDDATUM_B, -- berekend voor kalenderweergave
|
|
OPDRACHT_EINDDATUM,
|
|
MELDING_EINDDATUM,
|
|
OMSCHRIJVING,
|
|
PRS_PERSLID_KEY,
|
|
NAAM_UITVOERDER,
|
|
AFMELD_DATUM,
|
|
OPDRACHT_TYPE,
|
|
TD_NAAM,
|
|
PRIORITEIT,
|
|
STATUS_KALENDER, -- t.b.v. kalenderweergave
|
|
INS_SRTDISCIPLINE_KEY
|
|
)
|
|
AS
|
|
SELECT mu.intern,
|
|
CASE
|
|
WHEN mu.TYPE = 'B' AND mu.intern = 1 THEN 'Poule-opdracht'
|
|
WHEN mu.TYPE = 'P' AND mu.intern = 1 THEN 'Klus-opdracht'
|
|
WHEN mu.intern = 0 THEN 'Externe opdracht'
|
|
ELSE '<?>'
|
|
END
|
|
TYPE,
|
|
o.mld_opdr_key,
|
|
CASE
|
|
WHEN mu.TYPE = 'B' AND mu.intern = 1 THEN mu.mld_uitvoerende_key
|
|
WHEN mu.TYPE = 'P' AND mu.intern = 1 THEN o.prs_perslid_key
|
|
WHEN mu.intern = 0 THEN mu.mld_uitvoerende_key
|
|
ELSE NULL
|
|
END
|
|
mld_uitvoerende_key,
|
|
TO_CHAR (o.mld_melding_key)
|
|
|| '/'
|
|
|| o.mld_opdr_bedrijfopdr_volgnr
|
|
opdrachtnummer,
|
|
DECODE (
|
|
os.mld_statusopdr_key,
|
|
8, DECODE (o.mld_opdr_halted,
|
|
1, 'Onderbroken',
|
|
os.mld_statusopdr_omschrijving),
|
|
os.mld_statusopdr_omschrijving)
|
|
status,
|
|
std.mld_stdmelding_omschrijving,
|
|
COALESCE (p.prs_perslid_naam_full, '<nog geen behandelaar>')
|
|
behandelaar,
|
|
l.alg_locatie_plaats,
|
|
l.alg_locatie_omschrijving,
|
|
(SELECT g.alg_gebouw_naam || ' - ' || g.alg_gebouw_adres
|
|
FROM alg_v_onroerendgoed_gegevens v, alg_gebouw g
|
|
WHERE v.alg_gebouw_key = g.alg_gebouw_key
|
|
AND v.alg_onroerendgoed_keys = m.mld_alg_onroerendgoed_keys)
|
|
gebouw_adres,
|
|
o.mld_opdr_datumbegin,
|
|
o.mld_opdr_plandatum
|
|
geplande_aanvang,
|
|
CASE WHEN o.mld_opdr_plandatum IS NOT NULL THEN o.mld_opdr_plandatum ELSE o.mld_opdr_datumbegin END
|
|
geplande_aanvang_b,
|
|
o.mld_opdr_plandatum2
|
|
geplande_einddatum,
|
|
CASE WHEN o.mld_opdr_plandatum2 IS NOT NULL AND o.mld_opdr_plandatum IS NOT NULL THEN o.mld_opdr_plandatum2
|
|
WHEN o.mld_opdr_plandatum2 IS NULL AND o.mld_opdr_plandatum IS NOT NULL THEN o.mld_opdr_plandatum + 2/24
|
|
ELSE o.mld_opdr_datumbegin + 2/24
|
|
END
|
|
geplande_einddatum_b,
|
|
o.mld_opdr_einddatum,
|
|
m.mld_melding_einddatum,
|
|
TRIM (
|
|
REGEXP_REPLACE (
|
|
REGEXP_SUBSTR (o.mld_opdr_omschrijving,
|
|
'(([^ ]*)( |$)*){10}'),
|
|
'[[:space:]]',
|
|
' '))
|
|
|| '...'
|
|
omschrijving,
|
|
p.prs_perslid_key,
|
|
mu.naam
|
|
naam_uitvoerder,
|
|
(SELECT MAX (ft.fac_tracking_datum)
|
|
FROM fac_tracking ft
|
|
WHERE ft.fac_tracking_refkey = o.mld_opdr_key
|
|
AND ft.fac_srtnotificatie_key = 80) -- ORDAFM
|
|
afmeld_datum,
|
|
ot.mld_typeopdr_omschrijving,
|
|
CASE
|
|
WHEN mu.TYPE = 'B' AND mu.intern = 1 THEN COALESCE (p.prs_perslid_naam_full, '<nog geen behandelaar>')
|
|
WHEN mu.TYPE = 'P' AND mu.intern = 1 THEN mu.naam
|
|
ELSE ''
|
|
END td_naam,
|
|
COALESCE(v.prioriteit,'3 - NORMAAL')
|
|
prioriteit,
|
|
CASE
|
|
WHEN os.mld_statusopdr_omschrijving = 'Afgemeld' THEN 'Afgemeld'
|
|
WHEN os.mld_statusopdr_omschrijving = 'Afgewezen' THEN 'Afgewezen'
|
|
WHEN os.mld_statusopdr_omschrijving = 'Afgerond' THEN 'Afgerond'
|
|
WHEN mu.intern = 1 AND os.mld_statusopdr_omschrijving = 'Toegekend' AND o.mld_opdr_plandatum IS NULL THEN 'Nog inplannen'
|
|
WHEN mu.intern = 1 AND os.mld_statusopdr_omschrijving = 'Toegekend' AND o.mld_opdr_plandatum IS NOT NULL THEN 'Ingepland'
|
|
WHEN mu.intern = 0 AND os.mld_statusopdr_omschrijving = 'Toegekend' AND o.mld_opdr_plandatum IS NULL THEN 'Nog niet bevestigd'
|
|
WHEN mu.intern = 0 AND os.mld_statusopdr_omschrijving = 'Toegekend' AND o.mld_opdr_plandatum IS NOT NULL THEN 'Bevestigd'
|
|
ELSE ''
|
|
END status_kalender,
|
|
d.ins_srtdiscipline_key
|
|
FROM mld_opdr o,
|
|
mld_melding m,
|
|
mld_typeopdr ot,
|
|
prs_v_perslid_fullnames p,
|
|
ins_tab_discipline d,
|
|
mld_stdmelding std,
|
|
alg_locatie l,
|
|
alg_district d,
|
|
mld_v_uitvoerende mu,
|
|
mld_statusopdr os,
|
|
(
|
|
SELECT ko.mld_opdr_key, ud.fac_usrdata_code || ' - ' || ud.fac_usrdata_omschr prioriteit
|
|
FROM mld_kenmerkopdr ko, fac_usrdata ud
|
|
WHERE fac.safe_to_number(ko.mld_kenmerkopdr_waarde) = ud.fac_usrdata_key
|
|
AND fac_usrtab_key = 81 -- keuzelijst eigen tabel Prioriteit
|
|
AND ko.mld_kenmerk_key IN (23, 28) -- kenmerk Prioriteit
|
|
) v
|
|
WHERE o.mld_melding_key = m.mld_melding_key(+)
|
|
AND o.prs_perslid_key = p.prs_perslid_key(+)
|
|
AND o.mld_typeopdr_key = ot.mld_typeopdr_key
|
|
AND ot.mld_typeopdr_isofferte = 0 -- Alleen werkopdrachten
|
|
AND m.mld_stdmelding_key = std.mld_stdmelding_key(+)
|
|
AND std.mld_ins_discipline_key = d.ins_discipline_key(+)
|
|
AND m.mld_alg_locatie_key = l.alg_locatie_key -- alle std-meldingen hebben verplicht-niveau locatie/gebouw
|
|
AND l.alg_district_key = d.alg_district_key
|
|
AND o.mld_uitvoerende_keys = mu.mld_uitvoerende_key
|
|
AND os.mld_statusopdr_key = o.mld_statusopdr_key
|
|
AND o.mld_opdr_key = v.mld_opdr_key(+);
|
|
|
|
CREATE OR REPLACE VIEW schg_v_cal_opdrachten
|
|
(
|
|
USER_KEY,
|
|
TITLE,
|
|
VAN,
|
|
TOT,
|
|
ITEM_KEY,
|
|
COLOR,
|
|
TEXTCOLOR,
|
|
NAAM_UITVOERRDER,
|
|
LOCATIE_PLAATS,
|
|
STATUS_KALENDER,
|
|
INTERN,
|
|
OPDRACHT_TYPE,
|
|
INS_SRTDISCIPLINE_KEY
|
|
)
|
|
AS
|
|
SELECT mld_uitvoerende_key,
|
|
' - ' || opdrachtnr || CHR(10)
|
|
|| naam_uitvoerder || CHR(10)
|
|
|| gebouw_adres || CHR(10)
|
|
|| 'Status: ' || status_kalender || CHR(10)
|
|
|| CASE
|
|
WHEN geplande_aanvang IS NOT NULL AND geplande_einddatum IS NOT NULL THEN 'Bevestigd van ' || TO_CHAR(geplande_aanvang_b) || ' tot ' || TO_CHAR(geplande_einddatum_b)
|
|
WHEN geplande_aanvang IS NOT NULL AND geplande_einddatum IS NULL THEN 'Bevestigde aanvang: ' || TO_CHAR(geplande_aanvang_b)
|
|
WHEN geplande_aanvang IS NULL AND geplande_einddatum IS NOT NULL THEN 'Bevestigde einddatum: ' || TO_CHAR(geplande_einddatum_b)
|
|
ELSE '<nog te plannen>' END
|
|
|| CHR(10) || 'Prio: ' || prioriteit
|
|
title,
|
|
geplande_aanvang_b
|
|
van,
|
|
geplande_einddatum_b
|
|
tot,
|
|
mld_opdr_key,
|
|
DECODE (intern, 1,
|
|
DECODE (status_kalender,
|
|
'Afgewezen', '#C0C0C0', -- grijs
|
|
'Afgemeld', '#C0C0C0', -- grijs
|
|
'Afgerond', '#C0C0C0', -- grijs
|
|
'Nog inplannen', '#f58a20', -- oranje
|
|
'Ingepland', '#20b2f5', -- lichtblauw
|
|
'#0000FF'),
|
|
0,
|
|
DECODE (status_kalender,
|
|
'Afgewezen', '#C0C0C0', -- grijs
|
|
'Afgemeld', '#C0C0C0', -- grijs
|
|
'Afgerond', '#C0C0C0', -- grijs
|
|
'Nog niet bevestigd', '#F5ED5D', -- lichtgeel
|
|
'Bevestigd', '#DED304', -- donkergeel
|
|
'#0000FF'),
|
|
'#0000FF'
|
|
) color, --
|
|
DECODE (intern, 1,
|
|
DECODE (status_kalender,
|
|
'Afgewezen', '#bf0b3b', -- rood
|
|
'Afgemeld', '#000000', -- zwart
|
|
'Afgerond', '#000000', -- zwart
|
|
'Nog inplannen', '#FFFFFF', -- wit,
|
|
'Ingepland',
|
|
DECODE (LOWER(prioriteit),
|
|
'3 - normaal', '#FFFFFF', -- wit
|
|
'4 - laag', '#FFFFFF', -- wit
|
|
'2 - hoog', '#f58a20', -- oranje
|
|
'1 - kritiek', '#bf0b3b', -- rood
|
|
'#000000'),
|
|
'#000000'),
|
|
0,
|
|
DECODE (status_kalender,
|
|
'Afgewezen', '#bf0b3b', -- rood
|
|
'Afgemeld', '#000000', -- zwart
|
|
'Afgerond', '#000000', -- zwart
|
|
'Nog niet bevestigd', '#000000', -- zwart
|
|
'Bevestigd', '#000000', -- zwart
|
|
'Toegekend', '#FFFFFF', -- wit,
|
|
'#0000FF'),
|
|
'#000000'
|
|
) textcolor,
|
|
naam_uitvoerder,
|
|
locatie_plaats,
|
|
status_kalender,
|
|
intern,
|
|
opdracht_type,
|
|
ins_srtdiscipline_key
|
|
FROM schg_v_rap_opdrachten
|
|
ORDER BY geplande_aanvang_b ;
|
|
|
|
|
|
---------------------
|
|
-- SCHEDULES --------
|
|
---------------------
|
|
|
|
CREATE OR REPLACE PROCEDURE SCHG_PRE_PUTORDERS
|
|
AS
|
|
BEGIN
|
|
|
|
NULL;
|
|
|
|
END SCHG_PRE_PUTORDERS;
|
|
/
|
|
|
|
-- Dagelijkse taak
|
|
CREATE OR REPLACE PROCEDURE schg_daily
|
|
AS
|
|
BEGIN
|
|
|
|
NULL;
|
|
|
|
END;
|
|
/
|
|
|
|
|
|
------ 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
|