Daily updates from Odoo
Friday, June 12, 2026
157 changes
29 changes
Resolved issues and error corrections
This update streamlines the process of loading contract templates by simplifying a key component. Previously, the button's database calls were inefficient due to its reliance on a broader selection field. This change improves performance and stability.
Original PR description
It was found that the Load Contract Template button was doing database calls with no domain. This was due to it extending Selection Field, seeing that it doesn't use anything from SelectionField except the props, we've decided to make it a simple Component. task-6259618 Forward-Port-Of: odoo/odoo#268825
This update fixes a bug where timesheet totals weren't visible on the portal's task view. The issue stemmed from a naming conflict between XML templates, preventing the totals from being correctly displayed. The fix ensures that users can now see the complete timesheet totals for each task.
Original PR description
Issue: ---------------------------------------- The totals aren't displayed after the timesheet list on portal. Steps to reproduce: ---------------------------------------- - Have Timesheet and Project installed, with task having timesheet - Go on the Portal page, then "My Tasks" - Click on a task having several timesheets - The list of timesheet shows but not the totals. Cause: ---------------------------------------- This commit f84d46d8e99199c64f97b6a59247875bd32b0f91 separated the timesheet list and the timesheet totals into two different XML templates. The template with only the list of timesheet has the same name as the previous template containing both the list and the totals. So if the `t-call` aren't updated, the totals disappear from `saas-19.1` to `saas-19.2`. Solution: ---------------------------------------- Call `portal_timesheet_table_with_total` instead of `portal_timesheet_table`. opw-6247177 Forward-Port-Of: odoo/odoo#269446
This update fixes an issue where a second stock valuation entry was created when a repair order was finished and then a quotation or invoice was generated. This prevented accurate accounting records and potential discrepancies. The fix ensures that valuation entries are only created once for a product linked to a repair order.
Original PR description
When finishing a repair order a stock valuation entry is created for the product used. If you then make a quotation and invoice it another stock valuation entry would be created for the same product.…
When finishing a repair order a stock valuation entry is created for the product used. If you then make a quotation and invoice it another stock valuation entry would be created for the same product. Steps to reproduce: ------------------- * Create a category using FIFO and real time valuation * Create a product using this category and set it's cost to 5€ * Set some on hand quantity for the product * Create a repair order and add the product with the "Add" option * Finish the repair order > Observation: At this point you should have a valuation entry in the accouting app * From the repair order create a quotation and invoice it > Obesrvation: If you check the accounting entries again you will see a second valuation entry Why the fix: ------------ When checking if the line is eligible for valuation we make sure that if it is linked to a repair order, this repair order should not have any accounting entries linked to it. opw-5429996 Forward-Port-Of: odoo/odoo#254468
This update resolves an issue where PDF links within the Odoo viewer were not functioning correctly. The fix adjusts the layering of elements to ensure clicks are properly directed to the PDF links, improving the user experience when viewing documents with internal and external links. This ensures all links within the PDF viewer are accessible.
Original PR description
Version - 18.0 Steps to reproduce: 1. Upload a PDF document containing bookmarks and internal/external links 2. Open the document 3. Click on the links, some work and some do not Issue: `canvas_layer_0` is positioned over the PDF viewer with `z-index: 1`, intercepting clicks intended for PDF link annotations and making internal/external links unresponsive. The `.textLayer` already has `z-index: 2 !important` in iframe.css to prevent the same problem for text selection Fix: Added `z-index: 2 !important` to `.annotationLayer section` in `iframe.css` raising it above `canvas_layer_0`. Taskid = 6237688 Forward-Port-Of: odoo/enterprise#118040
A recent update removed the duplicate and delete buttons from the page properties dialog in the website settings. This change was caused by a renaming of a configuration property. This update restores these essential buttons, ensuring users can properly manage their static website pages.
Original PR description
Steps to reproduce: 1. Go to Website. 3. Open the page properties dialog of any static page. Issue: The duplicate and delete page buttons are missing from the page properties dialog, although they were available until version 19.0. Cause: After the changes introduced in [1](https://github.com/odoo/odoo/pull/220325/changes), the `buttonTemplate` prop was renamed to `buttonDialogTemplate`. However, this new prop was not handled in the page properties dialog, causing the buttons to disappear. task-6171493 Forward-Port-Of: odoo/odoo#262951
This update prevents unnecessary placeholder images from being sent during menu synchronization. By only sending actual image URLs when images are defined, we've reduced data transfer and improved the speed and efficiency of menu updates. This results in a smoother user experience.
Original PR description
This commit prevents placeholder images from being included in the menu sync payload and only sends `img_url` when an actual image is configured on the product or category. Task-6251430 Forward-Port-Of: odoo/enterprise#120075 Forward-Port-Of: odoo/enterprise#119482
This update streamlines the timesheet connection process by removing a redundant 'Close' button and automatically redirecting users to the timeline after a successful connection. This creates a smoother and more intuitive experience for users connecting to their Odoo Enterprise accounts.
Original PR description
- Remove 'Close' button from connection successful modal - Change Redirect users to http://localhost:5600/#/timeline after successful connection. task-6272843 Forward-Port-Of: odoo/enterprise#119800
This update fixes an issue where currency rates from the Bank of Mexico were incorrectly displayed. The change shifts the rate date by one day to align with the Bank of Mexico's data retrieval process, ensuring accurate currency conversions within the system. This improves the reliability of financial reporting.
Original PR description
banxico fetches the rates applied on the previous day, when we introduced using previous day's currency rate (here: https://github.com/odoo/odoo/pull/231948), we broke their logic. shift the rates date by one day to account for the change. task-6264708 Forward-Port-Of: odoo/enterprise#118999
This update optimizes the way Odoo checks access rights during reconciliation processes. Previously, a performance bottleneck existed when updating multiple reconciliation lines at once, leading to slower widget loading. This change improves the speed and efficiency of the reconciliation feature, particularly when handling large numbers of transactions.
Original PR description
When assigning a value in batch, the ORM doesn't manage to batch the call to `check_access` done in `write_batch`/`write_real` because each write is done individually when setting a value in the compute function. This field is especially annoying because it is read when opening the reconciliation widget on several lines. Forward-Port-Of: odoo/odoo#269601 Forward-Port-Of: odoo/odoo#269063
A bug preventing users from submitting WhatsApp template approvals with image headers has been resolved. This update corrects a technical issue related to how image data is processed, ensuring template submissions now function correctly. This improves the WhatsApp template approval workflow.
Original PR description
Currently an error occurs when the user tries to submit a WhatsApp template for approval with a header type image. Steps to produce an Error: - Install the whatsapp module - Create a new WhatsApp…
Currently an error occurs when the user tries to submit a WhatsApp
template for approval with a header type image.
Steps to produce an Error:
- Install the whatsapp module
- Create a new WhatsApp template as below
- Header Type = `Image`
- Upload any image in `Template Static Header`
- Fill in required fields
- Error occurs when click `Submit for Approval`
Error `TypeError: object of type 'LocalBinaryFile' has no len()`
This happens because of the recently refactored changes with [1]
`attachment.raw` now contains a `LocalBinaryFile` object instead
of a raw binary value. As a result, using the object directly in the
request at code line[2] (data) causes an error.
This commit fixes the above error by using `attachment.raw.content`,
which passes the actual image binary content in the request instead
of the `LocalBinaryFile` object.
[1]: https://github.com/odoo/odoo/commit/41fe2ebdb9cc37341362d7af829c087a5f72f9f1
[2]: https://github.com/odoo/enterprise/blob/28bd32718cd147093c9d56d79dce87ff32d44508/whatsapp/tools/whatsapp_api.py#L56
Sentry-7516083183This update resolves an issue preventing users from successfully posting LinkedIn updates with images. The fix corrects a technical error related to how image data is handled, ensuring seamless image uploads and post creation. This improves the LinkedIn integration for our users.
Original PR description
Currently an exception is generated when the user tries to create a Linkedin post with an image. Error: `TypeError: object of type 'LocalBinaryFile' has no len()` This happens because the recently refactored changes with [1] `image_id.raw` now contain a `LocalBinaryFile` object instead of a raw binary value. As a result, using the object directly in the request at code line [2] (`image_data`) causes an error. This commit fixes the above error by using `image_id.raw.content`, which passes the actual image binary content in the request instead of the `LocalBinaryFile` object. [1]: https://github.com/odoo/odoo/commit/41fe2ebdb9cc37341362d7af829c087a5f72f9f1 [2]: https://github.com/odoo/enterprise/blob/f6b6039b15ba17c293dcbfb46767a75475d4ce18/social_linkedin/models/social_account.py#L434 Sentry-7491355475
This update fixes a misleading warning message displayed in Odoo Enterprise's expense settings. The issue occurred when the 'Expense Card' was unchecked, even if Stripe issuing was supported for the company's location. Now, the system correctly checks the company's fiscal country to determine Stripe issuing support, ensuring accurate messaging.
Original PR description
In the Expense settings, under 'Expense Card', the warning 'Stripe issuing is not yet supported for your localization' was displayed when the checkbox 'Expense Card' was unchecked, even if the stripe issuing is supported by the current localization. We now use the fiscal country id of the company to check if the company's country supports stripe issuing. task-6253582 Forward-Port-Of: odoo/enterprise#118654
This update resolves an issue causing tracebacks in Firefox (Gecko-based browsers) when loading assets within iframes used in mass mailing processes. The fix prevents errors from propagating when iframes are unexpectedly removed from the page, ensuring a smoother user experience for Odoo users.
Original PR description
Loading assets bundles into an iframe requires the iframe to be connected (present in the DOM) at time of insertion. However, it can happen that iframes are removed from the DOM before all their…
Loading assets bundles into an iframe requires the iframe to be connected (present in the DOM) at time of insertion. However, it can happen that iframes are removed from the DOM before all their assets have loaded in. In these instances, errors from failed bundle loads will turn into tracebacks. This is generally not an issue in Chromium-based browsers as iframes do not fire a load event if they are disconnected; however, in Gecko-based browsers, this can happen. As such, mass_mailing users using Firefox currently receive a systematic traceback, as the CSS file "mass_mailing.assets_inside_builder_iframe.css" will not load. Steps to reproduce: - Use Firefox (or a Gecko-based browser) - Open a new mailing - Select the Events theme and make an edit (add a space...) - Save the mailing - Wait for 23 seconds The bug may be non-deterministic. Fix: Errors during the iframe load process will no longer bubble up if their iframe is disconnected when the error occurs. task-6293998 Co-authored-by: Damien Abeloos <abd@odoo.com> Forward-Port-Of: odoo/odoo#269324
This update fixes an issue where the shop floor displayed component quantities with excessive decimal places, leading to inaccurate readings. The fix addresses a floating-point calculation error that occurred when combining quantities from multiple lots, ensuring more precise and reliable data display.
Original PR description
**Issue** In the shop floor, floating-point values may display excessive decimals. **Steps to reproduce** - Create a BoM for a product, with a component tracked by lots - Set the component to be…
**Issue** In the shop floor, floating-point values may display excessive decimals. **Steps to reproduce** - Create a BoM for a product, with a component tracked by lots - Set the component to be consumed in a work order operation - Create several lots for the component, per ex 2: - LOT01 with 16.528 units - LOT02 with 10,000.00 units - Create an MO for 220.800 units of the finished product - Click on the shopfloor icon - Click to register the component consumption for the component. - Choose the first lot - Then choose the remaining units from the second lot -> This will display the quantity consumed as 220.79999999999998, even if the decimal accuracy is set to only 2 digits. **Cause** Since, there are 2 `moveLines`, one for each lot, the getter `quantityDone` add 2 floating point together: https://github.com/odoo/enterprise/blob/d7ab7ee1287342638006e290ede20b955aae8370/mrp_workorder/static/src/mrp_display/mrp_record_line/stock_move.js#L63-L69 inducing a floating-point precision error. The result is rendered directly in the XML template: https://github.com/odoo/enterprise/blob/d7ab7ee1287342638006e290ede20b955aae8370/mrp_workorder/static/src/mrp_display/mrp_record_line/stock_move.xml#L8-L14 without rounding. opw-6243804 Forward-Port-Of: odoo/enterprise#118976
This update corrects a bug where the sale order name was inconsistently generated due to interactions between the purchase and product matrix modules. The fix ensures the correct name is passed through the system, preventing assertion errors and maintaining data integrity. This resolves a technical issue impacting order naming.
Original PR description
**Step to reproduce** Reproducible in single app The "name" field make this assertion fails: ``` self.assertRecordValues(sale_order.order_line[0], [{ "product_id":…
**Step to reproduce**
Reproducible in single app
The "name" field make this assertion fails:
```
self.assertRecordValues(sale_order.order_line[0], [{
"product_id": no_variant_product_tmpl.product_variant_id.id,
"name": 'No Variant\nAttribute: Value 1',
```
**Observation**
The name will not be the same depending which app are installed, purchase_product_matrix, changes the name of the product if there is a attribute value of a never variant: https://github.com/odoo/odoo/blob/f399f99d4e0e562d25e1de32336e8d6a55199b9b/addons/purchase_product_matrix/models/purchase.py#L168-L174 Which will be passed to the purchase_order_line:
https://github.com/odoo/odoo/blob/f399f99d4e0e562d25e1de32336e8d6a55199b9b/addons/purchase/models/purchase_order_line.py#L630-L634 that will pass the information to the sale order:
https://github.com/odoo/enterprise/blob/bce04ce24b66fb1a2481274eb3aebdc30a62766e/sale_purchase_inter_company_rules/models/purchase_order.py#L114 https://github.com/odoo/enterprise/blob/bce04ce24b66fb1a2481274eb3aebdc30a62766e/sale_purchase_inter_company_rules/models/purchase_order.py#L125-L126
**Additional information**
Since this [commit](https://github.com/odoo/odoo/commit/b8ebb26553f8170061debc7532606fd4777f0fcd#diff-5684edced9bdfc98021a85de4c6cdf691ea7add74e56ab50334a1d7db9ef4224R90) product_no_variant_attribute_value_ids was directly added in the purchase module.
breaking commit : https://github.com/odoo/enterprise/commit/bf286a0005b8e22ffa717419cd2dfacff861a265
runbot-242362
Forward-Port-Of: odoo/odoo#268016A recent issue preventing the 'See employee progress bar' tour from running correctly has been resolved. The fix addresses a dependency on a specific module installation and ensures the necessary steps are completed before progress bars are displayed, improving tour reliability.
Original PR description
The tour relied on the chatter loading to know when the page was done loading. Unfortunately, the chatter on that model is only added if planning_field_service is installed, so the test fails in single module installs. The "See employee progress bar" then failed because some employees do not have an email adress but we do not close the employee_no_email_list_wizard modal before checking the progress bars. We now click on action_send before the failing step. runbot-938958 Forward-Port-Of: odoo/enterprise#118492
This update resolves an issue causing excessive logging in Odoo when handling attachments created by external systems. By returning 'None' when attachment data is missing, the system avoids unnecessary error handling and log spam, primarily impacting integrations like EDI connectors. This improves overall system stability and performance.
Original PR description
Return None when datas is empty alongside the existing mimetype check. Avoids unnecessary exception handling leading to logspam for URL type attachments where binary data is unavailable. This issue is only reproducible programmaticaly as the mimetype is not available with url type attachment in Odoo. Thus, it's a problem that only impact third party integrations, EDI connectors or any workflow that creates ir.attachment records directly. opw-6010528 Forward-Port-Of: odoo/enterprise#116080 Forward-Port-Of: odoo/enterprise#113396
This update resolves a visual glitch in the chatter interface where an empty rectangle appeared next to log notes during editing. The issue stemmed from a system that remembered the last position, causing problems when scrolling. This fix ensures suggestions are displayed correctly regardless of scrolling, improving the user experience.
Original PR description
# How to reproduce - Go into any form view of a model with a chatter (e.g. Quotation) - Add multiple long log notes. You need to be able to scroll enough to not see the last log note - Click edit on…
# How to reproduce - Go into any form view of a model with a chatter (e.g. Quotation) - Add multiple long log notes. You need to be able to scroll enough to not see the last log note - Click edit on the last log note - Scroll down to the bottom # The problem An empty rectangle is displayed next to the log note in edit mode. # Cause The rectangle comes from the NavigableList Component, which is the list that displays suggestions when typing things like "@" or "#" : https://github.com/odoo/odoo/blob/1fd44c3bb11a79d5b6aa72bf7de5a83e6c45be46/addons/mail/static/src/core/common/composer.xml#L137 This components uses the `usePostion()` hook, which purpose is to try to find the most appropriate place to put the element. It will try different postions (e.g. on the left, below, above, etc.) and will pick the most appropriate one. It will then adjust the element's style to position it correctly. It is possible to ask for a preferred position using the options given to the hook. This position will be prioritized over the others if it is suitable. In the case of the NavigableList of the chatter, we give it either 'bottom-fit' or the 'top-fit' positions, wich means it will prefer to be displayed above or below the message : https://github.com/odoo/odoo/blob/dd84309df7fd39e9e97ed02d135d25b211085135/addons/mail/static/src/core/common/composer.js#L449-L459 But in our case, when we scroll back up, the position of the rectangle stays on the left, even though the below space is available. That is because of this commit that introduced a memorization of the last solution : https://github.com/odoo/odoo/commit/b2b8d2dbb8396d86492a3089db9b1b1545c8f13b https://github.com/odoo/odoo/blob/f2434aac74324a65ccd81aa18c7b0e8318e59fde/addons/web/static/src/core/position/position_hook.js#L59-L61 This means that when we scroll down, the bottom positions fails and so the left one is defaulted to. Since the position is memorized, it stays on the left. The issue with this left position is that another commit introduced some logic that made it so if the position is not "top" or "bottom", then we set the element's height to some value : https://github.com/odoo/odoo/commit/702748e2c8e895d372d07f9aeff273282d1b1a99 https://github.com/odoo/odoo/blob/f2434aac74324a65ccd81aa18c7b0e8318e59fde/addons/web/static/src/core/position/utils.js#L120-L124 And setting the height of the NavigableList makes it so it displayed even when there are no suggestions inside, because the hiding mechanism of the suggestion list relies on the fact that when there are no suggestions, the div is empty and has no height, so it is hidden. # Propose solution We introduce a settings in the options that will allow to skip the memorization of the last position. Since the left position will never be set in the options, no height will be defined. opw-6172407 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#262822
This update corrects a labeling inconsistency in the Odoo purchase module. The 'incoming' button has been updated to 'purchase orders' for better clarity and user understanding. This change ensures users can easily identify and utilize the button's function.
Original PR description
Fix label on incoming purchases smart button. "sales order" -> "purchase orders" Forward-Port-Of: odoo/odoo#261254
This update resolves a bug where form updates triggered by changes in record IDs caused errors. Now, the system gracefully handles record ID changes, preventing crashes and ensuring data integrity when saving new forms. This improves the stability and reliability of the Odoo application.
Original PR description
* Open a new record form (the `onchange` RPC is cached). * Open a second new record form (it uses the cached `onchange` RPC). * Save the record before the `onchange` RPC returns. Before this commit, a race condition caused an error to be raised. When `web_save` is executed, it updates the record configuration with the new `resId` without reloading the view. When the pending `onchange` RPC finally returns, the cache callback misinterprets the data as a `web_read` result instead of an `onchange` result due to the updated ID, triggering a crash. Now, the callback safely does nothing if the resId has changed since the request was sent. runbot-243200 Forward-Port-Of: odoo/odoo#269524 Forward-Port-Of: odoo/odoo#268884
This update resolves a technical issue that caused the account reports audit tour to fail in complex Odoo environments. Specifically, the tour now waits for the correct Kanban view to be active before opening the necessary financial reports, ensuring a smoother and more reliable user experience.
Original PR description
The account_reports_audit tour was failing at the "Balances" button step due to a race condition in the preceding steps. In environments with many modules, the "Open the working file" step was triggered prematurely while still on the return checks view, because its selector was too broad. This commit narrows the selector for "Open the working file" to ensure it only triggers once the Kanban view is actually active. [runbot-938920](https://runbot.odoo.com/odoo/runbot.build.error/938920) Forward-Port-Of: odoo/enterprise#118346
This update corrects a previous issue where invoices generated from the Odoo website's e-commerce orders were incorrectly set to be CFDI public documents. Now, invoices for website orders will only be CFDI documents when explicitly required, ensuring compliance and streamlining the order process.
Original PR description
There is no reason why we would always cfdi to public when creating orders from the e-commerce. When the customer give all their info, the invoice should not be cfdi to public. opw-6180766 Forward-Port-Of: odoo/enterprise#119442 Forward-Port-Of: odoo/enterprise#116061
This update resolves a bug preventing the daily sales report from displaying its title correctly when the Colombian EDI module is active. The change ensures compatibility with a related report template, and also corrects a previous issue where the report would render without a title when the Colombian module wasn't installed.
Original PR description
The daily report template was replacing `//h2[@id='daily_report_title']` entirely, removing the node from the XML source. This caused `pos_hr.single_employee_sales_report` (a primary template that applies its own xpaths against the same patched base) to crash at compile time since its xpaths could no longer find that node. Switch from `position="replace"` to `position="attributes"` + `position="after"`: the h2 stays in the XML source at all times so pos_hr's xpaths always resolve, while the original title is hidden at render time via t-if when CO EDI is enabled and the Colombian content is inserted as a sibling after it. As a side effect, this also fixes a pre-existing bug where installing the module with DIAN disabled would render the daily report with no title at all. opw-6265637 Forward-Port-Of: odoo/enterprise#119668 Forward-Port-Of: odoo/enterprise#119003
This update resolves a visual issue in dark mode and corrects a functional error within the Gantt chart for holiday scheduling. Specifically, the selection process is now more intuitive, allowing users to select multiple holiday periods directly, improving the overall user experience.
Original PR description
- changed selected value in the view to be number of selected cells instead of number of selected records - fixed a visual bug in dark mode where the create popup has ugly background task-id: 6124765 Forward-Port-Of: odoo/enterprise#116229
This update resolves an issue where thumbnails weren't automatically generated when attaching documents to messages within the Composer. The fix ensures that thumbnails are now correctly created, improving the user experience when sharing documents. This enhancement supports seamless document management within the Odoo platform.
Original PR description
When attaching a documents to a message in the composer, the thumbnail was not generated. This commit fix this issue. Task-5096039 Forward-Port-Of: odoo/enterprise#116188
This update fixes a technical issue where IoT polling requests were failing and displaying error messages. The change ensures that all listening requests are handled, preventing these failures and improving the reliability of the IoT service. This resolves a potential disruption to data collection.
Original PR description
We were not awaiting the listening request in every case, making poll requests failures display tracebacks. We now await in any case to avoid this.
This update simplifies error codes within the l10n_fr_reports module. Removing specific error messages related to subscription checks has resulted in all errors now appearing as internal errors, without detailed information. This change aims to streamline error handling internally.
Original PR description
This commit: https://github.com/odoo/enterprise/commit/23afa6f2520a676dcb4cd94867065f1be03708bc change a bit the error codes but removed the ones from the check subscription. By doing so, all the error from that wrapper will give an internal error, and no other info on the error. no task id Forward-Port-Of: odoo/enterprise#120286
This update resolves an issue where downloading ETA invoices could cause a JSON decoding error. A recent change introduced a workaround, but this new fix adds a crucial catch block to properly handle this error, ensuring invoices download reliably. This improves the stability of the l10n_eg_edi_eta module.
Original PR description
When we download the ETA invoice PDF, a JSONDecoderError can happen when calling the json() method on the request. This error is properly caught by Odoo : https://github.com/odoo/odoo/blob/7a9a340e0dbac470c4bea3f8ce8a32e55f3e82e6/addons/l10n_eg_edi_eta/models/account_edi_format.py#L58-L60 However, the following commit introduced a monkeypatch to handle errors when the simplejson library is installed : 2435fe76eec1fc4320ef71726fc7f16ece653a32 If we meet the conditions, the original error is replaced by a json.JSONDecodeError which is not caught during the previous process. We propose to add this error to the catch block. This modification was inspired by the commit d483dac144a9caf84c44b9d8d394ea327ca87cfe. opw-6266862 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#268309
This update fixes a previous issue where sales employees transitioning to non-commission roles incorrectly accrued commission losses for public holidays and sick time. Now, employees in non-sales positions will no longer be impacted by these incorrect commission calculations, ensuring accurate payroll processing. This improves the reliability of the HR payroll module.
Original PR description
If a salesman moves to another job that doesn't pay commission, he shouldn't have loss on commissions for public holidays and sick time off. Forward-Port-Of: odoo/enterprise#120386
26 changes
Resolved issues and error corrections
This update corrects a technical oversight during a recent port of code. Unnecessary code was inadvertently left in the l10n_pe_reports module, which has now been removed. This ensures the reporting functionality continues to operate correctly within the Odoo Enterprise system.
Original PR description
During the FW port of https://github.com/odoo/enterprise/pull/117891 We forgot to remove the unnecessary code opw-5978673 Forward-Port-Of: odoo/enterprise#120183
A technical issue preventing the 'See employee progress bar' tour from running correctly has been resolved. The fix addresses a dependency on a specific module installation and ensures the necessary steps are completed before checking progress bars, improving tour reliability.
Original PR description
The tour relied on the chatter loading to know when the page was done loading. Unfortunately, the chatter on that model is only added if planning_field_service is installed, so the test fails in single module installs. The "See employee progress bar" then failed because some employees do not have an email adress but we do not close the employee_no_email_list_wizard modal before checking the progress bars. We now click on action_send before the failing step. runbot-938958
This update streamlines the process of loading contract templates by simplifying a key component. Previously, the loading button triggered unnecessary database queries due to its complex extension of a selection field. This change improves performance and stability.
Original PR description
It was found that the Load Contract Template button was doing database calls with no domain. This was due to it extending Selection Field, seeing that it doesn't use anything from SelectionField except the props, we've decided to make it a simple Component. task-6259618 Forward-Port-Of: odoo/odoo#268825
This update optimizes how the system checks access rights when opening the reconciliation widget, particularly when processing multiple lines at once. Previously, the system was slow due to inefficient batch processing, leading to delays. This change improves the overall speed and responsiveness of the reconciliation process.
Original PR description
When assigning a value in batch, the ORM doesn't manage to batch the call to `check_access` done in `write_batch`/`write_real` because each write is done individually when setting a value in the compute function. This field is especially annoying because it is read when opening the reconciliation widget on several lines. Forward-Port-Of: odoo/odoo#269187 Forward-Port-Of: odoo/odoo#269063
This update fixes an issue where a second stock valuation entry was created when a repair order was finished and then a quotation or invoice was generated. The fix ensures that only one valuation entry is created for a product linked to a repair order, streamlining accounting processes and preventing potential discrepancies.
Original PR description
When finishing a repair order a stock valuation entry is created for the product used. If you then make a quotation and invoice it another stock valuation entry would be created for the same product.…
When finishing a repair order a stock valuation entry is created for the product used. If you then make a quotation and invoice it another stock valuation entry would be created for the same product. Steps to reproduce: ------------------- * Create a category using FIFO and real time valuation * Create a product using this category and set it's cost to 5€ * Set some on hand quantity for the product * Create a repair order and add the product with the "Add" option * Finish the repair order > Observation: At this point you should have a valuation entry in the accouting app * From the repair order create a quotation and invoice it > Obesrvation: If you check the accounting entries again you will see a second valuation entry Why the fix: ------------ When checking if the line is eligible for valuation we make sure that if it is linked to a repair order, this repair order should not have any accounting entries linked to it. opw-5429996 Forward-Port-Of: odoo/odoo#254468
This update resolves an issue where PDF links within the Odoo viewer were not functioning correctly. The fix adjusts the layering of elements to ensure clicks are properly directed to the PDF links, improving the user experience when viewing documents with internal and external links. This ensures documents are fully navigable.
Original PR description
Version - 18.0 Steps to reproduce: 1. Upload a PDF document containing bookmarks and internal/external links 2. Open the document 3. Click on the links, some work and some do not Issue: `canvas_layer_0` is positioned over the PDF viewer with `z-index: 1`, intercepting clicks intended for PDF link annotations and making internal/external links unresponsive. The `.textLayer` already has `z-index: 2 !important` in iframe.css to prevent the same problem for text selection Fix: Added `z-index: 2 !important` to `.annotationLayer section` in `iframe.css` raising it above `canvas_layer_0`. Taskid = 6237688 Forward-Port-Of: odoo/enterprise#118040
This update fixes an issue where currency rates from the Bank of Mexico were incorrectly displayed. The change shifts the rate date by one day to align with the bank's daily reporting, ensuring accurate financial data within the Odoo Enterprise system. This prevents discrepancies in currency conversions.
Original PR description
banxico fetches the rates applied on the previous day, when we introduced using previous day's currency rate (here: https://github.com/odoo/odoo/pull/231948), we broke their logic. shift the rates date by one day to account for the change. task-6264708 Forward-Port-Of: odoo/enterprise#118999
This update ensures that tax details are now correctly included in the test orders sent to UrbanPiper. Previously, these details were missing, leading to issues with testing. This change resolves a technical problem that ensures accurate order data is transmitted for integration with the UrbanPiper system.
Original PR description
Commit 1: ======== Before this commit: =================== - Test orders sent to UrbanPiper did not include tax details for order items. After this commit: ================== - Tax details are now included in the order item payload of test orders. Task-6013007 --- Commit 2: ======== Cause: ====== In the `without demo` environment, the discount product does not have any `taxes_id`, causing the test assertion to fail. Fix: ==== Set a tax on the discount product in the test to ensure the same behavior in both `with demo` and `without demo` environments. Error-241138 Forward-Port-Of: odoo/enterprise#120126 Forward-Port-Of: odoo/enterprise#109958
A recent update removed the duplicate and delete buttons from the page properties dialog in the website settings. This fix corrects a technical issue caused by a renaming of a configuration property, ensuring these essential buttons are now available again. This restores a previously functioning feature.
Original PR description
Steps to reproduce: 1. Go to Website. 3. Open the page properties dialog of any static page. Issue: The duplicate and delete page buttons are missing from the page properties dialog, although they were available until version 19.0. Cause: After the changes introduced in [1](https://github.com/odoo/odoo/pull/220325/changes), the `buttonTemplate` prop was renamed to `buttonDialogTemplate`. However, this new prop was not handled in the page properties dialog, causing the buttons to disappear. task-6171493 Forward-Port-Of: odoo/odoo#262951
This update modifies error codes within the l10n_fr_reports module, specifically removing error messages related to subscription checks. As a result, all errors from this area will now display as internal errors, without providing detailed information. This change simplifies error handling internally.
Original PR description
This commit: https://github.com/odoo/enterprise/commit/23afa6f2520a676dcb4cd94867065f1be03708bc change a bit the error codes but removed the ones from the check subscription. By doing so, all the error from that wrapper will give an internal error, and no other info on the error. no task id
This update corrects a misleading warning message displayed in the Expense settings related to Stripe issuing. The system now accurately checks if a company's country supports Stripe issuing based on its fiscal country ID, ensuring users receive the correct information. This improves the user experience and prevents unnecessary confusion.
Original PR description
In the Expense settings, under 'Expense Card', the warning 'Stripe issuing is not yet supported for your localization' was displayed when the checkbox 'Expense Card' was unchecked, even if the stripe issuing is supported by the current localization. We now use the fiscal country id of the company to check if the company's country supports stripe issuing. task-6253582 Forward-Port-Of: odoo/enterprise#118654
This update resolves an issue causing tracebacks in Firefox (Gecko-based browsers) when loading assets within iframes used in mass mailing operations. The fix prevents errors from propagating when iframes are unexpectedly removed from the page, ensuring a smoother user experience for Odoo users on Firefox.
Original PR description
Loading assets bundles into an iframe requires the iframe to be connected (present in the DOM) at time of insertion. However, it can happen that iframes are removed from the DOM before all their…
Loading assets bundles into an iframe requires the iframe to be connected (present in the DOM) at time of insertion. However, it can happen that iframes are removed from the DOM before all their assets have loaded in. In these instances, errors from failed bundle loads will turn into tracebacks. This is generally not an issue in Chromium-based browsers as iframes do not fire a load event if they are disconnected; however, in Gecko-based browsers, this can happen. As such, mass_mailing users using Firefox currently receive a systematic traceback, as the CSS file "mass_mailing.assets_inside_builder_iframe.css" will not load. Steps to reproduce: - Use Firefox (or a Gecko-based browser) - Open a new mailing - Select the Events theme and make an edit (add a space...) - Save the mailing - Wait for 23 seconds The bug may be non-deterministic. Fix: Errors during the iframe load process will no longer bubble up if their iframe is disconnected when the error occurs. task-6293998 Co-authored-by: Damien Abeloos <abd@odoo.com> Forward-Port-Of: odoo/odoo#269324
This update ensures that all users, even those without HR access, see their employee avatar in the timesheet grid view. Previously, a placeholder image was shown. The fix addresses a restriction in accessing the employee data model, now retrieving images from a public version for broader visibility.
Original PR description
Steps to reproduce: ------------------- - Install the hr_timesheet module - Create a user without HR access rights - Create a timesheet - Log in with the above user - Open the kanban view Issue: ------- Instead of showing the employee's avatar, a placeholder image is displayed. Reason: ---------- The user does not have access to the hr.employee model. Fix: ----- In this commit, if the user does not have access to hr.employee,we fetch the image from the hr.employee.public model. task: 4461272 Forward-Port-Of: odoo/enterprise#120165 Forward-Port-Of: odoo/enterprise#83574
This update resolves an assertion error related to product names in inter-company sales orders. The issue stemmed from a recent addition of product attributes within the purchase module, which caused name discrepancies across different Odoo apps. This fix ensures consistent product naming during sales and purchase processes.
Original PR description
**Step to reproduce** Reproducible in single app The "name" field make this assertion fails: ``` self.assertRecordValues(sale_order.order_line[0], [{ "product_id":…
**Step to reproduce**
Reproducible in single app
The "name" field make this assertion fails:
```
self.assertRecordValues(sale_order.order_line[0], [{
"product_id": no_variant_product_tmpl.product_variant_id.id,
"name": 'No Variant\nAttribute: Value 1',
```
**Observation**
The name will not be the same depending which app are installed, purchase_product_matrix, changes the name of the product if there is a attribute value of a never variant: https://github.com/odoo/odoo/blob/f399f99d4e0e562d25e1de32336e8d6a55199b9b/addons/purchase_product_matrix/models/purchase.py#L168-L174 Which will be passed to the purchase_order_line:
https://github.com/odoo/odoo/blob/f399f99d4e0e562d25e1de32336e8d6a55199b9b/addons/purchase/models/purchase_order_line.py#L630-L634 that will pass the information to the sale order:
https://github.com/odoo/enterprise/blob/bce04ce24b66fb1a2481274eb3aebdc30a62766e/sale_purchase_inter_company_rules/models/purchase_order.py#L114 https://github.com/odoo/enterprise/blob/bce04ce24b66fb1a2481274eb3aebdc30a62766e/sale_purchase_inter_company_rules/models/purchase_order.py#L125-L126
**Additional information**
Since this [commit](https://github.com/odoo/odoo/commit/b8ebb26553f8170061debc7532606fd4777f0fcd#diff-5684edced9bdfc98021a85de4c6cdf691ea7add74e56ab50334a1d7db9ef4224R90) product_no_variant_attribute_value_ids was directly added in the purchase module.
breaking commit : https://github.com/odoo/enterprise/commit/bf286a0005b8e22ffa717419cd2dfacff861a265
runbot-242362
Forward-Port-Of: odoo/odoo#268016This update fixes a display issue where employee holiday availability dates in the internal chat (Discuss) were incorrectly showing the previous day when users were in negative timezones. The fix ensures accurate date display by consistently using UTC time, preventing timezone-related date conversions.
Original PR description
Issue: ---------------------------------------- When in a negative timezone, the "Out of Office until..." text in discuss shows the day before. Steps to reproduce:…
Issue: ---------------------------------------- When in a negative timezone, the "Out of Office until..." text in discuss shows the day before. Steps to reproduce: ---------------------------------------- - Change the timezone of the user to "America/Toronto" for example - Have an employee currently on leave until tomorrow - Open discuss to chat with this employee - The "Out of Office until..." shows today's date Cause: ---------------------------------------- When calling `toLocaleString()` without a timezone specified in the options, the date is converted to local time (in the browser's timezone). Here `persona.out_of_office_date_end` is just a date, `deserializeDateTime()` converts it to a timestamp, so the same day at 0am. Then if the timezone is negative, the timestamp becomes an hour the previous day when calling `toLocaleString()`. The format we give `DateTime.DATE_MED` doesn't include hours, so we just display the previous date. Solution: ---------------------------------------- Add `timeZone:"UTC"` in the options to avoid the timezone conversion. opw-6252040 Forward-Port-Of: odoo/odoo#268886 Forward-Port-Of: odoo/odoo#267479
This update corrects a labeling inconsistency within the purchase module. The 'incoming' button has been updated to 'purchase orders' for improved clarity and user understanding. This change ensures users can easily identify and utilize the correct functionality.
Original PR description
Fix label on incoming purchases smart button. "sales order" -> "purchase orders" Forward-Port-Of: odoo/odoo#261254
This update clarifies the reporting of employee hours by renaming a confusing column from 'Expected Hours' and 'Theoretical Hours' to 'regular hours'. This change ensures that users accurately understand the data being presented, reflecting the actual hours worked and avoiding potential misinterpretations regarding overtime calculations.
Original PR description
The column name "Expected Hours" and "Theoretical Hours" is confusing since it doesn't show the hours that the employee is supposed to work according to their contract, just the number of hours that are not considered overtime. This commit renames the column to better reflect the measure that is shown. task-6123642 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 Forward-Port-Of: odoo/odoo#262230
This update resolves an issue where the account reports audit tour was failing due to a timing problem. The change ensures the tour correctly opens the 'Balances' view by waiting for the Kanban view to be active, preventing premature actions. This improves the overall reliability of the audit tour for users.
Original PR description
The account_reports_audit tour was failing at the "Balances" button step due to a race condition in the preceding steps. In environments with many modules, the "Open the working file" step was triggered prematurely while still on the return checks view, because its selector was too broad. This commit narrows the selector for "Open the working file" to ensure it only triggers once the Kanban view is actually active. [runbot-938920](https://runbot.odoo.com/odoo/runbot.build.error/938920) Forward-Port-Of: odoo/enterprise#118346
This update corrects a previous setting that automatically generated CFDI invoices for all website orders. Now, invoices are only CFDI to public when a customer provides their information through the e-commerce platform, aligning with standard business practices. This change ensures compliance and avoids unnecessary invoice generation.
Original PR description
There is no reason why we would always cfdi to public when creating orders from the e-commerce. When the customer give all their info, the invoice should not be cfdi to public. opw-6180766 Forward-Port-Of: odoo/enterprise#119442 Forward-Port-Of: odoo/enterprise#116061
This update resolves a bug preventing the daily sales report from displaying its title correctly when the Colombian EDI module is enabled. The change ensures compatibility with another report template, and also corrects a previous issue where the report would render without a title when the Colombian module wasn't installed.
Original PR description
The daily report template was replacing `//h2[@id='daily_report_title']` entirely, removing the node from the XML source. This caused `pos_hr.single_employee_sales_report` (a primary template that applies its own xpaths against the same patched base) to crash at compile time since its xpaths could no longer find that node. Switch from `position="replace"` to `position="attributes"` + `position="after"`: the h2 stays in the XML source at all times so pos_hr's xpaths always resolve, while the original title is hidden at render time via t-if when CO EDI is enabled and the Colombian content is inserted as a sibling after it. As a side effect, this also fixes a pre-existing bug where installing the module with DIAN disabled would render the daily report with no title at all. opw-6265637 Forward-Port-Of: odoo/enterprise#119668 Forward-Port-Of: odoo/enterprise#119003
This update fixes an issue where new timesheet entries created from the systray menu were always added to the end of the list, requiring users to scroll to see the most recent entry. The fix reorders entries to display the newest timesheet entry first, improving usability and efficiency.
Original PR description
## Issues When creating a new timesheet entry from the systray menu, that entry is added at the end of the list, which is inconvenient when the list gets long, as it requires to scroll through the entirety of it to see the most recent entry. ## Steps to reproduce 1. Install Timesheets (`timesheet_grid`) 2. Open the systray menu 3. Create two timesheet entries 4. The second (= most recent) entry appears below the first (= oldest) entry ## Cause Since https://github.com/odoo/enterprise/commit/5901619141c81085111f2ee65b54492abf1e324f the entries are sorted based on the create date in ascending orer. This means that the oldest entries appear at the top, and the most recent at the bottom. On top of that, new entries were added at the end of the list instead of the start. ## Test The existing test `Creating a new timesheet places it at the top of the list` was only adding one entry to the list, thus was not properly testing **where** the new entries were added. opw-6284059
This update fixes an issue where Unicode slugs were incorrectly combining characters instead of using separators like hyphens. Previously, `/` characters were silently removed, resulting in shortened URLs. Now, slugs will correctly generate URLs with hyphens, ensuring consistent and accurate URL structure.
Original PR description
After Unicode slug support was introduced in https://github.com/odoo/odoo/commit/926e45aa93ffc3f74fe9bf4ae8f06642976c2ae5, `/`
characters started being silently removed instead of treated as
slug boundaries.
As a result:
"foo/bar" -> "foobar"
while it should instead generate:
"foo/bar" -> "foo-bar"
This restores the previous behavior by treating each non word character
as separators normalized to `-`.
task-6219984
Forward-Port-Of: odoo/odoo#269371
Forward-Port-Of: odoo/odoo#264557This update resolves an issue where thumbnails weren't generated when attaching documents to messages within the composer. The fix ensures that thumbnails are correctly created, improving the user experience when sharing documents. This enhancement provides a more complete and functional composer interface.
Original PR description
When attaching a documents to a message in the composer, the thumbnail was not generated. This commit fix this issue. Task-5096039 Forward-Port-Of: odoo/enterprise#116188
This update resolves an issue where the builder sidebar incorrectly displayed "Block" for website snippets. The fix re-injects a key attribute ('data-name') during builder setup, ensuring snippets are correctly identified and displayed with their actual names. This improves the user experience when creating and editing website pages.
Original PR description
\* = website ### Issue: When a page is created either through the configurator or from an existing page template, block-level snippets do not display the correct title in the builder sidebar.…
\* = website
### Issue:
When a page is created either through the configurator or from an
existing page template, block-level snippets do not display the correct
title in the builder sidebar. Instead, "Block" is shown for all
snippets.
### Steps to Reproduce:
- **Configurator:**
1. Install the website module or create a new website from Settings.
2. Complete all configurator steps. Do not use "Skip and start from
scratch".
- **Page template:**
1. Open the website and click the "New" button in the systray.
2. Click on "Page" and choose any template other than a blank page.
### Observed behavior:
The builder sidebar shows "Block" in the option container for all
snippets instead of their actual names.
### Reason:
Previously, just before the builder was opened, the `data-name`
attribute was injected through `_computeSnippetTemplates()` for any
snippet that did not already have it. This behavior was lost after the
plugin refactoring.
### Fix:
As before, we now inject the `data-name` attribute during builder setup
for snippets that do not already have it.
task-[6087348](https://www.odoo.com/odoo/all-tasks/6087348)
---
I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Forward-Port-Of: odoo/odoo#269287
Forward-Port-Of: odoo/odoo#259893This update resolves an error that occurred when users removed the date field in the Accrued Expense Entry wizard. The fix adds a check to ensure the date field has a valid value before performing comparisons, preventing a type error. This ensures the Accrued Expense Entry feature functions correctly.
Original PR description
Currently, error occurs when user removes date on Accrued Expense Entry wizard. Steps to replicate: - Install `purchase` and `accountant` with demo. - Open any Purchase Order > Click on cog menu >…
Currently, error occurs when user removes date on Accrued Expense Entry wizard.
Steps to replicate:
- Install `purchase` and `accountant` with demo.
- Open any Purchase Order > Click on cog menu > Accrued Expense Entry.
- Remove value from `date` and click else where.
Error:
```
File '/home/odoo/odoo19/community/addons/account/wizard/accrued_orders.py', line 67, in _compute_reversal_date
if not record.reversal_date or record.reversal_date <= record.date:
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
TypeError: '<=' not supported between instances of 'datetime.date' and 'bool'
```
Cause:
- As the user removed value from `date`, [here] `record.date` is received as False.
- As a result the comparison `record.reversal_date <= record.date` causes this error to occur.
Solution:
- Added a conditional check for `date` before the date comparison.
[here]: https://github.com/odoo/odoo/blob/8791cdcd89ea3cb56b1fac63b3e2ffbd2956a912/addons/account/wizard/accrued_orders.py#L67
No ID
---
I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Forward-Port-Of: odoo/odoo#269418
Forward-Port-Of: odoo/odoo#262568This update fixes a previous issue where sales employees transitioning to non-commission roles incorrectly accrued commission losses for public holidays and sick time. The change ensures that these employees are no longer penalized for time off when their compensation structure has changed, improving payroll accuracy.
Original PR description
If a salesman moves to another job that doesn't pay commission, he shouldn't have loss on commissions for public holidays and sick time off. Forward-Port-Of: odoo/enterprise#120386
16 changes
Resolved issues and error corrections
This update fixes an issue where Odoo was incorrectly displaying Bank of Mexico currency rates. The change shifts the rate date by one day to align with the Bank of Mexico's data, ensuring accurate currency conversions within the system. This improves the reliability of financial reporting.
Original PR description
banxico fetches the rates applied on the previous day, when we introduced using previous day's currency rate (here: https://github.com/odoo/odoo/pull/231948), we broke their logic. shift the rates date by one day to account for the change. task-6264708
This update fixes an issue where a second stock valuation entry was created when a repair order was finished and then a quotation or invoice was generated. The fix ensures that only one valuation entry is created for a product linked to a repair order, streamlining accounting processes and preventing potential discrepancies.
Original PR description
When finishing a repair order a stock valuation entry is created for the product used. If you then make a quotation and invoice it another stock valuation entry would be created for the same product.…
When finishing a repair order a stock valuation entry is created for the product used. If you then make a quotation and invoice it another stock valuation entry would be created for the same product. Steps to reproduce: ------------------- * Create a category using FIFO and real time valuation * Create a product using this category and set it's cost to 5€ * Set some on hand quantity for the product * Create a repair order and add the product with the "Add" option * Finish the repair order > Observation: At this point you should have a valuation entry in the accouting app * From the repair order create a quotation and invoice it > Obesrvation: If you check the accounting entries again you will see a second valuation entry Why the fix: ------------ When checking if the line is eligible for valuation we make sure that if it is linked to a repair order, this repair order should not have any accounting entries linked to it. opw-5429996 Forward-Port-Of: odoo/odoo#254468
This update resolves an issue where links within PDF documents viewed in the Odoo Enterprise viewer were not functioning correctly. The fix adjusts the layering of elements to ensure clicks are properly directed to the PDF links, improving usability. This ensures users can access links within attached PDF documents.
Original PR description
Version - 18.0 Steps to reproduce: 1. Upload a PDF document containing bookmarks and internal/external links 2. Open the document 3. Click on the links, some work and some do not Issue: `canvas_layer_0` is positioned over the PDF viewer with `z-index: 1`, intercepting clicks intended for PDF link annotations and making internal/external links unresponsive. The `.textLayer` already has `z-index: 2 !important` in iframe.css to prevent the same problem for text selection Fix: Added `z-index: 2 !important` to `.annotationLayer section` in `iframe.css` raising it above `canvas_layer_0`. Taskid = 6237688 Forward-Port-Of: odoo/enterprise#118040
This update resolves an issue where the builder sidebar incorrectly displayed 'Block' for website snippets. The fix ensures that snippet titles are correctly shown in the builder, improving usability for creating and editing website pages and CRM pages. This was caused by a change in the plugin's setup process.
Original PR description
\* = website, website_crm ### Issue: When a page is created either through the configurator or from an existing page template, block-level snippets do not display the correct title in the builder…
\* = website, website_crm
### Issue:
When a page is created either through the configurator or from an
existing page template, block-level snippets do not display the correct
title in the builder sidebar. Instead, "Block" is shown for all
snippets.
### Steps to Reproduce:
- **Configurator:**
1. Install the website module or create a new website from Settings.
2. Complete all configurator steps. Do not use "Skip and start from
scratch".
- **Page template:**
1. Open the website and click the "New" button in the systray.
2. Click on "Page" and choose any template other than a blank page.
### Observed behavior:
The builder sidebar shows "Block" in the option container for all
snippets instead of their actual names.
### Reason:
Previously, just before the builder was opened, the `data-name`
attribute was injected through `_computeSnippetTemplates()` for any
snippet that did not already have it. This behavior was lost after the
plugin refactoring.
### Fix:
As before, we now inject the `data-name` attribute during builder setup
for snippets that do not already have it.
task-[6087348](https://www.odoo.com/odoo/all-tasks/6087348)
---
I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Forward-Port-Of: odoo/odoo#268637
Forward-Port-Of: odoo/odoo#259893This update resolves an issue where the AI's search suggestions were incorrectly applied to multiple Odoo views simultaneously. Previously, any open tab could trigger changes, leading to unexpected behavior. Now, the AI's actions are limited to the originating session, ensuring consistent and intended view updates.
Original PR description
[FIX] ai: scope AI_ADJUST_SEARCH bus event to originating session The AI_ADJUST_SEARCH handler did not check aiSessionIdentifier, so any browser tab subscribed to the bus would apply the AI's…
[FIX] ai: scope AI_ADJUST_SEARCH bus event to originating session
The AI_ADJUST_SEARCH handler did not check aiSessionIdentifier, so any
browser tab subscribed to the bus would apply the AI's resulting search
to its current view. When the view's model lacked a field referenced in
the response (e.g. an "Active or Queue" filter on stage_id leaking from
a project.task chat into a timesheet view), the view raised a KeyError.
Align it with the four AI_OPEN_MENU_* handlers, which already drop events
from other sessions since https://github.com/odoo/enterprise/commit/d85e17d9ccf70f9cfd51c7d6b2a5b52510807484.
Steps to reproduce:
- Run Odoo with the crm and contacts modules installed
- Open two tabs:
- Tab 1: navigate to CRM and ensure you are in List view
- Tab 2: navigate to Contacts and ensure you are also in List view
- In Tab 1 (CRM), open the Ask AI chat and type "Switch to Kanban view"
- CRM switches to Kanban view as expected
- Bug: Tab 2 (Contacts) also switches to Kanban view along with Tab 1,
even though you did not interact with it
Forward-Port-Of: odoo/enterprise#118237This update corrects a misleading warning message displayed in the Expense settings related to Stripe issuing. The system now accurately checks if a company's country supports Stripe issuing based on its fiscal country ID, ensuring users see the correct information and don't inadvertently disable a supported feature. This improves the user experience and avoids unnecessary confusion.
Original PR description
In the Expense settings, under 'Expense Card', the warning 'Stripe issuing is not yet supported for your localization' was displayed when the checkbox 'Expense Card' was unchecked, even if the stripe issuing is supported by the current localization. We now use the fiscal country id of the company to check if the company's country supports stripe issuing. task-6253582 Forward-Port-Of: odoo/enterprise#118654
This update resolves an issue where users on Firefox (Gecko-based browsers) experienced tracebacks during mailing operations. The fix prevents errors from propagating when iframes are disconnected, ensuring stable loading of assets and improving the overall user experience for mass mailing functionality. This resolves a non-deterministic bug that was impacting a subset of users.
Original PR description
Loading assets bundles into an iframe requires the iframe to be connected (present in the DOM) at time of insertion. However, it can happen that iframes are removed from the DOM before all their…
Loading assets bundles into an iframe requires the iframe to be connected (present in the DOM) at time of insertion. However, it can happen that iframes are removed from the DOM before all their assets have loaded in. In these instances, errors from failed bundle loads will turn into tracebacks. This is generally not an issue in Chromium-based browsers as iframes do not fire a load event if they are disconnected; however, in Gecko-based browsers, this can happen. As such, mass_mailing users using Firefox currently receive a systematic traceback, as the CSS file "mass_mailing.assets_inside_builder_iframe.css" will not load. Steps to reproduce: - Use Firefox (or a Gecko-based browser) - Open a new mailing - Select the Events theme and make an edit (add a space...) - Save the mailing - Wait for 23 seconds The bug may be non-deterministic. Fix: Errors during the iframe load process will no longer bubble up if their iframe is disconnected when the error occurs. task-6293998 Co-authored-by: Damien Abeloos <abd@odoo.com> Forward-Port-Of: odoo/odoo#269324
This update fixes an issue where users without HR access rights saw a placeholder image in the timesheet grid view. The fix ensures that all users see their employee avatar, improving the user experience and visual clarity of the timesheet reporting.
Original PR description
Steps to reproduce: ------------------- - Install the hr_timesheet module - Create a user without HR access rights - Create a timesheet - Log in with the above user - Open the kanban view Issue: ------- Instead of showing the employee's avatar, a placeholder image is displayed. Reason: ---------- The user does not have access to the hr.employee model. Fix: ----- In this commit, if the user does not have access to hr.employee,we fetch the image from the hr.employee.public model. task: 4461272 Forward-Port-Of: odoo/enterprise#120165 Forward-Port-Of: odoo/enterprise#83574
This update fixes an issue where employee availability dates in the Odoo discussion tool were incorrectly displayed due to timezone differences. By adding a consistent 'UTC' timezone setting, the system now accurately reflects the employee's leave dates, ensuring correct communication and scheduling.
Original PR description
Issue: ---------------------------------------- When in a negative timezone, the "Out of Office until..." text in discuss shows the day before. Steps to reproduce:…
Issue: ---------------------------------------- When in a negative timezone, the "Out of Office until..." text in discuss shows the day before. Steps to reproduce: ---------------------------------------- - Change the timezone of the user to "America/Toronto" for example - Have an employee currently on leave until tomorrow - Open discuss to chat with this employee - The "Out of Office until..." shows today's date Cause: ---------------------------------------- When calling `toLocaleString()` without a timezone specified in the options, the date is converted to local time (in the browser's timezone). Here `persona.out_of_office_date_end` is just a date, `deserializeDateTime()` converts it to a timestamp, so the same day at 0am. Then if the timezone is negative, the timestamp becomes an hour the previous day when calling `toLocaleString()`. The format we give `DateTime.DATE_MED` doesn't include hours, so we just display the previous date. Solution: ---------------------------------------- Add `timeZone:"UTC"` in the options to avoid the timezone conversion. opw-6252040 Forward-Port-Of: odoo/odoo#268886 Forward-Port-Of: odoo/odoo#267479
This update fixes an issue where Unicode slugs were incorrectly combining characters instead of using separators like hyphens. Previously, `/` characters were silently removed, resulting in shortened URLs. Now, slugs will correctly generate URLs with hyphens, ensuring consistent and accurate URL structure.
Original PR description
After Unicode slug support was introduced in https://github.com/odoo/odoo/commit/926e45aa93ffc3f74fe9bf4ae8f06642976c2ae5, `/`
characters started being silently removed instead of treated as
slug boundaries.
As a result:
"foo/bar" -> "foobar"
while it should instead generate:
"foo/bar" -> "foo-bar"
This restores the previous behavior by treating each non word character
as separators normalized to `-`.
task-6219984
Forward-Port-Of: odoo/odoo#269371
Forward-Port-Of: odoo/odoo#264557This update resolves a technical issue that caused the account reports audit tour to fail in complex Odoo environments. Specifically, a timing problem was fixed where the tour triggered prematurely, preventing users from accessing the necessary financial data. This ensures the audit tour consistently works as expected.
Original PR description
The account_reports_audit tour was failing at the "Balances" button step due to a race condition in the preceding steps. In environments with many modules, the "Open the working file" step was triggered prematurely while still on the return checks view, because its selector was too broad. This commit narrows the selector for "Open the working file" to ensure it only triggers once the Kanban view is actually active. [runbot-938920](https://runbot.odoo.com/odoo/runbot.build.error/938920) Forward-Port-Of: odoo/enterprise#118346
This update resolves an issue where invoices generated from the Odoo website's e-commerce orders were incorrectly configured to use CFDI (Mexican electronic invoicing) format. The change ensures invoices are only CFDI-compliant when required, streamlining the process for customers and aligning with business needs. This improves efficiency and reduces unnecessary compliance overhead.
Original PR description
There is no reason why we would always cfdi to public when creating orders from the e-commerce. When the customer give all their info, the invoice should not be cfdi to public. opw-6180766 Forward-Port-Of: odoo/enterprise#119442 Forward-Port-Of: odoo/enterprise#116061
This update fixes an issue where imported Peppol/UBL vendor bills with 100% discounts were incorrectly processed. The fix ensures that a line with a zero-value LineExtensionAmount (representing a fully discounted line) is correctly interpreted, preventing incorrect quantity and discount calculations. This improves the accuracy of imported financial data.
Original PR description
When importing a Peppol/UBL vendor bill containing a line with a 100% discount, the line was created in Odoo with quantity=1 and discount of 100*original_qty, instead of the expected…
When importing a Peppol/UBL vendor bill containing a line with a 100% discount, the line was created in Odoo with quantity=1 and discount of 100*original_qty, instead of the expected quantity=qty_original and discount=100%. This happened because the line-level branching in `_import_ubl_invoice_line_add_price_unit_quantity_discount` relied on the truthiness of `line_extension_amount` to detect whether the `LineExtensionAmount` node was present in the XML. a line with a genuine `<cbc:LineExtensionAmount>0</...>` was indistinguishable from a line where the node was missing, and fell through to the fallback branch intended for incomplete XML. That fallback reconstructs the quantity from `<cbc:BaseQuantity>`, ignoring `<cbc:InvoicedQuantity>`, and then computes the discount percentage against the wrong denominator. a `LineExtensionAmount` of 0 is the only legal way to express a fully discounted line, so this case must be distinguished from the node being absent. the fix is simply checking if the line exist not if its True opw-6176349 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#265261
This update resolves an issue where thumbnails weren't generated when attaching documents to messages within the composer. The fix ensures that thumbnails are correctly displayed, improving the user experience when sharing documents via this feature. This enhancement maintains consistent functionality for users.
Original PR description
When attaching a documents to a message in the composer, the thumbnail was not generated. This commit fix this issue. Task-5096039 Forward-Port-Of: odoo/enterprise#116188
This update resolves an issue where non-mandatory text fields in sign documents appeared with a dark background when using dark mode in browsers. The fix ensures that these fields have a transparent background, matching the overall page aesthetic and providing a consistent user experience. This improves the visual quality of the sign document.
Original PR description
## Issue When using the browser's dark mode, non-mandatory text fields in sign documents appear with a dark background, which does not match the aesthetic of the rest of the page. ## Steps to…
## Issue
When using the browser's dark mode, non-mandatory text fields in sign documents appear with a dark background, which does not match the aesthetic of the rest of the page.
## Steps to reproduce
1. Set your browser's theme to a dark theme (in Chrome, go to Settings > Appearance > Theme, chose a theme from the dark options)
2. Install Sign (`sign`)
3. Open a Sign template and add 3 Text fields:
- Mandatory
- Non-mandatory
- Read-only (for comparison)
4. Click *Sign Now*
5. **The non-mandatory text field has a dark background.**
## Cause
Since a [PDF.js update](https://github.com/mozilla/pdf.js/commit/ae1cbc6a9ecc738d6777830488ad5481b97338bc), the `light dark` color-theme was added to `:root`. This means that the element will react to the settings of the browser and adapt its background and text color. In this case, there's no other `background-color` provided to mandatory fields, resulting in them using the dark color of the browser theme.
## Fix
We make the default background of text fields transparent then we update the selector of `.o_sign_sign_item_required` to prevent their `background-color` from being overwritten by that new transparent background.
| | Before | After |
|------------|--------|-------|
| **Light mode** | <img width="211" height="99" alt="6213059-before-light" src="https://github.com/user-attachments/assets/c4c70394-c7c2-4dbf-92b9-c1362d1cf9c8" /> | <img width="207" height="89" alt="6213059-after-light" src="https://github.com/user-attachments/assets/63142be5-9f7d-4d5d-94e8-ef9428e1b778" /> |
| **Dark mode** | <img width="220" height="95" alt="6213059-before-dark" src="https://github.com/user-attachments/assets/19149c3d-511e-407c-821e-f318f373368a" /> | <img width="210" height="103" alt="6213059-after-dark" src="https://github.com/user-attachments/assets/0b412d4f-061f-41b3-aae9-569b9a8219dc" /> |
opw-6213059This update resolves an issue where a JSON decoding error could occur when downloading ETA invoices as PDFs. A recent change introduced a workaround, but a new error type wasn't being caught. This fix adds a catch block to properly handle the `json.JSONDecodeError`, ensuring reliable invoice downloads.
Original PR description
When we download the ETA invoice PDF, a JSONDecoderError can happen when calling the json() method on the request. This error is properly caught by Odoo : https://github.com/odoo/odoo/blob/7a9a340e0dbac470c4bea3f8ce8a32e55f3e82e6/addons/l10n_eg_edi_eta/models/account_edi_format.py#L58-L60 However, the following commit introduced a monkeypatch to handle errors when the simplejson library is installed : 2435fe76eec1fc4320ef71726fc7f16ece653a32 If we meet the conditions, the original error is replaced by a json.JSONDecodeError which is not caught during the previous process. We propose to add this error to the catch block. This modification was inspired by the commit d483dac144a9caf84c44b9d8d394ea327ca87cfe. opw-6266862 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#268309
2 changes
Resolved issues and error corrections
This update resolves an issue where PDF links within the Odoo viewer were not functioning correctly. The fix adjusts the layering of elements to ensure clicks are properly directed to the PDF links, improving document navigation. This ensures users can reliably access links within uploaded PDFs.
Original PR description
Version - 18.0 Steps to reproduce: 1. Upload a PDF document containing bookmarks and internal/external links 2. Open the document 3. Click on the links, some work and some do not Issue: `canvas_layer_0` is positioned over the PDF viewer with `z-index: 1`, intercepting clicks intended for PDF link annotations and making internal/external links unresponsive. The `.textLayer` already has `z-index: 2 !important` in iframe.css to prevent the same problem for text selection Fix: Added `z-index: 2 !important` to `.annotationLayer section` in `iframe.css` raising it above `canvas_layer_0`. Taskid = 6237688 Forward-Port-Of: odoo/enterprise#118040
This update fixes an issue where users without HR access rights saw a placeholder image in the timesheet grid view. The fix ensures that all users see their employee avatar, improving the user experience and visual clarity of the timesheet data. This change was made to enhance usability and consistency.
Original PR description
Steps to reproduce: ------------------- - Install the hr_timesheet module - Create a user without HR access rights - Create a timesheet - Log in with the above user - Open the kanban view Issue: ------- Instead of showing the employee's avatar, a placeholder image is displayed. Reason: ---------- The user does not have access to the hr.employee model. Fix: ----- In this commit, if the user does not have access to hr.employee,we fetch the image from the hr.employee.public model. task: 4461272 Forward-Port-Of: odoo/enterprise#120165 Forward-Port-Of: odoo/enterprise#83574
5 changes
Resolved issues and error corrections
This update fixes an issue where PDF links within the Odoo viewer were not working correctly. The problem stemmed from a layer interfering with click events. By adjusting the layer order, the links are now reliably clickable, ensuring users can access content within the PDF documents.
Original PR description
Version - 18.0 Steps to reproduce: 1. Upload a PDF document containing bookmarks and internal/external links 2. Open the document 3. Click on the links, some work and some do not Issue: `canvas_layer_0` is positioned over the PDF viewer with `z-index: 1`, intercepting clicks intended for PDF link annotations and making internal/external links unresponsive. The `.textLayer` already has `z-index: 2 !important` in iframe.css to prevent the same problem for text selection Fix: Added `z-index: 2 !important` to `.annotationLayer section` in `iframe.css` raising it above `canvas_layer_0`. Taskid = 6237688 Forward-Port-Of: odoo/enterprise#118040
This update resolves a problem where users were incorrectly denied access to WhatsApp templates when creating event communications. The fix prevents users from creating new WhatsApp templates, ensuring proper access control and preventing the 'User does not have access' error. This improves the event communication workflow.
Original PR description
Issue: 1) User goes to Event.event Form -> communication tab -> add line 2) Select whatsapp -> type something -> create and edit -> create new template with any model event.registration -> save ( all the way including the event form) 3) reload page -> whatsapp event.mail displays "User does not have access to this record". Fix: add "'no_create_edit': True" to the associated field in the xml to block creation of new mail.templates opw-6037488 Forward-Port-Of: odoo/odoo#259683
This update fixes an issue where images in email marketing templates were stretched and distorted when paired with long text. By removing specific styling, images now maintain their natural aspect ratio and fit neatly alongside the text, ensuring a professional and consistent email design. This improves the overall visual quality of marketing campaigns.
Original PR description
The media list snippet forces the image to fill the height of its row. The image column carries align-self-stretch and the image carries h-100, so when the text next to the image is longer than the…
The media list snippet forces the image to fill the height of its row. The image column carries align-self-stretch and the image carries h-100, so when the text next to the image is longer than the image is tall, the row grows to fit the text and the image is stretched to that height (and cropped through object-fit: cover). The longer the text, the more the image is distorted. Drop h-100 from the image and align-self-stretch from its column in the s_media_list snippet and in the mass_mailing_themes templates that reuse it. With no forced height the image keeps its natural aspect ratio and the row height follows its content, so the image is laid out next to the text instead of being stretched to match it. Steps to reproduce: 1. Open Email Marketing and create a new mailing. 2. Select the Blogging template for the mail body. 3. In a media item, replace the text next to an image with a very long paragraph. => The image is stretched and cropped to match the height of the text. Ticket [link](https://www.odoo.com/odoo/project.task/5117571) opw-5117571 Forward-Port-Of: odoo/odoo#238138
This update fixes an issue where imported Peppol/UBL vendor bills with 100% discounts were incorrectly processed. The fix ensures that a line with a zero-value `LineExtensionAmount` (representing a fully discounted line) is correctly interpreted, preventing incorrect quantity and discount calculations. This improves the accuracy of UBL invoice imports.
Original PR description
When importing a Peppol/UBL vendor bill containing a line with a 100% discount, the line was created in Odoo with quantity=1 and discount of 100*original_qty, instead of the expected…
When importing a Peppol/UBL vendor bill containing a line with a 100% discount, the line was created in Odoo with quantity=1 and discount of 100*original_qty, instead of the expected quantity=qty_original and discount=100%. This happened because the line-level branching in `_import_ubl_invoice_line_add_price_unit_quantity_discount` relied on the truthiness of `line_extension_amount` to detect whether the `LineExtensionAmount` node was present in the XML. a line with a genuine `<cbc:LineExtensionAmount>0</...>` was indistinguishable from a line where the node was missing, and fell through to the fallback branch intended for incomplete XML. That fallback reconstructs the quantity from `<cbc:BaseQuantity>`, ignoring `<cbc:InvoicedQuantity>`, and then computes the discount percentage against the wrong denominator. a `LineExtensionAmount` of 0 is the only legal way to express a fully discounted line, so this case must be distinguished from the node being absent. the fix is simply checking if the line exist not if its True opw-6176349 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#265261
This update resolves an issue where errors occurred when downloading ETA invoice PDFs due to problems decoding JSON data. A recent change introduced a workaround, but a new error type wasn't being caught. This fix adds a necessary catch block to ensure all JSON decoding errors are handled correctly, preventing potential download failures.
Original PR description
When we download the ETA invoice PDF, a JSONDecoderError can happen when calling the json() method on the request. This error is properly caught by Odoo : https://github.com/odoo/odoo/blob/7a9a340e0dbac470c4bea3f8ce8a32e55f3e82e6/addons/l10n_eg_edi_eta/models/account_edi_format.py#L58-L60 However, the following commit introduced a monkeypatch to handle errors when the simplejson library is installed : 2435fe76eec1fc4320ef71726fc7f16ece653a32 If we meet the conditions, the original error is replaced by a json.JSONDecodeError which is not caught during the previous process. We propose to add this error to the catch block. This modification was inspired by the commit d483dac144a9caf84c44b9d8d394ea327ca87cfe. opw-6266862 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#268309
2 changes
Resolved issues and error corrections
This update resolves a technical issue where the Urbanpiper order information screen incorrectly displayed customer details even after the customer was removed. The fix ensures that customer information is only shown when a customer is actually linked to the order, improving the user experience and preventing error messages.
Original PR description
Steps to reproduce: ==== - Place an order through Urbanpiper. - Edit the order and remove the customer. - Open the ticket screen and click the info button. - A traceback occurs. Cause: ==== - Customer details were rendered even when no customer was linked to the order. Fix: ==== - Display customer details only when a customer is present on the order. task-6233812 Forward-Port-Of: odoo/enterprise#118147
This update resolves an issue where PDF links within the Odoo viewer were not functioning correctly. The fix adjusts the layering of elements to ensure clicks are properly directed to the PDF links, improving the user experience when viewing documents with internal and external links. This ensures all links within the PDF viewer are accessible.
Original PR description
Version - 18.0 Steps to reproduce: 1. Upload a PDF document containing bookmarks and internal/external links 2. Open the document 3. Click on the links, some work and some do not Issue: `canvas_layer_0` is positioned over the PDF viewer with `z-index: 1`, intercepting clicks intended for PDF link annotations and making internal/external links unresponsive. The `.textLayer` already has `z-index: 2 !important` in iframe.css to prevent the same problem for text selection Fix: Added `z-index: 2 !important` to `.annotationLayer section` in `iframe.css` raising it above `canvas_layer_0`. Taskid = 6237688 Forward-Port-Of: odoo/enterprise#118040
9 changes
Resolved issues and error corrections
This update ensures that when employees' wages are adjusted through the 'Employees Under Minimum Wage' warning, the existing active contract is updated instead of being terminated and replaced. This prevents disruption to payroll processing and maintains accurate contract records, streamlining payroll management.
Original PR description
Before this commit, clicking 'Adjust Wages' on the 'Employees Under Minimum Wage' warning terminated the active contract (setting contract_date_end to yesterday on the previous version) and started a brand new contract today. After this commit, the action creates a new effective-dated version within the active contract: it inherits the same contract_date_start and contract_date_end, and the minimum wage is written on it. task-6217548 Forward-Port-Of: odoo/enterprise#117445
This update resolves an issue where users attempting to access archived documents through specific methods (like widgets or notifications) would incorrectly display a 'not found' message. This fix ensures that archived documents are correctly accessed, improving the user experience and preventing frustrating errors. It's a follow-up to previous improvements related to document handling.
Original PR description
When a user tries to access an archived document via * a many2one widget * `/odoo/documents.document/<id>` * a discuss notification they end up in "All" with a toast specifying that the document was not found. Follow-up of Task-6068437 (follow up of Task-5386466). Task-6214488 Forward-Port-Of: odoo/enterprise#119565 Forward-Port-Of: odoo/enterprise#117229
This update corrects a display issue related to Sunday formatting in the Thai (th_TH) locale, which was impacted by a recent Chrome browser update. The change ensures that the correct day name is consistently shown to users, regardless of the browser's settings.
Original PR description
Chrome 148 changed the display format for Sundays in the th_TH locale. This commit modifies the test to expect either the full or abbreviated day name, depending on what the browser Intl API actually returns. Forward-Port-Of: odoo/enterprise#119708
This update fixes a potential issue where state deductions exceeding employee income could result in negative taxable income values on payslips. The change ensures that taxable income defaults to zero in these scenarios, preventing inaccurate payroll calculations and ensuring compliance. This improves the reliability of US HR payroll reporting.
Original PR description
This commit simply defaults the computed taxable income amount to 0 in case the state deductions are greater than their gross income. Otherwise our payslips would imply that these employees are owed money by the state opw-5137280 Forward-Port-Of: odoo/enterprise#119208 Forward-Port-Of: odoo/enterprise#98114
This update allows users to create credit notes even when the original invoice isn't present in the system. This change, stemming from a related Odoo development (odoo/odoo#258132), ensures greater flexibility in credit note creation. The tests have been updated to reflect this new functionality.
Original PR description
Now the system allows the user to create a credit note without having the original invoice in the system. Due to what was done in odoo/odoo#258132 some tests were failing. These tests have been modified to match with the new field and behaviour
This update resolves an issue where the search menu in the Web Studio module would unexpectedly open and close when a user clicked the search input while the menu was already visible. The fix adds a check to prevent this behavior, ensuring a smoother and more reliable user experience.
Original PR description
When clicking on the search input while the search dropdown is already open, it closes it on pointer-down and reopens it on pointer-up. This commit fixes the issue with a check on a data attribute. task-6190769
This update ensures that fiscal categories and related products are automatically loaded when using the self-order blackbox feature. Previously, this process was inconsistent, leading to potential errors. This change improves the reliability and usability of the self-order experience.
Original PR description
Before this commit, the fiscal category and the products work in and work out weren't necessarily automatically loaded when using the self with a blackbox, it is now the case. Forward-Port-Of: odoo/enterprise#117288 Forward-Port-Of: odoo/enterprise#117044
This update fixes a technical issue in the Website Studio form builder by updating test selectors to align with a recent layout change. This ensures tooltips and question mark icons are correctly displayed, improving the overall user experience for building website forms. The change addresses a broken testing process.
Original PR description
The HTML builder now wraps row labels and tooltips in a dedicated container so the tooltip also appears when hovering the question mark icon. This layout change broke website_studio tests relying on selectors based on the previous DOM structure around option labels. This commit updates the form option test selectors to target the builder row data-label API instead of positional DOM relations. task-[6196877](https://www.odoo.com/odoo/project/974/tasks/6196877)
This update enhances the visual design of the global filter items within the Odoo Enterprise application. A subtle border and rounded corners have been added to the filter items, improving their overall appearance and usability. This is a minor aesthetic improvement.
Original PR description
Added a border and rounded corners Task: 6103251
5 changes
Resolved issues and error corrections
This update adjusts the width of the Odoo Studio sidebar when not in XML editor mode. Previously, the sidebar could expand excessively, creating a less user-friendly experience. This change ensures a consistent and manageable sidebar width for all users.
Original PR description
This commit puts a hard limit to the studio sidebar width when it is not in xml editor mode. task-4935942 Back-Port-Of: https://github.com/odoo/enterprise/pull/93087
This update resolves an issue where PDF links within the Odoo viewer were not functioning correctly. The fix adjusts the layering of elements to ensure clicks are properly directed to the PDF links, improving the user experience when viewing documents with internal and external links. This ensures all links within the PDF viewer are accessible.
Original PR description
Version - 18.0 Steps to reproduce: 1. Upload a PDF document containing bookmarks and internal/external links 2. Open the document 3. Click on the links, some work and some do not Issue: `canvas_layer_0` is positioned over the PDF viewer with `z-index: 1`, intercepting clicks intended for PDF link annotations and making internal/external links unresponsive. The `.textLayer` already has `z-index: 2 !important` in iframe.css to prevent the same problem for text selection Fix: Added `z-index: 2 !important` to `.annotationLayer section` in `iframe.css` raising it above `canvas_layer_0`. Taskid = 6237688 Forward-Port-Of: odoo/enterprise#118040
This update corrects a misleading warning message displayed in Odoo's expense settings. Previously, users were incorrectly alerted that Stripe issuing wasn't supported for their localization, even when it was. The fix now accurately checks the company's fiscal country to determine Stripe issuing support, ensuring a smoother user experience.
Original PR description
In the Expense settings, under 'Expense Card', the warning 'Stripe issuing is not yet supported for your localization' was displayed when the checkbox 'Expense Card' was unchecked, even if the stripe issuing is supported by the current localization. We now use the fiscal country id of the company to check if the company's country supports stripe issuing. task-6253582
This update resolves an error that occurred when generating payment reports for Swiss companies. The issue arose when the required module was missing, causing a system error. Now, the payment report generation process will function correctly regardless of whether the specific Swiss payroll module is installed.
Original PR description
*=l10n_ch_hr_payroll,hr_payroll_account_iso20022 When clicking the create payment report button on a payslip for a Swiss company, a traceback occurs if the ``hr_payroll_account_iso20022`` module is…
*=l10n_ch_hr_payroll,hr_payroll_account_iso20022 When clicking the create payment report button on a payslip for a Swiss company, a traceback occurs if the ``hr_payroll_account_iso20022`` module is not installed. Steps to reproduce the error: - Install ``l10n_ch_hr_payroll`` module - Switch to CH Company - Create an Employee and running contract for it - Go to Payroll > Payslip > All payslips > Create a new payslip > Set the employee > Confirm > Create payment report Traceback: ```py ValueError: Wrong value for hr.payroll.payment.report.wizard.export_format: 'iso20022_ch' ``` https://github.com/odoo/enterprise/blob/7792926504a823590fbbe574a96994002a92fc17/l10n_ch_hr_payroll/models/hr_payslip.py#L383 https://github.com/odoo/enterprise/blob/7792926504a823590fbbe574a96994002a92fc17/l10n_ch_hr_payroll/models/hr_payslip_run.py#L13 Here, ``iso20022_ch`` is passed as ``export_format``, However, ``iso20022_ch`` is added to the selection field in the ``hr_payroll_account_iso20022`` module at [1]. When that module is not installed, the selection value does not exist, leading to the above error. [1]: https://github.com/odoo/enterprise/blob/7792926504a823590fbbe574a96994002a92fc17/hr_payroll_account_iso20022/wizard/hr_payroll_payment_report_wizard.py#L11 sentry-7391832811 Forward-Port-Of: odoo/enterprise#120171 Forward-Port-Of: odoo/enterprise#113277
This update fixes a visual issue where users without HR access rights on the timesheet grid view were seeing a placeholder image instead of their avatar. The fix ensures all users can see their avatar in the timesheet grid, improving the user experience and visual consistency.
Original PR description
Steps to reproduce: ------------------- - Install the hr_timesheet module - Create a user without HR access rights - Create a timesheet - Log in with the above user - Open the kanban view Issue: ------- Instead of showing the employee's avatar, a placeholder image is displayed. Reason: ---------- The user does not have access to the hr.employee model. Fix: ----- In this commit, if the user does not have access to hr.employee,we fetch the image from the hr.employee.public model. task: 4461272 Forward-Port-Of: odoo/enterprise#120165 Forward-Port-Of: odoo/enterprise#83574
4 changes
Resolved issues and error corrections
This update resolves an issue where the Odoo system incorrectly flagged incompatible UoM selections during UBL import. Specifically, when a UBL bill used a different UoM category than the product's default, it would trigger an error. Now, the system automatically uses the product's original UoM category, ensuring smoother and more reliable import processes.
Original PR description
The new collected_values UBL import flow sets product_uom_id from the XML unitCode without checking that the resolved UoM category matches the matched product's UoM category. When they diverge, writing the line triggers the incompatible error. Steps to reproduce: 1. Create a product "XYZ" with UoM "Units" (category "Unit"). 2. Import a Peppol UBL bill whose line has Item/Name "XYZ" and unitCode="MTK" (uom_square_meter, "Surface"). 3. Import fails with: "The Unit of Measure (UoM) 'm²' you have selected for product 'XYZ', is incompatible with its category : Unit." This fix fall back to the product's default UoM when categories mismatch. opw-6121714
This update fixes an issue where images in email marketing templates were stretched and distorted when paired with long text. By removing specific styling, images now maintain their natural aspect ratio and fit correctly alongside the text, ensuring a cleaner and more professional email design. This improves the overall visual quality of marketing communications.
Original PR description
The media list snippet forces the image to fill the height of its row. The image column carries align-self-stretch and the image carries h-100, so when the text next to the image is longer than the…
The media list snippet forces the image to fill the height of its row. The image column carries align-self-stretch and the image carries h-100, so when the text next to the image is longer than the image is tall, the row grows to fit the text and the image is stretched to that height (and cropped through object-fit: cover). The longer the text, the more the image is distorted. Drop h-100 from the image and align-self-stretch from its column in the s_media_list snippet and in the mass_mailing_themes templates that reuse it. With no forced height the image keeps its natural aspect ratio and the row height follows its content, so the image is laid out next to the text instead of being stretched to match it. Steps to reproduce: 1. Open Email Marketing and create a new mailing. 2. Select the Blogging template for the mail body. 3. In a media item, replace the text next to an image with a very long paragraph. => The image is stretched and cropped to match the height of the text. Ticket [link](https://www.odoo.com/odoo/project.task/5117571) opw-5117571 Forward-Port-Of: odoo/odoo#238138
This update fixes an issue where invoices generated with very small product prices (e.g., $0.00003) were not correctly formatted in the UBL electronic invoice file. This ensures accurate data transmission to trading partners using the PEPPOL standard, preventing potential errors in order processing. The change improves the reliability of our UBL export functionality.
Original PR description
**STEP TO REPRODUCE** 1. Go in debug mode to increase product price decimal precision to 5. 2. Create an invoice with a product of price 0.00003 3. Send the invoice using peppol to generate the ubl file. 4. Opening the file, notice the PriceAmount is 3.33333e-05 which is not a valid string for a float in ubl. opw-6188947 Forward-Port-Of: odoo/odoo#265753
This update fixes an issue where product prices weren't updating correctly when the cost price was changed. The fix ensures that price calculations are accurate, preventing delays and ensuring consistent pricing for product variants linked to cost-based pricelists. This improves the reliability of our pricing system.
Original PR description
When we create a product variant and have a pricelist which is based on the cost price, and change the cost price, the on_sale_price doesn't update correctly. It gets delayed by one update because the product._origin isn't getting updated with the new onchanged value. Steps to Reproduce: 1.Create a pricelist and add a line with "formula" price type, and based on "cost", 2.Create a product variant, and add the pricelist just created. 3.Change the "Cost". The "On Sale Price" updates based on the value before. To fix the issue, we need to update the product._origin for standard_price just like the lst_price before computing the on_sale_price opw-5947995
2 changes
Resolved issues and error corrections
This update addresses a technical issue where a potential error occurred when comparing history data, specifically when the data was empty. The fix ensures the system gracefully handles this situation, preventing a crash and maintaining stability. This resolves a reported bug impacting the functionality of the web editor.
Original PR description
If, for whatever reason, the history we try to compare is an empty string, we might get a value error thrown. We guard the code to avoid the error. see :https://github.com/odoo/odoo/issues/269149 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This update resolves an issue preventing users from expanding lines in the Partner Ledger report when using the MXN currency for invoices in Mexico. The root cause was a lack of duplicate checking when adding lines to the report, leading to an error. Resetting the invoice to draft and re-confirming fixes the problem.
Original PR description
## Short functional explanation of the error When setting up the company currency to MXN and creating a first invoice with a customer located in Mexico, in the Partner Ledger report, it is not…
## Short functional explanation of the error When setting up the company currency to MXN and creating a first invoice with a customer located in Mexico, in the Partner Ledger report, it is not possible to expand the lines as it triggers an error. ## Reproduction Steps 1. Create a db without demo data. 2. Download the modules l10n_mx and l10_mx_edi_extended. 3. Set the company currency to MXN. 4. Go to settings and check the box "Analytic Accounting". 5. Create a customer located in Mexico. 6. Create a product with a random price. 7. Activate debug mode. Go to reporting > Partner Ledger, click the small cog menu on the right, go to the options tab, and check Analytic Filter and Analytic Group By boxes. 8. In the accounting module, click on configuration > analytic plan, and create a new analytic plan. Then, click on the smart button "Analytic Accounts" on the top right of the screen and create a new analytic account. 9. Create a customer invoice in the accounting module. Set the customer as the one you just created, set a payment term and select the product you created for an invoice line. In Analytic Distribution, select the analytic account you created. Then, click on Journal Items. You should see 4 lines. For each line, set the analytic distribution to the analytic account you created. 9. Click on reporting > Partner Ledger. Click on the button Analytic Group By and select the analytic account you created. Then, try to expand the line. Note: if you reset your invoice to draft then confirm it again, the error won't appear anymore. ### Expected behavior All the details of the lines should appear ### Unexpected behavior An Odoo error appears: duplicate key in t-foreach ## Origin of the issue When adding lines to the report, a check to see whether the lines already appear in the report isn't made. __ opw-4967479