diff --git a/erpnext/accounts/doctype/period_closing_voucher/period_closing_voucher.py b/erpnext/accounts/doctype/period_closing_voucher/period_closing_voucher.py
index 1b59bc6..184df70 100644
--- a/erpnext/accounts/doctype/period_closing_voucher/period_closing_voucher.py
+++ b/erpnext/accounts/doctype/period_closing_voucher/period_closing_voucher.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/>.
 
 # Please edit this list and import only required elements
 import webnotes
@@ -34,179 +34,147 @@
 
 
 class DocType:
-  def __init__(self,d,dl):
-    self.doc, self.doclist = d, dl
-    self.td, self.tc = 0, 0
-    self.year_start_date = ''
-    self.year_end_date = ''
+	def __init__(self,d,dl):
+		self.doc, self.doclist = d, dl
+		self.td, self.tc = 0, 0
+		self.year_start_date = ''
+		self.year_end_date = ''
 
 
-  # Validate Account Head
-  #============================================================
-  def validate_account_head(self):
-    acc_det = sql("select debit_or_credit, is_pl_account, group_or_ledger, company from `tabAccount` where name = '%s'" % (self.doc.closing_account_head))
+	def validate_account_head(self):
+		acc_det = sql("select debit_or_credit, is_pl_account, group_or_ledger, company from `tabAccount` where name = '%s'" % (self.doc.closing_account_head))
 
-    # Account should be under liability 
-    if cstr(acc_det[0][0]) != 'Credit' or cstr(acc_det[0][1]) != 'No':
-      msgprint("Account: %s must be created under 'Source of Funds'" % self.doc.closing_account_head)
-      raise Exception
-   
-    # Account must be a ledger
-    if cstr(acc_det[0][2]) != 'Ledger':
-      msgprint("Account %s must be a ledger" % self.doc.closing_account_head)
-      raise Exception 
-    
-    # Account should belong to company selected 
-    if cstr(acc_det[0][3]) != self.doc.company:
-      msgprint("Account %s does not belong to Company %s ." % (self.doc.closing_account_head, self.doc.company))
-      raise Exception 
+		# Account should be under liability 
+		if cstr(acc_det[0][0]) != 'Credit' or cstr(acc_det[0][1]) != 'No':
+			msgprint("Account: %s must be created under 'Source of Funds'" % self.doc.closing_account_head)
+			raise Exception
+	 
+		# Account must be a ledger
+		if cstr(acc_det[0][2]) != 'Ledger':
+			msgprint("Account %s must be a ledger" % self.doc.closing_account_head)
+			raise Exception 
+		
+		# Account should belong to company selected 
+		if cstr(acc_det[0][3]) != self.doc.company:
+			msgprint("Account %s does not belong to Company %s ." % (self.doc.closing_account_head, self.doc.company))
+			raise Exception 
 
-  # validate posting date
-  #=============================================================
-  def validate_posting_date(self):
-    yr = sql("select start_date, end_date from `tabPeriod` where period_name = '%s'" % (self.doc.fiscal_year))
-    self.year_start_date = yr and yr[0][0] or ''
-    self.year_end_date = yr and yr[0][1] or ''
-    
-    # Posting Date should be within closing year
-    if getdate(self.doc.posting_date) < self.year_start_date or getdate(self.doc.posting_date) > self.year_end_date:
-      msgprint("Posting Date should be within Closing Fiscal Year")
-      raise Exception
 
-    # Period Closing Entry
-    pce = sql("select name from `tabPeriod Closing Voucher` where posting_date > '%s' and fiscal_year = '%s' and docstatus = 1" % (self.doc.posting_date, self.doc.fiscal_year))
-    if pce and pce[0][0]:
-      msgprint("Another Period Closing Entry: %s has been made after posting date: %s" % (cstr(pce[0][0]), self.doc.posting_date))
-      raise Exception
-     
-  # Validate closing entry requirement
-  #==========================================================
-  def validate_pl_balances(self):
-    income_bal = sql("select sum(ifnull(t1.debit,0))-sum(ifnull(t1.credit,0)) from `tabGL Entry` t1, tabAccount t2 where t1.account = t2.name and t1.posting_date between '%s' and '%s' and t2.debit_or_credit = 'Credit' and t2.group_or_ledger = 'Ledger' and ifnull(t2.freeze_account, 'No') = 'No' and t2.is_pl_account = 'Yes' and t2.docstatus < 2 and t2.company = '%s'" % (self.year_start_date, self.doc.posting_date, self.doc.company))
-    expense_bal = sql("select sum(ifnull(t1.debit,0))-sum(ifnull(t1.credit,0)) from `tabGL Entry` t1, tabAccount t2 where t1.account = t2.name and t1.posting_date between '%s' and '%s' and t2.debit_or_credit = 'Debit' and t2.group_or_ledger = 'Ledger' and ifnull(t2.freeze_account, 'No') = 'No' and t2.is_pl_account = 'Yes' and t2.docstatus < 2 and t2.company = '%s'" % (self.year_start_date, self.doc.posting_date, self.doc.company))
-    
-    income_bal = income_bal and income_bal[0][0] or 0
-    expense_bal = expense_bal and expense_bal[0][0] or 0
-    
-    if not income_bal and not expense_bal:
-      msgprint("Both Income and Expense balances are zero. No Need to make Period Closing Entry.")
-      raise Exception
-    
-  # Get account (pl) specific balance
-  #===========================================================
-  def get_pl_balances(self, d_or_c):
-	acc_bal = sql("select  t1.account, sum(ifnull(t1.debit,0))-sum(ifnull(t1.credit,0)) from `tabGL Entry` t1, `tabAccount` t2 where t1.account = t2.name and t2.group_or_ledger = 'Ledger' and ifnull(t2.freeze_account, 'No') = 'No' and ifnull(t2.is_pl_account, 'No') = 'Yes' and ifnull(is_cancelled, 'No') = 'No' and t2.debit_or_credit = '%s' and t2.docstatus < 2 and t2.company = '%s' and t1.posting_date between '%s' and '%s' group by t1.account " % (d_or_c, self.doc.company, self.year_start_date, self.doc.posting_date))
-	return acc_bal
+	def validate_posting_date(self):
+		yr = sql("select start_date, end_date from `tabPeriod` where period_name = '%s'" % (self.doc.fiscal_year))
+		self.year_start_date = yr and yr[0][0] or ''
+		self.year_end_date = yr and yr[0][1] or ''
+		
+		# Posting Date should be within closing year
+		if getdate(self.doc.posting_date) < self.year_start_date or getdate(self.doc.posting_date) > self.year_end_date:
+			msgprint("Posting Date should be within Closing Fiscal Year")
+			raise Exception
 
-   
-  # Makes GL Entries
-  # ==========================================================
-  def make_gl_entries(self, acc_det):
-    for a in acc_det:
-      if flt(a[1]):
-        fdict = {
-	        'account': a[0], 
-	        'cost_center': '', 
-	        'against': '', 
-	        'debit': flt(a[1]) < 0 and -1*flt(a[1]) or 0,
-	        'credit': flt(a[1]) > 0 and flt(a[1]) or 0,
-	        'remarks': self.doc.remarks, 
-	        'voucher_type': self.doc.doctype, 
-	        'voucher_no': self.doc.name, 
-	        'transaction_date': self.doc.transaction_date, 
-	        'posting_date': self.doc.posting_date, 
-	        'fiscal_year': self.doc.fiscal_year, 
-	        'against_voucher': '', 
-	        'against_voucher_type': '', 
-	        'company': self.doc.company, 
-	        'is_opening': 'No', 
-	        'aging_date': self.doc.posting_date
-        }
-      
-        self.save_entry(fdict)
-   
+		# Period Closing Entry
+		pce = sql("select name from `tabPeriod Closing Voucher` where posting_date > '%s' and fiscal_year = '%s' and docstatus = 1" % (self.doc.posting_date, self.doc.fiscal_year))
+		if pce and pce[0][0]:
+			msgprint("Another Period Closing Entry: %s has been made after posting date: %s" % (cstr(pce[0][0]), self.doc.posting_date))
+			raise Exception
+		 
+		
+	def validate_pl_balances(self):
+		income_bal = sql("select sum(ifnull(t1.debit,0))-sum(ifnull(t1.credit,0)) from `tabGL Entry` t1, tabAccount t2 where t1.account = t2.name and t1.posting_date between '%s' and '%s' and t2.debit_or_credit = 'Credit' and t2.group_or_ledger = 'Ledger' and ifnull(t2.freeze_account, 'No') = 'No' and t2.is_pl_account = 'Yes' and t2.docstatus < 2 and t2.company = '%s'" % (self.year_start_date, self.doc.posting_date, self.doc.company))
+		expense_bal = sql("select sum(ifnull(t1.debit,0))-sum(ifnull(t1.credit,0)) from `tabGL Entry` t1, tabAccount t2 where t1.account = t2.name and t1.posting_date between '%s' and '%s' and t2.debit_or_credit = 'Debit' and t2.group_or_ledger = 'Ledger' and ifnull(t2.freeze_account, 'No') = 'No' and t2.is_pl_account = 'Yes' and t2.docstatus < 2 and t2.company = '%s'" % (self.year_start_date, self.doc.posting_date, self.doc.company))
+		
+		income_bal = income_bal and income_bal[0][0] or 0
+		expense_bal = expense_bal and expense_bal[0][0] or 0
+		
+		if not income_bal and not expense_bal:
+			msgprint("Both Income and Expense balances are zero. No Need to make Period Closing Entry.")
+			raise Exception
+		
+		
+	def get_pl_balances(self, d_or_c):
+		"""Get account (pl) specific balance"""
+		acc_bal = sql("select	t1.account, sum(ifnull(t1.debit,0))-sum(ifnull(t1.credit,0)) from `tabGL Entry` t1, `tabAccount` t2 where t1.account = t2.name and t2.group_or_ledger = 'Ledger' and ifnull(t2.freeze_account, 'No') = 'No' and ifnull(t2.is_pl_account, 'No') = 'Yes' and ifnull(is_cancelled, 'No') = 'No' and t2.debit_or_credit = '%s' and t2.docstatus < 2 and t2.company = '%s' and t1.posting_date between '%s' and '%s' group by t1.account " % (d_or_c, self.doc.company, self.year_start_date, self.doc.posting_date))
+		return acc_bal
+
+	 
+	def make_gl_entries(self, acc_det):
+		for a in acc_det:
+			if flt(a[1]):
+				fdict = {
+					'account': a[0], 
+					'cost_center': '', 
+					'against': '', 
+					'debit': flt(a[1]) < 0 and -1*flt(a[1]) or 0,
+					'credit': flt(a[1]) > 0 and flt(a[1]) or 0,
+					'remarks': self.doc.remarks, 
+					'voucher_type': self.doc.doctype, 
+					'voucher_no': self.doc.name, 
+					'transaction_date': self.doc.transaction_date, 
+					'posting_date': self.doc.posting_date, 
+					'fiscal_year': self.doc.fiscal_year, 
+					'against_voucher': '', 
+					'against_voucher_type': '', 
+					'company': self.doc.company, 
+					'is_opening': 'No', 
+					'aging_date': self.doc.posting_date
+				}
+			
+				self.save_entry(fdict)
+	 
+
+	def save_entry(self, fdict, is_cancel = 'No'):
+		# Create new GL entry object and map values
+		le = Document('GL Entry')
+		for k in fdict:
+			le.fields[k] = fdict[k]
+		
+		le_obj = get_obj(doc=le)
+		# validate except on_cancel
+		if is_cancel == 'No':
+			le_obj.validate()
+			
+			# update total debit / credit except on_cancel
+			self.td += flt(le.credit)
+			self.tc += flt(le.debit)
+
+		# save
+		le.save(1)
+		le_obj.on_update(adv_adj = '', cancel = '')
  
-  # Save GL Entry
-  # ==========================================================
-  def save_entry(self, fdict, is_cancel = 'No'):
-    # Create new GL entry object and map values
-    le = Document('GL Entry')
-    for k in fdict:
-      le.fields[k] = fdict[k]
-    
-    le_obj = get_obj(doc=le)
-    # validate except on_cancel
-    if is_cancel == 'No':
-      le_obj.validate()
-      
-      # update total debit / credit except on_cancel
-      self.td += flt(le.credit)
-      self.tc += flt(le.debit)
+		 	
+	def validate(self):
+		# validate account head
+		self.validate_account_head()
 
-    # save
-    le.save(1)
-    le_obj.on_update(adv_adj = '', cancel = '')
-    
+		# validate posting date
+		self.validate_posting_date()
 
-  # Reposting Balances
-  # ==========================================================
-  def repost_account_balances(self):
-    # Get Next Fiscal Year
-    fy = sql("select name, is_fiscal_year_closed from `tabFiscal Year` where name = '%s' and past_year = '%s'" % (self.doc.next_fiscal_year, self.doc.fiscal_year))
-    if not fy:
-      msgprint("There is no Fiscal Year with Name " + cstr(self.doc.next_fiscal_year) + " and Past Year " + cstr(self.doc.fiscal_year))
-      raise Exception
-   
-    if fy and fy[0][1] == 'Yes':
-      msgprint("Fiscal Year %s has been closed." % cstr(fy[1]))
-      raise Exception
-    
-    # Repost Balances
-    get_obj('Fiscal Year', fy[0][0]).repost()
- 
-     
-  # Validation
-  # ===========================================================
-  def validate(self):
-  
-    # validate account head
-    self.validate_account_head()
-
-    # validate posting date
-    self.validate_posting_date()
-
-    # check if pl balance:
-    self.validate_pl_balances()
+		# check if pl balance:
+		self.validate_pl_balances()
 
 
-  # On Submit
-  # ===========================================================
-  def on_submit(self):
-    
-    # Makes closing entries for Expense Account
-    in_acc_det = self.get_pl_balances('Credit')
-    self.make_gl_entries(in_acc_det)
+	def on_submit(self):
+		
+		# Makes closing entries for Expense Account
+		in_acc_det = self.get_pl_balances('Credit')
+		self.make_gl_entries(in_acc_det)
 
-    # Makes closing entries for Expense Account
-    ex_acc_det = self.get_pl_balances('Debit')
-    self.make_gl_entries(ex_acc_det)
+		# Makes closing entries for Expense Account
+		ex_acc_det = self.get_pl_balances('Debit')
+		self.make_gl_entries(ex_acc_det)
 
 
-    # Makes Closing entry for Closing Account Head
-    bal = self.tc - self.td
-    self.make_gl_entries([[self.doc.closing_account_head, flt(bal)]])
+		# Makes Closing entry for Closing Account Head
+		bal = self.tc - self.td
+		self.make_gl_entries([[self.doc.closing_account_head, flt(bal)]])
 
 
-  # On Cancel
-  # =============================================================
-  def on_cancel(self):
-    # get all submit entries of current closing entry voucher
-    gl_entries = sql("select account, debit, credit from `tabGL Entry` where voucher_type = 'Period Closing Voucher' and voucher_no = '%s' and ifnull(is_cancelled, 'No') = 'No'" % (self.doc.name))
+	def on_cancel(self):
+		# get all submit entries of current closing entry voucher
+		gl_entries = sql("select account, debit, credit from `tabGL Entry` where voucher_type = 'Period Closing Voucher' and voucher_no = '%s' and ifnull(is_cancelled, 'No') = 'No'" % (self.doc.name))
 
-    # Swap Debit & Credit Column and make gl entry
-    for gl in gl_entries:
-      fdict = {'account': gl[0], 'cost_center': '', 'against': '', 'debit': flt(gl[2]), 'credit' : flt(gl[1]), 'remarks': self.doc.cancel_reason, 'voucher_type': self.doc.doctype, 'voucher_no': self.doc.name, 'transaction_date': self.doc.transaction_date, 'posting_date': self.doc.posting_date, 'fiscal_year': self.doc.fiscal_year, 'against_voucher': '', 'against_voucher_type': '', 'company': self.doc.company, 'is_opening': 'No', 'aging_date': 'self.doc.posting_date'}
-      self.save_entry(fdict, is_cancel = 'Yes')
+		# Swap Debit & Credit Column and make gl entry
+		for gl in gl_entries:
+			fdict = {'account': gl[0], 'cost_center': '', 'against': '', 'debit': flt(gl[2]), 'credit' : flt(gl[1]), 'remarks': self.doc.cancel_reason, 'voucher_type': self.doc.doctype, 'voucher_no': self.doc.name, 'transaction_date': self.doc.transaction_date, 'posting_date': self.doc.posting_date, 'fiscal_year': self.doc.fiscal_year, 'against_voucher': '', 'against_voucher_type': '', 'company': self.doc.company, 'is_opening': 'No', 'aging_date': 'self.doc.posting_date'}
+			self.save_entry(fdict, is_cancel = 'Yes')
 
-    # Update is_cancelled = 'Yes' to all gl entries for current voucher
-    sql("update `tabGL Entry` set is_cancelled = 'Yes' where voucher_type = '%s' and voucher_no = '%s'" % (self.doc.doctype, self.doc.name))
+		# Update is_cancelled = 'Yes' to all gl entries for current voucher
+		sql("update `tabGL Entry` set is_cancelled = 'Yes' where voucher_type = '%s' and voucher_no = '%s'" % (self.doc.doctype, self.doc.name))
\ No newline at end of file
diff --git a/erpnext/accounts/doctype/period_closing_voucher/period_closing_voucher.txt b/erpnext/accounts/doctype/period_closing_voucher/period_closing_voucher.txt
index c70745e..f56c1b0 100644
--- a/erpnext/accounts/doctype/period_closing_voucher/period_closing_voucher.txt
+++ b/erpnext/accounts/doctype/period_closing_voucher/period_closing_voucher.txt
@@ -3,9 +3,9 @@
 
 	# These values are common in all dictionaries
 	{
-		'creation': '2012-04-13 11:56:17',
+		'creation': '2012-06-11 12:09:52',
 		'docstatus': 0,
-		'modified': '2012-05-31 11:38:17',
+		'modified': '2012-07-10 14:21:21',
 		'modified_by': u'Administrator',
 		'owner': u'jai@webnotestech.com'
 	},
@@ -273,42 +273,5 @@
 		'permlevel': 0,
 		'print_hide': 1,
 		'search_index': 0
-	},
-
-	# DocField
-	{
-		'doctype': u'DocField',
-		'fieldname': u'repost_account_balances',
-		'fieldtype': u'Section Break',
-		'label': u'Repost Account Balances',
-		'oldfieldtype': u'Section Break',
-		'options': u'Simple',
-		'permlevel': 0
-	},
-
-	# DocField
-	{
-		'allow_on_submit': 1,
-		'doctype': u'DocField',
-		'fieldname': u'next_fiscal_year',
-		'fieldtype': u'Select',
-		'label': u'Fiscal Year (For Reposting)',
-		'oldfieldname': u'next_fiscal_year',
-		'oldfieldtype': u'Select',
-		'options': u'link:Fiscal Year',
-		'permlevel': 0
-	},
-
-	# DocField
-	{
-		'allow_on_submit': 1,
-		'colour': u'White:FFF',
-		'doctype': u'DocField',
-		'fieldname': u'repost',
-		'fieldtype': u'Button',
-		'label': u'Repost',
-		'oldfieldtype': u'Button',
-		'options': u'repost_account_balances',
-		'permlevel': 0
 	}
 ]
\ No newline at end of file
