Friday, April 11, 2025
16 changes · master
Enhancements to existing features
Quality app actions now include clearer URL paths, making key pages easier to identify and share. Report action names were also corrected for a more consistent user experience.
Original PR description
Added path in URL for the main actions of Quality. Correct report action names.
The payroll structure type screens no longer show the unnecessary word “Default” in their titles. This makes the labels clearer and more consistent across related payroll views without changing payroll behavior.
Original PR description
The field label in the Structure Type List View displayed 'Default,' which was unnecessary as selected records are always default. This update includes: - Removing the 'Default' keyword from the Structure Type List View title. - Ensuring consistency in the form view and salary structure view. Task - 4674220
Miscellaneous changes
## Steps to reproduce: 1. Install l10n_mx. 2. Activate developer mode. 3. Activate Download XSD files (XML validation). 4. Go to accounting configuration > chart of accounts 5. Make sure here to have 2 accounts like 702.XXX. One should have the credit tag and the other one the debit one. 8. Go to reports and select Trial Balance. 9. Click on the download drop list and select COA SAT ## Issue: Up to now we have just intentionally marked this accounts as no valid, we can see that
Original PR description
## Steps to reproduce: 1. Install l10n_mx. 2. Activate developer mode. 3. Activate Download XSD files (XML validation). 4. Go to accounting configuration > chart of accounts 5. Make sure here to have…
## Steps to reproduce: 1. Install l10n_mx. 2. Activate developer mode. 3. Activate Download XSD files (XML validation). 4. Go to accounting configuration > chart of accounts 5. Make sure here to have 2 accounts like 702.XXX. One should have the credit tag and the other one the debit one. 8. Go to reports and select Trial Balance. 9. Click on the download drop list and select COA SAT ## Issue: Up to now we have just intentionally marked this accounts as no valid, we can see that inside trial_balance.py for l10n_mx_reports at L201 this was a known limitation. ## Solution: As we can see from the technical anex in the mexican goverment site https://www.gob.mx/sat/documentos/contabilidad-en-medios-electronicos-anexo-tecnico we can see that there are asset, liability and equity accounts which, by their nature, can be presented as debit or credit. ### Example Scenario: Let's say we have two hypothetical accounts, 701.01.01 and 701.01.02: Account 701.01.01 (perhaps an asset account) would be a Deudora (D). Account 701.01.02 (perhaps a liability account) would be Acreedora (A). The nature (D or A) depends on the type of account according to the categorization provided in the document. So, - Accounts related to Assets, Costs, and Expenses should generally be Deudora (D). - Accounts related to Liabilities, Equity, and Income should generally be Acreedora (A). - Some special accounts may vary and can be both Deudora (D) and Acreedora (A). opw-4185713 Forward-Port-Of: odoo/enterprise#83058 Forward-Port-Of: odoo/enterprise#70113
Steps to reproduce: - install helpdesk_timesheet - Go to `Timesheets` - Select ticket-linked timesheets only. - print report. Issue: - Tickets names are not rendered on the report, causing misalignment. Fix: - Updated condition to display table cell based on task, project, or ticket visibility task-4476391 Forward-Port-Of: odoo/enterprise#79546
Original PR description
Steps to reproduce: - install helpdesk_timesheet - Go to `Timesheets` - Select ticket-linked timesheets only. - print report. Issue: - Tickets names are not rendered on the report, causing misalignment. Fix: - Updated condition to display table cell based on task, project, or ticket visibility task-4476391 Forward-Port-Of: odoo/enterprise#79546
when access planning by user in field service we will see that inactive user are also get fetched even though they dont have planning set this will happend if user have open assigned tasks with no `planned_date_begin` and `date_deadline` here we have made some refactor [ref](https://github.com/odoo/enterprise/pull/53499) and implemented the hook to prepare the domain to fetch the records of `project.task`, instead of overriding `_group_expand_user_ids` steps to reproduce: - navigate t
Original PR description
when access planning by user in field service we will see that inactive user are also get fetched even though they dont have planning set this will happend if user have open assigned tasks with no `planned_date_begin` and `date_deadline` here we have made some refactor [ref](https://github.com/odoo/enterprise/pull/53499) and implemented the hook to prepare the domain to fetch the records of `project.task`, instead of overriding `_group_expand_user_ids` steps to reproduce: - navigate to `Field Service > Planning > By User`. - open unassigned task - assigned it to user(create new or use existing user) - unschedule the task - archieve the user ref the video: https://drive.google.com/file/d/1hME_bPXXNJgO9wgWT_CPP3-gz1RaLhPe/view?usp=sharing Fix: - fetch the active user if not added filter manually - if manual filter then fetch based on filter **OPW: 4588785** Forward-Port-Of: odoo/enterprise#82862
Steps to reproduce: 1) Open the Appointment module without loading demo data. 2) Create a resource-based appointment type using the helper (e.g., 'Book a Resource' or 'Table Booking'). 3) Open the calendar and check the 'Share Availabilities' dropdown menu—resource-based appointments appear there. Issue: Resource-based appointments should not be visible in the dropdown menu. Technical: We have set default value of `staff_user_ids` as self user. Inside the `appointment_get_user_appoint
Original PR description
Steps to reproduce: 1) Open the Appointment module without loading demo data. 2) Create a resource-based appointment type using the helper (e.g., 'Book a Resource' or 'Table Booking'). 3) Open the…
Steps to reproduce: 1) Open the Appointment module without loading demo data. 2) Create a resource-based appointment type using the helper (e.g., 'Book a Resource' or 'Table Booking'). 3) Open the calendar and check the 'Share Availabilities' dropdown menu—resource-based appointments appear there. Issue: Resource-based appointments should not be visible in the dropdown menu. Technical: We have set default value of `staff_user_ids` as self user. Inside the `appointment_get_user_appointment_types`'s domain we only specified, `staff_user_ids` but while creating a resource based appointment from the Helper, we directly select, `schedule_based_on` as `resources`, thus will not see `staff_user_ids` in view, there for its compute will never called, and we will get its default value, as the result that appointment will be valid as per `appointment_get_user_appointment_types`'s domain. After this PR: Only User based appointments will be displayed. Task-4680418 Forward-Port-Of: odoo/enterprise#82736
## [FIX] web_gantt: make sure orm service is defined in gantt renderer Before this commit, when the user reschedules his task with dependencies by clicking on any arrow displayed in the gantt connector. A notification is displayed to notify the user the action is done with success, that notification also contains an `Undo` button to let the user to undo the rescheduling made. However, if the user clicks on the undo button, a traceback occurs. The reason is because `orm` service is not d
Original PR description
## [FIX] web_gantt: make sure orm service is defined in gantt renderer Before this commit, when the user reschedules his task with dependencies by clicking on any arrow displayed in the gantt…
## [FIX] web_gantt: make sure orm service is defined in gantt renderer Before this commit, when the user reschedules his task with dependencies by clicking on any arrow displayed in the gantt connector. A notification is displayed to notify the user the action is done with success, that notification also contains an `Undo` button to let the user to undo the rescheduling made. However, if the user clicks on the undo button, a traceback occurs. The reason is because `orm` service is not defined in the gantt renderer. This commit makes sure the orm service is defined in the gantt renderer to be able to call the `action_rollback_scheduling` method. ## [FIX] web_gantt: don't display undo button if old vals are not given Before this commit, after the `web_gantt_schedule` call was done, a notification is displayed according to the result received by the `web_gantt_schedule` call done. The problem is even if the `old_vals_per_pill_id` is not given when the gantt scheduling has been made with success, the `Undo` button is displayed. The problem is without `old_vals_per_pill_id`, it is impossible to undo the action done, because the initial data before the `web_gantt_schedule` is not known without that data, and so, if the user clicks on `Undo` button a traceback will occur since we cannot retrieve the initial data of the records processed in the `web_gantt_schedule` method. This commit makes sure the `Undo` button is displayed only if we have the information to `undo` the `web_gantt_schedule` method. To know that, the `old_vals_per_pill_id` should be given in the result of `web_gantt_schedule` to be able to revert the changes made by `web_gantt_schedule`. ## [FIX] web_gantt: correctly display warning notification Before this commit, a warning notification was not properly displayed because the method does not return what we expect. Instead of returning the message and notification type, it returns a client action to call `display_notification`. Moreover, the warning notification does not display the right icon, it display `fa-check` instead of `fa-warning`. This commit changes the object returned for the warning to have the expected values returned and changes the icon when the notification is a warning one. task-4687572 Forward-Port-Of: odoo/enterprise#83188 Forward-Port-Of: odoo/enterprise#82690
Previously, POL did not have a `discount` field which meant that the `discount` of a SOL was transferred in the `price_unit` of the POL. For example, the following SO: Product | Unit Price | Discount | Tax Excl. ------------|------------|----------|---------- Product A | $1000.0 | 10.0% | $900.0 Would be converted into the following PO Product | Unit Price | Tax Excl. ------------|------------|---------- Product A | $900.0 | $900.0 However, as of V17, it
Original PR description
Previously, POL did not have a `discount` field which meant that the `discount` of a SOL was transferred in the `price_unit` of the POL. For example, the following SO: Product | Unit Price | Discount | Tax Excl. ------------|------------|----------|---------- Product A | $1000.0 | 10.0% | $900.0 Would be converted into the following PO Product | Unit Price | Tax Excl. ------------|------------|---------- Product A | $900.0 | $900.0 However, as of V17, it is possible to add discount on POL, but are not taken into account when converting into SOL. With this commit, the discounts are now synchronized when going from SOL->POL and inversely. opw-4446288 Forward-Port-Of: odoo/enterprise#82803 Forward-Port-Of: odoo/enterprise#82079
Currently, when a credit card journal gets disconnected, and has some transactions, the reconnect button won't appear. This is caused by the condition for `display_connect_bank_in_dashboard` added in ae3ec22b6ec64f4600b5a11db2ffda5256bb75fd to omit the 'credit' type journal. Changing this condition to account for 'credit' type journals allows the reconnect button to appear on credit journals that have transactions. opw-4654051 Forward-Port-Of: odoo/enterprise#83142
Original PR description
Currently, when a credit card journal gets disconnected, and has some transactions, the reconnect button won't appear. This is caused by the condition for `display_connect_bank_in_dashboard` added in ae3ec22b6ec64f4600b5a11db2ffda5256bb75fd to omit the 'credit' type journal. Changing this condition to account for 'credit' type journals allows the reconnect button to appear on credit journals that have transactions. opw-4654051 Forward-Port-Of: odoo/enterprise#83142
After https://github.com/odoo/enterprise/pull/8209 we stopped tokenize when the amount match. It is an error. Forward-Port-Of: odoo/enterprise#83227
Original PR description
After https://github.com/odoo/enterprise/pull/8209 we stopped tokenize when the amount match. It is an error. Forward-Port-Of: odoo/enterprise#83227
… by making lambda selection Forward-Port-Of: odoo/enterprise#83146
Original PR description
… by making lambda selection Forward-Port-Of: odoo/enterprise#83146
Reproduce: 1. Create a partner with name "TEST" and email "bob@there.com". 2. Try to share a document using "bob" to find the partner. 3. It doesn't show up, you can't select them. Partners should be findable by their email when trying to share documents with them. Task-4656596 Forward-Port-Of: odoo/enterprise#81713
Original PR description
Reproduce: 1. Create a partner with name "TEST" and email "bob@there.com". 2. Try to share a document using "bob" to find the partner. 3. It doesn't show up, you can't select them. Partners should be findable by their email when trying to share documents with them. Task-4656596 Forward-Port-Of: odoo/enterprise#81713
This commit changes a test that checks that we cannot remove a specific member from an article. The issue was that the parameter provided didn't respect the function's signature by giving a `res.users` instead of a `knowledge.article.member`. By chance, it always worked as those model share the field partner_id that represent the same data. But it is updated so that it better represents the correct use of the method. Forward-Port-Of: odoo/enterprise#83024
Original PR description
This commit changes a test that checks that we cannot remove a specific member from an article. The issue was that the parameter provided didn't respect the function's signature by giving a `res.users` instead of a `knowledge.article.member`. By chance, it always worked as those model share the field partner_id that represent the same data. But it is updated so that it better represents the correct use of the method. Forward-Port-Of: odoo/enterprise#83024
Currently, public users cannot preview shared documents; instead, the documents are always downloaded. ### Steps to reproduce 1. Install `documents_account`. 2. Share a previewable document (e.g., an image or a PDF) with a link that allows public viewing. 3. Open the share link in an incognito window. 4. Click "Preview file." The file is downloaded instead of being previewed. ### Cause In an override of the route handling document content retrieval, the argument that determines
Original PR description
Currently, public users cannot preview shared documents; instead, the documents are always downloaded. ### Steps to reproduce 1. Install `documents_account`. 2. Share a previewable document (e.g., an…
Currently, public users cannot preview shared documents; instead, the documents are always downloaded. ### Steps to reproduce 1. Install `documents_account`. 2. Share a previewable document (e.g., an image or a PDF) with a link that allows public viewing. 3. Open the share link in an incognito window. 4. Click "Preview file." The file is downloaded instead of being previewed. ### Cause In an override of the route handling document content retrieval, the argument that determines whether the document should be displayed or downloaded is lost in a `super()` call. ### Tests While the base `documents` module includes tests for this behavior, they are tagged with `at_install`, meaning they only validate the functionality at the time of the module's initial installation. This does not account for potential overrides in extension modules like `documents_account`. To address this, the test class is now tagged `post_install`. opw-4490958 Forward-Port-Of: odoo/enterprise#81456
Previously, the `l10n_in_reports` module was being automatically installed when the l10n_in `module` was installed, regardless of whether it was actually needed. This commit removes the auto_install condition of `l10n_in_reports`. This prevents unnecessary installation of `l10n_in_reports` when only `l10n_in` is installed. Forward-Port-Of: odoo/enterprise#83034
Original PR description
Previously, the `l10n_in_reports` module was being automatically installed when the l10n_in `module` was installed, regardless of whether it was actually needed. This commit removes the auto_install condition of `l10n_in_reports`. This prevents unnecessary installation of `l10n_in_reports` when only `l10n_in` is installed. Forward-Port-Of: odoo/enterprise#83034
**Step to reproduce** 1. createdb with installing l10n_co_reports in 18.0 2. and install web_studio 3. open studio in customer invoice menu and tap on Daily Journal report **Below mentioned traceback is rasing**: for fixing it adding in blacklist report so it won't show in studio as I have checked in this [commit](https://github.com/odoo/enterprise/commit/e7efdb09742c434f1f72ec9c8f619038c470b464) the purpose this report to show the report using accounting report ``` Traceback (mos
Original PR description
**Step to reproduce** 1. createdb with installing l10n_co_reports in 18.0 2. and install web_studio 3. open studio in customer invoice menu and tap on Daily Journal report **Below mentioned traceback…
**Step to reproduce**
1. createdb with installing l10n_co_reports in 18.0
2. and install web_studio
3. open studio in customer invoice menu and tap on Daily Journal report
**Below mentioned traceback is rasing**:
for fixing it adding in blacklist report so it won't show in studio as I have checked in this [commit](https://github.com/odoo/enterprise/commit/e7efdb09742c434f1f72ec9c8f619038c470b464) the purpose this report to show the report using accounting report
```
Traceback (most recent call last):
File "/home/odoo/odoo/odoo/18.0/odoo/http.py", line 1963, in _transactioning
return service_model.retrying(func, env=self.env)
File "/home/odoo/odoo/odoo/18.0/odoo/service/model.py", line 156, in retrying
result = func()
File "/home/odoo/odoo/odoo/18.0/odoo/http.py", line 1930, in _serve_ir_http
response = self.dispatcher.dispatch(rule.endpoint, args)
File "/home/odoo/odoo/odoo/18.0/odoo/http.py", line 2178, in dispatch
result = self.request.registry['ir.http']._dispatch(endpoint)
File "/home/odoo/odoo/odoo/18.0/odoo/addons/base/models/ir_http.py", line 333, in _dispatch
result = endpoint(**request.params)
File "/home/odoo/odoo/odoo/18.0/odoo/http.py", line 727, in route_wrapper
result = endpoint(self, *args, **params_ok)
File "/home/odoo/odoo/enterprise/18.0/web_studio/controllers/report.py", line 499, in load_report_editor
report_qweb = self._get_report_qweb(report)
File "/home/odoo/odoo/enterprise/18.0/web_studio/controllers/report.py", line 636, in _get_report_qweb
render_context = report_safe_cr._get_rendering_context(report_safe_cr, [0], {"studio": True})
File "/home/odoo/odoo/enterprise/18.0/web_studio/models/ir_actions_report.py", line 44, in _get_rendering_context
ctx = super()._get_rendering_context(report, docids, data)
File "/home/odoo/odoo/odoo/18.0/addons/account/models/ir_actions_report.py", line 94, in _get_rendering_context
data = super()._get_rendering_context(report, docids, data)
File "/home/odoo/odoo/odoo/18.0/odoo/addons/base/models/ir_actions_report.py", line 1105, in _get_rendering_context
data.update(report_model._get_report_values(docids, data=data))
File "/home/odoo/odoo/enterprise/18.0/l10n_co_reports/report/libro_diario_report.py", line 17, in _get_report_values
report = self.env['account.report'].browse(options['report_id'])
TypeError: 'NoneType' object is not subscriptable
```
opw-4608924
upg-2733166
Forward-Port-Of: odoo/enterprise#83157