Point of Sale_
Custom Cloud Application
Project Details_
Project_
Development of a Custom Point of Sale Cloud Application
Project Roles:
Project Tech:
Point-of-Sale Recycling Cloud App
I was tasked with creating a custom, cloud-based point-of-sale application for a company that needed to replace their outdated, subscription-based system. With 350 employees and 7 branches, the company sought a solution that would centralize their data and provide real-time access from any location
I carefully planned, designed, and developed a solution tailored to the company's unique needs, despite time constraints and working as a solo developer with only 140 hours a month available to develop such a solution. Despite these challenges, I was able to deliver a functional solution within a 13-month timeframe.
The software was successfully trialed in November 2021 and is now being used in full production, processing an average of 5000 orders per day as of January 2022. The company will greatly benefited from the centralized data and real-time access provided by this custom-built solution.
High Level Overview of the POS functionality and features.
This is a "short list" to highlight some of the features that this POS consist of.
Order Transactions
- Weighbridge Notes
- Purchase Orders
- Sales Orders
- Expenses
- Loans
- Order Attachments
- Cash, EFT Or Account
- Cancelations
- Refunds
Cash Float System
- New Float
- Continue Previous Day Float
- Float Expenses
- Float Issue & Float Received
- Cashup
- Current Float Dashboard
Dynamic Interactive List System
- All Weightbridge Notes
- All Purchases
- All Sales
- All Expenses
- All Loans
- All Cashups
Live Filterable and CSV Exportable Reports
- Purchases per line item
- Sales per line item
- Trade Summary
- Floats per line item
- Cashups per line item
- Weighbridge Notes per line item
- Customers per line item
- Products per line item
Customers
- Customer List
- Add, Edit or Update Customer
- Types: Cash, Dealer, Account
- Cust. Details View
- Cust. Invoice List View
- Cust. Purchase Note List View
- Cust. Interactive Loans View
- Cust. File Attachments
Branches
- Branch Sessions Management
- List Branches
- Add, Edit or Update Branch.
- Disable a Branch.
User Management
- User List
- List Users
- Add, Edit or Update Users
- Disable User Accounts.
- Account Types
- User Branch Management
- User Role Type
- User Password Change Option
Product Management
- Product list with stock Qty.
- Add, Edit, Update Product
- Stock Management
- Branch Purchase Prices per type
- Branch Sale Prices per type
Other Mentions
- User Authentication
- CSV Export Functionality
- Dynamic Search Filters
- Audit Trails
- Printable Slips, A4 + PDF
- Order Protection Checks
- Payment Protection Checks
- Float Protection Checks
- 10c Rounding
- Accurate exc. to inc. to exc.
UI/UX Design
In the UI/UX process the visual layout of the software is researched and brought into visual design. Once the client signs off or give the go ahead this visual design is coded into templates.
- Drafted Wireframes for the layout of the software. Where business logic is transformed into application logic. In this case design logic.
- We settled for a Theme framework to speed up the development process.
Architecture
When it comes to the architecture of the solution, I first focused on understanding the business logic and translating it into the appropriate application logic. This involved careful planning and analysis to ensure that the final product would meet the company's unique needs and requirements.
The next step was to design the database architecture. This involved creating a centralized MongoDB database that could handle the large volume of data generated by the company's 7 branches and 350 employees. The MongoDB database provided the necessary scalability and security to support the company's needs.
In terms of server architecture, I chose to utilize cloud-based servers and Node.js as the backend framework. This allowed for easy access and real-time data updates from any location. This was a crucial aspect of the solution, as the company required real-time access to their data from any branch or location.
Finally, I developed the client-side application (CSR) architecture using React.js as the frontend framework. This involved creating a user-friendly interface that could handle the large volume of data and transactions generated by the company. It was a challenge to create a solution that would be easy for the employees to use, but also powerful enough to handle the company's needs.
Despite the challenges involved in creating a solution tailored to the company's unique needs, I was able to deliver a functional and effective solution. The centralized data and real-time access provided by the solution have greatly benefited the company, enabling them to process thousands of orders per day with ease, utilizing the power of Node.js, React.js and MongoDB.
- Database Architecture.
- Server Architecture.
- Client App (CSR) Architecture.
Weighbridge Note & Certificates
To weight elements to determine the final nett value to perform a purchase or or a sale.
- Items can be weighted by single or by multiple elements if a truck comes in with diffirent scrap metal loaded on a trailer. Then each item can be weighted independedly while the elements are offloaded or uploaded one-by-one. The system will automatic determine if its a sale or a purchase.
- Option to only Generate Weighbridge Certificates.
- Each weighted item is capture into a line item with its Product Code, Product Description, Gross, Tare, Deduction, Deduction Note and Nett value.
- Option to convert a Weighbridge Note into a purchase or sale. The weighbridge note will also be attached to the purchase or sale till slip document if its converted into a order.
- Other options includes adding a Order Note Number, Delivery Note Number, Referance Number, Container Number, Vehicle Registration Number, Vehicle Description and the Transporter Description details.
Purchases
To facilitate efficient Point of Sale transactions for the acquisition of scrap metal from customers, the platform provides a comprehensive dashboard. This dashboard enables businesses to create or search for customers, display customer details, create and display Purchase Orders with editable line items, and process payments via cash, EFT, or account.
- Customers can be searched or displayed on the POS Purchase Dashboard with their most important information.
- Unique sequential POS Order Numbers are created with each new order that includes a prefix for the current branch/outlet and a suffix to indicate a P for purchases or S for sales.
- Each product is added as a line item via a special dialog window. You can select the product, and then based on the type of customer, cash-, dealer, or account customer there spesial assigned prices (under products) will populate the excluding and including fields.
- Till users also have to option to change the current price, with special custom price boxes for excluding and including amounts. This also comes with a price change note box.
- Every line item, can be updates with Gross, Tare and Deduction values, if its not automatic populated coming from a Weighbridge note. Then the system will work out the Nett, the subtotal, the vat and the final inclusive total for that line item.
- Line items can be edited or removed.
- Pending: The order can be saved without payment. This is if you need to come back and update the order.
- Complete: The order can be saved with payment. The order will be saved and the till user will be presented with a payment screen.
- Payment Screen: Payments can be done via Cash, EFT or Account. If no physical money payments is performed the amount will be assigned to the customer account.
- Printable till slips will be display before and after a payment. These invoice till slips can be reprinted afterwards.
Sales
To facilitate efficient Point of Sale transactions for the sale of scrap metal to customers, the platform provides a comprehensive dashboard. This dashboard enables businesses to create or search for customers, display customer details, create and display Purchase Orders with editable line items, and receive payments via cash, EFT, or account.
- Customers can be searched or displayed on the POS Purchase Dashboard with their most important information.
- Unique sequential POS Order Numbers are created with each new order that includes a prefix for the current branch/outlet and a suffix to indicate a P for purchases or S for sales.
- Each product is added as a line item via a special dialog window. You can select the product, and then based on the type of customer, cash-, dealer, or account customer there spesial assigned prices (under products) will populate the excluding and including fields.
- Till users also have to option to change the current price, with special custom price boxes for excluding and including amounts. This also comes with a price change note box.
- Every line item, can be updates with Gross, Tare and Deduction values, if its not automatic populated coming from a Weighbridge note. Then the system will work out the Nett, the subtotal, the vat and the final inclusive total for that line item.
- Line items can be edited or removed.
- Pending: The order can be saved without payment. This is if you need to come back and update the order.
- Complete: The order can be saved with payment. The order will be saved and the till user will be presented with a payment screen.
- Payment Screen: Payments can be done via Cash, EFT or Account. If no physical money payments is performed the amount will be assigned to the customer account.
- Printable till slips will be display before and after a payment. These invoice till slips can be reprinted afterwards.
Expenses
Internal Business Expenses. Like fuel purchases etc.
- Expenses can be loaded as inclusive or exclusive vat amount.
- Ability to attach files like the expense invoice.
- Expenses have its own dashboard to view a filterable list of all expenses. Expense slips can be reprinted from here.
Loans
Loans made by customers. Ability to make multiple loans from one customer. The loan account of the customer will be updated and the funds transfered to the customer's balanace.
- Dashboard to issue the loan.
- Dashboard to receive a loan payment.
- If a payment is made by the customer, the payment will be applied from the first outstanding loan amount first and then sequacially applied to any other outstanding loans until the payment amount is depleted.
- Loans also have a buildin audit tracking system. Users who issued the loan or performed the a loan payment is logged in the system.
Float System
The float system is responsible in handling all cash transactions. Till users can start a new float on a new registered cash register, or continue with the previous day cashup.
- New float: The till user is presented with a screen to enter the counted amount of each currency item. The system will then caluclate the value of the counted amount. For example if a 100x R100 is counted it will have a value of R1000. Al the currency values will be added together to generate the total float for the day.
- Continue Float: The system calculated float previous day balance will become today's new float balance.
- Float Issued & Received. Float's can be transfered from one cash register or till user to another.
- Cashup: Ability to perform a counted cashup in that each currency type is counted and then matched to the system float. Any discrepancies is indicated in a breakdown report called a Cashup Report giving a break down of the day's transactions.
- Current Float Dashboard: This dashboard will showcase all current live float transaction for the day for the spesific user.
Product & Price Types
Product Dashboard to load products and a seperate Dashboard to create product categories. Also a Product List Dashboard to filter on Products. Special price dashboard to update individual price types for each product.
- Create, Edit, Update or Disable a product. A product can never really be deleted, because that product could be tied to a Weighbridge, Purchase or Sale. This is important for autdit tracking and order history.
- Stock: Each product have a Dashboard to update the product stock quantity for each branch.
- Stock is incremented or decremented via special functionality, and not add via count methods to gaurentee absolute accuracy. Stock also makes use of the mathematicl 128 float decimal precission.
- Each Product have the option to add individual Purchase and Sale price types. This included Cash & Dealer prices for a branch and account prices for customers. This is to seperate diffirent prices for diffirent type of customers.
Customer Management
To Manage customer and their accounts.
- Create, Edit, Update or Disable a customer. When a customer is disabled, its disabled from customer searches and the ability to add a customer to an order or perform and transactions. The disabled customer will still be searchable via the customer dashboard list only. A customer can never really be deleted, because that customer could be linked to a Weighbridge, Purchase or Sale. This is important for autdit tracking and order history.
- Customer List Dashboard: A searchable, filterable list for customers.
- Customers can also be search on Full Name, ID, Account Number or Vehicle Registration Number. This search feature is also avaialbe for all dashboards that interact with customers.
User Management
User Dashboard to load users. Also a User List Dashboard to filter on users.
- Create, Edit, Update or Disable a user. When a user is disabled, its disabled from user searches and the ability to add a user to an order or perform and transactions. The disabled user will still be searchable via the users dashboard list only. A user can never really be deleted, because that user could be linked to a Weighbridge, Purchase or Sale. This is important for autdit tracking and order history.
- User's can be assigned to one or many branches.
- User type role's can be assigned to a user.
Reports Dashboards
The ability to pull live reports, by filterable search results. Reports for: Weighbridges, Purchase, Sales, Trade Summary, Floats, Cashups, Customers & Products.
- These reports are broken down to their line items to give a full comprehensive detailed breakdown of each transaction on one screen. This can give you an clear audit report for any type of operation performed on the system for a given order type, float, product or even live stock quantities via the trade summary.
- These reports per line items can further be filtered for desire results.
- The line item reports can be exported via CSV.