diff --git a/accounts/doctype/purchase_invoice/purchase_invoice.py b/accounts/doctype/purchase_invoice/purchase_invoice.py
index 3060a1e..8d646ba 100644
--- a/accounts/doctype/purchase_invoice/purchase_invoice.py
+++ b/accounts/doctype/purchase_invoice/purchase_invoice.py
@@ -244,7 +244,7 @@
 				raise Exception , " Validation Error "
 
 	def validate_reference_value(self):
-		# pass
+		pass
 	
 	# Validate PO and PR
 	# -------------------
diff --git a/buying/doctype/purchase_order/purchase_order.py b/buying/doctype/purchase_order/purchase_order.py
index 169dcaa..4972f66 100644
--- a/buying/doctype/purchase_order/purchase_order.py
+++ b/buying/doctype/purchase_order/purchase_order.py
@@ -44,23 +44,13 @@
 		utilities.validate_status(self.doc.status, ["Draft", "Submitted", "Stopped", 
 			"Cancelled"])
 
-		# Step 2:=> get Purchase Common Obj
 		pc_obj = get_obj(dt='Purchase Common')
-		
-
-		# Step 4:=> validate for items
 		pc_obj.validate_for_items(self)
-
-		# Get po date
 		pc_obj.get_prevdoc_date(self)
-		
-		# validate_doc
+
 		self.validate_doc(pc_obj)
-		
-		# Check for stopped status
 		self.check_for_stopped_status(pc_obj)
-		
-		# sub-contracting
+
 		self.validate_for_subcontracting()
 		self.update_raw_materials_supplied("po_raw_material_details")
 		
@@ -244,7 +234,6 @@
 def make_purchase_invoice(source_name, target_doclist=None):
 	from webnotes.model.mapper import get_mapped_doclist
 	
-	
 	def set_missing_values(source, target):
 		bean = webnotes.bean(target)
 		bean.run_method("set_missing_values")
diff --git a/buying/doctype/purchase_order/test_purchase_order.py b/buying/doctype/purchase_order/test_purchase_order.py
index 85420d8..e70de97 100644
--- a/buying/doctype/purchase_order/test_purchase_order.py
+++ b/buying/doctype/purchase_order/test_purchase_order.py
@@ -32,10 +32,13 @@
 		po = webnotes.bean("Purchase Order", po.doc.name)
 		po.submit()
 		pr = make_purchase_receipt(po.doc.name)
+		pr[0]["supplier_warehouse"] = "_Test Warehouse 1"
 		
 		self.assertEquals(pr[0]["doctype"], "Purchase Receipt")
 		self.assertEquals(len(pr), len(test_records[0]))
 		
+		webnotes.bean(pr).insert()
+		
 	def test_make_purchase_invocie(self):
 		from buying.doctype.purchase_order.purchase_order import make_purchase_invoice
 
@@ -50,10 +53,12 @@
 		
 		self.assertEquals(pi[0]["doctype"], "Purchase Invoice")
 		self.assertEquals(len(pi), len(test_records[0]))
+
+		webnotes.bean(pi).insert()
 		
 	def test_subcontracting(self):
 		po = webnotes.bean(copy=test_records[0])
-		po.insert()		
+		po.insert()
 		self.assertEquals(len(po.doclist.get({"parentfield": "po_raw_material_details"})), 2)
 
 	def test_warehouse_company_validation(self):
diff --git a/buying/doctype/supplier_quotation/test_supplier_quotation.py b/buying/doctype/supplier_quotation/test_supplier_quotation.py
index 0210b7f..7e772cc 100644
--- a/buying/doctype/supplier_quotation/test_supplier_quotation.py
+++ b/buying/doctype/supplier_quotation/test_supplier_quotation.py
@@ -36,6 +36,8 @@
 		self.assertEquals(po[0]["doctype"], "Purchase Order")
 		self.assertEquals(len(po), len(sq.doclist))
 		
+		webnotes.bean(po).insert()
+		
 test_records = [
 	[
 		{
@@ -45,7 +47,7 @@
 			"doctype": "Supplier Quotation", 
 			"fiscal_year": "_Test Fiscal Year 2013", 
 			"transaction_date": "2013-02-12", 
-			"is_subcontracted": "Yes",
+			"is_subcontracted": "No",
 			"supplier": "_Test Supplier",
 			"supplier_name": "_Test Supplier",
 			"net_total": 5000.0, 
diff --git a/controllers/buying_controller.py b/controllers/buying_controller.py
index e58eb03..a44ceba 100644
--- a/controllers/buying_controller.py
+++ b/controllers/buying_controller.py
@@ -34,6 +34,9 @@
 	
 	def validate(self):
 		super(BuyingController, self).validate()
+		if self.doc.supplier and not self.doc.supplier_name:
+			self.doc.supplier_name = webnotes.conn.get_value("Supplier", 
+				self.doc.supplier, "supplier_name")
 		self.validate_stock_or_nonstock_items()
 		self.validate_warehouse_belongs_to_company()
 		
@@ -47,11 +50,13 @@
 			for fieldname, val in self.get_default_address_and_contact("supplier").items():
 				if not self.doc.fields.get(fieldname) and self.meta.get_field(fieldname):
 					self.doc.fields[fieldname] = val
-		
+
 		self.set_missing_item_details(get_item_details)
-		
+
 	def set_supplier_defaults(self):
-		self.doc.fields.update(self.get_default_supplier_address(self.doc.fields))
+		for fieldname, val in self.get_default_address_and_contact("supplier").items():
+			if self.meta.get_field(fieldname):
+				self.doc.fields[fieldname] = val
 						
 	def get_purchase_tax_details(self):
 		self.doclist = self.doc.clear_table(self.doclist, "purchase_tax_details")
diff --git a/stock/doctype/material_request/test_material_request.py b/stock/doctype/material_request/test_material_request.py
index fabcb40..0efc3b0 100644
--- a/stock/doctype/material_request/test_material_request.py
+++ b/stock/doctype/material_request/test_material_request.py
@@ -6,6 +6,9 @@
 from webnotes.utils import flt
 
 class TestMaterialRequest(unittest.TestCase):
+	def setUp(self):
+		webnotes.defaults.set_global_default("auto_inventory_accounting", 0)
+
 	def test_make_purchase_order(self):
 		from stock.doctype.material_request.material_request import make_purchase_order
 
@@ -118,6 +121,7 @@
 		# map a purchase order
 		from stock.doctype.material_request.material_request import make_purchase_order
 		po_doclist = make_purchase_order(mr.doc.name)
+		po_doclist[0].supplier = "_Test Supplier"
 		po_doclist[1].qty = 27.0
 		po_doclist[2].qty = 1.5
 		
diff --git a/stock/doctype/purchase_receipt/purchase_receipt.py b/stock/doctype/purchase_receipt/purchase_receipt.py
index 3db31eb..878dfe8 100644
--- a/stock/doctype/purchase_receipt/purchase_receipt.py
+++ b/stock/doctype/purchase_receipt/purchase_receipt.py
@@ -68,6 +68,12 @@
 				msgprint("Rejected Warehouse is necessary if there are rejections.")
 				raise Exception
 
+			if not flt(d.qty) and flt(d.rejected_qty):
+				d.qty = flt(d.received_qty) - flt(d.rejected_qty)
+
+			elif not flt(d.rejected_qty):
+				d.rejected_qty = flt(d.received_qty) -  flt(d.qty)
+
 			# Check Received Qty = Accepted Qty + Rejected Qty
 			if ((flt(d.qty) + flt(d.rejected_qty)) != flt(d.received_qty)):
 
