Merge pull request #33488 from deepeshgarg007/multi_currency_bank_reco

fix: Multi-currency issues in Bank Reconciliation Tool
diff --git a/erpnext/hooks.py b/erpnext/hooks.py
index 7d72c76..fd19d25 100644
--- a/erpnext/hooks.py
+++ b/erpnext/hooks.py
@@ -420,7 +420,6 @@
 		"erpnext.loan_management.doctype.process_loan_security_shortfall.process_loan_security_shortfall.create_process_loan_security_shortfall",
 		"erpnext.loan_management.doctype.process_loan_interest_accrual.process_loan_interest_accrual.process_loan_interest_accrual_for_term_loans",
 		"erpnext.crm.utils.open_leads_opportunities_based_on_todays_event",
-		"erpnext.stock.doctype.stock_entry.stock_entry.audit_incorrect_valuation_entries",
 	],
 	"monthly_long": [
 		"erpnext.accounts.deferred_revenue.process_deferred_accounting",
diff --git a/erpnext/selling/doctype/quotation_item/quotation_item.json b/erpnext/selling/doctype/quotation_item/quotation_item.json
index 31a9589..ca7dfd2 100644
--- a/erpnext/selling/doctype/quotation_item/quotation_item.json
+++ b/erpnext/selling/doctype/quotation_item/quotation_item.json
@@ -90,7 +90,6 @@
    "oldfieldtype": "Link",
    "options": "Item",
    "print_width": "150px",
-   "reqd": 1,
    "search_index": 1,
    "width": "150px"
   },
@@ -649,7 +648,7 @@
  "idx": 1,
  "istable": 1,
  "links": [],
- "modified": "2021-07-15 12:40:51.074820",
+ "modified": "2022-12-25 02:49:53.926625",
  "modified_by": "Administrator",
  "module": "Selling",
  "name": "Quotation Item",
diff --git a/erpnext/selling/doctype/sales_order_item/sales_order_item.json b/erpnext/selling/doctype/sales_order_item/sales_order_item.json
index b801de3..d0dabad 100644
--- a/erpnext/selling/doctype/sales_order_item/sales_order_item.json
+++ b/erpnext/selling/doctype/sales_order_item/sales_order_item.json
@@ -114,7 +114,6 @@
    "oldfieldtype": "Link",
    "options": "Item",
    "print_width": "150px",
-   "reqd": 1,
    "width": "150px"
   },
   {
@@ -865,7 +864,7 @@
  "idx": 1,
  "istable": 1,
  "links": [],
- "modified": "2022-11-18 11:39:01.741665",
+ "modified": "2022-12-25 02:51:10.247569",
  "modified_by": "Administrator",
  "module": "Selling",
  "name": "Sales Order Item",
diff --git a/erpnext/stock/doctype/stock_entry/stock_entry.py b/erpnext/stock/doctype/stock_entry/stock_entry.py
index a047a9b..d401f81 100644
--- a/erpnext/stock/doctype/stock_entry/stock_entry.py
+++ b/erpnext/stock/doctype/stock_entry/stock_entry.py
@@ -4,24 +4,12 @@
 
 import json
 from collections import defaultdict
-from typing import Dict
 
 import frappe
 from frappe import _
 from frappe.model.mapper import get_mapped_doc
 from frappe.query_builder.functions import Sum
-from frappe.utils import (
-	add_days,
-	cint,
-	comma_or,
-	cstr,
-	flt,
-	format_time,
-	formatdate,
-	getdate,
-	nowdate,
-	today,
-)
+from frappe.utils import cint, comma_or, cstr, flt, format_time, formatdate, getdate, nowdate
 
 import erpnext
 from erpnext.accounts.general_ledger import process_gl_map
@@ -2712,62 +2700,3 @@
 		)
 		.orderby(stock_entry.creation, stock_entry_detail.item_code, stock_entry_detail.idx)
 	).run(as_dict=1)
-
-
-def audit_incorrect_valuation_entries():
-	# Audit of stock transfer entries having incorrect valuation
-	from erpnext.controllers.stock_controller import create_repost_item_valuation_entry
-
-	stock_entries = get_incorrect_stock_entries()
-
-	for stock_entry, values in stock_entries.items():
-		reposting_data = frappe._dict(
-			{
-				"posting_date": values.posting_date,
-				"posting_time": values.posting_time,
-				"voucher_type": "Stock Entry",
-				"voucher_no": stock_entry,
-				"company": values.company,
-			}
-		)
-
-		create_repost_item_valuation_entry(reposting_data)
-
-
-def get_incorrect_stock_entries() -> Dict:
-	stock_entry = frappe.qb.DocType("Stock Entry")
-	stock_ledger_entry = frappe.qb.DocType("Stock Ledger Entry")
-	transfer_purposes = [
-		"Material Transfer",
-		"Material Transfer for Manufacture",
-		"Send to Subcontractor",
-	]
-
-	query = (
-		frappe.qb.from_(stock_entry)
-		.inner_join(stock_ledger_entry)
-		.on(stock_entry.name == stock_ledger_entry.voucher_no)
-		.select(
-			stock_entry.name,
-			stock_entry.company,
-			stock_entry.posting_date,
-			stock_entry.posting_time,
-			Sum(stock_ledger_entry.stock_value_difference).as_("stock_value"),
-		)
-		.where(
-			(stock_entry.docstatus == 1)
-			& (stock_entry.purpose.isin(transfer_purposes))
-			& (stock_ledger_entry.modified > add_days(today(), -2))
-		)
-		.groupby(stock_ledger_entry.voucher_detail_no)
-		.having(Sum(stock_ledger_entry.stock_value_difference) != 0)
-	)
-
-	data = query.run(as_dict=True)
-	stock_entries = {}
-
-	for row in data:
-		if abs(row.stock_value) > 0.1 and row.name not in stock_entries:
-			stock_entries.setdefault(row.name, row)
-
-	return stock_entries
diff --git a/erpnext/stock/doctype/stock_entry/test_stock_entry.py b/erpnext/stock/doctype/stock_entry/test_stock_entry.py
index 680d209..b574b71 100644
--- a/erpnext/stock/doctype/stock_entry/test_stock_entry.py
+++ b/erpnext/stock/doctype/stock_entry/test_stock_entry.py
@@ -5,7 +5,7 @@
 import frappe
 from frappe.permissions import add_user_permission, remove_user_permission
 from frappe.tests.utils import FrappeTestCase, change_settings
-from frappe.utils import add_days, flt, now, nowdate, nowtime, today
+from frappe.utils import add_days, flt, nowdate, nowtime, today
 
 from erpnext.accounts.doctype.account.test_account import get_inventory_account
 from erpnext.stock.doctype.item.test_item import (
@@ -17,8 +17,6 @@
 from erpnext.stock.doctype.serial_no.serial_no import *  # noqa
 from erpnext.stock.doctype.stock_entry.stock_entry import (
 	FinishedGoodError,
-	audit_incorrect_valuation_entries,
-	get_incorrect_stock_entries,
 	move_sample_to_retention_warehouse,
 )
 from erpnext.stock.doctype.stock_entry.stock_entry_utils import make_stock_entry
@@ -1616,44 +1614,6 @@
 
 		self.assertRaises(BatchExpiredError, se.save)
 
-	def test_audit_incorrect_stock_entries(self):
-		item_code = "Test Incorrect Valuation Rate Item - 001"
-		create_item(item_code=item_code, is_stock_item=1)
-
-		make_stock_entry(
-			item_code=item_code,
-			purpose="Material Receipt",
-			posting_date=add_days(nowdate(), -10),
-			qty=2,
-			rate=500,
-			to_warehouse="_Test Warehouse - _TC",
-		)
-
-		transfer_entry = make_stock_entry(
-			item_code=item_code,
-			purpose="Material Transfer",
-			qty=2,
-			rate=500,
-			from_warehouse="_Test Warehouse - _TC",
-			to_warehouse="_Test Warehouse 1 - _TC",
-		)
-
-		sle_name = frappe.db.get_value(
-			"Stock Ledger Entry", {"voucher_no": transfer_entry.name, "actual_qty": (">", 0)}, "name"
-		)
-
-		frappe.db.set_value(
-			"Stock Ledger Entry", sle_name, {"modified": add_days(now(), -1), "stock_value_difference": 10}
-		)
-
-		stock_entries = get_incorrect_stock_entries()
-		self.assertTrue(transfer_entry.name in stock_entries)
-
-		audit_incorrect_valuation_entries()
-
-		stock_entries = get_incorrect_stock_entries()
-		self.assertFalse(transfer_entry.name in stock_entries)
-
 
 def make_serialized_item(**args):
 	args = frappe._dict(args)