عربي
Sectors

Retail & Branches

01

One connected flow for every item: from supplier to shelf to customer

Retail management doesn't stop at the point-of-sale screen. The same item moves through purchasing, receiving, distribution, transfers, sales, returns, and inventory counts, and its cost and accounting impact move with it.

Add more branches, an online store, or other sales channels, and things start to slip: an item shows as available while the shelf sits empty, stock piles up in one branch while another runs out, or register sales don't match the cash handed in.

That's why the system starts from the item's full journey, not from the point of sale alone.

02

It starts with product data

Any error in product data flows downstream: into purchasing, inventory, pricing, sales, and the books.

So every item gets one unified product record covering:

Name, category, and brand.
Color, size, and every other variant.
Barcode, or several, when needed.
Purchase unit, sales unit, and the conversion between them.
Suppliers, their prices, and lead times.
Cost, sale price, and minimum margin.
Taxes and accounting treatment.
Lot and expiry date, where the item needs them.
Serial number, where each unit is tracked individually.

Every branch, warehouse, and sales channel uses the same product record, instead of each branch inventing its own definition or price for the same item.

Inside Odoo
Size selection screen for an item in the Odoo register
One product record, every size: at the register the cashier picks the size, and the price difference is applied automatically.
03

From need to purchase order

Purchasing doesn't start when someone notices an empty shelf.

The system sets a minimum and maximum level for each item, per branch or warehouse, and watches current sales, confirmed orders, available stock, and goods in transit.

When a shortage appears, the system first looks for surplus inside the company's own branches. If an internal transfer covers the need, there's no reason to buy more from outside.

If the available quantities aren't enough, a purchase suggestion appears with the required quantities, the right supplier, their price, and the expected lead time.

The purchase order goes through approval based on its value or the type of items, then goes out to the supplier, with the delivery date and outstanding quantities visible until receiving is complete.

Local purchasing and imports

The purchasing cycle can differ by source, but the outcome is the same: an accurate cost and a clear supplier balance.

For local purchases, you track quantity, price, discount, tax, and the delivery date.

For imports, freight, insurance, customs, and other charges are added to the cost of the goods and allocated by the approved rule, instead of being booked as a separate expense that never shows up in the item's margin.

04

Receiving is more than adding a quantity

When goods arrive, received quantities are matched against the purchase order, and any shortage, excess, or damage is recorded before anything enters available stock.

Receiving is done by barcode, capturing lots, expiry dates, or serial numbers where needed.

Goods can then move to different locations depending on their state:

Available for sale. Under inspection. Damaged. Needs repair or refurbishment. Rejected: awaiting return to the supplier.

An item isn't sellable just because it reached the branch: only once receiving is complete and its condition is verified.

After that, the supplier's invoice is matched against the purchase order and what was actually received, and the balance due and its payment date appear in the supplier's account.

05

Distributing goods across branches

Goods can land in a central warehouse and get distributed to the branches, or be received directly at the branch, whichever way the company works.

Distribution follows each branch's need, sales velocity, and current stock, not an even split of quantities.

A fast seller in one branch can be a slow mover in another, and repeating the same split ends with stockouts in one place and dead stock in another.

The system shows:

Each item's stock at each branch.
Sales velocity and turnover.
Quantity reserved for open orders.
Quantity in transit.
Days of cover before stockout.
Surplus available to transfer.
Dead or slow-moving items.

With that in view, goods can be redistributed before a new purchase order is raised.

06

Inter-branch transfers

An item isn't deducted from one branch and added to another in a single step. The goods spend real time between the two.

A transfer moves through four clear stages:

Transfer request → approval → picking & shipping → receipt

The branch that's short raises the request: items, quantities, and the reason. A manager reviews the source branch and its available quantity, then approves the transfer.

On dispatch, the goods leave the source branch into an in-transit location. They don't yet appear in the receiving branch's stock.

On arrival, the branch receives them with a physical scan; they enter its balance and the transfer closes.

The transfer carries with it:

Items and quantities.
Lots, expiry dates, and serial numbers.
Who picked, who shipped, who received.
Departure and arrival times.
The cost of the goods.
Any discrepancy or damage in transit.

Transfer exceptions

Part of the quantity might arrive, an item might arrive damaged, the branch might refuse the delivery, or the shipment might get rerouted.

These cases aren't closed by quietly editing a quantity. Each is recorded as an exception tied to the original transfer, so the discrepancy, its cause, and who's accountable stay visible.

Inside Odoo
List of inter-branch inventory transfers inside Odoo
Inter-branch inventory transfers: every transfer carries a reference, a status, a source, and a destination. No quantity moves without a trail.
07

Selling in the branch

Every branch runs a POS connected to inventory and accounting in the same system.

The cashier scans the barcode; the item's details, price, allowed promotions, and available quantity appear.

The system handles:

Cash, cards, and mobile wallets.
Splitting one payment across several methods.
Discounts and promotions.
Different pricelists by branch or customer type.
Loyalty points and gift cards.
Exchanges and refunds.
Selling through internet outages, then syncing.
Printing or sending the receipt.

But the cashier can't change a price or grant a discount beyond their limit. Anything past the set permission goes to the branch manager for approval.

Inside Odoo
Odoo point-of-sale screen with apparel products and a sale cart
The register as the salesperson sees it: items with photos and sizes, with the cart, total, and tax calculated in real time.
08

Shift close

Every shift opens with a cash float and ends by comparing what the system recorded against what's actually in the drawer, plus what came in by card and every other payment method.

At close, you see:

Total sales.
Sales by payment method.
Returns and refunds.
Authorized cash expenses.
Expected cash.
Counted cash.
Shortage or overage.
The employee responsible.

Every variance needs a reason and an approval. It's never closed as one lump figure with no record of the shift, the cashier, or the payment method it appeared in.

Inside Odoo
Payment screen in the Odoo register with multiple payment methods
Closing the sale: cash, card, or on the customer's account, and every payment method flows into the shift close automatically.
09

Every sales channel on one stock pool

A company might sell from its branches, an online store, marketplaces, and wholesale, all at the same time.

That doesn't mean each channel runs in isolation, or that every channel sees all the stock with no controls.

The product catalog stays unified, while each channel can get its own allocated quantity, warehouse, or pricelist.

The online store

Orders land in the system with their source, customer details, payment method, and delivery method.

The system decides where each order is fulfilled (based on stock availability, customer location, and company rules), then tracks picking, packing, shipping, and delivery.

Marketplaces

Marketplace orders map to the same products, while each order keeps its source, its commission, and each marketplace's settlement terms.

The marketplace statement is reconciled against orders, returns, commissions, and the amounts actually transferred.

Wholesale

Wholesale customers run on their own pricelists, credit limits, and payment terms, separate from branch customers.

Their orders ship from the most suitable warehouse, and each customer's balance and collections stay visible without mixing into cash retail sales.

10

Fulfillment and shipping

Online and wholesale orders typically move through:

Confirmed order → picking → packing → ready to ship → with the carrier → delivered or returned

Several orders can be picked in one batch, then every item and every shipping label is scanned during packing to confirm the shipment matches the order.

With a carrier integration, shipment statuses flow back into the system automatically: what was delivered, what failed, and what came back to the warehouse.

And with cash on delivery, an order isn't treated as collected the moment it ships, only after delivery is confirmed and the carrier's statement is reconciled against the amounts they actually transferred.

11

Returns are the highest-risk zone

Returns, exchanges, and refunds move inventory and cash at the same time. A negative receipt isn't enough.

The process starts from the original order or invoice, then records:

Item and quantity.
Reason for the return.
Condition of the item on arrival.
Refund method.
Fees or discounts applied.
Employee and branch.
Approval, when the transaction exceeds the allowed limit.

After inspection, the item goes to the right place: available stock, damaged, repair, or refurbishment.

The refund goes back to the original payment method per company policy, not cash paid out of the branch drawer with no clear link to the sale.

And if the return came from a picking error, a shipping error, or a product defect, the reason stays on record, so it can be measured and fixed at the source, not just booked as a financial entry.

12

Inventory counts prove the ledger matches the shelf

An inventory count isn't an annual exercise in fixing numbers. It's a continuous cycle that verifies stock accuracy.

Cycle counts can run on a category, a location, or a group of items without closing the branch, alongside a full count when needed.

The physical count is compared to the expected balance, and every variance needs:

A clear reason.
Who did the count.
When and where it was counted.
A review or recount above a set threshold.
Approval before the balance is adjusted.

That's how you learn whether a variance came from a receiving error, an unclosed transfer, an unrecorded sale, a return put away in the wrong location, or genuine loss.

13

Lots, expiry dates, and serial numbers

Not all retail is the same.

For food, cosmetics, and anything with a shelf life, the system knows the lot and expiry date and applies FEFO: whatever expires first ships first.

For electronics and high-value goods, every serial number links to its purchase, branch, customer, warranty, and any return or repair.

So a unit can be traced from supplier to customer, or, when a problem surfaces in a lot, every customer who received it can be identified.

14

When the business includes prep or light manufacturing

Some retail businesses don't just buy finished products. There may be roasting, blending, packing, assembly, or subcontracted production.

In that case the system connects:

Raw materials or components. Production or prep operations. Output quantity. Scrap. Packaging materials. Inspection and quality. Finished product cost. Moving it to branches or sales channels.

This cycle isn't switched on for every company by default. It's used when it's genuinely part of how the business runs.

15

The accounting behind the operations

Every completed transaction creates its accounting entry at the source. Nothing gets re-keyed into a separate program.

A purchase creates the supplier liability. Receiving updates inventory value. A sale records revenue and cost. A return reverses its impact. Shift close defines what should be in the till. And a transfer moves the value of goods between branches without counting as a sale.

Profitability can be tracked at more than one level:

Branch. Sales channel. Product category. Brand. Item. Employee or sales team. Online store or marketplace.

Tills, banks, card processors, carriers, suppliers, and customers each live in separate accounts that can be reconciled against actual movements.

So the profit report isn't just sales minus purchases. It's a result that includes cost of goods sold, returns, discounts, commissions, delivery costs, and each branch or channel's expenses.

16

Who owns each decision?

One person may hold several roles depending on company size, but every decision must have a clear owner.

Merchandising & commercial
Decisions they own
Product definitions, pricing, promotions, discount limits, and which channels carry which products.
Purchasing
Decisions they own
Suppliers, requests for quotation, purchase orders, and delivery schedules.
Inventory management
Decisions they own
Receiving, storage locations, transfers, replenishment, and approving adjustments.
Branch manager
Decisions they own
Running the branch; approving discounts, refunds, and variances within their limits.
Cashier
Decisions they own
Selling, collecting payment, and handling returns within set permissions, and closing the shift.
E-commerce
Decisions they own
Online orders, stock allocation, fulfillment, and carrier and marketplace integrations.
Customer service
Decisions they own
Complaints, exchanges, and returns, tracking their causes and turnaround times.
Inventory control
Decisions they own
Count plans, variance analysis, shrinkage, and stock accuracy.
Finance
Decisions they own
Supplier and customer accounts, tills and banks, reconciliations, valuation, and profitability.

Some processes cross more than one department, but no purchase, adjustment, discount, or return decision may sit without a named owner.

17

Governance across every branch

All branches run on one database, but that doesn't mean every user sees or changes everything.

Access rights define what each role can reach, and an approvals matrix sets clear limits for discounts, purchases, transfers, returns, and inventory adjustments.

The system keeps a log of who created each transaction, who approved it, who changed it, when, and why.

The management dashboard brings together indicators like:

Sales and margin per branch and channel.
Stock accuracy and count variances.
Fast, slow, and dead stock.
Shortages, surpluses, and open transfers.
Orders not yet fulfilled or delivered.
Returns and their reasons.
Supplier performance and delivery dates.
Cash position and shift variances.
Profitability by branch, item, and channel.
Inside Odoo
Branch sales aggregated in one screen inside Odoo
Sales orders grouped by branch: order count and total per branch, plus the grand total, one click in front of management.
18

What does Odoo actually run?

Odoo brings into one system:

Products, variants, barcodes, and units of measure.
Suppliers, local purchasing, and imports.
Receiving, inspection, lots, expiry dates, and serial numbers.
Warehouses, branches, and storage locations.
Replenishment and inter-branch transfers.
POS, shifts, and payment methods.
Pricing, promotions, loyalty, and gift cards.
The online store, marketplaces, and wholesale.
Picking, packing, shipping, and cash on delivery.
Exchanges, returns, and refunds.
Inventory counts, adjustments, and shrinkage analysis.
Light manufacturing or prep, where the business has it.
Supplier accounts, tills, banks, and reconciliations.
Profitability per branch, channel, category, and item.
Access rights, approvals, and a full audit trail.

As for reorder thresholds, discount policies, approval levels, return reasons, distribution rules, and branch permissions: those get defined during the analysis of how the company actually operates. The system should reflect the way it works, not force a single retail template onto it.