"""Quanto valem as quotas que a fonte não atribui a ninguém.

Sabíamos **quantas** quotas órfãs um acto tinha (`parse_quota_orphans`) e usámos
isso para o desqualificar como fotografia actual. Não sabíamos **quanto valem**,
e é isso que faz a diferença entre uma nota de rodapé e a estrutura toda.

A GÁLIA (503297321) mostrava cinco sócios com 20% cada. O acto lista nove quotas:
cinco de 1.000 € com titular e quatro anónimas que somam 750.000 € num capital de
755.000 €. Os 20% saíam de dividir cada quota pela soma das que tinham nome —
como se as outras não existissem. A percentagem verdadeira de cada um é 0,13%.

Com o valor das órfãs guardado, a percentagem passa a ser calculada sobre o
capital do acto e a parte não identificada aparece como uma linha própria, em vez
de desaparecer e inflacionar todas as outras.
"""
from alembic import op

revision = "0028"
down_revision = "0027"
branch_labels = None
depends_on = None


def upgrade() -> None:
    op.execute(
        "ALTER TABLE registry_acts ADD COLUMN parse_quota_orphan_total NUMERIC(18,2)"
    )
    # Ao nível da entidade para a ficha não ter de ir ao acto: é o valor que a
    # cap table actual **não** explica, e tem de ser tão visível como o resto.
    op.execute(
        "ALTER TABLE registry_entities ADD COLUMN captable_unidentified NUMERIC(18,2)"
    )
    # A base sobre a qual as percentagens actuais foram calculadas. Sem ela não se
    # distingue "somam 100% porque é o capital todo" de "somam 100% porque só
    # contámos o que tinha nome".
    op.execute(
        "ALTER TABLE registry_entities ADD COLUMN captable_base NUMERIC(18,2)"
    )


def downgrade() -> None:
    op.execute("ALTER TABLE registry_entities DROP COLUMN IF EXISTS captable_base")
    op.execute(
        "ALTER TABLE registry_entities DROP COLUMN IF EXISTS captable_unidentified"
    )
    op.execute(
        "ALTER TABLE registry_acts DROP COLUMN IF EXISTS parse_quota_orphan_total"
    )
