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:
601
YASK/yask.sql
601
YASK/yask.sql
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user