Commit Graph
73 Commits
Author SHA1 Message Date
Thibault Libioulle efb0fca0c8 [REF] website_sale: factorize tax computation in combination info
This commit factorizes price computation in combination info to avoid
code duplication.

task-2382027
2022-04-14 14:33:23 +02:00
Thibault Libioulle 1518cd6ef9 [IMP] website_sale_{comparison,wishlist}: disable quick add to cart
This commit handles the disabling of the add to cart button optionnally.

task-2382027
2022-04-14 14:33:23 +02:00
Thibault Libioulle 3880bee744 [IMP] {,website_}sale_product_configurator: add hooks
This commit adds hooks to improve inheritability capabilities.

task-2382027
2022-04-14 14:33:23 +02:00
Thibault Libioulle c1ddbe2704 [IMP] website_sale_stock{,_product_configurator,wishlist}: add hooks
This commit adds hooks to give more flexibility and modularity.

It allows inherited modules to give their own definition of the cart
quantity and free quantity, which may be business specific (like for
rentals).

It also takes advantage of the definition of shop_warning in the
website_sale module.

This commit fixes a glitch when the wishlist message is displayed too
fast, faster than the stock message. The message is removed by the
promise in VariantMixin, _onCombinationChangeStock.

task-2382027
2022-04-14 14:33:23 +02:00
Thibault Libioulle a0e6ffc7dd [IMP] website_sale: improve inheritability on cart updates
This commit adds hooks to give more flexibility on cart updates. It
allows to add parameters when a product is added to a cart. It gives a
method to disable the quick add and multiple hooks for further smooths
developments.

task-2382027
2022-04-14 14:33:23 +02:00
Thibault LibioulleandVictor Feyens a7f30ce917 [IMP] product,sale: factorize price methods to improve inheritability
This commit adds an higher flexibility to pass optional args through the
price computation methods.

Those optional kwargs offer the opportunity to tune the price
computation, especially to tune the price_compute method on
ProductProduct and ProductTemplate.

On sale order line models, one can define some fields that should be
passed to the price_compute method in order to tune it.

task-2382027

Co-authored-by: Victor Feyens <vfe@odoo.com>
2022-04-14 14:33:23 +02:00
Thibault Libioulle 7ac5ffa8aa [IMP] product: factorize contextual price
This commit factorizes contextual price in order to ease further
inheritance.

task-2382027
2022-04-14 14:33:22 +02:00
Thibault LibioulleandAntoine Vandevenne 4cdc00f418 [FIX] payment_stripe: turn credentials helper methods into functions
This commit removes the access to stripe credentials through model
helper methods.

closes odoo/odoo#87972

X-original-commit: 61faa2b32880d60c8cfb7c7761cd313383c26a0b
Signed-off-by: Antoine Vandevenne (anv) <anv@odoo.com>
Signed-off-by: Thibault Libioulle (tle) <tle@odoo.com>
Co-authored-by: Antoine Vandevenne (anv) <anv@odoo.com>
2022-04-05 15:17:31 +02:00
Thibault Libioulle 55a6f2e996 [FIX] web_editor: catch errors during save and allow to fix it
Prior to this commit, when an exception occured during the save of an
ir.ui.view, the traceback was shown to the user and an alert directly
asks the user to reload or cancel the page.

While reloading, the changes that produced the traceback were not saved
and the other modifications were saved.
If the user choose to cancel the reload, the web editor UI was freezed
and there couldn't be any edition anymore.

This commit adds correctly the popover to target the invalid element and
shows the error rather than reloading the page.
The element which caused the error can still be edited. The other are no
more editable.

task-2700198

closes odoo/odoo#87350

X-original-commit: 10b97f37ab5d78b3a2b0f63fa019ee95bb78ea7d
Signed-off-by: Yannick Tivisse (yti) <yti@odoo.com>
Signed-off-by: Thibault Libioulle (tle) <tle@odoo.com>
2022-03-29 18:21:51 +02:00
Thibault Libioulle 6a41d1ee2d [FIX] website_sale,web_editor: fix website sale tour
This commit fixes some inconsistencies in the website_sale tour:
- The step "Upload an image" is removed;
- The tip position of the Product Name step is placed above the field
rather than on the rightside to avoid a horizontal scrollbar.

The "No product defined" text position is improved for empty searches.

task-2700198

X-original-commit: d0600df28e6f646134529c6073c435bdd864bfa9)
Part-of: odoo/odoo#87350
2022-03-29 18:21:51 +02:00
Thibault Libioulle 2e7cc0d82f [IMP] payment{,_stripe},{,website_}sale: clean up stripe connect code
This commit removes deprecated actions and methods kept after the merge
of PR #79621 in stable.

Follow-up
task-2685160

closes odoo/odoo#84789

Related: odoo/upgrade#3256
Related: odoo/enterprise#25369
Signed-off-by: Thibault Libioulle (tle) <tle@odoo.com>
2022-03-29 08:57:43 +02:00
Thibault Libioulle a423289419 [FIX] web_editor,website_sale: fix click on pricelist while editing
Prior to this commit, when a user edits the Shop page, clicks on the
pricelist dropdown and finally clicks elsewhere, a traceback occurs:
`Uncaught TypeError: Cannot read properties of undefined (reading
'getColorNames')`

This commit ensures the link tools is not toggles on dropdown links,
i.e. the customizable links selector does not contain the dropdown
anymore.

task-2695091

closes odoo/odoo#87300

X-original-commit: 73b98a53e8bd19b3b96502d6006b002819287e44
Signed-off-by: Yannick Tivisse (yti) <yti@odoo.com>
Signed-off-by: Thibault Libioulle (tle) <tle@odoo.com>
2022-03-28 09:50:36 +02:00
Thibault Libioulle d77e7f9472 [IMP] website_sale: keep the cart quantity up-to-date
This commit updates the cart quantity even if the html page comes from
browser cache, i.e. the user comes back to a previous page with the
browser back method.

task-2741846

closes odoo/odoo#84861

Signed-off-by: Yannick Tivisse (yti) <yti@odoo.com>
2022-03-25 12:39:46 +01:00
Thibault Libioulle 94ea3990a1 [REM] sale_timesheet: remove profitability report views
Prior to this commit, profitability report views aren't accessible
anymore for a user since no more actions related to this report exists.

This commit removes those unused views in order to have a clean code
base.

Pr: #77024
Related: odoo/upgrade#3150
Related: odoo/enterprise#23264
Signed-off-by: Laurent Stukkens (ltu) <ltu@odoo.com>
2022-03-10 18:19:52 +00:00
Thibault Libioulle e315087850 [REM] project: remove invisible field in graph
This commit removes dead field, as invisible fields are unused in the
graph views.

See also #77013

Part-of: odoo/odoo#77024
2022-03-10 18:19:51 +00:00
Thibault Libioulle fe3981983e [FIX] payment_stripe: fix stripe webhook url
Prior to this commit, the url build using the concatenation between the
base url and the webhook url path produced a wrong url with two
consecutive slash.

This commit prevent from building a wrong url, using the url_join api
method.

In the commit d3f4619b , the base url was fixed but there was a
remaining url-join error.

Original commit: 4296b2653

closes odoo/odoo#86073

X-original-commit: 8b4d7fa3ae9d470bd12d5c09d6270a637311c0c4
Signed-off-by: Antoine Vandevenne (anv) <anv@odoo.com>
Signed-off-by: Thibault Libioulle (tle) <tle@odoo.com>
2022-03-09 09:24:06 +00:00
Thibault Libioulle 38b3fe7e51 [FIX] payment_stripe: fix base url for webhook url
This commit fixes the webhook base url to use the override defined in
the payment acquirer model.

It ensures the base url follows the same logic as the success and cancel
urls defined in the `checkout/sessions` request payload.

closes odoo/odoo#85558

X-original-commit: d3f4619b731d71ccd2af26b9fa148d2957773680
Signed-off-by: Antoine Vandevenne (anv) <anv@odoo.com>
Signed-off-by: Thibault Libioulle (tle) <tle@odoo.com>
2022-03-01 08:06:55 +00:00
Thibault Libioulle 1d85cabb50 [FIX] product,website_sale: fix contextual price on eCommerce
Prior to this commit the price in the product dynamic filter was not
correctly computed since the pricelist was not available in the context.

This commit provides a fallback on request website pricelist in order to
display a non-zero price if it exists.

task-2765828

closes odoo/odoo#85507

X-original-commit: 88bfd8a60cefac45e73cd032204c9b90a862ee6c
Signed-off-by: Yannick Tivisse (yti) <yti@odoo.com>
2022-02-28 13:53:32 +00:00
Thibault Libioulle c5198b0bab [IMP] payment{,_stripe},{,website_}sale: improve stripe onboarding
This commit lighten payment onboarding form in order to take advantage
of the Stripe Connect Onboarding Flow. It integrates the Stripe
Onboarding using the IAP proxy.

Purpose
=======
Help users easily onboard with Stripe by using the Stripe Connect API.

Specifications
==============
During the payment onboarding, if the user selects Stripe, they will
start the Stripe Onboarding. (NB: The process uses a proxy that handles
the Stripe Onboarding calls and signs them with the Stripe Connect key)
1) A call is made through the proxy to get the Stripe account token;
2) A call is made through the proxy to get the Stripe account link which
   contains the URL of the Onboarding;
3) The user is redirected to the Stripe Onboarding;
4) The user completes the Stripe Onboarding;
5) The user comes back to the acquirer form of Stripe and is able to get
   their keys.
6) The user can directly create their webhook after having copied/pasted
   their API keys.

During the website sale onboarding, the user doesn't go through the
onboarding wizard but is directly prompted to activate their account.

Note that the Onboarding status isn't stored in the database so there is
no call to Stripe API to validate the account status.

API Documentation :
- Connect Onboarding: https://stripe.com/docs/connect/standard-accounts
- Webhook creation: https://stripe.com/docs/api/webhook_endpoints/create

task-2685160
task-2691213

closes odoo/odoo#84639

X-original-commit: 085f4af4e57c43127413585a8df5b3aa47843339
Related: odoo/enterprise#24376
Signed-off-by: Yannick Tivisse (yti) <yti@odoo.com>
Signed-off-by: Thibault Libioulle (tle) <tle@odoo.com>
2022-02-15 16:51:24 +00:00
Thibault Libioulle ecd08f519f [FIX] website: fix matching of search term and fuzzy term
Prior to this commit, when a user searches with an upper case search
term of more than 3 characters, the search was considered as a fuzzy
search even if the result was an exact match.

Since the search is always lowered when there are more than 3
characters, the search is considered as fuzzy only when the search and
fuzzy term are case insensitively distinct.

closes odoo/odoo#84593

X-original-commit: 34362a7c07a2868103b24d16a83a97356ad1f60d
Signed-off-by: Romain Derie (rde) <rde@odoo.com>
2022-02-14 22:31:11 +00:00
Thibault Libioulle 54c5160264 [IMP] website_sale: search tag in product snippet
This commit adds a search on tag in product snippet.

task-2675384

closes odoo/odoo#79296

Signed-off-by: Yannick Tivisse (yti) <yti@odoo.com>
2022-01-17 14:07:46 +00:00
Thibault Libioulle 8011e171ff [IMP] *: add product tag model access
*: mrp,point_of_sale,purchase,sale,stock

This commit adds the product tag model access to accurate manager groups.

task-2675384

Part-of: odoo/odoo#79296
2022-01-17 14:07:46 +00:00
Thibault Libioulle 86353f9582 [IMP] website_sale: handle product tags
This commit handle product tags and adds the ability to easily define
ribbons, coupons or Dynamic Snippet for a given tag.

Purpose
=======

Product tags allow users to define a given coupon/promotion program on
chosen products templates or product variants.
Product tags allow users to easily add a common ribbon on product
templates which shares a tag.
Product tags allow users to easily define a Product Dynamic Snippet to
show product variants which uses the same tag as the current product
template.

task-2675384

Part-of: odoo/odoo#79296
2022-01-17 14:07:45 +00:00
Thibault Libioulle 5b64d252d2 [IMP] product: add product tag model
This commit adds the product tag model.

Purpose
=======

The product tags allows to easily tag given types of product
independently from their category, following their product range, their
seasonal collection, their theme, etc

Specification
=============

A product template takes tags that are valid for all their variants.
In order to add granularity, product variants can also take additionnal
tags.
A field is defined on product variants to allow searching on both
product template and product variant tags.

task-2675384

Part-of: odoo/odoo#79296
2022-01-17 14:07:45 +00:00
Thibault Libioulle 74624f43ee [REF] resource,hr{,_contract}: obtain calendar validity per resource
This commit adds methods to easily obtain calendar validity per resource
for a given search period and get the work intervals per resource,
taking into account the validity of their calendars.

In hr, the create and departure date of an employee are taken into
account to compute the calendars validity.

In hr_contract, it looks for every contract of human resources with
employee of type student or employee existing in the search period and
consider the specific calendar of the contract as valid during the
contract-lifetime.

PR: #77362

task-2646630
2021-11-30 12:20:47 +01:00
Thibault Libioulle be23e7436d [IMP] resource: speedup tests
This commit replaces the setUp method by a classmethod in order to speed
up the tests.

PR: #77362

task-2646630
2021-11-30 12:20:31 +01:00
Thibault Libioulle 6d41b7ec7e [IMP] resource: add the false key to work intervals batch
The False key is always added in attendance and leave intervals batch
but is not added in the work_intervals batch.

To give a more smooth API, this commit aligns work_intervals behavior
with the two other methods behavior, regarding the added False key.

Furthermore, we avoid to deal with a resource_list of two empty
recordsets, in the case where the resources parameter is None or empty
recordset.

PR: #77362

task-2646630
2021-11-30 12:20:31 +01:00
Thibault Libioulle e458ab7a06 [REM] project: remove unused data
Prior to this commit, the tasks_analysis information was added to the
panel data dict but never used clientside.

This commit removes this useless call to avoid a Traceback on large
projects, with lots of tasks (MemoryError).

task-2694765

closes odoo/odoo#80030

X-original-commit: 33446939e0cc625832de3b22661709508a01044a
Signed-off-by: Laurent Stukkens (ltu) <ltu@odoo.com>
2021-11-18 18:45:15 +00:00
Thibault Libioulle f2b13dd0ec [FIX] website{,_sale}: fix search product with several categories
This commit fixes an issue when there are several public categories on
a single product. Categories are shown side-by-side under product name
in the search bar.
This commit also fixes the issue where the `Category:X` text is matched
and highlighted whereas the search text is not used to match the product
categories.

Steps to reproduce :
    - Install eCommerce
    - Add several eCommerce Categories to a product
    - Go to shop
    - Search for the product in the searchbar
    - Traceback

Current Behavior :
    - Traceback when generating the results in the quick search bar.
      It's not expected to have several categories in the current
      implementation.
    - If all products have a unique category, then the text in
`Category:X` is matched and highlighted.

Desired Behavior :
    - No traceback
    - When there are multiple categories, an extra link should be
      present on each category rather than a unique link on all
      categories.
    - The product categories don't have to be matched.

Related PR: #79258
task-2680726

closes odoo/odoo#79363

Signed-off-by: Yannick Tivisse (yti) <yti@odoo.com>
2021-11-15 12:53:20 +00:00
Thibault Libioulle 2a6650dc81 [FIX] project: copy display_project_id of subtasks
Prior to this commit, when a subtask is copied through the recurrence,
it loses its display_project_id in the copied sub-tasks.

Current Behavior

The display project id is left empty.

Expected Behavior

The display project id is copied.

task-2672243

closes odoo/odoo#79290

X-original-commit: 758b1a2f233bccd7fe7ac73119c12c4152d68e21
Signed-off-by: Laurent Stukkens (ltu) <ltu@odoo.com>
2021-11-02 16:17:01 +00:00
Thibault Libioulle 95c16f35ce [FIX] project*: fix groups on computed field
*: account_sale_timesheet,
   project_hr_expense,
   project_mrp,
   project_purchase,
   sale_project_account

This commit fixes issue regarding fields in project form stat buttons.
Those fields are evaluated in any cases, and should rather be computed
only when the user has the right group.

Steps to reproduce :
1) Install project with one of this bridge
2) Connect with a user with only the group_project_admin right
3) Go to the form view
4) Issue:
An internal user with the group "Project Administrator" is unable to
access the form view of a project because of missing rights on the
X model.

Desired Behavior
================
The stat button should not be shown and the field not computed.

opw-2675514

closes odoo/odoo#78981

X-original-commit: 981bbf59d624c3a7bd22d6d7bf26c09e14835862
Related: odoo/enterprise#21889
Signed-off-by: Laurent Stukkens (ltu) <ltu@odoo.com>
2021-10-26 13:23:04 +00:00
Thibault Libioulle 16ac647544 [FIX] sale_timesheet: fix multiple issues in project profitability
This commit fixes multiple issues in project profitability report.

Steps to reproduce opw-2596224:
- Go to sale
- Make a RFQ for a service product with service_policy set at
delivered_timesheet (Timesheets on tasks), set quantity as 10
- Confirm order and create two invoices for 15%, confirm the two
invoices
- Create a credit note for one of the invoice and confirm it
- Go back to the Sale Order and click on Project Overview
=> Inconsistencies (Downpayment reported twice)
- Add an expense
=> Inconsistencies in expense amount untaxed invoiced
- Add timesheets
- Create an invoice from the SOL
=> Inconsistencies in Other costs, counting the downpayment.

This issue is fixed by :
- Excluding downpayments which are linked to a reversed invoice line
- Use expense amount to invoice and expense amount invoiced separetely
in the project overview.
- Do not report not invoiced SOLs in the expense amount invoiced.
- Exclude negative amounts in analytic account which are linked to
credit notes.
- Include all services and not timesheetes  SOLs linked to project,
project task or project's analytic account in the invoice/invoiced
subquery.
- Remove the unused downpayment column in the subqueries
- Remove unused subquery (relative to downpayment)

PR : #78230

opw-2596224
opw-2631163

X-original-commit: 69c5a55887d67b8852c7c45a52def38f3c742e7d
Part-of: odoo/odoo#78646
2021-10-21 06:28:51 +00:00
Thibault Libioulle bf6b2ae590 [FIX] project,hr_timesheet: fix hr timesheet graph extension
This commit fixes the broken inheritence between project and
hr_timesheet modules regarding the GraphView.

Hr Timesheet module extends GraphView rather than ProjectGraphView which
makes the view unaware it should use the ProjectControlPanel.

This commit adds project tour steps to ensure every view contains the
project update breadcrumb.

task-2642872

closes odoo/odoo#78503

X-original-commit: aa59771d3a4ffd2f7372c58bf56ca8dcc1183d2e
Signed-off-by: LTU-Odoo <IT-Ideas@users.noreply.github.com>
Signed-off-by: Thibault Libioulle (tle) <tlibioulle@users.noreply.github.com>
2021-10-18 07:56:34 +00:00
Thibault Libioulle 2d15f586fd [IMP] project: add test on recurring subtasks
This commit adds a test in order to strengthen the behaviour of
recurring subtasks.

This test asserts that child with depth > 3 are not copied in a
recurrence, that recurrent subtask are well copied with the recurrence
correctly set.

This commit prepares the recurrence refactoring.

task-2660756

closes odoo/odoo#77632

Signed-off-by: LTU-Odoo <IT-Ideas@users.noreply.github.com>
2021-10-04 09:16:13 +00:00
Thibault Libioulle 987023f3b5 [FIX] project: fix recurrence for child tasks
Previously, only the direct children of a recurrent tasks were copied
during a recurrence. Also, the child tasks which had a recurrence were
copied with the recurrence_id of the initial subtask, which lead the new
subtask to be linked with the recurrence of the initial subtask.

With this commit we copy the children until the 3rd layer. Also,
we hard copy the recurrence of the initial subtask and link this new
recurrence with the new subtask, to make it decoupled from the initial
subtask recurrence. Furthermore, if several initial subtasks has been
created with a same recurrence, only the first subtask is copied.

PR: #77126

task-2522076

X-original-commit: 808a965b4171a386f3987071c19cc27783ba0119
2021-09-28 15:40:16 +02:00
Thibault Libioulle 3b426db10a [REV] project: re-allow recurring sub tasks
With the modification introducted in the PR #62577, create recurring
subtask was no more allowed.

This commits reverts this limitation and adds tests to verify this
behaviour.

PR : #77126

task-2522076

X-original-commit: f6b12588757bd7f2d7802264fc7cd1aaae4c6c57
2021-09-24 20:23:49 +02:00
Thibault Libioulle 1455e34cd5 [FIX] project: remove default group by user
This commit removes the default group by User for the Tasks Analysis
report, which was active once one clicked on "Open Tasks" in the Project
Update Kanban view.

This commit also removes the default group by user in the graph view
(which is induced by the field in the graph arch, through graph view
init function).

Issue :
The graph view of report.project.task.user is not able to render the
project_id>user_id groupby since the number of rows to display is to
high.

After considering improvements client-side (e.g. drop last groupby
when there are too many datasets to render), we concluded that the case
of report.project.task.user is rather isolated. The real issue is that
this 'complex' two-level groupby is forced in the view itself, making
it unusable on larger databases (e.g. next.odoo.com).

On top of that, project_id and user_id are usually dependent dimensions
(users are usually working in the same few projects).

PR: #73299

task-2588087

closes odoo/odoo#77013

X-original-commit: 605b4e109afabaff0876ca92cecfce9a6c615977
Signed-off-by: LTU-Odoo <IT-Ideas@users.noreply.github.com>
2021-09-23 06:03:06 +00:00
Thibault Libioulle 9ed5f1e64d [IMP] project: sort updates by date
With this commit, project updates are sorted depending on their date
rather than the create date.

task-2638359
closes #76166

X-original-commit: b65edac046bb7fea649474d2282e0afa2d6f5703
2021-09-14 21:24:59 +02:00
Thibault Libioulle bf6f91eab9 [IMP] project: add dependent tasks stat button
This commit adds a stat button representing the number of dependent
tasks, the current task is blocking.

This is the inverse relation of "Blocked by".

task-2638359
closes #76166

X-original-commit: d841e4a7e25fd56c49c0cd3b51994a7fda4cbc8b
2021-09-14 21:24:58 +02:00
Thibault Libioulle 28836f48a4 [MOV] project: move the dependent_ids fields to community
This commit moves the project.task dependent_ids field to the community
project module in order to take advantage of this relation for further
development.

closes odoo/odoo#76011

Related: odoo/enterprise#20623
Signed-off-by: LTU-Odoo <IT-Ideas@users.noreply.github.com>
2021-09-06 14:36:08 +00:00
Thibault Libioulle 741663f9de [FIX] project: fix project update default
Prior to this commit, the case where the update status was not set is
not handled in the STATUS COLOR mapping.

This commit associate a lighten dark color to the unset update status.

See PR : #68899
See task-2393768

PR : #70527

task-2458135
2021-09-06 10:41:14 +02:00
Thibault Libioulle 22cd824772 [FIX] account: fix invoice count
Prior to this commit, the count distinct on move_id called in the read
group was not used correctly.

This commit uses the move_id:count_distinct result of the read_group,
which represents the number of distinct invoices.

See task-2469742

PR : #70527

task-2458135
2021-09-06 10:41:14 +02:00
Thibault Libioulle 8bbbc69e40 [IMP] sale{,_project}_margin: improve service product cost computation
Prior to this commit, the cost of a service product was computed based
on its standard_price.

With this commit, the product cost is computed based on the timesheet
amounts linked to the sale order, if the sale order has a delivering
method of type timesheet.

PR : #70527
See odoo/upgrade#2616

task-2458135
2021-09-03 12:45:58 +02:00
Thibault Libioulle dbbfce18a4 [IMP] hr{,sale}_timesheet: add employee mapping cost
Prior to this commit, the timesheet amount was computed based on the
employee timesheet cost.
The sale order line related to the employee was also required

This commit allows the project owner to configure a employee mapping
cost that will override the employee timesheet cost if defined.
This commit removes the fact that the sale order line is no more
required, thus the mapping will have no effect.

PR : #70527

task-2458135
2021-09-03 12:45:58 +02:00
Thibault Libioulle dd706ea024 [IMP] (sale_)project,hr_timesheet: add analytic account and tags on task
Previously, all costs allocated to a task were associated, if set, to
the analytic account of their project.

This commit adds a deeper level of granularity, as the user will be able
to override the project analytic account and add analytic tags.
When creating timesheets or creating account move line related to SO
linked to a task, the analytic account of the task is now taken into
account rather than the one defined on the project. If an analytic
account is set on the SO, it remains the default account used.

If a task is related to an SOL and an invoice line is created from this
SOL, the analytic tags of the task are also given to the account move
line.

If different analytic account are linked to a same SOL through the
project using this SOL or the tasks using this SOL, than no default
analytic account is set on the invoice line.

PR : #70527

task-2458135
2021-09-03 12:45:58 +02:00
Thibault Libioulle d4a0bcaa5a [IMP] sale_project: link project analytic account to invoice
Previously when a user added products to a task, when invoicing the
customer, in default case, no analytic account was defined on the
invoice line generated for the sale order line.

With this commit, we define a default analytic account based on the
information of the sale order line.
If the sale order line has a generated task or project associated to
it, we set the project analytic account.
If the sale order line is used on tasks or projects which all use the
same analytic account, then the invoice line created will take this
unique analytic account as default value.

If a sale order line is used in distinct project or tasks
from distinct project, then no default analytic account is defined.

PR : #70527

task-2458135
2021-09-03 12:45:58 +02:00
Thibault Libioulle 0caef93408 [IMP] hr_contract: add demo data
This commit adds demo data in hr_contract.

PR community : #75553

task-2559061
2021-08-30 16:47:49 +00:00
Thibault Libioulle 4f7d450cef [IMP] sale_project: move project stat button on SO
Prior to this commit, the project and task stat buttons were placed
before the invoice one.

After this commit, the project stat button will be placed before the
tasks stat button which will be before the sale order preview.

PR community : #75553
PR upgrade : odoo/upgrade#2777

task-2559061
2021-08-30 16:47:48 +00:00
Thibault Libioulle 8f7b965446 [IMP] sale_timesheet: reduce query count on project profitability
Prior to this commit, we queried the project profitability view in order
to have the total amount of timesheeted time.

With this commit, thanks to the fact that this value was only
retrieved in the view by subquerying analytic.account.line we can only
query the analytic.account.line in order to access information.
This allows us to query the project profitability report only when
required. Otherwise, only the analytic account line table is queried.

This commit was motivated by the performance issue fixed in PR : #72641

task-2555323

closes odoo/odoo#71873

Related: odoo/enterprise#18851
Signed-off-by: Yannick Tivisse (yti) <yti@odoo.com>
2021-08-23 13:21:24 +00:00
Thibault Libioulle 4968cc3444 [IMP] project,sale_timesheet: improve update views implememtation
This commit add various information in views, like name attribute, to
better handle extension.

It improves also the way the FormViewDialog is rendered in the project
right side panel, we no longer have to call willStart at each insertion
of the Form in the DOM since the form is rerendered automatically by
owl once the state changes.

Some click handlers now prevent propagation to ease the addition of
handlers for further needs.

task-2555323
2021-08-23 13:21:24 +00:00
Thibault Libioulle caa58cdc46 [FIX] sale_timesheet: fix wrong join condition
Prior to this commit, the account move line was not correctly joined,
and put in relation with SOL. Furthermore, this table isn't use.

In this commit we correctly join the subquery, in this subquery,
we just try to avoid to take into account amounts that are related
to invoiced sale order lines.

closes odoo/odoo#72710

X-original-commit: b04465d3514fe5cd52b7994962fe4069933ae6fd
Signed-off-by: LTU-Odoo <IT-Ideas@users.noreply.github.com>
2021-06-24 13:05:41 +00:00
Thibault Libioulle 441baf578e [FIX] project,{hr,sale}_timesheet: fix update description glitch
Prior to this commit, the spaces in the template were transformed into
non-breaking spaces by the html editor while editing the html field
content.
The unordered list with icons as list item also failed to be compatible
with the editor.

With this commit, we remove the indents in the templates to prevent this
behavior.
It now also uses the css class defined by the editor to generate the check
lists.

closes odoo/odoo#72571

X-original-commit: ce9c39125da9ebe3e19dbb325fc4488a8b689ad1
Signed-off-by: LTU-Odoo <IT-Ideas@users.noreply.github.com>
2021-06-22 17:18:57 +00:00
Thibault Libioulle 8e33f7cfaa [FIX] project: fix milestone form test
Previously, the step produced an owl error do to the fact that
FormViewDialogComponentAdapter parent component was not ready in the
view.

This commit adds a timeout, that waits the component to be completely
rendered.

Associated PR : #68899
Associated task : task-2393768

closes odoo/odoo#71605

Signed-off-by: LTU-Odoo <IT-Ideas@users.noreply.github.com>
2021-06-02 13:35:22 +00:00
Thibault Libioulle 2215e69dae [FIX] hr_timesheet: fix date issue in activity report
Before this commit, the date taken into account to retrieve people
activities in the project update description was the UTC date. The
activities just recorded with the context_today date wasn't taken into
account.

Failing unit tests during nightly build (when date UTC < date GMT+2):
- `TestProjectUpdateHrTimesheet.test_project_update_description_people`
"AssertionError: 0 != 1 : The number of recorded timesheet activities
is 1"
- `TestProjectUpdateHrTimesheet.test_project_update_form_people`
"AssertionError: False is not true : The description should contain
'People'"

This commit fixes the issue using the context_today(self) date as a
reference.

Fixes PR : #68899
task-2393768

closes odoo/odoo#71585

Signed-off-by: LTU-Odoo <IT-Ideas@users.noreply.github.com>
2021-06-02 07:40:37 +00:00
Thibault Libioulle 24cf962e52 [IMP] sale_timesheet: add project updates tests
This commit adds project update tests.

PR: #68899

task-2393768
2021-06-01 15:08:42 +02:00
Thibault Libioulle f63237523c [IMP] hr_timesheet: add project updates tests
This commit adds project update tests.

PR: #68899

task-2393768
2021-06-01 15:08:42 +02:00
Thibault Libioulle 0953b6a839 [IMP] project: add project updates tests
This commit adds project update tests.

PR : #68899

task-2393768
2021-06-01 15:08:42 +02:00
Thibault Libioulle 129b841d6c [IMP] sale_timesheet: extend project update
This commit adds information in project update based on sale_timesheet models.

In the Project Right Panel, a profitability section is added with data
from the profitability report.
In the project update description a profitability section is also added
with data from account analytic lines or profitability report.

PR : #68899

task-2393768
2021-06-01 12:16:27 +02:00
Thibault Libioulle ebe8418f26 [IMP] hr_timesheet: extend project update description
This commit adds content in the default project update description.

The informations added are related to the timesheeted time on project or
project tasks.

PR : #68899

task-2393768
2021-06-01 12:16:27 +02:00
Thibault Libioulle e48be257e1 [IMP] project: add rightpanel in project update view
This commit adds a right panel in the project update view.

This is done by extending each View and Controller by mixins handling
the RightPanel functionnality.
In the RightPanelControllerMixin, we use the component Adapter to launch
the Owl RightPanel Component from a Legacy Controller.
This solution is based on SearchPanel and ControlPanel implementation.
In the RendererMixin we handle some styling just as it's done for the
SearchPanel.
In the ViewMixin, we add the handling of a RightSidePanel config
parameter which is passed to the Controller via params.

The Project RightPanel Component gets information about the active
project in the context through a rpc call and render the resulting data
in a owl template. This template doen't have the ambition to be generic
but only specific to this view.

Serverside, the data are collected in a dict through few methods in
order to be easily extended.

Mixins are used in kanban and list views, each time a project update
view is added, the developper will have to extend the dedicated View,
Renderer and Controller.

PR: #68899

task-2393768
2021-06-01 12:03:55 +02:00
Thibault Libioulle c92673c10e [IMP] project: add control panel button for project updates
This commit aims to add a button in the control panel to easily display
the current project update status.

This is done by extending ControlPanel Component and template.

We must add a context value `show_project_update` to enable the
button in the breadcrumb and it's done only once; e.g. when we click to
see all project tasks of an active project.

The button redirects to a kanban list view of the project_updates.

The activity rng is modified in order to accept js_class definition.

Following commits will add behaviour to handle those updates and
milestones in the various views. See PR for further information.

PR : #68899

task-2393768
2021-06-01 12:02:57 +02:00
Thibault Libioulle c5cac92280 [IMP] project: add project updates and milestones
This commit adds project updates in project to take in stock the current
status of the project : which task or milestone changed in the past 30
days.

The project manager is able to add a status on the project update, and
edit the description of the update. There is also a chatter in which
he/she can discuss some points with other project users.

The description is build with informations retrieved from mail tracking
values or from project.* models. Those informations are collected in a
dict and rendered in a template to ease the inheritence in further
modules needs.

Following commits will add behaviour to handle those updates and
milestones in the various views. See PR for further information.

PR : #68899

task-2393768
2021-06-01 12:01:37 +02:00
Thibault Libioulle 11f09c9930 [MOV] project: move widget to widget directory
PR : #68899

task-2393768
2021-06-01 11:59:52 +02:00
Thibault Libioulle faae0abe5c [REF] project: migrate js modules to es6
PR : #68899

task-2393768
2021-06-01 11:59:52 +02:00
Thibault Libioulle 64969cfccf [FIX] project: change default stage when changing project
Prior to this commit, the default stage didn't follow the value of the
display project id as the project_id was only updated after the write
call.

This commit makes the project_id to be updated after the display
project id changes.
This allows the default stage to be updated too once the onchange is
done.

Tests
---------------

This commit changes the behavior of a test making the use case more
smooth.
Previously, when a user removed both display project id and parent id
from a subtask, the project id was set to False. Now, if the display
project id is removed, the project id goes back to parent project, and
when the parent is set to False, it doesn't affect the display project.

PR: #50576

task-2522066

closes odoo/odoo#71029

X-original-commit: a908b9e8e6577bb7f8c8769db730c855fcad9504
Signed-off-by: LTU-Odoo <IT-Ideas@users.noreply.github.com>
2021-05-19 11:31:18 +00:00
Thibault Libioulle bc86a101a8 [IMP] project: add tests for subtasks
This commit adds tests concerning PR #62577.

Tests also address errors in PR #68647 and #69170.

PR #70576

task-2388034
task-2522066

X-original-commit: b76e277f03c881ce6fd4d92fc8c8fb3e0ab704ea
2021-05-19 11:31:17 +00:00
Thibault Libioulle b1f0e1a42a [REV] project: following a private project no longer required
This reverts commit odoo/odoo@7059b17.

This commit translates tests introduced in this reverted commit to be
aligned with the current workflow.

This commit reverts functionality or business logic linked to the
reverted commit :
- odoo/odoo#47248 : You no longer have to be an allowed user to see the
timesheets but only a message partner.
- odoo/odoo#49021 : We no longer deal with allowed_user_ids or
allowed_portal_user_ids
- odoo/odoo@f2a1a00 : We no longer deal with the allowed users lists.

This commit removes the button project_privacy_visibility for functional
reasons.

Closes: #65367
task-2439329

Related: odoo/upgrade#2128
Related: odoo/enterprise#16067
Signed-off-by: Yannick Tivisse (yti) <yti@odoo.com>
2021-04-09 12:12:54 +00:00
Thibault Libioulle 9e3ca57dfc [FIX] project: keep create enabled in dependent task
Prior to this commit:

Once the user clicked on View Task in the "Blocked By" task list, the
Create button in the form view of the targetted task is hidden. Also,
in the subtask notebook the user is not able to create additionnal
subtasks.

Reason:

In the action, the create argument is set to False.

After this commit:

We merge the two action_open_task and action_open_task_form into a
unique one. We remove the create set to false.

Related PR : #66740

closes odoo/odoo#68652

Signed-off-by: Yannick Tivisse (yti) <yti@odoo.com>
2021-04-01 14:10:39 +00:00
Thibault Libioulle b83dcc7231 [FIX] project: fix display_project_id initialization
Prior to this commit:

1) The display_project_id was not set if user created a task from the
form view.
2) The project_id followed the display_project_id once the
parent_id and display_project_id was modified and set to False

Reason:

1) The display_project_id was set to False in the vals and not overriden in
the create method.
2) The project_id always followed the display_project_id if the
display_project_id was modified.

After this commit:

1) The display_project_id follows the project_id if the task has no
parent_id.
The project_id follows the display_project_id if the task has a
display_project_id defined and a parent_id.
2) The display_project_id always follows its project_id if it has no
parent_id
The project_id always follows the display_project_id if set or the
parent_id.project_id if not and is changed only when the
display_project_id is modified.

task-2497080

closes odoo/odoo#68647

Signed-off-by: Yannick Tivisse (yti) <yti@odoo.com>
2021-04-01 12:34:40 +00:00
Thibault Libioulle 8bbf0e9e64 [IMP] project*: improve sub tasks workflow
We want to ease user experience regarding sub task creation and
management. We thus enforce the values of subtask stage, project and
parent task. we want to remove the ability of a user to choose a
third-party subtask project different than the actual one. Also, we want
to remove the ability to make one sub task recurrent. In general, We
want to improve and strengthen the relation parent-childs for Tasks. A
sub task is dependant of its parent all along the workflow.

This commit address those needs and, especially, removes the subtask
project configuration discussed in :
- odoo/odoo@66a0e5a
- odoo/odoo@b709e22

1) With this commit we want to change the way to link a subtask with its
project	for UI reasons, we want to be able to easily distinguish
subtasks that are linked to the project of their parent from subtasks
that are linked to another project. To do so, the idea is to create a
field display_project_id not required. Only relevant tasks are linked
to their project through this display_project_id, the other are linked
to their project only via project_id. As a result, domains in the
application are only based on the fact that tasks have
display_project_id. The other are simply hidden.

2) The number of subtasks is shown on kanban and list views with a
   wigdet to easily render it and extend the UI.

3) The default sub-task assignee is the assignee of the parent task.

4) Task form is modified to integrate those changes.

5) Various searches on project task are restricted with a clause where
display_project_id must be not null. Except in portal, in which context
we always display all tasks and subtasks.

PR community: #62577
PR enterprise: odoo/enterprise#15043
PR upgrade: odoo/upgrade#1984

task-2388034

Signed-off-by: Yannick Tivisse (yti) <yti@odoo.com>
2021-03-26 13:51:39 +00:00
Thibault Libioulle 86789e99ac [IMP] web: tune cond. to render optional col dropdown
This commit aims to allow ones to customize the condition whether the
optional column dropdown should be rendered or not.

PR enterprise : odoo/enterprise#15205
task-2392303

closes odoo/odoo#66979

Signed-off-by: Aaron Bohy (aab) <aab@odoo.com>
2021-03-18 14:56:04 +00:00
Thibault Libioulle 4196af9c03 [IMP] web_editor: open external links in new tab
This commit aims to force to open in a new tab out-of-domain hyper-links
in backend html fields.

Previously:
When a user adds a link in an html backend field, the user is free to
choose if the link will open in a new tab or not with a check box.

After this commit:
When a user adds a link in an html backend field, this link opens a new
window if those two conditions are met:
    - The url doesn't begin with the current location origin;
    - The url doesn't begin with a "/", i.e. an internal link
      that has been stripped.

The user doesn't have the check box option.

Remark:
This doesn't affect previously added links BUT if a previously added
link is opened in a LinkDialog, it will be re-rendered following the
conditions hereabove.

Part of https://github.com/odoo/odoo/pull/64622
task-2377544

closes odoo/odoo#64622

Signed-off-by: Quentin Smetz (qsm) <qsm@odoo.com>
2021-03-03 13:46:06 +00:00
Thibault Libioulle 33efcabf93 [IMP] pad: open external links in new tab
This commit aims to change the behaviour of <a> links in readonly pad
widgets.

If the <a> redirects to a page that isn't in the domain (hostname
different of the current location hostname), we open it in a new
browser tab by adding a target.

Limitation: If you use the collaborative pad for a while and then
go back to a web editor html field, you'll have to edit each link
in order that the link opens a new tab by clicking on it.

Part of https://github.com/odoo/odoo/pull/64622
task-2377544
2021-03-03 13:45:18 +00:00