Thursday, February 26, 2026
29 changes · saas-19.2
New functionality added to Odoo
This update introduces a new Fixed Asset Listing (FAL) report specifically for the Book of Accounts, enabling export to .csv and .pdf formats compliant with BIR regulations. The report includes custom filters for Asset Status and Asset Models, ensuring accurate reporting of assets, including historical and indefinite-life assets.
Original PR description
Todo: - [x] complete the 2 custom filters (finish up the WIP js) - [x] PDF export (aims the GL for some reason, should be simple targeting the selected_section_id or smth) - [x] CSV export (simple)…
Todo: - [x] complete the 2 custom filters (finish up the WIP js) - [x] PDF export (aims the GL for some reason, should be simple targeting the selected_section_id or smth) - [x] CSV export (simple) ~~- [ ] make `_build_custom_columns()` into a parent helper (and give it a better name) with GJ~~ - [x] handle the changes in https://github.com/odoo/enterprise/pull/102950 if merged before - [x] ^ stuff like the updated `method_number` - [ ] https://github.com/odoo/enterprise/pull/102808 --- ## [ADD] l10n_ph_reports_asset: Subsidiary BOA - Fixed Asset Listing This commit adds the Fixed Asset Listing (FAL) subsidiary report to the Book of Accounts. It, like all other BoA reports, supports export in .csv and .pdf formats as required by the BIR. This report introduces 2 custom filters for Asset Status and Asset Models that are fully-supported in the PDF export. --- Technical Choices: - **Entity-First Strategy:** Unlike standard transaction-based reports (GL), this report uses a registry-based query (`FROM account_asset`). This ensures visibility for historical assets with no current depreciation), indefinite-life assets (e.g., Land), and simulated assets. - **Date Overlap Logic:** The date range filtering will show assset lines that are running or projected to run. We determine asset end of life by disposal date (if applicable) or useful life. We also handle infinite life assets (method_number = 0). - **Custom Filters**: They are designed as dropdown selects with UI behavior mimicing filter_journal. Supports multi-company. Asset Model filter will be hidden if there are no Asset Models created. - We deduplicate column values across colgroups for ease of reading. - Accumulated Depreciation column will only show depreciation AMLs. This excludes modifications to depreciations such as selling and disposal. Changes summary: - Add `l10n_ph.boa.fal.report.handler` abstract model. - Add `L10nPhBoaFalReportFilters` and it's PDF export display - Add CSV and PDF export templates. Testing/Verification: Includes snapshot testing of the web view and csv export data and some extra tests to check for these features: - Indefinite life assets (e.g., Land with 0 duration) - Historical assets (acquired years ago, still running) - Future/Simulated assets (Draft state with analytic distribution) - Custom filters work as intended task-[5419877](https://www.odoo.com/odoo/action-4043/5419877)
Enhancements to existing features
This update adds tests to ensure accurate calculation of wage types on payslips, considering variations in employee contracts and leave requests across different months. These tests verify that the system correctly handles multiple wage types and leave scenarios, leading to more reliable payroll processing. This improves the accuracy of payslip generation for Swiss employees.
Original PR description
This commit adds tests to the `_compute_l10n_ch_swiss_wage_ids` function to verify **Wage Types** in payslips across multiple months and with different **Monthly Wage Types** defined in an employee’s contract, as well as multiple leave requests occurring in different months. task-5906677 Forward-Port-Of: odoo/enterprise#107802
Resolved issues and error corrections
This update fixes an issue where users could add more than the available quantity of a product to their cart when Click & Collect was enabled. The change removes a previous workaround that allowed this behavior, ensuring accurate inventory tracking and preventing over-ordering. This improves the customer experience and prevents stock discrepancies.
Original PR description
Versions -------- - 19.0+ Steps ----- 1. Enable click and collect 2. Add a product with tracked inventory 3. Set the quantity on hand 4. Uncheck "Sell when Out-of-stock" 5. Try to add to cart more…
This update streamlines the messaging experience by replacing a generic dialog with dedicated, focused dialogs for key actions like leaving chat rooms, deleting messages, and pinning messages. This change improves code organization and makes it easier to maintain and update these specific messaging features.
Original PR description
This PR removes the generic MessageConfirmDialog component and replaces it with dedicated dialogs such as MessagePinUnpinDialog, LivechatLeaveDialog, and MessageDeleteDialog. Using dedicated dialogs…
This PR removes the generic MessageConfirmDialog component and replaces it with dedicated dialogs such as MessagePinUnpinDialog, LivechatLeaveDialog, and MessageDeleteDialog. Using dedicated dialogs simplifies the code, avoids unnecessary customization of a generic component, and makes each dialog easier to reason about by keeping its content static and scoped to its specific use case. <table> <tr> <th>Before</th> <th>After</th> </tr> <tr> <td> <img width="617" height="288" src="https://github.com/user-attachments/assets/f966b404-2942-4c93-aa8a-0f14d4666b54" /> </td> <td> <img width="611" height="310" alt="image" src="https://github.com/user-attachments/assets/be4aceb7-503c-4089-95c9-52983d6ad9f0" /> </td> </tr> <tr> <td> <img width="614" height="290" src="https://github.com/user-attachments/assets/c7aa4c79-8166-4414-a085-abe59eeb19b0" /> </td> <td> <img width="614" height="307" alt="image" src="https://github.com/user-attachments/assets/352e4e60-3a57-4cfb-aeef-011fabaf8cc1" /> </td> </tr> </table> enterprise: https://github.com/odoo/enterprise/pull/108806 task-5873845 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This pull request enhances the member invitation process within Odoo's channel management. It now allows users to more easily search for and invite external members, and also improves the notification experience when inviting or discussing members. The changes also include string updates for better usability.
Original PR description
1. align better in channel member invitation popover 2. allow searching external users in channel member invitation popover 3. allow opening avatarCard in the notification message in Discuss 4. update strings used in some use cases. task-5881048 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This update streamlines the process of creating bank accounts for companies, particularly those with trusted relationships. It now prompts users to directly verify bank details when needed, reducing potential errors and improving data accuracy. This change simplifies account creation and ensures proper verification for critical accounts.
Original PR description
Forward-Port-Of: odoo/odoo#249983
Versions
--------
- 19.0+
Steps
-----
1. Enable click and collect
2. Add a product with tracked inventory
3. Set the quantity on hand
4. Uncheck "Sell when Out-of-stock"
5. Try to add to cart more than the quantity on hand on the product page
- note that you are only allowed to add up to the quantity on hand
6. Try to add to cart more than the quantity on hand from the shop page by hovering over the product and clicking the cart icon
- note that you can add to cart more than the quantity on hand
7. Try to go to the cart page and adjust the quantity of the product
- note that it is reset to the quantity on hand and you're prevented from exceeding it
Issue
-----
You shouldn't be able to add to cart more than the quantity on hand of a product when you have "Sell when Out-of-stock" disabled. Especially since you can't do that from the product or cart page, and adjusting the extra quantity from the cart page leads it to reset.
Cause
-----
When you enable click and collect, it disables the check for quantity when adding items to cart. This was originally done because otherwise you had no way of adding items to cart in case there was a quantity available for pickup from shop but not available for delivery. This has changed since the introduction of the widget on the product page that allows you to select a store to pickup from in that case.
Solution
--------
Remove the code that disables checking for quantity when adding to cart when click to collect is installed.
opw-5449451
Forward-Port-Of: odoo/odoo#249876
Forward-Port-Of: odoo/odoo#242864This update resolves an issue preventing portal users and internal users from uploading documents to requested documents. The fix addresses a technical error related to how access tokens and folder IDs were being processed, specifically by ensuring that access tokens are correctly handled during the upload process. This improvement ensures all users can successfully upload documents to requests.
Original PR description
Portal users and internal users cannot upload a document in a requested document Steps to reproduce: 1. Install Documents 2. Go to Documents and create a new request for user Joel Willis 3. Connect as portal user and go to Documents 4. Try to upload the requested document 5. An error occurs The same problem occurs for user Marc Demo Problem: Sending both an access_token and a user_folder_id to the controller raises an error 400 https://github.com/odoo/enterprise/blob/519862bf9b708d756478d4d81787f8a1999bc574/documents/controllers/documents.py#L608-L609 Solution: Do not send a user_folder_id when we have an access_token opw-5439104 Forward-Port-Of: odoo/enterprise#106583
This update resolves a technical error that prevented users from submitting UK tax reports when the company's VAT value was left blank. The fix ensures that VAT is always set on the company record, allowing successful connection and report transmission to HMRC. This resolves a blocking issue impacting UK tax reporting.
Original PR description
Steps to Reproduce: https://www.awesomescreenshot.com/video/49329263?key=2daddfb65e4ee8dcf1a047c09c6bd2b5 - Install l10n_uk_reports module - Keep the VAT value empty for the UK Company - On the Tax…
Steps to Reproduce: https://www.awesomescreenshot.com/video/49329263?key=2daddfb65e4ee8dcf1a047c09c6bd2b5
- Install l10n_uk_reports module
- Keep the VAT value empty for the UK Company
- On the Tax Report (GB), click Connect to HMRC
- Establish connection with HMRC
- After a successful connection, try to send the tax report to HMRC
- Traceback will appear
<details><summary>Exact Traceback</summary>
<p>
```
RPC_ERROR
Odoo Server Error
Occured on 100710704-master-all.runbot216.odoo.com on model account.report on 2026-02-11 12:50:03 GMT
Traceback (most recent call last):
File "/data/build/odoo/odoo/http/requestlib.py", line 632, in _serve_db
return retrying(serve_func, env=self.env)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/data/build/odoo/odoo/http/retrying.py", line 52, in retrying
result = func()
^^^^^^
File "/data/build/odoo/odoo/http/requestlib.py", line 687, in _serve_ir_http
response = self.dispatcher.dispatch(rule.endpoint, args)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/data/build/odoo/odoo/http/dispatcher.py", line 308, in dispatch
result = self.request.registry['ir.http']._dispatch(endpoint)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/data/build/odoo/odoo/addons/base/models/ir_http.py", line 374, in _dispatch
result = endpoint(**request.params)
^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/data/build/odoo/odoo/http/routing_map.py", line 207, in route_wrapper
result = endpoint(self, *args, **params_ok)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/data/build/odoo/addons/web/controllers/dataset.py", line 32, in call_kw
return call_kw(request.env[model], method, args, kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/data/build/odoo/odoo/service/model.py", line 57, in call_kw
result = method(recs, *args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/data/build/enterprise/account_reports/models/account_report.py", line 2825, in dispatch_report_action
return report_to_call.dispatch_report_action(options, action, action_param=action_param, on_sections_source=False)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/data/build/enterprise/account_reports/models/account_report.py", line 2836, in dispatch_report_action
return report_method(model, *args)
^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/data/build/enterprise/l10n_uk_reports/models/account_financial_report.py", line 30, in send_hmrc
self.env['l10n_uk.vat.obligation'].import_vat_obligations(self.env.context['client_data'])
File "/data/build/enterprise/l10n_uk_reports/models/hmrc_vat_obligation.py", line 124, in import_vat_obligations
self._get_vat(),
^^^^^^^^^^^^^^^
File "/data/build/enterprise/l10n_uk_reports/models/hmrc_vat_obligation.py", line 111, in _get_vat
if vat.startswith(('GB', 'XI')):
^^^^^^^^^^^^^^
AttributeError: 'bool' object has no attribute 'startswith'
The above server error caused the following client error:
RPC_ERROR: Odoo Server Error
RPC_ERROR
at makeErrorFromResponse (https://100710704-master-all.runbot216.odoo.com/web/assets/0a37914/web.assets_web.min.js:3225:165)
at XMLHttpRequest.<anonymous> (https://100710704-master-all.runbot216.odoo.com/web/assets/0a37914/web.assets_web.min.js:3231:13)
```
</p>
</details>
Reason:
- No VAT set on the current company.
Solution:
- Blocking level error for the user to set VAT on the current company.
Task-5929908
Forward-Port-Of: odoo/enterprise#107150This update resolves an issue where invoices generated with the Folder layout in India (l10n_in) were being duplicated in the PDF print output. The problem stemmed from a formatting element in the invoice header that caused pagination errors. The fix adjusted the header tag to prevent this duplication, ensuring accurate invoice printing.
Original PR description
**Steps to reproduce:** 1. Install l10n_in module 2. Switch to india 3. Go to Settings → Configure Document Layout and select Folder layout. 4. Create two Invoices: Select a customer. Add at least 6–7 invoice lines. Confirm the invoices then duplicate and again confirm. 5. Go back to the Invoice list view. 6. Select both newly created invoices. 7. Click Print **Issue:** When using Folder layout, invoices were rendered twice in PDF while printing. **Cause:** The `HSN Summary` title used an `<h3>` tag. Its larger default margins increased the document height, triggering a pagination reflow issue in wkhtmltopdf specific to Folder layout (due to floats and dynamic header spacing). This caused the invoice to be rendered twice. **Fix:** Replaced `<h3>` with `<h4>` to reduce vertical spacing and avoid pagination overflow. opw-5452609 Forward-Port-Of: odoo/odoo#249413
This update resolves a bug where the booking management page wouldn't refresh correctly. The fix ensures the page renders properly after a refresh, improving the user experience for managing appointments within the POS system. This prevents disruptions and ensures accurate booking data.
Original PR description
Steps: ----- - Install pos_appointment and pos_urban_piper modules. - Open a session for an UrbanPiper-configured POS. - Open the Manage Booking page. - Refresh the page. Issue: ----- - The booking view is not rendered after a page refresh. Cause: ----- - An awaited request in the posStore setup caused the `ActionComponent` not to be rendered yet when the `doAction` was called. Fix: ----- - First render the `ActionComponent`, then fetch the action data, and finally call `doAction`, so the action is executed seamlessly without interruption. Task-5713125 Forward-Port-Of: odoo/enterprise#105629
A recent update to Odoo's mailing builder caused a crash when using company team snippets. This fix corrects a renaming issue where an image component was incorrectly labeled, preventing the builder from functioning properly. The update ensures the builder operates smoothly with company team templates.
Original PR description
The `Img` component was renamed `Image` in commit [1]. In the forward port [2], a template with usage of `Img` was not updated to use `Image` instead, resulting in an issue when using the company teams snippet. How to reproduce: - create a new mailing using the builder - add the s_company_team_shapes snippet - click on an `<img>` element Issue: - crash (Img component is missing) Solution: - rename Img to Image [1]: https://github.com/odoo/odoo/commit/a22e22acacc9d54f39d0f07acc3054cd2a33f61e [2]: https://github.com/odoo/odoo/commit/d2b56435736e8d507434c1378cb68fae23e8511f task-5963711 Forward-Port-Of: odoo/odoo#250234
This update fixes an issue where Gantt progress bars displayed incorrect hours due to timezone discrepancies. The change ensures that working hours are accurately calculated and displayed, regardless of the employee's calendar timezone, leading to more reliable planning data.
Original PR description
### Issue: Having a calendar with a timezone different from utc and looking at the planning gantt view, the hours displayed in the "Total" row are wrong. ### Steps to reproduce: - Have an employee…
### Issue: Having a calendar with a timezone different from utc and looking at the planning gantt view, the hours displayed in the "Total" row are wrong. ### Steps to reproduce: - Have an employee with a calendar in "Europe/Brussels" and working from 8 to 17 - In planning add a line for this employee - Display the gantt view on a day - Create a shift for this employee from 8 to 17 - In the "Total" row, the first hour is not counted ### Cause: To compute the values displayed in the Total row, we take the intersection of the shift and the working hours from the calendar. ([src](https://github.com/odoo/enterprise/blob/2b887d094c66be7aebd92fbf735b1852f5dde4b5/planning/static/src/views/planning_gantt/planning_gantt_renderer.js#L318)) But the working hours from the calendar are given in UTC for this computation (without conversion), this result in a discrepancy between the actual hours of the calendar (with timezone conversion) and the one given to compute the total row. ### Solution: `resource_work_intervals()` returns the work intervals with the calendar hours and the resource timezone. In our case, only the hours are interesting (the previous code replaced the timezone by UTC). We need to convert them from the calendar timezone to UTC. So the first thing to do is remove the timezone from `resource_work_interval` then we localize it in the calendar timezone and to finish we convert it to UTC. opw-5564749 Forward-Port-Of: odoo/enterprise#108369 Forward-Port-Of: odoo/enterprise#106891
This update resolves an error that previously prevented users from opening the Tax Returns report. The fix ensures that the report can successfully generate the necessary tax information by preventing errors related to invalid data IDs. This improves the reliability of a key accounting function.
Original PR description
Currently, an error occurs when a user opens the Tax Returns report. **Steps to Reproduce:** - Install the `Accounting` module. - Go to `Journal Entries` and create a journal entry with lines, `Ex:`…
Currently, an error occurs when a user opens the Tax Returns report. **Steps to Reproduce:** - Install the `Accounting` module. - Go to `Journal Entries` and create a journal entry with lines, `Ex:` - One `Receivable` line with a positive debit. - One `Income` line with the same credit. - `Post` the journal entry. - Go to `Accounting > Closing > Tax Returns`. - Set the `date` and click `Apply`. `AssertionError: Invalid falsy real id` When opening the Tax Returns report, it going generates the Annual Closing Checklist. During this process, it tries to get the unknown partner’s account line ID [1]. However, if the line_id does not contain anything related to the target model (account.move.line), the method returns None [2]. Later, it attempts to browse using this None value which raise the error [3]. This commit ensures that only valid ids are added, preventing None values from being browsed. [1]: https://github.com/odoo/enterprise/blob/887fb85cf3ed488187418c03df159af859a4e435/account_reports/models/account_return.py#L2365-L2371 [2]: https://github.com/odoo/enterprise/blob/887fb85cf3ed488187418c03df159af859a4e435/account_reports/models/account_report.py#L2461 [3]: https://github.com/odoo/enterprise/blob/887fb85cf3ed488187418c03df159af859a4e435/account_reports/models/account_return.py#L2399 sentry-7263718845 Forward-Port-Of: odoo/enterprise#107524
This update corrects a bug where loyalty points were incorrectly calculated and duplicated after saving a POS order, particularly in draft and cancelled states. The fix ensures that loyalty points are accurately reflected based on the order's state, preventing over-accumulation of points. This improves the accuracy of customer loyalty programs.
Original PR description
Step to reproduce: - have a trusted pos and a loyalty program which gives points per $ spent - start pos and select order and a partner (he should already have some LPs) - notice the loyalty points…
Step to reproduce:
- have a trusted pos and a loyalty program which gives points per $ spent
- start pos and select order and a partner (he should already have some LPs)
- notice the loyalty points assgined
- save the order, you are redirected to new order
- switch back to original order
Observation:
- Notice, the loyalty points are reassigned for example :
- if initially partner's LP = 50, product added is 100$ , LP = 50+100 = 150
- After saving, LP becomes 150 + 100 = 250
Cause:
- LP's are processed after every `sync_from_ui` call from `_postProcessLoyalty` which updates the customer's lp, even before the order is fullfilled or when order is still in `draft` state
Fix:
- Issue is fixed in https://github.com/odoo/odoo/commit/a4b37ec474656c7af23d0134251d589e9a6a61ca
- This commit adds related test for the fix
opw-5609964
---
I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Forward-Port-Of: odoo/odoo#248420
Forward-Port-Of: odoo/odoo#245400This update resolves a validation error occurring during tax calculations for invoices in Brazil (BR) localization. The issue stemmed from the system incorrectly considering existing tax data, leading to inaccurate information sent to the AvatTax service. This fix ensures correct tax calculations are sent to AvatTax, preventing invoice validation failures.
Original PR description
Steps to reproduce: - Set up a Company with BR localization - Create a product as follows: - [General Information] Product Type: Service - [Sales] LC116 Code: 14.01 - [Sales] Purpose of Use: Not…
Steps to reproduce: - Set up a Company with BR localization - Create a product as follows: - [General Information] Product Type: Service - [Sales] LC116 Code: 14.01 - [Sales] Purpose of Use: Not applicable - [Sales] Service Code Origin: 14.01.3/168061/1524 - [Sales] Service Codes: 14.01.3/168061/1524 - Create an Invoice with Document Type "Electronic Service Invoice - NFS-e" - Add the product on the line - Compute taxes - Compute taxes again Issue: Action will be blocked by a validation error resulting from the external taxes call ``` odoo.exceptions.ValidationError: Odoo could not fetch the taxes related to Draft Invoice. Errors: Rejection: Total Installments doesnt match Total Lines ∑ installments[m]grossValue - ∑ (lines[n].lineAmount-line[n].lineTaxedDiscount) <> 0 ``` It occurs because during the call the system is considering the existing taxes on the line and it will send to the avatax service wrong amounts opw-5412456 opw-5409735 Forward-Port-Of: odoo/enterprise#108403 Forward-Port-Of: odoo/enterprise#108088
This update fixes an issue where the Swiss ISO20022 payment XML generation was producing invalid files due to incorrect data formatting. Specifically, it ensures that only one of BIC or ClrSysMmbId is included, aligning with Swiss banking standards. This prevents payment processing errors and ensures compliance.
Original PR description
**Steps to reproduce:** - Install 'account_iso20022', 'l10n_ch' and switch to a Swiss company - Have a bank with a BIC number and an account for that bank with a clearing number - Create a vendor…
**Steps to reproduce:** - Install 'account_iso20022', 'l10n_ch' and switch to a Swiss company - Have a bank with a BIC number and an account for that bank with a clearing number - Create a vendor bill for a Swiss partner or payrun report - Pay with "Swiss ISO20022" > generate xml pain001 - Validate against xsd or any swiss pain001 test plateform > Incorrect rules usage ! not valid xml ! **Cause:** In the XML the field BIC and ClrSysMmbId are present. Only one of them can be present. See the [documentation (page 27 and 33)](https://www.six-group.com/dam/download/banking-services/interbank-clearing/fr/standardization/iso/swiss-recommendations/archives/implementation-guidelines-ct/implementation-guidelines-ct_v1_6_1.pdf). **Solution:** Create the method `_get_ClrSysMmbId()` which will only return for Swiss if there is no BIC number. This is a partial unrevert of [this commit](https://github.com/odoo/enterprise/commit/177c7bbc890c3d142010de2cb7d0d9d6752c7fd9#diff-282e44e861d61542f3bc6d40e61b73fd1556f659d53ecd8bf9430dcec79c2fd6). opw-4872507 Forward-Port-Of: odoo/enterprise#108461
This update fixes an issue where VAT calculations were incorrectly set to zero in XML exports for manual journal entries. The fix removed an unnecessary filter in the SQL query, ensuring accurate VAT amounts (MHT, TVA, TTC) are now correctly calculated and exported. This ensures accurate reporting for tax compliance.
Original PR description
## Issue: When creating a manual journal entry with a deductible tax, the entry was included in the XML export, but the VAT amounts were all set to 0 ## Cause: The SQL query used to compute VAT amounts included an extra condition on display_type to be 'tax' However, journal entry lines are standard product lines and should not be excluded by this condition As a result, the amounts (MHT, TVA, TTC) were incorrectly computed as 0 in the XML ## Steps to reproduce: - Install `l10n_ma_reports` and switch to the MA Company - Create a Journal Entry (Any account, Debit: 100, Taxes: 10% 150) - Open the Tax Report for the current month - Export the XML using the gear icon Before the fix, the value for mht, tva and ttc where all 0 opw-5226529 Forward-Port-Of: odoo/enterprise#108644
This update resolves an issue where products with unique serial numbers in Odoo's Point of Sale (POS) system were causing traceability problems. The update ensures that order line configurations are correctly applied when a product's serial number is involved, improving order accuracy and reporting. This fix was part of a larger effort to enhance POS functionality.
Original PR description
In this commit: = - Overridden `requiresOrderLineConfiguration` so that `configureNewOrderLine` is also called when lot or scale configuration is required. task-5505855 related pr: https://github.com/odoo/odoo/pull/245165 Forward-Port-Of: odoo/enterprise#108263
This update fixes an issue in the barcode picking interface where users were repeatedly prompted to confirm adding multiple extra products. Now, the confirmation dialog opens only once and allows users to easily select or deselect products before final validation, streamlining the picking process.
Original PR description
When adding extra products in the barcode picking interface, the confirmation dialog did not handle correctly the scan of multiple extra items. Before: Scanning multiple extra products successively opened (mutex + promise) the dialog multiple times. The user had to confirm/cancel each extra product addition one by one. After: The dialog is now only opened once and updated when scanning multiple extra products before confirming. The user can select/deselect the extra products to add before validating. [opw-5193269](https://www.odoo.com/odoo/project/49/tasks/5193269) Forward-Port-Of: odoo/enterprise#108623 Forward-Port-Of: odoo/enterprise#104932
This update fixes an issue where loyalty discounts weren't accurately calculated when products had taxes included in their price. Previously, discounts were incorrectly applied to the base price instead of the discounted price. This ensures loyalty rewards are applied correctly, providing accurate discounts to customers.
Original PR description
When applyin a discount by percentage on the cheapest product if the product was using a tax included price, the discount was wrongly calculated on the tax excluded price. Steps to reproduce: ------------------- * Create a tax of 15% included in price * Create a product with a price of 10€ and assign the tax created before * Create a loyalty program with a reward of 100% discount on the cheapest product * In POS, add the product to the order > Observation: The discount applied is of 8.7€ instead of 10€ Why the fix: ------------ We make a similar fix to this one : https://github.com/odoo/odoo/pull/240289 opw-5260067 Forward-Port-Of: odoo/odoo#249584 Forward-Port-Of: odoo/odoo#244734
This update fixes an issue where Odoo incorrectly displayed records after a user switched between companies. Previously, the system didn't immediately update the URL needed for correct record loading, leading to incorrect views. Now, the system reliably directs users to the correct record after a company change, ensuring a smoother user experience.
Original PR description
Have a flow where an action act_window is executed and wants to open a record in the form view, but that record is not in one of the companies that the current user is logged in. The ORM will crash with an access denied, that the JS catches cleverly (see odoo/odoo@6213c40932236101b529b82f0ea9fce1829c8c24) and tries to reload on that failed action after altering the allowed companies. Before this commit, this flow was imperfect because the url (that allows to reload at the right place) was not written immediately. So, more often than not, we ended up on the wrong view after reload. After this commit, we end up in the right action after reload. 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#250401
This update fixes a bug that caused time off requests to be incorrectly displayed as allocations within the reporting system. The issue stemmed from a misalignment in the database queries used to generate the reporting views. This change ensures that time off requests are accurately displayed and routed to the correct reporting pages, improving the user experience for requesting and tracking time off.
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 Forward-Port-Of: odoo/odoo#249015
This update ensures that pickings are automatically created when validating POS orders linked to sale orders. Previously, stock levels weren't updated correctly if pickings were scheduled for the end of a POS session. This fix guarantees accurate stock tracking and order fulfillment for POS transactions.
Original PR description
Before this commit, when validating a POS order linked to a sale order, if the Inventory Management was configured to create pickings at the end of the session, no picking was created for the order, and the sale order stock was not updated. This commit fixes this issue by ensuring that the picking is created for the imported sale orders in real time. opw-5423113 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#248424 Forward-Port-Of: odoo/odoo#244739
This update fixes an issue where preparation tickets weren't printed correctly when using the self-ordering kiosk mode. The fix prevents a system update from overwriting key data, ensuring preparation tickets are generated reliably during kiosk transactions. This improves the overall kiosk ordering experience.
Original PR description
Steps: --- - Configure a preparation printer and enable it for kiosk mode. - Open a kiosk session. - Place an order and complete it. Issue: --- - Preparation tickets were not printed in kiosk mode. Cause: --- - In kiosk flow, preparation changes are sent on conformation page. - After sync, `LOPC` was overwritten, preventing preparation data from being processed. Fix: --- - Do not update `LOPC` when self-ordering mode is kiosk. - Refactor and re-enable preparation ticket checks in unit tests. task-5973158 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This update corrects a bug that prevented the inclusion of specific fields (Ask Restitution and Client Nihil) in the Belgian VAT return PDF reports. The change re-enabled a key mechanism for customizing reports, ensuring accurate and complete VAT return documentation. This resolves an issue reported by users generating these reports.
Original PR description
This commit https://github.com/odoo/enterprise/commit/e8d2084369d58717c2294e023cbdfd60f713c334 removed the `pdf_options_header` wrapper. 18.3-:…
This commit https://github.com/odoo/enterprise/commit/e8d2084369d58717c2294e023cbdfd60f713c334 removed the `pdf_options_header` wrapper.
18.3-:
https://github.com/odoo/enterprise/blob/ce67bf6fb4f694c25785580fe3ed290bcb8c92b5/account_reports/data/pdf_export_templates.xml#L151-L154
18.4+:
https://github.com/odoo/enterprise/blob/e3746aba3c334a628a15a4263ddfa08876d2a288/account_reports/data/pdf_export_templates.xml#L159-L160
This broke `l10n_be_reports` which uses `(//div[hasclass('row')])[last()]` to inject BE-specific fields:
https://github.com/odoo/enterprise/blob/e3746aba3c334a628a15a4263ddfa08876d2a288/l10n_be_reports/data/tax_report.xml#L9-L24
Without the wrapper, `[last()]` targets the conditional `aml_ir_filters` row instead, making BE fields invisible.
Steps to reproduce:
1. Create a Belgian company
2. Navigate to Accounting → Reporting → Tax Return
3. Create a VAT Return and submit it
4. Check the generated PDF in the attachment
=> The "Ask Restitution" and "Client Nihil" fields are missing from the PDF header.
Ticket [link](https://www.odoo.com/odoo/action-4043/5509725)
opw-5509725
---
I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Forward-Port-Of: odoo/enterprise#107519This update fixes an issue where kits with multiple components were incorrectly showing a zero cost when using FIFO or average costing methods. Now, the system accurately calculates the total cost of a kit, ensuring accurate inventory and sales reporting. This improves the reliability of our point-of-sale and manufacturing processes.
Original PR description
Before this commit, if a kit had multiple components, the cost of the line was counted as zero if the product cost method was FIFO or average. opw-5911338 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#247833
This update fixes an issue where delivery slips incorrectly calculated package weight by omitting the weight of products inside. The change ensures that the total shipping weight accurately reflects the weight of the outermost package and its contents, improving shipping accuracy and cost calculations. This impacts all users who rely on delivery weight information.
Original PR description
On delivery slip, the total weight of a package doesn't include the weight of the product in the outermost package. Steps to reproduce: ------------------- * Create a Package "Pa" with a package type…
On delivery slip, the total weight of a package doesn't include the weight of the product in the outermost package. Steps to reproduce: ------------------- * Create a Package "Pa" with a package type that has a weight * Create a product "Po" tracked by quantity * Add two units of the product Po to the package Pa * Create Delivery with two units of Po. * Confirm the Delivery and print the delivery slip -> The total weight is the weight of the package type without including the products inside. Observation: ------------- When computing the shipping_weight for the delivery, it will fallback on the package_weight to calculate it weight, https://github.com/odoo/odoo/blob/ca14f1aa21a75398919c1453be19011522bb3b5c/addons/stock/models/stock_picking.py#L893-L906 It retrieve the weight calculated by _get_weight https://github.com/odoo/odoo/blob/93fa6d9fff63534cfa9251e21fc82797d8b83468/addons/stock/models/stock_package.py#L435 Except for the outermost package, where it incorrectly considers only the package type weight and does not include the products weight opw-5499770 Forward-Port-Of: odoo/odoo#250358 Forward-Port-Of: odoo/odoo#247227
This update fixes an issue where the website builder's sidebar wasn't properly blocked during reloadable actions, particularly under slow network conditions. Now, the sidebar remains blocked while templates are updated, ensuring a smoother and more reliable user experience for website customization. This enhancement improves the overall usability of the website builder.
Original PR description
When we perform a reloadable action in the builder, the builder's UI is not blocked, unlike in previous versions before the html_builder [refactoring] Steps to reproduce the issue: - Open website, and click on the header - In the dev tools, set the network throttling to 3G or slow 4G - Change the header's template => Notice that the sidebar is not blocked, while it should be. [refactoring]: https://github.com/odoo/odoo/commit/9fe45e2b7ddbbfd0445ffe25a859e67a316d02b2 task-5952793 Forward-Port-Of: odoo/odoo#250753 Forward-Port-Of: odoo/odoo#249526
This update introduces a new ‘Net Cost’ salary rule in the UAE payroll system. Previously, rules deducting from employee pay incorrectly reduced employer costs. This change ensures accurate tracking of employer contributions by separating employee deductions from employer costs, improving financial reporting.
Original PR description
## Before: - Setting appears_on_employee_cost_dashboard to True on a salary rule uses the rule’s sign to compute employee cost. - For rules like Social Insurance Employee Contribution and DEWS Employee Contribution, the sign must be negative to deduct the amount from the employee, which incorrectly reduces the employer cost as well. ## After: - Introduced a new salary rule “Net Cost” to correctly reflect employer cost. - This allows employee contribution rules to keep a negative sign for deductions while still increasing the employer contribution amount. Task-5912761