A van salesman works alone at the customer's door, with a phone, a stock of goods and a cash drawer that holds two currencies. Al Jawad Software House built a van-sales point of sale in Odoo so that stock, location and cash are checked as the sale happens.
The business
The distributor sells packaged goods from vans, by the box or by the piece. Customers pay in US dollars, Lebanese pounds or a mix of both. Goods that come back may be damaged or past their date, and each case needs different handling.
Where the work gets hard
Two currencies, one drawer. At the end of the day the salesman's cash must be counted in each currency. If the system only knows one, the day never balances.
Selling what the van holds. A salesman can easily sell more than he carries, or enter an order while sitting somewhere else.
Returns are several jobs. A returned box may go back to stock, be scrapped or be moved to a separate place for goods near expiry. The customer should only be charged or credited for the difference.
Warehouse staff need narrow access. The people who load vans should handle receipts and transfers, and nothing else.
What we implemented
A point of sale for each salesman
Each salesman sees only his own point of sale on his phone. He picks the customer and enters quantities in boxes or pieces. Every order needs a real customer, whose location is saved from a shared map link or from the phone itself.
Cash counted per currency
A session opens and closes with a count in each currency. Payments in either currency, or both, are recorded, and the expected cash allows for what was taken in each. At close, foreign cash moves to its own account. Screens, receipts and invoices show totals in dollars and Lebanese pounds.

Sales that match the van and the place
Odoo refuses an order if the van does not hold the stock, and checks stock when a product is added, when the quantity changes and at payment. It also refuses an order unless the phone is within a set distance of the customer. The server repeats the check, so it cannot be skipped from the phone.

One step for returns and exchanges
From a delivered order, one screen returns the goods, scraps damaged items, moves expired goods to the near-expiry place and adds a replacement if wanted. When invoicing is chosen, Odoo then posts only the difference: nothing, a credit note or an invoice.

Loading the van safely
Warehouse operators load vans by internal transfer. Their role is limited to receipts and transfers to production or vans.
How the work gets easier
| The usual way | With the new process |
|---|---|
| Cash is counted and converted by hand at the end of the day | Each currency is counted and balanced separately |
| A salesman can sell more than the van holds | Odoo stops the sale when the van stock is short |
| Orders can be entered from anywhere | Orders are accepted only at the customer |
| A return means several separate documents | One screen handles the return, scrap, expiry and replacement |
| The customer's account is corrected afterwards | Only the difference is invoiced or credited |
| Warehouse staff can reach more than they need | Their access is limited to receipts and transfers |
The result is a day that closes cleanly and fewer disputes at the customer's door. Salesmen sell, and the office reviews exceptions.

Related solutions
- Odoo Point of Sale
- Odoo Custom Development
- Odoo Inventory