Tuesday, February 25, 2025
65 changes · saas-18.1
Enhancements to existing features
The Point of Sale interface now shows a clearer dialog title when selecting serial or lot numbers, with the product name separated for easier understanding. Printed receipts also display product attribute names at a more readable size, improving clarity for staff and customers.
Original PR description
In this commit: ---- - Improved the dialog title for better clarity. - Product name separated in title. - Adjusted attribute line size for better readability in print. task-4551282,4570086 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Resolved issues and error corrections
This fix changes how certain IAP JSON-RPC endpoint errors are reported, replacing noisy error stack traces with clearer warnings. This reduces unnecessary log noise while still keeping administrators informed when validation or transaction-related issues occur.
Original PR description
Currently, an error occurs in the log when a ValidationError or InFailedSqlTransaction error occurs when calling the JSON-RPC endpoint in IAP. error: `ConnectionError: null` This is because [1] added logger.exception that logs every error in the log when it appears. This commit will use the logger warning to print a warning in the terminal instead of the exception when a ValidationError or InFailedSqlTransaction error occurs. [1] - https://github.com/odoo/odoo/commit/a1477d1d00adb928b149f8e019f65c00f75ef129 sentry-6059323528
Miscellaneous changes
**[FIX] account: fix empty string and False/None inconsistencies** When empty, the `name` field of `account.move.line` could inconsistently hold either an empty string or False. This inconsistency led to different results when searching for lines with an empty label, as `label->not set` and `label == ""` yielded different outcomes. The latter behavior aligns with expected ORM operations. This fix ensures the name field is set to False whenever the computed result is an empty string, standa
Original PR description
**[FIX] account: fix empty string and False/None inconsistencies** When empty, the `name` field of `account.move.line` could inconsistently hold either an empty string or False. This inconsistency led to different results when searching for lines with an empty label, as `label->not set` and `label == ""` yielded different outcomes. The latter behavior aligns with expected ORM operations. This fix ensures the name field is set to False whenever the computed result is an empty string, standardizing search behavior. opw-4167139 [Enterprise PR](https://github.com/odoo/enterprise/pull/73256) --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#191026 Forward-Port-Of: odoo/odoo#186079
Fixed a display issue where form view scrollbars could appear on top of open chat windows, making conversations look partially covered. Chat windows now remain properly layered above the page content for a cleaner, less confusing experience.
Original PR description
Before this commit, when chat windows are open above form view, the scrollbar of form view was shown above the chat window. Steps to reproduce: - open project task with pad aside (1080p+ screen) -…
Before this commit, when chat windows are open above form view, the scrollbar of form view was shown above the chat window. Steps to reproduce: - open project task with pad aside (1080p+ screen) - open 2 or 3 chat windows - type many lines in project task pad to make form view scrollable - (optional) scroll on the form view => the scrollbar is above the chat windows This happens from a recent change [1] that increased the z-index of statusbar and ribbon of form view. This had the side-effect of also making z-index of scrollbar as high as their new z-index, which is `$zindex-sticky: 1020`. Chat window z-index was `$zindex-dropdown + 1: 1001`, slightly higher than the z-index of document views elements that were also negatively affecting chat windows [2]. This commit fixes the issue by increasing even more the z-index of chat windows, from 1001 to 1020. This puts them at the same level as sticky. Task-4604254 Before  After  [1]: https://github.com/odoo/odoo/pull/197581 [2]: https://github.com/odoo/odoo/pull/198362
The Point of Sale flow now waits until an order deletion is fully complete before allowing the register action to continue. This prevents accidental creation of a new order during fast automated or user interactions, improving reliability in the register workflow.
Original PR description
runbot-error-id: 111973 After deleting an order, the runbot was clicking so fast on the register button that it was creating another order. This commit checks that the deletion of the order is fully finished before clicking on register. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This update fixes a translation conflict around the word "register" in Point of Sale. It helps ensure translated labels are clearer and less likely to be confused with similar terms used elsewhere in Odoo.
Original PR description
Description of the issue/feature this PR addresses: Translation issue Current behavior before PR: The term "register" confilicts with other terms in other modules Desired behavior after PR is merged: --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
The follow-up partner screen now displays the send button in line with the overdue invoices section. This small visual fix makes the page easier to read and helps users find the main action more naturally.
Original PR description
The send button wasn't align with the overdue Invoices above, now he is. task-4582381 Linked:https://github.com/odoo/enterprise/pull/79446
The Discuss command palette now avoids showing the same direct message conversation twice when it is both recent and has mentions. This keeps important mentioned conversations prioritized while making the chat list clearer and less confusing for users.
Original PR description
Before this commit, a conversation that was both recent and contained mentions could be displayed twice in the discuss command palette. This was the case with DM chats. An item should be present only…
Before this commit, a conversation that was both recent and contained mentions could be displayed twice in the discuss command palette. This was the case with DM chats. An item should be present only once in the command palette, and if a conversation has both mentions and is recent, it should be present only in the most important category "mentions". The problem occurs because duplicate mentioned and recent conversations are tracked on mentioned channels, using either the conversation or the persona of correspondent for DM chat. The check on mentioned persona was mistakenly omitted, thus a DM chat could be present in mentions and recents. This commit fixes the issue by properly checking whether the persona of DM chat was already in "mentions", so that it's not elligible in the "recent" category if that's the case. task-4510209 Before <img width="658" alt="Screenshot 2025-02-24 at 14 07 44" src="https://github.com/user-attachments/assets/fab6e6bb-fead-4c31-9fd4-4a2a3a4e895f" /> After <img width="661" alt="Screenshot 2025-02-24 at 14 07 52" src="https://github.com/user-attachments/assets/cf70035a-42b0-47df-96a3-1a95580d18a2" />
This fix prevents an error when deleting certain attachments in the Indian GSTR reporting module. It removes an unnecessary dependency-related call, helping the module work reliably whether or not related electronic invoicing features are installed.
Original PR description
_unlink_except_government_document() is only defined in account_edi, which is not a dependancy of this module... but we don't need to call super for an ondelete constraint. runbot error: 114255
Fixed an issue where scanning an unknown barcode or QR code in Point of Sale could show an error instead of opening the product creation flow. This keeps barcode lookup workflows working smoothly when staff need to add missing products during a POS session.
Original PR description
**Steps to reproduce:** - Install "Point of Sale" - Go to "Settings" - Enter the API Key for "barcodelookup.com" - Open a POS session - Scan a QR code not linked to any product **Issue:** The following error is raised: The action "point_of_sale.product_product_action_add_pos" does not exist. **Cause:** The action has been renamed to "product_template_action_add_pos". opw-4584711
The follow-up partner view now aligns the send button correctly with the overdue invoices section. This small visual fix makes the screen cleaner and easier for users to read when managing customer follow-ups.
Original PR description
The send button wasn't align with the overdue Invoices above, now he is. task-4582381 linked:https://github.com/odoo/odoo/pull/198529
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#199176
Original PR description
Description of the issue/feature this PR addresses: Current behavior before PR: Desired behavior after PR is merged: --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#199176
This commit avoids random error in test_group_by_country_and_product For more information: - https://runbot.odoo.com/odoo/action-573/114881 - https://runbot.odoo.com/odoo/runbot.build.error/116798 The error is caused because there are two pickings: one with a single move and the other with two moves. In the test, we should modify the move line that is alone. Since the order was not checked, the action done for the wave could return a wizard to create a backorder because we modified t
Original PR description
This commit avoids random error in test_group_by_country_and_product For more information: - https://runbot.odoo.com/odoo/action-573/114881 - https://runbot.odoo.com/odoo/runbot.build.error/116798 The error is caused because there are two pickings: one with a single move and the other with two moves. In the test, we should modify the move line that is alone. Since the order was not checked, the action done for the wave could return a wizard to create a backorder because we modified the quantity of a move line to 0 in a picking that has multiple move lines. Forward-Port-Of: odoo/odoo#198820
Indonesia officially added new provinces in 2022. - Papua Barat Daya was forgotten in an old PR. - Papua Pengunungan was assigned ISO code PE, not PP. In 16.0, we just change the ISO code. The XMLID will be corrected in master. Codes: https://www.geonames.org/ID/administrative-division-indonesia.html Official Document: https://peraturan.bpk.go.id/Details/232726/uu-no-29-tahun-2022 Wikipedia in English: https://en.wikipedia.org/wiki/Provinces_of_Indonesia Original PR: odoo/
Original PR description
Indonesia officially added new provinces in 2022. - Papua Barat Daya was forgotten in an old PR. - Papua Pengunungan was assigned ISO code PE, not PP. In 16.0, we just change the ISO code. The XMLID will be corrected in master. Codes: https://www.geonames.org/ID/administrative-division-indonesia.html Official Document: https://peraturan.bpk.go.id/Details/232726/uu-no-29-tahun-2022 Wikipedia in English: https://en.wikipedia.org/wiki/Provinces_of_Indonesia Original PR: odoo/odoo#193103 Forward-Port-Of: odoo/odoo#199035
- In calendar, when only one employee (different from the user) was selected as an attendeed in the calendar sidebar, the working location of this employee was not displayed. To work around this, switch to `multiCalendar` in that case. - When the current user was not selected as an attendee, it was possible to add a working location for the user on a day even if there was already an exisiting one. To avoid this, always fetch the user's working location to check if one already exists for a giv
Original PR description
- In calendar, when only one employee (different from the user) was selected as an attendeed in the calendar sidebar, the working location of this employee was not displayed. To work around this, switch to `multiCalendar` in that case. - When the current user was not selected as an attendee, it was possible to add a working location for the user on a day even if there was already an exisiting one. To avoid this, always fetch the user's working location to check if one already exists for a given day, but only display them if the user's filter is active. - Work locations were not displayed when "Everybody's calendar" was selected because the elements of `attendeeIds` had the wrong type. opw-4373391 Forward-Port-Of: odoo/odoo#192023
**Issue Description** When producing a product in Odoo and changing the by-product from Product A to Product B, the stock.move record gets updated to reflect the new product (Product B), but the corresponding stock.move.line still retains the old product (Product A). This leads to inconsistent data between stock.move and stock.move.line, which can cause inaccurate inventory reports and accounting records. **Steps to Reproduce** 1. Create a BoM (Bill of Materials) that includes Product A
Original PR description
**Issue Description** When producing a product in Odoo and changing the by-product from Product A to Product B, the stock.move record gets updated to reflect the new product (Product B), but the…
**Issue Description** When producing a product in Odoo and changing the by-product from Product A to Product B, the stock.move record gets updated to reflect the new product (Product B), but the corresponding stock.move.line still retains the old product (Product A). This leads to inconsistent data between stock.move and stock.move.line, which can cause inaccurate inventory reports and accounting records. **Steps to Reproduce** 1. Create a BoM (Bill of Materials) that includes Product A as a by-product with a quantity of 1. 2. Create a Manufacturing Order (MO) from this BoM. 3. Confirm the MO and set it to In Progress. 4. In the MO interface: Change the by-product from Product A to Product B. 5. Complete the MO. https://github.com/user-attachments/assets/811e181d-894d-4605-aeb9-027ff379d40d **Current Behavior** The product in the stock.move is updated to Product B. However, the product in the related stock.move.line remains as Product A. **Expected Behavior** The byproduct's product_id shouldn't even be editable in the first place when the MO has already been confirmed (as it is for components). It would be worth to add the same kind of readonly condition on the byproduct side as well. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#198522 Forward-Port-Of: odoo/odoo#194972
In this commit: === - When a reward is available, the More action button is visually highlighted . Forward-Port-Of: odoo/odoo#198970
Original PR description
In this commit: === - When a reward is available, the More action button is visually highlighted . Forward-Port-Of: odoo/odoo#198970
**Issue:** When the website is configured to display prices VAT included, combo products incorrectly show their prices VAT excluded. **Steps to Reproduce:** - in website setting check tax included of `Display Product Prices` - Sales > Products > Products - Create a new product of type "Combo" and set a price - click on go to website The price displayed on the website is VAT excluded, even though VAT inclusion is configured. To address this issue, a disclaimer has been adde
Original PR description
**Issue:** When the website is configured to display prices VAT included, combo products incorrectly show their prices VAT excluded. **Steps to Reproduce:** - in website setting check tax included of `Display Product Prices` - Sales > Products > Products - Create a new product of type "Combo" and set a price - click on go to website The price displayed on the website is VAT excluded, even though VAT inclusion is configured. To address this issue, a disclaimer has been added to inform users that while taxes are not displayed for combo products, they will be properly calculated during checkout. opw-4454112 Forward-Port-Of: odoo/odoo#194835
The CRON has to search for documents that are not in error because they are filtered out in _process_jobs. Without that, the documents are retrieved, not processed but the cron is triggered again and again endlessly. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#198973
Original PR description
The CRON has to search for documents that are not in error because they are filtered out in _process_jobs. Without that, the documents are retrieved, not processed but the cron is triggered again and again endlessly. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#198973
The Wi-Fi disconnection method was still unlinking an old configuration file, which is now replaced by the `odoo.conf` file. This fix replaces the file unlinking by a coniguration file update. Task: 4592796 Forward-Port-Of: odoo/odoo#198962
Original PR description
The Wi-Fi disconnection method was still unlinking an old configuration file, which is now replaced by the `odoo.conf` file. This fix replaces the file unlinking by a coniguration file update. Task: 4592796 Forward-Port-Of: odoo/odoo#198962
### Issue: When changing the location/dest of a picking, the location/dest of the stock moves are not updated and the user may not even notice it. ### To reproduce the issue: 1. In Settings, enable "Storage Locations" 2. Inventory > Operations > Internal, New - Add an operation - Change the location and destination location of the picking 3. Save 4. Mark as Todo 5. Open the created move #### Error: the location and destination location of the stock move are still the initia
Original PR description
### Issue: When changing the location/dest of a picking, the location/dest of the stock moves are not updated and the user may not even notice it. ### To reproduce the issue: 1. In Settings, enable…
### Issue: When changing the location/dest of a picking, the location/dest of the stock moves are not updated and the user may not even notice it. ### To reproduce the issue: 1. In Settings, enable "Storage Locations" 2. Inventory > Operations > Internal, New - Add an operation - Change the location and destination location of the picking 3. Save 4. Mark as Todo 5. Open the created move #### Error: the location and destination location of the stock move are still the initial ones. ### Cause of the issue: The onchange method `_onchange_locations` of the "stock.picking" model: https://github.com/odoo/odoo/blob/f1fb0527f1b29e4b464e13718d6d0edb3b32a114/addons/stock/models/stock_picking.py#L825-L836 has been removed in saas-17.2 byt the push pull refactror: 11e69870db1c49d9a6af79ffd263e4e162b34b6b However, it should not have been for the "location_id" since it was not replaced by any other mechanic and it has been replaced by a compute method for the "location_dest_id": https://github.com/odoo/odoo/blob/5a61e440232b119f712ff9545ec3e535210bbb94/addons/stock/models/stock_move.py#L200-L201 However, this compute method is not triggered in the above flow for the following reason: On the picking model, there are two fields that contain the stock moves: https://github.com/odoo/odoo/blob/17a63a6cda41a44e3d4ff8b5a9042e93ba956bc8/addons/stock/models/stock_picking.py#L612-L614 Where `move_ids_without_packages` is a subset of `move_ids` When editing the operations of a picking, we are actually dealing with the field `move_ids_without_packages`. So, when changing the locations of the picking, the webclient sends the SMs via the field `move_ids_without_packages`, i.e.: the web client does not provide any value for `move_ids`. Server side, when creating a `new` record based on the provided values, we will handle the inverse of `move_ids_without_packages`, i.e.: we will make sure that the stock moves have the field `picking_id` correctly defined: https://github.com/odoo/odoo/blob/a4c2f66700dd98487ac6bb8f0f25fdc4abffd0bf/odoo/models.py#L6366-L6374 **But** we don't define any value for the siblings of the field. It means that we don't set any value for the field `move_ids`. This will lead to the bug: later on in the onchange, we flag all fields that will have to be recomputed: https://github.com/odoo/odoo/blob/b794f0f332f473deb2c04eba60baf4761db3b508/addons/web/models/models.py#L983 And here we would hope that the field `location_dest_id` of the stock moves will be flagged, as mentioned in the dependencies: https://github.com/odoo/odoo/blob/68ae97bd27fbdc874922e03f52f8b0c7953df801/addons/stock/models/stock_move.py#L206-L207 But... In `_modified_triggers`, at some point, we are here https://github.com/odoo/odoo/blob/a4c2f66700dd98487ac6bb8f0f25fdc4abffd0bf/odoo/models.py#L7200-L7203 Where `field` is `stock.move.picking_id`. So, we iterate on the inverse field of `field`, i.e.: `move_ids` and `move_ids_without_packages`. However, as explicitly mentioned in the comment, we "use an inverse of field without domain", i.e.: `move_ids`. We therefore read the value of this field on the picking which is, because of the bug explained in the previous paragraph, an empty record. As a result, the ORM considers that it does not have to recompute any `location_dest_id`. The ORM team is aware of the issue. They have tried to write a generic solution (cf PR [191318](https://github.com/odoo/odoo/pull/191318)) but it led to a lot of other errors. So, the issue has been considered as a limitation and added to a todo list on their side. In the meantime, it is possible to patch the issue with a stock-specific fix. Note: the issue will also happen when editing an existing picking. Suppose a picking with one move SM01. The user adds a second move SM02, does not save and edits the destination location of the picking: for the same reasons, the ORM will only see SM01 and, therefore, will call the compute method for SM01 only. Contains a backport of 22e17e513e9d0309a832e27ee10f89a96688d905 Co-authored-by: "Adrien Widart (awt)" <awt@odoo.com> opw-4491101 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#198617 Forward-Port-Of: odoo/odoo#198504
This commit fills in the missing prop of the ShortcutsFooterComponent which was forgotten in https://github.com/odoo/odoo/commit/dd583fd670e0ee03b04711780bad2429b18a0788 Forward-Port-Of: odoo/odoo#199057
Original PR description
This commit fills in the missing prop of the ShortcutsFooterComponent which was forgotten in https://github.com/odoo/odoo/commit/dd583fd670e0ee03b04711780bad2429b18a0788 Forward-Port-Of: odoo/odoo#199057
Steps to reproduce the bug: - Create two storable products: - P1, weight: 1KG - P2, weight: 2KG - Create a delivery order: - 1 unit of P1 and P2 - Mark it as "To Do" - Set the quantity to 1 for P1 and 0 for P2 - Print the operation type Problem: Only product P1 appears in the report, but the total weight is 3KG instead of 1KG. opw-4547704 Forward-Port-Of: odoo/odoo#198763
Original PR description
Steps to reproduce the bug:
- Create two storable products:
- P1, weight: 1KG
- P2, weight: 2KG
- Create a delivery order:
- 1 unit of P1 and P2
- Mark it as "To Do"
- Set the quantity to 1 for P1 and 0 for P2
- Print the operation type
Problem:
Only product P1 appears in the report, but the total weight is 3KG instead of 1KG.
opw-4547704
Forward-Port-Of: odoo/odoo#198763Before this PR, the `discuss_channel_as_guest_tour` would sometimes fail. Discuss is displayed once the thread is restored. However, one patch removes the `useState` from the store of the component, which leads to the `hasRestoredThread` flag not being observed. If `restoreDiscussThread` is too slow to execute, no render occur, no thread is displayed. This PR fixes the issue. runbot-106455 Description of the issue/feature this PR addresses: Current behavior before PR: Desired behavio
Original PR description
Before this PR, the `discuss_channel_as_guest_tour` would sometimes fail. Discuss is displayed once the thread is restored. However, one patch removes the `useState` from the store of the component, which leads to the `hasRestoredThread` flag not being observed. If `restoreDiscussThread` is too slow to execute, no render occur, no thread is displayed. This PR fixes the issue. runbot-106455 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#198979
Steps to reproduce: - change your language to French (or any language which doesn't the week on Sundays) - insert a pivot into a spreadsheet - insert the dynamic version with =PIVOT(1) - change the row groups to "Day of week" - right click on any pivot value and "See records" => the day of week displayed in spreadsheet doesn't match the records. Task: 4591993 Description of the issue/feature this PR addresses: Current behavior before PR: Desired behavior after PR is merged:
Original PR description
Steps to reproduce: - change your language to French (or any language which doesn't the week on Sundays) - insert a pivot into a spreadsheet - insert the dynamic version with =PIVOT(1) - change the row groups to "Day of week" - right click on any pivot value and "See records" => the day of week displayed in spreadsheet doesn't match the records. Task: 4591993 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#198609
Steps to reproduce: 1. Write anything in a searchbar 2. Navigate on togglable item 3. Press arrowleft 4. Hold arrowright -> It will spam name_search queries We fix this by checking that the "arrowright" event isn't held (repeat=false). Task: 4476832 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#198413 Forward-Port-Of: odoo/odoo#197502
Original PR description
Steps to reproduce: 1. Write anything in a searchbar 2. Navigate on togglable item 3. Press arrowleft 4. Hold arrowright -> It will spam name_search queries We fix this by checking that the "arrowright" event isn't held (repeat=false). Task: 4476832 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#198413 Forward-Port-Of: odoo/odoo#197502
Before this commit, when the user validates a stock picking and that user does not have access to sales app, he will get a traceback if `sale_project_stock` module is installed because the `reinvoiced_sale_order_id` field of the project linked to the picking and that field required the user to have sale access to access to it. This commit adds a sudo to generate eventual SOLs to reinvoice the stock move when the user without any access to Sales validates the stock picking. Steps to reprod
Original PR description
Before this commit, when the user validates a stock picking and that user does not have access to sales app, he will get a traceback if `sale_project_stock` module is installed because the `reinvoiced_sale_order_id` field of the project linked to the picking and that field required the user to have sale access to access to it. This commit adds a sudo to generate eventual SOLs to reinvoice the stock move when the user without any access to Sales validates the stock picking. Steps to reproduce the issue: ---------------------------- 1. Create a sales order with a storable product 2. and Service product that creates a task in the Field service project 3. After confirming this SO, a task is created => assign Demo to this task and demo doesn't have Sales access right 4. Login as demo, trying to validate the delivery from this task opw-4590044 Forward-Port-Of: odoo/odoo#198524
Currently searching with the reference requires to enter the full reference to find the product Steps to reproduce: ------------------- * Modify the Acoustic bloc screen product with an internal reference as TEST_01 * Open pos session * Search TEST > Observation: The Acoustic bloc screen is not in the result Why the fix: ------------ We don't require the `default_code` to be an exactMatch anymore, we make it an inclusion matching. opw-4587548 Forward-Port-Of: odoo/odoo#198841
Original PR description
Currently searching with the reference requires to enter the full reference to find the product Steps to reproduce: ------------------- * Modify the Acoustic bloc screen product with an internal reference as TEST_01 * Open pos session * Search TEST > Observation: The Acoustic bloc screen is not in the result Why the fix: ------------ We don't require the `default_code` to be an exactMatch anymore, we make it an inclusion matching. opw-4587548 Forward-Port-Of: odoo/odoo#198841
Discuss test helpers provide an `asTab` parameter to mount two main clients, simulating odoo being opened in two different tabs and a dropdown is available to switch from one view to the other. However, height is not propagated to the parent div. As a result, discuss components are invisible, as height is not working properly. This PR ensures the parent div is properly configured, allowing to see discuss UI. Description of the issue/feature this PR addresses: Current behavior before
Original PR description
Discuss test helpers provide an `asTab` parameter to mount two main clients, simulating odoo being opened in two different tabs and a dropdown is available to switch from one view to the other. However, height is not propagated to the parent div. As a result, discuss components are invisible, as height is not working properly. This PR ensures the parent div is properly configured, allowing to see discuss UI. 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#198959
**Current behavior before PR:** - The html_sanitize method sanitized certain banner attributes, such as contenteditable, role, and aria-label. This caused an issue where, when a blur event was triggered, the innerHTML of the current banner would be replaced with sanitized HTML. As a result, these attributes were removed, and the absence of the contenteditable attribute made it impossible to place the cursor inside the banner. **Desired behavior after PR is merged:** - Now, when the norm
Original PR description
**Current behavior before PR:** - The html_sanitize method sanitized certain banner attributes, such as contenteditable, role, and aria-label. This caused an issue where, when a blur event was triggered, the innerHTML of the current banner would be replaced with sanitized HTML. As a result, these attributes were removed, and the absence of the contenteditable attribute made it impossible to place the cursor inside the banner. **Desired behavior after PR is merged:** - Now, when the normalize method is called, the `contenteditable="true"` attribute will be applied to all elements with the `o_editable` class, and the `contenteditable="false"` attribute will be applied to all elements with the `o_not_editable` class. task-4297729 Forward-Port-Of: odoo/odoo#189532
Currently, if an email containing a `.eml` attachment is sent, that attachment won't be able to be downloaded correctly depending on the email client used; the attachment will download, but will have a size zero. ### Steps to reproduce * On any chatter, send a message containing a `.eml` attachment (another email file). * Using Thunderbird, attempt to download that attachment. The downloaded attachment will be empty (0 kB). ### Cause The `.eml` file format, which represents an em
Original PR description
Currently, if an email containing a `.eml` attachment is sent, that attachment won't be able to be downloaded correctly depending on the email client used; the attachment will download, but will have…
Currently, if an email containing a `.eml` attachment is sent, that attachment won't be able to be downloaded correctly depending on the email client used; the attachment will download, but will have a size zero. ### Steps to reproduce * On any chatter, send a message containing a `.eml` attachment (another email file). * Using Thunderbird, attempt to download that attachment. The downloaded attachment will be empty (0 kB). ### Cause The `.eml` file format, which represents an email message, has the MIME type `message/rfc822`. According to [RFC 2046 Section 5.2.1](https://datatracker.ietf.org/doc/html/rfc2046#section-5.2.1:~:text=No%20encoding%20other%20than%20%227bit%22%2C%20%228bit%22%2C%20or%20%22binary%22%20is%20permitted%20for%0A%20%20%20the%20body%20of%20a%20%22message/rfc822%22%20entity.), attachments of this MIME type must be encoded using `7bit`, `8bit`, or `binary`. However, the system currently encodes all attachments using Base64 by default, which is not compliant with the standard for `message/rfc822`. Although some email clients tolerate Base64 encoding for `message/rfc822`, others, such as Thunderbird, Roundcube, and Zimbra, strictly follow the RFC and reject Base64-encoded `message/rfc822` attachments. As a result, these attachments appear invalid and are downloaded as empty files. opw-4126522 Forward-Port-Of: odoo/odoo#198862 Forward-Port-Of: odoo/odoo#194988
Versions -------- - 18.0+ Steps ----- 1. Enable Prevent Sale of Zero Priced Product; 2. have a product with attributes; 3. set its list price to 0; 4. add a price extra to one of its attributes; 5. go to its eCommerce page; 6. select the price extra attribute. Issue ----- Both the "Add to cart" and "Contact Us" buttons are shown. Cause ----- - Commit 8f4c8ada7e9fe refactored the `website_sale.product` template, moving the "Contact Us" button outside of the `div.js_product`
Original PR description
Versions -------- - 18.0+ Steps ----- 1. Enable Prevent Sale of Zero Priced Product; 2. have a product with attributes; 3. set its list price to 0; 4. add a price extra to one of its attributes; 5. go to its eCommerce page; 6. select the price extra attribute. Issue ----- Both the "Add to cart" and "Contact Us" buttons are shown. Cause ----- - Commit 8f4c8ada7e9fe refactored the `website_sale.product` template, moving the "Contact Us" button outside of the `div.js_product` element. - This element gets passed as `$parent` to the `_onChangeCombination` method, which ought to handle these changes. - Because the `#contact_us_wrapper` is no longer in `$parent`, it fails to find it and change its classes accordingly. Solution -------- Instead of querying for the `#contact_us_wrapper` element directly in `$parent`, look for the `#product_details` element first, then query it. opw-4423323 Forward-Port-Of: odoo/odoo#195776
Have an x2many list (non editable) or kanban, such that editing a record of the relation is done through the form view dialog. Have a default_order on the x2many view containing at least a field that isn't in the view. Before this commit, there were two issues occurring when the user clicked on "Save" (in the dialog footer) after editing a record in the dialog. 1) if the first field of the order wasn't in the view, e.g. `default_order="x"` but x wasn't in the view: there was a crash, because
Original PR description
Have an x2many list (non editable) or kanban, such that editing a record of the relation is done through the form view dialog. Have a default_order on the x2many view containing at least a field that…
Have an x2many list (non editable) or kanban, such that editing a record of the relation is done through the form view dialog. Have a default_order on the x2many view containing at least a field that isn't in the view. Before this commit, there were two issues occurring when the user clicked on "Save" (in the dialog footer) after editing a record in the dialog. 1) if the first field of the order wasn't in the view, e.g. `default_order="x"` but x wasn't in the view: there was a crash, because we tried to sort records on a field that is unknown. 2) if it wasn't the first field of the order, e.g. `default_order="x,y"` but y wasn't in the view: the changes done in the dialog were lost, so it was no possible to edit records. Both issues had the same root cause. After the edition, we tried to sort the relation (as the order might have changed). We do that since [1], but it wasn't the main purpose of this commit. It has been done because it looked like a quick win at the time, and we thought it was a good idea. However, functionally speaking, sorting the records after the edition isn't wanted. If I just clicked on a record, edited it, I expect the record to remain where it was after closing the dialog. So as sorting isn't necessarily wanted, and it even produces issues in some cases, this commit reverts that "feature". [1] https://github.com/odoo/odoo/commit/17e198153ecfd9c5c32b3b22f43e2f1b8100a1c3 Closes #197867 opw-4499150 (case (2)) 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#199070 Forward-Port-Of: odoo/odoo#198757
At some point, servers started to return `image/svg+xml; charset=utf-8` instead of `image/svg+xml` in the `content-type` header of SVG images. Because of this, dynamic SVGs were not properly handled anymore. This commit adapts the mimetype comparisons to cope for this extra `charset` info inside the mimetype. Steps to reproduce: - Drop an image block inside a website page. - Replace the image. - Search for e.g. "city". - Pick an undraw illustration. => The image was lost because its
Original PR description
At some point, servers started to return `image/svg+xml; charset=utf-8` instead of `image/svg+xml` in the `content-type` header of SVG images. Because of this, dynamic SVGs were not properly handled anymore. This commit adapts the mimetype comparisons to cope for this extra `charset` info inside the mimetype. Steps to reproduce: - Drop an image block inside a website page. - Replace the image. - Search for e.g. "city". - Pick an undraw illustration. => The image was lost because its `src` became `false`. Forward-Port-Of: odoo/odoo#198267
The first subtotal is always the untaxed amount of the document. All following subtotals are just the previous one plus the previous taxes. So the subtotal no longer depend of the taxes under it. opw-4571908 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#199056
Original PR description
The first subtotal is always the untaxed amount of the document. All following subtotals are just the previous one plus the previous taxes. So the subtotal no longer depend of the taxes under it. opw-4571908 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#199056
Before this commit, searching emoji required at least 2 chars. There is no reason to not allow 1 char, especially when searching some emoji that are best found with a single char, e.g. "9️⃣" with "9". Forward-Port-Of: odoo/odoo#199084 Forward-Port-Of: odoo/odoo#198759
Original PR description
Before this commit, searching emoji required at least 2 chars. There is no reason to not allow 1 char, especially when searching some emoji that are best found with a single char, e.g. "9️⃣" with "9". Forward-Port-Of: odoo/odoo#199084 Forward-Port-Of: odoo/odoo#198759
Issue: Deleting a non-existing property in the embeddedState of an EmbeddedComponent would produce a traceback. Expected: If no embeddedState snapshot was done (previousEmbeddedState is null), it means that no effective change was performed, and in that case `changeState` should return early to prevent the traceback. task-4600079 Forward-Port-Of: odoo/odoo#199019
Original PR description
Issue: Deleting a non-existing property in the embeddedState of an EmbeddedComponent would produce a traceback. Expected: If no embeddedState snapshot was done (previousEmbeddedState is null), it means that no effective change was performed, and in that case `changeState` should return early to prevent the traceback. task-4600079 Forward-Port-Of: odoo/odoo#199019
Following https://github.com/odoo/odoo/pull/196980 There is still a few non-deterministic errors in auth_totp modules We will assume that the issue cause is the same thus solving them in the same way. Note: None of them were able to be reproduced more easily by toggling the browser CPU rb-135125,135120,135113 Forward-Port-Of: odoo/odoo#198824
Original PR description
Following https://github.com/odoo/odoo/pull/196980 There is still a few non-deterministic errors in auth_totp modules We will assume that the issue cause is the same thus solving them in the same way. Note: None of them were able to be reproduced more easily by toggling the browser CPU rb-135125,135120,135113 Forward-Port-Of: odoo/odoo#198824
When making a payment from the PoS, the user would always be the Public User. This would cause the payload sent to paypal to be incorrect and the payment to fail. This happens because we are trying to make a payment without any user, so this can be reproduced in other workflows. Like making a donation Steps to reproduce: ------------------- * Setup paypal payment provider * Create a PoS payment method with the paypal provider * Create a PoS order and pay with the paypal payment method
Original PR description
When making a payment from the PoS, the user would always be the Public User. This would cause the payload sent to paypal to be incorrect and the payment to fail. This happens because we are trying…
When making a payment from the PoS, the user would always be the Public User. This would cause the payload sent to paypal to be incorrect and the payment to fail. This happens because we are trying to make a payment without any user, so this can be reproduced in other workflows. Like making a donation Steps to reproduce: ------------------- * Setup paypal payment provider * Create a PoS payment method with the paypal provider * Create a PoS order and pay with the paypal payment method > Observation: You get an error saying that something is malformed Alternative steps to reproduce: -------------------------------- * Make sure you are not connected on Odoo * Go to the `donation/pay` url * Fill out the form and make the payment via paypal > Observation: You get an error saying that something is malformed Why the fix: ------------ When using the public user, we cannot provide an email address or a country code. To fix this we make sure to not send the email address at all when there is none available. And we send the country code of the company instead of none. opw-4446219 Forward-Port-Of: odoo/odoo#198407
Add "(copy)" to the name of the duplicated payment term. task-4227445 Forward-Port-Of: odoo/odoo#198913 Forward-Port-Of: odoo/odoo#197605
Original PR description
Add "(copy)" to the name of the duplicated payment term. task-4227445 Forward-Port-Of: odoo/odoo#198913 Forward-Port-Of: odoo/odoo#197605
We forgot to parse a boolean which was stored as a string so it was always considered true (both the strings `'true'` and `'false'` evaluate to `true` in a boolean context. This change also fixes the `showQuantity` computation in the product and combo configurators (the computation assumed the user was on the product page, which isn't necessarily the case for "add to cart" snippets). Forward-Port-Of: odoo/odoo#196406
Original PR description
We forgot to parse a boolean which was stored as a string so it was always considered true (both the strings `'true'` and `'false'` evaluate to `true` in a boolean context. This change also fixes the `showQuantity` computation in the product and combo configurators (the computation assumed the user was on the product page, which isn't necessarily the case for "add to cart" snippets). Forward-Port-Of: odoo/odoo#196406
**Current behaviour before PR:** Creating a link in an empty block using powerbox contains trailing `br` at the end of link. Due to this `br` , when user presses `ctrl + A` and applies any format, `br` also gets formatted along with link. In such case when user selects link using double click and removes format using remove-format button, the link gets unformatted but `br` remains formatted because it is not traversed in selection. **Desired behaviour after PR:** There should be no trai
Original PR description
**Current behaviour before PR:** Creating a link in an empty block using powerbox contains trailing `br` at the end of link. Due to this `br` , when user presses `ctrl + A` and applies any format, `br` also gets formatted along with link. In such case when user selects link using double click and removes format using remove-format button, the link gets unformatted but `br` remains formatted because it is not traversed in selection. **Desired behaviour after PR:** There should be no trailing `br` after creating a link as the block is not empty anymore. task-4399010 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#190796
Before this commit: ============== - Receipt header time check relied on a trigger. After this commit: ============ - A custom selector is used to verify the printed receipt header. runbot Error: 134719 Forward-Port-Of: odoo/odoo#198251
Original PR description
Before this commit: ============== - Receipt header time check relied on a trigger. After this commit: ============ - A custom selector is used to verify the printed receipt header. runbot Error: 134719 Forward-Port-Of: odoo/odoo#198251
When printing a preparation receipt the correct time was not shown (It was always UTC time). Also when the order was not sent to the server the time was not shown at all. Steps to reproduce: ------------------- * Setup a kitchen printer for a PoS * Open PoS go on a table and add some products * Click on the Order button > Observation: The time is not shown in the receipt * Leave the table and come back to it to make sure order is sent to the server * Add another product and send the or
Original PR description
When printing a preparation receipt the correct time was not shown (It was always UTC time). Also when the order was not sent to the server the time was not shown at all. Steps to reproduce: ------------------- * Setup a kitchen printer for a PoS * Open PoS go on a table and add some products * Click on the Order button > Observation: The time is not shown in the receipt * Leave the table and come back to it to make sure order is sent to the server * Add another product and send the order to the kitchen > Observation: The time is in UTC Why the fix: ------------ Instead of relying on the write date of the order we now rely on the current time of the client to show the time in the receipt. This time will always correspond to the time the order was sent to the kitchen. opw-4454102 Forward-Port-Of: odoo/odoo#196850
Splitting the function `click` on the Pricelist Button to make it inheritable, by creating a new function called `getPricelistList` that will allow filtering them whenever needed. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#196813 Forward-Port-Of: odoo/odoo#173010
Original PR description
Splitting the function `click` on the Pricelist Button to make it inheritable, by creating a new function called `getPricelistList` that will allow filtering them whenever needed. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#196813 Forward-Port-Of: odoo/odoo#173010
Before this commit, although there is a signature loaded in the draw mode, the signature's isSignatureEmpty flag is true, which affects the logic that handles the sign buttons [enable/disable] state. After this commit, the isSignatureEmpty is handled correctly and the sign buttons' disability logic is clear. task-4466854 Related: https://github.com/odoo/enterprise/pull/77120 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/o
Original PR description
Before this commit, although there is a signature loaded in the draw mode, the signature's isSignatureEmpty flag is true, which affects the logic that handles the sign buttons [enable/disable] state. After this commit, the isSignatureEmpty is handled correctly and the sign buttons' disability logic is clear. task-4466854 Related: https://github.com/odoo/enterprise/pull/77120 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#193788
Before this commit, style of message notification icon (e.g. envelope) was not subtle enough. Intent was to use `text-600`, but due to typo this was not actually used (was `NaN` so does nothing). Also this wasn't clear this button is clickable, due to lack of moouse hover feedback. This commit fixes the issue by having an opacity change on mouse hover. When there's a failure, the static opacity is lower so that failed notifications are a bit more noticeable. Also message notification wi
Original PR description
Before this commit, style of message notification icon (e.g. envelope) was not subtle enough. Intent was to use `text-600`, but due to typo this was not actually used (was `NaN` so does nothing). Also this wasn't clear this button is clickable, due to lack of moouse hover feedback. This commit fixes the issue by having an opacity change on mouse hover. When there's a failure, the static opacity is lower so that failed notifications are a bit more noticeable. Also message notification with label had slightly improper style that make them less look like a button: buttons should have a bit of font weight, and also the label was too big compared to icon. This commit also fixes that issue. Before  After  Forward-Port-Of: odoo/odoo#198505
Description of the issue/feature this PR addresses: This PR intends to fix an issue we encountered when you have CL localization installed with other LATAM localizations. The problem is that l10n_cl is modifying the visibility of the field "Document number" to appear when necessary directly on latam_invoice_document view. This make that the field visibility is being changed on other localizations as well when you have both installed. Current behavior before PR: The "Document Number" field
Original PR description
Description of the issue/feature this PR addresses: This PR intends to fix an issue we encountered when you have CL localization installed with other LATAM localizations. The problem is that l10n_cl…
Description of the issue/feature this PR addresses: This PR intends to fix an issue we encountered when you have CL localization installed with other LATAM localizations. The problem is that l10n_cl is modifying the visibility of the field "Document number" to appear when necessary directly on latam_invoice_document view. This make that the field visibility is being changed on other localizations as well when you have both installed. Current behavior before PR: The "Document Number" field below "Document Type" should is present on uruguayan electronic invoices (where it should not be). Desired behavior after PR is merged: The "Document Number" field is present on chilean invoices as expected and not in uruguayan electronic invoices. Steps to reproduce the error: - Install l10n_uy - On the UY company, go to Customer/Invoices section, create one, select a customer and check that you have an electronic journal selected. The field "Document Number" should not be present. - Install l10n_cl - Go to the previously created invoice and check that the field "Document Number" now appears. Ticket ADHOC side: 86491 Ticket Odoo side: 4505977 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#195902
Currently, an error may occur when we try to export the trial balance with the SAT (XML) format. This is because the account_group ID is used to browse the account, due to a more specific account_group. Steps to reproduce: 1. Install l10n_mx_reports. 2. Create an account_group with a more specific account, such as 401.01.01 - The 4, 401, and 401.01 groups are created with demo data. 3. Go to trial balance and try exporting with "SAT (XML)". 4. An error will occur (Missing Record) beca
Original PR description
Currently, an error may occur when we try to export the trial balance with the SAT (XML) format. This is because the account_group ID is used to browse the account, due to a more specific account_group. Steps to reproduce: 1. Install l10n_mx_reports. 2. Create an account_group with a more specific account, such as 401.01.01 - The 4, 401, and 401.01 groups are created with demo data. 3. Go to trial balance and try exporting with "SAT (XML)". 4. An error will occur (Missing Record) because the account_group ID is used to browse the account. This fix does two things: 1. It ensures that only account.account lines are considered. 2. It changes the line length condition from `= 4` to `>= 4` to handle more specific grouping. opw-4537859 Forward-Port-Of: odoo/enterprise#80128
**[FIX] account_asset: fix empty string and False/None inconsistencies** (adapting tests) When empty, the name field of account.move.line could inconsistently hold either an empty string or False. This inconsistency led to different results when searching for lines with an empty label, as label->not set and label == "" yielded different outcomes. The latter behavior aligns with expected ORM operations. This fix ensures the name field is set to False whenever the computed result is
Original PR description
**[FIX] account_asset: fix empty string and False/None inconsistencies** (adapting tests)
When empty, the name field of account.move.line could inconsistently hold either an empty string or False. This inconsistency led to different results when searching for lines with an empty label, as label->not set and label == "" yielded different outcomes. The latter behavior aligns with expected ORM operations.
This fix ensures the name field is set to False whenever the computed result is an empty string, standardizing search behavior. We also adapt some tests to the new behavior in enterprise.
opw-4167139
[community PR](https://github.com/odoo/odoo/pull/186079)
Forward-Port-Of: odoo/enterprise#75834
Forward-Port-Of: odoo/enterprise#73256In the follow up process, while the wizard's text is displayed correctly, the text in the chatter and in the pdf would contain too many carriage returns. The error is linked to the use of the text widget in the xml, which doesn't seem necessary in this case and is therefore removed. task-4574941 Forward-Port-Of: odoo/enterprise#79925 Forward-Port-Of: odoo/enterprise#79517
Original PR description
In the follow up process, while the wizard's text is displayed correctly, the text in the chatter and in the pdf would contain too many carriage returns. The error is linked to the use of the text widget in the xml, which doesn't seem necessary in this case and is therefore removed. task-4574941 Forward-Port-Of: odoo/enterprise#79925 Forward-Port-Of: odoo/enterprise#79517
This PR introduces two key features in Uruguayan electronic invoicing: Global Discounts: - Implemented the ability to apply global discounts across invoices. - Discounts are calculated and reflected in the final invoice total, ensuring compliance with DGI requirements. Down Payments: - Support for down payments was added to the invoicing process to ensure compliance with DGI requirements. ------------------------------- latam-task: 1284 adhoc-task-side: 45612 Forward-
Original PR description
This PR introduces two key features in Uruguayan electronic invoicing: Global Discounts: - Implemented the ability to apply global discounts across invoices. - Discounts are calculated and reflected in the final invoice total, ensuring compliance with DGI requirements. Down Payments: - Support for down payments was added to the invoicing process to ensure compliance with DGI requirements. ------------------------------- latam-task: 1284 adhoc-task-side: 45612 Forward-Port-Of: odoo/enterprise#75124
Users managing several branch companies may collect in a batch several payments from the branches. However this currently does not work as expected. Steps to reproduce: - Have a [main] company and a [branch] company - Create a payment in [branch] - Create a batch in [main] - Add the payment to the batch Issue: Error will raise ``` Incompatible companies on records: - “PAY00001” belongs to company “Your branch” and “Batch Payment” (batch_payment_id: 'BATCH/IN/2025/0001 (New)')
Original PR description
Users managing several branch companies may collect in a batch several payments from the branches. However this currently does not work as expected. Steps to reproduce: - Have a [main] company and a [branch] company - Create a payment in [branch] - Create a batch in [main] - Add the payment to the batch Issue: Error will raise ``` Incompatible companies on records: - “PAY00001” belongs to company “Your branch” and “Batch Payment” (batch_payment_id: 'BATCH/IN/2025/0001 (New)') belongs to another company ``` This occurs because now we check that batch and payment belong to the same company It is a change of behavior as in older versions this flows was permitted opw-4574188 Forward-Port-Of: odoo/enterprise#79719
In the expense app, a button enables to refund an expense directly in the payslip. This button is however not visible for payroll manager, while the action behind is. This commit solves the issue. task-4570975 Forward-Port-Of: odoo/enterprise#79879 Forward-Port-Of: odoo/enterprise#79570
Original PR description
In the expense app, a button enables to refund an expense directly in the payslip. This button is however not visible for payroll manager, while the action behind is. This commit solves the issue. task-4570975 Forward-Port-Of: odoo/enterprise#79879 Forward-Port-Of: odoo/enterprise#79570
Steps to reproduce: - With an MX Company Setup - Issue an invoice with external trade - Print pdf Issue: Partner original RFC is shown, but according to our documentation [1] and official documentation [2] as well, we should display the generic RFC for external partners XEXX010101000 [1] https://www.odoo.com/documentation/18.0/applications/finance/fiscal_localizations/mexico.html#external-trade [2] https://www.sat.gob.mx/articulo/99662/articulo-29-a page 59 "15. ¿Qué datos debe cont
Original PR description
Steps to reproduce: - With an MX Company Setup - Issue an invoice with external trade - Print pdf Issue: Partner original RFC is shown, but according to our documentation [1] and official documentation [2] as well, we should display the generic RFC for external partners XEXX010101000 [1] https://www.odoo.com/documentation/18.0/applications/finance/fiscal_localizations/mexico.html#external-trade [2] https://www.sat.gob.mx/articulo/99662/articulo-29-a page 59 "15. ¿Qué datos debe contener la versión impresa del comprobante fiscal? En la representación impresa se incluirán como mínimo los datos establecidos en la regla 2.7.1.7. de la RMF. Fundamento: Regla 2.7.1.7. de la RMF. " opw-4473180 Forward-Port-Of: odoo/enterprise#79979 Forward-Port-Of: odoo/enterprise#79527
This commit adds one flow test to `l10n_ec_edi` that mocks `zeep` when sending an invoice to the SRI. This complements the existing tests that check the generated XML. task-none Forward-Port-Of: odoo/enterprise#79996 Forward-Port-Of: odoo/enterprise#77578
Original PR description
This commit adds one flow test to `l10n_ec_edi` that mocks `zeep` when sending an invoice to the SRI. This complements the existing tests that check the generated XML. task-none Forward-Port-Of: odoo/enterprise#79996 Forward-Port-Of: odoo/enterprise#77578
See community PR Steps to reproduce: - change your language to French (or any language which doesn't the week on Sundays) - insert a pivot into a spreadsheet - insert the dynamic version with =PIVOT(1) - change the row groups to "Day of week" - right click on any pivot value and "See records" => the day of week displayed in spreadsheet doesn't match the records. Task: 4591993 Forward-Port-Of: odoo/enterprise#79950
Original PR description
See community PR Steps to reproduce: - change your language to French (or any language which doesn't the week on Sundays) - insert a pivot into a spreadsheet - insert the dynamic version with =PIVOT(1) - change the row groups to "Day of week" - right click on any pivot value and "See records" => the day of week displayed in spreadsheet doesn't match the records. Task: 4591993 Forward-Port-Of: odoo/enterprise#79950
Because of the countries flag set in the module manifest, the module was set to be auto-installed only when there was a company with country 'CZ' existing. Although this can't really be pointed as a mistake, it was causing an error in account_reports TestAllReportsGeneration.test_generate_all_export_files, as we'd be simply installing the module l10n_cz_reports and expect everything to be set and tested. runbot error: 114355 Forward-Port-Of: odoo/enterprise#79524
Original PR description
Because of the countries flag set in the module manifest, the module was set to be auto-installed only when there was a company with country 'CZ' existing. Although this can't really be pointed as a mistake, it was causing an error in account_reports TestAllReportsGeneration.test_generate_all_export_files, as we'd be simply installing the module l10n_cz_reports and expect everything to be set and tested. runbot error: 114355 Forward-Port-Of: odoo/enterprise#79524
The appointment addon adds the `@mail/utils/common/format` module to the frontent assets. However, this module depends on another one: `@mail/utils/common/html`, which isn't there. As a consequence there's a red banner displayed in the bottom left corner, indicating that there's an odoo module issue, in all websites when the appointment addon is installed. This is causing a lot of trouble with free trials. This commit adds the missing dependency. Forward-Port-Of: odoo/enterprise#80079
Original PR description
The appointment addon adds the `@mail/utils/common/format` module to the frontent assets. However, this module depends on another one: `@mail/utils/common/html`, which isn't there. As a consequence there's a red banner displayed in the bottom left corner, indicating that there's an odoo module issue, in all websites when the appointment addon is installed. This is causing a lot of trouble with free trials. This commit adds the missing dependency. Forward-Port-Of: odoo/enterprise#80079
Issue ----- Attachments are linked to `document.document` with a (`res_model`) and `res_field` By default, searching on `ir.attachment` filters out attachments tied to binary fields (ref.1), by adding `['res_field', '=', False]` to the domain preventing such documents from appearing in searches. Solution -------- This commit skips the filter on `res_field` Steps to Reproduce ------------------- 1. Install `documents` and `accountant` modules. 2. Enable Files Centralization for Ac
Original PR description
Issue ----- Attachments are linked to `document.document` with a (`res_model`) and `res_field` By default, searching on `ir.attachment` filters out attachments tied to binary fields (ref.1), by adding `['res_field', '=', False]` to the domain preventing such documents from appearing in searches. Solution -------- This commit skips the filter on `res_field` Steps to Reproduce ------------------- 1. Install `documents` and `accountant` modules. 2. Enable Files Centralization for Accounting and add Customer Invoices to its Journals. 3. Create an invoice → Confirm → Print → Download. 4. Click on the related document. Bug:The PDF cannot be searched by its indexed content. (ref. 1) ---- 1bb61c970ed63eabe3821d21f3ed6f99c4b16daa [ADD] fields: add option to store binary fields into attachments opw-4267371 Forward-Port-Of: odoo/enterprise#75051
This commit will fix two errors: - for the value of average creditors days (A11) in B11 we used B18 for the calculation but it should be b15 - Error in naming for B34 and D34 (invert the two) task-4518430 Forward-Port-Of: odoo/enterprise#79811 Forward-Port-Of: odoo/enterprise#78013
Original PR description
This commit will fix two errors: - for the value of average creditors days (A11) in B11 we used B18 for the calculation but it should be b15 - Error in naming for B34 and D34 (invert the two) task-4518430 Forward-Port-Of: odoo/enterprise#79811 Forward-Port-Of: odoo/enterprise#78013
This traceback arises when the user tries to change the orders from one stage to another. after deleting the last stage in another tab. To reproduce this issue:- 1) Install `pos_restaurant` 2) Duplicate the tab and open the preparation display in one tab 3) In another tab delete the last stage(`complete`) for the above preparation display 4) In the first tab click any product of an order from the `ready` stage 5) Now click the `ready` icon of that order 5) At the terminal you will
Original PR description
This traceback arises when the user tries to change the orders from one stage to another. after deleting the last stage in another tab. To reproduce this issue:- 1) Install `pos_restaurant` 2)…
This traceback arises when the user tries to change the orders from one stage to another.
after deleting the last stage in another tab.
To reproduce this issue:-
1) Install `pos_restaurant`
2) Duplicate the tab and open the preparation display in one tab
3) In another tab delete the last stage(`complete`) for the above preparation display
4) In the first tab click any product of an order from the `ready` stage
5) Now click the `ready` icon of that order
5) At the terminal you will see a traceback
Error:-
```
IndexError: list index out of range
File "odoo/http.py", line 2252, in __call__
response = request._serve_db()
File "odoo/http.py", line 1828, in _serve_db
return self._transactioning(_serve_ir_http, readonly=ro)
File "odoo/http.py", line 1848, in _transactioning
return service_model.retrying(func, env=self.env)
File "odoo/service/model.py", line 134, in retrying
result = func()
File "odoo/http.py", line 1826, in _serve_ir_http
return self._serve_ir_http(rule, args)
File "odoo/http.py", line 1833, in _serve_ir_http
response = self.dispatcher.dispatch(rule.endpoint, args)
File "odoo/http.py", line 2058, in dispatch
result = self.request.registry['ir.http']._dispatch(endpoint)
File "odoo/addons/base/models/ir_http.py", line 222, in _dispatch
result = endpoint(**request.params)
File "odoo/http.py", line 740, in route_wrapper
result = endpoint(self, *args, **params_ok)
File "addons/web/controllers/dataset.py", line 38, in call_kw
return self._call_kw(model, method, args, kwargs)
File "addons/web/controllers/dataset.py", line 34, in _call_kw
return call_kw(request.env[model], method, args, kwargs)
File "odoo/api.py", line 458, in call_kw
result = getattr(recs, name)(*args, **kwargs)
File "home/odoo/src/enterprise/saas-17.1/pos_preparation_display/models/preparation_display_orderline.py", line 51, in send_stricked_line_to_next_stage
next_stage_id = stage_ids.ids[current_stage_index + 1]
```
When the user clicks on the current stage icon it is supposed to go to the next stage with the help of the current stage index + 1.
But, because the user deleted the next stage it leads to an index error
After applying this will resolve the issue by preventing the user to modify stages
when there is an active session for that preparation display. Which making the code more robust
sentry-5056416790
Forward-Port-Of: odoo/enterprise#59415Before this commit, If you have multiple signatures/initials on the page and you sign on the first signature and want to sign for other sign fields as well, it's not possible due to the "sign all" button's disability (if no change is made in the sign wizard). After this commit, The sign-all button is enabled, even if there is no change is made in the sign wizard. task-4466854 Forward-Port-Of: odoo/enterprise#77120
Original PR description
Before this commit, If you have multiple signatures/initials on the page and you sign on the first signature and want to sign for other sign fields as well, it's not possible due to the "sign all" button's disability (if no change is made in the sign wizard). After this commit, The sign-all button is enabled, even if there is no change is made in the sign wizard. task-4466854 Forward-Port-Of: odoo/enterprise#77120
These fields shouldn't have a namespace. Removing them indeed makes the validation with the xsd succeed. We also clean the xml, by removing whitespaces. Forward-Port-Of: odoo/enterprise#79347 Forward-Port-Of: odoo/enterprise#79200
Original PR description
These fields shouldn't have a namespace. Removing them indeed makes the validation with the xsd succeed. We also clean the xml, by removing whitespaces. Forward-Port-Of: odoo/enterprise#79347 Forward-Port-Of: odoo/enterprise#79200
### Before this commit: When clicking on any budget, even if there was only one budget line, the list view opened with all budget.line records, regardless of the associated budget. ### After this commit: - When there are one or multiple budget line records in a budget, the form view of that budget will be opened. **task-4195738** Forward-Port-Of: odoo/enterprise#79928 Forward-Port-Of: odoo/enterprise#73799
Original PR description
### Before this commit: When clicking on any budget, even if there was only one budget line, the list view opened with all budget.line records, regardless of the associated budget. ### After this commit: - When there are one or multiple budget line records in a budget, the form view of that budget will be opened. **task-4195738** Forward-Port-Of: odoo/enterprise#79928 Forward-Port-Of: odoo/enterprise#73799