mirror of
https://github.com/frappe/erpnext.git
synced 2026-08-14 15:11:52 +00:00
fix: do not fetch a random inventory account when multiple inventory accounts exist (backport #57626) (#57632)
* fix: do not fetch a random inventory account when multiple inventory accounts exist (#57626)
(cherry picked from commit 386a4ac1f0)
# Conflicts:
# erpnext/accounts/doctype/sales_invoice/test_sales_invoice.py
* chore: fix conflicts
Remove redundant inter-company transaction tests and related setup.
---------
Co-authored-by: rohitwaghchaure <rohitw1991@gmail.com>
This commit is contained in:
@@ -79,10 +79,13 @@ def get_warehouse_account(warehouse, warehouse_account=None):
|
|||||||
account = get_company_default_inventory_account(warehouse.company)
|
account = get_company_default_inventory_account(warehouse.company)
|
||||||
|
|
||||||
if not account and warehouse.company:
|
if not account and warehouse.company:
|
||||||
account = frappe.db.get_value(
|
inventory_accounts = frappe.get_all(
|
||||||
"Account", {"account_type": "Stock", "is_group": 0, "company": warehouse.company}, "name"
|
"Account", {"account_type": "Stock", "is_group": 0, "company": warehouse.company}, pluck="name"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
if len(inventory_accounts) == 1:
|
||||||
|
account = inventory_accounts[0]
|
||||||
|
|
||||||
if not account and warehouse.company and not warehouse.is_group:
|
if not account and warehouse.company and not warehouse.is_group:
|
||||||
frappe.throw(
|
frappe.throw(
|
||||||
_("Please set Account in Warehouse {0} or Default Inventory Account in Company {1}").format(
|
_("Please set Account in Warehouse {0} or Default Inventory Account in Company {1}").format(
|
||||||
|
|||||||
@@ -199,8 +199,10 @@ class TestLandedCostVoucher(ERPNextTestSuite):
|
|||||||
|
|
||||||
epi = is_perpetual_inventory_enabled(company_a)
|
epi = is_perpetual_inventory_enabled(company_a)
|
||||||
company_doc = frappe.get_doc("Company", company_a)
|
company_doc = frappe.get_doc("Company", company_a)
|
||||||
|
old_inventory_account = company_doc.default_inventory_account
|
||||||
company_doc.enable_perpetual_inventory = 1
|
company_doc.enable_perpetual_inventory = 1
|
||||||
company_doc.stock_received_but_not_billed = srbnb
|
company_doc.stock_received_but_not_billed = srbnb
|
||||||
|
company_doc.default_inventory_account = "Stock In Hand - _TC"
|
||||||
company_doc.save()
|
company_doc.save()
|
||||||
|
|
||||||
pr = make_purchase_receipt(
|
pr = make_purchase_receipt(
|
||||||
@@ -228,7 +230,11 @@ class TestLandedCostVoucher(ERPNextTestSuite):
|
|||||||
distribute_landed_cost_on_items(lcv)
|
distribute_landed_cost_on_items(lcv)
|
||||||
lcv.submit()
|
lcv.submit()
|
||||||
|
|
||||||
frappe.db.set_value("Company", company_a, "enable_perpetual_inventory", epi)
|
frappe.db.set_value(
|
||||||
|
"Company",
|
||||||
|
company_a,
|
||||||
|
{"enable_perpetual_inventory": epi, "default_inventory_account": old_inventory_account},
|
||||||
|
)
|
||||||
frappe.local.enable_perpetual_inventory = {}
|
frappe.local.enable_perpetual_inventory = {}
|
||||||
|
|
||||||
def test_landed_cost_voucher_for_zero_purchase_rate(self):
|
def test_landed_cost_voucher_for_zero_purchase_rate(self):
|
||||||
|
|||||||
@@ -3134,11 +3134,14 @@ class TestPurchaseReceipt(ERPNextTestSuite):
|
|||||||
|
|
||||||
old_perpetual_inventory = erpnext.is_perpetual_inventory_enabled("_Test Company")
|
old_perpetual_inventory = erpnext.is_perpetual_inventory_enabled("_Test Company")
|
||||||
frappe.local.enable_perpetual_inventory["_Test Company"] = 1
|
frappe.local.enable_perpetual_inventory["_Test Company"] = 1
|
||||||
|
old_inventory_account = frappe.db.get_value("Company", "_Test Company", "default_inventory_account")
|
||||||
frappe.db.set_value(
|
frappe.db.set_value(
|
||||||
"Company",
|
"Company",
|
||||||
"_Test Company",
|
"_Test Company",
|
||||||
"stock_received_but_not_billed",
|
{
|
||||||
"Stock Received But Not Billed - _TC",
|
"stock_received_but_not_billed": "Stock Received But Not Billed - _TC",
|
||||||
|
"default_inventory_account": "Stock In Hand - _TC",
|
||||||
|
},
|
||||||
)
|
)
|
||||||
|
|
||||||
pr = make_purchase_receipt(qty=10, rate=1000, do_not_submit=1)
|
pr = make_purchase_receipt(qty=10, rate=1000, do_not_submit=1)
|
||||||
@@ -3174,6 +3177,7 @@ class TestPurchaseReceipt(ERPNextTestSuite):
|
|||||||
)
|
)
|
||||||
self.assertCountEqual(expected_gle, gl_entries)
|
self.assertCountEqual(expected_gle, gl_entries)
|
||||||
frappe.local.enable_perpetual_inventory["_Test Company"] = old_perpetual_inventory
|
frappe.local.enable_perpetual_inventory["_Test Company"] = old_perpetual_inventory
|
||||||
|
frappe.db.set_value("Company", "_Test Company", "default_inventory_account", old_inventory_account)
|
||||||
|
|
||||||
def test_purchase_receipt_with_use_serial_batch_field_for_rejected_qty(self):
|
def test_purchase_receipt_with_use_serial_batch_field_for_rejected_qty(self):
|
||||||
batch_item = make_item(
|
batch_item = make_item(
|
||||||
|
|||||||
@@ -95,6 +95,44 @@ class TestWarehouse(ERPNextTestSuite):
|
|||||||
children = get_children("Warehouse", parent=company, company=company, is_root=True)
|
children = get_children("Warehouse", parent=company, company=company, is_root=True)
|
||||||
self.assertTrue(any(wh["value"] == "_Test Warehouse - _TC" for wh in children))
|
self.assertTrue(any(wh["value"] == "_Test Warehouse - _TC" for wh in children))
|
||||||
|
|
||||||
|
def test_inventory_account_fallback_with_multiple_stock_accounts(self):
|
||||||
|
from erpnext.stock import get_warehouse_account
|
||||||
|
|
||||||
|
company = create_inventory_fallback_company()
|
||||||
|
frappe.db.set_value("Company", company, "default_inventory_account", None)
|
||||||
|
if frappe.db.exists("Account", "Extra Inventory Account - _TCIF"):
|
||||||
|
frappe.delete_doc("Account", "Extra Inventory Account - _TCIF")
|
||||||
|
|
||||||
|
warehouse = frappe.get_doc("Warehouse", {"company": company, "is_group": 0})
|
||||||
|
single_account = frappe.db.get_value(
|
||||||
|
"Account", {"account_type": "Stock", "is_group": 0, "company": company}, "name"
|
||||||
|
)
|
||||||
|
self.assertEqual(get_warehouse_account(warehouse), single_account)
|
||||||
|
|
||||||
|
create_account(
|
||||||
|
account_name="Extra Inventory Account",
|
||||||
|
parent_account=frappe.db.get_value("Account", single_account, "parent_account"),
|
||||||
|
account_type="Stock",
|
||||||
|
company=company,
|
||||||
|
)
|
||||||
|
self.assertRaises(frappe.ValidationError, get_warehouse_account, warehouse)
|
||||||
|
|
||||||
|
|
||||||
|
def create_inventory_fallback_company():
|
||||||
|
company = "_Test Company Inventory Fallback"
|
||||||
|
if not frappe.db.exists("Company", company):
|
||||||
|
frappe.get_doc(
|
||||||
|
{
|
||||||
|
"doctype": "Company",
|
||||||
|
"company_name": company,
|
||||||
|
"abbr": "_TCIF",
|
||||||
|
"default_currency": "INR",
|
||||||
|
"enable_perpetual_inventory": 0,
|
||||||
|
"country": "India",
|
||||||
|
}
|
||||||
|
).insert(ignore_permissions=True)
|
||||||
|
return company
|
||||||
|
|
||||||
|
|
||||||
def create_warehouse(warehouse_name, properties=None, company=None):
|
def create_warehouse(warehouse_name, properties=None, company=None):
|
||||||
if not company:
|
if not company:
|
||||||
|
|||||||
Reference in New Issue
Block a user