Merge branch 'master' of github.com:webnotes/erpnext
diff --git a/accounts/doctype/purchase_taxes_and_charges_master/purchase_taxes_and_charges_master.js b/accounts/doctype/purchase_taxes_and_charges_master/purchase_taxes_and_charges_master.js
index 53588e0..f04f895 100644
--- a/accounts/doctype/purchase_taxes_and_charges_master/purchase_taxes_and_charges_master.js
+++ b/accounts/doctype/purchase_taxes_and_charges_master/purchase_taxes_and_charges_master.js
@@ -147,7 +147,7 @@
     d.account_head = '';
   }
   else if(d.account_head && d.charge_type) {
-    arg = "{'charge_type' : '" + d.charge_type +"', 'account_head' : '" + d.account_head + "'}";
+    arg = "{'charge_type' : '" + d.charge_type + "', 'account_head' : '" + d.account_head + "'}";
     get_server_fields('get_rate', arg, 'purchase_tax_details', doc, cdt, cdn, 1);
   }
   refresh_field('account_head',d.name,'purchase_tax_details');
diff --git a/accounts/doctype/purchase_taxes_and_charges_master/purchase_taxes_and_charges_master.py b/accounts/doctype/purchase_taxes_and_charges_master/purchase_taxes_and_charges_master.py
index 1250db5..995415e 100644
--- a/accounts/doctype/purchase_taxes_and_charges_master/purchase_taxes_and_charges_master.py
+++ b/accounts/doctype/purchase_taxes_and_charges_master/purchase_taxes_and_charges_master.py
@@ -26,11 +26,11 @@
 
 
 class DocType:
-  def __init__(self, doc, doclist=[]):
-    self.doc = doc
-    self.doclist = doclist
+	def __init__(self, doc, doclist=[]):
+		self.doc = doc
+		self.doclist = doclist
 
-  # Get Tax Rate if account type is Tax
-  # ===================================================================
-  def get_rate(self, arg):
-    return get_obj('Purchase Common').get_rate(arg, self)
\ No newline at end of file
+	# Get Tax Rate if account type is Tax
+	# ===================================================================
+	def get_rate(self, arg):
+		return get_obj('Purchase Common').get_rate(arg, self)
\ No newline at end of file
diff --git a/accounts/doctype/sales_invoice_item/sales_invoice_item.txt b/accounts/doctype/sales_invoice_item/sales_invoice_item.txt
index 89c86f8..82ad3b1 100644
--- a/accounts/doctype/sales_invoice_item/sales_invoice_item.txt
+++ b/accounts/doctype/sales_invoice_item/sales_invoice_item.txt
@@ -1,8 +1,8 @@
 [
  {
-  "creation": "2013-04-19 11:00:07", 
+  "creation": "2013-06-04 11:02:19", 
   "docstatus": 0, 
-  "modified": "2013-05-22 12:06:15", 
+  "modified": "2013-06-26 14:33:21", 
   "modified_by": "Administrator", 
   "owner": "Administrator"
  }, 
@@ -243,7 +243,8 @@
   "oldfieldname": "serial_no", 
   "oldfieldtype": "Small Text", 
   "print_hide": 0, 
-  "read_only": 0
+  "read_only": 0, 
+  "reqd": 0
  }, 
  {
   "doctype": "DocField", 
diff --git a/accounts/report/purchase_register/purchase_register.py b/accounts/report/purchase_register/purchase_register.py
index d6233a4..655cf8c 100644
--- a/accounts/report/purchase_register/purchase_register.py
+++ b/accounts/report/purchase_register/purchase_register.py
@@ -40,9 +40,10 @@
 		# invoice details
 		purchase_order = list(set(invoice_po_pr_map.get(inv.name, {}).get("purchase_order", [])))
 		purchase_receipt = list(set(invoice_po_pr_map.get(inv.name, {}).get("purchase_receipt", [])))
+		project_name = list(set(invoice_po_pr_map.get(inv.name, {}).get("project_name", [])))
 
 		row = [inv.name, inv.posting_date, inv.supplier, inv.credit_to, 
-			account_map.get(inv.credit_to), inv.project_name, inv.bill_no, inv.bill_date, 
+			account_map.get(inv.credit_to), ", ".join(project_name), inv.bill_no, inv.bill_date, 
 			inv.remarks, ", ".join(purchase_order), ", ".join(purchase_receipt)]
 		
 		# map expense values
@@ -105,11 +106,10 @@
 	
 def get_invoices(filters):
 	conditions = get_conditions(filters)
-	return webnotes.conn.sql("""select pi.name, pi.posting_date, pi.credit_to, 
-		pii.project_name, pi.supplier, pi.bill_no, pi.bill_date, pi.remarks, pi.net_total, 
-		pi.total_tax, pi.grand_total, pi.outstanding_amount 
-		from `tabPurchase Invoice` pi, `tabPurchase Invoice Item` pii 
-		where pii.parent = pi.name and pi.docstatus = 1 %s 
+	return webnotes.conn.sql("""select name, posting_date, credit_to, 
+		supplier, bill_no, bill_date, remarks, net_total, 
+		total_tax, grand_total, outstanding_amount 
+		from `tabPurchase Invoice` where docstatus = 1 %s 
 		order by posting_date desc, name desc""" % conditions, filters, as_dict=1)
 	
 	
@@ -138,8 +138,8 @@
 	return invoice_tax_map
 	
 def get_invoice_po_pr_map(invoice_list):
-	pi_items = webnotes.conn.sql("""select parent, purchase_order, purchase_receipt
-		from `tabPurchase Invoice Item` where parent in (%s) 
+	pi_items = webnotes.conn.sql("""select parent, purchase_order, purchase_receipt, 
+		project_name from `tabPurchase Invoice Item` where parent in (%s) 
 		and (ifnull(purchase_order, '') != '' or ifnull(purchase_receipt, '') != '')""" % 
 		', '.join(['%s']*len(invoice_list)), tuple([inv.name for inv in invoice_list]), as_dict=1)
 	
@@ -151,6 +151,9 @@
 		if d.purchase_receipt:
 			invoice_po_pr_map.setdefault(d.parent, webnotes._dict()).setdefault(
 				"purchase_receipt", []).append(d.purchase_receipt)
+		if d.project_name:
+			invoice_po_pr_map.setdefault(d.parent, webnotes._dict()).setdefault(
+				"project_name", []).append(d.project_name)
 				
 	return invoice_po_pr_map
 	
diff --git a/buying/doctype/supplier_quotation/supplier_quotation.js b/buying/doctype/supplier_quotation/supplier_quotation.js
index 1e4f6cb..bac6e9f 100644
--- a/buying/doctype/supplier_quotation/supplier_quotation.js
+++ b/buying/doctype/supplier_quotation/supplier_quotation.js
@@ -87,7 +87,6 @@
 		get_server_fields('get_default_supplier_address',
 			JSON.stringify({ supplier: doc.supplier }), '', doc, dt, dn, 1,
 			function() { cur_frm.refresh(); });
-		cur_frm.cscript.toggle_contact_section(doc);
 	}
 }
 
diff --git a/selling/doctype/sms_center/sms_center.py b/selling/doctype/sms_center/sms_center.py
index 7d50e71..8b404e6 100644
--- a/selling/doctype/sms_center/sms_center.py
+++ b/selling/doctype/sms_center/sms_center.py
@@ -35,11 +35,12 @@
   def create_receiver_list(self):
     rec, where_clause = '', ''
     if self.doc.send_to == 'All Customer Contact':
-      where_clause = self.doc.customer and " and customer = '%s'" % self.doc.customer or " and ifnull(is_customer, 0) = 1"
+      where_clause = self.doc.customer and " and customer = '%s'" % self.doc.customer or " and ifnull(customer, '') != ''"
     if self.doc.send_to == 'All Supplier Contact':
-      where_clause = self.doc.supplier and " and ifnull(is_supplier, 0) = 1 and supplier = '%s'" % self.doc.supplier or " and ifnull(is_supplier, 0) = 1"
+      where_clause = self.doc.supplier and " and ifnull(is_supplier, 0) = 1 and supplier = '%s'" % self.doc.supplier or " and ifnull(supplier, '') != ''"
     if self.doc.send_to == 'All Sales Partner Contact':
-      where_clause = self.doc.sales_partner and " and ifnull(is_sales_partner, 0) = 1 and sales_aprtner = '%s'" % self.doc.sales_partner or " and ifnull(is_sales_partner, 0) = 1"
+      where_clause = self.doc.sales_partner and " and ifnull(is_sales_partner, 0) = 1 and sales_partner = '%s'" % self.doc.sales_partner or " and ifnull(sales_partner, '') != ''"
+
     if self.doc.send_to in ['All Contact', 'All Customer Contact', 'All Supplier Contact', 'All Sales Partner Contact']:
       rec = sql("select CONCAT(ifnull(first_name,''),'',ifnull(last_name,'')), mobile_no from `tabContact` where ifnull(mobile_no,'')!='' and docstatus != 2 %s" % where_clause)
     elif self.doc.send_to == 'All Lead (Open)':