Daily updates from Odoo
Tuesday, January 14, 2025
11 changes
1 change
Resolved issues and error corrections
Activity Plans are now filtered so users only see plans for the company they have selected, along with global plans when no specific company is chosen. This prevents confusion from unrelated company plans appearing in the list and helps teams work with the right HR activity templates.
Original PR description
Steps: - Go to the 'Activity Plans' section. - Select a company in the company widget. - Activity plans were not filtered based on the selected company. Issues: - Activity plans were not filtered correctly by the selected company, showing plans from unrelated companies. Fix: - Added domain to display activity plans assigned to the selected company. - Added domain to display global activity plans when no company is selected. Task - 4441838 Description of the issue/feature this PR addresses: Current behavior before PR: Desired behavior after PR is merged:
10 changes
Resolved issues and error corrections
Changing the destination location on an inventory receipt now also updates the related stock moves. This prevents hidden mismatches that could send goods to the wrong recorded location and improves inventory accuracy.
Original PR description
When changing the destination location of a picking, the destination location of the stock moves are not updated and the user may not even notice it. To reproduce the issue: 1. In Settings, enable…
When changing the destination location of a picking, the destination location of the stock moves are not updated and the user may not even notice it. To reproduce the issue: 1. In Settings, enable "Storage Locations" 2. Inventory > Operations > Receipt, New - Add an operation - Change the destination location of the picking 3. Save 4. Mark as Todo 5. Open the created move Error: the destination location of the stock move is still the initial one On the picking model, there are two fields that contain the stock moves: https://github.com/odoo/odoo/blob/17a63a6cda41a44e3d4ff8b5a9042e93ba956bc8/addons/stock/models/stock_picking.py#L612-L614 Where `move_ids_without_packages` is a subset of `move_ids` When editing the operations of a picking, we are actually dealing with the field `move_ids_without_packages`. So, when changing the destination location of the picking, the webclient sends the SMs via the field `move_ids_without_packages`, i.e.: the web client does not provide any value for `move_ids`. Server side, when creating a `new` record based on the provided values, we will handle the inverse of `move_ids_without_packages`, i.e.: we will make sure that the stock moves have the field `picking_id` correctly defined: https://github.com/odoo/odoo/blob/a4c2f66700dd98487ac6bb8f0f25fdc4abffd0bf/odoo/models.py#L6366-L6374 **But** we don't define any value for the siblings of the field. It means that we don't set any value for the field `move_ids`. This will lead to the bug: later on in the onchange, we flag all fields that will have to be recomputed: https://github.com/odoo/odoo/blob/b794f0f332f473deb2c04eba60baf4761db3b508/addons/web/models/models.py#L983 And here we would hope that the field `location_dest_id` of the stock moves will be flagged, as mentioned in the dependencies: https://github.com/odoo/odoo/blob/68ae97bd27fbdc874922e03f52f8b0c7953df801/addons/stock/models/stock_move.py#L206-L207 But... In `_modified_triggers`, at some point, we are here https://github.com/odoo/odoo/blob/a4c2f66700dd98487ac6bb8f0f25fdc4abffd0bf/odoo/models.py#L7200-L7203 Where `field` is `stock.move.picking_id`. So, we iterate on the inverse field of `field`, i.e.: `move_ids` and `move_ids_without_packages`. However, as explicitly mentioned in the comment, we "use an inverse of field without domain", i.e.: `move_ids`. We therefore read the value of this field on the picking which is, because of the bug explained in the previous paragraph, an empty record. As a result, the ORM considers that it does not have to recompute any `location_dest_id`. The ORM team is aware of the issue. They have tried to write a generic solution (cf PR [191318](https://github.com/odoo/odoo/pull/191318)) but it led to a lot of other errors. So, the issue has been considered as a limitation and added to a todo list on their side. In the meantime, it is possible to patch the issue with a stock-specific fix. Note: the issue will also happen when editing an existing picking. Suppose a picking with one move SM01. The user adds a second move SM02, does not save and edits the destination location of the picking: for the same reasons, the ORM will only see SM01 and, therefore, will call the compute method for SM01 only. OPW-4379509
Guest visitors in live chat can now click mentions without triggering an error. This prevents disruptive traceback messages during customer conversations and keeps the chat experience smooth.
Original PR description
Purpose of this commit: When an operator mentions someone in an ongoing live chat conversation and the guest clicks on it, a traceback error is raised. This occurs because clicking on the mention attempts to execute an action to open the mentioned partner's record. Since the guest user lacks access to the action services in the services registry, the error is triggered. This commit resolves the issue. task-4459050 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
The payment screen no longer shows a validate button when it cannot be useful for the payment workflow. This avoids confusion for accounting users and helps prevent unnecessary manual actions.
Original PR description
This button is only useful for marking payments as paid when the matching doesn't do it automatically, which can only happen if there is no reconciliation being done, which only happens when there is no outstanding account used. opw-4445889
Live chat now clears outdated call session records before looking for an available operator. This helps ensure agents are not incorrectly marked as busy, so new customer chats can be assigned more reliably.
Original PR description
Before this PR, operators could be stuck inside a "ghost call," meaning that they had incorrectly closed RTC sessions. This is an issue with the fact that "in call" operators cannot be assigned a new live chat. This PR cleanup rtc session before trying to find an operator task-4440897, task-4453597
The live badge on minimized call participant cards now displays with proper spacing and a clean background. This improves the visual clarity of calls in Odoo Discuss without changing how calls work.
Original PR description
Before this commit the `LIVE` badge on the minimized call participant card had some styling issues. This was caused by missing padding on the related div tag and non-transparent background on the parent tag. This commit fixes the issue by introducing some padding and removing the css class that adds background opacity. Before:   After:  
Automated website and app tours now skip unnecessary waiting when a step only performs an action and does not need to find an on-screen element. This makes internal tests run faster and required small updates to several tours so they remain reliable.
Original PR description
In the macro class, for each step, we wait 50ms to see if a mutation occurs and then look for the trigger of the step in the DOM. So, if a step of the macro does not have a trigger, we do not look for a trigger and we only do an action, there is no reason to wait for a mutation to occur in the DOM. So, we can continue the macro directly. Description of the issue/feature this PR addresses: Current behavior before PR: Desired behavior after PR is merged: --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Fixes an issue where applying an order-wide discount and then a product-specific discount could cause an error and block the sale order. Sales teams can now combine these promotions more reliably, including on taxed products.
Original PR description
Versions -------- - 18.0+ Steps ----- 1. Create a promotion to apply a fixed discount to an order; 2. create a promotion to apply a fixed discount to a specific product; 3. create a order with a…
Versions -------- - 18.0+ Steps ----- 1. Create a promotion to apply a fixed discount to an order; 2. create a promotion to apply a fixed discount to a specific product; 3. create a order with a taxed product eligible for the 2nd discount; 4. apply the first promotion; 5. apply the second promotion. Issue ----- Traceback: > KeyError: account.tax(1,) Cause ----- Commit db12319e8b3b changed the way taxes get handled for discounts on the order total. They no longer automatically get a tax applied to them. This causes a problem in the `_discountable_specific` method, which builds a `dict` using taxes of discount lines as keys to calculate discountable amounts. Because the existing reward doesn't have a tax, this dict only has an `account.tax()` key, leading to a `KeyError` when trying to get discountable amount associated with the product-specific reward's taxes. Solution -------- Change the `dict` to a `defaultdict` which returns `0` for non-existing keys. opw-4419764
This update corrects the reporting code used for partial incapacity in Belgian payroll declarations. It helps ensure payroll absence data is submitted accurately for compliance reporting.
This update makes an automated restaurant preparation display check wait for the right screen elements before moving forward. It helps prevent false test failures after recent speed improvements, improving reliability without changing user-facing behavior.
Original PR description
Due to [317c781bd917](https://github.com/odoo/odoo/pull/192015) commit, the tour PreparationDisplayPaymentNotCancelDisplayTour is faster. This causes behavior changes in the turns. We need to add steps to ensure that the triggers for these are present in the DOM before continuing the turn.
Financial budget reports now display correctly when an analytic account filter is applied. This prevents profit and loss reports from becoming misaligned or confusing, helping users review budget and analytic information together reliably.
Original PR description
Steps to reproduce: - activate analytic accounting in the Accounting settings - open the profit and loss - create a financial budget with the "budget" filter - select an analytic account -> The report is completely messed up because the budget feature is not able to handle other columns in the report. This commit solves the issue by "lowering" the budget headers on the same level of header than analytic headers. opw-4298672