Files
Customer/SKHF/skhf.sql
2024-09-21 16:26:26 +00:00

984 lines
41 KiB
MySQL

--
-- $Id$
--
-- Script containing customer specific sql statements for the FACILITOR database
DEFINE thisfile = 'SKHF.SQL'
DEFINE dbuser = 'SKHF'
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 ------
-------------------------------
--- DOMEIN-VIEWS --------------
-------------------------------
CREATE OR REPLACE VIEW skhf_v_bedrijven
(
PRS_BEDRIJF_KEY,
PRS_BEDRIJF_NAAM,
PRS_BEDRIJF_ACTIEF,
PRS_BEDRIJF_VERWIJDER
)
AS
SELECT prs_bedrijf_key,
prs_bedrijf_naam,
CASE
WHEN prs_bedrijf_leverancier IS NULL
AND prs_bedrijf_uitvoerende IS NULL
AND prs_bedrijf_contract IS NULL
THEN
'na' -- geen actieve relatie
ELSE
'a' -- actieve relatie
END prs_bedrijf_actief,
prs_bedrijf_verwijder
FROM prs_bedrijf
WHERE prs_bedrijf_intern IS NULL;
CREATE OR REPLACE VIEW skhf_v_kostenplaatsen
(
PRS_KOSTENPLAATS_KEY,
PRS_KOSTENPLAATS_OMSCHRIJVING,
PRS_KOSTENPLAATS_VERWIJDER
)
AS
SELECT k.prs_kostenplaats_key,
CASE
WHEN ( prs_kostenplaats_verwijder IS NOT NULL
OR ( prs_kostenplaats_eind IS NOT NULL
AND prs_kostenplaats_eind < TRUNC (SYSDATE)))
THEN
k.prs_kostenplaats_nr || ' - ' || k.prs_kostenplaats_omschrijving || ' - oud!'
ELSE
k.prs_kostenplaats_nr || ' - ' || k.prs_kostenplaats_omschrijving
END
prs_kostenplaats_omschrijving,
k.prs_kostenplaats_verwijder
FROM prs_kostenplaats k ;
CREATE OR REPLACE VIEW skhf_v_personenlijst
(
PRS_PERSLID_KEY,
NAAM,
PERSONEELSNUMMER,
EMAIL,
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
naam,
p.prs_perslid_nr,
p.prs_perslid_email,
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 SKH
AND p.prs_srtperslid_key = sp.prs_srtperslid_key
ORDER BY sp.prs_srtperslid_omschrijving DESC, p.prs_perslid_voornaam, p.prs_perslid_naam
;
CREATE OR REPLACE VIEW skhf_v_locatielijst
(
ALG_LOCATIE_KEY,
ALG_LOCATIE_NAAM,
ALG_LOCATIE_CODE
)
AS
SELECT
l.alg_locatie_key,
l.alg_locatie_omschrijving || ' ' || l.alg_locatie_adres
alg_locatie_naam,
l.alg_locatie_code
FROM
alg_locatie l
WHERE
COALESCE(l.alg_locatie_verwijder, l.alg_locatie_vervaldatum, TRUNC(SYSDATE)) >= TRUNC(SYSDATE)
ORDER BY l.alg_locatie_omschrijving
;
CREATE OR REPLACE VIEW skhf_v_it_simkaarten
(
INS_DEEL_KEY,
SIMKAART
)
AS
SELECT
v.ins_deel_key,
v.ins_deel_upper
simkaart
FROM ins_v_deel_gegevens v, ins_deel d
WHERE v.ins_discipline_key = 82 -- IT-Intern
AND v.ins_srtdeel_key = 21 -- 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) ) ;
----------------------------------------
--- AUTOCAD-THEMA'S en LABELS ----------
----------------------------------------
-------------------------------
--- PROCEDURES ---------------
-------------------------------
-- LET OP! - DEZE CUST-PROCEDURE BIJ 2024.3 WEER DROPPEN EN VIA DE CORE LATEN LOPEN
-- Automatische starten en ter uitvoering zetten van taken die voor vandaag of eerder zijn gepland (via plandatum of berekend).
-- Er wordt bij de taak ook direct een melding aangemaakt.
-- voorwaarden: 1) Er is een stdmelding gedefinieerd bij de periodieke taak.
-- 2) Alleen periodieke taken, GEEN mjob taken.
CREATE OR REPLACE PROCEDURE skhf_start_ctr
AS
c_applname VARCHAR2 (50) := 'AFMELDEN_ORD';
v_errormsg VARCHAR2 (1000);
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
v_aanduiding VARCHAR2 (200);
v_count_tot NUMBER (10);
l_new_melding_key NUMBER (10);
l_new_melding_object_key NUMBER (10);
l_new_deelsrtcontrole_key NUMBER (10);
l_deelsrtcontrole_key NUMBER (10);
mjb_approvedmld_desc fac_setting.fac_setting_default%TYPE;
mld_subject VARCHAR2 (200);
CURSOR c_taak_start
IS
SELECT idsc.ins_deelsrtcontrole_key,
idsc.ins_deel_key,
idsc.ins_srtcontrole_key,
idsc.ins_scenario_key,
xcp.mld_stdmelding_key,
sm.mld_stdmelding_default_disc,
COALESCE(xcp.prs_kostenplaats_key,
(SELECT prs_kostenplaats_key
FROM alg_gebouw
WHERE alg_gebouw_key = alg.alg_gebouw_key)) prs_kostenplaats_key,
xcp.ins_srtcontrole_omschrijving,
xcp.ins_srtcontrole_info,
isd.ins_srtdeel_omschrijving,
alg.alg_locatie_key,
alg.alg_onroerendgoed_keys,
CASE
WHEN (SELECT COUNT(ins_deelsrtcontrole_key)
FROM ins_deelsrtcontrole idsc2
WHERE idsc2.ins_deel_key = idsc.ins_deel_key
AND idsc2.ins_srtcontrole_key = idsc.ins_srtcontrole_key
AND idsc2.ins_scenario_key = idsc.ins_scenario_key
AND idsc2.ins_deelsrtcontrole_status = 6) >= 1
THEN
ins.nextcyclusdate(idsc.ins_deel_key, idsc.ins_srtcontrole_key, 1, 1)
ELSE NULL
END nextdate,
idsc.prs_perslid_key
FROM ins_deelsrtcontrole idsc,
ins_v_defined_inspect_xcp xcp,
ins_deel d,
ins_srtdeel isd,
alg_v_allonroerendgoed alg,
mld_stdmelding sm
WHERE xcp.ins_srtcontrole_key = idsc.ins_srtcontrole_key
AND xcp.ins_deel_key = idsc.ins_deel_key
AND xcp.ins_scenario_key = idsc.ins_scenario_key
AND xcp.mld_stdmelding_key = sm.mld_stdmelding_key
AND d.ins_deel_key = idsc.ins_deel_key
AND d.ins_srtdeel_key = isd.ins_srtdeel_key
AND d.ins_alg_ruimte_key = alg.alg_onroerendgoed_keys(+)
AND d.ins_alg_ruimte_type = 'R'
AND TRUNC(idsc.ins_deelsrtcontrole_plandatum, 'dd') <= TRUNC(SYSDATE, 'dd')
AND idsc.ins_scenario_key = 1
AND idsc.ins_deelsrtcontrole_status = 0
AND xcp.ctr_ismjob = 0
AND xcp.mld_stdmelding_key IS NOT NULL
UNION
SELECT NULL ins_deelsrtcontrole_key,
idsc.ins_deel_key,
idsc.ins_srtcontrole_key,
idsc.ins_scenario_key,
xcp.mld_stdmelding_key,
sm.mld_stdmelding_default_disc,
COALESCE(xcp.prs_kostenplaats_key,
(SELECT prs_kostenplaats_key
FROM alg_gebouw
WHERE alg_gebouw_key = alg.alg_gebouw_key)) prs_kostenplaats_key,
xcp.ins_srtcontrole_omschrijving,
xcp.ins_srtcontrole_info,
isd.ins_srtdeel_omschrijving,
alg.alg_locatie_key,
alg.alg_onroerendgoed_keys,
CASE
WHEN (SELECT COUNT(ins_deelsrtcontrole_key)
FROM ins_deelsrtcontrole idsc2
WHERE idsc2.ins_deel_key = idsc.ins_deel_key
AND idsc2.ins_srtcontrole_key = idsc.ins_srtcontrole_key
AND idsc2.ins_scenario_key = idsc.ins_scenario_key
AND idsc2.ins_deelsrtcontrole_status = 6) >= 1
THEN
ins.nextcyclusdate(idsc.ins_deel_key, idsc.ins_srtcontrole_key, 1, 1)
ELSE NULL
END nextdate,
(SELECT idsc3.prs_perslid_key
FROM ins_deelsrtcontrole idsc3
WHERE idsc3.ins_deelsrtcontrole_key = (SELECT MAX(ins_deelsrtcontrole_key)
FROM ins_deelsrtcontrole idsc2
WHERE idsc2.ins_deel_key = idsc.ins_deel_key
AND idsc2.ins_srtcontrole_key = idsc.ins_srtcontrole_key
AND idsc2.ins_scenario_key = idsc.ins_scenario_key
AND idsc2.ins_deelsrtcontrole_status = 6)) prs_perslid_key
FROM ins_deelsrtcontrole idsc,
ins_v_defined_inspect_xcp xcp,
ins_deel d,
ins_srtdeel isd,
alg_v_allonroerendgoed alg,
mld_stdmelding sm
WHERE xcp.ins_srtcontrole_key = idsc.ins_srtcontrole_key
AND xcp.ins_deel_key = idsc.ins_deel_key
AND xcp.ins_scenario_key = idsc.ins_scenario_key
AND xcp.mld_stdmelding_key = sm.mld_stdmelding_key
AND d.ins_deel_key = idsc.ins_deel_key
AND d.ins_srtdeel_key = isd.ins_srtdeel_key
AND d.ins_alg_ruimte_key = alg.alg_onroerendgoed_keys(+)
AND d.ins_alg_ruimte_type = 'R'
AND TRUNC(ins.nextcyclusdate(idsc.ins_deel_key, idsc.ins_srtcontrole_key, 1, 1), 'dd') <= TRUNC(SYSDATE, 'dd')
AND idsc.ins_scenario_key = 1
AND idsc.ins_deelsrtcontrole_key = (SELECT MAX(ins_deelsrtcontrole_key)
FROM ins_deelsrtcontrole idsc2
WHERE idsc2.ins_deel_key = idsc.ins_deel_key
AND idsc2.ins_srtcontrole_key = idsc.ins_srtcontrole_key
AND idsc2.ins_scenario_key = idsc.ins_scenario_key
AND idsc2.ins_deelsrtcontrole_status = 6)
AND (SELECT MAX(ins_deelsrtcontrole_key)
FROM ins_deelsrtcontrole idsc2
WHERE idsc2.ins_deel_key = idsc.ins_deel_key
AND idsc2.ins_srtcontrole_key = idsc.ins_srtcontrole_key
AND idsc2.ins_scenario_key = idsc.ins_scenario_key
AND idsc2.ins_deelsrtcontrole_status != 6) IS NULL -- Er mag geen lopende taak aanwezig zijn.
AND xcp.ctr_ismjob = 0
AND xcp.mld_stdmelding_key IS NOT NULL;
BEGIN
v_count_tot := 0;
FOR rec IN c_taak_start
LOOP
BEGIN
v_errormsg := 'Fout starten taak';
v_aanduiding := '[' || TO_CHAR (rec.ins_deel_key) || '/' || TO_CHAR (rec.ins_srtcontrole_key) || '] ';
IF rec.ins_deelsrtcontrole_key IS NULL
THEN
SELECT ins_s_ins_deelsrtcontrole_key.NEXTVAL INTO l_new_deelsrtcontrole_key FROM DUAL;
INSERT INTO ins_deelsrtcontrole (ins_deelsrtcontrole_key,
ins_deel_key,
ins_srtcontrole_key,
ins_deelsrtcontrole_status,
prs_perslid_key,
ins_deelsrtcontrole_datum_org)
VALUES (l_new_deelsrtcontrole_key,
rec.ins_deel_key,
rec.ins_srtcontrole_key,
2,
rec.prs_perslid_key,
rec.nextdate);
l_deelsrtcontrole_key := l_new_deelsrtcontrole_key;
ELSE
l_deelsrtcontrole_key := rec.ins_deelsrtcontrole_key;
-- Het ins_deelsrtcontrole record bestaat al omdat de taak al is ingepland.
END IF;
ins.setinspectstatus(l_deelsrtcontrole_key, 2, NULL);
mjb_approvedmld_desc := fac.getsetting('mjb_approvedmelding_description');
IF mjb_approvedmld_desc = 2
THEN
mld_subject := rec.ins_srtcontrole_omschrijving;
ELSIF mjb_approvedmld_desc = 3
THEN
mld_subject := rec.ins_srtcontrole_omschrijving || ' (' || rec.ins_srtdeel_omschrijving;
ELSE -- mjb_approvedmelding_description = 1
mld_subject := rec.ins_srtdeel_omschrijving;
END IF;
SELECT mld_s_mld_melding_key.NEXTVAL INTO l_new_melding_key FROM DUAL;
INSERT INTO mld_melding(prs_perslid_key,
prs_perslid_key_voor,
mld_melding_datum,
mld_ins_discipline_key,
mld_stdmelding_key,
mld_melding_omschrijving,
mld_melding_onderwerp,
mld_meldbron_key,
prs_kostenplaats_key,
mld_alg_locatie_key,
mld_melding_spoed,
mld_alg_onroerendgoed_keys,
mld_melding_module,
mld_melding_key)
VALUES (rec.prs_perslid_key,
rec.prs_perslid_key,
SYSDATE,
rec.mld_stdmelding_default_disc,
rec.mld_stdmelding_key,
rec.ins_srtcontrole_info,
mld_subject,
10,
rec.prs_kostenplaats_key,
rec.alg_locatie_key,
3, -- Default prioriteit 3.
rec.alg_onroerendgoed_keys,
'MLD',
l_new_melding_key);
SELECT mld_s_mld_object_key.NEXTVAL INTO l_new_melding_object_key FROM DUAL;
INSERT INTO mld_melding_object(ins_deel_key,
mld_melding_key,
ins_deelsrtcontrole_key,
mld_melding_object_key)
VALUES (rec.ins_deel_key,
l_new_melding_key,
l_deelsrtcontrole_key,
l_new_melding_object_key);
mld.setmeldingstatus(l_new_melding_key, 2, NULL, 1);
IF rec.mld_stdmelding_default_disc IS NOT NULL -- mldbhg notificatie.
THEN
mld.notifybackoffice (l_new_melding_key, 'MLDBHG', 2);
END IF;
mld.mld_nextworkflowstep (l_new_melding_key, -1);
mld.mld_addautoorder(l_new_melding_key);
ins.setinspectstatus(l_deelsrtcontrole_key, 3, NULL);
v_count_tot := v_count_tot + 1;
IF MOD (v_count_tot, 500) = 0 THEN COMMIT; END IF;
END;
END LOOP;
fac.writelog (c_applname, 'S', '#Taken gestart: ' || TO_CHAR (v_count_tot), '');
COMMIT;
EXCEPTION
WHEN OTHERS
THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
v_errormsg := 'ORACLE (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
fac.writelog (c_applname, 'E', v_aanduiding || v_errormsg, 'Taak afgebroken!');
END;
/
-- Kinderopvang Huizen registreert op de ruimtes in haar Facilitor vastgoed de M2 en de M2 bestemd voor LRK wn wettelijke toegestane hoeveelheid kindplekken
--- Op locatieniveau wordt de totalisatie gedaan mbv exportfunctie locatie_m2
----- Locatiekaart, waar ook locatieleiders rechten op hebben, is in hun Facilitor de bron van vele relevante gegevens.
----- Verdere rapportage die voor bijvoorbeeld GGD moet verstrekken, dienen zelf op basis UDR gemaakt te worden.
-- Hulpview bij exportfunctie LOCATIE_M2
CREATE OR REPLACE VIEW SKHF_V_LOCATIE_M2
(
ALG_LOCATIE_KEY,
ALG_LOCATIE_OMSCHRIJVING,
ALG_RUIMTE_KEY,
ALG_RUIMTE_NR,
ALG_RUIMTE_OMSCHRIJVING,
ALG_RUIMTE_BRUTO_VLOEROPP,
ALG_SRTRUIMTE_UPPER,
ALG_SRTRUIMTE_CODE,
RUIMTE_M2_NETTO,
RUIMTE_M2_NETTO_LRK,
RUIMTE_KINDPLAATSEN_TOT, -- op basis alle/totaal m2
RUIMTE_KINDPLAATSEN_LRK -- op basis opvang / LRK - ruimtes
)
AS
SELECT l.alg_locatie_key,
l.alg_locatie_omschrijving,
r.alg_ruimte_key,
r.alg_ruimte_nr,
r.alg_ruimte_omschrijving,
r.alg_ruimte_bruto_vloeropp,
sr.alg_srtruimte_upper,
sr.alg_srtruimte_code,
fac.safe_to_number(FLX.getflex ('ALG', 1105, r.alg_ruimte_key, 'R'))
ruimte_M2_netto,
fac.safe_to_number(DECODE (sr.alg_srtruimte_code, 'LRK', FLX.getflex ('ALG', 1105, r.alg_ruimte_key, 'R'), NULL))
ruimte_M2_netto_lrk,
fac.safe_to_number(FLX.getflex ('ALG', 1107, r.alg_ruimte_key, 'R'))
ruimte_kindplaatsen_tot,
fac.safe_to_number(DECODE (sr.alg_srtruimte_code, 'LRK', FLX.getflex ('ALG', 1107, r.alg_ruimte_key, 'R'), NULL))
ruimte_kindplaatsen_lrk
FROM alg_ruimte r,
alg_verdieping v,
alg_gebouw g,
alg_locatie l,
alg_srtruimte sr
WHERE r.alg_verdieping_key = v.alg_verdieping_key
AND v.alg_gebouw_key = g.alg_gebouw_key
AND g.alg_locatie_key = l.alg_locatie_key
AND r.alg_srtruimte_key = sr.alg_srtruimte_key
AND l.alg_locatie_verwijder IS NULL AND g.alg_gebouw_verwijder IS NULL AND v.alg_verdieping_verwijder IS NULL AND r.alg_ruimte_verwijder IS NULL
AND (
l.alg_locatie_vervaldatum IS NULL
OR
l.alg_locatie_vervaldatum > TRUNC(SYSDATE)
)
AND (
g.alg_gebouw_vervaldatum IS NULL
OR
g.alg_gebouw_vervaldatum > TRUNC(SYSDATE)
)
;
-- Exportfunctie LOCATIE_M2
CREATE OR REPLACE VIEW skhf_v_export_locatie_m2
(
result,
result_order
)
AS
SELECT '"SYNC - Locatie en m2"'
|| ';"Bijgewerkt"',
0
FROM DUAL
UNION
SELECT 'ERROR: Datum '|| TO_CHAR(imp_log_datum) || ' - ' || imp_log_omschrijving || ' - ' || imp_log_hint,
1
FROM imp_log
WHERE imp_log_applicatie = 'LOCATIE_M2' ;
CREATE OR REPLACE PROCEDURE skhf_select_locatie_m2
(
p_applname IN VARCHAR2,
p_applrun IN VARCHAR2
)
AS
CURSOR c
IS
SELECT l.alg_locatie_key,
COALESCE(FLX.getflex ('ALG',
1121,
l.alg_locatie_key,
'L'), NULL)
locatie_M2_netto_totaal,
COALESCE(FLX.getflex ('ALG',
1120,
l.alg_locatie_key,
'L'), NULL)
locatie_M2_LRK,
COALESCE(FLX.getflex ('ALG',
1140,
l.alg_locatie_key,
'L'), NULL)
locatie_kindplaatsen_tot,
COALESCE(FLX.getflex ('ALG',
1160,
l.alg_locatie_key,
'L'), NULL)
locatie_kindplaatsen_lrk,
COALESCE(FLX.getflex ('ALG',
1120,
l.alg_locatie_key,
'L'), NULL)
locatie_m2_update -- laatste update_datum uit exportfunctie
FROM alg_ruimte r,
alg_verdieping v,
alg_gebouw g,
alg_locatie l
WHERE r.alg_verdieping_key = v.alg_verdieping_key
AND v.alg_gebouw_key = g.alg_gebouw_key
AND g.alg_locatie_key = l.alg_locatie_key
AND l.alg_locatie_verwijder IS NULL AND g.alg_gebouw_verwijder IS NULL AND v.alg_verdieping_verwijder IS NULL AND r.alg_ruimte_verwijder IS NULL
AND (
l.alg_locatie_vervaldatum IS NULL
OR
l.alg_locatie_vervaldatum > TRUNC(SYSDATE)
)
AND (
g.alg_gebouw_vervaldatum IS NULL
OR
g.alg_gebouw_vervaldatum > TRUNC(SYSDATE)
)
GROUP BY l.alg_locatie_key ;
v_errormsg VARCHAR2 (1000);
v_errorhint VARCHAR2 (1000);
oracle_err_mes VARCHAR2 (200);
oracle_err_num NUMBER;
currentversion fac_module.fac_module_version%TYPE;
v_aanduiding VARCHAR2 (1000);
v_count NUMBER;
v_locatie_m2_netto_totaal NUMBER;
v_locatie_m2_lrk NUMBER;
v_locatie_kindplaatsen_tot NUMBER;
v_locatie_kindplaatsen_lrk NUMBER;
v_datum_export DATE;
v_mutatiedatum NUMBER(1) := 0 ; -- false
BEGIN
v_count := 0;
v_datum_export := SYSDATE;
FOR rec IN c
LOOP
BEGIN
-- vullen variabelen
v_aanduiding := 'Updaten m2/kindplaatsen bij locatie_key : ' || rec.alg_locatie_key ;
v_locatie_m2_netto_totaal := 0 ;
v_locatie_m2_lrk := 0 ;
v_locatie_kindplaatsen_tot := 0 ;
v_locatie_kindplaatsen_lrk := 0 ;
-- per locatie kijken wat de totalen nu zijn...
SELECT sum(v.ruimte_m2_netto), sum(v.ruimte_m2_netto_lrk), FLOOR(sum(v.ruimte_kindplaatsen_tot)), FLOOR(sum(v.ruimte_kindplaatsen_lrk))
INTO v_locatie_m2_netto_totaal, v_locatie_m2_lrk, v_locatie_kindplaatsen_tot, v_locatie_kindplaatsen_lrk
FROM skhf_v_locatie_m2 v
WHERE v.alg_locatie_key = rec.alg_locatie_key
GROUP BY v.alg_locatie_key ;
-- updaten locatiekaart als aantallen verschillen met huidige waarden
IF COALESCE(rec.locatie_m2_netto_totaal, 0) <> v_locatie_m2_netto_totaal
THEN
v_errorhint := 'bijwerken kenmerkveld locatie_M2_netto_totaal' ;
alg.upsertkenmerk (1121, rec.alg_locatie_key, v_locatie_M2_netto_totaal);
BEGIN fac.trackaction('ALGLUP', rec.alg_locatie_key, 3, NULL, 'Uit auto-export: M2 totaal (netto) ' || TO_CHAR(COALESCE(rec.locatie_m2_netto_totaal, 0)) || ' --> ' || TO_CHAR(v_locatie_M2_netto_totaal)); END;
v_mutatiedatum := 1 ;
END IF;
IF COALESCE(rec.locatie_m2_lrk, 0) <> v_locatie_m2_lrk
THEN
v_errorhint := 'bijwerken kenmerkveld locatie_M2_LRK' ;
alg.upsertkenmerk (1120, rec.alg_locatie_key, v_locatie_M2_LRK);
BEGIN fac.trackaction('ALGLUP', rec.alg_locatie_key, 3, NULL, 'Uit auto-export: M2 LRK ' || TO_CHAR(COALESCE(rec.locatie_m2_lrk, 0)) || ' --> ' || TO_CHAR(v_locatie_M2_lrk)); END;
v_mutatiedatum := 1 ;
END IF;
IF COALESCE(rec.locatie_kindplaatsen_tot, 0) <> v_locatie_kindplaatsen_tot
THEN
v_errorhint := 'bijwerken kenmerkveld locatie_kindplaatsen_tot' ;
alg.upsertkenmerk (1140, rec.alg_locatie_key, v_locatie_kindplaatsen_tot);
BEGIN fac.trackaction('ALGLUP', rec.alg_locatie_key, 3, NULL, 'Uit auto-export: Kindplaatsen TOT ' || TO_CHAR(COALESCE(rec.locatie_kindplaatsen_tot, 0)) || ' --> ' || TO_CHAR(v_locatie_kindplaatsen_tot)); END;
v_mutatiedatum := 1 ;
END IF;
IF COALESCE(rec.locatie_kindplaatsen_lrk, 0) <> v_locatie_kindplaatsen_lrk
THEN
v_errorhint := 'bijwerken kenmerkveld locatie_kindplaatsen_lrk' ;
alg.upsertkenmerk (1160, rec.alg_locatie_key, v_locatie_kindplaatsen_lrk);
BEGIN fac.trackaction('ALGLUP', rec.alg_locatie_key, 3, NULL, 'Uit auto-export: Kindplaatsen LRK ' || TO_CHAR(COALESCE(rec.locatie_kindplaatsen_lrk, 0)) || ' --> ' || TO_CHAR(v_locatie_kindplaatsen_lrk)); END;
v_mutatiedatum := 1 ;
END IF;
IF v_mutatiedatum = 1
THEN
-- datum in locatiekaart zetten wanneer deze voor het laatste automatisch is geupdate
v_errorhint := 'bijwerken kenmerkveld locatie_m2_update' ;
alg.upsertkenmerk (1180, rec.alg_locatie_key, v_datum_export);
END IF;
END;
END LOOP;
EXCEPTION
WHEN OTHERS
THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
v_errormsg :=
'OTHERS (error ' || oracle_err_num || '/' || oracle_err_mes;
fac.writelog (p_applname,
'E',
v_errormsg,
v_aanduiding || ' - HINT: ' || v_errorhint);
END;
/
-------------------------------
--- NOTI-JOBS ---------------
-------------------------------
-------------------------------
--- RAPPORTAGES ---------------
-------------------------------
-- Rapportage beheer simkaarten en mobiel
CREATE OR REPLACE VIEW skhf_v_it_simkaarten_man
(
MOBIEL_NUMMER,
SIMKAART_NUMMER,
PUK_CODE,
STATUS,
ICT_OBJECT,
ICT_OBJECT_VERVALDATUM,
GEKOPPELD_AAN_TYPE,
GEKOPPELD_AAN,
NR_INS_DEEL_KEY,
OBJ_INS_DEEL_KEY
)
AS
SELECT nr.ins_deel_upper,
flx.getflex ('INS', 21, nr.ins_deel_key) simkaart_nummer,
flx.getflex ('INS', 25, 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 = 82 -- IT-Intern
AND v.ins_srtdeel_key = 21 -- 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 = 61 -- SIM_kaart gekoppeld bij Mobiel
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 skhf_v_rap_opdrachten
(
INTERN,
TYPE,
MLD_OPDR_KEY,
MLD_UITVOERENDE_KEY,
OPDRACHTNR,
STATUS,
MELDING,
BEHANDELAAR,
LOCATIE_PLAATS,
LOCATIE_OMSCHRIJVING,
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,
UREN_BESTEED,
AFMELD_DATUM,
OPDRACHT_TYPE,
TD_NAAM,
PRIORITEIT,
STATUS_KALENDER -- t.b.v. kalenderweergave
)
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,
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 ko.mld_kenmerkopdr_waarde
FROM mld_kenmerkopdr ko
WHERE ko.mld_opdr_key = o.mld_opdr_key
AND ko.mld_kenmerk_key = 203) -- kenmerk Uren_besteed
uren_besteed,
(SELECT MAX (ft.fac_tracking_datum)
FROM fac_tracking ft
WHERE ft.fac_tracking_refkey = o.mld_opdr_key
AND ft.fac_srtnotificatie_key = 78) -- 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,
CASE WHEN mu.intern = 1 THEN COALESCE(v.prioriteit,'3 - NORMAAL')
ELSE 'nvt'
END
prioriteit,
CASE
WHEN os.mld_statusopdr_omschrijving = 'Afgemeld' THEN 'Afgemeld'
WHEN os.mld_statusopdr_omschrijving = 'Afgewezen' THEN 'Afgewezen'
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
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 = 1 -- keuzelijst eigen tabel Prioriteit
AND ko.mld_kenmerk_key = 6 -- 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
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 skhf_v_cal_opdrachten
(
USER_KEY,
TITLE,
VAN,
TOT,
ITEM_KEY,
COLOR,
TEXTCOLOR,
NAAM_UITVOERRDER,
LOCATIE_PLAATS,
STATUS_KALENDER,
INTERN,
OPDRACHT_TYPE
)
AS
SELECT mld_uitvoerende_key,
' - ' || opdrachtnr || CHR(10)
|| naam_uitvoerder || CHR(10)
|| locatie_omschrijving || CHR(10)
|| 'Status: ' || status_kalender || CHR(10)
|| CASE WHEN geplande_einddatum IS NOT NULL THEN DECODE(intern, 1, 'Ingepland tot ', 'Bevestigd voor ') || TO_CHAR(geplande_einddatum_b) || CHR(10) ELSE '' END
|| CASE WHEN intern = 1 THEN CHR(10) || 'Prio: ' || prioriteit ELSE '' END
title,
geplande_aanvang_b
van,
geplande_einddatum_b
tot,
mld_opdr_key,
DECODE (intern, 1,
DECODE (status_kalender,
'Afgewezen', '#C0C0C0', -- grijs
'Afgemeld', '#C0C0C0', -- grijs
'Nog inplannen', '#f58a20', -- oranje
'Ingepland', '#20b2f5', -- lichtblauw
'#0000FF'),
0,
DECODE (status_kalender,
'Afgewezen', '#C0C0C0', -- grijs
'Afgemeld', '#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
'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
'Nog niet bevestigd', '#000000', -- zwart
'Bevestigd', '#000000', -- zwart
'Toegekend', '#FFFFFF', -- wit,
'#0000FF'),
'#000000'
) textcolor,
naam_uitvoerder,
locatie_plaats,
status_kalender,
intern,
opdracht_type
FROM skhf_v_rap_opdrachten
ORDER BY geplande_aanvang_b ;
-------------------------------
--- DAILY SKHF ---------------
-------------------------------
CREATE OR REPLACE PROCEDURE skhf_daily
AS
v_errormsg VARCHAR2 (1000);
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
BEGIN
-- exportfunctie om de m2 en kindplekken op locatiekaart bij te werken
skhf_select_locatie_m2 ('LOCATIE_M2', SYSDATE);
-- procedure om taak-meldingen op periodieke taken (niet mjob) aan te maken als die dag op de taak next_cycli_datum of ingeplande datum ataat
skhf_start_ctr;
END skhf_daily;
/
------ 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