From 72949e7f7387f0db3d39bd20a5749065d7f4ee4b Mon Sep 17 00:00:00 2001 From: Rucha Mahabal Date: Fri, 13 Sep 2019 11:05:40 +0530 Subject: [PATCH] fix: share transfer validations for journal entry (#19018) * fix share transfer validations for journal entry * fix: share transfer test * fix: tests --- .../doctype/share_transfer/share_transfer.py | 6 + .../share_transfer/test_share_transfer.py | 158 ++++++++++-------- 2 files changed, 90 insertions(+), 74 deletions(-) diff --git a/erpnext/accounts/doctype/share_transfer/share_transfer.py b/erpnext/accounts/doctype/share_transfer/share_transfer.py index 1a1f036278..e95c69413f 100644 --- a/erpnext/accounts/doctype/share_transfer/share_transfer.py +++ b/erpnext/accounts/doctype/share_transfer/share_transfer.py @@ -86,17 +86,23 @@ class ShareTransfer(Document): frappe.throw(_('The field From Shareholder cannot be blank')) if self.from_folio_no is None or self.from_folio_no is '': self.to_folio_no = self.autoname_folio(self.to_shareholder) + if self.asset_account is None: + frappe.throw(_('The field Asset Account cannot be blank')) elif (self.transfer_type == 'Issue'): self.from_shareholder = '' if self.to_shareholder is None or self.to_shareholder == '': frappe.throw(_('The field To Shareholder cannot be blank')) if self.to_folio_no is None or self.to_folio_no is '': self.to_folio_no = self.autoname_folio(self.to_shareholder) + if self.asset_account is None: + frappe.throw(_('The field Asset Account cannot be blank')) else: if self.from_shareholder is None or self.to_shareholder is None: frappe.throw(_('The fields From Shareholder and To Shareholder cannot be blank')) if self.to_folio_no is None or self.to_folio_no is '': self.to_folio_no = self.autoname_folio(self.to_shareholder) + if self.equity_or_liability_account is None: + frappe.throw(_('The field Equity/Liability Account cannot be blank')) if self.from_shareholder == self.to_shareholder: frappe.throw(_('The seller and the buyer cannot be the same')) if self.no_of_shares != self.to_no - self.from_no + 1: diff --git a/erpnext/accounts/doctype/share_transfer/test_share_transfer.py b/erpnext/accounts/doctype/share_transfer/test_share_transfer.py index f1cf31b820..910dfd05da 100644 --- a/erpnext/accounts/doctype/share_transfer/test_share_transfer.py +++ b/erpnext/accounts/doctype/share_transfer/test_share_transfer.py @@ -15,67 +15,74 @@ class TestShareTransfer(unittest.TestCase): frappe.db.sql("delete from `tabShare Balance`") share_transfers = [ { - "doctype" : "Share Transfer", - "transfer_type" : "Issue", - "date" : "2018-01-01", - "to_shareholder" : "SH-00001", - "share_type" : "Equity", - "from_no" : 1, - "to_no" : 500, - "no_of_shares" : 500, - "rate" : 10, - "company" : "_Test Company" + "doctype" : "Share Transfer", + "transfer_type" : "Issue", + "date" : "2018-01-01", + "to_shareholder" : "SH-00001", + "share_type" : "Equity", + "from_no" : 1, + "to_no" : 500, + "no_of_shares" : 500, + "rate" : 10, + "company" : "_Test Company", + "asset_account" : "Cash - _TC", + "equity_or_liability_account": "Creditors - _TC" }, { - "doctype" : "Share Transfer", - "transfer_type" : "Transfer", - "date" : "2018-01-02", - "from_shareholder" : "SH-00001", - "to_shareholder" : "SH-00002", - "share_type" : "Equity", - "from_no" : 101, - "to_no" : 200, - "no_of_shares" : 100, - "rate" : 15, - "company" : "_Test Company" + "doctype" : "Share Transfer", + "transfer_type" : "Transfer", + "date" : "2018-01-02", + "from_shareholder" : "SH-00001", + "to_shareholder" : "SH-00002", + "share_type" : "Equity", + "from_no" : 101, + "to_no" : 200, + "no_of_shares" : 100, + "rate" : 15, + "company" : "_Test Company", + "equity_or_liability_account": "Creditors - _TC" }, { - "doctype" : "Share Transfer", - "transfer_type" : "Transfer", - "date" : "2018-01-03", - "from_shareholder" : "SH-00001", - "to_shareholder" : "SH-00003", - "share_type" : "Equity", - "from_no" : 201, - "to_no" : 500, - "no_of_shares" : 300, - "rate" : 20, - "company" : "_Test Company" + "doctype" : "Share Transfer", + "transfer_type" : "Transfer", + "date" : "2018-01-03", + "from_shareholder" : "SH-00001", + "to_shareholder" : "SH-00003", + "share_type" : "Equity", + "from_no" : 201, + "to_no" : 500, + "no_of_shares" : 300, + "rate" : 20, + "company" : "_Test Company", + "equity_or_liability_account": "Creditors - _TC" }, { - "doctype" : "Share Transfer", - "transfer_type" : "Transfer", - "date" : "2018-01-04", - "from_shareholder" : "SH-00003", - "to_shareholder" : "SH-00002", - "share_type" : "Equity", - "from_no" : 201, - "to_no" : 400, - "no_of_shares" : 200, - "rate" : 15, - "company" : "_Test Company" + "doctype" : "Share Transfer", + "transfer_type" : "Transfer", + "date" : "2018-01-04", + "from_shareholder" : "SH-00003", + "to_shareholder" : "SH-00002", + "share_type" : "Equity", + "from_no" : 201, + "to_no" : 400, + "no_of_shares" : 200, + "rate" : 15, + "company" : "_Test Company", + "equity_or_liability_account": "Creditors - _TC" }, { - "doctype" : "Share Transfer", - "transfer_type" : "Purchase", - "date" : "2018-01-05", - "from_shareholder" : "SH-00003", - "share_type" : "Equity", - "from_no" : 401, - "to_no" : 500, - "no_of_shares" : 100, - "rate" : 25, - "company" : "_Test Company" + "doctype" : "Share Transfer", + "transfer_type" : "Purchase", + "date" : "2018-01-05", + "from_shareholder" : "SH-00003", + "share_type" : "Equity", + "from_no" : 401, + "to_no" : 500, + "no_of_shares" : 100, + "rate" : 25, + "company" : "_Test Company", + "asset_account" : "Cash - _TC", + "equity_or_liability_account": "Creditors - _TC" } ] for d in share_transfers: @@ -84,30 +91,33 @@ class TestShareTransfer(unittest.TestCase): def test_invalid_share_transfer(self): doc = frappe.get_doc({ - "doctype" : "Share Transfer", - "transfer_type" : "Transfer", - "date" : "2018-01-05", - "from_shareholder" : "SH-00003", - "to_shareholder" : "SH-00002", - "share_type" : "Equity", - "from_no" : 1, - "to_no" : 100, - "no_of_shares" : 100, - "rate" : 15, - "company" : "_Test Company" + "doctype" : "Share Transfer", + "transfer_type" : "Transfer", + "date" : "2018-01-05", + "from_shareholder" : "SH-00003", + "to_shareholder" : "SH-00002", + "share_type" : "Equity", + "from_no" : 1, + "to_no" : 100, + "no_of_shares" : 100, + "rate" : 15, + "company" : "_Test Company", + "equity_or_liability_account": "Creditors - _TC" }) self.assertRaises(ShareDontExists, doc.insert) doc = frappe.get_doc({ - "doctype" : "Share Transfer", - "transfer_type" : "Purchase", - "date" : "2018-01-02", - "from_shareholder" : "SH-00001", - "share_type" : "Equity", - "from_no" : 1, - "to_no" : 200, - "no_of_shares" : 200, - "rate" : 15, - "company" : "_Test Company" + "doctype" : "Share Transfer", + "transfer_type" : "Purchase", + "date" : "2018-01-02", + "from_shareholder" : "SH-00001", + "share_type" : "Equity", + "from_no" : 1, + "to_no" : 200, + "no_of_shares" : 200, + "rate" : 15, + "company" : "_Test Company", + "asset_account" : "Cash - _TC", + "equity_or_liability_account": "Creditors - _TC" }) self.assertRaises(ShareDontExists, doc.insert)