YASK#76376 -- Export en verwerkingjobs voor facturen beschikbaar maken voor Mindlabs

svn path=/Customer/trunk/; revision=59967
This commit is contained in:
Arthur Egberink
2023-04-12 11:02:36 +00:00
parent f97cf72fdd
commit 427ebcd20d

View File

@@ -2878,33 +2878,6 @@ SELECT fin_factuur_nr,
-- Views en procedures voor de Exact export naar Veza voor Mindlabs
CREATE OR REPLACE VIEW yask_v_factuur_gegevens_veza
(
fin_factuur_key,
opdracht_id,
fin_factuur_datum,
fin_factuur_nr,
prs_bedrijf_key,
fin_factuurregel_omschrijving,
prs_kostensoort_refcode,
prs_kostensoort_oms,
fin_factuurregel_totaal,
fin_factuurregel_btw,
fin_btwtabelwaarde_code,
fin_btwtabelwaarde_key,
fin_factuurregel_nr,
fin_factuur_debiteur_nr,
fin_factuur_opmerking,
fin_factuur_boekmaand,
opdr_datum,
prs_kostenplaats_key,
mld_opdr_key,
cnt_contract_key,
bes_bestelopdr_key,
fin_factuur_statuses_key,
lev_kpn,
kpcode,
kdcode
)
AS
SELECT f.fin_factuur_key,
DECODE (
@@ -2959,7 +2932,7 @@ AS
COALESCE (
o.mld_opdr_datumbegin,
COALESCE (c.cnt_contract_looptijd_tot,
bo.bes_bestelopdr_datum)),
bo.bes_bestelopdr_datum)) opdr_datum,
COALESCE (
o.prs_kostenplaats_key,
COALESCE (
@@ -2971,7 +2944,8 @@ AS
WHERE bo.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 bi.bes_bestelling_key = b.bes_bestelling_key))) prs_kostenplaats_key,
'ML' dagboek,
o.mld_opdr_key,
c.cnt_contract_key,
bo.bes_bestelopdr_key,
@@ -3002,10 +2976,14 @@ AS
lev_kpn,
(SELECT alg_gebouw_code
FROM alg_gebouw g
WHERE g.alg_gebouw_key = COALESCE(cg.alg_gebouw_key, og.alg_gebouw_key)),
WHERE g.alg_gebouw_key = COALESCE(cg.alg_gebouw_key, og.alg_gebouw_key)) kpcode,
(SELECT alg_gebouw_code
FROM alg_gebouw g
WHERE g.alg_gebouw_key = COALESCE(cg.alg_gebouw_key, og.alg_gebouw_key))
WHERE g.alg_gebouw_key = COALESCE(cg.alg_gebouw_key, og.alg_gebouw_key)) kdcode,
(SELECT alg_district_key
FROM alg_gebouw g, alg_locatie l
WHERE g.alg_locatie_key = l.alg_locatie_key
AND g.alg_gebouw_key = COALESCE(cg.alg_gebouw_key, og.alg_gebouw_key)) alg_district_key
FROM fin_factuur f,
fin_factuurregel fr,
fin_btwtabelwaarde btw,
@@ -3021,8 +2999,17 @@ AS
prs_kostensoortgrp kg,
prs_kostenplaats lk,
alg_v_allonrgoed_gegevens og,
(SELECT kfr.fin_factuurregel_key, 8341 alg_gebouw_key -- MLTB Mindlabs Tilburg
FROM fin_factuurregel kfr) cg
(SELECT DISTINCT f1.fin_factuur_key, cnt_alg_plaats_key alg_gebouw_key
FROM fin_factuur f1, cnt_contract_plaats cp
WHERE f1.cnt_contract_key = cp.cnt_contract_key
AND cnt_alg_plaats_code = 'G'
UNION ALL
SELECT DISTINCT f1.fin_factuur_key, g.alg_gebouw_key
FROM fin_factuur f1, cnt_contract_plaats cp, alg_gebouw g
WHERE f1.cnt_contract_key = cp.cnt_contract_key
AND cnt_alg_plaats_code = 'L'
AND cnt_alg_plaats_key = g.alg_locatie_key
) cg
WHERE f.fin_factuur_key = fr.fin_factuur_key
AND fr.fin_btwtabelwaarde_key = btw.fin_btwtabelwaarde_key
AND f.mld_opdr_key = o.mld_opdr_key(+)
@@ -3036,10 +3023,505 @@ AS
AND k.prs_kostensoort_key = COALESCE(fr.prs_kostensoort_key, f.prs_kostensoort_key)
AND k.prs_kostenplaats_key = lk.prs_kostenplaats_key(+)
AND k.prs_kostensoortgrp_key = kg.prs_kostensoortgrp_key(+)
AND fr.fin_factuurregel_key = cg.fin_factuurregel_key(+)
AND f.fin_factuur_key = cg.fin_factuur_key(+)
AND m.mld_alg_onroerendgoed_keys = og.alg_onroerendgoed_keys(+)
AND f.fin_factuur_verwijder IS NULL;
CREATE OR REPLACE VIEW yask_v_bron_export_exact_veza
AS
SELECT fin_factuur_key,
SUBSTR(b.prs_bedrijf_naam, 1,30) oms_kop,
REPLACE (SUBSTR (fin_factuurregel_omschrijving, 1, 60), ',', '')
oms_detail,
opdracht_id,
fin_factuur_nr factuur_nr,
TO_CHAR (fin_factuur_datum, 'yyyy-mm-dd') datum,
b.prs_leverancier_nr crdnr,
REPLACE (TO_CHAR (bedrag), ',', '.') bedrag_txt,
bedrag,
bedrag_incl,
fin_factuur_nr betaalref,
prs_kostensoort_oms itemcode,
prs_kostensoort_refcode reknr,
kpcode kstplcode,
kdcode kstdrcode,
fin_btwtabelwaarde_code btw_code,
lev_kpn,
(SELECT fin_kenmerkfactuur_waarde
FROM fin_kenmerkfactuur kf
WHERE fin_kenmerk_key = 61
AND kf.fin_factuur_key = fg.fin_factuur_key) boekstuknr,
dagboek
FROM ( SELECT g.fin_factuur_key,
opdracht_id,
fin_factuur_datum,
fin_factuur_nr,
prs_bedrijf_key,
fin_factuur_debiteur_nr,
fin_factuur_opmerking,
prs_kostensoort_refcode,
prs_kostensoort_oms,
fin_factuurregel_omschrijving,
SUM (fin_factuurregel_totaal) bedrag,
SUM (fin_factuurregel_totaal + fin_factuurregel_btw) bedrag_incl,
fin_btwtabelwaarde_code,
mld_opdr_key,
cnt_contract_key,
prs_kostenplaats_key,
lev_kpn,
kpcode,
kdcode,
g.dagboek
FROM yask_v_factuur_gegevens_veza g
, yask_exp_factuur e
WHERE fin_factuur_statuses_key = 6
AND g.fin_factuur_key = e.fin_factuur_key
AND g.dagboek = e.dagboek
GROUP BY g.fin_factuur_key,
opdracht_id,
fin_factuur_datum,
fin_factuur_nr,
prs_bedrijf_key,
fin_factuur_debiteur_nr,
fin_factuur_opmerking,
prs_kostensoort_refcode,
prs_kostensoort_oms,
fin_btwtabelwaarde_code,
fin_factuurregel_omschrijving,
mld_opdr_key,
cnt_contract_key,
prs_kostenplaats_key,
lev_kpn,
kpcode,
kdcode,
g.dagboek) fg,
prs_bedrijf b
WHERE fg.prs_bedrijf_key = b.prs_bedrijf_key;
CREATE OR REPLACE VIEW yask_v_export_exact_veza_t (
result,
result_order
)
AS
SELECT REPLACE(REPLACE( regelnummer
|| ','
|| dagb_type
|| ','
|| dagbknr
|| ','
|| periode
|| ','
|| bkjcode
|| ','
|| boekstuknr
|| ','
|| oms25
|| ','
|| datum
|| ','
|| empty9
|| ','
|| debnr
|| ','
|| crdnr
|| ','
|| empty12
|| ','
|| bedrag
|| ','
|| drbk_in_val
|| ','
|| valcode
|| ','
|| koers
|| ','
|| kredbep
|| ','
|| bdrkredbep
|| ','
|| vervdatfak
|| ','
|| vervdatkrd
|| ','
|| empty21
|| ','
|| empty22
|| ','
|| weeknummer
|| ','
|| betaalref
|| ','
|| betwijze
|| ','
|| grek_bdr
|| ','
|| empty27
|| ','
|| empty28
|| ','
|| empty29
|| ','
|| empty30
|| ','
|| empty31
|| ','
|| transsubtype
|| ','
|| empty33
|| ','
|| empty34
|| ','
|| empty35
|| ','
|| empty36
|| ','
|| empty37
|| ','
|| empty38
|| ','
|| projectnr
|| ','
|| empty40,CHR (13), ''), CHR (10), '<ret>'),
boekstuknr * 100 + regelnummer
FROM (
SELECT 0 regelnummer,
'I' dagb_type,
'61' dagbknr,
'' periode,
'' bkjcode,
boekstuknr,
oms_kop oms25,
TO_CHAR (TO_DATE(datum, 'yyyy-mm-dd'), 'ddmmyyyy') datum,
'' empty9,
'' debnr,
crdnr,
'' empty12,
REPLACE (TO_CHAR (bedrag), ',', '.') bedrag,
'' drbk_in_val,
'' valcode,
'' koers,
'' kredbep,
'' bdrkredbep,
'' vervdatfak,
'' vervdatkrd,
'' empty21,
'' empty22,
'' weeknummer,
betaalref,
'' betwijze,
'' grek_bdr,
'' empty27,
'' empty28,
'' empty29,
'' empty30,
'' empty31,
'' transsubtype,
'' empty33,
'' empty34,
'' empty35,
'' empty36,
'' empty37,
'' empty38,
'' projectnr,
'!' empty40
FROM (SELECT datum,
factuur_nr,
betaalref,
crdnr,
oms_kop,
boekstuknr,
SUM (bedrag_incl)
bedrag
FROM yask_v_bron_export_exact_veza
GROUP BY datum,
factuur_nr,
betaalref,
crdnr,
oms_kop,
boekstuknr) fg
UNION ALL
SELECT 1 regelnummer,
'I' dagb_type,
'61' dagbknr,
'' periode,
'' bkjcode,
boekstuknr,
oms_detail,
TO_CHAR (TO_DATE(datum, 'yyyy-mm-dd'), 'ddmmyyyy') datum,
reknr,
'' debnr,
crdnr,
'' empty12,
REPLACE (TO_CHAR (bedrag_incl), ',', '.') bedrag,
opdracht_id drbk_in_val,
'' val_code,
'' koers,
'' kredbep,
'' bdrkredbep,
'' vervdatfak,
'' vervdatkrd,
btw_code,
REPLACE (TO_CHAR (bedrag_incl - bedrag), ',', '.') btw_bdr,
'' weeknummer,
'' empty24,
'' empty25,
'' empty26,
kstplcode,
kstdrcode,
'' empty29,
'' empty30,
'' empty31,
'' transsubtype,
'' empty33,
'' empty34,
'' emtpy35,
'' empty36,
'' empty37,
'' empty38,
'' projectnr,
'!' empty40
FROM yask_v_bron_export_exact_veza fg
ORDER BY boekstuknr, regelnummer);
CREATE OR REPLACE VIEW yask_v_export_exact_veza (
result,
result_order
)
AS
SELECT fac_rapport_regel, fac_rapport_volgnr
FROM fac_rapport
WHERE fac_rapport_node = 'EXACT_VEZA';
CREATE OR REPLACE PROCEDURE yask_select_exact_veza (p_applname IN VARCHAR2,
p_applrun IN VARCHAR2
)
AS
CURSOR c
IS
SELECT crdnr, factuur_nr, MAX(datum) datum
FROM yask_v_bron_export_exact_veza
WHERE dagboek = 'ML'
GROUP BY crdnr, factuur_nr;
CURSOR c_sub (c_crdnr VARCHAR2, c_factuur_nr VARCHAR2)
IS
SELECT *
FROM yask_v_bron_export_exact_veza
WHERE COALESCE(crdnr, 'CrdNr') = COALESCE(c_crdnr, 'CrdNr')
AND dagboek = 'ML'
AND factuur_nr = c_factuur_nr;
CURSOR cv IS
SELECT result, result_order
FROM yask_v_export_exact_veza_t
ORDER BY result_order;
v_first NUMBER;
v_count NUMBER;
v_bestand VARCHAR2(12);
v_boekstuknummer NUMBER;
v_crdnr PRS_BEDRIJF.PRS_LEVERANCIER_NR%TYPE;
v_factuur_nr FIN_FACTUUR.FIN_FACTUUR_NR%TYPE;
v_log VARCHAR2(1000);
v_log_prev VARCHAR2 (1000);
v_errormsg VARCHAR (200);
v_errorhint VARCHAR (200);
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
BEGIN
v_count := 0;
v_bestand := SUBSTR(p_applname, 1, 12);
v_crdnr := 'Q';
v_factuur_nr := 'Q';
-- Eerst opruiming
DELETE FROM imp_log
WHERE imp_log_applicatie = p_applname;
DELETE fac_rapport
WHERE fac_rapport_node = v_bestand;
DELETE fin_kenmerkfactuur kf
WHERE fin_kenmerk_key = 61
AND fin_factuur_key IN (SELECT fin_factuur_key
FROM fin_factuur
WHERE fin_factuur_statuses_key <> 7);
-- Bewaar de factuur keys in een tijdelijke tabel zodat bij het verwerken (nieuwe export)
-- deze keys gebruikt kunnen worden.
DELETE yask_exp_factuur
WHERE dagboek = 'ML';
INSERT INTO yask_exp_factuur (fin_factuur_key, dagboek)
( SELECT DISTINCT fin_factuur_key, 'ML'
FROM yask_v_factuur_gegevens_veza
WHERE fin_factuur_statuses_key = 6
AND dagboek = 'ML'
AND fin_factuur_datum > SYSDATE - (5 * 365) -- Check op geldige factuurdatum:
AND fin_factuur_datum < SYSDATE + 365 -- facturen mogen niet ouder zijn dan 5 jaar of meer dan <20><>n jaar in de toekomst.
);
-- Bepaal het boekstuknummer (key 1) met het hoogste nummer van dit jaar
SELECT MAX(fin_kenmerkfactuur_waarde)
INTO v_boekstuknummer
FROM fin_kenmerkfactuur
WHERE fin_kenmerk_key = 61
AND SUBSTR(fin_kenmerkfactuur_waarde,1,2) = TO_CHAR(SYSDATE, 'YY');
IF v_boekstuknummer IS NULL
THEN
v_boekstuknummer := FAC.safe_to_number(TO_CHAR(SYSDATE, 'YY') || '610000');
END IF;
-- nu gaan we de boekstuknummer invullen
FOR rec IN c
LOOP
BEGIN
-- Als we een nieuwe leverancier/factuurnummer tegenkomen gaan we het boekstuknummer ophogen.
IF rec.crdnr <> v_crdnr OR rec.factuur_nr <> v_factuur_nr
THEN
v_boekstuknummer := v_boekstuknummer + 1;
v_crdnr := rec.crdnr;
v_factuur_nr := rec.factuur_nr;
END IF;
FOR rec1 IN c_sub (v_crdnr, v_factuur_nr)
LOOP
BEGIN
-- Boekstuknummer aanmaken
yask.set_kenmerk('FIN', 61, rec1.fin_factuur_key, v_boekstuknummer, 0);
END;
END LOOP;
END;
END LOOP;
-- De view bevat voor alle subregels volgnummer 1. Deze gaan we nu omzetten naar echte volgnummers.
FOR rec IN cv
LOOP
BEGIN
v_first := substr(rec.result, 1,1);
IF v_first = 0 THEN
v_count := 0;
ELSE
v_count := v_count + 1;
END IF;
v_log_prev := v_log;
v_log := rec.result_order || ' | ' || rec.result_order;
INSERT INTO fac_rapport (
fac_rapport_regel,
fac_rapport_volgnr,
fac_rapport_node)
VALUES (
v_count || substr (rec.result, 2),
SUBSTR(rec.result_order, 1,2) || SUBSTR(rec.result_order, 5,4) || to_char(1000+v_count), -- forceer sortering bij count > 9, alleen jaar en volgnummer van het boekstuknummer zijn interessant.
v_bestand);
END;
END LOOP;
EXCEPTION
WHEN OTHERS
THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
v_errormsg := 'OTHERS (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
fac.writelog (p_applname, 'E', SUBSTR (v_errormsg, 1, 1000), '');
fac.writelog (p_applname, 'I', 'Log: ' || SUBSTR (v_log, 1, 990), '');
fac.writelog (p_applname, 'I', 'Log_prev: ' || SUBSTR (v_log_prev, 1, 990), '');
INSERT INTO fac_rapport (
fac_rapport_regel,
fac_rapport_volgnr,
fac_rapport_node)
VALUES (
'Fout: Export is afgebroken',
9999999999,
v_bestand);
-- Als er iets fout gegaan is willen we voorkomen dat de verwerk actie uitgevoerd wordt.
DELETE yask_exp_factuur
WHERE dagboek = 'ML';
END;
/
CREATE OR REPLACE VIEW yask_v_export_vw_exact_veza (
result,
result_order
)
AS
SELECT 'Lijst met bevroren facturen:' fac_rapport_regel, 0 fac_rapport_volgnr
FROM DUAL
UNION ALL
SELECT fac_rapport_regel, fac_rapport_volgnr
FROM fac_rapport
WHERE fac_rapport_node = 'VW_EXACTVEZA';
-- Procedure om alle geexporteerde facturen naar status verwerkt te zetten.
CREATE OR REPLACE PROCEDURE yask_select_vw_exact_veza (
p_applname IN VARCHAR2,
p_applrun IN VARCHAR2
)
AS
CURSOR c_fact
IS
SELECT f.fin_factuur_key
FROM yask_exp_factuur f
, yask_v_factuur_gegevens_veza fg
WHERE f.fin_factuur_key = fg.fin_factuur_key
AND f.dagboek = fg.dagboek
AND fg.dagboek = 'ML' -- Mindlabs
AND fg.fin_factuur_statuses_key = 6;
v_errormsg VARCHAR (200);
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
v_aanvrager NUMBER;
v_bestelling_key NUMBER;
v_bestand VARCHAR2(12);
v_logdate DATE;
v_volgnr NUMBER;
BEGIN
v_errormsg := 'Geen akties';
-- Facilitor user
v_aanvrager := 3;
v_logdate := SYSDATE;
v_bestand := 'VW_EXACTVEZA';
v_volgnr := 1;
-- Eerst opruiming
DELETE fac_rapport
WHERE fac_rapport_node = v_bestand;
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);
INSERT INTO fac_rapport (fac_rapport_node,
fac_rapport_volgnr,
fac_rapport_regel)
VALUES (v_bestand,
v_volgnr,
rec1.fin_factuur_key);
v_volgnr := v_volgnr + 1;
END;
END LOOP;
DELETE yask_exp_factuur
WHERE dagboek = 'ML';
END;
/
-- Einde VEZA exact export
CREATE OR REPLACE VIEW yask_v_noti_fin_factuur_note
(
code,