Wednesday, April 30, 2025
36 changes · saas-18.2
Resolved issues and error corrections
Fixes an error that occurred when previewing the Calendar Attendee Information email template. Users can now preview this template normally, avoiding a disruptive traceback during email template setup or review.
Original PR description
When a user previews the mail template for Calendar Attendee Information,
A traceback will appear.
Steps to reproduce the error:
- Install ``calendar``
- Now go to Email Templates >
Open email template (Applies to: ``Calendar Attendee Information``)
- Click Preview
Traceback:
```
File "/home/odoo/src/odoo/saas-18.2/addons/mail/models/models.py", line 300, in _message_get_default_recipients
all_emails += defaults['partners'].mapped('email_normalized')
KeyError: 'partners'
```
https://github.com/odoo/odoo/blob/09099ab477bd871c67205388d96172280cd714a5/addons/mail/models/models.py#L300 Here, ``partners`` key is accessed but at [1] key is ``partner_ids``,
So, it will lead to the above traceback.
1-https://github.com/odoo/odoo/blob/09099ab477bd871c67205388d96172280cd714a5/addons/calendar/models/calendar_attendee.py#L116
sentry-6505820998
---
I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-prCreating a new attendee from the eLearning reporting views no longer triggers an error when the new record has not been saved yet. This improves reliability for users managing course attendance and prevents an avoidable interruption in the workflow.
Original PR description
Currently, this exception is raised when a user tries to create a new attendee. Steps to Reproduce: 1. Install `website_slides` module. 2. Go to eLearning ->Reporting -> Attendees 3. Switch to the Pivot view and click on a count integer. 4. Open the List View and click the "New" button. 5. An error Occurs Error: ```SyntaxError syntax error at or near ")" LINE 18: WHERE SCP.id IN () ``` This issue[1] occurs because the system runs a query expecting an existing record with an ID, but since the record isn't saved yet, `self.ids` is empty, causing the query to fail. [1]- https://github.com/odoo/odoo/blob/fbee52705e0332f7134eb5505eac26677e38c168/addons/website_slides/models/slide_channel.py#L91 This fix ensures that if self.ids is empty, the system stops the process early and sets a proper value, preventing the query from failing. sentry-6465821899 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Fixed an issue where automated actions creating activities could fail when a record had more than one user in a multi-user field. The system now creates the activity for the first user found, avoiding an error that blocked the action.
Original PR description
Have a server action that creates an activity based on a record's x2m user field. Run that action on a record that has more than one user in this field. Before this commit: display traceback "ValueError: Expected singleton" After this commit: the activity is created for the first user found in the x2m field value. Task id: opw-4745032
This fixes an internal test so it skips folders and items that are not meant to be imported as Python code. It helps developers run checks locally without false failures, improving confidence in routine maintenance.
Original PR description
The test was failing locally due to attempts to import non-Python modules like `.tx`, `.git`, and `odoo.setup`. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Miscellaneous changes
`hr_recruitment_integration_monster` bases one of its view overrides on `<setting id="job_board">`. This element is added by the `hr_recruitment_extract` module, but there is no dependency between the two. `hr_recruitment_integration_monster` only depends on `hr_recruitment_integration_base` which only depends on `hr_recruitment`. `hr_recruitment_extract` depends on `hr_recruitment` but also `iap`, `iap_mail`, and `mail_enterprise`. If any of these last 3 modules is uninstalled, `hr_recruitme
Original PR description
`hr_recruitment_integration_monster` bases one of its view overrides on `<setting id="job_board">`. This element is added by the `hr_recruitment_extract` module, but there is no dependency between the two. `hr_recruitment_integration_monster` only depends on `hr_recruitment_integration_base` which only depends on `hr_recruitment`. `hr_recruitment_extract` depends on `hr_recruitment` but also `iap`, `iap_mail`, and `mail_enterprise`. If any of these last 3 modules is uninstalled, `hr_recruitment_extract` will be uninstalled and the `res_config_settings_view_form` view will explode the first time it gets resolved / validated. Forward-Port-Of: odoo/enterprise#84491
- Change the termination report note date to mention the departure date instead of the notice period end Task: 4718395 Forward-Port-Of: odoo/enterprise#84485 Forward-Port-Of: odoo/enterprise#83824
Original PR description
- Change the termination report note date to mention the departure date instead of the notice period end Task: 4718395 Forward-Port-Of: odoo/enterprise#84485 Forward-Port-Of: odoo/enterprise#83824
Some languages aren't available on Transifex for saas versions if we do not have a dedicated maintainer for the language or not enough of the language is translated, but they are available for major versoins. As of the time of this commit this included: - Azerbaijani (az), - Bulgarian (bg), - Croatian (hr), - Estonian (et), - Greek (el), - Hebrew (he), - Hungarian (hu), - Latvian (lv), - Mongolian (mn), - Persian (fa), - Portuguese (pt), - Romanian (ro), - Ukranian (uk) Therefo
Original PR description
Some languages aren't available on Transifex for saas versions if we do not have a dedicated maintainer for the language or not enough of the language is translated, but they are available for major versoins. As of the time of this commit this included: - Azerbaijani (az), - Bulgarian (bg), - Croatian (hr), - Estonian (et), - Greek (el), - Hebrew (he), - Hungarian (hu), - Latvian (lv), - Mongolian (mn), - Persian (fa), - Portuguese (pt), - Romanian (ro), - Ukranian (uk) Therefore this commit pulls the current translations from the 18.0 transifex project for these languages. Note that pot file msgmerges were not applied since the end result would have been the same, missing terms from pot files won't have a translation in the po file + extra terms in the po file not in the pot won't be used.
- Since this PR: https://github.com/odoo/enterprise/pull/82531, the "Customer Statement" smart button (inside the customer form) was no longer visible when orders were paid via customer accounts in PoS and the session was closed. This was caused by session-level account.move records lacking partner_id, which caused _compute_has_moves to return false. - This fix overrides `_compute_has_moves` inside the module `pos_settle_due` to set `has_moves` to True when a partner's total_due is non-zero, en
Original PR description
- Since this PR: https://github.com/odoo/enterprise/pull/82531, the "Customer Statement" smart button (inside the customer form) was no longer visible when orders were paid via customer accounts in PoS and the session was closed. This was caused by session-level account.move records lacking partner_id, which caused _compute_has_moves to return false. - This fix overrides `_compute_has_moves` inside the module `pos_settle_due` to set `has_moves` to True when a partner's total_due is non-zero, ensuring the statement button remains visible when relevant. task-id: 4749148 Forward-Port-Of: odoo/enterprise#84003
When `<attribute name="string" add="something more"` is used to add onto a string in another view, the `"something more"` string isn't translatable. Therefore since there isn't anything else adding onto this string, let's completely replace it with the original string + the "something more" string. Forward-Port-Of: odoo/enterprise#84388
Original PR description
When `<attribute name="string" add="something more"` is used to add onto a string in another view, the `"something more"` string isn't translatable. Therefore since there isn't anything else adding onto this string, let's completely replace it with the original string + the "something more" string. Forward-Port-Of: odoo/enterprise#84388
Forward-Port-Of: odoo/enterprise#84269
Original PR description
Forward-Port-Of: odoo/enterprise#84269
- If the payslip sturct has `use_worked_day_lines = False` the printed payslip shoud not have worked_days_table Task: 4720429 Forward-Port-Of: odoo/enterprise#84248
Original PR description
- If the payslip sturct has `use_worked_day_lines = False` the printed payslip shoud not have worked_days_table Task: 4720429 Forward-Port-Of: odoo/enterprise#84248
Forward-Port-Of: odoo/enterprise#83747
Original PR description
Forward-Port-Of: odoo/enterprise#83747
### Steps to reproduce: - Accounting > Reporting > Partner Ledger - Select multiple partners - Select "Customer Statements" as report - Click "Send" - Go to the one of the partner in question and open the generated PDF - The address is not the one of the company, the footer doesn't show the right company, etc ### Cause: When sending to multiple partners, the action is dispatched with cron so a new `env` is created. This `env` has all companies active and the first one as main company.
Original PR description
### Steps to reproduce: - Accounting > Reporting > Partner Ledger - Select multiple partners - Select "Customer Statements" as report - Click "Send" - Go to the one of the partner in question and open the generated PDF - The address is not the one of the company, the footer doesn't show the right company, etc ### Cause: When sending to multiple partners, the action is dispatched with cron so a new `env` is created. This `env` has all companies active and the first one as main company. So in the end the wrong company is used to generate the report. ### Solution: In the cron when calling `_process_send_and_print` we give `report.with_company(company)` to make sure that the value the report will us are the one from the correct company. Also revert the small [fix](https://github.com/odoo/enterprise/pull/82320/files) that was made before, which is no longer needed. opw-4635283 Forward-Port-Of: odoo/enterprise#84408
Forward-Port-Of: odoo/enterprise#80561
Original PR description
Forward-Port-Of: odoo/enterprise#80561
Following 002df5f10d2378bab139ea5d59af7be3d6b40358 which made an error. When creating a new model, the feature that make a record specific to a company (ie: "use_company" -- just adds a field "company_id" on a model) should not be available when in single company mode, but should be available when in multicompany mode opw-4752832 Forward-Port-Of: odoo/enterprise#84225
Original PR description
Following 002df5f10d2378bab139ea5d59af7be3d6b40358 which made an error. When creating a new model, the feature that make a record specific to a company (ie: "use_company" -- just adds a field "company_id" on a model) should not be available when in single company mode, but should be available when in multicompany mode opw-4752832 Forward-Port-Of: odoo/enterprise#84225
Open Trial Balance report in debug mode Access report options In Column tab, check 'Blank if Zero' for all columns Go back to report Issue: If Initial/End Balance columns are blank, also the total line will be blank. This occurs since f3c230817087d452f810b8473f813add0ead30d0 were the formatting of values has been delayed to improve performances but the exception on 'blank_if_zero' was lost opw-4624006 Forward-Port-Of: odoo/enterprise#84070 Forward-Port-Of: odoo/enterprise#83493
Original PR description
Open Trial Balance report in debug mode Access report options In Column tab, check 'Blank if Zero' for all columns Go back to report Issue: If Initial/End Balance columns are blank, also the total line will be blank. This occurs since f3c230817087d452f810b8473f813add0ead30d0 were the formatting of values has been delayed to improve performances but the exception on 'blank_if_zero' was lost opw-4624006 Forward-Port-Of: odoo/enterprise#84070 Forward-Port-Of: odoo/enterprise#83493
…terms Steps to reproduce: - With an ES company setup - Create 1 invoice to an EU partner with the payment term "30% Now, Balance 60 Days" - Make sure Mod349 Invoice Type is set - Go to Accounting / Reporting / Statement Reports / Tax Report - Select Tax Report (Mod 349) (ES) Issue: Amount shown on lines "Total amount of intra-community operations" and "E. Intra-community sales" is doubled. This occurs because each installment of the payment terms will be a payment term line, an
Original PR description
…terms Steps to reproduce: - With an ES company setup - Create 1 invoice to an EU partner with the payment term "30% Now, Balance 60 Days" - Make sure Mod349 Invoice Type is set - Go to Accounting / Reporting / Statement Reports / Tax Report - Select Tax Report (Mod 349) (ES) Issue: Amount shown on lines "Total amount of intra-community operations" and "E. Intra-community sales" is doubled. This occurs because each installment of the payment terms will be a payment term line, and the query retrieving values to compose MOD349 will take the whole move amount for each payment term line. opw-4637439 Forward-Port-Of: odoo/enterprise#84085 Forward-Port-Of: odoo/enterprise#82435
task-4751862 Forward-Port-Of: odoo/enterprise#84094
Original PR description
task-4751862 Forward-Port-Of: odoo/enterprise#84094
Forward-Port-Of: odoo/odoo#208093 Forward-Port-Of: odoo/odoo#208076
Original PR description
Forward-Port-Of: odoo/odoo#208093 Forward-Port-Of: odoo/odoo#208076
odoo/odoo#203874 broke compatibility with Python 3.8 and Python 3.9 due to the typing annotations, leading `test_pylint` to fail on Focal and Bullseye: - `list[int]` requires Python 3.9 (PEP 585) - type-wise `a | b` requires Python 3.10 (PEP 604) Making annotations lazy works around the issue (and changes less stuff than removing the annotations). Forward-Port-Of: odoo/odoo#208110
Original PR description
odoo/odoo#203874 broke compatibility with Python 3.8 and Python 3.9 due to the typing annotations, leading `test_pylint` to fail on Focal and Bullseye: - `list[int]` requires Python 3.9 (PEP 585) - type-wise `a | b` requires Python 3.10 (PEP 604) Making annotations lazy works around the issue (and changes less stuff than removing the annotations). Forward-Port-Of: odoo/odoo#208110
Some languages aren't available on Transifex for saas versions if we do not have a dedicated maintainer for the language or not enough of the language is translated, but they are available for major versoins. As of the time of this commit this included: - Azerbaijani (az), - Bulgarian (bg), - Croatian (hr), - Estonian (et), - Greek (el), - Hebrew (he), - Hungarian (hu), - Latvian (lv), - Mongolian (mn), - Persian (fa), - Portuguese (pt), - Romanian (ro), - Ukranian (uk) Therefo
Original PR description
Some languages aren't available on Transifex for saas versions if we do not have a dedicated maintainer for the language or not enough of the language is translated, but they are available for major…
Some languages aren't available on Transifex for saas versions if we do not have a dedicated maintainer for the language or not enough of the language is translated, but they are available for major versoins. As of the time of this commit this included: - Azerbaijani (az), - Bulgarian (bg), - Croatian (hr), - Estonian (et), - Greek (el), - Hebrew (he), - Hungarian (hu), - Latvian (lv), - Mongolian (mn), - Persian (fa), - Portuguese (pt), - Romanian (ro), - Ukranian (uk) Therefore this commit pulls the current translations from the 18.0 transifex project for these languages. Note that pot file msgmerges were not applied since the end result would have been the same, missing terms from pot files won't have a translation in the po file + extra terms in the po file not in the pot won't be used. 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
This commit adds a new button to the dialog used to connect the IoT Box to a Wi-Fi network, to display/hide the password. Forward-Port-Of: odoo/odoo#207285
Original PR description
This commit adds a new button to the dialog used to connect the IoT Box to a Wi-Fi network, to display/hide the password. Forward-Port-Of: odoo/odoo#207285
…taxes are included in price 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#205925
Original PR description
…taxes are included in price 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#205925
**Current behavior:** With anglo saxon accounting and real-time valuation, purchasing a kit product with a BoM that has components whose costs add up to the exact price of the kit product and that is invoiced on ordered qty and has avg costing, then billing before receiving will prevent the reception from being validate-able. **Expected behavior:** Can validate **Steps to reproduce:** 1. Create a kit product with avg costing, invoiced on ordered qty, and a BoM with 2 components tha
Original PR description
**Current behavior:** With anglo saxon accounting and real-time valuation, purchasing a kit product with a BoM that has components whose costs add up to the exact price of the kit product and that is…
**Current behavior:** With anglo saxon accounting and real-time valuation, purchasing a kit product with a BoM that has components whose costs add up to the exact price of the kit product and that is invoiced on ordered qty and has avg costing, then billing before receiving will prevent the reception from being validate-able. **Expected behavior:** Can validate **Steps to reproduce:** 1. Create a kit product with avg costing, invoiced on ordered qty, and a BoM with 2 components that have a cumulative cost equalling that of the final kit product 2. Make a purchase for it, invoice -> post 3. Try to validate the receipt -> can't due to attempted re-reconicilation **Cause of the issue:** When validating the receipt, we end up here: https://github.com/odoo/odoo/blob/c9ea75efb8e260d6bea5b777f4f950f106ffcfa5/addons/stock_account/models/stock_valuation_layer.py#L81-L90 And attempt to reconcile both the original kit product AML from corresponding to the purchase line as well as the AML for the component in the stock input account. But we only will capture 1 exploded component AML in each loop iteration, so the original kit product AML will not actually be set `reconciled = True`, so we will also add it to be reconciled again: https://github.com/odoo/odoo/blob/c9ea75efb8e260d6bea5b777f4f950f106ffcfa5/addons/stock_account/models/stock_valuation_layer.py#L90 The same thing happens in subsequent calls to `_stock_account_anglo_saxon_reconcile_valuation()`, except on a final call for the last component line- if the components' cumulative cost aligns with the total cost of the kit product (which it should) then the reconciliation attempt will succeed. Then here: https://github.com/odoo/odoo/blob/c9ea75efb8e260d6bea5b777f4f950f106ffcfa5/addons/stock_account/models/stock_valuation_layer.py#L92 `reconcile()` is called on the already-reconciled AML which will cause the re-reconiliation error. **Fix** Reconcile all the resulting kit AMLs (component AMLs + actual kit product AML from the bill) together. opw-4668004 Forward-Port-Of: odoo/odoo#207803 Forward-Port-Of: odoo/odoo#205401
Thanks to [1], we can now fix the website page properties tour ensuring that the necessary elements are visible on the page. [1]: https://github.com/odoo/odoo/commit/4e25c13c918382afb34013a6dd30aac4a0ce4e84 runbot-106391 Co-authored-by: Pierre Pulinckx Forward-Port-Of: odoo/odoo#207740
Original PR description
Thanks to [1], we can now fix the website page properties tour ensuring that the necessary elements are visible on the page. [1]: https://github.com/odoo/odoo/commit/4e25c13c918382afb34013a6dd30aac4a0ce4e84 runbot-106391 Co-authored-by: Pierre Pulinckx Forward-Port-Of: odoo/odoo#207740
We predict the account to use in an invoice/purchase entries based on product configuration and frequent account used for partner but we do not verify if those accounts are allowed on the specified journal. This can be problematic if the entry is generated from a external file (ex: using Peppol), Odoo should retrieve an account allowed in the journal. Steps to reproduce: 1. Have two purchase journal A and B on the same company 2. Set an expense account that is allowed on one of those journa
Original PR description
We predict the account to use in an invoice/purchase entries based on product configuration and frequent account used for partner but we do not verify if those accounts are allowed on the specified journal. This can be problematic if the entry is generated from a external file (ex: using Peppol), Odoo should retrieve an account allowed in the journal. Steps to reproduce: 1. Have two purchase journal A and B on the same company 2. Set an expense account that is allowed on one of those journal (A) and not the other (B) 3. Create multiple bills with this account on the journal A for partner X 4. Upload a XML bill of partner X in journal B -> The expense account is used based on the bills in journal A -> Error because journal B is not allowed for this account opw-4607733 Forward-Port-Of: odoo/odoo#206104 Forward-Port-Of: odoo/odoo#203664
When `<attribute name="string" add="something more"` is used to add onto a string in another view, the `"something more"` string isn't translatable. Therefore since there isn't anything else adding onto this string, let's completely replace it with the original string + the "something more" string. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#207896
Original PR description
When `<attribute name="string" add="something more"` is used to add onto a string in another view, the `"something more"` string isn't translatable. Therefore since there isn't anything else adding onto this string, let's completely replace it with the original string + the "something more" string. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#207896
When using an intermediate return location, the delivered qty of a returned kit is incorrect To reproduce the issue: 1. In Settings, enable "Multi-Step Routes" 2. Create a location L: - Parent: WH - Type: Internal - Return location: True 3. Create a route: - Applicable on: Main warehouse - Add one rule: - Action: Push To - Operation Type: Internal - From: L - To: WH/Stock 4. Create a kit K 5. Sell and deliver 1 x K 6. Return it to L - It
Original PR description
When using an intermediate return location, the delivered qty of a returned kit is incorrect To reproduce the issue: 1. In Settings, enable "Multi-Step Routes" 2. Create a location L: - Parent: WH -…
When using an intermediate return location, the delivered qty of a
returned kit is incorrect
To reproduce the issue:
1. In Settings, enable "Multi-Step Routes"
2. Create a location L:
- Parent: WH
- Type: Internal
- Return location: True
3. Create a route:
- Applicable on: Main warehouse
- Add one rule:
- Action: Push To
- Operation Type: Internal
- From: L
- To: WH/Stock
4. Create a kit K
5. Sell and deliver 1 x K
6. Return it to L
- It will create an internal transfer
7. Process the internal transfer
8. Open the SO
Error: The delivered quantity of the kit is -1 instead of 0
Step 6, when returning the kit, the push rule is applied and create
the SM from L to WH/Stock. Since we copy the SM from Customer to L, the
new SM also has the field `sale_line_id` defined.
As a result, step 7, since all SM are done, `moves` contain them
(the delivery, the return and the internal transfer). We then filter
them based on some criteria:
https://github.com/odoo/odoo/blob/9918e8f3d627f3c52238d6b04bcd15c05d34e40c/addons/sale_mrp/models/sale_order_line.py#L67-L73
But, for `outgoing_moves` (which is actually the incoming ones, the
name is wrong), since we look at the destination location, both the
return and the internal SM will match. That's why we will decrease
twice the delivered quantity. Hence, the bug.
A fix could be to avoid copying the `sale_line_id` field. That being
said, when looking `sale_stock` side (i.e., same flow with a classic
product), we don't have any issue because the filters are slightly
different:
https://github.com/odoo/odoo/blob/418dc0cc3b3aa1ee2abbdb4852d9cd24fba7636e/addons/sale_stock/models/sale_order_line.py#L274-L278
(Here, we need to look at the `incoming_moves`. Again: the name is just
incorrect on mrp side...)
We see that, for `incoming_moves`, we actually look at the source
location. This explains why we don't have any issue with a non-kit
product.
Therefore, the best fix would be to use the same filters everywhere.
Good news, such a method already exist:
https://github.com/odoo/odoo/blob/9918e8f3d627f3c52238d6b04bcd15c05d34e40c/addons/sale_mrp/models/sale_order_line.py#L115-L116
However, using this method might lead to some other issues (among them:
the override in `sale_subscription_stock` reads a field although the
method is an `api.model` one). So, let's minimize the diff on stable
version and refactor the code (use the same filters everywhere) on
master.
About the filter names, the confusion actually comes from:
https://github.com/odoo/odoo/blob/312572c7b8138a4800350cd7a524a37551a348ef/addons/mrp/models/stock_move.py#L624
There, we should rather talk about positive moves and negatives
moves, since this method can be used either in a SO flow or in a PO
one. This explains why, for now, SO sode, an "incoming move" is
actually an outgoing one. So, on master, another commit will be
added to also clean that part of the code:
\- Improve the expected filter names in `_compute_kit_quantities`
\- Fix the filter names in `_get_incoming_outgoing_moves_filter`
OPW-4625228
Forward-Port-Of: odoo/odoo#207739
Forward-Port-Of: odoo/odoo#206966Steps to reproduce [17.1]: - Add a property field to a job application in the backend. - Go to the linked website job application form (in edit mode). - The property field is inaccessible. To be able to access the new property field in the application form, the `job_id` value of the related job record needs to be specified by default. Unfortunately, these values are removed before accessing "edit" mode: Starting from [1], a fix was added to clear default values coming from `data-f
Original PR description
Steps to reproduce [17.1]: - Add a property field to a job application in the backend. - Go to the linked website job application form (in edit mode). - The property field is inaccessible. To be able…
Steps to reproduce [17.1]: - Add a property field to a job application in the backend. - Go to the linked website job application form (in edit mode). - The property field is inaccessible. To be able to access the new property field in the application form, the `job_id` value of the related job record needs to be specified by default. Unfortunately, these values are removed before accessing "edit" mode: Starting from [1], a fix was added to clear default values coming from `data-for` attributes when the form is edited (at `cleanForSave()`) to prevent saving it with changed default values. Since the code from [1] can also remove default values set by the user, a new fix (see [2]) updated this implementation to ensure that only values from auto-fill and data-for fields will be removed (this time, when the form public widget is destroyed [3]). The behaviour from [3] will always unlink the `data-for` values in edit mode, and as a consequence, the related property fields won't be correctly retrieved. The goal of this commit is to fix this behaviour by excluding `data-for` values from the reset in [3]. An extra check will be added to be sure the form won't be saved with updated default values if it already has `data-for` ones [4]. Important: The diff from [5] made the `email_to` field as an exception for the data-for/prefill priority system and only used the `data-for` value if nothing has been configured by the user (it also used the `data-for` value if what was configured by the user is the dummy default email: `info@yourcompany.example.com`). That's why we need to exceptionally allow saving the default value added by the user in the check from [4] to preserve the same behavior. Following [6], The `email_to` value won't be kept in edit mode to prevent breaking its dynamic behavior. [1]: https://github.com/odoo/odoo/commit/b637a5e32f767b62736241042f88fa0cecf9f10b [2]: https://github.com/odoo/odoo/commit/043e1fdf923d2037dd8da128ab99388f0c92e544 [5]: https://github.com/odoo/odoo/commit/a08574a04ff2ce8ea2d6fd2b79f56cc57bba953b [6]: https://github.com/odoo/odoo/commit/6658d61e304c9dfd8e512648c4a001dcaac44bc1 task-3922573 Forward-Port-Of: odoo/odoo#204027 Forward-Port-Of: odoo/odoo#166565
Before this commit, pricelist rules defined on a parent category were not applied to products belonging to its child categories. opw-4685399 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#204302
Original PR description
Before this commit, pricelist rules defined on a parent category were not applied to products belonging to its child categories. opw-4685399 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#204302
With this commit; if a template is selected (need to be added in xml view in 16.0 but already display in 17.2) the body and the subject will be rendered. task-4664784 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#207816 Forward-Port-Of: odoo/odoo#203254
Original PR description
With this commit; if a template is selected (need to be added in xml view in 16.0 but already display in 17.2) the body and the subject will be rendered. task-4664784 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#207816 Forward-Port-Of: odoo/odoo#203254
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#199930
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#199930
Fix an issue when sending invoices asynchronously to SDI from multiple companies. Steps to reproduce: - Setup two Italian companies, A and B - Create and post one invoice in each company - From the list view, batch send both invoices - Run the “Send invoices automatically” scheduled action An error occurs: ValueError: Expected singleton: account_edi_proxy_client.user(4, 3) This happens because both companies try to send their moves simultaneously, but the proxy client is company-sp
Original PR description
Fix an issue when sending invoices asynchronously to SDI from multiple companies. Steps to reproduce: - Setup two Italian companies, A and B - Create and post one invoice in each company - From the list view, batch send both invoices - Run the “Send invoices automatically” scheduled action An error occurs: ValueError: Expected singleton: account_edi_proxy_client.user(4, 3) This happens because both companies try to send their moves simultaneously, but the proxy client is company-specific. This fix groups the invoices by company before sending them. Ticket [link](https://www.odoo.com/odoo/project/967/tasks/4725653) opw-4725653 Forward-Port-Of: odoo/odoo#207831 Forward-Port-Of: odoo/odoo#206267
When uninstalling Odoo with the NSIS uninstaller, whole install dir is removed when ngingx is not found which is not the desired behavior. While at it, update the NSIS version. Forward-Port-Of: odoo/odoo#207464
Original PR description
When uninstalling Odoo with the NSIS uninstaller, whole install dir is removed when ngingx is not found which is not the desired behavior. While at it, update the NSIS version. Forward-Port-Of: odoo/odoo#207464
PR #202334 introduced a test in `pos_loyalty` that depends on the field `discount_product_id` that is created in the module `pos_discount`. However, `pos_loyalty` and `pos_discount` does not have dependence, so the fails if `pos_discount` is not installed. This PR only runs it when `pos_discount` is installed. opw-4622428 Forward-Port-Of: odoo/odoo#207758
Original PR description
PR #202334 introduced a test in `pos_loyalty` that depends on the field `discount_product_id` that is created in the module `pos_discount`. However, `pos_loyalty` and `pos_discount` does not have dependence, so the fails if `pos_discount` is not installed. This PR only runs it when `pos_discount` is installed. opw-4622428 Forward-Port-Of: odoo/odoo#207758
Steps to reproduce: - Have a pricelist with rules. - Add this pricelist as the default one for a POS (kiosk). - Open the kiosk and add the products to trigger the price rule Issue: The price rule is not taken into account. This occurs because the kiosk currently does not set the order pricelist in kiosk mode. Also, pricelist rules are not loaded as it occurs in normal POS session [1] [1] https://github.com/odoo/odoo/blob/c8d7452063a4712b03b6d23e944ff283bdcea857/addons/point_of_sale
Original PR description
Steps to reproduce: - Have a pricelist with rules. - Add this pricelist as the default one for a POS (kiosk). - Open the kiosk and add the products to trigger the price rule Issue: The price rule is not taken into account. This occurs because the kiosk currently does not set the order pricelist in kiosk mode. Also, pricelist rules are not loaded as it occurs in normal POS session [1] [1] https://github.com/odoo/odoo/blob/c8d7452063a4712b03b6d23e944ff283bdcea857/addons/point_of_sale/static/src/app/store/pos_store.js#L417 This commit aim to restore the pricelist functionality by loading the pricelist rules at startup like `computeProductPricelistCache` does opw-4553345 Forward-Port-Of: odoo/odoo#206039 Forward-Port-Of: odoo/odoo#199942