[Bug #1039] Added new test to check spread advance and set them randomly if needed.
FEA: ItEr74S07WBSTreeRefactoring
This commit is contained in:
parent
0041ff7512
commit
1ddeb946fa
4 changed files with 72 additions and 27 deletions
|
|
@ -556,6 +556,7 @@ public abstract class OrderElement extends IntegrationEntity implements
|
|||
removeChildrenAdvanceInParents(this.getParent());
|
||||
}
|
||||
markAsDirtyLastAdvanceMeasurementForSpreading();
|
||||
updateSpreadAdvance();
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -1403,4 +1404,26 @@ public abstract class OrderElement extends IntegrationEntity implements
|
|||
return result;
|
||||
}
|
||||
|
||||
protected void updateSpreadAdvance() {
|
||||
if (getReportGlobalAdvanceAssignment() == null) {
|
||||
// Set PERCENTAGE type as spread if any
|
||||
String type = PredefinedAdvancedTypes.PERCENTAGE.getTypeName();
|
||||
for (DirectAdvanceAssignment each : directAdvanceAssignments) {
|
||||
if (each.getAdvanceType() != null
|
||||
&& each.getAdvanceType().getType() != null
|
||||
&& each.getAdvanceType().getType().equals(type)) {
|
||||
each.setReportGlobalAdvance(true);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
// Otherwise, set first advance assignment
|
||||
if (!directAdvanceAssignments.isEmpty()) {
|
||||
directAdvanceAssignments.iterator().next()
|
||||
.setReportGlobalAdvance(true);
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -234,6 +234,7 @@ public class OrderLine extends OrderElement {
|
|||
if (advanceAssignment != null) {
|
||||
advanceAssignment.setReportGlobalAdvance(false);
|
||||
}
|
||||
markAsDirtyLastAdvanceMeasurementForSpreading();
|
||||
}
|
||||
|
||||
public boolean containsHoursGroup(String code) {
|
||||
|
|
|
|||
|
|
@ -164,30 +164,28 @@ public class OrderLineGroup extends OrderElement implements
|
|||
}
|
||||
}
|
||||
|
||||
private void updateSpreadAdvance(){
|
||||
if(getReportGlobalAdvanceAssignment() == null){
|
||||
AdvanceType type = PredefinedAdvancedTypes.PERCENTAGE.getType();
|
||||
DirectAdvanceAssignment advancePercentage = getAdvanceAssignmentByType(type);
|
||||
if(advancePercentage != null) {
|
||||
if(advancePercentage.isFake()){
|
||||
for (IndirectAdvanceAssignment each : getIndirectAdvanceAssignments()) {
|
||||
if (type != null && each.getAdvanceType().getId().equals(type.getId())) {
|
||||
each.setReportGlobalAdvance(true);
|
||||
}
|
||||
}
|
||||
}else{
|
||||
advancePercentage.setReportGlobalAdvance(true);
|
||||
}
|
||||
} else {
|
||||
for (DirectAdvanceAssignment advance : getDirectAdvanceAssignments()) {
|
||||
advance.setReportGlobalAdvance(true);
|
||||
return;
|
||||
}
|
||||
for (IndirectAdvanceAssignment advance : getIndirectAdvanceAssignments()) {
|
||||
advance.setReportGlobalAdvance(true);
|
||||
@Override
|
||||
protected void updateSpreadAdvance() {
|
||||
if (getReportGlobalAdvanceAssignment() == null) {
|
||||
// Set CHILDREN type as spread if any
|
||||
String type = PredefinedAdvancedTypes.CHILDREN.getTypeName();
|
||||
for (IndirectAdvanceAssignment each : indirectAdvanceAssignments) {
|
||||
if (each.getAdvanceType() != null
|
||||
&& each.getAdvanceType().getType() != null
|
||||
&& each.getAdvanceType().getType().equals(type)) {
|
||||
each.setReportGlobalAdvance(true);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
// Otherwise, set first indirect advance assignment
|
||||
if (!indirectAdvanceAssignments.isEmpty()) {
|
||||
indirectAdvanceAssignments.iterator().next()
|
||||
.setReportGlobalAdvance(true);
|
||||
return;
|
||||
}
|
||||
|
||||
super.updateSpreadAdvance();
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -925,12 +923,7 @@ public class OrderLineGroup extends OrderElement implements
|
|||
}
|
||||
if (toRemove != null) {
|
||||
indirectAdvanceAssignments.remove(toRemove);
|
||||
if (toRemove.getReportGlobalAdvance()) {
|
||||
IndirectAdvanceAssignment childrenAdvance = getChildrenAdvance();
|
||||
if (childrenAdvance != null) {
|
||||
childrenAdvance.setReportGlobalAdvance(true);
|
||||
}
|
||||
}
|
||||
updateSpreadAdvance();
|
||||
}
|
||||
|
||||
if (parent != null) {
|
||||
|
|
@ -1010,6 +1003,7 @@ public class OrderLineGroup extends OrderElement implements
|
|||
if (advanceAssignment != null) {
|
||||
advanceAssignment.setReportGlobalAdvance(false);
|
||||
}
|
||||
markAsDirtyLastAdvanceMeasurementForSpreading();
|
||||
}
|
||||
|
||||
public DirectAdvanceAssignment getAdvanceAssignmentByType(AdvanceType type) {
|
||||
|
|
|
|||
|
|
@ -23,6 +23,7 @@ package org.navalplanner.business.test.orders.entities;
|
|||
|
||||
import static org.hamcrest.CoreMatchers.equalTo;
|
||||
import static org.junit.Assert.assertFalse;
|
||||
import static org.junit.Assert.assertNotNull;
|
||||
import static org.junit.Assert.assertThat;
|
||||
import static org.junit.Assert.assertTrue;
|
||||
import static org.junit.Assert.fail;
|
||||
|
|
@ -1148,4 +1149,30 @@ public class OrderElementTest {
|
|||
.iterator().next().isValid());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void checkSpreadAdvanceInOrderLine()
|
||||
throws DuplicateValueTrueReportGlobalAdvanceException,
|
||||
DuplicateAdvanceAssignmentForOrderElementException {
|
||||
OrderLine orderLine = givenOrderLine("element", "element-code", 100);
|
||||
|
||||
AdvanceType advanceType1 = PredefinedAdvancedTypes.PERCENTAGE.getType();
|
||||
AdvanceType advanceType2 = PredefinedAdvancedTypes.UNITS.getType();
|
||||
|
||||
addAvanceAssignmentWithoutMeasurement(orderLine, advanceType1,
|
||||
BigDecimal.TEN, true);
|
||||
addAvanceAssignmentWithoutMeasurement(orderLine, advanceType2,
|
||||
BigDecimal.TEN, false);
|
||||
|
||||
assertThat(orderLine.getReportGlobalAdvanceAssignment()
|
||||
.getAdvanceType(), equalTo(advanceType1));
|
||||
assertNotNull(orderLine.getReportGlobalAdvanceAssignment());
|
||||
|
||||
orderLine.removeAdvanceAssignment(orderLine
|
||||
.getAdvanceAssignmentByType(advanceType1));
|
||||
|
||||
assertNotNull(orderLine.getReportGlobalAdvanceAssignment());
|
||||
assertThat(orderLine.getReportGlobalAdvanceAssignment()
|
||||
.getAdvanceType(), equalTo(advanceType2));
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue