Village, invoice and Contractor Info model and controller added
This commit is contained in:
@@ -1,72 +1,65 @@
|
||||
import mysql.connector
|
||||
|
||||
|
||||
|
||||
from mysql.connector import Error
|
||||
import config
|
||||
import openpyxl
|
||||
import os
|
||||
import re
|
||||
import ast
|
||||
from datetime import datetime
|
||||
|
||||
|
||||
class ContractorInfo:
|
||||
ID = ""
|
||||
contInfo = None
|
||||
def __init__(self, id):
|
||||
self.ID = id
|
||||
print(id)
|
||||
def __init__(self, contractor_id):
|
||||
self.ID = contractor_id
|
||||
self.contInfo = None
|
||||
self.fetchData()
|
||||
|
||||
def fetchData(self):
|
||||
"""Fetch basic contractor info by ID."""
|
||||
try:
|
||||
connection = config.get_db_connection()
|
||||
cursor = connection.cursor(dictionary=True, buffered=True)
|
||||
cursor.callproc('GetContractorInfoById', [self.ID])
|
||||
for result in cursor.stored_results():
|
||||
self.contInfo = result.fetchone()
|
||||
|
||||
print(self.contInfo,flush=True)
|
||||
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}")
|
||||
finally:
|
||||
cursor.close()
|
||||
connection.close()
|
||||
if connection.is_connected():
|
||||
connection.close()
|
||||
|
||||
def fetchalldata(self):
|
||||
|
||||
"""Fetch hold types and invoices for contractor."""
|
||||
data = {}
|
||||
try:
|
||||
connection = config.get_db_connection()
|
||||
cursor = connection.cursor(dictionary=True, buffered=True)
|
||||
print("here", flush=True)
|
||||
|
||||
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
|
||||
|
||||
# ---------------- Hold Types ----------------
|
||||
cursor = connection.cursor(dictionary=True)
|
||||
# Fetch Invoices
|
||||
cursor.callproc('GetInvoicesByContractor', [self.ID])
|
||||
invoices = []
|
||||
for result in cursor.stored_results():
|
||||
invoices = result.fetchall()
|
||||
|
||||
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}
|
||||
|
||||
# ---------------- Invoices ----------------
|
||||
cursor = connection.cursor(dictionary=True)
|
||||
|
||||
cursor.callproc('GetInvoicesByContractor', [self.ID])
|
||||
|
||||
invoices = []
|
||||
for result in cursor.stored_results():
|
||||
invoices = result.fetchall()
|
||||
|
||||
# Remove duplicate invoices
|
||||
invoice_ids_seen = set()
|
||||
unique_invoices = []
|
||||
for inv in invoices:
|
||||
if inv["Invoice_Id"] not in invoice_ids_seen:
|
||||
invoice_ids_seen.add(inv["Invoice_Id"])
|
||||
unique_invoices.append(inv)
|
||||
invoices = unique_invoices
|
||||
# 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
|
||||
|
||||
except Error as e:
|
||||
print(f"Error fetching contractor data: {e}")
|
||||
finally:
|
||||
cursor.close()
|
||||
connection.close()
|
||||
if connection.is_connected():
|
||||
connection.close()
|
||||
|
||||
|
||||
return data
|
||||
|
||||
Reference in New Issue
Block a user