Friday, April 11, 2025
21 changes · saas-17.4
Resolved issues and error corrections
A small mail interface issue was corrected so the message composer no longer applies a mobile-style border when used on desktop. This keeps the desktop messaging experience visually consistent and avoids unnecessary layout styling.
Original PR description
## Description Forward port PR #201271 missed removal of duplicated isMobileOS property in composer.js during conflict resolution. This caused `o-mobile border-bottom` class to be added to composer in desktop mode as well. This commit removes the duplicate and retains the existing property. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Fixed a visual issue in the Website editor where a link popover arrow could appear black when the site background was set to black. This keeps editing controls readable and consistent regardless of the selected theme colors, including tooltip text in edit mode.
Original PR description
Steps to reproduce the issue: - Enter Website edit mode. - Click on the "Theme" tab. - Pick a black color for the website background (4th color button). - Click on a link in the website navbar to make the link popover appear. - Bug: The popover arrow is black. Bug introduced by this commit [1], where popover colors were updated to match the website's theme. It was fixed since version 17.0 by this commit [2]. But during the forward-port to saas-17.4, the fix no longer works because of the upgrade to Bootstrap 5.3 done in this commit [3]. In this commit, we adapt the CSS code introduced by commit [2], so that it fixes the arrow color in the same way as it does in 17.0. [1]: https://github.com/odoo/odoo/commit/0d96be06faf8aad1a92183bd2b6371253980c7e6 [2]: https://github.com/odoo/odoo/commit/bf59d2aba488931ba89512d5d6489ecb48ef2aa3 [3]: https://github.com/odoo/odoo/commit/058212e12b5079eba870bde9775fe98f27928935 task-4422810
Miscellaneous changes
Previously, the round-off amount was not being included in the E-Way Bill request when sending invoices from Odoo. This caused inconsistencies between the generated invoice and the data sent to the E-Way Bill portal. This commit ensures that the round-off amount is properly accounted for in the request, maintaining consistency between the invoice and the E-Way Bill data. opw-4708955 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port
Original PR description
Previously, the round-off amount was not being included in the E-Way Bill request when sending invoices from Odoo. This caused inconsistencies between the generated invoice and the data sent to the E-Way Bill portal. This commit ensures that the round-off amount is properly accounted for in the request, maintaining consistency between the invoice and the E-Way Bill data. opw-4708955 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#205522
A problem occurs when deleting a cash rounding method linked to a Point Of Sale configuration. After deleting the cash rounding, the following error message appears: “The cash rounding strategy of the point of sale Shop must be: 'Add a rounding line'.” because the rounding method is empty. The main issue arises when the cash rounding method is deleted while the POS session is open: it prevents the session from closing or modifying the cash rounding, locking the user out. Steps to reprod
Original PR description
A problem occurs when deleting a cash rounding method linked to a Point Of Sale configuration. After deleting the cash rounding, the following error message appears: “The cash rounding strategy of the point of sale Shop must be: 'Add a rounding line'.” because the rounding method is empty. The main issue arises when the cash rounding method is deleted while the POS session is open: it prevents the session from closing or modifying the cash rounding, locking the user out. Steps to reproduce: - Add a cash rounding for a POS - Open the POS session - Delete the cash rounding - Try to enter the POS - Error occurs This fix ensures that the deleted cash rounding is no longer linked to any POS configuration. opw-4651976 Forward-Port-Of: odoo/odoo#202671 Forward-Port-Of: odoo/odoo#202477
We are switching away from Clearbit which is very unreliable. For that reason we had an autosync feature which would update IAP's data for a company based on the data provided in Odoo. Instead, we are now switching to Dun & Bradstreet which has much more reliable data. Some routes have been changed to target the new API on IAP. We continue to use Clearbit for the logos which are not provided by DnB (yet). This is a backport of https://github.com/odoo/odoo/pull/196373 where models, fi
Original PR description
We are switching away from Clearbit which is very unreliable. For that reason we had an autosync feature which would update IAP's data for a company based on the data provided in Odoo. Instead, we are now switching to Dun & Bradstreet which has much more reliable data. Some routes have been changed to target the new API on IAP. We continue to use Clearbit for the logos which are not provided by DnB (yet). This is a backport of https://github.com/odoo/odoo/pull/196373 where models, fields, views, and public methods have been kept to respect the stable policy. task-4416928 Forward-Port-Of: odoo/odoo#205350
Description of the issue/feature this PR addresses: Added my new email on the CLA 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#205479
Original PR description
Description of the issue/feature this PR addresses: Added my new email on the CLA 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#205479
Steps to reproduce: - Enter website edit mode. - Drag and drop the Tabs snippet onto the page. - Click on the third tab to activate it. - Click the minus (-) button to remove the tab. - No other tab is activated after removal, leaving the tab content area empty. This commit ensures that if a tab is removed, the next available tab is activated automatically. This commit fixes another minor issue: When the direction option is set to "vertical", the expected vertical padding was
Original PR description
Steps to reproduce: - Enter website edit mode. - Drag and drop the Tabs snippet onto the page. - Click on the third tab to activate it. - Click the minus (-) button to remove the tab. - No other tab is activated after removal, leaving the tab content area empty. This commit ensures that if a tab is removed, the next available tab is activated automatically. This commit fixes another minor issue: When the direction option is set to "vertical", the expected vertical padding was not applied due to an incorrect selector. Forward-Port-Of: odoo/odoo#204253
Versions -------- - 16.0+ Steps ----- 1. Install `website_sale_loyalty` with default configuration; 2. add a payment provider; 3. as a public user, buy a gift card via eCommerce. Issue ----- No email is sent with the gift card's code to the provided email address. Cause ----- The email template doesn't have an `email_from` field added. Without this value, it falls back on the current user, but because we're Public User, this also doesn't have an `email` value. Additionally,
Original PR description
Versions -------- - 16.0+ Steps ----- 1. Install `website_sale_loyalty` with default configuration; 2. add a payment provider; 3. as a public user, buy a gift card via eCommerce. Issue ----- No email is sent with the gift card's code to the provided email address. Cause ----- The email template doesn't have an `email_from` field added. Without this value, it falls back on the current user, but because we're Public User, this also doesn't have an `email` value. Additionally, if the order gets confirmed as a portal user, the email will be sent from the client's email address. Solution -------- Add a `_get_mail_author` hook to `loyalty.card`, which can be used when an email template lacks an `email_from` value. Mail author precedence for cards without an order: - current internal user > card's company > current company Mail author precedence for cards with an order: - salesperson > order's company opw-4687107 Forward-Port-Of: odoo/odoo#204644
Problem --------- As of Jan 01, 2025 the Romanian tax authority will accept blank tax IDs for recipient individuals of an e-invoice in the form "0000000000000". However, in Odoo a blank tax id number for an individual contact is denoted as '/'. Objective --------- When creating the Invoice XML, if the res.partner has an empty Tax ID, or a tax ID that is "/" or <2 characters, replace the value by 0000000000000 in the produced XML. task-4610149 --- I confirm I have signed the CLA a
Original PR description
Problem --------- As of Jan 01, 2025 the Romanian tax authority will accept blank tax IDs for recipient individuals of an e-invoice in the form "0000000000000". However, in Odoo a blank tax id number for an individual contact is denoted as '/'. Objective --------- When creating the Invoice XML, if the res.partner has an empty Tax ID, or a tax ID that is "/" or <2 characters, replace the value by 0000000000000 in the produced XML. task-4610149 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#200977
Steps to reproduce: (This are for this specific case) 1. Get website_appointment_sale and a 2nd language for our website. 2. Make sure that for the appointment we select Allow Guests. 3. Now, we go to the website and go to the appointment, until we reach the "Add more details about you" page. 4. Here is when we have to try to modify the translation with editor. Issue: We're receiving an error as "Cannot read properties of null (reading '2')" which arises from the `trans` not being a
Original PR description
Steps to reproduce: (This are for this specific case) 1. Get website_appointment_sale and a 2nd language for our website. 2. Make sure that for the appointment we select Allow Guests. 3. Now, we go to the website and go to the appointment, until we reach the "Add more details about you" page. 4. Here is when we have to try to modify the translation with editor. Issue: We're receiving an error as "Cannot read properties of null (reading '2')" which arises from the `trans` not being appropiate due to the translation regex, which will cause the match to be null when calling it on this "defective" `trans`. Solution: The current solution will make the regex to better match anything in the translation, by modifying `(.*)` to ([\s\S]*?) we make sure that we're matching any character, including new lines. opw-4442038 Forward-Port-Of: odoo/odoo#194416
Currently, an error occurs when opening a website cart if its `Payment method` record has been deleted. This results in preventing the user from accessing the cart. **Steps to produce:** - Install the `website_sale` module. - Navigate to `Website / Configuration / eCommerce / Payment Methods`. - Delete method `name: Payment method`. - Add the product to the cart and then open it. - Observe the error. **Error:** `ValueError: External ID not found in the system: payment.payment_method_
Original PR description
Currently, an error occurs when opening a website cart if its `Payment method` record has been deleted. This results in preventing the user from accessing the cart. **Steps to produce:** - Install…
Currently, an error occurs when opening a website cart if its `Payment method` record has been deleted. This results in preventing the user from accessing the cart. **Steps to produce:** - Install the `website_sale` module. - Navigate to `Website / Configuration / eCommerce / Payment Methods`. - Delete method `name: Payment method`. - Add the product to the cart and then open it. - Observe the error. **Error:** `ValueError: External ID not found in the system: payment.payment_method_unknown` The error occurs because the system attempts to access id of the payment method `payment.payment_method_unknown` at [1], but it is unavailable as the user has already deleted it. This commit adds validation to prevent deletion of the `payment_method_unknown`. [1] - https://github.com/odoo/odoo/blob/1c896c5da71b58b382269fe6cca556f4a61e4d5d/addons/website_sale/controllers/main.py#L1714 Sentry - 6177955401 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#198728
**Current behavior:** Using auto valuation and anglo saxon accounting, when a project has some profitability report items for auto valued product, the COGS invoice lines will appear under the revenue section rather than the cost section of the project's profitability report. **Expected behavior:** COGS lines are shown as costs. **Steps to reproduce:** 1. Create a service product that generates a project on sale, on the project template set a specific analytic account 2. Create anothe
Original PR description
**Current behavior:** Using auto valuation and anglo saxon accounting, when a project has some profitability report items for auto valued product, the COGS invoice lines will appear under the revenue…
**Current behavior:** Using auto valuation and anglo saxon accounting, when a project has some profitability report items for auto valued product, the COGS invoice lines will appear under the revenue section rather than the cost section of the project's profitability report. **Expected behavior:** COGS lines are shown as costs. **Steps to reproduce:** 1. Create a service product that generates a project on sale, on the project template set a specific analytic account 2. Create another product with real time valuation and assign the COGS account on the product category's expense account 3. Sell some of the service product and the auto val product in the same order, deliver it -> generate invoice & post it 4. In the project's settings, open the profitability report observe that the invoice line for the cost of goods sold account entry is displayed as a negative revenue, rather than a cost **Cause of the issue:** In `sale_project` there is no logic to separate the COGS AMLs from the rest of an invoice's line ids. **Fix:** Transform the loop in `_get_revenues_items_from_invoices` https://github.com/odoo/odoo/blob/bb6a4fbb92b1a1a1e13e32b27c4c9f2813570fda/addons/sale_project/models/project.py#L656 into two loops such that the existing one iterates twice. First iteration collects the `revenues` items data (exactly as it currently does) Second iteration collects the `costs` items (cogs lines) And the method will now return a dict of data for both `revenues` report items and `costs` report items (and should be renamed/refactored in master) opw-4652472 Forward-Port-Of: odoo/odoo#203936
[REF] web: move default dates to a function - getAllDayDates function was added to be able to inherit it in other modules and change default dates if needed. task-4164485 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#189917
Original PR description
[REF] web: move default dates to a function - getAllDayDates function was added to be able to inherit it in other modules and change default dates if needed. task-4164485 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#189917
Since https://github.com/odoo/odoo/pull/143233, when we group by a many2many, the `__domain` of the Falsy group for records that don't have any many2many values) is expressed with `[('many2many', 'not in', <other group values>)]`. We did this because the ORM bypasses the 'ir.rule' for checking this type of domain: `[('many2many', '=', False)]` and changing this semantic is impossible in stable (and even hard to change in master). Unfortunately, this fix is not correct when the read_group() li
Original PR description
Since https://github.com/odoo/odoo/pull/143233, when we group by a many2many, the `__domain` of the Falsy group for records that don't have any many2many values) is expressed with `[('many2many', 'not in', <other group values>)]`. We did this because the ORM bypasses the 'ir.rule' for checking this type of domain: `[('many2many', '=', False)]` and changing this semantic is impossible in stable (and even hard to change in master).
Unfortunately, this fix is not correct when the read_group() limit is reached. In fact, the right part of the domain doesn't contain ids of many2many, which are filtered out by the limit.
Instead, use `[('many2many', 'not any', [])]` as the domain for the False group. Note that this may decrease the performance of the generated search because it will have to check ir.rule in the comodel and will generate more complex queries.
opw-4577443
Forward-Port-Of: odoo/odoo#205030**Steps to reproduce:** - Install Accounting - Go to "Accounting / Vendors / Bills" - Upload a PDF having an embedded factur-x XML with no tax or a tax that doesn't exist in the database **Issue:** The bill generated from the embedded XML has the default purchase tax set on it. **Cause:** At the beginning of the process, an empty account move is created and then it is populated with the data retrieved from the XML. At the creation of the account move, the default tax is set. When the
Original PR description
**Steps to reproduce:** - Install Accounting - Go to "Accounting / Vendors / Bills" - Upload a PDF having an embedded factur-x XML with no tax or a tax that doesn't exist in the database **Issue:** The bill generated from the embedded XML has the default purchase tax set on it. **Cause:** At the beginning of the process, an empty account move is created and then it is populated with the data retrieved from the XML. At the creation of the account move, the default tax is set. When the taxes are populated, if there is no tax or if it doesn't exist, "tax_ids" fields of the account move line is set to the empty list (i.e. []). However, if "tax_ids" has already a value (e.g. the default tax), setting it to `[]` will not remove it, unlike `False`. opw-4600822 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#205616 Forward-Port-Of: odoo/odoo#205498
The missing break was duplicating the file_data. For example, the PDF was there in PDF but also in binary. opw-4510745 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#205328
Original PR description
The missing break was duplicating the file_data. For example, the PDF was there in PDF but also in binary. opw-4510745 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#205328
Steps to Reproduce (Calendar View): 1. Open the Calendar view on the monthly scale. 2. Create a planning slot by clicking on a date to plan. 3. Notice that the default hours are set to 7 AM to 7 PM. Steps to Reproduce (Gantt View): 1. Open the Gantt view on the weekly scale. 2. Create a planning slot by clicking on a grid cell. 3. Observe that the default hours are set to 8 AM to 5 PM. - In the Calendar view on the monthly scale, creating a planning slot defaults to 7 AM to 7 PM.
Original PR description
Steps to Reproduce (Calendar View): 1. Open the Calendar view on the monthly scale. 2. Create a planning slot by clicking on a date to plan. 3. Notice that the default hours are set to 7 AM to 7 PM. Steps to Reproduce (Gantt View): 1. Open the Gantt view on the weekly scale. 2. Create a planning slot by clicking on a grid cell. 3. Observe that the default hours are set to 8 AM to 5 PM. - In the Calendar view on the monthly scale, creating a planning slot defaults to 7 AM to 7 PM. - In the Gantt view on the weekly scale, creating a planning slot defaults to 8 AM to 5 PM. - These default hours do not align with the working calendar, leading to inconsistencies. - This fix adjusts the default hour settings in both views to ensure they align with the working calendar and account for unavailability. task-4164485 Forward-Port-Of: odoo/enterprise#69888
Steps to reproduce: - install helpdesk_timesheet - Go to `Timesheets` - Select ticket-linked timesheets only. - print report. Issue: - Tickets names are not rendered on the report, causing misalignment. Fix: - Updated condition to display table cell based on task, project, or ticket visibility task-4476391 Forward-Port-Of: odoo/enterprise#79546
Original PR description
Steps to reproduce: - install helpdesk_timesheet - Go to `Timesheets` - Select ticket-linked timesheets only. - print report. Issue: - Tickets names are not rendered on the report, causing misalignment. Fix: - Updated condition to display table cell based on task, project, or ticket visibility task-4476391 Forward-Port-Of: odoo/enterprise#79546
… by making lambda selection Forward-Port-Of: odoo/enterprise#83146
Original PR description
… by making lambda selection Forward-Port-Of: odoo/enterprise#83146
…ner autocomplete provider We are switching away from Clearbit which is very unreliable. For that reason we had an autosync feature which would update IAP's data for a company based on the data provided in Odoo. Instead, we are now switching to Dun & Bradstreet which has much more reliable data. Some routes have been changed to target the new API on IAP. We continue to use Clearbit for the logos which are not provided by DnB (yet). This is a backport of https://github.com/odoo/odo
Original PR description
…ner autocomplete provider We are switching away from Clearbit which is very unreliable. For that reason we had an autosync feature which would update IAP's data for a company based on the data provided in Odoo. Instead, we are now switching to Dun & Bradstreet which has much more reliable data. Some routes have been changed to target the new API on IAP. We continue to use Clearbit for the logos which are not provided by DnB (yet). This is a backport of https://github.com/odoo/odoo/pull/196373 where models, fields, views, and public methods have been kept to respect the stable policy. task-4416928 Forward-Port-Of: odoo/enterprise#83147
In 120e0bb7b82a3628caa468af5a6fa3b6730d6485, we went a bit too fast regarding the QR code scan for bills in India. This commit fixes this by calling the `enrich_by_gst` on the right model and discarding useless fields. task-none Forward-Port-Of: odoo/enterprise#83204
Original PR description
In 120e0bb7b82a3628caa468af5a6fa3b6730d6485, we went a bit too fast regarding the QR code scan for bills in India. This commit fixes this by calling the `enrich_by_gst` on the right model and discarding useless fields. task-none Forward-Port-Of: odoo/enterprise#83204