ItEr58S20RFMellorasAvances: Adds some improvements in the advances screen.
if is necessary, assigns a advance which type is 'Percentage' to each schedule point.
This commit is contained in:
parent
f9486de643
commit
8b3037746a
5 changed files with 98 additions and 4 deletions
|
|
@ -363,9 +363,12 @@ public abstract class OrderElement extends IntegrationEntity implements
|
|||
|
||||
public DirectAdvanceAssignment getDirectAdvanceAssignmentByType(
|
||||
AdvanceType advanceType) {
|
||||
for (DirectAdvanceAssignment directAdvanceAssignment : getDirectAdvanceAssignments()) {
|
||||
if (directAdvanceAssignment.getAdvanceType().equals(advanceType)) {
|
||||
if (advanceType != null) {
|
||||
for (DirectAdvanceAssignment directAdvanceAssignment : getDirectAdvanceAssignments()) {
|
||||
if (directAdvanceAssignment.getAdvanceType().getId().equals(
|
||||
advanceType.getId())) {
|
||||
return directAdvanceAssignment;
|
||||
}
|
||||
}
|
||||
}
|
||||
return null;
|
||||
|
|
|
|||
|
|
@ -112,4 +112,8 @@ public interface IManageOrderElementAdvancesModel {
|
|||
BigDecimal getMaxValue(AdvanceType advanceType);
|
||||
|
||||
AdvanceAssignment getSpreadAdvance();
|
||||
|
||||
void createPercentageAdvances(OrderElement orderElement)
|
||||
throws DuplicateAdvanceAssignmentForOrderElementException,
|
||||
DuplicateValueTrueReportGlobalAdvanceException;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -216,6 +216,7 @@ public class ManageOrderElementAdvancesController extends
|
|||
AdvanceAssignment advance = (AdvanceAssignment) selectedItem.getValue();
|
||||
indexSelectedItem = editAdvances.getIndexOfItem(selectedItem);
|
||||
prepareEditAdvanceMeasurements(advance);
|
||||
reloadAdvances();
|
||||
}
|
||||
|
||||
public void selectAdvanceLine(int index) {
|
||||
|
|
@ -225,6 +226,7 @@ public class ManageOrderElementAdvancesController extends
|
|||
prepareEditAdvanceMeasurements(getAdvanceAssignments().get(
|
||||
indexSelectedItem));
|
||||
}
|
||||
reloadAdvances();
|
||||
}
|
||||
|
||||
public void selectSpreadAdvanceLine() {
|
||||
|
|
@ -234,19 +236,18 @@ public class ManageOrderElementAdvancesController extends
|
|||
indexSelectedItem = getAdvanceAssignments().indexOf(advance);
|
||||
prepareEditAdvanceMeasurements(advance);
|
||||
}
|
||||
reloadAdvances();
|
||||
}
|
||||
|
||||
public void prepareEditAdvanceMeasurements(AdvanceAssignment advance) {
|
||||
if (advance != null && advance.getAdvanceType() != null) {
|
||||
manageOrderElementAdvancesModel
|
||||
.prepareEditAdvanceMeasurements(advance);
|
||||
reloadAdvances();
|
||||
}
|
||||
}
|
||||
|
||||
public void goToCreateLineAdvanceAssignment() {
|
||||
validateListAdvanceMeasurement();
|
||||
manageOrderElementAdvancesModel.addNewLineAdvaceAssignment();
|
||||
boolean fineResult = manageOrderElementAdvancesModel
|
||||
.addNewLineAdvaceAssignment();
|
||||
if (fineResult) {
|
||||
|
|
@ -1234,4 +1235,13 @@ public class ManageOrderElementAdvancesController extends
|
|||
}
|
||||
}
|
||||
|
||||
public void createPercentageAdvances(IOrderElementModel orderElementModel)
|
||||
throws DuplicateAdvanceAssignmentForOrderElementException,
|
||||
DuplicateValueTrueReportGlobalAdvanceException {
|
||||
setOrderElementModel(orderElementModel);
|
||||
manageOrderElementAdvancesModel.initEdit(getOrderElement());
|
||||
manageOrderElementAdvancesModel
|
||||
.createPercentageAdvances(getOrderElement());
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -165,6 +165,49 @@ public class ManageOrderElementAdvancesModel implements
|
|||
}
|
||||
}
|
||||
|
||||
public void createPercentageAdvances(OrderElement orderElement)
|
||||
throws DuplicateAdvanceAssignmentForOrderElementException,
|
||||
DuplicateValueTrueReportGlobalAdvanceException {
|
||||
|
||||
if (orderElement != null) {
|
||||
DirectAdvanceAssignment advancePercentage = orderElement
|
||||
.getAdvanceAssignmentByType(PredefinedAdvancedTypes.PERCENTAGE
|
||||
.getType());
|
||||
|
||||
boolean existDirectPercentageAdvance = ((advancePercentage != null) && (!advancePercentage
|
||||
.isFake()));
|
||||
|
||||
if ((orderElement.isSchedulingPoint())
|
||||
&& (orderElement.getReportGlobalAdvanceAssignment() == null)
|
||||
&& (!existDirectPercentageAdvance)) {
|
||||
createPercentageAdvance(orderElement);
|
||||
|
||||
} else if (!existDirectPercentageAdvance) {
|
||||
|
||||
for (OrderElement child : orderElement.getChildren()) {
|
||||
createPercentageAdvances(child);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void createPercentageAdvance(OrderElement orderElement)
|
||||
throws DuplicateAdvanceAssignmentForOrderElementException,
|
||||
DuplicateValueTrueReportGlobalAdvanceException {
|
||||
DirectAdvanceAssignment newAdvance = DirectAdvanceAssignment.create();
|
||||
newAdvance.setOrderElement(orderElement);
|
||||
|
||||
for (AdvanceType type : this.listAdvanceTypes) {
|
||||
if (type.getUnitName().equals(
|
||||
PredefinedAdvancedTypes.PERCENTAGE.getTypeName())) {
|
||||
newAdvance.setAdvanceType(type);
|
||||
newAdvance.setMaxValue(getMaxValue(type));
|
||||
}
|
||||
}
|
||||
newAdvance.setReportGlobalAdvance(true);
|
||||
orderElement.addAdvanceAssignment(newAdvance);
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional(readOnly = true)
|
||||
public void initEdit(OrderElement orderElement) {
|
||||
|
|
|
|||
|
|
@ -33,6 +33,8 @@ import javax.annotation.Resource;
|
|||
|
||||
import org.apache.commons.logging.LogFactory;
|
||||
import org.hibernate.validator.InvalidValue;
|
||||
import org.navalplanner.business.advance.exceptions.DuplicateAdvanceAssignmentForOrderElementException;
|
||||
import org.navalplanner.business.advance.exceptions.DuplicateValueTrueReportGlobalAdvanceException;
|
||||
import org.navalplanner.business.calendars.entities.BaseCalendar;
|
||||
import org.navalplanner.business.common.exceptions.ValidationException;
|
||||
import org.navalplanner.business.externalcompanies.entities.ExternalCompany;
|
||||
|
|
@ -508,6 +510,8 @@ public class OrderCRUDController extends GenericForwardComposer {
|
|||
}
|
||||
}
|
||||
|
||||
createPercentageAdvances();
|
||||
|
||||
// come back to the current tab after validate other tabs.
|
||||
selectTab(getCurrentTab().getId());
|
||||
|
||||
|
|
@ -530,6 +534,36 @@ public class OrderCRUDController extends GenericForwardComposer {
|
|||
|
||||
Tab tabGeneralData;
|
||||
|
||||
private void createPercentageAdvances() {
|
||||
|
||||
try {
|
||||
if (manageOrderElementAdvancesController == null) {
|
||||
Component orderElementAdvances = editWindow
|
||||
.getFellowIfAny("orderElementAdvances");
|
||||
manageOrderElementAdvancesController = (ManageOrderElementAdvancesController) orderElementAdvances
|
||||
.getVariable("manageOrderElementAdvancesController",
|
||||
true);
|
||||
}
|
||||
manageOrderElementAdvancesController
|
||||
.createPercentageAdvances(getOrderElementModel());
|
||||
} catch (DuplicateAdvanceAssignmentForOrderElementException e) {
|
||||
messagesForUser
|
||||
.showMessage(
|
||||
Level.ERROR,
|
||||
_("cannot include an Advance of the same Advance type twice"));
|
||||
} catch (DuplicateValueTrueReportGlobalAdvanceException e) {
|
||||
messagesForUser
|
||||
.showMessage(
|
||||
Level.ERROR,
|
||||
_("spread values are not valid, at least one value should be true"));
|
||||
} catch (Exception e) {
|
||||
messagesForUser
|
||||
.showMessage(
|
||||
Level.ERROR,
|
||||
_("incorrect initialization of the advance assignment controller."));
|
||||
}
|
||||
}
|
||||
|
||||
private void selectDefaultTab() {
|
||||
selectTab("tabGeneralData");
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue