Friday, January 10, 2025
29 changes · saas-17.4
Resolved issues and error corrections
Accounting users can now update the partner on a bank statement's liquidity line from the accounting items list without being incorrectly blocked by a readonly-field error. This restores an expected editing flow for posted statement-related entries while keeping the underlying protection in place elsewhere.
Original PR description
This commit adds a missing skip_readonly_check context from the changes to add readonly check in https://github.com/odoo/odoo/commit/b5d94f5563641adfd93bf431c139bc2b78d67beb Steps to reproduce: - create a statement line - edit the partner of the liquidity line using the accounting items list view - -> UserError: You cannot modify the following readonly fields on a posted move opw-4453940
This fix prevents Mercado Pago payment callbacks from being processed when the related pending payment line no longer exists. It helps avoid payment flow errors in point of sale sessions and makes checkout handling more reliable.
Original PR description
Add a check on MP callback when paying. Verify if the pending payment line exist before processing the callback. Same as: - https://github.com/odoo/odoo/pull/186580 - https://github.com/odoo/odoo/pull/190735 opw-4349957 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This change removes a pricing override that had been accidentally reintroduced during a previous update. It helps keep website shop pricing calculations aligned with the intended behavior and avoids potential inconsistencies before discounts are applied.
Original PR description
Partial Revert of 2f7bc1e606809b9a65d357c08fea26b364d81941 The fix applied in 17.0 when forward porting it reintroduced a function that was previously removed. [Mentioned diff](https://github.com/odoo/odoo/commit/b25e8e2cfefcf2af9af7a7cbe04110ac35f81f3d#diff-60accb44cf04ef4bd2a178a0dfefeb9facdf3724caf4ba080ffa63d8b08c807eR35:~:text=%2B-,def%20_get_pricelist_price_before_discount(self)%3A,-36) --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Fixed an issue where a subtask converted into a regular task could remain hidden from the project dashboard. This ensures teams can reliably see and track work items after changing their task structure.
Original PR description
Steps to reproduce: 1. Create a task, and a subtask 3. Open the subtask 4. From the gear icon, click "Convert to Task/Sub-Task" 5. Remove the parent task and click "Convert Task" 6. Go to the project dashboard > the subtask is not shown. Why? The above reproducing steps lead to the subtask having the `display_in_project` stored as `False`, hence it's not visible on the dashboard page. This is because `_compute_project_id` interrupted the computation flow of `display_in_project` by a call to `remove_to_compute` [1]. Fix: In the `write` method, explicitly set `display_in_project` to `True` if the parent_id has been removed. [1]: https://github.com/odoo/odoo/blob/9dec8329523d4966243c6491e7e556e643af6cdf/addons/project/models/project_task.py#L337 opw-4384222
Miscellaneous changes
**Specifications:** When the domain is specified, helper in crm helper should display an extra line, which explains that any email sent to alias@domain will create a lead. **Technical reason:** A code was added in `crm.lead` which checks for the company, but in data file company was already specified as `False`. Hence, the missing line. **After this PR:** If the custom email domain is set, crm helper will display an extra line. Task-4377574 Forward-Port-Of: odoo/odoo#190936
Original PR description
**Specifications:** When the domain is specified, helper in crm helper should display an extra line, which explains that any email sent to alias@domain will create a lead. **Technical reason:** A code was added in `crm.lead` which checks for the company, but in data file company was already specified as `False`. Hence, the missing line. **After this PR:** If the custom email domain is set, crm helper will display an extra line. Task-4377574 Forward-Port-Of: odoo/odoo#190936
Before this commit: When a user duplicates a server action, the new action retains the exact same name as the original. After this commit: Duplicated server actions are assigned a name with the suffix "(copy)" to differentiate them from the original action. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#190383
Original PR description
Before this commit: When a user duplicates a server action, the new action retains the exact same name as the original. After this commit: Duplicated server actions are assigned a name with the suffix "(copy)" to differentiate them from the original action. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#190383
Description of the issue this PR addresses: I. Commit [1] handled cases of pressing enter at the edge of an anchor, which is a child of an unbreakable element. The commit inserted the `br`'s after anchors; however, it missed the situation where the anchor tags are block elements nested inside an unbreakable element inside a `li`. In this specific case, inserting two `br` tags after a anchor block resulted in the creation of two new lines. This PR handles that case by only inserting one `
Original PR description
Description of the issue this PR addresses: I. Commit [1] handled cases of pressing enter at the edge of an anchor, which is a child of an unbreakable element. The commit inserted the `br`'s after…
Description of the issue this PR addresses: I. Commit [1] handled cases of pressing enter at the edge of an anchor, which is a child of an unbreakable element. The commit inserted the `br`'s after anchors; however, it missed the situation where the anchor tags are block elements nested inside an unbreakable element inside a `li`. In this specific case, inserting two `br` tags after a anchor block resulted in the creation of two new lines. This PR handles that case by only inserting one `br` tag after the anchor, rather than both. II. Previously when changing selection between links in website, when clicking on a link the previous link used to get selected. This commit makes sure that when changing selection in between links it selects the correct link. III. This PR ensures that the link popover closes when the cursor moves outside the link. [1]: https://github.com/odoo/odoo/commit/df6f8dd0c54c40ea7edbd3821ae068d79b1b7af7 task-3631910 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#192299 Forward-Port-Of: odoo/odoo#171469
Previously, settling a sale.order from the POS of a Belgian company would auto check the invoice option before paying. Steps to reproduce: ------------------- * Install `l10n_be_pos_cert` * Switch to the Beligian company * Crete a quotation in **Sale** app * Add any partner and any product, remove all taxes for the product line * Save * Open pos shop * Settle the order * Go to the payment screen > Observation: The invoice button is already selected. Why the fix: ------------ T
Original PR description
Previously, settling a sale.order from the POS of a Belgian company would auto check the invoice option before paying. Steps to reproduce: ------------------- * Install `l10n_be_pos_cert` * Switch to…
Previously, settling a sale.order from the POS of a Belgian company would auto check the invoice option before paying. Steps to reproduce: ------------------- * Install `l10n_be_pos_cert` * Switch to the Beligian company * Crete a quotation in **Sale** app * Add any partner and any product, remove all taxes for the product line * Save * Open pos shop * Settle the order * Go to the payment screen > Observation: The invoice button is already selected. Why the fix: ------------ This invoice option was auto selected since this commit: https://github.com/odoo/odoo/commit/c760fbb1bd2e7725b5e759198684a07060612033 The following commit https://github.com/odoo/odoo/commit/3a5e22218708b4b6c9aedfa965d9f3c279edbd46 updates the previous one as the invoice enforcement is only needed when we have intracom taxes on the SO. Thus when no intracom taxes apply we can still decide wether or not to invoice. We fallback on the default behavior which is to have the invoice button un-selected. opw-4334095 Forward-Port-Of: odoo/odoo#191254 Forward-Port-Of: odoo/odoo#188400
Update the OWL lib. Release notes: https://github.com/odoo/owl/releases/tag/v2.5.3 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#193192
Original PR description
Update the OWL lib. Release notes: https://github.com/odoo/owl/releases/tag/v2.5.3 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#193192
**Steps to reproduce:** - Install account_accountant, sale_management and l10n_sa - Switch to a Saudi Arabian company (e.g. SA Company) - Create a payment term: * Description on the Invoice: [anything] * Display terms on invoice: [checked] * Terms: [add many lines] - Create a SO: * Customer: [any] * Payment Terms: [the created payment term] * Order lines: [anything] - Confirm the SO - Create an invoice from the SO - Confirm the invoice - Generate the invoice **Issue:
Original PR description
**Steps to reproduce:** - Install account_accountant, sale_management and l10n_sa - Switch to a Saudi Arabian company (e.g. SA Company) - Create a payment term: * Description on the Invoice: [anything] * Display terms on invoice: [checked] * Terms: [add many lines] - Create a SO: * Customer: [any] * Payment Terms: [the created payment term] * Order lines: [anything] - Confirm the SO - Create an invoice from the SO - Confirm the invoice - Generate the invoice **Issue:** The description of the payment term is displayed on the invoice but the terms are not displayed as it is the case in any other localization. **Cause:** "report_invoice" is replaced by the Arabic/English invoice in l10n_gcc_invoice module. However, the logic to display the terms has not been added in the template for Arabic/English invoice. opw-4291232 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#188456
Previously, settling a sale.order from the POS of a Belgian company would require the creation of an invoice. This was actually only necessary when the sale contains intra-community (EU) taxes. Those are the taxes that are mapped to (dest_tax_id) by the Intra-Community fiscal position. See https://github.com/odoo-dev/odoo/commit/70f3b748f7098b60e02e8235f2007e4b94f666c3 This commit narrows down the enforcement of the invoice creation to only target sales made with such taxes. opw-[3
Original PR description
Previously, settling a sale.order from the POS of a Belgian company would require the creation of an invoice. This was actually only necessary when the sale contains intra-community (EU) taxes. Those are the taxes that are mapped to (dest_tax_id) by the Intra-Community fiscal position. See https://github.com/odoo-dev/odoo/commit/70f3b748f7098b60e02e8235f2007e4b94f666c3 This commit narrows down the enforcement of the invoice creation to only target sales made with such taxes. opw-[3986443](https://www.odoo.com/odoo/project.task/3986443?cids=1) --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#179303 Forward-Port-Of: odoo/odoo#170186
This commit removes the existing currency rate before creating the new ones as there is a unicity constrains on the currency rate date. runbot-error: 111437 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#192831
Original PR description
This commit removes the existing currency rate before creating the new ones as there is a unicity constrains on the currency rate date. runbot-error: 111437 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#192831
__Current behavior before commit:__ In [`a27afdb`][1], the field `end_type` from the model `calendar.event` became computed and therefore not stored anymore. Databases that upgraded from an anterior version still have the column `end_type` in their table `calendar_event`. In [`f6df418`][2], a reference to `end_type` from the table `calendar_recurrence` has been added in the SQL query. If the field `end_type` is still in the table `calendar_event` it is ambiguous which one this query should
Original PR description
__Current behavior before commit:__ In [`a27afdb`][1], the field `end_type` from the model `calendar.event` became computed and therefore not stored anymore. Databases that upgraded from an anterior version still have the column `end_type` in their table `calendar_event`. In [`f6df418`][2], a reference to `end_type` from the table `calendar_recurrence` has been added in the SQL query. If the field `end_type` is still in the table `calendar_event` it is ambiguous which one this query should use. Ultimately leading to this error: ``` psycopg2.errors.AmbiguousColumn: column reference "end_type" is ambiguous LINE 22: ... WHEN cal.recurrency AND end_type =... ``` __Description of the fix:__ Remove the ambiguity by explicitly specifying `rrule`, the alias of the `calendar_recurrence` table. opw-4406814 [1]: https://github.com/odoo/odoo/commit/a27afdb [2]: https://github.com/odoo/odoo/commit/f6df418 Forward-Port-Of: odoo/odoo#192946
When exporting a SA E-invoice file, the system needs to collect invoice line without downpayment lines. However, when collecting tax values, because of an error correction mechanism, the tax amount will still include the amount of the downpayment tax line Steps to reproduce (with SA localization installed and SA company): - Create a SO of 1000$ with 15% tax - Make a downpayment of 100$ with 15% tax and confirm - Make the final invoice with downpayment deducted - Confirm and send e-invo
Original PR description
When exporting a SA E-invoice file, the system needs to collect invoice line without downpayment lines. However, when collecting tax values, because of an error correction mechanism, the tax amount…
When exporting a SA E-invoice file, the system needs to collect invoice line without downpayment lines. However, when collecting tax values, because of an error correction mechanism, the tax amount will still include the amount of the downpayment tax line Steps to reproduce (with SA localization installed and SA company): - Create a SO of 1000$ with 15% tax - Make a downpayment of 100$ with 15% tax and confirm - Make the final invoice with downpayment deducted - Confirm and send e-invoice for validation Issue: The invoice is validated, but a warning is logged ``` Invoice was Accepted by ZATCA (with Warnings) The invoice was accepted by ZATCA, but returned warnings. Please, check the response below: BR-CO-17: VAT category tax amount (BT-117) = VAT category taxable amount (BT-116) x (VAT category rate (BT-119) / 100), rounded to two decimals. BR-S-09: The VAT category tax amount (BT-117) in a VAT breakdown (BG-23) where VAT category code (BT-118) is Standard rated shall equal the VAT category taxable amount (BT-116) multiplied by the VAT category rate (BT-119). ``` As the warning states the is an issue with the tax computation. When collecting amounts from the final invoice, we should filter out downpayment amounts, but due to the error correction mechanism introduced to account for manual modification of the journal items, the filter is ignored, so we will have the filtered base amount (1000) and the unfiltered tax amount (135 instead of 150) A possible solution is to avoid the error correction when we know we need to filter invoice lines opw-4380798 Forward-Port-Of: odoo/odoo#192596 Forward-Port-Of: odoo/odoo#191867
User of a branch company may change accounts configuration product categories, but currently this settings is ignored, as accounts are fetched from the main company instead Steps to reproduce: - Create a branch company - Open a product category [CATEG] (i.e. Office Furniture) and set - 'Inventory valuation': 'Automated' - 'Stock Input Account': [Account] - Assign product category [CATEG] to a product [PROD] - Create a Vendor bill with [PROD] and Save - Check Journal items tab
Original PR description
User of a branch company may change accounts configuration product categories, but currently this settings is ignored, as accounts are fetched from the main company instead Steps to reproduce: - Create a branch company - Open a product category [CATEG] (i.e. Office Furniture) and set - 'Inventory valuation': 'Automated' - 'Stock Input Account': [Account] - Assign product category [CATEG] to a product [PROD] - Create a Vendor bill with [PROD] and Save - Check Journal items tab Issue: Product line account is not [Account] but it is taken from the main company settings This occurs due to a fix [1] done to have `stock_account` in sync with the base method in `account`. However, the forced company in base method was changed in a refactor [2] [1] https://github.com/odoo/odoo/commit/0b07210fe1f1c451eb648deff74c3ab37c8c09bd [2] https://github.com/odoo/odoo/commit/d8d47f9ff8554f4b39487fd2f13c153c7d6f958d opw-4297203 Forward-Port-Of: odoo/odoo#191349
**Current behavior before PR:** prior to this PR fa-plane icon does not displayed after user comes online/offline/away while on leave without any reload. **Desired behavior after PR is merged:** now fa-plane icon is displayed with respective color of im_status without any reload task-4237384 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#192894 Forward-Port-Of: odoo/odoo#184471
Original PR description
**Current behavior before PR:** prior to this PR fa-plane icon does not displayed after user comes online/offline/away while on leave without any reload. **Desired behavior after PR is merged:** now fa-plane icon is displayed with respective color of im_status without any reload task-4237384 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#192894 Forward-Port-Of: odoo/odoo#184471
The bank reconciliation widget shouldn't be allowed to work/match more than what's possible through the UI. Steps to reproduce the bug * create child company CHILD 1, with an invoice $100 * Create child company CHILD 2 with same parent company, a bank journal and a matching rule to fetch bills/invoices of same amount regardless of any other critera (for simplicity) * make sure the matching rule is applied 1st, create a bank transacation of $100 in CHILD 2 bank journal * click reconcile fr
Original PR description
The bank reconciliation widget shouldn't be allowed to work/match more than what's possible through the UI. Steps to reproduce the bug * create child company CHILD 1, with an invoice $100 * Create child company CHILD 2 with same parent company, a bank journal and a matching rule to fetch bills/invoices of same amount regardless of any other critera (for simplicity) * make sure the matching rule is applied 1st, create a bank transacation of $100 in CHILD 2 bank journal * click reconcile from the dashboard, on CHILD 2 bank journal => you get an access error because Odoo is trying to match invoice from CHILD 1 and bank transaction from CHILD 2 ticket-4384481 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#192507
**Current behavior:** The global lead days system parameter may be counted in the lead days breakdown in the replenishment report when: A) product has manufacture route and, B) WH manufacture steps is not 1-step **Expected behavior:** The parameter is counted once. **Steps to reproduce:** 1. Create a product with a simple BoM and the manufacture route 2. Enable 2 or 3 step manufacturing in WH 3. Create an out move for the product 4. Open the replenishment report in inventory
Original PR description
**Current behavior:** The global lead days system parameter may be counted in the lead days breakdown in the replenishment report when: A) product has manufacture route and, B) WH manufacture steps is not 1-step **Expected behavior:** The parameter is counted once. **Steps to reproduce:** 1. Create a product with a simple BoM and the manufacture route 2. Enable 2 or 3 step manufacturing in WH 3. Create an out move for the product 4. Open the replenishment report in inventory 5. Click the (i) in the orderpoint line for the product -> see the global vis. days are counted 2x **Cause of the issue:** Like the issue solved by 38d8e77 In some instances the `_get_lead_days()` must be called a second time to capture some additional lead time (in this case because we have > 1-step manufacturing). **Fix:** Use the context added in the referenced similar commit to ignore the global days in the second call. opw-4410790 Forward-Port-Of: odoo/odoo#190808
Steps: === - Open a POS shop. - Create an order, select a customer, and validate it. Issue: === - The generated receipt did not include customer name and phone details. Cause: === - Customer details were not being passed correctly to the receipt template. Fix: === - Updated the function for setting customer details to correctly include in the receipt. Task- 4431623 Forward-Port-Of: odoo/odoo#193032 Forward-Port-Of: odoo/odoo#191972
Original PR description
Steps: === - Open a POS shop. - Create an order, select a customer, and validate it. Issue: === - The generated receipt did not include customer name and phone details. Cause: === - Customer details were not being passed correctly to the receipt template. Fix: === - Updated the function for setting customer details to correctly include in the receipt. Task- 4431623 Forward-Port-Of: odoo/odoo#193032 Forward-Port-Of: odoo/odoo#191972
Even if 5.1 is not technically supported, debuntu might switch to it any moment and we don't know if / when upstream will fix it, so it's not worth the time bomb. While technically it was always typed such, since py-pdf/pypdf#2820 it looks like `_info` is a lot more likely to be `None` as e.g. `clone_reader_document_root` now starts with unsetting `_info_obj` and never re-sets it. Except `add_metadata` was not updated to handle this case, likely because mypy interprets `assert isinstance(s
Original PR description
Even if 5.1 is not technically supported, debuntu might switch to it any moment and we don't know if / when upstream will fix it, so it's not worth the time bomb. While technically it was always…
Even if 5.1 is not technically supported, debuntu might switch to it any moment and we don't know if / when upstream will fix it, so it's not worth the time bomb.
While technically it was always typed such, since py-pdf/pypdf#2820 it looks like `_info` is a lot more likely to be `None` as e.g. `clone_reader_document_root` now starts with unsetting `_info_obj` and never re-sets it.
Except `add_metadata` was not updated to handle this case, likely because mypy interprets `assert isinstance(self._info, DictionaryObject)` as a type narrowing and trusts the developer, thus does not report the type mismatch... and the assertion ends up blowing in the user's face at runtime with a simple
>>> r = pypdf.PdfReader(some_pdf_document)
>>> w = pypdf.PdfWriter()
>>> w.clone_reader_document_root(r)
>>> w.add_metadata({"/foo": "bar"})
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "lib/python3.12/site-packages/pypdf/_writer.py", line 1622, in add_metadata
assert isinstance(self._info, DictionaryObject)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
AssertionError
This is rather inconsiderate, so monkeypatch `add_metadata` to handle the case where `_info` exists and is `None`.
Most of the credit goes to juwu for uncovering the issue.
opw-4372052
opw-4426881
Fixes #185673
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#193086Currently below error occurs when creating a time-off type. Error: `ValueError: invalid literal for int() with base 10: '84,000'` Steps to reproduce :- - Open 'Time Off' >> Go to 'Configuration' >> Click 'Time off Types' >> Click 'New' . - Give 'Time off Type' a name >> Enable 'Allow Negative Cap' >> Set 'Maximum Excess Amount' >> Hit 'Save'. - The error appears in the log. This commit solves the above issue by removing the `widget`. sentry-6184334906 Forward-Port-Of: odoo/odoo#1
Original PR description
Currently below error occurs when creating a time-off type. Error: `ValueError: invalid literal for int() with base 10: '84,000'` Steps to reproduce :- - Open 'Time Off' >> Go to 'Configuration' >> Click 'Time off Types' >> Click 'New' . - Give 'Time off Type' a name >> Enable 'Allow Negative Cap' >> Set 'Maximum Excess Amount' >> Hit 'Save'. - The error appears in the log. This commit solves the above issue by removing the `widget`. sentry-6184334906 Forward-Port-Of: odoo/odoo#191978
The current logic is not working when trying to invoice foreign customers. A few fields that could be useful are hidden, and we don't add the id information in the xml file which causes it to fail. In practice, it is valid to invoice a foreign customer and use a generic TIN if they don't have a malaysian one when reporting to the tax authorities. This change will allow just that; we add the id information to the xml which allow to correctly issue a valid invoice for a foreign customer (tested
Original PR description
The current logic is not working when trying to invoice foreign customers. A few fields that could be useful are hidden, and we don't add the id information in the xml file which causes it to fail. In practice, it is valid to invoice a foreign customer and use a generic TIN if they don't have a malaysian one when reporting to the tax authorities. This change will allow just that; we add the id information to the xml which allow to correctly issue a valid invoice for a foreign customer (tested on pre- production) opw-4438259 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#193000
To reproduce the issue: 1) Create a vendor bill for 100€, with a tax of 15% 2) In the grouped generic tax reports, the base will be 100 and the tax 15 3) Create an expense of 200€, with the same tax, paid by the company. Fully validate it and post the entry. ====> The grouped generic tax reports now should display 300 of base, and 45 of tax. It does only show 200 of base, though. This happens because when post-processing the results of the query ran by the report, we do this https://github
Original PR description
To reproduce the issue: 1) Create a vendor bill for 100€, with a tax of 15% 2) In the grouped generic tax reports, the base will be 100 and the tax 15 3) Create an expense of 200€, with the same tax,…
To reproduce the issue: 1) Create a vendor bill for 100€, with a tax of 15% 2) In the grouped generic tax reports, the base will be 100 and the tax 15 3) Create an expense of 200€, with the same tax, paid by the company. Fully validate it and post the entry. ====> The grouped generic tax reports now should display 300 of base, and 45 of tax. It does only show 200 of base, though. This happens because when post-processing the results of the query ran by the report, we do this https://github.com/odoo/enterprise/blame/16.0/account_reports/models/account_generic_tax_report.py#L406 , so we essentially don't add the base amounts of the tax lines whose identification key has already been treated. This is important for taxes with multiple tax repartition lines. In our case, a line is generated by the query for both the invoice and the expense entry. This is because the query groups on display_type: the expense line has display_type = 'product', while the invoice has 'tax'. This grouping was introduced here https://github.com/odoo/enterprise/commit/67f841ee36cb5a8ef95ae3dd3859239a4d10b99d to avoid counting the base amounts of the cash rounding lines as additional base amounts. We fix this by slightly tweaking the query, in order for rounding lines to be considered as having a base amount of 0. opw-3890736 Forward-Port-Of: odoo/enterprise#76801 Forward-Port-Of: odoo/enterprise#76536
When a tag has both a very long category and a very long tag name, the delete icon becomes misaligned due to text overflow. This causes the clickable area for the icon to shift away from where the icon is visually displayed. As a result, users might think they cannot delete the tag because clicking directly on the icon does not trigger the delete action. To fix this, we can apply `max-width: 2ch` to the delete icon. Since the icon will always be one character's width, giving them 2ch width wi
Original PR description
When a tag has both a very long category and a very long tag name, the delete icon becomes misaligned due to text overflow. This causes the clickable area for the icon to shift away from where the…
When a tag has both a very long category and a very long tag name, the delete icon becomes misaligned due to text overflow. This causes the clickable area for the icon to shift away from where the icon is visually displayed. As a result, users might think they cannot delete the tag because clicking directly on the icon does not trigger the delete action. To fix this, we can apply `max-width: 2ch` to the delete icon. Since the icon will always be one character's width, giving them 2ch width will be enough to properly display it without taking more space than needed, and ensures that the icon remains properly aligned with the tag, regardless of text length. This ch unit corresponds to be Equal to the “0” (ZERO, U+0030) glyph found in the font used to render it. Before the fix: <img width="296" alt="image" src="https://github.com/user-attachments/assets/f3f45666-0c21-4334-823a-a2afacd5ebe2" /> After the fix: <img width="292" alt="image" src="https://github.com/user-attachments/assets/7deb8253-bcd3-4469-9c5b-8a135591d331" /> FW-bot up to 18.0 opw-4403905 Forward-Port-Of: odoo/enterprise#75690
Scenario: - Install l10n_pe_edi and switch to "PE Company" - Create a product with "Withhold Percentage" 20% - Create an invoice with operation type "[1001] Operation Subject to Detraction", the created product and USD currency. - Print the invoice as PDF => The "Withholding amount" in the PDF is correctly shown in the company currency, but the currency symbol is the one of the invoice ($) Issue: Amount is always in the company currency, and currency is the invoice currency th
Original PR description
Scenario: - Install l10n_pe_edi and switch to "PE Company" - Create a product with "Withhold Percentage" 20% - Create an invoice with operation type "[1001] Operation Subject to Detraction", the created product and USD currency. - Print the invoice as PDF => The "Withholding amount" in the PDF is correctly shown in the company currency, but the currency symbol is the one of the invoice ($) Issue: Amount is always in the company currency, and currency is the invoice currency that might be different. Fix: currency_id gotten from account.move()._l10n_pe_edi_get_spot is only used in this location where the amount should always be the company currency: so we modify it to be the company currency. opw-4292774 opw-4338728 Forward-Port-Of: odoo/enterprise#76334
Steps to reproduce ================== - Create multiple companies - In the current user settings, select a default company that is not the first one - Use another company - logout - login => The previously used company is kept Cause of the issue ================== The cids cookie was not invalidated because super was not called opw-4426742 Forward-Port-Of: odoo/enterprise#76716
Original PR description
Steps to reproduce ================== - Create multiple companies - In the current user settings, select a default company that is not the first one - Use another company - logout - login => The previously used company is kept Cause of the issue ================== The cids cookie was not invalidated because super was not called opw-4426742 Forward-Port-Of: odoo/enterprise#76716
In some cases, the default currency is set to EUR, which makes the FedEx tests fail as they are coded to work for USD. Runbot Error 107969 Forward-Port-Of: odoo/enterprise#75271
Original PR description
In some cases, the default currency is set to EUR, which makes the FedEx tests fail as they are coded to work for USD. Runbot Error 107969 Forward-Port-Of: odoo/enterprise#75271
Steps to reproduce the bug: - Create a storable product “P1”: - Tracked with SN - Create a BoM: - no need to component - Add an operation “OP1” with steps - Control by product - Create a manufacturing order for one unit of P1 - Confirm the MO - Go to the shop floor and process “OP1” - Validate the MO - Go to the SN of P1 Problem: The quality checks are filtered using “search_default_lot_id = active_id”, which means only quality checks linked to th
Original PR description
Steps to reproduce the bug: - Create a storable product “P1”: - Tracked with SN - Create a BoM: - no need to component - Add an operation “OP1” with steps - Control by product - Create a…
Steps to reproduce the bug:
- Create a storable product “P1”:
- Tracked with SN
- Create a BoM:
- no need to component
- Add an operation “OP1” with steps
- Control by product
- Create a manufacturing order for one unit of P1
- Confirm the MO
- Go to the shop floor and process “OP1”
- Validate the MO
- Go to the SN of P1
Problem:
The quality checks are filtered using “search_default_lot_id = active_id”,
which means only quality checks linked to the “search_default_lot_id”
are displayed. However, in this usecase, the "lot_id” is not set.
Instead, the "finished_lot_id" is used, causing the quality checks to be
hidden unless the filter is removed.
Solution:
the domain is properly prepared so no longer needs this filter: https://github.com/odoo-dev/enterprise/blob/33de674651017a79e4d010b054dfb2ccaf8b744c/quality_control/models/stock_lot.py#L23-L27
https://github.com/odoo-dev/enterprise/blob/33de674651017a79e4d010b054dfb2ccaf8b744c/quality_control/models/stock_lot.py#L20-L21
https://github.com/odoo-dev/enterprise/blob/33de674651017a79e4d010b054dfb2ccaf8b744c/quality_mrp_workorder/models/stock_lot.py#L10-L13
opw-4361358
Forward-Port-Of: odoo/enterprise#76376…on sell/dispose Steps to reproduce: - Create an asset with an acquisition date on the 1st of January, 2 years ago. - Set the depreciation method to "Declining" with a duration of 2 years. - Confirm it. - Click on "Modify depreciation". - Dispose it on the 1st of January of this year (i.e. after the asset's total duration). Observed behavior: You'll be met with a division by zero error. Solution: Prevent any unnecessary computations as well as unwanted division by zero errors by
Original PR description
…on sell/dispose Steps to reproduce: - Create an asset with an acquisition date on the 1st of January, 2 years ago. - Set the depreciation method to "Declining" with a duration of 2 years. - Confirm it. - Click on "Modify depreciation". - Dispose it on the 1st of January of this year (i.e. after the asset's total duration). Observed behavior: You'll be met with a division by zero error. Solution: Prevent any unnecessary computations as well as unwanted division by zero errors by simply returning early when the asset's residual amount is zero. A test is also added to cover this use case. opw-4411877 Forward-Port-Of: odoo/enterprise#76733 Forward-Port-Of: odoo/enterprise#76555