From 8c54ffa3a054c01d0dbb77252e445edceb651e64 Mon Sep 17 00:00:00 2001 From: Pratyanj Date: Tue, 10 Jun 2025 17:28:57 +0530 Subject: [PATCH 1/9] employee menu page design --- bank_managment_system/QTFrontend.py | 50 +++++++++++++++++++++++++++-- 1 file changed, 47 insertions(+), 3 deletions(-) diff --git a/bank_managment_system/QTFrontend.py b/bank_managment_system/QTFrontend.py index 465de612842..56103a7cd99 100644 --- a/bank_managment_system/QTFrontend.py +++ b/bank_managment_system/QTFrontend.py @@ -14,6 +14,7 @@ UPDATE_EMPLOYEE_PAGE2 = 6 EMPLOYEE_LIST_PAGE = 7 ADMIN_TOTAL_MONEY = 8 +EMPLOYEE_MENU_PAGE = 9 # ------------------------------------------------------------------------------------------------------------- # === Reusable UI Component Functions === # ------------------------------------------------------------------------------------------------------------- @@ -525,6 +526,31 @@ def show_total_money(parent, title): main_layout.addWidget(content_frame) return page +def create_employee_menu_page(parent, title): + page, main_layout = create_page_with_header(parent, title) + + button_frame = create_styled_frame(page) + button_frame.setSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Expanding) + button_layout = QtWidgets.QVBoxLayout(button_frame) + + button_container = create_styled_frame(button_frame, min_size=(300, 0), style="background-color: #ffffff; border-radius: 15px; padding: 20px;") + button_container_layout = QtWidgets.QVBoxLayout(button_container) + button_container_layout.setSpacing(15) + + # Define button labels + button_labels = ["Create Account ", "Show Details", "Add Balance", "Withdraw Money", "Chack Balanace", "Update Account", "list of all Members", "Delete Account", "Back"] + buttons = [] + + for label in button_labels: + btn:QtWidgets.QPushButton = create_styled_button(button_container, label) + button_container_layout.addWidget(btn) + buttons.append(btn) + + button_layout.addWidget(button_container, 0, QtCore.Qt.AlignHCenter | QtCore.Qt.AlignVCenter) + main_layout.addWidget(button_frame) + + return page, *buttons # Unpack as add_button, update_employee, etc. + # ------------------------------------------------------------------------------------------------------------- # === Main Window Setup === # ------------------------------------------------------------------------------------------------------------- @@ -601,7 +627,9 @@ def update_employee_data(name, password, salary, position, name_to_update): switch_to_employee, exit_app ) - + # ------------------------------------------------------------------------------------------------ + # -------------------------------------Admin panel page --------------------------------------- + # ------------------------------------------------------------------------------------------------ # Create Admin Login Page admin_page, admin_name, admin_password, admin_submit = create_login_page( stacked_widget, @@ -708,13 +736,28 @@ def update_employee_data(name, password, salary, position, name_to_update): ) # show employee list page employee_list_page = show_employee_list_page(stacked_widget,"Employee List") + admin_total_money = show_total_money(stacked_widget,"Total Money") + # ------------------------------------------------------------------------------------------------ + # -------------------------------------Employee panel page --------------------------------------- + # ------------------------------------------------------------------------------------------------ # Create Employee Login Page employee_page, employee_name, employee_password, employee_submit = create_login_page( stacked_widget, title="Employee Login" ) - admin_total_money = show_total_money(stacked_widget,"Total Money") + + employee_menu_page, E_Create_Account, E_Show_Details, E_add_Balance, E_Withdraw_Money, E_Chack_Balanace, E_Update_Account, E_list_of_all_Members, E_Delete_Account, E_Back= create_employee_menu_page(stacked_widget,"Employee Menu") + # List of all page + # E_Create_Account.clicked.connect(lambda: stacked_widget.setCurrentIndex(EMPLOYEE_CREATE_ACCOUNT_PAGE)) + # E_Show_Details.clicked.connect(lambda: stacked_widget.setCurrentIndex(EMPLOYEE_SHOW_DETAILS_PAGE)) + # E_add_Balance.clicked.connect(lambda: stacked_widget.setCurrentIndex(EMPLOYEE_ADD_BALANCE_PAGE)) + # E_Withdraw_Money.clicked.connect(lambda: stacked_widget.setCurrentIndex(EMPLOYEE_WITHDRAW_MONEY_PAGE)) + # E_Chack_Balanace.clicked.connect(lambda: stacked_widget.setCurrentIndex(EMPLOYEE_CHECK_BALANCE_PAGE)) + # E_Update_Account.clicked.connect(lambda: stacked_widget.setCurrentIndex(EMPLOYEE_UPDATE_ACCOUNT_PAGE)) + # E_list_of_all_Members.clicked.connect(lambda: stacked_widget.setCurrentIndex(EMPLOYEE_LIST_OF_ALL_MEMBERS_PAGE)) + # E_Delete_Account.clicked.connect(lambda: stacked_widget.setCurrentIndex(EMPLOYEE_DELETE_ACCOUNT_PAGE)) + # E_Back.clicked.connect(lambda: stacked_widget.setCurrentIndex(EMPLOYEE_MENU_PAGE)) # Add pages to stacked widget stacked_widget.addWidget(home_page)#0 @@ -726,6 +769,7 @@ def update_employee_data(name, password, salary, position, name_to_update): stacked_widget.addWidget(u_employee_page2)#6 stacked_widget.addWidget(employee_list_page)#7 stacked_widget.addWidget(admin_total_money)#8 + stacked_widget.addWidget(employee_menu_page)#9 @@ -733,7 +777,7 @@ def update_employee_data(name, password, salary, position, name_to_update): main_window.setCentralWidget(central_widget) # Set initial page - stacked_widget.setCurrentIndex(EMPLOYEE_PAGE) + stacked_widget.setCurrentIndex(EMPLOYEE_MENU_PAGE) return stacked_widget, { "admin_name": admin_name, From 0b07b935bec2b9ec6dba884399ee1f4fe0539b9e Mon Sep 17 00:00:00 2001 From: Pratyanj Date: Thu, 12 Jun 2025 13:20:51 +0530 Subject: [PATCH 2/9] update show_popup_message function --- bank_managment_system/QTFrontend.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/bank_managment_system/QTFrontend.py b/bank_managment_system/QTFrontend.py index 56103a7cd99..742c34ff62c 100644 --- a/bank_managment_system/QTFrontend.py +++ b/bank_managment_system/QTFrontend.py @@ -85,7 +85,7 @@ def create_input_field(parent, label_text, min_label_size=(120, 0)): layout.addWidget(line_edit) return frame, line_edit -def show_popup_message(parent, message: str, page: int = None, show_cancel: bool = True): +def show_popup_message(parent, message: str, page: int = None, show_cancel: bool = True,cancel_page: int = HOME_PAGE): """Reusable popup message box. Args: @@ -141,7 +141,7 @@ def on_accept(): def on_reject(): if page is not None: - parent.setCurrentIndex(page) + parent.setCurrentIndex(cancel_page) dialog.reject() button_box.accepted.connect(on_accept) From e0257c59404255aab038f44c568a48e32b533506 Mon Sep 17 00:00:00 2001 From: Pratyanj Date: Thu, 12 Jun 2025 13:40:39 +0530 Subject: [PATCH 3/9] create bank account page done --- bank_managment_system/QTFrontend.py | 156 +++++++++++++++++++++++++++- 1 file changed, 152 insertions(+), 4 deletions(-) diff --git a/bank_managment_system/QTFrontend.py b/bank_managment_system/QTFrontend.py index 742c34ff62c..7fbf3ffb9d5 100644 --- a/bank_managment_system/QTFrontend.py +++ b/bank_managment_system/QTFrontend.py @@ -525,7 +525,8 @@ def show_total_money(parent, title): content_layout.addWidget(back_button, alignment=QtCore.Qt.AlignCenter) main_layout.addWidget(content_frame) return page - + +#-----------employees menu pages----------- def create_employee_menu_page(parent, title): page, main_layout = create_page_with_header(parent, title) @@ -550,7 +551,101 @@ def create_employee_menu_page(parent, title): main_layout.addWidget(button_frame) return page, *buttons # Unpack as add_button, update_employee, etc. + +def create_account_page(parent, title): + page, main_layout = create_page_with_header(parent, title) + + content_frame = create_styled_frame(page) + content_frame.setSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Expanding) + content_layout = QtWidgets.QVBoxLayout(content_frame) + + form_frame = create_styled_frame(content_frame, min_size=(400, 200), style="background-color: #ffffff; border-radius: 15px; padding: 10px;") + form_layout = QtWidgets.QVBoxLayout(form_frame) + form_layout.setSpacing(3) + + # Define input fields + fields = ["Name :", "Age :", "Address","Balance :", "Mobile number :"] + edits = [] + + for i, field in enumerate(fields): + field_frame, field_edit = create_input_field(form_frame, field,min_label_size=(160, 0)) + form_layout.addWidget(field_frame) + if i == 0: + name_edit = field_edit + elif i == 1: + Age_edit = field_edit + elif i == 2: + Address_edit = field_edit + elif i == 3: + Balance_edit = field_edit + elif i == 4: + Mobile_number_edit = field_edit + edits.append(field_edit) + # Dropdown for account type + account_type_label = QtWidgets.QLabel("Account Type :", form_frame) + account_type_label.setStyleSheet("font-size: 14px; font-weight: bold; color: #333333;") + form_layout.addWidget(account_type_label) + account_type_dropdown = QtWidgets.QComboBox(form_frame) + account_type_dropdown.addItems(["Savings", "Current", "Fixed Deposit"]) + account_type_dropdown.setStyleSheet(""" + QComboBox { + padding: 5px; + border: 1px solid #ccc; + border-radius: 4px; + background-color: white; + min-width: 200px; + font-size: 14px; + } + QComboBox:hover { + border: 1px solid #999; + } + QComboBox::drop-down { + border: none; + width: 25px; + } + QComboBox::down-arrow { + width: 12px; + height: 12px; + } + QComboBox QAbstractItemView { + border: 1px solid #ccc; + background-color: white; + selection-background-color: #0078d4; + selection-color: white; + } + """) + form_layout.addWidget(account_type_dropdown) + + # Submit button + button_frame = create_styled_frame(form_frame, style="padding: 7px;") + button_layout = QtWidgets.QVBoxLayout(button_frame) + + + submit_button = create_styled_button(button_frame, "Submit", min_size=(100, 50)) + button_layout.addWidget(submit_button, 0, QtCore.Qt.AlignHCenter) + + form_layout.addWidget(button_frame) + content_layout.addWidget(form_frame, 0, QtCore.Qt.AlignHCenter | QtCore.Qt.AlignVCenter) + main_layout.addWidget(content_frame) + back_btn = QtWidgets.QPushButton("Back", content_frame) + back_btn.setStyleSheet(""" + QPushButton { + background-color: #6c757d; + color: white; + border: none; + border-radius: 4px; + padding: 8px 16px; + font-size: 14px; + } + QPushButton:hover { + background-color: #5a6268; + } + """) + back_btn.clicked.connect(lambda: parent.setCurrentIndex(ADMIN_MENU_PAGE)) + main_layout.addWidget(back_btn, 0,alignment=QtCore.Qt.AlignLeft) + + return page,( name_edit, Age_edit,Address_edit,Balance_edit,Mobile_number_edit, account_type_dropdown ,submit_button) # ------------------------------------------------------------------------------------------------------------- # === Main Window Setup === # ------------------------------------------------------------------------------------------------------------- @@ -746,10 +841,10 @@ def update_employee_data(name, password, salary, position, name_to_update): stacked_widget, title="Employee Login" ) - + employee_submit.clicked.connect(lambda: stacked_widget.setCurrentIndex(EMPLOYEE_MENU_PAGE)) employee_menu_page, E_Create_Account, E_Show_Details, E_add_Balance, E_Withdraw_Money, E_Chack_Balanace, E_Update_Account, E_list_of_all_Members, E_Delete_Account, E_Back= create_employee_menu_page(stacked_widget,"Employee Menu") # List of all page - # E_Create_Account.clicked.connect(lambda: stacked_widget.setCurrentIndex(EMPLOYEE_CREATE_ACCOUNT_PAGE)) + E_Create_Account.clicked.connect(lambda: stacked_widget.setCurrentIndex(EMPLOYEE_CREATE_ACCOUNT_PAGE)) # E_Show_Details.clicked.connect(lambda: stacked_widget.setCurrentIndex(EMPLOYEE_SHOW_DETAILS_PAGE)) # E_add_Balance.clicked.connect(lambda: stacked_widget.setCurrentIndex(EMPLOYEE_ADD_BALANCE_PAGE)) # E_Withdraw_Money.clicked.connect(lambda: stacked_widget.setCurrentIndex(EMPLOYEE_WITHDRAW_MONEY_PAGE)) @@ -759,7 +854,59 @@ def update_employee_data(name, password, salary, position, name_to_update): # E_Delete_Account.clicked.connect(lambda: stacked_widget.setCurrentIndex(EMPLOYEE_DELETE_ACCOUNT_PAGE)) # E_Back.clicked.connect(lambda: stacked_widget.setCurrentIndex(EMPLOYEE_MENU_PAGE)) - # Add pages to stacked widget + employee_create_account_page,all_employee_menu_btn = create_account_page(stacked_widget, "Create Account") + submit_button = all_employee_menu_btn[6].clicked.connect(lambda: add_account_form_submit( + all_employee_menu_btn[0].text().strip(), + all_employee_menu_btn[1].text().strip(), + all_employee_menu_btn[2].text().strip(), + all_employee_menu_btn[3].text().strip(), + all_employee_menu_btn[5].currentText(), + all_employee_menu_btn[4].text().strip() + )) + + def add_account_form_submit(name, age, address, balance, account_type, mobile): + if ( + len(name) != 0 + and len(age) != 0 + and len(address) != 0 + and len(balance) != 0 + and len(account_type) != 0 + and len(mobile) != 0 + ): + try: + balance = int(balance) + except ValueError: + show_popup_message(stacked_widget, "Balance must be a valid number", EMPLOYEE_CREATE_ACCOUNT_PAGE) + return + if balance < 0: + show_popup_message(stacked_widget, "Balance cannot be negative",EMPLOYEE_CREATE_ACCOUNT_PAGE) + return + if account_type not in ["Savings", "Current","Fixed Deposit"]: + show_popup_message(stacked_widget, "Invalid account type", EMPLOYEE_CREATE_ACCOUNT_PAGE) + return + if len(mobile) != 10: + show_popup_message(stacked_widget, "Mobile number must be 10 digits", EMPLOYEE_CREATE_ACCOUNT_PAGE) + return + if not mobile.isdigit(): + show_popup_message(stacked_widget, "Mobile number must contain only digits", EMPLOYEE_CREATE_ACCOUNT_PAGE) + return + if not name.isalpha(): + show_popup_message(stacked_widget, "Name must contain only alphabets", EMPLOYEE_CREATE_ACCOUNT_PAGE) + return + if not age.isdigit(): + show_popup_message(stacked_widget, "Age must contain only digits", EMPLOYEE_CREATE_ACCOUNT_PAGE) + return + if int(age) < 18: + show_popup_message(stacked_widget, "Age must be greater than 18", EMPLOYEE_CREATE_ACCOUNT_PAGE) + return + if len(address) < 10: + show_popup_message(stacked_widget, "Address must be at least 10 characters long", EMPLOYEE_CREATE_ACCOUNT_PAGE) + return + backend.create_customer(name, age, address, balance, account_type, mobile) + show_popup_message(stacked_widget, "Account created successfully", EMPLOYEE_MENU_PAGE, False) + else: + show_popup_message(stacked_widget, "Please fill in all fields", EMPLOYEE_CREATE_ACCOUNT_PAGE) + # Add pages to stacked widget stacked_widget.addWidget(home_page)#0 stacked_widget.addWidget(admin_page)#1 stacked_widget.addWidget(employee_page)#2 @@ -770,6 +917,7 @@ def update_employee_data(name, password, salary, position, name_to_update): stacked_widget.addWidget(employee_list_page)#7 stacked_widget.addWidget(admin_total_money)#8 stacked_widget.addWidget(employee_menu_page)#9 + stacked_widget.addWidget(employee_create_account_page)#10 From 5631bfd872f21517b6ec8dff5b799d1dd70f6797 Mon Sep 17 00:00:00 2001 From: Pratyanj Date: Thu, 12 Jun 2025 14:58:02 +0530 Subject: [PATCH 4/9] chnage all show pop msg page number to name --- bank_managment_system/QTFrontend.py | 28 ++++++++++++++++------------ 1 file changed, 16 insertions(+), 12 deletions(-) diff --git a/bank_managment_system/QTFrontend.py b/bank_managment_system/QTFrontend.py index 7fbf3ffb9d5..b7a8b190408 100644 --- a/bank_managment_system/QTFrontend.py +++ b/bank_managment_system/QTFrontend.py @@ -3,6 +3,7 @@ import sys import backend backend.connect_database() + employee_data = None # Page Constants (for reference) HOME_PAGE = 0 @@ -15,6 +16,7 @@ EMPLOYEE_LIST_PAGE = 7 ADMIN_TOTAL_MONEY = 8 EMPLOYEE_MENU_PAGE = 9 +EMPLOYEE_CREATE_ACCOUNT_PAGE = 10 # ------------------------------------------------------------------------------------------------------------- # === Reusable UI Component Functions === # ------------------------------------------------------------------------------------------------------------- @@ -85,7 +87,7 @@ def create_input_field(parent, label_text, min_label_size=(120, 0)): layout.addWidget(line_edit) return frame, line_edit -def show_popup_message(parent, message: str, page: int = None, show_cancel: bool = True,cancel_page: int = HOME_PAGE): +def show_popup_message(parent, message: str, page: int = None, show_cancel: bool = False,cancel_page: int = HOME_PAGE): """Reusable popup message box. Args: @@ -261,7 +263,7 @@ def on_login_button_clicked(parent, name_field, password_field): password = password_field.text().strip() if not name or not password: - show_popup_message(parent, "Please enter your name and password.", 0) + show_popup_message(parent, "Please enter your name and password.",HOME_PAGE) else: try: # Ideally, here you'd call a backend authentication check @@ -650,7 +652,7 @@ def create_account_page(parent, title): # === Main Window Setup === # ------------------------------------------------------------------------------------------------------------- -def setup_main_window(main_window): +def setup_main_window(main_window: QtWidgets.QMainWindow): """Set up the main window with a stacked widget containing home, admin, and employee pages.""" main_window.setObjectName("MainWindow") main_window.resize(800, 600) @@ -692,11 +694,11 @@ def add_employee_form_submit(name, password, salary, position): and len(position) != 0 ): backend.create_employee(name, password, salary, position) - show_popup_message(stacked_widget,"Employee added successfully",3,False) + show_popup_message(stacked_widget,"Employee added successfully",ADMIN_MENU_PAGE) else: print("Please fill in all fields") - show_popup_message(stacked_widget,"Please fill in all fields",3) + show_popup_message(stacked_widget,"Please fill in all fields",ADD_EMPLOYEE_PAGE) def update_employee_data(name, password, salary, position, name_to_update): try: cur = backend.cur @@ -708,10 +710,10 @@ def update_employee_data(name, password, salary, position, name_to_update): cur.execute("UPDATE staff SET salary = ? WHERE name = ?", (salary, name)) cur.execute("UPDATE staff SET position = ? WHERE name = ?", (position, name)) backend.conn.commit() - show_popup_message(stacked_widget,"Employee Upadate successfully",3,False) + show_popup_message(stacked_widget,"Employee Upadate successfully",UPDATE_EMPLOYEE_PAGE2) except: - show_popup_message(stacked_widget,"Please fill in all fields",3) + show_popup_message(stacked_widget,"Please fill in all fields",UPDATE_EMPLOYEE_PAGE2) @@ -789,10 +791,10 @@ def on_page_changed(index): def update_employee_data(name, password, salary, position, name_to_update): try: if not name_to_update: - show_popup_message(stacked_widget, "Original employee name is missing.", 5) + show_popup_message(stacked_widget, "Original employee name is missing.", UPDATE_EMPLOYEE_PAGE2) return if not (name or password or salary or position): - show_popup_message(stacked_widget, "Please fill at least one field to update.", 5) + show_popup_message(stacked_widget, "Please fill at least one field to update.", UPDATE_EMPLOYEE_PAGE2) return if name: backend.update_employee_name(name, name_to_update) @@ -807,9 +809,9 @@ def update_employee_data(name, password, salary, position, name_to_update): return if position: backend.update_employee_position(position, name_to_update) - show_popup_message(stacked_widget, "Employee updated successfully.", 3, False) + show_popup_message(stacked_widget, "Employee updated successfully.", ADMIN_MENU_PAGE) except Exception as e: - show_popup_message(stacked_widget, f"Error updating employee: {str(e)}", 5) + show_popup_message(stacked_widget, f"Error updating employee: {str(e)}",UPDATE_EMPLOYEE_PAGE2,show_cancel=True,cancel_page=ADMIN_MENU_PAGE) u_employee_update.clicked.connect( lambda: update_employee_data( u_employee_name.text().strip(), @@ -925,7 +927,7 @@ def add_account_form_submit(name, age, address, balance, account_type, mobile): main_window.setCentralWidget(central_widget) # Set initial page - stacked_widget.setCurrentIndex(EMPLOYEE_MENU_PAGE) + stacked_widget.setCurrentIndex(HOME_PAGE) return stacked_widget, { "admin_name": admin_name, @@ -951,4 +953,6 @@ def main(): if __name__ == "__main__": main() +# TO-DO: +# 1.refese the employee list page after add or delete or update employee From d5411c57ea2806047310f2b9c5c00ecd61218561 Mon Sep 17 00:00:00 2001 From: Pratyanj Date: Thu, 12 Jun 2025 15:42:44 +0530 Subject: [PATCH 5/9] show user bank details --- bank_managment_system/QTFrontend.py | 35 +++++++++++++++++++++++++++-- 1 file changed, 33 insertions(+), 2 deletions(-) diff --git a/bank_managment_system/QTFrontend.py b/bank_managment_system/QTFrontend.py index b7a8b190408..506207d2cfb 100644 --- a/bank_managment_system/QTFrontend.py +++ b/bank_managment_system/QTFrontend.py @@ -648,6 +648,27 @@ def create_account_page(parent, title): main_layout.addWidget(back_btn, 0,alignment=QtCore.Qt.AlignLeft) return page,( name_edit, Age_edit,Address_edit,Balance_edit,Mobile_number_edit, account_type_dropdown ,submit_button) + +def create_show_details_page1(parent, title): + page, main_layout = create_page_with_header(parent, title) + content_frame = create_styled_frame(page) + content_frame.setSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Expanding) + content_layout = QtWidgets.QVBoxLayout(content_frame) + + form_frame = create_styled_frame(content_frame, min_size=(400, 200), style="background-color: #ffffff; border-radius: 15px; padding: 10px;") + form_layout = QtWidgets.QVBoxLayout(form_frame) + form_layout.setSpacing(3) + # Define input fields + bannk_user = create_input_field(form_frame, "Enter Bank account Number :", min_label_size=(180, 0)) + form_layout.addWidget(bannk_user[0]) + user_account_number= bannk_user[1] + submit_button = create_styled_button(form_frame, "Submit", min_size=(100, 50)) + form_layout.addWidget(submit_button) + content_layout.addWidget(form_frame, 0, QtCore.Qt.AlignHCenter | QtCore.Qt.AlignVCenter) + main_layout.addWidget(content_frame) + + return page,(user_account_number,submit_button) + # ------------------------------------------------------------------------------------------------------------- # === Main Window Setup === # ------------------------------------------------------------------------------------------------------------- @@ -857,7 +878,7 @@ def update_employee_data(name, password, salary, position, name_to_update): # E_Back.clicked.connect(lambda: stacked_widget.setCurrentIndex(EMPLOYEE_MENU_PAGE)) employee_create_account_page,all_employee_menu_btn = create_account_page(stacked_widget, "Create Account") - submit_button = all_employee_menu_btn[6].clicked.connect(lambda: add_account_form_submit( + all_employee_menu_btn[6].clicked.connect(lambda: add_account_form_submit( all_employee_menu_btn[0].text().strip(), all_employee_menu_btn[1].text().strip(), all_employee_menu_btn[2].text().strip(), @@ -905,10 +926,19 @@ def add_account_form_submit(name, age, address, balance, account_type, mobile): show_popup_message(stacked_widget, "Address must be at least 10 characters long", EMPLOYEE_CREATE_ACCOUNT_PAGE) return backend.create_customer(name, age, address, balance, account_type, mobile) + all_employee_menu_btn[0].setText("") + all_employee_menu_btn[1].setText("") + all_employee_menu_btn[2].setText("") + all_employee_menu_btn[3].setText("") + all_employee_menu_btn[4].setText("") + all_employee_menu_btn[5].currentText(), show_popup_message(stacked_widget, "Account created successfully", EMPLOYEE_MENU_PAGE, False) else: show_popup_message(stacked_widget, "Please fill in all fields", EMPLOYEE_CREATE_ACCOUNT_PAGE) # Add pages to stacked widget + + show_bank_user_data_page1,show_bank_user_other = create_show_details_page1(stacked_widget, "Show Details") + show_bank_user_other[1].clicked.connect(lambda: print(show_bank_user_other[0].text())) stacked_widget.addWidget(home_page)#0 stacked_widget.addWidget(admin_page)#1 stacked_widget.addWidget(employee_page)#2 @@ -920,6 +950,7 @@ def add_account_form_submit(name, age, address, balance, account_type, mobile): stacked_widget.addWidget(admin_total_money)#8 stacked_widget.addWidget(employee_menu_page)#9 stacked_widget.addWidget(employee_create_account_page)#10 + stacked_widget.addWidget(show_bank_user_data_page1)#11 @@ -927,7 +958,7 @@ def add_account_form_submit(name, age, address, balance, account_type, mobile): main_window.setCentralWidget(central_widget) # Set initial page - stacked_widget.setCurrentIndex(HOME_PAGE) + stacked_widget.setCurrentIndex(11) return stacked_widget, { "admin_name": admin_name, From ff841d73ecf393a6c24c26a1975b192b9863dd29 Mon Sep 17 00:00:00 2001 From: Pratyanj Date: Fri, 13 Jun 2025 11:20:31 +0530 Subject: [PATCH 6/9] show user account page done --- bank_managment_system/QTFrontend.py | 87 +++++++++++++++++++++++++++-- 1 file changed, 83 insertions(+), 4 deletions(-) diff --git a/bank_managment_system/QTFrontend.py b/bank_managment_system/QTFrontend.py index 506207d2cfb..bd07d8128a4 100644 --- a/bank_managment_system/QTFrontend.py +++ b/bank_managment_system/QTFrontend.py @@ -17,6 +17,8 @@ ADMIN_TOTAL_MONEY = 8 EMPLOYEE_MENU_PAGE = 9 EMPLOYEE_CREATE_ACCOUNT_PAGE = 10 +EMPLOYEE_SHOW_DETAILS_PAGE1 = 11 +EMPLOYEE_SHOW_DETAILS_PAGE2 = 12 # ------------------------------------------------------------------------------------------------------------- # === Reusable UI Component Functions === # ------------------------------------------------------------------------------------------------------------- @@ -572,6 +574,7 @@ def create_account_page(parent, title): for i, field in enumerate(fields): field_frame, field_edit = create_input_field(form_frame, field,min_label_size=(160, 0)) form_layout.addWidget(field_frame) + field_edit.setFont(QtGui.QFont("Arial", 12)) if i == 0: name_edit = field_edit elif i == 1: @@ -644,7 +647,7 @@ def create_account_page(parent, title): background-color: #5a6268; } """) - back_btn.clicked.connect(lambda: parent.setCurrentIndex(ADMIN_MENU_PAGE)) + back_btn.clicked.connect(lambda: parent.setCurrentIndex(EMPLOYEE_MENU_PAGE)) main_layout.addWidget(back_btn, 0,alignment=QtCore.Qt.AlignLeft) return page,( name_edit, Age_edit,Address_edit,Balance_edit,Mobile_number_edit, account_type_dropdown ,submit_button) @@ -668,6 +671,61 @@ def create_show_details_page1(parent, title): main_layout.addWidget(content_frame) return page,(user_account_number,submit_button) + +def create_show_details_page2(parent, title): + page, main_layout = create_page_with_header(parent, title) + content_frame = create_styled_frame(page) + content_frame.setSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Expanding) + content_layout = QtWidgets.QVBoxLayout(content_frame) + + form_frame = create_styled_frame(content_frame, min_size=(400, 200), style="background-color: #ffffff; border-radius: 15px; padding: 10px;") + form_layout = QtWidgets.QVBoxLayout(form_frame) + form_frame.setSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Expanding) + form_layout.setSpacing(3) + + # Define input fields + + labeles = ["Account No: ","Name: ", "Age:", "Address: ", "Balance: ", "Mobile Number: ", "Account Type: "] + for i in range(len(labeles)): + label_frame, input_field = create_input_field(form_frame, labeles[i], min_label_size=(180, 30)) + form_layout.addWidget(label_frame) + input_field.setReadOnly(True) + input_field.setFont(QtGui.QFont("Arial", 12)) + if i == 0: + account_no_field = input_field + elif i == 1: + name_field = input_field + elif i == 2: + age_field = input_field + elif i == 3: + address_field = input_field + elif i == 4: + balance_field = input_field + elif i == 5: + mobile_number_field = input_field + elif i == 6: + account_type_field = input_field + + exite_btn = create_styled_button(form_frame, "Exit", min_size=(100, 50)) + exite_btn.setStyleSheet(""" + QPushButton { + background-color: #6c757d; + color: white; + border: none; + border-radius: 4px; + padding: 8px 16px; + font-size: 14px; + } + QPushButton:hover { + background-color: #5a6268; + } + """) + exite_btn.clicked.connect(lambda: parent.setCurrentIndex(EMPLOYEE_MENU_PAGE)) + content_layout.addWidget(form_frame, 0, QtCore.Qt.AlignHCenter | QtCore.Qt.AlignVCenter) + main_layout.addWidget(content_frame) + main_layout.addWidget(exite_btn) + + return page,(account_no_field,name_field,age_field,address_field,balance_field,mobile_number_field,account_type_field,exite_btn) # ------------------------------------------------------------------------------------------------------------- # === Main Window Setup === @@ -868,7 +926,7 @@ def update_employee_data(name, password, salary, position, name_to_update): employee_menu_page, E_Create_Account, E_Show_Details, E_add_Balance, E_Withdraw_Money, E_Chack_Balanace, E_Update_Account, E_list_of_all_Members, E_Delete_Account, E_Back= create_employee_menu_page(stacked_widget,"Employee Menu") # List of all page E_Create_Account.clicked.connect(lambda: stacked_widget.setCurrentIndex(EMPLOYEE_CREATE_ACCOUNT_PAGE)) - # E_Show_Details.clicked.connect(lambda: stacked_widget.setCurrentIndex(EMPLOYEE_SHOW_DETAILS_PAGE)) + E_Show_Details.clicked.connect(lambda: stacked_widget.setCurrentIndex(EMPLOYEE_SHOW_DETAILS_PAGE1)) # E_add_Balance.clicked.connect(lambda: stacked_widget.setCurrentIndex(EMPLOYEE_ADD_BALANCE_PAGE)) # E_Withdraw_Money.clicked.connect(lambda: stacked_widget.setCurrentIndex(EMPLOYEE_WITHDRAW_MONEY_PAGE)) # E_Chack_Balanace.clicked.connect(lambda: stacked_widget.setCurrentIndex(EMPLOYEE_CHECK_BALANCE_PAGE)) @@ -937,8 +995,28 @@ def add_account_form_submit(name, age, address, balance, account_type, mobile): show_popup_message(stacked_widget, "Please fill in all fields", EMPLOYEE_CREATE_ACCOUNT_PAGE) # Add pages to stacked widget - show_bank_user_data_page1,show_bank_user_other = create_show_details_page1(stacked_widget, "Show Details") - show_bank_user_other[1].clicked.connect(lambda: print(show_bank_user_other[0].text())) + show_bank_user_data_page1,show_bank_user_other1 = create_show_details_page1(stacked_widget, "Show Details") + show_bank_user_data_page2,show_bank_user_other2 = create_show_details_page2(stacked_widget, "Show Details") + + show_bank_user_other1[1].clicked.connect(lambda: show_bank_user_data_page1_submit_btn(int(show_bank_user_other1[0].text().strip()))) + def show_bank_user_data_page1_submit_btn(name:int): + account_data = backend.get_details(name) + if account_data: + show_bank_user_other1[0].setText("") + show_bank_user_other2[0].setText(str(account_data[0])) + show_bank_user_other2[1].setText(str(account_data[1])) + show_bank_user_other2[2].setText(str(account_data[2])) + show_bank_user_other2[3].setText(str(account_data[3])) + show_bank_user_other2[4].setText(str(account_data[4])) + show_bank_user_other2[5].setText(str(account_data[5])) + show_bank_user_other2[6].setText(str(account_data[6])) + stacked_widget.setCurrentIndex(EMPLOYEE_SHOW_DETAILS_PAGE2) + else: + show_popup_message(stacked_widget, "Account not found", EMPLOYEE_SHOW_DETAILS_PAGE1) + + + + stacked_widget.addWidget(home_page)#0 stacked_widget.addWidget(admin_page)#1 stacked_widget.addWidget(employee_page)#2 @@ -951,6 +1029,7 @@ def add_account_form_submit(name, age, address, balance, account_type, mobile): stacked_widget.addWidget(employee_menu_page)#9 stacked_widget.addWidget(employee_create_account_page)#10 stacked_widget.addWidget(show_bank_user_data_page1)#11 + stacked_widget.addWidget(show_bank_user_data_page2)#12 From 4654bf3b1d7c1f677fdd2ea1f6dcaad2ee311270 Mon Sep 17 00:00:00 2001 From: Pratyanj Date: Fri, 13 Jun 2025 16:55:39 +0530 Subject: [PATCH 7/9] update bank balance of user --- bank_managment_system/QTFrontend.py | 122 +++++++++++++++++++++++++++- 1 file changed, 118 insertions(+), 4 deletions(-) diff --git a/bank_managment_system/QTFrontend.py b/bank_managment_system/QTFrontend.py index bd07d8128a4..a519388c6b7 100644 --- a/bank_managment_system/QTFrontend.py +++ b/bank_managment_system/QTFrontend.py @@ -19,6 +19,10 @@ EMPLOYEE_CREATE_ACCOUNT_PAGE = 10 EMPLOYEE_SHOW_DETAILS_PAGE1 = 11 EMPLOYEE_SHOW_DETAILS_PAGE2 = 12 +EMPLOYEE_ADD_BALANCE_SEARCH = 13 +EMPLOYEE_ADD_BALANCE_PAGE = 14 + +FONT_SIZE = QtGui.QFont("Segoe UI", 12) # ------------------------------------------------------------------------------------------------------------- # === Reusable UI Component Functions === # ------------------------------------------------------------------------------------------------------------- @@ -83,7 +87,25 @@ def create_input_field(parent, label_text, min_label_size=(120, 0)): label.setMinimumSize(QtCore.QSize(*min_label_size)) line_edit = QtWidgets.QLineEdit(frame) - line_edit.setStyleSheet("background-color: rgb(168, 168, 168);") + line_edit.setStyleSheet("background-color: #f0f0f0; border: 1px solid #ccc; border-radius: 4px; padding: 8px;") + + layout.addWidget(label) + layout.addWidget(line_edit) + return frame, line_edit + +def create_input_field_V(parent, label_text, min_label_size=(120, 0)): + """Create a horizontal layout with a label and a QLineEdit.""" + frame = create_styled_frame(parent, style="padding: 7px;") + layout = QtWidgets.QVBoxLayout(frame) + layout.setContentsMargins(0, 0, 0, 0) + layout.setSpacing(0) + + label = create_styled_label(frame, label_text, font_size=12, bold=True, style="color: #2c3e50;") + if min_label_size: + label.setMinimumSize(QtCore.QSize(*min_label_size)) + + line_edit = QtWidgets.QLineEdit(frame) + line_edit.setStyleSheet("background-color: #f0f0f0; border: 1px solid #ccc; border-radius: 4px; padding: 8px;") layout.addWidget(label) layout.addWidget(line_edit) @@ -152,6 +174,28 @@ def on_reject(): button_box.rejected.connect(on_reject) dialog.exec_() + +def search_result(parent, title,label_text): + page, main_layout = create_page_with_header(parent, title) + content_frame = create_styled_frame(page) + content_frame.setSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Expanding) + content_layout = QtWidgets.QVBoxLayout(content_frame) + content_layout.alignment + + form_frame = create_styled_frame(content_frame, min_size=(400, 200), style="background-color: #ffffff; border-radius: 15px; padding: 10px;") + form_layout = QtWidgets.QVBoxLayout(form_frame) + form_layout.setSpacing(3) + # Define input fields + user = create_input_field(form_frame, label_text, min_label_size=(180, 0)) + form_layout.addWidget(user[0]) + user_account_number= user[1] + user_account_number.setFont(QtGui.QFont("Segoe UI", 12)) + submit_button = create_styled_button(form_frame, "Submit", min_size=(100, 50)) + form_layout.addWidget(submit_button) + content_layout.addWidget(form_frame, 0, QtCore.Qt.AlignHCenter | QtCore.Qt.AlignVCenter) + main_layout.addWidget(content_frame) + + return page,(user_account_number,submit_button) # ------------------------------------------------------------------------------------------------------------- # === Page Creation Functions == # ------------------------------------------------------------------------------------------------------------- @@ -727,6 +771,49 @@ def create_show_details_page2(parent, title): return page,(account_no_field,name_field,age_field,address_field,balance_field,mobile_number_field,account_type_field,exite_btn) +def update_user_balance(parent, title): + page, main_layout = create_page_with_header(parent, title) + content_frame = create_styled_frame(page) + content_frame.setSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Expanding) + content_layout = QtWidgets.QVBoxLayout(content_frame) + content_layout.alignment + + form_frame = create_styled_frame(content_frame, min_size=(400, 200), style="background-color: #ffffff; border-radius: 15px; padding: 10px;") + form_layout = QtWidgets.QVBoxLayout(form_frame) + form_layout.setSpacing(3) + # Define input fields + user = create_input_field(form_frame, "User Name: ", min_label_size=(180, 0)) + user_balance = create_input_field(form_frame, "Balance: ", min_label_size=(180, 0)) + user_update_balance = create_input_field_V(form_frame, "Add amount: ", min_label_size=(180, 0)) + + # Add input fields to the form layout + form_layout.addWidget(user[0]) + form_layout.addWidget(user_balance[0]) + form_layout.addWidget(user_update_balance[0]) + + # Store the input fields in variables + user_account_name= user[1] + user_account_name.setReadOnly(True) + user_account_name.setStyleSheet("background-color: #8a8a8a; border: 1px solid #ccc; border-radius: 4px; padding: 8px;") + user_balance_field = user_balance[1] + user_balance_field.setReadOnly(True) + user_balance_field.setStyleSheet("background-color: #8a8a8a; border: 1px solid #ccc; border-radius: 4px; padding: 8px;") + user_update_balance_field = user_update_balance[1] + user_update_balance_field.setStyleSheet("background-color: #f0f0f0; border: 1px solid #ccc; border-radius: 4px; padding: 8px;") + + + # Set the font size for the input fields + user_account_name.setFont(QtGui.QFont("Segoe UI", 12)) + user_balance_field.setFont(QtGui.QFont("Segoe UI", 12)) + user_update_balance_field.setFont(QtGui.QFont("Segoe UI", 12)) + + # Add a submit button + submit_button = create_styled_button(form_frame, "Submit", min_size=(100, 50)) + form_layout.addWidget(submit_button) + content_layout.addWidget(form_frame, 0, QtCore.Qt.AlignHCenter | QtCore.Qt.AlignVCenter) + main_layout.addWidget(content_frame) + + return page,(user_account_name,user_balance_field,user_update_balance_field,submit_button) # ------------------------------------------------------------------------------------------------------------- # === Main Window Setup === # ------------------------------------------------------------------------------------------------------------- @@ -927,7 +1014,7 @@ def update_employee_data(name, password, salary, position, name_to_update): # List of all page E_Create_Account.clicked.connect(lambda: stacked_widget.setCurrentIndex(EMPLOYEE_CREATE_ACCOUNT_PAGE)) E_Show_Details.clicked.connect(lambda: stacked_widget.setCurrentIndex(EMPLOYEE_SHOW_DETAILS_PAGE1)) - # E_add_Balance.clicked.connect(lambda: stacked_widget.setCurrentIndex(EMPLOYEE_ADD_BALANCE_PAGE)) + E_add_Balance.clicked.connect(lambda: stacked_widget.setCurrentIndex(EMPLOYEE_ADD_BALANCE_SEARCH)) # E_Withdraw_Money.clicked.connect(lambda: stacked_widget.setCurrentIndex(EMPLOYEE_WITHDRAW_MONEY_PAGE)) # E_Chack_Balanace.clicked.connect(lambda: stacked_widget.setCurrentIndex(EMPLOYEE_CHECK_BALANCE_PAGE)) # E_Update_Account.clicked.connect(lambda: stacked_widget.setCurrentIndex(EMPLOYEE_UPDATE_ACCOUNT_PAGE)) @@ -1014,9 +1101,34 @@ def show_bank_user_data_page1_submit_btn(name:int): else: show_popup_message(stacked_widget, "Account not found", EMPLOYEE_SHOW_DETAILS_PAGE1) + add_balance_search_page,add_balance_search_other = search_result(stacked_widget, "Add Balance","Enter Account Number: ") + add_balance_search_other[1].clicked.connect(lambda: add_balance_page_submit_btn(int(add_balance_search_other[0].text().strip()))) - + add_balance_page,add_balance_other =update_user_balance(stacked_widget, "Add Balance User Account") + add_balance_other[3].clicked.connect(lambda:update_user_account_balance(add_balance_other[2].text().strip())) + # user_account_name,user_balance_field,user_update_balance_field,submit_button + + + def add_balance_page_submit_btn(account_number:int): + check = backend.check_acc_no(account_number) + if check: + account_data = backend.get_details(account_number) + add_balance_other[0].setText(str(account_data[1])) + add_balance_other[1].setText(str(account_data[4])) + stacked_widget.setCurrentIndex(14) + return account_data + else: + show_popup_message(stacked_widget, "Account not found", EMPLOYEE_ADD_BALANCE_SEARCH,show_cancel=True,cancel_page=EMPLOYEE_MENU_PAGE) + + def update_user_account_balance(add_money:int): + account_number=int(add_balance_search_other[0].text().strip()) + backend.update_balance(add_money,account_number) + add_balance_other[0].setText("") + add_balance_other[1].setText("") + show_popup_message(stacked_widget, "Balance updated successfully", EMPLOYEE_MENU_PAGE) + add_balance_search_other[0].setText("") + stacked_widget.addWidget(home_page)#0 stacked_widget.addWidget(admin_page)#1 stacked_widget.addWidget(employee_page)#2 @@ -1030,6 +1142,8 @@ def show_bank_user_data_page1_submit_btn(name:int): stacked_widget.addWidget(employee_create_account_page)#10 stacked_widget.addWidget(show_bank_user_data_page1)#11 stacked_widget.addWidget(show_bank_user_data_page2)#12 + stacked_widget.addWidget(add_balance_search_page)#13 + stacked_widget.addWidget(add_balance_page)#14 @@ -1037,7 +1151,7 @@ def show_bank_user_data_page1_submit_btn(name:int): main_window.setCentralWidget(central_widget) # Set initial page - stacked_widget.setCurrentIndex(11) + stacked_widget.setCurrentIndex(13) return stacked_widget, { "admin_name": admin_name, From 799cedb58705f221679e0fba677c1414ccb7c9f3 Mon Sep 17 00:00:00 2001 From: Pratyanj Date: Fri, 13 Jun 2025 17:12:01 +0530 Subject: [PATCH 8/9] update size of the font in all input field --- bank_managment_system/QTFrontend.py | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/bank_managment_system/QTFrontend.py b/bank_managment_system/QTFrontend.py index a519388c6b7..cbf3c92be23 100644 --- a/bank_managment_system/QTFrontend.py +++ b/bank_managment_system/QTFrontend.py @@ -87,6 +87,7 @@ def create_input_field(parent, label_text, min_label_size=(120, 0)): label.setMinimumSize(QtCore.QSize(*min_label_size)) line_edit = QtWidgets.QLineEdit(frame) + line_edit.setFont(FONT_SIZE) line_edit.setStyleSheet("background-color: #f0f0f0; border: 1px solid #ccc; border-radius: 4px; padding: 8px;") layout.addWidget(label) @@ -106,6 +107,7 @@ def create_input_field_V(parent, label_text, min_label_size=(120, 0)): line_edit = QtWidgets.QLineEdit(frame) line_edit.setStyleSheet("background-color: #f0f0f0; border: 1px solid #ccc; border-radius: 4px; padding: 8px;") + line_edit.setFont(FONT_SIZE) layout.addWidget(label) layout.addWidget(line_edit) @@ -189,7 +191,7 @@ def search_result(parent, title,label_text): user = create_input_field(form_frame, label_text, min_label_size=(180, 0)) form_layout.addWidget(user[0]) user_account_number= user[1] - user_account_number.setFont(QtGui.QFont("Segoe UI", 12)) + user_account_number.setFont(FONT_SIZE) submit_button = create_styled_button(form_frame, "Submit", min_size=(100, 50)) form_layout.addWidget(submit_button) content_layout.addWidget(form_frame, 0, QtCore.Qt.AlignHCenter | QtCore.Qt.AlignVCenter) @@ -803,9 +805,9 @@ def update_user_balance(parent, title): # Set the font size for the input fields - user_account_name.setFont(QtGui.QFont("Segoe UI", 12)) - user_balance_field.setFont(QtGui.QFont("Segoe UI", 12)) - user_update_balance_field.setFont(QtGui.QFont("Segoe UI", 12)) + user_account_name.setFont(FONT_SIZE) + user_balance_field.setFont(FONT_SIZE) + user_update_balance_field.setFont(FONT_SIZE) # Add a submit button submit_button = create_styled_button(form_frame, "Submit", min_size=(100, 50)) @@ -1151,7 +1153,7 @@ def update_user_account_balance(add_money:int): main_window.setCentralWidget(central_widget) # Set initial page - stacked_widget.setCurrentIndex(13) + stacked_widget.setCurrentIndex(0) return stacked_widget, { "admin_name": admin_name, From da0068177c939b02f5ca627c6f4449c2f62a05cd Mon Sep 17 00:00:00 2001 From: Pratyanj Date: Sat, 14 Jun 2025 12:34:28 +0530 Subject: [PATCH 9/9] add withdraw_money_page page working --- bank_managment_system/QTFrontend.py | 48 ++++++++++++++++++++++++----- 1 file changed, 41 insertions(+), 7 deletions(-) diff --git a/bank_managment_system/QTFrontend.py b/bank_managment_system/QTFrontend.py index cbf3c92be23..9a1a54106f1 100644 --- a/bank_managment_system/QTFrontend.py +++ b/bank_managment_system/QTFrontend.py @@ -21,6 +21,8 @@ EMPLOYEE_SHOW_DETAILS_PAGE2 = 12 EMPLOYEE_ADD_BALANCE_SEARCH = 13 EMPLOYEE_ADD_BALANCE_PAGE = 14 +EMPLOYEE_WITHDRAW_MONEY_SEARCH = 15 +EMPLOYEE_WITHDRAW_MONEY_PAGE = 16 FONT_SIZE = QtGui.QFont("Segoe UI", 12) # ------------------------------------------------------------------------------------------------------------- @@ -773,7 +775,7 @@ def create_show_details_page2(parent, title): return page,(account_no_field,name_field,age_field,address_field,balance_field,mobile_number_field,account_type_field,exite_btn) -def update_user_balance(parent, title): +def update_user(parent, title,input_fields_label): page, main_layout = create_page_with_header(parent, title) content_frame = create_styled_frame(page) content_frame.setSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Expanding) @@ -786,7 +788,7 @@ def update_user_balance(parent, title): # Define input fields user = create_input_field(form_frame, "User Name: ", min_label_size=(180, 0)) user_balance = create_input_field(form_frame, "Balance: ", min_label_size=(180, 0)) - user_update_balance = create_input_field_V(form_frame, "Add amount: ", min_label_size=(180, 0)) + user_update_balance = create_input_field_V(form_frame, input_fields_label, min_label_size=(180, 0)) # Add input fields to the form layout form_layout.addWidget(user[0]) @@ -816,6 +818,7 @@ def update_user_balance(parent, title): main_layout.addWidget(content_frame) return page,(user_account_name,user_balance_field,user_update_balance_field,submit_button) + # ------------------------------------------------------------------------------------------------------------- # === Main Window Setup === # ------------------------------------------------------------------------------------------------------------- @@ -1017,7 +1020,7 @@ def update_employee_data(name, password, salary, position, name_to_update): E_Create_Account.clicked.connect(lambda: stacked_widget.setCurrentIndex(EMPLOYEE_CREATE_ACCOUNT_PAGE)) E_Show_Details.clicked.connect(lambda: stacked_widget.setCurrentIndex(EMPLOYEE_SHOW_DETAILS_PAGE1)) E_add_Balance.clicked.connect(lambda: stacked_widget.setCurrentIndex(EMPLOYEE_ADD_BALANCE_SEARCH)) - # E_Withdraw_Money.clicked.connect(lambda: stacked_widget.setCurrentIndex(EMPLOYEE_WITHDRAW_MONEY_PAGE)) + E_Withdraw_Money.clicked.connect(lambda: stacked_widget.setCurrentIndex(EMPLOYEE_WITHDRAW_MONEY_SEARCH)) # E_Chack_Balanace.clicked.connect(lambda: stacked_widget.setCurrentIndex(EMPLOYEE_CHECK_BALANCE_PAGE)) # E_Update_Account.clicked.connect(lambda: stacked_widget.setCurrentIndex(EMPLOYEE_UPDATE_ACCOUNT_PAGE)) # E_list_of_all_Members.clicked.connect(lambda: stacked_widget.setCurrentIndex(EMPLOYEE_LIST_OF_ALL_MEMBERS_PAGE)) @@ -1102,14 +1105,14 @@ def show_bank_user_data_page1_submit_btn(name:int): stacked_widget.setCurrentIndex(EMPLOYEE_SHOW_DETAILS_PAGE2) else: show_popup_message(stacked_widget, "Account not found", EMPLOYEE_SHOW_DETAILS_PAGE1) - + + # Add balance page add_balance_search_page,add_balance_search_other = search_result(stacked_widget, "Add Balance","Enter Account Number: ") add_balance_search_other[1].clicked.connect(lambda: add_balance_page_submit_btn(int(add_balance_search_other[0].text().strip()))) - add_balance_page,add_balance_other =update_user_balance(stacked_widget, "Add Balance User Account") + add_balance_page,add_balance_other =update_user(stacked_widget, "Add Balance User Account","Enter Ammount: ") add_balance_other[3].clicked.connect(lambda:update_user_account_balance(add_balance_other[2].text().strip())) - # user_account_name,user_balance_field,user_update_balance_field,submit_button def add_balance_page_submit_btn(account_number:int): @@ -1131,6 +1134,35 @@ def update_user_account_balance(add_money:int): show_popup_message(stacked_widget, "Balance updated successfully", EMPLOYEE_MENU_PAGE) add_balance_search_other[0].setText("") + # Withdraw money page + withdraw_money_search_page,withdraw_money_search_other = search_result(stacked_widget, "Withdraw Money","Enter Account Number: ") + withdraw_money_search_other[1].clicked.connect(lambda: withdraw_money_page_submit_btn(int(withdraw_money_search_other[0].text().strip()))) + + + withdraw_money_page,withdraw_money_other =update_user(stacked_widget, "Withdraw Money From User Account","Withdraw Amount: ") + withdraw_money_other[3].clicked.connect(lambda:update_user_account_withdraw(withdraw_money_other[2].text().strip())) + + def withdraw_money_page_submit_btn(account_number:int): + print(account_number) + check = backend.check_acc_no(account_number) + print(check) + if check: + account_data = backend.get_details(account_number) + withdraw_money_other[0].setText(str(account_data[1])) + withdraw_money_other[1].setText(str(account_data[4])) + stacked_widget.setCurrentIndex(16) + return account_data + else: + show_popup_message(stacked_widget, "Account not found", EMPLOYEE_WITHDRAW_MONEY_SEARCH,show_cancel=True,cancel_page=EMPLOYEE_MENU_PAGE) + + def update_user_account_withdraw(withdraw_money:int): + account_number=int(withdraw_money_search_other[0].text().strip()) + backend.deduct_balance(int(withdraw_money),int(account_number)) + withdraw_money_other[0].setText("") + withdraw_money_other[1].setText("") + show_popup_message(stacked_widget, "Balance updated successfully", EMPLOYEE_MENU_PAGE) + withdraw_money_search_other[0].setText("") + stacked_widget.addWidget(home_page)#0 stacked_widget.addWidget(admin_page)#1 stacked_widget.addWidget(employee_page)#2 @@ -1146,6 +1178,8 @@ def update_user_account_balance(add_money:int): stacked_widget.addWidget(show_bank_user_data_page2)#12 stacked_widget.addWidget(add_balance_search_page)#13 stacked_widget.addWidget(add_balance_page)#14 + stacked_widget.addWidget(withdraw_money_search_page)#15 + stacked_widget.addWidget(withdraw_money_page)#16 @@ -1153,7 +1187,7 @@ def update_user_account_balance(add_money:int): main_window.setCentralWidget(central_widget) # Set initial page - stacked_widget.setCurrentIndex(0) + stacked_widget.setCurrentIndex(9) return stacked_widget, { "admin_name": admin_name,