Ignore:
Timestamp:
Mar 3, 2010, 3:50:21 PM (10 years ago)
Author:
gav
Message:

Handle InventoryItem reverse alternateItems.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/grails-app/services/InventoryItemService.groovy

    r405 r425  
    55
    66    boolean transactional = false
     7
     8    /**
     9    * Prepare a sorted list of possible alternateItems.
     10    */
     11    def getPossibleAlternateItems(inventoryItemInstance) {
     12        def criteria = inventoryItemInstance.createCriteria()
     13        def possibleAlternateItems = criteria {
     14            and {
     15                eq('isActive', true)
     16                notEqual('id', inventoryItemInstance.id)
     17            }
     18        }.sort { p1, p2 -> p1.name.compareToIgnoreCase(p2.name) }
     19    }
    720
    821    /**
     
    5063
    5164    def delete(params) {
    52         def result = [:]
    53         def fail = { Map m ->
    54             result.error = [ code: m.code, args: ["InventoryItem", params.id] ]
    55             return result
    56         }
     65        InventoryItem.withTransaction { status ->
     66            def result = [:]
    5767
    58         result.inventoryItemInstance = InventoryItem.get(params.id)
     68            def fail = { Map m ->
     69                status.setRollbackOnly()
     70                if(result.inventoryItemInstance && m.field)
     71                    result.inventoryItemInstance.errors.rejectValue(m.field, m.code)
     72                result.error = [ code: m.code, args: ["InventoryItem", params.id] ]
     73                return result
     74            }
    5975
    60         if(!result.inventoryItemInstance)
    61             return fail(code:"default.not.found")
     76            result.inventoryItemInstance = InventoryItem.get(params.id)
    6277
    63         try {
    64             result.inventoryItemInstance.delete(flush:true)
    65             return result //Success.
    66         }
    67         catch(org.springframework.dao.DataIntegrityViolationException e) {
    68             return fail(code:"default.delete.failure")
    69         }
     78            if(!result.inventoryItemInstance)
     79                return fail(code:"default.not.found")
    7080
    71     }
     81            if(result.inventoryItemInstance.inventoryMovements)
     82                return fail(code:"inventoryMovement.still.associated")
     83
     84            result.inventoryItemInstance.removeReverseAlternateItems()
     85
     86            try {
     87                result.inventoryItemInstance.delete(flush:true)
     88                return result //Success.
     89            }
     90            catch(org.springframework.dao.DataIntegrityViolationException e) {
     91                return fail(code:"default.delete.failure")
     92            }
     93
     94        } //end withTransaction
     95    } // end delete()
    7296
    7397    def edit(params) {
     
    110134            }
    111135
     136            def previousAlternateItems = new ArrayList(result.inventoryItemInstance.alternateItems)
     137
    112138            result.inventoryItemInstance.properties = params
    113139
    114140            if(result.inventoryItemInstance.hasErrors() || !result.inventoryItemInstance.save())
    115141                return fail(code:"default.update.failure")
     142
     143            result.inventoryItemInstance.removeReverseAlternateItems(previousAlternateItems)
     144            result.inventoryItemInstance.addReverseAlternateItems()
    116145
    117146            // Success.
     
    158187    }
    159188
    160 
    161189} // end class
Note: See TracChangeset for help on using the changeset viewer.