KFNS#34161 Notificatie achtervang

svn path=/Database/trunk/; revision=28786
This commit is contained in:
Erik Groener
2016-04-06 14:42:50 +00:00
parent 3b69790ca0
commit b78cb44312
3 changed files with 55 additions and 37 deletions

View File

@@ -60,6 +60,8 @@ CREATE OR REPLACE PACKAGE fac
FUNCTION getdomeinwaarde (dkey IN NUMBER, waarde IN VARCHAR2, ignorewhenxmlnode IN NUMBER DEFAULT 0) RETURN VARCHAR2;
FUNCTION count_Work_Days ( pdate1 IN DATE , pdate2 IN DATE ) RETURN NUMBER;
FUNCTION count_Work_Days_InclTime ( pdate1 IN DATE , pdate2 IN DATE ) RETURN NUMBER;
FUNCTION iswerkdag (begindatum IN DATE) RETURN NUMBER;
FUNCTION iswerktijd RETURN NUMBER;
FUNCTION datumtijdplusuitvoertijd (begindatum IN DATE, uitvoertijd IN NUMBER, uitvoertijdtype IN VARCHAR2) RETURN DATE;
FUNCTION datumtijdplusuitvoertijd (begindatum IN DATE, uitvoertijd IN NUMBER, uitvoertijdtype IN VARCHAR2,
pBeginWerkUur IN NUMBER, pEindWerkUur IN NUMBER, pMode IN NUMBER) RETURN DATE;
@@ -388,6 +390,23 @@ CREATE OR REPLACE PACKAGE BODY fac AS
END IF;
END;
FUNCTION iswerktijd
RETURN NUMBER
AS
lBeginWerkUur NUMBER;
lEindWerkUur NUMBER;
BEGIN
lBeginWerkUur := fac.safe_to_number(fac.getsetting('fac_t_startofworkday'));
lEindWerkUur := fac.safe_to_number(fac.getsetting('fac_t_endofworkday'));
IF SYSDATE BETWEEN TRUNC(SYSDATE) + (lBeginWerkUur / 24)
AND TRUNC(SYSDATE) + (lEindWerkUur / 24)
THEN
RETURN 1;
ELSE
RETURN 0;
END IF;
END;
-- Return number of workdays between two dates, not including the startdate, weekends and holidays
FUNCTION count_Work_Days0( pdate1 IN DATE , pdate2 IN DATE, pInclTime IN BOOLEAN ) RETURN NUMBER IS
eikdag NUMBER;

View File

@@ -521,9 +521,6 @@ CREATE OR REPLACE PACKAGE BODY mld AS
lreceivers fac_srtnotificatie.fac_srtnotificatie_oms%TYPE;
lreceivers1 fac_srtnotificatie.fac_srtnotificatie_oms%TYPE;
ltracking VARCHAR2(4000); -- moet tijdelijk groter dan fac_srtnotificatie.fac_srtnotificatie_oms%TYPE kunnen zijn
lOutsideOfficeHours NUMBER;
lBeginWerkUur NUMBER;
lEindWerkUur NUMBER;
lnotifyooh mld_disc_params.mld_disc_params_offhours%TYPE;
BEGIN
BEGIN
@@ -615,27 +612,32 @@ CREATE OR REPLACE PACKAGE BODY mld AS
RETURN;
END IF;
-- Bepalen Outside Office Hours.
lBeginWerkUur := fac.safe_to_number(fac.getsetting('fac_t_startofworkday'));
lEindWerkUur := fac.safe_to_number(fac.getsetting('fac_t_endofworkday'));
SELECT MAX(t.ooh)
INTO lOutsideOfficeHours
FROM (SELECT DISTINCT 1 ooh
FROM mld_vrije_dagen
WHERE lnotifyooh = 1 -- deze discipline buiten kantooruren melden
AND (mld_vrije_dagen_datum = TRUNC(SYSDATE) -- vrije dagen
OR TO_CHAR(TRUNC(SYSDATE), 'd') IN ('7','1') -- weekend
OR ( SYSDATE NOT BETWEEN TRUNC(SYSDATE) + (lBeginWerkUur / 24) -- buiten kantooruren
AND TRUNC(SYSDATE) + (lEindWerkUur / 24)
)
)
UNION
SELECT 0 FROM DUAL -- altijd minimaal 1 rij opleveren
) t;
lnrreceivers := 0;
lreceivers := '';
-- Buiten kantooruren naar de achterwacht melden.
IF lnotifyooh = 1
THEN
IF ( (fac.iswerkdag(SYSDATE) = 0) -- weekend of vrije dag
OR (fac.iswerktijd = 0) -- buiten kantoortijd
)
THEN
lreceivers := fac.getsetting('nightly_mld2bo_emailaddress');
lnrreceivers := lnrreceivers+1;
fac.putnotificationsrtprio (NULL,
NULL,
lsrtnoticode,
pmeldingkey,
bericht,
NULL,
lreceivers,
NULL,
NULL,
lspoed, -- 1,2,3,4
NULL
);
END IF;
END IF;
FOR boer
IN (SELECT g.prs_perslid_key
FROM fac_v_webgebruiker g, fac_functie f, prs_perslid p, prs_v_afdeling d
@@ -679,21 +681,17 @@ CREATE OR REPLACE PACKAGE BODY mld AS
lspoed, -- 1,2,3,4
NULL
);
IF lOutsideOfficeHours = 1 THEN
lreceivers := fac.getsetting('nightly_mld2bo_emailaddress');
IF lnrreceivers = 0 THEN
SELECT prs_perslid_naam_friendly
INTO lreceivers
FROM prs_v_perslid_fullnames
WHERE prs_perslid_key = boer.prs_perslid_key;
ELSE
IF lnrreceivers = 0 THEN
SELECT prs_perslid_naam_friendly
INTO lreceivers
FROM prs_v_perslid_fullnames
WHERE prs_perslid_key = boer.prs_perslid_key;
ELSE
SELECT prs_perslid_naam_friendly
INTO lreceivers1
FROM prs_v_perslid_fullnames
WHERE prs_perslid_key = boer.prs_perslid_key;
lreceivers := lreceivers||', '||lreceivers1;
END IF;
SELECT prs_perslid_naam_friendly
INTO lreceivers1
FROM prs_v_perslid_fullnames
WHERE prs_perslid_key = boer.prs_perslid_key;
lreceivers := lreceivers||', '||lreceivers1;
END IF;
lnrreceivers := lnrreceivers+1;
END LOOP;

View File

@@ -68,7 +68,8 @@ CREATE_TABLE(mld_disc_params, 0)
DEFAULT 0,
mld_disc_params_fenotes
NUMBER(2) -- bitwise valid are 0, 1, 2 and 3 (0,1 = (default) niet/wel + 0,2 = vast/keuze)
DEFAULT 0,
DEFAULT 0
NOT NULL,
mld_disc_params_eigen_kp
NUMBER(1) -- valid are 0, 1
DEFAULT 0,