[Bug #887] Fix bug

remove advance assignment whose type is quality form, if this quality
form is removed or if the progress  report is disabled.

FEA : ItEr71S04BugFixing
This commit is contained in:
Susana Montes Pedreira 2011-03-01 11:44:52 +01:00
parent cc9f528a20
commit 42c4948886
4 changed files with 51 additions and 14 deletions

View file

@ -217,6 +217,13 @@ public class AssignedTaskQualityFormsToOrderElementController extends
}
public void deleteTaskQualityForm(TaskQualityForm taskQualityForm) {
try {
assignedTaskQualityFormsToOrderElementModel
.removeAdvanceAssignmentIfNeeded(taskQualityForm);
} catch (ValidationException e) {
showInformativeMessage(e.getMessage());
return;
}
assignedTaskQualityFormsToOrderElementModel
.deleteTaskQualityForm(taskQualityForm);
reloadTaskQualityForms();
@ -291,10 +298,14 @@ public class AssignedTaskQualityFormsToOrderElementController extends
assignedTaskQualityFormsToOrderElementModel
.addAdvanceAssignmentIfNeeded(taskQualityForm);
} else {
assignedTaskQualityFormsToOrderElementModel
try {
assignedTaskQualityFormsToOrderElementModel
.removeAdvanceAssignmentIfNeeded(taskQualityForm);
} catch (ValidationException e) {
showInformativeMessage(e.getMessage());
return;
}
}
taskQualityForm.setReportAdvance(value);
} catch (DuplicateValueTrueReportGlobalAdvanceException e) {
throw new RuntimeException(e);
@ -316,6 +327,15 @@ public class AssignedTaskQualityFormsToOrderElementController extends
}
}
private void showInformativeMessage(String message) {
try {
Messagebox.show(message, _("Delete"), Messagebox.OK,
Messagebox.ERROR);
} catch (InterruptedException e) {
messagesForUser.showMessage(Level.ERROR, e.getMessage());
}
}
private void appendDetails(Row row, TaskQualityForm taskQualityForm) {
Detail details = new Detail();
details.setParent(row);

View file

@ -152,7 +152,16 @@ public class AssignedTaskQualityFormsToOrderElementModel implements
@Override
public void deleteTaskQualityForm(TaskQualityForm taskQualityForm) {
orderElement.removeTaskQualityForm(taskQualityForm);
orderElement.removeTaskQualityForm(taskQualityForm);
}
private AdvanceAssignment getAdvanceAssignment(
TaskQualityForm taskQualityForm) {
AdvanceType advanceType = taskQualityForm.getQualityForm()
.getAdvanceType();
advanceTypeDAO.reattach(advanceType);
return taskQualityForm.getOrderElement()
.getDirectAdvanceAssignmentByType(advanceType);
}
@Override
@ -309,19 +318,25 @@ public class AssignedTaskQualityFormsToOrderElementModel implements
@Override
@Transactional(readOnly = true)
public void removeAdvanceAssignmentIfNeeded(TaskQualityForm taskQualityForm) {
AdvanceType advanceType = taskQualityForm.getQualityForm()
.getAdvanceType();
advanceTypeDAO.reattach(advanceType);
AdvanceAssignment advanceAssignment = taskQualityForm.getOrderElement()
.getDirectAdvanceAssignmentByType(advanceType);
public void removeAdvanceAssignmentIfNeeded(TaskQualityForm taskQualityForm)
throws ValidationException {
AdvanceAssignment advanceAssignment = this
.getAdvanceAssignment(taskQualityForm);
if (advanceAssignment != null) {
taskQualityForm.getOrderElement().removeAdvanceAssignment(
if (advanceAssignment.getReportGlobalAdvance()) {
showMessageDeleteSpread();
} else {
taskQualityForm.getOrderElement().removeAdvanceAssignment(
advanceAssignment);
}
}
}
private void showMessageDeleteSpread() throws ValidationException {
throw new ValidationException(
_("the operation does not perform because the task has progress reports that is spread associated with this quality form."));
}
@Override
public void updateAdvancesIfNeeded() {
if (orderElement != null) {

View file

@ -150,10 +150,12 @@ public class ManageOrderElementAdvancesModel implements
fillVariables();
for (AdvanceAssignment advance : listAdvanceAssignmentsCopy) {
if ((!listAdvanceAssignments.contains(advance))
&& (advance instanceof DirectAdvanceAssignment)) {
&& (advance instanceof DirectAdvanceAssignment)
&& (!advance.getAdvanceType().isQualityForm())) {
listAdvanceAssignments.add(advance);
}
}
}
@Override
@ -273,7 +275,7 @@ public class ManageOrderElementAdvancesModel implements
for (IndirectAdvanceAssignment each : orderElement
.getIndirectAdvanceAssignments()) {
this.listAdvanceAssignments.add(each);
}
}
}
@Override

View file

@ -20,7 +20,7 @@
-->
<vbox id="${arg.id}"
apply="org.navalplanner.web.orders.ManageOrderElementAdvancesController" width="100%">
apply="org.navalplanner.web.orders.ManageOrderElementAdvancesController" width="100%">
<panel title="${i18n:_('Progress assignments')}" border="normal">
<panelchildren>
<vbox id="messagesContainerAdvances" />