Tuesday, June 10, 2025
8 changes · 18.0
Enhancements to existing features
Updates Estonia accounting localization for the VAT rate increase from 22% to 24% effective 1 July 2025. The change adds the new VAT rate to taxes and reports while keeping the old 22% rate available for historical records and past reporting.
Original PR description
Added new tax and tax group for the 24% VAT rate effective from 1 July 2025. Updated account.tax.report to include a new line for the 24% VAT rate (Line 1) to ensure backward compatibility with reports generated before 1 July 2025. Updated account.tax.report to include a new line for the 22% VAT rate (Line 1_2). Ensured automatic creation of new taxes and tax groups during module upgrade. Adjusted related tax report data and views reflect the updated VAT rate. Maintained compatibility with existing data and reports by preserving the 22% VAT rate for historical records. For technical info please see: https://www.emta.ee/en/business-client/e-services-training-courses/how-use-e-services/technical-information-services#value-added-tax-return --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
The Estonia tax reporting module now supports the KMD6 VAT return format required from 1 July 2025. This helps businesses remain compliant with Estonia's standard VAT rate increase from 22% to 24% and submit reports in the updated official format.
Original PR description
Added compatibility with Estonia tax report version KMD6 that is valid from 1. July 2025. For technical info please see: https://www.emta.ee/en/business-client/e-services-training-courses/how-use-e-services/technical-information-services#value-added-tax-return
Resolved issues and error corrections
This fixes an accounting issue where cash basis VAT entries could include incorrect base tax tags when certain taxes used complex distribution rules. The change helps ensure tax reports reflect the right amounts and categories after vendor bills are paid and reconciled.
Original PR description
Steps to reproduce:
- Have a [TAX] configured with:
- Affect Base of Subsequent Taxes: True
- Base Affected by Previous Taxes: True
- Tax Exigibility: Based on payment
- Distribution for invoices:
- Base, Tax grids: +A, +B
- 100% of tax, Tax grids: +C
- -100% of tax, Tax grids: -D, -E
- Distribution for refunds:
- Base, Tax grids: -A, -B
- 100% of tax, Tax grids: -C
- -100% of tax, Tax grids: +D, +E
- Create a BILL with [TAX]
- Create a matching Bank statement and reconcile with BILL
- Check the created Cash Basis Entry
Issue:
VAT line will feature base tags +A, +B in addition to the tax tags +C
This occurs because in the source bill 2 tax lines are created, the first one got the origin tax assigned
When the cash basis move is created the tax tags will be taken also from that tax
opw-4729298Sales quotations for foreign customers now show the product name in the customer's language, even when the salesperson edits the line description. This avoids duplicate or untranslated product names and helps customers receive clearer, usable quotation PDFs.
Original PR description
Previously, when selling a product to a foreign customer, the translated product name was stored in the order line description. However, the salesman could update this description, and if he did, the product name would be automatically included in the quotation's line description but kept hidden to ensure it appears in the final quotation PDF. Unfortunately, the product name was not translated into the partner language. This commit keeps the previous behavior with the exception that the product name included in quotations' line descriptions is now translated into the partner language. opw-4760300 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Importing product eCommerce description data now updates the intended translated text without wiping existing translations or replacing the default value. This helps teams safely maintain multilingual product pages through file imports.
Original PR description
## Version: saas-18.0+ ## Issue: Importing eCommerce translations for products erase all existing translations and set the new one as default value, whatever the user's current language is. The…
## Version:
saas-18.0+
## Issue:
Importing eCommerce translations for products erase all existing translations and set the new one as default value, whatever the user's current language is.
The `website_description` acts the same.
## Steps to reproduce:
- From the user's `Preferences`:
- Add a second language you understand;
- Translate all websites and close without switching;
- Access `Sales / Products / Products`:
- Set a product as favorite and open it:
- Under the `Sales` tab, write something in the `ECOMMERCE DESCRIPTION` field;
- Open the translation wizard by clicking the `EN` link appearing when hovering the input:
- Write anything else in the second language's input field and save;
- Come back to the general products view (*`Sales / Products / Products`*):
- Change view to list and select the favorite item (*check the case of the record line*);
- Via the `Actions` button, click on `Export`:
- Check `I want to update data (import-compatible export)`;
- From the `Available fields` list, add `eCommerce Description`;
- Open the exported file:
- Change the `description_ecommerce` content and save;
- From the general products view (*`Sales / Products / Products`*):
- Ensure no product is selected;
- Click the gear next to `Products` then `Import records`
- Click `Upload Data File` and select the exported and modified file;
- Ensure the fields are well mapped;
- Test then import data;
## Cause:
Translation method refactoring via this PR: https://github.com/odoo/odoo/pull/170779, especially `update_field_translations(field_name, {"fr_FR": {"en2": "fr2"}})`, requiring a key (`en2`) and a value (`fr2`) for a given language as a `field_name` translation. Before the fix, giving only one value erases value and key for a given `field_name`
opw-4600662Unbuilding a manufacturing order now correctly applies warehouse putaway rules to the returned component items. This prevents inventory from being recorded in the wrong shelf or location, improving stock accuracy for manufacturing operations.
Original PR description
Steps to reproduce the bug: - Create a storable product “P1”: - Update the quantity to 1 in "WH/Stock" - Create a putaway rule: - From "WH/Stock" to "WH/Stock/Shelf1" - Create a manufacturing order:…
Steps to reproduce the bug:
- Create a storable product “P1”:
- Update the quantity to 1 in "WH/Stock"
- Create a putaway rule:
- From "WH/Stock" to "WH/Stock/Shelf1"
- Create a manufacturing order:
- Select any product to produce
- Add a component:
- 1 unit of P1
- Confirm and validate the MO
- Unbuild the order
Problem:
A stock move for P1 is created from "Virtual Location/Production" to "WH/Stock/Shelf1" instead of "WH/Stock".
This happens because the `_apply_putaway_strategy` method is not called on the `stock.move.line` linked to the move.
In previous versions (e.g., v17), this issue didn't occur because the quantity was directly set on the move. This triggered a write on the `stock.move` model, which in turn called `_set_quantity`. Since no `stock.move.line` was linked at that point, a new one was created, and its quantity was set via `_set_quantity_done`, which itself called `_apply_putaway_strategy`:
- https://github.com/odoo/odoo/blob/002724506123b8160dc05cc3654cf87e49b67933/addons/mrp/models/mrp_unbuild.py#L202
- https://github.com/odoo/odoo/blob/b377e7d586f75ea8418deb498d2d551999ec5143/addons/stock/models/stock_move.py#L399
- https://github.com/odoo/odoo/blob/b377e7d586f75ea8418deb498d2d551999ec5143/addons/stock/models/stock_move.py#L384
- https://github.com/odoo/odoo/blob/b377e7d586f75ea8418deb498d2d551999ec5143/addons/stock/models/stock_move.py#L2133
This scenario used to work only when the product was untracked:
- https://github.com/odoo/odoo/blob/002724506123b8160dc05cc3654cf87e49b67933/addons/mrp/models/mrp_unbuild.py#L186
However, starting from v18, some code was refactored to clean up unnecessary conditions. The `else` block was removed, and now, regardless of the product type, the quantity is not set directly on the move anymore. Instead, a `stock.move.line` is created using `_prepare_move_line_vals`:
- https://github.com/odoo/odoo/blob/002724506123b8160dc05cc3654cf87e49b67933/addons/mrp/models/mrp_unbuild.py#L197
But `_apply_putaway_strategy` is not called in this flow.
Bug introduced in v18.0, commit:
https://github.com/odoo/odoo/commit/79d9dd7f15371aa7293a4af0b0ebd193aa80e2be
opw-4830952Emails with attachments sent to a Documents incoming address now use the company assigned to the target folder when creating the related email alias. This prevents company mismatch errors, so documents can be received correctly in folders owned by a specific company.
Original PR description
# Issue: When sending an email with an attachment to an incoming alias, if the target folder in Documents is explicitly owned by a specific company, an error occurs during alias creation: "We could…
# Issue: When sending an email with an attachment to an incoming alias, if the target folder in Documents is explicitly owned by a specific company, an error occurs during alias creation: "We could not create alias Inactive Alias because domain company1.com belongs to company YourCompany while the owner document belongs to company Company2." This issue arises because the `mail.alias.mixin.optional` model, when determining the `company_id` for the alias associated with the new document, might default to the system's company or another incorrect company, leading to a mismatch with the actual company of the explicitly-owned document folder. # Proposed solution: This commit modifies the `create` method of `mail.alias.mixin.optional` to prioritize the `company_id` of the document's target folder when setting the `company_id` for the associated alias. Specifically, within the loop where alias values are prepared: - It first attempts to retrieve the `company_id` directly from the `vals` dictionary for the current record. - If no `company_id` is explicitly provided in `vals` but a `folder_id` is present, it then checks the `company_id` of that `documents.folder`. - If the folder has an explicit `company_id`, this company is used as the effective `company_id` for the alias. - Otherwise, it falls back to the previously determined `company_id_default`. This ensures that the `company_id` used for alias domain validation aligns with the `company_id` of the document's folder, resolving the domain/owner company mismatch error. opw-4727873 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Credit and debit notes are now included in India GSTR-3B section 3.1(a), making the reported taxable sales figures more complete. This helps businesses file GST returns with totals that better reflect adjustments made through credit or debit notes.
Original PR description
In Gstr-3B section 3.1(a) credit note/debit note should be calculated. This PR adds credit note/debit note into section 3.1(a). **Older Version PR:** https://github.com/odoo/enterprise/pull/87160 **opw**-https://www.odoo.com/odoo/project/49/tasks/4845457 **Task**-4852947