117 lines
4.6 KiB
Python
117 lines
4.6 KiB
Python
|
|
import config
|
||
|
|
from datetime import datetime
|
||
|
|
|
||
|
|
class ReportHelper:
|
||
|
|
|
||
|
|
@staticmethod
|
||
|
|
def search_contractor(subcontractor_name, pmc_no, state, district, block, village, year_from, year_to):
|
||
|
|
|
||
|
|
connection = config.get_db_connection()
|
||
|
|
cursor = connection.cursor(dictionary=True)
|
||
|
|
|
||
|
|
cursor.callproc("search_contractor_info", [
|
||
|
|
subcontractor_name or None,
|
||
|
|
pmc_no or None,
|
||
|
|
state or None,
|
||
|
|
district or None,
|
||
|
|
block or None,
|
||
|
|
village or None,
|
||
|
|
year_from or None,
|
||
|
|
year_to or None
|
||
|
|
])
|
||
|
|
|
||
|
|
data = []
|
||
|
|
for result in cursor.stored_results():
|
||
|
|
data = result.fetchall()
|
||
|
|
|
||
|
|
cursor.close()
|
||
|
|
connection.close()
|
||
|
|
|
||
|
|
return data
|
||
|
|
|
||
|
|
|
||
|
|
@staticmethod
|
||
|
|
def get_contractor_report(contractor_id):
|
||
|
|
|
||
|
|
connection = config.get_db_connection()
|
||
|
|
cursor = connection.cursor(dictionary=True, buffered=True)
|
||
|
|
|
||
|
|
|
||
|
|
try:
|
||
|
|
# Contractor Info
|
||
|
|
cursor.callproc('GetContractorInfo', [contractor_id])
|
||
|
|
for result in cursor.stored_results():
|
||
|
|
contInfo = result.fetchone()
|
||
|
|
|
||
|
|
# Hold Types
|
||
|
|
cursor.callproc('GetContractorHoldTypes', [contractor_id])
|
||
|
|
for result in cursor.stored_results():
|
||
|
|
hold_types = result.fetchall()
|
||
|
|
|
||
|
|
# Invoices
|
||
|
|
cursor.callproc('GetContractorInvoices', [contractor_id])
|
||
|
|
for result in cursor.stored_results():
|
||
|
|
invoices = result.fetchall()
|
||
|
|
|
||
|
|
# GST Release
|
||
|
|
cursor.callproc('GetGSTRelease', [contractor_id])
|
||
|
|
for result in cursor.stored_results():
|
||
|
|
gst_rel = result.fetchall()
|
||
|
|
|
||
|
|
# Hold Release
|
||
|
|
cursor.callproc('GetHoldRelease', [contractor_id])
|
||
|
|
for result in cursor.stored_results():
|
||
|
|
hold_release = result.fetchall()
|
||
|
|
|
||
|
|
# Credit Note
|
||
|
|
cursor.callproc('GetCreditNote', [contractor_id])
|
||
|
|
for result in cursor.stored_results():
|
||
|
|
credit_note = result.fetchall()
|
||
|
|
|
||
|
|
# Payments
|
||
|
|
cursor.callproc('GetPayments', [contractor_id])
|
||
|
|
for result in cursor.stored_results():
|
||
|
|
payments = result.fetchall()
|
||
|
|
|
||
|
|
|
||
|
|
# Totals
|
||
|
|
total = {
|
||
|
|
"sum_invo_basic_amt": float(sum(row['Basic_Amount'] or 0 for row in invoices)),
|
||
|
|
"sum_invo_debit_amt": float(sum(row['Debit_Amount'] or 0 for row in invoices)),
|
||
|
|
"sum_invo_after_debit_amt": float(sum(row['After_Debit_Amount'] or 0 for row in invoices)),
|
||
|
|
"sum_invo_amt": float(sum(row['Amount'] or 0 for row in invoices)),
|
||
|
|
"sum_invo_gst_amt": float(sum(row['GST_Amount'] or 0 for row in invoices)),
|
||
|
|
"sum_invo_tds_amt": float(sum(row['TDS_Amount'] or 0 for row in invoices)),
|
||
|
|
"sum_invo_ds_amt": float(sum(row['SD_Amount'] or 0 for row in invoices)),
|
||
|
|
"sum_invo_on_commission": float(sum(row['On_Commission'] or 0 for row in invoices)),
|
||
|
|
"sum_invo_hydro_test": float(sum(row['Hydro_Testing'] or 0 for row in invoices)),
|
||
|
|
"sum_invo_gst_sd_amt": float(sum(row['GST_SD_Amount'] or 0 for row in invoices)),
|
||
|
|
"sum_invo_final_amt": float(sum(row['Final_Amount'] or 0 for row in invoices)),
|
||
|
|
"sum_invo_hold_amt": float(sum(row['hold_amount'] or 0 for row in invoices)),
|
||
|
|
|
||
|
|
"sum_gst_basic_amt": float(sum(row['basic_amount'] or 0 for row in gst_rel)),
|
||
|
|
"sum_gst_final_amt": float(sum(row['final_amount'] or 0 for row in gst_rel)),
|
||
|
|
|
||
|
|
"sum_pay_payment_amt": float(sum(row['Payment_Amount'] or 0 for row in payments)),
|
||
|
|
"sum_pay_tds_payment_amt": float(sum(row['TDS_Payment_Amount'] or 0 for row in payments)),
|
||
|
|
"sum_pay_total_amt": float(sum(row['Total_amount'] or 0 for row in payments))
|
||
|
|
}
|
||
|
|
|
||
|
|
current_date = datetime.now().strftime('%Y-%m-%d')
|
||
|
|
|
||
|
|
finally:
|
||
|
|
cursor.close()
|
||
|
|
connection.close()
|
||
|
|
|
||
|
|
return {
|
||
|
|
"contInfo": contInfo,
|
||
|
|
"invoices": invoices,
|
||
|
|
"hold_types": hold_types,
|
||
|
|
"gst_rel": gst_rel,
|
||
|
|
"payments": payments,
|
||
|
|
"credit_note": credit_note,
|
||
|
|
"hold_release": hold_release,
|
||
|
|
"total": total,
|
||
|
|
"current_date": current_date
|
||
|
|
}
|