mirror of
https://github.com/frappe/erpnext.git
synced 2026-06-01 03:09:09 +00:00
refactor: code duplication for fallback rates
This commit is contained in:
committed by
Ankush Menat
parent
982476d684
commit
6d354edb6b
@@ -621,9 +621,7 @@ class update_entries_after(object):
|
|||||||
if not self.wh_data.valuation_rate and sle.voucher_detail_no:
|
if not self.wh_data.valuation_rate and sle.voucher_detail_no:
|
||||||
allow_zero_rate = self.check_if_allow_zero_valuation_rate(sle.voucher_type, sle.voucher_detail_no)
|
allow_zero_rate = self.check_if_allow_zero_valuation_rate(sle.voucher_type, sle.voucher_detail_no)
|
||||||
if not allow_zero_rate:
|
if not allow_zero_rate:
|
||||||
self.wh_data.valuation_rate = get_valuation_rate(sle.item_code, sle.warehouse,
|
self.wh_data.valuation_rate = self.get_fallback_rate(sle)
|
||||||
sle.voucher_type, sle.voucher_no, self.allow_zero_rate,
|
|
||||||
currency=erpnext.get_company_currency(sle.company), company=sle.company)
|
|
||||||
|
|
||||||
def get_incoming_value_for_serial_nos(self, sle, serial_nos):
|
def get_incoming_value_for_serial_nos(self, sle, serial_nos):
|
||||||
# get rate from serial nos within same company
|
# get rate from serial nos within same company
|
||||||
@@ -689,9 +687,7 @@ class update_entries_after(object):
|
|||||||
if not self.wh_data.valuation_rate and sle.voucher_detail_no:
|
if not self.wh_data.valuation_rate and sle.voucher_detail_no:
|
||||||
allow_zero_valuation_rate = self.check_if_allow_zero_valuation_rate(sle.voucher_type, sle.voucher_detail_no)
|
allow_zero_valuation_rate = self.check_if_allow_zero_valuation_rate(sle.voucher_type, sle.voucher_detail_no)
|
||||||
if not allow_zero_valuation_rate:
|
if not allow_zero_valuation_rate:
|
||||||
self.wh_data.valuation_rate = get_valuation_rate(sle.item_code, sle.warehouse,
|
self.wh_data.valuation_rate = self.get_fallback_rate(sle)
|
||||||
sle.voucher_type, sle.voucher_no, self.allow_zero_rate,
|
|
||||||
currency=erpnext.get_company_currency(sle.company), company=sle.company)
|
|
||||||
|
|
||||||
def get_fifo_values(self, sle):
|
def get_fifo_values(self, sle):
|
||||||
incoming_rate = flt(sle.incoming_rate)
|
incoming_rate = flt(sle.incoming_rate)
|
||||||
@@ -722,9 +718,7 @@ class update_entries_after(object):
|
|||||||
# Get valuation rate from last sle if exists or from valuation rate field in item master
|
# Get valuation rate from last sle if exists or from valuation rate field in item master
|
||||||
allow_zero_valuation_rate = self.check_if_allow_zero_valuation_rate(sle.voucher_type, sle.voucher_detail_no)
|
allow_zero_valuation_rate = self.check_if_allow_zero_valuation_rate(sle.voucher_type, sle.voucher_detail_no)
|
||||||
if not allow_zero_valuation_rate:
|
if not allow_zero_valuation_rate:
|
||||||
_rate = get_valuation_rate(sle.item_code, sle.warehouse,
|
_rate = self.get_fallback_rate(sle)
|
||||||
sle.voucher_type, sle.voucher_no, self.allow_zero_rate,
|
|
||||||
currency=erpnext.get_company_currency(sle.company), company=sle.company)
|
|
||||||
else:
|
else:
|
||||||
_rate = 0
|
_rate = 0
|
||||||
|
|
||||||
@@ -787,6 +781,13 @@ class update_entries_after(object):
|
|||||||
else:
|
else:
|
||||||
return 0
|
return 0
|
||||||
|
|
||||||
|
def get_fallback_rate(self, sle) -> float:
|
||||||
|
"""When exact incoming rate isn't available use any of other "average" rates as fallback.
|
||||||
|
This should only get used for negative stock."""
|
||||||
|
return get_valuation_rate(sle.item_code, sle.warehouse,
|
||||||
|
sle.voucher_type, sle.voucher_no, self.allow_zero_rate,
|
||||||
|
currency=erpnext.get_company_currency(sle.company), company=sle.company)
|
||||||
|
|
||||||
def get_sle_before_datetime(self, args):
|
def get_sle_before_datetime(self, args):
|
||||||
"""get previous stock ledger entry before current time-bucket"""
|
"""get previous stock ledger entry before current time-bucket"""
|
||||||
sle = get_stock_ledger_entries(args, "<", "desc", "limit 1", for_update=False)
|
sle = get_stock_ledger_entries(args, "<", "desc", "limit 1", for_update=False)
|
||||||
|
|||||||
Reference in New Issue
Block a user