[July 2026] Odoo community activity and Quartile's contributions

Keeping the approval trail, and practical work on stock
August 15, 2026 by
[July 2026] Odoo community activity and Quartile's contributions
Yoshi Tashiro (QRTL)

In July 2026 Quartile again continued proposing, improving and porting work at OCA.

July was also the month the OCA set out how the community handles AI, in a policy of its own. Our own work centred on proposals for keeping an approval trail that stands up to an audit, and on actual dates and inventory valuation — the areas that back up the accounting. Migration work towards Odoo 19.0 also continued.

What we worked on in July 2026


Keeping the approval trail

base_tier_validation, which lets you build multi-tier approval into any document, deletes the reviews collected so far when a document is cancelled or reset to draft. With no record of who approved what and when, that information was lost exactly when an audit needed the history.

So this month we proposed an improvement for Odoo 16.0 that extracts the removal of those reviews into a dedicated method. Other modules can now override it.

Alongside it we proposed base_tier_validation_review_history, a new module for Odoo 16.0 that uses the hook to archive approvals and rejections instead of deleting them. It shows a read-only history on the record, and a dedicated menu lists the reviews across all records.

Reference:

https://github.com/OCA/server-ux/pull/1307

https://github.com/OCA/server-ux/pull/1311

Actual dates and day-to-day stock work

stock_move_actual_date, which records the date goods actually moved, was merged for Odoo 17.0. Even when a transaction reaches Odoo after the goods have moved, the journal entry can carry the real date.

For 18.0, an improvement adding a group-by on the actual date in the inventory valuation search was merged. We have also proposed a fix so that a stock move added later to a transfer that already has an actual date inherits it.

stock_move_original_date, which preserves the originally planned date, was merged for Odoo 16.0. Even when the scheduled receipt date changes later, the date first expected is still there.

For inventory adjustments, stock_inventory_hide_apply_all was merged for Odoo 18.0. It hides the Apply All button by default, for teams who want counts checked and applied line by line.

Reference:

https://github.com/OCA/stock-logistics-workflow/pull/2299

https://github.com/OCA/stock-logistics-workflow/pull/2400

https://github.com/OCA/stock-logistics-workflow/pull/2262

https://github.com/OCA/stock-logistics-warehouse/pull/2612

Proposals on inventory valuation

We proposed stock_valuation_layer_vendor for Odoo 18.0, which keeps the vendor on the stock valuation layer. The internal margin carried by stock bought from a sister company can then be filtered straight out of a consolidated valuation.

We are also still proposing stock_account_avco_return_origin for Odoo 16.0, which issues stock at the original purchase amount when a product under average-cost valuation is returned to the supplier. The standard behaviour can become an audit talking point, so this carries real practical weight.

Reference:

https://github.com/OCA/stock-logistics-workflow/pull/2394

https://github.com/OCA/stock-logistics-workflow/pull/2374

Sales and invoicing

sale_order_line_client_order_ref, which gives each order line its own customer order number, was merged for Odoo 18.0 with improvements including an option to place that number in the invoice line description.

The improvement to sale_automatic_workflow that allows dynamic dates such as today in filter domains was merged for Odoo 18.0, and its 19.0 counterpart has been merged as well.

Also merged: a fix to sale_line_name_option so the product name is not repeated in the invoice line, and an improvement to portal_sale_order_search that includes the parent company name in the portal order search. We are still proposing account_move_partner_bank, which resolves the recipient bank on an invoice from each company's own configuration.

Reference:

https://github.com/OCA/sale-workflow/pull/4118

https://github.com/OCA/sale-workflow/pull/4461

https://github.com/OCA/account-invoicing/pull/2198

Odoo 19.0 and other work

connector_importer, which imports data from files in the background using the job queue, and web_form_banner, which shows a conditional message on any form view, were both merged for Odoo 19.0.

We are also working on 19.0 support for base_import_match, which matches existing records on fields such as name or email during an import, and for template_content_swapper, which replaces text in QWeb views without developing a module.

We proposed permission fixes for Odoo 16.0 to ai_tool and ai_oca_mcp, the modules for working with AI tools from Odoo. We also proposed a fix to Odoo itself, so that documents linked to a sales order are not left orphaned.

Reference:

https://github.com/OCA/connector-interfaces/pull/185

https://github.com/OCA/web/pull/3309

https://github.com/OCA/server-backend/pull/467

https://github.com/odoo/odoo/pull/275805

A policy for AI use at OCA

In July the OCA published a policy on the use of generative AI. It was added to the repository on 8 July, revised to fit OCA's own circumstances on 18 July, and announced on the OCA blog on 20 July.

It does not forbid the use of AI. It states the principle that responsibility for the result stays with a human. A commit that AI had a hand in discloses it with Assisted-by:, whatever the degree of involvement; AI is never named in Co-authored-by:; unsupervised agentic tools are not permitted; and code you cannot explain yourself should not be submitted.

Quartile uses AI tools including Claude and Codex in development, and we have reviewed our internal rules against the policy.

Reference:

https://github.com/OCA/.github/blob/master/AI_POLICY.md

https://www.odoo-community.org/blog/news-updates-1/new-ai-policy-248

Widening the path into the community

At the Odoo Open Talk on 31 July we presented How to Get Involved in OCA Activities, on where contribution starts. The slides are here. They cover the entry points — issues, translation and small pull requests — then signing the CLA, the road to merge, and the generative-AI policy.

Odoo and one partner company joined us, and the discussion turned to how the community can take on the problems this market shares. The next one is on 28 August, and the details are here.

A note from the team


AI has cut the hours that writing code takes by a wide margin. Some of what we used to pick up by working alongside people in the community now comes from a model instead, and there is something a little sad in that.

In development with AI in it, the ability to design and to review properly — and the process for both — matters more than it did. Now that writing code has become so much faster, the bottleneck has moved to the steps on either side of it.

At the same time, we are seeing pull requests written and reviewed by AI and submitted in bulk. Tension between the drive to maximise output and the commitment to stand behind quality is what a transitional period looks like, with the community's rules not yet caught up to AI being taken for granted. This policy is a step towards settling that.

At Quartile too, we are holding to building shared assets in the community, while inside the team we are changing how we work a great deal, so as to get the most value out of this new paradigm.

If you like solving problems

If you want to use open source to move companies' DX forward for real,
why not do it at Quartile?

[July 2026] Odoo community activity and Quartile's contributions
Yoshi Tashiro (QRTL) August 15, 2026
Archive