diff --git a/app/routes.py b/app/routes.py index 78ef415..f88ca03 100644 --- a/app/routes.py +++ b/app/routes.py @@ -38,8 +38,8 @@ def line_items_by_month(): files=files, all_months=all_months) -@app.route('/upload_file/') -def upload_file(filename:str): +@app.route('/upload_bank_statement/') +def upload_bank_statement(filename:str): bank_statement_file_path = get_bank_statements_path() + filename xl = openpyxl.load_workbook(bank_statement_file_path, read_only=True) wb = xl.worksheets[0] @@ -91,10 +91,64 @@ def upload_file(filename:str): @app.route('/split_line/') def split_line(line_item_id): + existing_child_lines = db.session.execute(select(LineItem).where(LineItem.parent_line_item_id == line_item_id)).scalars() li = db.session.execute(select(LineItem).where(LineItem.id == line_item_id)).scalar() return render_template('split_line.html', - li=li) + li=li, + existing_child_lines=existing_child_lines) +@app.route('/import_file_selector/') +def import_file_selector(line_item_id): + li = db.session.execute(select(LineItem).where(LineItem.id == line_item_id)).scalar() + files = os.listdir('app\static\Credit_Card_Statements') + return render_template('import_file_selector.html', + li=li, + files=files) + +@app.route('/upload_file_for_line_split//') +def upload_file_for_line_split(file_name, line_item_id): + file_path = f'C:/Users/Lenovo/Desktop/BudgetingApp/app/static/Credit_Card_Statements/{file_name}' + parent_line_item = db.session.execute(select(LineItem).where(LineItem.id == line_item_id)).scalar() + + xl = openpyxl.load_workbook(file_path, read_only=True) + wb = xl.worksheets[0] + + vendors = db.session.execute(select(Vendor.name)).all() + vendors_added = [vendor[0] for vendor in vendors] + + items_to_add = [] + + for line, row in enumerate(wb.rows): + row = [x.value for x in row] + if line == 0: + columns = {x: i for i,x in enumerate(row)} + continue + + if not row[columns['Vendor']] in vendors_added: + vendors_added.append(row[columns['Vendor']]) + vendor = Vendor( + name=row[columns['Vendor']] + ) + db.session.add(vendor) + db.session.commit() + vendor_id = db.session.execute(select(Vendor.id).where(Vendor.name==row[columns['Vendor']])).scalar() + line_item = LineItem( + parent_line_item_id=line_item_id, + amount=row[columns['Amount']] * -1, + currency_type='shekel', + vendor_id=vendor_id, + date=parent_line_item.date, + confirmation_code=row[columns['Confirmation Code']], + note=None + ) + items_to_add.append(line_item) + xl.close() + + db.session.add_all(items_to_add) + db.session.commit() + os.remove(file_path) + + return redirect(url_for('split_line', line_item_id=line_item_id)) ################### diff --git a/app/static/Bank_Statements/Bulk_Line_Item_Upload.xlsx b/app/static/Bank_Statements/Bulk_Line_Item_Upload.xlsx deleted file mode 100644 index b07ead7..0000000 Binary files a/app/static/Bank_Statements/Bulk_Line_Item_Upload.xlsx and /dev/null differ diff --git a/app/static/Bank_Statements/try_this.xlsx b/app/static/Bank_Statements/try_this.xlsx deleted file mode 100644 index c84572c..0000000 Binary files a/app/static/Bank_Statements/try_this.xlsx and /dev/null differ diff --git a/app/static/Credit_Card_Statements/Export_5_2024_3235.xlsx b/app/static/Credit_Card_Statements/Export_5_2024_3235.xlsx deleted file mode 100644 index 3a0eab8..0000000 Binary files a/app/static/Credit_Card_Statements/Export_5_2024_3235.xlsx and /dev/null differ diff --git a/app/static/Credit_Card_Statements/Export_5_2024_3349.xlsx b/app/static/Credit_Card_Statements/Export_5_2024_3349.xlsx deleted file mode 100644 index 1bb51bd..0000000 Binary files a/app/static/Credit_Card_Statements/Export_5_2024_3349.xlsx and /dev/null differ diff --git a/app/static/Credit_Card_Statements/Export_6_2024_3235.xlsx b/app/static/Credit_Card_Statements/Export_6_2024_3235.xlsx deleted file mode 100644 index bc52e12..0000000 Binary files a/app/static/Credit_Card_Statements/Export_6_2024_3235.xlsx and /dev/null differ diff --git a/app/static/Credit_Card_Statements/Export_6_2024_3349.xlsx b/app/static/Credit_Card_Statements/Export_6_2024_3349.xlsx deleted file mode 100644 index ed2bdce..0000000 Binary files a/app/static/Credit_Card_Statements/Export_6_2024_3349.xlsx and /dev/null differ diff --git a/app/static/Credit_Card_Statements/Export_7_2024_3235.xlsx b/app/static/Credit_Card_Statements/Export_7_2024_3235.xlsx deleted file mode 100644 index 0410f6f..0000000 Binary files a/app/static/Credit_Card_Statements/Export_7_2024_3235.xlsx and /dev/null differ diff --git a/app/static/Credit_Card_Statements/Export_7_2024_3349.xlsx b/app/static/Credit_Card_Statements/Export_7_2024_3349.xlsx deleted file mode 100644 index 83c5e0a..0000000 Binary files a/app/static/Credit_Card_Statements/Export_7_2024_3349.xlsx and /dev/null differ diff --git a/app/static/Credit_Card_Statements/Export_8_2024_3235.xlsx b/app/static/Credit_Card_Statements/Export_8_2024_3235.xlsx deleted file mode 100644 index d389717..0000000 Binary files a/app/static/Credit_Card_Statements/Export_8_2024_3235.xlsx and /dev/null differ diff --git a/app/static/Credit_Card_Statements/Export_8_2024_3349.xlsx b/app/static/Credit_Card_Statements/Export_8_2024_3349.xlsx deleted file mode 100644 index 5cb0ad0..0000000 Binary files a/app/static/Credit_Card_Statements/Export_8_2024_3349.xlsx and /dev/null differ diff --git a/app/templates/import_file_selector.html b/app/templates/import_file_selector.html new file mode 100644 index 0000000..ee087c7 --- /dev/null +++ b/app/templates/import_file_selector.html @@ -0,0 +1,25 @@ +{% extends 'base.html' %} +{% block title %}Split Line{% endblock title %} + +{% block content %} + +
+
+
+
+ Select file to import +
+ +
+ {% for file in files %} +

{{file}}

+ {% endfor %} +
+
+ +
+
+
+ +
+{% endblock content %} \ No newline at end of file diff --git a/app/templates/line_items_by_month.html b/app/templates/line_items_by_month.html index 09aab73..dfaa6b6 100644 --- a/app/templates/line_items_by_month.html +++ b/app/templates/line_items_by_month.html @@ -21,7 +21,7 @@ {% for file in files %} - {{file}} + {{file}} {% endfor %} diff --git a/app/templates/split_line.html b/app/templates/split_line.html index 047a3ef..326cda5 100644 --- a/app/templates/split_line.html +++ b/app/templates/split_line.html @@ -27,6 +27,9 @@ Date: {{ li.display_date() }} + + Import File + @@ -37,7 +40,25 @@ - + + + {% if existing_child_lines %} + + + + + + + {% for line in existing_child_lines %} + + + + + + + {% endfor %} + {% endif %} +
AmountVendorConfirmation CodeNote
{{line.amount}}{{line.get_vendor()}}{{line.confirmation_code}}{{line.note}}
diff --git a/instance/site.db b/instance/site.db index 47e9577..ac02bf1 100644 Binary files a/instance/site.db and b/instance/site.db differ