new fom of MAT credit add in table formate and update show

This commit is contained in:
2026-01-07 16:26:59 +05:30
parent 9c2486fdd6
commit 68511b7558
6 changed files with 595 additions and 6 deletions

123
AppCode/MatCreditHandler.py Normal file
View File

@@ -0,0 +1,123 @@
from AppCode.Config import DBConfig
import mysql.connector
class MatCreditHandler:
def __init__(self):
db = DBConfig()
self.conn = db.get_db_connection()
self.cursor = self.conn.cursor(dictionary=True)
@staticmethod
def fetch_all():
conn = DBConfig.get_db_connection()
cur = conn.cursor(dictionary=True)
try:
# Stored Procedure returns TWO result sets
cur.callproc("GetMatCedit")
result_sets = cur.stored_results()
mat_rows = next(result_sets).fetchall()
utilization_rows = next(result_sets).fetchall()
return mat_rows, utilization_rows
finally:
cur.close()
conn.close()
@staticmethod
def save_single(data):
conn = DBConfig.get_db_connection()
cur = conn.cursor()
try:
cur.execute(
"SELECT id FROM mat_credit WHERE financial_year=%s",
(data["financial_year"],)
)
row = cur.fetchone()
if row:
mat_id = row[0]
cur.execute("""
UPDATE mat_credit
SET mat_credit=%s, balance=%s
WHERE id=%s
""", (data["mat_credit"], data["balance"], mat_id))
cur.execute(
"DELETE FROM mat_utilization WHERE mat_credit_id=%s",
(mat_id,)
)
else:
cur.execute("""
INSERT INTO mat_credit (financial_year, mat_credit, balance)
VALUES (%s,%s,%s)
""", (data["financial_year"], data["mat_credit"], data["balance"]))
mat_id = cur.lastrowid
for u in data["utilization"]:
cur.execute("""
INSERT INTO mat_utilization
(mat_credit_id, utilized_year, utilized_amount)
VALUES (%s,%s,%s)
""", (mat_id, u["year"], u["amount"]))
conn.commit()
except Exception:
conn.rollback()
raise
finally:
cur.close()
conn.close()
@staticmethod
def save_bulk(rows):
conn = DBConfig.get_db_connection()
cur = conn.cursor()
skipped = []
try:
for row in rows:
cur.execute(
"SELECT id FROM mat_credit WHERE financial_year=%s",
(row["financial_year"],)
)
if cur.fetchone():
skipped.append(row["financial_year"])
continue
cur.execute("""
INSERT INTO mat_credit (financial_year, mat_credit, balance)
VALUES (%s,%s,%s)
""", (row["financial_year"], row["mat_credit"], row["balance"]))
mat_id = cur.lastrowid
for u in row["utilization"]:
cur.execute("""
INSERT INTO mat_utilization
(mat_credit_id, utilized_year, utilized_amount)
VALUES (%s,%s,%s)
""", (mat_id, u["year"], u["amount"]))
conn.commit()
return skipped
except Exception:
conn.rollback()
raise
finally:
cur.close()
conn.close()