Daily updates from Odoo
Wednesday, February 4, 2026
17 changes · master
Enhancements to existing features
This update ensures that sales exceeding USD 50 for 'Consumidor Final' customers in Odoo's Ecuador POS comply with local regulations. It prevents users from finalizing transactions above the legal limit, forcing them to select the correct customer and avoid potential issues with tax reporting (SRI).
Original PR description
PURPOSE - Enforce SRI rules for unidentified consumer invoicing in Ecuador - POS users in Ecuador cannot finalize a sale above the legally allowed limit (currently USD 50) using the default “Consumidor Final” customer with 'RUC' identification type and '9999999999999' VAT - When the sale exceeds the threshold, the PoS must force the user to select the real customer. TECHNICAL DETAILS - A new monetary field 'Final Consumer Max Amount' has been added in pos.config, which can be set from the POS Settings. - In POS, on the order payment validation page, added one more validation. In which if the total price is greater than the amount set in the 'Final- Consumer Max Amount' field in the res settings, and if the order is for a 'Consumidor Final' and if the to_invoice is True, then block the user from validating the payment by showing a relevant alert. Related Com PR: https://github.com/odoo/odoo/pull/237498 Task-5266304
This update enhances product BOM tracking by including the BOM version within the 'Used In' list, mirroring changes made in the community version. This provides better visibility and simplifies tracking of product components across different BOM versions.
Original PR description
To support the updated "Used In" list of BoMs for a product in community, we now also include the BoM version for easier tracking. Task: 4788617 Related: https://github.com/odoo/odoo/pull/212727
This update makes the top bar with embedded actions visible by default when a new audit file is created and opened for the first time. While user preferences can still control visibility later, this change provides a more intuitive starting experience for users working with audit files. This improves usability and efficiency.
Original PR description
Currently, the top bar (embedded actions) in Working Files in audit is not visible by default when the user creates and opens it for the first time. This commit makes it visible when the Audit is created and opened for the first time, later on the visibility is decided as per the user preferences set in the `res.users.settings.embedded.action` model. task-5388717 Forward-Port-Of: odoo/enterprise#101924
This update improves sales forecasting by displaying Monthly Recurring Revenue (MRR) within sales quotations. Previously, only recurring and non-recurring amounts were shown, making it difficult to accurately predict revenue targets. The MRR is now prominently displayed below the quotation totals, streamlining the sales process.
Original PR description
As a salesperson, I need to easily see the Monthly Recurring Revenue (MRR) of a subscription in the quotation so that I can forecast targets in the commission module. Currently, only the recurring and non-recurring amounts are shown, but the MRR is not displayed. The MRR is now shown below the totals in the quotation form. If the MRR is equal to the recurring amount, the recurring amount is hidden to avoid duplication. task-5436781
Resolved issues and error corrections
A client reported issues processing payments via Bankgiro (Swedish bank giro). This update corrects a typo and adjusts the order of data fields in payment processing, ensuring Bankgiro payments now function correctly. This resolves a reported payment failure.
Original PR description
After PR: https://github.com/odoo/enterprise/pull/104777 The client reported that payment with bankgiro account doesn't works. Here are the problems found: - Typo : Should be `RfrdDocAmt` instead of `RfdDocAmt` - RfrdDocAmt should be inserted before CdtrRefInf - CdtNoteAmt should be before RmtdAmt opw-5427505 Forward-Port-Of: odoo/enterprise#106272
This update resolves an issue where opening reports would cause a crash if a report action was triggered before the report data was fully loaded. The fix ensures that report actions can be reliably used during the report loading process, improving user experience and preventing unexpected errors.
Original PR description
When a report was loading if a reportAction was used and no report already was loaded before, it would crash. This happened because we tried to get the context from the data which were not yet loaded. To reproduce: - switch to debug mode (?debug=1) - add a 5s delay in _get_lines - when a report is opening, try to click on the settings cog that appear in debug mode Forward-Port-Of: odoo/enterprise#103636
This update prevents documents from automatically opening in a form view when accessed through various channels like direct links or systray notifications. Previously, users were unexpectedly directed to the document's form view, which has now been corrected to provide a smoother and more intuitive experience. This change improves usability and aligns with user expectations.
Original PR description
Users do not want to access the form view of the document by default. This PR solves three cases for accessing documents.document records that were not covered before: * From the basic path pattern `odoo/x/documents.document/<id>` * From a systray notification "Open Form View" * when we are not yet in Documents * when we already are in Documents * From the Discuss app, on the record's thread Tests for most of these are included. Additionally, make sure the document is selected on accessing from `_get_access_action`. Task-5386466 Forward-Port-Of: odoo/enterprise#106214 Forward-Port-Of: odoo/enterprise#104622
This update corrects an issue where uploading a new signature PDF would fail if the 'signature' item type (ID 1) was deleted. The problem stemmed from a recent change that created a dummy item for role recognition, leading to an error when no item type matched. This fix ensures smooth PDF uploads for signature creation.
Original PR description
steps to reproduce :
- delete the sign.item.type with id 1 ("signature")
- try to upload a new pdf to sign
The issue appears since PR 91189 that creates a dummy item to recognize roles that can be vacuumed.
Since the item type of the dummy item is irrelevant, we now just try to find the first one we can to fill in the dummy item with an Error if none is exists.
Forward-Port-Of: odoo/enterprise#106219
Forward-Port-Of: odoo/enterprise#106138This update resolves an issue where IoT reports generated from Point of Sale (PoS) were failing due to PoS using incorrect identifiers. The fix filters out reports that don't use integer IDs, specifically those using string UUIDs, as these are not needed for PDF report generation. This ensures reliable report printing.
Original PR description
Rendering IoT reports from PoS is failing because of PoS using string uuids as `res_ids`. As they are not required to render pdf reports, we filter them out. Forward-Port-Of: odoo/enterprise#106277
This update resolves a bug preventing users from validating barcode operations on stock pickings. The previous fix incorrectly blocked validation, and this change reverts to a reliable method using the JS framework's mutex mechanism to ensure sequential processing and prevent duplicate validation attempts. This ensures accurate stock tracking and avoids potential errors.
Original PR description
### Steps to reproduce: - In the settings enable: Multi-Steps route - Create a product tracked by SN - In the barcode app > Operations > Internal transfers > New - Scan you tracked product - Click on…
### Steps to reproduce: - In the settings enable: Multi-Steps route - Create a product tracked by SN - In the barcode app > Operations > Internal transfers > New - Scan you tracked product - Click on Validate > Invalid operation - Scan a Serial number #### > You can not click on validate anymore ### Cause of the issue: The issue has been introduced in 41c6e7a90fd4f0cf84e74cf0ed036f4da0ec6112 in a try to avoid concurrency issue when calling the barcode validation too quickly. To be more precise, this commit added a `isValidating` property to the barcode model that is set prior to the rpc call and suppose to remove after in order tobypass subsequence calls of the `validate` method when a call is already in progress: https://github.com/odoo/enterprise/blob/099c7b94ad08f83873c05ec528e16fbf806f47f2/stock_barcode/static/src/models/barcode_model.js#L477-L494 However, in the present case and since orm call returns an error the the call the validate method is interupted at this orm call and the line https://github.com/odoo/enterprise/blob/099c7b94ad08f83873c05ec528e16fbf806f47f2/stock_barcode/static/src/models/barcode_model.js#L494 is not executed so that the this.Validating stays true and the button can not be clicked nor executed anymore: https://github.com/odoo/enterprise/blob/099c7b94ad08f83873c05ec528e16fbf806f47f2/stock_barcode/static/src/models/barcode_model.js#L131-L133 ### Fix: We revert the incorrect fix: 42d77e751cb5e049ea1e81b44fca0d07e8f45b32 and we rather rely on the Mutex class of the JS framework just as done in the `_processBarcode`: https://github.com/odoo/enterprise/blob/099c7b94ad08f83873c05ec528e16fbf806f47f2/stock_barcode/static/src/models/barcode_model.js#L505-L507 This will ensure that the validation calls will be processed sequentially and since the `button_validate` of stock pickings is ignored on done pickings because of the first soft fix https://github.com/odoo/odoo/pull/204790 : https://github.com/odoo/odoo/blob/1664daf894ec878b64af8ab75c0d10f05e00df80/addons/stock/models/stock_picking.py#L1134-L1135 we have the guarantee that the records will not be validated twice. opw-5388297 Forward-Port-Of: odoo/enterprise#105542 Forward-Port-Of: odoo/enterprise#103835
This update fixes issues with how Odoo websites extract content, specifically addressing problems with robots.txt checks and content cleaning. The changes ensure accurate data collection from Odoo websites by refining noise removal and preventing errors in content extraction logic.
Original PR description
## Fix Summary - Include the instance's base URL in internal domains to allow bypassing robots.txt checks for sites that have no domain. - Fix the scraper's cleaning logic to prevent content containers deletion edge cases on Odoo websites. - Refine noise removal for Odoo websites (popups, cookie bars, etc.). Forward-Port-Of: odoo/enterprise#106237
This update resolves an issue where overtime approvals weren't consistently linked to attendance records. Previously, only one attendance was associated with overtime, leading to data inconsistencies. This fix ensures accurate tracking of overtime hours against all relevant attendance records, improving reporting and payroll accuracy.
Original PR description
…dance and overtime
STEP TO REPRODUCE:
------------------
1- Create an overtime rule with this configuration :
quantity rule differs from hours defined in the contract
2- Create two attendances on the same day (should be a worked day and should not be today)
one from 1AM-2PM
second from 2PM-undefined
3- Approve the overtime of the first attendance
REASON:
------
The link between overtime to attendance is not correctly done Attendance -> overtime (only the first attendance have a link with overtime) overtime, attendance -> the two will be returned
Forward-Port-Of: odoo/enterprise#106083
Forward-Port-Of: odoo/enterprise#105988This update fixes an issue where canceled refunds were incorrectly included in global invoices generated from Point of Sale orders. The fix filters out canceled refund lines during invoice generation, ensuring accurate reporting. This improves the reliability of financial data for Mexican VAT reporting (l10n_mx_edi_pos).
Original PR description
When generating global invoices for orders in the PoS, refund of those orders are also included in the global invoice. However, if the refund has been canceled, it should not be included in the global invoice. Steps to reproduce: ------------------- * Create a PoS order and validate it. * Go to the backend and create a refund for that order. * Cancel the refund. * Go to the PoS order list and select the original order * Click on "Generate Global Invoice" > Observation: The canceled refund is included in the global invoice. Why the fix: ------------ We simply filter out the canceled orders when searching for refunded order lines. opw-5492576 Forward-Port-Of: odoo/enterprise#106243 Forward-Port-Of: odoo/enterprise#105868
This update fixes an issue where the headers in the Gantt view were not staying in place while scrolling. The change restores the sticky header functionality, ensuring users can easily see and interact with the view's title, group headers, and column headers. This improves usability and data visibility within the Gantt chart.
Original PR description
Following DOM structure changes introduced in https://github.com/odoo/enterprise/pull/103230, the Gantt view title, group headers, and column headers lost their sticky behavior and would scroll out of view. This commit restores the sticky positioning by applying the `sticky-top` class to the relevant header elements. task-5896158
This update fixes an issue where malformed PDFs caused errors during the signature process. The system now attempts a more lenient PDF parsing method if the initial attempt fails, ensuring signatures can be processed more reliably. This improves the overall stability and functionality of the signature workflow.
Original PR description
Before this commit, opening some malformed PDFs failed during flattening because PyPDF2 strict parsing and form-field reads raised errors. After this commit, we try first parsing the PDF in the usual way and if we fail, we try again with strict=False. See https://pypdf.readthedocs.io/en/stable/user/robustness.html. task-5902859
The Odoo portal payment screen now displays a warning message when no payment providers are available, preventing the screen from scrolling to the bottom. This ensures users receive clear guidance and avoids a confusing user experience when payment options are unavailable. This resolves a previous issue where users didn't see any payment methods or warnings.
Original PR description
The portal payment screen incorrectly scrolls to the bottom when the Pay button is clicked, but no payment methods or warning message are shown. This happens when no payment provider is published. This PR fixes the issue by ensuring the "no provider" warning message appears in all cases. task-5388313 Forward-Port-Of: odoo/enterprise#101632
Features or functions removed from Odoo
This update simplifies Odoo's activity flow by removing outdated code related to automatically creating follow-up tasks. The changes primarily affect the Documents, Sign, and VoIP modules, streamlining workflows and improving performance. This aligns with a new, simplified activity system.
Original PR description
Purpose: Align modules with the new simplified activity flow by cleaning up the logic related to the 'Trigger Next Activity' feature. Specifications: - documents: remove next activity preparation, frontend refresh logic, and related tests - l10n_in_reports: Removed obsolete chaining type field from activity type data. - sign: remove chaining type handling from activity buttons and hide Suggested Next Activity field since no follow-up is created - voip: update call activity handling since follow-up activities are no longer created on call completion Task-4863143