-- +goose Up
-- +goose StatementBegin

-- ─────────────────────────────────────────────────────────────────────────────
-- Adiciona o terceiro subtipo de banco de horas: HE Noturna. Este saldo é
-- um RECORTE do saldo de HE 50% (os minutos que caem no período noturno
-- 22h–05h saem do crédito de he_50 e entram aqui), evitando contar o mesmo
-- minuto trabalhado duas vezes no saldo total do banco de horas.
-- ─────────────────────────────────────────────────────────────────────────────
ALTER TABLE banco_horas
    DROP CONSTRAINT IF EXISTS banco_horas_subtipo_he_check;
ALTER TABLE banco_horas
    ADD CONSTRAINT banco_horas_subtipo_he_check
    CHECK (subtipo_he IN ('he_50','he_100','he_noturna'));

ALTER TABLE banco_horas_creditos_processados
    DROP CONSTRAINT IF EXISTS banco_horas_creditos_processados_subtipo_he_check;
ALTER TABLE banco_horas_creditos_processados
    ADD CONSTRAINT banco_horas_creditos_processados_subtipo_he_check
    CHECK (subtipo_he IN ('he_50','he_100','he_noturna'));

-- ─────────────────────────────────────────────────────────────────────────────
-- Compensação/pagamento de HE Noturna do banco de horas
-- ─────────────────────────────────────────────────────────────────────────────
ALTER TABLE banco_horas
    DROP CONSTRAINT IF EXISTS banco_horas_tipo_check;
ALTER TABLE banco_horas
    ADD CONSTRAINT banco_horas_tipo_check
    CHECK (tipo IN (
        'credito','debito','ajuste_manual','compensacao',
        'folga_compensatoria','pagamento_50','pagamento_100','pagamento_dom_fer',
        'pagamento_noturna'
    ));

ALTER TABLE holerite_lancamentos
    DROP CONSTRAINT IF EXISTS holerite_lancamentos_tipo_check;
ALTER TABLE holerite_lancamentos
    ADD CONSTRAINT holerite_lancamentos_tipo_check
    CHECK (tipo IN (
        'comissao','produtividade','eficiencia','bonus',
        'outros_proventos','outros_descontos',
        'adiantamento_vt','adiantamento_vr','adiantamento_salario','adiantamento_outros',
        'pagamento_banco_50','pagamento_banco_100','pagamento_banco_dom_fer',
        'pagamento_banco_noturna'
    ));

-- +goose StatementEnd

-- +goose Down
-- +goose StatementBegin
ALTER TABLE holerite_lancamentos
    DROP CONSTRAINT IF EXISTS holerite_lancamentos_tipo_check;
ALTER TABLE holerite_lancamentos
    ADD CONSTRAINT holerite_lancamentos_tipo_check
    CHECK (tipo IN (
        'comissao','produtividade','eficiencia','bonus',
        'outros_proventos','outros_descontos',
        'adiantamento_vt','adiantamento_vr','adiantamento_salario','adiantamento_outros',
        'pagamento_banco_50','pagamento_banco_100','pagamento_banco_dom_fer'
    ));

ALTER TABLE banco_horas
    DROP CONSTRAINT IF EXISTS banco_horas_tipo_check;
ALTER TABLE banco_horas
    ADD CONSTRAINT banco_horas_tipo_check
    CHECK (tipo IN (
        'credito','debito','ajuste_manual','compensacao',
        'folga_compensatoria','pagamento_50','pagamento_100','pagamento_dom_fer'
    ));

ALTER TABLE banco_horas_creditos_processados
    DROP CONSTRAINT IF EXISTS banco_horas_creditos_processados_subtipo_he_check;
ALTER TABLE banco_horas_creditos_processados
    ADD CONSTRAINT banco_horas_creditos_processados_subtipo_he_check
    CHECK (subtipo_he IN ('he_50','he_100'));

ALTER TABLE banco_horas
    DROP CONSTRAINT IF EXISTS banco_horas_subtipo_he_check;
ALTER TABLE banco_horas
    ADD CONSTRAINT banco_horas_subtipo_he_check
    CHECK (subtipo_he IN ('he_50','he_100'));
-- +goose StatementEnd
