FCLT#61865 BONS: AiAi op CARE -rapport
svn path=/Database/trunk/; revision=46302
This commit is contained in:
@@ -13,32 +13,32 @@ AS
|
||||
RETURN DATE;
|
||||
FUNCTION goodmonday_end (p_mld_key IN NUMBER)
|
||||
RETURN DATE;
|
||||
PROCEDURE care_v_rap2_factuur_uren_a (user_key IN NUMBER, p_datum_van IN VARCHAR2, p_datum_tot IN VARCHAR2, p_cursor OUT t_cursor, p_where IN VARCHAR2);
|
||||
PROCEDURE care_v_rap2_factuur_uren_e (user_key IN NUMBER, p_datum_van IN VARCHAR2, p_datum_tot IN VARCHAR2, p_cursor OUT t_cursor, p_where IN VARCHAR2);
|
||||
PROCEDURE care_v_rap2_factuur_uren_a (user_key IN NUMBER, p_datum_van IN VARCHAR2, p_datum_tot IN VARCHAR2, p_cursor OUT t_cursor, p_where IN VARCHAR2 DEFAULT NULL);
|
||||
PROCEDURE care_v_rap2_factuur_uren_e (user_key IN NUMBER, p_datum_van IN VARCHAR2, p_datum_tot IN VARCHAR2, p_cursor OUT t_cursor, p_where IN VARCHAR2 DEFAULT NULL);
|
||||
END care;
|
||||
/
|
||||
|
||||
CREATE OR REPLACE PACKAGE BODY care
|
||||
AS
|
||||
|
||||
|
||||
FUNCTION goodmonday_start (p_mld_key IN NUMBER)
|
||||
RETURN DATE
|
||||
IS
|
||||
-- Herindicaties/vorige indicaties van dezelfde client die in dezelfde week start/eindigt.
|
||||
|
||||
|
||||
l_mld_key NUMBER(10);
|
||||
l_good_monday DATE;
|
||||
|
||||
|
||||
BEGIN
|
||||
--- Vorige beschikking: bij herindicatie midden in de week is 1 van beide beschikkingen geldig
|
||||
--- Herindicatie midden in de week wordt gekenmerkt door:
|
||||
--- dezelfde client, dezelfde gemeente, eindweek van de vorige is gelijk aan beginweek van herindicatie,
|
||||
--- Herindicatie midden in de week wordt gekenmerkt door:
|
||||
--- dezelfde client, dezelfde gemeente, eindweek van de vorige is gelijk aan beginweek van herindicatie,
|
||||
--- en het maakt niet uit wat de product is/wordt.
|
||||
--- Baas' van dubbele beschikking is diegene met de meeste aantal uren, ongeacht HV1->HV2 overgang.
|
||||
--- Bij gelijke aantal uren is de nieuwe beschikking de baas.
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
-- Selecteer de vorige beschikking b1 van de beschikking b2 die meer uren heeft.
|
||||
SELECT MAX(b1.mld_melding_key)
|
||||
INTO l_mld_key
|
||||
@@ -51,14 +51,14 @@ AS
|
||||
AND b1.prs_client_key = b2.prs_client_key
|
||||
AND b1.gemeente_code = b2.gemeente_code
|
||||
AND b1.uren_beschikking > b2.uren_beschikking;
|
||||
|
||||
|
||||
|
||||
|
||||
IF l_mld_key IS NOT NULL
|
||||
THEN
|
||||
-- Er is een vorige indicatie met meer uren, die is de 'baas'.
|
||||
-- Dat betekent dat de goede maandag van de beschikking b2 verder, naar de volgende week wordt gezet
|
||||
-- Dat betekent dat de goede maandag van de beschikking b2 verder, naar de volgende week wordt gezet
|
||||
-- (ipv standaard op maandag deze week)
|
||||
|
||||
|
||||
SELECT ( TRUNC (mld_melding_datum) + 7
|
||||
- DECODE (TO_CHAR (mld_melding_datum, 'D'), '1', 8, TO_CHAR (mld_melding_datum, 'D'))
|
||||
+ 2)
|
||||
@@ -75,7 +75,7 @@ AS
|
||||
FROM mld_melding
|
||||
WHERE mld_melding_key = p_mld_key;
|
||||
END IF;
|
||||
|
||||
|
||||
RETURN l_good_monday;
|
||||
END;
|
||||
|
||||
@@ -83,19 +83,19 @@ FUNCTION goodmonday_end (p_mld_key IN NUMBER)
|
||||
RETURN DATE
|
||||
IS
|
||||
-- Herindicaties/vorige indicaties van dezelfde client die in dezelfde week start/eindigt.
|
||||
|
||||
|
||||
l_mld_key NUMBER(10);
|
||||
l_good_monday DATE;
|
||||
|
||||
|
||||
BEGIN
|
||||
--- Volgende beschikking: bij herindicatie midden in de week is 1 van beide beschikkingen geldig
|
||||
--- Herindicatie midden in de week wordt gekenmerkt door:
|
||||
--- dezelfde client, dezelfde gemeente, eindjaar/week van de vorige is gelijk aan beginjaar/week van herindicatie,
|
||||
--- Herindicatie midden in de week wordt gekenmerkt door:
|
||||
--- dezelfde client, dezelfde gemeente, eindjaar/week van de vorige is gelijk aan beginjaar/week van herindicatie,
|
||||
--- en het maakt niet uit wat de product is/wordt.
|
||||
--- Baas' van dubbele beschikking is diegene met de meeste aantal uren, ongeacht HV1->HV2 overgang.
|
||||
--- Bij gelijke aantal uren is de nieuwe beschikking de baas.
|
||||
|
||||
-- Controleer of die er is, en zo ja, selecteer de volgende beschikking b2 van de beschikking b1 die MEER
|
||||
--- Bij gelijke aantal uren is de nieuwe beschikking de baas.
|
||||
|
||||
-- Controleer of die er is, en zo ja, selecteer de volgende beschikking b2 van de beschikking b1 die MEER
|
||||
-- of GELIJK AANTAL uren heeft.
|
||||
SELECT MAX(b2.mld_melding_key)
|
||||
INTO l_mld_key
|
||||
@@ -108,63 +108,63 @@ FUNCTION goodmonday_end (p_mld_key IN NUMBER)
|
||||
AND b1.prs_client_key = b2.prs_client_key
|
||||
AND b1.gemeente_code = b2.gemeente_code
|
||||
AND b2.uren_beschikking >= b1.uren_beschikking;
|
||||
|
||||
|
||||
|
||||
|
||||
IF l_mld_key IS NOT NULL
|
||||
THEN
|
||||
-- Er is een volgende indicatie b2 met MEER of GELIJK AANTAL uren, die is de 'baas' is.
|
||||
-- Dat betekent dat de goede maandag van de beschikking b2 op de maandag van deze week wordt gezet
|
||||
-- Dat betekent dat de goede maandag van de beschikking b2 op de maandag van deze week wordt gezet
|
||||
-- (ipv standaard op maandag de volgende week)
|
||||
|
||||
|
||||
SELECT ( TRUNC (mld_melding_einddatum)
|
||||
- DECODE (TO_CHAR (mld_melding_einddatum, 'D'), '1', 8, TO_CHAR (mld_melding_einddatum, 'D'))
|
||||
+ 2)
|
||||
INTO l_good_monday
|
||||
FROM mld_melding
|
||||
WHERE mld_melding_key = p_mld_key;
|
||||
|
||||
|
||||
|
||||
|
||||
ELSE
|
||||
-- Er is GEEN volgende indicatie is of GEEN volgende indicatie met MEER of GELIJK AANTAL uren, dus deze is de 'baas'.
|
||||
-- Dat betekent dat de goede maandag van de beschikking b2 standaard op maandag van de volgende week komt te staan.
|
||||
|
||||
|
||||
SELECT ( TRUNC (mld_melding_einddatum) + 7
|
||||
- DECODE (TO_CHAR (mld_melding_einddatum, 'D'), '1', 8, TO_CHAR (mld_melding_einddatum, 'D'))
|
||||
+ 2)
|
||||
INTO l_good_monday
|
||||
FROM mld_melding
|
||||
WHERE mld_melding_key = p_mld_key;
|
||||
WHERE mld_melding_key = p_mld_key;
|
||||
END IF;
|
||||
|
||||
|
||||
RETURN l_good_monday;
|
||||
END;
|
||||
|
||||
PROCEDURE care_v_rap2_factuur_uren_a
|
||||
(user_key IN NUMBER,
|
||||
( user_key IN NUMBER,
|
||||
p_datum_van IN VARCHAR2,
|
||||
p_datum_tot IN VARCHAR2,
|
||||
p_cursor OUT t_cursor,
|
||||
p_where IN VARCHAR2
|
||||
p_cursor OUT t_cursor,
|
||||
p_where IN VARCHAR2 DEFAULT NULL
|
||||
)
|
||||
AS
|
||||
v_datum_van DATE;
|
||||
v_datum_tot DATE;
|
||||
v_datum_tot DATE;
|
||||
BEGIN
|
||||
|
||||
|
||||
DELETE FROM care_periode;
|
||||
|
||||
|
||||
INSERT INTO care_periode (jaar, periode, week, maandag)
|
||||
SELECT
|
||||
SELECT
|
||||
TO_CHAR (SYSDATE - 7*(LEVEL-1), 'IYYY') jaar,
|
||||
LEAST(FLOOR((TO_CHAR (SYSDATE - 7*(LEVEL-1),'IW') - 1) /4) + 1, 13) periode,
|
||||
TO_CHAR (SYSDATE - 7*(LEVEL-1), 'IW') week,
|
||||
TRUNC (SYSDATE - 7*(LEVEL-1), 'IW') startdatum
|
||||
FROM DUAL
|
||||
CONNECT BY LEVEL <= 1*52+1;
|
||||
|
||||
|
||||
DELETE FROM CARE_T_BESCHIKK_X_PERIODETABEL;
|
||||
|
||||
|
||||
INSERT INTO CARE_T_BESCHIKK_X_PERIODETABEL(JAAR, PERIODE,WEEK_VAN,WEEK_TM,BSN,PRODUCT,UREN_BESCHIKKING)
|
||||
SELECT pw.jaar, pw.periode, MIN(week), MAX(week), b.client_bsn, b.product, SUM(b.uren_beschikking)
|
||||
FROM care_periode pw, care_v_beschikking_all b
|
||||
@@ -174,7 +174,7 @@ PROCEDURE care_v_rap2_factuur_uren_a
|
||||
GROUP BY pw.jaar, pw.periode, b.client_bsn, b.product;
|
||||
|
||||
OPEN p_cursor FOR
|
||||
'SELECT
|
||||
'SELECT
|
||||
fclt_f_periode,
|
||||
factuurdatum,
|
||||
wzacode,
|
||||
@@ -192,35 +192,35 @@ PROCEDURE care_v_rap2_factuur_uren_a
|
||||
bedrag_euro,
|
||||
bedrag_centen
|
||||
FROM care_v_rap2_factuur_uren_a' || p_where;
|
||||
|
||||
|
||||
END care_v_rap2_factuur_uren_a;
|
||||
|
||||
|
||||
PROCEDURE care_v_rap2_factuur_uren_e
|
||||
(user_key IN NUMBER,
|
||||
PROCEDURE care_v_rap2_factuur_uren_e
|
||||
( user_key IN NUMBER,
|
||||
p_datum_van IN VARCHAR2,
|
||||
p_datum_tot IN VARCHAR2,
|
||||
p_cursor OUT t_cursor,
|
||||
p_where IN VARCHAR2
|
||||
p_cursor OUT t_cursor,
|
||||
p_where IN VARCHAR2 DEFAULT NULL
|
||||
)
|
||||
AS
|
||||
v_datum_van DATE;
|
||||
v_datum_tot DATE;
|
||||
v_datum_tot DATE;
|
||||
BEGIN
|
||||
|
||||
DELETE FROM care_periode;
|
||||
|
||||
|
||||
INSERT INTO care_periode (jaar, periode, week, maandag)
|
||||
SELECT
|
||||
SELECT
|
||||
TO_CHAR (SYSDATE - 7*(LEVEL-1), 'IYYY') jaar,
|
||||
LEAST(FLOOR((TO_CHAR (SYSDATE - 7*(LEVEL-1),'IW') - 1) /4) + 1, 13) periode,
|
||||
TO_CHAR (SYSDATE - 7*(LEVEL-1), 'IW') week,
|
||||
TRUNC (SYSDATE - 7*(LEVEL-1), 'IW') startdatum
|
||||
FROM DUAL
|
||||
CONNECT BY LEVEL <= 1*52+1;
|
||||
|
||||
|
||||
DELETE FROM CARE_T_BESCHIKK_X_PERIODETABEL;
|
||||
|
||||
|
||||
INSERT INTO CARE_T_BESCHIKK_X_PERIODETABEL(JAAR, PERIODE,WEEK_VAN,WEEK_TM,BSN,PRODUCT,UREN_BESCHIKKING)
|
||||
SELECT pw.jaar, pw.periode, MIN(week), MAX(week), b.client_bsn, b.product, SUM(b.uren_beschikking)
|
||||
FROM care_periode pw, care_v_beschikking_all b
|
||||
@@ -229,8 +229,8 @@ PROCEDURE care_v_rap2_factuur_uren_e
|
||||
AND b.beschikking_datum_tot >= sysdate - 53*7
|
||||
GROUP BY pw.jaar, pw.periode, b.client_bsn, b.product;
|
||||
|
||||
OPEN p_cursor FOR
|
||||
'SELECT
|
||||
OPEN p_cursor FOR
|
||||
'SELECT
|
||||
fclt_x_periode,
|
||||
periode,
|
||||
weeknrs,
|
||||
@@ -247,7 +247,7 @@ PROCEDURE care_v_rap2_factuur_uren_e
|
||||
uren,
|
||||
bedrag_euro
|
||||
FROM care_v_rap2_factuur_uren_e' || p_where;
|
||||
|
||||
|
||||
END care_v_rap2_factuur_uren_e;
|
||||
|
||||
END care;
|
||||
|
||||
Reference in New Issue
Block a user