Index: /trunk/grails-app/services/CreateDataService.groovy
===================================================================
--- /trunk/grails-app/services/CreateDataService.groovy	(revision 533)
+++ /trunk/grails-app/services/CreateDataService.groovy	(revision 534)
@@ -63,5 +63,13 @@
         createBaseAddressTypes()
         createBaseContactTypes()
+        createBaseMaintenancePolicies()
         createBaseInventoryItemPurchaseTypes()
+
+        // Assets
+        createBaseExtenededAttributeTypes()
+
+        // Inventory
+        createBaseInventoryTypes()
+        createBaseInventoryMovementTypes()
 
         // Tasks
@@ -74,12 +82,4 @@
         createBaseEntryTypes()
 
-        // Inventory
-        createBaseInventoryTypes()
-        createBaseInventoryMovementTypes()
-
-        // Assets
-        createBaseExtenededAttributeTypes()
-        createBaseMaintenancePolicies()
-
         // Record that data has been created.
         appConfigService.set("baseDataCreated")
@@ -117,4 +117,16 @@
         createDemoCostCodes()
 
+        // Assets
+        createDemoLifePlan()
+        createDemoSections()
+        createDemoAssetTree()
+        createDemoAssetExtenedAttributes()
+
+        // Inventory
+        createDemoInventoryStores()  /// @todo: Perhaps a 'createQuickStartData' method?
+        createDemoInventoryLocations()
+        createDemoInventoryGroups() /// @todo: Perhaps a 'createQuickStartData' method?
+        createDemoInventoryItems()
+
         // Tasks
         createDemoTasks()
@@ -122,19 +134,7 @@
         createDemoAssignedGroups()
         createDemoAssignedPersons()
-        createDemoTaskRecurringSchedules()
-
-        // Inventory
-        createDemoInventoryStores()  /// @todo: Perhaps a 'createQuickStartData' method?
-        createDemoInventoryLocations()
-        createDemoInventoryGroups() /// @todo: Perhaps a 'createQuickStartData' method?
-        createDemoInventoryItems()
-
-        // Assets
-        createDemoLifePlan()
         createDemoTaskProcedure()
         createDemoMaintenanceActions()
-        createDemoSections()
-        createDemoAssetTree()
-        createDemoAssetExtenedAttributes()
+        createDemoTaskRecurringSchedules()
 
         // Record that data has been created.
@@ -829,4 +829,5 @@
                 taskType:TaskType.get(1),
                 leadPerson:Person.get(2),
+                primaryAsset:Asset.get(4),
                 description:"Level sensor not working",
                 comment:"Has been noted as problematic, try recalibrating.",
@@ -841,4 +842,5 @@
                 taskType:TaskType.get(3),
                 leadPerson:Person.get(5),
+                primaryAsset:Asset.get(4),
                 description:"Some follow-up work",
                 comment:"Some help required",
@@ -854,4 +856,5 @@
                 taskType:TaskType.get(3),
                 leadPerson:Person.get(5),
+                primaryAsset:Asset.get(4),
                 description:"A Sub Task can be created from the 'Sub Task' tab.",
                 comment:"Some help required",
@@ -864,9 +867,10 @@
         //Task #4
         p = [taskGroup:TaskGroup.findByName("Engineering Activites"),
-                 taskPriority:TaskPriority.get(2),
-                 taskType:TaskType.get(2),
-                 leadPerson:Person.get(4),
-                 description:"Please replace sensor at next available opportunity.",
-                 comment:"Nothing else has worked. So we now require the part to be replaced.",
+                taskPriority:TaskPriority.get(2),
+                taskType:TaskType.get(2),
+                leadPerson:Person.get(4),
+                primaryAsset:Asset.get(4),
+                description:"Please replace sensor at next available opportunity.",
+                comment:"Nothing else has worked. So we now require the part to be replaced.",
                 targetStartDate: dateUtilService.today,
                 targetCompletionDate: dateUtilService.oneWeekFromNow,
@@ -877,9 +881,10 @@
         //Task #5
         p = [taskGroup:TaskGroup.findByName("Production Activites"),
-                 taskPriority:TaskPriority.get(2),
-                 taskType:TaskType.get(3),
-                 leadPerson:Person.get(6),
-                 description:"Production Task",
-                 comment:"Production task for specific production run or shift",
+                taskPriority:TaskPriority.get(2),
+                taskType:TaskType.get(3),
+                leadPerson:Person.get(6),
+                primaryAsset:Asset.get(1),
+                description:"Production Task",
+                comment:"Production task for specific production run or shift",
                 targetStartDate: dateUtilService.today - 6,
                 targetCompletionDate: dateUtilService.today - 6]
@@ -889,13 +894,15 @@
         //Task #6
         p = [taskGroup:TaskGroup.findByName("Engineering Activites"),
-                 taskPriority:TaskPriority.get(4),
-                 taskType:TaskType.get(3),
-                 leadPerson:Person.get(4),
-                 description:"This is a recurring preventative maintenance task.",
-                 comment:"If there is a parent task specified then this is a generated sub task, if there is a recurring schedule specified then this is a parent task.",
+                taskPriority:TaskPriority.get(4),
+                taskType:TaskType.get(4),
+                leadPerson:Person.get(4),
+                primaryAsset:Asset.get(2),
+                description:"This is a recurring preventative maintenance task.",
+                comment:"If there is a parent task specified then this is a generated sub task, if there is a recurring schedule specified then this is a parent task.",
                 targetStartDate: dateUtilService.today,
                 targetCompletionDate: dateUtilService.today + 30]
 
         taskResult = taskService.save(p)
+        taskService.approve(taskResult.taskInstance)
     }
 
@@ -947,4 +954,12 @@
                 comment: "Checked up on it later and sensor is dropping out intermittently, created sub task to replace sensor.",
                 durationMinute: 20]
+
+        entryResult = taskService.saveEntry(p)
+
+        //Entry #4
+        p = [task: Task.list()[5],
+                entryType: EntryType.get(3),
+                comment: "Recurring work done as per procedure.",
+                durationMinute: 55]
 
         entryResult = taskService.saveEntry(p)
@@ -977,6 +992,6 @@
 
         //AssignedPerson #1
-        p = [person: Person.get(4),
-                task: Task.list()[0],
+        p = [person: Person.get(3), // Demo Manager.
+                task: Task.list()[5],
                 estimatedHour: 1,
                 estimatedMinute: 20]
@@ -984,9 +999,80 @@
 
         //AssignedPerson #2
-        p = [person: Person.get(5),
+        p = [person: Person.get(4), // Demo User.
                 task: Task.list()[0],
                 estimatedHour: 3,
                 estimatedMinute: 30]
         result = assignedPersonService.save(p)
+    }
+
+    def createBaseMaintenancePolicies() {
+
+        //MaintenancePolicy
+        def maintenancePolicyInstance
+
+        //MaintenancePolicy #1
+        maintenancePolicyInstance = new MaintenancePolicy(name: "Fixed Time")
+        saveAndTest(maintenancePolicyInstance)
+
+        //MaintenancePolicy #2
+        maintenancePolicyInstance = new MaintenancePolicy(name: "Condition Based Online")
+        saveAndTest(maintenancePolicyInstance)
+
+        //MaintenancePolicy #3
+        maintenancePolicyInstance = new MaintenancePolicy(name: "Condition Based Offline")
+        saveAndTest(maintenancePolicyInstance)
+
+        //MaintenancePolicy #4
+        maintenancePolicyInstance = new MaintenancePolicy(name: "Design Out")
+        saveAndTest(maintenancePolicyInstance)
+
+        //MaintenancePolicy #5
+        maintenancePolicyInstance = new MaintenancePolicy(name: "Operate To Failure")
+        saveAndTest(maintenancePolicyInstance)
+
+        //MaintenancePolicy #6
+        maintenancePolicyInstance = new MaintenancePolicy(name: "Regulatory Requirement")
+        saveAndTest(maintenancePolicyInstance)
+
+        //MaintenancePolicy #7
+        maintenancePolicyInstance = new MaintenancePolicy(name: "Hidden Function Test")
+        saveAndTest(maintenancePolicyInstance)
+    }
+
+    def createDemoTaskProcedure() {
+
+        //TaskProcedure
+        def taskProcedureInstance
+
+        taskProcedureInstance = new TaskProcedure(name: "Daily check")
+        saveAndTest(taskProcedureInstance)
+        taskProcedureInstance.addToTasks(Task.list()[0])
+    }
+
+    def createDemoMaintenanceActions() {
+
+        //MaintenanceAction
+        def maintenanceActionInstance
+
+        //MaintenanceAction #1
+        maintenanceActionInstance = new MaintenanceAction(description: "Check all E-stops, activate E-stops S1-S12 and ensure machine cannot run",
+                                                                                                        procedureStepNumber: 10,
+                                                                                                        maintenancePolicy: MaintenancePolicy.get(1),
+                                                                                                        taskProcedure: TaskProcedure.get(1))
+        saveAndTest(maintenanceActionInstance)
+
+        //MaintenanceAction #2
+        maintenanceActionInstance = new MaintenanceAction(description: "Do more pushups",
+                                                                                                        procedureStepNumber: 20,
+                                                                                                        maintenancePolicy: MaintenancePolicy.get(1),
+                                                                                                        taskProcedure: TaskProcedure.get(1))
+        saveAndTest(maintenanceActionInstance)
+
+        //MaintenanceAction #3
+        maintenanceActionInstance = new MaintenanceAction(description: "Ok just one more pushup",
+                                                                                                        procedureStepNumber: 30,
+                                                                                                        maintenancePolicy: MaintenancePolicy.get(1),
+                                                                                                        taskProcedure: TaskProcedure.get(1))
+        saveAndTest(maintenanceActionInstance)
     }
 
@@ -1008,5 +1094,5 @@
 
         //TaskRecurringSchedule #2
-        taskRecurringScheduleInstance = new TaskRecurringSchedule(task: Task.list()[0],
+        taskRecurringScheduleInstance = new TaskRecurringSchedule(task: Task.list()[5],
                                                                                                     recurEvery: 1,
                                                                                                     recurPeriod: Period.get(1),
@@ -1229,75 +1315,4 @@
     }
 
-    def createBaseMaintenancePolicies() {
-
-        //MaintenancePolicy
-        def maintenancePolicyInstance
-
-        //MaintenancePolicy #1
-        maintenancePolicyInstance = new MaintenancePolicy(name: "Fixed Time")
-        saveAndTest(maintenancePolicyInstance)
-
-        //MaintenancePolicy #2
-        maintenancePolicyInstance = new MaintenancePolicy(name: "Condition Based Online")
-        saveAndTest(maintenancePolicyInstance)
-
-        //MaintenancePolicy #3
-        maintenancePolicyInstance = new MaintenancePolicy(name: "Condition Based Offline")
-        saveAndTest(maintenancePolicyInstance)
-
-        //MaintenancePolicy #4
-        maintenancePolicyInstance = new MaintenancePolicy(name: "Design Out")
-        saveAndTest(maintenancePolicyInstance)
-
-        //MaintenancePolicy #5
-        maintenancePolicyInstance = new MaintenancePolicy(name: "Operate To Failure")
-        saveAndTest(maintenancePolicyInstance)
-
-        //MaintenancePolicy #6
-        maintenancePolicyInstance = new MaintenancePolicy(name: "Regulatory Requirement")
-        saveAndTest(maintenancePolicyInstance)
-
-        //MaintenancePolicy #7
-        maintenancePolicyInstance = new MaintenancePolicy(name: "Hidden Function Test")
-        saveAndTest(maintenancePolicyInstance)
-    }
-
-    def createDemoTaskProcedure() {
-
-        //TaskProcedure
-        def taskProcedureInstance
-
-        taskProcedureInstance = new TaskProcedure(name: "Daily check")
-        saveAndTest(taskProcedureInstance)
-        taskProcedureInstance.addToTasks(Task.list()[0])
-    }
-
-    def createDemoMaintenanceActions() {
-
-        //MaintenanceAction
-        def maintenanceActionInstance
-
-        //MaintenanceAction #1
-        maintenanceActionInstance = new MaintenanceAction(description: "Check all E-stops, activate E-stops S1-S12 and ensure machine cannot run",
-                                                                                                        procedureStepNumber: 1,
-                                                                                                        maintenancePolicy: MaintenancePolicy.get(1),
-                                                                                                        taskProcedure: TaskProcedure.get(1))
-        saveAndTest(maintenanceActionInstance)
-
-        //MaintenanceAction #2
-        maintenanceActionInstance = new MaintenanceAction(description: "Do more pushups",
-                                                                                                        procedureStepNumber: 2,
-                                                                                                        maintenancePolicy: MaintenancePolicy.get(1),
-                                                                                                        taskProcedure: TaskProcedure.get(1))
-        saveAndTest(maintenanceActionInstance)
-
-        //MaintenanceAction #3
-        maintenanceActionInstance = new MaintenanceAction(description: "Ok just one more pushup",
-                                                                                                        procedureStepNumber: 3,
-                                                                                                        maintenancePolicy: MaintenancePolicy.get(1),
-                                                                                                        taskProcedure: TaskProcedure.get(1))
-        saveAndTest(maintenanceActionInstance)
-    }
-
     def createDemoSections() {
 
