private void addStatusForAssignmentType(ProjectAssignment assignment, ProjectAssignmentStatus status) { int assignmentTypeId = assignment.getAssignmentType().getAssignmentTypeId(); if (assignmentTypeId == EhourConstants.ASSIGNMENT_TIME_ALLOTTED_FIXED) { addFixedAssignmentStatus(assignment, status); } else if (assignmentTypeId == EhourConstants.ASSIGNMENT_TIME_ALLOTTED_FLEX) { addFlexAssignmentStatus(assignment, status); } }
/** * Get fixed hours remaining to book on this project * This is applicable to fixed and flex assignments * @return */ public Float getFixedHoursRemaining() { Float remainder = null; if (totalBookedHours != null) { if (getProjectAssignment().getAssignmentType().isAllottedType()) { remainder = getProjectAssignment().getAllottedHours() - totalBookedHours.floatValue(); // Flex assignment that are over their fixed number of hours should report // zero fixed remaining. if (getProjectAssignment().getAssignmentType().isFlexAllottedType() && remainder < 0) { remainder = 0f; } } } return remainder; }
/** * For flex/fixed allotted, give the available hours * * @return */ public Optional<Float> getAvailableHours() { if (projectAssignment != null) { if (projectAssignment.getAssignmentType().isFixedAllottedType()) { if (hours != null && projectAssignment.getAllottedHours() != null && hours.floatValue() > 0 && projectAssignment.getAllottedHours() > 0) { return Optional.of(projectAssignment.getAllottedHours() - hours.floatValue()); } } else if (projectAssignment.getAssignmentType().isFlexAllottedType() && hours != null && projectAssignment.getAllottedHours() != null && hours.floatValue() > 0 && projectAssignment.getAllottedHours() > 0) { return Optional.of((projectAssignment.getAllottedHours() + ((projectAssignment.getAllowedOverrun() != null) ? projectAssignment.getAllowedOverrun() : 0)) - hours.floatValue()); } } return Optional.absent(); }
if (aggregate.getProjectAssignment().getAssignmentType().isFixedAllottedType() || aggregate.getProjectAssignment().getAssignmentType().isFlexAllottedType()) { Integer assignmentId = aggregate.getProjectAssignment().getAssignmentId(); assignmentIds.add(assignmentId);
if (projectAssignment.getAssignmentType().isAllottedType()) { if (hours != null && projectAssignment.getAllottedHours() != null && } else if (projectAssignment.getAssignmentType().isDateType() && projectAssignment.getDateStart() != null && projectAssignment.getDateEnd() != null) {
/** * Get flex hours remaining to book on this project * @return */ public Float getFlexHoursRemaining() { Float remainder = null; if (totalBookedHours != null && getProjectAssignment().getAssignmentType().isFlexAllottedType()) { if (totalBookedHours.floatValue() <= getProjectAssignment().getAllottedHours()) { remainder = getProjectAssignment().getAllowedOverrun(); } else { remainder = getProjectAssignment().getAllottedHours() + getProjectAssignment().getAllowedOverrun() - totalBookedHours.floatValue(); } } return remainder; }
private void notifyPm(ProjectAssignment assignment, ProjectAssignmentStatus status) { TimesheetEntry entry; entry = timesheetDAO.getLatestTimesheetEntryForAssignment(assignment.getAssignmentId()); // over alloted - fixed if (assignment.getAssignmentType().getAssignmentTypeId() == EhourConstants.ASSIGNMENT_TIME_ALLOTTED_FIXED && status.getStatusses().contains(ProjectAssignmentStatus.Status.OVER_ALLOTTED)) { projectManagerNotifierService.mailPMFixedAllottedReached(status.getAggregate(), entry.getEntryId().getEntryDate(), assignment.getProject().getProjectManager()); } // over overrun - flex else if (assignment.getAssignmentType().getAssignmentTypeId() == EhourConstants.ASSIGNMENT_TIME_ALLOTTED_FLEX && status.getStatusses().contains(ProjectAssignmentStatus.Status.OVER_OVERRUN)) { projectManagerNotifierService.mailPMFlexOverrunReached(status.getAggregate(), entry.getEntryId().getEntryDate(), assignment.getProject().getProjectManager()); } // in overrun - flex else if (status.getStatusses().contains(ProjectAssignmentStatus.Status.IN_OVERRUN) && assignment.getAssignmentType().getAssignmentTypeId() == EhourConstants.ASSIGNMENT_TIME_ALLOTTED_FLEX) { projectManagerNotifierService.mailPMFlexAllottedReached(status.getAggregate(), entry.getEntryId().getEntryDate(), assignment.getProject().getProjectManager()); } }
private static ProjectAssignment createProjectAssignment(ProjectAssignment templateAssignment) { ProjectAssignment assignment = new ProjectAssignment(); assignment.setActive(templateAssignment.isActive()); assignment.setAllottedHours(templateAssignment.getAllottedHours()); assignment.setAllowedOverrun(templateAssignment.getAllowedOverrun()); assignment.setAssignmentType(templateAssignment.getAssignmentType()); assignment.setDateEnd(templateAssignment.getDateEnd()); assignment.setDateStart(templateAssignment.getDateStart()); assignment.setHourlyRate(templateAssignment.getHourlyRate()); assignment.setNotifyPm(templateAssignment.isNotifyPm()); assignment.setProject(templateAssignment.getProject()); assignment.setRole(templateAssignment.getRole()); assignment.setUser(templateAssignment.getUser()); return assignment; }