mirror of
https://github.com/frappe/erpnext.git
synced 2026-08-07 11:43:04 +00:00
fix: guard against None row in get_stock_balance_for (backport #57567)
get_stock_balance_for() takes row=None by default, but the batch-tracked branch dereferenced it unconditionally while the two neighbouring row accesses already guard. Calling it with a batch_no and no row raised AttributeError: 'NoneType' object has no attribute 'use_serial_batch_fields'. semgrep's missing-argument-type-hint rule matches the whole function body, so touching any line inside it re-fingerprints the pre-existing untyped arguments and reports them as introduced by this PR. Silenced with nosemgrep instead of annotating: on a whitelisted method the hints are enforced at runtime by pydantic, which is not a risk worth taking on v15.
This commit is contained in:
@@ -1292,6 +1292,7 @@ def get_row_stock_value_difference(voucher_type: str, voucher_no: str, voucher_d
|
||||
return flt(result[0][0]) if result and result[0][0] else 0.0
|
||||
|
||||
|
||||
# nosemgrep: missing-argument-type-hint
|
||||
@frappe.whitelist()
|
||||
def get_stock_balance_for(
|
||||
item_code: str,
|
||||
@@ -1364,7 +1365,7 @@ def get_stock_balance_for(
|
||||
or 0
|
||||
)
|
||||
|
||||
if row.use_serial_batch_fields and row.batch_no and (qty or row.current_qty):
|
||||
if row and row.use_serial_batch_fields and row.batch_no and (qty or row.current_qty):
|
||||
rate = get_incoming_rate(
|
||||
frappe._dict(
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user