fix: correct gl entry when capitalizing composite component

This commit is contained in:
Khushi Rawat
2025-05-28 17:48:04 +05:30
parent 4d1d66e579
commit 83b32f9646

View File

@@ -13,6 +13,7 @@ import erpnext
from erpnext.assets.doctype.asset.asset import get_asset_value_after_depreciation from erpnext.assets.doctype.asset.asset import get_asset_value_after_depreciation
from erpnext.assets.doctype.asset.depreciation import ( from erpnext.assets.doctype.asset.depreciation import (
depreciate_asset, depreciate_asset,
get_disposal_account_and_cost_center,
get_gl_entries_on_asset_disposal, get_gl_entries_on_asset_disposal,
get_value_after_depreciation_on_disposal_date, get_value_after_depreciation_on_disposal_date,
reset_depreciation_schedule, reset_depreciation_schedule,
@@ -441,7 +442,11 @@ class AssetCapitalization(StockController):
self.get_gl_entries_for_consumed_asset_items(gl_entries, target_account, target_against, precision) self.get_gl_entries_for_consumed_asset_items(gl_entries, target_account, target_against, precision)
self.get_gl_entries_for_consumed_service_items(gl_entries, target_account, target_against, precision) self.get_gl_entries_for_consumed_service_items(gl_entries, target_account, target_against, precision)
self.get_gl_entries_for_target_item(gl_entries, target_account, target_against, precision) composite_component_value = self.get_composite_component_value()
self.get_gl_entries_for_target_item(
gl_entries, target_account, target_against, precision, composite_component_value
)
return gl_entries return gl_entries
@@ -493,6 +498,7 @@ class AssetCapitalization(StockController):
for item in self.asset_items: for item in self.asset_items:
asset = frappe.get_doc("Asset", item.asset) asset = frappe.get_doc("Asset", item.asset)
if not asset.is_composite_component:
if asset.calculate_depreciation: if asset.calculate_depreciation:
notes = _( notes = _(
"This schedule was created when Asset {0} was consumed through Asset Capitalization {1}." "This schedule was created when Asset {0} was consumed through Asset Capitalization {1}."
@@ -512,15 +518,14 @@ class AssetCapitalization(StockController):
self.get("posting_date"), self.get("posting_date"),
) )
asset.db_set("disposal_date", self.posting_date)
self.set_consumed_asset_status(asset)
for gle in fixed_asset_gl_entries: for gle in fixed_asset_gl_entries:
gle["against"] = target_account gle["against"] = target_account
gl_entries.append(self.get_gl_dict(gle, item=item)) gl_entries.append(self.get_gl_dict(gle, item=item))
target_against.add(gle["account"]) target_against.add(gle["account"])
asset.db_set("disposal_date", self.posting_date)
self.set_consumed_asset_status(asset)
def get_gl_entries_for_consumed_service_items( def get_gl_entries_for_consumed_service_items(
self, gl_entries, target_account, target_against, precision self, gl_entries, target_account, target_against, precision
): ):
@@ -543,8 +548,20 @@ class AssetCapitalization(StockController):
) )
) )
def get_gl_entries_for_target_item(self, gl_entries, target_account, target_against, precision): def get_composite_component_value(self):
composite_component_value = 0
for item in self.asset_items:
asset = frappe.db.get_value("Asset", item.asset, ["is_composite_component"], as_dict=True)
if asset and asset.is_composite_component:
composite_component_value += flt(item.asset_value, item.precision("asset_value"))
return composite_component_value
def get_gl_entries_for_target_item(
self, gl_entries, target_account, target_against, precision, composite_component_value
):
if self.target_is_fixed_asset: if self.target_is_fixed_asset:
total_value = flt(self.total_value - composite_component_value, precision)
if total_value:
# Capitalization # Capitalization
gl_entries.append( gl_entries.append(
self.get_gl_dict( self.get_gl_dict(
@@ -552,7 +569,7 @@ class AssetCapitalization(StockController):
"account": target_account, "account": target_account,
"against": ", ".join(target_against), "against": ", ".join(target_against),
"remarks": self.get("remarks") or _("Accounting Entry for Asset"), "remarks": self.get("remarks") or _("Accounting Entry for Asset"),
"debit": flt(self.total_value, precision), "debit": total_value,
"cost_center": self.get("cost_center"), "cost_center": self.get("cost_center"),
}, },
item=self, item=self,