Friday, April 25, 2025
24 changes · master
Enhancements to existing features
The bank reconciliation selection and creation dialog is now displayed in a larger size. This gives users more room to review search results and related details, making reconciliation workflows easier to navigate.
Original PR description
This commit will increase the size of the BankRecSelectCreateDialog to xl. no task id
The Documents app will no longer create email aliases for individual binary or request documents, since aliases are only needed on folders. This reduces unnecessary setup and keeps document management simpler without changing normal folder-based workflows.
Original PR description
We only need them on folders. Task-4750330
The VoIP app no longer shows a notification when a call is being initiated. This removes a redundant alert, making the calling experience cleaner and less distracting for users.
Original PR description
This commit removes the "calling" notification that appears when a call is initiated. It turns out that it's useless and not needed anymore.
Resolved issues and error corrections
Updated internal tests so fleet-related expense checks run with the right permissions. This helps prevent false test failures and keeps accounting and fleet expense features reliable during development.
Original PR description
Creating fleet objects requires being a fleet administrator or sudo. However because copying fleet objects (specifically vehicles) as well as posting moves *also* requires those rights, using sudo requires about 20 changes throughout the setup and tests. Maybe fleet will eventually want some more specificity in their test ACL management, but just setting the current user as fleet admin seems to do a good job while avoiding most of the mess. https://runbot.odoo.com/odoo/error/163135 https://runbot.odoo.com/odoo/error/181531
Code cleanup and technical improvements
Device handling for Point of Sale hardware is being moved from the enterprise-only IoT area into the main Point of Sale application. This makes the underlying capability available more broadly now that the required communication feature is no longer limited to enterprise users.
Original PR description
The `deviceController` object was only defined in the `pos_iot` module, as longpolling was only available for enterprise users. Now that it is available to everyone, we moved it to the PoS module. Community PR: [https://github.com/odoo/odoo/pull/207203](https://github.com/odoo/odoo/pull/207203) Task: 4394403
Miscellaneous changes
Forward-Port-Of: odoo/enterprise#83084 Forward-Port-Of: odoo/enterprise#81187
Original PR description
Forward-Port-Of: odoo/enterprise#83084 Forward-Port-Of: odoo/enterprise#81187
Several apps have been reassigned to more appropriate categories so they are easier to find in the Apps search experience. This improves browsing and discovery without changing the underlying app features or workflows.
Original PR description
Clean-up the Apps search bar by setting the modules in the right categories. Task-4592952
The Documents accounting action now uses the correct label, "Create Vendor Credit Note," instead of "Create Vendor Refund." This avoids customer confusion and keeps the wording consistent with the accounting form that opens from the button.
Original PR description
TLDR: reword "Create Vendor Refund" => "Create Vendor Credit Note" During the refactoring in https://github.com/odoo/enterprise/commit/a32825ee00f2b330d99113f4d8c1488903fe744e The enum value of "account.move.in_refund" was used to name the button "Create Vendor Refund" instead of its string "Vendor Credit Note" when converting the action into the new documents actions scheme. This is confusing for customers (since it is not always a refund) and is inconsistent with the rest of the user facing wording (i.e. the form view that opens when the button is clicked on). Reported/noticed during: opw-4488038
Fixed how pivot table date formulas are generated in spreadsheets by removing unnecessary spaces before the day and month values. This helps dates display and calculate consistently when users work with spreadsheet pivots.
Original PR description
Removed extra spaces in front of the day and month in DATE function. Task: 4725023
The Planning list view now keeps planned date fields more compact when edited, preventing the arrow between start and end times from appearing out of line. This improves visual consistency and makes the schedule easier to read for users working in list view.
Original PR description
With this commit ============= In the Planning module, the Planned Date field in the list view was visually misaligned when edited. The arrow (->) between the start and end times would appear off-center compared to other rows. Previously, the field had a width of 425px. This commit reduces the width to 325px to keep the input field more compact and ensure the arrow and date values remain visually aligned across all rows in both view and edit modes. Steps to Reproduce: 1. Go to Planning. 2. Switch to list view. 3. Click to edit the Planned Date field. 4. Observe that the arrow is vertically misaligned due to the input's size. This fix improves visual consistency in the list view by constraining the field's width. Task: 4607249
**Problem:** When doing a scrap from the barcode app, the source location field is not accessible. The default source location of the scrap will be the one of the stock move, this could be a problem if the product is located in a child location. For instance if confirming a sale order for product A (which is stored in WH/stock/Shelf 1), the pick generated by the sale order will be from WH/Stock to WH/Output (default pick values). In the barcode app, if doing a scrap from this picking, the
Original PR description
**Problem:** When doing a scrap from the barcode app, the source location field is not accessible. The default source location of the scrap will be the one of the stock move, this could be a problem…
**Problem:** When doing a scrap from the barcode app, the source location field is not accessible. The default source location of the scrap will be the one of the stock move, this could be a problem if the product is located in a child location. For instance if confirming a sale order for product A (which is stored in WH/stock/Shelf 1), the pick generated by the sale order will be from WH/Stock to WH/Output (default pick values). In the barcode app, if doing a scrap from this picking, the source location will be WH/stock and the client will not be able to change that because the field does not appear. **Steps to reproduce:** - From the inventory app dashboard select "internal transfer" - Create a new internal transfer - Enter a storable product - Set a demand quantity - Click on "Mark as Todo" - Open the barcode app - Click on operations - Select "Internal Operations" - Select the transfer you just created - Click on the gear icon on the top right and select "scrap" **Current Behavior:** The source location field is not visible **Expected Behavior:** The source location field should be visible and editable **Cause of the issue:** The source location field is not in the view https://github.com/odoo/enterprise/blob/a9334bb551606d0151d8fc7a8f3393c3a6e312b9/stock_barcode/views/stock_scrap_views.xml#L68 **Fix:** I added the source location field in the view opw-4489401 Forward-Port-Of: odoo/enterprise#83546 Forward-Port-Of: odoo/enterprise#82174
In [PR 191823](https://github.com/odoo/odoo/pull/191823) in the comunity repo, a new functionality was added to allow a user with salesman permissions to send and print the invoice. However this change had unexpected effects in the mexican localization, precisely in the _clean_cfdi_values function which now removes all values from the dictionary that are not plain text. The complemento's injector was using the addenda value from the dictionary which was a recordset of the l10n_mx_edi.addenda
Original PR description
In [PR 191823](https://github.com/odoo/odoo/pull/191823) in the comunity repo, a new functionality was added to allow a user with salesman permissions to send and print the invoice. However this change had unexpected effects in the mexican localization, precisely in the _clean_cfdi_values function which now removes all values from the dictionary that are not plain text. The complemento's injector was using the addenda value from the dictionary which was a recordset of the l10n_mx_edi.addenda model, with these changes, this recordset was removed from the dictionary, causing the complemento to never be added. To fix it, the values relevant to the complemento have been marked as unsudo, thus preventing them from being removed in the clean_cfdi_values function. Forward-Port-Of: odoo/enterprise#83772
**Before this PR:** The Share panel is not accessible to portal users, but the Share button is still visible to them. **After this PR:** The Share button will no longer be visible in the portal view. Task-4717553 Forward-Port-Of: odoo/enterprise#83306
Original PR description
**Before this PR:** The Share panel is not accessible to portal users, but the Share button is still visible to them. **After this PR:** The Share button will no longer be visible in the portal view. Task-4717553 Forward-Port-Of: odoo/enterprise#83306
The miscellaneous were displayed in the VIES summary report (even if it was rare as it needs to have the field l10n_cz_transaction_code set). A common case would be to create deferred entries with this transaction field set. opw-4688616 Forward-Port-Of: odoo/enterprise#83459 Forward-Port-Of: odoo/enterprise#83112
Original PR description
The miscellaneous were displayed in the VIES summary report (even if it was rare as it needs to have the field l10n_cz_transaction_code set). A common case would be to create deferred entries with this transaction field set. opw-4688616 Forward-Port-Of: odoo/enterprise#83459 Forward-Port-Of: odoo/enterprise#83112
### Issue: It is currently not possible to generate a return label with sendcloud if the delivery has been generated using a service point. ### Step to reproduce: - Set up Sendcloud, for a belgian company - Select bpost and dpd for delivery and returns while loading products - On a private window buy a storable product on the webstore online and select a sendcloud pickup point as the delivery method. - With an employee confirm the delivery order that was created #### > A problem occ
Original PR description
### Issue: It is currently not possible to generate a return label with sendcloud if the delivery has been generated using a service point. ### Step to reproduce: - Set up Sendcloud, for a belgian…
### Issue: It is currently not possible to generate a return label with sendcloud if the delivery has been generated using a service point. ### Step to reproduce: - Set up Sendcloud, for a belgian company - Select bpost and dpd for delivery and returns while loading products - On a private window buy a storable product on the webstore online and select a sendcloud pickup point as the delivery method. - With an employee confirm the delivery order that was created #### > A problem occured in the generation of the return label ### Cause of the issue: The `to_service_point` parameter is used by sendcloud's API in order to generate parcels and is added here: https://github.com/odoo/enterprise/blob/747482f34ca8210d89d81b3363ec5a8fc3a4ff6f/delivery_sendcloud/models/sendcloud_service.py#L109-L112 However, this parameter does not make sense in case of a return since the customer is allowed to return the product to the pickup point of its choice. In particular, sendcloud's API will fail to genrate the return parcel if it is expecting to link the label to a given pickup point. #### Note: Sendcloud also fails to generate the return label when the shipping provider is the same for the delivery and for the return, so that the `to_service_point` can just not be provided for return labels. opw-4562040 Forward-Port-Of: odoo/enterprise#83436 Forward-Port-Of: odoo/enterprise#83357
- Adding 'invoice_received' as an accepted state in account_move.py -> _compute_l10n_mx_edi_cfdi_state_and_attachment to enable SAT status display on vendor bills in 17.0, making SAT status no longer remain None. - Making adjustments to functions updating SAT status related fields for vendor bills. - Adding a test for SAT status for creating and cancelling vendor bills. The change necessary to display 'Update SAT' button was already implemented in 17.0 in https://github.com/odoo/enterpr
Original PR description
- Adding 'invoice_received' as an accepted state in account_move.py -> _compute_l10n_mx_edi_cfdi_state_and_attachment to enable SAT status display on vendor bills in 17.0, making SAT status no longer remain None. - Making adjustments to functions updating SAT status related fields for vendor bills. - Adding a test for SAT status for creating and cancelling vendor bills. The change necessary to display 'Update SAT' button was already implemented in 17.0 in https://github.com/odoo/enterprise/commit/931d7b199f1183acfbb42325025a6b62b2e73de1 but not forward ported yet. task-4368532 Forward-Port-Of: odoo/enterprise#83946 Forward-Port-Of: odoo/enterprise#80201
The date used in statement lines is invalid when lines are created via bank synchronization, and the user has configured a default date for the Invoice/Bill Date field. Steps to reproduce: - Set a default value for the Invoice/Bill Date field. - Connect to Demo Bank and import the test statement line. - Check the statement line date; it will use the default Invoice/Bill Date value instead of the correct one. The issue comes from the fact that during the `st_line.move_id.write(to_write)
Original PR description
The date used in statement lines is invalid when lines are created via bank synchronization, and the user has configured a default date for the Invoice/Bill Date field. Steps to reproduce: - Set a default value for the Invoice/Bill Date field. - Connect to Demo Bank and import the test statement line. - Check the statement line date; it will use the default Invoice/Bill Date value instead of the correct one. The issue comes from the fact that during the `st_line.move_id.write(to_write)`, the date field gets considered 'dirty' by the ORM (unless it is explicitly set in the vals), and when the `account.move.line` tries to set-up its date, which is related to the move, the compute method for the date is triggered as the field was flagged as dirty. opw-4662209 Forward-Port-Of: odoo/enterprise#83870
The error occurs when attempting to add a date in line in the Salary Rule Parameters Steps to Reproduce: --- - Install the `hr_payroll` module - Payroll > Configuration > Rule Parameters - Create New > History > Add a Line > Add Date Traceback: --- AttributeError: 'bool' object has no attribute 'replace' At [1], this error occurs because `value_id.parameter_value` is False. This happens because first we're adding a date, so `value_id.parameter_value` is initially empty. [1]- ht
Original PR description
The error occurs when attempting to add a date in line in the Salary Rule Parameters Steps to Reproduce: --- - Install the `hr_payroll` module - Payroll > Configuration > Rule Parameters - Create New > History > Add a Line > Add Date Traceback: --- AttributeError: 'bool' object has no attribute 'replace' At [1], this error occurs because `value_id.parameter_value` is False. This happens because first we're adding a date, so `value_id.parameter_value` is initially empty. [1]- https://github.com/odoo/enterprise/blob/b52a93da7d680b60646cb08a9126cf6c12f5307d/hr_payroll/models/hr_rule_parameter.py#L101-L102 sentry-6531613276 Forward-Port-Of: odoo/enterprise#83224
…n manual line with tax - Open the bank rec widget - Set a tax on a line - Change the currency to one that is not the journal one nor the transaction one => Traceback '_prepare_counterpart_amounts_using_st_line_rate' wasn't managing this case. opw-4526096 Forward-Port-Of: odoo/enterprise#83880 Forward-Port-Of: odoo/enterprise#83809
Original PR description
…n manual line with tax - Open the bank rec widget - Set a tax on a line - Change the currency to one that is not the journal one nor the transaction one => Traceback '_prepare_counterpart_amounts_using_st_line_rate' wasn't managing this case. opw-4526096 Forward-Port-Of: odoo/enterprise#83880 Forward-Port-Of: odoo/enterprise#83809
In this commit: === - Replaced all occurrences of `TicketScreen.nthRowContains()` with `UrbanPiper.orderHasText()` in test tours. task-4712861 runbot-115061 Forward-Port-Of: odoo/enterprise#83213
Original PR description
In this commit: === - Replaced all occurrences of `TicketScreen.nthRowContains()` with `UrbanPiper.orderHasText()` in test tours. task-4712861 runbot-115061 Forward-Port-Of: odoo/enterprise#83213
Before this commit: ======================== - The customer name was not updated when an order was received from the same phone number but with a different name. - If the ZIP code remained the same, changes in the address were not reflected in Odoo. After this commit: ======================== - The customer name is now updated if it differs, even when the phone number is the same. - Address updates are now applied in Odoo, even if the ZIP code has not changed. --- task - 4714559 Fo
Original PR description
Before this commit: ======================== - The customer name was not updated when an order was received from the same phone number but with a different name. - If the ZIP code remained the same, changes in the address were not reflected in Odoo. After this commit: ======================== - The customer name is now updated if it differs, even when the phone number is the same. - Address updates are now applied in Odoo, even if the ZIP code has not changed. --- task - 4714559 Forward-Port-Of: odoo/enterprise#83638 Forward-Port-Of: odoo/enterprise#83141
Currently, an exception is generated when the system tries to find the 'Out of Contract' work_entry_type after it has been deleted. Steps to Reproduce: 1 - Install hr_payroll module without demo data 2 - Navigate to hr payroll -> configuration -> work entry types 3 - delete the 'Out of contract' work entry type 4 - Navigate to hr payroll -> Contracts -> Contract 5 - Create a contract with an end date previous to the current. 6 - Navigate to hr payroll -> payslips -> To pay 7 - T
Original PR description
Currently, an exception is generated when the system tries to find the 'Out of Contract' work_entry_type after it has been deleted. Steps to Reproduce: 1 - Install hr_payroll module without demo data…
Currently, an exception is generated when the system tries to find the 'Out of Contract' work_entry_type after it has been deleted. Steps to Reproduce: 1 - Install hr_payroll module without demo data 2 - Navigate to hr payroll -> configuration -> work entry types 3 - delete the 'Out of contract' work entry type 4 - Navigate to hr payroll -> Contracts -> Contract 5 - Create a contract with an end date previous to the current. 6 - Navigate to hr payroll -> payslips -> To pay 7 - Try to create Payslips To Pay for created contract 8 - an error occurs Error: ```ValueError External ID not found in the system: hr_payroll.hr_work_entry_type_out_of_contract ``` This issue[1] occurs because when the system tries to reference the missing 'Out of Contract' work entry type it results in a ValueError due to a missing required record. The same issue [2] occurs in the `l10n_hk_hr_payroll` module. [1] - https://github.com/odoo/enterprise/blob/265177dfd281f3aa1d61db6587ddfa37790570fe/hr_payroll/models/hr_payslip.py#L597 [2] -https://github.com/odoo/enterprise/blob/31e56779f8e0011ddc5c1a2821f68c8f041efbe4/l10n_hk_hr_payroll/models/hr_payslip.py#L180 This fix resolves the issue by ensuring that if the `Out of Contract` work entry type is missing, it returns a false value. A similar fix has been applied in `l10n_hk_hr_payroll`. Additionally, code has been added to prevent the deletion of any work entry type using @api.ondelete. sentry-6277939517 Forward-Port-Of: odoo/enterprise#82659 Forward-Port-Of: odoo/enterprise#79053
When the operations type task was merged, the latest translations change was not properly committed. So commit 32e0364 is missing the correct translations for the last minute changes that occured. This commit corrects that issue. task-4569548
Original PR description
When the operations type task was merged, the latest translations change was not properly committed. So commit 32e0364 is missing the correct translations for the last minute changes that occured. This commit corrects that issue. task-4569548
When opening settings as a user with only access to settings results in a crash because the user does not have access to 'Journal'. Covered by `test_settings_access` in base when installing "test_full_discuss". The solution is simply to query for the default journal using sudo. Forward-Port-Of: odoo/enterprise#83715
Original PR description
When opening settings as a user with only access to settings results in a crash because the user does not have access to 'Journal'. Covered by `test_settings_access` in base when installing "test_full_discuss". The solution is simply to query for the default journal using sudo. Forward-Port-Of: odoo/enterprise#83715