Monday, March 2, 2026
29 changes · master
Resolved issues and error corrections
POS receipts now show the correct tax label when a fiscal position changes the tax rate, such as replacing 21% with 6%. This helps customers and businesses see consistent receipt information that matches the tax actually applied.
Original PR description
Steps: - Install l10n_be_pos_restaurant. - Create a restaurant POS configuration with presets. - Assign a fiscal position to one preset that replaces 21% tax with 6%. - Open a POS session and process an order using that preset. Issue: - The POS receipt still displays the 21% tax's tax group label, even though the 6% tax is correctly applied. Cause: - Fiscal position was not taken into account when computing the tax group label for POS receipt orderlines. Fix: - Apply the fiscal position when determining the POS receipt tax group label. Task-5899938 Forward-Port-Of: odoo/odoo#251136 Forward-Port-Of: odoo/odoo#248571
Fixes an issue where rotating or transforming an image in the website editor could slightly shrink it when the surrounding layout had padding. Image transformations now preserve the intended size and correctly create an undo step, making editing more predictable for website users.
Original PR description
**Current behavior before PR:** Steps to reproduce: - In website, drag and drop a `text - image` snippet. - Click on image, click on Transform button. - Try to rotate the image. - You will notice that the size of the image is reduced a bit. This issue happens because in `image_transformation.js`, `convertPixelWidthToPercentage` converts image width from `px` to percentage. In this case image's parentElement has padding, causing reduction in image's size. **Desired behavior after PR is merged:** This PR ensures that `paddingLeft` and `paddingRight` of image's parentElement is ignored from calculation so that image size doesn't get changed. task-5884679 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#251130 Forward-Port-Of: odoo/odoo#246508
The HTML editor no longer crashes when users insert columns from inside a list item. Lists are now split safely around the new column content, preserving editing continuity and preventing lost workflow.
Original PR description
Problem: When trying to add a column under a list item, a traceback occurs. Cause: The list item is removed during the operation, but the selection that is restored still references the removed list item. As a result, the selection is restored on a disconnected element, causing a traceback. Solution: Handle column insertion inside lists separately. In this case, according to the specifications, we split the list and insert the columns between the resulting lists (or after the list if the cursor is in the last list item). This avoids restoring the selection on a removed node. Steps to reproduce: - Add any list. - Run `/column` while the cursor is inside a list item. - Observe the traceback. task-5916246 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#250847 Forward-Port-Of: odoo/odoo#248206
Email Marketing test sends now fully clean up their temporary messages. This prevents confusing removed-message notices from appearing on contact records after a test email is sent.
Original PR description
**Steps to reproduce:** - Go to Email Marketing app - Create a mailing campaign - Set its recipients to Contact - Click on the test button to send a test mail to any mail - Go to the first contact…
**Steps to reproduce:**
- Go to Email Marketing app
- Create a mailing campaign
- Set its recipients to Contact
- Click on the test button to send a test mail to any mail
- Go to the first contact record
- Chatter will show `This message has been removed` message
**Issue:**
Previously, message created for testing were ignored by the Chatter as they were empty. As we now keep empty messages visible but with removed content display, they shows up on related records.
```py
record = self.env[mailing.mailing_model_real].search([], limit=1)
```
**Fix:**
Ensure the related messages are unlinked at the same time as the test mail in `send_mail_test` by setting `is_notification` to `False` to trigger the `unlink` logic.
```py
def unlink(self):
# cascade-delete the parent message for all mails that are not created for a notification
mail_msg_cascade_ids = [mail.mail_message_id.id for mail in self if not mail.is_notification]
res = super(MailMail, self).unlink()
if mail_msg_cascade_ids:
self.env['mail.message'].browse(mail_msg_cascade_ids).unlink()
return res
```
related: https://github.com/odoo/odoo/commit/21f92550f83cbd38df2c223c65c61bd16dc8e2b0
opw-5502787
Forward-Port-Of: odoo/odoo#250951
Forward-Port-Of: odoo/odoo#247805Resource avatar fields now appear in activity views with the same visual rendering used in kanban views. This makes activity screens more consistent and easier to read when selecting or reviewing assigned resources.
Original PR description
This commit adds `activity.many2many_avatar_resource` in the registry to be able to have the same render than kanban view in the activity view. task-5921961 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#250867
A redundant styling rule was removed from the web module because the same behavior is already provided by the underlying Bootstrap framework. This keeps the codebase cleaner and reduces the chance of future styling conflicts, with no expected change for users.
Original PR description
Before this commit, a `.user-select-none` CSS rule was present in a file intended to only contain variable definitions. Plus, Bootstrap already provides this utility class natively, making the declaration entirely redundant. This commit removes the said rule from bootstrap_overridden.scss task-5952407 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
The Guatemala localization now includes a required supporting component so its city data can load correctly. This prevents installation or update issues for businesses using the Guatemala localization.
Original PR description
This reverts commit 728465e0a4a9b651dd6e1059bd4788b0c13e2a52. The model `res.city` is defined in `base_address_extended` which isn't in `l10n_gt` dependencies. runbot-241066 Forward-Port-Of: odoo/odoo#250606
Point of Sale receipts for GCC localization now show key invoice labels in Arabic when Arabic is selected as the user language. This creates a more consistent customer receipt experience and avoids English text appearing in otherwise Arabic receipts.
Original PR description
Problem: When printing a receipt in arabic using the l10n_gcc_pos module, some of the text is in English. Cause: Translation is not enabled for the module and the text is written in English only in the receipts XML. Solution: Add the arabic translations of texts to the receipts XML and choose the display language based on the user's language (same behaviour in other receipts). Steps to reproduce: - Install l10n_gcc_pos module - Activate and choose Arabic as the language - Open Point of Sale and validate an order - See how some text (specifically "Tax Invoice" and "Simplified Tax Invoice") are printed in English although the rest of the receipt is printed in Arabic. opw-5501464 Forward-Port-Of: odoo/odoo#250177 Forward-Port-Of: odoo/odoo#245795
This fixes a visual issue in the mail call interface where active buttons in light mode did not show clear feedback. Users can now more easily tell which call action is selected, making the interface clearer and more consistent.
Original PR description
In light mode, the call view uses the same color palette than in dark theme. To do so, buttons are tweaked to force dark colors. However, active styles are not properly tweaked, leading to a lack of visual feedback for active buttons. This commit ensures the same styles than in dark theme are applied. task-5969686 <img width="304" height="73" alt="image" src="https://github.com/user-attachments/assets/d6ef089b-aba1-4fff-a7d5-f450ff345279" /> Forward-Port-Of: odoo/odoo#250731 Forward-Port-Of: odoo/odoo#250644
Regular accounting users can now open the accounting dashboard when the Turkish Nilvera e-invoicing module is installed. The change prevents a permissions error caused by dashboard checks reading restricted e-invoice settings, improving daily access without changing accounting workflows.
Original PR description
…nting dashboard # How to reproduce - Add the l10n_tr_nilvera module - Have at least one journal - Connect with a non-admin user - Go to the accounting dashboard # The problem An access right error message is displayed # Why When going to the accounting dashboard, both "_compute_show_fetch_in_einvoices_button" and "_compute_show_refresh_out_einvoices_status_button" are triggered. They both try to access the nilvera api key field of account.journal but only administrator users have access to that field. opw-5928715 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#249425
This update ensures that check printing accurately reflects the net payment amount after withholding taxes. Previously, the check amount didn't correctly account for withholding, leading to potential discrepancies. A new test case has been added to verify this fix.
Original PR description
In Philippines' check localization module, the amount on check should be based on the net amount after deducing withholding amount for payments if the payment is with taxes that are set as withholding on payment. This commit fixes the check print's values to reflect the net amount. Minimal test case is also added to safeguard the new behavior. [Task-5928813](https://www.odoo.com/odoo/all-tasks/5928813) Forward-Port-Of: odoo/enterprise#108859 Forward-Port-Of: odoo/enterprise#108611
This update resolves an error that occurred when users attempted to initiate the Colombian Electronic Invoicing certification process without a valid certificate. The fix prevents a traceback by ensuring the system handles the case where no certificate is found, improving the user experience and preventing process interruptions.
Original PR description
When no certificate is found in the company, clicking on ``Begin Certification Process`` raises a traceback. Steps to reproduce the error: - Install ``l10n_co_dian`` module with demo data - Switch to the CO Company - Go to Invoicing > Configuration > Settings > Colombian Electronic Invoicing - Set the Testing ID for Operation mode - In Certificates, delete the existing certificate - Click on Activate the certification process > Begin Certification Process > Ok Traceback: ```py UnboundLocalError cannot access local variable 'cert_sudo' where it is not associated with a value ``` https://github.com/odoo/enterprise/blob/6294be57cf1aa577ec546a958514bc8ec6705935/l10n_co_dian/models/account_edi_xml_ubl_dian.py#L1459 The variable ``cert_sudo`` is used outside of the for loop. If no certificate is found, ``cert_sudo`` will be undefined, leading to the UnboundLocalError. sentry-7256943298 Forward-Port-Of: odoo/enterprise#107094
This update clarifies the help text within the Odoo Enterprise payroll module. A previously inaccurate statement was removed to ensure users receive correct information. This change improves the overall usability and accuracy of the payroll functionality.
Original PR description
the last sentence is not always the case so we needed to remove it. task-5423317
This update addresses a recent issue causing tour navigation failures within the Industry FSM modules. The problem stemmed from a removal of a step in a tour file, specifically impacting 'patched tours'. This fix ensures tours function correctly, improving the user experience for those utilizing Industry FSM.
Original PR description
This commit fixes the tours that were failing in `industry_fsm` and `industry_fsm_sale`. The root cause was because of the removal of some step in `industry_fsm_tour`, which is used in patched tours. task-5945991
This update fixes an error in the Spanish Profit & Loss reports where accounts 7950 and 7957 were incorrectly placed in section 10. The change aligns with official Spanish tax documentation, ensuring accurate reporting for non-SME fiscal localization packages. This ensures compliance with Spanish tax regulations.
Original PR description
In the Profit & Loss reports, accounts 7950 and 7957 were incorrectly shown in section 10 instead of section 6 These accounts appear only for non-SME fiscal localization packages According to the official Spanish tax documentation, these accounts should belong to section 6 and not section 10: https://www.boe.es/buscar/act.php?id=BOE-A-2007-19884 opw-5363664 Forward-Port-Of: odoo/enterprise#108820 Forward-Port-Of: odoo/enterprise#107949
This update fixes a minor typo in the Helpdesk result page related to date formatting. The change ensures consistent display of helpdesk items. This was necessary following a recent update to the Odoo system.
Original PR description
Before this commit and since the merge of https://github.com/odoo/odoo/pull/156878, `date_published` has been replaced by epublished_date` field but the changes have not been made in website_helpdesk_slides module. This commit replaces `date_published` occurrences by `published_date`. task-[5945377](https://www.odoo.com/odoo/project/4105/tasks/5945377) Forward-Port-Of: odoo/enterprise#108253
This update fixes a bug where scrap orders created from the shopfloor didn't trigger notifications. The change ensures that users receive a confirmation message when a scrap order is successfully registered, improving workflow visibility. This resolves an issue reported previously and ensures consistent notification behavior.
Original PR description
Issue before this commit: ========================= Creating a scrap order from the shopfloor does not show any notification after it is created, which was shown in the previous version. Steps to…
Issue before this commit: ========================= Creating a scrap order from the shopfloor does not show any notification after it is created, which was shown in the previous version. Steps to Reproduce: ========================= - Install the mrp_workorder module. - Create a Manufacturing Order for any product (e.g. [FURN_7023] Wood Panel). - Open the shopfloor view. - Click the three-dot menu to access more options. - Create and confirm a scrap order. - No acknowledgement/notification is shown to the user. Cause of the issue: ========================= The method responsible for triggering the notification was renamed in [this PR](https://github.com/odoo/enterprise/pull/85706), but the notification condition was still referring to the old method name. As a result, the notification was never triggered. With This Commit: ========================= Align the method name used in the notification condition so that, when a scrap order is created from the shopfloor, the user correctly receives the notification: `The scrap order has been successfully registered.` Community PR: https://github.com/odoo/odoo/pull/250024 Task: 5958933 Forward-Port-Of: odoo/enterprise#108259
This update resolves issues with the Belgian XBRL report, specifically correcting inaccurate translations and removing irrelevant company types. The changes enhance the report's data quality and compliance, ensuring more reliable financial reporting.
Original PR description
This commit fixes several issues in the Belgian XBRL report. - Values in report like "false" were being wrongly translated. - Not all company types are valid/relevant. Removed invalid company types. task-5907118 Forward-Port-Of: odoo/enterprise#108556
This update fixes an issue where employees without recorded leave time were not visible in the Gantt view. Now, all employees will be displayed, ensuring a more complete and accurate representation of the workforce. The change improves usability and provides a clearer picture of employee availability.
Original PR description
When going on *Time Off / Management / Time Off > Gantt view*, employees without records (i.e.: leaves) would not be shown. This PR aims to display those employees without records, even supporting any eventual will to paginate the gantt view. To ensure intuitivity, those recordless employees are shown only if the domain passed to the gantt only filters based on fields related to `employee_id`. task-5477588
This update fixes a bug in the pipeline dashboard where one of the lists wasn't correctly matching data. This ensures that all sales opportunities are accurately displayed and tracked within the dashboard, providing a more reliable view of sales performance. The change was made to improve data accuracy and reporting.
Original PR description
…oard Field matching was missing for the list #1 in the pipeline dashboard. Task: 5092979 Forward-Port-Of: odoo/enterprise#107516
This update corrects an issue where work entries weren't being generated when multiple resource calendar attendances were adjacent. The fix prevents consecutive attendances from being combined, ensuring accurate work entry creation, particularly for credit time entries. The change was driven by a bug discovered during testing and incorporates previously removed tests for comprehensive coverage.
Original PR description
When you have two resource calendar attendances that are stuck together, and you generate work entries, the second one doesn't appear: Bug is caused when having two attendances stuck together: In a resource.calendar, change the time of a resource.calendar.attendance to finish at 15.36 and create a new one that begins at 15.36 and finished at 16.36 with a work entry type of Credit time. Go and regenerate work entries and you can see that no work entries are generated for credit time. Fixed by adding keep_distinct in an interval to not fuse them together. Also added extra checks to another test to not pass with incorrect values. task-5894994 Forward-Port-Of: odoo/enterprise#109050 Forward-Port-Of: odoo/enterprise#105981
This update fixes an issue where SII invoices weren't being generated correctly, preventing successful electronic submission. The change updates XML tags related to withholding taxes to align with SII's specific invoice format requirements. This ensures invoices are properly validated and accepted by the SII system.
Original PR description
Link to SII API Documentation: https://www.sii.cl/factura_electronica/formato_dte.pdf Problem: The DTE template was using incorrect XML elements for withholdings when confirming an invoice with SII. This fix replaces: ImptRetOtrMnda -> ImpRetOtrMnda ValorImpOtrMnda -> VlrImpOtrMnda so the generated DTE matches SII specifications. OPW-5437484 Forward-Port-Of: odoo/enterprise#105152
This update fixes a technical error that prevented users from successfully using commands within Odoo's AI chat channels (like '/help'). The issue stemmed from an undefined 'message' response during command execution, now resolved through a code update. This ensures a smoother experience for users interacting with the AI features.
Original PR description
When trying to use commands (for example '/help') in 'ai_chat' channels, an error occurrs. This happens because the 'message' returned from Thread.post method is undefined in that case. Forward-Port-Of: odoo/enterprise#107655
This update resolves an issue where the PIS status field on batch payments wasn't updating correctly after a refresh. The fix ensures the correct database ID is used when fetching the status, now allowing accurate status updates for SEPA credit transfers and similar payments.
Original PR description
When clicking the refresh button next to the PIS status field on a batch payment (e.g., paid with SEPA credit transfer), the status is cleared and no new value is set. This occurs because `onClickFetchStatus` makes an ORM call to fetch the status using `this.props.record.data.id`, which is `undefined`. This commit fixes the issue by correctly using `this.props.record.resId` to pass the database ID to the RPC call. no task-id Forward-Port-Of: odoo/enterprise#108927
This update resolves a traceback issue that occurred when reloading the Studio page after opening the product catalog. The change creates a proper action, ensuring the Studio page loads correctly and prevents errors when toggling debug mode or refreshing.
Original PR description
*planning_field_service_sale_timesheet Steps to reproduce: - In Field Service, open the product catalog from a task using state button. - Open Studio - Enable/Disable debug mode or just refresh the page traceback occurs. After this commit: Created the real action so in studio refresh the action loads properly. This prevents the traceback when reloading the page or toggling debug mode. task-5478056
This update resolves a problem where tests were failing when the system used the EUR currency alongside the default USD currency. The fix ensures the USD currency is always active, making the tests more reliable and preventing unexpected errors. This improves the stability of the account invoice extraction feature.
Original PR description
When the tests are run with all modules installed and demo data, some of them fail. One of the other modules activates the EUR currency, which causes the OCR to select it instead of leaving the default USD currency. - Test `test_bank_account` fails because, when the `currency_id` field is set, it triggers a re-computation of `partner_bank_id` which will reset its value to `False`. Runbot build error [240759](https://runbot.odoo.com/odoo/runbot.build.error/240759). - Test `test_invoice_ocr_note_author` fails because it's not expected that the `currency_id` is modified and logged in the tracking message. Runbot build error [238512](https://runbot.odoo.com/odoo/runbot.build.error/238512) (only in saas-19.2 and up, but it is mentionned here as the fix is the same). To make the tests more reliable, we now ensure only the USD currency is active. Forward-Port-Of: odoo/enterprise#108991 Forward-Port-Of: odoo/enterprise#108770
This update fixes an issue where the legal name displayed in the payroll module for Chinese employees was not accurately calculated. The change ensures that the correct legal name is used, complying with local regulations and improving data accuracy for reporting and compliance purposes. This update impacts the HR Payroll module.
Original PR description
task-5979726 Forward-Port-Of: odoo/enterprise#109037
This update ensures self-order transactions in the Odoo Enterprise system now adhere to the same data validation rules as standard point-of-sale orders. This enhancement improves data accuracy and reliability, reducing potential errors and inconsistencies in self-order processing.
Original PR description
This commit improves the data validation of pos self order by using the same validation as the one used for regular pos order. Forward-Port-Of: odoo/enterprise#108867 Forward-Port-Of: odoo/enterprise#108224
This update corrects the order of payroll warnings displayed to users. The change ensures warnings are presented in a more logical and helpful sequence, streamlining the payroll process. This improves user experience and clarity regarding potential issues.
Original PR description
Order of some warnings were not correct, re-order them. task - 5958677