Monday, April 14, 2025
27 changes · 18.0
New functionality added to Odoo
This change adds support for CinetPay as a new payment provider in Odoo, including the setup data, provider settings, checkout template, and transaction handling. Businesses can offer customers another online payment option, particularly useful in markets where CinetPay is commonly used.
Original PR description
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
Enhancements to existing features
This update adds tests that clarify how contact addresses should synchronize between companies, parents, children, and siblings. It helps reduce the risk of future changes accidentally altering address behavior for customers and contacts.
Original PR description
Improve coverage of address sync fields. Purpose is to make cases clearer and cover a bit more current code branches * first contact: updates void parent, not parent with address; * child sync / siblings sync: limited to one level; * invoice / delivery / other adresses are never synchronized; * no upstream update of addresses; Task-4708358 Part of Task-4377720
Resolved issues and error corrections
Pricelist reports using the DIN 5008 document layout now receive the right report context, preventing them from being mislabeled as invoices. This helps sales users produce customer-facing pricelist documents with the correct title.
Original PR description
Steps to reproduce: 1) Install sales, l10n_din5008_sale and enable pricelist from settings 2) Change the document layout to `DIN 5008` from settings 3) Open the pricelist from sales and print the pricelist report with a product Issue:- Pricelist report gets printed with "Invoice" title Cause:- This is because in the `DIN 5008` report, we print the invoice title by default if there are no `docs` or `object` values. https://github.com/odoo/odoo/blob/c80db0e6ff96ed4d8a00f01817694a4edcca6c64/addons/l10n_din5008/report/din5008_report.xml#L93 Solution: Provide the docs value to the pricelist report values. opw-4680444
Code cleanup and technical improvements
This update reworks how Odoo’s automated web tours find and act on page elements during testing. It should make website and web interface tests more predictable, reducing random failures and improving confidence in future releases.
Original PR description
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
Miscellaneous changes
There has been a recent change to the specs where they changed the endpoint to send B2C invoices: `uploadb2c`. So now, - if an invoice is made to a commercial partner that is of type company, we keep sending it to the old endpoint (no change); - if it is made to a non-company customer, then we send to the new endpoint. task-4645442 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#205720 Forward-Port-Of: odoo/odoo#203743
Original PR description
There has been a recent change to the specs where they changed the endpoint to send B2C invoices: `uploadb2c`. So now, - if an invoice is made to a commercial partner that is of type company, we keep sending it to the old endpoint (no change); - if it is made to a non-company customer, then we send to the new endpoint. task-4645442 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#205720 Forward-Port-Of: odoo/odoo#203743
Custom guided tours can now better control where help tooltips appear, making instructions clearer when default placement is awkward. The tour flow also handles dropdown loading states more reliably, reducing the chance that a guided process gets stuck.
Original PR description
Before this commit, changing the tooltip position of a custom tour was impossible. So, if the tooltip was missplaced, like when pointing at the button to return to the home. Now, the tooltip position of the step can be changed in the custom tour view and the default value is "bottom". TASK-ID: 4623449 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Point of Sale now excludes cash payments from cancelled orders when calculating the final bank statement balance. This prevents inaccurate ending balances after a session is closed and keeps cash reporting aligned with the closing cash control.
Original PR description
Before this commit, cash payments from cancelled orders were included in the total cash payments, leading to inaccurate bank statements and an incorrect ending balance after closing the session. This issue was not visible during the session closing process, as cancelled orders are correctly excluded from the closing cash control computation. opw-4654848 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Manufacturing order users with the right project permissions can now see the Project field without needing Inventory Administrator access. This fixes an access mismatch so project and manufacturing teams can link work to projects more easily.
Original PR description
Reproduce: Give user Inventory User rights > MO > Miscellaneous > Project Solution: Removed the group for Inventory Admin from the field project_id in mrp_production view Description of the issue/feature this PR addresses: The project field in an MO is only visible if you are administrator of Inventory. If you have admin rights to MRP and/or projects you can't see the field. Current behavior before PR: In MO under Miscellaneous page we can not see project field without Inventory admin group Desired behavior after PR is merged: In MO under Miscellaneous page user can see project field with group project admin only. opw-4708084
This fix stops self-ordering orders from being shared across devices unless a table is selected. It prevents customers or staff from seeing or affecting unrelated orders when table-based ordering is not in use.
Original PR description
Before this commit orders were synchronized between devices even when no table were used. This commit add a check to ensure that orders are only synchronized when a table is set. The behavior will be test after the backport of 205293
Payments now keep the bank journal chosen by the user instead of replacing it with a default payment method journal. This prevents accidental posting to the wrong journal and better reflects the user's intended accounting setup.
Original PR description
Steps to reproduce: - Create a vendor or customer payment from accounting dashboard. - Manually select a specific bank journal for the payment. - Save the record. Current behavior: - Odoo may override the selected journal with the one linked to the default payment method line, even if a specific journal was already chosen. Expected behavior: - Odoo should retain the manually selected journal and only use the default if no journal is explicitly set. This fix ensures that the payment's `journal_id` is only updated from the default method line if it is not already set, preserving user intent. opw: 4654830
Product option price add-ons now show the currency symbol from the selected website pricelist. This prevents shoppers from seeing mismatched symbols, such as dollars on a euro pricelist, improving pricing clarity during checkout.
Original PR description
Steps to reproduce : 1) Install Ecommerce 2) Open a product that has an extra price (take the customizable desk) 3) Change the pricelist to Euro (€) <b>Issue</b>:- The extra price keeps being…
Steps to reproduce : 1) Install Ecommerce 2) Open a product that has an extra price (take the customizable desk) 3) Change the pricelist to Euro (€) <b>Issue</b>:- The extra price keeps being displayed in $ even if the price is in €. <b>Cause</b>:- We displayed the monetary symbol of the extra price based on the pricelist or company currency. https://github.com/odoo/odoo/blob/99d00987aa0fba0e52a8c416e1a6a3b514b9e99a/addons/website_sale/views/variant_templates.xml#L154-L156 We don't get any pricelist value because in the below-mentioned commit, we removed the pricelist from the values that are used in the template. So it keeps displaying the company currency. https://github.com/odoo/odoo/pull/159746/files#diff-83686977d1607bdb0a3e755e9d22ec4496c1dc4caebfff4bee3902ddd1b3e866L641 <b>Solution</b>:- Since the value of the pricelist is provided from the website previously, So take the value of the pricelist from the website directly in the template. opw-4712968
This update fixes several usability issues in marketing cards and mass mailing previews. Users now see centered fullscreen previews, clearer thank-you message wording, simpler tag creation, and fewer irrelevant template actions.
Original PR description
**Before this PR:** - In a fullscreen mode, mail preview was visible only on the top half of the screen. - Traceback when changing name of the image. - 'Create and edit' option when creating a new tag. **After this PR:** - String of `reward_message` will be changed to 'Thank You Message'. - Only 'Create' option will displayed while creating a new tag. - Mail preview will be visible in the center of the screen. - 'Add to Templates' in mass_mailing preview will no longer be visible. Task-4387904
This fixes a crash that could occur when the Sales Timesheets app is used without the subscription timesheet app installed. Businesses can continue creating or processing related invoices without hitting an unexpected error from a missing parameter.
Original PR description
From this #205029 If sale_timesheet is installed standalone sale_subscription_timesheet is not installed, the get_range_dates method will crash as the parameter is not defined. TypeError: AccountMove._get_range_dates() takes 1 positional argument but 2 were given See https://github.com/odoo/odoo/pull/205816 OPW-4723777 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
Fixed a display issue where a Kanban record dropdown menu could overlap the Kanban header during scrolling. This keeps actions and headers visually separated, making Kanban boards easier to use and read.
Original PR description
Before this commit: When scrolling, the Kanban record drop-down menu overlap Kanban header. After this commit: The Kanban record drop-down menu should not overlap with the Kanban header while scrolling. Task-4686607
This fix ensures the Sales Timesheets app works correctly on its own when the subscription timesheet app is not installed. It prevents an internal error during invoice date range handling, helping users avoid interruptions in billing workflows.
Original PR description
### Currently From this https://github.com/odoo/odoo/pull/205029 if `sale_timesheet` is work standalone and not installed `sale_subscription_timesheet` then the func `_get_range_dates` still need to work aswell ### Potential Error: TypeError: AccountMove._get_range_dates() takes 1 positional argument but 2 were given ### Expected: This PR will fix this --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This fixes incorrect handling of discounts when calculating unit prices and subtotals for Argentine localization invoices. Businesses using Argentine accounting get more accurate invoice totals and tax-related amounts.
Original PR description
Fix a bug introduced by: https://github.com/odoo/odoo/pull/200117 ... making a bad handling of the discount during the computation of 'price_unit' / 'price_subtotal'. opw-4679139 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
When multiple taxes are applied to a sales order or invoice, the combined tax total is now labeled generically as "Taxes" instead of using the name of the first tax group. This avoids misleading tax summaries for customers and accounting users.
Original PR description
If you have multiple taxes on a sale order or invoice, then the total tax amount is displayed with the name of the first tax group. Rename it to show a generic "Taxes" group. This was done before for sale orders but was lost in d5da2b62263f85fbce0f2548085c066cbbf10371. opw-4673667
This fixes a crash that could occur when the timesheet sales app is used without the subscription timesheet app installed. Businesses can continue creating or processing related invoices without an unexpected error interrupting the workflow.
Original PR description
If sale_timesheet is installed standalone sale_subscription_timesheet is not installed, the get_range_dates method will crash as the parameter is not defined. TypeError: AccountMove._get_range_dates() takes 1 positional argument but 2 were given See https://github.com/odoo/odoo/pull/205816 OPW-4723777
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 t
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 Forward-Port-Of: odoo/odoo#205317
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#205565 Forward-Port-Of: odoo/odoo#200977
Before this PR, Setting the on-hand quantity from the product form would correctly set the product's quantity but also reset the inventory quantity to 0. While this behavior is correct,it caused a line decoration warning to appear in the Inventory Adjustment tree view. Steps to Reproduce =================== - Create a storable, non-tracked product. - Update its quantity by clicking the "Update Quantity" button, ensuring multi-location is disabled. - Go to Inventory Adjustment and
Original PR description
Before this PR, Setting the on-hand quantity from the product form would correctly set the product's quantity but also reset the inventory quantity to 0. While this behavior is correct,it caused a…
Before this PR, Setting the on-hand quantity from the product form would correctly set the product's quantity but also reset the inventory quantity to 0. While this behavior is correct,it caused a line decoration warning to appear in the Inventory Adjustment tree view. Steps to Reproduce =================== - Create a storable, non-tracked product. - Update its quantity by clicking the "Update Quantity" button, ensuring multi-location is disabled. - Go to Inventory Adjustment and locate the newly created product. The inventory quantity is correctly set to 0, but it is highlighted with a warning. Issue ====== Although the inventory quantity is correctly set to 0, the `inventory quantity set` field is not reverted, causing the line decoration warning to appear. This commit resolves the issue by using an existing method that clears the inventory quantity and sets the `inventory quantity set` field to false. task: [4579053](https://www.odoo.com/odoo/my-tasks/4579053) Forward-Port-Of: odoo/odoo#199598
Description of the issue/feature this PR addresses: If we try to reload the template, an error is raised. So, we will raise the error if the change has some meaning Current behavior before PR: an Error is raised when updating a German plan Desired behavior after PR is merged: no Error is raised @alialfie --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#205480
Original PR description
Description of the issue/feature this PR addresses: If we try to reload the template, an error is raised. So, we will raise the error if the change has some meaning Current behavior before PR: an Error is raised when updating a German plan Desired behavior after PR is merged: no Error is raised @alialfie --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#205480
**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#205646 Forward-Port-Of: odoo/odoo#205498
The demo product 'Drawer' was initially configured to be tracked by quantity, but a lot was incorrectly created, and the stock quant was subsequently created for the 'Drawer' with lot. Steps to reproduce =============== - Install the 'stock' module with demo data. - Navigate to Inventory > Products > Products and search for 'Drawer'. - Observe that 'Drawer' is set to track by quantity (Tracking field). - Check Inventory > Operations > Physical Inventory and locate the stock quant
Original PR description
The demo product 'Drawer' was initially configured to be tracked by quantity, but a lot was incorrectly created, and the stock quant was subsequently created for the 'Drawer' with lot. Steps to reproduce =============== - Install the 'stock' module with demo data. - Navigate to Inventory > Products > Products and search for 'Drawer'. - Observe that 'Drawer' is set to track by quantity (Tracking field). - Check Inventory > Operations > Physical Inventory and locate the stock quant for 'Drawer'. - Note that a lot exists and is linked to the product 'Drawer', despite the quantity tracking setting. This commit modifies the demo data to enable lot tracking for the product, aligning its configuration with the existing lot and stock quant data for consistency. Forward-Port-Of: odoo/odoo#204803
Before this commit, it was possible to have a `videoError` caused by (or happening during) the destruction of the video component. This error should not be retained as playing the video is no longer useful when the component is destroyed. Forward-Port-Of: odoo/odoo#204518 Forward-Port-Of: odoo/odoo#204470
Original PR description
Before this commit, it was possible to have a `videoError` caused by (or happening during) the destruction of the video component. This error should not be retained as playing the video is no longer useful when the component is destroyed. Forward-Port-Of: odoo/odoo#204518 Forward-Port-Of: odoo/odoo#204470