Daily updates from Odoo
Friday, July 4, 2025
24 changes · master
Enhancements to existing features
This update adds foundational automated boot tests for several Point of Sale extensions, helping verify that their data models load and behave correctly. It reduces the risk of future regressions in appointment, IoT, restaurant appointment, payment terminal, and food delivery integrations without changing day-to-day user workflows.
Original PR description
*: pos_appointment, pos_iot, pos_restaurant_appointment, pos_tyro, pos_urban_piper, pos_urban_piper_enhancements Add a base for running boot tests in PoS. All models available in the PoS have been added via the `models.ServerModel` tool so that they are available in the `MockServer` In this way, we can simulate the generation of the model definitions required for the related model, JS classes and data service. We can now instantiate the related models and call all the methods specific to each model. Forward-Port-Of: odoo/enterprise#88898
This update improves how internal references are handled in several reporting and configuration screens, reducing the chance of fragile or confusing setup behavior. It affects data cleaning, sales commissions, and subscription areas without introducing visible workflow changes for most users.
Payroll users can now click payslip line list headers without accidentally changing the order of the entries. This keeps payslip information displayed in its intended sequence and reduces confusion during payroll review.
Original PR description
In this PR, we disabled the payslip line ordering when clicking on the list header but introducing a custom js which overrides the onClickSortColumn to not sort the list when the current className inside the archInfo includes 'disable_sort'. Task: 4793653.
The Mexican reports test suite was updated to reflect newly added accounts. This helps ensure financial reporting checks remain accurate and reduces the risk of false test failures after account changes.
Original PR description
This adapts the tests to the newly added accounts in l10n_mx. Old PR: #87674 opw-4799052
The marketing automation test suite was updated to use a newer testing approach. This improves maintainability and helps ensure future changes can be validated more reliably, without changing day-to-day user functionality.
Original PR description
task-4028356
This update modernizes how accounting-related modules define filtering logic across reports, payments, transfers, payroll, helpdesk, ESG, and localization features. The change is mostly internal, helping keep financial features consistent and easier to maintain without altering day-to-day business workflows.
Original PR description
odoo/odoo#206960
Resolved issues and error corrections
The bank reconciliation report now shows transaction amounts with the correct currency when journal entries come from journals using a different currency than the company currency. This prevents misleading balances where an amount was calculated in one currency but displayed with another currency symbol.
Original PR description
…eport Currently in bank reconciliation report we expect all the entries to have the balance encoded in journal currency However it may not be the case if an entry is posted in a misc journal set in another currency Steps to reproduce: - Create a new journal in another currency (€) than the company's ($) - Create a new journal entry using the journal main account - Go to the account dashboard > click on the 3 dots of the journal - Open the Reconciliation report Issue: The journal entry amount is in company curreny (balance), but with the journal currency symbol (€) opw-4701349 Forward-Port-Of: odoo/enterprise#89321 Forward-Port-Of: odoo/enterprise#87313
Cancelling a drag-and-drop action in Documents now properly removes the temporary preview card. This prevents duplicate-looking cards from lingering on screen and keeps the Documents view visually clean and reliable.
Original PR description
Before this commit, when aborting a drag & drop sequence in documents views, the temporary card "ghost" was not removed from the DOM, and stayed in place. This was most noticable in tests, where multiple cards would pile up on the screen. This commit, adds a cleanup for each added card, to ensure that they are properly disposed of. Forward-Port-Of: odoo/enterprise#89418
Odoo Studio now removes extra spaces from the end of selection values before saving them. This prevents confusing duplicate-looking options and makes reused values more reliable across customizations.
Original PR description
Before this commit it was possible to create selection values with trailing spaces. This could be very misleading when reusing these values somewhere else. After this commit, such values are trimmed before saving. opw-4877276 Forward-Port-Of: odoo/enterprise#89311 Forward-Port-Of: odoo/enterprise#88255
This fix ensures that when an invoice is reset to draft, any related posted deferred entries are cancelled as expected. It helps keep accounting records consistent and prevents old deferred entries from remaining active after an invoice is reversed.
Original PR description
When resetting an invoice to draft, its posted deferred entries should be cancelled. This is adding a test to the linked fix. Linked community PR: https://github.com/odoo/odoo/pull/216628 opw-4891975 Forward-Port-Of: odoo/enterprise#89392 Forward-Port-Of: odoo/enterprise#88992
The Knowledge article comment composer now shows only the intended Log button instead of also showing a duplicate paper-plane send button. This reduces confusion for users when adding comments to article text.
Original PR description
Steps to reproduce =============== 1. Go to knowledge. 2. Open any article with write access. 2. Open the comment composer for any text of article. --> Two buttons are shown to post a comment. (Paper-plane and `Log` button) From [Commit], the condition to show the paper plane was modified, which will be always evaluated to `true` for the knowledge comment composer. After this commit, we will explicitly make that condition false for knowledge comment composer. Task-4866473 [Commit]: https://github.com/odoo/odoo/commit/9ba04f2a28f4d2b1adeb04628383d4730b5e72b6 Forward-Port-Of: odoo/enterprise#88225
This fixes which ticket form is opened when working with Helpdesk timesheets, ensuring users see the version that respects team restrictions. It reduces the chance of agents landing on the wrong ticket layout or missing the expected controls when recording time.
Original PR description
- Replaced `form_view_ref` from `helpdesk_timesheet.helpdesk_ticket_view_form_inherit_helpdesk_timesheet` to `helpdesk_timesheet.helpdesk_ticket_view_form_inherit_helpdesk_timesheet_restrict_teams`. - Add primary mode - use lambda for team_id default Forward-Port-Of: odoo/enterprise#88975
This fixes a visual issue in spreadsheets where the icon for a selection filter was not shown in the side panel. Users can now more easily recognize and work with this type of filter, reducing confusion when configuring spreadsheet filters.
Code cleanup and technical improvements
The mail prompt feature now uses Odoo's default AI assistant instead of an older external endpoint. This makes AI-generated mail responses more consistent and easier to maintain, with updated tests to protect the behavior.
Original PR description
- This drops the use of the olg iap endpoint in the mail prompt feature. - We also refactor the `_generate_response` method to ensure the system messages are at the beginning of the full set of conversation.
The date and time service used by several Odoo screens has been simplified so its internal responsibilities are clearer and easier to maintain. This is mainly an internal cleanup that should reduce future maintenance effort without changing day-to-day user workflows.
Original PR description
This commit is a rework of the DateTime service & hook modules in web. The API of the 'datetime_service' was too convoluted, bloated with exported members that were only used by the hook. Now, most of the logic is handled by the service, and the hook simply gives it a flag to tell the service to handle Owl lifecycle hooks. This effectively allows to only send the few members (methods & variables) that are used by callers of the service externally. Community: https://github.com/odoo/odoo/pull/217179 Task [3495251](https://www.odoo.com/odoo/project/133/tasks/3495251)
The website editor assets are reorganized into a dedicated bundle used by website-related apps. This helps keep future email marketing assets separate from the full website builder, reducing unnecessary loading and making maintenance cleaner.
Original PR description
Community PR: https://github.com/odoo/odoo/pull/215218 ------ [[REF] website, *: add website.website_builder_assets bundle](https://github.com/odoo/enterprise/pull/88346/commits/0bdf7a526888b3c9f8a45fb31fe74e416b6341e1) *: website_appointment, website_helpdesk, website_knowledge, website_sale_renting, website_studio This commit adds the `website.website_builder_assets` bundle which includes `html_builder.assets` and is used by the website builder editor. This will allow mass_mailing to have its own bundle too, without the need to load everything from the website builder. Forward-Port-Of: odoo/enterprise#88346
This update cleans up how several web interface components build page content, reducing security warnings from automated checks. It is an internal code quality change that helps keep the interface safer and easier to maintain without changing business workflows.
Original PR description
Use markup template and html functions to make the code cleaner and safer while no longer triggering ci/security flag.
The document PDF manager’s automated tests were moved to a newer testing framework. This helps maintain test reliability and makes future changes easier, with no expected change for users.
The accounting reports module’s automated tests were converted to a newer testing framework. This is an internal maintenance change that helps keep quality checks reliable without changing day-to-day product behavior.
The social testing module updates its automated checks to use a newer internal test framework. This helps keep the module easier to maintain without changing business features or user workflows.
The sales planning scheduling view was updated to use safer, cleaner methods for displaying formatted text. This reduces internal security-check noise and helps keep the feature easier to maintain without changing the user experience.
Original PR description
Use markup template and html functions to make the code cleaner and safer while no longer triggering ci/security flag.
Miscellaneous changes
Before this PR: - Fields `l10n_in_exception`, `l10n_in_gst_return_period_id`, and `l10n_in_gstr2b_reconciliation_status` were copied when duplicating records. - The field label for GSTR-2B status was shown as just "Status", which could be ambiguous. After this PR: - Added `copy=False` to all three fields to prevent unintended data duplication. - Updated the label "Status" to "GSTR-2B Status" in `l10n_in.gst.return.period` to make the purpose clear. OPW: 4882698 Forward-Port-Of: odoo/e
Original PR description
Before this PR: - Fields `l10n_in_exception`, `l10n_in_gst_return_period_id`, and `l10n_in_gstr2b_reconciliation_status` were copied when duplicating records. - The field label for GSTR-2B status was shown as just "Status", which could be ambiguous. After this PR: - Added `copy=False` to all three fields to prevent unintended data duplication. - Updated the label "Status" to "GSTR-2B Status" in `l10n_in.gst.return.period` to make the purpose clear. OPW: 4882698 Forward-Port-Of: odoo/enterprise#88420 Forward-Port-Of: odoo/enterprise#88110
Steps to reproduce - install `industry_fsm_sale_subscription` - go to settings -> enable `recurring task` - create product with following configs : * enable `subscription` * product type : `service` * create on order `task` * project `Field service`  - create a SO with this product - go to `Tasks` smart button - select the task and mark it done - ope
Original PR description
Steps to reproduce
- install `industry_fsm_sale_subscription`
- go to settings -> enable `recurring task`
- create product with following configs :
* enable `subscription`
* product type : `service`
* create on order `task`
* project `Field service`

- create a SO with this product
- go to `Tasks` smart button
- select the task and mark it done
- open the second task, from "recurring tasks" smart button
Obervation: in newly created task `Sales Order Item` is not linked
Issue:
- after this commit odoo/enterprise@be201cd ,sale fields are not copied for fsm task. while this is true for simple tasks, we would require such fields to be copied for recurrence tasks
Fix:
- allow sale fields to be copied for recurring tasks
opw-4875830
Forward-Port-Of: odoo/enterprise#88108This PR introduces new product-level codes for l10n_pe, in accordance with the latest updates from SUNAT: ### Withholding codes (detracciones): - Code `044`: Servicio de beneficio de minerales metálicos gravado con el IGV - Code `045`: Minerales de oro y sus concentrados gravados con el IGV These were added to the `l10n_pe_edi` module. ### Tariff fractions: 39 new values were added based on the SUNAT's updated list of tariff fractions for delivery guides. These were added to t
Original PR description
This PR introduces new product-level codes for l10n_pe, in accordance with the latest updates from SUNAT: ### Withholding codes (detracciones): - Code `044`: Servicio de beneficio de minerales metálicos gravado con el IGV - Code `045`: Minerales de oro y sus concentrados gravados con el IGV These were added to the `l10n_pe_edi` module. ### Tariff fractions: 39 new values were added based on the SUNAT's updated list of tariff fractions for delivery guides. These were added to the `l10n_pe_edi_stock` module. **Source:** https://cpe.sunat.gob.pe/sites/default/files/inline-files/AjustesValidacionesCPEv20250421.xlsx Forward-Port-Of: odoo/enterprise#87138