[Bug #1305] Prevent adding progress measurement before last consolidated date
FEA: ItEr75S04BugFixing
This commit is contained in:
parent
250d93185a
commit
8f933ae7c0
3 changed files with 51 additions and 2 deletions
|
|
@ -116,4 +116,7 @@ public interface IManageOrderElementAdvancesModel {
|
|||
|
||||
AdvanceAssignment getSpreadAdvance();
|
||||
|
||||
LocalDate getLastConsolidatedMeasurementDate(
|
||||
AdvanceAssignment advanceAssignment);
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -276,7 +276,8 @@ public class ManageOrderElementAdvancesController extends
|
|||
.addNewLineAdvaceMeasurement();
|
||||
if ((newMeasure != null)
|
||||
&& (manageOrderElementAdvancesModel
|
||||
.hasConsolidatedAdvances(newMeasure))) {
|
||||
.hasConsolidatedAdvances(newMeasure
|
||||
.getAdvanceAssignment()))) {
|
||||
newMeasure.setDate(null);
|
||||
}
|
||||
reloadAdvances();
|
||||
|
|
@ -1294,6 +1295,16 @@ public class ManageOrderElementAdvancesController extends
|
|||
return _("Value is not valid, the value must be greater than the value of the previous progress.");
|
||||
}
|
||||
}
|
||||
|
||||
LocalDate consolidatedUntil = manageOrderElementAdvancesModel
|
||||
.getLastConsolidatedMeasurementDate(measurement
|
||||
.getAdvanceAssignment());
|
||||
if (consolidatedUntil != null) {
|
||||
if (consolidatedUntil.compareTo(measurement.getDate()) >= 0) {
|
||||
return _("Date is not valid, it must be greater than the last progress consolidation");
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -57,6 +57,9 @@ import org.libreplan.business.orders.daos.IOrderElementDAO;
|
|||
import org.libreplan.business.orders.entities.OrderElement;
|
||||
import org.libreplan.business.planner.entities.consolidations.CalculatedConsolidatedValue;
|
||||
import org.libreplan.business.planner.entities.consolidations.CalculatedConsolidation;
|
||||
import org.libreplan.business.planner.entities.consolidations.Consolidation;
|
||||
import org.libreplan.business.planner.entities.consolidations.NonCalculatedConsolidatedValue;
|
||||
import org.libreplan.business.planner.entities.consolidations.NonCalculatedConsolidation;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.beans.factory.config.BeanDefinition;
|
||||
import org.springframework.context.annotation.Scope;
|
||||
|
|
@ -216,7 +219,10 @@ public class ManageOrderElementAdvancesModel implements
|
|||
private void forceLoadAdvanceConsolidatedValues(
|
||||
DirectAdvanceAssignment advance) {
|
||||
for (AdvanceMeasurement measurement : advance.getAdvanceMeasurements()) {
|
||||
measurement.getNonCalculatedConsolidatedValues().size();
|
||||
for (NonCalculatedConsolidatedValue each : measurement
|
||||
.getNonCalculatedConsolidatedValues()) {
|
||||
each.getConsolidation().getConsolidatedUntil();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -789,4 +795,33 @@ public class ManageOrderElementAdvancesModel implements
|
|||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public LocalDate getLastConsolidatedMeasurementDate(
|
||||
AdvanceAssignment advance) {
|
||||
List<Consolidation> consolidations = new ArrayList<Consolidation>();
|
||||
if (advance instanceof DirectAdvanceAssignment) {
|
||||
Set<NonCalculatedConsolidation> nonCalculatedConsolidations = ((DirectAdvanceAssignment) advance)
|
||||
.getNonCalculatedConsolidation();
|
||||
consolidations.addAll(nonCalculatedConsolidations);
|
||||
} else {
|
||||
Set<CalculatedConsolidation> calculatedConsolidations = ((IndirectAdvanceAssignment) advance)
|
||||
.getCalculatedConsolidation();
|
||||
consolidations.addAll(calculatedConsolidations);
|
||||
}
|
||||
|
||||
if (consolidations.isEmpty()) {
|
||||
return null;
|
||||
}
|
||||
|
||||
Collections.sort(consolidations, new Comparator<Consolidation>() {
|
||||
@Override
|
||||
public int compare(Consolidation o1, Consolidation o2) {
|
||||
return o1.getConsolidatedUntil().compareTo(
|
||||
o2.getConsolidatedUntil());
|
||||
}
|
||||
});
|
||||
return consolidations.get(consolidations.size() - 1)
|
||||
.getConsolidatedUntil();
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue