By: AY1920S2-CS2103-W14-2      Since: Feb 2020      Licence: MIT

1. Introduction

InventoryManager is for those who prefer to use a desktop app for managing their inventory. More importantly, InventoryManager 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, InventoryManager can get your inventory management tasks done faster than traditional GUI apps. Interested? Jump to the 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 inventorymanager.jar here.

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

  4. Double-click the file to start the app. The GUI should appear in a few seconds. For Mac OS users, permission may need to be granted to the file before usage.

    Ui
    Figure 1. GUI of Inventory Manager
  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:

    • list-s : lists all suppliers

    • addn/John Doe c/98765432 e/johnd@example.com a/John street, block 123, #01-01 gp/apple 4.50 : adds a supplier named John Doe selling apples at 4.50 each to the InventoryManager.

    • delete-s 3 : deletes the 3rd supplier shown in the current list

    • 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 e.g. in add n/NAME, NAME is a parameter which can be used as add n/John Doe.

  • Items in square brackets are optional e.g n/NAME [gp/GOOD PRICE] can be used as n/John Doe gp/apple 4.50 or as n/John Doe.

  • Items with ​ after them can be used multiple times including zero times e.g. [gp/GOOD PRICE]…​ can be used as   (i.e. 0 times), gp/apple 4.50, gp/orange 2.00 gp/pear 5.00 etc.

  • Parameters can be in any order e.g. if the command specifies n/NAME c/CONTACT_NUMBER, c/CONTACT_NUMBER n/NAME is also acceptable.

  • For parameters where only one value is expected, only the last specified value will be taken e.g. c/12345 c/54321 will use only c/54321.

  • All dates follow the format yyyy-MM-dd

3.1. Viewing help : help

To view the command usage or the command format of this application.

Format: help

An url link will be shown that linked to this page.

help
Figure 2. Demo for help command

3.2. Listing all suppliers : list-s (By Liu Chao)

Shows a list of all suppliers in the inventory manager.
Format: list-s

3.3. Clearing all supplier entries : clear-s (By Liu Chao)

Clears all supplier entries from the address book.
Format: clear-s

3.4. Adding a supplier: add-s (By Liu Chao)

Adds a supplier to the inventory manager
Format: add-s n/NAME c/CONTACT_NUMBER e/EMAIL a/ADDRESS [gp/GOOD PRICE]…​

  • A supplier can have any number of good-price pairs (including 0)

  • Must include name, phone number, email, address.

  • Repeated supplier will cause exception.

Examples:

  • add-s n/NTUC Fairprice Macpherson Mall c/63521728 e/MacphersonMall@NTUC Fairprice.com a/401, #02-22 MacPherson Rd, Macpherson Mall, 368125 gp/banana 5 gp/tissue paper 0.55

3.5. Editing a supplier : edit-s (By Liu Chao)

Edits an existing supplier in the inventory manager.
Format: edit-s INDEX [n/NAME] [c/CONTACT_NUMBER] [e/EMAIL] [a/ADDRESS] [gp/GOOD PRICE]…​

  • Edits the supplier at the specified INDEX. The index refers to the index number shown in the displayed supplier list. The index must be a positive integer 1, 2, 3, …​

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

  • Existing values will be updated to the input values.

  • If the entered good-price pair is not in the existing supplier’s list, the entered good price pair will be stored in the supplier’s list as a new good price pair.

You can add any number of good-price pairs to the existing suppliers at one time.

Examples:

  • edit-s 1 c/91234567 e/ColdStorageAtOrchard@example.com
    Edits the contact number and email address of the 1st supplier to be 91234567 and ColdStorageAtOrchard@example.com respectively.

  • edit-s 2 gp/apple 5 gp/banana 10
    The existing second supplier only has apple priced at 1 dollar. Hence, this command will edit the price of apple to 5 dollar and add the good price pair of banana into the supplier’s good list.

3.6. Locating suppliers by name: find-s (By Liu Chao)

Finds suppliers whose names contain any of the given keywords.
Format: find-s KEYWORD [MORE_KEYWORDS]

  • The search is case insensitive. e.g ColdStorage will match coldstorage

  • The order of the keywords does not matter. e.g. NTUC Fairprice will match Fairprice NTUC

  • Only the name is searched.

  • Only full words will be matched e.g. ColdStorage will not match ColdStorages

  • Suppliers matching at least one keyword will be returned (i.e. OR search). e.g. Fairprice NTUC will return Macpherson NTUC, Fairprice Value Store

  • You can find multiple suppliers by input multiple keywords.

  • You could use keywords instead of full names.

Examples:

  • find-s NTUC ColdStorage
    Returns NTUC Fairprice and ColdStorage Orchard

3.7. Source supplier(s) for good(s): source (By Liu Chao)

Source suppliers who sell goods with good names containing any of the given keywords.
Format: Source GOOD_NAME [MORE_GOOD_NAME]…​

  • The search is case insensitive. e.g apple will match APPLE

  • The keywords are referring to goods' names

  • At least one good name must be included

  • The order of the keywords does not matter. e.g. Fuji Apple will match Apple Fuji

  • Only the good’s name is searched.

  • Only full words will be matched e.g. apple will not match appl

  • Suppliers who sell goods with goods' names matching at least one keyword will be returned (i.e. OR search). e.g. mango pie will return suppliers selling mango yogurt and suppliers selling apple pie

  • You can find multiple suppliers by input multiple goods' names.

  • You could use keywords instead of full goods' names.

  • You could source for suppliers selling different goods by using different keywords at one time.

Examples:

  • source banana apple
    Returns Cavendish banana and Fuji apple

3.8. Deleting a supplier : delete-s (By Liu Chao)

Deletes the specified supplier from the address book.
Format: delete-s INDEX

  • The command will delete the supplier at the specified INDEX.

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

  • The index must be a positive integer 1, 2, 3, …​

Examples:

  • list-s
    delete-s 2
    Deletes the 2nd supplier in the inventory manager.

  • find-s NTUC
    delete-s 1
    Deletes the 1st supplier with name containing NTUC in the inventory manager aftr filtering with the keyword NTUC.

3.9. Deleting an entry or entries of good-price pair(s) in the supplier’s list: delete-gp (By Liu Chao)

Deletes the specified good price pair(s) from supplier’s list of good price pairs.
Format: delete-gp INDEX (must be a positive integer) g/GOOD_NAME [g/MORE_GOOD_NAME]…​

  • The command will delete the good price pair(s) of supplier’s list of good price pairs at the specified INDEX.

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

  • The index must be a positive integer 1, 2, 3, …​

  • You must enter the full names of the goods which are case sensitive

  • You could delete one or more price good pairs from the supplier’s list by input one or more good’s names

  • You must include at least one good name.

The command will display all good price pairs that could not be found or are successfully deleted at the end of command.

Examples:

  • delete-gp 1 g/apple g/orange (to delete two different goods)
    Deletes the good price pairs of apple and orange in the 1st supplier’s list of good price pairs.

3.10. Buying goods from supplier: buy (By Pang Jia Da)

Buys a batch of goods from a supplier in the contact list who stocks that product. The inventory manager cannot buy products in the following cases:

  1. The supplier has not been entered in the supplier list

  2. The supplier has not been registered to the good, as indicated by the "offers" section of each supplier

Format: buy SUPPLIER_DISPLAY_INDEX g/GOOD_NAME q/QUANTITY

Example:

  • buy 1 g/Apple q/4
    Buys 4 apples from supplier at displayed index 1 in the supplier list.

If the good does not exist in the inventory, a new entry for that good will be created.
The maximum quantity of any good in the inventory is 999,999. Users are not allowed to buy quantities of goods that would cause that limit to be exceeded.

3.11. Selling goods: sell (By Pang Jia Da)

Sells a particular goods from the inventory.

The inventory manager cannot sell products in the following cases:

  1. The good being sold does not exist in the inventory

  2. The quantity being sold is larger than the amount existing in the inventory

Format: sell GOOD_DISPLAYED_INDEX q/QUANTITY p/PRICE

Example:

  • sell 1 q/4 p/3.5
    Sells 4 units of good at displayed index 1 in the inventory at $3.50 each.

The selling price can be specified to the nearest cent, or 2 decimal places maximum.
When the quantity in inventory reaches 0, the name of the good is not deleted for future reference or restocking. This entry can be deleted using the delete-g command.

3.12. Delete good entry in inventory: delete-g (By Pang Jia Da)

Deletes an entry for a good in the inventory. The good to be deleted is at the displayed index shown in the middle inventory panel. All of the good’s quantity will be removed in the process.

Format: delete-g INDEX

Example:

  • delete-g 3 The good entry at displayed index 3 will be removed, provided there is an entry at index 3.

No transaction history will be recorded for delete-g. This command is meant to recove goods with no quantity in the inventory when reference to them is no longer required. If there are quantities being transacted, buy and sell should be used instead.

3.13. Setting minimum quantity for goods: warn (By Fang Shao Hua)

Sets the minimum quantity threshold for a certain good.

When the quantity of the good is below the threshold, the quantity of the good will be mark with red color background and rank higher up in the inventory list.

All goods under their threshold quantity will be shown before all goods above their threshold quantity.

Format: warn INDEX q/MIN_QUANTITY

Example:

  • warn 5 q/100
    This sets the minimum quantity threshold for good at index 5 with an quantity of 100.

warn
Figure 3. Demo for warn command
When a new good is added into the inventory, its minimum quantity threshold is set at 0.

3.14. Locating transactions by search criteria: find-t (By Fang Shao Hua)

Display list of transactions that fulfills the given search criteria.

3 types of search criteria:

  1. transaction type

  2. supplier’s name

  3. good’s name

Format: find-t [TRANSACTION TYPE] [n/NAME] [g/GOOD NAME];

original
Figure 4. GUI before demo

Example:

  • Search by transaction type:
    find-t buy
    display all buy transactions.

Currently, there are only two types of transaction: buy and sell. Type of transaction is case sensitive.
find t buy
Figure 5. Demo for find-t command that uses only [TRANSACTION TYPE] criteria
  • Search by Name of Supplier:
    find-t n/alex bernice
    display all transactions that related to Alex or Bernice.

  • The search is case insensitive. e.g bernice will match Bernice

  • The order of the keywords does not matter. e.g. Bernice Yu will match Yu Bernice

  • Only the name is searched.

  • Only full words will be matched e.g. bernice will not match bernices

  • Supplier matching at least one keyword will be returned (i.e. OR search). e.g. Alex Bernice will return Alex Yeoh, Bernice Yu

find t name
Figure 6. Demo for find-t command that uses only [NAME] criteria
  • Search by Good Name of Good:
    find-t g/apple noodle
    display all transactions that related to Apple or Noodle.

find t good name
Figure 7. Demo for find-t command that uses only [GOOD NAME] criteria

Combination of criteria
Criteria can be combined to give a more constraint search.

Example:

  • Search by transaction type and GoodName of Good:
    `find-t buy n/apple noodle

    display all buy transactions that is related to Apple or Noodle.

combination
Figure 8. Demo for find-t command that uses [TRANSACTION TYPE] and [GOOD NAME] criteria.
The transaction related to Noodle is no longer shown as compare to search only by Good Name, as that transaction is a sell transaction and does not fulfill the transaction type.

3.15. Listing all transactions : list-t (By Fang Shao Hua)

Shows the list of transaction history in the inventory manager.

Format: list-t

list t
Figure 9. Demo for list-t command

3.16. Undoing a recently executed command: undo (By Nicholas Cristian Fernando)

Removes changes from a recently executed command. Commands that only affect display e.g. find and list, and undo commands, will be ignored and the next command in line will be undone.
Format: undo

Examples (assuming all other commands are valid):

  • clear-s
    list-t
    undo (ignores list-t and reverses clear-s)

  • clear-s
    delete-g 1
    undo (reverses delete-g 1)
    undo (reverses clear-s)

3.17. Redoing a previously undone command: redo

Redoes changes undone by the most recent undo command.
Format: redo

Examples (assuming all other commands are valid):

  • clear-s
    list-t
    undo (ignores list-t and reverses clear-s)
    redo (repeats clear-s)

  • clear-s
    delete-g 1
    undo (reverses delete-g 1)
    undo (reverses clear-s)
    redo (repeats clear-s)
    redo (repeats delete-g 1)

  • clear-s
    undo (reverses clear-s)
    delete-g 1
    redo
    The redo fails as delete-g 1 will remove the undone states.

3.18. Exiting the program : exit

Exits the program.
Format: exit

3.19. Saving the data

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

3.20. Encrypting data files [coming in v2.0]

For security concerns, all data will be encrypted by default.

4. 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 InventoryManager folder.

5. Command Summary

(By Liu Chao)

  • Adding a supplier add-s n/NAME c/PHONE e/EMAIL a/ADDRESS [gp/GOOD PRICE]…
    e.g. add-s n/NTUC Fairprice Macpherson Mall c/63521728 e/MacphersonMall@NTUC Fairprice.com a/401, #02-22 MacPherson Rd, Macpherson Mall, 368125 gp/banana 5 gp/tissue paper 0.55

  • Listing all suppliers : list-s

  • Clearing all supplier entries : clear-s

  • Deleting a supplier : delete-s INDEX (must be a positive integer)
    e.g. delete-s 1

  • Deleting an entry or entries of good-price pair(s) in the supplier’s list : delete-gp INDEX (must be a positive integer) g/GOOD_NAME [g/MORE_GOOD_NAME]…​
    e.g. delete-gp 1 g/apple g/orange (to delete two different goods)

  • Editing a supplier : edit-s INDEX (must be a positive integer) [n/NAME] [c/PHONE] [e/EMAIL] [a/ADDRESS] [gp/GOOD_PRICE_PAIR]…
    e.g. edit-s 1 c/63865586 gp/Watermelon 10

  • Locating suppliers by name : find-s KEYWORD [MORE_KEYWORD]…
    e.g. find-s NTUC ColdStorage

  • Source supplier(s) for good(s): source GOOD_NAME [MORE_GOOD_NAME]…​
    e.g. source banana apple

(By Pang Jia Da)

  • Buy goods: buy SUPPLIER_DISPLAYED_INDEX g/GOOD_NAME q/QUANTITY
    e.g. buy 1 g/Apple q/4

  • Sell goods: sell GOOD_DISPLAYED_INDEX q/QUANTITY p/PRICE
    e.g. sell 1 q/4 p/3

(By Fang Shao Hua)

  • Set minimum threshold quantity for goods: warn INDEX q/MIN_QUANTITY

  • List transaction history: list-t

  • Find transaction: find-t [TRANSACTION TYPE][n/NAME][g/GOOD NAME]

(By Nicholas Cristian Fernando)

  • Undo: undo

  • Redo: redo

  • Help : help