diff --git a/backend/api/v1/modules/a76/reports/movements/invoices/services/definitive.py b/backend/api/v1/modules/a76/reports/movements/invoices/services/definitive.py index 5a2c1ee3..ee2f603e 100644 --- a/backend/api/v1/modules/a76/reports/movements/invoices/services/definitive.py +++ b/backend/api/v1/modules/a76/reports/movements/invoices/services/definitive.py @@ -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], diff --git a/backend/api/v1/modules/a76/reports/movements/invoices/services/export.py b/backend/api/v1/modules/a76/reports/movements/invoices/services/export.py index cfb594f7..d7513f1f 100644 --- a/backend/api/v1/modules/a76/reports/movements/invoices/services/export.py +++ b/backend/api/v1/modules/a76/reports/movements/invoices/services/export.py @@ -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 diff --git a/backend/api/v1/modules/a76/reports/movements/invoices/services/export_repair.py b/backend/api/v1/modules/a76/reports/movements/invoices/services/export_repair.py index 13143ef6..c3b7f088 100644 --- a/backend/api/v1/modules/a76/reports/movements/invoices/services/export_repair.py +++ b/backend/api/v1/modules/a76/reports/movements/invoices/services/export_repair.py @@ -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) diff --git a/backend/api/v1/modules/a76/reports/movements/invoices/services/query_builders.py b/backend/api/v1/modules/a76/reports/movements/invoices/services/query_builders.py index 7e6417c1..4851aebf 100644 --- a/backend/api/v1/modules/a76/reports/movements/invoices/services/query_builders.py +++ b/backend/api/v1/modules/a76/reports/movements/invoices/services/query_builders.py @@ -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 diff --git a/backend/api/v1/modules/a76/reports/movements/invoices/services/repair.py b/backend/api/v1/modules/a76/reports/movements/invoices/services/repair.py index 889d3185..26ceb14f 100644 --- a/backend/api/v1/modules/a76/reports/movements/invoices/services/repair.py +++ b/backend/api/v1/modules/a76/reports/movements/invoices/services/repair.py @@ -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], diff --git a/backend/api/v1/modules/a76/reports/movements/invoices/services/temporary.py b/backend/api/v1/modules/a76/reports/movements/invoices/services/temporary.py index 1e4ae9b2..b4d1ea2c 100644 --- a/backend/api/v1/modules/a76/reports/movements/invoices/services/temporary.py +++ b/backend/api/v1/modules/a76/reports/movements/invoices/services/temporary.py @@ -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)