feat(fin): agrega las claves 628, 629 y 630 a c_RegimenFiscal
El catálogo sat.tax_regimes tenía 19 claves: las vigentes hasta 2022. Faltaban las tres que el SAT publicó con vigencia 01-01-2024, así que un receptor en esos regímenes no se podía representar y el timbrado habría quedado con clave incorrecta. - 628 Hidrocarburos (moral) - 629 De los Regímenes Fiscales Preferentes y de las Empresas Multinacionales (física) - 630 Enajenación de acciones en bolsa de valores (física) La migración reusa sync_catalogs (upsert idempotente). El downgrade desactiva las claves en vez de borrarlas: crm.accounts y fin.issuer_settings las referencian por FK y un CFDI ya timbrado debe seguir siendo legible. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,49 @@
|
||||
"""Claves de c_RegimenFiscal con vigencia 2024: 628, 629 y 630.
|
||||
|
||||
El catálogo se había sembrado con las 19 claves vigentes hasta 2022 y quedaron fuera las
|
||||
tres que el SAT publicó con vigencia a partir del 01-01-2024 (628 Hidrocarburos, 629
|
||||
Regímenes Fiscales Preferentes y Empresas Multinacionales, 630 Enajenación de acciones en
|
||||
bolsa de valores). Sin ellas, el select de régimen del receptor no puede representar a un
|
||||
contribuyente en esos regímenes y el timbrado quedaría con una clave incorrecta.
|
||||
|
||||
``sync_catalogs`` es idempotente y hace upsert: inserta las tres claves nuevas y refresca
|
||||
descripción y banderas de las que ya existen, sin tocar el resto de los catálogos.
|
||||
|
||||
No se agrega la clave 609 (Consolidación): su vigencia terminó el 31-12-2019 y el catálogo
|
||||
solo lleva claves vigentes.
|
||||
|
||||
Revision ID: k6l7m8n9o0p1
|
||||
Revises: j5k6l7m8n9o0
|
||||
Create Date: 2026-08-11 00:00:00.000000
|
||||
|
||||
"""
|
||||
from typing import Sequence, Union
|
||||
|
||||
import sqlalchemy as sa
|
||||
from alembic import op
|
||||
|
||||
from api.v1.modules.fin.catalogs.seed_data import sync_catalogs
|
||||
|
||||
revision: str = "k6l7m8n9o0p1"
|
||||
down_revision: Union[str, None] = "j5k6l7m8n9o0"
|
||||
branch_labels: Union[str, Sequence[str], None] = None
|
||||
depends_on: Union[str, Sequence[str], None] = None
|
||||
|
||||
_NUEVAS = ("628", "629", "630")
|
||||
|
||||
|
||||
def upgrade() -> None:
|
||||
sync_catalogs(op.get_bind())
|
||||
|
||||
|
||||
def downgrade() -> None:
|
||||
# No se borran las filas: ``crm.accounts.tax_regime_id`` y
|
||||
# ``fin.issuer_settings.tax_regime_id`` las referencian por FK, y un CFDI ya timbrado
|
||||
# con una de estas claves debe seguir siendo legible. Se desactivan, que es el mismo
|
||||
# criterio que usa el catálogo para una clave retirada por el SAT.
|
||||
op.execute(
|
||||
sa.text(
|
||||
"UPDATE sat.tax_regimes SET is_active = false, updated_at = now() "
|
||||
"WHERE code IN :codes"
|
||||
).bindparams(sa.bindparam("codes", value=_NUEVAS, expanding=True))
|
||||
)
|
||||
@@ -86,6 +86,10 @@ TAX_REGIMES: list[dict] = [
|
||||
_regime("624", "Coordinados", False, True),
|
||||
_regime("625", "Régimen de las Actividades Empresariales con ingresos a través de Plataformas Tecnológicas", True, False),
|
||||
_regime("626", "Régimen Simplificado de Confianza", True, True),
|
||||
# Claves publicadas por el SAT con vigencia a partir del 01-01-2024.
|
||||
_regime("628", "Hidrocarburos", False, True),
|
||||
_regime("629", "De los Regímenes Fiscales Preferentes y de las Empresas Multinacionales", True, False),
|
||||
_regime("630", "Enajenación de acciones en bolsa de valores", True, False),
|
||||
]
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user