diff --git a/backend/alembic/versions/f4258dfb6651_create_initial_tables.py b/backend/alembic/versions/531bf8cdae06_create_material_types_table.py similarity index 88% rename from backend/alembic/versions/f4258dfb6651_create_initial_tables.py rename to backend/alembic/versions/531bf8cdae06_create_material_types_table.py index 34e3b941..91c608bf 100644 --- a/backend/alembic/versions/f4258dfb6651_create_initial_tables.py +++ b/backend/alembic/versions/531bf8cdae06_create_material_types_table.py @@ -1,8 +1,8 @@ -"""create initial tables +"""create material_types table -Revision ID: f4258dfb6651 +Revision ID: 531bf8cdae06 Revises: -Create Date: 2025-10-19 05:10:20.031133 +Create Date: 2025-10-19 18:23:39.613953 """ from typing import Sequence, Union @@ -12,7 +12,7 @@ import sqlalchemy as sa # revision identifiers, used by Alembic. -revision: str = 'f4258dfb6651' +revision: str = '531bf8cdae06' down_revision: Union[str, Sequence[str], None] = None branch_labels: Union[str, Sequence[str], None] = None depends_on: Union[str, Sequence[str], None] = None @@ -57,9 +57,16 @@ def upgrade() -> None: schema='public' ) op.create_index('ak_country_ame', 'countries', ['ame_key'], unique=True, schema='public') + op.create_table('currency_types', + sa.Column('code', sa.String(length=3), nullable=False), + sa.Column('currency_name', sa.String(length=15), nullable=False), + sa.Column('country_description', sa.String(length=50), nullable=False), + sa.PrimaryKeyConstraint('code', name='currency_types_pkey'), + schema='public' + ) op.create_table('customs_sections', sa.Column('customs_code', sa.String(length=3), nullable=False), - sa.Column('section_name', sa.String(length=50), nullable=False), + sa.Column('section_name', sa.String(length=255), nullable=False), sa.PrimaryKeyConstraint('customs_code', name='customs_code_pkey'), schema='public' ) @@ -77,9 +84,17 @@ def upgrade() -> None: sa.PrimaryKeyConstraint('code', name='incoterms_pkey'), schema='public' ) + op.create_table('invoice_types', + sa.Column('key', sa.String(length=5), nullable=False), + sa.Column('description', sa.String(length=50), nullable=False), + sa.Column('note', sa.String(length=500), nullable=False), + sa.Column('type', sa.String(length=15), nullable=False), + sa.PrimaryKeyConstraint('key', name='invoice_types_pkey'), + schema='public' + ) op.create_table('material_types', sa.Column('key', sa.String(length=10), nullable=False), - sa.Column('origin_type', sa.String(length=15), nullable=False), + sa.Column('type', sa.String(length=15), nullable=False), sa.Column('description', sa.String(length=256), nullable=False), sa.PrimaryKeyConstraint('key', name='material_types_pkey'), schema='public' @@ -123,6 +138,12 @@ def upgrade() -> None: sa.PrimaryKeyConstraint('key', name='transport_modes_pkey'), schema='public' ) + op.create_table('transport_types', + sa.Column('transport_code', sa.String(length=2), nullable=False), + sa.Column('description', sa.String(length=100), nullable=False), + sa.PrimaryKeyConstraint('transport_code', name='transport_types_pkey'), + schema='public' + ) op.create_table('valuation_methods', sa.Column('key', sa.String(length=2), nullable=False), sa.Column('description', sa.String(length=200), nullable=False), @@ -173,7 +194,7 @@ def upgrade() -> None: sa.Column('pedimento_code', sa.String(length=3), nullable=False), sa.Column('regimen_code', sa.String(length=3), nullable=False), sa.Column('type_code', sa.String(length=1), nullable=True), - sa.ForeignKeyConstraint(['pedimento_code'], ['public.pedimento_codes.code'], name='fk_claveped'), + sa.ForeignKeyConstraint(['pedimento_code'], ['public.pedimento_codes.code'], name='fk_codeped'), sa.ForeignKeyConstraint(['regimen_code'], ['public.pedimento_regimens.code'], name='fk_regimenped'), sa.PrimaryKeyConstraint('id', name='clave_pedimento_regimens_pkey'), schema='public' @@ -192,6 +213,7 @@ def downgrade() -> None: op.drop_index(op.f('ix_a76_license_usage_id'), table_name='license_usage', schema='a76') op.drop_table('license_usage', schema='a76') op.drop_table('valuation_methods', schema='public') + op.drop_table('transport_types', schema='public') op.drop_table('transport_modes', schema='public') op.drop_table('states', schema='public') op.drop_table('sectors', schema='public') @@ -199,9 +221,11 @@ def downgrade() -> None: op.drop_table('pedimento_codes', schema='public') op.drop_table('payment_methods', schema='public') op.drop_table('material_types', schema='public') + op.drop_table('invoice_types', schema='public') op.drop_table('incoterms', schema='public') op.drop_table('customs_warehouses', schema='public') op.drop_table('customs_sections', schema='public') + op.drop_table('currency_types', schema='public') op.drop_index('ak_country_ame', table_name='countries', schema='public') op.drop_table('countries', schema='public') op.drop_table('containers', schema='public') diff --git a/backend/alembic/versions/7937209f9718_seed_initial_data.py b/backend/alembic/versions/7937209f9718_seed_initial_data.py new file mode 100644 index 00000000..0d5cd591 --- /dev/null +++ b/backend/alembic/versions/7937209f9718_seed_initial_data.py @@ -0,0 +1,169 @@ +"""seed_initial_data + +Revision ID: 7937209f9718 +Revises: 531bf8cdae06 +Create Date: 2025-10-19 18:23:55.258800 + +""" +from typing import Sequence, Union + +from alembic import op +import sqlalchemy as sa + +from api.v1.modules.public.reference_data.pedimento_codes.seed import seed as pedimento_codes_seed +from api.v1.modules.public.reference_data.pedimento_regimens.seed import seed as pedimento_regimens_seed +from api.v1.modules.public.reference_data.code_pedimento_regimens.seed import seed as code_pedimento_regimens_seed +from api.v1.modules.public.reference_data.containers.seed import seed as container_types_seed +from api.v1.modules.public.reference_data.countries.seed import seed as countries_seed +from api.v1.modules.public.reference_data.currency_types.seed import seed as currency_types_seed +from api.v1.modules.public.reference_data.customs_sections.seed import seed as customs_sections_seed +from api.v1.modules.public.reference_data.customs_warehouses.seed import seed as customs_warehouses_seed +from api.v1.modules.public.reference_data.incoterms.seed import seed as incoterms_seed +from api.v1.modules.public.reference_data.invoice_types.seed import seed as invoice_types_seed +from api.v1.modules.public.reference_data.material_types.seed import seed as material_types_seed +from api.v1.modules.public.reference_data.payment_methods.seed import seed as payment_methods_seed +from api.v1.modules.public.reference_data.sectors.seed import seed as sectors_seed +from api.v1.modules.public.reference_data.transport_modes.seed import seed as transport_modes_seed +from api.v1.modules.public.reference_data.transport_types.seed import seed as transport_types_seed +from api.v1.modules.public.reference_data.valuation_methods.seed import seed as valuation_methods_seed + +# revision identifiers, used by Alembic. +revision: str = '7937209f9718' +down_revision: Union[str, Sequence[str], None] = '531bf8cdae06' +branch_labels: Union[str, Sequence[str], None] = None +depends_on: Union[str, Sequence[str], None] = '531bf8cdae06' + +def upgrade() -> None: + """Upgrade schema.""" + #Seeds + values_pc = ", ".join([f"('{code}', '{desc.replace(chr(39), chr(39)*2)}')" for code, desc in pedimento_codes_seed]) + op.execute(f""" + INSERT INTO pedimento_codes (code, description) VALUES + {values_pc} + ON CONFLICT (code) DO NOTHING; + """) + + values_pr = ", ".join([f"('{code}', '{desc.replace(chr(39), chr(39)*2)}')" for code, desc in pedimento_regimens_seed]) + op.execute(f""" + INSERT INTO public.pedimento_regimens (code, description) VALUES + {values_pr} + ON CONFLICT (code) DO NOTHING; + """) + + values_cpr = ", ".join([f"('{ped_code}', '{reg_code}', '{type_code}')" for ped_code, reg_code, type_code in code_pedimento_regimens_seed]) + op.execute(f""" + INSERT INTO public.code_pedimento_regimens (pedimento_code, regimen_code, type_code) VALUES + {values_cpr} + """) + + values_c = ", ".join([f"('{key}', '{desc.replace(chr(39), chr(39)*2)}')" for key, desc in container_types_seed]) + op.execute(f""" + INSERT INTO public.containers (key, description) VALUES + {values_c} + ON CONFLICT (key) DO NOTHING; + """) + + values_country = ", ".join([f"('{m3_key}', '{mex_key}', '{ame_key}', '{desc_es.replace(chr(39), chr(39)*2)}', '{desc_en.replace(chr(39), chr(39)*2)}')" for m3_key, mex_key, ame_key, desc_es, desc_en in countries_seed]) + op.execute(f""" + INSERT INTO public.countries (m3_key, mex_key, ame_key, description_es, description_en) VALUES + {values_country} + ON CONFLICT (m3_key) DO NOTHING; + """) + + values_ct = ", ".join([f"('{code}', '{currency_name.replace(chr(39), chr(39)*2)}', '{country_desc.replace(chr(39), chr(39)*2)}')" for code, currency_name, country_desc in currency_types_seed]) + op.execute(f""" + INSERT INTO public.currency_types (code, currency_name, country_description) VALUES + {values_ct} + ON CONFLICT (code) DO NOTHING; + """) + + values_cs = ", ".join([f"('{code}', '{name.replace(chr(39), chr(39)*2)}')" for code, name in customs_sections_seed]) + op.execute(f""" + INSERT INTO public.customs_sections (customs_code, section_name) VALUES + {values_cs} + ON CONFLICT (customs_code) DO NOTHING; + """) + + values_cw = ", ".join([f"('{key}', '{customs.replace(chr(39), chr(39)*2)}', '{fiscalized_warehouse.replace(chr(39), chr(39)*2)}')" for key, customs, fiscalized_warehouse in customs_warehouses_seed]) + op.execute(f""" + INSERT INTO public.customs_warehouses (key, customs, fiscalized_warehouse) + VALUES + {values_cw} + ON CONFLICT (key, customs) DO NOTHING; + """) + + values_incoterms = ", ".join([f"('{code}', '{desc_es.replace(chr(39), chr(39)*2)}', '{desc_en.replace(chr(39), chr(39)*2)}')" for code, desc_es, desc_en in incoterms_seed]) + op.execute(f""" + INSERT INTO public.incoterms (code, description_es, description_en) VALUES + {values_incoterms} + ON CONFLICT (code) DO NOTHING; + """) + + values_it = ", ".join([f"('{key}', '{desc.replace(chr(39), chr(39)*2)}', '{note.replace(chr(39), chr(39)*2)}', '{type.replace(chr(39), chr(39)*2)}')" for key, desc, note, type in invoice_types_seed]) + op.execute(f""" + INSERT INTO public.invoice_types (key, description, note, type) VALUES + {values_it} + ON CONFLICT (key) DO NOTHING; + """) + + values_mt = ", ".join([f"('{key}', '{desc.replace(chr(39), chr(39)*2)}', '{category.replace(chr(39), chr(39)*2)}')" for key, desc, category in material_types_seed]) + op.execute(f""" + INSERT INTO public.material_types (key, description, type) VALUES + {values_mt} + ON CONFLICT (key) DO NOTHING; + """) + + values_pm = ", ".join([f"('{key}', '{desc.replace(chr(39), chr(39)*2)}')" for key, desc in payment_methods_seed]) + op.execute(f""" + INSERT INTO public.payment_methods (key, description) VALUES + {values_pm} + ON CONFLICT (key) DO NOTHING; + """) + + values_sectors = ", ".join([f"('{key}', '{desc.replace(chr(39), chr(39)*2)}', '{authorized}')" for key, desc, authorized in sectors_seed]) + op.execute(f""" + INSERT INTO public.sectors (key, description, authorized) VALUES + {values_sectors} + ON CONFLICT (key) DO NOTHING; + """) + + values_tm = ", ".join([f"('{key}', '{name.replace(chr(39), chr(39)*2)}')" for key, name in transport_modes_seed]) + op.execute(f""" + INSERT INTO public.transport_modes (key, name) VALUES + {values_tm} + ON CONFLICT (key) DO NOTHING; + """) + + values_tt = ", ".join([f"('{code}', '{desc.replace(chr(39), chr(39)*2)}')" for code, desc in transport_types_seed]) + op.execute(f""" + INSERT INTO public.transport_types (transport_code, description) VALUES + {values_tt} + ON CONFLICT (transport_code) DO NOTHING; + """) + + values_vm = ", ".join([f"('{key}', '{desc.replace(chr(39), chr(39)*2)}')" for key, desc in valuation_methods_seed]) + op.execute(f""" + INSERT INTO public.valuation_methods (key, description) VALUES + {values_vm} + ON CONFLICT (key) DO NOTHING; + """) + +def downgrade() -> None: + """Downgrade schema.""" + + op.execute("DELETE FROM public.valuation_methods;") + op.execute("DELETE FROM public.transport_types;") + op.execute("DELETE FROM public.transport_modes;") + op.execute("DELETE FROM public.sectors;") + op.execute("DELETE FROM public.payment_methods;") + op.execute("DELETE FROM public.material_types;") + op.execute("DELETE FROM public.invoice_types;") + op.execute("DELETE FROM public.incoterms;") + op.execute("DELETE FROM public.customs_warehouses;") + op.execute("DELETE FROM public.customs_sections;") + op.execute("DELETE FROM public.currency_types;") + op.execute("DELETE FROM public.countries;") + op.execute("DELETE FROM public.containers;") + op.execute("DELETE FROM public.code_pedimento_regimens;") + op.execute("DELETE FROM public.pedimento_regimens;") + op.execute("DELETE FROM public.pedimento_codes;") diff --git a/backend/api/v1/modules/public/__init__.py b/backend/api/v1/modules/public/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/backend/api/v1/modules/public/code_pedimento_regimens/models.py b/backend/api/v1/modules/public/reference_data/code_pedimento_regimens/models.py similarity index 97% rename from backend/api/v1/modules/public/code_pedimento_regimens/models.py rename to backend/api/v1/modules/public/reference_data/code_pedimento_regimens/models.py index a0924f0c..6e936f97 100644 --- a/backend/api/v1/modules/public/code_pedimento_regimens/models.py +++ b/backend/api/v1/modules/public/reference_data/code_pedimento_regimens/models.py @@ -6,7 +6,7 @@ from core.database import Base class CodePedimentoRegimen(Base): __tablename__ = "code_pedimento_regimens" #GClavePedRegimen __table_args__ = ( - ForeignKeyConstraint(['pedimento_code'], ['public.pedimento_codes.code'], name='fk_claveped'), + ForeignKeyConstraint(['pedimento_code'], ['public.pedimento_codes.code'], name='fk_codeped'), ForeignKeyConstraint(['regimen_code'], ['public.pedimento_regimens.code'], name='fk_regimenped'), PrimaryKeyConstraint('id', name='clave_pedimento_regimens_pkey'), {"schema": "public"} diff --git a/backend/api/v1/modules/public/reference_data/code_pedimento_regimens/seed.py b/backend/api/v1/modules/public/reference_data/code_pedimento_regimens/seed.py new file mode 100644 index 00000000..f71a7600 --- /dev/null +++ b/backend/api/v1/modules/public/reference_data/code_pedimento_regimens/seed.py @@ -0,0 +1,124 @@ +# TODO: Revisar las claves de pedimento que no estan en la tabla de pedimento_codes +seed = [ + ("A4", "DFI", "E"), + ("A4", "DFI", "I"), + ("A5", "DFI", "E"), + ("A5", "DFI", "I"), + ("F2", "DFI", "I"), + ("F8", "DFI", "E"), + ("F8", "DFI", "I"), + ("F9", "DFI", "E"), + ("F9", "DFI", "I"), + ("V3", "DFI", "E"), + ("V3", "DFI", "I"), + ("V8", "DFI", "I"), + ("BM", "ETE", "E"), + ("BO", "ETE", "E"), + ("R1", "ETE", "E"), + ("AJ", "ETR", "E"), + ("BA", "ETR", "E"), + ("BF", "ETR", "E"), + ("BR", "ETR", "E"), + ("R1", "ETR", "E"), + ("V4", "ETR", "E"), + ("A1", "EXD", "E"), + ("BB", "EXD", "E"), + ("CT", "EXD", "E"), + ("D1", "EXD", "E"), + ("F4", "EXD", "E"), + ("G1", "EXD", "E"), + ("G6", "EXD", "E"), + ("G7", "EXD", "E"), + ("GC", "EXD", "E"), + ("H1", "EXD", "E"), + ("H8", "EXD", "E"), + ("I1", "EXD", "E"), + #("J1", "EXD", "E"), + #("J2", "EXD", "E"), + ("K1", "EXD", "E"), + ("K2", "EXD", "E"), + ("K3", "EXD", "E"), + ("L1", "EXD", "E"), + ("R1", "EXD", "E"), + ("RT", "EXD", "E"), + ("S2", "EXD", "E"), + ("T1", "EXD", "E"), + ("V1", "EXD", "E"), + ("V2", "EXD", "E"), + ("V5", "EXD", "E"), + ("V6", "EXD", "E"), + ("V7", "EXD", "E"), + ("V8", "EXD", "E"), + ("V9", "EXD", "E"), + ("A1", "IMD", "I"), + ("A3", "IMD", "I"), + ("C1", "IMD", "I"), + #("C2", "IMD", "I"), + ("C3", "IMD", "I"), + ("D1", "IMD", "I"), + ("F3", "IMD", "I"), + ("F4", "IMD", "I"), + ("F5", "IMD", "I"), + ("G1", "IMD", "I"), + ("G2", "IMD", "I"), + ("G9", "IMD", "E"), + ("GC", "IMD", "I"), + ("H1", "IMD", "I"), + ("H8", "IMD", "I"), + ("I1", "IMD", "I"), + ("K1", "IMD", "I"), + ("L1", "IMD", "I"), + ("P1", "IMD", "I"), + ("R1", "IMD", "I"), + ("S2", "IMD", "I"), + ("T1", "IMD", "I"), + ("V2", "IMD", "I"), + ("V5", "IMD", "I"), + ("V6", "IMD", "I"), + ("V9", "IMD", "I"), + ("VF", "IMD", "I"), + ("VU", "IMD", "I"), + #("A2", "ITE", "I"), + #("A8", "ITE", "I"), + #("AA", "ITE", "I"), + ("AF", "ITE", "I"), + ("E1", "ITE", "I"), + ("E3", "ITE", "I"), + #("H3", "ITE", "I"), + ("IN", "ITE", "I"), + ("R1", "ITE", "I"), + ("V1", "ITE", "I"), + ("A6", "ITR", "I"), + #("A7", "ITR", "I"), + #("A9", "ITR", "I"), + ("AD", "ITR", "I"), + ("AF", "ITR", "I"), + ("AJ", "ITR", "I"), + ("BA", "ITR", "I"), + ("BC", "ITR", "I"), + ("BD", "ITR", "I"), + ("BE", "ITR", "I"), + ("BH", "ITR", "I"), + ("BI", "ITR", "I"), + ("BO", "ITR", "I"), + ("BP", "ITR", "I"), + ("E2", "ITR", "I"), + ("E4", "ITR", "I"), + #("H3", "ITR", "I"), + ("R1", "ITR", "I"), + ("V1", "ITR", "I"), + ("V4", "ITR", "I"), + ("V7", "ITR", "I"), + ("J3", "RFE", "E"), + ("M1", "RFE", "I"), + ("M2", "RFE", "I"), + ("G8", "RFS", "E"), + ("J4", "RFS", "E"), + ("M3", "RFS", "I"), + ("M4", "RFS", "I"), + ("M5", "RFS", "I"), + ("T3", "TRA", "I"), + ("T6", "TRA", "E"), + ("T7", "TRA", "I"), + ("T9", "TRA", "I") +] \ No newline at end of file diff --git a/backend/api/v1/modules/public/containers/models.py b/backend/api/v1/modules/public/reference_data/containers/models.py similarity index 100% rename from backend/api/v1/modules/public/containers/models.py rename to backend/api/v1/modules/public/reference_data/containers/models.py diff --git a/backend/api/v1/modules/public/reference_data/containers/seed.py b/backend/api/v1/modules/public/reference_data/containers/seed.py new file mode 100644 index 00000000..22e85145 --- /dev/null +++ b/backend/api/v1/modules/public/reference_data/containers/seed.py @@ -0,0 +1,71 @@ +seed = [ + ("1", "CONTENEDOR ESTANDAR 20' (STANDARD CONTAINER 20')."), + ("2", "CONTENEDOR ESTANDAR 40' (STANDARD CONTAINER 40')."), + ("3", "CONTENEDOR ESTANDAR DE CUBO ALTO 40' (HIGH CUBE STANDARD CONTAINER 40')."), + ("4", "CONTENEDOR TAPA DURA 20’ (HARDTOP CONTAINER 20')."), + ("5", "CONTENEDOR TAPA DURA 40’ (HARDTOP CONTAINER 40')."), + ("6", "CONTENEDOR TAPA ABIERTA 20’ (OPEN TOP CONTAINER 20')."), + ("7", "CONTENEDOR TAPA ABIERTA 40' (OPEN TOP CONTAINER 40')."), + ("8", "FLAT 20' (FLAT 20')."), + ("9", "FLAT 40' (FLAT 40')."), + ("10", "PLATAFORMA 20' (PLATFORM 20')."), + ("11", "PLATAFORMA 40' (PLATFORM 40')."), + ("12", "CONTENEDOR VENTILADO 20’ (VENTILATED CONTAINER 20')."), + ("13", "CONTENEDOR TERMICO 20' (INSULATED CONTAINER 20')."), + ("14", "CONTENEDOR TERMICO 40' (INSULATED CONTAINER 40')."), + ("15", "CONTENEDOR REFRIGERANTE 20’ (REFRIGERATED CONTAINER 20')."), + ("16", "CONTENEDOR REFRIGERANTE 40’ (REFRIGERATED CONTAINER 40')."), + ("17", "CONTENEDOR REFRIGERANTE CUBO ALTO 40’ (HIGH CUBE REFRIGERATED CONTAINER 40')."), + ("18", "CONTENEDOR CARGA A GRANEL 20’ (BULK CONTAINER 20')."), + ("19", "CONTENEDOR TIPO TANQUE 20’ (TANK CONTAINER 20')."), + ("20", "CONTENEDOR ESTANDAR 45' (STANDARD CONTAINER 45')."), + ("21", "CONTENEDOR ESTANDAR 48' (STANDARD CONTAINER 48')."), + ("22", "CONTENEDOR ESTANDAR 53' (STANDARD CONTAINER 53')."), + ("23", "CONTENEDOR ESTANDAR 8' (STANDARD CONTAINER 8')."), + ("24", "CONTENEDOR ESTANDAR 10' (STANDARD CONTAINER 10')."), + ("25", "CONTENEDOR ESTANDAR DE CUBO ALTO 45’ (HIGH CUBE STANDARD CONTAINER 45’)."), + ("26", "SEMIRREMOLQUE CON RACKS PARA ENVASES DE BEBIDAS."), + ("27", "SEMIRREMOLQUE CUELLO DE GANZO."), + ("28", "SEMIRREMOLQUE TOLVA CUBIERTO."), + ("29", "SEMIRREMOLQUE TOLVA (ABIERTO)."), + ("30", "AUTO-TOLVA CUBIERTO/DESCARGA NEUMATICA."), + ("31", "SEMIRREMOLQUE CHASIS."), + ("32", "SEMIRREMOLQUE AUTOCARGABLE (CON SISTEMA DE ELEVACION)."), + ("33", "SEMIRREMOLQUE CON TEMPERATURA CONTROLADA."), + ("34", "SEMIRREMOLQUE CORTO TRASERO."), + ("35", "SEMIRREMOLQUE DE CAMA BAJA."), + ("36", "PLATAFORMA DE 28’."), + ("37", "PLATAFORMA DE 45’."), + ("38", "PLATAFORMA DE 48’."), + ("39", "SEMIRREMOLQUE PARA TRANSPORTE DE CABALLOS."), + ("40", "SEMIRREMOLQUE PARA TRANSPORTE DE GANADO."), + ("41", "SEMIRREMOLQUE TANQUE (LIQUIDOS)/SIN CALEFACCION/SIN AISLAR."), + ("42", "SEMIRREOLQUE TANQUE (LIQUIDOS)/CON CALEFACCION/SIN AISLAR."), + ("43", "SEMIRREMOLQUE TANQUE (LIQUIDOS)/SIN CALEFACCION/AISLADO."), + ("44", "SEMIRREMOLQUE TANQUE (LIQUIDOS)/CON CALEFACCION/AISLADO."), + ("45", "SEMIRREMOLQUE TANQUE (GAS)/SIN CALEFACCION/SIN AISLAR."), + ("46", "SEMIRREMOLQUE TANQUE (GAS)/CON CALEFACCION/SIN AISLAR."), + ("47", "SEMIRREMOLQUE TANQUE (GAS)/SIN CALEFACCION/AISLADO."), + ("48", "SEMIRREMOLQUE TANQUE (GAS)/CON CALEFACCION/AISLADO."), + ("49", "SEMIRREMOLQUE TANQUE (QUIMICOS)/SIN CALEFACCION/SIN AISLAR."), + ("50", "SEMIRREMOLQUE TANQUE (QUIMICOS)/CON CALEFACCION/SIN AISLAR."), + ("51", "SEMIRREMOLQUE TANQUE (QUIMICOS)/SIN CALEFACCION/AISLADO."), + ("52", "SEMIRREMOLQUE TANQUE (QUIMICOS)/CON CALEFACCION/AISLADO."), + ("53", "SEMIRREMOLQUE GONDOLA-CERRADA."), + ("54", "SEMIRREMOLQUE GONDOLA-ABIERTA."), + ("55", "SEMIRREMOLQUE TIPO CAJA CERRADA 48’."), + ("56", "SEMIRREMOLQUE TIPO CAJA CERRADA 53’."), + ("57", "SEMIRREMOLQUE TIPO CAJA REFRIGERADA 48’."), + ("58", "SEMIRREMOLQUE TIPO CAJA REFRIGERADA 53’."), + ("59", "DOBLE SEMIRREMOLQUE."), + ("60", "OTROS."), + ("61", "TANQUE 20’."), + ("62", "TANQUE 40’."), + ("63", "CARRO DE FERROCARRIL"), + ("64", "HIGH CUBE 20'"), + ("65", "AUTOMÓVIL"), + ("66", "CAMIÓN UNITARIO DE DOS EJES"), + ("67", "CAMIÓN UNITARIO DE TRES EJES"), + ("68", "VEHÍCULOS CON CAPACIDAD DE CARGA DE HASTA 3.5. TONELADAS"), + ("69", "TRACTOCAMIÓN"), +] \ No newline at end of file diff --git a/backend/api/v1/modules/public/countries/models.py b/backend/api/v1/modules/public/reference_data/countries/models.py similarity index 100% rename from backend/api/v1/modules/public/countries/models.py rename to backend/api/v1/modules/public/reference_data/countries/models.py diff --git a/backend/api/v1/modules/public/reference_data/countries/seed.py b/backend/api/v1/modules/public/reference_data/countries/seed.py new file mode 100644 index 00000000..33fce2d3 --- /dev/null +++ b/backend/api/v1/modules/public/reference_data/countries/seed.py @@ -0,0 +1,245 @@ +seed = [ + ("ABW", "A0", "AW", "Aruba (Territorio Holandes de Ultramar)", "Aruba (Netherlands Territory)"), + ("AFG", "A1", "AF", "Afganistan (Emirato Islamico De)", "Afghanistan (Islamic Emirate of)"), + ("AGO", "A8", "AO", "Angola ( Republica De )", "Angola (People's Republic of )"), + ("AIA", "AI", "AI", "Anguila", "Anguilla"), + ("ALB", "A2", "AL", "Albania ( Republica De)", "Albania (People's Socialist Republic)"), + ("AND", "A7", "AD", "Andorra (Principado De)", "Andorra (Principated of)"), + ("ANT", "B1", "AN", "Antillas Neerlandesas (Terr. Holandes de Ultramar)", "Antilles Netherlands"), + ("ARE", "G6", "AE", "Emiratos Arabes Unidos", "United Arab Emirates"), + ("ARG", "B4", "AR", "Argentina ( Republica )", "Argentina (Republic of)"), + ("ARM", "AM", "AM", "Armenia (Republica De)", "Armenia (Republic of)"), + ("ATG", "A9", "AG", "Antigua Y Barbuda (Com. Britanica de Naciones)", "Antigua & Barbuda (Brithish Community)"), + ("AUS", "B5", "AU", "Australia ( Comunidad De )", "Australia (Community of)"), + ("AUT", "B6", "AT", "Austria ( Republica De )", "Austria (Republic of)"), + ("AZE", "AZ", "AZ", "Azerbaijan (Republica Azerbaijani)", "Azerbaijan"), + ("BDI", "D2", "BI", "Burundi ( Republica De )", "Burundi (Republic of)"), + ("BEL", "C2", "BE", "Belgica ( Reino De )", "Belgium (Kingdom of)"), + ("BEN", "F9", "BJ", "Benin ( Republica De)", "Benin (People's Republic of)"), + ("BFA", "A6", "BF", "Burkina Faso", "Burkina Faso"), + ("BGD", "B9", "BD", "Bangladesh ( Republica Popular De )", "Bangladesh (People's Republic of)"), + ("BGR", "D1", "BG", "Bulgaria ( Republica De )", "Bulgaria (Republic of)"), + ("BHR", "B8", "BH", "Bahrein ( Estado De )", "Bahrain (State of)"), + ("BHS", "B7", "BS", "Bahamas( Comunidad De Las )", "Bahamas (Community of the )"), + ("BIH", "X7", "BA", "Bosnia y Herzegovina", "Bosnia & Herzegovina"), + ("BLR", "BY", "BL", "Bielorrusia (Republica De)", "Belarus (Republic of)"), + ("BLZ", "C3", "BZ", "Belice", "Belize"), + ("BMU", "C4", "BM", "Bermudas", "Bermuda"), + ("BOL", "C6", "BO", "Bolivia ( Republica De )", "Bolivia (Republic of)"), + ("BRA", "C8", "BR", "Brasil (Republica Federativa De)", "Brazil (Federative Republic of)"), + ("BRB", "C1", "BB", "Barbados (Comunidad Britanica de Naciones)", "Barbados (Brithish Community of Nations)"), + ("BRN", "C9", "BN", "Brunei (Estado De)(Residencia de Paz)", "Brunei (State of)"), + ("BTN", "D3", "BT", "Butan (Reino De )", "Bhutan (Royal Goverment of)"), + ("BUR", "BU", "BU", "Burma ( Birmania )", "Burma (Birmany)"), + ("BWA", "C7", "BW", "Bostwana ( Republica De )", "Botswana (Republic of)"), + ("CAF", "CF", "RB", "Republica Centro Africana", "Central African Republic"), + ("CAN", "D9", "CA", "Canada", "Canada"), + ("CCK", "E3", "CC", "Cocos ( Keeling, Islas Australianas)", "Cocos Keeling Islands (Australian Island"), + ("CHE", "U8", "CH", "Suiza (Confederacion)", "Switzerland (Confederation)"), + ("CHL", "F6", "CL", "Chile ( Republica De )", "Chile (Republic of)"), + ("CHN", "Z3", "CN", "China ( Republica Popular) Derogado", "China (People's Republic of)"), + ("CIA", "E2", "VA", "Ciudad Del Vaticano ( Estado De La )", "Vatican City State"), + ("CIV", "F1", "CT", "Costa de Marfil (Republica De La)", "Ivory Coast (Republic of)"), + ("CMR", "D8", "CM", "Camerun ( Republica Del )", "Cameroon (Republic of the)"), + ("COG", "E6", "CG", "Congo ( Republica Del )", " Congo (Republic of the)"), + ("COK", "E7", "CK", "Cook ( Islas )", "Cook Islands"), + ("COL", "E4", "CO", "Colombia ( Republica De )", "Colombia (Republic of)"), + ("COM", "E5", "KM", "Comoras ( Islas )", "Comoros Islands"), + ("CPV", "D4", "CV", "Cabo Verde ( Republica De )", "Cape Verde (Republic of)"), + ("CRI", "F2", "CR", "Costa Rica ( Republica De )", "Costa Rica (Republic of)"), + ("CUB", "F3", "CU", "Cuba ( Republica De )", "Cuba (Republic of)"), + ("CUR", "D0", "UR", "Curazao (Terr. Holandes De Ultramar)", "Curazao (Netherlands Territory)"), + ("CXI", "N8", "CX", "Navidad ( Christmas ) ( Islas )", "Christmas Islands"), + ("CYM", "D6", "KY", "Caiman ( Islas )", "Cayman Islands"), + ("CYP", "F8", "CY", "Chipre ( Republica De )", "Cyprus (Island of)"), + ("CZE", "CZ", "CZ", "Republica Checa", "Czech Federative Republic"), + ("DEU", "A4", "DE", "Alemania ( Republica Federal De )", "Germany (Federal Republic of)"), + ("DJI", "V4", "DJ", "Djibouti ( Republica De )", "Djibouti (Republic of)"), + ("DMA", "G2", "DM", "Dominica ( Comunidad De )", "Dominica (Community of)"), + ("DNK", "G1", "DK", "Dinamarca ( Reino De )", "Denmark (Kingdom of)"), + ("DOM", "S2", "DO", "Republica Dominicana", "Dominican Republic"), + ("DSM", "FM", "FM", "Estado Federado De Micronesia", "Micronesia Federated State of"), + ("DZA", "B3", "DZ", "Argelia ( Republica Democratica y Popular de) Dero", "Argelia (People's Democratic Republic)"), + ("ECU", "G3", "EC", "Ecuador ( Republica Del)", "Ecuador (Republic of the)"), + ("EGY", "G4", "EG", "Egipto ( Republica Arabe De )", "Egypt (Arab Republic of)"), + ("EMU", "EU", "EU", "Comunidad Europea", "European Economic Community"), + ("ERI", "ER", "ER", "Eritrea (Estado De)", "Eritrea (State of)"), + ("ESH", "EH", "EH", "Sahara Occidental (Rep. Arabe Saharavi Dem.)", "Western Sahara (Arab Democratic Rep.)"), + ("ESP", "G7", "ES", "España ( Reino De )", "Spain (Kingdom of)"), + ("EST", "G0", "EE", "Estonia (Republica De)", "Estonia (Republic of)"), + ("ETH", "G9", "ET", "Etiopia ( Republica Democratica Federal)", "Ethiopia (Federal Democratic Republic)"), + ("FIN", "H4", "FI", "Finlandia ( Republica De )", "Finland (Republic of)"), + ("FJI", "H1", "FJ", "Fidji (Republica De )", "Fiji Islands"), + ("FLK", "FK", "IV", "Islas Malvinas (R.U.)", "Malvine Islands"), + ("FRA", "H5", "FR", "Francia (Republica Francesa)", "France (Republic)"), + ("FXA", "TF", "TF", "Territorios Franceses Austriales y Antarticos", "French Territory of Antartic Austral"), + ("GAB", "H6", "GA", "Gabonesa ( Republica )", "Gabonese Republic"), + ("GBR", "R9", "GB", "Reino Unido de la Gran Bretaña e Irlanda del Norte", "United Kingdom (Great Britain, Ireland N"), + ("GEO", "GE", "GE", "Georgia (Republica De)", "Georgia (Republic of)"), + ("GHA", "H8", "GH", "Ghana ( Republica De )", "Ghana (Republic of)"), + ("GIB", "GI", "GI", "Gibraltar (R.U.)", "Gibraltar (U. K.)"), + ("GIN", "I8", "GN", "Guinea ( Republica De )", "Guinea (Republic of)"), + ("GLP", "I4", "GP", "Guadalupe (Departamento De)", "Guadeloupe (French Caribean Dependences)"), + ("GMB", "H7", "GM", "Gambia ( Republica De La)", "Gambia (Republic of)"), + ("GNB", "J1", "GW", "Guinea-Bissau ( Republica De )", "Guinea-Bissau (Republic of)"), + ("GNQ", "I9", "GQ", "Guinea Ecuatorial ( Republica De )", "Equatorial Guinea (Republic of)"), + ("GRC", "I2", "GR", "Grecia (Republica Helenica)", "Greece (Helenical Republic of)"), + ("GRD", "I1", "GD", "Granada", "Grenada"), + ("GRL", "GL", "GL", "Groenlandia (Dinamarca)", "Greenland (Denmark)"), + ("GTM", "I6", "GT", "Guatemala ( Republica De )", "Guatemala (Republic of)"), + ("GUF", "I7", "GF", "Guyana Francesa", "French Guyana"), + ("GUM", "I5", "GU", "Guam ( E.U.A )", "Guam (U.S.A.)"), + ("GUY", "J2", "GY", "Guyana ( Republica Cooperativa De )", "Guyana (Cooperative Republic of)"), + ("GZA", "GZ", "GZ", "Franja De Gaza", "Gaza Strip"), + ("HKG", "J6", "HK", "Hong Kong (Region Admiva. Especial de la Rep. )", "Hong Kong (Territory of)"), + ("HND", "J5", "HN", "Honduras ( Republica De )", "Honduras (Republic of)"), + ("HRV", "HR", "HR", "Croacia (Republica De)", "Croatia (Republic of)"), + ("HTI", "J3", "HT", "Haiti ( Republica De )", "Haiti (Republic of)"), + ("HUN", "J7", "HU", "Hungria ( Republica De )", "Hungary (Republic of)"), + ("IDN", "J9", "ID", "Indonesia ( Republica De )", "Indonesia (Republic of)"), + ("IND", "J8", "IN", "India ( Republica De)", "India (Republic of the)"), + ("IRL", "K3", "IE", "Irlanda ( Republica De )", "Ireland (Republic of)"), + ("IRN", "K2", "IR", "Iran ( Republica Islamica Del )", "Iran (Islamic Republic of)"), + ("IRQ", "K1", "IQ", "Irak ( Republica De )", "Iraq (Republic of)"), + ("ISL", "K4", "IS", "Islandia ( Republica De )", "Iceland (Republic of)"), + ("ISR", "K5", "IL", "Israel ( Estado De )", "Israel (State of)"), + ("ITA", "K6", "IT", "Italia (Republica Italiana)", "Italy (Republic)"), + ("JAM", "K7", "JM", "Jamaica", "Jamaica"), + ("JOR", "L1", "JO", "Jordania ( Reino Hachemita De )", "Jordan (Hachemite Kingdom of)"), + ("JPN", "K9", "JP", "Japon", "Japan"), + ("KAZ", "KZ", "KZ", "Kazakhstan (Republica de)", "Kazakhstan"), + ("KCD", "Z9", "PD", "Paises No Declarados", "Not Declared Countries"), + ("KEN", "L2", "KE", "Kenya ( Republica De )", "Kenya (Republic of)"), + ("KGZ", "KG", "KG", "Kyrgyzstan (Republica Kirgyzia)", "Kyrgyzstan"), + ("KHM", "D7", "KH", "Camboya (Reino de)", "Cambodia"), + ("KIR", "L0", "KI", "Kiribati (Republica de)", "Kiribati"), + ("KNA", "S9", "KN", "San Cristobal Y Nieves (Fed. de)(San Kitts-Nevis)", "St. Christopher - Nevis"), + ("KOR", "E8", "KR", "Corea (Republica De)(Corea del Sur)", "Korea Republic of"), + ("KWT", "L3", "KW", "Kuwait (Estado de)", "kuwait"), + ("LAO", "L4", "LA", "Republica Democratica Popular Laos", "Laos (People's Democratic Republic of)"), + ("LBN", "L7", "LB", "Libano (Republica de)", "Lebanon"), + ("LBR", "L8", "LR", "Liberia ( Republica De )", "Liberia (Republic of)"), + ("LBY", "L9", "LY", "Libia (Jamahiriya Libia Araba Pop. Soc.)", "Lybia (Arab Jamahiriya)"), + ("LCA", "T4", "LC", "Santa Lucia", "Saint Lucia"), + ("LHM", "HM", "HM", "Islas Heard Y Mcdonald", "Heard & MacDonald Islands"), + ("LIE", "L5", "LI", "Liechtenstein (Principado de)", "Liechtenstein (Principated of)"), + ("LKA", "U4", "LK", "Sri Lanka ( Republica Democratica Soc.)", "Sri Lanka (Socialist Democratic Republic"), + ("LSO", "L6", "LS", "Lesotho ( Reino De )", "Lesotho (Kingdom of)"), + ("LTU", "Y2", "LT", "Lituania (Republica de)", "Lithuania"), + ("LUX", "M0", "LU", "Luxemburgo ( Gran Ducado De)", "Luxembourg (Great Ducated of)"), + ("LVA", "Y1", "LV", "Letonia (Republica de)", "Latvia"), + ("MAC", "M1", "MO", "Macao", "Macau"), + ("MAR", "M8", "MR", "Marruecos ( Reino De )", "Morocco (Kingdom of)"), + ("MCO", "N0", "MC", "Monaco (Principado De)", "Monaco (Principated of)"), + ("MDA", "MD", "MD", "Moldavia (Republica de)", "Moldova"), + ("MDG", "M2", "MG", "Madagascar ( Republica De)", "Madagascar (Democratic Republic of)"), + ("MDV", "M5", "MV", "Maldivas ( Republica De )", "Maldives (Republic of the)"), + ("MEX", "N3", "MX", "Mexico (Estados Unidos Mexicanos)", "Mexico"), + ("MHL", "MH", "MH", "Islas Marshall", "Marshall Islands"), + ("MKD", "MK", "MK", "Macedonia (Antigua Rep. Yugoslava De)", "Macedonia (Old Yugoslavian Republic)"), + ("MLI", "M6", "ML", "Mali ( Republica De )", "Mali (Republic of)"), + ("MLT", "M7", "MT", "Malta ( Republica De )", "Malta and Gozo (Republic of)"), + ("MMR", "C5", "MM", "Myanmar ( Union De )", "Myammar (Union of)"), + ("MNE", "ME", "ME", "Montenegro", ""), + ("MNG", "N4", "MN", "Mongolia", "Mongolia (People's Republic of)"), + ("MNP", "MP", "IM", "Islas Marianas Septentrionales", "Marianes Septentrional Islands"), + ("MOZ", "N6", "MZ", "Mozambique ( Republica De)", "Mozambique (People's Republic of)"), + ("MRT", "N2", "RT", "Mauritania ( Republica Islamica De )", "Mauritania (Islamic Republic of)"), + ("MSR", "N5", "MS", "Monserrat ( Isla )", "Montserrat Island"), + ("MTQ", "M9", "MQ", "Martinica (Departamento de) (Francia)", "Martinique (Department of)"), + ("MUS", "N1", "MU", "Mauricio ( Republica De )", "Mauritius (State of)"), + ("MWI", "M4", "MW", "Malawi ( Republica De )", "Malawi (Republic of)"), + ("MYS", "M3", "MY", "Malasia", "Malaysia (Federation of)"), + ("NAM", "P0", "NA", "Namibia ( Republica De )", "Namibia (Republic of)"), + ("NCA", "P7", "TE", "Terr. Frances Ultramar Nueva Caledonia", "French Territory of New Caledonia"), + ("NCL", "NC", "NC", "Nueva Caledonia (Terr.Frances de Ultramar)", "New Caledonia"), + ("NER", "P2", "NE", "Niger ( Republica De)", "Niger (Federal Republic of)"), + ("NFK", "P5", "NF", "Norfolk ( Isla )", "Norfolk Island"), + ("NGA", "P3", "NG", "Nigeria ( Republica Federal De)", "Nigeria (Federal Republic of)"), + ("NIC", "P1", "NI", "Nicaragua ( Republica De )", "Nicaragua (Republic of)"), + ("NIU", "P4", "NU", "Nive ( Isla )", "Nive Island"), + ("NOR", "P6", "NO", "Noruega ( Reino De )", "Norway (Kingdom of)"), + ("NPL", "N9", "NP", "Nepal ( Reino de )", "Nepal (Republic of)"), + ("NRU", "N7", "NR", "Nauru", "Nauru"), + ("NZL", "P9", "NZ", "Nueva Zelandia", "New Zealand"), + ("OMN", "Q2", "OM", "Oman (Sultanato De )", "Oman (Sultanate of)"), + ("PAK", "Q7", "PK", "Pakistan ( Republica Islamica De )", "Pakistan (Islamic Republic of)"), + ("PAN", "Q8", "PA", "Panama ( Republica De )", "Panama (Republic of)"), + ("PCN", "R3", "PN", "Pitcairns ( Islas Dependencia Britanica )", "Pitcairn Island (Brithish Dependence)"), + ("PER", "R2", "PE", "Peru ( Republica Del )", "Peru (Republic of )"), + ("PHL", "H3", "PH", "Filipinas ( Republica De Las )", "Philippines (Republic of the)"), + ("PIK", "Q3", "PI", "Pacifico Islas Del ( Admon. E.U.A. )", "Pacific Islands (U.S.A. Administration)"), + ("PLW", "PW", "PW", "Palau (Republica De)", "Palau (Republic of)"), + ("PNG", "P8", "PP", "Papua Nueva Guinea (Edo. Independiente de)", "Papua New Guinea (Independent State of)"), + ("POL", "R5", "PL", "Polonia ( Republica De )", "Poland (Republic of)"), + ("PRI", "R7", "PR", "Puerto Rico (Edo.Libre Asociado de la Com. de) Der", "Puerto Rico (Free Asociated State of)"), + ("PRK", "E9", "KP", "Corea ( Rep. Pop. Dem.de)(Corea del Norte)", "Korea (North)(People's Democratic Rep.of"), + ("PRT", "R6", "PT", "Portugal (Republica Portuguesa)", "Portugal (Republic of)"), + ("PRY", "R1", "PY", "Paraguay ( Republica Del )", "Paraguay (Republic of)"), + ("PSE", "PS", "PS", "Palestina", ""), + ("PTY", "Z2", "ZO", "Zona Del Canal De Panama", "Zone of the Panama's Channel"), + ("PYF", "R4", "PF", "Polinesia Francesa", "French Polynesia"), + ("QAT", "R8", "QA", "Qatar ( Estado De )", "Qatar (State of)"), + ("REU", "S3", "RE", "Reunion (Departamento de la) ( Francia)", "Reunion Islands (French Department)"), + ("RKE", "E1", "RK", "Canal Islas del ( Islas Normandas )", "Channel Islands"), + ("ROM", "S5", "RO", "Rumania", "Romania (Republic of)"), + ("RUH", "NT", "NT", "Zona Neutral Iraq-Arabia Saudita", "Neutral Zone of Iraq - Saudi Arabia"), + ("RUS", "RU", "RU", "Rusia (Federacion Rusa)", "Russia (Federation)"), + ("RWA", "S6", "RW", "Republica Ruandesa", "Rwanda"), + ("SAU", "B2", "SA", "Arabia Saudita ( Reino De )", "Saudi Arabia (Kingdom of)"), + ("SDN", "U6", "SD", "Sudan ( Republica Del )", "Sudan (Democratic Republic of)"), + ("SEN", "T6", "SN", "Senegal ( Republica Del )", "Senegal (Republic of the)"), + ("SGP", "U1", "SG", "Singapur ( Republica De )", "Singapore (Republic of)"), + ("SHN", "T3", "SH", "Santa Elena", "St. Helena"), + ("SJM", "SJ", "SJ", "Islas Svalbard Y Jan Mayen (Noruega)", "Svalbard & Jan Mayen Islands"), + ("SLB", "SB", "SB", "Islas Salomon (Com. Britanica de Naciones)", "Solomon Islands (Brithish Community)"), + ("SLE", "T8", "SL", "Sierra Leona ( Republica De )", "Sierra Leone (Republic of)"), + ("SLV", "G5", "SV", "El Salvador ( Republica De )", "El Salvador (Republic of)"), + ("SMR", "T0", "SM", "San Marino (Serenisima Republica De)", "San Marino (Republic of"), + ("SOM", "U3", "SO", "Somalia", "Somalia (Democratic Republic of)"), + ("SPM", "T1", "PM", "San Pedro Y Miquelon", "St. Pierre and Miquelon"), + ("SRB", "RS", "RS", "Republica de Serbia", ""), + ("STP", "T5", "ST", "Santo Tome Y Principe (Rep. Democratica de)", "Sao Tome and Principe (Dem. Rep.)"), + ("SUR", "U9", "SR", "Suriname ( Republica De )", "Surinam (Republic of)"), + ("SVK", "SK", "SK", "Republica Eslovaca", "Slovakia (Republic)"), + ("SVN", "SI", "SI", "Eslovenia (Republica De)", "Slovenia (Republic of)"), + ("SWE", "U7", "SE", "Suecia ( Reino De )", "Sweden (Kingdom of)"), + ("SWZ", "V0", "SZ", "Swazilandia ( Reino De )", "Swaziland (Kingdom of)"), + ("SYC", "T7", "SC", "Seychelles (Republica De Las)", "Seychelles (Republic of the)"), + ("SYR", "U2", "SY", "Siria ( Republica Arabe )", "Syrian Arab Republic"), + ("TCA", "W3", "TC", "Turcas Y Caicos ( Islas )", "Turks and Caicos Islands"), + ("TCD", "F4", "TD", "Chad ( Republica De )", "Chad (Republic of)"), + ("TGO", "V7", "TG", "Togo (Republica Togolesa)", "Togo (Republic)"), + ("THA", "V1", "TH", "Tailandia ( Reino De )", "Thailand (Kingdom of)"), + ("TJK", "TJ", "TJ", "Tadjikistan (Republica De)", "Tadjikistan (Republic of)"), + ("TKL", "TK", "TK", "Islas Tokelau", "Tokelau Islands"), + ("TKM", "TM", "TM", "Turkmenistan (Republica De)", "Turkmenistan (Republic of)"), + ("TMP", "TP", "TP", "Timor Oriental", "East Timor"), + ("TON", "TO", "TO", "Tonga (Reino De)", "Tonga (Kingdom of)"), + ("TTO", "W1", "TT", "Trinidad Y Tobago ( Republica De )", "Trinidad and Tobago (Republic of)"), + ("TUN", "W2", "TN", "Tunez ( Republica De )", "Tunisia (Republic of)"), + ("TUR", "W4", "TR", "Turquia ( Republica De )", "Turkey (Republic of)"), + ("TUV", "TV", "TV", "Tuvalu (Comunidad Britanica de Naciones)", "Tuvalu (Brithish Community of Nations)"), + ("TWN", "F7", "TW", "Taiwan (Republica de China)", "Taiwan"), + ("TZA", "V2", "TZ", "Tanzania ( Republica Unida De )", "Tanzania United Republic of"), + ("UGA", "W5", "UG", "Uganda ( Republica De )", "Uganda (Republic of)"), + ("UKR", "UA", "UA", "Ucrania", "Ukraine"), + ("URY", "W7", "UY", "Uruguay ( Republica Oriental Del )", "Uruguay (Eastern Republic of the)"), + ("USA", "G8", "US", "Estados Unidos de America", "United States of America"), + ("UZB", "Y4", "UZ", "Uzbejistan (Republica de)", "Uzbekistan (Republic)"), + ("VCT", "T2", "VC", "San Vicente Y Las Granadinas", "St. Vincent and the Grenadines"), + ("VEN", "W8", "VE", "Venezuela ( Republica De )", "Venezuela (Republic of)"), + ("VGB", "X2", "VG", "Virgenes Islas ( Britanicas )", "Virgin Islands (British)"), + ("VIR", "X3", "VI", "Virgenes Islas ( Norteamericanas )", "Virgin Islands (American)"), + ("VNM", "W9", "VN", "Vietnam ( Republica Socialista De )", "Vietnam (Socialist Republic of)"), + ("VUT", "Q1", "VU", "Vanuatu", "Vanuatu"), + ("WLF", "WF", "WF", "Islas Wallis Y Futuna", "Wallis & Futuna Islands"), + ("WSM", "S8", "WS", "Samoa (Estado Independiente de)", "Western Samoa (Independent State)"), + ("XCH", "V3", "IO", "Territorios Britanicos Del Oceano Indico", "Brithish Territory of the Indic Ocean"), + ("YEM", "YE", "YE", "Yemen (Republica De)", "Yemen (Republic of)"), + ("YUG", "X8", "YU", "Yugoslavia (Republica Federal de)", "Yugoslavia (Federal Republic of)"), + ("ZAF", "U5", "ZA", "Sudafrica ( Republica De ) Derogado", "South Africa (Republic of)"), + ("ZMB", "Z1", "ZM", "Zambia ( Republica De )", "Zambia (Republic of)"), + ("ZWE", "S4", "ZW", "Zimbabwe ( Republica De )", "Zimbabwe (Republic of)"), + ("ZYA", "J4", "NL", "Paises Bajos ( Reino De Los )(Holanda)", "Netherlands (Kingdom of)(Holand)"), +] \ No newline at end of file diff --git a/backend/api/v1/modules/public/reference_data/currency_types/models.py b/backend/api/v1/modules/public/reference_data/currency_types/models.py new file mode 100644 index 00000000..bb0d119f --- /dev/null +++ b/backend/api/v1/modules/public/reference_data/currency_types/models.py @@ -0,0 +1,18 @@ +from sqlalchemy import String, PrimaryKeyConstraint +from sqlalchemy.orm import mapped_column, Mapped +from core.database import Base + + +class CurrencyType(Base): + __tablename__ = "currency_types" #GTiposMoneda + __table_args__ = ( + PrimaryKeyConstraint("code", name="currency_types_pkey"), + {"schema": "public"} # opcional + ) + + code: Mapped[str] = mapped_column(String(3), nullable=False) # código ISO o clave de moneda + currency_name: Mapped[str] = mapped_column(String(15), nullable=False) # nombre de la moneda (por ejemplo: Peso, Dollar) + country_description: Mapped[str] = mapped_column(String(50)) # país asociado o descripción del país + + def __repr__(self): + return f"" diff --git a/backend/api/v1/modules/public/reference_data/currency_types/seed.py b/backend/api/v1/modules/public/reference_data/currency_types/seed.py new file mode 100644 index 00000000..ecef1c54 --- /dev/null +++ b/backend/api/v1/modules/public/reference_data/currency_types/seed.py @@ -0,0 +1,96 @@ +seed = [ + ("AED", "DIRHAM", "EM. ARABES UNIDOS"), + ("ALL", "LEK", "ALBANIA"), + ("ANG", "FLORIN", "ANTILLAS HOLAN"), + ("ARP", "PESO", "ARGENTINA"), + ("AUD", "DOLAR", "AUSTRALIA"), + ("BBD", "DOLAR", "BARBADOS"), + ("BGL", "LEV", "BULGARIA"), + ("BHD", "DINAR", "BAHRAIN"), + ("BMD", "DOLAR", "BERMUDA"), + ("BOP", "BOLIVIANO", "BOLIVIA"), + ("BRC", "REAL", "BRASIL"), + ("BSD", "DOLAR", "BAHAMAS"), + ("BZD", "DOLAR", "BELICE"), + ("CAD", "DOLAR", "CANADA"), + ("CHF", "FRANCO", "SUIZA"), + ("CLP", "PESO", "CHILE"), + ("CNE", "YUAN EXTRACONTI", "CHINA E"), + ("CNY", "YUAN CONTINENTA", "CHINA"), + ("COP", "PESO", "COLOMBIA"), + ("CRC", "COLON", "COSTA RICA"), + ("CSK", "CORONA", "REPUBLICA CHECA"), + ("CUP", "PESO", "CUBA"), + ("DKK", "CORONA", "DINAMARCA"), + ("DOP", "PESO", "REPUBLICA DOMINICANA"), + ("DZD", "DINAR", "ARGELIA"), + ("ECS", "DOLAR", "ECUADOR"), + ("EGP", "LIBRA", "EGIPTO"), + ("ETB", "BIRR", "ETIOPIA"), + ("EUR", "EURO", "U. MON. EUROPEA"), + ("FJD", "DOLAR", "FIDJI"), + ("GHC", "CEDI", "GHANA"), + ("GTO", "QUETZAL", "GUATEMALA"), + ("GYD", "DOLAR", "GUYANA"), + ("HKD", "DOLAR", "HONG KONG"), + ("HNL", "LEMPIRA", "HONDURAS"), + ("HRK", "KUNA", "CROACIA (REPÚBLICA DE)"), + ("HTG", "GOURDE", "HAITI"), + ("HUF", "FORIN", "HUNGRIA"), + ("IDR", "RUPIA", "INDONESIA"), + ("ILS", "SHEKEL", "ISRAEL"), + ("INR", "RUPIA", "INDIA"), + ("IQD", "DINAR", "IRAK"), + ("IRR", "RIYAL", "IRAN"), + ("ISK", "CORONA", "ISLANDIA"), + ("JMD", "DOLAR", "JAMAICA"), + ("JOD", "DINAR", "JORDANIA"), + ("JPY", "YEN", "JAPON"), + ("KES", "CHELIN", "KENYA"), + ("KPW", "WON", "COREA DEL NORTE"), + ("KRW", "WON", "COREA DEL SUR"), + ("KWD", "DINAR", "KUWAIT"), + ("LBP", "LIBRA", "LIBANO"), + ("LKR", "RUPIA", "SRI-LANKA"), + ("LTT", "LITAS", "LITUANIA"), + ("LYD", "DINAR", "LIBIA"), + ("MAD", "DIRHAM", "MARRUECOS"), + ("MXP", "PESO", "MEXICO"), + ("MYR", "RINGGIT", "MALASIA"), + ("NGN", "NAIRA", "NIGERIA (FED)"), + ("NIC", "CORDOBA", "NICARAGUA"), + ("NOK", "CORONA", "NORUEGA"), + ("NZD", "DOLAR", "NUEVA ZELANDA"), + ("PAB", "BALBOA", "PANAMA"), + ("PES", "N. SOL", "PERU"), + ("PHP", "PESO", "FILIPINAS"), + ("PKR", "RUPIA", "PAKISTAN"), + ("PLZ", "ZLOTY", "POLONIA"), + ("PYG", "GUARANI", "PARAGUAY"), + ("ROL", "LEU", "RUMANIA"), + ("RSD", "DINAR", "REPUBLICA DE SERBIA"), + ("RUR", "RUBLO", "FED. RUSA"), + ("SAR", "RIYAL", "ARABIA SAUDITA"), + ("SEK", "CORONA", "SUECIA"), + ("SGD", "DOLAR", "SINGAPUR"), + ("SRG", "DOLAR", "SURINAM"), + ("STG", "LIBRA ESTERLINA", "GRAN BRETAÑA"), + ("SVC", "COLON", "EL SALVADOR"), + ("SYP", "LIBRA", "SIRIA"), + ("THB", "BAHT", "TAILANDIA"), + ("TRL", "LIRA", "TURQUIA"), + ("TTD", "DOLAR", "TRINIDAD Y TOBAGO"), + ("TWD", "NUEVO DOLAR", "TAIWAN"), + ("TZS", "CHELIN", "TANZANIA"), + ("UAK", "HRYVNA", "UCRANIA"), + ("USD", "DOLAR", "E.U.A."), + ("UYP", "PESO", "URUGUAY"), + ("VEB", "BOLIVAR FUERTE", "VENEZUELA"), + ("VND", "DONG", "VIETNAM"), + ("XOF", "FRANCO", "AFRICA CENTRAL"), + ("XXX", "OTRAS MONEDAS", "LOS DEMAS PAISES"), + ("YDD", "RIAL", "YEMEN (DEM. POP.)"), + ("YUD", "DINAR", "YUGOSLAVIA"), + ("ZAR", "RAND", "UNION SUDAFRICANA"), + ("ZRZ", "FRANCO", "REPUBLICA DEMOCRATICA DEL CONGO"), +] \ No newline at end of file diff --git a/backend/api/v1/modules/public/customs_sections/models.py b/backend/api/v1/modules/public/reference_data/customs_sections/models.py similarity index 88% rename from backend/api/v1/modules/public/customs_sections/models.py rename to backend/api/v1/modules/public/reference_data/customs_sections/models.py index c74f0cbf..2ee8a3b5 100644 --- a/backend/api/v1/modules/public/customs_sections/models.py +++ b/backend/api/v1/modules/public/reference_data/customs_sections/models.py @@ -10,7 +10,7 @@ class CustomsSection(Base): ) customs_code = mapped_column(String(3), nullable=False) - section_name = mapped_column(String(50), nullable=False) + section_name = mapped_column(String(255), nullable=False) def __repr__(self): return f"" \ No newline at end of file diff --git a/backend/api/v1/modules/public/reference_data/customs_sections/seed.py b/backend/api/v1/modules/public/reference_data/customs_sections/seed.py new file mode 100644 index 00000000..c7448b43 --- /dev/null +++ b/backend/api/v1/modules/public/reference_data/customs_sections/seed.py @@ -0,0 +1,125 @@ +seed = [ + ("01", "AEROPUERTO INTERNACIONAL GENERAL JUAN N. ALVAREZ, ACAPULCO, GUERRERO."), + ("010", "ACAPULCO, ACAPULCO DE JUAREZ, GUERRERO."), + ("012", "AEROPUERTO INTERNACIONAL GENERAL JUAN N. ALVAREZ, ACAPULCO, GUERRERO."), + ("020", "AGUA PRIETA, AGUA PRIETA, SONORA."), + ("050", "SUBTENIENTE LOPEZ, SUBTENIENTE LOPEZ, QUINTANA ROO."), + ("051", "SUBTENIENTE LOPEZ II „CHACTEMAL“, OTHÓN P. BLANCO, CHETUMAL, QUINTANA ROO."), + ("060", "CIUDAD DEL CARMEN, CIUDAD DEL CARMEN, CAMPECHE."), + ("063", "SEYBAPLAYA, CHAMPOTON, CAMPECHE."), + ("070", "CIUDAD JUAREZ, CIUDAD JUAREZ, CHIHUAHUA."), + ("071", "PUENTE INTERNACIONAL ZARAGOZA-ISLETA, CIUDAD JUAREZ, CHIHUAHUA."), + ("072", "SAN JERONIMO-SANTA TERESA, CIUDAD JUAREZ, CHIHUAHUA."), + ("073", "AEROPUERTO INTERNACIONAL ABRAHAM GONZALEZ, CIUDAD JUAREZ, CHIHUAHUA."), + ("074", "GUADALUPE-TORNILLO, GUADALUPE DE BRAVO, CHIHUAHUA."), + ("080", "COATZACOALCOS, COATZACOALCOS, VERACRUZ."), + ("110", "ENSENADA, ENSENADA, BAJA CALIFORNIA."), + ("120", "GUAYMAS, GUAYMAS, SONORA."), + ("121", "AEROPUERTO INTERNACIONAL GENERAL IGNACIO PESQUEIRA GARCIA, HERMOSILLO, SONORA."), + ("123", "CIUDAD OBREGON ADYACENTE AL AEROPUERTO DE CIUDAD OBREGON, CAJEME, SONORA."), + ("140", "LA PAZ, LA PAZ, BAJA CALIFORNIA SUR."), + ("142", "SAN JOSE DEL CABO, LOS CABOS, BAJA CALIFORNIA SUR."), + ("143", "CABO SAN LUCAS, LOS CABOS, BAJA CALIFORNIA SUR."), + ("144", "SANTA ROSALIA, MULEGE, BAJA CALIFORNIA SUR."), + ("145", "LORETO, LORETO, BAJA CALIFORNIA SUR."), + ("147", "PICHILINGÜE, LA PAZ, BAJA CALIFORNIA SUR."), + ("160", "MANZANILLO, MANZANILLO, COLIMA."), + ("161", "ARMERÍA, ARMERÍA, COLIMA."), + ("17", "AEROPUERTO INTERNACIONAL GENERAL SERVANDO CANALES, MATAMOROS, TAMAULIPAS."), + ("170", "MATAMOROS, MATAMOROS, TAMAULIPAS."), + ("171", "LUCIO BLANCO-LOS INDIOS, MATAMOROS, TAMAULIPAS."), + ("172", "SECCION ADUANERA FERROVIARIA DE MATAMOROS."), + ("180", "MAZATLAN, MAZATLAN, SINALOA."), + ("183", "TOPOLOBAMPO, AHOME, SINALOA."), + ("184", "AEROPUERTO INTERNACIONAL DE CULIACAN, CULIACAN, SINALOA."), + ("190", "MEXICALI, MEXICALI, BAJA CALIFORNIA."), + ("192", "LOS ALGODONES, MEXICALI, BAJA CALIFORNIA."), + ("193", "SAN FELIPE, MEXICALI, BAJA CALIFORNIA."), + ("200", "MÉXICO, CIUDAD DE MÉXICO."), + ("202", "IMPORTACION Y EXPORTACION DE CONTENEDORES, DELEGACION AZCAPOTZALCO, CIUDAD DE MÉXICO."), + ("220", "NACO, NACO, SONORA."), + ("230", "NOGALES, NOGALES, SONORA."), + ("231", "SASABE, SARIC, SONORA."), + ("24", "AEROPUERTO INTERNACIONAL DE NUEVO LAREDO „QUETZALCOATL“, NUEVO LAREDO, TAMAULIPAS."), + ("240", "NUEVO LAREDO, NUEVO LAREDO, TAMAULIPAS."), + ("250", "OJINAGA, OJINAGA, CHIHUAHUA."), + ("260", "PUERTO PALOMAS, PUERTO PALOMAS, CHIHUAHUA."), + ("27", "RIO ESCONDIDO, NAVA, COAHUILA."), + ("270", "PIEDRAS NEGRAS, PIEDRAS NEGRAS, COAHUILA."), + ("271", "AEROPUERTO INTERNACIONAL PLAN DE GUADALUPE, RAMOS ARIZPE, COAHUILA."), + ("280", "PROGRESO, PROGRESO, YUCATAN."), + ("282", "AEROPUERTO INTERNACIONAL LIC. MANUEL CRESCENCIO REJON, MERIDA, YUCATAN."), + ("300", "CIUDAD REYNOSA, CIUDAD REYNOSA, TAMAULIPAS."), + ("302", "LAS FLORES, RIO BRAVO, TAMAULIPAS."), + ("304", "AEROPUERTO INTERNACIONAL GENERAL. LUCIO BLANCO, CIUDAD REYNOSA, TAMAULIPAS."), + ("305", "RIO BRAVO-DONNA, RIO BRAVO, TAMAULIPAS."), + ("306", "ANZALDUAS, CIUDAD REYNOSA, TAMAULIPAS."), + ("310", "SALINA CRUZ, SALINA CRUZ, OAXACA."), + ("311", "AEROPUERTO INTERNACIONAL DE OAXACA, SANTA CRUZ XOXOCOTLAN, OAXACA."), + ("330", "SAN LUIS RIO COLORADO, SAN LUIS RIO COLORADO, SONORA."), + ("340", "CIUDAD MIGUEL ALEMAN, CIUDAD MIGUEL ALEMAN, TAMAULIPAS."), + ("342", "GUERRERO, GUERRERO, TAMAULIPAS."), + ("37", "AEROPUERTO INTERNACIONAL DE TAPACHULA, TAPACHULA, CHIAPAS."), + ("370", "CIUDAD HIDALGO, CIUDAD HIDALGO, CHIAPAS."), + ("372", "CIUDAD TALISMAN, TUXTLA CHICO, CHIAPAS."), + ("375", "PUERTO CHIAPAS, TAPACHULA, CHIAPAS."), + ("376", "CIUDAD CUAUHTEMOC, FRONTERA COMALAPA, CHIAPAS."), + ("380", "TAMPICO, TAMPICO, TAMAULIPAS."), + ("390", "TECATE, TECATE, BAJA CALIFORNIA."), + ("400", "TIJUANA, TIJUANA, BAJA CALIFORNIA."), + ("402", "AEROPUERTO INTERNACIONAL GENERAL ABELARDO L. RODRIGUEZ, TIJUANA, BAJA CALIFORNIA."), + ("420", "TUXPAN, TUXPAN DE RODRIGUEZ CANO, VERACRUZ."), + ("421", "TUXPAN, TUXPAN, VERACRUZ."), + ("430", "VERACRUZ, VERACRUZ, VERACRUZ."), + ("432", "AEROPUERTO INTERNACIONAL GENERAL HERIBERTO JARA CORONA, VERACRUZ, VERACRUZ."), + ("440", "CIUDAD ACUÑA, CIUDAD ACUÑA, COAHUILA."), + ("460", "TORREON, TORREON, COAHUILA."), + ("461", "AEROPUERTO DE TORREÓN, COAHUILA DE ZARAGOZA."), + ("462", "GOMEZ PALACIO, GOMEZ PALACIO, DURANGO."), + ("463", "AEROPUERTO INTERNACIONAL GENERAL GUADALUPE VICTORIA, DURANGO, DURANGO."), + ("470", "AEROPUERTO INTERNACIONAL DE LA CIUDAD DE MEXICO."), + ("471", "SATELITE, PARA IMPORTACION Y EXPORTACION POR VIA AEREA, AEROPUERTO INTERNACIONAL BENITO JUAREZ DE LA CIUDAD DE MEXICO."), + ("472", "CENTRO POSTAL MECANIZADO, POR VIA POSTAL Y POR TRAFICO AEREO, AEROPUERTO INTERNACIONAL BENITO JUAREZ DE LA CIUDAD DE MEXICO."), + ("480", "GUADALAJARA, TLACOMULCO DE ZUÑIGA, JALISCO."), + ("481", "PUERTO VALLARTA, PUERTO VALLARTA, JALISCO."), + ("484", "TERMINAL INTERMODAL FERROVIARIA, GUADALAJARA, JALISCO."), + ("50", "SONORA, PITIQUITO, SONORA."), + ("500", "SONOYTA, SONOYTA, SONORA."), + ("501", "SAN EMETERIO, GENERAL PLUTARCO ELIAS CALLES, SONORA."), + ("510", "LAZARO CARDENAS, LAZARO CARDENAS, MICHOACAN."), + ("511", "AEROPUERTO INTERNACIONAL IXTAPA-ZIHUATANEJO, ZIHUATANEJO DE AZUETA, GUERRERO."), + ("520", "MONTERREY, GENERAL MARIANO ESCOBEDO, NUEVO LEON."), + ("521", "AEROPUERTO INTERNACIONAL GENERAL MARIANO ESCOBEDO, APODACA, NUEVO LEON."), + ("523", "SALINAS VICTORIA A (TERMINAL FERROVIARIA), SALINAS VICTORIA, NUEVO LEON."), + ("524", "GENERAL ESCOBEDO, GENERAL ESCOBEDO, NUEVO LEON."), + ("525", "SALINAS VICTORIA B (INTERPUERTO), SALINAS VICTORIA, NUEVO LEON."), + ("530", "CANCUN, CANCUN, QUINTANA ROO."), + ("532", "AEROPUERTO INTERNACIONAL DE COZUMEL, COZUMEL, QUINTANA ROO."), + ("533", "PUERTO MORELOS, BENITO JUAREZ, QUINTANA ROO."), + ("640", "QUERETARO, EL MARQUES Y COLON, QUERETARO."), + ("647", "HIDALGO, ATOTONILCO DE TULA, HIDALGO."), + ("650", "TOLUCA, TOLUCA, ESTADO DE MEXICO."), + ("651", "SAN CAYETANO MORELOS, TOLUCA, ESTADO DE MÉXICO"), + ("670", "CHIHUAHUA, CHIHUAHUA, CHIHUAHUA."), + ("671", "PARQUE INDUSTRIAL LAS AMERICAS, CHIHUAHUA, CHIHUAHUA."), + ("672", "AEROPUERTO INTERNACIONAL GENERAL ROBERTO FIERRO VILLALOBOS, CHIHUAHUA, CHIHUAHUA."), + ("73", "CHICALOTE, SAN FRANCISCO DE LOS ROMO, AGUASCALIENTES."), + ("730", "AGUASCALIENTES, AGUASCALIENTES, AGUASCALIENTES."), + ("731", "PARQUE MULTIMODAL INTERPUERTO, SAN LUIS POTOSI, SAN LUIS POTOSI."), + ("732", "AEROPUERTO INTERNACIONAL GENERAL LEOBARDO C. RUIZ, EN CALERA ZACATECAS."), + ("733", "AEROPUERTO INTERNACIONAL PONCIANO ARRIAGA, SOLEDAD DE GRACIANO SANCHEZ, SAN LUIS POTOSI."), + ("734", "LA PILA-VILLA, VILLA DE REYES, SAN LUIS POTOSI."), + ("735", "AEROPUERTO INTERNACIONAL LIC. JESUS TERAN PEREDO, AGUASCALIENTES, AGUASCALIENTES."), + ("750", "PUEBLA, HEROICA PUEBLA DE ZARAGOZA, PUEBLA."), + ("751", "CUERNAVACA, JIUTEPEC, MORELOS."), + ("754", "AEROPUERTO INTERNACIONAL HERMANOS SERDAN, HUEJOTZINGO, PUEBLA."), + ("800", "COLOMBIA, COLOMBIA, NUEVO LEON."), + ("810", "ALTAMIRA, ALTAMIRA, TAMAULIPAS."), + ("820", "CIUDAD CAMARGO, CIUDAD CAMARGO, TAMAULIPAS."), + ("830", "DOS BOCAS, PARAISO, TABASCO."), + ("831", "AEROPUERTO INTERNACIONAL C.P.A. CARLOS ROVIROSA PEREZ, CIUDAD DE VILLAHERMOSA, CENTRO, TABASCO."), + ("834", "EL CEIBO, TENOSIQUE, TABASCO."), + ("840", "GUANAJUATO, SILAO, GUANAJUATO."), + ("841", "CELAYA, CELAYA, GUANAJUATO."), + ("842", "AEROPUERTO INTERNACIONAL DE GUANAJUATO, SILAO, GUANAJUATO."), +] \ No newline at end of file diff --git a/backend/api/v1/modules/public/customs_warehouses/models.py b/backend/api/v1/modules/public/reference_data/customs_warehouses/models.py similarity index 100% rename from backend/api/v1/modules/public/customs_warehouses/models.py rename to backend/api/v1/modules/public/reference_data/customs_warehouses/models.py diff --git a/backend/api/v1/modules/public/reference_data/customs_warehouses/seed.py b/backend/api/v1/modules/public/reference_data/customs_warehouses/seed.py new file mode 100644 index 00000000..802dca3d --- /dev/null +++ b/backend/api/v1/modules/public/reference_data/customs_warehouses/seed.py @@ -0,0 +1,135 @@ +seed = [ + ("1 ", "Acapulco", "Administración Portuaria Integral de Acapulco, S.A. de C.V."), + ("10 ", "Aeropuerto Internacional de la Ciudad de México", "Cargo Service Center de México, S.A. de C.V."), + ("12 ", "Aeropuerto Internacional de la Ciudad de México", "DHL Express México, S.A. de C.V."), + ("14 ", "Aeropuerto Internacional de la Ciudad de México", "Lufthansa Cargo Servicios Logísticos de México, S.A. de C.V."), + ("145", "México", "Ferrocarril y Terminal de Valle de México, S.A. de C.V."), + ("146", "Veracruz", "Cargill de México, S.A. de C.V."), + ("147", "Aeropuerto Internacional de la Ciudad de México", "Braniff Transport Carga, S.A. de C.V."), + ("148", "Nuevo Laredo", "Inspecciones Fitosanitarias y Aduaneras de Nuevo Laredo, S.A. de C.V."), + ("149", "Nuevo Laredo", "PG Servicios de Logística, S.C."), + ("15 ", "Aeropuerto Internacional de la Ciudad de México", "Tramitadores Asociados de Aerocarga, S.A. de C.V."), + ("150", "Piedras Negras", "Mercurio Cargo, S.A. de C.V."), + ("151", "Colombia", "S.R. Asesores Aduanales de Nuevo Laredo, S.C."), + ("154", "Monterrey", "Federal Express Holdings (México) y Compañía, S.N.C. de C.V."), + ("155", "Ciudad Hidalgo", "Corporativo de Servicios del Sureste, S.A. de C.V."), + ("158", "Monterrey", "Aeropuerto de Monterrey, S.A. de C.V."), + ("16 ", "Aeropuerto Internacional de la Ciudad de México", "Transportación México Express, S.A. de C.V."), + ("160", "Manzanillo", "Frigorífico de Manzanillo, S.A. de C.V."), + ("161", "Colombia", "Santos Esquivel y Compañía, S.C."), + ("162", "Guadalajara", "Ferrocarril Mexicano, S.A. de C.V."), + ("164", "Monterrey", "United Parcel Service de México, S.A. de C.V."), + ("165", "Aguascalientes", "Centros de Intercambio de Carga Express Estafeta, S.A. de C.V."), + ("166", "Altamira", "Administración Portuaria Integral de Altamira, S.A. de C.V."), + ("167", "Ciudad Juárez", "Accel, Recinto Fiscalizado, S.A. de C.V."), + ("17 ", "Aeropuerto Internacional de la Ciudad de México", "United Parcel Service de México, S.A. de C.V."), + ("171", "Chihuahua", "Aeropuerto de Chihuahua, S.A. de C.V."), + ("172", "Veracruz", "Servicios Especiales Portuarios, S.A. de C.V."), + ("173", "Lázaro Cárdenas", "UTTSA, S.A. de C.V."), + ("174", "Ciudad Juárez", "Aeropuerto de Ciudad Juárez, S.A. de C.V."), + ("175", "Cancún", "Caribbean Logistics, S.A. de C.V."), + ("176", "Colombia", "Centro de Carga y Descarga de Colombia, S.A. de C.V."), + ("177", "Nogales", "Grupo Inmobiliario Maymar, S.A. de C.V."), + ("178", "Colombia", "Grupo Coordinador de Importadores, S.A. de C.V."), + ("179", "Altamira", "D.A. Hinojosa Terminal Multiusos, S.A. de C.V."), + ("18 ", "Aeropuerto Internacional de la Ciudad de México", "Varig de México, S.A."), + ("180", "Altamira", "Inmobiliaria Portuaria de Altamira, S.A. de C.V."), + ("182", "Veracruz", "Servicios, Maniobras y Almacenamientos de Veracruz, S.A. de C.V."), + ("184", "Progreso", "Terminal de Contenedores de Yucatán, S.A. de C.V."), + ("186", "Nuevo Laredo", "Logis Servicios Comerciales, S.A. de C.V."), + ("187", "Manzanillo", "Tecnoadministración del Pacífico, S.A. de C.V."), + ("19 ", "Altamira", "Altamira Terminal Multimodal, S.A. de C.V."), + ("195", "Nuevo Laredo", "Logística de Nuevo Laredo, S.A. de C.V."), + ("196", "Guanajuato", "Ferrocarril Mexicano, S.A. de C.V."), + ("197", "Toluca", "Vamos a México, S.A. de C.V."), + ("198", "Puebla", "A/WTC Puebla, S.A. de C.V."), + ("199", "Lázaro Cárdenas", "Promotora Inmobiliaria del Balsas, S.A. de C.V."), + ("20 ", "Altamira", "Altamira Terminal Portuaria, S.A. de C.V."), + ("200", "Lázaro Cárdenas", "L.C. Terminal Portuaria de Contenedores, S.A. de C.V."), + ("201", "Altamira", "Cooper T. Smith de México, S.A. de C.V."), + ("203", "Altamira", "Grupo Castañeda, S.A. de C.V."), + ("204", "Monterrey", "Ferrocarril Mexicano, S.A. de C.V."), + ("210", "Querétaro", "Terminal Logistics, S.A. de C.V."), + ("211", "Aeropuerto Internacional de la Ciudad de México", "World Express Cargo de México, S.A. de C.V."), + ("212", "Piedras Negras", "Consultores de Logística en Comercio Exterior, S.A. de C.V."), + ("214", "Altamira", "Possehl México, S.A. de C.V."), + ("215", "Tampico", "Refitam, S.A. de C.V."), + ("217", "Veracruz", "SSA México, S.A. de C.V."), + ("218", "Tampico", "Administración Portuaria Integral de Tampico, S.A. de C.V."), + ("219", "Tampico", "Administración Portuaria Integral de Tampico, S.A. de C.V."), + ("22 ", "Altamira", "Infraestructura Portuaria Mexicana, S.A. de C.V."), + ("221", "Lázaro Cárdenas", "Promotora Inmobiliaria del Balsas, S.A. de C.V."), + ("222", "Matamoros", "Puerto Los Indios, S.A. de C.V."), + ("223", "Monterrey", "DHL Express México, S.A. de C.V."), + ("224", "Aguascalientes", "Nafta Rail, S.A. de C.V."), + ("225", "Altamira", "Integradora de Servicios, Transporte y Almacenaje, S.A. de C.V."), + ("226", "Nuevo Laredo", "DAF, Delivery After Frontier, S.A. de C.V."), + ("227", "Matamoros", "Profesionales Mexicanos del Comercio Exterior, S.C."), + ("228", "Guadalajara", "CLA Guadalajara, S.A. de C.V."), + ("229", "Manzanillo", "Maniobras Integradas del Puerto, S.A. de C.V."), + ("23 ", "Coatzacoalcos", "Administración Portuaria Integral de Coatzacoalcos, S.A. de C.V."), + ("230", "Querétaro", "Terminal Intermodal Logística de Hidalgo, S.A.P.I. de C.V."), + ("231", "Lázaro Cárdenas", "Terminales Portuarias del Pacífico, S.A.P.I. de C.V."), + ("232", "Lázaro Cárdenas", "Arcelormittal Portuarios, S.A. de C.V."), + ("233", "Veracruz", "Excellence Sea & Land Logistics, S.A. de C.V."), + ("234", "Ciudad Juárez", "Accel Comercial, S.A. de C.V."), + ("236", "Lázaro Cárdenas", "Jade Logistic & Commerce, S.A. de C.V."), + ("238", "Cancún", "Cargo RF, S.A. de C.V."), + ("239", "Monterrey", "Controladora de Terminales México, S.A. de C.V."), + ("24 ", "Coatzacoalcos", "Vopak Terminals México, S.A. de C.V."), + ("240", "Nuevo Laredo", "Loginspecs, S.C."), + ("241", "Manzanillo", "Contecon Manzanillo, S.A. de C.V."), + ("25 ", "Colombia", "Dicex Integraciones, S.A. de C.V."), + ("26 ", "Colombia", "Mex Securit, S.A. de C.V."), + ("27 ", "Ensenada", "Ensenada International Terminal, S.A. de C.V."), + ("28 ", "Guadalajara", "Almacenadora GWTC, S.A. de C.V."), + ("29 ", "Guadalajara", "Federal Express Holdings (México) y Compañía, S.N.C. de C.V."), + ("3 ", "Aeropuerto Internacional de la Ciudad de México", "Aerovías de México, S.A. de C.V."), + ("30 ", "Guaymas", "Administración Portuaria Integral de Guaymas, S.A. de C.V."), + ("31 ", "Lázaro Cárdenas", "Administración Portuaria Integral de Lázaro Cárdenas, S.A. de C.V."), + ("33 ", "Lázaro Cárdenas", "Aarhuskarlshamn México, S.A. de C.V."), + ("35 ", "Manzanillo", "Administración Portuaria Integral de Manzanillo, S.A. de C.V."), + ("36 ", "Manzanillo", "Comercializadora La Junta, S.A. de C.V."), + ("38 ", "Manzanillo", "Operadora de la Cuenca del Pacífico, S.A. de C.V."), + ("39 ", "Manzanillo", "SSA México, S.A. de C.V."), + ("4 ", "Aeropuerto Internacional de la Ciudad de México", "AAACESA Almacenes Fiscalizados, S.A. de C.V."), + ("40 ", "Manzanillo", "Terminal Internacional de Manzanillo, S.A. de C.V."), + ("42 ", "Mazatlán", "Administración Portuaria Integral de Mazatlán, S.A. de C.V."), + ("43 ", "Mazatlán", "Administración Portuaria Integral de Topolobampo, S.A. de C.V."), + ("44 ", "Monterrey", "Braniff Air Freight and Company, S.A. de C.V."), + ("45 ", "Monterrey", "Kansas City Southern de México, S.A. de C.V."), + ("46 ", "Nogales", "Servicios de Almacén Fiscalizado de Nogales, S.A. de C.V."), + ("47 ", "Progreso", "Administración Portuaria Integral de Progreso, S.A. de C.V."), + ("49 ", "Progreso", "Grupo de Desarrollo del Sureste, S.A. de C.V."), + ("5 ", "Aeropuerto Internacional de la Ciudad de México", "México Cargo Handling, S.A. de C.V."), + ("50 ", "Progreso", "Multisur, S.A. de C.V."), + ("51 ", "Querétaro", "Servicios Integrales y Desarrollo GMG, S.A. de C.V."), + ("52 ", "Reynosa", "Recintos Fiscalizados de Noreste, S.A. de C.V."), + ("53 ", "Salina Cruz", "Administración Portuaria Integral de Salina Cruz, S.A. de C.V."), + ("54 ", "Cancún", "Administración Portuaria Integral de Quintana Roo, S.A. de C.V."), + ("56 ", "Toluca", "Braniff Air Freight and Company, S.A. de C.V."), + ("57 ", "Toluca", "Federal Express Holdings (México) y Compañía, S.N.C. de C.V."), + ("59 ", "Tuxpan", "Administración Portuaria Integral de Tuxpan, S.A. de C.V."), + ("6 ", "Aeropuerto Internacional de la Ciudad de México", "American Airlines de México, S.A. de C.V."), + ("60 ", "Tuxpan", "Fenoresinas, S.A. de C.V."), + ("61 ", "Tuxpan", "Terminal Marítima de Tuxpan, S.A. de C.V."), + ("62 ", "Tuxpan", "Terminales Marítimas Transunisa, S.A. de C.V."), + ("63 ", "Veracruz", "Administración Portuaria Integral de Veracruz, S.A. de C.V."), + ("64 ", "Veracruz", "Almacenadora Golmex, S.A. de C.V."), + ("66 ", "Veracruz", "CIF Almacenajes y Servicios, S.A. de C.V."), + ("67 ", "Veracruz", "Corporación Integral de Comercio Exterior, S.A. de C.V."), + ("69 ", "Veracruz", "Internacional de Contenedores Asociados de Veracruz, S.A. de C.V."), + ("7 ", "Aeropuerto Internacional de la Ciudad de México", "Braniff Air Freight and Company, S.A. de C.V."), + ("71 ", "Veracruz", "Reparación Integral de Contenedores, S.A. de C.V."), + ("73 ", "Veracruz", "Terminales de Cargas Especializadas, S.A. de C.V."), + ("74 ", "Veracruz", "Vopak Terminals México, S.A. de C.V."), + ("75 ", "Veracruz", "Vopak Terminals, S.A. de C.V."), + ("76 ", "Manzanillo", "Cemex México, S.A. de C.V."), + ("77 ", "Manzanillo", "Corporación Multimodal, S.A. de C.V."), + ("78 ", "Ensenada", "Administración Portuaria Integral de Ensenada, S.A. de C.V."), + ("8 ", "Aeropuerto Internacional de la Ciudad de México", "Iberia de México, S.A."), + ("81 ", "Tuxpan", "Frigoríficos Especializados de Tuxpan, S.A. de C.V."), + ("82 ", "Veracruz", "SSA México, S.A. de C.V."), + ("9 ", "Aeropuerto Internacional de la Ciudad de México", "Compañía Mexicana de Aviación, S.A. de C.V."), + ("98 ", "Veracruz", "Corporación Portuaria de Veracruz, S.A. de C.V."), +] \ No newline at end of file diff --git a/backend/api/v1/modules/public/incoterms/models.py b/backend/api/v1/modules/public/reference_data/incoterms/models.py similarity index 100% rename from backend/api/v1/modules/public/incoterms/models.py rename to backend/api/v1/modules/public/reference_data/incoterms/models.py diff --git a/backend/api/v1/modules/public/reference_data/incoterms/seed.py b/backend/api/v1/modules/public/reference_data/incoterms/seed.py new file mode 100644 index 00000000..b7f9dbc6 --- /dev/null +++ b/backend/api/v1/modules/public/reference_data/incoterms/seed.py @@ -0,0 +1,13 @@ +seed = [ + ("EXW", "A LA SALIDA", "EX WORKS"), + ("FCA", "SIN PAGO DE TRANSPORTE PRINCIPAL", "FREE CARRIER"), + ("CPT", "TRANSPORTE PAGADO HASTA", "CARRIAGE PAID TO"), + ("CIP", "TRANSPORTE Y SEGUROS PAGADOS", "CARRIAGE AND INSURANCE PAID TO"), + ("DPU", "ENTREGA EN LUGAR DESCARGADO", "DELIVERED AT PLACE UNLOADED"), + ("DAP", "ENTREGA EN LUGAR", "DELIVERED AT PLACE"), + ("DDP", "ENTREGA DERECHOS PAGADOS", "DELIVERED DUTY PAID"), + ("FAS", "PUERTO DE EMBARQUE CONVENIDO", "FREE ALONGSIDE SHIP"), + ("FOB", "PUERTO DE EMBARQUE CONVENIDO", "FREE ON BOARD"), + ("CFR", "COSTO Y FLETE", "COST AND FREIGHT"), + ("CIF", "COSTO, SEGURO Y FLETE", "COST, INSURANCE AND FREIGHT"), +] \ No newline at end of file diff --git a/backend/api/v1/modules/public/reference_data/invoice_types/models.py b/backend/api/v1/modules/public/reference_data/invoice_types/models.py new file mode 100644 index 00000000..214aae00 --- /dev/null +++ b/backend/api/v1/modules/public/reference_data/invoice_types/models.py @@ -0,0 +1,19 @@ +from sqlalchemy import String, PrimaryKeyConstraint +from sqlalchemy.orm import mapped_column, Mapped +from core.database import Base + + +class InvoiceType(Base): + __tablename__ = "invoice_types" #GTiposFactura + __table_args__ = ( + PrimaryKeyConstraint("key", name="invoice_types_pkey"), + {"schema": "public"} # opcional + ) + + key: Mapped[str] = mapped_column(String(5), nullable=False) # clave del tipo de factura + description: Mapped[str] = mapped_column(String(50), nullable=False) # descripción oficial (en español) + note: Mapped[str] = mapped_column(String(500)) # observación o comentario adicional + type: Mapped[str] = mapped_column(String(15)) # tipo + + def __repr__(self): + return f"" diff --git a/backend/api/v1/modules/public/reference_data/invoice_types/seed.py b/backend/api/v1/modules/public/reference_data/invoice_types/seed.py new file mode 100644 index 00000000..54d17b7a --- /dev/null +++ b/backend/api/v1/modules/public/reference_data/invoice_types/seed.py @@ -0,0 +1,13 @@ +seed = [ + ("DONAC", "DONACION", "", "AMBOS"), + ("EXDEF", "EXPORTACION DEFINITIVA", "", "MATERIAL"), + ("MATDE", "MATERIA PRIMA O MATERIAL DEVUELTO", "ESTE PROCESO CONSISTE EN SOLO DESCARGAR LAS PARTES DADAS DE ALTA EN MATERIALES QUE SON RETORNADAS SIN NINGUNA MODIFICACION (A1)", "MATERIAL"), + ("NODES", "NO HACE DESCARGA", "ESTE PROCESO DE ACTUALIZACION CONSISTE EN EXPORTAR UNA MERCANCIA Y NO DESCARGAR, POR LO TANTO NO EXISTE REPORTE DE DESCARGAS Y NO AFECTA SALDOS.", "AMBOS"), + ("PTERM", "PRODUCTO TERMINADO Y VIRTUALES", "EL PRODUCTO TERMINADO Y VIRTUALES DESCARGARAN: 1) APARTIR DE LOS COMPONENTES DE CADA PRODUCTO TERMINADO REGISTRADO EN LAS PARTIDAS DE EXPORTACION. 2) POR PARTE, CON LAS OPCIONES DE PODER DESCARGAR POR SUSTITUTO Y POR CLASE EN CASO DE INSUFICIENCIAS DEL COMPONENTE.", "MATERIAL"), + ("REPAR", "REPARACION", "PROCESO QUE CONSISTE EN DOS ETAPAS: 1) DESCARGA EL PRODUCTO DE REPARACION QUE SE IMPORTO PARA REPARA, 2) DESCARGA EL LISTADO DE COMPONENTES QUE SE AGREGO AL PRODUCTO DE REPARACION", "MATERIAL"), + ("SCRAP", "SCRAP", "", "AMBOS"), + ("VEMEX", "VENTAS EN MEXICO", "ESTE PROCESO CONSISTE EN LA VENTA EN EL MERCADO NACIONAL DE LOS PRODUCTOS.", "AMBOS"), + ("VIRTU", "VIRTUALES", "", "MATERIAL"), + ("AFIJO", "ACTIVO FIJO", "", "ACTIVO FIJO"), + ("REEXP", "REEXPEDICION", "", "ACTIVO FIJO"), +] diff --git a/backend/api/v1/modules/public/material_types/models.py b/backend/api/v1/modules/public/reference_data/material_types/models.py similarity index 63% rename from backend/api/v1/modules/public/material_types/models.py rename to backend/api/v1/modules/public/reference_data/material_types/models.py index af69be8b..5fc11239 100644 --- a/backend/api/v1/modules/public/material_types/models.py +++ b/backend/api/v1/modules/public/reference_data/material_types/models.py @@ -3,15 +3,15 @@ from sqlalchemy.orm import mapped_column, Mapped from core.database import Base class MaterialType(Base): - __tablename__ = "material_types" + __tablename__ = "material_types" #STipoMat QTipoActFijo __table_args__ = ( PrimaryKeyConstraint("key", name="material_types_pkey"), - {"schema": "public"} # opcional + {"schema": "public"} ) key: Mapped[str] = mapped_column(String(10), nullable=False) # clave del material - origin_type: Mapped[str] = mapped_column(String(15), nullable=False) # tipo de origen + type: Mapped[str] = mapped_column(String(15), nullable=False) # tipo description: Mapped[str] = mapped_column(String(256), nullable=False) # descripción oficial (en español) def __repr__(self): - return f"" + return f"" diff --git a/backend/api/v1/modules/public/reference_data/material_types/seed.py b/backend/api/v1/modules/public/reference_data/material_types/seed.py new file mode 100644 index 00000000..3f8699d8 --- /dev/null +++ b/backend/api/v1/modules/public/reference_data/material_types/seed.py @@ -0,0 +1,36 @@ +seed = [ + ("AUXIL", "AUXILIARES.", "MATERIALES"), + ("COMB", "COMBUSTIBLES", "MATERIALES"), + ("DESP", "DESPERDICIO", "PRODUCTOS"), + ("EM", "EMPAQUES", "MATERIALES"), + ("ETIFOLL", "ETIQUETAS Y FOLLETOS", "MATERIALES"), + ("EV", "ENVASE VACIO", "MATERIALES"), + ("LUBRI", "LUBRICANTES", "MATERIALES"), + ("MCONS", "MATERIAL CONSUMIBLE", "MATERIALES"), + ("MERMA", "MERMA", "PRODUCTOS"), + ("MP", "MATERIA PRIMA", "MATERIALES"), + ("MU", "MUESTRAS", "MATERIALES"), + ("OTRM", "OTROS MATERIALES", "MATERIALES"), + ("PT", "PRODUCTO TERMINADO", "PRODUCTOS"), + ("REPARA", "REPARACION", "MATERIALES"), + ("RT", "RETRABAJO", "MATERIALES"), + ("SC", "SCRAP (MERMA Y DESPERDICIO)", "PRODUCTOS"), + ("SE", "SUB-ENSAMBLE", "PRODUCTOS"), + ("CONSU", "CONSUMIBLES", "ACTIVO FIJO"), + ("EAGRI", "EQUIPO AGRICOLA", "ACTIVO FIJO"), + ("ECOMP", "EQUIPO DE COMPUTO", "ACTIVO FIJO"), + ("ECOMU", "EQUIPO DE COMUNICACION", "ACTIVO FIJO"), + ("EDIF", "EDIFICIOS", "ACTIVO FIJO"), + ("EEMPA", "EQUIPO DE EMPAQUE", "ACTIVO FIJO"), + ("EOFIC", "EQUIPO DE OFICINA", "ACTIVO FIJO"), + ("EQSEQ", "EQUIPO DE SEGURIDAD", "ACTIVO FIJO"), + ("EQUI", "EQUIPO", "ACTIVO FIJO"), + ("ERIEG", "EQUIPO DE RIEGO", "ACTIVO FIJO"), + ("ETRAN", "EQUIPO DE TRANSPORTE", "ACTIVO FIJO"), + ("HERRA", "HERRAMIENTAS", "ACTIVO FIJO"), + ("INSTA", "INSTALACION", "ACTIVO FIJO"), + ("MAQEQ", "MAQUINARIA Y EQUIPO", "ACTIVO FIJO"), + ("MAQUI", "MAQUINARIA", "ACTIVO FIJO"), + ("REFAC", "REFACCIONES", "ACTIVO FIJO"), + ("TERR", "TERRRENOS" , "ACTIVO FIJO"), +] \ No newline at end of file diff --git a/backend/api/v1/modules/public/payment_methods/models.py b/backend/api/v1/modules/public/reference_data/payment_methods/models.py similarity index 100% rename from backend/api/v1/modules/public/payment_methods/models.py rename to backend/api/v1/modules/public/reference_data/payment_methods/models.py diff --git a/backend/api/v1/modules/public/reference_data/payment_methods/seed.py b/backend/api/v1/modules/public/reference_data/payment_methods/seed.py new file mode 100644 index 00000000..b385f170 --- /dev/null +++ b/backend/api/v1/modules/public/reference_data/payment_methods/seed.py @@ -0,0 +1,22 @@ +seed = [ + ("0", "EFECTIVO."), + ("10", "DEROGADA. --- (CERTIFICADOS ESPECIALES DE TESORERIA PUBLICO)"), + ("11", "DEROGADA. --- (CERTIFICADOS ESPECIALES DE TESORERIA PRIVADO)"), + ("12", "COMPENSACION."), + ("13", "PAGO YA EFECTUADO."), + ("14", "CONDONACIONES."), + ("15", "CUENTAS ADUANERAS DE GARANTIA POR PRECIOS ESTIMADOS"), + ("16", "ACREDITAMIENTO."), + ("18", "ESTIMULO FISCAL."), + ("19", "OTROS MEDIOS DE GARANTIA."), + ("2", "FIANZA."), + ("20", "DEROGADA. --- (PAGO CONFORME AL ARTICULO 7 DE LA LEY DE INGRESOS DE LA FEDERACION, VIGENTE)"), + ("21", "CRÉDITO EN IVA E IEPS."), + ("22", "GARANTÍA EN IVA E IEPS."), + ("4", "DEPOSITO EN CUENTA ADUANERA."), + ("5", "TEMPORAL NO SUJETA A IMPUESTOS."), + ("6", "PENDIENTE DE PAGO."), + ("7", "CARGO A PARTIDA PRESUPUESTAL GOBIERNO FEDERAL."), + ("8", "FRANQUICIA."), + ("9", "EXENTO DE PAGO."), +] \ No newline at end of file diff --git a/backend/api/v1/modules/public/pedimento_codes/models.py b/backend/api/v1/modules/public/reference_data/pedimento_codes/models.py similarity index 100% rename from backend/api/v1/modules/public/pedimento_codes/models.py rename to backend/api/v1/modules/public/reference_data/pedimento_codes/models.py diff --git a/backend/api/v1/modules/public/reference_data/pedimento_codes/seed.py b/backend/api/v1/modules/public/reference_data/pedimento_codes/seed.py new file mode 100644 index 00000000..dace16cd --- /dev/null +++ b/backend/api/v1/modules/public/reference_data/pedimento_codes/seed.py @@ -0,0 +1,79 @@ +seed = [ + ("A1", "IMPORTACION O EXPORTACION DEFINITIVA."), + ("A3", "REGULARIZACION DE MERCANCIAS (IMPORTACION DEFINITIVA)."), + ("A4", "INTRODUCCION PARA DEPOSITO FISCAL (AGD)."), + ("A5", "INTRODUCCION A DEPOSITO FISCAL EN LOCAL AUTORIZADO."), + ("A6", "IMPORTACIÓN TEMPORAL DE BIENES DE ACTIVO FIJO POR PARTE DE EMPRESAS CON PITEX."), + ("AD", "IMPORTACIÓN TEMPORAL DE MERCANCIAS DESTINADAS A CONVENCIONES Y CONGRESOS INTERNACIONALES (ARTICULO 106, FRACCION III, INCISO A) DE LA LEY)."), + ("AF", "IMPORTACION TEMPORAL DE BIENES DE ACTIVO FIJO (IMMEX)."), + ("AJ", "IMPORTACION Y EXPORTACION TEMPORAL DE ENVASES DE MERCANCIAS (ARTICULOS 106, FRACCION II, INCISO B) Y 116, FRACCION II, INCISO A) DE LA LEY)."), + ("BA", "IMPORTACION Y EXPORTACION TEMPORAL DE BIENES PARA SER RETORNADOS EN SU MISMO ESTADO. (ARTICULO 106, FRACCIONES II, INCISOS A) Y C), Y IV, INCISO B) DE LA LEY)."), + ("BB", "EXPORTACION, IMPORTACION Y RETORNOS VIRTUALES."), + ("BC", "IMPORTACION Y EXPORTACION TEMPORAL DE MERCANCIAS DESTINADAS A EVENTOS CULTURALES O DEPORTIVOS (ARTICULO 106, FRACCION III, INCISO B DE LA LEY)."), + ("BD", "IMPORTACION Y EXPORTACION TEMPORAL DE EQUIPO PARA FILMACION (ARTICULOS 106, FRACCION III, INCISO C) Y 116, FRACCION II INCISO D) DE LA LEY)."), + ("BE", "IMPORTACION Y EXPORTACION TEMPORAL DE VEHICULOS DE PRUEBA (ARTICULO 106, FRACCION III, INCISO D) DE LA LEY)."), + ("BF", "EXPORTACION TEMPORAL DE MERCANCIAS DESTINADAS A EXPOSICIONES, CONVENCIONES O EVENTOS CULTURALES O DEPORTIVOS (ARTICULO 116, FRACCION III DE LA LEY)."), + ("BH", "IMPORTACION TEMPORAL DE CONTENEDORES, AVIONES, HELICOPTEROS, EMBARCACIONES Y CARROS DE FERROCARRIL (ARTICULO 106, FRACCION V, INCISOS A), B) Y E) DE LA LEY)."), + ("BI", "IMPORTACION TEMPORAL (ARTICULO 106, FRACCION III, INCISO E) DE LA LEY)."), + ("BM", "EXPORTACION TEMPORAL DE MERCANCIAS PARA SU TRANSFORMACION, ELABORACION O REPARACION (ARTICULO 117 DE LA LEY)."), + ("BO", "EXPORTACION TEMPORAL PARA REPARACION O SUSTITUCION Y RETORNO AL PAIS (IMMEX, RFE U OPERADOR ECONOMICO AUTORIZADO."), + ("BP", "IMPORTACION Y EXPORTACION TEMPORAL DE MUESTRAS O MUESTRARIOS (ARTICULOS 106, FRACCION II, INCISO D) Y 116, FRACCION II, INCISO C) DE LA LEY)."), + ("BR", "EXPORTACION TEMPORAL Y RETORNO DE MERCANCIAS FUNGIBLES."), + ("C1", "IMPORTACION DEFINITIVA A LA FRANJA FRONTERIZA NORTE Y REGION FRONTERIZA AL AMPARO DEL „DECRETO DE LA FRANJA O REGION FRONTERIZA“ (DOF 24/12/2008 Y SUS POSTERIORES MODIFICACIONES)."), + ("C3", "EXTRACCION DE DEPOSITO FISCAL DE FRANJA O REGION FRONTERIZA (AGD)."), + ("CT", "PEDIMENTO COMPLEMENTARIO."), + ("D1", "RETORNO POR SUSTITUCION."), + ("E1", "EXTRACCION DE DEPOSITO FISCAL DE BIENES QUE SERAN SUJETOS A TRANSFORMACION, ELABORACION O REPARACION (AGD)."), + ("E2", "EXTRACCION DE DEPOSITO FISCAL DE BIENES DE ACTIVO FIJO (AGD)."), + ("E3", "EXTRACCION DE DEPOSITO FISCAL EN LOCAL AUTORIZADO (INSUMOS)."), + ("E4", "EXTRACCION DE DEPOSITO FISCAL EN LOCAL AUTORIZADO (ACTIVO FIJO)."), + ("F2", "INTRODUCCION A DEPOSITO FISCAL (IA)."), + ("F3", "EXTRACCION DE DEPOSITO FISCAL (IA)."), + ("F4", "CAMBIO DE REGIMEN DE INSUMOS O DE MERCANCIA EXPORTADA TEMPORALMENTE."), + ("F5", "CAMBIO DE REGIMEN DE MERCANCÍAS DE IMPORTACIÓN TEMPORAL A DEFINITIVA."), + ("F8", "INTRODUCCION Y EXTRACCION DE DEPOSITO FISCAL DE MERCANCIAS NACIONALES O NACIONALIZADAS EN TIENDAS LIBRES DE IMPUESTOS (DUTY FREE)."), + ("F9", "INTRODUCCION Y EXTRACCION DE DEPOSITO FISCAL DE MERCANCIAS EXTRANJERAS PARA EXPOSICION Y VENTA DE MERCANCIAS EN TIENDAS LIBRES DE IMPUESTOS (DUTY FREE)."), + ("G1", "EXTRACCION DE DEPOSITO FISCAL (AGD)."), + ("G2", "EXTRACCION DE DEPOSITO FISCAL EN LOCAL AUTORIZADO PARA SU IMPORTACION DEFINITIVA."), + ("G6", "INFORME DE EXTRACCION DE DEPOSITO FISCAL DE MERCANCIAS NACIONALES O NACIONALIZADAS VENDIDAS EN TIENDAS LIBRES DE IMPUESTOS (DUTY FREE)."), + ("G7", "INFORME DE EXTRACCION DE DEPOSITO FISCAL DE MERCANCIAS EXTRANJERAS VENDIDAS EN TIENDAS LIBRES DE IMPUESTOS (DUTY FREE)."), + ("G8", "REINCORPORAR AL MERCADO NACIONAL (RFE)."), + ("G9", "TRANSFERENCIA DE MERCANCÍAS DE RECINTO FISCALIZADO ESTRATEGICO NO COLINDANTE CON LA ADUANA (RETIRO VIRTUAL PARA IMPORTACIÓN DEFINTIVA POR RESIDENTES EN TERRITORIO NACIONAL)."), + ("GC", "GLOBAL COMPLEMENTARIO."), + ("H1", "RETORNO DE MERCANCIAS EN SU MISMO ESTADO."), + ("H8", "RETORNO DE ENVASES."), + ("I1", "IMPORTACION, EXPORTACION Y RETORNO DE MERCANCIAS ELABORADAS, TRANSFORMADAS O REPARADAS."), + ("IN", "IMPORTACION TEMPORAL DE BIENES QUE SERAN SUJETOS A TRANSFORMACION, ELABORACION O REPARACION (IMMEX)."), + ("J3", "RETORNO Y EXPORTACION DE INSUMOS ELABORADOS O TRANSFORMADOS EN RECINTO FISCALIZADO."), + ("J4", "RETORNO DE MERCANCIAS EXTRANJERAS (RFE)."), + ("K1", "DESISTIMIENTO DE REGIMEN Y RETORNO DE MERCANCIAS POR DEVOLUCION."), + ("K2", "EXTRACCION DE DEPOSITO FISCAL POR DESISTIMIENTO O TRANSFERENCIAS (AGD)."), + ("K3", "EXTRACCION DE DEPOSITO FISCAL EN LOCAL AUTORIZADO PARA RETORNO O TRANSFERENCIA."), + ("L1", "PEQUEÑA IMPORTACION DEFINITIVA."), + ("M1", "INTRODUCCION Y EXPORTACION DE INSUMOS."), + ("M2", "INTRODUCCION Y EXPORTACION DE MAQUINARIA Y EQUIPO."), + ("M3", "INTRODUCCION DE MERCANCIAS (RFE)."), + ("M4", "INTRODUCCION DE ACTIVO FIJO (RFE)."), + ("M5", "INTRODUCCION DE MERCANCIA NACIONAL O NACIONALIZADA (RFE)."), + ("P1", "REEXPEDICION DE MERCANCIAS DE FRANJA FRONTERIZA O REGION FRONTERIZA AL INTERIOR DEL PAIS."), + ("R1", "RECTIFICACION DE PEDIMENTOS."), + ("RT", "RETORNO DE MERCANCIAS (IMMEX)."), + ("S2", "IMPORTACION Y EXPORTACION DE MERCANCIAS PARA RETORNAR EN SU MISMO ESTADO (ARTICULO 86 DE LA LEY)."), + ("T1", "IMPORTACION Y EXPORTACION POR EMPRESAS DE MENSAJERIA."), + ("T3", "TRANSITO INTERNO."), + ("T6", "TRANSITO INTERNACIONAL POR TERRITORIO EXTRANJERO."), + ("T7", "TRANSITO INTERNACIONAL POR TERRITORIO NACIONAL."), + ("T9", "TRANSITO INTERNACIONAL DE TRANSMIGRANTES."), + ("V1", "TRANSFERENCIAS DE MERCANCIAS (IMPORTACION TEMPORAL VIRTUAL; INTRODUCCION VIRTUAL A DEPOSITO FISCAL O A RECINTO FISCALIZADO ESTRATEGICO; RETORNO VIRTUAL; EXPORTACION VIRTUAL DE PROVEEDORES NACIONALES)."), + ("V2", "TRANSFERENCIAS DE MERCANCIAS IMPORTADAS CON CUENTA ADUANERA (EXPORTACION E IMPORTACION VIRTUAL)."), + ("V3", "EXTRACCION DE DEPOSITO FISCAL DE BIENES PARA SU RETORNO O EXPORTACION VIRTUAL (IA)."), + ("V4", "RETORNO VIRTUAL DERIVADO DE LA CONSTANCIA DE TRANSFERENCIA DE MERCANCIAS (IA)."), + ("V5", "TRANSFERENCIAS DE MERCANCIAS DE EMPRESAS CERTIFICADAS (RETORNO VIRTUAL PARA IMPORTACION DEFINITIVA)."), + ("V6", "TRANSFERENCIAS DE MERCANCIAS SUJETAS A CUPO (IMPORTACION DEFINITIVA Y RETORNO VIRTUAL)."), + ("V7", "TRANSFERENCIAS DEL SECTOR AZUCARERO (EXPORTACION VIRTUAL E IMPORTACION TEMPORAL VIRTUAL)."), + ("V8", "TRANSFERENCIA DE MERCANCIAS EN DEPOSITO FISCAL PARA LA EXPOSICION Y VENTA DE MERCANCIAS EXTRANJERAS, NACIONALES Y NACIONALIZADAS DE TIENDAS LIBRES DE IMPUESTOS (DUTY FREE)."), + ("V9", "TRANSFERENCIAS DE MERCANCIAS POR DONACION"), + ("VD", "VIRTUALES DIVERSOS."), + ("VF", "IMPORTACION DEFINITIVA DE VEHICULOS USADOS A LA FRANJA O REGION FRONTERIZA NORTE."), + ("VU", "IMPORTACION DEFINITIVA DE VEHICULOS USADOS.") +] \ No newline at end of file diff --git a/backend/api/v1/modules/public/pedimento_regimens/models.py b/backend/api/v1/modules/public/reference_data/pedimento_regimens/models.py similarity index 100% rename from backend/api/v1/modules/public/pedimento_regimens/models.py rename to backend/api/v1/modules/public/reference_data/pedimento_regimens/models.py diff --git a/backend/api/v1/modules/public/reference_data/pedimento_regimens/seed.py b/backend/api/v1/modules/public/reference_data/pedimento_regimens/seed.py new file mode 100644 index 00000000..f154928e --- /dev/null +++ b/backend/api/v1/modules/public/reference_data/pedimento_regimens/seed.py @@ -0,0 +1,12 @@ +seed = [ + ("DFI", "DEPOSITO FISCAL."), + ("ETE", "TEMPORALES DE EXPORTACION PARA ELABORACION, TRANSFORMACION O REPARACION."), + ("ETR", "TEMPORALES DE EXPORTACION PARA RETORNAR AL PAIS EN EL MISMO ESTADO."), + ("EXD", "DEFINITIVO DE EXPORTACIÓN."), + ("IMD", "DEFINITIVO DE IMPORTACIÓN."), + ("ITE", "TEMPORALES DE IMPORTACION PARA ELABORACION, TRANSFORMACION O REPARACION PARA EMPRESAS CON PROGRAMA I"), + ("ITR", "TEMPORALES DE IMPORTACION PARA RETORNAR AL EXTRANJERO EN EL MISMO ESTADO."), + ("RFE", "ELABORACION, TRANSFORMACION O REPARACION EN RECINTO FISCALIZADO."), + ("RFS", "RECINTO FISCALIZADO ESTRATEGICO."), + ("TRA", "TRANSITOS.") +] \ No newline at end of file diff --git a/backend/api/v1/modules/public/sectors/models.py b/backend/api/v1/modules/public/reference_data/sectors/models.py similarity index 100% rename from backend/api/v1/modules/public/sectors/models.py rename to backend/api/v1/modules/public/reference_data/sectors/models.py diff --git a/backend/api/v1/modules/public/reference_data/sectors/seed.py b/backend/api/v1/modules/public/reference_data/sectors/seed.py new file mode 100644 index 00000000..d1165734 --- /dev/null +++ b/backend/api/v1/modules/public/reference_data/sectors/seed.py @@ -0,0 +1,35 @@ +seed = [ + ("I", "INDUSTRIA ELECTRICA", "0"), + ("II", "INDUSTRIA ELECTRONICA", "0"), + ("IIa", "PARA LOS BIENES A QUE SE REFIERE LA FRACCION II, INCISO a) o b), DE ARTICULO 4to DE ESTE DECRETO.", "0"), + ("IIb", "PARA LOS BIENES A QUE SE REFIERE LA FRACCION II, INCISO b), DE ARTICULO 4to DE ESTE DECRETO.", "0"), + ("III", "INDUSTRIA DEL MUEBLE", "0"), + ("IV", "INDUSTRIA DEL JUGUETE, JUEGOS DE RECREO Y ARTICULOS DEPORTIVOS", "0"), + ("IX", "INDUSTRIA DE MAQUINARIA AGRICOLA", "0"), + ("V", "INDUSTRIA DEL CALZADO", "0"), + ("VI", "INDUSTRIA MINERA Y METALURGICA", "0"), + ("VII", "INDUSTRIA DE BIENES DE CAPITAL", "0"), + ("VIII", "INDUSTRIA FOTOGRAFICA", "0"), + ("X", "INDUSTRIAS DIVERSAS", "0"), + ("XI", "INDUSTRIA QUIMICA", "0"), + ("XII", "INDUSTRIAS DE MANUFACTURAS DEL CAUCHO Y PLASTICOS", "0"), + ("XIII", "INDUSTRIA SIDERURGICA", "0"), + ("XIV", "INDUSTRIA DE PRODUCTOS FARMOQUIMICOS, MEDICAMENTOS Y EQUIPO MEDICO", "0"), + ("XIX", "INDUSTRIA AUTOMOTRIZ Y DE AUTOPARTES", "0"), + ("XIXa", "INDUSTRIA AUTOMOTRIZ Y DE AUTOPARTES", "0"), + ("XIXb", "INDUSTRIA AUTOMOTRIZ Y DE AUTOPARTES", "0"), + ("XV", "INDUSTRIA DEL TRANSPORTE, EXCEPTO EL SECTOR DE LA INDUSTRIA AUTOMOTRIZ Y DE AUTOPARTES", "0"), + ("XVa", "INDUSTRIA DEL TRANSPORTE, EXCEPTO EL SECTOR DE LA INDUSTRIA AUTOMOTRIZ Y DE AUTOPARTES.", "0"), + ("XVb", "INDUSTRIA DEL TRANSPORTE, EXCEPTO EL SECTOR DE LA INDUSTRIA AUTOMOTRIZ Y DE AUTOPARTES.", "0"), + ("XVI", "INDUSTRIA DEL PAPEL Y CARTON", "0"), + ("XVII", "INDUSTRIA DE LA MADERA", "0"), + ("XVIII", "INDUSTRIA DEL CUERO Y PIELES", "0"), + ("XX", "INDUSTRIA TEXTIL Y DE LA CONFECCION", "0"), + ("XXa", "INDUSTRIA TEXTIL Y DE LA CONFECCION", "0"), + ("XXb", "INDUSTRIA TEXTIL Y DE LA CONFECCION", "0"), + ("XXc", "INDUSTRIA TEXTIL Y DE LA CONFECCION", "0"), + ("XXd", "INDUSTRIA TEXTIL Y DE LA CONFECCION", "0"), + ("XXe", "INDUSTRIA TEXTIL Y DE LA CONFECCION", "0"), + ("XXI", "INDUSTRIA DE CHOCOLATES, DULCES Y SIMILARES", "0"), + ("XXII", "INDUSTRIA DEL CAFE", "0"), +] \ No newline at end of file diff --git a/backend/api/v1/modules/public/states/models.py b/backend/api/v1/modules/public/reference_data/states/models.py similarity index 100% rename from backend/api/v1/modules/public/states/models.py rename to backend/api/v1/modules/public/reference_data/states/models.py diff --git a/backend/api/v1/modules/public/reference_data/states/seed.py b/backend/api/v1/modules/public/reference_data/states/seed.py new file mode 100644 index 00000000..c7513c89 --- /dev/null +++ b/backend/api/v1/modules/public/reference_data/states/seed.py @@ -0,0 +1,3 @@ +seed = [ + +] \ No newline at end of file diff --git a/backend/api/v1/modules/public/transport_modes/models.py b/backend/api/v1/modules/public/reference_data/transport_modes/models.py similarity index 100% rename from backend/api/v1/modules/public/transport_modes/models.py rename to backend/api/v1/modules/public/reference_data/transport_modes/models.py diff --git a/backend/api/v1/modules/public/reference_data/transport_modes/seed.py b/backend/api/v1/modules/public/reference_data/transport_modes/seed.py new file mode 100644 index 00000000..55b396bd --- /dev/null +++ b/backend/api/v1/modules/public/reference_data/transport_modes/seed.py @@ -0,0 +1,12 @@ +seed = [ + ("10", "VESSEL"), + ("11", "VESSEL CONTAINER"), + ("12", "BORDER WATER BORNE (CAN -MEX )"), + ("20", "RAIL"), + ("21", "RAIL CONTAINER"), + ("30", "TRUCK"), + ("31", "TRUCK CONTAINER"), + ("40", "AIR"), + ("41", "AIR CONTAINER"), + ("50", "MAIL"), +] \ No newline at end of file diff --git a/backend/api/v1/modules/public/reference_data/transport_types/models.py b/backend/api/v1/modules/public/reference_data/transport_types/models.py new file mode 100644 index 00000000..97072835 --- /dev/null +++ b/backend/api/v1/modules/public/reference_data/transport_types/models.py @@ -0,0 +1,17 @@ +from sqlalchemy import String, PrimaryKeyConstraint +from sqlalchemy.orm import mapped_column, Mapped +from core.database import Base + + +class TransportType(Base): + __tablename__ = "transport_types" #GTiposTransporte + __table_args__ = ( + PrimaryKeyConstraint("transport_code", name="transport_types_pkey"), + {"schema": "public"} + ) + + transport_code: Mapped[str] = mapped_column(String(2), nullable=False) # código SAT o interno + description: Mapped[str] = mapped_column(String(100), nullable=False) # descripción del medio de transporte + + def __repr__(self): + return f"" diff --git a/backend/api/v1/modules/public/reference_data/transport_types/seed.py b/backend/api/v1/modules/public/reference_data/transport_types/seed.py new file mode 100644 index 00000000..d59b3d33 --- /dev/null +++ b/backend/api/v1/modules/public/reference_data/transport_types/seed.py @@ -0,0 +1,22 @@ +seed = [ + ("AR", "Armored Truck"), + ("AU", "Automobiles"), + ("BT", "Box Truck"), + ("BU", "Bus"), + ("BV", "Beverage Truck (Refer or not)"), + ("BY", "Bicycle"), + ("CO", "Construction Vehicle (general)"), + ("EV", "Emergency Vehicle (general)"), + ("FE", "Ferry"), + ("FM", "Farm Tractor"), + ("GB", "Garbage Truck"), + ("MC", "Motorcycle"), + ("OC", "Other"), + ("PM", "Pick-up Truck w/camper"), + ("PN", "Panel Truck"), + ("PU", "Pickup Truck"), + ("PV", "Passenger"), + ("RV", "Recreation Vehicle (RV)"), + ("TR", "Semi Tracker"), + ("TV", "Van"), +] \ No newline at end of file diff --git a/backend/api/v1/modules/public/valuation_methods/models.py b/backend/api/v1/modules/public/reference_data/valuation_methods/models.py similarity index 100% rename from backend/api/v1/modules/public/valuation_methods/models.py rename to backend/api/v1/modules/public/reference_data/valuation_methods/models.py diff --git a/backend/api/v1/modules/public/reference_data/valuation_methods/seed.py b/backend/api/v1/modules/public/reference_data/valuation_methods/seed.py new file mode 100644 index 00000000..3f861c6b --- /dev/null +++ b/backend/api/v1/modules/public/reference_data/valuation_methods/seed.py @@ -0,0 +1,9 @@ +seed = [ + ("0", "VALOR COMERCIAL (CLAVE USADA SOLO A LA EXPORTACION)."), + ("1", "VALOR DE TRANSACCION DE LAS MERCANCIAS."), + ("2", "VALOR DE TRANSACCION DE MERCANCIAS IDENTICAS."), + ("3", "VALOR DE TRANSACCION DE MERCANCIAS SIMILARES."), + ("4", "VALOR DE PRECIO UNITARIO DE VENTA."), + ("5", "VALOR RECONSTRUIDO."), + ("6", "ULTIMO RECURSO"), +] \ No newline at end of file diff --git a/backend/init_db.py b/backend/init_db.py deleted file mode 100644 index 2b9aa4d1..00000000 --- a/backend/init_db.py +++ /dev/null @@ -1,111 +0,0 @@ -""" -Script de inicialización de la base de datos -Crea las tablas y datos iniciales -""" -import sys -import os - -# Agregar el directorio backend al path -sys.path.insert(0, os.path.dirname(os.path.abspath(__file__))) - -from core.database import init_db, CoreSessionLocal -from api.v1.modules.a76.tenants.models import Tenant, TenantType -from api.v1.modules.a76.licenses.models import License, LicensePlan, LicenseStatus -from datetime import datetime, timedelta -import logging - -logging.basicConfig(level=logging.INFO) -logger = logging.getLogger(__name__) - - -def create_initial_data(): - """Crea datos iniciales de prueba""" - db = CoreSessionLocal() - - try: - # Verificar si ya existen datos - existing_tenant = db.query(Tenant).first() - if existing_tenant: - logger.info("Los datos iniciales ya existen. Saltando creación.") - return - - logger.info("Creando tenant de prueba...") - - # Crear tenant de prueba - tenant = Tenant( - name="Empresa Demo S.A. de C.V.", - slug="empresa-demo", - keycloak_realm="master", # Usar realm master para pruebas - type=TenantType.SHARED, - contact_name="Administrador Demo", - contact_email="admin@empresa-demo.com", - contact_phone="+52 55 1234 5678", - is_active=True - ) - - db.add(tenant) - db.commit() - db.refresh(tenant) - - logger.info(f"Tenant creado: ID={tenant.id}, slug={tenant.slug}") - - # Crear licencia para el tenant - logger.info("Creando licencia de prueba...") - - license = License( - tenant_id=tenant.id, - plan=LicensePlan.PROFESSIONAL, - status=LicenseStatus.ACTIVE, - max_users=50, - max_storage_gb=100, - max_monthly_operations=25000, - feature_api_access=True, - feature_advanced_reports=True, - feature_integrations=True, - feature_dedicated_support=False, - starts_at=datetime.utcnow(), - expires_at=datetime.utcnow() + timedelta(days=365) - ) - - db.add(license) - db.commit() - - logger.info(f"Licencia creada: Plan={license.plan.value}, Expira={license.expires_at}") - logger.info("✅ Datos iniciales creados exitosamente") - - logger.info("\n" + "="*60) - logger.info("INFORMACIÓN IMPORTANTE PARA KEYCLOAK") - logger.info("="*60) - logger.info(f"Tenant Slug: {tenant.slug}") - logger.info(f"Tenant ID: {tenant.id}") - logger.info(f"Keycloak Realm: {tenant.keycloak_realm}") - logger.info("\nPara probar el login, necesitas:") - logger.info("1. Crear un usuario en Keycloak (realm: master)") - logger.info("2. Agregar el atributo 'tenant_id' con valor: 1") - logger.info("3. Asignar roles apropiados (user, admin, etc.)") - logger.info("="*60 + "\n") - - except Exception as e: - db.rollback() - logger.error(f"Error creando datos iniciales: {str(e)}") - raise - finally: - db.close() - - -if __name__ == "__main__": - logger.info("Inicializando base de datos...") - - try: - # Crear tablas - init_db() - logger.info("✅ Tablas creadas exitosamente") - - # Crear datos iniciales - create_initial_data() - - logger.info("\n🎉 Base de datos inicializada correctamente") - - except Exception as e: - logger.error(f"❌ Error inicializando base de datos: {str(e)}") - sys.exit(1) diff --git a/backend/main.py b/backend/main.py index ba99fc34..58f2163b 100644 --- a/backend/main.py +++ b/backend/main.py @@ -24,30 +24,11 @@ logging.basicConfig( logger = logging.getLogger(__name__) - -@asynccontextmanager -async def lifespan(app: FastAPI): - """Lifecycle events""" - # Startup - logger.info("Starting Anexo76 API...") - try: - init_db() - logger.info("Database initialized successfully") - except Exception as e: - logger.error(f"Error initializing database: {str(e)}") - - yield - - # Shutdown - logger.info("Shutting down Anexo76 API...") - - # Crear aplicación FastAPI app = FastAPI( title="Anexo76 API", version=settings.APP_VERSION, description="Aplicación SaaS para gestión de comercio exterior conforme a Anexos 24, 31 y 22 del SAT", - lifespan=lifespan, docs_url="/docs" if settings.DEBUG else None, redoc_url="/redoc" if settings.DEBUG else None ) diff --git a/models.py b/models.py index a9bc76a0..dc0a617c 100644 --- a/models.py +++ b/models.py @@ -86,38 +86,6 @@ class Gempresa(Base): gempresa_sucursales: Mapped[List['GempresaSucursales']] = relationship('GempresaSucursales', uselist=True, back_populates='gempresa') -class Gtiposfactura(Base): - __tablename__ = 'gtiposfactura' - __table_args__ = ( - PrimaryKeyConstraint('clave', name='gtf_pkclave'), - ) - - clave = mapped_column(String(5)) - descripcion = mapped_column(String(50)) - observacion = mapped_column(String(500)) - tipo_origen = mapped_column(String(15)) - - -class Gtiposmoneda(Base): - __tablename__ = 'gtiposmoneda' - __table_args__ = ( - PrimaryKeyConstraint('clave', name='tipmon_pkclave'), - ) - - clave = mapped_column(String(3)) - moneda = mapped_column(String(15)) - descpais = mapped_column(String(50)) - - -class Gtipotransportes(Base): - __tablename__ = 'gtipotransportes' - __table_args__ = ( - PrimaryKeyConstraint('clavetransporte', name='gtipotransportes_pkey'), - ) - - clavetransporte = mapped_column(String(2)) - descripcion = mapped_column(String(100), nullable=False) - t_gempresa_certificacion = Table( 'gempresa_certificacion', metadata, Column('id_empresa', String(3), nullable=False), diff --git a/scripts/backend-entrypoint.sh b/scripts/backend-entrypoint.sh index df71fb58..d6f2eff1 100755 --- a/scripts/backend-entrypoint.sh +++ b/scripts/backend-entrypoint.sh @@ -40,20 +40,20 @@ wait_for_tcp "${CORE_DB_HOST:-postgres-a76}" "${CORE_DB_PORT:-5432}" "PostgreSQL # Esperar a Keycloak (HTTP por defecto usa puerto 8080) wait_for_tcp "keycloak" "8080" "Keycloak" -# Ejecutar inicialización de base de datos si existe el script -if [ -f "/app/init_db.py" ]; then - echo "Ejecutando inicialización de base de datos..." - python init_db.py || echo "⚠ WARNING: Error en init_db.py" - echo "✓ Inicialización de base de datos completada" +# Ejecutar migraciones de Alembic +if [ -d "/app/alembic" ]; then + echo "Ejecutando migraciones de Alembic..." + alembic upgrade head || { + echo "⚠ WARNING: Error al ejecutar migraciones" + echo " Verificando estado de la base de datos..." + alembic current || echo " No se pudo determinar la versión actual" + } + echo "✓ Migraciones completadas" +else + echo "⚠ WARNING: Directorio /app/alembic no encontrado" + echo " Las migraciones de base de datos no se ejecutaron" fi -# Ejecutar migraciones (si usas Alembic, descomentar las siguientes líneas) -# if [ -d "/app/alembic" ]; then -# echo "Ejecutando migraciones de Alembic..." -# alembic upgrade head -# echo "✓ Migraciones completadas" -# fi - echo "==========================================" echo "Iniciando aplicación FastAPI..." echo "=========================================="