2025-12-27 16:37:05 +05:30
|
|
|
from flask import Flask, render_template, request, send_file
|
|
|
|
|
import pandas as pd
|
|
|
|
|
import os
|
|
|
|
|
from werkzeug.utils import secure_filename
|
2025-12-27 16:53:14 +05:30
|
|
|
from AppCode.FileHandler import FileHandler
|
|
|
|
|
from AppCode.ServerPort import CompGSTServer
|
|
|
|
|
from AppCode.compare_excel import Comparison
|
2025-12-27 16:37:05 +05:30
|
|
|
|
|
|
|
|
app = Flask(__name__)
|
|
|
|
|
|
2025-12-27 16:53:14 +05:30
|
|
|
# check file Folder valid
|
|
|
|
|
FileHandler.check_or_create_folder_exists()
|
2025-12-27 16:37:05 +05:30
|
|
|
|
2025-12-27 16:53:14 +05:30
|
|
|
# upload page show
|
2025-12-27 16:37:05 +05:30
|
|
|
@app.route('/')
|
|
|
|
|
def index():
|
|
|
|
|
return render_template('upload.html')
|
|
|
|
|
|
2025-12-27 16:53:14 +05:30
|
|
|
# camparison route
|
2025-12-27 16:37:05 +05:30
|
|
|
@app.route('/upload', methods=['POST'])
|
|
|
|
|
def upload_file():
|
2025-12-27 16:53:14 +05:30
|
|
|
file = request.files.get('excel_file')
|
2025-12-27 16:37:05 +05:30
|
|
|
if not file:
|
|
|
|
|
return "No file uploaded.", 400
|
|
|
|
|
|
|
|
|
|
filename = secure_filename(file.filename)
|
2025-12-27 16:53:14 +05:30
|
|
|
filepath = os.path.join(FileHandler.UPLOAD_FOLDER, filename)
|
2025-12-27 16:37:05 +05:30
|
|
|
file.save(filepath)
|
|
|
|
|
|
|
|
|
|
try:
|
2025-12-27 16:53:14 +05:30
|
|
|
# Read first two sheets
|
|
|
|
|
df1 = pd.read_excel(filepath, sheet_name=0, header=0)
|
|
|
|
|
df2 = pd.read_excel(filepath, sheet_name=1, header=0)
|
2025-12-27 16:37:05 +05:30
|
|
|
|
2025-12-27 16:53:14 +05:30
|
|
|
# Get unmatched rows separately
|
|
|
|
|
unmatched_sheet1, unmatched_sheet2 = Comparison.find_unmatched_rows(df1, df2)
|
2025-12-27 16:37:05 +05:30
|
|
|
|
2025-12-27 16:53:14 +05:30
|
|
|
# Write result into two Excel sheets
|
|
|
|
|
with pd.ExcelWriter(FileHandler.RESULT_FILE, engine="openpyxl") as writer:
|
|
|
|
|
unmatched_sheet1.to_excel(
|
|
|
|
|
writer, sheet_name="Not In Tally", index=False
|
|
|
|
|
)
|
|
|
|
|
unmatched_sheet2.to_excel(
|
|
|
|
|
writer, sheet_name="Not In Portal", index=False
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
return send_file(FileHandler.RESULT_FILE, as_attachment=True)
|
2025-12-27 16:37:05 +05:30
|
|
|
|
|
|
|
|
except Exception as e:
|
|
|
|
|
return f"Error processing file: {e}", 500
|
|
|
|
|
|
2025-12-27 16:53:14 +05:30
|
|
|
# run
|
2025-12-27 16:37:05 +05:30
|
|
|
if __name__ == '__main__':
|
2025-12-27 16:53:14 +05:30
|
|
|
app.run(host=CompGSTServer.host, port=CompGSTServer.port, debug=True)
|
|
|
|
|
|
|
|
|
|
|