Daily updates from Odoo
Friday, December 19, 2025
41 changes · master
Resolved issues and error corrections
This update disables Intervat functionality within the l10n_be demo company data. This change prevents Intervat from being automatically set during testing with Runbots, ensuring more consistent and reliable demo environments. It's a minor improvement to the demo setup.
Original PR description
This commit set the `l10n_be_intervat_mode` to `disabled` in the l10n_be demo company. The reason why we are doing this it to avoid having intervat set by default on runbots. task-5404719 Forward-Port-Of: odoo/enterprise#101929
This update fixes an issue where rental receipts were incorrectly validated without warnings, even when incomplete. The change ensures that rental receipts are handled correctly, preventing validation errors and allowing for accurate tracking of partial rental returns. This improves the rental process for users.
Original PR description
Steps to reproduce: - Enable Rental pickings - Create a rental for a product, for 4 quantity - Process the delivery - Open the barcode app and open the reception - Scan the product once and validate…
Steps to reproduce: - Enable Rental pickings - Create a rental for a product, for 4 quantity - Process the delivery - Open the barcode app and open the reception - Scan the product once and validate Issue: The receipt is validated without issues nor warning, despite being incomplete. This is due to a bad mix of two changes: - #60801, which always sets the rental receipt as return of the delivery - #48788, which removes the backorder check for returns in barcode For regular returns made in barcode, it makes sense to avoid the backorder check, as from here we're processing a full picking return and we'd have the confirmation pop every time. However, things are different for rental receipts, as despite them being set as returns of the delivery, they're proper receipts that need to handle the partial receipt. To avoid the issue, rather than removing the backorder check whenever there's a return linked to the picking, now also checks that there isn't a rental order linked to the picking. opw-5265874 Forward-Port-Of: odoo/enterprise#101387
This update fixes a recurring issue where users were receiving duplicate order receipts due to delays in communication with the IoT printer. The fix ensures a unique identifier is used for all print requests, preventing the IoT box from processing the same action multiple times and eliminating the 'printing failed' error.
Original PR description
Currently multiple clients report double order receipts printing. This PR fixes the issue where due to slow network connection a request would be sent to the iot box but the iot box didn't reply in time to confirm the action finish. The user would then get an error showing 'printing failed' (due to a timout). If he cliks on retry the iot box would still print the previous receipt and then receive the new "retry" request with now a new action uuid which would also be printed because uuid is different from the 1st request. This PR adds a consistent uuid for both the initial and all the subsequent retry requests so that double actions would never be done by the iot box. Forward-Port-Of: odoo/enterprise#102266
This update resolves an issue impacting Swiss payroll calculations, specifically related to overtime payments (ST-Overtime) and the LPP (Lohn- und Premodifizierungs-Pauschale) tax. The fix ensures accurate and compliant payroll processing for Swiss employees, addressing a previous error.
Original PR description
Forward-Port-Of: odoo/enterprise#102249 Forward-Port-Of: odoo/enterprise#102161
This update fixes a misleading warning message displayed in the eCommerce shop when users try to add subscription products without a defined plan. The change ensures users receive a clear 'no valid combination' warning, improving the shopping experience and preventing confusion. This resolves a usability issue for subscription offerings.
Original PR description
Version: - saas-18.4 Steps to reproduce: - Install website_sale_subscription - Create a subscription product without a plan - Open product on eCommerce Issue: - When viewing a subscription product…
Version: - saas-18.4 Steps to reproduce: - Install website_sale_subscription - Create a subscription product without a plan - Open product on eCommerce Issue: - When viewing a subscription product without a subscription plan in the eCommerce shop, the system incorrectly shows the warning "This subscription is not compatible with the one already in your cart. Please order them separately or empty your cart." - This happens even if the cart is completely empty. - The method _is_add_to_cart_possible doesn’t find any valid combination to add to the cart, and because the product is marked as recurring, it always triggers the wrong message. Solution: - Add a condition to check if current product have any recurring price set if not then it will show the correct warning that 'This product has no valid combination.' Impact: - Users see clear and correct warnings on products without a subscription plan. task-5255749 Forward-Port-Of: odoo/enterprise#102251 Forward-Port-Of: odoo/enterprise#100929
This update corrects a bug where inaccessible folders were incorrectly included in document search results. Previously, searching for folders within a company structure would incorrectly display folders that were not accessible to the user. This fix ensures that only accessible folders are shown, improving data accuracy and user experience. Performance testing confirmed this as the optimal solution.
Original PR description
`user_folder_id` and `folder_id`'s `child_of` were not taking into account that the path could be broken if inaccessible folders are between accessible documents. E.g., the DB structure COMPANY └── Folder A └── Folder B (inaccessible to User A) └── Folder C Would appear to user A as COMPANY └── Folder A SHARED └── Folder C such that "Folder C" should not be found when searching `child_of` "Folder A" or "In Company". Note that more creativity would be necessary to fix this before 19.0 as the stored `folder_id` field could not be `_search`ed. Task-5231269 Forward-Port-Of: odoo/enterprise#99040
This update fixes an issue where a new offer page would reset to a blank state after a refresh. The change ensures that the correct employee context is maintained when refreshing the offer details, providing a consistent and accurate view for users. This improves the user experience and data integrity.
Original PR description
Steps to Reproduce ================== - Go to Employees - Choose an employee with no offers - Click on the "Offers - new" smart button (a form view will open with the correct employee name at the bottom) - Refresh the offer's page without saving (the employee field is emptied and the required Applicant field appears) Issue ================== The generate offer action that is triggered through the smart button returns a one-time action dictionary with the context. But that context is lost when we refresh the offer page as it's not saved anywhere. Fix ================== Replace the action dictionary with an action record for creating a new offer to ensure the context is maintained upon page refresh. Task-ID: 5059490 Forward-Port-Of: odoo/enterprise#102260
This update now automatically includes the XML file generated for Guatemalan e-invoices alongside the PDF when sending invoices to customers. Previously, only the PDF was sent. This change provides customers with both required files in one email, enhancing transparency and convenience.
Original PR description
Purpose: In the Guatemalan localization, when an electronic invoice is created, the email template to the customer already contains the PDF version of the DTE. However, the XML file, generated and…
Purpose: In the Guatemalan localization, when an electronic invoice is created, the email template to the customer already contains the PDF version of the DTE. However, the XML file, generated and sent to the SAT through Infile, is not attached to that email. Even though the SAT and Infile deliver the XML to the customer, it is more convenient and transparent if Odoo includes it directly in the outgoing invoice template email, so the customer receives both files in one place. Before this commit:- - Only PDF version is attached by default in customer email for e-invoices. - Name of edi document is prefixed with `Demo` if company is in demo environment (check parent company's environment in case of child company) (e.g. DEMO_certificate_INV_2025_00001.xml) and prefixed with `SAT` if company is in testing or production environment(e.g. SAT_certificate_INV_2025_00001.xml). After this commit:- - XML version is also attached by default along with PDF in customer email for e-invoices. - Name of edi document is always prefixed with `SAT`. task-5224521 Forward-Port-Of: odoo/enterprise#102322 Forward-Port-Of: odoo/enterprise#98978
A previous access restriction prevented HR Officers from generating offer documents. This fix updates the system to allow Officers to access the necessary data fields, ensuring they can complete this critical step in the hiring process. The change was made to align with recent HR module updates that tightened access controls.
Original PR description
Steps to reproduce: ------------------------- 1. Install Salary Configurator module. 2. Create a new user and assign Officer rights in Employees and Recruitment. 3. Login with that user. 4. Create a…
Steps to reproduce: ------------------------- 1. Install Salary Configurator module. 2. Create a new user and assign Officer rights in Employees and Recruitment. 3. Login with that user. 4. Create a new application and move it to 'Contract proposal' stage. 5. Click on the 'Generate Offer' button. Observation: ------------------------- An Access Error occurs, denying Read access to the `final_yearly_costs` field. Issue: ------------------------- In earlier versions, users had an additional access right that allowed them to access contract fields. After the HR modules were refactored, only HR Administrators and Payroll Users retained access to those fields. As a result users with only Officer rights in HR encountered an access error when generating an offer. Solution: ------------------------- Use `sudo()` to bypass access restrictions for the `final_yearly_costs` field when generating the offer. opw-5243280 Forward-Port-Of: odoo/enterprise#102250 Forward-Port-Of: odoo/enterprise#99478
This update enhances the visual appearance of the stock accounting module by updating company icons and improving the styling of buttons. This change provides a more polished and professional user experience for managing company-specific stock settings within Odoo Enterprise.
Original PR description
Forward-Port-Of: odoo/enterprise#99095
This update corrects a display issue in the Field Service module where task templates were incorrectly shown alongside real tasks. The fix ensures that only actual tasks are listed, improving the clarity and usability of the 'All Tasks' view. This resolves a potential confusion point for users.
Original PR description
Steps to Reproduce
- Navigate to Field Service > All Tasks.
- Observe that task templates are visible with tasks.
Issue
- Task templates are visible in the Field Service > All Tasks view, which is incorrect. Only real tasks should be listed.
Cause
- The domain in the view definition only filtered tasks by `is_fsm = True` and ` project_id != False`, but it did not exclude template tasks and sub-tasks of task templates.
Solution
- Added `('has_template_ancestor', '=', False)` to the domain so that only actual tasks are displayed in the Field Service > All Tasks view.
task-5079337
Forward-Port-Of: odoo/enterprise#102409
Forward-Port-Of: odoo/enterprise#94472This update fixes an issue where duplicated subscription deliveries weren't correctly reflecting delivered quantities. The change ensures that delivery dates are properly used to calculate quantities, leading to more accurate tracking of delivered items. This improves the reliability of subscription order reporting.
Original PR description
The use of date_deadline instead of date in the filter messes up the calculation of delivered quantities when you duplicate a delivery. Task: 4910572 Forward-Port-Of: odoo/enterprise#89550
This update corrects a test failure related to VAT number validation for Thailand. After implementing stricter VAT number checks, a test case failed because the previously used VAT number didn't meet the new format requirements. This ensures the Thailand reports function correctly and accurately.
Original PR description
Following the implementation of proper validation for VAT numbers for Thailand, this now fails as the one set in the test doesn't follow the proper format. Community PR: odoo/odoo#239616 Total credits to @vin-odoo Forward-Port-Of: odoo/enterprise#102404 Forward-Port-Of: odoo/enterprise#101905
This update corrects a bug in the web_studio module that was causing errors when users made minor changes to PDF reports. The fix ensures that insignificant edits don't trigger unnecessary diffs and errors, improving report editing stability. This prevents users from encountering 'Document is empty' errors when saving.
Original PR description
Example of steps: - Install sale_management and web_studio - Try to edit PDF Quote report - add /4 columns somewhere above the table - try to save - Error: Document is empty In this case, for some reason `html_editor` edits the external_report by changing the order of attributes on a node, which causes a diff, but not relevant for studio and won't produce any xpath operations. This commit handles this case by initializing the Studio view to `<data/>`. opw-5351588 Forward-Port-Of: odoo/enterprise#102416
This update resolves an issue where recurring revenue (MRR) calculations were incorrectly converting currency, leading to inaccurate reporting and missing achievement data. The fix ensures accurate currency conversion during reporting, guaranteeing correct revenue recognition and improved financial visibility.
Original PR description
Before this commit, the log amount_signed was converted to the currency of the company of the log before being converted to the currency of the current company. There were issues as sometimes we did not any value in sub_rate_query. The join would fail to find a row and therefore the achievement would not be displayed. Moreover, the conversion rate were not always correct. This commit reuse the logic of the sale_order_log_report. We convert the amount_signed of the log into the currency of the main company and we convert that amount into the currency of the current company. Forward-Port-Of: odoo/enterprise#101813
This update fixes an issue where clicking on activity counters in the systray didn't correctly filter documents. The change ensures users only see documents with relevant pending activities, aligning with standard Odoo behavior. This improves the user experience and accuracy of document views.
Original PR description
Clicking on activity counters (Late, Today, Future) in the systray relies on specific "search_default" keys to filter the target model's view. Previously, these specific activity filters were missing from the document search view or had the wrong name, causing the systray to fail to filter the documents correctly when redirected. This resulted in the user seeing all documents instead of only those with the relevant pending activities. Note: the 'My Activities' filter is set to invisible, to align with standard odoo behaviour. Task-5427921
This update corrects a warning message that appeared when scheduling work entries with start and end dates combined with durations. The change ensures that the system accurately prevents overlapping work entries, maintaining data integrity. This resolves a potential issue with scheduling conflicts.
Original PR description
Problem ---------- This warning message doesn't make sens with the transformation of work entries date_start/stop in date+duration. No overlap is possible. task-5349515 Forward-Port-Of: odoo/enterprise#100163
This update resolves a bug that occurred when multiple CAF ranges were active within a document type, causing errors during invoice processing. The fix ensures the system selects the CAF with the lowest starting number, allowing for proper gap filling and preventing database errors. This improves the reliability of invoice processing for users.
Original PR description
In #92208 the CAF system was improved to find the next starting value in the right sequence if there are multiple in the system. If no CAFs are found, it will reset to the document types starting…
In #92208 the CAF system was improved to find the next starting value in the right sequence if there are multiple in the system. If no CAFs are found, it will reset to the document types starting number. This worked except in the case where there are multiple CAFs that are currently marked active in a document type. As it tries to access `caf.start_nb` it hits an ensure_one() which throws a traceback whenever you open most account.moves on the DB. Steps to reproduce: - Modify the CAF for Doc Type 33 (Electronic Invoices) to have a smaller range than 1 - 999,999 (1 - 5) - Create Two new CAF files also for Doc Type 33 that start after this value (6 - 10 and 11 - 15 for example). - Mark the original to be spent via cancelling it and try to open an invoice. It will find both of the new CAFs and try to get the start_nb of the recordset. In discussion with the PO, when we have multiple CAFs, we should pick by the lowest start number as it will allow for any gaps that might exist be filled. opw-5414350 Forward-Port-Of: odoo/enterprise#102385
This update resolves an issue where the ISO 20022 XML generation consistently used two decimal places for currency amounts, leading to errors for currencies like JPY. The fix dynamically sets the decimal places based on the currency, ensuring accurate data formatting and preventing potential errors.
Original PR description
Issue: Generating the xml file for iso20022 always generates the amount with two decimals which is hard coded and can cause error for currencies without decimals for example JPY. Fix: The fix is to have the currency decimal number dynamically set through the currency decimal places field. task: 5242204 Forward-Port-Of: odoo/enterprise#101368
This update fixes an issue where XML reports were incorrectly including a slash ('/') when there was no comment provided. The change ensures that empty comment sections in XML reports are properly left blank, improving report accuracy and consistency. This resolves a minor formatting problem.
Original PR description
Since 17.0, we added a / when there was no comment in the comment section of the xml. This is wrong and should be left empty. opw-5242381 Forward-Port-Of: odoo/enterprise#102174 Forward-Port-Of: odoo/enterprise#100033
This update resolves an issue where online orders with dynamic attributes wouldn't appear in the POS system if the corresponding product variant wasn't created. Now, the system automatically creates the variant before processing the order, ensuring all online orders are correctly reflected in the POS.
Original PR description
Before this commit: --- - When an order was placed with a dynamic attribute and the corresponding variant was not created in Odoo, the order did not appear in POS. After this commit: --- - When an order is placed with a dynamic attribute and the variant does not exist in Odoo, the variant is first created and then the order is successfully placed in POS. task-5056425
This update automatically assigns team members to new tasks created from project templates, ensuring consistent resource allocation. Previously, the task assignment process was unreliable due to an issue with how task order was handled, now it correctly uses the task template to determine team members.
Original PR description
Before this commit, after having created the project from a project template, a loop is made to scheduled the task and check the roles set on the task template. The problem is looping on `zip(self.task_ids, project.task_ids)` cannot guarrantee the tasks in the both are in the same order than the tasks insertion since `task_ids` will depend on the order of the task model. To be sure, the task template is the one used to create the task in the project duplicated, the process should be done in the copy method of task instead of using `task_ids` of both projects. This commit first moves the logic implemented in action_create_from_template in `project_enterprise` module in the copy method of the task. Then, it improves the logic to assign the available resources to the new task planned based on the users set on the roles set on the task template related. task-5139714
This update ensures that AI server actions within Odoo Enterprise always include a prompt. Previously, missing prompts could lead to unexpected behavior. This change improves the reliability and usability of AI-powered features by preventing empty prompts.
Original PR description
In this commit we add an view contraint so that ai server actions are not allowed to have an empty prompt. We cannot make the field itself required since then all server actions will require it. Related 19.0 PR: https://github.com/odoo/enterprise/pull/102441 Task-5379758
This update prevents HR users from receiving unnecessary reminder emails. Previously, reminders were triggered by time-off requests or public holidays, even if the user didn't need to submit a timesheet. Now, reminders are only sent for active timesheet entries requiring user input, streamlining the process and reducing email clutter.
Original PR description
**Steps to reproduce:** - Install timesheet_grid_holidays - Create a user with no timesheet access - Create a leave and approve it as a manager - Set up employee reminders in timesheet settings - Run the timesheet reminder scheduled action **Issue:** HR users without timesheet app access or who haven’t submitted timesheets in the past 3 months were still receiving reminder emails. **Cause:** When a time-off is approved or a public holiday is recorded, it generates timesheet entries, which causes reminder emails to be sent incorrectly. **Fix:** Filter out time-off and public holiday entries when sending reminders. Now, reminders are only sent for actual timesheets that require user input. task-5085790 Forward-Port-Of: odoo/enterprise#102342 Forward-Port-Of: odoo/enterprise#95450
This update enhances the display of security class names on the transaction form, resolving an issue with inconsistent styling. The change utilizes a new Odoo markup system (odoomark) for more reliable and accurate presentation, improving the user experience and ensuring consistent security information is shown.
Original PR description
This commit refactors the way security classes are displayed on the transaction form view drpodown menu. It uses the new odoomark markup \v instead of hacky css to achieve proper styling to security classes display names. odoomark new markup PR: https://github.com/odoo/odoo/pull/239431 task-5418874
This update ensures that documents are automatically created when bank statements are linked to PDF or image attachments. Previously, attachments linked to bank statements weren't generating documents, but now this process is streamlined for better record-keeping of financial data. This improves the accuracy and completeness of accounting records.
Original PR description
In #99297, we synchronize the pdf attachments of bank statements at the attachment creation only. But when the attachment is linked to a bank statement afterward, no document is created. We improve this here by also creating a document when an attachment is linked to a bank statement. As images can also be "converted" into bank statements, we also synchronize the images linked to bank statement with Documents. Use-case: - install accountant and documents_account - Accounting -> Bank - Upload: a pdf or an image - Fill statement lines - Save Here the attachment is linked to the bank statement afterward (see _check_attachments method) so no document was created. Task-5424742
This update resolves an issue where deleting a shopfloor instruction suggestion caused errors. The fix ensures that adding a new suggestion after a deleted one functions smoothly, preventing a traceback related to quality point relationships. This improves the reliability of the shopfloor instruction suggestion process.
Original PR description
**BUG:** Traceback when **suggesting** deleting a BOM step from the shopfoor. **STEPS TO REPRODUCE:** - Open a shopfloor MO (with PLM installed) -- Add a suggestion step (MO > cog> Update…
**BUG:** Traceback when **suggesting** deleting a BOM step from the shopfoor. **STEPS TO REPRODUCE:** - Open a shopfloor MO (with PLM installed) -- Add a suggestion step (MO > cog> Update instructions > Improvement Suggestion > Add a step). -- Add a second suggestion step after the first one. -- Delete the second suggestion step (MO > cog> Update instructions > Improvement Suggestion > Delete a step). -- Add a third suggest suggestion step after the second one we just suggested deleting. -- > Traceback **ORIGIN:** First, when adding the suggestions: - 2 Quality Check (QC) are created on the **new_bom_id** in `add_quality_check_from_tablet.save()` - 2 Quality Point (QP) are also created in `add_check_in_chain()`, (only in mrp_workorder_plm override) - The 2nd new QC is linked to previous QC in `_insert_in_chain` Secondly, when deleting the 2nd added suggestion (_on the same MO, as suggestions are linked to the new bom_id and wont appear on other MOs until ECO is validated_): - The QP of the second QC is deleted (but the QC itself is not deleted) here: https://github.com/odoo/enterprise/blob/f91b0c8c41f40a71cbea3cd4f5ccc6873af3c004/mrp_workorder_plm/wizard/propose_change.py#L72-L74 Finally, when adding a new suggestion after the one we just suggested deleting, in `_add_check_in_chain`, a traceback happens by trying to access the QP point we deleted in the resequencing part of `_add_check_in_chain` here: https://github.com/odoo/enterprise/blob/eb716c18944ec50c9c8c74a2888ed5f3032a7b08/mrp_workorder_plm/models/mrp_workorder.py#L62-L63 **FIX:** We accept that not all QCs must have QPs `[0]` -> `[:1]` (see note on another approach idea) changing ```diff - point = check.point_id if check.point_id.operation_id == operation else points.filtered(lambda p: p._get_sync_values() == check.point_id._get_sync_values())[0] + point = check.point_id if check.point_id.operation_id == operation else points.filtered(lambda p: p._get_sync_values() == check.point_id._get_sync_values())[:1] ``` **NOTES:** -1 Another fix could have been to delete the QC at the same time as the QP but I did not find any `remove_from_chain` function to safely remove the QC from the chain of QC. Along those lines we could rethink the sequencing / resequencing of QC and QP as the logic seems to differ between both. -2 Added some comments to remove the field and the line setting the `is_deleted` field in master as it was not used anywhere in the code (the color highlighting in the ECO is done with `<list decoration-danger="change_type=='remove'" ...>`) Upgrade PR: https://github.com/odoo/upgrade/pull/9076 ticket #5180122 Forward-Port-Of: odoo/enterprise#101366
This update fixes a technical issue where the AI action feature would generate tracebacks when the prompt field was left blank. The fix skips parsing the prompt when empty, ensuring smoother AI action execution. Additionally, the AI system now anticipates scenarios where it needs information, preventing it from requesting further user input.
Original PR description
Prior to this commit, when the AI action prompt was left empty, we would get a traceback when that AI action was executed. The traceback would occurs because the prompt is an HTML field with the…
Prior to this commit, when the AI action prompt was left empty, we would get a traceback when that AI action was executed. The traceback would occurs because the prompt is an HTML field with the field selector plugin, which means that it requires parsing before it's sent to the LLM. There was no check during parsing whether the field is empty or not and thus a traceback would occur during processing. In this commit we added a check for whether the prompt field is empty or not and if it is, we skip parsing altogether. We still call the LLM but without the final-prompt. The pre-prompt with contextual information is still sent thus the LLM can still perform the action if it's simple enough. Also, if the AI server action prompt is ambiguous and the LLM "feels" like it needs additional input to complete its task, it might respond with an additional query to the user instead of calling one of its available tools. Thus, in this commit, we add an explicit instruction to the AI Server action pre-prompt which should convey to the LLM that it will not be able to get any additional input from the user and it should assume that any important information for performing its task will be hardcoded in its available tools. Task-5379758 Forward-Port-Of: odoo/enterprise#102441
This update corrects an issue in the Belgian payroll calculations (l10n_be_hr_payroll) related to the deferral of leaves and handling version updates during the month. The fix ensures more accurate PFA (Pension Funds Account) computations, improving payroll reliability and compliance. This impacts the accurate calculation of employee benefits.
Original PR description
Fix the PFA computations: - Fix number of leaves to defer to next months - Deal with change of version in middle of the month Forward-Port-Of: odoo/enterprise#102448
This update fixes an issue where job offer emails didn't include the employee's name in the subject line. Now, emails will include the employee's name, making them more personalized and easier to identify. This improves communication and clarity for both HR and the new hire.
Original PR description
**Steps to reproduce:** - Go to Employees app and select any employee - Press "Offers" smart button - Create a new job offer and send it by email **Issue:** The employee name is not populated in the email subject. Task: 5407028
This update streamlines the Website Generator by automatically installing it alongside the Website module, resolving issues with cron activation and improving the user experience. It also cleans up unused code and ensures proper website configuration flow, enhancing the overall stability and functionality of the website import process.
Original PR description
Some fixes and changes before the freeze of 19.1 Make the website_generator auto-install. Move generator specific code from website_enterprise to website_generator as a result of the autoinstall. Fix CRON activation with no records bug. Remove unusued actions in the JS component.
This update allows employees to modify their own overtime attendance records by enabling them to act as their own approvers. Previously, permission issues prevented them from making these changes, leading to inaccurate records. This fix ensures employees can accurately update their attendance information.
Original PR description
Employees set as themselves as approvers couldn't modify their attendances due to permission issues with other models. task-5427553 Forward-Port-Of: odoo/enterprise#102415
This update resolves an issue where payroll modules (l10n_xx_hr_*) were unnecessarily dependent on country information. Removing country dependencies from related modules like l10n_us and l10n_fr ensures a cleaner and more efficient system. This change improves the stability and maintainability of the payroll functionality.
Original PR description
This commit ensures that the dependencies of l10n_xx_hr_* modules don't include countries in the manifest. Countries were removed from l10n_us_hr_payroll, l10n_us_hr_payroll_adp, and l10n_fr_hr_payroll_account since l10n_us and l10n_fr have countries declared in their manifests. task-5408245
This update adjusts the automated tests to align with recent changes to how product prices are managed within Odoo. Specifically, the removal of a previous pricing method has been addressed, ensuring the tests accurately reflect the current system. This ensures consistent and reliable pricing calculations.
Original PR description
**Purpose:** Adapt the tests to reflect the changes made to the product.product price field and the removal of its inverse method. Task-5207469
This update adjusts where the recording policy settings are stored within the Odoo system. Previously, these settings were located within the VoIP module itself; now, they're correctly placed in the dedicated voip.config file. This change ensures consistent and accurate recording behavior for VoIP calls.
Original PR description
After https://github.com/odoo/enterprise/commit/8705dfc626fabf9a1ef469a07f8ef85cf838c88d, recordingPolicy is now in voip.config instead of voip
This update resolves an issue where users couldn't adjust prices in the POS system when using the Swedish blackbox. The change allows price control functionality, aligning with requirements for the Swedish market, which differs from the Belgian blackbox implementation. This ensures accurate pricing for Swedish POS transactions.
Original PR description
Before this commit, user couldn't control the price in the POS if using the swedish blackbox. After this commit, user can control the price. It's not clear why the behavior at integration was set to this but it appears that it's not mandatory for swedish blackbox unlike the belgian one. opw-5253401 Forward-Port-Of: odoo/enterprise#101797 Forward-Port-Of: odoo/enterprise#100984
This update fixes a bug in the Mexican Point of Sale (POS) localization that prevented accurate invoice generation after refunds with global discounts. The fix now ensures refund amounts don't exceed the original order total, resolving invoice errors and improving data integrity. This change is specific to the Mexican localization.
Original PR description
When refunding an order that originally had a global discount, if you didn't refund the discount, the refund total amount would exceed the original order total. This would cause issues when trying to…
When refunding an order that originally had a global discount, if you didn't refund the discount, the refund total amount would exceed the original order total. This would cause issues when trying to generate a global invoice for the mexican localization. Steps to reproduce: ------------------- * Activate the global discount option in any PoS * Open PoS and make a sale with a global discount * Refund the sale without including the discount * Go to the backend * Go to the order list and select the 2 orders you made * Now try to create a global invoice > Observation: The global invoice is in error because the negative lines cannot be distributed correctly. Why the fix: ------------ To avoid this issue with the global invoice we simply prevent the user to generate a refund with a greater amount than the original order. We only apply this limit to the mexican localization because it's the only module that is affected by this issue. Other localizations can still refund without restrictions even if this work flow does not really make sense. opw-4899501 Forward-Port-Of: odoo/enterprise#101752 Forward-Port-Of: odoo/enterprise#93101
This update fixes an issue where clicking on activity counters in the systray didn't correctly filter documents. The change ensures that users only see documents with relevant pending activities, improving the user experience and data accuracy. The 'My Activities' filter has been intentionally hidden to align with standard Odoo behavior.
Original PR description
Clicking on activity counters (Late, Today, Future) in the systray relies on specific "search_default" keys to filter the target model's view. Previously, these specific activity filters were missing from the document search view or had the wrong name, causing the systray to fail to filter the documents correctly when redirected. This resulted in the user seeing all documents instead of only those with the relevant pending activities. Note: the 'My Activities' filter is set to invisible, to align with standard odoo behaviour. Task-5427921 Forward-Port-Of: odoo/enterprise#102509
This update corrects a test related to exporting accounting data for Swedish businesses. The accounts have been properly separated to align with Swedish fiscal regulations, ensuring accurate reporting. This change improves the reliability of the export process for our Swedish customers.
Original PR description
The accounts have been separated between goods and services for the fiscal positions to work. Fix the test of an export of Sweden accounting task-5365658 Forward-Port-Of: odoo/enterprise#101722
This update resolves a bug where field syncs would disappear after inserting a new row in a Quote calculator spreadsheet. The fix ensures that field syncs are correctly maintained when rows are added, preventing data inconsistencies. This improves the reliability of spreadsheet-based sales calculations.
Original PR description
Steps to reproduce: - create a Quote calculator spreadsheet - add a field sync on A1 - autofill it down on a few cells - select row B - right click and "Insert row above" => some field syncs disapeared Forward-Port-Of: odoo/enterprise#101367 Forward-Port-Of: odoo/enterprise#101066
This update fixes an error in the VAT return reporting process for Belgium. Previously, the system incorrectly set a flag to True, even for periods outside the year-end. This change ensures the flag is only set to True when appropriate, improving the accuracy of VAT reports and preventing potential reporting issues.
Original PR description
When the client_nihil field was hidden from the wizard, its computation always set it to True. This was wrong : this field can only be True in the XML when in the last period of the year, so when should_display_client_nihil is True as well. In every other cases, it needs to be False. opw-5184056 Forward-Port-Of: odoo/enterprise#102454