Index: trunk/grails-app/domain/InventoryItemPurchase.groovy
===================================================================
--- trunk/grails-app/domain/InventoryItemPurchase.groovy	(revision 592)
+++ trunk/grails-app/domain/InventoryItemPurchase.groovy	(revision 599)
@@ -22,5 +22,20 @@
     static constraints = {
         quantity(min:0)
-        purchaseOrderNumber(blank:false, maxSize:50)
+        purchaseOrderNumber(blank:false, maxSize:50, validator: {val, obj ->
+            // For orders the purchaseOrderNumber must be unique for an inventoryItem.
+            if(obj.inventoryItemPurchaseType.id == 1L) {
+                def list = InventoryItemPurchase.withCriteria {
+                    eq('inventoryItem', obj.inventoryItem)
+                    eq('purchaseOrderNumber', obj.purchaseOrderNumber)
+                    eq('inventoryItemPurchaseType', obj.inventoryItemPurchaseType)
+                    if(obj.id)
+                        notEqual('id', obj.id)
+                }
+                if(list.size() > 0)
+                    return 'not.unique.for.inventory.item.order'
+            }
+            // Success.
+            return true
+        })
         invoiceNumber(maxSize:50)
         orderValueAmount(max: new BigDecimal(1000000000000))
