3567 lines
166 KiB
SQL
3567 lines
166 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;
|
||
/
|
||
|
||
|
||
-- TIJDELIJK CUST op CNT_UPDATE 2025.1
|
||
|
||
CREATE OR REPLACE PROCEDURE schg_import_cnt_schg (p_import_key IN NUMBER)
|
||
AS
|
||
CURSOR c1
|
||
IS
|
||
SELECT fac_imp_csv_index
|
||
, fac_imp_csv_col01 CONTRACTNR
|
||
, fac_imp_csv_col02 VERSIE
|
||
, fac_imp_csv_col03 EXTERNNR
|
||
, fac_imp_csv_col04 CONTRACTSOORT
|
||
, fac_imp_csv_col05 BESCHRIJVING
|
||
, fac_imp_csv_col06 MANTELNR
|
||
, fac_imp_csv_col07 MANTELNR_VERSIE
|
||
, fac_imp_csv_col08 OMSCHRIJVING
|
||
, fac_imp_csv_col09 DIENST
|
||
, fac_imp_csv_col10 EIGENAAR_AFD
|
||
, fac_imp_csv_col11 EIGENAAR_EMAIL
|
||
, fac_imp_csv_col12 BEHEERDER_EMAIL
|
||
, fac_imp_csv_col13 OPMERKING
|
||
, fac_imp_csv_col14 INGANGSDATUM
|
||
, fac_imp_csv_col15 RAPPELDATUM
|
||
, fac_imp_csv_col16 OPZEGDATUM
|
||
, fac_imp_csv_col17 EINDDATUM
|
||
, fac_imp_csv_col18 SOORT_CONTACTPARTIJ
|
||
, fac_imp_csv_col19 BEDRIJFNAAM
|
||
, fac_imp_csv_col20 CONTACTNAAM
|
||
, fac_imp_csv_col21 KOSTENPLAATSCODE
|
||
, fac_imp_csv_col22 KOSTENSOORTCODE
|
||
, fac_imp_csv_col23 CONTRACTBEDRAG
|
||
, fac_imp_csv_col24 TERMIJNBEDRAG
|
||
, fac_imp_csv_col25 UURTARIEF
|
||
, fac_imp_csv_col26 KORTING
|
||
, fac_imp_csv_col27 SCOPETYPE
|
||
, fac_imp_csv_col28 LOCATIEGEBOUW_CODE
|
||
, fac_imp_csv_col29 VERLENGEN
|
||
, fac_imp_csv_col30 flex_01
|
||
, fac_imp_csv_col31 flex_02
|
||
, fac_imp_csv_col32 flex_03
|
||
, fac_imp_csv_col33 flex_04
|
||
, fac_imp_csv_col34 flex_05
|
||
, fac_imp_csv_col35 flex_06
|
||
, fac_imp_csv_col36 flex_07
|
||
, fac_imp_csv_col37 flex_08
|
||
, fac_imp_csv_col38 flex_09
|
||
, fac_imp_csv_col39 flex_10
|
||
, fac_imp_csv_col40 flex_11
|
||
, fac_imp_csv_col41 flex_12
|
||
, fac_imp_csv_col42 flex_13
|
||
, fac_imp_csv_col43 flex_14
|
||
, fac_imp_csv_col44 flex_15
|
||
, fac_imp_csv_col45 flex_16
|
||
, fac_imp_csv_col46 flex_17
|
||
, fac_imp_csv_col47 flex_18
|
||
, fac_imp_csv_col48 flex_19
|
||
, fac_imp_csv_col49 flex_20
|
||
, fac_imp_csv_col50 flex_21
|
||
, fac_imp_csv_col51 flex_22
|
||
, fac_imp_csv_col52 flex_23
|
||
, fac_imp_csv_col53 flex_24
|
||
, fac_imp_csv_col54 flex_25
|
||
FROM fac_imp_csv
|
||
WHERE fac_imp_csv_index > 1
|
||
AND fac_import_key = p_import_key;
|
||
|
||
v_errormsg VARCHAR2(1000);
|
||
v_errorhint VARCHAR2(1000);
|
||
oracle_err_num NUMBER;
|
||
oracle_err_mes VARCHAR2(200);
|
||
v_aanduiding VARCHAR2(200);
|
||
v_header_is_valid NUMBER(1) := 0;
|
||
v_ongeldig NUMBER(1) := 0;
|
||
v_count_rec NUMBER(10) := 0;
|
||
v_count_imp NUMBER(10) := 0;
|
||
v_ref_key NUMBER(10);
|
||
|
||
-- De importvelden
|
||
v_nummer_intern cnt_contract.cnt_contract_nummer_intern%TYPE; --VARCHAR2(30)
|
||
v_versie cnt_contract.cnt_contract_versie%TYPE; --VARCHAR2(10)
|
||
v_nummer_extern cnt_contract.cnt_contract_nummer%TYPE; --VARCHAR2(30)
|
||
v_cnt_soort ins_tab_discipline.ins_discipline_omschrijving%TYPE; --VARCHAR2(60) --> cnt_contract.ins_discipline_key
|
||
v_beschrijving cnt_contract.cnt_contract_omschrijving%TYPE; --VARCHAR2(50)
|
||
v_mantel_nr cnt_contract.cnt_contract_nummer_intern%TYPE; --VARCHAR2(30) |-> cnt_contract.cnt_contract_mantel_key
|
||
v_mantel_nr_versie cnt_contract.cnt_contract_versie%TYPE; --VARCHAR2(10) |
|
||
v_omschrijving cnt_contract.cnt_contract_document%TYPE; --VARCHAR2(2048)
|
||
v_dienst prs_dienst.prs_dienst_omschrijving%TYPE; --VARCHAR2(60) --> cnt_contract.prs_dienst_key
|
||
v_afdeling prs_afdeling.prs_afdeling_naam%TYPE; --VARCHAR2(15) --> cnt_contract.prs_afdeling_key_eig
|
||
v_perslid_eig prs_perslid.prs_perslid_email%TYPE; --VARCHAR2(200) --> cnt_contract.prs_perslid_key_eig
|
||
v_perslid_beh prs_perslid.prs_perslid_email%TYPE; --VARCHAR2(200) --> cnt_contract.prs_perslid_key_beh
|
||
v_opmerking cnt_contract.cnt_contract_opmerking%TYPE; --VARCHAR2(4000)
|
||
v_ingangsdatum cnt_contract.cnt_contract_looptijd_van%TYPE; --DATE
|
||
v_rappeldatum cnt_contract.cnt_contract_aanmaak%TYPE; --DATE --> cnt_contact.cnt_contract_rappeltermijn
|
||
v_opzegdatum cnt_contract.cnt_contract_aanmaak%TYPE; --DATE --> cnt_contract.cnt_contract_opzegtermijn
|
||
v_einddatum cnt_contract.cnt_contract_looptijd_tot%TYPE; --DATE
|
||
v_srtcontact VARCHAR2 (1); --P of B
|
||
v_bedrijfnaam prs_perslid.prs_perslid_email%TYPE; --VARCHAR (200) --> cnt_contract.cnt_prs_bedrijf_key
|
||
v_contactnaam prs_contactpersoon.prs_contactpersoon_email%TYPE; --VARCHAR2(200) --> cnt_contract.prs_contactpersoon_key
|
||
v_kpn_code prs_kostenplaats.prs_kostenplaats_nr%TYPE; --VARCHAR2(30) --> cnt_contract.prs_kostenplaats_key
|
||
v_kostensoort_code prs_kostensoort.prs_kostensoort_oms%TYPE; --VARCHAR2(60) --> cnt_contract.prs_kostensoort_key
|
||
v_bedrag cnt_contract.cnt_contract_kosten%TYPE; --NUMBER(11,2)
|
||
v_bedrag_termijn cnt_contract.cnt_contract_termijnkosten%TYPE; --NUMBER(11,2)
|
||
v_uurtarief cnt_contract.cnt_contract_uurloon%TYPE; --NUMBER(6,2)
|
||
v_korting cnt_contract.cnt_contract_korting%TYPE; --NUMBER(5,2)
|
||
v_scope_type cnt_contract_plaats.cnt_alg_plaats_code%TYPE; --VARCHAR2(1) --> cnt_contract_plaats.cnt_alg_plaats_code
|
||
v_gebouwcode alg_gebouw.alg_gebouw_code%TYPE; --VARCHAR2(12) --> cnt_contract_plaats.cnt_alg_plaats_key
|
||
v_verlengen cnt_contract.cnt_contract_verlenging%TYPE; --NUMBER(1)
|
||
|
||
v_cnt_kenmerk_01 fac_imp_cnt.flex1%TYPE; --VARCHAR2(255);
|
||
v_cnt_kenmerk_02 fac_imp_cnt.flex2%TYPE; --VARCHAR2(255);
|
||
v_cnt_kenmerk_03 fac_imp_cnt.flex3%TYPE; --VARCHAR2(255);
|
||
v_cnt_kenmerk_04 fac_imp_cnt.flex4%TYPE; --VARCHAR2(255);
|
||
v_cnt_kenmerk_05 fac_imp_cnt.flex5%TYPE; --VARCHAR2(255);
|
||
v_cnt_kenmerk_06 fac_imp_cnt.flex6%TYPE; --VARCHAR2(255);
|
||
v_cnt_kenmerk_07 fac_imp_cnt.flex7%TYPE; --VARCHAR2(255);
|
||
v_cnt_kenmerk_08 fac_imp_cnt.flex8%TYPE; --VARCHAR2(255);
|
||
v_cnt_kenmerk_09 fac_imp_cnt.flex9%TYPE; --VARCHAR2(255);
|
||
v_cnt_kenmerk_10 fac_imp_cnt.flex10%TYPE; --VARCHAR2(255);
|
||
v_cnt_kenmerk_11 fac_imp_cnt.flex11%TYPE; --VARCHAR2(255);
|
||
v_cnt_kenmerk_12 fac_imp_cnt.flex12%TYPE; --VARCHAR2(255);
|
||
v_cnt_kenmerk_13 fac_imp_cnt.flex13%TYPE; --VARCHAR2(255);
|
||
v_cnt_kenmerk_14 fac_imp_cnt.flex14%TYPE; --VARCHAR2(255);
|
||
v_cnt_kenmerk_15 fac_imp_cnt.flex15%TYPE; --VARCHAR2(255);
|
||
v_cnt_kenmerk_16 fac_imp_cnt.flex16%TYPE; --VARCHAR2(255);
|
||
v_cnt_kenmerk_17 fac_imp_cnt.flex17%TYPE; --VARCHAR2(255);
|
||
v_cnt_kenmerk_18 fac_imp_cnt.flex18%TYPE; --VARCHAR2(255);
|
||
v_cnt_kenmerk_19 fac_imp_cnt.flex19%TYPE; --VARCHAR2(255);
|
||
v_cnt_kenmerk_20 fac_imp_cnt.flex20%TYPE; --VARCHAR2(255);
|
||
v_cnt_kenmerk_21 fac_imp_cnt.flex21%TYPE; --VARCHAR2(255);
|
||
v_cnt_kenmerk_22 fac_imp_cnt.flex22%TYPE; --VARCHAR2(255);
|
||
v_cnt_kenmerk_23 fac_imp_cnt.flex23%TYPE; --VARCHAR2(255);
|
||
v_cnt_kenmerk_24 fac_imp_cnt.flex24%TYPE; --VARCHAR2(255);
|
||
v_cnt_kenmerk_25 fac_imp_cnt.flex25%TYPE; --VARCHAR2(255);
|
||
|
||
v_header VARCHAR2(500) := 'CONTRACTNR;VERSIE;EXTERNNR;CONTRACTSOORT;BESCHRIJVING;'
|
||
|| 'MANTELNR;MANTELNR_VERSIE;OMSCHRIJVING;DIENST;EIGENAAR_AFD;'
|
||
|| 'EIGENAAR_EMAIL;BEHEERDER_EMAIL;OPMERKING;INGANGSDATUM;RAPPELDATUM;'
|
||
|| 'OPZEGDATUM;EINDDATUM;SOORT_CONTACTPARTIJ;BEDRIJFSNAAM;CONTACTNAAM;'
|
||
|| 'KOSTENPLAATSCODE;KOSTENSOORTCODE;CONTRACTBEDRAG;TERMIJNBEDRAG;UURTARIEF;'
|
||
|| 'KORTING;SCOPETYPE;LOCATIEGEBOUW_CODE;VERLENGEN';
|
||
v_header_csv VARCHAR2(500);
|
||
v_flex_naam_01 fac_imp_cnt.flex1%TYPE;
|
||
v_flex_naam_02 fac_imp_cnt.flex2%TYPE;
|
||
v_flex_naam_03 fac_imp_cnt.flex3%TYPE;
|
||
v_flex_naam_04 fac_imp_cnt.flex4%TYPE;
|
||
v_flex_naam_05 fac_imp_cnt.flex5%TYPE;
|
||
v_flex_naam_06 fac_imp_cnt.flex6%TYPE;
|
||
v_flex_naam_07 fac_imp_cnt.flex7%TYPE;
|
||
v_flex_naam_08 fac_imp_cnt.flex8%TYPE;
|
||
v_flex_naam_09 fac_imp_cnt.flex9%TYPE;
|
||
v_flex_naam_10 fac_imp_cnt.flex10%TYPE;
|
||
v_flex_naam_11 fac_imp_cnt.flex11%TYPE;
|
||
v_flex_naam_12 fac_imp_cnt.flex12%TYPE;
|
||
v_flex_naam_13 fac_imp_cnt.flex13%TYPE;
|
||
v_flex_naam_14 fac_imp_cnt.flex14%TYPE;
|
||
v_flex_naam_15 fac_imp_cnt.flex15%TYPE;
|
||
v_flex_naam_16 fac_imp_cnt.flex16%TYPE;
|
||
v_flex_naam_17 fac_imp_cnt.flex17%TYPE;
|
||
v_flex_naam_18 fac_imp_cnt.flex18%TYPE;
|
||
v_flex_naam_19 fac_imp_cnt.flex19%TYPE;
|
||
v_flex_naam_20 fac_imp_cnt.flex20%TYPE;
|
||
v_flex_naam_21 fac_imp_cnt.flex21%TYPE;
|
||
v_flex_naam_22 fac_imp_cnt.flex22%TYPE;
|
||
v_flex_naam_23 fac_imp_cnt.flex23%TYPE;
|
||
v_flex_naam_24 fac_imp_cnt.flex24%TYPE;
|
||
v_flex_naam_25 fac_imp_cnt.flex25%TYPE;
|
||
|
||
-- Controleer tijdens import-fase alleen op het bestaan van een kenmerk met de meegegeven omschrijving of kenmerk key.
|
||
-- De omschrijving (header van kolom) kan de omschrijving zijn van het kenmerksoort of het kenmerk.
|
||
-- De omschrijving van het kenmerksoort kan namelijk overruled worden door de omschrijving van het kenmerk.
|
||
-- Daarnaast kan hetzelfde kenmerk vaker voorkomen voor verschillende groepen.
|
||
-- Of het kenmerksoort/kenmerk wel is gedefinieerd voor de betreffende
|
||
-- object-discipline/groep/soort, volgt pas tijdens de update-fase)!
|
||
--
|
||
-- p_kw is bijvoorbeeld 'Looptijd Maximaal', 'Looptijd Maximaal|3', 1049 of 1049|3 waarbij de tweede en laatste in groep 3 zitten
|
||
-- het resultaat is NULL (als niet gevonden) of Looptijd Maximaal|3 of 1049|3 voor kenmer_key 1049 in groep 3
|
||
-- Als geen groep is meegegeven dan wordt 'Looptijd Maximaal|0' opgeleverd (de default groep)
|
||
FUNCTION bepaal_kenmerk (p_kw IN VARCHAR2)
|
||
RETURN VARCHAR
|
||
IS
|
||
v_kenmerk_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 MIN(k.cnt_kenmerk_key)
|
||
INTO v_kenmerk_key
|
||
FROM cnt_kenmerk k,
|
||
cnt_srtkenmerk sk
|
||
WHERE k.cnt_srtkenmerk_key = sk.cnt_srtkenmerk_key
|
||
AND k.cnt_kenmerk_groep = v_kenmerk_groep
|
||
AND COALESCE(UPPER(k.cnt_kenmerk_omschrijving), sk.cnt_srtkenmerk_upper) = UPPER(v_kw)
|
||
AND sk.cnt_srtkenmerk_kenmerktype IN ('C', 'D', 'N', 'R', 'r', 'S', 'X', 'V')
|
||
AND k.cnt_kenmerk_verwijder IS NULL
|
||
AND sk.cnt_srtkenmerk_verwijder IS NULL;
|
||
ELSE -- kenmerkwaarde is numeriek (dus key)!
|
||
SELECT k.cnt_kenmerk_key
|
||
INTO v_kenmerk_key
|
||
FROM cnt_kenmerk k,
|
||
cnt_srtkenmerk sk
|
||
WHERE k.cnt_srtkenmerk_key = sk.cnt_srtkenmerk_key
|
||
AND k.cnt_kenmerk_groep = v_kenmerk_groep
|
||
AND k.cnt_kenmerk_key = fac.safe_to_number(v_kw)
|
||
AND sk.cnt_srtkenmerk_kenmerktype IN ('C', 'D', 'N', 'R', 'r', 'S', 'X', 'V')
|
||
AND k.cnt_kenmerk_verwijder IS NULL
|
||
AND sk.cnt_srtkenmerk_verwijder IS NULL;
|
||
END IF;
|
||
|
||
IF v_kenmerk_key IS NULL
|
||
THEN
|
||
RETURN NULL;
|
||
ELSE
|
||
-- Er is een kenmerksoort of kenmerk aanwezig met de omschrijving/kenmerk_key (v_kw)
|
||
RETURN v_kw || '|' || TO_CHAR(v_kenmerk_groep);
|
||
END IF;
|
||
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 kenmerk [' || p_kw || ']'
|
||
, 'Bestaat niet of type ongeldig');
|
||
COMMIT;
|
||
RETURN NULL;
|
||
END IF;
|
||
END; -- bepaal_kenmerk
|
||
|
||
FUNCTION kenmerk_waarde( p_import_key IN NUMBER
|
||
, p_import_index IN NUMBER
|
||
, p_aanduiding IN VARCHAR2
|
||
, p_flex_naam IN VARCHAR2
|
||
, p_flex_waarde IN VARCHAR2)
|
||
RETURN VARCHAR
|
||
IS
|
||
v_flexval VARCHAR2(200);
|
||
v_flx VARCHAR2(255);
|
||
BEGIN
|
||
v_flx := bepaal_kenmerk(p_flex_naam);
|
||
|
||
IF v_flx IS NULL
|
||
THEN
|
||
v_flexval := SUBSTR(TRIM(p_flex_waarde), 1, 255);
|
||
ELSE
|
||
v_flexval := SUBSTR(TRIM(p_flex_waarde), 1, 200);
|
||
IF LENGTH(TRIM(p_flex_waarde)) > 200
|
||
THEN
|
||
fac.imp_writelog( p_import_key, 'W'
|
||
, p_aanduiding || p_flex_naam || ' - Aangepast ivm lengte groter dan 255'
|
||
, p_import_index
|
||
);
|
||
END IF;
|
||
v_flexval := TO_CHAR(v_flx) || '=' || v_flexval;
|
||
END IF;
|
||
|
||
RETURN v_flexval;
|
||
END; -- kenmerk_waarde
|
||
|
||
BEGIN
|
||
v_errormsg := 'Fout inlezen header ';
|
||
SELECT REPLACE(UPPER(fac_imp_csv_col01 ||';'|| fac_imp_csv_col02 ||';'|| fac_imp_csv_col03 ||';'|| fac_imp_csv_col04 ||';'|| fac_imp_csv_col05 ||';'||
|
||
fac_imp_csv_col06 ||';'|| fac_imp_csv_col07 ||';'|| fac_imp_csv_col08 ||';'|| fac_imp_csv_col09 ||';'|| fac_imp_csv_col10 ||';'||
|
||
fac_imp_csv_col11 ||';'|| fac_imp_csv_col12 ||';'|| fac_imp_csv_col13 ||';'|| fac_imp_csv_col14 ||';'|| fac_imp_csv_col15 ||';'||
|
||
fac_imp_csv_col16 ||';'|| fac_imp_csv_col17 ||';'|| fac_imp_csv_col18 ||';'|| fac_imp_csv_col19 ||';'|| fac_imp_csv_col20 ||';'||
|
||
fac_imp_csv_col21 ||';'|| fac_imp_csv_col22 ||';'|| fac_imp_csv_col23 ||';'|| fac_imp_csv_col24 ||';'|| fac_imp_csv_col25 ||';'||
|
||
fac_imp_csv_col26 ||';'|| fac_imp_csv_col27 ||';'|| fac_imp_csv_col28 ||';'|| fac_imp_csv_col29
|
||
), ' ', '')
|
||
, fac_imp_csv_col30, fac_imp_csv_col31, fac_imp_csv_col32, fac_imp_csv_col33, fac_imp_csv_col34
|
||
, fac_imp_csv_col35, fac_imp_csv_col36, fac_imp_csv_col37, fac_imp_csv_col38, fac_imp_csv_col39
|
||
, fac_imp_csv_col40, fac_imp_csv_col41, fac_imp_csv_col42, fac_imp_csv_col43, fac_imp_csv_col44
|
||
, fac_imp_csv_col45, fac_imp_csv_col46, fac_imp_csv_col47, fac_imp_csv_col48, fac_imp_csv_col49
|
||
, fac_imp_csv_col50, fac_imp_csv_col51, fac_imp_csv_col52, fac_imp_csv_col53, fac_imp_csv_col54
|
||
INTO v_header_csv -- standaard header
|
||
, v_flex_naam_01, v_flex_naam_02, v_flex_naam_03, v_flex_naam_04, v_flex_naam_05 -- kenmerk kolom namen
|
||
, v_flex_naam_06, v_flex_naam_07, v_flex_naam_08, v_flex_naam_09, v_flex_naam_10
|
||
, v_flex_naam_11, v_flex_naam_12, v_flex_naam_13, v_flex_naam_14, v_flex_naam_15
|
||
, v_flex_naam_16, v_flex_naam_17, v_flex_naam_18, v_flex_naam_19, v_flex_naam_20
|
||
, v_flex_naam_21, v_flex_naam_22, v_flex_naam_23, v_flex_naam_24, v_flex_naam_25
|
||
FROM fac_imp_csv
|
||
WHERE fac_imp_csv_index = 1
|
||
AND fac_import_key = p_import_key;
|
||
|
||
-- Eerst opruiming
|
||
DELETE FROM fac_imp_cnt;
|
||
|
||
IF (v_header LIKE v_header_csv || '%')
|
||
THEN
|
||
v_header_is_valid := 1;
|
||
FOR rec IN c1
|
||
LOOP
|
||
BEGIN
|
||
v_ongeldig := 0;
|
||
v_count_rec := v_count_rec + 1;
|
||
v_aanduiding := '[' || rec.contractnr || '|' || rec.versie || '] ';
|
||
|
||
-- CSV-kolom A: Controleer het contractnummer op lengte
|
||
v_nummer_intern := SUBSTR(TRIM(rec.contractnr), 1, 30);
|
||
IF LENGTH(TRIM(rec.contractnr)) > 30
|
||
THEN
|
||
fac.imp_writelog( p_import_key, 'W', v_aanduiding || 'ContractRr - Aangepast ivm lengte groter dan 30'
|
||
, rec.fac_imp_csv_index || ' - ' || rec.contractnr || ' wordt: ' || v_nummer_intern
|
||
);
|
||
END IF;
|
||
|
||
-- CSV-kolom B: Controleer de versie op lengte
|
||
v_versie := SUBSTR(TRIM(rec.versie), 1, 10);
|
||
IF LENGTH(TRIM(rec.versie)) > 10
|
||
THEN
|
||
fac.imp_writelog( p_import_key, 'W'
|
||
, v_aanduiding || 'Versie - Aangepast ivm lengte groter dan 10'
|
||
, rec.fac_imp_csv_index || ' - ' || rec.versie || ' wordt: ' || v_versie
|
||
);
|
||
END IF;
|
||
|
||
-- CSV-kolom C: Controleer het extern contractnummer op lengte
|
||
v_nummer_extern := SUBSTR(TRIM(rec.externnr), 1, 30);
|
||
IF LENGTH(TRIM(rec.externnr)) > 30
|
||
THEN
|
||
fac.imp_writelog( p_import_key, 'W'
|
||
, v_aanduiding || 'ExternNr - Aangepast ivm lengte groter dan 30'
|
||
, rec.fac_imp_csv_index || ' - ' || rec.externnr || ' wordt: ' || v_nummer_extern
|
||
);
|
||
END IF;
|
||
|
||
-- CSV-kolom D: Controleer de lengte van het contractsoort en of het ingevuld is
|
||
v_cnt_soort := SUBSTR(TRIM(rec.contractsoort), 1, 60);
|
||
BEGIN
|
||
SELECT ins_discipline_key
|
||
INTO v_ref_key
|
||
FROM cnt_discipline
|
||
WHERE ins_discipline_omschrijving = v_cnt_soort
|
||
AND ins_discipline_verwijder IS NULL;
|
||
EXCEPTION
|
||
WHEN NO_DATA_FOUND THEN
|
||
fac.imp_writelog( p_import_key, 'W'
|
||
, v_aanduiding || 'Contractsoort - Is onbekend'
|
||
, rec.fac_imp_csv_index || ' - ' || v_cnt_soort || ', Regel wordt overgeslagen'
|
||
);
|
||
v_ongeldig := 1;
|
||
END;
|
||
|
||
-- CSV-kolom E: Controleer de lengte van de contract beschrijving
|
||
v_beschrijving := SUBSTR(TRIM(rec.beschrijving),1,50);
|
||
IF LENGTH(TRIM(rec.beschrijving)) > 50
|
||
THEN
|
||
fac.imp_writelog( p_import_key, 'W'
|
||
, v_aanduiding || 'Beschrijving - Aangepast ivm lengte groter dan 50'
|
||
, rec.fac_imp_csv_index || ' - ' || rec.beschrijving || ' wordt: ' || v_beschrijving
|
||
);
|
||
ELSE
|
||
IF v_beschrijving IS NULL
|
||
THEN
|
||
fac.imp_writelog( p_import_key, 'W'
|
||
, v_aanduiding || 'Beschrijving - Is niet ingevuld'
|
||
, rec.fac_imp_csv_index || ' - Regel wordt overgeslagen'
|
||
);
|
||
v_ongeldig := 1;
|
||
END IF;
|
||
END IF;
|
||
|
||
-- CSV-kolom F: Controleer de lengte van het mantelcontract nummer
|
||
v_mantel_nr := SUBSTR(TRIM(rec.mantelnr), 1, 30);
|
||
IF LENGTH(TRIM(rec.mantelnr)) > 30
|
||
THEN
|
||
fac.imp_writelog( p_import_key, 'W'
|
||
, v_aanduiding || 'MantelNr - Aangepast ivm lengte groter dan 30'
|
||
, rec.fac_imp_csv_index || ' - ' || rec.mantelnr || ' wordt: ' || v_mantel_nr
|
||
);
|
||
END IF;
|
||
|
||
-- CSV-kolom G: Controleer de lengte van het mantelcontract versie
|
||
v_mantel_nr_versie := SUBSTR(TRIM(v_mantel_nr_versie), 1, 10);
|
||
IF LENGTH(TRIM(rec.mantelnr_versie)) > 10
|
||
THEN
|
||
fac.imp_writelog( p_import_key, 'W'
|
||
, v_aanduiding || 'MantelNr_versie - Aangepast ivm lengte groter dan 10'
|
||
, rec.fac_imp_csv_index || ' - ' || rec.mantelnr_versie || ' wordt: ' || v_mantel_nr_versie
|
||
);
|
||
END IF;
|
||
|
||
-- CSV-kolom H: Controleer de lengte van contract omschrijving
|
||
v_omschrijving := SUBSTR(TRIM(rec.omschrijving), 1, 1000);
|
||
IF LENGTH(TRIM(rec.omschrijving)) > 1000
|
||
THEN
|
||
fac.imp_writelog( p_import_key, 'W'
|
||
, v_aanduiding || 'Omschrijving - Lengte (' || TO_CHAR(LENGTH(TRIM(rec.omschrijving))) || ') aangepast tot 1000'
|
||
, rec.fac_imp_csv_index
|
||
);
|
||
END IF;
|
||
|
||
-- CSV-kolom I: Controleer of er een geldige dienst is ingevuld (geen dienst is ook goed)
|
||
v_dienst := SUBSTR(TRIM(rec.dienst), 1, 60);
|
||
IF v_dienst IS NOT NULL
|
||
THEN
|
||
BEGIN
|
||
SELECT prs_dienst_key
|
||
INTO v_ref_key
|
||
FROM prs_dienst
|
||
WHERE prs_dienst_omschrijving = v_dienst;
|
||
EXCEPTION
|
||
WHEN NO_DATA_FOUND THEN
|
||
fac.imp_writelog( p_import_key, 'W'
|
||
, v_aanduiding || 'Dienst - Is onbekend'
|
||
, rec.fac_imp_csv_index || ' - ' || v_dienst || ', Regel wordt overgeslagen'
|
||
);
|
||
v_ongeldig := 1;
|
||
END;
|
||
END IF;
|
||
|
||
-- CSV-kolom J: Controleer of de afdelingscode bestaat
|
||
v_afdeling := SUBSTR(TRIM(rec.eigenaar_afd), 1, 15);
|
||
BEGIN
|
||
SELECT prs_afdeling_key
|
||
INTO v_ref_key
|
||
FROM prs_afdeling
|
||
WHERE prs_afdeling_upper = UPPER(v_afdeling)
|
||
AND prs_afdeling_verwijder IS NULL;
|
||
EXCEPTION
|
||
WHEN NO_DATA_FOUND THEN
|
||
fac.imp_writelog( p_import_key, 'W'
|
||
, v_aanduiding || 'Eigenaar_afd - Is onbekend'
|
||
, rec.fac_imp_csv_index || ' - ' || v_afdeling || ', Regel wordt overgeslagen'
|
||
);
|
||
v_ongeldig := 1;
|
||
END;
|
||
|
||
-- CSV-kolom K: Controleer of er een geldig eigenaar mailadres is ingevuld (mag leeg zijn)
|
||
v_perslid_eig := SUBSTR(TRIM(rec.eigenaar_email), 1, 200);
|
||
IF v_perslid_eig IS NOT NULL
|
||
THEN
|
||
BEGIN
|
||
SELECT prs_perslid_key
|
||
INTO v_ref_key
|
||
FROM prs_perslid
|
||
WHERE prs_perslid_email = v_perslid_eig;
|
||
EXCEPTION
|
||
WHEN NO_DATA_FOUND THEN
|
||
fac.imp_writelog( p_import_key, 'W'
|
||
, v_aanduiding || 'Eigenaar_email - Is onbekend'
|
||
, rec.fac_imp_csv_index || ' - ' || v_perslid_eig || ', Regel wordt overgeslagen'
|
||
);
|
||
v_ongeldig := 1;
|
||
END;
|
||
END IF;
|
||
|
||
-- CSV-kolom L: Controleer of er een geldig beheerder mailadres is ingevuld (mag niet leeg zijn)
|
||
v_perslid_beh := SUBSTR(TRIM(rec.beheerder_email), 1, 200);
|
||
IF v_perslid_beh IS NULL
|
||
THEN
|
||
fac.imp_writelog( p_import_key, 'W'
|
||
, v_aanduiding || 'Beheerder_email - Is niet ingevuld'
|
||
, rec.fac_imp_csv_index || ', Regel wordt overgeslagen'
|
||
);
|
||
v_ongeldig := 1;
|
||
ELSE
|
||
BEGIN
|
||
SELECT prs_perslid_key
|
||
INTO v_ref_key
|
||
FROM prs_perslid
|
||
WHERE prs_perslid_email = v_perslid_beh;
|
||
EXCEPTION
|
||
WHEN NO_DATA_FOUND THEN
|
||
fac.imp_writelog( p_import_key, 'W'
|
||
, v_aanduiding || 'Beheerder_email - Is onbekend'
|
||
, rec.fac_imp_csv_index || ' - ' || v_perslid_beh || ', Regel wordt overgeslagen'
|
||
);
|
||
v_ongeldig := 1;
|
||
END;
|
||
END IF;
|
||
|
||
-- CSV-kolom M: Controleeer de lengte van contract opmerking
|
||
v_opmerking := SUBSTR(TRIM(rec.opmerking), 1, 1000);
|
||
IF LENGTH(TRIM(rec.opmerking)) > 1000
|
||
THEN
|
||
fac.imp_writelog( p_import_key, 'W'
|
||
, v_aanduiding || 'Opmerking - Lengte (' || TO_CHAR(LENGTH(TRIM(rec.opmerking))) || ') aangepast tot 1000'
|
||
, rec.fac_imp_csv_index
|
||
);
|
||
END IF;
|
||
|
||
-- CSV-kolom N: Controleer ingangsdatum op geldig format en aanwezigheid
|
||
v_ingangsdatum := fac.safe_to_date(TRIM(rec.ingangsdatum), 'dd-mm-yyyy');
|
||
IF v_ingangsdatum IS NULL
|
||
THEN
|
||
fac.imp_writelog( p_import_key, 'W'
|
||
, v_aanduiding || 'Ingangsdatum - Is niet aanwezig of ongeldig'
|
||
, rec.fac_imp_csv_index || ' - ' || rec.ingangsdatum || ', Regel wordt overgeslagen'
|
||
);
|
||
v_ongeldig := 1;
|
||
END IF;
|
||
|
||
-- CSV-kolom O: Controleer rappeldatum op geldig format
|
||
v_rappeldatum := fac.safe_to_date(TRIM(rec.rappeldatum), 'dd-mm-yyyy');
|
||
IF v_rappeldatum IS NULL AND rec.rappeldatum IS NOT NULL
|
||
THEN
|
||
fac.imp_writelog( p_import_key, 'W'
|
||
, v_aanduiding || 'Rappeldatum - Is ongeldig'
|
||
, rec.fac_imp_csv_index || ' - ' || rec.rappeldatum || ', Regel wordt overgeslagen'
|
||
);
|
||
v_ongeldig := 1;
|
||
END IF;
|
||
|
||
-- CSV-kolom P: Controleer opzegdatum op geldig format
|
||
v_opzegdatum := fac.safe_to_date(TRIM(rec.opzegdatum), 'dd-mm-yyyy');
|
||
IF v_opzegdatum IS NULL AND rec.opzegdatum IS NOT NULL
|
||
THEN
|
||
fac.imp_writelog( p_import_key, 'W'
|
||
, v_aanduiding || 'Opzegdatum - Is ongeldig'
|
||
, rec.fac_imp_csv_index || ' - ' || rec.opzegdatum || ', Regel wordt overgeslagen'
|
||
);
|
||
v_ongeldig := 1;
|
||
END IF;
|
||
|
||
-- CSV-kolom Q: Controleer einddatum op geldig format en aanwezigheid
|
||
v_einddatum := fac.safe_to_date(TRIM(rec.einddatum), 'dd-mm-yyyy');
|
||
IF v_einddatum IS NULL
|
||
THEN
|
||
fac.imp_writelog( p_import_key, 'W'
|
||
, v_aanduiding || 'Einddatum - Is niet aanwezig of ongeldig'
|
||
, rec.fac_imp_csv_index || ' - ' || rec.einddatum || ', Regel wordt overgeslagen'
|
||
);
|
||
v_ongeldig := 1;
|
||
END IF;
|
||
|
||
-- CSV-kolom R: Controle soort contractpartij
|
||
v_srtcontact := SUBSTR(TRIM(rec.soort_contactpartij), 1, 1);
|
||
IF v_srtcontact IS NULL OR v_srtcontact NOT IN ('B','P')
|
||
THEN
|
||
fac.imp_writelog( p_import_key, 'W'
|
||
, v_aanduiding || 'Soort_contactpartij - Is niet aanwezig of ongeldig'
|
||
, rec.fac_imp_csv_index || ' - ' || rec.soort_contactpartij || ', Regel wordt overgeslagen'
|
||
);
|
||
v_ongeldig := 1;
|
||
END IF;
|
||
|
||
-- CSV-kolom S: Controle lengte bedrijfsnaam
|
||
IF v_srtcontact = 'B'
|
||
THEN
|
||
v_bedrijfnaam := SUBSTR(TRIM(rec.bedrijfnaam), 1, 60); -- naam van bedrijf: prs_bedrijf.prs_bedrijf_naam
|
||
IF LENGTH(TRIM(rec.bedrijfnaam)) > 60
|
||
THEN
|
||
fac.imp_writelog( p_import_key, 'W'
|
||
, v_aanduiding || 'Bedrijfnaam - Aangepast ivm lengte groter dan 60'
|
||
, rec.fac_imp_csv_index || ' - ' || rec.bedrijfnaam || ' wordt: ' || v_bedrijfnaam
|
||
);
|
||
END IF;
|
||
ELSE
|
||
v_bedrijfnaam := SUBSTR(TRIM(rec.bedrijfnaam), 1, 200); -- emailadres van persoon: prs_perslid.prs_perslid_email
|
||
IF LENGTH(TRIM(rec.bedrijfnaam)) > 200
|
||
THEN
|
||
fac.imp_writelog( p_import_key, 'W'
|
||
, v_aanduiding || 'Bedrijfnaam - Aangepast ivm lengte groter dan 200'
|
||
, rec.fac_imp_csv_index || ' - ' || rec.bedrijfnaam
|
||
);
|
||
END IF;
|
||
END IF;
|
||
|
||
IF v_bedrijfnaam IS NULL
|
||
THEN
|
||
fac.imp_writelog( p_import_key, 'W'
|
||
, v_aanduiding || 'Bedrijfnaam - Is niet aanwezig'
|
||
, rec.fac_imp_csv_index
|
||
);
|
||
v_ongeldig := 1;
|
||
END IF;
|
||
|
||
IF v_bedrijfnaam IS NOT NULL AND v_srtcontact = 'B'
|
||
THEN
|
||
|
||
BEGIN
|
||
SELECT prs_bedrijf_key
|
||
INTO v_ref_key
|
||
FROM prs_bedrijf
|
||
WHERE UPPER(prs_bedrijf_naam) = UPPER(v_bedrijfnaam)
|
||
AND prs_bedrijf_verwijder IS NULL;
|
||
EXCEPTION
|
||
WHEN NO_DATA_FOUND THEN
|
||
fac.imp_writelog( p_import_key, 'W'
|
||
, v_aanduiding || 'Debiteur - Is onbekend'
|
||
, rec.fac_imp_csv_index || ' - ' || v_bedrijfnaam || ', Regel wordt overgeslagen'
|
||
);
|
||
v_ongeldig := 1;
|
||
END;
|
||
END IF;
|
||
|
||
-- CSV-kolom T: Controle contact mailadres
|
||
v_contactnaam := SUBSTR(TRIM(rec.contactnaam), 1, 200);
|
||
IF LENGTH(TRIM(rec.contactnaam)) > 200
|
||
THEN
|
||
fac.imp_writelog( p_import_key, 'W'
|
||
, v_aanduiding || 'Contactnaam - Aangepast ivm lengte groter dan 200'
|
||
, rec.fac_imp_csv_index
|
||
);
|
||
END IF;
|
||
|
||
-- CSV-kolom U: Controle Kostenplaatscode
|
||
v_kpn_code := SUBSTR(TRIM(rec.kostenplaatscode), 1, 30);
|
||
BEGIN
|
||
SELECT prs_kostenplaats_key
|
||
INTO v_ref_key
|
||
FROM prs_kostenplaats
|
||
WHERE prs_kostenplaats_nr = v_kpn_code
|
||
AND prs_kostenplaats_verwijder IS NULL;
|
||
EXCEPTION
|
||
WHEN NO_DATA_FOUND THEN
|
||
fac.imp_writelog( p_import_key, 'W'
|
||
, v_aanduiding || 'KostenplaatsCode - Is onbekend of niet ingevuld'
|
||
, rec.fac_imp_csv_index || ' - ' || v_kpn_code || ', Regel wordt overgeslagen'
|
||
);
|
||
v_ongeldig := 1;
|
||
END;
|
||
|
||
-- CSV-kolom V: Controle Kostensoortcode
|
||
v_kostensoort_code := SUBSTR(TRIM(rec.kostensoortcode), 1, 60);
|
||
IF LENGTH(TRIM(rec.kostensoortcode)) IS NOT NULL
|
||
THEN
|
||
BEGIN
|
||
SELECT prs_kostensoort_key
|
||
INTO v_ref_key
|
||
FROM prs_kostensoort
|
||
WHERE prs_kostensoort_upper = UPPER(v_kostensoort_code)
|
||
AND prs_kostensoort_verwijder IS NULL;
|
||
EXCEPTION
|
||
WHEN NO_DATA_FOUND THEN
|
||
fac.imp_writelog( p_import_key, 'W'
|
||
, v_aanduiding || 'KostensoortCode - Is onbekend of niet ingevuld'
|
||
, rec.fac_imp_csv_index || ' - ' || v_kostensoort_code || ', Regel wordt overgeslagen'
|
||
);
|
||
v_ongeldig := 1;
|
||
END;
|
||
END IF;
|
||
|
||
-- CSV-kolom W: Controle of contractbedrag geldig is
|
||
v_bedrag := fac.safe_to_number(rec.contractbedrag);
|
||
IF v_bedrag IS NULL AND rec.contractbedrag IS NOT NULL
|
||
THEN
|
||
fac.imp_writelog( p_import_key, 'W'
|
||
, v_aanduiding || 'Contractbedrag - Wordt genegeerd'
|
||
, rec.fac_imp_csv_index || ' - ' || rec.contractbedrag
|
||
);
|
||
END IF;
|
||
|
||
-- CSV-kolom X: Controle of termijnbedrag geldig is
|
||
v_bedrag_termijn := fac.safe_to_number(rec.termijnbedrag);
|
||
IF v_bedrag_termijn IS NULL AND rec.termijnbedrag IS NOT NULL
|
||
THEN
|
||
fac.imp_writelog( p_import_key, 'W'
|
||
, v_aanduiding || 'Termijnbedrag - Wordt genegeerd'
|
||
, rec.fac_imp_csv_index || ' - ' || rec.termijnbedrag
|
||
);
|
||
END IF;
|
||
|
||
-- CSV-kolom Y: Controle of uurtarief geldig is
|
||
v_uurtarief := fac.safe_to_number(rec.uurtarief);
|
||
IF v_uurtarief IS NULL AND rec.uurtarief IS NOT NULL
|
||
THEN
|
||
fac.imp_writelog( p_import_key, 'W'
|
||
, v_aanduiding || 'Uurtrief - Wordt genegeerd'
|
||
, rec.fac_imp_csv_index || ' - ' || rec.uurtarief
|
||
);
|
||
END IF;
|
||
|
||
-- CSV-kolom Z: Controle of korting geldig is
|
||
v_korting := fac.safe_to_number(rec.korting);
|
||
IF v_korting IS NULL AND rec.korting IS NOT NULL
|
||
THEN
|
||
fac.imp_writelog( p_import_key, 'W'
|
||
, v_aanduiding || 'Korting - Wordt genegeerd'
|
||
, rec.fac_imp_csv_index || ' - ' || rec.korting
|
||
);
|
||
END IF;
|
||
|
||
-- CSV-kolom AA: Controle ScopeType
|
||
IF TRIM(rec.locatiegebouw_code) IS NULL
|
||
THEN
|
||
v_scope_type := NULL;
|
||
ELSE
|
||
v_scope_type := SUBSTR(TRIM(rec.scopetype), 1, 1);
|
||
IF v_scope_type IS NULL OR v_scope_type NOT IN ('L', 'G')
|
||
THEN
|
||
fac.imp_writelog( p_import_key, 'W'
|
||
, v_aanduiding || 'ScopeType - Is niet aanwezig of ongeldig'
|
||
, rec.fac_imp_csv_index || ' - ' || v_scope_type || ', Regel wordt overgeslagen'
|
||
);
|
||
v_ongeldig := 1;
|
||
END IF;
|
||
END IF;
|
||
|
||
-- CSV-kolom AB: Controle Locatiegebouw_code
|
||
IF v_scope_type IS NOT NULL
|
||
THEN
|
||
IF v_scope_type = 'L'
|
||
THEN
|
||
v_gebouwcode := SUBSTR(TRIM(rec.locatiegebouw_code), 1, 10);
|
||
IF LENGTH(TRIM(rec.locatiegebouw_code)) > 10
|
||
THEN
|
||
fac.imp_writelog( p_import_key, 'W'
|
||
, v_aanduiding || 'Locatiegebouw_code - Aangepast ivm lengte groter dan 10 voor locatie'
|
||
, rec.fac_imp_csv_index || ' - ' || rec.locatiegebouw_code || ' wordt: ' || v_gebouwcode
|
||
);
|
||
END IF;
|
||
END IF;
|
||
IF v_scope_type = 'G'
|
||
THEN
|
||
v_gebouwcode := SUBSTR(TRIM(rec.locatiegebouw_code), 1, 12);
|
||
IF LENGTH(TRIM(rec.locatiegebouw_code)) > 12
|
||
THEN
|
||
fac.imp_writelog( p_import_key, 'W'
|
||
, v_aanduiding || 'Locatiegebouw_code - Aangepast ivm lengte groter dan 12 voor gebouw'
|
||
, rec.fac_imp_csv_index || ' - ' || rec.locatiegebouw_code || ' wordt: ' || v_gebouwcode
|
||
);
|
||
END IF;
|
||
END IF;
|
||
ELSE
|
||
v_gebouwcode := NULL;
|
||
END IF;
|
||
|
||
-- CSV-kolom AC: Controle op geldige waarde voor verlengen
|
||
v_verlengen := fac.safe_to_number(rec.verlengen);
|
||
IF v_verlengen NOT IN (0,1,2,3,5)
|
||
THEN
|
||
fac.imp_writelog( p_import_key, 'W'
|
||
, v_aanduiding || 'Verlengen - Ongeldige waarde'
|
||
, rec.fac_imp_csv_index || ' - ' || rec.verlengen || ', Regel wordt overgeslagen'
|
||
);
|
||
v_ongeldig := 1;
|
||
END IF;
|
||
|
||
-- De flexkenmerkwaarden
|
||
/*
|
||
v_cnt_kenmerk_01 := v_flex_naam_01 || '|0=' || kenmerk_waarde(p_import_key, rec.fac_imp_csv_index, v_aanduiding, v_flex_naam_01, rec.flex_01);
|
||
v_cnt_kenmerk_02 := v_flex_naam_02 || '|0=' || kenmerk_waarde(p_import_key, rec.fac_imp_csv_index, v_aanduiding, v_flex_naam_02, rec.flex_02);
|
||
v_cnt_kenmerk_03 := v_flex_naam_03 || '|0=' || kenmerk_waarde(p_import_key, rec.fac_imp_csv_index, v_aanduiding, v_flex_naam_03, rec.flex_03);
|
||
v_cnt_kenmerk_04 := v_flex_naam_04 || '|0=' || kenmerk_waarde(p_import_key, rec.fac_imp_csv_index, v_aanduiding, v_flex_naam_04, rec.flex_04);
|
||
v_cnt_kenmerk_05 := v_flex_naam_05 || '|0=' || kenmerk_waarde(p_import_key, rec.fac_imp_csv_index, v_aanduiding, v_flex_naam_05, rec.flex_05);
|
||
v_cnt_kenmerk_06 := v_flex_naam_06 || '|0=' || kenmerk_waarde(p_import_key, rec.fac_imp_csv_index, v_aanduiding, v_flex_naam_06, rec.flex_06);
|
||
v_cnt_kenmerk_07 := v_flex_naam_07 || '|0=' || kenmerk_waarde(p_import_key, rec.fac_imp_csv_index, v_aanduiding, v_flex_naam_07, rec.flex_07);
|
||
v_cnt_kenmerk_08 := v_flex_naam_08 || '|0=' || kenmerk_waarde(p_import_key, rec.fac_imp_csv_index, v_aanduiding, v_flex_naam_08, rec.flex_08);
|
||
v_cnt_kenmerk_09 := v_flex_naam_09 || '|0=' || kenmerk_waarde(p_import_key, rec.fac_imp_csv_index, v_aanduiding, v_flex_naam_09, rec.flex_09);
|
||
v_cnt_kenmerk_10 := v_flex_naam_10 || '|0=' || kenmerk_waarde(p_import_key, rec.fac_imp_csv_index, v_aanduiding, v_flex_naam_10, rec.flex_10);
|
||
v_cnt_kenmerk_11 := v_flex_naam_11 || '|0=' || kenmerk_waarde(p_import_key, rec.fac_imp_csv_index, v_aanduiding, v_flex_naam_11, rec.flex_11);
|
||
v_cnt_kenmerk_12 := v_flex_naam_12 || '|0=' || kenmerk_waarde(p_import_key, rec.fac_imp_csv_index, v_aanduiding, v_flex_naam_12, rec.flex_12);
|
||
v_cnt_kenmerk_13 := v_flex_naam_13 || '|0=' || kenmerk_waarde(p_import_key, rec.fac_imp_csv_index, v_aanduiding, v_flex_naam_13, rec.flex_13);
|
||
v_cnt_kenmerk_14 := v_flex_naam_14 || '|0=' || kenmerk_waarde(p_import_key, rec.fac_imp_csv_index, v_aanduiding, v_flex_naam_14, rec.flex_14);
|
||
v_cnt_kenmerk_15 := v_flex_naam_15 || '|0=' || kenmerk_waarde(p_import_key, rec.fac_imp_csv_index, v_aanduiding, v_flex_naam_15, rec.flex_15);
|
||
v_cnt_kenmerk_16 := v_flex_naam_16 || '|0=' || kenmerk_waarde(p_import_key, rec.fac_imp_csv_index, v_aanduiding, v_flex_naam_16, rec.flex_16);
|
||
v_cnt_kenmerk_17 := v_flex_naam_17 || '|0=' || kenmerk_waarde(p_import_key, rec.fac_imp_csv_index, v_aanduiding, v_flex_naam_17, rec.flex_17);
|
||
v_cnt_kenmerk_18 := v_flex_naam_18 || '|0=' || kenmerk_waarde(p_import_key, rec.fac_imp_csv_index, v_aanduiding, v_flex_naam_18, rec.flex_18);
|
||
v_cnt_kenmerk_19 := v_flex_naam_19 || '|0=' || kenmerk_waarde(p_import_key, rec.fac_imp_csv_index, v_aanduiding, v_flex_naam_19, rec.flex_19);
|
||
v_cnt_kenmerk_20 := v_flex_naam_20 || '|0=' || kenmerk_waarde(p_import_key, rec.fac_imp_csv_index, v_aanduiding, v_flex_naam_20, rec.flex_20);
|
||
v_cnt_kenmerk_21 := v_flex_naam_21 || '|0=' || kenmerk_waarde(p_import_key, rec.fac_imp_csv_index, v_aanduiding, v_flex_naam_21, rec.flex_21);
|
||
v_cnt_kenmerk_22 := v_flex_naam_22 || '|0=' || kenmerk_waarde(p_import_key, rec.fac_imp_csv_index, v_aanduiding, v_flex_naam_22, rec.flex_22);
|
||
v_cnt_kenmerk_23 := v_flex_naam_23 || '|0=' || kenmerk_waarde(p_import_key, rec.fac_imp_csv_index, v_aanduiding, v_flex_naam_23, rec.flex_23);
|
||
v_cnt_kenmerk_24 := v_flex_naam_24 || '|0=' || kenmerk_waarde(p_import_key, rec.fac_imp_csv_index, v_aanduiding, v_flex_naam_24, rec.flex_24);
|
||
v_cnt_kenmerk_25 := v_flex_naam_25 || '|0=' || kenmerk_waarde(p_import_key, rec.fac_imp_csv_index, v_aanduiding, v_flex_naam_25, rec.flex_25);
|
||
*/
|
||
|
||
v_cnt_kenmerk_01 := kenmerk_waarde(p_import_key, rec.fac_imp_csv_index, v_aanduiding, v_flex_naam_01, rec.flex_01);
|
||
v_cnt_kenmerk_02 := kenmerk_waarde(p_import_key, rec.fac_imp_csv_index, v_aanduiding, v_flex_naam_02, rec.flex_02);
|
||
v_cnt_kenmerk_03 := kenmerk_waarde(p_import_key, rec.fac_imp_csv_index, v_aanduiding, v_flex_naam_03, rec.flex_03);
|
||
v_cnt_kenmerk_04 := kenmerk_waarde(p_import_key, rec.fac_imp_csv_index, v_aanduiding, v_flex_naam_04, rec.flex_04);
|
||
v_cnt_kenmerk_05 := kenmerk_waarde(p_import_key, rec.fac_imp_csv_index, v_aanduiding, v_flex_naam_05, rec.flex_05);
|
||
v_cnt_kenmerk_06 := kenmerk_waarde(p_import_key, rec.fac_imp_csv_index, v_aanduiding, v_flex_naam_06, rec.flex_06);
|
||
v_cnt_kenmerk_07 := kenmerk_waarde(p_import_key, rec.fac_imp_csv_index, v_aanduiding, v_flex_naam_07, rec.flex_07);
|
||
v_cnt_kenmerk_08 := kenmerk_waarde(p_import_key, rec.fac_imp_csv_index, v_aanduiding, v_flex_naam_08, rec.flex_08);
|
||
v_cnt_kenmerk_09 := kenmerk_waarde(p_import_key, rec.fac_imp_csv_index, v_aanduiding, v_flex_naam_09, rec.flex_09);
|
||
v_cnt_kenmerk_10 := kenmerk_waarde(p_import_key, rec.fac_imp_csv_index, v_aanduiding, v_flex_naam_10, rec.flex_10);
|
||
v_cnt_kenmerk_11 := kenmerk_waarde(p_import_key, rec.fac_imp_csv_index, v_aanduiding, v_flex_naam_11, rec.flex_11);
|
||
v_cnt_kenmerk_12 := kenmerk_waarde(p_import_key, rec.fac_imp_csv_index, v_aanduiding, v_flex_naam_12, rec.flex_12);
|
||
v_cnt_kenmerk_13 := kenmerk_waarde(p_import_key, rec.fac_imp_csv_index, v_aanduiding, v_flex_naam_13, rec.flex_13);
|
||
v_cnt_kenmerk_14 := kenmerk_waarde(p_import_key, rec.fac_imp_csv_index, v_aanduiding, v_flex_naam_14, rec.flex_14);
|
||
v_cnt_kenmerk_15 := kenmerk_waarde(p_import_key, rec.fac_imp_csv_index, v_aanduiding, v_flex_naam_15, rec.flex_15);
|
||
v_cnt_kenmerk_16 := kenmerk_waarde(p_import_key, rec.fac_imp_csv_index, v_aanduiding, v_flex_naam_16, rec.flex_16);
|
||
v_cnt_kenmerk_17 := kenmerk_waarde(p_import_key, rec.fac_imp_csv_index, v_aanduiding, v_flex_naam_17, rec.flex_17);
|
||
v_cnt_kenmerk_18 := kenmerk_waarde(p_import_key, rec.fac_imp_csv_index, v_aanduiding, v_flex_naam_18, rec.flex_18);
|
||
v_cnt_kenmerk_19 := kenmerk_waarde(p_import_key, rec.fac_imp_csv_index, v_aanduiding, v_flex_naam_19, rec.flex_19);
|
||
v_cnt_kenmerk_20 := kenmerk_waarde(p_import_key, rec.fac_imp_csv_index, v_aanduiding, v_flex_naam_20, rec.flex_20);
|
||
v_cnt_kenmerk_21 := kenmerk_waarde(p_import_key, rec.fac_imp_csv_index, v_aanduiding, v_flex_naam_21, rec.flex_21);
|
||
v_cnt_kenmerk_22 := kenmerk_waarde(p_import_key, rec.fac_imp_csv_index, v_aanduiding, v_flex_naam_22, rec.flex_22);
|
||
v_cnt_kenmerk_23 := kenmerk_waarde(p_import_key, rec.fac_imp_csv_index, v_aanduiding, v_flex_naam_23, rec.flex_23);
|
||
v_cnt_kenmerk_24 := kenmerk_waarde(p_import_key, rec.fac_imp_csv_index, v_aanduiding, v_flex_naam_24, rec.flex_24);
|
||
v_cnt_kenmerk_25 := kenmerk_waarde(p_import_key, rec.fac_imp_csv_index, v_aanduiding, v_flex_naam_25, rec.flex_25);
|
||
|
||
|
||
-- 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 flex<n> gevuld met <key>=<waarde>; zoniet, dan is
|
||
-- flex<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_cnt
|
||
( nummer_intern
|
||
, versie
|
||
, nummer_extern
|
||
, cnt_soort
|
||
, beschrijving
|
||
, mantel_nr
|
||
, mantel_nr_versie
|
||
, omschrijving
|
||
, dienst
|
||
, afdeling
|
||
, perslid_eig
|
||
, perslid_beh
|
||
, opmerking
|
||
, datum_ingang
|
||
, datum_rappel
|
||
, datum_opzeg
|
||
, datum_eind
|
||
, soortcontact
|
||
, bedrijf_naam
|
||
, contact_naam
|
||
, kpn_code
|
||
, kostensoort
|
||
, bedrag
|
||
, bedrag_termijn
|
||
, uurtarief
|
||
, korting
|
||
, scope
|
||
, gebouwcode
|
||
, verlengen
|
||
, flex1, flex2, flex3, flex4, flex5
|
||
, flex6, flex7, flex8, flex9, flex10
|
||
, flex11, flex12, flex13, flex14, flex15
|
||
, flex16, flex17, flex18, flex19, flex20
|
||
, flex21, flex22, flex23, flex24, flex25
|
||
)
|
||
VALUES ( v_nummer_intern
|
||
, v_versie
|
||
, v_nummer_extern
|
||
, v_cnt_soort
|
||
, v_beschrijving
|
||
, v_mantel_nr
|
||
, v_mantel_nr_versie
|
||
, v_omschrijving
|
||
, v_dienst
|
||
, v_afdeling
|
||
, v_perslid_eig
|
||
, v_perslid_beh
|
||
, v_opmerking
|
||
, v_ingangsdatum
|
||
, v_rappeldatum
|
||
, v_opzegdatum
|
||
, v_einddatum
|
||
, v_srtcontact
|
||
, v_bedrijfnaam
|
||
, v_contactnaam
|
||
, v_kpn_code
|
||
, v_kostensoort_code
|
||
, v_bedrag
|
||
, v_bedrag_termijn
|
||
, v_uurtarief
|
||
, v_korting
|
||
, v_scope_type
|
||
, v_gebouwcode
|
||
, v_verlengen
|
||
, v_cnt_kenmerk_01, v_cnt_kenmerk_02, v_cnt_kenmerk_03, v_cnt_kenmerk_04, v_cnt_kenmerk_05
|
||
, v_cnt_kenmerk_06, v_cnt_kenmerk_07, v_cnt_kenmerk_08, v_cnt_kenmerk_09, v_cnt_kenmerk_10
|
||
, v_cnt_kenmerk_11, v_cnt_kenmerk_12, v_cnt_kenmerk_13, v_cnt_kenmerk_14, v_cnt_kenmerk_15
|
||
, v_cnt_kenmerk_16, v_cnt_kenmerk_17, v_cnt_kenmerk_18, v_cnt_kenmerk_19, v_cnt_kenmerk_20
|
||
, v_cnt_kenmerk_21, v_cnt_kenmerk_22, v_cnt_kenmerk_23, v_cnt_kenmerk_24, v_cnt_kenmerk_25
|
||
);
|
||
COMMIT;
|
||
v_count_imp := v_count_imp + 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;
|
||
END LOOP;
|
||
END IF;
|
||
|
||
IF (v_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'
|
||
, 'Contracten/#ingelezen importregels: ' || TO_CHAR (v_count_rec)
|
||
, '');
|
||
fac.imp_writelog ( p_import_key, 'S'
|
||
, 'Contracten/#ongeldige niet ingelezen importregels: ' || TO_CHAR (v_count_rec - v_count_imp)
|
||
, '');
|
||
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 contracten afgebroken!');
|
||
END schg_import_cnt_schg;
|
||
/
|
||
|
||
CREATE OR REPLACE PROCEDURE schg_update_cnt_schg (p_import_key IN NUMBER)
|
||
AS
|
||
-- Cursor zoekt direct alle afgeleide gegevens.
|
||
-- Een leeg veld betekent dus: <20>f deze regel overslaan, <20>f nieuwe data toevoegen.
|
||
CURSOR c1
|
||
IS
|
||
WITH imp_cnt AS
|
||
( SELECT i.nummer_intern
|
||
, i.versie
|
||
, i.nummer_extern
|
||
, i.cnt_soort
|
||
, i.beschrijving
|
||
, i.mantel_nr
|
||
, i.mantel_nr_versie
|
||
, i.omschrijving
|
||
, i.dienst
|
||
, i.afdeling
|
||
, i.perslid_eig
|
||
, i.perslid_beh
|
||
, i.opmerking
|
||
, i.datum_ingang
|
||
, i.datum_rappel
|
||
, i.datum_opzeg
|
||
, i.datum_eind
|
||
, i.soortcontact
|
||
, i.bedrijf_naam
|
||
, i.contact_naam
|
||
, i.kpn_code
|
||
, i.kostensoort
|
||
, i.bedrag
|
||
, i.bedrag_termijn
|
||
, i.uurtarief
|
||
, i.korting
|
||
, i.scope
|
||
, i.gebouwcode
|
||
, i.verlengen
|
||
, disc.ins_discipline_key
|
||
, mntl.cnt_contract_key mantel_key
|
||
, d.prs_dienst_key
|
||
, afd.prs_afdeling_key
|
||
, eig.prs_afdeling_key prs_afdeling_key_eig
|
||
, eig.prs_perslid_key prs_perslid_key_eig
|
||
, beh.prs_perslid_key prs_perslid_key_beh
|
||
, CASE WHEN i.soortcontact = 'P'
|
||
THEN (SELECT prs_perslid_key
|
||
FROM prs_perslid
|
||
WHERE LOWER(TRIM(prs_perslid_email)) = LOWER(i.bedrijf_naam)
|
||
)
|
||
ELSE (SELECT MIN (prs_bedrijf_key)
|
||
FROM prs_bedrijf
|
||
WHERE (1=1) --prs_bedrijf_contract IS NOT NULL
|
||
AND ( TRIM(prs_bedrijf_naam_upper) = UPPER (i.bedrijf_naam)
|
||
OR UPPER(TRIM(prs_leverancier_nr)) = UPPER (i.bedrijf_naam)
|
||
)
|
||
)
|
||
END prs_bedrijf_key
|
||
, kpn.prs_kostenplaats_key
|
||
, ksr.prs_kostensoort_key
|
||
, i.flex1, i.flex2, i.flex3, i.flex4, i.flex5
|
||
, i.flex6, i.flex7, i.flex8, i.flex9, i.flex10
|
||
, i.flex11, i.flex12, i.flex13, i.flex14, i.flex15
|
||
, i.flex16, i.flex17, i.flex18, i.flex19, i.flex20
|
||
, i.flex21, i.flex22, i.flex23, i.flex24, i.flex25
|
||
FROM fac_imp_cnt i
|
||
, (SELECT *
|
||
FROM cnt_discipline
|
||
WHERE ins_discipline_verwijder IS NULL
|
||
) disc
|
||
, (SELECT c.*
|
||
FROM cnt_v_aanwezigcontract c
|
||
, cnt_disc_params dp
|
||
WHERE c.ins_discipline_key = dp.cnt_ins_discipline_key
|
||
AND dp.cnt_srtcontract_type = 6
|
||
) mntl
|
||
, prs_dienst d
|
||
, (SELECT *
|
||
FROM prs_afdeling
|
||
WHERE prs_afdeling_verwijder IS NULL
|
||
) afd
|
||
, prs_v_aanwezigperslid eig
|
||
, prs_v_aanwezigperslid beh
|
||
, prs_v_aanwezigkostenplaats kpn
|
||
, prs_kostensoort ksr
|
||
WHERE UPPER(i.cnt_soort) = UPPER(TRIM(disc.ins_discipline_omschrijving(+)))
|
||
AND UPPER(i.mantel_nr) = UPPER(TRIM(mntl.cnt_contract_nummer_intern(+)))
|
||
AND UPPER(i.dienst) = UPPER(TRIM(d.prs_dienst_omschrijving(+)))
|
||
AND UPPER(i.afdeling) = TRIM(afd.prs_afdeling_upper(+))
|
||
AND UPPER(i.perslid_eig) = UPPER(TRIM(eig.prs_perslid_email(+)))
|
||
AND UPPER(i.perslid_beh) = UPPER(TRIM(beh.prs_perslid_email(+)))
|
||
AND UPPER(i.kpn_code) = TRIM(kpn.prs_kostenplaats_upper(+))
|
||
AND UPPER(i.kostensoort) = TRIM(ksr.prs_kostensoort_upper(+))
|
||
)
|
||
SELECT a.nummer_intern
|
||
, a.nummer_extern
|
||
, a.cnt_soort
|
||
, dp.cnt_srtcontract_type
|
||
, a.ins_discipline_key
|
||
, a.beschrijving
|
||
, a.mantel_nr
|
||
, a.mantel_nr_versie
|
||
, a.mantel_key
|
||
, a.omschrijving
|
||
, a.versie
|
||
, a.dienst
|
||
, a.prs_dienst_key
|
||
, a.afdeling
|
||
, a.prs_afdeling_key
|
||
, a.perslid_eig
|
||
, a.prs_perslid_key_eig
|
||
, a.prs_afdeling_key_eig
|
||
, a.perslid_beh
|
||
, a.prs_perslid_key_beh
|
||
, a.opmerking
|
||
, a.datum_ingang
|
||
, a.datum_eind
|
||
, a.datum_opzeg
|
||
, a.datum_rappel
|
||
, a.soortcontact
|
||
, a.bedrijf_naam
|
||
, a.prs_bedrijf_key
|
||
, a.contact_naam
|
||
, cp.prs_contactpersoon_key
|
||
, a.kpn_code
|
||
, a.prs_kostenplaats_key
|
||
, a.kostensoort
|
||
, a.prs_kostensoort_key
|
||
, a.bedrag
|
||
, a.bedrag_termijn
|
||
, a.uurtarief
|
||
, a.korting
|
||
, a.scope locgeb_scope
|
||
, a.gebouwcode locgeb_code
|
||
, gg.plaats_scope
|
||
, gg.plaats_key
|
||
, a.verlengen
|
||
, a.flex1 cnt_kenmerkwaarde1
|
||
, a.flex2 cnt_kenmerkwaarde2
|
||
, a.flex3 cnt_kenmerkwaarde3
|
||
, a.flex4 cnt_kenmerkwaarde4
|
||
, a.flex5 cnt_kenmerkwaarde5
|
||
, a.flex6 cnt_kenmerkwaarde6
|
||
, a.flex7 cnt_kenmerkwaarde7
|
||
, a.flex8 cnt_kenmerkwaarde8
|
||
, a.flex9 cnt_kenmerkwaarde9
|
||
, a.flex10 cnt_kenmerkwaarde10
|
||
, a.flex11 cnt_kenmerkwaarde11
|
||
, a.flex12 cnt_kenmerkwaarde12
|
||
, a.flex13 cnt_kenmerkwaarde13
|
||
, a.flex14 cnt_kenmerkwaarde14
|
||
, a.flex15 cnt_kenmerkwaarde15
|
||
, a.flex16 cnt_kenmerkwaarde16
|
||
, a.flex17 cnt_kenmerkwaarde17
|
||
, a.flex18 cnt_kenmerkwaarde18
|
||
, a.flex19 cnt_kenmerkwaarde19
|
||
, a.flex20 cnt_kenmerkwaarde20
|
||
, a.flex21 cnt_kenmerkwaarde21
|
||
, a.flex22 cnt_kenmerkwaarde22
|
||
, a.flex23 cnt_kenmerkwaarde23
|
||
, a.flex24 cnt_kenmerkwaarde24
|
||
, a.flex25 cnt_kenmerkwaarde25
|
||
FROM imp_cnt a
|
||
, cnt_disc_params dp
|
||
, prs_contactpersoon cp
|
||
, (SELECT 'L' plaats_scope
|
||
, alg_locatie_key plaats_key
|
||
, alg_locatie_code plaats_code
|
||
FROM alg_v_aanweziglocatie
|
||
UNION
|
||
SELECT 'G'
|
||
, alg_gebouw_key
|
||
, alg_gebouw_code
|
||
FROM alg_v_aanweziggebouw
|
||
) gg
|
||
WHERE a.ins_discipline_key = dp.cnt_ins_discipline_key
|
||
AND UPPER(a.contact_naam) = UPPER(TRIM(cp.prs_contactpersoon_email(+)))
|
||
AND a.prs_bedrijf_key = cp.prs_bedrijf_key(+)
|
||
AND a.scope = gg.plaats_scope(+)
|
||
AND a.gebouwcode = gg.plaats_code(+);
|
||
|
||
-- Constanten
|
||
c_contract_type NUMBER := 5; -- Leverancier (met scope)
|
||
|
||
v_errormsg VARCHAR2(1000) := '-';
|
||
oracle_err_num NUMBER;
|
||
oracle_err_mes VARCHAR2(200);
|
||
v_aanduiding VARCHAR2(200);
|
||
v_geldig NUMBER(1);
|
||
v_facilitor_key NUMBER;
|
||
v_perslid_key_eig NUMBER;
|
||
v_perslid_key_beh NUMBER;
|
||
v_typecontract_key NUMBER;
|
||
v_cnt_discipline_key NUMBER;
|
||
v_contactpersoon_key NUMBER;
|
||
v_cnt_status NUMBER;
|
||
v_termijn_type VARCHAR2(1);
|
||
v_termijn_aantal NUMBER;
|
||
v_termijn_key_opzeg NUMBER;
|
||
v_termijn_key_rappel NUMBER;
|
||
v_contract_key NUMBER;
|
||
v_count NUMBER;
|
||
v_count_tot NUMBER;
|
||
v_count_cntnew NUMBER;
|
||
v_count_cntupd NUMBER;
|
||
v_srtnoti_code VARCHAR2(6);
|
||
v_fulltext varchar2(2000);
|
||
|
||
-- SUBPROC
|
||
PROCEDURE bepaal_termijn( p_start IN DATE
|
||
, p_eind IN DATE
|
||
, p_termijn_type OUT VARCHAR2
|
||
, p_termijn_aantal OUT NUMBER
|
||
, p_afronden IN BOOLEAN
|
||
)
|
||
AS
|
||
v_type VARCHAR2(1) := 'W';
|
||
v_aantal NUMBER := 0;
|
||
v_zelfde_dag BOOLEAN;
|
||
v_zelfde_weekdag BOOLEAN;
|
||
v_zelfde_maand BOOLEAN;
|
||
min_jaar NUMBER := 3; -- Afronden op jaren als het aantal dagen groter is dan dit aantal jaren
|
||
min_maand NUMBER := 3; -- Afronden op maanden als het aantal dagen groter is dan dit aantal maanden.
|
||
min_week NUMBER := 4; -- Afronden op weken als het aantal dagen groter is dan dit aantal weken.
|
||
BEGIN
|
||
IF p_start IS NOT NULL AND p_eind > p_start
|
||
THEN
|
||
v_zelfde_weekdag := (TO_CHAR(p_start, 'D') = TO_CHAR(p_eind, 'D'));
|
||
v_zelfde_dag := (TO_CHAR(p_start, 'dd') = TO_CHAR(p_eind, 'dd'));
|
||
v_zelfde_maand := (TO_CHAR(p_start, 'mm') = TO_CHAR(p_eind, 'mm'));
|
||
CASE WHEN (v_zelfde_dag AND v_zelfde_maand)
|
||
THEN
|
||
v_type := 'Y';
|
||
v_aantal := TO_NUMBER(TO_CHAR(p_eind, 'yyyy')) - TO_NUMBER(TO_CHAR(p_start, 'yyyy'));
|
||
WHEN (v_zelfde_dag AND NOT v_zelfde_maand)
|
||
THEN
|
||
v_type := 'M';
|
||
v_aantal := ROUND(MONTHS_BETWEEN(p_eind, p_start));
|
||
WHEN (v_zelfde_weekdag)
|
||
THEN
|
||
v_type := 'W';
|
||
v_aantal := ROUND((p_eind - p_start) / 7);
|
||
ELSE
|
||
v_type := 'D';
|
||
v_aantal := p_eind - p_start;
|
||
IF p_afronden
|
||
THEN
|
||
CASE WHEN v_aantal > (365 * min_jaar)
|
||
THEN -- afronden op jaren
|
||
v_type := 'Y';
|
||
v_aantal := ROUND(v_aantal / 365);
|
||
WHEN v_aantal > (30 * min_maand)
|
||
THEN -- afronden op maanden
|
||
v_type := 'M';
|
||
v_aantal := ROUND(v_aantal / 30);
|
||
WHEN v_aantal > (7 * min_week)
|
||
THEN -- afronden op weken
|
||
v_type := 'W';
|
||
v_aantal := ROUND(v_aantal / 7);
|
||
END CASE;
|
||
END IF;
|
||
END CASE;
|
||
END IF;
|
||
--
|
||
v_aantal := LEAST(v_aantal, 999);
|
||
IF v_aantal < 0
|
||
THEN
|
||
v_aantal := 0;
|
||
v_type := 'W';
|
||
END IF;
|
||
--
|
||
p_termijn_type := v_type;
|
||
p_termijn_aantal := v_aantal;
|
||
END; -- SUBPROC bepaal_termijn
|
||
|
||
-- SUBPROC
|
||
-- p_kenmerkwaarde = 'Looptijd Maximaal|1=24'. Ofwel: kenmerk_omschrijving|groep=waarde.
|
||
-- p_kenmerkwaarde = '1049|1=24'. Ofwel: kenmerk_key|groep=waarde.
|
||
PROCEDURE upsert_cntkenmerk( p_cnt_key IN NUMBER
|
||
, p_kenmerkwaarde IN VARCHAR2)
|
||
AS
|
||
v_kenmerk_key NUMBER;
|
||
v_srtkenmerk_type cnt_srtkenmerk.cnt_srtkenmerk_kenmerktype%TYPE;
|
||
ccount NUMBER;
|
||
v_srtkenmerk_key NUMBER;
|
||
v_groep NUMBER;
|
||
v_kenmerk VARCHAR2 (50);
|
||
v_waarde VARCHAR2 (255);
|
||
v_objectnaam fac_kenmerkdomein.fac_kenmerkdomein_objectnaam%TYPE;
|
||
v_kolomnaam fac_kenmerkdomein.fac_kenmerkdomein_kolomnaam%TYPE;
|
||
v_kolomtxt fac_kenmerkdomein.fac_kenmerkdomein_kolomtxt%TYPE;
|
||
sql_stmt VARCHAR2 (1000);
|
||
v_kenmerkdeel_key NUMBER;
|
||
l_cursor_1 INTEGER;
|
||
l_rowsprocessed NUMBER DEFAULT 0;
|
||
BEGIN
|
||
IF p_kenmerkwaarde IS NOT NULL
|
||
THEN
|
||
v_errormsg := 'Fout bij bepalen kenmerk [' || SUBSTR(p_kenmerkwaarde, 1, 200) || ']';
|
||
|
||
v_kenmerk := SUBSTR (p_kenmerkwaarde, 1, INSTR (p_kenmerkwaarde, '|') - 1);
|
||
v_groep := fac.safe_to_number(SUBSTR( p_kenmerkwaarde
|
||
, INSTR(p_kenmerkwaarde, '|') + 1
|
||
, INSTR(p_kenmerkwaarde, '=') - 1 - INSTR(p_kenmerkwaarde, '|')
|
||
)
|
||
);
|
||
v_waarde := SUBSTR(p_kenmerkwaarde, INSTR(p_kenmerkwaarde, '=') + 1);
|
||
|
||
IF fac.safe_to_number(v_kenmerk) IS NULL
|
||
THEN
|
||
-- Er kunnen drie kenmerken met dezelfde omschrijving gedefinieerd worden voor een object,
|
||
-- namenlijk op drie niveaus discipline (D), 0bjectgroep (G) en objectsoort (S).
|
||
-- Bij meerdere dezelfde kenmerken nemen we het kenmerk met de laagste volgnummer.
|
||
SELECT MAX(cnt_kenmerk_key)
|
||
, MAX(cnt_srtkenmerk_key)
|
||
, MAX(cnt_srtkenmerk_kenmerktype)
|
||
INTO v_kenmerk_key
|
||
, v_srtkenmerk_key
|
||
, v_srtkenmerk_type
|
||
FROM ( SELECT k.cnt_kenmerk_key
|
||
, sk.cnt_srtkenmerk_key
|
||
, sk.cnt_srtkenmerk_kenmerktype
|
||
, k.cnt_kenmerk_volgnummer
|
||
FROM cnt_v_aanwezigcontract c
|
||
, cnt_kenmerk k
|
||
, cnt_srtkenmerk sk
|
||
WHERE ( c.ins_discipline_key = k.cnt_srtcontract_key
|
||
or k.cnt_srtcontract_key IS NULL
|
||
)
|
||
AND k.cnt_srtkenmerk_key = sk.cnt_srtkenmerk_key
|
||
AND c.cnt_contract_key = p_cnt_key
|
||
AND k.cnt_kenmerk_groep = v_groep
|
||
AND COALESCE(UPPER(k.cnt_kenmerk_omschrijving), sk.cnt_srtkenmerk_upper) = UPPER(v_kenmerk)
|
||
AND k.cnt_kenmerk_verwijder IS NULL
|
||
AND sk.cnt_srtkenmerk_verwijder IS NULL
|
||
ORDER BY k.cnt_kenmerk_volgnummer
|
||
)
|
||
WHERE ROWNUM = 1;
|
||
ELSE
|
||
SELECT k.cnt_kenmerk_key
|
||
, sk.cnt_srtkenmerk_key
|
||
, sk.cnt_srtkenmerk_kenmerktype
|
||
INTO v_kenmerk_key
|
||
, v_srtkenmerk_key
|
||
, v_srtkenmerk_type
|
||
FROM cnt_kenmerk k
|
||
, cnt_srtkenmerk sk
|
||
WHERE k.cnt_srtkenmerk_key = sk.cnt_srtkenmerk_key
|
||
AND k.cnt_kenmerk_groep = v_groep
|
||
AND k.cnt_kenmerk_key = v_kenmerk
|
||
ORDER BY k.cnt_kenmerk_volgnummer;
|
||
END IF;
|
||
|
||
IF v_waarde IS NOT NULL
|
||
THEN
|
||
IF v_srtkenmerk_type IN ('R', 'r', 'S')
|
||
THEN
|
||
v_errormsg := 'Fout bij bepalen eigen tabel';
|
||
SELECT COUNT (*)
|
||
INTO ccount
|
||
FROM cnt_srtkenmerk sk
|
||
, fac_kenmerkdomein d
|
||
WHERE sk.cnt_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 [' || SUBSTR(v_waarde, 1, 200) || ']';
|
||
IF ccount = 1
|
||
THEN
|
||
-- Eigen tabel
|
||
SELECT TO_CHAR (ud.fac_usrdata_key)
|
||
INTO v_waarde
|
||
FROM cnt_srtkenmerk sk
|
||
, fac_kenmerkdomein d
|
||
, fac_v_aanwezigusrdata ud
|
||
WHERE sk.cnt_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 cnt_srtkenmerk sk
|
||
, fac_kenmerkdomein d
|
||
WHERE sk.cnt_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(cnt_kenmerkcontract_key)
|
||
INTO ccount
|
||
, v_kenmerkdeel_key
|
||
FROM cnt_kenmerkcontract
|
||
WHERE cnt_contract_key = p_cnt_key
|
||
AND cnt_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 AND v_kenmerk_key IS NOT NULL
|
||
THEN
|
||
v_errormsg := 'Fout bij toevoegen waarde [' || SUBSTR(v_waarde, 1, 200) || ']';
|
||
INSERT INTO cnt_kenmerkcontract
|
||
( cnt_contract_key
|
||
, cnt_kenmerk_key
|
||
, cnt_kenmerkcontract_waarde
|
||
)
|
||
VALUES ( p_cnt_key
|
||
, v_kenmerk_key
|
||
, v_waarde
|
||
);
|
||
ELSE
|
||
v_errormsg := 'Fout bij bijwerken waarde [' || SUBSTR(v_waarde, 1, 200) || ']';
|
||
UPDATE cnt_kenmerkcontract
|
||
SET cnt_kenmerkcontract_waarde = v_waarde
|
||
WHERE cnt_kenmerkcontract_key = v_kenmerkdeel_key;
|
||
END IF;
|
||
ELSE
|
||
-- Verwijder kenmerken die al bestaan maar met de nieuwe import leeg zijn.
|
||
DELETE cnt_kenmerkcontract
|
||
WHERE cnt_kenmerk_key = v_kenmerk_key
|
||
AND cnt_contract_key = p_cnt_key;
|
||
END IF;
|
||
END IF;
|
||
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
|
||
, 'upsert_cntkenmerk'
|
||
);
|
||
END; -- SUBPROC upsert_cntkenmerk
|
||
|
||
BEGIN
|
||
v_count_tot := 0;
|
||
v_count_cntnew := 0;
|
||
v_count_cntupd := 0;
|
||
v_aanduiding := '';
|
||
|
||
v_errormsg := 'Fout bij bepalen user: _FACILITOR';
|
||
|
||
SELECT prs_perslid_key
|
||
INTO v_facilitor_key
|
||
FROM prs_perslid
|
||
WHERE prs_perslid_oslogin = '_FACILITOR';
|
||
|
||
FOR rec IN c1
|
||
LOOP
|
||
BEGIN
|
||
v_geldig := 1;
|
||
v_count_tot := v_count_tot + 1;
|
||
v_aanduiding := '['|| rec.cnt_soort ||'|'|| rec.nummer_intern ||'|'|| rec.nummer_extern ||'|'|| rec.beschrijving ||'] ';
|
||
|
||
-- Eerst controleren of de ingevulde gegevens wel zinning/geldig zijn.
|
||
-- Voor -ontbrekende- verplichte gegevens proberen we wat zinnigs (en
|
||
-- geldigs!) te bedenken.
|
||
-- Toevoegen/bijwerken wordt pas gedaan als alles zinnig is bevonden.
|
||
|
||
-- Verplichte velden (via interface) zijn bij import al gecontroleerd!
|
||
-- Afdeling: moet geldig zijn!
|
||
v_errormsg := 'Fout bij bepalen afdeling: ' || rec.afdeling;
|
||
IF (rec.prs_afdeling_key IS NULL)
|
||
THEN
|
||
fac.imp_writelog( p_import_key, 'W'
|
||
, v_aanduiding || v_errormsg
|
||
, 'Contract wordt overgeslagen'
|
||
);
|
||
v_geldig := 0;
|
||
END IF;
|
||
|
||
-- Eigenaar (als meegegeven)
|
||
-- In geval van abonnement verplicht.
|
||
IF (rec.perslid_eig IS NOT NULL AND rec.prs_perslid_key_eig IS NULL)
|
||
THEN -- *niet gevonden, wel meegegeven
|
||
v_errormsg := 'Fout bij bepalen eigenaar: ' || rec.perslid_eig;
|
||
fac.imp_writelog( p_import_key, 'W'
|
||
, v_aanduiding || v_errormsg
|
||
, 'leeg gelaten'
|
||
);
|
||
ELSIF (rec.prs_perslid_key_eig IS NOT NULL)
|
||
THEN -- *wel gevonden (impliceert meegegeven)
|
||
v_perslid_key_eig := rec.prs_perslid_key_eig;
|
||
ELSE -- *niet meegegeven, dus niet gevonden
|
||
IF (rec.ins_discipline_key IS NOT NULL)
|
||
THEN -- Speciaal geval abonnementen: abonnee (eigenaar) is dan verplicht.
|
||
-- Contract is een abonnement, als de contractsoort aan een catalogus
|
||
-- gekoppeld is.
|
||
-- Is er een (actuele) catalogus aan deze contractsoort gekoppeld?
|
||
SELECT COUNT(*)
|
||
INTO v_count
|
||
FROM bes_disc_params p
|
||
, bes_discipline b
|
||
WHERE p.bes_disc_params_cnt_disckey = rec.ins_discipline_key
|
||
AND p.bes_ins_discipline_key = b.ins_discipline_key
|
||
AND b.ins_discipline_verwijder IS NULL;
|
||
|
||
IF (v_count > 0)
|
||
THEN -- dit is een abonnement, dus de eigenaar is verplicht
|
||
v_errormsg := 'Fout bij bepalen eigenaar-abonnee';
|
||
fac.imp_writelog( p_import_key, 'W'
|
||
, v_aanduiding || v_errormsg
|
||
, 'Contract wordt overgeslagen'
|
||
);
|
||
v_geldig := 0;
|
||
END IF;
|
||
END IF;
|
||
END IF;
|
||
|
||
-- Beheerder: backup _FACILITOR.
|
||
v_errormsg := 'Fout bij bepalen beheerder: ' || rec.perslid_beh;
|
||
IF (rec.prs_perslid_key_beh IS NULL)
|
||
THEN
|
||
fac.imp_writelog( p_import_key, 'W'
|
||
, v_aanduiding || v_errormsg
|
||
, '_FACILITOR gebruikt'
|
||
);
|
||
v_perslid_key_beh := v_facilitor_key;
|
||
ELSE
|
||
v_perslid_key_beh := rec.prs_perslid_key_beh;
|
||
END IF;
|
||
|
||
-- Bedrijf: moet geldig zijn!
|
||
v_errormsg := 'Fout bij bepalen bedrijf: ' || rec.bedrijf_naam;
|
||
IF (rec.prs_bedrijf_key IS NULL)
|
||
THEN
|
||
fac.imp_writelog( p_import_key, 'W'
|
||
, v_aanduiding || v_errormsg
|
||
, 'Contract wordt overgeslagen'
|
||
);
|
||
v_geldig := 0;
|
||
END IF;
|
||
|
||
-- Kostenplaats: moet bestaan.
|
||
v_errormsg := 'Fout bij bepalen kostenplaats: ' || rec.kpn_code;
|
||
IF (rec.prs_kostenplaats_key IS NULL)
|
||
THEN
|
||
fac.imp_writelog( p_import_key, 'W'
|
||
, v_aanduiding || v_errormsg
|
||
, 'Contract wordt overgeslagen'
|
||
);
|
||
v_geldig := 0;
|
||
END IF;
|
||
|
||
-- Locatie/gebouw (als meegegeven): moet bestaan en ook passen bij de
|
||
-- contractsoort (type_key 3=Ondersteuning of 5=Leverancier).
|
||
IF (rec.locgeb_scope IS NOT NULL)
|
||
THEN
|
||
v_errormsg := 'Fout bij bepalen locatie/gebouw: ' || rec.locgeb_scope ||'|'|| rec.locgeb_code;
|
||
IF (rec.plaats_key IS NULL)
|
||
THEN -- Geen locatie/gebouw gevonden.
|
||
fac.imp_writelog( p_import_key, 'W'
|
||
, v_aanduiding || v_errormsg
|
||
, 'Contract/scope wordt overgeslagen'
|
||
);
|
||
v_geldig := 0;
|
||
END IF;
|
||
|
||
v_errormsg := 'Fout bij matchen contractsoort-scope';
|
||
IF (rec.cnt_srtcontract_type NOT IN (3, 5))
|
||
THEN
|
||
fac.imp_writelog( p_import_key, 'W'
|
||
, v_aanduiding || v_errormsg
|
||
, 'Contract/scope wordt overgeslagen'
|
||
);
|
||
v_geldig := 0;
|
||
END IF;
|
||
END IF;
|
||
|
||
-- Mantel: niet verplicht, wel rapporteren als niets gevonden.
|
||
v_errormsg := 'Fout bij bepalen mantel: ' || rec.mantel_nr;
|
||
IF (rec.mantel_nr IS NOT NULL AND rec.mantel_key IS NULL)
|
||
THEN
|
||
fac.imp_writelog( p_import_key, 'W'
|
||
, v_aanduiding || v_errormsg
|
||
, 'Contract niet aan mantel gekoppeld'
|
||
);
|
||
END IF;
|
||
|
||
-- Dienst: niet verplicht, wel rapporteren als niets gevonden.
|
||
v_errormsg := 'Fout bij bepalen dienst: ' || rec.dienst;
|
||
IF (rec.dienst IS NOT NULL AND rec.prs_dienst_key IS NULL)
|
||
THEN
|
||
fac.imp_writelog( p_import_key, 'W'
|
||
, v_aanduiding || v_errormsg
|
||
, 'Contract niet aan dienst gekoppeld'
|
||
);
|
||
END IF;
|
||
|
||
-- Alleen verder gaan als alles zinnig bevonden is.
|
||
IF (v_geldig = 1)
|
||
THEN
|
||
-- Contractsoort: toevoegen (type Leverancier).
|
||
IF (rec.ins_discipline_key IS NULL)
|
||
THEN
|
||
-- Misschien is de contractsoort tijdens import al toegevoegd?
|
||
-- (dan was 'ie er voor de cursor nog niet.)
|
||
BEGIN
|
||
v_errormsg := 'Fout bij bepalen contractsoort';
|
||
SELECT ins_discipline_key
|
||
INTO v_cnt_discipline_key
|
||
FROM cnt_discipline
|
||
WHERE ins_discipline_verwijder IS NULL
|
||
AND UPPER(ins_discipline_omschrijving) = UPPER(rec.cnt_soort);
|
||
EXCEPTION
|
||
WHEN NO_DATA_FOUND THEN
|
||
-- Contractsoort bestaat gewoon niet; toevoegen.
|
||
v_errormsg := 'Fout bij toevoegen contractsoort:' || rec.cnt_soort;
|
||
INSERT INTO ins_tab_discipline
|
||
( ins_discipline_module
|
||
, ins_discipline_omschrijving
|
||
)
|
||
VALUES ( 'CNT'
|
||
, rec.cnt_soort
|
||
)
|
||
RETURNING ins_discipline_key
|
||
INTO v_cnt_discipline_key;
|
||
|
||
-- Type Leverancier, geen kostensoort, geen factuurmarges.
|
||
INSERT INTO cnt_disc_params
|
||
( cnt_ins_discipline_key
|
||
, cnt_srtcontract_type
|
||
)
|
||
VALUES ( v_cnt_discipline_key
|
||
, c_contract_type
|
||
);
|
||
|
||
fac.imp_writelog( p_import_key, 'I'
|
||
, v_aanduiding || 'Contractsoort "' || rec.cnt_soort || '" aangemaakt'
|
||
, 'Nieuwe contractsoort'
|
||
);
|
||
END;
|
||
ELSE
|
||
v_cnt_discipline_key := rec.ins_discipline_key;
|
||
END IF;
|
||
|
||
-- Contactpersoon (als meegegeven): bepalen/toevoegen bij bedrijf.
|
||
IF (rec.contact_naam IS NOT NULL AND rec.prs_contactpersoon_key IS NULL)
|
||
THEN
|
||
-- Misschien is de contractsoort tijdens import al toegevoegd?
|
||
-- (dan was 'ie er voor de cursor nog niet.)
|
||
BEGIN
|
||
v_errormsg := 'Fout bij bepalen contactpersoon';
|
||
SELECT prs_contactpersoon_key
|
||
INTO v_contactpersoon_key
|
||
FROM prs_contactpersoon
|
||
WHERE prs_contactpersoon_verwijder IS NULL
|
||
AND prs_bedrijf_key = rec.prs_bedrijf_key
|
||
AND UPPER(prs_contactpersoon_naam) = UPPER(rec.contact_naam);
|
||
EXCEPTION
|
||
WHEN NO_DATA_FOUND THEN
|
||
-- Contactpersoon bestaat gewoon niet; toevoegen.
|
||
v_errormsg := 'Fout bij toevoegen contactpersoon:' || rec.contact_naam;
|
||
INSERT INTO prs_contactpersoon
|
||
( prs_contactpersoon_naam
|
||
, prs_bedrijf_key
|
||
)
|
||
VALUES ( rec.contact_naam
|
||
, rec.prs_bedrijf_key
|
||
)
|
||
RETURNING prs_contactpersoon_key
|
||
INTO v_contactpersoon_key;
|
||
|
||
fac.imp_writelog( p_import_key, 'I'
|
||
, v_aanduiding || 'Contactpersoon "' || rec.contact_naam || '" aangemaakt'
|
||
, 'Nieuwe contactpersoon'
|
||
);
|
||
END;
|
||
ELSE
|
||
v_contactpersoon_key := rec.prs_contactpersoon_key;
|
||
END IF;
|
||
|
||
-- Opzegtermijn: bepalen/toevoegen.
|
||
-- Als geen opzegtermijn ingevuld, dan is er geen opzegtermijn: 'Geen' = 0 weken.
|
||
v_errormsg := 'Fout bij bepalen opzegtermijn';
|
||
bepaal_termijn(rec.datum_opzeg, rec.datum_eind, v_termijn_type, v_termijn_aantal, true);
|
||
|
||
-- Bestaat de termijn al?
|
||
BEGIN
|
||
v_errormsg := 'Fout bij bepalen opzegtermijn';
|
||
SELECT cnt_termijn_key
|
||
INTO v_termijn_key_opzeg
|
||
FROM cnt_termijn
|
||
WHERE cnt_termijn_type = v_termijn_type
|
||
AND cnt_termijn_aantal = v_termijn_aantal;
|
||
EXCEPTION
|
||
WHEN NO_DATA_FOUND THEN
|
||
v_errormsg := 'Fout bij toevoegen opzegtermijn';
|
||
INSERT INTO cnt_termijn
|
||
( cnt_termijn_omschrijving
|
||
, cnt_termijn_type
|
||
, cnt_termijn_aantal
|
||
)
|
||
VALUES ( TO_CHAR(v_termijn_aantal) || CASE WHEN v_termijn_type = 'Y' THEN 'Jaar'
|
||
WHEN v_termijn_type = 'M' THEN 'Maand(en)'
|
||
WHEN v_termijn_type = 'D' THEN 'Dage(en)'
|
||
END
|
||
, v_termijn_type
|
||
, v_termijn_aantal
|
||
)
|
||
RETURNING cnt_termijn_key
|
||
INTO v_termijn_key_opzeg;
|
||
END;
|
||
|
||
-- Rappeltermijn: bepalen/toevoegen.
|
||
-- Als geen rappeltermijn ingevuld, dan is er geen rappeltermijn: 'Geen' = 0 weken.
|
||
v_errormsg := 'Fout bij bepalen rappeltermijn';
|
||
-- Als geen opzegdatum, dan einddatum.
|
||
bepaal_termijn(rec.datum_rappel, COALESCE(rec.datum_opzeg, rec.datum_eind), v_termijn_type, v_termijn_aantal, true);
|
||
|
||
-- Bestaat de termijn al?
|
||
BEGIN
|
||
v_errormsg := 'Bepalen rappeltermijn';
|
||
SELECT cnt_termijn_key
|
||
INTO v_termijn_key_rappel
|
||
FROM cnt_termijn
|
||
WHERE cnt_termijn_type = v_termijn_type
|
||
AND cnt_termijn_aantal = v_termijn_aantal;
|
||
EXCEPTION
|
||
WHEN NO_DATA_FOUND THEN
|
||
v_errormsg := 'Toevoegen rappeltermijn';
|
||
INSERT INTO cnt_termijn
|
||
( cnt_termijn_omschrijving
|
||
, cnt_termijn_type
|
||
, cnt_termijn_aantal
|
||
)
|
||
VALUES ( TO_CHAR(v_termijn_aantal) || CASE WHEN v_termijn_type = 'Y' THEN 'Jaar'
|
||
WHEN v_termijn_type = 'M' THEN 'Maand(en)'
|
||
WHEN v_termijn_type = 'D' THEN 'Dage(en)'
|
||
END
|
||
, v_termijn_type
|
||
, v_termijn_aantal
|
||
)
|
||
RETURNING cnt_termijn_key
|
||
INTO v_termijn_key_rappel;
|
||
END;
|
||
|
||
-- Controleren of er al een contract met hetzelfde nummer en versie;
|
||
-- bestaat; toevoegen vs. bijwerken.
|
||
v_errormsg := 'Fout bij bepalen contract';
|
||
SELECT COUNT(*)
|
||
INTO v_count
|
||
FROM cnt_v_aanwezigcontract
|
||
WHERE TRIM(cnt_contract_nummer_intern) = rec.nummer_intern
|
||
AND COALESCE(cnt_contract_versie, '0') = COALESCE(rec.versie, '0');
|
||
|
||
IF (v_count = 0) -- Contract bestaat nog niet --> toevoegen.
|
||
THEN
|
||
-- Als rec.nummer_intern is NULL, dan wordt door FACILITOR een
|
||
-- nummer bepaald (= cnt_contract_key)!
|
||
v_errormsg := 'Fout bij toevoegen contract.';
|
||
-- Status van nieuwe melding is afhankelijk van of het contract approval mechanisme actief is en
|
||
-- het bedrag moet groter zijn als limiet 1 anders hoeft er <20>berhaupt niet gefiatteerd te worden en kan het contract direct actief (0) worden.
|
||
IF fac.getSetting('cnt_contract_approval') = 1 AND rec.bedrag > fac.getSetting('cnt_contract_limit1')
|
||
THEN
|
||
v_cnt_status := 2;
|
||
ELSE
|
||
v_cnt_status := 0;
|
||
END IF;
|
||
|
||
INSERT INTO cnt_contract
|
||
( cnt_contract_nummer
|
||
, cnt_contract_omschrijving
|
||
, cnt_contract_looptijd_tot
|
||
, cnt_contract_kosten
|
||
, cnt_contract_uurloon
|
||
, cnt_prs_bedrijf_key
|
||
, cnt_contract_nummer_intern
|
||
, cnt_contract_korting
|
||
, prs_contactpersoon_key
|
||
, ins_discipline_key
|
||
, cnt_contract_document
|
||
, prs_perslid_key_eig
|
||
, prs_perslid_key_beh
|
||
, prs_afdeling_key_eig
|
||
, cnt_contract_status
|
||
, cnt_contract_looptijd_van
|
||
, prs_kostenplaats_key
|
||
, prs_kostensoort_key
|
||
, cnt_contract_termijnkosten
|
||
, cnt_contract_opmerking
|
||
, cnt_contract_mantel_key
|
||
, cnt_contract_opzegtermijn
|
||
, cnt_contract_rappeltermijn
|
||
, cnt_contract_versie
|
||
, prs_dienst_key
|
||
, cnt_contract_verlenging
|
||
)
|
||
VALUES ( rec.nummer_extern
|
||
, rec.beschrijving
|
||
, rec.datum_eind
|
||
, rec.bedrag
|
||
, rec.uurtarief
|
||
, rec.prs_bedrijf_key
|
||
, rec.nummer_intern
|
||
, rec.korting
|
||
, v_contactpersoon_key
|
||
, v_cnt_discipline_key
|
||
, rec.omschrijving
|
||
, v_perslid_key_eig
|
||
, v_perslid_key_beh
|
||
, rec.prs_afdeling_key
|
||
, v_cnt_status
|
||
, rec.datum_ingang
|
||
, rec.prs_kostenplaats_key
|
||
, rec.prs_kostensoort_key
|
||
, rec.bedrag_termijn
|
||
, rec.opmerking
|
||
, rec.mantel_key
|
||
, v_termijn_key_opzeg
|
||
, v_termijn_key_rappel
|
||
, rec.versie
|
||
, rec.prs_dienst_key
|
||
, rec.verlengen
|
||
)
|
||
RETURNING cnt_contract_key
|
||
INTO v_contract_key;
|
||
|
||
v_srtnoti_code := 'CNTNEW';
|
||
v_count_cntnew := v_count_cntnew + 1;
|
||
ELSE -- Contract bestaat al --> bijwerken.
|
||
SELECT c.cnt_contract_key
|
||
INTO v_contract_key
|
||
FROM cnt_contract c
|
||
WHERE TRIM(c.cnt_contract_nummer_intern) = rec.nummer_intern
|
||
AND COALESCE(c.cnt_contract_versie, '0') = COALESCE(rec.versie, '0')
|
||
AND c.cnt_contract_verwijder IS NULL
|
||
AND c.cnt_contract_looptijd_tot = (SELECT MAX(d.cnt_contract_looptijd_tot)
|
||
FROM cnt_contract d
|
||
WHERE d.cnt_contract_nummer_intern = c.cnt_contract_nummer_intern
|
||
AND COALESCE(d.cnt_contract_versie, '0') = COALESCE(c.cnt_contract_versie, '0')
|
||
);
|
||
|
||
v_errormsg := 'Fout bij bijwerken contract.';
|
||
UPDATE cnt_contract
|
||
SET cnt_contract_nummer = rec.nummer_extern
|
||
, cnt_contract_omschrijving = rec.beschrijving
|
||
, cnt_contract_looptijd_tot = rec.datum_eind
|
||
, cnt_contract_kosten = rec.bedrag
|
||
, cnt_contract_uurloon = rec.uurtarief
|
||
, cnt_prs_bedrijf_key = rec.prs_bedrijf_key
|
||
, cnt_contract_korting = rec.korting
|
||
, prs_contactpersoon_key = v_contactpersoon_key
|
||
, ins_discipline_key = v_cnt_discipline_key
|
||
, cnt_contract_document = rec.omschrijving
|
||
, prs_perslid_key_eig = v_perslid_key_eig
|
||
, prs_perslid_key_beh = v_perslid_key_beh
|
||
, prs_afdeling_key_eig = rec.prs_afdeling_key
|
||
, cnt_contract_looptijd_van = rec.datum_ingang
|
||
, prs_kostenplaats_key = rec.prs_kostenplaats_key
|
||
, prs_kostensoort_key = rec.prs_kostensoort_key
|
||
, cnt_contract_termijnkosten = rec.bedrag_termijn
|
||
, cnt_contract_opmerking = rec.opmerking
|
||
, cnt_contract_mantel_key = rec.mantel_key
|
||
, cnt_contract_opzegtermijn = v_termijn_key_opzeg
|
||
, cnt_contract_rappeltermijn = v_termijn_key_rappel
|
||
, cnt_contract_versie = rec.versie
|
||
, prs_dienst_key = rec.prs_dienst_key
|
||
, cnt_contract_verlenging = rec.verlengen
|
||
WHERE cnt_contract_key = v_contract_key;
|
||
|
||
v_srtnoti_code := 'CNTUPD';
|
||
v_count_cntupd := v_count_cntupd + 1;
|
||
END IF;
|
||
|
||
-- Upsert gebouwscope: bij UPDATE eerst kijken of scope al bestaat.
|
||
-- Zo niet, dan toevoegen (bij INSERT altijd toevoegen).
|
||
-- NB. Op deze manier kan een contract meerdere keren voorkomen in
|
||
-- het importbestand, met verschillende gebouwen.
|
||
IF (rec.plaats_key IS NOT NULL)
|
||
THEN -- Komt deze scope al voor?
|
||
SELECT COUNT(*)
|
||
INTO v_count
|
||
FROM cnt_contract_plaats
|
||
WHERE cnt_contract_key = v_contract_key
|
||
AND cnt_alg_plaats_key = rec.plaats_key
|
||
AND cnt_alg_plaats_code = rec.plaats_scope;
|
||
|
||
IF (v_count = 0) -- Scope komt nog niet voor, dus toevoegen.
|
||
THEN
|
||
v_errormsg := 'Fout bij toevoegen scope';
|
||
INSERT INTO cnt_contract_plaats
|
||
( cnt_contract_key
|
||
, cnt_alg_plaats_key
|
||
, cnt_alg_plaats_code
|
||
)
|
||
VALUES ( v_contract_key
|
||
, rec.plaats_key
|
||
, rec.plaats_scope
|
||
);
|
||
END IF;
|
||
END IF;
|
||
|
||
-- NULL-waarden resulteren NIET in het wissen van kenmerkvelden
|
||
-- (bijwerken kan wel, maar wissen dus niet)!
|
||
upsert_cntkenmerk (v_contract_key, rec.cnt_kenmerkwaarde1);
|
||
upsert_cntkenmerk (v_contract_key, rec.cnt_kenmerkwaarde2);
|
||
upsert_cntkenmerk (v_contract_key, rec.cnt_kenmerkwaarde3);
|
||
upsert_cntkenmerk (v_contract_key, rec.cnt_kenmerkwaarde4);
|
||
upsert_cntkenmerk (v_contract_key, rec.cnt_kenmerkwaarde5);
|
||
upsert_cntkenmerk (v_contract_key, rec.cnt_kenmerkwaarde6);
|
||
upsert_cntkenmerk (v_contract_key, rec.cnt_kenmerkwaarde7);
|
||
upsert_cntkenmerk (v_contract_key, rec.cnt_kenmerkwaarde8);
|
||
upsert_cntkenmerk (v_contract_key, rec.cnt_kenmerkwaarde9);
|
||
upsert_cntkenmerk (v_contract_key, rec.cnt_kenmerkwaarde10);
|
||
upsert_cntkenmerk (v_contract_key, rec.cnt_kenmerkwaarde11);
|
||
upsert_cntkenmerk (v_contract_key, rec.cnt_kenmerkwaarde12);
|
||
upsert_cntkenmerk (v_contract_key, rec.cnt_kenmerkwaarde13);
|
||
upsert_cntkenmerk (v_contract_key, rec.cnt_kenmerkwaarde14);
|
||
upsert_cntkenmerk (v_contract_key, rec.cnt_kenmerkwaarde15);
|
||
upsert_cntkenmerk (v_contract_key, rec.cnt_kenmerkwaarde16);
|
||
upsert_cntkenmerk (v_contract_key, rec.cnt_kenmerkwaarde17);
|
||
upsert_cntkenmerk (v_contract_key, rec.cnt_kenmerkwaarde18);
|
||
upsert_cntkenmerk (v_contract_key, rec.cnt_kenmerkwaarde19);
|
||
upsert_cntkenmerk (v_contract_key, rec.cnt_kenmerkwaarde20);
|
||
upsert_cntkenmerk (v_contract_key, rec.cnt_kenmerkwaarde21);
|
||
upsert_cntkenmerk (v_contract_key, rec.cnt_kenmerkwaarde22);
|
||
upsert_cntkenmerk (v_contract_key, rec.cnt_kenmerkwaarde23);
|
||
upsert_cntkenmerk (v_contract_key, rec.cnt_kenmerkwaarde24);
|
||
upsert_cntkenmerk (v_contract_key, rec.cnt_kenmerkwaarde25);
|
||
|
||
fac.trackaction(v_srtnoti_code, v_contract_key, NULL, NULL, NULL);
|
||
COMMIT;
|
||
END IF;
|
||
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 || ')';
|
||
COMMIT;
|
||
END;
|
||
END LOOP;
|
||
|
||
fac.imp_writelog( p_import_key, 'S', 'CNT-contracten/#ingelezen: ' || TO_CHAR (v_count_tot), '');
|
||
fac.imp_writelog( p_import_key, 'S', 'CNT-contracten/#toegevoegd: ' || TO_CHAR (v_count_cntnew), '');
|
||
fac.imp_writelog( p_import_key, 'S', 'CNT-contracten/#bijgewerkt: ' || TO_CHAR (v_count_cntupd), '');
|
||
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_errormsg
|
||
, 'Importproces contracten afgebroken!'
|
||
);
|
||
END schg_update_cnt_schg;
|
||
/
|
||
|
||
|
||
|
||
-------------------------------
|
||
--- 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
|