Daily updates from Odoo
Thursday, December 18, 2025
75 changes
12 changes
Resolved issues and error corrections
This update resolves an issue where archived employees were still appearing in the timesheet section of helpdesk tickets. The fix ensures that only currently active employees are displayed, preventing incorrect timesheet entries and improving data accuracy. This change enhances the reliability of our helpdesk reporting.
Original PR description
**Steps to Reproduce:** - Install hekpdesk_timesheet. - Go to settings, enable timesheets - Archive an employee. - In a ticket, try to add a timesheet entry. **Isuue:** Archived employees are also appearing under timesheets tab. **Fix:** Passed a context so that only active employees appear in the selection. task-5078763 Forward-Port-Of: odoo/enterprise#95137
This update fixes an issue where product documents stopped appearing on product pages after a document version was updated. The fix ensures that the product document record is correctly linked to the latest document version, maintaining accurate product information. This improves data consistency and prevents disruptions to product listings.
Original PR description
**Steps to reproduce:** 1. Install `sale_management` and `documents`. 2. Go to settings > check `product` under Files Centralization. 3. Create a product and add a document to it using the smart button. 4. Update the version of that document from the *Manage Versions* action on the document page. **Issue:** - After updating the document version, the linked document no longer appears on the product page. **Cause:** - The product page displays records from the `product.document` model, but its `ir_attachment_id` was not updated when the document’s version changed. **Solution:** - Update the `ir_attachment_id` on the corresponding `product.document` record when the document version is updated. opw-5144041 Forward-Port-Of: odoo/enterprise#99226
This update resolves an issue where removing all elements from the 'Contact Us' button in the website editor caused a website error. The fix ensures that unremovable elements, like this button, are not accidentally deleted, maintaining website stability and preventing disruptions for users.
Original PR description
Currently, an error occurs when the user edits the `Contact Us` button and removes both the label and the link.
**Steps to replicate:**
* Install `website`
* website > edit > Click on contact us > Edit Link
* replace all the fields by adding one space ' ' and apply > Save.
**Error:**
`ValueError: Element '<xpath expr='//a[hasclass('oe_unremovable')]'>' cannot be located in parent view.`
**Root cause:**
* When the user edits the `Contact Us` button and clears all the fields, then clicks `Apply` line [1] removes the button. But the button is meant to be unremovable, so this breaks the website.
**Solution:**
* Add a check before removal to verify whether the link element is removable and only remove it if it is removable.
[1]:
https://github.com/odoo/odoo/blob/674280cd86088a6cc3bd5c10dd56ece65bf5e517/addons/html_editor/static/src/main/link/link_plugin.js#L701
sentry-6639000902This update enhances the stability of the printer integration by adding exception handling for the Python escpos library. Previously, unexpected errors could cause the printer to fail, and this change ensures continued functionality. It's a routine fix to maintain reliable printing operations.
Original PR description
With python escpos library we are currently not catching some exceptions. This PR adds more exceptions to catch to keep the printer working Additional exception caught for >=v19.0 in https://github.com/odoo/odoo/pull/240429
This update corrects a display issue where task templates were incorrectly shown alongside regular tasks in the Odoo portal. The fix ensures that task templates are hidden from portal users, improving the clarity and usability of task management. This change was made to streamline the portal experience and prevent confusion.
Original PR description
Steps to Reproduce
- Log in as a portal user.
- Go to My Tasks and notice that task templates are visible with tasks.
- Share it with the portal user, giving edit access.
- Open the project sharing view and observe that task templates are visible there.
Cause
- The domains used to filter tasks in both the portal view and the project sharing view did not exclude task templates and it's sub-tasks. As a result, task templates were incorrectly shown alongside real tasks.
Solution
- Added `('has_template_ancestor', '=', False)` to the domain in the `_prepare_tasks_values` method to hide templates in the portal.
- Added `('has_template_ancestor', '=', False)` to the domain in the project sharing action to hide templates when listing tasks.
task-5079337
---
I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Forward-Port-Of: odoo/odoo#226602This update corrects a display issue in the Field Service > All Tasks view, preventing task templates and their associated tasks from appearing alongside real tasks. The fix ensures that users only see active, operational tasks, improving the clarity and usability of the Field Service interface.
Original PR description
Steps to Reproduce
- Navigate to Field Service > All Tasks.
- Observe that task templates are visible with tasks.
Issue
- Task templates are visible in the Field Service > All Tasks view, which is incorrect. Only real tasks should be listed.
Cause
- The domain in the view definition only filtered tasks by `is_fsm = True` and ` project_id != False`, but it did not exclude template tasks and sub-tasks of task templates.
Solution
- Added `('has_template_ancestor', '=', False)` to the domain so that only actual tasks are displayed in the Field Service > All Tasks view.
task-5079337
Forward-Port-Of: odoo/enterprise#94472This update fixes alignment issues within the partner forms and improves the user experience by hiding the 'MyInvois' tab for journal entries that aren't related to sales or purchases. This ensures that users only see relevant information, streamlining their workflow.
Original PR description
This commit: - Fixes alignment of the `MYINVOIS INFORMATION` section on the partner form. - Hides the `MyInvois` tab on journal entries where journal type is neither `sale` nor `purchase`. task-5356808 Forward-Port-Of: odoo/odoo#240333 Forward-Port-Of: odoo/odoo#239837
This update corrects an issue where product names were duplicated on delivery slips when a kit's component lacked a description. The fix ensures that product names appear only once on delivery slips, improving the clarity and accuracy of shipping documents. This resolves a potential confusion for customers and internal teams.
Original PR description
When creating a delivery slip, if the product sold is a kit and it's component doesn't have a description, the name will be repeated. Steps to reproduce: ------------------- * Create a product A with…
When creating a delivery slip, if the product sold is a kit and it's component doesn't have a description, the name will be repeated. Steps to reproduce: ------------------- * Create a product A with a bom of type kit * Add a product "comp" in the bom (don't give it a description) * Create a sales order with the product A and confirm it * Go on the delivery and create a delivery slip -> Issue, the name of the product "comp" appears twice. Observation: ------------- The name is added in description_picking field, since it is considered that the fallback for the description for outgoing deliveries should be display_name: https://github.com/odoo/odoo/blob/584f94e3246b6b59641bf83d4e707f2e872bc1e8/addons/stock/models/product.py#L293-L301 In _compute_description_picking, information about the bom will be added : https://github.com/odoo/odoo/blob/08c5fbbb5bc44c4810cd07188b29090c3060e14f/addons/mrp/models/stock_move.py#L235-L236 This causes the issue because the filter to prevent repeating the name on the delivery slip is implemented directly in the XML: https://github.com/odoo/odoo/blob/08c5fbbb5bc44c4810cd07188b29090c3060e14f/addons/stock/report/report_deliveryslip.xml#L83-L85 However, since we have added elements to the description (the bom information), this filter will not be applied, leading to the repeated name. opw-5265906
This update resolves an issue where local overlays were incorrectly persisting in the HTML editor after repeated editing and saving. The fix ensures that these overlays are properly cleared when the editor is destroyed, improving website performance and stability. This was a pre-existing issue addressed in 18.0, now resolved for all Odoo versions.
Original PR description
This commit ensures that local overlays are correctly removed when the Editor and `LocalOverlayPlugin` are destroyed. Steps to reproduce (observable after 18.4): - Go on website - Enter edit mode - Save - Repeat entering edit mode and saving - Inspect the DOM: oe-local-overlay elements keep accumulating, only one is non-empty The bug is only observable after 18.4, after the website refactoring, but the root cause has been present since 18.0, so we fix it there in case there are other use cases. task-5380409 Forward-Port-Of: odoo/odoo#239644
This update improves the accuracy of Thai VAT number input within Odoo. It now ensures that only 13-digit numeric VAT numbers are accepted for Thai partners, aligning with Thai regulations. This prevents incorrect data entry and ensures compliance.
Original PR description
This PR adds a validation method check_vat_th() to verify Thai VAT numbers. In Thailand, a VAT number must consist of exactly 13 numeric digits. For partners with country set to Thailand, the system will only allow VAT numbers that are exactly 13 digits long. Total credits go to: [Saran440](https://github.com/Saran440) `<saranl@ecosoft.co.th>` (See PR: https://github.com/odoo/odoo/pull/239164) Enterprise PR: odoo/enterprise#101905 Forward-Port-Of: odoo/odoo#240293 Forward-Port-Of: odoo/odoo#239616
This update corrects a test failure related to VAT number validation for Thailand. Following the recent implementation of stricter VAT number checks, a test case now incorrectly validates a sample VAT number. This fix ensures the Thailand VAT reporting functionality continues to operate correctly and aligns with regulatory requirements.
Original PR description
Following the implementation of proper validation for VAT numbers for Thailand, this now fails as the one set in the test doesn't follow the proper format. Community PR: odoo/odoo#239616 Total credits to @vin-odoo Forward-Port-Of: odoo/enterprise#102290 Forward-Port-Of: odoo/enterprise#101905
This update removes a 'New' button from the Payslip Work Days Lines Report and Payslip Line Report. This button was causing errors and was intended for viewing data only. This fix ensures these reports function correctly for viewing payroll information.
Original PR description
Remove the “New” button from the Payslip Work Days Lines Report and the Payslip Line Report. These reports are intended for viewing only, and allowing record creation caused a traceback. task-5416416 Forward-Port-Of: odoo/enterprise#102236
16 changes
Resolved issues and error corrections
This update corrects a technical issue that was preventing the correct sizing of columns in the expense report list view. Previously, the column widths were calculated incorrectly due to lost classnames in the override. Now, the column widths will be accurately determined, ensuring a better user experience for viewing expense reports.
Original PR description
Before this commit, some classnames set on the list renderer were lost in the expense override. As a consequence, the column width logic couldn't be applied correctly. The widths were computed with a wrong available width (the width of table's parent element, which is the renderer itself). 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#240270
This update addresses a bug in the spreadsheet component, specifically preventing issues with empty matrices during evaluation. The team has implemented the latest version of the o_spreadsheet library, ensuring improved stability and performance for spreadsheet functionality within Odoo. This change is a routine maintenance update.
Original PR description
### Contains the following commits: https://github.com/odoo/o-spreadsheet/commit/bbf6be118b [REL] 18.3.30 [Task: 0](https://www.odoo.com/odoo/2328/tasks/0) https://github.com/odoo/o-spreadsheet/commit/2764f730cc [FIX] evaluation: do not spread empty matrix [Task: 5421196](https://www.odoo.com/odoo/2328/tasks/5421196) Co-authored-by: Florian Damhaut (flda) <flda@odoo.com> Co-authored-by: Anthony Hendrickx (anhe) <anhe@odoo.com> Co-authored-by: Alexis Lacroix (laa) <laa@odoo.com> Co-authored-by: Lucas Lefèvre (lul) <lul@odoo.com> Co-authored-by: Adrien Minne (adrm) <adrm@odoo.com> Co-authored-by: Ronak Mukeshbhai Bharadiya (rmbh) <rmbh@odoo.com> Co-authored-by: Dhrutik Patel (dhrp) <dhrp@odoo.com> Co-authored-by: Rémi Rahir (rar) <rar@odoo.com> Co-authored-by: Pierre Rousseau (pro) <pro@odoo.com> Co-authored-by: Vincent Schippefilt (vsc) <vsc@odoo.com> Co-authored-by: Marceline Thomas (matho) <matho@odoo.com>
This update corrects a display issue where task templates were incorrectly shown alongside regular tasks in the Odoo portal. The fix ensures that task templates are hidden from portal users, improving the clarity and usability of the task management interface. This change prevents confusion and streamlines task organization for users.
Original PR description
Steps to Reproduce
- Log in as a portal user.
- Go to My Tasks and notice that task templates are visible with tasks.
- Share it with the portal user, giving edit access.
- Open the project sharing view and observe that task templates are visible there.
Cause
- The domains used to filter tasks in both the portal view and the project sharing view did not exclude task templates and it's sub-tasks. As a result, task templates were incorrectly shown alongside real tasks.
Solution
- Added `('has_template_ancestor', '=', False)` to the domain in the `_prepare_tasks_values` method to hide templates in the portal.
- Added `('has_template_ancestor', '=', False)` to the domain in the project sharing action to hide templates when listing tasks.
task-5079337
---
I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-prThis update corrects a display issue in the Field Service module where task templates were incorrectly shown alongside real tasks. The fix ensures that only actual tasks are listed in the 'All Tasks' view, improving clarity and preventing confusion for users. This change enhances the user experience within Field Service.
Original PR description
Steps to Reproduce
- Navigate to Field Service > All Tasks.
- Observe that task templates are visible with tasks.
Issue
- Task templates are visible in the Field Service > All Tasks view, which is incorrect. Only real tasks should be listed.
Cause
- The domain in the view definition only filtered tasks by `is_fsm = True` and ` project_id != False`, but it did not exclude template tasks and sub-tasks of task templates.
Solution
- Added `('has_template_ancestor', '=', False)` to the domain so that only actual tasks are displayed in the Field Service > All Tasks view.
task-5079337This update fixes an issue where invoice reports for KE clients were not displaying prices with commas, leading to potential confusion. The fix removes a duplicate XPath and correctly formats the total and taxable amounts, ensuring accurate reporting and compliance with KRA regulations. This improves clarity and accuracy for financial reporting.
Original PR description
Steps to reproduce: 1. install `l10n_ke` 2. Switch to KE Company 3. Create a product with all KRA eTIMS details set on the Accounting page. 4. Create an invoice to KE Company with that product and set unitprice > 10000 5. Confirm the invoice and send it. Now, see the invoice report Issue: 1. xpath for `td_subtotal` was duplicated 2. The total amount and taxable amount were not formatted as prices (no commas). Before: <img width="771" height="397" alt="image" src="https://github.com/user-attachments/assets/492fe911-18d6-4e01-a16d-d7450c17373f" /> After: <img width="766" height="389" alt="image" src="https://github.com/user-attachments/assets/bbe5d4e2-b337-445c-833a-06492a8c827d" /> Solution: Updated the invoice report to: - Remove the duplicated `td_subtotal` xpath. - Properly format the total and taxable amounts with `t-options`. opw-5341578 Forward-Port-Of: odoo/enterprise#101794 Forward-Port-Of: odoo/enterprise#100279
This update ensures that Thai VAT numbers entered into Odoo are valid, requiring exactly 13 numeric digits. This improves data accuracy and prevents incorrect VAT number entries, particularly for customers and partners in Thailand. The change was made by Saran440 and is part of the Odoo 18.3 release.
Original PR description
This PR adds a validation method check_vat_th() to verify Thai VAT numbers. In Thailand, a VAT number must consist of exactly 13 numeric digits. For partners with country set to Thailand, the system will only allow VAT numbers that are exactly 13 digits long. Total credits go to: [Saran440](https://github.com/Saran440) `<saranl@ecosoft.co.th>` (See PR: https://github.com/odoo/odoo/pull/239164) Enterprise PR: odoo/enterprise#101905 Forward-Port-Of: odoo/odoo#240112 Forward-Port-Of: odoo/odoo#239616
This update corrects a test case within the Thailand localization reporting module (l10n_th_reports) that failed due to an incorrect VAT number format. Following the recent implementation of stricter VAT validation rules for Thailand, the test now accurately reflects the required format. This ensures the reporting functionality remains reliable and compliant.
Original PR description
Following the implementation of proper validation for VAT numbers for Thailand, this now fails as the one set in the test doesn't follow the proper format. Community PR: odoo/odoo#239616 Total credits to @vin-odoo Forward-Port-Of: odoo/enterprise#102172 Forward-Port-Of: odoo/enterprise#101905
This update fixes an issue where videos added to product descriptions in the online store would disappear after saving. The fix ensures that the system correctly recognizes and preserves video embeds, improving the presentation of product information for customers. The change addresses a technical detail related to how the system clears 'empty' descriptions.
Original PR description
Versions
--------
- 18.0+
Steps
-----
1. Open website editor on a product page;
2. edit the ecommerce description;
3. add a video using the `/video` command;
4. save & close editor.
Issue
-----
The video disappears.
Cause
-----
The `write` override in `website_sale` uses the `is_html_empty` method to clear "empty" descriptions. When adding a video, it gets added as a `<div data-oe-expression="URL" class="media_iframe_video"></div>` element, i.e. an "empty" `div` element according to `is_html_empty`, hence getting cleared on write.
Solution
--------
In the `write` override, don't clear the ecommerce description if it contains "media_iframe_video".
Also, for 18.0, add `options="{'embedded_components': false}"` to the product view in the back-end to disable adding video there, as it gets formatted in a way that isn't supported by the front-end. For 18.2, this was already done in 6339f261e7161.
opw-5218018
Forward-Port-Of: odoo/odoo#240080This update resolves an issue where local overlays within the HTML editor were incorrectly persisting after edits, leading to performance problems. The fix ensures that these overlays are properly cleared when the editor is destroyed, improving stability and responsiveness. This change was proactively implemented to address a root cause identified since 18.0.
Original PR description
This commit ensures that local overlays are correctly removed when the Editor and `LocalOverlayPlugin` are destroyed. Steps to reproduce (observable after 18.4): - Go on website - Enter edit mode - Save - Repeat entering edit mode and saving - Inspect the DOM: oe-local-overlay elements keep accumulating, only one is non-empty The bug is only observable after 18.4, after the website refactoring, but the root cause has been present since 18.0, so we fix it there in case there are other use cases. task-5380409 Forward-Port-Of: odoo/odoo#239644
This update fixes alignment issues within the partner record view and improves the user experience by hiding the 'MyInvois' tab for journal entries that aren't related to sales or purchases. This ensures that users only see relevant information, streamlining their workflow.
Original PR description
This commit: - Fixes alignment of the `MYINVOIS INFORMATION` section on the partner form. - Hides the `MyInvois` tab on journal entries where journal type is neither `sale` nor `purchase`. task-5356808 Forward-Port-Of: odoo/odoo#240333 Forward-Port-Of: odoo/odoo#239837
This update resolves an issue where archived employees were still appearing in the timesheet section of helpdesk tickets. The fix ensures that timesheet entries are only populated for currently active employees, improving data accuracy and usability. This prevents confusion and ensures timesheet reporting reflects the current team roster.
Original PR description
**Steps to Reproduce:** - Install hekpdesk_timesheet. - Go to settings, enable timesheets - Archive an employee. - In a ticket, try to add a timesheet entry. **Isuue:** Archived employees are also appearing under timesheets tab. **Fix:** Passed a context so that only active employees appear in the selection. task-5078763 Forward-Port-Of: odoo/enterprise#95137
This update fixes an issue where product documents would stop appearing on product pages after a document version was updated. The fix ensures that the link between the product and its document is automatically updated whenever a document version change occurs, maintaining accurate product information. This improves data consistency and simplifies document management.
Original PR description
**Steps to reproduce:** 1. Install `sale_management` and `documents`. 2. Go to settings > check `product` under Files Centralization. 3. Create a product and add a document to it using the smart button. 4. Update the version of that document from the *Manage Versions* action on the document page. **Issue:** - After updating the document version, the linked document no longer appears on the product page. **Cause:** - The product page displays records from the `product.document` model, but its `ir_attachment_id` was not updated when the document’s version changed. **Solution:** - Update the `ir_attachment_id` on the corresponding `product.document` record when the document version is updated. opw-5144041 Forward-Port-Of: odoo/enterprise#99226
This update corrects a bug that prevented accurate reporting when calculating periods that spanned leap years. The fix adjusts date calculations to properly handle February 29th, ensuring reports are generated correctly for all years. This improves the reliability of financial data.
Original PR description
To reproduce: Set the start_date to 2024-02-29 then try to compute periods for 2025. This causes a crash as the start date is only valid in a leap year. Ths fix is to offset back the start_day to a valid start_date.
This update removes a 'New' button from the Payslip Work Days Lines Report and Payslip Line Report. This change prevents errors that occurred when users attempted to create new records from these reports, ensuring the reports function correctly for viewing existing payroll data.
Original PR description
Remove the “New” button from the Payslip Work Days Lines Report and the Payslip Line Report. These reports are intended for viewing only, and allowing record creation caused a traceback. task-5416416
This update resolves an issue where images floated within website builder rows caused layout problems. The fix adds a 'clear: both;' rule to ensure rows always appear below floated elements, maintaining consistent website alignment and improving the user experience. This prevents visual disruptions for website visitors.
Original PR description
Steps to reproduce: - Open the website builder. - Drag and drop the s_key_benefits snippets in the page. - Drag and drop an image below the title, above the 3 columns. - Set the 'alignement' option of the image to left. - Observe that the `.row` appears next to the image instead of below it. Previously, when a user dragged and dropped an image into the container above a `.row`, and applied the `float-start` class (via the builder), the floated image caused the `.row` to wrap around it instead of appearing below as expected. This broke the layout and alignment of content inside the `.row`. I fixed this by adding `clear: both;` to the `.row` element, ensuring it always starts below any floated elements above it. This prevents layout breakage even when users insert floated images above rows.
This update corrects a visual glitch where dynamic website snippets would appear and then disappear unexpectedly. The fix restores the intended behavior of snippets being initially hidden and only displayed when content is present. This ensures a consistent and reliable user experience for website visitors.
Original PR description
Steps to reproduce [18.2+]: 1. Add a dynamic snippet to a website page (e.g., Events). 2. Unpublish all event records. 3. The snippet first appears with a visible header, which then disappears. [A]-…
Steps to reproduce [18.2+]: 1. Add a dynamic snippet to a website page (e.g., Events). 2. Unpublish all event records. 3. The snippet first appears with a visible header, which then disappears. [A]- Starting from [1], the `o_dynamic_empty` class was introduced to handle the dynamic snippets visibility, and an upgrade script (see [3]) set this class by default on them. Later in 18.0 (after [2]), the class was changed to `s_dynamic_empty` in the XML template, while on the JS side, the class used to toggle snippet visibility was `o_dynamic_snippet_empty`. This class was also added to snippets on destroy (before saving). [B]- As a result, a dynamic snippet may end up with: - `o_dynamic_empty` & `o_dynamic_snippet_empty`: for old (before 18.0) but edited snippets. - `o_dynamic_empty`: for old snippets never updated in edit mode on 18.0. - `s_dynamic_empty` & `o_dynamic_snippet_empty`: for new snippets created in 18.0. Remark: the `s_dynamic_empty` class was introduced by mistake and does not have any associated CSS Since only `o_dynamic_snippet_empty` has `display: none` in CSS, the interaction flow became inconsistent (starting from 18.2): snippets were initially visible, then hidden if no content was found... which caused the flickering behavior described above. And because of [B], old snippets with the `o_dynamic_empty` class will be visible by default in 18.0. This commit restores the intended (and original) behavior: - A dynamic snippet should be invisible by default, - Then the interaction decides (based on actual content) whether the snippet should be displayed. [1]: https://github.com/odoo/odoo/commit/63def9c87305dd7773e0592a28fe19d0b63c0878 [2]: https://github.com/odoo/odoo/commit/76cf201e1fc356ad00b27bcdec408c54949df33b [3]: https://github.com/odoo/upgrade/commit/af5821d9aeb75d09653fc33f14e98fae5f5ba906 opw-5354523 Forward-Port-Of: odoo/odoo#240036 Forward-Port-Of: odoo/odoo#238305
4 changes
Resolved issues and error corrections
This update resolves an issue where archived employees were still appearing in the timesheet section of helpdesk tickets. The fix ensures that timesheets only display entries for currently active employees, improving data accuracy and usability. This prevents confusion and ensures timesheet reporting reflects the current team roster.
Original PR description
**Steps to Reproduce:** - Install hekpdesk_timesheet. - Go to settings, enable timesheets - Archive an employee. - In a ticket, try to add a timesheet entry. **Isuue:** Archived employees are also appearing under timesheets tab. **Fix:** Passed a context so that only active employees appear in the selection. task-5078763 Forward-Port-Of: odoo/enterprise#95137
This update fixes an issue where product documents would stop appearing on product pages after a document version was updated. The fix ensures that the product document record is correctly linked to the latest document version, maintaining accurate product information. This improves data consistency and prevents disruptions to product listings.
Original PR description
**Steps to reproduce:** 1. Install `sale_management` and `documents`. 2. Go to settings > check `product` under Files Centralization. 3. Create a product and add a document to it using the smart button. 4. Update the version of that document from the *Manage Versions* action on the document page. **Issue:** - After updating the document version, the linked document no longer appears on the product page. **Cause:** - The product page displays records from the `product.document` model, but its `ir_attachment_id` was not updated when the document’s version changed. **Solution:** - Update the `ir_attachment_id` on the corresponding `product.document` record when the document version is updated. opw-5144041 Forward-Port-Of: odoo/enterprise#99226
This update resolves an issue where ECO applications were failing due to incorrect references to attached documents. Specifically, the system was pointing to the wrong attachment record, leading to database errors. This fix ensures ECO applications run smoothly by correctly linking documents.
Original PR description
When applying an ECO, the system incorrectly sets the origin_attachment_id of a product.document to a product.document record itself instead of its related ir.attachment. As a result, if the incorrectly referenced ir.attachment is missing, the ECO will attempt to reference a record that does not exist, leading to a foreign key violation during action_apply. Steps to reproduce: 1.) Create an mrp.eco record 2.) Upload a document, take note of the product.document ID 3.) Unlink the ir.attachment with ID = (document ID + 1) (+1 is to account for the .copy within action_apply) 4.) Run eco.action_apply 5.) Observe SQL Constraint Expected result: The ECO should correctly link the product.document to its related ir.attachment. Actual result: origin_attachment_id may point to an unrelated ir.attachment, causing constraint violations when those attachments do not exist. opw-5050263 Forward-Port-Of: odoo/enterprise#94958
This update fixes an issue where repeatedly validating a stock transfer in the Barcode app could create duplicate stock entries, particularly with unreserved products. The fix prevents multiple validation attempts, ensuring accurate stock tracking and avoiding potential errors. This improves data integrity and reduces the risk of discrepancies.
Original PR description
**Problem:** When processing a picking in Barcode, it's possible to press the validate button or scan the validate barcode multiple times before the transfer validates or raises an error. This is…
**Problem:**
When processing a picking in Barcode, it's possible to press the validate button or scan the validate barcode multiple times before the transfer validates or raises an error. This is especially a problem when unreserved products are added to a transfer, since each additional validate call will duplicate those products (and their lot/SNs).
**Steps to Reproduce:**
- In the Barcode app, create a new internal transfer
- Scan a product, then scan the destination location 'WH/Stock/Shelf 1' ('2601892' is the barcode)
- Click the "Validate" button (or scan 'O-BTN.validate') multiple times as quickly as possible
- See that the "The transfer has been validated" toast appears (and possibly warnings about validating a done transfer) -> On the transfer, see that there are duplicated stock.move and stock.move.line
**Fix:**
Prevents the 'validate' method from executing as usual by checking if a previous call is still executing (tracked by 'isValidate').
opw-4948696
Forward-Port-Of: odoo/enterprise#100356
Forward-Port-Of: odoo/enterprise#9532910 changes
Resolved issues and error corrections
This update corrects a formatting error in invoices generated when using quotation templates in sales orders. Previously, the name and description were combined on the invoice PDF. Now, a necessary line break is added to ensure correct invoice presentation, improving clarity for customers.
Original PR description
### Issue: In this issue, when a quotation template is used in sale order, the end line is missing between name and description in the invoice pdf. #### Steps to reproduce: 1- Install a db with sale…
### Issue: In this issue, when a quotation template is used in sale order, the end line is missing between name and description in the invoice pdf. #### Steps to reproduce: 1- Install a db with sale and invoicing installed 2- Create a quotation template, and add a description in the line. 3- Create a quotation with the created template. 4- Confirm the order and create an invoice for the sale order. 5- Print the pdf, as seen the name and description are shown in the same line, while if the sale order was created without a template, we would have seen the description from product in the next line. `_get_journal_items_full_name` is used to enforce the product name in the description. However, in cases where product name doesn't exist in the description, e.g. our case here, the name and description will be shown in the same line in the invoice pdf. This can be fixed by adding a new line between the name and the description. opw-5130171 Forward-Port-Of: odoo/enterprise#102208 Forward-Port-Of: odoo/enterprise#100417
This update fixes a bug where the Partena export file incorrectly used the active company's code when generating exports for inactive companies. The change ensures the correct Partena code is included in the file, resolving potential reporting discrepancies. Tests have been added to verify this fix.
Original PR description
### Issue: In multicompany, when we generate the Partena export file of the 'not active' company, the partena code of the active company is inputted in the file. ### Steps to reproduce: - Install…
### Issue: In multicompany, when we generate the Partena export file of the 'not active' company, the partena code of the active company is inputted in the file. ### Steps to reproduce: - Install 'l10n_be_hr_payroll_partena' and switch to a Belgian company - Make sure the company has a "Partena Affiliation Number" - Create an employee for this company, with a "Partena code" - Create a contract for this employee, set it a running - Create a new Belgian company with a different "Partena Affiliation Number" - Activate both Belgian companies, but set the second one as active - Payroll > Reporting > Export work entries to Partena - Create a new one, populate it with the employee just created - Click "Generate Export File" ### Cause: When getting the data for the CSV file, we use `self.env.company` which is the active company. So when this company is not the one of the export record, we input the wrong code values. ### Solution: Use `self.company_id` instead of `self.env.company_id`. Also adds the test class with basic tests. opw-5345786 Forward-Port-Of: odoo/enterprise#102062 Forward-Port-Of: odoo/enterprise#101110
This update ensures that rental orders created from leads automatically include the tags associated with the original lead. Previously, rental orders lacked this functionality due to a slight difference in how context information was passed. This change streamlines the rental order process and maintains consistent tag management across sales and rental transactions.
Original PR description
Versions -------- - 17.0+ Steps ----- 1. Have a lead with tags; 2. convert lead to rental order. Issue ----- The new rental order has no tags. Cause ----- Tags are added to regular sales orders via the `_prepare_opportunity_quotation_context` method, but rental orders use `_get_action_rental_context` instead, which is virtually identical, but adds the `in_rental_app` context value, and doesn't include `default_tag_ids`. Solution -------- Rather than having duplicate code, make `_get_action_rental_context` retrieve the base context from `_prepare_opportunity_quotation_context`, then adding `in_rental_app=True`. opw-4549941 Forward-Port-Of: odoo/enterprise#102220
This update fixes an issue where invoice reports in the KE company setup were not displaying prices with commas. The fix removes a duplicate XPath and correctly formats the total and taxable amounts, ensuring accurate financial reporting. This improves clarity and compliance for KE-related invoices.
Original PR description
Steps to reproduce: 1. install `l10n_ke` 2. Switch to KE Company 3. Create a product with all KRA eTIMS details set on the Accounting page. 4. Create an invoice to KE Company with that product and set unitprice > 10000 5. Confirm the invoice and send it. Now, see the invoice report Issue: 1. xpath for `td_subtotal` was duplicated 2. The total amount and taxable amount were not formatted as prices (no commas). Before: <img width="771" height="397" alt="image" src="https://github.com/user-attachments/assets/492fe911-18d6-4e01-a16d-d7450c17373f" /> After: <img width="766" height="389" alt="image" src="https://github.com/user-attachments/assets/bbe5d4e2-b337-445c-833a-06492a8c827d" /> Solution: Updated the invoice report to: - Remove the duplicated `td_subtotal` xpath. - Properly format the total and taxable amounts with `t-options`. opw-5341578 Forward-Port-Of: odoo/enterprise#101794 Forward-Port-Of: odoo/enterprise#100279
This update fixes a technical issue that could cause website errors during event ticket payments when using rentable tickets. The change improves error handling to prevent these tracebacks from appearing to users, ensuring a smoother payment experience. While the rentable ticket feature itself is being addressed, this fix focuses on stabilizing the payment process.
Original PR description
Versions -------- - 17.0+ Steps ----- 1. Have `website_event_sale` but not `stock` installed; 2. create an event with a ticket; 3. make the ticket's product rentable; 4. change ticket's product type to Goods; 5. publish the event to website; 6. register for the event via website; 7. go to payment. Issue ----- AttributeError: 'bool' object has no attribute 'tzinfo' Cause ----- Having odd configurations like rentable tickets creates rental orders without rental dates, leading to unhandled errors. Solution -------- While rentable event tickets doesn't make enough sense to make it work, we can still improve the error handling to prevent showing tracebacks to the client. opw-5207045 Forward-Port-Of: odoo/enterprise#101936 Forward-Port-Of: odoo/enterprise#99000
This update streamlines the live chat closing process within the AI Website module. The change ensures a cleaner and more reliable way to close live chat sessions, reducing potential disruptions for users. This improves the overall user experience and efficiency of the AI-powered website.
This update resolves an issue where the tax return calendar view in Odoo Enterprise was confusing users. The fix replaces the calendar view with a more intuitive Kanban view for tax returns, streamlining the process for users to manage their returns. This ensures a clearer and more efficient user experience.
Original PR description
Steps to reproduce: - Go to Accounting/tax return - Set the opening date - Open the Calendar view - Open one tax return -> The view is a default form view provided by the framework Solution: Open instead the kanban view of return checks (which for the user seems like the form view of the return). task-5392552
Previously, users couldn't change the name of the 'Help' menu item in the Helpdesk, encountering an error. This update allows users to rename the menu item, resolving this restriction and providing greater flexibility within the Helpdesk feature. This change improves usability and simplifies management.
Original PR description
**Issue** It was not possible to rename the "Help" menu item, an error appeared with the message: "This URL is reserved for the helpdesk teams with 'website form' feature enabled.", even if the user was not trying to edit the URL. **Change** Allow the user to edit the menu item's name. opw-5375334 Forward-Port-Of: odoo/enterprise#102175 Forward-Port-Of: odoo/enterprise#101323
This update resolves an issue where archived employees were still appearing in the timesheet section of helpdesk tickets. The fix ensures that only active employees are displayed, improving data accuracy and preventing confusion when managing timesheets.
Original PR description
**Steps to Reproduce:** - Install hekpdesk_timesheet. - Go to settings, enable timesheets - Archive an employee. - In a ticket, try to add a timesheet entry. **Isuue:** Archived employees are also appearing under timesheets tab. **Fix:** Passed a context so that only active employees appear in the selection. task-5078763 Forward-Port-Of: odoo/enterprise#95137
This update fixes an issue where product documents would stop appearing on product pages after a document version was updated. The fix ensures that the product document record is correctly linked to the latest document version, maintaining accurate product information. This improves the consistency of product data.
Original PR description
**Steps to reproduce:** 1. Install `sale_management` and `documents`. 2. Go to settings > check `product` under Files Centralization. 3. Create a product and add a document to it using the smart button. 4. Update the version of that document from the *Manage Versions* action on the document page. **Issue:** - After updating the document version, the linked document no longer appears on the product page. **Cause:** - The product page displays records from the `product.document` model, but its `ir_attachment_id` was not updated when the document’s version changed. **Solution:** - Update the `ir_attachment_id` on the corresponding `product.document` record when the document version is updated. opw-5144041 Forward-Port-Of: odoo/enterprise#99226
21 changes
Resolved issues and error corrections
This update fixes an issue where custom report groupings with complex filters were incorrectly indented, causing formatting problems. The change improves the way Odoo calculates grouping levels, ensuring reports display correctly regardless of the complexity of the filters used. This ensures consistent and accurate report presentation.
Original PR description
When a custom groupby defined a domain with more than one element in it (typically, conditions on multiple fields, possibly with '|' or '&' operations), if groupby lines needed to be generated for subsequent groupby, the generated groupby lines had a too high level, and ended up being over-indented.
This was because the groupby expansion computed the number of higher-level groupby lines as the length of the domain needed to restrict their content. This was too naïve, and won't work well with custom groupbys, which can define longer (or even empty) domains.
This was spotted in master (19.1), with the refactored EC Sales list, which now uses a custom engine and a specific custom groupby map.This update allows accountants to archive reports, resolving an access issue that prevented them from doing so. The original problem stemmed from limited user permissions, specifically lacking the ability to update menu items. This change ensures accountants can properly manage and retain reports.
Original PR description
As a simple accountant without sysadmin rights, archive a report. A user access is raised because the user doesn't have access to update menuitems.
This update corrects a technical issue within the Enterprise edition's spreadsheet functionality. Specifically, a missing configuration setting was preventing proper sheet handling, which could have caused data inconsistencies. This fix ensures the spreadsheet feature operates reliably and accurately.
Original PR description
…SHEET command
This update adjusts the default demo data for the Belgian Intervat localization to disable Intervat calculations. This prevents Intervat from automatically being enabled during testing with Runbots, ensuring consistent and accurate demo results. This change improves the reliability of demo environments.
Original PR description
This commit set the `l10n_be_intervat_mode` to `disabled` in the l10n_be demo company. The reason why we are doing this it to avoid having intervat set by default on runbots. task-5404719
This update resolves a formatting problem in invoices generated when using quotation templates in sales orders. Previously, the invoice PDF displayed product names and descriptions on the same line, creating an unreadable format. This fix ensures descriptions are correctly separated from product names in the invoice, improving clarity and professionalism.
Original PR description
### Issue: In this issue, when a quotation template is used in sale order, the end line is missing between name and description in the invoice pdf. #### Steps to reproduce: 1- Install a db with sale…
### Issue: In this issue, when a quotation template is used in sale order, the end line is missing between name and description in the invoice pdf. #### Steps to reproduce: 1- Install a db with sale and invoicing installed 2- Create a quotation template, and add a description in the line. 3- Create a quotation with the created template. 4- Confirm the order and create an invoice for the sale order. 5- Print the pdf, as seen the name and description are shown in the same line, while if the sale order was created without a template, we would have seen the description from product in the next line. `_get_journal_items_full_name` is used to enforce the product name in the description. However, in cases where product name doesn't exist in the description, e.g. our case here, the name and description will be shown in the same line in the invoice pdf. This can be fixed by adding a new line between the name and the description. opw-5130171 Forward-Port-Of: odoo/enterprise#102208 Forward-Port-Of: odoo/enterprise#100417
This update ensures that rental orders created from leads automatically include the tags associated with the original lead. Previously, rental orders lacked this functionality due to a minor difference in how context information was passed. This change streamlines the process of tagging rental orders, improving organization and reporting.
Original PR description
Versions -------- - 17.0+ Steps ----- 1. Have a lead with tags; 2. convert lead to rental order. Issue ----- The new rental order has no tags. Cause ----- Tags are added to regular sales orders via the `_prepare_opportunity_quotation_context` method, but rental orders use `_get_action_rental_context` instead, which is virtually identical, but adds the `in_rental_app` context value, and doesn't include `default_tag_ids`. Solution -------- Rather than having duplicate code, make `_get_action_rental_context` retrieve the base context from `_prepare_opportunity_quotation_context`, then adding `in_rental_app=True`. opw-4549941 Forward-Port-Of: odoo/enterprise#102220
This update fixes an issue where invoice reports for KE companies were not displaying prices with commas. The fix removes a duplicate XPath and correctly formats the total and taxable amounts, ensuring accurate financial reporting. This improves clarity and compliance for KE invoices.
Original PR description
Steps to reproduce: 1. install `l10n_ke` 2. Switch to KE Company 3. Create a product with all KRA eTIMS details set on the Accounting page. 4. Create an invoice to KE Company with that product and set unitprice > 10000 5. Confirm the invoice and send it. Now, see the invoice report Issue: 1. xpath for `td_subtotal` was duplicated 2. The total amount and taxable amount were not formatted as prices (no commas). Before: <img width="771" height="397" alt="image" src="https://github.com/user-attachments/assets/492fe911-18d6-4e01-a16d-d7450c17373f" /> After: <img width="766" height="389" alt="image" src="https://github.com/user-attachments/assets/bbe5d4e2-b337-445c-833a-06492a8c827d" /> Solution: Updated the invoice report to: - Remove the duplicated `td_subtotal` xpath. - Properly format the total and taxable amounts with `t-options`. opw-5341578 Forward-Port-Of: odoo/enterprise#101794 Forward-Port-Of: odoo/enterprise#100279
This update resolves an issue where archived employees were still appearing in timesheet entries. The fix ensures that timesheets only display entries for currently active employees, improving data accuracy and preventing confusion.
Original PR description
**Steps to Reproduce:** - Install hekpdesk_timesheet. - Go to settings, enable timesheets - Archive an employee. - In a ticket, try to add a timesheet entry. **Isuue:** Archived employees are also appearing under timesheets tab. **Fix:** Passed a context so that only active employees appear in the selection. task-5078763 Forward-Port-Of: odoo/enterprise#95137
This update fixes an issue where product documents stopped appearing on product pages after a document version was updated. The fix ensures that the product document record is correctly linked to the latest version of the document, maintaining accurate product information. This improves data consistency and prevents users from seeing outdated document associations.
Original PR description
**Steps to reproduce:** 1. Install `sale_management` and `documents`. 2. Go to settings > check `product` under Files Centralization. 3. Create a product and add a document to it using the smart button. 4. Update the version of that document from the *Manage Versions* action on the document page. **Issue:** - After updating the document version, the linked document no longer appears on the product page. **Cause:** - The product page displays records from the `product.document` model, but its `ir_attachment_id` was not updated when the document’s version changed. **Solution:** - Update the `ir_attachment_id` on the corresponding `product.document` record when the document version is updated. opw-5144041 Forward-Port-Of: odoo/enterprise#99226
This update fixes a bug where HR users were receiving unnecessary reminder emails. The system now filters out time-off and holiday entries, ensuring reminders are only sent for actual timesheets requiring user input. This improves efficiency and reduces email clutter for our users.
Original PR description
**Steps to reproduce:** - Install timesheet_grid_holidays - Create a user with no timesheet access - Create a leave and approve it as a manager - Set up employee reminders in timesheet settings - Run the timesheet reminder scheduled action **Issue:** HR users without timesheet app access or who haven’t submitted timesheets in the past 3 months were still receiving reminder emails. **Cause:** When a time-off is approved or a public holiday is recorded, it generates timesheet entries, which causes reminder emails to be sent incorrectly. **Fix:** Filter out time-off and public holiday entries when sending reminders. Now, reminders are only sent for actual timesheets that require user input. task-5085790 Forward-Port-Of: odoo/enterprise#102061 Forward-Port-Of: odoo/enterprise#95450
This update fixes an issue where unnecessary slashes were being added to reports' XML formatting when there was no comment provided. The change ensures that the XML is correctly formatted, preventing potential errors in report generation and data processing. This improves the reliability of financial reports.
Original PR description
Since 17.0, we added a / when there was no comment in the comment section of the xml. This is wrong and should be left empty. opw-5242381 Forward-Port-Of: odoo/enterprise#101339 Forward-Port-Of: odoo/enterprise#100033
This update corrects a display issue in the Field Service 'All Tasks' view. Previously, task templates were incorrectly shown alongside real tasks. The fix ensures that only actual tasks are listed, improving the clarity and usability of this key reporting tool.
Original PR description
Steps to Reproduce
- Navigate to Field Service > All Tasks.
- Observe that task templates are visible with tasks.
Issue
- Task templates are visible in the Field Service > All Tasks view, which is incorrect. Only real tasks should be listed.
Cause
- The domain in the view definition only filtered tasks by `is_fsm = True` and ` project_id != False`, but it did not exclude template tasks and sub-tasks of task templates.
Solution
- Added `('has_template_ancestor', '=', False)` to the domain so that only actual tasks are displayed in the Field Service > All Tasks view.
task-5079337
Forward-Port-Of: odoo/enterprise#94472This update resolves an issue where employees designated as their own approvers couldn't modify their attendance records. The fix allows employees to directly update their attendance information, streamlining the process and improving accuracy. This change ensures employees have the necessary control over their attendance data.
Original PR description
Employees set as themselves as approvers couldn't modify their attendances due to permission issues with other models. task-5427553
This update corrects a bug in the PDF Quote report editor within web_studio. Previously, minor changes could trigger an error, resulting in an empty report. The fix initializes the Studio view to `<data/>>` to prevent unnecessary and irrelevant edits by the HTML editor, ensuring reports save correctly.
Original PR description
Example of steps: - Install sale_management and web_studio - Try to edit PDF Quote report - add /4 columns somewhere above the table - try to save - Error: Document is empty In this case, for some reason `html_editor` edits the external_report by changing the order of attributes on a node, which causes a diff, but not relevant for studio and won't produce any xpath operations. This commit handles this case by initializing the Studio view to `<data/>`. opw-5351588
This update resolves a potential crash in the mail fetch process caused by an error when checking for unread messages on IMAP servers. Specifically, the system now gracefully handles cases where the IMAP server doesn't return any unread messages, preventing a system error and ensuring reliable mail retrieval.
Original PR description
When checking for unread messages on an IMAP server, the search() method can return None for data[0] if there are no unseen messages or in certain server response conditions. Attempting to call…
When checking for unread messages on an IMAP server, the search() method can return None for data[0] if there are no unseen messages or in certain server response conditions. Attempting to call .split() on None causes an AttributeError. This fix adds a null check to handle the None case gracefully by returning an empty list of unread messages, allowing the mail fetch process to continue without errors. Fixes #236771 Description of the issue/feature this PR addresses: The IMAP server's search() method can return None for data[0] in certain conditions, particularly when there are no unseen messages. Attempting to call .split() on None causes an AttributeError, preventing the mail fetch process from continuing. Current behavior before PR: When checking for unread messages on certain IMAP servers with no unseen messages, the system crashes with: `AttributeError: 'NoneType' object has no attribute 'split'` Desired behavior after PR is merged: The mail fetch process should gracefully handle the None case by returning an empty list of unread messages, allowing the process to continue without errors. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This update corrects a test related to exporting accounting data for Sweden. The accounts have been reorganized to better reflect goods and services for fiscal reporting, ensuring accurate export functionality. This resolves a technical issue impacting the Swedish accounting export process.
Original PR description
The accounts have been separated between goods and services for the fiscal positions to work. Fix the test of an export of Sweden accounting task-5365658
This update fixes an issue where newly added buttons in the Odoo form editor weren't correctly focused or displayed in the sidebar. The fix ensures that the editor automatically focuses on the new button after creation, streamlining the design process and improving usability. This resolves a previous workflow disruption.
Original PR description
Have an arch with many conditional button in the header Click on Add a button in the form editor. Before this commit, the new button was not correctly focused and the sidebar did not display the properties of the new button. This was because we gave the wrong xpath coordinates to focus to the editor. After this commit, this flow works as expected task-5364798 Forward-Port-Of: odoo/enterprise#102286 Forward-Port-Of: odoo/enterprise#101059
This update fixes a technical issue where the AI action feature would generate a traceback when the prompt field was empty. The change ensures the AI system continues to function correctly even with an empty prompt, improving stability and reliability of the AI-powered actions. It also clarifies instructions to the AI model to avoid requesting additional user input.
Original PR description
Prior to this commit, when the AI action prompt was left empty, we would get a traceback when that AI action was executed. The traceback would occurs because the prompt is an HTML field with the…
Prior to this commit, when the AI action prompt was left empty, we would get a traceback when that AI action was executed. The traceback would occurs because the prompt is an HTML field with the field selector plugin, which means that it requires parsing before it's sent to the LLM. There was no check during parsing whether the field is empty or not and thus a traceback would occur during processing. In this commit we added a check for whether the prompt field is empty or not and if it is, we skip parsing altogether. We still call the LLM but without the final-prompt. The pre-prompt with contextual information is still sent thus the LLM can still perform the action if it's simple enough. Also, if the AI server action prompt is ambiguous and the LLM "feels" like it needs additional input to complete its task, it might respond with an additional query to the user instead of calling one of its available tools. Thus, in this commit, we add an explicit instruction to the AI Server action pre-prompt which should convey to the LLM that it will not be able to get any additional input from the user and it should assume that any important information for performing its task will be hardcoded in its available tools. Task-5379758
This update resolves an issue where the web_studio report editor was generating invalid field nodes, leading to errors when creating reports. The fix prevents the creation of these invalid nodes, ensuring reports can be generated correctly. This improves the stability and usability of the report editor.
Original PR description
cf commit Forward-Port-Of: odoo/enterprise#102215 Forward-Port-Of: odoo/enterprise#99385
This update resolves an issue where ISO20022 reports incorrectly included two decimal places for currency amounts, particularly for currencies like JPY. The fix dynamically sets the decimal places based on the currency's configuration, ensuring accurate reporting and preventing potential errors.
Original PR description
Issue: Generating the xml file for iso20022 always generates the amount with two decimals which is hard coded and can cause error for currencies without decimals for example JPY. Fix: The fix is to have the currency decimal number dynamically set through the currency decimal places field. task: 5242204
This update corrects a test failure related to VAT number validation for Thailand. After implementing stricter VAT number checks, a test case failed due to an incorrect VAT number being used. This fix ensures the test accurately reflects the new validation rules and maintains the integrity of the Thailand VAT reporting functionality.
Original PR description
Following the implementation of proper validation for VAT numbers for Thailand, this now fails as the one set in the test doesn't follow the proper format. Community PR: odoo/odoo#239616 Total credits to @vin-odoo Forward-Port-Of: odoo/enterprise#102404 Forward-Port-Of: odoo/enterprise#101905
11 changes
Resolved issues and error corrections
This update fixes inaccuracies in the Danish description for the Odoo module. The change ensures the module's details are accurate and clear for users in Denmark, improving the overall user experience. This is a minor correction to maintain accurate module information.
Original PR description
There were some mistakes in the Danish part of the module description. This commit corrects those mistakes. Forward-Port-Of: odoo/odoo#239180
This update fixes an issue where items within Kanban card dropdown menus weren't easily navigable or highlighted on hover. By adding a specific styling class, the dropdown items are now fully functional and provide a better user experience for selecting options within Kanban views.
Original PR description
Issue:
Dropdown item-ish (such as `<a class="dropdown-item">` and ViewButton) inside kanban cards dropdown do not have the proper hover styling and are not navigable.
Steps to reproduce:
- Go to project -> open any card dropdown menu ("...") -> Items are not navigable
- Go to CRM -> open any card dropdown menu ("...") -> Items are not highlighted on hover
Fix:
This commit adds the "o-navigable" class to dropdown items and view buttons
which are inside a kanban card's dropdown menu, this makes them navigable
and adds proper hover and focus styling.
---
I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-prThis update fixes a visual bug where the calendar wasn't displaying correctly on the My Dashboard. The issue stemmed from a missing CSS element, now resolved to ensure the calendar appears as expected when added to the dashboard. This improves the user experience for managing calendar events.
Original PR description
--- ## Short functional explanation of the error When adding a calendar to a personal dashboard, only the header shows. The calendar itself doesn't show. ## Reproduction Steps 1. Go to calendar and click on the cog next to it. 2. Click on Dashboard > add. 3. Go to the Dashboard app > My Dashboard. ### Expected behavior The calendar should show under the header. ### Unexpected behavior Only the header shows. ## Origin of the issue The calendar wrapper in the CSS style wasn't specified. --- opw-5242329 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This update fixes a bug where forum post images set to specific sizes (50% or 25%) weren't being saved correctly. The issue stemmed from how Odoo handled inline styles, and the fix disables reliance on these styles for image sizing within forum posts. This ensures images are consistently displayed as intended.
Original PR description
Problem: When creating a new forum post with an image set to "50%" or "25%" size, the post is saved with the original image size instead of the selected one. Cause: The `Post.content` field has `strip_style=True`, which removes any inline `style` attributes before saving. Since image size ratios were applied using `style="width: 50%"`, the width information was lost. Solution: Disable image size options that depend on inline `style` attributes, as they cannot be preserved when saving forum posts. Steps to reproduce: 1. Go to Forum. 2. Create a new post. 3. Add an image and set its size to 50% or 25%. 4. Save the post — the image appears with its original size. opw-5173917 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#234354
This update resolves an issue where custom snippet previews weren't appearing in the 'Insert a block' dialog when visibility options were saved. The fix ensures that snippet previews are consistently displayed, regardless of the configured visibility settings, improving the user experience.
Original PR description
When saving a snippet with visibility options (e.g. Hide on desktop), those options were also saved in the snippet template. As a result, the custom snippet preview was not displayed in the "Insert a block" dialog. This commit fixes the issue by explicitly forcing `display: block` on custom snippets in the dialog, ensuring they remain visible regardless of the saved visibility options.
This update removes a confusing warning message that appeared when users edited outdated website snippets. Now, users can directly access and modify these snippets without interruption. If an error occurs due to an outdated version, a clear alert message will be displayed to guide the user.
Original PR description
Currently when a user try to modify the options of an outdated snippet a warning block display on top of the options. The block present two options : 'try to update the snippet' or 'access options anyway'. This PR remove the warning on the options and suppose the 'access options anyway' is the default choice. If an error occur, the snippet version is verified and an alert message is display if the snippet is outdated. task-4297808
This update streamlines the planning process by automatically notifying users when employee work emails are missing. Instead of being blocked by a manual wizard, users receive a list of affected employees, allowing them to quickly resolve the issue by contacting HR or the employees themselves. This reduces delays and improves overall planning efficiency.
Original PR description
Before this commit, when the planning manager wants to send the planning and for some employees the work email is missing, the user is blocked on the wizard to fill the work email on those employees if he does not edit access to employee model. This commit makes sure the wizard to fill in the missing work email is not displayed if the user cannot edit the information of the employees. It also displays a notification listing the employees for which the work email is missing. By doing that, the user can easily remove those employees to continue his flow or ask to HR user or the employees concerned to complete the missing information. task-5090163
This update resolves a bug where the HTML editor incorrectly flagged parsing errors when QWeb nodes were hidden using `display: none`. The fix ensures consistent block detection regardless of an element's visibility, preventing unexpected errors and improving the editor's reliability.
Original PR description
Problem: When nodes have `display: none` (for example a QWeb `t-else` node with a false condition), `isBlock` incorrectly fails when checking them. Solution: If a node has `display: none`, fall back to checking its `tagName` against `blockTagNames`. This ensures consistent behavior regardless of the node visibility. Steps to reproduce: - Open “Appointment: Attendee Invitation”. - Add a list item to the list in the content. - Save. - A QWeb parsing error occurs. opw-5268806 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This update corrects a rounding discrepancy in order totals when using the 'Round Globally' setting. Previously, the order subtotal was slightly off due to internal rounding processes, resulting in a small difference. This fix ensures accurate order subtotal calculations for all users.
Original PR description
Steps to reproduce: - Enable Rounding Method 'Round Globally' - Create a Sales Order - Add a product with price 69.99 @ 20% tax included in price - Confirm order Issue: While on the order line a price subtotal of 58.33 is shown, the order subtotal will display 58.32 This occurs because, in global rounding we set the raw total on the line, but the total will still be rounded and eventually error corrected, which may introduce a 1 cent difference when dealing with amounts near the rounding threshold. opw-5106971
This update prevents guest users from seeing the unpin button in the PinnedMessagesPanel, resolving a confusing user experience. Previously, guests could interact with a button that didn't work, leading to frustration. Now, the UI accurately reflects guest user permissions, providing a smoother and more reliable experience.
Original PR description
**Description of the issue/feature this PR addresses:** ---------------------------------------------- Currently, guest users in PinnedMessagesPanel can see the unpin button on pinned messages, but…
**Description of the issue/feature this PR addresses:** ---------------------------------------------- Currently, guest users in PinnedMessagesPanel can see the unpin button on pinned messages, but the server correctly rejects their unpin requests. This creates confusion and a poor user experience where external users see functionality that doesn't work for them. **Current behavior before PR:** ---------------------------------------------- - Guest users see the unpin button on pinned messages - Clicking the unpin button results in server rejection - UI shows functionality that guest users cannot actually use **Desired behavior after PR is merged:** ---------------------------------------------- - Guest users cannot see the unpin button on pinned messages - Internal users continue to have full pin/unpin functionality - UI accurately reflects user permissions and capabilities - Better user experience with appropriate access control Task-5033295 ---------------------------------------------- I confirm I have signed the CLA and read the PR guidelines at https://www.odoo.com/submit-pr
This update corrects a bug that occurred when multiple CAF ranges were active within a document type, causing database errors. The fix ensures the system selects the CAF with the lowest starting number, allowing for seamless handling of multiple CAF ranges and preventing errors when generating invoices. This improves the reliability of invoice processing.
Original PR description
In #92208 the CAF system was improved to find the next starting value in the right sequence if there are multiple in the system. If no CAFs are found, it will reset to the document types starting…
In #92208 the CAF system was improved to find the next starting value in the right sequence if there are multiple in the system. If no CAFs are found, it will reset to the document types starting number. This worked except in the case where there are multiple CAFs that are currently marked active in a document type. As it tries to access `caf.start_nb` it hits an ensure_one() which throws a traceback whenever you open most account.moves on the DB. Steps to reproduce: - Modify the CAF for Doc Type 33 (Electronic Invoices) to have a smaller range than 1 - 999,999 (1 - 5) - Create Two new CAF files also for Doc Type 33 that start after this value (6 - 10 and 11 - 15 for example). - Mark the original to be spent via cancelling it and try to open an invoice. It will find both of the new CAFs and try to get the start_nb of the recordset. In discussion with the PO, when we have multiple CAFs, we should pick by the lowest start number as it will allow for any gaps that might exist be filled. opw-5414350
1 change
Resolved issues and error corrections
This update resolves an issue with the Google Maps integration by modernizing the code to align with Google's latest guidelines. Specifically, it replaces outdated components and utilizes a more efficient loading method, ensuring ongoing compatibility and security.
Original PR description
Replaced the deprecated `google.maps.Marker` with `google.maps.marker.AdvancedMarkerElement`, as the former has been deprecated since February 2024. Additionally, updated the method for loading the Google Maps JS API to use the recommended dynamic library import for improved performance and compliance with the latest guidelines. References: - Migration to Advanced Marker: https://developers.google.com/maps/documentation/javascript/advanced-markers/migration - Dynamic library import: https://developers.google.com/maps/documentation/javascript/load-maps-js-api task-4441041