Thursday, September 18, 2025
3 changes · saas-18.4
Enhancements to existing features
Accounting KPI summaries now include posted bank journal entries tied to unreconciled bank statements. This gives businesses a more complete view of outstanding bank activity and helps prevent understated accounting indicators.
Original PR description
### [REF] account: reorganize kpi.provider tests The account test_kpi_provider was already getting complicated, and this commit aims to simplify it by breaking it into smaller tests that show more clearly what is expected. Task-id: 5062431 ### [IMP] account: make kpi.provider report unreconciled bank statements The `kpi.provider:get_account_kpi_summary` method should include posted moves of a bank journal that are related to an unreconciled bank statement. Task-id: 5062431 Forward-Port-Of: odoo/odoo#227744 Forward-Port-Of: odoo/odoo#227605
Resolved issues and error corrections
Pasted tables with a header row from tools like ChatGPT are now normalized so the editor can handle them correctly. This prevents crashes or selection problems when users edit or delete rows in those tables, improving reliability for content editing.
Original PR description
**Current behavior before PR:** Steps to reproduce: - Copy a table from chatGPT's response containing first row wrapped in `<thead>`. - Paste it in editor. - Select last row. - Pressing backspace leads to traceback. This issue happens because the copied table is pasted with first row wrapped in a thead element. Due to this, rows are wrongly calculated leading to traceback in removeRow method. **Desired behavior after PR is merged:** - This commit ensures that if a table has first row wrapped inside a `thead`, the row is moved from `thead` to the start of `tbody` ensuring that rows are calculated correctly. - This commit also replaces all the `<th>` elements with `<td>`. task-5048339 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#226990 Forward-Port-Of: odoo/odoo#224784
Changing a customer’s country could crash checkout when the same shopper had reward-enabled carts open on multiple websites. This fix lets Odoo update pricing and loyalty rewards across those carts correctly, avoiding an interruption to the shopping experience.
Original PR description
Versions -------- - 16.0+ Steps ----- 1. Have 2 eCommerce sites; 2. have a user with an open cart in both sites; 3. have a reward applied in one or both of carts; 4. have a fiscal position applicable…
Versions -------- - 16.0+ Steps ----- 1. Have 2 eCommerce sites; 2. have a user with an open cart in both sites; 3. have a reward applied in one or both of carts; 4. have a fiscal position applicable to the user's address; 5. change the user's country to one with a different fiscal position. Issue ----- > ValueError: Expected singleton: sale.order(1, 2) Cause ----- As of commit ede8846987a98, fiscal positions get recomputed on address changes. When a fiscal position changes, the `_recompute_prices` method gets called on all open carts. This method does not include an `ensure_one` check, so it should be able to handle multiple sales orders. However, the `sale_loyalty` override will call `_update_programs_and_rewards` on `self` if any reward line is encountered. This method does have an `ensure_one` check, leading to the error. Solution -------- Rewrite the override as a loop, so it can handle multiple records in `self`. opw-5017669 Forward-Port-Of: odoo/odoo#224225