Changeset 226


Ignore:
Timestamp:
Dec 9, 2009, 4:36:55 AM (14 years ago)
Author:
gav
Message:

Complete functionality for inventory movement types other than "Used".

Location:
trunk/grails-app
Files:
6 edited

Legend:

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

    r225 r226  
    166166    def useInventoryItem = {
    167167
    168         params.inventoryMovementType = InventoryMovementType.get(1) // used.
     168        params.inventoryMovementType = InventoryMovementType.get(1) // Set type to "Used".
    169169        def result = inventoryMovementService.move(params)
    170170
  • trunk/grails-app/controllers/InventoryMovementDetailedController.groovy

    r224 r226  
    2727    /**
    2828    * List the inventory movements for an InventoryItem.
    29     * @param params.id The id of an existing inventory item.
     29    * @param params.inventoryItem.id The id of an existing inventory item.
    3030    */
    3131    def listInventoryMovements = {
    32         def inventoryItemInstance = InventoryItem.get(params.id)
     32        def inventoryItemInstance = InventoryItem.get(params.inventoryItem.id)
    3333
    3434        if(!inventoryItemInstance) {
     
    6565
    6666    def create = {
    67         if(!params.task?.id) {
    68             flash.message = "Please select a task, then the Inventory tab."
    69             redirect(controller:"taskDetailed", action:"search")
    70         }
    7167        def inventoryMovementInstance = new InventoryMovement()
    7268        inventoryMovementInstance.properties = params
    73         return ['inventoryMovementInstance':inventoryMovementInstance]
     69        def inventoryMovementTypeList = InventoryMovementType.withCriteria { gt("id", 1L) } // Don't include "Used".
     70
     71        return ['inventoryMovementInstance': inventoryMovementInstance,
     72                        inventoryMovementTypeList: inventoryMovementTypeList]
    7473    }
    7574
     75    /**
     76    * Handles all inventory movements except those of type "Used".
     77     * The "Used" type is handled directly by InventoryItemDetailedController and useInventoryItem.
     78    */
    7679    def save = {
    7780        def result = inventoryMovementService.move(params)
     
    7982        if(!result.error) {
    8083            flash.message = "Inventory Movement for ${result.inventoryMovementInstance.inventoryItem.name} created."
    81             redirect(controller:"taskDetailed", action:"show", id: result.taskId)
     84            if(result.taskId) {
     85                redirect(controller:"taskDetailed", action:"show", id: result.taskId)
     86                return
     87            }
     88            redirect(controller:"inventoryItemDetailed", action:"show", id: result.inventoryMovementInstance.inventoryItem.id)
    8289        }
    8390        else {
    8491            if(result.inventoryMovementInstance) {
    85                 render(view:'create',model:[inventoryMovementInstance:result.inventoryMovementInstance])
     92                def inventoryMovementTypeList = InventoryMovementType.withCriteria { gt("id", 1L) } // Don't include "Used".
     93                render(view:'create', model:[inventoryMovementInstance: result.inventoryMovementInstance,
     94                                                            inventoryMovementTypeList: inventoryMovementTypeList])
    8695            }
    8796            else {
  • trunk/grails-app/services/InventoryItemService.groovy

    r225 r226  
    1919        def fail = { Object[] args ->
    2020            if(args.size() == 2) result.errors = [args[0], args[1]]
    21             log.debug result.errors
    2221            result.error = true
    2322            return result
     
    4140            return fail("inventoryItem", "inventoryItem.notFound")
    4241
    43         log.debug "WTF are we doing here"
    44 
    4542        def p = [:]
    4643        p.max = result.inventoryMovementListMax = 10
  • trunk/grails-app/services/InventoryMovementService.groovy

    r225 r226  
    117117            if(result.inventoryMovementInstance.validate()) {
    118118                def inventoryItem = InventoryItem.lock(result.inventoryMovementInstance.inventoryItem.id)
    119                 result.taskId = result.inventoryMovementInstance.task.id
     119                result.taskId = result.inventoryMovementInstance.task?.id
    120120
    121121                if(!inventoryItem) {
  • trunk/grails-app/views/inventoryItemDetailed/show.gsp

    r225 r226  
    292292                            <div class="buttons">
    293293                                <g:form controller="inventoryMovementDetailed">
    294                                     <g:hiddenField name="id" value="${inventoryItemInstance?.id}" />
     294                                    <g:hiddenField name="inventoryItem.id" value="${inventoryItemInstance.id}" />
    295295                                    <span class="button"><g:actionSubmit action="create" class="add" value="Create" /></span>
    296296                                </g:form>
     
    333333                            <div class="buttons">
    334334                                <g:form controller="inventoryMovementDetailed">
    335                                     <g:hiddenField name="id" value="${inventoryItemInstance?.id}" />
     335                                    <g:hiddenField name="inventoryItem.id" value="${inventoryItemInstance.id}" />
    336336                                    <g:if test="${inventoryMovementListTotal > inventoryMovementListMax}">
    337337                                        Showing ${inventoryMovementListMax} of ${inventoryMovementListTotal}
  • trunk/grails-app/views/inventoryMovementDetailed/create.gsp

    r225 r226  
    2121            </div>
    2222            </g:hasErrors>
     23
    2324            <g:form action="save" method="post" >
     25                <g:hiddenField name="inventoryItem.id" value="${inventoryMovementInstance?.inventoryItem?.id}" />
    2426                <div class="dialog">
    2527                    <table>
    2628                        <tbody>
    27                        
     29
    2830                            <tr class="prop">
    2931                                <td valign="top" class="name">
     
    3133                                </td>
    3234                                <td valign="top" class="value ${hasErrors(bean:inventoryMovementInstance,field:'inventoryItem','errors')}">
    33                                     <g:select optionKey="id" from="${InventoryItem.list()}" name="inventoryItem.id" value="${inventoryMovementInstance?.inventoryItem?.id}" ></g:select>
     35                                    <g:link controller="inventoryItemDetailed" action="show" id="${inventoryMovementInstance?.inventoryItem?.id}" >
     36                                        <g:fieldValue bean="${inventoryMovementInstance}" field="inventoryItem" />
     37                                    </g:link>
    3438                                </td>
    35                             </tr> 
    36                        
     39                            </tr>
     40
    3741                            <tr class="prop">
    3842                                <td valign="top" class="name">
    3943                                    <label for="quantity">Quantity:</label>
    4044                                </td>
    41                                 <td valign="top" class="value ${hasErrors(bean:inventoryMovementInstance,field:'quantity','errors')}">
    42                                     <input type="text" id="quantity" name="quantity" value="${fieldValue(bean:inventoryMovementInstance,field:'quantity')}"/>
     45                                <td valign="top">
     46                                    <input class="medium ${hasErrors(bean:inventoryMovementInstance,field:'quantity','errors')}"
     47                                                type="text" id="quantity" name="quantity"
     48                                                value="${fieldValue(bean:inventoryMovementInstance,field:'quantity')}"/>
     49                                                ${inventoryMovementInstance?.inventoryItem?.unitOfMeasure.encodeAsHTML()}
    4350                                </td>
    4451                            </tr>
     
    4956                                </td>
    5057                                <td valign="top" class="value ${hasErrors(bean:inventoryMovementInstance,field:'inventoryMovementType','errors')}">
    51                                     <g:select optionKey="id" from="${InventoryMovementType.list()}" name="inventoryMovementType.id" value="${inventoryMovementInstance?.inventoryMovementType?.id}" ></g:select>
     58                                    <g:select optionKey="id" from="${inventoryMovementTypeList}" name="inventoryMovementType.id" value="${inventoryMovementInstance?.inventoryMovementType?.id}" ></g:select>
    5259                                </td>
    5360                            </tr>
    5461
    55                             <g:if test="${inventoryMovementInstance.task}">
     62                            <g:if test="${inventoryMovementInstance?.task}">
    5663                                <tr class="prop">
    5764                                    <td valign="top" class="name">
    5865                                        <label for="taskInstance">Linking with task:</label>
    5966                                    </td>
    60                                     <td valign="top" name="inventoryMovementInstance.task" class="value">
     67                                    <td valign="top" class="value">
    6168                                        <g:hiddenField name="task.id" value="${inventoryMovementInstance.task.id}" />
    6269                                        <g:link controller="taskDetailed" action="show" id="${inventoryMovementInstance.task.id}" >
    63                                             ${inventoryMovementInstance.task}
     70                                            ${inventoryMovementInstance.task.encodeAsHTML()}
    6471                                        </g:link>
    6572                                    </td>
     
    7077                    </table>
    7178                </div>
     79
    7280                <div class="buttons">
    7381                    <span class="button"><input class="save" type="submit" value="Create" /></span>
    7482                </div>
     83
    7584            </g:form>
    7685        </div>
    77 
    78 
    79         <!-- Start Search Pane -->
    80         <div class="overlayPane" id="searchPane" style="display:none;">
    81             <h2>Quick Search</h2>
    82             <g:form method="post" id="searchForm" name="searchForm" >
    83                 <table>
    84                     <tbody>
    85 
    86                         <tr class="prop">
    87                             <td valign="top" class="name">
    88                                 <label>My Tasks:</label>
    89                             </td>
    90                             <td valign="top" class="value">
    91                                 <g:link controller="taskDetailed"
    92                                                 action="search"
    93                                                 params="[quickSearch: 'searchMyTodays']">
    94                                                 Today's
    95                                 </g:link>
    96                                 <br />
    97                                 <g:link controller="taskDetailed"
    98                                                 action="search"
    99                                                 params="[quickSearch: 'searchMyInTheLastWeek']">
    100                                                 In the last week
    101                                 </g:link>
    102                             </td>
    103                         </tr>
    104 
    105                         <tr class="prop">
    106                             <td valign="top" class="name">
    107                                 <label>Tasks:</label>
    108                             </td>
    109                             <td valign="top" class="value">
    110                                 <g:link controller="taskDetailed"
    111                                                 action="search"
    112                                                 params="[quickSearch: 'searchTodays']">
    113                                                 Today's
    114                                 </g:link>
    115                                 <br />
    116                                 <g:link controller="taskDetailed"
    117                                                 action="search"
    118                                                 params="[quickSearch: 'searchInTheLastWeek']">
    119                                                 In the last week
    120                                 </g:link>
    121                             </td>
    122                         </tr>
    123 
    124                     </tbody>
    125                 </table>
    126                 <div class="buttons">
    127                     <span class="button">
    128                         <input type="button" value="${g.message(code:'fp.tag.filterPane.button.cancel.text', default:'Cancel')}" onclick="return hideElement('searchPane');" />
    129                     </span>
    130 <!--                    <span class="button">
    131                         <input type="button" value="${g.message(code:'fp.tag.filterPane.button.clear.text', default:'Clear')}" onclick="return clearFilterPane('searchForm');" />
    132                     </span>
    133                     <span class="button">
    134                         <g:actionSubmit class="search" value="Search" />
    135                     </span>-->
    136                 </div>
    137             </g:form>
    138         </div> <!-- end search pane -->
    139 
    14086    </body>
    14187</html>
Note: See TracChangeset for help on using the changeset viewer.