Daily updates from Odoo
Thursday, May 7, 2026
185 changes
14 changes
Resolved issues and error corrections
This update resolves an issue where uploading an empty file to the Sign Documents feature would cause an error. The fix ensures that the system correctly handles empty file uploads, preventing a technical error and improving the stability of the Sign module. This ensures users can consistently upload files without encountering this specific problem.
Original PR description
## Steps to Reproduce: - Install the Sign module. - Try to upload an empty file in Sign Documents. Sample File: https://drive.google.com/file/d/1ik3b7Z--Xla_TmvRj92uTCGy1PspQ_cP/view?usp=drive_link ## Error: `TypeError - a bytes-like object is required, not 'bool'` ## Cause: Before saas-19.2, at [1] `datas` returns an empty binary string (`b''`) when the file content is empty. After the [refactor], `raw` is used instead, which returns `False` for empty content, leading to this error. ## Fix: This commit ensures that when the attachment raw value is False, it is replaced with an empty binary string (`b''`). [refactor]: https://github.com/odoo/enterprise/commit/8d66ffa62ab3fb3334528999d4534a9a995c6830 [1] - https://github.com/odoo/enterprise/blob/0d70215fb5d7b72dcfe86ac23fd04208329aad5d/sign/models/sign_document.py#L65 sentry-7432818850 Forward-Port-Of: odoo/enterprise#115917
This update corrects a technical issue where the demo user's employee record was being duplicated, leading to a database constraint violation. The fix ensures the demo user always utilizes the existing employee record, preventing errors and maintaining data integrity. This improves the stability of the HR holiday testing environment.
Original PR description
Issue: The test was creating a new employee linked to the demo user, but if the demo user already had an employee, it would violate the (user_id, company_id) uniqueness constraint. Fix: Before creating a new employee, we check if the demo user already has one. If not, we create it, otherwise we use the existing one. task-6050719
This change corrects a visual issue in the online store where a product offering free shipping (a reward) displayed a border in the shopping cart. The fix removes this border by adjusting the styling of the quantity field, ensuring a cleaner and more professional shopping experience for customers.
Original PR description
Steps to produce: --- - Install `website_sale` module. - Enable `Discounts, Loyalty & Gift Cards` from settings. - Go to `Website > eCommerce > Loyalty > Discount & Loyalty`. - Create a new program…
Steps to produce: --- - Install `website_sale` module. - Enable `Discounts, Loyalty & Gift Cards` from settings. - Go to `Website > eCommerce > Loyalty > Discount & Loyalty`. - Create a new program and edit the reward to set the reward type to `Free Shipping`. - Create a new product, set its price to 1000, and publish it. - Open the product on the website and add it to the cart > open the cart. Issue: --- - The quantity field for the unsellable product (Free Shipping reward) displays a border in the cart. Root cause: --- - The form-control class is applied to the quantity field at [1]. - This class includes a default border style defined in Bootstrap at [2]. Solution: --- - Apply the Bootstrap utility class `border-0` to remove the border from the quantity field for unsellable products. [1]https://github.com/odoo/odoo/blob/8638dbc21a7a3ebb3c9cc195d2249b4eb5c264ab/addons/website_sale/views/templates.xml#L2901 [2]https://github.com/odoo/odoo/blob/8638dbc21a7a3ebb3c9cc195d2249b4eb5c264ab/addons/web/static/lib/bootstrap/scss/forms/_form-control.scss#L5-L31 Before: --- <img width="822" height="135" alt="image" src="https://github.com/user-attachments/assets/d66c0445-5fd4-45c5-ae81-b4270cab6378" /> After: --- <img width="827" height="132" alt="image" src="https://github.com/user-attachments/assets/9cc2bd65-c542-4d1f-89de-2212fa968c8e" /> opw-6153161 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#262883 Forward-Port-Of: odoo/odoo#261275
This update corrects a problem with the Intrastat CSV export report in the Netherlands. The fix addresses an issue where data was incorrectly formatted (specifically the 'Commodity flow' field) and ensures the database is up-to-date before generating the report, improving data accuracy.
Original PR description
Since the technical refactoring of intrastat in 18.0, the csv export in `l10n_nl_intrastat` seems broken. Here is the fixes done in this commit: 1. `Commodity flow` is supposed to be a single diggit (6 or 7) but an empty blank space was hidden. 2. Switching the condition on `country_origin_code` as it was the opposite 3. Add a `flush_all` before calling the report during the export, to be sure the database is up to date. opw-5799126 Forward-Port-Of: odoo/enterprise#116230 Forward-Port-Of: odoo/enterprise#115791
This update resolves an issue where the power button test in the HTML editor was unreliable, particularly on slower runbots. The fix ensures the test consistently triggers the correct behavior by correctly managing animation frames, preventing delays and ensuring accurate timing.
Original PR description
The previous fix [1] removed one animation frame too many because the first one after arow down is needed in order to trigger the hiding of the power buttons in the first place, otherwise the timer can have elapsed without an animation frame when the runbot is slow. Then, for the other ones, the animation frame must not be awaited, otherwise we risk having an animation frame when the runbot waited more than the debouce delay, as explained in [1]. runbot-242466 [1]: https://github.com/odoo/odoo/pull/259654 Forward-Port-Of: odoo/odoo#262929 Forward-Port-Of: odoo/odoo#262679
This update corrects a problem where payroll period calculations in the Hong Kong module were failing when tests were run outside the default date range. Specifically, the calculation relied on a date derived from today, causing issues with payslips generated in different years. This ensures accurate payroll reporting.
Original PR description
ir56b._compute_period depends on year_of_employer_return, which is derived from submission_date (defaults to today). If tests are run in a different year (mocked time or different environment), the period won't cover the January 2026 payslip. Forward-Port-Of: odoo/enterprise#116246 Forward-Port-Of: odoo/enterprise#116172
This update fixes an issue where long translated labels in product category configuration forms would overlap other fields, creating a cluttered and difficult-to-use interface. The fix allows radio button labels to wrap correctly, ensuring a cleaner and more readable layout, particularly when using localized content.
Original PR description
Steps to reproduce: - Go to Accounting > Configuration > Product Categories - Open the "Goods" category in a narrow enough form layout - Check the "Reserve Packagings" radio field in Ukrainian #### Issue: In configuration forms, `.o_form_label` is forced to `white-space: nowrap`. Since radio option labels also use `.o_form_label`, long translated labels cannot wrap and can overlap the neighboring valuation field area. #### Fix: Exclude `.form-check-label` from that rule so radio labels can wrap without changing the behavior of regular form labels. opw-6086700 <img width="1872" height="966" alt="image" src="https://github.com/user-attachments/assets/db5e5803-b5e7-4904-a036-8bdfbb5504fc" /> --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#261284
This update fixes a technical issue that caused a traceback error when users replaced images within the HTML editor. The fix ensures the system correctly identifies the relevant block when deleting images, preventing errors and improving the overall stability of the HTML editor functionality. This ensures a smoother experience for users editing content.
Original PR description
Steps to Reproduce: - Go to the website - Add an image and set it to center alignment - Copy the image - Paste it into a To-Do note - Replace the image - Click the Delete button Description of the issue: - A traceback error occurs when deleting the image after replacement. Cause: - When an image has display: block, the closestBlock function returns the image element itself as the closest block. However, this causes an issue, After the image is deleted, fillEmpty is called on this closestBlock, which refers to an image that has already been removed from the dom resulting in a traceback. Solution: - Instead of finding the image's closestBlock directly, find the closestBlock of its parent element. - This ensures the correct block is found even when the image has display:block. task-6171827 Forward-Port-Of: odoo/odoo#262217
This update resolves an issue where the AI systray button in the Odoo interface had excessive padding. The change removed unnecessary styling classes, streamlining the button's appearance and improving the user experience. This ensures a cleaner and more consistent look for the application.
Original PR description
Remove the `btn` class because it adds additional padding, and eliminate the other unnecessary classes since the rules have already been applied in the `navbar.scss` file. task-5079952 Forward-Port-Of: odoo/enterprise#116423
This update resolves a few minor issues related to appointment scheduling within the Odoo Enterprise system. Specifically, it ensures resources are correctly filtered based on appointment types, addresses a warning in the search filter component, and corrects a problem where the wrong customer form was used when booking appointments from the Gantt view. These changes enhance the user experience and data accuracy.
Original PR description
1. Filter resources based on the appointment type When adding a closing day from the Gantt view, every resource could be selected, even those not related to the current appointment type. Now, if a default appointment type is set in the context, resources are filtered to only show those related to that appointment type. 2. Warning with PosAppointmentSearchFilter A console warning was logged because the empty props of the PosAppointmentSearchFilter component were not explicitly declared. 3. Change partner form view when booking from the Gantt view When creating or editing a booking from the Gantt view, we could select a customer, but the default partner form was used instead of the one already created for the PartnerList component. --- Task: https://www.odoo.com/odoo/project/1737/tasks/6147711
This update resolves a technical glitch where a tour triggered incorrectly in the VoIP settings. The fix narrows the trigger to only activate when using the keypad tab, ensuring a smoother user experience. This prevents the tour from appearing unexpectedly.
Original PR description
Similar as [1], trigger `.o-voip-Softphone .o-voip-countryFlag` can be found on both recent and keypad tab. It's possible to find it before dom actually change to keypad tab. In this commit, we narrow down the trigger so that it can only be found on keypad tab. [1]: d838dd6dccdaeb8e9d6676ef4ccb5bbced4441a9
This update corrects a visual issue in the maintenance request form where the 'Block Workcenter' field was incorrectly positioned. The change ensures the field appears in the correct location after recent UI updates, improving the user experience. This fix addresses a minor layout discrepancy.
Original PR description
Issue: ---------------------------- In the maintenance request form view, the 'Block Workcenter' field was displayed near the priority field in the top-right corner. Steps to Reproduce:…
Issue: ---------------------------- In the maintenance request form view, the 'Block Workcenter' field was displayed near the priority field in the top-right corner. Steps to Reproduce: ---------------------------- - Install `mrp_maintenance` module. - Open a maintenance request linked to a work center. - Notice that the 'Block Workcenter' field appears beside the priority field in the top-right section. Cause of the issue: ---------------------------- Following the UI changes introduced in [PR](https://github.com/odoo/odoo/pull/251761), the position of the priority field was updated. However, the inherited XPath used for the 'Block Workcenter' field was still targeting the priority field, causing the field to be inserted at an incorrect position. With this commit: ---------------------------- Update the XPath to match the new form view structure, ensuring that the 'Block Workcenter' field is displayed in the correct location and aligned with the updated UI layout.
This update resolves an issue causing instability in the Point of Sale (POS) tour. By making the tour predictable and ensuring it correctly identifies the order, the problem is fixed. A minor typo in a test was also corrected to improve reliability.
Original PR description
Remove the `undeterministicTour_doNotCopy` key from `OrderFlowTour` and make the tour deterministic by properly selecting the order. Also, fix a typo in the assertion in `test_01_order_flow`. Task-6065459 Forward-Port-Of: odoo/enterprise#111915
This update fixes a minor calculation error in the Swiss payroll module (l10n_ch_hr_payroll) related to the reversal of source tax. The change ensures accurate tax reporting for Swiss businesses, aligning with local regulations. This improves the reliability of payroll reporting.
Original PR description
opw 6133391 Fix for the source tax correction following PR #114463 Forward-Port-Of: odoo/enterprise#115585
16 changes
Resolved issues and error corrections
This update resolves an issue where the Mod 349 report in Spain's tax reporting system incorrectly excluded vendor bills with amounts less than 1 Euro. The fix adjusts a technical setting to ensure these small amounts are properly displayed, improving the accuracy of tax reporting. This ensures compliance and accurate financial data.
Original PR description
Steps to reproduce: - Install l10n_es_reports. - Create a company from France. - Create and post a vendor bill for that company with an amount of 0.12 EUR. - Open the Tax Return report and switch to the Mod 349 report for the current year. - Click the 0.12 EUR amount line. Observed: - The journal items view opens with no records. Cause: - `_get_modelo349_audit_aml_domain()` calls `_custom_modelo349_common()`, which filters lines using: `float_compare(result_dict['value'], 0, precision_rounding=2)` - Using `precision_rounding=2` treats values below 1 as equal to 0, so those lines are excluded from the audit domain. Fix: - Replace `precision_rounding` with `precision_digits=2` so values are only treated as zero when they are effectively below 0.01. opw-6134339 Forward-Port-Of: odoo/enterprise#116102 Forward-Port-Of: odoo/enterprise#114776
This update resolves a bug where the color picker would unexpectedly close when users tried to change the color of icons within the HTML editor. The fix ensures that styling elements like 'font' are properly handled, preventing the toolbar from closing prematurely and allowing users to consistently apply colors to icons.
Original PR description
Problem: Trying to change the color of an icon causes the color picker to close when hovering over colors. Cause: When the icon (`span`) is wrapped inside a `font` element, the `toolbar_namespace_providers` for the icon return `false` because the `font` wrapper was not handled. As a result, the `namespace` becomes `undefined`, which causes the toolbar to close during selection changes. Solution: Handle cases where an icon is wrapped by styling elements (such as `font`) so the correct toolbar namespace is preserved. Steps to reproduce: - Insert a Font Awesome icon using `/media`. - Click on the icon to open the toolbar. - Try to apply a color or background color. - Notice the color picker closes instantly when hovering over colors. task-6109153 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#258729
This change corrects a visual issue in the online store where a border appeared around the quantity field for a product offering free shipping. This was caused by a default border style in the Bootstrap framework. The fix removes this border, ensuring a cleaner and more professional shopping experience for customers.
Original PR description
Steps to produce: --- - Install `website_sale` module. - Enable `Discounts, Loyalty & Gift Cards` from settings. - Go to `Website > eCommerce > Loyalty > Discount & Loyalty`. - Create a new program…
Steps to produce: --- - Install `website_sale` module. - Enable `Discounts, Loyalty & Gift Cards` from settings. - Go to `Website > eCommerce > Loyalty > Discount & Loyalty`. - Create a new program and edit the reward to set the reward type to `Free Shipping`. - Create a new product, set its price to 1000, and publish it. - Open the product on the website and add it to the cart > open the cart. Issue: --- - The quantity field for the unsellable product (Free Shipping reward) displays a border in the cart. Root cause: --- - The form-control class is applied to the quantity field at [1]. - This class includes a default border style defined in Bootstrap at [2]. Solution: --- - Apply the Bootstrap utility class `border-0` to remove the border from the quantity field for unsellable products. [1]https://github.com/odoo/odoo/blob/8638dbc21a7a3ebb3c9cc195d2249b4eb5c264ab/addons/website_sale/views/templates.xml#L2901 [2]https://github.com/odoo/odoo/blob/8638dbc21a7a3ebb3c9cc195d2249b4eb5c264ab/addons/web/static/lib/bootstrap/scss/forms/_form-control.scss#L5-L31 Before: --- <img width="822" height="135" alt="image" src="https://github.com/user-attachments/assets/d66c0445-5fd4-45c5-ae81-b4270cab6378" /> After: --- <img width="827" height="132" alt="image" src="https://github.com/user-attachments/assets/9cc2bd65-c542-4d1f-89de-2212fa968c8e" /> opw-6153161 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#262883 Forward-Port-Of: odoo/odoo#261275
This update resolves an error that occurred when calculating benefit costs with property fields in employee contracts. Previously, the system couldn't properly handle these fields, leading to a calculation failure. This fix prevents the system from attempting to sum property fields as cost values, ensuring accurate benefit calculations.
Original PR description
**Steps to Reproduce:** 1. Install `hr_contract_salary_payroll` with demo data. 2. Open Employee (e.g; Abigail Peterson) > Payroll tab > Gear Icon > Edit Properties. 3. Add a new property for Payroll…
**Steps to Reproduce:** 1. Install `hr_contract_salary_payroll` with demo data. 2. Open Employee (e.g; Abigail Peterson) > Payroll tab > Gear Icon > Edit Properties. 3. Add a new property for Payroll and fill in the value also. 4. Go to Payroll > Configuration > Benefits. 5. Create a new benefit with: Salary Structure Type: Worker Cost Field: Payroll Properties (Employee Contract) 6. Save the record. Video: https://drive.google.com/file/d/1gHRkDW5G0bURlo9_IRgCnvqpE-8Fk1xa/view?usp=drive_link **Error:** `TypeError - unsupported operand type(s) for +: 'int' and 'Property'` **Cause:** The method `_get_benefits_costs()` directly sums values using: ``` self[benefit.cost_field] ``` When the selected cost field is a property field, it returns a **fields_properties.Property** object instead of a numeric value, and this object is not directly compatible with the arithmetic sum operation. Before 19.0, property fields were not allowed to be selected as a cost field - [1]. **Fix:** This commit prevents selecting property fields as cost fields from the list of supported field types. [1] : https://github.com/odoo/enterprise/blob/04224abcc7eec1c81df7ad57a9213fd091774888/hr_contract_salary/models/hr_version.py#L183 sentry-7388663038 Forward-Port-Of: odoo/enterprise#113238
This update corrects a problem with the Intrastat CSV export report in the Netherlands. The fix addresses an incorrect data format for 'Commodity flow' and ensures the database is up-to-date before generating the report, preventing inaccurate export data.
Original PR description
Since the technical refactoring of intrastat in 18.0, the csv export in `l10n_nl_intrastat` seems broken. Here is the fixes done in this commit: 1. `Commodity flow` is supposed to be a single diggit (6 or 7) but an empty blank space was hidden. 2. Switching the condition on `country_origin_code` as it was the opposite 3. Add a `flush_all` before calling the report during the export, to be sure the database is up to date. opw-5799126 Forward-Port-Of: odoo/enterprise#116230 Forward-Port-Of: odoo/enterprise#115791
This update resolves an issue where the AI systray button in the Odoo interface had excessive padding. The code was simplified to remove unnecessary styling rules already defined elsewhere, improving the button's visual appearance and overall user experience. This change ensures a cleaner and more consistent look for users.
Original PR description
Remove the `btn` class because it adds additional padding, and eliminate the other unnecessary classes since the rules have already been applied in the `navbar.scss` file. task-5079952 Forward-Port-Of: odoo/enterprise#116423
This update corrects a build error within the Odoo AE (l10n_ae_faf) module related to a dependency issue. By adjusting the view's location, the update eliminates the need for a problematic, automatically installed module, ensuring smoother operation.
Original PR description
the inherited tax view form was raising an error since ubl_cii_tax_category_code is in the view under the module account_edi_ubl_cii and this module is not in the resolved dependencies of l10n_ae_faf but is usually autoinstalled. to fix this we are changing the xpath to be something that doesn't need the dependency of the account_edi_ubl_cii but only account. runbot-239123 Forward-Port-Of: odoo/enterprise#116163
This update fixes an issue where the undo function in the HTML editor would sometimes restore the selection to the wrong position. By staging the selection before deletion, the undo operation now correctly restores the user's previous editing state, ensuring a smoother and more reliable editing experience. This improves overall usability and reduces frustration for users.
Original PR description
Problem: In some cases, undo restores the selection to an incorrect position. Cause: The selection state was not staged before the deletion started, leading to an inconsistent selection being restored during undo. Solution: Stage the selection before performing the deletion to ensure it can be restored to the correct position. Steps to reproduce: - Go to To-Do → Create New. - Type something on the first line and press Enter. - Type something on the second line and apply styling to it. - Use the Up arrow key to move to the first line. - Remove a character. - Press Undo (Ctrl + Z). - Observe that the selection and toolbar appear on the second line. task-6142055 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#262896 Forward-Port-Of: odoo/odoo#260630
This update resolves an issue where the power button test in the HTML editor was unreliable due to timing inconsistencies. The fix ensures the test consistently triggers, preventing potential delays or failures in the runbot process. This improves the stability and reliability of the HTML editor's testing.
Original PR description
The previous fix [1] removed one animation frame too many because the first one after arow down is needed in order to trigger the hiding of the power buttons in the first place, otherwise the timer can have elapsed without an animation frame when the runbot is slow. Then, for the other ones, the animation frame must not be awaited, otherwise we risk having an animation frame when the runbot waited more than the debouce delay, as explained in [1]. runbot-242466 [1]: https://github.com/odoo/odoo/pull/259654 Forward-Port-Of: odoo/odoo#262929 Forward-Port-Of: odoo/odoo#262679
This update fixes an issue where long translated labels in product category forms (like 'Reserve Packagings') would overlap other fields on narrow screens. The fix allows radio labels to wrap correctly, improving the overall usability and visual appearance of configuration forms, particularly for users with translated data.
Original PR description
Steps to reproduce: - Go to Accounting > Configuration > Product Categories - Open the "Goods" category in a narrow enough form layout - Check the "Reserve Packagings" radio field in Ukrainian #### Issue: In configuration forms, `.o_form_label` is forced to `white-space: nowrap`. Since radio option labels also use `.o_form_label`, long translated labels cannot wrap and can overlap the neighboring valuation field area. #### Fix: Exclude `.form-check-label` from that rule so radio labels can wrap without changing the behavior of regular form labels. opw-6086700 <img width="1872" height="966" alt="image" src="https://github.com/user-attachments/assets/db5e5803-b5e7-4904-a036-8bdfbb5504fc" /> --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#261284
A recent issue causing errors when deleting images within the HTML editor has been fixed. This update ensures the editor functions reliably, preventing disruptions to users' ability to format and manage content. The fix corrects a logic error related to image element identification during deletion.
Original PR description
Steps to Reproduce: - Go to the website - Add an image and set it to center alignment - Copy the image - Paste it into a To-Do note - Replace the image - Click the Delete button Description of the issue: - A traceback error occurs when deleting the image after replacement. Cause: - When an image has display: block, the closestBlock function returns the image element itself as the closest block. However, this causes an issue, After the image is deleted, fillEmpty is called on this closestBlock, which refers to an image that has already been removed from the dom resulting in a traceback. Solution: - Instead of finding the image's closestBlock directly, find the closestBlock of its parent element. - This ensures the correct block is found even when the image has display:block. task-6171827 Forward-Port-Of: odoo/odoo#262217
This update corrects a setting for Thai (l10n_th) taxes. By default, WHT taxes no longer create closing entries, aligning with how these taxes are handled through separate payable accounts. This ensures accurate accounting for WHT transactions.
Original PR description
Set tax closing entry to False by default for WHT taxes, as WHT uses separate payable accounts and does not require closing entries. task-6146195 Forward-Port-Of: odoo/odoo#262469 Forward-Port-Of: odoo/odoo#262464
This update fixes a visual issue in the Timesheets section of the project shared form. Previously, the Time Remaining value wasn't highlighted in red when the amount was negative. This change ensures that negative time remaining values are clearly indicated, improving clarity and accuracy for users.
Original PR description
**Steps to reproduce:** - Open project shared form view. - Go to the Timesheets tab. - Observe the Time Remaining value. **Issue:** - The Time Remaining label is red properly but its value does not becomes red even when the value is negative. **Fix:** - Adjusted the logic to ensure the Time Remaining value is highlighted in red when value is negative **Task-id: 5404009** Forward-Port-Of: odoo/odoo#260996 Forward-Port-Of: odoo/odoo#240489
This update corrects a visual inconsistency in the project timesheet interface. Previously, the 'Time Remaining' value wasn't highlighted in red when the time was negative, leading to a confusing display. The fix ensures that negative time values are correctly indicated with a red color, improving clarity and usability.
Original PR description
**Steps to reproduce:** - Open project shared form view. - Go to the Timesheets tab. - Observe the Time Remaining value. **Issue:** - The Time Remaining label is red properly but its value does not becomes red even when the value is negative. **Fix:** In hr_timesheet, the remaining_hours field has a decoration-danger applied In sale_timesheet_enterprise, this field is overridden as portal_remaining_hours So, Added the corresponding decoration-danger on portal_remaining_hours. task-5404009 Forward-Port-Of: odoo/enterprise#114836 Forward-Port-Of: odoo/enterprise#113632
This update fixes a minor calculation error related to the reversal of Quebec Sales Tax (QST) in the Swiss payroll module. The change ensures accurate tax reporting, aligning with Swiss tax regulations and improving the reliability of payroll data. This update was implemented as a correction following a previous enhancement.
Original PR description
opw 6133391 Fix for the source tax correction following PR #114463 Forward-Port-Of: odoo/enterprise#115585
This update fixes an issue preventing non-HR users from modifying their work location within the calendar settings. The change restores the ability for employees to update this information, resolving a previous restriction caused by a code update. This ensures employees can accurately reflect their work locations within the system.
Original PR description
**Steps to reproduce** - Have a user without HR rights and linked to an employee - With this user, open Preferences and in the calendar tab and try to change the work location for one of the days - Error: You do not have enough rights to access the field "version_id" on Employee (hr.employee). **Cause** Issue after 72ac4b03657d617644ae75f2957aaec7acf6c1a8 which removed SELF_READABLE_FIELDS and SELF_WRITEABLE_FIELDS. **Change** Use the `field_employee` function introduced in 9605045313953b4c8c734c0d52e8032e3c36bf3a (commit message contains the explanation as to why it is necessary for fields coming from the employee model). opw-6127522 Forward-Port-Of: odoo/odoo#260394
16 changes
Resolved issues and error corrections
This update resolves an issue where the website publish toggle on job positions initially displayed incorrect status. The change ensures the form autosave accurately reflects the published state immediately after the toggle is clicked, improving the user experience.
Original PR description
Steps to reproduce: 1. Install `website_hr_recruitment` 2. Create a job position from form view 3. Click on Published toggle button Issue: - Publishing a job position from the `hr.job` form is…
Steps to reproduce: 1. Install `website_hr_recruitment` 2. Create a job position from form view 3. Click on Published toggle button Issue: - Publishing a job position from the `hr.job` form is showing an incorrect first-click result: the website page is actually published, but the form autosave response still return `website_published = false`, so the toggle flips back to unpublished until the next refresh. Cause: - In v19.0, `website.published.mixin.write()` was effectively a thin wrapper around `super().write()`. The backend autosave path used by boolean toggles (`web_save`) performs a `write()` and then an immediate `web_read()` in the same request, and that simple flow returned the fresh publish state. - In saas-19.1, the publish flow became more complex: - `website.published.mixin.write()` now triggers `_finalize_publication()` - `_finalize_publication()` performs an additional internal `write()` - The record is published correctly, but the immediate `web_save()` readback can still use cached values for `website_published` from the same ORM environment. This makes the first form response inconsistent with the actual state. Solution: - Invalidating `website_published` field after the`write()` in `_finalize_publication()` so the immediate `web_read()` performed by `web_save()` returns the real post-write state on the first click. opw-6012359
This update resolves an issue where the table number on the kitchen display was being cut off when the order title exceeded a certain length. This prevented kitchen staff from quickly identifying the correct table for an order, leading to potential delays. The fix ensures the table number is always visible, improving kitchen efficiency.
Original PR description
**Steps to reproduce:** - Download the German language - Set the restaurant to QR + Ordering - Set the Service at Table, pay after each order - Set the language to German - Go to the Self and order…
**Steps to reproduce:** - Download the German language - Set the restaurant to QR + Ordering - Set the Service at Table, pay after each order - Set the language to German - Go to the Self and order something while the language is German - Chose table 12 - Go to the kitchen display - The title is truncated, meaning we can't see the table number **Why the fix:** If the title is more than 150px it will be truncated and "..." will replace the table number. This has been introduced in ed5b010dc7b5c11bbbc8513c1edb0ec4f58778c1 but not being able to see the table number might be bad as some people would need to spend time trying to figure out which table the order is for, instead of just having to look at the kitchen display. We now revert this change to break to a new line in the case where the card title is too long, so we can always see the table number. Before: <img width="317" height="156" alt="image" src="https://github.com/user-attachments/assets/25e76026-bdad-4639-9dfc-0d75ffa8d8c8" /> Afer: <img width="329" height="174" alt="image" src="https://github.com/user-attachments/assets/f387dd5f-96d3-4148-bc76-215393c76e67" /> opw-6096111
This update corrects a bug in how HR version searches were performed. Previously, searches were incorrectly relying on contract dates instead of the actual start and end dates, leading to inaccurate results. This fix ensures searches for HR versions using date ranges now work correctly, providing more reliable version selection.
Original PR description
Previously, the searches defaulted to delegating the search to the contract_date_start/end fields instead of mapping to the actual computes of date_start and date_end, which caused incorrect results when searching for versions with a specified date_start or date_end. This PR fixes this by implementing the search method on date_start and date_end to correctly map the search to the expected values for date_start and date_end. Task-6067139 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#256581
This update corrects an issue where payslips were displaying outdated contract information. The fix ensures payslips now correctly reflect the version of the contract they are based on, resolving potential discrepancies in payroll reporting. This improvement is a result of addressing a related search issue within the Odoo system.
Original PR description
Prior to this commit, the version domain on payslips only looked at the contract dates rather than the version's dates. The domain was fixed in this commit to limit the domain based on the version's dates instead, and this was allowed after the searches on the version date_start and date_end fields were fixed in the odoo/odoo#256581. task-6067139 Forward-Port-Of: odoo/enterprise#113818
This update fixes a bug where users could accidentally add text inside image-only gallery items (like banners and image walls). The change prevents users from directly editing the content within these galleries, ensuring they display only images as intended. This improves the visual consistency and stability of website designs.
Original PR description
Some image items are supposed to not contain any extra content. Grid image items and `s_image_gallery`'s images are such images. Grid image-only items are actually `contenteditable`. This makes it possible to replace the image with text. A similar issue exists for images inside `s_image_gallery` blocks. This commit makes such items non-editable, while keeping the media inside it replaceable. Steps to reproduce: - Drop a Banner block - Select an image - Type something => Image was replaced with text - Drop an Image Wall - Select an Image - Type something => Image was replaced with text task-5436148 Forward-Port-Of: odoo/odoo#258018
This update fixes a minor usability issue in the Helpdesk module. Previously, users attempting to delete a stage in a ticket kanban view were prompted with a warning and lacked keyboard shortcuts for key actions. This change ensures keyboard shortcuts are now available, streamlining the stage deletion process and improving user efficiency.
Original PR description
Before this commit, when the user tries to delete a kanban column in ticket kanban view when the group by is stage_id. A pop-up appears when there is at least one ticket in that stage to notify the user it would be better to archive the stage or remove all tickets from that stage before deleting it. The Confirm and Discard buttons of that wizard does not have keyboard shortcut as the other discard button in the other views/wizards. This commit makes sure the keyboard shortcut is correctly assigned to those buttons. task-4885677 Forward-Port-Of: odoo/enterprise#89141
This update resolves an issue where a key in the purchase order suggestion process was incorrectly formatted. The fix ensures the correct key (`section_id`) is used, preventing potential errors and improving the reliability of purchase order suggestions. This ensures the purchase order suggestion functionality operates as intended.
Original PR description
Issue: - `_editSuggestContext` sends `sectionId` in the context, but `action_purchase_order_suggest` expects the key to be `section_id`. Fix: - Update the `_editSuggestContext` to send the correct context key, `section_id`. Forward-Port-Of: odoo/odoo#261930
This update fixes an issue where interactive tours were incorrectly triggered when the POS was loaded, causing errors. We've added a 'hold' flag to the tour to ensure steps are only loaded when needed, improving the POS experience and preventing technical problems.
Original PR description
When loading the POS, interactive tours were triggered but their steps were not included in the POS bundle. This caused a traceback each time the POS was opened or refreshed. To prevent this, we added a flag `onHold` onto the tour if no steps were found from the database and the registry wasn't loaded. --- Task: https://www.odoo.com/odoo/project/1737/tasks/605029 Forward-Port-Of: odoo/odoo#255094
This update removes a misleading warning in the Odoo system that appeared when sequences didn't begin with the number 1. Starting sequences at 1 is a standard and accepted practice, and this change ensures users aren't unnecessarily alerted to a valid configuration. This improves the user experience and simplifies sequence setup.
Original PR description
We don't want to warn users about their sequence not starting at 1 as it is a perfectly valid case. This removes the warning both in the list view and in the dashboard. task-5253768 Forward-Port-Of: odoo/odoo#235117
This update corrects a problem with the Intrastat CSV export functionality, which was broken following a technical update in 18.0. The fix ensures accurate data is exported by addressing formatting errors and database synchronization, preventing potential reporting discrepancies.
Original PR description
Since the technical refactoring of intrastat in 18.0, the csv export in `l10n_nl_intrastat` seems broken. Here is the fixes done in this commit: 1. `Commodity flow` is supposed to be a single diggit (6 or 7) but an empty blank space was hidden. 2. Switching the condition on `country_origin_code` as it was the opposite 3. Add a `flush_all` before calling the report during the export, to be sure the database is up to date. opw-5799126 Forward-Port-Of: odoo/enterprise#116230 Forward-Port-Of: odoo/enterprise#115791
This update resolves an issue where the AI systray button in the Odoo interface had excessive padding. The change removed unnecessary styling classes, streamlining the button's appearance and improving the user experience. This was a minor visual adjustment.
Original PR description
Remove the `btn` class because it adds additional padding, and eliminate the other unnecessary classes since the rules have already been applied in the `navbar.scss` file. task-5079952 Forward-Port-Of: odoo/enterprise#116423
A technical issue preventing the build of the l10n_ae_faf module in Odoo Enterprise has been resolved. The fix adjusts a reference within the tax view to avoid a dependency on a related module, ensuring smoother operation for UAE accounting features.
Original PR description
the inherited tax view form was raising an error since ubl_cii_tax_category_code is in the view under the module account_edi_ubl_cii and this module is not in the resolved dependencies of l10n_ae_faf but is usually autoinstalled. to fix this we are changing the xpath to be something that doesn't need the dependency of the account_edi_ubl_cii but only account. runbot-239123 Forward-Port-Of: odoo/enterprise#116163
This update resolves a bug where the color picker would unexpectedly close when users tried to change the color of icons within the HTML editor. The fix ensures that icons wrapped in styling elements are correctly handled, preventing the toolbar from closing prematurely and improving the user experience.
Original PR description
Problem: Trying to change the color of an icon causes the color picker to close when hovering over colors. Cause: When the icon (`span`) is wrapped inside a `font` element, the `toolbar_namespace_providers` for the icon return `false` because the `font` wrapper was not handled. As a result, the `namespace` becomes `undefined`, which causes the toolbar to close during selection changes. Solution: Handle cases where an icon is wrapped by styling elements (such as `font`) so the correct toolbar namespace is preserved. Steps to reproduce: - Insert a Font Awesome icon using `/media`. - Click on the icon to open the toolbar. - Try to apply a color or background color. - Notice the color picker closes instantly when hovering over colors. task-6109153 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#258729
This update fixes an issue where the HTML editor's undo function sometimes restored the selection to the wrong position. The fix ensures the selection is 'staged' before deletion, allowing for accurate restoration during undo operations. This improves the user experience and prevents data inconsistencies.
Original PR description
Problem: In some cases, undo restores the selection to an incorrect position. Cause: The selection state was not staged before the deletion started, leading to an inconsistent selection being restored during undo. Solution: Stage the selection before performing the deletion to ensure it can be restored to the correct position. Steps to reproduce: - Go to To-Do → Create New. - Type something on the first line and press Enter. - Type something on the second line and apply styling to it. - Use the Up arrow key to move to the first line. - Remove a character. - Press Undo (Ctrl + Z). - Observe that the selection and toolbar appear on the second line. task-6142055 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#262896 Forward-Port-Of: odoo/odoo#260630
This update resolves an issue where the power button test in the HTML editor was unreliable due to timing differences. The fix ensures the test consistently triggers, preventing potential delays and ensuring proper functionality. This improves the stability of the HTML editor feature.
Original PR description
The previous fix [1] removed one animation frame too many because the first one after arow down is needed in order to trigger the hiding of the power buttons in the first place, otherwise the timer can have elapsed without an animation frame when the runbot is slow. Then, for the other ones, the animation frame must not be awaited, otherwise we risk having an animation frame when the runbot waited more than the debouce delay, as explained in [1]. runbot-242466 [1]: https://github.com/odoo/odoo/pull/259654 Forward-Port-Of: odoo/odoo#262929 Forward-Port-Of: odoo/odoo#262679
This update fixes an issue where long translated labels in product category configuration forms (like 'Reserve Packagings') would overlap with other fields, creating a cluttered and difficult-to-use layout. The fix allows radio labels to wrap correctly, ensuring a cleaner and more organized user experience, especially on smaller screens.
Original PR description
Steps to reproduce: - Go to Accounting > Configuration > Product Categories - Open the "Goods" category in a narrow enough form layout - Check the "Reserve Packagings" radio field in Ukrainian #### Issue: In configuration forms, `.o_form_label` is forced to `white-space: nowrap`. Since radio option labels also use `.o_form_label`, long translated labels cannot wrap and can overlap the neighboring valuation field area. #### Fix: Exclude `.form-check-label` from that rule so radio labels can wrap without changing the behavior of regular form labels. opw-6086700 <img width="1872" height="966" alt="image" src="https://github.com/user-attachments/assets/db5e5803-b5e7-4904-a036-8bdfbb5504fc" /> --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#261284
3 changes
Resolved issues and error corrections
This update resolves an issue where commission plans with negative target values caused a system error. The fix ensures the commission plan generation process can handle negative targets correctly, preventing errors and improving the flexibility of commission plan configuration. This change enhances the reliability of sales commission calculations.
Original PR description
Steps to reproduce: ------------------- 1. Install sale_commission 2. Create a commission plan based on targets 3. Try to add a new commission level with negative targets Issue: ------ Adding a commission level with a negative target results in a ```python RangeError: Maximum call stack size exceeded. ``` Cause: ------ https://github.com/odoo/enterprise/blob/2bfe0f32c0cec426fc7345ef716395146cc569ca/sale_commission/static/src/js/commission_plan_graph/commission_plan_graph.js#L50-L56 Negative target values caused infinite recursion in the GCD function, leading to this `RangeError`. Solution: ----------- Since the Euclidean algorithm only works correctly with non-negative integers, apply Math.abs() on both inputs before the recursion starts. This ensures negative targets are handled gracefully without causing infinite recursion. **NOTE:** Backport: c0d748f opw-6182644 Forward-Port-Of: odoo/enterprise#116050
This update resolves an issue where the Mod 349 tax report incorrectly excluded vendor bills with amounts less than 1 Euro. The fix adjusts a calculation to ensure these small amounts are properly displayed, improving the accuracy of tax reporting for Spanish businesses. This ensures compliance and accurate financial data.
Original PR description
Steps to reproduce: - Install l10n_es_reports. - Create a company from France. - Create and post a vendor bill for that company with an amount of 0.12 EUR. - Open the Tax Return report and switch to the Mod 349 report for the current year. - Click the 0.12 EUR amount line. Observed: - The journal items view opens with no records. Cause: - `_get_modelo349_audit_aml_domain()` calls `_custom_modelo349_common()`, which filters lines using: `float_compare(result_dict['value'], 0, precision_rounding=2)` - Using `precision_rounding=2` treats values below 1 as equal to 0, so those lines are excluded from the audit domain. Fix: - Replace `precision_rounding` with `precision_digits=2` so values are only treated as zero when they are effectively below 0.01. opw-6134339 Forward-Port-Of: odoo/enterprise#116102 Forward-Port-Of: odoo/enterprise#114776
This update resolves an issue preventing users from modifying warehouse routes in the Romanian (RO) version of Odoo. The fix addresses a bug where an error occurred when changing routes, blocking modifications. This ensures multi-step routes can be updated without disruption.
Original PR description
### Issue: When changing the routes of a Romanian warehouse, an error is raised, blocking any modification of multi-step routes ### Cause: The code attempts to access `in_type_id` from `warehouse_data` However, when updating routes, `warehouse_data` is empty in the method `_create_or_update_sequences_and_picking_types` This leads to a crash because the code assumes that `warehouse_data` always contains `in_type_id` and `out_type_id` Additionally, even if the data were present, it would result in creating duplicate `stock.picking.type` records ### Steps to reproduce: - Install `l10n_ro_saft_stock` with demo data and switch to `RO Company` - Enable `Multi-steps Routes` in Settings - Try to modify Incoming or Outgoing Shipments on a warehouse - When saving, the following error is raised: "Oh snap! in_type_id" odoo-pr: https://github.com/odoo/odoo/pull/257293 opw-5925087 Forward-Port-Of: odoo/enterprise#114166
8 changes
Resolved issues and error corrections
This update fixes a limitation in how Odoo Enterprise updates its UNSPSC product codes. Previously, new codes could only be added during initial installation, not subsequent updates. Now, an automated upgrade script runs on module updates, ensuring the database always reflects the latest UNSPSC codes. Existing product codes remain unchanged.
Original PR description
**Problem:** Periodically, the UNSPSC codes may be updated and they must be added to existing databases. Normally this is done by module update, however, since there are thousands of UNSPSC codes, a CSV imported via SQL is used instead of XML files. This import is only implemented on module install and not module update, so there is no way to update the UNSPSC codes in existing databases. **Solution:** An upgrade script based on the post-init hook has been added, which will add the new codes to the database, if any. Note that: - The version of this upgrade script should be bumped any time the codes list is updated. - Existing records will not be updated opw-5943366 Forward-Port-Of: odoo/enterprise#112652
This update resolves an issue where commission plans with negative target values caused a system error. The fix ensures the commission plan generation process can handle negative targets correctly, preventing errors and allowing for more flexible commission plan configurations. This improves the reliability of sales commission calculations.
Original PR description
Steps to reproduce: ------------------- 1. Install sale_commission 2. Create a commission plan based on targets 3. Try to add a new commission level with negative targets Issue: ------ Adding a commission level with a negative target results in a ```python RangeError: Maximum call stack size exceeded. ``` Cause: ------ https://github.com/odoo/enterprise/blob/2bfe0f32c0cec426fc7345ef716395146cc569ca/sale_commission/static/src/js/commission_plan_graph/commission_plan_graph.js#L50-L56 Negative target values caused infinite recursion in the GCD function, leading to this `RangeError`. Solution: ----------- Since the Euclidean algorithm only works correctly with non-negative integers, apply Math.abs() on both inputs before the recursion starts. This ensures negative targets are handled gracefully without causing infinite recursion. **NOTE:** Backport: c0d748f opw-6182644 Forward-Port-Of: odoo/enterprise#116050
This update corrects a bug in the Mod 349 tax report for Spanish businesses. Previously, amounts under 1 Euro were not displayed correctly. The fix ensures that all financial lines, regardless of their value, are accurately included in the report, improving data accuracy for tax reporting.
Original PR description
Steps to reproduce: - Install l10n_es_reports. - Create a company from France. - Create and post a vendor bill for that company with an amount of 0.12 EUR. - Open the Tax Return report and switch to the Mod 349 report for the current year. - Click the 0.12 EUR amount line. Observed: - The journal items view opens with no records. Cause: - `_get_modelo349_audit_aml_domain()` calls `_custom_modelo349_common()`, which filters lines using: `float_compare(result_dict['value'], 0, precision_rounding=2)` - Using `precision_rounding=2` treats values below 1 as equal to 0, so those lines are excluded from the audit domain. Fix: - Replace `precision_rounding` with `precision_digits=2` so values are only treated as zero when they are effectively below 0.01. opw-6134339 Forward-Port-Of: odoo/enterprise#116102 Forward-Port-Of: odoo/enterprise#114776
This update fixes a minor calculation error related to Quebec Sales Tax (QST) reversal within the Swiss payroll module. The change ensures accurate tax reporting, aligning with Swiss tax regulations and improving the reliability of payroll data. This update was prompted by a previous issue and doesn't impact overall business operations.
Original PR description
opw 6133391 Fix for the source tax correction following PR #114463 Forward-Port-Of: odoo/enterprise#115585
This update corrects a minor typo in the automated tests for our Point of Sale (POS) module. The change ensures that test results are accurate and reliable, preventing potential issues with order processing. This is a routine fix to maintain the stability of the POS system.
Original PR description
Correct a typo in `test_01_order_flow` assertions. `pdis_order1` was reassigned multiple times; the second assertion should use `pdis_order2`. Task-6065459 Forward-Port-Of: odoo/enterprise#111917
A technical glitch in the website's drag-and-drop tour was causing it to fail. This fix ensures the tour functions correctly by waiting for snippets to fully load before proceeding, preventing errors related to unresponsive editors. This improves the user experience for website visitors.
Original PR description
`test_03_snippets_all_drag_and_drop` was consistently failing on runbot. The tour stopped after removing the snippet `s_dynamic_snippet_products` because no drop zones were found for the next…
`test_03_snippets_all_drag_and_drop` was consistently failing on runbot. The tour stopped after removing the snippet `s_dynamic_snippet_products` because no drop zones were found for the next snippet. **Cause** The public widget `DynamicSnippetProducts` performs an RPC call in `willStart` (~1 second), but it is still possible to delete the snippet while the promise is pending. In this case, the editor is unresponsive until the promise resolves. The tour fails because the snippet is removed while the promise is still pending, the editor is not ready to process the click on the next snippet, and no drop zones are generated. **How to reproduce the problem** This is impossible to trigger manually, but consistently happening on runbot. The easiest way to reproduce the problem is to add a delay in `_fetchData()`. **Fix** Wait for the snippet to finish loading before proceeding with the tour, ensuring the editor is responsive when the next steps runs. runbot-226770 Forward-Port-Of: odoo/odoo#262498
This update resolves an issue where paid orders using loyalty cards with archived programs would cause errors when opening the partner list. The fix ensures the system handles these scenarios gracefully, preventing disruptions to the sales process. This improves the reliability of our point-of-sale system.
Original PR description
Backport of https://github.com/odoo/odoo/commit/ffe46084665bb8a64ef9cd9f44b85f7178adf6f7 Before this commit, when loading a paid order with a loyalty card that its program had been archived, an error was raised when opening the partner list due to the missing program. opw-6182368 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#262575
This update fixes a technical issue where a unit test was leaving temporary data in the database. Switching to a simpler `HttpCase` approach resolved this problem and paves the way for adding another test to address a related bug. This ensures the stability and reliability of our LDAP authentication process.
Original PR description
The unit test is tagged `-standard` and `database_breaking` because it was leaving left overs in the database. Using an `HttpCase` over a `BaseCase` solves that issue in addition to make the code way simpler. We want to resurrect this unit test class because we plan to add another unit test in that class for a bug fix. Forward-Port-Of: odoo/odoo#261842 Forward-Port-Of: odoo/odoo#261743
5 changes
Resolved issues and error corrections
This update fixes a limitation in how Odoo Enterprise manages its UNSPSC product codes. Previously, new codes required a full module reinstall. Now, an automated upgrade script triggered during module updates adds missing codes to the database, ensuring the system always reflects the latest industry standards. Existing product codes remain unchanged.
Original PR description
**Problem:** Periodically, the UNSPSC codes may be updated and they must be added to existing databases. Normally this is done by module update, however, since there are thousands of UNSPSC codes, a CSV imported via SQL is used instead of XML files. This import is only implemented on module install and not module update, so there is no way to update the UNSPSC codes in existing databases. **Solution:** An upgrade script based on the post-init hook has been added, which will add the new codes to the database, if any. Note that: - The version of this upgrade script should be bumped any time the codes list is updated. - Existing records will not be updated opw-5943366 Forward-Port-Of: odoo/enterprise#112652
This update resolves an issue where commission plans with negative target values caused errors. The fix ensures the commission calculation logic handles negative targets correctly by applying absolute values within the calculation process. This expands the flexibility of commission plan setup.
Original PR description
Steps to reproduce: ------------------- 1. Install sale_commission 2. Create a commission plan based on targets 3. Try to add a new commission level with negative targets Issue: ------ Adding a commission level with a negative target results in a ```python RangeError: Maximum call stack size exceeded. ``` Cause: ------ https://github.com/odoo/enterprise/blob/2bfe0f32c0cec426fc7345ef716395146cc569ca/sale_commission/static/src/js/commission_plan_graph/commission_plan_graph.js#L50-L56 Negative target values caused infinite recursion in the GCD function, leading to this `RangeError`. Solution: ----------- Since the Euclidean algorithm only works correctly with non-negative integers, apply Math.abs() on both inputs before the recursion starts. This ensures negative targets are handled gracefully without causing infinite recursion. **NOTE:** Backport: c0d748f opw-6182644 Forward-Port-Of: odoo/enterprise#116050
This update fixes an issue where Colorado state income tax calculations resulted in a positive value on payslips, which is incorrect. The fix aligns with established payroll tax principles, ensuring that taxes are always withheld from employee paychecks, not returned as refunds. This ensures accurate payroll reporting and compliance.
Original PR description
## Issue When generating a payslip for an employee of a company located in Colorado, the *CO State Income Tax* could end up positive. ## Steps to reproduce 1. Install *United States - Payroll*…
## Issue
When generating a payslip for an employee of a company located in Colorado, the *CO State Income Tax* could end up positive.
## Steps to reproduce
1. Install *United States - Payroll* (`l10n_us_hr_payroll`)
2. Set the current company's State to Colorado
3. Create an employee and a contract
- Wage: $0
- (Set the contract's status to *Running*)
- (In the payroll tab) State Withholding Allowance: $1000
4. Create a Payslip for the employee
- Structure: *"United States: Regular Pay"*
5. Compute Sheet
6. **In the _Salary Computation_ tab, the _CO State Income Tax_ line has a positive value**
## Justification
This fix is similar to the one applied for the AL(abama) state income tax by https://github.com/odoo/enterprise/commit/f0eeb55f1e3cf965c6a409675813d4a699e5fca6. That modification was justified by CAS (PO of US localizations for Payroll) in opw-5137280:
> *"Payroll taxes are always funds withheld from employee's paychecks, if there is a positive value it means the tax is a refund, not a withholding. Refunds happen when individuals file their income."*
## Note to reviewer
The test [`test_069_al_state_tax_0_income`](https://github.com/odoo/enterprise/blob/219d2a797ee2099c9d77c2defc9c9c5e1d504ffe/test_l10n_us_hr_payroll_account/tests/test_salary_rules.py#L957-L989) (added by the aforementioned commit https://github.com/odoo/enterprise/commit/f0eeb55f1e3cf965c6a409675813d4a699e5fca6) is wrongly indented and thus never executed. The test passes with the dedicated fix, and fails without it, as expected. Let me know if you want me to indent it correctly (in this commit or in an additional one).
opw-5999856
Forward-Port-Of: odoo/enterprise#112724This update fixes a minor error in the calculation of Swiss source tax (QST) reversals within the payroll system. Specifically, it corrects a miscalculation of the minimum IS (Insolvenzsumme) during the reversal process. This ensures accurate tax reporting for Swiss businesses using the Enterprise edition of Odoo.
Original PR description
opw 6133391 Fix for the source tax correction following PR #114463 Forward-Port-Of: odoo/enterprise#115585
This update corrects a technical issue within the Odoo Enterprise's Kenyan payroll module (l10n_ke_he_payroll) that caused duplicate XML IDs for a key configuration setting. This duplication was identified and resolved to ensure accurate payroll calculations and prevent potential errors. The fix improves the stability and reliability of the module.
Original PR description
This commit avoids duplicated xml_id for `hr.salary.rule` model. In commit https://github.com/odoo/enterprise/commit/a7d51fa2ee8b1af0e807b3e9cb6e313d8885ff67, key `l10n_ke_employees_salary_pension_contribution` (sequence 72) was deleted and added key `l10n_ke_employees_salary_pension_contribution` (sequence 35). In commit https://github.com/odoo/enterprise/commit/c23243be9ca833acea7089defadbe0eaf869051d, key `l10n_ke_employees_salary_pension_contribution` (sequence 72) was added again. Forward-Port-Of: odoo/enterprise#115696 Forward-Port-Of: odoo/enterprise#85723
20 changes
Resolved issues and error corrections
This update addresses a change in Sendcloud's API, ensuring our system continues to reliably process deliveries. By adding a specific API key, we maintain compatibility with Sendcloud's older version, guaranteeing a seamless transition for our users and accurate delivery tracking. Future work will focus on upgrading to the latest Sendcloud API.
Original PR description
Sendcloud pass their api v2 to maintenance and only provide new api V3 key to the new customers. In order to make a smooth transition for the user we add the partner key, so they know that the customer are coming from odoo and they use the v2 api. Future work will be done to upgrade our module and support the v3. API key. Forward-Port-Of: odoo/enterprise#115999 Forward-Port-Of: odoo/enterprise#114441
This update fixes an issue where users could select customers from different companies within the Helpdesk system. The fix involved adding a restriction to the customer selection process, ensuring users only see customers within their assigned company. This improves data accuracy and prevents errors in ticket management.
Original PR description
Steps to reproduce: - - Create two companies (Company A and Company B) - Create one partner in each company - Enable both companies for the user - Open Helpdesk and go to the tickets Kanban view for a Company A team. - In the quick create form, the customer dropdown shows customers from Company B Issue: - - Customers from other companies are visible in the customer field, Cause: - - The partner_id field in the quick create view had no domain, so it displayed partners from all allowed companies. Solution: - - Added a domain on partner_id in the Python field. task-4971466 Forward-Port-Of: odoo/enterprise#116157 Forward-Port-Of: odoo/enterprise#111909
This update resolves a bug that caused bank reconciliation balances to reset to zero after editing a bank move line when using multiple currencies. The fix ensures accurate balance calculations during bank reconciliation processes, improving financial reporting reliability.
Original PR description
Fixed an issue where when editing a move line for the bank reconciliation and setting the currency to a currency other than the company's currency if we edit the move line again we will find that the balance is equal to 0. task-6037835 Forward-Port-Of: odoo/enterprise#114898
A bug in the testing process was causing tests to fail when demo data was loaded. This was due to a duplicate IoT Box record existing in both the test setup and the demo data. This fix resolves the conflict, ensuring tests run correctly and reliably.
Original PR description
We define an IoT Box record in tests with name "Shop". Another IoT Box with this name is defined in the demo data of the module. As a result, when tests are started with demo data loaded, we tend to click on the first IoT Box record with whis name, which correspond to the one from demo data. Some tests are then failing as they can't find device record defined in the test setup. related: odoo/enterprise#96760 Forward-Port-Of: odoo/enterprise#116234
This update adjusts the placement of editable value pencils in reports, moving them to the right of the data for a more intuitive and user-friendly experience. All report values have been aligned to the right, ensuring consistent readability regardless of whether a value is editable.
Original PR description
The UI for editable values in reports was recently revamped. Currently, the pencil icon for editing the values is awkwardly positioned between the text and the value of a line in a report. This change moves the pencil to the right of any editable values. All report values have been shifted so that they are still right-aligned, regardless of whether they are editable or not. task-6086452 Forward-Port-Of: odoo/enterprise#113535
This update fixes an issue where Amazon order-related stock moves incorrectly displayed 'False' as their reference. The change updates the system to use the 'reference' field, which is automatically calculated, ensuring accurate tracking of Amazon orders within the stock management system. This resolves a potential reporting discrepancy.
Original PR description
Issue ----- Commit d0c1e78 removed the `name` field of `stock.move`. Instead, we now use the `reference`field, which is computed in `_compute_reference` https://github.com/odoo/odoo/blob/2ec714b19e2c56bff965ab32f7e6a4485df2d247/addons/stock/models/stock_move.py#L357-L369 The problem is that there is no picking linked to the move, so `move.reference` is set to `False`. This means that, after we go through the override in `sale_amazon`, we end up with `Amazon move: False` https://github.com/odoo/enterprise/blob/596d8c1216b33c1f73feb8f60eef1b69a2164579/sale_amazon/models/stock_move.py#L10-L14 ----- Ticket: opw-5969357 Forward-Port-Of: odoo/enterprise#116109 Forward-Port-Of: odoo/enterprise#114345
This update fixes an issue where the valid date range for emission factors wasn't being displayed correctly. The missing 'always_range' option was the root cause, now resolved to ensure accurate date information is shown to users. This improves the reliability of ESG reporting data.
Original PR description
Before this commit, the validity period was not correctly displayed because the always_range option was missing no related task Forward-Port-Of: odoo/enterprise#115832 Forward-Port-Of: odoo/enterprise#114784
This update resolves an error preventing the import of emissions data related to journal entries. The fix restricts imports to manual emissions, streamlining the reporting process and addressing a technical limitation. This ensures accurate ESG reporting by preventing import errors.
Original PR description
The import button is present in the Emitted Emissions menu, but it produces the following error: "cannot insert into view 'esg_carbon_emission_report' DETAIL: Views containing UNION, INTERSECT, or EXCEPT are not automatically updatable." => To fix this, we will only allow the insertion of manual emissions (model: other.emission) via import, not emissions related to journal entries. task-6168587 Forward-Port-Of: odoo/enterprise#116092 Forward-Port-Of: odoo/enterprise#115306
This update corrects a minor issue where the 'unfold all' option was incorrectly applied during the export of aged receivable reports (like PDFs). Previously, this resulted in overly complex reports. This fix ensures that reports are generated with the correct level of detail, improving report clarity and usability.
Original PR description
This commit introduced a small issue: https://github.com/odoo/enterprise/commit/40484f985f511edd7ba2ae759ce63ef564bcf1f7 When exporting a report (the aged receivable in pdf for example), the option key "unfold_all" was set but shouldn't be. Forward-Port-Of: odoo/enterprise#115985
This update resolves a tour test failure in the HR contract salary module. The issue was caused by a missing employee type configuration, which prevented the tour from running correctly. This fix ensures the tour test passes, indicating proper functionality for salary configurations.
Original PR description
tour test is failing without employee_type task-6186664 Forward-Port-Of: odoo/enterprise#116057
A recent issue prevented non-administrator users from importing websites due to restricted access to a key database model. This update grants read-only access to a broader group of users, allowing the website import process to function correctly for everyone. The change ensures a smoother experience for all users importing websites.
Original PR description
Steps to reproduce: =================== 1. On a 19.1, launch a website import as admin 2. Log in as a non-admin internal user => AccessError on website_generator.request Cause: ====== The website generator systray polls `website_generator.request` on every page load: https://github.com/odoo/enterprise/blob/0226ad15abc8db70f8e379fddec3d83d15749c85/website_generator/static/src/systray_items/generator_request.js#L48 Only `base.group_system` had access on the model, so any non-admin user hit an AccessError as soon as an import request existed (session_info sets show_scraper_systray=True for everyone based on the last request's notified flag). Solution: ========= Grant read-only access to `base.group_user`; writes/creates stay restricted to system so the import flow itself is unchanged. => Systray loads silently, shows status indicator opw-6092411 Forward-Port-Of: odoo/enterprise#114879
This update fixes a problem where the 'attach file' button wasn't working correctly in the Enterprise version of Odoo. The change ensures the button is enabled only after the email thread has fully loaded, improving the user experience and preventing errors when attempting to attach files.
Original PR description
Wait for the attach file button to be enabled, meaning that the thread is loaded. PR community: https://github.com/odoo/odoo/pull/262018 Forward-Port-Of: odoo/enterprise#115658
This update corrects a previous issue where payslips were incorrectly referencing contract dates instead of the version's dates. The fix ensures payslips accurately reflect the correct payroll version, improving data consistency and reporting. This change was enabled by a related update to search functionality.
Original PR description
Prior to this commit, the version domain on payslips only looked at the contract dates rather than the version's dates. The domain was fixed in this commit to limit the domain based on the version's dates instead, and this was allowed after the searches on the version date_start and date_end fields were fixed in the odoo/odoo#256581. task-6067139 Forward-Port-Of: odoo/enterprise#113818
This update fixes an issue where users couldn't delete time off requests after a payslip had been validated. Previously, the system incorrectly blocked deletion, even if the time off wasn't impacting the payslip calculation. Now, time off requests can be deleted regardless of payslip validation status, streamlining payroll processes.
Original PR description
## Issue After confirming a payslip for a period, no time off request within that period can be deleted, even though requests are ont taken into account in the payslip if they are not approved. ##…
## Issue
After confirming a payslip for a period, no time off request within that period can be deleted, even though requests are ont taken into account in the payslip if they are not approved.
## Steps to reproduce
1. Install *Time Off in Payslips* (`hr_payroll_holidays`)
2. Create or use an employee E with a running contract, e.g.:
- Contract: Jan 1 to Indefinite
- Wage: $1000/month
3. In Time Off > Management > Time off, create a new time off allocation for Employee E:
- Date: anywhere during March
- **Do not validate the time off**
4. In Payroll > Payslips, create a new Off-Cycle for Employee E:
- Period: March 1 - March 31
- *Compute Sheet*, *Confirm* and *Mark as paid*
5. Try to delete the allocation created in step 3
6. **An error occurs: _"The pay of the month is already validated with this day included. If you need to adapt, please refer to HR."_, even though the time off is not taken into account in the payslip.**
## Cause
The condition to raise the error message does not take into account the state of the leave:
https://github.com/odoo/enterprise/blob/2d2056766441157dc45ebc37b677841c44e5c513/hr_payroll_holidays/models/hr_leave.py#L195-L204
This commit completes https://github.com/odoo/enterprise/pull/114895, which was preventing the error from being raised when time off were generated after validating the payslip. The error should also not be raised for leaves that are not approved yet, as they did not impact the generation of the payslip.
(related to)
opw-6089990
Forward-Port-Of: odoo/enterprise#116024
Forward-Port-Of: odoo/enterprise#115765This update resolves an issue where the softphone tour started with the wrong tab, causing confusion during initial use. The fix ensures the softphone displays the 'recent calls' tab immediately upon opening, improving the user experience. It addresses a minor display problem that could have impacted tour flow.
Original PR description
Commit [1] made the softphone to show recent tab when there are missed calls. Commit [2] changed the demo data to contain 1 missed call. As a result, now when you open the softphone for the first time, you will see recent tab instead of the keypad tab before. This causes issues when a tour starts with switching to, for example, contacts tab, and then do a search for something immediatly. This is because that `input[id='o-voip-Tab-searchInput']` can be found on both recent and contacts tab. It can happen that we do the search before the dom change finished. To avoid that, we add extra check to make sure we have changed to the tab we want. [1]: c995b7df3fc6ff541dc65d8b28661ab03f4a8c08 [2]: f16faa029220ca7152289180c4de78783bab03be Forward-Port-Of: odoo/enterprise#116239
This update resolves an issue where the last column of accounting reports was partially cut off when scrolling to the bottom. Adding bottom padding ensures all data is visible and accessible, improving the clarity and usability of these reports. This change was implemented to address a visual discrepancy impacting report accuracy.
Original PR description
Before this commit, there was no bottom padding in the accounting reports, which caused the last column’s values to appear partially cut off when scrolling to the bottom. This issue started occurring after the PR: https://github.com/odoo/enterprise/pull/99198 opw-6130981 **Before fix (runbot)** <img width="1920" height="1005" alt="image" src="https://github.com/user-attachments/assets/808bbb2b-3b4e-4b5c-a872-b8bd7bf589ba" /> **After fix:** <img width="1917" height="1006" alt="image" src="https://github.com/user-attachments/assets/55f04e1f-0469-46e1-af69-f5055a7232d9" /> Forward-Port-Of: odoo/enterprise#116329 Forward-Port-Of: odoo/enterprise#116168
This update resolves an issue where the purchase dashboard's spreadsheet data was misconfigured, leading to inaccurate reporting. The fix ensures the correct pivot ID is used in the formulas, resulting in more reliable purchase data visualization. This improves the accuracy of the dashboard for business insights.
Original PR description
This commits fixes the pivot id in some formulas. Task: 5875749 Forward-Port-Of: odoo/enterprise#116110 Forward-Port-Of: odoo/enterprise#114559
This update resolves an issue causing instability in the overtime ruleset tour within the Odoo Enterprise system. By removing redundant steps and improving the tour's selection process, the system is now more reliable and predictable. This ensures a smoother user experience when configuring overtime rules.
Original PR description
This commit stabilizes the 'overtime_ruleset_flow' tour by making the following adjustments: - Updated the wage field selector to be less fragile (removed nth-child dependency). - Removed a redundant dropdown selection step that was causing potential timing issues. - Removed the 'undeterministicTour_doNotCopy' flag to mark the tour as stable.
This update corrects a problem with the Intrastat CSV export that occurred after a recent technical update. The fix ensures accurate data reporting by resolving an issue where commodity flow codes were incorrectly formatted and by updating database connections. This prevents data discrepancies in Intrastat reports.
Original PR description
Since the technical refactoring of intrastat in 18.0, the csv export in `l10n_nl_intrastat` seems broken. Here is the fixes done in this commit: 1. `Commodity flow` is supposed to be a single diggit (6 or 7) but an empty blank space was hidden. 2. Switching the condition on `country_origin_code` as it was the opposite 3. Add a `flush_all` before calling the report during the export, to be sure the database is up to date. opw-5799126 Forward-Port-Of: odoo/enterprise#116230 Forward-Port-Of: odoo/enterprise#115791
This update adds a backup printer option for preparation receipts when the POS system isn't connected to the internet. Now, even if the POS is on a local network but lacks internet access, it can still print out preparation receipts to a designated fallback printer, ensuring operations continue smoothly.
Original PR description
in this commit: - Added a fallback printer for the Preparation Display. - If the POS is not connected to the internet but is on the local network, it can send the preparation receipt to the fallback printer. task-5249489 related pr: https://github.com/odoo/odoo/pull/241062
7 changes
Resolved issues and error corrections
This update fixes an issue where the end date on payslip PDFs was displayed incorrectly. The problem stemmed from a formatting error in the XML file, which has now been corrected to ensure consistent date presentation. This ensures accurate and professional payslip generation for employees.
Original PR description
ٍSteps: - Go to the payslip tabs under payroll app - Create a payslip and preview the generated PDF - The end date format is messed up Cause: The format was different because the end date was being overriden in the xml file and being displayed in the xml through t-out tag instead of span and t-field tags. Solution: Matching the format of the start date and end date of the payslip template. Task: 6168607
This update resolves an error that prevented users from reconciling bank statements on smaller screens (like mobile devices). The issue stemmed from incorrect data passing within the Odoo application, specifically related to how the 'Reconcile' button was handled in the bank reconciliation dialog. This change ensures the application functions correctly across all screen sizes.
Original PR description
When clicking on the "Reconcile" button of a bank statement line on a small screen (ex: mobile) threw an OwlError "Invalid props for component 'KanbanController': unknown key 'bankRecInfo'". BankRecSelectCreateDialog injected `bankRecInfo` into `baseViewProps`, which is spread into the embedded view regardless of its type. On desktop the embedded view is a list (patched to accept `bankRecInfo`), but on small screens SelectCreateDialog falls back to a kanban view, whose controller does not declare that prop, triggering Owl's props validation. Only forward `bankRecInfo` when the inner view is a list by overriding `viewProps` instead of mutating `baseViewProps`. Steps to reproduce: - Enable the developer mode. - Open Bank Reconciliation. - Resize the window to a small/mobile width (or open from a mobile device). - On a statement line, click the "Reconcile" button to open the dialog. - OwlError is thrown opw-6070573
This update corrects a bug in the Mod 349 report for Spanish tax filings. Previously, transactions with amounts less than 1 EUR were not displayed. The fix ensures that all financial transactions, regardless of their value, are accurately included in the report, improving data accuracy for tax compliance.
Original PR description
Steps to reproduce: - Install l10n_es_reports. - Create a company from France. - Create and post a vendor bill for that company with an amount of 0.12 EUR. - Open the Tax Return report and switch to the Mod 349 report for the current year. - Click the 0.12 EUR amount line. Observed: - The journal items view opens with no records. Cause: - `_get_modelo349_audit_aml_domain()` calls `_custom_modelo349_common()`, which filters lines using: `float_compare(result_dict['value'], 0, precision_rounding=2)` - Using `precision_rounding=2` treats values below 1 as equal to 0, so those lines are excluded from the audit domain. Fix: - Replace `precision_rounding` with `precision_digits=2` so values are only treated as zero when they are effectively below 0.01. opw-6134339 Forward-Port-Of: odoo/enterprise#116102 Forward-Port-Of: odoo/enterprise#114776
This update addresses a minor issue in the Odoo Enterprise testing process related to email performance. The change optimizes how email counts are tracked, resulting in more accurate and reliable test results. This ensures that email functionality continues to perform efficiently.
Original PR description
task-6071789 PR community https://github.com/odoo/odoo/pull/260110
This update fixes an issue where public holidays without a defined working schedule were not appearing in SD worx reports. The change expands the search criteria to include all public holidays, regardless of whether they have a working schedule associated with them, ensuring accurate payroll reporting.
Original PR description
### Steps to reproduce: - Create a public holiday without working schedule - Generate a SD worx for the month of the public holiday - Notice the public holiday is not shown in the report ### Cause: When searching for the public holiday we don't take into condsideration the holidays without working schedule. ### Fix: Modify the domain to fetch those holidays as well opw-5500070 Forward-Port-Of: odoo/enterprise#114900
This update fixes an issue where payment reminders weren't being sent to newly created duplicate subscriptions. The root cause was a shared 'last_reminder_date' field preventing reminders from being triggered correctly. The fix sets this field to 'false' for copies, ensuring reminders are sent to all subscriptions, including duplicates.
Original PR description
Payment reminders are not sent to the duplicate of a subscription when a reminder has already been sent for the original subscription Steps to reproduce: 1. Install Subscriptions 2. Create a new…
Payment reminders are not sent to the duplicate of a subscription when a reminder has already been sent for the original subscription Steps to reproduce: 1. Install Subscriptions 2. Create a new subscription for customer Acme Corporation with product Office Cleaning Service (SUB), a Monthly recurring plan and in the Other Info tab, set the subscription Start Date to one week ago 3. Confirm the subscription 4. Go to Scheduled Actions and run the action "Sale Subscription: send reminder for subscriptions with no token" 5. Go back to the previously created subscription (see that a reminder email has been added in the chatter) 6. Duplicate the subscription and confirm the duplicate 7. Run the action "Sale Subscription: send reminder for subscriptions with no token" again 8. There are no reminder for the duplicate subscription Issue: The copy of a subscription uses the same `last_reminder_date`, preventing payment reminders to be sent here https://github.com/odoo/enterprise/blob/5a2ab62254cd5f684a3b1a0d7c0001b888c70d08/sale_subscription/models/sale_order.py#L2114-L2120 Solution: Set `copy=False` on the field `last_reminder_date` opw-6167356 Forward-Port-Of: odoo/enterprise#116335 Forward-Port-Of: odoo/enterprise#115509
This update fixes a minor error in the calculation of Swiss source tax (QST) reversals within the payroll system. Specifically, it corrects a miscalculation of the minimum IS amount, ensuring accurate tax reporting for Swiss businesses using this module. This ensures compliance with Swiss tax regulations.
Original PR description
opw 6133391 Fix for the source tax correction following PR #114463 Forward-Port-Of: odoo/enterprise#115585
10 changes
Resolved issues and error corrections
This update fixes a limitation in how Odoo updates its UNSPSC product codes. Previously, new codes could only be added during initial module installation. Now, an upgrade script automatically adds new codes to the database when updates are applied, ensuring our product data remains current with industry standards.
Original PR description
**Problem:** Periodically, the UNSPSC codes may be updated and they must be added to existing databases. Normally this is done by module update, however, since there are thousands of UNSPSC codes, a CSV imported via SQL is used instead of XML files. This import is only implemented on module install and not module update, so there is no way to update the UNSPSC codes in existing databases. **Solution:** An upgrade script based on the post-init hook has been added, which will add the new codes to the database, if any. Note that: - The version of this upgrade script should be bumped any time the codes list is updated. - Existing records will not be updated opw-5943366 Forward-Port-Of: odoo/enterprise#112652
This update corrects a bug in the Mod 349 report for Spanish tax filings. Previously, amounts less than 1 Euro were incorrectly excluded, preventing the report from displaying relevant journal entries. The fix ensures that all financial lines, including those with small values, are accurately included in the report.
Original PR description
Steps to reproduce: - Install l10n_es_reports. - Create a company from France. - Create and post a vendor bill for that company with an amount of 0.12 EUR. - Open the Tax Return report and switch to the Mod 349 report for the current year. - Click the 0.12 EUR amount line. Observed: - The journal items view opens with no records. Cause: - `_get_modelo349_audit_aml_domain()` calls `_custom_modelo349_common()`, which filters lines using: `float_compare(result_dict['value'], 0, precision_rounding=2)` - Using `precision_rounding=2` treats values below 1 as equal to 0, so those lines are excluded from the audit domain. Fix: - Replace `precision_rounding` with `precision_digits=2` so values are only treated as zero when they are effectively below 0.01. opw-6134339 Forward-Port-Of: odoo/enterprise#114776
This update fixes an issue where the Point of Sale system wouldn't correctly manage multiple open rescue sessions. Now, when multiple sessions exist, a list view is displayed to select the appropriate one. If only one session is open, the system uses the standard direct form view for easier management.
Original PR description
When multiple rescue sessions existed for a POS config, calling `open_opened_rescue_session_form` raised a ValueError ("Expected singleton") because `.id` was accessed on a multi-record set.
Now opens a filtered list view titled "Rescue Sessions" when multiple open rescue sessions are found, and a direct form view when there is only one.
opw-6184661
---
I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Forward-Port-Of: odoo/odoo#262829This update fixes a minor calculation error in the Swiss payroll module (l10n_ch_hr_payroll) related to the reversal of Quebec Sales Tax (QST). The change ensures accurate tax reporting, aligning with Swiss tax regulations and improving the reliability of payroll data. This update was triggered by a previous fix and is a routine maintenance update.
Original PR description
opw 6133391 Fix for the source tax correction following PR #114463 Forward-Port-Of: odoo/enterprise#115585
This update fixes an issue where website event descriptions were often filled with irrelevant information, making them unsuitable for calendar views. The change now utilizes the event's subtitle as the description, ensuring a concise and accurate representation of the event in the calendar. This improves the clarity and usability of event scheduling.
Original PR description
When website_event is used the "description" becomes the main page of the event and can contain lots of completely irrelevant information in the first 1900 characters that are normally used for the calendar event description. In that case we should use the subtitle as the description instead as it's a lot more likely to consisely describe the event. task-5221382
This update fixes an issue where freight charges were incorrectly applied to all pickings, particularly with backorders. The change ensures freight costs are only included in the initial picking, aligning with how delivery costs should be invoiced to the customer and accounting for potential changes in delivery costs.
Original PR description
Commit 28b840b introduced logic to include `freight_costs` in the customs document generated bySendcloud. It introduced 2 new issues as a result: 1. When creating backorders, the `freight_costs` are…
Commit 28b840b introduced logic to include `freight_costs` in the customs document generated bySendcloud. It introduced 2 new issues as a result: 1. When creating backorders, the `freight_costs` are not divided but instead propagated to all of the pickings. 2. When there is no SO, we were taking the total value of all delivered goods, which doesn't make much sense considering the `freight_costs` field should be the cost of the delivery itself. Solution ----- For the first problem, there are a couple things to keep in mind: - the total `freight_costs` declared to the customs entity should be the amount invoiced to the customer - products can be added and removed from the picking after the SO has been confirmed - actual delivery cost can change between invoice date and actual delivery date - picking can be split into multiple packages at the user's discretion Considering all of the above, we will simply forward the invoiced amount with the first confirmed picking and none of the backorders. ----- Ticket: opw-6013387
This update fixes a bug that could occur when consuming stock valuation layers linked to returned moves, particularly when products used different unit of measure categories. The fix ensures the correct unit of measure is used during quantity conversion, preventing a 'singleton' error and improving the stability of stock valuation processes.
Original PR description
#### Issue: Consuming stock valuation layers linked to returned moves could raise an error when the SVL recordset contained products from different UoM categories. #### Cause: `_consume_specific_qty()` and `_consume_all()` used `self.uom_id` inside per-record loops. When self contained SVLs from different UoM categories, self.uom_id was multi-record, causing quantity conversion to fail with: `ValueError: Expected singleton: uom.category(2, 6)` #### Fix: Use the UoM of the current SVL record during returned quantity conversion: - `candidate.uom_id` in `_consume_specific_qty()` - `svl.uom_id` in `_consume_all()` opw-6119427 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This update fixes an issue where the navbar menu items and app icon would disappear when users zoomed out or increased the screen width on mobile devices. The fix ensures the navbar dynamically adjusts to display the full menu and icon when sufficient screen space is available, improving the user experience.
Original PR description
**Issue:** In the navbar view, when a user starts in mobile view (narrow width) and then increases the screen width (e.g., by zooming out or resizing), the menu items and app icon do not reappear. The navbar remains stuck in mobile mode even when there is enough space to display the full layout. **Fix:** The navbar was relying on `env.isSmall`, which is only set during initialization and does not react to window resizing. This has been updated to use `this.ui.isSmall`, which is reactive and updates dynamically when the viewport size changes. **Before:** After resizing from mobile to a larger width, the navbar continued to behave as if it were still in mobile view, keeping menu items and the app icon hidden. **After:** When the screen width increases, the navbar correctly detects the change and re-renders, restoring the menu items and app icon as expected. opw-6107660 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This update corrects a misleading validation error that appeared when using the translation button on Sale Order Templates, particularly within O2M views. The fix ensures the system correctly handles nested records, preventing unnecessary error messages and improving the user experience. This change ensures users can accurately translate descriptions without confusion.
Original PR description
Steps to reproduce: * Enable multiple languages * Go to Sale Order Templates and create a new template * Add a product line, then click the translate button on the description field * A confusing…
Steps to reproduce: * Enable multiple languages * Go to Sale Order Templates and create a new template * Add a product line, then click the translate button on the description field * A confusing validation error appears for missing `sale_order_template_id` Issue: * Instead of highlighting the missing required fields on the sale order template form view, it raises a misleading validation error on `sale_order_template_id` Cause: * `useTranslationDialog` always attempts to save the passed record directly. In O2M list views, the field can belong to a nested relational record, so the correct behavior is to save the root record instead. Affected Version: 17.0 Before: <img width="1919" height="1014" alt="image" src="https://github.com/user-attachments/assets/cd61381d-289a-4df4-bdf2-7881fa851939" /> After: <img width="1920" height="887" alt="image" src="https://github.com/user-attachments/assets/5218c74b-c024-4994-b816-cb7ae69b420f" /> --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#262755
This update ensures that the terms and conditions displayed to customers are translated into their preferred language, rather than the administrator's. Previously, the system incorrectly used the administrator's language, leading to inconsistent and potentially confusing customer experiences. This fix corrects a technical issue and improves the accuracy of translated content.
Original PR description
## Problem
When `terms_type == 'html'`, a `context` dict with the partner's language was created but immediately deleted without ever being applied. As a result, `_()` ran in the admin's language instead of the partner's language:
```python
context = {'lang': order.partner_id.lang or self.env.user.lang}
order.note = _('Terms & Conditions: %s', baseurl)
del context # context was never used
```
This was introduced in 466ee8f5fe48 and left unaddressed when 07b9d0e2307b fixed the plain-text branch.
## Fix
Replace the unused context dict with `with_context(lang=lang)` so the translation is evaluated in the partner's language (or the user's language as fallback), consistent with the `elif` branch below.
## Steps to reproduce
1. Configure HTML terms and conditions with translations in two languages
2. Create a sale order for a partner with a language different from the admin's
3. The `note` field stores the translation in the admin's language instead of the partner's1 change
Resolved issues and error corrections
This update fixes a minor calculation error related to the reversal of Quebec Sales Tax (QST) in the Swiss payroll module. The change ensures accurate tax reporting, aligning with Swiss tax regulations and improving the reliability of payroll data. This update primarily impacts the l10n_ch_hr_payroll module.
Original PR description
opw 6133391 Fix for the source tax correction following PR #114463