Tuesday, February 17, 2026
13 changes · saas-18.4
Resolved issues and error corrections
The inventory serial/lot number generator now restricts the quantity field to whole numbers. This prevents users from entering invalid text or decimal values that previously caused an error screen, improving reliability during receipt processing.
Original PR description
Issue before this commit: ========================= When generating serial/lot numbers, if a user enters a `string value (e.g. "dhha" or ".")` in the `Number of SN` field of the Generate Serials/Lots…
Issue before this commit: ========================= When generating serial/lot numbers, if a user enters a `string value (e.g. "dhha" or ".")` in the `Number of SN` field of the Generate Serials/Lots wizard, a traceback is raised: `InvalidNumberError: "dhha" is not a correct number`. Steps to Reproduce: ========================= - Install the "stock" module. - Create a receipt for a serial-tracked product. - Open the detailed operations. - Click on "Generate Serials/Lots". - Enter a string value in the "Number of SN" field. Result: A traceback is raised with: InvalidNumberError: `"dhha" is not a correct number.` Cause of the issue: ========================= The [next_serial_count input](https://github.com/odoo/odoo/blob/17.0/addons/stock/static/src/widgets/lots_dialog.xml#L36) field is defined as type="text", which allows users to enter string values, even though the field represents a numeric count. The value is later processed using [parseInteger](https://github.com/odoo/odoo/blob/17.0/addons/stock/static/src/widgets/generate_serial.js#L33), which throws an error when the input is not a valid integer string, [Here](https://github.com/odoo/odoo/blob/17.0/addons/web/static/src/views/fields/parsers.js#L139). With This Commit: ========================= The input type is changed from type="text" to type="number", ensuring that only numeric values can be entered. This prevents invalid input and avoids the traceback when generating serial or lot numbers. Additionally, a `t-on-keydown` handler is added to prevent entering a `dot (.)`, ensuring that only integer values are allowed. Forward-Port-Of: odoo/odoo#248729 Forward-Port-Of: odoo/odoo#248221
This fixes an internal naming mismatch that could prevent the website editor from correctly blocking invalid content drop areas. No known customer issue was reported, but the change reduces the risk of unexpected editing behavior in future website building flows.
Original PR description
*: website In [html_builder refactoring], `excludeNearParent` was passed to `getSelectorSiblings`, but `excludeParent` was expected, and so, because of this, we couldn't exclude the parents where it wasn't possible to have a dropzone. Luckily, it wasn't used extensively, so no known issues were found, but this might have caused unexpected issues in the future, so that's why it was renamed to `excludeParent` in order to work correctly. Button option tests were adapted as they had buttons directly inside of the .oe_structure, which shouldn't be allowed, so we had to wrap them in paragraph or div elements. [html_builder refactoring]: https://github.com/odoo/odoo/commit/9fe45e2b7ddb task-5932797
This fix reduces recurring automated test timeouts affecting the Kenyan POS localization when a product is added and the page refreshes immediately. It also improves timeout messages so future failures are easier to diagnose, helping keep releases stable.
Original PR description
There is an issue that seems to only happen on l10n_ke runbot that times out on tests that try to add a product to the cart in pos and then refresh the page. The l10n_ke_edi_oscu_pos module has a…
There is an issue that seems to only happen on l10n_ke runbot that times out on tests that try to add a product to the cart in pos and then refresh the page. The l10n_ke_edi_oscu_pos module has a listener added on the order component which tries to automatically add the taxes to the products in the order. This triggers a transaction on indexed db. Since the tour test executes the refresh immediately after adding the product to the cart, it causes a timeout. I could not reproduce the issue locally, but it's been happening consistently on almost every nightly run, always on the l10n_ke run. This PR will increase the timeout and add some extra info to the timeout message to help with debugging in the future. Runbot error: [233525](https://runbot.odoo.com/odoo/runbot.build.error/233525) Task: [5897379](https://www.odoo.com/odoo/project/1737/tasks/5897379) --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#248257
The Product Catalog now displays product names, internal references, and prices in the correct order and alignment when using Arabic. This improves readability for right-to-left language users in Sales and Purchase order workflows without changing functionality.
Original PR description
Steps to reproduce: 1. Switch the user language to Arabic. 2. Open the Product Catalog from a Sales/Purchase order. 3. Observe that the Name, Internal Reference, and Price collapse into a single line with inconsistent ordering due to unmanaged horizontal inline flow. Cause: The use of generic span elements inside a portal encourages horizontal inline flow that fails to mirror correctly in RTL without explicit flex instructions. Solution: Update the Order Line portal template to use 'd-inline-flex' and 'align-items-baseline'. This treats the price and reference as a logical unit that respects the global direction and ensures consistent text alignment in both English and Arabic. opw-5867434 Forward-Port-Of: odoo/odoo#248620
Fixes an issue in the website editor where duplicated badges could merge together after saving, causing them to overlap or display incorrectly. This helps content editors keep badge layouts consistent and avoids visual glitches on published pages.
Original PR description
Steps to reproduce: - Go to Website > Edit a page - Add a badge using editor - Duplicate that badge more than once - Save -> badges intersect each other Cause: ====== When saving, `cleanForSave` will be triggered which then will call `mergeAdjacentInlines`, since badges are inline elements, they will be merged into one single badge causing that issue. Solution: ========= We add a predicate to `unsplittable_node_predicates` to prevent `mergeAdjacentInlines` from merging badges. opw-5790891 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This fix prevents special template-controlled content from being mistakenly grouped for translation. It helps avoid incorrect or broken translations in areas where visibility or rendering rules apply.
Original PR description
Nodes with directives must not be included inside a translatable span. But the function `translatable` missed the directive `groups` (without `t-`), and the class `o_translate_inline` should only override the predicate about the element's tag. Forward-Port-Of: odoo/odoo#248591 Forward-Port-Of: odoo/odoo#246354
This fix makes an automated website editor tour wait until the page loading screen has fully disappeared before continuing. It reduces false test failures and helps keep website editing checks stable without changing user-facing functionality.
Original PR description
When the iframe reloading starts, the builder can still have the class `editor_enable`, which breaks the flow of the tour, as the next step is waiting for that class, so we should wait for the loading screen to disappear first, and only then check for the `editor_enable` class. runbot-234504
This update resolves a technical error that prevented users from removing a date filter within the booking management interface. The fix ensures the booking kanban view functions correctly, improving the user experience for scheduling appointments. This change focuses on a minor, internal technical issue.
Original PR description
Steps: - Install pos_appointment. - Open a POS session with bookings configured. - Open the Booking tab and click Remove date filter in the header. Issue: - A traceback occurs with `Invalid handler`. Cause: - The Remove date filter button’s onclick handler was not defined. Fix: - Define a valid onclick handler for the Remove date filter button. Task-5902656 Forward-Port-Of: odoo/enterprise#106684
This update resolves an issue where the journal filter wasn't correctly applied when viewing journal items within the general ledger report. Now, when you select a journal in the report, the 'Journal Items' view accurately displays both the related invoices and the corresponding journal entry. This ensures accurate reporting and analysis of financial data.
Original PR description
When opening the general ledger, if a journal was selected in the filter of the report, when clicking on "Journal Items" it would open the list view of account.move.lines without the journal in the filter. Also, the support for multiples journals is added but will require a -u of account to refresh the view. To reproduce: - Create an invoice on an Account such as Product Sales - Create a journal entry on the same account - Open the general ledger - Select "Customer Invoices" and click on "Journal Items" on the Account you choose. You can see both the move lines from the invoice and the journal entry. Forward-Port-Of: odoo/enterprise#106836
This update corrects a problem where payment reference data from a financial system (Codabox) was incorrectly formatted, often with extra spaces. The change automatically removes these spaces before creating reco models, ensuring data accuracy and preventing potential errors in financial reporting. This improves the reliability of bank statement imports.
Original PR description
Before this commit, when we do the creation of the automatic reco models, it was possible that the payment ref ended with a lot of empty spaces. To avoid that, we now strip the payment ref before the creation of the reco model. Data coming from codabox where wrongly formatted since the payment ref could have space at the end or the start and even in the middle. By using a split join we solve that issue. task-5926548 Forward-Port-Of: odoo/enterprise#107421
This update ensures that all VAT reports (inf-a and inf-b) accurately include business partners without VAT numbers, addressing a previous reporting issue. The report warnings have also been standardized to better align with the main query, providing clearer guidance on potential VAT discrepancies.
Original PR description
Both inf-a and inf-b reports should include partners with no vat number. Also updated partner warning on reports to harmonize with main query itself. Now warning is shown if: - no country and no VAT - no country and VAT not starting with EE - no country and VAT is "/" Forward-Port-Of: odoo/enterprise#106954
This update clarifies the visibility of specific fields within the Belgian payroll and fleet modules. Previously, generic fields were consolidated across all countries, but this change restores the original design, hiding BE-specific fields while maintaining their functionality within the Belgian version. This ensures accurate reporting and compliance for our Belgian clients.
Original PR description
This branch only hides BE-specific fields in l10n_be_hr_payroll_fleet (they remain defined/used there and are invisible for non‑BE companies). On master (19.3) those generic fields (can_be_requested, default_car_value) were refactored into hr_payroll_fleet so payroll+fleet consumers across all countries can use them; BE fiscal logic stays in l10n_be_hr_payroll_fleet task-5906656 Forward-Port-Of: odoo/enterprise#106456
This update ensures that printed payslips display rates with a maximum of 4 decimal places. This improves the visual clarity and consistency of payslip reports, aligning with reporting standards. The change was implemented as a fix to a formatting issue.
Original PR description
This commit improves the payslip display by limiting all rates to 4 decimals max on the printed pdf payslip. Task: 5709739 Forward-Port-Of: odoo/enterprise#104915