TWYN#52401 Rapport meer- en minderwerk MMW_CONT

svn path=/Database/trunk/; revision=37319
This commit is contained in:
Erik Groener
2018-03-09 12:50:31 +00:00
parent 7d3a4fdbd7
commit 6db08abdcb

View File

@@ -27,11 +27,23 @@ AS
) RETURN NUMBER;
FUNCTION getSoortMutatie ( p_mutatie_key IN NUMBER
) RETURN VARCHAR2;
FUNCTION getGecontracteerd( p_kostensoort_key IN NUMBER
FUNCTION getContractwaarde( p_srtkey IN VARCHAR2
, p_key IN NUMBER
, p_btw IN NUMBER
, p_status NUMBER DEFAULT 3
, p_datum_van DATE DEFAULT NULL
, p_datum_tot DATE DEFAULT NULL
) RETURN NUMBER;
FUNCTION getRaming ( p_mld_opdr_key IN NUMBER
, p_btw IN NUMBER
, p_datum_van DATE DEFAULT NULL
, p_datum_tot DATE DEFAULT NULL
) RETURN NUMBER;
FUNCTION getGecontracteerd ( p_mld_opdr_key IN NUMBER
, p_btw IN NUMBER
, p_datum_van DATE DEFAULT NULL
, p_datum_tot DATE DEFAULT NULL
) RETURN NUMBER;
FUNCTION getGefactureerdSoort( p_kostensoort_key IN NUMBER
, p_btw IN NUMBER
) RETURN NUMBER;
@@ -299,7 +311,53 @@ AS
RETURN v_soort_mutatie;
END getSoortMutatie;
FUNCTION getGecontracteerd( p_kostensoort_key IN NUMBER
FUNCTION getContractwaarde( p_srtkey IN VARCHAR2
, p_key IN NUMBER
, p_btw IN NUMBER
, p_status NUMBER DEFAULT 3
, p_datum_van DATE DEFAULT NULL
, p_datum_tot DATE DEFAULT NULL
) RETURN NUMBER
IS
v_bedrag NUMBER;
BEGIN
-- p_srtkey: SRT=prs_kostensoort_key, OPDR=mld_opdr_key.
-- p_btw: 0=excl.btw, 1=btw, 2=incl.btw.
-- p_status: 1=raming, 2=gecontracteerd, 3=alles.
BEGIN
SELECT CASE WHEN p_btw=0 THEN SUM(COALESCE(mld_opdr_kosten, 0))
WHEN p_btw=1 THEN SUM(COALESCE(mld_opdr_kosten_btw, 0))
WHEN p_btw=2 THEN SUM(COALESCE(mld_opdr_kosten, 0)) + SUM(COALESCE(mld_opdr_kosten_btw, 0))
END contracten
INTO v_bedrag
FROM mld_opdr
WHERE p_key = DECODE(p_srtkey, 'SRT', prs_kostensoort_key, 'OPDR', mld_opdr_key)
AND ( (p_status = 1 AND mld_statusopdr_key = 10)
OR (p_status = 2 AND mld_statusopdr_key <> 10)
OR (p_status = 3 AND mld_statusopdr_key = mld_statusopdr_key)
)
AND ((p_datum_van IS NOT NULL AND mld_opdr_datumbegin >= p_datum_van) OR p_datum_van IS NULL)
AND ((p_datum_tot IS NOT NULL AND mld_opdr_datumbegin < p_datum_tot) OR p_datum_tot IS NULL);
EXCEPTION
WHEN NO_DATA_FOUND THEN
v_bedrag := NULL;
END;
RETURN v_bedrag;
END getContractwaarde;
FUNCTION getRaming( p_mld_opdr_key IN NUMBER
, p_btw IN NUMBER
, p_datum_van DATE DEFAULT NULL
, p_datum_tot DATE DEFAULT NULL
) RETURN NUMBER
IS
v_bedrag NUMBER;
BEGIN
v_bedrag := BGT.getContractwaarde('OPDR', p_mld_opdr_key, p_btw, 1, p_datum_van, p_datum_tot);
RETURN v_bedrag;
END getRaming;
FUNCTION getGecontracteerd( p_mld_opdr_key IN NUMBER
, p_btw IN NUMBER
, p_datum_van DATE DEFAULT NULL
, p_datum_tot DATE DEFAULT NULL
@@ -307,21 +365,7 @@ AS
IS
v_bedrag NUMBER;
BEGIN
-- p_btw: 0=excl.btw, 1=btw, 2=incl.btw.
BEGIN
SELECT CASE WHEN p_btw=0 THEN SUM(mld_opdr_kosten)
WHEN p_btw=1 THEN SUM(mld_opdr_kosten_btw)
WHEN p_btw=2 THEN SUM(mld_opdr_kosten) + SUM(mld_opdr_kosten_btw)
END contracten
INTO v_bedrag
FROM mld_opdr
WHERE prs_kostensoort_key = p_kostensoort_key
AND ((p_datum_van IS NOT NULL AND mld_opdr_datumbegin >= p_datum_van) OR p_datum_van IS NULL)
AND ((p_datum_tot IS NOT NULL AND mld_opdr_datumbegin < p_datum_tot) OR p_datum_tot IS NULL);
EXCEPTION
WHEN NO_DATA_FOUND THEN
v_bedrag := NULL;
END;
v_bedrag := BGT.getContractwaarde('OPDR', p_mld_opdr_key, p_btw, 2, p_datum_van, p_datum_tot);
RETURN v_bedrag;
END getGecontracteerd;
@@ -354,9 +398,9 @@ AS
-- p_btw: 0=excl.btw, 1=btw, 2=incl.btw.
v_bedrag := 0;
BEGIN
SELECT CASE WHEN p_btw=0 THEN SUM(fin_factuur_totaal)
WHEN p_btw=1 THEN SUM(fin_factuur_totaal_btw)
WHEN p_btw=2 THEN SUM(fin_factuur_totaal) + SUM(fin_factuur_totaal_btw)
SELECT CASE WHEN p_btw=0 THEN SUM(COALESCE(fin_factuur_totaal, 0))
WHEN p_btw=1 THEN SUM(COALESCE(fin_factuur_totaal_btw, 0))
WHEN p_btw=2 THEN SUM(COALESCE(fin_factuur_totaal, 0)) + SUM(COALESCE(fin_factuur_totaal_btw, 0))
END facturen
INTO v_bedrag
FROM fin_factuur
@@ -376,27 +420,24 @@ AS
, p_datum_tot DATE DEFAULT NULL
) RETURN NUMBER
IS
v_bedrag NUMBER;
v_statusopdr NUMBER;
v_cont NUMBER;
v_fact NUMBER;
v_bedrag NUMBER;
BEGIN
-- p_btw: 0=excl.btw, 1=btw, 2=incl.btw.
v_bedrag := 0;
BEGIN
SELECT CASE WHEN p_btw=0 THEN COALESCE(MAX(o.mld_opdr_kosten), 0) - SUM(COALESCE(f.fin_factuur_totaal, 0))
WHEN p_btw=1 THEN COALESCE(MAX(o.mld_opdr_kosten_btw), 0) - SUM(COALESCE(f.fin_factuur_totaal_btw, 0))
WHEN p_btw=2 THEN COALESCE(MAX(o.mld_opdr_kosten), 0) + MAX(COALESCE(o.mld_opdr_kosten_btw, 0))
- SUM(COALESCE(f.fin_factuur_totaal, 0))
- SUM(COALESCE(f.fin_factuur_totaal_btw, 0))
END tefactureren
INTO v_bedrag
FROM fin_factuur f
, mld_opdr o
WHERE o.mld_opdr_key = f.mld_opdr_key(+)
AND ((p_datum_van IS NOT NULL AND fin_factuur_datum >= p_datum_van) OR p_datum_van IS NULL)
AND ((p_datum_tot IS NOT NULL AND fin_factuur_datum < p_datum_tot) OR p_datum_tot IS NULL)
AND o.mld_opdr_key = p_mld_opdr_key;
EXCEPTION
WHEN NO_DATA_FOUND THEN
v_bedrag := 0;
SELECT NVL(mld_statusopdr_key, 0)
INTO v_statusopdr
FROM mld_opdr
WHERE mld_opdr_key = p_mld_opdr_key;
--
IF (v_statusopdr <> 10) THEN
v_cont := getGecontracteerd(p_mld_opdr_key, p_btw, p_datum_van, p_datum_tot);
v_fact := getGefactureerd(p_mld_opdr_key, p_btw, p_datum_van, p_datum_tot);
v_bedrag := COALESCE(v_cont, 0) - COALESCE(v_fact, 0);
END IF;
END;
RETURN v_bedrag;
END getTefactureren;