mirror of
https://github.com/frappe/erpnext.git
synced 2026-05-25 07:54:46 +00:00
test: validate return invoice profit and profit percentage
This commit is contained in:
@@ -470,7 +470,7 @@ class TestGrossProfit(IntegrationTestCase):
|
|||||||
"selling_amount": -100.0,
|
"selling_amount": -100.0,
|
||||||
"buying_amount": 0.0,
|
"buying_amount": 0.0,
|
||||||
"gross_profit": -100.0,
|
"gross_profit": -100.0,
|
||||||
"gross_profit_%": 100.0,
|
"gross_profit_%": -100.0,
|
||||||
}
|
}
|
||||||
gp_entry = [x for x in data if x.parent_invoice == sinv.name]
|
gp_entry = [x for x in data if x.parent_invoice == sinv.name]
|
||||||
report_output = {k: v for k, v in gp_entry[0].items() if k in expected_entry}
|
report_output = {k: v for k, v in gp_entry[0].items() if k in expected_entry}
|
||||||
@@ -649,21 +649,24 @@ class TestGrossProfit(IntegrationTestCase):
|
|||||||
def test_profit_for_later_period_return(self):
|
def test_profit_for_later_period_return(self):
|
||||||
month_start_date, month_end_date = get_first_day(nowdate()), get_last_day(nowdate())
|
month_start_date, month_end_date = get_first_day(nowdate()), get_last_day(nowdate())
|
||||||
|
|
||||||
|
sales_inv_date = month_start_date
|
||||||
|
return_inv_date = add_days(month_end_date, 1)
|
||||||
|
|
||||||
# create sales invoice on month start date
|
# create sales invoice on month start date
|
||||||
sinv = self.create_sales_invoice(qty=1, rate=100, do_not_save=True, do_not_submit=True)
|
sinv = self.create_sales_invoice(qty=1, rate=100, do_not_save=True, do_not_submit=True)
|
||||||
sinv.set_posting_time = 1
|
sinv.set_posting_time = 1
|
||||||
sinv.posting_date = month_start_date
|
sinv.posting_date = sales_inv_date
|
||||||
sinv.save().submit()
|
sinv.save().submit()
|
||||||
|
|
||||||
# create credit note on next month start date
|
# create credit note on next month start date
|
||||||
cr_note = make_sales_return(sinv.name)
|
cr_note = make_sales_return(sinv.name)
|
||||||
cr_note.set_posting_time = 1
|
cr_note.set_posting_time = 1
|
||||||
cr_note.posting_date = add_days(month_end_date, 1)
|
cr_note.posting_date = return_inv_date
|
||||||
cr_note.save().submit()
|
cr_note.save().submit()
|
||||||
|
|
||||||
# apply filters for invoiced period
|
# apply filters for invoiced period
|
||||||
filters = frappe._dict(
|
filters = frappe._dict(
|
||||||
company=self.company, from_date=month_start_date, to_date=month_end_date, group_by="Invoice"
|
company=self.company, from_date=month_start_date, to_date=month_start_date, group_by="Invoice"
|
||||||
)
|
)
|
||||||
|
|
||||||
_, data = execute(filters=filters)
|
_, data = execute(filters=filters)
|
||||||
@@ -675,7 +678,7 @@ class TestGrossProfit(IntegrationTestCase):
|
|||||||
self.assertEqual(total.get("gross_profit_%"), 100.0)
|
self.assertEqual(total.get("gross_profit_%"), 100.0)
|
||||||
|
|
||||||
# extend filters upto returned period
|
# extend filters upto returned period
|
||||||
filters.update(to_date=add_days(month_end_date, 1))
|
filters.update({"to_date": return_inv_date})
|
||||||
|
|
||||||
_, data = execute(filters=filters)
|
_, data = execute(filters=filters)
|
||||||
total = data[-1]
|
total = data[-1]
|
||||||
@@ -684,3 +687,13 @@ class TestGrossProfit(IntegrationTestCase):
|
|||||||
self.assertEqual(total.buying_amount, 0.0)
|
self.assertEqual(total.buying_amount, 0.0)
|
||||||
self.assertEqual(total.gross_profit, 0.0)
|
self.assertEqual(total.gross_profit, 0.0)
|
||||||
self.assertEqual(total.get("gross_profit_%"), 0.0)
|
self.assertEqual(total.get("gross_profit_%"), 0.0)
|
||||||
|
|
||||||
|
# apply filters only on returned period
|
||||||
|
filters.update({"from_date": return_inv_date, "to_date": return_inv_date})
|
||||||
|
_, data = execute(filters=filters)
|
||||||
|
total = data[-1]
|
||||||
|
|
||||||
|
self.assertEqual(total.selling_amount, -100.0)
|
||||||
|
self.assertEqual(total.buying_amount, 0.0)
|
||||||
|
self.assertEqual(total.gross_profit, -100.0)
|
||||||
|
self.assertEqual(total.get("gross_profit_%"), -100.0)
|
||||||
|
|||||||
Reference in New Issue
Block a user