Create a new company → a Head Office (HO) branch is created automatically
Create a new branch (Name, Code, Company, Manager) and save successfully
Duplicate branch code within the same company is rejected with an error
Run Provision Branch wizard with all toggles enabled
After provisioning, all 4 health indicators on the kanban card turn green (warehouse, journals, sequences, analytic)
Header button changes from Provision Branch to Re-Provision after first run
Sales journal, Purchase journal, Cash journal, and Bank journal are created and linked to the branch
Sales Orders number in format TRP/SO/2026/00001 (branch code + year)
Purchase Orders number in format TRP/PO/2026/00001
Stock Pickings number in format TRP/PICK/2026/00001
A warehouse and transit location are created and stamped to the branch
An analytic account (Cost Center) is created under the "Branches" plan
Running the wizard a second time creates nothing new and completes cleanly (idempotent)
2
User Roles & Access Control
0 / 9⌄
A brand-new internal user is automatically assigned to their company's Head Office branch
Branch User (Tier 1): Branch field on documents is read-only and auto-filled — no dropdown shown
Branch User (Tier 1): Cannot see documents from other branches, even by direct URL
Branch User (Tier 1): Cannot edit their own "Allowed Branches" field
Multi-Branch User (Tier 2): Branch field is an editable dropdown, limited to their assigned branches in the active company only
Multi-Branch User (Tier 2): Cannot change another user's branch pool — error: "Only a Branch Manager may change a user's allowed branches."
Branch Manager (Tier 3): Sees all branches in allowed companies; can edit any user's branch assignment
Removing a company from a user automatically removes that company's branches from their pool (no error, no crash)
Setting a user's default branch to one outside their allowed pool is rejected
3
Branch Switcher (Top Navigation Bar)
0 / 5⌄
Branch Switcher does not appear for a single-branch (Tier-1) user
Branch Switcher does appear for Multi-Branch / Manager users with 2+ branches assigned
Switching branch in the switcher refreshes the page and filters all lists to the selected branch
After switching, new documents auto-stamp the newly selected branch (not the previous one)
Selecting "All Branches" shows data across all assigned branches at once
4
Document Stamping & Auto-Fill
0 / 8⌄
New Sales Order auto-fills the Branch field from the user's active branch
New Purchase Order auto-fills the Branch field
New Customer Invoice auto-fills the Branch field
New Vendor Bill auto-fills the Branch field
New Stock Transfer/Picking auto-fills the Branch field
Changing the Company on a draft document re-points the Branch to a valid branch of the new company automatically
Posting an invoice whose branch doesn't match its source Sales Order is blocked: "Document branch does not match its source order branch."
Validating a receipt whose branch doesn't match its source Purchase Order is blocked: "Transfer branch does not match its source order branch."
5
Branch Isolation (Data Visibility)
0 / 6⌄
Tripoli user cannot open a Benghazi Sales Order, even by typing the URL directly
Tripoli user cannot see Benghazi invoices, POs, or transfers in any list
Attempting to save a document stamped to a foreign branch shows: "You are not allowed to assign branch '…'."
Multi-Branch user's dropdown lists only branches in their pool for the active company — no cross-company branches appear
Branch Manager sees all records across all branches in their allowed companies
Products and Partners are visible to all branches (shared catalog — expected behavior, not a bug)
6
Sales Order → Delivery → Invoice Flow
0 / 5⌄
Create SO on branch TRP → numbered TRP/SO/YYYY/NNNNN
Confirm SO → generated delivery (picking) inherits branch TRP
Validate delivery → stock decreases from TRP warehouse
Create invoice from SO → invoice inherits branch TRP; numbered TRPS/YYYY/NNNNN
Post invoice → journal entry P&L lines show branch Cost Center at 100% analytic distribution
7
Purchase Order → Receipt → Bill Flow
0 / 5⌄
Create PO on branch BNG → numbered BNG/PO/YYYY/NNNNN
Confirm PO → generated receipt (picking) inherits branch BNG
Validate receipt → stock increases in BNG warehouse
Create vendor bill from PO → bill inherits branch BNG; numbered BNGP/YYYY/NNNNN
Post bill → journal entry P&L lines show BNG Cost Center at 100%
8
Accounting & Financial Reports
0 / 4⌄
General Ledger filtered to "Tripoli – Main" shows only Tripoli journal lines
Profit & Loss filtered to one branch shows only that branch's income and expenses
Tax Report filtered to one branch matches the sum of tax lines on that branch's posted invoices and bills
Running P&L with branch filter empty (as a single-branch user) still shows only their own branch's data — system enforces access even when the UI selection is blank
9
Inter-Branch Stock Transfer Wizard
0 / 13⌄
"Inter-Branch Transfer" button is visible on branch form only after a warehouse is provisioned
Wizard opens with "From Branch" pre-set to the branch you opened it from
Selecting the same branch for both From and To shows: "Source and destination branches must differ."
Selecting branches from different companies shows the inter-company transfer error
Service-type products do not appear in the product dropdown (storable products only)
Selecting an unprovisioned branch (no warehouse) blocks the transfer: "Both branches need a warehouse."
Created picking uses the source warehouse's Internal Transfers operation type (not outgoing or receipt)
Picking's From location is the source branch's stock; To location is the destination branch's stock
Picking's Branch is stamped to the source branch; Source Document reads "Inter-Branch: TRP → BNG"
After creation, picking state is Ready immediately (assuming sufficient stock) — no manual "Check Availability" needed
After validating: source branch stock decreases; destination branch stock increases by the transferred quantity
Transfer appears in the source branch's Transfers smart button count
A single-branch user sees empty dropdowns in the wizard and cannot complete a transfer
10
Reporting, Analytics & KPI Dashboard
0 / 6⌄
Sales Analysis (pivot): switch to "All Branches", group by Branch — one column per branch appears with independent totals
Purchase Analysis: filter by branch shows only that branch's POs
Branch form → Dashboard tab shows KPI cards (Sales this month, Purchases, Invoiced, Open Transfers) with branch-specific figures
Smart buttons on branch form (Sales, Purchases, Transfers, Invoices) link to filtered lists for that branch only
Analytic report filtered to branch cost center shows only that branch's P&L lines
Post a customer invoice → open the journal entry → income line shows branch Cost Center analytic distribution at 100%
11
Branch-Branded PDF Documents
0 / 5⌄
With a logo uploaded on the branch: printed invoice/SO shows branch logo, not company logo
With address filled on branch: printed document shows branch address and phone
With Tax ID set on branch: printed document shows branch VAT number
Without any branding data on the branch: printed document falls back to company branding without errors