diff --git a/InvenTree/order/models.py b/InvenTree/order/models.py
index 9408247fd6..306b748a79 100644
--- a/InvenTree/order/models.py
+++ b/InvenTree/order/models.py
@@ -202,8 +202,8 @@ class PurchaseOrder(Order):
             raise ValidationError({'supplier': _("Part supplier must match PO supplier")})
 
         if group:
-            # Check if there is already a matching line item
-            matches = PurchaseOrderLineItem.objects.filter(part=supplier_part)
+            # Check if there is already a matching line item (for this PO)
+            matches = self.lines.filter(part=supplier_part)
 
             if matches.count() > 0:
                 line = matches.first()
diff --git a/InvenTree/order/views.py b/InvenTree/order/views.py
index 5b7aca5cdc..25d0dddb52 100644
--- a/InvenTree/order/views.py
+++ b/InvenTree/order/views.py
@@ -5,6 +5,7 @@ Django views for interacting with Order app
 # -*- coding: utf-8 -*-
 from __future__ import unicode_literals
 
+from django.db import transaction
 from django.shortcuts import get_object_or_404
 from django.utils.translation import ugettext as _
 from django.views.generic import DetailView, ListView
@@ -557,6 +558,7 @@ class OrderParts(AjaxView):
 
         return self.renderJsonResponse(self.request, data=data)
 
+    @transaction.atomic
     def order_items(self):
         """ Add the selected items to the purchase orders. """