refactor: streamline client and supplier information retrieval across invoice services

This commit is contained in:
Galindo97
2026-02-03 15:49:40 -06:00
parent e7971d0d1d
commit 7920b21654
6 changed files with 64 additions and 48 deletions

View File

@@ -186,8 +186,13 @@ class DefinitiveImportService:
if not filters.include_cancelled and row[3] != 'AC': # C4 - Estatus
continue
# Provider and client names now come directly from query (C8, C9)
# No need for additional database lookups
# Get all detailed information (same as temporary imports)
proveedor_info = DatabaseHelper.get_client_info(
db, filters.database_name, row[15], is_supplier=True
)
vendido_info = DatabaseHelper.get_client_info(
db, filters.database_name, row[16], is_supplier=False
)
agente_info = DatabaseHelper.get_customs_agent_info(
db, filters.database_name, row[17]
)
@@ -251,12 +256,12 @@ class DefinitiveImportService:
Fecha_Fin=row[11],
Fecha_Pago=row[12],
Remesa=row[13],
Proveedor=row[7], # C8 - Provider name (from JOIN)
RFCProveedor=None, # RFC not in detailed query
ProveedorTaxID=None, # Tax ID not in detailed query
VendidoA=row[8], # C9 - Client name (from JOIN)
VendidoARFC=None, # RFC not in detailed query
VendidoATaxID=None, # Tax ID not in detailed query
Proveedor=proveedor_info.get('name'),
RFCProveedor=proveedor_info.get('rfc'),
ProveedorTaxID=proveedor_info.get('tax_id'),
VendidoA=vendido_info.get('name'),
VendidoARFC=vendido_info.get('rfc'),
VendidoATaxID=vendido_info.get('tax_id'),
AgenteAduanal=agente_info.get('name'),
Patente=agente_info.get('license'),
NumParte=row[19],

View File

@@ -187,8 +187,13 @@ class ExportService:
if not filters.include_cancelled and row[5] == 'NA': # C6 - Estatus
continue
# Provider and client names now come directly from query (C14, C15)
# No need for additional database lookups
# Get client/supplier information
proveedor_info = DatabaseHelper.get_client_info(
db, filters.database_name, row[13], is_supplier=True # C14 - Proveedor
)
vendido_info = DatabaseHelper.get_client_info(
db, filters.database_name, row[14], is_supplier=False # C15 - VendidoA
)
# Get customs agent information
agente_info = DatabaseHelper.get_customs_agent_info(
@@ -252,12 +257,12 @@ class ExportService:
Fecha_Pago=row[10], # C11 - Fecha_Pago
Remesa=row[11], # C12 - Remesa
TipoCambio=tipo_cambio_final,
Proveedor=row[13], # C14 - Provider name (from JOIN)
RFCProveedor=None, # RFC not in detailed query
ProveedorTaxID=None, # Tax ID not in detailed query
VendidoA=row[14], # C15 - Client name (from JOIN)
VendidoARFC=None, # RFC not in detailed query
VendidoATaxID=None, # Tax ID not in detailed query
Proveedor=proveedor_info.get("name"),
RFCProveedor=proveedor_info.get("rfc"),
ProveedorTaxID=proveedor_info.get("tax_id"),
VendidoA=vendido_info.get("name"),
VendidoARFC=vendido_info.get("rfc"),
VendidoATaxID=vendido_info.get("tax_id"),
AgenteAduanal=agente_info.get("name"),
Patente=agente_info.get("license"),
NumParte=row[17], # C18 - Clase

View File

@@ -188,8 +188,15 @@ class ExportRepairService:
if not filters.include_cancelled and row[5] == 'NA': # C6 - Estatus
continue
# Provider and client names now come directly from query (C14, C15)
# No need for additional database lookups
# Get provider information
proveedor_info = DatabaseHelper.get_client_info(
db, filters.database_name, row[13], is_supplier=True # C14 - Proveedor
)
# Get buyer information
vendido_info = DatabaseHelper.get_client_info(
db, filters.database_name, row[14], is_supplier=False # C15 - VendidoA
)
# Get customs agent information
agente_info = DatabaseHelper.get_customs_agent_info(
@@ -264,12 +271,12 @@ class ExportRepairService:
Fecha_Fin=row[9], # C10 - Fecha_Fin
Fecha_Pago=row[10], # C11 - Fecha_Pago
Remesa=row[11], # C12 - Remesa
Proveedor=row[13], # C14 - Provider name (from JOIN)
RFCProveedor=None, # RFC not in detailed query
ProveedorTaxID=None, # Tax ID not in detailed query
VendidoA=row[14], # C15 - Client name (from JOIN)
VendidoARFC=None, # RFC not in detailed query
VendidoATaxID=None, # Tax ID not in detailed query
Proveedor=proveedor_info.get('name'),
RFCProveedor=proveedor_info.get('rfc'),
ProveedorTaxID=proveedor_info.get('tax_id'),
VendidoA=vendido_info.get('name'),
VendidoARFC=vendido_info.get('rfc'),
VendidoATaxID=vendido_info.get('tax_id'),
AgenteAduanal=agente_info.get('name'),
Patente=agente_info.get('license'),
NumParte=row[17], # C18 - Clase (NumParte)

View File

@@ -235,10 +235,7 @@ class DefinitiveImportQueries:
ih.invoice_date AS C3, -- [2]
ped.status AS C4, -- [3]
ped.pedimento_code AS C5, -- [4]
'' AS C6, -- [5]
'' AS C7, -- [6]
COALESCE(prov.name, '') AS C8, -- [7] Provider name
COALESCE(client.name, '') AS C9, -- [8] Client name
'' AS C6, '' AS C7, '' AS C8, '' AS C9, -- [5-8]
ped.regime AS C10, -- [9]
log.entry_exit_date AS C11, -- [10]
log.delivery_date AS C12, -- [11]
@@ -417,8 +414,8 @@ class RepairImportQueries:
COALESCE(TO_CHAR(log.payment_date, 'YYYYMMDD'), ''),
COALESCE(cmp.remesa::text, ''),
COALESCE(fin.exchange_rate, 0),
COALESCE(prov.name, ''),
COALESCE(client.name, ''),
COALESCE(cmp.provider_id::text, ''),
COALESCE(cmp.sold_to_id::text, ''),
COALESCE(cmp.customs_broker_id::text, ''),
COALESCE(il.part_number::text, ''),
REPLACE(REPLACE(REPLACE(REPLACE(COALESCE(ld.description_spanish, ''), CHR(44), ' '), CHR(9), ' '), CHR(10), ' '), CHR(13), ' '),
@@ -457,8 +454,6 @@ class RepairImportQueries:
LEFT JOIN a76.invoice_financials fin ON fin.invoice_id = ih.id
LEFT JOIN a76.invoice_logistics log ON log.invoice_id = ih.id
LEFT JOIN a76.pedimentos ped ON ped.id = cmp.pedimento_id
LEFT JOIN a76.clients_and_providers prov ON prov.id = cmp.provider_id
LEFT JOIN a76.clients_and_providers client ON client.id = cmp.sold_to_id
LEFT JOIN a76.items itm ON itm.invoice_id = ih.id
LEFT JOIN a76.item_lines il ON il.item_id = itm.id
LEFT JOIN a76.item_line_descriptions ld ON ld.item_line_id = il.id
@@ -580,8 +575,8 @@ class ExportQueries:
log.payment_date AS C11, -- [10]
log.payment_receipt_num AS C12, -- [11]
'' AS C13, -- [12]
COALESCE(prov.name, '') AS C14, -- [13] Provider name
COALESCE(client.name, '') AS C15, -- [14] Client name
cmp.provider_id AS C14, -- [13]
cmp.sold_to_id AS C15, -- [14]
cmp.customs_broker_id AS C16, -- [15]
'' AS C17, -- [16]
prt.part_number AS C18, -- [17]
@@ -747,8 +742,8 @@ class ExportRepairQueries:
COALESCE(TO_CHAR(log.payment_date, 'YYYYMMDD'), '') AS C11,
COALESCE(cmp.remesa::text, '') AS C12,
COALESCE(fin.exchange_rate, 0) AS C13,
COALESCE(prov.name, '') AS C14,
COALESCE(client.name, '') AS C15,
COALESCE(cmp.provider_id::text, '') AS C14,
COALESCE(cmp.sold_to_id::text, '') AS C15,
COALESCE(cmp.customs_broker_id::text, '') AS C16,
'' AS C17,
COALESCE(cls.class_code, '') AS C18,
@@ -798,8 +793,6 @@ class ExportRepairQueries:
LEFT JOIN a76.invoice_financials fin ON fin.invoice_id = ih.id
LEFT JOIN a76.invoice_logistics log ON log.invoice_id = ih.id
LEFT JOIN a76.pedimentos ped ON ped.id = cmp.pedimento_id
LEFT JOIN a76.clients_and_providers prov ON prov.id = cmp.provider_id
LEFT JOIN a76.clients_and_providers client ON client.id = cmp.sold_to_id
LEFT JOIN a76.items itm ON itm.invoice_id = ih.id
LEFT JOIN a76.item_lines il ON il.item_id = itm.id
LEFT JOIN a76.item_line_descriptions ld ON ld.item_line_id = il.id

View File

@@ -200,8 +200,13 @@ class RepairImportService:
if not filters.include_cancelled and row[3] != 'AC': # C4 - Estatus
continue
# Provider and client names now come directly from query
# No need for additional database lookups
# Get all detailed information
proveedor_info = DatabaseHelper.get_client_info(
db, filters.database_name, row[15], is_supplier=True
)
vendido_info = DatabaseHelper.get_client_info(
db, filters.database_name, row[16], is_supplier=False
)
agente_info = DatabaseHelper.get_customs_agent_info(
db, filters.database_name, row[17]
)
@@ -263,14 +268,14 @@ class RepairImportService:
Regimen=row[9],
Fecha_Inicio=row[10],
Fecha_Fin=row[11],
Fecha_Pago=row[8],
Remesa=row[9],
Proveedor=row[11], # Provider name (from JOIN)
RFCProveedor=None, # RFC not in detailed query
ProveedorTaxID=None, # Tax ID not in detailed query
VendidoA=row[12], # Client name (from JOIN)
VendidoARFC=None, # RFC not in detailed query
VendidoATaxID=None, # Tax ID not in detailed query
Fecha_Pago=row[12],
Remesa=row[13],
Proveedor=proveedor_info.get('name'),
RFCProveedor=proveedor_info.get('rfc'),
ProveedorTaxID=proveedor_info.get('tax_id'),
VendidoA=vendido_info.get('name'),
VendidoARFC=vendido_info.get('rfc'),
VendidoATaxID=vendido_info.get('tax_id'),
AgenteAduanal=agente_info.get('name'),
Patente=agente_info.get('license'),
NumParte=row[19],

View File

@@ -192,6 +192,7 @@ class TemporaryImportService:
# Provider and client names now come directly from query (C8, C9)
# No need for additional database lookups
logger.info(f"Processing invoice {row[0]}: Proveedor='{row[7]}', VendidoA='{row[8]}', CantidadIE={row[22]}, DescripcionE='{row[20][:50] if row[20] else None}'")
# Get customs agent information
agente_info = DatabaseHelper.get_customs_agent_info(