Tuesday, December 16, 2025
9 changes · 19.0
Enhancements to existing features
This update optimizes how Odoo imports translations, addressing a previous issue where large JSON objects caused memory problems. By focusing only on updated translations and simplifying the import query, the system now handles frequent updates more efficiently, preventing potential errors and improving overall performance.
Original PR description
Before this commit, when importing the translations with the TranslationImporter object, the save method was building one big query per model, with each JSON object containing all the languages. On our server, where 36 languages are installed, this leads to big JSON objects, especially for some large mail templates. Recently, we even got MemoryErrors because of the soft memory limit being hit. The query was about 250MB long. In the function, we already have the current values, so it's easy to compare them to the new values, and only consider these in the query. Furthermore, there is no need to add the languages that aren't being updated. With this commit, we are building a slightly more complicated query, but it will receive much less data when the translations are updated frequently, as unchanged values will be ignored. Task-id: none Forward-Port-Of: odoo/odoo#239678
Resolved issues and error corrections
This update resolves an issue where the Odoo PWA (Progressive Web App) functionality wasn't working correctly in certain customized browsers like Safari. The fix ensures a smoother PWA installation experience by addressing a version check problem, improving overall reliability and user experience for PWA users.
Original PR description
Description of the issue/feature this PR addresses: In some customized browsers, such as Wecom and DingTalk, the userAgent may not contain the Version information, resulting in an error. 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 resolves an issue impacting the calculation of sick leave payouts within the Belgian HR payroll module. The fix ensures accurate accrual and payment of sick time off covering multiple months, improving payroll accuracy and compliance. This change primarily affects employees receiving sick leave payments.
Original PR description
…months
This update fixes an issue where the barcode app on mobile devices displayed stock locations in a list view, which isn't ideal for small screens. By adding a setting to prioritize kanban views on mobile, the app now presents stock locations in a more user-friendly format, improving usability on smaller devices.
Original PR description
Issue ===== On mobile, we should prioritize kanban views over list views because kanban views are usually more suitable for small device screen. That said, when a product's barcode is scanned in the Barcode app main menu, we show this product's stock locations but we do that with a list view, no matter if the user is on a big screen or a small screen. How to reproduce ================ On mobile device: - Enable location and have a product with a barcode and with quantities in two different locations; - Open Barcode app; - Scan the product's barcode => The product's stock locations are displayed in a list view, which is not very pratical on small device. Fix === The action key `mobile_view_mode` was not set, with this key, we can define what view type we want to prioritize for mobile device. [opw-5180783](https://www.odoo.com/odoo/project/49/tasks/5180783) Forward-Port-Of: odoo/enterprise#101872 Forward-Port-Of: odoo/enterprise#101336
This update resolves a bug that caused Odoo to crash when calculating inventory values for FIFO products with a zero standard price and no prior cost history. The fix introduces a safeguard to prevent infinite recursion, ensuring accurate stock valuation and stability. This improves the reliability of inventory reporting.
Original PR description
Current behavior: The server crashes with a `RecursionError`. This happens because the valuation logic attempts to retrieve a historical cost when the current standard price is 0.0. For FIFO products without prior history, the system inspects the last move's value. Since that move also has 0 cost, it calls `_get_value_from_std_price` again, triggering an infinite loop. Fix: This commit adds a recursion guard using `self.env.context`. If the valuation method detects it is already running for the current record, it falls back to the current standard price (0.0) instead of attempting another historical lookup. Closes #239564
This update fixes an issue where the download button appeared prematurely in the eSigner wizard and addressed text size problems when users signed with Aadhaar. Now, the download button only appears after signing, and text is correctly sized for readability, ensuring a smoother user experience for e-signature workflows.
Original PR description
Version: - 19.0 Issue: - The wizard shows a download button even when using emsigner, but the file should only be downloaded after signing. - When users sign with Aadhaar and download the document, the text appears too small. Fixes: - Hide the download button in the wizard for emsigner requests. - Adjust page coordinates so the font size displays correctly. Impact: - Makes the text clear and readable in documents signed with Aadhaar. - Hides the download button until the user signs. After signing with eSigner, they can download the document with the certificate. task-5075596
This update allows users to configure recurring prices for individual product variants within subscription orders. Previously, users couldn't specify variant-specific pricing, limiting flexibility. This change ensures accurate recurring revenue tracking for products with multiple variations.
Original PR description
Version: - 19.0 Before: - When creating a product with variants and setting recurring prices, users could not select product variants in the recurring price list. Issue: - The recurring price list appeared read-only for product variants, preventing users from defining variant-specific recurring prices. Cause: - The product variant field was missing from the recurring pricing view. Fix: - Added the product variant field to the recurring prices list view, allowing users to select and manage variants while setting recurring prices. Taskid-5361266
This update resolves an issue preventing price adjustments in the POS system when using the Swedish blackbox integration. Previously, price control wasn't possible. Now, users can manage prices correctly within the Swedish blackbox, aligning with current regulations. This ensures accurate reporting and transactions for Swedish customers.
Original PR description
Before this commit, user couldn't control the price in the POS if using the swedish blackbox. After this commit, user can control the price. It's not clear why the behavior at integration was set to this but it appears that it's not mandatory for swedish blackbox unlike the belgian one. opw-5253401 Forward-Port-Of: odoo/enterprise#101797 Forward-Port-Of: odoo/enterprise#100984
This update ensures that Luxembourg companies (l10n_lu) using the general ledger and generating FAIA XML reports correctly include vendor bills under the 'PurchaseInvoices' tag, as required by a recent FAIA update. This resolves a reporting discrepancy and ensures compliance with Luxembourg tax regulations.
Original PR description
Since version 2.01 of FAIA, it is a requirement to include the `PurchaseInvoices` tag in the FAIA XML. With a `l10n_lu` company: - Create a vendor bill. - In the general ledger, download the FAIA XML report. In the generated XML document, the vendor bill will not appear under `PurchaseInvoices`. The `PurchaseInvoices` section is meant to mirror the `SalesInvoices` section and contains the exact same structure. This PR implements a generic template for both. **Specs and source** (in `FAIA_v2.01_full`): https://pfi.public.lu/dam-assets/backup/FAIA/FAIA/XSD_Files.zip opw-5360572 Forward-Port-Of: odoo/enterprise#102092 Forward-Port-Of: odoo/enterprise#100697