FZKH#87266 -- Implementatie Import MT assets en inspecties
svn path=/Customer/trunk/; revision=68936
This commit is contained in:
322
FZKH/FZKH.sql
322
FZKH/FZKH.sql
@@ -28,6 +28,180 @@ SET DEFINE OFF
|
||||
|
||||
------ payload begin ------
|
||||
|
||||
CREATE OR REPLACE PROCEDURE FZKH_IMPORT_INSPECTIES(p_import_key IN NUMBER)
|
||||
AS
|
||||
BEGIN
|
||||
fac_import_inspectie(p_import_key);
|
||||
END;
|
||||
/
|
||||
|
||||
CREATE OR REPLACE PROCEDURE FZKH_UPDATE_INSPECTIES(p_import_key IN NUMBER)
|
||||
AS
|
||||
v_errormsg VARCHAR2 (1000);
|
||||
oracle_err_num NUMBER;
|
||||
oracle_err_mes VARCHAR2 (200);
|
||||
header_is_valid NUMBER;
|
||||
v_count_error NUMBER (10);
|
||||
v_count NUMBER (10);
|
||||
v_count_tot NUMBER (10);
|
||||
v_count_import NUMBER (10);
|
||||
v_ongeldig NUMBER (1);
|
||||
v_aanduiding VARCHAR2 (200);
|
||||
v_errorhint VARCHAR2 (1000);
|
||||
|
||||
v_ins_srtinstallatie_key NUMBER (10);
|
||||
v_ins_srtcontrole_niveau VARCHAR (1);
|
||||
|
||||
v_week_bits NUMBER (10);
|
||||
v_maand_bits NUMBER (10);
|
||||
|
||||
v_ctr_ins_discipline_key NUMBER;
|
||||
|
||||
CURSOR c_inspecties
|
||||
IS
|
||||
SELECT * FROM fac_imp_inspectie;
|
||||
-- MAIN
|
||||
BEGIN
|
||||
FOR rec_ins IN c_inspecties
|
||||
LOOP
|
||||
BEGIN
|
||||
v_count_tot := v_count_tot + 1;
|
||||
v_aanduiding :=
|
||||
rec_ins.ins_discipline_omschrijving
|
||||
|| ' - '
|
||||
|| rec_ins.ins_srtgroep_omschrijving
|
||||
|| '-'
|
||||
|| rec_ins.ins_srtdeel_code;
|
||||
v_errorhint := 'Fout bij bepalen discipline';
|
||||
|
||||
IF rec_ins.ins_discipline_omschrijving IS NULL
|
||||
THEN
|
||||
fac.imp_writelog (
|
||||
p_import_key,
|
||||
'E',
|
||||
v_aanduiding,
|
||||
'Discipline mag niet leeg zijn: inspectie wordt niet toegevoegd.');
|
||||
ELSE
|
||||
SELECT ins_discipline_key, 'D'
|
||||
INTO v_ins_srtinstallatie_key, v_ins_srtcontrole_niveau
|
||||
FROM ins_tab_discipline
|
||||
WHERE UPPER (ins_discipline_omschrijving) =
|
||||
UPPER (rec_ins.ins_discipline_omschrijving)
|
||||
AND ins_discipline_module = 'INS'
|
||||
AND ins_discipline_verwijder IS NULL;
|
||||
|
||||
IF rec_ins.ins_srtgroep_omschrijving IS NOT NULL
|
||||
THEN
|
||||
SELECT ins_srtgroep_key, 'G'
|
||||
INTO v_ins_srtinstallatie_key, v_ins_srtcontrole_niveau
|
||||
FROM ins_srtgroep
|
||||
WHERE UPPER (ins_srtgroep_omschrijving) =
|
||||
UPPER (rec_ins.ins_srtgroep_omschrijving)
|
||||
AND ins_srtgroep_module = 'INS'
|
||||
AND ins_srtgroep_verwijder IS NULL
|
||||
AND ins_discipline_key = v_ins_srtinstallatie_key;
|
||||
|
||||
IF rec_ins.ins_srtdeel_code IS NOT NULL
|
||||
THEN
|
||||
SELECT ins_srtdeel_key, 'S'
|
||||
INTO v_ins_srtinstallatie_key, v_ins_srtcontrole_niveau
|
||||
FROM ins_srtdeel
|
||||
WHERE UPPER (ins_srtdeel_code) = UPPER (rec_ins.ins_srtdeel_code)
|
||||
AND ins_srtdeel_module = 'INS'
|
||||
AND ins_srtdeel_verwijder IS NULL
|
||||
AND ins_srtgroep_key = v_ins_srtinstallatie_key;
|
||||
END IF;
|
||||
END IF;
|
||||
|
||||
-- Alleen de gezette bits van de dagen van de week.
|
||||
SELECT COALESCE(BITAND(rec_ins.ins_srtcontrole_bits, 127), 0)
|
||||
INTO v_week_bits
|
||||
FROM DUAL;
|
||||
-- Alleen de gezette bits van de y-ste xxxdag van de maand.
|
||||
SELECT COALESCE(BITAND(rec_ins.ins_srtcontrole_bits, 256 + 512 + 1024) / 256, 0)
|
||||
INTO v_maand_bits
|
||||
FROM DUAL;
|
||||
|
||||
v_aanduiding:='Taak categorie '||rec_ins.ins_srtcontrole_info||' niet gevonden';
|
||||
SELECT ctr_ins_discipline_key
|
||||
INTO v_ctr_ins_discipline_key
|
||||
FROM ctr_disc_params csp,
|
||||
ctr_discipline i
|
||||
WHERE i.ins_discipline_omschrijving=rec_ins.ins_srtcontrole_info
|
||||
AND i.ins_discipline_verwijder IS NULL
|
||||
AND csp.ctr_ins_discipline_key = i.ins_discipline_key
|
||||
AND csp.ctr_disc_params_controle_type=1 ;
|
||||
|
||||
IF rec_ins.ins_srtcontrole_omschrijving IS NOT NULL AND
|
||||
rec_ins.ins_srtcontrole_periode IS NOT NULL AND
|
||||
((rec_ins.ins_srtcontrole_eenheid = 0)
|
||||
OR (rec_ins.ins_srtcontrole_eenheid > 0 AND MOD(rec_ins.ins_srtcontrole_periode, 1) = 0)) AND
|
||||
rec_ins.ins_srtcontrole_eenheid IS NOT NULL AND
|
||||
rec_ins.ins_srtcontrole_mode IS NOT NULL AND
|
||||
(rec_ins.ins_srtcontrole_mode = 1 OR (1=1))
|
||||
THEN
|
||||
INSERT INTO ins_srtcontrole (ins_srtinstallatie_key,
|
||||
ins_srtcontrole_niveau,
|
||||
ins_srtcontrole_omschrijving,
|
||||
ins_srtcontrole_info,
|
||||
ins_srtcontrole_periode,
|
||||
ins_srtcontrole_eenheid,
|
||||
ins_srtcontrole_mode,
|
||||
ins_srtcontrole_bits,
|
||||
ctr_discipline_key
|
||||
)
|
||||
VALUES (v_ins_srtinstallatie_key,
|
||||
v_ins_srtcontrole_niveau,
|
||||
rec_ins.ins_srtcontrole_omschrijving,
|
||||
rec_ins.ins_srtcontrole_info,
|
||||
rec_ins.ins_srtcontrole_periode,
|
||||
rec_ins.ins_srtcontrole_eenheid,
|
||||
rec_ins.ins_srtcontrole_mode,
|
||||
rec_ins.ins_srtcontrole_bits,
|
||||
v_ctr_ins_discipline_key
|
||||
);
|
||||
ELSE
|
||||
IF rec_ins.ins_srtcontrole_mode = 0 AND (v_week_bits = 0 OR v_maand_bits = 0)
|
||||
THEN v_errorhint := 'Het verplichte veld "Moment" is niet (goed) ingevuld: inspectie wordt niet toegevoegd.';
|
||||
ELSIF rec_ins.ins_srtcontrole_eenheid > 0 AND MOD(rec_ins.ins_srtcontrole_periode, 1) > 0
|
||||
THEN v_errorhint := 'Periode moet een geheel getal zijn voor dagelijkse, wekelijkse, maandelijkse en jaarlijkse taken: inspectie wordt niet toegevoegd.';
|
||||
ELSE v_errorhint := '<EFBFBD><EFBFBD>n of meerdere van de verplichte velden "Omschrijving", "Period", "Eenheid" of "Mode" zijn niet ingevuld: inspectie wordt niet toegevoegd.';
|
||||
END IF;
|
||||
fac.imp_writelog (
|
||||
p_import_key,
|
||||
'E',
|
||||
v_aanduiding,
|
||||
v_errorhint);
|
||||
END IF;
|
||||
END IF;
|
||||
EXCEPTION
|
||||
WHEN OTHERS
|
||||
THEN
|
||||
v_count_error := v_count_error + 1;
|
||||
oracle_err_num := SQLCODE;
|
||||
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
|
||||
v_errormsg := 'OTHERS (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
|
||||
fac.imp_writelog (p_import_key,
|
||||
'E',
|
||||
v_aanduiding || v_errormsg,
|
||||
v_errorhint);
|
||||
COMMIT;
|
||||
END;
|
||||
END LOOP;
|
||||
EXCEPTION
|
||||
WHEN OTHERS
|
||||
THEN
|
||||
oracle_err_num := SQLCODE;
|
||||
oracle_err_mes := SUBSTR (SQLERRM, 1, 150);
|
||||
v_errormsg :=
|
||||
v_errormsg || 'ORACLE (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
|
||||
fac.imp_writelog (p_import_key,
|
||||
'E',
|
||||
'Importproces inspecties afgebroken!',
|
||||
v_errormsg);
|
||||
END FZKH_UPDATE_INSPECTIES;
|
||||
/
|
||||
|
||||
CREATE OR REPLACE PROCEDURE FZKH_IMPORT_SLEUTELS (p_import_key IN NUMBER)
|
||||
AS
|
||||
|
||||
@@ -48,7 +222,7 @@ BEGIN
|
||||
SELECT COUNT(*)
|
||||
INTO v_count
|
||||
FROM prs_perslid p
|
||||
WHERE p.prs_perslid_nr = rec.prs_perslid_matchcode
|
||||
WHERE p.prs_perslid_nr = rec.prs_perslid_matchwaarde
|
||||
AND p.prs_perslid_verwijder IS NULL
|
||||
AND ( p.prs_perslid_inactief IS NULL
|
||||
OR p.prs_perslid_inactief > SYSDATE);
|
||||
@@ -277,17 +451,20 @@ AS
|
||||
fac_imp_csv_col34 ins_kenm_type,
|
||||
fac_imp_csv_col35 ins_kenm_serienr,
|
||||
fac_imp_csv_col36 ins_kenm_bouwjaar,
|
||||
fac_imp_csv_col37 ins_kenm_leverancier,
|
||||
fac_imp_csv_col38 ins_kenm_service_leverancier,
|
||||
fac_imp_csv_col38 ins_kenm_leverancier,
|
||||
fac_imp_csv_col40 ins_kenm_service_leverancier,
|
||||
fac_imp_csv_col42 ins_kenm_fabrikant,
|
||||
fac_imp_csv_col43 ins_kenm_mdd_clas,
|
||||
fac_imp_csv_col46 ins_kenm_garantie,
|
||||
fac_imp_csv_col50 ins_kenm_status,
|
||||
fac_imp_csv_col12 ins_kenm_aanschafprijs
|
||||
fac_imp_csv_col12 ins_kenm_aanschafprijs,
|
||||
fac.safe_to_date(fac_imp_csv_col27,'DD-MM-YYYY') ins_kenm_instaldatum,
|
||||
fac_imp_csv_col47 ins_onderhoud_datum
|
||||
FROM fac_imp_csv
|
||||
WHERE fac_import_key=p_import_key
|
||||
ORDER BY fac_imp_csv_key;
|
||||
|
||||
|
||||
|
||||
v_locatie_code VARCHAR2(10);
|
||||
v_gebouw_code VARCHAR2(10);
|
||||
@@ -319,7 +496,7 @@ BEGIN
|
||||
END IF;
|
||||
IF rec.ins_kenm_ruimtenr IS NOT NULL
|
||||
THEN
|
||||
v_huidige_locatie:='Locatie||0='||rec.ins_kenm_ruimtenr||'-'||rec.ins_kenm_ruimtenaam;
|
||||
v_huidige_locatie:='Locatie|0='||rec.ins_kenm_ruimtenr||'-'||rec.ins_kenm_ruimtenaam;
|
||||
ELSE
|
||||
v_huidige_locatie:='';
|
||||
END IF;
|
||||
@@ -329,10 +506,12 @@ BEGIN
|
||||
ins_srtdeel_omschrijving,
|
||||
ins_deel_omschrijving,
|
||||
ins_deel_opmerking,
|
||||
ins_deel_aanmaak,
|
||||
alg_locatie_code,
|
||||
alg_gebouw_code,
|
||||
alg_verdieping_volgnr,
|
||||
alg_ruimte_nr,
|
||||
ins_deel_aantal,
|
||||
ins_kenmerkwaarde1,
|
||||
ins_kenmerkwaarde2,
|
||||
ins_kenmerkwaarde3,
|
||||
@@ -345,17 +524,20 @@ BEGIN
|
||||
ins_kenmerkwaarde10,
|
||||
ins_kenmerkwaarde11,
|
||||
ins_kenmerkwaarde12,
|
||||
ins_kenmerkwaarde13)
|
||||
ins_kenmerkwaarde13,
|
||||
ins_kenmerkwaarde14)
|
||||
VALUES (rec.ins_discipline,
|
||||
rec.ins_groep,
|
||||
SUBSTR(rec.ins_srtdeel_code,1,8),
|
||||
rec.ins_srtdeel_omschrijving,
|
||||
rec.ins_deel_omschrijving,
|
||||
rec.ins_deel_opmerking,
|
||||
rec.ins_kenm_instaldatum,
|
||||
v_locatie_code,
|
||||
v_gebouw_code,
|
||||
v_verdieping_nr,
|
||||
v_ruimte_nr,
|
||||
1,
|
||||
'Eigenaar|0='||rec.ins_kenm_eigenaar,
|
||||
v_huidige_locatie,
|
||||
'Model|0='||rec.ins_kenm_model,
|
||||
@@ -365,10 +547,11 @@ BEGIN
|
||||
'Leverancier|0='||rec.ins_kenm_leverancier,
|
||||
'ServiceLeverancier|0='||rec.ins_kenm_service_leverancier,
|
||||
'Fabrikant|0='||rec.ins_kenm_fabrikant,
|
||||
'MDD-Classificatie|0='||rec.ins_kenm_mdd_clas,
|
||||
'MDD-Classificatie|0='||TRIM(rec.ins_kenm_mdd_clas),
|
||||
'Einde Garantie|0='||rec.ins_kenm_garantie,
|
||||
'Status|0='||rec.ins_kenm_status,
|
||||
'Aanschafprijs|0='||rec.ins_kenm_aanschafprijs
|
||||
'Aanschafprijs|0='||TRIM(rec.ins_kenm_aanschafprijs),
|
||||
'Installatie datum|0='||rec.ins_kenm_instaldatum
|
||||
);
|
||||
END IF;
|
||||
END LOOP;
|
||||
@@ -387,10 +570,39 @@ AS
|
||||
FROM fac_imp_csv
|
||||
WHERE fac_import_key=p_import_key
|
||||
ORDER BY fac_imp_csv_key;
|
||||
|
||||
|
||||
CURSOR sel_controle
|
||||
IS
|
||||
SELECT fac_imp_csv_col08 ins_deel_omschrijving,
|
||||
fac_imp_csv_col48 ctr_onderhoud_datum
|
||||
FROM fac_imp_csv
|
||||
WHERE fac_import_key=p_import_key
|
||||
AND fac_imp_csv_col45='ONWAAR'
|
||||
AND fac_imp_csv_col48 IS NOT NULL
|
||||
AND fac_imp_csv_col50='Actief'
|
||||
ORDER BY fac_imp_csv_key;
|
||||
|
||||
CURSOR sel_controle_skip(p_ins_srtdeel_key IN NUMBER, p_ins_srtcontrole_key IN NUMBER)
|
||||
IS
|
||||
SELECT ins_srtcontrole_key
|
||||
from ins_srtcontrole isc
|
||||
WHERE isc.ins_srtinstallatie_key=p_ins_srtdeel_key
|
||||
AND isc.ins_srtcontrole_key <> p_ins_srtcontrole_key;
|
||||
|
||||
v_errormsg VARCHAR2 (1000) := '-';
|
||||
oracle_err_num NUMBER;
|
||||
oracle_err_mes VARCHAR2 (200);
|
||||
v_aanduiding VARCHAR2 (200);
|
||||
|
||||
v_ins_deel_key NUMBER;
|
||||
v_prs_afdeling_key NUMBER;
|
||||
v_ins_srtdeel_key NUMBER;
|
||||
v_srtcontrole_key NUMBER;
|
||||
v_count NUMBER;
|
||||
|
||||
v_maand VARChar2(15);
|
||||
|
||||
BEGIN
|
||||
fac_update_ins(p_import_key);
|
||||
|
||||
@@ -440,8 +652,100 @@ BEGIN
|
||||
|
||||
END LOOP;
|
||||
|
||||
|
||||
-- gaan we nu de periodiek taken maken en aan de xcp records met de juiste taak start datum
|
||||
FOR c IN sel_controle
|
||||
LOOP
|
||||
-- Welk maand met het onderhoud plaats vinden
|
||||
SELECT CASE TO_CHAR(TO_DATE(c.ctr_onderhoud_datum,'DD-MM-YYYY'),'MM')
|
||||
WHEN '01' THEN 'Januari'
|
||||
WHEN '02' THEN 'Februari'
|
||||
WHEN '03' THEN 'Maart'
|
||||
WHEN '04' THEN 'April'
|
||||
WHEN '05' THEN 'Mei'
|
||||
WHEN '06' THEN 'Juni'
|
||||
WHEN '07' THEN 'Juli'
|
||||
WHEN '08' THEN 'Augustus'
|
||||
WHEN '09' THEN 'September'
|
||||
WHEN '10' THEN 'Oktober'
|
||||
WHEN '11' THEN 'November'
|
||||
WHEN '12' THEN 'December'
|
||||
ELSE 'ONBEKEND'
|
||||
END
|
||||
INTO v_maand
|
||||
FROM DUAL;
|
||||
|
||||
BEGIN
|
||||
v_aanduiding := ' Ophalen van srtcontrole voor object '|| c.ins_deel_omschrijving||' in '||v_maand||' gaat fout.';
|
||||
select isc.ins_srtcontrole_key,
|
||||
i.ins_deel_key,
|
||||
i.ins_srtdeel_key
|
||||
INTO v_srtcontrole_key,
|
||||
v_ins_deel_key,
|
||||
v_ins_srtdeel_key
|
||||
from ins_srtcontrole isc,
|
||||
ins_deel i,
|
||||
ins_srtdeel isd,
|
||||
ins_srtgroep isg,
|
||||
ins_discipline id
|
||||
WHERE i.ins_deel_omschrijving=c.ins_deel_omschrijving
|
||||
AND isd.ins_srtdeel_key=i.INS_SRTDEEL_KEY
|
||||
AND isg.ins_srtgroep_key = isd.ins_srtgroep_key
|
||||
AND id.ins_discipline_key=isg.ins_discipline_key
|
||||
AND UPPER(id.ins_discipline_omschrijving)=UPPER('Medische Techniek')
|
||||
AND isc.ins_srtinstallatie_key=i.ins_srtdeel_key
|
||||
AND UPPER(isc.ins_srtcontrole_omschrijving) like UPPER('Onderhoud %'||v_maand||'%');
|
||||
|
||||
v_aanduiding:='Uitzonderingstaak niet gevonden';
|
||||
v_count:=0;
|
||||
SELECT count(*)
|
||||
INTO v_count
|
||||
from ins_srtcontroledl_xcp isx
|
||||
WHERE isx.ins_srtcontrole_key=v_srtcontrole_key
|
||||
AND ins_deel_key=v_ins_deel_key;
|
||||
|
||||
IF v_count=0
|
||||
THEN
|
||||
INSERT INTO ins_srtcontroledl_xcp (ins_deel_key,
|
||||
ins_srtcontrole_key,
|
||||
ins_srtcontroledl_xcp_startdat)
|
||||
VALUES (v_ins_deel_key,
|
||||
v_srtcontrole_key,
|
||||
fac.safe_to_date(c.ctr_onderhoud_datum,'DD-MM-YYYY'));
|
||||
END IF;
|
||||
|
||||
|
||||
-- Gaan we nu de srtcontrole die niet gelden voor dit asset een xcp record aanmaken met einddatum
|
||||
FOR c2 IN sel_controle_skip(v_ins_srtdeel_key, v_srtcontrole_key)
|
||||
LOOP
|
||||
SELECT count(*)
|
||||
INTO v_count
|
||||
from ins_srtcontroledl_xcp isx
|
||||
WHERE isx.ins_srtcontrole_key=c2.ins_srtcontrole_key
|
||||
AND ins_deel_key=v_ins_deel_key;
|
||||
|
||||
IF v_count=0
|
||||
THEN
|
||||
INSERT INTO ins_srtcontroledl_xcp (ins_deel_key,
|
||||
ins_srtcontrole_key,
|
||||
ins_srtcontroledl_xcp_eind)
|
||||
VALUES (v_ins_deel_key,
|
||||
c2.ins_srtcontrole_key,
|
||||
fac.safe_to_date('31-12-2024','DD-MM-YYYY'));
|
||||
END IF;
|
||||
END LOOP;
|
||||
|
||||
EXCEPTION
|
||||
WHEN NO_DATA_FOUND
|
||||
THEN
|
||||
fac.imp_writelog (p_import_key,
|
||||
'W',
|
||||
v_aanduiding,
|
||||
'Taak niet toegevoegd');
|
||||
|
||||
END;
|
||||
END LOOP;
|
||||
|
||||
|
||||
|
||||
END;
|
||||
/
|
||||
|
||||
Reference in New Issue
Block a user