FCLT#61865 BONS: AiAi op CARE -rapport

svn path=/Database/trunk/; revision=46302
This commit is contained in:
Erik Groener
2020-03-20 13:35:15 +00:00
parent 7cfacc965a
commit 1c8eeddf00

View File

@@ -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;