Ignore:
Timestamp:
Dec 8, 2009, 4:03:29 AM (14 years ago)
Author:
gav
Message:

Complete inventory movement implementation as per ticket #24.
Refactor showTab function in both Task and Inventory (which now has tabs).

Location:
trunk/grails-app/controllers
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/grails-app/controllers/InventoryItemDetailedController.groovy

    r178 r225  
    44
    55    def filterService
     6    def inventoryItemService
     7    def inventoryMovementService
    68
    79    def index = { redirect(action:search, params:params) }
    810
    911    // the delete, save and update actions only accept POST requests
    10     static allowedMethods = [delete:'POST', save:'POST', update:'POST']
     12    static allowedMethods = [delete:'POST', save:'POST', update:'POST', useInventoryItem:'POST']
    1113
    1214    def list = {
     
    2931    }
    3032
     33    /**
     34    * Simply assigns a passed in task id to a session variable and redirects to search.
     35    */
     36    def findInventoryItemForMovement = {
     37        if(!params.task?.id) {
     38            flash.message = "No task id supplied, please select a task then the inventory tab."
     39            redirect(controller: "taskDetailed", action: "search")
     40            return
     41        }
     42
     43        session.inventoryMovementTaskId = params.task.id
     44        flash.message = "Please find and then select the inventory item."
     45        redirect(action: search)
     46    }
     47
    3148    def show = {
    32        
     49
    3350        // In the case of an actionSubmit button, rewrite action name from 'index'.
    3451        if(params._action_Show)
    3552        { params.action='show' }
    36        
    37         def inventoryItemInstance = InventoryItem.get( params.id )
    3853
    39         if(!inventoryItemInstance) {
     54        if(!InventoryItem.exists(params.id)) {
    4055            flash.message = "InventoryItem not found with id ${params.id}"
    4156            redirect(action:search)
     57            return
    4258        }
    43         else { return [ inventoryItemInstance : inventoryItemInstance ] }
     59
     60        def result = inventoryItemService.prepareShowData(params)
     61
     62        if(result.error) {
     63            flash.message = "Could not to prepare the data to show item with id: ${params.id}."
     64            redirect(action:search)
     65            return
     66        }
     67
     68        def model = [ inventoryItemInstance: result.inventoryItemInstance,
     69                                inventoryMovementList: result.inventoryMovementList,
     70                                inventoryMovementListTotal: result.inventoryMovementListTotal,
     71                                inventoryMovementListMax: result.inventoryMovementListMax,
     72                                showTab: result.showTab]
     73
     74        if(session.inventoryMovementTaskId) {
     75            model.inventoryMovementInstance = new InventoryMovement()
     76            model.inventoryMovementInstance.task = Task.get(session.inventoryMovementTaskId)
     77            model.inventoryMovementInstance.quantity = 1
     78        }
     79
     80        return model
    4481    }
    4582
     
    123160        }
    124161    }
     162
     163    /**
     164    * Handles the use inventory item form submit in the show view.
     165    */
     166    def useInventoryItem = {
     167
     168        params.inventoryMovementType = InventoryMovementType.get(1) // used.
     169        def result = inventoryMovementService.move(params)
     170
     171        if(!result.error) {
     172            flash.message = "Inventory Movement for ${result.inventoryMovementInstance.inventoryItem.name.encodeAsHTML()} created."
     173            redirect(controller:"taskDetailed", action:"show", id: result.taskId)
     174        }
     175        else {
     176            if(result.inventoryMovementInstance) {
     177                def p = [:]
     178                p.id = result.inventoryMovementInstance.inventoryItem?.id
     179                def r = inventoryItemService.prepareShowData(p)
     180
     181                def model = [ inventoryItemInstance: r.inventoryItemInstance,
     182                                        inventoryMovementList: r.inventoryMovementList,
     183                                        inventoryMovementListTotal: r.inventoryMovementListTotal,
     184                                        inventoryMovementListMax: r.inventoryMovementListMax,
     185                                        showTab: r.showTab]
     186
     187                model.inventoryMovementInstance = result.inventoryMovementInstance
     188
     189                render(view: 'show', model: model)
     190            }
     191            else {
     192                flash.message = "Could not create inventory movement."
     193                redirect(action:"search")
     194            }
     195
     196        }
     197    }
     198
    125199}
  • trunk/grails-app/controllers/TaskDetailedController.groovy

    r216 r225  
    154154        { params.action='show' }
    155155
     156        def showTab = [:]
     157        switch (params.showTab) {
     158            case "showProcedureTab":
     159                showTab.procedure =  new String("true")
     160                break
     161            case "showRecurrenceTab":
     162                showTab.recurrence =  new String("true")
     163                break
     164            case "showInventoryTab":
     165                showTab.inventory = new String("true")
     166                break
     167            case "showSubTasksTab":
     168                showTab.subTasks = new String("true")
     169                break
     170            default:
     171                showTab.task = new String("true")
     172        }
     173
    156174        def taskInstance = Task.get( params.id )
    157175
     
    177195            def subTaskInstanceList = Task.findAllByParentTaskAndTrash(taskInstance, false, params)
    178196            def subTaskInstanceTotal = Task.countByParentTaskAndTrash(taskInstance, false)
    179             def showTaskTab = new String("true")
    180197
    181198            def inventoryMovementList = InventoryMovement.findAllByTask(taskInstance, [max:100, sort:"id", order:"desc", offset:0])
     
    204221                            taskProcedureInstance: taskProcedureInstance,
    205222                            taskProcedureExits: taskProcedureExits,
    206                             showTaskTab: showTaskTab,
     223                            showTab: showTab,
    207224                            subTaskInstanceList: subTaskInstanceList,
    208225                            subTaskInstanceTotal: subTaskInstanceTotal,
Note: See TracChangeset for help on using the changeset viewer.