Friday, September 13, 2024
16 changes · master
Enhancements to existing features
The recurring revenue report now lets users search or filter by company. This makes it easier for businesses operating multiple companies to review subscription revenue for the right organization.
The timesheet leaderboard now moves below the header only when there is not enough space, instead of switching based on a fixed screen size. This creates a cleaner, more consistent experience across different screen widths and layouts.
Original PR description
This commit will add a small improvement to the leaderboard component ; it will now be displayed on the bottom of the header only when it doesn't fit, whereas before it would be displayed on the bottom when a certain screen size was reached. task-3765013
The WhatsApp module now includes demo and sample data to make demonstrations and testing easier. This helps teams validate common WhatsApp workflows without needing to complete a full setup first.
Original PR description
**PURPOSE:** We have to add demo data for demonstration purposes and populate data to simulate and test specific flows without requiring full configuration. **SPECIFICAITONS:** Demo data has been added, and a populate scripts has been added to populate data, replicating testing scenarios and ensuring thorough testing without requiring full configuration. Task id-3984360 Related Community PR: [odoo/odoo#174183](https://github.com/odoo/odoo/pull/174183)
Resolved issues and error corrections
Performance test expectations for appointment scheduling were adjusted to match recent user settings changes. This keeps internal quality checks accurate without changing how users book or manage appointments.
Original PR description
This commits updates three query counter checks adding three extra queries in order to adapt them to the addition of 1. a new sub query in 'calendar.event' which refers to the 'res.users.settings' table, 2. the fetching of the Default User Template in the 'res.users' model and 3. the search of the current user's 'res_users_settings_id' configuration. related-to: odoo/odoo#162467 task-3850837
Code cleanup and technical improvements
The file drop area component was moved out of the messaging area so it can be reused by other parts of Odoo, such as imports. Enterprise tests were updated to follow the new shared naming, with no expected change in user behavior.
Original PR description
In the related community PR, we moved the `Dropzone` component from the `mail` module to the `web` module to ensure that the component can be used in the `base_import` module. This commit will simply remove the `mail` prefix from the classes defined in the `Dropzone` component. COM PR: https://github.com/odoo/odoo/pull/172623 task-3956293
Miscellaneous changes
Starting as from `saas-17.2`, PrinterDriver's default action requires a `print_id`, which was not provided by the longpolling service action method. We added the missing parameter to avoid the traceback created by this error. Forward-Port-Of: odoo/enterprise#69737
Original PR description
Starting as from `saas-17.2`, PrinterDriver's default action requires a `print_id`, which was not provided by the longpolling service action method. We added the missing parameter to avoid the traceback created by this error. Forward-Port-Of: odoo/enterprise#69737
Odoo now converts Serbian Latin locale information into a format that browser-based features can understand. This prevents unexpected errors in affected apps when users work with the Serbian Latin language setting.
Original PR description
Serbian is a rare example of "synchronic digraphia", meaning that it has two writing systems that coexist and are used interchangeably by its speakers: Cyrillic and Latin. To handle this feature of Serbian in Odoo, we use a locale with a special modifier to specify the script to use: sr@latin. Problem: This locale is not recognized by the JavaScript APIs that implement the BCP 47 format, which leads to errors when trying to use them with the sr@latin locale. This commit adapts the code to use the properly formatted locale, thus avoiding unexpected crashes. *: sale_timesheet_enterprise, spreadsheet_edition, web_studio Task-4014022 Community: https://github.com/odoo/odoo/pull/172453 Forward-Port-Of: odoo/enterprise#66287 Forward-Port-Of: odoo/enterprise#66061
When the no-content helper is shown and the user clicks on the "New" button to create a new article, the sidebar lists the newly created article in the "workspace" and in the "private" section. This is an undesirable behavior as the newly created article should only appear in the "private" section. When no record is passed to the form view, the form view creates a virtual record. When the user clicks on the "New" button, the system will create a new article and open it using the `openArticle`
Original PR description
When the no-content helper is shown and the user clicks on the "New" button to create a new article, the sidebar lists the newly created article in the "workspace" and in the "private" section. This…
When the no-content helper is shown and the user clicks on the "New" button to create a new article, the sidebar lists the newly created article in the "workspace" and in the "private" section. This is an undesirable behavior as the newly created article should only appear in the "private" section. When no record is passed to the form view, the form view creates a virtual record. When the user clicks on the "New" button, the system will create a new article and open it using the `openArticle` function defined in the component environment. When calling the `openArticle` function, the function will check if the article has a title and, if it hasn't, it will fetch the first heading of the article and use it as title (see: `ensureArticleName`). If the record is not virtual, the function `openArticle` will then persist the changes made on the current record before opening the new record. For its part, the sidebar listens to the changes made on the loaded record (using a record observer) and updates its state based on the record changes. When calling the `ensureArticleName`, the title of the virtual record changes and the sidebar detects that change and adds a new entry for the virtual record. The sidebar will then add another entry for the newly created record. To fix the issue, the `openArticle` function will no longer call the `ensureArticleName` function when the current record is virtual. The virtual record state will hence no longer be updated when opening a new article. As a result, the sidebar will not detect any change and will no longer create an entry for the virtual record. Note that there was actually no reason to update the title of the virtual record as it gets discarded when leaving Knowledge. Steps to reproduce the issue: 1. Delete all articles from the database 2. Open the Knowledge editor (you should see the no-content helper) 3. Click on the "New" button => There is two entries for the new article: one in the "workspace" section and one in the "private" section. TO BE: There should only be one entry in the "private" section. task-4160386 Forward-Port-Of: odoo/enterprise#69438
This commit adds the possibility to disable the month or quarter granularity (or both) for fixedPeriod date filters. Task: [3887844](https://www.odoo.com/web#id=3887844&cids=1&menu_id=4720&action=333&active_id=2328&model=project.task&view_type=form) Forward-Port-Of: odoo/enterprise#69854 Forward-Port-Of: odoo/enterprise#64964
Original PR description
This commit adds the possibility to disable the month or quarter granularity (or both) for fixedPeriod date filters. Task: [3887844](https://www.odoo.com/web#id=3887844&cids=1&menu_id=4720&action=333&active_id=2328&model=project.task&view_type=form) Forward-Port-Of: odoo/enterprise#69854 Forward-Port-Of: odoo/enterprise#64964
…g from it How to reproduce: - Install documents_hr - Open Employee -> "Abigail Peterson" -> stats button Documents - Upload a file The document is not linked to the employee record "Abigail Peterson". With this fix, it is and you can see it in the inspector of that document: "Employee Abigail Peterson" Task-4122377 Forward-Port-Of: odoo/enterprise#68959 Forward-Port-Of: odoo/enterprise#68541
Original PR description
…g from it How to reproduce: - Install documents_hr - Open Employee -> "Abigail Peterson" -> stats button Documents - Upload a file The document is not linked to the employee record "Abigail Peterson". With this fix, it is and you can see it in the inspector of that document: "Employee Abigail Peterson" Task-4122377 Forward-Port-Of: odoo/enterprise#68959 Forward-Port-Of: odoo/enterprise#68541
Currently, a traceback is occurring when the user tries to compare `periodically` in account reports having a `fiscal year` of date today. To reproduce this issue: 1) Install Accounting 2) Enable fiscal year from accounting settings 3) Now create a fiscal year record with `start` and `end` dates as today 4) Open balance sheet report 5) Filter the comparison as `Previous Period` Error:- ``` TypeError: can't compare datetime.datetime to datetime.date ``` After the recent cha
Original PR description
Currently, a traceback is occurring when the user tries to compare `periodically` in account reports having a `fiscal year` of date today. To reproduce this issue: 1) Install Accounting 2) Enable…
Currently, a traceback is occurring when the user tries to compare `periodically` in account reports having a `fiscal year` of date today. To reproduce this issue: 1) Install Accounting 2) Enable fiscal year from accounting settings 3) Now create a fiscal year record with `start` and `end` dates as today 4) Open balance sheet report 5) Filter the comparison as `Previous Period` Error:- ``` TypeError: can't compare datetime.datetime to datetime.date ``` After the recent changes from this commit https://github.com/odoo/enterprise/pull/48530/commits/4f0432e86de6d6f4e8f78f11dbba1f8f2b4dafe5, this error is occurring. Because `period_date_from` is getting from `fiscal_year`, which is a `datetime.date` format. https://github.com/odoo/enterprise/blob/4c1947963be235f733a56ee3d04b9f8f64d213ea/account_reports/models/account_report.py#L4769-L4775 But here the `comparision_date_from` is of type `datetime.datetime`, which leads to a traceback when comparison is done between both. https://github.com/odoo/enterprise/blob/4c1947963be235f733a56ee3d04b9f8f64d213ea/account_reports/models/account_report.py#L4796-L4797 When the fiscal year record is there we can convert it to datetime.datetime, By doing this we can resolve this issue. sentry-5695535237 Forward-Port-Of: odoo/enterprise#69721
Before this commit: - The budget line tooltips were unclear for some fields. After this commit: - The budget line tooltips have been updated for better clarity. Task-4120878 Forward-Port-Of: odoo/enterprise#69181
Original PR description
Before this commit: - The budget line tooltips were unclear for some fields. After this commit: - The budget line tooltips have been updated for better clarity. Task-4120878 Forward-Port-Of: odoo/enterprise#69181
When ```KE eTIMS: Fetch KRA notices from eTIMS``` cron runs and eTIMS API returns an error, a traceback will appear. Steps to reproduce the error: - Install ```l10n_ke_edi_oscu``` - Set up Kenya eTIMS Integration - Run ```KE eTIMS: Fetch KRA notices from eTIMS``` cron Traceback: ``` KeyError: 'noticeList' File "odoo/tools/safe_eval.py", line 391, in safe_eval return unsafe_eval(c, globals_dict, locals_dict) File "ir.actions.server(909,)", line 1, in <module> File "home/
Original PR description
When ```KE eTIMS: Fetch KRA notices from eTIMS``` cron runs and eTIMS API returns an error, a traceback will appear. Steps to reproduce the error: - Install ```l10n_ke_edi_oscu``` - Set up Kenya…
When ```KE eTIMS: Fetch KRA notices from eTIMS``` cron runs and eTIMS API returns
an error, a traceback will appear.
Steps to reproduce the error:
- Install ```l10n_ke_edi_oscu```
- Set up Kenya eTIMS Integration
- Run ```KE eTIMS: Fetch KRA notices from eTIMS``` cron
Traceback:
```
KeyError: 'noticeList'
File "odoo/tools/safe_eval.py", line 391, in safe_eval
return unsafe_eval(c, globals_dict, locals_dict)
File "ir.actions.server(909,)", line 1, in <module>
File "home/odoo/src/enterprise/saas-17.4/l10n_ke_edi_oscu/models/l10n_ke_edi_oscu_notice.py", line 35, in _cron_l10n_ke_oscu_get_notices
notice_map = {notice['noticeNo']: notice for notice in data['noticeList']}
ValueError: <class 'KeyError'>: "noticeList" while evaluating
'model._cron_l10n_ke_oscu_get_notices()'
File "odoo/addons/base/models/ir_cron.py", line 562, in _callback
self.env['ir.actions.server'].browse(server_action_id).run()
File "home/odoo/src/custom/trial/saas_trial/models/sentry.py", line 33, in run
res = super().run()
File "odoo/addons/base/models/ir_actions.py", line 989, in run
res = runner(run_self, eval_context=eval_context)
File "addons/website/models/ir_actions_server.py", line 61, in _run_action_code_multi
res = super(ServerAction, self)._run_action_code_multi(eval_context)
File "odoo/addons/base/models/ir_actions.py", line 821, in _run_action_code_multi
safe_eval(self.code.strip(), eval_context, mode="exec", nocopy=True, filename=str(self)) # nocopy allows to return 'action'
File "odoo/tools/safe_eval.py", line 405, in safe_eval
raise ValueError('%s: "%s" while evaluating\n%r' % (ustr(type(e)), ustr(e), expr))
```
https://github.com/odoo/enterprise/blob/019a7cdd5a3071c0948656bdcacc95b63c2e8842/l10n_ke_edi_oscu/models/l10n_ke_edi_oscu_notice.py#L35 When eTIMS API returns an error, data will be empty,
So, it will lead to the above traceback.
sentry-5804573762, 5809459581
Forward-Port-Of: odoo/enterprise#69727To reproduce: Create an invoice, in foreign currency. Use a withholding tax, like 10% ILA Post the invoice => The rendering of the dte fails It's still using a deprecated method, which has been removed after 16. no task Forward-Port-Of: odoo/enterprise#69769
Original PR description
To reproduce: Create an invoice, in foreign currency. Use a withholding tax, like 10% ILA Post the invoice => The rendering of the dte fails It's still using a deprecated method, which has been removed after 16. no task Forward-Port-Of: odoo/enterprise#69769
Currently, the share panel cannot be closed once it has been opened. This commit resolves the issue by preventing the share panel from closing only when the active element is a modal. Steps to reproduce the issue: 1. Open Knowledge. 2. Click on the share button to open the share panel. 3. Click on the share button again to close the share panel. => The share panel remains open. TO BE: The share panel should close. Details: In the `KnowledgeTopbar` component, we added external ev
Original PR description
Currently, the share panel cannot be closed once it has been opened. This commit resolves the issue by preventing the share panel from closing only when the active element is a modal. Steps to…
Currently, the share panel cannot be closed once it has been opened. This commit resolves the issue by preventing the share panel from closing only when the active element is a modal. Steps to reproduce the issue: 1. Open Knowledge. 2. Click on the share button to open the share panel. 3. Click on the share button again to close the share panel. => The share panel remains open. TO BE: The share panel should close. Details: In the `KnowledgeTopbar` component, we added external event listeners to detect when the dropdown menu is opened, closed, or about to close. When the dropdown is about to close (i.e., when the `hide.bs.dropdown` event is triggered), we check if the active element is the HTML document. If the focus is on another element, we prevent the dropdown from closing. This mechanism was added to prevent the dropdown from closing when users are adding new members through the invite modal. Using the `useActiveElement` hook, the active element can change when a component is mounted. When the web editor in Knowledge is mounted, the active element becomes the editor toolbar. As a result, the active element is no longer the HTML document, and the event listener always prevents the dropdown from closing. To resolve this issue, we will now check if the active element is a modal before preventing the dropdown from closing. This ensures that the dropdown behaves as expected and the share panel can be closed when necessary. Reference: https://github.com/odoo/odoo/pull/175880 task-4179706 Forward-Port-Of: odoo/enterprise#69861
Not passing the previous_options can have bad consequences, and was clearly not wanted here. Forward-Port-Of: odoo/enterprise#69913
Original PR description
Not passing the previous_options can have bad consequences, and was clearly not wanted here. Forward-Port-Of: odoo/enterprise#69913