Skip to content

Seafood

Kapitaine Group

Selling by the kilo a product that is counted by the box — dual-unit till, live stock on screen, and invoicing that leaves with the goods.

Sector
Seafood
Scope
5 custom modules · 9 users
Duration
About 3 months, then ongoing maintenance and support
Role
Custom module development and point-of-sale overhaul
Odoo version
Odoo 18

The problem

A box of fish does not sell like a pair of shoes. The customer buys weight, inventory counts packages, and the same product leaves the door by the kilo or by the piece depending on whether it goes over the counter or out to a reseller. Odoo handles both — but not both at once, in the same place, under the hand of a busy cashier.

The second friction point is timing. With fresh goods, the shipment leaves now, and the invoice has to leave with it. Odoo's standard cycle insists on invoicing only what has actually been delivered: a perfectly sound accounting safeguard, but not one that matches a trade where the truck does not wait.

Finally, outbound paperwork was missing what the warehouse actually needs. A delivery note without a total weight, without room for the driver's signature, proves nothing on arrival.

The approach

The scope was cut into small independent modules rather than one block: the till customisation, the sales-cycle change and the document work switch on separately, and can evolve without stepping on each other.

Where a solution already existed on the market it was bought rather than rewritten — that is the case for dual units of measure at the till. Custom development was spent on what existed nowhere: what the cashier sees, what the delivery note carries, and when the invoice is issued.

No new business model was created. Everything is added by inheritance onto standard models, which keeps the instance cleanly upgradable.

The solution

Five custom modules on Odoo 18.

At the till, the product screen gains a unit switch that flips the same item between kilo and piece, plus live available stock — because with fresh goods, the only question that matters is what is genuinely left. Cash moves, margins and other cashiers' order history are restricted to managers; several employees share one station, each identifying themselves on arrival. The receipt prints twice on validation, one copy for the customer, one for the till.

On the sales cycle, a button issues and posts a sales order's invoice without waiting for the delivery to be validated.

On documents, quotations, invoices, delivery notes and picking slips display a total weight in kilos and a total quantity. The delivery note carries a full signature block — warehouse manager, truck, driver, recipient — so that handover of goods can actually be evidenced.

Beyond the commercial scope, a payroll reporting suite compliant with Ivorian regulations was delivered alongside: CNPS and CMU filings, contribution summary, employer charges, form 301, leave statement, all exportable to Excel and individually switchable.

The result

One product now sells by weight or by unit without a duplicate catalogue entry. The cashier sees remaining stock before taking payment. The invoice can follow the goods instead of waiting on them. And the delivery note finally carries the weight and the signatures the warehouse was asking for.

Stack

Odoo
Odoo 18
Modules
SalesPoint of SaleInventoryDeliveryAccountingPayroll
Tech
PythonOWLJavaScriptXLSX