@Override
public void updateVacationDaysFromLastYearForNewYear(final EmployeeDO employee, final int year)
{
final BigDecimal availableVacationdaysFromActualYear = getAvailableVacationdaysForGivenYear(employee, year, false);
employee.putAttribute(VacationAttrProperty.PREVIOUSYEARLEAVE.getPropertyName(), availableVacationdaysFromActualYear);
Calendar from = Calendar.getInstance();
from.setTimeZone(DateHelper.UTC);
from.set(year + 1, Calendar.JANUARY, 1, 0, 0, 0);
Calendar to = getEndDateVacationFromLastYear();
to.set(Calendar.YEAR, year + 1);
List<VacationDO> vacationNewYear = vacationDao.getVacationForPeriod(employee, from.getTime(), to.getTime(), false);
BigDecimal usedInNewYear = BigDecimal.ZERO;
for (VacationDO vacation : vacationNewYear) {
if (vacation.getStatus() != VacationStatus.APPROVED) {
continue;
}
BigDecimal days = this
.getVacationDays(vacation.getStartDate(), vacation.getEndDate().after(to.getTime()) ? to.getTime() : vacation.getEndDate(), vacation.getHalfDay());
usedInNewYear = usedInNewYear.add(days);
}
final BigDecimal usedDays = availableVacationdaysFromActualYear.compareTo(usedInNewYear) < 1 ? availableVacationdaysFromActualYear : usedInNewYear;
employee.putAttribute(VacationAttrProperty.PREVIOUSYEARLEAVEUSED.getPropertyName(), usedDays);
employeeDao.internalUpdate(employee);
}