Index: trunk/grails-app/controllers/InventoryItemPurchaseDetailedController.groovy
===================================================================
--- trunk/grails-app/controllers/InventoryItemPurchaseDetailedController.groovy	(revision 594)
+++ trunk/grails-app/controllers/InventoryItemPurchaseDetailedController.groovy	(revision 595)
@@ -75,12 +75,10 @@
         }
         else {
-            params.sort = "purchaseOrderNumber"
-            params.order = "desc"
+            params.sort = "id"
+            params.order = "asc"
         }
 
         if(isFilterApplied) {
             // filterPane:
-            params.sort = params.sort ?: "id"
-            params.order = params.order ?: "desc"
             //if(params.sort == "attentionFlag") // See ticket #64 in Trac.
                 //params.sort = "id"
@@ -175,4 +173,5 @@
     def show = {
         def inventoryItemPurchaseInstance = InventoryItemPurchase.read( params.id )
+        params.returnTo = params.returnTo ?: 'inventoryItem'
 
         if(!inventoryItemPurchaseInstance) {
@@ -188,8 +187,13 @@
         if(!result.error) {
             flash.message = g.message(code: "default.delete.success", args: ["InventoryItemPurchase", params.id])
-            redirect(controller: 'inventoryItemDetailed',
-                            action: 'show',
-                            id: result.inventoryItemId,
-                            params: [showTab: "showPurchasingTab"])
+            if(params.returnTo == 'inventoryItem') {
+                redirect(controller: 'inventoryItemDetailed',
+                                action: 'show',
+                                id: result.inventoryItemId,
+                                params: [showTab: "showPurchasingTab"])
+            }
+            else {
+                redirect(action: 'search')
+            }
             return
         }
@@ -207,4 +211,5 @@
     def edit = {
         def result = inventoryPurchaseService.edit(params)
+        params.returnTo = params.returnTo ?: 'inventoryItem'
 
         if(!result.error)
@@ -236,4 +241,5 @@
         def inventoryItemPurchaseInstance = new InventoryItemPurchase()
         inventoryItemPurchaseInstance.properties = params
+        params.returnTo = params.returnTo ?: 'inventoryItem'
 
         if(!inventoryItemPurchaseInstance.inventoryItem) {
@@ -251,8 +257,13 @@
         if(!result.error) {
             flash.message = g.message(code: "default.create.success", args: ["Inventory Purchase", ''])
-            redirect(controller: 'inventoryItemDetailed',
-                            action: 'show',
-                            id: result.inventoryItemId,
-                            params: [showTab: "showPurchasingTab"])
+            if(params.returnTo == 'inventoryItem') {
+                redirect(controller: 'inventoryItemDetailed',
+                                action: 'show',
+                                id: result.inventoryItemId,
+                                params: [showTab: "showPurchasingTab"])
+            }
+            else {
+                redirect(action: 'search')
+            }
             return
         }
@@ -271,4 +282,5 @@
 
         inventoryItemPurchaseInstance.properties = params
+        params.returnTo = params.returnTo ?: 'inventoryItem'
         def calcQuantities = inventoryPurchaseService.calcQuantities(inventoryItemPurchaseInstance)
         inventoryItemPurchaseInstance.quantity = calcQuantities.thisOrderRemaining
@@ -282,8 +294,13 @@
         if(!result.error) {
             flash.message = g.message(code: "default.create.success", args: ["Inventory Purchase", ''])
-            redirect(controller: 'inventoryItemDetailed',
-                            action: 'show',
-                            id: result.inventoryItemId,
-                            params: [showTab: "showPurchasingTab"])
+            if(params.returnTo == 'inventoryItem') {
+                redirect(controller: 'inventoryItemDetailed',
+                                action: 'show',
+                                id: result.inventoryItemId,
+                                params: [showTab: "showPurchasingTab"])
+            }
+            else {
+                redirect(action: 'search')
+            }
             return
         }
@@ -311,4 +328,5 @@
 
         inventoryItemPurchaseInstance.properties = params
+        params.returnTo = params.returnTo ?: 'inventoryItem'
         return ['inventoryItemPurchaseInstance':inventoryItemPurchaseInstance,
                         'orderId': inventoryItemPurchaseInstance.id]
@@ -320,8 +338,13 @@
         if(!result.error) {
             flash.message = g.message(code: "default.create.success", args: ["Inventory Purchase", ''])
-            redirect(controller: 'inventoryItemDetailed',
-                            action: 'show',
-                            id: result.inventoryItemId,
-                            params: [showTab: "showPurchasingTab"])
+            if(params.returnTo == 'inventoryItem') {
+                redirect(controller: 'inventoryItemDetailed',
+                                action: 'show',
+                                id: result.inventoryItemId,
+                                params: [showTab: "showPurchasingTab"])
+            }
+            else {
+                redirect(action: 'search')
+            }
             return
         }
