Monday, August 11, 2025
44 changes
15 changes
Resolved issues and error corrections
This change reverts a previous adjustment to editor avatars because it caused an unexpected horizontal scroll area in forms. Reverting it restores the expected form layout while the team prepares a better solution for the original avatar overlap issue.
Original PR description
This reverts commit 72acbe0 because of unexpected horizontal inner scroll on `o_form_sheet_bg` element. A better fix will be found in the futur. Forward-Port-Of: odoo/odoo#222162
This update removes an internal dependency in the HTML builder's drag-and-drop behavior so it can work cleanly with upcoming email marketing changes. It preserves the existing protection against unintended edits being marked for saving while making the editor easier to reuse across modules.
Original PR description
In commit [1], in order to prevent the drag and drop from marking unwanted elements as dirty, a dependency to the `savePlugin` was added to use its `ignoreDirty` shared function. However, this dependency is problematic for the upcoming `mass_mailing` refactoring, as it will not use this plugin. This commit uses the `on_prepare_drag_handlers` resource instead, to remove that dependency. [1]: 6fdf188fdf5cfdc11e5e1a8429d0a652054344de task-4367641 Co-authored-by: Damien Abeloos <abd@odoo.com>
Changing a website color palette no longer shows a warning about losing custom colors when no custom colors were set. This prevents confusion for website editors and keeps the theme selection flow smoother.
Original PR description
Since `html_builder`, when changing the color palette, the warning about losing color customizations is displayed even when there were no such customization to lose. This commit restores the condition around this warning. Steps to reproduce: - Go to "Theme" tab - Pick a color palette => A confirmation warning was displayed even though no color customization could be lost. task-4367641
This fix prevents an error when users click the 'From WH' button on a project task in the community version. The unavailable map view is removed there, so the button behaves correctly while leaving room for enterprise-specific map support.
Original PR description
* STEP TO REPRODUCE: go to task of a project, enable 'From WH' in top bar button. Click on it -> error because no map view * SOLUTION: in community version we should remove map view then in enterprise we can overide to add it 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#222003
Fixed an issue where clicking too quickly on a newly dropped building block could fail to select the intended field. This makes the website/page editing experience more reliable immediately after adding dynamic content.
Original PR description
[1] introduced a click redispatching in case a newly dropped element is being clicked upon too early. It just forwarded the click under the loading glasspane, but this is not ok in case elements of the block get redrawn before the click happens, as they will not be inside the DOM anymore. This commit fixes this by clicking on the topmost remaining element of the initially clicked elements. Steps to reproduce: - Drop a "Form Info" block - Very quickly click on a field => The field was not selected. [1]: https://github.com/odoo/odoo/commit/0884b2c716366c872a977f84f8bbdb33ce13468d task-4367641
Product images shown on shared purchase portal pages are now constrained to an appropriate small size instead of appearing at their original dimensions. This keeps purchase documents easier to read and prevents large product photos from disrupting the portal layout.
Original PR description
Issue ----- Images on the purchase portal are displayed in their original size instead, making it a visual mess. Steps to reproduce ----- - Create a product with a large image - Create a purchase for…
Issue ----- Images on the purchase portal are displayed in their original size instead, making it a visual mess. Steps to reproduce ----- - Create a product with a large image - Create a purchase for the product - Click the cog wheel > Share - Open the link in a new tab (with no active session, eg private window) --> The image is way too big Cause ----- Images are now converted to Webp: https://github.com/odoo/odoo/commit/1a978183001e0503104285f4bd5bed983beb0efb The problem is that Webp images cannot be resized through the Python backend: https://github.com/odoo/odoo/blob/0c6622294b7117ec5eb1cbf8a9270636b2dd807f/odoo/tools/image.py#L81-L83 However, the product model has multiple sizes for the image: https://github.com/odoo/odoo/blob/3ddf2bcdf16b5b43db4c4abe2cdbc4384cf683cc/addons/product/models/product_product.py#L91-L94 What we can do is load the smallest possible image and then use styling to limit the display size. The 48px comes from the hardcoded values in https://github.com/odoo/odoo/blob/0c6622294b7117ec5eb1cbf8a9270636b2dd807f/addons/purchase/controllers/portal.py#L99 This fix will no longer be needed when (if) Webp images get resized in backend. Comparison ----- Left is before, right is after fix.  Image used -----  ----- Ticket: opw-4625113 Forward-Port-Of: odoo/odoo#221139 Forward-Port-Of: odoo/odoo#217990
The website editor sidebar now shows the layout option before the background option. This makes an important design setting easier to find and restores the previous ordering.
Original PR description
The layout option was placed after the background option in the sidebar while it was the other way before. Since layout is more important, it should be placed at the start of the block. This commit moves the layout option before the background option. task-4367641
This update changes how the website editor handles drag-and-drop actions so it no longer depends on a specific saving component. This supports future email marketing editor work where content may be saved through a different flow, reducing integration risk without changing the visible editing experience.
Original PR description
[Commit] introduced a way to prevent mutations from being saved when a change was caused by a `dragAndDrop` operation. However it did so by adding a dependency to `savePlugin`, which is not desirable for the upcoming `mass_mailing` refactoring, which will use the `html_builder` in coordination with a Form View, which has its independent way of saving user content. This commit introduces a resource in order to remove that dependency. [Commit]: https://github.com/odoo/odoo/commit/6fdf188fdf5cfdc11e5e1a8429d0a652054344de task-4367641
Cancelling a product import before uploading a file no longer causes Odoo to crash. The import flow now avoids opening the product list with invalid filter data, improving reliability for users who back out of imports.
Original PR description
Steps to reproduce: - Go to Inventory > Products - Click "Import" - Cancel the import wizard before uploading any file - Odoo crashes with `InvalidDomainError` due to domain [['id', 'in', undefined]] This commit ensures that the domain is only set when resIds is valid. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This fix prevents an error when users create a new work entry from the list view in French payroll. It adds checks for missing start or end dates so the entry form can open normally instead of blocking the user with a traceback.
Original PR description
Currently, a traceback occurs when a user attempts to create a work entry in the list view. **To reproduce this issue:** 1) Install the `l10n_fr_hr_work_entry_holidays` module. 2) Switch to the `French` company and open the payroll. 3) Open the work entries in list view and try to create a new record. **Error:** ``` AttributeError: 'int' object has no attribute 'seconds' ``` **Cause:** By default, when creating a work entry through the list view, no `start` or `end` date is provided. This leads to the traceback originating from the following line when computing the duration. https://github.com/odoo/odoo/blob/84b15dc1f866e27d5c8a5fe3e457c2f982bcb133/addons/l10n_fr_hr_work_entry_holidays/models/hr_work_entry.py#L28-L32 **Solution:** Adding an extra check of the `start` and `end` date would resolve this issue. opw-4943104 Forward-Port-Of: odoo/odoo#221442 Forward-Port-Of: odoo/odoo#220127
This fixes an internal accounting test that was tied to the year 2025 and would start failing in 2026. The change helps keep automated quality checks reliable over time without affecting day-to-day user workflows.
Original PR description
The test test_resequence_change_payment_name had hardcoded 2025 in the sequence name, meaning that the test will fail in 2026. opw-4437481 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#222220
This fix ensures products that are not marked for sale cannot be selected on standard quotations when the rental app is installed. It prevents accidental quotation of unavailable products and keeps sales options aligned with product settings.
Original PR description
Versions
--------
- saas-18.3
Steps
-----
1. Have a product that's neither salable not rentable;
2. open a quotation;
3. click "Add a product".
Issue
-----
It's possible to select the unsalable product.
Cause
-----
Commit d5f72c201bf0 added a `_domain_product_id` override to `sale_renting` which includes `('rent_ok', '=', order_is_rental)`. As a consequence, whenever you have a quotation that isn't a rental, this domain will retrieve *any* product that isn't rental either.
Solution
--------
Add a `('rent_ok', '=', True)` condition to ensure the override only affects rental orders, and that non-rental orders won't retrieve all non-rental products.
opw-4983348
Forward-Port-Of: odoo/enterprise#91701This fixes a point-of-sale issue where printing another bill for an already-synced order could fail when no new changes were present. Staff can now reprint or create multiple bills from the same order reliably, reducing checkout friction.
Original PR description
Before this commit an issue was appearing when we try to make multiple bill on the same order. If the order was already synced and didn't get any changes, clicking `Print bill` with `pos_blackbox_be` wouldn't do anything. Now we print the bill after syncing the order, even if the order don't have any new changes to sync. task-id: 4901299 community PR: https://github.com/odoo/odoo/pull/222424
The Swedish SIE4 import now skips accounting entries that contain no usable transaction lines. This prevents empty journal entries from being created in Odoo, keeping imported accounting data cleaner and more reliable.
Original PR description
The aim of this commit is making sure that we don't import move without transaction in it. In SIE4, we can have moves with BTRANS and RTRANS tags that we are ignoring. It means that we could have move without any move lines. It's not an expected behavior in Odoo. This commit checks that the move data are created only if we have lines for that move. no task id Forward-Port-Of: odoo/enterprise#91783
This fix ensures Colombian electronic invoices send document type codes in the exact two-character format required by DIAN. It helps prevent invoice submissions from being rejected because of incorrectly formatted EDI types.
Original PR description
The DIAN endpoint only accepts Electronic Invoice types with a length of 2 characters. This fix adds zero-padding to the problematic edi types. task: 4882683 Forward-Port-Of: odoo/enterprise#89925
16 changes
Resolved issues and error corrections
When a replied-to message is deleted in Discuss or chatter, Odoo now also hides the visible reference to its parent message. This avoids confusing users with leftover reply context after the original message content has been removed.
Original PR description
**Current behavior before PR:** When a user replies to a message and then deletes it, the message body changes to 'This message has been removed.' However, the mention of the parent message remains visible. **Desired behavior after PR is merged:** The parent message mention is no longer shown if the message is deleted. Task-4593293 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#198768
The manufacturing unbuild form now accepts product quantities with the same decimal precision as the product’s unit of measure. This prevents valid manufacturing quantities, such as 1.234 units, from being rounded or blocked when reversing a production order.
Original PR description
Steps to reproduce the bug:
- Set the decimal precision and rounding accuracy for the unit of measure to more than 2 digits (e.g. 3)
- Create a storable product “P1”
- Create a manufacturing order to produce 1.234 units
- Confirm and validate it
- Try to unbuild the MO
Problem:
The unbuild form does not respect the product's UoM decimal precision, allowing only 2 digits for product_qty.
opw-4818591
Forward-Port-Of: odoo/odoo#220308
Forward-Port-Of: odoo/odoo#211944Creating or editing a milestone from the All Tasks view now automatically uses the related project information. This prevents an unnecessary required field error and lets users save milestones without extra manual steps.
Original PR description
### Steps to Reproduce: - Install sale project - Go to All Tasks - Open any task create and edit a new milestone and click on save ### Issue: - A required field error is raised because `project_id` is not set by default. - It should not be the case. ### Cause: - The `milestone_id` field's attributes are overridden in `sale_project`. - The context is missing `default_project_id` when accessing the milestone from the "All Tasks" view. ### Fix: - Passed project_id as default_project_id when opening milestone form. task-4953620 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
The project stock workflow now avoids opening a map view that is not available in the community edition. This prevents an error when users click the 'From WH' button on a project task, keeping the action reliable while allowing enterprise editions to add the map view separately.
Original PR description
* STEP TO REPRODUCE: go to task of a project, enable 'From WH' in top bar button. Click on it -> error because no map view * SOLUTION: in community version we should remove map view then in enterprise we can overide to add it 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#222003
The update adds pm.me to the list of generic email providers used by Odoo's IAP features. This helps avoid treating Proton Mail short-domain addresses as company-specific emails, improving lead or contact handling consistency.
Original PR description
--- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#215290 Forward-Port-Of: odoo/odoo#214036
Product images shown on shared purchase portal pages are now kept to a small, consistent size instead of appearing at their original oversized dimensions. This keeps purchase documents readable and professional for external viewers accessing shared links.
Original PR description
Issue ----- Images on the purchase portal are displayed in their original size instead, making it a visual mess. Steps to reproduce ----- - Create a product with a large image - Create a purchase for…
Issue ----- Images on the purchase portal are displayed in their original size instead, making it a visual mess. Steps to reproduce ----- - Create a product with a large image - Create a purchase for the product - Click the cog wheel > Share - Open the link in a new tab (with no active session, eg private window) --> The image is way too big Cause ----- Images are now converted to Webp: https://github.com/odoo/odoo/commit/1a978183001e0503104285f4bd5bed983beb0efb The problem is that Webp images cannot be resized through the Python backend: https://github.com/odoo/odoo/blob/0c6622294b7117ec5eb1cbf8a9270636b2dd807f/odoo/tools/image.py#L81-L83 However, the product model has multiple sizes for the image: https://github.com/odoo/odoo/blob/3ddf2bcdf16b5b43db4c4abe2cdbc4384cf683cc/addons/product/models/product_product.py#L91-L94 What we can do is load the smallest possible image and then use styling to limit the display size. The 48px comes from the hardcoded values in https://github.com/odoo/odoo/blob/0c6622294b7117ec5eb1cbf8a9270636b2dd807f/addons/purchase/controllers/portal.py#L99 This fix will no longer be needed when (if) Webp images get resized in backend. Comparison ----- Left is before, right is after fix.  Image used -----  ----- Ticket: opw-4625113 Forward-Port-Of: odoo/odoo#221139 Forward-Port-Of: odoo/odoo#217990
Invoice PDFs sent by email now follow the same custom report name configured for printed invoices. This avoids confusion for customers and staff by keeping invoice file names consistent across printing and email delivery.
Original PR description
**Steps to reproduce**: - install the `accounting` module. - Go to `Settings -> Technical -> Actions -> Reports -> Invoice or Invoice without payment` - Change the printed report name - Try to print…
**Steps to reproduce**:
- install the `accounting` module.
- Go to `Settings -> Technical -> Actions -> Reports -> Invoice or Invoice without payment`
- Change the printed report name
- Try to print the report via the print menu (gear icon -> print) -> The report is shown with the new updated name.
- Try sending the invoice the regular way -> the attached invoice has the default name, Odoo ignores the changes.
**Observation**:
When printing the invoice manually, the file name correctly reflects the custom name configured in the report action. However, when sending the invoice by email, the attachment file name does not match the updated name and remains hardcoded.
**Issue**:
The email attachment file name is hardcoded in the mail sending logic. in the method:
```python
def _get_invoice_report_filename(self, extension='pdf'):
self.ensure_one()
return f'{self.name.replace('/', '_')}.{extension}'
```
It does not dynamically fetch the updated report name from the configured report action.
**Solution**:
When a custom report template is configured on the customer on field `(invoice_template_pdf_report_id)`, the system now dynamically uses the corresponding name from the report action for the email attachment.
opw-4923035
Forward-Port-Of: odoo/odoo#219279This fixes cases where livechat visitors could see blank author names in chat messages. The mail interface now uses the correct displayed author name, including the livechat username when regular contact details are not available.
Original PR description
Before this commit, using author.name directly could lead to not showing anything to livechat visitors. This is because the information is not send to the visitor. By using the authorName getter, we leverable the override in livechat and correctly use the livechat_username. task-4965911 Forward-Port-Of: odoo/odoo#220104
This fixes an internal automated test for the Time Off app that was failing after a previous change. The test was rewritten to avoid a fragile screen-tour step, improving reliability without changing business features.
Original PR description
The #217517 PR is causing a test failure on runbot.
The problem was due to use of ```$('.o_stat_info:contains("Time Off")')``` to get the element in tour.
To avoid unnecessary use of tour, the test is re-written.
runbot-230486
Forward-Port-Of: odoo/odoo#222022
Forward-Port-Of: odoo/odoo#221706This fixes an accounting test that used a fixed 2025 payment sequence, which would cause automated checks to fail from 2026 onward. The change keeps validation reliable over time without changing accounting features or user workflows.
Original PR description
The test test_resequence_change_payment_name had hardcoded 2025 in the sequence name, meaning that the test will fail in 2026. opw-4437481 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#222220
This fix updates a Point of Sale Enterprise test so it includes a required accounting-related setting. It prevents related automated checks from failing during builds, helping keep releases reliable without changing business functionality.
Original PR description
steps to reproduce: 1. install pos_enterprise 2. run the test `test_should_not_affect_other_pos_config` or `test_is_header_or_footer_to_false` this commit adds the missing_field `account_tax_return_journal_id` to the test build_error-230301
This fix ensures products that are not marked for sale or rental no longer appear as selectable items on standard quotations. It helps avoid accidental inclusion of unavailable products in customer quotes and keeps sales workflows consistent.
Original PR description
Versions
--------
- saas-18.3
Steps
-----
1. Have a product that's neither salable not rentable;
2. open a quotation;
3. click "Add a product".
Issue
-----
It's possible to select the unsalable product.
Cause
-----
Commit d5f72c201bf0 added a `_domain_product_id` override to `sale_renting` which includes `('rent_ok', '=', order_is_rental)`. As a consequence, whenever you have a quotation that isn't a rental, this domain will retrieve *any* product that isn't rental either.
Solution
--------
Add a `('rent_ok', '=', True)` condition to ensure the override only affects rental orders, and that non-rental orders won't retrieve all non-rental products.
opw-4983348UPS Commercial Invoices now use the currency from the related customer order instead of the company's default currency. This prevents incorrect customs paperwork when orders are sold in a foreign currency, reducing confusion and potential delivery delays.
Original PR description
The automatically generated UPS Commercial Invoice is using the company's currency instead of the currency of the invoiced order. ### How to reproduce: * Setup UPS Delivery Method. * Create a sale order with a currency different from the company's. * Assign a customer in a different country. * Validate the delivery. * Check the UPS Commercial Invoice — it shows the company's currency. opw-4973217 Forward-Port-Of: odoo/enterprise#92064 Forward-Port-Of: odoo/enterprise#91883
The Swedish SIE4 import now skips accounting entries that contain no transaction lines. This prevents empty journal entries from being created in Odoo, keeping imported accounting data cleaner and more reliable.
Original PR description
The aim of this commit is making sure that we don't import move without transaction in it. In SIE4, we can have moves with BTRANS and RTRANS tags that we are ignoring. It means that we could have move without any move lines. It's not an expected behavior in Odoo. This commit checks that the move data are created only if we have lines for that move. no task id Forward-Port-Of: odoo/enterprise#91783
The restaurant appointment editor now keeps its formatting controls consistent while scrolling. When the toolbar disappears because it moves out of view, the color selector closes too, avoiding a confusing floating popup for users.
Original PR description
**Current behaviour before PR:** Steps to reproduce the issue: - Have a long text content in editable, making the container scrollable. - Select first line of the text, in toolbar open color selector. - Scroll down until the toolbar overflows and becomes hidden. Notice that the toolbar disappears when it overflows its container while color picker remains open, floating at the top of container. **Desired behaviour after PR:** Now, when the toolbar overflows and gets hidden, the color selector becomes hidden along with toolbar. Community PR: https://github.com/odoo/odoo/pull/202889 task-4581884 Forward-Port-Of: odoo/enterprise#90458 Forward-Port-Of: odoo/enterprise#84579
Colombian electronic invoices now send document type codes in the two-character format required by DIAN. This prevents avoidable submission rejections caused by incorrectly formatted invoice type values.
Original PR description
The DIAN endpoint only accepts Electronic Invoice types with a length of 2 characters. This fix adds zero-padding to the problematic edi types. task: 4882683 Forward-Port-Of: odoo/enterprise#89925
4 changes
Resolved issues and error corrections
Confirming a rental order with plannable products now continues creating all possible planning shifts even if one line has no available resource. This prevents incomplete planning from being generated and helps teams avoid missing scheduled rental work.
Original PR description
Before this commit, when rental order containing a plannable rental product is confirmed, some shifts will be generated according to the rental order lines with such product. The problem is when there is no available resource, the method in which we expect to return vals list of planning.slot model will return vals because it will break the loop instead of continuing to the next iteration. This commit makes sure the `_planning_slot_vals_list` always return list of vals. Forward-Port-Of: odoo/enterprise#92030
The Swedish SIE4 import now avoids creating accounting entries when the source file contains no usable transaction lines. This prevents empty journal entries from being added to Odoo, keeping imported accounting data cleaner and more reliable.
Original PR description
The aim of this commit is making sure that we don't import move without transaction in it. In SIE4, we can have moves with BTRANS and RTRANS tags that we are ignoring. It means that we could have move without any move lines. It's not an expected behavior in Odoo. This commit checks that the move data are created only if we have lines for that move. no task id Forward-Port-Of: odoo/enterprise#91783
Recruitment users can now rename salary offers without the title reverting after saving. This ensures offer records reflect the intended names and reduces confusion when managing applications.
Original PR description
Steps to produce: - Navigate to Recruitment > Job Positions > Applications> Offers - Select an offer and try to edit the title and save Issues: - When the title is edited and saved, the title reverts back to previous name. Fix: - Change the field attribute in model by making it store=True task-4787302
This fix prevents original list prices from being exposed in hidden page elements for rental products that are not available for sale at zero price. It helps keep website pricing behavior consistent for visitors and avoids search engines or page inspection revealing prices that should not be shown.
Original PR description
Versions
--------
- 17.0+
Steps
-----
1. Create a pricelist setting product prices to zero;
2. configure website to make zero-priced products unavailable for sale;
3. go to /shop as a public user;
4. open the product page of a zero-priced product;
5. open the browser console;
6. use `document.querySelector('.css_non_editable_mode_hidden .oe_currency_value')`
Issue
-----
The query returns an element with the product's original list price.
Cause
-----
In `website_sale`, this element is part of a `t-if` that only gets rendered when `editable` is `True`. A `website_sale_renting` override changes the conditional to `not combination_info.get('is_rental')`.
Solution
--------
Instead of replacing the `t-if` attribute in the override, add `and not combination_info.get('is_rental')` to it, ensuring it remains hidden outside of editable mode.
opw-4865141
Forward-Port-Of: odoo/enterprise#91826
Forward-Port-Of: odoo/enterprise#911129 changes
Resolved issues and error corrections
Quotation PDF templates now correctly display numeric fields when their value is zero. This prevents customers from seeing blank fields where a valid zero amount or quantity should be shown.
Original PR description
Versions -------- - 18.0+ Steps ----- 1. Using Studio, add an integer or float field to the sale order form; 2. upload a PDF using forms as a quotation header[^1]; 3. add a mapping of the form field to the studio field; 4. create a quoation using the header; 5. have the studio field be 0; 6. print quotation. [^1]: e.g. `tests/files/test_forms.pdf` Issue ----- The form field where the zero should be displayed is empty. Cause ----- When formatting values, it returns an empty string for any falsy value whose field isn't of type boolean or monetary. Solution -------- If the value is falsy, only return the empty string if the field type is not integer or float, this way, the zero value will get formatted in the final `else` as a string value (same as non-zero numeric values). opw-4937052
Contacts without a name or email now show their available display name in chatter recipient and follower lists instead of appearing blank or as “false”. This prevents confusion when adding invoice-address contacts or followers to messages and makes recipient selection clearer.
Original PR description
Steps to reproduce =============== 1. Create a contact of type invoice address without name and email. 2. Go to any app with chatter. 3. Add this user to the recipient ----> Only the blue tick will be visible (recipient name will be empty) After this commit, we will use the display_name as a fallback to show in the chatter.
This fixes a calendar test setup so it uses valid default event information when checking a fallback case. The change helps keep automated validation reliable and reduces the risk of false failures during updates.
Original PR description
Use valid res_model/res_id in context defaults runbot-235289 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#222426
Incoming return slips now show the correct destination address instead of placeholder demo text. This prevents confusion for warehouse teams and partners when printing return documentation for receipts.
Original PR description
Issue ----- Incoming return slips have a "Demo Address and Name" text instead of the correct destination address. <img width="928" height="658" alt="image"…
Issue ----- Incoming return slips have a "Demo Address and Name" text instead of the correct destination address. <img width="928" height="658" alt="image" src="https://github.com/user-attachments/assets/6ff0a5e7-f1ee-4faa-a22b-76ec8f2f7a28" /> Steps to reproduce ----- - Create a receipt for a product - Print its return slip Cause ----- By default, the address is taken from the pickings location_id -> warehouse_id -> partner_id. For incoming pickings, the warehouse is the vendor one, with no associated partner. In such cases, the partner can be found directly on the picking itself with the partner_id field. Note ----- To render t-fields, qweb first applies a `rsplit` before evaluating the expression, see https://github.com/odoo/odoo/blob/cb1c761777e84d96f82c4f754586795509ce1b3d/odoo/addons/base/models/ir_qweb.py#L2015-L2016 With this in mind, using parentheses and moving `.partner_id` outside of them seems like the most readable way to go about it. ----- Ticket: opw-4660716 Forward-Port-Of: odoo/odoo#219011
This fixes an error when exporting Spanish VAT record books for invoices using the 0.26% or 1% equivalence surcharge purchase taxes. Businesses in Spain can now generate the VAT book XLSX report for these cases without the process failing.
Original PR description
Added to SURCHARGE_TAX_EQUIVALENT taxes 0.26% SE and 1% SE When using the Odoo VAT book (location Spain) and we have an invoice with the taxes 0.26% SE (0,26% Recargo Equivalencia Compras) 1% SE (1%…
Added to SURCHARGE_TAX_EQUIVALENT taxes 0.26% SE and 1% SE When using the Odoo VAT book (location Spain) and we have an invoice with the taxes 0.26% SE (0,26% Recargo Equivalencia Compras) 1% SE (1% Recargo Equivalencia Compras). a KeyError error occurs <img width="1147" height="517" alt="Captura desde 2025-07-30 09-37-13" src="https://github.com/user-attachments/assets/771fcf6e-efed-4e79-a1d4-a133c7072c2a" /> Steps to Reproduce this error: 1. Create a new database using Odoo version 18. 2. Activate the module: “Spain - Accounting (PGCE 2008)” (l10n_es). 3. Create a new company and set Spain as the country. 4. In the company’s “Sales & Purchase” tab, set the Fiscal Position to "Equivalence surcharge". 5. Create a new quotation and select the company created in step 3. 6. Add a product with the following taxes: 0.26% and 2% VAT (G). 7. Add another product with the following taxes: 1% (SE) and 7.5% VAT (G). 8. Confirm the invoice generated from the quotation. 9. Go to Accounting → Reporting → Tax Report and select "Generic Tax Report". 10. Click the gear icon and select "VAT Record Books (XLSX)". OPW https://www.odoo.com/es_ES/my/tasks/4981807 @jco-odoo please review. Thank you! MT-10457 @moduon
The Web Studio test suite was updated to match a recent change in how suggested message recipients are returned. This helps keep automated checks reliable and reduces the risk of false test failures during future updates.
Original PR description
From the related community commit, the _message_add_suggested_recipient method is modified to also return display name under certain condition. This commit adapts the test inside web_studio to align with the method's change. Task-4812554
Field service users can once again access the map view for outgoing deliveries. This restores a useful planning view that was temporarily unavailable due to a dependency between community and enterprise features.
Original PR description
This commit is the continuity of the fix made in community. The issue fixed in community was the map view cannot be defined in the view mode of an action since the map view only exists in enterprise. This commit overrides the method defined in community to add the map view as before. Related PR: odoo/odoo#222003
The electronic signature reminder process now handles requests that do not have a validity date. This prevents scheduled reminder jobs from crashing and helps ensure signature follow-ups continue reliably.
Original PR description
The cron can fetch record with no validity date,
so the check request.validity < today
raise
```
Traceback (most recent call last):
File "/home/odoo/src/odoo/saas-18.3/odoo/tools/safe_eval.py", line 397, in safe_eval
return unsafe_eval(c, globals_dict, locals_dict)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "ir.actions.server(5136,)", line 3, in <module>
File "/home/odoo/src/enterprise/saas-18.3/sign/models/sign_request.py", line 437, in _cron_reminder
if request.validity < today:
^^^^^^^^^^^^^^^^^^^^^^^^
TypeError: '<' not supported between instances of 'bool' and 'datetime.date'
```
Forward-Port-Of: odoo/enterprise#90279The Swedish SIE4 import now skips accounting entries that contain no transaction lines. This prevents empty or invalid journal entries from being created, improving data quality during imports.
Original PR description
The aim of this commit is making sure that we don't import move without transaction in it. In SIE4, we can have moves with BTRANS and RTRANS tags that we are ignoring. It means that we could have move without any move lines. It's not an expected behavior in Odoo. This commit checks that the move data are created only if we have lines for that move. no task id Forward-Port-Of: odoo/enterprise#91783