/** * 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(); }
/** * 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; }
int compared; if (assignment.getAllottedHours() != null) compared = assignment.getAllottedHours().compareTo(statusAggregateHours);
projectAssignment.getAllottedHours() != null && hours.floatValue() > 0 && projectAssignment.getAllottedHours() > 0) { percentage = Optional.of((hours.floatValue() / projectAssignment.getAllottedHours()) * 100);
if (assignment.getAllottedHours().compareTo(statusAggregateHours) > 0) else if (statusAggregateHours >= (assignment.getAllottedHours() + assignment.getAllowedOverrun())) float totalAllowed = assignment.getAllottedHours() + assignment.getAllowedOverrun();
/** * 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; }
@Test public void should_assign_users_to_project_using_template_assignment() { ProjectAssignment templateAssignment = ProjectAssignmentObjectMother.createProjectAssignment(1); templateAssignment.setAllottedHours(5f); User userA = UserObjectMother.createUser(); userA.setLastName("A"); User userB = UserObjectMother.createUser(); userB.setLastName("B"); userB.setUserId(2); List<User> users = Arrays.asList(userA, userB); service.assignUsersToProjects(users, templateAssignment); ArgumentCaptor<ProjectAssignment> captor = ArgumentCaptor.forClass(ProjectAssignment.class); verify(projectAssignmentDao, times(2)).persist(captor.capture()); List<ProjectAssignment> assignments = captor.getAllValues(); ProjectAssignment assignment = assignments.get(0); assertEquals(userA, assignment.getUser()); assertEquals(5f, assignment.getAllottedHours(), 0); }
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; }