Tuesday, December 10, 2024
16 changes · saas-17.2
Resolved issues and error corrections
Point of Sale receipts now show the company name again, matching behavior from previous versions. This helps customers and staff clearly identify the business on printed or digital receipts.
Original PR description
**Steps to reproduce:** - Make a POS order - Process to payment - Check receipt **Issue:** The company name is not displayed on the receipt as it was in previous versions. opw-4349203 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Miscellaneous changes
Following the change of account type in the community pr, some tests had to be modified. task: 4341375 Forward-Port-Of: odoo/enterprise#75114
Original PR description
Following the change of account type in the community pr, some tests had to be modified. task: 4341375 Forward-Port-Of: odoo/enterprise#75114
Currently, the cron method "_create_recurring_invoice" handles the invoices by batch of 30. Each batch is done in its own cron run and each invoice is committed individually. However, the delivery creations handled in _post_invoice_hook are all done at the end of the last batch, without any commit. If the database has a lot of invoices to generate (ex: ~200), it would take a few minutes before the delivery creations to start. This is enough time for the CRON "payment: post-process transaction
Original PR description
Currently, the cron method "_create_recurring_invoice" handles the invoices by batch of 30. Each batch is done in its own cron run and each invoice is committed individually. However, the delivery…
Currently, the cron method "_create_recurring_invoice" handles the invoices by batch of 30. Each batch is done in its own cron run and each invoice is committed individually. However, the delivery creations handled in _post_invoice_hook are all done at the end of the last batch, without any commit. If the database has a lot of invoices to generate (ex: ~200), it would take a few minutes before the delivery creations to start. This is enough time for the CRON "payment: post-process transactions" to start and handle all the invoices & payments created by "_create_recurring_invoice". The 2 CRON were then likely to create SerializationFailure due to a concurrent update. With this commit, each batch creates its own deliveries before triggering the next batch. If the delivery creations do fail: - The error is caught as to not prevent the next batch from being triggered. - An exception activity is created on the subscription to notify the customer about the error. - A contextual action is available to manually trigger the delivery. OPW-4319019 --- When the delivery creation failed, you can easily spot it on the list view thanks to the activity warning:  --- ## Example log ``` 2024-11-14 07:48:53,757 96554 INFO customer-database odoo.addons.base.models.ir_cron: Job done: `payment: post-process transactions` (30.353s). 2024-11-14 07:58:26,142 96886 INFO customer-database odoo.addons.base.models.ir_cron: Starting job `payment: post-process transactions`. 2024-11-14 07:58:57,145 96886 INFO customer-database odoo.addons.base.models.ir_cron: Job done: `payment: post-process transactions` (31.003s). 2024-11-14 08:05:51,910 97204 INFO customer-database odoo.addons.base.models.ir_cron: Starting job `Sale Subscription: generate recurring invoices and payments`. 2024-11-14 08:06:46,734 97204 INFO customer-database odoo.addons.base.models.ir_cron: Job done: `Sale Subscription: generate recurring invoices and payments` (54.823s). 2024-11-14 08:06:53,143 97262 INFO customer-database odoo.addons.base.models.ir_cron: Starting job `Sale Subscription: generate recurring invoices and payments`. 2024-11-14 08:07:46,207 97262 INFO customer-database odoo.addons.base.models.ir_cron: Job done: `Sale Subscription: generate recurring invoices and payments` (53.064s). 2024-11-14 08:07:55,496 97300 INFO customer-database odoo.addons.base.models.ir_cron: Starting job `Sale Subscription: generate recurring invoices and payments`. 2024-11-14 08:08:30,928 97300 INFO customer-database odoo.addons.base.models.ir_cron: Starting job `payment: post-process transactions`. 2024-11-14 08:08:44,957 97300 INFO customer-database odoo.addons.base.models.ir_cron: Job done: `Sale Subscription: generate recurring invoices and payments` (49.461s). 2024-11-14 08:08:50,945 97300 INFO customer-database odoo.addons.base.models.ir_cron: Starting job `Sale Subscription: generate recurring invoices and payments`. 2024-11-14 08:09:18,543 97300 ERROR customer-database odoo.addons.base.models.ir_cron: Call from cron Sale Subscription: generate recurring invoices and payments for server action #705 failed in Job #10 2024-11-14 08:15:52,854 97300 INFO customer-database odoo.addons.base.models.ir_cron: Job done: `payment: post-process transactions` (441.926s). 2024-11-14 08:18:31,161 97300 INFO customer-database odoo.addons.base.models.ir_cron: Starting job `payment: post-process transactions`. 2024-11-14 08:21:16,823 97300 INFO customer-database odoo.addons.base.models.ir_cron: Job done: `payment: post-process transactions` (165.662s). 2024-11-14 08:28:31,865 99066 INFO customer-database odoo.addons.base.models.ir_cron: Starting job `payment: post-process transactions`. ``` - At the beginning: `payment: post-process transactions` take ~30 secs - Then, `Sale Subscription: generate recurring invoices and payments` runs a few times (as expected). - `payment: post-process transactions` re-runs, and it takes 441.926. During this time, `Sale Subscription: generate recurring invoices and payments` starts and failed. --- ## A few points of information/discussion: - The SerializationFailure is systematic on the customer database, who has ~200 subscriptions invoiced each day. - The added action "Subscription: Generate delivery" is optional, I am amenable to remove it from this PR, but we would just block the customer with undelivered stock. - In master, it would be better to automatically detect the deliveries not done and re-generate each day. However, I was unable to find a proper way to do it without adding a field or changing the behavior of an existing one. - I originally wanted to create to add a button to the form view like "Create Delivery", however, like above I was unable to properly detect undelivered subscriptions. - The exception activity does not directly notify the users via discuss, do you think I should add the option? - I did not (yet) created tests for this error. To properly do so, I would need to reproduce a SerializationFailure which I'm unsure of how to do without doing commits. I could simply fake it by overwriting the `_action_launch_stock_rule` to raise an Error... TBD Forward-Port-Of: odoo/enterprise#73911
**Issue:** The discount column is not visible on Purchase Order PDF file. **Expected:** When a discount is configured, it should be displayed on the document. **Steps to reproduce:** - Activate Purchase app; - Go to Purchase > Orders > Request for Quotations; - Create a new RFQ with at least 1 product and a vendor; - Setup a discount (display the column using the options on the right of the table); - Confirm the order; - Using the action button `Print` > `Purchase order`, generate
Original PR description
**Issue:** The discount column is not visible on Purchase Order PDF file. **Expected:** When a discount is configured, it should be displayed on the document. **Steps to reproduce:** - Activate…
**Issue:** The discount column is not visible on Purchase Order PDF file. **Expected:** When a discount is configured, it should be displayed on the document. **Steps to reproduce:** - Activate Purchase app; - Go to Purchase > Orders > Request for Quotations; - Create a new RFQ with at least 1 product and a vendor; - Setup a discount (display the column using the options on the right of the table); - Confirm the order; - Using the action button `Print` > `Purchase order`, generate the PDF. **Cause:** The field isn't displayed on the template https://github.com/odoo/odoo/blob/a288317f303f8176e058d04b611064bb457534b3/addons/purchase/report/purchase_order_templates.xml#L51-L56 **Fix:** Backport the Odoo 18 fix (https://github.com/odoo/odoo/commit/6474797ee21c9547f9adb9e58bd9593870cacf6b) that adds the field to the document's XML. opw-4346390 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#189477
In some rare case, the following call:https://github.com/odoo/odoo/blob/2b15cdecfacdc777b5db1ee151012681c3760899/addons/account_peppol/models/res_partner.py#L89 fails. The call is try-catched but we didn't handle all possible requests exception, only the Connection Error. We therefore instead catch the more general RequestException that will catch all ConnectionError, Timeout, HTTPError, ... We also add a logging to help debugging. task-no Forward-Port-Of: odoo/odoo#190024
Original PR description
In some rare case, the following call:https://github.com/odoo/odoo/blob/2b15cdecfacdc777b5db1ee151012681c3760899/addons/account_peppol/models/res_partner.py#L89 fails. The call is try-catched but we didn't handle all possible requests exception, only the Connection Error. We therefore instead catch the more general RequestException that will catch all ConnectionError, Timeout, HTTPError, ... We also add a logging to help debugging. task-no Forward-Port-Of: odoo/odoo#190024
Previously (ref.1) introduced DATE_SHORT, this commit uses custom format specified in the current language Reproduce --- - -i contacts,calendar - change current language date format to something custom like %m/%b/%y - open contacts -> activity view - add some activity-> BUG: Custom date format not used (Ref.1) --- [IMP] {test_}mail: allow to keep done activities and improve activity view b6c236df54abb66b30d8643dea797f385d3036f1 opw-4151431 ### note, debate If user uses some
Original PR description
Previously (ref.1) introduced DATE_SHORT,
this commit uses custom format specified in the current language
Reproduce
---
- -i contacts,calendar
- change current language date format to something custom like %m/%b/%y
- open contacts -> activity view
- add some activity-> BUG: Custom date format not used
(Ref.1)
---
[IMP] {test_}mail: allow to keep done activities and improve activity view b6c236df54abb66b30d8643dea797f385d3036f1
opw-4151431
### note, debate
If user uses some long date_format it may not look too nice, however it will keep the date consistent across odoo, consulted with creator and PO.
code originally stems from here https://github.com/odoo/odoo/pull/138135
Forward-Port-Of: odoo/odoo#186298A traceback error occurs when the user uninstalls the model used in the mail template referenced in the loyalty program. To reproduce this issue: 1) Install `sale`, `stock`, and enable `loyalty` from settings 2) Create a new loyalty record from `sale/product/discount & Loyalty` 3) Set program type as `loyalty cards` and add `mail template` from `communication` 4) Open the selected mail template and change the model to the `stock lot` 5) Now uninstall the stock module and open the
Original PR description
A traceback error occurs when the user uninstalls the model used in the mail template referenced in the loyalty program. To reproduce this issue: 1) Install `sale`, `stock`, and enable `loyalty` from…
A traceback error occurs when the user uninstalls the model used in the mail template referenced in the loyalty program. To reproduce this issue: 1) Install `sale`, `stock`, and enable `loyalty` from settings 2) Create a new loyalty record from `sale/product/discount & Loyalty` 3) Set program type as `loyalty cards` and add `mail template` from `communication` 4) Open the selected mail template and change the model to the `stock lot` 5) Now uninstall the stock module and open the above loyalty record 6) From the `Loyalty Cards` stat button create a record with a partner Error:- ``` KeyError: False ``` We used the `stock lot` in the mail template. However, when the user uninstalls the `stock` module, the value of `model_id` will be set to `False` in that mail template, which leads to the traceback mentioned above from the code below. https://github.com/odoo/odoo/blob/28815810d9835772aa2fbe72339360f0771634a9/addons/mail/models/mail_template.py#L574-L575 We can resolve this issue by applying `ondelete` equals to `cascade` on `model_id` and `template_id` of the `mail_template` and the `loyalty_mail` respectively. As the model is deleted, `mail template` and `loyalty mail` must also deleted Note:- We already solved a similar type issue from this PR https://github.com/odoo/odoo/pull/180307 sentry-6088927895 Forward-Port-Of: odoo/odoo#189864
This commit adds the missing neutralization necessary for the l10n_jo_edi module introduced in 18.0 in [1] and then backported to 17.0 in [2] 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 operato
Original PR description
This commit adds the missing neutralization necessary for the l10n_jo_edi module introduced in 18.0 in [1] and then backported to 17.0 in [2] 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/odoo/pull/182983 [2] https://github.com/odoo/odoo/pull/176625 Forward-Port-Of: odoo/odoo#190069
This commit will do multiple things: - Change one tax type - Change some account types task: 4341375 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#189350
Original PR description
This commit will do multiple things: - Change one tax type - Change some account types task: 4341375 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#189350
Fixes two bugs on carry over amount: reset accrual carryover to lost state: steps: - set the carry over to "carry over with maximum" - set a number of days to carry over and save - set the carry over type back to "None" -> You still carry over the amount of days you typed in instead of 0 always carryover the cap: steps: - create an accrual plan with: - 21 days per year alloc - start immediate - 28 days cap - carryover with max 7 days - create
Original PR description
Fixes two bugs on carry over amount:
reset accrual carryover to lost state:
steps:
- set the carry over to "carry over with maximum"
- set a number of days to carry over and save
- set the carry over type back to "None"
-> You still carry over the amount of days you typed in instead of 0
always carryover the cap:
steps:
- create an accrual plan with:
- 21 days per year alloc
- start immediate
- 28 days cap
- carryover with max 7 days
- create allocation for the current year (1/1/XXXX)
- take 15 days holidays -> 6 days left on the alloc
- check the leaves left for next year -> 28 days, should be 27 (21 + 6)
This happened because the carry-over calculation didn't take into account
the number of days left on the allocation and always carried over the cap.
Forward-Port-Of: odoo/odoo#188621Description of the issue/feature this PR addresses: - After an internal user (without Live Chat application access) interacted with chatbot from website, he will not be able to click on the Messages icon on the top-right menu anymore:  - Cause: Internal user without Live Chat application access cannot read on model `chatbot.script.step`, so when system calls `mail_channel.chatbot_current_step_id`, securit
Original PR description
Description of the issue/feature this PR addresses: - After an internal user (without Live Chat application access) interacted with chatbot from website, he will not be able to click on the Messages icon on the top-right menu anymore:  - Cause: Internal user without Live Chat application access cannot read on model `chatbot.script.step`, so when system calls `mail_channel.chatbot_current_step_id`, security error occurs. - Solution: Use `sudo` on `mail_channel` variable to avoid security error. 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#175085 Forward-Port-Of: odoo/odoo#174611
**Problem**: In the Marketing module, when adding an image and attempting to center it, the centering action does not work because the action is not applying any style to the image. **Solution**: Use the same actions as those implemented in `web_editor` to apply the appropriate styles for centering the image: https://github.com/odoo/odoo/blob/175fdc14769e530424c3b0e364a4c3495aa499d3/addons/web_editor/views/snippets.xml#L600-L602 **Steps to reproduce**: 1. Go to *Email Marketing* and ope
Original PR description
**Problem**: In the Marketing module, when adding an image and attempting to center it, the centering action does not work because the action is not applying any style to the image. **Solution**: Use the same actions as those implemented in `web_editor` to apply the appropriate styles for centering the image: https://github.com/odoo/odoo/blob/175fdc14769e530424c3b0e364a4c3495aa499d3/addons/web_editor/views/snippets.xml#L600-L602 **Steps to reproduce**: 1. Go to *Email Marketing* and open any template. 2. Add an image and resize it. 3. Change the alignment of the image to center. 4. Observe that nothing happens and the image is not centered. opw-4348923 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#189413
Previously, when no EDI proxy user existed, in some case when the handle_demo ran, it was erronously deducing that the EDI mode was not demo, while it was. This commit fixes and simplifies the deduction of the EDI mode: We check the company in the env, if there is a related Peppol proxy user we take his mode, else we fallback on the dedicated system parameter. task-no Forward-Port-Of: odoo/odoo#190077
Original PR description
Previously, when no EDI proxy user existed, in some case when the handle_demo ran, it was erronously deducing that the EDI mode was not demo, while it was. This commit fixes and simplifies the deduction of the EDI mode: We check the company in the env, if there is a related Peppol proxy user we take his mode, else we fallback on the dedicated system parameter. task-no Forward-Port-Of: odoo/odoo#190077
When in preview mode and a modal is open in the preview, pressing escape hides both the modal and the top menu bar. We want to prevent that. Steps to reproduce: 1. Connect as Admin and go on the website homepage 2. Edit the page, add a popup and save 3. Make sure to be in preview mode 4. Wait for the popup to show. 5. Click on it (just to be sure it's focused) 6. Press escape task-4351982 Forward-Port-Of: odoo/odoo#190066 Forward-Port-Of: odoo/odoo#188085
Original PR description
When in preview mode and a modal is open in the preview, pressing escape hides both the modal and the top menu bar. We want to prevent that. Steps to reproduce: 1. Connect as Admin and go on the website homepage 2. Edit the page, add a popup and save 3. Make sure to be in preview mode 4. Wait for the popup to show. 5. Click on it (just to be sure it's focused) 6. Press escape task-4351982 Forward-Port-Of: odoo/odoo#190066 Forward-Port-Of: odoo/odoo#188085
Improved the authentication logging process for romanian E-Factura token generation, for better debugging in case an error happened in between the process. From now, all potential errors in the auth process are catched and saved in the `ir.logging` object, which can be accessed by going to debug mode and going to the `Settings > Technical > Logging` menu. The saved errors are also updated to contain more information than before. In master, the `l10n_ro_edi_oauth_error` object will be delet
Original PR description
Improved the authentication logging process for romanian E-Factura token generation, for better debugging in case an error happened in between the process. From now, all potential errors in the auth process are catched and saved in the `ir.logging` object, which can be accessed by going to debug mode and going to the `Settings > Technical > Logging` menu. The saved errors are also updated to contain more information than before. In master, the `l10n_ro_edi_oauth_error` object will be deleted along with the views. All errors regarding romanian authentication from now on should be viewed in the Logging menu. opw-4187186 Forward-Port-Of: odoo/odoo#187708
Versions -------- - 16.0+ Steps ----- 1. Run `test_reload_template_translations` without demo data. Issue ----- > AssertionError: sale_order_template_id was not found in the view Cause ----- The `sale_order_template_id` field requires the user to have the `sale_management.group_sale_order_template` group, which they don't have by default without demo data. Solution -------- Add the group to the current user before running the test. --- Runbot: https://runbot.odoo.com/
Original PR description
Versions -------- - 16.0+ Steps ----- 1. Run `test_reload_template_translations` without demo data. Issue ----- > AssertionError: sale_order_template_id was not found in the view Cause ----- The `sale_order_template_id` field requires the user to have the `sale_management.group_sale_order_template` group, which they don't have by default without demo data. Solution -------- Add the group to the current user before running the test. --- Runbot: https://runbot.odoo.com/web#id=109475&view_type=form&model=runbot.build.error&menu_id=405&cids=1 opw-4260006 Forward-Port-Of: odoo/odoo#190031