feat: asset salvage_value_percentage (#37302)
* feat: asset salvage_value_percentage * chore: add missing parameter in get_item_details * chore: change asset depr table colors
This commit is contained in:
parent
087f378a4f
commit
fed94845ce
@ -239,7 +239,7 @@ frappe.ui.form.on('Asset', {
|
|||||||
|
|
||||||
datatable.style.setStyle(`.dt-scrollable`, {'font-size': '0.75rem', 'margin-bottom': '1rem', 'margin-left': '0.35rem', 'margin-right': '0.35rem'});
|
datatable.style.setStyle(`.dt-scrollable`, {'font-size': '0.75rem', 'margin-bottom': '1rem', 'margin-left': '0.35rem', 'margin-right': '0.35rem'});
|
||||||
datatable.style.setStyle(`.dt-header`, {'margin-left': '0.35rem', 'margin-right': '0.35rem'});
|
datatable.style.setStyle(`.dt-header`, {'margin-left': '0.35rem', 'margin-right': '0.35rem'});
|
||||||
datatable.style.setStyle(`.dt-cell--header`, {'color': 'var(--text-muted)'});
|
datatable.style.setStyle(`.dt-cell--header .dt-cell__content`, {'color': 'var(--gray-600)', 'font-size': 'var(--text-sm)'});
|
||||||
datatable.style.setStyle(`.dt-cell`, {'color': 'var(--text-color)'});
|
datatable.style.setStyle(`.dt-cell`, {'color': 'var(--text-color)'});
|
||||||
datatable.style.setStyle(`.dt-cell--col-1`, {'text-align': 'center'});
|
datatable.style.setStyle(`.dt-cell--col-1`, {'text-align': 'center'});
|
||||||
datatable.style.setStyle(`.dt-cell--col-2`, {'font-weight': 600});
|
datatable.style.setStyle(`.dt-cell--col-2`, {'font-weight': 600});
|
||||||
@ -340,7 +340,8 @@ frappe.ui.form.on('Asset', {
|
|||||||
method: "erpnext.assets.doctype.asset.asset.get_item_details",
|
method: "erpnext.assets.doctype.asset.asset.get_item_details",
|
||||||
args: {
|
args: {
|
||||||
item_code: frm.doc.item_code,
|
item_code: frm.doc.item_code,
|
||||||
asset_category: frm.doc.asset_category
|
asset_category: frm.doc.asset_category,
|
||||||
|
gross_purchase_amount: frm.doc.gross_purchase_amount
|
||||||
},
|
},
|
||||||
callback: function(r, rt) {
|
callback: function(r, rt) {
|
||||||
if(r.message) {
|
if(r.message) {
|
||||||
@ -546,7 +547,21 @@ frappe.ui.form.on('Asset', {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
set_salvage_value_percentage_or_expected_value_after_useful_life: function(frm, row, salvage_value_percentage_changed, expected_value_after_useful_life_changed) {
|
||||||
|
if (expected_value_after_useful_life_changed) {
|
||||||
|
frappe.flags.from_set_salvage_value_percentage_or_expected_value_after_useful_life = true;
|
||||||
|
const new_salvage_value_percentage = flt((row.expected_value_after_useful_life * 100) / frm.doc.gross_purchase_amount, precision("salvage_value_percentage", row));
|
||||||
|
frappe.model.set_value(row.doctype, row.name, "salvage_value_percentage", new_salvage_value_percentage);
|
||||||
|
frappe.flags.from_set_salvage_value_percentage_or_expected_value_after_useful_life = false;
|
||||||
|
} else if (salvage_value_percentage_changed) {
|
||||||
|
frappe.flags.from_set_salvage_value_percentage_or_expected_value_after_useful_life = true;
|
||||||
|
const new_expected_value_after_useful_life = flt(frm.doc.gross_purchase_amount * (row.salvage_value_percentage / 100), precision('gross_purchase_amount'));
|
||||||
|
frappe.model.set_value(row.doctype, row.name, "expected_value_after_useful_life", new_expected_value_after_useful_life);
|
||||||
|
frappe.flags.from_set_salvage_value_percentage_or_expected_value_after_useful_life = false;
|
||||||
}
|
}
|
||||||
|
},
|
||||||
});
|
});
|
||||||
|
|
||||||
frappe.ui.form.on('Asset Finance Book', {
|
frappe.ui.form.on('Asset Finance Book', {
|
||||||
@ -557,9 +572,19 @@ frappe.ui.form.on('Asset Finance Book', {
|
|||||||
|
|
||||||
expected_value_after_useful_life: function(frm, cdt, cdn) {
|
expected_value_after_useful_life: function(frm, cdt, cdn) {
|
||||||
const row = locals[cdt][cdn];
|
const row = locals[cdt][cdn];
|
||||||
|
if (!frappe.flags.from_set_salvage_value_percentage_or_expected_value_after_useful_life) {
|
||||||
|
frm.events.set_salvage_value_percentage_or_expected_value_after_useful_life(frm, row, false, true);
|
||||||
|
}
|
||||||
frm.events.set_depreciation_rate(frm, row);
|
frm.events.set_depreciation_rate(frm, row);
|
||||||
},
|
},
|
||||||
|
|
||||||
|
salvage_value_percentage: function(frm, cdt, cdn) {
|
||||||
|
const row = locals[cdt][cdn];
|
||||||
|
if (!frappe.flags.from_set_salvage_value_percentage_or_expected_value_after_useful_life) {
|
||||||
|
frm.events.set_salvage_value_percentage_or_expected_value_after_useful_life(frm, row, true, false);
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
frequency_of_depreciation: function(frm, cdt, cdn) {
|
frequency_of_depreciation: function(frm, cdt, cdn) {
|
||||||
const row = locals[cdt][cdn];
|
const row = locals[cdt][cdn];
|
||||||
frm.events.set_depreciation_rate(frm, row);
|
frm.events.set_depreciation_rate(frm, row);
|
||||||
|
|||||||
@ -198,7 +198,9 @@ class Asset(AccountsController):
|
|||||||
self.asset_category = frappe.get_cached_value("Item", self.item_code, "asset_category")
|
self.asset_category = frappe.get_cached_value("Item", self.item_code, "asset_category")
|
||||||
|
|
||||||
if self.item_code and not self.get("finance_books"):
|
if self.item_code and not self.get("finance_books"):
|
||||||
finance_books = get_item_details(self.item_code, self.asset_category)
|
finance_books = get_item_details(
|
||||||
|
self.item_code, self.asset_category, self.gross_purchase_amount
|
||||||
|
)
|
||||||
self.set("finance_books", finance_books)
|
self.set("finance_books", finance_books)
|
||||||
|
|
||||||
def validate_finance_books(self):
|
def validate_finance_books(self):
|
||||||
@ -797,7 +799,7 @@ def transfer_asset(args):
|
|||||||
|
|
||||||
|
|
||||||
@frappe.whitelist()
|
@frappe.whitelist()
|
||||||
def get_item_details(item_code, asset_category):
|
def get_item_details(item_code, asset_category, gross_purchase_amount):
|
||||||
asset_category_doc = frappe.get_doc("Asset Category", asset_category)
|
asset_category_doc = frappe.get_doc("Asset Category", asset_category)
|
||||||
books = []
|
books = []
|
||||||
for d in asset_category_doc.finance_books:
|
for d in asset_category_doc.finance_books:
|
||||||
@ -807,7 +809,11 @@ def get_item_details(item_code, asset_category):
|
|||||||
"depreciation_method": d.depreciation_method,
|
"depreciation_method": d.depreciation_method,
|
||||||
"total_number_of_depreciations": d.total_number_of_depreciations,
|
"total_number_of_depreciations": d.total_number_of_depreciations,
|
||||||
"frequency_of_depreciation": d.frequency_of_depreciation,
|
"frequency_of_depreciation": d.frequency_of_depreciation,
|
||||||
"start_date": nowdate(),
|
"daily_depreciation": d.daily_depreciation,
|
||||||
|
"salvage_value_percentage": d.salvage_value_percentage,
|
||||||
|
"expected_value_after_useful_life": flt(gross_purchase_amount)
|
||||||
|
* flt(d.salvage_value_percentage / 100),
|
||||||
|
"depreciation_start_date": d.depreciation_start_date or nowdate(),
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|||||||
@ -75,13 +75,14 @@
|
|||||||
"in_create": 1,
|
"in_create": 1,
|
||||||
"index_web_pages_for_search": 1,
|
"index_web_pages_for_search": 1,
|
||||||
"links": [],
|
"links": [],
|
||||||
"modified": "2023-08-01 11:09:52.584482",
|
"modified": "2023-09-29 15:56:17.608643",
|
||||||
"modified_by": "Administrator",
|
"modified_by": "Administrator",
|
||||||
"module": "Assets",
|
"module": "Assets",
|
||||||
"name": "Asset Activity",
|
"name": "Asset Activity",
|
||||||
"owner": "Administrator",
|
"owner": "Administrator",
|
||||||
"permissions": [
|
"permissions": [
|
||||||
{
|
{
|
||||||
|
"delete": 1,
|
||||||
"email": 1,
|
"email": 1,
|
||||||
"read": 1,
|
"read": 1,
|
||||||
"report": 1,
|
"report": 1,
|
||||||
@ -89,6 +90,7 @@
|
|||||||
"share": 1
|
"share": 1
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
"delete": 1,
|
||||||
"email": 1,
|
"email": 1,
|
||||||
"read": 1,
|
"read": 1,
|
||||||
"report": 1,
|
"report": 1,
|
||||||
@ -96,6 +98,7 @@
|
|||||||
"share": 1
|
"share": 1
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
"delete": 1,
|
||||||
"email": 1,
|
"email": 1,
|
||||||
"read": 1,
|
"read": 1,
|
||||||
"report": 1,
|
"report": 1,
|
||||||
|
|||||||
@ -12,6 +12,7 @@
|
|||||||
"column_break_5",
|
"column_break_5",
|
||||||
"frequency_of_depreciation",
|
"frequency_of_depreciation",
|
||||||
"depreciation_start_date",
|
"depreciation_start_date",
|
||||||
|
"salvage_value_percentage",
|
||||||
"expected_value_after_useful_life",
|
"expected_value_after_useful_life",
|
||||||
"value_after_depreciation",
|
"value_after_depreciation",
|
||||||
"rate_of_depreciation"
|
"rate_of_depreciation"
|
||||||
@ -91,12 +92,17 @@
|
|||||||
"fieldname": "daily_depreciation",
|
"fieldname": "daily_depreciation",
|
||||||
"fieldtype": "Check",
|
"fieldtype": "Check",
|
||||||
"label": "Daily Depreciation"
|
"label": "Daily Depreciation"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"fieldname": "salvage_value_percentage",
|
||||||
|
"fieldtype": "Percent",
|
||||||
|
"label": "Salvage Value Percentage"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"index_web_pages_for_search": 1,
|
"index_web_pages_for_search": 1,
|
||||||
"istable": 1,
|
"istable": 1,
|
||||||
"links": [],
|
"links": [],
|
||||||
"modified": "2023-08-10 22:10:36.576199",
|
"modified": "2023-09-29 15:39:52.740594",
|
||||||
"modified_by": "Administrator",
|
"modified_by": "Administrator",
|
||||||
"module": "Assets",
|
"module": "Assets",
|
||||||
"name": "Asset Finance Book",
|
"name": "Asset Finance Book",
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user