Friday, April 3, 2020
40 changes · master
Enhancements to existing features
This update simplifies an internal code safety check by removing an outdated helper that is no longer needed with supported Python versions. It also makes the normal validation path slightly faster, improving core efficiency without changing user-facing behavior.
Original PR description
It's not necessary anymore as all supported Python versions implement
get_instructions, and inlining the usage of that is as readable as
calling _get_opcodes.
Also use the subset/superset predicate for validity testing instead of
difference as it's a fair bit faster:
❯ python3.8 -mtimeit -s 's1 = set(range(10)); s2 = set(range(5))' 's2 - s1'
5000000 loops, best of 5: 88.3 nsec per loop
❯ python3.8 -mtimeit -s 's1 = set(range(10)); s2 = set(range(5, 15))' 's2 - s1'
2000000 loops, best of 5: 159 nsec per loop
❯ python3.8 -mtimeit -s 's1 = set(range(10)); s2 = set(range(5))' 's1 >= s2'
5000000 loops, best of 5: 71.1 nsec per loop
❯ python3.8 -mtimeit -s 's1 = set(range(10)); s2 = set(range(5, 15))' 's1 >= s2'
5000000 loops, best of 5: 53.6 nsec per loop
we're paying double in the failure case but that doesn't super duper matter
because we're raising an exception and bailing out, the 24% gain on the
happy path seems more relevant.Archiving and restoring records now uses the standard business processes instead of directly changing visibility flags. This keeps related items in sync, such as surveys with badges and courses with slides, and improves CRM status tracking when opportunities are lost or restored.
Original PR description
Purpose of this merge is to call toggle_active or archive / unarchive methods instead of manually writing on active field. Indeed this allows to trigger business code related to archive / unarchive which is normally located in toggle_archive (called by action_archive and action_unarchive). We also improve some active-related behavior, notably * correctly cascade channel archive status to its slides; * cascade survey archive status to its certification badge; * fix opportunity lost / activated subtype in crm; See sub commits for more details. Task ID 2170708 Community PR #46563
Odoo’s internal cache handling was simplified by using a standard Python component designed for this kind of work. This reduces maintenance complexity and may improve performance slightly without changing user-facing features.
Original PR description
OrderedDict exists largely for the purpose of writing LRUs and such (it's one of the reason OrderedDict is not and will never be an alias for the insertion-ordered dict). Rebuilding LRU on OrderedDict: * significantly reduces the amount of code even ignoring the removal of iteration * might speed things up a bit (as CPython has a C implementation [since 3.5](https://bugs.python.org/issue16991)) Also removed the `iter*` methods: they're not used and they're not actually thread-safe as generator functions & methods immediately return when invoked, so the `@synchronized` only covers the creation of the generator not the actual iteration, they could be implemented safely by being completely eager (like `keys` was) or by using a proper context manager (but then I'm not quite sure what happens if we stop iterating before the end)
Odoo’s accounting and Latin American localization modules now use the newer invoice numbering approach instead of older sequence-specific logic. This keeps invoice document numbers consistent when journals or document types change, while preserving required controls for Argentina and updating related Chilean views and translations.
The debug tour dialog now lets users reset a guided tour back to its first step so it can be run again for onboarding or testing. The dialog is also easier to navigate, with testing tours separated and tours sorted with their sequence shown.
Original PR description
Task 2229909 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
The Argentina electronic invoicing module has been adapted to work with the latest Odoo version by removing older sequence-based numbering logic and using journal and AFIP data instead. This helps ensure invoices and debit notes start with the correct official numbers, improves AFIP consultation access, updates translations, and strengthens automated test coverage.
Miscellaneous changes
The registries were screwed up by: - `TestSelectionOndeleteAdvanced` in `test_new_api`, which was accidentally registering bad model classes in the module `test_new_api`, and prevented properly reloading the registry; - `TestViewsDuringModuleOperation` in `test_website`, which *upgrades* a module in the test, and confuses the old registry which is trying to set up its models. Forward-Port-Of: odoo/odoo#48896
Original PR description
The registries were screwed up by: - `TestSelectionOndeleteAdvanced` in `test_new_api`, which was accidentally registering bad model classes in the module `test_new_api`, and prevented properly reloading the registry; - `TestViewsDuringModuleOperation` in `test_website`, which *upgrades* a module in the test, and confuses the old registry which is trying to set up its models. Forward-Port-Of: odoo/odoo#48896
…ng the partner. - Create an invoice without partner. - Set a custom receivable account. - Set a partner. Before this commit, the account wasn't recomputated. -- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#48680
Original PR description
…ng the partner. - Create an invoice without partner. - Set a custom receivable account. - Set a partner. Before this commit, the account wasn't recomputated. -- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#48680
Since Bootstrap 4, a popover object does not have an `option` attribute, as it has been renamed to `config` instead. This occurrence must have been missed out when we migrated. Forward-Port-Of: odoo/odoo#48730
Original PR description
Since Bootstrap 4, a popover object does not have an `option` attribute, as it has been renamed to `config` instead. This occurrence must have been missed out when we migrated. Forward-Port-Of: odoo/odoo#48730
Go to a user form view and click on "Change Password" in the action menus. => traceback `Cannot read property 'constructor' of undefined` This error is raised because `active_domain: undefined` is in the context and py_eval can't handle an undefined value. -- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#48695
Original PR description
Go to a user form view and click on "Change Password" in the action menus. => traceback `Cannot read property 'constructor' of undefined` This error is raised because `active_domain: undefined` is in the context and py_eval can't handle an undefined value. -- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#48695
- Activate Multi UoM - Create a product P with 120 Units in stock - Create a SO for 1 Dozen 120 Dozens are expected in the forecast widget instead of 10 Dozens. This happens because the various product quantities are always expressed in the product UoM: https://github.com/odoo/odoo/blob/c95fad77ea5b4663130e256f76031560171f09e6/addons/stock/models/product.py#L190 We add a conversion when necessary. opw-2224335 Description of the issue/feature this PR addresses: Current beh
Original PR description
- Activate Multi UoM - Create a product P with 120 Units in stock - Create a SO for 1 Dozen 120 Dozens are expected in the forecast widget instead of 10 Dozens. This happens because the various product quantities are always expressed in the product UoM: https://github.com/odoo/odoo/blob/c95fad77ea5b4663130e256f76031560171f09e6/addons/stock/models/product.py#L190 We add a conversion when necessary. opw-2224335 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#48718
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#48699
Original PR description
Description of the issue/feature this PR addresses: Current behavior before PR: Desired behavior after PR is merged: -- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#48699
Go to inventory>product variants (list view), search for 'FURN_78236'. Set quantity on hand (qty_available) 50 Now, back in list view, adjust your search to FURN_7 QTY on hand for FURN_78236 is 0. This occur because during the computation of qty_available, the bom kits (FURN_78236) are calculated first, but the qty_available depends on the bom lines products, which are calculated only at the end. Since qty_available became protected by the global environment, it cannot be recomputed
Original PR description
Go to inventory>product variants (list view), search for 'FURN_78236'. Set quantity on hand (qty_available) 50 Now, back in list view, adjust your search to FURN_7 QTY on hand for FURN_78236 is 0. This occur because during the computation of qty_available, the bom kits (FURN_78236) are calculated first, but the qty_available depends on the bom lines products, which are calculated only at the end. Since qty_available became protected by the global environment, it cannot be recomputed recursively and it is not in cache, thus is 0. Making the simple products compute first in the _compute_quantity fix the issue opw-2226417 -- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#48717
In 3f4092d837d50d25d6c9630d84f67545cf586c7a, the SummernoteManager that was previously owned by RTE was removed, this was because the wysiwyg already has one. One problem with this however is that when an editor is created in an iframe, the wysiwyg is instanciated outside, while the editor is instanciated inside. This means that they don't have the same core.bus to listen for and trigger events, such as those used to open the various editor dialogs. This commit fixes that by always using t
Original PR description
In 3f4092d837d50d25d6c9630d84f67545cf586c7a, the SummernoteManager that was previously owned by RTE was removed, this was because the wysiwyg already has one. One problem with this however is that when an editor is created in an iframe, the wysiwyg is instanciated outside, while the editor is instanciated inside. This means that they don't have the same core.bus to listen for and trigger events, such as those used to open the various editor dialogs. This commit fixes that by always using the top-level core.bus when opening dialogs. This also has the advantage that the dialogs are no longer confined to the iframe and can take up the whole screen, making them more comfortable to use. Forward-Port-Of: odoo/odoo#48664
In a recent commit, we decided to change the image url format generated by the media-dialog to leverage browser caching using unique. Unfortunately, when saving an img tag to a binary field, the url parsing did not support this new url format, causing a traceback when changing the website logo and attempting to save. Forward-Port-Of: odoo/odoo#48725
Original PR description
In a recent commit, we decided to change the image url format generated by the media-dialog to leverage browser caching using unique. Unfortunately, when saving an img tag to a binary field, the url parsing did not support this new url format, causing a traceback when changing the website logo and attempting to save. Forward-Port-Of: odoo/odoo#48725
The `payment` module introduces a certain amount of payment acquirers, each one corresponding to a `payment_` module. When a `payment_` module is installed, this data is updated so that payments done with the corresponding acquirer change in behaviour using the provider installed by the `payment_` module. When a `payment_` module is uninstalled, this data should be reset to default, more especifically the `view_template_id` and the `provider` fields of `payment.acquirer`. This was
Original PR description
The `payment` module introduces a certain amount of payment acquirers, each one corresponding to a `payment_` module. When a `payment_` module is installed, this data is updated so that payments done…
The `payment` module introduces a certain amount of payment acquirers, each one corresponding to a `payment_` module. When a `payment_` module is installed, this data is updated so that payments done with the corresponding acquirer change in behaviour using the provider installed by the `payment_` module. When a `payment_` module is uninstalled, this data should be reset to default, more especifically the `view_template_id` and the `provider` fields of `payment.acquirer`. This was not possible before this commit, and more importantly it would make the uninstallation of such `payment_` module impossible as the `view_template_id` is a required m2o ondelete='set null', which will make the registry crash. Even if the former wasn't a problem, the provider field would remain set to a non-existing selection option, which would make the registry crash (eventually, when checking a record with such a selection option). With this commit, we reset these fields to their default value upon module uninstall. In 13, the issue with `view_template_id` should be fixed, as required m2o that are ondelete='set null' are no longer possible. As for the provider Selection field, a fix should arrive in master soon. opw-2225333 Forward-Port-Of: odoo/odoo#48794 Forward-Port-Of: odoo/odoo#48573
replace the "return" with "continue". What should have been done when the loop that was originally a "foreach" became a "for" loop. Forward-Port-Of: odoo/odoo#48880
Original PR description
replace the "return" with "continue". What should have been done when the loop that was originally a "foreach" became a "for" loop. Forward-Port-Of: odoo/odoo#48880
In 3f4092d837d50d25d6c9630d84f67545cf586c7a, the SummernoteManager that was previously owned by RTE was removed, this was because the wysiwyg already has one. One problem with this however is that when an editor is created in an iframe, the wysiwyg is instanciated outside, while the editor is instanciated inside. This means that they don't have the same core.bus to listen for and trigger events, such as those used to open the various editor dialogs. This commit fixes that by always using t
Original PR description
In 3f4092d837d50d25d6c9630d84f67545cf586c7a, the SummernoteManager that was previously owned by RTE was removed, this was because the wysiwyg already has one. One problem with this however is that when an editor is created in an iframe, the wysiwyg is instanciated outside, while the editor is instanciated inside. This means that they don't have the same core.bus to listen for and trigger events, such as those used to open the various editor dialogs. This commit fixes that by always using the top-level core.bus when opening dialogs. This also has the advantage that the dialogs are no longer confined to the iframe and can take up the whole screen, making them more comfortable to use. Forward-Port-Of: odoo/odoo#48664
This commit is a fine tuning of 348a5d0a6. It fixes the same issue but for larger screens with some themes (e.g. Orchid). When there are big button to chose the quantity, this padding is hiding the input's text. Another solution would be to remove `width: 50%` but I found that removing the padding is prettier. OPW-2220893 -- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#48710
Original PR description
This commit is a fine tuning of 348a5d0a6. It fixes the same issue but for larger screens with some themes (e.g. Orchid). When there are big button to chose the quantity, this padding is hiding the input's text. Another solution would be to remove `width: 50%` but I found that removing the padding is prettier. OPW-2220893 -- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#48710
The "Views > CalendarView > drag and drop on month mode with all_day mapping" test would fail regulary with "Found 2 elements to click on, instead of 1" because the drag and drop would be ongoing and the event would sometimes appear two times in the DOM when we try to click on the drag and dropped event. Forward-Port-Of: odoo/odoo#48928
Original PR description
The "Views > CalendarView > drag and drop on month mode with all_day mapping" test would fail regulary with "Found 2 elements to click on, instead of 1" because the drag and drop would be ongoing and the event would sometimes appear two times in the DOM when we try to click on the drag and dropped event. Forward-Port-Of: odoo/odoo#48928
Install project,sale_management,industry_fsm Create a new product with: - Product type: service - Service Invoicing Policy: Timesheets on tasks - Service Tracking: Create a task in sales order's project - Project Template: Field Service Save, then edit also Field Service chaning Bill from Tasks to the new product Create a sale order with such product, save and confirm Error Message "An FSM project must be billed at task rate" will popup blocking the action. This is due to changes int
Original PR description
Install project,sale_management,industry_fsm Create a new product with: - Product type: service - Service Invoicing Policy: Timesheets on tasks - Service Tracking: Create a task in sales order's project - Project Template: Field Service Save, then edit also Field Service chaning Bill from Tasks to the new product Create a sale order with such product, save and confirm Error Message "An FSM project must be billed at task rate" will popup blocking the action. This is due to changes introduced in 071711bf1db82ae7fc65dcc1292da6ef82278168 (enterprise commit), new fsm projects should not have a sale order line, instead rates are derived from the tasks opw-2220184 -- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#48899 Forward-Port-Of: odoo/odoo#48500
- Create a MO for a product tracked by S/N - Perform the MO - Print the 'Finished Product Label (PDF)' The barcode printed is `False`. If the S/N is not set on the `move_line`, we should fall back on `lot_id.name`. opw-2228337 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#48930
Original PR description
- Create a MO for a product tracked by S/N - Perform the MO - Print the 'Finished Product Label (PDF)' The barcode printed is `False`. If the S/N is not set on the `move_line`, we should fall back on `lot_id.name`. opw-2228337 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#48930
PURPOSE Provide fixes for event application in order to fix 13.3 changes. SPECIFICATIONS See sub commits for more details. Globally fixes are related to start and end dates, as well as sold out computation. * include timezoned event date_end in registration open computation; * ensure event_registrations_open can always be computed; * better sold out computation and display; * improve backend views and help strings; * add some test for is_ongoing with timezones; * re
Original PR description
PURPOSE Provide fixes for event application in order to fix 13.3 changes. SPECIFICATIONS See sub commits for more details. Globally fixes are related to start and end dates, as well as sold out computation. * include timezoned event date_end in registration open computation; * ensure event_registrations_open can always be computed; * better sold out computation and display; * improve backend views and help strings; * add some test for is_ongoing with timezones; * remove unnecessary copy=True added while converting fields; LINKS Task ID 2228189 Forward-Port-Of: odoo/odoo#48652
activity_type_id is a related field on the first activity to do and should probably not be reset / forced to a value. It is probably some code coming from previous implementations of activities that were linked to crm only. Coming notably from 87e457158e83295a17761a1ea0d251ba87472596 and 42226de46ea0cb2ff93f8e34af323fb1d805fce0 . Forward-Port-Of: odoo/odoo#48946
Original PR description
activity_type_id is a related field on the first activity to do and should probably not be reset / forced to a value. It is probably some code coming from previous implementations of activities that were linked to crm only. Coming notably from 87e457158e83295a17761a1ea0d251ba87472596 and 42226de46ea0cb2ff93f8e34af323fb1d805fce0 . Forward-Port-Of: odoo/odoo#48946
In a form view, nodes with classnames "oe_read_only" (resp. "oe_edit_only") are only visible in readonly (resp. edit) mode. Moreover, fields inside a group automatically have an associated label. Before this commit, when one of these classnames was set on a field node inside a group, the effect wasn't applied on its label, so the label was always visible, even if the field was hidden. Bug reported in PR odoo/odoo#48699 Description of the issue/feature this PR addresses: Current
Original PR description
In a form view, nodes with classnames "oe_read_only" (resp. "oe_edit_only") are only visible in readonly (resp. edit) mode. Moreover, fields inside a group automatically have an associated label. Before this commit, when one of these classnames was set on a field node inside a group, the effect wasn't applied on its label, so the label was always visible, even if the field was hidden. Bug reported in PR odoo/odoo#48699 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#48950
Avoid logging an error in the logs for an operation that is not an error: if the extension already exists, this is a success. Forward-Port-Of: odoo/odoo#48933
Original PR description
Avoid logging an error in the logs for an operation that is not an error: if the extension already exists, this is a success. Forward-Port-Of: odoo/odoo#48933
Optimize the installation of a database. The overall time speedup for an installation from scratch is around 30%. Note that simply *loading* a registry is also 30% faster. Summary of queries saved on a full installation: - community: 330495 → 198674 (-40%) - enterprise: 598779 → 348624 (-41%) Forward-Port-Of: odoo/odoo#48705
Original PR description
Optimize the installation of a database. The overall time speedup for an installation from scratch is around 30%. Note that simply *loading* a registry is also 30% faster. Summary of queries saved on a full installation: - community: 330495 → 198674 (-40%) - enterprise: 598779 → 348624 (-41%) Forward-Port-Of: odoo/odoo#48705
### Issue - Install Forums - Create a post (name = test) - Add an answer - Check your profile > answers You have an answer named "Re: test" - Edit the answer - Check again "Re: test" disappeared, it's a blank line now ### Cause When editing the answer, we do not pass a name So if we do name = kwargs.get('name') => None ### Solution Pass the name to the vals if it exists OPW-2227418 -- I confirm I have signed the CLA and read the PR guidelines at www
Original PR description
### Issue
- Install Forums
- Create a post (name = test)
- Add an answer
- Check your profile > answers
You have an answer named "Re: test"
- Edit the answer
- Check again
"Re: test" disappeared, it's a blank line now
### Cause
When editing the answer, we do not pass a name
So if we do name = kwargs.get('name') => None
### Solution
Pass the name to the vals if it exists
OPW-2227418
--
I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Forward-Port-Of: odoo/odoo#48878Unexpectedly, it sometimes happen in runbot tests that sales order lines are opened in readonly mode when the sales order is in edit mode. The SO lines modal shouldn't open at all in SO edit mode because the lines are editable inline. -- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#48955
Original PR description
Unexpectedly, it sometimes happen in runbot tests that sales order lines are opened in readonly mode when the sales order is in edit mode. The SO lines modal shouldn't open at all in SO edit mode because the lines are editable inline. -- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#48955
Following 889dd9245, there is still a qunit test that randomly crash. Forward-Port-Of: odoo/odoo#48972
Original PR description
Following 889dd9245, there is still a qunit test that randomly crash. Forward-Port-Of: odoo/odoo#48972
Unlinking a return line is convenient and should be allowed for stock user. Note that the same functionality could be achieved by setting the quantity to 0 on the line. related to 65530dfd6a0486f44134917f5cc42a2c30b95762 Forward-Port-Of: odoo/odoo#48644
Original PR description
Unlinking a return line is convenient and should be allowed for stock user. Note that the same functionality could be achieved by setting the quantity to 0 on the line. related to 65530dfd6a0486f44134917f5cc42a2c30b95762 Forward-Port-Of: odoo/odoo#48644
Since this commit: 7bd2083 the space between the systray and the app is bigger than in 13.0. 10px is the value used in 13.0 on ".o_apps". In this case, "div:first-chil" represents ".o_apps" too and this value should remain the same. Task ID: 2210396 Forward-Port-Of: odoo/enterprise#9185
Original PR description
Since this commit: 7bd2083 the space between the systray and the app is bigger than in 13.0. 10px is the value used in 13.0 on ".o_apps". In this case, "div:first-chil" represents ".o_apps" too and this value should remain the same. Task ID: 2210396 Forward-Port-Of: odoo/enterprise#9185
- Install MPS and activate subcontracting - Create a Subcontracted product P, set a Subcontracted BOM and a supplier - Add P to the MPS - Show 'Actual Replenishment' - Add some quantity to the first week, Replenish - Validate the PO The 'Actual Replenishment' doesn't show the quantity validated on the PO. This happens because the `stock.move` domain doesn't take into account internal locations, only vendor locations. Since the subcontracting location is an internal location, the
Original PR description
- Install MPS and activate subcontracting - Create a Subcontracted product P, set a Subcontracted BOM and a supplier - Add P to the MPS - Show 'Actual Replenishment' - Add some quantity to the first week, Replenish - Validate the PO The 'Actual Replenishment' doesn't show the quantity validated on the PO. This happens because the `stock.move` domain doesn't take into account internal locations, only vendor locations. Since the subcontracting location is an internal location, the quantity is not counted. We take into account internal locations if they are not in the warehouse. This way, it takes into account subcontracting. Note that resupplies from another warehouse use `transit` location usage, so they are not impacted. However, direct transfers between 2 warehouses are now taken into account. opw-2220850 Forward-Port-Of: odoo/enterprise#9647
### Issue - Install Accounting & Batch Payment - Accounting => Customers => Create 30-40 payments - Account => Customers => Batch Payments - Create a batch payment and add all your payments - Print the batch payment There is a table with 20 elements and another with 8 elements on the first page Then it continues on the second page. It should be 1 table 1 page ### Cause The page can contain more elements ### Solution Increase the limit of payments per page
Original PR description
### Issue - Install Accounting & Batch Payment - Accounting => Customers => Create 30-40 payments - Account => Customers => Batch Payments - Create a batch payment and add all your payments - Print the batch payment There is a table with 20 elements and another with 8 elements on the first page Then it continues on the second page. It should be 1 table 1 page ### Cause The page can contain more elements ### Solution Increase the limit of payments per page to 30 **OPW-2224281** Forward-Port-Of: odoo/enterprise#9642
The one with the module category is a nice to have, but why the heck not. Forward-Port-Of: odoo/enterprise#9631
Original PR description
The one with the module category is a nice to have, but why the heck not. Forward-Port-Of: odoo/enterprise#9631
related to https://github.com/odoo/odoo/pull/48705 A fix for a bug revealed by the branch on community. Forward-Port-Of: odoo/enterprise#9580
Original PR description
related to https://github.com/odoo/odoo/pull/48705 A fix for a bug revealed by the branch on community. Forward-Port-Of: odoo/enterprise#9580
Install project,sale_management,industry_fsm Create a new product with: - Product type: service - Service Invoicing Policy: Timesheets on tasks - Service Tracking: Create a task in sales order's project - Project Template: Field Service Save, then edit also Field Service chaning Bill from Tasks to the new product Create a sale order with such product, save and confirm Error Message "An FSM project must be billed at task rate" will popup blocking the action. This is due to changes int
Original PR description
Install project,sale_management,industry_fsm Create a new product with: - Product type: service - Service Invoicing Policy: Timesheets on tasks - Service Tracking: Create a task in sales order's project - Project Template: Field Service Save, then edit also Field Service chaning Bill from Tasks to the new product Create a sale order with such product, save and confirm Error Message "An FSM project must be billed at task rate" will popup blocking the action. This is due to changes introduced in 071711b (enterprise commit), new fsm projects should not have a sale order line, instead rates are derived from the tasks opw-2220184 Forward-Port-Of: odoo/enterprise#9627 Forward-Port-Of: odoo/enterprise#9529
…ours Before this commit: User was used to find timesheets and the sum of hours is effective hours. But it doesn't make sense to use the user to search timesheet as all planning application is based on employee. And if an employee has no user, in effective hours, we will have the sum of all timesheets that belong to employee without user. After this commit: We use employee to find timesheets. Forward-Port-Of: odoo/enterprise#9622
Original PR description
…ours Before this commit: User was used to find timesheets and the sum of hours is effective hours. But it doesn't make sense to use the user to search timesheet as all planning application is based on employee. And if an employee has no user, in effective hours, we will have the sum of all timesheets that belong to employee without user. After this commit: We use employee to find timesheets. Forward-Port-Of: odoo/enterprise#9622
opw-[2224140](https://www.odoo.com/web#active_id=2224140&cids=1&id=2224140&model=project.task&menu_id=) The depreciation board and the asset report where not correcly taking into account that some entries might have been reversed. Those amount should not be taken into account. Forward-Port-Of: odoo/enterprise#9483
Original PR description
opw-[2224140](https://www.odoo.com/web#active_id=2224140&cids=1&id=2224140&model=project.task&menu_id=) The depreciation board and the asset report where not correcly taking into account that some entries might have been reversed. Those amount should not be taken into account. Forward-Port-Of: odoo/enterprise#9483
When posting a sdd payment, if no sdd mandate can be found an error message is triggerd. This message included the payment name. But the name is not set at that moment. Message was : "Unable to post payment 'False' due to no usable mandate being available at date...". Removed name form message. Task: 2228538 Forward-Port-Of: odoo/enterprise#9607 Forward-Port-Of: odoo/enterprise#9572
Original PR description
When posting a sdd payment, if no sdd mandate can be found an error message is triggerd. This message included the payment name. But the name is not set at that moment. Message was : "Unable to post payment 'False' due to no usable mandate being available at date...". Removed name form message. Task: 2228538 Forward-Port-Of: odoo/enterprise#9607 Forward-Port-Of: odoo/enterprise#9572