By: Team CS2103-AY1819S1-F10-4      Since: Sep 2018      Licence: MIT

1. Welcome to MeNUS

MeNUS empowers you to improve the management and its efficiency of your restaurants in NUS.

As long as you feel that you are using too many complex and expensive systems to manage your restaurants, MeNUS is here to help you and it is the only restaurant management system you will ever need.

Introducing MeNUS, a revolutionary restaurant management desktop application that is optimized for users 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, MeNUS allows you to manage core aspects of your restaurants — accounts (i.e. employees), menus, ingredients, sales and reservations management — all within a single application!

1.1. Legend

The following 3 callouts will be used throughout the documentation which you may wish to pay attention to as it may contain important details:

Just for your info, do not be alarmed. Be sure to read these notes as it might contain some important information.
Perhaps something can be done using another approach, but it is up to you to decide. Tips are often not important and can be safely ignored.
Some things might go wrong if you are not careful, or did not follow the instructions correctly. You are strongly advised to read whatever is in this block.

1.2. A Quick Look at MeNUS

MeNUS’s user interface is split into a few sections. These sections are highlighted in the image below.

UserInterfaceHighlight

Let’s get started!

2. Quick Start

Follow this installation guide to get MeNUS up and running on your computer.

  1. Ensure you have Java version 9 or later installed in your Computer.

  • If you are unsure which Java version is installed, you may refer to this link.

  • You may install the current version of Java here.

  1. Download the latest menus.jar here.

  2. Copy the file to the folder you want to use as the home folder.

  3. Double-click the file to start the app. The GUI should appear in a few seconds.

    Ui
  4. 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.

  5. Some example commands you can try:

    • help : Opens up the help page

    • loginid/root pw/1122qq : Logs in to the root account

    • add-itemn/Apple p/2.00 t/fruit : Creates a new item in the menu

    • exit : Exits the application

  6. Refer to Section 5, “Commands” for details of each command.

3. Components

MeNUS consists of five core components: accounts (i.e. employees), menus, ingredients, sales and reservations management.

3.1. Accounts

account
* You can create an account for each of your employee to manage the application on your behalf, which gives them access to the other core components.

menu
You can manage the menu by adding, editing or remove items from the menu.

3.3. Ingredients

ingredient
You can keep track of the ingredient availability in your restaurant.

3.4. Sales

sales
The built-in Sales Management component in MeNUS provides you with the tools you will need to keep track of financial records efficiently. Several analytical features are also incorporated to assist you in financial decision-making and devising marketing strategies.

3.5. Reservations

reservation
You can keep track of customer reservations on the system.

4. Key Features

4.1. Convenience

MeNUS is an integrated application that will provide you with the utmost convenience and tools you will need to manage your restaurants. It allows you to:

  • Export data to .xml (default) or Excel file [coming in v2.0].

4.2. Security

We understand that digital security is your biggest concern. MeNUS is capable of securing your restaurants' data by:

  • Encrypting all data using state of the art encryption scheme [coming in v2.0].

  • Requiring users to be authenticated before they can execute any commands.

  • Providing accountability through logging of system events.

4.3. Efficiency

Time is money. MeNUS ensures that the application will:

  • Load within 5 seconds.

  • Execute commands within split of a second and update the GUI almost instantaneously.

5. Commands

MeNUS is jam-packed with features and it may be daunting for new users. The subsequent sections of the user guide provides a step by step walk-through of all the commands MeNUS has to offer.

Do read our short explanation about Command Format below so that the subsequent portions of this section will make sense to you.

Command Format

  • Words in UPPER_CASE are the parameters to be supplied by the user e.g. in add-item n/ITEM_NAME, ITEM_NAME is a parameter which can be used as add-item n/Burger.

  • Items in square brackets are optional e.g n/ITEM_NAME [t/TAG] can be used as n/Burger t/beef or as n/Burger.

  • Items with ​ after them can be used multiple times including zero times e.g. [t/TAG]…​ can be used as   (i.e. 0 times), t/Italian, t/Italian t/Wednesday etc.

  • Parameters can be in any order e.g. if the command specifies n/ITEM_NAME p/ITEM_PRICE, p/ITEM_PRICE n/ITEM_NAME is also acceptable.

As this is a management system, only the following commands can be executed without being authenticated (i.e. as guest):

help, login, select-item, find-item, filter-menu, list-items, today-special, exit

5.1. General

The commands in this section does not tie to any of the 5 components.

5.1.1. Viewing help : help or h

Opens up the help window. Very useful if you are a new user.
Format: help or h

5.1.2. Listing entered commands : history or hist

Lists all the commands that you have entered in reverse chronological order.
Format: history or hist

Pressing the and arrows will display the previous and next input respectively in the command box

5.1.3. Undoing previous command : undo or u

Restores the restaurant book to the state before the previous undoable command was executed.
Format: undo or u

Undoable commands: those commands that modify the restaurant book’s contents

Examples:

  • register id/root pw/1122qq n/Ang Zhi Kai
    undo (reverses the register id/root pw/1122qq n/Ang Zhi Kai command)

  • undo
    The undo command fails as there are no undoable commands executed previously.

  • deregister id/root
    clear
    undo (reverses the clear command)
    undo (reverses the deregister id/root command)

5.1.4. Redoing the previously undone command : redo or r

Reverses the most recent undo command.
Format: redo or r

Examples:

  • delete-item-index 1
    undo (reverses the delete-item-index 1 command)
    redo (reapplies the delete-item-index 1 command)

  • delete-item-index 1
    redo
    The redo command fails as there are no undo commands executed previously.

  • delete-item-index 1
    clear
    undo (reverses the clear command)
    undo (reverses the delete-item-index 1 command)
    redo (reapplies the delete-item-index 1 command)
    redo (reapplies the clear command)

Undo and redo commands do not refresh the detailed panel

5.1.5. Clearing all entries : clear or c

Clears all entries from the restaurant book.
Format: clear or c

5.1.6. Saving the data

Restaurant book data are saved in the hard disk automatically after any command that changes the data. No manual saving is required.

5.1.7. Exiting the program : exit or ex

Exits the program.
Format: exit or ex

5.2. Accounts Management

5.2.1. Logging in: login

Logs into an existing account.
Format: login id/USERNAME pw/PASSWORD

Examples:

  • login id/root pw/1122qq

To testers: You may access the application using the default root account: login id/root pw/1122qq

5.2.2. Logging out: logout

Logs out of the account.
Format: logout

History will automatically be cleared upon logging out

5.2.3. Creating user account: register or reg

Creates a new user account.
Format: register id/USERNAME pw/PASSWORD n/FULL_NAME or reg id/USERNAME pw/PASSWORD n/FULL_NAME

This command will be improved in the future to support user role (i.e. privilege system). See Section 5.7.1, “Improving registration [coming in v2.0]” for more information

Examples:

  • register id/azhikai pw/1122qq n/Ang Zhi Kai

  • reg id/azhikai pw/1122qq n/Ang Zhi Kai

5.2.4. Changing user password: change-password or cp

Edits the password of the current logged in user account.
Format: change-password npw/NEW_PASSWORD or cp npw/NEW_PASSWORD

Examples:

  • change-password npw/1122qq

  • cp npw/1122qq

5.2.5. Deleting user account: deregister or dereg

Deletes an existing user account.
Format: deregister id/USERNAME or dereg id/USERNAME

This command will only be executable by a highly privileged user in the future. See Section 5.7.2, “Creating user role [coming in v2.0]” for more information

Examples:

  • deregister id/azhikai

  • dereg id/azhikai

5.2.6. Select user account: select-account or sa

Selects the account identified by the index number.
Format: select-account INDEX or sa INDEX

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

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

Selecting the account does not render any data on the detailed panel due to the simplicity of the data itself

Examples:

  • list-accounts
    select-account 2
    Selects the 2nd account in the list.

  • fa azhikai
    sa 1
    Selects the 1st account in the results of the find-account command.

5.2.7. Locating account by username: find-account or fa

Finds account whose username contains the keyword.
Format: find-account KEYWORD or fa KEYWORD

  • The search is case insensitive. e.g Root will match root

  • Only the username is searched

  • Only one keyword is allowed since username does not contain spaces

  • Full keyword is not necessary; e.g. roo and root will match root

Examples:

  • find-account root or fa root
    Return any accounts whose username contains the string root

5.2.8. List user accounts: list-accounts or la

List all user accounts.
Format: list-accounts or la

Passwords are not and should not be displayed

5.3. Ingredients Management

This section explains how you may use the commands relating to the Ingredient Management feature.

5.3.1. Adding an ingredient: add-ingredient or add-ing

Adds a new ingredient to the ingredient list.
Format: add-ingredient n/INGREDIENT_NAME u/UNIT_TYPE p/PRICE_PER_UNIT m/MINIMUM

  • MINIMUM refers to the number of units below which an ingredient will be considered low in stock count

  • When a new ingredient is first added, its number of units is set to zero

Examples:

  • add-ingredient n/cod fish u/kilogram p/20 m/1
    Adds the ingredient cod fish with a price of $20/kilogram and minimum threshold of 1 unit.

5.3.2. Listing all ingredients : list-ingredients or list-ing

Shows a list of all ingredients in the ingredient list.
Format: list-ingredients

5.3.3. Listing ingredients with low stock count: low-stock

Shows a list of ingredients that are low in stock count.
Format: low-stock

An ingredient is low in stock count when the number of units available is less than its minimum threshold

5.3.4. Removing an ingredient: delete-ingredient or delete-ing

Deletes the specified ingredient from the ingredient list.
Format: delete-ingredient INDEX or delete-ingredient INGREDIENT_NAME

  • Deletes the ingredient at the specified INDEX

  • INDEX refers to the index number shown in the displayed ingredient list

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

  • Alternatively, deletes the ingredient with the specified INGREDIENT_NAME

Examples:

  • list-ingredients
    delete-ingredient 1
    list-ingredients
    Deletes the 1st ingredient in the ingredient list.

  • delete-ingredient cod fish
    list-ingredients
    Deletes the ingredient cod fish from the ingredient list.

5.3.5. Editing an ingredient: edit-ingredient or edit-ing

Edits an ingredient in the ingredient list.
Format: edit-ingredient INDEX [n/INGREDIENT_NAME] [u/UNIT_TYPE] [p/PRICE_PER_UNIT] [m/MINIMUM] or edit-ingredient on/ORIGINAL_INGREDIENT_NAME [n/NEW_INGREDIENT_NAME] [u/UNIT_TYPE] [p/PRICE_PER_UNIT] [m/MINIMUM]

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

  • Existing values will be updated to the input values

  • Alternatively, edits the ingredient with the specified ORIGINAL_INGREDIENT_NAME

  • If both INDEX and ORIGINAL_INGREDIENT_NAME are specified and valid, the edit will be done according to INDEX

At least one of the optional fields must be provided!

Examples:

  • edit-ingredient 3 n/thin fries
    Edits the name of the 3rd ingredient to thin fries.

  • edit-ingredient 4 u/1.5ml bottle p/1.20
    Edits the unit type and price per unit of the 4th ingredient to 1.5ml bottle and 1.20 respectively.

  • edit-ingredient on/ketchup n/tomato ketchup
    Edits the name of ketchup to tomato ketchup.

5.3.6. Stocking up an ingredient: stockup

Increases the number of units of an ingredient or multiple ingredients.
Format: stockup n/INGREDIENT_NAME…​ nu/NUMBER_OF_UNITS…​

  • NUMBER_OF_UNITS for an ingredient must follow the INGREDIENT_NAME for that particular ingredient

  • If the same ingredient is specified more than once, the last NUMBER_OF_UNITS will supercede

Examples:

  • stockup n/cod fish nu/5
    Stocks up 5 units of cod fish.

  • stockup n/chicken thigh nu/10 n/fries nu/20 n/tomato ketchup nu/50
    Stocks up 10 units of chicken thigh, 20 units of fries and 50 units of tomato ketchup.

5.3.7. Selecting an ingredient: select-ingredient or select-ing

Selects the ingredient identified by the index number used in the displayed ingredient list.
Format: select-ingredient INDEX or select-ing INDEX

  • Selects the ingredient and displays the details of the ingredient at the specified INDEX

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

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

Examples:

  • list-ingredients
    select-ingredient 2
    Selects the 2nd ingredient in the displayed ingredient list.

  • low-stock
    select-ingredient 1
    Selects the 1st ingredient in the results of the low-stock command.

5.4.1. Adding an item to the menu: add-item or ai

Adds an item to the menu
Format: add-item n/ITEM_NAME p/ITEM_PRICE [t/TAG]…​

  • ITEM_NAME and ITEM_PRICE must be provided

  • An item can have any number of tags (including 0)

  • ITEM_NAME should only contain alphanumeric characters and spaces, and it should not be blank

  • ITEM_PRICE should only contain numbers(no negative), at most 2 decimal place and smaller than or equals to 2,147,483,647

  • You cannot add items with the same name

Examples:

  • add-item n/Burger p/2

  • ai n/Burger Set p/4.5 t/Set

5.4.2. Editing an item in the menu : edit-item or ei

Edits an existing item in the menu.
Format: edit-item INDEX [n/ITEM_NAME] [p/ITEM_PRICE] [t/TAG]…​

  • Edits the item at the specified INDEX. The index refers to the index number shown in the displayed item 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

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

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

  • Editing item price will remove discount given by discount-item command

Examples:

  • edit-item 1 n/burger p/3
    Edits the name and price of the 1st item to be burger and 3 respectively.

  • ei 2 p/4 t/
    Edits the price of the 2nd item to be 4 and clears all existing tags.

5.4.3. Deleting an item by index: delete-item-index or dii

Deletes the specified item from the menu.
Format: delete-item-index INDEX [ei/INDEX]

  • Deletes the item(s) specified by INDEX

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

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

  • You can delete a range of items by adding the ending index ei\INDEX

  • The ending index can not be smaller than starting index

Examples:

  • list-items
    delete-item-index 2
    Deletes the 2nd item in the menu.

  • fi Cheese
    dii 1 ei/3
    Deletes 1st item, 2nd item and 3rd item in the results of the find-item command.

5.4.4. Deleting an item by name: delete-item-name or din

Deletes the specified item from the menu.
Format: delete-item-name ITEM_NAME

  • Deletes the item by the specified ITEM_NAME

  • The ITEM_NAME must be in the menu

  • ITEM_NAME is case-insensitive. e.g burger will match Burger

Examples:

  • delete-item-name Apple Juice
    Deletes the Apple Juice item from the menu.

  • din Cheese Fries
    Deletes the Cheese Fries item from the menu.

5.4.5. Listing all items in the menu : list-items or li

Shows a list of all items in the menu.
Format: list-items

5.4.6. Clearing all entries : clear-menu or cm

Clears all entries from the menu.
Format: clear-menu

5.4.7. Selecting an item : select-item or si

Selects the item identified by the index number used in the menu.
Format: select-item INDEX

  • Selects the item and loads the page the item at the specified INDEX

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

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

Examples:

  • list-items
    select-item 2
    Selects the 2nd item in the menu.

  • fi Burger
    si 1
    Selects the 1st item in the results of the find-item command.

5.4.8. Locating items by name: find-item or fi

Finds items whose names contain any of the given keywords.
Format: find-item KEYWORD [MORE_KEYWORDS]…​

  • The search is case insensitive. e.g burger will match Burger

  • The order of the keywords does not matter. e.g. Cheese Burger will match Burger Cheese

  • Only the name is searched

  • Only full words will be matched e.g. Bur will not match Burger

  • Items matching at least one keyword will be returned (i.e. OR search). e.g. Cheese Burger will return Cheese Burger, Cheese Fries and Beef Burger

Examples:

  • find-item Burger
    Returns burger and Cheese Burger

  • fi Cheese Chocolate Fruit
    Returns any item having names Cheese, Chocolate, or Fruit

5.4.9. Filter menu by tag: filter-menu or fm

Finds items whose tags match any of the given keywords.
Format: filter-menu KEYWORD [MORE_KEYWORDS]…​

  • The search is case insensitive. e.g burger will match Burger

  • Only filter by tag

  • Only full words will be matched e.g. Bur will not match Burger

  • Items with tags matching at least one keyword will be returned (i.e. OR search). e.g. drinks burger will return items that are tagged with drinks or burger

KEYWORD for filter-menu must be alphanumeric

Examples:

  • filter-menu monday
    Returns any item that contains tag monday

  • fm set monday
    Returns any item that contains tag set or monday

5.4.10. Sort menu : sort-menu or sm

Sort the menu by name or price.
Format: sort-menu SORTING_METHOD

  • Sort the menu by name or price

  • SORTING_METHOD refers the method to sort menu: name or price

  • Case-insensitive, it can be: sort-menu name or sort-menu NAME

  • Only one of the sorting method should be provided

Examples:

  • sort-menu name
    Sorts the menu by item name in lexicographical order.

  • sm PRICE
    Sorts the menu by item price in ascending order(lowest to highest).

5.4.11. Giving a discount to an item : discount-item or dci

Gives the item identified by the index number used in the displayed item list a discount.
Format: discount-item INDEX|ALL [ei/INDEX] dp/PERCENTAGE

  • You can remove discount by typing 0 for the percentage

  • You can give a discount to all items in the displayed item list by typing ALL(case-insensitive) instead of a specified INDEX

  • You can give a discount to a range of items by adding the ending index ei\INDEX

  • The ending index can not be smaller than starting index

  • The percentage should only contain numbers(no negative), and it should be at most 2 digits(no decimal place)

Examples:

  • list-items
    discount-item 2 dp/20
    Give the 2nd item in the menu a 20% discount.

  • fi Cheese
    dci ALL dp/0
    Revert all items in the results of the find-item command to original price.

  • li
    dci 1 ei/3 dp/50
    Give the 1st item to the 3rd item in the menu a 50% discount.

5.4.12. Today’s specials : today-special or ts

Lists the items that have been tagged with DAY_OF_THE_WEEK in the menu.
Format: today-special

  • DAY_OF_THE_WEEK refers to Monday, Tuesday, …​, Sunday

Examples:

  • today-special
    If today is Monday
    List the items that have been tagged with Monday in the menu.

5.4.13. Adding recipe to item : recipe-item or ri

Adds recipe to the item identified by the index number used in the menu.
Format: recipe-item INDEX r/RECIPE

  • Adds a recipe to the item at the specified INDEX

  • If the item has a recipe already, it will overwite the existing recipe

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

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

  • You can remove recipe by typing r/ without specifying any recipe after it

Examples:

  • recipe-item 1 r/Some Recipe
    Add/Update the recipe of the 1st item to be Some Recipe.

  • fi Cheese
    ri 1 r/Other Recipe
    Add/Update the recipe of the 1st item in the results of the find-item command to be Other Recipe.

5.4.14. Adding required ingredients: add-required-ingredients or ari

Adds required ingredients to the item identified by the index number used in the menu.
Format: add-required-ingredients INDEX n/INGREDIENT_NAME…​ nu/NUMBER_OF_INGREDIENTS…​

  • Adds required ingredients to the item at the specified INDEX.

  • If the item has required ingredients already, it will overwrite the existing required ingredients.

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

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

  • NUMBER_OF_INGREDIENTS for an ingredient must be paired with the INGREDIENT_NAME for that particular ingredient. e.g. n/apple nu/3 or nu/3 n/apple

  • You can remove required ingredients by not including any n/INGREDIENT_NAME…​ nu/NUMBER_OF_INGREDIENTS…​ e.g. add-required-ingredients INDEX

Examples:

  • add-required-ingredients 1 n/Apple nu/3
    Add/Update the required ingredients of the 1st item.

  • fi Cheese
    ari 1 n/chicken thigh u/10 n/potato u/20
    Add/Update the recipe of the 1st item in the results of the find-item command.

5.5. Reservations Management

5.5.1. Adding a reservation: add-reservation or ar

Adds a new reservation to the reservations list.
Format: add-reservation n/NAME px/PAX d/DATE ti/TIME or ar n/NAME px/PAX d/DATE ti/TIME

  • We use natural language processing to parse the date and time values

  • For example, phrases like 21st Dec or 12 p.m. will be accepted. Try it out!

  • Try to avoid ambiguous language as it might be interpreted incorrectly

  • For example, 3/12 is ambiguous as it could mean 3rd December or 12th March!

  • If you want to be sure, we recommend using these formats:

    • DATE: DD-MM-YYYY

    • TIME: HH:MM

  • Dates that have already passed will be rejected

Examples:

  • add-reservation n/TAN px/4 d/21-07-2019 ti/10:00

  • ar n/ONG px/2 d/21st July ti/10am

  • ar n/LEE px/8 d/next tuesday ti/8 p.m.

5.5.2. Listing all reservations : list-reservations or lr

Shows a list of all reservations in the reservations list.
Format: list-reservations or lr

5.5.3. Editing a reservation: edit-reservation or er

Edits an reservation in the reservation list.
Format: edit-reservation INDEX [n/NAME] [px/PAX] [d/DATE] [ti/TIME] or er INDEX [n/NAME] [px/PAX] [d/DATE] [ti/TIME]

  • Edits the reservation at the specified INDEX. The index refers to the index number shown in the displayed reservations 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.

Examples:

  • edit-reservation 2 d/31-12-2019 ti/18:00
    Edits the time of the 2nd reservation in the list to 31st Dec 2019, 1800 hrs.

  • er 6 n/ONG px/4
    Edits the name and pax of the 6th reservation to ONG and 4 respectively.

5.5.4. Sorting reservations list: sort-reservations or sortr

Sorts the reservations list by Date/Time.
Format: sort-reservations or sortr

5.5.5. Deleting a reservation: delete-reservation or dr

Deletes the specified reservation from the reservations list.
Format: delete-reservation INDEX or dr INDEX

  • Deletes the reservation at the specified INDEX.

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

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

Examples:

  • list-reservations
    delete-reservation 2
    list-reservations
    Deletes the 2nd reservation in the reservations list.

  • list-reservations
    dr 5
    list-reservations
    Deletes the 5th reservation in the reservations list.

5.5.6. Selecting a reservation : select-reservation or sr

Selects the reservation identified by the index number used in the displayed reservations list.
Format: select-reservation INDEX or sr INDEX

  • Selects the reservation at the specified INDEX.

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

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

Examples:

  • list-reservations
    select-reservation 2
    Selects the 2nd reservation in the reservations list.

  • list-reservations
    select-reservation 7
    Selects the 7th reservation in the reservations list.

5.6. Sales Management

The following are sales-related commands to help you with financial tracking and analysis. The terms "sales record" and "record list" will be used frequently under this section so it is advisable to first understand their definition in the glossary.

5.6.1. Recording sales volume of an item: record-sales or rs

Records the sales volume of an item within a specific day into the record list.
Format: record-sales d/DATE n/ITEM_NAME q/QUANTITY_SOLD p/ITEM_PRICE or rs d/DATE n/ITEM_NAME q/QUANTITY_SOLD p/ITEM_PRICE

  • DATE must be written in the DD-MM-YYYY format.

  • DATE must exist in the calendar.

  • Both DATE and ITEM_NAME cannot be same as another record in the record list.

  • ITEM_NAME is case insensitive. "Cheesy Pasta" and "cheesy pasta" are regarded as the same item.

Examples:

  • record-sales d/25-09-2018 n/Fried Rice q/35 p/5.50

  • rs d/25-09-2018 n/Fried Rice q/35 p/5.50

Auto-ingredient update mechanism

record-sales also determines all the ingredients you used and automatically deducts them from the ingredient list, subjected to the following conditions:
1) The item exists in the menu.
See Section 5.4.1, “Adding an item to the menu" for more information.
2) The required ingredients to make one unit of ITEM_NAME is specified.
See Section 5.4.14, “Add required ingredients" for more information.
3) All required ingredients exist in the ingredient list.
See Section 5.3.1, “Adding an ingredient" for more information.
4) There are sufficient ingredients to make QUANTITY_SOLD units of ITEM_NAME.
See Section 5.3.6, “Stocking up an ingredient" for more information.

Sales volume will still be recorded even if some of the above conditions are not met. However, ingredient list will not be updated

Ingredient used: MeNUS will remember the name and quantity of ingredients you used as long as the item and its required ingredients have been specified in the menu component

If you recorded a sales volume by mistake, you can use the Undo command to recover the deducted ingredients, provided that the ingredients have been deducted automatically

5.6.2. Display sales report: display-sales or dis

Generate and display the sales report for a specific day.
Format: display-sales DATE or dis DATE

  • DATE must be written in the DD-MM-YYYY format.

  • DATE must exist in the calendar.

  • There must be at least one sales record associated with the specified DATE.

Examples:

  • display-sales 30-09-2018

  • dis 30-09-2018
    Displays the sales report dated 30-09-2018.

The following (Figure 5.6.2.1) is an example of what you will see if the sales report is generated and displayed correctly:

display sales pic

Figure 5.6.2.1: Sales Report

5.6.3. Deleting a sales record: delete-sales or des

Deletes the sales record identified by the index.
Format: delete-sales INDEX or des INDEX

  • Deletes the record at the specified INDEX.

  • INDEX refers to the index number shown in the record list.

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

Deleting a sales record will not undo the effect of "Auto-ingredient update" which may or may not have happened during recording

Examples:

  • delete-sales 2

  • des 2
    Deletes the 2nd record from the record list.

5.6.4. Editing a sales record: edit-sales or es

Edits the sales record identified by the index.
Format: edit-sales INDEX [d/DATE] [n/ITEM_NAME] [q/QUANTITY_SOLD] [p/ITEM_PRICE] or es INDEX [d/DATE] [n/ITEM_NAME] [q/QUANTITY_SOLD] [p/ITEM_PRICE]

  • Edits the record at the specified INDEX.

  • INDEX refers to the index number shown in the record list.

  • 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.

Editing a sales record will permanently delete its "Ingredient used" data

Editing a sales record will not update the ingredient list. See Auto-ingredient update for more information

Examples:

  • edit-sales 3 n/Fried Omelet

  • es 3 n/Fried Omelet
    Edits the item name of the 3rd record to be "Fried Omelet".

  • edit-sales 7 q/37 p/6.50

  • es 7 q/37 p/6.50
    Edits the quantity sold and price of the 7th record to be 37 and 6.50 respectively.

5.6.5. Display sales chart of date and revenue: chart-sales or cs

Generates and displays the sales chart of revenue against date.
Format: chart-sales or cs

  • Record list must not be empty.

  • Only existing dates in the record list are tabulated and shown.

The following (Figure 5.6.5.1) is an example of what you will see if the sales chart is generated and displayed correctly:

chart sales pic

Figure 5.6.5.1: Sales Chart of revenue against date

5.6.6. Ranking dates according to total revenue: rank-date or rad

Ranks and displays all existing dates in the record list based on the total revenue.
Format: rank-date or rad

  • Record list must not be empty.

You can generate the sales report of a specific date to get a more detailed analysis. See Section 5.6.2, “Display sales report" for more information

The following (Figure 5.6.6.1) is an example of what you will see if the ranking is generated and displayed correctly:

rank date pic

Figure 5.6.6.1: Ranking of dates by revenue

5.6.7. Ranking items according to total revenue: rank-item or rai

Ranks and displays all items according to their total revenue accumulated in past sales records.
Format: rank-item or rai

  • Record list must not be empty.

You can check the sales history of a specific item to get a more detailed analysis. This feature will be available in v2.0. See Section 5.7.6, “Checking item sales history" for more information

The following (Figure 5.6.7.1) is an example of what you will see if the ranking is generated and displayed correctly:

rank item pic

Figure 5.6.7.1: Ranking of items by revenue

5.6.8. Selecting a sales record : select-sales or ss

Selects the sales record identified by the index number used in the record list.
Format: select-sales INDEX or ss INDEX

  • Loads the record list and selects the record at the specified INDEX.

  • INDEX refers to the index number shown in the displayed record list.

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

Examples:

select-sales 2
Selects the 2nd record in the record list.

ss 6
Selects the 6th record in the record list.

5.7. Upcoming Features

5.7.1. Improving registration [coming in v2.0]

Improves the existing register command by including role (i.e. privilege system).

Format: register id/USERNAME pw/PASSWORD n/FULL_NAME r/ROLE_ID or reg id/USERNAME pw/PASSWORD n/FULL_NAME r/ROLE_ID

Examples:

  • register id/azhikai pw/1122qq n/Ang Zhi Kai r/999

  • reg id/azhikai pw/1122qq n/Ang Zhi Kai r/999

5.7.2. Creating user role [coming in v2.0]

Creates a user role. User assigned with higher ranking role can execute more commands.

When the application is in its default state, this command can only be executed by the root account which has the default role of Administrator

Format: create-role r/RANK n/ROLE_NAME or cr r/RANK n/ROLE_NAME

Examples:

  • create-role r/999 n/Owner

  • cr id/999 n/Owner

  • create-role r/2 n/Supervisor

  • create-role r/1 n/Employee

5.7.3. Editing user role [coming in v2.0]

Edits an existing user role.
Format: edit-role r/RANK [nr/NEW_RANK] [n/ROLE_NAME] or er r/RANK [nr/NEW_RANK] [n/ROLE_NAME]

Examples:

  • edit-role r/999 n/Administrator

  • er id/999 n/Administrator

  • edit-role r/2 nr/3 n/Manager

5.7.4. Deleting user role [coming in v2.0]

Deletes an existing user role.
Format: delete-role r/RANK or dr r/RANK

Examples:

  • delete-role r/999

  • dr id/999

5.7.5. Auto-compute sales profit [coming in v2.0]

Automatically determines the cost incurred in each sales record and computes its profit. The concept of profit will be extended to the following features:
1) Section 5.6.2, “Display sales report" - Include a profit column in the sales report
2) Section 5.6.5, “Display sales chart" - Display sales chart of date and profit
3) Section 5.6.6, “Ranking dates" - Rank dates by profit
4) Section 5.6.7, “Ranking items" - Rank items by profit

A negative profit denotes a loss

5.7.6. Checking item sales history [coming in v2.0]

Generates the item sales report that consists of all past records associated with that item.
Format: check-history n/ITEM_NAME or ch n/ITEM_NAME

Examples:

  • check-history n/Fried Rice

  • ch n/Fried Rice

5.7.7. Exporting sales report [coming in v2.0]

Exports the sales report of a specific date into a pdf file. The generated .pdf sales report will be more detailed than that displayed in app.
Format: export-sales DATE or exs DATE

5.7.8. Exporting sales chart [coming in v2.0]

Exports the sales chart into a pdf file.
Format: export-chart or exc

5.7.9. Checking item sales history [coming in v2.0]

Generates the item sales report that consists of all records associated with that item.
Format: check-history n/ITEM_NAME or ch n/ITEM_NAME

  • check-history n/Fried Rice

  • ch n/Fried Rice

5.7.10. Showing history of past stock ups and consumption [coming in v2.0]

Shows the history of past ingredient stock ups or consumption.
Format: view-history [STOCKUP] [CONSUMPTION] or vh [STOCKUP] [CONSUMPTION]

Examples:

  • view-history stockup

  • view-history consumption

  • vh stockup consumption

5.7.11. Exporting menu [coming in v2.0]

Exports the menu to a particular file path.
Format: export-menu fp/FILEPATH fn/FILENAME

Examples:

  • export-menu fp/test/ fn/menu.txt
    Export the menu to test folder with the file name menu.txt

5.7.12. Importing menu [coming in v2.0]

Imports an existing menu from specified file path to replace current menu.
Format: import-menu fp/FILEPATH fn/FILENAME

Examples:

  • import-menu fp/test/ fn/menu.txt
    Import the menu.txt from test folder to replace current menu.

5.7.13. Support for multiple menus [coming in v2.0]

User will be able to manage multiple menus without the need of exporting and importing for different version of the current menu.

6. Frequently Asked Questions (FAQ)

Q: How do I transfer my data to another Computer?
A: Install the application in the other computer and overwrite the empty data file it creates with the file that contains the data of your previous MeNUS folder.

Q: Where do I find the latest release of the application?
A: You can find all releases here.

7. Command Summary

COMMAND FORMAT EXAMPLE

Help

help

help

Clear

clear

clear

History

history

history

Undo

undo

undo

Redo

redo

redo

Login

login id/USERNAME pw/PASSWORD

login id/root pw/1122qq

Logout

logout

logout

Create account

register id/USERNAME pw/PASSWORD n/FULL_NAME

register id/azhikai pw/1122qq n/Ang Zhi Kai

Change password

change-password npw/NEW_PASSWORD

change-password npw/newp@55w0rd

Delete account

deregister id/USERNAME

deregister id/azhikai

Find account

find-account KEYWORD

find-account root

Select account

select-account INDEX

select-account 1

List accounts

list-accounts

list-accounts

Add ingredient

add-ingredient n/INGREDIENT_NAME u/UNIT_TYPE p/PRICE_PER_UNIT m/MINIMUM

add-ingredient n/cod fish u/kilogram p/20 m/1

List ingredients

list-ingredients

list-ingredients

List ingredients with low stock count

low-stock

low-stock

Edit ingredient

edit-ingredient INDEX [n/INGREDIENT_NAME] [u/UNIT_TYPE] [p/PRICE_PER_UNIT] [m/MINIMUM] or edit-ingredient on/ORIGINAL_INGREDIENT_NAME [n/NEW_INGREDIENT_NAME] [u/UNIT_TYPE] [p/PRICE_PER_UNIT] [m/MINIMUM]

edit-ingredient 3 n/thin fries or edit-ingredient on/ketchup n/tomato ketchup

Delete ingredient

delete-ingredient INDEX or delete-ingredient INGREDIENT_NAME

delete-ingredient 1 or delete-ingredient cod fish

Stock up

stockup n/INGREDIENT_NAME…​ nu/NUMBER_OF_UNITS…​

stockup n/cod fish nu/5

Select ingredient

select-ingredient INDEX

select-ingredient 3

Add item

add-item n/ITEM_NAME p/ITEM_PRICE [t/TAG]…​

add-item n/Burger Set p/3 t/set

List items

list-items

list-items

Edit item

edit-item INDEX [n/ITEM_NAME] [p/ITEM_PRICE] [t/TAG]…​

edit-item 2 n/Fries p/3

Delete item by index

delete-item-index INDEX

delete-item-index 3

Delete item by name

delete-item-name ITEM_NAME

delete-item-name burger

Select item

select-item INDEX

select-item 3

Find item

find-item KEYWORD [MORE_KEYWORDS]…​

find-item Cheese Burger

List items

list-items

list-items

Clear menu

clear-menu

clear-menu

Filter menu

filter-menu KEYWORD [MORE_KEYWORDS]…​

filter-menu cheese

Sort menu

sort-menu SORTING_METHOD

sort-menu NAME

Discount item

discount-item INDEX/ALL [ei/INDEX] dp/PERCENTAGE

discount-item 2 dp/20

Today’s special

today-special

today-special

Add recipe to item

recipe-item r/RECIPE

recipe-item r/some recipe

Add required ingredients to item

add-required-ingredients n/INGREDIENT_NAME nu/NUMBER_OF_INGREDIENTS

add-required-ingredients n/Apple nu/3

Add reservation

add-reservation n/NAME px/PAX d/DATE ti/TIME

add-reservation n/TAN px/4 d/21-07-2019 ti/10:00

Edit reservation

edit-reservation INDEX [n/NAME] [px/PAX] [d/DATE] [ti/TIME]

edit-reservation 2 px/2

Delete reservation

delete-reservation INDEX

delete-reservation 2

Select reservation

select-reservation INDEX

select-reservation 1

List reservation

list-reservations

list-reservations

Sort reservation

sort-reservations

sort-reservations

Record sales volume

record-sales d/DATE n/ITEM_NAME q/QUANTITY_SOLD p/ITEM_PRICE

record-sales d/25-09-2018 n/Fried Rice q/35 p/5.50

Display sales report

display-sales DATE

display-sales 25-09-2018

Edit sales record

edit-sales INDEX [d/DATE] [n/ITEM_NAME] [q/QUANTITY_SOLD] [p/ITEM_PRICE]

edit-sales 3 n/Fried Omelet p/7.99

Delete sales record

delete-sales INDEX

delete-sales 2

Display sales chart

chart-sales

chart-sales

Rank items by total revenue

rank-item

rank-item

Rank dates by total revenue

rank-date

rank-date

Select sales record

select-sales INDEX

select-sales 3

Appendix A: Acronyms

GUI

Graphical User Interface allows the use of icons or other visual indicators to interact with electronic devices, rather than using only text via the command line.

Sales record

A sales record is created whenever you record the sales volume of an item. It is represented by a single entry in the record list. It comprises 6 different attributes, namely
1) Date of which the item was sold
2) Name of the item
3) Quantity of the item sold
4) Price per item
5) Total revenue earned
6) Ingredient used to make the amount of item as specified by the quantity sold.

Record list

The record list contains all the sales records you have recorded till date. It is shown under the List of data section of the sales component in MeNUS’s user interface.