ItEr27S06CUAsignacionGrupoRecursosAPlanificacionItEr26S07: Just one reportGlobal for each OrderLineGroup, taking into account direct and indirect AdvanceAssignments.
This commit is contained in:
parent
7b2703b206
commit
88793f4faf
4 changed files with 59 additions and 6 deletions
|
|
@ -216,7 +216,7 @@ public abstract class OrderElement extends BaseEntity {
|
|||
}
|
||||
}
|
||||
|
||||
private void checkNoOtherGlobalAdvanceAssignment(
|
||||
protected void checkNoOtherGlobalAdvanceAssignment(
|
||||
DirectAdvanceAssignment newAdvanceAssignment)
|
||||
throws DuplicateValueTrueReportGlobalAdvanceException {
|
||||
if (!newAdvanceAssignment.getReportGlobalAdvance()) {
|
||||
|
|
|
|||
|
|
@ -21,6 +21,7 @@ import org.navalplanner.business.advance.entities.AdvanceType;
|
|||
import org.navalplanner.business.advance.entities.DirectAdvanceAssignment;
|
||||
import org.navalplanner.business.advance.entities.IndirectAdvanceAssignment;
|
||||
import org.navalplanner.business.advance.exceptions.DuplicateAdvanceAssignmentForOrderElementException;
|
||||
import org.navalplanner.business.advance.exceptions.DuplicateValueTrueReportGlobalAdvanceException;
|
||||
|
||||
public class OrderLineGroup extends OrderElement implements IOrderLineGroup {
|
||||
|
||||
|
|
@ -619,4 +620,22 @@ public class OrderLineGroup extends OrderElement implements IOrderLineGroup {
|
|||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void checkNoOtherGlobalAdvanceAssignment(
|
||||
DirectAdvanceAssignment newAdvanceAssignment)
|
||||
throws DuplicateValueTrueReportGlobalAdvanceException {
|
||||
if (!newAdvanceAssignment.getReportGlobalAdvance()) {
|
||||
return;
|
||||
}
|
||||
Set<AdvanceAssignment> advanceAssignments = new HashSet<AdvanceAssignment>();
|
||||
advanceAssignments.addAll(directAdvanceAssignments);
|
||||
advanceAssignments.addAll(indirectAdvanceAssignments);
|
||||
for (AdvanceAssignment advanceAssignment : advanceAssignments) {
|
||||
if (advanceAssignment.getReportGlobalAdvance()) {
|
||||
throw new DuplicateValueTrueReportGlobalAdvanceException(
|
||||
"Duplicate Value True ReportGlobalAdvance For Order Element",
|
||||
this, OrderElement.class);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -237,7 +237,8 @@ public class AddAdvanceAssignmentsToOrderElementTest {
|
|||
advanceAssignmentB.setAdvanceType(advanceTypeB);
|
||||
advanceAssignmentB.getAdvanceMeasurements().add(advanceMeasurement);
|
||||
|
||||
|
||||
OrderElementTest
|
||||
.removeReportGlobalAdvanceFromChildrenAdvance(container);
|
||||
container.addAdvanceAssignment(advanceAssignmentA);
|
||||
son.addAdvanceAssignment(advanceAssignmentB);
|
||||
}
|
||||
|
|
@ -254,6 +255,8 @@ public class AddAdvanceAssignmentsToOrderElementTest {
|
|||
DirectAdvanceAssignment advanceAssignmentA = createValidAdvanceAssignment(true);
|
||||
advanceAssignmentA.setAdvanceType(advanceTypeA);
|
||||
|
||||
OrderElementTest
|
||||
.removeReportGlobalAdvanceFromChildrenAdvance(container);
|
||||
container.addAdvanceAssignment(advanceAssignmentA);
|
||||
|
||||
assertThat(container.getDirectAdvanceAssignments().size(), equalTo(1));
|
||||
|
|
@ -273,6 +276,7 @@ public class AddAdvanceAssignmentsToOrderElementTest {
|
|||
DirectAdvanceAssignment anotherAssignmentWithSameType = createValidAdvanceAssignment(false);
|
||||
anotherAssignmentWithSameType.setAdvanceType(advanceTypeA);
|
||||
|
||||
OrderElementTest.removeReportGlobalAdvanceFromChildrenAdvance(father);
|
||||
father.addAdvanceAssignment(advanceAssignmentA);
|
||||
|
||||
try {
|
||||
|
|
@ -350,4 +354,19 @@ public class AddAdvanceAssignmentsToOrderElementTest {
|
|||
}
|
||||
}
|
||||
|
||||
@Test(expected = DuplicateValueTrueReportGlobalAdvanceException.class)
|
||||
public void cannotAddTwoAssignmetsDirectAndIndirectWithGlobalReportValue()
|
||||
throws Exception {
|
||||
OrderLineGroup orderLineGroup = OrderLineGroup.create();
|
||||
orderLineGroup.setName("test");
|
||||
orderLineGroup.setCode("1");
|
||||
|
||||
AdvanceType advanceType = createAndSaveType("test");
|
||||
|
||||
DirectAdvanceAssignment advanceAssignment = createValidAdvanceAssignment(true);
|
||||
advanceAssignment.setAdvanceType(advanceType);
|
||||
|
||||
orderLineGroup.addAdvanceAssignment(advanceAssignment);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -372,10 +372,11 @@ public class OrderElementTest {
|
|||
public void checkAdvancePercentageOrderGroupLineWithAssignments1()
|
||||
throws DuplicateValueTrueReportGlobalAdvanceException,
|
||||
DuplicateAdvanceAssignmentForOrderElementException {
|
||||
OrderElement orderElement = givenOrderLineGroupWithTwoOrderLines(1000,
|
||||
OrderLineGroup orderLineGroup = givenOrderLineGroupWithTwoOrderLines(
|
||||
1000,
|
||||
2000);
|
||||
|
||||
List<OrderElement> children = orderElement.getChildren();
|
||||
List<OrderElement> children = orderLineGroup.getChildren();
|
||||
addAvanceAssignmentWithMeasurement(children.get(0),
|
||||
PredefinedAdvancedTypes.UNITS.getType(), new BigDecimal(1000),
|
||||
new BigDecimal(400), true);
|
||||
|
|
@ -383,11 +384,12 @@ public class OrderElementTest {
|
|||
PredefinedAdvancedTypes.UNITS.getType(), new BigDecimal(2000),
|
||||
new BigDecimal(200), true);
|
||||
|
||||
addAvanceAssignmentWithMeasurement(orderElement,
|
||||
removeReportGlobalAdvanceFromChildrenAdvance(orderLineGroup);
|
||||
addAvanceAssignmentWithMeasurement(orderLineGroup,
|
||||
PredefinedAdvancedTypes.PERCENTAGE.getType(), new BigDecimal(
|
||||
100), new BigDecimal(90), true);
|
||||
|
||||
assertThat(orderElement.getAdvancePercentage(), equalTo(new BigDecimal(
|
||||
assertThat(orderLineGroup.getAdvancePercentage(), equalTo(new BigDecimal(
|
||||
90).divide(new BigDecimal(100))));
|
||||
}
|
||||
|
||||
|
|
@ -673,6 +675,7 @@ public class OrderElementTest {
|
|||
|
||||
AdvanceType advanceType2 = AdvanceType.create("test2", new BigDecimal(
|
||||
10000), true, new BigDecimal(1), true, false);
|
||||
removeReportGlobalAdvanceFromChildrenAdvance(orderLineGroup_1_1);
|
||||
addAvanceAssignmentWithMeasurement(orderLineGroup_1_1, advanceType2,
|
||||
new BigDecimal(100), new BigDecimal(50), true);
|
||||
|
||||
|
|
@ -882,4 +885,16 @@ public class OrderElementTest {
|
|||
.setScale(2)));
|
||||
}
|
||||
|
||||
public static void removeReportGlobalAdvanceFromChildrenAdvance(
|
||||
OrderLineGroup orderLineGroup) {
|
||||
for (IndirectAdvanceAssignment indirectAdvanceAssignment : orderLineGroup
|
||||
.getIndirectAdvanceAssignments()) {
|
||||
if (indirectAdvanceAssignment.getAdvanceType().getUnitName()
|
||||
.equals(PredefinedAdvancedTypes.CHILDREN.getTypeName())) {
|
||||
indirectAdvanceAssignment.setReportGlobalAdvance(false);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue