purchase receipt gl entries
diff --git a/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.py b/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.py
index 3b6ad82..27f2064 100644
--- a/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.py
+++ b/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.py
@@ -316,16 +316,25 @@
 		stock_item_and_auto_accounting_for_stock = False
 		stock_items = self.get_stock_items()
 		for item in self.get("entries"):
-			if auto_accounting_for_stock and item.item_code in stock_items:
-				if flt(item.valuation_rate):
+			if flt(item.base_amount):
+				gl_entries.append(
+					self.get_gl_dict({
+						"account": item.expense_account,
+						"against": self.credit_to,
+						"debit": item.base_amount,
+						"remarks": self.remarks,
+						"cost_center": item.cost_center
+					})
+				)
+			
+			if auto_accounting_for_stock and item.item_code in stock_items and item.valuation_rate:
 					# if auto inventory accounting enabled and stock item,
 					# then do stock related gl entries
 					# expense will be booked in sales invoice
 					stock_item_and_auto_accounting_for_stock = True
 
-					valuation_amt = flt(item.base_amount + item.item_tax_amount,
-						self.precision("base_amount", item))
-
+					
+					
 					gl_entries.append(
 						self.get_gl_dict({
 							"account": item.expense_account,
@@ -352,7 +361,10 @@
 			# this will balance out valuation amount included in cost of goods sold
 			expenses_included_in_valuation = \
 				self.get_company_default("expenses_included_in_valuation")
-
+				
+			# Backward compatibility:
+			# Post expenses_included_in_valuation only if it is not booked in Purchase Receipt
+			
 			for cost_center, amount in valuation_tax.items():
 				gl_entries.append(
 					self.get_gl_dict({
diff --git a/erpnext/stock/doctype/purchase_receipt/purchase_receipt.py b/erpnext/stock/doctype/purchase_receipt/purchase_receipt.py
index 4eb3553..1f02f36 100644
--- a/erpnext/stock/doctype/purchase_receipt/purchase_receipt.py
+++ b/erpnext/stock/doctype/purchase_receipt/purchase_receipt.py
@@ -312,7 +312,7 @@
 						"against": warehouse_account[d.warehouse],
 						"cost_center": d.cost_center,
 						"remarks": self.get("remarks") or "Accounting Entry for Stock",
-						"credit": flt(d.base_amount + d.item_tax_amount, self.precision("base_amount", d))
+						"credit": flt(d.base_amount, self.precision("base_amount", d))
 					}))
 					
 					# Amount added through landed-cost-voucher
@@ -338,6 +338,40 @@
 				elif d.warehouse not in warehouse_with_no_account or \
 					d.rejected_warehouse not in warehouse_with_no_account:
 						warehouse_with_no_account.append(d.warehouse)
+						
+		# Cost center-wise amount breakup for other charges included for valuation
+		valuation_tax = {}
+		for tax in self.get("other_charges"):
+			if tax.category in ("Valuation", "Valuation and Total") and flt(tax.tax_amount):
+				if not tax.cost_center:
+					frappe.throw(_("Cost Center is required in row {0} in Taxes table for type {1}").format(tax.idx, _(tax.category)))
+				valuation_tax.setdefault(tax.cost_center, 0)
+				valuation_tax[tax.cost_center] += \
+					(tax.add_deduct_tax == "Add" and 1 or -1) * flt(tax.tax_amount)
+					
+		# Backward compatibility:
+		# If expenses_included_in_valuation account has been credited in against PI 
+		# and charges added via Landed Cost Voucher, 
+		# post valuation related charges on "Stock Received But Not Billed" 
+
+		pi_exists = frappe.db.sql("""select name from `tabPurchase Invoice Item` pi
+			where docstatus = 1 and purchase_receipt=%s 
+			and exists(select name from `tabGL Entry` where voucher_type='Purchase Invoice' 
+				and voucher_no=pi.parent and account=%s)""", (self.name, expenses_included_in_valuation))
+		
+		if pi_exists:
+			expenses_included_in_valuation = stock_rbnb
+			
+		# Expense included in valuation
+		for cost_center, amount in valuation_tax.items():
+			gl_entries.append(
+				self.get_gl_dict({
+					"account": expenses_included_in_valuation,
+					"cost_center": cost_center,
+					"credit": amount,
+					"remarks": self.remarks or "Accounting Entry for Stock"
+				})
+			)
 
 		if warehouse_with_no_account:
 			frappe.msgprint(_("No accounting entries for the following warehouses") + ": \n" +