-- +goose Up
-- +goose StatementBegin

-- ─────────────────────────────────────────────────────────────────────────────
-- Ampliar tipos de banco_horas para incluir compensação/pagamento 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'
    ));

-- Vincula o débito de banco de horas ao lançamento de holerite gerado
-- quando o tipo é um pagamento (não folga). Permite reverter ambos juntos.
ALTER TABLE banco_horas
    ADD COLUMN IF NOT EXISTS lancamento_id UUID REFERENCES holerite_lancamentos(id) ON DELETE SET NULL,
    ADD COLUMN IF NOT EXISTS mes_pagamento  TEXT, -- 'YYYY-MM' — mês em que o pagamento será refletido no holerite
    ADD COLUMN IF NOT EXISTS cancelado      BOOLEAN NOT NULL DEFAULT false;

-- ─────────────────────────────────────────────────────────────────────────────
-- holerite_lancamentos: permitir tipos de pagamento de banco de horas
-- ─────────────────────────────────────────────────────────────────────────────
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'
    ));

-- +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'
    ));

ALTER TABLE banco_horas
    DROP COLUMN IF EXISTS lancamento_id,
    DROP COLUMN IF EXISTS mes_pagamento,
    DROP COLUMN IF EXISTS cancelado;

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'));
-- +goose StatementEnd
