Skip to Content
MAFA Group · Odoo 17

Finance and operations finally agree on who holds what

An employee assignment became a stock move, so custody, location and book value resolve from one record.

Led by Umar · ~8,900 LOC
Odoo 17 Python

The problem a client brought us

“Finance has a depreciation schedule. Operations has a spreadsheet of who's holding which laptop. Neither one knows the other exists — and the numbers never match at count time.”

Before and after

Three records that never met

  • Depreciation schedule
  • Custody spreadsheet
  • Warehouse location

One record everything resolves from

A stock move per assignment

What we found and built

We made an employee assignment a stock move, not a text field. Assigning an asset physically moves it into a virtual location named for that employee — so location, custody, and book value all resolve from the same record instead of three disconnected ones.

  • Three depreciation methods, full service lifecycle (In Service → Faulty → Under Repair → Scrapped)
  • Auto-created on purchase receipt at actual PO cost, so nothing gets registered twice

Result

First physical count that matched the book value on the first attempt.

The pattern behind it

One definition everyone calls

When several parts of a system each decide the same fact, they eventually disagree. We don't add a fourth opinion — we collapse the disagreement into one definition and make everything else read from it.

How we think about problems

Recognise any of this?

Most of our work starts with a message that sounds a lot like this one did.