Daily updates from Odoo
Friday, November 15, 2024
27 changes
10 changes
Enhancements to existing features
The message composer has been improved to make common actions easier and more consistent across channels such as WhatsApp, Knowledge, Helpdesk live chat, and attachment previews. This helps users work faster when adding files, using commands, or interacting with conversations.
Original PR description
Task-4210591 Task-4311296 https://github.com/odoo/odoo/pull/186084
Payroll rule parameter screens now show the current value and the date it became valid, making key information easier to find without opening history records. Parameter history is moved to its own tab, and contract lists now show currencies beside amounts to reduce ambiguity.
Original PR description
In the form view of rule parameters, we will now show the current value and the date since it is valid. We also moved the history to its own tab. In the list view of rule parameters, we add the current value or an abbreviation for more complex objects "(...)" and the date since it is valid. In the contract list view, we add the currency to the amounts shown. Task: 4260885
Luxembourg payroll now includes one general field to record the total value of miscellaneous benefits in kind. This avoids adding separate fields for every benefit type and helps companies capture these payroll amounts more flexibly.
Original PR description
Some companies may offer various benefits in kind. Rather than creating multiple fields to handle each benefit, a single, generic benefit in kind field has been added to capture the value of all these benefits. task-4310297
Belgian payroll now records fiscal voluntarism as a fixed amount instead of a percentage, making it align more directly with how it is applied in payroll calculations. Employee screens were also adjusted to make payroll-related partner codes easier to view and manage.
Original PR description
This will change the fiscal voluntarism from a percentage to an amount. In the salary rules, the fiscal voluntarism is added after the tax and acts the same as a tax. Also minor improvements of the UX in employee. Task: 4268961
Marketing automation email templates can now include blacklisted email addresses when needed. This gives teams more control over automated campaigns that must reach specific audiences, while sharing the setting across activities that use the same template.
Original PR description
Adding inherits to mail.thread.blacklist in sale_order requires to have an email field (str). So we have added a related field but that related field cause a lot of queries. Comparing queries with and without the change shows that res_partner is queried 75 times. Task-2834862
Payroll batches now check deferred time off only for employees who have a regular payslip in that batch. This prevents unrelated payments, such as year-end bonuses, from being blocked by time-off issues affecting other employees.
Original PR description
Currently, we check time off to defer over the batch period for all the employees in the batch if there is a regular payslip. Now, we only check the employees covered by a regular payslips, this shouldn't block the end of the year bonus for instance if the regular payslip in the batch is not related to the bonus employee. TaskID: 4328786
Departure processes now better handle actions involving several employees at once across Planning, Documents HR, and Appraisals. This helps HR teams complete bulk employee departure workflows more reliably and with fewer manual corrections.
Original PR description
cf https://github.com/odoo/odoo/pull/179609 Adapt overrides of `hr.departure.wizard` to make it work with the new support for multiple employees. task-3987430
The Colombian DIAN electronic invoicing module is now installed automatically alongside the Colombian e-invoicing setup. This supports the product strategy of promoting DIAN’s free service as the default provider unless Carvajal is explicitly configured.
Original PR description
This commit auto-installs DIAN module with l10n_co_edi. By default, unless Carjaval is specifically configured we will set DIAN as electronic invoicing provider. This is part of our commercial and product strategy starting from V18 is to promote the DIAN Free service (l10n_co_dian) over the third party vendor Carvajal (l10n_co_edi). task-4284522 Forward-Port-Of: odoo/enterprise#73315
This update brings the spreadsheet engine up to date, reducing exported spreadsheet data size and simplifying how Odoo chart settings are managed. Business users should benefit from lighter dashboard and spreadsheet files, with continued improvements to chart editing and reliability.
Users can now see default grouping choices as visible search filters and remove them when they are not needed. This makes Gantt and Studio views more flexible and easier to adjust without technical help, including support for grouping by multiple fields in more places.
Original PR description
This commit improves the default_group_by UX by displaying it in the search facets and allowing the user to remove it when needed. task-3895650
12 changes
Enhancements to existing features
Restaurant staff can now type a number in the quick table selector and continue immediately even if it does not match an existing table or order. The system automatically creates a floating order with that number, reducing interruptions and speeding up order taking.
Original PR description
Before this commit:
====================
If the number entered on the quick table selector numpad did not match any existing table or floating order, an error message ("No table or floating order found with this number") was displayed.
After this commit:
==================
When the entered number does not correspond to an existing table or floating order, a new floating order is automatically created using the inputted number.
task- 4274465The date picker now avoids showing dates from neighboring months and makes date range selection clearer. This reduces confusion for users choosing start and end dates, especially when resetting or changing an existing range.
Original PR description
Change the selection of date ranges. Enterprise: https://github.com/odoo/enterprise/pull/72595 Task [3433683](https://www.odoo.com/odoo/project.task/3433683) --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This update improves how Odoo Studio exports actions from the base system, making exported customizations more reliable and easier to move between environments. It helps businesses reduce manual cleanup when transferring Studio changes.
Original PR description
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
Odoo now treats Indonesian rupiah amounts as whole-number values instead of using decimal places. This better matches everyday Indonesian transactions and avoids payment or invoicing issues with services that only accept integer amounts, such as Xendit, QRIS, and e-Faktur.
Original PR description
In Indonesia, general transactions don't involve decimal places because the amount is too small (1 USD is around 15700 IDR). This change is also aligned with our integrations to Xendit (`payment_xendit`), QRIS (`l10n_id`) as they only accept integer amount through API. Similarly to how we implement e-Faktur (`l10n_id_efaktur`), we always use integer amount. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
The Documents app now uses a simpler rule for what appears in Company folders, based on Odoobot-owned items without a parent folder. This makes the folder list and document view more consistent, removes the old pinned-folder behavior, and fixes related cases such as copying documents and requesting files in My Drive.
Original PR description
Purpose ======= Simplify the company folder domain. Now the domain is just the documents owned by Odoobot, and without a parent folder. The search panel now use the same domain, and so the only difference now between the kanban view and the search panel is that the search panel only show folders. Technical ========= Because the old `is_pinned_folder` is used in access rule, we can not just set it to False, it needs to reflect the owner_id / folder_id values (it will be cleaned in master). Task-4293841
Resolved issues and error corrections
This fixes a conflict that could break the state dropdown on the customer account edit page when Peppol invoicing was installed. Customers can now change their country and select the correct state without losing standard portal account behavior.
Original PR description
Steps to reproduce: 1. Go to website > My Account > Edit information 2. Change the country from say India to United States 3. Click on the state drop down, which then appears blank. The issue occurs because the `account_peppol` module extends the public widget by using the same name as the existing `portalDetails` public widget from the portal module, effectively overriding it. This causes certain functionalities to be lost when `account_peppol` is installed. This commit modifies the `account_peppol` module to extend the existing portalDetails widget instead of overriding it. Issue introduced in commit: https://github.com/odoo/odoo/commit/857b9a188c77cef2e3cd8a1c6b3035e7cd8d1305 task-4310315 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This fixes an issue where removing the currency from an invoice could cause the page to crash with an error. The invoice and tax calculations now handle a missing currency more safely, helping users continue editing invoices without interruption.
Original PR description
When the user removes the currency from the invoice, a traceback will appear. Steps to reproduce the error: - Enable multiple currencies - Create a invoice > Add a line > Add any product > Remove…
When the user removes the currency from the invoice,
a traceback will appear.
Steps to reproduce the error:
- Enable multiple currencies
- Create a invoice > Add a line > Add any product > Remove currency
Traceback:
```
AssertionError: precision_rounding must be positive, got 0.0
File "addons/account/models/account_move.py", line 1550, in _compute_tax_totals
base_lines, _tax_lines = move._get_rounded_base_and_tax_lines()
File "addons/account/models/account_move.py", line 1529, in _get_rounded_base_and_tax_lines
AccountTax._add_tax_details_in_base_lines(base_lines, self.company_id)
File "addons/account/models/account_tax.py", line 1354, in _add_tax_details_in_base_lines
self._add_tax_details_in_base_line(base_line, company)
File "addons/account/models/account_tax.py", line 1313, in _add_tax_details_in_base_line
taxes_computation = base_line['tax_ids']._get_tax_details(
File "addons/account/models/account_tax.py", line 1034, in _get_tax_details
raw_base = float_round(raw_base, precision_rounding=precision_rounding)
File "odoo/tools/float_utils.py", line 70, in float_round
rounding_factor = _float_check_precision(precision_digits=precision_digits,
File "odoo/tools/float_utils.py", line 35, in _float_check_precision
assert precision_rounding > 0,\
```
https://github.com/odoo/odoo/blob/0bcc55685fd75f88214b7da1f5df9ec9a7aff784/addons/account/models/account_tax.py#L1041
When, the user removes the currency, ``precision_rounding`` will be 0.0
because at [1], ``base_line['currency_id']`` will be empty,
So, the rounding will be 0.0
So, It will lead to the above traceback.
[1]- https://github.com/odoo/odoo/blob/0bcc55685fd75f88214b7da1f5df9ec9a7aff784/addons/account/models/account_tax.py#L1324
When, the user removes the currency, precision_rounding will be 0.0
because at [2], currency will be empty,
[2]- https://github.com/odoo/odoo/blob/a2c9755e3924bc04e524f5ca0e5e17cd98be5b12/addons/account/models/account_tax.py#L985
When, the user removes the currency,
At [3] "singleton: res.currency()" error will be raised.
so, fallback value is added for that.
[3]- https://github.com/odoo/odoo/blob/a2c9755e3924bc04e524f5ca0e5e17cd98be5b12/addons/account/models/account_tax.py#L1433
When the customer and product are added to the invoice, then the user removes
the currency, At [4] "singleton: res.currency()" error will be raised.
so, fallback value is added for that at [5]
[4]- https://github.com/odoo/odoo/blob/a2c9755e3924bc04e524f5ca0e5e17cd98be5b12/addons/account/models/account_tax.py#L1640
[5]- https://github.com/odoo/odoo/blob/a2c9755e3924bc04e524f5ca0e5e17cd98be5b12/addons/account/models/account_tax.py#L1601
When the customer and product are added to the invoice, then the user removes
the currency, At [6] "singleton: res.currency()" error will be raised because
k['currency_id'] is False.
[6]- https://github.com/odoo/odoo/blob/a2c9755e3924bc04e524f5ca0e5e17cd98be5b12/addons/account/models/account_tax.py#L2173
sentry-6018518380
---
I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-prPDF quotes with form fields are now generated so those fields cannot be edited after printing. This prevents accidental or unauthorized changes to quote text after the document has been produced.
Original PR description
Versions -------- - 18.0+ Steps ----- 1. Print a PDF quote with forms. Issue ----- Form fields can be modified. Cause ----- Commit be2f31a4ad03 changed some logic in a forward port, making field read-only, only if they have values. This logic was moved between 17.4 & 18.0 to before the values are known, so in 18.0, no fields are marked as read-only. Solution -------- Make all fields read-only. opw-4290594
Splitting PDF files into new documents has been made more reliable. The fix prevents occasional crashes caused by simultaneous access when newly split documents are created for another owner.
Original PR description
Reproduce: 1. Open the split tool on a pdf 2. Split into new documents 3. See crash about concurrent access to records 3. Sometimes you should do it several times This happens because several routes try to access the document simultaneously before any `documents.access` record exist. See `owner_values` in `documents.document`'s `_prepare_create_values` where we do this for the owner, but in the split tool, the owner can be someone else. Task-4319786
The "My Documents" filter now includes documents linked to the user's contact as well as documents they own. This helps keep files visible after migration when ownership may have been reset due to access restrictions.
Original PR description
Purpose ======= During the migration, the owner can be reset, if the user does not have a write access on the documents (because being owner gives all access on the record). Because of that, the filter "My Documents" does not show most of our files on next.odoo.com. To mitigate that, that filter now uses the contact in addition to the owner, and during the migration, if we reset the owner, and if the contact is False, we will set the contact to the partner of the owner. Task-4310779
Incoming emails sent to the Documents alias will no longer automatically assign a partner in a way that blocks other processing. This helps OCR and related document flows apply the correct values more reliably.
Original PR description
This is a known bug somehow reintroduced in sharepocalypse that prevents other flows (namely the OCR) from writing the correct values. Task-4260511
This fixes checkout errors that could block customers buying products on Colombian company websites. The address form now handles billing and delivery details correctly, reducing failed orders and improving the online purchase flow.
Original PR description
Steps to Reproduce: - Set up a website for a Colombian company. - Go to the shop section. - Purchase any product. Issue: - A traceback occurs when the checkout address form opens. - Another traceback appears upon clicking submit. Cause: - The error is due to an attempt to access an element in the form that is not present. Fix: - Added a condition to ensure that the element is accessed only when the address_type is set to billing. - Updated the view to display the identification type field when use_delivery_as_billing is enabled. opw-4278790
5 changes
Enhancements to existing features
This update adjusts how termination fees are calculated for CP200 employees who qualify for child exoneration. By incorporating the exoneration value, the system now accurately reflects tax withholding regulations. The change also streamlines the calculation process for multiple payroll components.
Original PR description
A CP200 employee may be eligible for exoneration based on the number of dependent children they have. This change: * Takes the value of exoneration into account in the computation of termination fees withholding taxes. * Refactors the computation of withholding taxes for `double holiday pay`, `13th month` and `termination fees` into one function. task-3909012 Forward-Port-Of: odoo/enterprise#73557
Resolved issues and error corrections
This update fixes a problem preventing the system from correctly processing CFDI XML invoices containing the `InformacionGlobal` element. The fix ensures proper encoding of special characters like 'ñ' during XML processing, resolving parsing errors and allowing invoices to be imported successfully. This improves invoice processing reliability for Mexican VAT compliance.
Original PR description
When uploading a CFDI XML invoice containing the `InformacionGlobal` element, the system fails to parse the document correctly and displays an error message. ### Steps to Reproduce 1. Install the…
When uploading a CFDI XML invoice containing the `InformacionGlobal` element, the system fails to parse the document correctly and displays an error message. ### Steps to Reproduce 1. Install the `l10n_mx_edi` module. 2. Create a blank invoice. 3. Add a CFDI XML file containing an `InformacionGlobal` as an attachment to the invoice. (You can use the file `enterprise/l10n_mx_edi/tests/test_files/test_global_invoice_year_month_format.xml` for testing.) The chatter displays the following error: Error importing attachment 'xml_file_name.xml' as invoice (decoder=_l10n_mx_edi_import_cfdi_invoice) ### Cause The `InformacionGlobal` element in the XML requires an `Año` attribute (note the special character `ñ`). Correct encoding is crucial here to handle special characters accurately. When the XML file is first uploaded, it is parsed with the correct encoding. However, during processing, the XML is converted back to a string, losing its original encoding in the process. This causes issues with special characters like `ñ`, which can no longer be read correctly by the system, resulting in a parsing error. opw-4226968
This update fixes an issue where rental dates on ecommerce carts weren't automatically updating when the rental period was changed. The fix ensures that the order line name, which determines the rental period, is recalculated whenever the rental dates are modified, resulting in accurate rental durations displayed in the cart.
Original PR description
Steps:
add a rental product in cart in ecommerce
go to cart and update the rental dates on datepicker
Issue:
The new dates are not applied to cart lines
Cause:
rental dates on cart line come from order_line name
order_line name is not updated on change of rental dates
Fix:
Updated _cart_update_renting_period to update order_line name for rental lines
opw-4137981
opw-4124061
opw-4191403This update ensures that simple POS users can accurately view the total due amount for customers, regardless of whether the customer was initially loaded. Previously, this information was missing when searching for new customers, creating a discrepancy in reporting and settlement. This fix aligns the POS user experience with the functionality available to other users.
Original PR description
Currently, simple pos users can see the due amount of the customers, unless the customer wasn't loaded and we need to search for a customer that isn't loaded. Steps to reproduce: -------------------…
Currently, simple pos users can see the due amount of the customers, unless the customer wasn't loaded and we need to search for a customer that isn't loaded. Steps to reproduce: ------------------- * Create a new customer, make a sale order and invoice it. This will set an amount due for that customer * Connect to the shop with a user that has the `point_of_sale.group_pos_user` but not the `account.group_account_readonly` group * Open customer list > Observation: You can see the amount due for multiple customers * Search for the customer created * Select search more > You can't see the amount due for that customer Why the fix: ------------ Since simple pos users are allowed to see the amount due for the loaded customer, there is no reason they shouldn't see it as well for a customer they need to load. Commit allowing simple pos users to see (and settle) customer accounts: https://github.com/odoo/enterprise/commit/37fa4d5f4ed7c7d77f73395a53b7b3ab7006afc4 When loading the pos session `_loader_params_res_partner` is called first and later is called `_get_pos_ui_res_partner`. It is in the function `_get_pos_ui_res_partner` that the amount due is compted if the user does not belong to the group `account.group_account_readonly`. https://github.com/odoo/enterprise/blob/a35a4755cdf86bcfeda0aca6c06397748ba27362/pos_settle_due/models/pos_session.py#L22-L28 However when we load a customer that wasn't previously loaded, only `_loader_params_res_partner` is loaded. And since the users does not belong to the group `account.group_account_readonly`, the field witll not get loaded. We now compute the amount due with the same logic as in `_get_pos_ui_res_partner`. opw-4141955
This update resolves an issue where Mexican tax reports generated from the Chart of Accounts failed validation due to incorrect account group codes. The fix filters out invalid codes from root account groups, ensuring reports comply with SAT requirements. While not a perfect solution, it addresses the primary cause of the validation failure.
Original PR description
**Steps to reproduce:** - Install l10n_mx_reports - Switch to a Mexican company (e.g. ESCUELA KEMPER URGATE) - Go to "Accounting / Configuration / Accounting / Chart of Accounts" - Create an account:…
**Steps to reproduce:** - Install l10n_mx_reports - Switch to a Mexican company (e.g. ESCUELA KEMPER URGATE) - Go to "Accounting / Configuration / Accounting / Chart of Accounts" - Create an account: * Account Name: [any] * Code: 123456789 * Type: Bank and Cash - Go to "Accounting / Reporting / Audit Reports / Trial Balance" - Download "COA SAT (XML)" - Validate the XML on an online SAT document validator (e.g. https://ceportalvalidacionprod.clouda.sat.gob.mx) **Issue:** The validation fails because the XML contains lines with incorrect or missing value for "CodAgrup" attribute. **Cause:** The "CodAgrup" in the "COA SAT (XML)" refers to the code of the account groups. The accepted values are defined in the "Catálogo de Códigos Agrupadores" XSD file. https://github.com/odoo/enterprise/blob/ecce698637dc2ef13dfdb27dfde303a7f1191aaf/l10n_mx_xml_polizas/data/xsd/1.3/CatalogosParaEsqContE.xsd#L4-L1086 The created account [123456789] is put in the root account group with code "1" and a line is added in the "COA SAT (XML)" with this value. However, it is not an accepted value. **Solution:** From the account groups created automatically by MX localization, only the root account groups (i.e. with code "1", "2", "3",...) do not have a valid code for the "COA SAT (XML)". These ones can be ignored. This solution is not perfect as it is still possible to create an account group with an invalid code that is not a root account group. However, handling this use case would require to check that each code is included in the set of valid codes (there is more than a thousand). opw-4209089 Forward-Port-Of: odoo/enterprise#73647