Thursday, June 27, 2024
39 changes · saas-17.3
Resolved issues and error corrections
This change corrects an automated test for the Belgian payroll accounting area so it matches the current user interface flow. It helps keep quality checks reliable and reduces false test failures during development.
Code cleanup and technical improvements
This update reorganizes internal loyalty data used by the Point of Sale system to prevent naming conflicts with standard Odoo fields. It makes the loyalty code easier to maintain and reduces the risk of future issues, without changing cashier or customer-facing behavior.
Original PR description
This commit prefixes local fields with underscore in order to avoid conflicts with Odoo fields. This allow us to easily identify local fields.
Miscellaneous changes
In Switzerland's demo data, the BIC is from a Belgian bank which is wrong. Removing BIC in this case as it's useless. task-3961609 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#170798 Forward-Port-Of: odoo/odoo#167726
Original PR description
In Switzerland's demo data, the BIC is from a Belgian bank which is wrong. Removing BIC in this case as it's useless. task-3961609 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#170798 Forward-Port-Of: odoo/odoo#167726
This commit aims to convert QUnit tests which rely on mail/test_utils to hoot. Part of task-3818666 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#166171
Original PR description
This commit aims to convert QUnit tests which rely on mail/test_utils to hoot. Part of task-3818666 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#166171
The keyboard shortcut for the `Check Sending` action was the same as the one used to create a new record. Ticket [link](https://www.odoo.com/web#model=project.task&id=3970056) opw-3970056 Forward-Port-Of: odoo/odoo#168160
Original PR description
The keyboard shortcut for the `Check Sending` action was the same as the one used to create a new record. Ticket [link](https://www.odoo.com/web#model=project.task&id=3970056) opw-3970056 Forward-Port-Of: odoo/odoo#168160
Problem --- After shipping them to customers, lots do not appear in the `Inventory > Products > Lots/Serial Number` view Steps --- * enable stock locations in setting * create a product tracked by unique serial * make an inventory adjustment so we have at least 1 of it * create sale order for this product, confirm it * go to corresponding delivery, validate it * go to `Inventory > Products > Lots/Serial Number` => the lot is not there opw-3969556 Forward-Port-Of: odoo/odoo#169059
Original PR description
Problem --- After shipping them to customers, lots do not appear in the `Inventory > Products > Lots/Serial Number` view Steps --- * enable stock locations in setting * create a product tracked by unique serial * make an inventory adjustment so we have at least 1 of it * create sale order for this product, confirm it * go to corresponding delivery, validate it * go to `Inventory > Products > Lots/Serial Number` => the lot is not there opw-3969556 Forward-Port-Of: odoo/odoo#169059
The user can select between `kanban` and `default` views in `pos_restaurant`. When a selection is made, it should be kept, which is not the case now. Each time the `FloorScreen` is rerendered, the choice is lost. This commit fixes the issue. Task: 3999451 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#170666 Forward-Port-Of: odoo/odoo#169962
Original PR description
The user can select between `kanban` and `default` views in `pos_restaurant`. When a selection is made, it should be kept, which is not the case now. Each time the `FloorScreen` is rerendered, the choice is lost. This commit fixes the issue. Task: 3999451 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#170666 Forward-Port-Of: odoo/odoo#169962
**Cause:** In version 17.0, new fields (repeat_unit, repeat_type, repeat_until) [ref](https://github.com/odoo/odoo/blob/d7cfef9c51461a595f3f46c7b91e5c56241d4af3/addons/maintenance/models/maintenance.py#L265) were introduced in the maintenance module. These fields are set as required in the view 'maintenance.hr_equipment_request_view_form', but they are only visible if the request is a recurrent maintenance request, which causes a validation error when changing the status. **Solution:** Change
Original PR description
**Cause:** In version 17.0, new fields (repeat_unit, repeat_type, repeat_until)…
**Cause:** In version 17.0, new fields (repeat_unit, repeat_type, repeat_until) [ref](https://github.com/odoo/odoo/blob/d7cfef9c51461a595f3f46c7b91e5c56241d4af3/addons/maintenance/models/maintenance.py#L265) were introduced in the maintenance module. These fields are set as required in the view 'maintenance.hr_equipment_request_view_form', but they are only visible if the request is a recurrent maintenance request, which causes a validation error when changing the status. **Solution:** Change the required condition 'True' to recurring_maintenance == True, as the field is only visible for recurring maintenance requests. Making it required for all cases is not feasible. **Note:** This is not a bug in the general version of 17.0; it is introduced after an upgrade from version 16.0 to 17.0. for more detail: odoo/upgrade#6147 **opw-3983692** **Current behavior before PR:** when migrating from 16.0 to 17.0, getting validation error on changing the state of maintenance request  **Desired behavior after PR is merged:** able to change the state of maintenance request  --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#169169
**[IMP] website: match navbar toggler color to overlay header text color** Before this commit, the navbar hamburger button didn't have the same color as the text color defined for the "Over The Content" header, which led to situations where it wasn't visible. Steps to reproduce: - Go to the website edit mode. - Click on the header and choose "Over The Content" for the "Header Position" option. - Use the color picker to set the "Text Color" option to white. - Drag and drop a "Text-
Original PR description
**[IMP] website: match navbar toggler color to overlay header text color** Before this commit, the navbar hamburger button didn't have the same color as the text color defined for the "Over The…
**[IMP] website: match navbar toggler color to overlay header text color** Before this commit, the navbar hamburger button didn't have the same color as the text color defined for the "Over The Content" header, which led to situations where it wasn't visible. Steps to reproduce: - Go to the website edit mode. - Click on the header and choose "Over The Content" for the "Header Position" option. - Use the color picker to set the "Text Color" option to white. - Drag and drop a "Text-Image" snippet onto the page. - Apply a dark background color to the "Text-Image" snippet. - Click on the "Mobile Preview" button. => The navbar hamburger button is not visible in the header. After this commit, the navbar hamburger button in the "Over The Content" header matches the color of the header's text. task-3853573 --------------------------------- **[FIX] website: hide the overlay on the mobile menu navbar toggler** Before this commit, after clicking on the mobile menu navbar toggler in Website edit mode, the blue overlay was covering the button. This commit fixes this. Indeed, this element is not editable, so there's no need for an overlay on it. task-3853573 Forward-Port-Of: odoo/odoo#170423 Forward-Port-Of: odoo/odoo#163139
With restriction imposed by Colombian EDI, the PoS is not 100% compatible and usable as such features are not adapted for such restrictions. --- Description of the issue this commit addresses: When trying to issue a credit note via the POS (refund with invoice) and the colombian EDI module is installed, a traceback shows up as it is required to have a description code on the the credit note invoice but nothing in the UI makes it possible to add such data. --- Steps to reproduce:
Original PR description
With restriction imposed by Colombian EDI, the PoS is not 100% compatible and usable as such features are not adapted for such restrictions. --- Description of the issue this commit addresses: When…
With restriction imposed by Colombian EDI, the PoS is not 100% compatible and usable as such features are not adapted for such restrictions. --- Description of the issue this commit addresses: When trying to issue a credit note via the POS (refund with invoice) and the colombian EDI module is installed, a traceback shows up as it is required to have a description code on the the credit note invoice but nothing in the UI makes it possible to add such data. --- Steps to reproduce: 1-Install l10n_co_pos and l10n_co_edi 2-Setup all the fun stuff for the edi to work (credentials, VAT, journals, ...) 3-Go in the POS and post an order 4-Now refund that order and make sure to make an invoice with that refund, post 5-An error message shows up to inform that some data is missing. --- Desired behavior after the commit is merged: This commit makes it so that when a credit note is created from the PoS, if it is linked to Colombia, the description code is set to 1 if no code is already set. --- Note on the fix: It is currently not possible to already have a description code when the invoice is created so the default could be replaced by an assignation but I figured that if we add the possibility in the future, it would be great not to override it. --- task-3977188 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#170867 Forward-Port-Of: odoo/odoo#170739
Steps to reproduce: - Create a new payment term; "days end of month on the 30" - create an invoice in may - set the newly created payment term - create a invoice line - save Issue: the due date (`maturity_date`) is 2024-06-29 Cause: Use of `relativedelta` with the singular form of `month` -> absolute value It was set to 2 so it would always give 29 -> year-02-29 and so `days_next_month = relativedelta(days=min(int(self.days_next_month), (date_end_of_month + relativedelta(mont
Original PR description
Steps to reproduce: - Create a new payment term; "days end of month on the 30" - create an invoice in may - set the newly created payment term - create a invoice line - save Issue: the due date…
Steps to reproduce: - Create a new payment term; "days end of month on the 30" - create an invoice in may - set the newly created payment term - create a invoice line - save Issue: the due date (`maturity_date`) is 2024-06-29 Cause: Use of `relativedelta` with the singular form of `month` -> absolute value It was set to 2 so it would always give 29 -> year-02-29 and so `days_next_month = relativedelta(days=min(int(self.days_next_month), (date_end_of_month + relativedelta(month=2)).day))` would always return 29 since 29 <= (29, 30, 31) ``` >>> import datetime >>> from dateutil.relativedelta import relativedelta >>> date_end_of_month datetime.datetime(2024, 5, 31, 17, 4, 14, 791820) >>> (date_end_of_month + relativedelta(month=2)) datetime.datetime(2024, 2, 29, 17, 4, 14, 791820) >>> min(31, 30, (date_end_of_month + relativedelta(month=2)).day) 29 ``` Solution: use the relative form of `relativedelta`; that is, the plural form `months` ``` >>> (date_end_of_month + relativedelta(months=1)) datetime.datetime(2024, 6, 30, 17, 4, 14, 791820) ``` source: https://dateutil.readthedocs.io/en/stable/relativedelta.html Note: Had to change the existing test on the overlapping year since ``` >>> december_date datetime.datetime(2023, 12, 12, 0, 0) >>> december_date + datetime.timedelta(days=30) datetime.datetime(2024, 1, 11, 0, 0) ``` and from date the maturity date would be 31st of January opw-3916451 Forward-Port-Of: odoo/odoo#169670 Forward-Port-Of: odoo/odoo#166560
### Steps to reproduce: - Enable Batch Transfers in the settings - Go to Inventory > Config> Warehouse Management > Operation Types - On receipts, enable "Automatic Batches" group by contact - Create and confirm a purchase order for any contact with: - 1 X storable product P1 - Create and confirm a purchase order for the same contact with: - 1 X storable product P1 - 1 x storable product P2 - Go to the assocated stock picking > change the quantity of P1 to 0 - Validate and cre
Original PR description
### Steps to reproduce: - Enable Batch Transfers in the settings - Go to Inventory > Config> Warehouse Management > Operation Types - On receipts, enable "Automatic Batches" group by contact - Create…
### Steps to reproduce: - Enable Batch Transfers in the settings - Go to Inventory > Config> Warehouse Management > Operation Types - On receipts, enable "Automatic Batches" group by contact - Create and confirm a purchase order for any contact with: - 1 X storable product P1 - Create and confirm a purchase order for the same contact with: - 1 X storable product P1 - 1 x storable product P2 - Go to the assocated stock picking > change the quantity of P1 to 0 - Validate and create a backorder #### > invalid operation: The following transfers cannot be added to batch ### Cause of the issue: When the backorder is processed, the stock picking that currently belongs to our batch is validated and a backorder is created: https://github.com/odoo/odoo/blob/f168c4ba9d64a05a4a55715c44016a15230fe706/addons/stock/models/stock_move.py#L1891-L1892 The picking associated to this backorder is then added to our batch https://github.com/odoo/odoo/blob/f168c4ba9d64a05a4a55715c44016a15230fe706/addons/stock_picking_batch/models/stock_picking.py#L160-L162 But for this action to be performed, we need to pass the sanity check verifying that the pickings associated to our batch are allowed: https://github.com/odoo/odoo/blob/f168c4ba9d64a05a4a55715c44016a15230fe706/addons/stock_picking_batch/models/stock_picking_batch.py#L282-L286 And here comes the problem, the picking that created the backorder was not yet removed from our batch but is not allowed anymore since it is now in 'done' state: https://github.com/odoo/odoo/blob/f168c4ba9d64a05a4a55715c44016a15230fe706/addons/stock_picking_batch/models/stock_picking_batch.py#L76-L77 opw-3893543 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#169308 Forward-Port-Of: odoo/odoo#163935
## Pull Request HOOT (PRHOOT) - part 17 Part 1: https://github.com/odoo/odoo/pull/152930 Part 2: https://github.com/odoo/odoo/pull/153018 Part 3: https://github.com/odoo/odoo/pull/153023 Part 4: https://github.com/odoo/odoo/pull/153203 Part 5: https://github.com/odoo/odoo/pull/153425 Part 6: https://github.com/odoo/odoo/pull/153700 Part 7: https://github.com/odoo/odoo/pull/154054 Part 8: https://github.com/odoo/odoo/pull/154579 Part 9: https://github.com/odoo/odoo/pull/155073 Part 10
Original PR description
## Pull Request HOOT (PRHOOT) - part 17 Part 1: https://github.com/odoo/odoo/pull/152930 Part 2: https://github.com/odoo/odoo/pull/153018 Part 3: https://github.com/odoo/odoo/pull/153023 Part 4:…
## Pull Request HOOT (PRHOOT) - part 17 Part 1: https://github.com/odoo/odoo/pull/152930 Part 2: https://github.com/odoo/odoo/pull/153018 Part 3: https://github.com/odoo/odoo/pull/153023 Part 4: https://github.com/odoo/odoo/pull/153203 Part 5: https://github.com/odoo/odoo/pull/153425 Part 6: https://github.com/odoo/odoo/pull/153700 Part 7: https://github.com/odoo/odoo/pull/154054 Part 8: https://github.com/odoo/odoo/pull/154579 Part 9: https://github.com/odoo/odoo/pull/155073 Part 10: https://github.com/odoo/odoo/pull/155639 Part 11: https://github.com/odoo/odoo/pull/156255 / https://github.com/odoo/enterprise/pull/58135 Part 12: https://github.com/odoo/odoo/pull/156869 Part 13: https://github.com/odoo/odoo/pull/158384 / https://github.com/odoo/enterprise/pull/59019 Part 14: https://github.com/odoo/odoo/pull/158916 Part 15: https://github.com/odoo/odoo/pull/160292 / https://github.com/odoo/enterprise/pull/59971 Part 15.5: https://github.com/odoo/odoo/pull/166463 Part 16: https://github.com/odoo/odoo/pull/166311 This pull requests brings various improvements and fixes to Hoot and the Odoo unit test ecosystem. See the different commit messages for more details. Note: these changes are made in stable to avoid having to support multiple versions of the HOOT API. As such, these changes are intended to be strictly limited to unit tests as to not put the rest of the code base at risk. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#168328
This data is possible to be modified by users. Marking it as noupdate also avoids possible errors during upgrades, as if some values get updated (eg: product.product.type) it can [trigger validation errors](https://github.com/odoo/odoo/blob/16.0/addons/stock/models/product.py#L890). --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#169882 Forward-Port-Of: odoo/odoo#169623
Original PR description
This data is possible to be modified by users. Marking it as noupdate also avoids possible errors during upgrades, as if some values get updated (eg: product.product.type) it can [trigger validation errors](https://github.com/odoo/odoo/blob/16.0/addons/stock/models/product.py#L890). --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#169882 Forward-Port-Of: odoo/odoo#169623
**Steps to reproduce:** - Install Accounting, website_sale_subscription and l10n_es_edi_facturae - Switch to a Spanish company (e.g. ES Company) - Install a payment provider (e.g. Demo) - Create a 1-year recurring service product - Go to the Shop page as a public user - Add the recurring service to the cart - Process checkout without entering a VAT number - Process payment **Issue:** An Internal server error is raised while trying to generate Facturae EDI because no VAT has been ente
Original PR description
**Steps to reproduce:** - Install Accounting, website_sale_subscription and l10n_es_edi_facturae - Switch to a Spanish company (e.g. ES Company) - Install a payment provider (e.g. Demo) - Create a…
**Steps to reproduce:** - Install Accounting, website_sale_subscription and l10n_es_edi_facturae - Switch to a Spanish company (e.g. ES Company) - Install a payment provider (e.g. Demo) - Create a 1-year recurring service product - Go to the Shop page as a public user - Add the recurring service to the cart - Process checkout without entering a VAT number - Process payment **Issue:** An Internal server error is raised while trying to generate Facturae EDI because no VAT has been entered. **Cause:** After a transaction is done for a subscription, an invoice is created and sent automatically. As "l10n_es_edi_facturae" module is installed, it tries to generate the EDI document when sending the invoice, but it fails because the partner has no VAT. **Solution:** The Facturae EDI xml is not a mandatory document. It should not block any flow when not generated manually. Just ignore any UserError from the generation of Facturae EDI when the invoice has been forced-created. opw-936227 Linked enterprise PR: https://github.com/odoo/enterprise/pull/65086 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#170144
Steps to reproduce the bug: - Go to the "/partners" page. - Click on the first partner to go to their page. - Enter "edit mode". - Drag and drop a "Dynamic products" snippet into the right column of the page. - Save the page. - Bug: the "Dynamic products" snippet is not visible on the page. The problem is not specific to the "Dynamic products" snippet. The issue occurs with all snippets. When the "website description" field is saved, all HTML attributes are removed (except the "cla
Original PR description
Steps to reproduce the bug: - Go to the "/partners" page. - Click on the first partner to go to their page. - Enter "edit mode". - Drag and drop a "Dynamic products" snippet into the right column of…
Steps to reproduce the bug: - Go to the "/partners" page. - Click on the first partner to go to their page. - Enter "edit mode". - Drag and drop a "Dynamic products" snippet into the right column of the page. - Save the page. - Bug: the "Dynamic products" snippet is not visible on the page. The problem is not specific to the "Dynamic products" snippet. The issue occurs with all snippets. When the "website description" field is saved, all HTML attributes are removed (except the "class" attribute). This causes many bugs, which vary depending on the snippets dropped into the field. This commit adds the parameter "sanitize_overridable=True" to the "website_description" field of "website_partner". It means that the description can now be properly edited as an user with enough rights, while keeping the same level of protection for other users editing this field. Still buggy, below version 15.0, for a restricted editor editing that description but should be rare. opw-3908218 Forward-Port-Of: odoo/odoo#165482
Prior to this PR, if the words inside the grid were too long (ex: german), they were overflowing under the other elements of the grid. In worst cases scenario, words may be truncated. task-3815487 **Before**  **After**  --- I confir
Original PR description
Prior to this PR, if the words inside the grid were too long (ex: german), they were overflowing under the other elements of the grid. In worst cases scenario, words may be truncated. task-3815487 **Before**  **After**  --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#158066
PURPOSE The card is simply too wide for the display in mobile view. SPECIFICATIONS - made the avatar card responsive - enabled the avatar card popover for m2x avatar user widget - close avatar card when clicking on 'send message' Task-3713375 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#170344 Forward-Port-Of: odoo/odoo#155822
Original PR description
PURPOSE The card is simply too wide for the display in mobile view. SPECIFICATIONS - made the avatar card responsive - enabled the avatar card popover for m2x avatar user widget - close avatar card when clicking on 'send message' Task-3713375 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#170344 Forward-Port-Of: odoo/odoo#155822
Methods from l10n_cl_edi has been moved from l10n_cl_edi (enterprise) as part of https://github.com/odoo/enterprise/pull/46593. This includes _l10n_cl_get_amounts and _float_repr_float_round on the account move model, as well as the method _l10n_cl_get_line_amounts on the account move line model. They can therefore be removed in this commit. The VAT section for the electronic ticket document is also being transferred in the same manner, and can thus be removed in the template here. As par
Original PR description
Methods from l10n_cl_edi has been moved from l10n_cl_edi (enterprise) as part of https://github.com/odoo/enterprise/pull/46593. This includes _l10n_cl_get_amounts and _float_repr_float_round on the…
Methods from l10n_cl_edi has been moved from l10n_cl_edi (enterprise) as part of https://github.com/odoo/enterprise/pull/46593. This includes _l10n_cl_get_amounts and _float_repr_float_round on the account move model, as well as the method _l10n_cl_get_line_amounts on the account move line model. They can therefore be removed in this commit. The VAT section for the electronic ticket document is also being transferred in the same manner, and can thus be removed in the template here. As part of the same refactor, methods _l10n_cl_get_invoice_totals_for_report and _l10n_cl_prices_and_taxes had been deprecated, and additionally there is a new exclusive qweb totals widget for chilean invoices. This will allow showing in PDF reports, invoices that had been generated in a foreign currencies or in UF index. X-original-commit: 7d22eaaf135e20b5c94e8419b8b6418483f1a139 [FIX] l10n_cl: replace t-esc with t-out (cherry picked from commit 27f592e49b381cf3344b808db8358c677a528489) 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#164062 Forward-Port-Of: odoo/odoo#162147
## Issue: - When purchasing consecutive appointments on the website using eWallet, an error occurs: "It is forbidden to modify a sales order which is not in draft status." ## Steps To Reproduce: - Create an eWallet program and generate a coupon for the test user. - On the eCommerce site, navigate to the "Appointments" tab. - Select a paid appointment and pay using eWallet credit. - After completing the payment, return to the "Appointments" tab. - Repeat the same steps to purchase anothe
Original PR description
## Issue: - When purchasing consecutive appointments on the website using eWallet, an error occurs: "It is forbidden to modify a sales order which is not in draft status." ## Steps To Reproduce: -…
## Issue: - When purchasing consecutive appointments on the website using eWallet, an error occurs: "It is forbidden to modify a sales order which is not in draft status." ## Steps To Reproduce: - Create an eWallet program and generate a coupon for the test user. - On the eCommerce site, navigate to the "Appointments" tab. - Select a paid appointment and pay using eWallet credit. - After completing the payment, return to the "Appointments" tab. - Repeat the same steps to purchase another appointment. - Encounter the error: "It is forbidden to modify a sales order which is not in draft status." ## Solution: - In `shop_payment_validate`, when an order is fully paid using a discount or eWallet, the eCommerce website context are not cleared. - To fix this, call the `sale_reset` method before redirecting to the SO page. opw-3885533 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#170034 Forward-Port-Of: odoo/odoo#167133
Before commit: To reproduce the error: A device may send non-JSON data to the IoT controller, or the CDN might return an error in a non-JSON format. We just get a very non-explicit error: "Expecting value: line 1 column 1 (char 0)". After commit: We add a catch for non-JSON data and log the error along with the incorrect data to have more information. opw-3876631 Forward-Port-Of: odoo/odoo#170132 Forward-Port-Of: odoo/odoo#169938
Original PR description
Before commit: To reproduce the error: A device may send non-JSON data to the IoT controller, or the CDN might return an error in a non-JSON format. We just get a very non-explicit error: "Expecting value: line 1 column 1 (char 0)". After commit: We add a catch for non-JSON data and log the error along with the incorrect data to have more information. opw-3876631 Forward-Port-Of: odoo/odoo#170132 Forward-Port-Of: odoo/odoo#169938
PURPOSE One-click unsubscribe headers are becoming required in order to avoid having marketing emails being qualified as spam. This change adds those headers in various modules: digest (backport of changes done for v17), mailing lists (mail_group module) and improve unsubscribe in mass mailing by supporting one-click unsubscribe (as current portal page is not one-click available). Modules * mass mailing * digest * mail group SUMMARY To ease the way people can unsubscribe from
Original PR description
PURPOSE One-click unsubscribe headers are becoming required in order to avoid having marketing emails being qualified as spam. This change adds those headers in various modules: digest (backport of…
PURPOSE One-click unsubscribe headers are becoming required in order to avoid having marketing emails being qualified as spam. This change adds those headers in various modules: digest (backport of changes done for v17), mailing lists (mail_group module) and improve unsubscribe in mass mailing by supporting one-click unsubscribe (as current portal page is not one-click available). Modules * mass mailing * digest * mail group SUMMARY To ease the way people can unsubscribe from a digest, we have followed the advice of RFC8058 by adding the following header to the email: * List-Unsubscribe: unsubscribe route; * List-Unsubscribe-Post: List-Unsubscribe=One-Click The unsubscribe route * must work with the POST method but not the GET. The GET version is disabled to avoid unintended unsubscrbe that could be triggered by an anti-spam accessing the URLs in the headers. Email readers are supposed to do POST requests as described in the RFC; * must unsubscribe the user without any additional steps (one click) * should contain an opaque identifier hard-to-forge to identify the list and the user (our token fulfills that goal). The goal is to avoid that someone is allowed to unregister someone else easily. * must fulfill other conditions like no cookie, no redirection, ... hence those routes return a 200 status. MISC Also fix various issues in digest, notably improve tone down computation and fix issues when computing the new timespan. Task-3741195 (Digest: Make It Quality Spam) Task-3717213 (Mail: Ensure Unsubscribe Headers) Task-3741203 (Digest: Investigate tone down / reminder) Forward-Port-Of: odoo/odoo#170825 Forward-Port-Of: odoo/odoo#153864
Update legacy tests importing mail/test_utils.js to use HOOT instead of Qunit. Task-3818666 Forward-Port-Of: odoo/odoo#164023
Original PR description
Update legacy tests importing mail/test_utils.js to use HOOT instead of Qunit. Task-3818666 Forward-Port-Of: odoo/odoo#164023
Before this commit, when is_gcc_country was false, a colon followed by a number would appear in the receipt, which was confusing. This commit removes this misleading information for receipts in non-GCC countries. opw-3992612 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#170620
Original PR description
Before this commit, when is_gcc_country was false, a colon followed by a number would appear in the receipt, which was confusing. This commit removes this misleading information for receipts in non-GCC countries. opw-3992612 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#170620
### Steps to reproduce: - Create a product SP tracked by lots - Click on "on hand" and create a lot with 10 units on hand - Create and validate picking for 1 x any other product - Unlock the delivery - Add a line (stock move) for 1 x SP - Click on the list icon of the line and set your lot - Save the picking - Go to the on hand quantity of SP #### > 1 unit was reserved even though the move is 'done' ### Cause of the issue: Creating the stock move line associating the lot to th
Original PR description
### Steps to reproduce: - Create a product SP tracked by lots - Click on "on hand" and create a lot with 10 units on hand - Create and validate picking for 1 x any other product - Unlock the delivery…
### Steps to reproduce: - Create a product SP tracked by lots - Click on "on hand" and create a lot with 10 units on hand - Create and validate picking for 1 x any other product - Unlock the delivery - Add a line (stock move) for 1 x SP - Click on the list icon of the line and set your lot - Save the picking - Go to the on hand quantity of SP #### > 1 unit was reserved even though the move is 'done' ### Cause of the issue: Creating the stock move line associating the lot to the stock move will update the reserved quantity of stock quants independently of the state of the move created: https://github.com/odoo/odoo/blob/347c7e21002313da155ebf872853078de23b38fe/addons/stock/models/stock_move_line.py#L337-L343 https://github.com/odoo/odoo/blob/347c7e21002313da155ebf872853078de23b38fe/addons/stock/models/stock_move.py#L1525-L1528 opw-3906472 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#170561 Forward-Port-Of: odoo/odoo#166186
Issue ---- Phone number can span two lines with some fonts for reports that use the contact widget (e.g. Delivery Slip). Steps ----- - Use Raleway font. You can do this by going to Settings -> Configure Document Layout (under Companies) -> Choose Raleway. - Change the phone number of the current company to `+33 3 28 44 55 01`. - Create a delivery (without lines) and print a Delivery Slip without validating. - The phone number spans two lines. Cause ----- When the phone numbe
Original PR description
Issue ---- Phone number can span two lines with some fonts for reports that use the contact widget (e.g. Delivery Slip). Steps ----- - Use Raleway font. You can do this by going to Settings -> Configure Document Layout (under Companies) -> Choose Raleway. - Change the phone number of the current company to `+33 3 28 44 55 01`. - Create a delivery (without lines) and print a Delivery Slip without validating. - The phone number spans two lines. Cause ----- When the phone number is long and takes up space in some fonts, the phone number is line-wrapped, which is ok for other text but not for phone numbers. opw-3834061 Forward-Port-Of: odoo/odoo#169884 Forward-Port-Of: odoo/odoo#166336
Since Python 3.12 a deprecation warning is emitted when testing the truth value of an xml etree element. See: https://docs.python.org/3.12/whatsnew/3.12.html#deprecated Forward-Port-Of: odoo/enterprise#63585
Original PR description
Since Python 3.12 a deprecation warning is emitted when testing the truth value of an xml etree element. See: https://docs.python.org/3.12/whatsnew/3.12.html#deprecated Forward-Port-Of: odoo/enterprise#63585
[FIX] appointments: precision issue in appointment durations Representing duration given in HH:MM as fractions of an hour (i.e. as float) causes precision issues. Added comparia [Reproduce] - Install website_appointment - Open an appointment, modify "Appointment Duration" to 1:50 - Open preview for the appointment, try scheduling a slot - BUG: 404 opw-3914117 Forward-Port-Of: odoo/enterprise#65424 Forward-Port-Of: odoo/enterprise#63335
Original PR description
[FIX] appointments: precision issue in appointment durations Representing duration given in HH:MM as fractions of an hour (i.e. as float) causes precision issues. Added comparia [Reproduce] - Install website_appointment - Open an appointment, modify "Appointment Duration" to 1:50 - Open preview for the appointment, try scheduling a slot - BUG: 404 opw-3914117 Forward-Port-Of: odoo/enterprise#65424 Forward-Port-Of: odoo/enterprise#63335
The issue: Our code generally assumes that strings are uppercase, which is typically true. However, in some cases, such as the one described in this ticket, the input string is only capitalized (the first character in uppercase). The Fix: convert the keys to uppercase before retrieving their values from the array, and use the get method instead of the bracket notation for safer access. opw-3979945 Forward-Port-Of: odoo/enterprise#64887
Original PR description
The issue: Our code generally assumes that strings are uppercase, which is typically true. However, in some cases, such as the one described in this ticket, the input string is only capitalized (the first character in uppercase). The Fix: convert the keys to uppercase before retrieving their values from the array, and use the get method instead of the bracket notation for safer access. opw-3979945 Forward-Port-Of: odoo/enterprise#64887
**Steps to reproduce:** - Install Accounting and l10n_pe_edi - Switch to a Peruvian company (e.g. PE Company) - In Accounting settings, select "SUNAT" as Signature Provider and activate "QR Codes" option - Create an invoice for a Peruvian contact - Sent the invoice to Peru UBL 2.1 - Generate the invoice via "Send & Print" button **Issue:** The QR code doesn't appear on the invoice. **Cause:** There's a condition on the parent element of the QR element that checks if "spot" is defin
Original PR description
**Steps to reproduce:** - Install Accounting and l10n_pe_edi - Switch to a Peruvian company (e.g. PE Company) - In Accounting settings, select "SUNAT" as Signature Provider and activate "QR Codes" option - Create an invoice for a Peruvian contact - Sent the invoice to Peru UBL 2.1 - Generate the invoice via "Send & Print" button **Issue:** The QR code doesn't appear on the invoice. **Cause:** There's a condition on the parent element of the QR element that checks if "spot" is defined. **Solution:** The display of the QR code should be independent of the "spot" variable. opw-3990721 Forward-Port-Of: odoo/enterprise#65307
Steps to reproduce: ------------------- - Install `Documents` and `Inventory` (for test purpose) modules - Go to Settings and enable `Centralize files attached to products` - Go to Inventory > Products > Choose any product - Add an attachment to the Product - Go to Documents, then select the `Products` workspace - Select document related to product just uploaded - `Replace` the attachment with a new one (old one should be added to `History`) Issue: ------ The new attachment, and
Original PR description
Steps to reproduce: ------------------- - Install `Documents` and `Inventory` (for test purpose) modules - Go to Settings and enable `Centralize files attached to products` - Go to Inventory > Products > Choose any product - Add an attachment to the Product - Go to Documents, then select the `Products` workspace - Select document related to product just uploaded - `Replace` the attachment with a new one (old one should be added to `History`) Issue: ------ The new attachment, and therefore the document, is not related to the product anymore. Cause: ------ When uploading a new attachment, we link the attachment to the document, and we don't keep the related record. Solution: --------- Keep the related record on the new attachment and remove it from the old attachment to not have all versions of the attachments displayed on the attachments of the products. opw-3932497 Forward-Port-Of: odoo/enterprise#64530
**Issue:** When a transaction is done for a subscription, we force the creation and sending of an invoice. However, depending on the localization of the company, many additional processes can be performed when generating/sending an invoice, like the generation/sending of an EDI document. In these cases, we may want to distinguish these forced creations from the manual ones as the treament of the invoice could differ depending on the case. opw-3936227 Linked community PR: https://git
Original PR description
**Issue:** When a transaction is done for a subscription, we force the creation and sending of an invoice. However, depending on the localization of the company, many additional processes can be performed when generating/sending an invoice, like the generation/sending of an EDI document. In these cases, we may want to distinguish these forced creations from the manual ones as the treament of the invoice could differ depending on the case. opw-3936227 Linked community PR: https://github.com/odoo/odoo/pull/170144 Forward-Port-Of: odoo/enterprise#65086
Prior to this PR, the padding (introduced in commit b857e39666a1f3decf67aab48c3629f2d9723d17) of `o_form_nosheet` was triggered globally if barcode was installed. It causes issues in other places (like `account_accountant` reconciliation). task-3951200 --- | Before | After | |--------|--------| |  |  of `o_form_nosheet` was triggered globally if barcode was installed. It causes issues in other places (like `account_accountant` reconciliation). task-3951200 --- | Before | After | |--------|--------| |  |  | Forward-Port-Of: odoo/enterprise#63271
Forward-Port-Of: odoo/enterprise#65413
Original PR description
Forward-Port-Of: odoo/enterprise#65413
Forward-Port-Of: odoo/enterprise#65430 Forward-Port-Of: odoo/enterprise#65399
Original PR description
Forward-Port-Of: odoo/enterprise#65430 Forward-Port-Of: odoo/enterprise#65399
This will add a rule for the "Crédit d'impôt salaire social minimum" to the Luxembourg loca. Task: 3970762 Forward-Port-Of: odoo/enterprise#65323 Forward-Port-Of: odoo/enterprise#64257
Original PR description
This will add a rule for the "Crédit d'impôt salaire social minimum" to the Luxembourg loca. Task: 3970762 Forward-Port-Of: odoo/enterprise#65323 Forward-Port-Of: odoo/enterprise#64257
Methods from l10n_cl_edi are being moved to l10n_cl as part of https://github.com/odoo/odoo/pull/133695. This includes _l10n_cl_get_amounts and _float_repr_float_round on the account move model, as well as the method _l10n_cl_get_line_amounts on the account move line model. They can therefore be removed in this commit. The VAT section for the electronic ticket document is also being transferred in the same manner, and can thus be removed in the template here. This will allow to show the PD
Original PR description
Methods from l10n_cl_edi are being moved to l10n_cl as part of https://github.com/odoo/odoo/pull/133695. This includes _l10n_cl_get_amounts and _float_repr_float_round on the account move model, as well as the method _l10n_cl_get_line_amounts on the account move line model. They can therefore be removed in this commit. The VAT section for the electronic ticket document is also being transferred in the same manner, and can thus be removed in the template here. This will allow to show the PDFs of invoices generated in other currency in a correct way. X-original-commit: 135a9bee298fe77217548d2fe86ae2558878e5b7 (cherry picked from commit 6ac7ebd00f0e63d4927e05f85ee45b96c7def4e3) Forward-Port-Of: odoo/enterprise#61796 Forward-Port-Of: odoo/enterprise#60890
When exporting tax report to xml, a comment tag is added in the xml even when empty or set to False. Per https://finances.belgium.be/fr/E-services/Intervat/comment-utiliser-intervat/deposer-declaration-periodique#q5 tags cannot be empty Steps to reproduce: 1.In a belgian company > accounting > Reporting > Tax Report 2.Export in xml 3.Do not fill information in the pop up > Export XML 4.Notice how the <comment> tag is present yet empty cause: comment is being added to the xml format
Original PR description
When exporting tax report to xml, a comment tag is added in the xml even when empty or set to False. Per https://finances.belgium.be/fr/E-services/Intervat/comment-utiliser-intervat/deposer-declaration-periodique#q5 tags cannot be empty Steps to reproduce: 1.In a belgian company > accounting > Reporting > Tax Report 2.Export in xml 3.Do not fill information in the pop up > Export XML 4.Notice how the <comment> tag is present yet empty cause: comment is being added to the xml formatting even when empty Solution: add comment when not empty opw-3980954 Forward-Port-Of: odoo/enterprise#64798
**Steps to reproduce:** - Install Accounting, Sales and account_avatax_sale - Configure AvaTax in Accounting settings - Create a product with an AvaTax Category (e.g. [D00000000] Digital goods) - Create a SO: * Customer: [US customer] (e.g. Azure Interior) * Product: [the created product] * Unit Price: [any] (e.g. $ 200.00) * Fiscal Position (Other Info tab): Automatic Tax Mapping (AvaTax) - Confirm the SO => The taxes will be recomputed with AvaTax (e.g. $ 20.50) - Create a d
Original PR description
**Steps to reproduce:** - Install Accounting, Sales and account_avatax_sale - Configure AvaTax in Accounting settings - Create a product with an AvaTax Category (e.g. [D00000000] Digital goods) -…
**Steps to reproduce:** - Install Accounting, Sales and account_avatax_sale - Configure AvaTax in Accounting settings - Create a product with an AvaTax Category (e.g. [D00000000] Digital goods) - Create a SO: * Customer: [US customer] (e.g. Azure Interior) * Product: [the created product] * Unit Price: [any] (e.g. $ 200.00) * Fiscal Position (Other Info tab): Automatic Tax Mapping (AvaTax) - Confirm the SO => The taxes will be recomputed with AvaTax (e.g. $ 20.50) - Create a down payment from SO (via "Create Invoice" button): * Create Invoice: Down payment (percentage) * Down Payment Amount: 50% **Issues:** 1) There is no tax on the down payment 2) When confirming the down payment, AvaTax taxes are computed from the Down payment product. It should not because the Down payment product may have a different AvaTax category than the product on the SO, which may lead to different computed taxes. The taxes on the down payment should be the same than the ones on the SO. **Cause:** 1) In "sale_external_tax" module, the "tax_ids" field is removed when preparing the invoice line (in "_prepare_invoice_line" method). Even though "account_avatax_sale" module depends on "sale_external_tax", we want to keep "tax_ids" when using AvaTax. **Solution:** 1) Create a method checking if taxes should be removed in "sale_external_tax" and override it in "account_avatax_sale" module to keep them. 2) Exclude down payments from external taxes recomputation. opw-3971513 Forward-Port-Of: odoo/enterprise#64900