253 lines
10 KiB
SQL
253 lines
10 KiB
SQL
--
|
|
-- $Id$
|
|
--
|
|
-- ARAI#75066 deel 6: Taken aanmaken
|
|
--
|
|
DEFINE thisfile = 'ARAI#75066-6.SQL'
|
|
DEFINE dbuser = 'ARAI'
|
|
|
|
SET ECHO ON
|
|
SET DEFINE ON
|
|
COLUMN fcltlogfile NEW_VALUE fcltlogfile NOPRINT;
|
|
COLUMN fcltcusterr NEW_VALUE fcltcusterr NOPRINT;
|
|
WHENEVER SQLERROR CONTINUE;
|
|
SELECT adm.getscriptspoolfile('&thisfile') AS fcltlogfile FROM DUAL;
|
|
SPOOL &fcltlogfile
|
|
WHENEVER SQLERROR EXIT;
|
|
SELECT adm.checkscriptcust('&dbuser') AS fcltcusterr FROM DUAL;
|
|
WHENEVER SQLERROR CONTINUE;
|
|
PROMPT &fcltcusterr
|
|
SET DEFINE OFF
|
|
|
|
------ payload begin ------
|
|
|
|
-- Maak de taken aan
|
|
|
|
DECLARE
|
|
CURSOR c IS
|
|
SELECT TRIM (fac_imp_csv_col13 || fac_imp_csv_col01) ins_deel_omschrijving,
|
|
TRIM (fac_imp_csv_col08) ins_srtdeel_code,
|
|
TRIM (fac_imp_csv_col46) ins_srtcontrole_omschrijving, -- taak
|
|
fac_imp_csv_col53 ins_srtcontroledl_xcp_materia, -- prijs/stuk
|
|
fac_imp_csv_col55 ins_srtcontrole_periode, -- cyclus
|
|
FAC.safe_to_date(fac_imp_csv_col54 || '0101', 'yyyymmdd') ins_srtcontroledl_xcp_startdat, -- startjaar
|
|
fac_imp_csv_col49 ins_srtcontroledl_xcp_aantal, -- taak aantal
|
|
TRIM (fac_imp_csv_col51) ins_srtcontroledl_xcp_aanteh, -- taak_eenheid
|
|
TRIM (fac_imp_csv_col61) ins_srtcontroledl_xcp_groep, -- fasering
|
|
TRIM (fac_imp_csv_col61) prs_kostenplaats_nr -- fasering
|
|
FROM fac_imp_csv
|
|
WHERE COALESCE(fac_imp_csv_col53, '0') <> '0';
|
|
|
|
oracle_err_num NUMBER;
|
|
oracle_err_mes VARCHAR2 (200);
|
|
v_errormsg VARCHAR2 (200);
|
|
v_errorhint VARCHAR2 (200);
|
|
v_aanduiding VARCHAR2 (100);
|
|
|
|
v_deel_key NUMBER;
|
|
v_srtdeel_key NUMBER;
|
|
v_srtcontrole_key NUMBER;
|
|
v_srtcontroledl_xcp_key NUMBER;
|
|
v_taakcat_key NUMBER;
|
|
v_srtcontrole_periode INS_SRTCONTROLE.INS_SRTCONTROLE_PERIODE%TYPE;
|
|
v_srtcontrole_materiaal INS_SRTCONTROLE.INS_SRTCONTROLE_MATERIAAL%TYPE;
|
|
v_srtcontrole_percentage INS_SRTCONTROLE.INS_SRTCONTROLE_PERCENTAGE%TYPE;
|
|
v_srtcontrole_level INS_SRTCONTROLE.INS_SRTCONTROLE_LEVEL%TYPE;
|
|
v_percentage NUMBER;
|
|
v_materiaal INS_SRTCONTROLEDL_XCP.INS_SRTCONTROLEDL_XCP_MATERIA%TYPE;
|
|
v_kostenplaats_key PRS_KOSTENPLAATS.PRS_KOSTENPLAATS_KEY%TYPE;
|
|
v_aantal INS_SRTCONTROLEDL_XCP.INS_SRTCONTROLEDL_XCP_AANTAL%TYPE;
|
|
v_stopdat INS_SRTCONTROLEDL_XCP.INS_SRTCONTROLEDL_XCP_EIND%TYPE;
|
|
v_periode INS_SRTCONTROLEDL_XCP.INS_SRTCONTROLEDL_XCP_PERIODE%TYPE;
|
|
BEGIN
|
|
|
|
-- Eerst de eenmalige vervangingstaken die geen cyclus hebben op 100 jaar zetten, anders wordt de taak niet aangemaakt
|
|
UPDATE fac_imp_csv
|
|
SET fac_imp_csv_col55 = 100
|
|
WHERE fac_imp_csv_col55 IS NULL;
|
|
|
|
FOR rec IN c
|
|
LOOP
|
|
BEGIN
|
|
v_aanduiding := rec.ins_deel_omschrijving;
|
|
-- zoek het object
|
|
v_errorhint := 'Zoek het object';
|
|
|
|
SELECT ins_deel_key, ins_srtdeel_key
|
|
INTO v_deel_key, v_srtdeel_key
|
|
FROM ins_deel
|
|
WHERE ins_deel_omschrijving = rec.ins_deel_omschrijving;
|
|
|
|
-- zoek de taakcategorie
|
|
v_errorhint := 'Zoek de taakcategorie';
|
|
|
|
CASE
|
|
WHEN UPPER (rec.ins_srtcontroledl_xcp_groep) = '5'
|
|
THEN
|
|
v_taakcat_key := 3382; -- Energie besparende maatregelen
|
|
WHEN UPPER (rec.ins_srtcontroledl_xcp_groep) = '10'
|
|
THEN
|
|
v_taakcat_key := 3381; -- Preventief onderhoud
|
|
WHEN UPPER (rec.ins_srtcontroledl_xcp_groep) = '20'
|
|
THEN
|
|
v_taakcat_key := 1342; -- Vervanging
|
|
WHEN UPPER (rec.ins_srtcontroledl_xcp_groep) = '30'
|
|
THEN
|
|
v_taakcat_key := 1341; -- Correctief onderhoud
|
|
ELSE
|
|
v_taakcat_key := 1341; -- Correctief onderhoud
|
|
END CASE;
|
|
|
|
-- SELECT ins_discipline_key
|
|
-- INTO v_taakcat_key
|
|
-- FROM ctr_discipline
|
|
-- WHERE UPPER (ins_discipline_omschrijving) =
|
|
-- UPPER (rec.ins_kenmerkwaarde3);
|
|
|
|
v_errorhint := 'Bepaal materiaalkosten';
|
|
v_materiaal :=
|
|
FAC.safe_to_number (
|
|
REPLACE (rec.ins_srtcontroledl_xcp_materia, ',', '.'));
|
|
|
|
v_aantal :=
|
|
FAC.safe_to_number (
|
|
REPLACE (rec.ins_srtcontroledl_xcp_aantal, ',', '.'));
|
|
|
|
BEGIN
|
|
v_errorhint := 'Bepaal percentage';
|
|
v_percentage := NULL;
|
|
|
|
-- IF rec.ins_kenmerkwaarde7 <> 1
|
|
-- AND rec.ins_kenmerkwaarde7 IS NOT NULL
|
|
-- THEN
|
|
-- v_percentage := rec.ins_kenmerkwaarde7 * 100;
|
|
-- END IF;
|
|
v_percentage := 100;
|
|
|
|
|
|
-- zoek de taak
|
|
v_errorhint := 'Zoek de taak';
|
|
|
|
SELECT ins_srtcontrole_key,
|
|
ins_srtcontrole_periode,
|
|
ins_srtcontrole_materiaal,
|
|
ins_srtcontrole_percentage
|
|
INTO v_srtcontrole_key,
|
|
v_srtcontrole_periode,
|
|
v_srtcontrole_materiaal,
|
|
v_srtcontrole_percentage
|
|
FROM ins_srtcontrole
|
|
WHERE ins_srtinstallatie_key = v_srtdeel_key
|
|
AND ins_srtcontrole_omschrijving = SUBSTR(rec.ins_srtdeel_code || ' - ' || rec.ins_srtcontrole_omschrijving,1,60)
|
|
AND ins_srtcontrole_niveau = 'S'
|
|
AND ctr_discipline_key = v_taakcat_key;
|
|
EXCEPTION
|
|
WHEN NO_DATA_FOUND
|
|
THEN
|
|
v_errorhint := 'Bepalen level';
|
|
v_srtcontrole_level := 10;
|
|
|
|
|
|
v_errorhint := 'Aanmaken srtcontrole';
|
|
|
|
-- We vullen de controle altijd met een bedrag van 0 euro. De overrule heeft dan het juiste
|
|
-- bedrag. Hiermee voorkomen we een controle met een bepaald bedrag waarbij er voor een bepaald object
|
|
-- die taak niet voorkomt.
|
|
INSERT INTO ins_srtcontrole (ins_srtinstallatie_key,
|
|
ins_srtcontrole_niveau,
|
|
ins_srtcontrole_omschrijving,
|
|
ctr_discipline_key,
|
|
ins_srtcontrole_periode,
|
|
ins_srtcontrole_eenheid,
|
|
ins_srtcontrole_level,
|
|
ins_srtcontrole_materiaal)
|
|
VALUES (
|
|
v_srtdeel_key,
|
|
'S',
|
|
SUBSTR( rec.ins_srtdeel_code || ' - '
|
|
|| rec.ins_srtcontrole_omschrijving,1,60),
|
|
v_taakcat_key,
|
|
0,
|
|
4,
|
|
v_srtcontrole_level,
|
|
0)
|
|
RETURNING ins_srtcontrole_key
|
|
INTO v_srtcontrole_key;
|
|
|
|
END;
|
|
|
|
BEGIN
|
|
SELECT prs_kostenplaats_key
|
|
INTO v_kostenplaats_key
|
|
FROM prs_kostenplaats
|
|
WHERE prs_kostenplaats_nr = rec.prs_kostenplaats_nr;
|
|
EXCEPTION WHEN OTHERS THEN
|
|
v_kostenplaats_key := NULL;
|
|
END;
|
|
|
|
-- dan moeten we een dl_xcp record aanmaken
|
|
v_errorhint := 'Aanmaken xcp ' || rec.ins_deel_omschrijving || ' bedrag: ' || v_materiaal || '#' || v_srtcontrole_key ||'-' || v_deel_key;
|
|
|
|
v_stopdat := NULL;
|
|
v_periode := rec.ins_srtcontrole_periode;
|
|
|
|
IF v_periode = 0
|
|
THEN
|
|
v_stopdat := add_months(rec.ins_srtcontroledl_xcp_startdat, 12);
|
|
v_periode := 1;
|
|
END IF;
|
|
|
|
INSERT INTO ins_srtcontroledl_xcp (
|
|
ins_srtcontrole_key,
|
|
ins_srtcontroledl_xcp_periode,
|
|
ins_srtcontroledl_xcp_materia,
|
|
ins_srtcontroledl_xcp_startdat,
|
|
ins_srtcontroledl_xcp_eind,
|
|
ins_srtcontroledl_xcp_aantal,
|
|
ins_srtcontroledl_xcp_aanteh,
|
|
ins_srtcontroledl_xcp_groep,
|
|
-- prs_kostenplaats_key,
|
|
ins_deel_key)
|
|
VALUES (v_srtcontrole_key,
|
|
v_periode,
|
|
v_materiaal,
|
|
rec.ins_srtcontroledl_xcp_startdat,
|
|
v_stopdat,
|
|
v_aantal,
|
|
rec.ins_srtcontroledl_xcp_aanteh,
|
|
rec.ins_srtcontroledl_xcp_groep,
|
|
-- v_kostenplaats_key,
|
|
v_deel_key)
|
|
RETURNING ins_srtcontroledl_xcp_key
|
|
INTO v_srtcontroledl_xcp_key;
|
|
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 ('ARAI.import MJOB',
|
|
'E',
|
|
v_aanduiding || ': ' || v_errormsg,
|
|
v_errorhint);
|
|
END;
|
|
END LOOP;
|
|
END;
|
|
/
|
|
|
|
------ payload end ------
|
|
|
|
SET DEFINE OFF
|
|
BEGIN adm.systrackscriptId ('$Id$', 1); END;
|
|
/
|
|
|
|
COMMIT;
|
|
SET ECHO OFF
|
|
SPOOL OFF
|
|
SET DEFINE ON
|
|
PROMPT Logfile of this upgrade is: &fcltlogfile |