Daily updates from Odoo
Monday, March 16, 2026
144 changes
8 changes
Enhancements to existing features
This update simplifies report filtering by default, removing the unnecessary journal filter. Now, when a ledger exists, users will automatically see a dropdown menu to select the specific ledger, ensuring all relevant financial data is accessible without manual adjustments. This enhances report usability and clarity.
Original PR description
On the majority of reports, the journal filter is not necessary by default. But we need to still show the ledgers, independently of the journals. So when the journal filter is disabled, but a ledger exists, show a dropdown menu with the ledgers. task-6032881
Resolved issues and error corrections
This update fixes an issue preventing Point of Sale orders from correctly displaying product names on invoices. The team partially reverted a previous change that was causing a conflict, ensuring product names are now accurately shown. This improves the clarity and accuracy of sales invoices.
Original PR description
Steps to reproduce: ------------------- * Go to point of sale * Open list of orders * Select any order > Traceback Why the fix: ------------ Partially reverting https://github.com/odoo/odoo/commit/937363e5786eeab02b06c2dc63e1d9e743fc1874 as it broke a widget. Pos order are using this widget but the dependency on the field `translated_product_name` makes it impossible to open any order in the backend as this field does not exist on pos order line model. We're only partially reverting the fix to keep the computed fields. This will allow to properly fix the original issue without requiring an exception later. opw-6040334 Forward-Port-Of: odoo/odoo#254158
This update fixes an issue where the website tour failed after menu updates. The fix ensures the tour waits for new menu items to fully load before proceeding, preventing the builder sidebar from not opening. This improves the user experience for website builders.
Original PR description
__Before commit__ Since the delay between tour steps was removed [1], this tour fails frequently. After saving menus, the page reloads, but the tour attempts to click the edit button before the reload completes, preventing the builder sidebar from opening. __Fix__ Wait for the five new menu items to appear to ensure they have been saved and the page has successfully reloaded before proceeding. [1]: https://github.com/odoo/odoo/commit/769b193 runbot-237842
A test was failing due to a mismatch between the user's language setting (French) and the content of a tour designed for English. This commit resolves the issue, ensuring the test now passes correctly and preventing potential display problems in the web studio.
Original PR description
Before this commit, a test set the language of the user to French and then opened the browser with that user and that language. The tour in question, written for English failed. After this commit, the tour doesn't fail runbot-error-241983
This update fixes a minor issue within the Point of Sale course preparation tour. By adding specific steps, the tour now reliably triggers the necessary courses, ensuring users are properly guided through the setup process. This improves the onboarding experience and reduces potential confusion.
Original PR description
In this commit: --- - Add steps in the tour to ensure courses are correctly triggered. runbot-241931 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This update fixes a confusing issue where draft payslip PDFs remained in the foreground after payrun validation. The change ensures payslips are correctly marked for PDF generation, and updates the default attachment to resolve the display problem. This improves clarity for users receiving payslip reports.
Original PR description
When creating a payrun and using the Test Print button, the pdfs with the yellow banner saying that the payslip is still draft are generated correctly. When validating the payrun a cron runs to generate the real pdfs. In 19.2 there is a preliminary problem (fixed here) where the payslips are not marked for pdf creation and therefore are not taken by the cron (in master they are correctly marked for it). After that, the pdfs are correctly computed but the pdf in the foreground remains the draft one, generating confusion. With this PR we also change the default attachment when we generate de final pdf, solving the problem. Task: 6023186
This update resolves a technical limitation in the Odoo Report Editor, preventing users from applying properties to fields selected within the /field command. Previously, this functionality was inconsistent, leading to issues with report customization. This change ensures proper field selection and improves report editing capabilities.
Original PR description
Properties are not supported in ir.qweb but only as t-out, while t-field doesn't support them. For this reason and the fact that properties have a path the model field selector barely handles we do not allow those field to be selected in the /field command task-5999790 Forward-Port-Of: odoo/enterprise#110409 Forward-Port-Of: odoo/enterprise#109486
This update fixes an issue where the default account used for landed costs on invoices was incorrect, leading to inaccurate financial reporting. The fix ensures the correct stock valuation and expense accounts are used, aligning with how landed costs are handled for standard purchases. This improves the accuracy of financial statements.
Original PR description
**Problem:** the default account suggested for landed cost (with real time category) are not the good ones. **Steps to reproduce:** - create a storable product with perpetual average category -…
**Problem:** the default account suggested for landed cost (with real time category) are not the good ones. **Steps to reproduce:** - create a storable product with perpetual average category - create a landed cost (a service product with 'is a landed cost' checked in the purchase tab) - create a category for the landed cost with perpetual valuation - confirm a purchase order for 10 quantity of the product with a unit price of 10 - validate the receipt - confirm quotation for 3 of the product, validate the delivery and confirm the invoice - create a bill for the purchase order - on the invoice lines, unhide the product column - add an invoice line with the landed cost product, for a quantity of 1 and a price of 10 - confirm the bill - click on create landed cost - select the receipt in the transfers field - validate - click on the journal entry on the landed cost form **Current behavior:** On the bill, for the landed cost : - stock valuation is debited of 10 - account payable is credited of 10 (which makes the total credit 110 for account payable) On the journal entry linked to the landed cost: - stock valuation is debited of 7 - stock valuation is credited of 7 So in total there is a debit of 10 in stock valuation and a credit of 10 in account payable. Which does not reflect that part of the products are out of stock. **Expected behavior:** If the expense account was used, both on the bill and on the landed cost, (which is already the case for landed cost with periodic category) the account move lines would be: On the bill : - Expense is debited of 10 - account payable is credited of 10 (which makes the total credit 110 for account payable) On the journal entry linked to the landed cost: - stock valuation is debited of 7 - Expense is credited of 7 So in the total there is : - a credit of 10 in account payable - a debit of 7 in stock valuation - a debit of 3 in expense This is what we want, because the debit of 7 in stock valuation reflect that we only increase the valuation by 7 because only 7 products are still in stock. The debit of 3 in expenses compensate for the cogs. Indeed when we invoiced the SO, the cogs where of 30 but, after the landed cost, valuation wise, the products actually exited the stock with a value of 33 total (11 each). **Cause of the issue:** For the bill: when you create the new account move line and enter the product, _compute_account_id is called to compute the default account for the line. In the stock override, _eligible_for_stock_account is called on the line https://github.com/odoo/odoo/blob/3542c542eac5b204e69a8dd6ae1907cfcef60af3/addons/stock_account/models/account_move_line.py#L18-L19 Because of the stock_landed_costs override, the return value is true https://github.com/odoo/odoo/blob/3542c542eac5b204e69a8dd6ae1907cfcef60af3/addons/stock_landed_costs/models/account_move.py#L78-L82 So the account is changed to stock valuation https://github.com/odoo/odoo/blob/3542c542eac5b204e69a8dd6ae1907cfcef60af3/addons/stock_account/models/account_move_line.py#L23-L24 For the landed cost: - if we create it by selecting 'create landed cost' on the bill : the account id is set in button_create_landed_cost https://github.com/odoo/odoo/blob/3542c542eac5b204e69a8dd6ae1907cfcef60af3/addons/stock_landed_costs/models/account_move.py#L34 -if we create the landed cost, from adjustment/landed cost and selecting new : the expense account is already selected **fix:** In both cases, the client can already manually set the accounts they want, the fix is about having the right default accounts. opw-5941753 Forward-Port-Of: odoo/odoo#253430 Forward-Port-Of: odoo/odoo#251766
1 change
Resolved issues and error corrections
This update resolves issues with the formatting of Dutch SBR and ICP reports, specifically correcting VAT tag values and date formats within the exported XML files. A cleanup helper has been added to improve the readability of these files for internal use.
Original PR description
Descriptions of the issues this commit addresses: The xbrli:identifier tags in the exported sbr and sbr icp files are wrong. They should always contain the company's vat without country code . The DateTimeCreation tag currently shows a date in a wrong format. It it YYYYMMDDhhmm but should be YYYY-MM-DDThh:mm:ss. Also the outputted xml is weirdly indented with many whitespaces and it makes it hard to read for no reason. --- Desired behavior after the commit is merged: This commit changes the values in the exported file to address those issues and adds the use of a cleanup helper to make the file human readable. --- task-5998939 Forward-Port-Of: odoo/enterprise#109359
15 changes
New functionality added to Odoo
This update adds comprehensive tests to ensure the smooth synchronization of Gelato products between our systems and Odoo, as well as the accurate processing of Gelato product purchases. These tests improve the reliability and stability of the Gelato integration, contributing to a better customer experience.
Original PR description
Tests for synchronizing Gelato products with Odoo and buying Gelato products are added. task-4527206 Forward-Port-Of: odoo/odoo#244752
This update enables the creation of UBL (Universal Business Language) receipts from Point of Sale (PoS) orders, supporting electronic invoice requirements. The changes include adding UBL 2.1 invoice templates and handling vendor bill details, improving compliance with international standards. This enhancement simplifies the process of generating compliant invoices for sales transactions.
Original PR description
task: 4038651 Forward-Port-Of: odoo/odoo#209578
This update enables direct electronic invoicing for POS sales and returns in Colombia, streamlining the process for businesses. It adapts existing DIAN EDI functionality to work with POS data, reducing manual invoice creation and improving compliance. This change is crucial for businesses operating in Colombia to meet DIAN requirements efficiently.
Original PR description
In Colombia, all POS Sales/Returns must be supported by an Electronic Document. Currently, the only way to connect the DIAN EDI and POS flows is to manage invoices directly in the Accounting App.…
In Colombia, all POS Sales/Returns must be supported by an Electronic Document. Currently, the only way to connect the DIAN EDI and POS flows is to manage invoices directly in the Accounting App. This pr adds the possibility to generate and send the electronic documents directly to DIAN without leaving the POS store. This pr will not create intermediate invoices/credit notes that are supposed to be sent to DIAN, instead we adapted the already existing ubl-generation implementation (in `l10n_co_dian`) to be able to generate the correct files using data from `pos.order` models (implementation can be found in `models/account_edi_xml_ubl_dian.py`). During this process we created some 'common' functions that generate data for the ubl file independent of what model is used (`account.move` or `pos.order`), these common functions are a first step for the future refactoring of the ubl models. An important thing to note here is that the common functions are only used for the pos orders, generating documents for invoices is still done using the original implementation. Another important feature of this implementation is the possibility to share a single sequence, defined on the journal, between pos orders and account moves. This was implemented because in Colombia (and other latam countries) the sequence gets assigned to a company by the government, and can therefore be expensive. Important to note is that sharing a sequence is only possible if the company has never sent documents to DIAN before (~ no existing edi documents). task-4038651 Forward-Port-Of: odoo/enterprise#78742
Resolved issues and error corrections
This update resolves a limitation in the Odoo Enterprise system by enabling users to select 'Other Expenses' as a valid expense account option when creating loans. Previously, this option was restricted, which could have prevented accurate tracking of certain loan expenses. This change improves the flexibility and accuracy of loan expense reporting.
Original PR description
Allow accounts with the "Other Expenses" type to be selected in the Expense Account field of Loans. task-5946452
This update prevents users from copying data directly from the public Odoo spreadsheet. Previously, users could easily copy and paste information, which posed a risk to data integrity and consistency. This change ensures that data within the spreadsheet remains controlled and accurate.
Original PR description
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
This update fixes an issue where unbuilding a manufactured order resulted in invalid stock move lines. The fix ensures accurate quantity calculations, preventing backorders and allowing the system to properly process unbuild requests when more product is unbuilt than originally manufactured. This improves the reliability of the MRP process.
Original PR description
# How to reproduce - Create a BOM for a product - Create a MO for a set quantity (Exemple: 1) for that product - Unbuild that MO and ask to unbuild more than what was manufactured (Exemple: 3) -…
# How to reproduce - Create a BOM for a product - Create a MO for a set quantity (Exemple: 1) for that product - Unbuild that MO and ask to unbuild more than what was manufactured (Exemple: 3) - Confirm the unbuild - Go to the stock moves of that unbuild via the smart button # The problem 3 stock move lines are created, 2 in the 'Done' state and 1 in the 'Available' state. This last move line is stuck and cannot be validated # Why The cause of this issue is due to a discrepency between the quantity set for the move lines and the quantity set for their respective moves. When creating the move lines for the produce move, we use the original move of the MO (this is done to keep Lots consistent). If the quantity of product to unbuild is more than the quantity of product built by the MO, the quantity of the move lines will be less than expected. This will then create a backorder when the produce move is set to done. This backorder will then be unvalidatable because the unbuild it is linked to will be set to 'Done'. opw-5915981 opw-5449109 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#248056
This update addresses a persistent issue where temporary report files were accumulating on systems due to a misconfigured test. The root cause was a test that didn't properly clean up these files, leading to unnecessary storage usage. This fix ensures reports are cleaned up correctly during testing and operation.
Original PR description
Followup to #253053 which assumed it was some sort of race in the report code which would sometimes fail to cleanup the temp files, but after hitting a test failure in #253816 the true culprit was revealed: it was the test #186547 added all along and I didn't even think to run it! Because `test_report_error_cleanup` mocks the `os.unlink` call the `os.unlink` call never happens during that test, so none of the temporary files get deleted, and this is what added a full set of report files to my /tmp every day as I'd run the entire test suite in the morning. To be clear the race was still there and resolving it was reasonable it, but that was not the cause of the leftover temporary files, or if so extremely rarely. Forward-Port-Of: odoo/odoo#253853
This update resolves a performance issue where replacing background images in the media dialog could cause the website to hang. The fix replaces a fragile, slow regex-based approach with a more efficient method using CSSOM to remove transform styles. This improves website responsiveness and overall user experience.
Original PR description
__Before commit__ Transform-related CSS properties are removed from an image element by manipulating the raw `style` attribute string with a regex which is fragile and costly in performance. __Steps to reproduce (saas-19.2)__ This regex was added in [18.0][1] but is only a real issue since `resetImageTransformation` was called in `on_will_save_media_dialog_handlers` in [saas-19.2][2]: 1. Add a section block. 2. Add a background image. 3. Open the media dialog and replace the background image. => The website will hang for a while. __Fix:__ Use `.style.removeProperty()` instead to speed up the process and to make it less error prone. [1]: https://github.com/odoo/odoo/commit/85698bf4f591fc9280f054b9a255a7d [2]: https://github.com/odoo/odoo/commit/781c0ae77de01f0df8667e0191f6c34 Forward-Port-Of: odoo/odoo#253843
This update fixes a persistent problem where Chrome was creating unnecessary temporary files, leading to potential performance issues. By directing Chrome to use its temporary directory as its data directory and then cleaning up this directory during testing, we've eliminated this file clutter.
Original PR description
It's unclear since when or under what configuration exactly, but Chrome(ium?) seems prone to creating directories called `org.chromium.Chromium.*` (or some variant thereof) in the temp dir (some people report them to be prefixed by a `.`) and never clean them. By telling chromium that its tempdir is its data dir, it creates its litter in there, and we remove the entire thing during cleanup, solving the littering. Forward-Port-Of: odoo/odoo#253350
This update resolves an issue where adding attributes to archived product templates caused errors. The fix ensures all variants (active and archived) are considered, preventing template deletion and maintaining archived product options when a template is archived.
Original PR description
When adding attributes to an archived product template, an error was raised because the template was incorrectly deleted. This happened because variant counting only considered active variants. Now counts all variants (active and archived) to prevent template deletion, and filters variants before activation to keep them archived when their template is archived. @qrtl QT6449 Forward-Port-Of: odoo/odoo#252927
This update fixes an issue where follow-up emails were incorrectly sending a generic attachment instead of the actual invoice PDF. Now, the system automatically sends the correct invoice PDF, ensuring users receive the accurate documentation for their invoices. This improves the clarity and accuracy of invoice follow-up communications.
Original PR description
Before, the followup emails used the Invoice's main attachment. This is not correct because a user might have uploaded an arb PDF. Only the actual PDF should be sent. Use `invoice_pdf_report_id` instead of `message_main_attachment_id`. opw-5126420 Forward-Port-Of: odoo/enterprise#98820
This update fixes a usability issue on mobile devices when creating new loans. Previously, a button was hidden and difficult to access, requiring scrolling. The fix ensures a smoother, more intuitive experience for users creating loans on their smartphones or tablets.
Original PR description
Forward-Port-Of: odoo/enterprise#110120
This update resolves a critical issue where users could cancel documents after all parties had signed, potentially compromising legal records. Now, the cancel button disappears automatically after signing is complete, and backend cancellations are blocked to ensure document permanence and security. This strengthens legal proof of agreements and protects data integrity.
Original PR description
Before this commit, users could cancel documents after everyone had signed. This weakened legal records and proof of agreement. After this commit, the cancel button disappears once signing is complete. We also blocked backend cancellations to keep finished documents permanent and secure. task-5980337 Forward-Port-Of: odoo/enterprise#109353
Previously, when users uploaded multiple files to a WhatsApp Discuss channel, only the first file was delivered. This update corrects this issue by ensuring that all uploaded files are sent to the recipient. The fix prevents data loss and improves the reliability of file sharing within WhatsApp.
Original PR description
Multiple attachments uploaded simultaneously to a WhatsApp Discuss channel result in only the first being delivered to the recipient. ### Steps to reproduce 1. Drag and drop multiple files into a…
Multiple attachments uploaded simultaneously to a WhatsApp Discuss channel result in only the first being delivered to the recipient. ### Steps to reproduce 1. Drag and drop multiple files into a WhatsApp Discuss channel. 2. Send the message. -> Odoo shows all files, but only the first reaches the destination. ### Cause WhatsApp's API permits only one media object per message. Odoo's "Composer" enforces this by blocking uploads if an attachment is already present. However, it only evaluates the *current* state; dropping multiple files into an empty composer passes the check because the count is zero. On the server, the WhatsApp backend (constrained by the API) is hardcoded to send only the first attachment, silently discarding the rest. ### Fix Updated frontend validation to inspect the incoming file list during drop and paste actions. The process is now blocked if the total of existing plus incoming files exceeds one, ensuring the user is notified and preventing silent data loss. opw-5889035 Forward-Port-Of: odoo/enterprise#107424
This update fixes errors in the Dutch SBR and ICP report exports, specifically correcting incorrect VAT identifiers and date formats. It also cleans up the XML formatting for improved readability, ensuring accurate reporting for tax compliance.
Original PR description
Descriptions of the issues this commit addresses: The xbrli:identifier tags in the exported sbr and sbr icp files are wrong. They should always contain the company's vat without country code . The DateTimeCreation tag currently shows a date in a wrong format. It it YYYYMMDDhhmm but should be YYYY-MM-DDThh:mm:ss. Also the outputted xml is weirdly indented with many whitespaces and it makes it hard to read for no reason. --- Desired behavior after the commit is merged: This commit changes the values in the exported file to address those issues and adds the use of a cleanup helper to make the file human readable. --- task-5998939 Forward-Port-Of: odoo/enterprise#109359
2 changes
Resolved issues and error corrections
Previously, when users uploaded multiple files to a WhatsApp Discuss channel, only the first file was successfully delivered. This update corrects this issue by ensuring that Odoo now properly handles multiple attachments, preventing data loss and improving the reliability of file sharing within WhatsApp. The fix prevents the system from silently discarding additional files.
Original PR description
Multiple attachments uploaded simultaneously to a WhatsApp Discuss channel result in only the first being delivered to the recipient. ### Steps to reproduce 1. Drag and drop multiple files into a…
Multiple attachments uploaded simultaneously to a WhatsApp Discuss channel result in only the first being delivered to the recipient. ### Steps to reproduce 1. Drag and drop multiple files into a WhatsApp Discuss channel. 2. Send the message. -> Odoo shows all files, but only the first reaches the destination. ### Cause WhatsApp's API permits only one media object per message. Odoo's "Composer" enforces this by blocking uploads if an attachment is already present. However, it only evaluates the *current* state; dropping multiple files into an empty composer passes the check because the count is zero. On the server, the WhatsApp backend (constrained by the API) is hardcoded to send only the first attachment, silently discarding the rest. ### Fix Updated frontend validation to inspect the incoming file list during drop and paste actions. The process is now blocked if the total of existing plus incoming files exceeds one, ensuring the user is notified and preventing silent data loss. opw-5889035 Forward-Port-Of: odoo/enterprise#107424
This update resolves issues with the formatting of Dutch SBR and ICP export files, specifically correcting incorrect VAT identifiers and date formats. A cleanup process has been added to improve the readability of the XML files, ensuring accurate reporting for Dutch tax compliance.
Original PR description
Descriptions of the issues this commit addresses: The xbrli:identifier tags in the exported sbr and sbr icp files are wrong. They should always contain the company's vat without country code . The DateTimeCreation tag currently shows a date in a wrong format. It it YYYYMMDDhhmm but should be YYYY-MM-DDThh:mm:ss. Also the outputted xml is weirdly indented with many whitespaces and it makes it hard to read for no reason. --- Desired behavior after the commit is merged: This commit changes the values in the exported file to address those issues and adds the use of a cleanup helper to make the file human readable. --- task-5998939 Forward-Port-Of: odoo/enterprise#109359
9 changes
Resolved issues and error corrections
This update fixes an issue where manually adjusted lot quantities during manufacturing order production weren't accurately reflected. The change ensures that the specified quantity on the move line is correctly consumed from the lot, preventing discrepancies in stock levels. This improves the reliability of production tracking.
Original PR description
**Issue** Lots manually indicated on stock move lines can be overridden when producing a Manufacturing Order. **Steps to reproduce** - Create a storable product P tracked by lot - Create two lots for…
**Issue** Lots manually indicated on stock move lines can be overridden when producing a Manufacturing Order. **Steps to reproduce** - Create a storable product P tracked by lot - Create two lots for product P with 2 units each - Create a MO for a product consuming two units P and confirm it - On the raw move, manually set 1 unit for each lot - Click on "Produce All" - Check the move line associated to the product P -> 2 units associated to the first lot consumed instead of 1 unit each **Cause** While producing: https://github.com/odoo/odoo/blob/0fe2023dc57b6cc02bd399d3c8fc5d6c8ed6e833/addons/mrp/models/mrp_production.py#L2109-L2110 It sets the quantities: https://github.com/odoo/odoo/blob/0fe2023dc57b6cc02bd399d3c8fc5d6c8ed6e833/addons/mrp/models/mrp_production.py#L2246 This calls `_set_quantity_done_prepare_vals` with a qty of 2: https://github.com/odoo/odoo/blob/0fe2023dc57b6cc02bd399d3c8fc5d6c8ed6e833/addons/stock/models/stock_move.py#L2264 which will, for each move line: - Take the quantity indicated by move line: https://github.com/odoo/odoo/blob/0fe2023dc57b6cc02bd399d3c8fc5d6c8ed6e833/addons/stock/models/stock_move.py#L2274 https://github.com/odoo/odoo/blob/0fe2023dc57b6cc02bd399d3c8fc5d6c8ed6e833/addons/stock/models/stock_move.py#L2296-L2297 - Then take all the available quantity left for the lot associated to the move line: https://github.com/odoo/odoo/blob/0fe2023dc57b6cc02bd399d3c8fc5d6c8ed6e833/addons/stock/models/stock_move.py#L2302-L2309 https://github.com/odoo/odoo/blob/0fe2023dc57b6cc02bd399d3c8fc5d6c8ed6e833/addons/stock/models/stock_move.py#L2326-L2327 Instead of first taking all the quantity indicated by the move line, before checking available quantity **Solution** Assume that move lines being created in mrp without changing the producing quantity are manually created opw-[5946439](https://www.odoo.com/web#id=5946439&view_type=form&model=project.task)
This update fixes an issue where manually adjusted lot quantities during manufacturing order production were not accurately reflected. The change ensures that the specified lot quantity is correctly consumed first, resolving discrepancies in product tracking. This improves the reliability of inventory management within the manufacturing process.
Original PR description
**Issue** Lots manually indicated on stock move lines can be overridden when producing a Manufacturing Order. **Steps to reproduce** - Create a storable product P tracked by lot - Create two lots for…
**Issue** Lots manually indicated on stock move lines can be overridden when producing a Manufacturing Order. **Steps to reproduce** - Create a storable product P tracked by lot - Create two lots for product P with 2 units each - Create a MO for a product consuming two units P and confirm it - On the raw move, manually set 1 unit for each lot - Click on "Produce All" - Check the move line associated to the product P -> 2 units associated to the first lot consumed instead of 1 unit each **Cause** While producing: https://github.com/odoo/odoo/blob/0fe2023dc57b6cc02bd399d3c8fc5d6c8ed6e833/addons/mrp/models/mrp_production.py#L2109-L2110 It sets the quantities: https://github.com/odoo/odoo/blob/0fe2023dc57b6cc02bd399d3c8fc5d6c8ed6e833/addons/mrp/models/mrp_production.py#L2246 This calls `_set_quantity_done_prepare_vals` with a qty of 2: https://github.com/odoo/odoo/blob/0fe2023dc57b6cc02bd399d3c8fc5d6c8ed6e833/addons/stock/models/stock_move.py#L2264 which will, for each move line: - Take the quantity indicated by move line: https://github.com/odoo/odoo/blob/0fe2023dc57b6cc02bd399d3c8fc5d6c8ed6e833/addons/stock/models/stock_move.py#L2274 https://github.com/odoo/odoo/blob/0fe2023dc57b6cc02bd399d3c8fc5d6c8ed6e833/addons/stock/models/stock_move.py#L2296-L2297 - Then take all the available quantity left for the lot associated to the move line: https://github.com/odoo/odoo/blob/0fe2023dc57b6cc02bd399d3c8fc5d6c8ed6e833/addons/stock/models/stock_move.py#L2302-L2309 https://github.com/odoo/odoo/blob/0fe2023dc57b6cc02bd399d3c8fc5d6c8ed6e833/addons/stock/models/stock_move.py#L2326-L2327 Instead of first taking all the quantity indicated by the move line, before checking available quantity **Solution** Assume that move lines being created in mrp without changing the producing quantity are manually created opw-[5946439](https://www.odoo.com/web#id=5946439&view_type=form&model=project.task)
This update resolves a technical error that prevented users from placing lunch orders with vendors when a 'Until date' was set. The fix ensures the system correctly handles date comparisons, preventing a traceback and allowing users to successfully create orders. This improves order processing reliability.
Original PR description
Steps to reproduce: ------------------------------ 1. Install Lunch module 2. Lunch > configurations > Vendors 3. Open any vendor and set Until date to any near future date 4. Go to My Lunch > New Order 5. Click on Any product with above vendor > Add to Cart 6. Click on Order Now Observation: ------------------------------ Traceback Occurs: ``` return not (self.recurrency_end_date and date.date() >= self.recurrency_end_date) and self[fieldname] ^^^^^^^^^ AttributeError: 'datetime.date' object has no attribute 'date' ``` Issue: ------------------------------ `_available_on_date` calls `date.date()` unconditionally, which fails when passed a `datetime.date` object (from `lunch.order`) since date objects lack the `date()` method. Solution: ------------------------------ Check instance type before calling `date()` to handle both `datetime.datetime` and `datetime.date` objects correctly. opw-5948688
This update resolves duplicate notification popups and a critical error preventing push notification subscriptions. By updating Firebase configurations and ensuring proper service worker setup, the system now reliably delivers push notifications across browsers, enhancing the user experience.
Original PR description
When the user sends a push notification through Social Marketing, the application displays two notification popups because: 1. The Firebase SDK automatically displays a notification popup if the…
When the user sends a push notification through Social Marketing, the application displays two notification popups because: 1. The Firebase SDK automatically displays a notification popup if the request made to Firebase includes a `notification` field. 2. Our service worker displays a notification popup when receiving a background message from Firebase. To prevent duplicate notifications, we will remove the custom event listeners in the service worker and update the request made to Firebase so that the Firebase SDK opens a notification for us. Furthermore, this PR fixes the error `Failed to execute 'subscribe' on 'PushManager': Subscription failed - no active Service Worker` occurring when the user accepts the push notifications. To fix that issue, we will: 1. Ensure that the service worker reaches the `ready` state before communicating with it. 2. Set the service worker's scope to `/` so it controls all pages on the origin, ensuring push subscriptions succeed and the worker can communicate with any page. Finally, we will use the legacy `importScripts` syntax to load Firebase dependencies because the ECMAScript module syntax is not supported for service workers in Firefox. This approach improves push notification compatibility across browsers. Task-5124645 Forward-Port-Of: odoo/enterprise#96029
This update fixes errors in the Dutch SBR report exports, specifically correcting VAT identifiers and date formats. It also cleans up the XML formatting for improved readability, ensuring accurate and easily understandable reports.
Original PR description
Descriptions of the issues this commit addresses: The xbrli:identifier tags in the exported sbr and sbr icp files are wrong. They should always contain the company's vat without country code . The DateTimeCreation tag currently shows a date in a wrong format. It it YYYYMMDDhhmm but should be YYYY-MM-DDThh:mm:ss. Also the outputted xml is weirdly indented with many whitespaces and it makes it hard to read for no reason. --- Desired behavior after the commit is merged: This commit changes the values in the exported file to address those issues and adds the use of a cleanup helper to make the file human readable. --- task-5998939 Forward-Port-Of: odoo/enterprise#109359
This update ensures that the 'File' constructor in Odoo correctly identifies the MIME type of uploaded files, aligning with modern web standards. This change, prompted by a Chrome update, improves compatibility and prevents potential issues with file handling across different browsers.
Original PR description
The `type` option passed to the `File` constructor should be a string representing the MIME type of the content that will be put into the file. Chrome 146 actually follows the Fetch Standard and preserve the data URL MIME type parameter. This commit fixes the malformed MIME types passed to the `File` constructor to ensure proper compatibility with pre/post Chrome version 146 (and actually follow the spec). References: - https://chromestatus.com/feature/4874471565557760 - https://developer.mozilla.org/en-US/docs/Web/API/File/File#type runbot-241901 Forward-Port-Of: odoo/odoo#253631
This update ensures Odoo correctly handles file uploads, particularly in older versions of Chrome. The change fixes a technical issue related to MIME types, aligning with web standards and improving compatibility across different browsers. This ensures files are processed correctly and prevents potential display or functionality problems.
Original PR description
The `type` option passed to the `File` constructor should be a string representing the MIME type of the content that will be put into the file. Chrome 146 actually follows the Fetch Standard and preserve the data URL MIME type parameter. This commit fixes the malformed MIME types passed to the `File` constructor to ensure proper compatibility with pre/post Chrome version 146 (and actually follow the spec). References: - https://chromestatus.com/feature/4874471565557760 - https://developer.mozilla.org/en-US/docs/Web/API/File/File#type runbot-241901 Forward-Port-Of: odoo/enterprise#110496
This update addresses a potential issue where a new Odoo database could unintentionally create demo data, polluting the system. The change restricts the 'try our sample' option to the dashboard widget, reducing the risk of users adding unnecessary demo records. This improves data integrity and simplifies database setup.
Original PR description
When accessing the accounting module's dashboard on a new database, the bills widget displays the option to "try our sample" bill, which will create a contact record (Deco Addict), several products…
When accessing the accounting module's dashboard on a new database, the bills widget displays the option to "try our sample" bill, which will create a contact record (Deco Addict), several products and categories, and a vendor bill with this newly created demo data prepopulated. This option to "try our sample" not only exists on the bills widget in the Accounting dashboard on a fresh database, but exists in the bills list view if either there are no bills in the database, or if a search filter is applied such that the result set is empty. The implementation is problematic for two reasons: 1. It is not made clear to the user that several database models will be populated with demo data. 2. The "try our sample" button is presented to users outside of its intended context. The current implementation does not clearly communicate to the user that they will be creating real demo records in several models on their database, which would obviously pollute a production database. Being that we provide an explicit warning when demo data is enabled for the whole database, a similar confirmation seems appropriate in this case, which has been added. Additionally, it does not seem appropriate that the "try our sample" option should be present in the list view. This is because its intent is to allow the user to try the bill functionality in the case that their database does not have any data. When a user is in the list view, more often than not will users who have applied an invalid search filter on existing data be shown the option, rather than new users on a new database. This can cause accidental addition of demo data. By only presenting the option only in the dashboard widget, it is far more likely that this prompt is shown only in the intended context. Enterprise PR: https://github.com/odoo/enterprise/pull/93352 opw-4959767
This update addresses a potential issue where a new database would automatically create demo data, polluting the system. The change clarifies the 'try our sample' option's purpose and restricts its display to the dashboard, reducing the risk of unintended data creation. This ensures a cleaner, more controlled environment for new users.
Original PR description
When accessing the accounting module's dashboard on a new database, the bills widget displays the option to "try our sample" bill, which will create a contact record (Deco Addict), several products…
When accessing the accounting module's dashboard on a new database, the bills widget displays the option to "try our sample" bill, which will create a contact record (Deco Addict), several products and categories, and a vendor bill with this newly created demo data prepopulated. This option to "try our sample" not only exists on the bills widget in the Accounting dashboard on a fresh database, but exists in the bills list view if either there are no bills in the database, or if a search filter is applied such that the result set is empty. The implementation is problematic for two reasons: 1. It is not made clear to the user that several database models will be populated with demo data. 2. The "try our sample" button is presented to users outside of its intended context. The current implementation does not clearly communicate to the user that they will be creating real demo records in several models on their database, which would obviously pollute a production database. Being that we provide an explicit warning when demo data is enabled for the whole database, a similar confirmation seems appropriate in this case, which has been added. Additionally, it does not seem appropriate that the "try our sample" option should be present in the list view. This is because its intent is to allow the user to try the bill functionality in the case that their database does not have any data. When a user is in the list view, more often than not will users who have applied an invalid search filter on existing data be shown the option, rather than new users on a new database. This can cause accidental addition of demo data. By only presenting the option only in the dashboard widget, it is far more likely that this prompt is shown only in the intended context. Community PR: https://github.com/odoo/odoo/pull/224328 opw-4959767
9 changes
Enhancements to existing features
This update implements the latest withholding tax percentages for Ecuador, as mandated by a recent government resolution. The changes ensure Odoo accurately calculates and reports these taxes, maintaining historical data and compatibility with existing tax configurations. This update addresses specific naming inconsistencies and formatting issues for improved accuracy.
Original PR description
Implement the new withholding tax percentages according to "Resolución N.º NAC-DGERCGC26-00000009" for Ecuador, following internal implementation guidelines by TRESCLOUD. SPECIFICATION: - Created the new withholding percentages as new tax records. - Set the previous withholding percentages as inactive to preserve historical data. - Ensured compatibility with existing tax configurations and fiscal mappings. Table with the changes established in "Resolución N.º NAC-DGERCGC26-00000009". <img width="1676" height="303" alt="image" src="https://github.com/user-attachments/assets/79ae91b2-6d31-442f-af3c-74304742c8b6" /> BP: #252917
Resolved issues and error corrections
This update fixes an issue where invoices with exchange differences booked as write-offs were incorrectly fully reconciled even when the user chose to keep the invoice open for partial payment. The change ensures that the system accurately reflects the partial payment and exchange difference, preventing incorrect reconciliation and improving financial reporting.
Original PR description
Currently, if a user selects an exchange difference account as a write-off but then decides to keep the invoice open, the system still fully reconciles the invoice. Steps to reproduce: - Create an invoice in foreign currency - Click 'Register Payment' - Select company currency - Change the amount to a lower one - Select 'Mark as fully paid' - Add the exchange difference loss/gain account as write off account - Select 'Keep open' - Click 'Create payment' Issue: Even though the user selected the option to create a partial payment and keep the invoice open, it is totally reconciled with a difference booked in the selected exchange account. Analysis: This occurs because the use of the exchange account as write off account trigger a specific flow used in localization where a writeoff is not allowed. Once the payment registration process is ongoing, the system does not check that user kept the same choice on how to handle the payment difference. opw-5468052
This update resolves an issue causing duplicate push notification popups and a subscription error. By optimizing Firebase integration and ensuring the service worker is properly configured, the application now reliably delivers push notifications across browsers, enhancing the user experience.
Original PR description
When the user sends a push notification through Social Marketing, the application displays two notification popups because: 1. The Firebase SDK automatically displays a notification popup if the…
When the user sends a push notification through Social Marketing, the application displays two notification popups because: 1. The Firebase SDK automatically displays a notification popup if the request made to Firebase includes a `notification` field. 2. Our service worker displays a notification popup when receiving a background message from Firebase. To prevent duplicate notifications, we will remove the custom event listeners in the service worker and update the request made to Firebase so that the Firebase SDK opens a notification for us. Furthermore, this PR fixes the error `Failed to execute 'subscribe' on 'PushManager': Subscription failed - no active Service Worker` occurring when the user accepts the push notifications. To fix that issue, we will: 1. Ensure that the service worker reaches the `ready` state before communicating with it. 2. Set the service worker's scope to `/` so it controls all pages on the origin, ensuring push subscriptions succeed and the worker can communicate with any page. Finally, we will use the legacy `importScripts` syntax to load Firebase dependencies because the ECMAScript module syntax is not supported for service workers in Firefox. This approach improves push notification compatibility across browsers. Task-5124645 Forward-Port-Of: odoo/enterprise#96029
This update resolves a memory issue that occurred when filtering CRM leads, specifically when searching by email. The change disables prefetching of large fields like descriptions, preventing excessive data retrieval and potential 'MemoryError' crashes. This ensures smoother CRM performance, especially with large lead databases.
Original PR description
Use `with_context(prefetch_fields=False)` when evaluating `filtered('email_normalized')` to prevent the ORM from prefetching a large group of fields. This avoids fetching heavy fields such as…
Use `with_context(prefetch_fields=False)` when evaluating `filtered('email_normalized')` to prevent the ORM from prefetching a large group of fields. This avoids fetching heavy fields such as `description` for the whole batch, as by default all the stored fields share the same prefetch group.
which could lead to excessive memory usage and `MemoryError` during recomputation.
```sql
apan_3928644=> select pg_size_pretty(sum(pg_column_size(description))) from crm_lead where description is not null;
pg_size_pretty
----------------
18 GB
(1 row)
```
MemoryError faced with target db:
```py
File "/home/odoo/src/odoo/17.0/addons/crm/models/crm_lead.py", line 465, in _compute_email_domain_criterion
for lead in self.filtered('email_normalized'):
File "/home/odoo/src/odoo/17.0/odoo/models.py", line 6166, in filtered
return self.browse([rec.id for rec in self if func(rec)])
File "/home/odoo/src/odoo/17.0/odoo/models.py", line 6166, in <listcomp>
return self.browse([rec.id for rec in self if func(rec)])
File "/home/odoo/src/odoo/17.0/odoo/models.py", line 6165, in <lambda>
func = lambda rec: any(rec.mapped(name))
File "/home/odoo/src/odoo/17.0/odoo/models.py", line 6142, in mapped
recs = recs._fields[name].mapped(recs)
File "/home/odoo/src/odoo/17.0/odoo/fields.py", line 1293, in mapped
self.__get__(first(remaining), type(remaining))
File "/home/odoo/src/odoo/17.0/odoo/fields.py", line 1182, in __get__
recs._fetch_field(self)
File "/home/odoo/src/odoo/17.0/odoo/models.py", line 3824, in _fetch_field
self.fetch(fnames)
File "/home/odoo/src/odoo/17.0/odoo/models.py", line 3874, in fetch
fetched = self._fetch_query(query, fields_to_fetch)
File "/home/odoo/src/odoo/17.0/odoo/models.py", line 3967, in _fetch_query
rows = self.env.cr.fetchall()
MemoryError
```
---
I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-prThis update ensures our Ecuadorian accounting software accurately reflects the latest withholding tax regulations (Resolución N.º NAC-DGERCGC26-00000009) issued by the Ecuadorian government. The changes involve updating unit tests to use the correct withholding percentages for 2026, ensuring accurate reporting and compliance.
Original PR description
In accordance with the implementation of the new withholding tax percentages according to "Resolución N.º NAC-DGERCGC26-00000009" for Ecuador, following internal implementation guidelines by TRESCLOUD. Unit tests are updated to be based on the new withholding percentages. BP #110343
This update fixes errors in the Dutch SBR report exports, specifically correcting VAT identifiers and date formats. It also cleans up the XML formatting for improved readability, ensuring accurate and easily understandable reports.
Original PR description
Descriptions of the issues this commit addresses: The xbrli:identifier tags in the exported sbr and sbr icp files are wrong. They should always contain the company's vat without country code . The DateTimeCreation tag currently shows a date in a wrong format. It it YYYYMMDDhhmm but should be YYYY-MM-DDThh:mm:ss. Also the outputted xml is weirdly indented with many whitespaces and it makes it hard to read for no reason. --- Desired behavior after the commit is merged: This commit changes the values in the exported file to address those issues and adds the use of a cleanup helper to make the file human readable. --- task-5998939 Forward-Port-Of: odoo/enterprise#109359
This update fixes a bug that caused product variant combinations to get stuck in an infinite loop under specific attribute configurations. The change ensures the algorithm correctly progresses through options, preventing repeated, incorrect results. This improves the reliability of product configuration and reduces potential errors.
Original PR description
ISSUE: When generating product variant combinations, the cartesian product algorithm enters an infinite loop whenever the attribute lines follow the pattern: non-empty → empty → non-empty. In this…
ISSUE: When generating product variant combinations, the cartesian product algorithm enters an infinite loop whenever the attribute lines follow the pattern: non-empty → empty → non-empty. In this case, the DFS backtracking logic incorrectly returns to the empty middle line, which always forwards execution to the next line instead of propagating the backtrack upward. This causes the search to oscillate between the empty line and the deeper non-empty line, never allowing the first line to advance to its next value and repeatedly yielding the same combinations. FIX: This fix introduces a minimal, localized change: during backtracking, the algorithm now skips backward over empty attribute lines until it reaches a line that actually has selectable values (or reaches the root). This preserves all existing behavior, avoids altering the core iteration logic, and ensures that the DFS always makes progress and terminates properly. The change avoids modifying exclusion logic or altering the order of generated combinations. It simply ensures that empty intermediate lines do not trap the state machine in a loop. opw-5231175
This update ensures that customers download attachments from the customer preview of Sale Orders with the correct file name. Previously, the file name was inconsistent when downloading through the portal compared to the standard Sale Order form. This change improves the customer experience and data integrity.
Original PR description
Issue --> On the customer preview of a Sale Order, when the customer selects `View Details`, an attachment is opened on a new tab, and upon downloading it, the file name is different than if the report was downloaded via the Sale Order form view. Solution --> Add the `inline` option to the 'Content-Disposition' response header so that the file name is added in the case that a customer decides to download the attachment from the attachment preview. opw-4091262
This update resolves a problem where the system was incorrectly referencing a group of records instead of a single company record. This prevented proper processing of tax-related data for the l10n_be_codabox module. The fix ensures accurate data handling for this specific Odoo module.
Original PR description
We incorrectly used the recordset `self` instead of the record `company` This commit fixes this. Backport of PR https://github.com/odoo/enterprise/pull/94289 opw-6034633