diff --git a/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.py b/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.py
index 006f5bb..feae213 100644
--- a/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.py
+++ b/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.py
@@ -609,7 +609,11 @@
 						if (not item.enable_deferred_expense or self.is_return) else item.deferred_expense_account)
 
 					if not item.is_fixed_asset:
-						amount = flt(item.base_net_amount, item.precision("base_net_amount"))
+						if frappe.db.get_single_value('Accounts Settings', 'enable_discount_accounting'):
+							amount = flt(item.base_amount, item.precision("base_amount"))
+						else:
+							amount = flt(item.base_net_amount, item.precision("base_net_amount"))
+
 					else:
 						amount = flt(item.base_net_amount + item.item_tax_amount, item.precision("base_net_amount"))
 
@@ -888,11 +892,6 @@
 							"remarks": self.remarks or "Accounting Entry for Stock"
 						}, item=tax))
 
-		enable_discount_accounting = cint(frappe.db.get_single_value('Accounts Settings', 'enable_discount_accounting'))
-
-		if enable_discount_accounting and self.get('discount_amount') and self.get('additional_discount_account'):
-			self.make_gle_for_additional_discount_applied_on_taxes(gl_entries)
-
 	def make_internal_transfer_gl_entries(self, gl_entries):
 		if self.is_internal_transfer() and flt(self.base_total_taxes_and_charges):
 			account_currency = get_account_currency(self.unrealized_profit_loss_account)
diff --git a/erpnext/accounts/doctype/sales_invoice/sales_invoice.py b/erpnext/accounts/doctype/sales_invoice/sales_invoice.py
index ee9b59e..52c2a9c 100644
--- a/erpnext/accounts/doctype/sales_invoice/sales_invoice.py
+++ b/erpnext/accounts/doctype/sales_invoice/sales_invoice.py
@@ -902,11 +902,6 @@
 					}, account_currency, item=tax)
 				)
 
-		enable_discount_accounting = cint(frappe.db.get_single_value('Accounts Settings', 'enable_discount_accounting'))
-
-		if enable_discount_accounting and self.get('discount_amount') and self.get('additional_discount_account'):
-			self.make_gle_for_additional_discount_applied_on_taxes(gl_entries)
-
 	def make_internal_transfer_gl_entries(self, gl_entries):
 		if self.is_internal_transfer() and flt(self.base_total_taxes_and_charges):
 			account_currency = get_account_currency(self.unrealized_profit_loss_account)
@@ -946,15 +941,17 @@
 						income_account = (item.income_account
 							if (not item.enable_deferred_revenue or self.is_return) else item.deferred_revenue_account)
 
+						amount, base_amount = self.get_amount_and_base_amount(item)
+
 						account_currency = get_account_currency(income_account)
 						gl_entries.append(
 							self.get_gl_dict({
 								"account": income_account,
 								"against": self.customer,
-								"credit": flt(item.base_net_amount, item.precision("base_net_amount")),
-								"credit_in_account_currency": (flt(item.base_net_amount, item.precision("base_net_amount"))
+								"credit": flt(base_amount, item.precision("base_net_amount")),
+								"credit_in_account_currency": (flt(base_amount, item.precision("base_net_amount"))
 									if account_currency==self.company_currency
-									else flt(item.net_amount, item.precision("net_amount"))),
+									else flt(amount, item.precision("net_amount"))),
 								"cost_center": item.cost_center,
 								"project": item.project or self.project
 							}, account_currency, item=item)
@@ -965,6 +962,24 @@
 			erpnext.is_perpetual_inventory_enabled(self.company):
 			gl_entries += super(SalesInvoice, self).get_gl_entries()
 
+	def get_amount_and_base_amount(self, item):
+		amount = item.net_amount
+		base_amount = item.base_net_amount
+
+		enable_discount_accounting = cint(frappe.db.get_single_value('Accounts Settings', 'enable_discount_accounting'))
+
+		if enable_discount_accounting and self.get('discount_amount') and self.get('additional_discount_account'):
+			amount = item.amount
+			base_amount = item.base_amount
+
+		return amount, base_amount
+
+	def set_asset_status(self, asset):
+		if self.is_return:
+			asset.set_status()
+		else: 	
+			asset.set_status("Sold" if self.docstatus==1 else None)
+
 	def make_loyalty_point_redemption_gle(self, gl_entries):
 		if cint(self.redeem_loyalty_points):
 			gl_entries.append(
diff --git a/erpnext/controllers/accounts_controller.py b/erpnext/controllers/accounts_controller.py
index 9b3336c..59879e0 100644
--- a/erpnext/controllers/accounts_controller.py
+++ b/erpnext/controllers/accounts_controller.py
@@ -812,19 +812,23 @@
 		enable_discount_accounting = cint(frappe.db.get_single_value('Accounts Settings', 'enable_discount_accounting'))
 
 		if enable_discount_accounting:
+			if self.doctype == "Purchase Invoice":
+				dr_or_cr = "credit"
+				rev_dr_cr = "debit"
+				supplier_or_customer = self.supplier
+	
+			else:
+				dr_or_cr = "debit"
+				rev_dr_cr = "credit"
+				supplier_or_customer = self.customer
+
 			for item in self.get("items"):
 				if item.get('discount_amount') and item.get('discount_account'):
 					if self.doctype == "Purchase Invoice":
-						dr_or_cr = "credit"
-						rev_dr_cr = "debit"
-						supplier_or_customer = self.supplier
 						income_or_expense_account = (item.expense_account
 							if (not item.enable_deferred_expense or self.is_return) 
 							else item.deferred_expense_account)
 					else:
-						dr_or_cr = "debit"
-						rev_dr_cr = "credit"
-						supplier_or_customer = self.customer
 						income_or_expense_account = (item.income_account
 							if (not item.enable_deferred_revenue or self.is_return) 
 							else item.deferred_revenue_account)
@@ -853,46 +857,16 @@
 						}, account_currency, item=item)
 					)
 
-	def make_gle_for_additional_discount_applied_on_taxes(self, gl_entries):
-		for tax in self.get("taxes"):
-			if flt(tax.base_tax_amount_after_discount_amount) and flt(tax.base_tax_amount):
-				account_currency = get_account_currency(tax.account_head)
-				additional_discount_applied_on_taxes = flt(tax.base_tax_amount) - flt(tax.base_tax_amount_after_discount_amount)
-				if self.doctype == 'Purchase Invoice':
-					against = self.supplier
-					dr_or_cr = "debit"
-					rev_dr_cr = "credit"
-				else:
-					against = self.customer
-					dr_or_cr = "credit"
-					rev_dr_cr = "debit"
-
-				gl_entries.append(
-					self.get_gl_dict({
-						"account": tax.account_head,
-						"against": against,
-						dr_or_cr: flt(additional_discount_applied_on_taxes,
-							tax.precision("tax_amount_after_discount_amount")),
-						dr_or_cr + "_in_account_currency": (flt(additional_discount_applied_on_taxes,
-							tax.precision("base_tax_amount_after_discount_amount")) if account_currency==self.company_currency else
-							flt(additional_discount_applied_on_taxes, tax.precision("tax_amount_after_discount_amount"))),
-						"cost_center": tax.cost_center
-					}, account_currency, item=tax)
-				)
-
+			if self.get('discount_amount') and self.get('additional_discount_account'):
 				gl_entries.append(
 					self.get_gl_dict({
 						"account": self.additional_discount_account,
-						"against": against,
-						rev_dr_cr: flt(additional_discount_applied_on_taxes,
-							tax.precision("tax_amount_after_discount_amount")),
-						rev_dr_cr + "_in_account_currency": (flt(additional_discount_applied_on_taxes,
-							tax.precision("base_tax_amount_after_discount_amount")) if account_currency==self.company_currency else
-							flt(additional_discount_applied_on_taxes, tax.precision("tax_amount_after_discount_amount"))),
-						"cost_center": tax.cost_center
-					}, account_currency, item=tax)
-				)
-				
+						"against": supplier_or_customer,
+						dr_or_cr: self.discount_amount,
+						"cost_center": self.cost_center
+					}, item=self)
+				)		
+										
 	def allocate_advance_taxes(self, gl_entries):
 		tax_map = self.get_tax_map()
 		for pe in self.get("advances"):
