diff --git a/accounts/doctype/budget_distribution/budget_distribution.py b/accounts/doctype/budget_distribution/budget_distribution.py
index f2fff5a..00d11f9 100644
--- a/accounts/doctype/budget_distribution/budget_distribution.py
+++ b/accounts/doctype/budget_distribution/budget_distribution.py
@@ -8,11 +8,11 @@
 # 
 # This program is distributed in the hope that it will be useful,
 # but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.	See the
 # GNU General Public License for more details.
 # 
 # You should have received a copy of the GNU General Public License
-# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+# along with this program.	If not, see <http://www.gnu.org/licenses/>.
 
 from __future__ import unicode_literals
 import webnotes
@@ -20,26 +20,26 @@
 from webnotes.utils import flt
 from webnotes.model.doc import addchild
 from webnotes.model.bean import getlist
-from webnotes import msgprint
+from webnotes import msgprint, _
 
 class DocType:
-  def __init__(self,doc,doclist=[]):
-    self.doc,self.doclist = doc,doclist
-    
-  def get_months(self):
-    month_list = ['January','February','March','April','May','June','July','August','September',
+	def __init__(self,doc,doclist=[]):
+		self.doc,self.doclist = doc,doclist
+		
+	def get_months(self):
+		month_list = ['January','February','March','April','May','June','July','August','September',
 		'October','November','December']
-    idx =1
-    for m in month_list:
-      mnth = addchild(self.doc, 'budget_distribution_details',
-        'Budget Distribution Detail', self.doclist)
-      mnth.month = m or ''
-      mnth.idx = idx
-      idx += 1
-      
-  def validate(self):
-    total = 0
-    for d in getlist(self.doclist,'budget_distribution_details'):
-      total = flt(total) + flt(d.percentage_allocation)
-    if total != 100:
-      msgprint("Percentage Allocation should be equal to 100%%. Currently it is %s%%" % total, raise_exception=1)
+		idx =1
+		for m in month_list:
+			mnth = addchild(self.doc, 'budget_distribution_details',
+				'Budget Distribution Detail', self.doclist)
+			mnth.month = m or ''
+			mnth.idx = idx
+			idx += 1
+			
+	def validate(self):
+		total = sum([flt(d.percentage_allocation, 2) for d in self.doclist.get(
+			{"parentfield": "budget_distribution_details"})])
+			
+		if total != 100.0:
+			msgprint(_("Percentage Allocation should be equal to ") + "100%", raise_exception=1)
\ No newline at end of file
