Daily updates from Odoo
Wednesday, August 27, 2025
9 changes · master
Resolved issues and error corrections
The scheduled subscription invoicing process now looks beyond the initial batch before deciding whether more work should be triggered. This prevents eligible subscriptions from being skipped when earlier records in the batch are not ready to invoice, helping invoices run on time.
Original PR description
Change was introduced here https://github.com/odoo/enterprise/pull/82340 that caused the cron trigger to not be activated if any of the 31 in the batch of subscriptions found was not to invoice. This is problematic because there could be other subscriptions that meet the domain requirements and the to invoice requirements that are not being seen because the limit is on the search before we check invoiceability. Added a limit to _get_subscriptions_to_invoice instead of on the search in order to take into account both filters for next cron triggers. opw-4850884 Forward-Port-Of: odoo/enterprise#92690 Forward-Port-Of: odoo/enterprise#89787
Appointment video call redirection now works correctly when several calendar events are processed at once. This prevents an error that could block or break video call link setup for multiple appointments.
Original PR description
When computing `videocall_redirection`, the method `get_base_url()` was called directly on a recordset containing multiple `calendar.event` records. Since `get_base_url()` expects a singleton, this raised the error: Traceback: --- `ValueError: Expected singleton or no record: calendar.event(4, 6, 1, 5)` This commit ensures the computation is done per record, avoiding the singleton issue and allowing correct videocall redirection values to be set on multiple events. Reference review: https://github.com/odoo/enterprise/pull/53569#discussion_r1543135425 sentry-6819406171 Forward-Port-Of: odoo/enterprise#92717
Fixes an error that could occur when setting a Pricer Sales Pricelist on a product variant. Users can now update this field without interruption, including while working with newly created product records.
Original PR description
Steps to Reproduce: ---------------------------------- - Open the product variant form - Set the Pricer Sales Pricelist field - Traceback Issue: ---------------------------------- - `TypeError: ProductPricelist._compute_price_rule() takes 3 positional arguments but 4 were given` Cause: ---------------------------------- - `_get_product_price()` was calling `_compute_price_rule()` with positional args instead of named quantity - If the product record is not yet created (`product._origin` is False), it skips price computation logic Fix: ---------------------------------- - Pass `quantity=1.0` explicitly to `_compute_price_rule()` to resolve the argument mismatch - Handle case where `product._origin` is False by falling back to `product` itself Task-4888983 Forward-Port-Of: odoo/enterprise#92702 Forward-Port-Of: odoo/enterprise#88321
This fixes a crash that could happen when a user marked a planned activity as done after its related Studio approval rule had been deleted. Users can now complete those activities without being blocked by an error, improving reliability in approval workflows.
Original PR description
An error occurs when a user attempts to mark a scheduled activity as done after the associated approval rule has been deleted. **Steps to Reproduce:** 1) Install Sales and Web Studio modules. 2) Log…
An error occurs when a user attempts to mark a scheduled activity as done after the associated approval rule has been deleted. **Steps to Reproduce:** 1) Install Sales and Web Studio modules. 2) Log in as Admin and use Studio to add an approval rule to the Sale Order’s Preview button. >- Set Allowed Group to Access Rights. >- Set Responsible User to Mitchell Admin. 3) In the Incognito Tab, login as Demo, open the same sale order and click on preview to create activity in chatter. 4) Delete the Approval Rule in the original tab. 5) Switch back to Demo and click Mark Done under Planned Activity in chatter. **Error:** `SyntaxError: syntax error at or near ')'` `LINE 1: SELECT id FROM studio_approval_rule WHERE id IN () FOR UPDAT. ^` **Root Cause:** The error occurs because the SQL query at [1] includes an empty tuple of rule IDs `(all_rule_ids)`. An empty `IN ()` clause in SQL results in a syntax error. [1]- https://github.com/odoo/enterprise/blob/7ea45724e7689a0df11d20ace9c562788f5d19e3/web_studio/models/studio_approval.py#L366 **Solution:** This commit avoids the error by ensuring that the SQL query only runs when `all_rule_ids` is not empty. sentry-6306636466 Forward-Port-Of: odoo/enterprise#86982
Employee appraisal skill records now keep important extra information, such as the justification text, when skill levels are changed or copied. This prevents appraisal details from being unintentionally erased and helps maintain a complete employee evaluation history.
Original PR description
Allow models that inherit the hr_individual_skill mixin to specify additional fields to be included/preserved/carried-over when writing/creating new skill records. This was already an issue in the `hr_appraisal_skill` module where the `Justification` field was not included when copying/creating new skills. As a result, the field was "erased" on every skill level change task-4984689 Forward-Port-Of: odoo/enterprise#91772
Reopening a selection or numeric global filter in spreadsheets now replaces the current side panel instead of opening an extra one. This creates a more consistent editing experience and avoids confusing duplicate panels for users working with spreadsheet filters.
Original PR description
This commit aligns the behaviour of reopening the global filter side panel with the imp introduced in commit: https://github.com/odoo/enterprise/pull/92483/commits/60ceb8bd1188fdd14fdf72bac46a445e688f3683 Current behavior before PR: - Reopening a selection/numeric global filter side panel showed the previous behaviour (opening a new panel instead of replacing it). Desired behavior after PR is merged: - The same behaviour as in the commit applied: reopening side panel from a child now replaces the current one instead of opening a new side panel. Task: 5034264
Fixes an issue where adjusting the checkout time from the weekly Attendance view could save the current time instead of the time selected by the user. This helps keep employee attendance records accurate when managers edit checkout times in the Gantt interface.
Original PR description
Steps to Produce: - Go to the Attendance interface and select week. - Drag the second half of the column to adjust checkout. - Save the change. Issue: - Dragging on half cell deletes the checkout value from the context. - As a result, the system sets the checkout time to the current time instead of the dragged value. - This leads to incorrect attendance records. Fix: - Ensure the checkout value remains in the context when dragging the cell. - Preserve the modified checkout time so it reflects the user's intended change instead of defaulting to the current time. Task-4958060 Forward-Port-Of: odoo/enterprise#93092 Forward-Port-Of: odoo/enterprise#91119
Fixed an issue in Odoo Sign where initials selected in the Add Initials dialog could be added but not shown on multi-page PDFs. Users now see their initials immediately on the document, whether applied to one page or all pages.
Original PR description
Issue: * When uploading a multi-page PDF and choosing an option in the `Add Initials` dialog, the initials were not visible. * This happened because the old `postRender` used to call `refreshSignItems`, but that code was removed in a recent refactor. Fix: * Call `refreshSignItems()` directly after inserting the initials. * Ensures initials appear immediately whether added on one page or across all pages. Impact: * Users now see their initials properly rendered on the document after making a choice in the dialog.
This fix prevents the Point of Sale from showing an error when an order is unavailable while checking the amount due. It helps cashiers continue their workflow smoothly in edge cases where order data is missing.
Original PR description
Before this commit, accessing the order amount caused an error if the order was not defined. opw-5027426 Forward-Port-Of: odoo/enterprise#92928 Forward-Port-Of: odoo/enterprise#92736