Files
Customer/WSKO/WSKO.sql
Jos Groot Lipman 8957bdb3df FCLT#80823 Aanroep van fac_import_genericcsv (p_import_key); is niet meer nodig
svn path=/Customer/trunk/; revision=65968
2024-08-21 08:46:15 +00:00

975 lines
38 KiB
SQL

--
-- $Id$
--
-- Script containing customer specific sql statements for the FACILITOR database
-- Voor dbuser invullen: - indien script voor 1 klant is: 'AADS' (de klantcode, zoals vermeld in fac_version_cust)
-- - script is voor meerdere klanten: 'AAXX' (de groepcode, zoals vermeld in fac_version_group)
-- - script is voor meerdere klanten met naam volgens een bepaald patroon: '^AA|^ASMS|^GULU|^NMMS|^RABO|^ZKHM'
-- Ook als het script gedraaid wordt voor de verkeerde cust wordt er een logfile gemaakt.
-- (dit in tegenstelling tot sample_xxxx.sql)
DEFINE thisfile = 'WSKO.SQL'
DEFINE dbuser = 'WSKO'
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 ------
CREATE OR REPLACE PROCEDURE WSKO_IMPORT_BUDGETTERING(p_import_key IN NUMBER)
AS
CURSOR imp_csv
IS
SELECT fac_imp_csv_key fac_imp_csv_key,
fac_imp_csv_col01 locatie,
fac_imp_csv_col02 kostenplaats_nr,
fac_imp_csv_col03 kostengroep,
fac_imp_csv_col04 kostensoort,
fac_imp_csv_col05 periode,
fac_imp_csv_col06 budget
FROM fac_imp_csv
WHERE fac_import_key=p_import_key
ORDER BY fac_imp_csv_key;
v_errormsg VARCHAR2 (1000);
v_errorhint VARCHAR2 (1000);
v_aanduiding VARCHAR2 (1000);
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
v_header_valid NUMBER:=0;
v_prs_kostenplaats_key NUMBER;
v_prs_kostensoortgrp_key NUMBER;
v_prs_kostensoort_key NUMBER;
v_alg_gebouw_code VARCHAR2(20);
BEGIN
FOR rec IN imp_csv
LOOP
IF v_header_valid = 0
THEN
IF ( UPPER(rec.locatie) = 'LOCATIE'
AND UPPER(rec.kostenplaats_nr) = 'KOSTENPLAATS'
AND UPPER(rec.kostengroep) = 'KOSTENGROEP'
AND UPPER(rec.kostensoort) = 'KOSTENSOORT'
AND UPPER(rec.periode) = 'PERIODE'
AND UPPER(rec.budget) = 'BUDGET (EURO)')
THEN
v_header_valid:=1;
END IF;
ELSE
v_aanduiding:='Ophalen gebouw op bais van kostenplaats '||rec.kostenplaats_nr||' mislukt';
SELECT g.alg_gebouw_code
INTO v_alg_gebouw_code
FROM prs_kostenplaats p,
alg_gebouw g
WHERE p.prs_kostenplaats_nr=rec.kostenplaats_nr
AND g.prs_kostenplaats_key = p.prs_kostenplaats_key
AND p.prs_kostenplaats_verwijder IS NULL;
IF v_alg_gebouw_code IS NULL
THEN
fac.imp_writelog (p_import_key, 'E', v_aanduiding || v_errorhint, 'Kan locatie niet 1-duidig bepalen');
END IF;
v_aanduiding:='Ophalen kostenplaats '||rec.kostenplaats_nr||' mislukt';
SELECT p.prs_kostenplaats_key
INTO v_prs_kostenplaats_key
FROM prs_kostenplaats p
WHERE p.prs_kostenplaats_nr=rec.kostenplaats_nr
AND p.prs_kostenplaats_verwijder IS NULL;
IF v_prs_kostenplaats_key IS NULL
THEN
fac.imp_writelog (p_import_key, 'E', v_aanduiding || v_errorhint, 'Kan kostenplaats niet 1-duidig bepalen');
END IF;
v_aanduiding:='Ophalen kostengroep '||rec.kostengroep||' mislukt';
SELECT g.prs_kostensoortgrp_key
INTO v_prs_kostensoortgrp_key
FROM prs_kostensoortgrp g
WHERE g.prs_kostensoortgrp_oms=rec.kostengroep;
IF v_prs_kostensoortgrp_key IS NULL
THEN
fac.imp_writelog (p_import_key, 'E', v_aanduiding || v_errorhint, 'Kan kostensoortgroep niet 1-duidig bepalen');
END IF;
v_aanduiding:='Ophalen kostensoort '||rec.kostensoort||' mislukt';
SELECT k.prs_kostensoort_key
INTO v_prs_kostensoort_key
FROM prs_kostensoort k
WHERE k.prs_kostensoort_upper=UPPER(rec.kostensoort)
AND k.prs_kostensoortgrp_key = v_prs_kostensoortgrp_key
AND k.prs_kostensoort_verwijder IS NULL;
IF v_prs_kostensoort_key IS NULL
THEN
fac.imp_writelog (p_import_key, 'E', v_aanduiding || v_errorhint, 'Kan kostensoort niet 1-duidig bepalen');
END IF;
END IF;
END LOOP;
IF v_header_valid=0
THEN
fac.imp_writelog (p_import_key, 'E', 'Geen valide header gevonden', 'Header fout');
END IF;
EXCEPTION
WHEN NO_DATA_FOUND
THEN
v_errorhint := v_errormsg || ' - ' || v_aanduiding;
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;
/
CREATE OR REPLACE PROCEDURE WSKO_UPDATE_BUDGETTERING(p_import_key IN NUMBER)
AS
CURSOR bdgt
IS
SELECT fac_imp_csv_key fac_imp_csv_key,
fac_imp_csv_col01 locatie,
fac_imp_csv_col02 kostenplaats_nr,
fac_imp_csv_col03 kostengroep,
fac_imp_csv_col04 kostensoort,
fac_imp_csv_col05 periode,
fac_imp_csv_col06 budget
FROM fac_imp_csv
WHERE fac_import_key=p_import_key
ORDER BY fac_imp_csv_key;
v_errormsg VARCHAR2 (1000);
v_errorhint VARCHAR2 (1000);
v_aanduiding VARCHAR2 (1000);
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
v_count NUMBER:=0;
v_ongeldig NUMBER:=0;
v_ins_discipline_key NUMBER;
v_bgt_project_key NUMBER;
v_bgt_kostenrubriek_key NUMBER;
v_kostensoortgrp_key NUMBER;
v_kostensoort_key NUMBER;
v_kostenplaatsgrp_key NUMBER;
v_kostenplaats_key NUMBER;
v_budget NUMBER;
v_budget_nu NUMBER;
v_budget_key NUMBER;
v_periode_start DATE;
v_periode_eind DATE;
v_alg_gebouw_code VARCHAR(20);
v_alg_gebouw_naam VARCHAR(60);
BEGIN
BEGIN
v_aanduiding:='Ophalen budget project disciplne Investering budgettering mislukt';
SELECT ins_discipline_key
INTO v_ins_discipline_key
FROM ins_tab_discipline i
WHERE i.ins_discipline_module='BGT'
AND i.ins_discipline_omschrijving='Investering'
AND i.ins_discipline_verwijder IS NULL;
EXCEPTION
WHEN NO_DATA_FOUND
THEN
INSERT
INTO ins_tab_discipline (ins_discipline_omschrijving,
ins_discipline_module,
ins_discipline_aanmaak,
ins_discipline_kpnverplicht)
VALUES ('Investering',
'BGT',
SYSDATE,
0)
RETURNING ins_discipline_key
INTO v_ins_discipline_key;
INSERT INTO bgt_disc_params (bgt_ins_discipline_key)
VALUES(v_ins_discipline_key );
END;
IF v_ins_discipline_key = NULL
THEN
fac.imp_writelog (p_import_key, 'E', v_aanduiding || v_errorhint, 'Kan budget project disciplne niet 1-duidig bepalen of aanmaken');
v_ongeldig := 1;
ELSE
BEGIN
v_aanduiding:='Ophalen budget project Budgettering mislukt';
SELECT p.bgt_project_key
INTO v_bgt_project_key
FROM bgt_project p
WHERE p.bgt_project_code='Budgettering'
AND p.ins_discipline_key = v_ins_discipline_key
AND bgt_project_verwijder IS NULL;
EXCEPTION
WHEN NO_DATA_FOUND
THEN
INSERT
INTO bgt_project (ins_discipline_key,
bgt_project_code,
bgt_project_omschrijving,
bgt_project_aanmaak)
VALUES (v_ins_discipline_key,
'Budgettering',
'Budgettering',
SYSDATE)
RETURNING bgt_project_key
INTO v_bgt_project_key;
END;
END IF;
IF v_bgt_project_key = NULL OR v_ongeldig=1
THEN
fac.imp_writelog (p_import_key, 'E', v_aanduiding || v_errorhint, 'Kan project niet 1-duidig bepalen of aanmaken');
v_ongeldig := 1;
ELSE
FOR rec IN bdgt
LOOP
IF v_count>0
THEN
BEGIN
v_aanduiding:='Ophalen budget project Budgettering mislukt';
SELECT p.bgt_project_key
INTO v_bgt_project_key
FROM bgt_project p
WHERE p.bgt_project_code=rec.periode
AND p.ins_discipline_key = v_ins_discipline_key
AND bgt_project_verwijder IS NULL;
EXCEPTION
WHEN NO_DATA_FOUND
THEN
INSERT
INTO bgt_project (ins_discipline_key,
bgt_project_code,
bgt_project_omschrijving,
bgt_project_aanmaak)
VALUES (v_ins_discipline_key,
rec.periode,
rec.periode,
SYSDATE)
RETURNING bgt_project_key
INTO v_bgt_project_key;
END;
v_aanduiding:='Ophalen locatie '||rec.locatie||' via kostenplaats '||rec.kostenplaats_nr||' is mislukt';
SELECT g.alg_gebouw_code , g.alg_gebouw_naam
INTO v_alg_gebouw_code, v_alg_gebouw_naam
FROM prs_kostenplaats p,
alg_gebouw g
WHERE p.prs_kostenplaats_nr=rec.kostenplaats_nr
AND g.PRS_KOSTENPLAATS_KEY = p.PRS_KOSTENPLAATS_KEY
AND p.prs_kostenplaats_verwijder IS NULL;
BEGIN
v_aanduiding:='Ophalen budget project kostenrubriek '||v_alg_gebouw_code||' mislukt';
SELECT k.bgt_kostenrubriek_key
INTO v_bgt_kostenrubriek_key
FROM bgt_kostenrubriek k
WHERE k.bgt_project_key=v_bgt_project_key
AND k.bgt_kostenrubriek_code=v_alg_gebouw_code
AND k.bgt_kostenrubriek_oms=rec.kostenplaats_nr||'-'||SUBSTR(v_alg_gebouw_naam,1,55);
EXCEPTION
WHEN NO_DATA_FOUND
THEN
INSERT
INTO bgt_kostenrubriek (bgt_project_key,
bgt_kostenrubriek_code,
bgt_kostenrubriek_oms)
VALUES (v_bgt_project_key,
v_alg_gebouw_code,
rec.periode||'-'||SUBSTR(v_alg_gebouw_naam,1,55))
RETURNING bgt_kostenrubriek_key
INTO v_bgt_kostenrubriek_key;
END;
v_aanduiding:='OPhalen kostenplaatsnr '||rec.kostenplaats_nr||' mislukt';
SELECT k.prs_kostenplaats_key, k.prs_kostenplaatsgrp_key
INTO v_kostenplaats_key, v_kostenplaatsgrp_key
FROM prs_kostenplaats k
WHERE k.prs_kostenplaats_nr=rec.kostenplaats_nr
AND k.prs_kostenplaats_verwijder IS NULL;
v_aanduiding:='OPhalen kostensoort en kostengroep '||rec.kostengroep||'-'||rec.kostensoort||' mislukt';
SELECT s.prs_kostensoort_key, s.prs_kostensoortgrp_key
INTO v_kostensoort_key, v_kostensoortgrp_key
FROM prs_kostensoort s, prs_kostensoortgrp g
WHERE s.prs_kostensoort_oms=rec.kostensoort
AND g.prs_kostensoortgrp_oms=rec.kostengroep
AND s.prs_kostensoortgrp_key=g.prs_kostensoortgrp_key
AND s.prs_kostensoort_verwijder IS NULL;
v_budget := fac.safe_to_number(REPLACE(rec.budget,'.',''));
v_periode_start := fac.safe_to_date('01-01-'||rec.periode,'DD-MM-YYYY');
v_periode_eind := fac.safe_to_date('31-12-'||rec.periode,'DD-MM-YYYY');
IF v_kostenplaats_key>0
AND v_kostenplaatsgrp_key>0
AND v_kostensoort_key>0
AND v_kostensoortgrp_key>0
AND v_budget>0
THEN
-- Eerst kijken of hij er al is
BEGIN
SELECT b.bgt_budget_key, b.bgt_budget_bedrag
INTO v_budget_key, v_budget_nu
FROM bgt_budget b
WHERE b.ins_discipline_key=v_ins_discipline_key
AND b.bgt_project_key=v_bgt_project_key
AND b.bgt_kostenrubriek_key=v_bgt_kostenrubriek_key
AND b.prs_kostensoortgrp_key=v_kostensoortgrp_key
AND b.prs_kostensoort_key= v_kostensoort_key
AND b.prs_kostenplaatsgrp_key=v_kostenplaatsgrp_key
AND b.prs_kostenplaats_key=v_kostenplaats_key
AND b.bgt_budget_begin= v_periode_start
AND b.bgt_budget_eind= v_periode_eind;
v_aanduiding := 'Aanpassen budget van '||rec.kostenplaats_nr||'-'||rec.kostengroep||'-'||rec.kostensoort||' van '||v_budget_nu|| '-> '||v_budget;
UPDATE bgt_budget b
SET b.bgt_budget_bedrag=v_budget
WHERE bgt_budget_key=v_budget_key;
fac.imp_writelog (p_import_key, 'I', v_aanduiding , 'Aanpassen budget bedrag');
EXCEPTION
WHEN NO_DATA_FOUND
THEN
INSERT
INTO bgt_budget(ins_discipline_key,
bgt_project_key,
bgt_kostenrubriek_key,
prs_kostensoortgrp_key,
prs_kostensoort_key,
prs_kostenplaatsgrp_key,
prs_kostenplaats_key,
bgt_budget_bedrag,
bgt_budget_begin,
bgt_budget_eind)
VALUES(v_ins_discipline_key,
v_bgt_project_key,
v_bgt_kostenrubriek_key,
v_kostensoortgrp_key,
v_kostensoort_key,
v_kostenplaatsgrp_key,
v_kostenplaats_key,
v_budget,
v_periode_start,
v_periode_eind);
END;
END IF;
END IF;
v_count:=v_count+1;
END LOOP;
END IF;
EXCEPTION
WHEN NO_DATA_FOUND
THEN
v_errorhint := v_errormsg || ' - ' || v_aanduiding;
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;
/
CREATE OR REPLACE PROCEDURE WSKO_IMPORT_MJOB(p_import_key IN NUMBER)
AS
CURSOR obj
IS
SELECT fac_imp_csv_key fac_imp_csv_key,
fac_imp_csv_col01 locatie_oms,
fac_imp_csv_col02 locatie_code,
fac_imp_csv_col03 ins_discipline_oms,
fac_imp_csv_col04 ins_groep_oms,
fac_imp_csv_col05 ins_srtdeel_code,
fac_imp_csv_col06 ins_srtdeel_oms,
fac_imp_csv_col07 ins_deel_omschrijving,
fac_imp_csv_col08 ins_deel_bouwjaar,
fac_imp_csv_col09 ins_deel_aantal,
fac_imp_csv_col10 ins_srtgroep_eenheid,
fac_imp_csv_col11 taak_omschrijving,
fac_imp_csv_col12 taak_opmerking,
fac_imp_csv_col13 taak_cyclus,
fac_imp_csv_col14 taak_datum,
fac_imp_csv_col15 taak_kosten
FROM fac_imp_csv
WHERE fac_import_key=p_import_key
ORDER BY fac_imp_csv_key;
v_errormsg VARCHAR2 (1000);
v_errorhint VARCHAR2 (1000);
v_aanduiding VARCHAR2 (1000);
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
v_ins_deel_key NUMBER;
v_ins_discipline_key NUMBER;
v_ins_srtgroep_key NUMBER;
v_ins_srtdeel_key NUMBER;
v_alg_locatie_key NUMBER;
v_alg_ruimte_key NUMBER;
v_prs_kostenplaats_key NUMBER;
v_aantal NUMBER;
v_bouwjaar DATE;
v_count NUMBER;
v_count_new NUMBER;
v_error NUMBER;
BEGIN
fac_import_file2csv(p_import_key);
v_count:=0;
v_error:=0;
FOR rec in obj
LOOP
IF rec.locatie_oms<>'Locatie'
THEN
v_error:=0;
v_aanduiding:='Fout bij ophalen ruimte voor object '||rec.ins_deel_omschrijving;
BEGIN
SELECT alg_ruimte_key, a.alg_locatie_key, g.prs_kostenplaats_key
INTO v_alg_ruimte_key, v_alg_locatie_key , v_prs_kostenplaats_key
FROM alg_v_allonrgoed_gegevens a, alg_locatie l, alg_gebouw g
WHERE l.alg_locatie_code=rec.locatie_code
AND a.alg_locatie_key = l.alg_locatie_key
AND a.alg_gebouw_code=rec.locatie_code
AND a.alg_verdieping_code='0'
AND a.alg_ruimte_nr='0.00'
AND g.alg_gebouw_key = a.alg_gebouw_key;
EXCEPTION
WHEN OTHERS
THEN
v_alg_ruimte_key:=-1;
END;
v_errorhint:='Taak wordt overgeslagen.';
IF rec.ins_deel_omschrijving IS NULL OR LENGTH(rec.ins_deel_omschrijving)=0
THEN
v_aanduiding := 'Geen valide object omschrijving bij object:'||rec.ins_deel_omschrijving;
v_error:=1;
END IF;
IF rec.taak_omschrijving IS NULL OR LENGTH(TRIM(rec.taak_omschrijving))=0
THEN
v_aanduiding := 'Geen valide taak omschrijving bij object:'||rec.ins_deel_omschrijving;
v_error:=1;
END IF;
IF rec.taak_cyclus IS NULL OR LENGTH(rec.taak_cyclus)=0
THEN
v_aanduiding := 'Geen valide taak cyclus.'||rec.ins_deel_omschrijving;
v_error:=1;
END IF;
IF rec.taak_datum IS NULL OR LENGTH(rec.taak_datum)<4
THEN
v_aanduiding := 'Geen valide startdatum taak.'||rec.ins_deel_omschrijving;
v_error:=1;
END IF;
IF rec.taak_kosten IS NULL OR LENGTH(rec.taak_kosten)=0
THEN
v_aanduiding := 'Geen valide taak kosten.'||rec.ins_deel_omschrijving;
v_error:=1;
END IF;
IF v_error=0
AND v_alg_ruimte_key>0
THEN
BEGIN
SELECT i.ins_deel_key
INTO v_ins_deel_key
FROM ins_deel i
WHERE i.ins_alg_ruimte_key=v_alg_ruimte_key
AND i.ins_alg_locatie_key=v_alg_locatie_key
AND i.ins_deel_omschrijving = rec.ins_deel_omschrijving
AND i.ins_deel_verwijder IS NULL;
UPDATE fac_imp_csv
SET fac_imp_csv_col50=v_ins_deel_key, fac_imp_csv_col51=v_prs_kostenplaats_key
WHERE fac_imp_csv_key = rec.fac_imp_csv_key;
COMMIT;
EXCEPTION
WHEN NO_DATA_FOUND THEN
fac.imp_writelog (p_import_key,
'E',
'Object '|| rec.ins_deel_omschrijving||' niet gevonden.',
v_errorhint);
END;
ELSE
fac.imp_writelog (p_import_key,
'W',
v_aanduiding,
v_errorhint);
END IF;
ELSE
DELETE
FROM fac_imp_csv
WHERE fac_imp_csv_key=rec.fac_imp_csv_key;
COMMIT;
END IF;
END LOOP;
EXCEPTION
WHEN NO_DATA_FOUND
THEN
v_errorhint := v_errormsg || ' - ' || v_aanduiding;
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;
/
CREATE OR REPLACE PROCEDURE WSKO_UPDATE_MJOB(p_import_key IN NUMBER)
AS
CURSOR obj
IS
SELECT fac_imp_csv_key fac_imp_csv_key,
fac_imp_csv_col01 locatie_oms,
fac_imp_csv_col02 locatie_code,
fac_imp_csv_col03 ins_discipline_oms,
fac_imp_csv_col04 ins_groep_oms,
fac_imp_csv_col05 ins_srtdeel_code,
fac_imp_csv_col06 ins_srtdeel_oms,
fac_imp_csv_col07 ins_deel_omschrijving,
fac_imp_csv_col08 ins_deel_bouwjaar,
fac_imp_csv_col09 ins_deel_aantal,
fac_imp_csv_col10 ins_srtgroep_eenheid,
fac_imp_csv_col11 taak_omschrijving,
fac_imp_csv_col12 taak_opmerking,
fac_imp_csv_col13 taak_cyclus,
fac_imp_csv_col14 taak_datum,
fac_imp_csv_col15 taak_kosten,
fac_imp_csv_col50 ins_deel_key,
fac_imp_csv_col51 prs_kostenplaats_key
FROM fac_imp_csv
WHERE fac_import_key=p_import_key
AND fac_imp_csv_col50 IS NOT NULL
ORDER BY fac_imp_csv_key;
v_errormsg VARCHAR2 (1000);
v_errorhint VARCHAR2 (1000);
v_aanduiding VARCHAR2 (1000);
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
v_srtkenmerk_doc NUMBER;
v_ins_srtcontrole_niveau VARCHAR2(1);
v_taakcat_key NUMBER;
v_srtcontrole_key NUMBER;
v_srtcontroledl_xcp_key NUMBER;
v_eenheid NUMBER;
v_default_eenheid NUMBER;
v_deel_key NUMBER;
v_taak_datum DATE;
v_taak_cyclus NUMBER;
v_taak_default_cyclus NUMBER;
v_taak_kosten NUMBER;
v_ins_srtdeel_key NUMBER;
v_aantal NUMBER;
v_count_new NUMBER;
v_count_update NUMBER;
BEGIN
v_ins_srtcontrole_niveau:='S';
v_count_new:=0;
v_count_update:=0;
BEGIN
SELECT ins_srtkenmerk_key
INTO v_srtkenmerk_doc
FROM ins_srtkenmerk i
WHERE i.ins_srtkenmerk_code='DOCUMENTEN'
AND i.ins_srtkenmerk_verwijder IS NULL;
EXCEPTION
WHEN NO_DATA_FOUND
THEN
v_srtkenmerk_doc:=-1;
END;
FOR rec IN obj
LOOP
IF rec.locatie_oms<>'Locatie'
THEN
v_deel_key := rec.ins_deel_key;
v_eenheid:=4;
v_default_eenheid:=4;
v_errormsg :='Ophalen objctsoort';
SELECT i.ins_srtdeel_key
INTO v_ins_srtdeel_key
FROM ins_deel i
WHERE i.ins_deel_key=v_deel_key;
v_errormsg :='Ophalen taakcetegorie '||rec.taak_omschrijving;
-- Gaan we eerst check of er onderhoud controles zijn
SELECT i.ins_discipline_key
INTO v_taakcat_key
FROM ins_tab_discipline i , ctr_disc_params p
WHERE i.ins_discipline_module='CTR'
AND UPPER(i.ins_discipline_omschrijving) = UPPER('MJOB FACILITAIR')
AND i.ins_discipline_verwijder IS NULL
AND p.ctr_ins_discipline_key=i.ins_discipline_key;
v_taak_default_cyclus:=0;
v_taak_datum := fac.safe_to_date('01-01-'||rec.taak_datum,'DD-MM-YYYY');
v_aanduiding:='Ophalen srtcontrole'||rec.taak_omschrijving;
BEGIN
SELECT ins_srtcontrole_key
INTO v_srtcontrole_key
FROM ins_srtcontrole
where ins_srtinstallatie_key=v_ins_srtdeel_key
AND ins_srtcontrole_niveau=v_ins_srtcontrole_niveau
AND UPPER(ins_srtcontrole_omschrijving) = UPPER(SUBSTR(rec.taak_omschrijving,0,60))
AND ins_srtcontrole_periode=v_taak_default_cyclus
AND ins_srtcontrole_eenheid=v_default_eenheid
AND ins_srtcontrole_mode=1
AND ctr_discipline_key=v_taakcat_key;
EXCEPTION
WHEN NO_DATA_FOUND THEN
-- ins_srtcontrole is er niet dus maken we hem aan,
INSERT INTO ins_srtcontrole (ins_srtinstallatie_key,
ins_srtcontrole_niveau,
ins_srtcontrole_omschrijving,
ins_srtcontrole_periode,
ins_srtcontrole_eenheid,
ins_srtcontrole_mode,
ctr_discipline_key
)
VALUES (v_ins_srtdeel_key,
v_ins_srtcontrole_niveau,
SUBSTR(rec.taak_omschrijving,0,60),
v_taak_default_cyclus,
v_default_eenheid,
1,
v_taakcat_key
)
RETURNING ins_srtcontrole_key
INTO v_srtcontrole_key;
IF v_srtkenmerk_doc>0 THEN
INSERT INTO ins_kenmerk (
ins_srtkenmerk_key,
ins_srtinstallatie_key,
ins_kenmerk_niveau,
ins_kenmerk_bewerkniveau,
ins_kenmerk_groep,
ins_kenmerk_volgnummer,
ins_kenmerk_hint,
ins_kenmerk_omschrijving
)
VALUES (
v_srtkenmerk_doc,
v_srtcontrole_key,
'C',
'D',
0,
10,
'',
'Documenten'
);
END IF;
END;
IF LENGTH(rec.taak_cyclus)>0 THEN
v_taak_cyclus:=fac.safe_to_number(rec.taak_cyclus);
ELSE
v_taak_cyclus:= v_taak_default_cyclus;
END IF;
IF LENGTH(rec.ins_deel_aantal)>0
THEN
v_aantal:=fac.safe_to_number(rec.ins_deel_aantal);
ELSE
v_aantal:=1;
END IF;
IF LENGTH(rec.taak_kosten)>0
THEN
v_taak_kosten:=COALESCE(fac.safe_to_number(REPLACE(rec.taak_kosten,'.','')),0)/v_aantal;
ELSE
v_taak_kosten:=0;
END IF;
BEGIN
SELECT ins_srtcontroledl_xcp_key
INTO v_srtcontroledl_xcp_key
FROM ins_srtcontroledl_xcp
WHERE ins_deel_key=v_deel_key
AND ins_srtcontrole_key=v_srtcontrole_key;
--AND ins_srtcontroledl_xcp_eenheid=v_eenheid;
-- we hebben een xcp record dan updaten we nu alleen de startdatum
UPDATE ins_srtcontroledl_xcp
SET INS_SRTCONTROLEDL_XCP_STARTDAT=v_taak_datum,
ins_srtcontroledl_xcp_periode=v_taak_cyclus,
ins_srtcontroledl_xcp_kosten=v_taak_kosten,
ins_srtcontroledl_xcp_eenheid=v_eenheid
WHERE ins_srtcontroledl_xcp_key = v_srtcontroledl_xcp_key;
v_count_update:=v_count_update+1;
EXCEPTION
WHEN NO_DATA_FOUND THEN
-- Er is nog geen XCP record dus maken we er 1 met de verwachte startdatum
INSERT INTO ins_srtcontroledl_xcp
(ins_srtcontrole_key,
ins_deel_key,
ins_srtcontroledl_xcp_eenheid,
ins_srtcontroledl_xcp_aantal,
ins_srtcontroledl_xcp_kosten,
ins_srtcontroledl_xcp_periode,
ins_srtcontroledl_xcp_startdat,
prs_kostenplaats_key)
VALUES (v_srtcontrole_key,
v_deel_key,
v_eenheid,
v_aantal,
v_taak_kosten,
v_taak_cyclus,
v_taak_datum,
rec.prs_kostenplaats_key);
v_count_new:=v_count_new+1;
END;
END IF;
END LOOP;
fac.imp_writelog (p_import_key,
'I',
'Nieuw aangemaakte taken :'||v_count_new,
v_errorhint);
fac.imp_writelog (p_import_key,
'I',
'Geupdate taken taken :'||v_count_update,
v_errorhint);
END;
/
-- EINDE Import functies
-- Rapportage VIEWS
CREATE OR REPLACE VIEW wsko_v_budgetuitnutting
AS
SELECT x.*,
budget - COALESCE (opdracht_gefact, opdracht_uitv, offerte) budget_res
FROM (SELECT kp.prs_kostenplaats_nr,
kp.prs_kostenplaats_key,
kp.prs_perslid_key,
(SELECT prs_perslid_naam_friendly
FROM prs_v_perslid_fullnames p
WHERE p.prs_perslid_key=kp.prs_perslid_key) budgethouder,
g.alg_gebouw_naam,
ksg.prs_kostensoortgrp_key,
ksg.prs_kostensoortgrp_oms,
ks.prs_kostensoort_key,
ks.prs_kostensoort_oms,
b.bgt_budget_bedrag budget,
TRUNC(b.bgt_budget_begin,'YYYY') budget_jaar,
b.bgt_budget_begin,
b.bgt_budget_eind,
(SELECT SUM (opdr_kost)
FROM ( SELECT AVG (mld_opdr_kosten) opdr_kost
FROM mld_opdr o, mld_typeopdr ot
WHERE o.prs_kostenplaats_key =
kp.prs_kostenplaats_key
AND o.prs_kostensoort_key =
ks.prs_kostensoort_key
AND o.mld_typeopdr_key = ot.MLD_TYPEOPDR_KEY
AND UPPER(ot.mld_typeopdr_omschrijving)='OFFERTE INVESTERING'
AND ot.mld_typeopdr_isofferte=1
AND o.mld_statusopdr_key IN (5,
6,
7,
8,
9)
AND o.mld_opdr_datumbegin BETWEEN b.bgt_budget_begin AND b.bgt_budget_eind
GROUP BY o.mld_melding_key)) offerte,
(SELECT SUM (mld_opdr_kosten)
FROM mld_opdr o, mld_typeopdr ot
WHERE o.prs_kostenplaats_key = kp.prs_kostenplaats_key
AND o.prs_kostensoort_key = ks.prs_kostensoort_key
AND o.mld_typeopdr_key = ot.mld_typeopdr_key
AND UPPER(ot.mld_typeopdr_omschrijving)='INVESTERING OPDRACHT'
AND o.mld_statusopdr_key IN (5, 8)
AND o.mld_opdr_datumbegin BETWEEN b.bgt_budget_begin AND b.bgt_budget_eind) opdracht_uitv,
(SELECT SUM (mld_opdr_kosten)
FROM mld_opdr o, mld_typeopdr ot
WHERE o.prs_kostenplaats_key = kp.prs_kostenplaats_key
AND o.prs_kostensoort_key = ks.prs_kostensoort_key
AND o.mld_typeopdr_key = ot.mld_typeopdr_key
AND UPPER(ot.mld_typeopdr_omschrijving)='INVESTERING OPDRACHT'
AND o.mld_statusopdr_key = 9
AND o.mld_opdr_datumbegin BETWEEN b.bgt_budget_begin AND b.bgt_budget_eind) opdracht_gefact
FROM bgt_budget b,
bgt_project p,
bgt_kostenrubriek kr,
prs_kostenplaats kp,
prs_kostensoort ks,
prs_kostensoortgrp ksg,
alg_gebouw g
WHERE p.bgt_project_key = b.bgt_project_key
AND kr.bgt_kostenrubriek_key = b.bgt_kostenrubriek_key
AND kp.prs_kostenplaats_key = b.prs_kostenplaats_key
AND ks.prs_kostensoort_key = b.prs_kostensoort_key
AND ksg.prs_kostensoortgrp_key = ks.prs_kostensoortgrp_key
AND g.prs_kostenplaats_key = kp.prs_kostenplaats_key) x;
CREATE OR REPLACE VIEW wsko_v_budgetuitn_detail
(
prs_kostenplaats_key,
prs_kostenplaats_nr,
prs_kostensoortgrp_key,
prs_kostensoortgrp_oms,
prs_kostensoort_key,
prs_kostensoort_oms,
mld_opdr_nr,
mld_opdr_key,
opdr_status,
opdracht_soort,
omschrijving,
offerte_bedrag,
opdracht_bedrag
)
AS
SELECT k.prs_kostenplaats_key,
k.prs_kostenplaats_nr,
ksg.prs_kostensoortgrp_key,
ksg.prs_kostensoortgrp_oms,
ks.prs_kostensoort_key,
ks.prs_kostensoort_oms,
o.mld_melding_key||'/'||o.mld_opdr_bedrijfopdr_volgnr mld_opdr_nr,
o.mld_opdr_key,
so.mld_statusopdr_omschrijving,
CASE
WHEN ot.mld_typeopdr_isofferte = 1
THEN 'Offerte'
ELSE 'Opdracht'
END opdracht_soort,
TO_CHAR (m.mld_melding_omschrijving) omschrijving,
CASE
WHEN ot.mld_typeopdr_isofferte = 1
THEN mld_opdr_kosten
ELSE 0
END offerte_bedrag,
CASE
WHEN ot.mld_typeopdr_isofferte = 0
THEN mld_opdr_kosten
ELSE 0
END opdracht_bedrag
FROM mld_opdr o,
prs_kostenplaats k,
prs_kostensoort ks,
prs_kostensoortgrp ksg,
mld_melding m,
mld_typeopdr ot,
mld_statusopdr so
WHERE k.prs_kostenplaats_key = o.prs_kostenplaats_key
AND ks.prs_kostensoort_key = o.prs_kostensoort_key
AND ksg.prs_kostensoortgrp_key = ks.prs_kostensoortgrp_key
AND m.mld_melding_key = o.mld_melding_key
AND ot.mld_typeopdr_key = o.mld_typeopdr_key
AND so.mld_statusopdr_key = o.mld_statusopdr_key;
CREATE OR REPLACE VIEW WSKO_V_INOPSLAG
(
ins_deel_key,
discipline,
groep,
soort,
ins_deel_omschrijving,
ins_deel_opmerking,
mld_url
)
AS
SELECT i.ins_deel_key,
d.ins_discipline_omschrijving,
isg.ins_srtgroep_omschrijving,
isd.ins_srtdeel_omschrijving,
i.ins_deel_omschrijving,
i.ins_deel_opmerking,
'appl/mld/mld_melding.asp?urole=fe'||CHR(38)||'mld_defaultstdmelding='||msm.mld_stdmelding_key ||CHR(38)||'ins_key='||i.INS_DEEL_KEY mld_url
FROM alg_v_allonrgoed_gegevens a,
ins_deel i,
ins_srtdeel isd,
ins_srtgroep isg,
ins_discipline d,
mld_stdmelding msm
WHERE a.alg_ruimte_nr='9.99'
AND a.alg_gebouw_code='SB_PAP'
AND i.ins_alg_ruimte_key=a.alg_ruimte_key
AND isd.ins_srtdeel_key = i.ins_srtdeel_key
AND isg.Ins_srtgroep_key = isd.ins_srtgroep_key
AND d.ins_discipline_key = isg.ins_discipline_key
AND msm.mld_stdmelding_code='UITOPSLAG'
AND i.ins_deel_key NOT IN (SELECT mo.ins_deel_key
FROM mld_melding m ,
mld_stdmelding ms,
mld_melding_object mo
WHERE m.mld_stdmelding_key=ms.mld_stdmelding_key
AND ms.mld_stdmelding_code='UITOPSLAG'
AND mo.mld_melding_key = m.mld_melding_key
AND m.mld_melding_status IN (0,2,3,4));
-- EINDE rapportage views
------ 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