Friday, September 25, 2026
7 changes · 19.0
Resolved issues and error corrections
Fixed a Point of Sale loyalty issue where fixed discounts could be calculated too low when an order included both regular and negative-priced items with different taxes. This ensures reward lines add up to the intended discount so customers are charged the correct amount.
Original PR description
Steps to reproduce: - Product A with a price-included tax, product B with a negative price and another tax (or none) - Promotion with a fixed amount discount on specific products (or on the order),…
Steps to reproduce: - Product A with a price-included tax, product B with a negative price and another tax (or none) - Promotion with a fixed amount discount on specific products (or on the order), both products eligible - Add both products to a PoS order Issue: The discount is split per tax group with a common factor, so the negative line gets a positive reward line, which is expected. But the reward lines add up to less than the discount and the customer pays too much. Cause: Since 7280f3597ece each tax group is capped with `Math.min(get_total_with_tax(), amount)`. A single tax group is compared with the total of the whole order: here the total includes the negative line, so the positive group is lowered while the negative one is kept as is. Fix: Apply the cap proportionally: every tax group is scaled by the ratio between the order total and the discountable amount when the total is lower. The scenario of 7280f3597ece gives the same result, and the reward lines add up to the discount whatever the number of tax groups. opw-6567973 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#288853
This fixes a Mail testing issue where contacts without user accounts could be missing from mention suggestions in the mock environment. It aligns the mock behavior with the real system, helping prevent false test failures and improving confidence in messaging changes.
Original PR description
Before this commit, the test "discard stale mention when replacing it with a longer partner mention" could fail with: Failed to find 1 of ".o-mail-Composer-suggestion strong" with text "John"…
Before this commit, the test "discard stale mention when replacing it with a longer partner mention" could fail with:
Failed to find 1 of ".o-mail-Composer-suggestion strong" with text
"John" (Timeout of 10 seconds). Found 0 instead.
This happens because the mocked get_mention_suggestions_from_channel finds the partners through their users, while python also returns the matching channel partners that have no user. John has no user, so the suggestion list only finds him among the members loaded by /discuss/channel/members. The suggestions are filtered when the term changes and when the mention answer arrives, so John never shows when those members arrive after the mention answer.
This comes from "[FIX] mail: should be able to mention non-members in accessible channels", which replaced the mock filter on the channel partners by a search on the users.
This commit fixes the issue by also returning the channel partners without a user that match the term, as python does.
https://runbot.odoo.com/odoo/error/947558Indian e-way bill calculations now take global invoice discounts into account. This helps ensure e-way bill values match the discounted invoice totals, reducing errors in compliance documents.
Original PR description
Before this commit- We didn't consider, global discount for ewaybill After this commit- We consider the global discount for ewaybill opw-6592878 task-[6596257](https://www.odoo.com/odoo/project/967/tasks/6596257) --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Fixes an issue in Discuss where a new message arriving while a channel was opening could be missing from the conversation until the next refresh or fetch. This helps users see incoming messages reliably and reduces confusion during active conversations.
Original PR description
Before this commit, a message received while a channel opens in Discuss does not appear, and stays out of the thread until the next fetch. This happens because the channel opens on its last read message through `loadAround`, which replaces the message list with the fetched messages. The bus handler of a new message adds it to that list as long as the thread displays the present, so the replacement drops what arrived during the fetch. This commit fixes the issue by putting those messages back: in the list when it displays the present, in `pendingNewMessages` when it does not, where `fetchMoreMessages` already picks them up. https://runbot.odoo.com/odoo/error/947188 Forward-Port-Of: odoo/odoo#289976
Users will no longer lose unsaved changes when posting messages or changing followers from the chatter if the form cannot be saved, such as when a required field is empty. The form now reloads only after a successful save, preventing confusing rollbacks to older saved values.
Original PR description
Before this commit, posting a message in the chatter of a form view with `post_refresh` lost the unsaved changes of an invalid record, for instance after emptying a required field. The form showed the invalid field for a moment, then came back with the saved values. The same happens on the other chatter actions that reload the form, such as a follower change. This happens because the chatter reloads the record after it tries to save it, even when the save fails. This commit fixes the issue by reloading the record only when the save succeeds. Forward-Port-Of: odoo/odoo#290346 Forward-Port-Of: odoo/odoo#290204
This fixes an issue where copied images in website or editor content could remain linked to the original record instead of the one currently being edited. The change keeps duplicated attachments aligned with the right content, reducing inconsistencies that could otherwise require another save to correct.
Original PR description
When an attachment tied to one record was copied while editing content linked to a different one, the duplicate could keep referencing the original model instead of the new target, leaving the two out of sync until the next save. opw-6560233 Forward-Port-Of: odoo/odoo#289842 Forward-Port-Of: odoo/odoo#287784
The Swiss financial reporting module now uses corrected formulas for the balance sheet. This helps Swiss companies produce more accurate financial statements and reduces the risk of reporting inconsistencies.
Original PR description
Change some formulas in the Swiss balance sheet task-6379692