Tuesday, September 9, 2025
14 changes · saas-18.3
New functionality added to Odoo
The KPI summary now includes the number of documents waiting in the Inbox and clearer status information for account return types. This helps users quickly see pending document work and tax return deadlines without opening each area separately.
Original PR description
With this commit, `kpi.provider.get_kpi_summary` will show how many documents are present in the Inbox folder, as well as the status of the `account.return.types` (`late`, `longterm`, `to_do`, `to_submit` and `done`) depending on which account.return are not completed and on their due date. Task-id: 5062431 Forward-Port-Of: odoo/enterprise#93720
Enhancements to existing features
Invoice notification emails now use a cleaner, easier-to-read layout and only show invoice details when the information is available. The email also limits the number of displayed invoices and improves the action button, making messages shorter and more useful for recipients.
Original PR description
Enhances the einvoice email template for better readability and handling of missing data. - Switch table layout to a more linear view mode - Display invoice number, vendor name, date, and total only if values exist and remove values if no values are found - Use dynamic greeting to mention company name or remove placeholder if doesn't exist - Reduce maximum invoices shown to 5 to improve email length - Changed view invoices redirection button 4985307
Resolved issues and error corrections
Event, session, and sponsor searches now work correctly when a website is viewed in languages other than English. This prevents translated labels from breaking search filters, helping visitors find event content regardless of their selected language.
Original PR description
**Issue:** - After https://github.com/odoo/odoo/commit/777cb220259e1c1529b960761a6f59ec6115038e we are not able to search for event/track/sponser when we have other language selected except `en_US`.…
Vendor bill uploads now warn users when the GSTIN on the bill does not match the selected company, helping prevent bills from being recorded under the wrong entity. GSTR-2B matching also handles duplicate invoice reference numbers in draft purchase documents more smoothly, reducing blocked automated processing.
Original PR description
Use Case 1 – Bill Upload/Scan - Issue: When scanning or uploading vendor bills, system allows upload even if the bill’s GSTIN does not match the company GSTIN. This can happen when multiple companies share the same name but have different GSTINs under the same PAN. - Solution: Add a warning if the bill’s GSTIN doesn’t match the company GSTIN: *"It seems Bill’s GSTIN doesn’t match this company. Please verify before proceeding.”* Use Case 2 – Duplicate IRN in GSTR-2B Matching - Issue: Cron job gets stuck when duplicate IRN exists in both draft purchase documents and fetched GSTR-2B data. - Solution: Include draft purchase documents having IRN in the matching process for the current period, so duplicate warnings are skipped and processing continues smoothly. Task ID: 4862214
**Issue:** - After https://github.com/odoo/odoo/commit/777cb220259e1c1529b960761a6f59ec6115038e we are not able to search for event/track/sponser when we have other language selected except `en_US`. - This is because of how `search_type` attribute is set in related templates. - currently it gets translated as according to website's language, for e.g when website's language is `Spanish (AR) / Español (AR)` 'events' get translated to 'eventos' and 'track' get translated to 'sesión' - hence the parameter for search get altered, failing the search. https://github.com/odoo/odoo/blob/ac5ea3cbd075db650c8e538d59e24657a0f04bb9/addons/website/static/src/snippets/s_searchbar/000.js#L118-L121 **Step to reproduce:** - Add another language except en_US, say ,spanish - install website_event - open events from website and switch language to spanish - search for event **Observation:** - No search result **Fix:** - set the search_type attribute correctly, i.e using `t-valuef` opw-4972519 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#221877
Purchase bills in foreign currencies now calculate line balances correctly when taxes are included in the price. This prevents incorrect accounting amounts that could appear as if the wrong exchange rate was used.
Original PR description
**Steps to reproduce** - Setup a foreign currency [CUR] with rate - Create a purchase order - Add [CUR] as currency - Add an order line with price included tax - Confirm and receive - Create Bill - Check generated lines values **Issue** Balance of the move lines will be off, as if it was computed using the wrong conversion rate **Investigation** It occurs because when preparing the move values, the system add the balance calculated from the product price. This does not work for price included taxes, as the balance of the invoice line need to have the tax amount deducted opw-4954649 Forward-Port-Of: odoo/odoo#224705 Forward-Port-Of: odoo/odoo#221952
Duplicating a warehouse now correctly creates a matching Point of Sale operation type for the copied warehouse. This prevents missing setup records after warehouse duplication and keeps POS inventory operations aligned with the new warehouse.
Original PR description
## Short functional explanation of the error When duplicating a warehouse, if it has an PoS operation type, this operation type will not be duplicated. On the other hand, all other operation types…
## Short functional explanation of the error When duplicating a warehouse, if it has an PoS operation type, this operation type will not be duplicated. On the other hand, all other operation types will be duplicated. ## Reproduction Steps 1. Make sure PoS and inventory are well installed. 2. Go to inventory. 3. Click on configuration, then warehouse. 4. Select a warehouse, click on action, then duplicate. 5. Click on configuration, then on Operation Types. ### Expected behavior We should be able to see 2 instances of PoS operation type: one for the original company, and one for the copy. ### Unexpected behavior There's only one instance of PoS operation type, which is related to the original company. ## Origin of the issue PoS operation type is a model inherited from stock.warehouse, and no copy method was defined. Therefore, upon duplication, the copy method of the original stock.warehouse was called, leading to issues with the field created in the inherited version. __ opw-4991271 Forward-Port-Of: odoo/odoo#223052 Forward-Port-Of: odoo/odoo#222694
The New button in Bank Reconciliation now continues to work when a quick-create dialog is already open. Users can save a valid entry and immediately start the next one, while invalid entries show the appropriate validation message.
Original PR description
Issue: - In the Bank Reconciliation view, clicking the “New” button for the first time opens the quick create dialog correctly. - But if the dialog was already open, clicking “New” again did nothing. - This makes the button effectless and literal dead button. Fix: - If the current record is valid, it gets saved and a fresh dialog opens for the next transaction. - If not valid, it will notify the validation error. Impact: - Users can now click “New” repeatedly to add bank transaction records without having to close or reset the dialog manually. - This behavior is now consistent across all Kanban quick create views. TaskID-4974759
Vendor bills in Chile now use the standard invoice report unless they are the specific electronic purchase invoice type. This prevents customer and company details from appearing swapped on printed vendor bills, reducing confusion and document errors.
Original PR description
steps to reproduce: ------------------- 1. Install `l10n_cl`. 2. Create a new company and set Chile as the country. 3. Go to Accounting > Configuration > Journals. 4. Create a journal with type…
steps to reproduce: ------------------- 1. Install `l10n_cl`. 2. Create a new company and set Chile as the country. 3. Go to Accounting > Configuration > Journals. 4. Create a journal with type Purchase and enable Use Documents. 5. Go to Accounting > Vendors > Bills and create a bill. 6. Print Invoices / Invoices without payments. issue: ------ The customer and company data are swapped (interchanged), and It is wrong from vendor bills point of view. solution: --------- The l10n_cl reports layout should only be applied to: - out_invoice or out_refund - or when l10n_latam_document_type_id = (46) Electronic Purchase Invoice **Before:** <img width="762" height="425" alt="image" src="https://github.com/user-attachments/assets/e042485b-5d82-455f-9f34-03a0a9cdf5cc" /> **After:** <img width="770" height="624" alt="image" src="https://github.com/user-attachments/assets/c5d09e58-bcf0-48ab-a0ae-0e37c0473a67" /> opw-4937097 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#224454
Partially paid credit notes can now be sent without triggering an error in electronic invoicing. This prevents interruptions for users issuing credit notes, particularly in Colombian localization workflows.
Original PR description
When User sends the partially paid credit note, A traceback will appear. Steps to reproduce the error: - Install ``l10n_co_dian`` module with demo data and switch to CO Company - Create a Credit note > Confirm > Register a partial payment > Send > Send Traceback: ``ValueError: The following child node is not defined in the template: CreditNote/cac:PrepaidPayment`` https://github.com/odoo/odoo/blob/7136383f47f3f86bc803efaa3837f4879b211b11/addons/account_edi_ubl_cii/tools/ubl_21_credit_note.py#L26 Here, ``cac:PrepaidPayment`` node is missing in the CreditNote. So, It will raise the above traceback when sending the credit note. sentry-6814211355 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#223527
Portal users who can access a shared Knowledge article no longer see controls that they are not allowed to use, such as changing other members' rights or publishing the article publicly. This prevents confusing permission errors and ensures users who leave an article are redirected cleanly if they lose access.
Original PR description
Steps to reproduce =============== As an admin ---------------- 1. Go to knowledge 2. Open any article. 3. Add a portal user as a member with write access. As a portal user -------------------- 1. Open the shared article. 2. On the top right corner, click on members button --> List of members along with their rights will be shown. The portal user can open the dropdown to alter the rights of other members. Though doing so will raise an AccessError (in the logs). After this commit, the portal user will *no* longer see the 1. Toggle to share article to the web. 2. Dropdown to modify members' rights. Task-4863456
The WhatsApp integration now uses the latest supported Meta Graph API version. This helps avoid service disruption from older API versions being phased out and reduces the need for repeated future updates.
Original PR description
As outlines in the version [changelog] v17 of the API which we are currently using will be converted to the next oldest supported version of the API as per [policy] We can migrate directly to the latest version and avoid any issue in the next few years instead of having to worry about potentially breaking changes every few months. [changelog]: https://developers.facebook.com/docs/graph-api/changelog/versions/ [policy]: https://developers.facebook.com/docs/graph-api/guides/versioning task-4971841 Forward-Port-Of: odoo/enterprise#94110 Forward-Port-Of: odoo/enterprise#93170
German tax report XML exports now keep period decimal separators, matching the latest Elster requirements. This prevents submitted VAT return amounts from being ignored because of comma-formatted values.
Original PR description
**Steps to reproduce:** 1. Install `l10n_de_reports` module. 2. Configure a company with a valid SteuerNummer. 3. Post some vendor bills with `19% I` VAT. 4. Go to *Accounting → Reporting → Tax…
**Steps to reproduce:** 1. Install `l10n_de_reports` module. 2. Configure a company with a valid SteuerNummer. 3. Post some vendor bills with `19% I` VAT. 4. Go to *Accounting → Reporting → Tax Report*. 5. Export the report to XML from gear icon. **Observed behavior:** - The generated XML contains amounts with a comma `,` as the decimal separator. - Elster ignores values with commas, so amounts are missing from the submitted VAT return. **Root cause:** - The QWeb XML export replaced the decimal point `.` with a comma `,`. - Elster launched a new tax return application (*einfachELSTERplus*), which enforces `.` as the decimal separator. **Solution:** - Stop replacing `.` with `,` when exporting values to XML. - Keep amounts as floats with period separators, while still rounding or inverting values as required for specific Kz fields. **ref:** https://www.elster.de/eportal/helpGlobal?themaGlobal=osseust_import opw-4935738 Forward-Port-Of: odoo/enterprise#94130 Forward-Port-Of: odoo/enterprise#93623
Subscription payments made through the customer portal no longer trigger the same EDI-signed invoice to be generated twice when automatic invoicing is enabled. This avoids duplicate invoice documents and reduces confusion for customers and accounting teams.
Original PR description
Versions -------- - 18.0+ Steps ----- 1. Use a localization that uses EDI-signed invoices; 2. enable `sale.automatic_invoice` via `ir.config_parameter`; 3. pay for a subscription via the portal. Issue ----- Invoice is generated twice. Cause ----- Commit 7c5fd63729c1 added automatic EDI invoice signing for subscriptions paid via portal. This assumed that the `sale.automatic_invoice` parameter remained unset. If this parameter is set, the invoice is already generated when post-processing a transaction in `sale`. Solution -------- Don't send invoices whose `is_move_sent` field is set to `True`. Also, don't set `from_cron` to `True` on automatic payments, as this is only intended for moves that have `sending_data` filled by `account.move.send.batch.wizard`. opw-4648189 Forward-Port-Of: odoo/enterprise#93881
Website forms configured through Studio to send emails now refresh correctly when the target model is changed. This prevents submission errors in the logs and helps ensure customer or visitor messages are processed as expected.
Original PR description
Currently, an error occurs when submitting the 'Send Email' form. Steps to Reproduce: - Install the `website` and `web_studio` modules. - Go to `website` > `Click on Edit` > `Drag and drop form`. -…
Currently, an error occurs when submitting the 'Send Email' form. Steps to Reproduce: - Install the `website` and `web_studio` modules. - Go to `website` > `Click on Edit` > `Drag and drop form`. - click the form and in actions select the `more models`, and select `outgoing mails(mail.mail)` model and `save`. - `Submit` the form, and the error appears in the `logs`. **Error:** `KeyError: 'website_form_signature'` **Cause:** This error occurs when submitting the "Send Email" form from the website. By default, the form action is `"Send an E-mail"`, and when the user `changes` the form’s model to outgoing mails (mail.mail), which also has the action "Send an E-mail," the system checks the existing model [1] and retrieves it. Since `shouldRerender` is set to false, [2] is not executed, and as a result, the `email_to(hidden field)` is not present in the form. And the website_form_signature is added from [3], but due to the condition at [4], the code at [3] is not executed. When it is accessed at [5], KeyError is raised. **Fix:** This commit ensures that when the user changes the model, `rerenderXml` is executed so that the `hidden field` is also added. [1]: https://github.com/odoo/enterprise/blob/359a1c546fc9e4bc113517bf6ea912a70a9ea123/website_studio/static/src/website_form_editor.js#L155-L156 [2]: https://github.com/odoo/enterprise/blob/359a1c546fc9e4bc113517bf6ea912a70a9ea123/website_studio/static/src/website_form_editor.js#L174-L178 [3]: https://github.com/odoo/odoo/blob/82639728f2bcb4e7786f120de2aeba3f5fbab209/addons/website/tools.py#L252 [4]: https://github.com/odoo/odoo/blob/82639728f2bcb4e7786f120de2aeba3f5fbab209/addons/website/tools.py#L236 [5]: https://github.com/odoo/odoo/blob/82639728f2bcb4e7786f120de2aeba3f5fbab209/addons/website/controllers/form.py#L88 sentry-6746753251 Forward-Port-Of: odoo/enterprise#93287