feature/digitalizacion-api
This commit is contained in:
@@ -1,19 +1,73 @@
|
||||
"""create expediente_archivo table
|
||||
"""create expediente_archivo table and seed document types digitization catalog
|
||||
|
||||
Revision ID: f1a2b3c4d5e6
|
||||
Revises: d4e5f6a7b8c9
|
||||
Create Date: 2026-04-17 12:00:00.000000
|
||||
Revises: f7a8b9c0d1e2
|
||||
Create Date: 2026-04-20 00:00:00.000000
|
||||
"""
|
||||
|
||||
from alembic import op
|
||||
import sqlalchemy as sa
|
||||
|
||||
|
||||
# revision identifiers, used by Alembic.
|
||||
revision = "f1a2b3c4d5e6"
|
||||
down_revision = "f7a8b9c0d1e2"
|
||||
branch_labels = None
|
||||
depends_on = None
|
||||
|
||||
|
||||
# ---------------------------------------------------------------------------
|
||||
# Seed data
|
||||
# ---------------------------------------------------------------------------
|
||||
|
||||
DOCUMENT_TYPES = [
|
||||
("168", "Calca o fotografía digital del NIV del vehículo."),
|
||||
("169", "Aviso."),
|
||||
("170", "Factura."),
|
||||
("171", "Documento con el que se acredite la propiedad de la mercancía."),
|
||||
("172", "Contratos."),
|
||||
("176", "Documentación relacionada con la garantía otorgada en términos de los artículos 84."),
|
||||
("177", "Identificación Oficial."),
|
||||
("179", "Comprobante de domicilio."),
|
||||
("184", "Documento que ampara el avaluó de las mercancías."),
|
||||
("185", "Documentos de adjudicación judicial de las mercancías."),
|
||||
("187", "Solicitud de retiro de mercancías que causaron abandono."),
|
||||
("189", "Actas."),
|
||||
("192", "Escritos."),
|
||||
("420", "Certificado de peso o volumen."),
|
||||
("421", "Comprobante de la importación temporal de la embarcación debidamente formalizado."),
|
||||
("422", "Comprobante expedido por donataria."),
|
||||
("423", "Consulta en la que conste que el vehículo no se encuentra reportado como robado,"),
|
||||
("424", "Clave Unica del Registro de Población."),
|
||||
("425", "Declaración de internación o extracción de cantidades en efectivo y/o documentos p"),
|
||||
("426", "Declaración de operaciones que no confieren origen en países no parte de acuerdo"),
|
||||
("427", "Declaración en la que se señalen los motivos por los que efectúa la devolución de m"),
|
||||
("428", "Documentación con información que permita la identificación, análisis y control en tér"),
|
||||
("429", "Documentación que acredite que acepta y subsana la irregularidad."),
|
||||
("430", "Documentación que ampare la importación temporal del vehículo de que se trate."),
|
||||
("431", "Documentación que compruebe que la adquisición de las mercancías fue efectuada "),
|
||||
("433", "Documento con base en el cual se determine la procedencia y el origen de las merca"),
|
||||
("434", "Documento con que se acredite el reintegro del IVA, en caso de que el contribuyente "),
|
||||
("435", "Documentos previstos en la regla 8.7., fracciones I a IV de la Resolución del TLCAN."),
|
||||
("436", "El Documento que compruebe el cumplimiento de las regulaciones y restricciones no "),
|
||||
("438", "Guía aérea, conocimiento de embarque o carta de porte."),
|
||||
("439", "Hoja con los datos de la matrícula y nombre del barco, el lugar donde se localiza y se "),
|
||||
("440", "Manifiesto de carga."),
|
||||
("441", "Oficios emitidos por autoridad."),
|
||||
("442", "Pedimentos."),
|
||||
("443", "Programa IMMEX."),
|
||||
("444", "Relación de candados."),
|
||||
("445", "Relación de certificados de origen."),
|
||||
]
|
||||
|
||||
|
||||
# ---------------------------------------------------------------------------
|
||||
# Upgrade / Downgrade
|
||||
# ---------------------------------------------------------------------------
|
||||
|
||||
|
||||
def upgrade() -> None:
|
||||
# -- Table -----------------------------------------------------------------
|
||||
op.create_table(
|
||||
"expediente_archivo",
|
||||
sa.Column("id", sa.Integer(), autoincrement=True, nullable=False),
|
||||
@@ -30,6 +84,10 @@ def upgrade() -> None:
|
||||
sa.Column("task_id", sa.String(length=255), nullable=True),
|
||||
sa.Column("external_task_id", sa.String(length=255), nullable=True),
|
||||
sa.Column("acuse_pdf_path", sa.String(length=500), nullable=True),
|
||||
sa.Column("envio_xml_path", sa.String(length=500), nullable=True),
|
||||
sa.Column("respuesta_xml_path", sa.String(length=500), nullable=True),
|
||||
sa.Column("consulta_envio_xml_path", sa.String(length=500), nullable=True),
|
||||
sa.Column("consulta_respuesta_xml_path", sa.String(length=500), nullable=True),
|
||||
sa.Column("tenant_id", sa.Integer(), nullable=False),
|
||||
sa.Column("company_id", sa.Integer(), nullable=False),
|
||||
sa.Column("created_at", sa.DateTime(), server_default=sa.text("now()"), nullable=False),
|
||||
@@ -69,10 +127,67 @@ def upgrade() -> None:
|
||||
schema="a76",
|
||||
)
|
||||
|
||||
# -- Seeds -----------------------------------------------------------------
|
||||
bind = op.get_bind()
|
||||
companies = (
|
||||
bind.execute(sa.text("SELECT id, tenant_id FROM a76.company ORDER BY id"))
|
||||
.mappings()
|
||||
.all()
|
||||
)
|
||||
for company in companies:
|
||||
for code, description in DOCUMENT_TYPES:
|
||||
bind.execute(
|
||||
sa.text(
|
||||
"""
|
||||
INSERT INTO a76.document_types_digitization
|
||||
(tenant_id, company_id, code, description, active)
|
||||
VALUES
|
||||
(:tenant_id, :company_id, :code, :description, TRUE)
|
||||
ON CONFLICT ON CONSTRAINT document_types_digitization_code_key
|
||||
DO NOTHING
|
||||
"""
|
||||
),
|
||||
{
|
||||
"tenant_id": company["tenant_id"],
|
||||
"company_id": company["id"],
|
||||
"code": code,
|
||||
"description": description,
|
||||
},
|
||||
)
|
||||
|
||||
|
||||
def downgrade() -> None:
|
||||
op.drop_index(op.f("ix_a76_expediente_archivo_external_task_id"), table_name="expediente_archivo", schema="a76")
|
||||
op.drop_index(op.f("ix_a76_expediente_archivo_task_id"), table_name="expediente_archivo", schema="a76")
|
||||
op.drop_index(op.f("ix_a76_expediente_archivo_tenant_id"), table_name="expediente_archivo", schema="a76")
|
||||
op.drop_index(op.f("ix_a76_expediente_archivo_company_id"), table_name="expediente_archivo", schema="a76")
|
||||
# -- Remove seeds ----------------------------------------------------------
|
||||
bind = op.get_bind()
|
||||
codes = [code for code, _ in DOCUMENT_TYPES]
|
||||
placeholders = ", ".join(f":c{i}" for i in range(len(codes)))
|
||||
params = {f"c{i}": code for i, code in enumerate(codes)}
|
||||
bind.execute(
|
||||
sa.text(
|
||||
f"DELETE FROM a76.document_types_digitization WHERE code IN ({placeholders})"
|
||||
),
|
||||
params,
|
||||
)
|
||||
|
||||
# -- Drop table ------------------------------------------------------------
|
||||
op.drop_index(
|
||||
op.f("ix_a76_expediente_archivo_external_task_id"),
|
||||
table_name="expediente_archivo",
|
||||
schema="a76",
|
||||
)
|
||||
op.drop_index(
|
||||
op.f("ix_a76_expediente_archivo_task_id"),
|
||||
table_name="expediente_archivo",
|
||||
schema="a76",
|
||||
)
|
||||
op.drop_index(
|
||||
op.f("ix_a76_expediente_archivo_tenant_id"),
|
||||
table_name="expediente_archivo",
|
||||
schema="a76",
|
||||
)
|
||||
op.drop_index(
|
||||
op.f("ix_a76_expediente_archivo_company_id"),
|
||||
table_name="expediente_archivo",
|
||||
schema="a76",
|
||||
)
|
||||
op.drop_table("expediente_archivo", schema="a76")
|
||||
|
||||
Reference in New Issue
Block a user