Files
Customer/KFSG/kfsg.sql
Erik Groener 90823f89c2 FCLT#55208 Invalid na upgrade DB35
svn path=/Customer/trunk/; revision=39724
2018-11-08 13:05:15 +00:00

994 lines
41 KiB
SQL

--
-- $Id$
--
-- Script containing customer specific configuration sql statements for aads: Arcadis Aqumen Facility Management
DEFINE thisfile = 'KFSG.SQL'
DEFINE dbuser = '^KFSG'
SET ECHO ON
SET DEFINE ON
COLUMN fcltlogfile NEW_VALUE fcltlogfile NOPRINT;
WHENEVER SQLERROR EXIT;
SELECT adm.scriptspoolfile('&dbuser', '&thisfile') AS fcltlogfile FROM DUAL;
WHENEVER SQLERROR CONTINUE;
SPOOL &fcltlogfile
SET DEFINE OFF
------ payload begin ------
CREATE OR REPLACE PACKAGE KFSG
AS
PROCEDURE set_werkplek;
END;
/
CREATE OR REPLACE PACKAGE BODY KFSG
AS
-- Geef alle mensen een werkplek in het Schiphol gebouw (key
PROCEDURE set_werkplek
AS
CURSOR c
IS
SELECT *
FROM prs_perslid p
WHERE NOT EXISTS
(SELECT prs_perslidwerkplek_key
FROM prs_perslidwerkplek pwp
WHERE pwp.prs_perslid_key = p.prs_perslid_key)
AND SUBSTR (prs_perslid_oslogin, 1, 1) <> '_';
BEGIN
FOR rec IN c
LOOP
PRS.movetoruimte (rec.prs_perslid_key, 4963, 'R', 0);
END LOOP;
COMMIT;
END;
END;
/
CREATE OR REPLACE PROCEDURE kfsg_export_daily_task (
p_applname IN VARCHAR2,
p_applrun IN VARCHAR2,
p_filedir IN VARCHAR2,
p_filename IN VARCHAR2)
AS
BEGIN
KFSG.set_werkplek();
END;
/
-- Notificatie om catering wijzigingen in de catalogus borrel (key 165) en gebak (key=162) te notificeren
CREATE OR REPLACE VIEW KFSG_V_NOTI_CATERING
(
sender,
receiver,
text,
code,
fac_srtnotificatie_key,
KEY,
xkey,
xemail,
xmobile
)
AS
SELECT NULL sender,
NULL receiver, --Catering1@schiphol.nl
'Catering bij reservering '
|| rrr.res_reservering_key
|| '/'
|| rrr.res_rsv_ruimte_volgnr
|| ' is aangemaakt/gewijzigd '
text,
'RESINF' code,
NULL fac_srtnotificatie_key,
rrr.res_reservering_key key,
rrr.res_rsv_ruimte_key xkey,
'Catering1@schiphol.nl' xemail,
NULL xmobile
FROM res_rsv_artikel rra, res_rsv_ruimte rrr, res_artikel ra
WHERE rra.res_rsv_ruimte_key = rrr.res_rsv_ruimte_key
AND rra.res_artikel_key = ra.res_artikel_key
AND ra.res_discipline_key IN (165,162, 167)
AND rra.res_rsv_artikel_levering > SYSDATE
AND GREATEST (COALESCE (res_rsv_artikel_mutatie, SYSDATE - 100),
COALESCE (res_rsv_artikel_verwijder, SYSDATE - 100),
COALESCE (res_rsv_artikel_aanmaak, SYSDATE - 100)) >
(SELECT fac_notificatie_job_nextrun
- fac_notificatie_job_interval / 24
FROM fac_notificatie_job
WHERE fac_notificatie_job_view = 'KFSG_V_NOTI_CATERING')
AND GREATEST (COALESCE (res_rsv_artikel_mutatie, SYSDATE - 100),
COALESCE (res_rsv_artikel_verwijder, SYSDATE - 100),
COALESCE (res_rsv_artikel_aanmaak, SYSDATE - 100)) <
(SELECT fac_notificatie_job_nextrun
FROM fac_notificatie_job
WHERE fac_notificatie_job_view = 'KFSG_V_NOTI_CATERING')
GROUP BY rrr.res_rsv_ruimte_key,
rrr.res_reservering_key,
rrr.res_rsv_ruimte_volgnr
UNION ALL
SELECT NULL sender,
NULL receiver, --Catering1@schiphol.nl
'Reservering '
|| rrr.res_reservering_key
|| '/'
|| rrr.res_rsv_ruimte_volgnr
|| ' is aangemaakt/gewijzigd '
text,
'RESINF' code,
NULL fac_srtnotificatie_key,
rrr.res_reservering_key key,
rrr.res_rsv_ruimte_key xkey,
'Catering1@schiphol.nl' xemail,
NULL xmobile
FROM fac_tracking t,
res_rsv_ruimte rrr,
res_ruimte_opstelling ro,
res_ruimte rr
WHERE fac_srtnotificatie_key IN (88, 89) -- resnew, resupd
AND t.fac_tracking_refkey = rrr.res_rsv_ruimte_key
AND rrr.res_ruimte_opstel_key = ro.res_ruimte_opstel_key
AND ro.res_ruimte_key = rr.res_ruimte_key
AND rr.res_discipline_key = 142 -- FSP
AND t.fac_tracking_datum >
(SELECT fac_notificatie_job_nextrun
- fac_notificatie_job_interval / 24
FROM fac_notificatie_job
WHERE fac_notificatie_job_view = 'KFSG_V_NOTI_CATERING')
AND t.fac_tracking_datum <
(SELECT fac_notificatie_job_nextrun
FROM fac_notificatie_job
WHERE fac_notificatie_job_view = 'KFSG_V_NOTI_CATERING')
GROUP BY rrr.res_rsv_ruimte_key,
rrr.res_reservering_key,
rrr.res_rsv_ruimte_volgnr;
-- rapport met mensen die via de interface inactief gemaakt zijn en nog lopende verplichtingen hebben te tonen.
CREATE OR REPLACE VIEW kfsg_v_rap_prs_inactief
AS
SELECT prs_perslid_inactief - SYSDATE hide_f_volgorde,
pf.prs_perslid_naam_full,
p.prs_perslid_key,
COUNT (item) aantal,
prs_perslid_inactief + 90 einddatum
FROM prs_perslid p, prs_v_perslid_fullnames pf, prs_v_verplichting v
WHERE prs_perslid_inactief IS NOT NULL
AND prs_perslid_verwijder IS NULL
AND p.prs_perslid_key = v.prs_perslid_key
AND p.prs_perslid_key = pf.prs_perslid_key(+)
GROUP BY p.prs_perslid_key, prs_perslid_inactief, prs_perslid_naam_full;
CREATE OR REPLACE VIEW kfsg_v_noti_resreminder
(
code,
sender,
receiver,
text,
key,
xkey
)
AS
SELECT 'RESINF',
NULL,
rsvr.res_rsv_ruimte_host_key,
'Reservering '
|| res.res_reservering_key
|| ': U heeft op '
|| TO_CHAR (rsvr.res_rsv_ruimte_van, 'DD-MM')
|| ' van '
|| TO_CHAR (rsvr.res_rsv_ruimte_van, 'HH24:MI')
|| ' tot '
|| TO_CHAR (rsvr.res_rsv_ruimte_tot, 'HH24:MI')
|| ' ruimte '
|| r.res_ruimte_nr
|| ' gereserveerd.',
res.res_reservering_key,
rsvr.res_rsv_ruimte_key
FROM res_v_aanwezigreservering res,
res_v_aanwezigrsv_ruimte rsvr,
res_ruimte_opstelling opst,
res_disc_params rdp,
res_ruimte r
WHERE r.res_discipline_key = rdp.res_ins_discipline_key
AND rdp.res_disc_params_noti_dagen IS NOT NULL
AND res.res_reservering_key = rsvr.res_reservering_key
AND opst.res_ruimte_opstel_key = rsvr.res_ruimte_opstel_key
AND opst.res_ruimte_key = r.res_ruimte_key
AND rsvr.res_status_fo_key <= 5
AND rsvr.res_rsv_ruimte_van BETWEEN fac.datumtijdplusuitvoertijd (
SYSDATE,
res_disc_params_noti_dagen,
'DAGEN')
AND fac.datumtijdplusuitvoertijd (
SYSDATE,
res_disc_params_noti_dagen
+ 1,
'DAGEN')
AND fac.getweekdaynum (SYSDATE) NOT IN (1, 7)
AND rsvr.res_rsv_ruimte_van >= SYSDATE
UNION ALL
SELECT 'RESINF',
NULL,
res_rsv_ruimte_host_key,
'Reservering '
|| res_reservering_key
|| ': U heeft op '
|| TO_CHAR (MIN (van), 'dd-mm')
|| DECODE (
MIN (van),
MAX (tot),
' om ' || TO_CHAR (MIN (van), 'hh24:mi'),
' van '
|| TO_CHAR (MIN (van), 'hh24:mi')
|| ' tot '
|| TO_CHAR (MAX (tot), 'hh24:mi'))
|| ' in ruimte ('
|| (SELECT alg_gebouw_code
|| '-'
|| alg_verdieping_code
|| '-'
|| alg_ruimte_nr
FROM alg_v_onroerendgoed_gegevens arg
WHERE arg.alg_ruimte_key = ruimte_key)
|| ') '
|| COUNT (res_reservering_key)
|| ' voorziening(en) gereserveerd.',
res_reservering_key,
res_rsv_ruimte_key
FROM (SELECT rsvr.res_rsv_ruimte_host_key,
res.res_reservering_key,
rsvd.res_rsv_deel_van van,
rsvd.res_rsv_deel_tot tot,
rsvr.res_rsv_ruimte_key,
rsvr.alg_ruimte_key ruimte_key
FROM res_v_aanwezigreservering res,
res_v_aanwezigrsv_ruimte rsvr,
res_disc_params rdp,
res_rsv_deel rsvd,
res_deel rd
WHERE rsvd.res_rsv_ruimte_key = rsvr.res_rsv_ruimte_key
AND rd.res_deel_key = rsvd.res_deel_key
AND rd.res_discipline_key = rdp.res_ins_discipline_key
AND rdp.res_disc_params_noti_dagen IS NOT NULL
AND res.res_reservering_key = rsvr.res_reservering_key
AND rsvr.res_ruimte_opstel_key IS NULL
AND rsvr.res_status_fo_key <= 5
AND rsvd.res_rsv_deel_verwijder IS NULL
AND rsvd.res_rsv_deel_van BETWEEN fac.datumtijdplusuitvoertijd (
SYSDATE,
res_disc_params_noti_dagen,
'DAGEN')
AND fac.datumtijdplusuitvoertijd (
SYSDATE,
res_disc_params_noti_dagen
+ 1,
'DAGEN')
AND fac.getweekdaynum (SYSDATE) NOT IN (1, 7)
AND rsvd.res_rsv_deel_van >= SYSDATE
UNION ALL
SELECT rsvr.res_rsv_ruimte_host_key,
res.res_reservering_key,
rsva.res_rsv_artikel_levering van,
rsva.res_rsv_artikel_levering tot,
rsvr.res_rsv_ruimte_key,
rsvr.alg_ruimte_key ruimte_key
FROM res_v_aanwezigreservering res,
res_v_aanwezigrsv_ruimte rsvr,
res_disc_params rdp,
res_rsv_artikel rsva,
res_artikel ra
WHERE rsva.res_rsv_ruimte_key = rsvr.res_rsv_ruimte_key
AND ra.res_discipline_key = rdp.res_ins_discipline_key
AND rsva.res_artikel_key = ra.res_artikel_key
AND rdp.res_disc_params_noti_dagen IS NOT NULL
AND res.res_reservering_key = rsvr.res_reservering_key
AND rsvr.res_ruimte_opstel_key IS NULL
AND rsvr.res_status_fo_key <= 5
AND rsva.res_rsv_artikel_verwijder IS NULL
AND rsva.res_rsv_artikel_levering BETWEEN fac.datumtijdplusuitvoertijd (
SYSDATE,
res_disc_params_noti_dagen,
'DAGEN')
AND fac.datumtijdplusuitvoertijd (
SYSDATE,
res_disc_params_noti_dagen
+ 1,
'DAGEN')
AND fac.getweekdaynum (SYSDATE) NOT IN (1, 7)
AND rsva.res_rsv_artikel_levering >= SYSDATE)
GROUP BY res_rsv_ruimte_host_key,
res_reservering_key,
res_rsv_ruimte_key,
ruimte_key;
CREATE OR REPLACE VIEW kfsg_v_resruimte_qrc
(
district,
locatie,
gebouw,
catalogus,
ruimte_nr,
ruimte_omschrijving,
res_ruimte_key,
fac_bookmark_naam,
fac_bookmark_id
)
AS
SELECT DISTINCT alg_district_omschrijving,
alg_locatie_omschrijving,
alg_gebouw_omschrijving,
ins_discipline_omschrijving,
res_ruimte_nr,
res_ruimte_omschrijving,
rr.res_ruimte_key,
fac_bookmark_naam,
fac_bookmark_id
FROM res_ruimte rr,
res_discipline rd,
fac_bookmark bk,
(SELECT rag.res_ruimte_key,
alg_district_omschrijving,
alg_locatie_omschrijving,
alg_gebouw_omschrijving
FROM res_alg_ruimte rag,
alg_v_onroerendgoed aor,
alg_gebouw g,
alg_locatie l,
alg_district d
WHERE rag.alg_ruimte_key = aor.alg_onroerendgoed_keys
AND aor.alg_gebouw_key = g.alg_gebouw_key
AND g.alg_locatie_key = l.alg_locatie_key
AND l.alg_district_key = d.alg_district_key) res_alg
WHERE res_ruimte_verwijder IS NULL
AND rd.ins_discipline_key = rr.res_discipline_key
AND rr.res_ruimte_key = res_alg.res_ruimte_key(+)
AND bk.fac_bookmark_naam LIKE '%QRC_RES_RUIMTE%';
-- Kostenrapportage met de kosten van alle onderdelen KFSG#52740
/* Formatted on 16/7/2018 9:23:43 (QP5 v5.313) */
CREATE OR REPLACE VIEW kfsg_v_kostenrapportage
AS
SELECT nummer,
kostentype,
datum,
COALESCE (k.prs_kostenplaats_omschrijving,
ka.prs_kostenplaats_omschrijving)
kostenplaats,
aantal,
omschrijving,
prijs,
ins_discipline_omschrijving
catalogus
FROM (SELECT res_reservering_key || '/' || res_rsv_ruimte_volgnr
nummer,
'artikel'
kostentype,
res_rsv_ruimte_van
datum,
prs_kostenplaats_key,
res_rsv_ruimte_host_key
prs_perslid_key,
res_rsv_artikel_aantal
aantal,
ra.res_artikel_omschrijving
omschrijving,
RES.getartikelprijs (res_rsv_artikel_key)
prijs,
ra.res_discipline_key
ins_discipline_key
FROM res_rsv_ruimte rrr, res_rsv_artikel rra, res_artikel ra
WHERE rrr.res_rsv_ruimte_key = rra.res_rsv_ruimte_key
AND rra.res_artikel_key = ra.res_artikel_key
AND rra.res_rsv_artikel_verwijder IS NULL
UNION ALL
SELECT res_reservering_key || '/' || res_rsv_ruimte_volgnr
nummer,
'deel',
res_rsv_ruimte_van,
rrr.prs_kostenplaats_key,
res_rsv_ruimte_host_key
prs_perslid_key,
1,
res_deel_omschrijving,
RES.getdeelprijs (res_rsv_deel_key),
rd.res_discipline_key
FROM res_rsv_ruimte rrr, res_rsv_deel rrd, res_deel rd
WHERE rrr.res_rsv_ruimte_key = rrd.res_rsv_ruimte_key
AND rrd.res_deel_key = rd.res_deel_key
AND rrd.res_rsv_deel_verwijder IS NULL
AND res_rsv_ruimte_van < SYSDATE
UNION ALL
SELECT TO_CHAR (b.bes_bestelling_key),
'bestelling',
b.bes_bestelling_datum,
b.prs_kostenplaats_key,
prs_perslid_key_voor,
bi.bes_bestelling_item_aantal,
sd.bes_srtdeel_omschrijving,
bi.bes_bestelling_item_aantal * bes_bestelling_item_prijs,
sg.ins_discipline_key
FROM bes_bestelling b,
bes_bestelling_item bi,
bes_srtdeel sd,
bes_srtgroep sg
WHERE b.bes_bestelling_key = bi.bes_bestelling_key
AND bi.bes_srtdeel_key = sd.bes_srtdeel_key
AND sd.bes_srtgroep_key = sg.bes_srtgroep_key
UNION ALL
SELECT TO_CHAR (m.mld_melding_key),
'melding',
m.mld_melding_datum,
m.prs_kostenplaats_key,
m.prs_perslid_key_voor,
1,
std.mld_stdmelding_omschrijving,
SUM (o.mld_opdr_kosten),
std.mld_ins_discipline_key
FROM mld_melding m, mld_opdr o, mld_stdmelding std
WHERE m.mld_melding_key = o.mld_melding_key
AND m.mld_stdmelding_key = std.mld_stdmelding_key
GROUP BY m.mld_melding_datum,
m.prs_kostenplaats_key,
m.prs_perslid_key_voor,
1,
std.mld_stdmelding_omschrijving,
std.mld_ins_discipline_key,
m.mld_melding_key) geg,
prs_kostenplaats k,
prs_kostenplaats ka,
prs_perslid p,
prs_afdeling a,
ins_tab_discipline d
WHERE geg.prs_kostenplaats_key = k.prs_kostenplaats_key(+)
AND geg.ins_discipline_key = d.ins_discipline_key
AND geg.prs_perslid_key = p.prs_perslid_key
AND p.prs_afdeling_key = a.prs_afdeling_key
AND a.prs_kostenplaats_key = ka.prs_kostenplaats_key
AND geg.datum < SYSDATE;
/*
-- KFSG#51990: Facturatieproces (eerste opzet zoals KFNS)!
CREATE OR REPLACE VIEW kfsg_v_rap_actual_cost_tot
(
fclt_3d_afdeling_key, -- Kunnen beperken per leverancier!
maand,
--prs_bedrijf_key,
fclt_f_leverancier,
--cp_perslid_key,
--cp_aanhef,
--cp_naam,
--cp_email,
--cnt_contract_key,
contractnr,
beschrijving,
inkoopordernr,
aantal,
kosten
)
AS -- Vaste contractkosten over de ACTUAL termijn
SELECT c.cp_afdeling_key,
TO_CHAR (SYSDATE, 'yyyy-mm'), -- Deze maand volgende maand factureren (achteraf)
--c.prs_bedrijf_key,
c.prs_bedrijf_naam bedrijf,
--c.cp_perslid_key,
--c.cp_aanhef,
--c.cp_naam,
--c.cp_email,
--c.cnt_contract_key,
c.cnt_contract_nummer_intern,
c.cnt_contract_omschrijving,
--kc.cnt_kenmerkcontract_waarde,
c.cnt_contract_nummer, -- Uit deze maand lopend contract, anders geen vaste kosten
--NULL mld_opdr_key,
--NULL opdr_id,
0 aantal,
ROUND (
DECODE (COALESCE (c.cnt_contract_termijnkosten, 0),
0, c.cnt_contract_kosten / 12,
c.cnt_contract_termijnkosten),
2)
+ fac.safe_to_number (COALESCE (ce.cnt_kenmerkcontract_waarde, '0'))
+ fac.safe_to_number (COALESCE (bm.cnt_kenmerkcontract_waarde, '0'))
kosten -- Wat als looptijd < jaar?
FROM (SELECT b.prs_bedrijf_key,
b.prs_bedrijf_naam,
pcp.prs_afdeling_key cp_afdeling_key,
pcp.prs_perslid_key cp_perslid_key,
DECODE (pcp.prs_perslid_geslacht,
0, 'Mevr. ',
1, 'Dhr. ',
'')
cp_aanhef,
DECODE (
COALESCE (pcp.prs_perslid_voorletters,
SUBSTR (pcp.prs_perslid_voornaam, 1, 1)),
NULL,
NULL,
COALESCE (
pcp.prs_perslid_voorletters,
SUBSTR (pcp.prs_perslid_voornaam, 1, 1) || '.')
|| ' ')
|| DECODE (pcp.prs_perslid_tussenvoegsel,
NULL, NULL,
pcp.prs_perslid_tussenvoegsel || ' ')
|| pcp.prs_perslid_naam
cp_naam,
pcp.prs_perslid_email cp_email,
c.cnt_contract_key,
c.cnt_contract_nummer_intern,
c.cnt_contract_omschrijving,
c.cnt_contract_nummer,
c.cnt_contract_kosten,
c.cnt_contract_termijnkosten
FROM cnt_v_aanwezigcontract c,
prs_bedrijf b,
cnt_contract mc,
prs_contactpersoon cp,
prs_perslid pcp,
prs_perslid pcm
WHERE c.ins_discipline_key = 522 -- Vaste contracten
--AND c.cnt_contract_status = 0 -- NIET Gesloten
AND TRUNC (c.cnt_contract_looptijd_van) < TRUNC (LAST_DAY (SYSDATE))
AND c.cnt_contract_looptijd_tot >= TRUNC (LAST_DAY (SYSDATE))
AND c.cnt_prs_bedrijf_key = b.prs_bedrijf_key
AND c.cnt_contract_mantel_key = mc.cnt_contract_key(+)
AND mc.prs_contactpersoon_key = cp.prs_contactpersoon_key(+)
AND cp.prs_perslid_key = pcp.prs_perslid_key(+)
AND c.prs_perslid_key_beh = pcm.prs_perslid_key) c
LEFT JOIN cnt_kenmerkcontract kc
ON kc.cnt_kenmerk_key = -1 -- Inkoopordernummer NS
AND c.cnt_contract_key = kc.cnt_contract_key
LEFT JOIN cnt_kenmerkcontract ce
ON ce.cnt_kenmerk_key = -1 -- Credit/extra kosten
AND c.cnt_contract_key = ce.cnt_contract_key
LEFT JOIN cnt_kenmerkcontract bm
ON bm.cnt_kenmerk_key = -1 -- Bonus/malus
AND c.cnt_contract_key = bm.cnt_contract_key
UNION ALL -- Variabele kosten uit ACTUAL opdrachten op variabele contracten
SELECT pcp.prs_afdeling_key,
TO_CHAR (SYSDATE, 'yyyy-mm'), -- Deze maand ORDAFR, volgende maand factureren (achteraf)
--b.prs_bedrijf_key,
b.prs_bedrijf_naam,
--pcp.prs_perslid_key cp_perslid_key,
--DECODE (pcp.prs_perslid_geslacht, 0, 'Mevr. ', 1, 'Dhr. ', '')
-- cp_aanhef,
--DECODE (
-- COALESCE (pcp.prs_perslid_voorletters,
-- SUBSTR (pcp.prs_perslid_voornaam, 1, 1)),
-- NULL,
-- NULL,
-- COALESCE (pcp.prs_perslid_voorletters,
-- SUBSTR (pcp.prs_perslid_voornaam, 1, 1) || '.')
-- || ' ')
--|| DECODE (pcp.prs_perslid_tussenvoegsel,
-- NULL, NULL,
-- pcp.prs_perslid_tussenvoegsel || ' ')
--|| pcp.prs_perslid_naam
-- cp_naam,
--pcp.prs_perslid_email cp_email,
--c.cnt_contract_key,
c.cnt_contract_nummer_intern,
c.cnt_contract_omschrijving,
--kc.cnt_kenmerkcontract_waarde,
c.cnt_contract_nummer,
--o.mld_opdr_key,
-- TO_CHAR (o.mld_melding_key)
--|| '/'
--|| TO_CHAR (o.mld_opdr_bedrijfopdr_volgnr)
-- opdr_id,
COUNT ( * ) aantal,
SUM (o.mld_opdr_kosten) kosten
FROM mld_opdr o,
fac_tracking t,
cnt_contract c,
--cnt_contract c2,
--mld_melding m,
--prs_v_perslid_fullnames_all pf,
--alg_v_allonrgoed_gegevens og,
--mld_stdmelding sm,
--ins_tab_discipline td,
--ins_srtdiscipline sd,
--prs_kostensoort ksm,
--prs_kostensoort ksv,
--prs_kostenplaats kp
cnt_contract mc,
prs_bedrijf b,
prs_contactpersoon cp,
prs_perslid pcp,
prs_perslid pcm
WHERE o.mld_statusopdr_key = 9
AND o.mld_opdr_key = t.fac_tracking_refkey
AND t.fac_srtnotificatie_key = 76 -- ORDAFR
AND t.fac_tracking_datum > TRUNC (SYSDATE, 'mm')
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.cnt_contract_key = c.cnt_contract_key(+) -- TODO: PLUS WEG
AND c.ins_discipline_key(+) = 523 -- TODO: PLUS WEG/Variabele contracten
--AND c1.cnt_contract_nummer_intern = c2.cnt_contract_nummer_intern
--AND (t.fac_tracking_datum BETWEEN c2.cnt_contract_looptijd_van
-- AND c2.cnt_contract_looptijd_tot
-- OR NOT EXISTS
-- (SELECT 1
-- FROM cnt_contract
-- WHERE t.fac_tracking_datum BETWEEN cnt_contract_looptijd_van
-- AND cnt_contract_looptijd_tot
-- AND cnt_contract_nummer_intern = c2.cnt_contract_nummer_intern))
--AND o.mld_melding_key = m.mld_melding_key
--AND m.prs_perslid_key = pf.prs_perslid_key
--AND m.mld_alg_onroerendgoed_keys = og.alg_onroerendgoed_keys
--AND m.mld_stdmelding_key = sm.mld_stdmelding_key
--AND sm.mld_ins_discipline_key = td.ins_discipline_key
--AND td.ins_srtdiscipline_key = sd.ins_srtdiscipline_key
--AND sm.prs_kostensoort_key = ksm.prs_kostensoort_key(+)
--AND td.prs_kostensoort_key = ksv.prs_kostensoort_key(+)
--AND o.prs_kostenplaats_key = kp.prs_kostenplaats_key
--AND o.mld_uitvoerende_keys = b.prs_bedrijf_key
AND c.cnt_prs_bedrijf_key = b.prs_bedrijf_key(+) -- TODO: PLUS WEG
AND c.cnt_contract_mantel_key = mc.cnt_contract_key(+)
AND mc.prs_contactpersoon_key = cp.prs_contactpersoon_key(+)
AND cp.prs_perslid_key = pcp.prs_perslid_key(+)
AND c.prs_perslid_key_beh = pcm.prs_perslid_key(+) -- TODO: PLUS WEG
GROUP BY pcp.prs_afdeling_key,
TO_CHAR (SYSDATE, 'yyyy-mm'),
--b.prs_bedrijf_key,
b.prs_bedrijf_naam,
--c.cnt_contract_key,
c.cnt_contract_nummer_intern,
c.cnt_contract_omschrijving,
c.cnt_contract_nummer;
-- Actual regels en basis voor oa. te exporteren/bevriezen regels op de 10e van
-- de maand; voor de output geldt:
-- Dat deze de actual vaste contractkosten toont (over afgelopen maand).
-- Dat deze de actual variabele opdrachten toont (voor 1e ORDAFR).
-- Dat deze tot de 10e van de huidige maand alleen nog door Kien wijzigbaar is.
CREATE OR REPLACE VIEW kfsg_v_actual_fact -- Tbv. FACT_EXPORT!
(
prs_afdeling_key,
maand,
prs_bedrijf_key,
prs_bedrijf_naam,
cp_perslid_key,
cp_aanhef,
cp_naam,
cp_email,
cnt_contract_key,
contractnr,
beschrijving,
inkoopordernr,
cm_aanhef,
cm_naam,
mld_opdr_key,
opdr_id,
aantal,
kosten
)
AS
SELECT c.cp_afdeling_key, -- Vaste contractkosten over de ACTUAL termijn
TO_CHAR (TRUNC (SYSDATE, 'mm') - 1, 'yyyy-mm'), -- Afgelopen maand deze maand factureren (achteraf)
c.prs_bedrijf_key,
c.prs_bedrijf_naam,
c.cp_perslid_key,
c.cp_aanhef,
c.cp_naam,
c.cp_email,
c.cnt_contract_key,
c.cnt_contract_nummer_intern,
c.cnt_contract_omschrijving,
--kc.cnt_kenmerkcontract_waarde,
c.cnt_contract_nummer, -- Uit afgelopen maand lopend contract, anders geen vaste kosten
c.cm_aanhef,
c.cm_naam,
NULL mld_opdr_key,
NULL opdr_id,
0 aantal,
ROUND (
DECODE (COALESCE (c.cnt_contract_termijnkosten, 0),
0, c.cnt_contract_kosten / 12,
c.cnt_contract_termijnkosten),
2)
+ fac.safe_to_number (COALESCE (ce.cnt_kenmerkcontract_waarde, '0'))
+ fac.safe_to_number (COALESCE (bm.cnt_kenmerkcontract_waarde, '0'))
kosten -- Wat als looptijd < jaar?
FROM (SELECT b.prs_bedrijf_key,
b.prs_bedrijf_naam,
pcp.prs_afdeling_key cp_afdeling_key,
pcp.prs_perslid_key cp_perslid_key,
DECODE (pcp.prs_perslid_geslacht,
0, 'Mevr. ',
1, 'Dhr. ',
'')
cp_aanhef,
DECODE (
COALESCE (pcp.prs_perslid_voorletters,
SUBSTR (pcp.prs_perslid_voornaam, 1, 1)),
NULL, NULL,
COALESCE (
pcp.prs_perslid_voorletters,
SUBSTR (pcp.prs_perslid_voornaam, 1, 1) || '.')
|| ' ')
|| DECODE (pcp.prs_perslid_tussenvoegsel,
NULL, NULL,
pcp.prs_perslid_tussenvoegsel || ' ')
|| pcp.prs_perslid_naam
cp_naam,
pcp.prs_perslid_email cp_email,
c.cnt_contract_key,
c.cnt_contract_nummer_intern,
c.cnt_contract_omschrijving,
c.cnt_contract_nummer,
c.cnt_contract_kosten,
c.cnt_contract_termijnkosten,
DECODE (pcm.prs_perslid_geslacht,
0, 'Mevr. ',
1, 'Dhr. ',
'')
cm_aanhef,
DECODE (
COALESCE (pcm.prs_perslid_voorletters,
SUBSTR (pcm.prs_perslid_voornaam, 1, 1)),
NULL, NULL,
COALESCE (
pcm.prs_perslid_voorletters,
SUBSTR (pcm.prs_perslid_voornaam, 1, 1) || '.')
|| ' ')
|| DECODE (pcm.prs_perslid_tussenvoegsel,
NULL, NULL,
pcm.prs_perslid_tussenvoegsel || ' ')
|| pcm.prs_perslid_naam
cm_naam
FROM cnt_v_aanwezigcontract c,
prs_bedrijf b,
cnt_contract mc,
prs_contactpersoon cp,
prs_perslid pcp,
prs_perslid pcm
WHERE c.ins_discipline_key = 522 -- Vaste contracten
--AND c.cnt_contract_status = 0 -- NIET Gesloten
AND TRUNC (c.cnt_contract_looptijd_van) < TRUNC (SYSDATE, 'mm') - 1
AND c.cnt_contract_looptijd_tot >= TRUNC (SYSDATE, 'mm') - 1
--AND TO_CHAR (SYSDATE, 'dd') < '10' -- Geen goede conditie
AND NOT EXISTS -- Nog geen entry in eigen tabel
(SELECT 1
FROM fac_usrdata
WHERE fac_usrtab_key = -1 -- VasteKostenMnd
AND fac_usrdata_code =
TO_CHAR (TRUNC (SYSDATE, 'mm') - 1, 'yyyy-mm')
|| '/'
|| c.cnt_contract_key)
AND c.cnt_prs_bedrijf_key = b.prs_bedrijf_key
AND c.cnt_contract_mantel_key = mc.cnt_contract_key(+)
AND mc.prs_contactpersoon_key = cp.prs_contactpersoon_key(+)
AND cp.prs_perslid_key = pcp.prs_perslid_key(+)
AND c.prs_perslid_key_beh = pcm.prs_perslid_key) c
LEFT JOIN cnt_kenmerkcontract kc
ON kc.cnt_kenmerk_key = -1 -- Inkoopordernummer NS
AND c.cnt_contract_key = kc.cnt_contract_key
LEFT JOIN cnt_kenmerkcontract ce
ON ce.cnt_kenmerk_key = -1 -- Credit/extra kosten
AND c.cnt_contract_key = ce.cnt_contract_key
LEFT JOIN cnt_kenmerkcontract bm
ON bm.cnt_kenmerk_key = -1 -- Bonus/malus
AND c.cnt_contract_key = bm.cnt_contract_key
UNION ALL -- Variabele kosten uit ACTUAL opdrachten op variabele contracten
SELECT pcp.prs_afdeling_key,
TO_CHAR (TRUNC (SYSDATE, 'mm') - 1, 'yyyy-mm'), -- Voor 1e ORDAFR, deze maand factureren (achteraf)
b.prs_bedrijf_key,
b.prs_bedrijf_naam,
pcp.prs_perslid_key cp_perslid_key,
DECODE (pcp.prs_perslid_geslacht, 0, 'Mevr. ', 1, 'Dhr. ', '')
cp_aanhef,
DECODE (
COALESCE (pcp.prs_perslid_voorletters,
SUBSTR (pcp.prs_perslid_voornaam, 1, 1)),
NULL, NULL,
COALESCE (pcp.prs_perslid_voorletters,
SUBSTR (pcp.prs_perslid_voornaam, 1, 1) || '.')
|| ' ')
|| DECODE (pcp.prs_perslid_tussenvoegsel,
NULL, NULL,
pcp.prs_perslid_tussenvoegsel || ' ')
|| pcp.prs_perslid_naam
cp_naam,
pcp.prs_perslid_email cp_email,
c.cnt_contract_key,
c.cnt_contract_nummer_intern,
c.cnt_contract_omschrijving,
--kc.cnt_kenmerkcontract_waarde,
c.cnt_contract_nummer,
DECODE (pcm.prs_perslid_geslacht, 0, 'Mevr. ', 1, 'Dhr. ', '')
cm_aanhef,
DECODE (
COALESCE (pcm.prs_perslid_voorletters,
SUBSTR (pcm.prs_perslid_voornaam, 1, 1)),
NULL, NULL,
COALESCE (pcm.prs_perslid_voorletters,
SUBSTR (pcm.prs_perslid_voornaam, 1, 1) || '.')
|| ' ')
|| DECODE (pcm.prs_perslid_tussenvoegsel,
NULL, NULL,
pcm.prs_perslid_tussenvoegsel || ' ')
|| pcm.prs_perslid_naam
cm_naam,
o.mld_opdr_key,
TO_CHAR (o.mld_melding_key)
|| '/'
|| TO_CHAR (o.mld_opdr_bedrijfopdr_volgnr)
opdr_id,
1 aantal,
o.mld_opdr_kosten kosten
FROM mld_opdr o,
fac_tracking t,
cnt_contract c,
prs_bedrijf b,
cnt_contract mc,
prs_contactpersoon cp,
prs_perslid pcp,
prs_perslid pcm
WHERE o.mld_statusopdr_key = 9
AND o.mld_opdr_key = t.fac_tracking_refkey
AND t.fac_srtnotificatie_key = 76 -- ORDAFR
AND t.fac_tracking_datum < TRUNC (SYSDATE, 'mm')
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.cnt_contract_key = c.cnt_contract_key(+) -- TODO: PLUS WEG
AND c.ins_discipline_key(+) = 523 -- TODO: PLUS WEG/Variabele contracten
AND c.cnt_prs_bedrijf_key = b.prs_bedrijf_key(+) -- TODO: PLUS WEG
AND c.cnt_contract_mantel_key = mc.cnt_contract_key(+)
AND mc.prs_contactpersoon_key = cp.prs_contactpersoon_key(+)
AND cp.prs_perslid_key = pcp.prs_perslid_key(+)
AND c.prs_perslid_key_beh = pcm.prs_perslid_key(+) -- TODO: PLUS WEG
;
-- Te exporteren/bevriezen totalen over voorgaande maand (vast en variabel).
CREATE OR REPLACE VIEW kfsg_v_rap_actual_fact_tot
(
fclt_3d_afdeling_key, -- Kunnen beperken per leverancier!
maand,
--hide_f_bedrijf_key,
fclt_f_leverancier,
--hide_f_contract_key,
contractnr,
beschrijving,
inkoopordernr,
aantal,
kosten
)
AS
SELECT prs_afdeling_key,
maand,
--prs_bedrijf_key,
prs_bedrijf_naam,
--cnt_contract_key,
contractnr,
beschrijving,
inkoopordernr,
SUM (aantal),
SUM (kosten)
FROM kfsg_v_actual_fact
GROUP BY prs_afdeling_key,
maand,
--prs_bedrijf_key,
prs_bedrijf_naam,
--cnt_contract_key,
contractnr,
beschrijving,
inkoopordernr;
-- Te exporteren/bevriezen variabele kosten over voorgaande maand (details).
CREATE OR REPLACE VIEW kfsg_v_rap_actual_fact_var
(
fclt_3d_afdeling_key, -- Kunnen beperken per leverancier!
maand,
prio,
prefix,
mld_melding_key,
volgnr,
mld_opdr_key,
opdrachttype,
plaats,
alg_ruimte_omschrijving,
mld_stdmelding_oms,
omschrijving,
begindatum,
--begintijd,
meldingstatus,
opdrachtstatus,
einddatum,
--eindtijd,
fclt_f_leverancier,
afhandeling,
kosten,
fclt_f_inkoopordernr,
fclt_x_district
)
AS
SELECT v.prs_afdeling_key,
v.maand,
TO_CHAR (m.mld_melding_spoed),
sd.ins_srtdiscipline_prefix,
TO_CHAR (m.mld_melding_key),
TO_CHAR (o.mld_opdr_bedrijfopdr_volgnr),
TO_CHAR (o.mld_opdr_key),
ot.mld_typeopdr_omschrijving,
DECODE (
og.alg_type,
'R', og.alg_gebouw_code,
'V', og.alg_gebouw_code,
'G', og.alg_gebouw_code,
'T', og.alg_terreinsector_code,
l.alg_locatie_code)
plaatsaanduiding,
DECODE (og.alg_type, 'R', og.alg_ruimte_omschrijving, NULL)
alg_ruimte_omschrijving,
sm.mld_stdmelding_omschrijving,
o.mld_opdr_omschrijving,
TO_CHAR (o.mld_opdr_datumbegin, 'dd-mm-yyyy') datum,
--TO_CHAR (o.mld_opdr_datumbegin, 'hh24:mi') tijd,
ms.mld_statuses_omschrijving,
os.mld_statusopdr_omschrijving,
--TO_CHAR (o.mld_opdr_einddatum, 'dd-mm-yyyy') einddatum,
TO_CHAR (fac.gettrackingdate ('ORDAFM', o.mld_opdr_key), 'dd-mm-yyyy') einddatum,
--TO_CHAR (o.mld_opdr_einddatum, 'hh24:mi') eindtijd,
--COALESCE (b.prs_bedrijf_naam, puv.prs_perslid_naam_full)
-- uitvoerende,
v.prs_bedrijf_naam,
o.mld_opdr_opmerking,
o.mld_opdr_kosten,
v.inkoopordernr,
d.alg_district_omschrijving
FROM kfsg_v_actual_fact v,
mld_opdr o,
mld_statusopdr os,
mld_typeopdr ot,
--prs_bedrijf b, -- Externe leverancier
--prs_v_perslid_fullnames_all puv, -- Interne uitvoerende
mld_melding m,
mld_statuses ms,
mld_stdmelding sm,
mld_discipline md,
ins_srtdiscipline sd,
alg_locatie l,
alg_district d,
alg_v_onroerendgoed_gegevens og
WHERE v.mld_opdr_key = o.mld_opdr_key
AND o.mld_statusopdr_key = os.mld_statusopdr_key
AND o.mld_typeopdr_key = ot.mld_typeopdr_key
--AND o.mld_uitvoerende_keys = b.prs_bedrijf_key(+)
--AND o.mld_uitvoerende_keys = puv.prs_perslid_key(+)
AND o.mld_melding_key = m.mld_melding_key
AND m.mld_melding_status = ms.mld_statuses_key
AND m.mld_stdmelding_key = sm.mld_stdmelding_key
AND sm.mld_ins_discipline_key = md.ins_discipline_key
AND md.ins_srtdiscipline_key = sd.ins_srtdiscipline_key
AND m.mld_alg_locatie_key = l.alg_locatie_key(+)
AND l.alg_district_key = d.alg_district_key(+)
AND m.mld_alg_onroerendgoed_keys = og.alg_onroerendgoed_keys(+);
*/
------ payload end ------
SET DEFINE OFF
BEGIN adm.systrackscriptId ('$Id$', 0); END;
/
COMMIT;
SET ECHO OFF
SPOOL OFF
SET DEFINE ON
PROMPT Logfile of this upgrade is: &fcltlogfile