Daily updates from Odoo
Monday, July 14, 2025
42 changes
21 changes
Resolved issues and error corrections
Creating a website menu item now works even when a website has no existing menus. This prevents an error screen in the Website Editor and lets users save new menu items normally.
Original PR description
A traceback occurs when a user attempts to create a
menu item from the Website Editor.
**To reproduce this issue:**
1) Install the website_event module and enable debug mode.
2) Delete all existing menus for a website from the Website Configuration.
3) Now, add a menu item from the website/Site/Menu editor.
4) Save the record
**Error:-**
```
KeyError: False
```
**Cause:**
When there are no existing menus on a website and a new menu is created,
the value of parent_id in the data dictionary is False.
Although the `parent_id` key is present, using `.get("parent_id")` returns False,
which leads to a `KeyError` in the following code line:
https://github.com/odoo/odoo/blob/d6db9f910288e69ecd8e26addd20ea34bda81f15/addons/website_event/models/website_menu.py#L83-L88
**Solution:**
We can check the `parent_id` in the data using `in` to solve the issue
if the value of the `parent_id` is False.
opw-4869138
Forward-Port-Of: odoo/odoo#215564This change updates a website test so it waits in a controlled way instead of relying on real-time delays. This helps reduce random test failures and keeps development checks faster and more dependable, without changing customer-facing website behavior.
Original PR description
In this commit, we're going to replace the use of setTimeout with advanceTime. No test should use setTimeout to wait for time, you should always use advanceTime. Using setTimout will slow down the test and cause some indeterminate bugs. 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 fix reduces the height of long selection dropdowns in the website builder so they fit within the visible screen. It helps users choose header scroll effects and other builder options without parts of the menu being cut off, especially on smaller windows.
Original PR description
> [ROMO] The dropdown to select the scroll effect for the header is partially hidden on top The size of dropdown of builder select was reduce by cdc74d6e5c1dc2c8d84d028b7b7c0284118a9d66 to avoid going out of viewport but it was not enough Steps to reproduce: - Open website builder - Find a `BuilderSelect` that is long enough (or reduce the window size) - Open it when it is near the middle of the height of the view port - Bug: the end is outside of the viewport task-4367641
Cloning a website Countdown block now hides its end-message preview, making it clearer that the full countdown snippet was copied rather than only the text. The related editing controls are also corrected so users see the right options and a clearer preview toggle.
Original PR description
This commit removes the end message preview of the "Countdown" snippet when cloning it or a snippet containing it. This makes it easier for the user to understand that he cloned the whole snippet and not just the text block. This commit also explicitely activates the `s_countdown` element options when hiding the end message preview. Indeed, if the message block was selected, its options were still activated despite it being hidden. This commit also removes the `text-primary` class from the show/hide message preview option when it is active, to make the eye more visible. task-4367641
This update fixes how the website and HTML editors reference styling information, avoiding stale cached editor data. It helps ensure editing tools behave correctly when multiple editor instances or reloaded editing frames are involved.
Original PR description
*: html_editor, website The `editableWindow` and `editableDocument` global variables in html_builder's utils_css file were leftovers from the previous codebase. We would rather not cache them that way, as this prevents from having different instances of the builder with different editable documents, and it would also be easy to break it without noticing after an iframe reload. Utils that needed the editableDocument or window mostly needed the iframe's computed style. Therefore, instead of relying on implicit variables, `htmlStyle` is added as a mandatory parameter. task-4367641
Installing the Spanish localization no longer fails if the default Service product category was previously deleted. This prevents an installation-blocking error and helps users complete setup without manually recreating the missing category.
Original PR description
Currently, an error occurs when the user installs the modules after deleting the 'Service' product category. **Steps to reproduce:** - Install the Inventory app. - Inventory > Configuration >…
Currently, an error occurs when the user installs the modules after deleting the 'Service' product category.
**Steps to reproduce:**
- Install the Inventory app.
- Inventory > Configuration > Categories > Delete 'Service'.
- Install the `l10n_es` module.
**Traceback:**
```
ValueError: External ID not found in the system: product.product_category_services
ParseError
while parsing /home/odoo/src/odoo/saas-18.3/addons/l10n_es/data/product_data.xml:3, somewhere inside <record id="product_dua_valuation_21" model="product. Product">
<field name="name">DUA VAT Valuation 21%</field>
<field name="default_code">DUA21</field>
<field name="categ_id" ref="product.product_category_services"/>
<field name="type">service</field>
<field name="sale_ok" eval="False"/>
<field name="purchase_ok" eval="True"/>
</record>
```
The error occurs because the user deleted the category and then installed the modules that reference the missing product category.
This commit resolves the error by providing a False value for the field if the product category is missing.
Sentry - 6710886848
Forward-Port-Of: odoo/odoo#216296This change stabilizes an automated test for mail connection alerts by preventing real network online/offline events from interfering with the test. It helps reduce false failures in Odoo's validation pipeline, making releases and fixes easier to verify.
Original PR description
Before this commit, the `show warning when bus connection encounters issues` test was sometime failing. [1] attempted to fix this issue and seems to have greatly reduced its frequence. However, the bus monitoring service still listens to the "offline" event. As a result, the test can still fails according to the runbot network condition. This commit fixes the issue by preventing the "online"/"offline" events during this test. fixes runbot-226443 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#218415
A minor wording typo was corrected in the portal sharing flow, with a small cleanup to make the related code clearer. This helps keep user-facing text polished and reduces future maintenance risk without changing core behavior.
Original PR description
fix a small typo and and refactor for clarity opw-4938011 Forward-Port-Of: odoo/odoo#218570
This fix prevents errors when users transform certain image shapes in website snippets. It recognizes older shape identifiers and maps them to the current naming, so image editing works reliably.
Original PR description
**Problem** Some snippets contain shapes whose ID starts with `web_editor` instead of `html_builder`. These IDs are not listed in `imageShapeDefinitions` [1], and this generates a traceback when trying to apply shape tranformations. **How to reproduce** 1. Insert the snippet `s_images_constellation` 2. Click on the bottom left image having the "Double Pill" shape 3. Click on any "Transform" button under the "Shape" row in the "Image" section 4. Problem: traceback pops up **Solution** When retrieving the shape ID, a check is performed. If `web_editor` is found at the beginning of the string, it is replaced with `html_builder`. [1] addons/html_builder/static/src/plugins/image/image_shapes_definition.js task-4367641
The shop page now avoids showing the same product category list twice when categories are placed in the sidebar and filters are opened from the offcanvas menu. This makes the shopping interface cleaner and reduces confusion for customers on larger screens.
Original PR description
Steps to reproduce: 1. Go to the shop page. 2. Open the editor and configure Categories to display on the left, and Attributes at the top. 3. Save the changes and click the offcanvas toggle button next to the layout buttons. Issue: - The category list appears twice: once on the left side and again in the offcanvas dropdown. This is redundant and affects the user experience. Cause: - The category list in the offcanvas menu isn’t restricted to mobile view, so it also displays on larger screens where it’s already visible in the sidebar. Fix: - Add the 'd-lg-none' class to hide the category list in the offcanvas menu on large devices. opw-4830180 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#218330
This fix prevents users from seeing actions like starring or marking messages as read on livechat chatbot messages that are not yet fully saved. Hiding these unavailable actions avoids errors and makes the chat experience more reliable.
Original PR description
**Before this PR:** the toggle-star and mark-as-read actions were visible on chatbot messages in a non-persisted livechat thread. Clicking these actions caused errors. This PR hides these actions when the thread is in a non-persisted state, preventing such errors. task-[4743758](https://www.odoo.com/odoo/project/1519/tasks/4743758) Forward-Port-Of: odoo/odoo#218367 Forward-Port-Of: odoo/odoo#214382
Opening a task's Subtasks action now reliably shows its subtasks, even when the subtasks topbar filter is turned off. This prevents users from thinking subtasks are missing and makes project navigation more consistent.
Original PR description
Steps to reproduce: ---------------- - Install the Project module. - Go to Project and create a project. - Create a task and a subtask. - Deactivate the subtasks topbar in the control panel. - Open the task's form view and click on the Subtasks action. Issue: ----------- Currently, if the subtasks topbar is deactivated and the user clicks on the Subtasks action from the task form view, the subtasks do not appear. Reason: ------------- We are only displaying subtasks if the subtasks topbar is active and when accessed via the My Tasks menu. Fix: -------- We fixed this by checking the subtask_action context in project_task_model_mixin.js. When the user opens subtasks through the subtask action, this context is set, allowing subtasks to be shown even if the topbar is deactivated. Effected Commit- https://github.com/odoo/odoo/pull/213096/commits/268ffa321e12466682b520740b576b71d36eabd5
This fix removes a default grouping setting from attendance reports that caused problems when inserting pivot views into spreadsheets. Spreadsheet users can now add attendance reporting data without duplicated grouping entries breaking the process.
Original PR description
The attendance reporting action had search_default_groupby_name in its context, causing duplicated group_by entries in pivot views used in spreadsheets. This breaks spreadsheet insertion. We removed the default groupby to restore compatibility. Related Task: 4897934. 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#216013
This fix makes cash rounding details optional during electronic invoice generation. It prevents errors when that information is not provided, helping invoice exports continue reliably.
Original PR description
Recently in commit b033a87bbf38ed12364ebf2e3ce0cefb2670470f the UBL generation was improved to handle cash rounding better. I.e. a new key 'cash_rounding_base_lines' was introduced to the `vals` used in the generation. This commit makes it optional to avoid tracebacks in case it is forgotten to be added. task-None Forward-Port-Of: odoo/odoo#218621
Customers will now see out-of-stock messages even when a product is available through the "pick up in store" option. This helps shoppers understand product availability more clearly and reduces confusion during online purchases.
Original PR description
Before the commit, when a 'pick up in store' was published, the out-of-stock message was hidden to avoid confusion. However, customers want to benefit from it, and now we reintroduce it. opw-4791969 Forward-Port-Of: odoo/odoo#218472 Forward-Port-Of: odoo/odoo#218284
This update makes live chat session history and tour tests run consistently by ensuring chats are ordered predictably and UI actions wait until the page is ready. It helps reduce false test failures, improving confidence in releases without changing day-to-day user behavior.
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#218103
When customers change the number of people for an appointment, the date they already selected now remains highlighted and active. This avoids confusion during booking and helps users continue the scheduling flow without reselecting the date.
Original PR description
Step to reproduce: 1. Install appointment and website 2. Go to Appointment > create a new appointment with availability on 'resources' 3. select a 'resource' and check 'manage capacities' 4. go to…
Step to reproduce: 1. Install appointment and website 2. Go to Appointment > create a new appointment with availability on 'resources' 3. select a 'resource' and check 'manage capacities' 4. go to website by smart button 5. Select a date slot. 6. Select the Number of People. Issue: - Previously selected date gets visually deselected or does not retain active state after changing the number of people. Cause: https://github.com/odoo/enterprise/blob/955edd68837c3a8302dcd34b1a6edee28e95ba23/appointment/static/src/interactions/appointment_select_appointment_slot.js#L460 - The logic attempted to restore the previously selected date by calling .click() on the date element. However, this click() call silently failed to trigger the desired behavior. Solution: - Instead of relying on .click() to re-trigger the selection, the handler onClickDaySlot() is now called directly, passing the appropriate DOM element as currentTarget. opw-4859743 Forward-Port-Of: odoo/enterprise#87514
This update corrects a translation maintenance process across multiple country-specific reporting modules. It helps keep localized report labels and translated content consistent, reducing the risk of incorrect or missing wording for users in affected regions.
Original PR description
Forward-Port-Of: odoo/enterprise#90004 Forward-Port-Of: odoo/enterprise#84682
Helpdesk tickets created directly in a closed stage are now correctly marked as closed. This prevents customers using the portal from seeing already closed tickets when they apply the Open Tickets filter, reducing confusion and improving ticket visibility.
Original PR description
**Steps to reproduce:** 1. Install the Helpdesk module. 2. Create a ticket directly in a closed stage (e.g., 'Solved') and add the portal user as a customer. 3. Log in as the portal user. 4. Apply the Open filter. **Issue:** - The ticket appears under Open Tickets, even though it was created in a closed stage. **Cause:** - Currently we consider a stage as closed if 'floded in kanban' is True and When a ticket is created directly in a closed stage, the close_date field is not set. Since the portal filter relies on close_date to distinguish open from closed tickets, this shows closed tickets in open filter. https://github.com/odoo/enterprise/blob/c34256932e593ac2774fa65af813d64edb70ec43/helpdesk/controllers/portal.py#L63 **Solution:** - During ticket creation, if the specified stage is a closing stage, set the close_date field to the current time. opw-4847097 Forward-Port-Of: odoo/enterprise#88983 Forward-Port-Of: odoo/enterprise#87293
The VoIP softphone now uses a minimize icon instead of a minus icon, aligning the interface with designer feedback. This small visual change makes the control clearer and more consistent for users.
Original PR description
Following feedback from the designers. Forward-Port-Of: odoo/enterprise#89949
Italian POS fiscal receipts and invoices now rely on the fiscal printer's built-in header instead of adding a second one. This prevents customers and staff from receiving receipts with duplicated header information, making printed documents cleaner and compliant with printer behavior.
Original PR description
The printer is already adding a header by default so we don't need to add one manually. Steps to reproduce: ------------------- * Setup an Italian fiscal printer in the POS * Open the POS and create a new order * Add a product and validate the order > Observation: The printed receipt has 2 headers. Why the fix: ------------ According to the Italian fiscal printer documentation, the header is automatically added by the printer, so we don't need to add it manually. Ticket before and after the fix:  opw-4794322 Forward-Port-Of: odoo/enterprise#89856 Forward-Port-Of: odoo/enterprise#89419
3 changes
Resolved issues and error corrections
Changing the number of people for an appointment no longer makes the previously chosen date appear unselected. This keeps the booking flow clearer for website visitors and helps avoid confusion when choosing capacity-based appointment slots.
Original PR description
Step to reproduce: 1. Install appointment and website 2. Go to Appointment > create a new appointment with availability on 'resources' 3. select a 'resource' and check 'manage capacities' 4. go to website by smart button 5. Select a date slot. 6. Select the Number of People. Issue: - Previously selected date gets visually deselected or does not retain active state after changing the number of people. Cause: https://github.com/odoo/enterprise/blob/955edd68837c3a8302dcd34b1a6edee28e95ba23/appointment/static/src/interactions/appointment_select_appointment_slot.js#L460 - The logic attempted to restore the previously selected date by calling .click() on the date element. However, this click() call silently failed to trigger the desired behavior. Solution: - Instead of relying on .click() to re-trigger the selection, the handler onClickDaySlot() is now called directly, passing the appropriate DOM element as currentTarget. opw-4859743
A translation-related issue in AvaTax address checks has been corrected. This prevents warnings or errors during address validation and helps tax workflows run more reliably for users in translated environments.
Original PR description
Prior to this commit, a translation issue occurred due to the use of a list comprehension. The _get_translation_source function attempts to scan the local variables, but in the context of a list comprehension, only variables defined within the comprehension are accessible. As a result, variables like uuid and cursor were not available to the _get_lang function, ultimately leading to an error. We replaced the list comprehension with a standard for loop to ensure proper access to local variables. runbot-159883
Italian POS fiscal receipts and invoices no longer add an extra header because supported fiscal printers already include one automatically. This prevents receipts from showing two headers, making printed documents cleaner and compliant with printer behavior.
Original PR description
The printer is already adding a header by default so we don't need to add one manually. Steps to reproduce: ------------------- * Setup an Italian fiscal printer in the POS * Open the POS and create a new order * Add a product and validate the order > Observation: The printed receipt has 2 headers. Why the fix: ------------ According to the Italian fiscal printer documentation, the header is automatically added by the printer, so we don't need to add it manually. Ticket before and after the fix:  opw-4794322 Forward-Port-Of: odoo/enterprise#89856 Forward-Port-Of: odoo/enterprise#89419
7 changes
Resolved issues and error corrections
Italian POS fiscal receipts and invoices no longer add a manual header because supported fiscal printers already print one automatically. This prevents customers from receiving receipts with duplicated header information, improving receipt clarity and compliance with printer behavior.
Original PR description
The printer is already adding a header by default so we don't need to add one manually. Steps to reproduce: ------------------- * Setup an Italian fiscal printer in the POS * Open the POS and create a new order * Add a product and validate the order > Observation: The printed receipt has 2 headers. Why the fix: ------------ According to the Italian fiscal printer documentation, the header is automatically added by the printer, so we don't need to add it manually. Ticket before and after the fix:  opw-4794322 Forward-Port-Of: odoo/enterprise#89856 Forward-Port-Of: odoo/enterprise#89419
The Payroll app no longer shows an error when users open the Payslips menu before any payslips have been created. This prevents an unnecessary interruption and makes the menu usable for new or empty payroll setups.
Original PR description
This PR fixes a traceback that occurred when opening the Payslips menu in the Payroll app without any existing payslips. Root Cause: The issue was caused by passing a null or undefined payrunId to the PayslipActionHelper component, which was not handled properly. Solution: Since payrunId is optional, we added a conditional check in the parent view (hr_payslip_list_renderer) to only pass the payrunId to PayslipActionHelper if it is defined. Related task: 4919933.
The VoIP softphone now uses a clearer minimize icon instead of a minus icon, aligning the interface with designer feedback. This small visual adjustment helps users better understand the button's purpose without changing functionality.
Original PR description
Following feedback from the designers. Forward-Port-Of: odoo/enterprise#89949
This fix updates stored image information so website and marketing email content uses the current image data fields. It helps prevent broken or inconsistent image handling after the html builder changes.
Original PR description
*: marketing_automation_website_sale When `html_builder` was introduced, some data attributes related to images have changed. Unfortunately, the attributes on static data were not adapted accordingly. Because of this, both namings might appear in this version. This commit migrates images and background images attributes to use the new attributes. Dataset changes: - copy `originalId` to `attachmentId` - rename `originalMimetype` to `formatMimetype` task-4367641
Helpdesk tickets created directly in a closed stage are now marked as closed immediately. This keeps the customer portal's Open Tickets filter accurate, reducing confusion for portal users and support teams.
Original PR description
**Steps to reproduce:** 1. Install the Helpdesk module. 2. Create a ticket directly in a closed stage (e.g., 'Solved') and add the portal user as a customer. 3. Log in as the portal user. 4. Apply the Open filter. **Issue:** - The ticket appears under Open Tickets, even though it was created in a closed stage. **Cause:** - Currently we consider a stage as closed if 'floded in kanban' is True and When a ticket is created directly in a closed stage, the close_date field is not set. Since the portal filter relies on close_date to distinguish open from closed tickets, this shows closed tickets in open filter. https://github.com/odoo/enterprise/blob/c34256932e593ac2774fa65af813d64edb70ec43/helpdesk/controllers/portal.py#L63 **Solution:** - During ticket creation, if the specified stage is a closing stage, set the close_date field to the current time. opw-4847097 Forward-Port-Of: odoo/enterprise#88983 Forward-Port-Of: odoo/enterprise#87293
Product pages now show subscription pricing in the correct layout. This makes prices clearer for shoppers and helps avoid confusion when products are sold as subscriptions.
Original PR description
This commit fixes the price layout when the product is offered as a subscription. task-4894315 COM: https://github.com/odoo/odoo/pull/215794
Changing the number of people on an appointment booking no longer makes the previously chosen date appear unselected. This keeps the booking flow clearer for customers and helps avoid confusion while selecting availability.
Original PR description
Step to reproduce: 1. Install appointment and website 2. Go to Appointment > create a new appointment with availability on 'resources' 3. select a 'resource' and check 'manage capacities' 4. go to…
Step to reproduce: 1. Install appointment and website 2. Go to Appointment > create a new appointment with availability on 'resources' 3. select a 'resource' and check 'manage capacities' 4. go to website by smart button 5. Select a date slot. 6. Select the Number of People. Issue: - Previously selected date gets visually deselected or does not retain active state after changing the number of people. Cause: https://github.com/odoo/enterprise/blob/955edd68837c3a8302dcd34b1a6edee28e95ba23/appointment/static/src/interactions/appointment_select_appointment_slot.js#L460 - The logic attempted to restore the previously selected date by calling .click() on the date element. However, this click() call silently failed to trigger the desired behavior. Solution: - Instead of relying on .click() to re-trigger the selection, the handler onClickDaySlot() is now called directly, passing the appropriate DOM element as currentTarget. opw-4859743 Forward-Port-Of: odoo/enterprise#87514
11 changes
Resolved issues and error corrections
This fixes an import error that could block Italian electronic invoices containing a zero-priced line with no discount or surcharge. Businesses can now process these invoices normally without a division-by-zero failure.
Original PR description
Error "division by zero" raised when importing a XML invoice with `price_unit == 0` and `ScontoMaggiorazione == 0` introduced by #206238
This update adjusts translated messages so they no longer use a format that can break translation extraction on some Ubuntu build environments. It helps keep automated builds and deployments reliable without changing business workflows or user-facing features.
Original PR description
On Jammy, babel does *not* cope well with f-strings as values inside `_()` calls: it uses `eval` to try and figure them out, which attempts to execute the f-string, which fails because the evaluation context is empty. This is likely fixed from Babel 2.11 onwards (python-babel/babel#915) but Jammy uses babel 2.8[^1]. https://runbot.odoo.com/odoo/runbot.build.error/97849 [^1]: This doesn't seem to trigger on Noble even though it uses 2.10, but locally it does trigger on 2.10.3 (installed via pip), so ubuntu might have backported the fix or something.
Fixed a problem that could cause warnings when survey answer statistics were translated. This makes survey reporting more reliable for users working in different languages.
Original PR description
Issue: Prior to this commit, a translation issue occurred due to the use of a list comprehension. The _get_translation_source function attempts to scan the local variables, but in the context of a list comprehension, only variables defined within the comprehension are accessible. As a result, variables like uuid and cursor were not available to the _get_lang function, ultimately leading to an error. Fix: Replaced the list comprehension with a standard for loop to ensure proper access to local variables. runbot-135198
Internal users without Accounting permissions can now add sub-contacts to contacts that use Spanish FACe Center roles without hitting an access error. This removes an unnecessary restriction so regular contact management works as expected while keeping the change limited to read access for role data.
Original PR description
**Steps to reproduce:** - Install l10n_es_edi_facturae - With an admin user, create a contact - From the contact, add a "FACe Center" sub-contact with a Role - Save the contact - With a user that doesn't have any Accounting rights, try to add a sub-contact to the previously created contact **Issue:** An access error is raised because some Accounting rights are needed to access "l10n_es_edi_facturae.ac_role_type" records. **Cause:** "l10n_es_edi_facturae.ac_role_type" is only readable for "account.group_account_invoice" group and "account.group_account_readonly" group. **Solution:** There's is no point to restrict the read access to an Accounting group. The model is made readable for all internal users. opw-4788636 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Receipts created with an invoice date now keep that intended date instead of being set to the current day. This helps ensure accounting records reflect the correct transaction timing and avoids date-related reporting errors.
Original PR description
* When invoice_date is set with create method for receipts, the date is not set correctly to invoice_date, but it's wrongly set to today. * Missing dependency 'move_type' to compute method. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
The shop page now avoids showing the same product category list twice when filters are opened on larger screens. This removes a confusing duplicate menu and makes the shopping experience cleaner for customers.
Original PR description
Steps to reproduce: 1. Go to the shop page. 2. Open the editor and configure Categories to display on the left, and Attributes at the top. 3. Save the changes and click the offcanvas toggle button next to the layout buttons. Issue: - The category list appears twice: once on the left side and again in the offcanvas dropdown. This is redundant and affects the user experience. Cause: - The category list in the offcanvas menu isn’t restricted to mobile view, so it also displays on larger screens where it’s already visible in the sidebar. Fix: - Add the 'd-lg-none' class to hide the category list in the offcanvas menu on large devices. opw-4830180 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#218330
A small typo was fixed in the portal sharing flow, with a minor code cleanup to make the logic clearer. This helps keep portal sharing messages or behavior polished without changing the overall user experience.
Original PR description
fix a small typo and and refactor for clarity opw-4938011 Forward-Port-Of: odoo/odoo#218570
This fix ensures Nilvera documents use the Turkish UBL format instead of Peppol-specific handling. This matters because Nilvera is not a Peppol format and should not rely on Peppol fields, reducing the risk of incorrect electronic invoicing data.
Original PR description
It's not a format that is on peppol and does not use the fields from peppol. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#218220
Preparation displays now show an S or K prefix on order tracking numbers to distinguish Self and Kiosk orders. This makes it easier for staff to match the same order across the POS ticket screen, preparation receipt, and kitchen preparation display.
Original PR description
Add a prefix `S` or `K` (respectively for Self and Kiosk orders) to the `tracking_number` in the preparation display, so we can follow orders with the same `tracking_number` in the POS (ticket screen), on the preparation receipt and in the preparation display. task-id: 4922308 community PR : https://github.com/odoo/odoo/pull/218543
This fixes rare cases where Hong Kong payroll payment amounts shown on payslips did not match the HSBC Autopay file. The change helps ensure employees and payroll teams see consistent payment amounts across payroll records and bank payment files.
Original PR description
Explanation: In some rare cases, the autopay amount in payslip and the amount in hsbc autopay file doesn't match. This is due to hsbc autopay files are trimming all the decimal places, and the amount in payslip are rounded.
This update adds missing labels to Helpdesk automated tests so they are correctly recognized by the test system. It helps keep internal quality checks reliable and prevents test runs from being misclassified.
Original PR description
With the new test-tags features that allows to add additional test tags at runtime, the tests that starts a tour or that are using a query_count and that are not detected as such must be tagged respectively `is_tour` or `is_query_count`. Forward-Port-Of: odoo/enterprise#89934