fix: Create GL Entries for Additional Discount Account
This commit is contained in:
parent
1d830dfd92
commit
4105e27138
@ -611,7 +611,11 @@ class PurchaseInvoice(BuyingController):
|
|||||||
if (not item.enable_deferred_expense or self.is_return) else item.deferred_expense_account)
|
if (not item.enable_deferred_expense or self.is_return) else item.deferred_expense_account)
|
||||||
|
|
||||||
if not item.is_fixed_asset:
|
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:
|
else:
|
||||||
amount = flt(item.base_net_amount + item.item_tax_amount, item.precision("base_net_amount"))
|
amount = flt(item.base_net_amount + item.item_tax_amount, item.precision("base_net_amount"))
|
||||||
|
|
||||||
@ -918,11 +922,6 @@ class PurchaseInvoice(BuyingController):
|
|||||||
"remarks": self.remarks or "Accounting Entry for Stock"
|
"remarks": self.remarks or "Accounting Entry for Stock"
|
||||||
}, item=tax))
|
}, 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):
|
def make_internal_transfer_gl_entries(self, gl_entries):
|
||||||
if self.is_internal_transfer() and flt(self.base_total_taxes_and_charges):
|
if self.is_internal_transfer() and flt(self.base_total_taxes_and_charges):
|
||||||
account_currency = get_account_currency(self.unrealized_profit_loss_account)
|
account_currency = get_account_currency(self.unrealized_profit_loss_account)
|
||||||
|
@ -902,11 +902,6 @@ class SalesInvoice(SellingController):
|
|||||||
}, account_currency, item=tax)
|
}, 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):
|
def make_internal_transfer_gl_entries(self, gl_entries):
|
||||||
if self.is_internal_transfer() and flt(self.base_total_taxes_and_charges):
|
if self.is_internal_transfer() and flt(self.base_total_taxes_and_charges):
|
||||||
account_currency = get_account_currency(self.unrealized_profit_loss_account)
|
account_currency = get_account_currency(self.unrealized_profit_loss_account)
|
||||||
@ -957,15 +952,17 @@ class SalesInvoice(SellingController):
|
|||||||
income_account = (item.income_account
|
income_account = (item.income_account
|
||||||
if (not item.enable_deferred_revenue or self.is_return) else item.deferred_revenue_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)
|
account_currency = get_account_currency(income_account)
|
||||||
gl_entries.append(
|
gl_entries.append(
|
||||||
self.get_gl_dict({
|
self.get_gl_dict({
|
||||||
"account": income_account,
|
"account": income_account,
|
||||||
"against": self.customer,
|
"against": self.customer,
|
||||||
"credit": flt(item.base_net_amount, item.precision("base_net_amount")),
|
"credit": flt(base_amount, item.precision("base_net_amount")),
|
||||||
"credit_in_account_currency": (flt(item.base_net_amount, item.precision("base_net_amount"))
|
"credit_in_account_currency": (flt(base_amount, item.precision("base_net_amount"))
|
||||||
if account_currency==self.company_currency
|
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,
|
"cost_center": item.cost_center,
|
||||||
"project": item.project or self.project
|
"project": item.project or self.project
|
||||||
}, account_currency, item=item)
|
}, account_currency, item=item)
|
||||||
@ -976,6 +973,18 @@ class SalesInvoice(SellingController):
|
|||||||
erpnext.is_perpetual_inventory_enabled(self.company):
|
erpnext.is_perpetual_inventory_enabled(self.company):
|
||||||
gl_entries += super(SalesInvoice, self).get_gl_entries()
|
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):
|
def set_asset_status(self, asset):
|
||||||
if self.is_return:
|
if self.is_return:
|
||||||
asset.set_status()
|
asset.set_status()
|
||||||
|
@ -812,19 +812,23 @@ class AccountsController(TransactionBase):
|
|||||||
enable_discount_accounting = cint(frappe.db.get_single_value('Accounts Settings', 'enable_discount_accounting'))
|
enable_discount_accounting = cint(frappe.db.get_single_value('Accounts Settings', 'enable_discount_accounting'))
|
||||||
|
|
||||||
if 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"):
|
for item in self.get("items"):
|
||||||
if item.get('discount_amount') and item.get('discount_account'):
|
if item.get('discount_amount') and item.get('discount_account'):
|
||||||
if self.doctype == "Purchase Invoice":
|
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
|
income_or_expense_account = (item.expense_account
|
||||||
if (not item.enable_deferred_expense or self.is_return)
|
if (not item.enable_deferred_expense or self.is_return)
|
||||||
else item.deferred_expense_account)
|
else item.deferred_expense_account)
|
||||||
else:
|
else:
|
||||||
dr_or_cr = "debit"
|
|
||||||
rev_dr_cr = "credit"
|
|
||||||
supplier_or_customer = self.customer
|
|
||||||
income_or_expense_account = (item.income_account
|
income_or_expense_account = (item.income_account
|
||||||
if (not item.enable_deferred_revenue or self.is_return)
|
if (not item.enable_deferred_revenue or self.is_return)
|
||||||
else item.deferred_revenue_account)
|
else item.deferred_revenue_account)
|
||||||
@ -853,46 +857,16 @@ class AccountsController(TransactionBase):
|
|||||||
}, account_currency, item=item)
|
}, account_currency, item=item)
|
||||||
)
|
)
|
||||||
|
|
||||||
def make_gle_for_additional_discount_applied_on_taxes(self, gl_entries):
|
if self.get('discount_amount') and self.get('additional_discount_account'):
|
||||||
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)
|
|
||||||
)
|
|
||||||
|
|
||||||
gl_entries.append(
|
gl_entries.append(
|
||||||
self.get_gl_dict({
|
self.get_gl_dict({
|
||||||
"account": self.additional_discount_account,
|
"account": self.additional_discount_account,
|
||||||
"against": against,
|
"against": supplier_or_customer,
|
||||||
rev_dr_cr: flt(additional_discount_applied_on_taxes,
|
dr_or_cr: self.discount_amount,
|
||||||
tax.precision("tax_amount_after_discount_amount")),
|
"cost_center": self.cost_center
|
||||||
rev_dr_cr + "_in_account_currency": (flt(additional_discount_applied_on_taxes,
|
}, item=self)
|
||||||
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)
|
|
||||||
)
|
|
||||||
|
|
||||||
def allocate_advance_taxes(self, gl_entries):
|
def allocate_advance_taxes(self, gl_entries):
|
||||||
tax_map = self.get_tax_map()
|
tax_map = self.get_tax_map()
|
||||||
for pe in self.get("advances"):
|
for pe in self.get("advances"):
|
||||||
|
Loading…
x
Reference in New Issue
Block a user