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 ee2f603e..5a2c1ee3 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,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], 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 d7513f1f..cfb594f7 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,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 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 c3b7f088..13143ef6 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,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) 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 4851aebf..d4d2b765 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 @@ -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 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 26ceb14f..889d3185 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,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], 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 b4d1ea2c..b249ebdf 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 @@ -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(