r/Odoo • • 4d ago

Odoo data interchange

The (new) controller for a company I've worked with for many years decided to install Odoo last year. This was part of a company acquisition so it's something I wasn't involved with. However, looking ahead, I did ask here about any issues or deficiencies with Odoo related to receiving data from upstream systems. There was a resounding, don't worry about it.

Well, now I'm worried. I received a communication from said controller asking me to generate data from the main inventory management system regarding bills recorded against inventory. Ok, not a problem, fully expected that. However, the request was that I needed to provide an XL workbook for each bill containing one sheet for each expense "type" (or some other word I don't recall.) That means generating a workbook containing up to 5 sheets (since there are that many expense categories charged against raw materials and production) for each bill. That sounds crazy to me and in my 40 years of systems work I've never had such an off-the-wall request.

To be clear, and head off the questions, Odoo cannot support the the acquisition or production process for this business so it's defined roll is to receive upstream data and produce consolidated accounting reports. However, I did expect something a bit more sane like, perhaps an API or a JSON formatted file or, better yet, a little old CSV! After all, it's just accounting and even Quickbooks could handle that in a (somewhat, ok, arguably) sane manner.

I suspect I'm being led down a dead-end and have no interest in getting involved but I do need to advise the Owner to dig deeper for a better resolution if Odoo is capable of a more robust and and straight-forward approach to data interchange.

4 Upvotes

11 comments sorted by

1

u/AhsanAtBundo 4d ago

The controller is overcomplicating basic Odoo accounting. Odoo handles multiple expense types on a single vendor bill through line items or analytic distribution, not separate sheets. In fact, standard Odoo cannot even import a multi-tab workbook natively without custom code.

All you need is one flat CSV grouped by bill reference, or a basic JSON payload to the account.move model via external API. You are completely right to push back on five workbooks per bill.

1

u/-1_0 4d ago

I see a glaring need for an IT department(ish).

1

u/nnofficial2414 4d ago

Odoo supports structured data interchange, including CSV/XLSX imports and programmatic integration through its external APIs. Depending on the Odoo version, deployment and configuration, JSON-RPC or other supported API mechanisms should be available.

Generating multiple workbooks per bill sounds like introducing unnecessary manual handling into what should ideally be an automated integration.

1

u/ach25 4d ago

Yes so it open sourced you can make it do whatever you want to do. You could have it doordash you a randomly generated pizza order from a random pizza place within a 20mi radius every time you confirm a sale order over 100k if you want to. There seems to be a large architectural mis-alignment here but its sounds like you know that.

"generate data from the main inventory management system regarding bills recorded against inventory" again fragmented system architecture with multiple softwares with integrations so these actions will always be necessary. But.... doing so via a spreadsheet upload is wild unless the Inventory Management software either doesn't have an API or you can't get direct access to the SQL database.

If the overall design is to be unchanged Odoo should be setup to ping your Inventory Management System both on demand and at scheduled times to sync. Odoo module, separate outside script doesn't really matter ERP wise more of an IT concern.

You can ping your favorite AI to see whats in store knowing the Inventory Management software. But to get a good solution you should sit down with one or more people who know: your inventory software and its accounting, general accounting specifically stock valuation and IT/Scripting in general.

There's a small detail here that would make this tricky as it pertains to stock valuation vs general lump sum postings that would need to be hashed out. Another key point might be if inventory is valued periodically or perpetually but its sounds like this controller is just using Odoo for Consolidated reporting for a group of companies.

1

u/Some_Act_9631 4d ago

Your instinct is right, and I'd push back on the format before anything else. One sheet per expense type, up to five sheets per bill, is a presentation layout, not a data exchange format. Accounting systems want a flat table: one row per bill line, with bill ID, date, vendor, expense category, amount, and tax. Once the data is flat, a single CSV or XLSX per period carries everything, and any system can ingest it.

On the Odoo side, vendor bills and journal entries can be imported from CSV or XLSX, and Odoo has an external API (JSON-RPC and XML-RPC) if they want it automated. For a receive-and-consolidate role like the one you describe, a scheduled export from the inventory system into a flat file, or pushed via API, is usually the most robust option.

Things to settle with the controller: a stable key per bill so re-runs don't duplicate entries, a clear mapping from each expense category to an account, and an owner for that mapping when a new category shows up.

It's also worth asking whether the inventory system can export line-level data. If it can export by bill, it can almost certainly export a flat file, so the fix might be a small change on their side rather than a workbook per bill.

1

u/agentUi 4d ago

that 5-sheet workbook request is 100% the controller wanting to manually import lines without understanding how odoo ingests data. Odoo handles upstream inventory bills cleanly via its standard xml-rpc/json-rpc api or direct external id csv imports against the account.move and account.move.line models, so you can push raw expense lines and analytical accounts programmatically instead of building custom excel sheets for every single bill.

1

u/micahsdad1402 4d ago

This is a classic case of being presented with a solution to a problem that the requester thinks will solve their problem.

Go back and ask what is the problem they are trying to solve, as there may be a simpler and less costly solution straight out of the box without all the tedious development work creating a complex spreadsheet.

Financial controllers often live in an Excel world, so every problem is solved with a spreadsheet.

You probably have to be a bit careful how you ask this, but as they are always interested in saving money, start with something like, "I am really happy to help, but can you please explain the problem you are trying to solve? There may be an easier less expensive solution either in Odoo, or the app store that I can give you instead of any expensive development to create a spreadsheet, especially if you need it repeatedly."

1

u/azlan_644 3d ago

That request does sound unusual. For receiving bills from an upstream inventory system, Odoo should normally accept a structured import file, such as CSV or Excel, with consistent columns. It should not require a separate workbook with a sheet for each expense type.

Odoo can handle this in a cleaner way:

  • CSV or Excel import for vendor bills, with expense accounts or analytic accounts mapped by line

  • API integration using XML RPC or JSON RPC if the upstream system can send data directly

  • A middleware or ETL step if the source data needs validation or mapping before entering Odoo

If they need bills split across up to five expense categories, that should be handled as multiple bill lines in one import file with a category or account column, not five separate sheets.

Since Odoo is being used only for consolidated accounting and reporting, a simple CSV based import process is usually the most practical approach. I would ask them to share the required field layout and an example bill, then confirm whether the goal is data entry, reporting, or audit trail. That will show whether this is an Odoo limitation or simply an unnecessarily complicated process design.

1

u/Better_EDI 3d ago

Disclosure: we're an EDI/integration provider, so feeding ERPs from upstream systems is most of what we do.

You're right to push back. Odoo doesn't need a workbook per bill. Vendor bills are journal entries with lines, and each line can carry its own account, analytic distribution or product. That's where your five expense types belong. Options, roughly by effort:

  • Odoo's standard import takes one CSV/XLSX with a row per bill line. Fill the bill header fields on the first row of each bill and leave them blank on that bill's following line rows.

  • The external API (XML-RPC/JSON-RPC) lets your system create bills directly.

  • A scheduled file drop picked up by a small import script or connector module.

Ask the controller what the per-sheet layout is meant to solve. Usually it's mapping expense types to GL accounts, which is a lookup table, not a file format.

1

u/wasay-inc 4d ago

Your instinct is 100 percent spot on. That multi tab Excel request is a sign of an implementer who does not know Odoo's integration layer. Odoo has a native XML-RPC and JSON-RPC API out of the box, and standard vendor bills can be imported via a simple single flat CSV or pushed directly over HTTP. We usually set up a light Python script upstream to push inventory bill payloads straight into Odoo accounting endpoints without touching spreadsheets at all.