-- -- $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