Files
Database/FIN/FIN_VIE.SRC
Jos Groot Lipman dbd008f16b UWVA#36431 Passend mandaat opzoeken in organisatieboom savepoint
svn path=/Database/trunk/; revision=34962
2017-08-16 14:01:38 +00:00

470 lines
20 KiB
Plaintext

#ifdef FIN
/* FIN_VIE.SRC
*
* $Revision$
* $Id$
*/
#include "comsql.h"
/* LET OP (FSN#21553)
* Deze view lijkt qua naam een tabel, maar is het technisch niet
* Hij levert de statustekst in de juiste taal op, van een specifieke statuscode
* Voorheen was dit een tabel met deze naam, en werd deze initieel gevuld. Dit is
* hiermee dus vanwege de i18n veranderd.
*/
CREATE_VIEW(fin_factuur_statuses, 0)
AS
SELECT fac_code2label_code fin_factuur_statuses_key,
COALESCE (fac_locale_xsl_cust, fac_locale_xsl_tekst) fin_factuur_statuses_omschr
FROM fac_locale_xsl fl, fac_code2label fs
WHERE fl.fac_locale_xsl_label = fac_code2label_label
AND fac_code2label_domein = 'factuur'
AND fac_locale_xsl_lang = lcl.getuserlanguage ();
CREATE_VIEW(fac_v_noti_finreminder,0)
(
code,
sender,
receiver,
text,
key,
par1,
par2,
xkey
)
AS
SELECT 'FININF',
'',
fin.getfiatteur(f.fin_factuur_key) budgethouder,
'Fiatteringsverzoek voor '
|| COUNT (f.fin_factuur_key)
|| DECODE (COUNT (f.fin_factuur_key), 1, ' factuur.', ' facturen.'),
MIN (f.fin_factuur_key), -- Dummy key, althans een willekeurige; FSN#19425
NULL,
NULL,
NULL
FROM fin_factuur f
WHERE fin.getfiatteur(f.fin_factuur_key) <> -1 -- die kan ik geen bericht sturen
AND f.fin_factuur_statuses_key = 2
AND f.fin_factuur_verwijder IS NULL
GROUP BY fin.getfiatteur(f.fin_factuur_key);
-- Vooralsnog placeholders, moeten aangepast worden
CREATE_VIEW(fin_v_api_facturen, 1) AS SELECT * from fin_factuur;
/* ROOT VIEWS for User defined Reports (UDR) */
CREATE_VIEW(fin_v_udr_factuur, 1)
(
factuur_key,
factuur_datum,
uitvoerende,
leverancier_nr,
factuurnr_extern,
factuur_voor,
opdrachtnr,
opdracht_key,
contract_key,
bestelling_key,
kostenplaats,
kostenplaats_extern,
discipline_omschrijving,
catalogus,
kostensoort,
kostensoort_opmerking,
kostensoort_refcode,
kostensoort_altcode,
kostensoort_btw,
stdmelding_omschrijving,
bedrag_incl_btw,
bedrag_excl_btw,
status,
opmerking,
budgethouder
)
AS
SELECT f.fin_factuur_key,
f.fin_factuur_datum factuur_datum,
(SELECT b.prs_bedrijf_naam
FROM prs_bedrijf b
WHERE prs_bedrijf_key =
COALESCE (o.mld_uitvoerende_keys, c.cnt_prs_bedrijf_key, bo.prs_bedrijf_key))
uitvoerende,
(SELECT b.prs_leverancier_nr
FROM prs_bedrijf b
WHERE prs_bedrijf_key =
COALESCE (o.mld_uitvoerende_keys, c.cnt_prs_bedrijf_key, bo.prs_bedrijf_key))
leverancier_nr,
fin_factuur_nr factuurnr_extern,
CASE
WHEN f.mld_opdr_key IS NOT NULL THEN lcl.l ('lcl_fin_mld_opdr')
WHEN f.cnt_contract_key IS NOT NULL THEN lcl.l ('lcl_fin_cnt_contract')
WHEN f.bes_bestelopdr_key IS NOT NULL THEN lcl.l ('lcl_fin_bestelling')
END
CASE,
COALESCE (
NVL2 (
f.mld_opdr_key,
ins_srtdiscipline_prefix
|| TO_CHAR (o.mld_melding_key)
|| '/'
|| o.mld_opdr_bedrijfopdr_volgnr,
NULL),
NVL2 (
f.cnt_contract_key,
'C'
|| cnt_contract_nummer_intern
|| NVL2 (cnt_contract_versie, '.' || cnt_contract_versie, ''),
NULL),
NVL2 (f.bes_bestelopdr_key, bo.bes_bestelopdr_id, NULL),
' ')
opdrachtnr,
f.mld_opdr_key,
f.cnt_contract_key,
f.bes_bestelopdr_key,
NVL2 (
k.prs_kostenplaats_nr,
prs_kostenplaats_nr || ' '
|| lcl.x ('prs_kostenplaats_omschrijving',
k.prs_kostenplaats_key,
k.prs_kostenplaats_omschrijving),
'')
kostenplaats,
DECODE (k.prs_kostenplaats_extern, 1, lcl.l ('lcl_yes'), lcl.l ('lcl_no')),
cd.ins_discipline_omschrijving,
(SELECT MIN (ins_discipline_omschrijving)
FROM bes_discipline bd,
bes_srtgroep bg,
bes_srtdeel bs,
bes_bestelling_item bi,
bes_bestelopdr_item boi
WHERE boi.bes_bestelopdr_key = bo.bes_bestelopdr_key
AND bi.bes_bestelopdr_item_key = boi.bes_bestelopdr_item_key
AND bs.bes_srtdeel_key = bi.bes_srtdeel_key
AND bg.bes_srtgroep_key = bs.bes_srtgroep_key
AND bd.ins_discipline_key = bg.ins_discipline_key)
bes_discipline_omschrijving,
ks.prs_kostensoort_oms,
ks.prs_kostensoort_opmerking,
ks.prs_kostensoort_refcode,
ks.prs_kostensoort_altcode,
DECODE (ks.prs_kostensoort_btw, 1, lcl.l ('lcl_yes'), lcl.l ('lcl_no')),
mld_stdmelding_omschrijving,
f.fin_factuur_totaal + f.fin_factuur_totaal_btw bedrag_incl_btw,
f.fin_factuur_totaal bedrag_excl_btw,
fs.fin_factuur_statuses_omschr,
f.fin_factuur_opmerking,
(SELECT p.prs_perslid_naam_full
FROM prs_v_perslid_fullnames_all p
WHERE prs_perslid_key = fin.getfiatteur(f.fin_factuur_key))
budgethouder
FROM fin_factuur f,
prs_kostenplaats k,
mld_opdr o,
mld_melding m,
mld_discipline d,
mld_stdmelding sm,
ins_srtdiscipline sd,
cnt_contract c,
cnt_discipline cd,
bes_bestelopdr bo,
prs_kostensoort ks,
fin_factuur_statuses fs
WHERE fin.getfactuurkostenplaats(f.fin_factuur_key) = k.prs_kostenplaats_key(+)
AND f.prs_kostensoort_key = ks.prs_kostensoort_key(+)
AND f.mld_opdr_key = o.mld_opdr_key(+)
AND o.mld_melding_key = m.mld_melding_key(+)
AND m.mld_stdmelding_key = sm.mld_stdmelding_key(+)
AND sm.mld_ins_discipline_key = d.ins_discipline_key(+)
AND d.ins_srtdiscipline_key = sd.ins_srtdiscipline_key(+)
AND f.cnt_contract_key = c.cnt_contract_key(+)
AND c.ins_discipline_key = cd.ins_discipline_key(+)
AND f.bes_bestelopdr_key = bo.bes_bestelopdr_key(+)
AND f.fin_factuur_statuses_key = fs.fin_factuur_statuses_key
AND f.fin_factuur_verwijder IS NULL;
// Dit is strict geen fin view, maar het is de UDR-versie van het kostenoverzicht
// dat bedragen rapporteert over de BROC.
CREATE_VIEW(fin_v_udr_kostenoverzicht, 0)
(
datum,
aanvrager,
organisatie,
categorie,
referentie,
bedrag,
status,
kostenplaatsgroep,
kostenplaatsnr,
kostenplaats,
kostensoortgroep,
kostensoortnr,
kostensoort,
ordernr,
locatie,
district,
regio,
fclt_3d_locatie_key,
fclt_3d_afdeling_key
)
AS
SELECT datum,
p.prs_perslid_naam
|| NVL2 (p.prs_perslid_voorletters, ', ' || p.prs_perslid_voorletters, '')
|| NVL2 (p.prs_perslid_tussenvoegsel, ' ' || p.prs_perslid_tussenvoegsel, '')
|| NVL2 (p.prs_perslid_voornaam, ' (' || p.prs_perslid_voornaam || ')', '')
aanvrager,
d.prs_afdeling_naam organisatie,
categorie,
categorienummer,
SUM (bedrag) bedrag,
status,
kpg.prs_kostenplaatsgrp_oms,
k.prs_kostenplaats_nr,
lcl.x ('prs_kostenplaats_omschrijving',
k.prs_kostenplaats_key,
k.prs_kostenplaats_omschrijving),
ksg.prs_kostensoortgrp_oms,
ks.prs_kostensoort_oms,
ks.prs_kostensoort_opmerking,
ordernr,
alg_locatie_code,
alg_district_omschrijving,
alg_regio_omschrijving,
alg_locatie_key,
d.prs_afdeling_key
FROM (SELECT rr.prs_kostenplaats_key,
rr.res_rsv_ruimte_van datum,
res_rsv_ruimte_contact_key prs_perslid_key,
'Reservering' categorie,
TO_CHAR (rr.res_reservering_key) || '/' || rr.res_rsv_ruimte_volgnr
categorienummer,
res_rsv_ruimte_prijs bedrag,
s.res_status_bo_omschrijving status,
'RES' module,
dis.prs_kostensoort_key,
rr.res_rsv_ruimte_ordernr ordernr,
rr.res_reservering_key kostenplaats_item_key,
rr.res_rsv_ruimte_key kostenplaats_item_child_key,
(SELECT MAX (g.alg_locatie_key)
FROM alg_ruimte r,
alg_verdieping v,
alg_gebouw g,
res_alg_ruimte ar
WHERE ar.res_alg_ruimte_verwijder IS NULL
AND ar.alg_ruimte_key = r.alg_ruimte_key
AND r.alg_verdieping_key = v.alg_verdieping_key
AND v.alg_gebouw_key = g.alg_gebouw_key
AND ar.res_ruimte_key = ro.res_ruimte_key)
locatie_key
FROM res_v_aanwezigrsv_ruimte rr,
res_ruimte_opstelling ro,
res_ruimte ru,
res_discipline dis,
res_status_bo s
WHERE ru.res_ruimte_prijs <> 0
AND rr.res_ruimte_opstel_key = ro.res_ruimte_opstel_key
AND ro.res_ruimte_key = ru.res_ruimte_key
AND s.res_status_bo_key = rr.res_status_bo_key
AND ru.res_discipline_key = dis.ins_discipline_key
UNION ALL
SELECT rr.prs_kostenplaats_key,
ra.res_rsv_artikel_levering datum,
res_rsv_ruimte_contact_key prs_perslid_key,
'Reservering' categorie,
TO_CHAR (rr.res_reservering_key) || '/' || rr.res_rsv_ruimte_volgnr
categorienummer,
res_rsv_artikel_prijs bedrag,
s.res_status_bo_omschrijving status,
'RES' module,
dis.prs_kostensoort_key,
rr.res_rsv_ruimte_ordernr ordernr,
rr.res_reservering_key kostenplaats_item_key,
rr.res_rsv_ruimte_key kostenplaats_item_child_key,
COALESCE (
(SELECT g.alg_locatie_key
FROM alg_ruimte r, alg_verdieping v, alg_gebouw g
WHERE rr.alg_ruimte_key = r.alg_ruimte_key
AND r.alg_verdieping_key = v.alg_verdieping_key
AND v.alg_gebouw_key = g.alg_gebouw_key),
(SELECT MAX (g.alg_locatie_key)
FROM alg_ruimte r,
alg_verdieping v,
alg_gebouw g,
res_alg_ruimte ar,
res_ruimte_opstelling ro
WHERE ar.res_alg_ruimte_verwijder IS NULL
AND ar.alg_ruimte_key = r.alg_ruimte_key
AND r.alg_verdieping_key = v.alg_verdieping_key
AND v.alg_gebouw_key = g.alg_gebouw_key
AND ar.res_ruimte_key = ro.res_ruimte_key
AND rr.res_ruimte_opstel_key = ro.res_ruimte_opstel_key))
locatie_key
FROM res_v_aanwezigrsv_ruimte rr,
res_v_aanwezigrsv_artikel ra,
res_artikel a,
res_discipline dis,
res_status_bo s
WHERE COALESCE (ra.res_rsv_artikel_prijs, a.res_artikel_prijs) <> 0
AND rr.res_rsv_ruimte_key = ra.res_rsv_ruimte_key
AND ra.res_artikel_key = a.res_artikel_key
AND s.res_status_bo_key = ra.res_status_bo_key
AND a.res_discipline_key = dis.ins_discipline_key
UNION ALL
SELECT rr.prs_kostenplaats_key,
rd.res_rsv_deel_van datum,
res_rsv_ruimte_contact_key prs_perslid_key,
'Reservering' categorie,
TO_CHAR (rr.res_reservering_key) || '/' || rr.res_rsv_ruimte_volgnr
categorienummer,
res_rsv_deel_prijs bedrag,
s.res_status_bo_omschrijving status,
'RES' module,
dis.prs_kostensoort_key,
rr.res_rsv_ruimte_ordernr ordernr,
rr.res_reservering_key kostenplaats_item_key,
rr.res_rsv_ruimte_key kostenplaats_item_child_key,
COALESCE (
(SELECT g.alg_locatie_key
FROM alg_ruimte r, alg_verdieping v, alg_gebouw g
WHERE rr.alg_ruimte_key = r.alg_ruimte_key
AND r.alg_verdieping_key = v.alg_verdieping_key
AND v.alg_gebouw_key = g.alg_gebouw_key),
(SELECT MAX (g.alg_locatie_key)
FROM alg_ruimte r,
alg_verdieping v,
alg_gebouw g,
res_alg_ruimte ar,
res_ruimte_opstelling ro
WHERE ar.res_alg_ruimte_verwijder IS NULL
AND ar.alg_ruimte_key = r.alg_ruimte_key
AND r.alg_verdieping_key = v.alg_verdieping_key
AND v.alg_gebouw_key = g.alg_gebouw_key
AND ar.res_ruimte_key = ro.res_ruimte_key
AND rr.res_ruimte_opstel_key = ro.res_ruimte_opstel_key))
locatie_key
FROM res_v_aanwezigrsv_ruimte rr,
res_v_aanwezigrsv_deel rd,
res_deel d,
res_discipline dis,
res_status_bo,
res_status_bo s
WHERE d.res_deel_prijs <> 0
AND rr.res_rsv_ruimte_key = rd.res_rsv_ruimte_key
AND rd.res_deel_key = d.res_deel_key
AND s.res_status_bo_key = rd.res_status_bo_key
AND d.res_discipline_key = dis.ins_discipline_key
UNION ALL
SELECT o.prs_kostenplaats_key,
o.mld_opdr_datumbegin datum,
m.prs_perslid_key prs_perslid_key,
mdis.ins_discipline_omschrijving categorie,
sd.ins_srtdiscipline_prefix
|| m.mld_melding_key
|| '/'
|| o.mld_opdr_bedrijfopdr_volgnr
categorienummer,
COALESCE (o.mld_opdr_kosten, 0) bedrag,
s.mld_statusopdr_omschrijving status,
'MLD' module,
COALESCE (s.prs_kostensoort_key, mdis.prs_kostensoort_key) prs_kostensoort_key,
o.mld_opdr_ordernr ordernr,
o.mld_opdr_key kostenplaats_item_key,
-1 kostenplaats_item_child_key,
m.mld_alg_locatie_key locatie_key
FROM mld_opdr o,
mld_typeopdr ot,
mld_melding m,
mld_stdmelding s,
mld_discipline mdis,
ins_srtdiscipline sd,
mld_statusopdr s
WHERE o.mld_opdr_kosten <> 0
AND o.mld_typeopdr_key = ot.mld_typeopdr_key
AND ot.mld_typeopdr_kosten = 1
AND o.mld_melding_key = m.mld_melding_key
AND s.mld_statusopdr_key = o.mld_statusopdr_key
AND m.mld_stdmelding_key = s.mld_stdmelding_key
AND mdis.ins_discipline_key = s.mld_ins_discipline_key
AND mdis.ins_srtdiscipline_key = sd.ins_srtdiscipline_key
AND o.mld_statusopdr_key NOT IN (1, 2, 3, 4, 10)
UNION ALL
SELECT b.prs_kostenplaats_key,
bo.bes_bestelopdr_datum datum,
b.prs_perslid_key prs_perslid_key,
'Bestelling' categorie,
TO_CHAR (b.bes_bestelling_key) categorienummer,
(boi.bes_bestelopdr_item_aantal * boi.bes_bestelopdr_item_prijs) bedrag,
s.bes_bestelopdrstatuses_omschr status,
'BES' module,
bdis.prs_kostensoort_key,
b.bes_bestelling_ordernr ordernr,
b.bes_bestelling_key kostenplaats_item_key,
-1 kostenplaats_item_child_key,
(SELECT alg_locatie_key
FROM mld_adres ma
WHERE ma.mld_adres_key = b.mld_adres_key_lev)
locatie_key
FROM bes_bestelling b,
bes_bestelling_item bi,
bes_bestelopdr bo,
bes_bestelopdr_item boi,
bes_srtdeel isd,
bes_srtgroep isg,
bes_discipline bdis,
bes_bestelopdrstatuses s
WHERE b.bes_bestelling_key = bi.bes_bestelling_key
AND bo.bes_bestelopdr_key = boi.bes_bestelopdr_key
AND bi.bes_bestelopdr_item_key = boi.bes_bestelopdr_item_key
AND s.bes_bestelopdrstatuses_key = bo.bes_bestelopdr_status
AND bi.bes_srtdeel_key = isd.bes_srtdeel_key
AND isd.bes_srtgroep_key = isg.bes_srtgroep_key
AND isg.ins_discipline_key = bdis.ins_discipline_key
AND bo.bes_bestelopdr_status IN (4, 6, 7)) tab,
prs_kostenplaats k,
prs_kostenplaatsgrp kpg,
prs_kostensoort ks,
prs_kostensoortgrp ksg,
prs_perslid p,
prs_v_afdeling d,
alg_locatie l,
alg_district d,
alg_regio r
WHERE tab.prs_kostenplaats_key(+) = k.prs_kostenplaats_key
AND tab.prs_kostensoort_key = ks.prs_kostensoort_key(+)
AND k.prs_kostenplaatsgrp_key = kpg.prs_kostenplaatsgrp_key(+)
AND ks.prs_kostensoortgrp_key = ksg.prs_kostensoortgrp_key(+)
AND tab.prs_perslid_key = p.prs_perslid_key(+)
AND p.prs_afdeling_key = d.prs_afdeling_key(+)
AND tab.locatie_key = l.alg_locatie_key(+)
AND l.alg_district_key = d.alg_district_key(+)
AND d.alg_regio_key = r.alg_regio_key(+)
AND datum >= TO_DATE ('01-01-2010', 'DD-MM-YYYY')
GROUP BY k.prs_kostenplaats_nr,
lcl.x ('prs_kostenplaats_omschrijving',
k.prs_kostenplaats_key,
k.prs_kostenplaats_omschrijving),
datum,
p.prs_perslid_naam
|| NVL2 (p.prs_perslid_voorletters, ', ' || p.prs_perslid_voorletters, '')
|| NVL2 (p.prs_perslid_tussenvoegsel, ' ' || p.prs_perslid_tussenvoegsel, '')
|| NVL2 (p.prs_perslid_voornaam, ' (' || p.prs_perslid_voornaam || ')', ''),
d.prs_afdeling_naam,
d.prs_afdeling_key,
categorie,
categorienummer,
status,
kpg.prs_kostenplaatsgrp_oms,
ksg.prs_kostensoortgrp_oms,
ks.prs_kostensoort_oms,
ks.prs_kostensoort_opmerking,
ordernr,
ksg.prs_kostensoortgrp_oms,
alg_locatie_key,
alg_district_omschrijving,
alg_regio_omschrijving,
alg_locatie_code;
REGISTERRUN('$Id$')
#endif // FIN