Daily updates from Odoo
Friday, March 20, 2026
115 changes
14 changes
Resolved issues and error corrections
This update resolves a technical issue within Odoo's Studio where view editing sometimes caused errors. The fix ensures that Studio correctly handles inherited views, preventing crashes and improving the stability of the view creation process. This change enhances the reliability of the Studio tool for users.
Original PR description
This commit is a followup to odoo/enterprise#94747 which was made incomplete by odoo/enterprise@52f27c4. Sometimes actions set one of their view to an inherited view rather than the primary. This created traceback because the to-be-created studio arch was normalized against the inheritance tree without the given inherited view, which is wrong. After this commit, there is no crash. opw-5955734 Forward-Port-Of: odoo/enterprise#110835
This update streamlines how Odoo tests handle emoji assets, leading to faster test execution and reduced resource usage. The change allows assets to be cached across test suites, improving overall development efficiency. This work prepares for a future feature that will centralize emoji data management.
Original PR description
Preparation work for an upcoming [emoji loader](https://github.com/odoo/odoo/pull/253078) feature that will ease and centralize the loading and management of emoji data. This PR focuses on making assets caches work accross test suites, and to speed up the processing of some utils to increase performance or to reduce memory consumption. See commit messages for details. - Community: https://github.com/odoo/odoo/pull/253344
This update resolves a technical issue that caused tracebacks in the timesheet assistant when a user lacked an assigned employee within the company. This ensures the timesheet assistant functions correctly for all users, preventing disruptions to time tracking processes. The fix improves stability and usability.
Original PR description
This PR fixes two tracebacks when the current user has no employee in the current company and tries to open either the timesheets assistant or systray Task-6041462
This update corrects a numbering issue in the Vietnamese balance sheet report. Specifically, the order of lines within the 'I. Short-term liabilities' section was adjusted to ensure accurate reporting. This ensures financial reports are presented correctly for Vietnamese businesses using Odoo Enterprise.
Original PR description
- Fixed the numbering of report lines under the section "I. Short-term liabilities" in the balance sheet report 6035762 Forward-Port-Of: odoo/enterprise#111234
This update corrects a problem in the GSTR report testing process. Previously, tests were incorrectly deleting tax amounts. Now, the system removes taxes from the account move line, ensuring more accurate report calculations and compliance. This resolves a technical issue impacting reporting accuracy.
Original PR description
Before this PR: - A test case was deleting taxes. After this PR: - Removed the taxes from the account move line instead of deleting the taxes. Related PR: https://github.com/odoo/odoo/pull/245243 task-5472834 Forward-Port-Of: odoo/enterprise#111198 Forward-Port-Of: odoo/enterprise#105174
This update fixes a technical issue where Odoo would sometimes encounter an error when requesting shipping prices from Sendcloud. Specifically, if Sendcloud didn't respond, Odoo would throw an error. This change prevents these errors, ensuring smoother delivery processing and reducing potential disruptions to order fulfillment.
Original PR description
Sendcloud sometimes doesn't respod when asking for `shipping-price`. So when we try to retrieve the first element of the response, we raise an `IndexError`. ----- Ticket: opw-5951749 Forward-Port-Of: odoo/enterprise#111057 Forward-Port-Of: odoo/enterprise#109252
This update streamlines the new user sign-up experience by removing unnecessary steps in the onboarding tour. This change improves the initial user experience, making it faster and easier for new customers to get started with Odoo Enterprise. The simplification focuses on efficiency and reduces friction for new users.
Original PR description
runbot-238363
This update removes unnecessary code related to skipping model generation during worksheet creation. Following recent changes to the worksheet functionality, this specific context key is no longer needed. This cleanup improves the efficiency and stability of the web studio module.
Original PR description
Since the worksheet rework, the context key `worksheet_no_generation` that used to skip the model generation has now become useless. This commit removes last lines of code using it. *https://github.com/odoo/enterprise/commit/49a84d3ffea49cf8f7fea904e7082b101158bbe9
This update corrects a bug in the point-of-sale report generation process. Previously, the system incorrectly identified refund orders due to how it sorted order data by date. This change ensures that refund orders are always prioritized, guaranteeing accurate reporting of transactions.
Original PR description
The test test_refund_multiple_products_amounts_compliance was doing a search on 'report.pos.order' and was wrongly assuming that the first order in the recordset returned was the refund one and the other one was the original order. This was because the search is ordered by date descending and the refund order is created after the original order. However, in some cases, the date of the refund order can be the same as the date of the original order cause the dates are precise to the second which can lead to a the records returned by id ascending which would give the original order first. This commit adds an explicit order by id descending as second choice to ensure that the refund order is always returned first. runbot-error: 238454 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#253360
This update resolves a problem where header border widths were incorrectly set to full widths due to a design flaw in the input field. The change ensures consistent border widths for standard headers while still allowing full borders for specific header templates, improving website appearance and stability.
Original PR description
Previously, the border width input for headers allowed multiple values. This was required for specific header templates (e.g. rounded box) that use a full border. However, most headers only apply a border on the bottom. When the input had multiple values, the scss would break, resulting in full border. This change ensures that, for headers without the .o_full_border class, only the first value of the saved border width is used. As a result, the input behaves like a single-value field (similar to font size inputs) for standard headers, while still supporting multiple values for templates that require a full border. Steps to reproduce the issue: - Go to Edit mode - Click on the Header - In the Border option, enter "1 2" and leave the input to validate => The input display "3" and the header has a full border. task-5500516 Forward-Port-Of: odoo/odoo#254483 Forward-Port-Of: odoo/odoo#244415
This update fixes a bug in how the system calculates scrap quantities. Previously, if a product lacked a related BOM, the calculation would stop, leading to inaccurate scrap totals. Now, all products in a recordset are correctly processed, ensuring accurate scrap reporting.
Original PR description
### Description of the issue/feature this PR addresses: The `_compute_scrap_qty` method in **mrp/models/stock_scrap.py** exits early with return when a record has no BOM, preventing the computation of `scrap_qty` for remaining records in the recordset. ### Current behavior before PR: When iterating over a multi-record recordset, if any record lacks a `bom_id`, the method does return `super(...)._compute_scrap_qty()`, which exits the entire loop. Records after that one are never computed and keep the default value of 1. ### Desired behavior after PR is merged: Records without a `bom_id` delegate to `super()._compute_scrap_qty()` and the loop continues (continue) to the next record, ensuring all records in the recordset are properly computed. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#253368 Forward-Port-Of: odoo/odoo#252149
This update fixes a bug where hover overlays on website builder sections weren't appearing when hovering over parent elements. The fix ensures the overlay is correctly positioned by explicitly triggering a refresh after the overlay is created, resolving a visual issue for users.
Original PR description
Commit 53ae0a9f646808632ca1ca396466e1c0bb5a73c7 adds a temporary overlay on hover of elements with options. But the overlay was not shown on over of an ancestor of the target. This is because it relied on the resize observer to call the `refreshPosition`, which does not happen if the element on which the hover overlay should appear was already observed. This commit adds an explicit call to `refreshPosition` after the creation of the hover overlay. Steps to reproduce: - Open website builder - Click on a column in a section - Hover the section outside of the column - Bug: no hover overlay is shown on the section element task-6013371
This update fixes an issue where invoice previews in the portal displayed text in the wrong direction (LTR) for Arabic-speaking users. The fix ensures that invoice layouts correctly reflect the user's language setting, improving the user experience for international customers. Additionally, the subtotal layout for Saudi invoices has been adjusted to prevent visual clipping of tax totals.
Original PR description
When opening invoice HTML preview in the portal, the layout was displayed in LTR even if the invoice partner language was RTL (e.g. Arabic). This happened when the portal user language was LTR. PDF…
When opening invoice HTML preview in the portal, the layout was displayed in LTR even if the invoice partner language was RTL (e.g. Arabic). This happened when the portal user language was LTR. PDF structure was correct, but HTML preview had wrong text flow and alignment. Root cause was that RTL asset processing depends on `env.lang`, not on `t-lang` in templates. Since the ORM context language remained the portal user’s language, CSS was compiled in LTR and hardcoded `direction: ltr;` rules from `report.scss` were overriding the `<html dir="rtl">`. To fix this, the portal controller now checks the partner language and, if it is RTL, updates the request context before rendering. This ensures `_render_qweb_html` runs with the correct `env.lang`, triggering proper RTL CSS conversion via rtlcss. Additionally, the subtotal section in the Saudi invoice report could have its values visually cut due to insufficient width allocated to the tax totals column. The column width has been slightly increased to ensure totals are properly displayed. task-5878719 Forward-Port-Of: odoo/odoo#248822
A recent update to the website's job application form processing caused a technical error (KeyError) when users added a file field. This commit corrects the issue by reintroducing a necessary attribute that was unintentionally removed during a recent code change. This ensures the form submission process now functions correctly for all users.
Original PR description
Currently an exception is generated when the user tries to submit a job application through the form. Steps to produce an error: - Install the `web_studio` and `website_hr_recruitment` modules - Add…
Currently an exception is generated when the user tries to submit a job application through the form. Steps to produce an error: - Install the `web_studio` and `website_hr_recruitment` modules - Add a new File field to the `hr.applicant` module with the studio. - Go to the website editor and add the form `Apply for a Job` and add the recently created field into the form and save it - An error will occur when submitting the form with the added field Error: `KeyError: 'manual'` This issue occurs because the `manual` key(attribute) is not included in the `authorized_fields` variable, which is generated by the `get_authorized_fields` method. After the recent refactoring introduced in commit [1], the code was changed to fetch only a limited set of attributes instead of all attributes, and the manual attribute was not added to this list. This commit resolves the above issue by including the `manual` attribute when retrieving model fields, which was not added in commit [1]. [1]: https://github.com/odoo/odoo/commit/bfae7140d3951bec93fb7f2e49018649045edd40 Sentry-7271118700 opw-5933992 Forward-Port-Of: odoo/odoo#249240
26 changes
Resolved issues and error corrections
This update corrects a bug that was causing incorrect decimal values to be generated in French Intrastat XML reports. The issue stemmed from how the system processed invoice data, specifically when handling weights with decimal amounts. This fix ensures accurate reporting for French businesses using the Intrastat functionality.
Original PR description
Steps to reproduce: - Select a French company and activate intrastat - Create an invoice with a 100% discount to a european partner and provide intrastat values such as intrastat code, product commodity code, ... and most importantly a weight with a decimal amount. - Create at least one other invoice to a european partner that has a date earlier than the first one (but on the same month) - Go to intrastat report and export the XML (DEBWEB2) and select EMEBI and then Departures. -> Issue: The line that got processed after the one with a 0 value is not properly post-process regarding the integer conversion because we used to iterate on a list that was modified at the same time. opw-5973832 Forward-Port-Of: odoo/enterprise#110971
This update resolves a technical issue preventing the tour from functioning correctly within the Brazilian localization (l10n_br) module. The fix was necessary due to recent changes in the website's user interface, specifically related to the select menu, which caused a conflict and race conditions within the tour.
Original PR description
Because of the community PR that changes the DOM of the select menu, the tour in this commit crashed. This commit adapts the tour and fixes it as races conditions were still present part-of-task-5935511
This update resolves an issue where GS1 barcode filtering would fail due to an incorrect date interpretation. The fix prevents errors from blocking product filtering, ensuring accurate internal transfer operations. This improves the reliability of our inventory management system.
Original PR description
Steps to reproduce: - Activate the GS1 nomenclature - Create a product "P1" with the barcode: 15099590225865 - Create an internal transfer with one unit of P1 - Go to Barcode > Operations > Internal…
Steps to reproduce: - Activate the GS1 nomenclature - Create a product "P1" with the barcode: 15099590225865 - Create an internal transfer with one unit of P1 - Go to Barcode > Operations > Internal Transfers - Scan the barcode: 15099590225865 to filter transfers by this product barcode Problem: An validation error is raised: A ValidationError is raised: "A GS1 barcode nomenclature pattern was matched. However, the barcode failed to be converted to a valid date." Explanation: GS1 barcodes must follow a strict nomenclature based on well-defined rules. For example, a GS1 product barcode should start with the Application Identifier 01 followed by 14 digits. The GS1 parser processes the barcode rule by rule and applies the first matching rule. In this case, the barcode 15099590483921 is interpreted as a date because it starts with "15", which corresponds to a GS1 Application Identifier for a date. As a result, the parser attempts to convert the first six digits into a date and raises a ValidationError. Solution: Catch the ValidationError raised during GS1 date parsing in filter_on_barcode and explicitly reset parsed_results to False, allowing the normal filter on product resolution logic to continue. This prevents GS1 parsing errors from blocking valid barcodes and ensures that product is correctly filtered opw-5929064 Forward-Port-Of: odoo/enterprise#110679 Forward-Port-Of: odoo/enterprise#110636
This update resolves a technical issue that caused a traceback when using the pivot table autofill feature. The fix corrects a misidentification of the function being called, ensuring consistent behavior with vertical autofills. While the core autofill functionality remains unchanged, this resolves a potential error.
Original PR description
When autofilling a positional pivot row header horizontally, we would get a traceback because we were calling `_autofillPivotColHeader` instead of `_autofillPivotRowHeader`. Note that this fix only fixes the traceback, the result is not correct, but is consistent with autofilling a positional col header vertically. Task: [5909266](https://www.odoo.com/odoo/2328/tasks/5909266) Forward-Port-Of: odoo/enterprise#110994 Forward-Port-Of: odoo/enterprise#109620
This update optimizes the database by removing unnecessary default values from company and partner records. This change reduces data storage and improves performance, particularly for businesses managing multiple companies with different fiscal settings. The fix also resolves a previous issue causing cron jobs to fail.
Original PR description
On multi-company databases, having the defaults value on res.partner fields can unnecessary bloat the database for other companies with different fiscal package (localization). This commit remove the `l10n_ke_branch_code` field default on `res.partner` - the related field on `res.company` has been converted to a stored-compute + inverse so that partner related to a company automatically get the default value `00` whithout needing to touch other partner records. The `l10n_ke_oscu_last_fetch_purchase_date` default on `res.company` has also been removed, cron already fallback to the same default value when none are provided and will update it anyway after it ran. opw-5220129 Forward-Port-Of: odoo/enterprise#105917
This update resolves a visual issue where the map view in the "My Dashboard" sometimes collapsed. The fix removes conflicting height settings and adds a minimum height to ensure the map always displays correctly, regardless of the number of records shown.
Original PR description
This commit fixes rendering height issues when the map view is displayed inside "My Dashboard". * Removed `height: 100%` from the map and pin list containers. This conflicting rule interfered with the flexbox layout, often causing the map to collapse entirely since it couldn't compute its own height. * Added a `min-height` to the map renderer. This ensures the map always occupies a reasonable amount of space in the dashboard, even when there are few or no records to display. task-6022958 Forward-Port-Of: odoo/enterprise#110968 Forward-Port-Of: odoo/enterprise#110790
This update ensures that the tax returns journal is automatically translated into all supported languages, rather than just the user's language. This improves the accuracy and usability of the tax reporting feature for international users.
Original PR description
Currently, the tax returns journal is created in the code and not via the standard `@template` function that makes sure it is always translated in the installed languages. So for now it was only translated in language of the current user. We refactored the code so the journal gets created via the standard `@template` function and thus automatically gets translated into all the installed languages. task-5921458 Forward-Port-Of: odoo/enterprise#111126 Forward-Port-Of: odoo/enterprise#107465
This update corrects a bug in the demo data for our Odoo Enterprise system. Specifically, it ensures that leave allocations are correctly created when using 'faketime,' which simulates future dates. This prevents errors related to time off calculations and ensures accurate reporting for all users.
Original PR description
Issue: The Anita Oliver contract starts on %Y-01-01, so her leave allocation begins from that date. When running with faketime set to 2027-01-01, the system attempts to create leave for the previous month, which results in an error stating that there is no allocation for that time off. Fix: Update the demo data to create the leave and payslip for the first month of the year. This prevents failures when using faketime and ensures it works correctly for real usage of `time off to defer`. task-6026690
This update resolves a potential issue where the system couldn't correctly evaluate data within project tasks. The fix ensures that all data used in evaluation processes are treated as strings, preventing errors and improving data integrity. This ensures reliable operation of the industry_fsm module.
Original PR description
literal_eval needs string values to evaluate,
action.get('domain', []) returns non-string value.
Forward-Port-Of: odoo/enterprise#111202This update corrects a problem in the GSTR report testing process. Previously, tests were deleting tax lines, which caused inaccurate reporting. Now, the system correctly removes taxes from the account move line, ensuring accurate GSTR report calculations and compliance.
Original PR description
Before this PR: - A test case was deleting taxes. After this PR: - Removed the taxes from the account move line instead of deleting the taxes. Related PR: https://github.com/odoo/odoo/pull/245243 task-5472834 Forward-Port-Of: odoo/enterprise#111198 Forward-Port-Of: odoo/enterprise#105174
This update corrects an issue with the numbering of report lines within the Vietnamese balance sheet report. Specifically, the order of items under 'I. Short-term liabilities' was adjusted for improved clarity and accuracy. This ensures the report aligns with Vietnamese accounting standards.
Original PR description
- Fixed the numbering of report lines under the section "I. Short-term liabilities" in the balance sheet report 6035762 Forward-Port-Of: odoo/enterprise#111234
This update corrects a technical issue where Helpdesk ticket buttons weren't being properly recognized by the system's editor. The change ensures buttons within email templates function correctly, preventing links from appearing as buttons. This improves the user experience when interacting with tickets.
Original PR description
Without the `btn` class, buttons are identified as links by the editor. This commit adjusts the buttons inside the mail templates so that they are properly handled by the editor. Steps to reproduce: - Have demo data - Turn on developer mode - Go to Helpdesk > Customer Care - Open ticket "Where can I download a catalog?" - In the debug menu, go to Messages - Open the first template - Click on the "View Ticket" button - Edit the link => The link popover recognized it as a link instead of a button. As of saas-18.2, the style is replaced by a plain link style when changing the URL. task-5948539 Forward-Port-Of: odoo/enterprise#110797 Forward-Port-Of: odoo/enterprise#107888
This update corrects a visual discrepancy in the AI Live Chat snippet's appearance, ensuring it matches how it's displayed in real-time. The issue stemmed from mismatched code structures, and this fix ensures a consistent user experience across different devices and configurations. It also resolves a related problem with the fallback button visibility.
Original PR description
Scenario: - add ai livechat snippet block - switch to mobile - enable "Fallback Button" - save Result: the rendering is different between edition and real usage of AI livechat snippet. Cause: structure and classes don't match Fix: make the structure and classes match. opw-5458575 pr note: I copied `ai_website_livechat.AILivechatComponent` in `ai_website_livechat.s_ai_livechat_edit` but it might make more sense to just render the owl widget with a class that neuter the AI (this way we don't need to update both template at each change) Forward-Port-Of: odoo/enterprise#109569
This update corrects a technical issue where archived partner data was incorrectly being matched during bank statement retrieval. Now, the system only considers active partners when finding bank statements, ensuring accurate partner assignments and data integrity. This improves the reliability of financial reporting.
Original PR description
Description of the issue this commit addresses: Partner auto-detection on statement lines could match archived partners via SQL causing unexpected partner_id assignment. Desired behavior after this commit is merged: Partner retrieval from bank account, partner name, and previous statement lines only considers active partners, preventing archived matches. runbot-238918 Forward-Port-Of: odoo/enterprise#111029 Forward-Port-Of: odoo/enterprise#110446
This update corrects a problem where the company logo was appearing too large on various Odoo reports. The fix targeted a generic CSS selector that was unintentionally affecting multiple reports. This ensures a consistent and professional appearance for all generated reports.
Original PR description
This selector is generic and is impacting all the reports in `report_templates.xml` which are making use of the same class name. task-5951770 Community PR: https://github.com/odoo/odoo/pull/249432 Forward-Port-Of: odoo/enterprise#110858
This update fixes a bug where right-clicking on the keypad caused unintended long-press actions. Previously, the system incorrectly interpreted right-clicks as long presses due to how the context menu was handled. This change ensures that only left-button actions are recognized, improving the user experience and preventing unexpected behavior.
Original PR description
Since [1], some keypad buttons have a long-press value/action and, at worst, they enter the normal key value after the long-press duration. It was later improved by [2] (19.2) and other actions were…
Since [1], some keypad buttons have a long-press value/action and, at worst, they enter the normal key value after the long-press duration. It was later improved by [2] (19.2) and other actions were added such as long-pressing backspace at [3] (19.2) and more recently [4] (19.3) which allows calling the voicemail with long-pressing "1". In all those versions and features, there is the same bug: right-clicking the key triggers the long-press action as the context menu opens over the cursor, then our implementation ends up believing a long-press was performed. Solution: we should never have considered anything else than left-button actions anyways. [1]: https://github.com/odoo/enterprise/commit/82b4c4327fc722f55a0c14b14a916a5cddafa0eb [2]: https://github.com/odoo/enterprise/commit/b9dd0d6fc1fee479e9c8cd4c89dc0a9147891185 [3]: https://github.com/odoo/enterprise/commit/2723ef65622bb206d64e08482f3acd6594c03d28 [4]: https://github.com/odoo/enterprise/commit/dea0baa0dfd76962865717173807e4c945414cd3 task-6055182
This update resolves a potential issue where forum requests could get stuck indefinitely, causing performance problems. A timeout has been added to the /forum/get_url_title endpoint to ensure faster response times and a smoother user experience. This improves the overall stability and responsiveness of the forum.
Original PR description
Add a timeout to the requests done by /forum/get_url_title to avoid blocking indefinitely Forward-Port-Of: odoo/odoo#254607
This update resolves an issue where users with limited access to accounting couldn't successfully import vendor bills in XML format. The fix involved a change to how user permissions are handled during the import process, ensuring that restricted users receive a traceback when attempting to import. This prevents unauthorized access and data manipulation.
Original PR description
[FIX] account_edi_ubl_cii: restricted access user cannot import bill To reproduce: - create a user that has readonly access in Accounting - try to import a XML in vendor bills -> should traceback This commit modifies the `res_field` assignation by setting both `res_model` and `res_id` at the same time Forward-Port-Of: odoo/odoo#254698
This update fixes visual glitches and performance issues within the SelectMenu component, particularly when searching for options. It also improves the styling of the SelectMenu, ensuring a smoother and more reliable user experience across Odoo's SaaS platform.
Original PR description
Description of the issue/feature this PR addresses: Current behavior before PR: Desired behavior after PR is merged: --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This update resolves a technical issue where tracking signature fields within Odoo caused system crashes. The change prevents the system from attempting to track signature updates, which aren't supported, ensuring stability. This improves the overall reliability of the mail functionality.
Original PR description
With https://github.com/odoo/odoo/pull/232814, the signature type was introduced as a valid property in properties field type. When a property field of type signature is marked as tracked and its parent field changes, the system attempts to track the signature update. Since tracking image or binary content is not supported and is not implemented, this leads to a NotImplementedError. To prevent this crash, signature property fields are now excluded from tracking. task-5966544
This update resolves a bug where the 'is typing' indicator incorrectly appeared when users were editing messages in Odoo. The fix prevents this indicator from being triggered during edits, aligning with the intended use of the indicator – to signal new message arrivals, not temporary editing actions. Users will now see the message changes immediately without the distracting 'is typing' notification.
Original PR description
Before this commit, when editing a message, this was triggering the "is typing" on this member. This "is typing" was only stopped after the long timeout of 1 min. Typing indicator is meant to expect other others to receive a new message, so this is misleading to show the "is typing" when editing the message. Usually editing message is to fix small typo in a very short time, so it's quite expected for other people to see the new changes without requiring UI indicator other than the "(edited)" label on message textual content. This commit fixes the issue by not notifying is typing on composer of message edition. Task-6045905 Forward-Port-Of: odoo/odoo#254453
This update ensures that when importing tasks from Excel, the recurrence settings specified in the imported data are correctly applied, rather than defaulting to standard recurrence values. Previously, importing tasks without a recurrence ID would overwrite these settings, leading to inconsistencies. This fix guarantees that imported task recurrence aligns with the user's intended schedule.
Original PR description
### Steps to reproduce: - Create a xlsx sheet with some fsm_tasks values with recurrence values - Import the sheet to Field Service > Tasks - Navigate to the created tasks - Notice the recurrence values is the default ones not the ones in the imported sheet ### Cause: If we are importing records without recurrence_id value we will set the recurrence fields' values to the default values while we might already have values for those fields ### Fix: Check if we have values for recurrence fields we don't set the defaults and let the create method create the project.task.recurrence record and set the recurrence_id opw-5925546 Forward-Port-Of: odoo/odoo#249104
This update fixes a bug in the demo data for the HR holidays module. When simulating future time off periods (using faketime), the system incorrectly generated errors due to a mismatch in date calculations. The fix ensures the demo data accurately reflects the start of Anita Oliver's contract, preventing these errors and ensuring the system functions correctly for all time off scenarios.
Original PR description
Issue: The Anita Oliver contract starts on %Y-01-01, so her leave allocation begins from that date. When running with faketime set to 2027-01-01, the system attempts to create leave for the previous month, which results in an error stating that there is no allocation for that time off. Fix: Update the demo data to create the leave and payslip for the first month of the year. This prevents failures when using faketime and ensures it works correctly for real usage of `time off to defer`. task-6026690
This update corrects a minor issue with how product images are displayed on the website. A small typo in a styling code was preventing the images from showing correctly for some users. This fix ensures all users see the product images as intended.
Original PR description
task-6047633 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#254817
This update resolves an issue preventing users with standard inventory access rights from printing inventory count sheets. The system was incorrectly restricting access to system parameters, which is now corrected. This ensures all inventory users can generate the necessary reports.
Original PR description
### Steps to reproduce: - Impersonate a user with only Inventory user access rights - Inventory > Operations > Adjustments> Physical Inventory - Select any quant in the list > Print > Count Sheet…
### Steps to reproduce: - Impersonate a user with only Inventory user access rights - Inventory > Operations > Adjustments> Physical Inventory - Select any quant in the list > Print > Count Sheet #### > Access Error: You are not allowed to access 'System Parameter' (ir.config_parameter) records. ### Cause of the issue: The template of the count sheet relies on the `get_param` methods of the `ir.config_parameter` model which requires read access rights on the model: https://github.com/odoo/odoo/blob/69ec92cd6fd1b5f19c3db8763c12f003c9acf0dd/addons/stock/report/report_stockinventory.xml#L36-L39 https://github.com/odoo/odoo/blob/69ec92cd6fd1b5f19c3db8763c12f003c9acf0dd/odoo/addons/base/models/ir_config_parameter.py#L59-L69 This access right is limited to the the `base.group_system` (admin) user group: https://github.com/odoo/odoo/blob/69ec92cd6fd1b5f19c3db8763c12f003c9acf0dd/odoo/addons/base/security/ir.model.access.csv#L118 opw-5959200 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#253251
This update fixes a potential issue where errors in outdated HTML snippets would cause the entire builder process to fail. Now, users receive a warning notification if a snippet is outdated, guiding them to update it and resolve the error. This improves the user experience and prevents disruptions.
Original PR description
Since [1], the warning to inform the user that a snippet is outdated has been removed. After this commit, if a builder action fail on outdated snippets (mismatched vcss/vxml/vjs versions), we show a warning notification instead of propagating the error. The notification informs the user that an error occurred on an outdated snippet, and prompts them to drag a new version of the snippet. This is achieved by wrapping try-catch blocks around all builder action lifecycle methods (apply, clean, load, getValue, isApplied) and implementing an error handling method that detects if the snippet is outdated. task-4297808 [1]: https://github.com/odoo/odoo/pull/224382 Forward-Port-Of: odoo/odoo#230816
3 changes
Resolved issues and error corrections
This update resolves a technical issue related to how Odoo processes bank statement imports with multiple currencies. Specifically, it prevents a 'singleton error' that occurred when fetching CODA data, ensuring accurate journal matching and import functionality for businesses using multiple currencies.
Original PR description
When having multiple journals with the same IBAN, but different currencies, we could have a singleton error if they are not all configured the same (besides the currency). This happens in the cron that fetches new CODAs as we first fetch all CODAs. Then, for each, we have to dispatch it in the right journal. To do so, we rely on `_parse_bank_statement_file` which is called on `self`, which itself calls `_get_coda_final_statements` that triggers the singleton error. However, at this point, we don't care about calling `_get_coda_final_statements` since we only want to retrieve the IBAN and the currency of the CODA, we don't care about the other details. Thus, the solution here is to ignore this call if we don't need it while just retrieveing the necessary info to match a journal before even creating the statements. opw-5723017 opw-6036909 Forward-Port-Of: odoo/enterprise#111250 Forward-Port-Of: odoo/enterprise#111101
This update corrects an issue with the numbering of lines within the Vietnamese balance sheet report. Specifically, the order of items under 'I. Short-term liabilities' was incorrect. This ensures the report accurately reflects financial data for Vietnamese businesses using the Odoo Enterprise system.
Original PR description
- Fixed the numbering of report lines under the section "I. Short-term liabilities" in the balance sheet report 6035762 Forward-Port-Of: odoo/enterprise#111234
This update resolves a test issue where simultaneous data synchronization in the POS tax module caused errors. The fix ensures that backend calls complete before the test continues, improving test reliability and preventing disruptions. This enhances the overall stability of the POS tax functionality.
Original PR description
In the test test_pos_avatax_flow, two calls are made to get_order_tax_details almost simultaneously, which causes the second call to raise an error due to both call trying to sync the same order at the same time. This commit fixes the test by waiting for the backend calls to be done before proceeding with the test next steps. runbot-error: 238871, 238872 Forward-Port-Of: odoo/enterprise#110341
10 changes
Resolved issues and error corrections
This update resolves a visual issue where the star rating element on product reviews was hidden behind other elements. The fix adjusts the star rating's placement within the email composer to ensure it's correctly displayed without overlapping other content. This improves the user experience for customers leaving reviews.
Original PR description
# How to reproduce - Go to the eCommerce page of any product - In Edit mode, in the Customize tab, enable reviews - Scroll down and click on the "+" button next to reviews # The problem The star…
# How to reproduce
- Go to the eCommerce page of any product
- In Edit mode, in the Customize tab, enable reviews
- Scroll down and click on the "+" button next to reviews
# The problem
The star rating element is squished / hidden behind other elements of the review
# Why
The star rating element is added to the mail composer element as follows :
```xml
<t t-inherit="mail.Composer" t-inherit-mode="extension">
<xpath expr="//div[hasclass('o-mail-Composer-coreMain')]" position="before">
<div t-if="env.displayRating and !message" class="o-mail-Composer-starCard d-flex">
```
The composer element has the display: grid attribute with different grid-areas defined :
```scss
.o-mail-Composer {
grid-template-areas:
"sidebar-header core-header"
"sidebar-main core-main"
"sidebar-footer core-footer";
grid-template-columns: auto 1fr;
grid-template-rows: auto 1fr auto;
```
But, o-mail-Composer-starCard does not define any grid-area, so the star rating element fills the grid in the first space available that is not already taken. That space used to be core-header, which worked totally fine, but this commit (https://github.com/odoo/odoo/commit/451c2c9) made it so the composer element always has a div in the core-header area. This made it so there was no available space for the star rating element (since core-header was taken) and so it defaulted to a position in the center of the composer.
Since there is now always a div element in the core-header area, this fix change the xpath of the star-rating so that it is put inside of that div.
opw-6046551
---
I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-prThis update corrects a bug where changes to view ordering within the Odoo Studio were not consistently applied. The fix involved updating the default order setting within the documents module to use the correct attribute on the relational model, ensuring that view order changes are now properly reflected.
Original PR description
Bug === When changing the order of the views using studio, it wasn't applied. The reason is that we add a default order at the wrong place in JS, it should be done with the attribute made for that, `defaultOrderBy` on the relational model. Task-6047024 Forward-Port-Of: odoo/enterprise#111091
This update corrects a numbering issue in the Vietnamese balance sheet report. Specifically, the order of report lines within the 'I. Short-term liabilities' section has been fixed. This ensures accurate and consistent reporting for Vietnamese businesses using the Odoo Enterprise system.
Original PR description
- Fixed the numbering of report lines under the section "I. Short-term liabilities" in the balance sheet report 6035762 Forward-Port-Of: odoo/enterprise#111234
This update resolves a layout issue caused by a recent change intended to prevent unwanted clicks in the FileUploader. The fix ensures the UI remains properly aligned and functional, specifically addressing a problem where edition buttons were misaligned during file uploads. This improves the user experience for HR and employee data management.
Original PR description
This PR completes the changes introduced in: https://github.com/odoo/odoo/commit/2cbb735f5eecb7c31db8245b8d598d7193992a05 ### Issue: A `<div>` was added to prevent click propagation in the FileUploader, but it introduced unintended extra spacing in several parts of the UI ### Cause: The added `<div>` affected the layout by taking up space where it should not ### Fix: A specific class is added to neutralize the layout impact of this element while preserving the click propagation behavior ### Steps to reproduce: - Install `hr' - Create a new Employee - Go in Private Information > Work Permit - Upload a file Before the fix, the edition's buttons are in another line opw-5918379
This update corrects a bug that was causing incorrect leave calculations within the holiday accrual process. The previous code used an inconsistent field, leading to potential errors and inaccurate leave balances. This fix ensures accurate leave accruals and prevents future issues.
Original PR description
## Issue Oblivion regarding community-239836 The field `leaves_taken` (which shouldn't be accessed from the `_process_accrual_plans` method because it is inconsistent/can lead to infinite loop, see the related PR explanation) is used instead of the variable `leaves_taken`. robodoo up to saas-18.4 included Forward-Port-Of: odoo/odoo#253076
This update ensures that presence status notifications are sent only after a user's presence record is removed from the system. Previously, notifications were sent with outdated information, leading to incorrect status updates. This fix guarantees accurate and reliable presence status broadcasts for users.
Original PR description
Before this commit, presence channel notifications for unlinked records were sent before the records were actually removed from the database. This caused `im_status` to be calculated using stale data, occasionally resulting in statuses other than "offline" being broadcast. This commit ensures notifications are sent only after the presences have been unlinked, guaranteeing an accurate status. Forward-Port-Of: odoo/odoo#254186 Forward-Port-Of: odoo/odoo#249314
This update brings the latest version of the spreadsheet component to Odoo 18.3. It addresses several minor bugs and improves functionality, specifically related to pasting values, chart data, and pivot table features. These changes ensure a smoother and more reliable spreadsheet experience for users.
Original PR description
### Contains the following commits: https://github.com/odoo/o-spreadsheet/commit/6626b4649d [REL] 18.3.39 [Task: 0](https://www.odoo.com/odoo/2328/tasks/0)…
### Contains the following commits: https://github.com/odoo/o-spreadsheet/commit/6626b4649d [REL] 18.3.39 [Task: 0](https://www.odoo.com/odoo/2328/tasks/0) https://github.com/odoo/o-spreadsheet/commit/62a1fd4307 [FIX] clipboard : paste as value [Task: 5936382](https://www.odoo.com/odoo/2328/tasks/5936382) https://github.com/odoo/o-spreadsheet/commit/09873f6c22 [FIX] Chart: Update geojson data [Task: 5224009](https://www.odoo.com/odoo/2328/tasks/5224009) https://github.com/odoo/o-spreadsheet/commit/4d29b1d901 [FIX] charts: hierarchical charts should show formatted labels instead of raw [Task: 5913296](https://www.odoo.com/odoo/2328/tasks/5913296) https://github.com/odoo/o-spreadsheet/commit/d901f29b3f [FIX] pivot: can add the same granularity [Task: 5949522](https://www.odoo.com/odoo/2328/tasks/5949522) 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 resolves an issue where emails weren't automatically sent when creating tasks using task templates. The fix now treats template creation like a copy, ensuring that email notifications are triggered as expected. This improves communication and ensures users receive timely updates when tasks are generated from templates.
Original PR description
Steps to reproduce: - Open form view project that has task templates. - Add a partner to follow project when task is created. - From `New` button click on any available task templates . Issue: - Mail is not sent when task is created from template. Fix: - Now we are treating creating task from template same as we do copy. Solution: - Make sure we send a mail and stop the normal logging which happens when copying the task.
A technical issue in the composer was causing errors when users selected mentions. This update corrects a renaming of an internal attribute within the system, ensuring the mention functionality now works reliably. This resolves a potential disruption for users composing emails.
Original PR description
Problem: Opening the composer, typing "@" and selecting any item causes a traceback. Cause: After 8c99b17fcc3a612fd897da9ee29e2f53254d5933, the attribute `channel` was renamed to `thread`. Some code still referenced the old `channel` attribute, leading to errors when selecting mentions. Steps to reproduce: - Open the composer. - Type "@" to trigger mentions. - Select any item from the suggestions. - Observe a traceback. opw-6030307 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#254127
This update fixes a crash that occasionally occurred when users attempted to print from the Odoo dashboard. The issue was resolved by correcting a bug in the spreadsheet and dashboard action JavaScript files. This ensures that users can reliably print dashboard reports.
Original PR description
Description of the issue/feature this PR addresses: Current behavior before PR: Desired behavior after PR is merged: --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#254815
8 changes
Resolved issues and error corrections
This update resolves a visual issue where the map view in the "My Dashboard" sometimes collapsed. The fix removes conflicting height settings and adds a minimum height to ensure the map always displays correctly, regardless of the number of records shown.
Original PR description
This commit fixes rendering height issues when the map view is displayed inside "My Dashboard". * Removed `height: 100%` from the map and pin list containers. This conflicting rule interfered with the flexbox layout, often causing the map to collapse entirely since it couldn't compute its own height. * Added a `min-height` to the map renderer. This ensures the map always occupies a reasonable amount of space in the dashboard, even when there are few or no records to display. task-6022958 Forward-Port-Of: odoo/enterprise#110968 Forward-Port-Of: odoo/enterprise#110790
This update resolves a technical issue that could have caused errors when importing bank statements with multiple journals using different currencies. The fix prevents a redundant process from triggering, ensuring smoother and more reliable import of bank statement data, particularly for businesses operating with diverse currency setups.
Original PR description
When having multiple journals with the same IBAN, but different currencies, we could have a singleton error if they are not all configured the same (besides the currency). This happens in the cron that fetches new CODAs as we first fetch all CODAs. Then, for each, we have to dispatch it in the right journal. To do so, we rely on `_parse_bank_statement_file` which is called on `self`, which itself calls `_get_coda_final_statements` that triggers the singleton error. However, at this point, we don't care about calling `_get_coda_final_statements` since we only want to retrieve the IBAN and the currency of the CODA, we don't care about the other details. Thus, the solution here is to ignore this call if we don't need it while just retrieveing the necessary info to match a journal before even creating the statements. opw-5723017 opw-6036909 Forward-Port-Of: odoo/enterprise#111101
This update corrects a technical issue that caused the Odoo Enterprise system to crash when resetting purchase data fetching settings for a company. The fix ensures that the system correctly handles this scenario, preventing future errors and maintaining reliable data retrieval for Kenyan e-invoicing.
Original PR description
In case the purchase last fetch data is resetted to `False` on the company, the next cron run will crash with: `type object 'datetime.datetime' has no attribute 'datetime'` This commit fix the wrong default date fallback. opw-5220129 Forward-Port-Of: odoo/enterprise#111124
This update resolves a technical issue related to how geographic data (topoJSON) is processed within the Enterprise edition of Odoo. The fix ensures that charts displaying location-based data are now rendered correctly, improving the accuracy and reliability of these visualizations. This primarily impacts users relying on charts that utilize geographical information.
Original PR description
test adaptation Counterpart of github.com/odoo/odoo/pull/248847 Task-5224009
This update corrects a bug where changes to view order within the Documents module's studio interface weren't consistently applied. The fix involved updating the default order setting within the Documents relational model, ensuring that view order changes are correctly reflected. This improves the user experience for managing document views.
Original PR description
Bug === When changing the order of the views using studio, it wasn't applied. The reason is that we add a default order at the wrong place in JS, it should be done with the attribute made for that, `defaultOrderBy` on the relational model. Task-6047024 Forward-Port-Of: odoo/enterprise#111091
This update fixes an issue with the numbering of lines within the Vietnamese balance sheet report. Specifically, the order of items under 'I. Short-term liabilities' was corrected. This ensures the report accurately reflects financial data for Vietnamese businesses using the Odoo Enterprise system.
Original PR description
- Fixed the numbering of report lines under the section "I. Short-term liabilities" in the balance sheet report 6035762 Forward-Port-Of: odoo/enterprise#111234
This update corrects a visual issue where the company header in accounting reports appeared grayed out in dark mode. The change ensures consistent color styling across both light and dark themes by updating the header's color to a standard muted data color, improving the user experience.
Original PR description
Before this pr: - The company header in the accounting reports is grayed out in the light mode only, not in the dark mode. Reason: - Until now, we have been using the hard-coded 'lightgrey' color for the company header. After this pr: - In this pr, we are changing the color of the company header from hard-coded 'lightgrey' color to the standard variable color '--AccountReport-muted-data-color' used for muted data in account reports. Task-5960592 Forward-Port-Of: odoo/enterprise#110108
This update resolves an issue where documents uploaded to the 'All' folder in the Documents app were not viewable through the bridge interface. The fix ensures that 'All' folder uploads now default to the standard bridge folder, restoring full accessibility for users.
Original PR description
Problem: When a user uploads a document through a bridge to the Documents app, if the destination is set to the `All` folder, the file becomes unviewable from the bridge. It can only be accessed directly via the Documents app. Cause: This occurs because `All` is not an actual folder. Uploads directed to it default to the `My Drive` folder instead. Because `My Drive` is restricted and inaccessible via the bridge, the uploaded documents remain hidden. Solution: To solve this problem, this PR ensures that uploads directed to the `All` folder default to the default bridge folder rather than to `My Drive`. task-6023290 Forward-Port-Of: odoo/enterprise#111290
14 changes
Resolved issues and error corrections
This update optimizes the database by removing unnecessary default values from company and partner records. Specifically, the automatic setting of branch codes and purchase date defaults has been removed for multi-company environments, reducing data storage and improving performance. This change ensures that each company's data is accurate and efficient.
Original PR description
On multi-company databases, having the defaults value on res.partner fields can unnecessary bloat the database for other companies with different fiscal package (localization). This commit remove the `l10n_ke_branch_code` field default on `res.partner` - the related field on `res.company` has been converted to a stored-compute + inverse so that partner related to a company automatically get the default value `00` whithout needing to touch other partner records. The `l10n_ke_oscu_last_fetch_purchase_date` default on `res.company` has also been removed, cron already fallback to the same default value when none are provided and will update it anyway after it ran. opw-5220129 Forward-Port-Of: odoo/enterprise#105917
This update resolves a problem preventing users from successfully connecting their expense accounts via Stripe. The issue occurred when users attempted to connect through the expense settings, specifically by accepting the terms of service and clicking the 'Connect' button. This fix ensures seamless integration for expense reporting.
Original PR description
To reproduce: - Install hr_expense_stripe_demo - Open the expense Settings - Accept the TOS - Click on Connect (demo)
This update corrects a technical issue in the Account Avatax module, ensuring that company-specific settings are accurately identified. Previously, a key piece of information was missing, which has now been added to improve the module's functionality and data accuracy. This ensures proper tax calculations and reporting.
Original PR description
Since the beginning `account_avatax` has had all of it's data stored on the company, however, it missed the company_dependent key in settings to mark it as such. This commit fixes that. Followup of odoo/odoo#254242 task-none Forward-Port-Of: odoo/enterprise#110983
This update fixes an issue where multiple email addresses on a contact were being overwritten when creating a helpdesk ticket. The change ensures that all email addresses associated with a contact are correctly captured, improving the reliability of ticket creation. This was caused by a technical limitation in how email addresses were handled, and the fix simplifies the process.
Original PR description
Prerequisites: ------------------------------ 1. Set up incoming mail server with Create a New Record set to Helpdesk Ticket 2. From Settings, create one Alias Domain Steps to reproduce:…
Prerequisites: ------------------------------ 1. Set up incoming mail server with Create a New Record set to Helpdesk Ticket 2. From Settings, create one Alias Domain Steps to reproduce: ------------------------------ 1. Install Helpdesk module 2. Open Helpdesk Team > Settings 3. Inside Channels, Set the mail used for the incoming server and the alias created 4. Set Accept Emails From to Everyone 5. Create a new contact with multiple emails (eg: `a@b.com`, `c@d.com`) 6. From Fiest mail (eg: `a@b.com`), Send one mail to mail set in the helpdesk team alias mail. 7. Open Incoming mail sever > Click on Fetch Now 8. Open Created Contact Observation: ------------------------------ The contact's email field is overwritten. The second email address (e.g. `c@d.com`) is lost Issue: ------------------------------ After `create`, since `partner_email` was stored with a value that differs from `partner_id.email`, the inverse method `_inverse_partner_email` kicks in. This is where `_get_partner_email_update()` is called. In `_get_partner_email_update()` `tools.email_normalize()` only handles a single email. When the partner has multiple email, the normalization keeps both, while the ticket email normalizes to just have one mail. The strict `!=` comparison fails, triggering the unwanted update. https://github.com/odoo/enterprise/blob/7c23efafe368787c858db31cec075f642ae6715b/helpdesk/models/helpdesk_ticket.py#L363-L369 Solution: ------------------------------ Instead of comparing the full normalized strings, we should check whether the ticket's normalized email is contained within the set of the partner's normalized emails Note for reviewer ----------------------------- After discussion with the PO (LNA), his opinion is that having multiple email addresses in a single field is not a good practice. This use case is only semi-supported in Odoo, it may work in some cases, but it is not reliable. The recommended approach is to create separate contacts for each email address. That said, we should also avoid automatically clearing or altering the existing value in the field. Based on this, I have implemented a minimal fix that prevents altering the existing value in the field. I am leaving it up to the review to decide whether this fix is worth keeping from a technical standpoint. opw-5478067 Forward-Port-Of: odoo/enterprise#107808
A recent update to the document layout, including VAT information, caused a test to fail. This fix addresses a problem where the test's editor selection wasn't correctly updated after adding the VAT block, preventing a key feature from working. The update ensures the test now passes, guaranteeing correct VAT display functionality.
Original PR description
Issue The test `test_edit_header_only_company` was failing after updating the document layout to include the VAT block in the company address section. Cause Adding the VAT line modified the DOM structure of the header layout. The tour step inserting the placeholder span no longer correctly set the editor selection, preventing the powerbox from opening and causing the test to fail. Solution Update the tour to explicitly reset the editor selection after inserting the span so that the powerbox can open correctly. opw-5373374 Related Community PR : https://github.com/odoo/odoo/pull/249225 Forward-Port-Of: odoo/enterprise#109924
This update ensures that follow-up emails for invoices now send the actual invoice PDF, rather than relying on the main attachment. This prevents issues where users might have uploaded alternative PDFs, ensuring accurate and consistent invoice reminders are sent to customers. This resolves a previous bug related to attachment selection.
Original PR description
Before, the followup emails used the Invoice's main attachment. This is not correct because a user might have uploaded an arb PDF. Only the actual PDF should be sent. Use `invoice_pdf_report_id` instead of `message_main_attachment_id`. opw-5126420 Forward-Port-Of: odoo/enterprise#111085 Forward-Port-Of: odoo/enterprise#98820
This update resolves a technical problem within Odoo's web studio that prevented users from correctly editing views, specifically when using inherited views. The fix ensures that the studio accurately recognizes and incorporates inherited views during the view creation process, preventing errors and crashes. This improves the stability and usability of the web studio.
Original PR description
This commit is a followup to odoo/enterprise#94747 which was made incomplete by odoo/enterprise@52f27c4. Sometimes actions set one of their view to an inherited view rather than the primary. This created traceback because the to-be-created studio arch was normalized against the inheritance tree without the given inherited view, which is wrong. After this commit, there is no crash. opw-5955734 Forward-Port-Of: odoo/enterprise#111245 Forward-Port-Of: odoo/enterprise#110835
This update fixes an issue with the numbering of lines within the Vietnamese balance sheet report. Specifically, the order of items under 'I. Short-term liabilities' was corrected. This ensures the report accurately reflects financial data for Vietnamese businesses using Odoo Enterprise.
Original PR description
- Fixed the numbering of report lines under the section "I. Short-term liabilities" in the balance sheet report 6035762 Forward-Port-Of: odoo/enterprise#111335 Forward-Port-Of: odoo/enterprise#111234
This update corrects a visual issue in the partner ledger report where overdue invoices and negative amounts weren't consistently displayed with the correct color (red and blue, respectively). The fix ensures that key financial information is clearly highlighted, improving report readability and accuracy for users reviewing their accounts. This improves the user experience when analyzing overdue invoices.
Original PR description
commit introducing the issue: https://github.com/odoo/enterprise/commit/6608d5c21a7fb9d57786c2a7618b878e244bd420 Steps to reproduce: - open the partner ledger with some one overdue invoice -> The expected result should be to see the due date in red. -> Negative amounts in the partner ledger should be displayed in blue as well. Forward-Port-Of: odoo/enterprise#111295
This update corrects a problem where text fields in Odoo Sign's PDF forms were incorrectly displayed as checkmarks. The issue stemmed from an error in how the system interpreted PDF tags, specifically when standard text fields had appearance settings. This change ensures that text field values are correctly rendered in signed documents.
Original PR description
Create an interactive PDF form in Adobe Acrobat containing a standard Text Field (/FT /Tx). - Fill the text field with a value (e.g., "John Doe") and save the PDF. - (Note: Adobe Acrobat will often…
Create an interactive PDF form in Adobe Acrobat containing a standard Text Field (/FT /Tx). - Fill the text field with a value (e.g., "John Doe") and save the PDF. - (Note: Adobe Acrobat will often automatically assign an Appearance State (/AS /N) to this text field). - Upload this PDF to the Sign app. **Current behavior:** The text field's string value is ignored and replaced with a checkmark (✓). **Expected behavior:** The text field should correctly render the string value that the user entered. **Cause of the issue:** In the _draw_field_value function, the parser checks if an /AS (Appearance State) tag exists and is not set to /Off. If true, it assumes the field is a checked box and draws a chr(0x2713). However, it fails to check the Field Type (/FT) first. Because Adobe Acrobat sometimes assigns /AS tags to standard Text Fields (/FT /Tx), we misinterprets these populated text fields as checked buttons. **Solution:** This PR fixes the issue safely for stable versions across two commits: [REF]: Extracts the value extraction logic into a dedicated _get_field_value helper method to allow isolated unit testing without requiring a canvas or physical PDF files. No behavioral changes in this commit. [FIX]: Wraps the /AS check within an if field_type == "/Btn": condition. This ensures only actual Checkboxes and Radio Buttons render as checkmarks, allowing Text Fields to fall through and properly return their /V string values. Task: 6018260 Forward-Port-Of: odoo/enterprise#110865 Forward-Port-Of: odoo/enterprise#110292
This update resolves an issue where Odoo would display an error message if Sendcloud didn't respond with shipping price information. The fix prevents a program crash by gracefully handling the situation where Sendcloud doesn't provide a response, ensuring a smoother user experience.
Original PR description
Sendcloud sometimes doesn't respod when asking for `shipping-price`. So when we try to retrieve the first element of the response, we raise an `IndexError`. ----- Ticket: opw-5951749 Forward-Port-Of: odoo/enterprise#111057 Forward-Port-Of: odoo/enterprise#109252
This update resolves an issue where the attendance Gantt chart incorrectly displayed employees without contracts, leading to inaccurate reporting. The change ensures these employees are not shown in the Gantt view, aligning with the system's requirement that only employed staff can record attendance.
Original PR description
In a recently created database, the attendace gantt chart hides all hours of the day, as an employee with no contract is considered unavailable at all times. This commit will make employees with no contract act as if they were in a flexible calendar (only for the gantt view of course). task-5222648
A technical error preventing a test process (runbot) from correctly evaluating overtime rules was resolved. The update corrected the tour's triggers to align with the current system, ensuring accurate overtime calculations and preventing disruptions to payroll processing.
Original PR description
The tour for the overtime ruleset flow was failing in the runbot because some of the triggers do not exist in the view. Updated the tour to use the correct triggers for each action. Task: 6053589
This update ensures that Sales Orders generated from Field Service timesheets only assign a salesperson to the order when the technician has Sales or Invoicing access. Previously, technicians without these permissions were incorrectly assigned as salespeople, leading to unwanted invoice notifications and follower assignments. This change improves data accuracy and reduces unnecessary communication.
Original PR description
Before this commit: - - With the Field Service and Planning integration, validating a planning shift linked to a Field Service project could generate a Sales Order from timesheets and materials. - The user linked to the resource was always assigned as salesperson on the generated Sales Order. - When that user had no Sales or Invoicing access, they were still set as salesperson, causing them to be added as followers on invoices and receive billing-related notifications. After this commit: - - The salesperson is assigned on the generated Sales Order only when the assigned user has Sales or Invoicing access. - If the user lacks these access rights, the salesperson field is left empty, preventing technicians from being added as invoice followers or receiving billing-related notifications. task-5023095
8 changes
Resolved issues and error corrections
This update adjusts how Odoo automatically refreshes GST tokens, moving from a scheduled 5-hour interval to a permanent manual trigger. This change ensures compliance and reduces the risk associated with automated token updates. The process is now controlled by specific actions within the application.
Original PR description
With this PR, the GST token refresh cron interval is updated from 5 hours to 9999 months to effectively disable automatic execution. The cron will instead be triggered manually from `validate_otp` and `_cron_refresh_gst_token` based on the token expiration time.
This update resolves an issue preventing the creation of overtime attendance records across multiple days for employees. The fix addresses a technical error that caused a system failure when attempting to schedule overtime shifts spanning consecutive days. This ensures accurate overtime tracking and avoids disruptions to employee scheduling.
Original PR description
An expected singleton error is raised when we try to create an attendance on multiple days Steps to reproduce: 1. Install Attendances and Work Entries 2. Go to Employees and open Anita Oliver 3. Go to Settings tab and set the Overtime Ruleset to Default Ruleset 4. Go to Attendances and create a new attendance for employee Anita Oliver from Friday 12:00 AM to Saturday 2:00 AM 5. An error is raised Problem: ... Solution: ... opw-5946944
This update corrects an issue where Chilean VAT invoices (l10n_cl_edi) could generate negative folio numbers when no Chilean Fiscal Authority File (CAF) was configured. The fix ensures that folios are correctly assigned, preventing sequence corruption and costly database retries. This improves invoice accuracy and stability.
Original PR description
`l10n_cl_edi` overrides `account.move._get_last_sequence()` to ensure the folio belongs to an available in-use CAF. When no CAF exists at all, `l10n_latam.document.type._get_start_number()` returns 0 and the fallback builds a previous sequence using start_nb - 1. Formatting -1 as `:06d` yields “-00001”, which then propagates to “FAC -00002”, “-00003” and corrupts the sequence chain. In addition, returning an invalid “last sequence” may force `sequence.mixin` to search for a free number under the UNIQUE constraint by retrying increments inside a savepoint and rolling back on UniqueViolation, which is costly when many values are already taken see [ _locked_increment()](https://github.com/odoo/odoo/blob/18.0/addons/account/models/sequence_mixin.py#L352). Now we only reset to the CAF start when an in-use CAF actually exists (start_nb > 0). opw-5918758 Forward-Port-Of: odoo/enterprise#108909
This update resolves an issue where GS1 barcode filtering would fail due to an error when the barcode contained date information. The fix allows the system to correctly filter products based on GS1 barcodes, even if they include date components, ensuring accurate internal transfer tracking.
Original PR description
Steps to reproduce: - Activate the GS1 nomenclature - Create a product "P1" with the barcode: 15099590225865 - Create an internal transfer with one unit of P1 - Go to Barcode > Operations > Internal…
Steps to reproduce: - Activate the GS1 nomenclature - Create a product "P1" with the barcode: 15099590225865 - Create an internal transfer with one unit of P1 - Go to Barcode > Operations > Internal Transfers - Scan the barcode: 15099590225865 to filter transfers by this product barcode Problem: An validation error is raised: A ValidationError is raised: "A GS1 barcode nomenclature pattern was matched. However, the barcode failed to be converted to a valid date." Explanation: GS1 barcodes must follow a strict nomenclature based on well-defined rules. For example, a GS1 product barcode should start with the Application Identifier 01 followed by 14 digits. The GS1 parser processes the barcode rule by rule and applies the first matching rule. In this case, the barcode 15099590483921 is interpreted as a date because it starts with "15", which corresponds to a GS1 Application Identifier for a date. As a result, the parser attempts to convert the first six digits into a date and raises a ValidationError. Solution: Catch the ValidationError raised during GS1 date parsing in filter_on_barcode and explicitly reset parsed_results to False, allowing the normal filter on product resolution logic to continue. This prevents GS1 parsing errors from blocking valid barcodes and ensures that product is correctly filtered opw-5929064 Forward-Port-Of: odoo/enterprise#110679 Forward-Port-Of: odoo/enterprise#110636
This update corrects a visual issue where the live chat button in the edit mode on desktop wasn't correctly sized. The fix ensures the button takes up the appropriate space, and also resolves a related issue where a fallback button was incorrectly displayed when no live chat link was available. This improves the user experience for editing live chat configurations.
Original PR description
This is a small fixup of 55ade43b18e2896b8dbf0f3364b0f4956faee14b Scenario: in edit mode and desktop, add ai livechat snippet block with no fallback or livechat button. Result: only when editing, the livechat button doesn't take 100% of container width. Cause: the change of 55ade43b18e2896b8dbf0f3364b0f4956faee14b tried to be minimal and missed this use case in the merged 19.0 solution. Fix: in template ai_website_livechat.s_ai_livechat_edit, copy exactly the structure of ai_website_livechat.AILivechatComponentedition. Note: also fixes that the fallback button is shown even when there is no link since df05441e469157890253b5550b5f8735723b28fb. opw-5458575
This update resolves an issue where the topbar menu wasn't correctly updated after an AI Agent opened a menu option. The fix ensures that the topbar reflects the currently active menu, improving the user experience when interacting with the AI Agent. This change was driven by a task to address a specific UI bug.
Original PR description
Purpose: -------- When a menu (view) was opened through an AI Agent, the menu in the topbar was not updated. This commit fixes this behaviour by setting the menu when the menu's action has been loaded Task-6017607
This update fixes an issue where imported spreadsheets lost their connection to the original linked records. The change ensures that newly created spreadsheet documents maintain the same linked record as the source document during the import process, improving data consistency and workflow efficiency.
Original PR description
When importing an XLSX or CSV document into a spreadsheet, the linked record is lost on the newly created spreadsheet document. This happens because the conversion creates a new document through `copy()`, while `res_model` and `res_id` are computed fields and are not copied by default. This commit explicitly forwards the linked record values during the conversion so the created spreadsheet keeps the same linked record as the source document. Task: [6008920](https://www.odoo.com/odoo/project/2328/tasks/6008920)
This update resolves a minor typo within the industry_fsm_report module, specifically in the project task views. The corrected naming ensures proper functionality and avoids potential display issues within reports. This change improves the reliability of sales reporting.
Original PR description
the view name is incorrect and already used for this view https://github.com/odoo/enterprise/blob/60e9e0f3232c9cd1e9675cb2e5c4b054dc57bbda/industry_fsm_sale/views/project_task_views.xml#L358
13 changes
Resolved issues and error corrections
This update corrects a bug where changes to view ordering within the Odoo Studio interface weren't consistently applied. The fix involved updating the default order setting on the relevant database model, ensuring that view order changes made through the Studio are now correctly reflected. This improves user experience and simplifies view customization.
Original PR description
Bug === When changing the order of the views using studio, it wasn't applied. The reason is that we add a default order at the wrong place in JS, it should be done with the attribute made for that, `defaultOrderBy` on the relational model. Task-6047024
This update corrects a bug in the Sendcloud delivery service that was caused by incorrect Python slicing. The fix ensures that the intended first element is retrieved, preventing an error. The issue was not caught during testing due to missing CI test runs.
Original PR description
Slicing in Python returns a sub-list, even for a single element. Doing `res[:1]` does not return the first element so doing `.get` causes an error. This was not caught because the tests do not run in CI due to the tags on the class.
This update fixes a visual problem where the map view in the "My Dashboard" sometimes collapsed or didn't display correctly. The changes removed conflicting height settings and added a minimum height to the map, ensuring it always occupies the appropriate space and displays reliably.
Original PR description
This commit fixes rendering height issues when the map view is displayed inside "My Dashboard". * Removed `height: 100%` from the map and pin list containers. This conflicting rule interfered with the flexbox layout, often causing the map to collapse entirely since it couldn't compute its own height. * Added a `min-height` to the map renderer. This ensures the map always occupies a reasonable amount of space in the dashboard, even when there are few or no records to display. task-6022958 Forward-Port-Of: odoo/enterprise#110968 Forward-Port-Of: odoo/enterprise#110790
This update resolves an issue where documents uploaded to the 'All' folder in the Documents app were not viewable through the bridge interface. The fix ensures that 'All' folder uploads now default to the standard bridge folder, restoring full accessibility for users.
Original PR description
Problem: When a user uploads a document through a bridge to the Documents app, if the destination is set to the `All` folder, the file becomes unviewable from the bridge. It can only be accessed directly via the Documents app. Cause: This occurs because `All` is not an actual folder. Uploads directed to it default to the `My Drive` folder instead. Because `My Drive` is restricted and inaccessible via the bridge, the uploaded documents remain hidden. Solution: To solve this problem, this PR ensures that uploads directed to the `All` folder default to the default bridge folder rather than to `My Drive`. task-6023290
This update corrects a bug that caused the Odoo purchase order data fetching process to fail when the last fetch date was reset to 'False' on a company. The fix ensures that cron jobs run smoothly and reliably, preventing data synchronization issues. This improves the accuracy of purchase order information.
Original PR description
In case the purchase last fetch data is resetted to `False` on the company, the next cron run will crash with: `type object 'datetime.datetime' has no attribute 'datetime'` This commit fix the wrong default date fallback. opw-5220129 Forward-Port-Of: odoo/enterprise#111124
This update corrects a visual issue where the company header in accounting reports appeared grayed out in dark mode. The change ensures the header uses a consistent muted color scheme across all Odoo environments, improving the user experience and visual appeal.
Original PR description
Before this pr: - The company header in the accounting reports is grayed out in the light mode only, not in the dark mode. Reason: - Until now, we have been using the hard-coded 'lightgrey' color for the company header. After this pr: - In this pr, we are changing the color of the company header from hard-coded 'lightgrey' color to the standard variable color '--AccountReport-muted-data-color' used for muted data in account reports. Task-5960592 Forward-Port-Of: odoo/enterprise#110108
This update fixes a discrepancy in the French Profit & Loss report. The report was incorrectly double-counting account 649, leading to inaccurate financial totals. The fix ensures that account 649 is correctly categorized within the 'Wages and Salaries' section, aligning with French accounting standards and improving report accuracy.
Original PR description
**Steps to reproduce:** 1. Install module `l10n_fr_reports`. 2. Switch the company to a French localization. 3. Go to Accounting > Reporting > Profit and Loss. 4. Open the section **Operating Expenses**. 5. Check amounts in *Social security charges* and *Wages and salaries* from info. **Issue:** Account 649 was included in two sections of the Profit and Loss report: *Salaires et traitements* (Wages and salaries) *Charges sociales* (Social security charges) Because of this duplication, the total amount in the P&L report does not match the expected accounting values. **Solution:** Remove accounts *649%* from the *Social security charges* section so they are only counted in *Wages and salaries*, which aligns with the expected French accounting structure. Confirmed with PO opw-5976865
This update ensures that changes to a subscription's salesperson are automatically reflected for all associated contacts. Previously, updates only applied to the main company partner, leading to inconsistencies. This change improves data accuracy and reduces the need for manual updates.
Original PR description
Before this commit, changing the salesperson on a subscription only updated the company partner, leaving child contacts with outdated salesperson info. After this commit, updating the subscription's salesperson also updates all child contacts of the company, ensuring consistency across the portal and reducing manual work. An unit test was added to ensure this behavior. task-5917271
This update resolves an issue where cross-origin requests with the Range header would fail due to preflight checks. The fix adds the necessary header to allow these requests to succeed, improving compatibility with external systems. While future customization of preflight responses is considered, this change addresses a specific, previously undetected problem.
Original PR description
Previously, specifying the Range header in a CORS request would result in a preflight failure even if cors was enabled on the route. It is sometimes desirable to allow querying ranges even in a CORS context. It may be desirable at some point in the future to allow controllers to customize their preflight responses more thoroughly, but considering this hasn't really be an issue before, it seems premature. Instead, this commit just adds the Range header to the Allow-Control-Allow-Headers response header to allow such requests to succeed.
This update corrects a previous issue where the 'Recipient Bank' field on credit notes wouldn't display partner bank accounts. The system now correctly filters bank accounts based on the expected recipient, enabling users to properly record credit notes with partner bank details. This ensures accurate financial reporting.
Original PR description
Description of the issue this commit addresses: The Recipient Bank field in the Other Info tab of the Account Move form view refilters accounts to only show you company's ones. This is expected for invoices but is blocking when doing a credit note. You can't find a partner's bank account to fill that field. --- Steps to reproduce: 1. Install account. 2. Create an Invoice to a partner which has a bank account setup. 3. Create a Credit Note for that Invoice. 4. In the "Other Info" tab, remove the partner's bank account. 5. Try to search for his bank account to add it back. It won't show up. --- Desired behavior after this commit is merged: The Recipient Bank field prefilters bank accounts based on who is expected to be the recipient of the move. --- task-5976951 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#252961
This update fixes an issue where users with limited access to the accounting module couldn't successfully import vendor bills in XML format. The change ensures that these restricted users receive a traceback when attempting to import, preventing incorrect processing. This improves data integrity and security.
Original PR description
[FIX] account_edi_ubl_cii: restricted access user cannot import bill To reproduce: - create a user that has readonly access in Accounting - try to import a XML in vendor bills -> should traceback This commit modifies the `res_field` assignation by setting both `res_model` and `res_id` at the same time Forward-Port-Of: odoo/odoo#254698
This update fixes a display issue where the 'Pick Up in Store' option was incorrectly shown for products with excluded tags. The change ensures that unavailable delivery options are hidden from the product page, providing a consistent and accurate customer experience. This aligns with the existing checkout behavior.
Original PR description
Currently, when a product has a tag that is configured as an Excluded Tag on the Pick Up in Store delivery method, the method is still shown on the product page. Steps to produce: --- - Install…
Currently, when a product has a tag that is configured as an Excluded Tag on the Pick Up in Store delivery method, the method is still shown on the product page.
Steps to produce:
---
- Install `website_sale` module.
- Enable `Click and Collect` in settings.
- Go to `website > ecommerce > products > product tags.`
- Create a new tag and add a product in product template.
- Go to` website > configuration > ecommerce > delivery method.`
- Open` pick up in store`:
- In the `Stores` tab, set your company warehouse.
- In the `Availability` tab, add the created tag to Excluded Tags.
- Publish the delivery method.
- Open the tagged product on the website.
Issue:
---
- The Pick Up in Store option is still displayed on the product page, even though the product has a tag listed in the carrier’s Excluded Tags.
Root cause:
---
- Here at [1], the method `_get_additional_combination_info ()` does not check whether the product has tags that are excluded by the delivery method.
- However, at [2], during checkout, the exclusion works correctly because `_match_excluded_tags` in `delivery.carrier` filters the carrier based on excluded tags.
Solution:
---
- Hide the Pick Up in Store option when the product has tags excluded
for that delivery method. This keeps the behavior consistent across
the website, avoids showing unavailable delivery options, does not
impact other flows and aligns with the existing behavior during
checkout.
[1]https://github.com/odoo/odoo/blob/1c483c3a8d7d079bd34a378f9f8716551e4bab93/addons/website_sale_collect/models/product_template.py#L17-L21
[2]https://github.com/odoo/odoo/blob/1c483c3a8d7d079bd34a378f9f8716551e4bab93/addons/delivery/models/delivery_carrier.py#L192-L194
opw-5921268
I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-prThis update corrects a bug that was causing incorrect leave calculations within the holiday accrual process. The issue stemmed from an inconsistent data field being used, which could lead to an infinite loop. This fix ensures accurate leave tracking and prevents potential errors in holiday accruals.
Original PR description
## Issue Oblivion regarding community-239836 The field `leaves_taken` (which shouldn't be accessed from the `_process_accrual_plans` method because it is inconsistent/can lead to infinite loop, see the related PR explanation) is used instead of the variable `leaves_taken`. robodoo up to saas-18.4 included
4 changes
Resolved issues and error corrections
This update fixes a technical error that prevented the generation of the 281.10 report for Belgian payroll companies. The issue stemmed from a missing vehicle ID in the payslip data, which was resolved by recalculating vehicle information using payslip line IDs. This ensures the 281.10 report can now be reliably generated.
Original PR description
[FIX] l10n_be_payroll: fix traceback in 281.10 sheets
Bug reproduction: Go to any version>=17.0 -> select belgium company -> install only belgium payroll (don't install fleet one) -> fill in niss, certification level, address, Time in R&D -> generate payslip and confirm it -> try to generate 281.10 report -> traceback
Bug cause:
1 - In traceback it was saying payslip doesn't have vehicle_id, in 281.10 sheet preparation (in function _get_atn_nature), there is a term like that
2 - Payslip doesn't have it because fleet module is not there.
Bug solution:
1 - Instead of checking the payslip has vehicle like that, we calculated it by using paylsip line_ids
2 - If the code ATN.CAR is there and the total of it is not zero, which means this payslip has a vehicle indeed.
task - 6037206This update resolves a crash that occurred when users attempted to print from the dashboard. The fix addresses an issue in the spreadsheet and dashboard action modules, ensuring the print function now operates reliably. This improves the usability of the dashboard for users who need to generate and share reports.
Original PR description
Description of the issue/feature this PR addresses: Current behavior before PR: Desired behavior after PR is merged: --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This update optimizes how timesheet holiday calculations are refreshed. Previously, updates to employee calendars triggered unnecessary timesheet regeneration, which slowed down the system. Now, the system only updates timesheets when a calendar change actually occurs, improving performance and reducing unnecessary system activity.
Original PR description
Reference: opw-5938425 …imesheet regen When hr.employee.write receives resource_calendar_id, we now compare old and new calendar IDs per employee and only refresh public-holiday timesheets for employees whose calendar actually changed. This avoids needless delete/recreate churn on no-op writes while preserving the same behavior for real calendar changes. Description of the issue/feature this PR addresses: Current behavior before PR: Desired behavior after PR is merged: --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This update fixes a potential issue where VAT validation errors against the VIES service would display technical tracebacks instead of user-friendly messages. The change adds a global error catch to ensure robustness and logging, preventing disruptions when VIES server issues occur. This improves the user experience and system stability.
Original PR description
When an error occurs during VAT validation with the VIES service, we currently try to catch specific exceptions to display a message in the contact chatter. However, not all exceptions are handled, which can lead to a traceback instead of a user-friendly message. For example, `suds.WebFault` is not currently caught. Step to reproduce: - Ensure that in `new_get_soap_client`, you don't use the Zeep library, but instead use the `suds` library to create the client. - On a contact, enter a VAT number and try to save. - Due to the recurrent VIES server issues, you will likely get a `suds.WebFault` exception (MS_MAX_CONCURRENT_REQ) which is not currently caught, leading to a traceback. This fix introduces a global exception catch to ensure robustness, while logging the error for debugging purposes. This also ensures compatibility if `new_get_soap_client` is modified to use a different library or client in the future. opw-6007991