/*
   RHG - Novedades con cambio puntual de horario

   Permite cargar una novedad justificada "CAMBIO DE HORARIO" con entrada y
   salida esperadas para una fecha puntual. La lectura de fichadas usa este
   rango como horario efectivo del dia antes de calcular tardanza.
*/

IF OBJECT_ID('dbo.rhg_novedades', 'U') IS NULL
BEGIN
    CREATE TABLE dbo.rhg_novedades (
        novedad_id     INT IDENTITY(1,1) NOT NULL CONSTRAINT PK_rhg_novedades PRIMARY KEY,
        legajo         INT            NOT NULL,
        fecha_desde    DATE           NOT NULL,
        fecha_hasta    DATE           NOT NULL,
        concepto       NVARCHAR(120)  NOT NULL,
        motivo         NVARCHAR(800)  NULL,
        observaciones  NVARCHAR(1200) NULL,
        justificado    CHAR(2)        NOT NULL CONSTRAINT DF_rhg_novedades_justificado DEFAULT ('NO'),
        operation_mode NVARCHAR(20)   NOT NULL CONSTRAINT DF_rhg_novedades_operation_mode DEFAULT ('day'),
        hora_entrada   TIME(0)        NULL,
        hora_salida    TIME(0)        NULL,
        created_by     NVARCHAR(120)  NULL,
        created_at     DATETIME       NOT NULL CONSTRAINT DF_rhg_novedades_created_at DEFAULT (GETDATE())
    );
END;

IF COL_LENGTH('dbo.rhg_novedades', 'hora_entrada') IS NULL
BEGIN
    ALTER TABLE dbo.rhg_novedades ADD hora_entrada TIME(0) NULL;
END;

IF COL_LENGTH('dbo.rhg_novedades', 'hora_salida') IS NULL
BEGIN
    ALTER TABLE dbo.rhg_novedades ADD hora_salida TIME(0) NULL;
END;

IF NOT EXISTS (
    SELECT 1
    FROM sys.indexes
    WHERE name = 'IX_rhg_novedades_legajo'
      AND object_id = OBJECT_ID('dbo.rhg_novedades')
)
BEGIN
    CREATE INDEX IX_rhg_novedades_legajo
    ON dbo.rhg_novedades (legajo);
END;

IF NOT EXISTS (
    SELECT 1
    FROM sys.indexes
    WHERE name = 'IX_rhg_novedades_cambio_horario'
      AND object_id = OBJECT_ID('dbo.rhg_novedades')
)
BEGIN
    CREATE INDEX IX_rhg_novedades_cambio_horario
    ON dbo.rhg_novedades (legajo, concepto, justificado, fecha_desde, fecha_hasta)
    INCLUDE (hora_entrada, hora_salida);
END;

