Daily updates from Odoo
Friday, November 18, 2022
22 changes · master
Enhancements to existing features
The settings screens for Peru EDI and VoIP no longer show an unnecessary enterprise upgrade label. This avoids confusing enterprise users with a prompt that does not apply to them, since these features are already part of the enterprise offering.
Original PR description
In **l1on_pe_edit** and **voip** module, along with the fields l10n_pe_edi_test_env and module_voip in settings the upgrade to enterprise widget(upgrade_boolean ) is added and it doesn't have any effect as the both the modules is part of the enterprise repository and show only for the enterprise users.
Rental orders now show rental status labels only when the sales order actually includes rentable products. This avoids misleading statuses such as “Returned” appearing on regular sales orders, helping staff interpret orders more accurately.
Original PR description
Before this commit in the rental app rental flags appeared even in the case no rentable product is present in the SO. In particular the tag "Returned" appeared when the SO contained only not rental products. After this commit flags about rent status will appear only if there are rental products in the SO. Task - 2916253
This change removes upgrade prompts from settings that only exist in Enterprise modules. It avoids showing irrelevant messages to users who are already using Enterprise-only features, making the settings experience clearer.
Original PR description
In a Community database, in Settings, when checking a config exclusive to Enterprise, the Upgrade Boolean field is used to display a popup suggesting the user to upgrade to Enterprise. The presence of this field does not make sense for modules that are Enterprise-only, such as VoIP. This commit deletes occurrences of the Upgrade Boolean field in Enterprise modules, as they are not relevant there. Original PR: https://github.com/odoo/enterprise/pull/33525
The Monthly Recurring Revenue log now opens only in the list view, since the form view did not provide additional useful details. This reduces screen complexity and makes it easier for users to review subscription revenue changes efficiently.
Original PR description
Remove the default form view access on MRR log. The MRR logs default form view offer no more useful information than the tree view. The goal of this PR is thus to reduce the overall complexity by removing access to this form view.
The rental product view now includes total quantity information when opening related rentals. This gives sales and rental teams a clearer at-a-glance picture of rented volumes without needing extra checks.
Original PR description
task: 3059056
Resolved issues and error corrections
Updated command descriptions in the appointment and knowledge editors to remove unnecessary periods. This keeps wording consistent in the user interface and related translation files.
Original PR description
Remove dot (period) in powerbox commands descriptions, update corresponding msgid's in .pot files. task-2901665 https://github.com/odoo/odoo/pull/106032
Code cleanup and technical improvements
This update renames an internal VoIP sound component from “SoundEffect” to “Audio” for clearer wording. It does not change how users make or receive calls, but it helps keep the code easier to maintain for future VoIP improvements.
Original PR description
Community: https://github.com/odoo/odoo/pull/99634
This update removes default quality email aliases that could conflict with real mail setups and improves the help text shown when certain lists are empty. It reduces configuration risk and keeps user guidance clearer across expense extraction, knowledge, quality, and signing workflows.
Original PR description
PURPOSE Cleanup alias definitions and usage to have as few invalid or dummy data as possible. Cleanup empty list helpers override. SPECIFCIATIONS hr_expense_extract: fix empty help message construct…
PURPOSE
Cleanup alias definitions and usage to have as few invalid or dummy
data as possible. Cleanup empty list helpers override.
SPECIFCIATIONS
hr_expense_extract: fix empty help message construct
* correctly adding a default message if no help is already given;
* use right tools to check content of html content (is_html_empty);
* correctly translate help message;
* correctly call super() in order to let sub modules add their custom content
notably MailThread (alias) and HrExpense (specific alias);
* trying to make code simpler to follow;
quality: avoid defining alias by default
'quality' module holds default alias to create alerts. Issue with default
aliases is that they can be wrong. Indeed it depends on mail server
configuration (e.g. not always owning all possible emails of a domain when
using its own address like gmail). This may also conflicts with existing
email addresses or already-defined aliases without being really configurable.
mail, various: cleanup empty list help message overrides
Purpose is to cleanup code: stop using help parameter name (use help_message as
help is a keyword), try to call super(), ...
LINKS
See community PR for more details.
Task-2710804 (Mail: Clean MailThread Posting API)
Prepares Task-36879 (Mail: Support MultiCompany Aliases)Miscellaneous changes
Some reports had an incorrect context field and returned 'account.financial.html.report' as model instead of 'account.report', and 'id' instead of the key 'report_id'. This led to a keyError in AccountReport.execute_action.. opw-3071031 Forward-Port-Of: odoo/enterprise#34123
Original PR description
Some reports had an incorrect context field and returned 'account.financial.html.report' as model instead of 'account.report', and 'id' instead of the key 'report_id'. This led to a keyError in AccountReport.execute_action.. opw-3071031 Forward-Port-Of: odoo/enterprise#34123
In Mexico, the "Daylight Savings Time" is gone. This has created unwanted results in Odoo's code. https://www.unotv.com/nacional/aprueba-senado-la-desaparicion-del-horario-de-verano/ "En los estados del noroeste del país como Baja California Sur, Nayarit, Sonora y Sinaloa se regirán con el horario del pacífico y la diferencia será de menos una hora con respecto a zona centro." It has been reported that, since Nov 4th, customers whose Company is in Baja California Sur, Nayarit, Sonora, or
Original PR description
In Mexico, the "Daylight Savings Time" is gone. This has created unwanted results in Odoo's code. https://www.unotv.com/nacional/aprueba-senado-la-desaparicion-del-horario-de-verano/ "En los estados del noroeste del país como Baja California Sur, Nayarit, Sonora y Sinaloa se regirán con el horario del pacífico y la diferencia será de menos una hora con respecto a zona centro." It has been reported that, since Nov 4th, customers whose Company is in Baja California Sur, Nayarit, Sonora, or Sinaloa have a difference of one hour between the time in the Odoo Document and the time in the SAT. They cannot sign invoices until one hour after. Chihuahua is now part of Central Timezone. This change indirectly affected Baja California Sur, Sinaloa, and Nayarit, modifying the timezone one hour earlier. This fix proposed by @lao-odoo moves BCS, SIN and NAY to ´America/Mazatlán' opw-3060095 Forward-Port-Of: odoo/enterprise#34092
latam 923 / adhoc 56731 --- When error realted to a expired certificate the user receive a traceback error beause this one was not properly manage. With this changes will recieve the proper error message without any traceback. ### Before this change  Complete traceback error ``` Error: Odoo Server Error Traceback (most recent call last): File "/home
Original PR description
latam 923 / adhoc 56731 --- When error realted to a expired certificate the user receive a traceback error beause this one was not properly manage. With this changes will recieve the proper error…
latam 923 / adhoc 56731
---
When error realted to a expired certificate the user receive a traceback error beause this one was not properly manage. With this changes will recieve the proper error message without any traceback.
### Before this change

Complete traceback error
```
Error:
Odoo Server Error
Traceback (most recent call last):
File "/home/odoo/src/enterprise/l10n_ar_edi/models/res_config_settings.py", line 52, in l10n_ar_connection_test
self.company_id._l10n_ar_get_connection(webservice)
File "/home/odoo/src/enterprise/l10n_ar_edi/models/res_company.py", line 129, in _l10n_ar_get_connection
token_data = connection._l10n_ar_get_token_data(self, afip_ws)
File "/home/odoo/src/enterprise/l10n_ar_edi/models/l10n_ar_afipws_connection.py", line 169, in _l10n_ar_get_token_data
private_key, certificate = company.sudo()._get_key_and_certificate()
File "/home/odoo/src/enterprise/l10n_ar_edi/models/res_company.py", line 157, in _get_key_and_certificate
self._l10n_ar_is_afip_crt_expire()
File "/home/odoo/src/enterprise/l10n_ar_edi/models/res_company.py", line 104, in _l10n_ar_is_afip_crt_expire
raise UserError(_('The AFIP certificate is expired, please renew in order to continue'))
odoo.exceptions.UserError: ('El certificado AFIP esta expirado, por favor renovarlo para continuar', '')
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/home/odoo/src/odoo/odoo/http.py", line 624, in _handle_exception
return super(JsonRequest, self)._handle_exception(exception)
File "/home/odoo/src/odoo/odoo/http.py", line 310, in _handle_exception
raise pycompat.reraise(type(exception), exception, sys.exc_info()[2])
File "/home/odoo/src/odoo/odoo/tools/pycompat.py", line 14, in reraise
raise value
File "/home/odoo/src/odoo/odoo/http.py", line 669, in dispatch
result = self._call_function(**self.params)
File "/home/odoo/src/odoo/odoo/http.py", line 350, in _call_function
return checked_call(self.db, *args, **kwargs)
File "/home/odoo/src/odoo/odoo/service/model.py", line 94, in wrapper
return f(dbname, *args, **kwargs)
File "/home/odoo/src/odoo/odoo/http.py", line 339, in checked_call
result = self.endpoint(*a, **kw)
File "/home/odoo/src/odoo/odoo/http.py", line 915, in __call__
return self.method(*args, **kw)
File "/home/odoo/src/odoo/odoo/http.py", line 515, in response_wrap
response = f(*args, **kw)
File "/home/odoo/src/odoo/addons/web/controllers/main.py", line 1346, in call_button
action = self._call_kw(model, method, args, kwargs)
File "/home/odoo/src/odoo/addons/web/controllers/main.py", line 1334, in _call_kw
return call_kw(request.env[model], method, args, kwargs)
File "/home/odoo/src/odoo/odoo/api.py", line 390, in call_kw
result = _call_kw_multi(method, model, args, kwargs)
File "/home/odoo/src/odoo/odoo/api.py", line 377, in _call_kw_multi
result = method(recs, *args, **kwargs)
File "/home/odoo/src/enterprise/l10n_ar_edi/models/res_config_settings.py", line 57, in l10n_ar_connection_test
else '\n'.join(re.search('.*' + webservice + ': (.*)\n\n', error.name).groups())
AttributeError: 'NoneType' object has no attribute 'groups'
```
### After this change

Forward-Port-Of: odoo/enterprise#33224To reproduce (V16): 1. Install payroll 2. Go to Payroll > Contracts > Contracts 3. Create 2 contracts, with no employee set on it, make sure they are both in a different state (one new and one running for example) 4. Go to payroll dashboard => JS error, which hide a Python traceback: ```py ... File "/home/odoo/Odoo/code/version/16.0/enterprise/hr_payroll/models/hr_payslip.py", line 1116, in <listcomp> group['employee_id'][0] for group in employee_contract_groups if group['sta
Original PR description
To reproduce (V16):
1. Install payroll
2. Go to Payroll > Contracts > Contracts
3. Create 2 contracts, with no employee set on it, make sure they are both in a different state (one new and one running for example)
4. Go to payroll dashboard => JS error, which hide a Python traceback:
```py
...
File "/home/odoo/Odoo/code/version/16.0/enterprise/hr_payroll/models/hr_payslip.py", line 1116, in <listcomp>
group['employee_id'][0] for group in employee_contract_groups if group['state'] == 2]
TypeError: 'bool' object is not subscriptable
```
Issue reason:
As the contract does not have any employee associated to it,
it fails to retrieve its value.
After this commit:
Contract without employee associated are excluded from
the search domain.
So contracts searched does always have an employee set on it
OPW-3069633
Forward-Port-Of: odoo/enterprise#34060This PR fix a bug where the sql query for _get_invoiced in subscription SO's would return invoice (Account move) you did not have access to. This PR add a check in the sql query to ensure that you have access to the invoice it returns. Forward-Port-Of: odoo/enterprise#33966 Forward-Port-Of: odoo/enterprise#33709
Original PR description
This PR fix a bug where the sql query for _get_invoiced in subscription SO's would return invoice (Account move) you did not have access to. This PR add a check in the sql query to ensure that you have access to the invoice it returns. Forward-Port-Of: odoo/enterprise#33966 Forward-Port-Of: odoo/enterprise#33709
1.Fix the issue when employees are required on WO, the analytic accounting entries are not correctly posted 2. Fix the issue when employee is needed on the WO, the real duration is not correctly computed Forward-Port-Of: odoo/enterprise#33399
Original PR description
1.Fix the issue when employees are required on WO, the analytic accounting entries are not correctly posted 2. Fix the issue when employee is needed on the WO, the real duration is not correctly computed Forward-Port-Of: odoo/enterprise#33399
Since the whitespace is removed by the compiler, we have to put the small tags on the same line separated by a white space. Usually a padding is sufficient but not always. Task-3047477 Forward-Port-Of: odoo/enterprise#33903
Original PR description
Since the whitespace is removed by the compiler, we have to put the small tags on the same line separated by a white space. Usually a padding is sufficient but not always. Task-3047477 Forward-Port-Of: odoo/enterprise#33903
The breadcrumbs of the manual reconciliation widget was broken before this PR. It was displayed "unnamed" which is not clear for the user. This PR correct that by putting "Reconciliation" instead of "unnamed" which is the behaviour of the flow Accounting -> Reconciliation. The problem is that the name is not store in the database so the breadcrumbs become "unnamed". To deal with that, I've added the name to the function that update the control panel and breadcrumbs and the init function. I
Original PR description
The breadcrumbs of the manual reconciliation widget was broken before this PR. It was displayed "unnamed" which is not clear for the user. This PR correct that by putting "Reconciliation" instead of "unnamed" which is the behaviour of the flow Accounting -> Reconciliation. The problem is that the name is not store in the database so the breadcrumbs become "unnamed". To deal with that, I've added the name to the function that update the control panel and breadcrumbs and the init function. I've also written a getTitle function that will be used to update the "controlPanelProps.title". Forward-Port-Of: odoo/enterprise#33842
before this commit super was called in the middel of the write function, making it impossible to properly override the function. The only methods to everride the function would be rewriting it completely and tempering with the MRO or calling the parent-class of RentalOrderLine dyrectly, which are methods that should be avoided. after this commit, the portion after the super call is isolated into a seperate function, making it possible to override the portion before and after super seperately.
Original PR description
before this commit super was called in the middel of the write function, making it impossible to properly override the function. The only methods to everride the function would be rewriting it completely and tempering with the MRO or calling the parent-class of RentalOrderLine dyrectly, which are methods that should be avoided. after this commit, the portion after the super call is isolated into a seperate function, making it possible to override the portion before and after super seperately. Forward-Port-Of: odoo/enterprise#33837
Clicking on AML label in bank recon label should expand the line to display extra data in the cell. Width this PR, it truncate the label and displays the whole label and extra data when the user clicks on it. Forward-Port-Of: odoo/enterprise#33524
Original PR description
Clicking on AML label in bank recon label should expand the line to display extra data in the cell. Width this PR, it truncate the label and displays the whole label and extra data when the user clicks on it. Forward-Port-Of: odoo/enterprise#33524
Steps: - Open studio on lots/serial form view - traceback Because studioIsVisible key is added to the props by studio but not defined in Buttonn and Notebook opw-3039648 Forward-Port-Of: odoo/enterprise#33566
Original PR description
Steps: - Open studio on lots/serial form view - traceback Because studioIsVisible key is added to the props by studio but not defined in Buttonn and Notebook opw-3039648 Forward-Port-Of: odoo/enterprise#33566
Private functions cannot be used for report file exports. Because of this, XAF generation was not possible anymore. Forward-Port-Of: odoo/enterprise#34070
Original PR description
Private functions cannot be used for report file exports. Because of this, XAF generation was not possible anymore. Forward-Port-Of: odoo/enterprise#34070
currently some of the enterprise modules is having LGPL license, updating the LGPL license to OEEL-1 license Forward-Port-Of: odoo/enterprise#33830
Original PR description
currently some of the enterprise modules is having LGPL license, updating the LGPL license to OEEL-1 license Forward-Port-Of: odoo/enterprise#33830
And trigger refresh of client's onboarding panel (see below). In two situations, we didn't handle well the case where an opened onboarding step is deleted after it was opened but before it was validated: * 2nd onboarding step (link): The returned value of `AppointmentOnboardingLink.search_or_create_onboarding_invite` should include the (valid) invite url created. * 3rd onboarding step (provider config): Using `raise_if_not_found=False` is not sufficient, we also mustn't use the re
Original PR description
And trigger refresh of client's onboarding panel (see below). In two situations, we didn't handle well the case where an opened onboarding step is deleted after it was opened but before it was validated: * 2nd onboarding step (link): The returned value of `AppointmentOnboardingLink.search_or_create_onboarding_invite` should include the (valid) invite url created. * 3rd onboarding step (provider config): Using `raise_if_not_found=False` is not sufficient, we also mustn't use the result if it evaluates to None. This also revealed the importance of returning wasFirstValidation True in these cases in order to force a refresh of the onboarding panel. Task-3046707 Forward-Port-Of: odoo/enterprise#33355