Monday, March 31, 2025
38 changes · saas-18.1
Resolved issues and error corrections
Receipts in Point of Sale now correctly show the cashier name when no preset is configured. This helps customers and staff identify who served an order, restoring expected receipt information.
Original PR description
Steps ------ - Normal PoS config (don't set a preset) - Make an order and settle it -> The cashier name is not show on the receipt as "Served by ...". Reason -------- Commit 3ff7270f7b349e88dc883ed27ecb44006bdbcd65 allowed showing the cashier name if there is a preset and it has 'name' as `identification`. However, it has mistakenly hidden the cashier name when a preset does not exist. Fix --- Account for the case of a non existing `order.preset_id`. opw-4626268
Miscellaneous changes
…user Checking out while logged in with a portal user would cause all messages to be created by said portal user. So, when the invoice email would normally be sent it would not include the portal user as a recipient. Accessing the transaction as the superuser instead of just using superuser when running _generate_and_send_invoices fixes this because the invoices were being grabbed with the env.user of portal user and that was being used later down the line as the user to create the message
Original PR description
…user Checking out while logged in with a portal user would cause all messages to be created by said portal user. So, when the invoice email would normally be sent it would not include the portal user as a recipient. Accessing the transaction as the superuser instead of just using superuser when running _generate_and_send_invoices fixes this because the invoices were being grabbed with the env.user of portal user and that was being used later down the line as the user to create the messages. opw-4566071 Forward-Port-Of: odoo/odoo#203187
This PR addresses an access rights issue when an Inventory admin, specifically without POS access, tries to edit the variant attributes on a product template. In its current state, this user will witness an access error related to `pos.combo.line` records when they add or remove an attribute value. This PR fixes this by introducing `.sudo()` access when interacting with the `pos.combo.line` model during this process. opw-4553416 Forward-Port-Of: odoo/odoo#202607 Forward-Port-Of: odoo/
Original PR description
This PR addresses an access rights issue when an Inventory admin, specifically without POS access, tries to edit the variant attributes on a product template. In its current state, this user will witness an access error related to `pos.combo.line` records when they add or remove an attribute value. This PR fixes this by introducing `.sudo()` access when interacting with the `pos.combo.line` model during this process. opw-4553416 Forward-Port-Of: odoo/odoo#202607 Forward-Port-Of: odoo/odoo#202144
Changing the template of marketing card will not mark the existing card "to update", leading to wrong template used. Steps: - Open marketing card - Open Employee Card - Ensure a template is selected (Center) - Click on Send - Click on "Update 128 cards" - Download a card (/cards/1/card.jpg) - Template is well "Center" - Change Sub-Header value - Click on Send - You can update 128 cards - Update them - Download a card (/cards/1/card.jpg) - Sub-Header is upd
Original PR description
Changing the template of marketing card will not mark the existing card "to update", leading to wrong template used. Steps: - Open marketing card - Open Employee Card - Ensure a template is selected…
Changing the template of marketing card will not mark the existing card "to update", leading to wrong template used.
Steps:
- Open marketing card
- Open Employee Card
- Ensure a template is selected (Center)
- Click on Send
- Click on "Update 128 cards"
- Download a card (/cards/1/card.jpg)
- Template is well "Center"
- Change Sub-Header value
- Click on Send
- You can update 128 cards
- Update them
- Download a card (/cards/1/card.jpg)
- Sub-Header is updated
- Template is still "Center"
- Change the template to "Drawing"
- Click on Send
Actual result:
- You can't update cards, require_sync field is false
- Download a card (/cards/1/card.jpg)
- Template is still "Center"
- Sending email will not update them
- https://github.com/odoo/odoo/blob/4970215142d11efedc5ddc1d82ef7d671e7f0eeb/addons/marketing_card/models/card_campaign.py##L180-L181
Expected result:
- You can update cards, require_sync field is true
- Card template should be considered as a render field
Forward-Port-Of: odoo/odoo#203049### Steps to reproduce: - Accounting > Customers > Invoices - Select all - Actions > Resequence - Add a month in the sequence: INV/2025/03/001 - Create a new invoice and select a date in a future month - The name in the placeholder does not respect the new sequencing format ### Cause: `_compute_name_placeholder` uses `_get_starting_sequence` which always return the same format for invoices. ### Solution: Change `_compute_name_placeholder`, mimicking the way the sequence number is c
Original PR description
### Steps to reproduce: - Accounting > Customers > Invoices - Select all - Actions > Resequence - Add a month in the sequence: INV/2025/03/001 - Create a new invoice and select a date in a future month - The name in the placeholder does not respect the new sequencing format ### Cause: `_compute_name_placeholder` uses `_get_starting_sequence` which always return the same format for invoices. ### Solution: Change `_compute_name_placeholder`, mimicking the way the sequence number is computed in `_set_next_sequence`. opw-4612328 Forward-Port-Of: odoo/odoo#202333
Small UX/message improvements to Peppol: - Shorten some messages/information. - Rename the "(Consumer)" information to "(no VAT)". - Don't display the activation banner in case of "no VAT". task-no (last review comment of FP) Forward-Port-Of: odoo/odoo#202305
Original PR description
Small UX/message improvements to Peppol: - Shorten some messages/information. - Rename the "(Consumer)" information to "(no VAT)". - Don't display the activation banner in case of "no VAT". task-no (last review comment of FP) Forward-Port-Of: odoo/odoo#202305
### Steps to reproduce: - Create a PoS order in restaurant and proceed with payment - Create a refund for some items in the created order - Go to the order screens and notice the refunded qty in the main order ### Cause: Since syncAllOrders method gets executed in different flows we are adding to the refunded_qty more than once. https://github.com/odoo/odoo/blob/bfbf47d7b70d9bc180968a69d0ab6c522ee877a8/addons/point_of_sale/static/src/app/store/pos_store.js#L1164 ### Fix: Set the r
Original PR description
### Steps to reproduce: - Create a PoS order in restaurant and proceed with payment - Create a refund for some items in the created order - Go to the order screens and notice the refunded qty in the main order ### Cause: Since syncAllOrders method gets executed in different flows we are adding to the refunded_qty more than once. https://github.com/odoo/odoo/blob/bfbf47d7b70d9bc180968a69d0ab6c522ee877a8/addons/point_of_sale/static/src/app/store/pos_store.js#L1164 ### Fix: Set the refunded qty as sum of quantities for the related refund order lines. opw-4536644 Forward-Port-Of: odoo/odoo#202170 Forward-Port-Of: odoo/odoo#199072
This update contains the following commits: [IMP] runtime/utils: export htmlEscape and add tests (https://github.com/odoo/owl/pull/1677) [FIX] utils: Correct validation of mount target in shadow DOM/iframe (https://github.com/odoo/owl/pull/1676) [IMP] runtime: add markup tag function (https://github.com/odoo/owl/pull/1670) Notes: https://github.com/odoo/owl/releases/tag/v2.7.0 Forward-Port-Of: odoo/odoo#203515
Original PR description
This update contains the following commits: [IMP] runtime/utils: export htmlEscape and add tests (https://github.com/odoo/owl/pull/1677) [FIX] utils: Correct validation of mount target in shadow DOM/iframe (https://github.com/odoo/owl/pull/1676) [IMP] runtime: add markup tag function (https://github.com/odoo/owl/pull/1670) Notes: https://github.com/odoo/owl/releases/tag/v2.7.0 Forward-Port-Of: odoo/odoo#203515
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#203935
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#203935
## Versions: 18.0 Reset feature from saas-17.4 ## Issue: In saas-17.4, the user could see the Purchase Order total amount in the selected company's currency if it differs from the PO's currency. This doesn't exist in 18 anymore. ## Steps to reproduce: Ensure there are at least 2 currencies available in the `Settings` app - Create a new purchase order; - Change the selected `Currency` for any other; - Look at the subtotal part that does not include the equivalent amount in the compan
Original PR description
## Versions: 18.0 Reset feature from saas-17.4 ## Issue: In saas-17.4, the user could see the Purchase Order total amount in the selected company's currency if it differs from the PO's currency. This doesn't exist in 18 anymore. ## Steps to reproduce: Ensure there are at least 2 currencies available in the `Settings` app - Create a new purchase order; - Change the selected `Currency` for any other; - Look at the subtotal part that does not include the equivalent amount in the company's currency. ## Cause: The saas-17.4 feature has not been forwarded entirely and an important part of it is missing. The company currency total amount is not updated correctly ## Fix: Forward-port the complete feature of https://github.com/odoo/odoo/commit/202af7c12a768005df3bd97f595ead0a4c4c02b9 Include the fix from https://github.com/odoo/odoo/pull/186464/commits/7467d68309c039c50e39b6ec0b8645ef7ff42ad4 opw-4416711 Forward-Port-Of: odoo/odoo#197618
Typically, the field commercial_partner_id on res.partner is not displayed on the Form view. However, adding it via Studio or other means will lead to an error if the following conditions are met. Issue We click New to start creating a new record (still in NewId phase) We trigger an onchange that will lead to invoice_edi_format being computed When clicking New the commercial_partner_id is computed initially. However, this value isn't present on the Form view yet which leaves the field empty
Original PR description
Typically, the field commercial_partner_id on res.partner is not displayed on the Form view. However, adding it via Studio or other means will lead to an error if the following conditions are met.…
Typically, the field commercial_partner_id on res.partner is not displayed on the Form view. However, adding it via Studio or other means will lead to an error if the following conditions are met. Issue We click New to start creating a new record (still in NewId phase) We trigger an onchange that will lead to invoice_edi_format being computed When clicking New the commercial_partner_id is computed initially. However, this value isn't present on the Form view yet which leaves the field empty until we actually save (and create) the record. Prior to this, if another onchange is called we'll pass commercial_partner_id as False in the onchange, eventually erroring out when we try to call a method on the value's record. Solution: After multiple fixes and refactor, it looks like dependencies on the compute are no longer relevant. Indeed, `_get_suggested_invoice_edi_format` only depends on the commercial partner's country code now. Also only compute the edi format if the commercial partner is set. opw-4630096 Forward-Port-Of: odoo/odoo#203944
Currently, registering as a receiver on Peppol via Odoo has a poor user experience due to the long delays in activation. The activation process requires a DNS lookup, which is performed on the IAP side every 6 hours. Additionally, the client db queries IAP for the user state every 6 hours before enabling the receipt of invoices, resulting in a typical delay of over 8 hours—often spanning more than a full workday. This commit, together with https://github.com/odoo/iap-apps/pull/989 tries speed
Original PR description
Currently, registering as a receiver on Peppol via Odoo has a poor user experience due to the long delays in activation. The activation process requires a DNS lookup, which is performed on the IAP side every 6 hours. Additionally, the client db queries IAP for the user state every 6 hours before enabling the receipt of invoices, resulting in a typical delay of over 8 hours—often spanning more than a full workday. This commit, together with https://github.com/odoo/iap-apps/pull/989 tries speed things up by - fetching the activation status 1h after registration from IAP (client-db side) - fetching sent invoice status 5 minutes after having sent the invoice This is also a replacement for webhooks for on-prem users who won't be able to use webhooks from this PR: https://github.com/odoo/iap-apps/pull/1008 task-4395265 Forward-Port-Of: odoo/odoo#194542
In odoo/odoo/pull/175315, we added a new journal type: 'credit'. The `bank_statements_source` was meant to be required for credit journal the same way it is for bank journals. no-opw no-task --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#203677
Original PR description
In odoo/odoo/pull/175315, we added a new journal type: 'credit'. The `bank_statements_source` was meant to be required for credit journal the same way it is for bank journals. no-opw no-task --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#203677
The Error is reproducible in the runbot here is an attached video with the steps: https://drive.google.com/file/d/1W1ZJG7aYueFa8Y24LSZlsil0caZB9mE5/view?usp=sharing This happens because of : 1- cash rounding is enabled in the settings of accounting 2 - cash rounding by tax is chosen 3 - opening a vendor bill 4 - putting a decimal price and removing taxes 5- then choosing cash rounding by tax The Error : File "/home/odoo/odoo/odoo/addons/account/models/account_move.py", line 1570, in
Original PR description
The Error is reproducible in the runbot here is an attached video with the steps: https://drive.google.com/file/d/1W1ZJG7aYueFa8Y24LSZlsil0caZB9mE5/view?usp=sharing This happens because of : 1- cash rounding is enabled in the settings of accounting 2 - cash rounding by tax is chosen 3 - opening a vendor bill 4 - putting a decimal price and removing taxes 5- then choosing cash rounding by tax The Error : File "/home/odoo/odoo/odoo/addons/account/models/account_move.py", line 1570, in _compute_tax_totals move.tax_totals = self.env['account.tax']._get_tax_totals_summary( File "/home/odoo/odoo/odoo/addons/account/models/account_tax.py", line 2090, in _get_tax_totals_summary max_subtotal, max_tax_group = max( ValueError: max() arg is an empty sequence opw-4558251 (related to ticket) Description of the issue/feature this PR addresses: Current behavior before PR: Desired behavior after PR is merged: Forward-Port-Of: odoo/odoo#203440
Forward-Port-Of: odoo/odoo#203874
Original PR description
Forward-Port-Of: odoo/odoo#203874
* follow markdown guidelines * add section for security reports --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#203813 Forward-Port-Of: odoo/odoo#143761
Original PR description
* follow markdown guidelines * add section for security reports --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#203813 Forward-Port-Of: odoo/odoo#143761
It's due to other module creating leaves on the 40h/week calendar. Since it's set on the workorder. During the productivity loss creation the duration could cost for 0 minutes if it's during the leave of a workcenter opw-moc 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#200545 Forward-Port
Original PR description
It's due to other module creating leaves on the 40h/week calendar. Since it's set on the workorder. During the productivity loss creation the duration could cost for 0 minutes if it's during the leave of a workcenter opw-moc 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#200545 Forward-Port-Of: odoo/odoo#197995
These commits fix two issues: - If a block that has an image selected as background is given a border, its background image will fit awkwardly in the surrounding border, and similarly if the background image is positioned all the way to any edge, it does not cover all the block. - If a video is selected as background for a block, the video does not always fill the block. Steps to reproduce: Bug 1 - Add a masonry block/big boxes block - Add a background image to an element o
Original PR description
These commits fix two issues: - If a block that has an image selected as background is given a border, its background image will fit awkwardly in the surrounding border, and similarly if the…
These commits fix two issues: - If a block that has an image selected as background is given a border, its background image will fit awkwardly in the surrounding border, and similarly if the background image is positioned all the way to any edge, it does not cover all the block. - If a video is selected as background for a block, the video does not always fill the block. Steps to reproduce: Bug 1 - Add a masonry block/big boxes block - Add a background image to an element of the masonry/big boxes - Add a big border - Make the border translucent if it isn't already to better see the bug => The background image overflows on the border randomly - Change the background position by shifting the image all the way to the left => The image does not cover all the border-box Bug 2 - Add a masonry block/big boxes block - Add a video background => The video does not always fill the box, especially when the window gets resized After the changes the image/video background completely covers its block, even when resized or when a border is applied. task-4174638 Forward-Port-Of: odoo/odoo#203571 Forward-Port-Of: odoo/odoo#201200
Steps to reproduce: - Install manfacturing app - Activate the Unit of measure setting in the mrp settings - Go to create new manafcturing order and start zooming in with different screen resolutions Problem: The product_qty field starts disappearing on zooming in and this makes the user can't enter a value in it. This happens because the width:auto applied to the field of the uom beside it that takes as much space as possible so the product_qty field disappears. opw-4560205 Descr
Original PR description
Steps to reproduce: - Install manfacturing app - Activate the Unit of measure setting in the mrp settings - Go to create new manafcturing order and start zooming in with different screen resolutions…
Steps to reproduce: - Install manfacturing app - Activate the Unit of measure setting in the mrp settings - Go to create new manafcturing order and start zooming in with different screen resolutions Problem: The product_qty field starts disappearing on zooming in and this makes the user can't enter a value in it. This happens because the width:auto applied to the field of the uom beside it that takes as much space as possible so the product_qty field disappears. opw-4560205 Description of the issue/feature this PR addresses: Current behavior before PR: the product_qty field in the creating manufacturing order disappears while zooming in with different screen resolutions. Desired behavior after PR is merged: The product_qty field is appearing on all zoom levels from 100 to 400 and tested on all screen resolutions in the settings of display in Ubuntu **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#197734
- Fix traceback appearing when after 3 minutes, we're automatically redirected to the floor screen and we had a combo selector popup opened. We were redirected to the floorscreen but the popup was still opened and when closing it it was throwing a traceback. - Now just before redirecting idle user to the floorplan, we first close all opened modal. Steps to reproduce : - Open "Restaurant" - Open an empty table - Click combo product - Wait 180s :d - You'll be automatically redirected to f
Original PR description
- Fix traceback appearing when after 3 minutes, we're automatically redirected to the floor screen and we had a combo selector popup opened. We were redirected to the floorscreen but the popup was still opened and when closing it it was throwing a traceback. - Now just before redirecting idle user to the floorplan, we first close all opened modal. Steps to reproduce : - Open "Restaurant" - Open an empty table - Click combo product - Wait 180s :d - You'll be automatically redirected to floorplan, the combo selection popup is still opened - When closing it you have a traceback task-id: 4661502 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#202724
Fix issue when trying to create new payment methods and no `account_journal_payment_debit_account_id` exist in the current chart template. Calling `_get_outstanding_account('inbound')` on an empty `account.payment` was failing because `self.env.company` was not properly set. This issue only occurred when the outstanding account was not found in the chart template, leading to an exception. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-P
Original PR description
Fix issue when trying to create new payment methods and no `account_journal_payment_debit_account_id` exist in the current chart template.
Calling `_get_outstanding_account('inbound')` on an empty `account.payment` was failing because `self.env.company` was not properly set. This issue only occurred when the outstanding account was not found in the chart template, leading to an exception.
---
I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Forward-Port-Of: odoo/odoo#203962Currently, An error occurs when creating a resource time off. Step to produce: - Install the `hr_holidays` module. - Enable debug mode. - Go to Time Off / Configuration / Time Off Types, And delete `Sick Time Off`. - Go to Settings / Technical / Resource / Resource Time Off, and create a new record. - Add a Time Off Request with the following conditions: The start date is before today's date, end date is after today's date, And state is set to Draft. - Try to save a Resource Time Off
Original PR description
Currently, An error occurs when creating a resource time off. Step to produce: - Install the `hr_holidays` module. - Enable debug mode. - Go to Time Off / Configuration / Time Off Types, And delete…
Currently, An error occurs when creating a resource time off. Step to produce: - Install the `hr_holidays` module. - Enable debug mode. - Go to Time Off / Configuration / Time Off Types, And delete `Sick Time Off`. - Go to Settings / Technical / Resource / Resource Time Off, and create a new record. - Add a Time Off Request with the following conditions: The start date is before today's date, end date is after today's date, And state is set to Draft. - Try to save a Resource Time Off record. `ValueError: External ID not found in the system: hr_holidays.holiday_status_sl` An error occurs when the system tries to retrieve an external ID of the 'Sick Time Off' at [1], but it is not available. Link [1]: https://github.com/odoo/odoo/blob/1303193386665d120ccb5d0045ee984337af0826/addons/hr_holidays/models/resource.py#L67 To handle this issue, add 'raise_if_not_found=False' in ref() argument if the external ID of the 'Sick Time Off' is not available. Sentry-6320807644 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#199236
An error occurs when updating the **Allocation** field in a time-off allocation record that does not have an assigned employee. **Steps to reproduce:** - Install the `hr_holidays` module. - Navigate to `Time Off > Management > Allocations` (form view). - Remove the employee and modify the **Allocation** field. - Observe the error. **Error:** KeyError - False The issue occurs because `_compute_number_of_hours_display` depends on `employee_id._get_hours_per_day(allocation.date_from)`
Original PR description
An error occurs when updating the **Allocation** field in a time-off allocation record that does not have an assigned employee. **Steps to reproduce:** - Install the `hr_holidays` module. - Navigate to `Time Off > Management > Allocations` (form view). - Remove the employee and modify the **Allocation** field. - Observe the error. **Error:** KeyError - False The issue occurs because `_compute_number_of_hours_display` depends on `employee_id._get_hours_per_day(allocation.date_from)`, when `employee_id` is empty, attempting to access `self.id` at [1] results in a key error. [1] - https://github.com/odoo/odoo/blob/51097d978a698fa94d021ca72bcd69c24d9c768b/addons/hr_holidays/models/hr_employee.py#L349 This commit ensures that the computation of `number_of_hours_display` checks if `employee_id` exists before proceeding. If no employee is assigned, it will be skipped. Sentry - 6423050142 Forward-Port-Of: odoo/odoo#202637
Commit 0bdfda2af4d70a6c33773ecd4aaa717ef6a17d62 introduced a new behavior where delivery transfer to transit locations (inter companies transfer) could create a new Sale Order Line if necessary. However, we do not want this behavior if the transit location is just a step in the delivery to the Customer location. Hence, if there are any destination moves, we do not create a new sale order line. OPW-4643937 --- Test result without fix: ``` 2025-03-19 16:08:42,057 57047 ERROR oes_test
Original PR description
Commit 0bdfda2af4d70a6c33773ecd4aaa717ef6a17d62 introduced a new behavior where delivery transfer to transit locations (inter companies transfer) could create a new Sale Order Line if necessary.…
Commit 0bdfda2af4d70a6c33773ecd4aaa717ef6a17d62 introduced a new behavior where delivery transfer to transit locations (inter companies transfer) could create a new Sale Order Line if necessary. However, we do not want this behavior if the transit location is just a step in the delivery to the Customer location.
Hence, if there are any destination moves, we do not create a new sale order line.
OPW-4643937
---
Test result without fix:
```
2025-03-19 16:08:42,057 57047 ERROR oes_test_17.4 odoo.addons.sale_stock.tests.test_sale_stock: FAIL: TestSaleStock.test_custom_delivery_route_new_sale_line
Traceback (most recent call last):
File "/home/odoo/projects/odoo-src/multiverse/src/saas-17.4/odoo/addons/sale_stock/tests/test_sale_stock.py", line 2197, in test_custom_delivery_route_new_sale_line
self.assertEqual(len(sale_order.order_line), 1)
AssertionError: 2 != 1
```
---
I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Forward-Port-Of: odoo/odoo#202728
Forward-Port-Of: odoo/odoo#202559Before this commit, when restricted categories were enabled but no category was added to the allowed list, all products were loaded but none were displayed due to a recent code change. opw-4680158 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#203889
Original PR description
Before this commit, when restricted categories were enabled but no category was added to the allowed list, all products were loaded but none were displayed due to a recent code change. opw-4680158 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#203889
Steps to reproduce ================== 1. Go to appointment 2. Pick an appointment having bookings > 1 3. Go to the list view of bookings. 4. Multi edit the capacity_reserved --> Traceback Issue ===== In the inverse function for capacity_reserved, we used self to access resource_total_capacity_reserved. Use event of self to access the attribute. Task- 4680286 Forward-Port-Of: odoo/enterprise#82405
Original PR description
Steps to reproduce ================== 1. Go to appointment 2. Pick an appointment having bookings > 1 3. Go to the list view of bookings. 4. Multi edit the capacity_reserved --> Traceback Issue ===== In the inverse function for capacity_reserved, we used self to access resource_total_capacity_reserved. Use event of self to access the attribute. Task- 4680286 Forward-Port-Of: odoo/enterprise#82405
…putation To allow people with low gross wages to take mobility budget, we allow iterative computation to reduce it until minimum gross wage is obtained task-4647060 Forward-Port-Of: odoo/enterprise#81336
Original PR description
…putation To allow people with low gross wages to take mobility budget, we allow iterative computation to reduce it until minimum gross wage is obtained task-4647060 Forward-Port-Of: odoo/enterprise#81336
Forward-Port-Of: odoo/enterprise#82441 Forward-Port-Of: odoo/enterprise#82412
Original PR description
Forward-Port-Of: odoo/enterprise#82441 Forward-Port-Of: odoo/enterprise#82412
Issue ===== Scanning a product while beeing in the stock move line Barcode form view or in the quand Barcode form view can cause a traceback and the impossibility to exit a Barcode operation. How to reproduce ================ 1. Create two products with a barcode; 2. Open the Barcode app and create an operation; 3. Scan a product then click on the edit button to open the form view; 4. Update the product quantity field; 5. While still in the form view, scan another barcode -> You can s
Original PR description
Issue ===== Scanning a product while beeing in the stock move line Barcode form view or in the quand Barcode form view can cause a traceback and the impossibility to exit a Barcode operation. How to…
Issue ===== Scanning a product while beeing in the stock move line Barcode form view or in the quand Barcode form view can cause a traceback and the impossibility to exit a Barcode operation. How to reproduce ================ 1. Create two products with a barcode; 2. Open the Barcode app and create an operation; 3. Scan a product then click on the edit button to open the form view; 4. Update the product quantity field; 5. While still in the form view, scan another barcode -> You can see the quantity was reset; 6. Update again the quantity and save; 7. Try to exit the operation -> Bim badaboum, traceback 💥! Cause of the issue ================== When a barcode is scanned, the app doesn't check where is the current state and process the barcode anyway which lead to strange behavior and inconsistencies between the current lines and the lines to save. Solution ======== Disable the scan while somewhere else that in the barcode line view. Miscellaneous ============= Remove an old forgotten `console.warn` 😬 [OPW-4567723](https://www.odoo.com/odoo/project/49/tasks/4567723) Forward-Port-Of: odoo/enterprise#82144 Forward-Port-Of: odoo/enterprise#81512
Forward-Port-Of: odoo/enterprise#82398
Original PR description
Forward-Port-Of: odoo/enterprise#82398
When scanning a package, its content is added on the view, but we don't display the expiration date. To reproduce the issue: 1. In Settings, enable: - Packages - Expiration dates 2. Create a product - Tracked by lot - Expiration date 3. Update its quantity - Lot L - Package P - Quantity > 0 4. Set an expiration date on L 5. Open a new delivery through the barcode app 6. Scan P "Error": a line is added for the product, with its lot L, but we don't display
Original PR description
When scanning a package, its content is added on the view, but we don't display the expiration date. To reproduce the issue: 1. In Settings, enable: - Packages - Expiration dates 2. Create a product - Tracked by lot - Expiration date 3. Update its quantity - Lot L - Package P - Quantity > 0 4. Set an expiration date on L 5. Open a new delivery through the barcode app 6. Scan P "Error": a line is added for the product, with its lot L, but we don't display the expiration date. Once the line is saved (for instance, through the edit button), we will finally display it. This is because we don't provide any information about the expiration date when converting the package quant into relevant data. OPW-4516410 Forward-Port-Of: odoo/enterprise#81825
Certain reports were incorrectly referring to DIAN, even though the Industry and Commerce Tax (ICA) is administered at the district level. According to Colombian regulations (e.g., Decree 807 of 1993, Agreement 65 of 2002 for Bogotá), the collection and administration of ICA falls under the local Secretariat of Finance, not DIAN. This commit adds logic so that if the report is for ICA, it shows the correct reference to the Secretariat of Finance; otherwise, it preserves the reference to DIAN.
Original PR description
Certain reports were incorrectly referring to DIAN, even though the Industry and Commerce Tax (ICA) is administered at the district level. According to Colombian regulations (e.g., Decree 807 of 1993, Agreement 65 of 2002 for Bogotá), the collection and administration of ICA falls under the local Secretariat of Finance, not DIAN. This commit adds logic so that if the report is for ICA, it shows the correct reference to the Secretariat of Finance; otherwise, it preserves the reference to DIAN. Forward-Port-Of: odoo/enterprise#82218 Forward-Port-Of: odoo/enterprise#79630
Installing stock_barcode without base_import installed results in errors in the assets when loading `ImportBlockUI`. This occurs because `stock_barcode` requires a component from `base_import` but does not explicitly declare it as a dependency. opw-4613302 Forward-Port-Of: odoo/enterprise#81368
Original PR description
Installing stock_barcode without base_import installed results in errors in the assets when loading `ImportBlockUI`. This occurs because `stock_barcode` requires a component from `base_import` but does not explicitly declare it as a dependency. opw-4613302 Forward-Port-Of: odoo/enterprise#81368
This commit adds the possibility to access multiple attachment inside the salary rule while having the total amount of the recordset if amount is access directly task-4640076 Forward-Port-Of: odoo/enterprise#82226
Original PR description
This commit adds the possibility to access multiple attachment inside the salary rule while having the total amount of the recordset if amount is access directly task-4640076 Forward-Port-Of: odoo/enterprise#82226
Currently, a traceback occurs when the user tries to create a Export to Group S report. To reproduce this issue: 1) Install `l10n_be_hr_payroll_group_s` without demo data 2) Shift to the Belgium company 3) Create a running contract from payroll with stating date should be in past 4) Now create a Work Entry from payroll with the From date also be in the past 5) Now create a new `Export to Group S report` report from payroll/reporting 6) Make sure the date and moth are also in the pas
Original PR description
Currently, a traceback occurs when the user tries to create a Export to Group S report. To reproduce this issue: 1) Install `l10n_be_hr_payroll_group_s` without demo data 2) Shift to the Belgium…
Currently, a traceback occurs when the user tries to create a Export to Group S report. To reproduce this issue: 1) Install `l10n_be_hr_payroll_group_s` without demo data 2) Shift to the Belgium company 3) Create a running contract from payroll with stating date should be in past 4) Now create a Work Entry from payroll with the From date also be in the past 5) Now create a new `Export to Group S report` report from payroll/reporting 6) Make sure the date and moth are also in the past and click the `Populate` 7) Now click the `Generate Export File` Error:- ``` TypeError: can only concatenate str (not "bool") to str ``` The error is occurring because there is no `group_s_code` value by default in the company. The user has to give the value from the settings. If there is no `group_s_code` in the company, It leads to the above exception when concatenation is done between False and a string. Also, a userError was already raised from the very next life. https://github.com/odoo/enterprise/blob/eb1eff85d2119a34997067fedb602e963a5d6f02/l10n_be_hr_payroll_group_s/models/hr_payroll_export_group_s.py#L41-L43 So by making an extra check of the presence of the `group_s_code` in the company. We can resolve this issue and also make the code more robust. sentry-6289053708 Forward-Port-Of: odoo/enterprise#79334
When accountant is not installed, valid_payment_states includes both "paid" and "in payment" options, which means that amount_residual and amount_residual_currency have the same value as amount. original commit for the test: https://github.com/odoo/enterprise/commit/8faa7fccd296aab290f96b05832f1152cc2d4b1c [runbot-errors](https://runbot.odoo.com/odoo/error/161370) Forward-Port-Of: odoo/enterprise#82158
Original PR description
When accountant is not installed, valid_payment_states includes both "paid" and "in payment" options, which means that amount_residual and amount_residual_currency have the same value as amount. original commit for the test: https://github.com/odoo/enterprise/commit/8faa7fccd296aab290f96b05832f1152cc2d4b1c [runbot-errors](https://runbot.odoo.com/odoo/error/161370) Forward-Port-Of: odoo/enterprise#82158
Versions -------- - 18.0+ Steps ----- 1. Have purchase & sale_stock_renting installed; 2. create a 2nd company; 3. enable inter-company transactions for Sale/Purchase Orders for both; 4. enable Warehouse storage locations; 5. enable multi-step routes; 5. enable dropshipping; 6. enable rental transfers; 7. create a dropshipping route assigned to the 1st company; 8. create a purchasable, rental product, tracked by quantity; 9. add dropship route to its operations; 10. add 2nd comp
Original PR description
Versions -------- - 18.0+ Steps ----- 1. Have purchase & sale_stock_renting installed; 2. create a 2nd company; 3. enable inter-company transactions for Sale/Purchase Orders for both; 4. enable…
Versions -------- - 18.0+ Steps ----- 1. Have purchase & sale_stock_renting installed; 2. create a 2nd company; 3. enable inter-company transactions for Sale/Purchase Orders for both; 4. enable Warehouse storage locations; 5. enable multi-step routes; 5. enable dropshipping; 6. enable rental transfers; 7. create a dropshipping route assigned to the 1st company; 8. create a purchasable, rental product, tracked by quantity; 9. add dropship route to its operations; 10. add 2nd company as vendor; 11. create a rental order with the product; 12. confirm the rental order; 13. go to the generated purchase order via the smart button; 14. confirm the purchase order; 15. switch to the 2nd company; 16. try to open the generated sale order. Issue ----- > TypeError: '>' not supported between instances of 'datetime.datetime' and 'bool' Cause ----- On confirming the purchase order, the sale order it generates gets created as a rental order, due to the `in_rental_app` context value being set. When trying to open the rental order, it attempts to compute the quantity available for the tracked rental products during the rental period. The rental order was generated based on purchase order data, which lacks any kind of rental information, hence the rental order doesn't have a rental period set. The lack of rental dates is what causes the error when trying to partition the lines based on rental period. Solution -------- When creating a sale order via a purchase order, pass the `in_rental_app=False` context value to ensure it won't be created as a rental order. opw-4583210 Forward-Port-Of: odoo/enterprise#82220
…with empty working schedule **Issue** When setting the working schedule to empty, opening the Gantt view is not possible as an error is displayed Steps to Reproduce: 1. Login as Mitchell Admin 2. Install Employees and Project apps 3. Go to Employees > Contracts 4. Select a contract from Mitchell Admin 5. Empty the Working Schedule Field 6. Set Planning or Attendances as work entries > Save 7. Go to project app 8. Select a project 9. Switch to the Gantt view 10. An error messa
Original PR description
…with empty working schedule **Issue** When setting the working schedule to empty, opening the Gantt view is not possible as an error is displayed Steps to Reproduce: 1. Login as Mitchell Admin 2.…
…with empty working schedule **Issue** When setting the working schedule to empty, opening the Gantt view is not possible as an error is displayed Steps to Reproduce: 1. Login as Mitchell Admin 2. Install Employees and Project apps 3. Go to Employees > Contracts 4. Select a contract from Mitchell Admin 5. Empty the Working Schedule Field 6. Set Planning or Attendances as work entries > Save 7. Go to project app 8. Select a project 9. Switch to the Gantt view 10. An error message appears 11. Expected Behavior: Gantt view should be displayed without errors. Actual Behavior: Gantt view is not displayed, and an error message appears. **Root Cause** The issue occurs because before processing the work intervals, the system checks for the presence and uniqueness of a calendar. If a user has no assigned schedule, the function attempts to process a None value, which results in an error when calling ensure_one in _attendance_intervals_batch. **Fix** To prevent the error, users without a working schedule are skipped when computing valid work intervals. If a user has no assigned schedule, they will not be included in _work_intervals_batch, ensuring the function executes correctly without attempting to process an empty calendar. opw-4462241 Forward-Port-Of: odoo/enterprise#79159