User Guide
UniCa$h is a desktop application used for university students who want to be more financially conscious, optimized for use via a Command Line Interface (CLI) while still having the benefits of a Graphical User Interface (GUI). If you can type fast, UniCa$h can get your finance management tasks done faster than traditional GUI apps.
Quick Start
Installation
-
Ensure you have Java
11
or above installed in your Computer. -
Download the latest
unicash.jar
from GitHub. -
Copy the file to the folder you want to use as the home folder for your UniCa$h.
-
Open a command terminal,
cd
into the folder you put the jar file in, and use thejava -jar unicash.jar
command to run the application.A GUI similar to the below should appear in a few seconds. Note how the app contains some sample data.
-
Type a command in the command box and press
Enter
to execute it. e.g. typinghelp
and pressingEnter
will execute thehelp
command and open the help window.To get started with UniCa$h, you can run the
add_transaction
command! -
Refer to the Features below for details of each command.
Command Breakdown
Commands in UniCa$h have the following structure:
command_word (ARGUMENT) (PREFIXES)
command_word | ARGUMENT | PREFIXES |
---|---|---|
Represents the command to run. May be referenced by alternative shorthands as described in each command section. All commands and their alternatives are always case-insensitive. | Comes before all prefixes and often used to reference an index within the transactions list Often optional |
Often referred to as “Parameters” Commonly used to specify various attributes/properties for a given command_word |
Argument Types
Argument | Meaning | Constraints | Remarks |
---|---|---|---|
INDEX 1,2 |
Index of transaction in transaction list | Integer indices that must be >= 1 (positive integer) and are one-indexed, i.e. start with 1 , not 0 . |
Commonly used in edit and delete to reference transactions in a transaction list |
Notes:
INDEX
uses positive integers which we define as integers that are strictly greater than0
.- UniCa$h divides the error handling for
INDEX
into two cases, invalid numbers (non-positive integers, i.e.<= 0
values, values larger thanInteger.MAX_VALUE
or non-integer values e.g.10.2
) are treated as invalid command formats while values that exceed the transaction list will be treated as being an invalid index as the supported values are[1, transaction list size]
.
INDEX
is parsed this way, please refer to our developer guide on how some commands like delete_transaction
handles INDEX
.
Prefixes
Prefixes are in the format:
prefix/Value
Prefixes have several variations with different notations:
Mandatory | Optional1 | |
---|---|---|
Not variadic | prefix/Value |
[prefix/Value] |
Variadic | prefix/Value... |
[prefix/Value]... |
Notes:
- Optional fields imply that the omission of the field, not the absence of value when used, is supported. This means that
l/
is NOT an optional parameter, but rather a blank one.
Prefix Types
Note that each command might use the prefixes slightly differently so refer to each command’s details for more information.
Prefix | Constraints | Remarks | Valid | Invalid |
---|---|---|---|---|
n/ (Transaction name) |
At least 1 character but no more than 500 characters. Only supports alphanumeric characters, spaces, (, ), _, @, -, #, &, ., and , characters. |
Blank names are not allowed. | n/Hi (John) |
n/ n/Two ^ |
type/ (Type of transaction) |
Only supported values are expense and income . |
Case-sensitive, any other values, including blank values (i.e. type/ ), will be rejected. |
type/expense type/income |
type/ type/EXPENSE type/hi |
amt/ 1(Monetary amount of budget and transactions) |
Values must be >= 0.00 and <= 2,147,483,647 . |
Supported inputs allow an optional leading $ character and all amount values are rounded to the nearest 2 decimal places so $0.001 will be treated as $0.00 . |
amt/0 amt/$10.09 amt/$0.00 |
amt/ amt/-100 amt/hi amt/%0.00 |
dt/ (Date & time of transaction) |
Only supported formats are: dd-MM-yyyy HH:mm , yyyy-MM-dd HH:mm , and dd MMM yyyy HH:mm |
If no value is provided, i.e. dt/ , then it defaults to the current date time when the command is run, using the same date time as the user’s system clock. |
dt/ dt/15-02-2023 14:30 dt/2023-02-15 14:30 dt/15 Feb 2023 14:30 |
dt/15 August 2023 dt/ 14:30 dt/15-11-2023 |
l/ (Location of transaction) |
At least 1 character but no more than 500 characters. Only supports alphanumeric characters, spaces, (, ), _, @, -, #, &, ., and , characters. |
Blank locations are not allowed. Omit this prefix entirely to indicate that there is no location, l/ alone is not permitted (blank location). |
l/NTUC @ UTown |
l/ l/Two ^ |
c/ (Category of transaction) |
At least 1 character but no more than 15 characters. Only supports alphanumeric characters. |
Blank categories are not allowed. Omit this prefix entirely to indicate that there is no category, c/ alone is not permitted (blank category).Categories are always saved in lowercase. |
c/Hi c/JustExactly15Ch |
c/ c/Over15Characters c/#books |
month/ (Month that transaction was performed) |
Values must be >= 1 and <= 12 |
Assumes January corresponds to 1 , February to 2 and so on. |
month/1 month/10 month/12 |
month/ month/0 month/-10 month/15 |
year/ (Year that transaction was performed) |
Values must be >= 1920 and <= 2,157,483,647 |
Intentional restriction to have years be >= 1920 . |
year/1920 year/2023 |
year/ year/1919 |
interval/ 2(Budget interval) |
Only supported values are day , week , and month . |
Case-sensitive, any other values, including blank values (i.e. interval/ ), will be rejected. |
interval/day interval/week interval/month |
interval/ interval/DAY interval/hi |
Notes:
- Amounts can be exactly
$0.00
as users may want to simply track that a transaction is present but not specify the amount. User might also want to track financial events not involving currency exchange, such as barter trading, free gifts, etc. - Intervals work by filtering by the specified time period.
- For
day
intervals, only transactions of the same day are found. - For
week
intervals, only transactions of the same week of year are found. - For
month
intervals, only transactions of the same month are found.
- For
User Interface (UI) Overview
When UniCa$h is first opened, it would look something like the image shown earlier near the top of the user guide.
The UI components and features are elaborated explicitly in our Developer Guide which can be found here. However, for ease of reference of some key UI terms used in this User Guide, the annotated image of the UniCa$h window is duplicated below.
Features
Features Overview
UniCa$h comprises four primary feature groups:
- Transaction Management
- Add Transaction (
add_transaction
) - Delete Transaction (
delete_transaction
) - Edit Transaction (
edit_transaction
) - List Transactions (
list
) - Get Transaction (
get
) - Find Transactions (
find
) - Clear All Transactions (
clear_transactions
)
- Add Transaction (
- Budget Management
- Set Budget (
set_budget
) - Clear Budget (
clear_budget
) - Get Budget (
get_budget
)
- Set Budget (
- Financial Statistics
- Get Total Expenditure (
get_total_expenditure
) - Summary Statistics (
summary
)
- Get Total Expenditure (
- General Utility
- Show Help (
help
) - Reset UniCa$h (
reset_unicash
) - Exit UniCa$h (
exit
)
- Show Help (
The instructions for the usage of each command within each feature group are elaborated in the sections below.
For the command examples mentioned herein, you can assume that Output
refers to the text
shown in the Results Display
, unless stated otherwise.
Transaction Management
Transaction management allows users to directly manage their personal finances by adding, editing, deleting, and finding transactions, among other management features.
Add Transaction
Adds a new Transaction
to UniCa$h.
Command: add_transaction n/NAME type/TYPE amt/AMOUNT [dt/DATETIME] [l/LOCATION] [c/CATEGORY]
Take note the following prefixes definition overrides the one in the prefix types section
Prefix | Constraints | Remarks | Valid | Invalid |
---|---|---|---|---|
l/ (Location of transaction) |
At least 1 character but no more than 500 characters. Only supports alphanumeric characters, spaces, (, ), _, @, -, #, &, ., and , characters. |
If no value is provided, i.e. l/ , then it defaults to - . |
l/ l/NTUC @ UTown |
l/Two ^ |
Command Words Accepted: add_transaction
, add
, at
(case-insensitive)
There is a limit of 5
Category
that can be added to a Transaction
. There is a limit of 100,000 transactions you can add to UniCa$h.
Successful Execution
Example 1
Case: Add transaction with name, amount, type, datetime, location and a category.
Input:
add_transaction n/Buying groceries type/expense amt/300 dt/18-08-2023 19:30 l/ntuc c/household
Output:
New transaction added: Name: Buying groceries; Type: expense; Amount: $300.00; Date: 18 Aug 2023 19:30; Location: ntuc; Categories: #household
Example 2
Case: Add transaction with name, amount and type.
Input:
add_transaction n/Working type/income amt/8000
Output:
New transaction added: Name: Working; Type: income; Amount: $8000.00; Date: 28 Oct 2023 19:01; Location: -; Categories:
Remarks: The value of the
Date
output as shown above could be different from the one displayed in your application. Refer to prefix types section for further elaboration on the omission of thedt/
prefix.
Failed Execution
Example 1
Case: Missing compulsory fields.
Input:
add_transaction
Output:
Invalid command format! add, add_transaction, at: Adds a transaction to UniCa$h. Parameters: n/NAME type/TYPE amt/AMOUNT dt/DATETIME l/LOCATION [c/CATEGORY]... Example: add_transaction n/Buying groceries type/expense amt/300 dt/18-08-2023 19:30 l/ntuc c/household
Example 2
Case: Duplicate categories with valid compulsory fields.
Input:
add_transaction n/Buying groceries type/expense amt/300 c/household c/household
Output:
All categories must be case-insensitively unique, duplicate categories are not allowed.
Example 3
Case: More than 5 categories with valid compulsory fields.
Input:
add_transaction n/Buying groceries type/expense amt/300 c/household c/entertainment c/education c/fun c/school c/test
Output:
There should only be a maximum of 5 unique categories.
Example 4
Case: More than 100,000 transactions added.
Precondition: UniCa$h already has
100,000
transactions stored.Input:
add n/test amt/300 type/expense
Output:
UniCa$h supports up to a maximum of 100,000 transactions.
Edit Transaction
Edits an existing transaction in UniCa$h.
Command: edit_transaction INDEX [n/NAME] [type/TYPE] [amt/AMOUNT] [dt/DATETIME] [l/LOCATION] [c/CATEGORY]
Command Words Accepted: edit_transaction
, edit
, et
(case-insensitive)
Similar to the Add command, there is a limit of 5
Category
that can be added to a Transaction
. Important notes:
- The value of
INDEX
provided must be between 1 and the total number of available transactions (inclusive). - While all options besides
INDEX
are optional, you must specify at least one field you wish to edit (i.e.Name
,Type
,Amount
,Datetime
,Location
, orCategory
). - If the
Name
,Type
, orAmount
options are present in the edit command, the values provided for these options cannot be empty. (See Failed Execution (Example 3) below) - Specially for the Edit feature: Empty values are allowed for
Datetime
,Location
, andCategory
. If these options are provided in the edit command but left empty, the default values that these fields will take are stated in the table below. (See Successful Execution (Example 3) below) - The
INDEX
option must be specified first. The order in which you specify the other options does not matter. - Editing a transaction’s category will result in the replacement of all existing categories.
- For example, in the case of a
Transaction
with two existing categories (Entertainment and Hobbies), editing it withedit INDEX c/Education
will replace all existing categories, leaving the transaction with a single category, “Education”.
- For example, in the case of a
Default Values for Blank Options:
Option Name | Default Value |
---|---|
INDEX | (NA) |
n/ | (NA) |
type/ | (NA) |
amt/ | (NA) |
dt/ | Current date time of system’s clock |
l/ | - |
c/ | (Blank) |
Successful Execution
Example 1
Case: Edit an existing transaction’s name, amount, type, datetime, location and categories.
Input:
edit_transaction 5 n/Tuition Income type/income amt/1000 dt/2023-10-31 10:00 l/John home c/tuition
Output:
Edited Transaction: Name: Tuition Income; Type: income; Amount: $1000.00; Date: 31 Oct 2023 10:00; Location: John home; Categories: #tuition
Example 2
Case: Edit an existing transaction’s datetime and amount only.
Input:
edit_transaction 5 dt/31 Oct 2023 12:00 amt/1200
Output:
Edited Transaction: Name: Tuition Income; Type: income; Amount: $1200.00; Date: 31 Oct 2023 12:00; Location: John home; Categories: #tuition
Example 3
Case: Edit an existing transaction’s location and categories to default.
Input:
edit_transaction 5 l/ c/
Output:
Edited Transaction: Name: Tuition Income; Type: income; Amount: $1200.00; Date: 31 Oct 2023 12:00; Location: -; Categories:
Failed Execution
Example 1
Case: No attributes to edit
Input:
edit_transaction 5
Output:
At least one field to edit must be provided.
Example 2
Case: No index provided
Input:
edit_transaction n/Donation
Output:
Invalid command format! edit_transaction: Edits the details of the transaction identified by the index number used in the displayed transaction list. Argument: Index (must be a positive integer) Parameters: [n/Name] [type/Type] [amt/Amount] [dt/DateTime] [l/Location] [c/Category]... Example: edit_transaction 1 n/Buying groceries type/expense amt/300 dt/18-08-2023 19:30 l/NTUC c/Food
Example 3
Case: Attempting to leave compulsory field (E.g.
name
) blankInput:
edit_transaction 5 n/
Output:
Names should only contain alphanumeric characters, spaces, (, ), _, @, -, #, &, ., and ',', up to 500 characters and it should not be blank
Example 4
Case: There are only 5 transactions, but the user tries to edit expense 6
Input:
edit_transaction 6 n/Dog food
Output:
The transaction index provided is invalid
Example 5
Case: Wrong input format (e.g.
Datetime
is not specified in any of the accepted formats)Input:
edit_transaction 5 dt/23 March 2023 8:15pm
Output:
DateTime should be in either of the following formats: 1. dd-MM-uuuu HH:mm 2. uuuu-MM-dd HH:mm 3. dd MMM uuuu HH:mm
Delete Transaction
Deletes a Transaction
from UniCa$h.
Command: delete_transaction INDEX
Command Words Accepted: delete_transaction
, delete
, del
(all case-insensitive)
Command Argument: INDEX
is the displayed transaction index
of the transaction to be deleted, as shown in the currently displayed Transactions List
.
Arguments | Optional? | Purpose |
---|---|---|
INDEX |
No | Transaction index of the transaction to be deleted |
INDEX
constraints for which you can refer to the
command breakdown’s Argument Types section. You can also refer to the
UI Layout’s Transaction Card section to learn about the transaction index values that
can change based on the current Transactions List
configuration.
Successful Execution
Example 1
Case: Delete a transaction with the correctly specified
INDEX
.Input:
delete_transaction 1
Output:
Deleted Transaction: Name: Evening with friends; Type: expense; Amount: $49.50; Date: 17 Sep 2023 00:00; Location: Clarke Quay; Categories: #social
delete
command can be triggered even if a transaction is out of the visible window
as long as that particular transactions exists in the current Transactions List
configuration.
Failed Execution
Example 1
Case: Missing compulsory fields i.e.
INDEX
Input:
delete_transaction
Output:
Invalid command format! delete, delete_transaction, del: Deletes the transaction identified by the index number used in the displayed transaction list. Argument: Index (must be a positive integer) Example: delete_transaction 1
Example 2
Case: Invalid
INDEX
providedContext:
INDEX
given as10
when only5
transactions are present in the currentTransaction List
configuration.Input:
delete_transaction 10
Output:
The transaction index provided is invalid
Example 3
Case: Invalid
INDEX
providedContext:
INDEX
given as a negative numberInputs:
delete_transaction -1
Output:
Invalid command format! delete, delete_transaction, del: Deletes the transaction identified by the index number used in the displayed transaction list. Argument: Index (must be a positive integer) Example: delete_transaction 1
Example 4
Case: Invalid
INDEX
providedContext:
INDEX
given as a number larger thanInteger.MAX_VALUE
Inputs:
delete_transaction 10000000000000000
Output:
Invalid command format! delete, delete_transaction, del: Deletes the transaction identified by the index number used in the displayed transaction list. Argument: Index (must be a positive integer) Example: delete_transaction 1
Get Transaction
Retrieves a Transaction
from UniCa$h.
Command: get INDEX
Command Words Accepted: get
, g
(all case-insensitive)
Command Argument: INDEX
is the displayed transaction index
of the transaction to be retrieved, as shown in the currently displayed Transactions List
.
Arguments | Optional? | Purpose |
---|---|---|
INDEX |
No | Transaction index of the transaction to be retrieved |
INDEX
constraints for which you can refer to the
command breakdown’s Argument Types section. You can also refer to the
UI Layout’s Transaction Card section in the Developer Guide
to learn about the transaction index values that can change based on the current Transactions List
configuration.
Successful Execution
Example 1
Case: Retrieve a transaction with the correctly specified
INDEX
.Input:
get 5
Output:
Transaction 5 retrieved: Name: Taxi; Type: expense; Amount: $20.00; Date: 18 Sep 2023 11:30; Location: Bugis; Categories: #transport
get
command can be triggered even if a transaction is out of the visible window
as long as that particular transactions exists in the current Transactions List
configuration.
Failed Execution
Example 1
Case: Missing compulsory fields i.e.
INDEX
Input:
get
Output:
Invalid command format! get, g: Displays expanded details of a specific transaction. Argument: Index (must be a positive integer) Example: get 2
Example 2
Case: Invalid
INDEX
providedContext:
INDEX
given as10
when only5
transactions are present in the currentTransaction List
configurationInput:
get 10
Output:
The transaction index provided is invalid
Example 3
Case: Invalid
INDEX
providedContext:
INDEX
given as a negative numberInputs:
get -1
Output:
Invalid command format! get, g: Displays expanded details of a specific transaction. Argument: Index (must be a positive integer) Example: get 2
Example 4
Case: Invalid
INDEX
providedContext:
INDEX
given as a number larger thanInteger.MAX_VALUE
Inputs:
get 10000000000000000
Output:
Invalid command format! get, g: Displays expanded details of a specific transaction. Argument: Index (must be a positive integer) Example: get 2
Find Transactions
Finds a Transaction
in UniCa$h.
Command: find [n/NAME] [l/LOCATION] [c/CATEGORY]
Command Words Accepted: find
, search
, f
(all case-insensitive)
Command Parameters:
Parameter | Optional? | Purpose |
---|---|---|
n/ | Yes* | Search keyword for the name of a transaction. |
l/ | Yes* | Search keyword for the location of a transaction. |
c/ | Yes* | Search keyword for a category tagged to a transaction |
Any of the above | Min. one option | At least one option must be specified for the find command |
Important notes:
- While all options are optional, at least one option must be specified in total.
- Only one instance of each option can be specified, i.e.
n/Friends n/Dinner
is invalid as the name option is specified more than once. - All keywords specified must match in order for a transaction to be displayed.
- For each keyword, a substring match is required, thus
find n/with friends
will search for transactions whose name contains the string “with friends”. However, an exact full name match is not required thus, a transaction with the nameLunch with friends outside
is still considered a match.
Transactions List
and this filter persists across commands.
Therefore, it is expected that any changes to the
Transactions List
after the find
command
is used may result in transactions being hidden as they may no longer abide by the filter applied by find
.
Use the
list
command when this occurs to reset the filter and view all transactions
Successful Execution
Example 1
Case: Find a transaction with the correctly specified name option.
Input:
find n/with friends
Output:
2 transactions listed!
Example 2
Case: Find a transaction with the correctly specified category option.
Input:
find c/food
Output:
3 transactions listed!
Example 3
Case: Find a transaction with multiple correctly specified options.
Input:
find n/lunch c/food
Output:
2 transactions listed!
Note that only transactions that match all the given keywords are matched!
Failed Execution
Example 1
Case: Command entered with no parameters
Input:
find
Output:
Invalid command format! find, search, f: Finds all transactions whose properties match all of the specified keywords (case-insensitive) and displays them as a list with index numbers. Only one keyword can be specified for each property and at least one keyword must be provided in total. Parameters: [n/Name] [l/Location] [c/Category] Example: find, search, f n/Buying groceries l/NTUC c/Food
Example 2
Case: Command entered with multiple instances of the same option
Input:
find n/with n/friends
Output:
Multiple values specified for the following single-valued field(s): n/
Example 3
Case: Command entered with UniCa$h prefixes that are unsupported by
find
commandInput:
find type/expense
Output:
Invalid command format! find, search, f: Finds all transactions whose properties match all of the specified keywords (case-insensitive) and displays them as a list with index numbers. Only one keyword can be specified for each property and at least one keyword must be provided in total. Parameters: [n/Name] [l/Location] [c/Category] Example: find, search, f n/Buying groceries l/NTUC c/Food
List Transactions
Shows the list of all transactions in UniCa$h.
Command: list
Command Words Accepted: list
, ls
(case-insensitive)
Successful Execution
Example 1
Case: Calling the command when there are no existing transactions.
Input:
list
Output:
Listed all transactions.
Output:
Note: There are no transactions to display, so the GUI will be empty. This is expected behaviour.
Example 2
Case: Calling the command with existing transactions.
Input:
list
Output:
Listed all transactions.
Output:
Failed Execution
Example 1
Case: Command entered with parameters
Input:
list 5
Output:
Command not recognised. Try using the command list, list_transactions, ls without any parameters instead.
Clear Transactions
Clears all transactions in UniCa$h.
Command: clear_transactions
Command Words Accepted: clear_transactions
only (case-insensitive)
Transactions List
configuration is still subject to any filters applied by find
or get_total_expenditure
,
which you can read about under the find
command section here
or under the get_total_expenditure
command section here.
Successful Execution
Example 1
Case: Command entered with correct format
Input:
clear_transactions
Output:
All transactions have been cleared!
Failed Execution
Example 1
Case: Command entered with any trailing text
Input:
clear_transactions asdfg
[OR]clear_transactions today
Output:
Clear transactions command cannot have trailing arguments. Use the command clear_transactions without any trailing arguments.
clear_transactions
command is not
meant for batch deletion of specific groups of transaction nor for mass deletion of
transactions present in a particular Transaction List
configuration, and that this
command will always delete all transactions in UniCa$h.
Budget Management
The budget serves as an observable metric used to allow users to understand when their expenses over a given interval. They can use this information to better understand if they should be controlling their spending or adjusting their budget.
Set Budget
Sets the user’s budget on UniCa$h to be a given amount and within a given interval.
Command: set_budget amt/Amount interval/Interval
Command Words Accepted: set_budget
, sb
, budget
Successful Execution
Example 1
Case: Set budget of $600 for every month.
Input:
set_budget amt/600 interval/month
Output:
New budget added: Amount: $600.00; Interval: month
Failed Execution
Example 1
Case: Missing amount.
Input:
set_budget interval/month
Output:
Invalid command format! set_budget, sb, budget: Sets the user's budget on UniCa$h. Parameters: amt/Amount interval/Interval Example: set_budget amt/300 interval/day
Example 2
Case: Missing interval.
Input:
set_budget amt/600
Output:
Invalid command format! set_budget, sb, budget: Sets the user's budget on UniCa$h. Parameters: amt/Amount interval/Interval Example: set_budget amt/300 interval/day
Example 3
Case: No fields.
Input:
set_budget
Output:
Invalid command format! set_budget, sb, budget: Sets the user's budget on UniCa$h. Parameters: amt/Amount interval/Interval Example: set_budget amt/300 interval/day
Example 4
Case: Negative amount.
Input:
set_budget amt/-123 interval/day
Output:
Amounts must be within range of [0, 2147483647] and either start with $ or nothing at all
Example 5
Case: Invalid interval value.
Input:
set_budget amt/600 interval/hi
Output:
Interval value must be one of the following: day, week, month
Clear Budget
Clears the user’s budget set in UniCa$h. If no budget is set yet, the user is prompted to set one first instead.
Command: clear_budget
Command Words Accepted: clear_budget
, cb
(case-insensitive)
clear_budget
will not parse any additional argument or parameters. Even if additional argument or parameters are given, any existing budget will be cleared regardless, without any additional effects.
Successful Execution
Example 1
Case: Clear user set budget.
Input:
clear_budget
Output:
Budget cleared.
Example 2
Case: Clear without set budget.
Input:
clear_budget
Output:
No budget to clear. Consider using set_budget amt/Amount interval/Interval first!
Get Budget
Retrieves the set budget and the spending over the given interval. If no budget has been set, the user will be prompted to set one first instead.
The user’s spending is calculated by: budget - interval expenses
.
Expenses that fall within the interval are included and the total expense is computed relative to the budget.
1. Daily: expenses that occur within the same day of year (i.e. the expenses that occur on day
x
are included if today is day x
, expenses on day x +/- 1
are not includued)
2. Weekly: expenses that occur within the same week of year. This is dependent on the current year, for more information refer to the documentation here.
3. Monthly: expenses that occur within the same month (i.e. the expenses that occur in September are included if today falls under September)
list
command first.
Command: get_budget
Command Words Accepted: get_budget
, gb
(case-insensitive)
get_budget
will not parse any additional argument or parameters. Even if additional argument or parameters are given, no additional effects will be triggered.
Successful Execution
Example 1
Case: Get user’s set budget and spending remainder.
Input:
get_budget
Output:
Monthly budget of $600.00 Net amount of $585.00
Example 2
Case: Get budget without budget set.
Input:
get_budget
Output:
No budget set. Use set_budget amt/Amount interval/Interval
Financial Statistics
Get Total Expenditure
Retrieves the total expenditure by month with optional filters for category and year. Also filters the transaction list by the given month, year, and category.
list
command first.
Command: get_total_expenditure month/Month [c/Category] [year/Year]
year/
prefix, if not provided, is the current year in which the command is executed.
Command Words Accepted: get_total_expenditure
, get_total_exp
, gte
(case-insensitive)
get_total_expenditure
command, like find
, creates a filter on the transactions list and this filter persists across commands.
Therefore, it is expected that any changes to the transaction list after
get_total_expenditure
may result in transactions being hidden as they may no longer abide by the filter applied by get_total_expenditure
.
Use the
list
command when this occurs to view all transactions and clear any filters.
For more information on how
get_total_expenditure
is computed, refer to the developer guide’s section for it.
Successful Execution
Example 1
Case: Get total expenditure with month only.
Input:
get_total_expenditure month/10
Output:
Your total expenditure in October 2023 was $1028.00
Note: The year defaults to the current year (2023 in this case) and the transaction list will be filtered
Example 2
Case: Get total expenditure with month and year.
Input:
get_total_expenditure month/10 year/2023
Output:
Your total expenditure in October 2023 was $1028.00
Example 3
Case: Get total expenditure with month and category.
Input:
get_total_expenditure month/9 c/social
Output:
Your total expenditure in September 2023 for "social" was $49.50
Example 4
Case: Get total expenditure with month, category, and year.
Input:
get_total_expenditure month/9 c/shopping year/2023
Output:
Your total expenditure in September 2023 for "shopping" was $109.00
Example 5
Case: Get total expenditure but no matches.
Input:
get_total_expenditure month/1
Output:
Your total expenditure in January 2023 was $0.00
Failed Execution
Example 1
Case: No month provided.
Input:
get_total_expenditure
Output:
Invalid command format! get_total_expenditure, get_total_exp, gte: Retrieves the total expenditure by month with optional filters for category and year. Parameters: month/Month [c/Category] [year/Year] Example: get_total_expenditure month/10 c/Food year/2006
Example 2
Case: Negative month.
Input:
get_total_expenditure month/-10
Output:
Month must be between 1 and 12 (inclusive).
Example 3
Case: Month greater than 12.
Input:
get_total_expenditure month/14
Output:
Month must be between 1 and 12 (inclusive).
Example 4
Case: Month is not an integer.
Input:
get_total_expenditure month/hi
Output:
Invalid month value, must be an integer!
Example 5
Case: Year is less than 1920.
Input:
get_total_expenditure month/9 year/1800
Output:
Year must be after 1920.
Example 6
Case: Year is not an integer.
Input:
get_total_expenditure month/9 year/hi
Output:
Invalid year value, must be an integer!
Example 7
Case: Category contains non-alphanumeric characters.
Input:
get_total_expenditure month/9 c/@123
Output:
Category names should be alphanumeric and up to 15 characters long.
Example 8
Case: Category is blank.
Input:
get_total_expenditure month/9 c/
Output:
Category names should be alphanumeric and up to 15 characters long.
Example 9
Case: Category length is greater than 15.
Input:
get_total_expenditure month/9 c/abcdefghijklmnopqrs
Output:
Category names should be alphanumeric and up to 15 characters long.
Summary Statistics
Displays a summary of the expenses saved in UniCa$h.
Command: summary
Command Words Accepted: summary
(case-insensitive)
summary
will be ignored.
Please be aware that if you open the summary window and subsequently delete all expenses from UniCa$h without closing the summary window, it is intended to stay open until you manually close it. In such a scenario, the summary window will look like the following:
Important notes:
- When making changes to your transactions in UniCa$h, the plots in the summary window will automatically update to reflect your modifications.
This indicates that it is possible for only one plot to have data, while the other does not. (E.g. If there are only expenses recorded from over a year ago, then only the pie chart will display data, while the line chart will not.)
Successful Execution
Example 1
Case: There are expenses saved in UniCa$h
Input:
summary
Output:
The output displayed in the main window is:
Opened UniCa$h summary window.
Here is what the summary pop-up window looks like:
Example 2
Case: There are no expenses saved in UniCa$h, and the summary window was not originally opened.
Input:
summary
Output:
You have no expenses to summarize.
Note: The summary pop-up window does not appear.
General Utility
Help
Get help for UniCa$h.
Command: help COMMAND_WORD
Command Words Accepted: help
, h
(case-insensitive)
Command Argument: COMMAND_WORD
is the command to get help for. If no
argument is specified, a general help message is shown as well as a pop up
containing a link to our User Guide.
COMMAND_WORD
, do help
with no arguments
Successful Execution
Example 1
Case: Get general help.
Input:
help
Output:
Welcome to UniCa$h! For more detailed help on a command: help COMMAND_WORD Available Commands: add delete edit list find get get_total_expenditure summary set_budget get_budget clear_budget clear_transactions reset_unicash help exit
The following output is shown as well as the popup.
Example 2
Case: Get general for a specific command.
Input:
help add_transaction
Output:
add, add_transaction, at: Adds a transaction to UniCa$h. Parameters: n/Name type/Type amt/Amount [dt/DateTime] [l/Location] [c/Category]... Example: add n/Buying groceries type/expense amt/300 dt/18-08-2023 19:30 l/NTUC c/Food
Failed Execution
Example 1
Case: Get help for an unknown command.
Input:
help foo
Output:
Unknown command help, h: Shows UniCa$h general usage instructions and specific command usage by specifying the command word. Argument: COMMAND_WORD (must be a valid command word present in the help command) Example: help add
Reset UniCash
Resets UniCa$h to its default state with the default transactions
Command: reset_unicash
Command Words Accepted: reset_unicash
only (case-insensitive)
Clear Transactions
, this command overwrites all existing transactions in UniCa$h.
Thus, as an added layer of safety, the command has no short form alternatives.
It also cannot be followed with any arguments, options, or non-whitespace text.
Transactions List
configuration is still subject to any filters applied by find
or get_total_expenditure
,
which you can read about under the find
command section here
or under the get_total_expenditure
command section here.
Successful Execution
Example 1
Case: Command entered with correct format
Input:
reset_unicash
Output:
UniCa$h has been successfully restored to its original state!
Failed Execution
Example 1
Case: Command entered with random trailing text.
Input:
reset_unicash asdf
Output:
Reset command cannot have trailing arguments. Use the command reset_unicash without any trailing arguments.
Exit UniCa$h
Exit the UniCa$h application.
Command: exit
Command Words Accepted: exit
, quit
, bye
(case-insensitive)
Summary
Action | Command | |
---|---|---|
Add Transaction | add_transaction n/Name type/Type amt/Amount [dt/Datetime] [l/Location] [c/Category]... |
|
Delete Transaction | delete_transaction INDEX |
|
Delete All Transactions | clear_transactions |
|
Edit Transaction | edit_transaction INDEX [n/Name] [type/Type] [amt/Amount] [dt/Datetime] [l/Location] [c/Category]... |
|
List All Transactions | list |
|
Find Transactions | find [n/Name] [c/Category] [l/Location] |
|
Get Total Expenditure | get_total_expenditure month/Month [c/Category] [year/Year] |
|
Summary Statistics | summary |
|
Set Budget | set_budget amt/Amount interval/Interval |
|
Clear Budget | clear_budget |
|
Get Budget | get_budget |
|
Reset UniCa$h to default | reset_unicash |
|
Show Help Window | help |
|
Show Welcome Message with Summary | help |
|
Show Command Specific Help | help [COMMAND_WORD] |
Known Issues
- Hard to see scrollbar
- Help pop-up window shifts to the bottom left corner of the screen before re-centering on
help
command. Steps to reproduce the issue:- Type help in the command box.
- Shift the pop-up window to anywhere on the screen.
- Close the pop-up window.
- Type help in the command box again.
- The pop-up window will shift to the bottom left corner before re-centering itself.
FAQ
Q: How do I transfer my data to another Computer?
A: Install the app in the other computer and overwrite the empty data file it creates with the file that contains the data of your previous UniCa$h home folder.
Acknowledgements
This project is based on the AddressBook-Level3 project created by the SE-EDU initiative.
The UniCa$h App icon is an open source icon named “wallet”, available for personal and commercial uses, sourced from here.
UniCa$h uses the Inter font throughout, licensed under the Open Font License and available for personal and commercial uses, sourced from here.
Terminology
Term | Meaning |
---|---|
Transaction | Represents both an expense or an income. Expenses cause a net loss while incomes cause a net gain |
Expenditure | Total amount for transactions labelled as “expense” |
Budget | Observable metric on expenditure, tracking daily/weekly/monthly (only one) expense relative to preset budget amount |