BONS#21991: Tariefwijzigingen gemeenten

svn path=/Database/trunk/; revision=11124
This commit is contained in:
Marcel Bourseau
2012-03-01 08:15:20 +00:00
parent bd7cfeb1e8
commit 2f1284eb48

View File

@@ -1,15 +1,11 @@
#ifdef CARE
/* CARE_VIE.SRC
* $Revision: 38 $
* $Modtime: 1-02-12 14:23 $
* $Revision: 39 $
* $Modtime: 20-02-12 11:28 $
*/
-- Let op de decode: dit is een mapping van locatie-kenmerk op melding-kenmerk, die elders aan elkaar worden gelinked.
-- Decode-Mapping: van alg-kenmerk_key 1000 -> fac_usrdata_key 1 (HV1)
-- Decode-Mapping: van alg-kenmerk_key 1001 -> fac_usrdata_key 2 (HV2)
-- Decode-Mapping: van alg-kenmerk_key 1002 -> fac_usrdata_key 3 (HV3)
/* Formatted on 6-9-2010 18:29:56 (QP5 v5.136.908.31019) */
CREATE_VIEW( care_v_gemeente, 0)
@@ -25,15 +21,26 @@ AS
gemeente.alg_locatie_post_plaats,
gemeente.alg_locatie_verantw,
gemeente.alg_locatie_x,
gemeente.alg_locatie_y,
COALESCE (fac.safe_to_number (ok.alg_onrgoedkenmerk_waarde), 0) tarief,
DECODE (ok.alg_kenmerk_key, 1000, 1, 1001, 2, 1002, 3, NULL) hv_code
FROM alg_locatie gemeente, alg_onrgoedkenmerk ok
WHERE gemeente.alg_locatie_key = ok.alg_onrgoed_key(+)
AND ok.alg_onrgoed_niveau(+) = 'L'
AND ok.alg_onrgoedkenmerk_verwijder IS NULL
AND gemeente.alg_locatie_verwijder IS NULL;
gemeente.alg_locatie_y
FROM alg_locatie gemeente
WHERE gemeente.alg_locatie_verwijder IS NULL;
-- Let op de decode: dit is een mapping van locatie-kenmerk op melding-kenmerk, die elders aan elkaar worden gelinked.
-- Decode-Mapping: van alg-kenmerk_key 1000 -> fac_usrdata_key 1 (HV1)
-- Decode-Mapping: van alg-kenmerk_key 1001 -> fac_usrdata_key 2 (HV2)
-- Decode-Mapping: van alg-kenmerk_key 1002 -> fac_usrdata_key 3 (HV3)
CREATE_VIEW( care_v_gemeente_tarieven, 0)
(alg_locatie_key, product_code, tarief, duedatum)
AS
SELECT alg_onrgoed_key,
DECODE (alg_kenmerk_key, 1000, 1, 1001, 2, 1002, 3, NULL),
COALESCE (fac.safe_to_number (alg_onrgoedkenmerk_waarde), 0),
alg_onrgoedkenmerk_verwijder
FROM alg_onrgoedkenmerk, alg_locatie l
WHERE alg_onrgoed_niveau = 'L'
AND alg_kenmerk_key IN (1000,1001,1002)
AND alg_onrgoed_key = alg_locatie_key
AND alg_locatie_verwijder IS NULL;
-- View met alle geregistreerde clienten (ongeacht of ze een lopende beschikking hebben).
-- Let op de afdelings-key 22 (= afdeling waar alle clienten in zitten) in onderstaande view:
@@ -510,6 +517,7 @@ CREATE_VIEW( care_v_beschikking_all, 0)
(
mld_melding_key,
mld_melding_status,
gemeente_key,
gemeente_code,
gemeente_omschrijving,
gemeente_adres,
@@ -555,8 +563,9 @@ CREATE_VIEW( care_v_beschikking_all, 0)
beschikking_maandag_tot,
beschikking_afmeld_datum,
pgb,
product_code,
product,
tarief,
pgb_tarief,
uren_beschikking,
beschikking_nr,
beschikking_omschr,
@@ -566,6 +575,7 @@ CREATE_VIEW( care_v_beschikking_all, 0)
AS
SELECT m.mld_melding_key,
m.mld_melding_status,
gemeente.alg_locatie_key,
gemeente.alg_locatie_code,
gemeente.alg_locatie_omschrijving,
gemeente.alg_locatie_adres,
@@ -688,6 +698,12 @@ AS
care.goodmonday_end(m.mld_melding_key) beschikking_maandag_tot,
fac.gettrackingdate ('MLDAFM', m.mld_melding_key),
m.prs_kostenplaats_key pgb,
(SELECT TO_NUMBER (km.mld_kenmerkmelding_waarde)
FROM mld_kenmerkmelding km
WHERE km.mld_melding_key = m.mld_melding_key
AND km.mld_kenmerkmelding_verwijder IS NULL
AND mld_kenmerk_key = 2)
product_code,
(SELECT ud.fac_usrdata_code
FROM mld_kenmerkmelding km, fac_usrdata ud
WHERE km.mld_melding_key = m.mld_melding_key
@@ -701,7 +717,7 @@ AS
WHERE km.mld_melding_key = m.mld_melding_key
AND km.mld_kenmerkmelding_verwijder IS NULL
AND mld_kenmerk_key = 4),
gemeente.tarief),0) tarief,
0),0) tarief,
(SELECT TO_NUMBER (km.mld_kenmerkmelding_waarde)
FROM mld_kenmerkmelding km
WHERE km.mld_melding_key = m.mld_melding_key
@@ -723,13 +739,7 @@ AS
AND m.mld_melding_status <> 1
AND d.ins_discipline_key = std.mld_ins_discipline_key
AND d.ins_srtdiscipline_key = 1
AND gemeente.hv_code =
(SELECT TO_NUMBER (km.mld_kenmerkmelding_waarde)
FROM mld_kenmerkmelding km
WHERE km.mld_melding_key = m.mld_melding_key
AND km.mld_kenmerkmelding_verwijder IS NULL
AND mld_kenmerk_key = 2)
AND m.prs_perslid_key = client.prs_perslid_key;
AND m.prs_perslid_key = client.prs_perslid_key;
-- Deze view is de totale view van alle productieve, bestede uren op beschikkingen, op welke opdracht, door wie op welk moment
@@ -5818,7 +5828,7 @@ AS
b.uren_beschikking,
b.pgb,
b.product,
b.tarief,
decode(b.pgb, 1, b.pgb_tarief, gt.tarief),
b.beschikking_omschr,
uur.prs_perslid_key,
uur.bsn,
@@ -5830,11 +5840,20 @@ AS
uur.datum_gewerkt,
uur.uren_opdracht,
uur.uren_besteed
FROM care_v_beschikking_all b, care_v_bestede_uren_all uur, prs_bedrijf pb, fac_usrdata ud
FROM care_v_beschikking_all b, care_v_bestede_uren_all uur, prs_bedrijf pb, fac_usrdata ud, care_v_gemeente_tarieven gt
WHERE uur.mld_melding_key = b.mld_melding_key
AND uur.uren_status = 3
AND pb.prs_bedrijf_key = 2
AND ud.fac_usrdata_key = 48;
AND ud.fac_usrdata_key = 48
AND gt.alg_locatie_key = b.gemeente_key
AND gt.product_code = b.product_code
AND COALESCE(gt.duedatum,SYSDATE) =
(SELECT COALESCE(MIN (gt2.duedatum),SYSDATE)
FROM care_v_gemeente_tarieven gt2
WHERE COALESCE(gt2.duedatum,SYSDATE+999) >= uur.datum_gewerkt
AND gt2.alg_locatie_key = b.gemeente_key
AND gt2.product_code = b.product_code
);
CREATE_VIEW(care_v_gemeente_fact2_uren, 0)
AS
@@ -7589,8 +7608,29 @@ AS
-- QlikView/Analyze views
--
-- Periodetabel van 10 jaar in het verleden t/m 10 jaar in toekomst
CREATE_VIEW(care_v_qvw_periodeweektabel, 0)
(jaar, periode, week, maandag)
AS
SELECT
TO_CHAR (SYSDATE - 7*(LEVEL-1), 'IYYY') jaar,
DECODE(FLOOR((TO_CHAR (SYSDATE - 7*(LEVEL-1),'IW') - 1) /4) + 1, 14, 13,FLOOR((TO_CHAR (SYSDATE - 7*(LEVEL-1),'IW') - 1) /4) + 1) periode,
TO_CHAR (SYSDATE - 7*(LEVEL-1), 'IW') week,
TRUNC (SYSDATE - 7*(LEVEL-1), 'IW') startdatum
FROM DUAL
CONNECT BY LEVEL <= 5*52+1
UNION
SELECT
TO_CHAR (SYSDATE + 7*(LEVEL), 'IYYY') jaar,
DECODE(FLOOR((TO_CHAR (SYSDATE + 7*(LEVEL),'IW') - 1) /4) + 1, 14, 13,FLOOR((TO_CHAR (SYSDATE + 7*(LEVEL),'IW') - 1) /4) + 1) periode,
TO_CHAR (SYSDATE + 7*(LEVEL), 'IW') week,
TRUNC (SYSDATE + 7*(LEVEL), 'IW') startdatum
FROM DUAL
CONNECT BY LEVEL <= 5*52+1;
-- Eerst maar eens een hulp-view voor de view care_v_qvw_beschikk
-- In deze hulp-viewL: per melding-key de eerste datum waarop er zorg is verleend (en is goedgekeurd).
-- In deze hulp-view: per melding-key de eerste datum waarop er zorg is verleend (en is goedgekeurd).
CREATE_VIEW( care_v_qvw_first_gewerkte_uren, 0)
AS
@@ -7599,10 +7639,10 @@ AS
WHERE b.mld_melding_key = uur.mld_melding_key(+)
GROUP BY b.mld_melding_key;
CREATE_VIEW( care_v_qvw_beschikk, 0)
AS
SELECT b.mld_melding_key,
b.gemeente_key,
b.gemeente_code,
b.gemeente_omschrijving,
b.prs_client_naam || ',' || prs_client_tussenvoegsel || ',' || prs_client_voorletters AS prs_client_naam,
@@ -7622,12 +7662,17 @@ AS
)
AS beschikking_week_van,
b.beschikking_jaar_van,
b.beschikking_maandag_van_std,
b.beschikking_maandag_van,
b.beschikking_maandag_tot_std,
b.beschikking_datum_tot,
coalesce(least(b.beschikking_maandag_tot,b.beschikking_afmeld_datum),b.beschikking_maandag_tot) beschikking_maandag_tot,
b.beschikking_afmeld_datum,
u.datum_eerste_keer_ooit,
b.product_code,
b.product,
b.tarief,
COALESCE(b.pgb,0) pgb,
-- b.tarief,
b.uren_beschikking,
b.beschikking_nr,
b.ins_discipline_omschrijving
@@ -7635,6 +7680,79 @@ AS
WHERE b.mld_melding_key = u.mld_melding_key;
/*
Hieronder staat versie 1 van care_v_qvw_gemeente_tarieven, a.g.v. performance is versie 2 gemaakt die compacter is (en Oracle beter mee om zou kunnen gaan)
CREATE_VIEW( care_v_qvw_gemeente_tarieven, 0)
(alg_locatie_key, alg_locatie_code, product_code, product, tarief, vandatum, tmdatum)
AS
SELECT l.alg_locatie_key,
l.alg_locatie_code,
gt.product_code,
ud.fac_usrdata_code,
gt.tarief,
gt2.duedatum + 1,
COALESCE(gt.duedatum, TO_DATE('31-12-2099','DD-MM-YYYY'))
FROM care_v_gemeente_tarieven gt, alg_locatie l, fac_usrdata ud, care_v_gemeente_tarieven gt2
WHERE l.alg_locatie_key = gt.alg_locatie_key (+)
AND l.alg_locatie_verwijder IS NULL
AND ud.fac_usrdata_key = gt.product_code
AND gt2.alg_locatie_key = gt.alg_locatie_key
AND gt2.product_code = gt.product_code
AND gt2.duedatum = (SELECT MAX (gt3.duedatum)
FROM care_v_gemeente_tarieven gt3
WHERE COALESCE(gt3.duedatum,SYSDATE+9999) < COALESCE(gt.duedatum,SYSDATE+9999)
AND gt3.alg_locatie_key = gt.alg_locatie_key
AND gt3.product_code = gt.product_code
)
UNION ALL
SELECT l.alg_locatie_key,
l.alg_locatie_code,
gt.product_code,
ud.fac_usrdata_code,
gt.tarief,
TO_DATE('01-01-2010','DD-MM-YYYY'),
COALESCE(gt.duedatum, TO_DATE('31-12-2099','DD-MM-YYYY'))
FROM care_v_gemeente_tarieven gt, alg_locatie l, fac_usrdata ud
WHERE l.alg_locatie_key = gt.alg_locatie_key (+)
AND l.alg_locatie_verwijder IS NULL
AND ud.fac_usrdata_key = gt.product_code
AND COALESCE(gt.duedatum,SYSDATE)= (SELECT COALESCE(MIN (gt2.duedatum),SYSDATE)
FROM care_v_gemeente_tarieven gt2
WHERE gt2.alg_locatie_key = gt.alg_locatie_key
AND gt2.product_code = gt.product_code
);
*/
CREATE_VIEW( care_v_qvw_gemeente_tarieven, 0)
(alg_locatie_key, product_code, tarief, vandatum, tmdatum)
AS
SELECT alg_locatie_key, product_code, tarief,
COALESCE(LAG(duedatum+1, 1, TO_DATE('01-01-2010','DD-MM-YYYY')) OVER (ORDER BY alg_locatie_key, product_code, duedatum), TO_DATE('01-01-2010','DD-MM-YYYY')) AS vandatum,
COALESCE(duedatum,TO_DATE('31-12-2099','DD-MM-YYYY')) AS tmdatum
FROM care_v_gemeente_tarieven;
CREATE_VIEW( care_v_qvw_tarieven_per_week, 0)
(alg_locatie_key, product_code, tarief, jaar, periode, week, maandag)
AS
SELECT alg_locatie_key, product_code, tarief, jaar, periode, week, maandag
FROM care_v_qvw_gemeente_tarieven gt, care_v_qvw_periodeweektabel pw
WHERE pw.maandag >= vandatum AND pw.maandag <= tmdatum;
//Hier de 1e filtering op maandag_std (anders krijgen we veel te veel records), maar wel -7 en + 7 om extra ruim te zitten...
//in qlikview (qvs) gaan we nauwkeuriger op de "good_monday" filereren (anders hier een performance-probleem ivm functie goodmay en vooral fac_tracking: >> 10 min)
CREATE_VIEW( care_v_qvw_beschikk_per_week, 0)
(mld_melding_key, beschikking_maandag_van, beschikking_maandag_tot, uren_beschikking, tarief, jaar, periode, week, maandag_vande_week)
AS
SELECT mld_melding_key, beschikking_maandag_van, beschikking_maandag_tot, uren_beschikking, tarief, jaar, periode, week, t.maandag
FROM care_v_qvw_beschikk b, care_v_qvw_tarieven_per_week t
WHERE t.maandag >= b.beschikking_maandag_van_std - 7 AND t.maandag < b.beschikking_maandag_tot_std + 7
AND b.gemeente_key = alg_locatie_key
AND b.product_code = t.product_code;
CREATE_VIEW( care_v_qvw_zorguren, 0)
AS
SELECT u.mld_melding_key,
@@ -8590,6 +8708,6 @@ AS
REGISTERRUN('$Workfile: CARE_VIE.SRC $','$Revision: 38 $')
REGISTERRUN('$Workfile: CARE_VIE.SRC $','$Revision: 39 $')
#endif // CARE