Monday, May 6, 2024
41 changes · saas-17.2
Enhancements to existing features
The Expense app’s automated tests have been moved to a newer testing framework. This helps maintain quality and reliability for future updates without changing day-to-day user workflows.
The CRM Live Chat module’s automated tests were moved to Odoo’s newer testing framework. This helps keep quality checks maintainable and aligned with current standards, with no expected change for end users.
Original PR description
Update legacy tests importing mail/test_utils.js to use HOOT instead of Qunit. Task-3818666
The accounting module's automated tests were updated from an older testing approach to the newer HOOT framework. This is an internal quality improvement that helps maintain reliable accounting screens and workflows without changing user-facing features.
Original PR description
Update legacy tests importing mail/test_utils.js to use HOOT instead of Qunit. Task-3818666
Resolved issues and error corrections
This fixes an error that appeared when users clicked "Buy Credits" in the Indian GST configuration. The button now uses the updated setting name, allowing Indian companies to access the credit purchase flow without interruption.
Original PR description
With [1], we have changed the field name ``l10n_in_gstr_gst_production_env`` to ``l10n_in_edi_production_env``in some files, but its reference was still present at [2]. This causes an exception when the users follow below steps: Step to reproduce: - Install ``l10n_in_reports_gstr`` module - Switch to ``IN Company`` - Accounting > Configuration > Indian Integration > Indian GST - Click on ``Buy Credits`` Traceback: ``AttributeError: 'res.config.settings' object has no attribute 'l10n_in_gstr_gst_production_env'`` This commit will resolve the above error by changing the name of the field to ``l10n_in_edi_production_env`` at [2]. [1] : https://github.com/odoo/enterprise/commit/328c01e601d7905df3ebfb4c6b014c7dbf09fce2 [2] : https://github.com/odoo/enterprise/blob/ba99dd4c236353c43376210a9aabcb0af5bd0299/l10n_in_reports_gstr/models/res_config_settings.py#L68C9-L69C88 sentry-5287121031
Code cleanup and technical improvements
The mail and test mail automated tests were moved to a newer testing framework. This helps maintain reliability of messaging-related features while keeping the change internal and not directly visible to end users.
Original PR description
part of task-3818666
Miscellaneous changes
In case there is an entry in ir_defaults that forces `store=False` Steps to reproduce: add such default and try to install analytic. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#164386
Original PR description
In case there is an entry in ir_defaults that forces `store=False` Steps to reproduce: add such default and try to install analytic. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#164386
Description of the issue/feature this PR addresses: The module l10n_generic_coa was removed from version 17.0 but the __init__.py file is still there. I am not sure if this file is necessary or not, maybe for migration, but it looks like a mistake leaving it. 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#164474
Original PR description
Description of the issue/feature this PR addresses: The module l10n_generic_coa was removed from version 17.0 but the __init__.py file is still there. I am not sure if this file is necessary or not, maybe for migration, but it looks like a mistake leaving it. 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#164474
Problem --- When an RFQ order-line is auto-generated from a sale order for a subcontracted service, the discount from `supplierinfo` does not get applied. Steps --- * install `sale_management` and `purchase` * create a service product, and in the purchase tab set a vendor for it * set a discount for this vendor (still in purchase tab; unhide the column) * create a sale order for this product and confirm it * click the `purchase` stat button * On the generated RFQ line, the discount i
Original PR description
Problem --- When an RFQ order-line is auto-generated from a sale order for a subcontracted service, the discount from `supplierinfo` does not get applied. Steps --- * install `sale_management` and `purchase` * create a service product, and in the purchase tab set a vendor for it * set a discount for this vendor (still in purchase tab; unhide the column) * create a sale order for this product and confirm it * click the `purchase` stat button * On the generated RFQ line, the discount is not applied opw-3829675 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#163095
Before this commit, free shipping rewards were ignored when customers used Express Checkout to pay for their orders. Now, Express Checkout will consider free shipping rewards when `loyalty` is installed. opw-3822059 Forward-Port-Of: odoo/odoo#164418 Forward-Port-Of: odoo/odoo#164176
Original PR description
Before this commit, free shipping rewards were ignored when customers used Express Checkout to pay for their orders. Now, Express Checkout will consider free shipping rewards when `loyalty` is installed. opw-3822059 Forward-Port-Of: odoo/odoo#164418 Forward-Port-Of: odoo/odoo#164176
In the refactoring of hr_holidays in odoo@cf33b80aca81, there was a typo in the loop, with the recordset self instead of the record allocation. Fixes #164259 Forward-Port-Of: odoo/odoo#164414
Original PR description
In the refactoring of hr_holidays in odoo@cf33b80aca81, there was a typo in the loop, with the recordset self instead of the record allocation. Fixes #164259 Forward-Port-Of: odoo/odoo#164414
Problem: The error occurs when the user creates a bill with a product quantity of 0 Steps to reproduce: - Install "Accounting", "Inventory", "Purchase" and "Sales" apps - Navigate to Sales > Products > Products and create a new product - Configure the product to be storable - Navigate to the "Purchase" tab and set the control policy to "On ordered quantities" - Navigate back to the "General Information" tab and create a new product category for this product - Set the "Inventory Val
Original PR description
Problem:
The error occurs when the user creates a bill with a product quantity of 0
Steps to reproduce:
- Install "Accounting", "Inventory", "Purchase" and "Sales" apps
- Navigate to Sales > Products > Products and create a new product
- Configure the product to be storable
- Navigate to the "Purchase" tab and set the control policy to "On ordered quantities"
- Navigate back to the "General Information" tab and create a new product category for this product
- Set the "Inventory Valuation" to "Automated"
- Set the "Price Difference Account"
- Navigate to Accounting > Vendors > Bills
- Create a new vendor bill and add the lately created product with a quantity of 0
- Confirm the bill
Cause:
The quantity of the product is 0 and is the denominator of a fraction
opw-3806378
---
I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Forward-Port-Of: odoo/odoo#164323
Forward-Port-Of: odoo/odoo#161825[FIX] web_editor, *: create attachment on hover effect modification *: website Steps to reproduce: - Add an image on the website. - Add an "On Hover" animation. - Save and edit. - Change the animation effect (i.e. from "Overlay" to "Outline"). - Save. -> Problem: although the image options have been modified, there is no new attachment created for this modified image and its src is still the raw data. The problem appears since [1] as the `_reapplyCurrentShape()` method replac
Original PR description
[FIX] web_editor, *: create attachment on hover effect modification *: website Steps to reproduce: - Add an image on the website. - Add an "On Hover" animation. - Save and edit. - Change the…
[FIX] web_editor, *: create attachment on hover effect modification *: website Steps to reproduce: - Add an image on the website. - Add an "On Hover" animation. - Save and edit. - Change the animation effect (i.e. from "Overlay" to "Outline"). - Save. -> Problem: although the image options have been modified, there is no new attachment created for this modified image and its src is still the raw data. The problem appears since [1] as the `_reapplyCurrentShape()` method replaces `_applyOptions()`. Due to this, the `o_modified_image_to_save` class is not added anymore on the image when changing hover effect options such as "effect", "color", "intensity", and "stroke width". To solve the problem, the class is added back on the image when changing such options. Thanks to it, the system creates a new attachment linked to the modified image at the editor save. [1]: https://github.com/odoo/odoo/commit/5d83672e0aac40d3484ee45f348dfca5de8f186a task-3820127 -------------------------------------------------------------------------------------------------------------------------------------------------------------- [FIX] website: reapply original source on hovered image in edit mode Steps to reproduce the bug: - Add an image on the website and add an animation of type "On Hover" on it. - Save and edit. - Click on the image to load its options. - Save. -> Problem, the image src is the raw data. When the user clicks on the image, the `ImageHandlerOption` snippet option is started. Because the image has an hover effect, the `_refreshPublicWidgets()` method is called. Due to it, the `ImageShapeHoverEffet` public widget is restarted. The problem is that because the src of the image has been modified in the `_applyOptions()` method of the `ImageHandlerOption`, the src of the image will not be replaced by the original one at the `destroy()` of the `ImageShapeHoverEffet` public widget. At the re start of this public widget, `this.originalImgSrc` will be set to a base 64 source. At the save of the editor, the public widget is destroyed and the image source is set to those raw data. Because the image has not been modified, it keeps it as a src after the save of the editor. To solve the problem, the `destroy()` method of the `ImageShapeHoverEffet` has been adapted to correctly set the source of the image when it has not been modified. To do so, the `originalSrcBeforeHover` attribute is used to keep track of the original image src. It is needed for example if a user applies a filter on the animated image and then clicks on 'undo'; at the filter application, `ImageShapeHoverEffet` is destroyed. Because the image has been modified, the src of the image will not be replaced by the original one. Without the `originalSrcBeforeHover` attribute, the original src would be lost and it would not be possible to reset the src to the original if the user clicks on 'undo' and then save. task-3820127 Forward-Port-Of: odoo/odoo#158515
Steps to reproduce: - Go to a website page (in "edit" mode) > Drop a "Form" block. - Drop a "Text" snippet above the form. - Change text layout into two columns. - Drag and drop one column inside the form (between two fields). - Click inside the text > You can't edit it. The text column was considered as “editable” (its editability was inherited from its parent element). And right after the drag & drop, the code in the form option will set the whole snippet as non-editable (`[content
Original PR description
Steps to reproduce: - Go to a website page (in "edit" mode) > Drop a "Form" block. - Drop a "Text" snippet above the form. - Change text layout into two columns. - Drag and drop one column inside the form (between two fields). - Click inside the text > You can't edit it. The text column was considered as “editable” (its editability was inherited from its parent element). And right after the drag & drop, the code in the form option will set the whole snippet as non-editable (`[contentEditable=false]`) and only allow some specific elements to be edited (buttons, description...). The goal of this commit is to fix this issue by simply including the columns "that are not fields" in the list of form editable elements. task-3702824 Forward-Port-Of: odoo/odoo#164076 Forward-Port-Of: odoo/odoo#153894
In payment status template, do not translate `alert_type` otherwise the wrong class and icon will be shown For ex. in french, in case of a successful payment we were showing no background color and a warning icon instead of a check mark. [OPW-3900040](https://www.odoo.com/web#id=3900040&model=project.task&view_type=form&menu_id=) --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#164079 Forward-Port-Of: odoo/odoo#163958
Original PR description
In payment status template, do not translate `alert_type` otherwise the wrong class and icon will be shown For ex. in french, in case of a successful payment we were showing no background color and a warning icon instead of a check mark. [OPW-3900040](https://www.odoo.com/web#id=3900040&model=project.task&view_type=form&menu_id=) --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#164079 Forward-Port-Of: odoo/odoo#163958
Before this fix, when updating recurrence events in "This and future events" mode, some events vanished. This happened because we were removing all the attendees from the occurrences, and then no event was being shown in the calendar. Additionally, when creating recurrences from Google with the "UNTIL" option, one extra event was being added at the end because the rrule on their side finished on the next day after the end at 23:59:59. After this fix, we no longer delete all attendees when rec
Original PR description
Before this fix, when updating recurrence events in "This and future events" mode, some events vanished. This happened because we were removing all the attendees from the occurrences, and then no event was being shown in the calendar. Additionally, when creating recurrences from Google with the "UNTIL" option, one extra event was being added at the end because the rrule on their side finished on the next day after the end at 23:59:59. After this fix, we no longer delete all attendees when receiving updates from Google. Instead, we update the current attendees for not recreating all of them every time. Thus, when updating recurrent events, they no longer vanished anymore. Creating recurrent events in Google with the "UNTIL" option also no longer adds an extra day at the end because we are subtracting the extra day. Task-id: 3731542 Forward-Port-Of: odoo/odoo#156077
The steps to reproduce: - Go to a warehouse. Under the technical information tab, change the field sam_loc_id from "WH/Post-Production" to "WH/Stock". - Create a sales order with 2 different products and confirm it. - 2 pickings will be created with different group_id MO/XXXX instead of a single picking. After this commit, we only check the sam_loc_id if we are in 3 steps manufacturing. OPW-3871886 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit
Original PR description
The steps to reproduce: - Go to a warehouse. Under the technical information tab, change the field sam_loc_id from "WH/Post-Production" to "WH/Stock". - Create a sales order with 2 different products and confirm it. - 2 pickings will be created with different group_id MO/XXXX instead of a single picking. After this commit, we only check the sam_loc_id if we are in 3 steps manufacturing. OPW-3871886 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#164221 Forward-Port-Of: odoo/odoo#162947
Ever since the refactoring of the steps snippet with SVG connectors (see [commit 1]), it only works with icons. Since its behavior is quite rigid (it forces a single height/width on the icons), we simply apply the same styles to images. [commit 1]: https://github.com/odoo/odoo/commit/aba31e9f2d8a44ce1586403f2a621a6caeed57b4 opw-3863703 Forward-Port-Of: odoo/odoo#163472
Original PR description
Ever since the refactoring of the steps snippet with SVG connectors (see [commit 1]), it only works with icons. Since its behavior is quite rigid (it forces a single height/width on the icons), we simply apply the same styles to images. [commit 1]: https://github.com/odoo/odoo/commit/aba31e9f2d8a44ce1586403f2a621a6caeed57b4 opw-3863703 Forward-Port-Of: odoo/odoo#163472
Currently when we have an Analytic Filter applied on an accounting report, we lose that filter when we click on any amount to audit the journal items. This fix makes sure that when auditing, we only view the journal items filtered by the Analytic Filter. In order to do that, we extend the search function in the analytic mixin to allow searching on analytic account ids. [task-3718751](https://www.odoo.com/web#id=3718751&cids=1&menu_id=4720&action=333&active_id=967&model=project.task&view
Original PR description
Currently when we have an Analytic Filter applied on an accounting report, we lose that filter when we click on any amount to audit the journal items. This fix makes sure that when auditing, we only view the journal items filtered by the Analytic Filter. In order to do that, we extend the search function in the analytic mixin to allow searching on analytic account ids. [task-3718751](https://www.odoo.com/web#id=3718751&cids=1&menu_id=4720&action=333&active_id=967&model=project.task&view_type=form) Related to https://github.com/odoo/enterprise/pull/55972 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#163040 Forward-Port-Of: odoo/odoo#152897
opw-3869944 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#164170
Original PR description
opw-3869944 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#164170
## Issue: - In Germany companies that don't have a VAT ID, make their VAT declarations based on their Tax Identification Number (TIN). However, when the Tax Identification Number is entered as a VAT ID, it is not accepted by Odoo. ## Steps To Reproduce: - Go to a fiscal position - Add a new fiscal position with germany in country and '133/8150/8159' in the Foreign VAT ID field. - Odoo expects another format. ## Solution: - The process begins with the addition of `vat`, which triggers
Original PR description
## Issue: - In Germany companies that don't have a VAT ID, make their VAT declarations based on their Tax Identification Number (TIN). However, when the Tax Identification Number is entered as a VAT…
## Issue: - In Germany companies that don't have a VAT ID, make their VAT declarations based on their Tax Identification Number (TIN). However, when the Tax Identification Number is entered as a VAT ID, it is not accepted by Odoo. ## Steps To Reproduce: - Go to a fiscal position - Add a new fiscal position with germany in country and '133/8150/8159' in the Foreign VAT ID field. - Odoo expects another format. ## Solution: - The process begins with the addition of `vat`, which triggers the `check_vat` method. - This method, in turn, calls `_run_vat_test`, wherein `check_func` is set to `self.simple_vat_check`, indicating the default validation function. - The `simple_vat_check` performs the VAT validation. It proceeds with standard validation if no specific `check_func` is defined for the given `check_func_name`. - For Germany, I implemented `check_func_de`, to specifically check and validate German VAT numbers when a TIN is provided. opw-3792306 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#163571 Forward-Port-Of: odoo/odoo#159690
The test `website_media_dialog_undraw` (introduced in [this commit]) wasn't launched because the python method was not prefixed by `test_`. [this commit]: https://github.com/odoo/odoo/commit/d6ca59ed9bf6877ee6b1b311223472adfa4db549 Forward-Port-Of: odoo/odoo#163616 Forward-Port-Of: odoo/odoo#163555
Original PR description
The test `website_media_dialog_undraw` (introduced in [this commit]) wasn't launched because the python method was not prefixed by `test_`. [this commit]: https://github.com/odoo/odoo/commit/d6ca59ed9bf6877ee6b1b311223472adfa4db549 Forward-Port-Of: odoo/odoo#163616 Forward-Port-Of: odoo/odoo#163555
Steps to reproduce the bug: - Create a storable product C1: - standard_price: $10 - Update the quantity to 2 units - Create a storable product P1 with BoM: - Component: 1 unit of C1 - Create a MO to produce 1 unit of P1: - Confirm it - Update the price of C1 to $20 - Go back to the MO and set the quantity consumed of C1 to 2 - Mark the MO as done - Confirm the difference in consumption Problem: Another move is created with 1 unit of C1 consumed but is not merged
Original PR description
Steps to reproduce the bug: - Create a storable product C1: - standard_price: $10 - Update the quantity to 2 units - Create a storable product P1 with BoM: - Component: 1 unit of C1 - Create a MO to produce 1 unit of P1: - Confirm it - Update the price of C1 to $20 - Go back to the MO and set the quantity consumed of C1 to 2 - Mark the MO as done - Confirm the difference in consumption Problem: Another move is created with 1 unit of C1 consumed but is not merged with the first move because the two moves were created with different prices, making them incompatible for merging. Solution: There's no need to create the moves with `price_unit`. OPW-3791816 Forward-Port-Of: odoo/odoo#163175
patch fixed Arabic class from newer version of num2words package. ## Description of the issue/feature this PR addresses the num2words library does not correctly convert some numbers to words in Arabic. It erroneously appends the Arabic equivalent of "one" to the translation of 1000 (one thousand), when it must be implicit. Also, it was noticed that this behaviour happens in all multiple of 1000s. It appends 'one' to million and billion, etc. ## Current behaviour before PR ``` >>> from
Original PR description
patch fixed Arabic class from newer version of num2words package. ## Description of the issue/feature this PR addresses the num2words library does not correctly convert some numbers to words in Arabic. It erroneously appends the Arabic equivalent of "one" to the translation of 1000 (one thousand), when it must be implicit. Also, it was noticed that this behaviour happens in all multiple of 1000s. It appends 'one' to million and billion, etc. ## Current behaviour before PR ``` >>> from num2words import num2words >>> num2words(1234.56, lang="ar") 'واحد ألف و مئتان و أربعة و ثلاثون , ست و خمسون' ``` ## Desired behaviour after PR is merged: ``` >>> from num2words import num2words >>> num2words(1234.56, lang="ar") 'ألف و مئتان و أربعة و ثلاثون , ست و خمسون' ``` Forward-Port-Of: odoo/odoo#163913 Forward-Port-Of: odoo/odoo#156286
Before this commit, when inserting an event in Google side, we were throwing away the insertion values returned by Google and keeping only the event id. This was not a good practice because we could already write important values such as meeting URL and then spare future write calls. Additionaly, when writing values from google, we were sending through the context the 'write_dates' key, that would only be used once but would be kept in the context (when it is not needed). After this commit, a
Original PR description
Before this commit, when inserting an event in Google side, we were throwing away the insertion values returned by Google and keeping only the event id. This was not a good practice because we could…
Before this commit, when inserting an event in Google side, we were throwing away the insertion values returned by Google and keeping only the event id. This was not a good practice because we could already write important values such as meeting URL and then spare future write calls. Additionaly, when writing values from google, we were sending through the context the 'write_dates' key, that would only be used once but would be kept in the context (when it is not needed). After this commit, a callback function was added to write the event information right after the 'insert' function is executed, alongside of a function to get the desired post sync values describing which fields will be written in the event. Thus, we can write in the event right away after its creation. Since we are in a stable branch, this strategy was the only option to avoid changing the 'insert' function return and, by consequence possibly breaking custom code. In addition, now we delete the recently used 'write_dates' context key from the context in order to prevent future misuse of it. task-3893827 Forward-Port-Of: odoo/odoo#163364
It is currently not possible to use a scrapped tracked-by-SN component in a new MO To reproduce the issue: 1. In Settings, enable "Multi Locations" 2. Create two products P_finished, P_comp: - Storable - P_comp tracked by SN 3. Update the quantity of P_comp: - WH/Stock: 1 x SN01 4. Process a manufacturing order: - Product: P_finished - Components: - 1 x P_comp 5. Process a repair order: - Product: P_finished - Remove: - Product: P_co
Original PR description
It is currently not possible to use a scrapped tracked-by-SN component in a new MO To reproduce the issue: 1. In Settings, enable "Multi Locations" 2. Create two products P_finished, P_comp: -…
It is currently not possible to use a scrapped tracked-by-SN
component in a new MO
To reproduce the issue:
1. In Settings, enable "Multi Locations"
2. Create two products P_finished, P_comp:
- Storable
- P_comp tracked by SN
3. Update the quantity of P_comp:
- WH/Stock: 1 x SN01
4. Process a manufacturing order:
- Product: P_finished
- Components:
- 1 x P_comp
5. Process a repair order:
- Product: P_finished
- Remove:
- Product: P_comp
- Lot: SN01
- Destination Location: Virtual Location/scrap
6. Unscrap SN01 (via an internal transfer from scrap to stock)
7. Repeat 4
Error: a UserError is displayed because the SN of the component has
already been consumed. It should be possible to use it
When checking the uniqueness, we are working on the SMLs (see the
lines removed by this commit).
`duplicates` contains the SML from step 4. `duplicates_returned` is
zero since we did not return the component back to the stock.
`removed` is zero too, because we look at the scrapped SML from an
internal location. However, step 5 generates an SML that starts from
the production location. As a result, nothing compensate the value
of `duplicates`, hence the raised error.
Removing the condition of the source location of `removed` would
lead to another bug, so we can't do that. So, this commit suggests a
new implementation based on the following rationale:
- The uniqueness checking simply ensures that one and only one
existing finished product consumed a specific SN
- What happened outside this context does not matter here
That way, we should only look at the SML from/to production
locations, for tracked-by-sn products used as components only. All
other SML (scrap, unscrap, SML for SN production, and so on) should
not be considered here.
OPW-3834835
Forward-Port-Of: odoo/odoo#164074
Forward-Port-Of: odoo/odoo#163394opw-3863423 Forward-Port-Of: odoo/odoo#164161
Original PR description
opw-3863423 Forward-Port-Of: odoo/odoo#164161
If we rename the tax to '[old] taxname' everytime we detect a modification then we will run into a unique name violation. Taking account of how many other taxes with the same name there already are will bypass this constraint. The problem appears during upgrades --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#164025
Original PR description
If we rename the tax to '[old] taxname' everytime we detect a modification then we will run into a unique name violation. Taking account of how many other taxes with the same name there already are will bypass this constraint. The problem appears during upgrades --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#164025
**Steps to reproduce the issue:** - Install the `website_event_sale` module (for test purpose) - Create an event with a paid ticket - Go to the website and register to the event - Go to backend and confirm the sale order if pending payment - Go to the event and open the new registration **Issue:** No mail send to the attendee. **Cause:** Since the following commit, the registration state is overwritten in the `event_sale` module where we added a compute method to the state fie
Original PR description
**Steps to reproduce the issue:** - Install the `website_event_sale` module (for test purpose) - Create an event with a paid ticket - Go to the website and register to the event - Go to backend and…
**Steps to reproduce the issue:** - Install the `website_event_sale` module (for test purpose) - Create an event with a paid ticket - Go to the website and register to the event - Go to backend and confirm the sale order if pending payment - Go to the event and open the new registration **Issue:** No mail send to the attendee. **Cause:** Since the following commit, the registration state is overwritten in the `event_sale` module where we added a compute method to the state field: `_compute_registration_status`, compute method already used by the `sale_status` field (compute method was renamed) and depending on the `sale_order_id.state` field. https://github.com/odoo/odoo/commit/4a20cb320b8e251c3670c4fb25ee1b6ba9d2d19b When confirming the sale order, the registration state is computed but the mail scheduler is not run (scheduler executed only in `create` and `write` method). **Solution:** Run the mail scheduler for open registrations in the `action_confirm` method of the `sale.order` model. opw-3820441 Forward-Port-Of: odoo/odoo#159232
Steps: - Go to Accounting/Customers/Amounts to Settle or Accounting/Vendors/Amounts to Settle - The credit notes are displayed instead of the invoices/bills This is due to a wrong domain in the window action. opw-3858520 Forward-Port-Of: odoo/odoo#163719
Original PR description
Steps: - Go to Accounting/Customers/Amounts to Settle or Accounting/Vendors/Amounts to Settle - The credit notes are displayed instead of the invoices/bills This is due to a wrong domain in the window action. opw-3858520 Forward-Port-Of: odoo/odoo#163719
Record without company_id is visible for all commpanies. In the context of counting applicants, these records are now included in the total applicant count. Forward-Port-Of: odoo/odoo#163873
Original PR description
Record without company_id is visible for all commpanies. In the context of counting applicants, these records are now included in the total applicant count. Forward-Port-Of: odoo/odoo#163873
Steps: - Install and configure Razorpay provider. - Install sales app. - Enable wallet india PM. - Create quote and try to pay it via wallet india. Issue: - User error when trying to pay via wallet india. Cause: - `orders` API does not take `wallet_india` as method key of payload also I tried other like `wallet` and `wallets` but they are not also working even though Razorpay response with method `wallet` when we pay via wallets so `wallet` is right value but `orders` API does
Original PR description
Steps: - Install and configure Razorpay provider. - Install sales app. - Enable wallet india PM. - Create quote and try to pay it via wallet india. Issue: - User error when trying to pay via wallet…
Steps: - Install and configure Razorpay provider. - Install sales app. - Enable wallet india PM. - Create quote and try to pay it via wallet india. Issue: - User error when trying to pay via wallet india. Cause: - `orders` API does not take `wallet_india` as method key of payload also I tried other like `wallet` and `wallets` but they are not also working even though Razorpay response with method `wallet` when we pay via wallets so `wallet` is right value but `orders` API does not count it as one. Fix: - Do not pass any method in payload when user select `wallet` and open Razorpay form with all PM so user can pay via whichever method they want and if selected method exist in the odoo then set that PM to transaction. For master: - Add `Pay later` payment method so we can store all transaction with proper payment method in odoo. - Change code of wallet PM from `wallets_india` to `wallet` so when razorpay fix code issue it'll work automatically without any issues and we don't need to pass mapping to get proper PM via `_get_from_code`. opw-3867594 Forward-Port-Of: odoo/odoo#163290
Some nightly builds are failing with a message hinting that the expected combination was not correctly archived. runbot issue 61115 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#164054 Forward-Port-Of: odoo/odoo#164003
Original PR description
Some nightly builds are failing with a message hinting that the expected combination was not correctly archived. runbot issue 61115 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#164054 Forward-Port-Of: odoo/odoo#164003
The reconciliation of journal items imported from Winbooks is done when all those items are posted. However if one of the imported items to reconcile have zero as balance, it will trigger an error "You are trying to reconcile some entries that are already reconciled." because Odoo consider zero balance lines as reconciled and block the user of posting the entries. This fix removes the reconciliation data when the Winbooks file is imported if the item has a zero balance since this item does no
Original PR description
The reconciliation of journal items imported from Winbooks is done when all those items are posted. However if one of the imported items to reconcile have zero as balance, it will trigger an error "You are trying to reconcile some entries that are already reconciled." because Odoo consider zero balance lines as reconciled and block the user of posting the entries. This fix removes the reconciliation data when the Winbooks file is imported if the item has a zero balance since this item does not need to be reconciled in the future. opw-3830355 Forward-Port-Of: odoo/enterprise#61743
Currently when we have an Analytic Filter applied on an accounting report, we lose that filter when we click on any amount to audit the journal items. This fix makes sure that when auditing, we only view the journal items filtered by the Analytic Filter. [task-3718751](https://www.odoo.com/web#id=3718751&cids=1&menu_id=4720&action=333&active_id=967&model=project.task&view_type=form) Related to https://github.com/odoo/odoo/pull/152897 Forward-Port-Of: odoo/enterprise#61335 Forward-Port-
Original PR description
Currently when we have an Analytic Filter applied on an accounting report, we lose that filter when we click on any amount to audit the journal items. This fix makes sure that when auditing, we only view the journal items filtered by the Analytic Filter. [task-3718751](https://www.odoo.com/web#id=3718751&cids=1&menu_id=4720&action=333&active_id=967&model=project.task&view_type=form) Related to https://github.com/odoo/odoo/pull/152897 Forward-Port-Of: odoo/enterprise#61335 Forward-Port-Of: odoo/enterprise#55972
Functionality was removed during the refactor of the voip module between 16 and 17 where you could enter any number through the phone keypad on voip or receive a call and have access to the information on the customer with the associated phone number. This was a functionality that the customer on the ticket was using prior to upgrade. I have added back this functionality through a non blocking call to a new function in res.partner that will search up the contact based on the phone nu
Original PR description
Functionality was removed during the refactor of the voip module between 16 and 17 where you could enter any number through the phone keypad on voip or receive a call and have access to the information on the customer with the associated phone number. This was a functionality that the customer on the ticket was using prior to upgrade. I have added back this functionality through a non blocking call to a new function in res.partner that will search up the contact based on the phone number entered in the softphone. When the data comes back from the back end the UI will be updated with the partner information if it found it. This also has a side effect of fixing the customer wizard button as well. opw-3770625 Forward-Port-Of: odoo/enterprise#60383
…igher rules Have rules such as: 1. no domain, notification order: 1 2. no domain, notification order: 2 3. a domain that doesn't match the record, notification order: 2 Manually validate the rule 1, that is, do not hit the button of the action, rather, enter the popup of the approvals, and validate the rule. The spec of the flow is that, when all rules from a level (or notification order) have been validated, rules that have a higher order will trigger an activity and a notification
Original PR description
…igher rules Have rules such as: 1. no domain, notification order: 1 2. no domain, notification order: 2 3. a domain that doesn't match the record, notification order: 2 Manually validate the rule 1, that is, do not hit the button of the action, rather, enter the popup of the approvals, and validate the rule. The spec of the flow is that, when all rules from a level (or notification order) have been validated, rules that have a higher order will trigger an activity and a notification to their responsible. After all, those rules are "next in line". Before this commit, both rule 2 and 3 sent a notification and created an activity for the current record. This was wrong as rule 3 should not be considered, because its domain doesn't match the record. After this commit, only rule 2 sends a notification and creates an activity. opw-3815732 Forward-Port-Of: odoo/enterprise#61746
This commit removes the write override of calendar.event records, since this override was doing unnecessary requests on Google side when synchronizing again events that were just synchronized. After this commit, the function get_post_sync_values() will reuse the values returned by the insertion in Google and write in the event right away, saving requests to Google. The objective of the previous write override was to write the google meet URL in the event, and now this is still being done
Original PR description
This commit removes the write override of calendar.event records, since this override was doing unnecessary requests on Google side when synchronizing again events that were just synchronized. After this commit, the function get_post_sync_values() will reuse the values returned by the insertion in Google and write in the event right away, saving requests to Google. The objective of the previous write override was to write the google meet URL in the event, and now this is still being done correctly by means of the new strategy. related-to: https://github.com/odoo/odoo/pull/163364 task-389382 Forward-Port-Of: odoo/enterprise#61465
The query defined `_l10n_pe_get_txt_11_data` does not define an order. It can result in an undeterministic order. We define it based on the date then id. Linked to runbot error 63997 Forward-Port-Of: odoo/enterprise#61867
Original PR description
The query defined `_l10n_pe_get_txt_11_data` does not define an order. It can result in an undeterministic order. We define it based on the date then id. Linked to runbot error 63997 Forward-Port-Of: odoo/enterprise#61867
Configure 'Cash Discount Tax Reduction' on 'On early payment' Have a payment term configured with 2% discount for early payment Create an invoice with the said payment terms and the following lines: 1) qty 1, price unit 468, discount 28, tax 19% 2) qty 1, price unit 480, discount 28, tax 19% 3) qty 1, price unit 85, discount 28, tax 19% 4) qty 1, price unit 6, discount 0, tax 19% 5) qty 2, price unit 6, discount 0, tax 19% Register the payment with the early payment discount Check the
Original PR description
Configure 'Cash Discount Tax Reduction' on 'On early payment' Have a payment term configured with 2% discount for early payment Create an invoice with the said payment terms and the following lines:…
Configure 'Cash Discount Tax Reduction' on 'On early payment' Have a payment term configured with 2% discount for early payment Create an invoice with the said payment terms and the following lines: 1) qty 1, price unit 468, discount 28, tax 19% 2) qty 1, price unit 480, discount 28, tax 19% 3) qty 1, price unit 85, discount 28, tax 19% 4) qty 1, price unit 6, discount 0, tax 19% 5) qty 2, price unit 6, discount 0, tax 19% Register the payment with the early payment discount Check the payment Early payment lines amount are 15.23 + 2.90 (tax discount) = 18.13 Go to General Ledger Export "DATEV (ZIP)" and check accounting_entries.csv Early payment line amount will be 18.12 This occurs because when exporting the system recompute the tax amount due for each line with tax, so we give just a line with the gross amount. However, when the payment is created, the system check for rounding errors and adjust the computed tax amount. This is not done when exporting data and we have a 0.01 difference with the payment entry opw-3801374 Forward-Port-Of: odoo/enterprise#61968 Forward-Port-Of: odoo/enterprise#60927
This will fix the computation of the double holiday pay recovery to match legal requirements. Task: 3893867 Forward-Port-Of: odoo/enterprise#61540
Original PR description
This will fix the computation of the double holiday pay recovery to match legal requirements. Task: 3893867 Forward-Port-Of: odoo/enterprise#61540
Steps to reproduce: In field service, have a project on which you have to sell 3 of item A. Item a is tracked by serial number and the delivery route is in 2 steps. From stock to output and from output to customer. On the sale order make sure you have 3 separate lines of 1 quantity of product A separated or not by sections. Confirm this one. This will create two pickings. One picking linked to a global stock move for 3 units from stock to output. A second picking linked to 3 stock moves
Original PR description
Steps to reproduce: In field service, have a project on which you have to sell 3 of item A. Item a is tracked by serial number and the delivery route is in 2 steps. From stock to output and from output to customer. On the sale order make sure you have 3 separate lines of 1 quantity of product A separated or not by sections. Confirm this one. This will create two pickings. One picking linked to a global stock move for 3 units from stock to output. A second picking linked to 3 stock moves each linked to a sale line id. Prioritise the first one by starring it. Now go back to the project and mark is as done. OPW-3792527 Forward-Port-Of: odoo/enterprise#60083 Forward-Port-Of: odoo/enterprise#59163