Daily updates from Odoo
Navigate
Branch
Wednesday, May 28, 2025
46 changes
25 changes
New functionality added to Odoo
Survey users can now use AI assistance when writing invitation emails. This makes it easier to draft clear email content directly from the survey invite wizard, saving time and improving communication.
Original PR description
add bridge module between ai and survey add the ai button in survey invite wizard footer users can now leverage AI to generate email body text within the survey invite wizard task-4735348
Enhancements to existing features
The update tightens internal checks so certain business rule constraints must use clear, valid names. This helps prevent configuration or upgrade issues in HR and payroll-related modules without changing day-to-day user workflows.
Original PR description
odoo/odoo#211222
The Indian payroll payment advice report now shows the final total in words and includes the cheque date alongside the cheque number. The payment advice wording was also updated, making the report easier to read and reference for payroll and banking processes.
Original PR description
- Added final total in words on the advice report. - Included cheque date after the cheque number for better reference. - Updated advice sentence. task-4652034
Point of sale blackbox communication now uses a more flexible connection method that can fall back to websockets when long polling is unavailable. This improves reliability for Belgian fiscal devices and helps reduce connection interruptions during checkout.
Original PR description
We updated the way of contacting the blackbox by using the `iot_http` service instead of the `iot_longpolling` one : this allows using the websocket as a fallback to the longpolling. Community PR: odoo/odoo#212050 Task: 4824066
Belgian point of sale configurations using a blackbox are now easier to start and keep compliant. The system prompts users for missing national identification details, syncs those details between linked user and employee records, and automatically applies required rounding, receipt printing, preview, and fiscal category settings.
Original PR description
This commit introduces an easier user experience to start with the blackbox.
Changes:
- If no insz or bis number when opening a certified session, it opens a modal for the user to add it to its account.
- If an employee is linked to a user, a change of insz or bis number in one of the two will update the field in the other.
- When linking a blackbox to a config, it will automatically create a rounding method (the classic belgian one) and link it to the config.
- Automatic Receipt Printing and skip preview screen are checked by default when using a config with a blackbox.
- Fiscal data category is now always in the limited categories when using a blackbox.
task-id: 4643331
Community PR: https://github.com/odoo/odoo/pull/206237Refunds in Point of Sale are now consistently handled as floating, open orders across affected localization and compliance modules. This aligns enterprise add-ons with the updated refund flow, helping reduce inconsistencies during refunds and invoicing.
Original PR description
This commit adapts the enterprise modules to the new behavior of the refund flow.
Marc Demo's access rights have been restored across service-related demo data. This helps demo environments work as expected for helpdesk, field service, and planning scenarios.
Resolved issues and error corrections
This update keeps the AI assistant feature compatible with recent platform changes by using the new content-selection method. It helps avoid failures when users interact with selected page content through the AI tool.
Original PR description
Community PR: https://github.com/odoo/odoo/pull/209228 The Community side of this PR removes `getTraversedNodes` and `getSelectedNodes` and replaces them with `getTargetedNodes`. This accordingly replaces a call to `getTraversedNodes` with one to `getTargetedNodes`. task-4809282
Features or functions removed from Odoo
An outdated rental configurator test module was removed because rental products no longer use this configurator. Existing tests in the main rental sales modules now cover the relevant behavior, reducing duplicate maintenance work without affecting users.
Original PR description
Rental doesn't have a configurator anymore since 17, there is no need for a specific module to test integration with other configurators. Furthermore, the refactorings of the configurators already introduced clean tests in `sale_renting` (and `website_sale_renting`) modules, so there is no need to keep the tour of this module.
Code cleanup and technical improvements
This update standardizes internal VoIP data field names so they match the naming used elsewhere in Odoo. It supports an underlying platform cleanup by removing reliance on an older renaming mechanism, with no intended change to daily VoIP behavior.
Original PR description
The discuss team maintaining the `Store` code is getting rid of the `rename` feature. So, this pr updates the code of the VoIP JS models to use the same naming convention as the python code. Task-4801651
This update tidies the internal setup files for Odoo Subscriptions by improving file organization, clarifying menu structure, and removing duplicate definitions. It should make future maintenance easier without changing day-to-day subscription workflows for users.
Miscellaneous changes
**Issue:** In a swiss company, when a user clicks on "Prepare Data" for a salary certificate rectification, an error occurs. **Steps to reproduce:** - make sure l10n_ch_hr_payroll_elm_transmission is installed and you're in a swiss company - Payroll > Transmission > Salary Certificate Rectification - create a new declaration and fill the form with a newly created previous declaration - click on "Prepare Data" A traceback is raised opw-4687938 Forward-Port-Of: odoo/enterprise#832
Original PR description
**Issue:** In a swiss company, when a user clicks on "Prepare Data" for a salary certificate rectification, an error occurs. **Steps to reproduce:** - make sure l10n_ch_hr_payroll_elm_transmission is installed and you're in a swiss company - Payroll > Transmission > Salary Certificate Rectification - create a new declaration and fill the form with a newly created previous declaration - click on "Prepare Data" A traceback is raised opw-4687938 Forward-Port-Of: odoo/enterprise#83261
Prior to this commit, the creator box used the old version of the app icon (with gradients). This commit updates this icon to use the last version. task-4709035 | Before | After | |--------|--------| |  |  | Forward-Port-Of: odoo/enterprise#861
Original PR description
Prior to this commit, the creator box used the old version of the app icon (with gradients). This commit updates this icon to use the last version. task-4709035 | Before | After | |--------|--------| |  |  | Forward-Port-Of: odoo/enterprise#86191 Forward-Port-Of: odoo/enterprise#83242
runbot-error-224154 Forward-Port-Of: odoo/enterprise#86536
Original PR description
runbot-error-224154 Forward-Port-Of: odoo/enterprise#86536
We have included deductible expense rates for Belgium - but the starting dates default to the module installation date. In most cases they should apply historically too. task-4813998 Forward-Port-Of: odoo/enterprise#86234
Original PR description
We have included deductible expense rates for Belgium - but the starting dates default to the module installation date. In most cases they should apply historically too. task-4813998 Forward-Port-Of: odoo/enterprise#86234
In https://github.com/odoo/odoo/commit/6d2bfc85bc0e387fbf4d3a64eb15b18ec59e9b47 we removed an explicit flush performed right after move creation. Because of this change, when fetching data for the sie import we might not see all the relevant lines. We need to ensure to flush any data left in cache before making a SQL query no opw Forward-Port-Of: odoo/enterprise#86107 Forward-Port-Of: odoo/enterprise#82292
Original PR description
In https://github.com/odoo/odoo/commit/6d2bfc85bc0e387fbf4d3a64eb15b18ec59e9b47 we removed an explicit flush performed right after move creation. Because of this change, when fetching data for the sie import we might not see all the relevant lines. We need to ensure to flush any data left in cache before making a SQL query no opw Forward-Port-Of: odoo/enterprise#86107 Forward-Port-Of: odoo/enterprise#82292
Versions -------- - 17.0+ Steps ----- 1. Go to Automation Rules; 2. create a new automation; 3. set model to `product.pricing`; 4. in one of the filters, check the record(s) that fit in the domain. Issue ----- > EvalError: Can not evaluate python expression: (bool(parent.product_variant_count < 2)) > Error: Name 'parent' is not defined Cause ----- `parent` is not defined because the `product_variant_ids` field in the view does not have a parent field to evaluate. Solution
Original PR description
Versions -------- - 17.0+ Steps ----- 1. Go to Automation Rules; 2. create a new automation; 3. set model to `product.pricing`; 4. in one of the filters, check the record(s) that fit in the domain. Issue ----- > EvalError: Can not evaluate python expression: (bool(parent.product_variant_count < 2)) > Error: Name 'parent' is not defined Cause ----- `parent` is not defined because the `product_variant_ids` field in the view does not have a parent field to evaluate. Solution -------- Remove the `parent` checks. opw-4788215 Forward-Port-Of: odoo/enterprise#86384
…de for payslip display We increase the size of the external CH code to not impact payslip display Forward-Port-Of: odoo/enterprise#86299
Original PR description
…de for payslip display We increase the size of the external CH code to not impact payslip display Forward-Port-Of: odoo/enterprise#86299
This PR updates the `l10n_pe_withhold_code` field in the `product.template` model for the Peruvian localization (`l10n_pe_edi`) to reflect the latest official SUNAT withholding catalog (as of April 2025). Changes were made directly in the `fields.Selection`, maintaining compatibility with existing data by preserving obsolete values used in previous versions. This update helps ensure consistency with current SUNAT requirements while avoiding potential issues in existing databases. Refere
Original PR description
This PR updates the `l10n_pe_withhold_code` field in the `product.template` model for the Peruvian localization (`l10n_pe_edi`) to reflect the latest official SUNAT withholding catalog (as of April 2025). Changes were made directly in the `fields.Selection`, maintaining compatibility with existing data by preserving obsolete values used in previous versions. This update helps ensure consistency with current SUNAT requirements while avoiding potential issues in existing databases. Reference: [Reglas de Validación actualizado al 21/04/2025 (Nuevo)](https://cpe.sunat.gob.pe/sites/default/files/inline-files/AjustesValidacionesCPEv20250421.xlsx) Forward-Port-Of: odoo/enterprise#85917
The rental_cart_update_duration tour was failing due to a timeout while selecting for the .o_time_picker_select:eq(0) element. This change add a wait step was to ensure the rental options are fully loaded before proceeding. Avoiding flaky behavior caused by timing issues in the UI. build_error-161173 Forward-Port-Of: odoo/enterprise#85526 Forward-Port-Of: odoo/enterprise#85393
Original PR description
The rental_cart_update_duration tour was failing due to a timeout while selecting for the .o_time_picker_select:eq(0) element. This change add a wait step was to ensure the rental options are fully loaded before proceeding. Avoiding flaky behavior caused by timing issues in the UI. build_error-161173 Forward-Port-Of: odoo/enterprise#85526 Forward-Port-Of: odoo/enterprise#85393
Due to this commit: https://github.com/odoo/odoo/commit/420c64c9e9d4b3b0f3e51f1a41774587a04fbf2e (PR: https://github.com/odoo/odoo/pull/197868), create now only accepts list or tuples and this one raise because it was using dict_values. opw-4803277 Forward-Port-Of: odoo/enterprise#86283
Original PR description
Due to this commit: https://github.com/odoo/odoo/commit/420c64c9e9d4b3b0f3e51f1a41774587a04fbf2e (PR: https://github.com/odoo/odoo/pull/197868), create now only accepts list or tuples and this one raise because it was using dict_values. opw-4803277 Forward-Port-Of: odoo/enterprise#86283
* Previously, the domain only included payments in the "in_process" state, which is incorrect when only the Invoicing app is installed -paid payments should also be allowed-. * Test was failing with single app installed when accountant module was not installed. When only Invoicing, we can validate a batch payment even when payments are in paid state, so the Warning was not raised causing tests to fail. Forward-Port-Of: odoo/enterprise#86357 Forward-Port-Of: odoo/enterprise#86217
Original PR description
* Previously, the domain only included payments in the "in_process" state, which is incorrect when only the Invoicing app is installed -paid payments should also be allowed-. * Test was failing with single app installed when accountant module was not installed. When only Invoicing, we can validate a batch payment even when payments are in paid state, so the Warning was not raised causing tests to fail. Forward-Port-Of: odoo/enterprise#86357 Forward-Port-Of: odoo/enterprise#86217
Currently the SEPA mandate auto validation is done when the payment ref of the statement line is the same as the name of the payment transaction and that the partner id matches between SEPA mandate and statement line. Issue is that some flows (at least the bank synchronization handled through `account_online_synchronization` and odoofin) do not set the partner id on the bank statement line (until reconciliation) but provide it first through the `partner_name` field. To ensure those flows w
Original PR description
Currently the SEPA mandate auto validation is done when the payment ref of the statement line is the same as the name of the payment transaction and that the partner id matches between SEPA mandate and statement line. Issue is that some flows (at least the bank synchronization handled through `account_online_synchronization` and odoofin) do not set the partner id on the bank statement line (until reconciliation) but provide it first through the `partner_name` field. To ensure those flows work fine with SEPA, we should also match transactions and statement lines whose partners names match when there is no partner_id set on the bank statement line. opw-4536189 Forward-Port-Of: odoo/enterprise#85965
This reverts commit https://github.com/odoo/enterprise/commit/d77df0ea4d3b410d210307976f995d9abdc6c97b. Indeed, for security reasons, it is preferable to avoid calling safe_eval whenever possible. Note that in https://github.com/odoo/odoo/pull/208876 a new mechanism is introduced in order to block the creation of expressions in domain fields where we only want domains with litterals because they are evaluated with literal_eval. Forward-Port-Of: odoo/enterprise#85960 Forward-Port-Of: odoo/enter
Original PR description
This reverts commit https://github.com/odoo/enterprise/commit/d77df0ea4d3b410d210307976f995d9abdc6c97b. Indeed, for security reasons, it is preferable to avoid calling safe_eval whenever possible. Note that in https://github.com/odoo/odoo/pull/208876 a new mechanism is introduced in order to block the creation of expressions in domain fields where we only want domains with litterals because they are evaluated with literal_eval. Forward-Port-Of: odoo/enterprise#85960 Forward-Port-Of: odoo/enterprise#85298
Have esg_project installed Got to ESG => Act => Initiatives Check the url Before this commit, the url was /odoo/tasks. This posed a number of issues: - Copying this URL in another browser crashed because the context of this action was lost - Entering then leaving studio crashed too, for the same reason. After this commit, the path of the action is correct and reloading it in another browser works correctly. runbot-error-198568 Forward-Port-Of: odoo/enterprise#86402
Original PR description
Have esg_project installed Got to ESG => Act => Initiatives Check the url Before this commit, the url was /odoo/tasks. This posed a number of issues: - Copying this URL in another browser crashed because the context of this action was lost - Entering then leaving studio crashed too, for the same reason. After this commit, the path of the action is correct and reloading it in another browser works correctly. runbot-error-198568 Forward-Port-Of: odoo/enterprise#86402
21 changes
Resolved issues and error corrections
When users edit an existing review, the popup button now changes to clearly show that they are updating the review. This removes confusion in the review editing flow for portal and eLearning course pages.
Original PR description
**Before this PR:** The button label in the popup does not update when a user tries to edit a review. **Technical**- The button label updates only during the widget initialization, as it is handled in the willStart function. https://tinyurl.com/2derk498 **After this PR:** The button label in the popup correctly updates to 'Update Review' when a user edits a review. **Task**-4677251
Point of Sale sales detail reports now correctly include closing differences for bank payment methods when a session is closed. This helps businesses reconcile reported sales and bank payments more accurately after cash control discrepancies.
Original PR description
When a PoS session was closed with a closing difference, the report was not correctly updated to reflect the closing difference for bank payment methods Steps to reproduce: ------------------- * Open PoS session * Make a sale with a bank payment method * Close the session with a closing difference * Open the sales detail report > Observation: The report does not show the closing difference for the bank payment method Note: ---------------- The previous test was testing a payment method with no outstanding account set on it. This is not a real use case, as the outstanding should always be set. opw-4494656
This fix prevents an error when loading Attendances sample data after a previously referenced employee was deleted. It ensures the related HR skills sample data can load correctly, helping users set up or test HR modules without interruptions.
Original PR description
Currently, an error occurs when loading sample data for **Attendances** if a referenced employee record has been deleted by the user. **Steps to reproduce:** - Install the `hr_appraisal` module…
Currently, an error occurs when loading sample data for **Attendances** if a referenced employee record has been deleted by the user.
**Steps to reproduce:**
- Install the `hr_appraisal` module without demo data.
- Load sample data for **Appraisals**.
- Navigate to **Employees** and delete record for **Emma Granger**.
- Install `hr_attendance` module and load sample data for **Attendances**.
- Observe the error.
**Error:**
`ValueError - ParseError('while parsing /home/odoo/src/odoo/saas-18.2/addons/hr_skills/data/scenarios/hr_skills_scenario.xml:209, ...`
The error occurs because the method at [1] tries to load the `hr_skills_scenario.xml` file, which references a deleted `employee_id` [2], resulting in a parsing failure.
[1] - https://github.com/odoo/odoo/blob/547327f30d2d4bf778b9d358dbea4b133d55188a/addons/hr_skills/models/hr_employee.py#L49
[2] - https://github.com/odoo/odoo/blob/5c1db495828a7fe8c6ec987de432b1916ad32922/addons/hr_skills/data/scenarios/hr_skills_scenario.xml#L210
This commit ensures that all the referenced data is loaded properly, preventing errors due to missing references.
Sentry - 6426462322This update prevents an error when a user enters a VAT number on a new customer record before saving it. It keeps the customer form usable by safely handling missing commercial partner information until the record is saved.
Original PR description
Currently, An error occurs when adding a `vat` number in res_partner form view without saving a record. Steps to produce: - Install the `account` and `web_studio` modules - Create a customer, Add field name 'commercial_partner_id' in customer form view. - Enter a `VAT` number and click anywhere in the form view before saving the record. `ValueError: Expected singleton: res.partner()` An error occurs when the system is attempts to access a value of `commercial_partner_id` at [1], but it is not available. Link 1: https://github.com/odoo/odoo/blob/c87acdcfa48b1d8aa66bb5d27d58e3edb70a86ba/addons/account/models/partner.py#L670 To prevent this error, add a condition to check if value of `commercial_partner_id` is not available. then set `invoice_edi_format` to False. Sentry-6383383350 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Italian vendor bills with line-level discounts or surcharges are now imported with the adjustment applied to each line before tax is calculated. This prevents incorrect totals when invoice lines have different VAT rates, improving accounting accuracy for imported supplier invoices.
Original PR description
Fix the import of vendor bills that use per-line ScontoMaggiorazione. The discount/surcharge should be applied to the price unit before taxes, instead of summed and subtracted from the total. ####…
Fix the import of vendor bills that use per-line ScontoMaggiorazione. The discount/surcharge should be applied to the price unit before taxes, instead of summed and subtracted from the total. #### Correct | Product | Qty | Unit Price | Discount | VAT % | Formula | Total | |-----------|-----|------------|----------|-------|----------------------------------|-----------| | Product 1 | 2 | 5.00 | 3.00 | 22% | `2 * (5 - 3) * 1.22` | 4.88 | | Product 2 | 1 | 10.00 | 3.00 | 10% | `1 * (10 - 3) * 1.10` | 7.70 | | | | | | | | **12.58** | #### Before the scontomaggiorazione is not managed line by line. We have to manage line by line because the ScontoMaggiorazione should decrease the "Imponibile" and than calculate the amount tax line by line because each line can have different tax % . ATTENTION: the ScontoMaggiorazione on ImportoTotaleDocumento is not the sum of the ScontoMaggiorazione on the lines. It is a discount on the amount tax included
The self-ordering interface now shows the configured slideshow when customers use QR menu ordering. This restores the intended visual experience in preview and customer-facing self-order flows.
Original PR description
Steps to reproduce: ---- - Install pos_self_order - Configuration > Settings > Under Mobile self-order & Kiosk - Select Self Ordering Mode as QR menu + Ordering and save changes - Click Preview Web Interface Issue: ---- - Slideshow is not working in QR menu + Ordering mode. Cause: ---- - It was intentionally bypassed for the QR menu + Ordering mode. Fix: ---- - Removed unnecessary code which caused the issue. --- task-4745666
Users can now export attachment file content in XLSX format without hitting an error screen. This corrects a broken internal reference introduced by a prior rename, improving reliability of the export workflow.
Original PR description
When the user tries to export a file of attachment in xlsx format, A traceback will appear. Steps to reproduce the error: - Open attachments > Upload a file that does not contain base64-encoded content - Select that file > Actions > Export > Export Format: XLSX > Add File content(raw) field > Export Traceback: ``` AttributeError: 'ExportXlsxWriter' object has no attribute 'field_names' ``` In this commit: https://github.com/odoo/odoo/commit/a4e04518a437f09d6a10e25a35900c4adfe11dc6 ``field_names`` is renamed to ``fields``. https://github.com/odoo/odoo/blob/0e98b684834cf9e1d646e55599e7bc00aa5997f0/addons/web/controllers/export.py#L231 Here, ``field_names`` is still used. So, it will lead to the above traceback. sentry-6096581800 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This fix restores the review experience on website course pages. When users add a review, the review tab label now updates and the review message appears in the portal discussion area as expected.
Original PR description
**Before this PR:** When a user attempts to add a review, the label on the "Review tab" doesn't update, and the portal chatter fails to display the review message. https://youtu.be/H1XRamn9Koc **Technical:** The code related to these features was removed in commit 368eb78a9cedfce0802b64fd2782e1c018541e40, but it was never addressed afterward. **After this PR:** Adding a review updates the tab label and displays the message in portal chatter. **Task**-4677251
Newly promoted accounting administrators can now generate, regenerate, and view Indian GST return spreadsheets without running into a document access error. The change ensures these users receive the needed access to the GSTR document folder, reducing support issues and blocking errors during GST reporting.
Original PR description
#PURPOSE: - Currently is the user is promoted as admin for accounting and he/she is try to generate/regenerate or view the gst report following Error is thrown. - Access Error ```Uh-oh! Looks like…
#PURPOSE:
- Currently is the user is promoted as admin for accounting and he/she is try
to generate/regenerate or view the gst report following Error is thrown.
- Access Error
```Uh-oh! Looks like you have stumbled upon some top-secret records.
Sorry, Marc Demo (id=5) doesn't have 'read' access to:
- Document (documents.document)```
#STEPS TO REPRODUCE
1) Install necessary modules for indian accounting localization.
2) Enable GST E-Filing & Matching Feature from account's configuration.
3) Go to Settings -> User & Companies -> Users
4) Click new if no user is there other then administrator else click on
another user.
5) Under Access Rights section , inside Accounting select Administrator & Save.
6) Now log in as new user in another tab.
7) Go to Accounting -> Reporting under 'India' section click on
GST Return Period.
8) Click on generate/regenerate or View option.
9) The above shown error will be raised.
#SPECIFICATION:
- The issue is with documents access rights
- After promoting user to admin of accounting, the document's folder right is
not properly assign to user.
- fix this by giving rights of GSTR folder to user if user is in accounting
manager group.
task-4770583Corrected a spelling mistake in the UrbanPiper product label from “Is Alchoholic” to “is Alcoholic.” This improves clarity and professionalism in product information shown or managed through the point-of-sale integration.
Original PR description
In this commit: --------------- - Corrected the label from `Is Alchoholic` to `is Alcoholic`. task- 4826438
This fix prevents an error when creating a Mexican payroll payslip if the period end date is removed. Payroll users can continue preparing payslips without the screen failing due to missing date information.
Original PR description
The system failed to retrieve `worked_days.payslip_id.date_to` because user remove end period Steps to Reproduce: 1. Switch to `My Mexican Company`. 2. Go to Payroll > click Payslips > To Pay > Click New 3. Select Employee from the selection 4. Remove end date from period (Right One). Error: `TypeError: unsupported operand type(s) for -: 'bool' and 'datetime.date'` Solution: Ensure that if worked_days.payslip_id.date_to, start_date, end_date are not present then continue the flow Sentry - 6473512002
Purchase approval requests now require each requested item line to include a product before submission. This prevents approvals from getting stuck later because approvers cannot edit confirmed request lines or create the related RFQ without product information.
Original PR description
### Issue: The current design of the 'pruchase' approval requests makes it possible to create and confirm requests for RFQ's that can not be validated down the road leading to dead un-usable records.…
### Issue: The current design of the 'pruchase' approval requests makes it possible to create and confirm requests for RFQ's that can not be validated down the road leading to dead un-usable records. To be more precise, the `product_id` field is not required to be set on `product_line_ids` of `approval.request` of the `purchase` type: https://github.com/odoo/enterprise/blob/fe983e9874409415a1cf4f1a822173aec454ca06/approvals_purchase/views/approval_product_line_views.xml#L12 The initial idea behind this design choice was to let the approver (who might have more access rights than the user making the request) create and set a `product_id` based on the line description before validating the request. However, this process can not be performed since, the product lines become readonly once the request has been confirmed: https://github.com/odoo/enterprise/blob/fe983e9874409415a1cf4f1a822173aec454ca06/approvals/views/approval_request_views.xml#L184-L189 In particular, the approver will never be able edit them nor can he generate the related order as this action raises a user error: https://github.com/odoo/enterprise/blob/fe983e9874409415a1cf4f1a822173aec454ca06/approvals_purchase/models/approval_request.py#L21-L22 ### Steps to reproduce: With Marc Demo - Approvals > Create RFQ's > New Request - Add a line wihtout product but with a description and quantity - Set Mitchell Admin as approver and submit the request - Login with Mitchell > Approvals > Manager > Approvals to review - Try to approve the request > A user error is raised: You must select a product for each line of requested products. > Since the line is readonly you are stuck. opw-4815115
Documents created through an email alias now use the company of the target folder instead of the database default. This prevents errors for businesses working across multiple companies and keeps document ownership consistent.
Original PR description
Creating documents through a mail alias for a folder that was not the default company on the database would cause an error. This was due to the company on the inactive alias that was being created for this new document not matching the company of the owner document. Added the company id to the vals_list before the creation of the document in order to use the proper company on the alias. opw-4717277
Batch payments now calculate remaining amounts more reliably, including payments in progress and payments linked to journal entries. Currency handling was also improved so totals stay accurate when different currencies are involved.
Original PR description
After 233c75ae6aaac4b7109483cab8fbfc4253a6dd42 computation of residual amounts is wrong when the payment is linked to a journal entry no-opw
Miscellaneous changes
Steps to reproduce =================== 1. Install l10n_pe or l10n_se 2. Switch to the newly installed company. 3. Open the contact form. The address fields are misaligned. Technical ========== With commit https://github.com/odoo/odoo/commit/4dd27bba346e50f40769d1412fbca0b5f65bb5a6, the contact form renders address fields dynamically based on the selected country. The `_view_get_address` method in the `format.address.mixin` replaces the default address `div` with the XML arch of the vi
Original PR description
Steps to reproduce =================== 1. Install l10n_pe or l10n_se 2. Switch to the newly installed company. 3. Open the contact form. The address fields are misaligned. Technical ========== With commit https://github.com/odoo/odoo/commit/4dd27bba346e50f40769d1412fbca0b5f65bb5a6, the contact form renders address fields dynamically based on the selected country. The `_view_get_address` method in the `format.address.mixin` replaces the default address `div` with the XML arch of the view linked in the current company's `address_view_id` field. Since this arch is wrapped within the `<form>` tags, the JS framework adds an extra div element and `o_form_nosheet` class, causing layout misalignment. After this commit ============== This commit only includes address `div` element inside the `<form>` tag. Task-4744412 Forward-Port-Of: odoo/odoo#208965
Before this commit: - A warning was shown in the TDS payment wizard when the base amount used for TDS calculation was greater than the amount being paid. - However, this warning was misleading, as the TDS base amount can exceed the paid amount. After this commit: - The warning has been removed from the TDS payment wizard. task-4787113 Forward-Port-Of: odoo/odoo#209823
Original PR description
Before this commit: - A warning was shown in the TDS payment wizard when the base amount used for TDS calculation was greater than the amount being paid. - However, this warning was misleading, as the TDS base amount can exceed the paid amount. After this commit: - The warning has been removed from the TDS payment wizard. task-4787113 Forward-Port-Of: odoo/odoo#209823
Problem: Bootstrap grid classes like `row` and `col` are not handled properly when placed inside an `o_text_columns` container. During processing (e.g., for email rendering), rows are expected to be converted to tables — but since `o_text_columns` is not included in the selector query, the transformation is skipped. As a result, when rendering the email, columns are not preserved and fall back to stacked layout. Solution: Update the container selection logic to include `o_text_columns` w
Original PR description
Problem: Bootstrap grid classes like `row` and `col` are not handled properly when placed inside an `o_text_columns` container. During processing (e.g., for email rendering), rows are expected to be…
Problem: Bootstrap grid classes like `row` and `col` are not handled properly when placed inside an `o_text_columns` container. During processing (e.g., for email rendering), rows are expected to be converted to tables — but since `o_text_columns` is not included in the selector query, the transformation is skipped. As a result, when rendering the email, columns are not preserved and fall back to stacked layout. Solution: Update the container selection logic to include `o_text_columns` when querying Bootstrap-based containers that need to be transformed into tables. Steps to reproduce: 1. Go to Email Marketing. 2. Create a new email. 3. Add a Text snippet. 4. Type `/col` and choose "2 Columns". 5. Add text to both columns. 6. Save and send the email. → In the received email, the two columns appear stacked vertically instead of side by side. opw-4675310 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#211109
[FIX] survey: allow survey print without answers Issue --- Previously, printing a survey with access mode set to "invited people only" required an existing `survey.user_input` record. Without it, the print route failed silently and redirected to the homepage. FIX --- This commit allows surveys to be printed without answers. It introduces an option to bypass the "token_required" validity check by allowing `ensure_token='survey_only'`. This skips token validation specifically for th
Original PR description
[FIX] survey: allow survey print without answers Issue --- Previously, printing a survey with access mode set to "invited people only" required an existing `survey.user_input` record. Without it, the…
[FIX] survey: allow survey print without answers Issue --- Previously, printing a survey with access mode set to "invited people only" required an existing `survey.user_input` record. Without it, the print route failed silently and redirected to the homepage. FIX --- This commit allows surveys to be printed without answers. It introduces an option to bypass the "token_required" validity check by allowing `ensure_token='survey_only'`. This skips token validation specifically for the print route, while preserving it for the start route. Reproduce --- - -i survey - create new Survey, with "Access Mode": "invited people only" - click "Print" BUG -> taken to the odoo main page, instead of empty printed survey opw-4292331 --- --- # LEGACY notes BELOW --- ### [FIX] survey: allow survey print without answers When we set access mode to token, we need to have existing registration `survey.user_input` to print the survey. After this commit existing answer is not required anymore #### Reproduce - -i survey - create new Survey, with "Access Mode": "invited people only" - click "Print" BUG -> taken to the odoo main page, instead of empty printed survey opw-4292331 --- #### Note on other solutions Initially explored approach was just to add a set of dummy/test answers [FIX] survey: create empty answer when token access set ... to allow general print of the survey. When we set access mode to token, we need to have existing registration `survey.user_input` to print the survey. This commit suggest solution similar to the one existing in survey_test, so if we create test answer to use it. Reproduce --- - -i survey - create new Survey, with "Access Mode": "invited people only" - click "Print" BUG -> taken to the odoo main page, instead of empty printed survey Def --- What I refer to as "General print" of the survey is a request to print survey without answer_token. This is currently possible to request from the form view of the survey.survey  opw-4292331 Forward-Port-Of: odoo/odoo#189738
Trigger an onchange requiring res_model_id to be returned. Before this commit, there was an error because the dependency field "res_model" was False and injected into a function that required it not to be. After this commit, there is no crash. runbot-error-223466 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 F
Original PR description
Trigger an onchange requiring res_model_id to be returned. Before this commit, there was an error because the dependency field "res_model" was False and injected into a function that required it not to be. After this commit, there is no crash. runbot-error-223466 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 Forward-Port-Of: odoo/odoo#211696
After a recent change in German EDI, the data exported in CSV from the EC Sales List can no longer be uploaded because the expected structure has changed Steps to reproduce (with a DE Company): - Make an invoice to an EU Partner - Open EC Sales List - Export CSV When uploading the file on the Elster portal it will be rejected with an explicit error message, saying that we're using an old CSV format now deprecated, and prompts the user to refer to the new specifications Original mes
Original PR description
After a recent change in German EDI, the data exported in CSV from the EC Sales List can no longer be uploaded because the expected structure has changed Steps to reproduce (with a DE Company): -…
After a recent change in German EDI, the data exported in CSV from the EC Sales List can no longer be uploaded because the expected structure has changed Steps to reproduce (with a DE Company): - Make an invoice to an EU Partner - Open EC Sales List - Export CSV When uploading the file on the Elster portal it will be rejected with an explicit error message, saying that we're using an old CSV format now deprecated, and prompts the user to refer to the new specifications Original message: Ihre CSV-Datei wurde für eine ältere Version der CSV-Schnittstelle erstellt. Bitte informieren Sie sich in der Versionstabelle der Importhilfe über die aktuellste Version der Schnittstelle sowie Änderungen. Sind die Versionsangaben korrekt, prüfen Sie bitte das Encoding Ihrer CSV-Datei. Das zulässige Encoding ist UTF-8. Sources: https://www.elster.de/eportal/helpGlobal?themaGlobal=zmdo_import_eop https://www.datev-community.de/t5/Betriebliches-Rechnungswesen/Import-CSV-Daten-nacvh-Elster-f%C3%BCr-ZM/td-p/480079 opw-4751667 opw-4674533 Forward-Port-Of: odoo/enterprise#85992
This PR updates the `l10n_pe_withhold_code` field in the `product.template` model for the Peruvian localization (`l10n_pe_edi`) to reflect the latest official SUNAT withholding catalog (as of April 2025). Changes were made directly in the `fields.Selection`, maintaining compatibility with existing data by preserving obsolete values used in previous versions. This update helps ensure consistency with current SUNAT requirements while avoiding potential issues in existing databases. Refere
Original PR description
This PR updates the `l10n_pe_withhold_code` field in the `product.template` model for the Peruvian localization (`l10n_pe_edi`) to reflect the latest official SUNAT withholding catalog (as of April 2025). Changes were made directly in the `fields.Selection`, maintaining compatibility with existing data by preserving obsolete values used in previous versions. This update helps ensure consistency with current SUNAT requirements while avoiding potential issues in existing databases. Reference: [Reglas de Validación actualizado al 21/04/2025 (Nuevo)](https://cpe.sunat.gob.pe/sites/default/files/inline-files/AjustesValidacionesCPEv20250421.xlsx) Forward-Port-Of: odoo/enterprise#85917