protected void addPremiumTimeHourDetail(TimeBlock.Builder block, BigDecimal hours, BigDecimal totalMinutes, String earnCode) { List<TimeHourDetail.Builder> details = block.getTimeHourDetails(); TimeHourDetail.Builder premium = TimeHourDetail.Builder.create(); premium.setHours(hours); premium.setEarnCode(earnCode); premium.setTotalMinutes(totalMinutes); premium.setTkTimeBlockId(block.getTkTimeBlockId()); if (!details.contains(premium)) { details.add(premium); } }
private TimeBlock applyLunchRuleToDetails(TimeBlock block, DeptLunchRule rule, Map<String, TimeBlock> clockIdToTimeBlockMap) { TimeBlock.Builder tbBuilder = TimeBlock.Builder.create(block); List<TimeHourDetail.Builder> details = tbBuilder.getTimeHourDetails(); // TODO : Assumption here is that there will be one time hour detail -- May not be accurate. if (details.size() == 1) { TimeHourDetail.Builder detail = details.get(0); BigDecimal lunchHours = TKUtils.convertMinutesToHours(rule.getDeductionMins()); BigDecimal newMinutes = detail.getTotalMinutes().subtract(rule.getDeductionMins()); //BigDecimal newHours = detail.getHours().subtract(lunchHours).setScale(HrConstants.BIG_DECIMAL_SCALE, HrConstants.BIG_DECIMAL_SCALE_ROUNDING); detail.setTotalMinutes(newMinutes); detail.setHours(TKUtils.convertMinutesToHours(newMinutes)); TimeHourDetail.Builder lunchDetail = TimeHourDetail.Builder.create(); lunchDetail.setHours(lunchHours.multiply(HrConstants.BIG_DECIMAL_NEGATIVE_ONE)); lunchDetail.setEarnCode(HrConstants.LUNCH_EARN_CODE); lunchDetail.setTkTimeBlockId(block.getTkTimeBlockId()); //Deduct from total for worked hours tbBuilder.setHours(block.getHours().subtract(lunchHours,HrConstants.MATH_CONTEXT)); tbBuilder.setTotalMinutes(block.getTotalMinutes().subtract(rule.getDeductionMins(), HrConstants.MATH_CONTEXT)); details.add(lunchDetail); clockIdToTimeBlockMap.put(block.getClockLogEndId(), tbBuilder.build()); } else { // TODO : Determine what to do in this case. LOG.warn("Hour details size > 1 in Lunch rule application."); } return tbBuilder.build(); }
if (tb.getTkTimeBlockId().compareTo(tdaf.getTkTimeBlockId()) == 0) { updatedTimeBlock = TimeBlock.Builder.create(tb); oldDetailList = updatedTimeBlock.getTimeHourDetails(); oldAssignmenString = updatedTimeBlock.getAssignmentKey(); updatedTimeBlock.setJobNumber(assignmentKey.getJobNumber());
this.groupKeyCode = builder.getGroupKeyCode(); this.groupKey = builder.getGroupKey() == null ? null : builder.getGroupKey().build(); this.timeHourDetails = ModelObjectUtils.buildImmutableCopy(builder.getTimeHourDetails()); this.pushBackward = builder.isPushBackward(); this.beginTimeDisplay = builder.getBeginTimeDisplay();