Nuevo formulario de extension para partes SCAI con nuevas tablas de aphis con catalogos fijos nuevos

This commit is contained in:
2026-03-18 10:50:36 -05:00
parent adfa82c707
commit 546b1ea56f
39 changed files with 30627 additions and 98 deletions

View File

@@ -135,8 +135,10 @@ class PartService:
# Extraer datos de países si existen en inv_data
countries_data = None
aphis_records_data = None
if inv_dict:
countries_data = inv_dict.pop('countries', None)
aphis_records_data = inv_dict.pop('aphis_records', None)
# Inyectar IDs de contexto (Seguridad Multi-tenant)
data['company_id'] = company_id
@@ -214,6 +216,54 @@ class PartService:
)
db_part.inv_countries.append(country_obj)
# 7. Crear registros Aphis
if aphis_records_data:
from api.v1.modules.a24.inv.inv_aphis.models import (
InvPartAphisGeneral, InvPartAphisCharacteristic, InvPartAphisStypePitems,
InvPartAphisLpcos, InvPartAphisEntities, InvPartAphisContainers, InvPartAphisRouting
)
for a_data in aphis_records_data:
a_data.pop('id', None)
char_data = a_data.pop('characteristics', [])
stype_data = a_data.pop('stype_pitems', [])
lpco_data = a_data.pop('lpcos', [])
entity_data = a_data.pop('entities', [])
container_data = a_data.pop('containers', [])
routing_data = a_data.pop('routing', [])
aphis_obj = InvPartAphisGeneral(
**a_data,
inv_part_id=db_part.id,
tenant_id=tenant_id,
company_id=company_id
)
for c_data in char_data:
c_data.pop('id', None); c_data.pop('aphis_general_id', None)
aphis_obj.characteristics.append(InvPartAphisCharacteristic(**c_data, tenant_id=tenant_id, company_id=company_id))
for s_data in stype_data:
s_data.pop('id', None); s_data.pop('aphis_general_id', None)
aphis_obj.stype_pitems.append(InvPartAphisStypePitems(**s_data, tenant_id=tenant_id, company_id=company_id))
for l_data in lpco_data:
l_data.pop('id', None); l_data.pop('aphis_general_id', None)
aphis_obj.lpcos.append(InvPartAphisLpcos(**l_data, tenant_id=tenant_id, company_id=company_id))
for e_data in entity_data:
e_data.pop('id', None); e_data.pop('aphis_general_id', None)
aphis_obj.entities.append(InvPartAphisEntities(**e_data, tenant_id=tenant_id, company_id=company_id))
for con_data in container_data:
con_data.pop('id', None); con_data.pop('aphis_general_id', None)
aphis_obj.containers.append(InvPartAphisContainers(**con_data, tenant_id=tenant_id, company_id=company_id))
for r_data in routing_data:
r_data.pop('id', None); r_data.pop('aphis_general_id', None)
aphis_obj.routing.append(InvPartAphisRouting(**r_data, tenant_id=tenant_id, company_id=company_id))
db.add(aphis_obj)
try:
db.commit() # db.add ya se hizo en el flush anterior
db.refresh(db_part)