# AIPOS3 Multi-Branch ERP + POS Architecture Blueprint

*This document serves as the absolute source of truth for the R&D and development of AIPOS3.*

## 1. MASTER DATA
### Products (Produk)
- Central product management
- Branch product (harga per branch)
- Multi-barcode (satu produk bisa banyak barcode)
- Multi-unit of measure (pcs, pack, karton, dus) dengan konversi otomatis
- Batch & expiry date (untuk FMCG, farmasi)
- Multi-warehouse stock
- Active/inactive status

### Product Pricing (Harga Produk)
Wajib support:
- Purchase price (harga beli)
- HO to branch price (harga pusat ke cabang)
- Selling price (harga jual normal)
- Wholesale price (grosir)
- Agent prices 1–4 (untuk agen/dropshipper)
- Dynamic pricing (bisa berubah berdasarkan waktu/kondisi)

Fitur pricing:
- Mass price update (Excel import/export)
- Scheduled price update (jadwal harga promo)
- Price update per branch (branch specific pricing)
- Price history (siapa, kapan, dari harga berapa ke berapa)

### Other Master Data
- Suppliers (pemasok)
- Customers/Members (pelanggan dengan poin loyalty)
- Warehouses (gudang per branch)
- Branches (cabang dengan alamat, kontak, kode unik)
- Chart of Accounts (COA untuk akuntansi)
- Promos & Loyalty Points (diskon, buy X get Y, point multiplier)
- Users & Roles (dengan permission Spatie RBAC)

## 2. SALES
### A. POINT OF SALE (POS)
Pengguna: Cashier toko, walk-in customer
Hardware support: Barcode scanner, Thermal printer, Touchscreen monitor, Cash drawer
UI Requirements: Touchscreen friendly, Full keyboard shortcuts, Fast transaction, Search produk
POS Rules: Customer TIDAK WAJIB, Fast transaction
POS Payments: MAKSIMAL 2 tahap, DILARANG lebih dari 2 cicilan
POS Features: Offline POS, Draft transactions, Suspend transaction, Multi-payment, Split payment, QRIS, EDC, Vouchers & Promos, Loyalty points, Notes

### B. SALES TRANSACTION (Formal Sales)
Penggunaan untuk: Formal sales dengan invoice, Project sales, Term sales, Fixed customer/member
Sales Rules: Customer/member WAJIB diisi, Bisa berasal dari Sales Order (SO) atau manual input
Payments support: Cash, Bank transfer, Check/Giro, Term payment, Multi-payment, Accounts Receivable (Piutang)
Accounts Receivable wajib support: Multiple installments, Payment history lengkap, Receivable aging, Due date tracking + reminder

### C. RECEIVABLES PAYMENT (Pembayaran Piutang)
Function: Customer payment for receivables
Wajib support: Partial payment, Full payment, Multi-invoice payment, Payment history
Auto-process: Update receivable balance, Auto accounting journal, Update invoice status

## 3. PURCHASING (Pembelian)
Flow wajib: Stock Request → Purchase Order → Purchase Approval → Receiving → Supplier Invoice → Purchase Return
- Stock Request: Request dari branch ke HO/gudang pusat
- Purchase Order: PO number auto generate, kirim ke supplier via email/WA
- Purchase Approval: Multi-level approval sesuai limit
- Receiving: Check barang sesuai PO, Input batch/expiry, Update stock otomatis
- Supplier Invoice: Match dengan Receiving, Generate Accounts Payable (Hutang)
- Purchase Return: Retur ke supplier, Update stock dan hutang

### ACCOUNTS PAYABLE PAYMENT (Pembayaran Hutang)
Function: Supplier payment for payables
Wajib support: Partial payment, Full payment, Multi-invoice payment, Payment discounts, Bank admin fees
Auto-process: Update payable balance, Auto accounting journal

## 4. INVENTORY
Fitur wajib: Stock mutation, Warehouse transfer, Stock opname, Stock adjustment, Real-time stock card, FIFO / AVG costing, Negative stock policy
Stock card harus record: Date, Reference, In, Out, Balance, Cost

## 5. FINANCE & ACCOUNTING
Accounting components: Chart of Accounts (COA), General journal, Auto transaction journal, General ledger, Trial balance, Balance sheet, Profit & Loss, Payables aging & Receivables aging, Due date reminders
Auto journal rules: Sales → Debit: AR/Cash, Credit: Revenue dll.

## 6. REPORTING
Semua report WAJIB support filter: Branch, Warehouse, Date range, Export to Excel/PDF/CSV
Sales Reports: POS daily summary, SO, Formal Sales, Returns, Best-selling, Margin, Loyalty points
Receivables Reports: Aging, history, outstanding
Payables Reports: Aging, history, outstanding
Inventory Reports: Stock card, mutation, position, minimum stock alert
Accounting Reports: General ledger, Trial balance, Balance sheet, Profit & Loss, Cash flow

## 7. SYNC ENGINE (TRIPLE-REDIS)
Requirements: Incremental sync, Queue-based sync, Retry mechanism, Conflict resolution, Chunked sync
Data Flow: 
- BRANCH → HEAD OFFICE: Transactions, Stock mutations, Journals, New customers
- HEAD OFFICE → BRANCH: Products & prices, Promos, Suppliers, Users & roles
