FCLT#68548 Geplande actie niet gemaakt
svn path=/Database/branches/DB40/; revision=52936
This commit is contained in:
107
FAC/FAC_PAC.SRC
107
FAC/FAC_PAC.SRC
@@ -142,7 +142,6 @@ CREATE OR REPLACE PACKAGE fac
|
||||
FUNCTION getDefaultBehandelgroep(p_stdm IN NUMBER) RETURN NUMBER;
|
||||
PROCEDURE processemail (pfrom IN VARCHAR2, pto IN VARCHAR2, psubject IN VARCHAR2, pbody IN VARCHAR2, psessionid IN VARCHAR2);
|
||||
FUNCTION isdatefeestdag(p_date IN DATE) RETURN BOOLEAN;
|
||||
FUNCTION actiontodayallowed(pact_key IN NUMBER, pdate IN DATE DEFAULT SYSDATE) RETURN NUMBER;
|
||||
FUNCTION calcnextcyclusdate (p_date IN DATE, p_mode IN NUMBER, p_eenheid IN NUMBER, p_periode IN NUMBER, p_bits IN NUMBER) RETURN DATE;
|
||||
FUNCTION nextcyclusdate (p_date IN DATE, p_mode IN NUMBER, p_eenheid IN NUMBER, p_periode IN NUMBER, p_bits IN NUMBER, p_steps IN NUMBER DEFAULT 0, p_ismjob IN NUMBER DEFAULT 0) RETURN DATE;
|
||||
FUNCTION nextcyclusdatedeel (p_insdeel IN NUMBER, p_srtcontrole IN NUMBER, p_steps IN NUMBER DEFAULT 0) RETURN DATE;
|
||||
@@ -3157,10 +3156,7 @@ CREATE OR REPLACE PACKAGE BODY fac AS
|
||||
|
||||
IF rec1.fac_activiteit_status_key = 2
|
||||
THEN
|
||||
IF (fac.actiontodayallowed(rec1.fac_activiteit_key, TRUNC(SYSDATE)) > 0)
|
||||
THEN
|
||||
executeactiviteit (rec1.fac_activiteit_xmlnode, rec1.fac_activiteit_key);
|
||||
END IF;
|
||||
executeactiviteit (rec1.fac_activiteit_xmlnode, rec1.fac_activiteit_key);
|
||||
|
||||
-- Remove time-part from volgende (ie. set to 0:00)!
|
||||
-- De geplande actie is net aangemaakt en de volgende geplande actie vanaf nu (SYSDATE) berekenen.
|
||||
@@ -4750,107 +4746,6 @@ CREATE OR REPLACE PACKAGE BODY fac AS
|
||||
RETURN FALSE;
|
||||
END;
|
||||
|
||||
-- Is de meegegeven datum geldig om een actie op te zetten.
|
||||
FUNCTION actiontodayallowed(pact_key IN NUMBER, pdate IN DATE DEFAULT SYSDATE)
|
||||
RETURN NUMBER
|
||||
IS
|
||||
v_exec NUMBER := 1;
|
||||
v_eenheid fac_activiteit.fac_activiteit_eenheid%TYPE;
|
||||
v_moments fac_activiteit.fac_activiteit_bits%TYPE;
|
||||
v_mode NUMBER;
|
||||
v_dayofweek NUMBER;
|
||||
v_weekofyear NUMBER;
|
||||
v_monthofyear NUMBER;
|
||||
v_wk_today NUMBER;
|
||||
v_wk_first NUMBER;
|
||||
v_wk_last NUMBER;
|
||||
BEGIN
|
||||
SELECT fac_activiteit_eenheid
|
||||
, fac_activiteit_bits
|
||||
INTO v_eenheid
|
||||
, v_moments
|
||||
FROM fac_activiteit
|
||||
WHERE fac_activiteit_key = pact_key;
|
||||
|
||||
CASE v_eenheid
|
||||
WHEN 0 THEN -- uurlijks
|
||||
BEGIN
|
||||
IF ((BITAND(v_moments, 128) = 128) AND fac.isdatefeestdag(pdate))
|
||||
THEN
|
||||
v_exec := 0;
|
||||
END IF;
|
||||
END;
|
||||
WHEN 1 THEN -- dagelijks
|
||||
BEGIN
|
||||
IF ((BITAND(v_moments, 128) = 128) AND fac.isdatefeestdag(pdate))
|
||||
THEN
|
||||
v_exec := 0;
|
||||
END IF;
|
||||
END;
|
||||
WHEN 2 THEN -- weeklijks
|
||||
BEGIN
|
||||
IF ((BITAND(v_moments, 128) = 128) AND fac.isdatefeestdag(pdate))
|
||||
THEN
|
||||
v_exec := 0;
|
||||
ELSE
|
||||
v_dayofweek := fac.getweekdaynum(pdate);
|
||||
v_exec := BITAND(v_moments, POWER(2, v_dayofweek-1));
|
||||
END IF;
|
||||
END;
|
||||
WHEN 3 THEN -- maandlijks
|
||||
BEGIN
|
||||
IF ((BITAND(v_moments, 128) = 128) AND fac.isdatefeestdag(pdate))
|
||||
THEN
|
||||
v_exec := 0;
|
||||
ELSE
|
||||
v_dayofweek := fac.getweekdaynum(pdate);
|
||||
IF (BITAND(v_moments, POWER(2, v_dayofweek-1)) > 0) -- juiste dag van de week
|
||||
THEN
|
||||
-- 1792 = 2^10 + 2^9 + 2^8 De bits die aangeven de hoeveelste xx-dag van de maand het moet zijn.
|
||||
-- Door te delen met 256 doe je een shift right 8 posities zodat deze drie bits minst significant worden (waarde 0..7).
|
||||
v_mode := BITAND(v_moments, 1792) / 256;
|
||||
v_wk_today := TO_NUMBER(TO_CHAR(pdate, 'iw'));
|
||||
v_wk_first := TO_NUMBER(TO_CHAR(TRUNC(pdate, 'mm'), 'iw'));
|
||||
v_wk_last := TO_NUMBER(TO_CHAR(LAST_DAY(pdate), 'iw'));
|
||||
IF (v_mode < 6)
|
||||
THEN
|
||||
-- Is het de n-de week van de maand.
|
||||
IF NOT(v_mode = v_wk_today - v_wk_first + 1)
|
||||
THEN
|
||||
v_exec := 0;
|
||||
END IF;
|
||||
END IF;
|
||||
IF (v_mode = 6)
|
||||
THEN
|
||||
-- Is het de voorlaatste week van de maand.
|
||||
IF NOT(v_wk_today = v_wk_last-1)
|
||||
THEN
|
||||
v_exec := 0;
|
||||
END IF;
|
||||
END IF;
|
||||
IF (v_mode = 7)
|
||||
THEN
|
||||
-- Is het de laatste week van de maand
|
||||
IF NOT(v_wk_today = v_wk_last)
|
||||
THEN
|
||||
v_exec := 0;
|
||||
END IF;
|
||||
END IF;
|
||||
ELSE
|
||||
v_exec := 0;
|
||||
END IF;
|
||||
END IF;
|
||||
END;
|
||||
WHEN 4 THEN -- jaarlijks
|
||||
BEGIN
|
||||
v_monthofyear := TO_NUMBER(TO_CHAR(pdate,'mm'));
|
||||
v_exec := BITAND(v_moments, POWER(2, v_monthofyear-1));
|
||||
END;
|
||||
END CASE;
|
||||
|
||||
RETURN v_exec;
|
||||
END;
|
||||
|
||||
-- Calculation of next cyclus date
|
||||
-- Deze functie moet snel en efficient zijn.
|
||||
FUNCTION calcnextcyclusdate(p_date IN DATE,
|
||||
|
||||
Reference in New Issue
Block a user