Implement Complete Payments
<UserStory> PAY002: Complete Payments </UserStory>
<Changes>
1. Integrated Controller with PaymentManagementService to support payment completion workflow.
2. Implemented PaymentManagementService::completePayment with validation for invoice ID, payment mode, and status update.
3. Enhanced CustomerMenu with helper functions to display pending invoices in tabular format and allow index-based selection.
4. Added CustomerMenu::selectPaymentMode to capture payment mode choice (OFFLINE/ONLINE).
5. Updated CustomerMenu::completePayments to handle invoice selection, payment mode input, and trigger payment completion via Controller.
6. Implemented notification logic to send confirmation to customers upon successful payment.
</Changes>
<Test>
Acceptance Criteria:
1. Payment status marked completed.
2. Confirmation message shown.
3. Confirmation notification sent.
Precondition:
1. Customer is logged into the system.
2. At least one pending invoice exists for the customer.
3. Datastore is available for storing invoices and updating payment status.
Steps:
1. Navigate to Customer menu and choose "Complete Payments".
- Verify that the system lists pending invoices with tabular details.
2. Select an invoice by index.
- Verify that the chosen invoice is retrieved correctly.
3. Enter payment mode (OFFLINE/ONLINE).
- Verify that the selected mode is applied to the invoice.
4. Confirm payment completion.
- Verify that the invoice status changes to COMPLETED.
- Verify that a confirmation message is displayed.
- Verify that a notification is sent to the customer.
</Test>
<Review>
Sreeja Reghukumar, please review
</Review>
This commit is contained in:
+12
-1
@@ -1,4 +1,6 @@
|
||||
#include "Controller.h"
|
||||
#include "User.h"
|
||||
#include "Invoice.h"
|
||||
|
||||
bool Controller::login(const std::string& username, const std::string& password)
|
||||
{
|
||||
@@ -121,11 +123,20 @@ void Controller::removeComboPackage(const std::string& comboPackageID)
|
||||
|
||||
util::Map<std::string, const Invoice*> Controller::getInvoicesByUser()
|
||||
{
|
||||
return util::Map<std::string, const Invoice*>();
|
||||
User* currentUser = m_authenticationManagementService.getAuthenticatedUser();
|
||||
util::Map<std::string, Invoice*> currentUserInvoices = m_paymentManagementService.getInvoices(currentUser->getId());
|
||||
util::Map<std::string, const Invoice*> userInvoicesReadOnly;
|
||||
for (int iterator = 0; iterator < currentUserInvoices.getSize(); iterator++)
|
||||
{
|
||||
Invoice* currentInvoice = currentUserInvoices.getValueAt(iterator);
|
||||
userInvoicesReadOnly.insert(currentInvoice->getId(), currentInvoice);
|
||||
}
|
||||
return userInvoicesReadOnly;
|
||||
}
|
||||
|
||||
void Controller::completePayment(const std::string& invoiceID, util::PaymentMode paymentMode)
|
||||
{
|
||||
m_paymentManagementService.completePayment(invoiceID, paymentMode);
|
||||
}
|
||||
|
||||
util::Vector<const Notification*> Controller::getNotifications()
|
||||
|
||||
Reference in New Issue
Block a user