Index: trunk/grails-app/controllers/TaskDetailedController.groovy
===================================================================
--- trunk/grails-app/controllers/TaskDetailedController.groovy	(revision 179)
+++ trunk/grails-app/controllers/TaskDetailedController.groovy	(revision 180)
@@ -6,4 +6,5 @@
     def authenticateService
     def dateUtilService
+    def taskService
     def taskSearchService
     def filterService
@@ -186,4 +187,6 @@
 
             def inventoryMovementList = InventoryMovement.findAllByTask(taskInstance, [max:100, sort:"id", order:"desc", offset:0])
+
+            def taskModificationList = TaskModification.findAllByTask(taskInstance, [max:100, sort:"id", order:"asc", offset:0])
 
             def taskProcedureInstance = TaskProcedure.get(taskInstance.taskProcedure?.id)
@@ -215,5 +218,6 @@
                             taskRecurringScheduleInstance: taskRecurringScheduleInstance,
                             taskRecurringScheduleExits: taskRecurringScheduleExits,
-                            inventoryMovementList: inventoryMovementList]
+                            inventoryMovementList: inventoryMovementList,
+                            taskModificationList: taskModificationList]
         }
     }
@@ -263,29 +267,54 @@
 
     def update = {
-        def taskInstance = Task.get( params.id )
-        if(taskInstance) {
-            if(params.version) {
-                def version = params.version.toLong()
-                if(taskInstance.version > version) {
-
-                    taskInstance.errors.rejectValue("version", "task.optimistic.locking.failure", "Another user has updated this Task while you were editing.")
-                    render(view:'edit',model:[taskInstance:taskInstance])
-                    return
-                }
-            }
-            taskInstance.properties = params
-            if(!taskInstance.hasErrors() && taskInstance.save(flush: true)) {
+
+        if(!Task.exists(params.id)) {
+            flash.message = "Task not found with id ${params.id}"
+            redirect(action:'search')
+        }
+
+        def result = taskService.update(params)
+
+        if(!result.error) {
                 flash.message = "Task ${params.id} updated"
-                redirect(action:show,id:taskInstance.id)
-            }
-            else {
-                render(view:'edit',model:[taskInstance:taskInstance])
-            }
-        }
-        else {
-            flash.message = "Task not found with id ${params.id}"
-            redirect(action:edit,id:params.id)
-        }
-    }
+                redirect(action:show,id:result.taskInstance.id)
+        }
+        else {
+            if(result.taskInstance) {
+                render(view:'edit',model:[taskInstance:result.taskInstance])
+            }
+            else {
+                flash.message = "Task could not be updated."
+                redirect(action:'search')
+            }
+        }
+
+    }
+
+//     def update = {
+//         def taskInstance = Task.get( params.id )
+//         if(taskInstance) {
+//             if(params.version) {
+//                 def version = params.version.toLong()
+//                 if(taskInstance.version > version) {
+// 
+//                     taskInstance.errors.rejectValue("version", "task.optimistic.locking.failure", "Another user has updated this Task while you were editing.")
+//                     render(view:'edit',model:[taskInstance:taskInstance])
+//                     return
+//                 }
+//             }
+//             taskInstance.properties = params
+//             if(!taskInstance.hasErrors() && taskInstance.save(flush: true)) {
+//                 flash.message = "Task ${params.id} updated"
+//                 redirect(action:show,id:taskInstance.id)
+//             }
+//             else {
+//                 render(view:'edit',model:[taskInstance:taskInstance])
+//             }
+//         }
+//         else {
+//             flash.message = "Task not found with id ${params.id}"
+//             redirect(action:edit,id:params.id)
+//         }
+//     }
 
     def create = {
@@ -296,11 +325,19 @@
 
     def save = {
-        def taskInstance = new Task(params)
-        if(!taskInstance.hasErrors() && taskInstance.save(flush: true)) {
-            flash.message = "Task ${taskInstance.id} created"
-            redirect(action:show,id:taskInstance.id)
-        }
-        else {
-            render(view:'create',model:[taskInstance:taskInstance])
+        def result = taskService.create(params)
+
+        if(!result.error) {
+            flash.message = "Task ${result.taskInstance.id} created."
+            redirect(action: show,id: result.taskInstance.id)
+        }
+        else {
+            if(result.taskInstance) {
+                render(view:'create',model:[taskInstance:result.taskInstance])
+            }
+            else {
+                flash.message = "Could not create task."
+                redirect(action:"search")
+            }
+
         }
     }
