Monday, August 4, 2025
24 changes · 18.0
Enhancements to existing features
The eInvoicing format choices shown on customer account settings have been renamed to be easier to understand in each country context. This helps users choose the right invoice format without relying on unclear technical labels, reducing confusion during customer setup.
Original PR description
Renamed the selection labels for invoice_edi_format field to make them easier to understand based on the user's country context when choosing format inside customer's account tab. This improves the usability of the dropdown when selecting an eInvoicing format, especially for users in localizations where the technical name was unclear or confusing. 4889699 shzi
Resolved issues and error corrections
This change splits lengthy editor list tests into smaller checks so they are less likely to fail when test infrastructure is slow. It does not change product behavior, but helps keep automated validation more stable and reduces false failures during releases.
Original PR description
Those tests were too long to be grouped in a single `it` as it would sometime hit the time limit when the runbot was too slow. Putting each of them in separate `it` significantly reduces the likelihood of the issue to occur. runbot-230411 Forward-Port-Of: odoo/odoo#221197
This fix corrects the invoicing action used in several localized Point of Sale flows so orders can be marked for invoicing properly. It prevents failures caused by calling a non-existent function, helping affected country-specific POS setups process invoices reliably.
Original PR description
In commit https://github.com/odoo/odoo/commit/bfe2a0aea699439480990bb192bfeea7df2117e2, the method `setToInvoice` was mistakenly called on `pos.order`, but this method does not exist. The correct method name is `set_to_invoice`. opw-4992393 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Before this change, the VAT Content section in Argentinean Legal PDF was always shown as "VAT Content" although the user has Spanish as its language. With this change will show the correct translation: "IVA Contenido" when printing the PDF report in Spanish. ### **Description of the issue/feature this PR addresses:** Missing Spanish translation of "VAT Content" column in the Argentinean Legal PDF Report 1. Install Argentinean - Accounting module 2. Install Spanish language 3. Log int
Original PR description
Before this change, the VAT Content section in Argentinean Legal PDF was always shown as "VAT Content" although the user has Spanish as its language. With this change will show the correct…
Before this change, the VAT Content section in Argentinean Legal PDF was always shown as "VAT Content" although the user has Spanish as its language. With this change will show the correct translation: "IVA Contenido" when printing the PDF report in Spanish. ### **Description of the issue/feature this PR addresses:** Missing Spanish translation of "VAT Content" column in the Argentinean Legal PDF Report 1. Install Argentinean - Accounting module 2. Install Spanish language 3. Log into to one of the demo Argentinean Companies: (AR) Responsable Inscripto 4. Create a customer invoices of type "B" 5. Go to the partner and change the Language to Spanish 6. Return to the invoice and print the PDF 7. Check that the VAT Content section is not translated. ### **Current behavior before PR:** <img width="572" height="407" alt="image" src="https://github.com/user-attachments/assets/e28e609e-2cd2-4ace-9509-f969692ec893" /> ### **Desired behavior after PR is merged:** The "VAT Content section should appear as "IVA Contenido" when printing the report in Spanish. opw-4938520 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#219912
Before this change, the VAT Content section in Argentinean Legal PDF was always shown as "VAT Content" although the user has Spanish as its language. With this change will show the correct translation: "IVA Contenido" when printing the PDF report in Spanish. ### **Description of the issue/feature this PR addresses:** Missing Spanish translation of "VAT Content" column in the Argentinean Legal PDF Report 1. Install Argentinean - Accounting module 2. Install Spanish language 3. Log in
Original PR description
Before this change, the VAT Content section in Argentinean Legal PDF was always shown as "VAT Content" although the user has Spanish as its language. With this change will show the correct…
Before this change, the VAT Content section in Argentinean Legal PDF was always shown as "VAT Content" although the user has Spanish as its language. With this change will show the correct translation: "IVA Contenido" when printing the PDF report in Spanish. ### **Description of the issue/feature this PR addresses:** Missing Spanish translation of "VAT Content" column in the Argentinean Legal PDF Report 1. Install Argentinean - Accounting module 2. Install Spanish language 3. Log into to one of the demo Argentinean Companies: (AR) Responsable Inscripto 4. Create a customer invoices of type "B" 5. Go to the partner and change the Language to Spanish 6. Return to the invoice and print the PDF 8. Check that the VAT Content section is not translated. ### **Current behavior before PR:** <img width="572" height="407" alt="image" src="https://github.com/user-attachments/assets/1f3e7556-2ffc-4cb4-8c61-9bee4248650c" /> ### **Desired behavior after PR is merged:** The "VAT Content section should appear as "IVA Contenido" when printing the report in Spanish. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Sending reports for gamification challenges in Individual Goals mode no longer fails when optional suffix information is missing. This prevents an error from blocking report emails, making challenge reporting more reliable for users.
Original PR description
[FIX] gamification: prevent key error exception
To reproduce:
=============
1. Navigate to Settings > Gamification Tools > Challenges.
2. Create a new challenge or open any existing active challenge.
3. Set the Display Mode to Individual Goals, and then click on Send Report.
Problem:
=========
Accessing line['full_suffix'] directly raised an exception
when the key was missing, causing the template rendering to fail.
https://github.com/odoo/odoo/blob/cd5f29b8b50ef4228be8f58a02bb328548208f77/addons/gamification/data/mail_template_data.xml#L175C1-L175C92
Solution:
=========
Use line.setdefault('full_suffix', '') to ensure the key exists with
a default empty string, preventing errors and allowing the template
to render smoothly.
opw-4909617.Creating a new warehouse could fail if a previously required stock location had been deleted. This fix lets the warehouse creation continue safely instead of blocking users with an error.
Original PR description
Currently, an error occurs when a user tries to create a new warehouse, but the referenced stock location (record: **Physical Locations**) has been deleted. **Steps to reproduce:** - Install the…
Currently, an error occurs when a user tries to create a new warehouse, but the referenced stock location (record: **Physical Locations**) has been deleted. **Steps to reproduce:** - Install the `stock` module without the demo data. - Enable **Multi-Step Routes** in Inventory settings. - Delete all Stock Rules and then the existing warehouses. - Navigate to `Inventory > Reporting > Locations` and delete the **Physical Locations**. - Try to create a new warehouse. **Error:** `ValueError: External ID not found in the system: stock.stock_location_locations` Here, an error occurs when the system tries to fetch `stock.stock_location_locations` during warehouse creation [1], but the record has been deleted, resulting in a parse error. [1] - https://github.com/odoo/odoo/blob/834eff6e770280e911bb99e2abab4ea42d4ca8ff/addons/stock/models/stock_warehouse.py#L123-L125 This commit prevents the error by assigning `False` to `location_id`, if the reference is missing. Sentry - 6577063404
The delivery package type dropdown now respects the sequence set by users instead of defaulting to creation order. This makes package selection more predictable for inventory teams and aligns barcode and delivery workflows with configuration settings.
Original PR description
#### Step to reproduce: - Go to Inventory > Configuration > Settings and enable Packages - Go to Inventory > Configuration > Package Types - Inverse the order of two packages types. The goal is for…
#### Step to reproduce: - Go to Inventory > Configuration > Settings and enable Packages - Go to Inventory > Configuration > Package Types - Inverse the order of two packages types. The goal is for the sequence order to differ from the id order. (you can display id with studio) - Go to Inventory > Overview > Delivery Orders - Create a new delivery order - Add a line - In 'Additional Info' add a Carrier - Go to Barcode > Operations > Delivery Orders - Select the delivery order (you might need to remove filters) - With the 'Add Product' button add a product - Click on 'Put in Pack' - A 'Package Details' wizard should have opened. In this wizard there is a field 'Delivery Package Type'. #### Current behavior: - In the delivery package type dropdown list, packages are ordered by id #### Expected behavior: - In the delivery package type dropdown list, packages should be ordered by sequence #### Cause of the issue: As no order was defined, stock.package.type was ordered by id which is the default behavior opw-4824064 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#220327
Loading appraisal sample data no longer fails when a previously deleted employee skill type is referenced. This helps HR users continue setting up sample appraisal content without being blocked by missing skill configuration data.
Original PR description
Currently, an error is produced when loading sample data if a referenced skill type record in the skill level has been deleted by the user. **Steps to Reproduce:** - Install the `hr_appraisal` module…
Currently, an error is produced when loading sample data if a referenced skill type record in the skill level has been deleted by the user.
**Steps to Reproduce:**
- Install the `hr_appraisal` module without demo data.
- Navigate to `Employee > Skills Types` and delete the `Languages` record.
- Load the sample data for appraisal.
- Observe the error.
`ValueError: ParseError('while parsing /home/odoo/src/odoo/saas-18.2/addons/hr_skills/data/scenarios/hr_skills_scenario.xml:19...`
Here, the error occurs because the method at [1] attempts to load the `hr_skills_scenario.xml` file that references a deleted `skill_type_id` [2], leading to a parsing error.
[1] - https://github.com/odoo/odoo/blob/547327f30d2d4bf778b9d358dbea4b133d55188a/addons/hr_skills/models/hr_employee.py#L49
[2] - https://github.com/odoo/odoo/blob/547327f30d2d4bf778b9d358dbea4b133d55188a/addons/hr_skills/data/scenarios/hr_skills_scenario.xml#L23
This commit ensures that all the referenced data is loaded properly, preventing errors due to missing references.
Sentry - 6533879252This fixes an error that could appear when users clicked the Optimize SEO button while viewing a livechat page. Instead of trying to edit SEO settings on pages that do not support them, Odoo now safely disables that option, avoiding disruption for website editors.
Original PR description
Currently, an error occurs when clicking the optimize SEO button for the livechat page. **Steps to reproduce:** - Install the `website_livechat` module. - Add menuitem with url…
Currently, an error occurs when clicking the optimize SEO button for the livechat page. **Steps to reproduce:** - Install the `website_livechat` module. - Add menuitem with url `/livechat/channel/yourwebsite-com-1` as `livechat`. - Go to the **Home** page and publish it using the `Published` button (shows `Optimize SEO` popup). - Change the page to `livechat` and click the `Optimize SEO` button before it disappears. - Observe the error. **Error:** `ValueError: Invalid field 'website_meta_title' on 'im_livechat.channel'` The error occurs because the system attempts to update the default `fields` [1] on the current model at [2] who doesn't have the fields. This commit ensures that if any required SEO fields are missing from the model, the system will return early with `can_edit_seo` set to `False`, thereby preventing the error. [1] - https://github.com/odoo/odoo/blob/c87acdcfa48b1d8aa66bb5d27d58e3edb70a86ba/addons/website/controllers/main.py#L810 [2] - https://github.com/odoo/odoo/blob/c87acdcfa48b1d8aa66bb5d27d58e3edb70a86ba/addons/website/controllers/main.py#L824 Sentry - 6330105753 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This fix prevents the Mail app from crashing when follower-related data is unexpectedly unavailable. Instead of stopping with an error, the system now skips the affected empty result and continues processing, improving reliability for users.
Original PR description
Currently, an exception is raised when `_read_format`, returned an empty list due to MissingError encountered - [1]. This issue was caused by attempting to access the first element `(data[0])` without checking if the list was empty. error: `IndexError: list index out of range.` This commit resolves the issue by properly handling empty lists and skipping further processing in such cases. [1] - https://github.com/odoo/odoo/blob/2a79d7d06d77d808cab00440bdac3c1e05c7bc1b/odoo/models.py#L4033 [2] - https://github.com/odoo/odoo/blob/2a79d7d06d77d808cab00440bdac3c1e05c7bc1b/addons/mail/models/mail_followers.py#L527 sentry-6021917973
This fixes an error that could occur for Indian companies when a user removed the VAT number and then clicked the GST warning update button. The change prevents the crash and keeps the company record workflow usable even when VAT is left blank.
Original PR description
Currently, a traceback is occurring when the user clicks on the update button of GST warning after removing the vat. To reproduce this issue: 1) Install l10n_in 2) Open the Indian company 3) Change…
Currently, a traceback is occurring when the user clicks on the update button of GST warning after removing the vat. To reproduce this issue: 1) Install l10n_in 2) Open the Indian company 3) Change the VAT to get the GST warning 4) After getting the GST warning remove the VAT and click the `update it` button Error:- ``` TypeError: 'bool' object is not subscriptable ``` On company, VAT is not a required field, so the user can indeed remove it. When the user removes the vat and clicks on the `update it` button from GST warnings, the `action_update_state_as_per_gstin` method triggers. https://github.com/odoo/odoo/blob/c96d2b1d1ee917b1c665842010c56c23df91ccd3/addons/l10n_in/models/res_partner.py#L99-L101 From the above method we try to access the vat value. Here in our case, the `VAT` value is False. So it leads to the above traceback. We can resolve this issue by adding check, which makes the code more robust. sentry-6151570042 Forward-Port-Of: odoo/odoo#190840
This fix prevents an error when users load recruitment sample data after all recruitment stages have been deleted. The sample data import now skips the missing stage reference, allowing the process to complete instead of showing a traceback.
Original PR description
When the user clicks on Load sample data button after deleting the stages, A traceback will appear. Steps to reproduce the error: - Install ``hr_recruitment`` module - Go to Recruitment >…
When the user clicks on Load sample data button after deleting the stages,
A traceback will appear.
Steps to reproduce the error:
- Install ``hr_recruitment`` module
- Go to Recruitment > Configuration > Stages > Delete all stages
- Go to Recruitment > Applications > By Job Positions > Load sample data
Traceback:
```
ValueError: External ID not found in the system: hr_recruitment.stage_job3
ParseError: while parsing /home/odoo/src/odoo/addons/hr_recruitment/data/scenarios/hr_recruitment_scenario.xml:94, somewhere inside <record id="scenario_applicant_macm_enrique" model="hr.applicant">
<field name="candidate_id" ref="scenario_candidate_enrique" />
<field name="priority">2</field>
<field name="linkedin_profile">www.example.linkedin.com/in/enrique.jones</field>
<field name="job_id" ref="job_marketing" />
<field name="user_id" ref="base.user_admin" />
<field name="medium_id" ref="utm.utm_medium_direct" />
<field name="department_id" ref="dep_marketing" />
<field name="salary_expected">2900</field>
<field name="stage_id" eval="ref('stage_job3ob3', raise_if_not_found=False)" />
<field name="create_date" eval="DateTime.today() - relativedelta(months=2)" />
<field name="date_last_stage_update"
eval="DateTime.today() - relativedelta(days=1)" />
</record>
```
This commit resolves the error by ``raise_if_not_found=False`` for the field if the stage is missing.
sentry-6530485438
---
I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-prChanging a blog cover image or its visual filter no longer causes the underlying cover template to be saved by mistake. This prevents unwanted page template changes and keeps website content editing more reliable.
Original PR description
Since summernote was replaced by the editor, the record cover template becomes `o_dirty` and therefore gets saved when a cover image is changed. This commit solves this by marking the record cover components readonly inside the DOM. Steps to reproduce: - install website_blog - set a blog cover image or specify its filter - save => The `record_cover` template was saved with the modifications, thus combining `t-att-style` and `style` attributes. task-jke Forward-Port-Of: odoo/odoo#219013
This fix prevents an error when a user removes the company from a new expense form. The expense workflow now checks that a company is present before looking up its currency, avoiding a crash and keeping expense entry usable in multi-company setups.
Original PR description
This error occurs when the user removes the company from the expense form view. Steps to reproduce: - Install ``hr_expense`` modules - Create another Company - Now open a new expense and remove the ``Company`` Traceback: ``ValueError: Expected singleton: res.currency()`` At [1], the company is not set, and we are attempting to retrieve the currency ID from it. This commit resolves the issue by ensuring that the company is present before proceeding. [1]- https://github.com/odoo/odoo/blob/408fbf8efbbfbc47c3171d9ee082e3831016f6db/addons/hr_expense/models/hr_expense.py#L341-L355 sentry-6112771029 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This fix prevents an error when a user tries to return a stock receipt that was deleted in another browser tab. Instead of crashing, the stock return flow now handles the missing receipt more safely, improving reliability in multi-tab usage.
Original PR description
The error occurs because we are deleting stock picking from one tab and trying to return that picking from another tab. Steps to reproduce: --- - Install ``sale_stock`` module - Go to receipt > open one receipt(state: Draft or Ready) - Now duplicate that tab > delete that receipt from one tab and click on 'Return' button in another tab Traceback: --- ``ValueError: Expected singleton: stock.picking()`` At [1], we are facing an error because we are accessing the ``_can_return`` method but don't have a stock picking ID. [1]- https://github.com/odoo/odoo/blob/f613b87c38d208730ba2470e0a26a110c2089b66/addons/stock/wizard/stock_picking_return.py#L104 sentry-6012377745 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Users who reset their Google Calendar account more than once will now see a clear, user-friendly warning instead of a technical crash message. This helps reduce confusion and support effort when the calendar authentication token has already been removed.
Original PR description
This error occurs when a user resets their Google Calendar account. As a result, the authentication token disappears, and if they attempt to reset the account again, an error is triggered. Steps to reproduce: --- - Install `google_calendar` module - Set Google Calendar Credentials in settings. - Go to Calendar and Sync with Google - Users > Mitchell Admin > Calendar - `Reset Account` > `Confirm` (keep the selections as default) - Again `Reset Account` > `User's Existing Events: Delete from Both` Stack Trace: --- AttributeError: An authentication token is required Due to an AttributeError, users are seeing an error message in the stack trace instead of a user-friendly notification. sentry-6311340556 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This fix prevents an error that could interrupt notifications when todo activities are created or updated. Users linked to overdue activities will now be notified reliably, reducing disruption in activity follow-up workflows.
Original PR description
An UnboundLocalError was occurring due to referencing the variable `activity` before it was assigned a value. Traceback : --- ``` UnboundLocalError: cannot access local variable 'activity' where it…
An UnboundLocalError was occurring due to referencing the variable `activity` before it was assigned a value.
Traceback :
---
```
UnboundLocalError: cannot access local variable 'activity' where it is not associated with a value
File "odoo/http.py", line 2416, in __call__
response = request._serve_db()
File "odoo/http.py", line 1942, in _serve_db
return self._transactioning(
File "odoo/http.py", line 2006, in _transactioning
return service_model.retrying(func, env=self.env)
File "odoo/service/model.py", line 137, in retrying
result = func()
File "odoo/http.py", line 1973, in _serve_ir_http
response = self.dispatcher.dispatch(rule.endpoint, args)
File "odoo/http.py", line 2224, in dispatch
result = self.request.registry['ir.http']._dispatch(endpoint)
File "odoo/addons/base/models/ir_http.py", line 335, in _dispatch
result = endpoint(**request.params)
File "odoo/http.py", line 741, in route_wrapper
result = endpoint(self, *args, **params_ok)
File "addons/rpc/controllers.py", line 177, in jsonrpc
return dispatch_rpc(service, method, args)
File "odoo/http.py", line 397, in dispatch_rpc
return dispatch(method, params)
File "odoo/service/model.py", line 85, in dispatch
res = execute_kw(db, uid, *params[3:])
File "odoo/service/model.py", line 108, in execute_kw
return execute(db, uid, obj, method, *args, **kw or {})
File "odoo/service/model.py", line 115, in execute
res = execute_cr(cr, uid, obj, method, *args, **kw)
File "odoo/service/model.py", line 99, in execute_cr
result = retrying(partial(call_kw, recs, method, args, kw), env)
File "odoo/service/model.py", line 137, in retrying
result = func()
File "odoo/service/model.py", line 62, in call_kw
result = getattr(recs, name)(*args, **kwargs)
File "<decorator-gen-44>", line 2, in create
File "odoo/orm/decorators.py", line 317, in _model_create_multi
return create(self, [arg])
File "addons/mail/models/mail_activity.py", line 303, in create
activity.user_id._bus_send("mail.activity/updated", {"activity_created": True})
```
The error occurs at [1] because `activity` is used in the `_bus_send` call without being properly initialized within that scope.
This commit will resolve the above error by passing `todo_activities` instead of `activity`, ensuring that all users linked to overdue activities are properly notified.
[1]- https://github.com/odoo/odoo/blob/f82f768729d897fa54b04789f4e0637ed1bb27f4/addons/mail/models/mail_activity.py#L306-L308
sentry-6273716627
---
I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-prFixes an issue where customers could see an error when editing portal information if no invoice sending method was configured. This keeps the portal form usable and avoids a confusing interruption for users.
Original PR description
When there is no invoice sending method and the user tries to edit information in the portal, a traceback will appear. Traceback: ``` QWebException: Error while render the template TypeError: object of type 'NoneType' has no len() Node: <div class="row m-0 p-0" t-if="len(invoice_sending_methods) > 1"/> ``` https://github.com/odoo/odoo/blob/14ddd49c52f0030f7dbad7d4889f4edf1b74ae39/addons/account/views/account_portal_templates.xml#L260 When there is no invoice sending method, ``invoice_sending_methods`` will be None. So, It will lead to the above traceback. sentry-6015474981 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
When a task is moved to a different project, its attached documents are now moved to the correct project workspace as well. This keeps files organized in the right place and avoids users finding task documents in an old project's workspace; private projects move documents to the internal workspace.
Original PR description
- 16.0 ### Steps to reproduce: - Install document and project. - Create a project and task. - Add a document to the task. - Change the task's project to another project. - Open the attached document from the task. ### Issue: You will observe that the document is not in the new project's workspace. It's still present in the older project's workspace ### Solution: Update the document's folder on the change of the task's project. task-4389443 Forward-Port-Of: odoo/enterprise#91510 Forward-Port-Of: odoo/enterprise#75481
This fix prevents an error when users manually enter a tracking reference for a Sendcloud delivery. Instead of showing a technical crash, the system now handles the missing Sendcloud parcel details gracefully and can display a proper user-facing message.
Original PR description
**Steps to reproduce:** 1. Install delivery_sendcloud. 2. Create a new shipping method (Inventory -> Configuration) - Provider: sendcloud - Put the public and secret key - Assign Delivery Product 3.…
**Steps to reproduce:** 1. Install delivery_sendcloud. 2. Create a new shipping method (Inventory -> Configuration) - Provider: sendcloud - Put the public and secret key - Assign Delivery Product 3. Create a sales order with a deliverable product 4. Confirm the sale order 5. Go to the delivery 6. Manually enter a random tracking reference. 7. Make sure carrier is set to the Sendcloud delivery method 8. Click on "tracking," or get back to the sales order (click "preview"). 9. A traceback occurs. **Issue:** `A TypeError: 'bool' object is not subscriptable` when accessing sendcloud_parcel_ref, which is expected to be a list or JSON but is instead a boolean. **Causes:** The code assumes the presence of valid Sendcloud parcel reference data, but manually entering a tracking reference bypasses the [_send_shipment](https://github.com/odoo/enterprise/blob/6ecf0af6b6874460d300ede6cc7c092927607810/delivery_sendcloud/models/sendcloud_service.py#L102) method that populates this field. As a result, sendcloud_parcel_ref can remain False. https://github.com/odoo/enterprise/blob/df924ef8adffb3e42419a44ecf22fec3059917c4/delivery_sendcloud/models/delivery_carrier.py#L196 **Solution:** Return None if there is no Sendcloud parcel reference, which will raise a UserError from the below line https://github.com/odoo/odoo/blob/17.0/addons/stock_delivery/models/stock_picking.py#L288 Co-Author By - alsh@odoo.com opw-4894677 Forward-Port-Of: odoo/enterprise#89444
Fixes an error that could block recruiters from posting jobs to Monster when the saved username contains non-ASCII or accented characters. This makes the Monster integration more reliable for users with international credentials.
Original PR description
This error occurs when non-ASCII characters are included in the username for the Monster credentials. Steps to reproduce: --- - Install `hr_recruitment_integration_monster` module - In the settings, add the Monster credentials, and enter non-ASCII characters in the Username - Recruitment > Applications > Job Boards Post > Publish on jobs Board > Add required fields > Post Traceback: --- TypeError: comparing strings with non-ASCII characters is not supported This commit resolves the above error by encoding the string to bytes, as consteq does not support non-ASCII characters in string comparison. sentry-6554749046
Fixed an issue where editing a signing template could replace popup titles with placeholder text. This keeps reused signing templates clear and prevents incorrect field labels from appearing in future documents.
Original PR description
### Steps to reproduce:
- Create a document using a sign template.
- Add a new field or modify the placeholder of an existing one.
- Validate the changes.
- Notice title is replaced by the value entered in placeholder.
### Issue:
After editing a template that has already been used in a signed document, the title of each sign item popup is unexpectedly replaced with the value
entered in the placeholder for that item. This corrupts the template and results
in incorrect title of sign itme being shown when the template is reused.
### Cause:
The issue occurs because the title was being updated with the placeholder of that particular sign item.
### Solution:
Added a prop for title of sign item in SignCustomPopover so that we can make the title as name of the sign item or the type like ('Name', 'Text', 'Signature') rather than the placeholder of the sign item.
---
task-4872963
Forward-Port-Of: odoo/enterprise#90348Opening budget line reports for a budget with no lines no longer causes an error when viewing the theoretical percentage measure. Instead, the value is shown as zero, allowing users to continue analyzing budgets without interruption.
Original PR description
When we create a new budget without any budget lines and then attempt to calculate the ``theoretical_percentage`` in the budget lines, an error occurs. Steps to reproduce: - Install the ``account_budget`` module - Create a new budget and make ``Budget Lines`` empty - Now select that newly created budget and click on ``Budget Lines`` button - Go to the ``Pivot`` view and click on the ``Measures`` button - Click on the ``Theoritical Percentage`` Traceback: ``ZeroDivisionError: division by zero`` This error occurred at [1] because no ``records`` were found in the budget lines, as they were left empty when the budget was created. This commit will fix the error by checking the length of the records. If it is zero, will return zero. [1]- https://github.com/odoo/enterprise/blob/e4aec10fc1dd6a40e29f34c3aed71dc17b9ff2c6/account_budget/models/budget_line.py#L185-L186 sentry-5795601874