Files
Database/FIN/FIN_VIE.SRC
Peter Feij 3e0db1aa4a PCHD#83092 budgethouder_key toegevoegd aan udr basisview voor facturen
svn path=/Database/trunk/; revision=67804
2025-01-30 13:32:32 +00:00

460 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);
/* 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,
budgethouder_key
)
AS
WITH
fiatteur_data
AS
(SELECT f.fin_factuur_key, fin.getfiatteur (f.fin_factuur_key) AS budgethouder_key
FROM fin_factuur f)
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 p.prs_perslid_key = fd.budgethouder_key)
AS budgethouder
, fd.budgethouder_key
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
, fiatteur_data fd
WHERE fin.getfactuurkostenplaats (f.fin_factuur_key) = k.prs_kostenplaats_key(+)
AND f.prs_kostensoort_key = ks.prs_kostensoort_key(+)
AND f.fin_factuur_key = fd.fin_factuur_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