YAXX#88771 Koppeling Facilitor - Exact

YASK#91270 Rabobank proforma exporteren & verwerken van district naar regio

svn path=/Customer/trunk/; revision=70994
This commit is contained in:
Arthur Egberink
2025-11-19 07:18:19 +00:00
parent 3a6e9ae88c
commit cd34398578

View File

@@ -84,6 +84,17 @@ AS
RETURN NUMBER;
PROCEDURE checkopdracht (p_opdr_key IN NUMBER);
FUNCTION get_fin_exact_signature (p_factuurregel_key IN NUMBER, p_prefix IN VARCHAR2)
RETURN VARCHAR2;
PROCEDURE set_fin_exact_signature (p_factuurregel_key IN NUMBER, p_prefix IN VARCHAR2);
FUNCTION check_fin_exact_signature (p_crdnr IN VARCHAR2,
p_factuur_nr IN VARCHAR2,
p_n_fact_regels IN NUMBER)
RETURN NUMBER;
END;
/
@@ -1775,6 +1786,87 @@ AS
|| ')';
fac.writelog ('VBXX.checkopdracht', 'E', SUBSTR (v_errormsg, 1, 1000), v_errorhint || ' - opdracht_key:' || p_opdr_key);
END;
FUNCTION get_fin_exact_signature (p_factuurregel_key IN NUMBER, p_prefix IN VARCHAR2)
RETURN VARCHAR2
AS
v_signature VARCHAR2 (2000);
BEGIN
SELECT p_prefix
|| '-'
|| crdnr
|| '-'
|| factuur_nr
|| '-'
|| oms_regel
|| '-'
|| datum
|| '-'
|| fin_factuur_boekmaand
|| '-'
|| reknr
|| '-'
|| kstplcode
|| '-'
|| kstdrcode
|| '-'
|| bedrag_txt
|| '-'
|| btw_code
|| '-'
|| dagboek
|| '-'
|| oms_kop
|| '-'
|| fin_factuur_debiteur_nr
INTO v_signature
FROM vbxx_v_bron_export_exact_api
WHERE fin_factuurregel_key = p_factuurregel_key;
RETURN v_signature;
END;
PROCEDURE set_fin_exact_signature (p_factuurregel_key IN NUMBER, p_prefix IN VARCHAR2)
AS
v_signature VARCHAR2 (2000);
BEGIN
v_signature := VBXX.get_fin_exact_signature (p_factuurregel_key, p_prefix);
FLX.setflex ('FINR',
vbxx.get_kenmerk_key ('FIN', NULL, 'EXACTSIGNATURE'),
p_factuurregel_key,
v_signature);
END;
FUNCTION check_fin_exact_signature (p_crdnr IN VARCHAR2,
p_factuur_nr IN VARCHAR2,
p_n_fact_regels IN NUMBER)
RETURN NUMBER
AS
CURSOR c IS
SELECT fin_factuurregel_key
FROM vbxx_v_bron_export_exact_api x
WHERE factuur_nr = p_factuur_nr AND crdnr = p_crdnr;
v_result NUMBER;
v_signature_kenm VARCHAR2 (2000);
v_signature VARCHAR2 (2000);
BEGIN
v_result := 0;
FOR rec IN c
LOOP
v_signature_kenm := FLX.getflex ('FINR', vbxx.get_kenmerk_key ('FIN', NULL, 'EXACTSIGNATURE'), rec.fin_factuurregel_key);
v_signature := VBXX.get_fin_exact_signature (rec.fin_factuurregel_key, p_n_fact_regels);
IF v_signature_kenm <> v_signature
THEN
RETURN 0;
END IF;
END LOOP;
RETURN 1;
END;
END;
/
@@ -5286,6 +5378,7 @@ CREATE OR REPLACE VIEW vbxx_v_bron_export_exact_api
fin_factuur_key,
fin_factuur_externnr,
opdracht_id,
mld_opdr_key,
factuur_nr, -- crediteur factuurnummer
datum, -- factuurdatum
crdnr, -- crediteurnummer
@@ -5316,6 +5409,7 @@ AS
SELECT fin_factuur_key,
fin_factuur_externnr,
opdracht_id,
mld_opdr_key,
fin_factuur_nr,
TO_CHAR (fin_factuur_datum, 'yyyy-mm-dd')
datum,
@@ -5782,6 +5876,62 @@ BEGIN
END;
/
CREATE OR REPLACE PROCEDURE vbxx_verwerk_exact_api (
p_factuur_nr IN VARCHAR2,
p_crdnr IN VARCHAR2
)
AS
CURSOR c_fact
IS
SELECT DISTINCT f.fin_factuur_key, f.mld_opdr_key
FROM vbxx_v_bron_export_exact_api f
WHERE f.factuur_nr = p_factuur_nr
AND f.crdnr = p_crdnr
AND f.fin_factuur_statuses_key = 6; -- goedgekeurd
v_aanvrager NUMBER;
v_statusopdr_key NUMBER;
BEGIN
v_aanvrager := 3; -- Facilitor
FOR rec1 IN c_fact
LOOP
BEGIN
UPDATE fin_factuur f
SET fin_factuur_statuses_key = 7
WHERE f.fin_factuur_key = rec1.fin_factuur_key;
fac.trackaction ('FINVER', rec1.fin_factuur_key, v_aanvrager, NULL, NULL);
-- als opdrachtkey IS NOT NULL
IF rec1.mld_opdr_key IS NOT NULL
THEN
SELECT mld_statusopdr_key
INTO v_statusopdr_key
FROM mld_opdr
WHERE mld_opdr_key = rec1.mld_opdr_key;
--als status != afgemeld (6) en afgerond (9)
IF v_statusopdr_key <> 6 AND v_statusopdr_key <> 9
THEN
-- set status op geleverd
MLD.setopdrachtstatus (rec1.mld_opdr_key, 6, NULL);
END IF;
-- als status != afgerond (9)
IF v_statusopdr_key <> 9
THEN
-- set status op 9
MLD.setopdrachtstatus (rec1.mld_opdr_key, 9, NULL);
END IF;
END IF;
END;
END LOOP;
END;
/
--
-- Verkoopfacturen
--
@@ -5871,6 +6021,14 @@ AS
FROM alg_onrgoedkenmerk aogk, alg_kenmerk k
WHERE aogk.alg_kenmerk_key = k.alg_kenmerk_key
AND k.alg_kenmerk_code = 'BOEKMNDOFFSET'
AND k.alg_kenmerk_niveau = 'E' -- Regio
AND k.alg_kenmerk_verwijder IS NULL
AND alg_onrgoed_key = r.alg_regio_key),
(SELECT FAC.safe_to_number (alg_onrgoedkenmerk_waarde)
FROM alg_onrgoedkenmerk aogk, alg_kenmerk k
WHERE aogk.alg_kenmerk_key = k.alg_kenmerk_key
AND k.alg_kenmerk_code = 'BOEKMNDOFFSET'
AND k.alg_kenmerk_niveau = 'D'
AND k.alg_kenmerk_verwijder IS NULL
AND alg_onrgoed_key = l.alg_district_key),
0)),
@@ -5893,6 +6051,7 @@ AS
nietdoorbelasten,
o.mld_opdr_key,
l.alg_district_key,
di.alg_regio_key,
l.alg_locatie_key fclt_3d_locatie_key,
COALESCE(kso.prs_kostensoort_oms, ksm.prs_kostensoort_oms) opdracht_nen_code,
COALESCE(kso.prs_kostensoort_refcode, ksm.prs_kostensoort_refcode) opdracht_nen_exact_code,
@@ -6064,10 +6223,13 @@ SELECT fin_verkoopfactuur_omschr meldingnummer,
-- PRO_FORMA facturen
--
vbxx_klant_fin_gegevens
CREATE OR REPLACE VIEW vbxx_v_export_pro_forma (
result,
result_order,
alg_district_key
alg_district_key,
alg_regio_key
)
AS
SELECT 'meldingnummer;' ||
@@ -6098,8 +6260,8 @@ AS
'pro_forma_goedgekeurd;' ||
'niet_doorbelasten;' ||
'meldinggebouw;' ||
'klantinkoopnr', -1, alg_district_key
FROM alg_district
'klantinkoopnr', -1, -1 alg_district_key, -1 alg_regio_key
FROM DUAL
UNION ALL
SELECT meldingnummer || ';' ||
meldinglocatie || ';' ||
@@ -6131,13 +6293,15 @@ AS
meldinggebouw || ';' ||
klantinkoopnr,
mld_melding_key,
alg_district_key
alg_district_key,
alg_regio_key
FROM vbxx_v_kosten_doorbelasting
WHERE mld_statusopdr_key = 9;
-- Procedure om pro-forma factuur klaar te zetten.
CREATE OR REPLACE PROCEDURE vbxx_select_pro_forma (p_applname IN VARCHAR2,
p_applrun IN VARCHAR2,
p_regio_key IN NUMBER,
p_district_key IN NUMBER
)
AS
@@ -6147,7 +6311,7 @@ AS
FROM vbxx_v_kosten_doorbelasting
WHERE mld_statusopdr_key = 9 -- afgerond.
AND (UPPER(opdrachttype) like 'REVERSED%' OR factuurbedrag IS NOT NULL) -- ReversedBilling OF er is een factuur gekoppeld.
AND (alg_district_key = p_district_key OR p_district_key = -1);
AND (alg_district_key = p_district_key OR alg_regio_key = p_regio_key);
v_errormsg VARCHAR (200);
oracle_err_num NUMBER;
@@ -6162,30 +6326,60 @@ BEGIN
DELETE FROM imp_log
WHERE imp_log_applicatie = p_applname;
SELECT TO_CHAR (
ADD_MONTHS (
SYSDATE,
COALESCE (
(SELECT FAC.safe_to_number (alg_onrgoedkenmerk_waarde)
FROM alg_onrgoedkenmerk aogk, alg_kenmerk k
WHERE aogk.alg_kenmerk_key = k.alg_kenmerk_key -- boekmaand offset
AND k.alg_kenmerk_code = 'BOEKMNDOFFSET'
AND k.alg_kenmerk_verwijder IS NULL
AND alg_onrgoed_key = d.alg_district_key),
0)),
'yyyymm')
INTO v_boekmaand
FROM alg_district d
WHERE alg_district_key = p_district_key;
IF p_regio_key IS NULL
THEN
SELECT TO_CHAR (
ADD_MONTHS (
SYSDATE,
COALESCE (
(SELECT FAC.safe_to_number (alg_onrgoedkenmerk_waarde)
FROM alg_onrgoedkenmerk aogk, alg_kenmerk k
WHERE aogk.alg_kenmerk_key = k.alg_kenmerk_key -- boekmaand offset
AND k.alg_kenmerk_code = 'BOEKMNDOFFSET'
AND k.alg_kenmerk_verwijder IS NULL
AND alg_onrgoed_key = d.alg_district_key),
0)),
'yyyymm')
INTO v_boekmaand
FROM alg_district d
WHERE alg_district_key = p_district_key;
SELECT k.alg_kenmerk_key
INTO v_datum_pro_forma_kenmerk_key
FROM alg_kenmerk k
WHERE k.alg_kenmerk_code = 'DATUMPROFORMA'
AND k.alg_kenmerk_verwijder IS NULL;
ALG.upsertkenmerk (v_datum_pro_forma_kenmerk_key, p_district_key ,to_char(SYSDATE, 'dd-mm-yyyy hh24:mi:ss')); -- Readonly datum pro forma
SELECT k.alg_kenmerk_key
INTO v_datum_pro_forma_kenmerk_key
FROM alg_kenmerk k
WHERE k.alg_kenmerk_code = 'DATUMPROFORMA'
AND k.alg_kenmerk_niveau = 'D' -- district
AND k.alg_kenmerk_verwijder IS NULL;
ALG.upsertkenmerk (v_datum_pro_forma_kenmerk_key, p_district_key ,to_char(SYSDATE, 'dd-mm-yyyy hh24:mi:ss')); -- Readonly datum pro forma
ELSE -- regio_key is gevuld
SELECT TO_CHAR (
ADD_MONTHS (
SYSDATE,
COALESCE (
(SELECT FAC.safe_to_number (alg_onrgoedkenmerk_waarde)
FROM alg_onrgoedkenmerk aogk, alg_kenmerk k
WHERE aogk.alg_kenmerk_key = k.alg_kenmerk_key -- boekmaand offset
AND k.alg_kenmerk_code = 'BOEKMNDOFFSET'
AND k.alg_kenmerk_niveau = 'E' -- regio
AND k.alg_kenmerk_verwijder IS NULL
AND alg_onrgoed_key = r.alg_regio_key),
0)),
'yyyymm')
INTO v_boekmaand
FROM alg_regio r
WHERE r.alg_regio_key = p_regio_key;
SELECT k.alg_kenmerk_key
INTO v_datum_pro_forma_kenmerk_key
FROM alg_kenmerk k
WHERE k.alg_kenmerk_code = 'DATUMPROFORMA'
AND k.alg_kenmerk_niveau = 'E' -- regio
AND k.alg_kenmerk_verwijder IS NULL;
ALG.upsertkenmerk (v_datum_pro_forma_kenmerk_key, p_regio_key ,to_char(SYSDATE, 'dd-mm-yyyy hh24:mi:ss')); -- Readonly datum pro forma
END IF;
FOR rec IN c
LOOP
BEGIN
@@ -6220,6 +6414,7 @@ END;
CREATE OR REPLACE PROCEDURE vbxx_select_pro_forma_verwerk (p_applname IN VARCHAR2,
p_applrun IN VARCHAR2,
p_regio_key IN NUMBER,
p_district_key IN NUMBER
)
AS
@@ -6229,7 +6424,7 @@ AS
FROM vbxx_v_kosten_doorbelasting
WHERE mld_statusopdr_key = 9 -- Afgerond
AND pro_forma_goedgekeurd = 'Ja'
AND (alg_district_key = p_district_key OR p_district_key = -1);
AND (alg_district_key = p_district_key OR alg_regio_key = p_regio_key);
v_errormsg VARCHAR (200);
oracle_err_num NUMBER;
@@ -6237,6 +6432,8 @@ AS
v_boekmaand VARCHAR2 (10);
v_boekmaand_kenmerk_key NUMBER(10);
v_exp_proforma_kenmerk_key NUMBER(10);
v_onrgoed_key NUMBER(10);
v_onrgoed_niveau VARCHAR2(1);
BEGIN
@@ -6246,21 +6443,42 @@ BEGIN
-- YASK#68837 We halen de boekmaand niet meer uit het kenmerk bij het district maar we gaan deze
-- opnieuw berekenen.
SELECT TO_CHAR (
ADD_MONTHS (
SYSDATE,
COALESCE (
(SELECT FAC.safe_to_number (alg_onrgoedkenmerk_waarde)
FROM alg_onrgoedkenmerk aogk, alg_kenmerk k
WHERE aogk.alg_kenmerk_key = k.alg_kenmerk_key
AND k.alg_kenmerk_code = 'BOEKMNDOFFSET' -- boekmaand offset
AND k.alg_kenmerk_verwijder IS NULL
AND alg_onrgoed_key = d.alg_district_key),
0)),
'yyyymm')
INTO v_boekmaand
FROM alg_district d
WHERE alg_district_key = p_district_key;
IF p_regio_key IS NULL
THEN
SELECT TO_CHAR (
ADD_MONTHS (
SYSDATE,
COALESCE (
(SELECT FAC.safe_to_number (alg_onrgoedkenmerk_waarde)
FROM alg_onrgoedkenmerk aogk, alg_kenmerk k
WHERE aogk.alg_kenmerk_key = k.alg_kenmerk_key
AND k.alg_kenmerk_code = 'BOEKMNDOFFSET' -- boekmaand offset
AND k.alg_kenmerk_niveau = 'D'
AND k.alg_kenmerk_verwijder IS NULL
AND alg_onrgoed_key = d.alg_district_key),
0)),
'yyyymm')
INTO v_boekmaand
FROM alg_district d
WHERE alg_district_key = p_district_key;
ELSE
SELECT TO_CHAR (
ADD_MONTHS (
SYSDATE,
COALESCE (
(SELECT FAC.safe_to_number (alg_onrgoedkenmerk_waarde)
FROM alg_onrgoedkenmerk aogk, alg_kenmerk k
WHERE aogk.alg_kenmerk_key = k.alg_kenmerk_key
AND k.alg_kenmerk_code = 'BOEKMNDOFFSET' -- boekmaand offset
AND k.alg_kenmerk_niveau = 'E' -- regio
AND k.alg_kenmerk_verwijder IS NULL
AND alg_onrgoed_key = r.alg_regio_key),
0)),
'yyyymm')
INTO v_boekmaand
FROM alg_regio r
WHERE r.alg_regio_key = p_regio_key;
END IF;
FOR rec IN c
LOOP
@@ -6324,18 +6542,29 @@ BEGIN
END;
END LOOP;
IF p_regio_key IS NULL
THEN
v_onrgoed_key := p_district_key;
v_onrgoed_niveau := 'D';
ELSE
v_onrgoed_key := p_regio_key;
v_onrgoed_niveau := 'E';
END IF;
SELECT alg_kenmerk_key
INTO v_exp_proforma_kenmerk_key
FROM alg_kenmerk k
WHERE k.alg_kenmerk_code = 'EXPROFORMA'
AND k.alg_kenmerk_niveau = v_onrgoed_niveau
AND k.alg_kenmerk_verwijder IS NULL;
ALG.upsertkenmerk (v_exp_proforma_kenmerk_key, p_district_key ,to_char(SYSDATE, 'dd-mm-yyyy hh24:mi:ss')); -- Readonly export datum pro forma
ALG.upsertkenmerk (v_exp_proforma_kenmerk_key, v_onrgoed_key ,to_char(SYSDATE, 'dd-mm-yyyy hh24:mi:ss')); -- Readonly export datum pro forma
SELECT alg_kenmerk_key
INTO v_boekmaand_kenmerk_key
FROM alg_kenmerk k
WHERE k.alg_kenmerk_code = 'BOEKMAAND'
AND k.alg_kenmerk_niveau = v_onrgoed_niveau
AND k.alg_kenmerk_verwijder IS NULL;
ALG.upsertkenmerk (v_boekmaand_kenmerk_key, p_district_key ,v_boekmaand); -- Readonly boekmaand laatste export veld.
ALG.upsertkenmerk (v_boekmaand_kenmerk_key, v_onrgoed_key ,v_boekmaand); -- Readonly boekmaand laatste export veld.
END;
/