Daily updates from Odoo
Wednesday, March 19, 2025
40 changes
1 change
Miscellaneous changes
Backport of [this commit]. Babel has a very long standing bug on computing ISO weeks / year-week. python-babel/babel#621 fixed some cases but broke others. Debian decided to revert it[^1] rather than actually fix things up and Ubuntu shipped that patch in Noble, which is awesome (not): test cases embedding either behavior flip around depending whether they run or noble or not. python-babel/babel#887 was opened to fix the issue but left to rot then closed when I mistakenly-ish deleted my
Original PR description
Backport of [this commit]. Babel has a very long standing bug on computing ISO weeks / year-week. python-babel/babel#621 fixed some cases but broke others. Debian decided to revert it[^1] rather than…
Backport of [this commit]. Babel has a very long standing bug on computing ISO weeks / year-week. python-babel/babel#621 fixed some cases but broke others. Debian decided to revert it[^1] rather than actually fix things up and Ubuntu shipped that patch in Noble, which is awesome (not): test cases embedding either behavior flip around depending whether they run or noble or not. python-babel/babel#887 was opened to fix the issue but left to rot then closed when I mistakenly-ish deleted my personal fork of babel. While technically we could monkeypatch babel and replace functions wholesale (both versions so it works everywhere), just give up and instead compute the weeknumber ourselves in the context of `read_group([X:week])`: - For ISO locales, delegate to the stdlib which does that fine. - For non-ISO locales, assume that the week containing the first day of the year is the first week, and make the executive decision that all days in that calendar week are part of W01. The alternative would be to implement a split / overlapping week system where the same week is both W53 $YEAR and W01 $YEAR+1, and I really have no desire to deal with that from a UI/UX perspective. Fix tests embedding incorrect week assignments: - For `test_group_by_week`, redo the entire set (somewhat more declaratively / data driven, though not quite table-driven) to ensure the assignments are correct, and assert that the locales have the properties we assume with respect to 1dow. - For `test_read_progress_bar`, the entire thing was a fever dream of wonky pseudo-split week where 2019 had no week 1. [this commit]: https://github.com/odoo/odoo/commit/75c63315169c0a4c6c92403690c54d606680593b [^1]: https://sources.debian.org/patches/python-babel/2.10.3-1/ opw-4446254 opw-4448239 Forward-Port-Of: odoo/odoo#202475 Forward-Port-Of: odoo/odoo#199658
11 changes
Enhancements to existing features
The Field Service Stock test flow was updated to match the new editable task list behavior. This helps ensure automated checks continue opening tasks correctly and reduces the risk of false test failures.
Original PR description
This commit adapts the trigger of a step inside `industry_fsm_stock_test_tour`, the one clicking on a row in the list view of tasks to open the form view of a task, because the list view is now editable and so the trigger should now click on the `View` button on the row. task-4624574
The sales order field that identifies where an extra quotation was created is now labeled as the source task. This helps users choose the right field when building filters or reports and reduces confusion with other task-related fields.
Original PR description
Before this commit, the task_id is confusing for the user who would like to create a custom filter to see the SO linked to a specific project, he does not know if he can use that field or `task_ids` field. Actually, `task_id` field is just used when `Extra Quotations` feature is enabled and the user creates a quotation inside a task form view, which means the field will just contain the task in which the quotation has been created and that's it. This commit changes the label of `task_id` to say the field will contain the **source task**. task-4623653
Marketing automation SMS flows now handle canceled SMS records that are already logged during message preparation. This keeps unsent or canceled SMS messages from cluttering customer conversations while preserving traceability for follow-up checks.
Original PR description
For mailing only, in order to not display most message not sent to the recipient in the chatter, while preparing message to be sent by sms (_prepare_mass_sms_values), we create directly a trace for canceled sms for further investigation (See PR: odoo/odoo#189622). So, we adapt the code of marketing automation accordingly to cope with the already created trace. Task-3264570
Resolved issues and error corrections
Updated spreadsheet tests to reflect a fix that lets pivot search handle values containing quotation marks correctly. This helps ensure users can find matching pivot data even when labels or values include quotes.
Original PR description
Adapt tests after a bug fix in o-spreadsheet repo Task: 4061068
Code cleanup and technical improvements
This update moves test-mode behavior out of shared system components and into the testing framework where it belongs. It reduces internal complexity and helps keep normal application code separate from test-only logic, with no expected impact on everyday users.
Original PR description
`Registry.enter_test_mode` has been removed in favor of a method on `TransactionCase`
Miscellaneous changes
- For a multicompany environment it is useful to be able to restrict the unique emission point and entity point per company. - The support of the commercial partner is needed for electronic and pdf documents. We use the commercial_partner_id for the receiver. - We place the main code and auxiliary code as in the other documents. The main code is the result of the barcode or default_code or N/A (is required field in xml) - We improve the creation of the sequence in a warehouse when the record
Original PR description
- For a multicompany environment it is useful to be able to restrict the unique emission point and entity point per company. - The support of the commercial partner is needed for electronic and pdf documents. We use the commercial_partner_id for the receiver. - We place the main code and auxiliary code as in the other documents. The main code is the result of the barcode or default_code or N/A (is required field in xml) - We improve the creation of the sequence in a warehouse when the record is not yet committed. - To generate the authorization number we use the start date of the delivery guide Forward-Port-Of: odoo/enterprise#80983 Forward-Port-Of: odoo/enterprise#77224
Steps to reproduce the issue: 1. Activate the Odoo Mexican Localization Reports module 2. In a Mexican company, create a new Account with 1 as code 3. Go to Trial Balance and download COA SAT (XML) 5. In the General Settings with developer mode active, Download XSD files 6. Go to Trial Balance and download COA SAT (XML) again 7. You get a UserError with an unclear message Explanation: The Mexican Chart of Accounts have clear rules regarding `account.account.code`. The only way to v
Original PR description
Steps to reproduce the issue: 1. Activate the Odoo Mexican Localization Reports module 2. In a Mexican company, create a new Account with 1 as code 3. Go to Trial Balance and download COA SAT (XML)…
Steps to reproduce the issue: 1. Activate the Odoo Mexican Localization Reports module 2. In a Mexican company, create a new Account with 1 as code 3. Go to Trial Balance and download COA SAT (XML) 5. In the General Settings with developer mode active, Download XSD files 6. Go to Trial Balance and download COA SAT (XML) again 7. You get a UserError with an unclear message Explanation: The Mexican Chart of Accounts have clear rules regarding `account.account.code`. The only way to verify those accounts is through the XSD files check, but they are not automatically downloaded and the error received with those files downloaded is not user friendly. Fix reasoning: Instead of regulating the code when downloading the XML. We'll add warnings on the Chart of Accounts to notify the user when a code is incorrect. To make the report error clearer to the user, we added a RedirectWarning that displays the accounts with faulty codes before generating the xml. opw-4287338 Forward-Port-Of: odoo/enterprise#81723 Forward-Port-Of: odoo/enterprise#73943
Tax lines are not created in cases where Odoo expects them to be $0 [1]. This is problematic for cases where tax is computed externally and the tax is not in fact $0. There is now no tax line to adjust to the right amount. To reproduce: 1. Configure Avatax 2. Configure the Discount product to have the "Non-taxable product" Avatax category 2. Create an invoice to Azure Interior 3. Select the Avatax fiscal position 3. Add 1 FURN_6667 with default unit price $295 4. Add 1 Discount with u
Original PR description
Tax lines are not created in cases where Odoo expects them to be $0 [1]. This is problematic for cases where tax is computed externally and the tax is not in fact $0. There is now no tax line to…
Tax lines are not created in cases where Odoo expects them to be $0 [1]. This is problematic for cases where tax is computed externally and the tax is not in fact $0. There is now no tax line to adjust to the right amount. To reproduce: 1. Configure Avatax 2. Configure the Discount product to have the "Non-taxable product" Avatax category 2. Create an invoice to Azure Interior 3. Select the Avatax fiscal position 3. Add 1 FURN_6667 with default unit price $295 4. Add 1 Discount with unit price -$295 5. Click "Compute Taxes" The invoice is fully discounted but $30.24 tax must still be paid. This is correct. It's reflected in the invoice total, but the tax lines are not in the journal items. `_set_external_taxes()` goes through the summary to set the right tax amounts, but cannot find the line. This solves the issue by using a new hook in accounting that prevents these $0 tax lines from being excluded. opw-4493544 ## PR note Alternative to https://github.com/odoo/enterprise/pull/80095. Forward-Port-Of: odoo/enterprise#81675 Forward-Port-Of: odoo/enterprise#80097
Versions -------- - 17.0+ Community PR: https://github.com/odoo/odoo/pull/201768 Steps ----- 1. Have a internal user with only Sales: Own Documents access; 2. assign the user to a subscription; 3. as admin, create an invoice for the subscription; 4. assign yoursel as salesman on the invoice; 5. confirm the invoice; 6. log in as the other user; 7. try to create an invoice for the subscription assigned to you. Issue ----- Access error. Cause ----- Unlike the the other `_c
Original PR description
Versions -------- - 17.0+ Community PR: https://github.com/odoo/odoo/pull/201768 Steps ----- 1. Have a internal user with only Sales: Own Documents access; 2. assign the user to a subscription; 3. as…
Versions -------- - 17.0+ Community PR: https://github.com/odoo/odoo/pull/201768 Steps ----- 1. Have a internal user with only Sales: Own Documents access; 2. assign the user to a subscription; 3. as admin, create an invoice for the subscription; 4. assign yoursel as salesman on the invoice; 5. confirm the invoice; 6. log in as the other user; 7. try to create an invoice for the subscription assigned to you. Issue ----- Access error. Cause ----- Unlike the the other `_compute_amount_*` methods of sale.order, `_compute_amount_invoiced` isn't computed with `sudo`. This isn't an issue when just using `sale`, as it's computed with only sale order fields, but if an override attempts to check `invoice_ids`, it will throw an error if it has an invoice you don't have access to. Solution -------- In `sale`: - Bring the compute method in line with other `_compute_amount_*` methods, add `compute_sudo=True` to the `amount_invoiced` field. In `sale_subscription`: - Add a test to prevent regression. opw-4554639 Forward-Port-Of: odoo/enterprise#81658 Forward-Port-Of: odoo/enterprise#81461
Description of the issue this commit addresses: A traceback is raised when importing some .cod files for bank transactions because the server tries to create a date element with a string that doesn't match the expected format. --- Steps to reproduce: 1. Install l10n_be_coda 2. Go to the accounting dashboard and import the file `02-minimal-test.cod` from the linked ticket. 3. A traceback is raised --- Desired behavior after this commit is merged: The file import doesn't rai
Original PR description
Description of the issue this commit addresses: A traceback is raised when importing some .cod files for bank transactions because the server tries to create a date element with a string that doesn't…
Description of the issue this commit addresses: A traceback is raised when importing some .cod files for bank transactions because the server tries to create a date element with a string that doesn't match the expected format. --- Steps to reproduce: 1. Install l10n_be_coda 2. Go to the accounting dashboard and import the file `02-minimal-test.cod` from the linked ticket. 3. A traceback is raised --- Desired behavior after this commit is merged: The file import doesn't raise a traceback. --- Note on the fix: The issue happened because in `_get_coda_file_statement()`, the date is expected to be on the index range 115-120 but the the decoding of the file in `_parse_bank_statement_file()` transformed a "€" in "Ôé¼" which moved the date to indexes 117-122. This wrong translation of encoding happened because cp850 was used - which doesn't support currency symbols - instead of utf_8 because the latter was stopped by a non matching regex that was missing the currency symbols. This commits includes currency symbols in the validating regex so that the most appropriate encoding is validated as often as possible. --- opw-4546281 Forward-Port-Of: odoo/enterprise#81329
In the point of sale environnement we want to be able to edit html field in a minimal way. So only core plugins are added to the html_editor. As we have a special assets environnement for the point_of_sale we can directly patch the main `htmlField` definition without impacting main assets of Odoo. Community: 198482 Forward-Port-Of: odoo/enterprise#79984 Forward-Port-Of: odoo/enterprise#79703
Original PR description
In the point of sale environnement we want to be able to edit html field in a minimal way. So only core plugins are added to the html_editor. As we have a special assets environnement for the point_of_sale we can directly patch the main `htmlField` definition without impacting main assets of Odoo. Community: 198482 Forward-Port-Of: odoo/enterprise#79984 Forward-Port-Of: odoo/enterprise#79703
28 changes
Resolved issues and error corrections
Manual invoice emails now send correctly when the invoice customer has no email address but another recipient is selected. This prevents valid invoice emails from being blocked and helps ensure customers or contacts receive invoices as intended.
Original PR description
On manual sending an invoice email via wizard, if the invoice partner has no email, and another recipient is set as recipient, no mail is sent. This was caused by a check only allowing emails to be sent for invoices with partners having an email. Task: opw-4604810
Deleting a quotation attachment before sending it by email no longer triggers an error. This helps sales users adjust email attachments smoothly without interruption during the quotation process.
Original PR description
**Issue**: A traceback error is raised when deleting the quotation attachment before sending it via email. **Steps to reproduce:** - go to Sales. - open a quotation. - click "Send by Email." - delete the attachment. A traceback error occurs. opw-4486182
This update fixes a documentation example for grouped data reading by removing an unsupported option. It helps developers follow accurate guidance and avoid confusion when using the feature.
Original PR description
The function does not take an `order` parameter. closes odoo/documentation#12557 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Dropdown menus now close as expected when used inside embedded page areas such as iframes or shadow-based components. This prevents menus from staying open unexpectedly, improving usability in more complex Odoo screens.
Original PR description
When opening a dropdown inside an `IFrame` or `Shadow DOM`, clicking inside the nested DOM does not trigger auto-close. This happens because the event handler checks whether the clicked element is inside the main document, which is not the case for elements inside an IFrame or Shadow DOM. This commit fixes the issue by ensuring that, in such scenarios, the correct document context (nested DOM) is used for the click detection instead of the clicked element itself. Task-4525603 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
The point of sale combo selection screen now displays any extra price tied to combo product options. This helps cashiers and customers see accurate pricing before the order is confirmed, and improves readability for option price labels.
Original PR description
Before this commit, the price extra of a product in a combo was not shown in the POS interface. This commit fixes this issue by adding the price extra to the product card in the combo configurator popup. The commit also adds a space between the option name and the option extra price in the case of an "select" attribute selection. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This update adjusts two localization modules so their setup data is created reliably with the latest loading process. It helps prevent missing tax or invoicing configuration when installing or updating these localizations.
Original PR description
In Belgium, certain tax grids (e.g., 81, 82) in the VAT report force negative amounts to 0, as the amounts are carried over to the next period. However, this behavior confuses users, especially VAT experts, as they see 0 instead of the actual negative amount. To improve clarity: - Negative values are now displayed instead of being forced to 0. - The carryover mechanism remains unchanged, and the explanatory infobullet is still displayed. Task-4589150
This change fixes a randomly failing automated test in the appointment scheduling area. It makes the test suite more stable, helping developers detect real issues more reliably without affecting day-to-day users.
Original PR description
This commit is meant to fix a test in appointment failing randomly. The issue likely came from the fact that records were altered several times on the same model within the same test, with the gantt view being destroyed and re-created each time. To avoid this issue altogether, the test has been split for each case.
This update adjusts automated checks for spreadsheet pivot search behavior after a related fix. It helps ensure values containing quotation marks are handled correctly, reducing the risk of search issues in spreadsheet pivots.
Original PR description
Adapt tests after a bug fix in o-spreadsheet repo Task: 4061068
Spreadsheet pivot auto-complete tests were updated to reflect a related bug fix. This helps ensure users can search pivot values containing quotation marks reliably.
Original PR description
Adapt tests after a bug fix in o-spreadsheet repo Task: 4061068
Miscellaneous changes
Versions -------- - 17.0+ Steps ----- 1. Create an event with an attendee limit of 1; 2. publish the event; 3. add a ticket to you cart; 4. go through checkout until your reach the payment page; 5. open a incognito window or different browser; 6. add same ticket to cart; 7. go to the payment step; 8. click "Pay now" and wait for confirmation; 9. go to previous window, and click "Pay now". Issue ----- The payment gets confirmed, but you land on an internal server error due to
Original PR description
Versions -------- - 17.0+ Steps ----- 1. Create an event with an attendee limit of 1; 2. publish the event; 3. add a ticket to you cart; 4. go through checkout until your reach the payment page; 5.…
Versions -------- - 17.0+ Steps ----- 1. Create an event with an attendee limit of 1; 2. publish the event; 3. add a ticket to you cart; 4. go through checkout until your reach the payment page; 5. open a incognito window or different browser; 6. add same ticket to cart; 7. go to the payment step; 8. click "Pay now" and wait for confirmation; 9. go to previous window, and click "Pay now". Issue ----- The payment gets confirmed, but you land on an internal server error due to a lack of available seats for the event. Cause ----- Commit ffc9026361beb added a check before payment to ensure the tickets still had seats available. The event itself however can have a separate seat limit that isn't currently being checked. Solution -------- Add a check on the event's seat availability to `_validate_transaction_for_order`. Also, in case there's a lack of seats, display the correct number of lacking seats for the order instead of `-available_seats`. opw-4453539 Forward-Port-Of: odoo/odoo#201906 Forward-Port-Of: odoo/odoo#200400
We do not create create caba moves anymore for PoS session closing moves. (See commits 2f62d5c0d78371be70586c79cb2b5931e733b042 and 66e3696b4f06c657ff71af30178f0ac69d552632) But now there are 2 issues when using (only) caba taxes in a PoS session. (1) The closing move does not appear on the tax report. (2) The closing move line do not get the right tax tags (they do not have any). Issue (1) is solved by making pos closing moves `always_tax_exigible`. (In case they did not creat cas
Original PR description
We do not create create caba moves anymore for PoS session closing moves. (See commits 2f62d5c0d78371be70586c79cb2b5931e733b042 and 66e3696b4f06c657ff71af30178f0ac69d552632) But now there are 2 issues when using (only) caba taxes in a PoS session. (1) The closing move does not appear on the tax report. (2) The closing move line do not get the right tax tags (they do not have any). Issue (1) is solved by making pos closing moves `always_tax_exigible`. (In case they did not creat cash basis entries; for backwards compatibility). Issue (2) is solved by telling the tax computation for the lines to include caba taxes (instead of just changing the account to be the "final" account and not the caba transition account). opw-4355124 Forward-Port-Of: odoo/odoo#202308 Forward-Port-Of: odoo/odoo#201812
### Steps to reproduce: - Create a storable product tracked by serial number available from the pos and with a set pos category. - Open a pos session and click on your product. > A dialog openns for you to register serial numbers. - Edit a first SN: SN001 and press enter > A new line can now be set to create a second one. - Edit a second SN: SN002 and press enter - Confirm the dialog #### > The quantity displayed on teh POS order line is 1 rather than 2. ### Cause of the issue: C
Original PR description
### Steps to reproduce: - Create a storable product tracked by serial number available from the pos and with a set pos category. - Open a pos session and click on your product. > A dialog openns for…
### Steps to reproduce: - Create a storable product tracked by serial number available from the pos and with a set pos category. - Open a pos session and click on your product. > A dialog openns for you to register serial numbers. - Edit a first SN: SN001 and press enter > A new line can now be set to create a second one. - Edit a second SN: SN002 and press enter - Confirm the dialog #### > The quantity displayed on teh POS order line is 1 rather than 2. ### Cause of the issue: Clicking on the product card from the pos will trigger a call of the `AddProductToCurrentOrder` that will add a quantity of the product set via the options: https://github.com/odoo/odoo/blob/6197233ef1611ddd974cfdb06ae2568e4af369de/addons/point_of_sale/static/src/app/store/pos_store.js#L1965-L1978 However, the `getAddProductOptions` call sets a quantity to add of 1 no matter if you added multiple or even removed multiple registered SN. https://github.com/odoo/odoo/blob/6197233ef1611ddd974cfdb06ae2568e4af369de/addons/point_of_sale/static/src/app/store/models.js#L180 On the other hand, since at the moment of this call we do not have the info of the lines that were removed in the dialog it is not possible to always provide the correct (possibly negative) quantity to add to the line for the qty to be correctly handledby the posorder line. However, just as when you edit the line dirrectly this can be achieved by updating the quantity based on the relevant lots present on the line: https://github.com/odoo/odoo/blob/6197233ef1611ddd974cfdb06ae2568e4af369de/addons/point_of_sale/static/src/app/store/models.js#L570-L572 opw-4554842 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#201550 Forward-Port-Of: odoo/odoo#199127
In point of sale it is possible to manage several orders at the same time and, whenever an order is paid, all orders will be synchronized with the backend. This causes an issue with loyalty rewards that are granted even for orders not yet completed. Steps to reproduce: - Have a Loyalty Program configured as follows: - Program Type: Loyalty Card - Grant 1 point per $ spent - Create a Loyalty card for [Partner] - Open POS Session - Add a [Partner] as customer - Add product - Leaving
Original PR description
In point of sale it is possible to manage several orders at the same time and, whenever an order is paid, all orders will be synchronized with the backend. This causes an issue with loyalty rewards…
In point of sale it is possible to manage several orders at the same time and, whenever an order is paid, all orders will be synchronized with the backend. This causes an issue with loyalty rewards that are granted even for orders not yet completed. Steps to reproduce: - Have a Loyalty Program configured as follows: - Program Type: Loyalty Card - Grant 1 point per $ spent - Create a Loyalty card for [Partner] - Open POS Session - Add a [Partner] as customer - Add product - Leaving the order as it is, create a new order - Add just a product - Validate & Pay the second order Issue: Loyalty points will be added to [Partner] Card, as if the order was actually paid This occurs because we don't check that the order has been actually paid before processing rewards opw-4538040 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#199108
Some of our new deductible taxes were wrong, this commit fixes them. It also adds a new tax for deductiblility of 35% in the EU (which is more frequent), and one for deductibility of 35% in the case of delivery of goods already in Belgium by a foreign entity. task-none Forward-Port-Of: odoo/odoo#202241 Forward-Port-Of: odoo/odoo#201782
Original PR description
Some of our new deductible taxes were wrong, this commit fixes them. It also adds a new tax for deductiblility of 35% in the EU (which is more frequent), and one for deductibility of 35% in the case of delivery of goods already in Belgium by a foreign entity. task-none Forward-Port-Of: odoo/odoo#202241 Forward-Port-Of: odoo/odoo#201782
Feedbacks given talked about the fact the negative lines were wrong and should be considered as discounts. But that's not the case for every user and is more confusing than anything else. So we remove this logic from Italy. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#201203 Forward-Port-Of: odoo/odoo#199100
Original PR description
Feedbacks given talked about the fact the negative lines were wrong and should be considered as discounts. But that's not the case for every user and is more confusing than anything else. So we remove this logic from Italy. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#201203 Forward-Port-Of: odoo/odoo#199100
Current behaviour: --- Mexican phone numbers are not managed correctly following the 2019 changes in Mexico. (Removing a 1 in phone numbers) Cause of the issue: --- The phonenumbers library removing support of mexican phone numbers starting with 1 in 8.13.38 The Whatsapp API still using the mexican phone numbers starting with 1 Fixes: --- Patched the phonenumbers library, removing 1 at the right place for mexican phone numbers. Similar to: https://github.com/odoo/odoo/commit/53885
Original PR description
Current behaviour: --- Mexican phone numbers are not managed correctly following the 2019 changes in Mexico. (Removing a 1 in phone numbers) Cause of the issue: --- The phonenumbers library removing support of mexican phone numbers starting with 1 in 8.13.38 The Whatsapp API still using the mexican phone numbers starting with 1 Fixes: --- Patched the phonenumbers library, removing 1 at the right place for mexican phone numbers. Similar to: https://github.com/odoo/odoo/commit/53885e41867653ad45ca3aef55886c280240b76a Changed the forcing to international format when parsing, to make sure the patches are applied before detecting an issue. Similar to: https://github.com/odoo/odoo/commit/29a4de8e29a2e330b8e5993c9fde23c69a2eff5e opw-4473528 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#197838
In Point of sale promotion program may be auto applied to the order whenever the conditions of the promotions are satisfied. However, a promo 'buy x get y' is auto applied inconsistently when comparing the output with the reward button (or applying the promotion on a sales order) Steps to reproduce: - Have a promo program like follows: - Program Type: Buy X Get Y - Condition: - Minimum quantity: 2 - Grant: 1 credit per order - Product: [PRODUCT] - Reward: - I
Original PR description
In Point of sale promotion program may be auto applied to the order whenever the conditions of the promotions are satisfied. However, a promo 'buy x get y' is auto applied inconsistently when…
In Point of sale promotion program may be auto applied to the order
whenever the conditions of the promotions are satisfied.
However, a promo 'buy x get y' is auto applied inconsistently when
comparing the output with the reward button (or applying the promotion on a sales
order)
Steps to reproduce:
- Have a promo program like follows:
- Program Type: Buy X Get Y
- Condition:
- Minimum quantity: 2
- Grant: 1 credit per order
- Product: [PRODUCT]
- Reward:
- In exchange of: 1 credit
- Product: [PRODUCT]
- Quantity rewarded: 1
- Open POS Session
- Add 2x [Product]
Issue:
- "Free" [PRODUCT] line is added to the order with negative price
So the customer will buy 1 [PRODUCT] and get 2 that is not what we want
with the promo program
If we delete the reward line, click on reward button and choose again
the same promo we get the correct behavior:
- Exisitng [PRODUCT] line quantity raised to 3
- "Free" [PRODUCT] line added to the order with negative price
opw-4563825
Forward-Port-Of: odoo/odoo#199752Scenario: - create a redirect 308 from route with a sitemap method (eg. /website/version) - go to /sitemap.xml (you might need to delete sitemap in attachment before) Result: you get a 500 error, with this traceback in server logs: ``` … File "/Users/odoo/src/odoo/17.0/addons/website/models/website.py", line 1333, in _enumerate_pages if rule.endpoint.func.__func__ in sitemap_endpoint_done: AttributeError: 'functools.partial' object has no attribute '__func__'. Did you mean: '__d
Original PR description
Scenario: - create a redirect 308 from route with a sitemap method (eg. /website/version) - go to /sitemap.xml (you might need to delete sitemap in attachment before) Result: you get a 500 error, with this traceback in server logs: ``` … File "/Users/odoo/src/odoo/17.0/addons/website/models/website.py", line 1333, in _enumerate_pages if rule.endpoint.func.__func__ in sitemap_endpoint_done: AttributeError: 'functools.partial' object has no attribute '__func__'. Did you mean: '__doc__'? ``` Fix: take a second level of partial (from the redirection and not the route) when handling duplicates routes. opw-4594629 opw-4614216 opw-4628703 Forward-Port-Of: odoo/odoo#202280 Forward-Port-Of: odoo/odoo#200979
Before this PR, the `bus subscription is refreshed when channel is joined` test was sometimes failing. Since [1], opening a thread *always* result in a bus subscription being issued (the channel is added to the bus channels as a string). This is not required: bus subscriptions are based on user's channels (see `ir_websocket@_build_bus_channel_list`). When a new channel is added, the client subscribes again (see `toggleBusSubscription`). Channels should only be added explictly when a channe
Original PR description
Before this PR, the `bus subscription is refreshed when channel is joined` test was sometimes failing. Since [1], opening a thread *always* result in a bus subscription being issued (the channel is…
Before this PR, the `bus subscription is refreshed when channel is joined` test was sometimes failing. Since [1], opening a thread *always* result in a bus subscription being issued (the channel is added to the bus channels as a string). This is not required: bus subscriptions are based on user's channels (see `ir_websocket@_build_bus_channel_list`). When a new channel is added, the client subscribes again (see `toggleBusSubscription`). Channels should only be added explictly when a channel the user is not a member of is opened. This addition causes a race condition between `toggleBusSubscription` and the explicit addition of the channel, resulting in a non deterministic behavior. This PR fixes this issue: channel is only added when required, which is not the case in this test thus solving the issue. fixes runbot-106895 [1]: https://github.com/odoo/odoo/pull/174473 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#202226 Forward-Port-Of: odoo/odoo#202009
In this commit: https://github.com/odoo/odoo/pull/192733/commits/ca9c9b319a7b653f7e17a7de1789081694bbd9d7 We introduced the issues data in the additional document reference. That broke that rule https://docs.peppol.eu/poacc/billing/3.0/rules/ubl-tc434/UBL-CR-112/ no task id --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#202359
Original PR description
In this commit: https://github.com/odoo/odoo/pull/192733/commits/ca9c9b319a7b653f7e17a7de1789081694bbd9d7 We introduced the issues data in the additional document reference. That broke that rule https://docs.peppol.eu/poacc/billing/3.0/rules/ubl-tc434/UBL-CR-112/ no task id --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#202359
…versalCommunication Our facturx XML are not correct, they are raising "/rsm:CrossIndustryInvoice[1]/rsm:SupplyChainTradeTransaction[1] /ram:ApplicableHeaderTradeAgreement[1]/ram:BuyerTradeParty[1]/ ram:DefinedTradeContact[1]/ram:EmailURIUniversalCommunication[1]/ram:URIID[1]" "Attribute @schemeID' marked as not used in the given context." errors (for both `BuyerTradeParty`and `SellerTradeParty`). Which in other words means the parameter `@shemeID` should not be there in the tag EmailURIU
Original PR description
…versalCommunication Our facturx XML are not correct, they are raising "/rsm:CrossIndustryInvoice[1]/rsm:SupplyChainTradeTransaction[1] /ram:ApplicableHeaderTradeAgreement[1]/ram:BuyerTradeParty[1]/ ram:DefinedTradeContact[1]/ram:EmailURIUniversalCommunication[1]/ram:URIID[1]" "Attribute @schemeID' marked as not used in the given context." errors (for both `BuyerTradeParty`and `SellerTradeParty`). Which in other words means the parameter `@shemeID` should not be there in the tag EmailURIUniversalCommunication. ### Before  ### After  Tested on Ecosio with ZUGFeRD 2.3.2 EXTENDED, that is the same as FacturX 1.07.2. opw-4571664 Forward-Port-Of: odoo/odoo#202130 Forward-Port-Of: odoo/odoo#201623
Steps: - Install Ecommerce - Add some products to the cart - Remove them using the 'remove' option - Go to my/orders - select any order, then click on Order again - Click on the Add To Cart button - You'll see one confirmation dialog Issue: - By clicking on the add to cart button, that confirmation dialog should not be there as the cart is empty Cause: - Cart quantity does not update when the last product is removed Fix: - While removing the last product, set cart quantity in
Original PR description
Steps: - Install Ecommerce - Add some products to the cart - Remove them using the 'remove' option - Go to my/orders - select any order, then click on Order again - Click on the Add To Cart button - You'll see one confirmation dialog Issue: - By clicking on the add to cart button, that confirmation dialog should not be there as the cart is empty Cause: - Cart quantity does not update when the last product is removed Fix: - While removing the last product, set cart quantity in sessionstorage to ensure that the last removal is recorded affected version-17.0 opw-4566505 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#202131 Forward-Port-Of: odoo/odoo#199921
The test ensures that pos moves with caba taxes are also included in the tax report and behave the same as non-caba taxes. This was necessary since the closing moves do not create caba entries anymore. (See the community commit) Forward-Port-Of: odoo/enterprise#81685 Forward-Port-Of: odoo/enterprise#81505
Original PR description
The test ensures that pos moves with caba taxes are also included in the tax report and behave the same as non-caba taxes. This was necessary since the closing moves do not create caba entries anymore. (See the community commit) Forward-Port-Of: odoo/enterprise#81685 Forward-Port-Of: odoo/enterprise#81505
Steps to reproduce ================== - Install hr_timesheets - Go to Timesheets > All Timesheets - Use the week scale - Scroll to the bottom => Take note of the last record (e.g.: Walter Horton) - Now use a mobile viewport - Make sure the week scale is still applied - Scroll to the bottom => The last record is not the same one as the desktop view Cause of the issue ================== The grid view uses a virtual scroll hook in order to not have to many dom nodes in memory at th
Original PR description
Steps to reproduce ================== - Install hr_timesheets - Go to Timesheets > All Timesheets - Use the week scale - Scroll to the bottom => Take note of the last record (e.g.: Walter Horton) -…
Steps to reproduce ================== - Install hr_timesheets - Go to Timesheets > All Timesheets - Use the week scale - Scroll to the bottom => Take note of the last record (e.g.: Walter Horton) - Now use a mobile viewport - Make sure the week scale is still applied - Scroll to the bottom => The last record is not the same one as the desktop view Cause of the issue ================== The grid view uses a virtual scroll hook in order to not have to many dom nodes in memory at the same time. For this to work, we need a consistent row height. On mobile, when grouping by x amount of fields, they are stacked on top of each other. When grouping by more than 2 fields, there wasn't enough space to display them all.  The `grid-template-rows` was set to auto on mobile in order to accomodate that case. Using auto means we no longer have a consistent row height. Solution ======== We restore the `gridTemplateRows` and allocate extra space when needed.  opw-4208357 Forward-Port-Of: odoo/enterprise#81617 Forward-Port-Of: odoo/enterprise#80476
Current behaviour: --- Mexican phone numbers are not managed correctly following the 2019 changes in Mexico. (Removing a 1 in phone numbers) Cause of the issue: --- The phonenumbers library removing support of mexican phone numbers starting with 1 in 8.13.38 The Whatsapp API still using the mexican phone numbers starting with 1 Fixes: --- See community commit Adding extra tests in test_whatsapp Similar to: https://github.com/odoo/enterprise/commit/a35a039e5fba569cd379b23d37ce512b
Original PR description
Current behaviour: --- Mexican phone numbers are not managed correctly following the 2019 changes in Mexico. (Removing a 1 in phone numbers) Cause of the issue: --- The phonenumbers library removing support of mexican phone numbers starting with 1 in 8.13.38 The Whatsapp API still using the mexican phone numbers starting with 1 Fixes: --- See community commit Adding extra tests in test_whatsapp Similar to: https://github.com/odoo/enterprise/commit/a35a039e5fba569cd379b23d37ce512b5a23f7e2 opw-4473528 Forward-Port-Of: odoo/enterprise#79416
This commit adds a missing step discarding the "Carrier Type" dialog to avoid a hanging "web_save" request after the end of the tour (cf. urgent save on page unload). This issue was reported with Chrome "new" headless mode becoming the default in Chrome 128+. Forward-Port-Of: odoo/enterprise#81689
Original PR description
This commit adds a missing step discarding the "Carrier Type" dialog to avoid a hanging "web_save" request after the end of the tour (cf. urgent save on page unload). This issue was reported with Chrome "new" headless mode becoming the default in Chrome 128+. Forward-Port-Of: odoo/enterprise#81689
### Issue: The current qty forecast of rental orders does not rely on incoming and outgoing quantities that could happen prior to the location period and would hence modify the availability forecast. ### Steps to reproduce: - Create a storable product that can be rented put 100 units in stock. - Create a sale order for 10 units of that product, confirm and confirm the delivery planned for next week. - Create a rental order for 5 units of that product for a period ulterior to the deliv
Original PR description
### Issue: The current qty forecast of rental orders does not rely on incoming and outgoing quantities that could happen prior to the location period and would hence modify the availability forecast.…
### Issue: The current qty forecast of rental orders does not rely on incoming and outgoing quantities that could happen prior to the location period and would hence modify the availability forecast. ### Steps to reproduce: - Create a storable product that can be rented put 100 units in stock. - Create a sale order for 10 units of that product, confirm and confirm the delivery planned for next week. - Create a rental order for 5 units of that product for a period ulterior to the delivery. - Look at the forecast rentable quantity. #### > It should be 90 but it is 100. ### Cause of the issue: The forcasted quantity of a rental order line is based on the `qty_available` of the product: https://github.com/odoo/enterprise/blob/01b6a70348ffa11a9ead2558571b1ccfa1dd3cbb/sale_stock_renting/models/sale_order_line.py#L115-L129 https://github.com/odoo/odoo/blob/3264e3399918b9627693e78d684ac9ac4ad3bd7d/addons/stock/models/product.py#L31-L43 However, this quantity does not take the incoming and outgoing moves that are planned to happend prior or during the location. In case the renting period starts at an ultarior date than today, it should rather be based on the `virtual_available` quantity of the product: https://github.com/odoo/odoo/blob/3264e3399918b9627693e78d684ac9ac4ad3bd7d/addons/stock/models/product.py#L44-L55 (note that since we need to take into account each of the incoming and outgoing moves that could happen prior to the location, the `from_date` context key needs to be set to today). opw-4552760 Forward-Port-Of: odoo/enterprise#81532 Forward-Port-Of: odoo/enterprise#81127
Description of the issue this commit addresses: A traceback is raised when importing some .cod files for bank transactions because the server tries to create a date element with a string that doesn't match the expected format. --- Steps to reproduce: 1. Install l10n_be_coda 2. Go to the accounting dashboard and import the file `02-minimal-test.cod` from the linked ticket. 3. A traceback is raised --- Desired behavior after this commit is merged: The file import doesn't rai
Original PR description
Description of the issue this commit addresses: A traceback is raised when importing some .cod files for bank transactions because the server tries to create a date element with a string that doesn't…
Description of the issue this commit addresses: A traceback is raised when importing some .cod files for bank transactions because the server tries to create a date element with a string that doesn't match the expected format. --- Steps to reproduce: 1. Install l10n_be_coda 2. Go to the accounting dashboard and import the file `02-minimal-test.cod` from the linked ticket. 3. A traceback is raised --- Desired behavior after this commit is merged: The file import doesn't raise a traceback. --- Note on the fix: The issue happened because in `_get_coda_file_statement()`, the date is expected to be on the index range 115-120 but the the decoding of the file in `_parse_bank_statement_file()` transformed a "€" in "Ôé¼" which moved the date to indexes 117-122. This wrong translation of encoding happened because cp850 was used - which doesn't support currency symbols - instead of utf_8 because the latter was stopped by a non matching regex that was missing the currency symbols. This commits includes currency symbols in the validating regex so that the most appropriate encoding is validated as often as possible. --- opw-4546281 Forward-Port-Of: odoo/enterprise#81329