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,
|
||||
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,
|
||||
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 usrrap_query (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;
|
||||
|
||||
RETURN returnval;
|
||||
END;
|
||||
|
||||
@@ -699,7 +698,7 @@ CREATE OR REPLACE PACKAGE BODY fac AS
|
||||
-- datumtijdplusuitvoertijd(begin, datumtijdnaaruitvoertijd(begin, eind, type), type) == eind
|
||||
-- datumtijdnaaruitvoertijd(begin, datumtijdplusuitvoertijd(begin, uitvoertijd, type), type) == uitvoertijd
|
||||
-- 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
|
||||
BEGIN
|
||||
IF BeginWerkUur IS NULL OR EindWerkUur IS NULL
|
||||
@@ -718,13 +717,14 @@ CREATE OR REPLACE PACKAGE BODY fac AS
|
||||
pBeginWerkUur IN NUMBER,
|
||||
pEindWerkUur IN NUMBER,
|
||||
pMode IN NUMBER)
|
||||
RETURN NUMBER
|
||||
RETURN MLD_T_UITVOERTIJD
|
||||
AS
|
||||
urenperdag NUMBER (10, 3);
|
||||
eerstedag NUMBER (10, 3);
|
||||
laatstedag NUMBER (10, 3);
|
||||
heledagen NUMBER (10);
|
||||
vrijedagen NUMBER;
|
||||
uitvoertijd mld_stdmelding.mld_stdmelding_t_uitvoertijd%TYPE := MLD_T_UITVOERTIJD(NULL, NULL); -- constructor initialisatie
|
||||
urenperdag NUMBER (10, 3);
|
||||
eerstedag NUMBER (10, 3);
|
||||
laatstedag NUMBER (10, 3);
|
||||
heledagen NUMBER (10);
|
||||
vrijedagen NUMBER;
|
||||
BEGIN
|
||||
IF begindatum IS NOT NULL
|
||||
AND einddatum IS NOT NULL
|
||||
@@ -732,23 +732,19 @@ CREATE OR REPLACE PACKAGE BODY fac AS
|
||||
THEN
|
||||
IF begindatum > einddatum
|
||||
THEN
|
||||
RETURN -datumtijdnaaruitvoertijd (einddatum,
|
||||
begindatum,
|
||||
uitvoertijdtype,
|
||||
pBeginWerkUur,
|
||||
pEindWerkUur,
|
||||
pMode);
|
||||
END IF;
|
||||
|
||||
IF pMode = 2
|
||||
uitvoertijd := datumtijdnaaruitvoertijd (einddatum, begindatum, uitvoertijdtype, pBeginWerkUur, pEindWerkUur, pMode);
|
||||
uitvoertijd.tijdsduur := -uitvoertijd.tijdsduur;
|
||||
ELSIF pMode = 2
|
||||
THEN
|
||||
-- Zo simpel kan het zijn (igv. 24/7)!
|
||||
-- Zo simpel kan het zijn igv. 24/7!
|
||||
IF uitvoertijdtype IN ('D', 'DAGEN')
|
||||
THEN
|
||||
-- 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')
|
||||
RETURN (einddatum - begindatum) * 24;
|
||||
uitvoertijd.tijdsduur := (einddatum - begindatum) * 24;
|
||||
uitvoertijd.eenheid := 'U';
|
||||
END IF;
|
||||
ELSIF pBeginWerkUur 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;
|
||||
END IF;
|
||||
END IF;
|
||||
ELSE
|
||||
RETURN NULL;
|
||||
END IF;
|
||||
|
||||
DBMS_OUTPUT.put_line ('Eerstedag ' || TO_CHAR (eerstedag));
|
||||
DBMS_OUTPUT.put_line ('Laatstedag ' || TO_CHAR (laatstedag));
|
||||
DBMS_OUTPUT.put_line ('Heledagen ' || TO_CHAR (heledagen));
|
||||
DBMS_OUTPUT.put_line ('Eerstedag ' || TO_CHAR (eerstedag));
|
||||
DBMS_OUTPUT.put_line ('Laatstedag ' || TO_CHAR (laatstedag));
|
||||
DBMS_OUTPUT.put_line ('Heledagen ' || TO_CHAR (heledagen));
|
||||
|
||||
IF uitvoertijdtype IN ('D', 'DAGEN')
|
||||
THEN
|
||||
-- Per 5.4.3 kunnen hier gebroken dagen worden teruggegeven!
|
||||
RETURN (eerstedag + laatstedag + heledagen * urenperdag) / urenperdag;
|
||||
ELSE -- default/uitvoertijdtype IN ('U', 'UREN')
|
||||
RETURN eerstedag + laatstedag + heledagen * urenperdag;
|
||||
IF uitvoertijdtype IN ('D', 'DAGEN')
|
||||
THEN
|
||||
-- Per 5.4.3 kunnen hier gebroken dagen worden teruggegeven!
|
||||
uitvoertijd.tijdsduur := (eerstedag + laatstedag + heledagen * urenperdag) / urenperdag;
|
||||
uitvoertijd.eenheid := 'D';
|
||||
ELSE -- default/uitvoertijdtype IN ('U', 'UREN')
|
||||
uitvoertijd.tijdsduur := eerstedag + laatstedag + heledagen * urenperdag;
|
||||
uitvoertijd.eenheid := 'U';
|
||||
END IF;
|
||||
END IF;
|
||||
ELSE
|
||||
RETURN NULL;
|
||||
END IF;
|
||||
RETURN uitvoertijd;
|
||||
END datumtijdnaaruitvoertijd;
|
||||
|
||||
FUNCTION getdatemillisec (i_date IN DATE)
|
||||
|
||||
Reference in New Issue
Block a user