Design Multi-branch Retail POS System -- 2

Job ID: 40573247

Budget: $750 – $1,500 USD

1. Purpose

This document defines the functional and non-functional requirements for developing a RetailMan-style Point of Sale (POS) system designed for retail businesses operating multiple branches, each running offline, with multiple terminals, multiple stock locations, and credit sales support.

The system must be fast, reliable, offline-first, and suitable for supermarkets, electronics stores, hardware shops, and similar retail environments.

2. System Overview

Each branch operates independently on its own local server and LAN.

Multiple cashier terminals connect to the branch server.

The system works 100% offline at branch level.

A future sync module will allow consolidation between branches when internet is available.

3. Architecture Requirements
3.1 Deployment Model

Branch Server

Hosts database and business logic

Performs backups

POS Terminals

Client machines connected over LAN

No direct database access (via services/API)

3.2 Technology Stack (Preferred)

Platform: Windows Desktop

Language: C# (.NET 8)

UI: WinForms or WPF

Database: PostgreSQL (mandatory for multi-terminal safety)

Printers: ESC/POS thermal + A4 laser

Barcode scanner: USB HID

4. Branch, Location & Terminal Structure
4.1 Entities

Branch

Independent offline unit

Location

Shop floor, warehouse, service counter

Terminal

POS1, POS2, etc.

4.2 Rules

Inventory is tracked per location

Each sale records:

Branch

Location

Terminal

Cashier

Timestamp

5. POS / Sales Module
5.1 Core Features

Barcode scanning

Product search (SKU / name / barcode)

Quantity change, price override (permission-based)

Discounts (line & bill level)

Park / Recall sale

Sales return & refund

Void sale with supervisor PIN

Split payments (Cash / Card / Mobile)

Change calculation

5.2 Printing

80mm thermal receipt (ESC/POS)

A4 invoice printing

Reprint last receipt

5.3 End of Day

Cashier X-Report

Z-Report per terminal and per branch

6. Credit Sales (Accounts Receivable)
6.1 Customer Accounts

Customer code (company-wide unique)

Credit limit

Payment terms (7 / 14 / 30 days)

Opening balance

6.2 Credit Sale Flow

Select customer

Choose “On Account” payment

Invoice posted to Accounts Receivable

6.3 Payments

Full or partial payments

Allocation to invoices

Unapplied credits supported

6.4 Controls

Block sale if credit limit exceeded

Manager override allowed (logged)

6.5 Reports

Customer statement

Debtors aging (0-30, 31-60, 61-90, 90+)

Outstanding balances

7. Inventory Management
7.1 Product Master

SKU, barcode, name

Cost price, sell price

Tax category

Reorder level per location

Supplier link

7.2 Stock Movements

All movements logged in Stock Ledger

Inbound, outbound, adjustment, transfer

7.3 Stocktake

Physical count per location

Variance report

Supervisor approval

8. Purchases & Suppliers

Purchase Order

Receive goods into selected location

Supplier returns

Cost update rules (Weighted Average Cost)

9. Transfers
9.1 Within Branch

Location-to-location transfer

Dispatch → Receive workflow

9.2 Between Branches

Branch-to-branch transfer

Dispatching branch reduces stock

Receiving branch confirms receipt

Mandatory reference numbers

10. Users, Roles & Security
10.1 Roles

Admin

Manager

Cashier

Inventory Clerk

10.2 Permissions

Price override limits

Discount limits

Refund/void approval

Stock adjustment rights

Credit override

10.3 Audit Trail (Mandatory)

Log:

User

Action

Before / after values

Date/time

Terminal

Location

11. Reporting (Location & Branch Aware)

Sales (daily / monthly)

Sales by cashier / terminal

Product sales & margin

VAT/GST reports

Inventory valuation

Low stock per location

Debtors aging

End-of-day summaries

12. Backup & Data Safety

Automated daily backups at each branch

Manual “Backup Now” option

Restore utility with validation

Power-failure safe transactions (ACID compliance)

13. Sync & Consolidation (Phase 2)
13.1 Design Rules (Must be implemented now)

Every record must include:

GUID

BranchId

LocationId

CreatedAt / UpdatedAt

No auto-increment dependency across branches

13.2 Sync Options

Manual export/import (USB)

Online sync when internet available

13.3 Conflict Handling

Product & price: Head Office rules configurable

Stock: Only via transfer documents

Customers: Unique company-wide codes

14. Numbering Rules

Invoice: BRANCHCODE-00000123

Transfer: TR-BR1-BR2-000045

Customer: CUST-000123

15. Deliverables

Full source code ownership

Database schema & scripts

Server installer

POS terminal installer

Admin & cashier manuals

Training + support period

Bug-fix warranty

16. Project Phases

Single branch: multi-terminal, multi-location, credit, reports

Inter-branch transfer module

Sync & head-office consolidation