YAXX#88424 Controle op IBAN toegevoegd. Loggin van de factuur-import wordt nu in de notities geplaatst.

svn path=/Customer/trunk/; revision=69057
This commit is contained in:
Arthur Egberink
2025-05-19 12:36:52 +00:00
parent 59de2efd10
commit 8486365d76

View File

@@ -4314,7 +4314,6 @@ AS
fr.fin_factuurregel_nr,
fr.fin_factuurregel_key,
f.fin_factuur_debiteur_nr,
f.fin_factuur_opmerking,
f.fin_factuur_boekmaand,
prs_kostensoort_oms,
k.prs_kostensoort_refcode,
@@ -4559,7 +4558,6 @@ AS
fin_factuur_nr,
prs_bedrijf_key,
fin_factuur_debiteur_nr,
fin_factuur_opmerking,
SUM (fin_factuurregel_totaal)
bedrag,
SUM (fin_factuurregel_totaal + fin_factuurregel_btw)
@@ -4590,7 +4588,6 @@ AS
fin_factuur_nr,
prs_bedrijf_key,
fin_factuur_debiteur_nr,
fin_factuur_opmerking,
fin_btwtabelwaarde_code,
prs_kostensoort_oms,
prs_kostensoort_refcode,
@@ -5546,6 +5543,8 @@ AS
--- bit 3: overige fout uit import
--- bit 4: dubbele factuur
--- bit 5: verzamelfactuur
--- bit 6: IBAN niet correct
--- bit 7: Proces fout (Oracle foutmelding)
CURSOR ccor_0
IS
SELECT ordernr
@@ -5648,46 +5647,64 @@ IS
v_factuur_datum_boekmaand_nu VARCHAR(2);
v_fin_factuur_boekmaand_laatst VARCHAR(7);
v_fin_factuur_boekmaand_prev VARCHAR(7);
v_factuur_opmerking FIN_FACTUUR.FIN_FACTUUR_OPMERKING%TYPE;
v_factuur_note_omschrijving FIN_FACTUUR_NOTE.FIN_FACTUUR_NOTE_OMSCHRIJVING%TYPE;
v_factuur_note_key FIN_FACTUUR_NOTE.FIN_FACTUUR_NOTE_KEY%TYPE;
v_bedrijf_iban FIN_KENMERKFACTUUR.FIN_KENMERKFACTUUR_WAARDE%TYPE;
v_bedrijf_key PRS_BEDRIJF.PRS_BEDRIJF_KEY%TYPE;
PROCEDURE track_error (p_error_str IN VARCHAR2, p_foutcode IN NUMBER, p_factuur_key IN NUMBER, p_perslid_key IN NUMBER)
IS
v_factuur_opmerking FIN_FACTUUR.FIN_FACTUUR_OPMERKING%TYPE;
v_kenmerk_key_foutcode FIN_KENMERK.FIN_KENMERK_KEY%TYPE;
v_foutcode NUMBER(10);
v_verschil NUMBER(10);
BEGIN
fac.trackaction ('FINUPD', p_factuur_key, p_perslid_key, NULL, p_error_str);
--Hebben we deze tracking nodig? De fouten komen ook in de notities te staan.
--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
BEGIN
SELECT fin_factuur_note_omschrijving, fin_factuur_note_key
INTO v_factuur_note_omschrijving, v_factuur_note_key
FROM fin_factuur_note
WHERE fin_factuur_key = p_factuur_key;
INSERT INTO fin_factuur_note (fin_factuur_key, prs_perslid_key, fin_factuur_note_omschrijving)
VALUES ('Factuur import:' || CHR (13) || CHR (10) || v_factuur_note_omschrijving, p_perslid_key, p_error_str);
EXCEPTION WHEN NO_DATA_FOUND
THEN
v_factuur_opmerking := SUBSTR(v_factuur_opmerking || CHR (13) || CHR (10) || p_error_str, 1, 250);
ELSE
v_factuur_opmerking := SUBSTR(p_error_str,1,250);
END IF;
INSERT INTO fin_factuur_note (fin_factuur_key, prs_perslid_key, fin_factuur_note_omschrijving)
VALUES (v_factuur_note_omschrijving || CHR (13) || CHR (10) || p_error_str, p_perslid_key, p_error_str);
IF v_factuur_opmerking IS NOT NULL
THEN
v_factuur_opmerking := SUBSTR(v_factuur_opmerking || CHR (13) || CHR (10) || p_error_str, 1, 250);
ELSE
v_factuur_opmerking := SUBSTR(p_error_str,1,250);
END IF;
END;
-- 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;
SELECT k.fin_kenmerk_key
INTO v_kenmerk_key_foutcode
FROM fin_kenmerk k
WHERE k.fin_kenmerk_code = 'FOUTCODE'
AND k.fin_kenmerk_verwijder IS NULL;
IF p_foutcode IS NOT NULL
THEN
SELECT k.fin_kenmerk_key
INTO v_kenmerk_key_foutcode
FROM fin_kenmerk k
WHERE k.fin_kenmerk_code = 'FOUTCODE'
AND k.fin_kenmerk_verwijder IS NULL;
v_foutcode := COALESCE(FAC.SAFE_TO_NUMBER(FLX.getflex ('FIN', v_kenmerk_key_foutcode, p_factuur_key)),0);
v_verschil := BITAND(v_foutcode, p_foutcode);
v_foutcode := v_foutcode - v_verschil;
v_foutcode := v_foutcode + p_foutcode;
v_foutcode := COALESCE(FAC.SAFE_TO_NUMBER(FLX.getflex ('FIN', v_kenmerk_key_foutcode, p_factuur_key)),0);
v_verschil := BITAND(v_foutcode, p_foutcode);
v_foutcode := v_foutcode - v_verschil;
v_foutcode := v_foutcode + p_foutcode;
FLX.setflex ('FIN', v_kenmerk_key_foutcode, p_factuur_key, v_foutcode);
FLX.setflex ('FIN', v_kenmerk_key_foutcode, p_factuur_key, v_foutcode);
END IF;
END;
@@ -5812,6 +5829,16 @@ BEGIN
LOOP
BEGIN
SELECT fin_factuur_opmerking
INTO v_factuur_opmerking
FROM fin_factuur
WHERE fin_factuur_key = rec.fin_factuur_key;
IF v_factuur_opmerking IS NOT NULL
THEN
track_error (v_factuur_opmerking, NULL, rec.fin_factuur_key, v_perslid_key); -- Overnemen van de opmerking in de notitie.
END IF;
-- Als er een bijlage-flexprop en een bijlage is, dan gaan we deze PDF hier inzetten....
IF c_kenmerk_key_bijlage IS NOT NULL AND rec.kenmerk1 IS NOT NULL
THEN
@@ -5889,6 +5916,29 @@ BEGIN
-- G rekening IBAN tonen in Facilitor bij Factuur
setkenmerkfactuur(rec.fin_factuur_key, 'GIBAN', rec.kenmerk13);
SELECT COALESCE(o.mld_uitvoerende_keys, bo.prs_bedrijf_key, c.cnt_prs_bedrijf_key)
INTO v_bedrijf_key
FROM fin_factuur f,
mld_opdr o,
bes_bestelopdr bo,
cnt_contract c
WHERE f.mld_opdr_key = o.mld_opdr_key(+)
AND f.bes_bestelopdr_key = bo.bes_bestelopdr_key(+)
AND f.cnt_contract_key = c.cnt_contract_key(+);
SELECT FLX.getflex('PRS', k.prs_kenmerk_key, v_bedrijf_key, 'B', 1)
INTO v_bedrijf_iban
FROM prs_kenmerk k
WHERE k.prs_kenmerk_code = 'IBAN';
IF v_bedrijf_iban IS NOT NULL AND COALESCE(rec.kenmerk12, 'QueQeLeQue') <> v_bedrijf_iban
THEN
-- dan gaan we ook de iban controleren
v_aanduiding_controle := 'ERROR: Dubbele facturen gevonden!' ;
track_error (v_aanduiding_controle, POWER(2,6), rec.fin_factuur_key, v_perslid_key);
END IF;
-- Controle of er al een factuur ontvangen is met hetzelfde factuurnummer en referentie
-- 1 Afgewezen
-- 2 Ingevoerd
@@ -6093,12 +6143,13 @@ EXCEPTION
THEN
UPDATE fin_factuur
SET fin_factuur_statuses_key = 3,
fin_factuur_opmerking = SUBSTR('Bij factuurimport is volgende Errormessage gemeld: ' || v_errormsg || CHR (13) || CHR (10) ||
'Actie 1: Informeren Facilitor' || CHR (13) || CHR (10) ||
'Actie 2: Factuur gewoon oppakken: Aanvullen, doorzetten, etc', 1, 250)
SET fin_factuur_statuses_key = 3
WHERE fin_factuur_key = v_fin_factuur_key ;
track_error ('Bij factuurimport is volgende Errormessage gemeld: ' || v_errormsg || CHR (13) || CHR (10) ||
'Actie 1: Informeren Facilitor' || CHR (13) || CHR (10) ||
'Actie 2: Factuur gewoon oppakken: Aanvullen, doorzetten, etc', POWER(2,7), v_fin_factuur_key, v_perslid_key);
v_aanduiding := 'Factuur geimporteerd vanuit Mareon' ;
fac.trackaction ('FINUPD', v_fin_factuur_key, v_perslid_key, NULL, v_aanduiding);
@@ -6123,7 +6174,11 @@ END;
CREATE OR REPLACE VIEW vbxx_v_fac_scan_result_detail
AS
SELECT f.fin_factuur_key factuur_key,
f.fin_factuur_opmerking,
(SELECT MAX(n.fin_factuur_note_omschrijving)
FROM fin_factuur_note n
WHERE n.fin_factuur_key = f.fin_factuur_key
AND n.fin_factuur_note_omschrijving LIKE 'Factuur import:%')
fin_factuur_opmerking,
FAC.gettrackingdate ('FINNEW', f.fin_factuur_key) fin_factuur_aanmaak,
bi.foutmelding,
b.prs_bedrijf_naam
@@ -6168,7 +6223,21 @@ AS
WHERE kf.fin_kenmerk_key = k.fin_kenmerk_key
AND k.fin_kenmerk_code = 'FOUTCODE'
AND k.fin_kenmerk_verwijder IS NULL
AND BITAND (FAC.SAFE_TO_NUMBER (fin_kenmerkfactuur_waarde), 32) <> 0) bi,
AND BITAND (FAC.SAFE_TO_NUMBER (fin_kenmerkfactuur_waarde), 32) <> 0
UNION ALL
SELECT kf.fin_factuur_key, 'IBAN nummer' foutmelding
FROM fin_kenmerkfactuur kf, fin_kenmerk k
WHERE kf.fin_kenmerk_key = k.fin_kenmerk_key
AND k.fin_kenmerk_code = 'FOUTCODE'
AND k.fin_kenmerk_verwijder IS NULL
AND BITAND (FAC.SAFE_TO_NUMBER (fin_kenmerkfactuur_waarde), 64) <> 0
UNION ALL
SELECT kf.fin_factuur_key, 'proces fout' foutmelding
FROM fin_kenmerkfactuur kf, fin_kenmerk k
WHERE kf.fin_kenmerk_key = k.fin_kenmerk_key
AND k.fin_kenmerk_code = 'FOUTCODE'
AND k.fin_kenmerk_verwijder IS NULL
AND BITAND (FAC.SAFE_TO_NUMBER (fin_kenmerkfactuur_waarde), 128) <> 0) bi,
(SELECT fo.fin_factuur_key, mld_uitvoerende_keys prs_bedrijf_key
FROM mld_opdr o, fin_factuur fo
WHERE fo.mld_opdr_key = o.mld_opdr_key