Daily updates from Odoo
Saturday, March 14, 2026
6 changes
2 changes
Enhancements to existing features
This update removes a restriction on outgoing stock sequence codes for Turkish companies, allowing users to include warehouse identifiers. This change ensures compatibility with Nilvera's e-Dispatch requirements while retaining operational flexibility. Additionally, the UI has been slightly improved for easier Nilvera status viewing.
Original PR description
# Description of the issue/feature this PR addresses: Previously, the `sequence_code` of `stock.picking.type` was restricted to exactly 3 characters for outgoing pickings of Turkish companies. This…
# Description of the issue/feature this PR addresses: Previously, the `sequence_code` of `stock.picking.type` was restricted to exactly 3 characters for outgoing pickings of Turkish companies. This was introduced because Nilvera requires a 3-character prefix when sending e-Dispatch documents. However, enforcing a 3-character sequence code prevents users from including warehouse identifiers in the prefix (e.g. `WH/OUT`). Odoo normally relies on this structure to help users filter and distinguish warehouses. With the restriction in place, this functionality was lost. # Desired behavior after PR is merged: This commit removes the 3-character restriction on the sequence code and introduces a computed field that extracts the required 3-character GIB prefix from the sequence code. The computed prefix is used when sending documents to Nilvera, while users can keep meaningful sequence codes for operational use. Additional improvements: - Move the e-Dispatch tab next to "Operations" in `view_picking_form` - Reduce the spacing between the text and reload button for the "Nilvera Status" field in `view_picking_form` task-5964505 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This update ensures Odoo’s accounting system aligns with the latest Peppol codelist version 9.5. This is a necessary step to comply with evolving European regulations for electronic invoicing and improve data exchange with trading partners using the Peppol network.
Original PR description
A new version of codelist (v9.5) has been released. This commit aligns the Peppol EAS field selection with the Peppol codelist v9.5 See the changelog here : https://docs.peppol.eu/edelivery/codelists/changelog.html Updates applied according to the official v9.5 changes. task-5461213 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#243990
1 change
Enhancements to existing features
This update ensures Odoo’s accounting system aligns with the latest Peppol codelist (v9.5). This is a necessary step to maintain compliance with European regulations for electronic invoicing and improve data exchange with Peppol network partners. The change was made to reflect official updates from the Peppol organization.
Original PR description
A new version of codelist (v9.5) has been released. This commit aligns the Peppol EAS field selection with the Peppol codelist v9.5 See the changelog here : https://docs.peppol.eu/edelivery/codelists/changelog.html Updates applied according to the official v9.5 changes. task-5461213 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#243990
3 changes
Enhancements to existing features
This update adds versioning to Odoo's live chat stores, mirroring a recent community change. This ensures that live chat data is consistently tracked and managed, improving data integrity and reliability. It's a necessary step for maintaining the stability of our live chat functionality.
Original PR description
Counterpart of the community PR that adds versioning to the discuss store. Any route returning or sending a store should be versionned via the `mail_route` decorator. community: https://github.com/odoo/odoo/pull/246467
This update adds a button to quickly move all orders to the next stage in the preparation process. When an order reaches the final stage, the preparation status is automatically marked as complete, improving efficiency and reducing manual effort.
Original PR description
In this commit: =============== - We added a `Clear All Orders` button in the sidebar. On clicking that, all the orders will be moved to their next respective stage. - If the order stage is already the last stage, then the order's preparation state is marked as done. Task: 5877460 Forward-Port-Of: odoo/enterprise#105847
This change optimizes the process of generating GST reports by streamlining the database query. Specifically, it removes a complex domain filter that caused performance issues with large datasets, resulting in faster report generation times. This improvement ensures smoother and more efficient report processing.
Original PR description
If account.move and account.move.line have big data then domain with create problme ORM create sub query like this ``` SELECT account_move.id FROM account_move WHERE (…
If account.move and account.move.line have big data then domain with create problme ORM create sub query like this
```
SELECT
account_move.id
FROM
account_move
WHERE
(
account_move.l10n_in_gst_return_period_id = 23
OR (
account_move.move_type IN ('in_invoice', 'in_refund')
AND account_move.invoice_date >= '2025-11-01'
AND account_move.invoice_date <= '2025-11-30'
AND account_move.company_id IN (1)
AND account_move.state = 'posted'
AND (
account_move.l10n_in_gst_treatment NOT IN ('composition', 'unregistered', 'consumer')
OR account_move.l10n_in_gst_treatment IS NULL
)
AND account_move.id IN (
SELECT
account_move_line.move_id
FROM
account_move_line
WHERE
EXISTS (
SELECT 1
FROM account_move_line_account_tax_rel AS account_move_line__tax_ids
WHERE account_move_line__tax_ids.account_move_line_id = account_move_line.id
)
)
)
)
ORDER BY
account_move.date DESC,
account_move.name DESC,
account_move.invoice_date DESC,
account_move.id DESC
```
See this EXPLAIN for big database
```
Gather Merge (cost=165759176482.82..2983665158687.50 rows=36 width=30)
Workers Planned: 2
-> Incremental Sort (cost=165759175482.80..2983665157683.32 rows=18 width=30)
Sort Key: account_move.date DESC, account_move.name DESC, account_move.invoice_date DESC, account_move.id DESC
Presorted Key: account_move.date
-> Parallel Index Scan Backward using account_move__date_index on account_move (cost=59.28..2983665157682.51 rows=18 width=30)
Filter: ((l10n_in_gst_return_period_id = 23) OR (((move_type)::text = ANY ('{in_invoice,in_refund}'::text[])) AND (invoice_date >= '2025-11-01'::date) AND (invoice_date <= '2025-11-30'::date) AND (company_id = 1) AND ((state)::text = 'posted'::text) AND (((l10n_in_gst_treatment)::text <> ALL ('{composition,unregistered,consumer}'::text[])) OR (l10n_in_gst_treatment IS NULL)) AND (SubPlan 1)))
SubPlan 1
-> Materialize (cost=58.84..1601427.18 rows=4994548 width=4)
-> Merge Semi Join (cost=58.84..1556944.44 rows=4994548 width=4)
Merge Cond: (account_move_line.id = account_move_line__tax_ids.account_move_line_id)
-> Index Scan using account_move_line_pkey on account_move_line (cost=0.44..1339780.32 rows=26611459 width=8)
-> Index Only Scan using account_move_line_account_tax_rel_pkey on account_move_line_account_tax_rel account_move_line__tax_ids (cost=0.43..88678.65 rows=4994548 width=4)
```
So removing this from domain and put it as condition it's faster
Forward-Port-Of: odoo/enterprise#110334
Forward-Port-Of: odoo/enterprise#109795