diff --git a/navalplanner-webapp/src/main/java/org/navalplanner/web/orders/AssignedTaskQualityFormsToOrderElementController.java b/navalplanner-webapp/src/main/java/org/navalplanner/web/orders/AssignedTaskQualityFormsToOrderElementController.java index 471c4f9a3..c861b0ded 100644 --- a/navalplanner-webapp/src/main/java/org/navalplanner/web/orders/AssignedTaskQualityFormsToOrderElementController.java +++ b/navalplanner-webapp/src/main/java/org/navalplanner/web/orders/AssignedTaskQualityFormsToOrderElementController.java @@ -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); diff --git a/navalplanner-webapp/src/main/java/org/navalplanner/web/orders/AssignedTaskQualityFormsToOrderElementModel.java b/navalplanner-webapp/src/main/java/org/navalplanner/web/orders/AssignedTaskQualityFormsToOrderElementModel.java index 4c17f018b..21e9d2e69 100644 --- a/navalplanner-webapp/src/main/java/org/navalplanner/web/orders/AssignedTaskQualityFormsToOrderElementModel.java +++ b/navalplanner-webapp/src/main/java/org/navalplanner/web/orders/AssignedTaskQualityFormsToOrderElementModel.java @@ -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) { diff --git a/navalplanner-webapp/src/main/java/org/navalplanner/web/orders/ManageOrderElementAdvancesModel.java b/navalplanner-webapp/src/main/java/org/navalplanner/web/orders/ManageOrderElementAdvancesModel.java index b0c506e46..a9d8c0d5d 100644 --- a/navalplanner-webapp/src/main/java/org/navalplanner/web/orders/ManageOrderElementAdvancesModel.java +++ b/navalplanner-webapp/src/main/java/org/navalplanner/web/orders/ManageOrderElementAdvancesModel.java @@ -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 diff --git a/navalplanner-webapp/src/main/webapp/orders/_listOrderElementAdvances.zul b/navalplanner-webapp/src/main/webapp/orders/_listOrderElementAdvances.zul index 999c56a6f..5bd4026c5 100644 --- a/navalplanner-webapp/src/main/webapp/orders/_listOrderElementAdvances.zul +++ b/navalplanner-webapp/src/main/webapp/orders/_listOrderElementAdvances.zul @@ -20,7 +20,7 @@ --> + apply="org.navalplanner.web.orders.ManageOrderElementAdvancesController" width="100%">