Wednesday, April 15, 2026
132 changes
6 changes
New functionality added to Odoo
This update introduces basic financial reports tailored for Uzbekistan businesses within Odoo. It includes essential reports like the Balance Sheet and Profit & Loss Report, allowing users to generate key financial data specific to Uzbekistan's accounting standards. This expands Odoo's capabilities to meet the needs of businesses operating in that region.
Original PR description
This commit introduces basic report package for Uzbekistan and includes Balance Sheet and Profit & Loss Report. task-3927927 Community PR - https://github.com/odoo/odoo/pull/241811 Forward-Port-Of: odoo/enterprise#113652 Forward-Port-Of: odoo/enterprise#103136
Enhancements to existing features
This update automatically populates the TimesheetSystray with the project and task the user was working on when they opened it, making it easier to start logging time. Before this change, users had to manually select these values. The update also ensures that the selected project and task are actually valid for timesheet tracking.
Original PR description
To ease UX, we default the project and/or task field of the TimesheetSystray to the one that the user has opened (if the values were not already set manually by the user). OPW-6122906
Resolved issues and error corrections
This update corrects a minor issue in the Batch Payment report. Previously, the report would incorrectly display placeholder values ('ABC Holder Name' and 'Demo Ref') when the Account Holder Name field was left blank. This fix ensures the report accurately reflects the payment details, providing a cleaner and more professional output for users.
Original PR description
**Steps to reproduce:**
- Install the `account_batch_payment` module.
- Navigate to Invoicing > Customers > Payments.
- Create a new payment with `Payment Type: Send` and
select a customer without setting an `Account Holder Name`.
- Create a batch payment including this payment.
- From the gear icon, click `Print Batch Payment`.
**Observation:**
In the generated report:
- `Account Holder Name` shows `ABC Holder Name`.
- `Memo` shows `Demo Ref`.
**Root Cause:**
At [1], the default demo values ("ABC Holder Name", "Demo Ref") are rendered
when the fields are empty, instead of being left blank.
**Fix:**
This commit ensures that the `Account Holder Name` and `Memo` are `blank`
in the printed Batch Payment report when their values are not set.
[1]:
https://github.com/odoo/enterprise/blob/327d4478128f33fb2e0c477533bd4983178abf17/account_batch_payment/report/account_batch_payment_report_templates.xml#L36-L38
opw-6092595
Forward-Port-Of: odoo/enterprise#1135152 changes
Resolved issues and error corrections
This update corrects a minor issue in the Batch Payment report. Previously, the report would incorrectly display placeholder text ('ABC Holder Name' and 'Demo Ref') when the Account Holder Name field was left blank. This change ensures the report accurately reflects the payment details, providing a cleaner and more professional output.
Original PR description
**Steps to reproduce:**
- Install the `account_batch_payment` module.
- Navigate to Invoicing > Customers > Payments.
- Create a new payment with `Payment Type: Send` and
select a customer without setting an `Account Holder Name`.
- Create a batch payment including this payment.
- From the gear icon, click `Print Batch Payment`.
**Observation:**
In the generated report:
- `Account Holder Name` shows `ABC Holder Name`.
- `Memo` shows `Demo Ref`.
**Root Cause:**
At [1], the default demo values ("ABC Holder Name", "Demo Ref") are rendered
when the fields are empty, instead of being left blank.
**Fix:**
This commit ensures that the `Account Holder Name` and `Memo` are `blank`
in the printed Batch Payment report when their values are not set.
[1]:
https://github.com/odoo/enterprise/blob/327d4478128f33fb2e0c477533bd4983178abf17/account_batch_payment/report/account_batch_payment_report_templates.xml#L36-L38
opw-6092595
Forward-Port-Of: odoo/enterprise#1135152 changes
Resolved issues and error corrections
This update corrects a minor issue in the Batch Payment reports. Previously, the report would incorrectly display default 'demo' values (like 'ABC Holder Name') when a customer's name wasn't provided. Now, the report correctly leaves these fields blank, ensuring accurate and professional-looking payment documents.
Original PR description
**Steps to reproduce:**
- Install the `account_batch_payment` module.
- Navigate to Invoicing > Customers > Payments.
- Create a new payment with `Payment Type: Send` and
select a customer without setting an `Account Holder Name`.
- Create a batch payment including this payment.
- From the gear icon, click `Print Batch Payment`.
**Observation:**
In the generated report:
- `Account Holder Name` shows `ABC Holder Name`.
- `Memo` shows `Demo Ref`.
**Root Cause:**
At [1], the default demo values ("ABC Holder Name", "Demo Ref") are rendered
when the fields are empty, instead of being left blank.
**Fix:**
This commit ensures that the `Account Holder Name` and `Memo` are `blank`
in the printed Batch Payment report when their values are not set.
[1]:
https://github.com/odoo/enterprise/blob/327d4478128f33fb2e0c477533bd4983178abf17/account_batch_payment/report/account_batch_payment_report_templates.xml#L36-L38
opw-6092595
Forward-Port-Of: odoo/enterprise#1135153 changes
Resolved issues and error corrections
This update resolves an issue preventing Point of Sale (PoS) users from accessing the sinvoice symbol. By granting the necessary access rights, this change ensures PoS users can properly utilize the feature as intended. This improves functionality for retail operations.
Original PR description
Add access right for sinvoice symbol so that PoS user can access to it. Forward-Port-Of: odoo/odoo#259045
1 change
Resolved issues and error corrections
This update resolves an issue where the Batch Payment report incorrectly displayed default 'demo' values (Account Holder Name and Memo) when customer information was missing. The fix ensures that these fields are blank in the report, providing accurate and clean payment details for customers without specified account holder names.
Original PR description
**Steps to reproduce:**
- Install the `account_batch_payment` module.
- Navigate to Invoicing > Customers > Payments.
- Create a new payment with `Payment Type: Send` and
select a customer without setting an `Account Holder Name`.
- Create a batch payment including this payment.
- From the gear icon, click `Print Batch Payment`.
**Observation:**
In the generated report:
- `Account Holder Name` shows `ABC Holder Name`.
- `Memo` shows `Demo Ref`.
**Root Cause:**
At [1], the default demo values ("ABC Holder Name", "Demo Ref") are rendered
when the fields are empty, instead of being left blank.
**Fix:**
This commit ensures that the `Account Holder Name` and `Memo` are `blank`
in the printed Batch Payment report when their values are not set.
[1]:
https://github.com/odoo/enterprise/blob/327d4478128f33fb2e0c477533bd4983178abf17/account_batch_payment/report/account_batch_payment_report_templates.xml#L36-L38
opw-6092595
Forward-Port-Of: odoo/enterprise#1135157 changes
Enhancements to existing features
This update moves the RDO field from the individual partner record to the company record in the Odoo system. This change optimizes database performance by reducing unnecessary data storage and aligns the field's usage with its intended purpose – exporting company-level data. It's a minor improvement that enhances database efficiency.
Original PR description
[IMP] l10n_ph_reports: move RDO field from partner to company This commit moves the field `l10n_ph_rdo` from model `res.partner` to `res.company` As the field is only ever used for export with the company datas, this will avoid to overload the db with a column poorly used task-6071014
1 change
Resolved issues and error corrections
This update resolves an issue where very small order weights (under 1kg) weren't being correctly converted to grams before being sent to the shipping carrier. Previously, the system treated these as zero, leading to rejected orders. Now, all non-zero lightweight orders are accurately converted, ensuring shipments meet carrier minimum weight requirements.
Original PR description
Before this commit, `sendcloud_convert_weight()` used the source UoM rounding to short-circuit zero values. On databases where the weight UoM is `kg` with a rounding of `1.0`, any weight below 1kg was treated as zero and returned unconverted. For example, 0.23kg stayed 0.23 instead of being converted to 230g, `int()` turned it into 0, and Sendcloud rejected the order as being below the carrier minimum weight. This commit ensures that non-zero lightweight orders are properly converted before Sendcloud weight checks are applied. opw-6014572
2 changes
Resolved issues and error corrections
This update fixes an error in how Odoo calculates depreciation for companies with non-standard fiscal years. Previously, depreciation entries were missed for certain months, particularly at the beginning of the next fiscal year. The fix ensures accurate depreciation calculations based on the company's actual fiscal year start date.
Original PR description
When a company has a shortened fiscal year defined via account.fiscal.year (e.g. May-December), the depreciation board computation for degressive assets incorrectly computes the start of the next…
1 change
Resolved issues and error corrections
This pull request addresses a bug in the Czech VAT reporting module (l10n_cz_reports_2025) that was preventing accurate summary reports. The fix corrects a calculation error, ensuring that VAT reports generated for Czech businesses align with local regulations. This update improves the reliability of financial reporting.
Original PR description
opw- 5979262
This update resolves a test failure related to inter-company stock transfers. The test required demo data to function correctly, which is no longer needed. By removing the dependency on demo data, the test now passes consistently in a standard Odoo environment.
Original PR description
*: sale_purchase_stock_inter_company_rules ### Steps to reproduce: - Create a DB without demo data - Install stock_dropshipping, sale_purchase_stock_inter_company_rules - Run the test `test_08_dropship_inter_company_vendor_to_customer` ### Issue: The test `test_08_dropship_inter_company_vendor_to_customer` fails here: https://github.com/odoo/enterprise/blob/fd3c9d894d8821ed1d1a110cdffb5e16fb54590a/sale_purchase_stock_inter_company_rules/tests/test_inter_company_po_to_so.py#L497-L501 since the `lot_ids` are only visible for users with the `stock.group_production_lot` group: https://github.com/odoo/odoo/blob/544961c1c6db254c4292d88096bdf9363e35f0bc/addons/stock/views/stock_picking_views.xml#L310-L318 And this group is only implied with demo data: https://github.com/odoo/odoo/blob/544961c1c6db254c4292d88096bdf9363e35f0bc/addons/stock/data/stock_demo.xml#L190-L193 opw-6085811 Forward-Port-Of: odoo/enterprise#113120
This update fixes an issue where the payroll warning date incorrectly jumped to the next month when the system date was set before the closing day. The fix ensures the warning remains in the current month until the closing day has passed, improving payroll accuracy and reducing potential user confusion.
Original PR description
steps to reproduce: - install `hr_payroll` - set closing day as "5th of next month" (via schedule warning) - set system date as <5 of the month - notice that the warning date jumped to next month description: - it should stay in the current month until closing day has passed cause: - there was no check for if the closing day has passed while in the next month scenario fix: - jump to next month only if today has passed closing date. (also fixed a wrong docstring) [task#6084911](https://www.odoo.com/odoo/project/1251/tasks/6084911)
This update fixes a calculation issue related to canteen costs in the payroll module for Belgium (l10n_be_hr_payroll). Previously, the system didn't accurately calculate canteen costs when there were no recorded workdays. This change ensures that canteen costs are now correctly simulated within the payroll configuration.
Original PR description
We add simulation context in the canteen cost condition, since we dont have worked day lines in that case
A recent change in the sign request process caused a technical error that prevented users from accessing sign requests. This fix ensures that the system correctly checks for the existence of sign items before attempting to compare their types, resolving the underlying issue. This improves the reliability of the sign request functionality.
Original PR description
This issue occurs because, in the recent [commit], `sign_request` was changed to `sign_item`, but the `sign_item.exists()` check is performed after the type comparison, resulting in a `TypeError`.…
This issue occurs because, in the recent [commit], `sign_request` was changed to `sign_item`, but the `sign_item.exists()` check is performed after the type comparison, resulting in a `TypeError`.
Traceback:
```py
File "/home/odoo/src/odoo/saas-19.2/odoo/addons/base/models/ir_http.py", line 415, in _dispatch
result = endpoint(**request.params)
File "/home/odoo/src/odoo/saas-19.2/odoo/http/routing_map.py", line 207, in route_wrapper
result = endpoint(self, *args, **params_ok)
File "/home/odoo/src/enterprise/saas-19.2/sign/controllers/main.py", line 708, in get_sign_request_items
if not sign_request.exists() or not consteq(sign_item.access_token, token) or not sign_item.exists() or not sign_item.signer_email:
TypeError: unsupported operand types(s) or combination of types: 'bool' and 'str'
```
Solution:
We first perform the existence check and then compare the types.
[commit]: https://github.com/odoo/enterprise/pull/111786/changes/f40082f4e6f50dccbfa639edbef08428868cb31d
sentry-7376866293
Forward-Port-Of: odoo/enterprise#112659This update corrects a discrepancy in the sale and purchase journal dashboards. Previously, receipt data wasn't included, leading to inaccurate counts. Now, receipts are incorporated, ensuring dashboard metrics align with actual sales and purchase records for a more reliable view of business activity.
Original PR description
- The sale and purchase journal dashboards excluded receipts while the action view included them, causing a mismatch between counts and displayed records. Include receipts in the dashboard query to ensure consistency. Related PR:https://github.com/odoo/odoo/pull/254295 taskID-6040828 Forward-Port-Of: odoo/enterprise#111142
This update resolves an issue where the Batch Payment report incorrectly displayed default 'demo' values (Account Holder Name and Memo) when customer information was missing. The fix ensures that these fields are blank in the report, presenting accurate and clean payment details for users. This improves the clarity and professionalism of the printed reports.
Original PR description
**Steps to reproduce:**
- Install the `account_batch_payment` module.
- Navigate to Invoicing > Customers > Payments.
- Create a new payment with `Payment Type: Send` and
select a customer without setting an `Account Holder Name`.
- Create a batch payment including this payment.
- From the gear icon, click `Print Batch Payment`.
**Observation:**
In the generated report:
- `Account Holder Name` shows `ABC Holder Name`.
- `Memo` shows `Demo Ref`.
**Root Cause:**
At [1], the default demo values ("ABC Holder Name", "Demo Ref") are rendered
when the fields are empty, instead of being left blank.
**Fix:**
This commit ensures that the `Account Holder Name` and `Memo` are `blank`
in the printed Batch Payment report when their values are not set.
[1]:
https://github.com/odoo/enterprise/blob/327d4478128f33fb2e0c477533bd4983178abf17/account_batch_payment/report/account_batch_payment_report_templates.xml#L36-L38
opw-6092595
Forward-Port-Of: odoo/enterprise#113515This update fixes a potential issue where website tours could incorrectly proceed if the chat feature was temporarily empty. The change implements a more reliable check to ensure the tour only continues when the empty chat is definitively confirmed, improving the overall user experience. This ensures tours function consistently and reliably.
Original PR description
The previous negative assertion could pass prematurely during fast tour execution. Switching to a specific text based assertion ensures the step only proceeds once the empty conversation is explicitly confirmed. Forward-Port-Of: odoo/odoo#258921
Resolved issues and error corrections
This update corrects a bug where the payroll warning date incorrectly jumped to the next month when the system date was set before the closing day. The fix ensures the warning remains in the current month until the closing day has passed, preventing confusion and ensuring accurate payroll calculations. A related documentation error was also addressed.
Original PR description
steps to reproduce: - install `hr_payroll` - set closing day as "5th of next month" (via schedule warning) - set system date as <5 of the month - notice that the warning date jumped to next month description: - it should stay in the current month until closing day has passed cause: - there was no check for if the closing day has passed while in the next month scenario fix: - jump to next month only if today has passed closing date. (also fixed a wrong docstring) [task#6084911](https://www.odoo.com/odoo/project/1251/tasks/6084911) Forward-Port-Of: odoo/enterprise#112597
This update corrects a display issue in predefined filters within Odoo Enterprise, replacing the "Invalid Datetime" error with the correct smart date options. This improves the user experience when editing filters for tasks and messages, ensuring accurate date range selections. A related change also updates date range logic for certain filters, such as excluding today's date in some cases.
Original PR description
In many predefined custom filters (eg. `Project > All tasks > Search Bar > Closed On > Last 30 days`), when editing the filter (eg. click on the label), the editor opens on "Invalid Datetime". This…
In many predefined custom filters (eg. `Project > All tasks > Search Bar > Closed On > Last 30 days`), when editing the filter (eg. click on the label), the editor opens on "Invalid Datetime". This PR makes the predefined filters that match an existing smart date land on the smart dates instead of "Invalid Datetime". WHY: The way the date ranges are coded in the python files does not match the expected structure of the smart dates. FIX: By reformatting the domain of the predefined filter the search model is able to interpret that as smart ranges and displays the correct label and dropdown option when editing the filter. NOTE: - The reformatting of the domain sometimes also changes the logic (ie which records that are displayed). Notably in the IM livechat the "Last 7 days", "Last 30 days" ... filters now exclude today. This was asked by the framework PO (CTH) and I double checked with the discuss PO (FHE). - The task also include making a new relative range filter, but was split in 2 so that this part can be merged before the freeze (see odoo/odoo#252484) - We also change the smart date "Last 12 months" to "Last 365 days" as this is clearer from a user perspective and last 365 days was more used in arch filters. (previously when applying last 12 months smart date the range was set to the the 1st of 12 months ago to the 1st of the current month) - I also added some helpers to the test files to make them more readable and shorter. Community PR: odoo/odoo#257914 task#5959944
This update fixes an issue where rental product prices were incorrectly shown as list prices in search results. The change ensures that users see the accurate rental price, improving the shopping experience and preventing pricing discrepancies. This was a result of recent searchbar refactoring.
Original PR description
After the searchbar refactoring in [1], In the search results, rental product prices were incorrectly replaced by their list price. Ensure the correct rental price is displayed instead of the list price. task-6105283
This update corrects inaccurate titles and links within the Phone dashboard. The changes ensure users are directed to the correct information, enhancing the clarity and usability of this key reporting tool. This fix was made to improve the overall user experience.
Original PR description
This commit fixes two titles (and links) in the Phone dashboard. Task: 6120857 Forward-Port-Of: odoo/enterprise#113828
Features or functions removed from Odoo
This update removes the 'im_status' field from partner records, which was previously used to track user online/offline presence. This change logically aligns the tracking of user status with the user model itself. It also removes the 'bot' IM status, streamlining data management.
Original PR description
Community PR: https://github.com/odoo/odoo/pull/248168 Upgrade PR: https://github.com/odoo/upgrade/pull/9861 This commit removes the im_status field from python's partner model. The concept of IM status belongs logically to the user model since it's about users's online/offline presence. This commit also removes the "bot" IM status.
Code cleanup and technical improvements
This update streamlines a key function within the account reports module, specifically in how it generates SQL queries for analytic coverage. This simplification enhances the speed and efficiency of report generation, leading to faster processing times and a better user experience. The change is a routine optimization.
Original PR description
Simplification of the function 'compute_sql_analytic_coverage' in account_analytic_line in the report module. Forward-Port-Of: odoo/enterprise#113842
When a company has a shortened fiscal year defined via account.fiscal.year (e.g. May-December), the depreciation board computation for degressive assets incorrectly computes the start of the next fiscal year using `date_from + 1 year` instead of querying the actual next fiscal year. This causes entries for the months between the wrong and correct FY start (e.g. January-April) to be skipped entirely. Step to reproduce: - Create a company with a fiscal year starting in May (e.g. May 1st 2025 to 31st December 2025) - Create an asset with a start date in the 1 December 2025, with a 24 months duration and degressive method - Compute the board and observe that entries from January to April 2026 are missing Fix the FY boundary detection in _recompute_board to query the fiscal year containing the day after the current period end, revert the effective_start_date logic in _compute_board_amount that was masking the root cause, and move the prorata date clamping to _create_move_before_date where it is needed for disposal. opw-6016834 Forward-Port-Of: odoo/enterprise#113521
This update resolves an issue where barcode quantities were displayed with slight rounding errors due to how JavaScript handles decimal numbers. The fix ensures accurate quantity representation in the barcode interface, preventing discrepancies in inventory tracking. This improves data reliability for stock management operations.
Original PR description
**Steps to reproduce:** * Install `stock` module. * Go to Settings and enable: * Storage Locations (Warehouse). * Batch, Wave & Cluster Transfers. * Create a Product and set its on-hand quantity to…
**Steps to reproduce:**
* Install `stock` module.
* Go to Settings and enable:
* Storage Locations (Warehouse).
* Batch, Wave & Cluster Transfers.
* Create a Product and set its on-hand quantity to 60.
* Go to Inventory → Configuration → Operation Types and create a new operation type:
* Set Type of Operation to Internal Transfer.
* In the Barcode App tab, enable Group batch lines.
* Go to Inventory → Operations → Internal Transfers and create a new transfer:
* Select the newly created Operation Type.
* Add the created Product with quantity 4.4.
* Mark the transfer as To Do.
* Create another Internal Transfer with the same configuration:
* Select the same Operation Type.
* Add the same Product with quantity 48.8.
* Mark the transfer as To Do.
* Open the Internal Transfers list view.
* Select both created transfers.
* Click Action → Add to Wave Transfer.
* Choose A new Wave Transfer and confirm.
* In the popup, select both transfers and add them to the wave.
* Open the Barcode application.
* Open the created operation and select the Batch on the right side
to open the wave transfer in the barcode interface.
**Observed behavior:**
- The grouped line quantity is displayed as 53.99999996 instead of
the expected value(53.2).
**Cause:**
- When the Barcode app loads data,` _createState()` is executed,
which calls `groupLines()`.
- Inside this method, quantities are aggregated using standard
JavaScript floating-point addition:
https://github.com/odoo/enterprise/blob/08d0a7f480046bb489ca69e7b3535e99cb20eee5/stock_barcode_picking_batch/static/src/models/barcode_picking_batch_model.js#L204-L205
- Since JavaScript stores numbers as binary floating-point values,
decimals like 4.4 and 48.8 cannot be represented exactly.
Repeated additions accumulate precision errors, producing results
like 53.99999996 instead of 53.2.
**Fix:**
- Aggregate quantities using `formatFloat` with the barcode precision
before converting them back to floats
- `formatFloat` rounds the value according to the configured precision
of the barcode model, ensuring the intermediate result is normalized
after each addition. Converting the formatted value back with
`parseFloat` guarantees the stored number respects the expected
decimal precision and prevents floating-point accumulation errors.
---
opw-5932329