Daily updates from Odoo
Navigate
Branch
Tuesday, July 15, 2025
20 changes
Security fixes and vulnerability patches
This update centralizes access checks for documents used in the signing flow. It helps ensure users can only interact with signing attachments they are allowed to access, reducing the risk of unauthorized document access.
Original PR description
odoo/odoo#218905
Enhancements to existing features
Payroll access has been adjusted so users without payroll rights no longer see the Payroll app. Payroll officers can access employee payroll information, while administrators keep configuration access, helping match visibility with each role's responsibilities.
Original PR description
Payroll No right : You don't see payroll app Officer : Employee officer + payroll tab Admin : Employee admin + payroll app config. Task: 4900703
The wording in the IoT pairing code dialog was updated to make the process easier to understand. This helps users connect IoT boxes with less confusion and fewer support needs.
Original PR description
We improved the "use pairing code" dialog to make it clearer. Task: 4942391 Forward-Port-Of: odoo/enterprise#90164
The sales product catalog now highlights each product's last bill date and orders products based on the customer's billing history. This helps sales users find products a customer is most likely to need more quickly, while other products keep their usual order.
Original PR description
A 'Last Bill Date' for products has been introduced in the product catalog view of Sales. The products in the catalog are now displayed in a specific sequence, determined based on the partner's invoicing history. The sequence is ordered from the latest to the oldest billing date, with remaining products following the default order. These changes make it easier for customers to find relevant products quickly. Task ID: 4423839
The Web Studio test suite was updated to match a recent change in how monetary totals are displayed when no currency is set. This keeps automated checks aligned with the current behavior and helps prevent false test failures without changing the user experience.
Original PR description
This commit adapts a test which fails due to https://github.com/odoo/odoo/pull/216597 because monetary aggregates no longer show a "—" when no currency is provided. part of task-4886208
The planning calendar now preserves values entered in the form while using multi-create mode. This makes scheduling multiple planning items smoother and reduces the need to re-enter information.
Original PR description
This commit, adds into the state the value set into the form when we are in calendar multi_create view. task-4918909
The mock server used in automated tests now handles stored data in a way that better matches the real Odoo server. This makes tests across several apps easier to maintain and more reliable, with no direct change expected for end users.
Original PR description
*: calendar, hr_holidays, im_livechat, rating, website, website_livechat, website_slides, approvals, voip, whatsapp The goal of this commit is to make the Store in the mock server more like the actual store. This allows to add generic models without _to_store methods to be added to the store as well as allowing to follow more the same structure as the actual server. It adds support for: - _to_store_defaults method on models - _to_store now uses the current model - add method was split and we can now use _add_records_field like in the actual server - Store.attr, Store.one, Store.many can now support lists, and other Store.attr inherited object task-4789853
The Documents app has been updated to simplify an internal processing option related to saving data. This should help keep the code easier to maintain without changing the day-to-day user experience.
Original PR description
odoo/odoo#216133
Resolved issues and error corrections
This fixes issues where cash rounding amounts were not handled correctly in Colombian electronic invoice files. It helps ensure tax totals and official UBL documents remain accurate when invoices include cash rounding.
Original PR description
#### [FIX] l10n_co_dian: UBL related cash rounding issues In the community PR the UBL XML generation was adjusted to support cash rounding. (See there for more details) This commit adjusts the code in `l10n_co_dian` to be compatible. #### [FIX] l10_co_edi: tax_amls include rounding lines Currently rounding lines (with taxes) are not included in the tax lines. This is fixed in this commit. See the community PR / commits for motivation. #### info task-4854592 Forward-Port-Of: odoo/enterprise#90017 Forward-Port-Of: odoo/enterprise#89439
Address validation in AvaTax could trigger translation warnings because the system could not reliably determine the user language in this case. The fix updates how translated text is handled, making AvaTax address checks more stable without changing business workflows.
Original PR description
Prior to this commit, a translation issue occurred due to the use of a list comprehension. The _get_translation_source function attempts to scan the local variables, but in the context of a list comprehension, only variables defined within the comprehension are accessible. As a result, variables like uuid and cursor were not available to the _get_lang function, ultimately leading to an error. We replaced the list comprehension with a standard for loop to ensure proper access to local variables. runbot-159883 Forward-Port-Of: odoo/enterprise#88651
This fixes rare cases where Hong Kong payroll payslip amounts did not match the HSBC autopay file because decimals were handled differently. The autopay export now aligns with the payslip rounding, reducing payment reconciliation issues.
Original PR description
Explanation: In some rare cases, the autopay amount in payslip and the amount in hsbc autopay file doesn't match. This is due to hsbc autopay files are trimming all the decimal places, and the amount in payslip are rounded. Forward-Port-Of: odoo/enterprise#89118
The Field Service product availability check no longer triggers an error when opened from a task's product list. This helps service teams reliably view product forecasts before planning or confirming work.
Original PR description
-master Steps to reproduce: - Open Field Service app - Select any task in app - Click on Products stat button on the top - Click on overflow menu of any product and click on Check Availability option Issue: - When you press on the Check Availability option an Odoo error is thrown. Cause: - The cause is that when we are trying to set the context into our action we are having a Type Error because the context available which should of empty Dictionary is of type String. - Because of this when we use update method which is exclusive for sets and dictionaries throws that update method cant be used on a string. Solution: - Rather than using the update method we can replace the context in the action because we always receive a empty context from the super call and we need fill the context so that it shows the product forecast. task-3707563
Unused code from an earlier spreadsheet version history approach was removed after the feature was refactored. This reduces maintenance risk without changing how users access or use version history.
Original PR description
Some leftover code was left from when we refactored the version history feature to load a new model instead of using undo/redo for the revisions. Task: [4942548](https://www.odoo.com/odoo/2328/tasks/4942548)
Helpdesk rating views now display when a rating was given instead of when the record was created. This makes customer feedback timelines clearer and avoids confusion when reviewing service performance.
Original PR description
Changed new field of view to show the rating date. Task-4023246
Removing the Dispatch Management System no longer leaves behind views that can break the Batch / Wave Transfers screen. This prevents users from encountering an error when reopening inventory transfer planning after uninstalling DMS.
Original PR description
Previously, if the user enabled the DMS (Dispatch Management System) in the Inventory module, the Gantt view would appear in the Batch / Wave Transfers view. However, upon uninstalling the DMS, reopening the Batch / Wave Transfers view would raise a UserError. This issue is now resolved by using an uninstall hook to remove the views introduced by the DMS module. task-4804805
Customers who choose a non-default subscription plan now get the correct pricing applied in their cart. This prevents confusion at checkout and ensures the selected plan is honored during purchase.
Original PR description
Selecting another plan than the default one didn't work because it wasn't considered when looking for the applicable pricing. Forward-Port-Of: odoo/enterprise#90167
This change prevents important activity types such as calls, approvals, tax tasks, payroll leave deferrals, and bank synchronization reminders from being removed or incorrectly changed. This helps keep automated workflows stable across apps and avoids errors when expected activity types are missing or misconfigured.
Original PR description
Master data protection ====================== In general, be defensive with activity types: avoid crash when activity type has been removed, try to gracefully recover from non existing data, protect…
Master data protection
======================
In general, be defensive with activity types: avoid crash when activity
type has been removed, try to gracefully recover from non existing
data, protect types linked to business code that should not be unlinked
or changed from model.
Introduce a generic way to mark some activity types as master data
* model is fixed and should not be modified, because it is linked
to specific flows e.g. todo should be generic;
* data should not be unlinked, because it is used in automated flows
like plans, business code, ... and cannot easily be replaced;
Mail: make "Call", "Meeting" and "Todo" activity types master data users
cannot remove as they are required in various flows: fleet, plans,
voip, ... Also force their model to be False (aka be cross model).
Mail: make "Warning" and "Upload document" activity types in addition
to "Call" and "Todo", always cross model. As they are used in various
apps it should not be specific to a model.
Hr holidays: prevent from modifying leave activity types, as they are
used in business flows and in automated code.
Fleet: prevent from modifying contract activity type (same reason).
Account Online Synchornization: make "Bank Synchronization" master
data as business behavior dependso on it. Also fix model used for
the type.
Account reports: make "Tax Closing" master data as business flow
depends on it.
Approvals: make "Approval" master data as business flow depends on it
and it is not easy to remove it in their usage.
Hr Payroll: make "Leaves to defer" master data as business flow
depends on it.
Voip: make "Call" activity type master data users cannot remove as it
is required in various flows of VOIP. Also force its model to be False
as it is used in various models and should not suddenly be limited to
a given model. Done in community, as activity is defined in 'mail'.
Studio: make "Approval" master data as approval flow depends on it.
Calendar: fix activities creation
=========================
Current event creation tries to create activities. However code coming
from https://github.com/odoo/odoo/pull/72043 seems quite broken: it tries to find if the
target model accepts activities, but does not by browsing the wrong
model with wrong ids ... which globally turns off activity creation.
This fix rewrites a bit code creating activities when creating an event so
that
* check activity support on the right model;
* it uses the right model on activity type: otherwise you may end up with
models that do not match between record and activity type;
* remove useless (or wrong) code trying to browse 'model ids' on a given
model;
* we now correctly check for activity inheritance using 'is_mail_activity'
field on IrModel;
Task-3777606
Forward-Port-Of: odoo/enterprise#90200
Forward-Port-Of: odoo/enterprise#58164This fix ensures rental combo products only calculate availability when the product is actually stock-managed. Customers can now select valid rental dates instead of seeing every date incorrectly blocked, improving the online rental purchase flow.
Original PR description
Issue: - Create a rental product (with a rental pricing), - Make it storable and don't allow out-of-stock orders, - Now make it a combo product, - Add a rental combo choice (to be able to save it), - Go to the product's page on eCommerce, - Issue: all dates are unavailable. Cause: The date range picker only relies on `allow_out_of_stock_order` to know whether to compute rental availabilities (but not on `is_storable`). Fix: Also rely on `is_storable` to know whether to compute rental availabilities. opw-4846084 Forward-Port-Of: odoo/enterprise#90197 Forward-Port-Of: odoo/enterprise#90084
Code cleanup and technical improvements
This update aligns how multiple Odoo Enterprise apps handle common record update and default value operations. It is an internal cleanup intended to keep modules compatible with core platform changes and reduce future maintenance risk, with no expected direct change for end users.
Original PR description
odoo/odoo#218334
IoT Box communication is being standardized so both Community and Enterprise use the same action call. This reduces complexity and keeps Enterprise-specific connection options, such as websockets, available where supported.
Original PR description
This commit's goal is to make the communication with an IoT Box the simplest possible: no matter if we're community or enterprise, we always want to call `iot_http.action`. Protocols will depend on the implementations available. Longpolling for community, longpolling + websocket for enterprise. Community PR: odoo/odoo#218411 Task: 4936688