VENR#39178 Fin. rapportages/bevriezen (soortgelijk NS)

svn path=/Customer/trunk/; revision=33053
This commit is contained in:
Maarten van der Heide
2017-03-06 16:05:18 +00:00
parent 05c3c8921c
commit 32b488f5df

View File

@@ -2626,6 +2626,680 @@ AS
AND p.prs_afdeling_key = a.prs_afdeling_key
AND a.prs_bedrijf_key = fac.getsetting ('xd_primary_bedrijfkey');
-- VENR#39178: FIN-rapportages per klant/leverancier/contract.
/* Formatted on 24-2-2017 13:30:30 (QP5 v5.136.908.31019) */
CREATE OR REPLACE VIEW venr_v_rap_actual_cost_tot
(
fclt_3d_afdeling_key, -- Kunnen beperken per leverancier!
maand,
fclt_f_klant,
fclt_f_leverancier,
contractnr,
beschrijving,
aantal,
jaarbudget,
kosten_onderweg,
kosten_afgerond
)
AS
SELECT b2a.prs_afdeling_key,
TO_CHAR (SYSDATE, 'yyyy-mm'), -- Deze maand ORDAFR, volgende maand factureren (achteraf)
x.prs_bedrijf_naam klant,
b2a.prs_bedrijf_naam leverancier,
x.cnt_contract_nummer_intern,
x.cnt_contract_omschrijving,
COUNT ( * ) aantal,
x.cnt_contract_kosten jaarbudget,
SUM (DECODE (x.mld_statusopdr_key, 9, 0, COALESCE (x.mld_opdr_kosten, 0)))
kosten_onderweg,
SUM (DECODE (x.mld_statusopdr_key, 9, COALESCE (x.mld_opdr_kosten, 0), 0))
kosten_afgerond
FROM (SELECT b.prs_bedrijf_naam, -- Klant
o.mld_opdr_key,
o.mld_melding_key,
o.mld_opdr_bedrijfopdr_volgnr,
o.mld_statusopdr_key,
o.mld_uitvoerende_keys, -- Leverancier
o.mld_opdr_kosten,
c.cnt_contract_nummer_intern,
c.cnt_contract_omschrijving,
c.cnt_contract_kosten
FROM mld_opdr o,
mld_typeopdr ot,
mld_melding m,
prs_perslid p,
prs_v_afdeling_boom ab,
prs_bedrijf b,
cnt_contract c
WHERE o.mld_typeopdr_key = ot.mld_typeopdr_key
AND ot.mld_typeopdr_kosten = 1 -- Kosten meerekenen=Ja
AND NOT EXISTS -- Niet gemarkeerd als dispuut!
(SELECT 1
FROM mld_v_aanwezigkenmerkopdr ko, mld_kenmerk k
WHERE ko.mld_opdr_key = o.mld_opdr_key
AND ko.mld_kenmerk_key = k.mld_kenmerk_key
AND k.mld_srtkenmerk_key = -1 -- Dispuut
AND ko.mld_kenmerkopdr_waarde = '1') -- Aangevinkt
AND o.mld_melding_key = m.mld_melding_key
AND m.prs_perslid_key = p.prs_perslid_key
AND p.prs_afdeling_key = ab.prs_afdeling_key
AND ab.prs_bedrijf_key = b.prs_bedrijf_key
AND EXISTS -- Geconfigureerd als te rapporteren klant!
(SELECT 1
FROM fac_v_aanwezigusrdata
WHERE fac_usrtab_key = 121 -- FinRapKlanten
AND fac_usrdata_code = TO_CHAR (b.prs_bedrijf_key))
AND o.cnt_contract_key = c.cnt_contract_key(+)) x
LEFT JOIN fac_tracking ordafr
ON ordafr.fac_srtnotificatie_key = 68 -- ORDAFR
AND x.mld_opdr_key = ordafr.fac_tracking_refkey
LEFT JOIN ( SELECT b.prs_bedrijf_key, b.prs_bedrijf_naam,
MIN (p.prs_afdeling_key) prs_afdeling_key,
COUNT ( * ) aantal
FROM prs_bedrijf b, prs_contactpersoon cp, prs_perslid p
WHERE b.prs_bedrijf_key = cp.prs_bedrijf_key(+)
AND cp.prs_perslid_key = p.prs_perslid_key(+)
GROUP BY b.prs_bedrijf_key, b.prs_bedrijf_naam) b2a
ON x.mld_uitvoerende_keys = b2a.prs_bedrijf_key
GROUP BY b2a.prs_afdeling_key,
x.prs_bedrijf_naam,
b2a.prs_bedrijf_naam,
x.cnt_contract_nummer_intern,
x.cnt_contract_omschrijving,
x.cnt_contract_kosten
UNION ALL
SELECT TO_NUMBER (NULL) prs_afdeling_key, -- TODO: prs_afdeling_key van App<70>l?
TO_CHAR (SYSDATE, 'yyyy-mm'), -- Deze maand geboekt, volgende maand factureren (achteraf)
x.prs_bedrijf_naam klant,
'App<EFBFBD>l' leverancier,
TO_CHAR (NULL) cnt_contract_nummer_intern,
'RES/Banqueting' cnt_contract_omschrijving,
COUNT (DISTINCT x.res_rsv_ruimte_key) aantal,
TO_NUMBER (NULL) jaarbudget, --x.cnt_contract_kosten,
SUM (DECODE (x.res_status_bo_key, 5, 0, x.res_rsv_artikel_prijs))
kosten_onderweg,
SUM (DECODE (x.res_status_bo_key, 5, x.res_rsv_artikel_prijs, 0))
kosten_afgerond
FROM (SELECT b.prs_bedrijf_naam, -- Klant
rrr.res_rsv_ruimte_key,
rrr.res_reservering_key,
rrr.res_rsv_ruimte_volgnr,
rra.res_status_bo_key,
rra.res_rsv_artikel_prijs
FROM res_rsv_ruimte rrr,
res_rsv_artikel rra,
res_artikel ra,
prs_perslid p,
prs_v_afdeling_boom ab,
prs_bedrijf b
WHERE rrr.res_rsv_ruimte_key = rra.res_rsv_ruimte_key
AND rra.res_artikel_key = ra.res_artikel_key
AND rrr.res_rsv_ruimte_contact_key = p.prs_perslid_key
AND p.prs_afdeling_key = ab.prs_afdeling_key
AND ab.prs_bedrijf_key = b.prs_bedrijf_key
AND EXISTS -- Geconfigureerd als te rapporteren klant!
(SELECT 1
FROM fac_v_aanwezigusrdata
WHERE fac_usrtab_key = 121 -- FinRapKlanten
AND fac_usrdata_code = TO_CHAR (b.prs_bedrijf_key))) x
LEFT JOIN fac_tracking resafm
ON resafm.fac_srtnotificatie_key = 80 -- RESAFM
AND x.res_rsv_ruimte_key = resafm.fac_tracking_refkey
GROUP BY x.prs_bedrijf_naam;
-- Actual regels en basis voor oa. te exporteren/bevriezen regels op de 10e van
-- de maand; voor de output geldt:
-- Actual regels en basis voor oa. te exporteren/bevriezen regels in nacht na
-- de 1e werkdag van de maand; voor de output geldt:
-- Dat deze de actual opdrachten toont (voor 1e ORDAFR).
-- Dat deze de actual reserveringen toont (voor 1e RESAFM).
-- Dat deze tot nacht na 1e werkdag van de maand alleen door Kien wijzigbaar
-- is.
/* Formatted on 24-2-2017 14:10:50 (QP5 v5.136.908.31019) */
CREATE OR REPLACE VIEW venr_v_actual_fact -- Tbv. FACT_EXPORT!
(
prs_afdeling_key,
maand,
klant_key,
klant,
leverancier_key,
leverancier,
cnt_contract_key,
contractnr,
beschrijving,
ref_key,
ref_id,
aantal,
jaarbudget,
kosten_afgerond
)
AS
SELECT b2a.prs_afdeling_key,
TO_CHAR (TRUNC (SYSDATE, 'mm') - 1, 'yyyy-mm'), -- Voor 1e ORDAFR, deze maand factureren (achteraf)
x.prs_bedrijf_key klant_key,
x.prs_bedrijf_naam klant,
b2a.prs_bedrijf_key leverancier_key,
b2a.prs_bedrijf_naam leverancier,
x.cnt_contract_key,
x.cnt_contract_nummer_intern,
x.cnt_contract_omschrijving,
x.mld_opdr_key ref_key,
TO_CHAR (x.mld_melding_key) || '/' || TO_CHAR (x.mld_opdr_bedrijfopdr_volgnr) ref_id,
1 aantal,
x.cnt_contract_kosten jaarbudget,
x.mld_opdr_kosten kosten_afgerond
FROM (SELECT b.prs_bedrijf_key,
b.prs_bedrijf_naam, -- Klant
o.mld_opdr_key,
o.mld_melding_key,
o.mld_opdr_bedrijfopdr_volgnr,
o.mld_statusopdr_key,
o.mld_uitvoerende_keys, -- Leverancier
o.mld_opdr_kosten,
c.cnt_contract_key,
c.cnt_contract_nummer_intern,
c.cnt_contract_omschrijving,
c.cnt_contract_kosten
FROM mld_opdr o,
mld_typeopdr ot,
mld_melding m,
prs_perslid p,
prs_v_afdeling_boom ab,
prs_bedrijf b,
cnt_contract c
WHERE o.mld_typeopdr_key = ot.mld_typeopdr_key
AND ot.mld_typeopdr_kosten = 1 -- Kosten meerekenen=Ja
AND NOT EXISTS -- Niet gemarkeerd als dispuut!
(SELECT 1
FROM mld_v_aanwezigkenmerkopdr ko, mld_kenmerk k
WHERE ko.mld_opdr_key = o.mld_opdr_key
AND ko.mld_kenmerk_key = k.mld_kenmerk_key
AND k.mld_srtkenmerk_key = -1 -- Dispuut
AND ko.mld_kenmerkopdr_waarde = '1') -- Aangevinkt
AND o.mld_melding_key = m.mld_melding_key
AND m.prs_perslid_key = p.prs_perslid_key
AND p.prs_afdeling_key = ab.prs_afdeling_key
AND ab.prs_bedrijf_key = b.prs_bedrijf_key
AND EXISTS -- Geconfigureerd als te rapporteren klant!
(SELECT 1
FROM fac_v_aanwezigusrdata
WHERE fac_usrtab_key = 121 -- FinRapKlanten
AND fac_usrdata_code = TO_CHAR (b.prs_bedrijf_key))
AND o.cnt_contract_key = c.cnt_contract_key(+)) x
LEFT JOIN fac_tracking ordafr
ON ordafr.fac_srtnotificatie_key = 68 -- ORDAFR
AND x.mld_opdr_key = ordafr.fac_tracking_refkey
LEFT JOIN ( SELECT b.prs_bedrijf_key, b.prs_bedrijf_naam,
MIN (p.prs_afdeling_key) prs_afdeling_key,
COUNT ( * ) aantal
FROM prs_bedrijf b, prs_contactpersoon cp, prs_perslid p
WHERE b.prs_bedrijf_key = cp.prs_bedrijf_key(+)
AND cp.prs_perslid_key = p.prs_perslid_key(+)
GROUP BY b.prs_bedrijf_key, b.prs_bedrijf_naam) b2a
ON x.mld_uitvoerende_keys = b2a.prs_bedrijf_key
WHERE ordafr.fac_tracking_datum < TRUNC (SYSDATE, 'mm')
UNION ALL
SELECT TO_NUMBER (NULL) prs_afdeling_key, -- TODO: prs_afdeling_key van App<70>l?
TO_CHAR (TRUNC (SYSDATE, 'mm') - 1, 'yyyy-mm'), -- Voor 1e RESAFM, deze maand factureren (achteraf)
x.prs_bedrijf_key klant_key,
x.prs_bedrijf_naam klant,
12633 leverancier_key,
'App<EFBFBD>l' leverancier,
TO_NUMBER (NULL) cnt_contract_key,
TO_CHAR (NULL) cnt_contract_nummer_intern,
'RES/Banqueting' cnt_contract_omschrijving,
x.res_rsv_ruimte_key ref_key,
TO_CHAR (x.res_reservering_key) || '/' || TO_CHAR (x.res_rsv_ruimte_volgnr) ref_id,
1 aantal,
TO_NUMBER (NULL) jaarbudget, --x.cnt_contract_kosten,
SUM (x.res_rsv_artikel_prijs) kosten_afgerond
FROM (SELECT b.prs_bedrijf_key, b.prs_bedrijf_naam, -- Klant
rrr.res_rsv_ruimte_key,
rrr.res_reservering_key,
rrr.res_rsv_ruimte_volgnr,
rra.res_status_bo_key,
rra.res_rsv_artikel_prijs
FROM res_rsv_ruimte rrr,
res_rsv_artikel rra,
res_artikel ra,
prs_perslid p,
prs_v_afdeling_boom ab,
prs_bedrijf b
WHERE rrr.res_rsv_ruimte_key = rra.res_rsv_ruimte_key
AND rra.res_artikel_key = ra.res_artikel_key
AND rrr.res_rsv_ruimte_contact_key = p.prs_perslid_key
AND p.prs_afdeling_key = ab.prs_afdeling_key
AND ab.prs_bedrijf_key = b.prs_bedrijf_key
AND EXISTS -- Geconfigureerd als te rapporteren klant!
(SELECT 1
FROM fac_v_aanwezigusrdata
WHERE fac_usrtab_key = 121 -- FinRapKlanten
AND fac_usrdata_code = TO_CHAR (b.prs_bedrijf_key))) x
LEFT JOIN
fac_tracking resafm
ON resafm.fac_srtnotificatie_key = 80 -- RESAFM
AND x.res_rsv_ruimte_key = resafm.fac_tracking_refkey
WHERE resafm.fac_tracking_datum < TRUNC (SYSDATE, 'mm')
GROUP BY x.prs_bedrijf_key,
x.prs_bedrijf_naam,
x.res_rsv_ruimte_key,
TO_CHAR (x.res_reservering_key) || '/' || TO_CHAR (x.res_rsv_ruimte_volgnr);
-- Te exporteren/bevriezen totalen over voorgaande maand (opdrachten en reserveringen).
CREATE OR REPLACE VIEW venr_v_rap_actual_fact_tot
(
fclt_3d_afdeling_key, -- Kunnen beperken per leverancier!
maand,
fclt_f_klant,
fclt_f_leverancier,
contractnr,
beschrijving,
aantal,
jaarbudget,
kosten_afgerond
)
AS
SELECT prs_afdeling_key,
maand,
klant,
leverancier,
contractnr,
beschrijving,
SUM (aantal),
jaarbudget,
SUM (kosten_afgerond)
FROM venr_v_actual_fact
GROUP BY prs_afdeling_key,
maand,
klant,
leverancier,
contractnr,
beschrijving,
jaarbudget;
-- Frozen regels en basis voor oa. de notificatie op de 11e van de maand; voor
-- de output geldt:
-- Frozen regels en basis voor oa. de notificatie in nacht na 1e werkdag van
-- de maand; voor de output geldt:
-- Dat deze de frozen opdrachten toont.
-- Dat deze de frozen reserveringen toont.
-- Nog niet in scope:
-- Dat de laatst bevroren maand per leverancier in nacht na 1e werkdag van de
-- maand wordt genotificeerd (via extra_key-principe) met daarin de kosten
-- gegroepeerd per klant/contract.
/* Formatted on 24-2-2017 15:00:00 (QP5 v5.136.908.31019) */
CREATE OR REPLACE VIEW venr_v_frozen_fact
(
prs_afdeling_key,
maand,
klant_key,
klant,
--leverancier_key,
extra_key, -- Moet zo heten!
leverancier,
cnt_contract_key,
contractnr,
beschrijving,
ref_key,
ref_id,
aantal,
jaarbudget,
kosten_afgerond
)
AS
SELECT b2a.prs_afdeling_key,
x.mld_opdr_ordernr maand,
x.prs_bedrijf_key klant_key,
x.prs_bedrijf_naam klant,
b2a.prs_bedrijf_key leverancier_key,
b2a.prs_bedrijf_naam leverancier,
x.cnt_contract_key,
x.cnt_contract_nummer_intern,
x.cnt_contract_omschrijving,
x.mld_opdr_key ref_key,
TO_CHAR (x.mld_melding_key) || '/' || TO_CHAR (x.mld_opdr_bedrijfopdr_volgnr) ref_id,
1 aantal,
x.cnt_contract_kosten jaarbudget,
x.mld_opdr_kosten kosten_afgerond
FROM (SELECT b.prs_bedrijf_key, b.prs_bedrijf_naam, -- Klant
o.mld_opdr_key,
o.mld_melding_key, o.mld_opdr_bedrijfopdr_volgnr,
o.mld_opdr_ordernr,
o.mld_uitvoerende_keys, -- Leverancier
o.mld_opdr_kosten,
c.cnt_contract_key,
c.cnt_contract_nummer_intern,
c.cnt_contract_omschrijving,
c.cnt_contract_kosten
FROM mld_opdr o,
mld_melding m,
prs_perslid p,
prs_v_afdeling_boom ab,
prs_bedrijf b,
cnt_contract c
WHERE o.mld_statusopdr_key = 7
AND o.mld_opdr_ordernr IS NOT NULL
AND o.mld_melding_key = m.mld_melding_key
AND m.prs_perslid_key = p.prs_perslid_key
AND p.prs_afdeling_key = ab.prs_afdeling_key
AND ab.prs_bedrijf_key = b.prs_bedrijf_key
AND o.cnt_contract_key = c.cnt_contract_key(+)) x
LEFT JOIN
( SELECT b.prs_bedrijf_key, b.prs_bedrijf_naam,
MIN (p.prs_afdeling_key) prs_afdeling_key,
COUNT ( * ) aantal
FROM prs_bedrijf b, prs_contactpersoon cp, prs_perslid p
WHERE b.prs_bedrijf_key = cp.prs_bedrijf_key(+)
AND cp.prs_perslid_key = p.prs_perslid_key(+)
GROUP BY b.prs_bedrijf_key, b.prs_bedrijf_naam) b2a
ON x.mld_uitvoerende_keys = b2a.prs_bedrijf_key
UNION ALL
SELECT TO_NUMBER (NULL) prs_afdeling_key, -- TODO: prs_afdeling_key van App<70>l?
x.res_rsv_ruimte_ordernr maand,
x.prs_bedrijf_key klant_key,
x.prs_bedrijf_naam klant,
12633 leverancier_key,
'App<EFBFBD>l' leverancier,
TO_NUMBER (NULL) cnt_contract_key,
TO_CHAR (NULL) cnt_contract_nummer_intern,
'RES/Banqueting' cnt_contract_omschrijving,
x.res_rsv_ruimte_key ref_key,
TO_CHAR (x.res_reservering_key) || '/' || TO_CHAR (x.res_rsv_ruimte_volgnr) ref_id,
1 aantal,
TO_NUMBER (NULL) jaarbudget, --x.cnt_contract_kosten,
SUM (x.res_rsv_artikel_prijs) kosten_afgerond
FROM (SELECT b.prs_bedrijf_key, b.prs_bedrijf_naam, -- Klant
rrr.res_rsv_ruimte_key,
rrr.res_reservering_key, rrr.res_rsv_ruimte_volgnr,
rrr.res_rsv_ruimte_ordernr,
rra.res_rsv_artikel_prijs
FROM res_rsv_ruimte rrr,
res_rsv_artikel rra,
res_artikel ra,
prs_perslid p,
prs_v_afdeling_boom ab,
prs_bedrijf b
WHERE rrr.res_status_bo_key = 6
AND rrr.res_rsv_ruimte_ordernr IS NOT NULL
AND rrr.res_rsv_ruimte_key = rra.res_rsv_ruimte_key
AND rra.res_artikel_key = ra.res_artikel_key
AND rrr.res_rsv_ruimte_contact_key = p.prs_perslid_key
AND p.prs_afdeling_key = ab.prs_afdeling_key
AND ab.prs_bedrijf_key = b.prs_bedrijf_key) x
GROUP BY x.res_rsv_ruimte_ordernr,
x.prs_bedrijf_key,
x.prs_bedrijf_naam,
x.res_rsv_ruimte_key,
TO_CHAR (x.res_reservering_key) || '/' || TO_CHAR (x.res_rsv_ruimte_volgnr);
-- Geexporteerde/bevroren totalen over voorgaande maanden (opdrachten en reserveringen).
CREATE OR REPLACE VIEW venr_v_rap_frozen_fact_tot
(
fclt_3d_afdeling_key, -- Kunnen beperken per leverancier!
fclt_f_maand,
fclt_f_klant,
fclt_f_leverancier,
contractnr,
beschrijving,
aantal,
jaarbudget,
kosten_afgerond
)
AS
SELECT prs_afdeling_key,
maand,
klant,
leverancier,
contractnr,
beschrijving,
SUM (aantal),
jaarbudget,
SUM (kosten_afgerond)
FROM venr_v_frozen_fact
GROUP BY prs_afdeling_key,
maand,
klant,
leverancier,
contractnr,
beschrijving,
jaarbudget;
/* Formatted on 24-2-2017 16:48:43 (QP5 v5.136.908.31019) */
CREATE OR REPLACE PROCEDURE venr_select_fact (p_applname IN VARCHAR2,
p_applrun IN VARCHAR2)
AS
-- Zet "kosten" opdrachten die voor de 1e zijn afgerond op AV.
CURSOR c1
IS
SELECT '[' || TO_CHAR (ref_key) || '|' || ref_id || '] ' aanduiding,
ref_key mld_opdr_key
FROM venr_v_actual_fact
WHERE beschrijving NOT LIKE 'RES/%'
ORDER BY 1;
-- Zet "kosten" banqueting die voor de 1e zijn afgerond op AV.
CURSOR c2
IS
SELECT '[' || TO_CHAR (ref_key) || '|' || ref_id || '] ' aanduiding,
ref_key res_rsv_ruimte_key
FROM venr_v_actual_fact
WHERE beschrijving LIKE 'RES/%'
ORDER BY 1;
-- Zet "inclusief" opdrachten die voor de 1e zijn gesloten op AV.
-- Afgerond/kosten meerekenen en geen dispuut
-- Afgemeld/kosten niet meerekenen, geen offerteaanvraag en geen dispuut
-- Afgerond/kosten niet meerekenen en geen dispuut (= geaccepteerde offerteaanvragen)
CURSOR c3
IS
SELECT o.mld_opdr_key
FROM mld_opdr o, mld_typeopdr ot, mld_melding m, prs_perslid p, prs_v_afdeling_boom ab, prs_bedrijf b
WHERE o.mld_statusopdr_key = 9 -- KV
AND o.mld_typeopdr_key = ot.mld_typeopdr_key
AND ot.mld_typeopdr_kosten = 1 -- Kosten meerekenen=Ja
AND NOT EXISTS -- Niet gemarkeerd als dispuut!
(SELECT 1
FROM mld_v_aanwezigkenmerkopdr ko, mld_kenmerk k
WHERE ko.mld_opdr_key = o.mld_opdr_key
AND ko.mld_kenmerk_key = k.mld_kenmerk_key
AND k.mld_srtkenmerk_key = -1 -- Dispuut
AND ko.mld_kenmerkopdr_waarde = '1') -- Aangevinkt
AND o.mld_melding_key = m.mld_melding_key
AND m.prs_perslid_key = p.prs_perslid_key
AND p.prs_afdeling_key = ab.prs_afdeling_key
AND ab.prs_bedrijf_key = b.prs_bedrijf_key
AND EXISTS -- Geconfigureerd als te rapporteren klant!
(SELECT 1
FROM fac_v_aanwezigusrdata
WHERE fac_usrtab_key = 121 -- FinRapKlanten
AND fac_usrdata_code = TO_CHAR (b.prs_bedrijf_key))
AND fac.gettrackingdate ('ORDAFR', o.mld_opdr_key) < TRUNC (SYSDATE, 'mm')
UNION ALL
SELECT o.mld_opdr_key
FROM mld_opdr o, mld_typeopdr ot, mld_melding m, prs_perslid p, prs_v_afdeling_boom ab, prs_bedrijf b
WHERE o.mld_statusopdr_key = 6 -- TV
AND o.mld_typeopdr_key = ot.mld_typeopdr_key
AND ot.mld_typeopdr_kosten = 0 -- Kosten meerekenen=Nee
AND ot.mld_typeopdr_key != 168 -- Offerteaanvraag
AND NOT EXISTS -- Niet gemarkeerd als dispuut!
(SELECT 1
FROM mld_v_aanwezigkenmerkopdr ko, mld_kenmerk k
WHERE ko.mld_opdr_key = o.mld_opdr_key
AND ko.mld_kenmerk_key = k.mld_kenmerk_key
AND k.mld_srtkenmerk_key = -1 -- Dispuut
AND ko.mld_kenmerkopdr_waarde = '1') -- Aangevinkt
AND o.mld_melding_key = m.mld_melding_key
AND m.prs_perslid_key = p.prs_perslid_key
AND p.prs_afdeling_key = ab.prs_afdeling_key
AND ab.prs_bedrijf_key = b.prs_bedrijf_key
AND EXISTS -- Geconfigureerd als te rapporteren klant!
(SELECT 1
FROM fac_v_aanwezigusrdata
WHERE fac_usrtab_key = 121 -- FinRapKlanten
AND fac_usrdata_code = TO_CHAR (b.prs_bedrijf_key))
AND fac.gettrackingdate ('ORDAFM', o.mld_opdr_key) < TRUNC (SYSDATE, 'mm')
UNION ALL
SELECT o.mld_opdr_key
FROM mld_opdr o, mld_typeopdr ot, mld_melding m, prs_perslid p, prs_v_afdeling_boom ab, prs_bedrijf b
WHERE o.mld_statusopdr_key = 9 -- KV (ooit met kosten en Offerteaanvragen)
AND o.mld_typeopdr_key = ot.mld_typeopdr_key
AND ot.mld_typeopdr_kosten = 0 -- Kosten meerekenen=Nee
AND NOT EXISTS -- Niet gemarkeerd als dispuut!
(SELECT 1
FROM mld_v_aanwezigkenmerkopdr ko, mld_kenmerk k
WHERE ko.mld_opdr_key = o.mld_opdr_key
AND ko.mld_kenmerk_key = k.mld_kenmerk_key
AND k.mld_srtkenmerk_key = -1 -- Dispuut
AND ko.mld_kenmerkopdr_waarde = '1') -- Aangevinkt
AND o.mld_melding_key = m.mld_melding_key
AND m.prs_perslid_key = p.prs_perslid_key
AND p.prs_afdeling_key = ab.prs_afdeling_key
AND ab.prs_bedrijf_key = b.prs_bedrijf_key
AND EXISTS -- Geconfigureerd als te rapporteren klant!
(SELECT 1
FROM fac_v_aanwezigusrdata
WHERE fac_usrtab_key = 121 -- FinRapKlanten
AND fac_usrdata_code = TO_CHAR (b.prs_bedrijf_key))
AND (fac.gettrackingdate ('ORDAFR', o.mld_opdr_key) < TRUNC (SYSDATE, 'mm')
OR fac.gettrackingdate ('ORDOOK', o.mld_opdr_key) < TRUNC (SYSDATE, 'mm'))
ORDER BY 1;
v_errormsg VARCHAR2 (1000);
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
v_holiday NUMBER;
v_count NUMBER (10);
BEGIN
-- In nacht na 1e werkdag van de maand (via scheduled task):
-- 1. Zet "kosten" opdrachten die voor de 1e zijn afgerond op AV.
-- 1. Zet "kosten" banqueting die voor de 1e zijn afgemeld op AV.
-- 3. Zet "inclusief" opdrachten die voor de 1e zijn gesloten op AV. => TODO???
-- x. Doe niets met afgewezen/geannuleerde opdrachten?
SELECT COUNT ( * )
INTO v_holiday
FROM mld_vrije_dagen
WHERE TRUNC (mld_vrije_dagen_datum) = TRUNC (SYSDATE - 1);
-- LET OP: FACT-export draait dagelijks na middernacht (begin van dag) en
-- de "freeze" wordt maandelijks alleen in nacht na 1e werkdag van de maand
-- uitgevoerd.
-- IF nacht na 1e werkdag van de maand (<28>n geen weekend <20>n geen vrije dag)!
-- count_work_days (d1,d2) bepaalt het #werkdagen van d1 tot d2 (als d1=d2,
-- dan return 0); daarom bepalen tov. laatste dag van vorige maand!
IF FAC.count_work_days (TRUNC (SYSDATE, 'mm') - 1, SYSDATE - 1) = 4 -- ***EENMALIG nacht/dag na 4e ipv. 1e werkdag van de maand!!!***
AND TO_CHAR (SYSDATE - 1, 'd') BETWEEN '2' AND '6'
AND v_holiday = 0
THEN
v_count := 0;
FOR rec IN c1
LOOP
BEGIN
v_errormsg := 'Fout bijwerken ordernummer (kosten opdrachten).';
UPDATE mld_opdr
SET mld_opdr_ordernr = TO_CHAR (TRUNC (SYSDATE, 'mm') - 1, 'yyyy-mm')
WHERE mld_opdr_key = rec.mld_opdr_key;
v_errormsg := 'Fout verwerken kosten-mld_opdr.';
MLD.setopdrachtstatus (rec.mld_opdr_key, 7, 4);
v_count := v_count + 1;
COMMIT;
EXCEPTION
WHEN OTHERS
THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
v_errormsg :=
v_errormsg
|| ' ORACLE (error '
|| oracle_err_num
|| '/'
|| oracle_err_mes
|| ')';
fac.writelog (p_applname, 'W', rec.aanduiding || v_errormsg, 'Kosten opdrachten');
COMMIT;
END;
END LOOP;
fac.writelog (p_applname, 'S', '#Kosten opdrachten bevroren: ' || TO_CHAR (v_count), '');
COMMIT;
v_count := 0;
FOR rec IN c2
LOOP
BEGIN
v_errormsg := 'Fout bijwerken ordernummer (kosten banqueting).';
UPDATE res_rsv_ruimte
SET res_rsv_ruimte_ordernr = TO_CHAR (TRUNC (SYSDATE, 'mm') - 1, 'yyyy-mm')
WHERE res_rsv_ruimte_key = rec.res_rsv_ruimte_key;
v_errormsg := 'Fout verwerken res_rsv_artikel';
UPDATE res_rsv_artikel
SET res_status_bo_key = 6 -- AV (en zet ook Verwerkt-date)
WHERE res_rsv_artikel_dirtlevel = 0
AND res_rsv_ruimte_key = rec.res_rsv_ruimte_key;
v_errormsg := 'Fout tracken res_rsv_ruimte';
fac.trackaction ('RESVER',
rec.res_rsv_ruimte_key,
NULL,
NULL,
'Banqueting verwerkt');
v_count := v_count + 1;
COMMIT;
EXCEPTION
WHEN OTHERS
THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
v_errormsg := v_errormsg || ' ORACLE (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
fac.writelog (p_applname, 'W', rec.aanduiding || v_errormsg, 'Kosten banqueting');
COMMIT;
END;
END LOOP;
fac.writelog (p_applname, 'S', '#Kosten banqueting bevroren: ' || TO_CHAR (v_count), '');
COMMIT;
v_count := 0;
FOR rec IN c3
LOOP
v_errormsg := 'Fout verwerken inclusief-mld_opdr.';
MLD.setopdrachtstatus (rec.mld_opdr_key, 7, 4);
v_count := v_count + 1;
COMMIT;
END LOOP;
fac.writelog (p_applname, 'S', '#Inclusief opdrachten bevroren: ' || TO_CHAR (v_count), '');
COMMIT;
END IF;
EXCEPTION
WHEN OTHERS
THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
v_errormsg := v_errormsg || ' ORACLE (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
fac.writelog (p_applname, 'E', v_errormsg, 'Proces FACT_EXPORT afgebroken!');
COMMIT;
END;
/
------ payload end ------
SET DEFINE OFF