Daily updates from Odoo
Tuesday, July 15, 2025
10 changes · master
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