/* ---------------------------------------------------------------------
   RHG Lite - Orden estable de fichadas por jornada

   La entrada y la salida ya no se calculan con MIN/MAX(fecha_hora), porque
   al corregir a mano la hora de una marca se podia promover otra marca del
   mismo dia como nueva entrada/salida.

   Criterio:
   - Entrada = primera marca capturada del dia segun dbo.rhg_fichadas.id.
   - Salida  = ultima marca capturada del dia segun dbo.rhg_fichadas.id.
   - fecha_hora sigue siendo la hora corregible de la marca.
   --------------------------------------------------------------------- */

CREATE OR ALTER VIEW dbo.vw_rhg_jornadas AS
WITH marcas AS (
    SELECT
        legajo,
        CAST(fecha_hora AS date) AS fecha,
        fecha_hora,
        ROW_NUMBER() OVER (
            PARTITION BY legajo, CAST(fecha_hora AS date)
            ORDER BY id ASC
        ) AS rn_entrada,
        ROW_NUMBER() OVER (
            PARTITION BY legajo, CAST(fecha_hora AS date)
            ORDER BY id DESC
        ) AS rn_salida
    FROM dbo.rhg_fichadas
    WHERE origen = 'ZKTECO'
)
SELECT
    legajo,
    fecha,
    MAX(CASE WHEN rn_entrada = 1 THEN fecha_hora END) AS entrada,
    MAX(CASE WHEN rn_salida = 1 THEN fecha_hora END) AS salida,
    COUNT(*) AS marcas
FROM marcas
GROUP BY legajo, fecha;
