diff --git a/erpnext/stock/doctype/purchase_receipt/test_purchase_receipt.py b/erpnext/stock/doctype/purchase_receipt/test_purchase_receipt.py index 0d244da1fdc2..d4f85b1aa7ef 100644 --- a/erpnext/stock/doctype/purchase_receipt/test_purchase_receipt.py +++ b/erpnext/stock/doctype/purchase_receipt/test_purchase_receipt.py @@ -3,7 +3,7 @@ import frappe from frappe.tests.utils import FrappeTestCase, change_settings -from frappe.utils import add_days, cint, cstr, flt, today, nowtime +from frappe.utils import add_days, cint, cstr, flt, nowtime, today from pypika import functions as fn import erpnext diff --git a/erpnext/stock/stock_ledger.py b/erpnext/stock/stock_ledger.py index c09a30d22c95..a642a1ff7ed8 100644 --- a/erpnext/stock/stock_ledger.py +++ b/erpnext/stock/stock_ledger.py @@ -1398,18 +1398,21 @@ def get_valuation_rate( ) # Get valuation rate from last sle for the same item and warehouse - if last_valuation_rate := frappe.db.sql( - """select valuation_rate - from `tabStock Ledger Entry` force index (item_warehouse) - where - item_code = %s - AND warehouse = %s - AND valuation_rate >= 0 - AND is_cancelled = 0 - AND NOT (voucher_no = %s AND voucher_type = %s) - order by posting_datetime desc, name desc limit 1""", - (item_code, warehouse, voucher_no, voucher_type), - ): + if not last_valuation_rate or last_valuation_rate[0][0] is None: + last_valuation_rate = frappe.db.sql( + """select valuation_rate + from `tabStock Ledger Entry` force index (item_warehouse) + where + item_code = %s + AND warehouse = %s + AND valuation_rate >= 0 + AND is_cancelled = 0 + AND NOT (voucher_no = %s AND voucher_type = %s) + order by posting_datetime desc, name desc limit 1""", + (item_code, warehouse, voucher_no, voucher_type), + ) + + if last_valuation_rate: return flt(last_valuation_rate[0][0]) # If negative stock allowed, and item delivered without any incoming entry,