Skip to content

Commit

Permalink
Merge pull request #26259 from rohitwaghchaure/fixed-incorrect-valuat…
Browse files Browse the repository at this point in the history
…ion-rate-in-stock-reco

fix: incorrect valuation rate in stock reconciliation
  • Loading branch information
rohitwaghchaure authored Jun 30, 2021
2 parents a287b22 + 46b67b9 commit 713c92e
Show file tree
Hide file tree
Showing 2 changed files with 47 additions and 4 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -404,17 +404,18 @@ def merge_similar_item_serial_nos(self, sl_entries):

key = (d.item_code, d.warehouse)
if key not in merge_similar_entries:
d.total_amount = (d.actual_qty * d.valuation_rate)
merge_similar_entries[key] = d
elif d.serial_no:
data = merge_similar_entries[key]
data.actual_qty += d.actual_qty
data.qty_after_transaction += d.qty_after_transaction

data.valuation_rate = (data.valuation_rate + d.valuation_rate) / data.actual_qty
data.total_amount += (d.actual_qty * d.valuation_rate)
data.valuation_rate = (data.total_amount) / data.actual_qty
data.serial_no += '\n' + d.serial_no

if data.incoming_rate:
data.incoming_rate = (data.incoming_rate + d.incoming_rate) / data.actual_qty
data.incoming_rate = (data.total_amount) / data.actual_qty

for key, value in merge_similar_entries.items():
new_sl_entries.append(value)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@

from __future__ import unicode_literals
import frappe, unittest
from frappe.utils import flt, nowdate, nowtime
from frappe.utils import flt, nowdate, nowtime, random_string
from erpnext.accounts.utils import get_stock_and_account_balance
from erpnext.stock.stock_ledger import get_previous_sle, update_entries_after
from erpnext.stock.doctype.stock_reconciliation.stock_reconciliation import EmptyStockReconciliationItemsError, get_items
Expand Down Expand Up @@ -150,6 +150,42 @@ def test_stock_reco_for_serialized_item(self):
stock_doc = frappe.get_doc("Stock Reconciliation", d)
stock_doc.cancel()


def test_stock_reco_for_merge_serialized_item(self):
to_delete_records = []

# Add new serial nos
serial_item_code = "Stock-Reco-Serial-Item-2"
serial_warehouse = "_Test Warehouse for Stock Reco1 - _TC"

sr = create_stock_reconciliation(item_code=serial_item_code, serial_no=random_string(6),
warehouse = serial_warehouse, qty=1, rate=100, do_not_submit=True, purpose='Opening Stock')

for i in range(3):
sr.append('items', {
'item_code': serial_item_code,
'warehouse': serial_warehouse,
'qty': 1,
'valuation_rate': 100,
'serial_no': random_string(6)
})

sr.save()
sr.submit()

sle_entries = frappe.get_all('Stock Ledger Entry', filters= {'voucher_no': sr.name},
fields = ['name', 'incoming_rate'])

self.assertEqual(len(sle_entries), 1)
self.assertEqual(sle_entries[0].incoming_rate, 100)

to_delete_records.append(sr.name)
to_delete_records.reverse()

for d in to_delete_records:
stock_doc = frappe.get_doc("Stock Reconciliation", d)
stock_doc.cancel()

def test_stock_reco_for_batch_item(self):
to_delete_records = []
to_delete_serial_nos = []
Expand Down Expand Up @@ -231,6 +267,12 @@ def create_batch_or_serial_no_items():
serial_item_doc.serial_no_series = "SRSI.####"
serial_item_doc.save(ignore_permissions=True)

serial_item_doc = create_item("Stock-Reco-Serial-Item-2", is_stock_item=1)
if not serial_item_doc.has_serial_no:
serial_item_doc.has_serial_no = 1
serial_item_doc.serial_no_series = "SRSII.####"
serial_item_doc.save(ignore_permissions=True)

batch_item_doc = create_item("Stock-Reco-batch-Item-1", is_stock_item=1)
if not batch_item_doc.has_batch_no:
batch_item_doc.has_batch_no = 1
Expand Down

0 comments on commit 713c92e

Please sign in to comment.