"""centro_de_custo.produtivo: centro produtivo (custo) × não produtivo (despesa)

Revision ID: a3c5e7b9d1f2
Revises: f2a4c6e8b0d1
Create Date: 2026-10-30 15:00:00.000000

Só a ociosidade dos elementos de centros produtivos entra no custo dos produtos. Todos os centros existentes ficam produtivos
(o padrão); marque os de despesa (Administrativo, Comercial…) em Cadastros → Centros de Custo. Só roda nos schemas de
Planejamento (ver f1a9c3d7e284).
"""
from typing import Sequence, Union

import sqlalchemy as sa
from alembic import op


# revision identifiers, used by Alembic.
revision: str = 'a3c5e7b9d1f2'
down_revision: Union[str, None] = 'f2a4c6e8b0d1'
branch_labels: Union[str, Sequence[str], None] = None
depends_on: Union[str, Sequence[str], None] = None


def _no_schema_comum() -> bool:
    contexto = op.get_context()
    return contexto.dialect.name == 'postgresql' and contexto.version_table_schema is None


def upgrade() -> None:
    if _no_schema_comum():
        return
    op.add_column('centro_de_custo', sa.Column('produtivo', sa.Boolean(), nullable=False, server_default=sa.true()))


def downgrade() -> None:
    if _no_schema_comum():
        return
    op.drop_column('centro_de_custo', 'produtivo')
