Thursday, September 3, 2026
28 changes · master
Resolved issues and error corrections
The chat menu now hides general client notifications, such as failures or push notification prompts, when users apply a chat filter like unread conversations. This keeps filtered views focused on the chats users asked to see and reduces unnecessary distractions.
Original PR description
The chat tab shows notifications such as failures or push notification requests. It doesn't make sense to show those when filtering the view (e.g. to unread chats). This commit ensures those are only shown when the "all" filter is active. 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 configuration views for India EDI and e-way bill settings now point to the correct parent view. This prevents upgrade failures caused by the system looking for settings fields in the wrong place.
Original PR description
The view inherits from the root view `account.res_config_settings_view_form` but modifies the node `name='module_l10n_in_ewaybill'` introduced by a sibling view `l10n_in.res_config_settings_view_form_inherit_l10n_in`. This leads to errors during upgrades: ``` odoo.exceptions.ValidationError: Error while parsing or validating view: Element '<xpath expr="//field[@name='module_l10n_in_ewaybill']">' cannot be located in parent view ``` Note: The inheritance was also wrong in previous versions. Since the error doesn't happen there, the PR targets master directly but can be backported if needed
Odoo now reads database timeout settings in a way that does not require extra database catalog permissions. This prevents avoidable permission errors in restricted hosting environments and helps attachment-related operations continue reliably.
Original PR description
pg_settings requires explicit `SELECT` privileges and may raise an `InsufficientPrivilege` error in restricted environments. Use `current_setting()` instead to read configuration values directly from the backend without requiring catalog privileges.
This fixes uneven vertical spacing between form field boxes on small screens. Forms will look more consistent and polished for users working from mobile or narrow displays.
Original PR description
The vertical spacing between the outlined field boxes on small screens was defined case by case: `map-get($spacers, 3)` on the property field values and on the outlined headings, while the regular cells relied only on the negative margin of their overlapping label. As a result the gap differed depending on the kind of field. Move the margin to `%-o-field-box` itself, driven by a single `--o-field-box-spacing` variable, so every box (cells, outlined fields and property values) uses the same spacing, and drop the now redundant per-case margins. task-6533314 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 keeps media and action icons consistent in right-to-left languages, avoiding confusing mirrored symbols. It also improves disabled button styling so colors remain correct when some theme values are not explicitly set.
Original PR description
### Prevent the play icon from flipping in RTL Prior to this PR, the play icon was being flipped in RTL, which caused confusion. This PR ensures that the icon is displayed consistently in both RTL…
### Prevent the play icon from flipping in RTL Prior to this PR, the play icon was being flipped in RTL, which caused confusion. This PR ensures that the icon is displayed consistently in both RTL and LTR layouts. ### Make disabled button values optional Prior to this PR, disabled values were mandatory when overriding button variables. This could cause color issues when those variables were not explicitly defined. This PR makes the disabled values optional and falls back to the default values when they are not defined. task-6501706 Requires: - https://github.com/odoo/enterprise/pull/129377 --- | Before | After | |--------|--------| | <img width="187" height="122" alt="Screenshot 2026-08-26 at 15 49 05" src="https://github.com/user-attachments/assets/006830b7-4bd1-43f0-8fc0-f35e9ec66fe5" /> | <img width="212" height="148" alt="image" src="https://github.com/user-attachments/assets/a2c59ec2-e1ce-4a3f-bdc5-37a9fe628126" /> | | <img width="798" height="310" alt="image" src="https://github.com/user-attachments/assets/f0440f18-f1fa-4b46-b43a-e13d816beb26" /> | <img width="806" height="270" alt="image" src="https://github.com/user-attachments/assets/fdcb1364-353f-416c-a297-fb1bcdd316ce" /> | --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Attendance records now correctly show check-in location details when device and location tracking are enabled. This fixes a display issue in kiosk-mode attendance records so managers can review location information as expected.
Original PR description
Steps: - Enable device & location tracking setting - Create a check in for an attendance in kiosk mode - Open the attendance form - Check in location is not visible Cause: Due to a recent addition of custom CRUD methods to modify access rights for hr_attendance, the attendance view form was inherited and location tracking fields have been hidden from all views indiscriminately because of matching priorities between the new and inherited views Solution: Define priority for the main view in order to take precedence over the new view while maintaining the new view for CRUD methods. Task: 6526280 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 return creation wizard now checks for existing returns only within the selected company. This prevents users working with multiple companies from being incorrectly blocked by returns that belong to another company.
Original PR description
To reproduce the issue: 1) Create two companies in Belgium: A and B 2) Manually create a return for A before its opening date 3) Switch to company B, and keep A active as well 4) Try creating a return of the same type and at the same date as in 2) ===> The wizard blocks you and displays a warning saying there's already a return at this date. There is, but for another company. We fix that by properly filtering the company when searching for existing returns. Moving the _read_group inside the loop on self is okay here: we'll never compute that field for multiple wizards at once. Forward-Port-Of: odoo/enterprise#130303
The merge details dialog now shows darker badges next to source records, making them easier to read. This improves clarity when users review records before merging and helps reduce mistakes caused by hard-to-see labels.
Original PR description
The badges next to the source record in the merge details dialog were too light to read against the background. Make them darker. task-6512026
Fixed an issue in Odoo Sign where a signer's avatar could disappear after assigning a contact in a template. This keeps the signer sidebar visually clear and helps users confirm they selected the right person.
Original PR description
Version:
- saas-19.5
Steps to reproduce:
- Open a Sign Template and add/select a signer role in the sidebar.
- Add value to `assign_to` field from signer setting dialog.
Issue:
- the avatar next to the signer's name in the sidebar does not render properly.
Cause:
- res.partner's `avatar_128/avatar_1920` are Binary fields. The ORM now returns Binary fields from read() as an object `{ filename, content, size }` instead of a plain base64 string. `updateRoleNameAndAvatar() `still treats the result as a raw base64 string `(partner.avatar_128 || partner.avatar_1920)` and passes it straight into `getImageSrc()`. which expects a base64 string to build the image URL. Since it now gets an object instead, the URL becomes invalid and the image fails to load.
Solution:
- Extract the base64 string from the `content` key of the returned binary value.
task-6529799The biometric attendance setup screens now make Mantra and eSSL URLs copy-only, preventing users from accidentally opening links that lead to an error page. Related wording and event organization were also clarified, making attendance integration setup and review smoother.
Original PR description
Before this commit, the Mantra and eSSL URLs were clickable, allowing users to copy the links. However, clicking the URL would open it in a new tab, resulting in a Method Not Allowed error. Since these URLs are intended only for copying they should not be opened. In this PR - Updated the URL widget so users can only copy the link and cannot open it. - Updated the related messages for better clarity. Task:6526289
The tax return deadline date label now has stronger contrast, making the due date easier to read in the tax return interface. This helps users quickly identify deadlines and reduces the chance of overlooking important tax dates.
Original PR description
Before this commit: - With the new tax return UI, the tax return deadline date pill has low contrast between the pill's background color & text color, and it became hard to see the actual date shown…
Before this commit: - With the new tax return UI, the tax return deadline date pill has low contrast between the pill's background color & text color, and it became hard to see the actual date shown in the pill. - Behaviour before: <img width="385" height="70" alt="image" src="https://github.com/user-attachments/assets/382d2961-0bd9-4552-a7dd-175b6cfa49e7" /> <img width="344" height="73" alt="image" src="https://github.com/user-attachments/assets/6301929b-0cec-4411-b8e1-4a4a65bc9f9e" /> --- After this commit: - Changed the Bootstrap class for the deadline date pill for the secondary case. Now we are explicitly defining the text color for enhanced contrast with the background color. - Behaviour after: <img width="308" height="73" alt="image" src="https://github.com/user-attachments/assets/50499178-8bba-4917-abd5-026ea287df3e" /> <img width="302" height="74" alt="image" src="https://github.com/user-attachments/assets/59537317-2b7c-4ab5-8828-56f8197ff16f" /> --- Task-6523848
Updates several interface details so attachment previews, switcher controls, barcode kanban tips, and disabled buttons better match the new Frost design. This improves visual consistency and reduces confusing color or spacing issues for users.
Original PR description
*: account_accountant, stock_barcode ### Adapt attachment preview This PR adapts the border of the attachment preview to match the new Frost design. ### Adapt o_switcher colors This PR adapts the…
*: account_accountant, stock_barcode ### Adapt attachment preview This PR adapts the border of the attachment preview to match the new Frost design. ### Adapt o_switcher colors This PR adapts the o_switcher component to: - Ensure consistent border colors - Adjust the color of disabled buttons ### Adapt `o_kanban_tip_filter` This PR reviews the spacing and button styles of `o_kanban_tip_filter` to align with the new Frost design. task-6501706 Requires: - https://github.com/odoo/odoo/pull/284724 --- | Before | After | |--------|--------| | <img width="1920" height="929" alt="image" src="https://github.com/user-attachments/assets/b424769f-77f3-4a2f-a0fe-f78bf757ab33" /> | <img width="1919" height="816" alt="image" src="https://github.com/user-attachments/assets/60e5776a-a846-4fb7-b0f3-b83b7ec00cfd" /> | | <img width="508" height="426" alt="image" src="https://github.com/user-attachments/assets/b53c88c2-5f03-4895-9842-86372396a8e3" /> | <img width="578" height="208" alt="image" src="https://github.com/user-attachments/assets/129fd800-8e99-4355-b283-6f0cad07b574" /> | | <img width="1920" height="1094" alt="image" src="https://github.com/user-attachments/assets/e01b401b-dc1c-4569-920c-03e182776aca" /> | <img width="1920" height="474" alt="image" src="https://github.com/user-attachments/assets/83b0f76c-b0bd-478b-9f55-6019eb8f5acf" /> |
This fix restores an internal connection used by the Mexican e-invoicing website checkout flow. It helps keep the online sales checkout and invoicing process working as expected after a previous change accidentally removed that support.
Original PR description
Lost with 25699301ccde8f4e9ac6333438a7b1d40f9237ab
This update prevents a crash in the Odoo Studio home menu after an underlying web interface change. It keeps Studio users from hitting an error when opening the home menu, with no expected change to normal behavior.
Original PR description
See commit messages for details. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This update fixes a test setup so forum access rules are checked against the right forum configuration. It helps ensure users need the proper reputation level before commenting on posts or replies created by someone else.
Original PR description
**Issue:**
`website_helpdesk_forum` overrides the `ref('website_forum.forum_help')` in its demo data, allowing anyone to comment / post on it.
**Fix:**
Use the helper forum instead and properly requires `KARMA['com_all']` when posting a comment on someone else post/reply.
related: https://github.com/odoo/odoo/commit/ba19ef413e400a65e9f43a6fc6c4bc1586ea8983
runbot-944703
Forward-Port-Of: odoo/odoo#285699
Forward-Port-Of: odoo/odoo#281757This fixes the DIN5008 invoice layout when German invoices are sent by post, ensuring the sender, invoice information, and recipient address appear in the correct positions. Regular DIN5008 invoice layouts are unchanged, while mailed documents now align properly for postal processing.
Original PR description
**Steps to reproduce:** - Install l10n_din5008 and Accounting. - Enable Snailmail from Accounting → Settings. - Create a German customer (Fiscal Country: Germany). - Create and post a customer…
**Steps to reproduce:** - Install l10n_din5008 and Accounting. - Enable Snailmail from Accounting → Settings. - Create a German customer (Fiscal Country: Germany). - Create and post a customer invoice using the DIN5008 report layout. - Select Send by Post. - Enable Developer Mode and navigate to Settings → Technical → Email → Snailmail Letters. - Open the generated letter and send it. **Observed behavior:** The address blocks are incorrectly aligned when the DIN5008 report is rendered for snailmail. The information block and recipient address do not follow the expected vertical positioning. **Cause:** The DIN5008 layout previously applied vertical alignment rules to its table cells. These rules were removed while adapting the layout to the invoice table structure and its customizations, such as the position column and line numbering. While this alignment is no longer required for the regular DIN5008 invoice layout, the snailmail layout relies on it to correctly position the sender/invoice information and recipient address blocks. **Fix:** Add a `snailmail` class to the DIN5008 invoice section when `snailmail_layout` is present in the rendering context. Restore the required vertical alignment rules scoped to this class so they only affect snailmail reports, without changing the regular DIN5008 layout. **References** * **PR:** [#201225 – DIN5008 layout improvements](https://github.com/odoo/odoo/pull/201225) * **Ticket:** [6387869](https://www.odoo.com/odoo/project/49/tasks/6387869) opw-6387869 Forward-Port-Of: odoo/odoo#286056 Forward-Port-Of: odoo/odoo#285891
The Irregular Sequence screen in Accounting now opens in the list view as intended, instead of the kanban view introduced by mistake. This restores the expected workflow for users reviewing sequence issues and avoids confusion from an unintended layout change.
Original PR description
In this PR https://github.com/odoo/odoo/pull/243458 the Irregular Sequence default view was mistakenly changed from list to kanban. This commit reverts this, and makes the default view list again. task-6531731
This fix ensures that low-credit IAP errors are kept separate from general user-facing errors. It helps Odoo correctly identify when an action failed because more IAP credits are needed, instead of treating it like a generic request problem.
Original PR description
Even if `raise_user_error` is enabled, these errors should remain so that the caller can distinguish between a request error and a lack of IAP credits. Forward-Port-Of: odoo/odoo#286288
The payslip correction wizard now shows the expected explanation when users correct a paid payslip. This helps payroll users understand whether they are correcting the payslip or only reverting it, reducing confusion during payroll adjustments.
Original PR description
Steps to reproduce:
1. Open a draft payslip and validate it.
2. Mark the payslip as paid.
3. Click on the "Correct" button to open the correction wizard. The description text "Do you want to correct this payslip or revert only?" is missing.
Reason:
The view evaluated `context.get('is_button_action')` instead of the field `is_button_action`. Since the action context passes `default_is_button_action`, `context.get('is_button_action')` evaluated to False.
Solution:
Remove `context.get()` calls from the XML view and rely on the `is_button_action` Boolean field instead.
Task-6511586The website builder no longer shows theme-based background options for tab sections because those choices did not work reliably. This prevents users from selecting a styling option that would not apply as expected, making page editing clearer.
Original PR description
The theme background options (`o_cc` classes) on the `s_tabs` snippet's tabs doesn't work since 18.4 (html_builder refactor). It was not supported either in previous versions. We decided to fix it so it would be useable in master (20.0) but leave stable versions as is, by restraining the available tabs and removing the theme one. task-5951656 Forward-Port-Of: odoo/odoo#277528
Long delivery method names now display cleanly during eCommerce checkout instead of stretching the page layout. This helps shoppers review shipping options without visual breakage or horizontal overflow.
Original PR description
Issue ----------- Long delivery method names containing lists of locations/zones do not wrap properly on the eCommerce checkout page, causing the layout to overflow. Cause of the issue -----------…
Issue ----------- Long delivery method names containing lists of locations/zones do not wrap properly on the eCommerce checkout page, causing the layout to overflow. Cause of the issue ----------- The first column of `[.o_delivery_method_row](https://github.com/odoo/odoo/blob/saas-19.3/addons/website_sale/static/src/scss/website_sale_delivery.scss#L2)` uses `minmax(max-content, 1fr)`. `max-content` prevents the column from shrinking when the delivery method name is too long. Steps to reproduce ----------- 1. Create a Delivery Method with a long list of locations/zones in its name. 2. Go to the eCommerce checkout at the address page. 3. Observe that the delivery method name does not wrap and breaks the layout. Before Fix ----------- The `max-content` minimum prevents the delivery method name from wrapping, causing the layout to overflow. <img width="1781" height="852" alt="image" src="https://github.com/user-attachments/assets/1150a8ef-e2d8-49ab-9553-fe9728258060" /> After Fix ----------- Change `max-content` to `min-content` so the column can shrink and the delivery method name wraps. <img width="1882" height="890" alt="image" src="https://github.com/user-attachments/assets/84cfd5a4-796d-4b9f-bfdb-c18434f8b67f" /> [OPW- 6486780 ](https://www.odoo.com/odoo/project/70/tasks/6486780) [UPG- 4609267 ](https://upgrade.odoo.com/odoo/upgrade.request/4609267) 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#284714
The Romanian tax return list now shows the specific declaration name "D300" instead of the generic label "Tax". This makes it easier for users to identify and select the correct Romanian tax declaration when generating returns.
Original PR description
Before this commit: When generating a Romanian tax return, one of the return types in the list was labeled "Tax", which was too generic to know which specific tax declaration it referred to. After this commit: The tax return is now renamed to "D300", making it easy to identify this return in the list instead of seeing a generic "Tax" label. task - 6388087 Forward-Port-Of: odoo/enterprise#124583
The expense workflow now uses the correct status name, "approved," in the HR Expenses screens. This avoids confusion for employees and managers reviewing expense reports and keeps the interface aligned with the actual process.
Original PR description
Use the correct state name (approved) @Tecnativa --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#285950
This update fixes typos and inconsistent wording in the Point of Sale LNA checklist. It improves clarity for users reviewing the checklist without changing any business process or system behavior.
Original PR description
Fixed some typos and inconsistencies on the LNA checklist document Task-[6330795](https://www.odoo.com/odoo/project/1737/tasks/6330795) 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#286174 Forward-Port-Of: odoo/odoo#281950
The website editor’s block search field now shows a pointer cursor when users hover over the clear button in browsers that display it. This small visual cue makes it clearer that the button can be clicked to reset the search.
Original PR description
Steps to reproduce: - Open the website editor. - Open the "Insert a block" dialog. - Enter text in the search bar. - Hover over the clear icon. => The cursor does not indicate that the icon is clickable. Before this commit, the search clear icon kept the default cursor. After this commit, the clear icon uses a pointer cursor to indicate that it is clickable. Note that Firefox does not natively add this clear icon to search inputs, unlike Chrome. This fix only affects browsers that render it. task-6259086 Forward-Port-Of: odoo/odoo#283435
When a user pastes a new URL over an existing link whose text matches its address, the editor now updates both the link destination and visible text. This prevents confusing cases where a link points to the new address but still displays the old one.
Original PR description
**Current behavior before PR:** Steps to reproduce the issue: - Create a link via typing a valid URL + space. - Copy/Paste a different URL from the browser. - Select the entire link you just created.…
**Current behavior before PR:** Steps to reproduce the issue: - Create a link via typing a valid URL + space. - Copy/Paste a different URL from the browser. - Select the entire link you just created. - Paste the copied URL on top of it. Notice that the label is still the old URL even though the URL actually changed. This happens because after commit [1] When pasting a URL over an active text selection, selected content is converted into a link pointing to the pasted URL. This should not be the case if selected content is a link with same label and URL. **Desired behavior after PR is merged:** If a link is entirely selected and its label is the same as URL then it should replace the existing link label with new URL. [1]: https://github.com/odoo/odoo/commit/d356043a67e1d7291bd1302b1e90a2d9a07718da task-6456004 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#286081 Forward-Port-Of: odoo/odoo#281700
This fixes an issue where Point of Sale pop-up dialogs no longer closed when users clicked outside them. Restoring this expected behavior makes dialogs easier to dismiss and reduces friction during checkout workflows.
Original PR description
Commit `2abce52ce5f1f3f1b86ee0250f9a3d4544c4da8b` ("[REF] web: migrate t-ref to Owl 3 signals") changed `modalRef` from a classic ref (exposing `.el`) to a signal in dialog.js.
Since then, the DOM element is read by calling the signal (`this.modalRef()`) instead of `this.modalRef.el`.
The POS `Dialog.onClick` patch was still reading `this.modalRef.el`, which is now `undefined`. As a result, `event.target === undefined` was always false, so clicking on the backdrop no longer dismissed the dialog.
Read the element through the signal call so the backdrop click is detected again.
task-6412012
---
I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-prBasic point-of-sale receipts for Peruvian companies no longer include additional electronic invoicing details such as the amount in words or QR-related data. This keeps simplified receipts concise while preserving the full information on standard receipts where it is expected.
Original PR description
Step to reproduce - install l10n_pe_edi_pos with demo and switch to PE company - from settings> "Signature Provider" set it to SUNAT - create a pos, enable "Basic Receipt" from settings - open pos…
Step to reproduce - install l10n_pe_edi_pos with demo and switch to PE company - from settings> "Signature Provider" set it to SUNAT - create a pos, enable "Basic Receipt" from settings - open pos and fulfill a order - from feedback screen, print > print basic recipt Observation: - `Amount In Word` is visible in basic receipt, we should not show such info in basic receipt Cause: - commit [1] introduces the template `l10n_pe_edi_pos.pos_order_receipt`, which adds the info block to the receipt using xpath `<xpath expr="//div[contains(@t-if, 'use_self_invoicing')]" position="before">` - this inserts the block before the [target div](https://github.com/odoo/odoo/blob/1ace23afe8a937fc1dc53879f33ca591fd5d25b8/addons/point_of_sale/receipt/pos_order_receipt.xml#L70-L86), which is independent of the `basic_receipt` flag, causing the block to always be visible [1] https://github.com/odoo/enterprise/commit/a0c4f841cde0fcfda0a0c57f865f0eff6b6d6afe Fix: - place the block so it is shown only when `basic_receipt` is false - update the xpath expression to `prices` div ( here `basic_receipt` is false `//div[@name='prices']` with `position="inside"` After fix (for full receipt) <img width="257" height="349" alt="image" src="https://github.com/user-attachments/assets/3932cae1-3ceb-42ad-9ce4-16a9bd4fea7d" /> opw-6383358 Forward-Port-Of: odoo/enterprise#125118