fix: bug in new depr schedule

This commit is contained in:
anandbaburajan 2022-11-29 21:30:23 +05:30
parent 7d09440579
commit 96ede2fcf9
3 changed files with 101 additions and 337 deletions

View File

@ -246,16 +246,6 @@ class Asset(AccountsController):
return value_after_depreciation return value_after_depreciation
def get_from_date(self, finance_book):
asset_depr_schedule_name = get_asset_depr_schedule_name(self.name, finance_book)
if not asset_depr_schedule_name:
return self.available_for_use_date
asset_depr_schedule_doc = frappe.get_doc("Asset Depreciation Schedule", asset_depr_schedule_name)
return asset_depr_schedule_doc.get("depreciation_schedule")[-1].schedule_date
# if it returns True, depreciation_amount will not be equal for the first and last rows # if it returns True, depreciation_amount will not be equal for the first and last rows
def check_is_pro_rata(self, row): def check_is_pro_rata(self, row):
has_pro_rata = False has_pro_rata = False

View File

@ -96,11 +96,7 @@ def make_new_active_asset_depr_schedules_and_cancel_current_ones(
"Asset Depreciation Schedule", current_asset_depr_schedule_name "Asset Depreciation Schedule", current_asset_depr_schedule_name
) )
new_asset_depr_schedule_doc = frappe.copy_doc( new_asset_depr_schedule_doc = frappe.copy_doc(current_asset_depr_schedule_doc)
current_asset_depr_schedule_doc, ignore_no_copy=False
)
current_asset_depr_schedule_doc.cancel()
make_depr_schedule(new_asset_depr_schedule_doc, asset_doc, row, date_of_disposal) make_depr_schedule(new_asset_depr_schedule_doc, asset_doc, row, date_of_disposal)
set_accumulated_depreciation( set_accumulated_depreciation(
@ -109,6 +105,8 @@ def make_new_active_asset_depr_schedules_and_cancel_current_ones(
new_asset_depr_schedule_doc.notes = notes new_asset_depr_schedule_doc.notes = notes
current_asset_depr_schedule_doc.cancel()
new_asset_depr_schedule_doc.submit() new_asset_depr_schedule_doc.submit()
@ -170,30 +168,19 @@ def make_depr_schedule(asset_depr_schedule_doc, asset_doc, row, date_of_disposal
def clear_depr_schedule(asset_depr_schedule_doc): def clear_depr_schedule(asset_depr_schedule_doc):
start = [] start = 0
num_of_depreciations_completed = 0 num_of_depreciations_completed = 0
depr_schedule = [] depr_schedule = []
for schedule in asset_depr_schedule_doc.get("depreciation_schedule"): for schedule in asset_depr_schedule_doc.get("depreciation_schedule"):
if len(start) != 0:
break
if schedule.journal_entry: if schedule.journal_entry:
num_of_depreciations_completed += 1 num_of_depreciations_completed += 1
depr_schedule.append(schedule) depr_schedule.append(schedule)
else: else:
start.append(num_of_depreciations_completed) start = num_of_depreciations_completed
num_of_depreciations_completed = 0 break
# to update start when all the schedule rows corresponding to the FB are linked with JEs asset_depr_schedule_doc.depreciation_schedule = depr_schedule
if len(start) == 0:
start.append(num_of_depreciations_completed)
# when the Depreciation Schedule is being created for the first time
if start == []:
start = [0]
else:
asset_depr_schedule_doc.depreciation_schedule = depr_schedule
return start return start
@ -215,7 +202,7 @@ def _make_depr_schedule(asset_depr_schedule_doc, asset_doc, row, start, date_of_
skip_row = False skip_row = False
should_get_last_day = is_last_day_of_the_month(row.depreciation_start_date) should_get_last_day = is_last_day_of_the_month(row.depreciation_start_date)
for n in range(start[row.idx - 1], number_of_pending_depreciations): for n in range(start, number_of_pending_depreciations):
# If depreciation is already completed (for double declining balance) # If depreciation is already completed (for double declining balance)
if skip_row: if skip_row:
continue continue
@ -234,7 +221,10 @@ def _make_depr_schedule(asset_depr_schedule_doc, asset_doc, row, start, date_of_
# if asset is being sold or scrapped # if asset is being sold or scrapped
if date_of_disposal: if date_of_disposal:
from_date = asset_doc.get_from_date(row.finance_book) from_date = asset_doc.available_for_use_date
if asset_depr_schedule_doc.depreciation_schedule:
from_date = asset_depr_schedule_doc.depreciation_schedule[-1].schedule_date
depreciation_amount, days, months = asset_doc.get_pro_rata_amt( depreciation_amount, days, months = asset_doc.get_pro_rata_amt(
row, depreciation_amount, from_date, date_of_disposal row, depreciation_amount, from_date, date_of_disposal
) )

View File

@ -1,318 +1,102 @@
{ {
"allow_copy": 0, "actions": [],
"allow_guest_to_view": 0, "allow_rename": 1,
"allow_import": 0, "creation": "2016-03-02 15:11:01.278862",
"allow_rename": 1, "doctype": "DocType",
"autoname": "", "document_type": "Document",
"beta": 0, "editable_grid": 1,
"creation": "2016-03-02 15:11:01.278862", "engine": "InnoDB",
"custom": 0, "field_order": [
"docstatus": 0, "finance_book",
"doctype": "DocType", "schedule_date",
"document_type": "Document", "depreciation_amount",
"editable_grid": 1, "column_break_3",
"engine": "InnoDB", "accumulated_depreciation_amount",
"journal_entry",
"make_depreciation_entry",
"finance_book_id",
"depreciation_method"
],
"fields": [ "fields": [
{ {
"allow_bulk_edit": 0, "fieldname": "finance_book",
"allow_on_submit": 0, "fieldtype": "Link",
"bold": 0, "in_list_view": 1,
"collapsible": 0, "label": "Finance Book",
"columns": 0, "options": "Finance Book",
"fieldname": "finance_book", "read_only": 1
"fieldtype": "Link", },
"hidden": 0,
"ignore_user_permissions": 0,
"ignore_xss_filter": 0,
"in_filter": 0,
"in_global_search": 0,
"in_list_view": 1,
"in_standard_filter": 0,
"label": "Finance Book",
"length": 0,
"no_copy": 0,
"options": "Finance Book",
"permlevel": 0,
"precision": "",
"print_hide": 0,
"print_hide_if_no_value": 0,
"read_only": 1,
"remember_last_selected_value": 0,
"report_hide": 0,
"reqd": 0,
"search_index": 0,
"set_only_once": 0,
"unique": 0
},
{ {
"allow_bulk_edit": 0, "fieldname": "schedule_date",
"allow_on_submit": 0, "fieldtype": "Date",
"bold": 0, "in_list_view": 1,
"collapsible": 0, "label": "Schedule Date",
"columns": 0, "reqd": 1
"fieldname": "schedule_date", },
"fieldtype": "Date",
"hidden": 0,
"ignore_user_permissions": 0,
"ignore_xss_filter": 0,
"in_filter": 0,
"in_global_search": 0,
"in_list_view": 1,
"in_standard_filter": 0,
"label": "Schedule Date",
"length": 0,
"no_copy": 1,
"permlevel": 0,
"precision": "",
"print_hide": 0,
"print_hide_if_no_value": 0,
"read_only": 0,
"remember_last_selected_value": 0,
"report_hide": 0,
"reqd": 1,
"search_index": 0,
"set_only_once": 0,
"unique": 0
},
{ {
"allow_bulk_edit": 0, "fieldname": "depreciation_amount",
"allow_on_submit": 0, "fieldtype": "Currency",
"bold": 0, "in_list_view": 1,
"collapsible": 0, "label": "Depreciation Amount",
"columns": 0, "options": "Company:company:default_currency",
"fieldname": "depreciation_amount", "reqd": 1
"fieldtype": "Currency", },
"hidden": 0,
"ignore_user_permissions": 0,
"ignore_xss_filter": 0,
"in_filter": 0,
"in_global_search": 0,
"in_list_view": 1,
"in_standard_filter": 0,
"label": "Depreciation Amount",
"length": 0,
"no_copy": 1,
"options": "Company:company:default_currency",
"permlevel": 0,
"precision": "",
"print_hide": 0,
"print_hide_if_no_value": 0,
"read_only": 0,
"remember_last_selected_value": 0,
"report_hide": 0,
"reqd": 1,
"search_index": 0,
"set_only_once": 0,
"unique": 0
},
{ {
"allow_bulk_edit": 0, "fieldname": "column_break_3",
"allow_on_submit": 0, "fieldtype": "Column Break"
"bold": 0, },
"collapsible": 0,
"columns": 0,
"fieldname": "column_break_3",
"fieldtype": "Column Break",
"hidden": 0,
"ignore_user_permissions": 0,
"ignore_xss_filter": 0,
"in_filter": 0,
"in_global_search": 0,
"in_list_view": 0,
"in_standard_filter": 0,
"length": 0,
"no_copy": 0,
"permlevel": 0,
"precision": "",
"print_hide": 0,
"print_hide_if_no_value": 0,
"read_only": 0,
"remember_last_selected_value": 0,
"report_hide": 0,
"reqd": 0,
"search_index": 0,
"set_only_once": 0,
"unique": 0
},
{ {
"allow_bulk_edit": 0, "fieldname": "accumulated_depreciation_amount",
"allow_on_submit": 0, "fieldtype": "Currency",
"bold": 0, "in_list_view": 1,
"collapsible": 0, "label": "Accumulated Depreciation Amount",
"columns": 0, "options": "Company:company:default_currency",
"fieldname": "accumulated_depreciation_amount", "read_only": 1
"fieldtype": "Currency", },
"hidden": 0,
"ignore_user_permissions": 0,
"ignore_xss_filter": 0,
"in_filter": 0,
"in_global_search": 0,
"in_list_view": 1,
"in_standard_filter": 0,
"label": "Accumulated Depreciation Amount",
"length": 0,
"no_copy": 1,
"options": "Company:company:default_currency",
"permlevel": 0,
"precision": "",
"print_hide": 0,
"print_hide_if_no_value": 0,
"read_only": 1,
"remember_last_selected_value": 0,
"report_hide": 0,
"reqd": 0,
"search_index": 0,
"set_only_once": 0,
"unique": 0
},
{ {
"allow_bulk_edit": 0, "depends_on": "eval:doc.docstatus==1",
"allow_on_submit": 0, "fieldname": "journal_entry",
"bold": 0, "fieldtype": "Link",
"collapsible": 0, "in_list_view": 1,
"columns": 0, "label": "Journal Entry",
"depends_on": "eval:doc.docstatus==1", "options": "Journal Entry",
"fieldname": "journal_entry", "read_only": 1
"fieldtype": "Link", },
"hidden": 0,
"ignore_user_permissions": 0,
"ignore_xss_filter": 0,
"in_filter": 0,
"in_global_search": 0,
"in_list_view": 1,
"in_standard_filter": 0,
"label": "Journal Entry",
"length": 0,
"no_copy": 1,
"options": "Journal Entry",
"permlevel": 0,
"precision": "",
"print_hide": 0,
"print_hide_if_no_value": 0,
"read_only": 1,
"remember_last_selected_value": 0,
"report_hide": 0,
"reqd": 0,
"search_index": 0,
"set_only_once": 0,
"unique": 0
},
{ {
"allow_bulk_edit": 0, "allow_on_submit": 1,
"allow_on_submit": 1, "depends_on": "eval:(doc.docstatus==1 && !doc.journal_entry && doc.schedule_date <= get_today())",
"bold": 0, "fieldname": "make_depreciation_entry",
"collapsible": 0, "fieldtype": "Button",
"columns": 0, "label": "Make Depreciation Entry"
"depends_on": "eval:(doc.docstatus==1 && !doc.journal_entry && doc.schedule_date <= get_today())", },
"fieldname": "make_depreciation_entry",
"fieldtype": "Button",
"hidden": 0,
"ignore_user_permissions": 0,
"ignore_xss_filter": 0,
"in_filter": 0,
"in_global_search": 0,
"in_list_view": 0,
"in_standard_filter": 0,
"label": "Make Depreciation Entry",
"length": 0,
"no_copy": 0,
"permlevel": 0,
"precision": "",
"print_hide": 0,
"print_hide_if_no_value": 0,
"read_only": 0,
"remember_last_selected_value": 0,
"report_hide": 0,
"reqd": 0,
"search_index": 0,
"set_only_once": 0,
"unique": 0
},
{ {
"allow_bulk_edit": 0, "fieldname": "finance_book_id",
"allow_on_submit": 0, "fieldtype": "Data",
"bold": 0, "hidden": 1,
"collapsible": 0, "label": "Finance Book Id",
"columns": 0, "print_hide": 1,
"fieldname": "finance_book_id", "read_only": 1
"fieldtype": "Data", },
"hidden": 1,
"ignore_user_permissions": 0,
"ignore_xss_filter": 0,
"in_filter": 0,
"in_global_search": 0,
"in_list_view": 0,
"in_standard_filter": 0,
"label": "Finance Book Id",
"length": 0,
"no_copy": 1,
"permlevel": 0,
"precision": "",
"print_hide": 1,
"print_hide_if_no_value": 0,
"read_only": 1,
"remember_last_selected_value": 0,
"report_hide": 0,
"reqd": 0,
"search_index": 0,
"set_only_once": 0,
"unique": 0
},
{ {
"allow_bulk_edit": 0, "fieldname": "depreciation_method",
"allow_on_submit": 0, "fieldtype": "Select",
"bold": 0, "hidden": 1,
"collapsible": 0, "label": "Depreciation Method",
"columns": 0, "options": "\nStraight Line\nDouble Declining Balance\nWritten Down Value\nManual",
"fieldname": "depreciation_method", "print_hide": 1,
"fieldtype": "Select", "read_only": 1
"hidden": 1,
"ignore_user_permissions": 0,
"ignore_xss_filter": 0,
"in_filter": 0,
"in_global_search": 0,
"in_list_view": 0,
"in_standard_filter": 0,
"label": "Depreciation Method",
"length": 0,
"no_copy": 1,
"options": "\nStraight Line\nDouble Declining Balance\nWritten Down Value\nManual",
"permlevel": 0,
"precision": "",
"print_hide": 1,
"print_hide_if_no_value": 0,
"read_only": 1,
"remember_last_selected_value": 0,
"report_hide": 0,
"reqd": 0,
"search_index": 0,
"set_only_once": 0,
"unique": 0
} }
], ],
"has_web_view": 0, "istable": 1,
"hide_heading": 0, "links": [],
"hide_toolbar": 0, "modified": "2022-11-29 18:27:05.748012",
"idx": 0, "modified_by": "Administrator",
"image_view": 0, "module": "Assets",
"in_create": 0, "name": "Depreciation Schedule",
"is_submittable": 0, "owner": "Administrator",
"issingle": 0, "permissions": [],
"istable": 1, "quick_entry": 1,
"max_attachments": 0, "sort_field": "modified",
"modified": "2018-05-10 15:12:41.679436", "sort_order": "DESC",
"modified_by": "Administrator", "states": []
"module": "Assets",
"name": "Depreciation Schedule",
"name_case": "",
"owner": "Administrator",
"permissions": [],
"quick_entry": 1,
"read_only": 0,
"read_only_onload": 0,
"show_name_in_global_search": 0,
"sort_field": "modified",
"sort_order": "DESC",
"track_changes": 0,
"track_seen": 0
} }