This project has 5 modules as outlined below.
1. Accounts Module
Fiscal Period, such as monthly, quarterly, or yearly intervals, serve as the structural framework for the accounting cycle. The accounting in this system operates within the context of the latest open and active period.
Account (such as Inventory, Revenue, etc.) is used to categorize and record financial transactions. Each Account is further divided into sub-accounts (like Inventory-Electronics, Revenue-Electronics, etc.). Sub Account provide further categorization within an Account, offering more detailed breakdowns of financial transactions.
Both Account Type (Assets, Liabilities, Equity, Revenue, and Expenses) and Cashflow Category Type (Operating Activities, Investing Activities, and Financing Activities) are foundational classifications used to categorize various accounts based on their nature and purpose within the system.
Both Account Class and Cashflow Category are used to further categorize accounts. Account Class classify accounts based on account types, offering specific classifications such as Current Assets, Current Liabilities, Fixed Assets, Sales Revenue, Cost of Goods Sold, etc. On the other hand, Cashflow Category categorize accounts according to cashflow category types, providing specific classifications such as Cash from Sales, Cash Payments to Suppliers, etc.
Journal Voucher serve as documentation for recording financial transactions, providing details of debit and credit journal voucher entries, transaction dates, descriptions, and references to other supporting documents such as receipt or invoices.
Within each Journal Voucher, there is/are journal voucher entry/(ies). Journal Voucher Entry document individual item by recording debit and credit linked to specific sub-accounts. Each Journal Voucher Entry includes details such as the debited and credited sub-accounts along with the transaction amounts.
The Taxes feature allows for configuring and managing various tax setups within the system. Configuration includes setting up tax rates, types, and their associated sub-accounts.(note that although taxes can be configured within the setup, they are currently not applied or included in the displayed item transactions)
2. Inventory Module
Item represent individual product available for sale within the system. Each Item is characterized by attributes such as name, cost, price, quantity, unit of measure, classification (Item Class and Item Category), and specific identifiers like code or barcode.
Each Item is linked to a specific Unit of Measure, establishing how the quantity of the Item is measured and sold.
Item Class Type (such as Electronics, Clothing, Home Appliances, etc.) are foundational classifications used to categorize various items according to their characteristics. These item class types are further categorized by item classes, providing more specific classifications.
Both Item Class and Item Category provide structured classifications for grouping and organizing items based on their characteristics or types.
Item are associated with relevant sub-accounts, enabling the financial tracking of inventory, cost of sale, and revenue within the system.
System Functionality:
When the quantity of an Item is updated, the system automatically generates and posts a corresponding Journal Voucher to reflect this change. The balance amount linked to the items' inventory Sub Account is adjusted accordingly, either increased or decreased based on the updated quantity of the Item.
3. Point of Sale Module
An Item is sold, capturing details such as item name, quantities, prices, and payment methods.
System Functionality:
Each sales transaction involves one or more inventory items, reducing the available stock by the sold quantities. Additionally, an automatic Journal Voucher is posted, adjusting the balance amounts linked to the inventory, Cost of Sale, and Revenue sub-accounts for each Item.
4. Security Module
Super Admin, Admin and User are consideres as System User. To become a System User, registration is required.
Each System User can be assigned none, one, or multiple User Roles.
Each user Role encompasses a set of privileges. Privilege define whether a System User can perform specific actions.
5. Reports Module
Generates reports based on both recorded financial information along with sales data.(note: Not yet implemented)
- Frontend: ASP.NET Core MVC with HTML, CSS, JS
- Backend: ASP.NET Core Web API with C#
- Database: PostgreSQL
- Data Access: ADO.NET
- Platform: .NET 6.0
- API Tests: Insomnia
clone and open the solution file in Visual Studio
- Use pgAdmin(or other) to create an empty database named Accounts.
- Import the Accounts.sql file from the wwwroot/AppData/Database directory of this project.
Set a database connection string called ConnectionStrings in the PointOfSaleSystem.Web project's appsettings.json or use Secrets
Example config setting in appsettings.json for a database called Accounts:
"ConnectionStrings": {
"DefaultConnection": "Host=localhost; Database=Accounts; Username=postgres; Password=yourpassword"
}"yourpassword" - password to your database
- Set the Startup Item in your IDE to PointOfSaleSystem.Web and start the server.
- Log in with user name Super Admin and password 123
- Open Insomnia (or another tool) and import the PointOfSale.json file from the 'wwwroot/AppData' directory of this project.
- Ensure that you make the POST request along with the JSON, as shown below, to authenticate.
(not maintained, only for demonstration)
- "Database Lesson" Video Series, Dr. Daniel Soper
- "ADO.NET Tutorial" Video Series, kudvenkat
- "Pro C# 10 with .NET 6, Eleventh Edition" Book, Andrew Troelsen
- "ASP.NET Core in Action, Third Edition" Book, Andrew Lock
- "Schaum's Outline of Principles of Accounting, 5th Edition" Book, Joel Lerner
- "Financial Accounting" Video, pmtycoon



















