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:
54
AA/aaxx.sql
54
AA/aaxx.sql
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user