Tuesday, March 5, 2024
38 changes · saas-17.1
Resolved issues and error corrections
This update resolves an issue where website tours sometimes caused buttons to appear blank due to a conflict with content loading. The fix provides a fallback to an empty SVG, ensuring buttons always display correctly. This improves the user experience for website tour functionality.
Original PR description
In the test framework at [1], when a tour is finished, a request to stop loading content is sent to the browser. This clashes with [2] which sometimes is in the middle of a fetch request from the Snippets Menu. (Specifically when loading SVGs icons for buttons.) This commit fixes that by adding a fallback to an empty SVG when the fetch fails. This could lead to buttons appearing empty. [1]: https://github.com/odoo/odoo/blob/eca34179a1657d8fcbdf845349b5b051e5fc6043/odoo/tests/common.py#L1437 [2]: https://github.com/odoo/odoo/blob/eca34179a1657d8fcbdf845349b5b051e5fc6043/addons/web_editor/static/src/js/editor/snippets.options.js#L110 runbot-54422
The project tour now functions correctly on mobile devices. This update resolves a previous bug where the tour would get stuck, preventing users from fully experiencing the feature. The fix involved adding a mobile-specific step and adjusting a trigger to ensure compatibility.
Original PR description
The tour isn't working if you run it on mobile mode, it gets stuck at some points. To fix this issue, a mobile step was added, and one trigger was edited to work with mobile mode as well. task-3709501 Forward-Port-Of: odoo/odoo#155789 Forward-Port-Of: odoo/odoo#153444
This update fixes an issue where user preferences (like home menu app order) were not consistently saved during sessions. The change ensures that user settings, including app order, are correctly preserved after reordering, improving the user experience. This resolves a bug that caused lost preferences.
Original PR description
User settings is used to store user's preferences, in web we use it to store the home menus apps order and in mail for various settings like push to talk key, discuss sidebar preferences, etc. Before…
User settings is used to store user's preferences, in web we use it to store the home menus apps order and in mail for various settings like push to talk key, discuss sidebar preferences, etc.
Before this commit, the `setUserSettings` method from the user service overrided all the previous key that has not been changed because it kept only the changed keys returned by the backend. Leading to preferences being lost during the session when reordering the home menu apps.
With this commit, we keep the previous keys that have not been changed.
Steps to reproduce:
- Go to the home menu
- In the Owl devtool check the settings object from the user service:
```JavaScript
{
"id": 1,
"user_id": {
"id": 2
},
"is_discuss_sidebar_category_channel_open": true,
"is_discuss_sidebar_category_chat_open": true,
"push_to_talk_key": false,
"use_push_to_talk": false,
"voice_active_duration": 0,
"volume_settings_ids": [
[
"ADD",
[]
]
],
"homemenu_config": "[\"mail.menu_root_discuss\",\"room.room_menu_root\",\"calendar.mail_menu_calendar\",\"appointment.main_menu_appointments\",\"project_todo.menu_todo_todos\",\"membership.menu_association\",\"knowledge.knowledge_menu_root\",\"contacts.menu_contacts\",\"frontdesk.frontdesk_menu_root\",\"point_of_sale.menu_point_root\",\"crm.crm_menu_root\",\"sale.sale_menu_root\",\"spreadsheet_dashboard.spreadsheet_dashboard_menu_root\",\"sale_subscription.menu_sale_subscription_root\",\"sale_renting.rental_menu_root\",\"pos_preparation_display.menu_point_kitchen_display_root\",\"account_accountant.menu_accounting\",\"documents.menu_root\",\"project.menu_main_pm\",\"hr_timesheet.timesheet_menu_root\",\"industry_fsm.fsm_menu_root\",\"planning.planning_menu_root\",\"helpdesk.menu_helpdesk_root\",\"website.menu_website_configuration\",\"website_slides.website_slides_menu_root\",\"social.menu_social_global\",\"marketing_automation.marketing_automation_menu\",\"mass_mailing.mass_mailing_menu_root\",\"mass_mailing_sms.mass_mailing_sms_menu_root\",\"event.event_main_menu\",\"survey.menu_surveys\",\"purchase.menu_purchase_root\",\"stock.menu_stock_root\",\"mrp.menu_mrp_root\",\"mrp_workorder.menu_mrp_workorder_root\",\"quality_control.menu_quality_root\",\"stock_barcode.stock_barcode_menu\",\"maintenance.menu_maintenance_title\",\"repair.menu_repair_order\",\"mrp_plm.menu_mrp_plm_root\",\"account_consolidation.menu_consolidation\",\"sign.menu_document\",\"hr.menu_hr_root\",\"hr_work_entry_contract_enterprise.menu_hr_payroll_root\",\"hr_appraisal.menu_hr_appraisal_root\",\"hr_attendance.menu_hr_attendance_root\",\"hr_recruitment.menu_hr_recruitment_root\",\"hr_referral.menu_hr_referral_root\",\"fleet.menu_root\",\"hr_holidays.menu_hr_holidays_root\",\"hr_expense.menu_hr_expense_root\",\"lunch.menu_lunch\",\"im_livechat.menu_livechat_root\",\"data_recycle.menu_data_cleaning_root\",\"approvals.approvals_menu_root\",\"whatsapp.whatsapp_menu_main\",\"iot.iot_menu_root\",\"base.menu_management\",\"base.menu_tests\",\"base.menu_administration\"]",
"voip_username": false,
"voip_secret": false,
"should_call_from_another_device": false,
"external_device_number": false,
"should_auto_reject_incoming_calls": false,
"how_to_call_on_mobile": "ask",
"is_discuss_sidebar_category_whatsapp_open": true,
"onsip_auth_username": false,
"livechat_username": false,
"livechat_lang_ids": [],
"is_discuss_sidebar_category_livechat_open": true
}
```
- Reorder an app in the home menu and check again the settings object:
```JavaScript
{
"id": 1,
"homemenu_config": "[\"mail.menu_root_discuss\",\"room.room_menu_root\",\"project_todo.menu_todo_todos\",\"calendar.mail_menu_calendar\",\"appointment.main_menu_appointments\",\"membership.menu_association\",\"knowledge.knowledge_menu_root\",\"contacts.menu_contacts\",\"frontdesk.frontdesk_menu_root\",\"point_of_sale.menu_point_root\",\"crm.crm_menu_root\",\"sale.sale_menu_root\",\"spreadsheet_dashboard.spreadsheet_dashboard_menu_root\",\"sale_subscription.menu_sale_subscription_root\",\"sale_renting.rental_menu_root\",\"pos_preparation_display.menu_point_kitchen_display_root\",\"account_accountant.menu_accounting\",\"documents.menu_root\",\"project.menu_main_pm\",\"hr_timesheet.timesheet_menu_root\",\"industry_fsm.fsm_menu_root\",\"planning.planning_menu_root\",\"helpdesk.menu_helpdesk_root\",\"website.menu_website_configuration\",\"website_slides.website_slides_menu_root\",\"social.menu_social_global\",\"marketing_automation.marketing_automation_menu\",\"mass_mailing.mass_mailing_menu_root\",\"mass_mailing_sms.mass_mailing_sms_menu_root\",\"event.event_main_menu\",\"survey.menu_surveys\",\"purchase.menu_purchase_root\",\"stock.menu_stock_root\",\"mrp.menu_mrp_root\",\"mrp_workorder.menu_mrp_workorder_root\",\"quality_control.menu_quality_root\",\"stock_barcode.stock_barcode_menu\",\"maintenance.menu_maintenance_title\",\"repair.menu_repair_order\",\"mrp_plm.menu_mrp_plm_root\",\"account_consolidation.menu_consolidation\",\"sign.menu_document\",\"hr.menu_hr_root\",\"hr_work_entry_contract_enterprise.menu_hr_payroll_root\",\"hr_appraisal.menu_hr_appraisal_root\",\"hr_attendance.menu_hr_attendance_root\",\"hr_recruitment.menu_hr_recruitment_root\",\"hr_referral.menu_hr_referral_root\",\"fleet.menu_root\",\"hr_holidays.menu_hr_holidays_root\",\"hr_expense.menu_hr_expense_root\",\"lunch.menu_lunch\",\"im_livechat.menu_livechat_root\",\"data_recycle.menu_data_cleaning_root\",\"approvals.approvals_menu_root\",\"whatsapp.whatsapp_menu_main\",\"iot.iot_menu_root\",\"base.menu_management\",\"base.menu_tests\",\"base.menu_administration\"]"
}
```
Forward-Port-Of: odoo/odoo#155902This update resolves a potential problem where a channel could be removed while a call was still loading, leading to errors. This fix ensures calls are handled correctly and prevents disruptions to user experience. It's a technical improvement focused on stability.
Original PR description
Before this commit, there could be race conditions in which a channel could be removed while the call was still loading, this commit prevents this issue. task-3660964 Forward-Port-Of: odoo/odoo#149034
This update resolves an issue related to how access keys are used within the loyalty program. The change ensures consistent behavior whether accessing loyalty data through retrieval or subscription methods, improving reliability and preventing potential errors. This update focuses on internal improvements within the loyalty module.
Original PR description
Addendum to https://github.com/odoo/odoo/commit/7ed0a773b6e0 Reference PR: https://github.com/odoo/odoo/pull/150418 Forward-Port-Of: odoo/odoo#155927
This update fixes an issue where discounts applied across multiple orders were leading to inaccurate report totals. The system now calculates the total amount for each product line and then sums those totals, ensuring accurate calculations regardless of how many times a product with a discount is ordered. This improves the reliability of sales reports.
Original PR description
Before this commit, if a product had a discount applied in two different orders, it could lead to incorrect calculations in the report For instance, if a product priced at 14.45 had a 30% discount…
Before this commit, if a product had a discount applied in two different orders, it could lead to incorrect calculations in the report For instance, if a product priced at 14.45 had a 30% discount applied, the discounted value would be 10.115, which rounds to 10.12. However, if there were two orders with the same discount, the report calculation would count the quantity of a product with the same discount and calculate the product total amount in one place. This would result in a discounted value of 10.115 * 2 = 20.23, while in the two different orders we had two 10.12 which sums to 20.24. With this commit, the calculation method has been changed. Now, the product amount total for each line is calculated first, and then the sum of these amounts is used to calculate the total for all of the orders. This change ensures accurate computation of the product total sum when discounts are applied across multiple orders. opw-3721376 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#156044 Forward-Port-Of: odoo/odoo#155899
This update resolves an error that occurred when creating new websites without a linked company. It also ensures existing Brazilian websites are updated consistently after module installation, standardizing their settings. This improves website creation reliability and data consistency.
Original PR description
This commit fixes an issue on websites creation. If a website is created with no company linked to it, an error is raised because website.company_id has no value. This is fixed by using a .get(). While at it a constistency issue is fixed too. When installing the module, already existing websites don't get their setting changed when the module is installed. A post init hook has been added to address this issue so all brazilian webites have the same behavior. Fixed issues originate from this commit: https://github.com/odoo/odoo/commit/45f28eed95b60119fb1770524e10b84eeee5e95f --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This update ensures that expired promotion programs are no longer applied in the Point of Sale system. The issue stemmed from a recent code change that didn't properly handle date formats, allowing outdated promotions to be used. This fix improves the accuracy of promotions and prevents potential revenue loss.
Original PR description
Before this commit, an expired promotion program could still be used. This issue arose due to a recent refactoring, which resulted in the 'date_to' and 'date_from' fields not being properly converted to date format. opw-3782490 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This update fixes a rare crash that occurred when Odoo generated initial assets (like CSS and JavaScript). The issue stemmed from a timing problem where multiple processes attempted to create the same directory simultaneously. This change ensures consistent directory creation, preventing the crash and improving stability.
Original PR description
Fix race-condition when a directory is created by two processes (python's os.py handles it for all directories, but not for the last one). Happens sometimes when generating assets for the first time…
Fix race-condition when a directory is created by two processes (python's os.py handles it for all directories, but not for the last one). Happens sometimes when generating assets for the first time (CSS, JS); one of the two times might crash.
Traceback :
```FileExistsError: [Errno 17] File exists: '/home/odoo/.local/share/Odoo/filestore/brawl-stars/7d'
File "odoo/http.py", line 2251, in __call__
response = request._serve_db()
File "odoo/http.py", line 1826, in _serve_db
return self._transactioning(_serve_ir_http, readonly=ro)
File "odoo/http.py", line 1847, 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 1824, in _serve_ir_http
return self._serve_ir_http(rule, args)
File "odoo/http.py", line 1832, in _serve_ir_http
response = self.dispatcher.dispatch(rule.endpoint, args)
File "odoo/http.py", line 2057, in dispatch
result = self.request.registry['ir.http']._dispatch(endpoint)
File "odoo/addons/base/models/ir_http.py", line 222, in _dispatch
result = endpoint(**request.params)
File "odoo/http.py", line 740, in route_wrapper
result = endpoint(self, *args, **params_ok)
File "addons/web/controllers/dataset.py", line 34, in call_kw
return self._call_kw(model, method, args, kwargs)
File "addons/web/controllers/dataset.py", line 30, 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 "addons/website/models/website.py", line 431, in configurator_apply
redirect_url = theme.button_choose_theme()
File "addons/website/models/ir_module_module.py", line 399, in button_choose_theme
self._theme_remove(website)
File "addons/website/models/ir_module_module.py", line 375, in _theme_remove
self.env['theme.utils'].with_context(website_id=website.id)._reset_default_config()
File "addons/website/models/theme_models.py", line 259, in _reset_default_config
self.env['web_editor.assets'].make_scss_customization(
File "addons/website/models/assets.py", line 38, in make_scss_customization
self.make_scss_customization('/website/static/src/scss/options/colors/user_theme_color_palette.scss', {
File "addons/website/models/assets.py", line 143, in make_scss_customization
self.save_asset(url, 'web.assets_frontend', updatedFileContent, 'scss')
File "addons/web_editor/models/assets.py", line 77, in save_asset
self.env["ir.attachment"].create(new_attach)
File "<decorator-gen-292>", line 2, in create
File "odoo/api.py", line 420, in _model_create_multi
return create(self, [arg])
File "addons/website/models/ir_attachment.py", line 23, in create
return super().create(vals_list)
File "<decorator-gen-61>", line 2, in create
File "odoo/api.py", line 421, in _model_create_multi
return create(self, arg)
File "odoo/addons/base/models/ir_attachment.py", line 636, in create
values.update(self._get_datas_related_values(
File "odoo/addons/base/models/ir_attachment.py", line 277, in _get_datas_related_values
values['store_fname'] = self._file_write(data, values['checksum'])
File "odoo/addons/base/models/ir_attachment.py", line 132, in _file_write
fname, full_path = self._get_path(bin_value, checksum)
File "odoo/addons/base/models/ir_attachment.py", line 112, in _get_path
os.makedirs(dirname)
File "os.py", line 225, in makedirs
mkdir(name, mode)
```
sentry-4417110945
---
I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Forward-Port-Of: odoo/odoo#156232This update resolves an issue where the search bar within the website's fixed header was incorrectly positioned. The fix involves relocating the search element to ensure it appears below the header when the header is in its fixed state, improving the user experience in website edit mode.
Original PR description
Steps to reproduce:
- In website edit mode, have a header with a search icon
('default header').
- Add a few building blocks, enough so that you can scroll.
- Save the page.
- Scroll down until the header is back to fixed on top.
- Click on the search icon.
- Bug: the search bar appears in header (instead of below it, like at
the beginning).
This issue occurs because when the header is fixed and has a 'transform:
translate' property applied, the search modal, which is positioned
absolutely, takes the dimensions of the header instead of those of the
body.
To resolve this, we relocated the '#o_search_modal' element from the
'#header' to '#o_shared_blocks'.
task-3646513
Forward-Port-Of: odoo/odoo#155703This update fixes a usability issue where the image crop tool wouldn't work correctly when images were partially visible on the website editor. The change ensures the image is scrolled to a visible position before cropping, allowing users to accurately adjust image sizes and ensuring the crop widget functions as intended.
Original PR description
Steps to reproduce: - Go to a website page (in "edit" mode) > Add a "Text Image" block > Add other blocks before and after the snippet so you can scroll the page content. - Scroll in a way that makes only a part of the image visible. - Select the image and click on the "Crop" button > The crop widget is applied to the image in its current position (partially visible), which makes it impossible to crop it correctly. The goal of this commit is to prevent the issue described above by simply scrolling to a position that allows to correctly edit the image before applying the crop widget and also allowing the widget element to scroll when trying to crop an image that overflows the current viewport. task-3420186 Forward-Port-Of: odoo/odoo#155094 Forward-Port-Of: odoo/odoo#152440
This update resolves an issue where users received an error when reconciling payments after changing the outstanding receipts account in the bank journal. The fix ensures the system correctly handles updates to payment accounts, preventing reconciliation failures. This improves the reliability of payment processing.
Original PR description
When having reconciled a payment with an invoice after having changed the outstanding receipts account on the bank journal, we get an error when unreconciliing the payment and the move. Steps: - Create two new outstanding receipts accounts X and Y - Set X as outstandings receipts account on the Bank journal - Create a manual customer payment P for $100, confirm - On Bank journal, change the outstanding receipts account from X to Y - Create and confirm an invoice for $100 - Reconcile with payment P from the widget - Unreconcile or reset invoice to draft -> Error: "Journal Entry %s is not valid. In order to proceed, the journal items must include one and only one outstanding payments/receipts account." This is a fw port of https://github.com/odoo/odoo/pull/149285 which is not needed in 16, and needed here only where we reset move to draft/unreconcile opw-3659092 Forward-Port-Of: odoo/odoo#155558
This update resolves an issue where the calendar month view wasn't correctly showing the start hour of events. The fix ensures that the start hour is consistently displayed, improving the accuracy of event scheduling and visibility within the calendar. This was a minor bug fix identified and resolved by our development team.
Original PR description
The `test_calendar_month_view_start_hour_displayed` makes sure that start hour is display in calendar month view.
The test was failing because when clicking on scale selector, it used '.dropdown-toggle:contains("Week")' however it might happen that the current scale is not week.
This commit fixes this issue by changing the way we access the scale selector.
fixes runbot-59023
Forward-Port-Of: odoo/odoo#156121This update corrects a display issue where landed costs were incorrectly shown for product types like Event Tickets and Gift Cards. The fix involves changing how product types are defined within the system, ensuring landed costs are only visible for service-based products during purchase.
Original PR description
Steps to Reproduce : - install sales, stock modules - go to products and create new - select product type as Event Ticket,Event Booth or Gift Card - Landed cost boolean is suppose to be visible for a…
Steps to Reproduce : - install sales, stock modules - go to products and create new - select product type as Event Ticket,Event Booth or Gift Card - Landed cost boolean is suppose to be visible for a service type product under purchase. Issue : - Landed cost boolean is suppose to be visible for a service type product under purchase, But currently it is visible on other type of products specific to other models like event tickets, event booths etc. Cause: - In product Module there are two Selection fields like detailed_type and type. The detailed_type Selection field contain service, consumable, event booths, event tickets, storable product And the type selection field contains service, consumable, storable product - In xml views for that landed cost boolean the invisible attribute contains the condition like type != service, because of this the landed cost boolean is visible for the product type of event tickets, event booths and gift Cards. Solution: - if we use detailed_type instead of type selection field, then the landed cost boolean field will be invisible on other product types. task- 3725202 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#156133 Forward-Port-Of: odoo/odoo#153371
This update fixes an issue where the shipping price wasn't correctly recalculated when a customer changed their shipping address during checkout. Now, the system automatically updates the shipping rate in the order badge after the address is modified, ensuring accurate delivery costs for customers. This improves the overall checkout experience and prevents potential order errors.
Original PR description
Steps to reproduce: 1) Configure a carrier with 3d party api(for ex. fedex) 2) Create 2 shipping addresses(better to choose addresses with different delivery rates) 3) Go to /shop and add product that needs to be delivered 4) Proceed to checkout choosing a shipping address and a carrier 5) See the calculated rate 6) Click on 'edit' near the addresses and change the address 7) Click 'confirm' and observe that a new rate on the badge is not applied to the order After this commit the rate is recalculated and updated when the shipment address is changed. opw-3737266 Forward-Port-Of: odoo/odoo#155943 Forward-Port-Of: odoo/odoo#155170
This update moves the 'Kode Transaksi' field from the accounting tab to the tax field within the customer contact view. This ensures the sales team can easily access and utilize this critical field for sales transactions, improving workflow efficiency. The change addresses a previous limitation where the field was hidden from the sales team.
Original PR description
Currently the field `Kode Transaksi` can be found inside the accounting tab. This fix will move it under the tax field. `Kode Transaksi` is a field that should be used in the sale flow and is…
Currently the field `Kode Transaksi` can be found inside the accounting tab. This fix will move it under the tax field. `Kode Transaksi` is a field that should be used in the sale flow and is currently unavailabe for sales team. Steps to reproduce: ------------------- * Install **l10n_id** * Create a company with indonesian localization * Switch to that company * Creat a contact * Toggle the checkbox next to `Tax ID` * Under the `Accounting` tab, you can find `Kode transaksi`. Sales team don't have access to the accounting tab, and thus not to `Kode transaksi` either. Why the fix: ------------ Technically what we want here is to have the field for `Kode Transaksi` after the `vat` field from this view https://github.com/odoo/odoo/blob/04593b265b765f7a6ee079f21bad6a1cf0e5d094/odoo/addons/base/views/res_partner_views.xml#L205-L210 Two possible solutions for this fix: * Fetch the path to `group/group` and put the field inside. * Fetch the path to the `vat` field and put the field after. This would also require to change the priority of the view starting from saas-16.3 because the `vat` field is being moved in this view: https://github.com/odoo/odoo/blob/8ccde3f101cdb6ca41fe29cc5b4252f13745774a/addons/base_vat/views/res_partner_views.xml#L14-L18 By changing the priority, it would allow for `Kode transaksi` to be place after the `vat_vies_container`. Else it would be inside, which does not make sense inthis case. opw-3731357 Forward-Port-Of: odoo/odoo#156005 Forward-Port-Of: odoo/odoo#155515
This update resolves an issue where survey text areas would overlap when resized, particularly when filling them with a lot of text. The fix ensures the text area maintains its intended height and prevents unexpected resizing behavior, improving the user experience for surveys.
Original PR description
**Steps to reproduce:** - Create a survey and enable all questions in 1 page - Add questions. (Minimum 1 Multiple Lines Text Box) - Test the survey - Fill the text area with a certain amount of data…
**Steps to reproduce:** - Create a survey and enable all questions in 1 page - Add questions. (Minimum 1 Multiple Lines Text Box) - Test the survey - Fill the text area with a certain amount of data vertically - Now, hold the icon to resize the text area block - It's overlapping with other questions. **Issue:** Fixed `height:1px` is applied to Parent div. **Technical Reason:** With this commit (https://github.com/odoo/odoo/commit/eaacaf122dff62adcdf885f0ffdcb4a506bded27) the height is applied to the parent div and textarea which is the same for the backend(title of the survey) and frontend. Now backend needs to apply this height to the parent and text area because it has to show all data in the text area but, in the frontend, if we change the height of the textarea then while pressing enter the textarea block increases, and this should not happen. **Solution:** So, applying the `h-auto` class to the parent div of textarea. Now, the questions did not overlap with each other. **Task**-3707415 Forward-Port-Of: odoo/odoo#152182
This update prevents the automatic generation of a Windows-specific configuration file containing a hashed admin password from being tracked in the Odoo Git repository. This change improves security by avoiding potential exposure of sensitive information and ensures a cleaner, more secure development process.
Original PR description
On Windows installations there is a odoo.conf file generated in the root directory containing a hashed admin password. This only happens in Windows installations where the config file location is not specified. The code responsible can be found here: https://github.com/odoo/odoo/blob/d2ccea9a292c02dc6f4cfdb960d22caa0fd98fd5/odoo/tools/config.py#L414 Forward-Port-Of: odoo/odoo#156099
This update resolves an issue where the status bar on mobile devices would overflow when viewing the expense module. The fix ensures the status bar remains within the screen boundaries, providing a consistent and usable experience for users on smaller mobile screens. This improves the overall usability of the expense tracking feature.
Original PR description
Steps to reproduce ================== - Install Expense (hr_expense) - Use a small viewport - Go to Expense => The status bar overflows  opw-3704233 Forward-Port-Of: odoo/odoo#156114 Forward-Port-Of: odoo/odoo#154032
This update resolves an issue where form fields were displaying numerical IDs instead of their intended labels. This change ensures users see the correct labels when selecting options within forms, improving usability and data entry accuracy. The fix was triggered by a user reporting the incorrect display of field IDs.
Original PR description
This commit resolves an issue (arose in [1]) where a select field was displaying IDs instead of labels. Steps to reproduce: - Navigate to edit mode - Drop a form block. - Select the form action type "create customer" (CRM app must be installed). - Add a field for "country". - Add another field and set its visibility to depend on the country value. Issue: Users are seeing IDs instead of country labels. [1]: https://github.com/odoo/odoo/commit/a54f11edb1f81c8dade2a4ef6080b666b94e918d task-3460326 Forward-Port-Of: odoo/odoo#155531
This update resolves a bug where PDF navigation buttons (next, previous, etc.) in e-learning materials were sometimes incorrectly enabled or disabled. The fix ensures these buttons function reliably, regardless of the content's structure or suggested slides, improving the user experience for e-learning courses.
Original PR description
Bug === When we show a PDF in e-learning, we have some navigation buttons (next, previous, last, first) with some conditions for them to be enabled or not (e.g. a documentation can have suggested slides, and so the next button is visible even if we are on the last page). Those conditions are broken (sometimes a button is disabled when it shouldn't and vice versa), this commit aims to fix that issue. Task-3751253 Forward-Port-Of: odoo/odoo#156252 Forward-Port-Of: odoo/odoo#154967
This update fixes an issue that prevented the generation of PDF BOM overviews when products were created with dynamic attribute variants. The change ensures that BOMs are correctly generated, even with this product configuration, allowing users to consistently print accurate BOM reports. This resolves a previous error that impacted the printing of product BOMs.
Original PR description
Current Behavior: - Traceback when printing the BOM overview. Expected behavior: - Generates a PDF of the BOM overview even if the information displayed is entirely relevant. Steps to reproduce: -…
Current Behavior: - Traceback when printing the BOM overview. Expected behavior: - Generates a PDF of the BOM overview even if the information displayed is entirely relevant. Steps to reproduce: - Inventory > Configuration > Products > Attributes Create an attribute with Variants Creation Mode set to "Dynamically". Create a new product with this single attribute and multiple values. Create a BOM for this product with BOM Type set to "Subcontracting". Print the BOM overview. Cause of the issue: - Creating such a product generates a 'product.template' that is not associated to any variant and hence does not correspond to any 'product.product'. As a result the function `_get_bom_data` can not apply the method `_select_seller` properly in that case. Notes: - - There is no error if a variant was manually created for that product. - If the Variants Creation Mode set to "Dynamically" a variant is still automatically created to be associated to the product tempalte so that the erro does not rise. Fix: - As the _select_seller method is only defined for product.product and not for product.template, we can not not apply it here. Furhtermore, since the additional informations provided by the override of the method get_bom_data in the the BOM overview will not be relevant without the existence of a variant, we skip this part of the code when the argument of _select_seller is not valid. opw-3698050 - --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#152275
This update ensures that taxes are calculated consistently regardless of their order on an invoice. Previously, the order in which taxes were applied could lead to different totals. This fix introduces a standardized sorting method to guarantee accurate tax calculations for all invoices.
Original PR description
**Issue Description**: Currently, the order in which taxes are applied can vary based on the sequence they are entered in the invoice's Taxes field. This inconsistency arises when the tax list is not…
**Issue Description**: Currently, the order in which taxes are applied can vary based on the sequence they are entered in the invoice's Taxes field. This inconsistency arises when the tax list is not manually adjusted, leading to each tax having an identical sequence value. As a result, their hierarchy within the `flatten_taxes_hierarchy` function is determined by their input order rather than a defined sequence, causing unpredictable tax calculations. https://github.com/odoo/odoo/blob/56666f8f7858fcbcce466d2240135b35509d2d96/addons/account/models/account_tax.py#L611-L632 A tax sequence should be explicitly defined, and in cases where sequences are identical, organization by tax ID should be enforced. **Steps to Reproduce**: 1. Navigate to the `Account` or `Invoice` app. 2. Go to `Configuration > Taxes`. 3. Create a new tax with the advanced option `Affect Base of Subsequent Taxes` and specify an amount. 4. Generate a new invoice and add a line item priced at 100. 5. Apply taxes in the `Taxes` column in the following order: 15% followed by the newly created tax, and note the total amount. 6. Repeat step 5, but reverse the order of the taxes. 7. Observe that the total amounts differ between the two sequences. **Proposed Solution**: To ensure that taxes are applied consistently regardless of input order, we will modify the `flatten_taxes_hierarchy` function to add sorting by id. If the sequences are identical, the sorting will depend only on the id, otherwise it will be based on the sequence. This setting ensures a predictable and logical process for applying taxes. opw-3691765 Forward-Port-Of: odoo/odoo#156031 Forward-Port-Of: odoo/odoo#154167
This update ensures that product variants are automatically adjusted when product template exclusions are created, modified, or removed. Previously, changes to exclusions didn't reflect on the associated variants. This fix maintains data consistency and accuracy for product offerings.
Original PR description
opw-3693065 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#156212 Forward-Port-Of: odoo/odoo#155103
This update fixes an issue where tests related to screencast recordings wouldn't run correctly if the necessary files were missing. It also reduces the amount of logging generated during test failures, making debugging easier. This ensures more reliable test results and faster identification of problems with screencast functionality.
Original PR description
Fix similar to 151558 Don't fail if the screencast dir doesn't exist (after clear) Also, reduce the log size. Forward-Port-Of: odoo/odoo#156202 Forward-Port-Of: odoo/odoo#156043