Saturday, September 27, 2025
10 changes · 19.0
Resolved issues and error corrections
This fixes Planning test behavior that could cause later automated checks to fail unexpectedly. It improves confidence in test results without changing the product experience for end users.
Original PR description
Due to the nature of the test cases written returning an empty object to actionService in test cases as they overriden using onRpc and causes a delay error, which causes the next case to fail. Fix: - Replace the empty object with a false, which is handled in the function runbot-231599
The project creation wizard now displays the Customer field neatly on one line when Billable is enabled. This improves visual consistency and makes the form easier to read, without changing any business process or data behavior.
Original PR description
**Steps to Reproduce:** - Go to the Projects app - Click "Create" to open the wizard - Enable the "Billable" option - Observe the alignment of the "Customer" field that appears **Issue:** The…
**Steps to Reproduce:** - Go to the Projects app - Click "Create" to open the wizard - Enable the "Billable" option - Observe the alignment of the "Customer" field that appears **Issue:** The "Customer" label and input field are stacked vertically, with the input's underline (green line) positioned below the label, leading to uneven spacing and misalignment compared to other fields. **Current behaviour:** - The "Customer" field is visually misaligned , its label and input are not horizontally aligned, causing UI inconsistency. **Expected behaviour:** - The "Customer" label and input field should align horizontally on a single line, with the input's underline matching the label's baseline. **Fix:** The layout is updated using proper flexbox classes to ensure the "Customer" label and input field appear on the same line with proper vertical alignment. Task-4949146 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#221242
This update fixes an internal equity test that could fail unpredictably because records were compared in an inconsistent order. Making the test deterministic helps reduce false alarms in automated checks and supports smoother maintenance without changing customer-facing behavior.
Original PR description
The test `test_option_into_share` was failing because `assertRecordValues` compares lists in order, and the records returned by the `cap.table` search were not in the same sequence as the expected values in the test. This commit makes the test deterministic by replacing list-based `assertRecordValues` calls with individual assertions per record. [RB-232585](https://runbot.odoo.com/odoo/error/232585)
The Point of Sale discount flow now avoids a crash when staff use the ticket screen with draft orders and keyboard input. This keeps the checkout/ticket review experience stable when global discounts are configured.
Original PR description
Steps: ---------- - Install pos_discount. - Open a PoS config with a global discount configured. - Add a product to the order. - Open the ticket screen, select an order line, and press any key on the keyboard. Issue: ---------- - A traceback is raised for accessing product_id from an undefined order line. Cause: ---------- - The system tries to compare the selected order line's product with the global discount product, but draft order lines cannot be selected on the ticket screen. Fix: ---------- - Compare only if the selected line is available. task-5095765
Users with view-only access can now mark or unmark documents as favorites using the keyboard shortcut without seeing an access error. This makes the Documents app shortcut behavior consistent with manual favoriting and avoids interruptions for users browsing shared documents.
Original PR description
steps to reproduce =================== - Select a document where you have viewer permission. - Try to toggle the favorite through a hotkey. - Access Error when toggling favorite. Technical =========== - To maintain compatibility with stable versions and avoid changing the return type of the existing method, created the helper method, which will call `toggle_favorited` as we need to handle it for multiple records. After this commit ================== - This commit handles the accessError for shortcut flow. As in 18.3 we already have documents_favorite widget https://github.com/odoo/enterprise/pull/82639 which will work for manually favoriting the document, but it is not handling the shortcut flow. Task-4910326 Forward-Port-Of: odoo/enterprise#89928
This fixes an error that blocked newly created users from loading demo data in the Appraisal app. The change ensures the demo data loading process has the necessary access rights, making onboarding and testing smoother.
Original PR description
Currently, an error occurs when a new user tries to load demo data in the `Appraisal` module. Steps to reproduce: --- - Install `hr_appraisal` module (without demo data) - Create NEW user > Login…
Currently, an error occurs when a new user tries to load demo data in the `Appraisal` module.
Steps to reproduce:
---
- Install `hr_appraisal` module (without demo data)
- Create NEW user > Login with new user
- Open `Appraisal` and Click `Load Demo Data`
Traceback:
---
```py
ParseError: <record id="calendar_event_appraisal_1" model="calendar.event" forcecreate="1">
<field name="user_id" ref="base.user_admin"/>
<field name="name">Appraisal of Emma Granger</field>
<field name="partner_ids" eval="[(6,0,[ref('hr.work_contact_sj'), ref('hr.work_contact_mw'), ref('hr.work_contact_eg')])]"/>
<field name="start" eval="(DateTime.now() + relativedelta(months=1)).strftime('%Y-%m-%d 07:00:00')"/>
<field name="stop" eval="(DateTime.now() + relativedelta(months=1)).strftime('%Y-%m-%d 09:00:00')"/>
<field name="res_model_id" ref="hr_appraisal.model_hr_appraisal"/>
<field name="res_model">hr.appraisal</field>
<field name="res_id" ref="hr_appraisal.hr_appraisal_1"/>
</record>
ValueError: ParseError('while parsing /home/odoo/odoo/enterprise/hr_appraisal/data/scenarios/hr_appraisal_scenario.xml:561, somewhere inside\n<record id="calendar_event_appraisal_1" model="calendar.event" forcecreate="1">\n <field name="user_id" ref="base.user_admin"/>\n <field name="name">Appraisal of Emma Granger</field>\n <field name="partner_ids" eval="[(6,0,[ref(\'hr.work_contact_sj\'), ref(\'hr.work_contact_mw\'), ref(\'hr.work_contact_eg\')])]"/>\n <field name="start" eval="(DateTime.now() + relativedelta(months=1)).strftime(\'%Y-%m-%d 07:00:00\')"/>\n <field name="stop" eval="(DateTime.now() + relativedelta(months=1)).strftime(\'%Y-%m-%d 09:00:00\')"/>\n <field name="res_model_id" ref="hr_appraisal.model_hr_appraisal"/>\n <field name="res_model">hr.appraisal</field>\n <field name="res_id" ref="hr_appraisal.hr_appraisal_1"/>\n </record>') while evaluating
'action = model._load_demo_data()'
```
This error occurs because the new user has not been granted administrative rights.
This commit resolves the issue by granting the user superuser rights.
sentry-6110523247
Forward-Port-Of: odoo/enterprise#93461Forward-Port-Of: odoo/enterprise#95022
Original PR description
Forward-Port-Of: odoo/enterprise#95022
The mobile preview button now uses the intended color in both the website menu and the HTML builder top bar. This makes the editing interface more visually consistent and easier to recognize for users previewing pages on mobile.
Original PR description
- The mobile preview button color is changed at two places: 1. In the website systray menu. 2. In the HTML builder top-bar. Before: <img width="222" height="103" alt="outsidediff" src="https://github.com/user-attachments/assets/b2d3997a-4011-440f-8d14-22b5ebaf295c" /> <img width="428" height="104" alt="indiff" src="https://github.com/user-attachments/assets/2cb07173-2f20-42b0-abb2-289ed7476347" /> After: <img width="251" height="89" alt="image" src="https://github.com/user-attachments/assets/2c6f516c-96a7-495e-bea4-0e6e7b39ae8c" /> <img width="409" height="92" alt="image" src="https://github.com/user-attachments/assets/ea939d9d-d47c-472f-b62d-db1dc8bd81c4" /> --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
New users can now load demo data in the Attendance app without running into a permissions error. This makes it easier for teams to try or evaluate Attendance features without needing administrator intervention.
Original PR description
Currently, an error occurs when a new user tries to load demo data in the ``Attendance`` module. Steps to reproduce: --- - Install ``hr_attendance`` module (without demo data) - Create NEW user >…
Currently, an error occurs when a new user tries to load demo data in the ``Attendance`` module.
Steps to reproduce:
---
- Install ``hr_attendance`` module (without demo data)
- Create NEW user > Login with new user
- Open ``Attendance`` and Click ``Load Demo Data``
Traceback:
---
```
AccessError
You are not allowed to create 'Resource Working Time' (resource.calendar) records.
This operation is allowed for the following groups:
- Administration/Settings
Contact your administrator to request access if necessary.
ParseError
while parsing /home/odoo/src/odoo/saas-18.1/addons/hr_attendance/data/scenarios/hr_attendance_scenario.xml:5, somewhere inside <record id="resource_calendar_std_38h" model="resource.calendar" forcecreate="1">
<field name="name">Standard 32 hours/week (4 work days, friday free)</field>
<field name="company_id" eval="False"/>
<field name="hours_per_day">8</field>
<field name="attendance_ids" eval="[(5, 0, 0), (0, 0, {'name': 'Monday Morning', 'dayofweek': '0', 'hour_from': 8, 'hour_to': 12, 'day_period': 'morning'}), (0, 0, {'name': 'Monday Lunch', 'dayofweek': '0', 'hour_from': 12, 'hour_to': 13, 'day_period': 'lunch'}), (0, 0, {'name': 'Monday Afternoon', 'dayofweek': '0', 'hour_from': 13, 'hour_to': 17, 'day_period': 'afternoon'}), (0, 0, {'name': 'Tuesday Morning', 'dayofweek': '1', 'hour_from': 8, 'hour_to': 12, 'day_period': 'morning'}), (0, 0, {'name': 'Tu...
ValueError
ParseError('while parsing /home/odoo/src/odoo/saas-18.1/addons/hr_attendance/data/scenarios/hr_attendance_scenario.xml:5, somewhere inside\n<record id="resource_calendar_std_38h" model="resource.calendar" forcecreate="1">\n <field name="name">Standard 32 hours/week (4 work days, friday free)</field>\n <field name="company_id" eval="False"/>\n <field name="hours_per_day">8</field>\n <field name="attendance_ids" eval="[(5, 0, 0), (0, 0, {\'name\': \'Monday Morning\', \'dayofweek\': \'0\', \'hour_from\': 8, \'hour_to\': 12, \'day_period\': \'morning\'}), (0, 0, {\'name\': \'Monday Lunch\', \'dayofweek\': \'0\', \'hour_from\': 12, \'hour_to\': 13, \'day_period\': \'lunch\'}), (0, 0, {\'name\': \'Monday Afternoon\', \'dayofweek\': \'0\', \'hour_from\': 13, \'hour_to\': 17, \'day_period\': \'afternoon\'}), (0, 0, {\'name\': \'Tuesday Morning\', \'dayofweek\': \'1\', \'hour_from\': 8, \'hour...
```
This error occurs because the new user has not been granted administrative rights.
This commit resolves the issue by granting the user superuser rights.
sentry-6110523247
---
I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Forward-Port-Of: odoo/odoo#195714Archiving multiple Helpdesk teams connected to different websites no longer causes an error. This helps administrators manage teams in bulk more reliably when using website helpdesk forms.
Original PR description
Currently, an error occurs when archiving multiple helpdesk teams linked to different websites. **Steps to reproduce:** - Install the `website_helpdesk` module. - Go to Website, Configuration >…
Currently, an error occurs when archiving multiple helpdesk teams linked to different websites. **Steps to reproduce:** - Install the `website_helpdesk` module. - Go to Website, Configuration > Websites and create two websites (`W1` and `W2`). - Go to Helpdesk, Configuration > Helpdesk Teams > create two teams (`T1` and `T2`). - Enable the `Website Form` (under `Help Center`), assign `W1` to `T1` and `W2` to `T2`. - Return to the list view, select both teams, and attempt to `archive` them. **Error:** `ValueError: Expected singleton: website(3, 1)` **Root Cause:** At [1], the code incorrectly uses `with_website.website_id.id`, when `multiple websites` are involved, this leads to an `error`. **Fix:** This commit prevents errors and ensures that users can archive multiple helpdesk teams linked to different websites [1]: https://github.com/odoo/enterprise/blob/8b72fdef63f634ccf436b49adbac5c1f9358c127/website_helpdesk/models/helpdesk.py#L102 sentry-6867906123 Forward-Port-Of: odoo/enterprise#94318