Project: Homerce

Homerce is an all-in-one application that helps home-based beauty salon owners consolidate their business details - such as their schedule, appointments, clients, and services - into a single application. It also keeps track of the business’s revenue and expenses, and supports simple visualization of monthly finances. The application uses a Command Line Interface (CLI).

This portfolio aims to document the contributions that I have made to Homerce. Click here to view Galvin Leow’s code contributions.

Enhancement Implemented
A summary of the enhancements you implemented.

1. Implementation of Revenue Tracker
Revenue Tracker was implemented as it is an essential part of operating a business. Revenue tracking is bonded to the breakdown finance feature, in which this feature gives useful insights to the user.

  1. The creation of 4 user-facing commands and they are the findrev, sortrev,list and clearrev commands. (Pull Request #122)
    1. findrev command will enable the user to find revenues by date or by service code. (Issue #120)
    2. sortrev command will sort the revenue list in descending or ascending order based on the user’s input. (Issue #193, Pull Request #194)
    3. listrevcommand will list all revenue entries in the revenue list. (Issue #119)
    4. clearevcommand will clear all revenue entries in the revenue list.
  2. The creation of 2 backend capabilities that is used by the appointment manager.
    1. Appointment manager will be able to use the method to add revenue into the revenue list when its appointment is done. (Issue #98)
    2. Appointment manager will be able to use the method to delete revenue into the revenue list when its appointment is undone.

All features built will include the implementation of the components from Logic, Storage and Model.

2. Testing

  1. Included JUnit Test for Revenue Tracker, with over 90% line of code coverage on average. (Issue #208, #366, Pull Request #209, #365)
    1. Included Integration Tests across logic, model and storage components for the Revenue Tracker.
  2. Create test cases to be tested from the GUI.
  3. Conduct session to test from GUI.

Contributions to documentation
Section of which contributions were made in the documentation.

User Guide

  1. Structure of the documentation. (Pull Request #44)
  2. Terminology related to the GUI - the creation of the AnnotatedUI image. (Pull Request #313)
  3. General symbols and syntax - consolidating and documenting.
  4. Revenue Tracker
    1. Revenue Tracker Command Parameters section.
    2. Commands documentation.
    3. Screenshot images for commands’ outcome. (Pull Request #313)
  5. Command summary - the revenue tracker commands table.

Developer Guide

  1. Implementation - Revenue Tracker (Pull Request #313)
    1. Rationale.
    2. Sort & Clear revenue command
      1. Current implementation
        1. Activity diagram included.
        2. Sequence diagram included.
      2. Design consideration
  2. Use cases (Pull Request #176 , Issue #175)
    1. Add, Edit and Delete use cases were created for Service, Client, Appointment, Revenue and Expense.
    2. Done and Undone use cases were created for Appointment.

Contributions to team-based tasks

  1. Maintaining the issue tracker - ensure that issues are up-to-date and PR are linked correctly. (Issue #76)
  2. Update config file (Pull request #46)
  3. Helping my teammate fix their branch when they make a mistake in committing and merging which issues when wanting to create a pull request.

Contribution to the documentation (Extracts)

Reproduce of the parts in the guides that I have contributed. The contributions listed in this section will not be extensive, please refer to the respective documents for the full contributions.

Developer Guide

Diagrams
Activity diagram for revenue_tracker clearrev command

Figure 1. One of the activity diagrams that was added to the guide

Sequence diagram for clearrev command

Figure 2. One of the sequence diagrams that was added to the guide

Contents

When the user enters the `clearrev` command to sort the revenue list, the user input command undergoes the same command parsing as described in
[Section 3.3 Logic Component](#33-logic-component). During the execution of `ClearRevenueCommand`, Homerce will access the revenue tracker
and clear the revenue list. For example, if there are 5 entries in the list, all the revenues will be cleared.

The following steps will describe the execution of the `ClearRevenueCommand` in detail, assuming that no errors are encountered.
1. When the `execute()` method of the `ClearRevenueCommand` is called, the `ModelManager`'s `setRevenues()` method is called.
1. The `RevenueTracker` then calls the `setItems()` method on `NonUniqueList`, which set the revenue entries in the revenue list.
1. The `ObservableList` of revenues is updated to reflect the newly sorted list.
1. The `Ui` component will detect this change and update the GUI.
1. Assuming that the above steps are all successful, the `ClearRevenueCommand` will then create a `CommandResult` object and return the result.

Extract 1. Part of the implementation content for ClearRevenueCommand.

UC005: Appointment Done
Indicate that the appointment have been done.

System: Homerce

Actor: User

Preconditions: Appointment exists in appointment list.

Guarantees: Appointment indicated as done.

MSS
1. User requests to list all appointments.
2. Homerce shows a list of appointments.
3. User requests to mark a specific appointment as done.
4. Homerce indicate that the appointment have been completed.
5. Homerce adds a revenue (UC027).
6. Homerce displays all appointments in the appointment list.
7. Homerce displays a successful listed message.

Extensions
3a. Invalid index provided.
  3a1. Homerce displays an error message.
  Use case ends.

Extract 2. One of the use case for Appointment.

User Guide

Diagram addexp

Figure 3. One of the outcome screenshot that was added to the guide

Content

You can use this command to list all your revenue entries in Homerce. The list will be sorted by descending chronological order.

Format : `listrev`

Example :

You wish to list your revenues to view all the earnings that you currently have.

You can follow the steps below to list your all your revenue entries.

Steps :
1. Type `listrev` in the Command Box.
2. Press `Enter` to execute. 

Outcome : 
1. The Result Display will show a success message.
2. Homerce will list out all your revenue entries in the Revenue tab.
3. You can now see all your revenues sort by descending chronological order.

Extract 3. One of the feature command content.