set the progress values, which are sent from a

subcontrated task, in read only mode.

FEA: ItEr75S31PreventingSubcontractorProgresses
This commit is contained in:
Susana Montes Pedreira 2012-03-23 08:59:17 +00:00
parent f6200b56bc
commit 6a6b52e98a
3 changed files with 63 additions and 9 deletions

View file

@ -121,4 +121,11 @@ public interface IManageOrderElementAdvancesModel {
boolean hasAnyConsolidatedAdvanceCurrentOrderElement();
boolean hasAnySubcontratedTaskOnChildren();
boolean isSubcontratedAdvanceType(AdvanceAssignment advance);
boolean isSubcontratedAdvanceTypeAndSubcontratedTask(
AdvanceAssignment advance);
}

View file

@ -224,6 +224,7 @@ public class ManageOrderElementAdvancesController extends
AdvanceAssignment advance = (AdvanceAssignment) selectedItem
.getValue();
indexSelectedItem = editAdvances.getIndexOfItem(selectedItem);
showInfoAbout(advance);
prepareEditAdvanceMeasurements(advance);
reloadAdvances();
}
@ -244,6 +245,7 @@ public class ManageOrderElementAdvancesController extends
.getSpreadAdvance();
if (advance != null) {
indexSelectedItem = getAdvanceAssignments().indexOf(advance);
showInfoAbout(advance);
prepareEditAdvanceMeasurements(advance);
} else {
selectAdvanceLine(getAdvanceAssignments().size() - 1);
@ -251,6 +253,13 @@ public class ManageOrderElementAdvancesController extends
reloadAdvances();
}
private void showInfoAbout(AdvanceAssignment advance) {
if (manageOrderElementAdvancesModel
.isSubcontratedAdvanceTypeAndSubcontratedTask(advance)) {
showErrorMessage(_("Subcontractor values are read only because they were reported by the subcontractor company."));
}
}
public void prepareEditAdvanceMeasurements(AdvanceAssignment advance) {
if (advance != null && advance.getAdvanceType() != null) {
manageOrderElementAdvancesModel
@ -351,10 +360,16 @@ public class ManageOrderElementAdvancesController extends
final AdvanceAssignment advance = (AdvanceAssignment) data;
listItem.setValue(advance);
Boolean readOnlyAdvance = false;
boolean isQualityForm = false;
if (advance.getAdvanceType() != null) {
isQualityForm = manageOrderElementAdvancesModel
.isQualityForm(advance);
if (manageOrderElementAdvancesModel
.isSubcontratedAdvanceTypeAndSubcontratedTask(advance)) {
readOnlyAdvance = true;
}
}
if ((advance instanceof DirectAdvanceAssignment)
@ -372,7 +387,7 @@ public class ManageOrderElementAdvancesController extends
appendRadioSpread(listItem);
appendCalculatedCheckbox(listItem);
appendChartCheckbox(listItem);
appendOperations(listItem);
appendOperations(listItem, readOnlyAdvance);
}
}
@ -661,17 +676,18 @@ public class ManageOrderElementAdvancesController extends
listItem.appendChild(listCell);
}
private void appendOperations(final Listitem listItem) {
private void appendOperations(final Listitem listItem, Boolean readOnly) {
Hbox hbox = new Hbox();
appendAddMeasurement(hbox, listItem);
appendRemoveButton(hbox, listItem);
appendAddMeasurement(hbox, listItem, readOnly);
appendRemoveButton(hbox, listItem, readOnly);
Listcell listCell = new Listcell();
listCell.appendChild(hbox);
listItem.appendChild(listCell);
}
private void appendAddMeasurement(final Hbox hbox, final Listitem listItem) {
private void appendAddMeasurement(final Hbox hbox, final Listitem listItem,
Boolean readOnly) {
final AdvanceAssignment advance = (AdvanceAssignment) listItem
.getValue();
final Button addMeasurementButton = createAddMeasurementButton();
@ -696,13 +712,17 @@ public class ManageOrderElementAdvancesController extends
addMeasurementButton.setDisabled(true);
addMeasurementButton
.setTooltiptext(_("Calculated progress can not be modified"));
} else if (readOnly) {
addMeasurementButton.setDisabled(true);
addMeasurementButton
.setTooltiptext(_("Subcontractor values are read only because they were reported by the subcontractor company."));
}
hbox.appendChild(addMeasurementButton);
}
private void appendRemoveButton(final Hbox hbox, final Listitem listItem) {
private void appendRemoveButton(final Hbox hbox, final Listitem listItem,
Boolean readOnly) {
final AdvanceAssignment advance = (AdvanceAssignment) listItem
.getValue();
final Button removeButton = createRemoveButton();
@ -728,6 +748,10 @@ public class ManageOrderElementAdvancesController extends
removeButton.setDisabled(true);
removeButton
.setTooltiptext(_("Consolidated progress can not be removed"));
} else if (readOnly) {
removeButton.setDisabled(true);
removeButton
.setTooltiptext(_("Subcontractor values are read only because they were reported by the subcontractor company."));
}
hbox.appendChild(removeButton);
@ -1033,7 +1057,6 @@ public class ManageOrderElementAdvancesController extends
@Override
public void render(Listitem item, Object data) {
AdvanceMeasurement advanceMeasurement = (AdvanceMeasurement) data;
item.setValue(advanceMeasurement);
appendDecimalBoxValue(item);
@ -1197,6 +1220,10 @@ public class ManageOrderElementAdvancesController extends
removeButton.setDisabled(true);
removeButton
.setTooltiptext(_("Consolidated progress measurement can not be removed"));
} else {
removeButton.setDisabled(isReadOnlyAdvanceMeasurements());
removeButton
.setTooltiptext(_("Subcontractor values are read only because they were reported by the subcontractor company."));
}
removeButton.addEventListener(Events.ON_CLICK, new EventListener() {

View file

@ -415,7 +415,26 @@ public class ManageOrderElementAdvancesModel implements
return true;
}
return this.hasSubcontractedAssociatedTask(this.orderElement);
return isSubcontratedAdvanceTypeAndSubcontratedTask(advanceAssignment);
}
@Override
public boolean isSubcontratedAdvanceTypeAndSubcontratedTask(
AdvanceAssignment advance) {
return (isSubcontratedAdvanceType(advance) && hasSubcontractedAssociatedTask(advance
.getOrderElement()));
}
@Override
public boolean isSubcontratedAdvanceType(AdvanceAssignment advance) {
AdvanceType advanceType = advance.getAdvanceType();
if (advanceType != null) {
if (advanceType.getUnitName().equals(
PredefinedAdvancedTypes.SUBCONTRACTOR.getTypeName())) {
return true;
}
}
return false;
}
@Override
@ -851,6 +870,7 @@ public class ManageOrderElementAdvancesModel implements
return orderElement.hasAnyConsolidatedAdvance();
}
@Override
public boolean hasAnySubcontratedTaskOnChildren() {
List<OrderElement> list = new ArrayList<OrderElement>();
list.add(orderElement);