diff --git a/erpnext/accounts/doctype/accounting_dimension/accounting_dimension.py b/erpnext/accounts/doctype/accounting_dimension/accounting_dimension.py
index 14fdffc..7a85bfb 100644
--- a/erpnext/accounts/doctype/accounting_dimension/accounting_dimension.py
+++ b/erpnext/accounts/doctype/accounting_dimension/accounting_dimension.py
@@ -206,12 +206,13 @@
 		WHERE disabled = 0
 	""", as_dict=1)
 
-	default_dimensions = frappe.db.sql("""SELECT parent, company, default_dimension
-		FROM `tabAccounting Dimension Detail`""", as_dict=1)
+	default_dimensions = frappe.db.sql("""SELECT p.fieldname, c.company, c.default_dimension
+		FROM `tabAccounting Dimension Detail` c, `tabAccounting Dimension` p
+		WHERE c.parent = p.name""", as_dict=1)
 
 	default_dimensions_map = {}
 	for dimension in default_dimensions:
-		default_dimensions_map.setdefault(dimension['company'], {})
-		default_dimensions_map[dimension['company']][dimension['parent']] = dimension['default_dimension']
+		default_dimensions_map.setdefault(dimension.company, {})
+		default_dimensions_map[dimension.company][dimension.fieldname] = dimension.default_dimension
 
 	return dimension_filters, default_dimensions_map
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 bd8d8bd..7dd5b01 100644
--- a/erpnext/accounts/doctype/period_closing_voucher/period_closing_voucher.py
+++ b/erpnext/accounts/doctype/period_closing_voucher/period_closing_voucher.py
@@ -7,6 +7,8 @@
 from frappe import _
 from erpnext.accounts.utils import get_account_currency
 from erpnext.controllers.accounts_controller import AccountsController
+from erpnext.accounts.doctype.accounting_dimension.accounting_dimension import (get_accounting_dimensions,
+	get_dimension_filters)
 
 class PeriodClosingVoucher(AccountsController):
 	def validate(self):
@@ -50,7 +52,15 @@
 	def make_gl_entries(self):
 		gl_entries = []
 		net_pl_balance = 0
-		pl_accounts = self.get_pl_balances()
+		dimension_fields = ['t1.cost_center']
+
+		accounting_dimensions = get_accounting_dimensions()
+		for dimension in accounting_dimensions:
+			dimension_fields.append('t1.{0}'.format(dimension))
+
+		dimension_filters, default_dimensions = get_dimension_filters()
+
+		pl_accounts = self.get_pl_balances(dimension_fields)
 
 		for acc in pl_accounts:
 			if flt(acc.balance_in_company_currency):
@@ -66,34 +76,41 @@
 						if flt(acc.balance_in_account_currency) > 0 else 0,
 					"credit": abs(flt(acc.balance_in_company_currency)) \
 						if flt(acc.balance_in_company_currency) > 0 else 0
-				}))
+				}, item=acc))
 
 				net_pl_balance += flt(acc.balance_in_company_currency)
 
 		if net_pl_balance:
 			cost_center = frappe.db.get_value("Company", self.company, "cost_center")
-			gl_entries.append(self.get_gl_dict({
+			gl_entry = self.get_gl_dict({
 				"account": self.closing_account_head,
 				"debit_in_account_currency": abs(net_pl_balance) if net_pl_balance > 0 else 0,
 				"debit": abs(net_pl_balance) if net_pl_balance > 0 else 0,
 				"credit_in_account_currency": abs(net_pl_balance) if net_pl_balance < 0 else 0,
 				"credit": abs(net_pl_balance) if net_pl_balance < 0 else 0,
 				"cost_center": cost_center
-			}))
+			})
+
+			for dimension in accounting_dimensions:
+				gl_entry.update({
+					dimension: default_dimensions.get(self.company, {}).get(dimension)
+				})
+
+			gl_entries.append(gl_entry)
 
 		from erpnext.accounts.general_ledger import make_gl_entries
 		make_gl_entries(gl_entries)
 
-	def get_pl_balances(self):
+	def get_pl_balances(self, dimension_fields):
 		"""Get balance for pl accounts"""
 		return frappe.db.sql("""
 			select
-				t1.account, t1.cost_center, t2.account_currency,
+				t1.account, t2.account_currency, {dimension_fields},
 				sum(t1.debit_in_account_currency) - sum(t1.credit_in_account_currency) as balance_in_account_currency,
 				sum(t1.debit) - sum(t1.credit) as balance_in_company_currency
 			from `tabGL Entry` t1, `tabAccount` t2
 			where t1.account = t2.name and t2.report_type = 'Profit and Loss'
 			and t2.docstatus < 2 and t2.company = %s
 			and t1.posting_date between %s and %s
-			group by t1.account, t1.cost_center
-		""", (self.company, self.get("year_start_date"), self.posting_date), as_dict=1)
+			group by t1.account, {dimension_fields}
+		""".format(dimension_fields = ', '.join(dimension_fields)), (self.company, self.get("year_start_date"), self.posting_date), as_dict=1)
diff --git a/erpnext/public/js/utils/dimension_tree_filter.js b/erpnext/public/js/utils/dimension_tree_filter.js
index b223fc5..b6720c0 100644
--- a/erpnext/public/js/utils/dimension_tree_filter.js
+++ b/erpnext/public/js/utils/dimension_tree_filter.js
@@ -46,7 +46,7 @@
 					if(frm.doc.company && Object.keys(default_dimensions || {}).length > 0
 						&& default_dimensions[frm.doc.company]) {
 
-						let default_dimension = default_dimensions[frm.doc.company][dimension['document_type']];
+						let default_dimension = default_dimensions[frm.doc.company][dimension['fieldname']];
 
 						if(default_dimension) {
 							if (frappe.meta.has_field(doctype, dimension['fieldname'])) {
