Mudanza de repo
This commit is contained in:
0
api/datastage/__init__.py
Normal file
0
api/datastage/__init__.py
Normal file
44
api/datastage/admin.py
Normal file
44
api/datastage/admin.py
Normal file
@@ -0,0 +1,44 @@
|
||||
from django.contrib import admin
|
||||
|
||||
from .models import (
|
||||
DataStage, Registro500,
|
||||
Registro501, Registro502,
|
||||
Registro503, Registro504,
|
||||
Registro505, Registro506,
|
||||
Registro507, Registro508,
|
||||
Registro509, Registro510,
|
||||
Registro511, Registro512,
|
||||
Registro520, Registro551,
|
||||
Registro552, Registro553,
|
||||
Registro554, Registro555,
|
||||
Registro556, Registro557,
|
||||
Registro558, RegistroSel,
|
||||
Registro701, Registro702
|
||||
)
|
||||
# Register your models here.
|
||||
admin.site.register(DataStage)
|
||||
admin.site.register(Registro500)
|
||||
admin.site.register(Registro501)
|
||||
admin.site.register(Registro502)
|
||||
admin.site.register(Registro503)
|
||||
admin.site.register(Registro504)
|
||||
admin.site.register(Registro505)
|
||||
admin.site.register(Registro506)
|
||||
admin.site.register(Registro507)
|
||||
admin.site.register(Registro508)
|
||||
admin.site.register(Registro509)
|
||||
admin.site.register(Registro510)
|
||||
admin.site.register(Registro511)
|
||||
admin.site.register(Registro512)
|
||||
admin.site.register(Registro520)
|
||||
admin.site.register(Registro551)
|
||||
admin.site.register(Registro552)
|
||||
admin.site.register(Registro553)
|
||||
admin.site.register(Registro554)
|
||||
admin.site.register(Registro555)
|
||||
admin.site.register(Registro556)
|
||||
admin.site.register(Registro557)
|
||||
admin.site.register(Registro558)
|
||||
admin.site.register(Registro701)
|
||||
admin.site.register(Registro702)
|
||||
admin.site.register(RegistroSel)
|
||||
7
api/datastage/apps.py
Normal file
7
api/datastage/apps.py
Normal file
@@ -0,0 +1,7 @@
|
||||
from django.apps import AppConfig
|
||||
|
||||
|
||||
class DatastageConfig(AppConfig):
|
||||
default_auto_field = 'django.db.models.BigAutoField'
|
||||
name = 'api.datastage'
|
||||
|
||||
33
api/datastage/migrations/0001_initial.py
Normal file
33
api/datastage/migrations/0001_initial.py
Normal file
@@ -0,0 +1,33 @@
|
||||
# Generated by Django 5.2.3 on 2025-07-14 16:14
|
||||
|
||||
import django.db.models.deletion
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
initial = True
|
||||
|
||||
dependencies = [
|
||||
('organization', '0001_initial'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.CreateModel(
|
||||
name='DataStage',
|
||||
fields=[
|
||||
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||
('nombre', models.CharField(max_length=100, unique=True)),
|
||||
('almacenamiento', models.PositiveIntegerField(default=0)),
|
||||
('archivo', models.FileField(upload_to='datastages/')),
|
||||
('created_at', models.DateTimeField(auto_now_add=True)),
|
||||
('updated_at', models.DateTimeField(auto_now=True)),
|
||||
('organizacion', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='datastages', to='organization.organizacion')),
|
||||
],
|
||||
options={
|
||||
'verbose_name': 'DataStage',
|
||||
'verbose_name_plural': 'DataStages',
|
||||
'db_table': 'datastage',
|
||||
},
|
||||
),
|
||||
]
|
||||
@@ -0,0 +1,32 @@
|
||||
# Generated by Django 5.2.3 on 2025-08-14 15:30
|
||||
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('datastage', '0001_initial'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.RemoveField(
|
||||
model_name='datastage',
|
||||
name='almacenamiento',
|
||||
),
|
||||
migrations.RemoveField(
|
||||
model_name='datastage',
|
||||
name='nombre',
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='datastage',
|
||||
name='contribuyente',
|
||||
field=models.CharField(default='', max_length=100),
|
||||
preserve_default=False,
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='datastage',
|
||||
name='procesado',
|
||||
field=models.BooleanField(default=False),
|
||||
),
|
||||
]
|
||||
@@ -0,0 +1,20 @@
|
||||
# Generated by Django 5.2.3 on 2025-08-14 15:44
|
||||
|
||||
import django.db.models.deletion
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('datastage', '0002_remove_datastage_almacenamiento_and_more'),
|
||||
('organization', '0002_remove_organizacion_membretado_and_more'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AlterField(
|
||||
model_name='datastage',
|
||||
name='organizacion',
|
||||
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='datastages', to='organization.organizacion'),
|
||||
),
|
||||
]
|
||||
@@ -0,0 +1,588 @@
|
||||
# Generated by Django 5.2.3 on 2025-08-14 19:15
|
||||
|
||||
import django.db.models.deletion
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('datastage', '0003_alter_datastage_organizacion'),
|
||||
('organization', '0002_remove_organizacion_membretado_and_more'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.CreateModel(
|
||||
name='Registro500',
|
||||
fields=[
|
||||
('id', models.AutoField(primary_key=True, serialize=False)),
|
||||
('patente', models.CharField(blank=True, max_length=4, null=True)),
|
||||
('pedimento', models.CharField(blank=True, max_length=7, null=True)),
|
||||
('seccion_aduanera', models.CharField(blank=True, max_length=3, null=True)),
|
||||
('consecutivo_remesa', models.CharField(blank=True, max_length=50, null=True)),
|
||||
('numero_seleccion', models.CharField(blank=True, max_length=50, null=True)),
|
||||
('fecha_inicio_reconocimiento', models.DateField(blank=True, null=True)),
|
||||
('hora_inicio_reconocimiento', models.TimeField(blank=True, null=True)),
|
||||
('fecha_fin_reconocimiento', models.DateField(blank=True, null=True)),
|
||||
('hora_fin_reconocimiento', models.TimeField(blank=True, null=True)),
|
||||
('fraccion', models.CharField(blank=True, max_length=50, null=True)),
|
||||
('secuencia_fraccion', models.CharField(blank=True, max_length=50, null=True)),
|
||||
('clave_documento', models.CharField(blank=True, max_length=50, null=True)),
|
||||
('tipo_operacion', models.CharField(blank=True, max_length=50, null=True)),
|
||||
('grado_incidencia', models.CharField(blank=True, max_length=50, null=True)),
|
||||
('fecha_seleccion', models.DateField(blank=True, null=True)),
|
||||
('consulta', models.CharField(blank=True, max_length=50, null=True)),
|
||||
('created_at', models.DateTimeField(auto_now_add=True)),
|
||||
('updated_at', models.DateTimeField(auto_now=True)),
|
||||
('datastage', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='registro500s', to='datastage.datastage')),
|
||||
('organizacion', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='registro500s', to='organization.organizacion')),
|
||||
],
|
||||
options={
|
||||
'db_table': 'registro500',
|
||||
},
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name='Registro501',
|
||||
fields=[
|
||||
('id', models.AutoField(primary_key=True, serialize=False)),
|
||||
('patente', models.CharField(blank=True, max_length=4, null=True)),
|
||||
('pedimento', models.CharField(blank=True, max_length=7, null=True)),
|
||||
('seccion_aduanera', models.CharField(blank=True, max_length=3, null=True)),
|
||||
('tipo_operacion', models.CharField(blank=True, max_length=1, null=True)),
|
||||
('clave_documento', models.CharField(blank=True, max_length=2, null=True)),
|
||||
('seccion_aduanera_entrada', models.CharField(blank=True, max_length=3, null=True)),
|
||||
('curp_contribuyente', models.CharField(blank=True, max_length=18, null=True)),
|
||||
('rfc', models.CharField(blank=True, max_length=13, null=True)),
|
||||
('curp_agente_a', models.CharField(blank=True, max_length=18, null=True)),
|
||||
('tipo_cambio', models.DecimalField(blank=True, decimal_places=6, max_digits=18, null=True)),
|
||||
('total_fletes', models.CharField(blank=True, max_length=12, null=True)),
|
||||
('total_seguros', models.CharField(blank=True, max_length=12, null=True)),
|
||||
('total_embalajes', models.CharField(blank=True, max_length=12, null=True)),
|
||||
('total_incrementables', models.CharField(blank=True, max_length=12, null=True)),
|
||||
('total_deducibles', models.CharField(blank=True, max_length=12, null=True)),
|
||||
('peso_bruto_mercancia', models.DecimalField(blank=True, decimal_places=6, max_digits=18, null=True)),
|
||||
('medio_transporte_salida', models.CharField(blank=True, max_length=2, null=True)),
|
||||
('medio_transporte_arribo', models.CharField(blank=True, max_length=2, null=True)),
|
||||
('medio_transporte_entrada_salida', models.CharField(blank=True, max_length=2, null=True)),
|
||||
('destino_mercancia', models.CharField(blank=True, max_length=2, null=True)),
|
||||
('nombre_contribuyente', models.CharField(blank=True, max_length=120, null=True)),
|
||||
('calle_contribuyente', models.CharField(blank=True, max_length=80, null=True)),
|
||||
('num_interior_contribuyente', models.CharField(blank=True, max_length=10, null=True)),
|
||||
('num_exterior_contribuyente', models.CharField(blank=True, max_length=10, null=True)),
|
||||
('cp_contribuyente', models.CharField(blank=True, max_length=10, null=True)),
|
||||
('municipio_contribuyente', models.CharField(blank=True, max_length=80, null=True)),
|
||||
('entidad_fed_contribuyente', models.CharField(blank=True, max_length=3, null=True)),
|
||||
('pais_contribuyente', models.CharField(blank=True, max_length=3, null=True)),
|
||||
('tipo_pedimento', models.CharField(blank=True, max_length=50, null=True)),
|
||||
('fecha_recepcion_pedimento', models.DateTimeField(blank=True, null=True)),
|
||||
('fecha_pago_real', models.DateTimeField(blank=True, null=True)),
|
||||
('consulta', models.CharField(blank=True, max_length=50, null=True)),
|
||||
('datastage', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='registro501s', to='datastage.datastage')),
|
||||
('organizacion', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='registro501s', to='organization.organizacion')),
|
||||
],
|
||||
options={
|
||||
'db_table': 'registro501',
|
||||
},
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name='Registro502',
|
||||
fields=[
|
||||
('id', models.AutoField(primary_key=True, serialize=False)),
|
||||
('pedimento', models.CharField(blank=True, max_length=7, null=True)),
|
||||
('seccion_aduanera', models.CharField(blank=True, max_length=50, null=True)),
|
||||
('rfc_transportista', models.CharField(blank=True, max_length=13, null=True)),
|
||||
('curp_transportista', models.CharField(blank=True, max_length=18, null=True)),
|
||||
('nombre_transportista', models.CharField(blank=True, max_length=120, null=True)),
|
||||
('pais_transporte', models.CharField(blank=True, max_length=3, null=True)),
|
||||
('identificador_transporte', models.CharField(blank=True, max_length=17, null=True)),
|
||||
('fecha_pago_real', models.DateField(blank=True, null=True)),
|
||||
('created_by', models.IntegerField(blank=True, null=True)),
|
||||
('consulta', models.CharField(blank=True, max_length=50, null=True)),
|
||||
('patente', models.CharField(blank=True, max_length=50, null=True)),
|
||||
('datastage', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='registro502s', to='datastage.datastage')),
|
||||
('organizacion', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='registro502s', to='organization.organizacion')),
|
||||
],
|
||||
options={
|
||||
'db_table': 'registro502',
|
||||
},
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name='Registro503',
|
||||
fields=[
|
||||
('id', models.AutoField(primary_key=True, serialize=False)),
|
||||
('patente', models.CharField(blank=True, max_length=50, null=True)),
|
||||
('pedimento', models.CharField(blank=True, max_length=7, null=True)),
|
||||
('seccion_aduanera', models.CharField(blank=True, max_length=50, null=True)),
|
||||
('numero_guia', models.CharField(blank=True, max_length=20, null=True)),
|
||||
('tipo_guia', models.CharField(blank=True, max_length=1, null=True)),
|
||||
('fecha_pago_real', models.DateField(blank=True, null=True)),
|
||||
('created_by', models.IntegerField(blank=True, null=True)),
|
||||
('consulta', models.CharField(blank=True, max_length=50, null=True)),
|
||||
('datastage', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='registro503s', to='datastage.datastage')),
|
||||
('organizacion', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='registro503s', to='organization.organizacion')),
|
||||
],
|
||||
options={
|
||||
'db_table': 'registro503',
|
||||
},
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name='Registro504',
|
||||
fields=[
|
||||
('id', models.AutoField(primary_key=True, serialize=False)),
|
||||
('patente', models.CharField(blank=True, max_length=50, null=True)),
|
||||
('pedimento', models.CharField(blank=True, max_length=7, null=True)),
|
||||
('seccion_aduanera', models.CharField(blank=True, max_length=50, null=True)),
|
||||
('num_contenedor', models.CharField(blank=True, max_length=12, null=True)),
|
||||
('tipo_contenedor', models.CharField(blank=True, max_length=2, null=True)),
|
||||
('fecha_pago_real', models.DateField(blank=True, null=True)),
|
||||
('created_by', models.IntegerField(blank=True, null=True)),
|
||||
('consulta', models.CharField(blank=True, max_length=50, null=True)),
|
||||
('datastage', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='registro504s', to='datastage.datastage')),
|
||||
('organizacion', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='registro504s', to='organization.organizacion')),
|
||||
],
|
||||
options={
|
||||
'db_table': 'registro504',
|
||||
},
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name='Registro505',
|
||||
fields=[
|
||||
('id', models.AutoField(primary_key=True, serialize=False)),
|
||||
('pedimento', models.CharField(blank=True, max_length=7, null=True)),
|
||||
('seccion_aduanera', models.CharField(blank=True, max_length=50, null=True)),
|
||||
('fecha_facturacion', models.DateField(blank=True, null=True)),
|
||||
('numero_factura', models.CharField(blank=True, max_length=40, null=True)),
|
||||
('termino_facturacion', models.CharField(blank=True, max_length=3, null=True)),
|
||||
('moneda_facturacion', models.CharField(blank=True, max_length=3, null=True)),
|
||||
('valor_dolares', models.DecimalField(blank=True, decimal_places=6, max_digits=18, null=True)),
|
||||
('valor_moneda_extranjera', models.DecimalField(blank=True, decimal_places=6, max_digits=18, null=True)),
|
||||
('pais_facturacion', models.CharField(blank=True, max_length=3, null=True)),
|
||||
('entidad_fed_facturacion', models.CharField(blank=True, max_length=3, null=True)),
|
||||
('indent_fiscal_proveedor', models.CharField(blank=True, max_length=30, null=True)),
|
||||
('proveedor_mercancia', models.CharField(blank=True, max_length=120, null=True)),
|
||||
('calle_proveedor', models.CharField(blank=True, max_length=80, null=True)),
|
||||
('num_interior_proveedor', models.CharField(blank=True, max_length=10, null=True)),
|
||||
('num_exterior_proveedor', models.CharField(blank=True, max_length=10, null=True)),
|
||||
('cp_proveedor', models.CharField(blank=True, max_length=10, null=True)),
|
||||
('municipio_proveedor', models.CharField(blank=True, max_length=80, null=True)),
|
||||
('fecha_pago_real', models.CharField(blank=True, max_length=50, null=True)),
|
||||
('created_by', models.IntegerField(blank=True, null=True)),
|
||||
('consulta', models.CharField(blank=True, max_length=50, null=True)),
|
||||
('patente', models.CharField(blank=True, max_length=50, null=True)),
|
||||
('datastage', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='registro505s', to='datastage.datastage')),
|
||||
('organizacion', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='registro505s', to='organization.organizacion')),
|
||||
],
|
||||
options={
|
||||
'db_table': 'registro505',
|
||||
},
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name='Registro506',
|
||||
fields=[
|
||||
('id', models.AutoField(primary_key=True, serialize=False)),
|
||||
('patente', models.CharField(blank=True, max_length=50, null=True)),
|
||||
('pedimento', models.CharField(blank=True, max_length=7, null=True)),
|
||||
('seccion_aduanera', models.CharField(blank=True, max_length=50, null=True)),
|
||||
('tipo_fecha', models.CharField(blank=True, max_length=2, null=True)),
|
||||
('fecha_operacion', models.DateField(blank=True, null=True)),
|
||||
('fecha_validacion_pago_r', models.DateTimeField(blank=True, null=True)),
|
||||
('created_by', models.IntegerField(blank=True, null=True)),
|
||||
('consulta', models.CharField(blank=True, max_length=50, null=True)),
|
||||
('datastage', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='registro506s', to='datastage.datastage')),
|
||||
('organizacion', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='registro506s', to='organization.organizacion')),
|
||||
],
|
||||
options={
|
||||
'db_table': 'registro506',
|
||||
},
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name='Registro507',
|
||||
fields=[
|
||||
('id', models.AutoField(primary_key=True, serialize=False)),
|
||||
('patente', models.CharField(blank=True, max_length=50, null=True)),
|
||||
('pedimento', models.CharField(blank=True, max_length=7, null=True)),
|
||||
('seccion_aduanera', models.CharField(blank=True, max_length=50, null=True)),
|
||||
('clave_caso', models.CharField(blank=True, max_length=50, null=True)),
|
||||
('identificador_caso', models.CharField(blank=True, max_length=50, null=True)),
|
||||
('tipo_pedimento', models.CharField(blank=True, max_length=50, null=True)),
|
||||
('complemento_caso', models.CharField(blank=True, max_length=50, null=True)),
|
||||
('fecha_validacion_pago_r', models.CharField(blank=True, max_length=50, null=True)),
|
||||
('created_by', models.IntegerField(blank=True, null=True)),
|
||||
('consulta', models.CharField(blank=True, max_length=50, null=True)),
|
||||
('datastage', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='registro507s', to='datastage.datastage')),
|
||||
('organizacion', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='registro507s', to='organization.organizacion')),
|
||||
],
|
||||
options={
|
||||
'db_table': 'registro507',
|
||||
},
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name='Registro508',
|
||||
fields=[
|
||||
('id', models.AutoField(primary_key=True, serialize=False)),
|
||||
('patente', models.CharField(blank=True, max_length=50, null=True)),
|
||||
('pedimento', models.CharField(blank=True, max_length=7, null=True)),
|
||||
('seccion_aduanera', models.CharField(blank=True, max_length=50, null=True)),
|
||||
('institucion_emisora', models.CharField(blank=True, max_length=2, null=True)),
|
||||
('numero_cuenta', models.CharField(blank=True, max_length=50, null=True)),
|
||||
('folio_constancia', models.CharField(blank=True, max_length=17, null=True)),
|
||||
('fecha_constancia', models.DateField(blank=True, null=True)),
|
||||
('tipo_cuenta', models.CharField(blank=True, max_length=2, null=True)),
|
||||
('clave_garantia', models.CharField(blank=True, max_length=50, null=True)),
|
||||
('valor_unitario_titulo', models.DecimalField(blank=True, decimal_places=6, max_digits=18, null=True)),
|
||||
('total_garantia', models.DecimalField(blank=True, decimal_places=6, max_digits=18, null=True)),
|
||||
('cantidad_unidades', models.DecimalField(blank=True, decimal_places=6, max_digits=18, null=True)),
|
||||
('titulos_asignados', models.DecimalField(blank=True, decimal_places=6, max_digits=18, null=True)),
|
||||
('fecha_pago_real', models.DateField(blank=True, null=True)),
|
||||
('created_by', models.IntegerField(blank=True, null=True)),
|
||||
('consulta', models.CharField(blank=True, max_length=50, null=True)),
|
||||
('datastage', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='registro508s', to='datastage.datastage')),
|
||||
('organizacion', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='registro508s', to='organization.organizacion')),
|
||||
],
|
||||
options={
|
||||
'db_table': 'registro508',
|
||||
},
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name='Registro509',
|
||||
fields=[
|
||||
('id', models.AutoField(primary_key=True, serialize=False)),
|
||||
('patente', models.CharField(blank=True, max_length=4, null=True)),
|
||||
('pedimento', models.CharField(blank=True, max_length=7, null=True)),
|
||||
('seccion_aduanera', models.CharField(blank=True, max_length=3, null=True)),
|
||||
('clave_contribucion', models.CharField(blank=True, max_length=2, null=True)),
|
||||
('tasa_contribucion', models.DecimalField(blank=True, decimal_places=6, max_digits=18, null=True)),
|
||||
('tipo_tasa', models.CharField(blank=True, max_length=2, null=True)),
|
||||
('tipo_pedimento', models.IntegerField(blank=True, null=True)),
|
||||
('fecha_pago_real', models.DateTimeField(blank=True, null=True)),
|
||||
('created_by', models.IntegerField(blank=True, null=True)),
|
||||
('consulta', models.CharField(blank=True, max_length=50, null=True)),
|
||||
('datastage', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='registro509s', to='datastage.datastage')),
|
||||
('organizacion', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='registro509s', to='organization.organizacion')),
|
||||
],
|
||||
options={
|
||||
'db_table': 'registro509',
|
||||
},
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name='Registro510',
|
||||
fields=[
|
||||
('id', models.AutoField(primary_key=True, serialize=False)),
|
||||
('patente', models.CharField(blank=True, max_length=50, null=True)),
|
||||
('pedimento', models.CharField(blank=True, max_length=7, null=True)),
|
||||
('seccion_aduanera', models.CharField(blank=True, max_length=50, null=True)),
|
||||
('clave_contribucion', models.CharField(blank=True, max_length=2, null=True)),
|
||||
('tasa_contribucion', models.CharField(blank=True, max_length=50, null=True)),
|
||||
('tipo_tasa', models.CharField(blank=True, max_length=50, null=True)),
|
||||
('tipo_pedimento', models.CharField(blank=True, max_length=50, null=True)),
|
||||
('fecha_pago_real', models.CharField(blank=True, max_length=50, null=True)),
|
||||
('created_by', models.IntegerField(blank=True, null=True)),
|
||||
('consulta', models.CharField(blank=True, max_length=50, null=True)),
|
||||
('forma_pago', models.CharField(blank=True, max_length=3, null=True)),
|
||||
('importe_pago', models.CharField(blank=True, max_length=12, null=True)),
|
||||
('datastage', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='registro510s', to='datastage.datastage')),
|
||||
('organizacion', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='registro510s', to='organization.organizacion')),
|
||||
],
|
||||
options={
|
||||
'db_table': 'registro510',
|
||||
},
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name='Registro511',
|
||||
fields=[
|
||||
('id', models.AutoField(primary_key=True, serialize=False)),
|
||||
('patente', models.CharField(blank=True, max_length=50, null=True)),
|
||||
('pedimento', models.CharField(blank=True, max_length=7, null=True)),
|
||||
('seccion_aduanera', models.CharField(blank=True, max_length=50, null=True)),
|
||||
('secuencia_observacion', models.CharField(blank=True, max_length=3, null=True)),
|
||||
('observaciones', models.CharField(blank=True, max_length=120, null=True)),
|
||||
('tipo_pedimento', models.CharField(blank=True, max_length=50, null=True)),
|
||||
('fecha_validacion_pago_r', models.DateTimeField(blank=True, null=True)),
|
||||
('created_by', models.IntegerField(blank=True, null=True)),
|
||||
('consulta', models.CharField(blank=True, max_length=50, null=True)),
|
||||
('datastage', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='registro511s', to='datastage.datastage')),
|
||||
('organizacion', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='registro511s', to='organization.organizacion')),
|
||||
],
|
||||
options={
|
||||
'db_table': 'registro511',
|
||||
},
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name='Registro512',
|
||||
fields=[
|
||||
('id', models.AutoField(primary_key=True, serialize=False)),
|
||||
('patente', models.CharField(blank=True, max_length=50, null=True)),
|
||||
('pedimento', models.CharField(blank=True, max_length=7, null=True)),
|
||||
('seccion_aduanera', models.CharField(blank=True, max_length=3, null=True)),
|
||||
('patente_aduanal_orig', models.CharField(blank=True, max_length=4, null=True)),
|
||||
('pedimento_original', models.CharField(blank=True, max_length=7, null=True)),
|
||||
('seccion_aduanera_desp_orig', models.CharField(blank=True, max_length=50, null=True)),
|
||||
('documento_original', models.CharField(blank=True, max_length=50, null=True)),
|
||||
('fecha_operacion_orig', models.DateField(blank=True, null=True)),
|
||||
('fraccion_original', models.CharField(blank=True, max_length=8, null=True)),
|
||||
('unidad_medida', models.CharField(blank=True, max_length=2, null=True)),
|
||||
('mercancia_descargada', models.DecimalField(blank=True, decimal_places=6, max_digits=18, null=True)),
|
||||
('tipo_pedimento', models.CharField(blank=True, max_length=50, null=True)),
|
||||
('fecha_pago_real', models.DateTimeField(blank=True, null=True)),
|
||||
('created_by', models.IntegerField(blank=True, null=True)),
|
||||
('consulta', models.CharField(blank=True, max_length=50, null=True)),
|
||||
('datastage', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='registro512s', to='datastage.datastage')),
|
||||
('organizacion', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='registro512s', to='organization.organizacion')),
|
||||
],
|
||||
options={
|
||||
'db_table': 'registro512',
|
||||
},
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name='Registro520',
|
||||
fields=[
|
||||
('id', models.AutoField(primary_key=True, serialize=False)),
|
||||
('patente', models.CharField(blank=True, max_length=50, null=True)),
|
||||
('pedimento', models.CharField(blank=True, max_length=7, null=True)),
|
||||
('seccion_aduanera', models.CharField(blank=True, max_length=50, null=True)),
|
||||
('indent_fiscal_destinatario', models.CharField(blank=True, max_length=17, null=True)),
|
||||
('nombre_destinatario_mercancia', models.CharField(blank=True, max_length=120, null=True)),
|
||||
('calle_destinatario', models.CharField(blank=True, max_length=80, null=True)),
|
||||
('num_interior_destinatario', models.CharField(blank=True, max_length=10, null=True)),
|
||||
('num_exterior_destinatario', models.CharField(blank=True, max_length=10, null=True)),
|
||||
('cp_destinatario', models.CharField(blank=True, max_length=10, null=True)),
|
||||
('municipio_destinatario', models.CharField(blank=True, max_length=80, null=True)),
|
||||
('pais_destinatario', models.CharField(blank=True, max_length=3, null=True)),
|
||||
('fecha_pago_real', models.CharField(blank=True, max_length=50, null=True)),
|
||||
('created_at', models.IntegerField(blank=True, null=True)),
|
||||
('consulta', models.CharField(blank=True, max_length=50, null=True)),
|
||||
('created_by', models.IntegerField(blank=True, null=True)),
|
||||
('datastage', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='registro520s', to='datastage.datastage')),
|
||||
('organizacion', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='registro520s', to='organization.organizacion')),
|
||||
],
|
||||
options={
|
||||
'db_table': 'registro520',
|
||||
},
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name='Registro551',
|
||||
fields=[
|
||||
('id', models.AutoField(primary_key=True, serialize=False)),
|
||||
('patente', models.CharField(blank=True, max_length=50, null=True)),
|
||||
('pedimento', models.CharField(blank=True, max_length=7, null=True)),
|
||||
('seccion_aduanera', models.CharField(blank=True, max_length=50, null=True)),
|
||||
('fraccion', models.CharField(blank=True, max_length=8, null=True)),
|
||||
('secuencia_fraccion', models.CharField(blank=True, max_length=50, null=True)),
|
||||
('subdivision_fraccion', models.CharField(blank=True, max_length=8, null=True)),
|
||||
('descripcion_mercancia', models.CharField(blank=True, max_length=250, null=True)),
|
||||
('precio_unitario', models.DecimalField(blank=True, decimal_places=6, max_digits=18, null=True)),
|
||||
('valor_aduana', models.CharField(blank=True, max_length=12, null=True)),
|
||||
('valor_comercial', models.CharField(blank=True, max_length=12, null=True)),
|
||||
('valor_dolares', models.DecimalField(blank=True, decimal_places=6, max_digits=18, null=True)),
|
||||
('cantidad_um_comercial', models.DecimalField(blank=True, decimal_places=6, max_digits=18, null=True)),
|
||||
('unidad_medida_comercial', models.CharField(blank=True, max_length=2, null=True)),
|
||||
('cantidad_um_tarifa', models.DecimalField(blank=True, decimal_places=6, max_digits=18, null=True)),
|
||||
('unidad_medida_tarifa', models.CharField(blank=True, max_length=2, null=True)),
|
||||
('valor_agregado', models.CharField(blank=True, max_length=12, null=True)),
|
||||
('clave_vinculacion', models.CharField(blank=True, max_length=1, null=True)),
|
||||
('metodo_valorizacion', models.CharField(blank=True, max_length=2, null=True)),
|
||||
('codigo_mercancia_producto', models.CharField(blank=True, max_length=20, null=True)),
|
||||
('marca_mercancia_producto', models.CharField(blank=True, max_length=80, null=True)),
|
||||
('modelo_mercancia_producto', models.CharField(blank=True, max_length=80, null=True)),
|
||||
('pais_origen_destino', models.CharField(blank=True, max_length=3, null=True)),
|
||||
('pais_comprador_vendedor', models.CharField(blank=True, max_length=3, null=True)),
|
||||
('entidad_fed_origen', models.CharField(blank=True, max_length=3, null=True)),
|
||||
('entidad_fed_comprador', models.CharField(blank=True, max_length=3, null=True)),
|
||||
('entidad_fed_vendedor', models.CharField(blank=True, max_length=3, null=True)),
|
||||
('tipo_operacion', models.CharField(blank=True, max_length=50, null=True)),
|
||||
('clave_documento', models.CharField(blank=True, max_length=50, null=True)),
|
||||
('fecha_pago_real', models.DateTimeField(blank=True, null=True)),
|
||||
('created_by', models.IntegerField(blank=True, null=True)),
|
||||
('consulta', models.CharField(blank=True, max_length=50, null=True)),
|
||||
('entidad_fed_destino', models.CharField(blank=True, max_length=50, null=True)),
|
||||
('datastage', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='registro551s', to='datastage.datastage')),
|
||||
('organizacion', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='registro551s', to='organization.organizacion')),
|
||||
],
|
||||
options={
|
||||
'db_table': 'registro551',
|
||||
},
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name='Registro552',
|
||||
fields=[
|
||||
('id', models.AutoField(primary_key=True, serialize=False)),
|
||||
('patente', models.CharField(blank=True, max_length=50, null=True)),
|
||||
('pedimento', models.CharField(blank=True, max_length=7, null=True)),
|
||||
('seccion_aduanera', models.CharField(blank=True, max_length=50, null=True)),
|
||||
('fraccion', models.CharField(blank=True, max_length=8, null=True)),
|
||||
('secuencia_fraccion', models.CharField(blank=True, max_length=50, null=True)),
|
||||
('vin_numero_serie', models.CharField(blank=True, max_length=25, null=True)),
|
||||
('kilometraje_vehiculo', models.CharField(blank=True, max_length=6, null=True)),
|
||||
('fecha_pago_real', models.DateField(blank=True, null=True)),
|
||||
('created_by', models.IntegerField(blank=True, null=True)),
|
||||
('consulta', models.CharField(blank=True, max_length=50, null=True)),
|
||||
('datastage', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='registro552s', to='datastage.datastage')),
|
||||
('organizacion', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='registro552s', to='organization.organizacion')),
|
||||
],
|
||||
options={
|
||||
'db_table': 'registro552',
|
||||
},
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name='Registro553',
|
||||
fields=[
|
||||
('id', models.AutoField(primary_key=True, serialize=False)),
|
||||
('patente', models.CharField(blank=True, max_length=50, null=True)),
|
||||
('pedimento', models.CharField(blank=True, max_length=7, null=True)),
|
||||
('seccion_aduanera', models.CharField(blank=True, max_length=50, null=True)),
|
||||
('fraccion', models.CharField(blank=True, max_length=8, null=True)),
|
||||
('secuencia_fraccion', models.CharField(blank=True, max_length=50, null=True)),
|
||||
('clave_permiso', models.CharField(blank=True, max_length=3, null=True)),
|
||||
('firma_descargo', models.CharField(blank=True, max_length=40, null=True)),
|
||||
('numero_permiso', models.CharField(blank=True, max_length=30, null=True)),
|
||||
('valor_comercial_dolares', models.CharField(blank=True, max_length=50, null=True)),
|
||||
('cantidad_mum_tarifa', models.CharField(blank=True, max_length=50, null=True)),
|
||||
('fecha_pago_real', models.CharField(blank=True, max_length=50, null=True)),
|
||||
('created_by', models.IntegerField(blank=True, null=True)),
|
||||
('consulta', models.CharField(blank=True, max_length=50, null=True)),
|
||||
('datastage', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='registro553s', to='datastage.datastage')),
|
||||
('organizacion', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='registro553s', to='organization.organizacion')),
|
||||
],
|
||||
options={
|
||||
'db_table': 'registro553',
|
||||
},
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name='Registro554',
|
||||
fields=[
|
||||
('id', models.AutoField(primary_key=True, serialize=False)),
|
||||
('patente', models.CharField(blank=True, max_length=50, null=True)),
|
||||
('pedimento', models.CharField(blank=True, max_length=7, null=True)),
|
||||
('seccion_aduanera', models.CharField(blank=True, max_length=50, null=True)),
|
||||
('fraccion', models.CharField(blank=True, max_length=8, null=True)),
|
||||
('secuencia_fraccion', models.CharField(blank=True, max_length=50, null=True)),
|
||||
('clave_caso', models.CharField(blank=True, max_length=50, null=True)),
|
||||
('identificador_caso', models.CharField(blank=True, max_length=50, null=True)),
|
||||
('complemento_caso', models.CharField(blank=True, max_length=50, null=True)),
|
||||
('fecha_pago_real', models.DateTimeField(blank=True, null=True)),
|
||||
('created_by', models.IntegerField(blank=True, null=True)),
|
||||
('consulta', models.CharField(blank=True, max_length=50, null=True)),
|
||||
('datastage', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='registro554s', to='datastage.datastage')),
|
||||
('organizacion', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='registro554s', to='organization.organizacion')),
|
||||
],
|
||||
options={
|
||||
'db_table': 'registro554',
|
||||
},
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name='Registro555',
|
||||
fields=[
|
||||
('id', models.AutoField(primary_key=True, serialize=False)),
|
||||
('patente', models.CharField(blank=True, max_length=50, null=True)),
|
||||
('pedimento', models.CharField(blank=True, max_length=7, null=True)),
|
||||
('seccion_aduanera', models.CharField(blank=True, max_length=50, null=True)),
|
||||
('fraccion', models.CharField(blank=True, max_length=8, null=True)),
|
||||
('secuencia_fraccion', models.CharField(blank=True, max_length=50, null=True)),
|
||||
('institucion_emisora', models.CharField(blank=True, max_length=2, null=True)),
|
||||
('numero_cuenta', models.CharField(blank=True, max_length=17, null=True)),
|
||||
('folio_constancia', models.CharField(blank=True, max_length=17, null=True)),
|
||||
('fecha_constancia', models.DateField(blank=True, null=True)),
|
||||
('clave_garantia', models.CharField(blank=True, max_length=50, null=True)),
|
||||
('valor_unitario_titulo', models.DecimalField(blank=True, decimal_places=6, max_digits=18, null=True)),
|
||||
('total_garantia', models.DecimalField(blank=True, decimal_places=6, max_digits=18, null=True)),
|
||||
('cantidad_unidades_medida', models.DecimalField(blank=True, decimal_places=6, max_digits=18, null=True)),
|
||||
('titulos_asignados', models.DecimalField(blank=True, decimal_places=6, max_digits=18, null=True)),
|
||||
('fecha_pago_real', models.DateField(blank=True, null=True)),
|
||||
('created_by', models.IntegerField(blank=True, null=True)),
|
||||
('consulta', models.CharField(blank=True, max_length=50, null=True)),
|
||||
('datastage', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='registro555s', to='datastage.datastage')),
|
||||
('organizacion', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='registro555s', to='organization.organizacion')),
|
||||
],
|
||||
options={
|
||||
'db_table': 'registro555',
|
||||
},
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name='Registro556',
|
||||
fields=[
|
||||
('id', models.AutoField(primary_key=True, serialize=False)),
|
||||
('patente', models.CharField(blank=True, max_length=50, null=True)),
|
||||
('pedimento', models.CharField(blank=True, max_length=7, null=True)),
|
||||
('seccion_aduanera', models.CharField(blank=True, max_length=50, null=True)),
|
||||
('clave_contribucion', models.CharField(blank=True, max_length=2, null=True)),
|
||||
('tasa_contribucion', models.DecimalField(blank=True, decimal_places=6, max_digits=18, null=True)),
|
||||
('tipo_tasa', models.CharField(blank=True, max_length=2, null=True)),
|
||||
('fecha_pago_real', models.DateTimeField(blank=True, null=True)),
|
||||
('created_by', models.IntegerField(blank=True, null=True)),
|
||||
('consulta', models.CharField(blank=True, max_length=50, null=True)),
|
||||
('fraccion', models.CharField(blank=True, max_length=8, null=True)),
|
||||
('secuencia_fraccion', models.CharField(blank=True, max_length=50, null=True)),
|
||||
('datastage', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='registro556s', to='datastage.datastage')),
|
||||
('organizacion', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='registro556s', to='organization.organizacion')),
|
||||
],
|
||||
options={
|
||||
'db_table': 'registro556',
|
||||
},
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name='Registro557',
|
||||
fields=[
|
||||
('id', models.AutoField(primary_key=True, serialize=False)),
|
||||
('patente', models.CharField(blank=True, max_length=50, null=True)),
|
||||
('pedimento', models.CharField(blank=True, max_length=7, null=True)),
|
||||
('seccion_aduanera', models.CharField(blank=True, max_length=50, null=True)),
|
||||
('fraccion', models.CharField(blank=True, max_length=8, null=True)),
|
||||
('secuencia_fraccion', models.CharField(blank=True, max_length=50, null=True)),
|
||||
('clave_contribucion', models.CharField(blank=True, max_length=2, null=True)),
|
||||
('forma_pago', models.CharField(blank=True, max_length=3, null=True)),
|
||||
('importe_pago', models.CharField(blank=True, max_length=12, null=True)),
|
||||
('fecha_pago_real', models.DateTimeField(blank=True, null=True)),
|
||||
('created_by', models.IntegerField(blank=True, null=True)),
|
||||
('consulta', models.CharField(blank=True, max_length=50, null=True)),
|
||||
('datastage', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='registro557s', to='datastage.datastage')),
|
||||
('organizacion', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='registro557s', to='organization.organizacion')),
|
||||
],
|
||||
options={
|
||||
'db_table': 'registro557',
|
||||
},
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name='Registro558',
|
||||
fields=[
|
||||
('id', models.AutoField(primary_key=True, serialize=False)),
|
||||
('patente', models.CharField(blank=True, max_length=50, null=True)),
|
||||
('pedimento', models.CharField(blank=True, max_length=7, null=True)),
|
||||
('seccion_aduanera', models.CharField(blank=True, max_length=50, null=True)),
|
||||
('fraccion', models.CharField(blank=True, max_length=8, null=True)),
|
||||
('secuencia_fraccion', models.CharField(blank=True, max_length=50, null=True)),
|
||||
('secuencia_observacion', models.CharField(blank=True, max_length=3, null=True)),
|
||||
('observaciones', models.CharField(blank=True, max_length=120, null=True)),
|
||||
('fecha_pago_real', models.DateTimeField(blank=True, null=True)),
|
||||
('created_by', models.IntegerField(blank=True, null=True)),
|
||||
('consulta', models.CharField(blank=True, max_length=50, null=True)),
|
||||
('datastage', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='registro558s', to='datastage.datastage')),
|
||||
('organizacion', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='registro558s', to='organization.organizacion')),
|
||||
],
|
||||
options={
|
||||
'db_table': 'registro558',
|
||||
},
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name='RegistroSel',
|
||||
fields=[
|
||||
('id', models.AutoField(primary_key=True, serialize=False)),
|
||||
('patente', models.CharField(blank=True, max_length=50, null=True)),
|
||||
('pedimento', models.CharField(blank=True, max_length=50, null=True)),
|
||||
('seccion_aduanera', models.CharField(blank=True, max_length=50, null=True)),
|
||||
('consecutivo_remesa', models.CharField(blank=True, max_length=50, null=True)),
|
||||
('numero_seleccion', models.CharField(blank=True, max_length=50, null=True)),
|
||||
('fecha_seleccion', models.DateField(blank=True, null=True)),
|
||||
('hora_seleccion', models.TimeField(blank=True, null=True)),
|
||||
('semaforo_fiscal', models.CharField(blank=True, max_length=1, null=True)),
|
||||
('clave_documento', models.CharField(blank=True, max_length=3, null=True)),
|
||||
('tipo_operacion', models.CharField(blank=True, max_length=1, null=True)),
|
||||
('created_by', models.IntegerField(blank=True, null=True)),
|
||||
('consulta', models.CharField(blank=True, max_length=50, null=True)),
|
||||
('datastage', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='registro_sel', to='datastage.datastage')),
|
||||
('organizacion', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='registro_sel', to='organization.organizacion')),
|
||||
],
|
||||
options={
|
||||
'db_table': 'registro_sel',
|
||||
},
|
||||
),
|
||||
]
|
||||
63
api/datastage/migrations/0005_registro701_registro702.py
Normal file
63
api/datastage/migrations/0005_registro701_registro702.py
Normal file
@@ -0,0 +1,63 @@
|
||||
# Generated by Django 5.2.3 on 2025-08-14 19:19
|
||||
|
||||
import django.db.models.deletion
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('datastage', '0004_registro500_registro501_registro502_registro503_and_more'),
|
||||
('organization', '0002_remove_organizacion_membretado_and_more'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.CreateModel(
|
||||
name='Registro701',
|
||||
fields=[
|
||||
('id', models.AutoField(primary_key=True, serialize=False)),
|
||||
('patente', models.CharField(blank=True, max_length=4, null=True)),
|
||||
('pedimento', models.CharField(blank=True, max_length=7, null=True)),
|
||||
('seccion_aduanera', models.CharField(blank=True, max_length=3, null=True)),
|
||||
('clave_documento', models.CharField(blank=True, max_length=2, null=True)),
|
||||
('fecha_pago', models.DateField(blank=True, null=True)),
|
||||
('pedimento_anterior', models.CharField(blank=True, max_length=50, null=True)),
|
||||
('patente_anterior', models.CharField(blank=True, max_length=50, null=True)),
|
||||
('seccion_aduanera_anterior', models.CharField(blank=True, max_length=50, null=True)),
|
||||
('documento_anterior', models.CharField(blank=True, max_length=50, null=True)),
|
||||
('fecha_operacion_anterior', models.DateField(blank=True, null=True)),
|
||||
('pedimento_original', models.CharField(blank=True, max_length=50, null=True)),
|
||||
('patente_aduanal_orig', models.CharField(blank=True, max_length=50, null=True)),
|
||||
('seccion_aduanera_desp_orig', models.CharField(blank=True, max_length=50, null=True)),
|
||||
('fecha_pago_real', models.DateTimeField(blank=True, null=True)),
|
||||
('created_by', models.IntegerField(blank=True, null=True)),
|
||||
('consulta', models.CharField(blank=True, max_length=50, null=True)),
|
||||
('datastage', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='registro701s', to='datastage.datastage')),
|
||||
('organizacion', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='registro701s', to='organization.organizacion')),
|
||||
],
|
||||
options={
|
||||
'db_table': 'registro701',
|
||||
},
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name='Registro702',
|
||||
fields=[
|
||||
('id', models.AutoField(primary_key=True, serialize=False)),
|
||||
('patente', models.CharField(blank=True, max_length=50, null=True)),
|
||||
('pedimento', models.CharField(blank=True, max_length=7, null=True)),
|
||||
('seccion_aduanera', models.CharField(blank=True, max_length=50, null=True)),
|
||||
('clave_contribucion', models.CharField(blank=True, max_length=2, null=True)),
|
||||
('forma_pago', models.CharField(blank=True, max_length=50, null=True)),
|
||||
('importe_pago', models.CharField(blank=True, max_length=12, null=True)),
|
||||
('tipo_pedimento', models.CharField(blank=True, max_length=50, null=True)),
|
||||
('fecha_pago_real', models.DateTimeField(blank=True, null=True)),
|
||||
('created_by', models.IntegerField(blank=True, null=True)),
|
||||
('consulta', models.CharField(blank=True, max_length=50, null=True)),
|
||||
('datastage', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='registro702s', to='datastage.datastage')),
|
||||
('organizacion', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='registro702s', to='organization.organizacion')),
|
||||
],
|
||||
options={
|
||||
'db_table': 'registro702',
|
||||
},
|
||||
),
|
||||
]
|
||||
@@ -0,0 +1,22 @@
|
||||
# Generated by Django 5.2.3 on 2025-08-14 21:04
|
||||
|
||||
from django.db import migrations
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('datastage', '0005_registro701_registro702'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.RenameField(
|
||||
model_name='registro520',
|
||||
old_name='municipio_destinatario',
|
||||
new_name='municpio_destinatario',
|
||||
),
|
||||
migrations.RemoveField(
|
||||
model_name='registro520',
|
||||
name='created_by',
|
||||
),
|
||||
]
|
||||
@@ -0,0 +1,23 @@
|
||||
# Generated by Django 5.2.3 on 2025-08-14 21:13
|
||||
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('datastage', '0006_rename_municipio_destinatario_registro520_municpio_destinatario_and_more'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AlterField(
|
||||
model_name='datastage',
|
||||
name='archivo',
|
||||
field=models.FileField(blank=True, null=True, upload_to='datastages/'),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='datastage',
|
||||
name='contribuyente',
|
||||
field=models.CharField(blank=True, max_length=100, null=True),
|
||||
),
|
||||
]
|
||||
@@ -0,0 +1,25 @@
|
||||
# Generated by Django 5.2.3 on 2025-08-14 21:13
|
||||
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('datastage', '0007_alter_datastage_archivo_and_more'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AlterField(
|
||||
model_name='datastage',
|
||||
name='archivo',
|
||||
field=models.FileField(default='', upload_to='datastages/'),
|
||||
preserve_default=False,
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='datastage',
|
||||
name='contribuyente',
|
||||
field=models.CharField(default='', max_length=100),
|
||||
preserve_default=False,
|
||||
),
|
||||
]
|
||||
@@ -0,0 +1,23 @@
|
||||
# Generated by Django 5.2.3 on 2025-08-14 21:19
|
||||
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('datastage', '0008_alter_datastage_archivo_and_more'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AlterField(
|
||||
model_name='registro501',
|
||||
name='tipo_operacion',
|
||||
field=models.CharField(blank=True, max_length=50, null=True),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='registrosel',
|
||||
name='tipo_operacion',
|
||||
field=models.CharField(blank=True, max_length=50, null=True),
|
||||
),
|
||||
]
|
||||
@@ -0,0 +1,33 @@
|
||||
# Generated by Django 5.2.3 on 2025-08-14 21:27
|
||||
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('datastage', '0009_alter_registro501_tipo_operacion_and_more'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AlterField(
|
||||
model_name='registro501',
|
||||
name='clave_documento',
|
||||
field=models.CharField(blank=True, max_length=50, null=True),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='registro502',
|
||||
name='pais_transporte',
|
||||
field=models.CharField(blank=True, max_length=50, null=True),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='registro503',
|
||||
name='tipo_guia',
|
||||
field=models.CharField(blank=True, max_length=50, null=True),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='registro701',
|
||||
name='clave_documento',
|
||||
field=models.CharField(blank=True, max_length=50, null=True),
|
||||
),
|
||||
]
|
||||
@@ -0,0 +1,28 @@
|
||||
# Generated by Django 5.2.3 on 2025-08-14 21:38
|
||||
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('datastage', '0010_alter_registro501_clave_documento_and_more'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AlterField(
|
||||
model_name='registro502',
|
||||
name='fecha_pago_real',
|
||||
field=models.DateTimeField(blank=True, null=True),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='registro503',
|
||||
name='fecha_pago_real',
|
||||
field=models.DateTimeField(blank=True, null=True),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='registro504',
|
||||
name='fecha_pago_real',
|
||||
field=models.DateTimeField(blank=True, null=True),
|
||||
),
|
||||
]
|
||||
0
api/datastage/migrations/__init__.py
Normal file
0
api/datastage/migrations/__init__.py
Normal file
571
api/datastage/models.py
Normal file
571
api/datastage/models.py
Normal file
@@ -0,0 +1,571 @@
|
||||
from django.db import models
|
||||
|
||||
# Create your models here.
|
||||
class DataStage(models.Model):
|
||||
organizacion = models.ForeignKey('organization.Organizacion', on_delete=models.CASCADE, related_name='datastages', null=True, blank=True)
|
||||
archivo = models.FileField(upload_to='datastages/', blank=False, null=False)
|
||||
contribuyente = models.CharField(max_length=100, blank=False, null=False)
|
||||
procesado = models.BooleanField(default=False)
|
||||
|
||||
created_at = models.DateTimeField(auto_now_add=True)
|
||||
updated_at = models.DateTimeField(auto_now=True)
|
||||
class Meta:
|
||||
verbose_name = "DataStage"
|
||||
verbose_name_plural = "DataStages"
|
||||
db_table = 'datastage'
|
||||
|
||||
def __str__(self):
|
||||
return organizacion.nombre if self.organizacion else "DataStage sin organizacion"
|
||||
|
||||
class Registro500(models.Model):
|
||||
id = models.AutoField(primary_key=True)
|
||||
patente = models.CharField(max_length=4, null=True, blank=True)
|
||||
pedimento = models.CharField(max_length=7, null=True, blank=True)
|
||||
seccion_aduanera = models.CharField(max_length=3, null=True, blank=True)
|
||||
consecutivo_remesa = models.CharField(max_length=50, null=True, blank=True)
|
||||
numero_seleccion = models.CharField(max_length=50, null=True, blank=True)
|
||||
fecha_inicio_reconocimiento = models.DateField(null=True, blank=True)
|
||||
hora_inicio_reconocimiento = models.TimeField(null=True, blank=True)
|
||||
fecha_fin_reconocimiento = models.DateField(null=True, blank=True)
|
||||
hora_fin_reconocimiento = models.TimeField(null=True, blank=True)
|
||||
fraccion = models.CharField(max_length=50, null=True, blank=True)
|
||||
secuencia_fraccion = models.CharField(max_length=50, null=True, blank=True)
|
||||
clave_documento = models.CharField(max_length=50, null=True, blank=True)
|
||||
tipo_operacion = models.CharField(max_length=50, null=True, blank=True)
|
||||
grado_incidencia = models.CharField(max_length=50, null=True, blank=True)
|
||||
fecha_seleccion = models.DateField(null=True, blank=True)
|
||||
organizacion = models.ForeignKey('organization.Organizacion', on_delete=models.CASCADE, related_name='registro500s', null=True, blank=True)
|
||||
consulta = models.CharField(max_length=50, null=True, blank=True)
|
||||
datastage = models.ForeignKey(DataStage, on_delete=models.CASCADE, related_name='registro500s', null=True, blank=True)
|
||||
|
||||
created_at = models.DateTimeField(auto_now_add=True)
|
||||
updated_at = models.DateTimeField(auto_now=True)
|
||||
|
||||
def __str__(self):
|
||||
return f"{self.patente} - {self.pedimento} - {self.seccion_aduanera}"
|
||||
|
||||
class Meta:
|
||||
db_table = 'registro500'
|
||||
|
||||
class Registro501(models.Model):
|
||||
id = models.AutoField(primary_key=True)
|
||||
patente = models.CharField(max_length=4, null=True, blank=True)
|
||||
pedimento = models.CharField(max_length=7, null=True, blank=True)
|
||||
seccion_aduanera = models.CharField(max_length=3, null=True, blank=True)
|
||||
tipo_operacion = models.CharField(max_length=50, null=True, blank=True)
|
||||
clave_documento = models.CharField(max_length=50, null=True, blank=True)
|
||||
seccion_aduanera_entrada = models.CharField(max_length=3, null=True, blank=True)
|
||||
curp_contribuyente = models.CharField(max_length=18, null=True, blank=True)
|
||||
rfc = models.CharField(max_length=13, null=True, blank=True)
|
||||
curp_agente_a = models.CharField(max_length=18, null=True, blank=True)
|
||||
tipo_cambio = models.DecimalField(max_digits=18, decimal_places=6, null=True, blank=True)
|
||||
total_fletes = models.CharField(max_length=12, null=True, blank=True)
|
||||
total_seguros = models.CharField(max_length=12, null=True, blank=True)
|
||||
total_embalajes = models.CharField(max_length=12, null=True, blank=True)
|
||||
total_incrementables = models.CharField(max_length=12, null=True, blank=True)
|
||||
total_deducibles = models.CharField(max_length=12, null=True, blank=True)
|
||||
peso_bruto_mercancia = models.DecimalField(max_digits=18, decimal_places=6, null=True, blank=True)
|
||||
medio_transporte_salida = models.CharField(max_length=2, null=True, blank=True)
|
||||
medio_transporte_arribo = models.CharField(max_length=2, null=True, blank=True)
|
||||
medio_transporte_entrada_salida = models.CharField(max_length=2, null=True, blank=True)
|
||||
destino_mercancia = models.CharField(max_length=2, null=True, blank=True)
|
||||
nombre_contribuyente = models.CharField(max_length=120, null=True, blank=True)
|
||||
calle_contribuyente = models.CharField(max_length=80, null=True, blank=True)
|
||||
num_interior_contribuyente = models.CharField(max_length=10, null=True, blank=True)
|
||||
num_exterior_contribuyente = models.CharField(max_length=10, null=True, blank=True)
|
||||
cp_contribuyente = models.CharField(max_length=10, null=True, blank=True)
|
||||
municipio_contribuyente = models.CharField(max_length=80, null=True, blank=True)
|
||||
entidad_fed_contribuyente = models.CharField(max_length=3, null=True, blank=True)
|
||||
pais_contribuyente = models.CharField(max_length=3, null=True, blank=True)
|
||||
tipo_pedimento = models.CharField(max_length=50, null=True, blank=True)
|
||||
fecha_recepcion_pedimento = models.DateTimeField(null=True, blank=True)
|
||||
fecha_pago_real = models.DateTimeField(null=True, blank=True)
|
||||
organizacion = models.ForeignKey('organization.Organizacion', on_delete=models.CASCADE, related_name='registro501s', null=True, blank=True)
|
||||
consulta = models.CharField(max_length=50, null=True, blank=True)
|
||||
datastage = models.ForeignKey(DataStage, on_delete=models.CASCADE, related_name='registro501s', null=True, blank=True)
|
||||
|
||||
class Meta:
|
||||
db_table = 'registro501'
|
||||
|
||||
class Registro502(models.Model):
|
||||
id = models.AutoField(primary_key=True)
|
||||
pedimento = models.CharField(max_length=7, null=True, blank=True)
|
||||
seccion_aduanera = models.CharField(max_length=50, null=True, blank=True)
|
||||
rfc_transportista = models.CharField(max_length=13, null=True, blank=True)
|
||||
curp_transportista = models.CharField(max_length=18, null=True, blank=True)
|
||||
nombre_transportista = models.CharField(max_length=120, null=True, blank=True)
|
||||
pais_transporte = models.CharField(max_length=50, null=True, blank=True)
|
||||
identificador_transporte = models.CharField(max_length=17, null=True, blank=True)
|
||||
fecha_pago_real = models.DateTimeField(null=True, blank=True)
|
||||
organizacion = models.ForeignKey('organization.Organizacion', on_delete=models.CASCADE, related_name='registro502s', null=True, blank=True)
|
||||
created_by = models.IntegerField(null=True, blank=True)
|
||||
consulta = models.CharField(max_length=50, null=True, blank=True)
|
||||
datastage = models.ForeignKey(DataStage, on_delete=models.CASCADE, related_name='registro502s', null=True, blank=True)
|
||||
patente = models.CharField(max_length=50, null=True, blank=True)
|
||||
|
||||
class Meta:
|
||||
db_table = 'registro502'
|
||||
|
||||
class Registro503(models.Model):
|
||||
id = models.AutoField(primary_key=True)
|
||||
patente = models.CharField(max_length=50, null=True, blank=True)
|
||||
pedimento = models.CharField(max_length=7, null=True, blank=True)
|
||||
seccion_aduanera = models.CharField(max_length=50, null=True, blank=True)
|
||||
numero_guia = models.CharField(max_length=20, null=True, blank=True)
|
||||
tipo_guia = models.CharField(max_length=50, null=True, blank=True)
|
||||
fecha_pago_real = models.DateTimeField(null=True, blank=True)
|
||||
organizacion = models.ForeignKey('organization.Organizacion', on_delete=models.CASCADE, related_name='registro503s', null=True, blank=True)
|
||||
created_by = models.IntegerField(null=True, blank=True)
|
||||
consulta = models.CharField(max_length=50, null=True, blank=True)
|
||||
datastage = models.ForeignKey(DataStage, on_delete=models.CASCADE, related_name='registro503s', null=True, blank=True)
|
||||
|
||||
class Meta:
|
||||
db_table = 'registro503'
|
||||
|
||||
class Registro504(models.Model):
|
||||
id = models.AutoField(primary_key=True)
|
||||
patente = models.CharField(max_length=50, null=True, blank=True)
|
||||
pedimento = models.CharField(max_length=7, null=True, blank=True)
|
||||
seccion_aduanera = models.CharField(max_length=50, null=True, blank=True)
|
||||
num_contenedor = models.CharField(max_length=12, null=True, blank=True)
|
||||
tipo_contenedor = models.CharField(max_length=2, null=True, blank=True)
|
||||
fecha_pago_real = models.DateTimeField(null=True, blank=True)
|
||||
organizacion = models.ForeignKey('organization.Organizacion', on_delete=models.CASCADE, related_name='registro504s', null=True, blank=True)
|
||||
created_by = models.IntegerField(null=True, blank=True)
|
||||
consulta = models.CharField(max_length=50, null=True, blank=True)
|
||||
datastage = models.ForeignKey(DataStage, on_delete=models.CASCADE, related_name='registro504s', null=True, blank=True)
|
||||
|
||||
class Meta:
|
||||
db_table = 'registro504'
|
||||
|
||||
class Registro505(models.Model):
|
||||
id = models.AutoField(primary_key=True)
|
||||
pedimento = models.CharField(max_length=7, null=True, blank=True)
|
||||
seccion_aduanera = models.CharField(max_length=50, null=True, blank=True)
|
||||
fecha_facturacion = models.DateField(null=True, blank=True)
|
||||
numero_factura = models.CharField(max_length=40, null=True, blank=True)
|
||||
termino_facturacion = models.CharField(max_length=3, null=True, blank=True)
|
||||
moneda_facturacion = models.CharField(max_length=3, null=True, blank=True)
|
||||
valor_dolares = models.DecimalField(max_digits=18, decimal_places=6, null=True, blank=True)
|
||||
valor_moneda_extranjera = models.DecimalField(max_digits=18, decimal_places=6, null=True, blank=True)
|
||||
pais_facturacion = models.CharField(max_length=3, null=True, blank=True)
|
||||
entidad_fed_facturacion = models.CharField(max_length=3, null=True, blank=True)
|
||||
indent_fiscal_proveedor = models.CharField(max_length=30, null=True, blank=True)
|
||||
proveedor_mercancia = models.CharField(max_length=120, null=True, blank=True)
|
||||
calle_proveedor = models.CharField(max_length=80, null=True, blank=True)
|
||||
num_interior_proveedor = models.CharField(max_length=10, null=True, blank=True)
|
||||
num_exterior_proveedor = models.CharField(max_length=10, null=True, blank=True)
|
||||
cp_proveedor = models.CharField(max_length=10, null=True, blank=True)
|
||||
municipio_proveedor = models.CharField(max_length=80, null=True, blank=True)
|
||||
fecha_pago_real = models.CharField(max_length=50, null=True, blank=True)
|
||||
organizacion = models.ForeignKey('organization.Organizacion', on_delete=models.CASCADE, related_name='registro505s', null=True, blank=True)
|
||||
created_by = models.IntegerField(null=True, blank=True)
|
||||
consulta = models.CharField(max_length=50, null=True, blank=True)
|
||||
datastage = models.ForeignKey(DataStage, on_delete=models.CASCADE, related_name='registro505s', null=True, blank=True)
|
||||
patente = models.CharField(max_length=50, null=True, blank=True)
|
||||
|
||||
class Meta:
|
||||
db_table = 'registro505'
|
||||
|
||||
class Registro506(models.Model):
|
||||
id = models.AutoField(primary_key=True)
|
||||
patente = models.CharField(max_length=50, null=True, blank=True)
|
||||
pedimento = models.CharField(max_length=7, null=True, blank=True)
|
||||
seccion_aduanera = models.CharField(max_length=50, null=True, blank=True)
|
||||
tipo_fecha = models.CharField(max_length=2, null=True, blank=True)
|
||||
fecha_operacion = models.DateField(null=True, blank=True)
|
||||
fecha_validacion_pago_r = models.DateTimeField(null=True, blank=True)
|
||||
organizacion = models.ForeignKey('organization.Organizacion', on_delete=models.CASCADE, related_name='registro506s', null=True, blank=True)
|
||||
created_by = models.IntegerField(null=True, blank=True)
|
||||
consulta = models.CharField(max_length=50, null=True, blank=True)
|
||||
datastage = models.ForeignKey(DataStage, on_delete=models.CASCADE, related_name='registro506s', null=True, blank=True)
|
||||
|
||||
class Meta:
|
||||
db_table = 'registro506'
|
||||
|
||||
class Registro507(models.Model):
|
||||
id = models.AutoField(primary_key=True)
|
||||
patente = models.CharField(max_length=50, null=True, blank=True)
|
||||
pedimento = models.CharField(max_length=7, null=True, blank=True)
|
||||
seccion_aduanera = models.CharField(max_length=50, null=True, blank=True)
|
||||
clave_caso = models.CharField(max_length=50, null=True, blank=True)
|
||||
identificador_caso = models.CharField(max_length=50, null=True, blank=True)
|
||||
tipo_pedimento = models.CharField(max_length=50, null=True, blank=True)
|
||||
complemento_caso = models.CharField(max_length=50, null=True, blank=True)
|
||||
fecha_validacion_pago_r = models.CharField(max_length=50, null=True, blank=True)
|
||||
organizacion = models.ForeignKey('organization.Organizacion', on_delete=models.CASCADE, related_name='registro507s', null=True, blank=True)
|
||||
created_by = models.IntegerField(null=True, blank=True)
|
||||
consulta = models.CharField(max_length=50, null=True, blank=True)
|
||||
datastage = models.ForeignKey(DataStage, on_delete=models.CASCADE, related_name='registro507s', null=True, blank=True)
|
||||
|
||||
class Meta:
|
||||
db_table = 'registro507'
|
||||
|
||||
class Registro508(models.Model):
|
||||
id = models.AutoField(primary_key=True)
|
||||
patente = models.CharField(max_length=50, null=True, blank=True)
|
||||
pedimento = models.CharField(max_length=7, null=True, blank=True)
|
||||
seccion_aduanera = models.CharField(max_length=50, null=True, blank=True)
|
||||
institucion_emisora = models.CharField(max_length=2, null=True, blank=True)
|
||||
numero_cuenta = models.CharField(max_length=50, null=True, blank=True)
|
||||
folio_constancia = models.CharField(max_length=17, null=True, blank=True)
|
||||
fecha_constancia = models.DateField(null=True, blank=True)
|
||||
tipo_cuenta = models.CharField(max_length=2, null=True, blank=True)
|
||||
clave_garantia = models.CharField(max_length=50, null=True, blank=True)
|
||||
valor_unitario_titulo = models.DecimalField(max_digits=18, decimal_places=6, null=True, blank=True)
|
||||
total_garantia = models.DecimalField(max_digits=18, decimal_places=6, null=True, blank=True)
|
||||
cantidad_unidades = models.DecimalField(max_digits=18, decimal_places=6, null=True, blank=True)
|
||||
titulos_asignados = models.DecimalField(max_digits=18, decimal_places=6, null=True, blank=True)
|
||||
fecha_pago_real = models.DateField(null=True, blank=True)
|
||||
organizacion = models.ForeignKey('organization.Organizacion', on_delete=models.CASCADE, related_name='registro508s', null=True, blank=True)
|
||||
created_by = models.IntegerField(null=True, blank=True)
|
||||
consulta = models.CharField(max_length=50, null=True, blank=True)
|
||||
datastage = models.ForeignKey(DataStage, on_delete=models.CASCADE, related_name='registro508s', null=True, blank=True)
|
||||
|
||||
class Meta:
|
||||
db_table = 'registro508'
|
||||
|
||||
class Registro509(models.Model):
|
||||
id = models.AutoField(primary_key=True)
|
||||
patente = models.CharField(max_length=4, null=True, blank=True)
|
||||
pedimento = models.CharField(max_length=7, null=True, blank=True)
|
||||
seccion_aduanera = models.CharField(max_length=3, null=True, blank=True)
|
||||
clave_contribucion = models.CharField(max_length=2, null=True, blank=True)
|
||||
tasa_contribucion = models.DecimalField(max_digits=18, decimal_places=6, null=True, blank=True)
|
||||
tipo_tasa = models.CharField(max_length=2, null=True, blank=True)
|
||||
tipo_pedimento = models.IntegerField(null=True, blank=True)
|
||||
fecha_pago_real = models.DateTimeField(null=True, blank=True)
|
||||
organizacion = models.ForeignKey('organization.Organizacion', on_delete=models.CASCADE, related_name='registro509s', null=True, blank=True)
|
||||
created_by = models.IntegerField(null=True, blank=True)
|
||||
consulta = models.CharField(max_length=50, null=True, blank=True)
|
||||
datastage = models.ForeignKey(DataStage, on_delete=models.CASCADE, related_name='registro509s', null=True, blank=True)
|
||||
|
||||
class Meta:
|
||||
db_table = 'registro509'
|
||||
|
||||
class Registro510(models.Model):
|
||||
id = models.AutoField(primary_key=True)
|
||||
patente = models.CharField(max_length=50, null=True, blank=True)
|
||||
pedimento = models.CharField(max_length=7, null=True, blank=True)
|
||||
seccion_aduanera = models.CharField(max_length=50, null=True, blank=True)
|
||||
clave_contribucion = models.CharField(max_length=2, null=True, blank=True)
|
||||
tasa_contribucion = models.CharField(max_length=50, null=True, blank=True)
|
||||
tipo_tasa = models.CharField(max_length=50, null=True, blank=True)
|
||||
tipo_pedimento = models.CharField(max_length=50, null=True, blank=True)
|
||||
fecha_pago_real = models.CharField(max_length=50, null=True, blank=True)
|
||||
organizacion = models.ForeignKey('organization.Organizacion', on_delete=models.CASCADE, related_name='registro510s', null=True, blank=True)
|
||||
created_by = models.IntegerField(null=True, blank=True)
|
||||
datastage = models.ForeignKey(DataStage, on_delete=models.CASCADE, related_name='registro510s', null=True, blank=True)
|
||||
consulta = models.CharField(max_length=50, null=True, blank=True)
|
||||
forma_pago = models.CharField(max_length=3, null=True, blank=True)
|
||||
importe_pago = models.CharField(max_length=12, null=True, blank=True)
|
||||
|
||||
class Meta:
|
||||
db_table = 'registro510'
|
||||
|
||||
class Registro511(models.Model):
|
||||
id = models.AutoField(primary_key=True)
|
||||
patente = models.CharField(max_length=50, null=True, blank=True)
|
||||
pedimento = models.CharField(max_length=7, null=True, blank=True)
|
||||
seccion_aduanera = models.CharField(max_length=50, null=True, blank=True)
|
||||
secuencia_observacion = models.CharField(max_length=3, null=True, blank=True)
|
||||
observaciones = models.CharField(max_length=120, null=True, blank=True)
|
||||
tipo_pedimento = models.CharField(max_length=50, null=True, blank=True)
|
||||
fecha_validacion_pago_r = models.DateTimeField(null=True, blank=True)
|
||||
organizacion = models.ForeignKey('organization.Organizacion', on_delete=models.CASCADE, related_name='registro511s', null=True, blank=True)
|
||||
created_by = models.IntegerField(null=True, blank=True)
|
||||
consulta = models.CharField(max_length=50, null=True, blank=True)
|
||||
datastage = models.ForeignKey(DataStage, on_delete=models.CASCADE, related_name='registro511s', null=True, blank=True)
|
||||
|
||||
class Meta:
|
||||
db_table = 'registro511'
|
||||
|
||||
class Registro512(models.Model):
|
||||
id = models.AutoField(primary_key=True)
|
||||
patente = models.CharField(max_length=50, null=True, blank=True)
|
||||
pedimento = models.CharField(max_length=7, null=True, blank=True)
|
||||
seccion_aduanera = models.CharField(max_length=3, null=True, blank=True)
|
||||
patente_aduanal_orig = models.CharField(max_length=4, null=True, blank=True)
|
||||
pedimento_original = models.CharField(max_length=7, null=True, blank=True)
|
||||
seccion_aduanera_desp_orig = models.CharField(max_length=50, null=True, blank=True)
|
||||
documento_original = models.CharField(max_length=50, null=True, blank=True)
|
||||
fecha_operacion_orig = models.DateField(null=True, blank=True)
|
||||
fraccion_original = models.CharField(max_length=8, null=True, blank=True)
|
||||
unidad_medida = models.CharField(max_length=2, null=True, blank=True)
|
||||
mercancia_descargada = models.DecimalField(max_digits=18, decimal_places=6, null=True, blank=True)
|
||||
tipo_pedimento = models.CharField(max_length=50, null=True, blank=True)
|
||||
fecha_pago_real = models.DateTimeField(null=True, blank=True)
|
||||
organizacion = models.ForeignKey('organization.Organizacion', on_delete=models.CASCADE, related_name='registro512s', null=True, blank=True)
|
||||
created_by = models.IntegerField(null=True, blank=True)
|
||||
consulta = models.CharField(max_length=50, null=True, blank=True)
|
||||
datastage = models.ForeignKey(DataStage, on_delete=models.CASCADE, related_name='registro512s', null=True, blank=True)
|
||||
|
||||
class Meta:
|
||||
db_table = 'registro512'
|
||||
|
||||
class Registro520(models.Model):
|
||||
id = models.AutoField(primary_key=True)
|
||||
patente = models.CharField(max_length=50, null=True, blank=True)
|
||||
pedimento = models.CharField(max_length=7, null=True, blank=True)
|
||||
seccion_aduanera = models.CharField(max_length=50, null=True, blank=True)
|
||||
indent_fiscal_destinatario = models.CharField(max_length=17, null=True, blank=True)
|
||||
nombre_destinatario_mercancia = models.CharField(max_length=120, null=True, blank=True)
|
||||
calle_destinatario = models.CharField(max_length=80, null=True, blank=True)
|
||||
num_interior_destinatario = models.CharField(max_length=10, null=True, blank=True)
|
||||
num_exterior_destinatario = models.CharField(max_length=10, null=True, blank=True)
|
||||
cp_destinatario = models.CharField(max_length=10, null=True, blank=True)
|
||||
municpio_destinatario = models.CharField(max_length=80, null=True, blank=True)
|
||||
pais_destinatario = models.CharField(max_length=3, null=True, blank=True)
|
||||
fecha_pago_real = models.CharField(max_length=50, null=True, blank=True)
|
||||
organizacion = models.ForeignKey('organization.Organizacion', on_delete=models.CASCADE, related_name='registro520s', null=True, blank=True)
|
||||
created_at = models.IntegerField(null=True, blank=True)
|
||||
consulta = models.CharField(max_length=50, null=True, blank=True)
|
||||
datastage = models.ForeignKey(DataStage, on_delete=models.CASCADE, related_name='registro520s', null=True, blank=True)
|
||||
|
||||
class Meta:
|
||||
db_table = 'registro520'
|
||||
|
||||
class Registro551(models.Model):
|
||||
id = models.AutoField(primary_key=True)
|
||||
patente = models.CharField(max_length=50, null=True, blank=True)
|
||||
pedimento = models.CharField(max_length=7, null=True, blank=True)
|
||||
seccion_aduanera = models.CharField(max_length=50, null=True, blank=True)
|
||||
fraccion = models.CharField(max_length=8, null=True, blank=True)
|
||||
secuencia_fraccion = models.CharField(max_length=50, null=True, blank=True)
|
||||
subdivision_fraccion = models.CharField(max_length=8, null=True, blank=True)
|
||||
descripcion_mercancia = models.CharField(max_length=250, null=True, blank=True)
|
||||
precio_unitario = models.DecimalField(max_digits=18, decimal_places=6, null=True, blank=True)
|
||||
valor_aduana = models.CharField(max_length=12, null=True, blank=True)
|
||||
valor_comercial = models.CharField(max_length=12, null=True, blank=True)
|
||||
valor_dolares = models.DecimalField(max_digits=18, decimal_places=6, null=True, blank=True)
|
||||
cantidad_um_comercial = models.DecimalField(max_digits=18, decimal_places=6, null=True, blank=True)
|
||||
unidad_medida_comercial = models.CharField(max_length=2, null=True, blank=True)
|
||||
cantidad_um_tarifa = models.DecimalField(max_digits=18, decimal_places=6, null=True, blank=True)
|
||||
unidad_medida_tarifa = models.CharField(max_length=2, null=True, blank=True)
|
||||
valor_agregado = models.CharField(max_length=12, null=True, blank=True)
|
||||
clave_vinculacion = models.CharField(max_length=1, null=True, blank=True)
|
||||
metodo_valorizacion = models.CharField(max_length=2, null=True, blank=True)
|
||||
codigo_mercancia_producto = models.CharField(max_length=20, null=True, blank=True)
|
||||
marca_mercancia_producto = models.CharField(max_length=80, null=True, blank=True)
|
||||
modelo_mercancia_producto = models.CharField(max_length=80, null=True, blank=True)
|
||||
pais_origen_destino = models.CharField(max_length=3, null=True, blank=True)
|
||||
pais_comprador_vendedor = models.CharField(max_length=3, null=True, blank=True)
|
||||
entidad_fed_origen = models.CharField(max_length=3, null=True, blank=True)
|
||||
entidad_fed_comprador = models.CharField(max_length=3, null=True, blank=True)
|
||||
entidad_fed_vendedor = models.CharField(max_length=3, null=True, blank=True)
|
||||
tipo_operacion = models.CharField(max_length=50, null=True, blank=True)
|
||||
clave_documento = models.CharField(max_length=50, null=True, blank=True)
|
||||
fecha_pago_real = models.DateTimeField(null=True, blank=True)
|
||||
organizacion = models.ForeignKey('organization.Organizacion', on_delete=models.CASCADE, related_name='registro551s', null=True, blank=True)
|
||||
created_by = models.IntegerField(null=True, blank=True)
|
||||
consulta = models.CharField(max_length=50, null=True, blank=True)
|
||||
datastage = models.ForeignKey(DataStage, on_delete=models.CASCADE, related_name='registro551s', null=True, blank=True)
|
||||
entidad_fed_destino = models.CharField(max_length=50, null=True, blank=True)
|
||||
|
||||
class Meta:
|
||||
db_table = 'registro551'
|
||||
|
||||
class Registro552(models.Model):
|
||||
id = models.AutoField(primary_key=True)
|
||||
patente = models.CharField(max_length=50, null=True, blank=True)
|
||||
pedimento = models.CharField(max_length=7, null=True, blank=True)
|
||||
seccion_aduanera = models.CharField(max_length=50, null=True, blank=True)
|
||||
fraccion = models.CharField(max_length=8, null=True, blank=True)
|
||||
secuencia_fraccion = models.CharField(max_length=50, null=True, blank=True)
|
||||
vin_numero_serie = models.CharField(max_length=25, null=True, blank=True)
|
||||
kilometraje_vehiculo = models.CharField(max_length=6, null=True, blank=True)
|
||||
fecha_pago_real = models.DateField(null=True, blank=True)
|
||||
organizacion = models.ForeignKey('organization.Organizacion', on_delete=models.CASCADE, related_name='registro552s', null=True, blank=True)
|
||||
created_by = models.IntegerField(null=True, blank=True)
|
||||
consulta = models.CharField(max_length=50, null=True, blank=True)
|
||||
datastage = models.ForeignKey(DataStage, on_delete=models.CASCADE, related_name='registro552s', null=True, blank=True)
|
||||
|
||||
class Meta:
|
||||
db_table = 'registro552'
|
||||
|
||||
class Registro553(models.Model):
|
||||
id = models.AutoField(primary_key=True)
|
||||
patente = models.CharField(max_length=50, null=True, blank=True)
|
||||
pedimento = models.CharField(max_length=7, null=True, blank=True)
|
||||
seccion_aduanera = models.CharField(max_length=50, null=True, blank=True)
|
||||
fraccion = models.CharField(max_length=8, null=True, blank=True)
|
||||
secuencia_fraccion = models.CharField(max_length=50, null=True, blank=True)
|
||||
clave_permiso = models.CharField(max_length=3, null=True, blank=True)
|
||||
firma_descargo = models.CharField(max_length=40, null=True, blank=True)
|
||||
numero_permiso = models.CharField(max_length=30, null=True, blank=True)
|
||||
valor_comercial_dolares = models.CharField(max_length=50, null=True, blank=True)
|
||||
cantidad_mum_tarifa = models.CharField(max_length=50, null=True, blank=True)
|
||||
fecha_pago_real = models.CharField(max_length=50, null=True, blank=True)
|
||||
organizacion = models.ForeignKey('organization.Organizacion', on_delete=models.CASCADE, related_name='registro553s', null=True, blank=True)
|
||||
created_by = models.IntegerField(null=True, blank=True)
|
||||
datastage = models.ForeignKey(DataStage, on_delete=models.CASCADE, related_name='registro553s', null=True, blank=True)
|
||||
consulta = models.CharField(max_length=50, null=True, blank=True)
|
||||
|
||||
class Meta:
|
||||
db_table = 'registro553'
|
||||
|
||||
class Registro554(models.Model):
|
||||
id = models.AutoField(primary_key=True)
|
||||
patente = models.CharField(max_length=50, null=True, blank=True)
|
||||
pedimento = models.CharField(max_length=7, null=True, blank=True)
|
||||
seccion_aduanera = models.CharField(max_length=50, null=True, blank=True)
|
||||
fraccion = models.CharField(max_length=8, null=True, blank=True)
|
||||
secuencia_fraccion = models.CharField(max_length=50, null=True, blank=True)
|
||||
clave_caso = models.CharField(max_length=50, null=True, blank=True)
|
||||
identificador_caso = models.CharField(max_length=50, null=True, blank=True)
|
||||
complemento_caso = models.CharField(max_length=50, null=True, blank=True)
|
||||
fecha_pago_real = models.DateTimeField(null=True, blank=True)
|
||||
organizacion = models.ForeignKey('organization.Organizacion', on_delete=models.CASCADE, related_name='registro554s', null=True, blank=True)
|
||||
created_by = models.IntegerField(null=True, blank=True)
|
||||
consulta = models.CharField(max_length=50, null=True, blank=True)
|
||||
datastage = models.ForeignKey(DataStage, on_delete=models.CASCADE, related_name='registro554s', null=True, blank=True)
|
||||
|
||||
class Meta:
|
||||
db_table = 'registro554'
|
||||
|
||||
class Registro555(models.Model):
|
||||
id = models.AutoField(primary_key=True)
|
||||
patente = models.CharField(max_length=50, null=True, blank=True)
|
||||
pedimento = models.CharField(max_length=7, null=True, blank=True)
|
||||
seccion_aduanera = models.CharField(max_length=50, null=True, blank=True)
|
||||
fraccion = models.CharField(max_length=8, null=True, blank=True)
|
||||
secuencia_fraccion = models.CharField(max_length=50, null=True, blank=True)
|
||||
institucion_emisora = models.CharField(max_length=2, null=True, blank=True)
|
||||
numero_cuenta = models.CharField(max_length=17, null=True, blank=True)
|
||||
folio_constancia = models.CharField(max_length=17, null=True, blank=True)
|
||||
fecha_constancia = models.DateField(null=True, blank=True)
|
||||
clave_garantia = models.CharField(max_length=50, null=True, blank=True)
|
||||
valor_unitario_titulo = models.DecimalField(max_digits=18, decimal_places=6, null=True, blank=True)
|
||||
total_garantia = models.DecimalField(max_digits=18, decimal_places=6, null=True, blank=True)
|
||||
cantidad_unidades_medida = models.DecimalField(max_digits=18, decimal_places=6, null=True, blank=True)
|
||||
titulos_asignados = models.DecimalField(max_digits=18, decimal_places=6, null=True, blank=True)
|
||||
fecha_pago_real = models.DateField(null=True, blank=True)
|
||||
organizacion = models.ForeignKey('organization.Organizacion', on_delete=models.CASCADE, related_name='registro555s', null=True, blank=True)
|
||||
datastage = models.ForeignKey(DataStage, on_delete=models.CASCADE, related_name='registro555s', null=True, blank=True)
|
||||
created_by = models.IntegerField(null=True, blank=True)
|
||||
consulta = models.CharField(max_length=50, null=True, blank=True)
|
||||
|
||||
class Meta:
|
||||
db_table = 'registro555'
|
||||
|
||||
class Registro556(models.Model):
|
||||
id = models.AutoField(primary_key=True)
|
||||
patente = models.CharField(max_length=50, null=True, blank=True)
|
||||
pedimento = models.CharField(max_length=7, null=True, blank=True)
|
||||
seccion_aduanera = models.CharField(max_length=50, null=True, blank=True)
|
||||
clave_contribucion = models.CharField(max_length=2, null=True, blank=True)
|
||||
tasa_contribucion = models.DecimalField(max_digits=18, decimal_places=6, null=True, blank=True)
|
||||
tipo_tasa = models.CharField(max_length=2, null=True, blank=True)
|
||||
fecha_pago_real = models.DateTimeField(null=True, blank=True)
|
||||
organizacion = models.ForeignKey('organization.Organizacion', on_delete=models.CASCADE, related_name='registro556s', null=True, blank=True)
|
||||
created_by = models.IntegerField(null=True, blank=True)
|
||||
consulta = models.CharField(max_length=50, null=True, blank=True)
|
||||
datastage = models.ForeignKey(DataStage, on_delete=models.CASCADE, related_name='registro556s', null=True, blank=True)
|
||||
fraccion = models.CharField(max_length=8, null=True, blank=True)
|
||||
secuencia_fraccion = models.CharField(max_length=50, null=True, blank=True)
|
||||
|
||||
class Meta:
|
||||
db_table = 'registro556'
|
||||
|
||||
class Registro557(models.Model):
|
||||
id = models.AutoField(primary_key=True)
|
||||
patente = models.CharField(max_length=50, null=True, blank=True)
|
||||
pedimento = models.CharField(max_length=7, null=True, blank=True)
|
||||
seccion_aduanera = models.CharField(max_length=50, null=True, blank=True)
|
||||
fraccion = models.CharField(max_length=8, null=True, blank=True)
|
||||
secuencia_fraccion = models.CharField(max_length=50, null=True, blank=True)
|
||||
clave_contribucion = models.CharField(max_length=2, null=True, blank=True)
|
||||
forma_pago = models.CharField(max_length=3, null=True, blank=True)
|
||||
importe_pago = models.CharField(max_length=12, null=True, blank=True)
|
||||
fecha_pago_real = models.DateTimeField(null=True, blank=True)
|
||||
organizacion = models.ForeignKey('organization.Organizacion', on_delete=models.CASCADE, related_name='registro557s', null=True, blank=True)
|
||||
created_by = models.IntegerField(null=True, blank=True)
|
||||
datastage = models.ForeignKey(DataStage, on_delete=models.CASCADE, related_name='registro557s', null=True, blank=True)
|
||||
consulta = models.CharField(max_length=50, null=True, blank=True)
|
||||
|
||||
class Meta:
|
||||
db_table = 'registro557'
|
||||
|
||||
class Registro558(models.Model):
|
||||
id = models.AutoField(primary_key=True)
|
||||
patente = models.CharField(max_length=50, null=True, blank=True)
|
||||
pedimento = models.CharField(max_length=7, null=True, blank=True)
|
||||
seccion_aduanera = models.CharField(max_length=50, null=True, blank=True)
|
||||
fraccion = models.CharField(max_length=8, null=True, blank=True)
|
||||
secuencia_fraccion = models.CharField(max_length=50, null=True, blank=True)
|
||||
secuencia_observacion = models.CharField(max_length=3, null=True, blank=True)
|
||||
observaciones = models.CharField(max_length=120, null=True, blank=True)
|
||||
fecha_pago_real = models.DateTimeField(null=True, blank=True)
|
||||
organizacion = models.ForeignKey('organization.Organizacion', on_delete=models.CASCADE, related_name='registro558s', null=True, blank=True)
|
||||
created_by = models.IntegerField(null=True, blank=True)
|
||||
datastage = models.ForeignKey(DataStage, on_delete=models.CASCADE, related_name='registro558s', null=True, blank=True)
|
||||
consulta = models.CharField(max_length=50, null=True, blank=True)
|
||||
|
||||
class Meta:
|
||||
db_table = 'registro558'
|
||||
|
||||
class RegistroSel(models.Model):
|
||||
id = models.AutoField(primary_key=True)
|
||||
patente = models.CharField(max_length=50, null=True, blank=True)
|
||||
pedimento = models.CharField(max_length=50, null=True, blank=True)
|
||||
seccion_aduanera = models.CharField(max_length=50, null=True, blank=True)
|
||||
consecutivo_remesa = models.CharField(max_length=50, null=True, blank=True)
|
||||
numero_seleccion = models.CharField(max_length=50, null=True, blank=True)
|
||||
fecha_seleccion = models.DateField(null=True, blank=True)
|
||||
hora_seleccion = models.TimeField(null=True, blank=True)
|
||||
semaforo_fiscal = models.CharField(max_length=1, null=True, blank=True)
|
||||
clave_documento = models.CharField(max_length=3, null=True, blank=True)
|
||||
tipo_operacion = models.CharField(max_length=50, null=True, blank=True)
|
||||
organizacion = models.ForeignKey('organization.Organizacion', on_delete=models.CASCADE, related_name='registro_sel', null=True, blank=True)
|
||||
created_by = models.IntegerField(null=True, blank=True)
|
||||
consulta = models.CharField(max_length=50, null=True, blank=True)
|
||||
datastage = models.ForeignKey(DataStage, on_delete=models.CASCADE, related_name='registro_sel', null=True, blank=True)
|
||||
|
||||
class Meta:
|
||||
db_table = 'registro_sel'
|
||||
|
||||
class Registro701(models.Model):
|
||||
id = models.AutoField(primary_key=True)
|
||||
patente = models.CharField(max_length=4, null=True, blank=True)
|
||||
pedimento = models.CharField(max_length=7, null=True, blank=True)
|
||||
seccion_aduanera = models.CharField(max_length=3, null=True, blank=True)
|
||||
clave_documento = models.CharField(max_length=50, null=True, blank=True)
|
||||
fecha_pago = models.DateField(null=True, blank=True)
|
||||
pedimento_anterior = models.CharField(max_length=50, null=True, blank=True)
|
||||
patente_anterior = models.CharField(max_length=50, null=True, blank=True)
|
||||
seccion_aduanera_anterior = models.CharField(max_length=50, null=True, blank=True)
|
||||
documento_anterior = models.CharField(max_length=50, null=True, blank=True)
|
||||
fecha_operacion_anterior = models.DateField(null=True, blank=True)
|
||||
pedimento_original = models.CharField(max_length=50, null=True, blank=True)
|
||||
patente_aduanal_orig = models.CharField(max_length=50, null=True, blank=True)
|
||||
seccion_aduanera_desp_orig = models.CharField(max_length=50, null=True, blank=True)
|
||||
fecha_pago_real = models.DateTimeField(null=True, blank=True)
|
||||
organizacion = models.ForeignKey('organization.Organizacion', on_delete=models.CASCADE, related_name='registro701s', null=True, blank=True)
|
||||
created_by = models.IntegerField(null=True, blank=True)
|
||||
consulta = models.CharField(max_length=50, null=True, blank=True)
|
||||
datastage = models.ForeignKey(DataStage, on_delete=models.CASCADE, related_name='registro701s', null=True, blank=True)
|
||||
|
||||
class Meta:
|
||||
db_table = 'registro701'
|
||||
|
||||
class Registro702(models.Model):
|
||||
id = models.AutoField(primary_key=True)
|
||||
patente = models.CharField(max_length=50, null=True, blank=True)
|
||||
pedimento = models.CharField(max_length=7, null=True, blank=True)
|
||||
seccion_aduanera = models.CharField(max_length=50, null=True, blank=True)
|
||||
clave_contribucion = models.CharField(max_length=2, null=True, blank=True)
|
||||
forma_pago = models.CharField(max_length=50, null=True, blank=True)
|
||||
importe_pago = models.CharField(max_length=12, null=True, blank=True)
|
||||
tipo_pedimento = models.CharField(max_length=50, null=True, blank=True)
|
||||
fecha_pago_real = models.DateTimeField(null=True, blank=True)
|
||||
organizacion = models.ForeignKey('organization.Organizacion', on_delete=models.CASCADE, related_name='registro702s', null=True, blank=True)
|
||||
created_by = models.IntegerField(null=True, blank=True)
|
||||
consulta = models.CharField(max_length=50, null=True, blank=True)
|
||||
datastage = models.ForeignKey(DataStage, on_delete=models.CASCADE, related_name='registro702s', null=True, blank=True)
|
||||
|
||||
class Meta:
|
||||
db_table = 'registro702'
|
||||
|
||||
|
||||
|
||||
|
||||
12
api/datastage/serializer.py
Normal file
12
api/datastage/serializer.py
Normal file
@@ -0,0 +1,12 @@
|
||||
from rest_framework import serializers
|
||||
|
||||
from .models import DataStage
|
||||
from api.organization.models import Organizacion
|
||||
|
||||
class DataStageSerializer(serializers.ModelSerializer):
|
||||
organizacion = serializers.PrimaryKeyRelatedField(required=False, allow_null=True, queryset=Organizacion.objects.all())
|
||||
|
||||
class Meta:
|
||||
model = DataStage
|
||||
fields = '__all__'
|
||||
read_only_fields = ('id', 'created_at', 'updated_at')
|
||||
276
api/datastage/tasks.py
Normal file
276
api/datastage/tasks.py
Normal file
@@ -0,0 +1,276 @@
|
||||
from celery import group
|
||||
from celery import shared_task
|
||||
import logging
|
||||
from django.apps import apps
|
||||
from django.utils import timezone
|
||||
import os
|
||||
import zipfile
|
||||
import re
|
||||
|
||||
@shared_task
|
||||
def procesar_datastage_task(datastage_id, user_organizacion_id=None):
|
||||
import traceback
|
||||
try:
|
||||
logger = logging.getLogger(__name__)
|
||||
from api.datastage.models import DataStage
|
||||
from api.organization.models import Organizacion
|
||||
from api.customs.models import Pedimento, TipoOperacion, Regimen
|
||||
|
||||
datastage = DataStage.objects.get(id=datastage_id)
|
||||
if not datastage.archivo:
|
||||
return {'detail': 'No hay archivo asociado a este DataStage.'}
|
||||
file_path = datastage.archivo.path
|
||||
if not os.path.exists(file_path):
|
||||
return {'detail': 'El archivo no existe en el servidor.'}
|
||||
if not file_path.endswith('.zip'):
|
||||
return {'detail': 'El archivo no es un .zip.'}
|
||||
|
||||
documentos_encontrados = []
|
||||
registros_cargados = {}
|
||||
registros_por_archivo = {}
|
||||
errores_por_archivo = {}
|
||||
errores_pedimento = []
|
||||
user_organizacion = None
|
||||
|
||||
if user_organizacion_id:
|
||||
user_organizacion = Organizacion.objects.get(id=user_organizacion_id)
|
||||
|
||||
def to_snake_case(name):
|
||||
s1 = re.sub('(.)([A-Z][a-z]+)', r'\1_\2', name)
|
||||
s2 = re.sub('([a-z0-9])([A-Z])', r'\1_\2', s1)
|
||||
return s2.replace('__', '_').lower()
|
||||
|
||||
# Lanzar una subtarea por cada archivo ASC
|
||||
subtasks = []
|
||||
with zipfile.ZipFile(file_path, 'r') as zip_ref:
|
||||
for asc_name in zip_ref.namelist():
|
||||
if asc_name.endswith('.asc'):
|
||||
subtasks.append(procesar_archivo_asc_task.s(datastage_id, user_organizacion_id, asc_name))
|
||||
if subtasks:
|
||||
job = group(subtasks).apply_async()
|
||||
return {
|
||||
'group_id': job.id,
|
||||
'subtask_ids': [t.id for t in job.results],
|
||||
'detail': 'Procesamiento lanzado. Monitorea el estado de cada subtask_id.'
|
||||
}
|
||||
return {'detail': 'No se encontraron archivos .asc'}
|
||||
except Exception as e:
|
||||
import traceback
|
||||
return {'error': str(e), 'traceback': traceback.format_exc()}
|
||||
|
||||
@shared_task
|
||||
def procesar_archivo_asc_task(datastage_id, user_organizacion_id, asc_name):
|
||||
import traceback
|
||||
try:
|
||||
logger = logging.getLogger(__name__)
|
||||
from api.datastage.models import DataStage
|
||||
from api.organization.models import Organizacion
|
||||
from api.customs.models import Pedimento, TipoOperacion, Regimen
|
||||
from django.apps import apps
|
||||
import zipfile
|
||||
import re
|
||||
datastage = DataStage.objects.get(id=datastage_id)
|
||||
user_organizacion = None
|
||||
if user_organizacion_id:
|
||||
user_organizacion = Organizacion.objects.get(id=user_organizacion_id)
|
||||
file_path = datastage.archivo.path
|
||||
def to_snake_case(name):
|
||||
s1 = re.sub('(.)([A-Z][a-z]+)', r'\1_\2', name)
|
||||
s2 = re.sub('([a-z0-9])([A-Z])', r'\1_\2', s1)
|
||||
return s2.replace('__', '_').lower()
|
||||
with zipfile.ZipFile(file_path, 'r') as zip_ref:
|
||||
if asc_name not in zip_ref.namelist():
|
||||
return {'errores': [f'{asc_name} no encontrado en el zip']}
|
||||
match = re.match(r'.*_(\d+)\.asc$', asc_name)
|
||||
if match:
|
||||
registro_key = match.group(1)
|
||||
model_name = f'Registro{registro_key}'
|
||||
else:
|
||||
match2 = re.match(r'.*_([A-Za-z]+)\.asc$', asc_name)
|
||||
if match2:
|
||||
registro_key = match2.group(1).capitalize()
|
||||
model_name = f'Registro{registro_key}'
|
||||
else:
|
||||
return {'errores': ["No se pudo determinar el modelo"]}
|
||||
try:
|
||||
Model = apps.get_model('datastage', model_name)
|
||||
except LookupError:
|
||||
return {'errores': [f"No existe el modelo para {model_name}"]}
|
||||
with zip_ref.open(asc_name) as asc_file:
|
||||
first = True
|
||||
field_names = []
|
||||
field_names_snake = []
|
||||
objects_to_create = []
|
||||
errores_pedimento = []
|
||||
for line in asc_file:
|
||||
line_decoded = None
|
||||
try:
|
||||
line_decoded = line.decode('utf-8').strip()
|
||||
except UnicodeDecodeError:
|
||||
try:
|
||||
line_decoded = line.decode('latin-1').strip()
|
||||
except Exception as e:
|
||||
continue
|
||||
except Exception as e:
|
||||
continue
|
||||
if not line_decoded:
|
||||
continue
|
||||
if first:
|
||||
field_names = [f for f in line_decoded.split('|')]
|
||||
field_names_snake = [to_snake_case(f) for f in field_names]
|
||||
first = False
|
||||
continue
|
||||
values = line_decoded.split('|')
|
||||
while values and values[-1] == '':
|
||||
values.pop()
|
||||
if len(values) == len(field_names_snake) + 1 and values[-1] == '':
|
||||
values = values[:-1]
|
||||
if len(values) < len(field_names_snake):
|
||||
values += [None] * (len(field_names_snake) - len(values))
|
||||
if len(values) != len(field_names_snake):
|
||||
continue
|
||||
data = dict(zip(field_names_snake, values))
|
||||
if hasattr(Model, 'organizacion_id'):
|
||||
data['organizacion_id'] = user_organizacion.id if user_organizacion else None
|
||||
if hasattr(Model, 'datastage_id'):
|
||||
data['datastage_id'] = datastage.id
|
||||
# Limpiar campos de fecha vacíos ('') a None
|
||||
for field in Model._meta.get_fields():
|
||||
if hasattr(field, 'get_internal_type') and field.get_internal_type() in ["DateField", "DateTimeField"]:
|
||||
if data.get(field.name) == "":
|
||||
data[field.name] = None
|
||||
# Convertir fecha_pago_real a timezone-aware si existe
|
||||
if 'fecha_pago_real' in data and data['fecha_pago_real']:
|
||||
from django.utils import timezone
|
||||
import datetime
|
||||
fecha_val = data['fecha_pago_real']
|
||||
if isinstance(fecha_val, str):
|
||||
try:
|
||||
dt = datetime.datetime.strptime(fecha_val, '%Y-%m-%d %H:%M:%S')
|
||||
except ValueError:
|
||||
try:
|
||||
dt = datetime.datetime.strptime(fecha_val, '%Y-%m-%d')
|
||||
except Exception:
|
||||
dt = None
|
||||
if dt and timezone.is_naive(dt):
|
||||
dt = timezone.make_aware(dt)
|
||||
if dt:
|
||||
data['fecha_pago_real'] = dt
|
||||
elif isinstance(fecha_val, datetime.datetime) and timezone.is_naive(fecha_val):
|
||||
data['fecha_pago_real'] = timezone.make_aware(fecha_val)
|
||||
try:
|
||||
obj = Model(**data)
|
||||
objects_to_create.append(obj)
|
||||
# Si es Registro501, crear Pedimento
|
||||
if model_name == 'Registro501':
|
||||
organizacion_instance = None
|
||||
org_id = data.get('organizacion_id')
|
||||
if org_id:
|
||||
try:
|
||||
organizacion_instance = Organizacion.objects.get(id=org_id)
|
||||
except Exception as org_exc:
|
||||
logger.warning(f"No se encontró la organización con id {org_id}: {org_exc}")
|
||||
if not organizacion_instance:
|
||||
organizacion_instance = user_organizacion
|
||||
fecha_pago_raw = data.get('fecha_pago_real')
|
||||
fecha_pago = None
|
||||
if fecha_pago_raw:
|
||||
if isinstance(fecha_pago_raw, str):
|
||||
fecha_pago = fecha_pago_raw.split(' ')[0]
|
||||
elif hasattr(fecha_pago_raw, 'date'):
|
||||
fecha_pago = fecha_pago_raw.date()
|
||||
else:
|
||||
fecha_pago = fecha_pago_raw
|
||||
aduana = data.get('seccion_aduanera')
|
||||
patente = data.get('patente')
|
||||
pedimento_num = data.get('pedimento')
|
||||
pedimento_app = ""
|
||||
try:
|
||||
if fecha_pago and aduana and patente and pedimento_num:
|
||||
if isinstance(fecha_pago, str):
|
||||
year = fecha_pago[:4]
|
||||
else:
|
||||
year = str(fecha_pago.year)
|
||||
pedimento_app = f"{year[-2:]}-{str(aduana).zfill(2)[-2:]}-{str(patente).zfill(4)[-4:]}-{str(pedimento_num).zfill(7)[-7:]}"
|
||||
except Exception as ped_app_exc:
|
||||
logger.warning(f"No se pudo generar pedimento_app: {ped_app_exc}")
|
||||
tipo_operacion_val = data.get('tipo_operacion')
|
||||
tipo_operacion = TipoOperacion.objects.filter(id=int(tipo_operacion_val)).first() if tipo_operacion_val else None
|
||||
regimen = Regimen.objects.filter(claveped=data.get('clave_documento', '').strip(), tipo=tipo_operacion.id if tipo_operacion else None).first() if tipo_operacion else None
|
||||
# Buscar o crear Importador para el RFC
|
||||
importador_instance = None
|
||||
rfc = data.get('rfc')
|
||||
if rfc:
|
||||
from api.customs.models import Importador
|
||||
importador_instance = Importador.objects.filter(rfc=rfc).first()
|
||||
if not importador_instance and organizacion_instance:
|
||||
importador_instance = Importador.objects.create(rfc=rfc, organizacion=organizacion_instance)
|
||||
pedimento_data = {
|
||||
'pedimento': pedimento_num,
|
||||
'patente': patente,
|
||||
'aduana': aduana,
|
||||
'regimen': regimen.regimenped if regimen else None,
|
||||
'clave_pedimento': data.get('clave_documento'),
|
||||
'pedimento_app': pedimento_app,
|
||||
'organizacion': organizacion_instance,
|
||||
'patente': patente,
|
||||
'fecha_pago': fecha_pago,
|
||||
'alerta': False,
|
||||
'contribuyente': importador_instance,
|
||||
'agente_aduanal': data.get('curp_agente_a'),
|
||||
"tipo_operacion": tipo_operacion,
|
||||
"numero_partidas": data.get('numero_partidas', 0),
|
||||
"importe_total": data.get('importe_total', 0.0),
|
||||
"saldo_disponible": data.get('saldo_disponible', 0.0),
|
||||
"importe_pedimento": data.get('importe_pedimento', 0.0),
|
||||
"existe_expediente": data.get('existe_expediente', False),
|
||||
"remesas": data.get('remesas', False),
|
||||
}
|
||||
try:
|
||||
Pedimento.objects.create(**pedimento_data)
|
||||
except Exception as ped_exc:
|
||||
pass
|
||||
except Exception as e:
|
||||
continue
|
||||
if objects_to_create:
|
||||
try:
|
||||
Model.objects.bulk_create(objects_to_create, batch_size=1000)
|
||||
except Exception as e:
|
||||
return {'archivo': asc_name, 'error': str(e), 'traceback': traceback.format_exc()}
|
||||
return {
|
||||
'archivo': asc_name,
|
||||
'insertados': len(objects_to_create)
|
||||
}
|
||||
except Exception as e:
|
||||
import traceback
|
||||
return {'archivo': asc_name, 'error': str(e), 'traceback': traceback.format_exc()}
|
||||
|
||||
detalles = {}
|
||||
for key in ['502', '503', '504']:
|
||||
model_name = f'Registro{key}'
|
||||
asc_file = None
|
||||
encabezado = None
|
||||
errores = []
|
||||
for asc_name in registros_por_archivo:
|
||||
if asc_name.endswith(f'_{key}.asc'):
|
||||
asc_file = asc_name
|
||||
break
|
||||
if asc_file:
|
||||
try:
|
||||
with zipfile.ZipFile(file_path, 'r') as zip_ref:
|
||||
with zip_ref.open(asc_file) as f:
|
||||
for line in f:
|
||||
try:
|
||||
encabezado = line.decode('utf-8').strip()
|
||||
except UnicodeDecodeError:
|
||||
encabezado = line.decode('latin-1').strip()
|
||||
break
|
||||
except Exception as e:
|
||||
encabezado = f'Error leyendo encabezado: {e}'
|
||||
errores = errores_por_archivo.get(asc_file, [])
|
||||
detalles[model_name] = {
|
||||
'archivo': asc_file,
|
||||
'encabezado': encabezado,
|
||||
'errores': errores
|
||||
}
|
||||
return {'registros_cargados': registros_cargados, 'errores_pedimento': errores_pedimento}
|
||||
85
api/datastage/tests.py
Normal file
85
api/datastage/tests.py
Normal file
@@ -0,0 +1,85 @@
|
||||
|
||||
from django.urls import reverse
|
||||
from rest_framework.test import APITestCase, APIClient
|
||||
from rest_framework import status
|
||||
from django.contrib.auth import get_user_model
|
||||
from api.organization.models import Organizacion
|
||||
from .models import DataStage
|
||||
from io import BytesIO
|
||||
from django.core.files.uploadedfile import SimpleUploadedFile
|
||||
|
||||
User = get_user_model()
|
||||
|
||||
class DataStageViewSetTests(APITestCase):
|
||||
def setUp(self):
|
||||
self.org = Organizacion.objects.create(nombre="OrgTest", is_active=True, is_verified=True)
|
||||
self.org2 = Organizacion.objects.create(nombre="OrgTest2", is_active=True, is_verified=True)
|
||||
self.admin = User.objects.create_user(username="admin", password="adminpass", organizacion=self.org)
|
||||
self.admin.groups.create(name="admin")
|
||||
self.superuser = User.objects.create_superuser(username="superuser", password="superpass")
|
||||
self.importador = User.objects.create_user(username="importador", password="importpass", organizacion=self.org2, is_importador=True, rfc="RFC123456789")
|
||||
self.importador.groups.create(name="importador")
|
||||
self.client = APIClient()
|
||||
|
||||
def test_admin_sees_only_own_org(self):
|
||||
ds1 = DataStage.objects.create(nombre="DS1", almacenamiento=10, organizacion=self.org, archivo=SimpleUploadedFile("a.txt", b"a"))
|
||||
ds2 = DataStage.objects.create(nombre="DS2", almacenamiento=20, organizacion=self.org2, archivo=SimpleUploadedFile("b.txt", b"b"))
|
||||
self.client.force_authenticate(user=self.admin)
|
||||
url = reverse('datastage-list')
|
||||
response = self.client.get(url)
|
||||
self.assertEqual(response.status_code, status.HTTP_200_OK)
|
||||
nombres = [ds['nombre'] for ds in response.data]
|
||||
self.assertIn("DS1", nombres)
|
||||
self.assertNotIn("DS2", nombres)
|
||||
|
||||
def test_superuser_sees_all(self):
|
||||
ds1 = DataStage.objects.create(nombre="DS1", almacenamiento=10, organizacion=self.org, archivo=SimpleUploadedFile("a.txt", b"a"))
|
||||
ds2 = DataStage.objects.create(nombre="DS2", almacenamiento=20, organizacion=self.org2, archivo=SimpleUploadedFile("b.txt", b"b"))
|
||||
self.client.force_authenticate(user=self.superuser)
|
||||
url = reverse('datastage-list')
|
||||
response = self.client.get(url)
|
||||
self.assertEqual(response.status_code, status.HTTP_200_OK)
|
||||
nombres = [ds['nombre'] for ds in response.data]
|
||||
self.assertIn("DS1", nombres)
|
||||
self.assertIn("DS2", nombres)
|
||||
|
||||
def test_importador_cannot_create(self):
|
||||
self.client.force_authenticate(user=self.importador)
|
||||
url = reverse('datastage-list')
|
||||
file_content = BytesIO(b"dummy data")
|
||||
file = SimpleUploadedFile("test.txt", file_content.read(), content_type="text/plain")
|
||||
data = {
|
||||
"nombre": "DataStageImportador",
|
||||
"almacenamiento": 10,
|
||||
"archivo": file
|
||||
}
|
||||
response = self.client.post(url, data, format='multipart')
|
||||
self.assertNotIn(response.status_code, [status.HTTP_201_CREATED, status.HTTP_200_OK])
|
||||
|
||||
def test_list_datastages(self):
|
||||
url = reverse('datastage-list')
|
||||
response = self.client.get(url)
|
||||
self.assertEqual(response.status_code, status.HTTP_200_OK)
|
||||
|
||||
def test_create_datastage(self):
|
||||
url = reverse('datastage-list')
|
||||
file_content = BytesIO(b"dummy data")
|
||||
file = SimpleUploadedFile("test.txt", file_content.read(), content_type="text/plain")
|
||||
data = {
|
||||
"nombre": "DataStageTest",
|
||||
"almacenamiento": 10,
|
||||
"archivo": file
|
||||
}
|
||||
response = self.client.post(url, data, format='multipart')
|
||||
self.assertIn(response.status_code, [status.HTTP_201_CREATED, status.HTTP_200_OK])
|
||||
|
||||
def test_update_datastage(self):
|
||||
# First create
|
||||
file_content = BytesIO(b"dummy data")
|
||||
file = SimpleUploadedFile("test.txt", file_content.read(), content_type="text/plain")
|
||||
ds = DataStage.objects.create(nombre="DataStageTest", almacenamiento=10, organizacion=self.org, archivo=file)
|
||||
url = reverse('datastage-detail', args=[ds.id])
|
||||
data = {"almacenamiento": 20}
|
||||
response = self.client.patch(url, data)
|
||||
self.assertEqual(response.status_code, status.HTTP_200_OK)
|
||||
self.assertEqual(response.data['almacenamiento'], 20)
|
||||
12
api/datastage/urls.py
Normal file
12
api/datastage/urls.py
Normal file
@@ -0,0 +1,12 @@
|
||||
from django.urls import path, include
|
||||
from rest_framework.routers import DefaultRouter
|
||||
from .views import DataStageViewSet
|
||||
|
||||
# Create a router and register our viewset with it.
|
||||
router = DefaultRouter()
|
||||
router.register(r'datastages', DataStageViewSet, basename='datastage')
|
||||
|
||||
# The API URLs are now determined automatically by the router.
|
||||
urlpatterns = [
|
||||
path('', include(router.urls)),
|
||||
]
|
||||
140
api/datastage/views.py
Normal file
140
api/datastage/views.py
Normal file
@@ -0,0 +1,140 @@
|
||||
from rest_framework.pagination import PageNumberPagination
|
||||
from api.customs.models import Pedimento, TipoOperacion, Regimen
|
||||
from django.shortcuts import render
|
||||
from rest_framework import viewsets
|
||||
from rest_framework.permissions import IsAuthenticated
|
||||
from rest_framework.decorators import action
|
||||
from rest_framework.response import Response
|
||||
from django.http import FileResponse, Http404
|
||||
import os
|
||||
|
||||
from .models import DataStage
|
||||
from .serializer import DataStageSerializer
|
||||
|
||||
from api.logger.mixins import LoggingMixin
|
||||
from mixins.filtrado_organizacion import OrganizacionFiltradaMixin
|
||||
from core.permissions import (
|
||||
IsSameOrganization,
|
||||
IsSameOrganizationDeveloper,
|
||||
IsSameOrganizationAndAdmin,
|
||||
IsSuperUser
|
||||
)
|
||||
# Create your views here.
|
||||
class DataStagePagination(PageNumberPagination):
|
||||
page_size = 20 # Valor por defecto
|
||||
page_size_query_param = 'page_size'
|
||||
max_page_size = 1000
|
||||
|
||||
class DataStageViewSet(LoggingMixin, viewsets.ModelViewSet, OrganizacionFiltradaMixin):
|
||||
|
||||
|
||||
"""
|
||||
ViewSet for managing DataStage instances.
|
||||
Provides CRUD operations for DataStage.
|
||||
"""
|
||||
|
||||
|
||||
serializer_class = DataStageSerializer
|
||||
permission_classes = [IsAuthenticated & (IsSameOrganization | IsSameOrganizationAndAdmin | IsSameOrganizationDeveloper | IsSuperUser)]
|
||||
model = DataStage
|
||||
my_tags = ['DataStage']
|
||||
pagination_class = DataStagePagination
|
||||
|
||||
def get_queryset(self):
|
||||
if self.request.user.is_superuser:
|
||||
return DataStage.objects.all().order_by('-created_at')
|
||||
|
||||
if self.request.user.groups.filter(name='developer').exists() or self.request.user.groups.filter(name='admin').exists() or self.request.user.groups.filter(name='Agente Aduanal').exists():
|
||||
return DataStage.objects.filter(organizacion=self.request.user.organizacion).order_by('-created_at')
|
||||
|
||||
return self.get_queryset_filtrado_por_organizacion().order_by('-created_at')
|
||||
|
||||
def perform_create(self, serializer):
|
||||
"""
|
||||
Permite que la organización sea opcional en el request, pero si no se envía, se asigna la del usuario autenticado.
|
||||
"""
|
||||
if not self.request.user.is_authenticated or not hasattr(self.request.user, 'organizacion'):
|
||||
raise ValueError("Usuario no autenticado o sin organización")
|
||||
|
||||
data = serializer.validated_data
|
||||
organizacion = data.get('organizacion')
|
||||
|
||||
if self.request.user.is_superuser:
|
||||
# Permitir que el superusuario cree sin organización o la especifique
|
||||
serializer.save()
|
||||
return
|
||||
|
||||
if (self.request.user.groups.filter(name='developer').exists() or self.request.user.groups.filter(name='admin').exists() or self.request.user.groups.filter(name='user').exists()) and self.request.user.groups.filter(name='Agente Aduanal').exists():
|
||||
if not organizacion:
|
||||
serializer.save(organizacion=self.request.user.organizacion)
|
||||
else:
|
||||
serializer.save()
|
||||
return
|
||||
|
||||
raise ValueError("No cuentas con los permisos necesarios para crear un DataStage")
|
||||
|
||||
def perform_update(self, serializer):
|
||||
"""
|
||||
Override to ensure organization is set on update.
|
||||
"""
|
||||
if not self.request.user.is_authenticated or not hasattr(self.request.user, 'organizacion'):
|
||||
raise ValueError("Usuario no autenticado o sin organización")
|
||||
|
||||
if self.request.user.is_superuser:
|
||||
# Allow superuser to update without organization
|
||||
serializer.save()
|
||||
return
|
||||
|
||||
if (self.request.user.groups.filter(name='developer').exists() or self.request.user.groups.filter(name='admin').exists() or self.request.user.groups.filter(name='user').exists()) and self.request.user.groups.filter(name='Agente Aduanal').exists():
|
||||
serializer.save(organizacion=self.request.user.organizacion)
|
||||
return
|
||||
|
||||
raise ValueError("No cuentas con los permisos necesarios para actualizar un DataStage")
|
||||
|
||||
@action(detail=True, methods=['get'], url_path='download-datastage', url_name='download-datastage')
|
||||
def download_datastage(self, request, pk=None):
|
||||
"""
|
||||
Endpoint para descargar el archivo asociado a un DataStage.
|
||||
"""
|
||||
try:
|
||||
datastage = self.get_object()
|
||||
if not datastage.archivo:
|
||||
raise Http404("No hay archivo asociado a este DataStage.")
|
||||
file_path = datastage.archivo.path
|
||||
if not os.path.exists(file_path):
|
||||
raise Http404("El archivo no existe en el servidor.")
|
||||
response = FileResponse(open(file_path, 'rb'), as_attachment=True, filename=os.path.basename(file_path))
|
||||
return response
|
||||
except Exception as e:
|
||||
return Response({'detail': str(e)}, status=404)
|
||||
|
||||
@action(detail=True, methods=['post'], url_path='procesar')
|
||||
def procesar(self, request, pk=None):
|
||||
"""
|
||||
Endpoint para procesar el DataStage de forma asíncrona usando Celery.
|
||||
"""
|
||||
from api.datastage.tasks import procesar_datastage_task
|
||||
datastage = self.get_object()
|
||||
user_organizacion = getattr(self.request.user, 'organizacion', None)
|
||||
user_organizacion_id = user_organizacion.id if user_organizacion else None
|
||||
task = procesar_datastage_task.delay(datastage.id, user_organizacion_id)
|
||||
return Response({
|
||||
'task_id': task.id,
|
||||
'detail': 'Procesamiento iniciado. Puede consultar el estado con el task_id.'
|
||||
})
|
||||
|
||||
@action(detail=False, methods=['get'], url_path='task-status')
|
||||
def task_status(self, request):
|
||||
"""
|
||||
Consulta el estado de una tarea de Celery por task_id.
|
||||
"""
|
||||
from celery.result import AsyncResult
|
||||
task_id = request.query_params.get('task_id')
|
||||
if not task_id:
|
||||
return Response({'detail': 'Falta el parámetro task_id.'}, status=400)
|
||||
result = AsyncResult(task_id)
|
||||
return Response({
|
||||
'task_id': task_id,
|
||||
'status': result.status,
|
||||
'result': result.result if result.successful() else None
|
||||
})
|
||||
Reference in New Issue
Block a user