This commit is contained in:
2026-03-31 16:24:58 +05:30
parent 4e5887b160
commit cd16c284ce
10 changed files with 529 additions and 75 deletions

View File

@@ -7,12 +7,12 @@ from model.Block import Block
from model.Utilities import HtmlHelper from model.Utilities import HtmlHelper
block_bp = Blueprint('block', __name__) block_bp = Blueprint('block', __name__)
block = Block()
# --- Add Block page ------- # --- Add Block page -------
@block_bp.route('/add_block', methods=['GET', 'POST']) @block_bp.route('/add_block', methods=['GET', 'POST'])
@login_required @login_required
def add_block(): def add_block():
block = Block() # block = Block()
if request.method == 'POST': if request.method == 'POST':
block.AddBlock(request) block.AddBlock(request)
@@ -62,7 +62,7 @@ def get_districts(state_id):
@login_required @login_required
def check_block(): def check_block():
block = Block() # block = Block()
return block.CheckBlock(request) return block.CheckBlock(request)
@@ -70,8 +70,8 @@ def check_block():
@login_required @login_required
def edit_block(block_id): def edit_block(block_id):
block = Block()
# block = Block()
if request.method == 'POST': if request.method == 'POST':
block.EditBlock(request, block_id) block.EditBlock(request, block_id)
block.resultMessage block.resultMessage
@@ -90,7 +90,10 @@ def edit_block(block_id):
for rs in cursor.stored_results(): for rs in cursor.stored_results():
states = rs.fetchall() states = rs.fetchall()
cursor.callproc("GetAllDistrictsData") # cursor.callproc("GetAllDistrictsData")
# for rs in cursor.stored_results():
# districts = rs.fetchall()
cursor.callproc("GetAllDistricts")
for rs in cursor.stored_results(): for rs in cursor.stored_results():
districts = rs.fetchall() districts = rs.fetchall()
@@ -111,7 +114,7 @@ def edit_block(block_id):
@login_required @login_required
def delete_block(block_id): def delete_block(block_id):
block = Block() # block = Block()
block.DeleteBlock(request, block_id) block.DeleteBlock(request, block_id)
return redirect(url_for('block.add_block')) return redirect(url_for('block.add_block'))

View File

@@ -84,7 +84,9 @@ def show_table(filename):
subcontractor_data = result.fetchone() subcontractor_data = result.fetchone()
if not subcontractor_data: if not subcontractor_data:
cursor.callproc('InsertSubcontractor', [file_info['Subcontractor']]) # cursor.callproc('InsertSubcontractor', [file_info['Subcontractor']])
# connection.commit()
cursor.callproc('SaveContractor', [file_info.get('Subcontractor'),None,None,None,None,None,None,None,None])
connection.commit() connection.commit()
cursor.callproc('GetSubcontractorByName', [file_info['Subcontractor']]) cursor.callproc('GetSubcontractorByName', [file_info['Subcontractor']])
for result in cursor.stored_results(): for result in cursor.stored_results():
@@ -370,21 +372,23 @@ def save_data():
# if not invoice_id: # if not invoice_id:
print(" extra payment :", PMC_No,Total_Amount,UTR, subcontractor_id) print(" extra payment :", PMC_No,Total_Amount,UTR, subcontractor_id)
cursor.execute( # cursor.execute(
""" # """
INSERT INTO invoice (PMC_No,Contractor_Id) VALUES (%s, %s); # INSERT INTO invoice (PMC_No,Contractor_Id) VALUES (%s, %s);
""", # """,
(PMC_No, subcontractor_id) # (PMC_No, subcontractor_id)
) # )
connection.commit() # connection.commit()
cursor.execute(
"SELECT invoice_id FROM invoice WHERE PMC_No=%s AND Contractor_Id =%s ORDER BY invoice_id DESC LIMIT 1",
(PMC_No, subcontractor_id)
)
row = cursor.fetchone()
invoice_id = row[0] if row else None
# cursor.execute(
# "SELECT invoice_id FROM invoice WHERE PMC_No=%s AND Contractor_Id =%s ORDER BY invoice_id DESC LIMIT 1",
# (PMC_No, subcontractor_id)
# )
# row = cursor.fetchone()
cursor.callproc("insertExtrapaymet",(PMC_No, subcontractor_id))
for result in cursor.stored_results():
row = result.fetchone()
invoice_id = row[0] if row else None
# insert payment # insert payment
cursor.callproc( cursor.callproc(
"SavePayment", "SavePayment",
@@ -405,8 +409,8 @@ def save_data():
# Add inoice id in payment table # Add inoice id in payment table
# cursor.callproc("SavePayment",(PMC_No, Invoice_No, Payment_Amount, TDS_Payment_Amount, Total_Amount, UTR, invoice_id)) # cursor.callproc("SavePayment",(PMC_No, Invoice_No, Payment_Amount, TDS_Payment_Amount, Total_Amount, UTR, invoice_id))
if not village_id: # if not village_id:
village_id = None # village_id = None
# cursor.callproc('InsertOrUpdateInPayment', ( # cursor.callproc('InsertOrUpdateInPayment', (
# PMC_No, # PMC_No,
# village_id, # village_id,

View File

@@ -5,12 +5,12 @@ from model.GST import GST
hold_bp = Blueprint("hold_types", __name__) hold_bp = Blueprint("hold_types", __name__)
hold = HoldTypes()
# ---------------- ADD HOLD TYPE ---------------- # ---------------- ADD HOLD TYPE ----------------
@hold_bp.route('/add_hold_type', methods=['GET','POST']) @hold_bp.route('/add_hold_type', methods=['GET','POST'])
@login_required @login_required
def add_hold_type(): def add_hold_type():
hold = HoldTypes() # hold = HoldTypes()
if request.method == 'POST': if request.method == 'POST':
hold.AddHoldType(request) hold.AddHoldType(request)
@@ -30,7 +30,7 @@ def add_hold_type():
@login_required @login_required
def check_hold_type(): def check_hold_type():
hold = HoldTypes() # hold = HoldTypes()
return hold.CheckHoldType(request) # if exists return hold.CheckHoldType(request) # if exists
@@ -39,7 +39,7 @@ def check_hold_type():
@login_required @login_required
def edit_hold_type(id): def edit_hold_type(id):
hold = HoldTypes() # hold = HoldTypes()
if request.method == 'POST': if request.method == 'POST':
hold.EditHoldType(request, id) # ✅ hold.EditHoldType(request, id) # ✅
@@ -58,7 +58,7 @@ def edit_hold_type(id):
@login_required @login_required
def delete_hold_type(id): def delete_hold_type(id):
hold = HoldTypes() # hold = HoldTypes()
hold.DeleteHoldType(request, id) # ✅ hold.DeleteHoldType(request, id) # ✅
return redirect(url_for("hold_types.add_hold_type")) return redirect(url_for("hold_types.add_hold_type"))

View File

@@ -3,13 +3,13 @@ from flask_login import login_required
from model.State import State from model.State import State
state_bp = Blueprint('state', __name__) state_bp = Blueprint('state', __name__)
state = State()
# ----- State page ------ # ----- State page ------
@state_bp.route('/add_state', methods=['GET', 'POST']) @state_bp.route('/add_state', methods=['GET', 'POST'])
@login_required @login_required
def add_state(): def add_state():
state = State() # state = State()
if request.method == 'POST': if request.method == 'POST':
state.AddState(request=request) state.AddState(request=request)
@@ -24,7 +24,7 @@ def add_state():
@login_required @login_required
def check_state(): def check_state():
state = State() # state = State()
return state.CheckState(request=request) return state.CheckState(request=request)
@@ -33,7 +33,7 @@ def check_state():
@login_required @login_required
def deleteState(id): def deleteState(id):
state = State() # state = State()
state.DeleteState(request=request, id=id) state.DeleteState(request=request, id=id)
@@ -47,7 +47,7 @@ def deleteState(id):
@login_required @login_required
def editState(id): def editState(id):
state = State() # state = State()
if request.method == 'POST': if request.method == 'POST':

View File

@@ -11,14 +11,14 @@ from model.State import State
# Create Blueprint # Create Blueprint
village_bp = Blueprint('village', __name__) village_bp = Blueprint('village', __name__)
village = Village()
# ------------------------- Add Village ------------------------- # ------------------------- Add Village -------------------------
@village_bp.route('/add_village', methods=['GET', 'POST']) @village_bp.route('/add_village', methods=['GET', 'POST'])
@login_required @login_required
def add_village(): def add_village():
village = Village() # village = Village()
if request.method == 'POST': if request.method == 'POST':
village.AddVillage(request=request) village.AddVillage(request=request)
@@ -79,14 +79,14 @@ def get_blocks(district_id):
@village_bp.route('/check_village', methods=['POST']) @village_bp.route('/check_village', methods=['POST'])
@login_required @login_required
def check_village(): def check_village():
village = Village() # village = Village()
return village.CheckVillage(request=request) return village.CheckVillage(request=request)
@village_bp.route('/delete_village/<int:village_id>') @village_bp.route('/delete_village/<int:village_id>')
@login_required @login_required
def delete_village(village_id): def delete_village(village_id):
village = Village() # village = Village()
village.DeleteVillage(request=request, village_id=village_id) village.DeleteVillage(request=request, village_id=village_id)
# ✅ Convert resultMessage to string if it's a Response or tuple # ✅ Convert resultMessage to string if it's a Response or tuple
@@ -112,7 +112,7 @@ def delete_village(village_id):
@login_required @login_required
def edit_village(village_id): def edit_village(village_id):
village = Village() # village = Village()
if request.method == 'POST': if request.method == 'POST':

View File

@@ -8763,3 +8763,450 @@ Timestamp: 2026-03-31 13:06:42 | User: Unknown | Action: Search Contractor | Det
Timestamp: 2026-03-31 13:06:42 | User: Unknown | Action: Search Contractor | Details: Timestamp: 2026-03-31 13:06:42 | User: Unknown | Action: Search Contractor | Details:
Timestamp: 2026-03-31 13:06:44 | User: Unknown | Action: Search Contractor | Details: Timestamp: 2026-03-31 13:06:44 | User: Unknown | Action: Search Contractor | Details:
Timestamp: 2026-03-31 13:07:15 | User: Unknown | Action: Download PMC Report | Details: Timestamp: 2026-03-31 13:07:15 | User: Unknown | Action: Download PMC Report | Details:
Timestamp: 2026-03-31 13:23:08 | User: Unknown | Action: Delete Payment | Details:
Timestamp: 2026-03-31 14:57:20 | User: Unknown | Action: Search Contractor | Details:
Timestamp: 2026-03-31 14:57:20 | User: Unknown | Action: Search Contractor | Details:
Timestamp: 2026-03-31 14:57:24 | User: Unknown | Action: Search Contractor | Details:
Timestamp: 2026-03-31 15:14:02 | User: Unknown | Action: Upload Excel File | Details:
Timestamp: 2026-03-31 15:14:05 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:14:05 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:14:05 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:14:05 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:14:05 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:14:05 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:14:05 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:14:05 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:14:05 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:14:05 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:14:06 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:14:06 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:14:06 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:14:06 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:14:06 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:14:06 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:14:06 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:14:06 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:14:06 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:14:06 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:14:06 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:14:06 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:14:06 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:14:06 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:14:06 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:16:01 | User: Unknown | Action: Search Contractor | Details:
Timestamp: 2026-03-31 15:28:25 | User: Unknown | Action: Search Contractor | Details:
Timestamp: 2026-03-31 15:28:26 | User: Unknown | Action: Search Contractor | Details:
Timestamp: 2026-03-31 15:28:26 | User: Unknown | Action: Search Contractor | Details:
Timestamp: 2026-03-31 15:28:27 | User: Unknown | Action: Search Contractor | Details:
Timestamp: 2026-03-31 15:28:29 | User: Unknown | Action: Search Contractor | Details:
Timestamp: 2026-03-31 15:32:14 | User: Unknown | Action: Search Contractor | Details:
Timestamp: 2026-03-31 15:32:20 | User: Unknown | Action: Download PMC Report | Details:
Timestamp: 2026-03-31 15:37:18 | User: Unknown | Action: Search Contractor | Details:
Timestamp: 2026-03-31 15:37:22 | User: Unknown | Action: Search Contractor | Details:
Timestamp: 2026-03-31 15:37:22 | User: Unknown | Action: Search Contractor | Details:
Timestamp: 2026-03-31 15:37:22 | User: Unknown | Action: Search Contractor | Details:
Timestamp: 2026-03-31 15:37:22 | User: Unknown | Action: Search Contractor | Details:
Timestamp: 2026-03-31 15:37:24 | User: Unknown | Action: Search Contractor | Details:
Timestamp: 2026-03-31 15:40:40 | User: Unknown | Action: Upload Excel File | Details:
Timestamp: 2026-03-31 15:40:47 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:40:47 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:40:47 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:40:47 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:40:47 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:40:47 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:40:47 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:40:47 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:40:47 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:40:47 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:40:47 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:40:47 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:40:47 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:40:47 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:40:47 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:40:47 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:40:47 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:40:47 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:40:47 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:40:47 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:40:47 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:40:47 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:40:47 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:40:47 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:40:47 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:40:47 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:40:47 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:40:47 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:40:47 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:40:47 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:40:47 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:40:47 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:40:47 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:40:47 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:40:47 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:40:47 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:40:47 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:40:47 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:40:47 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:40:47 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:40:47 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:40:47 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:40:47 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:40:47 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:40:47 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:40:47 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:40:47 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:40:47 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:40:47 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:40:47 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:40:47 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:40:47 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:40:47 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:40:47 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:40:47 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:40:47 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:40:47 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:40:47 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:40:47 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:40:48 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:40:48 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:40:48 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:40:48 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:40:48 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:40:48 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:40:48 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:40:48 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:40:48 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:40:48 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:40:48 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:40:48 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:40:48 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:40:48 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:40:48 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:40:48 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:40:48 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:40:48 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:40:48 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:40:48 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:40:48 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:40:48 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:40:48 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:40:48 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:40:48 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:40:48 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:40:48 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:40:48 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:40:48 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:40:48 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:40:48 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:40:48 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:40:48 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:40:48 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:40:48 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:40:48 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:40:48 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:40:48 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:40:48 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:40:48 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:40:48 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:40:48 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:40:48 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:40:48 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:40:48 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:40:48 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:40:48 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:40:48 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:40:48 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:40:48 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:40:48 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:40:48 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:40:48 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:40:48 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:40:48 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:40:48 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:40:48 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:40:48 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:40:48 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:40:48 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:40:48 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:40:48 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:40:48 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:40:48 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:40:48 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:40:48 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:40:48 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:40:48 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:40:48 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:40:48 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:40:48 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:40:48 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:40:48 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:40:48 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:40:48 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:40:48 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:40:48 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:40:48 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:40:48 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:40:48 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:40:48 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:40:48 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:40:48 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:40:48 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:40:48 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:40:48 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:40:48 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:40:48 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:40:48 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:40:48 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:40:48 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:40:48 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:40:48 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:40:48 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:40:48 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:40:48 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:40:48 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:40:48 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:40:48 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:40:48 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:40:48 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:40:48 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:40:48 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:40:48 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:40:48 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:40:48 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:40:48 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:40:48 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:40:48 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:40:48 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:40:48 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:40:48 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:40:48 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:40:48 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:40:48 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:40:48 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:40:48 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:40:48 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:40:48 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:40:48 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:40:48 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:40:48 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:40:48 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:40:48 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:40:48 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:40:48 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:40:48 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:40:48 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:40:48 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:40:48 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:40:48 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:40:48 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:40:48 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:40:48 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:40:48 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:40:48 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:40:48 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:40:48 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:40:48 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:40:48 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:40:48 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:40:48 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:40:48 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:40:48 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:40:48 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:40:48 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:40:48 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:40:48 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:40:48 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:40:48 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:40:48 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:40:48 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:40:48 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:40:48 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:40:48 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:40:48 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:40:48 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:40:48 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:40:48 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:40:48 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:40:48 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:40:48 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:40:48 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:40:48 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:40:48 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:40:48 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:40:48 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:40:48 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:40:48 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:40:48 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:40:48 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:40:48 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:40:48 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:40:48 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:40:48 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:40:48 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:40:48 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:40:48 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:40:48 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:40:48 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:40:48 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:40:48 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:40:48 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:40:48 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:40:48 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:40:48 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:40:48 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:40:48 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:40:48 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:40:48 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:40:48 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:40:48 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:40:48 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:40:48 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:40:48 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:40:48 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:40:48 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:40:48 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:40:48 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:40:48 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:40:48 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:40:48 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:40:48 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:40:48 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:40:48 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:40:48 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:40:48 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:40:48 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:40:48 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:40:48 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:40:48 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:40:48 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:40:49 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:40:49 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:40:49 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:40:49 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:40:49 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:40:49 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:40:49 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:40:49 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:40:49 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:40:49 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:40:49 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:40:49 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:40:49 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:40:49 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:40:49 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:40:49 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:40:49 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:40:49 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:40:49 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:40:49 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:40:49 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:40:49 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:40:49 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:40:49 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:40:49 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:40:49 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:40:49 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:40:49 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:40:49 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:40:49 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:40:49 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:40:49 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:40:49 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:40:49 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:40:49 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:40:49 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:40:49 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:40:49 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:40:49 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:40:49 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:40:49 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:40:49 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:40:49 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:40:49 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:40:49 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:40:49 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:40:49 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:40:49 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:40:49 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:40:49 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:40:49 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:40:49 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:40:49 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:40:49 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:40:49 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:40:49 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:40:49 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:40:49 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:40:49 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:40:49 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:40:49 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:40:49 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:40:49 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:40:49 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:40:49 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:40:49 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:40:49 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:40:49 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:40:49 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:40:49 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:40:49 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:40:49 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:40:49 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:40:49 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:40:49 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:40:49 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:40:49 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:40:49 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:40:49 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:40:49 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:40:49 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:40:49 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:40:49 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:40:49 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:40:49 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:40:49 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:40:49 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:40:49 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:40:49 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:40:49 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:40:49 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:40:49 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:40:49 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:40:49 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:40:49 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:40:49 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:40:49 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:40:49 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:40:49 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:40:49 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:40:49 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:40:49 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:40:49 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:40:49 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:40:49 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:40:49 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:40:49 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:40:49 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:40:49 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:40:49 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:40:49 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:40:49 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:40:49 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:40:49 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:40:49 | User: Unknown | Action: Data saved | Details:
Timestamp: 2026-03-31 15:41:00 | User: Unknown | Action: Search Contractor | Details:
Timestamp: 2026-03-31 15:41:00 | User: Unknown | Action: Search Contractor | Details:
Timestamp: 2026-03-31 15:41:01 | User: Unknown | Action: Search Contractor | Details:
Timestamp: 2026-03-31 15:41:03 | User: Unknown | Action: Search Contractor | Details:
Timestamp: 2026-03-31 15:43:14 | User: Unknown | Action: Edit Block | Details:
Timestamp: 2026-03-31 15:43:47 | User: Unknown | Action: Edit Subcontractor | Details:
Timestamp: 2026-03-31 15:43:55 | User: Unknown | Action: Get hold type | Details:
Timestamp: 2026-03-31 15:45:08 | User: Unknown | Action: Edit Hold Type | Details:
Timestamp: 2026-03-31 15:55:46 | User: Unknown | Action: Search Contractor | Details:
Timestamp: 2026-03-31 15:55:46 | User: Unknown | Action: Search Contractor | Details:
Timestamp: 2026-03-31 15:55:48 | User: Unknown | Action: Search Contractor | Details:
Timestamp: 2026-03-31 15:55:52 | User: Unknown | Action: Download PMC Report | Details:
Timestamp: 2026-03-31 15:56:33 | User: Unknown | Action: Download PMC Report | Details:
Timestamp: 2026-03-31 15:56:48 | User: Unknown | Action: Download PMC Report | Details:
Timestamp: 2026-03-31 15:57:43 | User: Unknown | Action: Download PMC Report | Details:
Timestamp: 2026-03-31 16:15:32 | User: Unknown | Action: Download PMC Report | Details:

View File

@@ -24,39 +24,39 @@ class ContractorInfo:
if connection.is_connected(): if connection.is_connected():
connection.close() connection.close()
def fetchalldata(self): # def fetchalldata(self):
"""Fetch hold types and invoices for contractor.""" # """Fetch hold types and invoices for contractor."""
data = {} # data = {}
try: # try:
connection = config.get_db_connection() # connection = config.get_db_connection()
with connection.cursor(dictionary=True, buffered=True) as cursor: # with connection.cursor(dictionary=True, buffered=True) as cursor:
# Fetch Hold Types # # Fetch Hold Types
cursor.callproc('GetHoldTypesByContractor', [self.ID]) # cursor.callproc('GetHoldAmountsAndHoldTypeByCtr', [self.ID])
hold_types = [] # hold_types = []
for result in cursor.stored_results(): # for result in cursor.stored_results():
hold_types = result.fetchall() # hold_types = result.fetchall()
hold_type_map = {ht['hold_type_id']: ht['hold_type'] for ht in hold_types} # hold_type_map = {ht['hold_type_id']: ht['hold_type'] for ht in hold_types}
data['hold_types'] = hold_type_map # data['hold_types'] = hold_type_map
# Fetch Invoices # # Fetch Invoices
cursor.callproc('GetInvoicesByContractor', [self.ID]) # cursor.callproc('GetInvoicesByContractor', [self.ID])
invoices = [] # invoices = []
for result in cursor.stored_results(): # for result in cursor.stored_results():
invoices = result.fetchall() # invoices = result.fetchall()
# Remove duplicate invoices # # Remove duplicate invoices
seen_ids = set() # seen_ids = set()
unique_invoices = [] # unique_invoices = []
for inv in invoices: # for inv in invoices:
if inv['Invoice_Id'] not in seen_ids: # if inv['Invoice_Id'] not in seen_ids:
seen_ids.add(inv['Invoice_Id']) # seen_ids.add(inv['Invoice_Id'])
unique_invoices.append(inv) # unique_invoices.append(inv)
data['invoices'] = unique_invoices # data['invoices'] = unique_invoices
except Error as e: # except Error as e:
print(f"Error fetching contractor data: {e}") # print(f"Error fetching contractor data: {e}")
finally: # finally:
if connection.is_connected(): # if connection.is_connected():
connection.close() # connection.close()
return data # return data

View File

@@ -121,7 +121,7 @@ class PmcReport:
# ================= DATA FETCH ================= # ================= DATA FETCH =================
contractor_info = ReportHelper.execute_sp( contractor_info = ReportHelper.execute_sp(
cursor, 'GetContractorDetailsByPMC', [pmc_no] cursor, 'GetContractorInfoByPmcNo', [pmc_no]
) )
contractor_info = contractor_info[0] if contractor_info else None contractor_info = contractor_info[0] if contractor_info else None

View File

@@ -103,7 +103,7 @@ class ReportHelper:
# Hold Release # Hold Release
hold_release = ReportHelper.execute_sp(cursor, 'GetHoldRelease', [contractor_id]) hold_release = ReportHelper.execute_sp(cursor, 'GetHoldRelease', [contractor_id])
# Credit Note # Credit Note
credit_note = ReportHelper.execute_sp(cursor, 'GetCreditNote', [contractor_id]) credit_note = ReportHelper.execute_sp(cursor, 'GetCreditNotesByContractor', [contractor_id])
# Payments # Payments
payments = ReportHelper.execute_sp(cursor, 'GetPayments', [contractor_id]) payments = ReportHelper.execute_sp(cursor, 'GetPayments', [contractor_id])
@@ -356,7 +356,7 @@ class ReportHelper:
for cn in credit_note_raw: for cn in credit_note_raw:
# key = ( # key = (
# str(cn['PMC_No']).strip(), # str(cn['PMC_No']).strip(),
# str(cn['Invoice_No']).replace(" ", "") if cn['Invoice_No'] else "" # str(cn['Invoice_No']).replace(" ", "") if cn['Invoice_No'] else ""
# ) # )
key = ( key = (
str(cn['PMC_No']).strip() str(cn['PMC_No']).strip()

View File

@@ -144,7 +144,7 @@ class Paymentmodel:
try: try:
cursor = connection.cursor(dictionary=True) cursor = connection.cursor(dictionary=True)
# Fetch PMC & Invoice before deleting # Fetch PMC & Invoice before deleting
cursor.callproc('GetPaymentPMCInvoiceById', [payment_id]) cursor.callproc('GetPaymentById', [payment_id])
record = {} record = {}
for result in cursor.stored_results(): for result in cursor.stored_results():
record = result.fetchone() or {} record = result.fetchone() or {}