Daily updates from Odoo
Monday, January 26, 2026
16 changes · master
Enhancements to existing features
This update ensures Odoo correctly handles the new 11% and 21% VAT rates introduced in Romania's updated tax laws. By adding necessary tax mappings, the system now accurately reflects these changes, ensuring proper accounting and fiscal position calculations.
Original PR description
The new 11% and 21% taxes introduced with the updated Romanian VAT law were added with this commit https://github.com/odoo/odoo/commit/2026212d0f7ffc217be3c6a2ff2abe5288c18afb , but some tax mappings were missing. This commit completes the setup by adding the required tax mappings, ensuring the new rates work correctly with fiscal positions. task-5480159 Forward-Port-Of: odoo/odoo#245050 Forward-Port-Of: odoo/odoo#243452
This change updates the source of lead mining data within Odoo from Clearbit to Dun & Bradstreet. This aligns with existing data usage for partner autocomplete and ensures we're leveraging a reliable provider for improved lead insights. This update is part of a broader IAP migration.
Original PR description
Before this commit: - Lead mining data was fetched from `clearbit` provider on IAP which is now going to be removed for discovery service After this Commit: - Data will now be fetched from `dun_and_bradstreet` provider on IAP which we are already using for the `partner_autocomplete` IAP PR: https://github.com/odoo/iap-apps/pull/1274 task-4873238 Forward-Port-Of: odoo/odoo#245474 Forward-Port-Of: odoo/odoo#235521
This update enhances the reliability of electronic invoice synchronization by moving tracking of last fetched dates from configuration settings to dedicated fields within the company record in Odoo. This change improves performance and simplifies future maintenance, ensuring invoices are processed correctly.
Original PR description
To store the last fetched date in stable to allow for synchronization, config parameters were used. In master, these are now replaced with dedicated fields on the company model for better performance and easier maintenance. This commit adds dedicated fields on res.company for einvoice and earchive dates. task-5865683 Upgrade PR: https://github.com/odoo/upgrade/pull/9315
This update adjusts the font size of the 'amount due' and 'amount by guest' displays on the payment screen within the Point of Sale module. This enhancement improves readability for staff processing payments, leading to a smoother and more efficient customer checkout experience.
Original PR description
Little improvement of the font size of amount due and amount by guest on the payment screen. task: 5473324 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#243733
This update simplifies the user experience by changing all 'Cancel' buttons in Odoo to 'Discard'. This clarifies the button's function – whether it closes a dialog or sets a record's status – and avoids potential user confusion.
Original PR description
Purpose ======= Rename all the "Cancel" buttons in wizards/modals/dialogs to "Discard". Specification ============= The "Cancel" label can be confusing for new users as they don't actually know if clicking on "Cancel" will close the wizard/modal/dialog or set the state/stage of the record to "Cancelled". "Discard" is preferred as it does not have this confusing connotation. => If clicking on the cancel button actually changes the state/stage of a specific record to "Cancelled", keeping the "Cancel" label, else changing the label to "Discard". Task-5172291
This update changes the label of 'Cancel' buttons in various Odoo wizards and dialogs to 'Discard'. This simplifies the user experience by removing potential confusion about whether the button closes the window or modifies the record's status. This aligns with best practices for clarity and usability.
Original PR description
Purpose ======= Rename all the "Cancel" buttons in wizards/modals/dialogs to "Discard". Specification ============= The "Cancel" label can be confusing for new users as they don't actually know if clicking on "Cancel" will close the wizard/modal/dialog or set the state/stage of the record to "Cancelled". "Discard" is preferred as it does not have this confusing connotation. => If clicking on the cancel button actually changes the state/stage of a specific record to "Cancelled", keeping the "Cancel" label, else changing the label to "Discard". Task-5172291
This update makes it easier to create all-day events in the calendar by allowing users to click the date header, mirroring the Google Calendar experience. Previously, users had to click a specific row, and this change addresses a usability issue while also refining the event placement logic to ensure accurate time settings during drag-and-drop operations.
Original PR description
Add the option to create all day events by clicking the date header, similar to google calendar. This was previously doable by clicking the unlabeled 'all day' row below the header. Task-5421331
This update modifies the button labels in sales order emails to 'View Quotation' instead of 'Sign & Pay Quotation' and similar terms. This change reduces potential customer confusion and encourages them to easily access the order details.
Original PR description
Change the label button to view SO in email from "Sign & Pay Quotation" and similars to "View Quotation", as they are a little bit too engaging and can block the customer from actually clicking on it. task-5379535
This update enables VoIP calls to proceed without requiring a microphone when calls are automatically redirected to a desk phone. This improves the user experience for desk phone calls by eliminating unnecessary microphone prompts. Additionally, the commit addresses a bug where users were stuck in an in-call screen after rejecting microphone usage, ensuring calls terminate correctly.
Original PR description
(Originally started at https://github.com/odoo/enterprise/pull/105183 in preparation of https://github.com/odoo/enterprise/pull/103404, those were replaced by this one for part 1 and…
(Originally started at https://github.com/odoo/enterprise/pull/105183 in preparation of https://github.com/odoo/enterprise/pull/103404, those were replaced by this one for part 1 and https://github.com/odoo/enterprise/pull/105217 for part 2 (not done yet))
Main goal of this part 1: allow no-microphone calls when auto-redirect (desk phone)
When a user calls someone and that their profile is configured to use their desk phone (in which case it will call the desk phone and then call the callee to redirect them to the desk phone call), it simply did not make sense to ask for the microphone: it won't be used. This commit makes it so the call proceeds without microphone so it can be automatically redirected immediately.
Then needed commit to fix related things:
[FIX] voip: properly leave in-call after all UserMedia errors
Steps to reproduce:
- Call someone via the softphone
- When asked, reject the use of the microphone
- An error appears, close it
=> You are now on the in-call screen and you have no way to leave it
even though the call is terminated.
This cames from a combination of [1] and [2]. The parent commit from
here provides some additional details: `activeSession` is not set at
the same place anymore (which is wanted to ask the microphone before
reaching the in-call screen), but because of [2] it ends up being set
while it should not. See extra details below.
This commit takes the opportunity to fix two other related issues:
- When calling, if the microphone was rejected (but existing), it
used to make a traceback before [1]. After [1], it overrode the error
indicating the problem by another one. This originated from [2] which
blocked "NotAllowed" microphones, ignoring the other causes and
ignoring the fact the traceback occurred because all the "invite"
calling stack was not properly awaited/guarded. Now, after [1],
everything is properly awaited/guarded so this can simply be removed.
As a bonus, we mark all microphone errors already handled so they are
not removed by another less understandable error later.
- Kinda the same thing and actually found by [1] too: when *accepting*
a call, microphone issues were shown but then overridden by less
understandable error messages too. This is now fixed the same way.
[1]: https://github.com/odoo/enterprise/commit/942f32316ab02d8c739fe7fdd5ec2bdde472a68e
[2]: https://github.com/odoo/enterprise/commit/6570a9735de62130b6451202fb33fac70a0e7901
[FIX] voip: properly access voip Session during UserMedia failure
Commit [1] changed quite a lot of things when it comes to call creation
and acceptation, sip session and call record creation order, etc. The
problem here is due to a particular change: before, the `activeSession`
was set before trying to `invite`/`accept`. It is now only set before
for `accept`, but not for `invite`. This makes it so that rejecting the
microphone during call acceptation works but rejecting the microphone
while trying to call not work. Indeed the `hangup` call being done on
microphone access check failure, it needs the `activeSession` to be set.
This resulted in the call (and its record) not being updated as we wish,
but terminated on SIP.js side.
However, simply restoring the `activeSession` being set earlier would
not be ideal: it came with the advantage of not starting the in-call
screen and dial ringtone before the microphone was actually accepted
when trying to call.
Instead this commit makes it so the VoIP Session object is passed
through SIP options objects and then accessible in the UserMedia failure
callbacks. Maybe using the VoIP Session object inside a callback used by
SIP.js to configure the inner SIP session is not ideal but it can always
be improved later.
Note: after calling and blocking the microphone, you are stuck on the
in-call screen after discarding the error, this will be fixed in another
commit.
[1]: https://github.com/odoo/enterprise/commit/942f32316ab02d8c739fe7fdd5ec2bdde472a68e
[IMP] voip: simplify `mediaStreamFactory` definition
Instead of having a getter returning a function, make that function part
of the `UserAgent` object directly (and pass it (bound properly) to
the SIP.js library).
[FIX] voip: convert bad call to `triggerError` to new API
Commit [1] introduced a call to VoIP's `triggerError` but used the old
API, that was changed at [2].
Steps to reproduce:
- Make a call to someone without a microphone on your computer (not
blocked by the browser: disabled on the OS side) (or tweak
`mediaStreamFactory` to simulate that).
=> The error message contains no helpful information.
This commit uses the right API to display the error correctly.
[1]: https://github.com/odoo/enterprise/commit/942f32316ab02d8c739fe7fdd5ec2bdde472a68e
[2]: https://github.com/odoo/enterprise/commit/49e1595f31c9f8a23d9b18a33b859d3d01221024
task-4947771This update enhances the softphone's keypad search functionality by allowing users to navigate suggestions using the up and down arrow keys. Additionally, the softphone has been redesigned for a more consistent user experience, improving focus management and overall usability. This change simplifies the process of finding and interacting with the softphone.
Original PR description
While using the keypad search input, the user can now navigate the potential suggestion + more buttons using the up/down keys of their keyboard. Also: [IMP] voip: improve softphone keyboard…
While using the keypad search input, the user can now navigate the
potential suggestion + more buttons using the up/down keys of their
keyboard.
Also:
[IMP] voip: improve softphone keyboard management
Make the softphone closer to a dialog and other overlay elements of the
Odoo webclient:
- Now trap the focus inside the softphone (using tab cycles inside the
softphone itself).
- Make sure event handlers of the home screen menu in enterprise are not
in conflict (e.g. the next commit after this one will allow using
up/down to navigate keypad search results, the home screen should not
mess with that).
- The Escape key now allows to hide the softphone.
[IMP] voip: prevent focusing the backspace button
It is never useful to focus the keypad search's backspace button using
the keyboard: you would have to tab your way through the search input
itself anyway, in which case it is easier to use the backspace key on
your keyboard instead of trying to use the UI one.
Doing this, this also allows to focus the first search result with one
tab press while inside the input, instead of having to go through the
backspace button.
And potential follow-up at https://github.com/odoo/enterprise/pull/105047
task-5441808This update streamlines the accounting process for Ecuadorian businesses within Odoo. It simplifies expense categorization by consolidating accounts and adding a new account for specific benefits, while also preventing unnecessary reconciliation for income-related expense accounts. This improves accuracy and efficiency.
Original PR description
Improve the distribution of expense and cost of revenue accounts in Ecuadorian localization We avoided not creating subcategories of expenses by eliminating the group called "Other employee benefit plan expense", which generated duplicity in the accounts. We fixed this by merging the accounts into the main "Employee benefit plan expense" group. Additionally, the account "Other employee benefits' was added to record any other benefits granted directly by the Ecuadorian companies. This ensures a better organization of the accounting setup. Mark as non-reconcilable the expense accounts (salaries and wages, travel expenses, contributions, etc) to avoid unnecessary reconciliation processes, these accounts are income statements and they are not accounts payable/receivable, therefore, they are closed at the end of the accounting period ### opw-4846355 Forward-Port-Of: odoo/odoo#208047
This update improves the website's helpdesk slides forum by updating how content is targeted. Previously, the system relied on links (hrefs) for location, which is now unreliable due to translation features. This change ensures the forum content remains accessible and correctly displayed.
Original PR description
`href` cannot be used anymore as an xpath expression because it is now translatable. We target a specific class instead. task-3626918
This update simplifies the appraisal campaign wizard by removing unnecessary fields for most users. Specifically, access to certain manager and company fields has been restricted, enhancing usability and reducing complexity. This change improves the overall user experience for appraisal management.
Original PR description
Some changes have been implemented in the UX for the appraisal campaign wizard, such as removing the mode field and hiding the manager field for non administrator/Officer users, as well as hiding the company,coach,and manager fields from the search employee view.
This update improves the employee contract workflow by intelligently hiding the 'New Contract' button when it's not relevant. Specifically, it prevents users from creating a new contract if the start date is missing, the employee only has one version, or the employee hasn't been created. This streamlines the process and avoids unnecessary actions.
Original PR description
- added a condition to hide New Contract button if contract start date is empty and the employee only has 1 version or if the employee is not created task-id: 5075255 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This update enhances the employee contract creation process in the Odoo Enterprise system. Specifically, a new condition now prevents users from creating a new contract if the start date is missing and the employee has only one version or hasn't been fully created. This streamlines the workflow and avoids potential errors.
Original PR description
- added a condition to hide New Contract button if contract start date is empty and the employee only has 1 version or if the employee is not created task-id: 5075255
This update enhances the user experience within the Odoo Discuss meeting view by increasing the size of key buttons and refining the visual design. Specifically, the layout and button styling have been adjusted for better usability, along with smaller avatar images and a modernized card name appearance.
Original PR description
- bottom buttons in meeting view are bigger - layout buttons in meeting view are moved with side meeting actions - side meeting actions uses non-bg visual - meeting bottom buttons now have hover effect Also makes these other UI changes to discuss calls: - card name has text-shadow instead of dark bg color - avatar img size has been reduced (100px to 80px, was too big) Task-5462123 Before / After <img width="959" height="644" alt="Screenshot 2026-01-02 at 18 16 50" src="https://github.com/user-attachments/assets/b2bd4128-c298-4bfe-9843-4ff9aa2a7595" /> <img width="954" height="639" alt="Screenshot 2026-01-02 at 18 01 24" src="https://github.com/user-attachments/assets/5b954d86-e65e-4c97-8485-9c62200f60b0" /> Forward-Port-Of: odoo/odoo#241924