diff --git a/erpnext/stock/doctype/stock_reposting_settings/stock_reposting_settings.py b/erpnext/stock/doctype/stock_reposting_settings/stock_reposting_settings.py index 50f39817fff..8b47cd88df6 100644 --- a/erpnext/stock/doctype/stock_reposting_settings/stock_reposting_settings.py +++ b/erpnext/stock/doctype/stock_reposting_settings/stock_reposting_settings.py @@ -84,7 +84,7 @@ def get_reposting_entries(): def get_stock_ledgers(vouchers): return frappe.get_all( "Stock Ledger Entry", - fields=["item_code", "warehouse", "posting_date"], + fields=["item_code", "warehouse", "posting_date", "posting_time", "posting_datetime"], filters={"voucher_no": ("in", vouchers)}, ) diff --git a/erpnext/stock/report/stock_and_account_value_comparison/stock_and_account_value_comparison.py b/erpnext/stock/report/stock_and_account_value_comparison/stock_and_account_value_comparison.py index 67e340d0f70..0db7e40b77f 100644 --- a/erpnext/stock/report/stock_and_account_value_comparison/stock_and_account_value_comparison.py +++ b/erpnext/stock/report/stock_and_account_value_comparison/stock_and_account_value_comparison.py @@ -4,10 +4,11 @@ import frappe from frappe import _ -from frappe.utils import get_link_to_form, parse_json +from frappe.utils import get_datetime, get_link_to_form, parse_json import erpnext from erpnext.accounts.utils import get_currency_precision, get_stock_accounts +from erpnext.stock.doctype.stock_reposting_settings.stock_reposting_settings import get_stock_ledgers from erpnext.stock.doctype.warehouse.warehouse import get_warehouses_based_on_account @@ -141,18 +142,29 @@ def create_reposting_entries(rows, company): rows = parse_json(rows) entries = [] - for row in rows: - row = frappe._dict(row) + item_wh = frappe._dict() + vouchers = [row.get("voucher_no") for row in rows] + sles = get_stock_ledgers(vouchers) + for sle in sles: + key = (sle.item_code, sle.warehouse) + if key not in item_wh: + item_wh[key] = sle + elif get_datetime(item_wh.get(key).posting_datetime) > get_datetime(sle.posting_datetime): + item_wh[key] = sle + + for key, sle in item_wh.items(): + item_code, warehouse = key try: doc = frappe.get_doc( { "doctype": "Repost Item Valuation", - "based_on": "Transaction", + "based_on": "Item and Warehouse", "status": "Queued", - "voucher_type": row.voucher_type, - "voucher_no": row.voucher_no, - "posting_date": row.posting_date, + "item_code": item_code, + "warehouse": warehouse, + "posting_date": sle.posting_date, + "posting_time": sle.posting_time, "company": company, "allow_nagative_stock": 1, }