Tuesday, January 20, 2026
41 changes · saas-19.1
Resolved issues and error corrections
This update fixes an issue where newly created appraisal templates weren't appearing in the campaign selection list. The problem stemmed from a technical detail regarding how the system filtered templates based on company settings. The fix ensures that all templates, including newly created ones, are correctly displayed, streamlining the campaign setup process.
Original PR description
**Version:** - 19.-0 **Steps to reproduce:** - Install the Appraisal module. - Click the Launch Campaign button. - Open the wizard and create a new appraisal template. **Issue:** - Newly created appraisal templates do not appear in the selection list. **cause:** - When a new template is created, the company field is automatically set by default. - However, the domain used to fetch templates does not include the company condition, causing the newly created template to be excluded from the results. **Solution:** - remove domain and use check_company=True to get the company. Task-5416593 Forward-Port-Of: odoo/enterprise#102108
This update removes an unnecessary warning related to credit notes from the GSTR report, streamlining the reporting process. Previously, a warning appeared on invoices when a credit note was linked, which has now been corrected to clear only when the credit note is fully processed and checked. This simplifies reporting for users.
Original PR description
This **PR** removes the credit note warning from the GSTR report, as it is not required at the report level. Additionally, when this warning is present on an invoice and the credit note is confirmed, the credit note is set to not checked. The warning will only be cleared once the credit note is posted and checked task-5469000 Forward-Port-Of: odoo/enterprise#104701 Forward-Port-Of: odoo/enterprise#102106
This update resolves a technical error in the WPS report test process. Specifically, the test was incorrectly creating a bank account record. This change ensures the test accurately reflects the report generation process, improving the reliability of the test results.
Original PR description
The test was creating a res.partner.bank with the id of company passed as partner_id. This commit fixes this issue by passing the partner_id of the company instead. build_error-237562
This update prevents Attendance: Officer/Admin users from accessing the employee onboarding feature within the Attendances app. Previously, users lacked the necessary permissions, leading to a traceback error. This change ensures that only users with full Employee rights can access this functionality, improving data security and usability.
Original PR description
# Issue Getting a traceback when trying to access the onboarding menu with just Attendance: Officer access right. # Steps to reproduce 1. Log in with a demo user, with just Attendance: Officer access right. 2. Navigate to Attendances app, and yes, you don't see Configuration, but still you can access the Onboarding menu by typing some random text on search. 3. Now, navigate to the Onboarding menu, and try setting a badge of an employee 4. You get a traceback. # Fix Attendance: Officer/Admin without Employee rights (either Officer/Admin) will not be able to access the Attendances Onboarding menu. Only the user with both the rights can access it. task-5267189 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#235965
This update fixes a technical issue that caused errors when Odoo servers were shut down. Specifically, the server stop process was incorrectly closing database connections before the system was ready, leading to errors. This change ensures a smoother and more reliable server shutdown process.
Original PR description
When the server stops, pool errors can occur. It's due to the server stop function calling `sql_db.py@close_all()`. If this occurs before the dispatcher loop wakes up, the `__exit__` function of the cursor context manager will raise an error, because the connection has already been popped from the pool. As for interface errors in [1], pool errors should be ignored during server shutodwn. runbot-229800 [1]: https://github.com/odoo/odoo/pull/99849 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#244481
This update prevents unnecessary WebRTC testing when working with stable IoT Boxes. This change avoids a potential performance issue and ensures the 'Test' button functions correctly for the intended use case. It improves the overall user experience for IoT Box management.
Original PR description
We now avoid testing WebRTC when pressing "Test" button on the IoT Box record, when the IoT Box is a stable IoT Box (which does not support it). Task: 5490291 Forward-Port-Of: odoo/enterprise#104716
This update fixes a minor usability issue in the contact record view. The GLN field was awkwardly positioned and lacked a label, making it difficult for users to find. The change repositions the field before the notes field for better clarity and discoverability.
Original PR description
The field is placed weirdly in the view when opening the contact view of the delivery address. There is no label, making it almost impossible to discover, and it is in the middle of everything. Let's put it down before the notes field. Before: <img width="971" height="510" alt="image" src="https://github.com/user-attachments/assets/2e0e7d96-1a7f-4fe5-b17d-4c5b25a3e7bf" /> After: <img width="824" height="554" alt="image" src="https://github.com/user-attachments/assets/3bc47f20-72a9-4247-8dd3-9e939046c6d7" /> task-none Forward-Port-Of: odoo/odoo#244554
This update resolves an issue where the SAFT export process would fail for Austrian companies without defined contacts. The fix eliminates a redundant check, ensuring the system correctly validates that each company has at least one contact before generating the SAFT file. This prevents export errors and ensures accurate reporting.
Original PR description
[FIX] l10n_at_saft: saft export traceback When no contacts is defined on the company and the user tries to download the SAFT to XML, a traceback is shown Steps to reproduce the traceback: - Install l10n_at_saft module and create an Austrian company with no contacts - Create a few invoices for this company - Open the General Ledger report and export SAFT to XML, the traceback should appear no-task Forward-Port-Of: odoo/enterprise#104633 Forward-Port-Of: odoo/enterprise#104144
This update corrects a minor issue related to testing within the live chat feature. Previously, outdated tests were causing problems. The PR removes these unnecessary tests, ensuring the canned response functionality works as intended and avoids potential conflicts.
Original PR description
In [1], auto focus was removed for canned responses in the navigable list. The intent was to avoid conflicts with emojis. In [2], the shortcut for canned response was changed to `::` and the auto focus behavior was restored. However, tests added in [1] were not removed. Since they were fragile (negative assertion), they are passing most of the time. This PR removes the tests that are now outdated. runbot-233358 [1]: https://github.com/odoo/odoo/pull/170900 [2]: https://github.com/odoo/odoo/pull/192953 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#244472
This update resolves a technical issue that was preventing a test from running correctly for embedded actions. The fix ensures that the test accurately reflects how the action's dropdown menu opens, improving the reliability of our testing process. This change ensures our embedded actions function as expected.
Original PR description
In this commit, we fix an embedded action test that failed because when clicking on the sliders to show the top bar, the dropdown was directly opened as there is only one visible action (since this commit: https://github.com/odoo/odoo/pull/208005/commits/a5709e870e033b83d50a2f581c81cceb2a98d91b). We then adapt the test to wait for the dropdown to open automatically, and then when it's the case, create the new custom embedded action. runbot error~237752 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#244508
This update clarifies the reasons why Stripe might reject authorization requests for expense payments. It now includes a specific 'authorization_controls' reason, translating it into a user-friendly explanation for better tracking and resolution of payment issues. This improves transparency and helps streamline the expense reimbursement process.
Original PR description
When Stripe refuses an authorization due to the maximum allowed being reached, there is a specific technical reason "authorization_controls" that wasn't mentioned in their documentation. This adds the reason with a user-friendly translation See [doc](https://docs.stripe.com/api/issuing/authorizations/object?api-version=2025-01-27.acacia#issuing_authorization_object-request_history-reason) Forward-Port-Of: odoo/enterprise#104744
This update resolves a minor issue where the email invite tour occasionally interfered with the automatic opening of the channel member list. The fix ensures the tour waits for the member list to open, preventing a brief conflict. This improves the overall user experience for inviting partners to channels.
Original PR description
The `test_01_invite_by_email_flow` test ensures we can invite partners to a channel using their email. The tour opens the invitation panel, then sends an email. However, it conflicts with the auto-open of the member list. Sometimes, the member list opens after clicking on the invite panel button. This only occurs because the tour runs very fast. It's very unlikely that this occurs to a real user. This commit fixes the tour in order to wait for the member list to open initially. runbot-237994 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#244527
A bug was causing errors in the self-order kiosk (specifically on IoT devices) due to a missing user ID. This update sets a default value of '0' to ensure the kiosk can function correctly, particularly when used with a Six terminal. This resolves a technical issue impacting the kiosk's functionality.
Original PR description
In self order, user id is undefined, so we get a traceback on the IoT Box for missing `userId` key. We default to `0` to allow using a Six terminal with the kiosk.
This update fixes a technical issue preventing a key test from running successfully on the Odoo system. The change adds group permission controls to the payroll module, ensuring proper access and functionality for users. This resolves a potential restriction impacting payroll processing.
Original PR description
The test_employee_fields_groups unit test from hr/tests/test_self_user_access.py was not successful on the runbot due to access restriction. I added the groups parameters to the l10n_sa_gosi_api_is_available field definition in the hr_employee extension from the l10n_sa_hr_payroll_gosi module. Runbot error: 233954
This update fixes default printer settings for Point of Sale, ensuring users are presented with the most appropriate printer type (receipt or preparation) when creating new printers. It also adds a required field for product categories when creating preparation printers, reducing potential errors and improving data accuracy.
Original PR description
The goal of this pr was to set the printer type by default as `receipt` when a quick create was done from the "Receipt Printers" category and as `preparation` when it's done in the "Preparation Printers" category, both in `pos.config` and in `res.config`. Also, in the `pos.printer` form view, for a preparation printer, products categories are now required when creating a printer to avoid user oversights. And, a quick fix to make the default receipt printer as required, under the "Receipt Printers" category in the `res.config` --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This update corrects a bug where free product reward lines incorrectly displayed a non-zero price in the shopping cart. The issue stemmed from an override in the `sale_subscription` module that was causing unnecessary discount calculations. The fix filters reward lines to prevent this recalculation, ensuring accurate pricing for free products.
Original PR description
### Issue: Due to this issue, the free product reward line might have a non-zero price. #### To reproduce: 1- Install `website_sale_loyalty` and `sale_subscription`. 2- Enable `Discounts` on…
### Issue: Due to this issue, the free product reward line might have a non-zero price. #### To reproduce: 1- Install `website_sale_loyalty` and `sale_subscription`. 2- Enable `Discounts` on configuration. 3- Create a `promotion`: - rule: minimum quantity: 0, minimum purchase: 10 - reward: free product, quantity: 1 4- Set a non-zero price on reward product from product page. 5- Create a product with price of 6 and publish it on the website. 6- On website, add 1 unit of created product to cart. 7- Open cart, and increase the quantity. 8- As you see the free product is added to cart but the price is non-zero. ### Cause: Based on #89397, the reward line have the discount of 100. In the `_compute_discount` this discount is set to 0: https://github.com/odoo/odoo/blob/e48a7f1b03f23a4c96e35ee4350029439ec73e47/addons/sale/models/sale_order_line.py#L797 As `compute_discount` only depends on `product_id`, `product_uom_id`, `product_uom_qty` this shouldn't cause issue. However, in `sale_subscription` its override includes `sale_order.plan_id` as dependency: https://github.com/odoo/enterprise/blob/d0375627c6f8de6098dfe93a80f522f31e3a4174/sale_subscription/models/sale_order_line.py#L86-L90 Which setting `plan_id` to `False` here makes discount to be recomputed: https://github.com/odoo/enterprise/blob/d0375627c6f8de6098dfe93a80f522f31e3a4174/website_sale_subscription/models/sale_order.py#L27-L30 ### Fix: This can be avoided by filtering reward lines in a `_compute_discount` override. As none of reward lines regardless of reward type are expected to have a discount calculated this fix will not break any other flows. It's noteworthy to mention that in the test, `_compute_discount` is directly called in order to mimic the flow without the need to install `sale_subscription`, as the `sale_subscription` is not root cause of the issue and the same issue could reproduced by any other modules overriding `_compute_discount`. opw-5485796 Forward-Port-Of: odoo/odoo#243827
This update resolves an issue where the Amazon connector wasn't correctly identifying key delivery modules for UPS, FedEx, USPS, and DHL. By mapping these modules, the connector now functions seamlessly with these major shipping carriers, ensuring accurate order processing and fulfillment.
Original PR description
Amazon connector did not recognize the _rest delivery modules (ups_rest, fedex_rest, usps_rest, dhl_rest). This maps them to the correct carrier names, consistent with existing mappings. Forward-Port-Of: odoo/enterprise#102606
This update optimizes how the attendance tracking module requests location data. By default, location tracking is disabled when in an office or event setting, reducing unnecessary requests to external services. This improves performance and efficiency.
Original PR description
Use the _get_localisation helper that uses geoip when available Disable geolocalisation of device by default (i.e. in the context of an office/event, all requests are in the same spot) In addition to #243073 Forward-Port-Of: odoo/odoo#243117
This update resolves an issue where embedded buttons in the control panel were getting cropped due to incorrect height calculations during dragging. The fix ensures that the buttons display their actual size, preventing visual distortion and improving the user experience. This change improves the appearance and usability of the control panel.
Original PR description
The `o_embedded_actions` buttons are getting cropped when they are long enough. This is due to the `overflow-hidden` property which is now applied when no element are actively dragged. When an element is dragged after a css transformation, eg. the `o_dragged_embedded_action`, `getBoundingClientRect()` is returning the element height with the transformation. This creates an excess height on the `o_embedded_actions` due to the placeholder button having it's transformed height instead of the button height. Using offsetHeight returns the element size without the transform. Note this is not done on the width, because the width without the transform can lead to text-truncation. task-5225696 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#234120
This update resolves a compatibility issue with an older version of Odoo's spreadsheet functionality. Specifically, it ensures that the ODOO.FILTER.VALUE feature continues to work correctly across different Odoo releases. This prevents disruptions for users relying on this spreadsheet tool.
Original PR description
Task-5477426 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#244218
This update fixes an issue where the Odoo Studio export process incorrectly excluded certain fields. The fix separates the handling of computed and related fields, ensuring more accurate exclusion based on their type and writeability. This improves the reliability of exported models, confirmed by the Industry team.
Original PR description
This commit fixes the computation of excluded fields for the studio export models. Before this commit, the excluded fields computation was considering computed and related fields in a similar way but…
This commit fixes the computation of excluded fields for the studio export models. Before this commit, the excluded fields computation was considering computed and related fields in a similar way but there are subtle differences that cause the excluded fields to sometimes be wrong. While analyzing the heuristic with the ORM team, we decided to separate the computation of related and computed fields. After this commit, we have a refined computation of excluded fields for related and computed fields: - for computed fields (that are not related ones), we always exclude them except when they are writeable (i.e. stored or with inverse) - for related fields, we always exclude them when the relation is in the list of related models to exclude. We also exclude them when they are not writeable on the current record only (not the source record), except if they are required. Some export scenarios have been tested manually and brought with them adaptations in the hardcoded lists of default fields to exclude. The Industry team agreed with these changes. Task id: opw-4974787 Forward-Port-Of: odoo/enterprise#87530
This update resolves an issue where URLs were appearing twice in WhatsApp messages due to a formatting error in how the Odoo UI's HTML was converted to plain text. The fix prevents this duplication, ensuring users receive messages with URLs correctly formatted and avoiding potential confusion. This improves the clarity and usability of WhatsApp communication within Odoo.
Original PR description
Steps to reproduce: 1. Set up whatsapp integration. 2. Send a direct message containing a URL. 3. Observe that the URL appears twice in the message received in whatsapp. Issue: This issue arises…
Steps to reproduce: 1. Set up whatsapp integration. 2. Send a direct message containing a URL. 3. Observe that the URL appears twice in the message received in whatsapp. Issue: This issue arises within the `_send_message` method, where we are taking the Markup body that we use within the Odoo UI to have a clickable URL, like `<a href="https://example.com">https://example.com</a>`. Then, the html2plaintext function duplicates by adding the footnote for the anchor tag, which "duplicates" the URL since the text within the anchor tag is the same as the URL itself. This results in a message body that contains the URL twice, leading to confusion for the user. Solution: This commit addresses the issue by backporting the solution to this problem introduced in odoo/odoo@a152910 and using the `include_references` parameter of the `html2plaintext` function to exclude footnotes from the conversion. opw-4936400 Forward-Port-Of: odoo/enterprise#104252 Forward-Port-Of: odoo/enterprise#101083
This update fixes an issue where the preferred delivery carrier wasn't automatically applied when adding shipping to a sale order. The change ensures that the carrier specified for a customer partner is now correctly used, streamlining the shipping process and improving order accuracy. This resolves a previous bug impacting order fulfillment.
Original PR description
Steps to reproduce: - Create a storable product “P1” - Go to partner *Azure Interior*: - Set 'property_delivery_carrier_id' to any carrier - Create a sale order: - Customer: Azure Interior - Add 1 unit of P1 - Click on "Add shipping" Problem: Since this commit: https://github.com/odoo/odoo/pull/203955/files#diff-9f1fd37c63903c4c029f099d485a3f9831446850be55695a4603c05ef298885bL134-L137 the carrier defined on the partner is no longer loaded by default. Solution: Check if the carrier defined on the partner is among the allowed carriers, and if so, set it automatically. opw-5220118 Forward-Port-Of: odoo/odoo#235336
This update resolves an intermittent issue where live chat sessions would unexpectedly crash. The fix addresses a timing conflict between chat closing and agent member deletion, ensuring a reliable session end. This improves the overall stability and user experience of the live chat feature.
Original PR description
This commit fixes the `visitor leaving ends the livechat conversation` test that was sometimes failing. There is a race between the simulation of the guest leaving the chat that uses `withGuest` which is known to be problematic and the `action_unfollow` method, called when the chat window is closed. The unfollow method deletes the agent member, but since the guest cookie is still present, the `channels_as_member` rpc retrieves the guest member. The rest of the code doesn't expect this mismatch and a crash occurs. This commit ensures the `channels_as_member` rpc is properly done before closing the chat window. runbot-237947 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 update corrects a formatting error in the Korean localization files (ko.po) that was causing issues with the display of documents. The fix ensures proper line wrapping, resulting in accurate and consistent translations for users. This improves the overall quality and usability of the Enterprise version.
Original PR description
EOL error due to incorrect line wrap
This update corrects a bug where the website generation process wasn't correctly setting a key value. The fix ensures that the website generation feature always defaults to 'True', guaranteeing that new websites are created when the /startwebsite flow is initiated. This resolves a potential issue preventing website creation.
Original PR description
Missing the 'import_website' value, and since /startwebsite always creates a website it should always be True.
This update fixes an issue where Live Chat reports consistently displayed days starting with Sunday, regardless of the user's preferred week start day setting. Now, the reports accurately reflect the user's language-defined 'First Day of Week', providing more accurate and relevant reporting data. This ensures consistency and a better user experience.
Original PR description
**Current behavior before PR**: The "Day of Week" group by in the Live Chat report always treats Sunday as the start of the week, ignoring the "First Day of Week" configured in the user's language settings. **Desired behavior after PR is merged**: "Day of Week" group by now correctly takes into account the user's configured "First Day of Week", as set in their language settings. **task**-[4808640](https://www.odoo.com/odoo/project.task/4808640) --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#234708 Forward-Port-Of: odoo/odoo#213307
This update fixes a usability issue by moving the GCC Format checkbox to the 'Customer Invoices' section within the settings. This ensures that users can always access this important setting, even when the broader Fiscal Localization section is hidden, streamlining the invoicing process.
Original PR description
This fix moves the GCC Format checkbox under the 'Customer Invoices' block so it remains accessible in branches where the Fiscal Localization section is hidden. task-5723793 Forward-Port-Of: odoo/odoo#244652
This update fixes a bug that prevented users from correctly unbuilding manufactured products when the same serial number was used multiple times within a manufacturing order. The fix ensures that the system accurately tracks component usage, preventing validation errors and ensuring accurate inventory management. This improves the reliability of the manufacturing process.
Original PR description
Steps to reproduce the bug: - Create a storable product P1 - Tracking: Serial Number - BoM: Component: 1 unit of C1, tracked by Serial Number - Update the inventory of C1 - 1 unit with SN1 - 1 unit…
Steps to reproduce the bug:
- Create a storable product P1
- Tracking: Serial Number
- BoM: Component: 1 unit of C1, tracked by Serial Number
- Update the inventory of C1
- 1 unit with SN1
- 1 unit with SN2
- Create a Manufacturing Order to produce 2 units of P1
- Confirm and validate the MO using serials SN1-P1 and SN2-P1
- SN1 and SN2 of C1 are consumed
- Unbuild 1 unit of P1 with serial SN1-P1 Result: SN1 of C1 is correctly restored
- Unbuild 1 unit of P1 with serial SN2-P1
- Try to validate the unbuild
Problem:
A user error is raised:
"The serial number SN1 has already been assigned"
This happens because _action_unbuild attempts to reuse the same component serial number (SN1 of C1) without checking whether it has already been consumed by a previous unbuild operation on the same Manufacturing Order.
Solution:
This fix ensures that, when unbuilding tracked products, component serial numbers already used by previous unbuilds of the same MO are excluded from the candidate move lines.
This prevents reassigning the same serial number multiple times and avoids the validation error.
opw-5441256
Forward-Port-Of: odoo/odoo#242882A glitch prevented users from removing all avatars from a website feature, leading to errors when trying to add new ones. This fix ensures the system correctly handles rapid avatar removal, preventing a disruption to the user experience.
Original PR description
**Problem** Users could remove all avatars from the `s_avatars` snippet by clicking the "Remove avatar" button rapidly. This also causes an error when attempting to add a new avatar afterward.…
**Problem** Users could remove all avatars from the `s_avatars` snippet by clicking the "Remove avatar" button rapidly. This also causes an error when attempting to add a new avatar afterward. **Reproduction** 1. Drop the `s_avatars` snippet. 2. Click very quickly on the "Remove avatar" button multiple times. **Cause** The code relied on preventing the removal of the last element by disabling the "Remove avatar" button based on DOM state. Because rendering is asynchronous, rapid clicks could be registered before the button was disabled, allowing the last avatar to be removed. **Fix** Add a check in `AvatarsHeaderMiddleButtons.removeAvatar` to prevent removal when only one avatar remains, covering cases where clicks occur before the UI updates. The components `CarouselItemHeaderMiddleButtons` and `NavTabsHeaderMiddleButtons` use the same logic of `AvatarsHeaderMiddleButtons` and could fail similarly, thus they have been fixed too, even if the bug is not currently reproducible on them. task-5462816
This update fixes a technical error that occurred when sale orders lacked an invoice date. The fix ensures that stock movements related to subscriptions are correctly filtered, preventing errors and improving the reliability of subscription order processing. This resolves a potential disruption to order fulfillment.
Original PR description
The Issue: Prior to this commit, When the sale order last_invoice_date is False, a traceback is thrown The Fix: To resolve this, We get the last_invoice_date or todays date opw-4403557 Forward-Port-Of: odoo/enterprise#75717
This update fixes a potential issue in the Turkish accounting module (l10n_tr_nilvera) by correcting the default journal type used when fetching documents. Previously, the default was set incorrectly, which could lead to errors. The change now sets the default to 'purchase' to ensure proper accounting practices and prevent misuse.
Original PR description
…hing The default value of the journal type parameter was incorrectly set to a move type (`in_invoice`). Although all current callers explicitly pass the correct journal type, the default value has been corrected to `purchase` to avoid potential misuse. no task-id Forward-Port-Of: odoo/odoo#242865
This update resolves a technical issue preventing the Odoo IoT box from starting correctly. The addition of a required dependency, geoip2, was necessary for the Odoo application to function on the IoT environment. This ensures stable operation of the Odoo instance on the IoT box.
Original PR description
This PR adds geoip2 to packages required by the iot box in saas-19.2 Without geoip2 odoo doesn't start on the iot box Backport of https://github.com/odoo/odoo/pull/243751 to allow to use saas-19.1 images with dbs in master
This update ensures the Apps application accurately displays the number of industry modules categorized by type. Previously, the count was always shown as zero due to a change in the underlying data source. This change corrects the display to provide a more precise count for users.
Original PR description
Before this commit, the count of industry modules by category in Apps application was always 0. With the change of API of apps.odoo.com, there is a possibility to display the exact count by category. In this aim, this commit adds the version to the route arguments such that the count is correctly displayed. task-5222706 Forward-Port-Of: odoo/odoo#243482
This update corrects a bug that occurred when users attempted to change a tax lock date to a date in the past. The fix prevents the system from generating incorrect default values and triggering an error, ensuring accurate reporting. This improves the stability and reliability of financial reports.
Original PR description
To reproduce the issue, on a company in Luxembourg: 1) Set a tax lock date to November 30th 2) Attempt to change the tax lock date to November 15th ===> Lock date violation error. This happens because _generate_default_external_values still gets called in case the lock date is set back in the past (since _get_current_period_dates call in _create_default_report_external_values returns a tuple basically containing (former lock date + 1 day, new lock date)). Doing so, it tries generating a default external value with a value of 0 (because no data will ever be available in such an impossible date interval), but the previously set lock date prevents it, and raises the error. opw-5383010 Forward-Port-Of: odoo/enterprise#102756
This update fixes a technical issue where a new fiscal reform field was incorrectly used in the BR Point of Sale module. The change ensures the module aligns with recent legal requirements and automatically installed features. The fix prioritizes accurate reporting for Brazilian businesses.
Original PR description
`l10n_br_operation_type_pos_id` is a new field introduced in the fiscal reform [1] in saas-18.4. It's added in `l10n_br_edi_pos_fiscal_reform`, but is mistakenly used in `l10n_br_edi_pos`. Because the modules are legally required since the beginning of January and auto-installed it wasn't notice until now. This reverts the change to `l10n_br_edi_pos` and moves the logic to an override in `l10n_br_edi_pos_fiscal_reform`. Additionally, we only do it if the fiscal reform is enabled on the database with `l10n_br_is_icbs`, like we do for all other fiscal reform features. Thanks to ANDG for pointing it out. [1] odoo/enterprise#102835 Forward-Port-Of: odoo/enterprise#104671
This update reverts a recent change that added new features to the mobile dashboards. It now returns the dashboards to display only charts, simplifying the user experience. Adaptations were made to ensure existing features like the carousel and granularity selector continue to function correctly.
Original PR description
### [REV] spreadsheet_dashboard: go back to chart-only mobile dashboard This commit reverts 5cde5114d971a9edc12c9708ae0ea86bfb6db3b2, so the mobile dashboards go back to showing only the figures. Some adaptations were necessary to make the new features (carousel, granularity selector, ...) work. Task: [5447027](https://www.odoo.com/web#id=5447027&cids=1&menu_id=4720&action=333&active_id=2328&model=project.task&view_type=form) --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#242288
A recent issue prevented users from successfully obfuscating their databases using the Odoo command-line interface. This update corrects a problem where the command incorrectly processed database names, causing an error. The fix ensures the obfuscate command functions as intended, allowing users to securely protect their data.
Original PR description
It is not possible to use the obfuscate command Steps to reproduce: 1. Initialize a database `test` 2. In a terminal, try to obfuscate the database with the command `python odoo/odoo-bin obfuscate --pwd=1234 -d test` 3. An error occurs Issue: `config['db_name']` returns a list Solution: Make sure we use obfuscate with a single database and get the first (and only) database in the list opw-5480280 Forward-Port-Of: odoo/odoo#244577
This update prevents the HTML Builder editor from freezing due to rare errors. A timeout mechanism is now in place to release the editor and alert the user to potential data issues during saving. This enhances the user experience and prevents data loss.
Original PR description
Before this commit, if an error occurred within the mutex that did not explicitly throw, the mutex could remain locked indefinitely. This blocked subsequent actions and prevented the user from saving. This commit introduces a timeout mechanism for Operations. This is intended for very rare cases as a last resort to prevent the editor from becoming completely unresponsive. When a timeout occurs: - The mutex is released, allowing the user to recover (e.g. by deleting the faulty snippet). - The user is notified of the issue. - A warning is displayed during saving to indicate that the content might be in a corrupted state. Additionally, the `canTimeout: false` flag is added to options that are expected to remain open for long periods (such as the snippet modal). task-5152911 Forward-Port-Of: odoo/odoo#233079
This update resolves an issue where user avatars in the Chat UI were appearing distorted or incorrectly sized. The fix applies a standard image scaling method (object-fit: cover) to ensure avatars display correctly and consistently across all user profiles. This improves the overall user experience and visual presentation.
Original PR description
Before this commit, user avatars in the Chater UI were not displayed using the object-fit: cover style, causing distorted or improperly scaled images. Current behavior before PR: <img width="671" height="380" alt="image" src="https://github.com/user-attachments/assets/a4b7ef3a-0c69-4fec-bf2a-70c9bd89236e" /> Desired behavior after PR is merged: <img width="663" height="384" alt="image" src="https://github.com/user-attachments/assets/479586c8-a01c-45fb-9e46-9246616e1329" /> --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#243434 Forward-Port-Of: odoo/odoo#242320
This update fixes an issue where product names on invoices were being incorrectly combined, leading to unreadable output. The change replaces newlines with spaces, ensuring names and descriptions remain clear and adhere to API specifications, improving the accuracy of VAT processing for Vietnamese businesses.
Original PR description
Before: SInvoice was stripping newlines from the `itemName` field. Since we were directly using `line.name` (which contains a `\n` between product name and description), the content ended up concatenated without any separation. After: Now we replace the newline with a space before sending the value, so the name and description remain readable once processed by SInvoice and set limit to 500 characters as per API specs. task-5498120 Forward-Port-Of: odoo/odoo#243994