Friday, December 5, 2025
38 changes · 19.0
Resolved issues and error corrections
This update prevents email or message handling from failing when a message has no date recorded. It makes message sorting more reliable in rare cases where missing dates previously caused a crash.
Original PR description
'date' field is not required on mail.message model which means it could hold a void value. It is generally set (either through email date, either because there is a default defined) but in some cases it is unset. We therefore have to be careful when sorting on it, as we may mix boolean and datetime values, which leads to a crash. Task-5342539
This update resolves a problem where images set to a percentage width in the document footer were not being displayed correctly when using wkhtmltopdf. The fix reverts a previous change that caused this issue, ensuring images resize properly and appear as intended. This improves the visual quality of documents generated from the HTML editor.
Original PR description
Problem: wkhtmltopdf doesn't render images with both width and height set in percentage. Solution: When resizing in percentage, set only the width. This effectively reverts a change introduced in 920cea5ff567c9113370174570d0ead0bbfa767a. Steps to reproduce: - Add an image to the document footer. - Set the image size to 50%. - Print the document. - The image does not appear. opw-5168087 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This update clarifies the ESIC contribution rules within the payroll system. The tooltip now specifies that employee and employer contributions are calculated when gross wages are below ₹21,000. This ensures accurate reporting and compliance with ESIC regulations.
Original PR description
We are updating the field tooltip. Before: - l10n_in_esic_employee_amount: Employee contributions towards ESIC(Employees’ State Insurance Corporation) are calculated based on their gross wages. - l10n_in_esic_employer_amount: Employer contributions towards ESIC (Employees’ State Insurance Corporation) are calculated based on the employee’s gross wages. After: - l10n_in_esic_employee_amount: Employee contributions apply when the gross wage is below ₹21,000 - l10n_in_esic_employer_amount: Employer contributions apply when the gross wage is below ₹21,000 Task: 5383839
This update resolves an issue where invalid PDF tests would fail due to compatibility problems with different versions of the PyPDF library. The fix standardizes error handling, ensuring the test consistently passes regardless of the PyPDF version used, improving the reliability of the sign document process.
Original PR description
## Case 1: When `pypdf2_2` is not installed, it falls back to using the pypdf package. (Ref1) This triggers a warning during the test case when it tries to parse an invalid PDF. This commit…
## Case 1: When `pypdf2_2` is not installed, it falls back to using the pypdf package. (Ref1) This triggers a warning during the test case when it tries to parse an invalid PDF. This commit suppresses the warning to ensure the test runs without warnings. Ref1: https://github.com/odoo/odoo/blob/26a5384af0af8fc6e6b5a10bea277f937e2b3481/odoo/tools/pdf/__init__.py#L42-L46 ## Case 2: With **PyPDF2===1.26.0**, the line at [1] raises a `PyPDF2.utils.PdfReadError: EOF marker not found`. This exception is not handled by the same except block but is instead handled later in the flow at [2]. As a result, the test raises a **UserError**, causing the assertion to fail. On the other hand, when `pypdf2_2` or `pypdf` is installed, the _PdfFileReader_ raises a **UnicodeDecodeError**, which is then handled as a **ValidationError**, allowing the test to pass as expected. This commit adds handling for **PdfReadError** in method `get_valid_pdf_data()` to unify the behavior across all supported PyPDF versions. 1: https://github.com/odoo/enterprise/blob/f79601c62ca629dc01a5c1ad5520b0bb44a169d0/sign/utils/pdf_handling.py#L27 2: https://github.com/odoo/enterprise/blob/f79601c62ca629dc01a5c1ad5520b0bb44a169d0/sign/models/sign_document.py#L433-L437 Runbot-234021, 234022
This update resolves a crash issue that occurred within the website builder when a form contained a Many2One field with no associated records. The fix mirrors the approach used for many2many and one2many fields, displaying a disabled input when a field has no data. This ensures a stable and reliable user experience for website form creation.
Original PR description
With the [website builder refactor], the code was not robust in case there were no records for a many2one field in a form.
Steps to reproduce:
- Open website builder on a form in a new database
- Set action "Send an email"
- Add a field with type "Alias Domain" ("Option List" must be empty)
- Change "Selection type" to "Radio"
- Bug: crash
[website builder refactor]: 9fe45e2b7ddbbfd0445ffe25a859e67a316d02b2
task-5238496
Forward-Port-Of: odoo/odoo#234586This update corrects an error in the Belgian VAT return XML generation, preventing rejections by the government. The issue stemmed from an outdated filter within the accounting module, leading to incorrect grid numbers being included. This fix ensures accurate VAT return submissions for Belgian companies.
Original PR description
**Steps to reproduce:** - Install accountant and l10n_be_reports - Switch to a Belgian company (e.g. BE Company CoA) - Create an Intra-Community invoice: * Customer: [EU customer] * Invoice Date:…
**Steps to reproduce:** - Install accountant and l10n_be_reports - Switch to a Belgian company (e.g. BE Company CoA) - Create an Intra-Community invoice: * Customer: [EU customer] * Invoice Date: [last month] * Fiscal Position: [Intra-Community] * Invoice Lines: [a product with "0% EU M" tax] - Confirm the invoice - Go to "Accounting / Accounting / Closing / Tax Returns" - Open the period containing the created invoice - Mark all lines as "Reviewed" - Validate the VAT Return **Issue:** In the generated XML, there is a line for grid number "46L", which should not appear. Therefore, the XML is rejected by the government. Same issue with grid number "46T". These 2 grids are sub-section of grid number "46" and should not appear in the XML. Cause: Previously, they were filtered out, but since this commit https://github.com/odoo/odoo/commit/17a6117ed88c29b5bc4db0c872bcdbc109a7d98b, the formula has changed from "46L" to "-46L" but the excluding filter has not been updated. opw-5344566
This update fixes an issue where annotations in PDF exports of Balance Sheet reports were not displayed in chronological order. The changes ensure that the oldest annotations appear first, providing a more accurate and user-friendly report. This improves the clarity and reliability of financial reporting.
Original PR description
We expect the oldest annotations to appear first when exporting to a PDF.
To reproduce:
- Go to any report such as the Balance Sheet
- Open the chatter for an account
- Post 2 messages ("first" and "second" for exemple)
- Export the report to PDF
This was introduced in https://github.com/odoo/enterprise/pull/95307This update prevents the website's product shop from showing an empty "alternative products" section. Previously, even when no alternatives were listed, the section would still appear. This change ensures a cleaner user experience by only displaying relevant product options.
Original PR description
### Issue: In this issue, alternative products section will continue to be shown in website_sale, even if the product has no alternative products, due to editing alternative products using Editor. #### To reproduce: 1- Create a product with an at least one alternative product. 2- On product shop page, using Editor, edit the description of alternative products section. 3- Remove alternative products of the product. 4- As seen, the alternative products section is still shown, even though it is empty. #### Cause: This is caused due to 9fe45e2b7ddbbfd0445ffe25a859e67a316d02b2 which commented out `display: none` for empty snippets. https://github.com/odoo/odoo/blob/d985ec2e9b61b5e6c36a278654d526aaa5b512e2/addons/website/static/src/snippets/s_dynamic_snippet/000.scss#L2-L5 opw-5253884 Forward-Port-Of: odoo/odoo#237117
This update resolves a technical error that prevented the generation of payroll export files. The fix corrects a field name mismatch, ensuring accurate retrieval of employee data. A new test suite has been implemented to guarantee the reliability of the export process and data integrity.
Original PR description
The export generation crashed due to a mismatch between field names — the code was referencing employee_ids, while the model actually defines employee_id. Since the Prisma code is now stored on the employee model, the logic was updated to correctly access the employee_id field and retrieve the related Prisma code. Additionally, a comprehensive test suite was added to validate Prisma code behavior, including: - validation of code length for employees, companies, and work entry types, - handling of codes across different companies, - and the complete Prisma export flow (from work entry creation and validation to export file generation). task-5153727 Forward-Port-Of: odoo/enterprise#101039 Forward-Port-Of: odoo/enterprise#96743
This update resolves a bug where the 'lock' action in the document previewer's action menu wasn't updating correctly. The fix ensures that the action menu reflects the current document status, providing consistent functionality for users. This improves the overall document management experience.
Original PR description
Steps to reproduce =================== - Preview any documents. - Click on the actions menu and lock the document. - Now go to the actions menu again. => The set of options is not updated. Technical =========== - The action menu, which we are using inside the file previewer, is passed explicitly inside the FileViewer component of the document. We were using the `record.load()`, which will not have any effect on the FileViewer component and that's why the action menu was not updating. After this commit ================== - Used the `this._notifyChange()` method, which closes the preview and loads the model to align with the same behaviour as other actions. Task-4988116 Forward-Port-Of: odoo/enterprise#100255 Forward-Port-Of: odoo/enterprise#91760
This update fixes an issue where PDF payslips generated from payruns were named 'new payslip' instead of including the employee's name and pay period. Now, payslips will correctly display 'Salary Slip - <employee name> - <time period>', ensuring accurate and professional payroll documentation. This improves the user experience and clarity of payroll reports.
Original PR description
[FIX] hr_payroll: write full name on payslip generated from payrun _ ## Short functional explanation of the error When generating a payslip from a payrun for an employee, the name of the PDF payslip…
[FIX] hr_payroll: write full name on payslip generated from payrun _ ## Short functional explanation of the error When generating a payslip from a payrun for an employee, the name of the PDF payslip is simply "new payslip" instead of "Salary Slip - <name of employee> - <time period of the slip>" ## Reproduction Steps 1. Go to Payroll and click on the Payslips tab > payslips. 2. Click on Pay Run. Select Regular Pay and click Continue. 3. Select an employee for which you'd like to generate the payslip. 4. Click on the employee row in the list view. 5. Click Compute sheet > Print. ## Expected behavior A PDF with name "Salary Slip - <employee name> - <time period>" is generated. ## Unexpected Behavior A PDF with name "new Payslip" is generated. ## Origin of the issue When printing the slip with this flow, we don't call the method ```_compute_name()``` used to compute the name of the current slip. Therefore, it stays at 'New Slip', which is the default name. Henceforth, we have to call this method manually when printing the slip. _ opw-5216796 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/enterprise#101056
This update prevents a critical error that occurred when users created or modified fields with incorrect domain settings. The fix wraps domain evaluations in a try-except block, gracefully handling invalid domains and providing a clear error message to the user. This ensures a smoother user experience and prevents data loss.
Original PR description
Currently an error is generated when the user tries to create or write fields with wrong domain. Steps to produce an error - Install sale_management and create a new field with the below detail -…
Currently an error is generated when the user tries to create or write fields
with wrong domain.
Steps to produce an error
- Install sale_management and create a new field with the below detail
- Model: `Sales order`
- Field Type: `one2many`
- Related Model: `sale.order`
- Relation Field `partner_id`
- Domain: `[('sale_order_id', 'in', sale_order_ids)]`
- Click on save
This error occurs because we have a constraint in the domain, and it is triggered
when the user modifies the domain at code line [1]. Inside this constraint, we use
`safe_eval` to evaluate the domain. During this evaluation, an error is raised because
the user entered an incorrect domain.
This commit fixes the above issue by wrapping `safe_eval` inside a `try–except`
block and raising a `ValidationError` with an appropriate message when an error occurs during domain evaluation.
[1]- https://github.com/odoo/odoo/blob/e4e2dca73213c33c487033dd404a7ca335960a66/odoo/addons/base/models/ir_model.py#L651-L654
sentry-6964956583
Forward-Port-Of: odoo/odoo#237937
Forward-Port-Of: odoo/odoo#236891This fix resolves an issue where the website page URL input field would become unstable with slow connections, causing data loss. It also corrects a related problem where the 'Redirect Old Url' element wasn't hidden when reverting to the original URL. The update ensures a smoother and more reliable user experience when editing website pages.
Original PR description
Scenario: - edit a website page (eg: /test that you create) - go to Site > Properties - have a slow connection and write in field "Page URL" for some seconds Result: the input jitter, if going too…
Scenario: - edit a website page (eg: /test that you create) - go to Site > Properties - have a slow connection and write in field "Page URL" for some seconds Result: the input jitter, if going too fast the text can be removed to get previous version. Secondary issue: if we cancel our change and set back the original URL, the "Redirect Old Url" part is not hidden. Reason: we trigger onchange at each input event, so if we write 20 letters we will possibly still have 20 onchange that are ongoing and will set back older version of the field value. The secondary issue is because we are using a field using useInputField and FieldUrl but we are hacking it to remove the "/" prefix inside the input. So when the invisible modifier is checked, we check eg. "old_url=/test" against "url=test" that are always different. With this fix: Since the triggered onchange were only to update quicker the condition `invisible="old_url == url"`, we trigger them only if that condition will change, and debounce it to prevent the now single onchange of happening in the middle of text input. And for the secondary issue, we add and remove the / when triggering the onchange. opw-4517181 Forward-Port-Of: odoo/odoo#238544 Forward-Port-Of: odoo/odoo#200016
This update resolves an issue where animation options would unexpectedly reset when re-selecting text within the website builder. The fix normalizes text formatting to ensure consistent comparisons, preventing incorrect mismatches and maintaining the intended animation state. This improves the user experience and stability of the website builder.
Original PR description
Steps to reproduce: case 1: 1. Select all text in the footer. 2. Apply an animation (e.g. slide). 3. Re-select the same text (e.g. by triple-clicking or drag-selecting). 4. Observe that the animation…
Steps to reproduce: case 1: 1. Select all text in the footer. 2. Apply an animation (e.g. slide). 3. Re-select the same text (e.g. by triple-clicking or drag-selecting). 4. Observe that the animation option resets unexpectedly. Case 2: 1. Select all text in a paragraph. 2. Apply a text highlight. 3. Re-select the same text (e.g. by triple-clicking or drag-selecting). 4. Apply an animation (e.g. on scroll). 5. Re-select the same text again. 6. Observe that the animation option resets unexpectedly. Cause: The previous comparison between `selection.textContent()` and `ancestor.innerText` did not account for differences in whitespace and formatting, leading to false mismatches even when the selected and ancestor text appeared identical. Fix: Normalized both the selection and ancestor text by collapsing multiple whitespace characters and trimming leading/trailing spaces before comparison. This ensures that visually identical text is treated as equal, maintaining the animation option state when re-selecting the same text. Forward-Port-Of: odoo/odoo#227780
This update corrects a bug in the vehicle availability calculations for the l10n_be_hr_payroll_fleet module. It now accurately excludes vehicles flagged for change (plan_to_change_car or plan_to_change_bike) with a 'False' status, ensuring they are correctly marked as unavailable. This prevents incorrect vehicle availability reporting.
Original PR description
Refine _get_available_vehicles_domain to consider only vehicles with plan_to_change_car or plan_to_change_bike set to True as available. This ensures vehicles planned for change but marked False are treated as unavailable. Related task: 4963484. Forward-Port-Of: odoo/enterprise#101266 Forward-Port-Of: odoo/enterprise#90812
This update resolves an issue preventing bank statement creation when the chart of accounts isn't properly configured. The fix ensures the system correctly identifies and associates accounts with bank statements, preventing a syntax error and improving the reliability of bank statement processing.
Original PR description
**Steps to Reproduce:** 1. Install the **Accounting** module without demo data. 2. In "**Chart of Accounts**", change the type of all accounts (e.g.; Expenses). 3. In "**Bank**" Journal, create a new bank statement line and try to save it. **Error:** ``` SyntaxError - syntax error at or near ")" LINE 19: AND aml.account_id IN () ``` **Cause:** A **IN** condition is evaluated with an empty tuple `AND aml.account_id IN ()`. This is due to that there are no `account_ids`. **Fix:** This commit ensures that the SQL query is executed only when there are remaining statement lines and valid account IDs to process. If either is missing, the method now returns early and updates `cron_last_check`. sentry-7059353053 Forward-Port-Of: odoo/enterprise#100459
This update fixes a reporting issue where journal items weren't correctly linked to the associated account groups. The fix ensures that reports accurately display the correct financial items for each group, improving the accuracy of financial reporting. This resolves a data discrepancy impacting financial analysis.
Original PR description
Repro steps: 1. Create account groups 2. Go to general ledger report 3. Click on 'Journal Items' of one of the account groups lines Problem: The journal items shown don't belong to the account group that it should belong to. Fix: This commit fixes this issue by adding the correct action_domain of account_id.group_id. opw-5180867 Forward-Port-Of: odoo/enterprise#100191
This update corrects a bug in the aged receivable report that prevented accurate data display when invoices lacked a due date. The fix ensures the report correctly identifies outstanding invoices by aligning the date comparison logic, resolving a discrepancy between the report query and the filtering method.
Original PR description
step to reproduce: - create a invoice and confirm it - remove due date from it and save it - ensure the confirmed invoice do not payment term or due date - open aged receivable report - open this…
step to reproduce: - create a invoice and confirm it - remove due date from it and save it - ensure the confirmed invoice do not payment term or due date - open aged receivable report - open this entry <img width="1599" height="238" alt="image" src="https://github.com/user-attachments/assets/010f97f4-0d50-4e5a-9366-ae67d17e2bb7" /> Observation: - on clicking the entry, when redirected to list view, there are `0` records. Issue: - The query which is used to display data on report uses `COALESCE(account_move_line.date_maturity, account_move_line.date)` https://github.com/odoo/enterprise/blob/ffc329e4ff2bd6512164ecd4206210fd5c9264b9/account_reports/models/account_aged_partner_balance.py#L222-L226 - while the method `_build_domain_from_period` uses only `date_maturity` in domain redirecting to list view - This creates inconsistencies between two. https://github.com/odoo/enterprise/blob/ffc329e4ff2bd6512164ecd4206210fd5c9264b9/account_reports/models/account_aged_partner_balance.py#L383-L394 opw-5237298 Forward-Port-Of: odoo/enterprise#99883
This update ensures that bills received through the PEPPOL network are automatically posted to the accounting system, even when auto-post functionality is enabled for the partner. Previously, these bills remained in a draft state, requiring manual processing. This change streamlines the billing process and improves efficiency.
Original PR description
Currently, even if a partner has auto-post bills enabled, the incoming bills stay in the draft state. This change addresses that issue. Task-5373302 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#238473
This update ensures that a checkered background is consistently displayed in the color preset preview area, regardless of whether a gradient or custom color is selected. Previously, custom colors lacked this visual indicator of transparency. This improves the user experience when customizing website themes.
Original PR description
[*]=html_builder Steps to reproduce: 1. Go to website and click edit. 2. Switch to the _Theme_ tab and click on _Color Presets_. 3. Click on first color preset, then open the background color picker.…
[*]=html_builder Steps to reproduce: 1. Go to website and click edit. 2. Switch to the _Theme_ tab and click on _Color Presets_. 3. Click on first color preset, then open the background color picker. 4. Switch to gradient tab, select any gradient, and adjust the opacity. 5. Now, click on second color preset, open the background color picker. 6. Switch to the custom tab, select any color, and adjust its opacity. Issue: When a gradient is selected (first color preset), the color preset preview area correctly displays a checkered background to indicate transparency. However, when a plain custom color is selected (second color preset), the checkered transparency background is missing from the color preset preview area. Fix: Set the value of `--PreviewAlphaBg-background-size` variable as `32px`. Moreover, extended the `%o-preview-alpha-background` placeholder in the `color_picker_theme_tab.scss` file to ensure the checkered background is consistently applied for both gradient and custom color selections. | Before | After | |-----------------------------|---------------------------------| | <img width="363" height="308" alt="image" src="https://github.com/user-attachments/assets/dbb64116-70d6-4475-9d41-90c0b591efcd" /> | <img width="363" height="308" alt="image" src="https://github.com/user-attachments/assets/ea8caa90-3518-4219-a980-a2a22f2f427d" /> | task-5226064 Forward-Port-Of: odoo/odoo#234083
This update fixes a potential issue where users could inadvertently modify approval requests, leading to unpredictable system behavior. The change prevents any edits to approval requests, ensuring data integrity and stability within the approval workflow. This resolves a technical concern that could have impacted the reliability of the system.
Original PR description
There is no legitimate use case that should modify the approval request. This would result in unexpected behaviour. task-5269982 Forward-Port-Of: odoo/enterprise#101132 Forward-Port-Of: odoo/enterprise#100273
This update corrects a technical issue in the l10n_dk_nemhandel module by ensuring that Denmark-specific document type checks are applied only to Danish partners. This prevents conflicts with standard Peppol processes and ensures consistent data flow, improving the stability of the system.
Original PR description
Before: - The l10n_dk_nemhandel override of _check_document_type_support replaced the generic Peppol logic and did not accept process_type, causing errors when other localizations relied on the base method. After: - Aligned the method and applied the DK-specific logic only for Danish partners, falling back to the generic Peppol behavior otherwise. Impact: - Prevents unintended overrides towards standard Peppol flow. Forward-Port-Of: odoo/odoo#238543
This update corrects a technical issue that caused duplicate reversal and deferral entries to be created when generating deferred entries from invoices. The fix ensures that deferral periods are calculated correctly, reducing unnecessary noise in financial reports and improving data accuracy. This change primarily impacts the account accounting module.
Original PR description
When generating deferred entries from invoice lines, certain scenarios led to the creation of both a reversal and a deferral for the same amounts. These entries would effectively cancel each other out, creating unnecessary noise in the journal entries. This issue primarily occurred when the start date, end date, and accounting date all fell within the same calendar month. The problem was exacerbated by the introduction of the `full_months` computation method in https://github.com/odoo/enterprise/commit/5dca9c0c2691cba2335e110ad63a2dcc8bbf6d57. To correctly handle this method and prevent the erroneous paired entries, the end date must now be adjusted by subtracting one month when calculating the deferral period. opw-5000337 Forward-Port-Of: odoo/enterprise#101258 Forward-Port-Of: odoo/enterprise#100507
This update corrects a visual issue where the activity badge within the bank reconciliation widget was misaligned. The fix removes unnecessary styling code, ensuring the badge now correctly aligns with the icon. This improves the user experience and visual consistency of the bank reconciliation feature.
Original PR description
Current behavior before PR: The activity badge inside the bank reconciliation widget was misaligned, <img width="55" height="60" alt="image" src="https://github.com/user-attachments/assets/0f99ea55-fedd-401a-a65e-226296070e32" /> Desired behavior after PR is merged: The activity badge now sits in the correct position on the icon. <img width="62" height="55" alt="image" src="https://github.com/user-attachments/assets/abf96aed-73d4-4153-8e0a-56937d4ff08a" /> Changes implemented: - Removed `fa-fw` class. - Removed the unnecessary 'fa-fw' class from comment and paperclip icon. task-5354994 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/enterprise#100573
This update enhances the clarity of test error messages by including the specific URL being requested during fetch operations. This helps developers quickly identify and resolve difficult-to-reproduce issues, leading to faster bug fixes and improved stability.
Original PR description
Prior to this commit, when a fetch occured during a test at a timing where `mockedFetchFn` was already cleaned, the resulting error message did not give a clue as to what request was attempted. In order to help investigations of difficult to reproduce non-deterministic errors, the url "input" is now also provided.
This update resolves an issue where switching between different media types (like images and icons) in the HTML editor didn't correctly remove outdated class names. This ensures that the HTML editor consistently uses the appropriate classes for each media type, improving the user experience and preventing potential display problems. It's a minor fix for internal consistency.
Original PR description
Before this commit, switching the media type would not properly remove the classes of the element. For example, images can have the class "w-100" while icons cannot. If an image had the class "w-100", switching to an icon would keep the class "w-100", even though this class isn't valid for icons. This commit fixes the code to properly remove all invalid classes. Forward-Port-Of: odoo/odoo#238501
This update ensures Odoo automatically updates remaining modules in the database, regardless of how Odoo is started. Previously, this only worked when Odoo was launched with specific command-line arguments. This change adds a configuration setting to trigger the automatic update process, improving database consistency and preventing potential issues.
Original PR description
In https://github.com/odoo/odoo/pull/216025, we force auto upgrade of modules remaining in the database when `preload_registries` is called. However, this strategy doesn't work if Odoo is not started with the `-d` argument, because `preload_registries` is only called for databases specified in the `-d` argument. This commit fixes the issue by adding a special record in `ir_config_parameter` with key `base.partially_updated_database` to indicate that the next time `Registry.new` is called, it should force auto upgrade of modules remaining in the database. 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#238785 Forward-Port-Of: odoo/odoo#238320
This update allows non-administrator users to validate return requests, previously blocked by access restrictions. The change simplifies the return process by removing a technical hurdle, though preventative checks could still be implemented. This is a functional improvement designed for ease of use.
Original PR description
Before this fix, trying to validate a return with lesser accounting rights than admin raised an access error, stating that the user could not revoke lock date exceptions (whether such exception existed or not). The function used to revoke exceptions was called with sudo(), with the intent of bypassing any such check, but it relied on checking the user group, which sudo() has no impact on. We just patch the condition so that calling the function with sudo() does not block anymore, and revokes the exceptions as expected. Note that this means a non-admin user could revoke a lock date exception set by an admin this way. This is a functional choice, to make the flow easier for everyone. In practice, such a situation could be prevented by checks, and just regular communication and work processes between users.
This update corrects a bug where an extra 'Sign' breadcrumb remained after users completed document signing, leading to confusing navigation. The fix ensures users are correctly redirected back to the original record without being looped back into the sign flow, improving the user experience.
Original PR description
Issue:
- After signing a document, the user is redirected to the correct
record form (e.g., Offer, Invoice) but an extra "Sign" breadcrumb
remained in the navigation.
- Clicking that breadcrumb sent the user back into the sign flow,
creating confusion and breaking the expected navigation behavior.
Fix:
- Updated the close flow in the thank you dialog to use
`stackPosition: "replacePreviousAction"` when a reference document
exists, ensuring the sign dialog controller is removed cleanly.
- Fallbacks use `clearBreadcrumbs` when no reference document is
linked (standalone sign documents).
- This restores correct breadcrumb generation across all sign flows.
Impact:
- Users return to the proper parent record without leftover sign
breadcrumbs.
- Prevents unexpected navigation back into the sign request.
Task: 5175992
Forward-Port-Of: odoo/enterprise#99525This update resolves an issue preventing the monthly payroll summary report from generating accurately. The fix involved correcting how the report template accessed company information, ensuring correct data is displayed. This ensures accurate financial reporting for payroll data.
Original PR description
Step to Reproduce: - install l10n_ch_hr_payroll with demo - create a employee - create a payslip for it, move it to paid stage. - go to Reporting > Monthly summary and generate summary for same period/month Observation: - traceback for faulty template Fix: - After this commit [1] `t-call` is now parametric and cannot not accept its child variables. - to fix this, we pass set res_company for company variable [1] https://github.com/odoo/odoo/commit/eb6e88a25050fff2bd09317739dd51ba451450df opw-5243792
This update ensures that the total account return balance is always displayed when it differs from the current period amount. Previously, this information was only shown if the return amount was lower. This change provides a more complete and accurate view of account return data.
Original PR description
When this https://github.com/odoo/enterprise/pull/91886 got merged, It removed the accumulation of the balance in the return amount. Showing only the amount of the current period. Additionally, the total amount was shown if the amount was different. But, it was only being shown if it was less than the current period amount. The fix ensures it is always shown if the amount is different. task-5172274
This update fixes an issue where short feedback messages were incorrectly wrapping the last word, causing a messy layout. The change ensures that feedback messages display cleanly, particularly when paired with floating rating images, resulting in a better user experience. This resolves a visual inconsistency.
Original PR description
**Current behavior before PR:** - Short feedback wraps the last word unnecessary.  **Desired behavior after PR is merged:** - Short messages wrapped unnecessarily due to block-level element conflicting with floated rating image. This fix ensures cleaner inline layout.  task-[4788428](https://www.odoo.com/odoo/project/1519/tasks/4788428) --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#238180 Forward-Port-Of: odoo/odoo#215577
This update addresses a technical issue where form changes were causing confusing error messages. The fix adds a fallback to capture more information about these errors, providing better diagnostics for developers. This improves the stability and reliability of Odoo forms.
Original PR description
Related to https://runbot.odoo.com/odoo/error/234669: somewhere somehow an onchange warning is malformed (it's not a mapping) and the Form is unable to cope with it, leading to a rather unhelpful error. TBH I don't understand how it can happen as `onchange` has a rewriting layer between the `warning` out of onchange methods and the one it sends to the client. And most of the `onchange` overrides are preprocessing not post. And the two overrides which do postprocess modify `values` in place. Add a fallback to attempt to get more insight into this error. Forward-Port-Of: odoo/odoo#238705
This update resolves an issue where the 'Returns' button in the tax report was failing due to a misunderstanding of company branch selection. By making the button 'branch_allowed', it now correctly checks for all companies within the branch hierarchy, allowing users to generate returns accurately.
Original PR description
To reproduce the issue: - Create a company with a branch - Give the company and its branch different VAT numbers - Make sure both companies have an opening date, so that they generate returns - Make both companies active in the company selector - Open the tax report - Click on the "Returns" button ===> The following error is raised: "Please select the main company and its branches in the company selector to proceed." This is because the tax report's options only consider one of the two companies (because they have different VAT numbers). The button is not declared as branch_allowed, so when clicked, it checks whether all the companies of the branch hierachy are in the options => they're not => error. We can fix this by simply making the "Returns" button branch_allowed. task-5369592
This update resolves an issue where sorting pivot dimensions in the MRR Breakdown report was not functioning correctly after the introduction of grouping sets. The fix ensures that all dimensions are properly included in the sorting process, allowing users to accurately sort data by Salesperson or other dimensions.
Original PR description
Since the introduction of grouping sets, the order of dimensions was incorrect as soon as an order was set on a dimensions: all the dimensions without order were ignored. Steps to reproduce: - Go to Subscriptions > Reporting > MRR Breakdown - Go the pivot view and group by Event Date and Salesperson - Insert in spreadsheet - Replace all the static formulas by a dynamic PIVOT(1) - Sort the Salesperson dimension by "Descending" => the dates are not sorted This commit fixes the issue by ensuring that all dimensions are included in the order parameter sent to the backend. Task: 5263233 Description of the issue/feature this PR addresses: Current behavior before PR: Desired behavior after PR is merged: --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This update resolves an issue that caused payslips to fail to generate due to missing data within the system. The fix uses a safer method to access dictionary values, preventing errors when keys are absent. This ensures more reliable and consistent payroll processing.
Original PR description
Bug: When generating payslips, there is a traceback with keyerror. Cause: We were getting info from a dict but keys could be not present. Fix: Use get instead, with a default value. Forward-Port-Of: odoo/enterprise#99921 Forward-Port-Of: odoo/enterprise#99245
This update corrects a bug where 'Other Activities' were incorrectly grouped, leading to inaccurate counts in the systray menu. By separating these activities, the system now correctly identifies and displays overdue, today, and planned activities, ensuring users have a precise view of their tasks.
Original PR description
Activities without a resource model (displayed as "Other Activities") were previously grouped together. This caused the counter logic, which splits activities into 'overdue', 'today', and 'planned', to fail. It would evaluate the entire group of activities and assign all of them to the first state it encountered (e.g., all 5 activities would be marked 'overdue' even if only 1 was). This commit changes the grouping key for these "mail.activity" records so that each "Other Activity" is processed individually, allowing its state to be correctly counted and displayed in the systray menu. Task-5226403 Forward-Port-Of: odoo/odoo#234899
This update resolves a visual issue in the mobile preview where a shadow appeared around the device image, particularly at the corners when the screen size was large. The fix ensures the image's border-radius aligns correctly, resulting in a cleaner and more professional appearance for mobile users. This improves the overall user experience on larger mobile devices.
Original PR description
This PR aims to fix an issue about the shadow around the device in the mobile preview, specifically in the corners, when the height of the viewport is bigger than 1080px. Prior to this, the border-radius property was not correctly aligned with the radius of the mobile device image (in `.o_mobile_preview_layout`). | Before | After | |--------|--------| | <img width="468" alt="image" src="https://github.com/user-attachments/assets/1d8aaba4-2e8f-45fd-a6b8-853c82051a51" /> | <img width="468" alt="image" src="https://github.com/user-attachments/assets/b3a10e9b-ac53-429d-8780-a03120316df4" /> | task-4795450 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#214853