Monday, August 18, 2025
13 changes · 18.0
Enhancements to existing features
This update improves internal documentation for tax helper logic, making it clearer which parts are available in the web point-of-sale experience and which are only available on the server side. It helps developers avoid confusion when maintaining tax-related behavior, with no expected change for end users.
Original PR description
Since some of them are copy pasted javascript side, adding such docstring is helping to distinguish what is available directly js-side from point_of_sale from what is only accessible python-side. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
The web module now makes its existing download filename parser available for reuse by other parts of Odoo. This helps keep file downloads consistent and reduces the chance of filename handling issues in custom download flows, without changing current behavior.
Original PR description
Allow other modules to reuse the existing RFC 6266/5987-compliant parser for the Content-Disposition header. This avoids duplicated parsing logic and prevents subtle bugs when extracting filenames (quoted, escaped, or RFC 5987-encoded) across custom XHR/Blob download flows. This change only exports an already used function in the web download stack. No behavior change, no performance impact, and fully backward compatible. It centralizes fixes and makes testing easier while keeping modules consistent. 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#222273
This update adds logging to help support teams identify Belgian POS blackbox devices that are incorrectly detected as weighing scales through the IoT Box. It should make troubleshooting faster without changing day-to-day user workflows.
Original PR description
This PR adds a logger to better identify blackboxes mistakenly being recognized as scales with the iot box
Resolved issues and error corrections
Grouped supplier bill payments now keep a memo made from all individual payment memos. This ensures suppliers receive the expected payment communication details and avoids confusion caused by internal workflow changes.
Original PR description
The payment memo of grouped bills should always consist of the concatenation of individual payments memos. This commit is a partial revert of the changes done in this PR https://github.com/odoo/odoo/pull/162762 The original task was intended to improve internal workflows and should not have impacted payment communications to suppliers. task-4936572 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This fixes an issue where some badge images could appear much larger after entering edit mode on course pages. Image dimensions are now preserved correctly during content cleanup, helping editors see pages as intended.
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
This update fixes a failing automated test for the HTML editor toolbar in the community edition. It helps keep quality checks reliable by accounting for differences between community and enterprise versions, with no direct change to user-facing features.
Original PR description
Turns out the test only failed in community and none of my previous fixes could have solved it because the issue is that the sizes are not all the same between community and enterprise. I'm not sure if this is intended but that will be the subject of another task. In this PR I focus in fixing this test that fails deterministically in community. runbot-230955
This change prevents a payment registration test from failing when the demo payment module is not installed. It adds a check before using the demo payment provider, making test results more reliable in leaner installation setups.
Original PR description
Add module installation check before using "demo" as payment provider to generate payment token for payment register test case. Steps to reproduce: 1. Install single module (website_sale). 2. Run test case `TestAccountPaymentRegister.test_register_payment_doesnt_send_email`. You will get ValueError: Invalid field 'demo_simulated_state' on model 'payment.token' build_error-230731
This fixes an issue where website configuration could fail if the website name contained special characters such as a backslash. Businesses can now complete theme and palette setup reliably even with unusual characters in the website name.
Original PR description
Currently, using special characters like backslashes `(\)` in the website name would cause a regex substitution error during website configuration. **Steps to Reproduce:** - Install the `website`…
Currently, using special characters like backslashes `(\)` in the website name would cause a regex substitution error during website configuration. **Steps to Reproduce:** - Install the `website` module. - Go to Settings and change the website name (e.g; "`test\`"). - Navigate to the URL: "http://localhost:8069/website/configurator" - Select a theme and a color palette for the website, then apply the changes. Error: `error - bad escape (end of pattern) at position 19` **Cause:** At [1], a backslash in the `website.name` string leads to a malformed replacement string in `re.sub()`, causing a regex syntax error due to an invalid escape sequence. [1]: https://github.com/odoo/odoo/blob/b8edcd131b3288d037bee9ee03726153932d82f1/addons/website/models/website.py#L678 **Fix:** This PR escapes the `website.name` using `re.escape()` before using it in regex substitution, prevents runtime errors during website configuration. sentry-6651288996,6557563272 Forward-Port-Of: odoo/odoo#213083
When validating a batch payment, Odoo no longer logs a misleading message saying a payment was removed when it actually remains in the batch. This keeps the activity history accurate for users reviewing payment processing.
Original PR description
When validating a batch that includes payments in process (e.g., without journal entries), Odoo incorrectly logs that the payment was removed from the batch, even though it remains. This commit fixes the chatter message by not possessing the write method of the account_payment if batch_payment_id not in vals. task-5011672
Fixed an issue in Studio's report editor where adding a column to a customized table could introduce unwanted spacing. New table cells now use a simpler layout container, helping reports stay properly aligned.
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
This fixes a Swiss payroll contract issue where monthly wage type entries could not be duplicated when needed. Businesses can now maintain contract wage details more accurately for Swiss ELM payroll reporting without being blocked by the system.
Original PR description
task-5008742 Forward-Port-Of: odoo/enterprise#92089
The salary configurator now keeps dependent options unavailable when required related fields are empty or disabled. This helps prevent employees or HR users from selecting incomplete or invalid salary benefit combinations.
Original PR description
When opening the salary configurator, fields that depend on mandatory fields that are disabled/empty should also be disabled/empty. This is fixed by removing unnecessary code and a variable overridden 'mandatoryBenefitSelected'. Task: 4926209 Forward-Port-Of: odoo/enterprise#90539
Fixed an issue where previewing different linked YouTube documents could always show the most recently added video instead of the selected one. Users can now reliably preview the correct linked document, reducing confusion when managing multiple shared links in Documents.
Original PR description
**Steps to reproduce:** 1. Go to Documents > Click ⬇ beside Upload > Add a Link 2. Add two different YouTube video URLs with above steps 3. Preview the first link, then the second **Issue:** Previewing individual YouTube links always displays the preview of the *last* added video, regardless of which one was clicked. **Cause:** When a document has no `attachment_id`, the preview fallback logic defaults incorrectly, causing all documents to share the same preview source. **Solution:** Updated `getRecordAttachment` to prioritize `attachment_id` but gracefully fallback to `rec.resId` and `rec.data.name` when missing. This ensures document preview works even when the record has no linked attachment. opw-4906808 Forward-Port-Of: odoo/enterprise#90388