Merge branch 'responsive' of github.com:webnotes/erpnext into responsive
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)):