ItEr28S14RFVistaGraficaInformacionAvance: Fixed bug in "getAdvancePercentage" when a measurement is in the future. Added the corresponding test.
This commit is contained in:
parent
3d7c8e4ee8
commit
bd303482f8
4 changed files with 54 additions and 13 deletions
|
|
@ -285,9 +285,9 @@ public abstract class OrderElement extends BaseEntity {
|
|||
}
|
||||
|
||||
public BigDecimal getAdvancePercentage() {
|
||||
return getAdvancePercentage(new LocalDate());
|
||||
return getAdvancePercentage(null);
|
||||
}
|
||||
|
||||
protected abstract BigDecimal getAdvancePercentage(LocalDate date);
|
||||
public abstract BigDecimal getAdvancePercentage(LocalDate date);
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -350,9 +350,12 @@ public class OrderLine extends OrderElement {
|
|||
}
|
||||
|
||||
@Override
|
||||
protected BigDecimal getAdvancePercentage(LocalDate date) {
|
||||
public BigDecimal getAdvancePercentage(LocalDate date) {
|
||||
for (DirectAdvanceAssignment directAdvanceAssignment : directAdvanceAssignments) {
|
||||
if (directAdvanceAssignment.getReportGlobalAdvance()) {
|
||||
if (date == null) {
|
||||
return directAdvanceAssignment.getLastPercentage();
|
||||
}
|
||||
return directAdvanceAssignment.getAdvancePercentage(date);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -177,9 +177,12 @@ public class OrderLineGroup extends OrderElement implements IOrderLineGroup {
|
|||
}
|
||||
|
||||
@Override
|
||||
protected BigDecimal getAdvancePercentage(LocalDate date) {
|
||||
public BigDecimal getAdvancePercentage(LocalDate date) {
|
||||
for (DirectAdvanceAssignment directAdvanceAssignment : directAdvanceAssignments) {
|
||||
if (directAdvanceAssignment.getReportGlobalAdvance()) {
|
||||
if (date == null) {
|
||||
return directAdvanceAssignment.getLastPercentage();
|
||||
}
|
||||
return directAdvanceAssignment.getAdvancePercentage(date);
|
||||
}
|
||||
}
|
||||
|
|
@ -188,9 +191,15 @@ public class OrderLineGroup extends OrderElement implements IOrderLineGroup {
|
|||
if (indirectAdvanceAssignment.getReportGlobalAdvance()) {
|
||||
if (indirectAdvanceAssignment.getAdvanceType().getUnitName()
|
||||
.equals(PredefinedAdvancedTypes.CHILDREN.getTypeName())) {
|
||||
if (date == null) {
|
||||
return getAdvancePercentageChildren();
|
||||
}
|
||||
return getAdvancePercentageChildren(date);
|
||||
} else {
|
||||
DirectAdvanceAssignment directAdvanceAssignment = calculateFakeDirectAdvanceAssignment(indirectAdvanceAssignment);
|
||||
if (date == null) {
|
||||
return directAdvanceAssignment.getLastPercentage();
|
||||
}
|
||||
return directAdvanceAssignment.getAdvancePercentage(date);
|
||||
}
|
||||
}
|
||||
|
|
@ -200,17 +209,21 @@ public class OrderLineGroup extends OrderElement implements IOrderLineGroup {
|
|||
}
|
||||
|
||||
public BigDecimal getAdvancePercentageChildren() {
|
||||
return getAdvancePercentageChildren(new LocalDate());
|
||||
return getAdvancePercentageChildren(null);
|
||||
}
|
||||
|
||||
protected BigDecimal getAdvancePercentageChildren(LocalDate date) {
|
||||
public BigDecimal getAdvancePercentageChildren(LocalDate date) {
|
||||
Integer hours = getWorkHours();
|
||||
BigDecimal result = new BigDecimal(0);
|
||||
|
||||
if (hours > 0) {
|
||||
for (OrderElement orderElement : children) {
|
||||
BigDecimal childPercentage = orderElement
|
||||
.getAdvancePercentage(date);
|
||||
BigDecimal childPercentage;
|
||||
if (date == null) {
|
||||
childPercentage = orderElement.getAdvancePercentage();
|
||||
} else {
|
||||
childPercentage = orderElement.getAdvancePercentage(date);
|
||||
}
|
||||
Integer childHours = orderElement.getWorkHours();
|
||||
result = result.add(childPercentage.multiply(new BigDecimal(
|
||||
childHours)));
|
||||
|
|
|
|||
|
|
@ -114,8 +114,18 @@ public class OrderElementTest {
|
|||
boolean reportGlobalAdvance)
|
||||
throws DuplicateValueTrueReportGlobalAdvanceException,
|
||||
DuplicateAdvanceAssignmentForOrderElementException {
|
||||
addAvanceAssignmentWithMeasurement(orderElement, advanceType, maxValue,
|
||||
currentValue, reportGlobalAdvance, new LocalDate());
|
||||
}
|
||||
|
||||
public static void addAvanceAssignmentWithMeasurement(
|
||||
OrderElement orderElement, AdvanceType advanceType,
|
||||
BigDecimal maxValue, BigDecimal currentValue,
|
||||
boolean reportGlobalAdvance, LocalDate date)
|
||||
throws DuplicateValueTrueReportGlobalAdvanceException,
|
||||
DuplicateAdvanceAssignmentForOrderElementException {
|
||||
AdvanceMeasurement advanceMeasurement = AdvanceMeasurement.create();
|
||||
advanceMeasurement.setDate(new LocalDate());
|
||||
advanceMeasurement.setDate(date);
|
||||
advanceMeasurement.setValue(currentValue);
|
||||
|
||||
DirectAdvanceAssignment advanceAssignment = givenAdvanceAssigement(
|
||||
|
|
@ -175,18 +185,33 @@ public class OrderElementTest {
|
|||
}
|
||||
|
||||
@Test
|
||||
public void checkAdvancePercentageOrderLineWithTwoAssignments2()
|
||||
public void checkAdvancePercentageOrderLineWithFutureAdvanceMeasurement()
|
||||
throws DuplicateValueTrueReportGlobalAdvanceException,
|
||||
DuplicateAdvanceAssignmentForOrderElementException {
|
||||
OrderLine orderLine = givenOrderLine("name", "code", 1000);
|
||||
|
||||
LocalDate future = new LocalDate().plusWeeks(1);
|
||||
addAvanceAssignmentWithMeasurement(orderLine,
|
||||
givenAdvanceType("test1"), new BigDecimal(2000),
|
||||
new BigDecimal(200), true, future);
|
||||
|
||||
assertThat(orderLine.getAdvancePercentage(), equalTo(new BigDecimal(10)
|
||||
.setScale(2).divide(new BigDecimal(100))));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void checkAdvancePercentageOrderLineWithTwoAssignments3()
|
||||
throws DuplicateValueTrueReportGlobalAdvanceException,
|
||||
DuplicateAdvanceAssignmentForOrderElementException {
|
||||
OrderLine orderLine = givenOrderLine("name", "code", 1000);
|
||||
|
||||
addAvanceAssignmentWithMeasurement(orderLine,
|
||||
givenAdvanceType("test1"), new BigDecimal(2000),
|
||||
PredefinedAdvancedTypes.UNITS.getType(), new BigDecimal(2000),
|
||||
new BigDecimal(200), false);
|
||||
|
||||
addAvanceAssignmentWithMeasurement(orderLine,
|
||||
givenAdvanceType("test2"), new BigDecimal(1000),
|
||||
new BigDecimal(600), true);
|
||||
PredefinedAdvancedTypes.PERCENTAGE.getType(), new BigDecimal(
|
||||
1000), new BigDecimal(600), true);
|
||||
|
||||
assertThat(orderLine.getAdvancePercentage(), equalTo(new BigDecimal(60)
|
||||
.setScale(2).divide(new BigDecimal(100))));
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue