diff --git a/erpnext/controllers/buying_controller.py b/erpnext/controllers/buying_controller.py
index 6fc040e..d0defcc 100644
--- a/erpnext/controllers/buying_controller.py
+++ b/erpnext/controllers/buying_controller.py
@@ -3,7 +3,7 @@
 
 
 import frappe
-from frappe import _, msgprint
+from frappe import _, msgprint, ValidationError
 from frappe.contacts.doctype.address.address import get_address_display
 from frappe.utils import cint, cstr, flt, getdate
 
@@ -16,6 +16,7 @@
 from erpnext.stock.get_item_details import get_conversion_factor
 from erpnext.stock.utils import get_incoming_rate
 
+class QtyMismatchError(ValidationError): pass
 
 class BuyingController(StockController, Subcontracting):
 
@@ -367,7 +368,8 @@
 			# Check Received Qty = Accepted Qty + Rejected Qty
 			val = flt(d.qty) + flt(d.rejected_qty)
 			if (flt(val, d.precision("received_qty")) != flt(d.received_qty, d.precision("received_qty"))):
-				frappe.throw(_("Accepted + Rejected Qty must be equal to Received quantity for Item {0}").format(d.item_code))
+				message = _("Row #{0}: Received Qty must be equal to Accepted + Rejected Qty for Item {1}").format(d.idx, d.item_code)
+				frappe.throw(msg=message, title=_("Mismatch"), exc=QtyMismatchError)
 
 	def validate_negative_quantity(self, item_row, field_list):
 		if self.is_return:
diff --git a/erpnext/stock/doctype/purchase_receipt/test_purchase_receipt.py b/erpnext/stock/doctype/purchase_receipt/test_purchase_receipt.py
index 102730b..8968b18 100644
--- a/erpnext/stock/doctype/purchase_receipt/test_purchase_receipt.py
+++ b/erpnext/stock/doctype/purchase_receipt/test_purchase_receipt.py
@@ -15,6 +15,7 @@
 from erpnext.stock.doctype.serial_no.serial_no import SerialNoDuplicateError, get_serial_nos
 from erpnext.stock.doctype.warehouse.test_warehouse import create_warehouse
 from erpnext.stock.stock_ledger import SerialNoExistsInFutureTransaction
+from erpnext.controllers.buying_controller import QtyMismatchError
 from erpnext.tests.utils import ERPNextTestCase
 
 
@@ -22,6 +23,22 @@
 	def setUp(self):
 		frappe.db.set_value("Buying Settings", None, "allow_multiple_items", 1)
 
+	def test_purchase_receipt_received_qty(self):
+		"""
+			1. Test if received qty is validated against accepted + rejected
+			2. Test if received qty is auto set on save
+		"""
+		pr = make_purchase_receipt(qty=1, rejected_qty=1, received_qty=3,
+			item_code="_Test Item Home Desktop 200", do_not_save=True)
+		self.assertRaises(QtyMismatchError, pr.save)
+
+		pr.items[0].received_qty = 0
+		pr.save()
+		self.assertEqual(pr.items[0].received_qty, 2)
+
+		# teardown
+		pr.delete()
+
 	def test_reverse_purchase_receipt_sle(self):
 
 		pr = make_purchase_receipt(qty=0.5, item_code="_Test Item Home Desktop 200")
@@ -1225,8 +1242,8 @@
 	pr.return_against = args.return_against
 	pr.apply_putaway_rule = args.apply_putaway_rule
 	qty = args.qty or 5
-	received_qty = args.received_qty or qty
-	rejected_qty = args.rejected_qty or flt(received_qty) - flt(qty)
+	rejected_qty = args.rejected_qty or 0
+	received_qty = args.received_qty or flt(rejected_qty) + flt(qty)
 
 	item_code = args.item or args.item_code or "_Test Item"
 	uom = args.uom or frappe.db.get_value("Item", item_code, "stock_uom") or "_Test UOM"
