Thursday, January 23, 2025
38 changes · saas-18.1
Resolved issues and error corrections
The IoT Box image build process now automatically applies the correct version again. This fixes a regression from a previous update and helps ensure IoT Box images are consistently identified for deployment and support.
Original PR description
The forwardport PR #194085 accidentally removed the automatic IoT Box versionning added in the PR #193505. This PR restores it as it was in #193505.
Chat windows now ask for focus only when needed instead of assuming they should take it by default. This reduces unexpected focus behavior for users and improves the reliability of live chat and messaging interactions, with a test added to help prevent regressions.
Original PR description
This PR changes the default value of the chat window focus. It's safer to ask for the focus every time you need it. It also adds a test to the feature. task-4452938
Point of Sale product lists now sort items by their product names instead of internal reference codes. This makes products easier for staff to find during sales and avoids confusing ordering when internal codes are used.
Original PR description
Before this commit, products were sorted based on display_name, which included the internal reference, resulting in products being sorted by their internal references. This fix ensures that products are sorted alphabetically by their names. opw-4456699 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Updated labels and messaging on Indian payroll payslip reports to make them clearer for users. This helps employees and payroll teams better understand payslip details, especially when a payslip has not yet been validated.
Original PR description
- Renamed "Employee ID" field label - Updated the message for non validated payslips task-4452133
This fix prevents the Partner Commission upgrade from changing a product's unit of measure when businesses have already customized it. It avoids upgrade failures for products already used in posted accounting entries and preserves customer configuration.
Original PR description
During upgrades to 18.1, if the UoM of the product had been changed, it leads to ``` This product is already being used in posted Journal Entries. If you want to change its Unit of Measure, please archive this product and create a new one. ``` No reason to revert user change during upgrade.
Miscellaneous changes
[1] adds a settings entry in CRM for ringover As this was done in stable the .pot file should have been updated [1] f2a384dd3b8ac2d358a9d8ea3fcec577b3e86859 Forward-Port-Of: odoo/odoo#194786
Original PR description
[1] adds a settings entry in CRM for ringover As this was done in stable the .pot file should have been updated [1] f2a384dd3b8ac2d358a9d8ea3fcec577b3e86859 Forward-Port-Of: odoo/odoo#194786
Before this commit, the condition to check the loyalty card to be saved in IndexedDB only kept the loyalty cards related to the finalized orders that were synced. It should keep the items that are not synced or finalized. opw-4257389 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#193026 Forward-Port-Of: odoo/odoo#188968
Original PR description
Before this commit, the condition to check the loyalty card to be saved in IndexedDB only kept the loyalty cards related to the finalized orders that were synced. It should keep the items that are not synced or finalized. opw-4257389 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#193026 Forward-Port-Of: odoo/odoo#188968
On smaller screen, the ControlPanel's buttons for CogMenu, Buttonbox, Knowledge, Search don't have a consistent width. This commit fixes it by giving those buttons' icon a fixed width, independently of the character's size and adjusting the horizontal padding for this use case. task-4492690 Forward-Port-Of: odoo/odoo#194336
Original PR description
On smaller screen, the ControlPanel's buttons for CogMenu, Buttonbox, Knowledge, Search don't have a consistent width. This commit fixes it by giving those buttons' icon a fixed width, independently of the character's size and adjusting the horizontal padding for this use case. task-4492690 Forward-Port-Of: odoo/odoo#194336
Before this commit, product images were unnecessarily loaded along with the POS data. This was redundant since the images are loaded separately. Additionally, loading the images caused excessive memory usage, leading to memory errors in certain scenarios. opw-4494712 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#194409
Original PR description
Before this commit, product images were unnecessarily loaded along with the POS data. This was redundant since the images are loaded separately. Additionally, loading the images caused excessive memory usage, leading to memory errors in certain scenarios. opw-4494712 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#194409
Before this commit, when a user accesses a sub-thread of channel made from a message for the 1st time, the format of the message body shows html as textcontent rather as inner html. Steps to reproduce: - Post a message as user A - Create a thread from this message as user B - User A accesses this sub-thread and posts a new message -> User A sees 1st message with bad formatting This happens because on sub-thread join, the data of sub-thread info are fetched, and since the sub-thread is
Original PR description
Before this commit, when a user accesses a sub-thread of channel made from a message for the 1st time, the format of the message body shows html as textcontent rather as inner html. Steps to…
Before this commit, when a user accesses a sub-thread of channel made from a message for the 1st time, the format of the message body shows html as textcontent rather as inner html. Steps to reproduce: - Post a message as user A - Create a thread from this message as user B - User A accesses this sub-thread and posts a new message -> User A sees 1st message with bad formatting This happens because on sub-thread join, the data of sub-thread info are fetched, and since the sub-thread is created from a message, the channel info data also contains the message data. This data was inserted without `html: true`, leading to message body being inserted in a non-trusted way in JS models, causing this formatting issue. This commit fixes the issue by flagging the insert with `html: true`, as this is from trusted origin and content is trusted, so the message body is inserted to be used properly in message component. Note that this behaviour applies to html fields, which message body is. The insert `html: true` is assessed for data on all targeted html fields. task-4506489 Forward-Port-Of: odoo/odoo#194732
In b1046c8156ee3d3699d5b229720134cc3b2532d4, we introduced a new feature to allow autoposting of bills. When a user does not modify the imported bill for 3 consecutive times, we ask the user if he wants to activate the feature. To detect whether the user has modified the imported bill or not, we use a new field `is_manually_modified` which is always set to `True` when the bill is edited except for automatic flows (OCR, CRON, email). test_autopost_bills will fail when the l10n_eg_edi_eta mo
Original PR description
In b1046c8156ee3d3699d5b229720134cc3b2532d4, we introduced a new feature to allow autoposting of bills. When a user does not modify the imported bill for 3 consecutive times, we ask the user if he…
In b1046c8156ee3d3699d5b229720134cc3b2532d4, we introduced a new feature to allow autoposting of bills. When a user does not modify the imported bill for 3 consecutive times, we ask the user if he wants to activate the feature. To detect whether the user has modified the imported bill or not, we use a new field `is_manually_modified` which is always set to `True` when the bill is edited except for automatic flows (OCR, CRON, email). test_autopost_bills will fail when the l10n_eg_edi_eta module is installed. This is due to fact that calling import_facturx will end up calling _extend_with_attachments, which in turn changes the value of l10n_eg_eta_json_doc_id.raw which triggers the computes that depend on it. This is why we add the context key before calling _extend_with_attachments. Moreover, in the same function, a savepoint is created, triggering a flush that triggers the recomputes. A savepoint is created without the context, therefore we flush right before we create the savepoint. runbot-110629 Forward-Port-Of: odoo/odoo#194595
Versions -------- - 18.0+ Steps ----- 1. Set locale variable `LC_TIME` to `be_FR.UTF-8` via command line; 2. do the same for `LC_ALL`; 3. start Odoo server; 4. attempt to make a payment via Worldline. Example updating locale for a single shell session: ```bash $ export LC_TIME=be_FR.UTF-8 $ export LC_ALL=$LC_TIME $ ./odoo-bin ``` Issue ----- Invalid API request: ACCESS_TO_MERCHANT_NOT_ALLOWED Cause ----- The date string sent to the Worldline API is formatted via the `
Original PR description
Versions -------- - 18.0+ Steps ----- 1. Set locale variable `LC_TIME` to `be_FR.UTF-8` via command line; 2. do the same for `LC_ALL`; 3. start Odoo server; 4. attempt to make a payment via Worldline. Example updating locale for a single shell session: ```bash $ export LC_TIME=be_FR.UTF-8 $ export LC_ALL=$LC_TIME $ ./odoo-bin ``` Issue ----- Invalid API request: ACCESS_TO_MERCHANT_NOT_ALLOWED Cause ----- The date string sent to the Worldline API is formatted via the `datetime.strftime` method to be RFC 1123 compliant. The issue is that the result of this method is locale-dependent. If it's not set to `en_US.UTF-8`, it no longer adheres to the format expected by Worldline. Solution -------- Use the `format_date_time` method from the Python's standard `wsgiref` library. This method will always return a RFC 1123 compliant date string, regardless of locale setting. opw-4472440 Forward-Port-Of: odoo/odoo#194004
Before this commit, the base.automation form view displays the filter_domain field when on_change trigger type is selected but the code does not take into account the filter_domain value for this type of trigger. After this commit, this field is simply hidden in that case. Task: opw-4492554 Forward-Port-Of: odoo/odoo#194520 Forward-Port-Of: odoo/odoo#194158
Original PR description
Before this commit, the base.automation form view displays the filter_domain field when on_change trigger type is selected but the code does not take into account the filter_domain value for this type of trigger. After this commit, this field is simply hidden in that case. Task: opw-4492554 Forward-Port-Of: odoo/odoo#194520 Forward-Port-Of: odoo/odoo#194158
Before this commit, the module_loader was showing error by empty the DOM and then adding his element with the errors. The issue is, if you have an error because of custom script or after an upgrade, then you were lockout because the DOM with empty and you cannot go fix the script. After this commit, a shorter message will be shown in the bottom-left of the screen. This message will invite the user to check the devtool to have more details about the error. --- I confirm I have signed the
Original PR description
Before this commit, the module_loader was showing error by empty the DOM and then adding his element with the errors. The issue is, if you have an error because of custom script or after an upgrade, then you were lockout because the DOM with empty and you cannot go fix the script. After this commit, a shorter message will be shown in the bottom-left of the screen. This message will invite the user to check the devtool to have more details about the error. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#194445 Forward-Port-Of: odoo/odoo#193912
**Steps to reproduce:** 1) Select the QR Codes option in settings (IN Company) 2) Do not enter an upi id in the company profile. 3) Go to invoice and preview/print the invoice. 4) Show that QR code without upi id and upi logos visible. **Cause:** - The condition of the upi id is not properly set to hide the block if upi is not set. **Fix:** - With this PR, the upi QR code and upi logos will not be visible if the upi id is not set. **task**-4426634 Forward-Port-Of: odoo/odoo#19206
Original PR description
**Steps to reproduce:** 1) Select the QR Codes option in settings (IN Company) 2) Do not enter an upi id in the company profile. 3) Go to invoice and preview/print the invoice. 4) Show that QR code without upi id and upi logos visible. **Cause:** - The condition of the upi id is not properly set to hide the block if upi is not set. **Fix:** - With this PR, the upi QR code and upi logos will not be visible if the upi id is not set. **task**-4426634 Forward-Port-Of: odoo/odoo#192068
Description of the issue/feature this PR addresses: Ensures proper association between `<span> `elements and corresponding `<input>` elements by making the `<span> `act as a label for better accessibility and user experience. Current behavior before PR: The `<span>` displaying the attribute name is not linked to the corresponding `<input>` radio button. Users must click the radio button itself to select an option. Desired behavior after PR is merged: The `<span> `acts as a clickable l
Original PR description
Description of the issue/feature this PR addresses: Ensures proper association between `<span> `elements and corresponding `<input>` elements by making the `<span> `act as a label for better accessibility and user experience. Current behavior before PR: The `<span>` displaying the attribute name is not linked to the corresponding `<input>` radio button. Users must click the radio button itself to select an option. Desired behavior after PR is merged: The `<span> `acts as a clickable label for the corresponding `<input>` radio button, allowing users to click either the text or the radio button to select an option. This improves accessibility and enhances the user experience. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#189301
We now partner with Ringover to provide VOIP capabilities using a browser extension for integration. We add a link to that extension in the "integrations". This is done in CRM because this is the most relevant app for VOIP usage. task-4488082 Forward-Port-Of: odoo/odoo#194678
Original PR description
We now partner with Ringover to provide VOIP capabilities using a browser extension for integration. We add a link to that extension in the "integrations". This is done in CRM because this is the most relevant app for VOIP usage. task-4488082 Forward-Port-Of: odoo/odoo#194678
Our "supported" method filtering detected printers had a condition introduced in v17 which was too strict and filtering out the STAR printers, so they were never detected anymore. This PR fixes this issue related PR: #174436 Forward-Port-Of: odoo/odoo#190367
Original PR description
Our "supported" method filtering detected printers had a condition introduced in v17 which was too strict and filtering out the STAR printers, so they were never detected anymore. This PR fixes this issue related PR: #174436 Forward-Port-Of: odoo/odoo#190367
The Issue: Prior to this commit, invoking _get_frontend resulted in the get_current_website function returning a different website than the one specified in the MockRequest. The Fix: To resolve this, we ensure the function selects the correct website by explicitly passing it in the context. runbot-64729 Forward-Port-Of: odoo/odoo#189705
Original PR description
The Issue: Prior to this commit, invoking _get_frontend resulted in the get_current_website function returning a different website than the one specified in the MockRequest. The Fix: To resolve this, we ensure the function selects the correct website by explicitly passing it in the context. runbot-64729 Forward-Port-Of: odoo/odoo#189705
Before this commit, if there were multiple pricelist rules applicable to a product but they had minimum quantity conditions, PoS did not compute the price with the correct applicable pricelist rules if the top pricelist rule's minimum quantity was not satisfied. opw-4407515 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#193272 Forward-Port-Of: odoo/odoo#193202
Original PR description
Before this commit, if there were multiple pricelist rules applicable to a product but they had minimum quantity conditions, PoS did not compute the price with the correct applicable pricelist rules if the top pricelist rule's minimum quantity was not satisfied. opw-4407515 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#193272 Forward-Port-Of: odoo/odoo#193202
The event listeners are never removed when the component is unmounted which means to global `env.bus` always keeps a reference to this component and everything that goes with it, including its (child)env. In version 18.0, the spreadsheet client action instantiates its own `BurgerMenu` component and also adds the spreadsheet `model` in the action child env (which can be expensive memory-wise) --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forw
Original PR description
The event listeners are never removed when the component is unmounted which means to global `env.bus` always keeps a reference to this component and everything that goes with it, including its (child)env. In version 18.0, the spreadsheet client action instantiates its own `BurgerMenu` component and also adds the spreadsheet `model` in the action child env (which can be expensive memory-wise) --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#194587 Forward-Port-Of: odoo/odoo#194485
Description of the issue/feature this PR addresses: Current behavior before PR: Desired behavior after PR is merged: --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#194658
Original PR description
Description of the issue/feature this PR addresses: Current behavior before PR: Desired behavior after PR is merged: --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#194658
Task URL: https://www.odoo.com/odoo/project.task/4184694 Changes: - Remove fields l10n_sa_bank_account_id, l10n_sa_bank_establishment_code, & l10n_sa_sarie_code from res.config.settings so that it can only be edited in the bank/bank acc. form view. - Show warning if one of the fields (l10n_sa_bank_id, l10n_sa_bank_establishment_code, l10n_sa_sarie_code) is not set. - Adjust width for l10n_sa_bank_account_id Forward-Port-Of: odoo/enterprise#75609
Original PR description
Task URL: https://www.odoo.com/odoo/project.task/4184694 Changes: - Remove fields l10n_sa_bank_account_id, l10n_sa_bank_establishment_code, & l10n_sa_sarie_code from res.config.settings so that it can only be edited in the bank/bank acc. form view. - Show warning if one of the fields (l10n_sa_bank_id, l10n_sa_bank_establishment_code, l10n_sa_sarie_code) is not set. - Adjust width for l10n_sa_bank_account_id Forward-Port-Of: odoo/enterprise#75609
*: account_reports On smaller screen, the ControlPanel's buttons for CogMenu, Buttonbox, Knowledge, Search don't have a consistent width. This commit fixes it by giving those buttons' icon a fixed width, independently of the character's size and adjusting the horizontal padding for this use case. task-4492690 Forward-Port-Of: odoo/enterprise#77412
Original PR description
*: account_reports On smaller screen, the ControlPanel's buttons for CogMenu, Buttonbox, Knowledge, Search don't have a consistent width. This commit fixes it by giving those buttons' icon a fixed width, independently of the character's size and adjusting the horizontal padding for this use case. task-4492690 Forward-Port-Of: odoo/enterprise#77412
Change the adjustmentType prop type to Number instead of String Forward-Port-Of: odoo/enterprise#73803
Original PR description
Change the adjustmentType prop type to Number instead of String Forward-Port-Of: odoo/enterprise#73803
When sending pos_order to eTims, all numeric values must be positive values, but when computing refunded pos_order, some fields are computed with negative value. This commit manage to transform negative fields from refunded pos_order to positive field. no-task Forward-Port-Of: odoo/enterprise#77257
Original PR description
When sending pos_order to eTims, all numeric values must be positive values, but when computing refunded pos_order, some fields are computed with negative value. This commit manage to transform negative fields from refunded pos_order to positive field. no-task Forward-Port-Of: odoo/enterprise#77257
See the test in this commit. Forward-Port-Of: odoo/enterprise#75381
Original PR description
See the test in this commit. Forward-Port-Of: odoo/enterprise#75381
When managing rounding adjustments at the point of sale (either excess or defect), Odoo modifies the amount to be paid accordingly. This requires sending an XML tag `printRecSubtotalAdjustment` to the fiscal printer, which is populated differently based on whether the adjustment increases or decreases the total. Without this tag the printer goes wrong and crashes. The issue is resolved by ensuring the adjustment value is properly quoted in the XML. Proper XML formatting prevents the cra
Original PR description
When managing rounding adjustments at the point of sale (either excess or defect), Odoo modifies the amount to be paid accordingly. This requires sending an XML tag `printRecSubtotalAdjustment` to the fiscal printer, which is populated differently based on whether the adjustment increases or decreases the total. Without this tag the printer goes wrong and crashes. The issue is resolved by ensuring the adjustment value is properly quoted in the XML. Proper XML formatting prevents the crash. Example: ``` Product price: 1.23 Rounding: 0.02 Total: 1.25 ``` or ``` Product price: 1.23 Rounding: -0.03 Total: 1.20 ``` --- CLA signed here: https://github.com/odoo/odoo/pull/186833 Forward-Port-Of: odoo/enterprise#74034
Forward-Port-Of: odoo/enterprise#77533 Forward-Port-Of: odoo/enterprise#76540
Original PR description
Forward-Port-Of: odoo/enterprise#77533 Forward-Port-Of: odoo/enterprise#76540
During the auto bank reconciliation, user error when validating the matching are ignored which hides why a statement line is not matched by a reconciliation model. This PR adds logs including the user error so it can be retrieved from the logs when doing post mortem analysis. opw-4393854 Forward-Port-Of: odoo/enterprise#77255
Original PR description
During the auto bank reconciliation, user error when validating the matching are ignored which hides why a statement line is not matched by a reconciliation model. This PR adds logs including the user error so it can be retrieved from the logs when doing post mortem analysis. opw-4393854 Forward-Port-Of: odoo/enterprise#77255
In accounting reports that use periods (like the tax report or profit and loss), the date selector is broken when you try to go back or forward for more than 365 years. The reason is that it was computing the resulting year by looping over the number of years to go back/forward, and each time adding or subtracting the number of years as days. When over 365, it would go back/forward more than 1 year per iteration. This commit fixes the issue. [task-4410887](https://www.odoo.com/odoo/proj
Original PR description
In accounting reports that use periods (like the tax report or profit and loss), the date selector is broken when you try to go back or forward for more than 365 years. The reason is that it was computing the resulting year by looping over the number of years to go back/forward, and each time adding or subtracting the number of years as days. When over 365, it would go back/forward more than 1 year per iteration. This commit fixes the issue. [task-4410887](https://www.odoo.com/odoo/project.task/4410887) Forward-Port-Of: odoo/enterprise#77098
This commit introduces the app icon for the `sale_shopee` module. task-4492921 Forward-Port-Of: odoo/enterprise#77407
Original PR description
This commit introduces the app icon for the `sale_shopee` module. task-4492921 Forward-Port-Of: odoo/enterprise#77407
Before this commit, created moves were not done in batch making the amount of queries go up uselessly. This commit makes that creation in batch and adapts the query counters in tests. task-4299915 Forward-Port-Of: odoo/enterprise#77544 Forward-Port-Of: odoo/enterprise#73145
Original PR description
Before this commit, created moves were not done in batch making the amount of queries go up uselessly. This commit makes that creation in batch and adapts the query counters in tests. task-4299915 Forward-Port-Of: odoo/enterprise#77544 Forward-Port-Of: odoo/enterprise#73145
Before this commit, for map views on res.partner (which have attribute res_partner = id), if the user group by a relational field (X2many, many2one), the name of the group is "None" ### Steps to reproduce: Contacts > Map view in the search bar, group by "Salesperson" On the left side of the map view, the group name is "None" ### Expected Name of partner salesperson should be visible instead of "None" original PR : #74205 Forward-Port-Of: odoo/enterprise#76690 Forward-Port-Of: odoo/en
Original PR description
Before this commit, for map views on res.partner (which have attribute res_partner = id), if the user group by a relational field (X2many, many2one), the name of the group is "None" ### Steps to reproduce: Contacts > Map view in the search bar, group by "Salesperson" On the left side of the map view, the group name is "None" ### Expected Name of partner salesperson should be visible instead of "None" original PR : #74205 Forward-Port-Of: odoo/enterprise#76690 Forward-Port-Of: odoo/enterprise#76248
This commit solves the undeterministic behavior of the multiple tracebacks test by making sure no race condition can happen when triggering the errors. Forward-Port-Of: odoo/enterprise#77471
Original PR description
This commit solves the undeterministic behavior of the multiple tracebacks test by making sure no race condition can happen when triggering the errors. Forward-Port-Of: odoo/enterprise#77471
Following [this commit], the pot file was not updated. We're re-exporting it and meanwhile fixing a small typo. [this commit]: https://github.com/odoo/enterprise/commit/507f8a3df18320f7e899630dfb10da769cf20876 Forward-Port-Of: odoo/enterprise#77546
Original PR description
Following [this commit], the pot file was not updated. We're re-exporting it and meanwhile fixing a small typo. [this commit]: https://github.com/odoo/enterprise/commit/507f8a3df18320f7e899630dfb10da769cf20876 Forward-Port-Of: odoo/enterprise#77546
Without this change it's impossible to remove the user groups from internal users, because they're being re-added upon the module updates. The reason is because there's a mechanism in place that synchronizes the newly added groups to the default user, so they're automatically added to all internal users ([ref](https://github.com/odoo/odoo/blob/6b5a839428b06e09d90631e9824a9b594ff8f4f5/odoo/addons/base/models/res_users.py#L621-L626)). For this reason and by convention, groups added t
Original PR description
Without this change it's impossible to remove the user groups from internal users, because they're being re-added upon the module updates.
The reason is because there's a mechanism in place that synchronizes the newly added groups to the default user, so they're automatically added to all internal users ([ref](https://github.com/odoo/odoo/blob/6b5a839428b06e09d90631e9824a9b594ff8f4f5/odoo/addons/base/models/res_users.py#L621-L626)).
For this reason and by convention, groups added to the default user should be non-updateable, so system administrators can remove them if they wanted to.
Related to: https://github.com/odoo/enterprise/commit/621824fb3fe1b5b895d1a37a15d45e903bc7dc6f
--
ping @tde-banana-odoo @tivisse
Forward-Port-Of: odoo/enterprise#77361
Forward-Port-Of: odoo/enterprise#55024Forward-Port-Of: odoo/enterprise#77503
Original PR description
Forward-Port-Of: odoo/enterprise#77503