ALLV#15820: d) SLA berekening houdt rekening met momentum van afmelden/afwijzen. Hiervoor nieuwe functie count_work_days_incltime gemaakt.
svn path=/Database/trunk/; revision=10030
This commit is contained in:
@@ -1,6 +1,6 @@
|
||||
#ifdef FAC
|
||||
/* $Revision: 163 $
|
||||
* $Modtime: 6-05-09 16:19 $
|
||||
/* $Revision: 164 $
|
||||
* $Modtime: 15-06-09 16:01 $
|
||||
*/
|
||||
|
||||
/*
|
||||
@@ -454,6 +454,7 @@ CREATE OR REPLACE PACKAGE fac AS
|
||||
FUNCTION safe_To_Date ( pchar IN VARCHAR2, pfmt IN VARCHAR2 ) RETURN DATE;
|
||||
FUNCTION getrefwaarde (module IN VARCHAR2, kkey IN NUMBER, waarde IN VARCHAR2) 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;
|
||||
PROCEDURE imp_getfield ( p_parseline IN OUT VARCHAR2,
|
||||
p_fielddelimitor IN VARCHAR2,
|
||||
p_field OUT VARCHAR2
|
||||
@@ -693,14 +694,15 @@ CREATE OR REPLACE PACKAGE BODY fac AS
|
||||
RETURN resultvalue;
|
||||
END;
|
||||
|
||||
|
||||
|
||||
/* Werkt vast nog niet voor sqls -pf */
|
||||
-- Return number of workdays between two dates, not including the startdate, weekends and holidays
|
||||
FUNCTION count_Work_Days( pdate1 IN DATE , pdate2 IN DATE ) RETURN NUMBER IS
|
||||
FUNCTION count_Work_Days0( pdate1 IN DATE , pdate2 IN DATE, pInclTime IN BOOLEAN ) RETURN NUMBER IS
|
||||
eikdag NUMBER;
|
||||
v_date_from DATE;
|
||||
v_date_to DATE;
|
||||
v_time_from NUMBER;
|
||||
v_time_to NUMBER;
|
||||
v_extra_day NUMBER;
|
||||
lbackwards BOOLEAN;
|
||||
v_week NUMBER;
|
||||
v_mod NUMBER;
|
||||
@@ -723,10 +725,14 @@ CREATE OR REPLACE PACKAGE BODY fac AS
|
||||
IF pdate1 > pdate2 THEN
|
||||
v_date_from := TRUNC(pdate2);
|
||||
v_date_to := TRUNC(pdate1);
|
||||
v_time_from := to_char(pdate2,'sssss');
|
||||
v_time_to := to_char(pdate1,'sssss');
|
||||
lbackwards := TRUE;
|
||||
ELSE
|
||||
v_date_from := TRUNC(pdate1);
|
||||
v_date_to := TRUNC(pdate2);
|
||||
v_time_from := to_char(pdate1,'sssss');
|
||||
v_time_to := to_char(pdate2,'sssss');
|
||||
lbackwards := FALSE;
|
||||
END IF;
|
||||
|
||||
@@ -755,6 +761,14 @@ CREATE OR REPLACE PACKAGE BODY fac AS
|
||||
END IF;
|
||||
END IF;
|
||||
|
||||
v_extra_day := 0;
|
||||
IF pInclTime THEN
|
||||
IF v_time_to > v_time_from THEN
|
||||
v_extra_day := 1;
|
||||
END IF;
|
||||
END IF;
|
||||
|
||||
|
||||
-- Determine the registered holidays between FROM and TO
|
||||
SELECT count(*)
|
||||
INTO v_holidays
|
||||
@@ -762,14 +776,24 @@ CREATE OR REPLACE PACKAGE BODY fac AS
|
||||
WHERE MLD_VRIJE_DAGEN_DATUM BETWEEN v_date_from AND v_date_to;
|
||||
|
||||
IF lbackwards THEN
|
||||
RETURN 0 - (5 * v_week + v_mod - v_holidays);
|
||||
RETURN 0 - (5 * v_week + v_mod + v_extra_day - v_holidays);
|
||||
ELSE
|
||||
RETURN 5 * v_week + v_mod - v_holidays;
|
||||
RETURN 5 * v_week + v_mod + v_extra_day - v_holidays;
|
||||
END IF;
|
||||
EXCEPTION
|
||||
WHEN OTHERS THEN RETURN NULL;
|
||||
END;
|
||||
|
||||
FUNCTION count_Work_Days_InclTime( pdate1 IN DATE , pdate2 IN DATE ) RETURN NUMBER IS
|
||||
BEGIN
|
||||
RETURN count_Work_Days0(pdate1,pdate2, TRUE);
|
||||
END;
|
||||
|
||||
FUNCTION count_Work_Days( pdate1 IN DATE , pdate2 IN DATE ) RETURN NUMBER IS
|
||||
BEGIN
|
||||
RETURN count_Work_Days0(pdate1,pdate2, FALSE);
|
||||
END;
|
||||
|
||||
PROCEDURE imp_getfield (
|
||||
p_parseline IN OUT VARCHAR2,
|
||||
p_fielddelimitor IN VARCHAR2,
|
||||
|
||||
Reference in New Issue
Block a user