YKPN#83385 -- Pilot Mareon Factuurscanning bij KPN

svn path=/Customer/trunk/; revision=64695
This commit is contained in:
Arthur Egberink
2024-05-15 17:17:08 +00:00
parent df39c12640
commit 9e1ffd4c91

View File

@@ -374,13 +374,15 @@ IS
c_kenmerk_key_controle NUMBER(10);
c_kenmerk_key_verzamel NUMBER(10);
c_kenmerk_key_mareon_bron NUMBER(10);
c_kenmerk_key_gebouw NUMBER(10);
v_opdracht_key NUMBER(10);
v_controle NUMBER(1) := 0 ; -- 1 = controlevinkje op inkoopfactuur zetten
v_aanduiding_controle VARCHAR2 (1000); -- Voor logging op bijbehorende controle zodat men weet wat men moet controleren
v_fin_factuur_key NUMBER(10);
v_locatie_code ALG_LOCATIE.ALG_LOCATIE_CODE%TYPE;
v_gebouw_key ALG_GEBOUW.ALG_GEBOUW_KEY%TYPE;
v_perslid_key PRS_PERSLID.PRS_PERSLID_KEY%TYPE;
v_dubbele_facturen NUMBER(10);
v_perslid_key_beh CNT_CONTRACT.PRS_PERSLID_KEY_BEH%TYPE;
-- Verdeelperiode voor de contracten gaan bepalen
v_cnt_jaar_start NUMBER(10);
@@ -413,6 +415,31 @@ IS
v_fin_factuur_boekmaand_laatst VARCHAR(7);
v_fin_factuur_boekmaand_prev VARCHAR(7);
PROCEDURE track_error (p_error_str IN VARCHAR2, p_factuur_key IN NUMBER, p_perslid_key IN NUMBER)
IS
v_factuur_opmerking FIN_FACTUUR.FIN_FACTUUR_OPMERKING%TYPE;
BEGIN
fac.trackaction ('FINUPD', p_factuur_key, p_perslid_key, NULL, p_error_str);
SELECT fin_factuur_opmerking
INTO v_factuur_opmerking
FROM fin_factuur
WHERE fin_factuur_key = p_factuur_key;
IF v_factuur_opmerking IS NOT NULL
THEN
v_factuur_opmerking := v_factuur_opmerking || CHR (13) || CHR (10) || p_error_str;
ELSE
v_factuur_opmerking := p_error_str;
END IF;
-- nog reden vullen:
UPDATE fin_factuur
SET fin_factuur_statuses_key = 3,
fin_factuur_opmerking = v_factuur_opmerking
WHERE fin_factuur_key = p_factuur_key;
END;
BEGIN
SELECT prs_perslid_key
@@ -585,6 +612,12 @@ BEGIN
AND fin_kenmerk_code = 'MAREON_BRON'
AND fin_kenmerk_verwijder IS NULL;
-- CUST: Voor vullen van het gebouwkenmerk op factuurregelniveau
SELECT MIN (fin_kenmerk_key)
INTO c_kenmerk_key_gebouw
FROM fin_kenmerk
WHERE fin_kenmerk_code = 'GEBOUW'
AND fin_kenmerk_verwijder IS NULL;
-- We gaan nu beginnen met het verder verwerken van de factuur..
FOR rec IN cfactuur
@@ -632,14 +665,8 @@ BEGIN
IF (rec.mld_opdr_key IS NULL AND rec.cnt_contract_key IS NULL AND rec.bes_bestelopdr_key IS NULL) AND rec.kenmerk6 NOT IN ('3')
THEN
v_aanduiding_controle := 'CONTROLE - Factuur incompleet i.v.m. ontbrekende orderreferentie (vanuit scanning)' ;
v_controle := 1 ;
fac.trackaction ('FINUPD', rec.fin_factuur_key, v_perslid_key, NULL, v_aanduiding_controle);
INSERT INTO fin_kenmerkfactuur (fin_factuur_key, fin_kenmerk_key, fin_kenmerkfactuur_waarde)
VALUES (rec.fin_factuur_key, c_kenmerk_key_controle, 1);
v_aanduiding_controle := 'ERROR: Factuur incompleet i.v.m. ontbrekende orderreferentie (vanuit scanning)' ;
track_error (v_aanduiding_controle, rec.fin_factuur_key, v_perslid_key);
END IF;
@@ -649,19 +676,8 @@ BEGIN
IF rec.kenmerk6 = '3'
THEN
v_aanduiding_controle := 'CONTROLE - Betreft D-categorie factuur!' ;
fac.trackaction ('FINUPD', rec.fin_factuur_key, v_perslid_key, NULL, v_aanduiding_controle);
INSERT INTO fin_kenmerkfactuur (fin_factuur_key, fin_kenmerk_key, fin_kenmerkfactuur_waarde)
VALUES (rec.fin_factuur_key, c_kenmerk_key_controle, 1);
-- nog reden vullen:
UPDATE fin_factuur
SET fin_factuur_statuses_key = 3,
fin_factuur_opmerking = rec.kenmerk7
WHERE fin_factuur_key = rec.fin_factuur_key ;
v_aanduiding_controle := 'ERROR: ' || REPLACE(rec.kenmerk7, ' @@', CHR(13)||CHR(10));
track_error (v_aanduiding_controle, rec.fin_factuur_key, v_perslid_key);
END IF;
@@ -719,20 +735,30 @@ BEGIN
AND f.fin_factuur_statuses_key NOT IN (1)
AND f.fin_factuur_verwijder IS NULL
AND f.fin_factuur_key <> rec.fin_factuur_key;
-- De beheerder van het contract gaat als eerste goedkeurder ingevuld worden.
-- Tenminste als deze rechten heeft op WEB_FINGOE
SELECT MAX(prs_perslid_key_beh)
INTO v_perslid_key_beh
FROM cnt_contract c, fac_v_webgebruiker g, fac_functie f
WHERE c.prs_perslid_key_beh = g.prs_perslid_key
AND g.fac_functie_key = f.fac_functie_key
AND f.fac_functie_code = 'WEB_FINGOE'
AND cnt_contract_key = rec.cnt_contract_key;
IF v_perslid_key_beh IS NOT NULL
THEN
UPDATE fin_factuur
SET prs_perslid_key_goedkeur = v_perslid_key_beh
WHERE fin_factuur_key = rec.fin_factuur_key;
END IF;
END IF;
IF v_dubbele_facturen <> 0
THEN
v_aanduiding_controle := 'Dubbele facturen gevonden!' ;
fac.trackaction ('FINUPD', rec.fin_factuur_key, v_perslid_key, NULL, v_aanduiding_controle);
-- nog reden vullen:
UPDATE fin_factuur
SET fin_factuur_statuses_key = 3,
fin_factuur_opmerking = v_aanduiding_controle
WHERE fin_factuur_key = rec.fin_factuur_key ;
v_aanduiding_controle := 'ERROR: Dubbele facturen gevonden!' ;
track_error (v_aanduiding_controle, rec.fin_factuur_key, v_perslid_key);
END IF;
-- tot slot nog nette logging
@@ -750,8 +776,8 @@ BEGIN
IF rec.mld_opdr_key IS NOT NULL
THEN
BEGIN
SELECT l.alg_locatie_code
INTO v_locatie_code
SELECT l.alg_locatie_code, (SELECT MAX(alg_gebouw_key) FROM alg_v_aanweziggebouw g WHERE g.alg_locatie_key = l.alg_locatie_key)
INTO v_locatie_code, v_gebouw_key
FROM mld_opdr o, mld_melding m, alg_locatie l
WHERE o.mld_opdr_key = rec.mld_opdr_key
AND o.mld_melding_key = m.mld_melding_key
@@ -766,8 +792,8 @@ BEGIN
IF rec.bes_bestelopdr_key IS NOT NULL
THEN
BEGIN
SELECT l.alg_locatie_code
INTO v_locatie_code
SELECT l.alg_locatie_code, (SELECT MAX(alg_gebouw_key) FROM alg_v_aanweziggebouw g WHERE g.alg_locatie_key = l.alg_locatie_key)
INTO v_locatie_code, v_gebouw_key
FROM bes_bestelopdr o, mld_adres a, alg_locatie l
WHERE o.bes_bestelopdr_key = rec.bes_bestelopdr_key
AND o.mld_adres_key_lev = a.mld_adres_key
@@ -782,8 +808,8 @@ BEGIN
IF rec.cnt_contract_key IS NOT NULL
THEN
BEGIN
SELECT alg_locatie_code
INTO v_locatie_code
SELECT alg_locatie_code, (SELECT MAX(alg_gebouw_key) FROM alg_v_aanweziggebouw g WHERE g.alg_locatie_key = l.alg_locatie_key)
INTO v_locatie_code, v_gebouw_key
FROM alg_district d, alg_locatie l, fin_factuurregel fr
WHERE d.alg_district_key = l.alg_district_key
AND d.alg_regio_key IN (2, 3) -- binnenland / buitenland
@@ -803,6 +829,16 @@ BEGIN
SET fr.fin_factuurregel_referentie = v_locatie_code
WHERE fr.fin_factuurregel_key = rec.fin_factuurregel_key;
IF v_gebouw_key IS NOT NULL
THEN
INSERT INTO fin_kenmerkfactregel (fin_kenmerk_key,
fin_factuurregel_key,
fin_kenmerkfactregel_waarde)
VALUES (c_kenmerk_key_gebouw,
rec.fin_factuurregel_key,
v_gebouw_key);
END IF;
-- Zijn er regels niet goed geimporteerd? Dat kan voorkomen als bijvoorbeeld de combinatie btw tarief en verlegd
-- niet leiden tot een eenduidige Exact code
IF rec.fin_factuurregel_key IS NULL
@@ -817,15 +853,9 @@ BEGIN
IF v_fin_factuur_key IS NOT NULL
THEN
v_aanduiding_controle := 'Fouten in ge<67>mporteerde factuur op ' || to_char(SYSDATE, 'DD-MM-YYYY');
v_aanduiding_controle := 'ERROR: Fouten in ge<67>mporteerde factuur op ' || to_char(SYSDATE, 'DD-MM-YYYY');
track_error (v_aanduiding_controle, rec.fin_factuur_key, v_perslid_key);
fac.trackaction ('FINUPD', rec.fin_factuur_key, v_perslid_key, NULL, v_aanduiding_controle);
-- nog reden vullen:
UPDATE fin_factuur
SET fin_factuur_statuses_key = 3,
fin_factuur_opmerking = v_aanduiding_controle
WHERE fin_factuur_key = rec.fin_factuur_key;
END IF;
END IF;
END;
@@ -873,6 +903,26 @@ EXCEPTION
END;
/
CREATE OR REPLACE VIEW vbxx_v_fac_scan_result_detail
AS
SELECT fac_tracking_refkey factuur_key,
fac_tracking_datum,
FAC.gettrackingdate('FINNEW', fac_tracking_refkey) fin_factuur_aanmaak,
fac_tracking_oms,
CASE
WHEN fac_tracking_oms LIKE 'ERROR%' THEN 1
WHEN fac_tracking_oms = 'Factuur ge<67>mporteerd met fouten' THEN 1
ELSE 0
END waarde
FROM fac_tracking t, fac_srtnotificatie sn
WHERE t.fac_srtnotificatie_key = sn.fac_srtnotificatie_key
AND sn.fac_srtnotificatie_code IN ('FINNEW', 'FINUPD');
CREATE OR REPLACE VIEW vbxx_v_fac_scan_result_trend
AS
SELECT factuur_key, fin_factuur_aanmaak, MAX (waarde) waarde
FROM vbxx_v_fac_scan_result_detail
GROUP BY factuur_key, fin_factuur_aanmaak;
------ payload end ------