KFST#52897 -- Koppeling met Exact

svn path=/Customer/trunk/; revision=38317
This commit is contained in:
Arthur Egberink
2018-06-22 11:03:14 +00:00
parent 50dbcf057d
commit 68a9412d16

View File

@@ -1121,6 +1121,10 @@ AS
FROM fac_rapport
WHERE fac_rapport_node = 'EXACT';
--
-- Oude procedure om XML formaat te gebruiken. Tegenwoordig werkt men met csv bestanden.
--
/*
CREATE OR REPLACE PROCEDURE kfst_select_exact (p_applname IN VARCHAR2,
p_applrun IN VARCHAR2
)
@@ -1270,9 +1274,128 @@ BEGIN
END;
/
*/
CREATE OR REPLACE PROCEDURE kfst_select_exact (p_applname IN VARCHAR2,
p_applrun IN VARCHAR2
)
AS
CURSOR c
IS
SELECT crdnr, factuur_nr, MAX(datum) datum
FROM kfst_v_bron_export_exact_xml
GROUP BY crdnr, factuur_nr;
CREATE OR REPLACE VIEW ykpn_v_export_verwerk_exact (
CURSOR c_sub (c_crdnr VARCHAR2, c_factuur_nr VARCHAR2)
IS
SELECT *
FROM kfst_v_bron_export_exact_xml
WHERE COALESCE(crdnr, 'CrdNr') = COALESCE(c_crdnr, 'CrdNr')
AND factuur_nr = c_factuur_nr;
CURSOR cv IS
SELECT result, result_order
FROM kfst_v_export_exact_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;
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 = 1
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 kfst_exp_factuur;
INSERT INTO kfst_exp_factuur (fin_factuur_key)
( SELECT DISTINCT fin_factuur_key
FROM kfst_v_factuur_gegevens
WHERE fin_factuur_statuses_key = 6
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 = 1
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') || '600000');
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
kfst.set_kenmerk('FIN', 1, 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;
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;
END;
/
CREATE OR REPLACE VIEW kfst_v_export_verwerk_exact (
result,
result_order
)