Wednesday, June 26, 2024
45 changes · saas-17.3
Enhancements to existing features
Restaurant payment screens now show the per-guest amount only when there is more than one guest at the table. This avoids repeating the same amount for single-guest tables, making the checkout view clearer for staff.
Original PR description
Before this commit ------------------------- The amount per guest was displayed for every case even if the customer is only one on the table. After this commit ---------------------- If the customer-count is more than one than only show the per guest amount because for only one guest total amount and per guest amount will be same and makes no sense to show again. task: 4002199
Resolved issues and error corrections
This fixes a display issue where user mentions in Odoo mail and Discuss lost their visual styling after a framework upgrade. Mentions now appear correctly again and no longer overlap when they wrap across lines, making conversations easier to read.
Original PR description
[FIX] mail: lost styling in mention since the migration of bs5.3, the style of mention lost. the problem is that the style of .o_mail_redirect, etc. is defined in the bs class way so, without a .btn class, the style is lost. fix: reproduce the style in discus, avoid the overlapping for mentions in two different lines.  task-4012219
Miscellaneous changes
This PR clears a few retainers that would leak memory during the execution of JS unit tests. Backport of https://github.com/odoo/odoo/pull/170885 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#170887
Original PR description
This PR clears a few retainers that would leak memory during the execution of JS unit tests. Backport of https://github.com/odoo/odoo/pull/170885 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#170887
Email template setup now uses a safer encoded version of an emoji so it loads correctly on Apple silicon Macs. This prevents fresh database setup from failing or rendering incorrectly because of the emoji in mail attachment link templates.
Original PR description
Before this commit, the emoji displayed in the template data `mail.mail_attachment_links` is not correctly compiled by the lxml module for the computer with Apple chip. This commit defines the emoji by using its html code instead of directly displaying the emoji in the template to correctly compile it when we start a fresh db on mac with Apple chip.
Fixed an issue where a spreadsheet pivot could be shown as unused even when it was still referenced from another sheet. This helps prevent users from accidentally removing or mismanaging active pivot data in multi-sheet spreadsheets.
Original PR description
Enterprise adaptations of the community branch. Steps to reproduce in 17.0: There's no way to reproduce the issue in 17.0 because the faulty getter in only called on positions in the active sheet (pivot autofill, global filter auto-matching) Steps to reproduce in saas-17.1: - insert a pivot in a blank spreadsheet - delete all pivot formulas - insert a new sheet - in the new sheet: - in A1: type "1" - in A2: =ODOO.PIVOT(A1) - activate the first sheet again - Open the Data menu => the pivot 1 is marked as being unused, even though it's used in the second sheet Task: 3859472 X-original-commit: 0b6730496a4316d0ec19ffb823ca2cee1c2c3790
Steps: - Install l10n_fr and make sure fr company has tax id filled - Go to bank journal and set a bank account number - Go to Customer invoice journal and check `Factur-X` in the Advenced Settings tab - Create a french customer F with an email address - Open a pos session, and make an invoice forF for a product with tax, select Bank payment method and confirm - Go to invoices and select the newly created invoice -> "Error occured while creating the EDI document" Cause: The field `partner
Original PR description
Steps: - Install l10n_fr and make sure fr company has tax id filled - Go to bank journal and set a bank account number - Go to Customer invoice journal and check `Factur-X` in the Advenced Settings tab - Create a french customer F with an email address - Open a pos session, and make an invoice forF for a product with tax, select Bank payment method and confirm - Go to invoices and select the newly created invoice -> "Error occured while creating the EDI document" Cause: The field `partner_bank_id` is not set from the pos order to the invoice cbe1cf5b1044827a058a4cde5d0492a545ac6da4 added a condition specifically for swiss localisation. Fix: Movr the condition to a bridge module for swiss localisation opw-3992498 Forward-Port-Of: odoo/odoo#170762
Description of the Issue/Feature Addressed by This PR: This pull request addresses translation issues related to a string defined in JavaScript code. Previously, the string was incorrectly formatted, making it unlocatable for the translation files. The proposed solution ensures that Odoo can now accurately translate the string. Current Behavior Before PR: In the point of sale, when attempting to close a session with a closing difference exceeding the maximum, a popup displays two sentence
Original PR description
Description of the Issue/Feature Addressed by This PR: This pull request addresses translation issues related to a string defined in JavaScript code. Previously, the string was incorrectly formatted,…
Description of the Issue/Feature Addressed by This PR: This pull request addresses translation issues related to a string defined in JavaScript code. Previously, the string was incorrectly formatted, making it unlocatable for the translation files. The proposed solution ensures that Odoo can now accurately translate the string. Current Behavior Before PR: In the point of sale, when attempting to close a session with a closing difference exceeding the maximum, a popup displays two sentences. Unfortunately, these sentences couldn’t be translated due to an improperly formatted string in the JavaScript. The translation files were unable to identify the string. Desired Behavior After PR Is Merged: The corrected string enables Odoo to perform accurate translations. The change has been implemented following an example from another well-formed string in the code.  Now the text displayed in the pop up will be translated without problems.  --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#168952 Forward-Port-Of: odoo/odoo#160303
Steps: - Install the Project module > Create a new project - Open Project > Create task stage(s) - Delete all task stages Issue: - If all the stages are deleted then blank screen appears instead of shadow data(example data). Cause: - Incorrect active_model was passed. Fix: - Issue is been fixed by removing active_model. task-3744319 Forward-Port-Of: odoo/odoo#170711 Forward-Port-Of: odoo/odoo#154682
Original PR description
Steps: - Install the Project module > Create a new project - Open Project > Create task stage(s) - Delete all task stages Issue: - If all the stages are deleted then blank screen appears instead of shadow data(example data). Cause: - Incorrect active_model was passed. Fix: - Issue is been fixed by removing active_model. task-3744319 Forward-Port-Of: odoo/odoo#170711 Forward-Port-Of: odoo/odoo#154682
Before this commit, when images are added to an Image Wall or to an Image Gallery, they remained in their original format. After this commit, images added to an Image Wall or an Image Gallery are converted to webp. Thanks to [1], the Image Gallery dataset entries related to the conversion are preserved. [1]: https://github.com/odoo/odoo/commit/e73a1a96dcf8786c01205ae0a97b10e38ab9afeb task-3666894 Forward-Port-Of: odoo/odoo#170192 Forward-Port-Of: odoo/odoo#148068
Original PR description
Before this commit, when images are added to an Image Wall or to an Image Gallery, they remained in their original format. After this commit, images added to an Image Wall or an Image Gallery are converted to webp. Thanks to [1], the Image Gallery dataset entries related to the conversion are preserved. [1]: https://github.com/odoo/odoo/commit/e73a1a96dcf8786c01205ae0a97b10e38ab9afeb task-3666894 Forward-Port-Of: odoo/odoo#170192 Forward-Port-Of: odoo/odoo#148068
When an image gallery is edited, the options of its selected image are displayed in the side panel. If the previous/next arrows are used to navigate between the images, the image options are not updated to match the newly selected image. This commit fixes this by explicitly selecting the reached image once the slide transition is completed. The completion detection is based on the equivalent code for the "Carousel" snippet. Steps to reproduce: - Drop an "Image Gallery" snippet into a page
Original PR description
When an image gallery is edited, the options of its selected image are displayed in the side panel. If the previous/next arrows are used to navigate between the images, the image options are not updated to match the newly selected image. This commit fixes this by explicitly selecting the reached image once the slide transition is completed. The completion detection is based on the equivalent code for the "Carousel" snippet. Steps to reproduce: - Drop an "Image Gallery" snippet into a page. - Select its first image. - Set an image option (e.g. Shape or Filter). - Click on the "Next" arrow beside the image. => The image options were not updated. task-3716863 Forward-Port-Of: odoo/odoo#169749 Forward-Port-Of: odoo/odoo#160942
Purpose ======= Fix the display of the quiz comment line: - the trash icon is displayed under the line instead of next to it. - the comment input is too large and should be aligned with the answers inputs. Specification ============= The comment input is too large because the "form-control" class has a "width: 100%" style that overwrites the "width: 66.66666667%" one applied by the "col-8" class. The good fix would be to create a new parent for the input and apply the "col-8" class
Original PR description
Purpose ======= Fix the display of the quiz comment line: - the trash icon is displayed under the line instead of next to it. - the comment input is too large and should be aligned with the answers inputs. Specification ============= The comment input is too large because the "form-control" class has a "width: 100%" style that overwrites the "width: 66.66666667%" one applied by the "col-8" class. The good fix would be to create a new parent for the input and apply the "col-8" class to limit its width accordingly while still keeping the good row gutters and margins. However as changing the xml structure is not recommended in stable, the fix is to add the "col-8" on the current "row" parent and forcing the trash icon to be next to by using the "flex-nowrap" class. Task-3986982 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#169237
Increased delay between every request to iot_devices. Requests were performed every 10ms, now every minute. Forward-Port-Of: odoo/odoo#170557
Original PR description
Increased delay between every request to iot_devices. Requests were performed every 10ms, now every minute. Forward-Port-Of: odoo/odoo#170557
Steps to reproduce: - wrap a pivot function inside a IFERROR e.g. =IFERROR(PIVOT("1", "probability"), 42) - reload the spreadsheet - before the pivot is loaded (throttle the network in the dev tools): right click the cell - click on "See records" menu item => boom Task: 3847477 X-original-commit: odoo/enterprise@31401c75baa4252917fe5d808be0abd5fc23a906 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#162764 Forwa
Original PR description
Steps to reproduce:
- wrap a pivot function inside a IFERROR e.g. =IFERROR(PIVOT("1", "probability"), 42)
- reload the spreadsheet
- before the pivot is loaded (throttle the network in the dev tools): right click the cell
- click on "See records" menu item => boom
Task: 3847477
X-original-commit: odoo/enterprise@31401c75baa4252917fe5d808be0abd5fc23a906
---
I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Forward-Port-Of: odoo/odoo#162764
Forward-Port-Of: odoo/odoo#162568In 92ed88a770893f57dcceff99d9239f130aa6112d, we added a fix and tests on hr.expense & hr.expense.sheet state fields. This commit forward ports these tests as they are interesting to keep in later versions. 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#169893 Forward-Port-Of: odoo/odoo#164909
Original PR description
In 92ed88a770893f57dcceff99d9239f130aa6112d, we added a fix and tests on hr.expense & hr.expense.sheet state fields. This commit forward ports these tests as they are interesting to keep in later versions. 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#169893 Forward-Port-Of: odoo/odoo#164909
For a logged user, when applying to a job position, the phone number is filled with phone but updates mobile on submission (instead of phone field) Steps to reproduce: 1.Navigate to jobs > /jobs in the url. 2.Log as an existing user > the phone number is pre filled in the job form based on the user's phone field (can be seen in the contact view). 3.Change the phone number in the job form. 4.Apply to the job position > click on the "i'm feeling lucky" button. 5.Navigate to contact > search
Original PR description
For a logged user, when applying to a job position, the phone number is filled with phone but updates mobile on submission (instead of phone field) Steps to reproduce: 1.Navigate to jobs > /jobs in the url. 2.Log as an existing user > the phone number is pre filled in the job form based on the user's phone field (can be seen in the contact view). 3.Change the phone number in the job form. 4.Apply to the job position > click on the "i'm feeling lucky" button. 5.Navigate to contact > search for the user 6.The given phone number will overwrite the mobile field of the user view Cause: partner_mobile field was been used. Solution: use partner_phone field from hr_applicant model opw-3964062 Forward-Port-Of: odoo/odoo#169729 Forward-Port-Of: odoo/odoo#168745
Steps to reproduce in 17.0: There's no way to reproduce the issue in 17.0 because the faulty getter in only called on positions in the active sheet (pivot autofill, global filter auto-matching) Steps to reproduce in saas-17.1: - insert a pivot in a blank spreadsheet - delete all pivot formulas - insert a new sheet - in the new sheet: - in A1: type "1" - in A2: =ODOO.PIVOT(A1) - activate the first sheet again - Open the Data menu => the pivot 1 is marked as being unused, even th
Original PR description
Steps to reproduce in 17.0: There's no way to reproduce the issue in 17.0 because the faulty getter in only called on positions in the active sheet (pivot autofill, global filter auto-matching) Steps to reproduce in saas-17.1: - insert a pivot in a blank spreadsheet - delete all pivot formulas - insert a new sheet - in the new sheet: - in A1: type "1" - in A2: =ODOO.PIVOT(A1) - activate the first sheet again - Open the Data menu => the pivot 1 is marked as being unused, even though it's used in the second sheet Task: 3859472 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#169180 Forward-Port-Of: odoo/odoo#161108
This commit fixes a bug where there would be a traceback occuring when the user would either create a favorite with a name that already exists or one with an empty name by pressing enter instead of save. The crash occurs because the keydown event is not passed to saveFavorite and in these cases, saveFavorite will invoke stopPropagation on an undefined event. Solution: pass the event to saveFavorite. Forward-Port-Of: odoo/odoo#170672 Forward-Port-Of: odoo/odoo#170320
Original PR description
This commit fixes a bug where there would be a traceback occuring when the user would either create a favorite with a name that already exists or one with an empty name by pressing enter instead of save. The crash occurs because the keydown event is not passed to saveFavorite and in these cases, saveFavorite will invoke stopPropagation on an undefined event. Solution: pass the event to saveFavorite. Forward-Port-Of: odoo/odoo#170672 Forward-Port-Of: odoo/odoo#170320
[IMP] l10n_pk: improve pakistan's tax structure - Restructure the tax and tax group. - Adding new taxes - Adding tax tags to all the taxes - Create two new tax report Reason: Enhance the user-experience in pakistan Task-3871597 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#170808 Forward-Port-Of: odoo/odoo#164128
Original PR description
[IMP] l10n_pk: improve pakistan's tax structure - Restructure the tax and tax group. - Adding new taxes - Adding tax tags to all the taxes - Create two new tax report Reason: Enhance the user-experience in pakistan Task-3871597 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#170808 Forward-Port-Of: odoo/odoo#164128
Add raw data directly to each records themselves, instead of storing them in a separate object. This way, we avoid having verify if the raw data exists in the main object, we can directly access it. This commit also include a backport of https://github.com/odoo/odoo/pull/168466, commit message: Before this commit, loading the POS took a long time when there were more than 1000 products and pricelists. The reason was that the `computeProductPricelistCache` function had a time complexity
Original PR description
Add raw data directly to each records themselves, instead of storing them in a separate object. This way, we avoid having verify if the raw data exists in the main object, we can directly access it. This commit also include a backport of https://github.com/odoo/odoo/pull/168466, commit message: Before this commit, loading the POS took a long time when there were more than 1000 products and pricelists. The reason was that the `computeProductPricelistCache` function had a time complexity of O(n^2 * m) due to nested loops over products and pricelist items, and several calls to the raw function which is O(n) itself. This commit optimizes the `computeProductPricelistCache` function by performing a single loop over pricelist items and another over products. This change improves the loading speed from 10 minutes to 10 seconds with 1000 products and pricelist items. Forward-Port-Of: odoo/odoo#170032 Forward-Port-Of: odoo/odoo#169115
The value of the returned product may be different from the one initially received. In such case, the stock accounting may be broken. To reproduce the issue: (Need account_accountant) 1. Create an auto-FIFO product category 2. Create a storable product 3. Confirm a PO with 1 @ 10 4. Receive it 5. Confirm a PO with 4 @ 25 6. Receive 1 with backorder 7. Return it 8. On the backorder, receive 4 9. Bill Error: Looking at the AML of the stock-in account, some lines are not reconcile
Original PR description
The value of the returned product may be different from the one initially received. In such case, the stock accounting may be broken. To reproduce the issue: (Need account_accountant) 1. Create an…
The value of the returned product may be different from the one initially received. In such case, the stock accounting may be broken. To reproduce the issue: (Need account_accountant) 1. Create an auto-FIFO product category 2. Create a storable product 3. Confirm a PO with 1 @ 10 4. Receive it 5. Confirm a PO with 4 @ 25 6. Receive 1 with backorder 7. Return it 8. On the backorder, receive 4 9. Bill Error: Looking at the AML of the stock-in account, some lines are not reconciled and there is a $15 difference between the totald debit and the total credit. Step 7, when returning the product, we actually return the one at $10. Step 8, we then receive 4 products at $25 (hence the difference of $15). So, back to step 7, when returning the product, we should also compensate the stock-in account (with the expense one) in case of a difference. Let's look at another case: after step 7, the user "returns the return". In such case, the value of the new receipt is based on the returned one (see [1]), i.e.: the value of the newly received product will be $10. In such case, we also need to (1) compensate the stock-in account and (2) prevent the pdiff process to generate a pdiff of $15 (otherwise, we would add a value to the received product, which would go against the logic of [1]). This commit does not address the behaviour difference between the two above use cases (-> depending on how the user receives again the returned product, its value is not the same). This would probably need a deeper analysis a change, on master. Note: a third use case does not work either: (step 1-4), PO 1 @ 25, receive, bill, return, refund. [1] https://github.com/odoo/odoo/blob/07464844c69ac3b667adfede0e4e330831819802/addons/purchase_stock/models/stock_move.py#L32-L40 Initially added by https://github.com/odoo/odoo/commit/200aac56771fd1ef759f73b277a6808d96ee5f31 OWP-3698324 Forward-Port-Of: odoo/odoo#164644 Forward-Port-Of: odoo/odoo#162368
We assert a hardcoded string with the name of the base.partner_root data inside test_onchange_one2many_default(). Without mail this name is "System", with the mail module it becomes "OdooBot". Then the test works if we have mail installed Forward-Port-Of: odoo/odoo#170777
Original PR description
We assert a hardcoded string with the name of the base.partner_root data inside test_onchange_one2many_default(). Without mail this name is "System", with the mail module it becomes "OdooBot". Then the test works if we have mail installed Forward-Port-Of: odoo/odoo#170777
Check if the user selected the carrier for storable/consumable products before proceeding to payment. opw-3810367 See also: - https://github.com/odoo/enterprise/pull/60550 Forward-Port-Of: odoo/odoo#166523 Forward-Port-Of: odoo/odoo#161476
Original PR description
Check if the user selected the carrier for storable/consumable products before proceeding to payment. opw-3810367 See also: - https://github.com/odoo/enterprise/pull/60550 Forward-Port-Of: odoo/odoo#166523 Forward-Port-Of: odoo/odoo#161476
This commit fixes an issue introduced by https://github.com/odoo/odoo/pull/170159. forEach is not available for mapIterator on non-chromium based browser. opw-4008053 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#170702
Original PR description
This commit fixes an issue introduced by https://github.com/odoo/odoo/pull/170159. forEach is not available for mapIterator on non-chromium based browser. opw-4008053 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#170702
Before this commit, scanning a partner's barcode did not successfully load the partner from the server, leading to functionality issues. opw-3986674 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#170493
Original PR description
Before this commit, scanning a partner's barcode did not successfully load the partner from the server, leading to functionality issues. opw-3986674 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#170493
### Steps to reproduce - Install project. - Create 2 projects one with timesheets and the second without timesheets. - Open the project without time sheets. - Observe that there are timesheet filters even if the timesheets are disabled. ### Issue: Timesheet filters are available for project tasks even though the project is not using the timesheets. ### Cause: Filters were missing some conditions to enable only when timesheets are available. ### Solution: Corrected the timesheet
Original PR description
### Steps to reproduce - Install project. - Create 2 projects one with timesheets and the second without timesheets. - Open the project without time sheets. - Observe that there are timesheet filters even if the timesheets are disabled. ### Issue: Timesheet filters are available for project tasks even though the project is not using the timesheets. ### Cause: Filters were missing some conditions to enable only when timesheets are available. ### Solution: Corrected the timesheet-related filters so they are only available for the project tasks which use the timesheets. Note: When we refresh the page, filters become visible because the context is lost. task-3754591 Forward-Port-Of: odoo/odoo#170001 Forward-Port-Of: odoo/odoo#155186
When using a cover page with a duplex letter, it would print the content of the letter behind the cover page due to an extra blank page missing. Using Unicode characters in the address would result in black boxes. This is fixed by using the Lato font provided by the web module. Forward-Port-Of: odoo/odoo#170282 Forward-Port-Of: odoo/odoo#155752
Original PR description
When using a cover page with a duplex letter, it would print the content of the letter behind the cover page due to an extra blank page missing. Using Unicode characters in the address would result in black boxes. This is fixed by using the Lato font provided by the web module. Forward-Port-Of: odoo/odoo#170282 Forward-Port-Of: odoo/odoo#155752
Before this commit, loading a product into the PoS via search or barcode would append the internal reference to the product name. This commit fixes the issue by ensuring the 'display_default_code' context is respected when loading products via barcode or name search. opw-3900842 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#169315 Forward-Port-Of: odoo/odoo#167815
Original PR description
Before this commit, loading a product into the PoS via search or barcode would append the internal reference to the product name. This commit fixes the issue by ensuring the 'display_default_code' context is respected when loading products via barcode or name search. opw-3900842 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#169315 Forward-Port-Of: odoo/odoo#167815
Steps: - Install sale and razopay app. - Set-up razorpay provider. - Create quotation. - Pay that quotation via razorpay and save payment details. - Duplicate that quote and pay it via already saved method. Issue: - Creating duplicate token when paying via token. Cause: - Since [PR] we are creating token in odoo when razorpay give token_id in notification_data and tokenization is enabled on razorpay and in some case when we pay quote via token it return token in notification_data an
Original PR description
Steps: - Install sale and razopay app. - Set-up razorpay provider. - Create quotation. - Pay that quotation via razorpay and save payment details. - Duplicate that quote and pay it via already saved method. Issue: - Creating duplicate token when paying via token. Cause: - Since [PR] we are creating token in odoo when razorpay give token_id in notification_data and tokenization is enabled on razorpay and in some case when we pay quote via token it return token in notification_data and since we forgot to check if transaction is already connected to token or not it always create new token :( Fix: - Add condition to check if transaction is connected to token or not and only create token if transaction is not connected to token. Additionally pass entity_data in token creation method so it pass proper data when we don't find `id` in `notification_data`. [PR]: https://github.com/odoo/odoo/pull/159250 Forward-Port-Of: odoo/odoo#170370 Forward-Port-Of: odoo/odoo#170112
Steps: - Install Project - Inside project task list view, select all task - Print timesheets Issues: - Header of some tables appears double Cause: - Missing grouping container css inside table header Fix: - Proper css was added to group container inside table header task-3744319 Forward-Port-Of: odoo/odoo#154840
Original PR description
Steps: - Install Project - Inside project task list view, select all task - Print timesheets Issues: - Header of some tables appears double Cause: - Missing grouping container css inside table header Fix: - Proper css was added to group container inside table header task-3744319 Forward-Port-Of: odoo/odoo#154840
The aim of this commit is to allow to declare a 281.50 for curaçao. context: issue spotted by odoo.com prod db Before the commit: `f2018_landwoonplaats` xml tag is empty After the commit: `f2018_landwoonplaats` xml tag is filled with the onss country code of netherlands. task-id: None Forward-Port-Of: odoo/enterprise#65503 Forward-Port-Of: odoo/enterprise#65466
Original PR description
The aim of this commit is to allow to declare a 281.50 for curaçao. context: issue spotted by odoo.com prod db Before the commit: `f2018_landwoonplaats` xml tag is empty After the commit: `f2018_landwoonplaats` xml tag is filled with the onss country code of netherlands. task-id: None Forward-Port-Of: odoo/enterprise#65503 Forward-Port-Of: odoo/enterprise#65466
Before this commit, the "Consumidor Final Anónimo" partner could be missing due to the limited partner loading mechanism. This commit ensures that the "Consumidor Final Anónimo" partner is always loaded, regardless of the partner loading limitations. opw-3988187 Forward-Port-Of: odoo/enterprise#65296
Original PR description
Before this commit, the "Consumidor Final Anónimo" partner could be missing due to the limited partner loading mechanism. This commit ensures that the "Consumidor Final Anónimo" partner is always loaded, regardless of the partner loading limitations. opw-3988187 Forward-Port-Of: odoo/enterprise#65296
Issue ---- When a rental field like (e.g. `rental_start_date`) is changed in a sales order, its lines' description is recomputed. This makes sense for rental order lines as the description depends on these fields, but it messes with non-rental orders and non-rental order lines in rental orders when the Rental app is installed, so all descriptions get overwritten. Steps ----- - Install the rental app. - Create a new Quotation Template with whose line has a description that is differen
Original PR description
Issue ---- When a rental field like (e.g. `rental_start_date`) is changed in a sales order, its lines' description is recomputed. This makes sense for rental order lines as the description depends on these fields, but it messes with non-rental orders and non-rental order lines in rental orders when the Rental app is installed, so all descriptions get overwritten. Steps ----- - Install the rental app. - Create a new Quotation Template with whose line has a description that is different from the product name. - Create a new Quotation from the template. - The description gets overwritten. You can also reproduce this with creating a new rental order, then adding non-rental products with custom description. If you change the start date / end date the custom descriptions get overwritten. opw-3987175 Forward-Port-Of: odoo/enterprise#64675
This commit fixes the access error that occured while trying to rematch gstr-2b report Behaviour before this commit: When user tries to rematch the GSTR-2b Summary, an access error will be thrown that says user has no read access to the Attachments. Steps to reproduce: - Login with a user having `Accountant` group set in access rights for Account. - Install l10n_in_reports_gstr module & Switch to IN Company - Go to Accounting / Reports / GSTR Return Periods - Create new return period.
Original PR description
This commit fixes the access error that occured while trying to rematch gstr-2b report Behaviour before this commit: When user tries to rematch the GSTR-2b Summary, an access error will be thrown that says user has no read access to the Attachments. Steps to reproduce: - Login with a user having `Accountant` group set in access rights for Account. - Install l10n_in_reports_gstr module & Switch to IN Company - Go to Accounting / Reports / GSTR Return Periods - Create new return period. - Fetch GSTR-2b Summary and try to re-match. (An access error will popup)  Behaviour after this commit: The access error is no longer visible. Re-match can be done successfully. Forward-Port-Of: odoo/enterprise#64311
Steps to reproduce: - Create a QC with measure on quantity (move_lines) - Create a reciept and set move_line quantity to 0 - Validate and create a backorder - No QC on the backorder Bug: when create the backorder the sml is created first on the original picking and then it's picking_id is updated measure on quantity QCs are created at this time the QCs that are on the move_line should first be moved to the backorder before deleting the pending QCs on the original picking opw-3996782
Original PR description
Steps to reproduce: - Create a QC with measure on quantity (move_lines) - Create a reciept and set move_line quantity to 0 - Validate and create a backorder - No QC on the backorder Bug: when create the backorder the sml is created first on the original picking and then it's picking_id is updated measure on quantity QCs are created at this time the QCs that are on the move_line should first be moved to the backorder before deleting the pending QCs on the original picking opw-3996782 Forward-Port-Of: odoo/enterprise#65358
Enterprise adaptations of the community branch. Steps to reproduce in 17.0: There's no way to reproduce the issue in 17.0 because the faulty getter in only called on positions in the active sheet (pivot autofill, global filter auto-matching) Steps to reproduce in saas-17.1: - insert a pivot in a blank spreadsheet - delete all pivot formulas - insert a new sheet - in the new sheet: - in A1: type "1" - in A2: =ODOO.PIVOT(A1) - activate the first sheet again - Open the Data menu =>
Original PR description
Enterprise adaptations of the community branch. Steps to reproduce in 17.0: There's no way to reproduce the issue in 17.0 because the faulty getter in only called on positions in the active sheet (pivot autofill, global filter auto-matching) Steps to reproduce in saas-17.1: - insert a pivot in a blank spreadsheet - delete all pivot formulas - insert a new sheet - in the new sheet: - in A1: type "1" - in A2: =ODOO.PIVOT(A1) - activate the first sheet again - Open the Data menu => the pivot 1 is marked as being unused, even though it's used in the second sheet Task: 3859472 Forward-Port-Of: odoo/enterprise#64540 Forward-Port-Of: odoo/enterprise#60329
When creating an invoice for a sales containing a recurring product, if the user doesn't have access to PoS you will have an access errorr Steps to reproduce: ------------------- * Remove PoS right from Marc Demo * Create a recurring product * Connect as Marc Demo * Create a sale with the recurring product * Try to invoice the sale > Observation: You get an access error opw-4010753 Forward-Port-Of: odoo/enterprise#65406
Original PR description
When creating an invoice for a sales containing a recurring product, if the user doesn't have access to PoS you will have an access errorr Steps to reproduce: ------------------- * Remove PoS right from Marc Demo * Create a recurring product * Connect as Marc Demo * Create a sale with the recurring product * Try to invoice the sale > Observation: You get an access error opw-4010753 Forward-Port-Of: odoo/enterprise#65406
https://github.com/odoo/enterprise/commit/f510c4098cc4696dec3fbc7d6cd3164c6fb1d6bd prevented to close a subscription if there was no invoice. Unfortulately, sale_order.order_line.invoice_lines.move_id is not always a reliabable way to check for invoices. Sme flows could replaces all the sale.order.line and therefore the link to the invoices would be lost. In that case, for subscription orders, using the subscription_id field on the account.move.line is more reliable. We use both values t
Original PR description
https://github.com/odoo/enterprise/commit/f510c4098cc4696dec3fbc7d6cd3164c6fb1d6bd prevented to close a subscription if there was no invoice. Unfortulately, sale_order.order_line.invoice_lines.move_id is not always a reliabable way to check for invoices. Sme flows could replaces all the sale.order.line and therefore the link to the invoices would be lost. In that case, for subscription orders, using the subscription_id field on the account.move.line is more reliable. We use both values to be sure. Forward-Port-Of: odoo/enterprise#65331
**Current behavior:** A picking with a move for a product with kit BOM that also has some product packaging can be un-openable in Barcode. **Expected behavior:** Any picking should be able to be processed in Barcode. **Steps to reproduce:** *Enable product packagings* 1. Create a storable product with a kit BOM and a product packaging 2. Make some picking that has a move for the new product, confirm it so the moves for the kit components are created 3. Add stock move lines for
Original PR description
**Current behavior:** A picking with a move for a product with kit BOM that also has some product packaging can be un-openable in Barcode. **Expected behavior:** Any picking should be able to be…
**Current behavior:** A picking with a move for a product with kit BOM that also has some product packaging can be un-openable in Barcode. **Expected behavior:** Any picking should be able to be processed in Barcode. **Steps to reproduce:** *Enable product packagings* 1. Create a storable product with a kit BOM and a product packaging 2. Make some picking that has a move for the new product, confirm it so the moves for the kit components are created 3. Add stock move lines for each of the moves, fill out their `qty_done` field with the required amount 4. Save the picking record, go into Barcode 5. Try to open the picking -> trace back **Cause of the issue:** The Barcode client tries to read the package record of the BOM product/product template but it was never fetched into the barcode cache. **Fix:** Ensure any packaging record that could have an attempted access is fetched by the barcode client `onWillStart()`. opw-3895426 Forward-Port-Of: odoo/enterprise#65179 Forward-Port-Of: odoo/enterprise#64024
Steps to reproduce: ------------------- With a user which has no access rights for 'Employees' and 'Contracts' and with admin rights for 'Planning', tries to add a new recurring shift (via the Planning module). Issue: ------ We get an access error. Cause: ------ We're trying to access the `contract_ids` field even though we don't have access rights. Solution: --------- Fetch the value of the `date_end` field in sudo so that this flow is not blocked for a planning user. opw-39
Original PR description
Steps to reproduce: ------------------- With a user which has no access rights for 'Employees' and 'Contracts' and with admin rights for 'Planning', tries to add a new recurring shift (via the Planning module). Issue: ------ We get an access error. Cause: ------ We're trying to access the `contract_ids` field even though we don't have access rights. Solution: --------- Fetch the value of the `date_end` field in sudo so that this flow is not blocked for a planning user. opw-3992135 Forward-Port-Of: odoo/enterprise#64845
Versions -------- - 17.0+ Steps ----- 1. Go to Timesheets; 2. open list or kanban or list view; 3. click the START button to start a timer; 4. set a project & task; 5. stop timer. Issue ----- A record is added but hours spent remains 00:00, regardless of how much time has passed. Cause ----- 1. No timer was created on the server, because the `_setProjectTask` function that's responsible for it isn't being called when selecting a project or task. 2. From `_setProjectTask`, t
Original PR description
Versions -------- - 17.0+ Steps ----- 1. Go to Timesheets; 2. open list or kanban or list view; 3. click the START button to start a timer; 4. set a project & task; 5. stop timer. Issue ----- A…
Versions -------- - 17.0+ Steps ----- 1. Go to Timesheets; 2. open list or kanban or list view; 3. click the START button to start a timer; 4. set a project & task; 5. stop timer. Issue ----- A record is added but hours spent remains 00:00, regardless of how much time has passed. Cause ----- 1. No timer was created on the server, because the `_setProjectTask` function that's responsible for it isn't being called when selecting a project or task. 2. From `_setProjectTask`, the `onWillUpdateProps` hook wasn't getting triggered, because it's calling `load()` on `propsList` instead of `propsList.model`. 3. In `onWillUpdateProps`, the value of `timesheet.resId` wasn't getting updated because `resId` has a getter returning `config.resId`, but no setter modifying `config`. Solution -------- 1. Add a `onRecordChanged` hook. 2. Replace `propsList.load()` with `propsList.model.load()`. 3. Modify state tracking to supplant the need for changing `resId`. opw-3735463 Forward-Port-Of: odoo/enterprise#62630
See commit Forward-Port-Of: odoo/enterprise#65359 Forward-Port-Of: odoo/enterprise#62470
Original PR description
See commit Forward-Port-Of: odoo/enterprise#65359 Forward-Port-Of: odoo/enterprise#62470
Only load relevant MOs based on the workcenters that are shown in the view and reintroduce a limit to the amount of MOs that can be loaded simultaneously into the view. task-3895017 Forward-Port-Of: odoo/enterprise#65139 Forward-Port-Of: odoo/enterprise#64551
Original PR description
Only load relevant MOs based on the workcenters that are shown in the view and reintroduce a limit to the amount of MOs that can be loaded simultaneously into the view. task-3895017 Forward-Port-Of: odoo/enterprise#65139 Forward-Port-Of: odoo/enterprise#64551
**Before this PR:** There were no test cases written for the following three GST treatments: deemed export, composition and UIN holder. **After this PR:** Test cases have been added for the deemed export, composition and UIN holder GST treatments. **task**-3892511 Forward-Port-Of: odoo/enterprise#65344 Forward-Port-Of: odoo/enterprise#63333
Original PR description
**Before this PR:** There were no test cases written for the following three GST treatments: deemed export, composition and UIN holder. **After this PR:** Test cases have been added for the deemed export, composition and UIN holder GST treatments. **task**-3892511 Forward-Port-Of: odoo/enterprise#65344 Forward-Port-Of: odoo/enterprise#63333
### Steps to reproduce: - Enable multi-step routes in the settings - Inventory > Configuration > Warehouse Management > Operations types - Click on Manufacturing and put "Always" on create a backorder - Create a product P (no need for a bom) - Create and confirm a manufacturing order for 2 units of the product - Go to the barcode module > operations > manufacturing > the MO - Register only one unit of P and produce #### > A backorder is automatically created but you are redirected to
Original PR description
### Steps to reproduce: - Enable multi-step routes in the settings - Inventory > Configuration > Warehouse Management > Operations types - Click on Manufacturing and put "Always" on create a…
### Steps to reproduce: - Enable multi-step routes in the settings - Inventory > Configuration > Warehouse Management > Operations types - Click on Manufacturing and put "Always" on create a backorder - Create a product P (no need for a bom) - Create and confirm a manufacturing order for 2 units of the product - Go to the barcode module > operations > manufacturing > the MO - Register only one unit of P and produce #### > A backorder is automatically created but you are redirected to the backend. Note: If you were in "ask" on create backorder or if your product had a bom and you did not register the quantities of consumed components, a pop up would appear and resolving the pop up would redirect you to the kanban view of mrp.production in the barcode module. ### Cause of the issue: The `validate` method called by clicking will execute the action if the orm call returns one and adds an 'onClose' call to its options: https://github.com/odoo/enterprise/blob/661fd61c0f50d4bf80484227c92a3fd0b9a05c68/stock_barcode/static/src/models/barcode_model.js#L475-L482 https://github.com/odoo/enterprise/blob/661fd61c0f50d4bf80484227c92a3fd0b9a05c68/stock_barcode/static/src/models/barcode_model.js#L487-L492 If the action is a popup, the onClose method will be called once the pop up is resolved. However, if the action redirects you directly to the form view of the mrp.propduction the onClose method will not be triggered and you will not be redirected to the kanban view. ### Fix: As pop ups are the only actions that we really want to trigger during the validate call we exclude actions from the base models (stock.picking and mrp.production) to avoid any redirection to the backend. #### Follow up of commit 6915741 ## opw-3890886 Forward-Port-Of: odoo/enterprise#64850
## Changes in the pos_preparation_display/models/preparation_display_order.py: The previous code used to have low selectivity in the initial recordset returned by the search function. Then the records were filtered on their state inside the for loop which increased the number of get requests to view the order stages. This approach caused a bottleneck in the following situation: - All the records are in the done stage and will be processed to filter them out, but not viewed which takes a l
Original PR description
## Changes in the pos_preparation_display/models/preparation_display_order.py: The previous code used to have low selectivity in the initial recordset returned by the search function. Then the…
## Changes in the pos_preparation_display/models/preparation_display_order.py: The previous code used to have low selectivity in the initial recordset returned by the search function. Then the records were filtered on their state inside the for loop which increased the number of get requests to view the order stages. This approach caused a bottleneck in the following situation: - All the records are in the done stage and will be processed to filter them out, but not viewed which takes a lot of resources and no result in the end. - Some of the records are in the done stage, This would add an overhead to the processing of the function with irrelevant records to filter out the done orders. Solution: - Reduce the recordset being returned in the first place from the search function by adding filters to return only the ones in progress by running an `_read_group` function that returns the orders that do not have a completed stage in the current preparation display. This recordset is then added to the new orders that still do not have stages and are in the current preparation display as well. ## Changes in the pos_preparation_display/models/preparation_display.py: The previous code would process all the records to be in the done state even though they could be already done. This approach causes an issue in the following situation: - All the records are archived, but pressing on archive all again, processes all the records again with no benefit added. Solution: - Same as above, reduce the recordset to return the orders still in progress only. Also note that the reset was limited for 1000 records only and with the previous setup, pressing archive multiple times would result in the same processing over the same 1000 records, Which is why the limit was removed ## Benckmark | | Before| After| Orders done | Number of records |Speed up |---|----|-----|------|---------|--------- Time | 15 s | 12 s | No | 170k |1.25x Time | 6 s | 302 ms | yes| 170k |19x This speed up is because all of the records are archived and put in the done state thus not selected by the _read_group function in the first place. Under different circumstances the speed up would differ on the ratio between done and not done orders. But under the assumption that the number of orders on the display order at a single time, the speed up is considerable. ## Reference opw-3865664 Forward-Port-Of: odoo/enterprise#64669 Forward-Port-Of: odoo/enterprise#62996