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