Tuesday, June 9, 2026
9 changes · saas-18.4
Resolved issues and error corrections
Creating a project template from an existing project now preserves the project's planned start and end dates. This prevents teams from losing scheduling information when turning recurring or reusable projects into templates.
Original PR description
****Steps** to reproduce:** - Open a project with a planned date set. - Create Template of that project. - Observe the created project template. **Issue:** The planned dates of the project are lost when converting the project into a template. **Cause:** When we create a project template from a project, the project gets archived. Because a new project template record is created, and the start and expiration fields have copy=False, those dates are not being copied. **Fix:** Explicitly pass the planned date when copying the project, so the project template keeps the original planned date. task-5872500
Fixed extra vertical spacing in the portal chatter area for shared project tasks. The Follow/Unfollow button and discussion section now align correctly, improving the visual experience for portal users without changing functionality.
Original PR description
**Steps to reproduce:** 1. Log in as a portal user. 2. Open a shared project and then open any task within it. 3. Observe the vertical spacing above the Follow/Unfollow button and the chatter component. **Issue:** The chatter UI has incorrect vertical spacing, causing elements like the Follow/Unfollow button to sit too far down and appear misaligned. **Cause:** The pt-2 padding class was hardcoded in two separate locations: 1. The compileChatter wrapper in project_sharing_form_compiler.js. 2. The portal.Chatter XML template. When combined this caused a double-padding effect forcing excessive space. **Fix:** Removed the hardcoded pt-2 class from both the JavaScript compiler wrapper and the core XML template. This eliminates the double-padding conflict. This resolves the alignment issue in Project Sharing and does not affect the layout or functionality of other portal components. task-4203362 Forward-Port-Of: odoo/odoo#257490
This fix prevents the website editor's extra menu from interfering when opening the site menu. It helps avoid unpredictable menu closures, making menu editing more stable for users.
Original PR description
[FIX] website: close the extra menu before opening site menu The extra menu item is updated multiple times (cfr `afterFontsloading`). If both the extra menu item and the site menu are open when an extra menu item update occurs, the site menu is closed. This happens because the update process calls the `show()` method on the `Dropdown` instance when the extra menu was previously open. Because Bootstrap's `show()` implementation shifts focus, the popover containing the site menu is closed (see `useClickAway()` hook). This can lead to undeterministic error. To solve the problem, the extra menu dropdown is closed before opening the site menu. runbot-240955 Forward-Port-Of: odoo/odoo#268652 Forward-Port-Of: odoo/odoo#266376
This update fixes an issue where DATEV customer exports incorrectly included EU-specific fields for customers outside the European Union. The change ensures that non-EU customers, like those in Switzerland, use the correct country code (`Land`) field, aligning with DATEV's data format requirements. This improves data accuracy and compliance for international reporting.
Original PR description
### Issue: In DATEV customer and supplier exports, partners outside the European Union still had the `EU-Land` and `EU-UStID` fields filled However, these fields must only be used for EU countries…
### Issue: In DATEV customer and supplier exports, partners outside the European Union still had the `EU-Land` and `EU-UStID` fields filled However, these fields must only be used for EU countries For non-EU countries, the `Land` field should be filled instead, and is required whenever the country is not Germany https://developer.datev.de/en/file-format/details/datev-format/format-description/debitorskreditors ### Cause: `_l10n_de_datev_get_partner_list` did not distinguish between EU and non-EU countries As a result, any partner with a VAT number could populate `EU-Land` and `EU-UStID`, even if the country was outside the EU Greece also requires a special case: its VAT prefix is `EL` so the `EU-Land` too, while the country code used in `Land` must remain `GR` ### Steps to reproduce: - Install `l10n_de_reports` and switch to the DE company - Create a customer in Switzerland with a valid VAT number - Create and confirm an invoice for that customer - Go to Accounting → Audit Reports → General Ledger - Select the full year - From the gear menu, export DATEV DATA (zip) - Open the `EXTF_customer_accounts` file ### Before the fix: `EU-Land` and `EU-UStID` are filled for the Swiss customer, while `Land` is empty ### After the fix: `EU-Land` and `EU-UStID` are empty for non-EU countries such as Switzerland, while `Land` is correctly filled `Land` is filled using the following priority: 1. Partner country_code 2. Country extracted from the VAT number 3. Empty opw-5902565 Forward-Port-Of: odoo/enterprise#119593 Forward-Port-Of: odoo/enterprise#113835
This update resolves a minor visual issue where the name of the Sendcloud website delivery module was incorrectly displayed as 'Sendcould'. The fix ensures consistent and accurate module naming within the Odoo Enterprise platform. This change improves the user experience and avoids potential confusion.
Original PR description
The displayed name contained a typo ("Sendcould" instead of "Sendcloud") All other references already use the correct spelling, so no further changes were necessary.
opw-6239003
Forward-Port-Of: odoo/enterprise#118416
Forward-Port-Of: odoo/enterprise#118223This update resolves an issue where the commission report displayed empty groups when linked to inactive commission plans. By excluding these plans from the report's initial data processing, the report now accurately shows populated groups, providing a cleaner and more reliable view of commission achievements. This ensures sales teams have accurate data for their performance analysis.
Original PR description
Steps to reproduce: 1. create a commission plan 2. invoice an SO with the linked salesperson to the plan to progress towards the target 3. Archive the commission plan 4. Go to Sales > Commissions > Commissions 5. Remove all filters The `sale.commission.report` includes empty groups for `sale.commission.achievement.report` that are linked to inactive commission plans By excluding said plans from the initial join, the report would display populated groups only without the clutter. opw-6177132 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/enterprise#119695 Forward-Port-Of: odoo/enterprise#117615
This update fixes an issue where planned dates were lost when converting projects to project templates. The change ensures that the original planned dates are retained when creating a template, streamlining project management workflows. This prevents data loss and maintains accurate scheduling.
Original PR description
Steps to reproduce: -------- - Open a project with a planned date set. - Create Template of that project. - Observe the created project template. Issue: ---------- The planned dates of the project are lost when converting the project into a template. Cause: ----- When we create a project template from a project, the project gets archived.Because a new project template record is created, and the start and expiration fields have copy=False, those dates are not being copied. Fix: ------- Explicitly pass the planned date when copying the project, so the project template keeps the original planned date. task-5872500
This update prevents empty ICS calendar files from being generated when publishing shifts. Previously, the system created an empty file when a matching time slot wasn't found, which caused issues with calendar integrations. Now, the ICS file is only generated when a valid shift slot is linked to an employee.
Original PR description
**Step:** - install planning - create a resource - create an open shift for a future date - in Gantt view: - publish shift and select the created resource - click “Publish & Send” - check the email and click “Add to Calendar” **Issue:** Currently, clicking “Add to Calendar” generates an empty ics file. **Reason:** During ics file generation, the planning token to find a slot using the planning date and employee. but, no matching slot is found, so the process returns an empty slot, resulting in an empty ics file. **Fix:** Generate the `planning_url_ics` only when a slot is linked with an employee. Otherwise, hide the “Add to Calendar” button and do not generate the ics file. Forward-Port-Of: odoo/enterprise#118978
This update resolves a test failure caused by incorrectly formatted data being passed to the system. Specifically, raw PDF content was mistakenly treated as base64, leading to an error. This fix ensures data is correctly encoded, maintaining the stability of the system.
Original PR description
This commit fixes an error when running the `test_employee_job_change` test on Python 3.14, which is stricter about base64 validation. Ultimately, the root issue was that raw PDF content was being passed when a base64 representation was actually expected (which is obviously invalid base64). runbot-938173 Forward-Port-Of: odoo/enterprise#118523