Files
Payment_Reconciliation/model/ContractorInfo.py

61 lines
2.2 KiB
Python
Raw Normal View History

2025-11-25 14:14:10 +05:30
from mysql.connector import Error
import config
class ContractorInfo:
def __init__(self, contractor_id):
self.ID = contractor_id
self.contInfo = None
2025-11-25 14:14:10 +05:30
self.fetchData()
def fetchData(self):
"""Fetch basic contractor info by ID."""
2025-11-25 14:14:10 +05:30
try:
connection = config.get_db_connection()
with connection.cursor(dictionary=True, buffered=True) as cursor:
cursor.callproc('GetContractorInfoById', [self.ID])
# Get the first result set
for result in cursor.stored_results():
self.contInfo = result.fetchone()
except Error as e:
print(f"Error fetching contractor info: {e}")
2025-11-25 14:14:10 +05:30
finally:
if connection.is_connected():
connection.close()
2025-11-25 14:14:10 +05:30
def fetchalldata(self):
"""Fetch hold types and invoices for contractor."""
data = {}
2025-11-25 14:14:10 +05:30
try:
connection = config.get_db_connection()
with connection.cursor(dictionary=True, buffered=True) as cursor:
# Fetch Hold Types
cursor.callproc('GetHoldTypesByContractor', [self.ID])
hold_types = []
for result in cursor.stored_results():
hold_types = result.fetchall()
hold_type_map = {ht['hold_type_id']: ht['hold_type'] for ht in hold_types}
data['hold_types'] = hold_type_map
2026-03-23 11:37:15 +05:30
# Fetch Invoices
cursor.callproc('GetInvoicesByContractor', [self.ID])
invoices = []
for result in cursor.stored_results():
invoices = result.fetchall()
2025-11-25 14:14:10 +05:30
# Remove duplicate invoices
seen_ids = set()
unique_invoices = []
for inv in invoices:
if inv['Invoice_Id'] not in seen_ids:
seen_ids.add(inv['Invoice_Id'])
unique_invoices.append(inv)
data['invoices'] = unique_invoices
2025-11-25 14:14:10 +05:30
except Error as e:
print(f"Error fetching contractor data: {e}")
2025-11-25 14:14:10 +05:30
finally:
if connection.is_connected():
connection.close()
2025-11-25 14:14:10 +05:30
return data