Friday, March 7, 2025
28 changes · master
Enhancements to existing features
The Monster recruitment integration now deactivates the generic “ALL” industry option. This makes industry selection more logical and helps avoid overly broad or confusing choices in recruitment workflows.
Original PR description
This commit deactivate the "ALL" industry in the hr_recruitment_integration_monster module to make the flow more logical in other recruitment modules. task-4270308
A new shortcut button has been added next to the VoIP provider selection in user settings. This makes it easier for users or administrators to open the full provider list and manage provider options without navigating through menus.
Original PR description
This commit adds a button next to the providers' dropdown menu in the users' settings/preferences to lead to the providers' list view. Task-4416699
The IoT Box setup now keeps advanced connection and configuration options hidden by default, making the everyday interface cleaner for users. Teams can still access these options by enabling debug mode when they need troubleshooting or advanced setup tools.
Original PR description
By default, we now hide the token IoT Box connection method and the configuration tab (containing only the "Reset Linked Printers" tool). One can now show them by enabling debug mode.
This update adds automated tests to confirm project tasks group correctly by customer, project, and worksheet template in field service and Gantt views. It helps protect existing planning and reporting behavior from future regressions without changing day-to-day user workflows.
Original PR description
_* = industry_fsm, industry_fsm_report In this PR, we test below features: - group_expand for the `worksheet_template_id` in the project task gantt view. - extended group_extend for the `partner_id`, `project_id`, and `worksheet_template_id` in project task. task-3504644
This update ensures the restaurant appointment calendar screen loads its required components in the correct order. It helps avoid issues when opening calendar forms that depend on recurring appointment settings.
Original PR description
This commit ensures the calendar form controller is loaded, as it requires the recurrence dependency to be initialized before the form controller. task-4063288
Resolved issues and error corrections
A recent internal change missed a related adjustment in the India reporting module, which could cause errors when using certain linked record fields with avatars. This fix restores the expected behavior so users can continue working in India reports without that disruption.
Original PR description
In the commit [1], we refactor the many2one widgets but the specialisation in this module was missed and caused an error. [1]: bcaa9e9b23d637edfe05baff83aea2ac18d9f4b2
Miscellaneous changes
Automation rule trigger field ids can now be deducted from a default filter domain passed in the context of an action. As a result, in the action used to direct a user of the Documents application to the Automation Rules, it is no longer necessary to pass the trigger field id to be displayed in the new rule creation form. Only the filter domain is required to achieve the same result. This makes it possible to delete an orm call without altering the implemented feature. see odoo/odoo#193576
Original PR description
Automation rule trigger field ids can now be deducted from a default filter domain passed in the context of an action. As a result, in the action used to direct a user of the Documents application to the Automation Rules, it is no longer necessary to pass the trigger field id to be displayed in the new rule creation form. Only the filter domain is required to achieve the same result. This makes it possible to delete an orm call without altering the implemented feature. see odoo/odoo#193576 see odoo/enterprise#75719 task-4502214 Forward-Port-Of: odoo/enterprise#77515
Activating developer mode with the India reports module installed no longer triggers a validation error. This helps administrators and support teams use debug tools without being blocked by an unexpected issue.
Original PR description
This PR fixes an issue where activating developer mode triggers a validation error due to an invalid `component` object. Steps:- 1. Install the `l10n_in_reports` module. 2. Enable debug mode. 3. Receives a validation error.
Manual runs of the reconciliation process now record automated follow-up actions as performed by Odoobot instead of the person who clicked the button. This keeps invoice and activity history consistent with background reconciliation runs and avoids misleading user attribution.
Original PR description
The aim of this commit is to make all the action triggered by clicking the "Run manually" button in the reconcile.model from view performed by Odoobot. Motivation: - information consistency: As this…
The aim of this commit is to make all the action triggered by clicking the "Run manually" button in the reconcile.model from view performed by Odoobot. Motivation: - information consistency: As this is just a button triggering a bunch of automated action, we don't want the user clicking on the button to be tagged in the chatter as performing ALL the side effect action. For example, if an invoice gets reconciled by the process, before this commit, the invoice would be marked as paid by the user that clicked the button. After this commit, it will be marked as performed by Odoobot. - behavior consistency: The end of the method triggers a CRON that will perform this action again on the remaining statement line to process but in the background. This will use the Odoobot user instead of the user that clicked the button. For example, before this commit, an invoice auto-reconciled in the second run of the method will be marked as paid by Odoobot while the invoices autoreconciled in the first run were mark as paid by the user clicking the button. task-id: None (This was brought up during investigation on 4393854)
Clicking a cell in payroll payslip pivot reports no longer triggers an error. This keeps payroll reporting usable by preventing the system from sending users to the wrong payroll screen.
Original PR description
Issue: when clicked on any pivot cell it raise error Solve: remove the js_class as it was forcing the redirect into hr.payroll Task: 4626207
Comments are intended for adding notes or remarks on specific parts of the body and are not meant to be forwarded or replied to. This PR disables the reply and forward actions for comments on knowledge articles. Task-4624027 Forward-Port-Of: odoo/enterprise#80752
Original PR description
Comments are intended for adding notes or remarks on specific parts of the body and are not meant to be forwarded or replied to. This PR disables the reply and forward actions for comments on knowledge articles. Task-4624027 Forward-Port-Of: odoo/enterprise#80752
Description of the issue ======================== The initial issue was, when tracked product lines are grouped by product in batch ("Group batch lines" parameter checked in the picking type config), the sublines weren't displayed. This issue was caused by the way we choose to display or not sublines. For a tracked product, we don't display them if reserved lot/serial is hidden (picking type config) and if there is no qty done. That said, that didn't take in consideration the grouping by p
Original PR description
Description of the issue ======================== The initial issue was, when tracked product lines are grouped by product in batch ("Group batch lines" parameter checked in the picking type config),…
Description of the issue
========================
The initial issue was, when tracked product lines are grouped by product in batch ("Group batch lines" parameter checked in the picking type config), the sublines weren't displayed.
This issue was caused by the way we choose to display or not sublines. For a tracked product, we don't display them if reserved lot/serial is hidden (picking type config) and if there is no qty done.
That said, that didn't take in consideration the grouping by product where lines for different pickings are grouped together.
In this case, it's better to show the qty demand anyway to know how many quantity needs to be processed for each picking.
Once this issue is fixed, a second issue appears.
Imagine you have this following case:
- 1 line for lot product (0/4 qty) for receipt 1;
- 1 line for lot product (0/4 qty) for receipt 2.
- In batch, these lines are grouped because they share the same product.
Now, let's say we do the following process:
1. Scan the lot product -> The grouped line is selected;
2. Scan lot01 two times -> receipt 1 line is now 2/4 qty with lot01;
3. Scan lot02 -> receipt 2 line is now 1/4 with lot02.
The point 3. where is the issue happens. Usually, when we scan a lot, we check if the line is completed or not by checking its parent line's quantity. Here, the parent line is the batch grouped line and should not work exactly like that, because by checking this line as the parent of every sublines means we can't know if a particular picking need is fulfilled or not.
How to reproduce
================
- Inventory > Configuration > Operations Types > Barcode App:
- Uncheck "Show reserved lot/SN";
- Check "Group batch lines".
- Create two receipts for the same tracked by lot product;
- Create a batch for this receipt;
- Open the batch in the Barcode app -> You can see there is a line for this product with the total quantity but when clicking on the button to display sublines, the sublines are not shown.
Fix
===
For the first issue, we simply added a condition for `stock.picking.batch` to adapt to this case.
For the second issue, the group by tracked product inside a single picking and the group by product inside a batch are not the same and use a different key.
The first kind of group uses the key `parentLine` and the second one use the key `batchParentLine`. When we want the parent line of a subline, we will always refer to the `parentLine`. But in the interface, if this parent line is itself inside a `batchParentLine`, the `parentLine` won't be displayed, only the batch parent line.
That way, the user still has all lines for a same product grouped together under a single parent line, but to know if a need if fulfilled,
we still check on the parent line limited to a single picking.
[opw-4291149](https://www.odoo.com/odoo/project/49/tasks/4291149)
Forward-Port-Of: odoo/enterprise#79716
Forward-Port-Of: odoo/enterprise#79516Forward-Port-Of: odoo/enterprise#80405
Original PR description
Forward-Port-Of: odoo/enterprise#80405
Description of the issue/feature this PR addresses: ticket id: https://www.odoo.com/odoo/my-tasks/4179478 Current behavior before PR: - MENA l10n module descriptions were uncomplete or unconsistent Desired behavior after PR is merged: - improve l10n module description for MENA --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/enterprise#80683 Forward-Port-Of: odoo/enterprise#75666
Original PR description
Description of the issue/feature this PR addresses: ticket id: https://www.odoo.com/odoo/my-tasks/4179478 Current behavior before PR: - MENA l10n module descriptions were uncomplete or unconsistent Desired behavior after PR is merged: - improve l10n module description for MENA --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/enterprise#80683 Forward-Port-Of: odoo/enterprise#75666
### Steps to reproduce: - Enable "Multi-Steps Routes" in the settings - Inventory > Configuration > Warehouse Management > Warehouses - Put your warehouse in manufacturing in 2 steps - Create an MO for a product and add an operation (no need of component) - Confirm the MO and go to your operation in the shopfloor - Click on the 3 dots > Add component > add any component #### > Back to the MO: No transfer was created from stock to pre-prod ### Cause of the issue: When you add comp
Original PR description
### Steps to reproduce: - Enable "Multi-Steps Routes" in the settings - Inventory > Configuration > Warehouse Management > Warehouses - Put your warehouse in manufacturing in 2 steps - Create an MO…
### Steps to reproduce: - Enable "Multi-Steps Routes" in the settings - Inventory > Configuration > Warehouse Management > Warehouses - Put your warehouse in manufacturing in 2 steps - Create an MO for a product and add an operation (no need of component) - Confirm the MO and go to your operation in the shopfloor - Click on the 3 dots > Add component > add any component #### > Back to the MO: No transfer was created from stock to pre-prod ### Cause of the issue: When you add component from the shopfloor, you will trigger a call of the `add_product` method to create and confirm the raw move associated to the MO: https://github.com/odoo/enterprise/blob/2e2efe8421b2f85950e50ff102cdabf98d2d91ab/mrp_workorder/wizard/additional_product.py#L36-L37 However, if the `procure_method`` of this move is not set to mto/mtso it will not trigger other rules in order to generate the other transfers ### Note: A priori, the issue should not be reproducible in 18.0+ as this part of the code was refactored and the issue was fixed by 235047b68e6a24a14e32b94b1d4a15a580dc5ad2 opw-4236272 Forward-Port-Of: odoo/enterprise#80853 Forward-Port-Of: odoo/enterprise#74178
[IMP] pos_restaurant_appointment: revamp UI This commit introduces some UI cleaning for the POS. Related: https://github.com/odoo/odoo/pull/195386 Forward-Port-Of: odoo/enterprise#80461 Forward-Port-Of: odoo/enterprise#77942
Original PR description
[IMP] pos_restaurant_appointment: revamp UI This commit introduces some UI cleaning for the POS. Related: https://github.com/odoo/odoo/pull/195386 Forward-Port-Of: odoo/enterprise#80461 Forward-Port-Of: odoo/enterprise#77942
A non-deterministic behavior resulted in fetching unexpected IDs from the `hr_recruitment_stage_report`. The SQL query is fixed and the non-deterministic behavior is gone now. The non-deterministic behavior was because the view query uses `ROW_NUMBER()` to generate the IDs dynamically in each query before union which results in records with duplicate ids, resulting in non-deterministic behavior. Three CTEs were used. Two CTEs were used to simplify the two queries before the union. A `global_cte
Original PR description
A non-deterministic behavior resulted in fetching unexpected IDs from the `hr_recruitment_stage_report`. The SQL query is fixed and the non-deterministic behavior is gone now. The non-deterministic behavior was because the view query uses `ROW_NUMBER()` to generate the IDs dynamically in each query before union which results in records with duplicate ids, resulting in non-deterministic behavior. Three CTEs were used. Two CTEs were used to simplify the two queries before the union. A `global_cte` is used to union both CTEs. A `ROW_NUMBER() OVER()` is used to assign sequential integers to rows, along with a necessary `ORDER BY` clause to ensure deterministic behavior. task-4440977 Forward-Port-Of: odoo/enterprise#80771 Forward-Port-Of: odoo/enterprise#80446
This commit adds new tax ISR 1.25 witheld for mexican localization target: 17 -> master task-4486643 Linked PR: [odoo/odoo#195346](https://github.com/odoo/odoo/pull/195346) Forward-Port-Of: odoo/enterprise#80639 Forward-Port-Of: odoo/enterprise#80081
Original PR description
This commit adds new tax ISR 1.25 witheld for mexican localization target: 17 -> master task-4486643 Linked PR: [odoo/odoo#195346](https://github.com/odoo/odoo/pull/195346) Forward-Port-Of: odoo/enterprise#80639 Forward-Port-Of: odoo/enterprise#80081
Steps to reproduce: 1. create a shortcut document in My Drive 2. select that document 3. click on the jumpToTarget button to access the source document 4. it won't select the source document / original document Technical Reason: When selecting a document, it was incorrectly assigning the wrong res_id to originalSelection. After this commit: will select the correct source document from the shortcut document. Task-4506244 Forward-Port-Of: odoo/enterprise#77627
Original PR description
Steps to reproduce: 1. create a shortcut document in My Drive 2. select that document 3. click on the jumpToTarget button to access the source document 4. it won't select the source document / original document Technical Reason: When selecting a document, it was incorrectly assigning the wrong res_id to originalSelection. After this commit: will select the correct source document from the shortcut document. Task-4506244 Forward-Port-Of: odoo/enterprise#77627
Field `mobile` has been removed from `res.partner`. Clean the code related to it in voip. Task-4624455 Forward-Port-Of: odoo/enterprise#80748
Original PR description
Field `mobile` has been removed from `res.partner`. Clean the code related to it in voip. Task-4624455 Forward-Port-Of: odoo/enterprise#80748
Prior to this commit, we get an error when we try to make a copy of a certain revision of a quotation/quality template spreadsheet. This is due to the method `_creation_msg` which was not implemented after inheriting the `spreadsheet.mixin` class. Steps to reproduce: - Go to Sales > Configuration > Quotation Templates (or Quality Control Templates) - Create a quotation template - Select the quotation calculator field and create a new quotation spreadsheet - In the quotation spreadsheet, s
Original PR description
Prior to this commit, we get an error when we try to make a copy of a certain revision of a quotation/quality template spreadsheet. This is due to the method `_creation_msg` which was not implemented after inheriting the `spreadsheet.mixin` class. Steps to reproduce: - Go to Sales > Configuration > Quotation Templates (or Quality Control Templates) - Create a quotation template - Select the quotation calculator field and create a new quotation spreadsheet - In the quotation spreadsheet, select File > See version history - Select the three dots on any version and click "Make a copy" - Traceback occurs task-4568319 Forward-Port-Of: odoo/enterprise#80901 Forward-Port-Of: odoo/enterprise#79096
Steps to reproduce: 1. Install l10n_ar_edi 2. Use an Argentinian company 3. Go to the "Argentinean Localization" section of the settings 4. Make sure "Private Key" and "Certificate" are empty. Save. 5. Click on "Generate Request". 6. A key has been created but looks like it's not set on the company. --- Description of the issue this commit addresses: When generating a certificate request without selecting a private key to generate the certificate request with, a private key is g
Original PR description
Steps to reproduce: 1. Install l10n_ar_edi 2. Use an Argentinian company 3. Go to the "Argentinean Localization" section of the settings 4. Make sure "Private Key" and "Certificate" are empty. Save.…
Steps to reproduce: 1. Install l10n_ar_edi 2. Use an Argentinian company 3. Go to the "Argentinean Localization" section of the settings 4. Make sure "Private Key" and "Certificate" are empty. Save. 5. Click on "Generate Request". 6. A key has been created but looks like it's not set on the company. --- Description of the issue this commit addresses: When generating a certificate request without selecting a private key to generate the certificate request with, a private key is generated by the system but in the settings windows, the field remains empty. Also, later, after retrieving the certificate from the official platform and trying to insert it in the database, it is required to link it with the private key that was used for its generation but since all automatically generated keys share the same name, this can be quite hard. --- Desired behavior after this commit is merged: When using the "Generate Request" button with no private key selected, the Private Key fields is populated with the key that was created for the generation of the request. Also, the names of the automatically generated keys use the current time for differenciation purposes. --- Note on the fix: The error happened because when using the Generate Request button, the key is created by a method called via another request so virtually, the assignment happens in another window. To fix that issue, the key has to be created and assigned before making any other request. --- task-4393259 Forward-Port-Of: odoo/enterprise#79253
Steps to reproduce: - Go to website and set the lang to Spanish - Book an appointment from the website Bug: The confirmation email sent to the customer is not correctly translated to Spanish opw:4382606 Forward-Port-Of: odoo/enterprise#80257
Original PR description
Steps to reproduce: - Go to website and set the lang to Spanish - Book an appointment from the website Bug: The confirmation email sent to the customer is not correctly translated to Spanish opw:4382606 Forward-Port-Of: odoo/enterprise#80257
Before this commit: === - If `urbanpiper_fiscal_position_id` is not set, the system attempts to retrieve the default UrbanPiper fiscal position. After this commit: === - The check ensures that if no valid fiscal position is found (either missing or belonging to a different company), a new one is created. runbot-115934 Forward-Port-Of: odoo/enterprise#80673 Forward-Port-Of: odoo/enterprise#79652
Original PR description
Before this commit: === - If `urbanpiper_fiscal_position_id` is not set, the system attempts to retrieve the default UrbanPiper fiscal position. After this commit: === - The check ensures that if no valid fiscal position is found (either missing or belonging to a different company), a new one is created. runbot-115934 Forward-Port-Of: odoo/enterprise#80673 Forward-Port-Of: odoo/enterprise#79652
This PR introduces the following improvements: - **Attachment Name Update**: Restricts the attachment name to 45 characters to comply with e-invoice portal limitations. - **Handling Missing Taxes**: Includes journal items for taxes not found in the system to ensure proper accounting. - **Enhanced Tax Matching**: Updates the tax-finding mechanism to include RCM taxes when the bill transaction's `RegRev` parameter is marked as `Y`, in addition to regular taxes. - **Error handling**: Handle `EI
Original PR description
This PR introduces the following improvements: - **Attachment Name Update**: Restricts the attachment name to 45 characters to comply with e-invoice portal limitations. - **Handling Missing Taxes**: Includes journal items for taxes not found in the system to ensure proper accounting. - **Enhanced Tax Matching**: Updates the tax-finding mechanism to include RCM taxes when the bill transaction's `RegRev` parameter is marked as `Y`, in addition to regular taxes. - **Error handling**: Handle `EINV30109` error code to schedule a retry cron after 10 minutes and log a message. Forward-Port-Of: odoo/enterprise#80739 Forward-Port-Of: odoo/enterprise#74864
When toggling columns in any Accounting Report list view, it requires a manual refresh to see the changes. this is caused because this [commit](odoo/enterprise@adc4bb7) removed automatic reactivity, so we need to explicitly recompute the columns after updating optionalActiveFields To resolve this, we override the ListRenderer's `toggleOptionalField` function to explicitly recompute columns before rendering. Steps to reproduce: 0. Activate developer mode 1. Navigate to the 'Accounting Re
Original PR description
When toggling columns in any Accounting Report list view, it requires a manual refresh to see the changes. this is caused because this [commit](odoo/enterprise@adc4bb7) removed automatic reactivity, so we need to explicitly recompute the columns after updating optionalActiveFields To resolve this, we override the ListRenderer's `toggleOptionalField` function to explicitly recompute columns before rendering. Steps to reproduce: 0. Activate developer mode 1. Navigate to the 'Accounting Reports' menu in accounting. 2. Open a report (e.g. the balance sheet) 3. Use the column selector to add or remove additional columns OPW-4352833 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/enterprise#79745 Forward-Port-Of: odoo/enterprise#79592
### Issue: The barcode relies heavily on the data fetched in its LazyCache to work properly (in order to avoid rpc call's each time records data's are needed). However, some of these data's are loaded using search methods that ignore archived records by default. This leads to the creation of a cache that do not contains records that are expected to be there and hence will lead to tracebacks. ### Steps to reproduce: - In the settings enable "Multi-Step Routes" - Inventory > Configuratio
Original PR description
### Issue: The barcode relies heavily on the data fetched in its LazyCache to work properly (in order to avoid rpc call's each time records data's are needed). However, some of these data's are…
### Issue: The barcode relies heavily on the data fetched in its LazyCache to work properly (in order to avoid rpc call's each time records data's are needed). However, some of these data's are loaded using search methods that ignore archived records by default. This leads to the creation of a cache that do not contains records that are expected to be there and hence will lead to tracebacks. ### Steps to reproduce: - In the settings enable "Multi-Step Routes" - Inventory > Configuration > Warehouse Management > Locations - Create a new location WH/Stock/Love and a children location WH/Stock/Love/Layer - Create and confirm an internal transfer from WH/Stock to WH/Stock/Love for 1 unit of any storable product in stock - Change the location dest of the move line to WH/Stock/Love/Layer. - Archive the location WH/Stock/Love - Open your internal transfer in the barcode App. #### > Traceback: An error occured in the owl lifecycle... Record stock.location with id=... doesn't exist in the cache, it should return by the server at LazyBarcodeCache.getRecord. ### Cause of the issue: When entering the barcode man component, a call of the `get_barcode_data` is launched to fetch and populate the barcode data's and data are added to the barcode lazy cache in order to retreive record values without additional rpc calls: https://github.com/odoo/enterprise/blob/cc21959226e0bdb6b840f5023f08b2fdc0590023/stock_barcode/static/src/components/main.js#L76-L93 https://github.com/odoo/enterprise/blob/cc21959226e0bdb6b840f5023f08b2fdc0590023/stock_barcode/static/src/models/barcode_model.js#L32-L34 For instance, when redering the picking template, the location dest id will be retreived from the cache: https://github.com/odoo/enterprise/blob/cc21959226e0bdb6b840f5023f08b2fdc0590023/stock_barcode/static/src/components/line.js#L7-L9 https://github.com/odoo/enterprise/blob/cc21959226e0bdb6b840f5023f08b2fdc0590023/stock_barcode/static/src/models/barcode_picking_model.js#L1077-L1079 The traceback occurs because the record was actually never added to the data's and hence never added to the cache because part of the `get_barcode_data` call is performed with searchs that ignore completely the archived records (unless the 'active_test' key is in the context): https://github.com/odoo/enterprise/blob/cc21959226e0bdb6b840f5023f08b2fdc0590023/stock_barcode/models/stock_picking.py#L102-L106 opw-4423110 Forward-Port-Of: odoo/enterprise#79686 Forward-Port-Of: odoo/enterprise#78297
The SAT added a new type of transport figure "Integrante de Coordinados". This should be available for the carta porte. task-4082068, previous pr for v15 67897 Forward-Port-Of: odoo/enterprise#77932 Forward-Port-Of: odoo/enterprise#73195
Original PR description
The SAT added a new type of transport figure "Integrante de Coordinados". This should be available for the carta porte. task-4082068, previous pr for v15 67897 Forward-Port-Of: odoo/enterprise#77932 Forward-Port-Of: odoo/enterprise#73195