Files
gateway-mnp-dbc/dbcmnpsrc/FE/mnpapp/script/procedure/dwh/DWH.FUN_ORE_LAVORATIVE.fnc
2024-05-13 12:54:14 +02:00

41 lines
1.1 KiB
Plaintext

CREATE OR REPLACE FUNCTION FUN_ORE_LAVORATIVE (data_finale IN DATE, data_iniziale IN DATE)
RETURN NUMBER
-- Restituisce il numero di ore lavorative tra data_iniziale e data_finale
IS
appo_ore NUMBER;
appo_giorni NUMBER;
appo_ore_iniziali NUMBER;
appo_ore_finali NUMBER;
appo_min_finali NUMBER;
appo_min_iniziali NUMBER;
BEGIN
appo_ore := 0;
IF data_finale > data_iniziale
THEN
appo_giorni := dwh.fun_giorni_lavorativi (data_finale, data_iniziale);
IF appo_giorni > 0
THEN
appo_ore := appo_giorni * 24;
END IF;
appo_ore_iniziali := TO_NUMBER (TO_CHAR (data_iniziale, 'HH24'));
appo_ore_finali := TO_NUMBER (TO_CHAR (data_finale, 'HH24'));
appo_ore := appo_ore + appo_ore_finali - appo_ore_iniziali;
appo_min_iniziali := TO_NUMBER (TO_CHAR (data_iniziale, 'mi'));
appo_min_finali := TO_NUMBER (TO_CHAR (data_finale, 'mi'));
IF (appo_min_finali - appo_min_iniziali) < 0
THEN
appo_ore := appo_ore - 1;
END IF;
ELSE
appo_ore := 0;
END IF;
RETURN appo_ore;
END fun_ore_lavorative;
/