Thursday, May 15, 2025
17 changes
6 changes
Enhancements to existing features
Bank reconciliation users can now access a broader batch payment search when the initial suggestions are not enough. The popover also shows only five batch payments at a time, keeping the selection list clearer and easier to scan.
Original PR description
Adding the search more logic on batch payment and limiting the display to 5 batch in the popover no task id
This update completes recent changes to activities and addresses issues that caused crashes or made the workflow harder to use. It should make activity handling in Odoo more reliable and smoother for everyday users.
Original PR description
task-4592571 changed up the way activities function, but not everything was completed before the end of the freeze; in addition, it included a number of bugs/crashes/usage inconveniences. This commit adds: This commit also fixes: task-4747156
Resolved issues and error corrections
Kiosk mode now sends the required authorization information when communicating with IoT devices, so actions such as receipt printing are accepted by the IoT Box. The fix also resolves a payment terminal error that could appear after a payment was approved or cancelled.
Original PR description
Kiosk mode didn't sign the request headers with "Authorisation" needed by the IoT to execute actions like printing. This PR fixes it along with an error caused by the refactoring PR https://github.com/odoo/odoo/pull/186359 To reproduce the authorisation issue: connect a kiosk with an iot box + printer, then make a payment. The printing would never be done because no "authorization" is sent in the headers, so the IoT Box refuses to execute the action To reproduce the bug linked to the refactoring: connect an iot terminal (tested with Worldline) then try to make a payment. A traceback appears upon payment approval or cancellation task-4794798
1 change
New functionality added to Odoo
Businesses can now use the Bank of Slovenia as a source for live currency exchange rates. This gives companies another official provider option for keeping rates up to date automatically.
Original PR description
In this PR: - Added Bank of Slovenia to the list of currency providers. - Fetches exchange rates using the official API and updates the rates. Task-4794271
10 changes
Enhancements to existing features
UAE invoice reports now show each line amount in the company currency when the invoice uses a different currency. This helps businesses meet FTA requirements to express payable amounts in AED and respects the company's tax display setting.
Original PR description
Description of the issue/feature this PR addresses: Task ID: 4636082 Current Behavior before PR: - When printing an invoice with a currency that is different than the company's currency. The amount value of each line is only printed in the invoice's currency and not the company's currency. - As per the FTA article 59, the line amount should also be expressed in AED. - The tax excluded amount was also always printed regardless of the company's setting. (something that was fixed in https://www.odoo.com/odoo/project.task/4625855?debug=1 but there seems to be no intention to backport this to 18.0). Desired behavior after PR is merged: - Add a new column to print the line amount in the company's currency if the invoice has a different currency than the company. - Print tax excluded/include amount based on company's setting. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This fix prevents barcode kanban screens from crashing when background requests finish after a user has left the page. It also groups independent data requests together, improving reliability for stock barcode and batch picking workflows.
Original PR description
… condition In JS, rpc is not a service anymore so it will return no matter if the component is already destroyed. In turn, the orm service is protected, so if it is passed it will crash. After this commit, we prevent this race condition and we batch calls that are independant from one another. runbot-error-190605
This fix prevents crashes when viewing document folder details with aliases enabled, especially in debug or read-only views. It also improves how activity assignees, alias spacing, and cleared domain fields appear, making the Documents details panel more reliable and consistent for users.
Original PR description
1. Configure aliases 2. Open documents in debug mode 3. Select or enter a folder 4. Open details panel (Info & Tags) 5. See crash Without debug mode in readonly, you'll see "Activity assigned to" instead of "No activity assignee". Also fixes * domain field disappearing if cleared * irregular spacing of alias in readonly * filtered props passed to the Many2OneField (see related COM PR) Tests are not exhaustive but expanded to increase coverage of alias fields and `isContainer` 'fake' records. Follow up of 4724349 Task-4749289
Manual tax-related returns now run their validation checks immediately when created, instead of waiting for a page refresh. The checks screen also shows a name that matches the return type, reducing confusion for users handling different return processes.
Original PR description
Before this commit: When we would create return manually for instance: Ec sales and intrastat, the checks would not run automatically since they only run on page refresh. The fix here is to run these checks on creation of the return. Another fix is the display name of the checks view. It was always 'VAT Return Checks' which is wrong. Now we base the view name on the return type name. task-4783937
Resolved issues and error corrections
Fixes an issue that prevented users from adding payment methods back to credit card journal settings after the default method was removed. Credit card journals now show available payment methods consistently with bank journals, helping users configure incoming and outgoing payments without getting stuck.
Original PR description
Description of the issue/feature this PR addresses: This PR addresses an issue where, in the credit card journal configuration form (for either Incoming Payments or Outgoing Payments), users are…
Description of the issue/feature this PR addresses: This PR addresses an issue where, in the credit card journal configuration form (for either Incoming Payments or Outgoing Payments), users are unable to add a new payment method. Steps to reproduce the error: 1. Open the credit card journal configuration form. 2. In either Incoming Payments or Outgoing Payments, delete the default manual payment method. 3. Attempt to add either the deleted payment method or a new one. Video: https://drive.google.com/file/d/1CnghnPyfn90xIv5TZiU8PVyMatX7rGt3/view Current behavior before PR: The list view of Incoming/Outgoing payments displays a 'no record' label, and users are unable to add either the deleted payment method or a new one. Desired behavior after PR is merged: The credit card journal configuration should display all available payment methods, similar to how the bank journal behaves, allowing users to add new payment methods. I've created a related ticket here: https://www.odoo.com/es_ES/my/tasks/4501396 Thanks in advance! :) --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This fix prevents Odoo from automatically recreating accounting setup items such as accounts, taxes, and fiscal positions during localization upgrades. It helps businesses keep their existing accounting configurations intact and avoids unwanted duplicate or unexpected records after upgrading.
This fixes a visual issue where full-height cover sections could jitter while visitors scrolled on mobile browsers. Website pages with large hero or cover blocks should now feel smoother and more polished, especially on phones where the browser address bar changes size while scrolling.
Original PR description
Scenario:
- add a cover snippet with 100% height at the top of the page
- open the page on a mobile (eg. safari on iOS)
- scroll down the page
Result: there is a vertical jittering of the content of cover snippet
when going down.
Cause: we are setting the size in pixel to {viewport height} - {height
of stuff (menu, logged in user bar, ...)} but the mobile browser changes
the viewport height when going down and hiding the address bar UI, so
the fixed pixel height is only updated when the code is called again
instead of being adapted smoothly.
Fix: set the height of the cover using 100dvh minus the size of the
content, so the height is increased/decreased smoothly by the
application of CSS.
opw-4575726The Customer Lot Report now includes delivered serial numbers even when the delivery record was linked indirectly through stock movements. This improves report completeness for customer deliveries, including dropshipping cases, so businesses see a more accurate product history per partner.
Original PR description
The Customer Lot Report displays all SN delivered to a partner. To do so, the SQL query is mainly based on SML. The problem is that it only considers SML linked to a picking through the field `picking_id`. However, this field is not required and it is possible to have an SML without any value for that field, still linked to a picking through its SM (RPC, data import...) This commit therefore add a `join` on the SM, so we can find the picking in all cases. Moreover, [1] has been merged to get the customer of a dropshipping (tldr: the partner of a dropship is the supplier). However, now that we have the SM of the SML, we can simplify a lot the code and rather use the partner of the SM: https://github.com/odoo/odoo/blob/24235855d01e52df314479e0437c0308864edc23/addons/stock/models/stock_move.py#L95-L99 [1] https://github.com/odoo/odoo/commit/bace02e0355f3ed657421ca452af0b17ef4886bc OPW-4559129
Event registration confirmation emails are now translated into the language set for the related contact. This ensures attendees receive clearer, localized communication when they are booked for an event.
Original PR description
Steps to reproduce: - Install Discuss, events and contacts app - Set a partner langage to another langage - Open the event app and select an event - Select 'Attendees' in the smart buttons and click…
Steps to reproduce: - Install Discuss, events and contacts app - Set a partner langage to another langage - Open the event app and select an event - Select 'Attendees' in the smart buttons and click on New - In the 'Booked by' field, select the partner with the foreign langage - Save Current Behavior: A registration email is created but the body of the email is not translated to the language of the partner Expected Behavior: The body of the registration email should be translated in the language of the partner Cause of the issue: In order for the translation to happen inside _render_field() the variable 'equality' has to be True Link 1: https://github.com/odoo/odoo/blob/40b819ded20f769b0a63b73abfefebbdaca390df/addons/mail/models/mail_composer_mixin.py#L180 Because field is equal to 'body' the value of equality is the value of self.body_has_template_value Link 2:https://github.com/odoo/odoo/blob/40b819ded20f769b0a63b73abfefebbdaca390df/addons/mail/models/mail_composer_mixin.py#L168 self.body_has_template_value is computed by checking if the 'body' attribute of self (self is an instance of mail.compose.message) is either equal to self.template_id.body_html or tools.html_sanitize(self.template_id.body_html) Link3: https://github.com/odoo/odoo/blob/40b819ded20f769b0a63b73abfefebbdaca390df/addons/mail/models/mail_composer_mixin.py#L70 In this case, self.body has been computed using html_sanitize(self.template_id_html) Link4: https://github.com/odoo/odoo/blob/40b819ded20f769b0a63b73abfefebbdaca390df/odoo/fields.py#L2231 so self.body_has_template_value shoud be True The reason it's False is that when computing the value of self.body (Link4) the method html_sanitize is used with an argument (**sanitize_vals) which is not the case when comparing self.body to html_sanitize(self.template_id.body_html) (Link3) As a result self.body and html_sanitize(self.template_id.body_html) are not equal which makes self.body_has_template_value be False which makes equality be equal to False which makes the translation not happening Fix : Inside _compute_body_has_template_value() I made the method also return True if self.body is equal to html_sanitize(self.template_id.body_html,**sanitize_vals) with santize_vals having the same value as when self.body is computed opw-4349122
Credit card journals now show the normal payment method options when users add incoming or outgoing payment lines. This prevents users from getting stuck if the default manual payment line is removed and keeps credit card journal setup consistent with bank and cash journals.
Original PR description
**Steps to reproduce:** - Install account - Go to "Invoicing / Configuration / Accounting / Journals" - Create a "Credit Card" type journal - In "Incoming Payments" tab (or "Outgoing Payments"), try to add a line **Issue:** There is no option for "Payment Method" select field. If the default "Manual Payment" line is removed, it's not possible to add it again. **Cause:** The list of available payment methods for credit card journal is empty. The method that is computing the available payment methods is always returning False for credit card journals, but it should not. **Solution:** Compute the available payment methods normally as it is the case for bank and cash journals. opw-4754110 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This fix prevents a WhatsApp message queue from failing when a WhatsApp administrator without Marketing Automation access sends a message. It keeps other queued WhatsApp messages moving instead of leaving an entire batch blocked indefinitely.
Original PR description
When the `marketing_automation_whatsapp` module is installed, if a user **without** the "Marketing Automation / User" group but **with** the "WhatsApp / Administrator" group sends a WhatsApp message, the "WhatsApp: Send In Queue Messages" cron may crash with an access error. This happens because the system tries to access marketing traces with the user that sent the message. However, marketing traces are restricted to Marketing Automation users. As a result, all WhatsApp messages in the same batch are blocked indefinitely, even those that could otherwise be sent successfully. opw-4678339
Subscriptions made entirely of postpaid items now set their next invoice date one billing period later instead of immediately. This prevents premature invoicing and keeps billing aligned with delivered products or services.
Original PR description
…line are postpaid
This fix lets Mexican electronic invoices use the invoice date as the CFDI date when appropriate, matching what users expect to see on the PDF. It also keeps the sending timestamp stable across retries, reducing the risk of duplicate invoices after connection issues or timeouts.
Original PR description
This is a fix-of-fix. #### Explanation of the first fix Before the fix abb3194e190abae023ac2d794e631f38945d5f0d the invoice date was controlling the date that appears in the `Fecha` field of the…
This is a fix-of-fix. #### Explanation of the first fix Before the fix abb3194e190abae023ac2d794e631f38945d5f0d the invoice date was controlling the date that appears in the `Fecha` field of the CFDI, except if the invoice date was set to today or was in the future: in that case, the current time would be used. However, there would be cases where the CFDI would be successfully sent to the PAC but not registered as successfully sent in Odoo because of a timeout or disconnection. In those cases, using the current time is a problem because we will try to retry sending the CFDI to the PAC, with a new time, which would be recognised as a new invoice. To solve that issue, that fix set the Fecha to always be the `l10n_mx_edi_post_time` which is the time of posting of the invoice. However, that isn't okay for many Mexican users who expect that the CFDI date must be the same as the invoice date on the PDF (of course, except if the invoice date is in the future). #### The fix-of-fix (this PR) To solve both those issues, here is what we do: - now, the `l10n_mx_edi_post_time` is set when we first try to *send* the CFDI (rather than when we post it), and then stays the same unless the invoice is reset to draft (which ensures that if we must retry several times to resend the CFDI, the sending time won't change). - if the invoice date is older than the `l10n_mx_edi_post_time`, it will be used as the CFDI's Fecha. This ensures that users can control the Fecha using the invoice date. If the user modifies the invoice date, they will need to reset the invoice to draft, so the `l10n_mx_edi_post_time` will be reset too. task-none
Original PR description
- Updated UK localization template handling to avoid automatic recreation of accounts, taxes, and fiscal positions when upgrading. - Added `force_create = "0"` parameter to `try_loading` to ensure that existing configurations are retained and no new records are created unless explicitly required. - Fixed a similar issue for all impacted localizations, following the discussion in the previous task (https://www.odoo.com/odoo/project/967/tasks/4556250). task-4712602 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