Friday, January 9, 2026
6 changes · 17.0
Resolved issues and error corrections
This update fixes a technical issue where expired payment sessions caused errors in the Odoo system. Instead of throwing an error, the system now validates the session, preventing disruptions to the payment process. This ensures smoother and more reliable payment transactions for our users.
Original PR description
Currently, an exception occurs when a payment session has expired at [1], To handle this issue, raise a validation error instead of raise an exception. link [1]:…
Currently, an exception occurs when a payment session has expired at [1], To handle this issue, raise a validation error instead of raise an exception.
link [1]: https://github.com/odoo/odoo/blob/677f7d0c6085dba4ab9c27a53b4c3fd2d88b190e/addons/payment/controllers/post_processing.py#L48
Traceback On Sentry:
```
Exception: tx_not_found
File "odoo/http.py", line 2248, in __call__
response = request._serve_db()
File "odoo/http.py", line 1823, in _serve_db
return self._transactioning(_serve_ir_http, readonly=ro)
File "odoo/http.py", line 1843, in _transactioning
return service_model.retrying(func, env=self.env)
File "odoo/service/model.py", line 134, in retrying
result = func()
File "odoo/http.py", line 1821, in _serve_ir_http
return self._serve_ir_http(rule, args)
File "odoo/http.py", line 1828, in _serve_ir_http
response = self.dispatcher.dispatch(rule.endpoint, args)
File "odoo/http.py", line 2053, in dispatch
result = self.request.registry['ir.http']._dispatch(endpoint)
File "odoo/addons/base/models/ir_http.py", line 220, in _dispatch
result = endpoint(**request.params)
File "odoo/http.py", line 756, in route_wrapper
result = endpoint(self, *args, **params_ok)
File "addons/payment/controllers/post_processing.py", line 48, in poll_status
raise Exception('tx_not_found')
```
sentry-4992700034
---
I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-prThis update fixes an error that occurred when trying to access the Profit & Loss report. The issue was caused by a missing external ID, which previously resulted in a system error. This change ensures the report can be opened smoothly, even if the external ID is not present.
Original PR description
An error occurs when the system tries to retrieve an external ID of the report 'account_reports.profit_and_loss' at [1], but it is unavailable. link [1]: https://github.com/odoo/enterprise/blob/67461493831b0f561daf9e499dd4fcb49a053d21/account_reports/models/account_report.py#L5399 Steps to reproduce: - Install the 'industry_fsm' module and. - Go to Settings / Technical / Sequences & Identifiers / External Identifiers, And delete 'account_reports.profit_and_loss'. - Go to Accounting / Configuration / Management / Accounting Reports and try to open any report. ```ValueError: External ID not found in the system: account_reports.profit_and_loss``` To handle this issue, add 'raise_if_not_found=False' so that if the external view id of the report 'account_reports.profit_and_loss' is not found, then it will get a None value instead of raising an error. Sentry-5645614328
This update resolves an error that occurred when users accessed task reports from the portal view. The issue stemmed from attempting to use a feature not available in the task object, preventing users from viewing reports. This change ensures the reporting functionality works correctly within the portal.
Original PR description
Currently, The error is occurs whenever user open a 'task' in portal view. Steps to reproduce - Install an 'industry_fsm' module. - Open a portal view. - Click on 'Tasks' and open an any record form…
Currently, The error is occurs whenever user open a 'task' in portal view.
Steps to reproduce
- Install an 'industry_fsm' module.
- Open a portal view.
- Click on 'Tasks' and open an any record form it.
Traceback on sentry:
```
AttributeError: 'project.task' object has no attribute 'display_sign_report_primary'
File "<2406>", line 1650, in template_2406
File "<2406>", line 1632, in template_2406_content
File "<2406>", line 555, in template_2406_t_call_0
File "<2406>", line 473, in template_2406_t_call_3
File "<2406>", line 73, in template_2406_t_set_12
QWebException: Error while render the template
AttributeError: 'project.task' object has no attribute 'display_sign_report_primary'
Template: ir.ui.view(2406,)
Path: /t/t/body/div[1]/div/t/t[2]/div/div[2]
Node: <div t-if="task.is_fsm and (task.display_sign_report_primary or task.display_sign_report_secondary)" class="d-grid flex-grow-1 align-items-center mb-2"/>
File "odoo/http.py", line 2157, in __call__
response = request._serve_db()
File "odoo/http.py", line 1732, in _serve_db
return service_model.retrying(self._serve_ir_http, self.env)
File "odoo/service/model.py", line 133, in retrying
result = func()
File "odoo/http.py", line 1759, in _serve_ir_http
response = self.dispatcher.dispatch(rule.endpoint, args)
File "odoo/http.py", line 1873, in dispatch
return self.request.registry['ir.http']._dispatch(endpoint)
File "addons/website/models/ir_http.py", line 235, in _dispatch
response = super()._dispatch(endpoint)
File "odoo/addons/base/models/ir_http.py", line 209, in _dispatch
result.flatten()
File "odoo/http.py", line 1248, in flatten
self.response.append(self.render())
File "odoo/http.py", line 1240, in render
return request.env["ir.ui.view"]._render_template(self.template, self.qcontext)
File "addons/website/models/ir_ui_view.py", line 443, in _render_template
return super()._render_template(template, values=values)
File "odoo/addons/base/models/ir_ui_view.py", line 2044, in _render_template
return self.env['ir.qweb']._render(template, values)
File "odoo/tools/profiler.py", line 292, in _tracked_method_render
return method_render(self, template, values, **options)
File "odoo/addons/base/models/ir_qweb.py", line 593, in _render
result = ''.join(rendering)
File "<2406>", line 1656, in template_2406
```
When the user open a 'task' in portal view. There's an issue where the system attempts to access an attribute 'display_sign_report_primary' from 'project.task' object [1] and the 'project.task' object has no attribute 'display_sign_report_primary' at that specific point.
Line[1]:https://github.com/odoo/enterprise/blob/ce9122ab0fa8c393e4c37280fcef52377d6fb16f/industry_fsm/views/project_portal_templates.xml#L39
This commit solves this issue by accessing an attribute 'display_sign_report_primary' in the 'industry_fsm_report' module instead of 'industry_fsm' module. This adjustment is necessary as the 'display_sign_report_primary' attribute is not present in the 'industry_fsm'
module.
sentry-4673429933This update resolves an issue where adding to a product's on-hand quantity would trigger a system error. The fix ensures the system handles zero quantity updates correctly, preventing the 'float division by zero' error and allowing users to accurately manage stock levels. This improves the stability and reliability of the stock management process.
Original PR description
Currently, an error occurs when adding an on-hand quantity to a product. Step to produce: - Install the 'l10n_ke_edi_oscu_stock' module. - Create a product, add 'Packaging Unit', 'Package Quantity', 'Origin Country', 'eTIMS Product Type', and 'UNSPsc Category' in the accounting section. - Set a tracking as 'No Tracking' - Click an updated Quantity and change it. ```ZeroDivisionError: float division by zero``` An error occurs when the system tries to divide a float number by zero at [1]. Link [1]: https://github.com/odoo/enterprise/blob/29e8e61ded0e5417dc05f98a87d364bbb0f15661/l10n_ke_edi_oscu_stock/models/stock_move.py#L135 To handle this issue, Add a condition to ensure that if 'quantity_product_uom' is zero, assign a price as a zero. Sentry-5878214789
A previous error prevented users from opening the Profit and Loss report when certain column settings were used. This update corrects a formatting issue that caused the error, ensuring the report can now be accessed without interruption. This resolves a technical problem impacting report generation.
Original PR description
Currently, An error is generated when trying to open the 'Profit and Loss' report. Steps to reproduce: - Install an 'account_reports' module. - Navigate to Accounting / Configuration / Management /…
Currently, An error is generated when trying to open the 'Profit and Loss' report.
Steps to reproduce:
- Install an 'account_reports' module.
- Navigate to Accounting / Configuration / Management / Accounting Reports, Open 'Profit and Loss', Click on the 'Column' page, and change the value of 'Figure Type' to 'Datetime'
- Open reports Accounting / Reporting / Statement Reports / Profit and Loss.
Stack Trace:
```
AssertionError: null
File "odoo/http.py", line 2248, in __call__
response = request._serve_db()
File "odoo/http.py", line 1823, in _serve_db
return self._transactioning(_serve_ir_http, readonly=ro)
File "odoo/http.py", line 1843, in _transactioning
return service_model.retrying(func, env=self.env)
File "odoo/service/model.py", line 134, in retrying
result = func()
File "odoo/http.py", line 1821, in _serve_ir_http
return self._serve_ir_http(rule, args)
File "odoo/http.py", line 1828, in _serve_ir_http
response = self.dispatcher.dispatch(rule.endpoint, args)
File "odoo/http.py", line 2053, in dispatch
result = self.request.registry['ir.http']._dispatch(endpoint)
File "odoo/addons/base/models/ir_http.py", line 220, in _dispatch
result = endpoint(**request.params)
File "odoo/http.py", line 756, in route_wrapper
result = endpoint(self, *args, **params_ok)
File "addons/web/controllers/dataset.py", line 38, in call_kw
return self._call_kw(model, method, args, kwargs)
File "addons/web/controllers/dataset.py", line 34, in _call_kw
return call_kw(request.env[model], method, args, kwargs)
File "odoo/api.py", line 458, in call_kw
result = getattr(recs, name)(*args, **kwargs)
File "home/odoo/src/enterprise/saas-17.2/account_reports/models/account_report.py", line 4441, in get_report_information
'lines': self._get_lines(options, all_column_groups_expression_totals=all_column_groups_expression_totals, warnings=warnings),
File "home/odoo/src/enterprise/saas-17.2/account_reports/models/account_report.py", line 2141, in _get_lines
line_dict = self._get_static_line_dict(options, line, all_column_groups_expression_totals, parent_id=parent_generic_id)
File "home/odoo/src/enterprise/saas-17.2/account_reports/models/account_report.py", line 2356, in _get_static_line_dict
{'formula': expression.formula, 'subformula': expression.subformula, 'value': self.format_value(options, column_group_totals[expression]['value'], figure_type)}
File "home/odoo/src/enterprise/saas-17.2/account_reports/models/account_report.py", line 4834, in format_value
return self._format_value(options=options, value=value, figure_type=figure_type, format_params=format_params)
File "home/odoo/src/enterprise/saas-17.2/account_reports/models/account_report.py", line 4870, in _format_value
return format_date(self.env, value)
File "odoo/tools/misc.py", line 1327, in format_date
return babel.dates.format_date(value, format=date_format, locale=locale)
File "babel/dates.py", line 700, in format_date
return pattern.apply(date, locale)
File "babel/dates.py", line 1232, in apply
return self % DateTimeFormat(datetime, locale)
File "babel/dates.py", line 1238, in __init__
assert isinstance(value, (date, datetime, time))
```
The issue occurs when the system tries to format a value into a date at [1] that is not a string.
link [1]: https://github.com/odoo/enterprise/blob/d31f359e543a9413623d4a15aebba54e8d76d023/account_reports/models/account_report.py#L4797
To resolve this issue, Add a try-except block to handle errors that occur during date formatting
Sentry-5646185230This update enhances the clarity of expense bills by using payment reference notes to populate payment term line names. Previously, company account expenses resulted in empty payment term line names. This change ensures users see relevant notes from the payment reference, improving traceability and accounting context. It aligns with standard invoice practices.
Original PR description
Currently, when creating a bill from an expense with payment_mode='company_account', the payment term line's name is set to an empty string because expenses are immediate payment expenses. However, users may enter notes in the payment_reference field. The account.move.line's `_compute_name` ([1](https://github.com/odoo/odoo/blob/3f4e45ecaca46a98c904536658728a1f1571bdbd/addons/account/models/account_move_line.py#L520)) method uses payment_reference to compute the name for payment term lines. By setting the name in needed_terms from payment_reference, the payment term line will display the user's notes, providing better context and traceability in the accounting entries. This change ensures consistency with the standard invoice behavior where payment_reference is used to populate the payment term line name. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr