fix: expense account should be fetched from related asset category
This commit is contained in:
@@ -1738,12 +1738,12 @@ def create_asset(**args):
|
|||||||
return asset
|
return asset
|
||||||
|
|
||||||
|
|
||||||
def create_asset_category():
|
def create_asset_category(enable_cwip=1):
|
||||||
asset_category = frappe.new_doc("Asset Category")
|
asset_category = frappe.new_doc("Asset Category")
|
||||||
asset_category.asset_category_name = "Computers"
|
asset_category.asset_category_name = "Computers"
|
||||||
asset_category.total_number_of_depreciations = 3
|
asset_category.total_number_of_depreciations = 3
|
||||||
asset_category.frequency_of_depreciation = 3
|
asset_category.frequency_of_depreciation = 3
|
||||||
asset_category.enable_cwip_accounting = 1
|
asset_category.enable_cwip_accounting = enable_cwip
|
||||||
asset_category.append(
|
asset_category.append(
|
||||||
"accounts",
|
"accounts",
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -778,6 +778,9 @@ class AccountsController(TransactionBase):
|
|||||||
# reset pricing rule fields if pricing_rule_removed
|
# reset pricing rule fields if pricing_rule_removed
|
||||||
item.set(fieldname, value)
|
item.set(fieldname, value)
|
||||||
|
|
||||||
|
elif fieldname == "expense_account" and not item.get("expense_account"):
|
||||||
|
item.expense_account = value
|
||||||
|
|
||||||
if self.doctype in ["Purchase Invoice", "Sales Invoice"] and item.meta.get_field(
|
if self.doctype in ["Purchase Invoice", "Sales Invoice"] and item.meta.get_field(
|
||||||
"is_fixed_asset"
|
"is_fixed_asset"
|
||||||
):
|
):
|
||||||
|
|||||||
@@ -712,6 +712,7 @@ class BuyingController(SubcontractingController):
|
|||||||
def auto_make_assets(self, asset_items):
|
def auto_make_assets(self, asset_items):
|
||||||
items_data = get_asset_item_details(asset_items)
|
items_data = get_asset_item_details(asset_items)
|
||||||
messages = []
|
messages = []
|
||||||
|
alert = False
|
||||||
|
|
||||||
for d in self.items:
|
for d in self.items:
|
||||||
if d.is_fixed_asset:
|
if d.is_fixed_asset:
|
||||||
@@ -761,9 +762,10 @@ class BuyingController(SubcontractingController):
|
|||||||
frappe.bold(d.item_code)
|
frappe.bold(d.item_code)
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
alert = True
|
||||||
|
|
||||||
for message in messages:
|
for message in messages:
|
||||||
frappe.msgprint(message, title="Success", indicator="green")
|
frappe.msgprint(message, title="Success", indicator="green", alert=alert)
|
||||||
|
|
||||||
def make_asset(self, row, is_grouped_asset=False):
|
def make_asset(self, row, is_grouped_asset=False):
|
||||||
if not row.asset_location:
|
if not row.asset_location:
|
||||||
|
|||||||
@@ -156,6 +156,33 @@ class TestItem(FrappeTestCase):
|
|||||||
for key, value in to_check.items():
|
for key, value in to_check.items():
|
||||||
self.assertEqual(value, details.get(key), key)
|
self.assertEqual(value, details.get(key), key)
|
||||||
|
|
||||||
|
def test_get_asset_item_details(self):
|
||||||
|
from erpnext.assets.doctype.asset.test_asset import create_asset_category, create_fixed_asset_item
|
||||||
|
|
||||||
|
create_asset_category(0)
|
||||||
|
create_fixed_asset_item()
|
||||||
|
|
||||||
|
details = get_item_details(
|
||||||
|
{
|
||||||
|
"item_code": "Macbook Pro",
|
||||||
|
"company": "_Test Company",
|
||||||
|
"currency": "INR",
|
||||||
|
"doctype": "Purchase Receipt",
|
||||||
|
}
|
||||||
|
)
|
||||||
|
self.assertEqual(details.get("expense_account"), "_Test Fixed Asset - _TC")
|
||||||
|
|
||||||
|
frappe.db.set_value("Asset Category", "Computers", "enable_cwip_accounting", "1")
|
||||||
|
details = get_item_details(
|
||||||
|
{
|
||||||
|
"item_code": "Macbook Pro",
|
||||||
|
"company": "_Test Company",
|
||||||
|
"currency": "INR",
|
||||||
|
"doctype": "Purchase Receipt",
|
||||||
|
}
|
||||||
|
)
|
||||||
|
self.assertEqual(details.get("expense_account"), "CWIP Account - _TC")
|
||||||
|
|
||||||
def test_item_tax_template(self):
|
def test_item_tax_template(self):
|
||||||
expected_item_tax_template = [
|
expected_item_tax_template = [
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -671,19 +671,8 @@ class PurchaseReceipt(BuyingController):
|
|||||||
else self.get_company_default("stock_received_but_not_billed")
|
else self.get_company_default("stock_received_but_not_billed")
|
||||||
)
|
)
|
||||||
landed_cost_entries = get_item_account_wise_additional_cost(self.name)
|
landed_cost_entries = get_item_account_wise_additional_cost(self.name)
|
||||||
|
|
||||||
if d.is_fixed_asset:
|
if d.is_fixed_asset:
|
||||||
if is_cwip_accounting_enabled(d.asset_category):
|
stock_asset_account_name = d.expense_account
|
||||||
stock_asset_account_name = get_asset_account(
|
|
||||||
"capital_work_in_progress_account",
|
|
||||||
asset_category=d.asset_category,
|
|
||||||
company=self.company,
|
|
||||||
)
|
|
||||||
else:
|
|
||||||
stock_asset_account_name = get_asset_category_account(
|
|
||||||
"fixed_asset_account", asset_category=d.asset_category, company=self.company
|
|
||||||
)
|
|
||||||
|
|
||||||
stock_value_diff = (
|
stock_value_diff = (
|
||||||
flt(d.base_net_amount) + flt(d.item_tax_amount) + flt(d.landed_cost_voucher_amount)
|
flt(d.base_net_amount) + flt(d.item_tax_amount) + flt(d.landed_cost_voucher_amount)
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -74,7 +74,6 @@ def get_item_details(args, doc=None, for_validate=False, overwrite_warehouse=Tru
|
|||||||
args["bill_date"] = doc.get("bill_date")
|
args["bill_date"] = doc.get("bill_date")
|
||||||
|
|
||||||
out = get_basic_details(args, item, overwrite_warehouse)
|
out = get_basic_details(args, item, overwrite_warehouse)
|
||||||
|
|
||||||
get_item_tax_template(args, item, out)
|
get_item_tax_template(args, item, out)
|
||||||
out["item_tax_rate"] = get_item_tax_map(
|
out["item_tax_rate"] = get_item_tax_map(
|
||||||
args.company,
|
args.company,
|
||||||
@@ -293,7 +292,21 @@ def get_basic_details(args, item, overwrite_warehouse=True):
|
|||||||
|
|
||||||
expense_account = None
|
expense_account = None
|
||||||
|
|
||||||
if args.get("doctype") == "Purchase Invoice" and item.is_fixed_asset:
|
if item.is_fixed_asset:
|
||||||
|
from erpnext.assets.doctype.asset.asset import get_asset_account, is_cwip_accounting_enabled
|
||||||
|
|
||||||
|
if is_cwip_accounting_enabled(item.asset_category):
|
||||||
|
expense_account = get_asset_account(
|
||||||
|
"capital_work_in_progress_account",
|
||||||
|
asset_category=item.asset_category,
|
||||||
|
company=args.company,
|
||||||
|
)
|
||||||
|
elif (
|
||||||
|
args.get("doctype") == "Purchase Invoice"
|
||||||
|
or args.get("doctype") == "Purchase Receipt"
|
||||||
|
or args.get("doctype") == "Purchase Order"
|
||||||
|
or args.get("doctype") == "Material Request"
|
||||||
|
):
|
||||||
from erpnext.assets.doctype.asset_category.asset_category import get_asset_category_account
|
from erpnext.assets.doctype.asset_category.asset_category import get_asset_category_account
|
||||||
|
|
||||||
expense_account = get_asset_category_account(
|
expense_account = get_asset_category_account(
|
||||||
|
|||||||
Reference in New Issue
Block a user