Wednesday, September 4, 2024
39 changes · master
Enhancements to existing features
Users can now search UNSPSC product classification records by code as well as by name. This makes it faster to find the right classification when users know the code prefix or exact code, reducing lookup time and improving accuracy.
Original PR description
[IMP] product_unspsc: add search by code to UNSPSC view Searching a UNSPC by name is not always the easier, as the codes have prefix, being able to filter them by code would be helpful Add search view with name and code for UNSPSC task-4130458
Approval users can now see and use request status in the approval request search view. This makes it easier to find and organize approval requests by their current state.
Original PR description
before this commit, approval request status was not added in approval request's search view after this commit, request status is added
Users can now select all matching documents even when grouped list sections are folded and no records are visible. Actions such as delete or archive remain available only when at least one document record is present, helping avoid unsupported operations.
Original PR description
This commit is an adaptation of the documents list view w.r.t. the changes done in https://github.com/odoo/odoo/pull/178779. We can now have a selection with no visible records (the whole domain is selected in that case). However, the delete/archive document logic requires at least a record. We thus only enable the feature when there's one. Task~4150362
The self-order kiosk setup now hides IoT Box launch buttons when no connected or compatible IoT Box is available. This avoids showing staff options that cannot be used, making setup clearer and reducing confusion.
Original PR description
If no IoT Box was connected to the db, or none was compatible, we could still see the buttons to open Kiosk on IoT Boxes. We now can't.
Task cards in Project and Field Service now show planned dates in a more compact format. This makes kanban cards easier to scan by removing unnecessary seconds, repeated dates, or hours depending on whether the task starts and ends on the same day.
Original PR description
Currently, the planned dates of a task takes too much space on the kanban card and could be rendered on 2 lines instead of one. The goal of this task is to reduce a bit the spaces taken by the planned dates in the kanban card of tasks. More specifically, we remove the seconds from the dates to gain space and we handle the following cases: - When the begin date and end date are the same: We shorten from this "08/23/2024 09:15:00 -> 08/23/2024 11:00:00" to this "08/23/2024 09:15 -> 11:00" (remove the end date) - When they are not: We shorten from this "08/23/2024 09:15:00 -> 08/30/2024 11:00:00" to this "08/23/2024 -> 08/30/2024" (remove the hours) task-4120069
The digest content now includes tips for Knowledge and WhatsApp to showcase new version 18 capabilities. This helps users discover relevant features directly from regular digest communications.
Original PR description
Add knowledge and whatsapp tips to showcase the new features added for v18. Related: https://github.com/odoo/odoo/pull/174316 Task-3762938
Resolved issues and error corrections
The UK BACS payment module now correctly depends on the UK localization module. This helps ensure the required UK banking functionality is installed automatically when needed, reducing setup issues for users.
Original PR description
### Steps to reproduce: - Install the 'l10n_uk' module - The module "l10n_uk_bacs" is not installed, but it should ### Solution: Make the `l10n_uk_bacs` module dependent on `l10n_uk`. When running `./odoo-bin --addons-path="addons/,../enterprise/" -u l10n_uk_bacs -d [db]` it detects the unmet dependency (`module l10n_uk_bacs: Unmet dependencies: l10n_uk`) and installs it. So I guess there is no need for an upgrade script. opw-4122475
Code cleanup and technical improvements
This update standardizes how WhatsApp message attachments are named internally, aligning the JavaScript naming with the existing backend field. It helps keep the codebase consistent and reduces the risk of confusion in future maintenance, with no expected change for end users.
Original PR description
Rename attachment to attachment_ids to match python field name. Part of task-3605717 https://github.com/odoo/odoo/pull/178970
Miscellaneous changes
We noticed that in production, eTIMS regularly fails to respond within the timeout of 30s when we send an invoice. Since this happens fairly often, this PR aims to improve the error message so that the user knows there is nothing they can do except wait for a bit and then retry. We also increase the timeout to 45s, on the off chance that this might improve things somewhat. taskid: none Forward-Port-Of: odoo/enterprise#69099 Forward-Port-Of: odoo/enterprise#69049
Original PR description
We noticed that in production, eTIMS regularly fails to respond within the timeout of 30s when we send an invoice. Since this happens fairly often, this PR aims to improve the error message so that the user knows there is nothing they can do except wait for a bit and then retry. We also increase the timeout to 45s, on the off chance that this might improve things somewhat. taskid: none Forward-Port-Of: odoo/enterprise#69099 Forward-Port-Of: odoo/enterprise#69049
This change prevents a shared translation dictionary from being modified globally, reducing the risk of incorrect translated text appearing elsewhere in the system. It also improves how data is prepared for reporting by moving shared JSON handling to a more appropriate common location.
Original PR description
The global dictionary containing the translations cannot be modified. opw-3932856
This fixes subscription behavior so only invoices tied to the current subscription are considered when checking for active draft invoices. It prevents unrelated contract invoices from affecting subscription payment and renewal tests, improving reliability without changing expected business workflows.
This update removes outdated setup markers from automated product tours across several Odoo apps. It does not change user-facing features, but keeps internal test and onboarding tour definitions simpler and easier to maintain.
Original PR description
Since interactive tours no longer take into account steps that do not have a run, isActive: ["auto"] for steps that do not have a run are no longer useful. https://github.com/odoo/odoo/pull/174226
This commit fixes the broken tour in payroll as the previous one depended on actions that have been removed. task-3621276 Forward-Port-Of: odoo/enterprise#68911 Forward-Port-Of: odoo/enterprise#61673
Original PR description
This commit fixes the broken tour in payroll as the previous one depended on actions that have been removed. task-3621276 Forward-Port-Of: odoo/enterprise#68911 Forward-Port-Of: odoo/enterprise#61673
If the gross wage is below the minimum wage in the salary configurator, signature should be blocked. task-4155593 Forward-Port-Of: odoo/enterprise#69355
Original PR description
If the gross wage is below the minimum wage in the salary configurator, signature should be blocked. task-4155593 Forward-Port-Of: odoo/enterprise#69355
Before this commit, the section transaction without statement didn't count the reconciled entries, and so the balance of the account was wrong. To fix that we putted a new custom engine function that will trigger the _bank_reconciliation_report_custom_engine_common with False for the "from_statement" and False for the "unreconciled" variables. With that the query will get all the transaction reconciled or not that are not from a statement. There was also a problem if the reconcile rate was
Original PR description
Before this commit, the section transaction without statement didn't count the reconciled entries, and so the balance of the account was wrong. To fix that we putted a new custom engine function that will trigger the _bank_reconciliation_report_custom_engine_common with False for the "from_statement" and False for the "unreconciled" variables. With that the query will get all the transaction reconciled or not that are not from a statement. There was also a problem if the reconcile rate was 0, which didn't when having only unreconciled entries but now that we can have that, it needed to be modified. task: 4110491 Forward-Port-Of: odoo/enterprise#69333 Forward-Port-Of: odoo/enterprise#68594
### Steps to reproduce: - Install the module "l10n_ec" and switch to Ecuadorian company - Go to Accounting > Configuration > Ecuadorian SRI > Digital Certificates SRI - When uploading a p12 file with the country name "Ecuador" and not "EC" - An error pops up but does not tell the right reason ### Cause: The cryptography library only accepts country names in the form of 2 character country code, so it raises an error. If an error occurs during the loading of the file, the error message w
Original PR description
### Steps to reproduce: - Install the module "l10n_ec" and switch to Ecuadorian company - Go to Accounting > Configuration > Ecuadorian SRI > Digital Certificates SRI - When uploading a p12 file with the country name "Ecuador" and not "EC" - An error pops up but does not tell the right reason ### Cause: The cryptography library only accepts country names in the form of 2 character country code, so it raises an error. If an error occurs during the loading of the file, the error message will always be "Error loading certificate %s, check that password is correct and file type is p12". ### Solution: As we cannot display the error messages of external libraries (here the cryptography library), this commit adds the reason "The country name is not a 2 character country code." in the error message. opw-4116914 Forward-Port-Of: odoo/enterprise#69194 Forward-Port-Of: odoo/enterprise#68633
Current behaviour: --- Sometimes when clicking "Put in pack", the whole page freezes and gives a 503 error. Steps to reproduce: --- 1. Go to Settings, Inventory 2. Activate Packages 3. Go to Products 4. Create a new product 5. Set inventory > Tracking: By Lots 6. Go to Operations > Receipts 7. Create a new receipt for the product 8. Set the Demand quantity to 13.5 9. Click on Mark as Todo 10. Go to Barcode, operations, receipts 11. Select the last created receipt 12. Edit the l
Original PR description
Current behaviour: --- Sometimes when clicking "Put in pack", the whole page freezes and gives a 503 error. Steps to reproduce: --- 1. Go to Settings, Inventory 2. Activate Packages 3. Go to Products 4. Create a new product 5. Set inventory > Tracking: By Lots 6. Go to Operations > Receipts 7. Create a new receipt for the product 8. Set the Demand quantity to 13.5 9. Click on Mark as Todo 10. Go to Barcode, operations, receipts 11. Select the last created receipt 12. Edit the line, input 5.66, save 13. Click on Put in pack 14. The whole page freezes Cause of the issue: --- Caused by: https://github.com/odoo/enterprise/commit/42e9c378b0766e98a93605d0c2bc0797e3995734 The content of `pageLines` can be modified, thus the loop can never end. Fix: --- Shallow copy of `this.pageLines` (similar than in `get groupedLines()` in `BarcodeModel`) opw-4060843 Forward-Port-Of: odoo/enterprise#69029 Forward-Port-Of: odoo/enterprise#68448
Steps to reproduce 1. Click on the retweet button. 2. select the Quote tweet button. 3. error occurs (if debug is ON). 4. Throws an error when clicking the 'Post' button. Technical Reason: Clicking on a quote causes an error because of props validation. Additionally, the route for the post is not set properly. After this commit: Clicking on a 'quote tweet' works without any errors. Posting will work as expected. Task-4072916 Forward-Port-Of: odoo/enterprise#67941
Original PR description
Steps to reproduce 1. Click on the retweet button. 2. select the Quote tweet button. 3. error occurs (if debug is ON). 4. Throws an error when clicking the 'Post' button. Technical Reason: Clicking on a quote causes an error because of props validation. Additionally, the route for the post is not set properly. After this commit: Clicking on a 'quote tweet' works without any errors. Posting will work as expected. Task-4072916 Forward-Port-Of: odoo/enterprise#67941
Issue: When clients attempt to connect their Instagram account to the Social Marketing app, an error occurs if their account contains a post without a media_url value (in our case, this issue involved a video). Steps to Reproduce: It's quite difficult to reproduce because, according to my research, it doesn't happen with all videos. This issue might be related to the fact that new Instagram videos have become Reels. I tried with a test Instagram account, but I couldn't replicate this case.
Original PR description
Issue: When clients attempt to connect their Instagram account to the Social Marketing app, an error occurs if their account contains a post without a media_url value (in our case, this issue involved a video). Steps to Reproduce: It's quite difficult to reproduce because, according to my research, it doesn't happen with all videos. This issue might be related to the fact that new Instagram videos have become Reels. I tried with a test Instagram account, but I couldn't replicate this case. Fix: Use a default empty string instead of None (via get). This prevents the user from encountering the error and getting blocked. opw-4085729 opw-4141505 opw-4141479 opw-4105134 opw-4114002 Forward-Port-Of: odoo/enterprise#69173
In this commit, fixes demo contract assigned with belgian structure type. related task-3596938 Forward-Port-Of: odoo/enterprise#69342
Original PR description
In this commit, fixes demo contract assigned with belgian structure type. related task-3596938 Forward-Port-Of: odoo/enterprise#69342
Description of the issue this commit addresses: While we tought mx could not have invoices without product, it is actually possible in down payments. Therefore a condition looking for whether there is a product or not is missing in the invoice line name's computation. --- Desired behavior after this commit is merged: The invoice line's name always contains the name of the product just as before but cases where there is no product are handled instead of raising an error. --- Not
Original PR description
Description of the issue this commit addresses: While we tought mx could not have invoices without product, it is actually possible in down payments. Therefore a condition looking for whether there is a product or not is missing in the invoice line name's computation. --- Desired behavior after this commit is merged: The invoice line's name always contains the name of the product just as before but cases where there is no product are handled instead of raising an error. --- Note: While at it, the method computing the name is renamed to better fit the helpers present in the same file. --- opw-4156804 Forward-Port-Of: odoo/enterprise#69330
Before this fix, invoices with multiple sale.orders linked to invoice lines broke _get_extra_payment_form_values and subscription_transaction methods after odoo/enterprise#36656, which targeted single invoices only. Since multiple subscriptions can be linked to the same invoice, we needed to adapt that flow. After this fix, invoices with multiple sale.orders linked to their lines can now be processed correctly, and payment automation works normally. We now consider the flow of multiple subscr
Original PR description
Before this fix, invoices with multiple sale.orders linked to invoice lines broke _get_extra_payment_form_values and subscription_transaction methods after odoo/enterprise#36656, which targeted single invoices only. Since multiple subscriptions can be linked to the same invoice, we needed to adapt that flow. After this fix, invoices with multiple sale.orders linked to their lines can now be processed correctly, and payment automation works normally. We now consider the flow of multiple subscriptions properly. This fix resolves the issue and ensures seamless payment automation. task-4048237 Forward-Port-Of: odoo/enterprise#69216 Forward-Port-Of: odoo/enterprise#66675
Before this commit, when a new record was just created, requesting a signature from the cog menu would not call the Signature Request action since we were fetching the record id from the wrong place (controller props). After this commit, when creating a new record, Signature request action is sucessfully called in newly created records since we fetch the record id from the controller state instead, which is mutable to record changes. task-4116177 Forward-Port-Of: odoo/enterprise#68455
Original PR description
Before this commit, when a new record was just created, requesting a signature from the cog menu would not call the Signature Request action since we were fetching the record id from the wrong place (controller props). After this commit, when creating a new record, Signature request action is sucessfully called in newly created records since we fetch the record id from the controller state instead, which is mutable to record changes. task-4116177 Forward-Port-Of: odoo/enterprise#68455
The s/h in column B of the export of the csv for DateV should be in uppercase. task-4131986 Forward-Port-Of: odoo/enterprise#68868 Forward-Port-Of: odoo/enterprise#68795
Original PR description
The s/h in column B of the export of the csv for DateV should be in uppercase. task-4131986 Forward-Port-Of: odoo/enterprise#68868 Forward-Port-Of: odoo/enterprise#68795
Before this commit, the periods used in qty invoiced computation were not easily overridable. Forward-Port-Of: odoo/enterprise#69335
Original PR description
Before this commit, the periods used in qty invoiced computation were not easily overridable. Forward-Port-Of: odoo/enterprise#69335
The `In Payment` state should only apply when `accountant` is installed. Users with Invoicing (enterprise) currently reach this state even though they might not do reconciliations. Reporting menus visibility restricted to access rights - Unrealized currency gains/losses (Accountants: readonly) - Budget report (Accountants: readonly) - 1099 Report (Accountants: readonly) - Follow-up Reports (Invoicing & Banks: basic) Task-4130326 Forward-Port-Of: odoo/enterprise#68907
Original PR description
The `In Payment` state should only apply when `accountant` is installed. Users with Invoicing (enterprise) currently reach this state even though they might not do reconciliations. Reporting menus visibility restricted to access rights - Unrealized currency gains/losses (Accountants: readonly) - Budget report (Accountants: readonly) - 1099 Report (Accountants: readonly) - Follow-up Reports (Invoicing & Banks: basic) Task-4130326 Forward-Port-Of: odoo/enterprise#68907
Once we clicked the "Pair" button, a notification showing "No new IoT Box found." was displayed. We want to avoid that. Forward-Port-Of: odoo/enterprise#69002
Original PR description
Once we clicked the "Pair" button, a notification showing "No new IoT Box found." was displayed. We want to avoid that. Forward-Port-Of: odoo/enterprise#69002
Steps to reproduce: 1. Click on the retweet button. 2. Select Quote. 3. An error occurs. Technical Reason: The 'social.StreamPostCommentsOriginalPost' template receives 'undefined' in the 'state.isEditMode' variable, which is called from 'social_twitter.TwitterQuoteDialog'. After this Commit: No error will occur. Task-4072916 Forward-Port-Of: odoo/enterprise#67930
Original PR description
Steps to reproduce: 1. Click on the retweet button. 2. Select Quote. 3. An error occurs. Technical Reason: The 'social.StreamPostCommentsOriginalPost' template receives 'undefined' in the 'state.isEditMode' variable, which is called from 'social_twitter.TwitterQuoteDialog'. After this Commit: No error will occur. Task-4072916 Forward-Port-Of: odoo/enterprise#67930
Before this commit, some tests were failing because the time was not correctly frozen. The failing test could be seen when run like this: faketime '2024-08-31 02:01:00 UTC' ./odoo-bin -c ... runbot errors: 76518, 76519, 76520 Forward-Port-Of: odoo/enterprise#69267
Original PR description
Before this commit, some tests were failing because the time was not correctly frozen. The failing test could be seen when run like this: faketime '2024-08-31 02:01:00 UTC' ./odoo-bin -c ... runbot errors: 76518, 76519, 76520 Forward-Port-Of: odoo/enterprise#69267
test_shop_floor fails with only mrp_workorder installed. With quality_mrp (as in runbot), test succeeds. Origin is in _compute_lot_line_id which set lot_id even when no qty_done. Forward-Port-Of: odoo/enterprise#69231 Forward-Port-Of: odoo/enterprise#68226
Original PR description
test_shop_floor fails with only mrp_workorder installed. With quality_mrp (as in runbot), test succeeds. Origin is in _compute_lot_line_id which set lot_id even when no qty_done. Forward-Port-Of: odoo/enterprise#69231 Forward-Port-Of: odoo/enterprise#68226
Steps to reproduce (in odoo) - Open a spreadsheet - do something such that there's a least one revisions - leave the spreadsheet => non-deterministic concurrent update because we save the thumbnail and we snapshot at the same time. I'm able to reproduce more when my laptop power setting is on "performance" compared to "balanced" Task: 4080148 Forward-Port-Of: odoo/enterprise#68918
Original PR description
Steps to reproduce (in odoo) - Open a spreadsheet - do something such that there's a least one revisions - leave the spreadsheet => non-deterministic concurrent update because we save the thumbnail and we snapshot at the same time. I'm able to reproduce more when my laptop power setting is on "performance" compared to "balanced" Task: 4080148 Forward-Port-Of: odoo/enterprise#68918
The `_generate_export_file()` method was updated to handle payroll payments in ABA batch processing. However, the previous implementation lacked a proper fallback to the superclass method when the payment was not a payroll payment, leading to a traceback during ABA batch payment validation. opw-4106377 Forward-Port-Of: odoo/enterprise#69182
Original PR description
The `_generate_export_file()` method was updated to handle payroll payments in ABA batch processing. However, the previous implementation lacked a proper fallback to the superclass method when the payment was not a payroll payment, leading to a traceback during ABA batch payment validation. opw-4106377 Forward-Port-Of: odoo/enterprise#69182
From the IoT Box form view, we display the connected devices: they were readonly. Now, they are editable, avoiding us from going to the "Device" page, then look for the device in the list. Forward-Port-Of: odoo/enterprise#68966
Original PR description
From the IoT Box form view, we display the connected devices: they were readonly. Now, they are editable, avoiding us from going to the "Device" page, then look for the device in the list. Forward-Port-Of: odoo/enterprise#68966
Steps to reproduce: 1. Open Knowledge 2. Select any text in an article 3. The menu will show 4. Click on comments 5. Write a log and shrink the screen 6. The comments menu breaks 7. The display of comments is a little bit odd Removed 'flex-wrap' from the message header's CSS to prevent the menu from overlapping when the screen size is reduced. This ensures a consistent layout and better user experience on smaller screens. Task-4063810 Forward-Port-Of: odoo/enterprise#69255
Original PR description
Steps to reproduce: 1. Open Knowledge 2. Select any text in an article 3. The menu will show 4. Click on comments 5. Write a log and shrink the screen 6. The comments menu breaks 7. The display of comments is a little bit odd Removed 'flex-wrap' from the message header's CSS to prevent the menu from overlapping when the screen size is reduced. This ensures a consistent layout and better user experience on smaller screens. Task-4063810 Forward-Port-Of: odoo/enterprise#69255
Added PLE 12.1 and PLE 13.1 records for detailed inventory tracking. PLE 12.1 tracks inventory in physical units, while PLE 13.1 includes both physical and monetary values. Both records are updated semi-annually and reported monthly, with submission deadlines of October 1st and April 1st, per Superintendent Resolution 169-2015. Forward-Port-Of: odoo/enterprise#69199 Forward-Port-Of: odoo/enterprise#62696
Original PR description
Added PLE 12.1 and PLE 13.1 records for detailed inventory tracking. PLE 12.1 tracks inventory in physical units, while PLE 13.1 includes both physical and monetary values. Both records are updated semi-annually and reported monthly, with submission deadlines of October 1st and April 1st, per Superintendent Resolution 169-2015. Forward-Port-Of: odoo/enterprise#69199 Forward-Port-Of: odoo/enterprise#62696
A `_logger.critical` call was mistakenly committed in the `SixDriver.py` file. It has now been removed. Task: 3995682 Forward-Port-Of: odoo/enterprise#66641
Original PR description
A `_logger.critical` call was mistakenly committed in the `SixDriver.py` file. It has now been removed. Task: 3995682 Forward-Port-Of: odoo/enterprise#66641
**Current behavior:** When a kit bom product move line is broken down into move lines for its component products, changes written to the move line (not on the move) will not carry over to the new move nor move lines. **Expected behavior:** The change should be observed beyond the decomposition. **Steps to reproduce:** 1. Create a new internal transfer in barcode 2. Add a product with some bom via form, also edit the destination location in the form to be something non-
Original PR description
**Current behavior:** When a kit bom product move line is broken down into move lines for its component products, changes written to the move line (not on the move) will not carry over to the new…
**Current behavior:**
When a kit bom product move line is broken down into move lines
for its component products, changes written to the move line
(not on the move) will not carry over to the new move nor move
lines.
**Expected behavior:**
The change should be observed beyond the decomposition.
**Steps to reproduce:**
1. Create a new internal transfer in barcode
2. Add a product with some bom via form, also edit the
destination location in the form to be something
non-default.
3. Save the form, validate the transfer
4. See that the broken down move lines don't keep the changed
destination location
**Cause of the issue:**
When the kit bom moves are exploded, the location information of
its move lines is not taken into account at any point- and thus
it's lost.
**Fix:**
For kit bom products, use a move line's location information
during creation of a move as opposed to the picking. Only link a
new move line for a kit bom product to an existing move if (in
addition to the product) the location source and destination
values match.
opw-4016702
Forward-Port-Of: odoo/enterprise#69123
Forward-Port-Of: odoo/enterprise#66746This commit brings out some more improvement to the New Zealand localization. It will mostly be about translating a few terms, improving tax labels on invoices and mark invoices as "tax invoices". Task id #3753652 Forward-Port-Of: odoo/enterprise#69224 Forward-Port-Of: odoo/enterprise#62591
Original PR description
This commit brings out some more improvement to the New Zealand localization. It will mostly be about translating a few terms, improving tax labels on invoices and mark invoices as "tax invoices". Task id #3753652 Forward-Port-Of: odoo/enterprise#69224 Forward-Port-Of: odoo/enterprise#62591
This commit make sure the values are get in the same order every time to avoid falsy error runbot 76085 Forward-Port-Of: odoo/enterprise#68963
Original PR description
This commit make sure the values are get in the same order every time to avoid falsy error runbot 76085 Forward-Port-Of: odoo/enterprise#68963