[Bug #1307] Prevent changing spread progress in children when parents are consolidated

FEA: ItEr75S04BugFixing
This commit is contained in:
Manuel Rego Casasnovas 2011-12-27 18:15:10 +01:00
parent 2b9a7ec6fc
commit 87f4993c43
6 changed files with 55 additions and 5 deletions

View file

@ -259,4 +259,8 @@ public class DirectAdvanceAssignment extends AdvanceAssignment {
return copy;
}
public boolean hasAnyConsolidationValue() {
return !nonCalculatedConsolidations.isEmpty();
}
}

View file

@ -81,4 +81,8 @@ public class IndirectAdvanceAssignment extends AdvanceAssignment {
return calculatedConsolidations;
}
public boolean hasAnyConsolidationValue() {
return !calculatedConsolidations.isEmpty();
}
}

View file

@ -1459,4 +1459,28 @@ public abstract class OrderElement extends IntegrationEntity implements
return super.toString() + " :: " + getName();
}
/**
* Checks if it has nay consolidated advance, if not checks if any parent
* has it
*/
public boolean hasAnyConsolidatedAdvance() {
for (DirectAdvanceAssignment each : directAdvanceAssignments) {
if (each.hasAnyConsolidationValue()) {
return true;
}
}
for (IndirectAdvanceAssignment each : getIndirectAdvanceAssignments()) {
if (each.hasAnyConsolidationValue()) {
return true;
}
}
if (parent != null) {
return parent.hasAnyConsolidatedAdvance();
}
return false;
}
}

View file

@ -119,4 +119,6 @@ public interface IManageOrderElementAdvancesModel {
LocalDate getLastConsolidatedMeasurementDate(
AdvanceAssignment advanceAssignment);
boolean hasAnyConsolidatedAdvanceCurrentOrderElement();
}

View file

@ -875,13 +875,21 @@ public class ManageOrderElementAdvancesController extends
private void setReportGlobalAdvance(final Listitem item) {
boolean spread = true;
if (!radioSpreadIsConsolidated()) {
for (AdvanceAssignment advance : this.getAdvanceAssignments()) {
advance.setReportGlobalAdvance(false);
}
} else {
if (manageOrderElementAdvancesModel
.hasAnyConsolidatedAdvanceCurrentOrderElement()) {
showErrorMessage(_("Spread progress cannot be changed if there is a consolidation in any progress assignment from root task"));
spread = false;
} else {
if (!radioSpreadIsConsolidated()) {
for (AdvanceAssignment advance : this.getAdvanceAssignments()) {
advance.setReportGlobalAdvance(false);
}
} else {
spread = false;
}
}
((AdvanceAssignment) item.getValue()).setReportGlobalAdvance(spread);
Util.reloadBindings(editAdvances);
setSelectedAdvanceLine();

View file

@ -831,4 +831,12 @@ public class ManageOrderElementAdvancesModel implements
.getConsolidatedUntil();
}
@Override
public boolean hasAnyConsolidatedAdvanceCurrentOrderElement() {
if (orderElement == null) {
return false;
}
return orderElement.hasAnyConsolidatedAdvance();
}
}