mirror of
https://github.com/frappe/erpnext.git
synced 2026-09-17 02:26:33 +00:00
Merge pull request #56542 from frappe/chore/test-cogs-by-item-group
test: COGS By Item Group report coverage
This commit is contained in:
@@ -0,0 +1,57 @@
|
|||||||
|
# Copyright (c) 2026, Frappe Technologies Pvt. Ltd. and Contributors
|
||||||
|
# See license.txt
|
||||||
|
|
||||||
|
import frappe
|
||||||
|
|
||||||
|
from erpnext.accounts.doctype.sales_invoice.test_sales_invoice import create_sales_invoice
|
||||||
|
from erpnext.stock.doctype.stock_entry.stock_entry_utils import make_stock_entry
|
||||||
|
from erpnext.stock.report.cogs_by_item_group.cogs_by_item_group import execute
|
||||||
|
from erpnext.tests.utils import ERPNextTestSuite
|
||||||
|
|
||||||
|
|
||||||
|
class TestCogsByItemGroup(ERPNextTestSuite):
|
||||||
|
def run_report(self, **extra) -> list:
|
||||||
|
filters = frappe._dict(
|
||||||
|
company="_Test Company with perpetual inventory",
|
||||||
|
from_date="2026-01-01",
|
||||||
|
to_date="2026-12-31",
|
||||||
|
)
|
||||||
|
filters.update(extra)
|
||||||
|
return execute(filters)[1]
|
||||||
|
|
||||||
|
def test_cogs_for_item_group(self):
|
||||||
|
# Reuse the bootstrap item `_Test Item` (item group `_Test Item Group`).
|
||||||
|
# It has zero stock in `Stores - TCP1`, so this receipt starts from a clean balance.
|
||||||
|
item = "_Test Item"
|
||||||
|
|
||||||
|
make_stock_entry(
|
||||||
|
item_code=item,
|
||||||
|
to_warehouse="Stores - TCP1",
|
||||||
|
qty=10,
|
||||||
|
rate=100,
|
||||||
|
company="_Test Company with perpetual inventory",
|
||||||
|
posting_date="2026-06-01",
|
||||||
|
)
|
||||||
|
|
||||||
|
# A Sales Invoice with update_stock delivers the goods and books the COGS
|
||||||
|
# against the company's default expense account, which the report keys on.
|
||||||
|
create_sales_invoice(
|
||||||
|
item_code=item,
|
||||||
|
qty=4,
|
||||||
|
rate=150,
|
||||||
|
warehouse="Stores - TCP1",
|
||||||
|
company="_Test Company with perpetual inventory",
|
||||||
|
update_stock=1,
|
||||||
|
cost_center="Main - TCP1",
|
||||||
|
parent_cost_center="Main - TCP1",
|
||||||
|
debit_to="Debtors - TCP1",
|
||||||
|
income_account="Sales - TCP1",
|
||||||
|
expense_account="Cost of Goods Sold - TCP1",
|
||||||
|
posting_date="2026-06-02",
|
||||||
|
)
|
||||||
|
|
||||||
|
data = self.run_report()
|
||||||
|
rows = [row for row in data if "_Test Item Group" in row.get("item_group")]
|
||||||
|
self.assertTrue(rows, "No row found for _Test Item Group")
|
||||||
|
# 4 units delivered at 100 valuation rate -> 400 COGS.
|
||||||
|
self.assertEqual(rows[0].get("cogs_debit"), 400)
|
||||||
Reference in New Issue
Block a user