Merge branch 'master' of github.com:webnotes/erpnext into edge
diff --git a/accounts/doctype/c_form/c_form.js b/accounts/doctype/c_form/c_form.js
index 29c05f7..d8c7d81 100644
--- a/accounts/doctype/c_form/c_form.js
+++ b/accounts/doctype/c_form/c_form.js
@@ -26,6 +26,10 @@
 	}
 }
 
+cur_frm.fields_dict.state.get_query = function(doc) {
+	return {filters: { country: "India"}}
+}
+
 cur_frm.cscript.invoice_no = function(doc, cdt, cdn) {
 	var d = locals[cdt][cdn];
 	get_server_fields('get_invoice_details', d.invoice_no, 'invoice_details', doc, cdt, cdn, 1);
diff --git a/accounts/doctype/c_form/c_form.py b/accounts/doctype/c_form/c_form.py
index 5bca063..2636b0c 100644
--- a/accounts/doctype/c_form/c_form.py
+++ b/accounts/doctype/c_form/c_form.py
@@ -68,7 +68,7 @@
 		self.set_total_invoiced_amount()
 
 	def set_total_invoiced_amount(self):
-		total = sum([flt(d.total) for d in getlist(self.doclist, 'invoice_details')])
+		total = sum([flt(d.grand_total) for d in getlist(self.doclist, 'invoice_details')])
 		webnotes.conn.set(self.doc, 'total_invoiced_amount', total)
 
 	def get_invoice_details(self, invoice_no):
diff --git a/accounts/doctype/c_form/c_form.txt b/accounts/doctype/c_form/c_form.txt
index c429632..3a956e9 100644
--- a/accounts/doctype/c_form/c_form.txt
+++ b/accounts/doctype/c_form/c_form.txt
@@ -1,8 +1,8 @@
 [
  {
-  "creation": "2013-01-19 10:23:34", 
+  "creation": "2013-01-30 12:49:46", 
   "docstatus": 0, 
-  "modified": "2013-01-29 16:27:57", 
+  "modified": "2013-02-13 11:29:18", 
   "modified_by": "Administrator", 
   "owner": "Administrator"
  }, 
@@ -127,9 +127,9 @@
  {
   "doctype": "DocField", 
   "fieldname": "state", 
-  "fieldtype": "Select", 
+  "fieldtype": "Link", 
   "label": "State", 
-  "options": "link:State\ncountry='India'", 
+  "options": "State", 
   "read_only": 0, 
   "reqd": 1
  }, 
@@ -171,7 +171,7 @@
   "fieldtype": "Link", 
   "label": "Amended From", 
   "no_copy": 1, 
-  "options": "Sales Invoice", 
+  "options": "C-Form", 
   "print_hide": 1, 
   "read_only": 1
  }, 
diff --git a/accounts/doctype/purchase_invoice/purchase_invoice.py b/accounts/doctype/purchase_invoice/purchase_invoice.py
index db0ddd8..f1c5758 100644
--- a/accounts/doctype/purchase_invoice/purchase_invoice.py
+++ b/accounts/doctype/purchase_invoice/purchase_invoice.py
@@ -423,7 +423,7 @@
 				self.get_gl_dict({
 					"account": self.doc.credit_to,
 					"against": self.doc.against_expense_account,
-					"credit": self.doc.grand_total,
+					"credit": self.doc.total_amount_to_pay,
 					"remarks": self.doc.remarks,
 					"against_voucher": self.doc.name,
 					"against_voucher_type": self.doc.doctype,
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 6158e26..53588e0 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
@@ -76,8 +76,9 @@
     alert("Please select Category first");
     d.add_deduct_tax = '';
   }
-  else if(d.category != 'Total' && d.add_deduct_tax == 'Deduct'){
-    alert("You cannot Deduct when category is for valuation or for both(i.e total and valuation)");
+  else if(d.category != 'Total' && d.add_deduct_tax == 'Deduct') {
+	console.log([d.category, d.add_deduct_tax]);
+    msgprint("You cannot deduct when category is for 'Valuation' or 'Valuation and Total'");
     d.add_deduct_tax = '';
   }
 
diff --git a/accounts/general_ledger.py b/accounts/general_ledger.py
index f7932bf..06c101b 100644
--- a/accounts/general_ledger.py
+++ b/accounts/general_ledger.py
@@ -70,6 +70,10 @@
 	for entry in gl_map:
 		gle = Document('GL Entry', fielddata=entry)
 		
+		# round off upto 2 decimal
+		gle.debit = flt(gle.debit, 2)
+		gle.credit = flt(gle.credit, 2)
+		
 		# toggle debit, credit if negative entry
 		if flt(gle.debit) < 0 or flt(gle.credit) < 0:
 			_swap(gle)
diff --git a/buying/doctype/purchase_common/purchase_common.js b/buying/doctype/purchase_common/purchase_common.js
index 3a9d891..b3f62d5 100644
--- a/buying/doctype/purchase_common/purchase_common.js
+++ b/buying/doctype/purchase_common/purchase_common.js
@@ -778,10 +778,10 @@
 
 var calculate_outstanding = function(doc) {
 	// total amount to pay	
-	doc.total_amount_to_pay = flt(flt(doc.net_total) + flt(doc.other_charges_added) - flt(doc.other_charges_deducted));
+	doc.total_amount_to_pay = flt(doc.grand_total) - flt(doc.write_off_amount);
 	
 	// outstanding amount 
-	if(doc.docstatus==0) doc.outstanding_amount = flt(doc.net_total) + flt(doc.other_charges_added) - flt(doc.other_charges_deducted) - flt(doc.total_advance);
+	if(doc.docstatus==0) doc.outstanding_amount = doc.total_amount_to_pay - flt(doc.total_advance);
 	
 	refresh_many(['total_amount_to_pay', 'outstanding_amount']);
 }
diff --git a/hr/doctype/leave_application/leave_application.txt b/hr/doctype/leave_application/leave_application.txt
index ec17544..f51a91a 100644
--- a/hr/doctype/leave_application/leave_application.txt
+++ b/hr/doctype/leave_application/leave_application.txt
@@ -1,8 +1,8 @@
 [
  {
-  "creation": "2013-02-02 14:40:08", 
+  "creation": "2013-02-08 13:17:08", 
   "docstatus": 0, 
-  "modified": "2013-02-08 11:27:22", 
+  "modified": "2013-02-13 12:32:27", 
   "modified_by": "Administrator", 
   "owner": "Administrator"
  }, 
@@ -29,9 +29,7 @@
   "parent": "Leave Application", 
   "parentfield": "permissions", 
   "parenttype": "DocType", 
-  "read": 1, 
-  "report": 1, 
-  "write": 1
+  "read": 1
  }, 
  {
   "doctype": "DocType", 
@@ -215,7 +213,18 @@
   "doctype": "DocPerm", 
   "match": "employee", 
   "permlevel": 0, 
-  "role": "Employee"
+  "report": 1, 
+  "role": "Employee", 
+  "write": 1
+ }, 
+ {
+  "amend": 0, 
+  "cancel": 0, 
+  "create": 0, 
+  "doctype": "DocPerm", 
+  "permlevel": 1, 
+  "role": "All", 
+  "submit": 0
  }, 
  {
   "amend": 1, 
@@ -223,8 +232,10 @@
   "create": 1, 
   "doctype": "DocPerm", 
   "permlevel": 0, 
+  "report": 1, 
   "role": "HR User", 
-  "submit": 1
+  "submit": 1, 
+  "write": 1
  }, 
  {
   "amend": 1, 
@@ -233,13 +244,10 @@
   "doctype": "DocPerm", 
   "match": "leave_approver:user", 
   "permlevel": 0, 
+  "report": 1, 
   "role": "Leave Approver", 
-  "submit": 1
- }, 
- {
-  "doctype": "DocPerm", 
-  "permlevel": 2, 
-  "role": "HR User"
+  "submit": 1, 
+  "write": 1
  }, 
  {
   "amend": 0, 
@@ -247,7 +255,25 @@
   "create": 0, 
   "doctype": "DocPerm", 
   "permlevel": 2, 
+  "report": 1, 
+  "role": "HR User", 
+  "submit": 0, 
+  "write": 1
+ }, 
+ {
+  "amend": 0, 
+  "cancel": 0, 
+  "create": 0, 
+  "doctype": "DocPerm", 
+  "permlevel": 2, 
+  "report": 1, 
   "role": "Leave Approver", 
-  "submit": 0
+  "submit": 0, 
+  "write": 1
+ }, 
+ {
+  "doctype": "DocPerm", 
+  "permlevel": 2, 
+  "role": "Employee"
  }
-]
+]
\ No newline at end of file
diff --git a/patches/february_2013/fix_outstanding.py b/patches/february_2013/fix_outstanding.py
new file mode 100644
index 0000000..226b360
--- /dev/null
+++ b/patches/february_2013/fix_outstanding.py
@@ -0,0 +1,15 @@
+def execute():
+	import webnotes
+	from webnotes.utils import flt
+	for dt in ["Sales Invoice", "Purchase Invoice"]:
+		records = webnotes.conn.sql("""select name, outstanding_amount from `tab%s` 
+			where docstatus = 1""" % dt)
+		for r in records:
+			outstanding = webnotes.conn.sql("""
+				select sum(ifnull(debit, 0)) - sum(ifnull(credit, 0)) from `tabGL Entry`
+				where against_voucher = %s and against_voucher_type = %s 
+				and ifnull(is_cancelled, 'No') = 'No'""", (r[0], dt))
+			if flt(r[1]) != abs(flt(outstanding[0][0])):
+				# print r, outstanding
+				webnotes.conn.sql("update `tab%s` set outstanding_amount = %s where name = %s" %
+					(dt, '%s', '%s'), (abs(flt(outstanding[0][0])), si[0]))
\ No newline at end of file
diff --git a/patches/february_2013/gle_floating_point_issue_revisited.py b/patches/february_2013/gle_floating_point_issue_revisited.py
new file mode 100644
index 0000000..3fc57bd
--- /dev/null
+++ b/patches/february_2013/gle_floating_point_issue_revisited.py
@@ -0,0 +1,22 @@
+def execute():
+	import webnotes
+	from webnotes.utils import flt
+	
+	records = webnotes.conn.sql("""select name, grand_total, debit_to from `tabSales Invoice` 
+		where docstatus = 1""", as_dict=1)
+	
+	for r in records:
+		gle = webnotes.conn.sql("""select name, debit from `tabGL Entry` 
+			where account = %s and voucher_type = 'Sales Invoice' and voucher_no = %s
+			and ifnull(is_cancelled, 'No') = 'No' limit 1""", (r.debit_to, r.name), as_dict=1)
+		if gle:
+			diff = round((flt(r.grand_total) - flt(gle[0]['debit'])), 2)
+		
+			if abs(diff) == 0.01:
+				# print r.name, r.grand_total, gle[0]['debit']
+				webnotes.conn.sql("""update `tabGL Entry` set debit = debit + %s 
+					where name = %s""", (diff, gle[0]['name']))
+				
+				webnotes.conn.sql("""update `tabGL Entry` set credit = credit - %s
+					where voucher_type = 'Sales Invoice' and voucher_no = %s 
+					and credit > 0 limit 1""", (diff, r.name))
\ No newline at end of file
diff --git a/patches/patch_list.py b/patches/patch_list.py
index c1fa08f..97bdc52 100644
--- a/patches/patch_list.py
+++ b/patches/patch_list.py
@@ -167,5 +167,5 @@
 	"patches.february_2013.account_negative_balance",
 	"patches.february_2013.remove_account_utils_folder",
 	"patches.february_2013.update_company_in_leave_application",
-	"execute:webnotes.conn.sql_ddl('alter table tabSeries change `name` `name` varchar(100)')"
+	"execute:webnotes.conn.sql_ddl('alter table tabSeries change `name` `name` varchar(100)')",
 ]
\ No newline at end of file
diff --git a/setup/doctype/global_defaults/global_defaults.txt b/setup/doctype/global_defaults/global_defaults.txt
index 942415e..3344a87 100644
--- a/setup/doctype/global_defaults/global_defaults.txt
+++ b/setup/doctype/global_defaults/global_defaults.txt
@@ -1,8 +1,8 @@
 [
  {
-  "creation": "2013-01-28 10:06:02", 
+  "creation": "2013-01-29 19:25:56", 
   "docstatus": 0, 
-  "modified": "2013-01-29 14:55:57", 
+  "modified": "2013-02-13 09:56:28", 
   "modified_by": "Administrator", 
   "owner": "Administrator"
  }, 
@@ -110,6 +110,7 @@
   "reqd": 1
  }, 
  {
+  "default": "This is the default number format. For currencies, please set the number format in the currency master.", 
   "doctype": "DocField", 
   "fieldname": "number_format", 
   "fieldtype": "Select", 
@@ -408,6 +409,11 @@
   "label": "SMS Sender Name"
  }, 
  {
+  "amend": 0, 
+  "cancel": 0, 
+  "doctype": "DocPerm"
+ }, 
+ {
   "doctype": "DocPerm"
  }
 ]
\ No newline at end of file