Daily updates from Odoo
Navigate
Branch
Wednesday, August 14, 2024
40 changes
14 changes
Enhancements to existing features
This update adds support for calculating product prices including taxes, helping barcode lookup features show more accurate pricing information. It also refines wording in ecommerce product views to make product information clearer for shoppers and sales teams.
Original PR description
[IMP] account,product,website_sale: add helpers for barcodelookup This commit adds a hooks to compute a gross price based on product taxes. This is needed for `product_barcodelookup` module. Also change a wording in the ecommerce product template Related: https://github.com/odoo/enterprise/pull/63740 Task: 3965079
Resolved issues and error corrections
This fixes an issue where Odoo could treat the same page address as different when URL options appeared in a different order. Users should see cleaner browser navigation behavior, especially when enabling debug assets, without repeated entries for the same page.
Original PR description
When on the main menu, `/odoo?cids=1`, if you activate the debug assets, the router will push a new key (debug) into the query string : `/odoo?cids=1&debug=assets`. To fully activate the debug, a…
When on the main menu, `/odoo?cids=1`, if you activate the debug assets, the router will push a new key (debug) into the query string : `/odoo?cids=1&debug=assets`. To fully activate the debug, a reload will be done. After the reload, the action service will push the new loaded state (the menu), taking into account the locked keys (in this case: `cid` and `debug`), which will inverse the order of the query string : `/odoo?debug=assets&cids=1`. This occurs because, the order of the keys on the query string will depend on: the push order; if the keys are locked keys or not; and of the kind of push state (replacement or simple push state). The issue with this almost "random" order of the keys, is that the router could push the same URL (with keys in different order) multiple times into the browser history. Before this commit, to compare the actual URL with the new one, we just compare the two strings, and if the order of the query strings are not the same the URLs are considered as different. This commit, will avoid this issue by deep comparing the query string as objects, so when just a difference of order exists in the query string, they will be considered as the same URL. opw-3557575
Loaded signatures now display without being stretched inside the signature field. This keeps signatures looking natural and professional on signed documents, improving the signing experience.
Original PR description
Before this commit: When loading a signature, the displayed image would be stretched to fit the signature box, messing up the ratio between width and height. This commit aims to fix this issue by: keeping the same ratio between width and height. and just multiply both of them by the same factor. Task: 4049758 Before:   After:  
Miscellaneous changes
Before this commit: Unhandled python traceback will be tough to read as there is too much line breaks which was forcing each line to be logged. e.g: ```py 2024-08-12 09:33:49,426 2466 ERROR ? root: Exception in thread 2024-08-12 09:33:49,428 2466 ERROR ? root: Thread-9 2024-08-12 09:33:49,429 2466 ERROR ? root: : 2024-08-12 09:33:49,430 2466 ERROR ? root: 2024-08-12 09:33:49,430 2466 ERROR ? root: Traceback (most recent call last): 2024-08-12 09:33:49,430 2466 ERROR ? root: 202
Original PR description
Before this commit: Unhandled python traceback will be tough to read as there is too much line breaks which was forcing each line to be logged. e.g: ```py 2024-08-12 09:33:49,426 2466 ERROR ? root:…
Before this commit: Unhandled python traceback will be tough to read as there is too much line breaks which was forcing each line to be logged. e.g: ```py 2024-08-12 09:33:49,426 2466 ERROR ? root: Exception in thread 2024-08-12 09:33:49,428 2466 ERROR ? root: Thread-9 2024-08-12 09:33:49,429 2466 ERROR ? root: : 2024-08-12 09:33:49,430 2466 ERROR ? root: 2024-08-12 09:33:49,430 2466 ERROR ? root: Traceback (most recent call last): 2024-08-12 09:33:49,430 2466 ERROR ? root: 2024-08-12 09:33:49,430 2466 ERROR ? root: File "/usr/lib/python3.11/threading.py", line 1038, in _bootstrap_inner 2024-08-12 09:33:49,439 2466 ERROR ? root: 2024-08-12 09:33:49,439 2466 ERROR ? root: 2024-08-12 09:33:49,457 2466 ERROR ? root: self.run() 2024-08-12 09:33:49,459 2466 ERROR ? root: 2024-08-12 09:33:49,459 2466 ERROR ? root: File "/home/pi/odoo/addons/hw_drivers/interface.py", line 31, in run 2024-08-12 09:33:49,460 2466 ERROR ? root: 2024-08-12 09:33:49,461 2466 ERROR ? root: 2024-08-12 09:33:49,465 2466 ERROR ? root: self.update_iot_devices(self.get_devices()) 2024-08-12 09:33:49,466 2466 ERROR ? root: 2024-08-12 09:33:49,467 2466 ERROR ? root: 2024-08-12 09:33:49,467 2466 ERROR ? root: 2024-08-12 09:33:49,467 2466 ERROR ? root: 2024-08-12 09:33:49,468 2466 ERROR ? root: 2024-08-12 09:33:49,468 2466 ERROR ? root: 2024-08-12 09:33:49,468 2466 ERROR ? root: 2024-08-12 09:33:49,468 2466 ERROR ? root: 2024-08-12 09:33:49,468 2466 ERROR ? root: 2024-08-12 09:33:49,469 2466 ERROR ? root: 2024-08-12 09:33:49,469 2466 ERROR ? root: 2024-08-12 09:33:49,470 2466 ERROR ? root: 2024-08-12 09:33:49,473 2466 ERROR ? root: 2024-08-12 09:33:49,474 2466 ERROR ? root: 2024-08-12 09:33:49,474 2466 ERROR ? root: 2024-08-12 09:33:49,474 2466 ERROR ? root: 2024-08-12 09:33:49,480 2466 ERROR ? root: 2024-08-12 09:33:49,482 2466 ERROR ? root: 2024-08-12 09:33:49,487 2466 ERROR ? root: 2024-08-12 09:33:49,488 2466 ERROR ? root: 2024-08-12 09:33:49,488 2466 ERROR ? root: 2024-08-12 09:33:49,488 2466 ERROR ? root: 2024-08-12 09:33:49,488 2466 ERROR ? root: 2024-08-12 09:33:49,488 2466 ERROR ? root: 2024-08-12 09:33:49,495 2466 ERROR ? root: 2024-08-12 09:33:49,495 2466 ERROR ? root: 2024-08-12 09:33:49,496 2466 ERROR ? root: 2024-08-12 09:33:49,496 2466 ERROR ? root: 2024-08-12 09:33:49,497 2466 ERROR ? root: 2024-08-12 09:33:49,497 2466 ERROR ? root: ^ 2024-08-12 09:33:49,498 2466 ERROR ? root: ^ 2024-08-12 09:33:49,499 2466 ERROR ? root: ^ 2024-08-12 09:33:49,502 2466 ERROR ? root: ^ 2024-08-12 09:33:49,502 2466 ERROR ? root: ^ 2024-08-12 09:33:49,503 2466 ERROR ? root: ^ 2024-08-12 09:33:49,503 2466 ERROR ? root: ^ 2024-08-12 09:33:49,503 2466 ERROR ? root: ^ 2024-08-12 09:33:49,503 2466 ERROR ? root: ^ 2024-08-12 09:33:49,504 2466 ERROR ? root: ^ 2024-08-12 09:33:49,504 2466 ERROR ? root: ^ 2024-08-12 09:33:49,504 2466 ERROR ? root: ^ 2024-08-12 09:33:49,504 2466 ERROR ? root: ^ 2024-08-12 09:33:49,504 2466 ERROR ? root: ^ 2024-08-12 09:33:49,504 2466 ERROR ? root: ^ 2024-08-12 09:33:49,505 2466 ERROR ? root: ^ 2024-08-12 09:33:49,505 2466 ERROR ? root: ^ 2024-08-12 09:33:49,505 2466 ERROR ? root: ^ 2024-08-12 09:33:49,505 2466 ERROR ? root: 2024-08-12 09:33:49,505 2466 ERROR ? root: File "/home/pi/odoo/addons/hw_drivers/iot_handlers/interfaces/PrinterInterface_L.py", line 21, in get_devices 2024-08-12 09:33:49,506 2466 ERROR ? root: 2024-08-12 09:33:49,506 2466 ERROR ? root: 2024-08-12 09:33:49,507 2466 ERROR ? root: 0/0 2024-08-12 09:33:49,507 2466 ERROR ? root: 2024-08-12 09:33:49,507 2466 ERROR ? root: 2024-08-12 09:33:49,507 2466 ERROR ? root: 2024-08-12 09:33:49,508 2466 ERROR ? root: 2024-08-12 09:33:49,508 2466 ERROR ? root: 2024-08-12 09:33:49,508 2466 ERROR ? root: ~ 2024-08-12 09:33:49,508 2466 ERROR ? root: ^ 2024-08-12 09:33:49,508 2466 ERROR ? root: ~ 2024-08-12 09:33:49,508 2466 ERROR ? root: 2024-08-12 09:33:49,508 2466 ERROR ? root: ZeroDivisionError 2024-08-12 09:33:49,509 2466 ERROR ? root: : 2024-08-12 09:33:49,509 2466 ERROR ? root: division by zero ``` After this commit: New lines are logged only if necessary, like in a regular tb: ```py 2024-08-12 09:41:06,197 3093 ERROR ? odoo.addons.hw_drivers.exception_logger: Exception in thread Thread-9: 2024-08-12 09:41:06,199 3093 ERROR ? odoo.addons.hw_drivers.exception_logger: Traceback (most recent call last): 2024-08-12 09:41:06,201 3093 ERROR ? odoo.addons.hw_drivers.exception_logger: File "/usr/lib/python3.11/threading.py", line 1038, in _bootstrap_inner 2024-08-12 09:41:06,222 3093 ERROR ? odoo.addons.hw_drivers.exception_logger: self.run() 2024-08-12 09:41:06,223 3093 ERROR ? odoo.addons.hw_drivers.exception_logger: File "/home/pi/odoo/addons/hw_drivers/interface.py", line 31, in run 2024-08-12 09:41:06,233 3093 ERROR ? odoo.addons.hw_drivers.exception_logger: self.update_iot_devices(self.get_devices()) 2024-08-12 09:41:06,234 3093 ERROR ? odoo.addons.hw_drivers.exception_logger: ^^^^^^^^^^^^^^^^^^ 2024-08-12 09:41:06,234 3093 ERROR ? odoo.addons.hw_drivers.exception_logger: File "/home/pi/odoo/addons/hw_drivers/iot_handlers/interfaces/PrinterInterface_L.py", line 21, in get_devices 2024-08-12 09:41:06,235 3093 ERROR ? odoo.addons.hw_drivers.exception_logger: 0/0 2024-08-12 09:41:06,236 3093 ERROR ? odoo.addons.hw_drivers.exception_logger: ~^~ 2024-08-12 09:41:06,237 3093 ERROR ? odoo.addons.hw_drivers.exception_logger: ZeroDivisionError: division by zero ``` opw-4110599 Forward-Port-Of: odoo/odoo#176462
Issue: In the portal page for managing your mailing lists, to subscribe or unsubscribe, you can see also the ones that are supposely marked for not appearing in this view, when this happen the appear as "Mailing list .#number" which is not ideal, since it will still let us subscribe to it when we shouldn be able to. Stesp to reproduce: 1. Install mass_mailing. 2. Create atleast 2 lists, one with "Show in Preferences" ticked and the other not. 3. Now go to "/mailing/my" to manage the list
Original PR description
Issue: In the portal page for managing your mailing lists, to subscribe or unsubscribe, you can see also the ones that are supposely marked for not appearing in this view, when this happen the appear as "Mailing list .#number" which is not ideal, since it will still let us subscribe to it when we shouldn be able to. Stesp to reproduce: 1. Install mass_mailing. 2. Create atleast 2 lists, one with "Show in Preferences" ticked and the other not. 3. Now go to "/mailing/my" to manage the lists and see how they appear. Solution: It seems logical to filter out for the lists we are not subscribed the non public lists out (the ones that are not marked as "Show In Preferences"), with this we will only see the ones we should have access to see and subscribe/unsubscribe. opw-3877385 Forward-Port-Of: odoo/odoo#162835
This commit is a backport of odoo/odoo#173905, but for the qunit suite. This should prevent the qunit suite from running out of memory, which sometimes happens because the Chrome process running the qunit suites doesn't have access to its available memory and cannot run the garbage collection efficiently. Runbot error 53410 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
Original PR description
This commit is a backport of odoo/odoo#173905, but for the qunit suite. This should prevent the qunit suite from running out of memory, which sometimes happens because the Chrome process running the qunit suites doesn't have access to its available memory and cannot run the garbage collection efficiently. Runbot error 53410 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#176506
[IMP] l10n_pl: Credit note can't be more than the invoice total amount Polish law don't allow to have credit note with an amount higher than the invoice Solution: Don't allow to post a credit note if the total is higher than the invoice task-id#3965527 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#168252
Original PR description
[IMP] l10n_pl: Credit note can't be more than the invoice total amount Polish law don't allow to have credit note with an amount higher than the invoice Solution: Don't allow to post a credit note if the total is higher than the invoice task-id#3965527 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#168252
Steps to reproduce: - Create a product and set a quantity in a sublocation of Stock - Create a scrap order for that product - Set location as Stock (NOT the sublocation) - Validate the scrap order Issue: The insufficient quantity warning doesn't trigger anymore. The change made in [1] allowed the scrap orders to properly handle kits. To do that, it uses the product qty_available directly as it correctly handles kit components. But since we're not using the strict mode of `_gather()` a
Original PR description
Steps to reproduce: - Create a product and set a quantity in a sublocation of Stock - Create a scrap order for that product - Set location as Stock (NOT the sublocation) - Validate the scrap order Issue: The insufficient quantity warning doesn't trigger anymore. The change made in [1] allowed the scrap orders to properly handle kits. To do that, it uses the product qty_available directly as it correctly handles kit components. But since we're not using the strict mode of `_gather()` anymore, it will also look for child locations quantities, which isn't what we want for scrap orders. Added a context key to enable a strict location lookup for qty_available and uses it for scrap orders. [1] a196f947c829fde08d3ddf79b6c4f5a42a1217cd opw-4055721 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#174373
Combining purchase order line and product supplier info for orders with multiple pages results in inconsistent behavior: - products on first page shows the internal references and names - subsequent pages shows the supplier's codes and names. It is better to display the internals for the product field and keep the supplier codes and names for the description field. Therefore, the search has also been fixed accordingly. task: 4040598 (see also 3893787) see also https://github.com/odoo/
Original PR description
Combining purchase order line and product supplier info for orders with multiple pages results in inconsistent behavior: - products on first page shows the internal references and names - subsequent pages shows the supplier's codes and names. It is better to display the internals for the product field and keep the supplier codes and names for the description field. Therefore, the search has also been fixed accordingly. task: 4040598 (see also 3893787) see also https://github.com/odoo/odoo/pull/113527 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#175067
task-4104252 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#176493
Original PR description
task-4104252 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#176493
**Behaviour before PR:** When we try to add a link on an image through dialog box, image gets hidden and url is added as a link label instead. **Behaviour after PR:** Now, link can be added to the image without vanishing the image. task-4049730 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#176358 Forward-Port-Of: odoo/odoo#174211
Original PR description
**Behaviour before PR:** When we try to add a link on an image through dialog box, image gets hidden and url is added as a link label instead. **Behaviour after PR:** Now, link can be added to the image without vanishing the image. task-4049730 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#176358 Forward-Port-Of: odoo/odoo#174211
Before this commit: Invoices reconciled with a single payment appeared in a random order on the Payment Receipt. This was caused by the use of a set, which does not preserve the order of invoices. After this commit: Invoices are displayed in the order defined by the account.move model, ensuring a consistent and logical sequence. Steps to reproduce: - Create four invoices for the same customer on different dates. - Register a customer payment covering the total amount of the four invoic
Original PR description
Before this commit: Invoices reconciled with a single payment appeared in a random order on the Payment Receipt. This was caused by the use of a set, which does not preserve the order of invoices. After this commit: Invoices are displayed in the order defined by the account.move model, ensuring a consistent and logical sequence. Steps to reproduce: - Create four invoices for the same customer on different dates. - Register a customer payment covering the total amount of the four invoices. - Reconcile the payment with the invoices. - Print the Payment Receipt for the payment. opw-4096451 Forward-Port-Of: odoo/odoo#176536 Forward-Port-Of: odoo/odoo#176313
VAT validations for Costa Rica identification types according to: - CÉDULA FÍSICA: 9 digits - CÉDULA JURÍDICA: 10 digits - CÉDULA DIMEX: 11 or 12 digits - CÉDULA NITE: 10 digits Legal information is on [page 4](https://atv.hacienda.go.cr/ATV/ComprobanteElectronico/docs/esquemas/2016/v4/ANEXOS%20Y%20ESTRUCTURAS.pdf). --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#163923
Original PR description
VAT validations for Costa Rica identification types according to: - CÉDULA FÍSICA: 9 digits - CÉDULA JURÍDICA: 10 digits - CÉDULA DIMEX: 11 or 12 digits - CÉDULA NITE: 10 digits Legal information is on [page 4](https://atv.hacienda.go.cr/ATV/ComprobanteElectronico/docs/esquemas/2016/v4/ANEXOS%20Y%20ESTRUCTURAS.pdf). --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#163923
In versions v17 and up, a div with class `.o-discuss-CallInvitations` was causing issues by blocking the scrollbar's up arrow, preventing users from scrolling up. To address this, the display of the `.o-discuss-CallInvitations` div is now conditional, based on `store.discuss.ringingThreads.length > 0`. This ensures the div only appears when necessary, avoiding obstruction of the scrollbar and improving usability. opw-4108057 Forward-Port-Of: odoo/odoo#176608
Original PR description
In versions v17 and up, a div with class `.o-discuss-CallInvitations` was causing issues by blocking the scrollbar's up arrow, preventing users from scrolling up. To address this, the display of the `.o-discuss-CallInvitations` div is now conditional, based on `store.discuss.ringingThreads.length > 0`. This ensures the div only appears when necessary, avoiding obstruction of the scrollbar and improving usability. opw-4108057 Forward-Port-Of: odoo/odoo#176608
23 changes
New functionality added to Odoo
Adds Indonesia-specific payroll setup, including salary rules, leave and work entry data, employee and contract fields, demo data, and tests for payroll calculations. This enables businesses operating in Indonesia to manage local payroll requirements directly in Odoo while also preventing a Belgian payroll configuration issue from affecting other localizations.
Original PR description
Payroll Localization for Indonesia including unit test for salary rules 3112793
Enhancements to existing features
The employee disability status field is now managed centrally in Payroll instead of being duplicated across Belgium, Kenya, and Bangladesh payroll localizations. Bangladesh employee payroll fields also received missing access restrictions so only HR users can view or edit sensitive employee information.
Original PR description
Three localisations share the same 'disabled' field on the employee. It should be moved to hr_payroll. Also add groups that were missing on Bangladesh employee's fields. Task: 4031976
Timesheet access rules have been simplified by using a newer searchable participant field. This keeps the same access behavior while making the underlying security setup easier to maintain.
Original PR description
## Description Following the introduction of the searchable field `message_partner_ids` for the timesheets, we can simplify some `ir.rules`. Semantics are equivalent. ## Reference task-3977971
The inter-company accounting rules now use a standard helper to identify analytic accounts in distributions. This keeps the feature aligned with the accounting framework and reduces maintenance risk without changing day-to-day user workflows.
Original PR description
…lytic A method to obtain the analytic accounts used in an analytic distribution was added. Use this method instead Task-3926461
Tax-included taxes have been deactivated, so related localization settings were cleaned up to avoid assigning obsolete tax references. This helps keep Brazilian AvaTax and Peruvian reporting configurations aligned with current tax behavior and reduces the risk of incorrect setup data.
Original PR description
Due to the deactivation of tax_included taxes, we have to remove these lines from the assignation of the field. Community: odoo/odoo#173906 Upgrade: odoo/upgrade#6354 Task [link](https://www.odoo.com/odoo/project.task/4019610) task-4019610
The Sign app no longer offers the unnecessary “Add on all pages” option when a PDF has only one page. This reduces confusion and streamlines placing initials on simple documents.
Original PR description
Before this commit, when uploading a single-page PDF and dropping the "initial" field, the wizard still offered the "Add on all pages" option, which is not useful for a one-page document. After this commit, the "Add on all pages" button will be disabled if the document has only one page. Also in case if there is only page we directly add field into pdf without hassle to choose signer. task-4069435
WhatsApp conversations now show clearer messages when a new template or document is sent to the same customer. This helps users understand whether the current chat continues with the template content or should move to another document.
Original PR description
**PURPOSE:** Currently while the conversation is going if a new template is shared with the same customer than a message is dropped on the channel which needs improvement in language construct. **SPECIFICATION:** Improve construct when document is sent by a) same user using different model: Post a message consisting of the template body in the channel. b) Different user from any model: "Chat shall be moved to DocumentName." task-[3607392](https://www.odoo.com/web#id=3644180&menu_id=4720&cids=2&action=333&active_id=965&model=project.task&view_type=form)
Barcode operations now handle packaged products with tracking more smoothly, especially items tracked by serial number. This helps warehouse users complete immediate transfers more reliably by creating or selecting the right line for each packaged item during scanning.
Original PR description
Before this commit ================== Handling tracked packaging in the barcode was tricky, especially for products tracked by serial numbers. Immediate transfer for these items wasn't smooth because separate lines didn't appear when the packaging was on. This made scanning serials difficult, even though lots worked fine. After this commit ================= This commit improves the handling of tracked packaging in the barcode. For products tracked by serial numbers, immediate transfer works more smoothly when packaging is enabled. The system now correctly adds/selects one line for packaged items, making scanning serials easier. TaskId: 3626142
Amazon order imports no longer create new state records when a matching state cannot be found. Instead, the system creates a follow-up activity for the Amazon salesperson so the contact can be corrected manually, helping avoid duplicate or unreliable state data.
Original PR description
Before this commit contact created from amazon order create new state if it does not find matching state in odoo and it was causing issues like having record multiple record for same state and user don't know which one is right with proper code in data. This commit stop creating new state instead create activity on contact for amazon sale person to set proper state on the related contact to not break flows that are related to contact's state. task-3865454
The Helpdesk customer portal is clearer and easier to use, with ticket stages shown without potentially misleading color indicators. Website support forms now collect more customer contact details and respond better to user actions, including smarter submit button behavior.
Original PR description
_* = website_helpdesk - removed the color code to the portal list view for ticket stage display as the fact that it is folded or not no longer determines whether a task is closed or open. - added some additional fields for capturing customer contact details. - optimize the Submit button for dynamic behavior based on user actions. - Improved the website form based on user actions. task-3635784
This update aligns India GSTR report tests with the new way fiscal years spanning two calendar years are shown in document names. It helps ensure generated report names remain accurate and consistent when the fiscal year crosses year boundaries.
Original PR description
See community counterpart, when the fiscal year is staggered on 2 years, the document name will reflect that. task-3653456
The barcode scanning screen now uses the full available width for the camera view. This makes it easier for users to scan items accurately and quickly during warehouse operations.
Original PR description
For an easier scan reading
When users create a new product from a barcode lookup, the notification now closes as soon as they tap the action button. This frees up screen space on mobile so they can start editing the new product immediately instead of waiting for the message to disappear.
Original PR description
When you want to create a new product from barcode lookup you want to edit it directly. However on mobile the notification take a lot of place on the screen and you have to wait for the timeout before edition
Appraisal, survey, and helpdesk timesheet pages now use clearer, more human-readable web addresses. This makes shared links easier to understand and improves the experience for employees and customers navigating these workflows.
Original PR description
*= helpdesk_sale_timesheet, hr_appraisal_survey This commit modifies existing URLs to the new format so that the URL's become more human readable. Task-3820230
Frontdesk and Helpdesk URLs have been updated to a clearer, more human-readable format. This makes shared links easier for users to understand and improves the overall customer and visitor experience without changing core workflows.
Original PR description
This commit modifies existing URLs to the new format so that the URL's become more human readable. Task-3820230
Resolved issues and error corrections
This fix prevents users from changing the refund status of a salary attachment once it has already been used in payslips. This helps protect payroll accuracy by avoiding inconsistent records after payroll processing has begun.
Original PR description
TaskID: 4040011
Scanning a barcode found in the lookup service no longer fails when the product has no image available. The product can still be created or updated from the barcode data, with the missing image simply skipped.
Original PR description
Issue: Traceback is encountered when scanning a barcode that is available in the barcodelookup api but doesn't have image. Example barcode: 9780349410159 - Traceback: `AttributeError: 'dict' obiect has no attribute 'content'` This is because of the inconsistent return value of `barcode_lookup_request`. If it succeeds, it returns a `Response` object but if not, it returns a `dict`. To fix the traceback, we check if the fetching of image failed by checking if the returned value is a `dict`. If so, we just skip the image assignment for the product.
The Partner Ledger report now correctly shows entries when users filter by an individual contact rather than a company. This prevents empty reports and helps users review financial activity for the specific partner they selected.
Original PR description
Steps to reproduce:
- Go to Partner Ledger report
- Choose individual in partners filtering instead of company
- Cannot show report filtered by individual
Current behaviour:
- Show empty report
Expected behaviour:
- Show report related to the individual only
Explanation:
The account.move.line partner_id will set as commercial_partner_id. Therefore in _get_options_partner_domain(self, options), the domain ('partner_id', 'in', partner_ids) only filtered on the commercial partner, not on the individual partner.Code cleanup and technical improvements
This change lets users manually add certain payment methods to journals even when currency or country criteria would previously hide them, while keeping key safeguards such as journal type and payment mode rules. Default payment method generation remains unchanged, so existing automated setup behavior is preserved while giving finance teams more flexibility for bank-specific requirements.
Original PR description
*/Affected modules: account_batch_payment, account_sepa, account_sepa_direct_debit, l10n_au_aba, l10n_ca_payment_cpa005, l10n_uk_bacs, l10n_us_payment_nacha, payment_sepa_direct_debit This commit is…
*/Affected modules: account_batch_payment, account_sepa, account_sepa_direct_debit, l10n_au_aba, l10n_ca_payment_cpa005, l10n_uk_bacs, l10n_us_payment_nacha, payment_sepa_direct_debit This commit is part of the bigger refactor commit in the community module. This commit refactors the restriction set on the tree view of Journal's Inbound/Outbound payment method lines so that it's possible to manually add method that were initially restricted. In other words, if a payment method is available (and some partial rules are met), we will now be able to add them manually in the journal. The alleviated restriction will be from the currency and country domain, but the mode (unique / electronic) restriction and journal type will stay. Purpose: Sometimes, the user might want to manually add a payment method even when it doesn't meet the method's criteria. For example: an european company wants to create ISO20022 files for his bank that only accepts this type of payment files. Because the bank account is an IBAN, ISO20022 is not available because the journal currency is EUR. This commit will not change the current behavior of generation of default inbound/outbound payment method lines. By default, the domains in the payment methods are considered when adding to the default lines. To make it performance friendly, in the compute for available payment method in journal, we will filter the non bank/cash journal and keep them outside the loop, since payment method are useless for them. task-id: 4058440 related community PR: https://github.com/odoo/odoo/pull/175342
Miscellaneous changes
(✱) is added to recurring line with prorated discount. This discount need to be added in the discount computation as they can be triggered from multiple place. task-ids: 3944656, 3859792 @fdamhaut Forward-Port-Of: odoo/enterprise#63883
Original PR description
(✱) is added to recurring line with prorated discount. This discount need to be added in the discount computation as they can be triggered from multiple place. task-ids: 3944656, 3859792 @fdamhaut Forward-Port-Of: odoo/enterprise#63883
Also delete some obsolete .po files (from modules that had their .pot files removed, but not their .po files) Forward-Port-Of: odoo/enterprise#68042
Original PR description
Also delete some obsolete .po files (from modules that had their .pot files removed, but not their .po files) Forward-Port-Of: odoo/enterprise#68042
* = documents_spreadsheet, website_helpdesk_livechat, whatsapp Enterprise counter-part. After a reset, the last id is always 0. https://github.com/odoo/odoo/pull/176340 Forward-Port-Of: odoo/enterprise#68302
Original PR description
* = documents_spreadsheet, website_helpdesk_livechat, whatsapp Enterprise counter-part. After a reset, the last id is always 0. https://github.com/odoo/odoo/pull/176340 Forward-Port-Of: odoo/enterprise#68302
This module is for a shiprocket-cash-on-delivery option for e-commerce users. - Payment provider for shiprocket cash on delivery - Payment method for shiprocket cash on delivery Co-authored-by: Jitendra Prajapati <jipr@odoo.com> task - 3657635 related community PR: https://github.com/odoo/odoo/pull/154119 Forward-Port-Of: odoo/enterprise#66786 Forward-Port-Of: odoo/enterprise#56663
Original PR description
This module is for a shiprocket-cash-on-delivery option for e-commerce users. - Payment provider for shiprocket cash on delivery - Payment method for shiprocket cash on delivery Co-authored-by: Jitendra Prajapati <jipr@odoo.com> task - 3657635 related community PR: https://github.com/odoo/odoo/pull/154119 Forward-Port-Of: odoo/enterprise#66786 Forward-Port-Of: odoo/enterprise#56663
3 changes
Resolved issues and error corrections
This update refreshes translation template files across multiple accounting and business modules to ensure they are current and accurate. Outdated translation files were updated, and empty files that were no longer needed were removed. This ensures that translators have the correct and up-to-date content to work with when localizing Odoo for different languages.
Original PR description
Some were out of date. Also, there were some empty pot files that were deleted along with their obsolete .po files.
This fix resolves an issue where manually changing the next invoice date on a subscription would incorrectly mark it as "To be invoiced" even though no actual invoicing changes were needed. The system now properly ignores date changes when calculating invoiced quantities, ensuring subscription status remains accurate regardless of when invoices are scheduled.
Original PR description
## Issue: - changing the next invoice date to a future date in the subscription app incorrectly changes the subscription status to "To be invoiced" ## Steps To Reproduce: - create subscription, and confirm it - Run the scheduled action: 'Sale Subscription: generate recurring invoices and payments' - change the 'Date of Next Invoice' on the subscription. - Notice that the related quotation invoice status is `To invoice` ## Solution: - Changing next_invoice_date or last_invoice_date should not impact the quantity invoiced, as invoiced amounts should remain unchanged. - Therefore, I removed `order_id.next_invoice_date` and `order_id.last_invoice_date` from the dependencies of `_compute_qty_invoiced`. opw-3932847
This fix ensures that unit prices displayed on Ecuadorian invoice PDFs match the unit prices in the XML files, as required by Ecuadorian law. Previously, when taxes were included in the price, the PDF and XML showed different unit prices. The fix aligns the PDF calculation with the XML calculation to ensure compliance.
Original PR description
The Ecuadorian law requires the unit price on the XML invoice and on the PDF to be the same, this is currently not the case with taxes included in the price. ### Steps to reproduce: - Install the 'l10n_ec' module and switch to an Ecuadorian company - Change the 'IVA 15% (411, Servicios)' Tax to be included - In Accounting create a new Customer Invoice - Select 'Instituto Ecuatoriano' as Customer - Add a line with the included tax set before - Select 'Sin utilization del sistema financiero' as Payment Method - Confirm - On the blue popup at the top of the page, click 'process now' to get the XML in the chatter - Click preview to get the PDF - The unit prices are not the same ### Cause: Usually on the PDF the unit price with included taxes is displayed. ### Solution: Create a xpath to compute the unit price in the same way as the XML. opw-4078177 Forward-Port-Of: odoo/enterprise#67721