diff --git a/FAC/FAC_PAC.SRC b/FAC/FAC_PAC.SRC index 23883f3b..e657fdfc 100644 --- a/FAC/FAC_PAC.SRC +++ b/FAC/FAC_PAC.SRC @@ -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)