YAXX#89275 Bij het invoeren van een factuur via Mareon wordt de verdeelperiode aangepast aan de hand van het kenmerk VERDEELPERIODE_OFFSET bij het contract.

svn path=/Customer/trunk/; revision=69276
This commit is contained in:
Arthur Egberink
2025-06-04 08:21:07 +00:00
parent 55bbb3ef16
commit 762876f5fb

View File

@@ -920,6 +920,10 @@ AS
v_opdr_kosten NUMBER(10,2);
BEGIN
-- Mandaatbedrag is nu in de core opgenomen YASK#84687
RETURN;
SELECT prs_kenmerklink_waarde, o.mld_opdr_kosten
INTO v_mandaatbedrag, v_opdr_kosten
FROM prs_kenmerklink kl, prs_kenmerk k, prs_bedrijf b, mld_opdr o, mld_typeopdr ot
@@ -5544,7 +5548,8 @@ AS
--- bit 4: dubbele factuur
--- bit 5: verzamelfactuur
--- bit 6: IBAN niet correct
--- bit 7: Proces fout (Oracle foutmelding)
--- bit 7: IBAN niet gevuld bij leverancier
--- bit 8: Proces fout (Oracle foutmelding)
CURSOR ccor_0
IS
SELECT ordernr
@@ -5647,6 +5652,7 @@ IS
v_factuur_datum_boekmaand_nu VARCHAR(2);
v_fin_factuur_boekmaand_laatst VARCHAR(7);
v_fin_factuur_boekmaand_prev VARCHAR(7);
v_verdeelperiode_offset NUMBER;
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;
@@ -5832,6 +5838,10 @@ BEGIN
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.
UPDATE fin_factuur
SET fin_factuur_opmerking = NULL
WHERE fin_factuur_key = rec.fin_factuur_key;
END IF;
-- Als er een bijlage-flexprop en een bijlage is, dan gaan we deze PDF hier inzetten....
@@ -5892,7 +5902,7 @@ BEGIN
ELSE v_foutcode := POWER(2,3);
END IF;
v_aanduiding_controle := 'ERROR: ' || REPLACE(rec.kenmerk7, ' @@', CHR(13)||CHR(10));
v_aanduiding_controle := 'ERROR: ' || REPLACE(rec.kenmerk7, '@@', CHR(13)||CHR(10));
track_error (v_aanduiding_controle, v_foutcode, rec.fin_factuur_key, v_perslid_key);
END IF;
@@ -5928,11 +5938,17 @@ BEGIN
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
IF v_bedrijf_iban IS NULL
THEN
-- dan gaan we ook de iban controleren
v_aanduiding_controle := 'ERROR: IBAN komt niet overeen!' ;
track_error (v_aanduiding_controle, POWER(2,6), rec.fin_factuur_key, v_perslid_key);
v_aanduiding_controle := 'ERROR: IBAN niet ingevuld bij leverancier.' ;
track_error (v_aanduiding_controle, POWER(2,7), rec.fin_factuur_key, v_perslid_key);
ELSE
IF COALESCE(UPPER(REPLACE(rec.kenmerk12, ' ')), 'QueQeLeQue') <> UPPER(REPLACE(v_bedrijf_iban, ' '))
THEN
-- dan gaan we ook de iban controleren
v_aanduiding_controle := 'ERROR: IBAN komt niet overeen!' ;
track_error (v_aanduiding_controle, POWER(2,6), rec.fin_factuur_key, v_perslid_key);
END IF;
END IF;
-- Controle of er al een factuur ontvangen is met hetzelfde factuurnummer en referentie
@@ -5981,6 +5997,25 @@ BEGIN
AND f.fin_factuur_verwijder IS NULL
AND f.fin_factuur_key <> rec.fin_factuur_key;
BEGIN
SELECT FAC.safe_to_number(FLX.getflex('CNT', k.cnt_kenmerk_key, rec.cnt_contract_key, 1))
INTO v_verdeelperiode_offset
FROM cnt_contract c, cnt_kenmerk k
WHERE c.ins_discipline_key = k.cnt_srtcontract_key
AND k.cnt_kenmerk_niveau = 'S'
AND k.cnt_kenmerk_code = 'VERDEELPERIODE_OFFSET'
AND c.cnt_contract_key = rec.cnt_contract_key;
UPDATE fin_factuur
SET fin_factuur_boekmaand = TO_CHAR(ADD_MONTHS(fin_factuur_datum, COALESCE(v_verdeelperiode_offset, 0)), 'yyyy-mm')
WHERE fin_factuur_key = rec.fin_factuur_key;
EXCEPTION WHEN NO_DATA_FOUND
THEN
NULL;
-- Niet erg als de waarde leeg is of het kenmerk niet gedefinieerd is. Dan hoeven we niets te doen.
END;
-- 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'
@@ -6018,7 +6053,7 @@ BEGIN
END;
-- Bij YKPN gaan we nog niet het generieke proces af trappen.
IF vbxx.get_user <> 'YKPN'
IF vbxx.get_user <> 'YKPN' AND vbxx.get_user <> 'HEIN'
THEN
vbxx.fin_set_approver(rec.fin_factuur_key);
END IF;
@@ -6144,7 +6179,7 @@ EXCEPTION
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);
'Actie 2: Factuur gewoon oppakken: Aanvullen, doorzetten, etc', POWER(2,8), 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);
@@ -6168,7 +6203,8 @@ END;
--- bit 4: dubbele factuur
--- bit 5: verzamelfactuur
--- bit 6: IBAN niet correct
--- bit 7: Proces fout (Oracle foutmelding)
--- bit 7: IBAN niet gevuld bij leverancier
--- bit 8: Proces fout (Oracle foutmelding)
CREATE OR REPLACE VIEW vbxx_v_fac_scan_result_detail
AS
SELECT f.fin_factuur_key factuur_key,
@@ -6230,12 +6266,19 @@ AS
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, 'IBAN niet ingevuld bij leverancier' 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
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,
AND BITAND (FAC.SAFE_TO_NUMBER (fin_kenmerkfactuur_waarde), 256) <> 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