Wednesday, June 18, 2025
55 changes · saas-18.3
Enhancements to existing features
The web interface now allows the warning shown when editing properties to be customized by related apps. This supports clearer messages for asset users when an asset has no associated model, avoiding confusing text such as “Model undefined.”
Original PR description
When the button 'Add Properties' is clicked in an asset without an asset model associated, a warning is raised. The warning message is unclear in this case: "Oops! You cannot edit the Model undefined". This commit moves the warning message to the method `_propertyEditWarningText()`, which can then be extended in account_assets in odoo/enterprise#87807 task-4822091 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Resolved issues and error corrections
Fixes search highlighting in settings so highlighted text no longer creates excessive line breaks or awkward spacing. Search result matches are bold again, making settings easier to scan and understand.
Original PR description
This commit removes the use of odoomark in highlightText as it was unintentionally inserting excessive `<br>` tags in the settings module. It is now required to first use odoomark on the input text before using highlightText to combine both behaviors. Some spacing issues are also handled in consequence to this change. It also restores bold styling for search result highlights which was using `<b>` tags before but was removed with the new highlight system.
Miscellaneous changes
The tax breakdown is required by Argentinian law to be displayed in the bottom left corner of the invoice report. This was added in [^1] and works well for the HTML view but min-width related classes don't work well with pdf rendering, so the table stretched across the entire width of the pdf. The fix is to follow the rest of the file and use a fixed col width on the table for the pdf view. task-4779975 [^1]: https://github.com/odoo/odoo/pull/201257 Forward-Port-Of: odoo/odoo#214509 Fo
Original PR description
The tax breakdown is required by Argentinian law to be displayed in the bottom left corner of the invoice report. This was added in [^1] and works well for the HTML view but min-width related classes don't work well with pdf rendering, so the table stretched across the entire width of the pdf. The fix is to follow the rest of the file and use a fixed col width on the table for the pdf view. task-4779975 [^1]: https://github.com/odoo/odoo/pull/201257 Forward-Port-Of: odoo/odoo#214509 Forward-Port-Of: odoo/odoo#214463
Automated guided tours now better match how status bar buttons behave on smaller screens. This prevents the menu from opening when the needed button is already visible, reducing inconsistent behavior in edge cases.
Original PR description
This is a follow-up of the simplification of the StatusBarButtons rendering and usability on smaller screen (cf. PR [1]) where only the first button is displayed and the other ones (if available) are folded into a Dropdown. But the adaptation of the related tour utils missed the change of behavior and always opened the Dropdown (if present), even when the button that the tour looks for is the first one displayed, leading to inconsistent behavior in some edge cases. This commit properly adapts the tour's util to the actual StatusBarButtons' behavior. [1]: odoo/odoo#198621 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This fix ensures the IoT Box certificate expiry date is sent only after the device record exists. It prevents incorrect “No subscription linked” messages, helping businesses avoid false subscription warnings for connected hardware.
Original PR description
We sent the certificate end date to the database before the record was created in the db, resulting in getting the "No subscription linked to your IoT Box toaster" as it cannot read the "certificate end date" field. This commit fixes it by checking the certificate right after sending all devices.
This fixes an automated test for reordering items from the customer portal that could fail on slower machines or networks. The test now waits until the cart is fully emptied before continuing, reducing false build failures without changing customer-facing behavior.
Original PR description
steps to reproduce (nondeterministic): 1- install website_sale 2- without demo data fresh database 3- while in debug mode decrease the performance of the browser (for example in Chrome, open devtools, go to the Performance tab, and select "Slow 3G" in the Network throttling dropdown and "Slow 4x CPU" in the CPU throttling dropdown) 4- run the tour test test_website_sale_reorder_from_portal noticed it : when my laptop was in power saving mode, which made the browser even slower the tour was failing because the step was not waiting enough time for all the elements to be deleted which resulted products were remaining in the cart and later on the confirmation dialog of "Empty your cart?" was popping up which was not expected increased the wait time and added a check for the cart to be empty before proceeding to the next step build_error-190573
This fixes a display issue where the Email Signature field in user profile forms appeared without a clear label. Users can now more easily understand and edit their email signature in their profile or user settings.
Original PR description
--- **Description of the issue/feature this PR addresses:** The "Email Signature" field in the user profile form had no visible label, which created a poor UX—especially for new users who could not…
--- **Description of the issue/feature this PR addresses:** The "Email Signature" field in the user profile form had no visible label, which created a poor UX—especially for new users who could not understand the purpose of the field. This was caused by a misplacement of the "Discuss" group in a previous commit: https://github.com/odoo/odoo/commit/eab0e7c17633658ce9ca194606bc6f78f6b7b285 --- **Steps to Reproduce** 1. Check under *My profile* (from the top-right user menu). 2. Also Go to *Settings* → *Users* → open any user profile --same issue. 3. Scroll to the **Email Signature** section. **Current behavior before PR:** - Notice the field is rendered with no label. --- **Why the fix** A previous commit (eab0e7c17633658ce9ca194606bc6f78f6b7b285) inserted a group before the `<field name="signature">`, but in the base views, the field is nested inside a group (`<group name="signature">`) for (`view_users_form_simple_modif`), (`<group name="messaging">`) for (`view_users_form`). This mismatch caused the XPath expression to silently fail. --- **Desired behavior after PR is merged:** Target the correct wrapping group instead of the field to ensure the "Discuss" section is properly inserted and the label displays as expected. while also keeping the field as a wrapping option to not risk stable --- Ticket_id: opw-4816611
This fix corrects spacing problems in the Map settings page that appeared after changes to search result highlighting. Users will see a cleaner, more consistent layout when configuring map-related options.
Original PR description
Since https://github.com/odoo/odoo/pull/205922, the highlighting system for settings search results was changed and although undesired tags are removed with https://github.com/odoo/odoo/pull/211832, there are still spacing issues that are addressed here.
The reconciliation model suggestion logic now skips bank statement lines that lack a payment reference. This prevents unreliable matching data from being used, helping accounting teams get more accurate automated reconciliation behavior.
Original PR description
Commit 687e237 introduced auto-creation of reconciliation models based on user behavior, primarily analyzing the last 5 statement lines. However, it did not account for lines without a payment_ref. Since the payment_ref is used to build the matching key, we now restrict the logic to only fetch statement lines that have one. opw-4846098
The website generator's scheduled task no longer crashes when it finishes and updates its own progress. This keeps automated website generation running reliably without manual intervention.
Original PR description
The website generator cron crashed when trying to deactivate itself due to crons no longer being able to modify themselves. Now use _commit_progress() instead and check only in the cron and not during write()
The VoIP transfer screen now has a better-aligned back button and more consistent small transfer buttons. This improves the call transfer experience by making the interface cleaner and easier to scan.
Original PR description
This commit fixes the alignment of the "back" button of the transfer view. It also removes the label from small "Transfer" buttons to remain consistent with the other buttons of the same type. task-4875960 | Before | After | |--------|--------| |  |  | |  |  |
Forward-Port-Of: odoo/odoo#206918
Original PR description
Forward-Port-Of: odoo/odoo#206918
Users can create a downpayment bill directly from the purchase order or create a bill separately and then associate it with the original purchase order. However, in the latter case, the bill amount won't take into account the currency. Steps to reproduce: - Create a purchase order for a partner in company currency - Create a bill in foreign currency for the same partner - Click "Purchase Matching" smart button - Select PO and BILL > Add to PO > Add Down Payment Issue: Downpayment w
Original PR description
Users can create a downpayment bill directly from the purchase order or create a bill separately and then associate it with the original purchase order. However, in the latter case, the bill amount won't take into account the currency. Steps to reproduce: - Create a purchase order for a partner in company currency - Create a bill in foreign currency for the same partner - Click "Purchase Matching" smart button - Select PO and BILL > Add to PO > Add Down Payment Issue: Downpayment will be added into the PO without taking into account the different currency opw-4716949 Forward-Port-Of: odoo/odoo#214170 Forward-Port-Of: odoo/odoo#212576
When calculating line discounts, extra decimal places are being used when computing the total in intermediate steps. This discrepancy is interpreted as a small discount, that shouldn't be there. We should instead use the current currency's precision. Example: ``` qty: 1.65 unit_price: 29.9 total: 1.65 * 29.9 = 49.335, rounded to 49.34 discount = 0.005 * 100 / 49.335 = 0.010 ``` Steps: - Create an invoice with a product - Set quantity to 1.65, price to 29.9 - Confirm & get the invo
Original PR description
When calculating line discounts, extra decimal places are being used when computing the total in intermediate steps. This discrepancy is interpreted as a small discount, that shouldn't be there. We should instead use the current currency's precision. Example: ``` qty: 1.65 unit_price: 29.9 total: 1.65 * 29.9 = 49.335, rounded to 49.34 discount = 0.005 * 100 / 49.335 = 0.010 ``` Steps: - Create an invoice with a product - Set quantity to 1.65, price to 29.9 - Confirm & get the invoice PDF - Upload the PDF in accounting app - Check the "discount" value Slight improvement to odoo/odoo#206107 opw-4776391 Forward-Port-Of: odoo/odoo#213594 Forward-Port-Of: odoo/odoo#211032
Steps to reproduce =================== 1. Add new content to the course and publish it. 2. A notification email is sent out to attendees of the course. 3. Click the 'View Content' button in the email. It leads to a 404 error page. With https://github.com/odoo/odoo/commit/074be1ed36891065361a3cf40f8e189ba5fccb15, we replaced the ID-based route with website_absolute_url, which uses a slugified URL format, and we don't have a slugify route with `/share`. This PR adds a new route to make
Original PR description
Steps to reproduce =================== 1. Add new content to the course and publish it. 2. A notification email is sent out to attendees of the course. 3. Click the 'View Content' button in the email. It leads to a 404 error page. With https://github.com/odoo/odoo/commit/074be1ed36891065361a3cf40f8e189ba5fccb15, we replaced the ID-based route with website_absolute_url, which uses a slugified URL format, and we don't have a slugify route with `/share`. This PR adds a new route to make it compatible with `/share`. Task-4797324 Forward-Port-Of: odoo/odoo#211172
…axes --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#214398 Forward-Port-Of: odoo/odoo#212075
Original PR description
…axes --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#214398 Forward-Port-Of: odoo/odoo#212075
In form and list views, the callback given to the CogMenu to reload the view when the clicked cog menu action was done, didn't check the `noReload` flag. Typically, this flag is set to true when we're leaving to another action. However, since [1], and especially [2], this caused an issue as the reloaded view was destroyed while it was being reloaded, so the reload promise was never resolved. As a consequence, we didn't reach the code that actually closes the dialog [3], as `await onClose?.(cl
Original PR description
In form and list views, the callback given to the CogMenu to reload the view when the clicked cog menu action was done, didn't check the `noReload` flag. Typically, this flag is set to true when…
In form and list views, the callback given to the CogMenu to reload the view when the clicked cog menu action was done, didn't check the `noReload` flag. Typically, this flag is set to true when we're leaving to another action. However, since [1], and especially [2], this caused an issue as the reloaded view was destroyed while it was being reloaded, so the reload promise was never resolved. As a consequence, we didn't reach the code that actually closes the dialog [3], as `await onClose?.(closeParams)` never resolved. The faulty behavior could be observed in Employee, open Audrey Peterson, click on the Delete cog menu action, and in the dialog, click on See Timesheets. That dialog was then never closed, and trying to close it manually triggered the "Component is destroyed" error, as it always tried to execute the reload callback. [1] https://github.com/odoo/odoo/pull/202512 [2] https://github.com/odoo/odoo/pull/202512/commits/d606be75c44fccf0b1ddf5216892f1d4b7162686 [3] https://github.com/odoo/odoo/pull/202512/commits/d606be75c44fccf0b1ddf5216892f1d4b7162686#diff-552aefb62246b1f4fe6a2607ec8f0a01773e53de2d68293266b38bc99c5cb56dR318 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#213558
When serializing an object, we rely on the uuid to identify it and avoid serializing it multiple times. Some object (like the event registration) do not have a uuid, so we need to make sure they are always serialized. Steps to reproduce: ------------------- * Install pos_event module * Open a POS session * Add the architect event product to the cart * In the popup add one Ticket Basic and one Ticket VIP * Validate the order * Go to the receipt screens * Print the badge > Observatio
Original PR description
When serializing an object, we rely on the uuid to identify it and avoid serializing it multiple times. Some object (like the event registration) do not have a uuid, so we need to make sure they are always serialized. Steps to reproduce: ------------------- * Install pos_event module * Open a POS session * Add the architect event product to the cart * In the popup add one Ticket Basic and one Ticket VIP * Validate the order * Go to the receipt screens * Print the badge > Observation: Only one of the badge is being printed Why the fix: ------------ As the registraion had no uuid, the first one was serialized but the second one was ignored as it was detected as already serialized. Now if the object we are serializing does not have a uuid, we generate make sure it's always serialized, by putting `undefined` instead of a record in the `serialized` dict. opw-4863800 Forward-Port-Of: odoo/odoo#214027
Description of the issue/feature this PR addresses: Currently, the l10n_ro_edi_stock_enable flag may be set for all stock pickings, including internal transfers. This leads to unnecessary EDI processing for pickings that are not relevant for EDI (e.g., internal movements within the company). Current behavior before PR: The system does not explicitly exclude pickings of type 'internal' from EDI logic. As a result, internal transfers may trigger EDI processing even though they are not int
Original PR description
Description of the issue/feature this PR addresses: Currently, the l10n_ro_edi_stock_enable flag may be set for all stock pickings, including internal transfers. This leads to unnecessary EDI…
Description of the issue/feature this PR addresses:
Currently, the l10n_ro_edi_stock_enable flag may be set for all stock pickings, including internal transfers. This leads to unnecessary EDI processing for pickings that are not relevant for EDI (e.g., internal movements within the company).
Current behavior before PR:
The system does not explicitly exclude pickings of type 'internal' from EDI logic. As a result, internal transfers may trigger EDI processing even though they are not intended for such flows.
Additionally, at line 508, the existing match-case logic processes only 'outgoing' and 'incoming' types:
```
match data['picking_type_id'].code:
case 'outgoing':
partner = data['picking_type_id'].warehouse_id.partner_id if location == 'start' else data['partner_id']
case 'incoming':
partner = data['picking_type_id'].warehouse_id.partner_id if location == 'end' else data['partner_id']
case _other:
errors.append(_("Invalid picking type %(type_code)s", type_code=_other))
continue
```
Since 'internal' is not handled explicitly, it is treated as an invalid type, resulting in misleading error messages and unnecessary processing.
Desired behavior after PR is merged:
The PR introduces a condition to exclude pickings with picking_type_code = 'internal' from EDI processing. This prevents the l10n_ro_edi_stock_enable flag from being set for irrelevant pickings and avoids the generation of errors for valid internal movements.
---
I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Forward-Port-Of: odoo/odoo#213457When refunding a PoS order with mulitple lines containing a product with a category that use FIFO/AVCO valuation method, there was a traceback Steps to reproduce: ------------------- * Create a category CAT that use FIFO/AVCO valuation method * Create a product P1 with category CAT * Create a product P2 with category CAT * Create a PoS order with P1 and P2 * Validate the order using the shiplater and invoice option * Refund the order using the shiplater and invoice option > Observatio
Original PR description
When refunding a PoS order with mulitple lines containing a product with a category that use FIFO/AVCO valuation method, there was a traceback Steps to reproduce: ------------------- * Create a category CAT that use FIFO/AVCO valuation method * Create a product P1 with category CAT * Create a product P2 with category CAT * Create a PoS order with P1 and P2 * Validate the order using the shiplater and invoice option * Refund the order using the shiplater and invoice option > Observation: You get a traceback opw-4848667 Forward-Port-Of: odoo/odoo#213209
Issue ----- When returning different products than the ones sold on the SO, the returned products have their sequence set to 10 so they all appear between the first and second sold products. Steps to reproduce ----- - Install both Sale & Stock apps - Create & confirm a sale for 2 different products - Confirm the delivery - Create & validate a return for a third product - Open the SO -> The returned product sol is second in sequence Cause ----- The return SOL are created with n
Original PR description
Issue ----- When returning different products than the ones sold on the SO, the returned products have their sequence set to 10 so they all appear between the first and second sold products. Steps to reproduce ----- - Install both Sale & Stock apps - Create & confirm a sale for 2 different products - Confirm the delivery - Create & validate a return for a third product - Open the SO -> The returned product sol is second in sequence Cause ----- The return SOL are created with no specified sequence value, so they all have the default (10). See [review](https://github.com/odoo/odoo/pull/209091#pullrequestreview-2828126823) for details. ----- Ticket: opw-4564504 Forward-Port-Of: odoo/odoo#209091
Since the edited page is within an iframe, the built-in fonts used by the wysiwyg are also loaded inside the page within the iframe, which causes them to replace the one used when viewing the page as a visitor if it happens to be one of the fallback fonts. This commit avoids that by giving a distinct `font-family` to the fonts used by the wysiwyg. task-3080104 Forward-Port-Of: odoo/odoo#214507 Forward-Port-Of: odoo/odoo#112759
Original PR description
Since the edited page is within an iframe, the built-in fonts used by the wysiwyg are also loaded inside the page within the iframe, which causes them to replace the one used when viewing the page as a visitor if it happens to be one of the fallback fonts. This commit avoids that by giving a distinct `font-family` to the fonts used by the wysiwyg. task-3080104 Forward-Port-Of: odoo/odoo#214507 Forward-Port-Of: odoo/odoo#112759
**DON'T MERGE WAIT FOR https://github.com/odoo/odoo/pull/214758** Write some bytes in a `field.Binary(attachment=False)` field. The ORM doesn't encode the bytes in b64, and the value is stored as a binary blob in postgres. Attempt to download the content via /web/content (actually any route that uses `http.Stream` is affected). It sometimes download something, sometimes fail with an "Incorrect padding" error. The `http.Stream` class wrongly assumes that reading a binary/image field is a
Original PR description
**DON'T MERGE WAIT FOR https://github.com/odoo/odoo/pull/214758** Write some bytes in a `field.Binary(attachment=False)` field. The ORM doesn't encode the bytes in b64, and the value is stored as a…
**DON'T MERGE WAIT FOR https://github.com/odoo/odoo/pull/214758** Write some bytes in a `field.Binary(attachment=False)` field. The ORM doesn't encode the bytes in b64, and the value is stored as a binary blob in postgres. Attempt to download the content via /web/content (actually any route that uses `http.Stream` is affected). It sometimes download something, sometimes fail with an "Incorrect padding" error. The `http.Stream` class wrongly assumes that reading a binary/image field is always going to return the value base64-encoded, thus it always attemps to decode it. The `b64decode` function silently discard non-b64 characters and only complain if the final thing lacks the b64 `=` padding (to make the length a multiple of 4). So when it downloaded something, it downloaded crap. Makes the code actually raise an error should the binary field not contains b64 data. Fixing the problem by using the data as-is (with no b64 decoding) is not desirable. We use `Binary(attachment=False)` when we need to store sensitive documents, often cryptographic keys, and exporting them is often not desirable. 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#214412 Forward-Port-Of: odoo/odoo#213997
This reverts the fix of commit 2597d6f4c33fe2ae8a60e11059c2630ac8aff58c and flatten the background color of the body element instead. Scenario: - set a color to the body different than white - add snippets to have a height higher than the viewport - go down in the page Result: the background color is only set up to the viewport height. Cause: Before 18.0, the body takes 100% of the page height because we are scrolling over the #wrapwrap element. In 18.0 with 189a7c96e6e26825d
Original PR description
This reverts the fix of commit 2597d6f4c33fe2ae8a60e11059c2630ac8aff58c and flatten the background color of the body element instead. Scenario: - set a color to the body different than white - add…
This reverts the fix of commit 2597d6f4c33fe2ae8a60e11059c2630ac8aff58c and flatten the background color of the body element instead. Scenario: - set a color to the body different than white - add snippets to have a height higher than the viewport - go down in the page Result: the background color is only set up to the viewport height. Cause: Before 18.0, the body takes 100% of the page height because we are scrolling over the #wrapwrap element. In 18.0 with 189a7c96e6e26825dc05c0c6466576fe63aa091e, we are scrolling over the body element, that combined with the body having a height of 100% makes the body element being positionned from 0 to viewport height, and it's not present below that. Also to set background of the whole page, the browser uses the body background if there is no background on the html element, so even if the body didn't cover the whole page, we were getting the body color on the whole page. So the change in 2597d6f4c33fe2ae8a60e11059c2630ac8aff58c that set the html element to white, causes the background color to only be applied to up to the viewport height, with the background being blank below that. Fix: set the body background color to the flattened rgb color. opw-4863179 opw-4863724 Forward-Port-Of: odoo/odoo#214457 Forward-Port-Of: odoo/odoo#213858
Description of the issue this PR addresses: Current behavior before PR: Attachments like files and images removed from the mail attachment list were still present in the editor, resulting in broken links and 404 errors. Desired behavior after PR is merged: Removing an attachment from the list also removes its reference from the editor. task-4794954 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#214360 Forwar
Original PR description
Description of the issue this PR addresses: Current behavior before PR: Attachments like files and images removed from the mail attachment list were still present in the editor, resulting in broken links and 404 errors. Desired behavior after PR is merged: Removing an attachment from the list also removes its reference from the editor. task-4794954 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#214360 Forward-Port-Of: odoo/odoo#212309
**Current behavior before PR:** Steps to reproduce the issue: - Upload an external image. - Click on it to open the toolbar. - Try to open image cropper. - Clicking on "Apply" button leads to traceback. This issue happens because after merging this commit [1] `closeCropper` method closes the cropper only if `cropperOpen` flag is true. In case of external image, cropper should be closed before it gets fully mounted as such images are uncroppable. In this case `cropperOpen` flag is fa
Original PR description
**Current behavior before PR:** Steps to reproduce the issue: - Upload an external image. - Click on it to open the toolbar. - Try to open image cropper. - Clicking on "Apply" button leads to…
**Current behavior before PR:** Steps to reproduce the issue: - Upload an external image. - Click on it to open the toolbar. - Try to open image cropper. - Clicking on "Apply" button leads to traceback. This issue happens because after merging this commit [1] `closeCropper` method closes the cropper only if `cropperOpen` flag is true. In case of external image, cropper should be closed before it gets fully mounted as such images are uncroppable. In this case `cropperOpen` flag is false and `closeCropper` fails to close cropper which results in traceback later. **Desired behavior after PR is merged:** Cropper gets closed in case of external image and there is a toaster notification at the top-right showing "This type of image is not supported for cropping". [1]: https://github.com/odoo/odoo/commit/df64afb4e9504413f966a153772c568b625a5e13 task-4677287 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#203688
*: im_livechat, portal, test_mail, test_mail_full Steps to reproduce: - Install a module with portal mixin - From a portal document (not logged in) try to delete an attachment of a message - The override of `_can_edit_message` is never called and the attachment is not deleted With this commit, any controller that needs the shared method of `ThreadController` controller inherits that control. Direct calls to imported controller methods could bypass overrides. Forward-Port-Of: odoo/o
Original PR description
*: im_livechat, portal, test_mail, test_mail_full Steps to reproduce: - Install a module with portal mixin - From a portal document (not logged in) try to delete an attachment of a message - The override of `_can_edit_message` is never called and the attachment is not deleted With this commit, any controller that needs the shared method of `ThreadController` controller inherits that control. Direct calls to imported controller methods could bypass overrides. Forward-Port-Of: odoo/odoo#206619
The grain secondary settlement ("Liquidación Secundaria de Granos" - LSG) is an electronic document that supports grain purchase and sale and consignment transactions between intermediaries, cooperatives, consignees, exporters, brokers and future market operators. This document is emitted by the intermediary of the operation so, in Odoo, if the user is the seller or purchaser of the operation, it will need to register that document in a sale or purchase journal accordingly. This PR aims to incl
Original PR description
The grain secondary settlement ("Liquidación Secundaria de Granos" - LSG) is an electronic document that supports grain purchase and sale and consignment transactions between intermediaries,…
The grain secondary settlement ("Liquidación Secundaria de Granos" - LSG) is an electronic document that supports grain purchase and sale and consignment transactions between intermediaries, cooperatives, consignees, exporters, brokers and future market operators. This document is emitted by the intermediary of the operation so, in Odoo, if the user is the seller or purchaser of the operation, it will need to register that document in a sale or purchase journal accordingly.
This PR aims to include this document in the list of the available ones to allow the user to select it when registering either a sale or a purchase.

**Behaviour before this PR:**
When the user creates an invoice in a sale or purchase journal, the document type "331 - SECONDARY GRAIN LIQUIDATION" is not available to select, although it is activated.
**Behaviour after this PR:**
When the user creates an invoice in a sale or purchase journal, the document type "331 -SECONDARY GRAIN LIQUIDATION" is appears in the list of documents (the document type should be activated before)
**Steps to reproduce:**
1. Install l10n_ar
2. Go to "Document Types" menu and activate "331 - SECONDARY GRAIN LIQUIDATION"
3. Create or use a sale or purchase journal that has "Is AFIP POS?" as False.
4. Create an invoice in that journal and check that the document type with code 331 is not available to select.

---
I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Forward-Port-Of: odoo/odoo#214067
Forward-Port-Of: odoo/odoo#211737**Current behavior before PR:** Steps to reproduce: - Create a table. - Select some cells, apply background color on them. - Try to remove format using removeFormat button. Trying to remove format from the colored cells leads to traceback `Infinite Loop in removeAllColor()`. The issue happens because after merging commit [1], when applying background-color on cells, text-color will also get applied along with background-color. When trying to remove color using removeFormat button, `ap
Original PR description
**Current behavior before PR:** Steps to reproduce: - Create a table. - Select some cells, apply background color on them. - Try to remove format using removeFormat button. Trying to remove format from the colored cells leads to traceback `Infinite Loop in removeAllColor()`. The issue happens because after merging commit [1], when applying background-color on cells, text-color will also get applied along with background-color. When trying to remove color using removeFormat button, `applyTableColor` method fails to remove text-color from cells despite having color on them, leading to infinite loop error. **Desired behavior after PR:** Now, background-color is removed from cells without any traceback. [1]: https://github.com/odoo/odoo/commit/616413c3272429ec48a6ac238c899b31d0751546 task-4805468 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#213844 Forward-Port-Of: odoo/odoo#210803
Before this commit, the product.product record was loaded for the Discount product when loading the product templates, which caused several issues. opw-4876402 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#214549
Original PR description
Before this commit, the product.product record was loaded for the Discount product when loading the product templates, which caused several issues. opw-4876402 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#214549
### Steps to reproduce: - Insert an image into the editor. - Open the Transformation controls for the image. - Press the `Backspace` key to delete the image. - The transformation overlay remains visible after the image is removed. ### Description of the issue/feature this PR addresses: - In commit [1](https://github.com/odoo/odoo/commit/85698bf4f591fc9280f054b9a255a7d5ff4d1fe2), the `image_transform_button` component unmounted before `selectionchange` event could fire. As a result,
Original PR description
### Steps to reproduce: - Insert an image into the editor. - Open the Transformation controls for the image. - Press the `Backspace` key to delete the image. - The transformation overlay remains…
### Steps to reproduce: - Insert an image into the editor. - Open the Transformation controls for the image. - Press the `Backspace` key to delete the image. - The transformation overlay remains visible after the image is removed. ### Description of the issue/feature this PR addresses: - In commit [1](https://github.com/odoo/odoo/commit/85698bf4f591fc9280f054b9a255a7d5ff4d1fe2), the `image_transform_button` component unmounted before `selectionchange` event could fire. As a result, event listener was removed, and the transform container was not closed when the image was deleted. Desired behavior after PR is merged: - The `selectionchange` listener is now attached within the `image_transformation` component. - A `keydown` listener is also added to explicitly handle Backspace and Delete keys, addressing the case where Chrome does not trigger `selectionchange` on image deletion. task-4831728 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#212715
Currently, an error occurs due to message action buttons being visible on unsaved forms. Steps to replicate: - Open any module with chatter (eg. `sale_management`). - Click on `Mark as todo` (star icon) without saving (hover near to user's name in chatter). Error: `TypeError: 'float' object is not iterable` The error occurs due to a recent [commit](https://github.com/odoo/odoo/pull/211362/files#diff-0fc14194d473213159537bf41f421dcbaf940dfd81ac87d263b196e914d40af3R160) that added the
Original PR description
Currently, an error occurs due to message action buttons being visible on unsaved forms. Steps to replicate: - Open any module with chatter (eg. `sale_management`). - Click on `Mark as todo` (star…
Currently, an error occurs due to message action buttons being visible on unsaved forms. Steps to replicate: - Open any module with chatter (eg. `sale_management`). - Click on `Mark as todo` (star icon) without saving (hover near to user's name in chatter). Error: `TypeError: 'float' object is not iterable` The error occurs due to a recent [commit](https://github.com/odoo/odoo/pull/211362/files#diff-0fc14194d473213159537bf41f421dcbaf940dfd81ac87d263b196e914d40af3R160) that added the d-flex class to the `<div>` [1] containing the message actions. The core issue lies in the use of `d-flex`, which overrides any conditional visibility logic [2] applied to its child elements. As a result, the message action buttons become visible even before the form is saved. This commit resolves the issue by making the visibility logic important so it doesnt get overridden by `d-flex`. This ensures that the conditional visibility logic is respected, preventing the action buttons to appear before the form is saved. [1] - https://github.com/odoo/odoo/blob/e7cbe74f388ed1177d4c5c6fbe54988a1dc18217/addons/mail/static/src/core/common/message.xml#L160 [2] - https://github.com/odoo/odoo/blob/e7cbe74f388ed1177d4c5c6fbe54988a1dc18217/addons/mail/static/src/chatter/web_portal/chatter.scss#L5-L7 https://github.com/user-attachments/assets/4a4d168d-961e-4b49-be84-c95b0d899b7b sentry-6657359767 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#213801
<b>Steps to Reproduce:</b> 1. Navigate to Sales → Products → Products. 2. Click on Print Labels. 3. Select label format 2×7. 4. Add an image to the "Extra Content" field (e.g., by typing `/image`). <b>Issue:</b> - When printing labels, the image added via `extra_html` is not fully displayed. It gets cut off due to the fixed height and overflow settings on the `.o_label_extra_data` container. <b>Solution:</b> - Added responsive styling to o_label_extra_data for img so they resize pr
Original PR description
<b>Steps to Reproduce:</b>
1. Navigate to Sales → Products → Products.
2. Click on Print Labels.
3. Select label format 2×7.
4. Add an image to the "Extra Content" field (e.g., by typing `/image`).
<b>Issue:</b>
- When printing labels, the image added via `extra_html` is not fully displayed. It gets cut off due to the fixed height and overflow settings on the
`.o_label_extra_data` container.
<b>Solution:</b>
- Added responsive styling to o_label_extra_data for img so they resize properly and stay within bounds:
```css
.img {
max-height: 2.5em;
max-width: 100%;
}
```
ensures image appear without being cropped.
<b>opw-4741550</b>
Before FIX:

After FIX:

Forward-Port-Of: odoo/odoo#212903If the automatic check out and absence managment settings in attendance are set, it will not take into account the employees that have a flexible working schedule. These settings were not compatible with the notion of flexibility in hours. Backport of https://github.com/odoo/odoo/pull/196822 task-4816736 Forward-Port-Of: odoo/odoo#211461
Original PR description
If the automatic check out and absence managment settings in attendance are set, it will not take into account the employees that have a flexible working schedule. These settings were not compatible with the notion of flexibility in hours. Backport of https://github.com/odoo/odoo/pull/196822 task-4816736 Forward-Port-Of: odoo/odoo#211461
There are several flows where the persona of a member might not (or no longer) be known in JS. These members should simply be ignored when computing the correspondent of a channel rather than crashing. Forward-Port-Of: odoo/odoo#214458 Forward-Port-Of: odoo/odoo#214395
Original PR description
There are several flows where the persona of a member might not (or no longer) be known in JS. These members should simply be ignored when computing the correspondent of a channel rather than crashing. Forward-Port-Of: odoo/odoo#214458 Forward-Port-Of: odoo/odoo#214395
Before this commit, a HOOT test in discuss was failing non-deterministically on runbot: ``` [HOOT] Test "@mail/thread/thread/mark channel as fetched when a new message is loaded and thread is focused" failed: ``` The test should RPC mark as read once but rarely does twice instead. This happens because the condition for mark as read depends on whether the current user has seen the last message[1] and the RPC is not triggered again while marking as read is ongoing[2]. The problem is that
Original PR description
Before this commit, a HOOT test in discuss was failing non-deterministically on runbot: ``` [HOOT] Test "@mail/thread/thread/mark channel as fetched when a new message is loaded and thread is…
Before this commit, a HOOT test in discuss was failing non-deterministically on runbot: ``` [HOOT] Test "@mail/thread/thread/mark channel as fetched when a new message is loaded and thread is focused" failed: ``` The test should RPC mark as read once but rarely does twice instead. This happens because the condition for mark as read depends on whether the current user has seen the last message[1] and the RPC is not triggered again while marking as read is ongoing[2]. The problem is that "current user has seen" data are received from bus notification, while the "ongoing marking as read" window is until RPC response. This means it will properly make mark-as-read RPC once as long as the bus notification is received before the RPC response. In rare case the bus notification is received after, then the code[1] will think the user hasn't read the last message and also there's no ongoing marking as read [2] therefore it will trigger a RPC again. This problem shows a design issue with code flow using both RPC response and bus notifications. RPC response is simpler to understand but doesn't scale with Discuss needs, and since recently bus notifications did not work in tours so we were tempted to make discuss work a bit in tours thanks to RPC responses. One idea to solve this problem would be to rely solely on bus notifications, so every flow that expects RPC return should actually await the related bus notification response. While we are deciding on this topic, this commit just relax the test to assert at least one "mark as read". In practice a user may sometimes "mark as read" twice, but this is a known and minor issue for now until we find a better design to fix this problem once and for all. [1]: https://github.com/odoo/odoo/blob/saas-18.2/addons/mail/static/src/discuss/core/common/thread_model_patch.js#L337 [2]: https://github.com/odoo/odoo/blob/saas-18.2/addons/mail/static/src/discuss/core/common/thread_model_patch.js#L357 runbot-223240 Forward-Port-Of: odoo/odoo#214572
**[FIX] test_http: make test_webjson_list_args reliable** The domain in the query-string is quoted by werkzeug, but there are multiple possible equivalent quoting strategy and the test sometimes fails because it is quoted differently. The test is not about testing the different quoting strategy, use a proper url parser to make the test more resilient. **[FIX] test_http: more reliable test_models3** The quote in the returned text sometimes get escaped, sometimes not, sometimes with
Original PR description
**[FIX] test_http: make test_webjson_list_args reliable** The domain in the query-string is quoted by werkzeug, but there are multiple possible equivalent quoting strategy and the test sometimes fails because it is quoted differently. The test is not about testing the different quoting strategy, use a proper url parser to make the test more resilient. **[FIX] test_http: more reliable test_models3** The quote in the returned text sometimes get escaped, sometimes not, sometimes with a different QP code. Remove the quote, since the test is not about them, to make the test more reliable. Forward-Port-Of: odoo/odoo#212534 Forward-Port-Of: odoo/odoo#212333
**Issue** When viewing an invoice in Spanish, the "Outstanding credits" section may overflow or be cut off on the right side. **Steps to Reproduce** 1. Install the Accounting module. 2. Switch the user language to Spanish. 3. Navigate to Contabilidad > Clientes > Facturas. 4. Open an invoice that has outstanding credits. 5. Set the browser zoom to 125%. 6. Observe that the outstanding credits widget content is truncated or overflows its container. **Root Cause** The field `invoice_
Original PR description
**Issue** When viewing an invoice in Spanish, the "Outstanding credits" section may overflow or be cut off on the right side. **Steps to Reproduce** 1. Install the Accounting module. 2. Switch the…
**Issue** When viewing an invoice in Spanish, the "Outstanding credits" section may overflow or be cut off on the right side. **Steps to Reproduce** 1. Install the Accounting module. 2. Switch the user language to Spanish. 3. Navigate to Contabilidad > Clientes > Facturas. 4. Open an invoice that has outstanding credits. 5. Set the browser zoom to 125%. 6. Observe that the outstanding credits widget content is truncated or overflows its container. **Root Cause** The field `invoice_outstanding_credits_debits_widget` was placed directly in the form without a layout container, causing it to misalign and overflow in cases where translated text or zoom scaling increased its width. The lack of a proper responsive layout prevented it from adapting gracefully. **Fix** Wrapped the field inside a `<group>` element with class `oe_subtotal_footer px-4` to ensure it inherits consistent padding and alignment with other form elements. This provides a flexible layout that handles longer text and browser zoom correctly, maintaining readability and visual consistency. opw-4716266 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#213012 Forward-Port-Of: odoo/odoo#211100
This PR updates the share dialog message shown when a slide is shared via email. Since emails are queued and sent later in batches, the previous message could be misleading and prompt users to send multiple emails unnecessarily. Task-4797324 Forward-Port-Of: odoo/odoo#211390
Original PR description
This PR updates the share dialog message shown when a slide is shared via email. Since emails are queued and sent later in batches, the previous message could be misleading and prompt users to send multiple emails unnecessarily. Task-4797324 Forward-Port-Of: odoo/odoo#211390
**After this commit:** - Users will be able to view the India e-Invoicing status directly from the invoice list view. - The India e-Invoicing status field has also been added to the invoice form view. **Task**-4844345 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#213114
Original PR description
**After this commit:** - Users will be able to view the India e-Invoicing status directly from the invoice list view. - The India e-Invoicing status field has also been added to the invoice form view. **Task**-4844345 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#213114
Step to reproduce; - install documents - upload a parasolid file, it has extension `x_t` - download it Observation: if a file is uploaded with file named as `file.x_t`, it will be downloaded as `file.x_t.txt` Issue: currently, the `get_extension` method only allow alphanumeric values for extension, which do not consider extension having '_' https://github.com/odoo/odoo/blob/15fd3f62769b137cb9a0625f47b333424b851a27/odoo/tools/mimetypes.py#L212-L218 when such file is downloaded,
Original PR description
Step to reproduce; - install documents - upload a parasolid file, it has extension `x_t` - download it Observation: if a file is uploaded with file named as `file.x_t`, it will be downloaded as `file.x_t.txt` Issue: currently, the `get_extension` method only allow alphanumeric values for extension, which do not consider extension having '_' https://github.com/odoo/odoo/blob/15fd3f62769b137cb9a0625f47b333424b851a27/odoo/tools/mimetypes.py#L212-L218 when such file is downloaded, `_get_stream_from` appends extra extension to the filename, depending upon its mimetype. https://github.com/odoo/odoo/blob/15fd3f62769b137cb9a0625f47b333424b851a27/odoo/addons/base/models/ir_binary.py#L148-L150 Fix: instead of `isalnum()`, use a regex that allows alphanumeric and underscore in extension. opw-4801263 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#212197
Description of the issue/feature this PR addresses: Posting an account move will unconditionally overwrite any value in the `checked` field to the value of the `journal_id.autocheck_on_post` field. I.e. whatever the user has selected in the `checked` will be overwritten. This PR will change the functionality to work as the original comment for the feature states. Current behavior before PR: The `checked` field on an account move is always updated to the value of the `journal_id.autocheck_
Original PR description
Description of the issue/feature this PR addresses: Posting an account move will unconditionally overwrite any value in the `checked` field to the value of the `journal_id.autocheck_on_post` field. I.e. whatever the user has selected in the `checked` will be overwritten. This PR will change the functionality to work as the original comment for the feature states. Current behavior before PR: The `checked` field on an account move is always updated to the value of the `journal_id.autocheck_on_post` field, when posting an account move. Desired behavior after PR is merged: The checked field on an account move is updated to the value of the journal_id.autocheck_on_post, when posting a move, only when the journal_id.autocheck_on_post is `True`. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#213370
After merging this commit [1], the test sometimes non-deterministically fails on runbot. This PR aims to fix the test. [1]: https://github.com/odoo/odoo/commit/1a2c3c00869fd9702bb9d15e3d38d9c02a3349f5 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#213540
Original PR description
After merging this commit [1], the test sometimes non-deterministically fails on runbot. This PR aims to fix the test. [1]: https://github.com/odoo/odoo/commit/1a2c3c00869fd9702bb9d15e3d38d9c02a3349f5 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#213540
Before this commit, if you added an exclusion on a ptav and then removed it from the attribute, you would get an error when loading the PoS and could not open the PoS interface. opw-4874297 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#214525
Original PR description
Before this commit, if you added an exclusion on a ptav and then removed it from the attribute, you would get an error when loading the PoS and could not open the PoS interface. opw-4874297 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#214525
If customers migrate to version 18 from a lower version, 'Create Bill' record newly introduced so it just create but not translated. **Before fix:** ``` test_18=# select id,name from account_reconcile_model; id | name ----+---------------------------------------------------------------------------------------------------------------------------- 3 | {"en_US": "Line wi
Original PR description
If customers migrate to version 18 from a lower version, 'Create Bill' record newly introduced so it just create but not translated. **Before fix:** ``` test_18=# select id,name from…
If customers migrate to version 18 from a lower version, 'Create Bill' record newly introduced so it just create but not translated.
**Before fix:**
```
test_18=# select id,name from account_reconcile_model;
id | name
----+----------------------------------------------------------------------------------------------------------------------------
3 | {"en_US": "Line with Bank Fees", "es_AR": "Línea con comisiones bancarias"}
1 | {"en_US": "Invoices/Bills Perfect Match", "es_AR": "Coincidencia perfecta de facturas"}
2 | {"en_US": "Invoices/Bills Partial Match if Underpaid", "es_AR": "Coincidencia parcial si hay pagos parciales en facturas"}
4 | {"en_US": "Create Bill"}
5 | {"en_US": "Internal Transfers", "es_AR": "Transferencias internas"}
```
**After Fix:**
```
test_18=# select id,name from account_reconcile_model;
id | name
----+----------------------------------------------------------------------------------------------------------------------------
1 | {"en_US": "Invoices/Bills Perfect Match", "es_AR": "Coincidencia perfecta de facturas"}
2 | {"en_US": "Invoices/Bills Partial Match if Underpaid", "es_AR": "Coincidencia parcial si hay pagos parciales en facturas"}
5 | {"en_US": "Internal Transfers", "es_AR": "Transferencias internas"}
3 | {"en_US": "Line with Bank Fees", "es_AR": "Línea con comisiones bancarias"}
4 | {"en_US": "Create Bill", "es_AR": "Crear factura"}
```
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#213346Forward-Port-Of: odoo/enterprise#83860
Original PR description
Forward-Port-Of: odoo/enterprise#83860
Steps: - Create an employee with marital status is married - Keep the spouse name empty - Try to export ird reports with a confirmed payslip Current behavior: - Error raised Expected behavior: - Should be able to export the report even spouse name is empty Forward-Port-Of: odoo/enterprise#87926 Forward-Port-Of: odoo/enterprise#86270
Original PR description
Steps: - Create an employee with marital status is married - Keep the spouse name empty - Try to export ird reports with a confirmed payslip Current behavior: - Error raised Expected behavior: - Should be able to export the report even spouse name is empty Forward-Port-Of: odoo/enterprise#87926 Forward-Port-Of: odoo/enterprise#86270
opw-4772870 opw-4664501 Forward-Port-Of: odoo/enterprise#87859 Forward-Port-Of: odoo/enterprise#86891
Original PR description
opw-4772870 opw-4664501 Forward-Port-Of: odoo/enterprise#87859 Forward-Port-Of: odoo/enterprise#86891
Zipping the generator "tests" was producing an empty result. Then, the loop wasn't asserting anything. Forward-Port-Of: odoo/enterprise#87764 Forward-Port-Of: odoo/enterprise#87315
Original PR description
Zipping the generator "tests" was producing an empty result. Then, the loop wasn't asserting anything. Forward-Port-Of: odoo/enterprise#87764 Forward-Port-Of: odoo/enterprise#87315
Currently an error occurs when the user tries to remove the currency on any monetary field through web studio. Steps to replicate: - Open any list view with web_studio. - Drag and drop a monetary field and remove the currency field and save. Error: `TypeError: Argument must be bytes or unicode, got 'NoneType'` This error occurs because the `attrs` dictionary contains `{'name': None}`, and `etree.Element()` doesn't accept attributes with None values, causing it to raise a `TypeError`.
Original PR description
Currently an error occurs when the user tries to remove the currency on any monetary field through web studio.
Steps to replicate:
- Open any list view with web_studio.
- Drag and drop a monetary field and remove the currency field and save.
Error:
`TypeError: Argument must be bytes or unicode, got 'NoneType'`
This error occurs because the `attrs` dictionary contains `{'name': None}`, and `etree.Element()` doesn't accept attributes with None values, causing it to raise a `TypeError`.
This commit fixes the issue by making the field required so that user cant remove the value from currency field and hence preventing error at line [1].
[1]-https://github.com/odoo/enterprise/blob/a41cca06bc1e25614390f9207c937566557350a0/web_studio/controllers/main.py#L928
sentry-4244801243
Forward-Port-Of: odoo/enterprise#85565Adds a test to the fix done in the commit [814b1b2](https://github.com/odoo/enterprise/commit/814b1b21f60189715c82c96397c36da706736490) opw-4836094 Forward-Port-Of: odoo/enterprise#87166
Original PR description
Adds a test to the fix done in the commit [814b1b2](https://github.com/odoo/enterprise/commit/814b1b21f60189715c82c96397c36da706736490) opw-4836094 Forward-Port-Of: odoo/enterprise#87166
This commit introduces two improvements to the 'Add Properties' button in the cog menu of the Asset model: 1. Hides the button if the record has state = 'model'. Previously, the button was available but no action was triggered. 2. Raises an error message if the button 'Add Properties' is clicked in an asset without an asset model associated. Previously, only a warning with the unclear message "You need edit access on the parent doument to update these property fields" was shown. task-482209
Original PR description
This commit introduces two improvements to the 'Add Properties' button in the cog menu of the Asset model: 1. Hides the button if the record has state = 'model'. Previously, the button was available but no action was triggered. 2. Raises an error message if the button 'Add Properties' is clicked in an asset without an asset model associated. Previously, only a warning with the unclear message "You need edit access on the parent doument to update these property fields" was shown. task-4822091 Forward-Port-Of: odoo/enterprise#86651
In this PR, we change the paid net rule code to NET to align with other localizations. Forward-Port-Of: odoo/enterprise#87727
Original PR description
In this PR, we change the paid net rule code to NET to align with other localizations. Forward-Port-Of: odoo/enterprise#87727
The `_compute_show_method` relied on the context key `l10n_it_xml_export_monthly_tax_report_options` that may not be present during generic field tests (e.g. `model.new()`). This caused a Runbot failure in `test_computed_fields_without_dependencies`. This fix ensures the compute method exits safely if the required context is missing. [runbot-162081](https://runbot.odoo.com/odoo/error/162081) Forward-Port-Of: odoo/enterprise#87086
Original PR description
The `_compute_show_method` relied on the context key `l10n_it_xml_export_monthly_tax_report_options` that may not be present during generic field tests (e.g. `model.new()`). This caused a Runbot failure in `test_computed_fields_without_dependencies`. This fix ensures the compute method exits safely if the required context is missing. [runbot-162081](https://runbot.odoo.com/odoo/error/162081) Forward-Port-Of: odoo/enterprise#87086
Removing MISC journal from the dashboard of the Enterprise Invoicing App. Two cases need to be covered for it to be shown in the Enterprise Accounting App: 1) existing companies -> installing accountant : the show_on_dashboard field is set to True in the post_init of the accountant module. 2) accountant installed -> creating new companies : the show_on_dashboard field is set to True in the _post_load_data of the account chart template. task-4730184 Forward-Port-Of: odoo/enterprise#83
Original PR description
Removing MISC journal from the dashboard of the Enterprise Invoicing App. Two cases need to be covered for it to be shown in the Enterprise Accounting App: 1) existing companies -> installing accountant : the show_on_dashboard field is set to True in the post_init of the accountant module. 2) accountant installed -> creating new companies : the show_on_dashboard field is set to True in the _post_load_data of the account chart template. task-4730184 Forward-Port-Of: odoo/enterprise#83620