Merge pull request #1329 from nabinhait/hotfix

Patch for updating billing status for old zero value order
diff --git a/hr/doctype/salary_manager/salary_manager.js b/hr/doctype/salary_manager/salary_manager.js
index 032c29e..ec485ca 100644
--- a/hr/doctype/salary_manager/salary_manager.js
+++ b/hr/doctype/salary_manager/salary_manager.js
@@ -43,7 +43,7 @@
 		jv = locals['Journal Voucher'][jv];
 		jv.voucher_type = 'Bank Voucher';
 		jv.user_remark = wn._('Payment of salary for the month: ') + doc.month + 
-			wn._('and fiscal year: ') + doc.fiscal_year;
+			wn._(' and fiscal year: ') + doc.fiscal_year;
 		jv.fiscal_year = doc.fiscal_year;
 		jv.company = doc.company;
 		jv.posting_date = dateutil.obj_to_str(new Date());
diff --git a/patches/1401/update_billing_status_for_zero_value_order.py b/patches/1401/update_billing_status_for_zero_value_order.py
new file mode 100644
index 0000000..afeed55
--- /dev/null
+++ b/patches/1401/update_billing_status_for_zero_value_order.py
@@ -0,0 +1,29 @@
+# Copyright (c) 2013, Web Notes Technologies Pvt. Ltd. and Contributors
+# License: GNU General Public License v3. See license.txt
+
+import webnotes
+from webnotes.utils import flt
+
+def execute():
+	for order_type in ["Sales", "Purchase"]:
+		for d in webnotes.conn.sql("""select par.name, sum(ifnull(child.qty, 0)) as total_qty 
+			from `tab%s Order` par, `tab%s Order Item` child  
+			where par.name = child.parent and par.docstatus = 1 
+			and ifnull(par.net_total, 0) = 0 group by par.name""" % 
+			(order_type, order_type), as_dict=1):
+				
+				billed_qty = flt(webnotes.conn.sql("""select sum(ifnull(qty, 0)) 
+					from `tab%s Invoice Item` where %s=%s and docstatus=1""" % 
+					(order_type, "sales_order" if order_type=="Sales" else "purchase_order", '%s'), 
+					(d.name))[0][0])
+				
+				per_billed = ((d.total_qty if billed_qty > d.total_qty else billed_qty)\
+					/ d.total_qty)*100
+				webnotes.conn.set_value(order_type+ " Order", d.name, "per_billed", per_billed)
+				
+				if order_type == "Sales":
+					if per_billed < 0.001: billing_status = "Not Billed"
+					elif per_billed >= 99.99: billing_status = "Fully Billed"
+					else: billing_status = "Partly Billed"
+	
+					webnotes.conn.set_value("Sales Order", d.name, "billing_status", billing_status)
\ No newline at end of file
diff --git a/patches/patch_list.py b/patches/patch_list.py
index 04a9288..2598ae8 100644
--- a/patches/patch_list.py
+++ b/patches/patch_list.py
@@ -265,4 +265,5 @@
 	"patches.1312.p02_update_item_details_in_item_price",
 	"patches.1401.p01_move_related_property_setters_to_custom_field",
 	"patches.1401.p01_make_buying_selling_as_check_box_in_price_list",
+	"patches.1401.update_billing_status_for_zero_value_order",
 ]
\ No newline at end of file
diff --git a/setup/doctype/company/company.py b/setup/doctype/company/company.py
index 88d9dca..34e5ca4 100644
--- a/setup/doctype/company/company.py
+++ b/setup/doctype/company/company.py
@@ -244,8 +244,6 @@
 					webnotes.conn.set(self.doc, a, account_name)
 			
 		_set_default_accounts({
-			"default_income_account": "Sales",
-			"default_expense_account": "Cost of Goods Sold",
 			"receivables_group": "Accounts Receivable",
 			"payables_group": "Accounts Payable",
 			"default_cash_account": "Cash"
@@ -257,8 +255,6 @@
 				"stock_adjustment_account": "Stock Adjustment",
 				"expenses_included_in_valuation": "Expenses Included In Valuation"
 			})
-		
-		
 
 	def create_default_cost_center(self):
 		cc_list = [
diff --git a/utilities/transaction_base.py b/utilities/transaction_base.py
index f783faa..6c515a5 100644
--- a/utilities/transaction_base.py
+++ b/utilities/transaction_base.py
@@ -78,8 +78,9 @@
 			3. Clears existing Sales Team and fetches the one mentioned in Customer
 		"""
 		customer_defaults = self.get_customer_defaults()
-					
-		customer_defaults["selling_price_list"] = self.get_user_default_price_list("Selling") or \
+
+		customer_defaults["selling_price_list"] = \
+			self.get_user_default_price_list("selling_price_list") or \
 			customer_defaults.get("price_list") or \
 			webnotes.conn.get_value("Customer Group", self.doc.customer_group, 
 				"default_price_list") or self.doc.selling_price_list
@@ -91,11 +92,11 @@
 		if self.meta.get_field("sales_team") and self.doc.customer:
 			self.set_sales_team_for_customer()
 			
-	def get_user_default_price_list(self, price_list_for):
-		from webnotes.defaults import get_user_default_as_list
-		user_default_price_list = get_user_default_as_list("selling_price_list" 
-			if price_list_for=="Selling" else "buying_price_list")
-		return user_default_price_list[0] if len(user_default_price_list)==1 else ""
+	def get_user_default_price_list(self, price_list):
+		from webnotes.defaults import get_defaults_for
+		user_default_price_list = get_defaults_for(webnotes.session.user).get(price_list)
+		return cstr(user_default_price_list) \
+			if not isinstance(user_default_price_list, list) else ""
 			
 	def set_sales_team_for_customer(self):
 		from webnotes.model import default_fields
@@ -128,7 +129,7 @@
 		if supplier.default_currency:
 			out["currency"] = supplier.default_currency
 			
-		out["buying_price_list"] = self.get_user_default_price_list("Buying") or \
+		out["buying_price_list"] = self.get_user_default_price_list("buying_price_list") or \
 			supplier.default_price_list or self.doc.buying_price_list
 		
 		return out