Daily updates from Odoo
Monday, February 3, 2025
23 changes
6 changes
Enhancements to existing features
Payroll teams can now control the appearance of salary rule lines on printed payslips, including color, bold, italic, and underline styles. This makes payslip formatting easier to adjust directly from salary rules instead of relying on fixed hard-coded presentation.
Original PR description
In this commit, add styling effect on rule to render on printed payslip. Now you are able to change the rule color, bold, underline, italic styling effect dynamically on the rule. Previously, these styling effects had been hard coded. task-3810365
Subscription lists now include clearer filters that separate automatic payments, manual payments, and automatic invoicing without payment. This helps users quickly understand how each subscription will be billed, while demo data now supports automatic invoice generation by scheduled jobs.
Original PR description
In this PR, added filters to categorize subscription based on payment_token and online_payment values. - Filter for automatic payments when there is payment token. - Filter for manual payment when there is no payment token and online payment is require. - Filter for automatic invoicing without payment when no payment token and online payment is not require. - rename "Failed Payments" filter to "In Error" for better user understanding - make online payment false in demo data of subscription so automatic invoice will be generated by cron. task-4295759
Payroll now prevents salary attachments from being deleted when they are already linked to a payslip. This helps avoid payroll record inconsistencies and gives users a clear error message explaining why the deletion cannot proceed.
Original PR description
This PR improves the deletion process for salary attachments linked to payslips. An error message is now displayed when attempting to delete a salary attachment associated with any payslip. task-4007473
Point of Sale orders now automatically include related sub-record information when serialized across several localization and POS add-ons. This improves consistency and reduces manual handling for processes such as fiscal reporting, preparation displays, and rental stock flows.
Original PR description
*: l10n_cl_edi_pos, l10n_de_pos_res_cert, l10n_mx_edi_pos, pos_preparation_display, pos_sale_stock_renting Automatically mapping sub records of pos_order to be serialized in the pos_order model.
First-time Documents users now get guided onboarding to help them understand and start using the app more easily. This improves the initial experience by showing relevant guidance only when there is content to work with, reducing confusion during setup.
Original PR description
This commit adds on-boarding support for a user using documents for the first time. Task-[3729929](https://www.odoo.com/web?debug=assets#id=3729929&cids=2&menu_id=6478&action=4043&model=project.task&view_type=form)
Resolved issues and error corrections
Users can now group tasks by project in the Gantt view without encountering an error. This restores expected project planning behavior and prevents interruptions when reviewing tasks across projects.
Original PR description
Step to reproduce: - Go to the Project module. - Open all tasks - Switch to Gantt view. - Group tasks by Project. - Observe the traceback error. Cause: - The error occurred after merging this [commit](https://github.com/odoo/odoo/pull/194673/commits/5c2e8c58290571a9d8e59e2602db6493b381945e), This change caused the `filter_domain_leaf()` function to return a `DomainBool` object, leading to the TypeError when attempting to use len() on it in the `_group_expand_project_ids` method. Solution: - To fix this, the `filter_domain_leaf()` output was wrapped with `list()`, ensuring that filtered_domain is always a list and allowing the safe use of `len()`. task-4521684
17 changes
Enhancements to existing features
This update adds support for Spain's Bizkaia Batuz Modelo 140 reporting format, used by freelancers. It automatically identifies eligible companies by VAT format and adds the extra activity information needed for freelancer vendor bill reporting, helping businesses meet local tax filing requirements.
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
This update improves how Odoo handles manually adjusted tax and base amounts, making tax calculations easier to customize and more consistent. It also fixes an issue where point of sale cashiers could not print a proforma invoice after a failed Italian EDI document generation due to missing invoice line access rights.
Original PR description
--- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This change lets multiple own checks be recorded together in a single journal entry instead of creating separate split entries. This improves payment and invoice status accuracy and simplifies accounting workflows for businesses using Latin American check localization.
Original PR description
This PR introduces an improvement to the account and l10n_latam_check modules that allows for multiple liquidity lines (one per check) to be recorded in a single journal entry. Currently, a split…
This PR introduces an improvement to the account and l10n_latam_check modules that allows for multiple liquidity lines (one per check) to be recorded in a single journal entry. Currently, a split journal entry is created for each liquidity line, which presents several disadvantages:
- Incorrect computation of payment and invoice states
- Simplified workflow: By using a single journal entry for all liquidity lines, the workflow is significantly simplified and accounting complexity is reduced.
- First step towards a refactor: This improvement is a first step towards a broader refactor that will allow adapting the own check flow in payment registration without the need to create journal entries.
Changes made:
- Enhanced _synchronize_to_moves() method:
- Allows for the creation and update of multiple liquidity lines within a single journal entry.
- Removes excess liquidity lines if _prepare_move_line_default_vals() returns fewer lines than currently exist.
- Account type-based counterparty identification: Replaces the previous position-based identification with an approach based on account types.
- The starting index for extra line values is now dynamic, determined by the number of liquidity lines
- Removed _l10n_latam_check_split_move method:
- This method is no longer necessary given the new implementation that supports multiple liquidity lines in a single journal entry.
- Modified _prepare_move_line_default_vals() method: - Now returns one liquidity line for each registered own check, simplifying the generation of journal entries.
- Preserved _l10n_latam_check_unlink_split_move() method:
- Maintained for backward compatibility purposes, allowing payments containing split moves to be set to draft status.
Description of the issue/feature this PR addresses:
Current behavior before PR:
Desired behavior after PR is merged:
opw-4236815
---
I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-prThe Mexico payroll module now includes the new official minimum daily wage value for 2025. This helps ensure payroll calculations use the correct wage reference for the new year.
Original PR description
There is a new value for the minimum daily wage for 2025. Task: 4510726
Financial reports can now group results using searchable fields even when those fields are not physically stored in the database. This gives businesses more flexibility for reporting scenarios such as consolidation, where custom related fields may be needed for analysis.
Original PR description
At the moment, the allowed groupbys for the standard report engines (account codes, domain, tax tags) need to be stored fields on `account.move.line`, or be defined in the custom handler. We want to be able to group by any field that is searchable and has `_field_to_sql` implemented for it. For example, for consolidation, users might want to create a non-stored field related to `account_id.code` and group by it. After this commit, groupbys can be any searchable field for which `_field_to_sql` is defined, regardless of whether it is stored or not. task-4259552
The Documents app is easier to use on mobile devices, with clearer navigation, better action button display, and a more practical folder and file layout. Selecting records on mobile no longer causes an error, making the experience more reliable for users working from phones or tablets.
Original PR description
Changes: 1. On click chatter button, scrolldown to chatter so that we know what happens. 2. Don't show 'Folders' if a record is selected. 3. Properly show control action buttons. 4. Display folder/files into 2 columns, 3 columns if landscape on mobile. Task-4380904
Resolved issues and error corrections
The point of sale now handles currencies that do not use decimal places without failing during product sales. This prevents checkout errors for businesses operating in zero-decimal currencies and keeps sales processing reliable.
Original PR description
Before this commit, if a currency had zero decimal places, it would cause an error when selling products. opw-4543742 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Point of Sale now loads only categories that contain products, instead of showing every configured category. This keeps product screens and self-order menus cleaner and easier for staff and customers to navigate.
Original PR description
Before this commit: ==== - All POS categories were being loaded, even if they had no associated products. After this commit: ==== - Only categories linked to products are loaded. Task-4517979
This fixes an error that could appear when exporting products and selecting related stock information from the export dialog. Users can now export these nested product details without the list filter being incorrectly applied to unrelated data.
Original PR description
**Steps to reproduce**
1. Have Stock and Sales installed.
2. Go to the Sales list view of products, have more than 1 page of products.
3. Select all the products on the current page by checking the checkbox
on the first line. After that, click on "Select all" to select all
products.
4. Actions > Export
5. Select "Products" (`product_variant_ids`) and then "Products/Stock Quant"
(`stock_quant_ids`).
`ValueError: Invalid field stock.quant.sale_ok in leaf ('sale_ok', '=', True)`
**Change**
Only use the domain of the list view to filter fields when the export dialog
is opened. The domain should only be used for that and not when `getExportFields`
is called when clicking on one of the children fields of the root model.
opw-4408457Fixes an issue where refreshing a form after moving between records could reload the originally opened record instead of the current one. This keeps users on the correct record and avoids confusion or accidental work on the wrong item.
Original PR description
From a list or kanban view with several records, open a record in form view. Then use the pager to navigate to another record. From this point, execute the `soft_reload` client action (e.g. call a python method from a view button, which returns that client action). This client action is supposed to reload the current controller (the form view in this case), without reloading the whole webclient. Before this commit, the form was indeed reloaded, but the reloaded record was the one we opened first, not the one we reached after navigating with the pager. With this commit, the correct record is reloaded. Issue spotted for task-3935688 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
This fix updates report links in periodic digest emails so they use the current Odoo URL format. Users clicking “Open Report” links from digest emails will no longer hit missing-action errors across affected apps such as CRM, Sales, Accounting, Projects, Recruitment, Point of Sale, and eCommerce.
Original PR description
Some URLs in the digest emails are currently broken due to an outdated URL format. ### Steps to reproduce * Install `digest` and `crm` modules * Go to Settings > Technical > Digest Emails * Select the "Your Odoo Periodic Digest" digest and send it * Check the sent email and click on any of the "Open Email" links You should encounter an error indicating that the action does not exist. Although the reproduction steps use the `crm` module as an example, this issue occurs with all the modules listed in the title. ### Cause The "Open Report" URLs were not updated to account for the new URL format. opw-4405288 opw-4502625
This fixes an issue where a delivery removed from a wave after its quantity was set to zero was left without a new wave assignment. Affected warehouse operations now remain properly grouped, helping teams avoid lost or unmanaged delivery work during wave validation.
Original PR description
Steps to reproduce the bug:
- Enable the multi-step route.
- Go to the Delivery Operation Type:
- Enable "Automatic Batches". - Enable "Wave Grouping". - Product Category: All
- Create two storable products: "P1" and "P2".
- Create a first delivery:
- One unit of P1.
- Mark it as "To Do" → a wave transfer is created.
- Create a second delivery:
- One unit of P2.
- Mark it as "To Do" → it is added to the first wave.
- Go to the wave:
- Update the quantity of P2 to 0.
- Validate the wave
Problem:
The picking of P2 is detached but not linked to a new wave.
opw-4444263Cancelling POS order lines now sends the required information to produce a proper kitchen ticket instead of an empty or incomplete receipt. This helps staff clearly see cancelled items and avoids confusion during order preparation.
Original PR description
steps to reproduce: === - open POS - make an order - click on order - open this order - delete order lines - click on order (negatives qty) Issue: === - insufficient data to display in receipt fixed: === - configured data required to print task: 4507218
This fix prevents errors when exporting selected products that use inherited property fields. It helps users complete product exports reliably without encountering a traceback.
Original PR description
Try to export one selected product.product generate a traceback due to the `_get_property_fields` that doesn't manage inherited properties. opw-4438752
The translation button is now visible again when editing report source files in Studio. This lets users translate report field labels as expected, avoiding confusion and restoring an important workflow for multilingual businesses.
Original PR description
Version - 18.0 Problem - The translation button in the studio reports is hidden/ not accessible to the customer Steps to reproduce- 1. Open Sales app > Go to the Studio view > Select Reports from the menu > Open any report among the listed ones 2. On the left hand side - in the studio editor select "Edit Source" 3. On the Edit source file - In the initial version there used to be an EN (Translation button) for them to translate the display field names opw-4417402
This fix ensures Italian Point of Sale orders correctly handle products whose prices exclude tax. It improves the accuracy of receipts, order totals, and related accounting documents when tax is added at checkout.
Digest emails now use the updated link format so users can open reports directly from their emails without hitting missing-action errors. This restores expected access to report links across affected business apps such as accounting, helpdesk, and website sales dashboards.
Original PR description
Some URLs in the digest emails are currently broken due to an outdated URL format. ### Steps to reproduce * Install `digest` and `crm` modules * Go to Settings > Technical > Digest Emails * Select the "Your Odoo Periodic Digest" digest and send it * Check the sent email and click on any of the "Open Email" links You should encounter an error indicating that the action does not exist. Although the reproduction steps use the `crm` module as an example, this issue occurs with all the modules listed in the title. ### Cause The "Open Report" URLs were not updated to account for the new URL format. opw-4405288 opw-4502625