Friday, September 27, 2024
22 changes · 17.0
Enhancements to existing features
The payment form now includes a built-in area where localization-specific sections can be added when needed. This helps country-specific accounting extensions adapt the form more reliably without changing what users see when no extra sections are present.
Original PR description
Adding pages to a notebook is required in a few l10n, so providing it by default will help avoid issues when adding pages. An empty notebook does not show, so it should be fine to have it there. Task id # 3639230 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Resolved issues and error corrections
This fix restores the message and activity panel on Italian Declaration of Intent forms. Users can once again view and use the form discussion history, improving traceability for this document workflow.
Original PR description
before this commit, in the view_l10n_it_edi_doi_form view the chatter is added/defined in the unsupported/invalid syntax(which is supported in master) and thus the chatter is missing in the form view after this commit, the chatter will be shown in the corresponding form view --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Code cleanup and technical improvements
This update adds a customization hook to the Field Service Sales module, allowing businesses to modify sale order values during creation without complex workarounds. This makes it easier for companies to extend the system with custom business logic when creating sale orders from field service tasks.
Original PR description
before this commit, if user need to pass any different value to the sale order creation, there is no direct hook available to do the same after this commit, this hook can be used to pass any value or to modify any existing value passed to the create method
Documentation and clarification updates
This update records that contributor mavi-tux has signed Odoo's Contributor License Agreement. It supports legal compliance for accepting contributions and does not affect product functionality.
Original PR description
Signature of CLA Odoo I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Miscellaneous changes
### Steps to reproduce 1. Install `l10n_se`. 2. Switch to a Swedish company. 3. Create and confirm a vendor bill with a price of 200, applying the preconfigured 25% purchase tax. 4. Create and confirm a customer invoice with a price of 200, applying the preconfigured 25% sales tax. 5. Open the tax report. ### Expected behavior - Fält 48 (Input VAT) = 50 - Fält 49 (Output VAT - Input VAT) = 50 - 50 = 0 ### Issue - Input VAT is incorrectly negated, resulting in Fält 48 = -50.
Original PR description
### Steps to reproduce 1. Install `l10n_se`. 2. Switch to a Swedish company. 3. Create and confirm a vendor bill with a price of 200, applying the preconfigured 25% purchase tax. 4. Create and confirm a customer invoice with a price of 200, applying the preconfigured 25% sales tax. 5. Open the tax report. ### Expected behavior - Fält 48 (Input VAT) = 50 - Fält 49 (Output VAT - Input VAT) = 50 - 50 = 0 ### Issue - Input VAT is incorrectly negated, resulting in Fält 48 = -50. - Consequently, Fält 49 is incorrectly calculated as 50 - (-50) = 100. - Additionally, the total for Block G does not match the value in Fält 49. opw-4008171 Enterprise PR: odoo/enterprise#70844 Forward-Port-Of: odoo/odoo#181747
This change fixes an internal validation issue in the Peppol accounting module that could cause automated quality checks to fail. It helps keep the module stable and ready for deployment without changing business workflows.
Original PR description
AssertionError: pylint test failed: `Undefined variable 'res' (E0602) at odoo/addons/account_peppol/models/res_company.py:22` 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
This update corrects how accounting attachments are created after posting, ensuring the system passes information correctly to the underlying process. It helps prevent internal errors or inconsistent behavior when accounting documents generate related attachments.
Original PR description
- Corrected the `_post_add_create` method to ensure arguments are passed correctly when calling the parent method. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This fix ensures appraisal feedback submissions respect their deadline before checking whether the respondent is the expected user. It helps prevent misleading access errors and makes deadline handling more reliable in appraisal surveys.
Original PR description
in appraisal, the method `_check_validity` is overriden to make different checks in case of `answer_wrong_user`, to make sure that all the checks are OK before handling `answer_wrong_user` case the deadline check should be done before the user check. opw-4128638 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
The onboarding walkthrough for Email Marketing has been corrected so users can follow the guided setup without running into issues. This helps new or returning users get started more smoothly and reduces friction during campaign setup.
Original PR description
Fixing On-boarding Tours Task-4210376
The project overview now excludes subtasks from the task count when those subtasks are not shown in the project task list. This prevents users from seeing a higher task count than the number of tasks they can actually open from the project kanban view.
Original PR description
### Steps to reproduce: - Create a project - Create a task in this project and add a subtask for this task - Navigate to the kanban view for projects - Notice that the count of tasks shows 2 but you will just see only one task when clicking on this project ### Current behavior before PR: This is happening because when calculating the count of tasks we are just considering the tasks that has that project_id without checking anything else. https://github.com/odoo/odoo/blob/17.0/addons/project/models/project_project.py#L56:L62 But when showing the tasks we are just showing the main tasks not the sub-tasks. ### Desired behavior after PR is merged: We are now checking if this task should be displayed or not and if it won't be displayed we don't count it. This is a backport of [commit](https://github.com/odoo/odoo/pull/160476/commits/1fc1f6f54ebadcda1ef090e1f73a05be85373c03) opw-4201309
The website module now clearly declares the location lookup library it relies on during frontend page visits. This prevents errors for new website visitors when the system tries to infer timezone or location information.
Original PR description
While the requirements contain `geoip2`, it's used as an optional dependency e.g. `http.py` imports it conditionally and as long as `request.geoip` is not accessed it causes no trouble. However `website` does exactly this right in the `_frontend_pre_dispatch`, it's technically conditional but the conditions are: - a frontend page (not an explicit route and not an attachment) - no tz in the context (which is very likely for new frontend session)
A previous fix for Spanish point-of-sale invoicing has been relocated to the Spanish Facturae e-invoicing module, where it belongs. This keeps the correction available in the proper part of Odoo and reduces the risk of inconsistent behavior between installed Spanish localization apps.
Original PR description
This commit juste move the code from this PR https://github.com/odoo/odoo/pull/179107 from l10n_es_pos to l10n_es_edi_facturae. opw-4074779
When creating a quotation without a customer language available, the default terms and conditions now appear in the current user's language instead of falling back to English. This helps sales teams see customer documents in the expected language from the start, especially in multilingual environments.
Original PR description
Problem: When creating a sale order without selecting a partner or if the partner has no language set, the note field displays the default terms in English, regardless of the user's language. It should display the note in the current user's language instead. Steps to reproduce: - Add default terms and conditions in both English and Arabic. - Change the user language to Arabic. - Create a new quotation without selecting a partner. - The note is displayed in English, but it should be in Arabic as per the user’s language while no partner selected yet. opw-4176183 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
The Social app onboarding tour now correctly continues after a user writes a message. This helps new users complete guided setup without getting blocked by a broken tour step.
Original PR description
Fixing On-boarding Tours Task-4210376
This update aligns the Swedish tax reporting module's tests with recent changes made in the main Odoo community version. The tests have been updated to ensure they continue to work correctly with the latest tax report functionality, maintaining compatibility between the enterprise and community versions.
Original PR description
Community PR: odoo/odoo#181747 Forward-Port-Of: odoo/enterprise#70844
Currently when invoicing through pos, multiple values related to price discounts are incorrect. Steps to reproduce: ------------------- * Go to the **Point of sale** app * Under **Configuration**, select **Settings** * Enable **Flexible Pricelists** * Select **Advanced price rules** * Create a pricelist, 10% discount on all products, visible on the invoice * Go to the **Products list** * Select any product and apply a tax (price excl) * Open shop session * Select the product with th
Original PR description
Currently when invoicing through pos, multiple values related to price discounts are incorrect. Steps to reproduce: ------------------- * Go to the **Point of sale** app * Under **Configuration**,…
Currently when invoicing through pos, multiple values related to price discounts are incorrect. Steps to reproduce: ------------------- * Go to the **Point of sale** app * Under **Configuration**, select **Settings** * Enable **Flexible Pricelists** * Select **Advanced price rules** * Create a pricelist, 10% discount on all products, visible on the invoice * Go to the **Products list** * Select any product and apply a tax (price excl) * Open shop session * Select the product with the tax * Pay and invoice it > Observation: In some cases the line "Price discounted from" does not appear on the invoice. And when it appears, values are not correct. If you also plied a discount on the product line in addition to the pricelist, values are completely mixed. Why the fix: ------------ We see that we are curently comparing `line.price_subtotal_incl` with `line.product_id.lst_price * line.qty`. https://github.com/odoo/odoo/blob/b49159db74cf4c8212a7bd3dfe551eb852df99f3/addons/point_of_sale/models/pos_order.py#L213-L219 To simplify, we consider a quantity of 1. * `line.price_subtotal_incl` includes discounts (order line discounts and pricelist) and always represent a price with taxes included. * `line.product_id.lst_price` reprensents the price set on the prodcut form. It does not account for any sort of discount. If the tax applied on the product is tax excl(resp. incl) it will be a price tex excl(resp. incl). In the case where the pricelist discount is smaller than the tax amount, for products with tax excl, the `line.price_subtotal_incl` will still be greater than `line.product_id.lst_price` and that's why the invoice does not have the line "Price discounted from". I asked MOBT the behavior expected. For the line "Price discounted from", this should only reflect discounts related to pricelist, and should represent the price tax excl/incl depending on the tax set up on the product page. Line discounts are already reflected on the invoice with `Disc.%`. We choose to compare two values that reflect the same price tax configuration. We compare `line.product_id.lst_price` with `line.price_unit` as both will be tax excl(resp. incl) if the tax applied on the product is tax excl(resp. incl). We also remove the `line.qty` as both represent a price per qty. opw-4170357 Forward-Port-Of: odoo/odoo#181007
# Context: A pesky bug has been flying under the radar since at least Odoo 15.0. When passing `email_from=False` to the _find_mail_server, we will always have an early return at: https://github.com/odoo/odoo/blob/f05626e14264cf3bb477c86ad82439726d778c8f/odoo/addons/base/models/ir_mail_server.py#L668C1-L676C1 This comes from the fact that we can generate False == False => True comparisons while filtering the `ir.mail.server` records, by : * `email_from_normalize` is False (since `email_f
Original PR description
# Context: A pesky bug has been flying under the radar since at least Odoo 15.0. When passing `email_from=False` to the _find_mail_server, we will always have an early return at:…
# Context: A pesky bug has been flying under the radar since at least Odoo 15.0. When passing `email_from=False` to the _find_mail_server, we will always have an early return at: https://github.com/odoo/odoo/blob/f05626e14264cf3bb477c86ad82439726d778c8f/odoo/addons/base/models/ir_mail_server.py#L668C1-L676C1 This comes from the fact that we can generate False == False => True comparisons while filtering the `ir.mail.server` records, by : * `email_from_normalize` is False (since `email_from` was also False) and mail server has no from_filter = > email_normalize(m.from_filter) == email_from_normalized => False == False * `email_from_domain` is False (since `email_from` was also False) and mail server has a full email address in the from_filter field => email_domain_normalize(m.from_filter) == email_from_domain => False == False Both edge-cases leads to the first email server config to always be selected for the SMTP connection, even if a valid mail server exist matching for example the default notification email (i.e. notifications@custom.domain). This can lead to notification emails failing on DB having multiple outgoing email servers setup, where the SMTP server does sender verification (Outlook, Gmail – you can only send as a specific sender email). Should impact Odoo versions 15 and later. # Proposed fix: We wrap the first checkpoint in an if block with email_from. Logically if email_from is already False, we should skip to the second checkpoint (matching notifications default email) and only later try to fall back to the first `ir.mail.server` record (while also triggering the warning log). # How to reproduce: Any workflow triggering an automatic notification email as Odoobot, while having the `email` field set to `False`. 1) Setup DB with website_sale installed 2) Set `email` field of Odoobot `res.partner` (by default id = 2) to False 3) Setup at least two outgoing email servers (`ir.mail.server`) with the first having no `from_filter` and the second one matching the default notifications email address (default = notifications@mycompany.example.com) 4) So to the Ecommerce shop and buy any random product and finalizing the transaction. → Triggered notification email will always be sent by mail server id = 1, even if it should match id = 2 in this case OPW-4140192 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#178340
This commit removes unnecessary whitespace in the localization files. No functional changes have been introduced, only whitespace adjustments. #169577 Forward-Port-Of: odoo/odoo#179975
Original PR description
This commit removes unnecessary whitespace in the localization files. No functional changes have been introduced, only whitespace adjustments. #169577 Forward-Port-Of: odoo/odoo#179975
The task description of a task generated after receiving an email from an email alias should be the body of the email (from the message thread). We differentiate this case from the case where the task is generated in another way (e.g. manually or triggered by another module), in which we should not populate the task description. related-https://github.com/odoo/odoo/pull/108360 task-4207145 version-16.0 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/subm
Original PR description
The task description of a task generated after receiving an email from an email alias should be the body of the email (from the message thread). We differentiate this case from the case where the task is generated in another way (e.g. manually or triggered by another module), in which we should not populate the task description. related-https://github.com/odoo/odoo/pull/108360 task-4207145 version-16.0 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#181572
Steps to reproduce: - (16.0 only) Project > Configuration > Settings > Enable 'Sub-tasks' - Project > New > Add 2 Stages and a Task - Click the task > Sub-tasks tab > Create a subtask - Go back to the project's task view - Delete the 2nd stage The sub-tasks are now visbile when they should not be. This is because we reload the view after stage deletion, with an action that does not contain display_project_id (16.0) / display_in_project (>= 17.0) in its domain. opw-4191732 --- I co
Original PR description
Steps to reproduce: - (16.0 only) Project > Configuration > Settings > Enable 'Sub-tasks' - Project > New > Add 2 Stages and a Task - Click the task > Sub-tasks tab > Create a subtask - Go back to the project's task view - Delete the 2nd stage The sub-tasks are now visbile when they should not be. This is because we reload the view after stage deletion, with an action that does not contain display_project_id (16.0) / display_in_project (>= 17.0) in its domain. opw-4191732 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#180753
[Real Decreto-ley 4/2024] of June 26, 2024 introduces some changes to the tax rates to address the economic and social consequences arising from the conflicts in Ukraine and the Middle East. The VAT reductions of 5% (pasta and seed oils) and 0% (basic foodstuffs and olive oils) previously introduced will be increased to 7.5% and 2%, respectively, starting on October 1, 2024. The rates of the equivalence surcharge applicable to these products will increase from 0.6% and 0%, to 1% and 0.26%,
Original PR description
[Real Decreto-ley 4/2024] of June 26, 2024 introduces some changes to the tax rates to address the economic and social consequences arising from the conflicts in Ukraine and the Middle East. The VAT reductions of 5% (pasta and seed oils) and 0% (basic foodstuffs and olive oils) previously introduced will be increased to 7.5% and 2%, respectively, starting on October 1, 2024. The rates of the equivalence surcharge applicable to these products will increase from 0.6% and 0%, to 1% and 0.26%, respectively. An upgrade script is provided that automatically disables the deprecated VAT of 5% and Rec. Eq. of 0.62% when upgrading the `l10n_es` module. [Real Decreto-ley 4/2024]: https://www.boe.es/buscar/act.php?id=BOE-A-2024-12944 [task-4147046](https://www.odoo.com/odoo/all-tasks/4147046) Related to https://github.com/odoo/enterprise/pull/69736 Forward-Port-Of: odoo/odoo#180812 Forward-Port-Of: odoo/odoo#179797
Journals passed in journal_dict weren't actually created. Credits to Roy Le @ Viindoo, original PR: odoo/odoo#134446 Forward-Port-Of: odoo/odoo#181606
Original PR description
Journals passed in journal_dict weren't actually created. Credits to Roy Le @ Viindoo, original PR: odoo/odoo#134446 Forward-Port-Of: odoo/odoo#181606