feat(regional): toggle for reduced depreciation rate as per IT Act (#27600)
This commit is contained in:
parent
72c081fd8f
commit
424efd41e5
@ -394,10 +394,6 @@ class Asset(AccountsController):
|
|||||||
if cint(self.number_of_depreciations_booked) > cint(row.total_number_of_depreciations):
|
if cint(self.number_of_depreciations_booked) > cint(row.total_number_of_depreciations):
|
||||||
frappe.throw(_("Number of Depreciations Booked cannot be greater than Total Number of Depreciations"))
|
frappe.throw(_("Number of Depreciations Booked cannot be greater than Total Number of Depreciations"))
|
||||||
|
|
||||||
if row.depreciation_start_date and getdate(row.depreciation_start_date) < getdate(nowdate()):
|
|
||||||
frappe.msgprint(_("Depreciation Row {0}: Depreciation Start Date is entered as past date")
|
|
||||||
.format(row.idx), title=_('Warning'), indicator='red')
|
|
||||||
|
|
||||||
if row.depreciation_start_date and getdate(row.depreciation_start_date) < getdate(self.purchase_date):
|
if row.depreciation_start_date and getdate(row.depreciation_start_date) < getdate(self.purchase_date):
|
||||||
frappe.throw(_("Depreciation Row {0}: Next Depreciation Date cannot be before Purchase Date")
|
frappe.throw(_("Depreciation Row {0}: Next Depreciation Date cannot be before Purchase Date")
|
||||||
.format(row.idx))
|
.format(row.idx))
|
||||||
|
@ -645,12 +645,18 @@ class TestAsset(unittest.TestCase):
|
|||||||
pr = make_purchase_receipt(item_code="Macbook Pro",
|
pr = make_purchase_receipt(item_code="Macbook Pro",
|
||||||
qty=1, rate=8000.0, location="Test Location")
|
qty=1, rate=8000.0, location="Test Location")
|
||||||
|
|
||||||
|
finance_book = frappe.new_doc('Finance Book')
|
||||||
|
finance_book.finance_book_name = 'Income Tax'
|
||||||
|
finance_book.for_income_tax = 1
|
||||||
|
finance_book.insert(ignore_if_duplicate=1)
|
||||||
|
|
||||||
asset_name = frappe.db.get_value("Asset", {"purchase_receipt": pr.name}, 'name')
|
asset_name = frappe.db.get_value("Asset", {"purchase_receipt": pr.name}, 'name')
|
||||||
asset = frappe.get_doc('Asset', asset_name)
|
asset = frappe.get_doc('Asset', asset_name)
|
||||||
asset.calculate_depreciation = 1
|
asset.calculate_depreciation = 1
|
||||||
asset.available_for_use_date = '2030-07-12'
|
asset.available_for_use_date = '2030-07-12'
|
||||||
asset.purchase_date = '2030-01-01'
|
asset.purchase_date = '2030-01-01'
|
||||||
asset.append("finance_books", {
|
asset.append("finance_books", {
|
||||||
|
"finance_book": finance_book.name,
|
||||||
"expected_value_after_useful_life": 1000,
|
"expected_value_after_useful_life": 1000,
|
||||||
"depreciation_method": "Written Down Value",
|
"depreciation_method": "Written Down Value",
|
||||||
"total_number_of_depreciations": 3,
|
"total_number_of_depreciations": 3,
|
||||||
|
@ -309,4 +309,5 @@ erpnext.patches.v13_0.update_dates_in_tax_withholding_category
|
|||||||
erpnext.patches.v14_0.update_opportunity_currency_fields
|
erpnext.patches.v14_0.update_opportunity_currency_fields
|
||||||
erpnext.patches.v13_0.gst_fields_for_pos_invoice
|
erpnext.patches.v13_0.gst_fields_for_pos_invoice
|
||||||
erpnext.patches.v13_0.create_accounting_dimensions_in_pos_doctypes
|
erpnext.patches.v13_0.create_accounting_dimensions_in_pos_doctypes
|
||||||
|
erpnext.patches.v13_0.create_custom_field_for_finance_book
|
||||||
erpnext.patches.v13_0.modify_invalid_gain_loss_gl_entries
|
erpnext.patches.v13_0.modify_invalid_gain_loss_gl_entries
|
@ -0,0 +1,21 @@
|
|||||||
|
import frappe
|
||||||
|
from frappe.custom.doctype.custom_field.custom_field import create_custom_fields
|
||||||
|
|
||||||
|
|
||||||
|
def execute():
|
||||||
|
company = frappe.get_all('Company', filters = {'country': 'India'})
|
||||||
|
if not company:
|
||||||
|
return
|
||||||
|
|
||||||
|
custom_field = {
|
||||||
|
'Finance Book': [
|
||||||
|
{
|
||||||
|
'fieldname': 'for_income_tax',
|
||||||
|
'label': 'For Income Tax',
|
||||||
|
'fieldtype': 'Check',
|
||||||
|
'insert_after': 'finance_book_name',
|
||||||
|
'description': 'If the asset is put to use for less than 180 days, the first Depreciation Rate will be reduced by 50%.'
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
create_custom_fields(custom_field, update=1)
|
@ -663,6 +663,15 @@ def make_custom_fields(update=True):
|
|||||||
'fieldtype': 'Data',
|
'fieldtype': 'Data',
|
||||||
'insert_after': 'email'
|
'insert_after': 'email'
|
||||||
}
|
}
|
||||||
|
],
|
||||||
|
'Finance Book': [
|
||||||
|
{
|
||||||
|
'fieldname': 'for_income_tax',
|
||||||
|
'label': 'For Income Tax',
|
||||||
|
'fieldtype': 'Check',
|
||||||
|
'insert_after': 'finance_book_name',
|
||||||
|
'description': 'If the asset is put to use for less than 180 days, the first Depreciation Rate will be reduced by 50%.'
|
||||||
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
create_custom_fields(custom_fields, update=update)
|
create_custom_fields(custom_fields, update=update)
|
||||||
|
@ -857,6 +857,7 @@ def get_depreciation_amount(asset, depreciable_value, row):
|
|||||||
rate_of_depreciation = row.rate_of_depreciation
|
rate_of_depreciation = row.rate_of_depreciation
|
||||||
# if its the first depreciation
|
# if its the first depreciation
|
||||||
if depreciable_value == asset.gross_purchase_amount:
|
if depreciable_value == asset.gross_purchase_amount:
|
||||||
|
if row.finance_book and frappe.db.get_value('Finance Book', row.finance_book, 'for_income_tax'):
|
||||||
# as per IT act, if the asset is purchased in the 2nd half of fiscal year, then rate is divided by 2
|
# as per IT act, if the asset is purchased in the 2nd half of fiscal year, then rate is divided by 2
|
||||||
diff = date_diff(row.depreciation_start_date, asset.available_for_use_date)
|
diff = date_diff(row.depreciation_start_date, asset.available_for_use_date)
|
||||||
if diff <= 180:
|
if diff <= 180:
|
||||||
|
Loading…
x
Reference in New Issue
Block a user