YKPN#88528 KPN functionaliteit is conditioneel gemaakt in de generieke factuurimport functie

svn path=/Customer/trunk/; revision=68838
This commit is contained in:
Arthur Egberink
2025-04-23 09:01:14 +00:00
parent b1edc811ce
commit b3577b40da

View File

@@ -670,7 +670,9 @@ AS
v_factuur_totaal fin_factuur.fin_factuur_totaal%TYPE;
v_perslid_naam_goedkeur VARCHAR2 (100);
v_locatie_key alg_locatie.alg_locatie_key%TYPE;
v_regio_key alg_regio.alg_regio_key%TYPE;
v_funccodegk_kenmerk_key fin_kenmerk.fin_kenmerk_key%TYPE;
v_kenmerk_fg alg_onrgoedkenmerk.alg_onrgoedkenmerk_waarde%TYPE;
v_contract_key NUMBER(10);
v_contract_mngr_key NUMBER(10);
v_funccodegk VARCHAR2(10);
@@ -682,11 +684,71 @@ AS
oracle_err_mes VARCHAR2 (200);
BEGIN
-- Nu bepalen we de locatie van de factuur. Adh daarvan kunnen we bepalen wie hier rechten op heeft.
v_errorhint := 'Bepaal locatie.';
SELECT l.alg_locatie_key, d.alg_regio_key
INTO v_locatie_key, v_regio_key
FROM ( SELECT fc.fin_factuur_key, MIN (cs.cnt_alg_plaats_key) alg_gebouw_key
FROM fin_factuur fc, cnt_contract_plaats cs
WHERE fc.cnt_contract_key = cs.cnt_contract_key
AND cnt_alg_plaats_code = 'G'
AND cnt_contract_plaats_verwijder IS NULL
GROUP BY fc.fin_factuur_key
UNION ALL
SELECT fo.fin_factuur_key, og.alg_gebouw_key
FROM fin_factuur fo,
mld_opdr o1,
mld_melding m1,
alg_v_allonroerendgoed og
WHERE fo.mld_opdr_key = o1.mld_opdr_key
AND o1.mld_melding_key = m1.mld_melding_key
AND m1.mld_alg_onroerendgoed_keys = og.alg_onroerendgoed_keys
UNION ALL
SELECT fb.fin_factuur_key, MIN (g1.alg_gebouw_key) alg_gebouw_key
FROM fin_factuur fb,
bes_bestelopdr_item boi,
bes_bestelling_item bi,
bes_bestelling b,
alg_gebouw g1
WHERE fb.bes_bestelopdr_key = boi.bes_bestelopdr_key
AND boi.bes_bestelopdr_item_key = bi.bes_bestelopdr_item_key
AND bi.bes_bestelling_key = b.bes_bestelling_key
AND b.mld_adres_key_lev = g1.mld_adres_key
GROUP BY fb.fin_factuur_key) fg,
alg_gebouw g,
alg_locatie l,
alg_district d
WHERE fg.alg_gebouw_key = g.alg_gebouw_key
AND g.alg_locatie_key = l.alg_locatie_key
AND l.alg_district_key = d.alg_district_key
AND fg.fin_factuur_key = p_factuur_key;
v_errorhint := 'Bepaal de instelling of we gaan goedkeuren op deze locatie.';
BEGIN
SELECT FLX.getflex ('ALG',
k.alg_kenmerk_key,
v_regio_key,
'E',1)
INTO v_kenmerk_fg
FROM alg_kenmerk k
WHERE alg_kenmerk_code = 'FACT_AUTO_GOEDKEUREN';
EXCEPTION WHEN NO_DATA_FOUND
THEN
v_kenmerk_fg := 0;
END;
-- Als er een match was op de factuur hoeven we niets te doen. We laten alleen facturen goedkeuren als er een mismatch
-- in het verplichtingsbedrag is en het factuurbedrag.
IF vbxx.matchfactuur(p_factuur_key) <> -1 AND 1=0 -- Voorlopig besloten dat alle facturen gecontroleerd moeten worden.
IF vbxx.matchfactuur(p_factuur_key) <> -1 AND v_kenmerk_fg = 1 -- Als de factuur matched en 'Facturen zonder afwijking automatisch goedkeuren' staat aan bij de regio
THEN
RETURN;
UPDATE fin_factuur
SET fin_factuur_statuses_key = 5
WHERE fin_factuur_key = p_factuur_key;
-- Voeg tracking toe dat de factuur automatisch is goedgekeurd.
fac.trackaction('FINGOE', p_factuur_key, NULL, NULL, NULL);
RETURN;
END IF;
v_errorhint := 'Bepaal factuurbedrag en goedkeurder.';
@@ -734,40 +796,6 @@ AS
AND t.prs_perslid_key = v_perslid_key_goedkeur
AND t.fac_tracking_refkey = p_factuur_key;
-- Nu bepalen we de locatie van de factuur. Adh daarvan kunnen we bepalen wie hier rechten op heeft.
v_errorhint := 'Bepaal locatie.';
SELECT alg_locatie_key
INTO v_locatie_key
FROM ( SELECT fc.fin_factuur_key, MIN (cs.cnt_alg_plaats_key) alg_gebouw_key
FROM fin_factuur fc, cnt_contract_plaats cs
WHERE fc.cnt_contract_key = cs.cnt_contract_key
AND cnt_alg_plaats_code = 'G'
AND cnt_contract_plaats_verwijder IS NULL
GROUP BY fc.fin_factuur_key
UNION ALL
SELECT fo.fin_factuur_key, og.alg_gebouw_key
FROM fin_factuur fo,
mld_opdr o1,
mld_melding m1,
alg_v_allonroerendgoed og
WHERE fo.mld_opdr_key = o1.mld_opdr_key
AND o1.mld_melding_key = m1.mld_melding_key
AND m1.mld_alg_onroerendgoed_keys = og.alg_onroerendgoed_keys
UNION ALL
SELECT fb.fin_factuur_key, MIN (g1.alg_gebouw_key) alg_gebouw_key
FROM fin_factuur fb,
bes_bestelopdr_item boi,
bes_bestelling_item bi,
bes_bestelling b,
alg_gebouw g1
WHERE fb.bes_bestelopdr_key = boi.bes_bestelopdr_key
AND boi.bes_bestelopdr_item_key = bi.bes_bestelopdr_item_key
AND bi.bes_bestelling_key = b.bes_bestelling_key
AND b.mld_adres_key_lev = g1.mld_adres_key
GROUP BY fb.fin_factuur_key) fg,
alg_gebouw g
WHERE fg.alg_gebouw_key = g.alg_gebouw_key AND fg.fin_factuur_key = p_factuur_key;
v_errorhint := 'Bepaal kenmerk_key van FUNCCODEGK.';
SELECT k.fin_kenmerk_key
INTO v_funccodegk_kenmerk_key
@@ -5864,21 +5892,26 @@ BEGIN
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_eig)
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
-- Bij YKPN wordt de beheerder van het contract als eerste goedkeurder aangewezen.
-- Voor de andere omgevingen wordt dit in het fin_set_approver proces uitgezocht.
IF vbxx.get_user = 'YKPN'
THEN
UPDATE fin_factuur
SET prs_perslid_key_goedkeur = v_perslid_key_beh
WHERE 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;
END IF;
@@ -5894,7 +5927,12 @@ BEGIN
fac.trackaction ('FINUPD', rec.fin_factuur_key, v_perslid_key, NULL, v_aanduiding);
END;
vbxx.fin_set_approver(rec.fin_factuur_key);
-- Bij YKPN gaan we nog niet het generieke proces af trappen.
IF vbxx.get_user <> 'YKPN'
THEN
vbxx.fin_set_approver(rec.fin_factuur_key);
END IF;
END LOOP;
-- We gaan nu beginnen met het verder verwerken van de factuur..