Commit Graph
161 Commits
Author SHA1 Message Date
Odoo's MergebotandLaurent Stukkens f203fd4130 [MERGE] *_project, *_timesheet: Improvements in Services Apps
Purpose
=======

This PR is in continuity of #62360 and #62900 done in 14.0.
The goal of this PR essentially updates and improves the changes done in 14.0.

## Details

- Remove the context key added in 14.0 to keep the 'Create Sale Order' button in task and helpdesk.ticket. Because at the end we remove this button in these models.
- Remove non_allow_billable field in tasks and timesheets.
- Remove the partner_email from task form view.
- Remove timesheet_product_id from task form view
- Merge sale_timesheet_edit module with sale_timesheet module.
- Remove timesheet table in portal sales order and invoice (deprecated templates in #62900).
- Remove override of project kanban controller (deprecated file from #62360).
- Store remaining_hours field in sale.order.line model (this field has been introduced in the following PR #62900).
- Remove _onchange_task_id_employee_id, the process in the method is done in _compute_so_line.
- Merge bill_type and pricing_type in project.project.
- Move partner_id field in project form view.
- Remove value selected in SO and SOL in project if the customer does not fit with the SO selected.
- Changes SOL in mapping when the pricing type of the current project is "employee rate" if the customer changes.
- Hide the timesheet_product_id field if the project is not a fsm project.
- Move sql constraint for timesheet_product_id in industry_fsm_sale, because this field is no longer mandatory in project which is not fsm project.
- Changes the search of timesheets in portal > timesheets.
    - we allows the user to search with name of SO and invoice to find the timesheets about the wanted SO or invoice rathan than the id of SOL and invoice.
- Move View Timesheets button in portal > invoice
- Remove deprecated codes.
- Miscellaneous fixes.

Task-2424382

closes odoo/odoo#64474

Signed-off-by: Yannick Tivisse (yti) <yti@odoo.com>
Co-authored-by: Laurent Stukkens (LTU) <ltu@odoo.com>
2021-01-20 12:04:32 +01:00
Xavier BOL (xbo)andLaurent Stukkens 3378ca8252 [IMP] hr_timesheet: use access rights if user is internal
Before this commit, when the user can only see his own timesheets, this
user can see more than his own timesheets in timesheets portal
(/my/timesheets). It is because we use the domain defined for portal and
we don't use the access rights defined for this intenal user.

This commit uses the access right if the user has the lowest group for
Timesheet App. Otherwise, we use the domain for portal as before.

Co-authored-by: Laurent Stukkens (LTU) <ltu@odoo.com>

task-2424382
2021-01-14 09:02:39 +01:00
Francois (fge) 568fe91341 [FIX] project: fix various bugs
Restore Project Kanban view for mobile.
Added a name for the default stage of the tasks in the Internal project
Removal of redundancy for the creation of the Internal project and its tasks
Fix task_reccurrence for the type 'after'. (too much task created or bad task created)

Task-2326258

closes odoo/odoo#64607

Signed-off-by: Yannick Tivisse (yti) <yti@odoo.com>
2021-01-15 12:20:54 +00:00
Kevin Baptiste fce463ca5b [FIX] hr_timesheet: trigger compute on project_id / task_id
Before this commit the fields project_id and task_id on
account.analytic.line were sharing the same compute method which was not
triggered when one of those fields were changed.

Here the fields get their very own compute method.

closes odoo/odoo#63043

Taskid: 2389727
X-original-commit: bb1611fef1d1e78b3c38e92d40c31fa915128295
Related: odoo/enterprise#15192
Signed-off-by: Yannick Tivisse (yti) <yti@odoo.com>
2020-12-08 15:40:49 +00:00
Adrian Torres 679185f3e8 [IMP] *: replace all raises inside unlink by api.ondelete
With this commit, all instances of errors being raised inside
`BaseModel.unlink` overrides are moved into methods decorated with
`api.ondelete` which is safer.
2020-12-04 09:16:16 +00:00
Victor Feyens ab76c421c2 [IMP] uom: protect/warn against uom changes/deletion
1) forbid deletion of main uoms & categories

2) warn modifications of main uoms data.
Except for the working Hours uom, which isn't a strict UoM
representation and could change between countries (and/or be deleted).

3) Also move the Dozen UoM to demo datas, it's a confusing UoM and isn't
used by the majority of databases.

4) Restrict deletion of used uoms on main models.
On sale orders and account moves the uoms couldn't be deleted thanks to the
SQL constraint covering the display_type logic, but the generic error message
is more clear for a user when deleting an uom.
2020-11-27 16:10:01 +00:00
Dominik Rubo f4c1f54223 [FIX] hr_timesheet, project: let user disable Timesheets in config
This change allows uninstallation of hr_timesheet from the configuration of
Project.

Previously, attempting to disable the Timesheets feature from the configuration
of Project resulted in a user error that requested the user to first remove
tasks in projects that were linked to analytic accounts. This was caused by the
removal of demo data during the uninstallation of hr_timesheet, which attempted
to unlink analytic accounts before unlinking the projects that were referencing
those accounts. The order in which demo data are removed during uninstallation
of a module is currently not fixed. This change avoids the problem by instead
removing the explicit creation of analytic accounts as demo data.

Furthermore, hr_timesheet would be immediately re-installed upon uninstallation
through project_timesheet_synchro and project_timesheet_holidays. Disabling
those modules along with hr_timesheet fixes this.

Task 2339016

closes odoo/odoo#60134

X-original-commit: 43db576b7f0efed563ee597ab087e4d7ef5c74d9
Signed-off-by: Yannick Tivisse (yti) <yti@odoo.com>
2020-10-30 08:32:04 +00:00
fw-bot 06dc4e20e3 [FIX] hr_timesheet : fix timesheet visibility on portal
If a portal user was a customer but not a follower of a project
he didn't have access to the timesheets linked to the project.

Task-2299286

closes odoo/odoo#59252

X-original-commit: 13fc0ab18eb1e1d4ba47b7a1e66cd5079d692d8b
Signed-off-by: Yannick Tivisse (yti) <yti@odoo.com>
2020-10-06 11:21:38 +00:00
koz-odoo c23fb5964f [IMP] hr_timesheet: Add argument so method can be override by other module
Currently, method _apply_timesheet_label will add label on field
unit_amount with widget timesheet_uom but the widget on this
field is changed in another module as timesheet_uom_timer so it will
not work when that module is installed.

So in this method pass the view_type as argument so it can be easily
override in another module based on view_type.

closes odoo/odoo#57847

Taskid: 2287390
Related: https://github.com/odoo/enterprise/pull/11884
Related: odoo/enterprise#13279
X-original-commit: 6ce434b6d6ab686c91c111d2f86503176fec6517
Signed-off-by: Yannick Tivisse (yti) <yti@odoo.com>
2020-09-16 12:57:13 +00:00
jbm-odoo 90b46ce3b2 [FIX] hr_timesheet: Widget for planned hours
Before this commit:
The field `planned_hours` and `subtask_planned_hours` are present
twice. This causes problems with widget: different widgets are put
on different fields, but only the last on was put on all of them.
Code to edit label with hours/days is not flexible, we need to
write each possibilities.

After this commit:
All fields are present only once in the view. A new widget is
created to manage days with a factor. In this new widget, instead
of having a toggle button, we can insert a float.
When the widget timesheet_uom is set on a field, we modify his string
with hours/days.

closes odoo/odoo#57557

Taskid: 2326216
X-original-commit: 5b3804402b3ebee5abe7004b8f8caccadaabfe1e
Signed-off-by: Yannick Tivisse (yti) <yti@odoo.com>
2020-09-11 15:00:33 +00:00
Anh Thao Pham (pta) b9e988040e [FIX] hr_timesheet: fix timesheets encoded in days
- Go to Timesheets > Configuration > Settings and select Days as Encoding Unit
- Go to Project and create a Project with Timesheets activated
- Open the created Project and create a Task
- Edit the task and encode a timesheet line with 1 Day duration
"Hours Spent" and "Remaining Hours" have incorrect values.
The 1 day encoded is computed as 1 hour.

Reverting: https://github.com/odoo/odoo/commit/2a7ec79c6a4563b608a4525ebccdea5978799caa

opw-2328603

closes odoo/odoo#57379

X-original-commit: 8b3eed7418d6eea870f5e65ae238a304c88bd9f5
Signed-off-by: Anh Thao PHAM <kitan191@users.noreply.github.com>
2020-09-09 15:55:42 +00:00
Victor Feyens c482fdbf05 [IMP] various: improve code style and performance by improve `all()` usage
PURPOSE

Clean code. Be more performance oriented.

SPECIFICATIONS

Improvements applied in this commit

  * not all() --> any(not) for earlier returns;
  * all([generator]) --> all(generator) to avoid unnecessary list casting.
    This code construct is better managed by all;

This commit will probably not have a big performance effect on standard
production databases. However each performance and cleaning improvement
is welcomed.

LINKS

Task ID-2328619

closes odoo/odoo#56810

X-original-commit: 1cc6bb1231401ea7f501d2f5b5e9641ec8734850
Related: odoo/enterprise#12802
Signed-off-by: Thibault Delavallee (tde) <tde@openerp.com>
Signed-off-by: Victor Feyens (vfe) <vfe@odoo.com>
2020-08-31 13:59:27 +00:00
Victor Feyens fdb23e282b [IMP] *: wrong any() usage
Replace wrong usages of any(list|recordset), by any(generator)
to speed up computations, avoiding list creations and/or looping twice on a recordset
for nothing.

any([generator]) => any(generator)
any(filtered) => any(generator)

closes odoo/odoo#55768

Related: odoo/enterprise#12360
Signed-off-by: Victor Feyens (vfe) <vfe@odoo.com>
2020-08-14 09:56:10 +00:00
Jorge Pinna Puissant 09bfca4d0c [FIX] hr_timesheet: wrong uom factor in widget
- Install hr_timesheet and sales;
- Create a product, set it as a service product with units of
  measurement in days.
- Set the product as a task will be created from SO;
- Add a timesheet for one day to a task in a project (8 hours for
  instance);
- The smart button on the sales order shows the time logged for that
  project.

Before this commit, when the timesheet encoding unit is 'Hours', the
smart button shows the correct logged time (8 hours). But, when the
timesheet encoding unit is changed to 'Days', the samrt button shows
0.125 Days instead of 1 Day. This occurs because the uom used to create
the uom factor for the widget is not the Timesheet encoding unit.

opw-2301510

closes odoo/odoo#55544

X-original-commit: 2a7ec79c6a4563b608a4525ebccdea5978799caa
Signed-off-by: Jorge Pinna Puissant (jpp) <jpp@odoo.com>
2020-08-06 11:00:12 +00:00
Nisha patel 2c9d14cfa3 [FIX] hr_timesheet: Allow to update the empty description on timesheet
Currently, In timesheet module when we update the description of
existing entry and if the description is empty then it generates
required field error.

So in this commit, when a description updated as an empty then we
set a default '/' in the description.

closes odoo/odoo#55370

Taskid: 2301377
Closes: #54726
X-original-commit: 10cecadd05f0349765dc9cdb111e91c2d6d423b4
Signed-off-by: Yannick Tivisse (yti) <yti@odoo.com>
2020-08-04 07:43:45 +00:00
Odoo's Mergebot 30d1222d11 [MERGE] hr_timesheet: clean durations expressed in hours if encoding unit is in days
Purpose
=======

There are several places where the duration is expressed in hours even though the encoding unit is in Days.

Specifications
===========

The duration should be expressed in days instead of hours in the following places:
 [x]    Timesheet Entries
 [x]    Portal > Tickets
 [x]    Portal > Timesheets
 [x]    Portal > Tasks
 [x]    Portal > Sales Orders
 [x]    Project Overview
 [x]    Project task form view (in this case, the label of the field should be 'Planned Days')
 [x]    Timesheets > HR Timesheet/Attendence Report
 [x]    Project > All Tasks

Hide the following elements if the encoding unit is in days:
 [x]    'Timesheet Timer' feature on the project form view
 [x]    'Timesheet Timer' feature on the Helpdesk team form view
 [x]    the 'Round timesheets' feature in the settings of Timesheets (except if the 'Awesome Timesheet' feature is enabled)

Bonus point:
 [x]    Timesheet form view: 0.00 Days should be displayed in read-only if the duration = 0

 Some labels need to be adapted to explicit the unit of measure (is it carrots? potatoes?): e.g. Duration (Days) or Time Spent (Hours) :
 [x]    Timesheet entries report
 [x]    on the portal
 [x]    Project overview: add 'recorded' next to Hours/Days
 [x]    Project overview: add 'Days/hours Spent' above the total by employee
 [x]    task form view: make sure the 'sub-tasks days spent' button/label stays on one line

 [x]    hide the 'start' button on project tasks and helpdesk tickets if the encoding unit is in days

Task ID : 2152322

closes odoo/odoo#46184

Signed-off-by: Yannick Tivisse (yti) <yti@odoo.com>
2020-08-03 15:32:46 +02:00
Anh Thao Pham (pta) 7e49130d89 [IMP] hr_timesheet: hide the "Round timesheets" feature in the settings of Timesheets if encoding unit is Days
[IMP] hr_timesheet: hide the "Timesheet Timer" feature in the project form if encoding unit is not Hours

[IMP] hr_timesheet: clean display of Days for timesheets

A computed field has to be added to retrieve the encoding uom of the current company and be used in the views.
FieldTimesheetFactor field has to be registered to "float_factor" widget for the "planned_hours" field to work correctly with Days
(for the conversion from hours to days to be computed and to be able to set a greater value than 1 day)

If encoding unit for timesheets is set to Days:
- Display Days instead of Hours in Portal > Timesheets
- Display Days instead of Hours in Portal > Tasks
- Display Days instead of Hours in Portal > Invoices & Bills
- Display Days instead of Hours in Portal > Tickets

[IMP] hr_timesheet: display clean duration in Timesheet Entries

Display Days instead of Hours in Timesheet Entries (print action) if encoding unit for timesheets is set to Days

[IMP] hr_timesheet: correctly display timesheets in Days if configured to

- correctly display remaining days in project.task kanban and list view
- hide timer start button if timesheet is configured in Days
- update several column names

[IMP] hr_timesheet: clean code

[IMP] hr_timesheet: small improvements when displaying timesheets in days

- Rename some labels
- Fixes style
- Prevent fields displayed with widget "timesheet_uom" to change when timer is on
- Display correctly "Initially Planned Days" field in task creation form
2020-07-23 13:12:12 +02:00
Toufik Ben Jaa e7dcf6ac30 [FIX] hr_timesheet: allow leaves to be modified
- The HR staff may not be able to accept/refuse/cancel leaves if the
  module `project_timesheet_holidays` is installed.

  This is due to the commit c9da157149
  introducing a manual check on the current user's group without
  checking if the current environment is in superuser mode.

- Also fix the test verifying the access restriction, which meant to use
  a different user, but did that with sudo(), obviously defeating
  the fix. sudo is not used to switch user anymore, that `with_user`.

closes odoo/odoo#55274

X-original-commit: 75a166f1d115cc712bb39e7711d0fcb173732650
Related: odoo/enterprise#12149
Signed-off-by: Olivier Dony (odo) <odo@openerp.com>
2020-07-31 15:36:02 +00:00
jbm-odoo ec52933bce [FIX] hr_timesheet: Avoid calling super() into the void
Before this commit:
In helpdesk_timesheet, we have a compute_task_id with super.
But in hr_timesheet, task_id is not a compute field, so this
compute has no effect.

After this commit:
Task_id is changed to compute stored field.

taskId 2285926

closes odoo/odoo#54117

Related: odoo/enterprise#11682
Signed-off-by: Yannick Tivisse (yti) <yti@odoo.com>
2020-07-09 07:15:26 +00:00
Martin Trigaux 400cc4f14e [FIX] *: correct all or improve code translation lookup
This commit fixes all issues detected by the new pylint
gettext-variable test.
It converts some calls to the new syntax
  _("Foo %s", bar)

to progressively migrate the code to the new syntax.

A few calls were not technically incorrect but still detected by the
linter.

  _("Foo" +
    "Bar")

has been converted to

  _("Foo"
    "Bar")

as it has the same effect and make sure the argument is of type
asteroid.Const instead of BinOp).

closes odoo/odoo#53683

Related: odoo/enterprise#11467
Signed-off-by: Raphael Collet (rco) <rco@openerp.com>
2020-06-30 10:19:59 +00:00
qho 1424a3839a [IMP] hr_timesheet: Improve the usability of timesheet portal
1. Generic timesheets improvements

    - Portal /my/timesheets
    - Add a group bys task, date, employee
    - Add search in project, name, employee, task
        * The task column should not be visible if none of the timesheets have the Task field set
    - If a group by task, date, employee or project is applied, the corresponding column should not be visible

2. Timesheets from sub-tasks on parent tasks

    - Portal /my/tasks
    - Display the 'Total Hours' spent on a task at the end of the list of timesheets
    - Below the list of timesheets for the task, display another table detailing the respective timesheets (and total hours) of each sub-task linked to this task (= 1 table/list per sub-task)
        * Title should be: 'Timesheets for sub-task: xyz'
        * only visible if there are sub-tasks linked to this task
        * only visible if total hours > 0

3. Timesheets on Invoices

    - Portal /my/invoices
    - Add Project + task fields
        * Task field only visible if set on one of the timesheet entries
        * Project field only visible if there are at least 2 different projects in these timesheet entries

4. Correct visibility for the portal users
    - Portal users is allowed to see timesheets if the users are added in allowed portal users list in the project
    - When a portal user is added as the message follower of the project, the user is added to allowed portal users as well
    - When a portal user is removed from allowed portal users, the user is also removed from message followers

closes odoo/odoo#47248

Taskid: 2201908
Signed-off-by: Yannick Tivisse (yti) <yti@odoo.com>
2020-06-29 11:56:36 +00:00
Victor Feyens c250bec9ff [FIX] hr_timesheet: timesheet encoding unit of measure.
Potentially wrong in multi-company environment.

closes odoo/odoo#53513

Signed-off-by: Yannick Tivisse (yti) <yti@odoo.com>
2020-06-23 14:15:39 +00:00
Victor Feyens 117c391ac7 [IMP] hr_timesheet: project CRUD cleanup
* remove name_create override: allow_timesheet default is True anyway
* create projects in batch
* write improvement
2020-06-23 14:01:47 +00:00
Victor Feyens 9d2e60aa86 [FIX] hr_timesheet: wrongly raised UserError
Do not say that the task has timesheets linked when there are none 
linked...
2020-06-23 13:47:32 +00:00
Thibault Francois fb396a954d [FIX] hr_timesheet: Timesheet in multi company
Allow user that have a employee in a company A
and that is allowed on company A and B to timesheet
on company B

Problem:
A user have access on company A and B but is link to
an employee that belong to company A. He want to timesheet on a
project from the company B. He gets an error
"Incompatible companies on records".

Since most users are linked to only one employee that belongs
to one company. It's impossible to have consistent companies.

Solution:

The employee shouldn't be checked on the timesheet

closes odoo/odoo#55074

X-original-commit: 7eada96b8fc1c370801ff42231167885cc8e46bc
Signed-off-by: Olivier Dony (odo) <odo@openerp.com>
2020-07-29 09:02:49 +00:00
Rémy Baranx (bar) d924d89ab8 [IMP] hr_timesheet: convert onchange to stored-editable computed fields
The fields 'project_id' and 'user_id' have been converted to
stored-editable computed fields.

Convert the 'allow_timesheets' field.

Improvement of the _compute_task_id method to check the task_id field before using it.

Update hr_timesheet tests by removing calls to onchange methods because
now, compute methods are always called.

Get back the onchange on the 'project_id' to compute the task_id field due to a complex
bug found in sale_timesheet tests.
2020-06-23 07:00:10 +00:00
Martin Trigaux 80e97e98ce [IMP] *: use named placeholders in translated message
When more than one parameter is present in a message, it helps the
translation to use named placeholder. This way, the order can be
changed. It also helps the comprehension of the message.
2020-06-18 13:03:34 +02:00
jbm-odoo d6a23144d5 [MOV] timer: Move to Enterprise
taskId: 2217930
2020-06-15 15:51:20 +02:00
jbm-odoo e7dda3fab0 [IMP] project_timesheet: Add internal project by default to ease onboarding
taskId: 2217930
2020-06-15 15:50:19 +02:00
Thibault Francois ab48798229 [FIX] timer, hr_timesheet: Fix _compute_display_timer_buttons
mixin method should not return in the middle of the loop
Use the value updated on the record instead

super() is called with self at every iteration
which is not very efficient and can be wrong

Solution call super for each specific record
and only when needed

write is not a good practice in compute method

closes odoo/odoo#52858

X-original-commit: 7e19ed98d18305370b5c14edd3d310cfea5df714
Related: odoo/enterprise#11100
Signed-off-by: Yannick Tivisse (yti) <yti@odoo.com>
2020-06-11 14:00:06 +00:00
Yannick Tivisse (yti)anddmonzonis dadcec593d [IMP] project: Improve global UX (back2basics)
Improve the onboarding of new users and clean a few screens.

Task ID: 2237996

closes odoo/odoo#50284

Related: odoo/enterprise#10536
Signed-off-by: Yannick Tivisse (yti) <yti@odoo.com>
Co-authored-by: dmonzonis <mod@odoo.com>
2020-06-02 12:11:57 +00:00
Nisha patel 6bfc5bd817 [FIX] hr_timesheet, timer: Fix traceback in kanban view when using the timer
Currently, when the unit amount of line is zero and the timer time
spent on entry is less than one minutes then entries are unlinked
once the timer is stopped and due to that the entry disappear from the
kanban view and traceback is generated.

After this commit, we fix the issue by preventing the deletion of
entries by setting options 'prevent_deletion' on widget so we should
no allow to delete the entry if the option is set on widget.

closes odoo/odoo#50395

Taskid: 2230155
Closes: #49128
X-original-commit: 64b9a9b4deaee5a8139b0afbe3f222a476a038f9
Signed-off-by: Yannick Tivisse (yti) <yti@odoo.com>
2020-04-29 13:29:31 +00:00
jbm-odoo 14b9347343 [IMP] hr_timesheet: Move not yet invoiced timesheets when project changes
When we change the project on task, we change it also on
timesheet line if this line is not yet invoiced and if it
has no sale order line or the sale order line is the same
as sol of task.

closes odoo/odoo#45154

Taskid: 2169290
Related: odoo/enterprise#9471
Signed-off-by: Yannick Tivisse (yti) <yti@odoo.com>
2020-04-16 14:07:30 +00:00
jbm-odoo 407ac008b1 [IMP] Planning: Improve help message
And add optional max-depth to find all sub-tasks of a task.

Task Id: 1985510

closes odoo/odoo#47429

Related: odoo/enterprise#9168
Signed-off-by: Yannick Tivisse (yti) <yti@odoo.com>
2020-04-09 08:42:56 +00:00
Barad Mahendra 14137c8d09 [MOV] hr_timehseet: set default value '/' for name(description) on timesheet.
Currently the code for default name is inside the timesheet_grid
so on community the name(description) of the analytic line is
required.

so move the default name code from timesheet_grid to hr_timesheet.

TaskID: 2176065
Related Enteprise PR: https://github.com/odoo/enterprise/pull/9561

closes odoo/odoo#48657

Closes: #48657
Related: odoo/enterprise#9561
Signed-off-by: Yannick Tivisse (yti) <yti@odoo.com>
2020-03-31 10:03:43 +00:00
Lucas Lefèvre 69686efcd5 [IMP] hr_timesheet: Round timesheet when created from timer
Because.

Mighty PO said: "We'll need this in internal"

Don't ask me, it's changing every two days.

Task 2204084

closes odoo/odoo#48097

Related: odoo/enterprise#9394
Signed-off-by: Yannick Tivisse (yti) <yti@odoo.com>
2020-03-31 09:26:00 +00:00
Lucas Lefèvre 09ea34ace7 [IMP] hr_timesheet: Always display timer button in list view
Purpose
=======
It might look weird if the play button is displayed on some lines and not others.
It might seem even weirder if we have the Timer functionalities (such as the
timer bar we'll introduce with task 2217930) available even though the timer
is disabled on all projects. In this case, if we wanted something clean, we
would need to introduce a setting to disable the feature in Timesheets as well,
but that seems overkill. At last, you may not want the timer on the task form
view but find it still useful in the Timesheets app.

Specification
=============
Always display the start button, even if allow_timsheet_timer is False on the
selected project.

Task 2204084
2020-03-31 09:26:00 +00:00
Rémy Baranx (bar) 1a3c9be63d [IMP] hr_timesheet: prevent deleting tasks/projects linked to timesheets
In order to avoid losing some timesheets after tasks/projects deletion,
a warning message is displayed to the user to inform him that before
deleting tasks/projects, he has to delete timesheets associated to these
tasks/projects.

To ease this process, a button on the warning form allows him to directly
see the list of timesheets associated to selected tasks/projects (using
RedirectWarning exception).

TaskID: 2168071
2020-03-19 13:00:04 +00:00
Rémy Baranx (bar) 4f805e2af1 [FIX]: hr_timesheet: allow_timesheet_timer wrongly set at project creation
The 'allow_timesheet_timer' field should not have a default value as it is
computed according to the 'allow_timesheets' field value.

Some tests have been added to check the coherency between 'allow_timesheets'
and 'allow_timesheet_timer' fields, at project creation and update.

closes odoo/odoo#46692

Taskid: 2206820
Related: odoo/enterprise#8923
Signed-off-by: Yannick Tivisse (yti) <yti@odoo.com>
2020-03-03 12:37:27 +00:00
Okan SUMER (osu) 3bcef3a050 [IMP] hr_timesheet: Adapt timer with new timer mixin
Purpose
=======

Now that we have a new timer mixin that offers more possibilities
than what was currently implemented, we can reuse it in the timesheet
management module.

TaskID: 2149450
2020-02-05 16:44:37 +01:00
Lucas Lefèvre ac8c30beec [IMP] hr_timesheet, sale_timesheet: Set task analytic account
Purpose
=======

Currently, it is only possible to set an Analytic Account for a whole Project, there
is no distinction by task. However, if the user has 1 task per customer, he cannot
track the costs and revenues for that specific customer easily. He has to manually
change the AA of the timesheets' analytic lines. An option would be to set a
different AA on the SO generating the task, but the AA of the project takes over
anyway.

Specifications
==============

If the user sets an AA on the SO, it should bypass the one set on the project
Add an AA field below the Email cc one on tasks in debug mode
- should be related to the AA field from the SO
- it should also bypass the AA set on the project
All the timesheets from this task should be related to the AA field set on the SO/Task

closes odoo/odoo#40844

Signed-off-by: Yannick Tivisse (yti) <yti@odoo.com>
2020-01-31 11:02:14 +00:00
Kevin BaptisteandYannick Tivisse 2ac06038dd [IMP] project, industry_fsm: Improve subtasks and configuration UX
Purpose
=======

In Project, the configuration has to be done twice: in the settings of the
app and on each project.

During the onboarding, the user won't understand that a feature has to be
enabled at both places and will think that the system just doesn't work.

If the user enabled a feature, he most likely intends on using it for most
of his projects. Therefore, having to do a double configuration for each
new project is annoying.

By the way, sub-tasks is the only global feature (it can't be enabled or
disabled by project), so we are breaking it down by project to remain
consistent with the rest.

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

1/ Enable subtasks per project
Before this commit, sub-tasks were a global feature (i.e. once enabled
they were enabled for all projects). This commit gives the ability to
enable/disable sub-tasks per project.

2/ Make project_id on planning required

3/ Change default rating status on new projects

4/ Default value for allow_subtasks

5/ Enable timesheets on existing projects

6/ Hide Total Hours if subtasks are disabled

7/ Create project in the company context.
Otherwise some records generation could use a default company which is not
the company for which we want to create a project.

8/ Default value for allow_forecast, is_fsm

9/ Change reference to timesheet product

10/ Fix tracback on industry_fsm_report.
Before this commit, there was a traceback when enabling "Worksheets"
(industry_fsm_report) after "Time and Material" (industry_fsm_sale).

11/ Convert some onchange method into computed editable stored fields

closes odoo/odoo#41218

Taskid: 2146474
Related: odoo/enterprise#6998
Signed-off-by: Yannick Tivisse (yti) <yti@odoo.com>
Co-authored-by: Yannick Tivisse <yti@odoo.com>
2020-01-31 15:35:54 +00:00
laaandYannick Tivisse 7e09f931ff [IMP] hr_timesheet,industry_fsm: Display CTA buttons with computed fields
Purpose
=======

The various buttons in FSM are currently displayed based on a set
of attributes. As there are many different configurations possible
for projects, it makes a lot of conditions (= the code is a living
nightmare). This task aims at replacing these attributes by computed
fields in order to gain clarity and to avoid the various bugs we
recently faced + add python tests to ensure their robustness.

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

START/STOP/PAUSE/RESUME
-----------------------

- should not be visible if the task is marked as done
- should be visible in non-primary if Time > 0
- should be visible in primary if Time = 0
- when the timer is running, do not display the following
  buttons: Create Sales Order, Mark as done, Create Invoice,
  Sign report, Send report
- only visible if the 'Timesheet Timer' feature is enabled
  on the project

SIGN REPORT
-----------

- should not be visible
    - if Time = 0 AND Worksheet = 0 AND Products = 0
    - OR if the report already is signed
- should be visible in non primary if Time > 0 OR
  Worksheet > 0 OR Products > 0
- should be visible in primary if Time > 0 AND Worksheet > 0
  AND Products > 0
- once the report is signed, display an 'fa-globe Customer Preview'
  stat button redirecting to the webpage with the report
- only visible if the 'worksheets' feature is enabled on the project

SEND REPORT
-----------

- should not be visible if Time = 0 AND Worksheet = 0 AND
  Products = 0
- should be visible in non primary if Time > 0 OR Worksheet > 0
  OR Products > 0 OR if the report was already sent
- should be visible in primary if
    - Time > 0 AND Worksheet > 0 AND Products > 0
    - AND the report is signed
- only visible if the 'worksheets' feature is enabled on the project

MARK AS DONE
------------

- should not be visible if the task is marked as done
- should be visible in non primary if
    - Time > 0 OR Worksheet > 0 OR Products > 0
    - OR if Time = 0 OR Worksheet = 0 OR Products = 0
- should be visible in primary if Time > 0 AND Worksheet > 0 AND
  Products > 0
- only visible if is_fsm is true on the project

CREATE INVOICE
--------------

- should not be visible if the task is not marked as done OR if
  the SO linked to the task has the 'Fully invoiced' invoice status
- should be visible in non primary if the SO linked to the task has
  the 'Nothing to invoice' invoice status
- should be visible in primary if the SO linked to the task has one
  of the following invoice status: To Invoice, Upselling
- only visible if the Bill from tasks feature is enabled on
  the project

EXTRA QUOTATION + CREATE SALES ORDER
------------------------------------

no change of behavior

closes odoo/odoo#42508

Taskid: 2126857
Related: odoo/enterprise#6918
Signed-off-by: Yannick Tivisse (yti) <yti@odoo.com>
Co-authored-by: Yannick Tivisse <yti@odoo.com>
2020-01-24 13:16:07 +00:00
Lucas Lefèvre 7bce19fa88 [IMP] sale_timesheet: Improve project overview UI
1)  Add the following stat buttons on the right of the Tasks one:
- (fa-tasks) Late Tasks: tasks whose deadline is exceeded (do not include tasks that
  don't have a deadline set)
- (fa-tasks) Tasks in Overtime: tasks whose Effective hours are strictly greater than
  their Planned hours (if the latter is stricly greater than 0)

2) Remove the sheet view (should be like financial reports)

3) Add an 'Other Revenues' metric under the Profitability section below 'To Invoice'
- It should represent all the revenues other than from timesheets linked to the analytic
  account of the project.
- Only visible if greater than 0

Task 2119567
2020-01-21 13:16:58 +01:00
Barad Mahendra d16aa4cd39 [IMP] (hr, sale)_timesheet, pad(_project): improve project general UX
Purpose fo the task is to improve the UX of timesheet, project and task.

Done the chages for below point:
  - improve the stage demo data to unified the project stage
  - on the task timesheet 'sub-tasks hours spent' should be clickable
and on click, it will display the list of subtask timesheet.
  - display in warning tasks for which Remaining Hours < 0 if Planned Hours > 0 in task list view
  - improve the settings of collabrative pad and planning and project form view

Task-2129052

closes odoo/odoo#41092

Closes: #41092
Signed-off-by: Yannick Tivisse (yti) <yti@odoo.com>
2020-01-16 10:56:05 +00:00
Lucas Lefèvre 7059b177ee [IMP] project: Following a private project no longer required
=======
Purpose
=======

Currently for a user to be allowed to see a private project they must follow the
project. This means that they will be added as a follower of all new tasks in the
project which causes them to receive 1000000 notifications, especially if there are a
lot of tasks in a project.

==============
Specifications
==============

1) Add an Employee m2m field on project next to 'Invited Employees'
    - only visible if the 'Invited Employees' option is selected
    - the project should only be visible to employees selected there (regardless if they
      are followers or not)
2) Add an Employee m2m field on tasks below the 'Email cc' one in debug mode
    - only visible if the 'Invited Employees' option is selected on the related project
    - should be pre-filled with what is set on the project
    - the task should be visible to employees selected there (regardless if they are
      followers or not)
3) Add a Portal users m2m field on project next to 'Portal users and all employees'
    - only visible if the 'Portal users and all employees' option is selected
    - the project should only be visible to portal users selected there (regardless if
      they are followers or not)
    - rename the option into 'Invited portal users and all employees'
4) Add a Portal users m2m field on tasks below the 'Email cc' one in debug mode
    - only visible if the 'Portal users and all employees' option is selected
    - should be pre-filled with what is set on the project
    - the task should be visible to portal users selected there (regardless if they are
      followers or not)
5) Following a project/task should not grant the user/employee the ability to see the
   project/task

Task 2031527

closes odoo/odoo#40505

Signed-off-by: Yannick Tivisse (yti) <yti@odoo.com>
2020-01-14 16:26:32 +00:00
jdoutreloux 52ed0be17e [IMP] uom : remove 'measure_type' field
This removes the measure_type field which has become unused and
causes issues when users try to add new uom categories.

Task-2043927

closes odoo/odoo#41056

Related: odoo/enterprise#6945
Signed-off-by: Yannick Tivisse (yti) <yti@odoo.com>
2020-01-13 11:19:17 +00:00
Xavier Morel b0d690ee7c [FIX] hr_timesheet: re-remove onchange-with-domain
Had been removed in 6c4ac28f33 but
re-introduced in 15e41f59c7 likely due
to an improper conflict resolution.

Task 2115472
2020-01-06 10:35:46 +00:00
Yannick Tivisse 1bf2bfd2a1 [IMP] hr_timesheet: Small cleaning and linting 2019-12-19 17:21:17 +01:00
Xavier Bol (xbo) 2d3a44e6bd [FIX] hr_timesheet: problem desynchronization time between server and client
TaskID: 2088586

When we launch the timer, if the clock of the client isn't correctly synchronize
with internet, we can't correctly display the timer,
because the clock of the server can be in advance.

The solution is to call the server to have this time and use the timer
only with the time of the server.
2019-12-19 10:20:27 +01:00