Index: trunk/grails-app/controllers/AuthorityController.groovy
===================================================================
--- trunk/grails-app/controllers/AuthorityController.groovy	(revision 106)
+++ trunk/grails-app/controllers/AuthorityController.groovy	(revision 116)
@@ -1,6 +1,5 @@
 import org.codehaus.groovy.grails.plugins.springsecurity.Secured
 
-@Secured(['ROLE_AppAdmin'])
-class AuthorityController {
+class AuthorityController extends BaseAppAdminController {
 
 	// the delete, save and update actions only accept POST requests
Index: trunk/grails-app/controllers/EntryController.groovy
===================================================================
--- trunk/grails-app/controllers/EntryController.groovy	(revision 106)
+++ trunk/grails-app/controllers/EntryController.groovy	(revision 116)
@@ -1,5 +1,5 @@
 import org.codehaus.groovy.grails.plugins.springsecurity.Secured
 
-class EntryController extends BaseController {
+class EntryController extends BaseAppAdminController {
     
     def index = { redirect(action:list,params:params) }
Index: trunk/grails-app/controllers/EntryTypeController.groovy
===================================================================
--- trunk/grails-app/controllers/EntryTypeController.groovy	(revision 106)
+++ trunk/grails-app/controllers/EntryTypeController.groovy	(revision 116)
@@ -1,5 +1,5 @@
 import org.codehaus.groovy.grails.plugins.springsecurity.Secured
 
-class EntryTypeController extends BaseController {
+class EntryTypeController extends BaseAppAdminController {
     
     def index = { redirect(action:list,params:params) }
Index: trunk/grails-app/controllers/InventoryGroupController.groovy
===================================================================
--- trunk/grails-app/controllers/InventoryGroupController.groovy	(revision 116)
+++ trunk/grails-app/controllers/InventoryGroupController.groovy	(revision 116)
@@ -0,0 +1,99 @@
+import org.codehaus.groovy.grails.plugins.springsecurity.Secured
+
+class InventoryGroupController extends BaseAppAdminController {
+    
+    def index = { redirect(action:list,params:params) }
+
+    // the delete, save and update actions only accept POST requests
+    static allowedMethods = [delete:'POST', save:'POST', update:'POST']
+
+    def list = {
+        params.max = Math.min( params.max ? params.max.toInteger() : 10,  100)
+        [ inventoryGroupInstanceList: InventoryGroup.list( params ), inventoryGroupInstanceTotal: InventoryGroup.count() ]
+    }
+
+    def show = {
+        def inventoryGroupInstance = InventoryGroup.get( params.id )
+
+        if(!inventoryGroupInstance) {
+            flash.message = "InventoryGroup not found with id ${params.id}"
+            redirect(action:list)
+        }
+        else { return [ inventoryGroupInstance : inventoryGroupInstance ] }
+    }
+
+    def delete = {
+        def inventoryGroupInstance = InventoryGroup.get( params.id )
+        if(inventoryGroupInstance) {
+            try {
+                inventoryGroupInstance.delete()
+                flash.message = "InventoryGroup ${params.id} deleted"
+                redirect(action:list)
+            }
+            catch(org.springframework.dao.DataIntegrityViolationException e) {
+                flash.message = "InventoryGroup ${params.id} could not be deleted"
+                redirect(action:show,id:params.id)
+            }
+        }
+        else {
+            flash.message = "InventoryGroup not found with id ${params.id}"
+            redirect(action:list)
+        }
+    }
+
+    def edit = {
+        def inventoryGroupInstance = InventoryGroup.get( params.id )
+
+        if(!inventoryGroupInstance) {
+            flash.message = "InventoryGroup not found with id ${params.id}"
+            redirect(action:list)
+        }
+        else {
+            return [ inventoryGroupInstance : inventoryGroupInstance ]
+        }
+    }
+
+    def update = {
+        def inventoryGroupInstance = InventoryGroup.get( params.id )
+        if(inventoryGroupInstance) {
+            if(params.version) {
+                def version = params.version.toLong()
+                if(inventoryGroupInstance.version > version) {
+                    
+                    inventoryGroupInstance.errors.rejectValue("version", "inventoryGroup.optimistic.locking.failure", "Another user has updated this InventoryGroup while you were editing.")
+                    render(view:'edit',model:[inventoryGroupInstance:inventoryGroupInstance])
+                    return
+                }
+            }
+            inventoryGroupInstance.properties = params
+            if(!inventoryGroupInstance.hasErrors() && inventoryGroupInstance.save()) {
+                flash.message = "InventoryGroup ${params.id} updated"
+                redirect(action:show,id:inventoryGroupInstance.id)
+            }
+            else {
+                render(view:'edit',model:[inventoryGroupInstance:inventoryGroupInstance])
+            }
+        }
+        else {
+            flash.message = "InventoryGroup not found with id ${params.id}"
+            redirect(action:edit,id:params.id)
+        }
+    }
+
+    def create = {
+        def inventoryGroupInstance = new InventoryGroup()
+        inventoryGroupInstance.properties = params
+        return ['inventoryGroupInstance':inventoryGroupInstance]
+    }
+
+    def save = {
+        def inventoryGroupInstance = new InventoryGroup(params)
+        if(!inventoryGroupInstance.hasErrors() && inventoryGroupInstance.save()) {
+            flash.message = "InventoryGroup ${inventoryGroupInstance.id} created"
+            redirect(action:show,id:inventoryGroupInstance.id)
+        }
+        else {
+            render(view:'create',model:[inventoryGroupInstance:inventoryGroupInstance])
+        }
+    }
+}
Index: trunk/grails-app/controllers/InventoryItemController.groovy
===================================================================
--- trunk/grails-app/controllers/InventoryItemController.groovy	(revision 116)
+++ trunk/grails-app/controllers/InventoryItemController.groovy	(revision 116)
@@ -0,0 +1,99 @@
+import org.codehaus.groovy.grails.plugins.springsecurity.Secured
+
+class InventoryItemController extends BaseAppAdminController {
+    
+    def index = { redirect(action:list,params:params) }
+
+    // the delete, save and update actions only accept POST requests
+    static allowedMethods = [delete:'POST', save:'POST', update:'POST']
+
+    def list = {
+        params.max = Math.min( params.max ? params.max.toInteger() : 10,  100)
+        [ inventoryItemInstanceList: InventoryItem.list( params ), inventoryItemInstanceTotal: InventoryItem.count() ]
+    }
+
+    def show = {
+        def inventoryItemInstance = InventoryItem.get( params.id )
+
+        if(!inventoryItemInstance) {
+            flash.message = "InventoryItem not found with id ${params.id}"
+            redirect(action:list)
+        }
+        else { return [ inventoryItemInstance : inventoryItemInstance ] }
+    }
+
+    def delete = {
+        def inventoryItemInstance = InventoryItem.get( params.id )
+        if(inventoryItemInstance) {
+            try {
+                inventoryItemInstance.delete()
+                flash.message = "InventoryItem ${params.id} deleted"
+                redirect(action:list)
+            }
+            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:list)
+        }
+    }
+
+    def edit = {
+        def inventoryItemInstance = InventoryItem.get( params.id )
+
+        if(!inventoryItemInstance) {
+            flash.message = "InventoryItem not found with id ${params.id}"
+            redirect(action:list)
+        }
+        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", "inventoryItem.optimistic.locking.failure", "Another user has updated this InventoryItem while you were editing.")
+                    render(view:'edit',model:[inventoryItemInstance:inventoryItemInstance])
+                    return
+                }
+            }
+            inventoryItemInstance.properties = params
+            if(!inventoryItemInstance.hasErrors() && inventoryItemInstance.save()) {
+                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:edit,id:params.id)
+        }
+    }
+
+    def create = {
+        def inventoryItemInstance = new InventoryItem()
+        inventoryItemInstance.properties = params
+        return ['inventoryItemInstance':inventoryItemInstance]
+    }
+
+    def save = {
+        def inventoryItemInstance = new InventoryItem(params)
+        if(!inventoryItemInstance.hasErrors() && inventoryItemInstance.save()) {
+            flash.message = "InventoryItem ${inventoryItemInstance.id} created"
+            redirect(action:show,id:inventoryItemInstance.id)
+        }
+        else {
+            render(view:'create',model:[inventoryItemInstance:inventoryItemInstance])
+        }
+    }
+}
Index: trunk/grails-app/controllers/InventoryItemDetailedController.groovy
===================================================================
--- trunk/grails-app/controllers/InventoryItemDetailedController.groovy	(revision 116)
+++ trunk/grails-app/controllers/InventoryItemDetailedController.groovy	(revision 116)
@@ -0,0 +1,99 @@
+import org.codehaus.groovy.grails.plugins.springsecurity.Secured
+
+class InventoryItemDetailedController extends BaseController {
+    
+    def index = { redirect(action:list,params:params) }
+
+    // the delete, save and update actions only accept POST requests
+    static allowedMethods = [delete:'POST', save:'POST', update:'POST']
+
+    def list = {
+        params.max = Math.min( params.max ? params.max.toInteger() : 10,  100)
+        [ inventoryItemInstanceList: InventoryItem.list( params ), inventoryItemInstanceTotal: InventoryItem.count() ]
+    }
+
+    def show = {
+        def inventoryItemInstance = InventoryItem.get( params.id )
+
+        if(!inventoryItemInstance) {
+            flash.message = "InventoryItem not found with id ${params.id}"
+            redirect(action:list)
+        }
+        else { return [ inventoryItemInstance : inventoryItemInstance ] }
+    }
+
+    def delete = {
+        def inventoryItemInstance = InventoryItem.get( params.id )
+        if(inventoryItemInstance) {
+            try {
+                inventoryItemInstance.delete()
+                flash.message = "InventoryItem ${params.id} deleted"
+                redirect(action:list)
+            }
+            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:list)
+        }
+    }
+
+    def edit = {
+        def inventoryItemInstance = InventoryItem.get( params.id )
+
+        if(!inventoryItemInstance) {
+            flash.message = "InventoryItem not found with id ${params.id}"
+            redirect(action:list)
+        }
+        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", "inventoryItem.optimistic.locking.failure", "Another user has updated this InventoryItem while you were editing.")
+                    render(view:'edit',model:[inventoryItemInstance:inventoryItemInstance])
+                    return
+                }
+            }
+            inventoryItemInstance.properties = params
+            if(!inventoryItemInstance.hasErrors() && inventoryItemInstance.save()) {
+                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:edit,id:params.id)
+        }
+    }
+
+    def create = {
+        def inventoryItemInstance = new InventoryItem()
+        inventoryItemInstance.properties = params
+        return ['inventoryItemInstance':inventoryItemInstance]
+    }
+
+    def save = {
+        def inventoryItemInstance = new InventoryItem(params)
+        if(!inventoryItemInstance.hasErrors() && inventoryItemInstance.save()) {
+            flash.message = "InventoryItem ${inventoryItemInstance.id} created"
+            redirect(action:show,id:inventoryItemInstance.id)
+        }
+        else {
+            render(view:'create',model:[inventoryItemInstance:inventoryItemInstance])
+        }
+    }
+}
Index: trunk/grails-app/controllers/InventoryMovementController.groovy
===================================================================
--- trunk/grails-app/controllers/InventoryMovementController.groovy	(revision 116)
+++ trunk/grails-app/controllers/InventoryMovementController.groovy	(revision 116)
@@ -0,0 +1,99 @@
+import org.codehaus.groovy.grails.plugins.springsecurity.Secured
+
+class InventoryMovementController extends BaseAppAdminController {
+    
+    def index = { redirect(action:list,params:params) }
+
+    // the delete, save and update actions only accept POST requests
+    static allowedMethods = [delete:'POST', save:'POST', update:'POST']
+
+    def list = {
+        params.max = Math.min( params.max ? params.max.toInteger() : 10,  100)
+        [ inventoryMovementInstanceList: InventoryMovement.list( params ), inventoryMovementInstanceTotal: InventoryMovement.count() ]
+    }
+
+    def show = {
+        def inventoryMovementInstance = InventoryMovement.get( params.id )
+
+        if(!inventoryMovementInstance) {
+            flash.message = "InventoryMovement not found with id ${params.id}"
+            redirect(action:list)
+        }
+        else { return [ inventoryMovementInstance : inventoryMovementInstance ] }
+    }
+
+    def delete = {
+        def inventoryMovementInstance = InventoryMovement.get( params.id )
+        if(inventoryMovementInstance) {
+            try {
+                inventoryMovementInstance.delete()
+                flash.message = "InventoryMovement ${params.id} deleted"
+                redirect(action:list)
+            }
+            catch(org.springframework.dao.DataIntegrityViolationException e) {
+                flash.message = "InventoryMovement ${params.id} could not be deleted"
+                redirect(action:show,id:params.id)
+            }
+        }
+        else {
+            flash.message = "InventoryMovement not found with id ${params.id}"
+            redirect(action:list)
+        }
+    }
+
+    def edit = {
+        def inventoryMovementInstance = InventoryMovement.get( params.id )
+
+        if(!inventoryMovementInstance) {
+            flash.message = "InventoryMovement not found with id ${params.id}"
+            redirect(action:list)
+        }
+        else {
+            return [ inventoryMovementInstance : inventoryMovementInstance ]
+        }
+    }
+
+    def update = {
+        def inventoryMovementInstance = InventoryMovement.get( params.id )
+        if(inventoryMovementInstance) {
+            if(params.version) {
+                def version = params.version.toLong()
+                if(inventoryMovementInstance.version > version) {
+                    
+                    inventoryMovementInstance.errors.rejectValue("version", "inventoryMovement.optimistic.locking.failure", "Another user has updated this InventoryMovement while you were editing.")
+                    render(view:'edit',model:[inventoryMovementInstance:inventoryMovementInstance])
+                    return
+                }
+            }
+            inventoryMovementInstance.properties = params
+            if(!inventoryMovementInstance.hasErrors() && inventoryMovementInstance.save()) {
+                flash.message = "InventoryMovement ${params.id} updated"
+                redirect(action:show,id:inventoryMovementInstance.id)
+            }
+            else {
+                render(view:'edit',model:[inventoryMovementInstance:inventoryMovementInstance])
+            }
+        }
+        else {
+            flash.message = "InventoryMovement not found with id ${params.id}"
+            redirect(action:edit,id:params.id)
+        }
+    }
+
+    def create = {
+        def inventoryMovementInstance = new InventoryMovement()
+        inventoryMovementInstance.properties = params
+        return ['inventoryMovementInstance':inventoryMovementInstance]
+    }
+
+    def save = {
+        def inventoryMovementInstance = new InventoryMovement(params)
+        if(!inventoryMovementInstance.hasErrors() && inventoryMovementInstance.save()) {
+            flash.message = "InventoryMovement ${inventoryMovementInstance.id} created"
+            redirect(action:show,id:inventoryMovementInstance.id)
+        }
+        else {
+            render(view:'create',model:[inventoryMovementInstance:inventoryMovementInstance])
+        }
+    }
+}
Index: trunk/grails-app/controllers/InventoryMovementTypeController.groovy
===================================================================
--- trunk/grails-app/controllers/InventoryMovementTypeController.groovy	(revision 116)
+++ trunk/grails-app/controllers/InventoryMovementTypeController.groovy	(revision 116)
@@ -0,0 +1,99 @@
+import org.codehaus.groovy.grails.plugins.springsecurity.Secured
+
+class InventoryMovementTypeController extends BaseAppAdminController {
+    
+    def index = { redirect(action:list,params:params) }
+
+    // the delete, save and update actions only accept POST requests
+    static allowedMethods = [delete:'POST', save:'POST', update:'POST']
+
+    def list = {
+        params.max = Math.min( params.max ? params.max.toInteger() : 10,  100)
+        [ inventoryMovementTypeInstanceList: InventoryMovementType.list( params ), inventoryMovementTypeInstanceTotal: InventoryMovementType.count() ]
+    }
+
+    def show = {
+        def inventoryMovementTypeInstance = InventoryMovementType.get( params.id )
+
+        if(!inventoryMovementTypeInstance) {
+            flash.message = "InventoryMovementType not found with id ${params.id}"
+            redirect(action:list)
+        }
+        else { return [ inventoryMovementTypeInstance : inventoryMovementTypeInstance ] }
+    }
+
+    def delete = {
+        def inventoryMovementTypeInstance = InventoryMovementType.get( params.id )
+        if(inventoryMovementTypeInstance) {
+            try {
+                inventoryMovementTypeInstance.delete()
+                flash.message = "InventoryMovementType ${params.id} deleted"
+                redirect(action:list)
+            }
+            catch(org.springframework.dao.DataIntegrityViolationException e) {
+                flash.message = "InventoryMovementType ${params.id} could not be deleted"
+                redirect(action:show,id:params.id)
+            }
+        }
+        else {
+            flash.message = "InventoryMovementType not found with id ${params.id}"
+            redirect(action:list)
+        }
+    }
+
+    def edit = {
+        def inventoryMovementTypeInstance = InventoryMovementType.get( params.id )
+
+        if(!inventoryMovementTypeInstance) {
+            flash.message = "InventoryMovementType not found with id ${params.id}"
+            redirect(action:list)
+        }
+        else {
+            return [ inventoryMovementTypeInstance : inventoryMovementTypeInstance ]
+        }
+    }
+
+    def update = {
+        def inventoryMovementTypeInstance = InventoryMovementType.get( params.id )
+        if(inventoryMovementTypeInstance) {
+            if(params.version) {
+                def version = params.version.toLong()
+                if(inventoryMovementTypeInstance.version > version) {
+                    
+                    inventoryMovementTypeInstance.errors.rejectValue("version", "inventoryMovementType.optimistic.locking.failure", "Another user has updated this InventoryMovementType while you were editing.")
+                    render(view:'edit',model:[inventoryMovementTypeInstance:inventoryMovementTypeInstance])
+                    return
+                }
+            }
+            inventoryMovementTypeInstance.properties = params
+            if(!inventoryMovementTypeInstance.hasErrors() && inventoryMovementTypeInstance.save()) {
+                flash.message = "InventoryMovementType ${params.id} updated"
+                redirect(action:show,id:inventoryMovementTypeInstance.id)
+            }
+            else {
+                render(view:'edit',model:[inventoryMovementTypeInstance:inventoryMovementTypeInstance])
+            }
+        }
+        else {
+            flash.message = "InventoryMovementType not found with id ${params.id}"
+            redirect(action:edit,id:params.id)
+        }
+    }
+
+    def create = {
+        def inventoryMovementTypeInstance = new InventoryMovementType()
+        inventoryMovementTypeInstance.properties = params
+        return ['inventoryMovementTypeInstance':inventoryMovementTypeInstance]
+    }
+
+    def save = {
+        def inventoryMovementTypeInstance = new InventoryMovementType(params)
+        if(!inventoryMovementTypeInstance.hasErrors() && inventoryMovementTypeInstance.save()) {
+            flash.message = "InventoryMovementType ${inventoryMovementTypeInstance.id} created"
+            redirect(action:show,id:inventoryMovementTypeInstance.id)
+        }
+        else {
+            render(view:'create',model:[inventoryMovementTypeInstance:inventoryMovementTypeInstance])
+        }
+    }
+}
Index: trunk/grails-app/controllers/InventoryStoreController.groovy
===================================================================
--- trunk/grails-app/controllers/InventoryStoreController.groovy	(revision 116)
+++ trunk/grails-app/controllers/InventoryStoreController.groovy	(revision 116)
@@ -0,0 +1,99 @@
+import org.codehaus.groovy.grails.plugins.springsecurity.Secured
+
+class InventoryStoreController extends BaseAppAdminController {
+    
+    def index = { redirect(action:list,params:params) }
+
+    // the delete, save and update actions only accept POST requests
+    static allowedMethods = [delete:'POST', save:'POST', update:'POST']
+
+    def list = {
+        params.max = Math.min( params.max ? params.max.toInteger() : 10,  100)
+        [ inventoryStoreInstanceList: InventoryStore.list( params ), inventoryStoreInstanceTotal: InventoryStore.count() ]
+    }
+
+    def show = {
+        def inventoryStoreInstance = InventoryStore.get( params.id )
+
+        if(!inventoryStoreInstance) {
+            flash.message = "InventoryStore not found with id ${params.id}"
+            redirect(action:list)
+        }
+        else { return [ inventoryStoreInstance : inventoryStoreInstance ] }
+    }
+
+    def delete = {
+        def inventoryStoreInstance = InventoryStore.get( params.id )
+        if(inventoryStoreInstance) {
+            try {
+                inventoryStoreInstance.delete()
+                flash.message = "InventoryStore ${params.id} deleted"
+                redirect(action:list)
+            }
+            catch(org.springframework.dao.DataIntegrityViolationException e) {
+                flash.message = "InventoryStore ${params.id} could not be deleted"
+                redirect(action:show,id:params.id)
+            }
+        }
+        else {
+            flash.message = "InventoryStore not found with id ${params.id}"
+            redirect(action:list)
+        }
+    }
+
+    def edit = {
+        def inventoryStoreInstance = InventoryStore.get( params.id )
+
+        if(!inventoryStoreInstance) {
+            flash.message = "InventoryStore not found with id ${params.id}"
+            redirect(action:list)
+        }
+        else {
+            return [ inventoryStoreInstance : inventoryStoreInstance ]
+        }
+    }
+
+    def update = {
+        def inventoryStoreInstance = InventoryStore.get( params.id )
+        if(inventoryStoreInstance) {
+            if(params.version) {
+                def version = params.version.toLong()
+                if(inventoryStoreInstance.version > version) {
+                    
+                    inventoryStoreInstance.errors.rejectValue("version", "inventoryStore.optimistic.locking.failure", "Another user has updated this InventoryStore while you were editing.")
+                    render(view:'edit',model:[inventoryStoreInstance:inventoryStoreInstance])
+                    return
+                }
+            }
+            inventoryStoreInstance.properties = params
+            if(!inventoryStoreInstance.hasErrors() && inventoryStoreInstance.save()) {
+                flash.message = "InventoryStore ${params.id} updated"
+                redirect(action:show,id:inventoryStoreInstance.id)
+            }
+            else {
+                render(view:'edit',model:[inventoryStoreInstance:inventoryStoreInstance])
+            }
+        }
+        else {
+            flash.message = "InventoryStore not found with id ${params.id}"
+            redirect(action:edit,id:params.id)
+        }
+    }
+
+    def create = {
+        def inventoryStoreInstance = new InventoryStore()
+        inventoryStoreInstance.properties = params
+        return ['inventoryStoreInstance':inventoryStoreInstance]
+    }
+
+    def save = {
+        def inventoryStoreInstance = new InventoryStore(params)
+        if(!inventoryStoreInstance.hasErrors() && inventoryStoreInstance.save()) {
+            flash.message = "InventoryStore ${inventoryStoreInstance.id} created"
+            redirect(action:show,id:inventoryStoreInstance.id)
+        }
+        else {
+            render(view:'create',model:[inventoryStoreInstance:inventoryStoreInstance])
+        }
+    }
+}
Index: trunk/grails-app/controllers/InventoryTypeController.groovy
===================================================================
--- trunk/grails-app/controllers/InventoryTypeController.groovy	(revision 116)
+++ trunk/grails-app/controllers/InventoryTypeController.groovy	(revision 116)
@@ -0,0 +1,99 @@
+import org.codehaus.groovy.grails.plugins.springsecurity.Secured
+
+class InventoryTypeController extends BaseAppAdminController {
+    
+    def index = { redirect(action:list,params:params) }
+
+    // the delete, save and update actions only accept POST requests
+    static allowedMethods = [delete:'POST', save:'POST', update:'POST']
+
+    def list = {
+        params.max = Math.min( params.max ? params.max.toInteger() : 10,  100)
+        [ inventoryTypeInstanceList: InventoryType.list( params ), inventoryTypeInstanceTotal: InventoryType.count() ]
+    }
+
+    def show = {
+        def inventoryTypeInstance = InventoryType.get( params.id )
+
+        if(!inventoryTypeInstance) {
+            flash.message = "InventoryType not found with id ${params.id}"
+            redirect(action:list)
+        }
+        else { return [ inventoryTypeInstance : inventoryTypeInstance ] }
+    }
+
+    def delete = {
+        def inventoryTypeInstance = InventoryType.get( params.id )
+        if(inventoryTypeInstance) {
+            try {
+                inventoryTypeInstance.delete()
+                flash.message = "InventoryType ${params.id} deleted"
+                redirect(action:list)
+            }
+            catch(org.springframework.dao.DataIntegrityViolationException e) {
+                flash.message = "InventoryType ${params.id} could not be deleted"
+                redirect(action:show,id:params.id)
+            }
+        }
+        else {
+            flash.message = "InventoryType not found with id ${params.id}"
+            redirect(action:list)
+        }
+    }
+
+    def edit = {
+        def inventoryTypeInstance = InventoryType.get( params.id )
+
+        if(!inventoryTypeInstance) {
+            flash.message = "InventoryType not found with id ${params.id}"
+            redirect(action:list)
+        }
+        else {
+            return [ inventoryTypeInstance : inventoryTypeInstance ]
+        }
+    }
+
+    def update = {
+        def inventoryTypeInstance = InventoryType.get( params.id )
+        if(inventoryTypeInstance) {
+            if(params.version) {
+                def version = params.version.toLong()
+                if(inventoryTypeInstance.version > version) {
+                    
+                    inventoryTypeInstance.errors.rejectValue("version", "inventoryType.optimistic.locking.failure", "Another user has updated this InventoryType while you were editing.")
+                    render(view:'edit',model:[inventoryTypeInstance:inventoryTypeInstance])
+                    return
+                }
+            }
+            inventoryTypeInstance.properties = params
+            if(!inventoryTypeInstance.hasErrors() && inventoryTypeInstance.save()) {
+                flash.message = "InventoryType ${params.id} updated"
+                redirect(action:show,id:inventoryTypeInstance.id)
+            }
+            else {
+                render(view:'edit',model:[inventoryTypeInstance:inventoryTypeInstance])
+            }
+        }
+        else {
+            flash.message = "InventoryType not found with id ${params.id}"
+            redirect(action:edit,id:params.id)
+        }
+    }
+
+    def create = {
+        def inventoryTypeInstance = new InventoryType()
+        inventoryTypeInstance.properties = params
+        return ['inventoryTypeInstance':inventoryTypeInstance]
+    }
+
+    def save = {
+        def inventoryTypeInstance = new InventoryType(params)
+        if(!inventoryTypeInstance.hasErrors() && inventoryTypeInstance.save()) {
+            flash.message = "InventoryType ${inventoryTypeInstance.id} created"
+            redirect(action:show,id:inventoryTypeInstance.id)
+        }
+        else {
+            render(view:'create',model:[inventoryTypeInstance:inventoryTypeInstance])
+        }
+    }
+}
Index: trunk/grails-app/controllers/ManufacturerController.groovy
===================================================================
--- trunk/grails-app/controllers/ManufacturerController.groovy	(revision 116)
+++ trunk/grails-app/controllers/ManufacturerController.groovy	(revision 116)
@@ -0,0 +1,99 @@
+import org.codehaus.groovy.grails.plugins.springsecurity.Secured
+
+class ManufacturerController extends BaseAppAdminController {
+    
+    def index = { redirect(action:list,params:params) }
+
+    // the delete, save and update actions only accept POST requests
+    static allowedMethods = [delete:'POST', save:'POST', update:'POST']
+
+    def list = {
+        params.max = Math.min( params.max ? params.max.toInteger() : 10,  100)
+        [ manufacturerInstanceList: Manufacturer.list( params ), manufacturerInstanceTotal: Manufacturer.count() ]
+    }
+
+    def show = {
+        def manufacturerInstance = Manufacturer.get( params.id )
+
+        if(!manufacturerInstance) {
+            flash.message = "Manufacturer not found with id ${params.id}"
+            redirect(action:list)
+        }
+        else { return [ manufacturerInstance : manufacturerInstance ] }
+    }
+
+    def delete = {
+        def manufacturerInstance = Manufacturer.get( params.id )
+        if(manufacturerInstance) {
+            try {
+                manufacturerInstance.delete()
+                flash.message = "Manufacturer ${params.id} deleted"
+                redirect(action:list)
+            }
+            catch(org.springframework.dao.DataIntegrityViolationException e) {
+                flash.message = "Manufacturer ${params.id} could not be deleted"
+                redirect(action:show,id:params.id)
+            }
+        }
+        else {
+            flash.message = "Manufacturer not found with id ${params.id}"
+            redirect(action:list)
+        }
+    }
+
+    def edit = {
+        def manufacturerInstance = Manufacturer.get( params.id )
+
+        if(!manufacturerInstance) {
+            flash.message = "Manufacturer not found with id ${params.id}"
+            redirect(action:list)
+        }
+        else {
+            return [ manufacturerInstance : manufacturerInstance ]
+        }
+    }
+
+    def update = {
+        def manufacturerInstance = Manufacturer.get( params.id )
+        if(manufacturerInstance) {
+            if(params.version) {
+                def version = params.version.toLong()
+                if(manufacturerInstance.version > version) {
+                    
+                    manufacturerInstance.errors.rejectValue("version", "manufacturer.optimistic.locking.failure", "Another user has updated this Manufacturer while you were editing.")
+                    render(view:'edit',model:[manufacturerInstance:manufacturerInstance])
+                    return
+                }
+            }
+            manufacturerInstance.properties = params
+            if(!manufacturerInstance.hasErrors() && manufacturerInstance.save()) {
+                flash.message = "Manufacturer ${params.id} updated"
+                redirect(action:show,id:manufacturerInstance.id)
+            }
+            else {
+                render(view:'edit',model:[manufacturerInstance:manufacturerInstance])
+            }
+        }
+        else {
+            flash.message = "Manufacturer not found with id ${params.id}"
+            redirect(action:edit,id:params.id)
+        }
+    }
+
+    def create = {
+        def manufacturerInstance = new Manufacturer()
+        manufacturerInstance.properties = params
+        return ['manufacturerInstance':manufacturerInstance]
+    }
+
+    def save = {
+        def manufacturerInstance = new Manufacturer(params)
+        if(!manufacturerInstance.hasErrors() && manufacturerInstance.save()) {
+            flash.message = "Manufacturer ${manufacturerInstance.id} created"
+            redirect(action:show,id:manufacturerInstance.id)
+        }
+        else {
+            render(view:'create',model:[manufacturerInstance:manufacturerInstance])
+        }
+    }
+}
Index: trunk/grails-app/controllers/ManufacturerTypeController.groovy
===================================================================
--- trunk/grails-app/controllers/ManufacturerTypeController.groovy	(revision 116)
+++ trunk/grails-app/controllers/ManufacturerTypeController.groovy	(revision 116)
@@ -0,0 +1,99 @@
+import org.codehaus.groovy.grails.plugins.springsecurity.Secured
+
+class ManufacturerTypeController extends BaseAppAdminController {
+    
+    def index = { redirect(action:list,params:params) }
+
+    // the delete, save and update actions only accept POST requests
+    static allowedMethods = [delete:'POST', save:'POST', update:'POST']
+
+    def list = {
+        params.max = Math.min( params.max ? params.max.toInteger() : 10,  100)
+        [ manufacturerTypeInstanceList: ManufacturerType.list( params ), manufacturerTypeInstanceTotal: ManufacturerType.count() ]
+    }
+
+    def show = {
+        def manufacturerTypeInstance = ManufacturerType.get( params.id )
+
+        if(!manufacturerTypeInstance) {
+            flash.message = "ManufacturerType not found with id ${params.id}"
+            redirect(action:list)
+        }
+        else { return [ manufacturerTypeInstance : manufacturerTypeInstance ] }
+    }
+
+    def delete = {
+        def manufacturerTypeInstance = ManufacturerType.get( params.id )
+        if(manufacturerTypeInstance) {
+            try {
+                manufacturerTypeInstance.delete()
+                flash.message = "ManufacturerType ${params.id} deleted"
+                redirect(action:list)
+            }
+            catch(org.springframework.dao.DataIntegrityViolationException e) {
+                flash.message = "ManufacturerType ${params.id} could not be deleted"
+                redirect(action:show,id:params.id)
+            }
+        }
+        else {
+            flash.message = "ManufacturerType not found with id ${params.id}"
+            redirect(action:list)
+        }
+    }
+
+    def edit = {
+        def manufacturerTypeInstance = ManufacturerType.get( params.id )
+
+        if(!manufacturerTypeInstance) {
+            flash.message = "ManufacturerType not found with id ${params.id}"
+            redirect(action:list)
+        }
+        else {
+            return [ manufacturerTypeInstance : manufacturerTypeInstance ]
+        }
+    }
+
+    def update = {
+        def manufacturerTypeInstance = ManufacturerType.get( params.id )
+        if(manufacturerTypeInstance) {
+            if(params.version) {
+                def version = params.version.toLong()
+                if(manufacturerTypeInstance.version > version) {
+                    
+                    manufacturerTypeInstance.errors.rejectValue("version", "manufacturerType.optimistic.locking.failure", "Another user has updated this ManufacturerType while you were editing.")
+                    render(view:'edit',model:[manufacturerTypeInstance:manufacturerTypeInstance])
+                    return
+                }
+            }
+            manufacturerTypeInstance.properties = params
+            if(!manufacturerTypeInstance.hasErrors() && manufacturerTypeInstance.save()) {
+                flash.message = "ManufacturerType ${params.id} updated"
+                redirect(action:show,id:manufacturerTypeInstance.id)
+            }
+            else {
+                render(view:'edit',model:[manufacturerTypeInstance:manufacturerTypeInstance])
+            }
+        }
+        else {
+            flash.message = "ManufacturerType not found with id ${params.id}"
+            redirect(action:edit,id:params.id)
+        }
+    }
+
+    def create = {
+        def manufacturerTypeInstance = new ManufacturerType()
+        manufacturerTypeInstance.properties = params
+        return ['manufacturerTypeInstance':manufacturerTypeInstance]
+    }
+
+    def save = {
+        def manufacturerTypeInstance = new ManufacturerType(params)
+        if(!manufacturerTypeInstance.hasErrors() && manufacturerTypeInstance.save()) {
+            flash.message = "ManufacturerType ${manufacturerTypeInstance.id} created"
+            redirect(action:show,id:manufacturerTypeInstance.id)
+        }
+        else {
+            render(view:'create',model:[manufacturerTypeInstance:manufacturerTypeInstance])
+        }
+    }
+}
Index: trunk/grails-app/controllers/PersonGroupController.groovy
===================================================================
--- trunk/grails-app/controllers/PersonGroupController.groovy	(revision 106)
+++ trunk/grails-app/controllers/PersonGroupController.groovy	(revision 116)
@@ -1,6 +1,5 @@
 import org.codehaus.groovy.grails.plugins.springsecurity.Secured
 
-@Secured(['ROLE_AppAdmin'])
-class PersonGroupController extends BaseController {
+class PersonGroupController extends BaseAppAdminController {
 
     def index = { redirect(action:list,params:params) }
Index: trunk/grails-app/controllers/PersonGroupTypeController.groovy
===================================================================
--- trunk/grails-app/controllers/PersonGroupTypeController.groovy	(revision 106)
+++ trunk/grails-app/controllers/PersonGroupTypeController.groovy	(revision 116)
@@ -1,6 +1,5 @@
 import org.codehaus.groovy.grails.plugins.springsecurity.Secured
 
-@Secured(['ROLE_AppAdmin'])
-class PersonGroupTypeController extends BaseController {
+class PersonGroupTypeController extends BaseAppAdminController {
 
     def index = { redirect(action:list,params:params) }
Index: trunk/grails-app/controllers/SiteController.groovy
===================================================================
--- trunk/grails-app/controllers/SiteController.groovy	(revision 116)
+++ trunk/grails-app/controllers/SiteController.groovy	(revision 116)
@@ -0,0 +1,99 @@
+import org.codehaus.groovy.grails.plugins.springsecurity.Secured
+
+class SiteController extends BaseAppAdminController {
+    
+    def index = { redirect(action:list,params:params) }
+
+    // the delete, save and update actions only accept POST requests
+    static allowedMethods = [delete:'POST', save:'POST', update:'POST']
+
+    def list = {
+        params.max = Math.min( params.max ? params.max.toInteger() : 10,  100)
+        [ siteInstanceList: Site.list( params ), siteInstanceTotal: Site.count() ]
+    }
+
+    def show = {
+        def siteInstance = Site.get( params.id )
+
+        if(!siteInstance) {
+            flash.message = "Site not found with id ${params.id}"
+            redirect(action:list)
+        }
+        else { return [ siteInstance : siteInstance ] }
+    }
+
+    def delete = {
+        def siteInstance = Site.get( params.id )
+        if(siteInstance) {
+            try {
+                siteInstance.delete()
+                flash.message = "Site ${params.id} deleted"
+                redirect(action:list)
+            }
+            catch(org.springframework.dao.DataIntegrityViolationException e) {
+                flash.message = "Site ${params.id} could not be deleted"
+                redirect(action:show,id:params.id)
+            }
+        }
+        else {
+            flash.message = "Site not found with id ${params.id}"
+            redirect(action:list)
+        }
+    }
+
+    def edit = {
+        def siteInstance = Site.get( params.id )
+
+        if(!siteInstance) {
+            flash.message = "Site not found with id ${params.id}"
+            redirect(action:list)
+        }
+        else {
+            return [ siteInstance : siteInstance ]
+        }
+    }
+
+    def update = {
+        def siteInstance = Site.get( params.id )
+        if(siteInstance) {
+            if(params.version) {
+                def version = params.version.toLong()
+                if(siteInstance.version > version) {
+                    
+                    siteInstance.errors.rejectValue("version", "site.optimistic.locking.failure", "Another user has updated this Site while you were editing.")
+                    render(view:'edit',model:[siteInstance:siteInstance])
+                    return
+                }
+            }
+            siteInstance.properties = params
+            if(!siteInstance.hasErrors() && siteInstance.save()) {
+                flash.message = "Site ${params.id} updated"
+                redirect(action:show,id:siteInstance.id)
+            }
+            else {
+                render(view:'edit',model:[siteInstance:siteInstance])
+            }
+        }
+        else {
+            flash.message = "Site not found with id ${params.id}"
+            redirect(action:edit,id:params.id)
+        }
+    }
+
+    def create = {
+        def siteInstance = new Site()
+        siteInstance.properties = params
+        return ['siteInstance':siteInstance]
+    }
+
+    def save = {
+        def siteInstance = new Site(params)
+        if(!siteInstance.hasErrors() && siteInstance.save()) {
+            flash.message = "Site ${siteInstance.id} created"
+            redirect(action:show,id:siteInstance.id)
+        }
+        else {
+            render(view:'create',model:[siteInstance:siteInstance])
+        }
+    }
+}
Index: trunk/grails-app/controllers/StoreLocationController.groovy
===================================================================
--- trunk/grails-app/controllers/StoreLocationController.groovy	(revision 116)
+++ trunk/grails-app/controllers/StoreLocationController.groovy	(revision 116)
@@ -0,0 +1,99 @@
+import org.codehaus.groovy.grails.plugins.springsecurity.Secured
+
+class StoreLocationController extends BaseAppAdminController {
+    
+    def index = { redirect(action:list,params:params) }
+
+    // the delete, save and update actions only accept POST requests
+    static allowedMethods = [delete:'POST', save:'POST', update:'POST']
+
+    def list = {
+        params.max = Math.min( params.max ? params.max.toInteger() : 10,  100)
+        [ storeLocationInstanceList: StoreLocation.list( params ), storeLocationInstanceTotal: StoreLocation.count() ]
+    }
+
+    def show = {
+        def storeLocationInstance = StoreLocation.get( params.id )
+
+        if(!storeLocationInstance) {
+            flash.message = "StoreLocation not found with id ${params.id}"
+            redirect(action:list)
+        }
+        else { return [ storeLocationInstance : storeLocationInstance ] }
+    }
+
+    def delete = {
+        def storeLocationInstance = StoreLocation.get( params.id )
+        if(storeLocationInstance) {
+            try {
+                storeLocationInstance.delete()
+                flash.message = "StoreLocation ${params.id} deleted"
+                redirect(action:list)
+            }
+            catch(org.springframework.dao.DataIntegrityViolationException e) {
+                flash.message = "StoreLocation ${params.id} could not be deleted"
+                redirect(action:show,id:params.id)
+            }
+        }
+        else {
+            flash.message = "StoreLocation not found with id ${params.id}"
+            redirect(action:list)
+        }
+    }
+
+    def edit = {
+        def storeLocationInstance = StoreLocation.get( params.id )
+
+        if(!storeLocationInstance) {
+            flash.message = "StoreLocation not found with id ${params.id}"
+            redirect(action:list)
+        }
+        else {
+            return [ storeLocationInstance : storeLocationInstance ]
+        }
+    }
+
+    def update = {
+        def storeLocationInstance = StoreLocation.get( params.id )
+        if(storeLocationInstance) {
+            if(params.version) {
+                def version = params.version.toLong()
+                if(storeLocationInstance.version > version) {
+                    
+                    storeLocationInstance.errors.rejectValue("version", "storeLocation.optimistic.locking.failure", "Another user has updated this StoreLocation while you were editing.")
+                    render(view:'edit',model:[storeLocationInstance:storeLocationInstance])
+                    return
+                }
+            }
+            storeLocationInstance.properties = params
+            if(!storeLocationInstance.hasErrors() && storeLocationInstance.save()) {
+                flash.message = "StoreLocation ${params.id} updated"
+                redirect(action:show,id:storeLocationInstance.id)
+            }
+            else {
+                render(view:'edit',model:[storeLocationInstance:storeLocationInstance])
+            }
+        }
+        else {
+            flash.message = "StoreLocation not found with id ${params.id}"
+            redirect(action:edit,id:params.id)
+        }
+    }
+
+    def create = {
+        def storeLocationInstance = new StoreLocation()
+        storeLocationInstance.properties = params
+        return ['storeLocationInstance':storeLocationInstance]
+    }
+
+    def save = {
+        def storeLocationInstance = new StoreLocation(params)
+        if(!storeLocationInstance.hasErrors() && storeLocationInstance.save()) {
+            flash.message = "StoreLocation ${storeLocationInstance.id} created"
+            redirect(action:show,id:storeLocationInstance.id)
+        }
+        else {
+            render(view:'create',model:[storeLocationInstance:storeLocationInstance])
+        }
+    }
+}
Index: trunk/grails-app/controllers/StoredItemController.groovy
===================================================================
--- trunk/grails-app/controllers/StoredItemController.groovy	(revision 116)
+++ trunk/grails-app/controllers/StoredItemController.groovy	(revision 116)
@@ -0,0 +1,99 @@
+import org.codehaus.groovy.grails.plugins.springsecurity.Secured
+
+class StoredItemController extends BaseAppAdminController  {
+    
+    def index = { redirect(action:list,params:params) }
+
+    // the delete, save and update actions only accept POST requests
+    static allowedMethods = [delete:'POST', save:'POST', update:'POST']
+
+    def list = {
+        params.max = Math.min( params.max ? params.max.toInteger() : 10,  100)
+        [ storedItemInstanceList: StoredItem.list( params ), storedItemInstanceTotal: StoredItem.count() ]
+    }
+
+    def show = {
+        def storedItemInstance = StoredItem.get( params.id )
+
+        if(!storedItemInstance) {
+            flash.message = "StoredItem not found with id ${params.id}"
+            redirect(action:list)
+        }
+        else { return [ storedItemInstance : storedItemInstance ] }
+    }
+
+    def delete = {
+        def storedItemInstance = StoredItem.get( params.id )
+        if(storedItemInstance) {
+            try {
+                storedItemInstance.delete()
+                flash.message = "StoredItem ${params.id} deleted"
+                redirect(action:list)
+            }
+            catch(org.springframework.dao.DataIntegrityViolationException e) {
+                flash.message = "StoredItem ${params.id} could not be deleted"
+                redirect(action:show,id:params.id)
+            }
+        }
+        else {
+            flash.message = "StoredItem not found with id ${params.id}"
+            redirect(action:list)
+        }
+    }
+
+    def edit = {
+        def storedItemInstance = StoredItem.get( params.id )
+
+        if(!storedItemInstance) {
+            flash.message = "StoredItem not found with id ${params.id}"
+            redirect(action:list)
+        }
+        else {
+            return [ storedItemInstance : storedItemInstance ]
+        }
+    }
+
+    def update = {
+        def storedItemInstance = StoredItem.get( params.id )
+        if(storedItemInstance) {
+            if(params.version) {
+                def version = params.version.toLong()
+                if(storedItemInstance.version > version) {
+                    
+                    storedItemInstance.errors.rejectValue("version", "storedItem.optimistic.locking.failure", "Another user has updated this StoredItem while you were editing.")
+                    render(view:'edit',model:[storedItemInstance:storedItemInstance])
+                    return
+                }
+            }
+            storedItemInstance.properties = params
+            if(!storedItemInstance.hasErrors() && storedItemInstance.save()) {
+                flash.message = "StoredItem ${params.id} updated"
+                redirect(action:show,id:storedItemInstance.id)
+            }
+            else {
+                render(view:'edit',model:[storedItemInstance:storedItemInstance])
+            }
+        }
+        else {
+            flash.message = "StoredItem not found with id ${params.id}"
+            redirect(action:edit,id:params.id)
+        }
+    }
+
+    def create = {
+        def storedItemInstance = new StoredItem()
+        storedItemInstance.properties = params
+        return ['storedItemInstance':storedItemInstance]
+    }
+
+    def save = {
+        def storedItemInstance = new StoredItem(params)
+        if(!storedItemInstance.hasErrors() && storedItemInstance.save()) {
+            flash.message = "StoredItem ${storedItemInstance.id} created"
+            redirect(action:show,id:storedItemInstance.id)
+        }
+        else {
+            render(view:'create',model:[storedItemInstance:storedItemInstance])
+        }
+    }
+}
Index: trunk/grails-app/controllers/SupplierController.groovy
===================================================================
--- trunk/grails-app/controllers/SupplierController.groovy	(revision 116)
+++ trunk/grails-app/controllers/SupplierController.groovy	(revision 116)
@@ -0,0 +1,99 @@
+import org.codehaus.groovy.grails.plugins.springsecurity.Secured
+
+class SupplierController extends BaseAppAdminController {
+    
+    def index = { redirect(action:list,params:params) }
+
+    // the delete, save and update actions only accept POST requests
+    static allowedMethods = [delete:'POST', save:'POST', update:'POST']
+
+    def list = {
+        params.max = Math.min( params.max ? params.max.toInteger() : 10,  100)
+        [ supplierInstanceList: Supplier.list( params ), supplierInstanceTotal: Supplier.count() ]
+    }
+
+    def show = {
+        def supplierInstance = Supplier.get( params.id )
+
+        if(!supplierInstance) {
+            flash.message = "Supplier not found with id ${params.id}"
+            redirect(action:list)
+        }
+        else { return [ supplierInstance : supplierInstance ] }
+    }
+
+    def delete = {
+        def supplierInstance = Supplier.get( params.id )
+        if(supplierInstance) {
+            try {
+                supplierInstance.delete()
+                flash.message = "Supplier ${params.id} deleted"
+                redirect(action:list)
+            }
+            catch(org.springframework.dao.DataIntegrityViolationException e) {
+                flash.message = "Supplier ${params.id} could not be deleted"
+                redirect(action:show,id:params.id)
+            }
+        }
+        else {
+            flash.message = "Supplier not found with id ${params.id}"
+            redirect(action:list)
+        }
+    }
+
+    def edit = {
+        def supplierInstance = Supplier.get( params.id )
+
+        if(!supplierInstance) {
+            flash.message = "Supplier not found with id ${params.id}"
+            redirect(action:list)
+        }
+        else {
+            return [ supplierInstance : supplierInstance ]
+        }
+    }
+
+    def update = {
+        def supplierInstance = Supplier.get( params.id )
+        if(supplierInstance) {
+            if(params.version) {
+                def version = params.version.toLong()
+                if(supplierInstance.version > version) {
+                    
+                    supplierInstance.errors.rejectValue("version", "supplier.optimistic.locking.failure", "Another user has updated this Supplier while you were editing.")
+                    render(view:'edit',model:[supplierInstance:supplierInstance])
+                    return
+                }
+            }
+            supplierInstance.properties = params
+            if(!supplierInstance.hasErrors() && supplierInstance.save()) {
+                flash.message = "Supplier ${params.id} updated"
+                redirect(action:show,id:supplierInstance.id)
+            }
+            else {
+                render(view:'edit',model:[supplierInstance:supplierInstance])
+            }
+        }
+        else {
+            flash.message = "Supplier not found with id ${params.id}"
+            redirect(action:edit,id:params.id)
+        }
+    }
+
+    def create = {
+        def supplierInstance = new Supplier()
+        supplierInstance.properties = params
+        return ['supplierInstance':supplierInstance]
+    }
+
+    def save = {
+        def supplierInstance = new Supplier(params)
+        if(!supplierInstance.hasErrors() && supplierInstance.save()) {
+            flash.message = "Supplier ${supplierInstance.id} created"
+            redirect(action:show,id:supplierInstance.id)
+        }
+        else {
+            render(view:'create',model:[supplierInstance:supplierInstance])
+        }
+    }
+}
Index: trunk/grails-app/controllers/SupplierTypeController.groovy
===================================================================
--- trunk/grails-app/controllers/SupplierTypeController.groovy	(revision 116)
+++ trunk/grails-app/controllers/SupplierTypeController.groovy	(revision 116)
@@ -0,0 +1,99 @@
+import org.codehaus.groovy.grails.plugins.springsecurity.Secured
+
+class SupplierTypeController extends BaseAppAdminController {
+    
+    def index = { redirect(action:list,params:params) }
+
+    // the delete, save and update actions only accept POST requests
+    static allowedMethods = [delete:'POST', save:'POST', update:'POST']
+
+    def list = {
+        params.max = Math.min( params.max ? params.max.toInteger() : 10,  100)
+        [ supplierTypeInstanceList: SupplierType.list( params ), supplierTypeInstanceTotal: SupplierType.count() ]
+    }
+
+    def show = {
+        def supplierTypeInstance = SupplierType.get( params.id )
+
+        if(!supplierTypeInstance) {
+            flash.message = "SupplierType not found with id ${params.id}"
+            redirect(action:list)
+        }
+        else { return [ supplierTypeInstance : supplierTypeInstance ] }
+    }
+
+    def delete = {
+        def supplierTypeInstance = SupplierType.get( params.id )
+        if(supplierTypeInstance) {
+            try {
+                supplierTypeInstance.delete()
+                flash.message = "SupplierType ${params.id} deleted"
+                redirect(action:list)
+            }
+            catch(org.springframework.dao.DataIntegrityViolationException e) {
+                flash.message = "SupplierType ${params.id} could not be deleted"
+                redirect(action:show,id:params.id)
+            }
+        }
+        else {
+            flash.message = "SupplierType not found with id ${params.id}"
+            redirect(action:list)
+        }
+    }
+
+    def edit = {
+        def supplierTypeInstance = SupplierType.get( params.id )
+
+        if(!supplierTypeInstance) {
+            flash.message = "SupplierType not found with id ${params.id}"
+            redirect(action:list)
+        }
+        else {
+            return [ supplierTypeInstance : supplierTypeInstance ]
+        }
+    }
+
+    def update = {
+        def supplierTypeInstance = SupplierType.get( params.id )
+        if(supplierTypeInstance) {
+            if(params.version) {
+                def version = params.version.toLong()
+                if(supplierTypeInstance.version > version) {
+                    
+                    supplierTypeInstance.errors.rejectValue("version", "supplierType.optimistic.locking.failure", "Another user has updated this SupplierType while you were editing.")
+                    render(view:'edit',model:[supplierTypeInstance:supplierTypeInstance])
+                    return
+                }
+            }
+            supplierTypeInstance.properties = params
+            if(!supplierTypeInstance.hasErrors() && supplierTypeInstance.save()) {
+                flash.message = "SupplierType ${params.id} updated"
+                redirect(action:show,id:supplierTypeInstance.id)
+            }
+            else {
+                render(view:'edit',model:[supplierTypeInstance:supplierTypeInstance])
+            }
+        }
+        else {
+            flash.message = "SupplierType not found with id ${params.id}"
+            redirect(action:edit,id:params.id)
+        }
+    }
+
+    def create = {
+        def supplierTypeInstance = new SupplierType()
+        supplierTypeInstance.properties = params
+        return ['supplierTypeInstance':supplierTypeInstance]
+    }
+
+    def save = {
+        def supplierTypeInstance = new SupplierType(params)
+        if(!supplierTypeInstance.hasErrors() && supplierTypeInstance.save()) {
+            flash.message = "SupplierType ${supplierTypeInstance.id} created"
+            redirect(action:show,id:supplierTypeInstance.id)
+        }
+        else {
+            render(view:'create',model:[supplierTypeInstance:supplierTypeInstance])
+        }
+    }
+}
Index: trunk/grails-app/controllers/TaskGroupController.groovy
===================================================================
--- trunk/grails-app/controllers/TaskGroupController.groovy	(revision 106)
+++ trunk/grails-app/controllers/TaskGroupController.groovy	(revision 116)
@@ -1,5 +1,5 @@
 import org.codehaus.groovy.grails.plugins.springsecurity.Secured
 
-class TaskGroupController extends BaseController {
+class TaskGroupController extends BaseAppAdminController {
     
     def index = { redirect(action:list,params:params) }
Index: trunk/grails-app/controllers/TaskModificationController.groovy
===================================================================
--- trunk/grails-app/controllers/TaskModificationController.groovy	(revision 106)
+++ trunk/grails-app/controllers/TaskModificationController.groovy	(revision 116)
@@ -1,5 +1,5 @@
 import org.codehaus.groovy.grails.plugins.springsecurity.Secured
 
-class TaskModificationController extends BaseController {
+class TaskModificationController extends BaseAppAdminController {
     
     def index = { redirect(action:list,params:params) }
Index: trunk/grails-app/controllers/TaskModificationTypeController.groovy
===================================================================
--- trunk/grails-app/controllers/TaskModificationTypeController.groovy	(revision 106)
+++ trunk/grails-app/controllers/TaskModificationTypeController.groovy	(revision 116)
@@ -1,5 +1,5 @@
 import org.codehaus.groovy.grails.plugins.springsecurity.Secured
 
-class TaskModificationTypeController extends BaseController {
+class TaskModificationTypeController extends BaseAppAdminController{
     
     def index = { redirect(action:list,params:params) }
Index: trunk/grails-app/controllers/TaskPriorityController.groovy
===================================================================
--- trunk/grails-app/controllers/TaskPriorityController.groovy	(revision 106)
+++ trunk/grails-app/controllers/TaskPriorityController.groovy	(revision 116)
@@ -1,5 +1,5 @@
 import org.codehaus.groovy.grails.plugins.springsecurity.Secured
 
-class TaskPriorityController extends BaseController {
+class TaskPriorityController extends BaseAppAdminController {
     
     def index = { redirect(action:list,params:params) }
Index: trunk/grails-app/controllers/TaskStatusController.groovy
===================================================================
--- trunk/grails-app/controllers/TaskStatusController.groovy	(revision 106)
+++ trunk/grails-app/controllers/TaskStatusController.groovy	(revision 116)
@@ -1,5 +1,5 @@
 import org.codehaus.groovy.grails.plugins.springsecurity.Secured
 
-class TaskStatusController extends BaseController {
+class TaskStatusController extends BaseAppAdminController {
     
     def index = { redirect(action:list,params:params) }
Index: trunk/grails-app/controllers/TaskTypeController.groovy
===================================================================
--- trunk/grails-app/controllers/TaskTypeController.groovy	(revision 106)
+++ trunk/grails-app/controllers/TaskTypeController.groovy	(revision 116)
@@ -1,5 +1,5 @@
 import org.codehaus.groovy.grails.plugins.springsecurity.Secured
 
-class TaskTypeController extends BaseController {
+class TaskTypeController extends BaseAppAdminController {
     
     def index = { redirect(action:list,params:params) }
Index: trunk/grails-app/controllers/UnitOfMeasureController.groovy
===================================================================
--- trunk/grails-app/controllers/UnitOfMeasureController.groovy	(revision 116)
+++ trunk/grails-app/controllers/UnitOfMeasureController.groovy	(revision 116)
@@ -0,0 +1,99 @@
+import org.codehaus.groovy.grails.plugins.springsecurity.Secured
+
+class UnitOfMeasureController extends BaseAppAdminController {
+    
+    def index = { redirect(action:list,params:params) }
+
+    // the delete, save and update actions only accept POST requests
+    static allowedMethods = [delete:'POST', save:'POST', update:'POST']
+
+    def list = {
+        params.max = Math.min( params.max ? params.max.toInteger() : 10,  100)
+        [ unitOfMeasureInstanceList: UnitOfMeasure.list( params ), unitOfMeasureInstanceTotal: UnitOfMeasure.count() ]
+    }
+
+    def show = {
+        def unitOfMeasureInstance = UnitOfMeasure.get( params.id )
+
+        if(!unitOfMeasureInstance) {
+            flash.message = "UnitOfMeasure not found with id ${params.id}"
+            redirect(action:list)
+        }
+        else { return [ unitOfMeasureInstance : unitOfMeasureInstance ] }
+    }
+
+    def delete = {
+        def unitOfMeasureInstance = UnitOfMeasure.get( params.id )
+        if(unitOfMeasureInstance) {
+            try {
+                unitOfMeasureInstance.delete()
+                flash.message = "UnitOfMeasure ${params.id} deleted"
+                redirect(action:list)
+            }
+            catch(org.springframework.dao.DataIntegrityViolationException e) {
+                flash.message = "UnitOfMeasure ${params.id} could not be deleted"
+                redirect(action:show,id:params.id)
+            }
+        }
+        else {
+            flash.message = "UnitOfMeasure not found with id ${params.id}"
+            redirect(action:list)
+        }
+    }
+
+    def edit = {
+        def unitOfMeasureInstance = UnitOfMeasure.get( params.id )
+
+        if(!unitOfMeasureInstance) {
+            flash.message = "UnitOfMeasure not found with id ${params.id}"
+            redirect(action:list)
+        }
+        else {
+            return [ unitOfMeasureInstance : unitOfMeasureInstance ]
+        }
+    }
+
+    def update = {
+        def unitOfMeasureInstance = UnitOfMeasure.get( params.id )
+        if(unitOfMeasureInstance) {
+            if(params.version) {
+                def version = params.version.toLong()
+                if(unitOfMeasureInstance.version > version) {
+                    
+                    unitOfMeasureInstance.errors.rejectValue("version", "unitOfMeasure.optimistic.locking.failure", "Another user has updated this UnitOfMeasure while you were editing.")
+                    render(view:'edit',model:[unitOfMeasureInstance:unitOfMeasureInstance])
+                    return
+                }
+            }
+            unitOfMeasureInstance.properties = params
+            if(!unitOfMeasureInstance.hasErrors() && unitOfMeasureInstance.save()) {
+                flash.message = "UnitOfMeasure ${params.id} updated"
+                redirect(action:show,id:unitOfMeasureInstance.id)
+            }
+            else {
+                render(view:'edit',model:[unitOfMeasureInstance:unitOfMeasureInstance])
+            }
+        }
+        else {
+            flash.message = "UnitOfMeasure not found with id ${params.id}"
+            redirect(action:edit,id:params.id)
+        }
+    }
+
+    def create = {
+        def unitOfMeasureInstance = new UnitOfMeasure()
+        unitOfMeasureInstance.properties = params
+        return ['unitOfMeasureInstance':unitOfMeasureInstance]
+    }
+
+    def save = {
+        def unitOfMeasureInstance = new UnitOfMeasure(params)
+        if(!unitOfMeasureInstance.hasErrors() && unitOfMeasureInstance.save()) {
+            flash.message = "UnitOfMeasure ${unitOfMeasureInstance.id} created"
+            redirect(action:show,id:unitOfMeasureInstance.id)
+        }
+        else {
+            render(view:'create',model:[unitOfMeasureInstance:unitOfMeasureInstance])
+        }
+    }
+}
