Commit Graph
221 Commits
Author SHA1 Message Date
Jorge Pinna Puissant f45564ae94 [FIX] hr_holidays: compute duration in leave's import
Before this commit, the duration (days/hours of the leave) wasn't
compute when importing leaves.

opw-1916913

closes odoo/odoo#35167

Signed-off-by: Lucas Perais (lpe) <lpe@odoo.com>
2019-07-25 07:42:30 +00:00
Jorge Pinna Puissant fd7ce4c983 [FIX] hr_holidays: Disable emails when importing from file
When using the "test import" feature to import leaves request
allocations, odoo fails with a 500 error and no error message.

The only difference with an actual import is that the test dry-runs by
roll-backing. The issue here are that mails are sent *after* a commit
is done hence crashes because they do not exist any more.

Fine-tuning of c7b6fcb9f2 for
hr.leave.allocation

opw-2041872

closes odoo/odoo#35166

Signed-off-by: Lucas Perais (lpe) <lpe@odoo.com>
2019-07-25 07:33:12 +00:00
Cas Vissers 467ac9843d [FIX] hr_holidays: fix leaves count domain
In active leave types should not be considered.

closes odoo/odoo#34475

Signed-off-by: Yannick Tivisse (yti) <yti@odoo.com>
2019-07-01 09:04:37 +00:00
Goffin Simon cfd5c90652 [FIX] hr_holidays: Access error when requesting a new leave
Steps to reproduce the bug:
- Create an hr.leave.allocation with mode = 'By Employee Tag'
- Select Employee Tag = 'Employee'
- Set all the other required values
- Log with Demo User(Marc Demo)
- Go to Leaves > My Leaves > New Request

Bug:

An access right error was raised due to the record rule: "Allocations: employee: read own"
With this record rule the user can only read the hr.leave.allocation linked to his employee's user.
But with allocations in mode 'By Employee Tag', in the function get_days it tried to compute
the 'number_of_hours_display' of all the allocations linked to the current employee's user and
in the function _compute_number_of_hours_display, it also computes the parent_id of these allocations.
As the parent_id is not linked to the employee's user, it raised an access right error.

opw:2006686

closes odoo/odoo#34236

Signed-off-by: Simon Goffin (sig) <sig@openerp.com>
2019-06-19 09:14:47 +00:00
Nicolas Martinelli ba2c179c44 [FIX] hr_holidays: validity constraint
- Create a leave type valid from June 1st
- Create a leave in May using the created leave type

Nothing prevents the user to do it.

It is because the constraint is implemented only if there is a validity
start and end date.

Fixes #32107
opw-2009800

closes odoo/odoo#34225

Signed-off-by: Nicolas Martinelli (nim) <nim@odoo.com>
2019-06-19 09:55:56 +00:00
Goffin Simon 2e7cbca0e9 [FIX] hr_holidays: Not able to fill holiday request
Steps to reproduce the bug:
- Log as admin user in company C
- Go to Leaves module and click on Managers > Allocations
- Create a leave.allocation with type = Compensatory Days, duration = 7 days
mode = By Company and Company = C
- Approve the allocation
- Create a leave request LR for all the company C and approve it
- Log as demo user (only user access right for Leaves)
- Go to Leaves > My Leaves and click on "Leaves requests"

Bug:

A traceback was raised

opw:2005813

closes odoo/odoo#33899

Signed-off-by: Simon Goffin (sig) <sig@openerp.com>
2019-06-06 07:29:02 +00:00
Nicolas Martinelli 691dc424a1 [FIX] hr_expense, hr_holidays: default activity user
- Activate multi-company
- Create a company B
- Switch to company B
- Create an allocation request

An access error is raised.

Commit 7f775f0677 added a `sudo` call in order to prevent an access
error. However, it implies that the fallback value `self.env.user`
refers to the SUPERUSER, not the current user anymore. If the current
user is not in the same company than the SUPERUSER, the multi-company
record rules will be triggered.

The fallback is changed to an empty recordset, and selecting the current
user is done out of the method called with `sudo`.

opw-2003137

closes odoo/odoo#33804

Signed-off-by: Nicolas Martinelli (nim) <nim@odoo.com>
2019-05-31 15:06:08 +00:00
Prakash Prajapati ddabee78e1 [FIX] hr_holidays: overlap constraint
Allow to request a leave that create exactly when another leave start.

Closes #33665

opw-1998762

Signed-off-by: Nicolas Martinelli (nim) <nim@odoo.com>
2019-05-27 06:45:16 +00:00
Toufik Ben Jaa 153f708792 [FIX] hr_holidays: access issue on employee's manager update
- If the current user doesn't have write access to `hr.leave` or
`hr.leave.allocation` and tries to modify the manager (`parent_id`) of
a `hr.employee` record, an access right issue is raised.

This commit fixes the issue.

OPW-2000569

closes odoo/odoo#33542

Signed-off-by: Toufik Benjaa (tbe) <tbe@odoo.com>
2019-05-21 15:19:26 +00:00
Jorge Pinna Puissant f4bb6e5d34 [FIX] hr_holidays: allocation with leave type in hours and with a different mode than 'By Employee'
When an allocation have as leave type hours, and have the mode different
from 'By Employee', the stored duration (in days) is calculated dividing
the filed number of hours by 8 (number of hours per days).
During the validation, an allocation is created for each employee that
match the mode chosen.

In these allocations, before this commit, the number of hours displayed
is calculated by multiplying the stored duration (in days) with the
average number of hours of the employee.
The problem is that in may cases the average number of hours of the
employee is different from 8, and the display number of hours is not
correct.

Now, the number of hours is calculated with 8 when the allocation is
created from another allocation.

opw-1972133

closes odoo/odoo#33675

Signed-off-by: Jorge Pinna Puissant (jpp) <jpp@odoo.com>
2019-05-27 09:32:24 +00:00
RomainLibert d5b3060adb [FIX] hr_holidays: reset holiday_status_id in onchange
In order to force the user to select a new leave_type when requesting a
leave for someone else. We reset its value in the `_onchange_employee_id`

Task : 1984487
Closes #32697
Fixes #29806

Courtesy of @sswapnesh

closes odoo/odoo#33178

Signed-off-by: Romain Libert (rli) <rli@odoo.com>
2019-05-07 16:03:22 +00:00
Jorge Pinna Puissant 5648bbada8 [FIX] hr_holidays: request leave with leave type in hours
When a leave type is in hours, before this commit:
- in the leaves request list the request duration is shown in days.
- the name of the leave shown duration in days.
- the rounding after the conversion from hours to days, generates some
misunderstandings. If you have a day of 7.5 hours, and you take a leave
of 2 hours, it would be round it to 0.25 days, and not to 0.27 days as
it should be. This occurs because we round to the 1/16 of the day.

Now:
- in the leave request list, the request is shown either with days or
hours depending on the leave type.
- the name of the leave shown duration either with days or hours
depending on the leave type.
- the leaves are shown in the correct unit, there is not more
misunderstandings occurring because of the rounding.

related to commit : 5c33ebef5f and 2c366acbf0

opw-1974691

closes #29804
closes #33290

closes odoo/odoo#33369

Signed-off-by: Nicolas Martinelli (nim) <nim@odoo.com>
2019-05-15 13:20:25 +00:00
Jorge Pinna Puissant 2c366acbf0 [FIX] hr_holidays: leave type in hours in new leave request
When a new request of leave is created, some fields are computed to
calculate if it's possible or not, to take the leave
(virtual_remaining_leaves, leaves_taken, remaining_leaves and
max_leaves).

These fields are computed using the fields :
allocation : hr_leave_allocation.number_of_days.
and request : hr_leave.number_of_days.

When a leave type is in hours, both of these fields are calculated
differently:
allocation: The allocation field is calculated dividing the number of
hours registered by the user per the average hour per working day.
(https://github.com/odoo/odoo/blob/d809b476819968837b61bdd78fbf101caac73adc/addons/hr_holidays/models/hr_leave_allocation.py#L236)
request : The request field is calculated by finding the real number of
requested days.
(https://github.com/odoo/odoo/blob/d809b476819968837b61bdd78fbf101caac73adc/addons/hr_holidays/models/hr_leave.py#L360)
If in the company each day have different working hour, then the number
of days calculated with the average hours didn't represent the real
number of days that the employee can take. This issue can avoid the
employee to take a leave even if he has the correct number of hours to
take it.

Now, the fields (virtual_remaining_leaves, leaves_taken,
remaining_leaves and max_leaves) are calculated using either the days
fields or the hours fields depending on the leave type.

opw-1972133

closes odoo/odoo#33244

Signed-off-by: Nicolas Martinelli (nim) <nim@odoo.com>
2019-05-08 13:12:09 +00:00
Jorge Pinna Puissant 5c33ebef5f [FIX] hr_holidays: allocation list with leave type in hours
When a leave type is in hours, before this commit, in the allocation
list the allocation is shown in days. The problem is that the number of
days its calculated with the average hour per day. If in the company
each day have different working hour, then the number of days calculated
with the average didn't represent the actual number of days that the
employee can take.

Now, in the allocation list, the allocation is shown either with days or
hours depending on the leave type.

opw-1972133
2019-05-08 13:12:04 +00:00
Yannick Tivisse 4b0b00dbd9 [FIX] hr_holidays: Avoid erasing values on onchange if set
closes odoo/odoo#32790

Signed-off-by: Yannick Tivisse (yti) <yti@odoo.com>
2019-04-24 12:27:17 +00:00
Lucas Lefèvre 08da07b1ca [FIX] hr_holidays: Fix deleted default employee
The goal of commit 2dbce5e was to handle the company
holiday type in onchange which was probably forgotten
when the company type was introduced.
However because the last `elif` was changed to `else`,
the `else` clause is executed in some situations where
it shouldn't.

e.g. If holiday type is `employee` and an employee is set,
the `else` clause is (obviously wrongly) executed.
This is particularly a problem if the employee is not
HR user nor manager. In that case, the field employee_id
is invisible and its value has been deleted by the onchange.
The allocation cannot be saved because it violates the
sql constraint (employee is null).

Also, the `mode_company_id` and `category_id` should be set
to `False` when the holiday type is not company/category.
2019-04-24 12:26:27 +00:00
Lucas Lefèvre d6242a340d [FIX] hr_holidays: Allow create department leave
1. Open form view to create a leave
2. Change the leave type to 'By department'
3. Choose the department of the current user
4. Save the leave
5. Approve the leave
=> ValidationError, cannot have two leaves at the same time.

In `@api.onchange('holiday_type')`, when choosing by department
it sets `employee_id`, `mode_company_id` and `category_id`
to `False` ONLY if the department is not already set.
But by default, the employee is set to the user's employee
and the department is set to the employee's department.
Therefore the employee is never set to `False` and the
department leave is linked to this employee.
When validating the 'department' leave, an 'employee'
leave is created for each employee in the department.
For the current user, it crashes because the deparment leave overlaps with
the 'employee' leave since the department leave is linked to
the employee.
2019-04-24 12:24:13 +00:00
Toufik Ben Jaa 30e7a64cbd [FIX] hr_holidays: fix logic of a onchange on leave allocation
- When changing the `holiday_type` of a leave allocation while having an
  employee set and if this `holiday_type` has as its value `employee`
  the field `employee_id` is set to False.

  This is not the intended behavior. We want the field `employee_id`
  to be filled if the `holiday_type` is set to `employee`.

closes odoo/odoo#32886

Signed-off-by: Denis Ledoux <beledouxdenis@users.noreply.github.com>
2019-04-23 15:22:16 +00:00
Swapnesh Shah a432e5c12a [FIX] hr_holidays: Add missing fields in constrains
closes odoo/odoo#32108

Signed-off-by: Yannick Tivisse (yti) <yti@odoo.com>
2019-03-25 17:51:43 +00:00
Fanny He 90731ad170 [FIX] hr: put accrual leave allocation start in a function
When an accrual leave is allocated to an employee,
it starts from the employee creation date.
However, companies want to create employees before they start working.
Therefore, they want to be able to change the accrual leave allocation start
to when the employee starts working.
For instance, when hr_contract is installed, we can change the
accrual leave allocation start to the date when the first contract starts.

We create the function _get_date_start_work(),
that can be overriden to allow those changes.

OPW-1939378

closes odoo/odoo#31930

Signed-off-by: Nans Lefebvre (len) <len@odoo.com>
2019-03-18 18:45:35 +00:00
Nans Lefebvre 2dbce5e6ff [FIX] hr_holidays: handle all holiday types in onchange
The holiday_type can be 'employee', 'company', 'department' or 'category'.
However in the onchange of holiday_type, for some reason nothing was done
in the case of the 'company' value.

As a result, the default 'employee' would set the employee_id,
but then changing the type to company would not remove the employee_id.
It follows that the lucky employee would get two allocations instead of one.

opw 1938498

closes odoo/odoo#31656

Signed-off-by: Nans Lefebvre (len) <len@odoo.com>
2019-03-07 13:44:45 +00:00
mreficent e74f96ba06 [FIX] hr_holidays: leave_type_request_unit field was declared twice
closes odoo/odoo#31162

Signed-off-by: Romain Libert (rli) <rli@odoo.com>
2019-02-15 18:36:37 +00:00
Christophe Simonis afe0133302 [MERGE] forward port branch saas-11.3 up to 3e54704e66 2019-03-06 10:59:32 +01:00
Christophe Simonis 3e54704e66 [MERGE] forward port branch 11.0 up to 27081bf6f5 2019-03-05 17:26:04 +01:00
Christophe Simonis 1c712986c4 [MERGE] forward port branch saas-15 up to 1f1fa35c07 2019-03-04 15:49:35 +01:00
Christophe Simonis 1f1fa35c07 [MERGE] forward port branch saas-14 up to 232da9a0ec 2019-03-04 13:40:44 +01:00
Christophe Simonis 4c46dd4f9d [MERGE] forward port branch 10.0 up to 2f139632d6 2019-02-27 10:42:03 +01:00
Christophe Simonis 2c495502aa [FIX] hr_holidays: import used function
Oversight of previous forward-port
2019-02-20 13:58:03 +01:00
Christophe Simonis f1ff55bca1 [MERGE] forward port branch 11.0 up to de8cefcef4 2019-02-20 13:40:48 +01:00
Nicolas Martinelli bddd53881c [FIX] hr_holidays: numerical error
In some exceptional circumstances, the computation of the remaining
leaves might lead to numerical errors, e.g. a very small but non-zero
number (e.g. 10^-17)

This value will be displayed in the name of the leave type because of
the `%g` used in the string format. To avoid breaking the translation,
we round the value.

opw-1935232

closes odoo/odoo#31245
2019-02-19 12:43:07 +00:00
Christophe Simonis db1c7765cb [MERGE] forward port branch saas-11.3 up to 2c495502aa 2019-02-20 17:37:22 +01:00
Toufik Ben Jaa bed3b4a5cb [FIX] hr_*: access rights issues when changing employee's user
- When changing the user of a `hr.employee` record, access rights errors
  could be triggered.

  Those errors are triggered when a record (for example a leave) is
  linked to this employee and the current user has limited write
  accesses by record rules on this record.

closes odoo/odoo#31032
2019-02-12 15:47:02 +00:00
RomainLibert 9c1b932489 [IMP] hr_holidays: improve performances
going from 3X seconds for 320 leaves to 20 seconds for 320 leaves
2019-02-05 10:06:55 +01:00
RomainLibert 8ab8881167 [FIX] hr_holidays: fasten creation of leaves by company
When creating a leave, we usually check/create activities for the
concerned users, this is fine when creating one leave.
However it starts to become a problem when trying to create leaves in
batch using the by company or by department holiday_type as the number
of leaves created in batch can become quite big.

Now when we create leaves in batch, we do not check for the activities,
which will fasten a lot the creation.

Another problem is that when someone defined a leave on the very day you
want to create such a request, then it will crash, this can lead to
waste of time and resources.

Now we raise an error before trying to create the leaves in case of
conflict.

Task: 1934383
2019-02-05 10:06:55 +01:00
Julien (juc) Castiaux c7b6fcb9f2 [FIX] hr_holidays: Disable emails when importing from file
When using the "test import" feature to import leaves request, odoo
fails with a 500 error and no error message.

The only difference with a real import is that the test dry-runs by
rollbacking. The issue here is that mails are sent *after* a commit
is done hense crashes because they do not exist anymore.

opw-1916913

closes odoo/odoo#30523
2019-01-30 14:29:23 +00:00
Nicolas Lempereur a6279fe169 [FIX] hr_holidays: demo data error on 31 december
On installation demo data causes an error on 31 december since we test:
 is 31 december at midnight < now() => so after midnight error.

Solve this by comparing today instead of datetime.

opw-29776
closes #29830
2018-12-31 11:31:02 +00:00
Swapnesh Shah 896ed33c77 [FIX] hr_holidays: Add missing parameters in method
closes odoo/odoo#30124
2019-01-10 18:09:01 +00:00
Nicolas Martinelli 023869970c [FIX] hr_holidays: days allocated
- Go to Leaves > Managers > All > Allocations
- Create an allocation for:
  Leave Type: Legal Leaves
  Mode: By Department
- Validate

When going to the Legal Leaves form view, the days allocated are not
shown.

This is because the domain is too restrictive. The allocation has a
`date_from` which is `False`, since it is only set for Accrual leaves.

We adapt the domain accordingly.

opw-1921338

closes odoo/odoo#30152
2019-01-11 14:58:16 +00:00
RomainLibert 8d6bb22298 [FIX] hr_holidays: use a better heuristic when mode != employee
closes odoo/odoo#30082
2019-01-09 15:50:14 +00:00
Jorge Pinna Puissant 5995680542 [FIX] hr_holidays: validation_type same behavior
opw-1919744

Before this commit, the user in the leave_type had the choice between
three validations : 'hr', 'manager' and 'both'. The behaviour of the
application was exactly the same if 'hr' or 'manager' was chosen.

In this commit, a computed field was added only to hide this choice,
and restrict the user to choice between the 'double validation'
or the normal validation.

This commit must be reverted once the fonctional part is implemented.

closes odoo/odoo#29952
2019-01-09 07:28:21 +00:00
Yannick Tivisse 0a3f8740f9 [FIX] hr_holidays: Correctly compute number_of_days on form loading
Backport of https://github.com/odoo/odoo/commit/1c391c3dfbdf733304fc882b9045d25e20e6dd1f

Closes #29800

closes odoo/odoo#29853
2019-01-02 15:40:51 +00:00
Swapnesh Shah ea301bef93 [FIX] hr_holidays: recompute the duration based on employee
When changing the employee value, the duration was not recomputed

closes odoo/odoo#29844
2019-01-02 15:16:52 +00:00
Nicolas Martinelli c9477b4cfd [FIX] hr_holidays: date and datetime comparison
The fields `validity_start` and `validity_stop` are `Date` fields, they
should therefore be compared to `datetime.date`.

opw-1918843

closes odoo/odoo#29834
2018-12-31 13:45:14 +00:00
Yannick Tivisse 4b22f1ff5e [FIX] hr_holidays: Reset interface-based fields on leave type change
Purpose
=======

When changing the leave type on a leave request, reset the technical
fields that only have a visual purpose to avoid mismatch on the leave
duration compute method.

closes odoo/odoo#29789
2018-12-28 11:30:29 +00:00
Yannick Tivisse 765075ff47 [FIX] hr_holidays: Fix 6035112
1/ self.date_from on a for loop on self won't work
2/ When calling get_work_hours_count with self.date_from=False or self.date_to=False,
   this will lead to a traceback when looking the timezone on the date.

Closes #29697
2018-12-28 11:24:41 +00:00
Yannick Tivisse 3b30f7ad05 [FIX] hr_holidays: Fix traceback on onchange
closes odoo/odoo#29773
2018-12-27 15:49:26 +00:00
Goffin Simon 6035112043 [FIX] hr_holidays: Wrong computation of leave duration
When all days in a calendar don't have the same schedule, it's wrong
to compute the leave duration with the average working time hour per day.

opw:1909145

closes odoo/odoo#29313
2018-12-06 14:45:18 +00:00
Yannick TivisseandCas Vissers 02ce0022b2 [FIX] hr_holidays: Fix remaining leaves count on employee form
Purpose
=======

Currently the remaining leaves substract the taken leaves with
no needed allocation.

That way, sick leaves are removed from the remaining leaves for example.

Closes #28659

Co-authored-by: Cas Vissers <c.vissers@brahoo.nl>

closes odoo/odoo#28951
2018-11-22 11:35:08 +00:00
RomainLibert 4a2c73d1a5 [FIX] hr_holidays: change selection keys from floats to integers
In the following commit (https://github.com/odoo/odoo/commit/744de4ee1cec5e43aa77ac3eccc7a9b1224f8fa1) we introduced some floats as keys
to Selection fields (namely request_hour_from and request_hour_to)

This lead to the ORM creating a column of type `int4` to store this
field which rounded the values.

In order to repair that faulty behaviour we use negative integer values
for the half hours, which is then transformed back into a float in the
code.

closes odoo/odoo#28877
2018-11-21 10:49:02 +00:00
RomainLibert 58e4db6433 [FIX] hr_holidays: use department members as employees
In https://github.com/odoo/odoo/commit/04250cff1be32c115804dd2a55eb0242df6abf52 a typo was introduced, this commit
aims at fixing it.

closes odoo/odoo#28609
2018-11-13 10:06:09 +00:00