Thursday, June 27, 2024
79 changes · saas-17.2
Enhancements to existing features
The bank account validation module’s automated tests were updated to use Odoo’s newer testing framework. This improves long-term maintainability and reliability for future changes without affecting day-to-day user workflows.
Original PR description
Update legacy tests importing mail/test_utils.js to use HOOT instead of Qunit. Task-3818666
Resolved issues and error corrections
Some automated checks for the Gantt view were unreliable on mobile because a scrollbar appeared after recent styling changes. This update skips the affected mobile-only tests, helping keep validation stable without changing the user-facing Gantt experience.
Original PR description
Since this PR [1], views mounted in tests get the correct styles but a scrollbar is added with gantt in mobile and thus causes issues in some gantt tests. This commit skips these tests. [1]: https://github.com/odoo/odoo/pull/169030
Code cleanup and technical improvements
The HR Time Off module’s automated tests were updated to use a newer testing approach. This is an internal maintenance change that helps keep quality checks reliable without changing how users request or manage time off.
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
Miscellaneous changes
Duplicate emails were being sent out to employees because employees were being searched from user ids for each company, but each search was not filtered by the company. So if there was a user that had multiple employee records, all of their employee records on every company would be pulled up for every company on their database that had timesheet notifications on. For example if there were 4 companies and the employee had an employee record for each of them they would receive 16 emails in total.
Original PR description
Duplicate emails were being sent out to employees because employees were being searched from user ids for each company, but each search was not filtered by the company. So if there was a user that had multiple employee records, all of their employee records on every company would be pulled up for every company on their database that had timesheet notifications on. For example if there were 4 companies and the employee had an employee record for each of them they would receive 16 emails in total. 4 for each employee record. Adding to the search domain to only look for employees on the current company defined by the for loop avoids these duplicate emails. This is similar to a fix that was done on the manager notification emails here: https://github.com/odoo/enterprise/pull/52808 opw-3748426 Forward-Port-Of: odoo/enterprise#64291
Reloading a Knowledge article page now keeps the navigation bar visible. This makes it easier for users to continue browsing and managing Knowledge content without losing navigation controls.
Original PR description
This commit fixes an issue with the Knowledge form view that loses its navbar when you reload an article's page. This issue is caused by the lack of a path inside the ir.actions.server `ir_actions_server_knowledge_home_page` which is the action called when opening the app. This field was set on the action calling the form view `knowledge_article_action_form` but it's not the one called when refreshing the browser. task-3874849
This fixes an issue with generating or extracting Excel files in the Belgian payroll area. It helps ensure payroll-related spreadsheet exports work reliably for users who need them for review or reporting.
This update fixes several internal test helpers used by Odoo's web module, making automated tests better reflect real user screens and behavior. It improves confidence that calendar views, date-time validation, relationship handling, and breadcrumb loading work correctly before changes reach users.
This fixes an error that could appear after opening a dialog from an employee record and then returning through the breadcrumb. Users can now close those dialogs and navigate back normally without seeing an “Invalid controller to restore” crash.
Original PR description
- Open the Employees app;
- Open the record of an employee, that have the onbording plan link in
the chatter (for instance Abigail Peterson in runbot);
- Click on the onbording plan;
- Close the onbording plan dialog;
- Click on the Employees link in the breadcrumb to came back to the
employees multi-record view;
Before this commit, a traceback was raised : `Invalid controller to
restore`. This issue occurs because when we load from a link/URL
(loadState), the controllers list is updated from the actions found in
the URL, this is done to be able to recreate the controllers (the
breadcrumb) from the URL.
This behavior is correct when the action has a target other than “new”
(i.e., when it's not a dialog). In the case of a target "new" (a dialog)
the controllers shouldn't be modified, to be able to interact with the
breadcrumb when the dialog is closed.
Now, only when the action has a target different from "new", the
controllers are updated from the URL.With an MX company Enable QR on POS ticket receipt Open POS session Make 2 orders without customer or invoice (save qr of a receipt) Close POS Session Go to Orders, select the 2 orders Click Actions > Create Global Invoice (After a few days) Open QR link and validate invoice Issue: Credit note CFDI validation will fail In this flow the system first issue a global invoice, then when a customer ask the invoice a credit note for the global invoice needs to be generated with the new invoi
Original PR description
With an MX company Enable QR on POS ticket receipt Open POS session Make 2 orders without customer or invoice (save qr of a receipt) Close POS Session Go to Orders, select the 2 orders Click Actions > Create Global Invoice (After a few days) Open QR link and validate invoice Issue: Credit note CFDI validation will fail In this flow the system first issue a global invoice, then when a customer ask the invoice a credit note for the global invoice needs to be generated with the new invoice. Currently the system uses the original pos order date as credit note date and this will fail validation if the order has been created before 72 hours ago Forward-Port-Of: odoo/enterprise#65451
[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
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
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
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
**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
The aim of this commit is to allow to declare a 281.50 for curaçao. context: issue spotted by odoo.com prod db Before the commit: `f2018_landwoonplaats` xml tag is empty After the commit: `f2018_landwoonplaats` xml tag is filled with the onss country code of netherlands. task-id: None Forward-Port-Of: odoo/enterprise#65503 Forward-Port-Of: odoo/enterprise#65466
Original PR description
The aim of this commit is to allow to declare a 281.50 for curaçao. context: issue spotted by odoo.com prod db Before the commit: `f2018_landwoonplaats` xml tag is empty After the commit: `f2018_landwoonplaats` xml tag is filled with the onss country code of netherlands. task-id: None Forward-Port-Of: odoo/enterprise#65503 Forward-Port-Of: odoo/enterprise#65466
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 `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
Before this commit, the "Consumidor Final Anónimo" partner could be missing due to the limited partner loading mechanism. This commit ensures that the "Consumidor Final Anónimo" partner is always loaded, regardless of the partner loading limitations. opw-3988187 Forward-Port-Of: odoo/enterprise#65296
Original PR description
Before this commit, the "Consumidor Final Anónimo" partner could be missing due to the limited partner loading mechanism. This commit ensures that the "Consumidor Final Anónimo" partner is always loaded, regardless of the partner loading limitations. opw-3988187 Forward-Port-Of: odoo/enterprise#65296
Steps: - Install the project - Enable Budget management from settings - Create project - Click on set status button inside your project - Create budget Issue: - If budget is not used for expenditure then instead of showing 0% , it displays -0% which is incorrect. Cause: - float value of 'cost' i.e. 0.0 leads to generation of negative value Fix: - Issue is been fixed by applying condition if cost equals 0.0 task-3744319 Forward-Port-Of: odoo/enterprise#65461 Forward-Port-Of
Original PR description
Steps: - Install the project - Enable Budget management from settings - Create project - Click on set status button inside your project - Create budget Issue: - If budget is not used for expenditure then instead of showing 0% , it displays -0% which is incorrect. Cause: - float value of 'cost' i.e. 0.0 leads to generation of negative value Fix: - Issue is been fixed by applying condition if cost equals 0.0 task-3744319 Forward-Port-Of: odoo/enterprise#65461 Forward-Port-Of: odoo/enterprise#56998
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
Issue ---- When a rental field like (e.g. `rental_start_date`) is changed in a sales order, its lines' description is recomputed. This makes sense for rental order lines as the description depends on these fields, but it messes with non-rental orders and non-rental order lines in rental orders when the Rental app is installed, so all descriptions get overwritten. Steps ----- - Install the rental app. - Create a new Quotation Template with whose line has a description that is differen
Original PR description
Issue ---- When a rental field like (e.g. `rental_start_date`) is changed in a sales order, its lines' description is recomputed. This makes sense for rental order lines as the description depends on these fields, but it messes with non-rental orders and non-rental order lines in rental orders when the Rental app is installed, so all descriptions get overwritten. Steps ----- - Install the rental app. - Create a new Quotation Template with whose line has a description that is different from the product name. - Create a new Quotation from the template. - The description gets overwritten. You can also reproduce this with creating a new rental order, then adding non-rental products with custom description. If you change the start date / end date the custom descriptions get overwritten. opw-3987175 Forward-Port-Of: odoo/enterprise#64675
Steps to reproduce: - Create a QC with measure on quantity (move_lines) - Create a reciept and set move_line quantity to 0 - Validate and create a backorder - No QC on the backorder Bug: when create the backorder the sml is created first on the original picking and then it's picking_id is updated measure on quantity QCs are created at this time the QCs that are on the move_line should first be moved to the backorder before deleting the pending QCs on the original picking opw-3996782
Original PR description
Steps to reproduce: - Create a QC with measure on quantity (move_lines) - Create a reciept and set move_line quantity to 0 - Validate and create a backorder - No QC on the backorder Bug: when create the backorder the sml is created first on the original picking and then it's picking_id is updated measure on quantity QCs are created at this time the QCs that are on the move_line should first be moved to the backorder before deleting the pending QCs on the original picking opw-3996782 Forward-Port-Of: odoo/enterprise#65358
This PR changes an enterprise test that failed with a community PR. Linked community PR: https://github.com/odoo/odoo/pull/166965 ### Steps to reproduce: - Create a company and a branch - Create a contact and assign him to the company created - Switch to the branch and go to the Contact app - You can't see the contact created ### Cause: A rule does not allow branches to see partners from the parent company. ### Solution: Change the rule to make partners accessible to branches. T
Original PR description
This PR changes an enterprise test that failed with a community PR. Linked community PR: https://github.com/odoo/odoo/pull/166965 ### Steps to reproduce: - Create a company and a branch - Create a contact and assign him to the company created - Switch to the branch and go to the Contact app - You can't see the contact created ### Cause: A rule does not allow branches to see partners from the parent company. ### Solution: Change the rule to make partners accessible to branches. This solution implies changing access rules defined in base to use the 'parent_of' operator. By changing it, I removed a performance improvement introduced so I needed to change performance tests counting queries to make them pass. opw-3927295 Forward-Port-Of: odoo/enterprise#63589
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
**Current behavior:** A product that is tracked via serial will have all of its lots displayed in the Schedule gantt view instead of just the ones which are part of the order. **Expected behavior:** Only the lots corresponding to rented quants of a product will be displayed. **Steps to reproduce:** 1. Enable `Rental Transfers` in settings 2. Create a rental order with 1 of the demo printer products (they are tracked via SN already) and confirm 3. Open the rental schedule view, see
Original PR description
**Current behavior:** A product that is tracked via serial will have all of its lots displayed in the Schedule gantt view instead of just the ones which are part of the order. **Expected behavior:**…
**Current behavior:** A product that is tracked via serial will have all of its lots displayed in the Schedule gantt view instead of just the ones which are part of the order. **Expected behavior:** Only the lots corresponding to rented quants of a product will be displayed. **Steps to reproduce:** 1. Enable `Rental Transfers` in settings 2. Create a rental order with 1 of the demo printer products (they are tracked via SN already) and confirm 3. Open the rental schedule view, see that for the new order, all of the printers in stock with a SN are displayed **Cause of the issue:** Previously, the commit 8c90c7493ec was merged to fix an issue where you could not group by serial numbers in the schedule view for orders that were created while the 'Rental Transfers' setting was enabled. This introducted this bug by not actually specifying which `lot_id`s of a product were part of an order- so it selected ALL `lot_id`s of ANY product in a rental order. **Fix:** Add a join on `StockMove` so we can select `lot_id`s which are exclusively in `StockMoveLine`s that are linked to `StockMoves` which correspond to a rental order. opw-3977685 Forward-Port-Of: odoo/enterprise#64118
This commit allows the user the password provided by IAP during the first connection. A new wizard has been added for this. task-id: 3857241 IAP: https://github.com/odoo/iap-apps/pull/790 Forward-Port-Of: odoo/enterprise#65427 Forward-Port-Of: odoo/enterprise#60645
Original PR description
This commit allows the user the password provided by IAP during the first connection. A new wizard has been added for this. task-id: 3857241 IAP: https://github.com/odoo/iap-apps/pull/790 Forward-Port-Of: odoo/enterprise#65427 Forward-Port-Of: odoo/enterprise#60645
When creating an invoice for a sales containing a recurring product, if the user doesn't have access to PoS you will have an access errorr Steps to reproduce: ------------------- * Remove PoS right from Marc Demo * Create a recurring product * Connect as Marc Demo * Create a sale with the recurring product * Try to invoice the sale > Observation: You get an access error opw-4010753 Forward-Port-Of: odoo/enterprise#65406
Original PR description
When creating an invoice for a sales containing a recurring product, if the user doesn't have access to PoS you will have an access errorr Steps to reproduce: ------------------- * Remove PoS right from Marc Demo * Create a recurring product * Connect as Marc Demo * Create a sale with the recurring product * Try to invoice the sale > Observation: You get an access error opw-4010753 Forward-Port-Of: odoo/enterprise#65406
## Changes in the pos_preparation_display/models/preparation_display_order.py: The previous code used to have low selectivity in the initial recordset returned by the search function. Then the records were filtered on their state inside the for loop which increased the number of get requests to view the order stages. This approach caused a bottleneck in the following situation: - All the records are in the done stage and will be processed to filter them out, but not viewed which takes a l
Original PR description
## Changes in the pos_preparation_display/models/preparation_display_order.py: The previous code used to have low selectivity in the initial recordset returned by the search function. Then the…
## Changes in the pos_preparation_display/models/preparation_display_order.py: The previous code used to have low selectivity in the initial recordset returned by the search function. Then the records were filtered on their state inside the for loop which increased the number of get requests to view the order stages. This approach caused a bottleneck in the following situation: - All the records are in the done stage and will be processed to filter them out, but not viewed which takes a lot of resources and no result in the end. - Some of the records are in the done stage, This would add an overhead to the processing of the function with irrelevant records to filter out the done orders. Solution: - Reduce the recordset being returned in the first place from the search function by adding filters to return only the ones in progress by running an `_read_group` function that returns the orders that do not have a completed stage in the current preparation display. This recordset is then added to the new orders that still do not have stages and are in the current preparation display as well. ## Changes in the pos_preparation_display/models/preparation_display.py: The previous code would process all the records to be in the done state even though they could be already done. This approach causes an issue in the following situation: - All the records are archived, but pressing on archive all again, processes all the records again with no benefit added. Solution: - Same as above, reduce the recordset to return the orders still in progress only. Also note that the reset was limited for 1000 records only and with the previous setup, pressing archive multiple times would result in the same processing over the same 1000 records, Which is why the limit was removed ## Benckmark | | Before| After| Orders done | Number of records |Speed up |---|----|-----|------|---------|--------- Time | 15 s | 12 s | No | 170k |1.25x Time | 6 s | 302 ms | yes| 170k |19x This speed up is because all of the records are archived and put in the done state thus not selected by the _read_group function in the first place. Under different circumstances the speed up would differ on the ratio between done and not done orders. But under the assumption that the number of orders on the display order at a single time, the speed up is considerable. ## Reference opw-3865664 Forward-Port-Of: odoo/enterprise#64669 Forward-Port-Of: odoo/enterprise#62996
Forward-Port-Of: odoo/enterprise#65413
Original PR description
Forward-Port-Of: odoo/enterprise#65413
https://github.com/odoo/enterprise/commit/f510c4098cc4696dec3fbc7d6cd3164c6fb1d6bd prevented to close a subscription if there was no invoice. Unfortulately, sale_order.order_line.invoice_lines.move_id is not always a reliabable way to check for invoices. Sme flows could replaces all the sale.order.line and therefore the link to the invoices would be lost. In that case, for subscription orders, using the subscription_id field on the account.move.line is more reliable. We use both values t
Original PR description
https://github.com/odoo/enterprise/commit/f510c4098cc4696dec3fbc7d6cd3164c6fb1d6bd prevented to close a subscription if there was no invoice. Unfortulately, sale_order.order_line.invoice_lines.move_id is not always a reliabable way to check for invoices. Sme flows could replaces all the sale.order.line and therefore the link to the invoices would be lost. In that case, for subscription orders, using the subscription_id field on the account.move.line is more reliable. We use both values to be sure. Forward-Port-Of: odoo/enterprise#65331
Versions -------- - 17.0+ Steps ----- 1. Go to Timesheets; 2. open list or kanban or list view; 3. click the START button to start a timer; 4. set a project & task; 5. stop timer. Issue ----- A record is added but hours spent remains 00:00, regardless of how much time has passed. Cause ----- 1. No timer was created on the server, because the `_setProjectTask` function that's responsible for it isn't being called when selecting a project or task. 2. From `_setProjectTask`, t
Original PR description
Versions -------- - 17.0+ Steps ----- 1. Go to Timesheets; 2. open list or kanban or list view; 3. click the START button to start a timer; 4. set a project & task; 5. stop timer. Issue ----- A…
Versions -------- - 17.0+ Steps ----- 1. Go to Timesheets; 2. open list or kanban or list view; 3. click the START button to start a timer; 4. set a project & task; 5. stop timer. Issue ----- A record is added but hours spent remains 00:00, regardless of how much time has passed. Cause ----- 1. No timer was created on the server, because the `_setProjectTask` function that's responsible for it isn't being called when selecting a project or task. 2. From `_setProjectTask`, the `onWillUpdateProps` hook wasn't getting triggered, because it's calling `load()` on `propsList` instead of `propsList.model`. 3. In `onWillUpdateProps`, the value of `timesheet.resId` wasn't getting updated because `resId` has a getter returning `config.resId`, but no setter modifying `config`. Solution -------- 1. Add a `onRecordChanged` hook. 2. Replace `propsList.load()` with `propsList.model.load()`. 3. Modify state tracking to supplant the need for changing `resId`. opw-3735463 Forward-Port-Of: odoo/enterprise#62630
This commit fixes the access error that occured while trying to rematch gstr-2b report Behaviour before this commit: When user tries to rematch the GSTR-2b Summary, an access error will be thrown that says user has no read access to the Attachments. Steps to reproduce: - Login with a user having `Accountant` group set in access rights for Account. - Install l10n_in_reports_gstr module & Switch to IN Company - Go to Accounting / Reports / GSTR Return Periods - Create new return period.
Original PR description
This commit fixes the access error that occured while trying to rematch gstr-2b report Behaviour before this commit: When user tries to rematch the GSTR-2b Summary, an access error will be thrown that says user has no read access to the Attachments. Steps to reproduce: - Login with a user having `Accountant` group set in access rights for Account. - Install l10n_in_reports_gstr module & Switch to IN Company - Go to Accounting / Reports / GSTR Return Periods - Create new return period. - Fetch GSTR-2b Summary and try to re-match. (An access error will popup)  Behaviour after this commit: The access error is no longer visible. Re-match can be done successfully. Forward-Port-Of: odoo/enterprise#64311
See commit Forward-Port-Of: odoo/enterprise#65359 Forward-Port-Of: odoo/enterprise#62470
Original PR description
See commit Forward-Port-Of: odoo/enterprise#65359 Forward-Port-Of: odoo/enterprise#62470
Current behaviour: --- Brazilian phone numbers are not managed correctly following the 2016 changes in Brazil. (Adding a 9 to mobile phone numbers) Cause of the issue: --- Phonenumbers metadata were patched to add 9 in mobile numbers, however, when E164 is selected, phone numbers aren't formatted, thus patched metadata not being applied. See format_number in phonenumbers "Early exit for E164 case" Fix: --- See community commit Adding extra tests in test_whatsapp opw-3861847
Original PR description
Current behaviour: --- Brazilian phone numbers are not managed correctly following the 2016 changes in Brazil. (Adding a 9 to mobile phone numbers) Cause of the issue: --- Phonenumbers metadata were patched to add 9 in mobile numbers, however, when E164 is selected, phone numbers aren't formatted, thus patched metadata not being applied. See format_number in phonenumbers "Early exit for E164 case" Fix: --- See community commit Adding extra tests in test_whatsapp opw-3861847 Forward-Port-Of: odoo/enterprise#65336
Steps: - Install Project - Inside project task list view, select all task - Print timesheets Issues: - Header of some tables appears double Cause: - Missing grouping container css inside table header Fix: - Proper css was added to group container inside table header task-3744319 Forward-Port-Of: odoo/odoo#154840
Original PR description
Steps: - Install Project - Inside project task list view, select all task - Print timesheets Issues: - Header of some tables appears double Cause: - Missing grouping container css inside table header Fix: - Proper css was added to group container inside table header task-3744319 Forward-Port-Of: odoo/odoo#154840
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#170333 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#170333 Forward-Port-Of: odoo/odoo#169962
Before this commit, scanning a partner's barcode did not successfully load the partner from the server, leading to functionality issues. opw-3986674 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#170493
Original PR description
Before this commit, scanning a partner's barcode did not successfully load the partner from the server, leading to functionality issues. opw-3986674 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#170493
It may happen that user will try to blacklist a number that he already unblacklisted (archived blacklist record). Before that attempt was ignored. With this commit we simply blacklist the number again (so we unarchive existing record) ### [Reproduce] - Install mass_mailing_sms - Open Blacklisted Phone Numbers (Email Marketing / Configuration / **Bla**cklisted Email Addresses) - Blacklist a number N - Unblacklist number N - Go back to Blacklisted Phone Numbers - Blacklist a number N (a
Original PR description
It may happen that user will try to blacklist a number that he already unblacklisted (archived blacklist record). Before that attempt was ignored. With this commit we simply blacklist the number again (so we unarchive existing record) ### [Reproduce] - Install mass_mailing_sms - Open Blacklisted Phone Numbers (Email Marketing / Configuration / **Bla**cklisted Email Addresses) - Blacklist a number N - Unblacklist number N - Go back to Blacklisted Phone Numbers - Blacklist a number N (again) -> BUG: no effect opw-3700268 Forward-Port-Of: odoo/odoo#170297 Forward-Port-Of: odoo/odoo#158923
Current behaviour: --- Brazilian phone numbers are not managed correctly following the 2016 changes in Brazil. (Adding a 9 to mobile phone numbers) Cause of the issue: --- Phonenumbers metadata were patched to add 9 in mobile numbers, however, when E164 is selected, phone numbers aren't formatted, thus patched metadata not being applied. See format_number in phonenumbers "Early exit for E164 case" Fix: --- Backport of: https://github.com/odoo/odoo/commit/53885e41867653ad45ca3aef5
Original PR description
Current behaviour: --- Brazilian phone numbers are not managed correctly following the 2016 changes in Brazil. (Adding a 9 to mobile phone numbers) Cause of the issue: --- Phonenumbers metadata were…
Current behaviour: --- Brazilian phone numbers are not managed correctly following the 2016 changes in Brazil. (Adding a 9 to mobile phone numbers) Cause of the issue: --- Phonenumbers metadata were patched to add 9 in mobile numbers, however, when E164 is selected, phone numbers aren't formatted, thus patched metadata not being applied. See format_number in phonenumbers "Early exit for E164 case" Fix: --- Backport of: https://github.com/odoo/odoo/commit/53885e41867653ad45ca3aef55886c280240b76a In phone_validation, before formatting, phone_parse is called, https://github.com/odoo/odoo/blob/bdfb802293d9a3eebb378a15ed65f48b7c3182b2/addons/phone_validation/tools/phone_validation.py#L72 old brazilian mobile numbers would be invalid, and raise an error. https://github.com/odoo/odoo/blob/bdfb802293d9a3eebb378a15ed65f48b7c3182b2/addons/phone_validation/tools/phone_validation.py#L51 Now if the number is invalid, we force format in international, to force apply patched metadata, before re-trying to parse. opw-3861847 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#170287 Forward-Port-Of: odoo/odoo#169134
Before this PR: The HSN code length validation was applied at the product level, causing issues in multi-company environments where the precision of HSN codes varies based on company turnover (e.g., 4-digits, 6-digits). After this PR: Moved HSN code length validation from the product to the invoice level. Introduced a non-blocking warning banner on the account.move (invoice) when the HSN code does not meet the company's precision requirements. Task Id: 3681519 Forward-Port-Of: odoo/odoo
Original PR description
Before this PR: The HSN code length validation was applied at the product level, causing issues in multi-company environments where the precision of HSN codes varies based on company turnover (e.g., 4-digits, 6-digits). After this PR: Moved HSN code length validation from the product to the invoice level. Introduced a non-blocking warning banner on the account.move (invoice) when the HSN code does not meet the company's precision requirements. Task Id: 3681519 Forward-Port-Of: odoo/odoo#152995
In 92ed88a770893f57dcceff99d9239f130aa6112d, we added a fix and tests on hr.expense & hr.expense.sheet state fields. This commit forward ports these tests as they are interesting to keep in later versions. 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#169893 Forward-Port-Of: odoo/odoo#164909
Original PR description
In 92ed88a770893f57dcceff99d9239f130aa6112d, we added a fix and tests on hr.expense & hr.expense.sheet state fields. This commit forward ports these tests as they are interesting to keep in later versions. 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#169893 Forward-Port-Of: odoo/odoo#164909
When the CRM module is installed, people can use the /lead command to create a new lead from a conversation. When using that command, the Odoo bot will log a message in the chat with a link to the newly created lead. When people click on that link, they will be redirected to the lead form view and will lose track of the conversation they have with the customer. To avoid that, we will now open a chat window of the active conversation when clicking on the internal link. People will then be able
Original PR description
When the CRM module is installed, people can use the /lead command to create a new lead from a conversation. When using that command, the Odoo bot will log a message in the chat with a link to the newly created lead. When people click on that link, they will be redirected to the lead form view and will lose track of the conversation they have with the customer. To avoid that, we will now open a chat window of the active conversation when clicking on the internal link. People will then be able to quickly answer the client from the chat window. task-3637983 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#166293 Forward-Port-Of: odoo/odoo#161265
Current behavior: --- On the website, when changing the background color to a darker color (ie: black) then starting a survey, the background color for the survey is lighter (ie: gray) Expected behavior: --- The survey colors should be the same as the website theme. Steps to reproduce: --- 1. Go to the website 2. Click on Edit > Theme 3. Change the background color to black 4. Save then go to Survey 5. Select a survey 6. Remove the background image if there is one 7. Click
Original PR description
Current behavior: --- On the website, when changing the background color to a darker color (ie: black) then starting a survey, the background color for the survey is lighter (ie: gray) Expected…
Current behavior: --- On the website, when changing the background color to a darker color (ie: black) then starting a survey, the background color for the survey is lighter (ie: gray) Expected behavior: --- The survey colors should be the same as the website theme. Steps to reproduce: --- 1. Go to the website 2. Click on Edit > Theme 3. Change the background color to black 4. Save then go to Survey 5. Select a survey 6. Remove the background image if there is one 7. Click on Test 8. Survey's background color is grey Cause of the issue: --- Introduced by https://github.com/odoo/odoo/blob/90c6e52f15277d44cbecdd5f6a70391551fb72bd/addons/survey/static/src/scss/survey_templates_form.scss#L22 A box-shadow is used to make a "translucent white overlay" Which lighten the background color if there is no image Fix: --- Only lighten the background if there is a background image opw-3834397 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#169903 Forward-Port-Of: odoo/odoo#161942
Current behavior: In the journal items of a PoS session, Debit and Credit mismatch for the bank Steps to reproduce: - Install "Point of Sale", "Accounting" apps - Create a company and set the currency to something different than USD (eg. EUR) - Set the company and go to Accounting settings and set the "Fiscal Localization" to "Configurable Chart Template" - Go back to your company settings and set again the currency (for an unknown reason, it changes back to USD) - Go to Accounting -> C
Original PR description
Current behavior: In the journal items of a PoS session, Debit and Credit mismatch for the bank Steps to reproduce: - Install "Point of Sale", "Accounting" apps - Create a company and set the…
Current behavior: In the journal items of a PoS session, Debit and Credit mismatch for the bank Steps to reproduce: - Install "Point of Sale", "Accounting" apps - Create a company and set the currency to something different than USD (eg. EUR) - Set the company and go to Accounting settings and set the "Fiscal Localization" to "Configurable Chart Template" - Go back to your company settings and set again the currency (for an unknown reason, it changes back to USD) - Go to Accounting -> Currencies -> USD -> Add a rate line and set a rate different to 1 Unit per EUR (eg. 1.2) - In Accounting, go to Journals -> Bank -> set the currency to USD -> do the same for Cash - Add a Journal named "PoS" -> set its type to "Miscellaneous" -> set the short code to "POS" -> set the currency to USD - Go to POS -> Payment Methods -> Create "Cash" -> set the journal "Cash (USD)" and the account "<some number> Account Receivable (PoS)" - Create a "Bank" payment method -> set the journal "Bank (USD)" -> Set the Outstanding Account "<some number> Outstanding Receipts" -> set the Intermediary Account "<some number> Account Receivable (PoS)" - Create a shop - In the shop settings, set the default journal to "POS(USD)" then add "Cash" and "Bank to "Payment methods" - Start a shop session and sell a product paid by bank - Close the session -> set the bank count to the price of 2 products - Go to "Order" -> "Sessions" -> last session -> "Journal Items" - The "PBNK" line doesn't have Debit and Credit equal Cause: The diff_amount used for the line calculation is in USD and not in the company currency opw-3905691 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#168731
Increased delay between every request to iot_devices. Requests were performed every 10ms, now every minute. Forward-Port-Of: odoo/odoo#170557
Original PR description
Increased delay between every request to iot_devices. Requests were performed every 10ms, now every minute. Forward-Port-Of: odoo/odoo#170557
This PR aims to fix an issue with the Facebook snippet not being dynamically responsive for mobile views. Steps to reproduce 1. Drop inner content facebook (dynamic content) anywhere 2. Go to mobile view 3. Try to scroll horizontally. As you can see, facebook iframe is overflowing Before v16, the mechanism for mobile view was different. The switch between mobile and desktop views caused snippets/pages to be re-render because a new dialog for mobile was opened every time. Starting fro
Original PR description
This PR aims to fix an issue with the Facebook snippet not being dynamically responsive for mobile views. Steps to reproduce 1. Drop inner content facebook (dynamic content) anywhere 2. Go to mobile…
This PR aims to fix an issue with the Facebook snippet not being dynamically responsive for mobile views. Steps to reproduce 1. Drop inner content facebook (dynamic content) anywhere 2. Go to mobile view 3. Try to scroll horizontally. As you can see, facebook iframe is overflowing Before v16, the mechanism for mobile view was different. The switch between mobile and desktop views caused snippets/pages to be re-render because a new dialog for mobile was opened every time. Starting from version 16, we have removed the dialog and introduced a mobile frame. As a result, the rendering now occurs only when the start function is called. Consequently, the params width does not change when we switch to mobile view.  After this PR, the snippet will be re-render every time the window resizes, ensuring that the width adjustment is responsive. This enhancement also allows parameters to be provided at the time of rendering.  Task-2736174 Forward-Port-Of: odoo/odoo#170292 Forward-Port-Of: odoo/odoo#163739
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
### [FIX] calendar: public user no attachment When public user will create an appointment, the attachments attached to the related mail template will filtered out by a `_process_attachments_for_post` method (ref.1) I happens because attachment's `res_model` is not set to `mail.compose.message`. Instead it's set to `mail.template` also `create_uid` isn't set to public user, but to the user creating the template). With this commit attachments will get copied on send with corrected `res_mode
Original PR description
### [FIX] calendar: public user no attachment When public user will create an appointment, the attachments attached to the related mail template will filtered out by a `_process_attachments_for_post`…
### [FIX] calendar: public user no attachment When public user will create an appointment, the attachments attached to the related mail template will filtered out by a `_process_attachments_for_post` method (ref.1) I happens because attachment's `res_model` is not set to `mail.compose.message`. Instead it's set to `mail.template` also `create_uid` isn't set to public user, but to the user creating the template). With this commit attachments will get copied on send with corrected `res_model`. ### [Reproduce] - Install modules: appointment,website - Add an attachment A to email templates: (in Settings/Email_Templates): - "Appointment Booked" - On Website/Appointment: book an appointment (from an incognito window) - BUG: no attachments are added to the emails (Settings/ Technical/ Email/ Emails) - no .ics attachment - no A attachment (ref.1) https://github.com/odoo/odoo/blob/312b0365e26e1578c5995d55f357b8aec14e5a5b/addons/mail/models/mail_thread.py#L2207C1-L2210 opw-[3685871](https://www.odoo.com/web#id=3685871&view_type=form&model=project.task) Forward-Port-Of: odoo/odoo#160518
Steps: - Install sale and razopay app. - Set-up razorpay provider. - Create quotation. - Pay that quotation via razorpay and save payment details. - Duplicate that quote and pay it via already saved method. Issue: - Creating duplicate token when paying via token. Cause: - Since [PR] we are creating token in odoo when razorpay give token_id in notification_data and tokenization is enabled on razorpay and in some case when we pay quote via token it return token in notification_data an
Original PR description
Steps: - Install sale and razopay app. - Set-up razorpay provider. - Create quotation. - Pay that quotation via razorpay and save payment details. - Duplicate that quote and pay it via already saved method. Issue: - Creating duplicate token when paying via token. Cause: - Since [PR] we are creating token in odoo when razorpay give token_id in notification_data and tokenization is enabled on razorpay and in some case when we pay quote via token it return token in notification_data and since we forgot to check if transaction is already connected to token or not it always create new token :( Fix: - Add condition to check if transaction is connected to token or not and only create token if transaction is not connected to token. Additionally pass entity_data in token creation method so it pass proper data when we don't find `id` in `notification_data`. [PR]: https://github.com/odoo/odoo/pull/159250 Forward-Port-Of: odoo/odoo#170370 Forward-Port-Of: odoo/odoo#170112
Purpose ======= Fix the display of the quiz comment line: - the trash icon is displayed under the line instead of next to it. - the comment input is too large and should be aligned with the answers inputs. Specification ============= The comment input is too large because the "form-control" class has a "width: 100%" style that overwrites the "width: 66.66666667%" one applied by the "col-8" class. The good fix would be to create a new parent for the input and apply the "col-8" class
Original PR description
Purpose ======= Fix the display of the quiz comment line: - the trash icon is displayed under the line instead of next to it. - the comment input is too large and should be aligned with the answers inputs. Specification ============= The comment input is too large because the "form-control" class has a "width: 100%" style that overwrites the "width: 66.66666667%" one applied by the "col-8" class. The good fix would be to create a new parent for the input and apply the "col-8" class to limit its width accordingly while still keeping the good row gutters and margins. However as changing the xml structure is not recommended in stable, the fix is to add the "col-8" on the current "row" parent and forcing the trash icon to be next to by using the "flex-nowrap" class. Task-3986982 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#169237
This commit fixes an issue introduced by https://github.com/odoo/odoo/pull/170159. forEach is not available for mapIterator on non-chromium based browser. opw-4008053 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#170702
Original PR description
This commit fixes an issue introduced by https://github.com/odoo/odoo/pull/170159. forEach is not available for mapIterator on non-chromium based browser. opw-4008053 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#170702
the fix replaces the `\xa0` with ` ` for html translated values and keeps the consistent logic as odoo/odoo#110148 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#170692
Original PR description
the fix replaces the `\xa0` with ` ` for html translated values and keeps the consistent logic as odoo/odoo#110148 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#170692
In 76d328624fecaed5167b0e4fc1210014309d59a9, the underscore methods were removed. Following this change, a traceback occurs because concat is supposed to be used on an Array. When no element is in existing tags, addedTags is null, and if there is a single tag, it is not an array but an object. In order to fix this, we format properly the addedTags to have an array, allowing the use of the concat method. Task-3527175 Forward-Port-Of: odoo/odoo#170947 Forward-Port-Of: odoo/odoo#170856
Original PR description
In 76d328624fecaed5167b0e4fc1210014309d59a9, the underscore methods were removed. Following this change, a traceback occurs because concat is supposed to be used on an Array. When no element is in existing tags, addedTags is null, and if there is a single tag, it is not an array but an object. In order to fix this, we format properly the addedTags to have an array, allowing the use of the concat method. Task-3527175 Forward-Port-Of: odoo/odoo#170947 Forward-Port-Of: odoo/odoo#170856
Steps to reproduce the issue: - Create a storable product “P1” with a BoM: - Component: Select any component - Work order: OP1: 60 minutes in workcenter “Assembly Line 1” - Go to workcenter “Assembly Line 1”: - Specific capacities: P1, capacity: 1, setup: 10 minutes - Alternative workcenter: “Assembly Line 2”: - Specific capacities: P1, capacity: 1, setup: 5 minutes - Create a manufacturing order “MO1” to produce 1 unit: - Date: May 10, 2024, 08:00:00 -
Original PR description
Steps to reproduce the issue:
- Create a storable product “P1” with a BoM:
- Component: Select any component
- Work order: OP1: 60 minutes in workcenter “Assembly Line 1”
- Go to workcenter “Assembly Line 1”:
- Specific capacities: P1, capacity: 1, setup: 10 minutes
- Alternative workcenter: “Assembly Line 2”:
- Specific capacities: P1, capacity: 1, setup: 5 minutes
- Create a manufacturing order “MO1” to produce 1 unit:
- Date: May 10, 2024, 08:00:00
- Create a manufacturing order “MO2” to produce 1 unit:
- Date: May 10, 2024, 08:00:00
Issue:
- After confirming and planning MO1, the expected duration is 70 minutes.
- After confirming and planning MO2, the expected duration is 75 minutes
instead of 65.
The setup time of workcenter Assembly Line 1 for specific product is not
reduced from the expected time.
opw-3904023
Forward-Port-Of: odoo/odoo#170353
Forward-Port-Of: odoo/odoo#165128backport of: https://github.com/odoo/odoo/pull/128821/commits/733eccd37a2f303aa8a6f894625f3ae73a6a1cc3 Steps to reproduce the bug: - Create a storable product “P1” with BoM - Operation: OP1 - Component: C1, consumed in: OP1 - Navigate to Mrp > Configuration > Operations - Select OP1 and select another BoM - return to the BoM of “P1” Problem: The BoM line for component "P1" is still linked to OP1, And a traceback when attempting to duplicate the BoM. Solution: Remove t
Original PR description
backport of: https://github.com/odoo/odoo/pull/128821/commits/733eccd37a2f303aa8a6f894625f3ae73a6a1cc3
Steps to reproduce the bug:
- Create a storable product “P1” with BoM
- Operation: OP1
- Component: C1, consumed in: OP1
- Navigate to Mrp > Configuration > Operations
- Select OP1 and select another BoM
- return to the BoM of “P1”
Problem:
The BoM line for component "P1" is still linked to OP1,
And a traceback when attempting to duplicate the BoM.
Solution:
Remove the operation from the initial BOM lines
opw-3948817
Forward-Port-Of: odoo/odoo#170265
Forward-Port-Of: odoo/odoo#166884Linked enterprise PR: https://github.com/odoo/enterprise/pull/63589 ### Steps to reproduce: - Create a company and a branch - Create a contact and assign him to the company created - Switch to the branch and go to the Contact app - You can't see the contact created ### Cause: The rule 'res.partner company' does not allow branches to see partners from the parent company. ### Solution: Change the rule to make partners accessible to branches. This solution implies changing access ru
Original PR description
Linked enterprise PR: https://github.com/odoo/enterprise/pull/63589 ### Steps to reproduce: - Create a company and a branch - Create a contact and assign him to the company created - Switch to the branch and go to the Contact app - You can't see the contact created ### Cause: The rule 'res.partner company' does not allow branches to see partners from the parent company. ### Solution: Change the rule to make partners accessible to branches. This solution implies changing access rules defined in base to use the 'parent_of' operator. By changing it, I removed a performance improvement introduced in this commit: https://github.com/odoo/odoo/commit/c18b9f44be3d666ca1e082807a2fdfc7ef2049d2. So I needed to change performance tests counting queries to make them pass. opw-3927295 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#166965
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
[IMP] l10n_pk: improve pakistan's tax structure - Restructure the tax and tax group. - Adding new taxes - Adding tax tags to all the taxes - Create two new tax report Reason: Enhance the user-experience in pakistan Task-3871597 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#170808 Forward-Port-Of: odoo/odoo#164128
Original PR description
[IMP] l10n_pk: improve pakistan's tax structure - Restructure the tax and tax group. - Adding new taxes - Adding tax tags to all the taxes - Create two new tax report Reason: Enhance the user-experience in pakistan Task-3871597 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#170808 Forward-Port-Of: odoo/odoo#164128
We assert a hardcoded string with the name of the base.partner_root data inside test_onchange_one2many_default(). Without mail this name is "System", with the mail module it becomes "OdooBot". Then the test works if we have mail installed Forward-Port-Of: odoo/odoo#170777
Original PR description
We assert a hardcoded string with the name of the base.partner_root data inside test_onchange_one2many_default(). Without mail this name is "System", with the mail module it becomes "OdooBot". Then the test works if we have mail installed Forward-Port-Of: odoo/odoo#170777
Before this commit, when images are added to an Image Wall or to an Image Gallery, they remained in their original format. After this commit, images added to an Image Wall or an Image Gallery are converted to webp. Thanks to [1], the Image Gallery dataset entries related to the conversion are preserved. [1]: https://github.com/odoo/odoo/commit/e73a1a96dcf8786c01205ae0a97b10e38ab9afeb task-3666894 Forward-Port-Of: odoo/odoo#170192 Forward-Port-Of: odoo/odoo#148068
Original PR description
Before this commit, when images are added to an Image Wall or to an Image Gallery, they remained in their original format. After this commit, images added to an Image Wall or an Image Gallery are converted to webp. Thanks to [1], the Image Gallery dataset entries related to the conversion are preserved. [1]: https://github.com/odoo/odoo/commit/e73a1a96dcf8786c01205ae0a97b10e38ab9afeb task-3666894 Forward-Port-Of: odoo/odoo#170192 Forward-Port-Of: odoo/odoo#148068
Steps: - Install the Project module > Create a new project - Open Project > Create task stage(s) - Delete all task stages Issue: - If all the stages are deleted then blank screen appears instead of shadow data(example data). Cause: - Incorrect active_model was passed. Fix: - Issue is been fixed by removing active_model. task-3744319 Forward-Port-Of: odoo/odoo#170711 Forward-Port-Of: odoo/odoo#154682
Original PR description
Steps: - Install the Project module > Create a new project - Open Project > Create task stage(s) - Delete all task stages Issue: - If all the stages are deleted then blank screen appears instead of shadow data(example data). Cause: - Incorrect active_model was passed. Fix: - Issue is been fixed by removing active_model. task-3744319 Forward-Port-Of: odoo/odoo#170711 Forward-Port-Of: odoo/odoo#154682
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
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#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#167726
**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: - Install l10n_fr and make sure fr company has tax id filled - Go to bank journal and set a bank account number - Go to Customer invoice journal and check `Factur-X` in the Advenced Settings tab - Create a french customer F with an email address - Open a pos session, and make an invoice forF for a product with tax, select Bank payment method and confirm - Go to invoices and select the newly created invoice -> "Error occured while creating the EDI document" Cause: The field `partner
Original PR description
Steps: - Install l10n_fr and make sure fr company has tax id filled - Go to bank journal and set a bank account number - Go to Customer invoice journal and check `Factur-X` in the Advenced Settings tab - Create a french customer F with an email address - Open a pos session, and make an invoice forF for a product with tax, select Bank payment method and confirm - Go to invoices and select the newly created invoice -> "Error occured while creating the EDI document" Cause: The field `partner_bank_id` is not set from the pos order to the invoice cbe1cf5b1044827a058a4cde5d0492a545ac6da4 added a condition specifically for swiss localisation. Fix: Movr the condition to a bridge module for swiss localisation opw-3992498 Forward-Port-Of: odoo/odoo#170762
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
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
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#170459
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#170459
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
Since [1] cover images are implicitly converted to webp. Those converted images were stored related to their record (e.g. a given blog post). Because of this, the created attachment was not made public, and therefore not available for visitors. This commit fixes this by linking the cover image to the general concept of `ir.ui.view` - as it was the case before images were converted. Doing this makes the image attachments public. Steps to reproduce: - Upload a JPG image as a published blog
Original PR description
Since [1] cover images are implicitly converted to webp. Those converted images were stored related to their record (e.g. a given blog post). Because of this, the created attachment was not made public, and therefore not available for visitors. This commit fixes this by linking the cover image to the general concept of `ir.ui.view` - as it was the case before images were converted. Doing this makes the image attachments public. Steps to reproduce: - Upload a JPG image as a published blog post cover. - Save => a WEBP version of the image is uploaded. => Visitors could not see the image when viewing the blog post. [1]: https://github.com/odoo/odoo/commit/068dcc27e417d52b51d274c44497f4388fed780a opw-4009916 Forward-Port-Of: odoo/odoo#170849
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
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
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
**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
Ensure that _setup_main_restaurant_defaults is only called when the main restaurant does not have an active session. This prevents potential errors that could occur if the method is called while a session is active. E.g: https://runbot.odoo.com/runbot/build/64372543 opw-3937178 Forward-Port-Of: odoo/odoo#170936 Forward-Port-Of: odoo/odoo#170507
Original PR description
Ensure that _setup_main_restaurant_defaults is only called when the main restaurant does not have an active session. This prevents potential errors that could occur if the method is called while a session is active. E.g: https://runbot.odoo.com/runbot/build/64372543 opw-3937178 Forward-Port-Of: odoo/odoo#170936 Forward-Port-Of: odoo/odoo#170507
This commit moves a call to `_loadMissingPricelistItems` within the `computeProductPricelistCache` method of `PosStore` outside of a for loop. This is done because it only needs to be called once for the products, not once for each product. `_loadMissingPricelistItems` calls `pos.session/get_pos_ui_product_pricelist_item_by_product`, which can be an expensive call. This commit minimizes how many times it's called. opw-3928634 Forward-Port-Of: odoo/odoo#170962
Original PR description
This commit moves a call to `_loadMissingPricelistItems` within the `computeProductPricelistCache` method of `PosStore` outside of a for loop. This is done because it only needs to be called once for the products, not once for each product. `_loadMissingPricelistItems` calls `pos.session/get_pos_ui_product_pricelist_item_by_product`, which can be an expensive call. This commit minimizes how many times it's called. opw-3928634 Forward-Port-Of: odoo/odoo#170962
Steps to reproduce: - Install Calendar - Go to next week for example - Click on an event -> edit - In the breadcrumb return to the calendar view Issues: The calendar show the current week and not the previous one. Even though we export the state we don't restore the date from the previous ones. opw-3946022 Forward-Port-Of: odoo/odoo#170103
Original PR description
Steps to reproduce: - Install Calendar - Go to next week for example - Click on an event -> edit - In the breadcrumb return to the calendar view Issues: The calendar show the current week and not the previous one. Even though we export the state we don't restore the date from the previous ones. opw-3946022 Forward-Port-Of: odoo/odoo#170103
Use case to reproduce: - Install stock and accounting without demo data - Load demo data Current behavior: RuntimeError: Module operations inside tests are not transactional and thus forbidden... It happens due to commit [1]. However, when loading the demo data the current thread has the attribute 'testing' set to True and prevent the installation of new modules. The solution would be to prevent the installation of l10n when loading demo data as before the patch [1] 0d4fac7fe0a356
Original PR description
Use case to reproduce: - Install stock and accounting without demo data - Load demo data Current behavior: RuntimeError: Module operations inside tests are not transactional and thus forbidden... It happens due to commit [1]. However, when loading the demo data the current thread has the attribute 'testing' set to True and prevent the installation of new modules. The solution would be to prevent the installation of l10n when loading demo data as before the patch [1] 0d4fac7fe0a356cbaf40f71587c78765ce50fc1e Forward-Port-Of: odoo/odoo#170748