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