Wednesday, March 5, 2025
39 changes · saas-18.1
Resolved issues and error corrections
The translation button is now visible again in Studio when editing views and XML. This fixes a regression that prevented users from accessing translation actions in key Studio editing screens.
Original PR description
In studio, the translation button is always invisible in the ir.ui.view form and more importantly studio xml editor since e5a0100d09b3c150ae90e8fc4a5e3c7cb2fe83ec. opw-4519334
This fix makes an automated mail chat test more reliable by ensuring the chat composer is treated as unfocused before checking the compact chat counter. It helps keep the validation pipeline stable without changing the user-facing chat behavior.
Original PR description
Follow-up of odoo#199828 PR above added a new test that resulted in frequent runbot failures: ``` Failed assertions: 1. [toBe] Failed to find 1 of ".o-mail-ChatHub-compact" with text "1" (Timeout of…
Follow-up of odoo#199828 PR above added a new test that resulted in frequent runbot failures: ``` Failed assertions: 1. [toBe] Failed to find 1 of ".o-mail-ChatHub-compact" with text "1" (Timeout of 3 seconds). Found 0 instead. > Expected: true > Received: false 2. [errors] 1 unverified error(s) Error during test: Failed to find 1 of ".o-mail-ChatHub-compact" with text "1" (Timeout of 3 seconds). Found 0 instead. ``` This happens because the test had a chat window open, enabled the compact mode of chat hub, then posts a message and assert there's a counter on the chathub compact button. Everything works fine when a human do these interactions. However the test failed because there was no counter. This comes from chat window modeling that was thinking the composer was still focused, therefore it was marking the conversation as read, leading to consuming the "1" counter. Composer was kept in "focused" state because when programmatically simulating a `click`, the detection of loss of focus is made with a `focusout` event that is triggered normally on the previously focused element. In HOOT, the `@mail` click test helper was not triggering `focusout` on the previous element. Some attempts were made to programmatically trigger the "focusout", including some reliance of tests that do `mousedown.prevent` that are expected to not change focus on click, but tests keep failing. As this is important to make runbot green as soon as possible, this commit fixes the issue by helping the problematic test to blur/focusout the composer. Note that the `contains().click` from `web_test_helpers` seem to properly managed the focusous and the `mousedown.prevent`, but there are a lot of occurrences of mail `await click()` to change, and this without taking into account some issues in converting to `contains.click()` at the moment: - timeout of click is 200ms, which is too short for discuss tests - mail `click` feature uses `text` to make exact comparison of textnode, compared to `:contains()`. This is probably not a big issue as with `value` where asserting composer is empty asynchronously is very important for discuss The plan is to use web test helpers for mail tests, but this requires more time than the urgency to fix this test now. runbot-159692
This update addresses a problem around selecting customer names in the Point of Sale interface. It helps make cashier workflows more reliable when choosing or confirming a customer during checkout.
Original PR description
to be updated, or discarded ...
This fix ensures the administrator account has an email address during Sign and Knowledge test runs. It prevents false test failures in environments without demo data, improving release validation reliability without changing user-facing features.
Original PR description
## [FIX] sign: set email address to admin user Before this commit, the test `/sign:TestUi.test_ui` fails in no demo because no email address is set on admin user. This commit fixes the issue by setting an email address inside the test before launching the tour. runbot-error-98514 ## [FIX] knowledge: make sure admin user has email set in no demo Before this commit, `/knowledge:TestKnowledgeEditorCommands.test_knowledge_article_commands_tour` fails because the admin user does not have an email address set. This commit makes sure the email address is set on admin user before launching the tour to be sure the tour can be executed without any issue in no demo.
Miscellaneous changes
Update the OWL lib. Release notes: https://github.com/odoo/owl/releases/tag/v2.6.1 Forward-Port-Of: odoo/odoo#200352
Original PR description
Update the OWL lib. Release notes: https://github.com/odoo/owl/releases/tag/v2.6.1 Forward-Port-Of: odoo/odoo#200352
**Current behavior:** It's possible to end up with a negative valuation for a product with zero product qty. **Expected behavior:** No negative valuation for 0 product qty. **Steps to reproduce:** 1. Create a FIFO, real-time product; create a BOM for fifo-product with some component (tracked by qty, costing method doesn't matter, `standard_price=1`) 2. Purchase 2 units of component @ $1 3. Create and fully process an MO for fifo-prod 4. Change the standard price of component fr
Original PR description
**Current behavior:** It's possible to end up with a negative valuation for a product with zero product qty. **Expected behavior:** No negative valuation for 0 product qty. **Steps to reproduce:** 1.…
**Current behavior:** It's possible to end up with a negative valuation for a product with zero product qty. **Expected behavior:** No negative valuation for 0 product qty. **Steps to reproduce:** 1. Create a FIFO, real-time product; create a BOM for fifo-product with some component (tracked by qty, costing method doesn't matter, `standard_price=1`) 2. Purchase 2 units of component @ $1 3. Create and fully process an MO for fifo-prod 4. Change the standard price of component from $1 -> $2 5. Create and fully process a second MO for fifo-prod 6. Unbuild the second MO (from step 5) 7. Sell 1 unit of fifo-prod 8. Check the valuation, see that both the unbuild and out move (sale) use a `unit_cost=$2` despite there having been only 1 qty valued at $2 in the valuation history **Cause of the issue:** SVL creation for fifo costing in an unbuild context does not limit the candidate layer search to moves linked to the actual manufacturing order specified on the unbuild form. So despite us unbuilding the second MO in step 6, the valuation from the first MO's SVL is used. The reason we get the correct `unit_cost` despite using the wrong layer is due to commit: 84dda96 Prior to which, the valuation would have correctly zeroed out but there would have still been this valuation mis-match behind the scenes. **Fix:** Constrain the fifo candidate layer search to finished moves from the unbuilt production (if actuallywhen `_action_confirm`ing unbuild moves. opw-4416350 Forward-Port-Of: odoo/odoo#198499 Forward-Port-Of: odoo/odoo#197190
Currently when settling a customer account, we try to create a simplified invoice which is nt possible since we do not have products in the order. Users using the Spanish localization cannot settle customer accounts. Steps to reproduce: ------------------- * Install **l10n_es_pos** and switch to the ES Company * Open shop session * Add products to the order, select any customer, pay with customer account * Select **New order** * Select the previous customer and select **Settle due accou
Original PR description
Currently when settling a customer account, we try to create a simplified invoice which is nt possible since we do not have products in the order. Users using the Spanish localization cannot settle…
Currently when settling a customer account, we try to create a simplified invoice which is nt possible since we do not have products in the order. Users using the Spanish localization cannot settle customer accounts. Steps to reproduce: ------------------- * Install **l10n_es_pos** and switch to the ES Company * Open shop session * Add products to the order, select any customer, pay with customer account * Select **New order** * Select the previous customer and select **Settle due accounts** * Select any payment method * Validate order -> Yes > Observation: Cannot invoice empty order Why the fix: ------------ Spain requires to invoice all orders. In Pos, everything is considered as an order but settling customer accounts does not fall under the definition of an order outside of Odoo (no transfer of product, amount=0). Therefore when we settle customer account we skip the automatic invoicing and fallback on the pos bahavior without the localization. opw-4185144 Enterprise PR: https://github.com/odoo/enterprise/pull/71958 Forward-Port-Of: odoo/odoo#199040 Forward-Port-Of: odoo/odoo#183682
Steps to reproduce the bug: - Install POS, then uninstall the sms gateway - Open a shop and then click on customers button - write anything in the input field then click on `Search More` Problem: Error is raised in the request because the `partner_list.js` screen is passing the field `phone_mobile_search` in the search_fields. The `phone_mobile_search` field is only introduced to the res.partner model in the a PhoneMixin and the inheritence is only applied in the `sms gateway module` s
Original PR description
Steps to reproduce the bug: - Install POS, then uninstall the sms gateway - Open a shop and then click on customers button - write anything in the input field then click on `Search More` Problem:…
Steps to reproduce the bug: - Install POS, then uninstall the sms gateway - Open a shop and then click on customers button - write anything in the input field then click on `Search More` Problem: Error is raised in the request because the `partner_list.js` screen is passing the field `phone_mobile_search` in the search_fields. The `phone_mobile_search` field is only introduced to the res.partner model in the a PhoneMixin and the inheritence is only applied in the `sms gateway module` so the field will only be available if the `sms gateway is installed`. Possible Approaches: - [Stable] added a function in the partner_list.js that tells if the PhoneMixin is applied and it returns false in the pos, and overriden the same function in the pos_sms bridge module that implies that both pos and sms are installed and it returns true there meaning the mixin is applied. - [Non Stable] add the inheritence of the mixin in the pos module, but that will require module upgrade - [Non Stable] add a whole direct dependency between the pos and the sms gateway opw-4455381 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#199023
In order to comply with the EU Measuring Instruments Directive, the code for weighing products must be verified with a checksum to ensure it has not been modified. This PR refactors both the IoT driver and the POS code, with the goal of removing dead code and making the amount of code that needs to be certified as small as possible. Enterprise PR: https://github.com/odoo/enterprise/pull/75269 task-3929839 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.
Original PR description
In order to comply with the EU Measuring Instruments Directive, the code for weighing products must be verified with a checksum to ensure it has not been modified. This PR refactors both the IoT driver and the POS code, with the goal of removing dead code and making the amount of code that needs to be certified as small as possible. Enterprise PR: https://github.com/odoo/enterprise/pull/75269 task-3929839 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#189846
**Problem**: In previous versions, the link button (AI & translation too) was not displayed in the toolbar when the selection included block elements. However, this behavior has regressed, and the link button (AI and Translation too) now appears even when the selection spans blocks. **Solution**: Hide the link button (AI & translation too) in the toolbar when the selection includes block elements. **Steps to reproduce**: 1. Create a table in the editor. 2. Select multiple columns. 3.
Original PR description
**Problem**: In previous versions, the link button (AI & translation too) was not displayed in the toolbar when the selection included block elements. However, this behavior has regressed, and the link button (AI and Translation too) now appears even when the selection spans blocks. **Solution**: Hide the link button (AI & translation too) in the toolbar when the selection includes block elements. **Steps to reproduce**: 1. Create a table in the editor. 2. Select multiple columns. 3. Observe that the toolbar incorrectly displays the link button. opw-4397649 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#190783
When downloading all message attachments as a zip file in portal chatter, if there is an editor iframe on the page, instead of downloading the file, there is a blob url opened on the page. This happens because the web editor handles clicks and tries to open the URL in the current main window, which results in displaying the blob URL to users instead of ownloading it. Opening the attachment in a new window prevents interfering with the current page url and keeps the iframe managed by the web edit
Original PR description
When downloading all message attachments as a zip file in portal chatter, if there is an editor iframe on the page, instead of downloading the file, there is a blob url opened on the page. This happens because the web editor handles clicks and tries to open the URL in the current main window, which results in displaying the blob URL to users instead of ownloading it. Opening the attachment in a new window prevents interfering with the current page url and keeps the iframe managed by the web editor intact. task-4545106 Forward-Port-Of: odoo/odoo#200100
steps: - create a combo product with 1 or more combo items - archive a product part of this combo - create an SO and add this combo product issue: - it shows archived product cause: - when product is archived the linked combo item line is not archived fix: - added an active filter in combo_configurator get data opw-4579038 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#199559
Original PR description
steps: - create a combo product with 1 or more combo items - archive a product part of this combo - create an SO and add this combo product issue: - it shows archived product cause: - when product is archived the linked combo item line is not archived fix: - added an active filter in combo_configurator get data opw-4579038 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#199559
**Behavior before PR:** When removing format using removeFormat button, font-size style is not getting removed from formatted text. This happens because in `removeFormat` method `editor.document.execCommand('removeFormat')` fails to remove styles applied through classes. To remove these styles, font-size classes should be removed. **Behavior after PR is merged:** Now font-size related classes will be removed when removing format and font-size style will be removed from formatted text.
Original PR description
**Behavior before PR:**
When removing format using removeFormat button, font-size style is not getting removed from formatted text. This happens because in `removeFormat` method `editor.document.execCommand('removeFormat')` fails to remove styles applied through classes. To remove these styles, font-size classes should be removed.
**Behavior after PR is merged:**
Now font-size related classes will be removed when removing format and font-size style will be removed from formatted text.
task-4526026
---
I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Forward-Port-Of: odoo/odoo#195979### Steps to reproduce: - Open the To-Do app. - Create a list (e.g., `/list`). - Insert an image into a list item and press `Enter`. - Notice that the list item containing the image is outdented. ### Solution: - In `handleSplitBlock`, the `!closestLI.textContent` check did not handle list items containing only an image. Adding an `isEmptyBlock` check ensures the bullet point is preserved. ### Description of the issue/feature this PR addresses: - Pressing Enter in list item cont
Original PR description
### Steps to reproduce: - Open the To-Do app. - Create a list (e.g., `/list`). - Insert an image into a list item and press `Enter`. - Notice that the list item containing the image is outdented. ### Solution: - In `handleSplitBlock`, the `!closestLI.textContent` check did not handle list items containing only an image. Adding an `isEmptyBlock` check ensures the bullet point is preserved. ### Description of the issue/feature this PR addresses: - Pressing Enter in list item containing only an image removed the bullet point. ### Desired behavior after PR is merged: - Pressing Enter in a list item with only an image preserves the bullet point and creates a new empty list item. task-4586704 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#198725
Add belgian states to the states data list. Done as part of task-4522433 Forward-Port-Of: odoo/odoo#199759
Original PR description
Add belgian states to the states data list. Done as part of task-4522433 Forward-Port-Of: odoo/odoo#199759
Since logging new attendance is approved by default, the refuse/approve buttons for rejecting/approving extra zero hours should be invisible. task-4320142 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#196419
Original PR description
Since logging new attendance is approved by default, the refuse/approve buttons for rejecting/approving extra zero hours should be invisible. task-4320142 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#196419
Issue: When archiving a contract the employee form view does not update the first contract. Cause: The first contract computation is not trigger when archiving a contract. expected behavior: When archiving a contract the first contract should be recomputed. Fix: Add the active field to the depends method of the contract. task-3745594 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#197146 Forward-Port-Of: odo
Original PR description
Issue: When archiving a contract the employee form view does not update the first contract. Cause: The first contract computation is not trigger when archiving a contract. expected behavior: When archiving a contract the first contract should be recomputed. Fix: Add the active field to the depends method of the contract. task-3745594 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#197146 Forward-Port-Of: odoo/odoo#158366
Until 18.0 [1], test classes should not inherit from other test classes which themselves contain tests. When this happens, the tests of the parent class are run for every class that inherits from it. We fix occurrences of this for social marketing apps. A naive detection script is available on the pad of the related task. [1]: 6dc96811c24ec4c97b8fbd2489aef6d4f061ac03 task-3792478 Forward-Port-Of: odoo/odoo#200123 Forward-Port-Of: odoo/odoo#198994
Original PR description
Until 18.0 [1], test classes should not inherit from other test classes which themselves contain tests. When this happens, the tests of the parent class are run for every class that inherits from it. We fix occurrences of this for social marketing apps. A naive detection script is available on the pad of the related task. [1]: 6dc96811c24ec4c97b8fbd2489aef6d4f061ac03 task-3792478 Forward-Port-Of: odoo/odoo#200123 Forward-Port-Of: odoo/odoo#198994
It is possible to add note / section lines with empty label (`name`). Currenlty we then print placeholder values: * section: `A section title` * note: `A note, whose content usually applies to the section or product above.` (They were added to be displayed in studio; see commit 2fbf17d235fb7c92914f0a3b6a3ce954c27f3032.) After this commit the placeholders will not be printed on PDFs anymore. (But they will still be shown in studio.) task: none Forward-Port-Of: odoo/odoo#200154
Original PR description
It is possible to add note / section lines with empty label (`name`). Currenlty we then print placeholder values: * section: `A section title` * note: `A note, whose content usually applies to the section or product above.` (They were added to be displayed in studio; see commit 2fbf17d235fb7c92914f0a3b6a3ce954c27f3032.) After this commit the placeholders will not be printed on PDFs anymore. (But they will still be shown in studio.) task: none Forward-Port-Of: odoo/odoo#200154
In commit 2f62d5c0d78371be70586c79cb2b5931e733b042 the issue was fixed for some cases. But the problem remains in some other cases. In the original fix a special context value was added to the reconciliation of some lines. It prevents the creation of cash basis related moves for that reconciliation. This commit adds the same context to all the other reconciliations in the same function as the original reconciliation. Reproduce on runbot for l10n_mx for bank payment method 1. Install l1
Original PR description
In commit 2f62d5c0d78371be70586c79cb2b5931e733b042 the issue was fixed for some cases. But the problem remains in some other cases. In the original fix a special context value was added to the…
In commit 2f62d5c0d78371be70586c79cb2b5931e733b042 the issue was fixed for some cases.
But the problem remains in some other cases.
In the original fix a special context value was added to the reconciliation of some lines. It prevents the creation of cash basis related moves for that reconciliation. This commit adds the same context to all the other reconciliations in the same function as the original reconciliation.
Reproduce on runbot for l10n_mx for bank payment method
1. Install l10n_mx
2. Set the 'IVA 16% VENTAS' tax as Customer Taxes on a product. Set the Sales Price to 100.
3. Create a payment method and journal for the PoS
* Payment method: Bank on journal BNK1
* Journal: POS
5. Create a PoS using the payment method and journal from the previous step.
6. Start a PoS session
7. Sell the product from step 2 via the Bank payment method.
8. Close the Session
9. The following journal entries will be created: (All the tax lines use the same tax account; the "final" and not the caba transition account)
```
* 1 entry in the POS journal (order)
base: | - 100.0 $
tax: | - 16.0 $
receivable: | + 116.0 $
* 1 entry in the BNK1 journal (bank / payment)
bank: | + 116.0 $
receivable: | - 116.0 $
* 1 entry in the CBMX journal (caba)
base: | - 100.0 $
base: | + 100.0 $
tax: | - 16.0 $
tax: | + 16.0 $
* 1 entry in the EXCH journal (exchange difference)
for the cash basis rounding difference
tax: | - 16.0 $
tax: | + 16.0 $
```
opw-4355124
Forward-Port-Of: odoo/odoo#199194Steps to Reproduce: 1. Drop a popup snippet on any page (e.g., Home page). 2. In the editor, set "Shown on" to "This Page." 3. Save the snippet for reuse. 4. Drop the same custom snippet on another page (e.g., Contact Us page). 5. Try to make the snippet visible on this page. Issue: The user has to click twice to make the popup visible. On the first click, a scroller appears, and the popup becomes visible only on the second click. The reason behind is that at the time of saving snippe
Original PR description
Steps to Reproduce: 1. Drop a popup snippet on any page (e.g., Home page). 2. In the editor, set "Shown on" to "This Page." 3. Save the snippet for reuse. 4. Drop the same custom snippet on another page (e.g., Contact Us page). 5. Try to make the snippet visible on this page. Issue: The user has to click twice to make the popup visible. On the first click, a scroller appears, and the popup becomes visible only on the second click. The reason behind is that at the time of saving snippet for later use, it clones it with `d-none` class. This commit resolves the issue by explicitly removing the `d-none` from the custom_popup_snippet, ensuring the custom popup appears immediately after being dragged and dropped. task-4088420 Forward-Port-Of: odoo/odoo#199001 Forward-Port-Of: odoo/odoo#184659
*=point_of_sale,pos_restaurant Currently an exception was generated when the user clicked on "Furnitures" in the Choose Your Store section after following the below steps: - Created database without demo and install 'Point of Sale' - Open 'Point of Sale' > Click on "Furnitures" in the Choose Your Store - Archive "Furniture Shop" POS - Click on "Furnitures" in the Choose Your Store - Delete "Furniture Shop" POS - Again, click on "Furnitures" in the Choose Your Store » error generated
Original PR description
*=point_of_sale,pos_restaurant Currently an exception was generated when the user clicked on "Furnitures" in the Choose Your Store section after following the below steps: - Created database without…
*=point_of_sale,pos_restaurant Currently an exception was generated when the user clicked on "Furnitures" in the Choose Your Store section after following the below steps: - Created database without demo and install 'Point of Sale' - Open 'Point of Sale' > Click on "Furnitures" in the Choose Your Store - Archive "Furniture Shop" POS - Click on "Furnitures" in the Choose Your Store - Delete "Furniture Shop" POS - Again, click on "Furnitures" in the Choose Your Store » error generated This is because [1] tries to create a combo product, but it was already created the first time when we loaded data by clicking "furniture", so it generates a validation error from [2] because we cannot link the same product in a combo. This commit solves the above issue by using 'Command.clear()' at [1], which is clear linked combo product before creating it, so it always sets product from data when user loads data. [1] - https://github.com/odoo/odoo/blob/64515f56b3987ffdea6618eb14b6062f95542ac6/addons/product/data/product_demo.xml#L619-L638 [2] - https://github.com/odoo/odoo/blob/64515f56b3987ffdea6618eb14b6062f95542ac6/addons/product/models/product_combo.py#L73 sentry-6101630952 Forward-Port-Of: odoo/odoo#190713
Steps to reproduce =================== - Create database with a valid mail configuration. - Open CRM module apply some random filters to get the helper. - alias name is there in the helper. This PR addresses the issue and now the alias email will be there instead of the name. Task-4619974 Forward-Port-Of: odoo/odoo#200129
Original PR description
Steps to reproduce =================== - Create database with a valid mail configuration. - Open CRM module apply some random filters to get the helper. - alias name is there in the helper. This PR addresses the issue and now the alias email will be there instead of the name. Task-4619974 Forward-Port-Of: odoo/odoo#200129
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
Purpose ======= Fix the display of the resource on the validation page when in 'time_auto_assign'. Specification ============= If the apt type setting is: - 'time_auto_assign' and 'no_picture': resource(s) not displayed - 'time_auto_assign' and 'picture': if one resource -> displayed on the right with its picture if more than one resource -> displayed in the validation details related commit: odoo/enterprise@9fe0c7ab9f3276e9a79ba79831660ee0d7787582 Task-4395325 Forward-Port-Of: o
Original PR description
Purpose ======= Fix the display of the resource on the validation page when in 'time_auto_assign'. Specification ============= If the apt type setting is: - 'time_auto_assign' and 'no_picture': resource(s) not displayed - 'time_auto_assign' and 'picture': if one resource -> displayed on the right with its picture if more than one resource -> displayed in the validation details related commit: odoo/enterprise@9fe0c7ab9f3276e9a79ba79831660ee0d7787582 Task-4395325 Forward-Port-Of: odoo/enterprise#75438
In this commit [e366986](https://github.com/odoo/enterprise/commit/e36698683d984d8a1761809b85b591084ff37ed9), we used a rpc call in a function, but as the rpc is no more a service but a function, this is broken in this version. This commit fix the rpc call to use it as a function and not a service. no-task Forward-Port-Of: odoo/enterprise#80596
Original PR description
In this commit [e366986](https://github.com/odoo/enterprise/commit/e36698683d984d8a1761809b85b591084ff37ed9), we used a rpc call in a function, but as the rpc is no more a service but a function, this is broken in this version. This commit fix the rpc call to use it as a function and not a service. no-task Forward-Port-Of: odoo/enterprise#80596
The way the queries were formatted was prone to create injections (though it didn't in this case). This commit makes proper use of the SQL formatter to avoid that and make the code more robust. Forward-Port-Of: odoo/enterprise#80620 Forward-Port-Of: odoo/enterprise#80493
Original PR description
The way the queries were formatted was prone to create injections (though it didn't in this case). This commit makes proper use of the SQL formatter to avoid that and make the code more robust. Forward-Port-Of: odoo/enterprise#80620 Forward-Port-Of: odoo/enterprise#80493
This commit introduces an easy way to recognize "orders" which are intended to settle customer accounts. opw-4185144 Community PR: https://github.com/odoo/odoo/pull/183682 Forward-Port-Of: odoo/enterprise#80051 Forward-Port-Of: odoo/enterprise#71958
Original PR description
This commit introduces an easy way to recognize "orders" which are intended to settle customer accounts. opw-4185144 Community PR: https://github.com/odoo/odoo/pull/183682 Forward-Port-Of: odoo/enterprise#80051 Forward-Port-Of: odoo/enterprise#71958
In order to comply with the EU Measuring Instruments Directive, the code for weighing products must be verified with a checksum to ensure it has not been modified. This commit adds an endpoint for retrieving the checksum of the relevant scale code, as well as refactoring of the code to make it as simpler and to reduce the amount of code that needs to be certified. Community PR: https://github.com/odoo/odoo/pull/189846 task-3929839 Forward-Port-Of: odoo/enterprise#75269
Original PR description
In order to comply with the EU Measuring Instruments Directive, the code for weighing products must be verified with a checksum to ensure it has not been modified. This commit adds an endpoint for retrieving the checksum of the relevant scale code, as well as refactoring of the code to make it as simpler and to reduce the amount of code that needs to be certified. Community PR: https://github.com/odoo/odoo/pull/189846 task-3929839 Forward-Port-Of: odoo/enterprise#75269
### Steps to reproduce: - Create a draft vendor bill - Go to Accounting > Reporting > General Ledger - Include draft entries in the report - Click the three dots on a posted entry and view the entry - Reset it to draft - Delete the name of the entry and save - Return to the General Ledger - Type something in the search bar - Error ### Cause: This flow automatically search on the lines but draft lines have no name (null) so it crashes on `const lineName = line.name.trim().toLowerCase
Original PR description
### Steps to reproduce: - Create a draft vendor bill - Go to Accounting > Reporting > General Ledger - Include draft entries in the report - Click the three dots on a posted entry and view the entry - Reset it to draft - Delete the name of the entry and save - Return to the General Ledger - Type something in the search bar - Error ### Cause: This flow automatically search on the lines but draft lines have no name (null) so it crashes on `const lineName = line.name.trim().toLowerCase();`. ### Solution: Ignore lines with no names when searching. opw-4589598 Forward-Port-Of: odoo/enterprise#80364
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#80621 Forward-Port-Of: odoo/enterprise#80446
Prior to this commit, `knowledge_calendar_command_tour` failed on the first day of the month, if it was a Saturday. This is because it creates an `ArticleItem` on Monday of the week containing the current date, which may be in the previous month, and then tries to find that same `ArticleItem` in the FullCalendar representation of the current month with week ends days hidden. In that view, with that setting, Monday of the current week is always shown (even if it is part of the previous mont
Original PR description
Prior to this commit, `knowledge_calendar_command_tour` failed on the first day of the month, if it was a Saturday. This is because it creates an `ArticleItem` on Monday of the week containing the current date, which may be in the previous month, and then tries to find that same `ArticleItem` in the FullCalendar representation of the current month with week ends days hidden. In that view, with that setting, Monday of the current week is always shown (even if it is part of the previous month) UNLESS the first day of the month is Saturday. This commit also fixes some selectors using `:not` pseudo-class incorrectly (they were always true and did not verify anything). runbot-task-114354 Forward-Port-Of: odoo/enterprise#80687
Recently, the Kenyan support team has been reporting a temporary increase in the number of timeouts when sending invoices to eTIMS, as well as associated issues (e.g. timed-out invoices turning out to be actually registered on eTIMS' side) which warrant further investigation. In order to reduce the number of timeouts and help diagnose (1) which API endpoints are timing out (which can tell us where we should implement retry mechanisms) and (2) whether the timed-out invoices are always or somet
Original PR description
Recently, the Kenyan support team has been reporting a temporary increase in the number of timeouts when sending invoices to eTIMS, as well as associated issues (e.g. timed-out invoices turning out to be actually registered on eTIMS' side) which warrant further investigation. In order to reduce the number of timeouts and help diagnose (1) which API endpoints are timing out (which can tell us where we should implement retry mechanisms) and (2) whether the timed-out invoices are always or sometimes registered on eTIMS' side, we: - Increase the timeout of eTIMS calls to 2 minutes; - Log every timeout in the server logs; and - Log every invoice timeout in the invoice chatter. task-4624257 Forward-Port-Of: odoo/enterprise#80726 Forward-Port-Of: odoo/enterprise#80672
Until 18.0 [1], test classes should not inherit from other test classes which themselves contain tests. When this happens, the tests of the parent class are run for every class that inherits from it. We fix occurrences of this for social marketing apps. A naive detection script is available on the pad of the related task. [1]: 6dc96811c24ec4c97b8fbd2489aef6d4f061ac03 task-3792478 Forward-Port-Of: odoo/enterprise#80654 Forward-Port-Of: odoo/enterprise#80034
Original PR description
Until 18.0 [1], test classes should not inherit from other test classes which themselves contain tests. When this happens, the tests of the parent class are run for every class that inherits from it. We fix occurrences of this for social marketing apps. A naive detection script is available on the pad of the related task. [1]: 6dc96811c24ec4c97b8fbd2489aef6d4f061ac03 task-3792478 Forward-Port-Of: odoo/enterprise#80654 Forward-Port-Of: odoo/enterprise#80034
ASP-ONE.FR is now a brand of Tessi Informatique and we have to update the information passed in the xml. task-4605970 Forward-Port-Of: odoo/enterprise#80609 Forward-Port-Of: odoo/enterprise#80219
Original PR description
ASP-ONE.FR is now a brand of Tessi Informatique and we have to update the information passed in the xml. task-4605970 Forward-Port-Of: odoo/enterprise#80609 Forward-Port-Of: odoo/enterprise#80219
…versing Steps to reproduce: - In settings, set a default "Default invoice transaction code" and "Default refund transaction code" - Create an invoice with an invoice line and post it - Reverse it Issue: - The intrastat code will be the one from the invoice (and not the default refund one) Cause: When copying the lines we keep the one from the invoice Solution: Delete the default values when copying the data so the compute is triggered correctly which will set the correct value
Original PR description
…versing Steps to reproduce: - In settings, set a default "Default invoice transaction code" and "Default refund transaction code" - Create an invoice with an invoice line and post it - Reverse it Issue: - The intrastat code will be the one from the invoice (and not the default refund one) Cause: When copying the lines we keep the one from the invoice Solution: Delete the default values when copying the data so the compute is triggered correctly which will set the correct value opw-4417566 Forward-Port-Of: odoo/enterprise#79267
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#74864
This PR adapts access rights so that Worldline folder 'ctep' can be deleted by 'delete_iot_handlers' Forward-Port-Of: odoo/enterprise#80283
Original PR description
This PR adapts access rights so that Worldline folder 'ctep' can be deleted by 'delete_iot_handlers' Forward-Port-Of: odoo/enterprise#80283
This commit adds the missing neutralization necessary for the pos_tyro module introduced in 18.0 in [1] The purpose of the standard neutralization framework is to allow us to create database copies that will not interact with external systems in ways that could impact the production database (or if it is not possible to prevent the interactions, make sure that they are benign or won't result in actual changes), or impact the customers of the operator of the production database. This is mainly
Original PR description
This commit adds the missing neutralization necessary for the pos_tyro module introduced in 18.0 in [1] The purpose of the standard neutralization framework is to allow us to create database copies that will not interact with external systems in ways that could impact the production database (or if it is not possible to prevent the interactions, make sure that they are benign or won't result in actual changes), or impact the customers of the operator of the production database. This is mainly useful to allow safe support investigation on database duplicates. [1] https://github.com/odoo/enterprise/pull/79432 Forward-Port-Of: odoo/enterprise#80574