Skip to content

CASE STUDY · WHOLESALE FOODSTUFF · UAE

Credit limits enforced at the till, and a five-second answer to "how are we doing today?"

Al Garshoub Foodstuff Trading LLC in Ajman sells mostly on credit. Their Odoo 20 Community system now enforces credit limits before every sale, chases payments automatically and sends invoices on WhatsApp.

Odoo 20 customer invoices with amounts, due dates and payment status (demo data)
650+products migrated
82POS categories
0data disruption
19-check automated UI harness
0Enterprise fees for WhatsApp

The challenge

The client sells mostly on credit to restaurants, cafeterias and supermarkets, plus walk-in sales at the till. Credit customers, limits and balances lived in notebooks. Cashiers could sell stock that wasn't there. Collections were chased by hand. The owner had accountant-style reports, but no simple picture of the day.

What we built

Credit-customer engine

Contacts become credit customers by tag. Limits can only be set by a Credit Manager, and that rule is enforced in Python rather than just hidden in the UI. Limit, used, available, due and overdue are shown on every contact.

POS credit flow

A "Credit Customer" button with a payment-term picker, a live colour-coded credit chip, and server-side re-validation so a tampered client can't skip the limit check.

POS stock lock

Zero-stock ribbons, friendly blocking, a "resolve stock issues" gate, and manager Force Sell (backorder).

Owner dashboard (OWL 3)

Period filters with comparison to the previous period, 6 KPI cards with sparklines, sales vs collections chart, receivables ageing with one-click reminders, payment-mix donut, credit-customer table with WhatsApp and email reminders, stock alerts, "needs your attention today", printable A4 summary, automatic dark mode.

Automatic collections

A daily 08:00 reminder run (email + salesperson activity) with 3-day de-duplication.

WhatsApp e-invoicing

Direct Meta WhatsApp Cloud API integration, template sync and a send button on invoices. No Odoo proxy, no Enterprise subscription.

Reliable email

Gmail SMTP with automatic retry and a re-queue job for transient failures.

Portals

Customer "My Dues", vendor RFQ portal, void approval with OTP.

Data migration

A generator turned the master Excel into validated imports (650 products, 82 POS categories, 64 product categories, 6 vendors), imported idempotently with zero disruption.

Results

  • Cash protected: credit exposure is visible and enforced before every sale
  • No more selling phantom stock, with a controlled backorder path for managers
  • Faster collections through automated, de-duplicated reminders
  • Owner time saved: sales, margin, collected, due, overdue and stock risk on one screen
  • Lower software cost: WhatsApp and email run on the client's own Meta and Gmail accounts
  • Clean books: credit sales post standard receivables, so Aged Receivables and VAT reports work out of the box
Odoo 20Python 3.14OWL 3PostgreSQL 16Meta WhatsApp Cloud APIDockernginxPlaywright

At a glance

Client
Al Garshoub Foodstuff Trading LLC, Ajman, UAE
Industry
Wholesale & retail foodstuff
Platform
Odoo 20 Community · Python 3.14 · PostgreSQL 16 · OWL 3
Deployment
Docker Compose on a production VPS, behind nginx + SSL
Services
Custom modules · POS · Dashboard · WhatsApp & email integration · Data migration · DevOps · QC automation
Delivery
Delivered by the VexaNext engineering team

Newsletter

One Odoo + brand insight a month. No fluff.

WhatsApp Book a call