Index: trunk/grails-app/services/TaskService.groovy
===================================================================
--- trunk/grails-app/services/TaskService.groovy	(revision 835)
+++ trunk/grails-app/services/TaskService.groovy	(revision 838)
@@ -353,7 +353,10 @@
                 return fail(code:"default.create.failure")
 
-            // If task status is "Not Started" and entry type is "Work Done" and time has been booked.
+            // If task status is "Not Started"
+            // and entry type is "Work Done" or "PM Entry"
+            // and time has been booked.
             // Then we create the started modification and set task status.
-            if(taskInstance.taskStatus.id == 1 && result.entryInstance.entryType.id == 3
+            if(taskInstance.taskStatus.id == 1
+                && (result.entryInstance.entryType.id == 3 || result.entryInstance.entryType.id == 6)
                 && (result.entryInstance.durationHour + result.entryInstance.durationMinute > 0)) {
 
@@ -368,8 +371,20 @@
                 // Set task status to "In Progress".
                 taskInstance.taskStatus = TaskStatus.read(2)
-
-                if(taskInstance.hasErrors() || !taskInstance.save())
-                    return fail(field:"task", code:"task.failedToSave")
-            }
+            }
+
+            // If PM Entry update task.highestSeverity
+            if(result.entryInstance.entryType.id == 6) {
+                def clist = []
+                taskInstance.entries.each { entry ->
+                    if(entry.entryType.id == 6)
+                        clist << entry.highestSeverity
+                }
+
+                if(clist)
+                    taskInstance.highestSeverity = clist.sort{p1,p2 -> p2.id <=> p1.id}[0]
+            }
+
+            if(taskInstance.hasErrors() || !taskInstance.save())
+                return fail(field:"task", code:"task.failedToSave")
 
             // Success.
