Friday, December 6, 2024
20 changes · 17.0
Resolved issues and error corrections
This fixes an error that could occur when multiple activity plan scheduling wizards were created at the same time. Businesses using automated or simultaneous activity plan launches should see more reliable scheduling without interruptions.
Original PR description
Description of the issue/feature this PR addresses: When there is more than one mail.activity.schedule records created in a process, the function `_compute_plan_available_ids()` will face the error Expected singleton. Current behavior before PR: This issue will not happen when launching the activity plan on WUI because users open one launch plan wizard at a time. When activity plans need to launch simultaneously, we need to create a separate wizard for each plan, this process will cause the issue. Desired behavior after PR is merged: The function `_compute_plan_available_ids()` will work properly. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Point-of-sale Mercado Pago notification problems are now recorded more visibly in standard logs. This helps support teams notice and investigate unusual payment notification errors without changing logging settings.
Original PR description
Before this fix: As the default log level if set to INFO, having a 400 on mercado pago notification log does not help to further investigate the case After this fix: Unusual situatution logs that were in debug level were increased to WARNING level instead to be by default in logs files opw-4349957
This fixes an error that could appear when testing SMS marketing after the SMS service URL was manually changed. Users can now run SMS tests without the system crashing because of certain characters in the configured URL.
Original PR description
Currently, a traceback occurs when the user changes the SMS iap URL and tries to test SMS mailing. To reproduce this issue: 1) Install `mass_mailing_sms` 2) Add 'B' in the SMS `IAP` URL from the `settings/technical/iap` 3) Open any SMS marketing record and click on the `Test` button Error:- ``` ValueError: unsupported format character 'B' (0x42) at index 152 ``` When the user gives the 'B' in the URL string, it is converted to `%B%` in the URL. As it leads to a traceback as `%s` is used to format two strings. https://github.com/odoo/odoo/blob/a98a8859696f5a69afe2954a3f5493b611ee252b/addons/sms/tools/sms_api.py#L59 This error occurs when using the old-style string formatting (%s) within an f-string. When using f-strings, we don't need to mix them with the % formatting method. We can replace the `%` formatting with the `format` method. sentry-6072287605
This fixes a Safari-only issue in the website editor where the image shape selector could be partly covered by the Invisible Elements list. Users can now scroll and access all available shape options when editing image blocks, avoiding layout frustration during page design.
Original PR description
Steps to reproduce the bug (only on Safari): - Drag and drop 4-5 "Text" blocks onto the page. - Hide all of them in desktop view by clicking the "Hide on desktop" button for each one. This should create a list of "Invisible Elements" at the bottom of the right panel. - Drag and drop a "Text - Image" block onto the page. - Click the image in the "Text - Image" block. - In the image options, click the "Shape" selector. - Bug: The "Shape" selector is partially hidden behind the "Invisible Elements" list, and it is not possible to scroll to the bottom of the "shapes" list to access the last shapes. After investigation, we found that the issue comes from the backdrop, which is positioned as sticky behind the shape selector. Since the backdrop isn't needed for the "shape selector" (it covers the entire right panel), we simply disabled it for the "shape selector". opw-4357397
The Kanban image dialog now shows the Remove Cover button only when a cover image is actually set. This prevents users from seeing an irrelevant action and makes the interface clearer.
Original PR description
- This commit introduces the 'Remove Cover' button feature by updating the visibility condition - The button will now be visible only when the image cover is set otherwise, it remains hidden. task - 3624059 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 update resolves an issue where cancelled rental orders were incorrectly showing as 'reserved' in the schedule view. The fix changes how the system identifies the status of cancelled rental lines, ensuring they accurately reflect their 'cancelled' state. This improves clarity and accuracy for users managing rental orders.
Original PR description
Versions -------- - 16.0+ Steps ----- 1. Create a rental order; 2. cancel said rental order; 3. go to Schedule; 4. change search to show all rental orders; 5. hover over cancelled rental order. Issue ----- It's still showing its status as 'reserved'. Cause ----- The `report_line_status` field assumes any line that isn't picked up or returned is reserved. Solution -------- If the order's state is `cancel`, display the report line as "Cancelled". opw-4342420 Forward-Port-Of: odoo/enterprise#75066
This update resolves an issue where the system incorrectly identified VAT numbers with dots (like BE1234.678.28) during SODA file imports. The fix adjusts the underlying regex to correctly validate Belgian VAT numbers, ensuring accurate company matching and import processes. This prevents import errors and improves data accuracy.
Original PR description
Steps to reproduce: 1. Have a VAT number (or company registry) with dots (e.g.: BE1234.678.28) 2. Import a valid SODA file with the same VAT number 3. Error: "The imported document doesn't seem to correspond to this company's VAT number nor company id" Why it happens: This happens because the regex was taking only the first matching group (1234 in the example above). Solution: Instead of searching the first group of the regex, we can subtract all chars and only keep digits to have a valid Belgian VAT number that can be used when checking correspondence between the company VAT and the imported SODA file VAT. opw 4347926 Forward-Port-Of: odoo/enterprise#75111
This update streamlines the handling of Excel files (xlsx) within Odoo Enterprise. The previous process created unnecessary attachments and conflicts with computed fields, leading to inefficiencies. This fix simplifies the process by directly exploring the Excel file's structure, resulting in faster and more reliable document imports.
Original PR description
The multipage computation of xslx files was a bit overkill as it would convert the xlsx file to an o-spreadsheet json friendly form where it could simply explore the zip files. Furthermore, that convertion would create attachments for each media file present in the xlsx file. This is bad in 2 ways: - the created attachment would never be used again - we were creating attachment while calling a computed field (read/write mix is bad) Task-4213183
This update resolves an issue where newly added form fields in Odoo's Web Studio were incorrectly placed at the end of the form instead of the beginning. The fix ensures that new fields are inserted at the start of the sheet, improving the user experience and preventing unexpected form layouts. This change ensures consistent and predictable form design.
Original PR description
Steps to reproduce ================== - Open any form view - Drag and drop a new html field at the start of the form view => It goes to the bottom Cause of the issue ================== The generated xpath was `<xpath expr="//form[1]/sheet[1]" position="inside"/>` This puts the new element at the end of the sheet Solution ======== If we want to insert something at the start of the sheet, we need to put it before it's first child. If the sheet is empty, we can use inside like previously opw-4339407
This update fixes an issue where bank statement files with a date of '000000' caused parsing errors. The change allows the system to correctly process these files by using a standard fallback date, ensuring accurate import of bank transaction data. This improves the reliability of importing bank statements.
Original PR description
Add check if date string is not equal to "000000" before parsing it, in record types that were missing this check. Some banks provide CODA files with the date set to "000000" which caused the `_parse_bank_statement_file` method to raise an exception and fail to parse such files. Using the `statement['date']` as a fallback in such case, as it is already used for `balance_start_date` and `transactionDate` fields. task-4348031 Forward-Port-Of: odoo/enterprise#74640
This update resolves an issue where the navigation menu and breadcrumbs disappeared after purchasing a reward on the Rewards page. The fix utilizes a 'soft reload' to prevent the page from resetting and maintaining consistent navigation for users. This improves the user experience and ensures seamless browsing.
Original PR description
Steps: - Go to the Rewards page - Buy a reward - Breadcrumb and navigation menu were disappearing after the purchase Cause of the issue: - Page reload was resetting the breadcrumb and navigation Fix: - Used a soft reload instead of a full page reload to prevent the reset and preserve the breadcrumb and navigation menu task-4266538
Miscellaneous changes
- Created a new module `l10n_mt_pos` to provide a compliance letter required by Maltese businesses for requesting an EXO number. - Automatically installs for Malta by default. - Added a menu item under "Reporting" > "Compliance Letter" to allow users to download the document. Task ID: 4373339 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#189640
Original PR description
- Created a new module `l10n_mt_pos` to provide a compliance letter required by Maltese businesses for requesting an EXO number. - Automatically installs for Malta by default. - Added a menu item under "Reporting" > "Compliance Letter" to allow users to download the document. Task ID: 4373339 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#189640
*: l10n_account_edi_ubl_cii_tests Previously, we always set code 30 "Credit transfer" for both customer invoices and credit notes. When you set this code to 30, the UBL rule BR-61 [1] fail if you don't set the payee's bank account number. It's not handy to be forced to set the bank account number while we don't really know if the payment will happen through credit transfer at this stage. We now set code 57 "Standing agreement" for refunds, which seems more general and still a valid meth
Original PR description
*: l10n_account_edi_ubl_cii_tests Previously, we always set code 30 "Credit transfer" for both customer invoices and credit notes. When you set this code to 30, the UBL rule BR-61 [1] fail if you don't set the payee's bank account number. It's not handy to be forced to set the bank account number while we don't really know if the payment will happen through credit transfer at this stage. We now set code 57 "Standing agreement" for refunds, which seems more general and still a valid method. [1]: https://docs.peppol.eu/poacc/billing/3.0/rules/ubl-tc434/BR-61/ task-no Forward-Port-Of: odoo/odoo#189549
Versions -------- - 16.0+ Steps (18.0+) ------------- 1. Enable credit limits via Accounting settings; 2. log in as a user with access to Sales but not Accounting; 3. create a Sales Order; 4. add a product. Issue ----- Access Error. Cause ----- Commit de302c2 changed the way company dependent fields are handled. Instead of computing them via `_compute_company_dependent`, they are now stored in the database. Before this this change, any `groups` restriction added to a field
Original PR description
Versions -------- - 16.0+ Steps (18.0+) ------------- 1. Enable credit limits via Accounting settings; 2. log in as a user with access to Sales but not Accounting; 3. create a Sales Order; 4. add a product. Issue ----- Access Error. Cause ----- Commit de302c2 changed the way company dependent fields are handled. Instead of computing them via `_compute_company_dependent`, they are now stored in the database. Before this this change, any `groups` restriction added to a field wasn't actually checked. After this change, it does get checked, leading to the access error. Solution -------- 1. Use `sudo` to access `partner_id.credit`. 2. When calling the `_build_credit_warning_message`, pass the sales order with `sudo`. opw-4367393 Forward-Port-Of: odoo/odoo#189209
**Steps to reproduce:** - Install Accounting and l10n_de - Switch to a German company - Configure the customer invoice journal to enable "XRechnung UBL (Germany)" - Create a German contact: * with a complete address * with an email address * without a VAT number - Create an invoice for the created contact - Confirm the invoice - Generate the electronic invoice - Validate the generated XML on an online XRechnung ValidationError **Issue:** The XRechnung (UBL Invoice) is not va
Original PR description
**Steps to reproduce:** - Install Accounting and l10n_de - Switch to a German company - Configure the customer invoice journal to enable "XRechnung UBL (Germany)" - Create a German contact: * with a…
**Steps to reproduce:** - Install Accounting and l10n_de - Switch to a German company - Configure the customer invoice journal to enable "XRechnung UBL (Germany)" - Create a German contact: * with a complete address * with an email address * without a VAT number - Create an invoice for the created contact - Confirm the invoice - Generate the electronic invoice - Validate the generated XML on an online XRechnung ValidationError **Issue:** The XRechnung (UBL Invoice) is not valid because the buyer electronic address is missing (cbc:EndpointID). **Cause:** `<cbc:EndpointID>` gets its value from contact's VAT, but the contact has no VAT. **Solution:** Since XRechnung 3.0.1, the email address can be used as electronic address with "EM" as schemeID. So, fallback on email address if contact has no VAT. **Reference:** https://www.e-rechnung-bund.de/standard-xrechnung-3-0-1/ https://blog.seeburger.com/xrechnung-version-3-0-1-comes-into-force-on-february-1-2024/ https://erechnungsvalidator.service-bw.de/ opw-4261026 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#189183
* STEP TO REPRODUCE: In Form view Michelle Admin create a private event with attendee not inlcude him, then he forgot that he need to attend that too but no 'Edit' button appear in calendar popover. * REASON: In order to display the Edit button for private event , user need to be in attendees list * SOLUTION: This commit fix that by allow organizer to do the same thing , can edit and delete the event Description of the issue/feature this PR addresses: Current behavior before PR: Desir
Original PR description
* STEP TO REPRODUCE: In Form view Michelle Admin create a private event with attendee not inlcude him, then he forgot that he need to attend that too but no 'Edit' button appear in calendar popover. * REASON: In order to display the Edit button for private event , user need to be in attendees list * SOLUTION: This commit fix that by allow organizer to do the same thing , can edit and delete the event 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#189840
Versions -------- - 16.0+ Steps ----- 1. Activate a second language; 2. create a new quotation template; 3. add a note & save change; 4. add a translation for the note & save change; 5. create a new sales order; 6. select the created quotation template; 7. set customer to a partner using the second language. Issue ----- The note is still displayed in English. Cause ----- The translation is saved on the `sale.order.template.line` model, so it has to get fetched from there.
Original PR description
Versions -------- - 16.0+ Steps ----- 1. Activate a second language; 2. create a new quotation template; 3. add a note & save change; 4. add a translation for the note & save change; 5. create a new sales order; 6. select the created quotation template; 7. set customer to a partner using the second language. Issue ----- The note is still displayed in English. Cause ----- The translation is saved on the `sale.order.template.line` model, so it has to get fetched from there. Currently there is no logic in place to do this when changing the customer. Solution -------- Add an `onchange` method which reloads the template if no lines were added or removed. opw-4260006 Forward-Port-Of: odoo/odoo#188038
### Steps to reproduce: - Enable Multi-Steps Routes in the settings - Inventory > Configuration > Warehouse Management > Locations - Pick any location - With studio add the one2Many field `Store to sublocation` (`location_out_id` of `stock.putaway.rule`) > Close studio - Try to add a line on the associated list #### > Traceback ### Cause of the issue: Adding a line will trigger an onchange of the`stock.putaway.rule` model in order to compute the default data of the new subrecord. H
Original PR description
### Steps to reproduce: - Enable Multi-Steps Routes in the settings - Inventory > Configuration > Warehouse Management > Locations - Pick any location - With studio add the one2Many field `Store to…
### Steps to reproduce: - Enable Multi-Steps Routes in the settings - Inventory > Configuration > Warehouse Management > Locations - Pick any location - With studio add the one2Many field `Store to sublocation` (`location_out_id` of `stock.putaway.rule`) > Close studio - Try to add a line on the associated list #### > Traceback ### Cause of the issue: Adding a line will trigger an onchange of the`stock.putaway.rule` model in order to compute the default data of the new subrecord. However, the code will crash during the `_search_count` of the `_onchange_location_in` because of an invalid domain: https://github.com/odoo/odoo/blob/29939aa5fb1455af89a37293d2f76541ff1645ef/addons/stock/models/product_strategy.py#L80-L88 THis crashed since in our case the `location_out_id` will be a new record created during the onchange to represent the 'stock.location' and from which we are looking at the form. As such, a NewId will be given and treated as an integer in the domain leading to a traceback when the db is served. ### Fix: Onchange method should be robust with respect to the usage of New records and hence the records used here should be replace by their origin if it even exists. opw-4126731 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#188053
The issue: Starting with version 17.4, the Odoo banner displaying the invoice name on original bills is only added if the attached PDF uses US Letter paper size and is oriented vertically. How to reproduce the issue: -Upload any invoice with a non-standard format -Print -> Original Bills Explanation: Since saas-17.4, the PyPDF2 library version was upgraded from 1.26.0 to 2.12.1. In version 1.26.0, the canvas dimensions were automatically adjusted when merging with non-standard page siz
Original PR description
The issue: Starting with version 17.4, the Odoo banner displaying the invoice name on original bills is only added if the attached PDF uses US Letter paper size and is oriented vertically. How to reproduce the issue: -Upload any invoice with a non-standard format -Print -> Original Bills Explanation: Since saas-17.4, the PyPDF2 library version was upgraded from 1.26.0 to 2.12.1. In version 1.26.0, the canvas dimensions were automatically adjusted when merging with non-standard page sizes. However, in version 2.12.1, this behavior no longer occurs, resulting in the banner not appearing correctly on non-standard formats. opw-4278031 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#186947
Before this commit, when a time off request based on extra hours was set to draft, a new overtime record with negative duration was created. This commit makes sure that the record is only created when the time off request is in the state confirm or validate. task-4096548 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#185962
Original PR description
Before this commit, when a time off request based on extra hours was set to draft, a new overtime record with negative duration was created. This commit makes sure that the record is only created when the time off request is in the state confirm or validate. task-4096548 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#185962