From cd16c284ce2a467d3533767ee7887178f2231b73 Mon Sep 17 00:00:00 2001 From: akashbhome Date: Tue, 31 Mar 2026 16:24:58 +0530 Subject: [PATCH] update --- controllers/block_controller.py | 17 +- controllers/excel_upload_controller.py | 38 ++- controllers/hold_types_controller.py | 10 +- controllers/state_controller.py | 10 +- controllers/village_controller.py | 10 +- logs/activity.log | 447 +++++++++++++++++++++++++ model/ContractorInfo.py | 64 ++-- model/PmcReport.py | 2 +- model/Report.py | 4 +- model/payment.py | 2 +- 10 files changed, 529 insertions(+), 75 deletions(-) diff --git a/controllers/block_controller.py b/controllers/block_controller.py index 8f2e80a..225a158 100644 --- a/controllers/block_controller.py +++ b/controllers/block_controller.py @@ -7,12 +7,12 @@ from model.Block import Block from model.Utilities import HtmlHelper block_bp = Blueprint('block', __name__) - +block = Block() # --- Add Block page ------- @block_bp.route('/add_block', methods=['GET', 'POST']) @login_required def add_block(): - block = Block() + # block = Block() if request.method == 'POST': block.AddBlock(request) @@ -62,7 +62,7 @@ def get_districts(state_id): @login_required def check_block(): - block = Block() + # block = Block() return block.CheckBlock(request) @@ -70,8 +70,8 @@ def check_block(): @login_required def edit_block(block_id): - block = Block() - + +# block = Block() if request.method == 'POST': block.EditBlock(request, block_id) block.resultMessage @@ -90,7 +90,10 @@ def edit_block(block_id): for rs in cursor.stored_results(): 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(): districts = rs.fetchall() @@ -111,7 +114,7 @@ def edit_block(block_id): @login_required def delete_block(block_id): - block = Block() + # block = Block() block.DeleteBlock(request, block_id) return redirect(url_for('block.add_block')) \ No newline at end of file diff --git a/controllers/excel_upload_controller.py b/controllers/excel_upload_controller.py index 8c97ea1..e1d7a46 100644 --- a/controllers/excel_upload_controller.py +++ b/controllers/excel_upload_controller.py @@ -84,7 +84,9 @@ def show_table(filename): subcontractor_data = result.fetchone() 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() cursor.callproc('GetSubcontractorByName', [file_info['Subcontractor']]) for result in cursor.stored_results(): @@ -370,21 +372,23 @@ def save_data(): # if not invoice_id: print(" extra payment :", PMC_No,Total_Amount,UTR, subcontractor_id) - cursor.execute( - """ - INSERT INTO invoice (PMC_No,Contractor_Id) VALUES (%s, %s); - """, - (PMC_No, subcontractor_id) - ) - 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( + # """ + # INSERT INTO invoice (PMC_No,Contractor_Id) VALUES (%s, %s); + # """, + # (PMC_No, subcontractor_id) + # ) + # 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() + 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 cursor.callproc( "SavePayment", @@ -405,8 +409,8 @@ def save_data(): # Add inoice id in payment table # cursor.callproc("SavePayment",(PMC_No, Invoice_No, Payment_Amount, TDS_Payment_Amount, Total_Amount, UTR, invoice_id)) - if not village_id: - village_id = None + # if not village_id: + # village_id = None # cursor.callproc('InsertOrUpdateInPayment', ( # PMC_No, # village_id, diff --git a/controllers/hold_types_controller.py b/controllers/hold_types_controller.py index 40b2b20..6b82334 100644 --- a/controllers/hold_types_controller.py +++ b/controllers/hold_types_controller.py @@ -5,12 +5,12 @@ from model.GST import GST hold_bp = Blueprint("hold_types", __name__) - +hold = HoldTypes() # ---------------- ADD HOLD TYPE ---------------- @hold_bp.route('/add_hold_type', methods=['GET','POST']) @login_required def add_hold_type(): - hold = HoldTypes() + # hold = HoldTypes() if request.method == 'POST': hold.AddHoldType(request) @@ -30,7 +30,7 @@ def add_hold_type(): @login_required def check_hold_type(): - hold = HoldTypes() + # hold = HoldTypes() return hold.CheckHoldType(request) # if exists @@ -39,7 +39,7 @@ def check_hold_type(): @login_required def edit_hold_type(id): - hold = HoldTypes() + # hold = HoldTypes() if request.method == 'POST': hold.EditHoldType(request, id) # ✅ @@ -58,7 +58,7 @@ def edit_hold_type(id): @login_required def delete_hold_type(id): - hold = HoldTypes() + # hold = HoldTypes() hold.DeleteHoldType(request, id) # ✅ return redirect(url_for("hold_types.add_hold_type")) diff --git a/controllers/state_controller.py b/controllers/state_controller.py index a26c951..cf1bb13 100644 --- a/controllers/state_controller.py +++ b/controllers/state_controller.py @@ -3,13 +3,13 @@ from flask_login import login_required from model.State import State state_bp = Blueprint('state', __name__) - +state = State() # ----- State page ------ @state_bp.route('/add_state', methods=['GET', 'POST']) @login_required def add_state(): - state = State() + # state = State() if request.method == 'POST': state.AddState(request=request) @@ -24,7 +24,7 @@ def add_state(): @login_required def check_state(): - state = State() + # state = State() return state.CheckState(request=request) @@ -33,7 +33,7 @@ def check_state(): @login_required def deleteState(id): - state = State() + # state = State() state.DeleteState(request=request, id=id) @@ -47,7 +47,7 @@ def deleteState(id): @login_required def editState(id): - state = State() + # state = State() if request.method == 'POST': diff --git a/controllers/village_controller.py b/controllers/village_controller.py index 27a1ff2..2567c9b 100644 --- a/controllers/village_controller.py +++ b/controllers/village_controller.py @@ -11,14 +11,14 @@ from model.State import State # Create Blueprint village_bp = Blueprint('village', __name__) - +village = Village() # ------------------------- Add Village ------------------------- @village_bp.route('/add_village', methods=['GET', 'POST']) @login_required def add_village(): - village = Village() + # village = Village() if request.method == 'POST': village.AddVillage(request=request) @@ -79,14 +79,14 @@ def get_blocks(district_id): @village_bp.route('/check_village', methods=['POST']) @login_required def check_village(): - village = Village() + # village = Village() return village.CheckVillage(request=request) @village_bp.route('/delete_village/') @login_required def delete_village(village_id): - village = Village() + # village = Village() village.DeleteVillage(request=request, village_id=village_id) # ✅ Convert resultMessage to string if it's a Response or tuple @@ -112,7 +112,7 @@ def delete_village(village_id): @login_required def edit_village(village_id): - village = Village() + # village = Village() if request.method == 'POST': diff --git a/logs/activity.log b/logs/activity.log index 9779687..29fb355 100644 --- a/logs/activity.log +++ b/logs/activity.log @@ -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: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: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: diff --git a/model/ContractorInfo.py b/model/ContractorInfo.py index 4e89806..4aca779 100644 --- a/model/ContractorInfo.py +++ b/model/ContractorInfo.py @@ -24,39 +24,39 @@ class ContractorInfo: if connection.is_connected(): connection.close() - def fetchalldata(self): - """Fetch hold types and invoices for contractor.""" - data = {} - try: - connection = config.get_db_connection() - 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 + # def fetchalldata(self): + # """Fetch hold types and invoices for contractor.""" + # data = {} + # try: + # connection = config.get_db_connection() + # with connection.cursor(dictionary=True, buffered=True) as cursor: + # # Fetch Hold Types + # cursor.callproc('GetHoldAmountsAndHoldTypeByCtr', [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 - # Fetch Invoices - cursor.callproc('GetInvoicesByContractor', [self.ID]) - invoices = [] - for result in cursor.stored_results(): - invoices = result.fetchall() + # # Fetch Invoices + # cursor.callproc('GetInvoicesByContractor', [self.ID]) + # invoices = [] + # for result in cursor.stored_results(): + # invoices = result.fetchall() - # 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 + # # 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: - if connection.is_connected(): - connection.close() + # except Error as e: + # print(f"Error fetching contractor data: {e}") + # finally: + # if connection.is_connected(): + # connection.close() - return data + # return data diff --git a/model/PmcReport.py b/model/PmcReport.py index 0c80abb..e6638de 100644 --- a/model/PmcReport.py +++ b/model/PmcReport.py @@ -121,7 +121,7 @@ class PmcReport: # ================= DATA FETCH ================= contractor_info = ReportHelper.execute_sp( - cursor, 'GetContractorDetailsByPMC', [pmc_no] + cursor, 'GetContractorInfoByPmcNo', [pmc_no] ) contractor_info = contractor_info[0] if contractor_info else None diff --git a/model/Report.py b/model/Report.py index ae078f7..2f1b254 100644 --- a/model/Report.py +++ b/model/Report.py @@ -103,7 +103,7 @@ class ReportHelper: # Hold Release hold_release = ReportHelper.execute_sp(cursor, 'GetHoldRelease', [contractor_id]) # Credit Note - credit_note = ReportHelper.execute_sp(cursor, 'GetCreditNote', [contractor_id]) + credit_note = ReportHelper.execute_sp(cursor, 'GetCreditNotesByContractor', [contractor_id]) # Payments payments = ReportHelper.execute_sp(cursor, 'GetPayments', [contractor_id]) @@ -356,7 +356,7 @@ class ReportHelper: for cn in credit_note_raw: # key = ( # 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 = ( str(cn['PMC_No']).strip() diff --git a/model/payment.py b/model/payment.py index 75f237b..68cda74 100644 --- a/model/payment.py +++ b/model/payment.py @@ -144,7 +144,7 @@ class Paymentmodel: try: cursor = connection.cursor(dictionary=True) # Fetch PMC & Invoice before deleting - cursor.callproc('GetPaymentPMCInvoiceById', [payment_id]) + cursor.callproc('GetPaymentById', [payment_id]) record = {} for result in cursor.stored_results(): record = result.fetchone() or {}