refactor: Optimize asset depreciation schedule retrieval with type hints

This commit is contained in:
khushi8112
2026-02-18 12:22:55 +05:30
parent 36dcf8b2a5
commit beffc016da
5 changed files with 28 additions and 33 deletions

View File

@@ -4,7 +4,6 @@
import json import json
import math import math
from typing import Any
import frappe import frappe
from frappe import _ from frappe import _

View File

@@ -164,7 +164,7 @@ def get_depr_cost_center_and_series():
@frappe.whitelist() @frappe.whitelist()
def make_depreciation_entry( def make_depreciation_entry(
depr_schedule_name: str | list[dict], depr_schedule_name: str,
date: DateTimeLikeObject | None = None, date: DateTimeLikeObject | None = None,
sch_start_idx: int | None = None, sch_start_idx: int | None = None,
sch_end_idx: int | None = None, sch_end_idx: int | None = None,

View File

@@ -395,7 +395,6 @@ erpnext.assets.AssetCapitalization = class AssetCapitalization extends erpnext.s
me.frm.call({ me.frm.call({
method: "erpnext.assets.doctype.asset_capitalization.asset_capitalization.get_warehouse_details", method: "erpnext.assets.doctype.asset_capitalization.asset_capitalization.get_warehouse_details",
child: item, child: item,
args: {
args: { args: {
item_code: item.item_code, item_code: item.item_code,
warehouse: cstr(item.warehouse), warehouse: cstr(item.warehouse),
@@ -409,7 +408,6 @@ erpnext.assets.AssetCapitalization = class AssetCapitalization extends erpnext.s
allow_zero_valuation: 1, allow_zero_valuation: 1,
serial_and_batch_bundle: item.serial_and_batch_bundle, serial_and_batch_bundle: item.serial_and_batch_bundle,
}, },
},
callback: function (r) { callback: function (r) {
if (!r.exc) { if (!r.exc) {
me.calculate_totals(); me.calculate_totals();

View File

@@ -711,18 +711,14 @@ def get_consumed_stock_item_details(ctx: ItemDetailsCtx):
@frappe.whitelist() @frappe.whitelist()
def get_warehouse_details(args: dict | str): @erpnext.normalize_ctx_input(ItemDetailsCtx)
if isinstance(args, str): def get_warehouse_details(ctx: ItemDetailsCtx) -> frappe._dict:
args = json.loads(args)
args = frappe._dict(args)
out = frappe._dict() out = frappe._dict()
if args.warehouse and args.item_code: if ctx.warehouse and ctx.item_code:
out = frappe._dict( out = frappe._dict(
{ {
"actual_qty": get_previous_sle(args).get("qty_after_transaction") or 0, "actual_qty": get_previous_sle(ctx).get("qty_after_transaction") or 0,
"valuation_rate": get_incoming_rate(args, raise_error_if_no_rate=False), "valuation_rate": get_incoming_rate(ctx, raise_error_if_no_rate=False),
} }
) )
return out return out

View File

@@ -287,7 +287,7 @@ def get_asset_depr_schedule_doc(asset_name: str, status: str | None = None, fina
if not asset_depr_schedule: if not asset_depr_schedule:
return return
asset_depr_schedule_doc = frappe.get_doc("Asset Depreciation Schedule", asset_depr_schedule[0].name) asset_depr_schedule_doc = frappe.get_doc("Asset Depreciation Schedule", asset_depr_schedule)
return asset_depr_schedule_doc return asset_depr_schedule_doc
@@ -299,21 +299,23 @@ def get_asset_depr_schedule_name(asset_name, status=None, finance_book=None):
] ]
if status: if status:
if isinstance(status, str): status_list = [status] if isinstance(status, str) else status
status = [status] filters.append(["status", "in", status_list])
filters.append(["status", "in", status])
if finance_book: finance_book_filter = (
filters.append(["finance_book", "=", finance_book]) ["finance_book", "=", finance_book] if finance_book else ["finance_book", "is", "not set"]
else: )
filters.append(["finance_book", "is", "not set"]) filters.append(finance_book_filter)
return frappe.get_all( depreciation_schedules = frappe.get_all(
doctype="Asset Depreciation Schedule", doctype="Asset Depreciation Schedule",
filters=filters, filters=filters,
fields=["name"],
limit=1, limit=1,
) )
return depreciation_schedules[0].name if depreciation_schedules else None
def is_first_day_of_the_month(date): def is_first_day_of_the_month(date):
first_day_of_the_month = get_first_day(date) first_day_of_the_month = get_first_day(date)