ItEr59S04ValidacionEProbasFuncionaisItEr58S04 : Fixing bug.
the calculated advance is modified to check precision.
This commit is contained in:
parent
833c1b1eba
commit
228c4675b2
1 changed files with 29 additions and 3 deletions
|
|
@ -604,7 +604,7 @@ public class OrderLineGroup extends OrderElement implements
|
|||
advanceMeasurement.setAdvanceAssignment(advanceAssignment);
|
||||
advanceMeasurement.setDate(date);
|
||||
previousResult = previousResult.add(add);
|
||||
advanceMeasurement.setValue(previousResult);
|
||||
checkAndSetValue(advanceMeasurement, previousResult);
|
||||
advanceMeasurement.setCommunicationDate(communicationDate);
|
||||
result.add(advanceMeasurement);
|
||||
}
|
||||
|
|
@ -631,7 +631,7 @@ public class OrderLineGroup extends OrderElement implements
|
|||
AdvanceMeasurement advanceMeasurement = AdvanceMeasurement.create();
|
||||
advanceMeasurement.setAdvanceAssignment(advanceAssignment);
|
||||
advanceMeasurement.setDate(date);
|
||||
advanceMeasurement.setValue(previousResult.add(add));
|
||||
checkAndSetValue(advanceMeasurement, previousResult);
|
||||
previousResult = advanceMeasurement.getValue();
|
||||
advanceMeasurement.setCommunicationDate(communicationDate);
|
||||
result.add(advanceMeasurement);
|
||||
|
|
@ -659,7 +659,7 @@ public class OrderLineGroup extends OrderElement implements
|
|||
AdvanceMeasurement advanceMeasurement = AdvanceMeasurement.create();
|
||||
advanceMeasurement.setAdvanceAssignment(advanceAssignment);
|
||||
advanceMeasurement.setDate(date);
|
||||
advanceMeasurement.setValue(previousResult.add(add));
|
||||
checkAndSetValue(advanceMeasurement, previousResult);
|
||||
previousResult = advanceMeasurement.getValue();
|
||||
advanceMeasurement.setCommunicationDate(communicationDate);
|
||||
result.add(advanceMeasurement);
|
||||
|
|
@ -667,6 +667,32 @@ public class OrderLineGroup extends OrderElement implements
|
|||
|
||||
}
|
||||
|
||||
private void checkAndSetValue(AdvanceMeasurement advanceMeasurement,
|
||||
BigDecimal previousResult) {
|
||||
advanceMeasurement.setValue(previousResult);
|
||||
boolean checkPrecision = advanceMeasurement
|
||||
.checkConstraintValidPrecision();
|
||||
if (!checkPrecision) {
|
||||
AdvanceAssignment advanceAssignment = advanceMeasurement
|
||||
.getAdvanceAssignment();
|
||||
if ((previousResult == null) || (advanceAssignment == null)
|
||||
|| (advanceAssignment.getAdvanceType() == null)) {
|
||||
return;
|
||||
}
|
||||
|
||||
BigDecimal precision = advanceAssignment.getAdvanceType()
|
||||
.getUnitPrecision();
|
||||
BigDecimal result[] = previousResult.divideAndRemainder(precision);
|
||||
BigDecimal checkResult;
|
||||
if (previousResult.compareTo(result[1]) >= 0) {
|
||||
checkResult = previousResult.subtract(result[1]);
|
||||
} else {
|
||||
checkResult = previousResult.add(result[1]);
|
||||
}
|
||||
advanceMeasurement.setValue(checkResult);
|
||||
}
|
||||
}
|
||||
|
||||
private BigDecimal addMeasure(BigDecimal add, BigDecimal totalHours,
|
||||
BigDecimal orderElementHours) {
|
||||
if ((totalHours != null) && (totalHours.compareTo(BigDecimal.ZERO) > 0)) {
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue