feat(Asset Capitalization): Accounting Fields
This commit is contained in:
parent
6c748966e7
commit
702b5c32c1
@ -148,6 +148,10 @@ erpnext.assets.AssetCapitalization = class AssetCapitalization extends erpnext.s
|
||||
this.calculate_totals();
|
||||
}
|
||||
|
||||
target_qty() {
|
||||
this.calculate_totals();
|
||||
}
|
||||
|
||||
rate() {
|
||||
this.calculate_totals();
|
||||
}
|
||||
@ -156,26 +160,29 @@ erpnext.assets.AssetCapitalization = class AssetCapitalization extends erpnext.s
|
||||
var me = this;
|
||||
|
||||
if (me.frm.doc.company) {
|
||||
frappe.call({
|
||||
method: "frappe.client.get_value",
|
||||
args: {
|
||||
doctype: "Company",
|
||||
filters: {"name": me.frm.doc.company},
|
||||
fieldname: "cost_center"
|
||||
},
|
||||
callback: function (r) {
|
||||
if (r.message) {
|
||||
$.each(me.frm.doc.service_items || [], function (i, d) {
|
||||
frappe.model.set_value(d.doctype, d.name, "cost_center", r.message.cost_center);
|
||||
});
|
||||
}
|
||||
}
|
||||
frappe.model.set_value(me.frm.doc.doctype, me.frm.doc.name, "cost_center", null);
|
||||
$.each(me.frm.doc.stock_items || [], function (i, d) {
|
||||
frappe.model.set_value(d.doctype, d.name, "cost_center", null);
|
||||
});
|
||||
$.each(me.frm.doc.asset_items || [], function (i, d) {
|
||||
frappe.model.set_value(d.doctype, d.name, "cost_center", null);
|
||||
});
|
||||
$.each(me.frm.doc.service_items || [], function (i, d) {
|
||||
frappe.model.set_value(d.doctype, d.name, "cost_center", null);
|
||||
});
|
||||
}
|
||||
|
||||
erpnext.accounts.dimensions.update_dimension(me.frm, me.frm.doctype);
|
||||
}
|
||||
|
||||
stock_items_add(doc, cdt, cdn) {
|
||||
erpnext.accounts.dimensions.copy_dimension_from_first_row(this.frm, cdt, cdn, 'stock_items');
|
||||
}
|
||||
|
||||
asset_items_add(doc, cdt, cdn) {
|
||||
erpnext.accounts.dimensions.copy_dimension_from_first_row(this.frm, cdt, cdn, 'asset_items');
|
||||
}
|
||||
|
||||
serivce_items_add(doc, cdt, cdn) {
|
||||
erpnext.accounts.dimensions.copy_dimension_from_first_row(this.frm, cdt, cdn, 'service_items');
|
||||
}
|
||||
@ -189,6 +196,7 @@ erpnext.assets.AssetCapitalization = class AssetCapitalization extends erpnext.s
|
||||
child: me.frm.doc,
|
||||
args: {
|
||||
item_code: me.frm.doc.target_item_code,
|
||||
company: me.frm.doc.company,
|
||||
},
|
||||
callback: function (r) {
|
||||
if (!r.exc) {
|
||||
@ -207,7 +215,8 @@ erpnext.assets.AssetCapitalization = class AssetCapitalization extends erpnext.s
|
||||
method: "erpnext.assets.doctype.asset_capitalization.asset_capitalization.get_target_asset_details",
|
||||
child: me.frm.doc,
|
||||
args: {
|
||||
asset: me.frm.doc.target_asset
|
||||
asset: me.frm.doc.target_asset,
|
||||
company: me.frm.doc.company,
|
||||
},
|
||||
callback: function (r) {
|
||||
if (!r.exc) {
|
||||
@ -381,6 +390,10 @@ erpnext.assets.AssetCapitalization = class AssetCapitalization extends erpnext.s
|
||||
me.frm.doc.total_value = me.frm.doc.stock_items_total + me.frm.doc.asset_items_total + me.frm.doc.service_items_total;
|
||||
me.frm.doc.total_value = flt(me.frm.doc.total_value, precision('total_value'));
|
||||
|
||||
me.frm.doc.target_qty = flt(me.frm.doc.target_qty, precision('target_qty'));
|
||||
me.frm.doc.target_incoming_rate = me.frm.doc.target_qty ? me.frm.doc.total_value / flt(me.frm.doc.target_qty)
|
||||
: me.frm.doc.total_value;
|
||||
|
||||
me.frm.refresh_fields();
|
||||
}
|
||||
};
|
||||
|
@ -41,7 +41,13 @@
|
||||
"service_items",
|
||||
"service_items_total",
|
||||
"totals_section",
|
||||
"total_value"
|
||||
"total_value",
|
||||
"column_break_36",
|
||||
"target_incoming_rate",
|
||||
"accounting_dimensions_section",
|
||||
"cost_center",
|
||||
"dimension_col_break",
|
||||
"target_fixed_asset_account"
|
||||
],
|
||||
"fields": [
|
||||
{
|
||||
@ -289,12 +295,45 @@
|
||||
"label": "Total Value",
|
||||
"options": "Company:company:default_currency",
|
||||
"read_only": 1
|
||||
},
|
||||
{
|
||||
"fieldname": "column_break_36",
|
||||
"fieldtype": "Column Break"
|
||||
},
|
||||
{
|
||||
"fieldname": "target_incoming_rate",
|
||||
"fieldtype": "Currency",
|
||||
"label": "Target Incoming Rate",
|
||||
"options": "Company:company:default_currency"
|
||||
},
|
||||
{
|
||||
"collapsible": 1,
|
||||
"fieldname": "accounting_dimensions_section",
|
||||
"fieldtype": "Section Break",
|
||||
"label": "Accounting Dimensions"
|
||||
},
|
||||
{
|
||||
"fieldname": "cost_center",
|
||||
"fieldtype": "Link",
|
||||
"label": "Cost Center",
|
||||
"options": "Cost Center"
|
||||
},
|
||||
{
|
||||
"fieldname": "dimension_col_break",
|
||||
"fieldtype": "Column Break"
|
||||
},
|
||||
{
|
||||
"fieldname": "target_fixed_asset_account",
|
||||
"fieldtype": "Link",
|
||||
"label": "Target Fixed Asset Account",
|
||||
"options": "Account",
|
||||
"read_only": 1
|
||||
}
|
||||
],
|
||||
"index_web_pages_for_search": 1,
|
||||
"is_submittable": 1,
|
||||
"links": [],
|
||||
"modified": "2021-09-06 17:18:31.881006",
|
||||
"modified": "2021-09-08 15:58:40.417579",
|
||||
"modified_by": "Administrator",
|
||||
"module": "Assets",
|
||||
"name": "Asset Capitalization",
|
||||
|
@ -11,13 +11,14 @@ from erpnext.setup.doctype.item_group.item_group import get_item_group_defaults
|
||||
from erpnext.setup.doctype.brand.brand import get_brand_defaults
|
||||
from erpnext.stock.utils import get_incoming_rate
|
||||
from erpnext.stock.stock_ledger import get_previous_sle
|
||||
from erpnext.assets.doctype.asset_category.asset_category import get_asset_category_account
|
||||
from erpnext.assets.doctype.asset_value_adjustment.asset_value_adjustment import get_current_asset_value
|
||||
from six import string_types
|
||||
import json
|
||||
|
||||
force_fields = ['target_item_name', 'target_asset_name', 'item_name', 'asset_name',
|
||||
'target_is_fixed_asset', 'target_has_serial_no', 'target_has_batch_no',
|
||||
'target_stock_uom', 'stock_uom']
|
||||
'target_stock_uom', 'stock_uom', 'target_fixed_asset_account', 'fixed_asset_account']
|
||||
|
||||
|
||||
class AssetCapitalization(AccountsController):
|
||||
@ -42,7 +43,7 @@ class AssetCapitalization(AccountsController):
|
||||
self.title = self.target_asset_name or self.target_item_name or self.target_item_code
|
||||
|
||||
def set_missing_values(self, for_validate=False):
|
||||
target_item_details = get_target_item_details(self.target_item_code)
|
||||
target_item_details = get_target_item_details(self.target_item_code, self.company)
|
||||
for k, v in target_item_details.items():
|
||||
if self.meta.has_field(k) and (not self.get(k) or k in force_fields):
|
||||
self.set(k, v)
|
||||
@ -51,7 +52,7 @@ class AssetCapitalization(AccountsController):
|
||||
if not self.target_is_fixed_asset:
|
||||
self.target_asset = None
|
||||
|
||||
target_asset_details = get_target_asset_details(self.target_asset)
|
||||
target_asset_details = get_target_asset_details(self.target_asset, self.company)
|
||||
for k, v in target_asset_details.items():
|
||||
if self.meta.has_field(k) and (not self.get(k) or k in force_fields):
|
||||
self.set(k, v)
|
||||
@ -95,6 +96,8 @@ class AssetCapitalization(AccountsController):
|
||||
|
||||
if target_item.is_fixed_asset:
|
||||
self.target_qty = 1
|
||||
if flt(self.target_qty) <= 0:
|
||||
frappe.throw(_("Target Qty must be a positive number"))
|
||||
|
||||
if not target_item.is_stock_item:
|
||||
self.target_warehouse = None
|
||||
@ -233,9 +236,12 @@ class AssetCapitalization(AccountsController):
|
||||
self.total_value = self.stock_items_total + self.asset_items_total + self.service_items_total
|
||||
self.total_value = flt(self.total_value, self.precision('total_value'))
|
||||
|
||||
self.target_qty = flt(self.target_qty, self.precision('target_qty'))
|
||||
self.target_incoming_rate = self.total_value / self.target_qty
|
||||
|
||||
|
||||
@frappe.whitelist()
|
||||
def get_target_item_details(item_code=None):
|
||||
def get_target_item_details(item_code=None, company=None):
|
||||
out = frappe._dict()
|
||||
|
||||
# Get Item Details
|
||||
@ -261,6 +267,13 @@ def get_target_item_details(item_code=None):
|
||||
if not out.target_has_serial_no:
|
||||
out.target_serial_no = ""
|
||||
|
||||
# Cost Center
|
||||
item_defaults = get_item_defaults(item.name, company)
|
||||
item_group_defaults = get_item_group_defaults(item.name, company)
|
||||
brand_defaults = get_brand_defaults(item.name, company)
|
||||
out.cost_center = get_default_cost_center(frappe._dict({'item_code': item.name, 'company': company}),
|
||||
item_defaults, item_group_defaults, brand_defaults)
|
||||
|
||||
# Set Entry Type
|
||||
if not item_code:
|
||||
out.entry_type = ""
|
||||
@ -273,7 +286,7 @@ def get_target_item_details(item_code=None):
|
||||
|
||||
|
||||
@frappe.whitelist()
|
||||
def get_target_asset_details(asset=None):
|
||||
def get_target_asset_details(asset=None, company=None):
|
||||
out = frappe._dict()
|
||||
|
||||
# Get Asset Details
|
||||
@ -289,6 +302,12 @@ def get_target_asset_details(asset=None):
|
||||
# Set Asset Details
|
||||
out.asset_name = asset_details.asset_name
|
||||
|
||||
if asset_details.item_code:
|
||||
out.target_fixed_asset_account = get_asset_category_account('fixed_asset_account', item=asset_details.item_code,
|
||||
company=company)
|
||||
else:
|
||||
out.target_fixed_asset_account = None
|
||||
|
||||
return out
|
||||
|
||||
|
||||
@ -313,6 +332,12 @@ def get_consumed_stock_item_details(args, get_valuation_rate=True):
|
||||
|
||||
out.warehouse = get_item_warehouse(item, args, overwrite_warehouse=True) if item else None
|
||||
|
||||
# Cost Center
|
||||
item_defaults = get_item_defaults(item.name, args.company)
|
||||
item_group_defaults = get_item_group_defaults(item.name, args.company)
|
||||
brand_defaults = get_brand_defaults(item.name, args.company)
|
||||
out.cost_center = get_default_cost_center(args, item_defaults, item_group_defaults, brand_defaults)
|
||||
|
||||
if get_valuation_rate:
|
||||
if args.item_code and out.warehouse:
|
||||
incoming_rate_args = frappe._dict({
|
||||
@ -373,6 +398,21 @@ def get_consumed_asset_details(args, get_asset_value=True):
|
||||
else:
|
||||
out.asset_value = 0
|
||||
|
||||
# Account
|
||||
if asset_details.item_code:
|
||||
out.fixed_asset_account = get_asset_category_account('fixed_asset_account', item=asset_details.item_code,
|
||||
company=args.company)
|
||||
else:
|
||||
out.fixed_asset_account = None
|
||||
|
||||
# Cost Center
|
||||
if asset_details.item_code:
|
||||
item = frappe.get_cached_doc("Item", asset_details.item_code)
|
||||
item_defaults = get_item_defaults(item.name, args.company)
|
||||
item_group_defaults = get_item_group_defaults(item.name, args.company)
|
||||
brand_defaults = get_brand_defaults(item.name, args.company)
|
||||
out.cost_center = get_default_cost_center(args, item_defaults, item_group_defaults, brand_defaults)
|
||||
|
||||
return out
|
||||
|
||||
|
||||
|
@ -12,7 +12,11 @@
|
||||
"item_name",
|
||||
"section_break_6",
|
||||
"asset_value",
|
||||
"column_break_9"
|
||||
"column_break_9",
|
||||
"accounting_dimensions_section",
|
||||
"fixed_asset_account",
|
||||
"dimension_col_break",
|
||||
"cost_center"
|
||||
],
|
||||
"fields": [
|
||||
{
|
||||
@ -68,12 +72,35 @@
|
||||
{
|
||||
"fieldname": "column_break_9",
|
||||
"fieldtype": "Column Break"
|
||||
},
|
||||
{
|
||||
"fieldname": "fixed_asset_account",
|
||||
"fieldtype": "Link",
|
||||
"label": "Fixed Asset Account",
|
||||
"options": "Account",
|
||||
"read_only": 1
|
||||
},
|
||||
{
|
||||
"fieldname": "cost_center",
|
||||
"fieldtype": "Link",
|
||||
"label": "Cost Center",
|
||||
"options": "Cost Center"
|
||||
},
|
||||
{
|
||||
"collapsible": 1,
|
||||
"fieldname": "accounting_dimensions_section",
|
||||
"fieldtype": "Section Break",
|
||||
"label": "Accounting Dimensions"
|
||||
},
|
||||
{
|
||||
"fieldname": "dimension_col_break",
|
||||
"fieldtype": "Column Break"
|
||||
}
|
||||
],
|
||||
"index_web_pages_for_search": 1,
|
||||
"istable": 1,
|
||||
"links": [],
|
||||
"modified": "2021-09-06 13:46:04.892863",
|
||||
"modified": "2021-09-08 15:54:24.885547",
|
||||
"modified_by": "Administrator",
|
||||
"module": "Assets",
|
||||
"name": "Asset Capitalization Asset Item",
|
||||
|
@ -17,8 +17,7 @@
|
||||
"amount",
|
||||
"accounting_dimensions_section",
|
||||
"cost_center",
|
||||
"dimension_col_break",
|
||||
"project"
|
||||
"dimension_col_break"
|
||||
],
|
||||
"fields": [
|
||||
{
|
||||
@ -106,18 +105,12 @@
|
||||
{
|
||||
"fieldname": "dimension_col_break",
|
||||
"fieldtype": "Column Break"
|
||||
},
|
||||
{
|
||||
"fieldname": "project",
|
||||
"fieldtype": "Link",
|
||||
"label": "Project",
|
||||
"options": "Project"
|
||||
}
|
||||
],
|
||||
"index_web_pages_for_search": 1,
|
||||
"istable": 1,
|
||||
"links": [],
|
||||
"modified": "2021-09-06 14:06:34.768152",
|
||||
"modified": "2021-09-08 15:52:08.598100",
|
||||
"modified_by": "Administrator",
|
||||
"module": "Assets",
|
||||
"name": "Asset Capitalization Service Item",
|
||||
|
@ -19,7 +19,10 @@
|
||||
"batch_and_serial_no_section",
|
||||
"batch_no",
|
||||
"column_break_13",
|
||||
"serial_no"
|
||||
"serial_no",
|
||||
"accounting_dimensions_section",
|
||||
"cost_center",
|
||||
"dimension_col_break"
|
||||
],
|
||||
"fields": [
|
||||
{
|
||||
@ -120,12 +123,28 @@
|
||||
"label": "Actual Qty in Warehouse",
|
||||
"no_copy": 1,
|
||||
"read_only": 1
|
||||
},
|
||||
{
|
||||
"collapsible": 1,
|
||||
"fieldname": "accounting_dimensions_section",
|
||||
"fieldtype": "Section Break",
|
||||
"label": "Accounting Dimensions"
|
||||
},
|
||||
{
|
||||
"fieldname": "cost_center",
|
||||
"fieldtype": "Link",
|
||||
"label": "Cost Center",
|
||||
"options": "Cost Center"
|
||||
},
|
||||
{
|
||||
"fieldname": "dimension_col_break",
|
||||
"fieldtype": "Column Break"
|
||||
}
|
||||
],
|
||||
"index_web_pages_for_search": 1,
|
||||
"istable": 1,
|
||||
"links": [],
|
||||
"modified": "2021-09-06 13:46:13.579140",
|
||||
"modified": "2021-09-08 15:56:20.230548",
|
||||
"modified_by": "Administrator",
|
||||
"module": "Assets",
|
||||
"name": "Asset Capitalization Stock Item",
|
||||
|
Loading…
x
Reference in New Issue
Block a user