ItEr59S04ValidacionEProbasFuncionaisItEr58S04: Fixing bug.
When it is changed the advance type , it is updated the advance type in the parents.
This commit is contained in:
parent
1dfd0c3963
commit
8579f09121
2 changed files with 58 additions and 7 deletions
|
|
@ -61,7 +61,14 @@ public abstract class AdvanceAssignment extends BaseEntity {
|
|||
}
|
||||
|
||||
public void setAdvanceType(AdvanceType advanceType) {
|
||||
this.advanceType = advanceType;
|
||||
AdvanceType oldType = this.advanceType;
|
||||
if (advanceType != null) {
|
||||
this.advanceType = advanceType;
|
||||
}
|
||||
|
||||
if (oldType != null && advanceType != null) {
|
||||
changeAdvanceTypeInParents(oldType, this.advanceType, this);
|
||||
}
|
||||
}
|
||||
|
||||
@NotNull(message = "advance type not specified")
|
||||
|
|
@ -69,6 +76,30 @@ public abstract class AdvanceAssignment extends BaseEntity {
|
|||
return this.advanceType;
|
||||
}
|
||||
|
||||
public void changeAdvanceTypeInParents(AdvanceType oldType,
|
||||
AdvanceType newType, AdvanceAssignment advance) {
|
||||
if (getOrderElement() != null) {
|
||||
OrderLineGroup parent = getOrderElement().getParent();
|
||||
while (parent != null) {
|
||||
|
||||
IndirectAdvanceAssignment oldIndirect = parent
|
||||
.getIndirectAdvanceAssignment(oldType);
|
||||
if (oldIndirect != null) {
|
||||
parent.removeIndirectAdvanceAssignment(oldType);
|
||||
}
|
||||
|
||||
if (!parent
|
||||
.existsIndirectAdvanceAssignmentWithTheSameType(newType)) {
|
||||
IndirectAdvanceAssignment newIndirect = advance
|
||||
.createIndirectAdvanceFor(parent);
|
||||
parent.addIndirectAdvanceAssignment(newIndirect);
|
||||
}
|
||||
|
||||
parent = parent.getParent();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public IndirectAdvanceAssignment createIndirectAdvanceFor(OrderLineGroup parent) {
|
||||
IndirectAdvanceAssignment result = new IndirectAdvanceAssignment();
|
||||
result.setAdvanceType(getAdvanceType());
|
||||
|
|
|
|||
|
|
@ -712,12 +712,9 @@ public class OrderLineGroup extends OrderElement implements
|
|||
AdvanceType advanceType) {
|
||||
Set<IndirectAdvanceAssignment> result = new HashSet<IndirectAdvanceAssignment>();
|
||||
|
||||
for (IndirectAdvanceAssignment indirectAdvanceAssignment : indirectAdvanceAssignments) {
|
||||
if (indirectAdvanceAssignment.getAdvanceType().getUnitName()
|
||||
.equals(advanceType.getUnitName())) {
|
||||
result.add(indirectAdvanceAssignment);
|
||||
break;
|
||||
}
|
||||
IndirectAdvanceAssignment indirectAdvanceAssignment = getIndirectAdvanceAssignment(advanceType);
|
||||
if(indirectAdvanceAssignment != null){
|
||||
result.add(indirectAdvanceAssignment);
|
||||
}
|
||||
|
||||
for (OrderElement orderElement : children) {
|
||||
|
|
@ -728,6 +725,17 @@ public class OrderLineGroup extends OrderElement implements
|
|||
return result;
|
||||
}
|
||||
|
||||
public IndirectAdvanceAssignment getIndirectAdvanceAssignment(
|
||||
AdvanceType advanceType) {
|
||||
for (IndirectAdvanceAssignment indirectAdvanceAssignment : indirectAdvanceAssignments) {
|
||||
if (indirectAdvanceAssignment.getAdvanceType().getUnitName()
|
||||
.equals(advanceType.getUnitName())) {
|
||||
return indirectAdvanceAssignment;
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected Set<DirectAdvanceAssignment> getAllDirectAdvanceAssignmentsReportGlobal() {
|
||||
Set<DirectAdvanceAssignment> result = new HashSet<DirectAdvanceAssignment>();
|
||||
|
|
@ -819,6 +827,18 @@ public class OrderLineGroup extends OrderElement implements
|
|||
return false;
|
||||
}
|
||||
|
||||
public boolean existsIndirectAdvanceAssignmentWithTheSameType(
|
||||
AdvanceType type) {
|
||||
String unitName = type.getUnitName();
|
||||
for (IndirectAdvanceAssignment indirectAdvanceAssignment : indirectAdvanceAssignments) {
|
||||
if (unitName.equals(indirectAdvanceAssignment.getAdvanceType()
|
||||
.getUnitName())) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void checkNoOtherGlobalAdvanceAssignment(
|
||||
DirectAdvanceAssignment newAdvanceAssignment)
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue