mirror of
https://github.com/frappe/erpnext.git
synced 2026-10-29 22:57:42 +00:00
test(accounts): cover overlapping share issue ranges
(cherry picked from commit 6dbbbdfcea)
This commit is contained in:
@@ -122,6 +122,67 @@ class TestShareTransfer(FrappeTestCase):
|
||||
doc.cancel()
|
||||
self.assertEqual(doc.docstatus, 2)
|
||||
|
||||
def test_issue_rejects_overlapping_share_ranges(self):
|
||||
issue = frappe.get_doc(
|
||||
{
|
||||
"doctype": "Share Transfer",
|
||||
"transfer_type": "Issue",
|
||||
"date": "2018-01-06",
|
||||
"to_shareholder": "SH-00001",
|
||||
"share_type": "Equity",
|
||||
"from_no": 600,
|
||||
"to_no": 700,
|
||||
"no_of_shares": 101,
|
||||
"rate": 10,
|
||||
"company": "_Test Company",
|
||||
"asset_account": "Cash - _TC",
|
||||
"equity_or_liability_account": "Creditors - _TC",
|
||||
}
|
||||
).submit()
|
||||
|
||||
for from_no, to_no in (
|
||||
(550, 750),
|
||||
(550, 650),
|
||||
(650, 750),
|
||||
(625, 675),
|
||||
(600, 700),
|
||||
(550, 600),
|
||||
(700, 750),
|
||||
):
|
||||
with self.subTest(from_no=from_no, to_no=to_no):
|
||||
duplicate = frappe.copy_doc(issue)
|
||||
duplicate.update(
|
||||
{
|
||||
"to_shareholder": "SH-00002",
|
||||
"to_folio_no": frappe.db.get_value("Shareholder", "SH-00002", "folio_no"),
|
||||
"from_no": from_no,
|
||||
"to_no": to_no,
|
||||
"no_of_shares": to_no - from_no + 1,
|
||||
"amount": 0,
|
||||
}
|
||||
)
|
||||
with self.assertRaisesRegex(frappe.DuplicateEntryError, "The shares already exist"):
|
||||
duplicate.submit()
|
||||
|
||||
self.assertEqual(
|
||||
[(row.from_no, row.to_no) for row in issue.get_company_shareholder().share_balance],
|
||||
[(1, 400), (600, 700)],
|
||||
)
|
||||
self.assertEqual(
|
||||
[(row.from_no, row.to_no) for row in frappe.get_doc("Shareholder", "SH-00002").share_balance],
|
||||
[(101, 200), (201, 400)],
|
||||
)
|
||||
|
||||
for from_no, to_no in ((550, 599), (701, 750)):
|
||||
with self.subTest(from_no=from_no, to_no=to_no):
|
||||
adjacent = frappe.copy_doc(issue)
|
||||
adjacent.update(
|
||||
{"from_no": from_no, "to_no": to_no, "no_of_shares": to_no - from_no + 1, "amount": 0}
|
||||
)
|
||||
adjacent.submit()
|
||||
self.assertEqual(adjacent.docstatus, 1)
|
||||
adjacent.cancel()
|
||||
|
||||
def test_shareholders_stay_protected_after_buyback(self):
|
||||
for shareholder, from_no, to_no in (
|
||||
("SH-00001", 1, 100),
|
||||
|
||||
Reference in New Issue
Block a user