diff --git a/erpnext/assets/doctype/asset_capitalization/asset_capitalization.js b/erpnext/assets/doctype/asset_capitalization/asset_capitalization.js
index 9276d00..b42634a 100644
--- a/erpnext/assets/doctype/asset_capitalization/asset_capitalization.js
+++ b/erpnext/assets/doctype/asset_capitalization/asset_capitalization.js
@@ -148,6 +148,10 @@
 		this.calculate_totals();
 	}
 
+	target_qty() {
+		this.calculate_totals();
+	}
+
 	rate() {
 		this.calculate_totals();
 	}
@@ -156,26 +160,29 @@
 		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 @@
 				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 @@
 				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 @@
 		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();
 	}
 };
diff --git a/erpnext/assets/doctype/asset_capitalization/asset_capitalization.json b/erpnext/assets/doctype/asset_capitalization/asset_capitalization.json
index b697c20..0582b1e 100644
--- a/erpnext/assets/doctype/asset_capitalization/asset_capitalization.json
+++ b/erpnext/assets/doctype/asset_capitalization/asset_capitalization.json
@@ -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",
diff --git a/erpnext/assets/doctype/asset_capitalization/asset_capitalization.py b/erpnext/assets/doctype/asset_capitalization/asset_capitalization.py
index 586710a..64f1388 100644
--- a/erpnext/assets/doctype/asset_capitalization/asset_capitalization.py
+++ b/erpnext/assets/doctype/asset_capitalization/asset_capitalization.py
@@ -11,13 +11,14 @@
 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 @@
 		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 @@
 		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 @@
 
 		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 @@
 		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 @@
 	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 @@
 
 
 @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 @@
 	# 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 @@
 
 	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 @@
 		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
 
 
diff --git a/erpnext/assets/doctype/asset_capitalization_asset_item/asset_capitalization_asset_item.json b/erpnext/assets/doctype/asset_capitalization_asset_item/asset_capitalization_asset_item.json
index a004033..93ec336 100644
--- a/erpnext/assets/doctype/asset_capitalization_asset_item/asset_capitalization_asset_item.json
+++ b/erpnext/assets/doctype/asset_capitalization_asset_item/asset_capitalization_asset_item.json
@@ -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",
diff --git a/erpnext/assets/doctype/asset_capitalization_service_item/asset_capitalization_service_item.json b/erpnext/assets/doctype/asset_capitalization_service_item/asset_capitalization_service_item.json
index 2d3584d..0ae1c14 100644
--- a/erpnext/assets/doctype/asset_capitalization_service_item/asset_capitalization_service_item.json
+++ b/erpnext/assets/doctype/asset_capitalization_service_item/asset_capitalization_service_item.json
@@ -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",
diff --git a/erpnext/assets/doctype/asset_capitalization_stock_item/asset_capitalization_stock_item.json b/erpnext/assets/doctype/asset_capitalization_stock_item/asset_capitalization_stock_item.json
index 19c4558..14eb0f6 100644
--- a/erpnext/assets/doctype/asset_capitalization_stock_item/asset_capitalization_stock_item.json
+++ b/erpnext/assets/doctype/asset_capitalization_stock_item/asset_capitalization_stock_item.json
@@ -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",
