Monday, June 1, 2026
37 changes · saas-19.1
Enhancements to existing features
This update clarifies how half-day work periods are displayed on payslips. Previously, half days were grouped with full days, making it difficult to understand total work hours. Now, half days are clearly identified, providing a more accurate and transparent view of employee compensation.
Original PR description
In order to clearly distinguish work days that extended full day or half day, the worked days under the payslips will not display both entries as separate types with the half days flagged Task: 5975762 Forward-Port-Of: odoo/enterprise#112328
This update enhances the flexibility of our documentation links by adding styling options through 'class' props. Previously, these links had a fixed style, limiting their use in different contexts like buttons or dropdowns. Now, developers can easily customize the appearance of these links to fit seamlessly into various parts of the Odoo application.
Original PR description
Before this commit, the style of that component is fixed, thus it is not possible to customize it to render that component as a secondary button neither display it as dropdown item. This commit adds the `class` props in that component to be able easily change the style to use that component anywhere. task-6095833
Resolved issues and error corrections
This update resolves an issue where deleting an action linked to an inactive filter would sometimes cause an error. The change ensures that inactive filters are also removed when an action is deleted, maintaining data consistency and preventing unexpected errors for users. This improves the stability and reliability of the system.
Original PR description
How to reproduce: - Delete an action linked to an inactive user-defined filter. - Go to the User-Defined menu, - Show inactive filters (with "Archived filter") - Got a MissingError. Explanation: odoo/odoo#156622 fixes an inconsistency when deleting an action, but the reviewer was "amorti" so he (I) forgot to account for inactive "ir.filters". Add active_test=False to ensure inactive "ir.filters" are also removed. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#266761 Forward-Port-Of: odoo/odoo#262195
This update corrects an issue where placeholder text within blog posts was incorrectly displayed as HTML spans after translation. The fix ensures that placeholder text always shows as plain text, regardless of language settings, improving the user experience and consistency of blog content. This resolves a visual inconsistency that was impacting readability.
Original PR description
Since placeholder attribute is translated, for non-form elements placeholder attributes that contain a translation <span/> need to be unwrapped to restore the plain text value. Steps to reproduce the issue: - Have website and website_blog installed - Add a second language - Open a blog post in your second lanuage - Start translating - Remove the blog title => Shown placeholder text is <span ...> task-5190459 Forward-Port-Of: odoo/odoo#266166 Forward-Port-Of: odoo/odoo#263320
This update backports several bug fixes identified during a recent upgrade process (FW-porting) for the l10n_fr_pdp module. These fixes address minor issues related to French accounting functionality, ensuring continued accuracy and reliability for our French-speaking customers. The changes improve the overall stability of the module.
Original PR description
Backports some fixes discovered during FW-porting task-None Forward-Port-Of: odoo/odoo#267330
This update resolves an issue where a test was failing due to an outdated method call. The change simplifies the test by directly using the intended functionality, ensuring consistent and reliable test results. This improves the overall stability of the payment processing system.
Original PR description
The set_line_bank_statement_line method is defined in account_accountant, meaning we can't use it in account_payment as it will automatically break if enterprise is not installed. Replace it with direct call to _get_partial_amounts, which is the purpose of this test anyway. runbot-939260 Forward-Port-Of: odoo/odoo#267139
This update fixes a potential issue where customer display URLs were inconsistently formatted across Odoo. By standardizing this URL generation logic, it now allows other modules, like the mobile POS app, to reliably access the correct URL. This ensures consistent customer access and simplifies future development.
Original PR description
Previously, the logic to build the customer display URL was scoped entirely within the `openCustomerDisplay` method. This prevented other modules from easily reusing the exact same URL formatting logic, leading to duplicated or inconsistent URL construction. By extracting this logic into a dedicated `customerDisplayURL` getter, we allow extending modules (such as `pos_mobile`) to reliably access the correctly formatted URL. This ensures that essential parameters, like the device UUID and access token, are consistently applied whenever the customer display URL is needed across the codebase. opw-6212067 See also: https://github.com/odoo/enterprise/pull/118458 Forward-Port-Of: odoo/odoo#266854 Forward-Port-Of: odoo/odoo#266581
This update fixes an issue where the mobile point-of-sale app wasn't correctly linking to customer details. By standardizing the URL generation process with the main POS system, the mobile app now reliably displays customer information. This ensures a consistent and accurate customer experience for mobile users.
Original PR description
The `_showDisplayAndGoToUrl` method in the mobile navbar was manually constructing its own URL for the customer display. This hardcoded string incorrectly omitted the device UUID, which is required for proper display identification and tracking. By leveraging the new `customerDisplayURL` getter introduced in the parent `Navbar` component, the mobile implementation now utilizes the exact same URL logic as the standard point of sale. This resolves the inconsistency and ensures the customer display functions reliably on mobile devices. opw-6212067 Forward-Port-Of: odoo/enterprise#118624 Forward-Port-Of: odoo/enterprise#118458
This update fixes an issue where commission plans were incorrectly displayed in the 'Other Plans' section for salespeople, even when their assignment periods didn't overlap. The system now accurately checks for overlapping assignment dates, ensuring that only relevant plans are shown, improving the accuracy of commission calculations.
Original PR description
Version - 18.0 Steps to reproduce: 1. Create a commission plan A with effective period 2025–2026 2. Assign salesperson to plan A from 01/01/2025 to 31/12/2025 3. Create another commission plan B with effective period 2026 4. Assign the same salesperson to plan B from 01/01/2026 to 31/12/2026 5. Open plan B and check the 'Other Plans' section in the salespeople tab Issue: Plans are shown in 'Other Plans' even when salesperson assignment periods do not overlap. System incorrectly relies on plan effective dates instead of salesperson-specific assignment dates Fix: A plan is now considered overlapping only if the salesperson assignment periods intersect. Non-overlapping plans are properly excluded from 'Other Plans'. Taskid-6055253 Forward-Port-Of: odoo/enterprise#118769 Forward-Port-Of: odoo/enterprise#112694
This update resolves an issue where manually created bills were incorrectly assigned to the default purchase journal. Now, bills created through the 'Create a bill manually' option will automatically use the correct journal based on the user's previous selection, ensuring accurate financial record-keeping.
Original PR description
This commit fixes the default journal used when pressing "Create a bill manually" on a purchase journal in the journals dashboard. Previously, when creating a bill manually, it would be created on the default purchase journal. Now, the correct purchase journal is chosen depending on which journal I pressed the "creating a bill manually" link from. task-6167135 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#261586
This update resolves an issue where certain product categories were incorrectly displayed on Website 1, leading to a 'Not Found' error. The fix ensures that categories are only shown to users on the current website, improving the user experience and preventing broken links. This change was made to maintain consistent and accurate product listings.
Original PR description
Steps to produce: --- - Install `website_sale` with demo data. - Go to `website > ecommerce > products > ecommerce categories`. - Open `Desks/Components` category > Set website to `My website 2`. -…
Steps to produce: --- - Install `website_sale` with demo data. - Go to `website > ecommerce > products > ecommerce categories`. - Open `Desks/Components` category > Set website to `My website 2`. - Open the shop page on website > Click on Desks category. Issue: --- - The Components subcategory is still displayed on Website 1. - Clicking on it leads to a Not Found page since the category is not assigned to that website. Root cause: --- - At [1], In the category filmstrip template, subcategories are fetched without filtering based on website access. - As a result, categories restricted to another website are still shown. Solution: --- - Filter categories using the `can_access_from_current_website` method to ensure only categories accessible from the current website are displayed. [1]https://github.com/odoo/odoo/blob/900fc043064216c5943ea07392d8120be7b50b63/addons/website_sale/views/templates.xml#L758-L769 opw-6159549 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#266637 Forward-Port-Of: odoo/odoo#262410
This update resolves a test failure related to how binary data is handled during the import of Italian electronic invoices. The fix ensures that test data is correctly formatted for Python 3.14's stricter base64 validation requirements, preventing an error. This ensures the Italian EDI functionality continues to operate reliably.
Original PR description
This commit fixes an error when running the `test_edi_import` test on Python 3.14, which is stricter about base64 validation. Ultimately, the root issue was that raw test content was being passed to the `datas` field of an attachment when a base64 representation was actually expected (which is obviously invalid base64). Passing it via the `raw` field instead correctly handles the raw binary data. runbot-939133 Forward-Port-Of: odoo/odoo#266731
This update fixes an issue where orders captured in a POS session would incorrectly reappear in a new session after a device was disconnected. This change ensures order dates align accurately, reducing user confusion and improving session management. It addresses a technical glitch that could have caused inaccurate reporting.
Original PR description
Before this commit, if an order was captured in a session but could not be synced to the server, and the session was closed from another device, the order would be captured in the opening control session that created after the closing. This could lead to confusion for the user as the session opening date would be after the order capture date. opw-6207434 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#263776
This update resolves an issue where the employee org chart would crash when displaying records with a missing 'write_date' field. This often occurred with legacy data imported into Odoo. The fix ensures the chart gracefully handles these records by defaulting to a '0' value, preventing the error and maintaining chart functionality.
Original PR description
### Description of the issue / feature this PR addresses The Odoo 19.0 \`hr_org_chart\` controller passes \`employee.write_date\` to JS as a cache-busting key: \`\`\`python #…
### Description of the issue / feature this PR addresses The Odoo 19.0 \`hr_org_chart\` controller passes \`employee.write_date\` to JS as a cache-busting key: \`\`\`python # addons/hr_org_chart/controllers/hr_org_chart.py:35 write_date=int(employee.write_date.timestamp()) * 1000, # to have it in milliseconds for js \`\`\` When \`hr_employee.write_date\` is NULL the ORM returns \`False\` for the field, so the unconditional \`.timestamp()\` call raises: \`\`\` AttributeError: 'bool' object has no attribute 'timestamp' \`\`\` This crashes the employee form view on click for any record with NULL \`write_date\`. NULL audit columns can occur in legacy databases — records inserted via direct SQL by data-loaders, rows carried forward from very old Odoo versions that did not always populate \`_log_access\` columns, or data restored from anonymised backups. The ORM's \`vals.setdefault\` defaults in \`_log_access\` do not override an explicit falsy value passed by callers. This is a regression vs 18.0 — the 18.0 \`_prepare_employee_data\` did not include \`write_date\` at all. ### Behaviour before this PR Opening the form view of an employee with NULL \`write_date\` (any affected employee record) raises \`AttributeError\` and the org chart fails to load. ### Behaviour after this PR The controller falls back to \`0\` when \`write_date\` is missing — the same defensive pattern already used in \`odoo/addons/base/models/avatar_mixin.py:67\`: \`\`\`python bgcolor = get_hsl_from_seed(self[self._avatar_name_field] + str(self.create_date.timestamp() if self.create_date else "")) \`\`\` The org chart loads; the JS cache key for that one record is \`0\` until the record is next written (which will set \`write_date\` via the normal ORM path). No user-visible regression on healthy rows. Forward-Port-Of: odoo/odoo#264591
This update makes carousels on the website more user-friendly by pausing automatic scrolling when a user prefers reduced motion. It also increases the delay between carousel image changes to 5 seconds, preventing a jarringly fast experience. This enhances accessibility and overall website performance.
Original PR description
Auto-sliding carousels should be paused if the user chose prefers reduced motion. This commit also increases the fallback interval when none is set from 1s to 5s. Cycling through images every second is much too fast. task-5470023 Forward-Port-Of: odoo/odoo#266997 Forward-Port-Of: odoo/odoo#250169
This update resolves a warning message that appeared during AI development in Odoo 19.1. The change ensures the warning remains visible, as it was previously disabled in a prior version. This allows for continued monitoring and identification of potential issues related to AI integration.
Original PR description
This reverts commit e1c71a90b3e7163733cba3da401eaf473f190fef. The warning is fine. https://github.com/odoo/odoo/pull/259007#issuecomment-4299650605 > il fallait justement stop le forward-port en 18.2, on veut le warning, mais on n'avait pas la possibilité d'en avoir un avant 18.1 Forward-Port-Of: odoo/odoo#266967 Forward-Port-Of: odoo/odoo#262841
This update resolves a technical issue where Odoo couldn't properly serialize certain data types (Date, Datetime, and Binary) within sparse fields when exporting data to JSON. The fix ensures that these values are correctly formatted for JSON, preventing errors and improving data compatibility. This change ensures data is consistently exported and imported.
Original PR description
Storing a sparse field of type Date, Datetime or Binary raises a TypeError because json.dumps() cannot natively serialize the Python objects returned by convert_to_read (date/datetime instances and bytes). Fix Serialized.convert_to_cache to pass json_default (from odoo.tools.json) as the default serializer to json.dumps(). This handles Date, Datetime and Binary values without any extra conversion step in _inverse_sparse, and reuses the existing Odoo infrastructure instead of introducing a custom helper. Steps to reproduce: 1. Create a model with a sparse field of type Date, Datetime or Binary 2. Set a value on it 3. → TypeError: Object of type date is not JSON serializable --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#266779
This update corrects a minor inaccuracy in how the 'remaining days' field displays dates close to the current date. Previously, deadlines near today's date were sometimes incorrectly shown as 'Next month'. This change ensures a more precise and user-friendly display of time remaining.
Original PR description
Luxon is not very accurate when the field is close to today: If today is Apr 30, so a deadline set to May 1 will be displayed as "Next month". In practice, it is not wrong, but it is not very accurate. task-6175442 Forward-Port-Of: odoo/odoo#267102
This update resolves an issue preventing users from editing the short description of new partners within the website. A recent change removed essential styling, causing the editing field to be unusable. The fix restores the necessary styling and adds a placeholder for improved user experience.
Original PR description
Steps to reproduce: 1. Create a new partner with any level. 2. Click on the Go to Website button and publish it. 3. Now go to the /partners page and activate editor. 4. Now try to edit the short description of the partner. Current behavior: The short description is not editable in the frontend. This is due to the changes made in the editor, before the changes, the o_editable class was getting added additional properties to give it a minimum height and width, along with making it an inline-block element. But now, these properties has been removed, which is causing an issue for users adding new partners and trying to edit the short description in the website. Solution: We brought back the crm_partner_assign.scss and added the properties back to the o-editable element inside our specific partner short description. Also added a placeholder to the short description to make the interaction more intuitive for users. opw-5955922 Forward-Port-Of: odoo/odoo#253097
This update resolves a bug where date calculations within the AI module would fail when the 'offset' value was unexpectedly `None`. The fix ensures that missing or `None` 'offset' values are treated as 0, preventing unintended date movements and improving the stability of AI-powered features. This change enhances the reliability of date-based computations.
Original PR description
Currently, an exception is raised when `offset` is `None` and is compared
with `MIN_OFFSET` or `MAX_OFFSET`.
Currently `offset = op.get("offset", 1)` to assign a default value of `1` when
the `offset` key was missing from `op`. However, this does not handle cases
where the `offset` key is present but its value is `None`.
This commit fixes the issue by defaulting `offset` to `0` when it is missing or
`None` in `op`. Using the default value ensures no date movement occurs
when `offset` is not explicitly provided.
Sentry-7448086997This update fixes an issue where the website builder incorrectly added paragraph tags when inserting icon snippets. The change ensures icons are only wrapped in `<p>` elements when dropped between blocks, preventing unwanted line breaks and formatting problems. This improves the overall consistency and usability of the website builder.
Original PR description
When the "icon" snippet is dropped, after the icon is selected and inserted, a call to `wrapInlinesInBlocks` ensures the icon is wrapped in a `<p>` element. The added `p` is only desired when the icon snippet is dropped between blocks, and it is problematic when the icon snippet is dropped "inline". This commit only wraps the icon if needed (aka, the parent `allowsParagraphRelatedElements`) Steps to reproduce: - Open website builder - Select a span of text and turn it bold - Type `/button` inside the bold text and add a button - Drag and drop the "Icon" snippet (an inner content snippet) - Select any icon - Bug: a `<p>` element is added in the `strong` element (which is invalid html), and this adds line breaks (and the style is affected if the line breaks are manually deleted) task-6251585
This update corrects a technical oversight by adding a new module, 'l10n_hu_reports_a60', to the Odoo translation system (Weblate). The original module was developed but hadn't been properly linked to the translation workflow, preventing accurate Hungarian language support. This fix ensures the module is correctly translated and available for users.
Original PR description
We added a new module here 379c5e9611f1f1c242027c1c134219966474de16 but forgot to add it to weblate.json for translation. no-task
This update optimizes the HTML editor's performance, specifically when handling large tables like the Accounting Balances Sheets. By changing a selector, the system now recalculates styles more quickly, reducing delays during actions like hovering, scrolling, and sorting.
Original PR description
Avoid using the :has() selector and use a specific class on the body instead to replicate the same behavior. This reduces work during the "Recalculate Style" phase (for example when hovering rows in large tables such as the Accounting > Balances Sheets). It lowers recalculation time during window resizes, heavy scrolling, and table sorting by preventing broad selector matches and limiting style checks to elements with the specific class. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#267165
This update automatically sets the deductibility prorata rate to 100% by default in the Iranian (l10n_ma) accounting module. Previously, users had to manually configure this rate, which often led to inaccurate tax reports. This change simplifies the process and ensures more reliable tax calculations.
Original PR description
Users often forget to complete the deductibility prorata rate, which makes the tax report seems buggy. Set the rate to 100% by default. task-6092580 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#263486
This update resolves a rare test failure related to timing issues in the website's interaction tests. The fix eliminates a potential delay caused by waiting for animation frames, ensuring more reliable test results. This improves the overall stability of the website development process.
Original PR description
This commit fixes the test "waitForTimeout does not trigger update if interaction is not ready yet", which could very rarely fail on runbot. **Origin of the problem** The test relies on precise…
This commit fixes the test "waitForTimeout does not trigger update if interaction is not ready yet", which could very rarely fail on runbot. **Origin of the problem** The test relies on precise timings, but the helper `advanceTime` could introduce a non-deterministic lag because, when called with default options, it awaits for an animation frame. If the lag happens to be too long, the second `verifySteps` is called too late and the test fails. **Fix** The helper `advanceTime` is now called with the option `animationFrame` set to false to avoid awaiting for an animation frame. For additional safety, the waiting time is also reduced. Two changes not directly related to this problem have been applied to improve the test: 1. an unnecessary `await` in `willStart` has been removed; 2. the `animationFrame` has been set to false also on the second `advanceTime` (a non-deterministic lag here can't fail the test, but still there is no reason to await for the animation frame). runbot-243515 Forward-Port-Of: odoo/odoo#266432
This update fixes a visual issue where the background color of selected table cells wasn't accurately displayed in the toolbar. The changes ensure that the selected cell's background color is consistently shown, regardless of whether the cell is empty or contains data. This enhances the user experience when working with tables in the HTML editor.
Original PR description
Before this commit: the background color of selected table cells isn't shown in the toolbar. After this commit: we have a background color processor in the table plugin to calculate the background color of selected cells. The color and background color are also properly reset to update the selected color when selecting an empty table cell. table_selectionchange_handlers is created to make sure the selected color is updated after it. task-5976046 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#266911 Forward-Port-Of: odoo/odoo#252011
This update clarifies the meaning of a document access setting within the Documents app. Previously, 'No' indicated no access, which was misleading. It's now 'Basic,' accurately reflecting that users retain access to their own and shared documents. This change improves clarity and usability.
Original PR description
In the Documents app, the lowest tier access right was called "No", which implies the user has no access. However, this is not the case. The user still has access to the app, their own documents, and shared documents. To resolve this confusion, "No" is changed to "Basic" and the relevant descriptions are updated. task-6099135 Forward-Port-Of: odoo/enterprise#113660
This update resolves a minor issue where a test for one2many fields could sometimes fail in an unpredictable way. The fix prevents the creation of duplicate records during testing, ensuring the test is more reliable and consistent. This improves the overall stability of the Odoo system.
Original PR description
This commit fixes a non deterministic one2many field test by ensuring that we don't quick create the record twice.
Before this commit, it might sometimes happen that the validation of the input ("Enter", by default) produced a second name_create. Note that in practice this is highly unlikely to happen as if the user presses Enter, the "Quick create" item in the dropdown only appears during a single frame, thus making impossible for the user to click on it.
It's the exact same issue as the one fixed by odoo/odoo#256582.
runbot error~242443
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#266344This update ensures that changes to pricelist item dates made while a Point of Sale session is open are correctly reflected within the POS. Previously, reloading the POS wouldn't update the items. This improves the accuracy of pricing displayed to customers during transactions.
Original PR description
Before this commit, if the date validity of a pricelist item was changed after opening a POS session, reloading the POS won't update the items. opw-6223217 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#265211
This update resolves an issue where date formatting in the spreadsheet module was inconsistent across different Chrome versions. Changes in underlying dependencies caused variations in how dates were displayed, leading to test failures. This revision ensures a consistent and reliable date format for all spreadsheet outputs.
Original PR description
Some dependencies in the chrome build changed between chrome 145 and 148 which changes the output value of luxon.Interval.toLocaleString, more specifically, some space characters were changed and the tests can pass or not depending on the chrome version they run with. This revision forces a standardized output. task-6233171 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#266167 Forward-Port-Of: odoo/odoo#265565
A recent test failed due to an issue in how the system searches for short URLs. The fix ensures that the system correctly identifies and handles situations where the same code pattern appears in multiple URLs, preventing duplicate results. This improves the accuracy of link searches.
Original PR description
Problem ------ The test was trying to search for links that has specific code patterns in their short_url and distinguish links using this logic. However, it did not consider the case where the same code pattern might exist in two different urls. i.e `example/r/AbC` and `example/r/DbE` both contains `b`, so when searching for `b`, both urls will be returned. FIX ------ Testing the search on different code combinations for the short_url is not the subject of that unit test, it is sufficient to search for the exact codes and see if there are conflicting results. task-6254039 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#266709
This update corrects minor visual inconsistencies in the portal's layout, specifically aligning alert content and ensuring Knowledge/Document cards are properly displayed. A temporary SCSS fix was implemented for the stable version, but the underlying issue will be addressed in a larger update on the main branch to prevent future alignment problems.
Original PR description
The alert content is vertically misaligned due to the mb-1. The Knowledge / Document cards are not inserted inside a `row` which misaligns them due to the missing margin and padding. This is to be reworked on master forwardport since here we're dealing with nested rows withouth intermediary columns. SCSS only fix for stable. task-5262108 <img width="663" height="553" alt="image" src="https://github.com/user-attachments/assets/18dd6c2f-47f0-4ba8-91cb-f9c5a2e0fda4" /> > [!NOTE] > On the master forwardport I'll review the DOM to avoid the nested row and unnecessary margin instead of the scss fix here. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#249313
This update adds a direct link within the Timesheets Assistant interface to its official documentation. This enhancement makes it easier for users to quickly find answers to their questions and understand how to use the Timesheets Assistant effectively. It’s a small change designed to improve user support and knowledge.
Original PR description
This commit adds documentation link in Timesheets Assistant to redirect the user to the documentation of Timesheets Assistant. task-6095833
This update fixes a technical error that occurred when applying payslips with negative amounts. The issue stemmed from referencing outdated data within the payroll system. The fix involved correcting the data references and removing unnecessary code, ensuring accurate payslip processing.
Original PR description
Steps to produce: - create a previous payslip with negative amount - create a payslip for current month - click on the warning to apply negative amount - you get an error or a traceback because it's referencing an input which is removed from the system and migrated to other input Fix: - corrected the reference to negative net - removed content of the method `_generate_payslip` as it's not used and referencing removed inputs task-id: 6240163
This update resolves an issue where attachments added to emails sent via the 'Send by Email' action were disappearing after refreshing the chatter window. The fix restricts attachment saving to the full composer view, ensuring consistent behavior across different email creation methods. This improves the reliability of sending emails with attachments.
Original PR description
**Steps to reproduce:** - Install Sales app - Create a Sales Order - Click on the 'Send by Email' action - Add an attachment and send it - Open the chatter to create a log note - Attachment is…
**Steps to reproduce:** - Install Sales app - Create a Sales Order - Click on the 'Send by Email' action - Add an attachment and send it - Open the chatter to create a log note - Attachment is attached to the new message - It disappears on refresh **Issue:** Attachment upload widget was moved to the toolbar of the composer with [1], which split it into `mail_composer_attachment_selector` and `mail_composer_attachment_list`. Then with [2] the selector logic was changed to use `FileUploader` instead of `FileInput` to get the attachment synced when switching back and forth between full and normal chatter composers. But this should not impact action composers created with `'mail.email_compose_message_wizard_form'`. **Fix:** Restrict the attachment save to the full composer using context. [1] https://github.com/odoo/odoo/commit/cee3c8146863300242f9f2d109743a50c2b91027 [2] https://github.com/odoo/odoo/commit/9f7249a141b618fc8640a65d1f7fc20023156ce3 opw-5164504 Forward-Port-Of: odoo/odoo#266530 Forward-Port-Of: odoo/odoo#265736
This update optimizes Odoo's performance when displaying large tables, like the Accounting > Balances Sheets. By using a more targeted approach to style recalculations, the system now responds more quickly to actions like hovering, resizing windows, and sorting data, leading to a smoother user experience.
Original PR description
Avoid using the :has() selector and use a specific class on the body instead to replicate the same behavior. This reduces work during the "Recalculate Style" phase (for example when hovering rows in large tables such as the Accounting > Balances Sheets). It lowers recalculation time during window resizes, heavy scrolling, and table sorting by preventing broad selector matches and limiting style checks to elements with the specific class. similar fix: https://github.com/odoo/enterprise/pull/118535 Forward-Port-Of: odoo/odoo#266954
This update resolves an issue where product variant prices didn't automatically update when the cost price changed. Previously, users had to manually switch price lists to trigger the update. The fix ensures that the ‘On Sale Price’ dynamically reflects changes to the product’s cost price, streamlining pricing management.
Original PR description
When we create a product variant and have a pricelist which is based on the cost price, and change the cost price, the on_sale_price doesn't update. You have the change the price list to other and…
When we create a product variant and have a pricelist which is based on the cost price, and change the cost price, the on_sale_price doesn't update. You have the change the price list to other and back to the one you want for it to trigger change because the _onchange_compute_pricing only gets triggered if there's change on pricelist (pricer_sale_pricelist_id), and sales price (lst_price). Steps to Reproduce: 1.Create a pricelist and add a line with "formula" price type, and based on "cost", 2.Create a product variant, and add the pricelist just created. 3.Change the "Cost". The "On Sale Price" doesn't update. 4.You have to change the price list to some other and back to the one you want for the "On Sale Price" to update. To fix the issue, we add the field Cost (standard_price) on api.onchange, so when we change the cost it'll update the "On Sale Price" right away. opw-5947995 Forward-Port-Of: odoo/enterprise#117806 Forward-Port-Of: odoo/enterprise#111892