By: Team T14-4 Since: Sep 2019 Licence: MIT

1. Introduction

MYMorise — Manage Your Money(MYM) is a desktop application for those who prefer tracking personal expenses on their computers. With MYMorise, you can easily see your daily expenses as well as a summary, along with other useful functionalities. More importantly, MYMorise is optimized for those who prefer to work with Command Line Interface (CLI) while still having the benefits of a Graphical User Interface (GUI). Interested? Jump to the Section 2, “Quick Start” to get started. Enjoy!

Things to note in MYMorise:

  • Expense - refers to the cost incurred in or required for something which the user would like to record

  • Budget - refers to an estimate of income and expenditure for a set period of time.

  • Default expense list - refers to all expenses that do not fall into any budgets in MYMorise.

  • The amounts used in MYMorise can only work for numbers up to 2 decimal places.

  • MYMorise’s GUI consists of 3 display panels:

    The left panel - displays all expenses recorded in MYMorise. User commands do not reference from this panel and should not be made based on this panel. Commands made should reference from the centre panel. The purpose of this panel is solely for displaying all expenses recorded only.
    The centre panel - displays the current view requested by user. All commands made are in relative to the content displayed in this panel. That is, if a user enters the command `listBudgets` or `view 1`, this panel will reflect the content requested. Subsequent commands such as `editExpense` and `editBudget` will reference from this panel. On start up, the centre panel displays the default expense list.
    The right panel - displays the visual graphics of the content shown in the centre panel only.

2. Quick Start

  1. Ensure you have Java 11 or above installed in your Computer.

  2. Download the latest MYMorise.jar.

  3. Copy the jar file to the folder you want to use as the home folder for MYMorise.

  4. Run java -jar path_to_folder/MYMorise.jar in your CLI. The GUI should appear in a few seconds.

    UIUG
  5. Type the command in the command box and press Enter to execute it.
    e.g. typing help and pressing Enter will open the help window.

  6. Some example commands you can try:

    • listDefaultExpenses : lists all expenses that do not fall into any budget.

    • expensen/Textbook a/23.50 t/education : adds an expense named Textbook to the expense list with the tag education.

    • delete3 : deletes the 3rd item shown in the centre list panel.

    • exit : exits the app

  7. Refer to Section 3, “Features” for details of each command.

3. Features

Command Format

  • Words in UPPER_CASE are the parameters to be supplied by the user

  • Items in square brackets are optional e.g n/NAME [t/TAG] can be used as n/Bread t/Food or as n/Bread.

3.1. Viewing help : help

Displays all CLI commands available.
Format: help

3.2. Listing all expenses in the default expense list : listDefaultExpenses

Shows a list of all expenses that do not fall into any budgets in MYMorise.
Format: listDefaultExpenses

3.3. Listing all budgets in the budget list : listBudgets

Shows a list of all budgets.
Format: listBudgets

An example is provided to show how the listBudgets command will result after the call.

ListBudgetUI

3.4. Adding an expense: expense

Adds an expense to track.*
Format: expense n/NAME a/AMOUNT [c/CURRENCY] [d/DATE] [t/TAG]…​

An expense with no currency specified will have the default currency set (SGD).
An expense with no date specified will default to current date and time of addition.
User may input time in the format "HHMM" in the [d/DATE] portion to specify current date with specified time
If user wants to add an expense onto the last day of a month, just specify the day to be 31 and it will automatically be added onto the last day of the month.
E.g., if user wants to add an expense to the last day of April but is unsure of which day is the last day, just specify date to be 31/4/2019 and it will be added to 30th April 2019 (last day of April).
This tip works on budget dates too!

Examples:

  • expense n/Coffee a/1.80 t/food

  • expense n/Textbook a/23.50 t/education

*An added expense may automatically fall into a budget if the date of expense falls into a budget period. Otherwise it will fall into the default expense list.

An example is provided to show how the expense command will result after the call.

AddExpenseUI

3.5. Adding a budget : budget

Specifies a budget for a period beginning from the specified start date to an end date.
Format: budget n/NAME a/AMOUNT [c/CURRENCY] d/STARTDATE ed/ENDDATE

  • Sets a budget for a period beginning from STARTDATE (dd/MM/yyyy) to ENDDATE (dd/MM/yyyy) (inclusive). All expenses made during that period after the budget is set, will be included into the budget and the budget will deduct the expense to indicate how much funds are left available to spend.

  • Only expenses made that fall into the budget period after the budget is set will be included into the budget. Expenses created before the budget is set but falls into the budget period will not be included into the budget. They will remain in the default expense list.

  • Budgets may not have overlapping dates.
    Example: There is an existing budget with start date 12/1/2019 and end date 18/1/2019, then new budgets to be added cannot have start date and/or end dates from 12/1/2019 to 18/1/2019 (inclusive)

A budget with no currency specified will have the default currency set.
User may input time in the format "HHMM" in the [d/DATE] portion to specify current date with specified time

Examples:

  • budget n/Japan Travel a/4000 c/USD d/9/10/2019 ed/19/10/2019
    Sets a budget of SGD4000 for the period from Wed, 9th Oct 2019 to Sat, 19th Oct 2019.

  • budget n/January 2019 Budget a/800 c/SGD d/1/1/2019 ed/31/1/2019
    Sets a budget of SGD800 for the period from Tue, 1st Jan 2019 to Thu, 31st Jan 2019.

An example is provided to show how the budget command will result after the call.

AddBudgetUI

3.6. Viewing a budget : view

Views an existing budget in the budget list.
Format: view INDEX

  • Views the expenses stored in the budget, and shows the percentage amount of money left in the budget.

An example is provided to show how the View command will result after the call.

ViewBudgetUI

3.7. Editing an expense : editExpense

Edits an existing expense in the expense list.
Format: editExpense INDEX [n/NAME] [a/AMOUNT] [c/CURRENCY] [t/TAG]…

  • Edits the expense at the specified INDEX. The index refers to the index number shown in the displayed expense list. The index must be a positive integer 1, 2, 3, …​ The index is relative to what is displayed on the GUI rather than the actual index of the expense in the expense list.

  • The user has to be viewing an expense list to edit an expense.

  • At least one of the optional fields must be provided.

  • Existing values will be updated to the input values.

  • When editing tags, the existing tags of the expense will be removed i.e adding of tags is not cumulative.

  • You can remove all the expense’s tags by typing t/ without specifying any tags after it.

Examples:

  • editExpense 1 a/20.10
    Edits the amount of the first expense to be 20.10.

  • editExpense 2 n/Poets Coffee t/
    Replaces the name of the second expense to Poets Coffee and clears the existing tag.

3.8. Editing a budget : editBudget

Edits an existing budget in the budget list.
Format: editBudget INDEX [n/NAME] [a/AMOUNT] [c/CURRENCY]…

  • Edits the budget at the specified INDEX. The index refers to the index number shown in the displayed budget list. The index must be a positive integer 1, 2, 3, …​ The index is relative to what is displayed on the GUI rather than the actual index of the budget in MYMorise.

  • At least one of the optional fields must be provided.

  • Existing values will be updated to the input values.

Examples:

  • editBudget 1 n/Japan Travel a/4000
    Edits the name and the amount of the first budget to Japan Travel and 4000 respectively.

  • editBudget 2 c/USD
    Edits the currency of the second budget to USD only. Other fields remain unchanged.

3.9. Deleting an item : delete

Deletes the item at the specified index.*
Format: delete INDEX

  • Deletes the item at the specified INDEX.

  • The index refers to the index number shown in the displayed list.

  • The index must be a positive integer 1, 2, 3, …​ The index is relative to what is displayed on the GUI rather than the actual index of the stored items.

*The item to be deleted depends on the current view state. If the user is currently viewing a list of expenses, then delete will delete the expense specified by index. If the user is currently viewing a list of budgets, then delete will delete the budget specified by index.

Examples:

While viewing list of expenses

  • listDefaultExpenses
    delete 2
    Deletes the second expense in the default expense list in MYMorise.

  • find n/Coffee
    delete 1
    Deletes the first expense in the results of the find command.

While viewing list of budgets

  • listBudgets
    delete 2 Deletes the second budget in the budget list in MYMorise.

An example is provided to show how the Delete command will result after the call when user is viewing the default expense list.

Before calling Delete:

BeforeDeleteUI

After calling Delete:

AfterDeleteUI

3.10. Automatic currency conversion for foreign currencies

MYMorise is able to automatically display foreign currencies in the default currency set by the user. By default this is set to Singapore Dollars (SGD). The conversions are done in the following scenarios:

  • When an expenses specifies a currency that is not the default currency

  • When an expense specifies a currency that is different from that budget it is associated to.

This automatic conversion allows for the computation of budgets and expenses regardless of their underlying currencies to provide a cleaner experience when viewing budgets and expenses with multiple differing currencies.

The latest Foreign Exchange data for a limited set of supported currencies are updated whenever the application is launched. The list of supported currencies are as follows:

CAD HKD ISK PHP DKK HUF CZK GBP RON SEK IDR

INR

BRL

RUB

HRK

JPY

THB

CHF

EUR

MYR

BGN

TRY

CNY

NOK

NZD

ZAR

USD

MXN

SGD

AUD

ILS

KRW

PLN

3.11. Clearing a list : clear

Deletes all items in the current list.*
Format: clear

Using clear while viewing an expense list will delete all expenses in that list.
Using clear while viewing the budget list will delete all budgets in the list.

An example is provided to show how the Clear command will result after the call when user is viewing a specific budget.

Before calling Clear:

BeforeClearUI

After calling Clear:

AfterClearUI

3.12. Autocomplete

Equip with IDE-like autocomplete function for faster input and enables users to quickly fill in command arguments with autocomplete suggestions.

Suggestions include commonly used words in MYMorise and users may customize the suggestion list by changing the vocabulary.txt

When the user types, if there are suggestions for a certain input, user can press tab to autofill the first suggestion or press DOWN and UP to navigate between suggestions and then press tab or enter to autofill the selected item. User may also just click on an item to autofill.

3.13. Retrieve the history of the commands executed: history

Returns the list of history commands executed.

Press F3 to navigate to previous input; Press F4 to navigate to next input;
Use keyboard to navigate through the history will only take effect when the focus is in TextField.
UP and DOWN cannot be used here to navigate through the history since they are used to navigate through the autocomplete suggestions.

3.14. Exiting the program : exit

Exits the program.
Format: exit

3.15. Saving data

Expense and Budget data are saved in the hard disk automatically after any command that changes the data. There is no need to save manually.

3.16. Locating expenses by name: find [coming in v2.0]

Finds all expenses by name, date, tag.
Format: find [n/NAME] [d/DATE] [t/TAG]

  • Search by name and tag is case insensitive. e.g hans will match Hans

  • Search by date must use the date format dd/MM/yyyy

  • The order of the keywords does not matter. e.g. Hans Bo will match Bo Hans

  • Only the fields provided are searched.

  • Only whole words will be matched e.g. Han will not match Hans

Examples:

  • find n/Coffee
    Returns coffee and Starbucks Coffee.

  • find n/Cheesecake
    Returns any expense having names Cheesecake, eg: Strawberry Cheesecake, Blueberry Cheesecake.

3.17. Set a Recurring Expense [coming in v2.0]

{Sets a recurring expense for a specific duration and frequency.}

3.18. Undo/Redo commands [coming in v2.0]

{Allows user to undo and redo commands.}

3.19. FAQ

Q: How do I transfer my data to another Computer?
A: Run the app in the other computer and overwrite the empty data file it creates with the file that contains the data from your MYMorise/data folder.

4. Command Summary

  • Help : help

  • List Default Expenses : listDefaultExpenses

  • List Budgets : listBudgets

  • Add Expense : expense n/NAME a/AMOUNT [c/CURRENCY] [d/DATE] [t/TAG]…
    e.g. expense n/Coffee a/2.00 c/SGD t/nourishment t/school

  • Add Budget : budget n/NAME a/AMOUNT [c/CURRENCY] d/STARTDATE ed/ENDDATE e.g. budget n/Japan Travel a/4000 c/USD d/9/10/19 ed/19/10/19

  • View Budget : view INDEX

  • Edit Expense : editExpense INDEX [n/NAME] [a/AMOUNT] [c/CURRENCY] [t/TAG]…​
    e.g. editExpense 2 n/Starbucks Coffee t/nourishment

  • Edit Budget : editBudget INDEX [n/NAME] [a/AMOUNT] [c/CURRENCY]
    e.g. editBudget 3 n/Korea Travel c/KRW

  • Find : find [n/NAME] [d/DATE] [t/TAG]
    e.g. find n/Coffee d/13/12/2019 t/nourishment
    e.g. find t/nourishment

  • Delete : delete INDEX
    e.g. delete 3

  • Clear : clear

  • History: history

  • Exit : exit