Tuesday, August 19, 2025
14 changes · saas-18.4
Enhancements to existing features
This update adds automated test coverage for employee-related point-of-sale workflows, including cashier display, login, payments, cash movements, and order handling. It helps reduce the risk of regressions in staff-managed POS operations without changing day-to-day functionality for users.
Original PR description
This commit introduces HOOT test coverage for the pos_hr module: - Added tests for primary model :patched pos.order - Added tests for patched pos_store.js. - Added component tests for Navbar, CashPopup, PaymentScreen, LoginScreen task-4945630 Forward-Port-Of: odoo/odoo#221492
Resolved issues and error corrections
The HTML editor now clears multiple text styles, such as font size, color, and bold, with a single click of the remove formatting button. This avoids repeated user actions and makes content cleanup more predictable.
Original PR description
**Current behaviour before PR:** Steps to reproduce: - Select a text - Apply font size - Apply color - Apply bold - Clicking on removeFormat button doesn't remove all formats User has to click on removeFormat button twice to remove the format. **Desired behaviour after PR is merged:** Now, all formats are getting removed at once when clicking on removeFormat button. task-4911199 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#222512 Forward-Port-Of: odoo/odoo#218093
Documentation and clarification updates
This update records Luca Policastro's signed Contributor License Agreement for contributions made on behalf of Camptocamp. It supports Odoo's contribution compliance process and does not change product functionality.
Original PR description
This pull request adds my Contributor License Agreement (CLA) as required by the Odoo contribution guidelines for Camptocamp company. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#222968 Forward-Port-Of: odoo/odoo#222429
Expenses created with the default placeholder name can now be renamed automatically by OCR when receipt details are read. This helps employees and accountants get clearer expense records without manual corrections.
Original PR description
Introduces the function `_get_untitled_expense_name` that will be used by the OCR to check whether the expense still has its default name, in which case it can be overwritten. task-[4684825](https://www.odoo.com/odoo/project/967/tasks/4684825) Forward-Port-Of: odoo/odoo#223037
Users can now upload an empty text file while attaching a bill to a purchase order without triggering an error. This prevents a small edge-case upload issue from interrupting the bill attachment workflow.
Original PR description
Currently, an error occurs when a user uploads an empty text file while attaching a bill in a purchase order. **Steps to reproduce**: - Install the `purchase` module. - In the purchase order(form),…
Currently, an error occurs when a user uploads an empty text file while attaching a bill in a purchase order. **Steps to reproduce**: - Install the `purchase` module. - In the purchase order(form), click **Upload Bill** button. - Upload an empty text file. (e.g; [sample here](https://drive.google.com/file/d/1z35T2NY03YVJJPaEL-WjlV8pjvqVCyBW/view?usp=sharing)) - Observe the error. **Errors:** - If the **'python-magic'** library is installed: `TypeError - 'bool' object is not subscriptable` - If not installed: `AttributeError: 'bool' object has no attribute 'startswith'` The issue occurs when the uploaded attachment is empty, `attachment.raw = False` at [1]. This is then passed to `guess_mimetype`, which expects binary data, resulting in an error. [1] - https://github.com/odoo/odoo/blob/3e24ff8d3c36b4b924077933ef78a8289a435ee3/addons/account/models/ir_attachment.py#L120 This commit ensures `guess_mimetype` always receives binary input when the file is empty. Sentry - 6654301906, 6749801114 Forward-Port-Of: odoo/odoo#212939
The eCommerce product filter panel now behaves more consistently when shoppers select an attribute. Selected filter sections remain expanded instead of unexpectedly collapsing, making product browsing smoother and less confusing.
Original PR description
Versions -------- - saas-18.3+ Steps ----- 1. Have 5 or more product attributes visible in eCommerce; 2. go to /shop; 3. select an attribute. Issue ----- The list we just selected an attribute value from collapsed. Cause ----- While some parts allow accordions to auto-expand if 4 or less attributes are visible, or if an attribute is selected, other parts only look at the number of visible attributes. Solution -------- In parts where it only checks whether more than 4 attributes are visible, also add a check on `_status` to improve consistency. opw-4986032 Forward-Port-Of: odoo/odoo#222342
This update stops an unnecessary warning from appearing in stock accounting by replacing use of an outdated internal method. It reduces noise for users and administrators without changing business workflows or stock valuation behavior.
Original PR description
Before this commit a deprecated method is used and create a useless warning. 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#222148
This fix ensures an HR employee test can run correctly even when demo data is not installed. It adjusts the test setup so automated checks are more reliable across build configurations, reducing false failures in validation pipelines.
Original PR description
Before this commit the test `test_webjson_employees` was failing in no demo builds as the json route only works in demo databases or when explicitly set. See https://github.com/odoo/odoo/pull/182196 This commit enables the system parameter, so that the test can be run as intended in no demo databases. Runbot Error: https://runbot.odoo.com/odoo/error/162907 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#205580
This fixes an issue where some images, such as course rank badges, could appear much larger when entering edit mode. Image dimensions are now preserved correctly during editing, helping pages remain visually consistent for users.
Original PR description
Problem: On the Courses page, the user rank badge image becomes much larger when entering edit mode. Cause: During HTML sanitization, `img.width` is removed and its value is moved to `img.style.width`. If `img.width` is a number (e.g., `100`), it is interpreted as `100px`. However, when assigned to `img.style.width` without a unit, the style is considered invalid, and the image defaults to its original size. The same applies to `img.height`. Solution: When transferring width or height to style, ensure a unit is added. If the original attribute is a plain number without a unit, default to `px`. Steps to reproduce: - Open Website > Courses - Observe the user rank badge is appropriately sized - Enter edit mode > The badge image becomes much larger than expected opw-4993038 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#221843
This fix prevents unwanted spacing when users add columns to customized report tables in Studio. New table cells now use a neutral container, helping reports keep consistent alignment and formatting.
Original PR description
Before this commit when adding a column into a modified qweb table (q-table node) we inserte a `p` as the cell's first child. This was problematic as a margin was always present, messing with the whole table alignment. After this commit, we put a simple DIV. task-5005441 Forward-Port-Of: odoo/enterprise#92085
Applicants hired through the salary configurator now keep their recorded skills when they become employees. This prevents loss of important HR information and helps employee profiles remain complete after hiring.
Original PR description
Originally, an applicant, who became an employee through the salary configurator flow, loses his skill info. So, the migration of applicant information, through the salary configurator flow, to employee view has been adjusted. Forward-Port-Of: odoo/enterprise#87076
This fix ensures existing Indian GST records get the correct return period when GSTR-2B data is fetched. It helps keep tax reporting periods consistent and avoids outdated period information in GST reports.
Original PR description
Following up on this commit: https://github.com/odoo/enterprise/commit/eda621c07393ad8e897503c852a9b00480affc52 The recompute was already handled while sending GSTR-1 data, but the part for fetching GSTR-2B was missed in that commit. With this PR, we ensure that the `return_period_month_year` is recomputed as well when fetching GSTR-2B for existing records. Forward-Port-Of: odoo/enterprise#92503
This fixes an error that occurred when users opened Swiss payroll wage type forms. Restoring the activity and message panel support keeps the form working as expected and preserves behavior from earlier versions.
Original PR description
To reproduce: ============= 1- Install Swiss payroll 2- go to payroll configurations 3- wage types 4- open the form view of one wage type Problem: ======== The hr_salary_rule no longer inherits mail.thread due to this PR : https://github.com/odoo/enterprise/pull/83136 So we cannot load the chatter and a traceback will happen Fix: ===== inherit mail.thread in hr_salary rule so the chatter can work properly There's another solution to do which is removing the chatter from the view But the chatter exists in the previous versions and we try to make it work in 18.4 opw-5015226
A leftover, unnecessary parameter was removed from the Belgian point-of-sale certification code. This is a small cleanup that reduces confusion for maintainers and helps keep the POS code reliable without changing user-facing behavior.
Original PR description
An unnecessary parameter has been added and mistakenly not removed. This commit removes it.