Changeset 177


Ignore:
Timestamp:
Nov 2, 2009, 1:17:03 PM (15 years ago)
Author:
gav
Message:

Inventory movement quantity adjustments now done in a service.
InventoryMovementType now has an incrementsInventory flag, so not dependant on the text name.

Location:
trunk/grails-app
Files:
1 added
12 edited

Legend:

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

    r175 r177  
    22
    33class InventoryMovementDetailedController extends BaseController {
     4
     5    def inventoryMovementService
    46
    57    def index = { redirect(action:list,params:params) }
     
    2426
    2527    def delete = {
    26         def inventoryMovementInstance = InventoryMovement.get( params.id )
    27         if(inventoryMovementInstance) {
    28             try {
    29                 def taskId = inventoryMovementInstance.task?.id
    30                 inventoryMovementInstance.delete(flush:true)
    31                 flash.message = "InventoryMovement ${params.id} deleted"
    32                 redirect(controller:"taskDetailed", action:"show", id:taskId)
    33             }
    34             catch(org.springframework.dao.DataIntegrityViolationException e) {
    35                 flash.message = "InventoryMovement ${params.id} could not be deleted"
    36                 redirect(action:show,id:params.id)
    37             }
     28        def result = inventoryMovementService.reverseMove(params)
     29
     30        if(!result.error) {
     31            flash.message = "InventoryMovement ${params.id} deleted"
     32            redirect(controller:"taskDetailed", action:"show", id:result.taskId)
    3833        }
    3934        else {
    40             flash.message = "InventoryMovement not found with id ${params.id}"
    41             redirect(action:list)
     35            if(result.inventoryMovementInstance) {
     36                render(view:'show',model:[inventoryMovementInstance:result.inventoryMovementInstance])
     37            }
     38            else {
     39                flash.message = "Could not delete inventory movement."
     40                redirect(controller:"taskDetailed", action:"search", id:result.taskId)
     41            }
    4242        }
    4343    }
     
    5454
    5555    def save = {
    56         def inventoryMovementInstance = new InventoryMovement(params)
    57         if(!inventoryMovementInstance.hasErrors() && inventoryMovementInstance.save()) {
    58             flash.message = "Inventory Movement for ${inventoryMovementInstance.inventoryItem.name} created."
    59             redirect(controller:"taskDetailed", action:"show", id: params.task.id)
     56        def result = inventoryMovementService.move(params)
     57
     58        if(!result.error) {
     59            flash.message = "Inventory Movement for ${result.inventoryMovementInstance.inventoryItem.name} created."
     60            redirect(controller:"taskDetailed", action:"show", id: result.taskId)
    6061        }
    6162        else {
    62             render(view:'create',model:[inventoryMovementInstance:inventoryMovementInstance])
     63            if(result.inventoryMovementInstance) {
     64                render(view:'create',model:[inventoryMovementInstance:result.inventoryMovementInstance])
     65            }
     66            else {
     67                flash.message = "Could not create inventory movement."
     68                redirect(controller:"taskDetailed", action:"search", id:result.taskId)
     69            }
     70
    6371        }
    6472    }
     73
    6574}
  • trunk/grails-app/controllers/InventoryMovementTypeController.groovy

    r116 r177  
    2727        if(inventoryMovementTypeInstance) {
    2828            try {
    29                 inventoryMovementTypeInstance.delete()
     29                inventoryMovementTypeInstance.delete(flush:true)
    3030                flash.message = "InventoryMovementType ${params.id} deleted"
    3131                redirect(action:list)
     
    7777        else {
    7878            flash.message = "InventoryMovementType not found with id ${params.id}"
    79             redirect(action:edit,id:params.id)
     79            redirect(action:list)
    8080        }
    8181    }
  • trunk/grails-app/domain/InventoryMovement.groovy

    r175 r177  
    88    Date date = new Date()
    99
    10 //     static belongsTo = [inventoryItem]
     10//     static belongsTo = []
    1111
    1212    static constraints = {
  • trunk/grails-app/domain/InventoryMovementType.groovy

    r116 r177  
    22    String name
    33    String description = ""
     4    boolean incrementsInventory = false
    45    boolean isActive = true
    56
    67    static hasMany = [inventoryMovements: InventoryMovement]
    7    
     8
    89    static contstraints = {
    910        name(maxSize:50,unique:true,blank:false)
    1011        description(maxSize:100)
     12        incrementsInventory()
     13        isActive()
    1114    }
    1215
  • trunk/grails-app/i18n/messages.properties

    r175 r177  
    4646task.associatedAssets=Associated Assets
    4747task.associatedAssets.help=These assets are to be associated with this task, but costs will not be assigned.
     48
     49inventoryMovement.quantity.insufficientItemsInStock=Could not complete operation, insufficient items in stock.
     50inventoryMovement.inventoryItem.notFound=Inventory Item not found.
    4851
    4952default.doesnt.match.message=Property [{0}] of class [{1}] with value [{2}] does not match the required pattern [{3}]
  • trunk/grails-app/services/CreateDataService.groovy

    r175 r177  
    708708
    709709        // InventoryMovementType #1
    710         inventoryMovementTypeInstance = new InventoryMovementType(name: "Used")
     710        inventoryMovementTypeInstance = new InventoryMovementType(name: "Used",
     711                                                                                                                        incrementsInventory: false)
    711712        saveAndTest(inventoryMovementTypeInstance)
    712713
    713714        // InventoryMovementType #2
    714         inventoryMovementTypeInstance = new InventoryMovementType(name: "Repaired")
     715        inventoryMovementTypeInstance = new InventoryMovementType(name: "Repaired",
     716                                                                                                                        incrementsInventory: true)
    715717        saveAndTest(inventoryMovementTypeInstance)
    716718
    717719        // InventoryMovementType #3
    718         inventoryMovementTypeInstance = new InventoryMovementType(name: "Purchased")
     720        inventoryMovementTypeInstance = new InventoryMovementType(name: "Purchase Received",
     721                                                                                                                        incrementsInventory: true)
     722        saveAndTest(inventoryMovementTypeInstance)
     723
     724        // InventoryMovementType #4
     725        inventoryMovementTypeInstance = new InventoryMovementType(name: "Correction Increase",
     726                                                                                                                        incrementsInventory: true)
     727        saveAndTest(inventoryMovementTypeInstance)
     728
     729        // InventoryMovementType #5
     730        inventoryMovementTypeInstance = new InventoryMovementType(name: "Correction Decrease",
     731                                                                                                                        incrementsInventory: false)
    719732        saveAndTest(inventoryMovementTypeInstance)
    720733    }
  • trunk/grails-app/views/inventoryMovementDetailed/create.gsp

    r175 r177  
    4141                                <td valign="top" class="value ${hasErrors(bean:inventoryMovementInstance,field:'quantity','errors')}">
    4242                                    <input type="text" id="quantity" name="quantity" value="${fieldValue(bean:inventoryMovementInstance,field:'quantity')}"/>
    43                                     ${inventoryMovementInstance.inventoryItem}
    4443                                </td>
    4544                            </tr>
     
    4746                            <tr class="prop">
    4847                                <td valign="top" class="name">
    49                                     <label for="inventoryMovementType">Inventory Movement Type:</label>
     48                                    <label for="inventoryMovementType">Movement Type:</label>
    5049                                </td>
    5150                                <td valign="top" class="value ${hasErrors(bean:inventoryMovementInstance,field:'inventoryMovementType','errors')}">
  • trunk/grails-app/views/inventoryMovementDetailed/show.gsp

    r175 r177  
    1515            <div class="message">${flash.message}</div>
    1616            </g:if>
     17            <g:hasErrors bean="${inventoryMovementInstance}">
     18            <div class="errors">
     19                <g:renderErrors bean="${inventoryMovementInstance}" as="list" />
     20            </div>
     21            </g:hasErrors>
    1722            <div class="dialog">
    1823                <table>
  • trunk/grails-app/views/inventoryMovementType/create.gsp

    r151 r177  
    55        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
    66        <meta name="layout" content="main" />
    7         <title>Create InventoryMovementType</title>         
     7        <title>Create InventoryMovementType</title>
    88    </head>
    99    <body>
    1010        <div class="nav">
    11             <span class="menuButton"><a class="home" href="${resource(dir:'')}">Home</a></span>
    1211            <span class="menuButton"><g:link class="list" action="list">InventoryMovementType List</g:link></span>
    1312        </div>
     
    3332                                <td valign="top" class="value ${hasErrors(bean:inventoryMovementTypeInstance,field:'description','errors')}">
    3433                                    <input type="text" id="description" name="description" value="${fieldValue(bean:inventoryMovementTypeInstance,field:'description')}"/>
     34                                </td>
     35                            </tr>
     36                       
     37                            <tr class="prop">
     38                                <td valign="top" class="name">
     39                                    <label for="incrementsInventory">Increments Inventory:</label>
     40                                </td>
     41                                <td valign="top" class="value ${hasErrors(bean:inventoryMovementTypeInstance,field:'incrementsInventory','errors')}">
     42                                    <g:checkBox name="incrementsInventory" value="${inventoryMovementTypeInstance?.incrementsInventory}" ></g:checkBox>
    3543                                </td>
    3644                            </tr>
  • trunk/grails-app/views/inventoryMovementType/edit.gsp

    r151 r177  
    99    <body>
    1010        <div class="nav">
    11             <span class="menuButton"><a class="home" href="${resource(dir:'')}">Home</a></span>
    1211            <span class="menuButton"><g:link class="list" action="list">InventoryMovementType List</g:link></span>
    1312            <span class="menuButton"><g:link class="create" action="create">New InventoryMovementType</g:link></span>
     
    3635                                <td valign="top" class="value ${hasErrors(bean:inventoryMovementTypeInstance,field:'description','errors')}">
    3736                                    <input type="text" id="description" name="description" value="${fieldValue(bean:inventoryMovementTypeInstance,field:'description')}"/>
     37                                </td>
     38                            </tr>
     39                       
     40                            <tr class="prop">
     41                                <td valign="top" class="name">
     42                                    <label for="incrementsInventory">Increments Inventory:</label>
     43                                </td>
     44                                <td valign="top" class="value ${hasErrors(bean:inventoryMovementTypeInstance,field:'incrementsInventory','errors')}">
     45                                    <g:checkBox name="incrementsInventory" value="${inventoryMovementTypeInstance?.incrementsInventory}" ></g:checkBox>
    3846                                </td>
    3947                            </tr>
  • trunk/grails-app/views/inventoryMovementType/list.gsp

    r151 r177  
    99    <body>
    1010        <div class="nav">
    11             <span class="menuButton"><a class="home" href="${resource(dir:'')}">Home</a></span>
    1211            <span class="menuButton"><g:link class="create" action="create">New InventoryMovementType</g:link></span>
    1312        </div>
     
    2625                                <g:sortableColumn property="description" title="Description" />
    2726                       
     27                                <g:sortableColumn property="incrementsInventory" title="Increments Inventory" />
     28                       
    2829                                <g:sortableColumn property="isActive" title="Is Active" />
    2930                       
     
    3940                       
    4041                            <td>${fieldValue(bean:inventoryMovementTypeInstance, field:'description')}</td>
     42                       
     43                            <td>${fieldValue(bean:inventoryMovementTypeInstance, field:'incrementsInventory')}</td>
    4144                       
    4245                            <td>${fieldValue(bean:inventoryMovementTypeInstance, field:'isActive')}</td>
  • trunk/grails-app/views/inventoryMovementType/show.gsp

    r151 r177  
    99    <body>
    1010        <div class="nav">
    11             <span class="menuButton"><a class="home" href="${resource(dir:'')}">Home</a></span>
    1211            <span class="menuButton"><g:link class="list" action="list">InventoryMovementType List</g:link></span>
    1312            <span class="menuButton"><g:link class="create" action="create">New InventoryMovementType</g:link></span>
     
    3433                           
    3534                            <td valign="top" class="value">${fieldValue(bean:inventoryMovementTypeInstance, field:'description')}</td>
     35                           
     36                        </tr>
     37                   
     38                        <tr class="prop">
     39                            <td valign="top" class="name">Increments Inventory:</td>
     40                           
     41                            <td valign="top" class="value">${fieldValue(bean:inventoryMovementTypeInstance, field:'incrementsInventory')}</td>
    3642                           
    3743                        </tr>
Note: See TracChangeset for help on using the changeset viewer.