Friday, February 28, 2025
8 changes · 17.0
Resolved issues and error corrections
The website editor now fully removes font size styling when users choose to clear formatting from text. This makes editing more predictable and prevents unwanted font sizes from remaining after cleanup.
Original PR description
**Behavior before PR:**
When removing format using removeFormat button, font-size style is not getting removed from formatted text. This happens because in `removeFormat` method `editor.document.execCommand('removeFormat')` fails to remove styles applied through classes. To remove these styles, font-size classes should be removed.
**Behavior after PR is merged:**
Now font-size related classes will be removed when removing format and font-size style will be removed from formatted text.
task-4526026
---
I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-prThis update fixes incorrect account names and related account details in the chart of accounts for Bangladesh, Jordan, Kuwait, and Qatar. Businesses using these localizations will see clearer, more accurate accounting labels, reducing confusion in financial setup and reporting.
Original PR description
Description of the issue/feature this PR addresses: Task: https://www.odoo.com/odoo/my-tasks/4179478 Current behavior before PR: - Wrong names for certain accounts Desired behavior after PR is merged: - Fix names for accounts --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
The signature area now correctly adjusts when a user rotates a mobile device while signing a quotation. This prevents the signing canvas from shifting out of place, making mobile signing smoother and less confusing for customers.
Original PR description
Steps to reproduce ================== - Use a mobile device/viewport - Create a new Quotation - Click on preview - Click on Sign & Pay - Draw - Fill the canvas - Rotate your device => The canvas is no longer centered Cause of the issue ================== A resize handler was forgotten in the conversion to owl: https://github.com/odoo/odoo/blob/f4f0f783183507df8227b37fe1234c256325df6d/addons/web/static/src/legacy/js/widgets/name_and_signature.js#L153-L159 opw-4343646 Description of the issue/feature this PR addresses: Current behavior before PR: Desired behavior after PR is merged: --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This fix prevents checkout invoice generation tests from failing when a guest customer does not provide a VAT number. It keeps required checkout fields aligned with the selected country, avoiding unnecessary manual VAT handling and supporting smoother online purchases.
Original PR description
This commit fixes the runbot test failures related to invoice generation when the user is not logged in and VAT values are missing. - Cause an issue for MX and EC country code - VAT field is removed from mandatory fields - No need to remove the vat field manually, when the country changes the mandatory field list will be changed accordingly. Runbot Errors: 111328, 111329 Related: https://github.com/odoo/enterprise/pull/79646 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This fix prevents Odoo from crashing when an Indian GST number matches more than one state record, such as when a company has both standard and custom state entries. The system now uses a single matching state for the check, keeping partner records accessible and the GST warning reliable.
Original PR description
**Description of the issue/feature this PR addresses:** When computing l10n_in's `res_partner.l10n_in_gst_state_warning` field, we…
**Description of the issue/feature this PR addresses:**
When computing l10n_in's `res_partner.l10n_in_gst_state_warning` field, we [search](https://github.com/odoo/odoo/blob/f1fb0527f1b29e4b464e13718d6d0edb3b32a114/addons/l10n_in/models/res_partner.py#L45) for a res_country_state whose `l10n_in_tin` is the same as the one encoded in the partner's `vat`; if none is found we warn the user.
Since the res_country_state's [`l10n_in_tin`](https://github.com/odoo/odoo/blob/f1fb0527f1b29e4b464e13718d6d0edb3b32a114/addons/l10n_in/models/res_country_state.py#L10) is not unique though, it is legal for the customer to have multiple res.country.state entries with the same l10n_in_tin (typically one standard plus one custom state):
```sql
> SELECT ARRAY_AGG(id),ARRAY_AGG(country_id),ARRAY_AGG(name),ARRAY_AGG(code),l10n_in_tin FROM res_country_state WHERE l10n_in_tin IS NOT NULL GROUP BY l10n_in_tin HAVING COUNT(*)>1
+-------------+------------+------------------------+--------------+-------------+
| array_agg | array_agg | array_agg | array_agg | l10n_in_tin |
|-------------+------------+------------------------+--------------+-------------|
| [1741, 589] | [104, 104] | ['HARYANA', 'Haryana'] | ['06', 'HR'] | 06 |
+-------------+------------+------------------------+--------------+-------------+
```
If our search passes more than one results to `state_id.name` though, Odoo fails with a ValueError:
```
Traceback (most recent call last):
File "/tmp/tmpdugmps2c/migrations/base/tests/test_mock_crawl.py", line 256, in crawl_menu
self.mock_action(action_vals)
File "/tmp/tmpdugmps2c/migrations/base/tests/test_mock_crawl.py", line 269, in mock_action
return self.mock_act_window(action)
File "/tmp/tmpdugmps2c/migrations/base/tests/test_mock_crawl.py", line 429, in mock_act_window
mock_method(model, view, fields_list, domain, group_by)
File "/tmp/tmpdugmps2c/migrations/base/tests/test_mock_crawl.py", line 457, in mock_view_form
[data] = record.read(fields_list)
File "/home/odoo/src/odoo/18.0/odoo/models.py", line 3801, in read
return self._read_format(fnames=fields, load=load)
File "/home/odoo/src/odoo/18.0/odoo/models.py", line 4032, in _read_format
vals[name] = convert(record[name], record, use_display_name)
File "/home/odoo/src/odoo/18.0/odoo/models.py", line 6999, in __getitem__
return self._fields[key].__get__(self)
File "/home/odoo/src/odoo/18.0/odoo/fields.py", line 1291, in __get__
self.compute_value(recs)
File "/home/odoo/src/odoo/18.0/odoo/fields.py", line 1473, in compute_value
records._compute_field_value(self)
File "/home/odoo/src/odoo/18.0/addons/mail/models/mail_thread.py", line 429, in _compute_field_value
return super()._compute_field_value(field)
File "/home/odoo/src/odoo/18.0/odoo/models.py", line 5238, in _compute_field_value
fields.determine(field.compute, self)
File "/home/odoo/src/odoo/18.0/odoo/fields.py", line 113, in determine
return needle(records, *args)
File "/home/odoo/src/odoo/18.0/odoo/fields.py", line 710, in _compute_related
record[self.name] = self._process_related(value[self.related_field.name], record.env)
File "/home/odoo/src/odoo/18.0/odoo/models.py", line 6999, in __getitem__
return self._fields[key].__get__(self)
File "/home/odoo/src/odoo/18.0/odoo/fields.py", line 1291, in __get__
self.compute_value(recs)
File "/home/odoo/src/odoo/18.0/odoo/fields.py", line 1473, in compute_value
records._compute_field_value(self)
File "/home/odoo/src/odoo/18.0/addons/mail/models/mail_thread.py", line 429, in _compute_field_value
return super()._compute_field_value(field)
File "/home/odoo/src/odoo/18.0/odoo/models.py", line 5238, in _compute_field_value
fields.determine(field.compute, self)
File "/home/odoo/src/odoo/18.0/odoo/fields.py", line 110, in determine
return needle(*args)
File "/home/odoo/src/odoo/18.0/addons/l10n_in/models/res_partner.py", line 48, in _compute_l10n_in_gst_state_warning
"As per GSTN the state should be %s, so it's recommended to", state_id.name
File "/home/odoo/src/odoo/18.0/odoo/fields.py", line 1232, in __get__
record.ensure_one()
File "/home/odoo/src/odoo/18.0/odoo/models.py", line 6212, in ensure_one
raise ValueError("Expected singleton: %s" % self)
ValueError: Expected singleton: res.country.state(1741, 589)
```
**Desired behavior after PR is merged:**
We can avoid this by explicitly limiting the search to a single result.
TBG: https://upgrade.odoo.com/web#cids=1&menu_id=107&action=178&model=upgrade.request.traceback.group&view_type=form&id=1804
---
I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-prFixed an issue where clicking a timesheet grid cell could show incomplete helper content. Users now see the expected guidance in the timesheet grid, making the interaction clearer and less confusing.
Original PR description
Versions: ----------- - 17.0 Steps to reproduce: ------------------------- - go to timesheet module - click on grid cell Issue: ------- The action helper in web grid was resulting in only the web content being displayed in the timesheet grid and so helper was missing Cause: --------- The action helper was being called from web_grid, causing a lack of content in the timesheet_grid. Solution: ----------- Create a dedicated function to retrieve the no-content helper, enhancing portability for easy customization. task-3429403
This fix updates automated checks for Mexican point-of-sale invoicing so they handle cases where VAT details are missing and the user is not logged in. It helps keep invoice generation reliable and prevents false test failures in the release process.
Original PR description
This commit fixes the runbot test failures related to invoice generation when the user is not logged in and VAT values are missing. Runbot Errors: 111328, 111329 Related: https://github.com/odoo/odoo/pull/198506
This update prevents an error when users add a comparison filter in consolidated balance reports. It improves reliability for finance teams using period comparisons in accounting reports.
Original PR description
### Steps to reproduce: - Go to Accounting > Configuration > Accounting Reports > Consolidated Balance > Options - Tick "Period Comparison" - On a consolidation period, click "Consolidated Balance" - Click on the button "Comparison" to add a filter ### Cause: The dropdown component that is supposed to appear when clicking the button is reading value that are undefined: `controller.options.date.mode` This value is only defined if the filter is 'custom': https://github.com/odoo/enterprise/blob/297bc86d8a98beb4cabc646c3a2ec6a594e7ca0c/account_reports/models/account_report.py#L639 ### Solution: Check if the filter is 'custom' before checking for the mode. opw-4546574