From 32549209933289d3a0ffcfacb734306de86c9d0a Mon Sep 17 00:00:00 2001 From: Maarten van der Heide Date: Wed, 25 Apr 2018 09:35:26 +0000 Subject: [PATCH] KFNS#52066 OPDRSTAT_STRUKTON-import/Uitprijs-functionaliteit svn path=/Customer/trunk/; revision=37766 --- KFNS/kfns.sql | 628 +++++++++++++++++++++----------------------------- 1 file changed, 257 insertions(+), 371 deletions(-) diff --git a/KFNS/kfns.sql b/KFNS/kfns.sql index 1ffe851bc..4dc38b4c5 100644 --- a/KFNS/kfns.sql +++ b/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,