Tuesday, September 9, 2025
13 changes · saas-18.2
Resolved issues and error corrections
Vendor bills in Chile now use the standard invoice report unless they are customer invoices/credit notes or the specific Electronic Purchase Invoice document type. This prevents company and vendor details from appearing in the wrong places when printing 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
Users can now send partially paid credit notes without the process failing. This prevents an error during electronic invoicing workflows, helping businesses complete credit note submissions reliably.
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
Event, session, and sponsor search now works correctly when the website is viewed in languages other than English. This prevents translated search settings from breaking results, 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`.…
**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
Invoices created for a child contact now use the parent company’s configured sending method, such as Peppol, instead of falling back to email. This prevents batch invoice sending from using the wrong delivery channel when invoicing details are stored on the main contact.
Original PR description
**Steps to reproduce** - Have a partner with Invoice Sending configured 'by Peppol' - Create a child contact for that partner - Make 2 invoices for the child contact - Select both and click 'Send' **Issue** The system will try to send invoice by mail, even if Peppol is correctly setup This occurs because when retrieving the default sending method we only look at the partner of the move, that, being a child contact, does not have invoicing info opw-4925876 Forward-Port-Of: odoo/odoo#225097
This fixes TicketBAI submissions that failed when a point of sale name created an invoice sequence longer than Spain's required 20-character limit. The system now shortens the sequence automatically, preventing confusing upload errors and reducing manual troubleshooting.
Original PR description
Before this commit, records with sequences over 20 characters will present a cryptic error when uploaded to TicketBAI. Steps to reproduce ----- 1. Create a point of sale with a name >20 characters 2. Validate an order on the POS 3. Go to Point of Sale > Orders > Your order, click "Send to TicketBAI" 4. Invalid Operation ``` 002: Fichero no cumple el esquema XSD. Detalle del error: cvc-maxLength-valid: Value 'ThisisaveryveryveryveryverylongPOSnameTEST' with length = '42' is not facet-valid with respect to maxLength '20' for type 'TextMax20Type'. ``` Issue ----- The schema for SerieFactura specifies a TextMax20Type, but the generated sequence can be over 20 characters. Solution ----- Truncate the sequence to 20 characters. opw-4750372 Forward-Port-Of: odoo/odoo#225776 Forward-Port-Of: odoo/odoo#225436
This fixes an issue where cash out receipts could show as successfully printed even though no receipt was produced when using a connected ePos hardware printer. Businesses using Point of Sale cash in/out flows can now rely on receipts being sent to the printer as expected.
Original PR description
When the printer comes form the hardware_proxy, the receipt was not printing for a cash out. Steps to reproduce: ------------------- * Connect an ePos printer * Open pos * Create and validate a cash out > Observation: Notification says 'Succesfully...' Console log says 'No printer device available...' Why the fix: ------------ Introduced by this pr: https://github.com/odoo/odoo/pull/209274 This protection wasn't working for our usecase where the device is set after this check in this call `this.printHtml(el, options)`. A hoot test will be added during fw-port in 18.3 opw-4841441 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
The Print button on confirmed purchase orders now produces the Purchase Order report instead of the Request for Quotation report. This prevents confusion and ensures buyers share the right document based on the order's current status.
Original PR description
Before this commit: ------------------------- - The 'Print' button in the Purchase Order form always triggered the RFQ report, regardless of the order state. - This caused confusion for users…
Before this commit: ------------------------- - The 'Print' button in the Purchase Order form always triggered the RFQ report, regardless of the order state. - This caused confusion for users expecting the Purchase Order report when the order was already confirmed. Steps to reproduce: ------------------------- 1. Install 'purhcase' module. 2. Confirm a purchase order (move it to the 'Purchase Order' state). 3. Click on 'Print' button . 4. Notice that the RFQ report is printed instead of the PO report. Cause of the issue ------------------------- - The print button was hardcoded to always prints the RFQ report—even for confirmed purchase orders. After this commit: ----------------------- - The system now prints the Purchase Order report when the order is confirmed. - The Print button behavior dynamically changes based on the order state - This improves user experience by ensuring the correct document is printed according to the current state of the order. Task Id: 4905350
This fixes an issue where employees could run into access errors when adding approvers to their own approval requests. It also prevents request owners from adding, editing, or deleting approvers directly, helping keep approval workflows controlled and consistent.
Original PR description
Fixed an issue happening when trying to add approvers to one's own request, and remove their ability to delete approvers from the request Task-4897775 Forward-Port-Of: odoo/enterprise#94171 Forward-Port-Of: odoo/enterprise#92309
This fix prevents subscription customers from receiving or generating the same invoice twice when paying through the portal with automatic invoicing enabled. It avoids duplicate EDI invoice processing, reducing customer confusion and administrative cleanup.
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
German DATEV exports now correctly identify the main account when a POS session contains both sales and refunds with different tax rates. This prevents missing account information in affected accounting entries and improves reliability of German reporting exports.
Original PR description
In _get_datev_account, the l10n_de_datev_main_account_id is determined by identifying a singular debit or credit account used in the journal entry. If there’s no unique account, it falls back to…
In _get_datev_account, the l10n_de_datev_main_account_id is determined by identifying a singular debit or credit account used in the journal entry. If there’s no unique account, it falls back to searching for a unique non-tax line among debit or credit lines. In POS, however, there is the possibility of generating journal entries that break this flow: - In a single POS session, add product A with tax 19% and product B with tax 7%. - In the same session, refund product A. - Close the session to generate the entries. In the resulting entry, since both sale and refund are present, it is not possible to discriminate using debit and credit amounts alone, and as a result, the field l10n_de_datev_main_account_id is not populated. Since account 1411 is always the one to be used for l10n_de_datev_main_account_id in this specific case, this commit adds a final fallback filter to select the correct line and ensure the field is populated. Ticket [link](https://www.odoo.com/odoo/project/967/tasks/4915272) opw-4915272 Forward-Port-Of: odoo/enterprise#92664
The WhatsApp integration now uses the latest supported Meta Graph API version. This helps avoid service disruptions caused by older API versions being retired and keeps WhatsApp messaging reliable for customers.
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#93170
German VAT report XML exports now keep amounts with a period as the decimal separator, matching Elster's current import requirements. This prevents submitted VAT returns from missing amounts because Elster ignored values formatted with commas.
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 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#93623
This fix prevents website forms configured to send email from failing after the form's target model is changed in Studio. It ensures the required hidden email fields are refreshed, avoiding logged errors and helping site visitors submit forms successfully.
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