YASK#87375 Problemen met Facilitor rapportage Amersfoort RFC

YASK#87251 Instellingen voor Mail2Melding van TopDesk naar Facilitor (eerste opzet)

svn path=/Customer/trunk/; revision=67758
This commit is contained in:
Arthur Egberink
2025-01-28 09:36:58 +00:00
parent 8195b305fe
commit db743f04af

View File

@@ -74,6 +74,14 @@ AS
PROCEDURE upsert_artikelkenmerk (p_artId IN VARCHAR2, p_artOpm VARCHAR2);
PROCEDURE proces_email_fivoor (pfrom IN VARCHAR2,
pto IN VARCHAR2,
psubject IN VARCHAR2,
pbody IN VARCHAR2,
psessionid IN VARCHAR2,
pemailkey IN NUMBER
);
-- Einde Altrecht
END;
/
@@ -357,28 +365,33 @@ AS
v_verkoop_kenmerk_key NUMBER;
BEGIN
-- Bepaal de key van het kenmerk verkoopprijs
SELECT mld_kenmerk_key
INTO v_verkoop_kenmerk_key
FROM mld_kenmerk k, mld_opdr o
WHERE k.mld_srtkenmerk_key = 201 -- Verkoopprijs
AND k.mld_typeopdr_key = o.mld_typeopdr_key
AND o.mld_opdr_key = p_opdr_key;
BEGIN
-- Bepaal de key van het kenmerk verkoopprijs
SELECT mld_kenmerk_key
INTO v_verkoop_kenmerk_key
FROM mld_kenmerk k, mld_opdr o
WHERE k.mld_srtkenmerk_key = 201 -- Verkoopprijs
AND k.mld_typeopdr_key = o.mld_typeopdr_key
AND o.mld_opdr_key = p_opdr_key;
SELECT mld_opdr_kosten
INTO v_opdr_kosten
FROM mld_opdr o
WHERE mld_opdr_key = p_opdr_key;
SELECT mld_opdr_kosten
INTO v_opdr_kosten
FROM mld_opdr o
WHERE mld_opdr_key = p_opdr_key;
v_opslag := YASK.bepaal_opslag(p_opdr_key);
v_opslag := YASK.bepaal_opslag(p_opdr_key);
IF v_opslag = 0
IF v_opslag = 0
THEN
v_verkoopprijs := NULL;
ELSE
v_verkoopprijs := v_opdr_kosten * ((100 + v_opslag) /100);
END IF;
MLD.upsertopdrachtkenmerk (v_verkoop_kenmerk_key, p_opdr_key, v_verkoopprijs);
EXCEPTION WHEN NO_DATA_FOUND
THEN
v_verkoopprijs := NULL;
ELSE
v_verkoopprijs := v_opdr_kosten * ((100 + v_opslag) /100);
END IF;
MLD.upsertopdrachtkenmerk (v_verkoop_kenmerk_key, p_opdr_key, v_verkoopprijs);
RETURN; -- Dan heeft de opdracht geen kenmerk voor de Verkoopprijs
END;
END;
PROCEDURE fin_set_approver (p_factuur_key IN NUMBER)
@@ -1205,6 +1218,164 @@ AS
fac.writelog ('YASK.upsert_artikelkenmerk', 'E', 'Kan opmerking niet toevoegen aan artikel (' || p_artId || ')' || p_artOpm , '');
END;
PROCEDURE proces_email_fivoor (pfrom IN VARCHAR2,
pto IN VARCHAR2,
psubject IN VARCHAR2,
pbody IN VARCHAR2,
psessionid IN VARCHAR2,
pemailkey IN NUMBER
)
AS
sender prs_perslid.prs_perslid_key%TYPE;
kostenplaats prs_afdeling.prs_kostenplaats_key%TYPE;
newkey mld_melding.mld_melding_key%TYPE;
defaultstdmelding fac_setting.fac_setting_default%TYPE;
kkey_att mld_kenmerk.mld_kenmerk_key%TYPE;
kkey_mail mld_kenmerk.mld_kenmerk_key%TYPE;
errormsg fac_result.fac_result_waarde%TYPE;
status_key mld_melding.mld_melding_status%TYPE;
externnr mld_melding.mld_melding_externnr%TYPE;
gebouw_code alg_gebouw.alg_gebouw_code%TYPE;
gebouw_key alg_gebouw.alg_gebouw_key%TYPE;
locatie_key alg_locatie.alg_locatie_key%TYPE;
onderwerp mld_melding.mld_melding_onderwerp%TYPE;
k_locatiegeg mld_kenmerkmelding.mld_kenmerkmelding_waarde%TYPE;
k_plaatsruimte mld_kenmerkmelding.mld_kenmerkmelding_waarde%TYPE;
omschrijving mld_melding.mld_melding_omschrijving%TYPE;
FUNCTION findstr (p_body IN VARCHAR2, p_begin IN VARCHAR2, p_eind IN VARCHAR2)
RETURN VARCHAR2
AS
BEGIN
RETURN SUBSTR (
p_body,
INSTR (p_body, p_begin) + LENGTH (p_begin),
INSTR (p_body, p_eind, INSTR (p_body, p_begin) + LENGTH (p_begin))
- (INSTR (p_body, p_begin) + LENGTH (p_begin)));
END;
BEGIN
DELETE fac_rapport WHERE fac_rapport_node = 'PROCESEMAIL';
INSERT INTO fac_rapport (fac_rapport_node, fac_rapport_regel)
VALUES ('PROCESEMAIL', SUBSTR(pbody, 1, 2000));
defaultstdmelding := 441;
kkey_att := 41;
kkey_mail := 261;
sender := 26721; -- M2M user Fivoor
status_key := 2; -- voor feedback komt de status op FO te staan omdat de FrontOffice hier eerst naar gaat kijken.
externnr := findstr(pbody, 'Fivoor' || CHR(10), CHR(10));
gebouw_code := findstr(pbody, 'Korte omschrijving' || CHR(10), '|');
onderwerp := findstr(pbody, 'Korte omschrijving' || CHR(10), CHR(10));
k_locatiegeg := findstr(pbody, 'Ruimte / middel' || CHR(10), CHR(10) || CHR(10));
k_plaatsruimte := findstr(pbody, 'Exacte plaats/ruimte' || CHR(10), CHR(10));
omschrijving := findstr(pbody, 'Omschrijving van de melding' || CHR(10), CHR(10) || CHR(10) || 'Voor vragen');
SELECT alg_gebouw_key, alg_locatie_key
INTO gebouw_key, locatie_key
FROM alg_gebouw
WHERE alg_gebouw_verwijder IS NULL
AND alg_gebouw_code = gebouw_code;
IF defaultstdmelding IS NOT NULL
THEN
-- suggested extensions:
-- check for MLDUSE-write autorisations
-- parse the subject to find an appropriate stdmelding, if uniquely possible
-- append (as a note?) to an existing melding if #key is found in the subject
BEGIN
INSERT INTO mld_melding (mld_melding_module,
mld_meldbron_key,
mld_melding_datum,
mld_melding_onderwerp,
mld_melding_omschrijving,
mld_alg_locatie_key,
mld_alg_onroerendgoed_keys,
mld_melding_status,
mld_stdmelding_key,
prs_perslid_key,
prs_perslid_key_voor,
prs_kostenplaats_key,
mld_melding_spoed,
mld_melding_externnr)
VALUES ('MLD',
4, -- email
SYSDATE,
SUBSTR (onderwerp, 1, 80),
SUBSTR (omschrijving, 1, 4000),
locatie_key,
gebouw_key,
NULL,
defaultstdmelding,
sender,
sender,
NULL,
3,
externnr)
RETURNING mld_melding_key
INTO newkey;
FLX.setflex ('MLD', 301, newkey, SUBSTR(k_locatiegeg, 1, 100));
FLX.setflex ('MLD', 221, newkey, SUBSTR(k_plaatsruimte, 1, 300));
INSERT INTO fac_result (fac_result_sessionid,
fac_result_naam,
fac_result_waarde)
VALUES (psessionid,
'kenmerkpath',
'MLD\M' || to_char( TRUNC(newkey/1000), 'FM0000') || '___\M' || newkey || CHR(92) || kkey_att || CHR(92)); -- CHR(92) = \
INSERT INTO fac_result (fac_result_sessionid,
fac_result_naam,
fac_result_waarde)
VALUES (psessionid,
'kenmerkorgmailpath',
'MLD\M' || TO_CHAR (TRUNC (newkey / 1000), 'FM0000') || '___\M' || newkey || CHR(92) || kkey_mail || CHR(92));
mld.setmeldingstatus (newkey, status_key, sender);
INSERT INTO fac_result (fac_result_sessionid,
fac_result_naam,
fac_result_waarde)
VALUES (psessionid,
'maillog',
'Geregistreerd onder melding ' || newkey);
END;
END IF;
IF errormsg IS NOT NULL
THEN
INSERT INTO fac_result (fac_result_sessionid,
fac_result_naam,
fac_result_waarde)
VALUES (psessionid, 'errormsg', errormsg);
END IF;
EXCEPTION
WHEN OTHERS
THEN
fac.writelog (
'PROCESSEMAIL',
'W',
'Mail kon niet verwerkt worden afzender: '
|| pfrom
|| '['
|| errormsg
|| ']',
'OTHERS (error '
|| SQLCODE
|| '/'
|| SUBSTR (SQLERRM, 1, 100)
|| ')');
INSERT INTO fac_result (fac_result_sessionid,
fac_result_naam,
fac_result_waarde)
VALUES (psessionid,
'errormsg',
'Database fout - Neem contact op met uw systeembeheerder');
END;
-- Einde Altrecht routines
END;
/
@@ -1392,7 +1563,7 @@ SELECT fin_verkoopfactuur_omschr meldingnummer,
mld_melding m,
prs_kostensoort kso
WHERE m.mld_melding_status = ms.mld_statuses_key
AND m.mld_melding_key = o.mld_opdr_key
AND m.mld_melding_key = o.mld_melding_key
AND o.mld_opdr_key = vf.fin_verkoopfactuur_refkey
AND m.prs_perslid_key = pf.prs_perslid_key
AND m.mld_alg_locatie_key = l.alg_locatie_key
@@ -5508,6 +5679,398 @@ EXCEPTION
END;
/
--
--
--
CREATE OR REPLACE PROCEDURE yask_import_rabo_automaten (p_import_key IN NUMBER)
AS
CURSOR c_cursor IS
SELECT *
FROM fac_imp_file
WHERE fac_import_key = p_import_key
ORDER BY fac_imp_file_index;
v_newline VARCHAR2 (1000);
v_aanduiding VARCHAR2 (1000); -- Import line
v_field VARCHAR2 (100); -- Import field
v_fielddelimitor VARCHAR2 (1); -- Field seperator
v_errormsg VARCHAR (200);
v_errorhint VARCHAR (200);
v_errorcount NUMBER;
v_ongeldig BOOLEAN;
v_count NUMBER;
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
v_skipfield VARCHAR2 (100);
v_header1 VARCHAR2 (1000);
v_header2 VARCHAR2 (1000);
-- De importvelden
v_plaats VARCHAR2(100);
v_adres VARCHAR2(100);
v_bedrag_txt VARCHAR2(100);
v_bedrag NUMBER(11,2);
v_locatie_key NUMBER (10);
v_gebouw_key NUMBER (10);
v_onderwerp VARCHAR2(100);
header_found BOOLEAN;
v_header_chk1 BOOLEAN;
v_header_chk2 BOOLEAN;
v_header_jaar NUMBER;
v_header_maand NUMBER;
BEGIN
-- Eerst opruiming
DELETE yask_imp_rabo_automaten;
-- Init
header_found := FALSE;
v_fielddelimitor := ';';
v_errorcount := 0;
-- Controle of de import al gedaan is voor de vorige maand
FOR rec IN c_cursor
LOOP
BEGIN
v_newline := rec.fac_imp_file_line;
v_aanduiding := v_newline;
v_locatie_key := NULL;
v_gebouw_key := NULL;
v_ongeldig := FALSE;
IF SUBSTR (v_newline, 1, 3) = '?'
THEN
-- EF BB BF aangetroffen
fac.imp_writelog (p_import_key,
'W',
'Byte Order Mark aangetroffen',
'Bestand heeft onbehandeld UTF-8 formaat.');
v_newline := SUBSTR (v_newline, 4);
END IF;
fac.imp_getfield_nr (v_newline, v_fielddelimitor, 1, v_header1);
fac.imp_getfield_nr (v_newline, v_fielddelimitor, 2, v_header2);
IF header_found = FALSE
THEN
CASE rec.fac_imp_file_index
WHEN 1 THEN IF v_header1 = 'Variabele kosten losse condimenten:' THEN v_header_chk1 := TRUE; v_onderwerp := v_header1; END IF;
WHEN 3 THEN IF v_header1 = 'Year' THEN v_header_jaar := FAC.safe_to_number(v_header2); END IF;
WHEN 4 THEN IF v_header1 = 'Month' THEN v_header_maand := FAC.safe_to_number(v_header2); END IF;
WHEN 7 THEN IF v_header1 = 'City' AND v_header2 = 'Street' THEN v_header_chk2 := TRUE; END IF;
ELSE NULL;
END CASE;
IF v_header_chk1 = TRUE
AND v_header_chk2 = TRUE
AND v_header_jaar IS NOT NULL
AND v_header_maand IS NOT NULL
THEN
header_found := TRUE;
END IF;
ELSIF v_header1 <> 'Grand Total'
THEN
fac.imp_getfield_nr (v_newline, v_fielddelimitor, 1, v_plaats);
fac.imp_getfield_nr (v_newline, v_fielddelimitor, 2, v_adres);
fac.imp_getfield_nr (v_newline, v_fielddelimitor, 3, v_bedrag_txt);
-- voeg nieuwe records toe
-- en wijzig bestaande records
v_aanduiding := v_plaats || ' | ' || v_adres || ' | ' || v_bedrag_txt;
v_errorhint := 'Zoek het juiste gebouw op';
BEGIN
SELECT alg_locatie_key
INTO v_locatie_key
FROM alg_locatie l, alg_district d
WHERE alg_locatie_verwijder IS NULL
AND l.alg_district_key = d.alg_district_key
AND d.alg_regio_key = 121 -- RABOBANK.
AND UPPER (alg_locatie_plaats) = UPPER (TRIM (v_plaats))
AND UPPER (alg_locatie_adres) = UPPER (TRIM (v_adres));
BEGIN
SELECT MIN(alg_gebouw_key)
INTO v_gebouw_key
FROM alg_gebouw g
WHERE alg_gebouw_verwijder IS NULL
AND g.alg_locatie_key = v_locatie_key
AND g.alg_srtgebouw_key NOT IN (302); -- Overige gebruiksfunctie
EXCEPTION
WHEN NO_DATA_FOUND
THEN
fac.imp_writelog (p_import_key, 'E', 'Gebouw kan niet gevonden worden.', v_aanduiding);
v_ongeldig := TRUE;
END;
EXCEPTION
WHEN NO_DATA_FOUND
THEN
fac.imp_writelog (p_import_key, 'E', 'Locatie kan niet gevonden worden.', v_aanduiding);
v_ongeldig := TRUE;
WHEN TOO_MANY_ROWS
THEN
fac.imp_writelog (p_import_key, 'E', 'Meerdere locatie gevonden.', v_aanduiding);
v_ongeldig := TRUE;
END;
-- controle op bedrag
v_errorhint := 'Controle op bedrag';
v_bedrag := FAC.safe_to_number(
replace(
replace(
replace(
replace(v_bedrag_txt, '<EFBFBD>') -- Euroteken vervangen
,' ') -- Er komen spaties voor tussen een min-teken en het bedrag.
,'.') -- Duizendtal scheidingsteken vervangen
,',','.') -- Komma omzetten naar punten als decimaal scheidingsteken.
);
IF v_bedrag IS NULL
THEN
fac.imp_writelog (p_import_key, 'E', 'Bedrag is geen nummer', v_aanduiding || '(' || replace(v_bedrag_txt, '<EFBFBD>') || ')');
v_ongeldig := TRUE;
END IF;
v_errorhint := 'Vul de importtabel';
IF v_ongeldig = FALSE
THEN
INSERT INTO yask_imp_rabo_automaten (onderwerp,
alg_locatie_key,
alg_gebouw_key,
periode,
bedrag)
VALUES (v_onderwerp,
v_locatie_key,
v_gebouw_key,
v_header_jaar || '-' || v_header_maand,
v_bedrag);
END IF;
END IF;
END;
END LOOP;
END;
/
CREATE OR REPLACE PROCEDURE yask_update_rabo_automaten (p_import_key IN NUMBER)
AS
CURSOR c_cursor IS
SELECT *
FROM yask_imp_rabo_automaten;
CURSOR c_mld (c_stdmelding_key IN NUMBER)
IS
SELECT mld_melding_key, mld_melding_status
FROM mld_melding
WHERE mld_stdmelding_key = c_stdmelding_key -- Verzamelmelding Catering
AND mld_melding_status IN (0, 2, 3, 99, 4, 7) -- FrontOffice, Nieuw, Te accepteren, Niet opgelost, In behandeling, Uitgegeven
AND TRUNC(SYSDATE, 'MM') -1 > mld_melding_einddatum;
v_aanduiding VARCHAR2 (1000); -- Import line
v_errormsg VARCHAR (200);
v_errorhint VARCHAR (200);
v_errorcount NUMBER;
v_ongeldig BOOLEAN;
v_count NUMBER;
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
-- De importvelden
v_stdmelding_key NUMBER (10);
v_typeopdr_key NUMBER (10);
v_perslid_key NUMBER (10);
v_kostenplaats_key NUMBER (10);
v_melding_key NUMBER (10);
v_melding_status NUMBER (1);
v_bedrijf_key NUMBER (10);
v_contact_key NUMBER (10);
v_opdr_key NUMBER (10);
v_mld_opdr_bedrijfopdr_volgnr NUMBER;
v_rb_goedgekeurd_kenmerk_key NUMBER (10);
v_stdmelding_t_uitvoertijd mld_stdmelding.mld_stdmelding_t_uitvoertijd%TYPE;
v_stdmelding_t_accepttijd mld_stdmelding.mld_stdmelding_t_accepttijd%TYPE;
BEGIN
-- initialisatie
-- zoek de standaardmelding
v_errormsg := 'Standaard melding met code RB_RABO_AUTOMATEN opzoeken';
SELECT mld_stdmelding_key,
mld_stdmelding_t_uitvoertijd,
mld_stdmelding_t_accepttijd
INTO v_stdmelding_key,
v_stdmelding_t_uitvoertijd,
v_stdmelding_t_accepttijd
FROM mld_stdmelding
WHERE mld_stdmelding_code = 'RB_RABO_AUTOMATEN';
v_errormsg := 'Opdrachttype opzoeken om de opdracht onder aan te maken';
SELECT mld_typeopdr_key
INTO v_typeopdr_key
FROM mld_typeopdr ot
WHERE UPPER(ot.mld_typeopdr_omschrijving) like 'REVERSED%'; -- ReversedBilling
v_errormsg := 'Opzoeken van de user waaronder we de meldingen en opdrachten gaan aanmaken';
SELECT prs_perslid_key, prs_kostenplaats_key
INTO v_perslid_key, v_kostenplaats_key
FROM prs_perslid
WHERE prs_perslid_oslogin = '_RABO_AUTOMATEN';
FOR rec IN c_cursor
LOOP
BEGIN
-- controleer of er een openstaande melding is voor dit gebouw
v_errormsg := 'Kunnen we een melding vinden onder gebouw: ' || rec.alg_gebouw_key;
SELECT mld_melding_key, mld_melding_status
INTO v_melding_key, v_melding_status
FROM mld_melding
WHERE mld_stdmelding_key = v_stdmelding_key -- Verzamelmelding Catering
AND mld_melding_status IN (0, 2, 3, 99, 4, 7) -- FrontOffice, Nieuw, Te accepteren, Niet opgelost, In behandeling, Uitgegeven
AND mld_alg_onroerendgoed_keys = rec.alg_gebouw_key
AND TRUNC(SYSDATE, 'MM') -1 BETWEEN mld_melding_datum AND mld_melding_einddatum;
IF v_melding_status = 0 OR v_melding_status = 2
THEN
mld.setmeldingstatus (v_melding_key, 4, v_perslid_key);
END IF;
EXCEPTION WHEN NO_DATA_FOUND
THEN
-- dan gaan we een nieuwe melding aanmaken
v_errormsg := 'We gaan een nieuwe melding aanmaken onder gebouw: ' || rec.alg_gebouw_key;
INSERT INTO mld_melding (mld_melding_omschrijving,
prs_perslid_key,
prs_kostenplaats_key,
mld_stdmelding_key,
mld_alg_locatie_key,
mld_alg_onroerendgoed_keys,
mld_melding_einddatum,
mld_melding_datum,
mld_melding_t_uitvoertijd,
mld_melding_t_accepttijd,
mld_meldbron_key,
mld_melding_module,
mld_melding_spoed)
VALUES ('Automaat ReversedBilling boekingen',
v_perslid_key, -- API catering rabobank
v_kostenplaats_key, -- Rabobank (kostenplaats van bovenstaande user)
v_stdmelding_key,
rec.alg_locatie_key,
rec.alg_gebouw_key,
TO_DATE (TO_CHAR (TRUNC(SYSDATE, 'MM') -1, 'YYYY') || '1231',
'YYYYMMDD'),
TO_DATE (TO_CHAR (TRUNC(SYSDATE, 'MM') -1, 'YYYY') || '0101',
'YYYYMMDD'),
v_stdmelding_t_uitvoertijd,
v_stdmelding_t_accepttijd,
5,
'MLD',
3)
RETURNING mld_melding_key
INTO v_melding_key;
mld.setmeldingstatus (v_melding_key, 2, v_perslid_key);
mld.setmeldingstatus (v_melding_key, 4, v_perslid_key);
END;
-- maak een opdracht aan voor dit gebouw en deze periode
BEGIN
-- Zoek het bedrijf waaronder de opdracht aangemaakt moet worden. Dit is het bedrijf waarvan
-- de user, onder wie we de melding en opdracht aanmaken, de contactpersoon is.
v_errormsg := 'Het bedrijf opzoeken om de opdracht aan te koppelen. ' || v_perslid_key;
SELECT prs_bedrijf_key
INTO v_bedrijf_key
FROM prs_contactpersoon cp
WHERE cp.prs_perslid_key = v_perslid_key;
-- Nu op zoek naar het ReversedBilling contract
v_errormsg := 'Contract opzoeken om aan de opdracht te koppelen (bedrijf:' || v_bedrijf_key || ')';
SELECT cnt_contract_key
INTO v_contact_key
FROM cnt_contract c, cnt_discipline d
WHERE c.ins_discipline_key = d.ins_discipline_key
AND UPPER(d.ins_discipline_omschrijving) LIKE 'REVERSED%'
AND c.cnt_prs_bedrijf_key = v_bedrijf_key
AND TRUNC(SYSDATE, 'MM') -2 BETWEEN c.cnt_contract_looptijd_van AND c.cnt_contract_looptijd_tot;
v_mld_opdr_bedrijfopdr_volgnr := mld.bepaalopdrmeldingvolgnr (v_melding_key);
v_errormsg := 'Maak opdracht aan om factuur van Maas te matchen';
-- maak opdracht aan om cateringfactuur van leverancier te matchen
INSERT INTO mld_opdr (mld_melding_key,
prs_kostenplaats_key,
mld_statusopdr_key,
mld_typeopdr_key,
prs_perslid_key,
cnt_contract_key,
mld_uitvoerende_keys,
mld_opdr_datumbegin,
mld_opdr_einddatum,
mld_opdr_module,
mld_opdr_omschrijving,
mld_opdr_materiaal,
mld_opdr_kosten,
mld_opdr_bedrijfopdr_volgnr)
VALUES ( v_melding_key,
v_kostenplaats_key, -- Rabobank kostenplaats
5, -- uitgegeven
v_typeopdr_key,
v_perslid_key, -- Maas import user
v_contact_key,
v_bedrijf_key,
TO_DATE (TO_CHAR (TRUNC(SYSDATE, 'MM') -1, 'YYYYMM') || '01',
'YYYYMMDD'),
TRUNC(SYSDATE, 'MM') -1,
'MLD',
'Automaat kosten export-maand: ' || TO_CHAR (TRUNC(SYSDATE, 'MM') -1, 'MON-YYYY'),
rec.bedrag,
rec.bedrag,
v_mld_opdr_bedrijfopdr_volgnr)
RETURNING mld_opdr_key INTO v_opdr_key;
v_errormsg := 'Update opdracht status';
mld.updatemeldingstatus (v_melding_key, 0, v_perslid_key); -- Facilitor
-- meld de opdracht af
MLD.setopdrachtstatus (v_opdr_key, 6, v_perslid_key);
-- antedateren van de tracking omdat de reversedbilling alleen meegenomen wordt als de opdracht in de vorige maand is afgerond.
UPDATE fac_tracking SET fac_tracking_datum = TRUNC(SYSDATE, 'MM') -1
WHERE fac_tracking_refkey = v_opdr_key
AND fac_srtnotificatie_key IN (SELECT fac_srtnotificatie_key FROM fac_srtnotificatie WHERE fac_srtnotificatie_code = 'ORDAFM');
-- en zet hem nog op afgerond
MLD.setopdrachtstatus (v_opdr_key, 9, v_perslid_key);
UPDATE fac_tracking SET fac_tracking_datum = TRUNC(SYSDATE, 'MM') -1
WHERE fac_tracking_refkey = v_opdr_key
AND fac_srtnotificatie_key IN (SELECT fac_srtnotificatie_key FROM fac_srtnotificatie WHERE fac_srtnotificatie_code = 'ORDAFR');
v_errormsg := 'Opvragen van het opdrachtkenmerk: RB_GOEDGEKEURD';
SELECT mld_kenmerk_key
INTO v_rb_goedgekeurd_kenmerk_key
FROM mld_kenmerk k, mld_srtkenmerk sk
WHERE k.mld_srtkenmerk_key = sk.mld_srtkenmerk_key
AND sk.mld_srtkenmerk_code = 'RB_GOEDGEKEURD' -- Dispuut
AND k.mld_typeopdr_key = v_typeopdr_key;
v_errormsg := 'Kenmerk RB_GOEDGEKEURD op 1 zetten';
FLX.setflex('OPD', v_rb_goedgekeurd_kenmerk_key, v_opdr_key, '1');
END;
END LOOP;
-- afmelden oude meldingen
FOR rec_mld IN c_mld (v_stdmelding_key)
LOOP
v_errormsg := 'Afmelden oude melding ' || rec_mld.mld_melding_key;
mld.setmeldingstatus (rec_mld.mld_melding_key, 5, NULL);
END LOOP;
EXCEPTION
WHEN OTHERS
THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
v_errorhint := v_errormsg;
v_errormsg := 'Fout bij aanmaken catering RB opdracht' || ' ORACLE (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
fac.imp_writelog (p_import_key, 'E', v_errormsg, v_errorhint);
END;
/
------ payload end ------
SET DEFINE OFF