Field Sales App
The whole day on a phone: today's round of shops, a check-in at each one, the order booked at the counter, the cash taken, the day counted and handed in. It works with no signal at all — everything is held on the phone and lands in Odoo when coverage returns. It installs as a web app, so there is no app store, no APK and no separate hosting to run.
What you get
Secondary sales recorded where they happen, by the person who made them, on the phone already in their pocket.
Who this is for
What the salesman does all day
Six screens, in the order a field sales day actually runs. Each one works the same whether the phone has coverage or not.
- Today's route with every shop in call order, pulled once over the depot's wifi.
- The balance each shop owes, refreshed per shop at check-in rather than continuously, so a metered connection is not spent on data that has not moved.
- A running count of shops visited against shops planned.
- Off-route shops allowed or refused, set per salesperson.
- Odoo resolves the customer's pricelist and the taxes, every time. The phone only quotes.
- Where the server's price differs from what was quoted, the difference is reported back rather than left to surface on the invoice.
- A discount ceiling per salesperson; typing your own price is switched off until you switch it on.
- An order booked after the supervisor closed the route is accepted as a draft flagged for review, not refused. That happens every afternoon, and refusing it loses real revenue.
- Cash and cheques allocated against the shop's open invoices.
- More than the invoice currently shows is recorded and flagged, not refused — the phone's figure is hours old and the shop may have paid by bank in between.
- A daily cash ceiling per salesperson, and the cash and cheque journals named explicitly rather than guessed.
- Everything arrives as a draft sheet. Nothing is posted from a phone.
- One check-in per shop per day, and a phone that retries lands on the same visit rather than opening a second one.
- Check-in can be required before an order is allowed, per salesperson.
- A reason recorded when a call produces no order, so a light week can be read rather than guessed at.
- Location captured at check-in, with a check-in far from the shop flagged for the supervisor instead of blocked.
- The salesman declares what is in the bag; the difference against what the app recorded is the number the cashier reconciles against, with the salesman standing there.
- Coverage and strike rate for the day, computed from the visits rather than typed in.
- A hand-in state the office moves to reconciled, so a day can be signed off once.
- A closed day stays closed: an order cannot be slipped into a day somebody has already settled.
- An amber count of what has not been sent, on every screen, all day.
- Each item shows whether it is still on the phone, confirmed by the office, or refused with the reason.
- Retries space themselves out, so a phone in a dead zone still tries a few times an hour without flattening a cheap battery.
- Nothing is discarded on the phone's own initiative. Work the office refused stays on screen until a person deals with it.
What it will not do, and why
Four things a buyer might expect that this app deliberately refuses. Each refusal exists to stop a specific way field software goes wrong, and each one is worth knowing before you buy rather than after.
See it running
Real screens from the app on a phone, in the order the day runs. Click any image to view it full size.
The day starts
At the counter
When the signal goes
How it was verified
Before you buy
Five conditions worth checking now, because each one is easier to answer before the purchase than after it.
Frequently asked
Will this work on Odoo Online (SaaS)?
Does my Odoo have to be on HTTPS?
Do my salesmen need paid Odoo user accounts?
What happens if a salesman has no signal all day?
Does the phone post anything into my accounts?
What does it do with GPS, and what are the privacy implications?
Does it work with multi-company?
How do updates reach the phones?
What happens if I uninstall it?
SANDBOX_SMOKE_TEST.md in the package is for.Why is this $349 and not free?
Is it a website or an app I install?
Try it on one route before you roll it out to twenty
Put one salesman on the app for a week and compare his day against the paper. You have up to 90 days to claim a full refund. Ask us anything through either channel below — we reply within 1 business day.
The package includes README.md, TECHNICAL_GUIDE.md, SANDBOX_SMOKE_TEST.md, SUPPORT.md, REFUND_POLICY.md and CHANGELOG.md.
More from Arure Technologies
What's New
Release notes for every published version. The full CHANGELOG.md is included inside the module package.
Spoofed locations are now visible to the supervisor
- A check-in records whether its location came from a mock-location app. Android reports this per reading; a browser cannot, so the field has three states — checked and genuine, checked and mocked, or no way to tell — and never shows an unchecked reading as verified.
- A mocked reading raises an exception for the supervisor and is shown on the visit. It never blocks the check-in: a salesman standing at a counter still records the call.
- A shop’s stored coordinates are no longer set from a mocked fix. That point is what every later distance check measures against, so a manufactured one would have been trusted for ever.
- Detection needs the optional Android package. In a browser every reading reads as “no way to tell”, which is the honest answer rather than a reassuring one.
Corrections found by running a full round
- An order whose check-in was delayed by a busy server could come back permanently refused instead of waiting its turn. It now waits.
- “Try again” on a refused item now actually retries. It had appeared to work and changed nothing — including in the case it exists for, a credit hold a supervisor has since cleared.
- An expired session now tells the salesman. The queue was always safe; he was simply never told why the day had stopped moving.
- Coverage and strike rate now divide by the round that was planned. They had divided by the shops actually reached, so coverage read near 100% for a man who worked six shops out of forty.
- A route with no ordered stops no longer shows an empty app.
- Shop coordinates have a screen, and fill themselves in from the first good reading taken at the counter.
- The location trail is deleted after 30 days by a scheduled job.
- A catalogue larger than 2000 products now says it was truncated instead of quietly handing over a short list.
Initial Odoo 19 release
- The day's round on the phone: the beat, the shops in call order, and what each one owes.
- Check in at the shop, book the order, take cash or a cheque against open bills, close and hand in the day.
- Full offline operation. Work is held on the phone and sent when coverage returns, with one order staying one order across any number of retries.
- Installs as a web app from your own Odoo — the salesman opens a link once and adds it to the home screen.
- Per-salesperson controls: discount ceiling, daily cash limit, price override, off-route shops, and whether a check-in is required before an order.
- Supervisor view of exceptions: checked in away from the shop, shop not on the route, discount too large, credit blocked, phone clock wrong.
- Day close with declared cash against collected cash, plus coverage and strike rate for the day.
- 127 server tests and 137 client tests passing.
- The offline round trip walked end to end by hand: network cut, an order booked and cash taken, then reconnected — exactly one order arrived, with no duplicate.
- Collections arrive as draft sheets. The app posts nothing into your accounts.
- Odoo prices every order. The phone quotes an estimate before tax and reports any difference.
- The continuous location trail is off by default; check-in locations are recorded regardless.
License
Odoo Proprietary License (OPL-1). Per-database license. Source code included; not redistributable.
Trademarks
Odoo is a registered trademark of Odoo S.A. This module is an independent extension developed by Arure Technologies and is not affiliated with, endorsed by, or sponsored by Odoo S.A.
| Availability |
Odoo Online
Odoo.sh
On Premise
|
| Odoo Apps Dependencies |
•
Discuss (mail)
• Inventory (stock) • Invoicing (account) • Purchase (purchase) • Sales (sale_management) |
| Community Apps Dependencies | Show |
| Lines of code | 11146 |
| Technical Name |
distribution_field_app |
| License | OPL-1 |
| Website | https://www.arure.tech |
Odoo Proprietary License v1.0 This software and associated files (the "Software") may only be used (executed, modified, executed after modifications) if you have purchased a valid license from the authors, typically via Odoo Apps, or if you have received a written agreement from the authors of the Software (see the COPYRIGHT file). You may develop Odoo modules that use the Software as a library (typically by depending on it, importing it and using its resources), but without copying any source code or material from the Software. You may distribute those modules under the license of your choice, provided that this license is compatible with the terms of the Odoo Proprietary License (For example: LGPL, MIT, or proprietary licenses similar to this one). It is forbidden to publish, distribute, sublicense, or sell copies of the Software or modified copies of the Software. The above copyright notice and this permission notice must be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
Please log in to comment on this module