feat(gp): test for inv and dn related via so
This commit is contained in:
parent
ef90e24931
commit
1f6ab86a65
@ -302,3 +302,79 @@ class TestGrossProfit(FrappeTestCase):
|
|||||||
|
|
||||||
columns, data = execute(filters=filters)
|
columns, data = execute(filters=filters)
|
||||||
self.assertGreater(len(data), 0)
|
self.assertGreater(len(data), 0)
|
||||||
|
|
||||||
|
def test_order_connected_dn_and_inv(self):
|
||||||
|
from erpnext.selling.doctype.sales_order.test_sales_order import make_sales_order
|
||||||
|
"""
|
||||||
|
Test gp calculation when invoice and delivery note aren't directly connected.
|
||||||
|
SO -- INV
|
||||||
|
|
|
||||||
|
DN
|
||||||
|
"""
|
||||||
|
se = make_stock_entry(
|
||||||
|
company=self.company,
|
||||||
|
item_code=self.item,
|
||||||
|
target=self.warehouse,
|
||||||
|
qty=3,
|
||||||
|
basic_rate=100,
|
||||||
|
do_not_submit=True,
|
||||||
|
)
|
||||||
|
item = se.items[0]
|
||||||
|
se.append(
|
||||||
|
"items",
|
||||||
|
{
|
||||||
|
"item_code": item.item_code,
|
||||||
|
"s_warehouse": item.s_warehouse,
|
||||||
|
"t_warehouse": item.t_warehouse,
|
||||||
|
"qty": 10,
|
||||||
|
"basic_rate": 200,
|
||||||
|
"conversion_factor": item.conversion_factor or 1.0,
|
||||||
|
"transfer_qty": flt(item.qty) * (flt(item.conversion_factor) or 1.0),
|
||||||
|
"serial_no": item.serial_no,
|
||||||
|
"batch_no": item.batch_no,
|
||||||
|
"cost_center": item.cost_center,
|
||||||
|
"expense_account": item.expense_account,
|
||||||
|
},
|
||||||
|
)
|
||||||
|
se = se.save().submit()
|
||||||
|
|
||||||
|
so = make_sales_order(
|
||||||
|
customer=self.customer,
|
||||||
|
company=self.company,
|
||||||
|
warehouse=self.warehouse,
|
||||||
|
item=self.item,
|
||||||
|
qty=4,
|
||||||
|
do_not_save=False,
|
||||||
|
do_not_submit=False,
|
||||||
|
)
|
||||||
|
|
||||||
|
from erpnext.selling.doctype.sales_order.sales_order import make_delivery_note, make_sales_invoice
|
||||||
|
make_delivery_note(so.name).submit()
|
||||||
|
sinv = make_sales_invoice(so.name).submit()
|
||||||
|
|
||||||
|
filters = frappe._dict(
|
||||||
|
company=self.company, from_date=nowdate(), to_date=nowdate(), group_by="Invoice"
|
||||||
|
)
|
||||||
|
|
||||||
|
columns, data = execute(filters=filters)
|
||||||
|
|
||||||
|
# Without Delivery Note, buying rate should be 150
|
||||||
|
expected_entry = {
|
||||||
|
"parent_invoice": sinv.name,
|
||||||
|
"currency": "INR",
|
||||||
|
"sales_invoice": self.item,
|
||||||
|
"customer": self.customer,
|
||||||
|
"posting_date": frappe.utils.datetime.date.fromisoformat(nowdate()),
|
||||||
|
"item_code": self.item,
|
||||||
|
"item_name": self.item,
|
||||||
|
"warehouse": "Stores - _GP",
|
||||||
|
"qty": 4.0,
|
||||||
|
"avg._selling_rate": 100.0,
|
||||||
|
"valuation_rate": 125.0,
|
||||||
|
"selling_amount": 400.0,
|
||||||
|
"buying_amount": 500.0,
|
||||||
|
"gross_profit": -100.0,
|
||||||
|
"gross_profit_%": -25.0,
|
||||||
|
}
|
||||||
|
gp_entry = [x for x in data if x.parent_invoice == sinv.name]
|
||||||
|
self.assertDictContainsSubset(expected_entry, gp_entry[0])
|
Loading…
x
Reference in New Issue
Block a user