APGR#60608 -- Views en exports voor ESIS koppeling
svn path=/Customer/trunk/; revision=45290
This commit is contained in:
426
APGR/apgr.sql
426
APGR/apgr.sql
@@ -406,6 +406,268 @@ BEGIN
|
||||
END;
|
||||
/
|
||||
|
||||
-- Import van statusupdates en kosten uit ESIS voor opdrachten van Explora EST
|
||||
CREATE OR REPLACE PROCEDURE apgr_import_esis (p_import_key IN NUMBER)
|
||||
AS
|
||||
c_delim VARCHAR2 (1) := ';';
|
||||
v_newline VARCHAR2 (1000); -- Input line
|
||||
v_errormsg VARCHAR2 (1000);
|
||||
oracle_err_num NUMBER;
|
||||
oracle_err_mes VARCHAR2 (200);
|
||||
v_aanduiding VARCHAR2 (200);
|
||||
header_is_valid NUMBER := 0;
|
||||
v_count_tot NUMBER (10) := 0;
|
||||
v_count_import NUMBER (10) := 0;
|
||||
v_ongeldig NUMBER (1) := 0;
|
||||
-- De importvelden
|
||||
v_opdrachtnummer VARCHAR2 (255);
|
||||
v_status VARCHAR2 (255);
|
||||
v_updatedatum VARCHAR2 (255);
|
||||
v_kosten NUMBER (10);
|
||||
|
||||
|
||||
CURSOR c1
|
||||
IS
|
||||
SELECT *
|
||||
FROM fac_imp_file
|
||||
WHERE fac_import_key = p_import_key
|
||||
ORDER BY fac_imp_file_index;
|
||||
BEGIN
|
||||
|
||||
-- Eerst de importtable leeg maken.
|
||||
DELETE FROM apgr_imp_esis
|
||||
WHERE imp_log_run <> p_import_key;
|
||||
|
||||
COMMIT;
|
||||
|
||||
FOR rec1 IN c1
|
||||
LOOP
|
||||
BEGIN
|
||||
v_newline := rec1.fac_imp_file_line;
|
||||
v_errormsg := 'Fout opvragen te importeren regel';
|
||||
v_aanduiding := '';
|
||||
v_ongeldig := 0;
|
||||
|
||||
-- Lees alle veldwaarden
|
||||
fac.imp_getfield (v_newline, c_delim, v_opdrachtnummer);
|
||||
fac.imp_getfield (v_newline, c_delim, v_status);
|
||||
fac.imp_getfield (v_newline, c_delim, v_updatedatum);
|
||||
fac.imp_getfield (v_newline, c_delim, v_updatedatum);
|
||||
v_aanduiding :=
|
||||
'['
|
||||
|| v_opdrachtnummer
|
||||
|| '|'
|
||||
|| v_status
|
||||
|| '|'
|
||||
|| v_updatedatum
|
||||
|| '] ';
|
||||
|
||||
-- Ik controleer of ik een geldige header heb, dat is: in de juiste kolommen
|
||||
-- de juiste kolomkop. Ik controleer daarbij ALLE kolommen!
|
||||
-- Ik negeer alles totdat ik een geldige header ben gepasseerd.
|
||||
IF (header_is_valid = 0)
|
||||
THEN
|
||||
IF UPPER (TRIM (v_opdrachtnummer)) = 'OPDRACHTNUMMER'
|
||||
AND UPPER (TRIM (v_status)) = 'STATUS'
|
||||
AND UPPER (TRIM (v_updatedatum)) = 'UPDATEDATUM'
|
||||
AND UPPER (TRIM (v_kosten)) = 'KOSTEN'
|
||||
THEN
|
||||
header_is_valid := 1;
|
||||
END IF;
|
||||
ELSE
|
||||
v_count_tot := v_count_tot + 1;
|
||||
-- Controleer alle veldwaarden
|
||||
v_errormsg := 'Fout inlezen ticketnumber';
|
||||
v_opdrachtnummer := TRIM (v_opdrachtnummer);
|
||||
|
||||
IF (v_opdrachtnummer IS NULL)
|
||||
THEN
|
||||
fac.imp_writelog (
|
||||
p_import_key, 'W', v_aanduiding || v_errormsg,
|
||||
'Opdrachtnummer ongeldig; regel wordt overgeslagen!');
|
||||
v_ongeldig := 1;
|
||||
END IF;
|
||||
|
||||
--
|
||||
|
||||
v_errormsg := 'Fout inlezen updatedatum';
|
||||
v_updatedatum := TRIM (v_updatedatum);
|
||||
|
||||
IF (fac.safe_to_date (v_updatedatum, 'dd-mm-yyyy hh24:mi:ss') IS NULL)
|
||||
THEN
|
||||
fac.imp_writelog (
|
||||
p_import_key, 'W', v_aanduiding || v_errormsg,
|
||||
'Updatedatum ongeldig; regel wordt overgeslagen!');
|
||||
v_ongeldig := 1;
|
||||
END IF;
|
||||
|
||||
-- Insert geformatteerde import record
|
||||
IF (v_ongeldig = 0)
|
||||
THEN
|
||||
BEGIN
|
||||
v_errormsg := 'Fout bij wegschrijven importregel';
|
||||
|
||||
INSERT INTO apgr_imp_esis (imp_log_run,
|
||||
opdrachtnummer,
|
||||
status,
|
||||
updatedatum,
|
||||
kosten)
|
||||
VALUES (p_import_key,
|
||||
v_opdrachtnummer,
|
||||
v_status,
|
||||
fac.safe_to_date (v_updatedatum, 'dd-mm-yyyy hh24:mi:ss'),
|
||||
v_kosten);
|
||||
|
||||
v_count_import := v_count_import + 1;
|
||||
EXCEPTION
|
||||
WHEN OTHERS
|
||||
THEN
|
||||
oracle_err_num := SQLCODE;
|
||||
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
|
||||
v_errormsg :=
|
||||
v_errormsg
|
||||
|| ' ORACLE (error '
|
||||
|| oracle_err_num
|
||||
|| '/'
|
||||
|| oracle_err_mes
|
||||
|| ')';
|
||||
fac.imp_writelog (p_import_key, 'E', v_aanduiding || v_errormsg, '');
|
||||
END;
|
||||
END IF;
|
||||
END IF;
|
||||
END;
|
||||
END LOOP;
|
||||
|
||||
IF (header_is_valid = 0)
|
||||
THEN
|
||||
fac.imp_writelog (p_import_key, 'E',
|
||||
'Ongeldig importbestand',
|
||||
'Geen header of header niet volgens specificatie!');
|
||||
ELSE
|
||||
fac.imp_writelog (
|
||||
p_import_key, 'S',
|
||||
'Inleesproces/#ingelezen importregels: ' || TO_CHAR (v_count_tot),
|
||||
'');
|
||||
fac.imp_writelog (
|
||||
p_import_key, 'S',
|
||||
'Inleesproces/#ongeldige niet ingelezen importregels: '
|
||||
|| TO_CHAR (v_count_tot - v_count_import),
|
||||
'');
|
||||
END IF;
|
||||
|
||||
DELETE FROM fac_imp_file
|
||||
WHERE fac_import_key = p_import_key;
|
||||
|
||||
COMMIT;
|
||||
EXCEPTION
|
||||
WHEN OTHERS
|
||||
THEN
|
||||
oracle_err_num := SQLCODE;
|
||||
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
|
||||
v_errormsg :=
|
||||
v_errormsg
|
||||
|| 'ORACLE (error '
|
||||
|| oracle_err_num
|
||||
|| '/'
|
||||
|| oracle_err_mes
|
||||
|| ')';
|
||||
fac.imp_writelog (p_import_key, 'E', v_aanduiding || v_errormsg,
|
||||
'Inleesproces updates uit ESIS afgebroken!');
|
||||
END;
|
||||
/
|
||||
|
||||
CREATE OR REPLACE PROCEDURE apgr_update_esis (p_import_key IN NUMBER)
|
||||
AS
|
||||
-- Cursor loopt over alle ingelezen updateregels uit ESIS
|
||||
CURSOR c1
|
||||
IS
|
||||
SELECT opdrachtnummer, -- Opdrachtnummer met of zonder prefix
|
||||
DECODE (fac.safe_to_number (SUBSTR (opdrachtnummer, 1, 1)),
|
||||
NULL, TRIM (SUBSTR (opdrachtnummer, 2)),
|
||||
opdrachtnummer)
|
||||
opdr_id,
|
||||
status,
|
||||
updatedatum,
|
||||
kosten
|
||||
FROM apgr_imp_esis
|
||||
WHERE imp_log_run = p_import_key
|
||||
ORDER BY 4, 2;
|
||||
|
||||
v_errormsg VARCHAR2 (1000);
|
||||
oracle_err_num NUMBER;
|
||||
oracle_err_mes VARCHAR2 (200);
|
||||
v_aanduiding VARCHAR2 (200);
|
||||
v_count_tot NUMBER (10);
|
||||
v_mld_key NUMBER (10);
|
||||
v_opdr_key NUMBER (10);
|
||||
v_opdr_status NUMBER (10);
|
||||
BEGIN
|
||||
-- Loop door alle ingelezen updateregels uit ESIS en verwerk deze.
|
||||
v_count_tot := 0;
|
||||
|
||||
FOR rec IN c1
|
||||
LOOP
|
||||
BEGIN
|
||||
v_aanduiding := '[' || rec.opdrachtnummer || ']';
|
||||
v_count_tot := v_count_tot + 1;
|
||||
v_mld_key := -1;
|
||||
v_opdr_key := -1;
|
||||
|
||||
v_errormsg := 'Fout bepalen opdracht.';
|
||||
|
||||
SELECT o.mld_melding_key, o.mld_opdr_key, so.mld_statusopdr_key
|
||||
INTO v_mld_key, v_opdr_key, v_opdr_status
|
||||
FROM mld_opdr o, mld_statusopdr so
|
||||
WHERE o.mld_melding_key || '/' || o.mld_opdr_bedrijfopdr_volgnr = rec.opdr_id
|
||||
AND UPPER (so.mld_statusopdr_omschrijving) = UPPER (rec.status);
|
||||
|
||||
-- Alleen iets doen als melding/opdracht succesvol is bepaald.
|
||||
IF (v_mld_key > 0 AND v_opdr_key > 0)
|
||||
THEN
|
||||
-- Als er kosten zijn dan voeren we die op.
|
||||
IF (rec.kosten IS NOT NULL)
|
||||
THEN
|
||||
v_errormsg := 'Fout bijwerken kosten.';
|
||||
|
||||
UPDATE mld_opdr
|
||||
SET mld_opdr_kosten = rec.kosten
|
||||
WHERE mld_opdr_key = v_opdr_key;
|
||||
|
||||
END IF;
|
||||
|
||||
-- Update opdrachtstatus
|
||||
v_errormsg := 'Fout verwerken opdrachtstatus.';
|
||||
|
||||
MLD.setopdrachtstatus (v_opdr_key, v_opdr_status, NULL);
|
||||
|
||||
COMMIT;
|
||||
END IF;
|
||||
EXCEPTION
|
||||
WHEN OTHERS
|
||||
THEN
|
||||
oracle_err_num := SQLCODE;
|
||||
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
|
||||
v_errormsg :=
|
||||
v_errormsg
|
||||
|| ' ORACLE (error '
|
||||
|| oracle_err_num
|
||||
|| '/'
|
||||
|| oracle_err_mes
|
||||
|| ')';
|
||||
fac.imp_writelog (p_import_key, 'E', v_aanduiding || v_errormsg,
|
||||
'Fout verwerken opdrachtupdates uit ESIS.');
|
||||
END;
|
||||
END LOOP;
|
||||
|
||||
fac.imp_writelog (
|
||||
p_import_key, 'S',
|
||||
'Proces: '
|
||||
|| TO_CHAR (v_count_tot)
|
||||
|| ' opdrachtupdates uit ESIS verwerkt.',
|
||||
'');
|
||||
COMMIT;
|
||||
END;
|
||||
/
|
||||
-- Vanaf hier rapportages
|
||||
|
||||
-- Deze voegt de FCLT_3D_GEBOUW_KEY toe aan de meldingen UDR
|
||||
@@ -1850,6 +2112,170 @@ AS
|
||||
UNION ALL
|
||||
SELECT '</PurchaseOrderCollection>', 3 FROM DUAL;
|
||||
|
||||
-- Views t.b.v. koppeling met EST ESIS
|
||||
CREATE OR REPLACE VIEW apgr_v_rap_opdrest
|
||||
(
|
||||
opdr_key,
|
||||
vestiging_id,
|
||||
machine_code,
|
||||
onderwerp,
|
||||
omschrijving,
|
||||
melder,
|
||||
melder_mobiel,
|
||||
opdrachtnummer,
|
||||
opdrachtdatum
|
||||
)
|
||||
AS
|
||||
SELECT o.mld_opdr_key,
|
||||
(SELECT ak.alg_onrgoedkenmerk_waarde
|
||||
FROM alg_onrgoedkenmerk ak
|
||||
WHERE ak.alg_kenmerk_key = 1000
|
||||
AND ak.alg_onrgoed_key = og.alg_gebouw_key)
|
||||
vestiging_id,
|
||||
(SELECT ins_kenmerkdeel_waarde
|
||||
FROM ins_kenmerkdeel
|
||||
WHERE ins_deel_key = ob.ins_deel_key AND ins_kenmerk_key = 32)
|
||||
|| ' / ' ||
|
||||
(SELECT ins_kenmerkdeel_waarde
|
||||
FROM ins_kenmerkdeel
|
||||
WHERE ins_deel_key = ob.ins_deel_key AND ins_kenmerk_key = 31)
|
||||
machine_code,
|
||||
o.mld_opdr_omschrijving,
|
||||
o.mld_opdr_opmerking,
|
||||
(SELECT prs_perslid_naam_full
|
||||
FROM prs_v_perslid_fullnames_all pf
|
||||
WHERE pf.prs_perslid_key = m.prs_perslid_key)
|
||||
melder,
|
||||
(SELECT p.prs_perslid_mobiel
|
||||
FROM prs_perslid p
|
||||
WHERE p.prs_perslid_key = m.prs_perslid_key)
|
||||
mobiel,
|
||||
i.ins_srtdiscipline_prefix
|
||||
|| TO_CHAR (m.mld_melding_key)
|
||||
|| '/'
|
||||
|| o.mld_opdr_bedrijfopdr_volgnr
|
||||
opdrnr,
|
||||
o.mld_opdr_datumbegin
|
||||
FROM mld_opdr o,
|
||||
mld_melding m,
|
||||
mld_stdmelding std,
|
||||
prs_bedrijf b,
|
||||
ins_srtdiscipline i,
|
||||
mld_discipline md,
|
||||
alg_locatie al,
|
||||
ins_deel ob,
|
||||
mld_melding_object mmo,
|
||||
alg_v_allonrgoed_gegevens og,
|
||||
( SELECT MAX (fac_tracking_refkey) key,
|
||||
MAX (fac_tracking_datum) datum
|
||||
FROM fac_tracking
|
||||
WHERE fac_srtnotificatie_key = 70 -- Toegekend (nog voor ORDVER)
|
||||
GROUP BY fac_tracking_refkey) track
|
||||
WHERE o.mld_melding_key = m.mld_melding_key(+)
|
||||
AND m.mld_melding_key = mmo.mld_melding_key(+)
|
||||
AND ob.ins_deel_key = mmo.ins_deel_key
|
||||
AND m.mld_stdmelding_key = std.mld_stdmelding_key
|
||||
AND std.mld_ins_discipline_key = md.ins_discipline_key
|
||||
AND md.ins_srtdiscipline_key = i.ins_srtdiscipline_key
|
||||
AND o.mld_uitvoerende_keys = b.prs_bedrijf_key
|
||||
AND m.mld_alg_locatie_key = al.alg_locatie_key
|
||||
AND m.mld_alg_onroerendgoed_keys = og.alg_onroerendgoed_keys
|
||||
AND b.prs_bedrijf_key = 525 -- Explora EST
|
||||
AND o.mld_opdr_key = track.key
|
||||
AND track.datum > SYSDATE - INTERVAL '15' MINUTE;
|
||||
|
||||
CREATE OR REPLACE VIEW apgr_v_export_est_xml
|
||||
(
|
||||
result,
|
||||
result_order,
|
||||
ticket
|
||||
)
|
||||
AS
|
||||
SELECT '<esisexplora_explora xmlns:tabel="ticket">',
|
||||
0,
|
||||
'910051_'
|
||||
|| TO_CHAR (SYSDATE, 'YY-MM-DD HH24MI')
|
||||
|| ' '
|
||||
|| o.opdr_key
|
||||
FROM apgr_v_rap_opdrest o
|
||||
UNION ALL
|
||||
SELECT '<ticket>'
|
||||
|| '<sync_key>d5640150-3f58-11e9-af79-080027f683cc</sync_key>'
|
||||
|| '<ticket_origin>3</ticket_origin>'
|
||||
|| '<ticket_soort>0</ticket_soort>'
|
||||
|| '<ticket_type>0</ticket_type>'
|
||||
|| '<ticket_status>0</ticket_status>'
|
||||
|| '<klanten_id>'
|
||||
|| o.vestiging_id
|
||||
|| '</klanten_id>'
|
||||
|| '<machiene_klanten_referentie>'
|
||||
|| o.machine_code
|
||||
|| '</machiene_klanten_referentie>'
|
||||
|| '<ticket_melding>'
|
||||
|| o.onderwerp
|
||||
|| '. '
|
||||
|| o.omschrijving
|
||||
|| '</ticket_melding>'
|
||||
|| '<ticket_contactpersoon>'
|
||||
|| o.melder
|
||||
|| '</ticket_contactpersoon>'
|
||||
|| '<ticket_telefoonnummer>'
|
||||
|| o.melder_mobiel
|
||||
|| '</ticket_telefoonnummer>'
|
||||
|| '<ticket_opdrachtnummer>'
|
||||
|| o.opdrachtnummer
|
||||
|| '</ticket_opdrachtnummer>'
|
||||
|| '<ticket_datum>'
|
||||
|| o.opdrachtdatum
|
||||
|| '</ticket_datum>'
|
||||
|| '</ticket>',
|
||||
1,
|
||||
'910051_'
|
||||
|| TO_CHAR (SYSDATE, 'YY-MM-DD HH24MI')
|
||||
|| ' '
|
||||
|| o.opdr_key
|
||||
FROM apgr_v_rap_opdrest o
|
||||
UNION ALL
|
||||
SELECT '</esisexplora_explora>',
|
||||
2,
|
||||
'910051_'
|
||||
|| TO_CHAR (SYSDATE, 'YY-MM-DD HH24MI')
|
||||
|| ' '
|
||||
|| o.opdr_key
|
||||
FROM apgr_v_rap_opdrest o;
|
||||
|
||||
-- Procedure voor het inserten van tracking bij versturen XML naar ESIS.
|
||||
CREATE OR REPLACE PROCEDURE apgr_export_esis
|
||||
AS
|
||||
CURSOR c1
|
||||
IS
|
||||
SELECT opdr_key,
|
||||
vestiging_id,
|
||||
machine_code,
|
||||
onderwerp,
|
||||
omschrijving,
|
||||
melder,
|
||||
melder_mobiel,
|
||||
opdrachtnummer,
|
||||
opdrachtdatum
|
||||
FROM apgr_v_rap_opdrest;
|
||||
BEGIN
|
||||
FOR rec IN c1
|
||||
LOOP
|
||||
INSERT INTO fac_tracking (fac_tracking_datum,
|
||||
fac_srtnotificatie_key,
|
||||
fac_tracking_refkey,
|
||||
fac_tracking_oms,
|
||||
prs_perslid_key)
|
||||
VALUES (SYSDATE,
|
||||
85,
|
||||
rec.opdr_key,
|
||||
'Opdracht verzonden via koppeling ESIS.',
|
||||
3);
|
||||
END LOOP;
|
||||
END;
|
||||
/
|
||||
|
||||
-- En nu de CUST notificaties
|
||||
|
||||
-- Mail naar geselecteerd directielid voor nieuwe medewerker
|
||||
|
||||
Reference in New Issue
Block a user