AAIT#78367 -- mareon factuurverwerking aangepast voor contractfacturen (scope en controle CF) en opdrachtfacturen met 0-reden

svn path=/Customer/trunk/; revision=61969
This commit is contained in:
Jos Migo
2023-09-28 13:45:01 +00:00
parent a19e1e52d6
commit 5266d3e26e

View File

@@ -8632,7 +8632,9 @@ AS
WHEN sn.fac_srtnotificatie_xmlnode = 'factuur' AND fac_srtnotificatie_code = 'FINUPD' AND INSTR(t.fac_tracking_oms, 'Betreft D-categorie factuur!') > 0 THEN 'FINA15'
WHEN sn.fac_srtnotificatie_xmlnode = 'factuur' AND fac_srtnotificatie_code = 'FINUPD' AND INSTR(t.fac_tracking_oms, 'Leveranciersnummer ontbreekt op leverancierskaart') > 0 THEN 'FINA16'
WHEN sn.fac_srtnotificatie_xmlnode = 'factuur' AND fac_srtnotificatie_code = 'FINUPD' AND INSTR(t.fac_tracking_oms, 'Contract met gebroken boekjaar (check verdeelperiode)') > 0 THEN 'FINA17'
WHEN sn.fac_srtnotificatie_xmlnode = 'factuur' AND fac_srtnotificatie_code = 'FINUPD' AND INSTR(t.fac_tracking_oms, 'Vivada pdf factuur doorzetten naar klant') > 0 THEN 'FINA18'
WHEN sn.fac_srtnotificatie_xmlnode = 'factuur' AND fac_srtnotificatie_code = 'FINUPD' AND INSTR(t.fac_tracking_oms, 'PDF factuur doorzetten naar klant') > 0 THEN 'FINA18'
WHEN sn.fac_srtnotificatie_xmlnode = 'factuur' AND fac_srtnotificatie_code = 'FINUPD' AND INSTR(t.fac_tracking_oms, 'Factuur op opdracht met 0-reden') > 0 THEN 'FINA19'
WHEN sn.fac_srtnotificatie_xmlnode = 'factuur' AND fac_srtnotificatie_code = 'FINUPD' AND INSTR(t.fac_tracking_oms, 'Factuur op contract met onjuiste scoping') > 0 THEN 'FINA20'
WHEN sn.fac_srtnotificatie_xmlnode = 'factuur' AND fac_srtnotificatie_code = 'FINUPD' AND INSTR(t.fac_tracking_oms, 'Gecontroleerd: (leeg) --> 1') > 0 THEN 'FINAOK'
ELSE fac_srtnotificatie_code
END
@@ -10012,6 +10014,9 @@ IS
v_cnt_maandbedrag NUMBER(10);
v_gefactureerd_vorige_maand NUMBER(10);
v_cnt_scope_gebouw NUMBER(10);
v_cnt_scope_afwijkend NUMBER(10);
@@ -10316,8 +10321,8 @@ BEGIN
END IF;
-- Voor opdrachten met 0-waarde zetten we de Controle, mits er op de Opdracht een REDEN is vermeld
IF v_bedrag_totaal = 0
-- Voor een opdracht waar een 0-reden is ingevuld, moet de factuur ter controle
IF v_bedrag_totaal IS NOT NULL
THEN
-- Eerst dus kijken of er bij opdracht een reden is vermeld
BEGIN
@@ -10341,7 +10346,7 @@ BEGIN
-- Zo ja, dan zetten we de controle
IF v_opdracht_0_reden IS NOT NULL
THEN
v_aanduiding_controle := 'CONTROLE <EFBFBD> Bedrag van gekoppelde verplichting is 0,- euro en er is een REDEN ingevuld' ;
v_aanduiding_controle := 'CONTROLE - Factuur op opdracht met 0-reden' ;
v_controle := 1 ;
fac.trackaction ('FINUPD', rec.fin_factuur_key, 4, NULL, v_aanduiding_controle);
@@ -10487,7 +10492,7 @@ BEGIN
FROM fin_factuur
WHERE cnt_contract_key = rec.cnt_contract_key
AND fin_factuur_verwijder IS NULL;
IF v_count_gefactureerd > 1
THEN
SELECT sum(fin_factuur_totaal)
@@ -10569,6 +10574,29 @@ BEGIN
fac.trackaction ('FINUPD', rec.fin_factuur_key, 4, NULL, v_aanduiding_controle);
END IF;
END IF;
-- Contract moet altijd op 1 of meerdere GEBOUWEN gescoped zijn voor heyday. Indien dit niet geval is, dan op controle zetten.
SELECT (SELECT COUNT (*) aantal_gebouw
FROM cnt_contract_plaats cp
WHERE cp.cnt_contract_key = c.cnt_contract_key AND cp.cnt_alg_plaats_code = 'G'
GROUP BY cp.cnt_contract_key) scope_gebouw,
(SELECT COUNT (*) aantal_gebouw
FROM cnt_contract_plaats cp
WHERE cp.cnt_contract_key = c.cnt_contract_key AND cp.cnt_alg_plaats_code <> 'G'
GROUP BY cp.cnt_contract_key) scope_afwijkend
INTO v_cnt_scope_gebouw, v_cnt_scope_afwijkend
FROM cnt_contract c
WHERE c.cnt_contract_key = rec.cnt_contract_key;
IF v_cnt_scope_gebouw IS NULL OR v_cnt_scope_afwijkend IS NOT NULL
THEN
v_aanduiding_controle := 'CONTROLE - Factuur op contract met onjuiste scoping' ;
v_controle := 1 ;
fac.trackaction ('FINUPD', rec.fin_factuur_key, 4, NULL, v_aanduiding_controle);
END IF;
END IF;
@@ -10686,7 +10714,7 @@ BEGIN
WHERE fin_factuur_key = rec.fin_factuur_key ;
-- en altijd controle zetten (omdat facturen door FM-er nog apart doorgezet moeten worden naar externe partij) - ticket AAXX#80045
v_aanduiding_controle := 'CONTROLE - Vivada pdf factuur doorzetten naar klant' ;
v_aanduiding_controle := 'CONTROLE - PDF factuur doorzetten naar klant' ;
v_controle := 1 ;
fac.trackaction ('FINUPD', rec.fin_factuur_key, 4, NULL, v_aanduiding_controle);
@@ -10882,15 +10910,15 @@ BEGIN
v_cnt_maandbedrag := ROUND(v_bedrag_totaal / v_cnt_looptijd_mnd,2) ;
-- Dus als inleesactie op 2022-4 EN totaal gefactureerd voor 2022-3 is al >90% , dan de factuur niet op 2022-3 maar op 2022-4 zetten incl controle
-- Dus als inleesactie op 2022-4 EN totaal gefactureerd voor 2022-3 is al >90% , dan de factuur niet op 2022-3 maar op 2022-4 zetten
IF (ROUND(v_gefactureerd_vorige_maand/v_cnt_maandbedrag,2)*100) > 90
THEN
v_fin_factuur_boekmaand_2 := v_fin_factuur_boekmaand_nu;
-- incl controle (voor paar omgevingen niet nodig..)
-- incl controle (per omgeving indien gewenst te zetten)
v_aanduiding_controle := 'CONTROLE - Contract CF en 90% al gefactureerd in voorgaande periode' ;
IF aaxx_get_user NOT IN ('SMKA', 'ESSENT')
IF aaxx_get_user IN ('XXXX', 'YYYY')
THEN
v_controle := 1 ;
@@ -22801,8 +22829,9 @@ BEGIN
AND km.mld_melding_key = v_mld_melding_key
AND k.mld_kenmerk_niveau = 'S';
-- De v_omvang_key bepalen die hoort bij de te importeren gebreksmelding
v_errorhint :=
'Omvang (eigen tabel) niet gevonden (bestaat niet), regel wordt overgeslagen';
'De Omvang (eigen tabel) niet gevonden (bestaat niet), regel wordt overgeslagen';
SELECT ud.fac_usrdata_key
INTO v_omvang_key
@@ -22816,7 +22845,7 @@ BEGIN
AND kd.fac_kenmerkdomein_key = sk.fac_kenmerkdomein_key
AND ut.fac_usrtab_key = kd.fac_usrtab_key
AND ud.fac_usrtab_key = kd.fac_usrtab_key
AND ud.fac_usrdata_upper = UPPER (v_omvang)
AND ud.fac_usrdata_upper = UPPER (rec.omvang)
AND k.mld_srtkenmerk_key = sk.mld_srtkenmerk_key
AND km.mld_kenmerk_key = k.mld_kenmerk_key
AND km.mld_melding_key = v_mld_melding_key
@@ -22844,6 +22873,7 @@ BEGIN
AND km.mld_melding_key = v_mld_melding_key
AND k.mld_kenmerk_niveau = 'S';
-- De v_intensiteit_key bepalen die hoort bij de te importeren gebreksmelding
v_errorhint := 'Intensiteit (eigen tabel) niet gevonden (bestaat niet), regel wordt overgeslagen';
SELECT ud.fac_usrdata_key
@@ -22858,7 +22888,7 @@ BEGIN
AND kd.fac_kenmerkdomein_key = sk.fac_kenmerkdomein_key
AND ut.fac_usrtab_key = kd.fac_usrtab_key
AND ud.fac_usrtab_key = kd.fac_usrtab_key
AND ud.fac_usrdata_upper = UPPER (v_intensiteit)
AND ud.fac_usrdata_upper = UPPER (rec.intensiteit)
AND k.mld_srtkenmerk_key = sk.mld_srtkenmerk_key
AND km.mld_kenmerk_key = k.mld_kenmerk_key
AND km.mld_melding_key = v_mld_melding_key