diff --git a/controllers/hold_types_controller.py b/controllers/hold_types_controller.py index 18c48f2..52a7f65 100644 --- a/controllers/hold_types_controller.py +++ b/controllers/hold_types_controller.py @@ -1,7 +1,7 @@ from flask import Blueprint, render_template, request, jsonify, redirect, url_for from flask_login import login_required from model.HoldTypes import HoldTypes -from model.GST import GST +# from model.GST import GST hold_bp = Blueprint("hold_types", __name__) @@ -58,13 +58,13 @@ def delete_hold_type(id): # ---------------- GST ---------------- -@hold_bp.route('/unreleased_gst') -@login_required -def unreleased_gst(): +# @hold_bp.route('/unreleased_gst') +# @login_required +# def unreleased_gst(): - data = GST.get_unreleased_gst() +# data = GST.get_unreleased_gst() - return render_template( - "unreleased_gst.html", - data=data - ) \ No newline at end of file +# return render_template( +# "unreleased_gst.html", +# data=data +# ) \ No newline at end of file diff --git a/logs/activity.log b/logs/activity.log index 714474b..ee65b6d 100644 --- a/logs/activity.log +++ b/logs/activity.log @@ -9761,3 +9761,14 @@ Timestamp: 2026-04-06 10:37:55 | User: Unknown | Action: Delete Payment | Detail Timestamp: 2026-04-06 10:38:07 | User: Unknown | Action: Delete GSTRelease | Details: Timestamp: 2026-04-06 10:38:07 | User: Unknown | Action: Delete GST Release | Details: Timestamp: 2026-04-06 10:39:39 | User: Unknown | Action: Get hold type | Details: +Timestamp: 2026-04-06 12:03:44 | User: Unknown | Action: Login | Details: +Timestamp: 2026-04-06 12:12:33 | User: Unknown | Action: Add Hold Type | Details: +Timestamp: 2026-04-06 12:12:42 | User: Unknown | Action: Edit Hold Type | Details: +Timestamp: 2026-04-06 12:12:46 | User: Unknown | Action: Delete Hold Type | Details: +Timestamp: 2026-04-06 12:14:00 | User: Unknown | Action: Add Hold Type | Details: +Timestamp: 2026-04-06 12:14:07 | User: Unknown | Action: Edit Hold Type | Details: +Timestamp: 2026-04-06 12:14:10 | User: Unknown | Action: Delete Hold Type | Details: +Timestamp: 2026-04-06 12:17:03 | User: Unknown | Action: Login | Details: +Timestamp: 2026-04-06 12:17:12 | User: Unknown | Action: Add Hold Type | Details: +Timestamp: 2026-04-06 12:17:21 | User: Unknown | Action: Edit Hold Type | Details: +Timestamp: 2026-04-06 12:17:30 | User: Unknown | Action: Delete Hold Type | Details: diff --git a/model/GST.py b/model/GST.py index 71da41e..fbb030a 100644 --- a/model/GST.py +++ b/model/GST.py @@ -1,51 +1,51 @@ -from model.ItemCRUD import ItemCRUD -from model.Utilities import ItemCRUDType +# from model.ItemCRUD import ItemCRUD +# from model.Utilities import ItemCRUDType -class GST: +# class GST: - @staticmethod - def get_unreleased_gst(): - # Use ItemCRUD for Invoices - invoice_crud = ItemCRUD(itemType=ItemCRUDType.Invoice) - invoices_rows = invoice_crud.GetAllData(storedproc="GetAllInvoicesBasic") +# @staticmethod +# def get_unreleased_gst(): +# # Use ItemCRUD for Invoices +# invoice_crud = ItemCRUD(itemType=ItemCRUDType.Invoice) +# invoices_rows = invoice_crud.GetAllData(storedproc="GetAllInvoicesBasic") - if not invoice_crud.isSuccess: - return [] # Could also log invoice_crud.resultMessage +# if not invoice_crud.isSuccess: +# return [] # Could also log invoice_crud.resultMessage - invoices = [ - dict( - Invoice_No=row[1], - GST_SD_Amount=float(row[2]) if row[2] is not None else 0 - ) - for row in invoices_rows - ] +# invoices = [ +# dict( +# Invoice_No=row[1], +# GST_SD_Amount=float(row[2]) if row[2] is not None else 0 +# ) +# for row in invoices_rows +# ] - # Use ItemCRUD for GST Releases - gst_crud = ItemCRUD(itemType=ItemCRUDType.GSTRelease) - gst_rows = gst_crud.GetAllData(storedproc="GetAllGSTReleasesBasic") +# # Use ItemCRUD for GST Releases +# gst_crud = ItemCRUD(itemType=ItemCRUDType.GSTRelease) +# gst_rows = gst_crud.GetAllData(storedproc="GetAllGSTReleasesBasic") - if not gst_crud.isSuccess: - return [] # Could also log gst_crud.resultMessage +# if not gst_crud.isSuccess: +# return [] # Could also log gst_crud.resultMessage - gst_invoice_nos = { - g[2] # Invoice_No is at index 2 - for g in gst_rows - if g[2] - } +# gst_invoice_nos = { +# g[2] # Invoice_No is at index 2 +# for g in gst_rows +# if g[2] +# } - gst_basic_amounts = { - float(g[3]) # Basic_Amount at index 3 - for g in gst_rows - if g[3] is not None - } +# gst_basic_amounts = { +# float(g[3]) # Basic_Amount at index 3 +# for g in gst_rows +# if g[3] is not None +# } - # Filter unreleased invoices - unreleased = [] - for inv in invoices: - match_by_invoice = inv['Invoice_No'] in gst_invoice_nos - match_by_gst_amount = inv['GST_SD_Amount'] in gst_basic_amounts +# # Filter unreleased invoices +# unreleased = [] +# for inv in invoices: +# match_by_invoice = inv['Invoice_No'] in gst_invoice_nos +# match_by_gst_amount = inv['GST_SD_Amount'] in gst_basic_amounts - if not (match_by_invoice or match_by_gst_amount): - unreleased.append(inv) +# if not (match_by_invoice or match_by_gst_amount): +# unreleased.append(inv) - return unreleased \ No newline at end of file +# return unreleased \ No newline at end of file diff --git a/templates/add_purchase_order.html b/templates/add_purchase_order.html deleted file mode 100644 index 4e57849..0000000 --- a/templates/add_purchase_order.html +++ /dev/null @@ -1,147 +0,0 @@ -{% extends 'base.html' %} -{% block content %} - - Manage Purchases - - - - -
- - -
- - - - - - - - - - - - -{% endblock %} diff --git a/templates/add_work_order.html b/templates/add_work_order.html deleted file mode 100644 index ad5ad38..0000000 --- a/templates/add_work_order.html +++ /dev/null @@ -1,137 +0,0 @@ -{% extends 'base.html' %} -{% block content %} - - Manage Work Order - - - - - - - -
- - -
-
- -
-{# display data #} - - - - - - - -{% endblock %} \ No newline at end of file diff --git a/templates/edit_grn.html b/templates/edit_grn.html deleted file mode 100644 index 22f0200..0000000 --- a/templates/edit_grn.html +++ /dev/null @@ -1,39 +0,0 @@ - - -Edit GRN - - - -

Edit GRN

-
- -

- - -

- - -

- - -

- - -

- - -

- - -

- - -

- - -

- - -
- - diff --git a/templates/edit_purchase.html b/templates/edit_purchase.html deleted file mode 100644 index bfa090a..0000000 --- a/templates/edit_purchase.html +++ /dev/null @@ -1,47 +0,0 @@ - - - - Edit Purchase - - - -

Edit Purchase Order

-
- -

- - -

- - -

- - -

- - -

- - -

- - -

- - -

- - - -

- - -

- - -

- - -
- - diff --git a/templates/grn_form.html b/templates/grn_form.html deleted file mode 100644 index eae3847..0000000 --- a/templates/grn_form.html +++ /dev/null @@ -1,77 +0,0 @@ - - - - GRN Management - - - -

Add GRN

-
- -

- - -

-{# #} -{# #} - - -

- - -

- - -

- - -

- - -

- - -

- - -

- - -
- -

All GRNs

- - - - - - {% for grn in grns %} - - - - - - - - - - - - - - {% endfor %} -
IDDatePurchase IDSupplierItemQtyUnitRateAmountRemarksActions
{{ grn[0] }}{{ grn[1] }}{{ grn[2] }}{{ grn[3] }}{{ grn[4] }}{{ grn[5] }}{{ grn[6] }}{{ grn[7] }}{{ grn[8] }}{{ grn[9] }} - Edit - -
- -
-
- - diff --git a/templates/index.html b/templates/index.html index 809a639..e2ab991 100644 --- a/templates/index.html +++ b/templates/index.html @@ -133,30 +133,7 @@

Hold Types

Go ➜ -
-

Work Order

- - Go ➜ -
- - - + diff --git a/templates/purchase_order.html b/templates/purchase_order.html deleted file mode 100644 index 33b3c30..0000000 --- a/templates/purchase_order.html +++ /dev/null @@ -1,10 +0,0 @@ - - - - - Purchase Order - - - - - \ No newline at end of file diff --git a/templates/purchase_order_report.html b/templates/purchase_order_report.html deleted file mode 100644 index aacea0c..0000000 --- a/templates/purchase_order_report.html +++ /dev/null @@ -1,205 +0,0 @@ - - - - Purchase Order Report - - - - - -

Purchase Order Report

- -
-
- - -
- -
- - -
- - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/templates/work_order_report.html b/templates/work_order_report.html deleted file mode 100644 index 80935e9..0000000 --- a/templates/work_order_report.html +++ /dev/null @@ -1,209 +0,0 @@ -{% extends 'base.html' %} -{% block content %} - - Work Order Report - - - - - -

Work Order Report

- -
-
- - -
- -
- - -
- - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -{% endblock %} diff --git a/unusedCode/unused.py b/unusedCode/unused.py deleted file mode 100644 index e7c9245..0000000 --- a/unusedCode/unused.py +++ /dev/null @@ -1,482 +0,0 @@ - -logging.basicConfig(level=logging.DEBUG) - - -@app.route('/add_purchase_order', methods=['GET', 'POST']) -def add_purchase_order(): - connection = config.get_db_connection() - cursor = connection.cursor(dictionary=True) - - if request.method == 'POST': - # Fetch form fields - purchase_date = request.form.get('purchase_date') - supplier_name = request.form.get('supplier_name') - purchase_order_no = request.form.get('purchase_order_no') - item_name = request.form.get('item_name') - quantity = request.form.get('quantity') - unit = request.form.get('unit') - rate = request.form.get('rate') - amount = request.form.get('amount') - GST_Amount = request.form.get('GST_Amount') - TDS = request.form.get('TDS') - final_amount = request.form.get('final_amount') - LogHelper.log_action("Add purchase order", f"User {current_user.id} Added puirchase Order'{ purchase_order_no}'") - # Insert into database - insert_query = """ - INSERT INTO purchase_order ( - purchase_date, supplier_name, purchase_order_no, item_name, quantity, unit, rate, amount, - GST_Amount, TDS, final_amount - ) VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s) - """ - cursor.execute(insert_query, ( - purchase_date, supplier_name, purchase_order_no, item_name, quantity, unit, rate, amount, - GST_Amount, TDS, final_amount - )) - connection.commit() - - # ✅ Always fetch updated data - cursor.execute("SELECT * FROM purchase_order") - purchases = cursor.fetchall() - - cursor.close() - connection.close() - - return render_template('add_purchase_order.html', purchases=purchases) - - -# Show all purchases -@app.route('/purchase_orders') -def show_purchase_orders(): - connection = config.get_db_connection() - cursor = connection.cursor(dictionary=True) - cursor.execute("SELECT * FROM purchase_order") - purchases = cursor.fetchall() - cursor.close() - connection.close() - return render_template('add_purchase_order.html', purchases=purchases) - - -# Delete purchase order -@app.route('/delete_purchase/', methods=['POST']) -def delete_purchase(id): - connection = config.get_db_connection() - cursor = connection.cursor() - cursor.execute("DELETE FROM purchase_order WHERE purchase_id = %s", (id,)) - connection.commit() - cursor.close() - connection.close() - LogHelper.log_action("Delete purchase order", f"User {current_user.id} Deleted puirchase Order'{ id}'") - return render_template(('add_purchase_order.html')) - - -# Edit purchase order (form + update logic) -@app.route('/update_purchase/', methods=['GET', 'POST']) -def update_purchase(id): - connection = config.get_db_connection() - cursor = connection.cursor(dictionary=True) - - if request.method == 'POST': - # ✅ Form submitted - update all fields - data = request.form - cursor.execute(""" - UPDATE purchase_order - SET purchase_date = %s, - supplier_name = %s, - purchase_order_no = %s, - item_name = %s, - quantity = %s, - unit = %s, - rate = %s, - amount = %s, - GST_Amount = %s, - TDS = %s, - final_amount = %s - WHERE purchase_id = %s - """, ( - data['purchase_date'], data['supplier_name'], data['purchase_order_no'], data['item_name'], - data['quantity'], - data['unit'], data['rate'], data['amount'], data['GST_Amount'], data['TDS'], data['final_amount'], - id - )) - connection.commit() - cursor.close() - connection.close() - LogHelper.log_action("Delete purchase order", f"User {current_user.id} Deleted puirchase Order'{ id}'") - return redirect(url_for('show_purchase_orders')) - - # Show edit form - cursor.execute("SELECT * FROM purchase_order WHERE purchase_id = %s", (id,)) - purchase = cursor.fetchone() - cursor.close() - connection.close() - return render_template('edit_purchase.html', purchase=purchase) - - -# SHOW all GRNs + ADD form -@app.route('/grn', methods=['GET']) -def grn_page(): - connection = config.get_db_connection() - cursor = connection.cursor(dictionary=True) - - # Fetch purchase orders for dropdown - cursor.execute("SELECT purchase_id, supplier_name FROM purchase_order") - purchase_orders = cursor.fetchall() - - # Fetch all GRNs to display - cursor.execute("SELECT * FROM goods_receive_note") - grns = cursor.fetchall() - print(grns) - cursor.close() - connection.close() - - # Render the template with both datasets - return render_template('grn_form.html', purchase_orders=purchase_orders, grns=grns) - - -# ADD new GRN -@app.route('/add_grn', methods=['POST', 'GET']) -def add_grn(): - data = request.form - connection = config.get_db_connection() - cursor = connection.cursor() - query = """ - INSERT INTO goods_receive_note - (grn_date, purchase_id, supplier_name, item_description, received_quantity, unit, rate, amount, remarks) - VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s) \ - """ - cursor.execute(query, ( - data.get('grn_date'), - data.get('purchase_id'), - data.get('supplier_name'), - data.get('item_description'), - data.get('received_quantity'), - data.get('unit'), - data.get('rate'), - data.get('amount'), - data.get('remarks') - )) - connection.commit() - - cursor.execute("SELECT * FROM goods_receive_note") - grns = cursor.fetchall() - print(grns) - query = "select * from purchase_order" - cursor.execute(query) - purchase_orders = cursor.fetchall() - cursor.close() - connection.close() - return render_template('grn_form.html', purchase_orders=purchase_orders, grns=grns) - - -# UPDATE GRN -@app.route('/update_grn/', methods=['GET', 'POST']) -def update_grn(grn_id): - connection = config.get_db_connection() - cursor = connection.cursor(dictionary=True) - - if request.method == 'POST': - data = request.form - query = """ - UPDATE goods_receive_note - SET grn_date=%s, purchase_id=%s, supplier_name=%s, item_description=%s, - received_quantity=%s, unit=%s, rate=%s, amount=%s, remarks=%s - WHERE grn_id=%s - """ - cursor.execute(query, ( - data['grn_date'], data['purchase_id'], data['supplier_name'], - data['item_description'], data['received_quantity'], data['unit'], - data['rate'], data['amount'], data['remarks'], grn_id - )) - connection.commit() - cursor.close() - connection.close() - return redirect(url_for('grns')) - - cursor.execute("SELECT * FROM goods_receive_note WHERE grn_id = %s", (grn_id,)) - grn = cursor.fetchone() - cursor.close() - connection.close() - return render_template("edit_grn.html", grn=grn) - - -# DELETE GRN -@app.route('/delete_grn/', methods=['POST']) -def delete_grn(grn_id): - connection = config.get_db_connection() - cursor = connection.cursor() - cursor.execute("DELETE FROM goods_receive_note WHERE grn_id = %s", (grn_id,)) - connection.commit() - cursor.close() - connection.close() - return render_template("grn_form.html") - - -@app.route('/work_order_report', methods=['GET']) -def work_order_report(): - return render_template('work_order_report.html') - - - - -# ✅ Vendor Name Search (for Select2) -@app.route('/get_vendor_names') -def get_vendor_names(): - query = request.args.get('q', '') - connection = config.get_db_connection() - cursor = connection.cursor() - cursor.execute("SELECT DISTINCT vendor_name FROM work_order WHERE vendor_name LIKE %s", (f"%{query}%",)) - vendors = [row[0] for row in cursor.fetchall()] - cursor.close() - connection.close() - return jsonify(vendors) - - -# ✅ Work Order Number Search (with or without vendor) -@app.route('/get_work_order_numbers') -def get_work_order_numbers(): - vendor = request.args.get('vendor_name', '') - query = request.args.get('q', '') - connection = config.get_db_connection() - cursor = connection.cursor() - - if vendor: - cursor.execute( - "SELECT DISTINCT work_order_number FROM work_order WHERE vendor_name = %s AND work_order_number LIKE %s", - (vendor, f"%{query}%")) - else: - cursor.execute("SELECT DISTINCT work_order_number FROM work_order WHERE work_order_number LIKE %s", - (f"%{query}%",)) - - orders = [row[0] for row in cursor.fetchall()] - cursor.close() - connection.close() - return jsonify(orders) - - -# ✅ Get Work Order Data (Filtered) -@app.route('/get_work_order_data') -def get_work_order_data(): - vendor = request.args.get('vendor_name') - order_number = request.args.get('work_order_number') - - query = "SELECT * FROM work_order WHERE 1=1" - params = [] - - if vendor: - query += " AND vendor_name = %s" - params.append(vendor) - if order_number: - query += " AND work_order_number = %s" - params.append(order_number) - - connection = config.get_db_connection() - cursor = connection.cursor(dictionary=True) - cursor.execute(query, tuple(params)) - data = cursor.fetchall() - cursor.close() - connection.close() - return jsonify(data) - - - - -@app.route('/download_work_order_report') -def download_work_order_report(): - vendor_name = request.args.get('vendor_name') - work_order_number = request.args.get('work_order_number') - - if work_order_number == "null": - work_order_number = None - - query = "SELECT * FROM work_order WHERE 1=1" - params = [] - - if vendor_name: - query += " AND vendor_name = %s" - params.append(vendor_name) - if work_order_number: - query += " AND work_order_number = %s" - params.append(work_order_number) - - conn = config.get_db_connection() - cursor = conn.cursor(dictionary=True) - cursor.execute(query, tuple(params)) - data = cursor.fetchall() - cursor.close() - conn.close() - - if not data: - return "No data found for the selected filters", 404 - - # Convert to DataFrame - df = pd.DataFrame(data) - - output_path = 'static/downloads/work_order_report.xlsx' - os.makedirs(os.path.dirname(output_path), exist_ok=True) - df.to_excel(output_path, index=False, startrow=2) # Leave space for heading - - # Load workbook for styling - wb = load_workbook(output_path) - ws = wb.active - - # Add a merged title - title = "Work Order Report" - ws.merge_cells(start_row=1, start_column=1, end_row=1, end_column=len(df.columns)) - title_cell = ws.cell(row=1, column=1) - title_cell.value = title - title_cell.font = Font(size=14, bold=True, color="1F4E78") - title_cell.alignment = Alignment(horizontal="center", vertical="center") - - # Style header row (row 3 because data starts from row 3) - header_font = Font(bold=True) - for col_num, column_name in enumerate(df.columns, 1): - cell = ws.cell(row=3, column=col_num) - cell.font = header_font - cell.alignment = Alignment(horizontal="center", vertical="center") - # Optional: adjust column width - max_length = max(len(str(column_name)), 12) - ws.column_dimensions[get_column_letter(col_num)].width = max_length + 2 - - wb.save(output_path) - return send_file(output_path, as_attachment=True) - - -@app.route('/purchase_order_report', methods=['GET']) -def purchase_order_report(): - return render_template('purchase_order_report.html') - - -@app.route('/get_supplier_names') -def get_supplier_names(): - query = request.args.get('q', '') # Get the search term from Select2 - connection = config.get_db_connection() - cursor = connection.cursor() - - # Fetch distinct supplier names that match the search query - cursor.execute( - "SELECT supplier_name FROM purchase_order WHERE supplier_name LIKE %s", - (f"%{query}%",) - ) - suppliers = [row[0] for row in cursor.fetchall()] - - cursor.close() - connection.close() - return jsonify(suppliers) - - -@app.route('/get_purchase_order_numbers') -def get_purchase_order_numbers(): - supplier = request.args.get('supplier_name', '') - query = request.args.get('q', '') - - connection = config.get_db_connection() - cursor = connection.cursor() - - if supplier: - cursor.execute(""" - SELECT purchase_order_no - FROM purchase_order - WHERE supplier_name = %s AND purchase_order_no LIKE %s - """, (supplier, f"%{query}%")) - else: - cursor.execute(""" - SELECT purchase_order_no - FROM purchase_order - WHERE purchase_order_no LIKE %s - """, (f"%{query}%",)) - - orders = [row[0] for row in cursor.fetchall()] - cursor.close() - connection.close() - return jsonify(orders) - - -@app.route('/get_purchase_order_data') -def get_purchase_order_data(): - supplier = request.args.get('supplier_name') - order_no = request.args.get('purchase_order_no') - - query = "SELECT * FROM purchase_order WHERE 1=1" - params = [] - - if supplier: - query += " AND supplier_name = %s" - params.append(supplier) - if order_no: - query += " AND purchase_order_no = %s" - params.append(order_no) - - connection = config.get_db_connection() - cursor = connection.cursor(dictionary=True) - cursor.execute(query, tuple(params)) - data = cursor.fetchall() - cursor.close() - connection.close() - return jsonify(data) - - -@app.route('/download_purchase_order_report') -def download_purchase_order_report(): - supplier_name = request.args.get('supplier_name') - purchase_order_no = request.args.get('purchase_order_no') - - if purchase_order_no == "null": - purchase_order_no = None - LogHelper.log_action("Download purchase order", f"User {current_user.id} Download puirchase Order'{ purchase_order_no}'") - query = "SELECT * FROM purchase_order WHERE 1=1" - params = [] - - if supplier_name: - query += " AND supplier_name = %s" - params.append(supplier_name) - if purchase_order_no: - query += " AND purchase_order_no = %s" - params.append(purchase_order_no) - - conn = config.get_db_connection() - cursor = conn.cursor(dictionary=True) - cursor.execute(query, tuple(params)) - data = cursor.fetchall() - cursor.close() - conn.close() - - if not data: - return "No data found for the selected filters", 404 - - # Convert to DataFrame - df = pd.DataFrame(data) - - output_path = 'static/downloads/purchase_order_report.xlsx' - os.makedirs(os.path.dirname(output_path), exist_ok=True) - - df.to_excel(output_path, index=False, startrow=2) # Reserve space for heading - - # Load workbook for styling - wb = load_workbook(output_path) - ws = wb.active - - # Add a merged title - title = "Purchase Order Report" - ws.merge_cells(start_row=1, start_column=1, end_row=1, end_column=len(df.columns)) - title_cell = ws.cell(row=1, column=1) - title_cell.value = title - title_cell.font = Font(size=14, bold=True, color="1F4E78") - title_cell.alignment = Alignment(horizontal="center", vertical="center") - - # Style header row (row 3 because data starts from row 3) - header_font = Font(bold=True) - for col_num, column_name in enumerate(df.columns, 1): - cell = ws.cell(row=3, column=col_num) - cell.font = header_font - cell.alignment = Alignment(horizontal="center", vertical="center") - max_length = max(len(str(column_name)), 12) - ws.column_dimensions[get_column_letter(col_num)].width = max_length + 2 - - wb.save(output_path) - return send_file(output_path, as_attachment=True) - - -if __name__ == '__main__': - app.run(host='0.0.0.0', port=5000, debug=True) - - diff --git a/unusedCode/workOrder.py b/unusedCode/workOrder.py deleted file mode 100644 index 2623bb9..0000000 --- a/unusedCode/workOrder.py +++ /dev/null @@ -1,128 +0,0 @@ -# -- end hold types controlller -------------------- - -# Route to display the HTML form -@app.route('/add_work_order', methods=['GET']) -def add_work_order(): - # Add database connection - connection = config.get_db_connection() - cursor = connection.cursor(dictionary=True) - - cursor.execute("SELECT Contractor_id, Contractor_Name FROM subcontractors") # Adjust table/column names as needed - subcontractor = cursor.fetchall() - - cursor.close() - connection.close() - - return render_template('add_work_order.html', subcontractor=subcontractor) # This is your HTML form page - - -# Route to handle form submission (from action="/submit_work_order") -@app.route('/submit_work_order', methods=['POST', 'GET']) -def submit_work_order(): - vendor_name = request.form['vendor_name'] - work_order_type = request.form['work_order_type'] - work_order_amount = request.form['work_order_amount'] - boq_amount = request.form['boq_amount'] - work_done_percentage = request.form['work_done_percentage'] - work_order_number = request.form['work_order_number'] - gst_amount = request.form['gst_amount'] - tds_amount = request.form['tds_amount'] - security_deposite = request.form['security_deposite'] - sd_against_gst = request.form['sd_against_gst'] - final_total = request.form['final_total'] - tds_of_gst = request.form['tds_of_gst'] - LogHelper.log_action("Submit Work Order", f"User {current_user.id} Submit Work Order'{ work_order_type}'") - # print("Good Morning How are U") - connection = config.get_db_connection() - cursor = connection.cursor(dictionary=True) - # print("Good morning and how are you") - insert_query = """ - INSERT INTO work_order - (vendor_name, work_order_type, work_order_amount, boq_amount, work_done_percentage,work_order_number,gst_amount,tds_amount - ,security_deposit,sd_against_gst,final_total,tds_of_gst) - VALUES (%s, %s, %s, %s, %s,%s,%s,%s,%s,%s,%s,%s) - """ - cursor.execute(insert_query, - (vendor_name, work_order_type, work_order_amount, boq_amount, work_done_percentage, work_order_number - , gst_amount, tds_amount, security_deposite, sd_against_gst, final_total, tds_of_gst)) - connection.commit() - - # ✅ Fetch all data after insert - select_query = "SELECT * FROM work_order" - cursor.execute(select_query) - wo = cursor.fetchall() - # print("The Work order data is ",wo) - print("The data from work order ", wo) # should now print the data properly - cursor.execute("SELECT Contractor_id, Contractor_Name FROM subcontractors") # Adjust table/column names as needed - subcontractor = cursor.fetchall() - cursor.close() - connection.close() - - return render_template('add_work_order.html', work_order_type=work_order_type, wo=wo, subcontractor=subcontractor) - - -@app.route('/delete_work_order/', methods=['POST']) -def delete_work_order(id): - connection = config.get_db_connection() - cursor = connection.cursor() - cursor.execute("DELETE FROM work_order WHERE work_order_id = %s", (id,)) - connection.commit() - cursor.close() - connection.close() - LogHelper.log_action("delete Work Order", f"User {current_user.id} delete Work Order'{ id}'") - return jsonify({'success': True}) - - -@app.route('/update_work_order/', methods=['GET', 'POST']) -def update_work_order(id): - connection = config.get_db_connection() - cursor = connection.cursor(dictionary=True) - - if request.method == 'POST': - work_order_type = request.form['work_order_type'] - work_order_amount = request.form['work_order_amount'] - boq_amount = request.form['boq_amount'] - work_done_percentage = request.form['work_done_percentage'] - work_order_number = request.form['work_order_number'] - gst_amount = request.form['gst_amount'] - tds_amount = request.form['tds_amount'] - security_deposite = request.form['security_deposite'] - sd_against_gst = request.form['sd_against_gst'] - final_amount = request.form['final_amount'] - tds_of_gst = request.form['tds_of_gst'] - update_query = """ - UPDATE work_order - SET work_order_type = %s, - work_order_amount = %s, - boq_amount = %s, - work_done_percentage = %s, - work_order_number= %s, - gst_amount = %s, - tds_amount= %s, - security_deposite= %s, - sd_against_gst=%s, - final_amount= %s, - tds_of_gst=%s - WHERE work_order_id = %s - """ - cursor.execute(update_query, ( - work_order_type, work_order_amount, boq_amount, work_done_percentage, work_order_number, gst_amount, - tds_amount, security_deposite, sd_against_gst, final_amount, tds_of_gst, id)) - connection.commit() - cursor.close() - connection.close() - - # If GET request: fetch the existing record - cursor.execute("SELECT * FROM work_order WHERE work_order_id = %s", (id,)) - work_order = cursor.fetchone() - cursor.close() - connection.close() - return render_template('update_work_order.html', work_order=work_order) - - -# Optional: Route to show a success message -@app.route('/success') -def success(): - return "Work Order Submitted Successfully!" - -