Monday, June 15, 2026
118 changes
2 changes
Enhancements to existing features
This update now automatically logs the reasons why orders are skipped during synchronization with Lazada. Previously, users had to manually investigate order details to understand the cause. This enhanced logging provides clearer insights into synchronization issues, streamlining troubleshooting and improving order processing reliability.
Original PR description
Before this commit, the only way to know why an order was not synchronized was to inspect the order details and infer the reason from the code. This commit now logs those reasons. Forward-Port-Of: odoo/enterprise#120212
Resolved issues and error corrections
This update resolves an issue where the URL used for OAuth authentication with the Romanian tax authority (ANAF) was incorrectly generated. The previous method relied on the user's current session, leading to a mismatch with the registered URL. This change ensures the correct URL is used, allowing for proper authentication and tax reporting.
Original PR description
The `_compute_l10n_ro_edi_callback_url` method was using `request.httprequest.url_root` to build the OAuth callback URL. The URL is derived from the current HTTP request, meaning it reflects however the user accessed the session at that moment (e.g. internal IP, localhost, non-standard port). This produces a callback URL that does not match what was registered with ANAF, breaking the OAuth flow. 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#268974 Forward-Port-Of: odoo/odoo#265000
2 changes
Resolved issues and error corrections
This update fixes an issue where changes made to leave details within the popover form weren't being saved correctly. The fix introduces a delay to handle rapid changes and ensures that modifications are saved, improving the user experience when managing time off requests. It also maintains access to key actions like 'Refuse' and 'Delete'.
Original PR description
Steps:- - Navigate Payroll > Time Offs. - Create a leave of any type (STO, PTO etc...) - Click on the pill after creating leave. - Try to change values on popover. - Changed values are not saved!! Cause:- There is no save action trigger on popover form. Fix:- - Hooked `debounceAutoSave` method on every field value changes. - `debounceAutoSave` will save record with 500ms debounce to batch rapid changes. - Set popover form to readonly mode for validated leaves (validate/validate1 states) - Remove readonly condition from action buttons footer to keep Refuse/Delete accessible task-[6117310](https://www.odoo.com/odoo/project/1251/tasks/6117310)
4 changes
Resolved issues and error corrections
This update addresses a missing rule in the calculation of employer costs within the Odoo Enterprise system. Following a review, a crucial rule was added to ensure accurate employer cost reporting, aligning with previous improvements. This ensures compliance and accurate financial reporting.
Original PR description
In this previous PR https://github.com/odoo/enterprise/pull/106839 the computation of the employer cost was fixed and many rules were flagged as needed in that computation. After a report, we found one of the rules was missing so we add it in this PR. Task: 6088412 Forward-Port-Of: odoo/enterprise#112681
1 change
Resolved issues and error corrections
This update fixes an issue where the quantity invoiced on a sale order wasn't correctly updated after a refund was processed from the PoS. The fix ensures that refund amounts are accurately reflected in the sale order's invoice quantity, resolving a previous inconsistency between PoS and backend refund processes. This improves the accuracy of sales reporting.
Original PR description
When making a refund of a PoS order that was created from a sale order, the sale order qty_invoice was not updated correctly. Steps to reproduce: ------------------- * Create a sale order with any product and confirm it * Open a PoS and settle the order * At this point the qty_invoiced should be 1 on the sale order line * Refund the PoS order from the PoS > Observation: The qty_invoiced is still one. Why the fix: ------------ We now take refund lines into account when computing the qty_invoiced. Note: ------------ There was an inconsistency between a refund made from the PoS and a refund made from the backend. The former is not linking the sale order line to the refund line, while the latter does. This was causing issue when refunding from the backend as it would count the refund twice. To fix this we now remove the link to the sale order line when refunding from the backend. opw-4991405 Forward-Port-Of: odoo/odoo#269347 Forward-Port-Of: odoo/odoo#259653
6 changes
New functionality added to Odoo
This update adds functionality to generate the Form 2316, a crucial annual tax certificate required for compliance with Philippine regulations (CAS). The changes accommodate the Philippines' unique naming convention (first, middle, and last names) and ensure accurate reporting of employee compensation and tax withholdings, aligning with legal requirements.
Original PR description
Implement support to generate the Form 2316, the annual certificate of Compensation Payment/Tax Withheld that is individual to each employee. This is a requirement for a software to be compliant with CAS task-6215945
2 changes
Resolved issues and error corrections
This update fixes a security vulnerability where users without approval permissions could incorrectly interact with approval requests, leading to errors. The change restricts access to 'Accept' and 'Refuse' options within approval activities to only the designated approver, enhancing security and preventing unintended actions.
Original PR description
Currently when a user submits an approval request, an activity is created for the approver who can validate or refuse the request directly from the activity, however these options are also visible to other users who will trigger an error if interacting with the options. This commit removes these options for users who are not the approver. **Steps to reproduce:** - Log in as admin - Go to approvals - Select dropdown menu of General Approval and Edit - Change documents to optionnal - Make sure admin is in the approvers list - Log in as demo - Go to approvals -> General Approval -> New Request - Submit the request - You'll see an activity be created for admin, with Accept and Refuse options - If you select any of these options you will get an access error opw-5423528
1 change
Resolved issues and error corrections
This update resolves an issue where validating rental transfers for new kit products resulted in an error message. The fix ensures that stock movements are correctly processed after a rental order is confirmed, specifically when a kit BOM is involved. This prevents data inconsistencies and ensures accurate tracking of rented items.
This update resolves an issue where the URL used for OAuth authentication with the Romanian tax authority (ANAF) was incorrectly generated. The previous method relied on the user's current session, leading to mismatched URLs and failing authentication. This change ensures the correct, standard URL is used, allowing for proper tax reporting functionality.
Original PR description
The `_compute_l10n_ro_edi_callback_url` method was using `request.httprequest.url_root` to build the OAuth callback URL. The URL is derived from the current HTTP request, meaning it reflects however the user accessed the session at that moment (e.g. internal IP, localhost, non-standard port). This produces a callback URL that does not match what was registered with ANAF, breaking the OAuth flow. 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#268974 Forward-Port-Of: odoo/odoo#265000
This update improves the overtime regeneration process in the HR module. Previously, regenerating overtime reset all overtime records, regardless of the selected ruleset. Now, it only affects the chosen ruleset and prompts users for confirmation before resetting any manual edits, ensuring data accuracy and preventing unintended changes.
Original PR description
When you click on "regenerate overtime", currently, it reset all overtimes of all overtime ruleset, it should only act on the selected one. Second, it should display a confirmation message: "This will reset all manual edit on overtime period linked to those rules. Do you confirm ?" Task-6095714
This update fixes an issue where the quantity on hand for products across multiple companies was incorrectly calculated. The fix ensures accurate FIFO valuation by including all company movements in the calculation, particularly for lot-valuated products, leading to more reliable inventory reporting.
Original PR description
The quantity on hand for a main company with branches is calculated to be the the sum of all its child companies + its own quantities. `_run_fifo_get_stack()` doesn't include the child companies in…
The quantity on hand for a main company with branches is calculated to be the the sum of all its child companies + its own quantities. `_run_fifo_get_stack()` doesn't include the child companies in the `moves_domain`, so it is unable to create a FIFO stack for moves from a child. This leaves extra quantity unaccounted for, which defaults to the standard_price. **Video of the bug:** https://drive.google.com/file/d/11PIfNAIb_Yyo4A-3R0CRF0NV6_HE6EwF/view **Issue:** When multiple companies are selected, the displayed quantity on hand for a product is calculated as the sum of all selected companies. However, the moves domain only looks at the main selected company instead of all selected companies, leading to an incorrectly calculated standard price when using FIFO. This is more apparent on lot-valuated products because the lot standard price is recalculated every time the field is accessed. **Reproduction steps:** - Have a main company - Create a branch company - Create a product, configure it as FIFO on both the main company and branch company - Let the product be tracked by lots and set to `Valuation by Lot` (for demonstrative purposes) - On the main company, set the product cost to $15 (for demonstrative purposes) - Go to only the branch company, make a purchase for one unit of the FIFO product at $100 (make a warehouse for delivery) , validate the receipt - Go to the lot -> When logged in to only the branch company, quantity is 1 and cost is $100 (correct). When logged in to both the main and branch company and viewing from the main company, quantity is 1 and cost is $15 (incorrect) **Fix:** Allow `_run_fifo_get_stack()` to see the moves from all companies in the environment instead of just the main company Related ticket: opw-6064126 Forward-Port-Of: odoo/odoo#258199
This update resolves an issue where the URL used for authentication with the Romanian tax authority (ANAF) was incorrectly generated. The previous method relied on the user's current session, leading to mismatches and preventing successful authentication. This change ensures the correct URL is used, allowing seamless integration with ANAF.
Original PR description
The `_compute_l10n_ro_edi_callback_url` method was using `request.httprequest.url_root` to build the OAuth callback URL. The URL is derived from the current HTTP request, meaning it reflects however the user accessed the session at that moment (e.g. internal IP, localhost, non-standard port). This produces a callback URL that does not match what was registered with ANAF, breaking the OAuth flow. 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#268974 Forward-Port-Of: odoo/odoo#265000
Enhancements to existing features
This update enhances the way sick and work accident leaves are processed for short-term contracts. The changes now consider contract duration and seniority levels to accurately determine the eligibility and calculation of these leaves, ensuring compliance and improved accuracy in payroll processing.
Original PR description
Refine sick/work accident leaves split based on contract duration and seniority. task-5480458
This update improves the accuracy of payroll calculations in Belgium by adding validation rules for reclassification schemes. Specifically, it prevents incorrect scheme selections based on notice period length and employee details, ensuring compliance and reducing potential errors. A helpful message has also been added to the outplacement field.
Original PR description
- Add a help message to the outplacement field explaining its purpose and services. - Prevent selecting the General scheme if the notice period is less than 30 weeks. - Prevent selecting the Specific scheme based on notice period length, employee age, company sector, and seniority. Task Id: 6267824
This update streamlines the process of sending payslips via email, making it much easier for HR to send PDFs to employees. The new 'Send by Email' button allows for bulk sending of validated payslips with a single click, eliminating the previous complex manual process. Additionally, the UI has been improved to prevent overlapping elements and remove unnecessary options.
Original PR description
[IMP] hr_payroll: ease UX for payslip sending via email
Send the emails for at least validated payslips is quite hard and takes time, it was in the cog and all employees must be selected. Instead I used a new Send by email button that sends the email to all employees in one click to the button
Firstly, if there are payslips without PDF's the Print Payslips button appears, if there is not, then send by email button appears.
"Mark as Paid" is made invisible
I also played with the max-width of the top-bar of the payrun (which includes statusbar, title etc) to prevent any kind of element overlaps.
task - 5979720This update corrects an issue where automatically adjusted quantities in rental sales were leading to incorrect invoicing. It ensures ordered and delivered quantities remain independent, aligning with the existing invoicing policy and preventing over-invoicing. The change also standardizes product display names across reports and portals for better customer clarity.
Original PR description
** For `sale_renting` ** With the introduction of product-less Sale Order Lines in the community version, we noticed that for manually delivered lines, the ordered quantity gets automatically…
** For `sale_renting` ** With the introduction of product-less Sale Order Lines in the community version, we noticed that for manually delivered lines, the ordered quantity gets automatically adjusted to match the delivered quantity. This behavior is unnecessary. The invoicing policy already determines which quantity should be invoiced. By forcing the ordered quantity to match the delivered quantity (especially when delivered > ordered), we end up consistently invoicing the higher value, which is not always correct. In practice, ordered and delivered quantities commonly differ, so they should remain independent. ** For `sale_commission` ** For commission and achievement reports, productless lines are aggregated under plans having no product restrictions ** For `sale_account_accountant` ** For accural entries non downpayment lines having no display_type are shown instead of restricting only lines having product. Removed product_invoice_policy field and used the `sale.order.line.invoice_policy` search compute field. Technical changes * From now on any SOL should contain name field value as `product.display_name+ "\n" + description` for consistancy with normal SOLs since we show only `line.name` in reports and portal so in case it should contain product name otherwise it could be confusing for customers to see just description. * Updated renting-specific extensions of `SaleOrderLineProductField` to also patch `SaleLabelTextField`, ensuring consistent behavior when product search is triggered directly from the description field. * Preserved existing renting configurator and combo behaviors while supporting the new searchable description field flow. * Removed the automatic synchronization between ordered and delivered quantities for manually delivered rental lines. * Adapt some tests to company specific Automatic Invoice setting field. task-6109825 See Also: - https://github.com/odoo/odoo/pull/259842 - https://github.com/odoo/upgrade/pull/9981
Resolved issues and error corrections
This update adjusts the payrun warning button on the payroll dashboard to accurately reflect the status of each payrun. When a payrun is fully paid, the button now displays 'Review'. However, if any payslips remain in 'Draft' status, the button continues to show 'Continue' to guide users appropriately.
Original PR description
- Current behavior: the payrun warning button in the payroll dashboard shows "review" if payrun is in stage "03_paid", otherwise "Continue". - New behavior: if a pay run is marked as Paid, the button should display "Review" instead of "Continue"; however, if any payslip is still in the Draft stage, then the button should continue to display "Continue". Task: 6216477
This update resolves an issue where project names weren't correctly synchronized with their linked folder names when multiple projects were edited simultaneously. The fix ensures that folder names are updated consistently during multi-editing operations, improving data accuracy and streamlining project management workflows.
Original PR description
Currently, when user multi-edits projects names from list view the linked folder name doesnt get updated. Steps to replicate: - Install `documents_project` and open projects. - Select multiple projects and edit their names. Issue: - The project names get updated but their respective linked folder's name doesnt get updated. Cause: - During multi-edit, `self.documents_folder_id` contains the folders of all selected projects. - As a result, `len(self.documents_folder_id.project_ids) == 1` [1] is evaluated on the combined recordset instead of per project, causing the condition to always fail when multiple projects are renamed. Solution: - Avoided accessing `self.name` on a `multi-recordset` during multi-edit. - Filtered projects individually and updated their document folders using the name in vals. [1]: https://github.com/odoo/enterprise/blob/3c2985ca6011700c271ed14e40e08c89be822753/documents_project/models/project_project.py#L101 sentry-7452096418
Original PR description
### Steps to reproduce: - Enable rental transfer - Create a rentable product R - Create and confirm a rental order for 1 unit of R - Create a kit bom for R: 1 x COMP - Validate the delivery of your…
### Steps to reproduce:
- Enable rental transfer
- Create a rentable product R
- Create and confirm a rental order for 1 unit of R
- Create a kit bom for R: 1 x COMP
- Validate the delivery of your unit of R
#### > Missing Error: Record does not exist or has been deleted.
### Cause of the issue:
Confirming your rental order will generate a confirm moves of R. However, since at this point the product was not a kit, these will not be exploded. Now, the issue is that at validation The move will be exploded and deleted in the super call:
https://github.com/odoo/enterprise/blob/7cceddaf086d849b8e2121e1023ef3479397534f/sale_mrp_renting/models/stock_move.py#L10-L13 https://github.com/odoo/odoo/blob/0f2f222a431627a672daf10c86ec2578a27f97bb/addons/mrp/models/stock_move.py#L550-L555 https://github.com/odoo/odoo/blob/0f2f222a431627a672daf10c86ec2578a27f97bb/addons/mrp/models/stock_move.py#L591-L593 However, since the overrides of the sale_{mrp,stock}_renting modules call self rather than the result of the super call, they still expect to work with the original move rather than its exploded result: https://github.com/odoo/enterprise/blob/7cceddaf086d849b8e2121e1023ef3479397534f/sale_mrp_renting/models/stock_move.py#L10-L13 https://github.com/odoo/enterprise/blob/7cceddaf086d849b8e2121e1023ef3479397534f/sale_stock_renting/models/stock_move.py#L61-L65
opw-6191841