Skip to content

taabishm2/AssureFull

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

99 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Toy Assure

An Order and Inventory Management System

Description

Toy Assure is an Order and Inventory Management System that provides the ability for managing of inventory, parties, orders and other related processes. The basic entities involved are

  • Consumers: Include Clients & Customers (buyers & sellers).
  • Products: Products are provided by the Clients and ordered by Customers
  • Bins: The smallest available unit of space in a warehouse is called the storage bin. It describes the position in the warehouse where the goods is or can be stored
  • Channels: Channels act as intermediary parties that provide a platform for Clients to place Orders for Products

Process Flow

The overall flow for the various processes is demonstrated below:

Flow Diagram

Product and Inventory Management Flow

Products and their details are registered and can then be assigned in desired quantities into pre-created Bins. This makes them a part of the inventory.

NOTE: Channels need to register the products they provide via the provision of a Channel Listing. Channel Listings are created over existing products to provide a mapping for the channels to specify these products during Order Placement.

NOTE: Orders placed internally through the Assure Server UI are placed via a default INTERNAL channel. This INTERNAL channel does not require Channel Listings

Order Creation Flow

Orders may be placed either internally (via the Assure Server UI) or through a registered Channel Entity (via the Channel Module UI).

An Order represents a requirement of Products provided by a specific Client to a specific Customer, placed through a specific Channel and assigned a unique Order-ID. An Order encompasses the demand of one or more Order-Items where each Order-Item represents the Product ordered and the quantity in which it is ordered.

Once placed successfully, Orders can be managed through the Assure Server UI. Broadly, the two basic actions that can be taken on the Orders are:

  • Allocation of Orders Order allocation involves allocating the requested products from bins in which they are available. Allocation may or may not be complete depending on available Inventory.
  • Invoicing of Orders For Orders which have been allocated completely, invoice can be generated as a PDF. Invoicing may be INTERNAL or CHANNEL type.
    • Internal Invoicing: The invoice PDF is generated on the Assure Server without any invlovement of the Channel.
    • Channel Invoicing: The invoice PDF is generated by the Channel as per its requirements and is sent back as a PDF to the Assure Server. This process invloves the Assure Server sending the Order Details to the channel and receiving the Invoice PDF as a response.

Note: During Channel creation, Channels may opt for either SELF invoicing or CHANNEL invoicing mode. The INTERNAL channel always does SELF mode invoicing.

Installation

  1. Clone the repository to your machine (MySQL should be installed).
  2. In the assure.properties file, specify your MySQL username and password.
  3. Build the project via mvn clean install -U
  4. Run the Assure Server module. By default, it is hosted on localhost:6060/assure
  5. Run the Channel App module. By default it is hosted on localhost:7070/assure/order

Tech Stack Details

The languages, frameworks and libraries. used in the project are:

  • Java (core language)
  • MySQL (RDBMS)
  • HTML, CSS, JS, AJAX, Bootstrap (front end)
  • Git (version control)

  • Spring MVC (application framework)
  • Maven (project management, )
  • Hibernate (ORM)
  • Thymleaf (Java XML/XHTML/HTML5 template engine)
  • Junit (Unit Testing)
  • Log4j (Logging)
  • Swagger (API Management)
  • Apache FOP (PDF generation)
  • PapaParse (CSV Parsing)

Miscellaneous Features

  • Timezone handling is done at the front-end, server and database level. This allows the Front-end, Server and Database to be at arbitrary timezones.
  • CSV upload functionality is present for uploading details in bulk. Validation of the CSV is done at the back end and errors are displayed line-wise within the CSV. CSV samples are provided at every point where a CSV upload might be done.
  • Search Params are provided in most UI pages to filter details based on various params including dates, names, IDs and other relevant details.
  • Form Validations occur at multiple levels including at front-end HTML, back end server level and database level.
  • Form Normalization is performed wherever required to ensure a consistent data format is stored.
  • Products Editing functionality is provided in UI to alter product details via a single click.
  • Invoice PDFs include all relevent details of the Order and the correponding Order Items. PDFs are generated via a simple button click.
  • Snake case naming is automatically used in the database

About

Full-stack order and inventory management system built with Spring MVC

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published