FZKH#87266 -- Implementatie - TD assets/taken import

svn path=/Customer/trunk/; revision=70123
This commit is contained in:
Norbert Wassink
2025-08-27 11:56:50 +00:00
parent 8fc115a347
commit f38d36904e

View File

@@ -2674,20 +2674,20 @@ AS
SELECT fac_imp_csv_col01 ins_deel_omschrijving,
fac_imp_csv_col02 ins_kenm_intern,
fac_imp_csv_col03 ins_deel_opmerking,
TRIM(SUBSTR(fac_imp_csv_col04,6)) ins_srtdeel_omschrijving,
SUBSTR(fac_imp_csv_col04,1,5) ins_srtdeel_code,
TRIM(SUBSTR(TRIM(fac_imp_csv_col04),6)) ins_srtdeel_omschrijving,
TRIM(SUBSTR(TRIM(fac_imp_csv_col04),1,5)) ins_srtdeel_code,
fac_imp_csv_col05 ins_kenm_locatiecode,
fac_imp_csv_col06 ins_kenm_locatienaam,
fac_imp_csv_col07 ins_kenm_ruimtenr,
fac_imp_csv_col08 ins_kenm_eigncode,
fac_imp_csv_col09 ins_kenm_eignnaam,
fac_imp_csv_col11 ins_groep,
TRIM(fac_imp_csv_col11) ins_groep,
-- fac_imp_csv_col1 ins_verval_datum,
fac_imp_csv_col12 ins_kenm_status,
fac_imp_csv_col12 ins_kenm_status,
fac_imp_csv_col16 ins_kenm_fabrikant,
fac_imp_csv_col17 ins_kenm_ruimtenaam,
fac_imp_csv_col18 ins_kenm_leverancier,
fac_imp_csv_col20 ins_kenm_bouwjaar,
fac_imp_csv_col19 ins_kenm_bouwjaar,
fac_imp_csv_col20 ins_kenm_type,
fac_imp_csv_col21 ins_kenm_model,
fac_imp_csv_col22 ins_kenm_serienr,
@@ -2695,6 +2695,7 @@ AS
fac_imp_csv_col24 ins_kenm_instaldatum,
fac_imp_csv_col25 ins_kenm_mdd_clas,
fac_imp_csv_col26 ins_onderhoud_datum,
fac_imp_csv_col27 ins_onderhoud_datum_laatst,
fac_imp_csv_col32 ins_srtgroep_fb,
fac_imp_csv_col33 ins_kenm_aanschafprijs
FROM fac_imp_csv
@@ -2803,7 +2804,8 @@ BEGIN
ins_kenmerkwaarde11,
ins_kenmerkwaarde12,
ins_kenmerkwaarde13,
ins_kenmerkwaarde14
ins_kenmerkwaarde14,
ins_kenmerkwaarde15
)
VALUES ('Technische Dienst',
v_ins_groep,
@@ -2829,9 +2831,10 @@ BEGIN
'Einde Garantie|0='||rec.ins_kenm_garantie,
'Status|0='||rec.ins_kenm_status,
'Installatie datum|0='||rec.ins_kenm_instaldatum,
'Onderhouddatum|0='||rec.ins_onderhoud_datum,
'Fysieke Locatie|0='||v_huidige_fys_locatie,
'InternNr|0='||rec.ins_kenm_intern
'Onderhouddatum|0='||rec.ins_onderhoud_datum,
'Fysieke Locatie|0='||v_huidige_fys_locatie,
'InternNr|0='||rec.ins_kenm_intern,
'Aanschafprijs|0='||rec.ins_kenm_aanschafprijs
);
ELSE
fac.imp_writelog (p_import_key,
@@ -2851,30 +2854,71 @@ CREATE OR REPLACE PROCEDURE FZKH_UPDATE_TD_ASSETS(p_import_key IN NUMBER)
AS
CURSOR sel
IS
SELECT fac_imp_csv_col01 ins_deel_omschrijving,
SELECT fac_imp_csv_key regel_key,
fac_imp_csv_col01 ins_deel_omschrijving,
fac_imp_csv_col08 prs_afdeling_code
FROM fac_imp_csv
WHERE fac_import_key=p_import_key
AND UPPER(fac_imp_csv_col01) <> 'ULTIMONR'
ORDER BY fac_imp_csv_key;
CURSOR sel_ctr
IS
SELECT fac_imp_csv_key regel_key,
fac_imp_csv_col01 ins_deel_omschrijving,
TRIM(SUBSTR(TRIM(fac_imp_csv_col04),6)) ins_srtdeel_omschrijving,
TRIM(SUBSTR(TRIM(fac_imp_csv_col04),1,5)) ins_srtdeel_code,
fac_imp_csv_col11 ins_groep,
fac_imp_csv_col08 prs_afdeling_code,
fac_imp_csv_col26 ctr_datum_next,
fac_imp_csv_col27 ctr_datum_last
FROM fac_imp_csv
WHERE fac_import_key=p_import_key
AND UPPER(fac_imp_csv_col01) <> 'ULTIMONR'
AND ( fac_imp_csv_col26 IS NOT NULL
OR fac_imp_csv_col27 IS NOT NULL)
ORDER BY fac_imp_csv_key;
v_errormsg VARCHAR2 (1000) := '-';
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
v_aanduiding VARCHAR2 (200);
v_error NUMBER;
v_ins_deel_key NUMBER;
v_prs_afdeling_key NUMBER;
v_ins_srtdeel_key NUMBER;
v_ins_disciplne_key NUMBER;
v_ins_srtgroep_key NUMBER;
v_srtcontrole_key NUMBER;
v_count NUMBER;
v_counter NUMBER;
v_counter_update NUMBER;
v_ins_deelsrtcontrole_key NUMBER;
v_ctr_groep VARCHAR2(20);
v_ctr_omschrijving VARCHAR2(20);
v_ctr_periode NUMBER;
v_ctr_eenheid NUMBER;
v_ctr_mode NUMBER;
v_ctr_onderhoud_datum DATE;
v_ctr_discipline_key NUMBER;
v_jaren NUMBER;
BEGIN
v_counter:=0;
v_counter_update :=0;
-- Objecten verwerken
fac_update_ins(p_import_key);
-- Objcten aan de juite afdeling koppelen
FOR rec IN sel
LOOP
v_aanduiding :='UPDATE AFDELING: Verwerken fout in fac_imp_csv_key '||rec.regel_key;
BEGIN
SELECT ins_deel_key
INTO v_ins_deel_key
@@ -2936,11 +2980,181 @@ BEGIN
END LOOP;
-- Taken aanmaken voor assets
v_error:=0;
BEGIN
SELECT ins_discipline_key
INTO v_ctr_discipline_key
FROM ctr_discipline
WHERE ins_discipline_omschrijving='TD-Onderhoud';
ExCEPTION
WHEN NO_DATA_FOUND THEN
v_error:=1;
END;
IF v_error=0 THEN
v_ctr_omschrijving :='Onderhoud';
v_ctr_periode:=1;
v_ctr_eenheid:=4;
v_ctr_mode:=1;
FOR rec_ctr IN sel_ctr
LOOP
v_aanduiding :='AANMAKEN TAKEN: Verwerken fouut in fac_imp_csv_key '||rec_ctr.regel_key;
BEGIN
v_error:=0;
SELECT ins_srtdeel_key, ins_deel_key
INTo v_ins_srtdeel_key, v_ins_deel_key
FROm ins_v_deel_gegevens
where ins_srtdeel_upper=UPPER(rec_ctr.ins_srtdeel_omschrijving)
AND UPPER(ins_discipline_omschrijving)=UPPER('Technische Dienst')
AND ins_deel_omschrijving=rec_ctr.ins_deel_omschrijving;
EXCEPTION
WHEN NO_DATA_FOUND THEN
v_error:=1;
END;
IF v_error=0
THEN
BEGIN
SELECT MIN(ins_srtcontrole_key)
INTO v_srtcontrole_key
FROM ins_srtcontrole
WHERE ins_srtinstallatie_key=v_ins_srtdeel_key
AND ins_srtcontrole_niveau='S'
AND UPPER(ins_srtcontrole_omschrijving) like UPPER('Onderhoud')
GROUP BY ins_srtcontrole_key;
EXCEPTION
WHEN NO_DATA_FOUND
THEN
INSERT INTO ins_srtcontrole (INS_SRTINSTALLATIE_KEY,
ins_srtcontrole_niveau,
ins_srtcontrole_omschrijving,
ctr_discipline_key,
ins_srtcontrole_info,
ins_srtcontrole_periode,
ins_srtcontrole_eenheid,
ins_srtcontrole_bits,
ins_srtcontrole_mode,
ins_srtcontrole_level)
VALUES (v_ins_srtdeel_key,
'S',
'Onderhoud',
v_ctr_discipline_key,
'TD Onderhoud',
1,
4,
NULL,
1,
10)
RETURN ins_srtcontrole_key
INTO v_srtcontrole_key;
END ;
-- gaan we nu de geplande dtum bepalen
--
IF rec_ctr.ctr_datum_next IS NULL
THEN
v_ctr_onderhoud_datum := TO_DATE(rec_ctr.ctr_datum_last,'DD-MM-YYYY');
ELSE
v_ctr_onderhoud_datum := TO_DATE(rec_ctr.ctr_datum_next,'DD-MM-YYYY');
END IF;
IF v_ctr_onderhoud_datum < TO_DATE('10-2025','MM-YYYY')
THEN
IF TO_CHAR(v_ctr_onderhoud_datum,'MM')='11' OR TO_CHAR(v_ctr_onderhoud_datum,'MM')='12'
THEN
v_jaren := 2025-fac.safe_to_number(TO_CHAR(v_ctr_onderhoud_datum,'YYYY'));
ELSE
v_jaren := 2025-fac.safe_to_number(TO_CHAR(v_ctr_onderhoud_datum,'YYYY'))+1;
END IF;
IF v_jaren>0 THEN
v_ctr_onderhoud_datum := ADD_MONTHS(v_ctr_onderhoud_datum,12*v_jaren);
END IF;
ELSIF v_ctr_onderhoud_datum = TO_DATE('10-2025','MM-YYYY')
THEN
v_ctr_onderhoud_datum := ADD_MONTHS(v_ctr_onderhoud_datum,1);
END IF;
SELECT COUNT(*)
INTO v_count
FROM ins_deelsrtcontrole
WHERE ins_deel_key=v_ins_deel_key
AND ins_srtcontrole_key = v_srtcontrole_key
-- AND ins_deelsrtcontrole_plandatum = fac.safe_to_date(c.ctr_onderhoud_datum,'DD-MM-YYYY')
AND ins_scenario_key=1;
IF v_count=0
THEN
INSERT INTO ins_deelsrtcontrole( ins_deel_key,
ins_srtcontrole_key,
ins_deelsrtcontrole_plandatum,
ins_deelsrtcontrole_status,
ins_scenario_key,
prs_perslid_key)
VALUES(v_ins_deel_key,
v_srtcontrole_key,
v_ctr_onderhoud_datum,
0, --status ingepland
1, -- sceario
3); -- Facilitor
v_counter:=v_counter+1;
ELSIF v_count=1
THEN
UPDATE ins_deelsrtcontrole
SET ins_deelsrtcontrole_plandatum= v_ctr_onderhoud_datum
WHERE ins_deel_key =v_ins_deel_key
AND ins_srtcontrole_key=v_srtcontrole_key;
v_counter_update:=v_counter_update+1;
END IF;
ELSE
fac.imp_writelog (p_import_key,'W',
'Asset '||rec_ctr.ins_srtdeel_omschrijving||' niet kunnen achterhalen, taak aanmaken op datum '||TO_CHAR(v_ctr_onderhoud_datum,'DD-MM-YYYY')||' wordt overgeslagen',
'Taak overgeslagen');
END IF;
END LOOP;
ELSE
fac.imp_writelog (p_import_key,
'E',
'Taak groep : TD-Onderhoud is niet bekend en aanmaken taken wordt dus overgeslagen','');
END IF;
fac.imp_writelog (p_import_key,
'I',
'Taak aanmaak : Er zijn '||v_counter||' taken aangemaakt','');
fac.imp_writelog (p_import_key,
'I',
'Taak update : Er zijn '||v_counter_update ||' taken geupdate','');
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 TD assets afgebroken! ('||v_aanduiding||')',
v_errormsg);
END;
/
CREATE OR REPLACE PROCEDURE FZKH_IMPORT_MT_ASSETS(p_import_key IN NUMBER)
AS
CURSOR sel
@@ -3932,6 +4146,59 @@ AS
AND km.mld_kenmerkmelding_aanmaak > COALESCE (nj.fac_notificatie_job_lastrun, TRUNC (SYSDATE))
;
CREATE OR REPLACE VIEW FZKH_V_NOTI_MT_AFM
(
code,
sender,
receiver,
text,
key,
par1,
par2,
xkey,
xemail,
xmobile,
fac_srtnotificatie_key,
attachments,
xsender,
prs_bedrijfadres_key
)
AS
SELECT sn.fac_srtnotificatie_code code,
NULL sender,
NULL receiver,
'Asset '||iv.ins_deel_omschrijving||' ('||iv.ins_deel_opmerking||') is vrijgegeven' text,
m.mld_melding_key key,
NULL par1,
NULL par2,
iv.ins_deel_key xkey,
(SELECT (MAX(p.prs_perslid_email)||';medischetechniek@flevoziekenhuis.nl')
FROM prs_perslid p, prs_afdeling pa
WHERE UPPER(pa.prs_afdeling_omschrijving) = UPPER('T-' || COALESCE (iv.prs_afdeling_omschrijving, iv.alg_ruimte_nr))
AND p.prs_afdeling_key = pa.prs_afdeling_key
AND pa.prs_afdeling_verwijder IS NULL
AND p.prs_perslid_verwijder IS NULL) xemail,
NULL xmobile,
NULL fac_srtnotificatie_key,
NULL attachments,
NULL xsender,
NULL prs_bedrijfadres_key
FROM mld_melding m,
fac_tracking ft,
mld_melding_object mmo,
ins_v_deel_gegevens iv,
fac_srtnotificatie sn,
FAC_NOTIFICATIE_JOB fnj
WHERE m.mld_stdmelding_key=501 --- A=501
AND m.mld_melding_status=5
AND mmo.mld_melding_key=m.mld_melding_key
AND iv.ins_deel_key = mmo.ins_deel_key
AND ft.fac_tracking_refkey=m.mld_melding_key
AND ft.fac_srtnotificatie_key=47
AND sn.fac_srtnotificatie_code = 'CUST09'
AND fnj.FAC_NOTIFICATIE_JOB_VIEW='FZKH_V_NOTI_MT_AFM'
AND ft.FAC_TRACKING_DATUM> COALESCE (fnj.fac_notificatie_job_lastrun, TRUNC (SYSDATE));
-- Object overzicjt per afdefling
CREATE OR REPLACE VIEW FZKH_V_MT_OBJECT_AFDELING
@@ -3978,11 +4245,11 @@ CREATE OR REPLACE VIEW FZKH_V_MT_NEXT_OBJECTNR
ins_deel_omschrijving
)
AS
SELECT MAX(i.ins_deel_omschrijving) +1
SELECT MAX(i.ins_deel_omschrijving)+1
FROM ins_v_deel_gegevens i
WHERE fac.safe_to_number(i.ins_deel_omschrijving) IS NOT NULL
AND SUBSTR(I.ins_deel_omschrijving,1,2)=TO_CHAR(SYSDATE,'YY')
and UPPER(i.ins_discipline_omschrijving)='MEDISCHE TECHNIEK';
AND i.ins_discipline_key IN (281, 641); -- 281='MEDISCHE TECHNIEK', 641=Technische Dienst