By: Gara Tahir

Project: Inventarie Pro

Overview

se a desktop app for managing inventory*. More importantly, Inventarie Pro 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, Inventarie Pro can get your inventory management tasks done faster than traditional GUI apps.

Summary of contribution

Main feature implemented:

  • I have changed the whole foundation of the code. I changed the class person to product. The attributes and their constrains where changed accordingly.

The class Product now consists of the attributes:

  • Name

  • SerialNumber

  • Product information

  • Remaining items

  • Distributor

  • Tag(s)

  • I integrated Paras feature "Transaction" with my attribute Remaining items. Now when a transaction is made the program subtracts the remaining items. It also first checks if the products exist in the inventory. It then sees if there is enough products in the inventory to make the transaction.

Other contributions:

  • The user can search for a product with both name and Serialnumber (The primary key)

  • I have adapted existing tests to work with the new program.

  • I increased the test coverage from 42% to 48%.

  • I assigned all the issues that we got during practical exam to the correct team member(s)

Community:

Reported bugs and suggestions to team W13-1.

Contribution to the User Guide

I created and added the first design of the UI to the User Guide so the team could visualize our end-product.

orgUI
  • I added a picture of the new UI to the User Guide.

Contribution to the Developper guide

Deleting a product

  1. Deleting a product while all products are listed

    1. Prerequisites: There should be multiple products in the list.

    2. Test case: deleteproduct 1
      Expected: First contact is deleted from the list. Details of the deleted contact shown in the status message.

    3. Test case: deleteproduct 0
      Expected: No product is deleted. Error details shown in the status message. Status bar remains the same.

    4. Other incorrect delete commands to try: deleteproduct, deleteproduct x (where x is larger than the list size) {give more}
      Expected: Similar to previous.

{ more test cases …​ }

Editing an existing product

  1. Deleting a distributor while all distributors are listed

    1. Prerequisites: There should be a at least 2 products to edit. The second one has Serial Number = 123.

    2. Test case: editproduct 1 inv/12
      Expected: First product from the list is edited. The current inventory should now be 12, and a success message is shown in the result display panel.

    3. Test case: editproduct 1 s/123
      Expected: No product is updated. Error details of invalid serialnumber because a product with serial number = 123 already exists is shown in the result display panel. Status bar remains the same.

    4. Other incorrect edit commands to try: deleteproduct x n/y (where x is larger than the list size and y does not exist)
      Expected: Error details of invalid command format is shown in the result display panel.

{ more test cases …​ }

Listing all products

  1. Listing all products

    1. Prerequisites: There is more then two products and the user has filtred the list by searching for a product.

    2. Test case: listproducts
      Expected: All products should be visible again and a message saying that all products are listed should appear in the result display panel.

Product Scope

Target user profile: Small business owners

  • has a need to manage a significant number of contacts

  • prefer desktop apps over other types

  • can type fast

  • prefers typing over mouse input

  • is reasonably comfortable using CLI apps

Value proposition: tracks inventory faster than a typical mouse/GUI driven app

Appendix A: User Stories

Priorities: High (must have) - * * *, Medium (nice to have) - * *, Low (unlikely to have) - *

Priority As a …​ I want to …​ So that I can…​

* * *

self-employed provision shop owner

see usage instructions

refer to instructions when I forget how to use the App

* * *

self-employed provision shop owner

add a new product to my record of products

keep track of all the products that my shop owns

* * *

self-employed provision shop owner

delete a product from my record of products

stop tracking products I no longer want to sell in my store

* * *

self-employed provision shop owner

find a product by name

locate details of products without having to go through the entire list

* * *

self-employed provision shop owner

find a product by relevant tags

retrieve a list of products that are of a certain type

* * *

self-employed provision shop owner

add a distributor to my record of distributors

keep track of who supplies my products to me

* * *

self-employed provision shop owner

delete a distributor from my record of distributors

declutter the distributors I keep in contact with if I choose to stop business with a certain distributor

* * *

self-employed provision shop owner

edit a distributor in my record of distributors

change the name or phone number of a distributor in case their details change, and keep up to date with their contacts

* * *

self-employed provision shop owner

find a distributor by name

retrieve contact details of distributors without having to go through the entire list

* * *

self-employed provision shop owner

find a distributor by relevant tags

retrieve a list of distributors who supply a certain type of products

* * *

self-employed provision shop owner

view what products a distributor supplies

retrieve a list of all the products that a distributor supplies at one go, in case I need to make an order

* *

self-employed provision shop owner

hide private contact details by default

minimize chance of someone else seeing them by accident

*

user with many products in the productInfo book

sort products by name

locate a product easily

{More to be added}

Appendix B: Use Cases

(For all use cases below, the System is the AddressBook and the Actor is the user, unless specified otherwise)

Use case: Delete product

MSS

  1. User requests to list products

  2. Inventarie PRO shows a list of products

  3. User requests to delete a specific product in the list

  4. Inventarie PRO deletes the product

    Use case ends.

Use case: Add distributor

MSS

  1. User requests to add distributors

  2. Inventarie PRO adds the distributor into the list of distributors

    Use case ends.

Use case: List distributor

MSS

  1. User requests to list all distributors

  2. Inventarie PRO shows the entire list of distributors

    Use case ends.

Use case: Edit distributor

MSS

  1. User requests to list all distributors

  2. Inventarie PRO shows the entire list of distributors

  3. User requests to edit a specific distributor by index

  4. Inventarie PRO edits the specific distributor in the list of distributors

    Use case ends.

Use case: Find distributor by name

MSS

  1. User requests to find the distributor or distributors that have a certain name

  2. Inventarie PRO shows the list of distributors with names that match the keyword given

    Use case ends.

Use case: Find distributor by tag

MSS

  1. User requests to find the distributor or distributors that have a certain tag

  2. Inventarie PRO shows the list of distributors with tags that match the keyword given

    Use case ends.

Use case: List products supplied by a distributor

MSS

  1. User requests to list all distributors

  2. Inventarie PRO shows the entire list of distributors

  3. User requests to view the products supplied by a specific distributor by index

  4. Inventarie PRO lists the products supplied by the specific distributor in the list of distributors

    Use case ends.

Use case: Delete distributor

MSS

  1. User requests to list distributors

  2. Inventarie PRO shows a list of distributors

  3. User requests to delete a specific distributor in the list

  4. Inventarie PRO deletes the product

    Use case ends.

Extensions

  • 2a. The list is empty.

    Use case ends.

  • 3a. The given index is invalid.

    • 3a1. AddressBook shows an error message.

      Use case resumes at step 2.

{More to be added}

Appendix C: Non Functional Requirements

  1. Should work on any mainstream OS as long as it has Java 9 or higher installed.

  2. Should be able to hold up to 1000 products without a noticeable sluggishness in performance for typical usage.

  3. A user with above average typing speed for regular English text (i.e. not code, not system admin commands) should be able to accomplish most of the tasks faster using commands than using the mouse.