Thursday, July 3, 2025
50 changes · saas-18.4
Enhancements to existing features
This update refreshes Odoo's web interface framework to include small fixes and translation improvements. It helps ensure displayed text and accessibility labels are handled more consistently for users in different languages.
Original PR description
This brings two commits: - [FIX] parser: t-esc/t-out vs t-translation* - [IMP] compiler: make human-readable ARIA attributes translatable see https://github.com/odoo/owl/releases/tag/v2.8.0. Forward-Port-Of: odoo/odoo#216599
The bank reconciliation widget no longer shows a link to the bank journal entry when that entry is simply the bank transaction itself. This reduces visual clutter and helps users focus on the relevant reconciliation information.
Original PR description
Before this PR: Link to the bank journal entry was shown in bank reco widget. After this PR: If the journal entry linked is the bank itself, then it will not be shown in bank reco widget. task-4872789 Forward-Port-Of: odoo/enterprise#87753
Resolved issues and error corrections
This fixes an issue where manufacturing orders created in batches could receive an incorrect finished date. The change ensures each order uses its own expected work order duration, improving scheduling accuracy for automated or custom batch processes.
Original PR description
If you create mrp.production in batch, date_finished is wrong. Note: it probably works as is in standard flow because always used on a single record (ex: form view) but it might break custom code. opw-4629270 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#216550
Code cleanup and technical improvements
Generic website editing plugins and options have been moved into the shared html_builder module. This prepares the platform to reuse the same editing capabilities for mass mailing while keeping the existing website builder working as before.
Original PR description
This commit moves all the website_builder plugins that will be necessary for the mass_mailing conversion to the html_builder module. This lessens the load of what we would need to adapt for it. This move is also done ensuring that the current website_builder is still operational. task-4247642 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Miscellaneous changes
Some po files were mistakenly added to either deleted modules or weren't necessary during translation syncs across versions. This commit cleans up those files. Also delete leftover pot file with mismatching name to module --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Original PR description
Some po files were mistakenly added to either deleted modules or weren't necessary during translation syncs across versions. This commit cleans up those files. Also delete leftover pot file with mismatching name to module --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This update corrects issues in automated counter checks for events and user records. It helps keep background monitoring reliable so teams can trust nightly validation results and avoid false alerts.
Original PR description
Not sure where to extra queries come from ... bleurg. runbot-181961 Forward-Port-Of: odoo/odoo#217265
Suggested accessory product descriptions in the cart now display cleanly without spilling outside their layout. This improves the shopping cart presentation and makes accessory recommendations easier for customers to read.
Original PR description
This PR fixes an issue about products description overflowing in the context of the suggested accessories in the cart UI. | saas-18.3 | This PR | |--------|--------| |  |  | Prior to this PR, a `text-truncate` was applied on the element but the flex layout was preventing the element to truncate correctly. To fix this issue, we set `.o_description_line` to this element, which will apply the same styling as the regular cart line, making it more consistent. task-4915440 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#217117
This update separates website builder resources so editing tools load only the styles they need. It prevents editor-only page styles from being bundled in the wrong place, reducing risk of display issues and making future maintenance safer.
Original PR description
~~Enterprise PR https://github.com/odoo/enterprise/pull/88162~~ Enterprise PR: https://github.com/odoo/enterprise/pull/88346 ------ [[FIX] html_builder, *: remove *.inside.scss from…
~~Enterprise PR https://github.com/odoo/enterprise/pull/88162~~ Enterprise PR: https://github.com/odoo/enterprise/pull/88346 ------ [[FIX] html_builder, *: remove *.inside.scss from html_builder.assets](https://github.com/odoo/odoo/pull/215218/commits/794370219cb9f4ddff2d771d21f5c03220382ac1) *: website, website_mass_mailing In commit [1], the website builder was rewritten in owl. The concept of `*.inside.scss` files was introduced: style that is loaded on pages, inside the iframe only during edition. The `html_builder.assets` bundle was not supposed to have those. We fix this issue and potential future issues by adding a remove on all modules that include all files within `static/src/website_builder`. This commit also adds a test to verify the `html_builder.assets` doesn't contain *.inside.scss files to prevent potential future mistakes. [1]: https://github.com/odoo-dev/odoo/commit/9fe45e2b7ddbbfd0445ffe25a859e67a316d02b2 ------ [[REF] website, *: add website.website_builder_assets bundle](https://github.com/odoo/odoo/pull/215218/commits/5e7c43d0694c27171ba5ce17d61717f6346084b1) *: website_blog, website_crm, website_crm_partner_assign, website_customer, website_event, website_event_exhibitor, website_event_track, website_forum, website_hr_recruitment, website_mail_group, website_mass_mailing, website_mass_mailing_sms, website_payment, website_project, website_sale, website_sale_comparison, website_sale_loyalty, website_sale_slides, website_sale_wishlist, website_slides, website_slides_forum This commit adds the `website.website_builder_assets` bundle which includes `html_builder.assets` and is used by the website builder editor. This will allow mass_mailing to have its own bundle too, without the need to load everything from the website builder.
This fixes an issue where users authenticating with a passkey could fail an identity confirmation step because the password context was not carried through that flow. The correction helps ensure passkey users can complete protected actions without unnecessary interruption.
Original PR description
26f982cd26deb5e8a971617d8c1d6d4e840eaee3 introduced the idea of passing the password in the context instead of saving it to the database. However it forgot to add the password for webauthn flows, so this is a simple correction. Forward-Port-Of: odoo/odoo#217118
Printed invoices using boxed document layouts no longer leave stray vertical lines at the bottom when content spans two pages. This improves the appearance of customer-facing invoice PDFs, especially for invoices with long product descriptions.
Original PR description
Before this commit, a print invoice that's on 2 pages with a boxed template left 2 vertical lines on the page bottom A negative margin top in applied that push the table top to the first page I…
Before this commit, a print invoice that's on 2 pages with a boxed template left 2 vertical lines on the page bottom A negative margin top in applied that push the table top to the first page I change the layout of `report_invoice_document` to avoid a negative margin. The negative margin-top to `total` was there to move the float div higher to compensate the ´table` margin-bottom. I remove the `table` margin-bottom and replace that by a `payment term` margin-top. The margin were collapsed for `total` and `payment term` so I had to add an overflow-hidden on the parent div. ## Before :  ## After :  ## Steps to reproduce : - Change the document layout to a boxed one in the Settings - Create products with long descriptions (example can be found in the linked ticket) - Create an invoice with the products - Print the invoice (the total should be on the second page top) - The vertical lines should be there opw-4841652 Forward-Port-Of: odoo/odoo#215778
This update fixes an issue where font sizes in edited lists could be calculated inconsistently in automated environments. The change makes the sizing behavior more stable, helping avoid intermittent failures and preserving consistent editor output.
Original PR description
[FIX] html_editor: fix non-deterministic font size It looks like, on runbot specifically, the real value prior to rounding unfortunately resulted in a size near the .9 px mark. Because of that, sometimes it would be rounded down to the next integer if the value was only a tiny bit bigger. To fix it, I replaced floor with round, hoping this won't cause a different test to fail non-deterministically because the real value for that other test would oscillates around the .5 mark. Testing with actual pixel values is tricky, but the feature can't be tested otherwise.
The mail interface now hides the link preview delete button from users who are not allowed to remove that preview. This avoids confusing users with an action that appears available but does nothing, while keeping deletion available to message authors and administrators.
Original PR description
**Current behavior before PR:** The delete button for link previews was visible to all users, including those who did not have access to delete the preview. When such users attempted to delete a link preview, the confirmation dialog appeared, but no action was taken **Desired behavior after PR is merged:** The delete button is only shown to the message author or admin users, ensuring that only users with delete access can see and interact with the button. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#212883
This fixes an issue where screens using reference fields could load without the list of available choices. Users should now see the expected options in affected views, preventing confusion or incomplete forms.
Original PR description
[1] adds some optimizations around fetching selection for field descriptions but omits to consider "reference" is also a field type that uses selections. This leads to selection not being provided when fetching views containing reference fields. [1]: afe72a751ec073e76cd51e5c300468cd16d194d6 task-4894262
This fix prevents a website builder date/time field from being accidentally cleared when other settings are changed. It also makes related automated checks more stable, reducing false test failures without changing the user experience.
Original PR description
A previous fix [1] for `BuilderDateTimePicker` addressed cases where it was not initialized. However, that fix was not robust enough for the scenario where modifying another option on the element would then incorrectly clear the input field of an uninitialized DateTimePicker. While this specific case is not currently reproducible in standard Odoo snippets, as they always initialize a value upon being dropped, this fix ensures the `BuilderDateTimePicker` maintains its proper state regardless of its initial condition or subsequent modifications to other element options. This commit adds a tolerance in `BuilderDateTimePicker` tests to avoid potential undeterminism. This addresses an issue introduced in [1]. Previously, checks were performed by directly comparing Unix integers, which could differ if the comparison occurred within the final milliseconds of a second. [1]: https://github.com/odoo/odoo/commit/2d1a39f7224495ea04aa8765ae5ac11145a84398
The time off allocation approval screen no longer shows the approve button after a request has already been approved. This avoids confusion for managers and keeps the workflow status clear.
Original PR description
Originally the approve button still exits after approving the allocation request beacuse of a misleading old condition. The condition has been removed. Forward-Port-Of: odoo/odoo#210159
This fixes an unreliable counter in the full mail test suite that could produce random failures. The change helps keep automated validation stable, reducing false alarms during release checks without affecting customer-facing behavior.
Original PR description
runbot-160897 Forward-Port-Of: odoo/odoo#216819 Forward-Port-Of: odoo/odoo#216782
This change makes the mail rendering process safer to extend by copying rendering options before they are modified. It reduces the risk of future mistakes when developers customize email-related behavior, with no expected visible change for everyday users.
Original PR description
Copy the render options to avoid future mistackes when overriding render_fields and modernize the code to. 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
Empty date and time fields in list views now keep enough clickable space instead of shrinking too much. This makes data entry more reliable and accessible for users working in lists.
Original PR description
This commit fixes an issue where an empty list_datetime_field becomes too small to click reliably, due to the autoresize hook assigning it a minimum width of only 10px. To resolve this, an option is added to the autoresize hook to skip resizing when the input is empty, ensuring the field remains accessible. task-4908209
This fix prevents the website builder from crashing when a page contains an embedded frame without a source link. Business users benefit from a smoother editing experience and fewer interruptions while managing website pages.
Original PR description
A recent commit [1] reintroduced the iframe fallback mechanism in the website builder, lost during the refactoring to owl. Unfortunately, someone (me) was not careful enough, and missed a subsequent fix [2]. The issue lies in the code removing the autoplay attribute in iframes present in the page. Since it targeted all iframes, even ones without a src attribute, the new Url(src) would crash. So, with this commit, we ensure that we ony target iframes with a src attribute. This reintroduces commit [2]. [1] 36db9c82b00e9ae276edb059f980b23eb93df02b [2] 755ab306190be4d1bfb11d8b9fd5e7cf4cc34b3f 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
Kiosk orders now receive a clear floating order name using either the table stand number or the tracking number. This helps staff identify and fulfill self-service orders more reliably, reducing confusion during order preparation and pickup.
Original PR description
For Kiosk order, set `floating_order_name` with `table_stand_number` or `tracking_number`. task-id: 4711661 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#212919
This fixes how Odoo Live Chat records whether help was provided, including correctly leaving the status empty when no help was given. It also removes unused lookup logic, making the calculation simpler and reducing the chance of incorrect status reporting.
Original PR description
- NULL when help was not provided. - Remove unexisting, unused search. - Since history are unique (channel_id, partner_id), we can directly compare them in the compute. follow up of task-4796793 Description of the issue/feature this PR addresses: Current behavior before PR: Desired behavior after PR is merged: --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This fix makes Odoo's messaging composer keep focus more reliably when messages are posted or edited. It also updates related automated tests so intermittent failures are less likely, improving confidence in release validation without changing day-to-day user workflows.
Original PR description
Follow-up of https://github.com/odoo/odoo/pull/214626 Runbot error 181952 is hardly reproduce-able. Don't have a exact idea what causes the problem. These are theories of the causes: 1. insertText,…
Follow-up of https://github.com/odoo/odoo/pull/214626
Runbot error 181952 is hardly reproduce-able. Don't have a exact idea what causes the problem.
These are theories of the causes:
1. insertText, contains, triggerHotkey of mail helpers are not robust enough (lack simulation, not robust against CPU load / prone to race conditions).
2. focus in composer is lost non-deterministically
Previous attempts were thinking the root cause are mail test helpers and web test helpers would fix issue, but that's probably not the exact cause of issue. A more likely candidate is composer loosing focus and therefore pressing of keys do not make proper transition from message with composer to message without composer.
One likely cause of loosing focus is `processMessage` that reuses the old ref after asynchronous handling of message edition / post. This commit fixes by using the current ref of texarea.
Test helpers can still be prone to problems. That's why this commit this converts the most important LOCs to web test helpers. The user interactions are made with `contains().press()`, where the `contains()` enforces focus on the targeted element, giving more guarantee the composer is focused for proper press of key. `press("Control+Enter")` were not working because this passed "Control+Enter" instead of "Enter" as `ev.key`. This was fixed by using more primitive syntax `["Control", "Enter"]` which is better parsed for proper `ev` object of KeyboardEvent.
Runbot-error-227618
Forward-Port-Of: odoo/odoo#217013
Forward-Port-Of: odoo/odoo#216756Portal users will no longer see broken chat window styling when viewing documents with portal chatter. The change avoids showing the chat hub in that portal context, keeping the page layout and conversation area visually consistent.
Original PR description
When a chat window is open while a portal user accesses a document where portal-chatter is available, its styles break because ChatHub is not rendered inside the Shadow DOM where Chatter is. Since all required styles are within the Shadow DOM, this causes styling issues. This commit fixes the issue by disabling ChatHub in portal chatter. This commit also includes backport of https://github.com/odoo/odoo/pull/203703 Task-4645905 Forward-Port-Of: odoo/odoo#216997 Forward-Port-Of: odoo/odoo#204325
The website builder's floating blocks snippet now works with the updated editor action system, preventing broken editing controls. The Add Card button styling is also corrected so users see the intended visual cue when building pages.
Original PR description
Commit [1] introduced a new class-based action system for the builder. Commit [2], merged just after [1], introduced the `s_floating_blocks` snippet, but was still using the old action system, which is now broken. This commit updates `s_floating_blocks` to use the new class-based system. Additionally, the "Add Card" button appearance is fixed (now it correclty displays with the "success" style), and an action is renamed for clarity. task-4367641 [1] odoo@b4b2153 [2] odoo@35f1846
The website setup translation test has been updated so it works again with the new Website Builder. This helps ensure translated website configuration flows remain reliable and reduces the risk of regressions during future updates.
Original PR description
This PR re-enables the test_01_configurator_translation test, which was broken and skipped due to the DOM changes introduced by the new Website Builder. It also adapts the tour selectors accordingly. In the configuration screen, after clicking the "Build My Website" button, the website was taking unexpected time to load. To address this, we added `expectPageUnload` to wait for fill page load. After that, we wait for the configurator to finish.
This fix prevents the website builder from reacting after users leave it for another app. It avoids unexpected redirects back to the website when keyboard shortcuts are used elsewhere, keeping users in the area they are working in.
Original PR description
Description of the issue/feature this PR addresses: Current behavior before PR: Desired behavior after PR is merged: --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Fixed a crash that could happen when opening certain website content, such as blog posts, whose internal record ID is negative. This makes backend website editing more reliable for affected content already present on Odoo.com.
Original PR description
Steps to reproduce: 1. Install website_blog 2. Create a blog post with a negative ID (you'll need to change it via SQL) -> such kind of record is something we have on Odoo.com 3. Go to that blog post in the backend website view => Crash We have several places where the main-object data is parsed from the HTML, it did not consider the negative ID possibility. In master, an unified way to parse the main-object will be made. task-jke Forward-Port-Of: odoo/odoo#216573
This fix makes the “today” indicator use the same color and rounded shape in both the date picker and calendar sidebar. It improves visual consistency, making dates easier to recognize across the interface.
Original PR description
picker and sidebar will now have the same today color. We also had to set the same width to have the same rounded borders. task-4613140 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
The Time Off calendar no longer shows greyed-out days for employees using flexible working hours. This avoids confusing employees and managers by making all days appear available as expected for flexible schedules.
Original PR description
The calendar view in the Time Off app was displaying greyed-out days. These days corresponded to those from the underlying work schedule on which the flexible working hours were based. Steps to reproduce: ------------------- * In the Work Information tab of an Employee, set the Working Hours to flexible. * Save and click on the Time Off smart button > Observation: Some days were greyed-out Why the fix: ------------ `get_unusual_days()` usually return a dict of each days with True or False. That dict is then interpreted to display white or greyed-out days. Simply be returning False, every days are going to be white. opw-4816609 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#212932
This fixes an internal mail test so it gives consistent results when demo data is present. It prevents pre-existing sample activities from affecting the activity count, helping keep automated quality checks reliable.
Original PR description
Activity count fail with demo data, due to existing activities. Remove them in test to have deterministic result. runbot-223201 Forward-Port-Of: odoo/odoo#217040
This fix ensures that when an Extra Hours leave request is changed to another time-off type, it no longer stays incorrectly linked to overtime records. This helps keep overtime balances and leave records accurate after edits.
Original PR description
This commit fixes a bug that occurs when switching a leave request of type "Extra Hours" to another time-off type. The issue happens when editing a leave request that allows deduction from overtime, as it remains linked to attendance overtime that needs to be unlinked. task-4756706 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#207780
This update prevents forms from crashing when binary fields contain unexpected non-text data or lack a filename. It also avoids showing certain technical binary fields in automatically generated forms, improving reliability for users who open affected records.
Original PR description
Description of the issue/feature this PR addresses: Current behavior before PR: Desired behavior after PR is merged: --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#217011 Forward-Port-Of: odoo/odoo#213967
Long product descriptions on sales order or quotation lines now resize correctly when the page is reopened. This removes unnecessary blank space at the bottom of lines, making quotations cleaner and easier to review.
Original PR description
## Versions 18.0+ ## Issue Blank spaces appear at the bottom of each Sale Order line when a long product description is set. ## Steps to reproduce - Create a new quotation: - Add a product; - Change the description for a long one (3+ lines) or add one; - Go back to the quote list view; - Come back to the quote. ## Cause The component's height computation is done before the columns' widths' computation which then resizes based on font styles, making the text take less space and blank spaces appear. ## Fix Force the computation of the SO line's height once the component is mounted. opw-4766800 Forward-Port-Of: odoo/odoo#216581
Odoo Studio now removes accidental spaces at the end of selection values before saving them. This prevents confusing duplicates or mismatches when those values are reused elsewhere.
Original PR description
Before this commit it was possible to create selection values with trailing spaces. This could be very misleading when reusing these values somewhere else. After this commit, such values are trimmed before saving. opw-4877276 Forward-Port-Of: odoo/enterprise#89159 Forward-Port-Of: odoo/enterprise#88255
Resetting an invoice to draft now ensures its already posted deferred accounting entries are cancelled when they have been reversed. This helps keep accounting records consistent and prevents stale deferred entries from remaining active after invoice changes.
Original PR description
When resetting an invoice to draft, its posted deferred entries should be cancelled. This is adding a test to the linked fix. Linked community PR: https://github.com/odoo/odoo/pull/216628 opw-4891975 Forward-Port-Of: odoo/enterprise#89341 Forward-Port-Of: odoo/enterprise#88992
The barcode incomplete transfer window now combines closely related column headers so they remain readable on very small screens and in languages with longer translations. This helps warehouse users process partial receipts without confusing overlapping labels, especially on mobile devices.
Original PR description
Issue ----- When processing partial receipts on small resolution screens, the incomplete transfer window has an overlap of its headers for translations with long terms. Steps to reproduce ----- - Set…
Issue ----- When processing partial receipts on small resolution screens, the incomplete transfer window has an overlap of its headers for translations with long terms. Steps to reproduce ----- - Set DB language to French - On Inventory>Configuration>Operation Types, configure the operation type "receipts" to create backorders on "Ask" - Create an incoming transfer - Open barcode on a low resolution screen (eg 340x400px) - Open the transfer in barcode - Process part of the quantity - Validate the partial transfer --> The "Terminé /" & "A faire" column headers overlap Cause ----- The resolution is not wide enough to fit the headers without word break. However breaking words isn't a suitable solution either as it makes headers unreadable. For example, "Terminé /" & "A faire" would read as "Term A " " iné fair" " / e " Given that the 2 columns are semantically related, we can merge their headers together without losing readability. Visual comparison ----- Low resolution before (left) & after the fix (right).  Desktop display is a bit affected but still readable.  ----- Ticket: opw-4715939 Forward-Port-Of: odoo/enterprise#89247 Forward-Port-Of: odoo/enterprise#87177
The salary configurator will no longer show Belgian minimum wage warnings for employees at non-Belgian companies. This avoids confusing or irrelevant alerts for companies using other localizations, such as the United States, when Belgian payroll features are installed.
Original PR description
The warning for a basic wage below minimum level appears for non Belgian employees, such as L10N_US, because the L10N_BE was installed. The logic for the warning has been limited to be applied only on Belgian companies. Task #4907771 Forward-Port-Of: odoo/enterprise#88939
This fix prevents payroll batch processing from failing when grouped payroll data includes more than one employee version. It helps ensure payslip runs can continue reliably instead of stopping with an error in those cases.
Original PR description
As we are using a read_group, that return an agregate of records, version may contain multiple version. If you get multiple records, you get a singleton error when trying to read date_version of version. So we append all version records into the all_employee_versions dictionnary
Fixed an issue where Chilean electronic factoring files could show the assigned amount using a foreign currency value instead of Chilean pesos. This ensures the exported AEC file reports the legally expected CLP amount when invoices are created in another currency.
Original PR description
In this bug, when a currency other than CLP is selected in invoicing, the generated aec has MontoCesion tag with the rate of selected currency, while it must always be in CLP. To reproduce the bug: 1- Create a database with invoice app and a Chilean company 2- Create an invoice with document type of 34 3- Choose a different currency than CLP 3- Click on `Send Now to SII` and Create AEC 4- Click on Yield Entry smart button 5- Download generated AEC xml file 6- You can see the value of MontoCesion is in selected currency which is wrong opw-4830957 Forward-Port-Of: odoo/enterprise#88175
Fixes an issue where the journal button could disappear after creating a draft accounting entry for one payslip in a batch. Payroll users can now continue accessing the related journal entry even when other payslips in the same batch are not yet completed.
Original PR description
**Steps:** - Install the hr_payroll_account module - Navigate to the payroll menu and open a batch payslip. - Select a batch containing two or more payslips and create a draft entry for any single…
**Steps:** - Install the hr_payroll_account module - Navigate to the payroll menu and open a batch payslip. - Select a batch containing two or more payslips and create a draft entry for any single payslip in the batch. --- **Description of the issue/feature this PR addresses:** When a draft entry is created for a single payslip within a batch, the journal smart button becomes invisible. --- **Cause:** The issue occurs during the account move creation process. When generating an account move for a batch payslip, the process checks the status of all payslips in the batch. If any payslip is not in the done state, the account move is not created, resulting in the journal smart button not appearing. --- **Fix:** This PR adjusts the account move creation logic to allow account moves to be created for batch payslips, ensuring the journal smart button remains visible even if some payslips are not in the done state. task-4440533 Forward-Port-Of: odoo/enterprise#76681
Point of Sale users connected to UrbanPiper will no longer see the same online/offline store notification repeated after reloading the POS. This reduces unnecessary interruptions and makes the session restart experience smoother for staff.
Original PR description
Steps: ==== - Configured UrbanPiper credentials in `pos.config` and selected platform providers (e.g., Ubereats, Justeat). - On session start, a pop-up confirms the store is online on enabled platforms. - Reload the pos Issue : ==== - The same pop-up appeared again on POS reload, leading to a poor user experience. Fix: ==== - Removed duplicate call from `pos.store` that triggered provider status notifications unnecessarily. - Enhances user experience by preventing repeated popups on session reload. task-4879125 Forward-Port-Of: odoo/enterprise#88027
The scheduled payroll data update has been changed to run once a week instead of more frequently. This reduces unnecessary background processing while keeping payroll data refreshed on a regular basis.
Original PR description
Forward-Port-Of: odoo/enterprise#88564 Forward-Port-Of: odoo/enterprise#88492
This fixes an internal payroll expense link so expense records are handled as expenses rather than payslips. It helps prevent incorrect payroll expense processing and reduces the risk of errors in payslip-related expense calculations.
Original PR description
this commit fixes wrong reference to `hr.payslip`. `payslip_expenses` should be a recordset of `hr.expense` and not `hr.payslip`. Forward-Port-Of: odoo/enterprise#89068 Forward-Port-Of: odoo/enterprise#88994
The website editor's technical resources have been reorganized into a dedicated bundle used by website-related apps. This reduces unnecessary loading for email marketing and supports cleaner, more efficient maintenance without changing visible business workflows.
Original PR description
Community PR: https://github.com/odoo/odoo/pull/215218 ------ [[REF] website, *: add website.website_builder_assets bundle](https://github.com/odoo/enterprise/pull/88346/commits/0bdf7a526888b3c9f8a45fb31fe74e416b6341e1) *: website_appointment, website_helpdesk, website_knowledge, website_sale_renting, website_studio This commit adds the `website.website_builder_assets` bundle which includes `html_builder.assets` and is used by the website builder editor. This will allow mass_mailing to have its own bundle too, without the need to load everything from the website builder.
Before this commit, the logo and QR code images on receipts printed via the IoT printer did not appear. Now, the htmlToCanvas conversion waits until these images are fully loaded before proceeding. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#214603 Forward-Port-Of: odoo/odoo#214331
Original PR description
Before this commit, the logo and QR code images on receipts printed via the IoT printer did not appear. Now, the htmlToCanvas conversion waits until these images are fully loaded before proceeding. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#214603 Forward-Port-Of: odoo/odoo#214331
# Context : By design the CRON “Mail Marketing: Process queue” handling the email marketing campaigns is expected to time out for large mailing list. By default it tries to generate and commit batches (default 50) of `mail.mail` records while working through the total list of remaining recipients. See `_action_send_mail_mass_mail` method https://github.com/odoo/odoo/blob/8ff5079b1f5c4df23d56b7f170151408fa7f6f8c/addons/mail/wizard/mail_compose_message.py#L752 In practice, for large mailing
Original PR description
# Context : By design the CRON “Mail Marketing: Process queue” handling the email marketing campaigns is expected to time out for large mailing list. By default it tries to generate and commit…
# Context : By design the CRON “Mail Marketing: Process queue” handling the email marketing campaigns is expected to time out for large mailing list. By default it tries to generate and commit batches (default 50) of `mail.mail` records while working through the total list of remaining recipients. See `_action_send_mail_mass_mail` method https://github.com/odoo/odoo/blob/8ff5079b1f5c4df23d56b7f170151408fa7f6f8c/addons/mail/wizard/mail_compose_message.py#L752 In practice, for large mailing lists this will take longer than 15 mins (the default real time limit for CRON jobs) and thus implicitly we expect the worker to time out, re-initiate and continue where it left off. But since Odoo 18, the new refactor of `ir.cron` tries to penalize jobs that time out too often (>3) and don’t report at least a partial progress (`_notify_progress()`). See https://github.com/odoo/odoo/blob/8ff5079b1f5c4df23d56b7f170151408fa7f6f8c/odoo/addons/base/models/ir_cron.py#L361C1-L367C39 While `_process_mass_mailing_queue` does use the notify progress method (https://github.com/odoo/odoo/blob/8ff5079b1f5c4df23d56b7f170151408fa7f6f8c/addons/mass_mailing/models/mailing.py#L1167), it does so at a higher level or granularity (the `mailing.mailing` records in queue). But it will never called as long as the CRON keeps timing out while processing the mails for the remaining recipients (that get committed by batches). Which leads to the CRON being flagged as timing out to many times, and the `nextcall` date of the job being incremented by it’s default value of 1 day. So in practice: - mail marketing starts processing - will time out 3 times after 15 mins (default real time) - new system kicks in and increments the next execution date + 1 day - cron does not run until next day (so no new mail batches created) → artificially low sending rate of the campaign even-though everything is in order # Proposed solution: One could argue that the real unit of work is the committed mail records done in `_action_send_mail_mass_mail`. So we count the processed recipients/mails and call _notify_progress()` before the auto commit (which will be active when the method is called during the CRON). This should ensure that the CRON will not be penalized for timing out too often as long as the recipients are defacto being processed by batches. opw-4633353 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#215845 Forward-Port-Of: odoo/odoo#200909
Some po files were mistakenly added to either deleted modules or weren't necessary during translation syncs across versions. This commit cleans up those files. Also delete leftover pot files with mismatching names to modules
Original PR description
Some po files were mistakenly added to either deleted modules or weren't necessary during translation syncs across versions. This commit cleans up those files. Also delete leftover pot files with mismatching names to modules
If not specified, the field `youtube_video_category_id` was treated as readonly by default. This commit explicitly sets readonly: false, ensuring that the field is editable. This prevents the value from being lost during posting, as it will now be correctly written to the database. Part of PR: #83571 opw-4646432 Forward-Port-Of: odoo/enterprise#87969
Original PR description
If not specified, the field `youtube_video_category_id` was treated as readonly by default. This commit explicitly sets readonly: false, ensuring that the field is editable. This prevents the value from being lost during posting, as it will now be correctly written to the database. Part of PR: #83571 opw-4646432 Forward-Port-Of: odoo/enterprise#87969
Before this commit, there was a traceback error when importing Winbooks having a different sign on the balance in company currency and foreign currency. There was a frozendict error in the `import_wizard/_import_move()`. ### Steps to reproduce: - Choose a Belgium company - Import a Winbooks file having a different sign on the balance in company currency and foreign currency - Adapt account in Chart of Account if needed - The traceback should be triggered What happens is that the record
Original PR description
Before this commit, there was a traceback error when importing Winbooks having a different sign on the balance in company currency and foreign currency. There was a frozendict error in the `import_wizard/_import_move()`. ### Steps to reproduce: - Choose a Belgium company - Import a Winbooks file having a different sign on the balance in company currency and foreign currency - Adapt account in Chart of Account if needed - The traceback should be triggered What happens is that the record where added to a list, then the app tries to change `'CURRAMOUNT'` value to 0. But it was a frozendict item, so it create an error. I replace the record added to the list with a copy version that can be mutated. opw-4794471 Forward-Port-Of: odoo/enterprise#87484
Steps to reproduce: 1. install `l10n_at_pos` module 2. run `test_10_neutralize` test adding missing commas in the `neutralize.sql` file to ensure proper SQL syntax. Error [link](https://runbot.odoo.com/odoo/error/181676) build_error-181676 Forward-Port-Of: odoo/enterprise#87975
Original PR description
Steps to reproduce: 1. install `l10n_at_pos` module 2. run `test_10_neutralize` test adding missing commas in the `neutralize.sql` file to ensure proper SQL syntax. Error [link](https://runbot.odoo.com/odoo/error/181676) build_error-181676 Forward-Port-Of: odoo/enterprise#87975