KFNS#52066 OPDRSTAT_STRUKTON-import/Uitprijs-functionaliteit
svn path=/Customer/trunk/; revision=37766
This commit is contained in:
628
KFNS/kfns.sql
628
KFNS/kfns.sql
@@ -608,285 +608,6 @@ AS
|
||||
bedrag
|
||||
FROM kfns_km_freeze;
|
||||
|
||||
-- Import vanuit Strukton
|
||||
/* Formatted on 22-5-2015 11:52:44 (QP5 v5.136.908.31019) */
|
||||
CREATE OR REPLACE PROCEDURE kfns_import_opdrstat_strukton (p_import_key IN NUMBER)
|
||||
AS
|
||||
c_delim VARCHAR2 (1) := ';';
|
||||
v_newline VARCHAR2 (4000); -- Input line
|
||||
v_errormsg VARCHAR2 (1000);
|
||||
oracle_err_num NUMBER;
|
||||
oracle_err_mes VARCHAR2 (200);
|
||||
v_aanduiding VARCHAR2 (1000) := '';
|
||||
header_is_valid NUMBER := 0;
|
||||
v_count_tot NUMBER (10) := 0;
|
||||
v_count_imp NUMBER (10) := 0;
|
||||
v_ongeldig NUMBER (1) := 0;
|
||||
-- De importvelden
|
||||
v_mld_opdr_key_tekst VARCHAR2 (100);
|
||||
v_mld_opdr_key NUMBER (10);
|
||||
v_mld_opdr_opmerking VARCHAR2 (4000);
|
||||
v_extern_nummer VARCHAR2 (100);
|
||||
v_status_code VARCHAR2 (100);
|
||||
v_status NUMBER (10);
|
||||
v_datumtijd_tekst VARCHAR2 (100);
|
||||
v_datumtijd DATE;
|
||||
v_status_tekst VARCHAR2 (100);
|
||||
v_opmerking VARCHAR2 (4000);
|
||||
|
||||
-- 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 kfns_imp_opdrstat_strukton;
|
||||
|
||||
COMMIT;
|
||||
|
||||
FOR rec1 IN c1
|
||||
LOOP
|
||||
BEGIN
|
||||
v_newline := rec1.fac_imp_file_line;
|
||||
v_errormsg := 'Fout opvragen importregel';
|
||||
v_aanduiding := '';
|
||||
v_ongeldig := 0;
|
||||
|
||||
-- Lees alle veldwaarden
|
||||
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);
|
||||
v_opmerking := SUBSTR (v_opmerking, 1, 1000);
|
||||
-- Verwijder de markering voor cr/lf die in stylesheet is toegevoegd.
|
||||
v_opmerking := REPLACE (v_opmerking, '@@', CHR (13));
|
||||
v_aanduiding :=
|
||||
'['
|
||||
|| v_mld_opdr_key_tekst
|
||||
|| '|'
|
||||
|| v_extern_nummer
|
||||
|| '|'
|
||||
|| v_status_code
|
||||
|| '|'
|
||||
|| v_datumtijd_tekst
|
||||
|| '|'
|
||||
|| v_status_tekst
|
||||
|| '] ';
|
||||
|
||||
-- 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'
|
||||
THEN
|
||||
header_is_valid := 1;
|
||||
END IF;
|
||||
ELSE
|
||||
v_count_tot := v_count_tot + 1;
|
||||
-- Controleer alle veldwaarden
|
||||
v_errormsg := 'Fout bepalen opdracht';
|
||||
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,
|
||||
mld_stdmelding sm,
|
||||
ins_tab_discipline td,
|
||||
ins_srtdiscipline sd
|
||||
WHERE o.mld_melding_key = m.mld_melding_key
|
||||
AND m.mld_stdmelding_key = sm.mld_stdmelding_key
|
||||
AND sm.mld_ins_discipline_key = td.ins_discipline_key
|
||||
AND td.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 OTHERS
|
||||
THEN
|
||||
v_ongeldig := 1;
|
||||
oracle_err_num := SQLCODE;
|
||||
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
|
||||
v_errormsg :=
|
||||
v_errormsg
|
||||
|| ' ORACLE (error '
|
||||
|| oracle_err_num
|
||||
|| '/'
|
||||
|| oracle_err_mes
|
||||
|| ')';
|
||||
fac.writelog (p_import_key, 'W', v_aanduiding || v_errormsg, '');
|
||||
END;
|
||||
|
||||
IF v_ongeldig = 0
|
||||
THEN
|
||||
v_errormsg := 'Fout bepalen status';
|
||||
|
||||
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
|
||||
-- For future use
|
||||
--WHEN v_status_code = '40' -- uitgeprijst
|
||||
--THEN
|
||||
-- v_status := 6; -- afgemeld
|
||||
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;
|
||||
|
||||
IF v_ongeldig = 0
|
||||
THEN
|
||||
v_errormsg := 'Fout converteren datumtijd';
|
||||
|
||||
IF INSTR (v_datumtijd_tekst, '.') > 0
|
||||
THEN
|
||||
v_datumtijd :=
|
||||
fac.safe_to_date (
|
||||
REPLACE (
|
||||
SUBSTR (v_datumtijd_tekst,
|
||||
1,
|
||||
INSTR (v_datumtijd_tekst, '.') - 1),
|
||||
'T',
|
||||
' '),
|
||||
'yyyy-mm-dd hh24:mi:ss');
|
||||
ELSE
|
||||
v_datumtijd :=
|
||||
fac.safe_to_date (v_datumtijd_tekst,
|
||||
'yyyy-mm-dd hh24:mi:ss');
|
||||
END IF;
|
||||
END IF;
|
||||
|
||||
IF v_ongeldig = 0
|
||||
THEN
|
||||
v_errormsg := 'Fout aanvullen opmerking';
|
||||
|
||||
-- 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 wegschrijven statusbericht';
|
||||
|
||||
INSERT INTO kfns_imp_opdrstat_strukton (mld_opdr_key,
|
||||
extern_nummer,
|
||||
status,
|
||||
datumtijd,
|
||||
opmerking)
|
||||
VALUES (v_mld_opdr_key,
|
||||
v_extern_nummer,
|
||||
v_status,
|
||||
v_datumtijd,
|
||||
v_opmerking);
|
||||
|
||||
v_count_imp := v_count_imp + 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;
|
||||
ELSE
|
||||
IF v_status_code <> '40' AND v_status_code <> '45'
|
||||
THEN
|
||||
fac.imp_writelog (p_import_key, 'E', v_aanduiding || v_errormsg, '');
|
||||
END IF;
|
||||
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 statusberichten: ' || TO_CHAR (v_count_tot),
|
||||
'');
|
||||
fac.imp_writelog (
|
||||
p_import_key, 'S',
|
||||
'Inleesproces/#ongeldige niet ingelezen statusberichten: ' || TO_CHAR (v_count_tot - v_count_imp),
|
||||
'');
|
||||
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 statusberichten afgebroken!');
|
||||
END;
|
||||
/
|
||||
|
||||
CREATE OR REPLACE PROCEDURE KFNS_EXPORT_KM_FREEZE (p_applname IN VARCHAR2,
|
||||
p_applrun IN VARCHAR2,
|
||||
p_filedir IN VARCHAR2,
|
||||
@@ -921,14 +642,239 @@ BEGIN
|
||||
END;
|
||||
/
|
||||
|
||||
CREATE OR REPLACE PROCEDURE kfns_update_opdrstat_strukton (p_import_key IN NUMBER)
|
||||
|
||||
-- Import vanuit Strukton
|
||||
CREATE OR REPLACE PROCEDURE kfns_import_opdrstat_strukton (p_import_key IN NUMBER)
|
||||
AS
|
||||
-- Cursor loopt - in volgorde! - over alle ingelezen statusberichten.
|
||||
c_delim VARCHAR2 (1) := ';';
|
||||
v_newline VARCHAR2 (4000); -- Input line
|
||||
v_errormsg VARCHAR2 (1000);
|
||||
oracle_err_num NUMBER;
|
||||
oracle_err_mes VARCHAR2 (200);
|
||||
v_aanduiding VARCHAR2 (1000) := '';
|
||||
header_is_valid NUMBER := 0;
|
||||
v_count_tot NUMBER (10) := 0;
|
||||
v_count_imp NUMBER (10) := 0;
|
||||
v_ongeldig NUMBER (1) := 0;
|
||||
-- De importvelden
|
||||
v_mld_opdr_key_tekst VARCHAR2 (100);
|
||||
v_extern_nummer VARCHAR2 (100);
|
||||
v_status_code VARCHAR2 (100);
|
||||
v_status NUMBER (10);
|
||||
v_datumtijd_tekst VARCHAR2 (100);
|
||||
v_datumtijd DATE;
|
||||
v_status_tekst VARCHAR2 (100);
|
||||
v_opmerking VARCHAR2 (4000);
|
||||
v_totaal_tekst VARCHAR2 (100);
|
||||
v_totaal NUMBER (8,2);
|
||||
-- Overige velden
|
||||
v_mld_opdr_key NUMBER (10);
|
||||
v_mld_opdr_opmerking VARCHAR2 (4000);
|
||||
|
||||
CURSOR c1
|
||||
IS
|
||||
SELECT mld_opdr_key, extern_nummer, datumtijd, status, opmerking
|
||||
SELECT *
|
||||
FROM fac_imp_file
|
||||
WHERE fac_import_key = p_import_key
|
||||
ORDER BY fac_imp_file_index;
|
||||
BEGIN
|
||||
DELETE FROM kfns_imp_opdrstat_strukton;
|
||||
COMMIT;
|
||||
|
||||
FOR rec1 IN c1
|
||||
LOOP
|
||||
BEGIN
|
||||
v_newline := rec1.fac_imp_file_line;
|
||||
v_errormsg := 'Fout opvragen importregel';
|
||||
v_aanduiding := '';
|
||||
v_ongeldig := 0;
|
||||
-- Lees alle veldwaarden.
|
||||
fac.imp_getfield (v_newline, c_delim, v_mld_opdr_key_tekst);
|
||||
v_mld_opdr_key_tekst := TRIM (v_mld_opdr_key_tekst);
|
||||
fac.imp_getfield (v_newline, c_delim, v_extern_nummer);
|
||||
v_extern_nummer := TRIM (v_extern_nummer);
|
||||
fac.imp_getfield (v_newline, c_delim, v_status_code); -- typeID
|
||||
v_status_code := TRIM (v_status_code);
|
||||
fac.imp_getfield (v_newline, c_delim, v_datumtijd_tekst);
|
||||
v_datumtijd_tekst := TRIM (v_datumtijd_tekst);
|
||||
fac.imp_getfield (v_newline, c_delim, v_status_tekst);
|
||||
v_status_tekst := TRIM (v_status_tekst);
|
||||
fac.imp_getfield (v_newline, c_delim, v_opmerking);
|
||||
v_opmerking := SUBSTR (TRIM (v_opmerking), 1, 1000);
|
||||
fac.imp_getfield (v_newline, c_delim, v_totaal_tekst);
|
||||
v_totaal := fac.safe_to_number (v_totaal_tekst);
|
||||
-- Verwijder de markering voor cr/lf die in stylesheet is toegevoegd.
|
||||
v_opmerking := REPLACE (v_opmerking, '@@', CHR (13));
|
||||
v_aanduiding := '[' || v_mld_opdr_key_tekst || '|' || v_extern_nummer || '|' || v_status_code || '|' || v_datumtijd_tekst || '|' || v_status_tekst || '] ';
|
||||
|
||||
-- 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_tekst)) = 'TOTAL'
|
||||
THEN
|
||||
header_is_valid := 1;
|
||||
END IF;
|
||||
ELSE
|
||||
v_count_tot := v_count_tot + 1;
|
||||
|
||||
-- Controleer alle veldwaarden.
|
||||
v_errormsg := 'Fout bepalen opdracht';
|
||||
|
||||
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, mld_stdmelding sm, ins_tab_discipline td, ins_srtdiscipline sd
|
||||
WHERE o.mld_melding_key = m.mld_melding_key
|
||||
AND m.mld_stdmelding_key = sm.mld_stdmelding_key
|
||||
AND sm.mld_ins_discipline_key = td.ins_discipline_key
|
||||
AND td.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 OTHERS
|
||||
THEN
|
||||
v_ongeldig := 1;
|
||||
oracle_err_num := SQLCODE;
|
||||
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
|
||||
v_errormsg := v_errormsg || ' ORACLE (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
|
||||
fac.writelog (p_import_key, 'W', v_aanduiding || v_errormsg, 'Regel wordt overgeslagen!');
|
||||
END;
|
||||
|
||||
IF v_ongeldig = 0
|
||||
THEN
|
||||
v_errormsg := 'Status ongedefinieerd';
|
||||
|
||||
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
|
||||
-- KFNS#52066: Uitprijs/fiatteer-functionaliteit!
|
||||
--WHEN v_status_code = '40' -- uitgeprijst (fiattering aan FACILITOR-kant)
|
||||
--THEN
|
||||
-- v_status := 9; -- afgerond
|
||||
WHEN v_status_code = '45' -- gefiatteerd (fiattering aan Strukton-kant)
|
||||
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;
|
||||
|
||||
IF v_ongeldig = 0
|
||||
THEN
|
||||
v_errormsg := 'Datumtijd ongeldig';
|
||||
|
||||
IF INSTR (v_datumtijd_tekst, '.') > 0
|
||||
THEN
|
||||
v_datumtijd := fac.safe_to_date (REPLACE (SUBSTR (v_datumtijd_tekst, 1, INSTR (v_datumtijd_tekst, '.') - 1), 'T', ' '), 'yyyy-mm-dd hh24:mi:ss');
|
||||
ELSE
|
||||
v_datumtijd := fac.safe_to_date (REPLACE (v_datumtijd_tekst, 'T', ' '), 'yyyy-mm-dd hh24:mi:ss');
|
||||
END IF;
|
||||
END IF;
|
||||
|
||||
IF v_ongeldig = 0
|
||||
THEN
|
||||
v_errormsg := 'Opmerking ongeldig';
|
||||
|
||||
-- Controleer of de opmerking niet leeg is en of dezelfde opmerking al bij een eerdere statusovergang is gemeld.
|
||||
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 wegschrijven statusbericht';
|
||||
|
||||
INSERT INTO kfns_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_imp := v_count_imp + 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;
|
||||
ELSE
|
||||
-- Foutmeldingen onderdrukken als uitprijzen/fiatteren niet is aangeschakeld.
|
||||
IF v_status_code <> '40' AND v_status_code <> '45'
|
||||
THEN
|
||||
fac.imp_writelog (p_import_key, 'E', v_aanduiding || v_errormsg, '');
|
||||
END IF;
|
||||
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 statusberichten: ' || TO_CHAR (v_count_tot), '');
|
||||
fac.imp_writelog (p_import_key, 'S', 'Inleesproces/#ongeldige niet ingelezen statusberichten: ' || TO_CHAR (v_count_tot - v_count_imp), '');
|
||||
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 statusberichten afgebroken!');
|
||||
END;
|
||||
/
|
||||
|
||||
CREATE OR REPLACE PROCEDURE kfns_update_opdrstat_strukton (p_import_key IN NUMBER)
|
||||
AS
|
||||
-- Cursor loopt - per opdracht in volgorde! - over alle ingelezen statusberichten.
|
||||
CURSOR c1
|
||||
IS
|
||||
SELECT mld_opdr_key, extern_nummer, status, datumtijd, opmerking, totaal
|
||||
FROM kfns_imp_opdrstat_strukton
|
||||
ORDER BY 1, 3;
|
||||
ORDER BY 1, 4;
|
||||
|
||||
c_user_key NUMBER (10) := 5; -- _STRUKTON-user
|
||||
c_refnr_srtkkey NUMBER (10) := 41; -- Refnr. Leverancier
|
||||
@@ -938,9 +884,9 @@ AS
|
||||
v_aanduiding VARCHAR2 (200);
|
||||
v_count_tot NUMBER (10) := 0;
|
||||
v_count NUMBER (10) := 0;
|
||||
v_mld_key NUMBER (10) := 0;
|
||||
v_opdr_key NUMBER (10) := 0;
|
||||
v_opdr_status NUMBER (10) := 0;
|
||||
v_mld_key NUMBER (10);
|
||||
v_opdr_key NUMBER (10);
|
||||
v_opdr_status NUMBER (10);
|
||||
v_mld_typeopdr_key NUMBER (10);
|
||||
v_mld_kenmerk_key NUMBER (10);
|
||||
v_mld_kenmerkopdr_key NUMBER (10);
|
||||
@@ -949,12 +895,7 @@ BEGIN
|
||||
FOR rec IN c1
|
||||
LOOP
|
||||
BEGIN
|
||||
v_aanduiding :=
|
||||
'['
|
||||
|| rec.mld_opdr_key
|
||||
|| '|'
|
||||
|| SUBSTR (rec.opmerking, 1, 100)
|
||||
|| '] ';
|
||||
v_aanduiding := '[' || rec.mld_opdr_key || '|' || SUBSTR (rec.opmerking, 1, 100) || '] ';
|
||||
v_count_tot := v_count_tot + 1;
|
||||
|
||||
-- Key van melding/opdracht bepalen en Refnr. bij opdracht opslaan.
|
||||
@@ -972,25 +913,21 @@ BEGIN
|
||||
SELECT k.mld_kenmerk_key
|
||||
INTO v_mld_kenmerk_key
|
||||
FROM mld_kenmerk k
|
||||
WHERE k.mld_srtkenmerk_key = c_refnr_srtkkey
|
||||
AND k.mld_typeopdr_key = v_mld_typeopdr_key;
|
||||
WHERE k.mld_srtkenmerk_key = c_refnr_srtkkey AND k.mld_typeopdr_key = v_mld_typeopdr_key;
|
||||
|
||||
v_errormsg := 'Fout bepalen Refnr-kenmerkopdracht.';
|
||||
|
||||
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;
|
||||
WHERE ko.mld_opdr_key = v_opdr_key AND v_mld_kenmerk_key = ko.mld_kenmerk_key;
|
||||
|
||||
IF v_mld_kenmerkopdr_key IS NULL
|
||||
THEN
|
||||
-- Kenmerk toevoegen
|
||||
v_errormsg := 'Fout toevoegen Refnr-kenmerkopdracht.';
|
||||
|
||||
INSERT INTO mld_kenmerkopdr (mld_kenmerk_key,
|
||||
mld_opdr_key,
|
||||
mld_kenmerkopdr_waarde)
|
||||
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 bijwerken
|
||||
@@ -1007,14 +944,9 @@ BEGIN
|
||||
|
||||
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)))
|
||||
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;
|
||||
|
||||
v_errormsg := 'Fout bijwerken Status.';
|
||||
@@ -1023,12 +955,12 @@ BEGIN
|
||||
THEN
|
||||
IF rec.status = 8 AND v_opdr_status = 5
|
||||
THEN
|
||||
-- Accepteer opdracht als de opdracht uitgegeven was
|
||||
-- Accepteer de opdracht als deze uitgegeven was
|
||||
MLD.setopdrachtstatus (v_opdr_key, 8, c_user_key); -- Strukton
|
||||
ELSIF rec.status = 6 AND v_opdr_status = 5
|
||||
THEN
|
||||
-- Meld de opdracht af als deze uitgegeven was
|
||||
MLD.setopdrachtstatus (v_opdr_key, 8, c_user_key); -- Strukton, eerst accepteren
|
||||
-- Meld de opdracht af als deze uitgegeven was (na eerst accepteren)
|
||||
MLD.setopdrachtstatus (v_opdr_key, 8, c_user_key); -- Strukton
|
||||
MLD.setopdrachtstatus (v_opdr_key, 6, c_user_key); -- Strukton
|
||||
ELSIF rec.status = 6 AND v_opdr_status = 8
|
||||
THEN
|
||||
@@ -1039,82 +971,36 @@ BEGIN
|
||||
-- Wijs de opdracht af als deze niet/wel geaccepteerd was
|
||||
MLD.setopdrachtstatus (v_opdr_key, 1, c_user_key); -- Strukton
|
||||
MLD.updatemeldingstatusAV (v_mld_key, 0, c_user_key, 0);
|
||||
ELSIF rec.status = 9 AND v_opdr_status = 6 -- Per KFNS#52066
|
||||
THEN
|
||||
-- Neem ontvangen totaal over (als kosten=0, dus niet voor offerteopdrachten)
|
||||
UPDATE mld_opdr
|
||||
SET mld_opdr_materiaal = rec.totaal,
|
||||
mld_opdr_kosten = rec.totaal
|
||||
WHERE mld_opdr_key = v_opdr_key AND COALESCE (mld_opdr_kosten, 0) = 0;
|
||||
|
||||
-- Rond de opdracht af als deze afgemeld was
|
||||
MLD.setopdrachtstatus (v_opdr_key, 9, c_user_key); -- Strukton
|
||||
END IF;
|
||||
|
||||
IF rec.status = 6 AND v_opdr_status <> 6
|
||||
THEN
|
||||
-- KFNS#37965: Niet meer melding bijwerken (en afmelden was ook al niet meer)!
|
||||
/*
|
||||
v_errormsg := 'Fout bijwerken Opmerking (melding).';
|
||||
|
||||
UPDATE mld_melding m
|
||||
SET mld_melding_opmerking =
|
||||
DECODE (
|
||||
mld_melding_opmerking,
|
||||
NULL,
|
||||
rec.opmerking,
|
||||
rec.opmerking || CHR (13) || CHR (10)
|
||||
|| SUBSTR (mld_melding_opmerking,
|
||||
1,
|
||||
(4000 - v_count)))
|
||||
WHERE mld_melding_key = v_mld_key
|
||||
AND mld_melding_status IN (4, 7)
|
||||
AND NOT EXISTS
|
||||
( -- Afhandeling in melding niet aanpassen voor projecten
|
||||
SELECT sm.mld_stdmelding_key
|
||||
FROM mld_stdmelding sm,
|
||||
ins_tab_discipline td,
|
||||
ins_srtdiscipline sd
|
||||
WHERE sm.mld_stdmelding_key = m.mld_stdmelding_key
|
||||
AND sm.mld_ins_discipline_key = td.ins_discipline_key
|
||||
AND td.ins_srtdiscipline_key = sd.ins_srtdiscipline_key
|
||||
AND sd.ins_srtdiscipline_prefix = 'QQQ');
|
||||
|
||||
v_errormsg := 'Fout sluiten melding.';
|
||||
|
||||
SELECT COUNT ( * )
|
||||
INTO v_count
|
||||
FROM (SELECT m.mld_melding_key,
|
||||
(SELECT COUNT ( * )
|
||||
FROM mld_opdr o
|
||||
WHERE mld_melding_key = m.mld_melding_key)
|
||||
aanw_opdr,
|
||||
(SELECT COUNT ( * )
|
||||
FROM mld_opdr o
|
||||
WHERE mld_melding_key = m.mld_melding_key
|
||||
AND o.mld_statusopdr_key NOT IN (1, 2, 6, 7, 9))
|
||||
open_opdr
|
||||
FROM mld_melding m
|
||||
WHERE m.mld_melding_key = v_mld_key
|
||||
AND m.mld_melding_status IN (4, 7))
|
||||
niet_opgelost
|
||||
WHERE aanw_opdr > 0 AND open_opdr = 0;
|
||||
*/
|
||||
-- Sinds AADO#30922 wordt de melding niet meer automatisch afgemeld.
|
||||
-- AADO#30922: Melding niet meer automatisch afmelden.
|
||||
-- KFNS#37965: Opmerking-veld bij melding niet meer bijwerken.
|
||||
MLD.updatemeldingstatusAV (v_mld_key, 0, c_user_key, 0);
|
||||
END IF;
|
||||
END IF;
|
||||
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,
|
||||
'Statusbericht-loop');
|
||||
v_errormsg := v_errormsg || ' ORACLE (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
|
||||
fac.imp_writelog (p_import_key, 'E', v_aanduiding || v_errormsg, 'Statusbericht-loop');
|
||||
END;
|
||||
END LOOP;
|
||||
|
||||
COMMIT;
|
||||
END;
|
||||
/
|
||||
|
||||
@@ -10780,7 +10666,7 @@ CREATE OR REPLACE FORCE VIEW KFNS_V_INS_INSPECTIE
|
||||
SOORT_ONDERDEEL,
|
||||
ONDERDEEL,
|
||||
SCORE
|
||||
)
|
||||
)
|
||||
AS
|
||||
SELECT c.ins_deelsrtcontrole_key AS nr,
|
||||
c.ins_deelsrtcontrole_datum_org AS plandatum,
|
||||
|
||||
Reference in New Issue
Block a user