AASA#38660 -- Afhandeling niet aanpassen in melding
svn path=/Customer/trunk/; revision=31983
This commit is contained in:
726
AA/AASA/aasa.sql
726
AA/AASA/aasa.sql
@@ -1,14 +1,21 @@
|
||||
-- Script containing customer specific configuration sql statements for AASA: Arcadis Aqumen Facility Management for Sabic
|
||||
-- (c) 2005-2007 Dijkoraad IT bv
|
||||
-- $Revision$
|
||||
--
|
||||
-- $Id$
|
||||
--
|
||||
-- Support: +31 53 4800700
|
||||
-- Script containing customer specific configuration sql statements for AASA: Arcadis Aqumen Facility Management for Sabic
|
||||
|
||||
@aaxx.sql;
|
||||
DEFINE thisfile = 'AASA.SQL'
|
||||
DEFINE dbuser = '^AASA'
|
||||
|
||||
SPOOL xaasa.lst
|
||||
SET ECHO ON
|
||||
SET DEFINE ON
|
||||
COLUMN fcltlogfile NEW_VALUE fcltlogfile NOPRINT;
|
||||
WHENEVER SQLERROR EXIT;
|
||||
SELECT adm.scriptspoolfile('&dbuser', '&thisfile') AS fcltlogfile FROM DUAL;
|
||||
WHENEVER SQLERROR CONTINUE;
|
||||
SPOOL &fcltlogfile
|
||||
SET DEFINE OFF
|
||||
|
||||
------ payload begin ------
|
||||
|
||||
-- script om dagelijks terugkerende scripts aan te roepen.
|
||||
CREATE OR REPLACE PROCEDURE aasa_select_daily_task (p_applname IN VARCHAR2, p_applrun IN VARCHAR2)
|
||||
@@ -743,15 +750,716 @@ AS
|
||||
'yyyymmdd hh24')
|
||||
AND m.mld_melding_status = 2;
|
||||
|
||||
BEGIN adm.systrackscriptId('$Id$', 0); END;
|
||||
|
||||
-- !!!!!!!!!!!!!!!!!!
|
||||
-- Controleer de wijzigingen die in de aaxx gemaakt zijn. (Afsplitsing dateert van 6 maart 2015)
|
||||
-- !!!!!!!!!!!!!!!!!!!!
|
||||
CREATE OR REPLACE PROCEDURE aasa_import_opdrstat_strukton (
|
||||
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 (1200);
|
||||
v_dummy VARCHAR2 (200);
|
||||
header_is_valid NUMBER := 0;
|
||||
v_count NUMBER;
|
||||
v_count_tot NUMBER (10) := 0;
|
||||
v_count_import NUMBER (10) := 0;
|
||||
v_ongeldig NUMBER (1) := 0;
|
||||
-- De importvelden
|
||||
v_mld_opdr_opmerking VARCHAR2 (4000);
|
||||
v_mld_opdr_key NUMBER (10);
|
||||
v_mld_opdr_key_tekst VARCHAR2 (100);
|
||||
v_extern_nummer VARCHAR2 (100);
|
||||
v_status NUMBER (10);
|
||||
v_status_tekst VARCHAR2 (100);
|
||||
v_status_code VARCHAR2 (100);
|
||||
v_datumtijd DATE;
|
||||
v_datumtijd_tekst VARCHAR2 (100);
|
||||
v_opmerking VARCHAR2 (3000);
|
||||
v_totaal NUMBER (8,2);
|
||||
v_totaal_str VARCHAR2 (100);
|
||||
|
||||
-- Overige velden:
|
||||
CURSOR c1
|
||||
IS
|
||||
SELECT *
|
||||
FROM fac_imp_file
|
||||
WHERE fac_import_key = p_import_key
|
||||
ORDER BY fac_imp_file_index;
|
||||
BEGIN
|
||||
-- Eerst opruiming
|
||||
DELETE FROM aaxx_imp_opdrstat_strukton;
|
||||
|
||||
COMMIT;
|
||||
|
||||
FOR rec1 IN c1
|
||||
LOOP
|
||||
BEGIN
|
||||
v_newline := rec1.fac_imp_file_line;
|
||||
v_errormsg := 'Fout opvragen te importeren rij';
|
||||
v_aanduiding := '';
|
||||
v_ongeldig := 0;
|
||||
|
||||
fac.imp_getfield (v_newline, c_delim, v_mld_opdr_key_tekst);
|
||||
fac.imp_getfield (v_newline, c_delim, v_extern_nummer);
|
||||
fac.imp_getfield (v_newline, c_delim, v_status_code); -- typeID
|
||||
fac.imp_getfield (v_newline, c_delim, v_datumtijd_tekst);
|
||||
fac.imp_getfield (v_newline, c_delim, v_status_tekst);
|
||||
fac.imp_getfield (v_newline, c_delim, v_opmerking);
|
||||
fac.imp_getfield (v_newline, c_delim, v_totaal_str);
|
||||
v_totaal := fac.safe_to_number(v_totaal_str);
|
||||
|
||||
fac.imp_writelog (p_import_key, 'I', 'v_totaal_str:' || v_totaal_str || ' v_totaal:' || v_totaal || ' fac.safe_to_number(v_totaal_str):' || fac.safe_to_number(v_totaal_str),'');
|
||||
|
||||
v_opmerking := substr(v_opmerking, 1, 1000);
|
||||
-- verwijder de markering voor cr/lf die we zelf in de stylesheet toegevoegd hebben.
|
||||
v_opmerking := replace(v_opmerking, '@@',CHR (13) || CHR (10));
|
||||
v_aanduiding :=
|
||||
'['
|
||||
|| v_extern_nummer
|
||||
|| '|'
|
||||
|| v_mld_opdr_key_tekst
|
||||
|| '|'
|
||||
|| v_status_tekst
|
||||
|| '|'
|
||||
|| v_opmerking
|
||||
|| '] ';
|
||||
|
||||
-- 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_mld_opdr_key_tekst)) = 'REFERENCEID'
|
||||
AND UPPER (TRIM (v_extern_nummer)) = 'SERVICEREQUESTID'
|
||||
AND UPPER (TRIM (v_status_code)) = 'TYPEID'
|
||||
AND UPPER (TRIM (v_datumtijd_tekst)) = 'DATETIME'
|
||||
AND UPPER (TRIM (v_opmerking)) = 'REMARKS'
|
||||
AND UPPER (TRIM (v_totaal_str)) = 'TOTAL'
|
||||
THEN
|
||||
header_is_valid := 1;
|
||||
END IF;
|
||||
ELSE
|
||||
v_count_tot := v_count_tot + 1;
|
||||
-- Controleer alle veldwaarden
|
||||
v_errormsg := 'Fout inlezen mld_opdr_key [' || v_aanduiding || ']';
|
||||
v_mld_opdr_key := TRIM (v_mld_opdr_key);
|
||||
|
||||
BEGIN
|
||||
SELECT o.mld_opdr_key, o.mld_opdr_opmerking
|
||||
INTO v_mld_opdr_key, v_mld_opdr_opmerking
|
||||
FROM mld_opdr o, mld_melding m, ins_tab_discipline d, ins_srtdiscipline sd, mld_stdmelding std
|
||||
WHERE o.mld_melding_key = m.mld_melding_key
|
||||
AND m.mld_stdmelding_key = std.mld_stdmelding_key
|
||||
AND std.mld_ins_discipline_key = d.ins_discipline_key
|
||||
AND d.ins_srtdiscipline_key = sd.ins_srtdiscipline_key
|
||||
AND sd.ins_srtdiscipline_prefix || m.mld_melding_key || '/' || o.mld_opdr_bedrijfopdr_volgnr = v_mld_opdr_key_tekst;
|
||||
|
||||
EXCEPTION WHEN NO_DATA_FOUND THEN
|
||||
BEGIN
|
||||
fac.imp_writelog (p_import_key, 'W', 'Opdracht kan niet gevonden worden. [' || v_aanduiding || ']', '');
|
||||
|
||||
-- kijk nu of de opdracht gevonden kan worden a.d.h.v het Struktonnummer
|
||||
SELECT o.mld_opdr_key, o.mld_opdr_opmerking
|
||||
INTO v_mld_opdr_key, v_mld_opdr_opmerking
|
||||
FROM mld_opdr o, mld_kenmerkopdr ko, mld_kenmerk k
|
||||
WHERE o.mld_opdr_key = ko.mld_opdr_key
|
||||
AND ko.mld_kenmerk_key = k.mld_kenmerk_key
|
||||
AND k.mld_srtkenmerk_key = 35
|
||||
AND ko.mld_kenmerkopdr_waarde = v_extern_nummer;
|
||||
|
||||
EXCEPTION WHEN OTHERS THEN
|
||||
v_ongeldig := 1;
|
||||
v_errormsg := 'Opdracht kan niet gevonden worden (intern/externnr). [' || v_aanduiding || ']';
|
||||
v_mld_opdr_key := NULL;
|
||||
END;
|
||||
END;
|
||||
|
||||
IF v_ongeldig = 0
|
||||
THEN
|
||||
v_errormsg :=
|
||||
'Fout bij bepalen status [' || v_aanduiding || ']';
|
||||
|
||||
CASE
|
||||
WHEN v_status_code = '5'
|
||||
THEN
|
||||
v_status := 5; -- uitgegeven
|
||||
WHEN v_status_code = '10'
|
||||
THEN
|
||||
v_status := 8; -- geaccepteerd
|
||||
WHEN v_status_code = '20' -- monteur gereed
|
||||
THEN
|
||||
v_status := 6; -- afgemeld
|
||||
WHEN v_status_code = '25' -- specialist gereed
|
||||
THEN
|
||||
v_status := 6; -- afgemeld
|
||||
WHEN v_status_code = '30' -- technisch gereed
|
||||
THEN
|
||||
v_status := 6; -- afgemeld
|
||||
-- AASA#32991
|
||||
-- WHEN v_status_code = '40' -- uitgeprijst
|
||||
-- THEN
|
||||
-- v_status := 9; -- afgerond
|
||||
WHEN v_status_code = '70'
|
||||
THEN
|
||||
v_status := 1; -- geannuleerd
|
||||
WHEN v_status_code = '80'
|
||||
THEN
|
||||
v_status := 1; -- afgewezen
|
||||
ELSE
|
||||
v_status := NULL;
|
||||
v_ongeldig := 1; -- nog te bezien.
|
||||
END CASE;
|
||||
END IF;
|
||||
|
||||
-- Lees alle veldwaarden
|
||||
IF v_ongeldig = 0
|
||||
THEN
|
||||
v_errormsg :=
|
||||
'Fout bij converteren datumtijd [' || v_aanduiding || ']';
|
||||
v_datumtijd :=
|
||||
fac.safe_to_date (
|
||||
REPLACE (
|
||||
SUBSTR (v_datumtijd_tekst,
|
||||
1,
|
||||
INSTR (v_datumtijd_tekst, '.') - 1),
|
||||
'T',
|
||||
' '),
|
||||
'yyyy-mm-dd hh24:mi:ss');
|
||||
|
||||
IF v_datumtijd = NULL
|
||||
THEN
|
||||
v_ongeldig := 0;
|
||||
END IF;
|
||||
END IF;
|
||||
|
||||
IF v_ongeldig = 0
|
||||
THEN
|
||||
v_errormsg :=
|
||||
'Fout bij aanvullen opmerking [' || v_aanduiding || ']';
|
||||
|
||||
-- controleer of de opmerking niet leeg is en of dezelfde opmerking al bij een eerdere statusovergang
|
||||
-- gemeld is.
|
||||
IF v_opmerking IS NOT NULL AND INSTR(v_mld_opdr_opmerking, v_opmerking) = 0
|
||||
THEN
|
||||
v_opmerking :=
|
||||
'['
|
||||
|| v_datumtijd_tekst
|
||||
|| '] - '
|
||||
|| v_status_tekst
|
||||
|| CHR (13)
|
||||
|| CHR (10)
|
||||
|| v_opmerking;
|
||||
ELSE
|
||||
v_opmerking :=
|
||||
'[' || v_datumtijd_tekst || '] - ' || v_status_tekst;
|
||||
END IF;
|
||||
END IF;
|
||||
|
||||
-- Insert geformatteerde import record
|
||||
IF (v_ongeldig = 0)
|
||||
THEN
|
||||
BEGIN
|
||||
v_errormsg :=
|
||||
'Fout toevoegen opdracht status ['
|
||||
|| v_aanduiding
|
||||
|| ']';
|
||||
|
||||
INSERT INTO aaxx_imp_opdrstat_strukton (mld_opdr_key,
|
||||
extern_nummer,
|
||||
status,
|
||||
datumtijd,
|
||||
opmerking,
|
||||
totaal)
|
||||
VALUES (v_mld_opdr_key,
|
||||
v_extern_nummer,
|
||||
v_status,
|
||||
v_datumtijd,
|
||||
v_opmerking,
|
||||
v_totaal);
|
||||
|
||||
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,
|
||||
'Fout bij toevoegen regel aan importtabel aaxx_imp_opdr_status_strukton.');
|
||||
END;
|
||||
ELSE
|
||||
fac.imp_writelog (p_import_key,
|
||||
'E',
|
||||
v_errormsg,
|
||||
'');
|
||||
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!');
|
||||
END IF;
|
||||
|
||||
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 opdrachtstatusberichten afgebroken!');
|
||||
END;
|
||||
/
|
||||
|
||||
|
||||
BEGIN fac.registercustversion('AASA', 23); END;
|
||||
|
||||
|
||||
CREATE OR REPLACE PROCEDURE aasa_update_opdrstat_strukton (
|
||||
p_import_key IN NUMBER)
|
||||
AS
|
||||
-- Cursor loopt - in volgorde! - over alle ingelezen opdrachtstatusberichten.
|
||||
CURSOR c1
|
||||
IS
|
||||
SELECT mld_opdr_key,
|
||||
extern_nummer,
|
||||
datumtijd,
|
||||
status,
|
||||
opmerking,
|
||||
totaal
|
||||
FROM aaxx_imp_opdrstat_strukton
|
||||
ORDER BY 1, 3;
|
||||
|
||||
CURSOR cp (
|
||||
c_opdr_key IN NUMBER)
|
||||
IS
|
||||
SELECT pf.prs_perslid_key
|
||||
FROM fac_tracking tr,
|
||||
fac_srtnotificatie str,
|
||||
prs_v_perslid_fullnames_all pf
|
||||
WHERE tr.fac_srtnotificatie_key = str.fac_srtnotificatie_key
|
||||
AND tr.prs_perslid_key = pf.prs_perslid_key(+)
|
||||
AND (str.fac_srtnotificatie_code = 'ORDFOK'
|
||||
AND tr.fac_tracking_refkey = c_opdr_key
|
||||
AND str.fac_srtnotificatie_xmlnode IN ('opdracht'))
|
||||
ORDER BY fac_tracking_datum DESC, fac_tracking_key DESC;
|
||||
|
||||
v_errormsg VARCHAR2 (1000);
|
||||
oracle_err_num NUMBER;
|
||||
oracle_err_mes VARCHAR2 (200);
|
||||
v_aanduiding VARCHAR2 (200);
|
||||
v_count_tot NUMBER (10);
|
||||
v_count NUMBER (10);
|
||||
v_mld_key NUMBER (10) := 0;
|
||||
v_opdr_key NUMBER (10) := 0;
|
||||
v_opdr_status NUMBER (10) := 0;
|
||||
v_user_key NUMBER (10) := 0;
|
||||
v_opdr_approved mld_opdr.mld_opdr_approved%TYPE;
|
||||
v_approver_key prs_perslid.prs_perslid_key%TYPE;
|
||||
v_mld_typeopdr_key mld_typeopdr.mld_typeopdr_key%TYPE;
|
||||
v_mld_kenmerk_key mld_kenmerk.mld_kenmerk_key%TYPE;
|
||||
v_mld_kenmerkopdr_key mld_kenmerkopdr.mld_kenmerkopdr_key%TYPE;
|
||||
v_mld_srtkenmerk_key mld_srtkenmerk.mld_srtkenmerk_key%TYPE;
|
||||
v_perslid_key prs_perslid.prs_perslid_key%TYPE;
|
||||
v_opdr_kosten mld_opdr.mld_opdr_kosten%TYPE;
|
||||
v_typeopdr_gvs mld_typeopdr.mld_typeopdr_gvs%TYPE;
|
||||
v_mld_kk mld_melding.mld_kosten_klant%TYPE;
|
||||
v_mld_kostenpl_key mld_melding.prs_kostenplaats_key%TYPE;
|
||||
v_opdr_kostenpl_key mld_opdr.prs_kostenplaats_key%TYPE;
|
||||
v_mld_perslid_key mld_melding.prs_perslid_key%TYPE;
|
||||
v_mld_disc_key ins_tab_discipline.ins_discipline_key%TYPE;
|
||||
v_refiat NUMBER (1);
|
||||
v_reapprove NUMBER (1);
|
||||
BEGIN
|
||||
-- Loop door alle geimporteerde opdrachtstatusberichten en verwerk deze.
|
||||
v_count_tot := 0;
|
||||
|
||||
-- Stel de key in van het srtkenmerk 'Ref. Nr. Leverancier'. Hier wordt
|
||||
-- het nummer dat Strukton aan de call gegeven heeft geregistreerd.
|
||||
IF aaxx_get_user = 'SABIC'
|
||||
THEN
|
||||
v_mld_srtkenmerk_key := 35;
|
||||
END IF;
|
||||
|
||||
IF aaxx_get_user = 'ENEXIS'
|
||||
THEN
|
||||
v_mld_srtkenmerk_key := 381;
|
||||
END IF;
|
||||
|
||||
IF aaxx_get_user = 'ESSENT'
|
||||
THEN
|
||||
v_mld_srtkenmerk_key := 741;
|
||||
END IF;
|
||||
|
||||
IF aaxx_get_user = 'NS'
|
||||
THEN
|
||||
v_mld_srtkenmerk_key := 761;
|
||||
END IF;
|
||||
|
||||
IF aaxx_get_user = 'DSM'
|
||||
THEN
|
||||
v_mld_srtkenmerk_key := 123;
|
||||
END IF;
|
||||
|
||||
IF aaxx_get_user = 'VL'
|
||||
THEN
|
||||
v_mld_srtkenmerk_key := 82;
|
||||
END IF;
|
||||
|
||||
IF aaxx_get_user = 'HUNTSMAN'
|
||||
THEN
|
||||
v_mld_srtkenmerk_key := 381;
|
||||
END IF;
|
||||
|
||||
IF aaxx_get_user = 'DOW'
|
||||
THEN
|
||||
v_mld_srtkenmerk_key := 81;
|
||||
END IF;
|
||||
|
||||
v_user_key := 10; -- Strukton user
|
||||
|
||||
FOR rec IN c1
|
||||
LOOP
|
||||
BEGIN
|
||||
v_aanduiding :=
|
||||
'['
|
||||
|| rec.mld_opdr_key
|
||||
|| '|'
|
||||
|| SUBSTR (rec.opmerking, 1, 100)
|
||||
|| '] ';
|
||||
v_count_tot := v_count_tot + 1;
|
||||
v_count := 0;
|
||||
|
||||
-- Key van melding/opdracht bepalen en externnr bij opdracht opslaan.
|
||||
IF (rec.mld_opdr_key IS NOT NULL)
|
||||
THEN
|
||||
v_errormsg := 'Fout bij bepalen opdracht.';
|
||||
|
||||
SELECT mld_melding_key,
|
||||
mld_opdr_key,
|
||||
mld_statusopdr_key,
|
||||
mld_typeopdr_key
|
||||
INTO v_mld_key,
|
||||
v_opdr_key,
|
||||
v_opdr_status,
|
||||
v_mld_typeopdr_key
|
||||
FROM mld_opdr
|
||||
WHERE mld_opdr_key = rec.mld_opdr_key;
|
||||
|
||||
v_errormsg := 'Fout bij bepalen kenmerk extern nummer.';
|
||||
|
||||
SELECT k.mld_kenmerk_key
|
||||
INTO v_mld_kenmerk_key
|
||||
FROM mld_kenmerk k
|
||||
WHERE k.mld_srtkenmerk_key = v_mld_srtkenmerk_key
|
||||
AND k.mld_typeopdr_key = v_mld_typeopdr_key;
|
||||
|
||||
v_errormsg := 'Fout bij bepalen kenmerkopdracht extern nummer.';
|
||||
|
||||
SELECT MAX (ko.mld_kenmerkopdr_key)
|
||||
INTO v_mld_kenmerkopdr_key
|
||||
FROM mld_kenmerkopdr ko
|
||||
WHERE ko.mld_opdr_key = v_opdr_key
|
||||
AND v_mld_kenmerk_key = ko.mld_kenmerk_key;
|
||||
|
||||
v_errormsg := 'Fout bij aanpassen extern nummer.';
|
||||
|
||||
IF v_mld_kenmerkopdr_key IS NULL
|
||||
THEN
|
||||
-- kenmerk toevoegen
|
||||
INSERT INTO mld_kenmerkopdr (mld_kenmerk_key,
|
||||
mld_opdr_key,
|
||||
mld_kenmerkopdr_waarde)
|
||||
VALUES (v_mld_kenmerk_key, v_opdr_key, rec.extern_nummer);
|
||||
ELSE
|
||||
-- kenmerk aanpassen
|
||||
UPDATE mld_kenmerkopdr
|
||||
SET mld_kenmerkopdr_waarde = rec.extern_nummer
|
||||
WHERE mld_kenmerkopdr_key = v_mld_kenmerkopdr_key;
|
||||
END IF;
|
||||
|
||||
v_errormsg := 'Fout bij bijwerken opdracht-opmerking.';
|
||||
|
||||
v_count := LENGTH (rec.opmerking) + 5; -- Beetje speling qua lengte!
|
||||
|
||||
UPDATE mld_opdr
|
||||
SET mld_opdr_opmerking =
|
||||
DECODE (
|
||||
mld_opdr_opmerking,
|
||||
NULL,
|
||||
rec.opmerking,
|
||||
rec.opmerking
|
||||
|| CHR (13)
|
||||
|| CHR (10)
|
||||
|| SUBSTR (mld_opdr_opmerking, 1, (4000 - v_count)))
|
||||
WHERE mld_opdr_key = v_opdr_key;
|
||||
|
||||
IF v_opdr_status <> rec.status
|
||||
THEN
|
||||
IF rec.status = 8 AND v_opdr_status = 5
|
||||
THEN
|
||||
-- Accepteer opdracht als de opdracht uitgegeven was
|
||||
mld.setopdrachtstatus (v_opdr_key, 8, v_user_key); -- Facilitor
|
||||
ELSIF rec.status = 6 AND v_opdr_status = 5
|
||||
THEN
|
||||
-- Meld de opdracht af als deze uitgegeven was
|
||||
mld.setopdrachtstatus (v_opdr_key, 8, v_user_key); -- Facilitor, eerst accepteren
|
||||
mld.setopdrachtstatus (v_opdr_key, 6, v_user_key); -- Facilitor
|
||||
ELSIF rec.status = 6 AND v_opdr_status = 8
|
||||
THEN
|
||||
-- Meld de opdracht af als deze geaccepteerd was
|
||||
mld.setopdrachtstatus (v_opdr_key, 6, v_user_key); -- Facilitor
|
||||
ELSIF rec.status = 1 AND v_opdr_status = 5
|
||||
THEN
|
||||
-- Opdracht is afgewezen op het moment dat de opdracht nog niet geaccepteerd is.
|
||||
mld.setopdrachtstatus (v_opdr_key, 1, v_user_key); -- Facilitor
|
||||
mld.updatemeldingstatusav (v_mld_key,
|
||||
0,
|
||||
v_user_key,
|
||||
0);
|
||||
ELSIF rec.status = 1 AND v_opdr_status = 8
|
||||
THEN
|
||||
-- Opdracht is afgewezen op het moment dat de opdracht al geaccepteerd is.
|
||||
mld.setopdrachtstatus (v_opdr_key, 6, v_user_key); -- Facilitor
|
||||
--MLD.updatemeldingstatusAV (v_mld_key, 0, v_user_key, 0);
|
||||
ELSIF rec.status = 9 AND v_opdr_status = 6
|
||||
THEN
|
||||
-- Opdracht is afgerond en opdrachtstatus was afgemeld.
|
||||
mld.setopdrachtstatus (v_opdr_key, 9, v_user_key); -- Facilitor
|
||||
END IF;
|
||||
|
||||
IF rec.status = 6 AND v_opdr_status <> 6
|
||||
THEN
|
||||
-- Sinds AADO#30922 wordt de melding niet meer automatisch afgemeld.
|
||||
MLD.updatemeldingstatusAV (v_mld_key, 0, v_user_key, 0);
|
||||
ELSE
|
||||
IF rec.status = 9 AND v_opdr_status <> 9
|
||||
THEN
|
||||
-- Oorspronkelijke gegevens opdracht ophalen.
|
||||
-- var opdr_info = mld.mld_opdr_info(opdr_key);
|
||||
SELECT mld_opdr_kosten,
|
||||
mld_typeopdr_gvs,
|
||||
mld_kosten_klant,
|
||||
m.prs_kostenplaats_key,
|
||||
o.prs_kostenplaats_key,
|
||||
m.prs_perslid_key,
|
||||
std.mld_ins_discipline_key
|
||||
INTO v_opdr_kosten,
|
||||
v_typeopdr_gvs,
|
||||
v_mld_kk,
|
||||
v_mld_kostenpl_key,
|
||||
v_opdr_kostenpl_key,
|
||||
v_mld_perslid_key,
|
||||
v_mld_disc_key
|
||||
FROM mld_opdr o,
|
||||
mld_melding m,
|
||||
mld_typeopdr t,
|
||||
mld_stdmelding std
|
||||
WHERE o.mld_melding_key = m.mld_melding_key
|
||||
AND m.mld_stdmelding_key = std.mld_stdmelding_key
|
||||
AND o.mld_typeopdr_key = t.mld_typeopdr_key
|
||||
AND o.mld_opdr_key = v_opdr_key;
|
||||
|
||||
-- Hergoedkeuring (Ter goedkeuring) wordt (pas) vereist als het opdrachtbedrag hoger is dan al is goedgekeurd en boven de GVS-grens uitkomt.
|
||||
-- Herfiattering (Ter fiattering) wordt (pas) vereist indien het bedrag boven het mandaat van de oorspronkelijke (laatste) fiatteur uitkomt
|
||||
-- en boven de GVS-grens uitkomt.
|
||||
-- Hergoedkeuring en herfiattering kan alleen als het totaalbedrag van de opdracht is verhoogd en alleen in de statussen 5, 8, 6 en 9 (de uitvoeringsfase en de afhandelingsfase).
|
||||
-- Hergoedkeuring en herfiattering kan leiden tot een tijdelijke terugkeer naar de voorfase status 3 of 10.
|
||||
IF rec.totaal > v_opdr_kosten
|
||||
THEN
|
||||
fac.imp_writelog (p_import_key, 'I', 'rec.totaal > v_opdr_kosten: ' || rec.totaal || ' - ' || v_opdr_kosten, '');
|
||||
|
||||
-- Hergoedkeuring (Ter goedkeuring) wordt (pas) vereist als het opdrachtbedrag hoger is dan al is goedgekeurd en boven de GVS-grens uitkomt.
|
||||
IF rec.totaal > COALESCE (v_opdr_approved, 0) AND rec.totaal > v_typeopdr_gvs
|
||||
THEN
|
||||
v_reapprove := 1;
|
||||
ELSE
|
||||
v_reapprove := 0;
|
||||
END IF;
|
||||
|
||||
fac.imp_writelog (p_import_key, 'I', 'hergoedkeuring: ' || v_reapprove || ' - ' || v_opdr_approved || ' - ' || v_typeopdr_gvs, '');
|
||||
|
||||
|
||||
-- Herfiattering (Ter fiattering) wordt (pas) vereist indien het bedrag boven het mandaat van de oorspronkelijke (laatste) fiatteur uitkomt
|
||||
-- en boven de GVS-grens uitkomt.
|
||||
-- Bepaal het mandaat van de oorspronkelijke (laatste) fiatteur.
|
||||
-- Ook als er de vorige keer geen kosten waren dan moet pas worden geherfiatteerd als (tot_kosten > mandaat),
|
||||
-- waarbij de mandaat van de Melder/aanvrager van melding of de user is.
|
||||
v_perslid_key := NULL;
|
||||
|
||||
IF rec.totaal > v_opdr_kosten AND rec.totaal > 0 AND rec.totaal > v_typeopdr_gvs
|
||||
THEN
|
||||
fac.imp_writelog (p_import_key, 'I', 'F - rec.totaal > v_opdr_kosten: ' || rec.totaal || ' - ' || v_opdr_kosten || ' - ' || v_typeopdr_gvs, '');
|
||||
-- De totale kosten zijn verhoogd en het bedrag zit boven de GVS-grens.
|
||||
-- Bepaling oorspronkelijke (laatste) fiatteur, als die er was.
|
||||
v_perslid_key := NULL;
|
||||
|
||||
FOR rec2 IN cp (v_opdr_key)
|
||||
LOOP
|
||||
BEGIN
|
||||
v_perslid_key := rec2.prs_perslid_key;
|
||||
END;
|
||||
END LOOP;
|
||||
|
||||
fac.imp_writelog (p_import_key, 'I', 'F - laatste fiatteur: ' || v_perslid_key, '');
|
||||
|
||||
IF v_perslid_key IS NULL
|
||||
THEN
|
||||
-- Dan waren de opdracht kosten onder het mandaat van mijzelf of de BO-medewerker.
|
||||
-- Als de kostenplaats bij de opdracht overruled is dan wordt altijd tegen het profiel van de BO-medewerker getest.
|
||||
IF v_mld_kk = 1
|
||||
AND v_mld_kostenpl_key = v_opdr_kostenpl_key
|
||||
THEN
|
||||
v_perslid_key := v_mld_perslid_key; -- Melder/aanvrager van melding
|
||||
END IF;
|
||||
END IF;
|
||||
|
||||
fac.imp_writelog (p_import_key, 'I', 'F - indien onbekend terugvallen op melder: ' || v_perslid_key, '');
|
||||
|
||||
|
||||
IF fac.getsetting ('mld_use_order_approval') = 1
|
||||
AND (rec.totaal >
|
||||
fac.getsetting ('can_selfapprove')
|
||||
OR rec.totaal >
|
||||
prs.getprofiellimiet (v_perslid_key, v_mld_disc_key))
|
||||
THEN
|
||||
-- Er moet (opnieuw) gefiatteerd worden. Is er wel iemand met voldoende mandaat? Indien er niemand gevonden kan worden mag de wijziging niet doorgaan.
|
||||
-- Het mandaat is al te hoog voor de melder/aanvrager van de melding of mijzelf.
|
||||
|
||||
v_approver_key :=
|
||||
prs.getkpverantwoordelijke (
|
||||
v_opdr_kostenpl_key,
|
||||
fac.getsetting ('prs_approvemethod'),
|
||||
v_user_key);
|
||||
v_refiat := 1;
|
||||
-- er moet (her)fiattering plaatsvinden
|
||||
fac.imp_writelog (p_import_key, 'I', 'F - (her)fiatteur: ' || v_approver_key, '');
|
||||
END IF;
|
||||
END IF;
|
||||
END IF;
|
||||
|
||||
IF v_reapprove = 1 OR v_refiat = 1
|
||||
THEN
|
||||
-- Zet de refiat waarden. Het hergoedkeurings- en/of herfiatteringstraject wordt opnieuw ingegaan. // Tracking hiervan is niet nodig.
|
||||
IF v_opdr_kosten > 0
|
||||
THEN
|
||||
UPDATE mld_opdr
|
||||
SET mld_opdr_materiaal_refiat = mld_opdr_materiaal,
|
||||
mld_opdr_kosten_refiat = mld_opdr_kosten
|
||||
WHERE mld_opdr_key = v_opdr_key;
|
||||
END IF;
|
||||
|
||||
-- Ook voor status 5 wordt refiatstatus gezet zodat bekend is dat het om een herfiattering gaat. De fiatteringsvoorwaarde is dan iets anders.
|
||||
UPDATE mld_opdr
|
||||
SET mld_statusopdr_key_refiat = mld_statusopdr_key
|
||||
WHERE mld_opdr_key = v_opdr_key;
|
||||
|
||||
-- Goedkeuring opnieuw ingaan kan alleen als het approved bedrag leeg is.
|
||||
UPDATE mld_opdr
|
||||
SET mld_opdr_approved_refiat = mld_opdr_approved
|
||||
WHERE mld_opdr_key = v_opdr_key;
|
||||
|
||||
UPDATE mld_opdr
|
||||
SET mld_opdr_approved = NULL,
|
||||
mld_opdr_materiaal = rec.totaal,
|
||||
mld_opdr_kosten = rec.totaal
|
||||
WHERE mld_opdr_key = v_opdr_key;
|
||||
ELSE
|
||||
UPDATE mld_opdr
|
||||
SET mld_opdr_materiaal = rec.totaal,
|
||||
mld_opdr_kosten = rec.totaal
|
||||
WHERE mld_opdr_key = v_opdr_key;
|
||||
END IF;
|
||||
|
||||
-- geef in de tracking aan dat de kosten via de interface aangepast zijn.
|
||||
IF v_opdr_kosten <> rec.totaal
|
||||
THEN
|
||||
fac.trackaction ('ORDUPD', v_opdr_key, v_user_key, SYSDATE,
|
||||
'Gewijzigd' || CHR (13) || CHR (10)
|
||||
|| 'Materiaal: ' || v_opdr_kosten || ' --> ' || rec.totaal || CHR (13) || CHR (10)
|
||||
|| 'Totaal: ' || v_opdr_kosten || ' --> ' || rec.totaal);
|
||||
END IF;
|
||||
|
||||
IF v_reapprove = 1
|
||||
THEN
|
||||
-- Zetten van de status van de gewijzigde opdracht op "Ter goedkeuring" en afhandelen van de tracking (status + uitvoerende tracking) en daarmee notificatie.
|
||||
-- status = 10; Ter goedkeuring.
|
||||
mld.setopdrachtstatus (v_opdr_key, 10, v_user_key);
|
||||
ELSE
|
||||
IF v_refiat = 1
|
||||
THEN
|
||||
-- Zetten van de status van de gewijzigde opdracht op "Ter fiattering" en afhandelen van de tracking (status + uitvoerende tracking) en daarmee notificatie.
|
||||
-- status = 3; // Ter fiattering.
|
||||
mld.setopdrachtstatus (v_opdr_key, 3, v_user_key);
|
||||
END IF;
|
||||
END IF;
|
||||
END IF;
|
||||
END IF;
|
||||
END IF;
|
||||
END IF;
|
||||
|
||||
COMMIT;
|
||||
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 bij verwerken opdrachtstatusbericht.');
|
||||
END;
|
||||
END LOOP;
|
||||
|
||||
COMMIT;
|
||||
END;
|
||||
/
|
||||
|
||||
------ payload end ------
|
||||
|
||||
SET DEFINE OFF
|
||||
BEGIN adm.systrackscriptId ('$Id$', 0); END;
|
||||
/
|
||||
|
||||
COMMIT;
|
||||
|
||||
SET ECHO OFF
|
||||
SPOOL OFF
|
||||
SET DEFINE ON
|
||||
PROMPT Logfile of this upgrade is: &fcltlogfile
|
||||
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user