Index: trunk/grails-app/controllers/InventoryItemDetailedController.groovy
===================================================================
--- trunk/grails-app/controllers/InventoryItemDetailedController.groovy	(revision 225)
+++ trunk/grails-app/controllers/InventoryItemDetailedController.groovy	(revision 226)
@@ -166,5 +166,5 @@
     def useInventoryItem = {
 
-        params.inventoryMovementType = InventoryMovementType.get(1) // used.
+        params.inventoryMovementType = InventoryMovementType.get(1) // Set type to "Used".
         def result = inventoryMovementService.move(params)
 
Index: trunk/grails-app/controllers/InventoryMovementDetailedController.groovy
===================================================================
--- trunk/grails-app/controllers/InventoryMovementDetailedController.groovy	(revision 225)
+++ trunk/grails-app/controllers/InventoryMovementDetailedController.groovy	(revision 226)
@@ -27,8 +27,8 @@
     /**
     * List the inventory movements for an InventoryItem.
-    * @param params.id The id of an existing inventory item.
+    * @param params.inventoryItem.id The id of an existing inventory item.
     */
     def listInventoryMovements = {
-        def inventoryItemInstance = InventoryItem.get(params.id)
+        def inventoryItemInstance = InventoryItem.get(params.inventoryItem.id)
 
         if(!inventoryItemInstance) {
@@ -65,13 +65,16 @@
 
     def create = {
-        if(!params.task?.id) {
-            flash.message = "Please select a task, then the Inventory tab."
-            redirect(controller:"taskDetailed", action:"search")
-        }
         def inventoryMovementInstance = new InventoryMovement()
         inventoryMovementInstance.properties = params
-        return ['inventoryMovementInstance':inventoryMovementInstance]
+        def inventoryMovementTypeList = InventoryMovementType.withCriteria { gt("id", 1L) } // Don't include "Used".
+
+        return ['inventoryMovementInstance': inventoryMovementInstance,
+                        inventoryMovementTypeList: inventoryMovementTypeList]
     }
 
+    /**
+    * Handles all inventory movements except those of type "Used".
+     * The "Used" type is handled directly by InventoryItemDetailedController and useInventoryItem.
+    */
     def save = {
         def result = inventoryMovementService.move(params)
@@ -79,9 +82,15 @@
         if(!result.error) {
             flash.message = "Inventory Movement for ${result.inventoryMovementInstance.inventoryItem.name} created."
-            redirect(controller:"taskDetailed", action:"show", id: result.taskId)
+            if(result.taskId) {
+                redirect(controller:"taskDetailed", action:"show", id: result.taskId)
+                return
+            }
+            redirect(controller:"inventoryItemDetailed", action:"show", id: result.inventoryMovementInstance.inventoryItem.id)
         }
         else {
             if(result.inventoryMovementInstance) {
-                render(view:'create',model:[inventoryMovementInstance:result.inventoryMovementInstance])
+                def inventoryMovementTypeList = InventoryMovementType.withCriteria { gt("id", 1L) } // Don't include "Used".
+                render(view:'create', model:[inventoryMovementInstance: result.inventoryMovementInstance,
+                                                            inventoryMovementTypeList: inventoryMovementTypeList])
             }
             else {
