mirror of
https://github.com/frappe/erpnext.git
synced 2026-03-21 19:25:16 +00:00
fix: add value adjustment amount in asset value
(cherry picked from commit f8050f4278)
This commit is contained in:
@@ -234,21 +234,35 @@ def get_group_by_asset_data(filters):
|
|||||||
|
|
||||||
asset_details = get_asset_details_for_grouped_by_category(filters)
|
asset_details = get_asset_details_for_grouped_by_category(filters)
|
||||||
assets = get_assets_for_grouped_by_asset(filters)
|
assets = get_assets_for_grouped_by_asset(filters)
|
||||||
|
asset_value_adjustment_map = get_asset_value_adjustment_map(filters)
|
||||||
|
|
||||||
for asset_detail in asset_details:
|
for asset_detail in asset_details:
|
||||||
row = frappe._dict()
|
row = frappe._dict()
|
||||||
row.update(asset_detail)
|
row.update(asset_detail)
|
||||||
|
|
||||||
|
row.update(next(asset for asset in assets if asset["asset"] == asset_detail.get("name", "")))
|
||||||
|
adjustments = asset_value_adjustment_map.get(
|
||||||
|
asset_detail.get("name", ""),
|
||||||
|
{
|
||||||
|
"adjustment_before_from_date": 0.0,
|
||||||
|
"adjustment_till_to_date": 0.0,
|
||||||
|
},
|
||||||
|
)
|
||||||
|
row.adjustment_before_from_date = adjustments["adjustment_before_from_date"]
|
||||||
|
row.adjustment_till_to_date = adjustments["adjustment_till_to_date"]
|
||||||
|
row.adjustment_during_period = flt(row.adjustment_till_to_date) - flt(row.adjustment_before_from_date)
|
||||||
|
|
||||||
|
row.value_as_on_from_date += row.adjustment_before_from_date
|
||||||
|
|
||||||
row.value_as_on_to_date = (
|
row.value_as_on_to_date = (
|
||||||
flt(row.value_as_on_from_date)
|
flt(row.value_as_on_from_date)
|
||||||
+ flt(row.value_of_new_purchase)
|
+ flt(row.value_of_new_purchase)
|
||||||
- flt(row.value_of_sold_asset)
|
- flt(row.value_of_sold_asset)
|
||||||
- flt(row.value_of_scrapped_asset)
|
- flt(row.value_of_scrapped_asset)
|
||||||
- flt(row.value_of_capitalized_asset)
|
- flt(row.value_of_capitalized_asset)
|
||||||
|
+ flt(row.adjustment_during_period)
|
||||||
)
|
)
|
||||||
|
|
||||||
row.update(next(asset for asset in assets if asset["asset"] == asset_detail.get("name", "")))
|
|
||||||
|
|
||||||
row.accumulated_depreciation_as_on_to_date = (
|
row.accumulated_depreciation_as_on_to_date = (
|
||||||
flt(row.accumulated_depreciation_as_on_from_date)
|
flt(row.accumulated_depreciation_as_on_from_date)
|
||||||
+ flt(row.depreciation_amount_during_the_period)
|
+ flt(row.depreciation_amount_during_the_period)
|
||||||
@@ -432,6 +446,59 @@ def get_assets_for_grouped_by_asset(filters):
|
|||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
def get_asset_value_adjustment_map(filters):
|
||||||
|
asset_with_value_adjustments = frappe.db.sql(
|
||||||
|
"""
|
||||||
|
SELECT
|
||||||
|
a.name AS asset,
|
||||||
|
IFNULL(
|
||||||
|
SUM(
|
||||||
|
CASE
|
||||||
|
WHEN gle.posting_date < %(from_date)s
|
||||||
|
AND (a.disposal_date IS NULL OR a.disposal_date >= %(from_date)s)
|
||||||
|
THEN gle.debit - gle.credit
|
||||||
|
ELSE 0
|
||||||
|
END
|
||||||
|
),
|
||||||
|
0) AS value_adjustment_before_from_date,
|
||||||
|
IFNULL(
|
||||||
|
SUM(
|
||||||
|
CASE
|
||||||
|
WHEN gle.posting_date <= %(to_date)s
|
||||||
|
AND (a.disposal_date IS NULL OR a.disposal_date >= %(to_date)s)
|
||||||
|
THEN gle.debit - gle.credit
|
||||||
|
ELSE 0
|
||||||
|
END
|
||||||
|
),
|
||||||
|
0) AS value_adjustment_till_to_date
|
||||||
|
|
||||||
|
FROM `tabGL Entry` gle
|
||||||
|
JOIN `tabAsset` a ON gle.against_voucher = a.name
|
||||||
|
JOIN `tabAsset Category Account` aca
|
||||||
|
ON aca.parent = a.asset_category
|
||||||
|
AND aca.company_name = %(company)s
|
||||||
|
WHERE gle.is_cancelled = 0
|
||||||
|
AND a.docstatus = 1
|
||||||
|
AND a.company = %(company)s
|
||||||
|
AND a.purchase_date <= %(to_date)s
|
||||||
|
AND gle.account = aca.fixed_asset_account
|
||||||
|
GROUP BY a.name
|
||||||
|
""",
|
||||||
|
{"from_date": filters.from_date, "to_date": filters.to_date, "company": filters.company},
|
||||||
|
as_dict=1,
|
||||||
|
)
|
||||||
|
|
||||||
|
asset_value_adjustment_map = {}
|
||||||
|
|
||||||
|
for r in asset_with_value_adjustments:
|
||||||
|
asset_value_adjustment_map[r["asset"]] = {
|
||||||
|
"adjustment_before_from_date": flt(r.get("value_adjustment_before_from_date", 0)),
|
||||||
|
"adjustment_till_to_date": flt(r.get("value_adjustment_till_to_date", 0)),
|
||||||
|
}
|
||||||
|
|
||||||
|
return asset_value_adjustment_map
|
||||||
|
|
||||||
|
|
||||||
def get_columns(filters):
|
def get_columns(filters):
|
||||||
columns = []
|
columns = []
|
||||||
|
|
||||||
|
|||||||
@@ -1,29 +1,34 @@
|
|||||||
{
|
{
|
||||||
"add_total_row": 0,
|
"add_total_row": 1,
|
||||||
"apply_user_permissions": 1,
|
"add_translate_data": 0,
|
||||||
"creation": "2013-12-06 13:22:23",
|
"columns": [],
|
||||||
"disabled": 0,
|
"creation": "2013-12-06 13:22:23",
|
||||||
"docstatus": 0,
|
"disabled": 0,
|
||||||
"doctype": "Report",
|
"docstatus": 0,
|
||||||
"idx": 3,
|
"doctype": "Report",
|
||||||
"is_standard": "Yes",
|
"filters": [],
|
||||||
"modified": "2017-02-24 20:17:51.995451",
|
"idx": 3,
|
||||||
"modified_by": "Administrator",
|
"is_standard": "Yes",
|
||||||
"module": "Accounts",
|
"letterhead": null,
|
||||||
"name": "General Ledger",
|
"modified": "2025-08-13 12:47:27.645023",
|
||||||
"owner": "Administrator",
|
"modified_by": "Administrator",
|
||||||
"ref_doctype": "GL Entry",
|
"module": "Accounts",
|
||||||
"report_name": "General Ledger",
|
"name": "General Ledger",
|
||||||
"report_type": "Script Report",
|
"owner": "Administrator",
|
||||||
|
"prepared_report": 0,
|
||||||
|
"ref_doctype": "GL Entry",
|
||||||
|
"report_name": "General Ledger",
|
||||||
|
"report_type": "Script Report",
|
||||||
"roles": [
|
"roles": [
|
||||||
{
|
{
|
||||||
"role": "Accounts User"
|
"role": "Accounts User"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"role": "Accounts Manager"
|
"role": "Accounts Manager"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"role": "Auditor"
|
"role": "Auditor"
|
||||||
}
|
}
|
||||||
]
|
],
|
||||||
}
|
"timeout": 0
|
||||||
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user