From 3a2a22bf99bb386e8bf4e29b067b3de5dc32b4a5 Mon Sep 17 00:00:00 2001 From: Swapnil9693 Date: Fri, 21 Nov 2025 12:12:36 +0530 Subject: [PATCH] Initial Commit --- MAIN2.PY | 26 + activity.log | 509 +++++ config.py | 2 +- main.py | 1881 +---------------- main1.py | 933 ++++++++ templates/base.html | 2 +- templates/index.html | 2 +- templates/uploadExcelFile.html | 2 +- .../AARHAM INTERNATIONAL_shamli_31.07.25.xlsx | Bin 27903 -> 22834 bytes ...ngineering Pvt. Ltd. Shamli _31.07.25.xlsx | Bin 0 -> 19868 bytes uploads/Ajay Wankhede.xlsx | Bin 0 -> 10955 bytes uploads/BG Construction.xlsx | Bin 0 -> 11055 bytes ... Janardan organic food mill - MZN (1).xlsx | Bin 179519 -> 183418 bytes 13 files changed, 1552 insertions(+), 1805 deletions(-) create mode 100644 MAIN2.PY create mode 100644 main1.py create mode 100644 uploads/Aiva Engineering Pvt. Ltd. Shamli _31.07.25.xlsx create mode 100644 uploads/Ajay Wankhede.xlsx create mode 100644 uploads/BG Construction.xlsx diff --git a/MAIN2.PY b/MAIN2.PY new file mode 100644 index 0000000..394fb24 --- /dev/null +++ b/MAIN2.PY @@ -0,0 +1,26 @@ +from flask import Blueprint, request, jsonify, send_file, current_app, render_template +from datetime import datetime +import ast +import os + +from db import DB # Your existing DB wrapper + + +# ============================================================= +# Base Service (common DB operations) +# ============================================================= +class BaseService: + def __init__(self): + self.db = DB() + + def fetch_all(self, proc, params=None): + return self.db.fetch_all_proc(proc, params) + + def fetch_one(self, proc, params=None): + return self.db.fetch_one_proc(proc, params) + + def execute_proc(self, proc, params=None): + return self.db.exec_proc(proc, params) + + def get_conn(self): + return self.db.get_connection() diff --git a/activity.log b/activity.log index d657d1e..2ee7a1d 100644 --- a/activity.log +++ b/activity.log @@ -4506,3 +4506,512 @@ Timestamp: 2025-10-04 17:27:24 | User: Unknown | Action: Search contractor | Det Timestamp: 2025-10-04 17:27:24 | User: Unknown | Action: Search contractor | Details: User admin Search contractor'a' Timestamp: 2025-10-04 17:27:24 | User: Unknown | Action: Search contractor | Details: User admin Search contractor'aad' Timestamp: 2025-10-04 17:27:25 | User: Unknown | Action: Search contractor | Details: User admin Search contractor'aad' +Timestamp: 2025-10-31 11:24:34 | User: Unknown | Action: Login | Details: User admin logged in (static user) +Timestamp: 2025-10-31 11:25:19 | User: Unknown | Action: Search contractor | Details: User admin Search contractor'a' +Timestamp: 2025-10-31 11:25:19 | User: Unknown | Action: Search contractor | Details: User admin Search contractor'aj' +Timestamp: 2025-10-31 11:25:19 | User: Unknown | Action: Search contractor | Details: User admin Search contractor'aja' +Timestamp: 2025-10-31 11:25:19 | User: Unknown | Action: Search contractor | Details: User admin Search contractor'ajay' +Timestamp: 2025-10-31 11:25:21 | User: Unknown | Action: Search contractor | Details: User admin Search contractor'ajay' +Timestamp: 2025-10-31 11:26:31 | User: Unknown | Action: Upload Excel File | Details: User adminUpload Excel File'' +Timestamp: 2025-10-31 11:26:52 | User: Unknown | Action: Check State | Details: User admin Checked state 'U' +Timestamp: 2025-10-31 11:26:54 | User: Unknown | Action: Check State | Details: User admin Checked state 'Uttar Pradesh' +Timestamp: 2025-10-31 11:26:55 | User: Unknown | Action: Add State | Details: User admin added state 'Uttar Pradesh' +Timestamp: 2025-10-31 11:27:04 | User: Unknown | Action: Check District | Details: User admin Checked District 'Shamli' +Timestamp: 2025-10-31 11:27:04 | User: Unknown | Action: Check District | Details: User admin Checked District 'Shamli' +Timestamp: 2025-10-31 11:27:05 | User: Unknown | Action: Add District | Details: User admin Added District 'Shamli' +Timestamp: 2025-10-31 11:27:12 | User: Unknown | Action: Get District | Details: User admin Get District '5' +Timestamp: 2025-10-31 11:27:15 | User: Unknown | Action: Check Block | Details: User admin Checked block 'Shamli' +Timestamp: 2025-10-31 11:27:15 | User: Unknown | Action: Check Block | Details: User admin Checked block 'Shamli' +Timestamp: 2025-10-31 11:27:16 | User: Unknown | Action: Add Block | Details: User admin Added block 'Shamli' +Timestamp: 2025-10-31 11:27:37 | User: Unknown | Action: Upload Excel File | Details: User adminUpload Excel File'' +Timestamp: 2025-10-31 11:27:41 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 11:27:41 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 11:27:41 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 11:27:41 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 12:00:33 | User: Unknown | Action: Upload Excel File | Details: User adminUpload Excel File'' +Timestamp: 2025-10-31 12:00:38 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 12:00:38 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 12:00:38 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 12:00:38 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 12:00:38 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 12:00:38 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 12:00:38 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 12:00:54 | User: Unknown | Action: Upload Excel File | Details: User adminUpload Excel File'' +Timestamp: 2025-10-31 12:00:56 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 12:05:17 | User: Unknown | Action: Search contractor | Details: User admin Search contractor'a' +Timestamp: 2025-10-31 12:05:17 | User: Unknown | Action: Search contractor | Details: User admin Search contractor'aa' +Timestamp: 2025-10-31 12:05:17 | User: Unknown | Action: Search contractor | Details: User admin Search contractor'aar' +Timestamp: 2025-10-31 12:05:21 | User: Unknown | Action: Search contractor | Details: User admin Search contractor'aarh' +Timestamp: 2025-10-31 12:05:23 | User: Unknown | Action: Search contractor | Details: User admin Search contractor'aarh' +Timestamp: 2025-10-31 13:35:19 | User: Unknown | Action: Upload Excel File | Details: User adminUpload Excel File'' +Timestamp: 2025-10-31 13:35:23 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 13:35:23 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 13:35:23 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 13:35:23 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 13:35:23 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 13:35:23 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 13:35:23 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 13:37:19 | User: Unknown | Action: Upload Excel File | Details: User adminUpload Excel File'' +Timestamp: 2025-10-31 13:37:25 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 13:37:25 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 13:37:25 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 13:37:25 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 13:37:25 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 13:37:25 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 13:37:25 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:52:13 | User: Unknown | Action: Upload Excel File | Details: User adminUpload Excel File'' +Timestamp: 2025-10-31 14:52:35 | User: Unknown | Action: Upload Excel File | Details: User adminUpload Excel File'' +Timestamp: 2025-10-31 14:52:46 | User: Unknown | Action: Check State | Details: User admin Checked state 'm' +Timestamp: 2025-10-31 14:52:48 | User: Unknown | Action: Check State | Details: User admin Checked state 'Madhya Pradesh' +Timestamp: 2025-10-31 14:52:50 | User: Unknown | Action: Add State | Details: User admin added state 'Madhya Pradesh' +Timestamp: 2025-10-31 14:52:58 | User: Unknown | Action: Check District | Details: User admin Checked District 'Chhindawara' +Timestamp: 2025-10-31 14:52:58 | User: Unknown | Action: Check District | Details: User admin Checked District 'Chhindawara' +Timestamp: 2025-10-31 14:52:58 | User: Unknown | Action: Add District | Details: User admin Added District 'Chhindawara' +Timestamp: 2025-10-31 14:53:06 | User: Unknown | Action: Get District | Details: User admin Get District '7' +Timestamp: 2025-10-31 14:53:09 | User: Unknown | Action: Check Block | Details: User admin Checked block 'Chhindawara' +Timestamp: 2025-10-31 14:53:09 | User: Unknown | Action: Check Block | Details: User admin Checked block 'Chhindawara' +Timestamp: 2025-10-31 14:53:09 | User: Unknown | Action: Add Block | Details: User admin Added block 'Chhindawara' +Timestamp: 2025-10-31 14:53:25 | User: Unknown | Action: Upload Excel File | Details: User adminUpload Excel File'' +Timestamp: 2025-10-31 14:53:38 | User: Unknown | Action: Check District | Details: User admin Checked District 'Chhindawara' +Timestamp: 2025-10-31 14:53:38 | User: Unknown | Action: Check District | Details: User admin Checked District 'Chhindawara' +Timestamp: 2025-10-31 14:53:43 | User: Unknown | Action: Check District | Details: User admin Checked District 'Chindawara' +Timestamp: 2025-10-31 14:53:44 | User: Unknown | Action: Check District | Details: User admin Checked District 'Chindawara' +Timestamp: 2025-10-31 14:53:45 | User: Unknown | Action: Add District | Details: User admin Added District 'Chindawara' +Timestamp: 2025-10-31 14:53:51 | User: Unknown | Action: Get District | Details: User admin Get District '7' +Timestamp: 2025-10-31 14:53:54 | User: Unknown | Action: Check Block | Details: User admin Checked block 'Chhindawara' +Timestamp: 2025-10-31 14:53:54 | User: Unknown | Action: Check Block | Details: User admin Checked block 'Chhindawara' +Timestamp: 2025-10-31 14:53:56 | User: Unknown | Action: Check Block | Details: User admin Checked block 'Chindawara' +Timestamp: 2025-10-31 14:53:56 | User: Unknown | Action: Check Block | Details: User admin Checked block 'Chindawara' +Timestamp: 2025-10-31 14:53:57 | User: Unknown | Action: Add Block | Details: User admin Added block 'Chindawara' +Timestamp: 2025-10-31 14:54:07 | User: Unknown | Action: Upload Excel File | Details: User adminUpload Excel File'' +Timestamp: 2025-10-31 14:54:11 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:54:11 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:54:11 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:54:11 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:54:11 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:54:18 | User: Unknown | Action: Search contractor | Details: User admin Search contractor'b' +Timestamp: 2025-10-31 14:54:18 | User: Unknown | Action: Search contractor | Details: User admin Search contractor'bg' +Timestamp: 2025-10-31 14:54:20 | User: Unknown | Action: Search contractor | Details: User admin Search contractor'bg' +Timestamp: 2025-10-31 14:57:08 | User: Unknown | Action: Upload Excel File | Details: User adminUpload Excel File'' +Timestamp: 2025-10-31 14:57:25 | User: Unknown | Action: Upload Excel File | Details: User adminUpload Excel File'' +Timestamp: 2025-10-31 14:57:35 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:35 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:35 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:35 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:35 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:35 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:35 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:35 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:35 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:35 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:35 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:35 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:35 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:35 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:35 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:35 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:35 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:35 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:35 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:35 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:35 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:35 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:35 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:35 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:35 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:35 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:35 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:35 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:35 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:35 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:35 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:35 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:35 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:35 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:35 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:35 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:35 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:35 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:35 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:35 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:35 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:35 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:35 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:35 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:35 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:35 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:35 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:35 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:35 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:35 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:35 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:35 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:35 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:35 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:35 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:35 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:35 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:35 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:35 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:35 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:35 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:35 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:35 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:36 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:36 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:36 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:36 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:36 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:36 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:36 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:36 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:36 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:36 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:36 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:36 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:36 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:36 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:36 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:36 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:36 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:36 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:36 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:36 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:36 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:36 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:36 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:36 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:36 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:36 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:36 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:36 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:36 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:36 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:36 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:36 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:36 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:36 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:36 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:36 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:36 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:36 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:36 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:36 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:36 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:36 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:36 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:36 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:36 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:36 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:36 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:36 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:36 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:36 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:36 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:36 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:36 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:36 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:36 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:36 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:36 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:36 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:36 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:36 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:36 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:36 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:36 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:36 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:36 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:36 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:36 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:36 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:36 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:36 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:36 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:36 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:36 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:36 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:36 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:36 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:36 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:36 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:36 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:36 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:36 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:36 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:36 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:36 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:36 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:36 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:36 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:36 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:36 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:36 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:36 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:36 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:36 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:36 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:36 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:36 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:36 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:36 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:36 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:36 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:36 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:36 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:36 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:36 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:36 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:36 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:36 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:36 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:36 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:36 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:36 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:36 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:36 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:36 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:36 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:36 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:36 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:36 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:36 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:36 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:36 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:36 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:36 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:36 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:36 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:36 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:36 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:36 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:36 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:36 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:36 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:36 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:36 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:36 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:36 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:36 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:36 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:36 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:36 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:36 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:36 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:36 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:36 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:36 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:36 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:36 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:36 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:36 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:36 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:36 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:36 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:36 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:36 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:36 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:36 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:36 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:36 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:36 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:36 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:36 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:36 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:36 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:36 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:36 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:36 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:36 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:36 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:36 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:36 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:36 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:36 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:36 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:36 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:36 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:36 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:36 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:36 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:36 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:36 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:36 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:36 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:36 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:36 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:36 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:36 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:36 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:36 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:36 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:37 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:37 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:37 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:37 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:37 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:37 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:37 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:37 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:37 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:37 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:37 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:37 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:37 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:37 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:37 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:37 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:37 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:37 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:37 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:37 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:37 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:37 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:37 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:37 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:37 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:37 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:37 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:37 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:37 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:37 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:37 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:37 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:37 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:37 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:37 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:37 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:37 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:37 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:37 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:37 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:37 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:37 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:37 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:37 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:37 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:37 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:37 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:37 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:37 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:37 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:37 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:37 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:37 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:37 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:37 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:37 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:37 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:37 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:37 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:37 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:37 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:37 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:37 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:37 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:37 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:37 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:37 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:37 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:37 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:37 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:37 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:37 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:37 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:37 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:37 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:37 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:37 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:37 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:37 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:37 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:37 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:37 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:37 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:37 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:37 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:37 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:37 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:37 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:37 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:37 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:37 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:37 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:37 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:37 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:37 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:37 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:37 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:37 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:37 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:37 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:37 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:37 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:37 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:37 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:37 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:37 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:37 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:37 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:37 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:37 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:37 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:37 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:37 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:37 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:37 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:37 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:37 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:37 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:37 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:37 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:37 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:37 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:37 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:37 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:37 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:37 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:37 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:37 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:37 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:37 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:37 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:37 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:37 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:37 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:37 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:37 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:37 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:37 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:37 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:37 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:37 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:37 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:37 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:37 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:37 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:37 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:37 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:37 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:37 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:37 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:37 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:37 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:37 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:37 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:37 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:37 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:37 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:37 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 14:57:52 | User: Unknown | Action: Search contractor | Details: User admin Search contractor'j' +Timestamp: 2025-10-31 14:57:52 | User: Unknown | Action: Search contractor | Details: User admin Search contractor'ja' +Timestamp: 2025-10-31 14:57:54 | User: Unknown | Action: Search contractor | Details: User admin Search contractor'ja' +Timestamp: 2025-10-31 16:17:29 | User: Unknown | Action: Upload Excel File | Details: User adminUpload Excel File'' +Timestamp: 2025-10-31 16:17:32 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 16:17:32 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 16:17:32 | User: Unknown | Action: Data saved | Details: User admin Data saved'None' +Timestamp: 2025-10-31 16:17:41 | User: Unknown | Action: Search contractor | Details: User admin Search contractor'a' +Timestamp: 2025-10-31 16:17:41 | User: Unknown | Action: Search contractor | Details: User admin Search contractor'aj' +Timestamp: 2025-10-31 16:17:44 | User: Unknown | Action: Search contractor | Details: User admin Search contractor'aj' +Timestamp: 2025-11-03 11:03:32 | User: admin | Action: Logout | Details: User admin logged out +Timestamp: 2025-11-03 11:03:39 | User: admin | Action: Login | Details: Static admin logged in: admin diff --git a/config.py b/config.py index 969c7a8..73e490f 100644 --- a/config.py +++ b/config.py @@ -5,7 +5,7 @@ import os # Get MySQL credentials from environment variables MYSQL_HOST = os.getenv("MYSQL_HOST", "127.0.0.1") MYSQL_USER = os.getenv("MYSQL_USER", "root") -MYSQL_PASSWORD = os.getenv("MYSQL_PASSWORD", "admin") +MYSQL_PASSWORD = os.getenv("MYSQL_PASSWORD", "tiger") MYSQL_DB = os.getenv("MYSQL_DB", "test") # Connect to MySQL diff --git a/main.py b/main.py index cf8415c..19be04e 100644 --- a/main.py +++ b/main.py @@ -20,17 +20,10 @@ from flask import Flask, request, render_template from ldap3 import Server, Connection, ALL, SUBTREE -# audit_logger = logging.getLogger("audit") -# audit_logger.setLevel(logging.INFO) -# file_handler = RotatingFileHandler("/tmp/audit.log", maxBytes=1000000, backupCount=5) -# formatter = logging.Formatter('%(asctime)s | %(message)s') -# file_handler.setFormatter(formatter) - -# audit_logger.addHandler(file_handler) from flask import request, session - +0 def log_action(action, details=""): """Log user actions with timestamp, user, action, and details.""" log_file = os.path.join(current_app.root_path, 'activity.log') @@ -668,12 +661,7 @@ def add_block(): # Fetch all blocks to display try: - # cursor.execute( - # """SELECT b.Block_Id, b.Block_Name, d.District_Name - # FROM blocks b - # JOIN districts d ON b.District_id = d.District_id""" - # ) - # block_data = cursor.fetchall() + cursor.callproc("GetAllBlocks") for blocks in cursor.stored_results(): block_data = blocks.fetchall() @@ -699,8 +687,7 @@ def check_block(): if not re.match(str_pattern_reg, block_name): return json_response(ResponseHandler.invalid_name("block"), 400) - # cursor.execute("SELECT * FROM blocks WHERE Block_Name = %s AND District_id = %s", (block_name, district_id)) - # existing_block = cursor.fetchone() + cursor.callproc("GetBlockByNameAndDistrict", (block_name, district_id)) for rs in cursor.stored_results(): existing_block = rs.fetchone() @@ -711,60 +698,7 @@ def check_block(): return json_response(ResponseHandler.is_available("block"), 200) -# update block by id -# @app.route('/edit_block/', methods=['GET', 'POST']) -# def edit_block(block_id): -# connection = config.get_db_connection() -# block_data, states, districts = [], [], [] -# -# if connection: -# cursor = connection.cursor() -# try: -# # cursor.execute("SELECT State_ID, State_Name FROM states") -# # states = cursor.fetchall() -# cursor.callproc("GetAllStates") -# for res in cursor.stored_results(): -# states = res.fetchall() -# -# # cursor.execute("SELECT Block_Name, District_id FROM blocks WHERE Block_Id = %s", (block_id,)) -# # block_data = cursor.fetchone() -# cursor.callproc("GetBlockById",(block_id,)) -# for block in cursor.stored_results(): -# block_data = block.fetchone() -# -# except mysql.connector.Error as e: -# print(f"Error fetching block data: {e}") -# return json_response(ResponseHandler.fetch_failure("block data"), 500) -# -# if request.method == 'POST': -# block_name = request.form['block_Name'] -# district_id = request.form['district_Id'] -# -# try: -# # cursor.execute("UPDATE blocks SET Block_Name = %s, District_id = %s WHERE Block_Id = %s", -# # (block_name, district_id, block_id)) -# -# cursor.callproc("UpdateBlock",(block_id,block_name, district_id)) -# connection.commit() -# except mysql.connector.Error as e: -# print(f"Error updating block: {e}") -# return json_response(ResponseHandler.update_failure("block"), 500) -# -# return redirect('/add_block') -# -# try: -# # cursor.execute("SELECT District_id, District_Name FROM districts") -# # districts = cursor.fetchall() -# -# cursor.callproc("GetAllDistricts") -# for dis in cursor.stored_results(): -# districts = dis.fetchall() -# -# except mysql.connector.Error as e: -# print(f"Error fetching districts: {e}") -# return json_response(ResponseHandler.fetch_failure("districts"), 500) -# -# return render_template('edit_block.html', block_data=block_data, states=states, districts=districts) + @app.route('/edit_block/', methods=['GET', 'POST']) @login_required @@ -778,8 +712,7 @@ def edit_block(block_id): cursor = connection.cursor() # Retrieve all states try: - # cursor.execute("SELECT State_ID, State_Name FROM states") - # states = cursor.fetchall() + cursor.callproc("GetAllStates") for rs in cursor.stored_results(): states = rs.fetchall() @@ -789,8 +722,7 @@ def edit_block(block_id): # Retrieve block data try: - # cursor.execute("SELECT Block_Name, District_id FROM blocks WHERE Block_Id = %s", (block_id,)) - # block_data = cursor.fetchone() + cursor.callproc("GetBlockDataByID", (block_id,)) for rs in cursor.stored_results(): block_data = rs.fetchone() @@ -804,8 +736,7 @@ def edit_block(block_id): block_name = request.form['block_Name'] district_id = request.form['district_Id'] try: - # cursor.execute("UPDATE blocks SET Block_Name = %s, District_id = %s WHERE Block_Id = %s", - # (block_name, district_id, block_id)) + cursor.callproc("UpdateBlockById", (block_name, district_id, block_id,)) connection.commit() flash("Block updated successfully!", "success") @@ -816,8 +747,7 @@ def edit_block(block_id): # Retrieve districts for the dropdown try: - # cursor.execute("SELECT District_id, District_Name FROM districts") - # districts = cursor.fetchall() + cursor.callproc("GetAllDistrictsData") for rs in cursor.stored_results(): districts = rs.fetchall() @@ -827,11 +757,6 @@ def edit_block(block_id): return render_template('edit_block.html', block_data=block_data, states=states, districts=districts) - - - - - # delete block by id @app.route('/delete_block/', methods=['GET', 'POST']) @login_required @@ -865,8 +790,7 @@ def get_districts(state_id): if connection: cursor = connection.cursor() try: - # cursor.execute("SELECT District_id, District_Name FROM districts WHERE State_Id = %s", (state_id,)) - # districts = cursor.fetchall() + cursor.callproc("GetDistrictsByStateId", (state_id,)) for dis in cursor.stored_results(): @@ -897,21 +821,13 @@ def add_village(): villages = [] try: - # Fetch all states - # cursor.execute("SELECT State_ID, State_Name FROM states") - # states = cursor.fetchall() + cursor.callproc("GetAllStates") for res in cursor.stored_results(): states = res.fetchall() - # Fetch all villages with their block names - # cursor.execute(""" - # SELECT v.Village_Id, v.Village_Name, b.Block_Name - # FROM villages v - # JOIN blocks b ON v.Block_Id = b.Block_Id - # """) - # villages = cursor.fetchall() + cursor.callproc("GetAllVillages") for result in cursor.stored_results(): villages = result.fetchall() @@ -926,9 +842,7 @@ def add_village(): if not re.match(str_pattern_reg, village_name): return json_response(ResponseHandler.invalid_name("village"), 400) - # Check if the village already exists in the block - # cursor.execute("SELECT * FROM villages WHERE Village_Name = %s AND Block_Id = %s", (village_name, block_id)) - # existing_village = cursor.fetchone() + cursor.callproc("GetVillageByNameAndBlock", (village_name, block_id,)) for rs in cursor.stored_results(): existing_village = rs.fetchone() @@ -960,8 +874,7 @@ def get_blocks(district_id): blocks = [] try: - # cursor.execute("SELECT Block_Id, Block_Name FROM blocks WHERE District_id = %s", (district_id,)) - # blocks = cursor.fetchall() + cursor.callproc("GetBlocksByDistrict", (district_id,)) for rs in cursor.stored_results(): blocks = rs.fetchall() @@ -1008,55 +921,7 @@ def check_village(): return json_response(ResponseHandler.is_available("village"), 200) -# update village -# @app.route('/edit_village/', methods=['GET', 'POST']) -# def edit_village(village_id): -# connection = config.get_db_connection() -# village_data = None -# blocks = [] -# -# try: -# cursor = connection.cursor() -# # Fetch village details -# # cursor.execute("SELECT Village_Name, Block_Id FROM villages WHERE Village_Id = %s", (village_id,)) -# # village_data = cursor.fetchone() -# cursor.callproc("GetVillageById", (village_id,)) -# for result in cursor.stored_results(): -# village_data = result.fetchone() -# -# # Fetch all blocks for dropdown -# # cursor.execute("SELECT Block_Id, Block_Name FROM blocks") -# # blocks = cursor.fetchall() -# -# cursor.callproc("GetAllBlocks") -# for result in cursor.stored_results(): -# blocks = result.fetchall() -# -# if request.method == 'POST': -# village_name = request.form['Village_Name'] -# block_id = request.form['block_Id'] -# -# if not re.match(str_pattern_reg, village_name): -# return json_response(ResponseHandler.invalid_name("village"), 400) -# -# # cursor.execute("UPDATE villages SET Village_Name = %s, Block_Id = %s WHERE Village_Id = %s", -# # (village_name, block_id, village_id)) -# -# cursor.callproc("UpdateVillage", (village_id, village_name, block_id,)) -# -# connection.commit() -# return json_response(ResponseHandler.update_success("village"), 200) -# -# except mysql.connector.Error as e: -# print(f"Error: {e}") -# return json_response(ResponseHandler.update_failure("village"), 500) -# finally: -# if cursor: -# cursor.close() -# if connection: -# connection.close() -# -# return render_template('edit_village.html', village_data=village_data, blocks=blocks) + @app.route('/edit_village/', methods=['GET', 'POST']) @login_required @@ -1067,15 +932,11 @@ def edit_village(village_id): try: cursor = connection.cursor() - # # Fetch village details - # cursor.execute("SELECT Village_Name, Block_Id FROM villages WHERE Village_Id = %s", (village_id,)) - # village_data = cursor.fetchone() + cursor.callproc("GetVillageDetailsById", (village_id,)) for rs in cursor.stored_results(): village_data = rs.fetchone() - # Fetch all blocks for dropdown - # cursor.execute("SELECT Block_Id, Block_Name FROM blocks") - # blocks = cursor.fetchall() + cursor.callproc('GetAllBlocks') for result in cursor.stored_results(): blocks = result.fetchall() @@ -1151,9 +1012,7 @@ def add_invoice(): print("village name", village_name) - # Query the database to get the corresponding Village_Id based on the village name - # cursor.execute("SELECT Village_Id FROM villages WHERE Village_Name = %s", (village_name,)) - # village_result = cursor.fetchone() + cursor.callproc("GetVillageIdByName", (village_name,)) for rs in cursor.stored_results(): village_result = rs.fetchone() @@ -1192,21 +1051,7 @@ def add_invoice(): final_amount = request.form.get('final_amount') final_amount=float(final_amount) if final_amount else 0.0 - # insert_invoice_query = ''' - # INSERT INTO invoice ( - # PMC_No, Village_Id, Work_Type, Invoice_Details, Invoice_Date, Invoice_No, - # Basic_Amount, Debit_Amount, After_Debit_Amount, Amount, GST_Amount, TDS_Amount, - # SD_Amount, On_Commission, Hydro_Testing, GST_SD_Amount, Final_Amount - # ) VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s) - # ''' - # invoice_values = ( - # pmc_no, village_id, work_type, invoice_details, invoice_date, invoice_no, - # basic_amount, debit_amount, after_debit_amount, amount, gst_amount, tds_amount, - # sd_amount, on_commission, hydro_testing, gst_sd_amount, final_amount - # ) - # cursor.execute(insert_invoice_query, invoice_values) - # connection.commit() - # invoice_id = cursor.lastrowid + cursor.callproc('InsertInvoice', [ pmc_no, village_id, work_type, invoice_details, invoice_date, invoice_no, basic_amount, debit_amount, after_debit_amount, amount, gst_amount, tds_amount, @@ -1218,14 +1063,7 @@ def add_invoice(): print("This is the invocie id from the invoice table ", invoice_id) - # Insert into assign_subcontractors table - # subcontractor_id = request.form.get('subcontractor_id') - # insert_assign_query = ''' - # INSERT INTO assign_subcontractors (PMC_no, Contractor_Id, Village_Id) - # VALUES (%s, %s, %s) - # ''' - # cursor.execute(insert_assign_query, (pmc_no, subcontractor_id, village_id)) - # connection.commit() + subcontractor_id = request.form.get('subcontractor_id') cursor.callproc('AssignSubcontractor', [pmc_no, subcontractor_id, village_id]) connection.commit() @@ -1245,14 +1083,7 @@ def add_invoice(): if not hold_type_result: return jsonify({"status": "error", "message": f"Invalid Hold Type: {hold_type}"}), 400 hold_type_id = hold_type_result['hold_type_id'] - # insert_hold_query = ''' - # INSERT INTO invoice_subcontractor_hold_join (Contractor_Id, Invoice_Id, hold_type_id, hold_amount) - # VALUES (%s, %s, %s, %s) - # ''' - # cursor.execute(insert_hold_query, (subcontractor_id, invoice_id, hold_type_id, hold_amount)) - # hold_count += 1 - - # connection.commit() + cursor.callproc('InsertInvoiceSubcontractorHold', [ subcontractor_id, invoice_id, hold_type_id, hold_amount ]) @@ -1273,8 +1104,7 @@ def add_invoice(): # GET request: fetch and display all invoices (all fields) along with the form try: cursor = connection.cursor(dictionary=True) - # cursor.execute("SELECT * FROM view_invoice_details") - # invoices = cursor.fetchall() + cursor.callproc('GetAllInvoiceDetails') for result in cursor.stored_results(): invoices = result.fetchall() @@ -1305,11 +1135,7 @@ def search_subcontractor(): sub_query = request.form.get("query") try: cursor = connection.cursor(dictionary=True) - # cursor.execute( - # "SELECT Contractor_Id, Contractor_Name FROM subcontractors WHERE Contractor_Name LIKE %s", - # (f"%{sub_query}%",) - # ) - # results = cursor.fetchall() + cursor.callproc('SearchContractorsByName', [sub_query]) for result in cursor.stored_results(): results = result.fetchall() @@ -1340,8 +1166,7 @@ def get_hold_types(): connection = config.get_db_connection() try: cursor = connection.cursor(dictionary=True) - # cursor.execute("SELECT hold_type_id, hold_type FROM hold_types") - # hold_types = cursor.fetchall() + cursor.callproc("GetAllHoldTypes") for hold in cursor.stored_results(): @@ -1374,8 +1199,7 @@ def edit_invoice(invoice_id): subcontractor_id = int(subcontractor_id) if subcontractor_id else None village_name = request.form.get('village') - # cursor.execute("SELECT Village_Id FROM villages WHERE Village_Name = %s", (village_name,)) - # village_result = cursor.fetchone() + cursor.callproc("GetVillageIdByName", (village_name,)) for rs in cursor.stored_results(): village_result = rs.fetchone() @@ -1405,21 +1229,7 @@ def edit_invoice(invoice_id): } numeric_fields = {k: float(v) if v else 0 for k, v in numeric_fields.items()} - # # Update invoice - # update_invoice_query = ''' - # UPDATE invoice - # SET PMC_No=%s, Village_Id=%s, Work_Type=%s, Invoice_Details=%s, Invoice_Date=%s, - # Invoice_No=%s, Basic_Amount=%s, Debit_Amount=%s, After_Debit_Amount=%s, - # Amount=%s, GST_Amount=%s, TDS_Amount=%s, SD_Amount=%s, On_Commission=%s, - # Hydro_Testing=%s, GST_SD_Amount=%s, Final_Amount=%s - # WHERE Invoice_Id=%s - # ''' - # invoice_values = ( - # pmc_no, village_id, work_type, invoice_details, invoice_date, invoice_no, - # *numeric_fields.values(), invoice_id - # ) - # cursor.execute(update_invoice_query, invoice_values) - # connection.commit() + cursor.callproc('UpdateInvoice', [ pmc_no, village_id, work_type, invoice_details, invoice_date, invoice_no, *numeric_fields.values(), invoice_id @@ -1434,19 +1244,12 @@ def edit_invoice(invoice_id): if not hold_type: continue # skip empty hold types - # Get or insert hold type - # cursor.execute("SELECT hold_type_id FROM hold_types WHERE hold_type = %s", (hold_type,)) - # hold_type_result = cursor.fetchone() + cursor.callproc('GetHoldTypeIdByName', [hold_type]) for result in cursor.stored_results(): hold_type_result = result.fetchone() - # if not hold_type_result: - # cursor.execute("INSERT INTO hold_types (hold_type) VALUES (%s)", (hold_type,)) - # connection.commit() - # hold_type_id = cursor.lastrowid - # else: - # hold_type_id = hold_type_result['hold_type_id'] + if not hold_type_result: # Call stored procedure to insert and return new ID @@ -1462,30 +1265,18 @@ def edit_invoice(invoice_id): hold_amount = float(hold_amount) if hold_amount else 0 - # Check if join exists - # cursor.execute(""" - # SELECT join_id FROM invoice_subcontractor_hold_join - # WHERE Invoice_Id = %s AND Contractor_Id = %s AND hold_type_id = %s - # """, (invoice_id, subcontractor_id, hold_type_id)) - # join_result = cursor.fetchone() + cursor.callproc('GetHoldJoinId', [invoice_id, subcontractor_id, hold_type_id]) for result in cursor.stored_results(): join_result = result.fetchone() if join_result: - # cursor.execute(""" - # UPDATE invoice_subcontractor_hold_join - # SET hold_amount = %s - # WHERE join_id = %s - # """, (hold_amount, join_result['join_id'])) + cursor.callproc('UpdateHoldAmountByJoinId', [hold_amount, join_result['join_id']]) connection.commit() else: - # cursor.execute(""" - # INSERT INTO invoice_subcontractor_hold_join (Contractor_Id, Invoice_Id, hold_type_id, hold_amount) - # VALUES (%s, %s, %s, %s) - # """, (subcontractor_id, invoice_id, hold_type_id, hold_amount)) + cursor.callproc('InsertInvoiceSubcontractorHold', [ subcontractor_id, invoice_id, hold_type_id, hold_amount ]) @@ -1504,16 +1295,7 @@ def edit_invoice(invoice_id): # ------------------ GET Request ------------------ try: - # Fetch invoice data - # cursor.execute( - # """SELECT i.*, s.Contractor_Name, v.Village_Name - # FROM invoice i - # LEFT JOIN assign_subcontractors a ON i.PMC_No = a.PMC_no AND i.Village_Id = a.Village_Id - # LEFT JOIN subcontractors s ON a.Contractor_Id = s.Contractor_Id - # LEFT JOIN villages v ON i.Village_Id = v.Village_Id - # WHERE i.Invoice_Id = %s""", (invoice_id,) - # ) - # invoice = cursor.fetchone() + cursor.callproc('GetInvoiceDetailsById', [invoice_id]) for result in cursor.stored_results(): invoice = result.fetchone() @@ -1525,15 +1307,7 @@ def edit_invoice(invoice_id): while cursor.nextset(): pass - # Fetch hold amounts - # cursor.execute( - # """SELECT h.hold_type, ihj.hold_amount - # FROM invoice_subcontractor_hold_join ihj - # JOIN hold_types h ON ihj.hold_type_id = h.hold_type_id - # WHERE ihj.Invoice_Id = %s""", (invoice_id,) - # ) - # hold_amounts = cursor.fetchall() - # invoice["hold_amounts"] = hold_amounts + cursor.callproc('GetHoldAmountsByInvoiceId', [invoice_id]) for result in cursor.stored_results(): hold_amounts = result.fetchall() @@ -1581,61 +1355,8 @@ def delete_invoice(invoice_id): connection.close() -# ---------- end Invoice controller ------------------ -# ----------------------------- Payment controller ------------------------------------------ -# this is Payment Page to add data -# @app.route('/add_payment', methods=['GET', 'POST']) -# def add_payment(): -# connection = config.get_db_connection() -# payments = [] # List to hold payment history -# -# if not connection: -# return json_response(ResponseHandler.fetch_failure("payment"), 500) -# -# try: -# cursor = connection.cursor() -# -# # Retrieve payment history -# # cursor.execute( -# # "SELECT Payment_Id, PMC_No, Invoice_No, Payment_Amount, TDS_Payment_Amount, Total_Amount, UTR FROM payment" -# # ) -# # payments = cursor.fetchall() -# cursor.callproc("GetAllPayments") -# for result in cursor.stored_results(): -# payments = result.fetchall() -# -# except mysql.connector.Error as e: -# print(f"Error fetching payment history: {e}") -# return json_response(ResponseHandler.fetch_failure("payment"), 500) -# finally: -# cursor.close() -# -# if request.method == 'POST': -# pmc_no = request.form['PMC_No'] -# invoice_no = request.form['invoice_No'] -# amount = request.form['Payment_Amount'] -# tds_amount = request.form['TDS_Payment_Amount'] -# total_amount = request.form['total_amount'] -# utr = request.form['utr'] -# -# try: -# cursor = connection.cursor() -# cursor.callproc('SavePayment', ( -# pmc_no, invoice_no, amount, tds_amount, total_amount, utr -# )) -# connection.commit() -# return redirect(url_for('add_payment')) # Redirect to add_payment page to reload the form -# except mysql.connector.Error as e: -# print(f"Error inserting payment: {e}") -# return json_response(ResponseHandler.add_failure("payment"), 500) -# finally: -# cursor.close() -# connection.close() -# -# return render_template('add_payment.html', payments=payments) - @app.route('/add_payment', methods=['GET', 'POST']) @login_required def add_payment(): @@ -1646,10 +1367,7 @@ def add_payment(): cursor = connection.cursor() try: - # cursor.execute( - # "SELECT Payment_Id, PMC_No, Invoice_No, Payment_Amount, TDS_Payment_Amount, Total_Amount, UTR FROM payment" - # ) - # payments = cursor.fetchall() + cursor.callproc('GetAllPayments') for result in cursor.stored_results(): payments = result.fetchall() @@ -1670,10 +1388,7 @@ def add_payment(): log_action("Add Payment", f"User {current_user.id} Add Payment'{ pmc_no}'") try: cursor = connection.cursor() - # cursor.execute('''INSERT INTO payment (PMC_No, invoice_no, Payment_Amount, TDS_Payment_Amount, Total_Amount, UTR) - # VALUES (%s, %s, %s, %s, %s, %s)''', - # (pmc_no, invoice_no, amount, tds_amount, total_amount, utr)) - # connection.commit() + cursor.callproc('InsertPayments', [ pmc_no, invoice_no, amount, tds_amount, total_amount, utr ]) @@ -1697,15 +1412,7 @@ def get_pmc_nos_by_subcontractor(subcontractorId): connection = config.get_db_connection() cur = connection.cursor() print(subcontractorId) - # query = """ - # SELECT DISTINCT i.PMC_No - # FROM invoice i - # JOIN assign_subcontractors a ON i.PMC_No = a.PMC_no - # JOIN subcontractors s ON a.Contractor_Id = s.Contractor_Id - # WHERE s.Contractor_Id=%s; - # """ - # cur.execute(query, (subcontractorId,)) - # results = cur.fetchall() + cur.callproc('GetDistinctPMCNoByContractorId', [subcontractorId]) for result in cur.stored_results(): results = result.fetchall() @@ -1729,12 +1436,7 @@ def edit_payment(payment_id): try: cursor = connection.cursor() - # Fetch the existing payment data for the given payment_id - # cursor.execute( - # "SELECT Payment_Id, PMC_No, Invoice_No, Payment_Amount, TDS_Payment_Amount, Total_Amount, UTR FROM payment WHERE Payment_Id = %s", - # (payment_id,) - # ) - # payment_data = cursor.fetchone() + cursor.callproc("GetPaymentById", (payment_id,)) for result in cursor.stored_results(): @@ -1750,9 +1452,7 @@ def edit_payment(payment_id): utr = request.form['utr'] log_action("Edit Payment", f"User {current_user.id} Edit Payment'{ pmc_no}'") try: - # cursor.execute('''UPDATE payment SET PMC_No=%s, Invoice_No=%s, Payment_Amount=%s, TDS_Payment_Amount=%s, - # Total_Amount=%s, UTR=%s WHERE Payment_Id=%s''', - # (pmc_no, invoice_no, amount, tds_amount, total_amount, utr, payment_id)) + cursor.callproc("UpdatePayment", (payment_id, pmc_no, invoice_no, amount, tds_amount, total_amount, utr,)) @@ -1782,8 +1482,7 @@ def delete_payment(payment_id): return json_response(ResponseHandler.fetch_failure("payment"), 500) try: cursor = connection.cursor() - # cursor.execute("DELETE FROM payment WHERE Payment_Id = %s", (payment_id,)) - + cursor.callproc("DeletePayment", (payment_id,)) log_action("Delete Payment", f"User {current_user.id} Delete Payment'{ payment_id}'") connection.commit() @@ -1820,9 +1519,7 @@ def add_gst_release(): cursor.execute("SELECT GST_Release_Id, PMC_No, Invoice_No, Basic_Amount, Final_Amount,Total_Amount,UTR FROM gst_release") gst_releases = cursor.fetchall() - # cursor.callproc("GetAllGSTReleases") - # for result in cursor.stored_results(): - # gst_releases = result.fetchall() + if request.method == 'POST': pmc_no = request.form['PMC_No'] @@ -1833,10 +1530,7 @@ def add_gst_release(): utr = request.form['utr'] contractor_id = request.form['subcontractor_id'] log_action("Add gst_release", f"User {current_user.id} Add gst_release'{ pmc_no}'") - # cursor.callproc('SaveGSTRelease', ( - # pmc_no, invoice_no, basic_amount, final_amount,total_amount, utr - # )) - # connection.commit() + cursor.execute(""" INSERT INTO gst_release (PMC_No, invoice_no, @@ -1891,9 +1585,6 @@ def edit_gst_release(gst_release_id): ) gst_release_data = cursor.fetchone() - # cursor.callproc("GetGSTReleaseById", (gst_release_id,)) - # for result in cursor.stored_results(): - # gst_release_data = result.fetchone() if request.method == 'POST': pmc_no = request.form['PMC_No'] @@ -1923,9 +1614,7 @@ def edit_gst_release(gst_release_id): gst_release_id )) - # cursor.callproc("UpdateGSTRelease", (gst_release_id, pmc_id, invoice_no, basic_amount, final_amount)) - # - # connection.commit() + return redirect(url_for('add_gst_release')) # Redirect to the page to view the updated list @@ -1953,7 +1642,7 @@ def delete_gst_release(gst_release_id): return json_response(ResponseHandler.fetch_failure("GST Release"), 500) try: cursor = connection.cursor() - # cursor.execute("DELETE FROM gst_release WHERE GST_Release_Id = %s", (gst_release_id,)) + cursor.callproc("DeleteGSTRelease", (gst_release_id,)) log_action("delete gst_release", f"User {current_user.id} delete gst_release'{ gst_release_id}'") connection.commit() @@ -1986,9 +1675,7 @@ def subcontract(): if request.method == 'GET': try: - # cursor.execute('SELECT * FROM subcontractors;') - # subcontractor = cursor.fetchall() # Fetch the current subcontractor list - # connection.commit() + cursor.callproc('GetAllSubcontractors') for result in cursor.stored_results(): subcontractor = result.fetchall() @@ -2024,9 +1711,7 @@ def subcontract(): )) connection.commit() - # Re-fetch subcontractors after inserting the new one - # cursor.execute('SELECT * FROM subcontractors') - # subcontractor = cursor.fetchall() + cursor.callproc('GetAllSubcontractors') for result in cursor.stored_results(): subcontractor = result.fetchall() @@ -2060,9 +1745,7 @@ def edit_subcontractor(id): cursor = connection.cursor() subcontractor = None - # Fetch existing subcontractor data by ID - # cursor.execute('SELECT * FROM subcontractors WHERE Contractor_Id = %s', (id,)) - # subcontractor = cursor.fetchone() + cursor.callproc("GetSubcontractorById", (id,)) for contractors in cursor.stored_results(): @@ -2086,17 +1769,7 @@ def edit_subcontractor(id): } log_action("Edit Subcontractor", f"User {current_user.id}Edit Subcontractor'{ id}'") try: - # cursor.execute("""UPDATE subcontractors SET - # Contractor_Name=%(Contractor_Name)s, - # Address=%(Address)s, - # Mobile_No=%(Mobile_No)s, - # PAN_No=%(PAN_No)s, - # Email=%(Email)s, - # Gender=%(Gender)s, - # GST_Registration_Type=%(GST_Registration_Type)s, - # GST_No=%(GST_No)s, - # Contractor_password=%(Contractor_password)s - # WHERE Contractor_Id=%(id)s""", updated_data) + cursor.callproc("UpdateSubcontractor", ( id, @@ -2128,34 +1801,7 @@ def edit_subcontractor(id): return render_template('edit_subcontractor.html', subcontractor=subcontractor) -# delete Sub-Contractor methods by id .. -# @app.route('/deleteSubContractor/', methods=['GET', 'POST']) -# def deleteSubContractor(id): -# connection = config.get_db_connection() -# if not connection: -# return json_response(ResponseHandler.fetch_failure("Subcontractor"), 500) - -# try: -# cursor = connection.cursor() - -# # cursor.execute("DELETE FROM subcontractors WHERE Contractor_Id = %s", (id,)) -# cursor.callproc("DeleteSubcontractor", (id,)) -# connection.commit() - -# # Check if any row was deleted (subcontractor found) -# if cursor.rowcount == 0: -# return json_response(ResponseHandler.fetch_failure("Subcontractor"), 404) - -# except Error as e: -# print(f"Error deleting subcontractor: {e}") -# return json_response(ResponseHandler.delete_failure("Subcontractor"), 500) - -# finally: -# cursor.close() -# connection.close() - -# return redirect(url_for('subcontract')) @app.route('/deleteSubContractor/', methods=['GET', 'POST']) @login_required def deleteSubContractor(id): @@ -2218,183 +1864,7 @@ def upload(): return render_template('uploadExcelFile.html') -# Show excel data in tables6 -# @app.route('/show_table/') -# def show_table(filename): -# global data -# data = [] -# -# filepath = os.path.join(app.config['UPLOAD_FOLDER'], filename) -# wb = openpyxl.load_workbook(filepath, data_only=True) -# sheet = wb.active -# -# # Extract key file information from the first 4 rows -# file_info = { -# "Subcontractor": sheet.cell(row=1, column=2).value, -# "State": sheet.cell(row=2, column=2).value, -# "District": sheet.cell(row=3, column=2).value, -# "Block": sheet.cell(row=4, column=2).value, -# } -# -# errors = [] -# subcontractor_data = None -# state_data = None -# district_data = None -# block_data = None -# -# # Database connection -# connection = config.get_db_connection() -# if connection: -# try: -# cursor = connection.cursor(dictionary=True) -# -# # Validate State -# # cursor.execute("SELECT State_ID, State_Name FROM states WHERE State_Name = %s", (file_info['State'],)) -# # state_data = cursor.fetchone() -# cursor.callproc('GetStateByName', [file_info['State']]) -# for result in cursor.stored_results(): -# state_data = result.fetchone() -# -# if not state_data: -# errors.append(f"State '{file_info['State']}' is not valid. Please add it.") -# -# # Validate District -# if state_data: -# # cursor.execute( -# # "SELECT District_ID, District_Name FROM districts WHERE District_Name = %s AND State_ID = %s", -# # (file_info['District'], state_data['State_ID']) -# # ) -# # district_data = cursor.fetchone() -# cursor.callproc('GetDistrictByNameAndStates', [file_info['District'], state_data['State_ID']]) -# for result in cursor.stored_results(): -# district_data = result.fetchone() -# -# if not district_data: -# errors.append( -# f"District '{file_info['District']}' is not valid under state '{file_info['State']}'.") -# -# # Validate Block -# if district_data: -# # cursor.execute( -# # "SELECT Block_Id, Block_Name FROM blocks WHERE Block_Name = %s AND District_ID = %s", -# # (file_info['Block'], district_data['District_ID']) -# # ) -# # block_data = cursor.fetchone() -# cursor.callproc('GetBlockByNameAndDistricts', [file_info['Block'], district_data['District_ID']]) -# for result in cursor.stored_results(): -# block_data = result.fetchone() -# -# if not block_data: -# errors.append( -# f"Block '{file_info['Block']}' is not valid under district '{file_info['District']}'.") -# -# # old code -# # # Validate Subcontractor -# # cursor.execute("SELECT Contractor_Id, Contractor_Name FROM SubContractors WHERE Contractor_Name = %s", -# # (file_info['Subcontractor'],)) -# # subcontractor_data = cursor.fetchone() -# cursor.callproc('GetSubcontractorByName', [file_info['Subcontractor']]) -# for result in cursor.stored_results(): -# subcontractor_data = result.fetchone() -# -# if not subcontractor_data: -# # cursor.execute("INSERT INTO subcontractors (Contractor_Name) VALUES (%s)", -# # (file_info['Subcontractor'],)) -# # connection.commit() -# cursor.callproc('InsertSubcontractor', [file_info['Subcontractor']]) -# connection.commit() -# -# # cursor.execute("SELECT Contractor_Id, Contractor_Name FROM SubContractors WHERE Contractor_Name = %s", -# # (file_info['Subcontractor'],)) -# # subcontractor_data = cursor.fetchone() -# cursor.callproc('GetSubcontractorByName', [file_info['Subcontractor']]) -# for result in cursor.stored_results(): -# subcontractor_data = result.fetchone() -# -# # new code -# # cursor.callproc('ValidateAndInsertSubcontractor', (file_info['Subcontractor'], 0, '')) -# # -# # for con in cursor.stored_results(): -# # subcontractor_data = con.fetchone() -# # print("subcon:",subcontractor_data) -# # -# # print("subcontractor_data",subcontractor_data) -# -# # Get hold types data from database (for faster lookup) -# # cursor.execute("SELECT hold_type_id, hold_type FROM hold_types") -# # hold_types_data = cursor.fetchall() -# -# cursor.callproc("GetAllHoldTypes") -# for ht in cursor.stored_results(): -# hold_types_data = ht.fetchall() -# -# hold_types_lookup = {row['hold_type'].lower(): row['hold_type_id'] for row in hold_types_data if -# row['hold_type']} -# -# cursor.close() -# except mysql.connector.Error as e: -# print(f"Database error: {e}") -# return "Database operation failed", 500 -# finally: -# connection.close() -# -# # Extract dynamic variable names from row 5 and detect "hold" columns -# variables = {} -# hold_columns = [] -# hold_counter = 0 -# -# for j in range(1, sheet.max_column + 1): -# col_value = sheet.cell(row=5, column=j).value -# if col_value: -# variables[col_value] = j # Store column name with its position -# -# # Check if the column header contains the word 'hold' -# if 'hold' in str(col_value).lower(): -# hold_counter += 1 -# # Lookup hold type id from database -# hold_type_key = str(col_value).lower().strip() -# hold_type_id = hold_types_lookup.get(hold_type_key, None) -# hold_columns.append({ -# 'column_name': col_value, -# 'column_number': j, -# 'hold_type_id': hold_type_id -# }) -# -# # Extract data dynamically based on row numbers -# for i in range(6, sheet.max_row + 1): -# row_data = {} -# if sheet.cell(row=i, column=1).value: -# row_data["Row Number"] = i # Store row number -# for var_name, col_num in variables.items(): -# row_data[var_name] = sheet.cell(row=i, column=col_num).value -# # Check if at least 4 non-empty cells exist in the row -# if sum(1 for value in row_data.values() if value) >= 4: -# data.append(row_data) -# -# # For debugging or console output, you can print the hold columns info -# for hold in hold_columns: -# if hold['hold_type_id']: -# print( -# f" if Column: {hold['column_name']}, Column Number: {hold['column_number']}, Hold Type ID: {hold['hold_type_id']}") -# else: -# errors.append( -# f"Hold Type not added ! Column name '{hold['column_name']}'.") -# print( -# f" else Column: {hold['column_name']}, Column Number: {hold['column_number']}, Hold Type ID: {hold['hold_type_id']}") -# -# return render_template( -# 'show_excel_file.html', -# file_info=file_info, -# variables=variables, -# data=data, -# subcontractor_data=subcontractor_data, -# state_data=state_data, -# district_data=district_data, -# block_data=block_data, -# errors=errors, -# hold_columns=hold_columns, -# hold_counter=hold_counter -# ) + @app.route('/show_table/') def show_table(filename): @@ -2526,166 +1996,7 @@ def show_table(filename): hold_counter=hold_counter ) -# Show excel data in tables6 -# @app.route('/show_table/') -# def show_table(filename): -# global data -# data = [] -# -# filepath = os.path.join(app.config['UPLOAD_FOLDER'], filename) -# wb = openpyxl.load_workbook(filepath, data_only=True) -# sheet = wb.active -# -# # Extract key file information from the first 4 rows -# file_info = { -# "Subcontractor": sheet.cell(row=1, column=2).value, -# "State": sheet.cell(row=2, column=2).value, -# "District": sheet.cell(row=3, column=2).value, -# "Block": sheet.cell(row=4, column=2).value, -# } -# -# errors = [] -# subcontractor_data = None -# state_data = None -# district_data = None -# block_data = None -# -# # Database connection -# connection = config.get_db_connection() -# if connection: -# try: -# cursor = connection.cursor(dictionary=True) -# -# # Validate State -# cursor.execute("SELECT State_ID, State_Name FROM states WHERE State_Name = %s", (file_info['State'],)) -# state_data = cursor.fetchone() -# if not state_data: -# errors.append(f"State '{file_info['State']}' is not valid. Please add it.") -# -# # Validate District -# if state_data: -# cursor.execute( -# "SELECT District_ID, District_Name FROM districts WHERE District_Name = %s AND State_ID = %s", -# (file_info['District'], state_data['State_ID']) -# ) -# district_data = cursor.fetchone() -# if not district_data: -# errors.append( -# f"District '{file_info['District']}' is not valid under state '{file_info['State']}'.") -# -# # Validate Block -# if district_data: -# cursor.execute( -# "SELECT Block_Id, Block_Name FROM blocks WHERE Block_Name = %s AND District_ID = %s", -# (file_info['Block'], district_data['District_ID']) -# ) -# block_data = cursor.fetchone() -# if not block_data: -# errors.append( -# f"Block '{file_info['Block']}' is not valid under district '{file_info['District']}'.") -# -# -# # old code -# # # Validate Subcontractor -# cursor.execute("SELECT Contractor_Id, Contractor_Name FROM subcontractors WHERE Contractor_Name = %s", -# (file_info['Subcontractor'],)) -# subcontractor_data = cursor.fetchone() -# -# if not subcontractor_data: -# cursor.execute("INSERT INTO subcontractors (Contractor_Name) VALUES (%s)", -# (file_info['Subcontractor'],)) -# connection.commit() -# cursor.execute("SELECT Contractor_Id, Contractor_Name FROM subcontractors WHERE Contractor_Name = %s", -# (file_info['Subcontractor'],)) -# subcontractor_data = cursor.fetchone() -# -# # new code -# # cursor.callproc('ValidateAndInsertSubcontractor', (file_info['Subcontractor'], 0, '')) -# # -# # for con in cursor.stored_results(): -# # subcontractor_data = con.fetchone() -# # print("subcon:",subcontractor_data) -# # -# # print("subcontractor_data",subcontractor_data) -# -# # Get hold types data from database (for faster lookup) -# # cursor.execute("SELECT hold_type_id, hold_type FROM hold_types") -# # hold_types_data = cursor.fetchall() -# -# cursor.callproc("GetAllHoldTypes") -# for ht in cursor.stored_results(): -# hold_types_data = ht.fetchall() -# -# -# hold_types_lookup = {row['hold_type'].lower(): row['hold_type_id'] for row in hold_types_data if row['hold_type']} -# -# -# cursor.close() -# except mysql.connector.Error as e: -# print(f"Database error: {e}") -# -# # return "Database operation failed", 500 -# return f"{e}",500 -# finally: -# connection.close() -# -# # Extract dynamic variable names from row 5 and detect "hold" columns -# variables = {} -# hold_columns = [] -# hold_counter = 0 -# -# for j in range(1, sheet.max_column + 1): -# col_value = sheet.cell(row=5, column=j).value -# if col_value: -# variables[col_value] = j # Store column name with its position -# -# # Check if the column header contains the word 'hold' -# if 'hold' in str(col_value).lower(): -# hold_counter += 1 -# # Lookup hold type id from database -# hold_type_key = str(col_value).lower().strip() -# hold_type_id = hold_types_lookup.get(hold_type_key, None) -# hold_columns.append({ -# 'column_name': col_value, -# 'column_number': j, -# 'hold_type_id': hold_type_id -# }) -# -# # Extract data dynamically based on row numbers -# for i in range(6, sheet.max_row + 1): -# row_data = {} -# if sheet.cell(row=i, column=1).value: -# row_data["Row Number"] = i # Store row number -# for var_name, col_num in variables.items(): -# row_data[var_name] = sheet.cell(row=i, column=col_num).value -# # Check if at least 4 non-empty cells exist in the row -# if sum(1 for value in row_data.values() if value) >= 4: -# data.append(row_data) -# -# # For debugging or console output, you can print the hold columns info -# for hold in hold_columns: -# if hold['hold_type_id']: -# print( -# f" if Column: {hold['column_name']}, Column Number: {hold['column_number']}, Hold Type ID: {hold['hold_type_id']}") -# else: -# errors.append( -# f"Hold Type not added ! Column name '{hold['column_name']}'.") -# print( -# f" else Column: {hold['column_name']}, Column Number: {hold['column_number']}, Hold Type ID: {hold['hold_type_id']}") -# -# return render_template( -# 'show_excel_file.html', -# file_info=file_info, -# variables=variables, -# data=data, -# subcontractor_data=subcontractor_data, -# state_data=state_data, -# district_data=district_data, -# block_data=block_data, -# errors=errors, -# hold_columns=hold_columns, -# hold_counter=hold_counter -# ) + # save Excel data @app.route('/save_data', methods=['POST']) @@ -2700,13 +2011,13 @@ def save_data(): hold_columns = request.form.get("hold_columns") hold_counter = request.form.get("hold_counter") - # print("Info: ", subcontractor_id, state_id, district_id, block_id) + if not data: return jsonify({"error": "No data provided to save"}), 400 if data: - # print("Total number of entries in data:", len(data)) + connection = config.get_db_connection() cursor = connection.cursor() @@ -2778,8 +2089,7 @@ def save_data(): print("village_name ::", village_name, "|| work_type ::", work_type) if block_id and village_name: village_id = None - # cursor.execute("SELECT Village_Id FROM villages WHERE Block_Id = %s AND Village_Name = %s",(block_id, village_name)) - # result = cursor.fetchone() + cursor.callproc("GetVillageId", (block_id, village_name)) for result in cursor.stored_results(): result = result.fetchone() @@ -2789,8 +2099,7 @@ def save_data(): # cursor.execute("INSERT INTO villages (Village_Name, Block_Id) VALUES (%s, %s)", (village_name, block_id)) cursor.callproc("SaveVillage", (village_name, block_id)) - # cursor.execute("SELECT Village_Id FROM villages WHERE Block_Id = %s AND Village_Name = %s",(block_id, village_name)) - # result = cursor.fetchone() + cursor.callproc("GetVillageId", (block_id, village_name)) for result in cursor.stored_results(): result = result.fetchone() @@ -2801,16 +2110,7 @@ def save_data(): print("invoice :", PMC_No, village_id, work_type, Invoice_Details, Invoice_Date, Invoice_No, Basic_Amount, Debit_Amount, After_Debit_Amount, Amount, GST_Amount, TDS_Amount, SD_Amount, On_Commission, Hydro_Testing, GST_SD_Amount, Final_Amount) - # - # cursor.execute("SET @p_invoice_id = 0") - # cursor.callproc("SaveInvoice", ( - # PMC_No, village_id, work_type, Invoice_Details, Invoice_Date, Invoice_No, - # Basic_Amount, Debit_Amount, After_Debit_Amount, Amount, GST_Amount, TDS_Amount, - # SD_Amount, On_Commission, Hydro_Testing, GST_SD_Amount, Final_Amount, - # subcontractor_id, "@p_invoice_id" - # )) - # cursor.execute("SELECT @p_invoice_id") - # invoice_id = cursor.fetchone()[0] + args = ( PMC_No, village_id, work_type, Invoice_Details, Invoice_Date, Invoice_No, @@ -2822,8 +2122,7 @@ def save_data(): # invoice_id = result.fetchone()['invoice_id'] print("All invoice Details ",args) results = cursor.callproc('SaveInvoice', args) - # cursor.callproc("SaveInvoice",args) - # for re in cursor.stored_results(): + invoice_id = results[-1] print("invoice id from the excel ", invoice_id) @@ -2852,11 +2151,7 @@ def save_data(): "hold_amount": hold_amount } - # insert_hold_query = """INSERT INTO invoice_subcontractor_hold_join (Contractor_Id, Invoice_Id, hold_type_id, hold_amount) - # VALUES (%(Contractor_Id)s, %(Invoice_Id)s, %(hold_type_id)s, %(hold_amount)s); - # """ - # cursor.execute(insert_hold_query, hold_join_data) - # print(f"Inserted hold join data: {hold_join_data}") + cursor.callproc('InsertHoldJoinData', [ hold_join_data['Contractor_Id'], hold_join_data['Invoice_Id'], hold_join_data['hold_type_id'], hold_join_data['hold_amount'] @@ -2917,15 +2212,11 @@ def save_data(): """INSERT INTO gst_release (PMC_No, Invoice_No, Basic_Amount, Final_Amount,Total_Amount,UTR, Contractor_Id) VALUES (%s,%s, %s, %s, %s, %s, %s)""", (PMC_No, Invoice_No, Basic_Amount, Final_Amount, Total_Amount, UTR, subcontractor_id)) - # insert_payment = """INSERT INTO payment (PMC_No, Invoice_No, Payment_Amount, TDS_Payment_Amount, Total_Amount, UTR) VALUES (%s, %s, %s, %s, %s, %s)""" - # cursor.execute(insert_payment, - # (PMC_No, Invoice_No, Payment_Amount, TDS_Payment_Amount, Total_Amount, UTR)) + if PMC_No and Total_Amount and UTR: print("Payment :", PMC_No, Invoice_No, Payment_Amount, TDS_Payment_Amount, Total_Amount, UTR ) - # insert_payment = """INSERT INTO payment (PMC_No, Invoice_No, Payment_Amount, TDS_Payment_Amount, Total_Amount, UTR) VALUES (%s, %s, %s, %s, %s, %s)""" - # cursor.execute(insert_payment, - # (PMC_No, Invoice_No, Payment_Amount, TDS_Payment_Amount, Total_Amount, UTR)) + cursor.callproc("SavePayment", (PMC_No, Invoice_No, Payment_Amount, TDS_Payment_Amount, Total_Amount, UTR )) @@ -2995,21 +2286,7 @@ def search_contractor(): if not conditions: return jsonify({"error": "At least one field is required for search."}), 400 - # query = f""" - # SELECT DISTINCT s.Contractor_Id, s.Contractor_Name, i.PMC_No, st.State_Name, - # d.District_Name, b.Block_Name, v.Village_Name - # FROM subcontractors s - # INNER JOIN assign_subcontractors asg ON s.Contractor_Id = asg.Contractor_Id - # INNER JOIN villages v ON asg.Village_Id = v.Village_Id - # INNER JOIN invoice i ON i.Village_Id = asg.Village_Id AND i.PMC_No = asg.PMC_No - # LEFT JOIN blocks b ON v.Block_Id = b.Block_Id - # LEFT JOIN districts d ON b.District_id = d.District_id - # LEFT JOIN states st ON d.State_Id = st.State_Id - # WHERE {' AND '.join(conditions)} - # ORDER BY s.Contractor_Name ASC, i.PMC_No ASC - # """ - # cursor.execute(query, tuple(params)) - # data = cursor.fetchall() + cursor.callproc("search_contractor_info", [ subcontractor_name or None, pmc_no or None, @@ -3386,8 +2663,17 @@ def download_report(contractor_id): for ht_id in hold_type_map: row.append(invoice_holds.get(ht_id, "")) - # Payment values - payment = payments_map.get(key, [None])[0] + + + payment_list = payments_map.get(key, []) + + # Pop the first payment if available + payment = payment_list.pop(0) if payment_list else None + + # If the list becomes empty, remove the key + if not payment_list and key in payments_map: + del payments_map[key] + row += [ inv["Final_Amount"], payment["Payment_Amount"] if payment else "", @@ -3395,6 +2681,7 @@ def download_report(contractor_id): payment["Total_amount"] if payment else "", payment["utr"] if payment and payment.get("utr") else "" ] + sheet.append(row) # ---------------- Extra Payments for this PMC ---------------- @@ -3488,21 +2775,7 @@ def pmc_report(pmc_no): cursor = connection.cursor(dictionary=True, buffered=True) try: - # 1. Fetch PMC info using stored procedure - # cursor.execute(""" - # SELECT DISTINCT a.PMC_No, a.Village_Id, v.Village_Name, b.Block_Name, - # d.District_Name, s.State_Name, sc.Contractor_Id, sc.Contractor_Name, - # sc.Address, sc.Mobile_No, sc.PAN_No, sc.Email, sc.Gender, - # sc.GST_Registration_Type, sc.GST_No - # FROM assign_subcontractors a - # INNER JOIN villages v ON a.Village_Id = v.Village_Id - # INNER JOIN blocks b ON v.Block_Id = b.Block_Id - # INNER JOIN districts d ON b.District_id = d.District_id - # INNER JOIN states s ON d.State_Id = s.State_Id - # INNER JOIN subcontractors sc ON a.Contractor_Id = sc.Contractor_Id - # WHERE a.pmc_no = %s - # """, (pmc_no,)) - # pmc_info = cursor.fetchone() + cursor.callproc("GetContractorInfoByPmcNo", (pmc_no,)) pmc_info = next(cursor.stored_results()).fetchone() @@ -3510,16 +2783,7 @@ def pmc_report(pmc_no): if not pmc_info: return "No PMC found with this number", 404 - # 2. Fetch hold types using stored procedure - # cursor.execute(""" - # SELECT DISTINCT ht.hold_type_id, ht.hold_type - # FROM invoice_subcontractor_hold_join h - # JOIN hold_types ht ON h.hold_type_id = ht.hold_type_id - # JOIN invoice i ON h.Invoice_Id = i.Invoice_Id - # JOIN assign_subcontractors a ON i.PMC_No = a.PMC_No - # WHERE a.PMC_No = %s AND a.Contractor_Id = %s - # """, (pmc_no, pmc_info["Contractor_Id"])) - # hold_types = cursor.fetchall() + cursor.callproc("Get_pmc_hold_types", (pmc_no, pmc_info["Contractor_Id"])) hold_types = next(cursor.stored_results()).fetchall() hold_type_ids = [ht['hold_type_id'] for ht in hold_types] @@ -3578,13 +2842,7 @@ def pmc_report(pmc_no): ORDER BY invoice_no ASC """, (pmc_no,)) gst_rel = cursor.fetchall() - # gst_rel = cursor.fetchall() - # cursor.callproc('GetGSTReleaseByPMC', [pmc_no]) - # - # # Fetch results - # for result in cursor.stored_results(): - # gst_rel = result.fetchall() - + total_gst_basic = sum(row.get('basic_amount', 0) or 0 for row in gst_rel) total_gst_final = sum(row.get('final_amount', 0) or 0 for row in gst_rel) @@ -3657,883 +2915,7 @@ def pmc_report(pmc_no): ) -# # Download report by PMC No -# @app.route('/download_pmc_report/') -# def download_pmc_report(pmc_no): -# connection = config.get_db_connection() -# output_folder = "static/download" -# output_file = os.path.join(output_folder, f"PMC_Report_{pmc_no}.xlsx") -# if not os.path.exists(output_folder): -# os.makedirs(output_folder) - -# cursor = connection.cursor(dictionary=True) - -# try: -# # # Fetch Contractor Details using PMC No -# # cursor.execute(""" -# # SELECT DISTINCT s.Contractor_Id, s.Contractor_Name, st.State_Name, d.District_Name, b.Block_Name, -# # s.Mobile_No, s.GST_Registration_Type, s.GST_No, s.PAN_No, s.Email, s.Address -# # FROM subcontractors s -# # LEFT JOIN assign_subcontractors asg ON s.Contractor_Id = asg.Contractor_Id -# # LEFT JOIN villages v ON asg.Village_Id = v.Village_Id -# # LEFT JOIN blocks b ON v.Block_Id = b.Block_Id -# # LEFT JOIN districts d ON b.District_id = d.District_id -# # LEFT JOIN states st ON d.State_Id = st.State_Id -# # WHERE asg.PMC_No = %s -# # """, (pmc_no,)) -# # contractor_info = cursor.fetchone() -# cursor.callproc('GetContractorDetailsByPMC', [pmc_no]) - -# # Now fetch the result: -# for result in cursor.stored_results(): -# contractor_info = result.fetchone() - -# if not contractor_info: -# return "No contractor found for this PMC No", 404 - -# # # Fetch distinct hold types present for the contractor -# # cursor.execute(""" -# # SELECT DISTINCT ht.hold_type_id, ht.hold_type -# # FROM invoice_subcontractor_hold_join h -# # JOIN hold_types ht ON h.hold_type_id = ht.hold_type_id -# # WHERE h.Contractor_Id = %s -# # """, (contractor_info["Contractor_Id"],)) -# # hold_types = cursor.fetchall() -# cursor.callproc('GetHoldTypesByContractor', [contractor_info["Contractor_Id"]]) - -# 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} - -# # # # Fetch Invoices & GST Releases -# # cursor.execute(""" -# # SELECT DISTINCT i.Invoice_Id, i.PMC_No, v.Village_Name, i.Work_Type, i.Invoice_Details, -# # i.Invoice_Date, i.Invoice_No, i.Basic_Amount, i.Debit_Amount, -# # i.After_Debit_Amount, i.GST_Amount, i.Amount, i.TDS_Amount, i.SD_Amount, -# # i.On_Commission, i.Hydro_Testing, i.GST_SD_Amount, i.Final_Amount, -# # g.pmc_no AS gst_pmc_no, g.invoice_no AS gst_invoice_no, -# # g.basic_amount AS gst_basic_amount, g.final_amount AS gst_final_amount -# # FROM invoice i -# # LEFT JOIN assign_subcontractors asg ON i.PMC_No = asg.PMC_No -# # LEFT JOIN villages v ON i.Village_Id = v.Village_Id -# # LEFT JOIN gst_release g ON i.PMC_No = g.pmc_no AND i.Invoice_No = g.invoice_no -# # WHERE asg.PMC_No = %s -# # ORDER BY i.Invoice_Date, i.Invoice_No -# # """, (pmc_no,)) -# # invoices = cursor.fetchall() - -# cursor.callproc('GetInvoicesAndGstReleaseByPmcNo', [pmc_no]) - -# for result in cursor.stored_results(): -# invoices = result.fetchall() -# print("pmc_report invoice data:",invoices) - -# # cursor.callproc('GetInvoicesAndGSTReleasesByPMC', [pmc_no]) - -# # for result in cursor.stored_results(): -# # invoices = result.fetchall() - -# # # Fetch Hold Amounts separately -# # cursor.execute(""" -# # SELECT h.Invoice_Id, ht.hold_type_id, h.hold_amount -# # FROM invoice_subcontractor_hold_join h -# # JOIN hold_types ht ON h.hold_type_id = ht.hold_type_id -# # WHERE h.Contractor_Id = %s -# # """, (contractor_info["Contractor_Id"],)) -# # hold_amounts = cursor.fetchall() -# cursor.callproc('GetHoldAmountsByContractor', [contractor_info["Contractor_Id"]]) - -# for result in cursor.stored_results(): -# hold_amounts = result.fetchall() - -# # Create a mapping of invoice_id to hold amounts by type -# hold_data = {} -# for h in hold_amounts: -# hold_data.setdefault(h['Invoice_Id'], {})[h['hold_type_id']] = h['hold_amount'] - -# # # Fetch all Payments for the PMC number -# # cursor.execute(""" -# # SELECT pmc_no, invoice_no, Payment_Amount, TDS_Payment_Amount, Total_amount, UTR -# # FROM payment -# # WHERE pmc_no = %s -# # ORDER BY invoice_no -# # """, (pmc_no,)) -# # all_payments = cursor.fetchall() -# cursor.callproc('GetAllPaymentsByPMC', [pmc_no]) - -# for result in cursor.stored_results(): -# all_payments = result.fetchall() - -# # Organize payments by Invoice No (both regular and GST release notes) -# payments_map = {} -# extra_payments = [] -# for pay in all_payments: -# if pay['invoice_no']: -# key = pay['invoice_no'] -# if key not in payments_map: -# payments_map[key] = [] -# payments_map[key].append(pay) -# else: -# extra_payments.append(pay) - -# # Create Excel workbook -# workbook = openpyxl.Workbook() -# sheet = workbook.active -# sheet.title = "PMC Report" - -# # Write Contractor Details -# sheet.append(["", "", "Laxmi Civil Engineering Services PVT. LTD.", "", ""]) -# sheet.append( -# ["Contractor Name", contractor_info["Contractor_Name"], " ", "GST No", contractor_info["GST_No"], " ", -# "GST Type", contractor_info["GST_Registration_Type"]]) -# sheet.append(["State", contractor_info["State_Name"], " ", "PAN No", contractor_info["PAN_No"], " ", "Address", -# contractor_info["Address"]]) -# sheet.append(["District", contractor_info["District_Name"], " ", "Mobile No", contractor_info["Mobile_No"]]) -# sheet.append(["Block", contractor_info["Block_Name"], " ", "Email", contractor_info["Email"]]) -# sheet.append([]) - -# # Table Headers - include all hold types as separate columns -# base_headers = ["PMC No", "Village", "Work Type", "Invoice Details", "Invoice Date", "Invoice No", -# "Basic Amount", "Debit", "After Debit Amount", "GST (18%)", "Amount", "TDS (1%)", -# "SD (5%)", "On Commission", "Hydro Testing", "GST SD Amount"] - -# hold_headers = [ht['hold_type'] for ht in hold_types] - -# payment_headers = ["Final Amount", "Payment Amount", "TDS Payment", "Total Paid", "UTR"] - -# sheet.append(base_headers + hold_headers + payment_headers) - -# seen_invoices = set() -# seen_gst_notes = set() -# processed_payments = set() - -# # Process invoices -# for inv in invoices: -# invoice_no = inv["Invoice_No"] -# payments = payments_map.get(invoice_no, []) - -# # Process invoice row with first payment (if exists) -# if invoice_no not in seen_invoices: -# seen_invoices.add(invoice_no) -# first_payment = payments[0] if len(payments) > 0 else None - -# # Base invoice data -# row = [ -# pmc_no, inv["Village_Name"], inv["Work_Type"], inv["Invoice_Details"], -# inv["Invoice_Date"], invoice_no, inv["Basic_Amount"], inv["Debit_Amount"], -# inv["After_Debit_Amount"], inv["GST_Amount"], inv["Amount"], inv["TDS_Amount"], -# inv["SD_Amount"], inv["On_Commission"], inv["Hydro_Testing"], inv["GST_SD_Amount"] -# ] - -# # Add hold amounts for each hold type -# invoice_holds = hold_data.get(inv["Invoice_Id"], {}) -# for ht_id in hold_type_map.keys(): -# row.append(invoice_holds.get(ht_id, "")) - -# # Add payment information -# row += [ -# inv["Final_Amount"], -# first_payment["Payment_Amount"] if first_payment else "", -# first_payment["TDS_Payment_Amount"] if first_payment else "", -# first_payment["Total_amount"] if first_payment else "", -# first_payment["UTR"] if first_payment else "" -# ] - -# sheet.append(row) - -# if first_payment: -# payment_id = f"{invoice_no}-{first_payment['Payment_Amount']}-{first_payment.get('UTR', '')}" -# processed_payments.add(payment_id) - -# # Process GST release if exists (only if we have a matching GST record) -# if inv["gst_pmc_no"] and inv["gst_invoice_no"] and inv["gst_invoice_no"] not in seen_gst_notes: -# seen_gst_notes.add(inv["gst_invoice_no"]) - -# # Find the payment that matches this GST release -# gst_payment = None -# for payment in payments[1:]: # Skip first payment (already used for invoice) -# if payment['invoice_no'] == inv["gst_invoice_no"]: -# gst_payment = payment -# break - -# # If no payment found in the invoice's payments, check all payments -# if not gst_payment: -# gst_payments = payments_map.get(inv["gst_invoice_no"], []) -# if gst_payments: -# gst_payment = gst_payments[0] - -# # GST release row -# row = [ -# pmc_no, "", "", "GST Release Note", "", inv["gst_invoice_no"], -# inv["gst_basic_amount"], "", "", "", "", "", "", "", "", "" # Empty GST SD Amount -# ] - -# # Empty holds for GST release -# row += ["" for _ in hold_headers] - -# # Add payment information -# row += [ -# inv["gst_final_amount"], -# gst_payment["Payment_Amount"] if gst_payment else "", -# gst_payment["TDS_Payment_Amount"] if gst_payment else "", -# gst_payment["Total_amount"] if gst_payment else "", -# gst_payment["UTR"] if gst_payment else "" -# ] - -# sheet.append(row) - -# if gst_payment: -# payment_id = f"{inv['gst_invoice_no']}-{gst_payment['Payment_Amount']}-{gst_payment.get('UTR', '')}" -# processed_payments.add(payment_id) - -# # Process remaining payments as extra payments -# for payment in payments[1:]: -# payment_id = f"{payment['invoice_no']}-{payment['Payment_Amount']}-{payment.get('UTR', '')}" -# if payment_id not in processed_payments: -# row = [ -# pmc_no, "", "", "", "", payment['invoice_no'], -# "", "", "", "", "", "", "", "", "", "" # Empty GST SD Amount -# ] - -# # Empty holds for extra payments -# row += ["" for _ in hold_headers] - -# # Add payment information -# row += [ -# "", -# payment["Payment_Amount"], -# payment["TDS_Payment_Amount"], -# payment["Total_amount"], -# payment["UTR"] -# ] - -# sheet.append(row) -# processed_payments.add(payment_id) - -# # Process extra payments (null invoice_no) -# for payment in extra_payments: -# payment_id = f"null-{payment['Payment_Amount']}-{payment.get('UTR', '')}" -# if payment_id not in processed_payments: -# row = [ -# pmc_no, "", "", "", "", "", -# "", "", "", "", "", "", "", "", "", "" # Empty GST SD Amount -# ] - -# # Empty holds for null invoice payments -# row += ["" for _ in hold_headers] - -# # Add payment information -# row += [ -# "", -# payment["Payment_Amount"], -# payment["TDS_Payment_Amount"], -# payment["Total_amount"], -# payment["UTR"] -# ] - -# sheet.append(row) -# processed_payments.add(payment_id) - -# # Calculate totals -# total_basic_amount = 0 -# total_tds_amount = 0 -# total_sd_amount = 0 -# total_on_commission = 0 -# total_hold_amount = 0 -# total_final_amount = 0 -# total_payment_amount = 0 -# total_tds_payment_amount = 0 -# total_total_paid = 0 - -# for row in sheet.iter_rows(min_row=2, max_row=sheet.max_row, values_only=True): -# try: -# total_basic_amount += float(row[6] or 0) # Basic_Amount -# total_tds_amount += float(row[11] or 0) # TDS_Amount -# total_sd_amount += float(row[12] or 0) # SD_Amount -# total_on_commission += float(row[13] or 0) # On_Commission -# total_final_amount += float(row[-5] or 0) # Final_Amount -# total_payment_amount += float(row[-4] or 0) # Payment_Amount -# total_tds_payment_amount += float(row[-3] or 0) # TDS_Payment -# total_total_paid += float(row[-2] or 0) # Total_Paid - -# # Sum of hold amounts -# hold_start_col = len(base_headers) -# hold_end_col = hold_start_col + len(hold_headers) -# total_hold_amount += sum(float(row[i] or 0) for i in range(hold_start_col, hold_end_col)) -# except (ValueError, IndexError, TypeError): -# continue - -# # Append totals row -# totals_row = [ -# "TOTAL", "", "", "", "", "", -# total_basic_amount, "", "", "", "", total_tds_amount, total_sd_amount, -# total_on_commission, "", "", # Empty GST SD Amount -# ] - -# # Add hold totals -# totals_row += [total_hold_amount] + [""] * (len(hold_headers) - 1) - -# # Add payment totals -# totals_row += [ -# total_final_amount, -# total_payment_amount, -# total_tds_payment_amount, -# total_total_paid, -# "" # UTR column remains empty -# ] - -# sheet.append([]) -# sheet.append(totals_row) - -# # Make totals row bold -# for cell in sheet[sheet.max_row]: -# cell.font = Font(bold=True) - -# # Save Excel file -# workbook.save(output_file) -# workbook.close() - -# finally: -# cursor.close() -# connection.close() - -# return send_from_directory(output_folder, f"PMC_Report_{pmc_no}.xlsx", as_attachment=True) - - - -# @app.route('/download_pmc_report/') -# def download_pmc_report(pmc_no): -# connection = config.get_db_connection() -# output_folder = "static/download" -# output_file = os.path.join(output_folder, f"PMC_Report_{pmc_no}.xlsx") -# -# if not os.path.exists(output_folder): -# os.makedirs(output_folder) -# -# cursor = connection.cursor(dictionary=True) -# -# try: -# cursor.callproc('GetContractorDetailsByPMC', [pmc_no]) -# -# for result in cursor.stored_results(): -# contractor_info = result.fetchone() -# -# if not contractor_info: -# return "No contractor found for this PMC No", 404 -# -# cursor.callproc('GetHoldTypesByContractor', [contractor_info["Contractor_Id"]]) -# -# 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} -# -# cursor.callproc('GetInvoicesAndGstReleaseByPmcNo', [pmc_no]) -# -# for result in cursor.stored_results(): -# invoices = result.fetchall() -# total_tds=Decimal('0.00') -# final_amount=Decimal('0.00') -# # total_hold_amount=Decimal('0.00') -# for data in invoices: -# total_tds=total_tds+data.get('TDS_Amount',Decimal('0.00')) -# final_amount=final_amount+data.get('Final_Amount',Decimal('0.00')) -# -# cursor.callproc('GetHoldAmountsByContractor', [contractor_info["Contractor_Id"]]) -# -# for result in cursor.stored_results(): -# hold_amounts = result.fetchall() -# -# hold_data = {} -# for h in hold_amounts: -# hold_data.setdefault(h['Invoice_Id'], {})[h['hold_type_id']] = h['hold_amount'] -# -# cursor.callproc('GetAllPaymentsByPMC', [pmc_no]) -# -# for result in cursor.stored_results(): -# all_payments = result.fetchall() -# total_amount=Decimal('0.00') -# for d in all_payments: -# total_amount=total_amount+ d.get('Total_Amount',Decimal('0.00')) -# total_amount_paid= final_amount- total_amount; -# payments_map = {} -# extra_payments = [] -# for pay in all_payments: -# if pay['invoice_no']: -# key = pay['invoice_no'] -# if key not in payments_map: -# payments_map[key] = [] -# payments_map[key].append(pay) -# else: -# extra_payments.append(pay) -# -# workbook = openpyxl.Workbook() -# sheet = workbook.active -# sheet.title = "PMC Report" -# -# # Write Contractor Details -# sheet.append(["", "", "Laxmi Civil Engineering Services PVT. LTD.", "", ""]) -# sheet.append( -# ["Contractor Name", contractor_info["Contractor_Name"], " ", "GST No", contractor_info["GST_No"], " ", -# "GST Type", contractor_info["GST_Registration_Type"]]) -# sheet.append(["State", contractor_info["State_Name"], " ", "PAN No", contractor_info["PAN_No"], " ", "Address", -# contractor_info["Address"]]) -# sheet.append(["District", contractor_info["District_Name"], " ", "Mobile No", contractor_info["Mobile_No"]]) -# sheet.append(["Block", contractor_info["Block_Name"], " ", "Email", contractor_info["Email"]]) -# sheet.append([]) -# -# # Table Headers - include all hold types as separate columns -# base_headers = ["PMC No", "Village", "Work Type", "Invoice Details", "Invoice Date", "Invoice No", -# "Basic Amount", "Debit", "After Debit Amount", "GST (18%)", "Amount", "TDS (1%)", -# "SD (5%)", "On Commission", "Hydro Testing", "GST SD Amount"] -# -# hold_headers = [ht['hold_type'] for ht in hold_types] -# -# payment_headers = ["Final Amount", "Payment Amount", "TDS Payment", "Total Paid", "UTR"] -# -# sheet.append(base_headers + hold_headers + payment_headers) -# -# seen_invoices = set() -# seen_gst_notes = set() -# processed_payments = set() -# -# # Process invoices -# for inv in invoices: -# invoice_no = inv["Invoice_No"] -# payments = payments_map.get(invoice_no, []) -# -# # Process invoice row with first payment (if exists) -# if invoice_no not in seen_invoices: -# seen_invoices.add(invoice_no) -# first_payment = payments[0] if len(payments) > 0 else None -# -# # Base invoice data -# row = [ -# pmc_no, inv["Village_Name"], inv["Work_Type"], inv["Invoice_Details"], -# inv["Invoice_Date"], invoice_no, inv["Basic_Amount"], inv["Debit_Amount"], -# inv["After_Debit_Amount"], inv["GST_Amount"], inv["Amount"], inv["TDS_Amount"], -# inv["SD_Amount"], inv["On_Commission"], inv["Hydro_Testing"], inv["GST_SD_Amount"] -# ] -# -# # Add hold amounts for each hold type -# invoice_holds = hold_data.get(inv["Invoice_Id"], {}) -# for ht_id in hold_type_map.keys(): -# row.append(invoice_holds.get(ht_id, "")) -# -# # Add payment information -# row += [ -# inv["Final_Amount"], -# first_payment["Payment_Amount"] if first_payment else "", -# first_payment["TDS_Payment_Amount"] if first_payment else "", -# first_payment["Total_amount"] if first_payment else "", -# first_payment["UTR"] if first_payment else "" -# ] -# -# sheet.append(row) -# -# if first_payment: -# payment_id = f"{invoice_no}-{first_payment['Payment_Amount']}-{first_payment.get('UTR', '')}" -# processed_payments.add(payment_id) -# -# # Process GST release if exists (only if we have a matching GST record) -# if inv["gst_pmc_no"] and inv["gst_invoice_no"] and inv["gst_invoice_no"] not in seen_gst_notes: -# seen_gst_notes.add(inv["gst_invoice_no"]) -# -# # Find the payment that matches this GST release -# gst_payment = None -# for payment in payments[1:]: # Skip first payment (already used for invoice) -# if payment['invoice_no'] == inv["gst_invoice_no"]: -# gst_payment = payment -# break -# -# # If no payment found in the invoice's payments, check all payments -# if not gst_payment: -# gst_payments = payments_map.get(inv["gst_invoice_no"], []) -# if gst_payments: -# gst_payment = gst_payments[0] -# -# # GST release row (this will be in the same row, after the invoice information) -# gst_row = [ -# pmc_no, "", "", "GST Release Note", "", inv["gst_invoice_no"], -# inv["gst_basic_amount"], "", "", "", "", "", "", "", "", "" # Empty GST SD Amount -# ] -# -# # Empty holds for GST release -# gst_row += ["" for _ in hold_headers] -# -# # Add GST payment information (same columns as invoice payment information) -# gst_row += [ -# inv["gst_final_amount"], -# gst_payment["Payment_Amount"] if gst_payment else "", -# gst_payment["TDS_Payment_Amount"] if gst_payment else "", -# gst_payment["Total_amount"] if gst_payment else "", -# gst_payment["UTR"] if gst_payment else "" -# ] -# -# sheet.append(gst_row) -# -# if gst_payment: -# payment_id = f"{inv['gst_invoice_no']}-{gst_payment['Payment_Amount']}-{gst_payment.get('UTR', '')}" -# processed_payments.add(payment_id) -# -# # Process remaining payments as extra payments (if any) -# for payment in payments[1:]: -# payment_id = f"{payment['invoice_no']}-{payment['Payment_Amount']}-{payment.get('UTR', '')}" -# if payment_id not in processed_payments: -# row = [ -# pmc_no, "", "", "", "", payment['invoice_no'], -# "", "", "", "", "", "", "", "", "", "" # Empty GST SD Amount -# ] -# -# # Empty holds for extra payments -# row += ["" for _ in hold_headers] -# -# # Add payment information -# row += [ -# "", -# payment["Payment_Amount"], -# payment["TDS_Payment_Amount"], -# payment["Total_amount"], -# payment["UTR"] -# ] -# -# sheet.append(row) -# processed_payments.add(payment_id) -# -# # Process extra payments (null invoice_no) -# for payment in extra_payments: -# payment_id = f"null-{payment['Payment_Amount']}-{payment.get('UTR', '')}" -# if payment_id not in processed_payments: -# row = [ -# pmc_no, "", "", "", "", "", -# "", "", "", "", "", "", "", "", "", "" # Empty GST SD Amount -# ] -# -# # Empty holds for null invoice payments -# row += ["" for _ in hold_headers] -# -# # Add payment information -# row += [ -# "", -# payment["Payment_Amount"], -# payment["TDS_Payment_Amount"], -# payment["Total_amount"], -# payment["UTR"] -# ] -# -# sheet.append(row) -# processed_payments.add(payment_id) -# -# # Calculate totals -# total_basic_amount = 0 -# total_tds_amount = 0 -# total_sd_amount = 0 -# total_on_commission = 0 -# total_hold_amount = 0 -# total_final_amount = 0 -# total_payment_amount = 0 -# total_tds_payment_amount = 0 -# total_total_paid = 0 -# -# for row in sheet.iter_rows(min_row=2, max_row=sheet.max_row, values_only=True): -# try: -# total_basic_amount += float(row[6] or 0) # Basic_Amount -# total_tds_amount += float(row[11] or 0) # TDS_Amount -# total_sd_amount += float(row[12] or 0) # SD_Amount -# total_on_commission += float(row[13] or 0) # On_Commission -# total_final_amount += float(row[-5] or 0) # Final_Amount -# total_payment_amount += float(row[-4] or 0) # Payment_Amount -# total_tds_payment_amount += float(row[-3] or 0) # TDS_Payment -# total_total_paid += float(row[-2] or 0) # Total_Paid -# -# # Sum of hold amounts -# hold_start_col = len(base_headers) -# hold_end_col = hold_start_col + len(hold_headers) -# total_hold_amount += sum(float(row[i] or 0) for i in range(hold_start_col, hold_end_col)) -# except (ValueError, IndexError, TypeError): -# continue -# -# # Append totals row -# totals_row = [ -# "TOTAL", "", "", "", "", "", -# total_basic_amount, "", "", "", "", total_tds_amount, total_sd_amount, -# total_on_commission, "", "", # Empty GST SD Amount -# ] -# if hold_headers: -# totals_row += [total_hold_amount] + [""] * (len(hold_headers) - 1) -# -# # Add payment totals -# totals_row += [ -# total_final_amount, -# total_payment_amount, -# total_tds_payment_amount, -# total_total_paid, -# "" # UTR column remains empty -# ] -# -# sheet.append([]) -# sheet.append(totals_row) -# #new code added for small chart---summary -# total_hold_amount=Decimal('0.00') -# for d in invoices: -# total_hold_amount = total_hold_amount + d.get('SD_Amount', Decimal('0.00')) + d.get('On_Commission', -# Decimal( -# '0.00')) + d.get( -# 'Hydro_Testing', Decimal('0.00')) -# for data in hold_amounts: -# total_hold_amount = total_hold_amount + data.get('hold_amount', Decimal('0.00')) -# print("Total Hold Amount after adding the hold amount ", total_hold_amount) -# -# # Add payment information -# # Get today's date -# today_date = datetime.today().strftime('%A,%Y-%m-%d') -# # Add headers (optional) -# sheet.append(["Contractor Name", contractor_info["Contractor_Name"]]) -# sheet.append(["Date", today_date]) -# sheet.append(["Description", "Amount"]) -# # Add your values -# sheet.append(["Advance/Surplus", str(total_final_amount-total_payment_amount)]) -# sheet.append(["Total Hold Amount", str(total_hold_amount)]) -# sheet.append(["Amount With TDS", str(total_tds_payment_amount)]) -# # new coded ended here for summary chart -# # Make totals row bold -# for cell in sheet[sheet.max_row]: -# cell.font = Font(bold=True) -# -# # Save Excel file -# workbook.save(output_file) -# workbook.close() -# -# finally: -# cursor.close() -# connection.close() -# -# return send_from_directory(output_folder, f"PMC_Report_{pmc_no}.xlsx", as_attachment=True) - -# @app.route('/download_pmc_report/') -# def download_pmc_report(pmc_no): -# connection = config.get_db_connection() -# output_folder = "static/download" -# output_file = os.path.join(output_folder, f"PMC_Report_{pmc_no}.xlsx") -# -# if not os.path.exists(output_folder): -# os.makedirs(output_folder) -# -# cursor = connection.cursor(dictionary=True) -# -# try: -# cursor.callproc('GetContractorDetailsByPMC', [pmc_no]) -# contractor_info = next(cursor.stored_results()).fetchone() -# -# if not contractor_info: -# return "No contractor found for this PMC No", 404 -# -# cursor.callproc('GetHoldTypesByContractor', [contractor_info["Contractor_Id"]]) -# hold_types = next(cursor.stored_results()).fetchall() -# hold_type_map = {ht['hold_type_id']: ht['hold_type'] for ht in hold_types} -# -# cursor.callproc('GetInvoicesAndGstReleaseByPmcNo', [pmc_no]) -# invoices = next(cursor.stored_results()).fetchall() -# -# cursor.callproc('GetHoldAmountsByContractor', [contractor_info["Contractor_Id"]]) -# hold_amounts = next(cursor.stored_results()).fetchall() -# hold_data = {} -# for h in hold_amounts: -# hold_data.setdefault(h['Invoice_Id'], {})[h['hold_type_id']] = h['hold_amount'] -# -# cursor.callproc('GetAllPaymentsByPMC', [pmc_no]) -# all_payments = next(cursor.stored_results()).fetchall() -# -# payments_map = {} -# extra_payments = [] -# for pay in all_payments: -# if pay['invoice_no']: -# payments_map.setdefault(pay['invoice_no'], []).append(pay) -# else: -# extra_payments.append(pay) -# -# workbook = openpyxl.Workbook() -# sheet = workbook.active -# sheet.title = "PMC Report" -# -# # Write contractor header -# sheet.append(["", "", "Laxmi Civil Engineering Services PVT. LTD."]) -# sheet.append(["Contractor Name", contractor_info["Contractor_Name"], "", "GST No", contractor_info["GST_No"], "", "GST Type", contractor_info["GST_Registration_Type"]]) -# sheet.append(["State", contractor_info["State_Name"], "", "PAN No", contractor_info["PAN_No"], "", "Address", contractor_info["Address"]]) -# sheet.append(["District", contractor_info["District_Name"], "", "Mobile No", contractor_info["Mobile_No"]]) -# sheet.append(["Block", contractor_info["Block_Name"], "", "Email", contractor_info["Email"]]) -# sheet.append([]) -# -# base_headers = ["PMC No", "Village", "Work Type", "Invoice Details", "Invoice Date", "Invoice No", -# "Basic Amount", "Debit", "After Debit Amount", "GST (18%)", "Amount", "TDS (1%)", -# "SD (5%)", "On Commission", "Hydro Testing", "GST SD Amount"] -# -# hold_headers = [ht['hold_type'] for ht in hold_types] -# payment_headers = ["Final Amount", "Payment Amount", "TDS Payment", "Total Paid", "UTR"] -# sheet.append(base_headers + hold_headers + payment_headers) -# # Style the headers -# header_fill=PatternFill(start_color="ADD8E6",end_color="ADD8E6",fill_type="solid") -# header_font=Font(bold=True) -# for cell in sheet[sheet.max_row]: -# cell.font=header_font -# cell.fill=header_fill -# -# seen_invoices = set() -# seen_gst_notes = set() -# processed_payments = set() -# -# for inv in invoices: -# invoice_no = inv["Invoice_No"] -# payments = payments_map.get(invoice_no, []) -# -# if invoice_no not in seen_invoices: -# seen_invoices.add(invoice_no) -# first_payment = payments[0] if payments else None -# -# row = [ -# pmc_no, inv["Village_Name"], inv["Work_Type"], inv["Invoice_Details"], -# inv["Invoice_Date"], invoice_no, inv["Basic_Amount"], inv["Debit_Amount"], -# inv["After_Debit_Amount"], inv["GST_Amount"], inv["Amount"], inv["TDS_Amount"], -# inv["SD_Amount"], inv["On_Commission"], inv["Hydro_Testing"], inv["GST_SD_Amount"] -# ] -# -# invoice_holds = hold_data.get(inv["Invoice_Id"], {}) -# for ht_id in hold_type_map.keys(): -# row.append(invoice_holds.get(ht_id, "")) -# -# row += [ -# inv["Final_Amount"], -# first_payment["Payment_Amount"] if first_payment else "", -# first_payment["TDS_Payment_Amount"] if first_payment else "", -# first_payment["Total_amount"] if first_payment else "", -# first_payment["UTR"] if first_payment else "" -# ] -# -# sheet.append(row) -# -# if first_payment: -# processed_payments.add(f"{invoice_no}-{first_payment['Payment_Amount']}-{first_payment.get('UTR', '')}") -# -# if inv["gst_pmc_no"] and inv["gst_invoice_no"] and inv["gst_invoice_no"] not in seen_gst_notes: -# seen_gst_notes.add(inv["gst_invoice_no"]) -# gst_payment = None -# for payment in payments[1:]: -# if payment['invoice_no'] == inv["gst_invoice_no"]: -# gst_payment = payment -# break -# if not gst_payment: -# gst_payment = payments_map.get(inv["gst_invoice_no"], [None])[0] -# -# gst_row = [ -# pmc_no, "", "", "GST Release Note", "", inv["gst_invoice_no"], -# inv["gst_basic_amount"], "", "", "", "", "", "", "", "", "" -# ] -# gst_row += ["" for _ in hold_headers] -# gst_row += [ -# inv["gst_final_amount"], -# gst_payment["Payment_Amount"] if gst_payment else "", -# gst_payment["TDS_Payment_Amount"] if gst_payment else "", -# gst_payment["Total_amount"] if gst_payment else "", -# gst_payment["UTR"] if gst_payment else "" -# ] -# sheet.append(gst_row) -# if gst_payment: -# processed_payments.add(f"{inv['gst_invoice_no']}-{gst_payment['Payment_Amount']}-{gst_payment.get('UTR', '')}") -# -# for payment in payments[1:]: -# payment_id = f"{payment['invoice_no']}-{payment['Payment_Amount']}-{payment.get('UTR', '')}" -# if payment_id not in processed_payments: -# row = [pmc_no, "", "", "", "", payment['invoice_no']] + [""] * 10 -# row += ["" for _ in hold_headers] -# row += [ -# "", payment["Payment_Amount"], payment["TDS_Payment_Amount"], -# payment["Total_amount"], payment["UTR"] -# ] -# sheet.append(row) -# processed_payments.add(payment_id) -# -# for payment in extra_payments: -# row = [pmc_no, "", "", "", "", ""] + [""] * 10 -# row += ["" for _ in hold_headers] -# row += [ -# "", payment["Payment_Amount"], payment["TDS_Payment_Amount"], -# payment["Total_amount"], payment["UTR"] -# ] -# sheet.append(row) -# -# # Totals -# total_basic_amount = Decimal('0.00') -# total_tds_amount = Decimal('0.00') -# total_sd_amount = Decimal('0.00') -# total_on_commission = Decimal('0.00') -# total_final_amount = Decimal('0.00') -# total_payment_amount = Decimal('0.00') -# total_tds_payment_amount = Decimal('0.00') -# total_total_paid = Decimal('0.00') -# total_hold_amount_dynamic = Decimal('0.00') -# -# for row in sheet.iter_rows(min_row=8, max_row=sheet.max_row, values_only=True): -# try: -# total_basic_amount += Decimal(str(row[6] or 0)) -# total_tds_amount += Decimal(str(row[11] or 0)) -# total_sd_amount += Decimal(str(row[12] or 0)) -# total_on_commission += Decimal(str(row[13] or 0)) -# total_final_amount += Decimal(str(row[-5] or 0)) -# total_payment_amount += Decimal(str(row[-4] or 0)) -# total_tds_payment_amount += Decimal(str(row[-3] or 0)) -# total_total_paid += Decimal(str(row[-2] or 0)) -# -# for i in range(len(base_headers), len(base_headers) + len(hold_headers)): -# total_hold_amount_dynamic += Decimal(str(row[i] or 0)) -# except: -# continue -# -# totals_row = [ -# "TOTAL", "", "", "", "", "", -# total_basic_amount, "", "", "", "", total_tds_amount, total_sd_amount, -# total_on_commission, "", "" -# ] -# totals_row += [total_hold_amount_dynamic] + [""] * (len(hold_headers) - 1) -# totals_row += [ -# total_final_amount, -# total_payment_amount, -# total_tds_payment_amount, -# total_total_paid, -# "" -# ] -# -# sheet.append([]) -# sheet.append(totals_row) -# -# # Summary -# summary_hold = Decimal('0.00') -# for d in invoices: -# summary_hold += Decimal(str(d.get('SD_Amount', 0.00))) + Decimal(str(d.get('On_Commission', 0.00))) + Decimal(str(d.get('Hydro_Testing', 0.00))) -# for h in hold_amounts: -# summary_hold += Decimal(str(h.get('hold_amount', 0.00))) -# -# sheet.append([]) -# today = datetime.today().strftime('%A, %Y-%m-%d') -# sheet.append(["Contractor Name", contractor_info["Contractor_Name"]]) -# sheet.append(["Date", today]) -# sheet.append(["Description", "Amount"]) -# sheet.append(["Advance/Surplus", str(total_final_amount - total_payment_amount)]) -# sheet.append(["Total Hold Amount", str(summary_hold)]) -# sheet.append(["Amount With TDS", str(total_payment_amount + total_tds_payment_amount)]) -# -# for cell in sheet[sheet.max_row]: -# cell.font = Font(bold=True) -# -# workbook.save(output_file) -# workbook.close() -# -# finally: -# cursor.close() -# connection.close() -# -# return send_from_directory(output_folder, f"PMC_Report_{pmc_no}.xlsx", as_attachment=True) @app.route('/download_pmc_report/') @@ -4685,29 +3067,7 @@ def download_pmc_report(pmc_no): if first_payment: processed_payments.add(f"{invoice_no}-{first_payment['Payment_Amount']}-{first_payment.get('UTR', '')}") - # if inv["gst_pmc_no"] and inv["gst_invoice_no"] and inv["gst_invoice_no"] not in seen_gst_notes: - # seen_gst_notes.add(inv["gst_invoice_no"]) - # gst_payment = None - # for payment in payments[1:]: - # if payment['invoice_no'] == inv["gst_invoice_no"]: - # gst_payment = payment - # break - # if not gst_payment: - # gst_payment = payments_map.get(inv["gst_invoice_no"], [None])[0] - # - # gst_row = [ - # pmc_no, "", "", "GST Release Note", "", inv["gst_invoice_no"], - # inv["gst_basic_amount"], "", "", "", "", "", "", "", "", "" - # ] - # gst_row += ["" for _ in hold_headers] - # gst_row += [ - # inv["gst_final_amount"], - # gst_payment["Payment_Amount"] if gst_payment else "", - # gst_payment["TDS_Payment_Amount"] if gst_payment else "", - # gst_payment["Total_amount"] if gst_payment else "", - # gst_payment["UTR"] if gst_payment else "" - # ] - # sheet.append(gst_row) + # Add GST Release Note(s) for this invoice if any if invoice_no in gst_release_map: for gr in gst_release_map[invoice_no]: @@ -4727,8 +3087,7 @@ def download_pmc_report(pmc_no): sheet.append(gst_row) - # if gst_payment: - # processed_payments.add(f"{inv['gst_invoice_no']}-{gst_payment['Payment_Amount']}-{gst_payment.get('UTR', '')}") + for payment in payments[1:]: payment_id = f"{payment['invoice_no']}-{payment['Payment_Amount']}-{payment.get('UTR', '')}" @@ -4804,21 +3163,7 @@ def download_pmc_report(pmc_no): except: continue - # totals_row = [ - # "TOTAL", "", "", "", "", "", - # total_basic_amount, "", "", "", "", total_tds_amount, total_sd_amount, - # total_on_commission, "", "" - # ] - # if total_hold_amount_dynamic: - # totals_row += [total_hold_amount_dynamic] + [""] * (len(hold_headers) - 1) - # totals_row += [ - # total_final_amount, - # total_payment_amount, - # total_tds_payment_amount, - # total_total_paid, - # "" - # ] - # Prepare empty totals_row with length of base_headers + totals_row = [""] * len(base_headers) # Fill in specific columns @@ -4846,12 +3191,7 @@ def download_pmc_report(pmc_no): sheet.append([]) sheet.append(totals_row) - # Summary - # summary_hold = Decimal('0.00') - # for d in invoices: - # summary_hold += Decimal(str(d.get('SD_Amount', 0))) + Decimal(str(d.get('On_Commission', 0))) + Decimal(str(d.get('Hydro_Testing', 0))) - # for h in hold_amounts: - # summary_hold += Decimal(str(h.get('hold_amount', 0))) + sheet.append([]) today = datetime.today().strftime('%A, %Y-%m-%d') @@ -4895,18 +3235,12 @@ def add_hold_type(): if not hold_type or not hold_type[0].isalpha(): return jsonify({"status": "error", "message": "Hold Type must start with a letter."}), 400 - # Validation: Check if it already exists (case-insensitive) - # cursor.execute("SELECT COUNT(*) AS count FROM hold_types WHERE LOWER(hold_type) = LOWER(%s)", (hold_type,)) - # if cursor.fetchone()['count'] > 0: - # return jsonify({"status": "error", "message": "This Hold Type already exists."}), 400 - # Call the procedure to check if the hold_type exists + cursor.callproc('CheckHoldTypeExists', [hold_type]) try: - # Insert new hold type into the database - # cursor.execute("INSERT INTO hold_types (hold_type) VALUES (%s)", (hold_type,)) - # connection.commit() + cursor.callproc('SaveHoldType', [hold_type]) connection.commit() @@ -4925,62 +3259,7 @@ def add_hold_type(): return render_template('add_hold_type.html', Hold_Types_data=hold_types) -# Route to Update Hold Type -# @app.route('/update_hold_type/', methods=['POST', 'GET']) -# def update_hold_type(id): -# # GET request: Show the form with the current hold type -# if request.method == 'GET': -# connection = config.get_db_connection() -# cursor = connection.cursor() -# # cursor.execute("SELECT * FROM hold_types WHERE hold_type_id = %s", (id,)) -# # hold_type = cursor.fetchone() -# -# cursor.callproc("GetHoldTypesById", (id,)) -# for hold in cursor.stored_results(): -# hold_type = hold.fetchone() -# -# cursor.close() -# connection.close() -# -# if not hold_type: -# return jsonify({'status': 'error', 'message': 'Hold Type not found.'}), 404 -# -# return render_template('edit_hold_type.html', hold_type=hold_type) -# -# # POST request: Update the hold type -# if request.method == 'POST': -# new_hold_type = request.form.get('hold_type').strip() -# -# # Validation: Must start with a letter -# if not new_hold_type or not new_hold_type[0].isalpha(): -# return jsonify(ResponseHandler.invalid_name('Hold Type')), 400 -# -# connection = config.get_db_connection() -# cursor = connection.cursor() -# -# try: -# # Check if the hold type exists before updating -# # cursor.execute("SELECT * FROM hold_types WHERE hold_type_id = %s", (id,)) -# # hold_type = cursor.fetchone() -# cursor.callproc("GetHoldTypesById", (id,)) -# for hold in cursor.stored_results(): -# hold_type = hold.fetchone() -# -# if not hold_type: -# return jsonify({'status': 'error', 'message': 'Hold Type not found.'}), 404 -# -# # Update the hold type -# # cursor.execute("UPDATE hold_types SET hold_type = %s WHERE hold_type_id = %s", (new_hold_type, id)) -# cursor.callproc("UpdateHoldTypeById", (id,new_hold_type)) -# connection.commit() -# return jsonify(ResponseHandler.update_success('Hold Type')) -# -# except mysql.connector.Error as e: -# connection.rollback() -# return jsonify(ResponseHandler.update_failure('Hold Type')), 500 -# finally: -# cursor.close() -# connection.close() + @app.route('/update_hold_type/', methods=['GET', 'POST']) diff --git a/main1.py b/main1.py new file mode 100644 index 0000000..d8a00ff --- /dev/null +++ b/main1.py @@ -0,0 +1,933 @@ +# PART 1 of main.py +# Imports, DB helper, app init, auth/login, logging & small helpers + +from decimal import Decimal +from datetime import datetime +import os +import re +import logging +from logging.handlers import RotatingFileHandler + +from flask import ( + Flask, render_template, request, redirect, url_for, send_from_directory, + flash, jsonify, json, session, current_app +) +from flask_login import LoginManager, UserMixin, login_user, logout_user, login_required, current_user +import mysql.connector +from mysql.connector import Error +import config +import openpyxl +import ast +import pandas as pd +from openpyxl.styles import Font +from ldap3 import Server, Connection, ALL, SUBTREE +from ldap3.core.exceptions import LDAPBindError + +# --------------------------- +# App and Login manager init +# --------------------------- +app = Flask(__name__) +app.secret_key = os.environ.get('FLASK_SECRET_KEY', '9f2a1b8c4d6e7f0123456789abcdef01') + +login_manager = LoginManager() +login_manager.init_app(app) +login_manager.login_view = 'login' + +# --------------------------- +# DB helper (dictionary cursor) +# --------------------------- +class DB: + """ + Lightweight DB helper to call stored procedures with dictionary=True cursors. + Usage: + db = DB() + rows = db.fetch_all_proc('GetAllStates') + single = db.fetch_one_proc('GetStateByID', [id]) + db.exec_proc('SaveState', [state_name]) + db.close() + """ + def __init__(self): + self.conn = None + self.cursor = None + try: + self.conn = config.get_db_connection() + except Exception as e: + # Keep None and let callers handle connection absence + self.conn = None + app.logger.exception("DB connection failed: %s", e) + + def _ensure_cursor(self, dict_mode=True): + if not self.conn: + raise mysql.connector.Error("No DB connection") + self.cursor = self.conn.cursor(dictionary=dict_mode) + + def fetch_all_proc(self, proc_name, params=None): + try: + self._ensure_cursor(dict_mode=True) + self.cursor.callproc(proc_name, params or []) + results = [] + for res in self.cursor.stored_results(): + results = res.fetchall() + return results + finally: + self.close_cursor() + + def fetch_one_proc(self, proc_name, params=None): + rows = self.fetch_all_proc(proc_name, params) + return rows[0] if rows else None + + def exec_proc(self, proc_name, params=None): + try: + self._ensure_cursor(dict_mode=True) + self.cursor.callproc(proc_name, params or []) + # advance through any results to avoid unread result issues + for _ in self.cursor.stored_results(): + pass + if self.conn: + self.conn.commit() + finally: + self.close_cursor() + + def close_cursor(self): + try: + if self.cursor: + self.cursor.close() + except Exception: + pass + self.cursor = None + + def close(self): + self.close_cursor() + try: + if self.conn: + self.conn.close() + except Exception: + pass + self.conn = None + +# --------------------------- +# ResponseHandler (centralized messages) +# --------------------------- +class ResponseHandler: + @staticmethod + def invalid_name(entity): + return {'status': 'error', 'message': f'Invalid {entity} name. Only letters and spaces are allowed!'} + + @staticmethod + def already_exists(entity): + return {'status': 'exists', 'message': f'{entity.capitalize()} already exists!'} + + @staticmethod + def add_success(entity): + return {'status': 'success', 'message': f'{entity.capitalize()} added successfully!'} + + @staticmethod + def add_failure(entity): + return {'status': 'error', 'message': f'Failed to add {entity}.'} + + @staticmethod + def is_available(entity): + return {'status': 'available', 'message': f'{entity.capitalize()} name is available!'} + + @staticmethod + def delete_success(entity): + return {'status': 'success', 'message': f'{entity.capitalize()} deleted successfully!'} + + @staticmethod + def delete_failure(entity): + return {'status': 'error', 'message': f'Failed to delete {entity}.'} + + @staticmethod + def update_success(entity): + return {'status': 'success', 'message': f'{entity.capitalize()} updated successfully!'} + + @staticmethod + def update_failure(entity): + return {'status': 'error', 'message': f'Failed to update {entity}.'} + + @staticmethod + def fetch_failure(entity): + return {'status': 'error', 'message': f'Failed to fetch {entity}.'} + +# JSON response helper +def json_response(message_obj, status_code=200): + return jsonify(message_obj), status_code + +# --------------------------- +# Logging helper +# --------------------------- +if not app.debug: + log_file = os.path.join(app.root_path, 'app.log') + handler = RotatingFileHandler(log_file, maxBytes=5*1024*1024, backupCount=2) + handler.setLevel(logging.INFO) + formatter = logging.Formatter('%(asctime)s %(levelname)s: %(message)s [in %(pathname)s:%(lineno)d]') + handler.setFormatter(formatter) + app.logger.addHandler(handler) + +def log_action(action, details=""): + """Write a user action to activity.log with timestamp and user info.""" + try: + log_file = os.path.join(current_app.root_path, 'activity.log') + except RuntimeError: + # current_app not available (like unit tests). Use app.root_path fallback. + log_file = os.path.join(app.root_path, 'activity.log') + + timestamp = datetime.now().strftime("%Y-%m-%d %H:%M:%S") + user = "Unknown" + try: + if current_user and hasattr(current_user, "id"): + user = getattr(current_user, "id", "Unknown") + elif session.get('username'): + user = session.get('username') + except Exception: + pass + + try: + with open(log_file, "a", encoding="utf-8") as f: + f.write(f"Timestamp: {timestamp} | User: {user} | Action: {action} | Details: {details}\n") + except Exception: + app.logger.exception("Failed to write activity log.") + +# --------------------------- +# Simple User class for flask-login +# --------------------------- +class User(UserMixin): + def __init__(self, id, cn=None, username=None, sAMAccountName=None): + self.id = id + self.cn = cn + self.username = username + self.sAMAccountName = sAMAccountName + +@login_manager.user_loader +def load_user(user_id): + # Minimal loader: return User object with id. + return User(user_id) + +# --------------------------- +# Constants & simple validators +# --------------------------- +STR_NAME_PATTERN = r"^[A-Za-z\s]+$" + +def is_valid_name(value): + return bool(re.match(STR_NAME_PATTERN, value.strip())) if value else False + +# --------------------------- +# Basic Routes: index, login, logout +# --------------------------- +@app.route('/') +@login_required +def index(): + return render_template('index.html') + +@app.route('/login', methods=['GET', 'POST']) +def login(): + """ + Login supports: + - static admin/admin123 fallback + - LDAP bind if not static + """ + if request.method == 'POST': + username = request.form.get('username', '').strip() + password = request.form.get('password', '') + + # static fallback + if username == 'admin' and password == 'admin123': + session['username'] = username + login_user(User(username)) + log_action('Login', f"Static admin logged in: {username}") + return redirect(url_for('index')) + + ldap_user_dn = f"uid={username},ou=users,dc=lcepl,dc=org" + try: + conn = Connection(Server('ldap://localhost:389', get_info=ALL), user=ldap_user_dn, password=password, auto_bind=True) + session['username'] = username + login_user(User(username)) + log_action('Login', f"LDAP login: {username}") + conn.unbind() + return redirect(url_for('index')) + except LDAPBindError: + flash('Invalid credentials.', 'danger') + except Exception as e: + app.logger.exception("LDAP error during login") + flash(f'LDAP error: {str(e)}', 'danger') + + return render_template('login.html') + +@app.route('/logout') +@login_required +def logout(): + try: + user_id = getattr(current_user, 'id', 'Unknown') + except Exception: + user_id = session.get('username', 'Unknown') + log_action('Logout', f"User {user_id} logged out") + logout_user() + flash('You have been logged out.', 'info') + return redirect(url_for('login')) + +# --------------------------- +# Activity log viewer +# --------------------------- +@app.route('/activity_log', methods=['GET', 'POST']) +@login_required +def activity_log(): + logs = [] + log_file = os.path.join(current_app.root_path, 'activity.log') + if os.path.exists(log_file): + with open(log_file, 'r', encoding='utf-8') as f: + for line in f: + parts = line.strip().split(" | ") + if len(parts) == 4: + logs.append({ + "timestamp": parts[0].replace("Timestamp:", "").strip(), + "user": parts[1].replace("User:", "").strip(), + "action": parts[2].replace("Action:", "").strip(), + "details": parts[3].replace("Details:", "").strip() + }) + + # Filters + start_date = request.values.get("start_date") + end_date = request.values.get("end_date") + username = request.values.get("username") + + filtered_logs = logs + # date filter + if start_date or end_date: + try: + start_dt = datetime.strptime(start_date, "%Y-%m-%d") if start_date else datetime.min + end_dt = datetime.strptime(end_date, "%Y-%m-%d") if end_date else datetime.max + end_dt = end_dt.replace(hour=23, minute=59, second=59) + filtered_logs = [ + log for log in filtered_logs + if start_dt <= datetime.strptime(log["timestamp"], "%Y-%m-%d %H:%M:%S") <= end_dt + ] + except Exception: + app.logger.exception("activity_log date filter parse error") + + if username: + filtered_logs = [log for log in filtered_logs if username.lower() in log["user"].lower()] + + return render_template('activity_log.html', logs=filtered_logs, start_date=start_date, end_date=end_date, username=username) + +# PART 2 of main.py +# -------------------------------------------- +# STATE, DISTRICT, BLOCK, VILLAGE MANAGEMENT +# -------------------------------------------- + +# ---------------- STATE ---------------- +@app.route('/add_state', methods=['GET', 'POST']) +@login_required +def add_state(): + db = DB() + + if request.method == 'POST': + state_name = request.form['state_Name'].strip() + + if not is_valid_name(state_name): + db.close() + return json_response(ResponseHandler.invalid_name("state"), 400) + + existing = db.fetch_one_proc('CheckStateExists', [state_name]) + if existing: + db.close() + return json_response(ResponseHandler.already_exists("state"), 409) + + db.exec_proc('SaveState', [state_name]) + log_action('Add State', f"State added: {state_name}") + db.close() + return json_response(ResponseHandler.add_success("state"), 200) + + statedata = db.fetch_all_proc('GetAllStates') + db.close() + return render_template('add_state.html', statedata=statedata) + + +@app.route('/delete_state/', methods=['POST']) +@login_required +def delete_state(id): + db = DB() + try: + db.exec_proc('DeleteState', [id]) + log_action('Delete State', f"Deleted state id={id}") + return json_response(ResponseHandler.delete_success("state")) + except Exception as e: + app.logger.exception("DeleteState failed: %s", e) + return json_response(ResponseHandler.delete_failure("state"), 500) + finally: + db.close() + + +@app.route('/update_state/', methods=['POST']) +@login_required +def update_state(id): + db = DB() + state_name = request.form.get('state_Name', '').strip() + + if not is_valid_name(state_name): + db.close() + return json_response(ResponseHandler.invalid_name("state"), 400) + + try: + db.exec_proc('UpdateStateById', [id, state_name]) + log_action('Update State', f"Updated state id={id}, name={state_name}") + return json_response(ResponseHandler.update_success("state")) + except Exception as e: + app.logger.exception("UpdateState failed: %s", e) + return json_response(ResponseHandler.update_failure("state"), 500) + finally: + db.close() + + +# ---------------- DISTRICT ---------------- +@app.route('/add_district', methods=['GET', 'POST']) +@login_required +def add_district(): + db = DB() + + if request.method == 'POST': + state_id = request.form.get('state_id') + district_name = request.form.get('district_Name', '').strip() + + if not is_valid_name(district_name): + db.close() + return json_response(ResponseHandler.invalid_name("district"), 400) + + existing = db.fetch_one_proc('CheckDistrictExists', [state_id, district_name]) + if existing: + db.close() + return json_response(ResponseHandler.already_exists("district"), 409) + + db.exec_proc('SaveDistrict', [state_id, district_name]) + log_action('Add District', f"District added: {district_name} (state_id={state_id})") + db.close() + return json_response(ResponseHandler.add_success("district"), 200) + + statedata = db.fetch_all_proc('GetAllStates') + districtdata = db.fetch_all_proc('GetAllDistricts') + db.close() + return render_template('add_district.html', statedata=statedata, districtdata=districtdata) + + +@app.route('/delete_district/', methods=['POST']) +@login_required +def delete_district(id): + db = DB() + try: + db.exec_proc('DeleteDistrict', [id]) + log_action('Delete District', f"Deleted district id={id}") + return json_response(ResponseHandler.delete_success("district")) + except Exception as e: + app.logger.exception("DeleteDistrict failed: %s", e) + return json_response(ResponseHandler.delete_failure("district"), 500) + finally: + db.close() + + +@app.route('/update_district/', methods=['POST']) +@login_required +def update_district(id): + db = DB() + state_id = request.form.get('state_id') + district_name = request.form.get('district_Name', '').strip() + + if not is_valid_name(district_name): + db.close() + return json_response(ResponseHandler.invalid_name("district"), 400) + + try: + db.exec_proc('UpdateDistrictById', [id, state_id, district_name]) + log_action('Update District', f"Updated district id={id}, name={district_name}") + return json_response(ResponseHandler.update_success("district")) + except Exception as e: + app.logger.exception("UpdateDistrict failed: %s", e) + return json_response(ResponseHandler.update_failure("district"), 500) + finally: + db.close() + + +# ---------------- BLOCK ---------------- +@app.route('/add_block', methods=['GET', 'POST']) +@login_required +def add_block(): + db = DB() + + if request.method == 'POST': + district_id = request.form.get('district_id') + block_name = request.form.get('block_Name', '').strip() + + if not is_valid_name(block_name): + db.close() + return json_response(ResponseHandler.invalid_name("block"), 400) + + existing = db.fetch_one_proc('CheckBlockExists', [district_id, block_name]) + if existing: + db.close() + return json_response(ResponseHandler.already_exists("block"), 409) + + db.exec_proc('SaveBlock', [district_id, block_name]) + log_action('Add Block', f"Block added: {block_name} (district_id={district_id})") + db.close() + return json_response(ResponseHandler.add_success("block"), 200) + + districtdata = db.fetch_all_proc('GetAllDistricts') + blockdata = db.fetch_all_proc('GetAllBlocks') + db.close() + return render_template('add_block.html', districtdata=districtdata, blockdata=blockdata) + + +@app.route('/delete_block/', methods=['POST']) +@login_required +def delete_block(id): + db = DB() + try: + db.exec_proc('DeleteBlock', [id]) + log_action('Delete Block', f"Deleted block id={id}") + return json_response(ResponseHandler.delete_success("block")) + except Exception as e: + app.logger.exception("DeleteBlock failed: %s", e) + return json_response(ResponseHandler.delete_failure("block"), 500) + finally: + db.close() + + +@app.route('/update_block/', methods=['POST']) +@login_required +def update_block(id): + db = DB() + district_id = request.form.get('district_id') + block_name = request.form.get('block_Name', '').strip() + + if not is_valid_name(block_name): + db.close() + return json_response(ResponseHandler.invalid_name("block"), 400) + + try: + db.exec_proc('UpdateBlockById', [id, district_id, block_name]) + log_action('Update Block', f"Updated block id={id}, name={block_name}") + return json_response(ResponseHandler.update_success("block")) + except Exception as e: + app.logger.exception("UpdateBlock failed: %s", e) + return json_response(ResponseHandler.update_failure("block"), 500) + finally: + db.close() + + +# ---------------- VILLAGE ---------------- +@app.route('/add_village', methods=['GET', 'POST']) +@login_required +def add_village(): + db = DB() + + if request.method == 'POST': + block_id = request.form.get('block_id') + village_name = request.form.get('village_Name', '').strip() + + if not is_valid_name(village_name): + db.close() + return json_response(ResponseHandler.invalid_name("village"), 400) + + existing = db.fetch_one_proc('CheckVillageExists', [block_id, village_name]) + if existing: + db.close() + return json_response(ResponseHandler.already_exists("village"), 409) + + db.exec_proc('SaveVillage', [block_id, village_name]) + log_action('Add Village', f"Village added: {village_name} (block_id={block_id})") + db.close() + return json_response(ResponseHandler.add_success("village"), 200) + + blockdata = db.fetch_all_proc('GetAllBlocks') + villagedata = db.fetch_all_proc('GetAllVillages') + db.close() + return render_template('add_village.html', blockdata=blockdata, villagedata=villagedata) + + +@app.route('/delete_village/', methods=['POST']) +@login_required +def delete_village(id): + db = DB() + try: + db.exec_proc('DeleteVillage', [id]) + log_action('Delete Village', f"Deleted village id={id}") + return json_response(ResponseHandler.delete_success("village")) + except Exception as e: + app.logger.exception("DeleteVillage failed: %s", e) + return json_response(ResponseHandler.delete_failure("village"), 500) + finally: + db.close() + + +@app.route('/update_village/', methods=['POST']) +@login_required +def update_village(id): + db = DB() + block_id = request.form.get('block_id') + village_name = request.form.get('village_Name', '').strip() + + if not is_valid_name(village_name): + db.close() + return json_response(ResponseHandler.invalid_name("village"), 400) + + try: + db.exec_proc('UpdateVillageById', [id, block_id, village_name]) + log_action('Update Village', f"Updated village id={id}, name={village_name}") + return json_response(ResponseHandler.update_success("village")) + except Exception as e: + app.logger.exception("UpdateVillage failed: %s", e) + return json_response(ResponseHandler.update_failure("village"), 500) + finally: + db.close() + +# ----------------------------------- +# INVOICE ENTRY +# ----------------------------------- + +@app.route('/invoice_entry', methods=['GET', 'POST']) +@login_required +def invoice_entry(): + db = DB() + + if request.method == 'POST': + inv_no = request.form['Invoice_No'].strip() + inv_date = request.form['Invoice_Date'] + state_id = request.form['state'] + district_id = request.form['district'] + block_id = request.form['block'] + village_id = request.form['village'] + subcontractor_id = request.form['subcontractor'] + work_type_id = request.form['work_type'] + final_amount = request.form['Final_Amount'] + + # Check duplicate invoice number + exists = db.fetch_one_proc("CheckInvoiceExists", [inv_no]) + if exists: + db.close() + return json_response(ResponseHandler.already_exists("invoice"), 409) + + db.exec_proc("InsertInvoice", [ + inv_no, inv_date, + state_id, district_id, block_id, village_id, + subcontractor_id, work_type_id, final_amount + ]) + db.close() + + log_action("Add Invoice", f"Invoice: {inv_no}") + return json_response(ResponseHandler.add_success("invoice"), 200) + + # GET REQUEST → Load dropdown data + statedata = db.fetch_all_proc("GetAllStates") + districtdata = db.fetch_all_proc("GetDistrictDetails") + blockdata = db.fetch_all_proc("GetBlockDetails") + villagedata = db.fetch_all_proc("GetVillageDetails") + subcontractordata = db.fetch_all_proc("GetSubcontractorDetails") + worktypedata = db.fetch_all_proc("GetWorkTypeDetails") + invoicedata = db.fetch_all_proc("GetInvoiceDetails") + db.close() + + return render_template('invoice_entry.html', + statedata=statedata, districtdata=districtdata, + blockdata=blockdata, villagedata=villagedata, + subcontractordata=subcontractordata, + worktypedata=worktypedata, + invoicedata=invoicedata) + + +@app.route('/delete_invoice/', methods=['POST']) +@login_required +def delete_invoice(id): + db = DB() + db.exec_proc("DeleteInvoice", [id]) + db.close() + + log_action("Delete Invoice", f"Invoice ID: {id}") + return json_response(ResponseHandler.delete_success("invoice"), 200) + + +@app.route('/update_invoice', methods=['POST']) +@login_required +def update_invoice(): + invoice_id = request.form['invoice_id'] + inv_no = request.form['Invoice_No'].strip() + inv_date = request.form['Invoice_Date'] + state_id = request.form['state'] + district_id = request.form['district'] + block_id = request.form['block'] + village_id = request.form['village'] + subcontractor_id = request.form['subcontractor'] + work_type_id = request.form['work_type'] + final_amount = request.form['Final_Amount'] + + db = DB() + db.exec_proc("UpdateInvoice", [ + invoice_id, inv_no, inv_date, + state_id, district_id, block_id, village_id, + subcontractor_id, work_type_id, final_amount + ]) + db.close() + + log_action("Update Invoice", f"Invoice ID {invoice_id}") + return json_response(ResponseHandler.update_success("invoice"), 200) + + +# ----------------------------------- +# HOLD ENTRY +# ----------------------------------- + +@app.route('/hold_entry', methods=['GET', 'POST']) +@login_required +def hold_entry(): + db = DB() + + if request.method == 'POST': + invoice_id = request.form['invoice'] + hold_type_id = request.form['hold_type'] + remarks = request.form['Remarks'].strip() + + db.exec_proc("InsertHold", [invoice_id, hold_type_id, remarks]) + db.close() + log_action("Add Hold", f"Invoice ID: {invoice_id}") + return json_response(ResponseHandler.add_success("hold"), 200) + + invoicedata = db.fetch_all_proc("GetInvoiceDetails") + holdtypedata = db.fetch_all_proc("GetHoldTypeDetails") + holddata = db.fetch_all_proc("GetHoldDetails") + db.close() + + return render_template('hold_entry.html', + invoicedata=invoicedata, + holdtypedata=holdtypedata, + holddata=holddata) + + +@app.route('/delete_hold/', methods=['POST']) +@login_required +def delete_hold(id): + db = DB() + db.exec_proc("DeleteHold", [id]) + db.close() + + log_action("Delete Hold", f"Hold ID: {id}") + return json_response(ResponseHandler.delete_success("hold"), 200) + + +# ----------------------------------- +# PAYMENT ENTRY +# ----------------------------------- + +@app.route('/payment_entry', methods=['GET', 'POST']) +@login_required +def payment_entry(): + db = DB() + + if request.method == 'POST': + invoice_id = request.form['invoice'] + payment_date = request.form['Payment_Date'] + payment_amt = request.form['Payment_Amount'] + tds_amt = request.form['TDS_Payment_Amount'] + total = request.form['Total_amount'] + utr = request.form['utr'].strip() + + db.exec_proc("InsertPayment", [ + invoice_id, payment_date, payment_amt, tds_amt, total, utr + ]) + db.close() + + log_action("Add Payment", f"Invoice ID: {invoice_id}") + return json_response(ResponseHandler.add_success("payment"), 200) + + invoicedata = db.fetch_all_proc("GetInvoiceDetails") + paymentdata = db.fetch_all_proc("GetPaymentDetails") + db.close() + + return render_template('payment_entry.html', + invoicedata=invoicedata, + paymentdata=paymentdata) + + +@app.route('/delete_payment/', methods=['POST']) +@login_required +def delete_payment(id): + db = DB() + db.exec_proc("DeletePayment", [id]) + db.close() + + log_action("Delete Payment", f"Payment ID: {id}") + return json_response(ResponseHandler.delete_success("payment"), 200) + +# ----------------------------------- +# SUBCONTRACTOR MANAGEMENT +# ----------------------------------- + +@app.route('/add_subcontractor', methods=['GET', 'POST']) +@login_required +def add_subcontractor(): + db = DB() + + if request.method == 'POST': + subcontractor_name = request.form['subcontractor_Name'].strip() + mobile_no = request.form['Mobile_No'].strip() + + if not subcontractor_name: + return json_response(ResponseHandler.invalid_name("subcontractor"), 400) + + exists = db.fetch_one_proc("CheckSubcontractorExists", [subcontractor_name]) + if exists: + db.close() + return json_response(ResponseHandler.already_exists("subcontractor"), 409) + + db.exec_proc("SaveSubcontractor", [subcontractor_name, mobile_no]) + db.close() + log_action("Add Subcontractor", f"Name: {subcontractor_name}") + return json_response(ResponseHandler.add_success("subcontractor"), 200) + + subcontractordata = db.fetch_all_proc("GetSubcontractorDetails") + db.close() + return render_template('add_subcontractor.html', subcontractordata=subcontractordata) + + +@app.route('/delete_subcontractor/', methods=['POST']) +@login_required +def delete_subcontractor(id): + db = DB() + db.exec_proc("DeleteSubcontractor", [id]) + db.close() + log_action("Delete Subcontractor", f"ID: {id}") + return json_response(ResponseHandler.delete_success("subcontractor"), 200) + + +@app.route('/update_subcontractor', methods=['POST']) +@login_required +def update_subcontractor(): + subcontractor_id = request.form['subcontractor_id'] + subcontractor_name = request.form['subcontractor_Name'].strip() + mobile_no = request.form['Mobile_No'].strip() + + db = DB() + db.exec_proc("UpdateSubcontractor", [subcontractor_id, subcontractor_name, mobile_no]) + db.close() + log_action("Update Subcontractor", f"ID {subcontractor_id}") + return json_response(ResponseHandler.update_success("subcontractor"), 200) + + +# ----------------------------------- +# WORK TYPE MANAGEMENT +# ----------------------------------- + +@app.route('/add_work_type', methods=['GET', 'POST']) +@login_required +def add_work_type(): + db = DB() + + if request.method == 'POST': + work_type_name = request.form['worktype_Name'].strip() + + if not is_valid_name(work_type_name): + return json_response(ResponseHandler.invalid_name("work type"), 400) + + exists = db.fetch_one_proc("CheckWorkTypeExists", [work_type_name]) + if exists: + db.close() + return json_response(ResponseHandler.already_exists("work type"), 409) + + db.exec_proc("SaveWorkType", [work_type_name]) + db.close() + + log_action("Add Work Type", f"Name: {work_type_name}") + return json_response(ResponseHandler.add_success("work type"), 200) + + worktypedata = db.fetch_all_proc("GetWorkTypeDetails") + db.close() + return render_template('add_work_type.html', worktypedata=worktypedata) + + +@app.route('/delete_work_type/', methods=['POST']) +@login_required +def delete_work_type(id): + db = DB() + db.exec_proc("DeleteWorkType", [id]) + db.close() + log_action("Delete Work Type", f"ID: {id}") + return json_response(ResponseHandler.delete_success("work type"), 200) + + +@app.route('/update_work_type', methods=['POST']) +@login_required +def update_work_type(): + work_type_id = request.form['worktype_id'] + work_type_name = request.form['worktype_Name'].strip() + + if not is_valid_name(work_type_name): + return json_response(ResponseHandler.invalid_name("work type"), 400) + + db = DB() + db.exec_proc("UpdateWorkTypeById", [work_type_id, work_type_name]) + db.close() + log_action("Update Work Type", f"ID {work_type_id}") + return json_response(ResponseHandler.update_success("work type"), 200) + + +# ----------------------------------- +# EXCEL BULK UPLOAD (INVOICE) +# ----------------------------------- + +@app.route('/upload_excel', methods=['GET', 'POST']) +@login_required +def upload_excel(): + if request.method == 'POST': + file = request.files.get("file") + if not file: + flash("No file selected.", "danger") + return redirect(url_for("upload_excel")) + + filepath = os.path.join(app.root_path, "uploads", file.filename) + os.makedirs(os.path.dirname(filepath), exist_ok=True) + file.save(filepath) + + workbook = openpyxl.load_workbook(filepath) + sheet = workbook.active + + db = DB() + for row in sheet.iter_rows(min_row=2, values_only=True): + inv_no, inv_date, state, district, block, village, subcontractor, work_type, amount = row + db.exec_proc("InsertInvoiceBulk", [ + inv_no, inv_date, state, district, block, village, subcontractor, work_type, amount + ]) + db.close() + + log_action("Bulk Invoice Upload", f"File: {file.filename}") + flash("Excel uploaded successfully!", "success") + return redirect(url_for("invoice_entry")) + + return render_template('uploadExcelFile.html') + + +# ----------------------------------- +# REPORTS +# ----------------------------------- + +@app.route('/report', methods=['GET', 'POST']) +@login_required +def report(): + db = DB() + statedata = db.fetch_all_proc("GetAllStates") + subcontractordata = db.fetch_all_proc( "GetSubcontractorDetails", + ["1=1", "{}"] ) + db.close() + return render_template('report.html', statedata=statedata, subcontractordata=subcontractordata) + + +@app.route('/view_report', methods=['POST']) +@login_required +def view_report(): + state_id = request.form.get("state", "") + subcontractor_id = request.form.get("subcontractor", "") + + db = DB() + reportdata = db.fetch_all_proc("GetReportData", [state_id, subcontractor_id]) + db.close() + + log_action("Generate Report", f"State {state_id}, Subcontractor {subcontractor_id}") + return render_template("report_table.html", reportdata=reportdata) + +if __name__ == "__main__": + app.run(host='0.0.0.0', port=5000, debug=True) diff --git a/templates/base.html b/templates/base.html index bb52864..aa8b235 100644 --- a/templates/base.html +++ b/templates/base.html @@ -24,7 +24,7 @@ diff --git a/templates/index.html b/templates/index.html index b6e633b..dd31318 100644 --- a/templates/index.html +++ b/templates/index.html @@ -41,7 +41,7 @@ diff --git a/templates/uploadExcelFile.html b/templates/uploadExcelFile.html index 47c3a5b..b8569b9 100644 --- a/templates/uploadExcelFile.html +++ b/templates/uploadExcelFile.html @@ -11,7 +11,7 @@

Upload Excel File

-


diff --git a/uploads/AARHAM INTERNATIONAL_shamli_31.07.25.xlsx b/uploads/AARHAM INTERNATIONAL_shamli_31.07.25.xlsx index 9b2a6d4c8e9ebedaf1c25e071e7a4d70ab95af50..fb779b0d2fe9ed4ced38b8383f4bce2ec4cf917e 100644 GIT binary patch delta 16618 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 BtKk3u diff --git a/uploads/Aiva Engineering Pvt. Ltd. Shamli _31.07.25.xlsx b/uploads/Aiva Engineering Pvt. Ltd. Shamli _31.07.25.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..683289c14d049da2b3ec99e1e4cefdd5b3bbbc81 GIT binary patch literal 19868 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 p*W9d literal 0 HcmV?d00001 diff --git a/uploads/Ajay Wankhede.xlsx b/uploads/Ajay Wankhede.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..935837bd8ff6fcc41e2552c422e63b229a48e554 GIT binary patch literal 10955 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 Z1EQh~#M|2i0ASxf{%;!2LH*mW{{u{>WOx7o literal 0 HcmV?d00001 diff --git a/uploads/BG Construction.xlsx b/uploads/BG Construction.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..443f3e29acf75570c26c11961d82aa3e6fd9b30e GIT binary patch literal 11055 zcmeHt1yfyF*7n6ANN{&|_u%ew2~Kc#_n-lS1$PM!!GgQHySoN=m%w+sr|0YL^t``d z=G>}t>Qw*CQ(U1TD8UPktThz|h*~Hda z@4bh;iPHy0cN=Ts97u5LEC4v@{r_G6#XC?MKdjKrj4Xa9^(?x>AhS{>1j}&}(2q*1 zEYQ&t*H>($ooQk5ni=|pERv03$yJFuzT(AtF=}3AYf~5Sxvv?B5bi(Fp{k3=#njt> zOwo>o6YHp@d6tEaC&YrIrx$6O21s_O?*_7qZ3@ej;+kV%3ixejEcL6QtoJn{6l)dn z3@mqUD5$NWa1VW(M&6!8o3XT@@zTB8W{`#qC-qvvbk)sQBGFKxF$6X`J|@YwIZ-#T z&FUM0uQ3Nlw<4{MtwT4raS_V1<5qnOyDrx1i?*U`_tx?DY^VMbey#M_#ED_9$Do}l zr=JMZEe%v5AJ?vyNxnlo=Imtbk2wL%)&VpDCuu z!$lk5Q#df#z}=yEVubH)TQCW;11Wz0ihhf7&~()yf;`wkLjE!2WMkmqo!9Ziu6E$* zMdE=k>kBjh@cIe?Q2Lu$)~Yg-U4wK@4rF!kAhXnSG_iJKV*Ks?KXd#qw!y!AdTFe@ zVmC8F@R`(e$iUs~YBaKltedb@Gs$}&Kk1dXwUN2xc&qJH_{i^Z10f`RTYa8~mRI>A z4+ltYx7bU=QPJO#)wz`gCp|j2z|c}UCQ3MzZuX$K&fd)4rbx&LCK>!J^&n<5M9}Ea5Dp~_E)IW_xxfEm84gvtM08!an(9XD9Gr8G0 zS{d5eS^dUarK;L?CEUn9dKRw`TN#EWY`rZz+Jg0W@lW>OS^w#aHWY za*Q^LY9-d=5}^cMeMIXc-bQ2XHmO=(**Rt{h%Vm2&XILIOd3!4hk}?XEVH$`v30~8 zb{0kLQ@XFN7kfl|R*Y(j>EGD_=1)rB^Nzu%kFUZw^8~jEY&wCClgMzg7uL5KS$X?( zGA1f%m?D{r$a9CueenNpPtOcO@v>&0%n5MG*Wy-7nGpv z`wFb!8SAu=`a-i0ufoAsfx3pJ=>bE3Mu3pJF40X~rc4J$eim+i>YtXcm!4EwaHoA> znRiq!olC2Fq$Tf}f+;seIzv^lWA$huim+;}&!NFUq>Z-P!aeXHVGhMGs5A@(>+$w& z#->NxF0CT6#CusD$N3J(pg!=A!llfye8h@B5n~cK zKl9FP>p$d%oF^$ea-c_?Z&HYsWg5&JrZ>SMbRBWg{P^&Vxwn2$X?$BW1mkk+Sv3(}Gh3;a#J zGw+2mzC5CFZ|LR%H=8%zkbbDL<>KN<-APQ$ga4F!40x@>+>-LM+o5Bxy-|sWTvd6f z5WnaMJRhcmFFlnDlA-$a{=Sj%!%(2@jtNsgj&q+Mp{o+RaGO!qj4Ptqp?2R)B?Fl& zDxC|JMeLZ4D$xxo>`T;<%nx@$f#p;Wyy5m z8oVu9!rkhDuTx9lzLjT=ldErzk@v^i2Hwd#)(?CF#<|fiELu*b!MKu$DNne%&xrrY zHvI+SldeEE*#sgmTmUQ>$Tt7QVSlyIfAbj_D7*w&_<#3R3Y3@aVMcC+e+glBOLN6Q zS#)M1Jytz>3p-dtvrI|C=5xJ{N89v4V@{R{!Y>ZTd=+!6$tl>!+VSpqQ8tU=kQOOBBQmPYLqd@EceI`2hk9%qgoRHiCQnBmCsbF@? zF=iK5OQ#8fA&@^GuG#T>{G@VR7En`PPn=3)y8GHFx_k@$HNb;t@(Kq|nh((fFu6ZN zLU-ROehYiq@@y*aF=o}7`-rfMUm{Cb%)t-xmBb+fl0?2Vu}-@=Db1>9o6aInLp1Hn zm-NHeXQn%Y{j=+!lm4eWZy=2AxCBK*_5=U`Ht3B%+_{sviHWll)9(+K-~4)d+~Aj7 zX5`>Ave9=MZPg3@&H*A?W%O(x@kZy&`q4Yz^x-TovZuOz4X|d|jje%f@Y{MiV#3PZ zYb_tdELABOq=7e*$%-jZ8f7hP_ZbTWqZkV>K(4hQE`+ha_IQ4nHa9ySQUzoZXFKqe zwdk2C?-)aAHB6LdcXH)dYPq-64iA(ue9n22nn#J+_Q?yf+>eP~^ujKnPx$mL1`jb( zP=tP_%jjo0(8{gA!sD$1eDhK%gvB*33cM6a(#JX1^tn@AB+b?Ek z^wa$9%2P60+j0k@wP$TNFnR^mP-U6ueS&TTV2||l zZJMp?l*JWZ`>??O33YM!D-illX^3-XY+Q16j@ z%a<1gL7BLTx+QAd^2#=+T@xro!&&=k>#8TrKo?a-^Joo2L5HMbk4l9eB$`?G-ojFB zBf&hV9rso}{A2y;`%SutM}w~ELa=V{D!|@eu?dirYYgwF>xd!MTueaZ33Wpzbwmh# z=+j$fr81)pPZK^JxOVKWjS+*Wxvufxr42Eh%jmbj#I;SD!_;S@-&E&!{fSRG`m)T4 z9HeKm2@_3mNXQM(e$-s{)Z30V29Ad=6?RN&v)&djt&++XQIDiVeD55b_X8j3+~n@{ z(ZfSepj}Xq(dXs)Hch0DwR>FD7p?RlAMbDZ$yB4F>T@cS#H-r5+``nuq_j^wB6 z{$3B{SC%3sj?2!pymrFX-skykL!Y@YCK(dbw-O|%v>rfIU(R_BSx7o4@LUbD1>yx- z33GNqXyT2#bqG z2^ZuLpnX+c*dN37^E;CLI07QUD{+iUgjgTL!&;e;cUO{INotcEsn_=v+HN@mZn* zsK3Ppl8n}lk$fKsl8e@k@_&mx+bG}mR8ld5U{<5`u`6YC>(3Y&2#cvD&1J%a)c&v? znU)g6k4f;y!h*n!kYph-5@$S3x=L#e@=WrK^2~PFDSC_=-4-*y7)ov}7v3sSttL*g zBnIo(Ck}jzBoA1%j_C;2(;`2Q)YBxV$uPHxako!fFdwx~{lJ7z=p9z4g(lAtFjhOA z>R#;6W^0!QUpL%Y;7>?ogKO?+IxUpslm@+|v%o&FHfOku_c> z5ApHT8h78xZd&N8BIoFWS=EuT&uIhfTg%4z*kJs8Q7$wCx7T6Xz2iOM~G3w`={c(HZD5t$~ zY6E!d_a=mQID@5p@Q#M5yN9?>B1wob2 zZmt@spJSD1XpTyCOASl)OMU;0WJlV9-6l!Jki5q9eDO@RD1SP13R=Ji&;mY`u`EVz zOxKWCcXTIs7U}7J79uRN&n4NtWJ&MGyVP+Vza#mn-Q+ieR!;WX{Nj&svhQwy{>eXH zG$54vJa8biqc$)m8ImoQC3d}bE?_ok0+B?~us>v0y|mOc?_XM>-hfPXop-@Q^5jg*|?jXb@~_z0ca zfV4bar7G(Ln>vtsNN(J(QuY$QBd0*-jr0Qr#X}>ru7stbj3vrvv(mii#IJhb+xyFl z`$>CPCRk>91&Is4#YF$)$xbZfHU$^}ppW>slHKn->1=LdW5V?N{dbBy)*KDT<3ex8 zdK5%(a(m|3j-puG7`KjFB{$B9$FHqBR#szUjcvh01E=7*0aEAXCyChc$4?1CAhupd z!I9S-5KU5zE|8V&lBZeAXt^SWOTM%g7T#t0cwRYQOtmI^N+!d1#U|>tDP8iXM=T_h zPbd0XaZ|H zU#E=dm+B(>irJ4(5V)3%NtX{S!zPQp*9|aK^7_b1LUxRpAmi)xtwnK@B}N1>f_h!O zxRN5fa=W`qCzyRKQNi|BbU1&{F+pJgC zMmc?NjY+4=gHFpSV%R_}uY5g-BAx!5qn}#sbyJ04=Ij9p1$7I&M+vsk28c?Jv)Rq+ zXR5=PYZH1Osv8N4qk`tM-uqSr6CpHhh{JyurV-HT4#_YrG&`ElLf6yoo|iq*RjR+X zQWBGPYzSrys-9F16V3{;WRAm!TCia2Ez0Qi9e$)&dj zdl3{TV5=I!sd+YfmMNxTQSE|JDfJuP(;&*I-hUVHe<>gft7B%(OZcE4s(}Z*bvNu8 zl&gED%bMjPX3FIEdO1J13Tfx}z21N5)~jl)rIodXp-@pdosH6a{rMAXO|Sjs{P2S7 zV20|VtEc_>VK}M%^@8`NVrvD1sqN$COQ-{yb?K9<8=bWokUt=SPz>Bp9Ft(_Oztk?Z7R&{90J@i zsY6lL^B!=;R%JeL@20=^%=m&Nzrg{%OSBU{O*0R*&m7y_E`1aUt7(?xiFxY%!Jf{? zuDV}eZ;k(?4HC!O5{LM<{&o~u*(!j~AQ<)y0@iB4XN(sev5XQe>(ltOg*48$5a<$W zt!QyOk-g)gRaDPzLxgT%PS8+M+80mpylK=Xdt(08aCb!XR-WdWD;@T+rA~7ms!qDI z_peXIrqj9t-%ZA>Qm(Z6ZfJ5UNzu`WeTAZUr2tahY_$=$qnXQRwA$_sI!!}vN; z_M~v-9u+yQVAfdLl==-GD)zyhMki7C*8#qjY(&XNu|T2Y%K|g-8alO7#Qxmw;STEyCK3$!ojBa@q0!Xg*7QH z5#?{jQY1X%*uJHJDH$@c5l10<_2ViZ|zZ*?_((G$W z37KJ4Y&2}db7VV=e2ZcwPD<6_Pf4jV(euvsq1F<%o|cT=>H%#ZyL;Xpx{+)~8!Jbp z!4*e3)AruYAQ1L65;V0g-(YKgWhn-49tnYdckljwsCm z+4nB51rE&U<$`IfLLp7<|hyx~f&ImyPET^yn1Ba@1BMA(Xpsh!zJjC{$( z5Vx(0t6W60Lr%~ZKgMU~nwAVr)c0o%N7u*_`

O*48&}I9(^`IN$X12iiQ_rmAl)+UGepnTib;IF^HwrMq@`I~ zr6aC4wT|`Lu$B}iKDnAjFbOj6it6!xX8k0lGt%Fs`Dok*xU+1od;O19$FRzkN_{8* zKmrc{0F^#|OH-YkJ*-Wfe#=cqG;Qp*xRGCcrhbM{C!BU4i0DdD8^E>Z+vFvi-p>l6G4_O6v1t@R3W@k4h0Uy#3L&!VRwt`*FbB(3p zsEH&85v}{RCqMQ@9r=qzq}=gTr*q zSNs0X_yPD1%Ue~m`ijGB{ZhjR0t-50w?eo6-j#N9625NIxRA`%5O2^>k8Bn;J^D7%ZqUVnEdir1 z7wh447*q!wRE)qOd#VApF0}AFd(rWb*CvNA+uz82r}oElOLE(#@pRhW_dDWdzJ1hb zx^!DaN~0pVXP=*rUdjSh2I5%ua)pii98`X)k=&zQq3@a>S(acXdZJh0!sUmX&&AW> z@p^uMeFnec3l3IpT_2~aD0doA&c`Zt@REq)PHon;zyB1V94kX3G4ILlKprGKD|v}N z&fKF38^{VYuNrE|-T}Tev^Q|6f9@tq`GN12Gt z4B|YwfVp?*s_Q;2LMJI)!L>rp&AdHD_*k%3a9|4=S-V`pC5D_ro19COxer<5V|lPV~L#Im-_6q6@@id??#$4^Y@aOtqBlQio!F10cgEf-)lg8AUKji_frkDn*^TEmf^NFm330l!B9iWu$#!! zOOYOhKz8(+EPX|MD`MH~?iX%4j)eixu<0zs+z`ufQJi~z9bFJhQcTRT8#Qx&2vAS3 z8{vLHsuaIEg!uV<%qh6uv<$y#xcaTAiJ!iug}cMeYhW1@eGEU}C%vElU0B^M!{_gZumfb%%>i=&Utr zPacMTcvm)a?7*oR>sHf?x&%OvK&yysIxC#2&04HH-j6$0sxahQq0QZn6N~a{6CxIU z7t!S^5)BM`uiu9Lb}~NfskeVXr_C2g#RAabIE42w7K!;hvil_Ialc)+!-7g)7zKr2 z*fE{#h??@ccFWYAw!Bciq|k2jAdjzMFwtHK{@Ud0gckB;Pv^DpgJ-(^ZuY6U{`S#h zMnG3D?DzPxPwm>b;stZmz3L(Q#C42b`?cwJ{zn=P(+&*nK}%}Qvk0Z!_N{4&>+OhJ zLUH`umzF)1AL?6-W4d4ngjwaJb(f3lqSxRh0)C*$EYwmQ??P#u`ToaD$asxC&I(ju zRs>ZI(f@G8<_3-?#wyN^7Pe-;d*n}`F3=J)y3f~|SAFrN8tI^gvC#v+HzF1u#Kf_u zm!DR87}U_xdJFJgea4z%CM%`&(|Bev)c5jJ*pYqUKCHFm5i*u-)yebsn(fMsET^%cM-c)(SGCfE%DMO zpp|f{HIqvUiX^!{iFGvamm>@!)Ml*fP(J@EiOEmE-IE%D{x#y7oM+7xxF2S!rM5?= zttjCd`7FvYTk6u3^Y9|pnVrL<@?<)mPWRzLu71fhXoOI!Fio{4+{9@B$S0FoxteY< z1V0Op=kZa)Yd?ZE^Q6FpKtz_KdAA8BZOuXrhvp}Sy7bcg@?hdvT;`+k8boO?W30)b zYOAdL&3s`?Y;!z~4QC15+?Hp*?l38gVvJuCp6!=&`$Tkdr?b;;F5aoGi+-Kyulc5J@GyIuvLg{Ag4Wd0@;f6qk%h-S zxP3KBHdqe?LM6=Bu(+jSJ5yYw$9PP*h**W4T~Z06s|}Ixd?r|~8v)h9Eu~D-(SokT zFl_4A5M-f&I~IJAg*?Bp4nCVV$1spyhGfn4>P1TeJMG$5n1w{dMK#c8-lpO8sotTX598Lb1tNCB! z17x)kv3iQ##OS^2^3Oc|i3qWx5dON0*x+N2V`vLwC zqP>;qQ8yP1@4(6`Wu7py0C1%i6rhdcwH9O7J9LfyczxAeVo9$Gb6p)h6CIT`YRxnGkX#SLCe}n!_}c<6y`;7!l~gnp&BfCWgCJ~ZM!?)nn+A|yEiAh zsPcpg!~VIWKPLp0YL~&on-;4mIeJiDYAU*iqA`Cup7KEQ?s4%a;|~KRBDUv{~#YRGUc-TRmzFt*sE@MJ^y`@!T2nWnjpF1SQI`kpo zNJUMg15WLs#cW`HGQ6{|yN!Czy$v#Sy394@JG9T0(91IswTe=jg1yfX41nxd>*Qb~ zp1U!tJ8>pS2&}z65`A!kO?-#F0f-k%PRi+bJ;OW~1I!l++{^xUyiQ|Wx+#i}R9*zl z#$7Q%DmUFhX5LcG?pCn6^Bw~4m*d# u0Du-50Pqh+{T2Rq7x-8B62)KOe>g-XSt!uy0swD7KR*y@r%?a)@BabaHG}a0 literal 0 HcmV?d00001 diff --git a/uploads/Copy of Janardan organic food mill - MZN (1).xlsx b/uploads/Copy of Janardan organic food mill - MZN (1).xlsx index 5f013f4c465911e0126c56c071f576174a1d5c13..a612575b85ab2a317e3d8bd1728e33de437001ef 100644 GIT binary patch delta 136462 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 G@&5qg@f#xm delta 132489 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 dtxT*P{&Aw