Friday, December 8, 2023
28 changes · 17.0
Enhancements to existing features
This update lets teams choose whether status labels are displayed for state selection fields in form views. It improves clarity in areas such as time off, projects, and HR contract reporting by making important status descriptions visible when needed.
Original PR description
Description:
payslip state label description was not visible inside form view of timeoff
Improvement:
after adding widget payslip state label description is made visible.
task-3475416Resolved issues and error corrections
This fix stops Odoo from saving values into fields that are marked as read-only when certain form updates happen in related list fields. It helps preserve data rules and prevents unintended changes during save operations.
Original PR description
Before this commit, during an onchange, when we received an update command for an x2many referring to an unknown record on the front end (does not have a Datapoint Record) during the save, we sent…
Before this commit, during an onchange, when we received an update command for an x2many referring to an unknown record on the front end (does not have a Datapoint Record) during the save, we sent all the contents of these commands without removing the readonly fields.
In this commit, we're going to filter all the readonly fields according to the backend (fields). We're not taking modifiers into account because the command refers to an unknown record, so we don't have the data to evaluate modifiers correctly.
How to reproduce:
- Go to a form view with an x2many field
- Edit a field that causes an onchange
- The onchange returns an "update" command for the x2many with a value that is readonly according to the backend
- Click on the Save button
Before this commit:
T he "update" command is saved with the readonly field
After this commit:
The "update" command is saved without the readonly chmaps
Task ID: 3607260
Description of the issue/feature this PR addresses:
Current behavior before PR:
Desired behavior after PR is merged:
---
I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-prCode cleanup and technical improvements
This change makes an existing drag-and-sort testing helper available for reuse by other Odoo areas. It helps teams share the same test behavior across modules, reducing duplication and keeping future test coverage more consistent.
Original PR description
Exports the `sortableDrag` function, so it can be used in other modules (like account_reports for example). --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Miscellaneous changes
Suppose a custom field on the tax that depends of the country. Currently, the value of the custom field will be recomputed if the country of the company changed. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#143819 Forward-Port-Of: odoo/odoo#142972
Original PR description
Suppose a custom field on the tax that depends of the country. Currently, the value of the custom field will be recomputed if the country of the company changed. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#143819 Forward-Port-Of: odoo/odoo#142972
ZPL product labels now use the pricelist selected in the label printing wizard. This ensures printed prices match the intended customer or sales context, reducing pricing mistakes on physical labels.
Original PR description
before this commit, the pricelist concept is added in label printing in this commit: 168b56e and missed to adapt the zpl reports to respect the selected pricelist in the wizard after this commit, the price printed in the zpl product label will be based on the selected pricelist in the wizard --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
A display issue in survey lists has been fixed so the trigger icon appears immediately when relevant. This prevents users from missing survey trigger indicators due to a column sizing problem after updates.
Original PR description
Due to JS framework refactoring, the list view widget is not fully re-rendered after field update, such that a fixed narrow column width is added at first rendering and cannot be updated. We need to override it by providing a `width`, which was already supported but not declared in rng. Task-3512604
This fixes a rare issue in eLearning quizzes where answer lines could become editable after creating several questions in a row. Keeping those answers read-only prevents user-facing errors and helps quiz setup behave consistently.
Original PR description
Answers_ids line in question_lines of quiz page is not meant to be modified, and it is not generally modifiable. However, in very niche cases where user creates more then two consecutive questions and then leave question creation modal, they may be able to modify the field, which gives us an error. With this fix we make sure that answers_ids is always readonly. Task-3459850 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This fix centers the month labels in the date picker so months no longer appear too close together when users choose start and end dates. It improves readability and reduces confusion when planning project tasks.
Original PR description
Steps to reproduce : - install project module - click on project - click on tasks - try to set a start & end date to the project Issue : - when we try to set a start & end date to the project ,months are to close one from each other Cause: - this is because the text alignment is not in center Solution: - if we align the text to center then it will be solved. task-3561946 Description of the issue/feature this PR addresses: Current behavior before PR: Desired behavior after PR is merged: --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This fixes an issue where the bill of materials overview could fail to display quantities for consumable or service items. Quantities are now consistently handled as numbers, preventing errors and keeping the report usable.
Original PR description
### Before this PR If you compute quantity consumable/service and the value is printed by bom overview table, this error appear `Caused by: TypeError: value.toFixed is not a function` This is caused because the quantity attributes are set to false ### After this PR The quantity are always float, when they are consumable/service too --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
The website editor now shows the Highlight Animated Text icon at the proper size when users animate selected text in a snippet. This keeps the editing toolbar visually consistent and avoids confusion while building website pages.
Original PR description
Steps to reproduce the bug:
- In Website edit mode, drag and drop a 'Text-Image' snippet onto the page.
- Select the word "Subtitle" in the title of the snippet.
- Click on the 'Animate' button in the editor toolbar.
- Bug: The 'Highlight Animated Text' icon that appeared on the right of the title ("Inline Text") of the editor toolbar is too big.
task-3597377The product label report preview in Studio now opens without causing an error. This prevents users from being blocked when previewing Dymo product label reports and improves reliability for Sales report customization.
Original PR description
when user tries 'PRINT PREVIEW' product.report_producttemplatelabel_dymo report in web_studio, A traceback will appear. Step to produce: - Install 'Sales' and 'web_studio'. - Go to 'web_studio' and…
when user tries 'PRINT PREVIEW' product.report_producttemplatelabel_dymo report in web_studio,
A traceback will appear.
Step to produce:
- Install 'Sales' and 'web_studio'.
- Go to 'web_studio' and open 'Sales'.
- reports > product.report_producttemplatelabel_dymo
- Click PRINT PREVIEW
Traceback:
```
KeyError: 'pricelist'
File "<481>", line 251, in template_481
File "<481>", line 200, in template_481_content
QWebException: Error while render the template
KeyError: 'pricelist'
Template: ir.ui.view(481,)
Path: /t/div/div/div[4]/strong
Node: <strong class="o_label_price_small" t-out="pricelist._get_product_price(product, 1, pricelist.currency_id or product.currency_id)" t-options="{\'widget\': \'monetary\', \'display_currency\': pricelist.currency_id or product.currency_id, \'label_price\': True}"/>
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 1960, in dispatch
result = self.request.registry['ir.http']._dispatch(endpoint)
File "odoo/addons/base/models/ir_http.py", line 207, in _dispatch
result = endpoint(**request.params)
File "odoo/http.py", line 722, in route_wrapper
result = endpoint(self, *args, **params_ok)
File "home/odoo/src/enterprise/17.0/web_studio/controllers/report.py", line 372, in get_report_html
report_html = self._render_report(report, record_id)
File "home/odoo/src/enterprise/17.0/web_studio/controllers/report.py", line 454, in _render_report
return request.env['ir.actions.report'].with_context(studio=True)._render_qweb_html(report, [record_id] if record_id else [], {"studio": True})
File "home/odoo/src/enterprise/17.0/web_studio/models/ir_actions_report.py", line 24, in _render_qweb_html
return super(IrActionsReport, self)._render_qweb_html(report_ref, docids, data)
File "odoo/addons/base/models/ir_actions_report.py", line 916, in _render_qweb_html
return self._render_template(report.report_name, data), 'html'
File "odoo/addons/base/models/ir_actions_report.py", line 653, in _render_template
return view_obj._render_template(template, values).encode()
File "home/odoo/src/enterprise/17.0/web_studio/models/ir_ui_view.py", line 1310, in _render_template
return super(View, self)._render_template(template, 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 "<488>", line 49, in template_488
File "<488>", line 31, in template_488_content
File "<488>", line 21, in template_488_t_call_0
File "<483>", line 173, in template_483
File "<483>", line 155, in template_483_content
File "<483>", line 142, in template_483_t_call_0
File "<481>", line 257, in template_481
```
https://github.com/odoo/odoo/blob/e4390c224c2f59afd6456bcf50910fbe3836b4ca/addons/product/report/product_label_report.py#L23-L26
Here 'pricelist' is not present in return.
sentry-4673780990
---
I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-prThe website setup configurator now sends industry names in lowercase. This helps improve reuse of cached placeholder content, making the setup process more efficient without changing the user experience.
Original PR description
This commit converts the industry name in the configurator to lowercase it in order to optimize the IAP placeholder cache. See related IAP PR: https://github.com/odoo/iap-apps/pull/730 task-3626875
Creating a Studio report with a dynamic table no longer triggers an error when adding a field in debug mode. This keeps the report-building flow working smoothly for users configuring custom reports.
Original PR description
To reproduce ============ - on Debug mode - Enter Studio - Create a new report - Add a dynamic table - add a field in the dynamic table -> traceback while props validation of SelectMenu Problem ======= in FieldDynamicPlaceholder we use the SelectMenu component but we add `model` to `choices` which is not part of SelectMenu shape, which leads to this error. Solution ======== extend SelectMenu and add `model` to the shape opw-3617081
The Materials Tree view in the Planning module has been simplified by hiding three unnecessary fields: user, type, and efficiency factor. This change makes the interface cleaner and easier to use by removing clutter and focusing on the most relevant information for users.
Original PR description
Before this commit: In Materials Tree view containing the some unnecessary fields (user,type,efficiency factor) After this commit: Hide the unnecessary fields in the tree view of materials (user,type,efficiency factor) task-3491748
The aim of this commit is to improve the quality of the tax retrieving of the edi import. Context: The tax prediction happens when the invoice is given manually or with the OCR but doesn't happen when it's imported by EDI because the tax is already set by the OCR. Before this commit: During EDI import, the tax retrieved could always be the same even if the user make some modification to the previous bill. After this commit: The tax retrieved leverage the previous data to get better q
Original PR description
The aim of this commit is to improve the quality of the tax retrieving of the edi import. Context: The tax prediction happens when the invoice is given manually or with the OCR but doesn't happen when it's imported by EDI because the tax is already set by the OCR. Before this commit: During EDI import, the tax retrieved could always be the same even if the user make some modification to the previous bill. After this commit: The tax retrieved leverage the previous data to get better quality result for tax retrievement. task-id: 3531473 Description of the issue/feature this PR addresses: Current behavior before PR: Desired behavior after PR is merged: --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#145416 Forward-Port-Of: odoo/odoo#144484
Avoid invalidating cache when not needed. This improves a lot performances. Fixes a bug which causes that: self.flush() and self.clear_caches() were called on every property write/update and delete. Known at least in V14/15/16/17. https://github.com/odoo/enterprise/pull/52207 Original PR: https://github.com/odoo/odoo/pull/143403 Forward-Port-Of: odoo/odoo#145333 Forward-Port-Of: odoo/odoo#145171
Original PR description
Avoid invalidating cache when not needed. This improves a lot performances. Fixes a bug which causes that: self.flush() and self.clear_caches() were called on every property write/update and delete. Known at least in V14/15/16/17. https://github.com/odoo/enterprise/pull/52207 Original PR: https://github.com/odoo/odoo/pull/143403 Forward-Port-Of: odoo/odoo#145333 Forward-Port-Of: odoo/odoo#145171
Partially revert the 'table-responsive' layout introduced by commit https://github.com/odoo/odoo/commit/5abccc. The addition of the 'table-responsive' class effectively addressed the overflowing of very long product names without whitespace. However, it inadvertently introduced a new issue by partially concealing the "Download" dropdowns for digital products. To mitigate this problem, this commit disables the 'table-responsive' layout when website_sale is installed. This adjustment prese
Original PR description
Partially revert the 'table-responsive' layout introduced by commit https://github.com/odoo/odoo/commit/5abccc. The addition of the 'table-responsive' class effectively addressed the overflowing of…
Partially revert the 'table-responsive' layout introduced by commit https://github.com/odoo/odoo/commit/5abccc. The addition of the 'table-responsive' class effectively addressed the overflowing of very long product names without whitespace. However, it inadvertently introduced a new issue by partially concealing the "Download" dropdowns for digital products. To mitigate this problem, this commit disables the 'table-responsive' layout when website_sale is installed. This adjustment preserves the accessibility of the "Download" dropdowns while still offering a workaround for accommodating lengthy product names. task-3335488 (bugfix) task-4720 (rd-design) | 16.0 | This PR | |--------|--------| ||  | --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#142839
Before this commit we had an issue when a product's description took more than one page. In this case, the following `<tr>` was overlapping. By removing this line we remove an old fix that seems not working anymore... It looks like it was needed when a customer wanted to repeat the table header on each page. This use case is supported by Odoo as we suggest it as a customization in the code, see here: "<!-- In case we want to repeat the header, remove "display: table-row-group" -->" This featu
Original PR description
Before this commit we had an issue when a product's description took more than one page. In this case, the following `<tr>` was overlapping. By removing this line we remove an old fix that seems not…
Before this commit we had an issue when a product's description took more than one page. In this case, the following `<tr>` was overlapping. By removing this line we remove an old fix that seems not working anymore... It looks like it was needed when a customer wanted to repeat the table header on each page. This use case is supported by Odoo as we suggest it as a customization in the code, see here: "<!-- In case we want to repeat the header, remove "display: table-row-group" -->" This feature is still working without this fix except when a line overflows onto another page but the removed fix doesn't help anyway... There is another line that refers to this fix for accounting reports but we prefer to keep this commit minimal and clean it in master. Note that this bug is also present in 15 but as this issue is quite old and tricky we prefer to not fix it this until we have other complains. Feel free to backport this commit if needed. Steps to reproduce: - Go to Sales - Create a new quotation - Add a product with a very long description that takes at least a whole page. - Add anoter product. - Print it as a .pdf. => Product descriptions overlaps on page 3. opw-3411031 Description of the issue/feature this PR addresses: Current behavior before PR: Desired behavior after PR is merged: --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#145388
Since the milk redesign, and the move of the "Add to my dashboard" action from the search view to the CogMenu (next to breadcrumbs), the action was available in all views, especially in form views, which isn't what we want. Adding a form view to the dashboard results in an empty form view (in creation) being displayed in the dashboard. Before milk, the form view naturally didn't allow to add to dashboard as it has no search view. This commit checks the view type to determine if the action
Original PR description
Since the milk redesign, and the move of the "Add to my dashboard" action from the search view to the CogMenu (next to breadcrumbs), the action was available in all views, especially in form views, which isn't what we want. Adding a form view to the dashboard results in an empty form view (in creation) being displayed in the dashboard. Before milk, the form view naturally didn't allow to add to dashboard as it has no search view. This commit checks the view type to determine if the action must be available or not. Task 3552870 Description of the issue/feature this PR addresses: Current behavior before PR: Desired behavior after PR is merged: --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#144805
Before this commit, customers were facing issues when syncing events from Outlook that came from external users when the event organizers were from 'Portal' or 'Public' groups with limited access to calendar events, triggering ACL errors regarding absence of event permissions for creating events. This error should not happen because the events are being synced by a user with permission to create them in Odoo. Additionaly, when inserting events, we were not trying to make the requests with the or
Original PR description
Before this commit, customers were facing issues when syncing events from Outlook that came from external users when the event organizers were from 'Portal' or 'Public' groups with limited access to…
Before this commit, customers were facing issues when syncing events from Outlook that came from external users when the event organizers were from 'Portal' or 'Public' groups with limited access to calendar events, triggering ACL errors regarding absence of event permissions for creating events. This error should not happen because the events are being synced by a user with permission to create them in Odoo. Additionaly, when inserting events, we were not trying to make the requests with the organizer user's token but with the current user's token instead. This could lead to errors when the current user is not synced and the request could be lost due to the lack of token. After this commit, the events with external organizers (with limited access rights in Odoo) coming from Outlook synchronization are now created by the attendee in Odoo (synced user) not the external organizer. Additionaly, when inserting, patching and deleting events, first we check if the organizer is synced to make the request with its token, otherwise we use the current user's token to make the request. Task-id: 3627270 Forward-Port-Of: odoo/odoo#144547
If the snippet names are too long (e.g., after being translated), they overflow and cause a horizontal scrollbar to appear on the snippet menu. Steps to reproduce the issue: - Set 'Finnish' as the language for the connected user in Odoo. - Go to Website edit mode. - Bug: Some snippet names are too long and overlfow their parent elements. This commit fixes this issue by adding the CSS rule 'ellipsis' to snippet names. task-3584011 Forward-Port-Of: odoo/odoo#144800
Original PR description
If the snippet names are too long (e.g., after being translated), they overflow and cause a horizontal scrollbar to appear on the snippet menu. Steps to reproduce the issue: - Set 'Finnish' as the language for the connected user in Odoo. - Go to Website edit mode. - Bug: Some snippet names are too long and overlfow their parent elements. This commit fixes this issue by adding the CSS rule 'ellipsis' to snippet names. task-3584011 Forward-Port-Of: odoo/odoo#144800
Description of the issue/feature this PR addresses: Current behavior before PR: Desired behavior after PR is merged: --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#145291
Original PR description
Description of the issue/feature this PR addresses: Current behavior before PR: Desired behavior after PR is merged: --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#145291
Stesp to reproduce the bug: - Create a storable product P1 tracked by SN - Update the quant with SN1 - Create a MO: - Select any product to produce - add P1 as component with SN1 - Validate the MO - Unbuild the MO - Create a second MO - add P1 as component with SN1 - Try to validate Problem: A traceback is triggered: "ValueError: Invalid domain term('lot_id', 'in', 17)" We try to compare “move_line_ids.lot_id” with “sn_lot.id” using the operator “in” when it is n
Original PR description
Stesp to reproduce the bug:
- Create a storable product P1 tracked by SN
- Update the quant with SN1
- Create a MO:
- Select any product to produce
- add P1 as component with SN1
- Validate the MO
- Unbuild the MO
- Create a second MO
- add P1 as component with SN1
- Try to validate
Problem:
A traceback is triggered:
"ValueError: Invalid domain term('lot_id', 'in', 17)"
We try to compare “move_line_ids.lot_id” with “sn_lot.id” using the
operator “in” when it is not a list but a single ID.
opw-[3616270](https://www.odoo.com/web#id=3616270&view_type=form&model=project.task)
Forward-Port-Of: odoo/odoo#145427In 16.4, this commit https://github.com/odoo/odoo/commit/c3b7a87462cd41654d0e2bd3beb2f0e065ddfb75 created a notification when replenishing a product. However, it achieved it by modifying a stock.order_point which was not the ideal solution as we don't want the order_point to change. In this commit, we will revert to the previous behaviour, but we'll keep the notification by delegating it to the wizard itself. The way the record created were retreived (to display the notification) was
Original PR description
In 16.4, this commit https://github.com/odoo/odoo/commit/c3b7a87462cd41654d0e2bd3beb2f0e065ddfb75 created a notification when replenishing a product. However, it achieved it by modifying a…
In 16.4, this commit https://github.com/odoo/odoo/commit/c3b7a87462cd41654d0e2bd3beb2f0e065ddfb75 created a notification when replenishing a product. However, it achieved it by modifying a stock.order_point which was not the ideal solution as we don't want the order_point to change. In this commit, we will revert to the previous behaviour, but we'll keep the notification by delegating it to the wizard itself. The way the record created were retreived (to display the notification) was thanks to the orderpoint. As we do not have access to orderpoints now, we are just retreive the first record (of a certain type) created just after the start of the function. This method has a big problem : concurrencies. If anyone creates a record on ``manufacturing.order``, ``purchase.order.line`` or ``stock.move`` between the start of our timer and the creation of our record, a wrong record will be selected in the notification. Also, the previous date shown in the replenishement wizard did not take the following delays into account: - vendor lead time - days to purchase - security days for purchase - security days for mrp - rule lead time - manufacturing lead time (BoM) - days to prepare manufacturing order (BoM) task-3527727 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#139182
If we begin to run the test at 23h59m59s, the move date could be put at a day and the freeze for the cron on the following day, and so, make the test fail. Let's just define the day explicitely. Linked to runbot error 36224 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#141799
Original PR description
If we begin to run the test at 23h59m59s, the move date could be put at a day and the freeze for the cron on the following day, and so, make the test fail. Let's just define the day explicitely. Linked to runbot error 36224 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#141799
Similar to this: ea2efa934e000d36b60d4a0986adbe842ec79def Issue: ====== The shiping and billing address are the same when choosing pick up locations which is not true. Steps to reproduce the error: ============================= - install website_sale and delivery_sendcloud module; - create a shipping method (use Sendcloud provider); - configure the integration with "Mondial Relay Point Relais International 1-2kg"; - configure option with shipping rule and use location; - on website
Original PR description
Similar to this: ea2efa934e000d36b60d4a0986adbe842ec79def Issue: ====== The shiping and billing address are the same when choosing pick up locations which is not true. Steps to reproduce the error:…
Similar to this: ea2efa934e000d36b60d4a0986adbe842ec79def Issue: ====== The shiping and billing address are the same when choosing pick up locations which is not true. Steps to reproduce the error: ============================= - install website_sale and delivery_sendcloud module; - create a shipping method (use Sendcloud provider); - configure the integration with "Mondial Relay Point Relais International 1-2kg"; - configure option with shipping rule and use location; - on website create a new quotation with the pubic user; - process the checkout; (Check in backend the shipping weight) - fill City and Zip Code fields with correct value (example: Paris | 75011) (- configure the company's country) Origin of the issue: ==================== Updating the payment method will trigger a cart update which will reset the access_point_address. Solution: ========= Using the context variable `no_reset_access_point_address` introduced in the commit mentioned above. opw-3615829 opw-3596705 Forward-Port-Of: odoo/odoo#145264
In the _order_line_field function from the pos order line model, the override doesn't set a default value for session_id in pos_sale. Now we make sure the override is correct. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#137515
Original PR description
In the _order_line_field function from the pos order line model, the override doesn't set a default value for session_id in pos_sale. Now we make sure the override is correct. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#137515
Change adds missing helpers and alters some of their messages in differents parts of HR apps. task-3522163 Description of the issue/feature this PR addresses: Current behavior before PR: Desired behavior after PR is merged: --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#144896 Forward-Port-Of: odoo/odoo#141663
Original PR description
Change adds missing helpers and alters some of their messages in differents parts of HR apps. task-3522163 Description of the issue/feature this PR addresses: Current behavior before PR: Desired behavior after PR is merged: --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#144896 Forward-Port-Of: odoo/odoo#141663