Wagenpark-functie en -view toevoegen

svn path=/Customer/trunk/; revision=29239
This commit is contained in:
Peter Koerhuis
2016-04-29 09:12:59 +00:00
parent 125eb06e49
commit d252f958d0

View File

@@ -3420,6 +3420,91 @@ AS
FROM prs_bedrijf FROM prs_bedrijf
WHERE prs_bedrijf_leverancier = 1; WHERE prs_bedrijf_leverancier = 1;
CREATE OR REPLACE VIEW demo_v_rap_fin_bijtelling
AS
SELECT p.prs_perslid_nr personeelsnummer,
DECODE (
pfa.prs_perslid_key,
NULL, 'POOL',
'<a class="details" onclick=''FcltMgr.openDetail("'
|| 'appl/prs/prs_perslid.asp?key='
|| pfa.prs_perslid_key
|| '")''>'
|| HTF.escape_sc (pfa.prs_perslid_naam_full)
|| '</a>')
html_berijder,
COALESCE (pfa.prs_perslid_naam_full, 'POOL') fclt_x_berijder,
ad.ins_deel_omschrijving fclt_f_voertuig,
c.cnt_contract_nummer_intern fclt_x_contract,
'<a class="details" onclick=''FcltMgr.openDetail("'
|| 'appl/cnt/cnt_contract.asp?urole=bo&'
|| 'cnt_key='
|| c.cnt_contract_key
|| '")''>'
|| HTF.escape_sc (c.cnt_contract_nummer_intern)
|| '</a>'
html_contract,
b.prs_bedrijf_naam fclt_f_bedrijf,
DECODE (
c.ins_discipline_key,
2789,
'huur',
TO_CHAR (
ROUND (MONTHS_BETWEEN (c.cnt_contract_looptijd_tot, c.cnt_contract_looptijd_van))))
looptijd,
ROUND(demo.getAantalDagenInPeriode (c.cnt_contract_looptijd_van,
c.cnt_contract_looptijd_tot,
TRUNC (SYSDATE, 'MM'))
* CAST (TO_CHAR (LAST_DAY (SYSDATE), 'DD') AS INT))
aantal_dagen,
ROUND (
c.cnt_contract_termijnkosten
* demo.getAantalDagenInPeriode (c.cnt_contract_looptijd_van,
c.cnt_contract_looptijd_tot,
TRUNC (SYSDATE, 'MM')),
2)
fclt_c_kosten,
fisc.waarde fclt_c_fiscale_waarde,
DECODE (bij.fac_usrdata_prijs, NULL, NULL, TO_CHAR (bij.fac_usrdata_prijs) || '%')
percentage,
ROUND (
fisc.waarde * bij.fac_usrdata_prijs / 1200
* demo.getAantalDagenInPeriode (c.cnt_contract_looptijd_van,
c.cnt_contract_looptijd_tot,
TRUNC (SYSDATE, 'MM')),
2)
fclt_c_bruto_bijtelling
FROM cnt_contract c,
cnt_contract_object co,
ins_v_aanwezigdeel ad,
prs_perslid p,
prs_v_perslid_fullnames_all pfa,
prs_bedrijf b,
(SELECT kd.ins_deel_key, ud.fac_usrdata_prijs
FROM ins_kenmerkdeel kd, ins_kenmerk k, fac_usrdata ud
WHERE kd.ins_kenmerk_key = k.ins_kenmerk_key
AND kd.ins_kenmerkdeel_verwijder IS NULL
AND k.ins_srtkenmerk_key = 749
AND k.ins_kenmerk_verwijder IS NULL
AND ud.fac_usrtab_key = 884
AND fac.safe_to_number (kd.ins_kenmerkdeel_waarde) = ud.fac_usrdata_key) bij,
(SELECT kd.ins_deel_key, fac.safe_to_number (kd.ins_kenmerkdeel_waarde) waarde
FROM ins_kenmerkdeel kd, ins_kenmerk k
WHERE kd.ins_kenmerk_key = k.ins_kenmerk_key
AND kd.ins_kenmerkdeel_verwijder IS NULL
AND k.ins_srtkenmerk_key = 747
AND k.ins_kenmerk_verwijder IS NULL) fisc
WHERE c.ins_discipline_key IN (2788, 2789)
AND c.cnt_contract_looptijd_van <= LAST_DAY (SYSDATE)
AND c.cnt_contract_looptijd_tot >= TRUNC (SYSDATE, 'MM')
AND co.cnt_contract_key = c.cnt_contract_key
AND ad.ins_deel_key = co.cnt_ins_deel_key
AND p.prs_perslid_key(+) = ad.ins_alg_ruimte_key
AND pfa.prs_perslid_key(+) = p.prs_perslid_key
AND b.prs_bedrijf_key = c.cnt_prs_bedrijf_key
AND bij.ins_deel_key(+) = ad.ins_deel_key
AND fisc.ins_deel_key(+) = ad.ins_deel_key;
----- KPI's -------------------------------------------------------------------- ----- KPI's --------------------------------------------------------------------
CREATE OR REPLACE VIEW demo_v_rap_kpi_definitie CREATE OR REPLACE VIEW demo_v_rap_kpi_definitie
@@ -3778,12 +3863,84 @@ AS
CREATE OR REPLACE PACKAGE demo CREATE OR REPLACE PACKAGE demo
AS AS
FUNCTION getAantalDagenInPeriode(p_van IN DATE,
p_tot IN DATE,
p_periode_van IN DATE,
p_periode_tot IN DATE := NULL)
RETURN NUMBER;
PROCEDURE refreshscore(pUserKey IN NUMBER); PROCEDURE refreshscore(pUserKey IN NUMBER);
END; END;
/ /
CREATE OR REPLACE PACKAGE BODY demo CREATE OR REPLACE PACKAGE BODY demo
AS AS
-- Bepaal aantal dagen in begin- of eindperiode waarvoor huur betaald moet worden
-- Periode moet binnen dezelfde kalendermaand liggen.
-- Als p_periode_tot leeg is, gaan we uit van het einde van de maand
-- Als p_van en/of p_tot leeg zijn, dan zetten we die op begin resp. eind van de periode
FUNCTION getAantalDagenInPeriode(p_van IN DATE,
p_tot IN DATE,
p_periode_van IN DATE,
p_periode_tot IN DATE := NULL)
RETURN NUMBER
IS
o_aantal_dagen NUMBER(4);
v_periode_tot DATE;
v_van DATE;
v_tot DATE;
BEGIN
-- Einddatum van de periode die we beschouwen.
-- Als geen einddatum, dan einde van de maand (startdatum zou dan eerste dag van de maand moeten zijn)
v_periode_tot := COALESCE( p_periode_tot, LAST_DAY(p_periode_van) );
-- Valt periode (p_van - p_tot) geheel buiten (p_periode_van - p_periode_tot)? Dan nul dagen overlap!
IF ( p_tot < p_periode_van
OR p_van > p_periode_tot)
THEN
RETURN 0;
END IF;
-- Aantal dagen is maximaal de hele periode
o_aantal_dagen := CAST( TO_CHAR(v_periode_tot, 'DD') AS INT)
- CAST( TO_CHAR(p_periode_van, 'DD') AS INT)
+ 1;
v_van := p_van;
v_tot := p_tot;
-- Als geen van/tot datum opgegeven, of als van/tot datum buiten periode valt,
-- dan zet op begin-/einddatum van de periode (periode)
IF (v_van IS NULL OR v_van < p_periode_van)
THEN
v_van := p_periode_van;
END IF;
IF (v_tot IS NULL OR v_tot > v_periode_tot)
THEN
v_tot := v_periode_tot;
END IF;
-- Beslaat het contract de volledige periode, of beginnen/eindigen we halverwege?
-- DAN:
-- - ingangsmaand is hetzelfde als van huidige periode
-- - ingangsdag is later dan de eerste dag van de periode
-- EN/OF:
-- - eindmaand is hetzelfde als van huidige periode
-- - einddag is eerder dan de laatste dag van de periode
IF ( ( TRUNC(v_van, 'MM') = TRUNC(p_periode_van, 'MM')
AND TRUNC(v_van, 'DD') > p_periode_van )
OR ( TRUNC(v_tot, 'MM') = TRUNC(v_periode_tot, 'MM')
AND TRUNC(v_tot, 'DD') < v_periode_tot ) )
THEN
-- prijsfactor = aantal_dagen_gehuurd / aantal_dagen_in_deze_periode
-- = einddag - begindag + 1 / aantal_dagen_in_deze_periode
o_aantal_dagen := ( CAST( TO_CHAR(v_tot, 'DD') AS INT)
- CAST( TO_CHAR(v_van, 'DD') AS INT)
+ 1 );
END IF;
RETURN o_aantal_dagen;
END;
PROCEDURE refreshscore(pUserKey IN NUMBER) PROCEDURE refreshscore(pUserKey IN NUMBER)
AS AS
BEGIN BEGIN