Index: trunk/grails-app/controllers/InventoryItemDetailedController.groovy
===================================================================
--- trunk/grails-app/controllers/InventoryItemDetailedController.groovy	(revision 403)
+++ trunk/grails-app/controllers/InventoryItemDetailedController.groovy	(revision 405)
@@ -126,50 +126,46 @@
             params.action='show'
 
-        if(!InventoryItem.exists(params.id)) {
-            flash.message = "InventoryItem not found with id ${params.id}"
+        def result = inventoryItemService.show(params)
+
+        if(!result.error) {
+
+            def model = [ inventoryItemInstance: result.inventoryItemInstance,
+                                    inventoryMovementList: result.inventoryMovementList,
+                                    inventoryMovementListTotal: result.inventoryMovementListTotal,
+                                    inventoryMovementListMax: result.inventoryMovementListMax,
+                                    showTab: result.showTab]
+
+            if(session.inventoryMovementTaskId) {
+                model.inventoryMovementInstance = new InventoryMovement()
+                model.inventoryMovementInstance.task = Task.get(session.inventoryMovementTaskId)
+                model.inventoryMovementInstance.quantity = 1
+            }
+
+            // Success.
+            return model
+        }
+
+        flash.errorMessage = g.message(code: result.error.code, args: result.error.args)
+        redirect(action:search)
+        return
+    }
+
+    def delete = {
+        def result = inventoryItemService.delete(params)
+
+        if(!result.error) {
+            flash.message = g.message(code: "default.delete.success", args: ["InventoryItem", params.id])
+            redirect(action:list)
+            return
+        }
+
+        flash.errorMessage = g.message(code: result.error.code, args: result.error.args)
+
+        if(result.error.code == "default.not.found") {
             redirect(action:search)
             return
         }
 
-        def result = inventoryItemService.prepareShowData(params)
-
-        if(result.error) {
-            flash.message = "Could not to prepare the data to show item with id: ${params.id}."
-            redirect(action:search)
-            return
-        }
-
-        def model = [ inventoryItemInstance: result.inventoryItemInstance,
-                                inventoryMovementList: result.inventoryMovementList,
-                                inventoryMovementListTotal: result.inventoryMovementListTotal,
-                                inventoryMovementListMax: result.inventoryMovementListMax,
-                                showTab: result.showTab]
-
-        if(session.inventoryMovementTaskId) {
-            model.inventoryMovementInstance = new InventoryMovement()
-            model.inventoryMovementInstance.task = Task.get(session.inventoryMovementTaskId)
-            model.inventoryMovementInstance.quantity = 1
-        }
-
-        return model
-    }
-
-    def delete = {
-        def inventoryItemInstance = InventoryItem.get( params.id )
-        if(inventoryItemInstance) {
-            try {
-                inventoryItemInstance.delete(flush:true)
-                flash.message = "InventoryItem ${params.id} deleted"
-                redirect(action:search)
-            }
-            catch(org.springframework.dao.DataIntegrityViolationException e) {
-                flash.message = "InventoryItem ${params.id} could not be deleted"
-                redirect(action:show,id:params.id)
-            }
-        }
-        else {
-            flash.message = "InventoryItem not found with id ${params.id}"
-            redirect(action:search)
-        }
+        redirect(action:show, id: params.id)
     }
 
@@ -180,57 +176,52 @@
             params.action='edit'
 
-        def inventoryItemInstance = InventoryItem.get( params.id )
-
-        if(!inventoryItemInstance) {
-            flash.message = "InventoryItem not found with id ${params.id}"
+        def result = inventoryItemService.edit(params)
+
+        if(!result.error)
+            return [ inventoryItemInstance : result.inventoryItemInstance ]
+
+        flash.errorMessage = g.message(code: result.error.code, args: result.error.args)
+        redirect(action:search)
+    }
+
+    def update = {
+        def result = inventoryItemService.update(params)
+
+        if(!result.error) {
+            flash.message = g.message(code: "default.update.success", args: ["InventoryItem", params.id])
+            redirect(action:show, id: params.id)
+            return
+        }
+
+        if(result.error.code == "default.not.found") {
+            flash.errorMessage = g.message(code: result.error.code, args: result.error.args)
             redirect(action:search)
-        }
-        else {
-            return [ inventoryItemInstance : inventoryItemInstance ]
-        }
-    }
-
-    def update = {
-        def inventoryItemInstance = InventoryItem.get( params.id )
-        if(inventoryItemInstance) {
-            if(params.version) {
-                def version = params.version.toLong()
-                if(inventoryItemInstance.version > version) {
-                    
-                    inventoryItemInstance.errors.rejectValue("version", "default.optimistic.locking.failure")
-                    render(view:'edit',model:[inventoryItemInstance:inventoryItemInstance])
-                    return
-                }
-            }
-            inventoryItemInstance.properties = params
-            if(!inventoryItemInstance.hasErrors() && inventoryItemInstance.save(flush: true)) {
-                flash.message = "InventoryItem ${params.id} updated"
-                redirect(action:show,id:inventoryItemInstance.id)
-            }
-            else {
-                render(view:'edit',model:[inventoryItemInstance:inventoryItemInstance])
-            }
-        }
-        else {
-            flash.message = "InventoryItem not found with id ${params.id}"
-            redirect(action:search)
-        }
+            return
+        }
+
+        render(view:'edit', model:[inventoryItemInstance: result.inventoryItemInstance.attach()])
     }
 
     def create = {
-        def inventoryItemInstance = new InventoryItem()
-        inventoryItemInstance.properties = params
-        return ['inventoryItemInstance':inventoryItemInstance]
+        def result = inventoryItemService.create(params)
+
+        if(!result.error)
+            return [inventoryItemInstance: result.inventoryItemInstance]
+
+        //flash.errorMessage = g.message(code: result.error.code, args: result.error.args)
+        redirect(action: search)
     }
 
     def save = {
-        def inventoryItemInstance = new InventoryItem(params)
-        if(!inventoryItemInstance.hasErrors() && inventoryItemInstance.save(flush: true)) {
-            flash.message = "InventoryItem ${inventoryItemInstance.id} created"
-            redirect(action:show,id:inventoryItemInstance.id)
-        }
-        else {
-            render(view:'create',model:[inventoryItemInstance:inventoryItemInstance])
-        }
+        def result = inventoryItemService.save(params)
+
+        if(!result.error) {
+            flash.message = g.message(code: "default.create.success", args: ["InventoryItem", result.inventoryItemInstance.id])
+            redirect(action:show, id: result.inventoryItemInstance.id)
+            return
+        }
+
+        //flash.errorMessage = g.message(code: result.error.code, args: result.error.args)
+        render(view:'create', model:[inventoryItemInstance: result.inventoryItemInstance])
     }
 
@@ -252,5 +243,5 @@
                 def p = [:]
                 p.id = result.inventoryMovementInstance.inventoryItem?.id
-                def r = inventoryItemService.prepareShowData(p)
+                def r = inventoryItemService.show(p)
 
                 def model = [ inventoryItemInstance: r.inventoryItemInstance,
