Daily updates from Odoo
Tuesday, December 2, 2025
29 changes · 18.0
Enhancements to existing features
This update brings Odoo's Swissdec ELM Certification in line with version 5.3, incorporating key regulatory changes. Specifically, it adds support for new French-crossborder rules, adapts to the AVS21 regulation regarding retirement, and automates allowance calculations. This ensures continued compliance and accurate reporting for Swiss payroll.
Original PR description
This Pull request extends the Odoo Swissdec ELM Certification to the minor version 5.3. By doing so we add the following features : - Telework Percentage declaration for French-crossborder comuters - Adapting to AVS21 regulation, where retired employees can refuse their right to retirement - Adding automatic Child and education allowance calculation - Add the calculation of LPP in % - Allowing the specification of custom employer parts for LAAC and IJM Forward-Port-Of: odoo/enterprise#95518
This update clarifies the SMS verification message used during the Peppol activation process. Previously, the message was ambiguous, potentially confusing users about its connection to Odoo. Now, the message clearly states "Your Peppol activation code in Odoo is ...", enhancing user understanding and streamlining the activation process.
Original PR description
Before this commit: In v17, the Peppol SMS verification message starts with "Your confirmation code is .." which could be confusing, as users might not know the code was related to Peppol in Odoo. After this commit: The SMS verification message was changed and now it starts with "Your Peppol activation code in Odoo is ...", providing clearer context for users. task-5353425 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#237135
This update ensures Odoo correctly handles German B2G invoices in the XRechnung format. It adds a mandatory 'Leitweg-ID' – a routing identifier – to the invoice XML, directing invoices to the appropriate government entity as required by German regulations. This improves compliance and accuracy for German business transactions.
Original PR description
*= l10n_account_edi_ubl_cii_tests For B2G transactions in Germany, the Leitweg-ID is a mandatory routing identifier to direct the invoice to the correct public entity. Adding this Leitweg-ID for the UBL syntax. task-5194484 Description of the issue/feature this PR addresses: For electronic invoicing in Germany, for B2G transactions, the Leitweg-ID is a mandatory routing identifier to direct the invoice to the correct public entity. We want to add this identifier for the XRechnung format. Current behavior before PR: The Leitweg-ID is not present in the UBL xml format. Desired behavior after PR is merged: The Leitweg-ID is added in the header of the invoice in the cbc:BuyerReference tag. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#236333
Resolved issues and error corrections
This update corrects a bug where administrators without HR permissions could trigger an access error when attempting to create a new employee. The fix hides the 'Create Employee' button for users lacking the necessary HR rights, ensuring a smoother user experience and preventing errors.
Original PR description
**Version:** - 17.0 **Steps to reproduce:** - Make sure Marc Demo is an Administrator but has no Employees (HR) access rights. - Log in as Marc Demo. - Go to Settings → Users → Create a new user. - Enter a name and email, then Save. - You’ll see the "Create Employee" button it appears even though the user has no HR rights. - Click it → an Access Error occurs. **Isuue:** - The "Create Employee" button is visible for users who don’t have HR permissions, causing an access error when clicked. **Solution:** - Hide the "Create Employee" button for users without HR access by adding the correct group restriction. task-5212464 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#235258
This update corrects a minor issue in the account_peppol module where the neutralization script wouldn't function correctly if a required key wasn't present. The change ensures the script always inserts the key, guaranteeing proper PEPPOL data processing and compliance. This prevents potential errors and maintains data integrity.
Original PR description
There can be some siutations where you can not have the key account_peppol.edi.mode while having a connection. But the neutralize only updates and so, if the key is not present, it does nothing. So change it to insert the key if no present --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#238184
This update resolves an error that occurred when creating new employees without a 'name' field. The fix prevents a system crash by gracefully handling missing data, ensuring a smoother employee onboarding experience. This improves data integrity and reduces potential disruptions.
Original PR description
Currently, when a user hits a debugger extension in-between employee creation an error is occurred. **Steps to Reproduce:** - Install **HR** module. - Create new employee and write a `name` of an employee but don't save the record. - append `?debug=1` in the URL. we can generate this error in one more way. - Install **HR** module. - Create a new **empty form view** for the `hr.employee` model. - Open the newly created view and click on save. **Error:** `KeyError: 'name'` **Root Cause:** The `_prepare_resource_values` method assumes the 'name' key is present in vals at [1] tries to pop it without checking for its existence. [1]- https://github.com/odoo/odoo/blob/06ec1de2dd8ec5fdb104275cf2bbb3f9f73841da/addons/hr/models/hr_employee.py#L386 **Solution:** This commit ensures that if the `name` key is not present, the method returns `None` instead of raising Error. Sentry-6234873849
This update resolves a crash in the 'Update Tax Tags' wizard when a company has a tax lock date configured in Odoo v18. The change reintroduces a mechanism to ensure the wizard correctly loads company data, preventing a type error that occurred during date comparisons. This ensures the wizard functions reliably for all users.
Original PR description
Opening the `Update Tax Tags` wizard in v18 crashes when the company has a tax lock date configured, raising: ``` TypeError: '<' not supported between instances of 'bool' and 'datetime.date' ``` The…
Opening the `Update Tax Tags` wizard in v18 crashes when the company has a tax lock date configured, raising: ``` TypeError: '<' not supported between instances of 'bool' and 'datetime.date' ``` The error happens because `_compute_display_lock_date_warning` is evaluated while date_from is still False, so the comparison `wizard.date_from < tax_lock_date` ends up comparing a boolean with a date. In v17 the wizard form view included an invisible company_id field, which ensured the company was properly loaded in the cache and allowed `_compute_date_from` to run with the correct company_id and tax_lock_date before the warning compute was triggered. This change reintroduces the invisible company_id field in the wizard form view to restore the v17 behavior. The wizard now loads the company correctly, computes `date_from` based on the tax lock date, and then computes `display_lock_date_warning` without triggering the TypeError. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This update resolves an issue where URLs were duplicated in WhatsApp messages due to a technical formatting error. The fix prevents the duplication of URL text within the message body, ensuring a cleaner and more accurate user experience. This improves clarity and reduces potential confusion for users.
Original PR description
[FIX] whatsapp: remove duplicated URLs in message body Steps to reproduce: 1. Set up whatsapp integration. 2. Send a direct message containing a URL. 3. Observe that the URL appears twice in the…
[FIX] whatsapp: remove duplicated URLs in message body Steps to reproduce: 1. Set up whatsapp integration. 2. Send a direct message containing a URL. 3. Observe that the URL appears twice in the message received in whatsapp. Issue: This issue arises within the `_send_message` method, where we are taking the Markup body that we use within the Odoo UI to have a clickable URL, like `<a href="[https://example.com">https://example.com</a>`](https://example.com"%3Ehttps//example.com%3C/a%3E%60). Then, the html2plaintext function duplicates by adding the footnote for the anchor tag, which "duplicates" the URL since the text within the anchor tag is the same as the URL itself. This results in a message body that contains the URL twice, leading to confusion for the user. Solution: This commit addresses the issue by backporting the solution to this problem introduced in https://github.com/odoo/odoo/commit/a152910e3a352516ea1240d8833a406b144382dd and using the `include_references` parameter of the `html2plaintext` function to exclude footnotes from the conversion. opw-4936400 Forward-Port-Of: odoo/enterprise#90449
This update fixes an error in the SAFT report XML template, ensuring accurate descriptions of unit of measure categories are included. This improves the report's data integrity and compliance with reporting standards. The change impacts the SAFT report generation process.
Original PR description
Replaced 'uoms.category_id.name' with the correct 'uom.category_id.name' in the SAFT report template. This ensures accurate unit of measure descriptions are included in the UOMTable entries.
This update fixes an issue where demo data was incorrectly included in the main Odoo files. The data has now been moved to the designated 'demo' folder, ensuring accurate demonstration of the pos_pricer module. This improves the consistency and reliability of the demo environment.
Original PR description
In the PR #66351 the demo data was unintentionally merged in the 'data' folder. This PR moves it to the correct 'demo' folder
This update resolves an issue where users lacking the correct permissions couldn't upload documents to activities. The fix now checks user rights before attempting to upload, preventing errors and ensuring proper functionality for all users.
Original PR description
Step To Reproduce: - install Project - login with admin and open any Project settings, say Project 1. - create a upload document activity for 'marc demo' - ensure marc demo has 'User' access for…
Step To Reproduce: - install Project - login with admin and open any Project settings, say Project 1. - create a upload document activity for 'marc demo' - ensure marc demo has 'User' access for project - login with marc demo - open same project (kanban card -> view) - upload a document for the created activity Observation: - Traceback ``` TypeError: Cannot destructure property 'id' of '(intermediate value)' as it is undefined at Activity.onFileUploaded ``` Cause: - upload request to `/mail/attachment/upload` , calls `mail_attachment_upload` which then tries to access thread for 'write' mode, 'project.project ' model . - as marc demo does not have write access to this model, no thread is returned - so `NotFound()` is raised https://github.com/odoo/odoo/blob/322c6d0468bf79e9d29e1375c49aa13d4a7b7a67/addons/mail/controllers/attachment.py#L48-L55 Fix: - we check if selected user has appropriate rights or not for upload activity opw-5160132 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This update resolves an issue where test emails using 'view_online' would fail if the associated contact record was deleted. The fix ensures the system retrieves the contact's ID dynamically, preventing errors and improving email test functionality. This ensures consistent email marketing performance.
Original PR description
In the email marketing, when you add "view_online" and dynamic placeholder "object.name", and try doing a test email, it creates a url token for the "view online" with the res_id as the user's id which grabs the record from the mailing_contact with that res_id. So, in case the mailing_contact with the res_id is deleted, the "view_online" gives you error saying record with id "res_id" cannot be find. Our fix is to search the mailing_contact and grab the id of the first record. This fix updates the code from this commit: [8a9981e](https://github.com/odoo/odoo/commit/8a9981e78a438ceb53a4fdc0445ebed2170c6624) opw-5049654 Forward-Port-Of: odoo/odoo#232440
This update significantly speeds up the process of matching bank transactions with sales orders. By optimizing a key database query, the system now completes this task much faster – reducing the time from 3.88 seconds to just 0.27 seconds. This improvement enhances overall system performance and responsiveness.
Original PR description
Finding a match between the bank transactions and sale orders is currently done via an unoptimized query that is preventing postgres from using any index. This commit removes the unnecessary CTE by simply doing the query directly on the sale_order table. This way we can also use a trigram index on the regex used for matching and postgres will be able to utilize it for faster search. Benchmarks: | Num sale_order | Before | After | | -------------- | ------ | ------ | | 1391909 | 3.88 s | 0.27 s | Ticket [link](https://www.odoo.com/odoo/project.task/5139457) opw-5139457 Forward-Port-Of: odoo/enterprise#100470
This update fixes a bug where error messages weren't being properly handled during retry attempts, leading to build failures. The change ensures that traceback errors, previously bypassed, are now correctly processed, and also addresses an OSError related to websocket handling, improving overall system stability.
Original PR description
The auto-retry is supposed to catch error logs as well as tracebacks. In some cases a traceback is logged as a message, and not as a logger arg, bypassing the replace already in place. This pr simply replaces the traceback string in the message as well. Build error [234619](https://runbot.odoo.com/odoo/runbot.build.error/234619) Also fixes OSError while handling request paused Build error [229906](https://runbot.odoo.com/odoo/runbot.build.error/229906) Forward-Port-Of: odoo/odoo#238133
This update fixes a potential issue where users could modify approval requests, leading to unpredictable behavior. We've implemented a safeguard to prevent edits, ensuring the approval process remains stable and reliable. This change improves data integrity and reduces the risk of errors in workflows.
Original PR description
There is no legitimate use case that should modify the approval request. This would result in unexpected behaviour. task-5269982 Forward-Port-Of: odoo/enterprise#100943 Forward-Port-Of: odoo/enterprise#100273
This update resolves an issue where duplicate XML IDs were causing data conflicts. The changes update account codes related to CPF, SHG, and SDL taxes in Singapore, ensuring accurate financial reporting. The fix also simplifies account code formatting to prevent overly long codes.
Original PR description
Two accounts were using the same XML ID `account_account_864`, causing second definition to overwrite the first. This commit resolves the duplication and updates/segregates accounts for CPF and SHG according to new specifications.
Changes:
- Update `account_account_864` (Employee Expense) to `account_account_866`.
- Update in accounts:
* 862 → CPF Withheld (Employee)
* 863 → CPF Accrued (Employer)
* 864 → SHG Withheld (Employee)
* Add new 865 → SDL Accrued (Employer)
* 859 → CPF Employer Expense
* 860 → SDL Employer Expense
* Removed 861
- Fix `transfer_account_code_prefix` in the template:
* Change from `101100` to `10110` to avoid generating 7-digit account codes.
task-5360160
Forward-Port-Of: odoo/odoo#237506The product configurator now functions reliably, even when multiple product variations share the same underlying attribute. This fix resolves a previous error that caused the configurator to fail, ensuring a smoother experience for users building custom products. This improvement enhances the overall stability and usability of the product configuration feature.
Original PR description
Description of the issue/feature this PR addresses: When multiple `product.template.attribute.line` records reference the same `product.attribute`, the product configurator raises a `KeyError` at…
Description of the issue/feature this PR addresses:
When multiple `product.template.attribute.line` records reference the same `product.attribute`, the product configurator raises a `KeyError` at line 321.
Root cause: `ptals.attribute_id` returns a unique recordset (Odoo deduplicates), so `zip(ptals.ids, ptals.attribute_id.read(...))` produces fewer entries than expected when attributes are shared across lines.
```python
# Before: zip stops at shorter list, missing entries in attrs_map
attrs_map = dict(zip(ptals.ids, ptals.attribute_id.read(['id', 'name', 'display_type'])))
# After: preserve 1:1 mapping by iterating each ptal
attrs_map = {ptal.id: ptal.attribute_id.read(['id', 'name', 'display_type'])[0] for ptal in ptals}
```
Current behavior before PR:
`KeyError` raised when accessing `attrs_map[ptal.id]` for attribute lines whose ID was truncated by the `zip`.
Desired behavior after PR is merged:
Product configurator correctly maps all attribute lines regardless of whether they share the same underlying attribute.
---
I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-prThis update fixes several issues within the Odoo spreadsheet component, improving its stability and performance. It addresses problems related to figure display, data calculations, and sheet updates, ensuring a smoother user experience. Multiple developers collaborated on this update to ensure comprehensive improvements.
Original PR description
### Contains the following commits: https://github.com/odoo/o-spreadsheet/commit/7ed20c4cf [REL] 18.0.50 [Task: 0](https://www.odoo.com/odoo/2328/tasks/0)…
### Contains the following commits: https://github.com/odoo/o-spreadsheet/commit/7ed20c4cf [REL] 18.0.50 [Task: 0](https://www.odoo.com/odoo/2328/tasks/0) https://github.com/odoo/o-spreadsheet/commit/ca9b40487 [FIX] figure: wrong focus change on figure unmount [Task: 5154025](https://www.odoo.com/odoo/2328/tasks/5154025) https://github.com/odoo/o-spreadsheet/commit/cd6c2d8de [FIX] pivot: Ensure computed measure range adaptation [Task: 5358213](https://www.odoo.com/odoo/2328/tasks/5358213) https://github.com/odoo/o-spreadsheet/commit/fc4196b30 [FIX] commands: remove duplicate in invalidateEvaluationCommands [Task: 5358213](https://www.odoo.com/odoo/2328/tasks/5358213) https://github.com/odoo/o-spreadsheet/commit/790c2c5e5 [FIX] composer: keep edition mode inactive on cursor selection change [Task: 5354541](https://www.odoo.com/odoo/2328/tasks/5354541) https://github.com/odoo/o-spreadsheet/commit/91a6b8948 [FIX] BottomBarSheet: sheet name should update on foreign changes [Task: 5016252](https://www.odoo.com/odoo/2328/tasks/5016252) Co-authored-by: Florian Damhaut (flda) <flda@odoo.com> Co-authored-by: Anthony Hendrickx (anhe) <anhe@odoo.com> Co-authored-by: Alexis Lacroix (laa) <laa@odoo.com> Co-authored-by: Lucas Lefèvre (lul) <lul@odoo.com> Co-authored-by: Adrien Minne (adrm) <adrm@odoo.com> Co-authored-by: Ronak Mukeshbhai Bharadiya (rmbh) <rmbh@odoo.com> Co-authored-by: Dhrutik Patel (dhrp) <dhrp@odoo.com> Co-authored-by: Rémi Rahir (rar) <rar@odoo.com> Co-authored-by: Pierre Rousseau (pro) <pro@odoo.com> Co-authored-by: Vincent Schippefilt (vsc) <vsc@odoo.com> Co-authored-by: Marceline Thomas (matho) <matho@odoo.com>
This update resolves a technical issue within the HTML editor's color plugin that caused a traceback when users selected and colored links on `feff` characters. The fix adjusts cursor offsets to ensure accurate restoration after node removal, preventing errors and improving stability.
Original PR description
Problem: When the user selects a link to color and the selection falls on a `feff` character, a traceback occurs. Cause: After commit 927f4b973932d14961c148e13473017651a60dc0, we preserve the…
Problem: When the user selects a link to color and the selection falls on a `feff` character, a traceback occurs. Cause: After commit 927f4b973932d14961c148e13473017651a60dc0, we preserve the selection at: https://github.com/odoo/odoo/blob/bee7fc1f955c52a88b527ad9a2ddf0021529bbc7/addons/html_editor/static/src/main/font/color_plugin.js#L247-L247 and then call `getFonts()`, which internally uses `this.dependencies.split.splitAroundUntil()`. If the selection is on a `feff` node, `splitAroundUntil()` can clear those nodes because `splitElement()` inside it dispatches to `clean_handlers` with the selected element containing the `feff`. Since the preserved cursor offset refers to the node before the `feff` was removed, restoring it throws: `The offset x is larger than the node's length (y).` Solution: After `splitAroundUntil()`, adjust the preserved cursor offsets if the nodes were mutated to ensure they remain valid. Steps to reproduce: It is difficult to reproduce manually, but the issue occurs when coloring a link with the selection on a `feff`. A test case replicating the situation can be based on the original failing template in the customer’s database. opw-4953943 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This update resolves an issue where printing receipts with reward lines and multiple order lines would cause the printer to block. The fix reorders how discounts are applied to prevent errors related to small discount amounts, ensuring receipts print correctly and reliably. This improves the user experience for sales transactions involving rewards.
Original PR description
This PR fixes the case of printer blocked using reward lines and multiple order lines. To reproduce the issue: - Add a product with reward (for example 10% reward on 50€ , that is 5€) - Add a second product without reward that costs less than 5€ - Print the receipt on fiscal printer The lines are orderer before the non reward lines, than reward lines. The printer is blocking because the adjustmentType discounts last line of less than 5€. It is wrong. Another way to reproduce the issue: - Add a product with reward - Add a second product with reward - The reward line with the sum of both rewards is created The same error appear because it discounts both lines. It is better to discount the entire department instead of the last sale
This update fixes issues where video settings were lost or not applied correctly when saving configurations or embedding videos. Specifically, it ensures that video options from URLs are properly captured and applied, and that previews of Dailymotion videos function reliably. This enhances the user experience when adding and managing videos within the platform.
Original PR description
Issues: 1. Resetting options when dialog is closed without modification: When the media dialog is closed without changing any options and "Add" is clicked, the videoSelector component is reset,…
Issues:
1. Resetting options when dialog is closed without modification:
When the media dialog is closed without changing any options
and "Add" is clicked, the videoSelector component is reset, causing
previously selected parameters to be lost.
- Steps to reproduce:
- Drop a Video snippet.
- Double-click the snippet and toggle a few options (e.g., "Loop").
- Save the video configuration.
- Double-click the snippet again to open the video configurator.
- Save without making any changes.
- The options will be reset.
2. Embedding videos via Powerbox does not capture URL query parameters:
When embedding a video via Powerbox, option values from the URL
query parameters (like loop or autoplay) are not correctly applied.
- Steps to reproduce:
- Add any Text snippet.
- Paste a YouTube video URL with query parameters (e.g., ?loop=1&autoplay=1).
- Choose to embed the YouTube video from the Powerbox popup.
- The Video snippet is added without options enabled for the pasted URL.
3. Manual URL editing does not synchronize options:
Editing the video URL manually does not update the toggle states
of corresponding options.
- Steps to reproduce:
- Drop a Video snippet.
- Double-click the snippet and append query parameters to the URL.
- The option buttons should toggle according to the parameters, but they do not.
4. Dailymotion preview fails for protocol-independent URLs:
Previewing Dailymotion videos fails for URLs like //[www.dailymotion.com/](http://www.dailymotion.com/)....
- Fixes implemented:
- Preserve selected options when saving the Video snippet without any changes.
- Retrieve all query parameters from the URL and include them in the RPC request.
- Synchronize option toggles with the URL input when the user manually edits it.
- Fixed the Dailymotion regular expression to support protocol-independent
URLs (e.g., //[www.dailymotion.com/](http://www.dailymotion.com/)...).
task-4529118
---
I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Forward-Port-Of: odoo/odoo#210596A technical error prevented proper stamping of documents in the Odoo Enterprise demo databases related to Mexican VAT (l10n_mx_edi). This issue has been resolved by uploading the correct certificate file. This ensures the demo environment functions as intended.
Original PR description
In pr #64323 a new way of managing certificates was introduced, but an incorrect change in the “zapateria urtado” certificate went unnoticed, making it impossible to stamp documents in the demo databases unless we changed them manually. To avoid this, we uploaded the correct certificate. I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This update resolves a bug where imported 'miscellaneous' entries were incorrectly displayed in filtered invoice views, even when reconciled. The fix ensures that filters accurately exclude these entries, presenting only unpaid or overdue invoices as intended. This improves the accuracy of reporting and financial analysis.
Original PR description
Error steps: - Create or import "miscellaneous" entries in a sales journal (through the FEC import e.g.) - Have at least one late or unpaid invoice in the same journal. - The journal dashboard view should display a "X Unpaid" or "X Late" suggestion -> click on it => The filtered view shows the correct unpaid or overdue invoices/bills AS WELL as the imported entries, even if the latter are fully reconciled already. Now the filters correctly filter out the entries. opw-5215997
This update resolves a problem where PayPal payments were failing due to missing shipping address information. The fix adds a default value to shipping address fields, ensuring successful Stripe payment processing. This improves the reliability of our payment system.
Original PR description
Paypal was failing when the address fields were `False` **Solution:** Add a fallback to missing fields in the shipping address Fixes: https://github.com/odoo/odoo/issues/237360 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This update corrects a display issue where taxes weren't correctly shown in company currency on Argentinian invoices. The previous code was unintentionally removing the tax section, even when the 'Taxes in company currency' option was enabled. This change ensures invoices accurately reflect tax amounts in the appropriate currency.
Original PR description
**Steps to reproduce:** - Install l10n_ar - Switch to a Argentinian company (e.g. (AR) Responsable Inscripto) - In Accounting settings, enable "Taxes in company currency" option - Activate another currency (e.g. USD) - Create an invoice in USD - Confirm the invoice - Print the invoice **Issue:** The section showing the taxes in the company currency doesn't appear on the invoice despite the enabled option. Cause: An override of "report_invoice_document" from l10n_are is removing the section no matter what the configuration. **Solution:** Do not remove the section. It was done originally in 17.0 where "Taxes in company currency" option didn't exist. opw-5351010 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
A test case was failing due to an error related to payment confirmations. This fix removes a step from the test case that caused the issue, ensuring payments with outstanding accounts can now be correctly confirmed. This resolves a technical issue that could have impacted test execution.
Original PR description
Build was failing with:
```
raise ValidationError(_('A payment with an outstanding account cannot be confirmed without having a journal entry.'))
odoo.exceptions.ValidationError: A payment with an outstanding account cannot be confirmed without having a journal entry.
```
My commit: https://github.com/odoo/enterprise/pull/100924/commits/dd3a7bde1a3b4a22464ded74e25f88ed7a4c8cc0
By the following commit: [commit](https://github.com/odoo/odoo/pull/182390/commits/b572fcd78289013f28f11157b1bfbb75c9ea7344)
When only the `account` module is installed, confirming (posting) a payment will create journal entries. Confirmed payments with outstanding accounts cannot be deleted
To fix this we have removed `action_post` from the test case
Link: https://runbot.odoo.com/odoo/error/234570
runbot error: 234570This update resolves a technical issue that prevented users from adjusting salary sliders within the salary package website. The fix addresses a problem where an 'Always Selected' benefit type caused a system error. This ensures the salary package generation process functions correctly for all benefit configurations.
Original PR description
Steps to reproduce: 1. Install 'hr_contract_salary_payroll' 2. Create three benefits from Payroll > Configuration > Benefits - Basic: Salary Structure Type: US Employee Contract Related Field: Health…
Steps to reproduce:
1. Install 'hr_contract_salary_payroll'
2. Create three benefits from Payroll > Configuration > Benefits
- Basic:
Salary Structure Type: US Employee
Contract Related Field: Health Benefits Dental
Display Type: Slider (1500, 6000)
- Housing:
Salary Structure Type: US Employee
Contract Related Field: Health Benefits Vision
Display Type: Always Selected
- Transport:
Salary Structure Type: US Employee
Contract Related Field: Health Benefits Vision
Display Type: Manual
Mandatory Benefits: Basic, Housing
3. Go to Employees > Contracts
4. Create a new contract:
Set an employee
Salary Structure Type = US Employee
HR Responsible = Mitchell Admin
5. Click the Generate Offer smart button.
6. Open the link
7. Adjust the sliders
Issue: it gives a traceback
`TypeError: Cannot read properties of undefined (reading 'type')`
Cause:
https://github.com/odoo/enterprise/blob/cc3fe89528a143cff3ab03e1654755c34eaac112/hr_contract_salary/static/src/js/hr_contract_salary.js#L480-L482
In checkInputSelected, the target array is empty when an Always Selected benefit is present, causing an attempt to read target[0].type.
Solution:
Add a guard to check that target is not empty before accessing its elements.
opw-5058994This update resolves an issue where the 'Invoice to Public' setting in the Mexican Point of Sale (POS) app was failing to save correctly, resulting in an error. The fix ensures that this setting is properly updated in the system's database, allowing users to correctly generate public invoices when needed. This prevents a frustrating user experience and ensures compliance with Mexican regulations.
Original PR description
In the POS of a Mexican company, when requesting an invoice, the user is asked to set the invoice to public or not. If the customer does not have a recognized ZIP code or country, setting the invoice…
In the POS of a Mexican company, when requesting an invoice, the user is asked to set the invoice to public or not. If the customer does not have a recognized ZIP code or country, setting the invoice to public **should not** raise an error, but it does. This is because the `l10n_mx_edi_cfdi_to_public` field is not correctly updated in the ORM, which leads to the UserError below being triggered, as `l10n_mx_edi_cfdi_to_public` is always set to `False` if it's not updated by its `_compute` method.
https://github.com/odoo/enterprise/blob/dd89c2c72039c9910cc0a303bca332f4103c08f6/l10n_mx_edi/models/account_move_send.py#L54-L55
The said field is not properly updated because it is a compute field.
Such fields are not transferred to the ORM because of the two following
conditions from the POS: [[1](https://github.com/odoo/odoo/blob/5c2280d089f248dff67df980bee1ce6a4156f2c9/addons/point_of_sale/static/src/app/models/related_models.js#L205-L206), [2](https://github.com/odoo/odoo/blob/5c2280d089f248dff67df980bee1ce6a4156f2c9/addons/point_of_sale/static/src/app/models/related_models.js#L895-L896)]
To minimize behavioral changes, the required field (`l10n_mx_edi_cfdi_to_public`) is simply added at the end of the serialization process.
Once this field is correctly shared with the ORM, the UserError is not longer raised when the *Invoice to Public* field is set to "Yes" in the POS.
Steps to reproduce the initial error:
1. Install the following app and module:
- Point of Sale (`point_of_sale`)
- Mexican Localization for the Point of Sale (`l10n_mx_edi_pos`)
2. Set the company to a Mexican one (e.g., *ESCUELA KEMPER URGATE*)
3. Open the POS app
4. Open a register
5. Select a product and click *Add*
6. Click *Payment*
7. Set the Customer to a new customer with only a name (no Country/ZIP Code)
- Click "Cash" to set the Remaining to 0
8. Toggle the *Invoice* button, set the *Invoice to Public* to *"Yes"* and click *Ok*
9. Click *Validate*.
10. An error *"Invalid Operation, CFDI not set to Public"* appears.
opw-5171035This update resolves an issue where commas in payment memos for EFT files were causing errors and rejected file submissions. The fix removes commas from generated files, ensuring correct formatting and preventing payment processing failures. This ensures accurate EFT file exports for New Zealand.
Original PR description
The EFT file format BNZ is exported as a text file. As such, any commas in the field contents will be treated as a new field, resulting in incorrect formatting and a rejected batch file. This…
The EFT file format BNZ is exported as a text file. As such, any commas in the field contents will be treated as a new field, resulting in incorrect formatting and a rejected batch file. This behavior is due to the Odoo community commit [3082d3b](https://github.com/odoo/odoo/commit/3082d3bd0d7a8b45e647c441ba48adcb84a7a070), which partially reversed an improvement to the group payment memo field. - The original behavior was to concatenate the included invoices with spaces (e.g. 'INV/123 INV/124'). - The improvement replaced this with the batch payment reference (e.g. 'BATCH/IN/002'). - The behavior after 3082d3b is to concatenate the included invoices with a space and a comma (e.g. 'INV/123, INV/124' This commit strips the commas from all generated EFT files, instead of further altering the group payment memo field. It also alters existing unit tests to check that commas are removed from payment memo fields. While a fix that changes the memo generation would resolve some issues, this commit ensures that manually added commas will not cause rejected payments. [Ticket link](https://www.odoo.com/odoo/unassigned-tasks/5099220) opw-5099220 Forward-Port-Of: odoo/enterprise#98613