Incoming rate for sales return
diff --git a/erpnext/stock/doctype/stock_entry/stock_entry.py b/erpnext/stock/doctype/stock_entry/stock_entry.py
index 38c7521..0321dcf 100644
--- a/erpnext/stock/doctype/stock_entry/stock_entry.py
+++ b/erpnext/stock/doctype/stock_entry/stock_entry.py
@@ -239,29 +239,24 @@
def get_incoming_rate(self, args):
incoming_rate = 0
- if self.purpose == "Sales Return" and \
- (self.delivery_note_no or self.sales_invoice_no):
- sle = frappe.db.sql("""select name, posting_date, posting_time,
- actual_qty, stock_value, warehouse from `tabStock Ledger Entry`
- where voucher_type = %s and voucher_no = %s and
- item_code = %s limit 1""",
- ((self.delivery_note_no and "Delivery Note" or "Sales Invoice"),
- self.delivery_note_no or self.sales_invoice_no, args.item_code), as_dict=1)
- if sle:
- args.update({
- "posting_date": sle[0].posting_date,
- "posting_time": sle[0].posting_time,
- "sle": sle[0].name,
- "warehouse": sle[0].warehouse,
- })
- previous_sle = get_previous_sle(args)
- incoming_rate = (flt(sle[0].stock_value) - flt(previous_sle.get("stock_value"))) / \
- flt(sle[0].actual_qty)
+ if self.purpose == "Sales Return":
+ incoming_rate = self.get_incoming_rate_for_sales_return(args)
else:
incoming_rate = get_incoming_rate(args)
return incoming_rate
+ def get_incoming_rate_for_sales_return(self, args):
+ incoming_rate = 0.0
+ if self.delivery_note_no or self.sales_invoice_no:
+ incoming_rate = frappe.db.sql("""select abs(ifnull(stock_value_difference, 0) / actual_qty)
+ from `tabStock Ledger Entry`
+ where voucher_type = %s and voucher_no = %s and item_code = %s limit 1""",
+ ((self.delivery_note_no and "Delivery Note" or "Sales Invoice"),
+ self.delivery_note_no or self.sales_invoice_no, args.item_code))[0][0]
+
+ return incoming_rate
+
def validate_incoming_rate(self):
for d in self.get('mtn_details'):
if d.t_warehouse: