Daily updates from Odoo
Thursday, January 15, 2026
14 changes · 17.0
Enhancements to existing features
This update ensures invoices display the correct tax labels based on the 'invoice_label' field, rather than the default 'name' field. This is crucial for accurate tax reporting and compliance with localized requirements, providing a more user-friendly and reliable tax display on invoices.
Original PR description
When computing taxes for invoice lines, the system should use the `invoice_label` field instead of the default `name` field to display tax information. This allows invoices to show more appropriate…
When computing taxes for invoice lines, the system should use the `invoice_label` field instead of the default `name` field to display tax information. This allows invoices to show more appropriate tax labels that may differ from the internal tax name. Technical details: - Added `is_invoice` context when calling `tax_ids.compute_all()` in `account.move.line._compute_all_tax()` method - Modified `account.tax.compute_all()` to check for `is_invoice` context and select appropriate field name (`invoice_label` for invoices, `name` for other documents) - The selected field name is used when building the tax values dictionary returned by `compute_all()` This change ensures that invoice tax lines display the correct label as defined in the tax's `invoice_label` field, which is particularly useful for localized tax reporting requirements where the invoice label may differ from the internal tax name. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Resolved issues and error corrections
A bug was found in the Dutch Profit & Loss report where Cost of Goods Sold and Cost of Sales codes were incorrectly linked. This resulted in inaccurate financial reporting. This update corrects the code mapping to ensure proper financial data is displayed.
Original PR description
**Steps to reproduce:** 1. Install l10n_nl_report. 2. Go to Accounting → Configuration → Accounting Reports. 3. Open Profit and loss report (tags). 4. Click on Cost of Goods Sold or Cost of Sales and check the related codes. **Issue:** In the Dutch Profit and Loss report, the codes assigned to the "Cost of Goods Sold" and "Cost of Sales" line items are swapped. Currently: - Cost of Goods Sold is linked to code: NL_SALE - Cost of Sales is linked to code: NL_COGS This results in incorrect mapping and misleading financial reporting. **Cause:** The codes were incorrectly applied, leading to reversed definitions between Cost of Goods Sold and Cost of Sales. See: https://www.investopedia.com/terms/c/cogs.asp Solution: Swap the code values so that: - NL_COGS → Cost of goods sold - NL_SALE → Cost of sales
This update fixes an issue where users couldn't manage their consent for online account synchronization. The change introduces a message to the account synchronization link, allowing users to control their data sharing preferences. The update also enhances the system's flexibility by using provider type to support various synchronization providers.
Original PR description
In this commit:https://github.com/odoo/enterprise/commit/bf5b7d03fe8e138ee8bc0246d3d148638db5d620 we introduce a message on the account_online_link to be able to manage the consent. But since manage_consent is not a field of account.online.linki would traceback, we changed the position of the code by popping the value. Also changed the url to use the provider_type to be able to use the route with any provider if needed task-5187621
This update corrects a bug where loyalty points weren't accurately calculated when re-loading saved Point of Sale (PoS) orders. Previously, points weren't correctly applied after saving and reloading an order, leading to incorrect point totals. This fix ensures accurate point calculations for loyalty programs when orders are reloaded.
Original PR description
When an order was saved then reloaded in the PoS, the points awarded for a loyalty program were not computed correctly. Steps to reproduce: ------------------- * Create a loyalty program that gives one point for every € spent * Activate the trusted pos option in the PoS settings * Open a PoS session and create an order * Add 1 product A for a total of €10 * Set a partner * You should get 10 points * Save the order * Reload the saved order * Change the quantity of product A to 2 > Observation: You still have 10 points instead of 20 Why the fix: ------------ When saving the order, it is synced with the backedn and the comboLines are reloaded from the backend when reloading the order. However, it becomes an empty list and the line would be treated as a combo header. This backport a part of this commit : https://github.com/odoo/odoo/pull/220828 opw-5118716
This update fixes a discrepancy in how tax reports are tested within several Odoo localization modules (l10n_at, l10n_dk, etc.). The change ensures tests accurately reflect the 'invoice label' used for tax information, leading to more reliable report generation. This improves the accuracy of tax reports for our international customers.
Original PR description
Community PR: https://github.com/odoo/odoo/pull/236497
This update fixes an issue where returning a received subcontracted product didn't properly decrease the purchase order quantity. Now, customers can accurately process multiple return and re-receipt scenarios, ensuring correct quantity tracking for subcontracted products. The change addresses a technical update related to Odoo 18.0's exchange workflow.
Original PR description
Problem: If a customer ends up returning their subcontracted products and then creates a second return to receive the products again the received quantity on the purchase order line updates…
Problem: If a customer ends up returning their subcontracted products and then creates a second return to receive the products again the received quantity on the purchase order line updates correctly. However, if they return the second receipt, then it increases the received quantity on the purchase order line instead of decreasing it. Purpose: This will allow a customer to process a chain of returns for subcontracted products while keeping the received quantity correct. I have removed the check for origin_returned_move_id because of the return for an exchange workflow in Odoo 18.0. This field does not get set because the exchange moves should be independent of their origin moves. Steps to Reproduce on Runbot: 1. Create a purchase order for a subcontracted product. 2. Validate the receipt on the purchase order. 3. Return the receipt and validate it. 4. Create a return of the previous return and receive the products again. 5. Create a return of the return from the previous step and validate it. 6. Observe the received quantity on the purchase order line increased instead of decreasing after step 5. opw-4839366 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This update addresses minor improvements and bug fixes within the Odoo spreadsheet component. Specifically, it ensures correct alignment of numeric data when exporting to Excel and incorporates a recent release (17.0.84) with related enhancements. This ensures the spreadsheet functionality continues to operate smoothly and reliably.
Original PR description
### Contains the following commits: https://github.com/odoo/o-spreadsheet/commit/ae6422403 [REL] 17.0.84 [Task: 0](https://www.odoo.com/odoo/2328/tasks/0)…
### Contains the following commits: https://github.com/odoo/o-spreadsheet/commit/ae6422403 [REL] 17.0.84 [Task: 0](https://www.odoo.com/odoo/2328/tasks/0) https://github.com/odoo/o-spreadsheet/commit/eb07d192c [IMP] xlsx: export clip [Task: 5368130](https://www.odoo.com/odoo/2328/tasks/5368130) https://github.com/odoo/o-spreadsheet/commit/3afa12f85 [IMP] export: export align left when the cell content is a number; [Task: 5368130](https://www.odoo.com/odoo/2328/tasks/5368130) Co-authored-by: Florian Damhaut (flda) <flda@odoo.com> Co-authored-by: Anthony Hendrickx (anhe) <anhe@odoo.com> Co-authored-by: Alexis Lacroix (laa) <laa@odoo.com> Co-authored-by: Lucas Lefèvre (lul) <lul@odoo.com> Co-authored-by: Adrien Minne (adrm) <adrm@odoo.com> Co-authored-by: Ronak Mukeshbhai Bharadiya (rmbh) <rmbh@odoo.com> Co-authored-by: Dhrutik Patel (dhrp) <dhrp@odoo.com> Co-authored-by: Rémi Rahir (rar) <rar@odoo.com> Co-authored-by: Pierre Rousseau (pro) <pro@odoo.com> Co-authored-by: Vincent Schippefilt (vsc) <vsc@odoo.com> Co-authored-by: Marceline Thomas (matho) <matho@odoo.com>
This update ensures that the cost of goods sold (COGS) is correctly reversed when creating a credit note after a downpayment on an invoice. Previously, the system didn't properly account for the downpayment, leading to incorrect journal entries. This fix addresses a discrepancy in how downpayment credit notes are processed.
Original PR description
this PR is a backport of https://github.com/odoo/odoo/pull/226809 **Problem:** When we do a downpayment on an invoice then pay the rest and do a credit note, the credit note does not reverse the cogs…
this PR is a backport of https://github.com/odoo/odoo/pull/226809 **Problem:** When we do a downpayment on an invoice then pay the rest and do a credit note, the credit note does not reverse the cogs **Steps to reproduce:** - create a storable product invoiced on ordered quantity - set the category of the product as avco and "inventory valuation" of the category as automated - set an onhand quantity and a positive cost - create a SO for 1 quantity of this product and confirm - click on create invoice, select downpayment percentage and 25% - click on create draft and confirm it - click on create invoice, select regular, create draft - confirm and select credit note - write something in the reason field and click on reserve - confirm it **Current behavior:** if you open the "Journal Items" page of the credit note you'll see that there is no line revresing the cogs (there would be if we didn't do a downpayment but invoiced all at once) **Expected behavior:** There should be: - A line crediting "600000 Expenses" (or the account that was debited for the cogs on the original invoice) with the amount being the cost of your product. - A line debiting "110300 stock interim (delivered)"(or the account that was credited for the cogs on the original invoice) with the amount being the cost of your product. **Cause of the issue:** Since this commit https://github.com/odoo/odoo/pull/163251/commits/d7b0510908d341c205461ca18b1730c93b88e445 (slightly modfified for efficieny reasons by this commit https://github.com/odoo/odoo/pull/186486/commits/b819ee9570faa17ea143a1b924bce995ded89f6f), when _stock_account_prepare_anglo_saxon_out_lines_vals is called on the account move (the credit note) it calls _get_anglo_saxon_price_ctx. https://github.com/odoo/odoo/blob/20d96c54b795b8d617776afe9877fb5c6632c666/addons/stock_account/models/account_move.py#L116 One of the invoice lines of the account move is linked via sale_line_ids attribute to a sale order line that is a downpayment. As a consequence, inside _get_anglo_saxon_price_ctx, move_is_downpayment will be populated with this line. https://github.com/odoo/odoo/blob/20d96c54b795b8d617776afe9877fb5c6632c666/addons/sale_stock/models/account_move.py#L136-L139 Then _stock_account_prepare_anglo_saxon_out_lines_vals calls _stock_account_get_anglo_saxon_price_unit. https://github.com/odoo/odoo/blob/20d96c54b795b8d617776afe9877fb5c6632c666/addons/stock_account/models/account_move.py#L133 Inside this method, because move_is_downpayment is populated, is_line_reversing will stay false https://github.com/odoo/odoo/blob/20d96c54b795b8d617776afe9877fb5c6632c666/addons/sale_stock/models/account_move.py#L173-L174 As a consequence, - qty_to_invoice will become - qty_to_invoice - account_move will be populated - therefore posted_cogs will be populated https://github.com/odoo/odoo/blob/20d96c54b795b8d617776afe9877fb5c6632c666/addons/sale_stock/models/account_move.py#L176-L184 So _compute average price will be called with a qty_invoiced of 1 instead of 0 and a qty_to_invoice of -1 instead of 1. So it will return 0 instead of the cost of the product because "missing" will be negative. https://github.com/odoo/odoo/blob/20d96c54b795b8d617776afe9877fb5c6632c666/addons/stock_account/models/product.py#L842 **fix** The use case of this commit https://github.com/odoo/odoo/pull/163251/commits/d7b0510908d341c205461ca18b1730c93b88e445 is this one : - SO for qty of 10 (product invoiced on delivered qty). - 100% downpayment. - deliver 6. - invoice. In that case the invoice is actually a credit note but it still has to include the cogs (not reversed), so move_is_downpayment needs to be populated However in our use case the cogs has to be reversed (so move_is_downpayment has to be None). One difference between those two use case is that in our use case the account move has a reversed_entry_id. opw-5423517
This update resolves an issue that prevented users from exporting SAFT reports for Austrian companies when no contact information was defined. Previously, the system would generate an error message. Now, the SAFT export process functions correctly, ensuring accurate reporting for all Austrian businesses.
Original PR description
[FIX] l10n_at_saft: saft export traceback When no contacts is defined on the company and the user tries to download the SAFT to XML, a traceback is shown Steps to reproduce the traceback: - Install l10n_at_saft module and create an Austrian company with no contacts - Create a few invoices for this company - Open the General Ledger report and export SAFT to XML, the traceback should appear no-task
This update corrects a bug in how the system determines if a stock location is a sub-location of another. The fix replaces a potentially misleading comparison with a more reliable method, preventing errors in location-based processes. This ensures more accurate stock management and avoids potential test failures.
Original PR description
Previously, in the `_isSublocation`, to check if a location was a children of another location, we did that: ```javascript return childLocation.parent_path.includes(parentLocation.parent_path); ```…
Previously, in the `_isSublocation`, to check if a location was a children of another location, we did that: ```javascript return childLocation.parent_path.includes(parentLocation.parent_path); ``` The issue with that is, if locations' id are aligned, they can match even if they are not related. For example, imagine tested child location has ID 127 and the parent location has ID 7, we then check their `parent_path` (for example, '4/127/' for the child location and '7/' for the parent location), it can happen the child parent path can include the parent's parent path (in our example, '4/127/' includes '7/'.) To fix that, this commit replaces `includes` with `indexOf`, the result of the `indexOf` should always be 0 if the child location is indeed a sublocation of the parent location. Because of this issue, the second run of the tour `test_put_in_pack_new_lines` could sometime fail when the locations IDs are aligned. runbot build error: [233292](https://runbot.odoo.com/odoo/runbot.build.error/233292) Forward-Port-Of: odoo/enterprise#104350
This update resolves a bug where imported sales orders containing kit products were incorrectly splitting items into individual lots, causing problems within the Point of Sale (POS) system. The change prevents this splitting behavior when a kit product is sold, ensuring accurate POS transactions. This improves the reliability of sales processing.
Original PR description
When a kit product with tracked components is sold, and if the kit is tracked by lots, the imported sale order lines were being split by lots causing issues in the POS session. Although kits are not supposed to be tracked by lots, this commit prevents the splitting of sale order lines by lots when the product is a kit. opw-5423833 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
A technical issue with WebKit (the browser engine) was preventing users from properly scanning barcodes on iOS. This resulted in a white square obscuring the scanning area. This update resolves the problem by addressing the underlying WebKit bug, ensuring accurate barcode scanning for iOS users.
Original PR description
Issue ----- There is an issue in WebKit with mix-blend-mode https://bugs.webkit.org/show_bug.cgi?id=286619 Because of this issue, in barcode, the user gets a solid white square over the scanning zone, so they don't see the barcode being scanned. ----- Ticket: opw-5386846 Forward-Port-Of: odoo/odoo#243486
This update resolves a technical error that occurred when users clicked the back button after adding a video to a course using the website_slides module. The issue stemmed from a conflict between the template and how the system rendered elements, preventing a smooth user experience. This fix ensures consistent functionality and avoids potential disruptions for users.
Original PR description
Steps to reproduce: 1. install `website_slides` 2. Go to any course and click `Add content` > `Video` 3. Click on back button Issue: - When only website_slides is installed a traceback occurs `Error: The rendered template 'website.slide.upload.modal.select' contains multiple root nodes that will be ignored using renderToElement, you should consider using renderToFragment or refactoring the template.` Cause: - The template `website.slide.upload.modal.select` contains multiple root elements, but the code uses `renderToElement`, which expects a single root element. https://github.com/odoo/odoo/blob/4876a54e8cfb3a115b5423db102fc2b7a40b196a/addons/website_slides/static/src/xml/website_slides_upload.xml#L15-L36 Solution: - wrap template's elements inside a div opw-5457124
Documentation and clarification updates
This pull request confirms the developer has signed a Contributor License Agreement (CLA) for Odoo. This ensures compliance with Odoo's open-source licensing and legal requirements. The change is a standard documentation update related to the CLA process.
Original PR description
I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr