150 lines
4.8 KiB
Python
150 lines
4.8 KiB
Python
import config
|
|
import mysql.connector
|
|
|
|
class GSTReleasemodel:
|
|
|
|
@staticmethod
|
|
def get_connection():
|
|
connection = config.get_db_connection()
|
|
if not connection:
|
|
return None
|
|
return connection
|
|
|
|
@staticmethod
|
|
def fetch_all_gst_releases():
|
|
connection = GSTReleasemodel.get_connection()
|
|
gst_releases = []
|
|
if connection:
|
|
cursor = connection.cursor(dictionary=True)
|
|
|
|
try:
|
|
cursor.callproc('GetAllGSTReleases')
|
|
|
|
gst_releases = []
|
|
for result in cursor.stored_results(): # change to procedure
|
|
gst_releases = result.fetchall()
|
|
|
|
except mysql.connector.Error as e:
|
|
print(f"Error fetching GST releases: {e}")
|
|
finally:
|
|
cursor.close()
|
|
connection.close()
|
|
return gst_releases
|
|
|
|
@staticmethod
|
|
def insert_gst_release(pmc_no, invoice_no, basic_amount, final_amount, total_amount, utr, contractor_id):
|
|
connection = GSTReleasemodel.get_connection()
|
|
if not connection:
|
|
return False
|
|
try:
|
|
cursor = connection.cursor()
|
|
|
|
# Insert into gst_release
|
|
cursor.callproc(
|
|
'InsertGSTReleaseOnly',
|
|
[pmc_no, invoice_no, basic_amount, final_amount, total_amount, utr, contractor_id]
|
|
)
|
|
|
|
# Insert into inpayment
|
|
cursor.callproc(
|
|
'InsertInpaymentOnly',
|
|
[pmc_no, invoice_no, basic_amount, final_amount, total_amount, utr, contractor_id]
|
|
)
|
|
|
|
connection.commit()
|
|
return True
|
|
except mysql.connector.Error as e:
|
|
print(f"Error inserting GST release: {e}")
|
|
return False
|
|
finally:
|
|
cursor.close()
|
|
connection.close()
|
|
|
|
@staticmethod
|
|
def fetch_gst_release_by_id(gst_release_id):
|
|
connection = GSTReleasemodel.get_connection()
|
|
if not connection:
|
|
return None
|
|
data = {}
|
|
try:
|
|
cursor = connection.cursor(dictionary=True)
|
|
|
|
cursor.callproc('GetGSTReleaseById', [gst_release_id])
|
|
|
|
for result in cursor.stored_results():
|
|
data = result.fetchone()
|
|
if data:
|
|
# Convert to array for template
|
|
data = [
|
|
data.get('GST_Release_Id'),
|
|
data.get('PMC_No'),
|
|
data.get('Invoice_No'),
|
|
data.get('Basic_Amount'),
|
|
data.get('Final_Amount'),
|
|
data.get('Total_Amount'),
|
|
data.get('UTR')
|
|
]
|
|
except mysql.connector.Error as e:
|
|
print(f"Error fetching GST release by id: {e}")
|
|
finally:
|
|
cursor.close()
|
|
connection.close()
|
|
return data
|
|
|
|
@staticmethod
|
|
def update_gst_release(gst_release_id, pmc_no, invoice_no, basic_amount, final_amount, total_amount, utr):
|
|
connection = GSTReleasemodel.get_connection()
|
|
if not connection:
|
|
return False
|
|
try:
|
|
cursor = connection.cursor()
|
|
# Update gst_release
|
|
cursor.callproc(
|
|
'UpdateGSTRelease',
|
|
[pmc_no, invoice_no, basic_amount, final_amount, total_amount, utr, gst_release_id]
|
|
)
|
|
# Update inpayment
|
|
cursor.callproc(
|
|
'UpdateInpaymentByUTR',
|
|
[basic_amount, final_amount, total_amount, utr]
|
|
)
|
|
connection.commit()
|
|
return True
|
|
except mysql.connector.Error as e:
|
|
print(f"Error updating GST release: {e}")
|
|
return False
|
|
finally:
|
|
cursor.close()
|
|
connection.close()
|
|
|
|
@staticmethod
|
|
def delete_gst_release(gst_release_id):
|
|
connection = GSTReleasemodel.get_connection()
|
|
if not connection:
|
|
return False, None
|
|
try:
|
|
cursor = connection.cursor(dictionary=True)
|
|
cursor.callproc('GetGSTReleaseUTRById', [gst_release_id])
|
|
record = None
|
|
for result in cursor.stored_results():
|
|
record = result.fetchone()
|
|
|
|
if not record:
|
|
return False, None
|
|
|
|
utr = record['UTR']
|
|
|
|
# Step 1: Delete gst_release
|
|
cursor.callproc('DeleteGSTReleaseById', [gst_release_id])
|
|
|
|
# Step 2: Reset inpayment using UTR
|
|
cursor.callproc('ResetInpaymentByUTR', [utr])
|
|
|
|
connection.commit()
|
|
return True, utr
|
|
except mysql.connector.Error as e:
|
|
print(f"Error deleting GST release: {e}")
|
|
return False, None
|
|
finally:
|
|
cursor.close()
|
|
connection.close() |