Friday, March 7, 2025
72 changes
Enhancements to existing features
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
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)
Miscellaneous changes
Forward-Port-Of: odoo/enterprise#80405
Original PR description
Forward-Port-Of: odoo/enterprise#80405
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
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