Wednesday, December 3, 2025
12 changes · master
Enhancements to existing features
This update modernizes internal website and report templates to use Odoo’s newer template-calling format. It helps keep upgrades smoother and reduces future maintenance risk, with little expected change for everyday users.
Original PR description
Begin to remove the old syntax of t-call. To do this, we apply a script, the same script will be used for migration. The script will be applied by group of addons and splitted in different pr/commit…
Begin to remove the old syntax of t-call. To do this, we apply a script, the same script will be used for migration.
The script will be applied by group of addons and splitted in different pr/commit to facilitate reviews and merges. After that we will remove the fallback for the deprecated version of t-call with the implementation of the migration script.
see: https://github.com/odoo/odoo/pull/197296
===========================================================
[IMP] upgrade_code: Add script to update templates for new t-call
The `t-call` syntax is updated to use the new semantic, which passes
values *as attributes/parameters* on the `<t>` (with `t-call`) tag itself,
instead of relying on nested `t-set` directive.
- Old (Deprecated): Used nested `<t t-set="var_name" t-value="x"/>` tags
inside the calling element to define variables.
- New: Variables are passed as attributes directly on the element where
the `t-call` is located (e.g., `<t t-call="module.template" var_name="x"/>`).
```xml
<t t-call="module.template">
<t t-set="var_name" t-value="x"/>
</t>
```
become
```xml
<t t-call="module.template" var_name="x"/>
```
===========================================================
[IMP] upgrade_code: new tools to keep lxml.etree indentation
When using `etree`, the rendering of tostring is not identical to the initial template. The tools allows you to preserve the indentation and minimize unwanted changes.
Issue when use etree:
```xml
<section stuff="1" bibi="2">
<div
id="stuff"
class="toto"
></div>
</section>
```
If the code uses the classic `etree` structure to make its modifications (such as adding an attribute), this results in:
```xml
<section stuff="1" bibi="2">
<div id="stuff" class="toto" new_attribute="True"/>
</section>
```
Using `tools_etree.update_etree(origin: str, callback: Callable[[etree._ElementTree]])` gives:
```xml
<section stuff="1" bibi="2">
<div
id="stuff"
class="toto"
new_attribute="True"
></div>
</section>
```The Peppol settings area now shows a small label indicating the current non-production mode, such as demo or test. This helps users quickly understand the active environment and reduces the risk of sending or configuring Peppol documents in the wrong mode.
Original PR description
Before this PR : The Peppol settings section in the settings page did not show the current mode (demo/test/prod). Users had no clear indication of the active mode, which could lead to mistakes. After this PR : A small label is now displayed in the Peppol settings section to clearly indicate the current mode when not in production. task-5149768 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#238223 Forward-Port-Of: odoo/odoo#236072
Payment provider cards now show their images with added spacing, a subtle border, and rounded corners. This keeps images from touching the card edges and gives the payment setup screen a cleaner, more polished appearance.
Original PR description
This PR fine-tunes the visual result of the `payment_provider_kanban` by adding spacing around the image as well as a border with a radius. This aims to prevent the image to stick to the sides of the container while providing a sleeker look and feel. task-5365465 | //// | Master | This PR | |--------|--------|--------| | LM | <img width="1919" height="694" alt="image" src="https://github.com/user-attachments/assets/cfe95379-bc1a-4ac8-9719-1d947899ecf5" /> | <img width="1922" height="727" alt="image" src="https://github.com/user-attachments/assets/7ebb4a8f-5757-41a0-8119-e7ea983b8ee4" /> | | DM | <img width="1919" height="692" alt="image" src="https://github.com/user-attachments/assets/18b287a6-11fe-4089-8385-f512af48120e" /> | <img width="1918" height="695" alt="image" src="https://github.com/user-attachments/assets/47e74294-5385-4b39-9db3-cc3ef935a097" /> | --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
The image removal dialog now uses clearer wording and includes a discard option. This reduces confusion for users when deciding whether to confirm or cancel removing an image.
Original PR description
The wording in the file selector when removing an image is not clear. This PR adds a discard button and reword the confirmation button. task-5357506 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Accounting reports can now better handle cross-report formulas that specify a required date range. This improves report accuracy and supports newer reporting configurations used in related enterprise features.
Original PR description
See enterprise branch for details. task-5243334
Improves internal email testing so teams can verify the exact email content generated by the system, not just the input values used to send it. This helps maintain email reliability and reduces the risk of unnoticed formatting or content issues in future changes.
Original PR description
When using MockEmail, you can inspect sent emails through self.mails. However, in some cases we need to test the actual email output instead of only the provided values. Forward-Port-Of: odoo/odoo#238488
This update streamlines the rendering of templates within Odoo Enterprise modules by removing outdated syntax and promoting cleaner, more efficient code. The changes enhance performance and maintainability, ensuring a smoother user experience for Enterprise users. This work addresses inconsistencies and improves the overall structure of the templates.
Original PR description
see community: https://github.com/odoo/odoo/pull/235469 see: https://github.com/odoo/odoo/pull/197296
This update enhances the Odoo Enterprise VoIP system by displaying the last called number when the call button is clicked, even if no numbers are initially entered. This simplifies the dialing process for users and improves the overall user experience. It's a minor improvement focused on usability.
Original PR description
If no numbers are provided, when click on the call button in keypad, we will show the last called number. Task-5225969
This update replaces the specific "Uruware" name in the Odoo settings with a generic "UCFE Provider" label. This ensures customers contact Odoo support for assistance and maintains a consistent configuration for Uruguayan users, streamlining the setup process.
Original PR description
Before: -In the Settings > Uruguay Localization section, electronic invoicing provider was shown as "Uruware". -This could lead customers to contact Uruware directly instead of Odoo support. After: -Replaced all mentions of `Uruware` with generic name, `UCFE Provider`. -Updated labels and descriptions in both testing and production sections. -The overall configuration and functionality remain unchanged. Impact: -Removes direct provider references from the interface. -Ensures customers contact Odoo support for any assistance. -Keeps the configuration clear and consistent for Uruguayan users. task-5244539 Forward-Port-Of: odoo/enterprise#101053 Forward-Port-Of: odoo/enterprise#99065
This update streamlines email templates across several Odoo modules by utilizing a simplified template structure and optimizing translation handling. The changes remove redundant header and footer elements, improving email performance and reducing complexity. This impacts modules including sale_subscription, documents, and knowledge.
Original PR description
We use encapsulating template wherever it is possible to simplify the email templates (by removing the header and the footer that are now in the generic encapsulating template). To translate the…
We use encapsulating template wherever it is possible to simplify the email templates (by removing the header and the footer that are now in the generic encapsulating template). To translate the subtitles into the recipient language, we use LazyTranslate to defer translation until the recipient’s language is available in context. Notes about sale_subscription: - mail_template_subscription_alert has not been modified as it don't really have a header or a footer but just a frame with a title around the message which don't repeat information of the header or the footer. - To get a simpler header, we use "mail_notification_light" as layout for the mail_template_subscription_rating template (through the email_layout_xmlid field added in odoo/odoo#114462). Note about knowledge: we adapt the code following the replacement of the "subtitles" parameter of the method mail_thread.message_notify method by the context variable "email_notification_subtitles". various: documents, knowledge, payment_sepa_direct_debit, sale_subscription, timesheet_grid Task-2810103
This pull request updates the tests for the documents_spreadsheet module to align with recent code modifications. These changes ensure the tests accurately reflect the current functionality and maintain the stability of the enterprise version of Odoo. This is a routine maintenance update.
Original PR description
This commit adapts tests to changes made in https://github.com/odoo/odoo/pull/237520 task-5355048
This update refines the promotion studio functionality within the Enterprise module. By switching to a button tag, the studio dialog is now correctly disabled when the system is offline, preventing unnecessary attempts to open it. This ensures a smoother user experience, particularly for users operating in offline environments.
Original PR description
By using a button tag, the item is properly disabled in offline mode, which is what we want as it doesn't make sense to open the dialog to promote/install studio in that case. Task~5359151