By: AY1920S1-CS2103T-W12-3 Since: SEPT 2019 Licence: MIT

1. Introduction

PalPay is for those who prefer to use a desktop app for managing personal finances. More importantly, PalPay is optimized for those who prefer to work with a Command Line Interface (CLI) while still having the benefits of a Graphical User Interface (GUI). If you can type fast, PalPay can get your finance management tasks done faster than traditional GUI apps. This User Guide is written for the users of PalPay as an introductory document of the application. You are strongly encouraged to read this document before using the application to enjoy the full functionality of the application. Ready to start your journey to financial freedom? Jump to Section 2, “Quick Start” to get started. Enjoy!

2. Quick Start

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

  2. Download the latest PalPay.jar here.

  3. Copy the file to the folder you want to use as the home folder for your finance manager.

  4. Double-click the file to start the app. The GUI should appear within a few seconds. Starting up, there should be no prior data pre-stored in the application. The GUI should look like this:

startingUp
Figure 1. Initial GUI of PalPay
  1. Your overall balance is reflected at the right bottom of PalPay window.

  2. Type your command in the command box and press Enter to execute it.
    Example: Typing help and pressing Enter will open the help window.

  3. Some example commands you can try:

    • view transaction : shows list of your transactions.

    • in $/100 n/mother d/31102019 c/allowance : adds an income to your personal finance of 100 dollars with the category mother and the description allowance.

    • out $/3 n/pie d/19112019 c/food : adds an expenditure to your personal finance of 3 dollars with the category food and the description pie.

    • exit : exits the app

  4. 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.
    Example: For in $/AMOUNT n/ITEM d/DATE, AMOUNT, ITEM and DATE are parameters which can be used as in $/300 n/concert d/19112019.

  • Items in square brackets are optional.
    Example: n/ITEM [c/CATEGORY] can be used as n/coke c/drinks or as n/coke.

  • Items with ​ after them can be used multiple times including zero times.
    Example: [n/NAME]…​ can be used as   (i.e. 0 times), n/Amy, n/Amy n/Betty etc.

  • Parameters can be in any order.
    Example: If the command specifies $/AMOUNT n/ITEM, n/ITEM $/AMOUNT is also acceptable.

  • Parameters that need to be concatenated together are represented as PARAM+PARAM.
    Example: TYPE+INDEX refers to joining TYPE and INDEX together without a space, such as t1.

3.1. Logging Income : in

Adds an income of your personal finance
Format: in $/AMOUNT n/ITEM d/DATE [c/CATEGORY]

  • AMOUNT accepts the value of this income. The AMOUNT value must be non-negative, non zero and lesser than 1,000,000.

  • ITEM accepts the description of this income.

  • DATE accepts accepts the date of this transaction

  • CATEGORY accepts the CATEGORY for this income. An in` Transaction can be created without CATEGORY inputs.

  • in updates the Bank Account with a net positive amount (e.g. in n/work $/1000 d/10102019 will increase Bank Acount balance by $1000)

Examples:

  • in $/100 d/01012019 n/errand c/work c/drinks

  • in $/200 d/29022020 n/mom c/family

  • in $/120 d/31122019 n/work

3.2. Logging Expense : out

Adds an expenditure of your personal finance
Format: out $/AMOUNT n/ITEM d/DATE [c/CATEGORY]

  • AMOUNT accepts the value of this expenditure. The AMOUNT value must be non-negative, non zero and lesser than 1,000,000.

  • ITEM accepts the description of this expenditure.

  • DATE accepts the date of this transaction

  • CATEGORY accepts the CATEGORY for this expenditure. An out Transaction can be created without any CATEGORY.

  • in will update the Bank Account with a net negative amount (e.g. out n/milk $/2 d/10102019 will decrease Bank Acount balance by $2)

Examples:

  • out $/100 d/01012019 n/milk c/food c/drinks

  • out $/29 d/29022020 n/taxi c/transport

  • out $/12 d/31122019 n/burger

3.3. Setting a Budget : set

You can set a budget for a particular category until a certain date, given it is not already present in the budget list. A duplicate budget is a budget with the same AMOUNT and DATE and CATEGORY.
If you attempt to do so, you will receive an error message: This budget already exists in the bank account.

Format: set $/AMOUNT d/DATE c/CATEGORY

  • AMOUNT input accepts the new budget amount to be set. This amount must be non-negative, non-zero and less than 1,000,000.

  • DATE input accepts the deadline to be set. It cannot be a date in the past.

  • CATEGORY accepts the CATEGORY for the budget. A budget can be created without CATEGORY inputs in which case, the budget will automatically be assigned `GENERAL' category.

Let’s say you want to restrict your spending for a certain category until a certain deadline. PalPay allows you to set a budget and serve as a reminder to show how much of the budget set you have left until the deadline. You will be more self-conscious of your spending and minimise your spending by setting a budget.

To set a new budget:
1. Type set and enter the relevant details (amount, deadline, category) in the format given above.
2. The result box will display the message "New budget successfully set".
3. If the budget already exists in the budget list, the result box will display the message "This budget already exists".
4. Now you can see the newly set budget in the budget list.

As you make an OutTransaction of a particular CATEGORY, your budgets with the same CATEGORY will be adjusted to display the remaining amount of budget. Other budgets in the list belonging to different CATEGORY will not be adjusted.

If you overspend beyond a set budget, the overspent budget will be displayed in red. Shown below as budget index 3 is an example of an overspent budget:

overspentBudget
Figure 2. Overspent Budget

As the day you have set for the budget approaches, the countdown placeholder as well as the percentage remaining placeholder will turn to red when the number of remaining days reaches 3 and below. Shown below as budget index 4 is an example of a budget approaching its deadline:

approachingBudget
Figure 3. Budget approaching deadline

Examples:

  • set $/100 d/010120120 c/BBT

  • set $/300 d/29022020 c/shopping

3.4. Splitting a Bill with Friends : split

Split a bill with your friends
Format: split $/AMOUNT n/NAME1 [n/NAME2]…​ [s/SHARE]…​

  • [SHARE] defines portion of bill to be paid by each person

    • if no shares are given, amount will be split evenly across all people, including user

    • user is included in the bill if number of shares is 1 more than number of people

      • user’s share will be the first listed share

    • each person’s share is assigned in order

      • i.e. last person’s share is the last share listed

    • shares cannot be negative numbers

Examples:

  • split $/1000 n/Amy n/Betty n/Catherine n/Dan

    • $1000 is split equally between Amy, Betty, Catherine, Dan and the user.

  • split $/100 n/Albert n/Bernard n/Clement s/2 s/1 s/7

    • $100 is split with Albert owing $20, Bernard owing $10 and Clement owing $70.

3.5. Receiving Money from a Friend : receive

Receives money from 1 friend
Format: receive $/AMOUNT n/NAME1 [d/DATE]

Examples:

  • receive $/2.5 n/Albert

3.6. Projecting Balance : project

Projects future balance based on past In or Out transactions
Format: project d/DATE

  • DATE input only accepts date in format DDMMYYYY.

  • DATE input must be preceded by its tag d/

  • DATE input must be set in the future.

Examples:

  • project d/22072020

  • project d/01012020

=== Displaying View : view

Want to switch tabs without using your mouse? You can switch to another tab with the view command.

==== Command Syntax

Format: view TAB

  • TAB input only accepts transaction, budget, ledger and projection in v1.4. It is case-insensitive.

==== Example Usage:

You do not have to use your mouse in PalPay to switch tabs anymore.

  1. By default, you are in the transaction tab.

    view1
  2. Simply type view budget in the command box and press Enter.

    view2
  3. You can now view your budgets. Easy!

    view3

=== Deleting Finance : delete

Deletes the specified Transaction or Budget from the finance manager.
Format: delete TYPE+INDEX

  • INDEX refers to the target item number. (Items are sorted starting from the latest input added).

  • TYPE accepts either t (Transaction) or b (Budget). (e.g. delete b1 refers to deleting an Budget of index 1).

  • TYPE+INDEX requires the TYPE and INDEX to be placed in sequential order (e.g. delete b 1 or delete 1 or delete 1b will not work).

  • You can only delete an existing transaction or budget. Nothing will be deleted if the transaction or budget of INDEX does not exists.

  • Example: delete t1 will delete the first transaction from the list of transactions.

Examples:

  • delete t1

  • delete b3

=== Updating Finance : update

Updates the specified income or expenditure from the finance manager.
Format: update TYPE+INDEX [$/AMOUNT] [d/DATE] [n/ITEM] [c/CATEGORY]

  • AMOUNT accepts a non-negative value lesser than 1,000,000.

  • ITEM accepts the description of this Transaction or Budget.

  • DATE accepts the date of this Transaction or Budget

  • CATEGORY accepts the CATEGORY for the Transaction or Budget.

  • At least one AMOUNT, DATE, ITEM or CATEGORY fields must be entered. You can input more than 1 of the mentioned fields (e.g. update t1 $/100 n/milk).

  • INDEX refers to the target item number. (Items are sorted starting from the latest input added).

  • TYPE accepts either t (Transaction) or b (Budget). (e.g. update b1 …​ refers to updating a Budget of index 1).

  • TYPE+INDEX requires the TYPE and INDEX to be placed in sequential order (e.g. update b 1 .. or update 1 .. or update 1b .. will not work).

  • update requires at least one field to be updated but also allows more than one field to be updated (e.g. update t1 $/20 d/10102019 n/milk and update t1 $/10 will both be accepted but update t1 will not be accepted).

  • You can only update an existing transaction or budget. Nothing will be updated if the transaction or budget of INDEX does not exists.

  • You can not change an in transaction to an out transaction.

  • Example: update t1 $/3000 d/10102019 will update the first transaction from the list of transactions by changing it’s Amount to $1000 and Date to 10/10/2019.

Examples:

  • update t1 $/20 n/coke c/drinks d/12122019

  • update b2 $/300

  • update t4 $/30 d/12102019

=== Sorting Transactions : sort

Have you ever wonder which is the most expensive transaction you ever made? Or wondered which is the latest transaction you made? Fret not! You can now sort your transactions according to date or amount.

==== Command Syntax

Format: sort PREDICATE/ORDER

  • PREDICATE accepts only date or amount. It is case-insensitive.

  • ORDER accepts only a or d which represents ascending and descending, respectively.

==== Example Usage:

Do you want to know what is the latest transaction you made? No need to scroll all the way down anymore. PalPay has made it simple for you.

  1. By default, your transactions are sorted from the earliest transaction you entered to the latest transaction you entered.

    sort1
  2. Simply type sort date/d in the command box and press Enter.

    sort2
  3. Great! You can now see the latest transactions you made.

    sort3

=== Filtering Transactions : filter

Here at PalPay, you do not need to scroll through your history of transactions to find out what you spend two months ago. PalPay gives you the power to filter your transactions to solve that problem.

==== Command Syntax

Format: filter [n/DESCRIPTION] [y/YEAR] [m/MONTH] [c/CATEGORY]…​

  • YEAR accepts only integers from 1900 to 9999.

  • MONTH accepts only integers from 1 to 12.

  • All transactions with at least one CATEGORY in the [c/CATEGORY]…​ input will be displayed.

  • Example: filter c/transport c/allowance y/2019 will display transactions with transport, allowance, or transport and allowance that occurred in 2019.

==== Example Usage:

Imagine that you wanted to find out what you spent on shopping in October 2019.

  1. By default, PalPay shows your all your transactions you have made.

    filter1
  2. Simply type filter c/Shopping m/10 y/2019 in the command box and press Enter.

    filter2
  3. You will now see the list of transactions you have made while shopping in October 2019. Hurray!

    filter3

=== Undoing the Last Command : undo

Did you accidentally delete a transaction? Do not panic! PalPay lets you undo your previous commands with just one word, undo.

==== Command Syntax

Format: undo

  • Once you exit PalPay, you cannot undo the previous commands.

  • List of Undoable Commands:

    • in

    • out

    • set

    • split

    • receive

    • project

    • filter

    • sort

    • update

    • delete

    • clear

==== Example Usage:

Suppose you want to update your allowance you received in October 2019 to $800 but you accidentally update the GrabTaxi ride instead. Without going through the trouble of updating the same transaction again, you can simply perform the undo command. Just follow these three simple steps.

  1. Here, you can see the wrong update you just made.

    undo1
  2. Simply type undo in the command box and press Enter.

    undo2
  3. As you wish, your command has been undone.

    undo3

=== Redoing the Last Command : redo

Made an extra undo by mistake? Do not worry! PalPay lets you redo your previous undo(s) with just one word, redo.

==== Command Syntax

Format: redo

  • You can only redo undo commands.

  • Once you exit PalPay, you cannot redo the previous undo(s).

==== Example Usage:

Suppose you want to undo your last update but you accidentally undo twice instead. You can simply perform the redo command to revert the changes. Just follow these three simple steps.

  1. Here, you can see the extra undo you just made and the GrabTaxi ride is back at $800.

    redo1
  2. Simply type redo in the command box and press Enter.

    redo2
  3. Great! Your transaction is back to normal.

    redo3

=== Clearing All Entries : clear

Clears all entries from your Bank Account.
Format: clear

=== Listing All Entries : list

Lists all entries from your Bank Account.
Format: list

=== Viewing Help : help

Opens help page for the list of usable commands
Format: help

=== Exiting the Application : exit

Exits the program.
Format: exit

=== Saving the Data

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

== 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 Bank Account folder.

== Command Summary

  • Split split $/AMOUNT n/NAME1 [n/NAME2]…​ [s/SHARE]…​
    Example: split $/100 n/Albert n/Bernard n/Clement s/2 s/1 s/7

  • Out : out $/AMOUNT n/ITEM d/DATE [c/CATEGORY]
    Example: out $/20 n/coke d/19112019 c/drink c/lunch

  • In in $/AMOUNT n/ITEM d/DATE [c/CATEGORY]
    Example: in $/100 n/allowance d/11112019 c/income

  • Set : set $/AMOUNT d/DATE c/CATEGORY
    Example: set $/100 d/10102019 c/food

  • View : view TAB
    Example: view transaction

  • Delete : delete TYPE+INDEX
    Example: delete t1

  • Update : update TYPE+INDEX [$/AMOUNT] [d/date] [n/ITEM] [c/CATEGORY]
    Example: update b1 $/100 c/transport

  • Sort : sort PREDICATE
    Example: sort amount

  • Filter : filter [n/DESCRIPTION] [y/YEAR] [m/MONTH] [c/CATEGORY]…​
    Example: filter c/transport c/allowance y/2019

  • Project : project DURATION
    Example: project d/22072020

  • Redo : redo

  • Undo : undo

  • Clear : clear

  • List : list

  • Help : help

  • Exit : exit