fix: Create GL Entries for Additional Discount Account
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"):