From 66c80fd055cfd665d93a42f047522adf7768e85d Mon Sep 17 00:00:00 2001 From: Joel Thomas Date: Sat, 11 Apr 2026 12:58:09 +0530 Subject: [PATCH] Fixed payroll ID handling and improved payroll update flow SRS02 : Employee Management - Fixed Payroll constructor to use given ID during deserialization - Cleaned up salary update logic in PayslipManagementService - Improved employee selection display in Finance menu - Added employee type column in selection list - Fixed typo in Employee menu (Ticket) - Added confirmation message after payroll update Smitha Mohan --- Trenser.Zenvy/Trenser.Zenvy/models/Payroll.cpp | 2 +- .../services/PayslipManagementService.cpp | 11 ++++++----- .../Trenser.Zenvy/views/EmployeeMenu.cpp | 2 +- .../views/FinanceExecutiveMenu.cpp | 17 ++++++++++++----- 4 files changed, 20 insertions(+), 12 deletions(-) diff --git a/Trenser.Zenvy/Trenser.Zenvy/models/Payroll.cpp b/Trenser.Zenvy/Trenser.Zenvy/models/Payroll.cpp index aacf36e..3291519 100644 --- a/Trenser.Zenvy/Trenser.Zenvy/models/Payroll.cpp +++ b/Trenser.Zenvy/Trenser.Zenvy/models/Payroll.cpp @@ -13,7 +13,7 @@ Payroll::Payroll(const std::string& id, double foodAllowance, double employeePFContribution, double employerPFContribution) - : m_id("PR" + std::to_string(++m_uid)), + : m_id(id), m_employeeId(employeeId), m_basicSalary(basicSalary), m_houseRentAllowance(houseRentAllowance), diff --git a/Trenser.Zenvy/Trenser.Zenvy/services/PayslipManagementService.cpp b/Trenser.Zenvy/Trenser.Zenvy/services/PayslipManagementService.cpp index dd6bc1c..ecc326d 100644 --- a/Trenser.Zenvy/Trenser.Zenvy/services/PayslipManagementService.cpp +++ b/Trenser.Zenvy/Trenser.Zenvy/services/PayslipManagementService.cpp @@ -11,11 +11,12 @@ void PayslipManagementService::updateSalary(const std::string& employeeId, doubl auto employee = m_dataStore.getEmployees().find(employeeId); if (employee != m_dataStore.getEmployees().end() && employee->second->getEmployeeType() != Enums::EmployeeType::ADMIN) { - (employee->second)->getPayroll()->setBasicSalary(basicSalary); - (employee->second)->getPayroll()->setHouseRentAllowance(houseRentAllowance); - (employee->second)->getPayroll()->setFoodAllowance(foodAllowance); - (employee->second)->getPayroll()->setEmployeePFContribution(employeePFContribution); - (employee->second)->getPayroll()->setEmployerPFContribution(employerPFContribution); + auto payroll = employee->second->getPayroll(); + payroll->setBasicSalary(basicSalary); + payroll->setHouseRentAllowance(houseRentAllowance); + payroll->setFoodAllowance(foodAllowance); + payroll->setEmployeePFContribution(employeePFContribution); + payroll->setEmployerPFContribution(employerPFContribution); } else { diff --git a/Trenser.Zenvy/Trenser.Zenvy/views/EmployeeMenu.cpp b/Trenser.Zenvy/Trenser.Zenvy/views/EmployeeMenu.cpp index e54b282..7673756 100644 --- a/Trenser.Zenvy/Trenser.Zenvy/views/EmployeeMenu.cpp +++ b/Trenser.Zenvy/Trenser.Zenvy/views/EmployeeMenu.cpp @@ -13,7 +13,7 @@ void EmployeeMenu::run() { int choice; util::clear(); - std::cout << "Employee Menu\n1. Apply Leave\n2. View Payslip\n3. View Payslip History\n4. Raise Ticke\n5. View Ticket\n6. View Ticket History\n7. View Employees\n8. Search Employee\n9. View Team Members\n10. Book Meeting Room\n11. View Booking History\n12. View Notification\n13. View Announcements\n14. Update Profile\n15. Logout\nEnter your Choice: "; + std::cout << "Employee Menu\n1. Apply Leave\n2. View Payslip\n3. View Payslip History\n4. Raise Ticket\n5. View Ticket\n6. View Ticket History\n7. View Employees\n8. Search Employee\n9. View Team Members\n10. Book Meeting Room\n11. View Booking History\n12. View Notification\n13. View Announcements\n14. Update Profile\n15. Logout\nEnter your Choice: "; util::read(choice); if (!handleOperation(choice)) { diff --git a/Trenser.Zenvy/Trenser.Zenvy/views/FinanceExecutiveMenu.cpp b/Trenser.Zenvy/Trenser.Zenvy/views/FinanceExecutiveMenu.cpp index 28c7f74..428fce9 100644 --- a/Trenser.Zenvy/Trenser.Zenvy/views/FinanceExecutiveMenu.cpp +++ b/Trenser.Zenvy/Trenser.Zenvy/views/FinanceExecutiveMenu.cpp @@ -34,6 +34,8 @@ std::string FinanceExecutiveMenu::getSelectedUserId() std::map> employeeList; int index = 0; auto allEmployees = m_zenvyController->getEmployees(); + util::clear(); + std::cout << "Select the Employee\n"; for (auto& currentEmployee : allEmployees) { if (currentEmployee->getEmployeeType() == Enums::EmployeeType::ADMIN) @@ -43,14 +45,16 @@ std::string FinanceExecutiveMenu::getSelectedUserId() employeeList[++index] = currentEmployee; } std::cout << std::left - << std::setw(6) << "Index" - << std::setw(15) << "Employee Id" - << std::setw(25) << "Name" << std::endl; + << std::setw(10) << "Index" + << std::setw(15) << "Employee ID" + << std::setw(20) << "Name" + << std::setw(20) << "Employee Type" << std::endl; for (const auto& employee : employeeList) { - std::cout << std::left << std::setw(6) << employee.first + std::cout << std::left << std::setw(10) << employee.first << std::setw(15) << employee.second->getId() - << std::setw(25) << employee.second->getEmployeeName() + << std::setw(20) << employee.second->getEmployeeName() + << std::setw(20) << Enums::getEmployeeTypeString(employee.second->getEmployeeType()) << std::endl; } std::cout << "Enter the Index: "; @@ -71,6 +75,7 @@ void FinanceExecutiveMenu::updatePayroll() std::string employeeId; double basicSalary, houseRentAllowance, foodAllowance, employeePFContribution, employerPFContribution; employeeId = getSelectedUserId(); + util::clear(); if (employeeId != "") { std::cout << "Enter the New Basic Salary: "; util::read(basicSalary); @@ -83,6 +88,8 @@ void FinanceExecutiveMenu::updatePayroll() std::cout << "Enter the New EmplyerPFContribution: "; util::read(employerPFContribution); m_zenvyController->updateSalary(employeeId, basicSalary, houseRentAllowance, foodAllowance, employeePFContribution, employerPFContribution); + std::cout << "Payroll Updated"; + util::pressEnter(); } else { throw std::runtime_error("Unexpected error occured");