refactor: optimize provider and client information retrieval in invoice services

This commit is contained in:
Galindo97
2026-02-03 10:38:36 -06:00
parent 5bf757e08d
commit e7971d0d1d
6 changed files with 60 additions and 80 deletions

View File

@@ -186,13 +186,8 @@ class DefinitiveImportService:
if not filters.include_cancelled and row[3] != 'AC': # C4 - Estatus
continue
# 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
)
# Provider and client names now come directly from query (C8, C9)
# No need for additional database lookups
agente_info = DatabaseHelper.get_customs_agent_info(
db, filters.database_name, row[17]
)
@@ -256,12 +251,12 @@ class DefinitiveImportService:
Fecha_Fin=row[11],
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'),
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
AgenteAduanal=agente_info.get('name'),
Patente=agente_info.get('license'),
NumParte=row[19],

View File

@@ -187,13 +187,8 @@ class ExportService:
if not filters.include_cancelled and row[5] == 'NA': # C6 - Estatus
continue
# 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
)
# Provider and client names now come directly from query (C14, C15)
# No need for additional database lookups
# Get customs agent information
agente_info = DatabaseHelper.get_customs_agent_info(
@@ -257,12 +252,12 @@ class ExportService:
Fecha_Pago=row[10], # C11 - Fecha_Pago
Remesa=row[11], # C12 - Remesa
TipoCambio=tipo_cambio_final,
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"),
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
AgenteAduanal=agente_info.get("name"),
Patente=agente_info.get("license"),
NumParte=row[17], # C18 - Clase

View File

@@ -188,15 +188,8 @@ class ExportRepairService:
if not filters.include_cancelled and row[5] == 'NA': # C6 - Estatus
continue
# 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
)
# Provider and client names now come directly from query (C14, C15)
# No need for additional database lookups
# Get customs agent information
agente_info = DatabaseHelper.get_customs_agent_info(
@@ -271,12 +264,12 @@ class ExportRepairService:
Fecha_Fin=row[9], # C10 - Fecha_Fin
Fecha_Pago=row[10], # C11 - Fecha_Pago
Remesa=row[11], # C12 - Remesa
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'),
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
AgenteAduanal=agente_info.get('name'),
Patente=agente_info.get('license'),
NumParte=row[17], # C18 - Clase (NumParte)

View File

@@ -68,8 +68,8 @@ class TemporaryImportQueries:
COALESCE(ped.pedimento_code, '') AS C5,
COALESCE(fin.value_me, 0) AS C6,
COALESCE(fin.value_mn, 0) AS C7,
COALESCE(cmp.provider_id::text, '') AS C8,
COALESCE(cmp.sold_to_id::text, '') AS C9,
COALESCE(prov.name, '') AS C8,
COALESCE(client.name, '') AS C9,
COALESCE(ped.regime, '') AS C10,
COALESCE(TO_CHAR(log.entry_exit_date, 'YYYYMMDD'), '') AS C11,
COALESCE(TO_CHAR(log.delivery_date, 'YYYYMMDD'), '') AS C12,
@@ -124,6 +124,8 @@ class TemporaryImportQueries:
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 i ON i.invoice_id = ih.id
LEFT JOIN a76.item_lines il ON il.item_id = i.id
LEFT JOIN a76.item_line_descriptions ld ON ld.item_line_id = il.id
@@ -233,7 +235,10 @@ class DefinitiveImportQueries:
ih.invoice_date AS C3, -- [2]
ped.status AS C4, -- [3]
ped.pedimento_code AS C5, -- [4]
'' AS C6, '' AS C7, '' AS C8, '' AS C9, -- [5-8]
'' AS C6, -- [5]
'' AS C7, -- [6]
COALESCE(prov.name, '') AS C8, -- [7] Provider name
COALESCE(client.name, '') AS C9, -- [8] Client name
ped.regime AS C10, -- [9]
log.entry_exit_date AS C11, -- [10]
log.delivery_date AS C12, -- [11]
@@ -412,8 +417,8 @@ class RepairImportQueries:
COALESCE(TO_CHAR(log.payment_date, 'YYYYMMDD'), ''),
COALESCE(cmp.remesa::text, ''),
COALESCE(fin.exchange_rate, 0),
COALESCE(cmp.provider_id::text, ''),
COALESCE(cmp.sold_to_id::text, ''),
COALESCE(prov.name, ''),
COALESCE(client.name, ''),
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), ' '),
@@ -452,6 +457,8 @@ 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
@@ -573,8 +580,8 @@ class ExportQueries:
log.payment_date AS C11, -- [10]
log.payment_receipt_num AS C12, -- [11]
'' AS C13, -- [12]
cmp.provider_id AS C14, -- [13]
cmp.sold_to_id AS C15, -- [14]
COALESCE(prov.name, '') AS C14, -- [13] Provider name
COALESCE(client.name, '') AS C15, -- [14] Client name
cmp.customs_broker_id AS C16, -- [15]
'' AS C17, -- [16]
prt.part_number AS C18, -- [17]
@@ -740,8 +747,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(cmp.provider_id::text, '') AS C14,
COALESCE(cmp.sold_to_id::text, '') AS C15,
COALESCE(prov.name, '') AS C14,
COALESCE(client.name, '') AS C15,
COALESCE(cmp.customs_broker_id::text, '') AS C16,
'' AS C17,
COALESCE(cls.class_code, '') AS C18,
@@ -791,6 +798,8 @@ 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,13 +200,8 @@ class RepairImportService:
if not filters.include_cancelled and row[3] != 'AC': # C4 - Estatus
continue
# 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
)
# Provider and client names now come directly from query
# No need for additional database lookups
agente_info = DatabaseHelper.get_customs_agent_info(
db, filters.database_name, row[17]
)
@@ -268,14 +263,14 @@ class RepairImportService:
Regimen=row[9],
Fecha_Inicio=row[10],
Fecha_Fin=row[11],
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'),
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
AgenteAduanal=agente_info.get('name'),
Patente=agente_info.get('license'),
NumParte=row[19],

View File

@@ -190,15 +190,8 @@ class TemporaryImportService:
if not filters.include_cancelled and row[3] != 'AC': # C4 - Estatus
continue
# Get provider information
proveedor_info = DatabaseHelper.get_client_info(
db, filters.database_name, row[15], is_supplier=True # C16 - Proveedor
)
# Get buyer information
vendido_info = DatabaseHelper.get_client_info(
db, filters.database_name, row[16], is_supplier=False # C17 - VendidoA
)
# Provider and client names now come directly from query (C8, C9)
# No need for additional database lookups
# Get customs agent information
agente_info = DatabaseHelper.get_customs_agent_info(
@@ -274,12 +267,12 @@ class TemporaryImportService:
Fecha_Fin=row[11], # C12 - Fecha_Fin
Fecha_Pago=row[12], # C13 - Fecha_Pago
Remesa=row[13], # C14 - Remesa
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'),
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
AgenteAduanal=agente_info.get('name'),
Patente=agente_info.get('license'),
NumParte=row[19], # C20 - Clase (NumParte)