FSN#23620 Correctie datumtijdnaaruitvoertijd bij begindatum > einddatum
svn path=/Database/trunk/; revision=22875
This commit is contained in:
@@ -61,9 +61,9 @@ CREATE OR REPLACE PACKAGE fac AS
|
|||||||
FUNCTION datumtijdplusuitvoertijd (begindatum IN DATE, uitvoertijd IN NUMBER, uitvoertijdtype IN VARCHAR2) RETURN DATE;
|
FUNCTION datumtijdplusuitvoertijd (begindatum IN DATE, uitvoertijd IN NUMBER, uitvoertijdtype IN VARCHAR2) RETURN DATE;
|
||||||
FUNCTION datumtijdplusuitvoertijd (begindatum IN DATE, uitvoertijd IN NUMBER, uitvoertijdtype IN VARCHAR2,
|
FUNCTION datumtijdplusuitvoertijd (begindatum IN DATE, uitvoertijd IN NUMBER, uitvoertijdtype IN VARCHAR2,
|
||||||
pBeginWerkUur IN NUMBER, pEindWerkUur IN NUMBER, pMode IN NUMBER) RETURN DATE;
|
pBeginWerkUur IN NUMBER, pEindWerkUur IN NUMBER, pMode IN NUMBER) RETURN DATE;
|
||||||
FUNCTION datumtijdnaaruitvoertijd (begindatum IN DATE, einddatum IN DATE, uitvoertijdtype IN VARCHAR2) RETURN NUMBER;
|
FUNCTION datumtijdnaaruitvoertijd (begindatum IN DATE, einddatum IN DATE, uitvoertijdtype IN VARCHAR2) RETURN MLD_T_UITVOERTIJD;
|
||||||
FUNCTION datumtijdnaaruitvoertijd (begindatum IN DATE, einddatum IN DATE, uitvoertijdtype IN VARCHAR2,
|
FUNCTION datumtijdnaaruitvoertijd (begindatum IN DATE, einddatum IN DATE, uitvoertijdtype IN VARCHAR2,
|
||||||
pBeginWerkUur IN NUMBER, pEindWerkUur IN NUMBER, pMode IN NUMBER) RETURN NUMBER;
|
pBeginWerkUur IN NUMBER, pEindWerkUur IN NUMBER, pMode IN NUMBER) RETURN MLD_T_UITVOERTIJD;
|
||||||
FUNCTION getdatemillisec (i_date IN DATE) RETURN NUMBER;
|
FUNCTION getdatemillisec (i_date IN DATE) RETURN NUMBER;
|
||||||
FUNCTION usrrap_query (p_tabelnaam IN VARCHAR2) RETURN VARCHAR2;
|
FUNCTION usrrap_query (p_tabelnaam IN VARCHAR2) RETURN VARCHAR2;
|
||||||
FUNCTION usrrap_orderby (p_tabelnaam IN VARCHAR2) RETURN VARCHAR2;
|
FUNCTION usrrap_orderby (p_tabelnaam IN VARCHAR2) RETURN VARCHAR2;
|
||||||
@@ -690,7 +690,6 @@ CREATE OR REPLACE PACKAGE BODY fac AS
|
|||||||
END IF;
|
END IF;
|
||||||
END IF;
|
END IF;
|
||||||
END IF;
|
END IF;
|
||||||
|
|
||||||
RETURN returnval;
|
RETURN returnval;
|
||||||
END;
|
END;
|
||||||
|
|
||||||
@@ -699,7 +698,7 @@ CREATE OR REPLACE PACKAGE BODY fac AS
|
|||||||
-- datumtijdplusuitvoertijd(begin, datumtijdnaaruitvoertijd(begin, eind, type), type) == eind
|
-- datumtijdplusuitvoertijd(begin, datumtijdnaaruitvoertijd(begin, eind, type), type) == eind
|
||||||
-- datumtijdnaaruitvoertijd(begin, datumtijdplusuitvoertijd(begin, uitvoertijd, type), type) == uitvoertijd
|
-- datumtijdnaaruitvoertijd(begin, datumtijdplusuitvoertijd(begin, uitvoertijd, type), type) == uitvoertijd
|
||||||
-- Is de luxe versie van count_Work_Days
|
-- Is de luxe versie van count_Work_Days
|
||||||
FUNCTION datumtijdnaaruitvoertijd (begindatum IN DATE, einddatum IN DATE, uitvoertijdtype IN VARCHAR2) RETURN NUMBER
|
FUNCTION datumtijdnaaruitvoertijd (begindatum IN DATE, einddatum IN DATE, uitvoertijdtype IN VARCHAR2) RETURN MLD_T_UITVOERTIJD
|
||||||
AS
|
AS
|
||||||
BEGIN
|
BEGIN
|
||||||
IF BeginWerkUur IS NULL OR EindWerkUur IS NULL
|
IF BeginWerkUur IS NULL OR EindWerkUur IS NULL
|
||||||
@@ -718,13 +717,14 @@ CREATE OR REPLACE PACKAGE BODY fac AS
|
|||||||
pBeginWerkUur IN NUMBER,
|
pBeginWerkUur IN NUMBER,
|
||||||
pEindWerkUur IN NUMBER,
|
pEindWerkUur IN NUMBER,
|
||||||
pMode IN NUMBER)
|
pMode IN NUMBER)
|
||||||
RETURN NUMBER
|
RETURN MLD_T_UITVOERTIJD
|
||||||
AS
|
AS
|
||||||
urenperdag NUMBER (10, 3);
|
uitvoertijd mld_stdmelding.mld_stdmelding_t_uitvoertijd%TYPE := MLD_T_UITVOERTIJD(NULL, NULL); -- constructor initialisatie
|
||||||
eerstedag NUMBER (10, 3);
|
urenperdag NUMBER (10, 3);
|
||||||
laatstedag NUMBER (10, 3);
|
eerstedag NUMBER (10, 3);
|
||||||
heledagen NUMBER (10);
|
laatstedag NUMBER (10, 3);
|
||||||
vrijedagen NUMBER;
|
heledagen NUMBER (10);
|
||||||
|
vrijedagen NUMBER;
|
||||||
BEGIN
|
BEGIN
|
||||||
IF begindatum IS NOT NULL
|
IF begindatum IS NOT NULL
|
||||||
AND einddatum IS NOT NULL
|
AND einddatum IS NOT NULL
|
||||||
@@ -732,23 +732,19 @@ CREATE OR REPLACE PACKAGE BODY fac AS
|
|||||||
THEN
|
THEN
|
||||||
IF begindatum > einddatum
|
IF begindatum > einddatum
|
||||||
THEN
|
THEN
|
||||||
RETURN -datumtijdnaaruitvoertijd (einddatum,
|
uitvoertijd := datumtijdnaaruitvoertijd (einddatum, begindatum, uitvoertijdtype, pBeginWerkUur, pEindWerkUur, pMode);
|
||||||
begindatum,
|
uitvoertijd.tijdsduur := -uitvoertijd.tijdsduur;
|
||||||
uitvoertijdtype,
|
ELSIF pMode = 2
|
||||||
pBeginWerkUur,
|
|
||||||
pEindWerkUur,
|
|
||||||
pMode);
|
|
||||||
END IF;
|
|
||||||
|
|
||||||
IF pMode = 2
|
|
||||||
THEN
|
THEN
|
||||||
-- Zo simpel kan het zijn (igv. 24/7)!
|
-- Zo simpel kan het zijn igv. 24/7!
|
||||||
IF uitvoertijdtype IN ('D', 'DAGEN')
|
IF uitvoertijdtype IN ('D', 'DAGEN')
|
||||||
THEN
|
THEN
|
||||||
-- Per 5.4.3 kunnen hier gebroken dagen worden teruggegeven!
|
-- Per 5.4.3 kunnen hier gebroken dagen worden teruggegeven!
|
||||||
RETURN einddatum - begindatum;
|
uitvoertijd.tijdsduur := einddatum - begindatum;
|
||||||
|
uitvoertijd.eenheid := 'D';
|
||||||
ELSE -- default/uitvoertijdtype IN ('U', 'UREN')
|
ELSE -- default/uitvoertijdtype IN ('U', 'UREN')
|
||||||
RETURN (einddatum - begindatum) * 24;
|
uitvoertijd.tijdsduur := (einddatum - begindatum) * 24;
|
||||||
|
uitvoertijd.eenheid := 'U';
|
||||||
END IF;
|
END IF;
|
||||||
ELSIF pBeginWerkUur BETWEEN 0 AND 24
|
ELSIF pBeginWerkUur BETWEEN 0 AND 24
|
||||||
AND pEindWerkUur BETWEEN 0 AND 24
|
AND pEindWerkUur BETWEEN 0 AND 24
|
||||||
@@ -825,24 +821,23 @@ CREATE OR REPLACE PACKAGE BODY fac AS
|
|||||||
heledagen := fac.count_Work_Days (TRUNC (begindatum), TRUNC (einddatum)) - 1;
|
heledagen := fac.count_Work_Days (TRUNC (begindatum), TRUNC (einddatum)) - 1;
|
||||||
END IF;
|
END IF;
|
||||||
END IF;
|
END IF;
|
||||||
ELSE
|
|
||||||
RETURN NULL;
|
|
||||||
END IF;
|
|
||||||
|
|
||||||
DBMS_OUTPUT.put_line ('Eerstedag ' || TO_CHAR (eerstedag));
|
DBMS_OUTPUT.put_line ('Eerstedag ' || TO_CHAR (eerstedag));
|
||||||
DBMS_OUTPUT.put_line ('Laatstedag ' || TO_CHAR (laatstedag));
|
DBMS_OUTPUT.put_line ('Laatstedag ' || TO_CHAR (laatstedag));
|
||||||
DBMS_OUTPUT.put_line ('Heledagen ' || TO_CHAR (heledagen));
|
DBMS_OUTPUT.put_line ('Heledagen ' || TO_CHAR (heledagen));
|
||||||
|
|
||||||
IF uitvoertijdtype IN ('D', 'DAGEN')
|
IF uitvoertijdtype IN ('D', 'DAGEN')
|
||||||
THEN
|
THEN
|
||||||
-- Per 5.4.3 kunnen hier gebroken dagen worden teruggegeven!
|
-- Per 5.4.3 kunnen hier gebroken dagen worden teruggegeven!
|
||||||
RETURN (eerstedag + laatstedag + heledagen * urenperdag) / urenperdag;
|
uitvoertijd.tijdsduur := (eerstedag + laatstedag + heledagen * urenperdag) / urenperdag;
|
||||||
ELSE -- default/uitvoertijdtype IN ('U', 'UREN')
|
uitvoertijd.eenheid := 'D';
|
||||||
RETURN eerstedag + laatstedag + heledagen * urenperdag;
|
ELSE -- default/uitvoertijdtype IN ('U', 'UREN')
|
||||||
|
uitvoertijd.tijdsduur := eerstedag + laatstedag + heledagen * urenperdag;
|
||||||
|
uitvoertijd.eenheid := 'U';
|
||||||
|
END IF;
|
||||||
END IF;
|
END IF;
|
||||||
ELSE
|
|
||||||
RETURN NULL;
|
|
||||||
END IF;
|
END IF;
|
||||||
|
RETURN uitvoertijd;
|
||||||
END datumtijdnaaruitvoertijd;
|
END datumtijdnaaruitvoertijd;
|
||||||
|
|
||||||
FUNCTION getdatemillisec (i_date IN DATE)
|
FUNCTION getdatemillisec (i_date IN DATE)
|
||||||
|
|||||||
Reference in New Issue
Block a user