test(membership): add test for invoicing and validation
This commit is contained in:
parent
286ec04197
commit
c04321e645
@ -86,6 +86,20 @@ class Membership(Document):
|
|||||||
invoice = make_invoice(self, member, plan, settings)
|
invoice = make_invoice(self, member, plan, settings)
|
||||||
self.invoice = invoice.name
|
self.invoice = invoice.name
|
||||||
|
|
||||||
|
if with_payment_entry:
|
||||||
|
if not settings.payment_account:
|
||||||
|
frappe.throw(_("You need to set <b>Payment Account</b> in Membership Settings"))
|
||||||
|
|
||||||
|
from erpnext.accounts.doctype.payment_entry.payment_entry import get_payment_entry
|
||||||
|
frappe.flags.ignore_account_permission=True
|
||||||
|
pe = get_payment_entry(dt='Sales Invoice', dn=invoice.name, bank_amount=invoice.grand_total)
|
||||||
|
frappe.flags.ignore_account_permission=False
|
||||||
|
pe.paid_to = settings.payment_account
|
||||||
|
pe.reference_no = self.name
|
||||||
|
pe.reference_date = getdate()
|
||||||
|
pe.save(ignore_permissions=True)
|
||||||
|
pe.submit()
|
||||||
|
|
||||||
if save:
|
if save:
|
||||||
self.save()
|
self.save()
|
||||||
|
|
||||||
@ -97,7 +111,7 @@ class Membership(Document):
|
|||||||
frappe.throw(_("You need to enable <b>Send Acknowledge Email</b> in Membership Settings"))
|
frappe.throw(_("You need to enable <b>Send Acknowledge Email</b> in Membership Settings"))
|
||||||
|
|
||||||
member = frappe.get_doc("Member", self.member)
|
member = frappe.get_doc("Member", self.member)
|
||||||
|
|
||||||
if not member.email_id:
|
if not member.email_id:
|
||||||
frappe.throw(_("Email address of member {0} is missing").format(frappe.utils.get_link_to_form("Member", self.member)))
|
frappe.throw(_("Email address of member {0} is missing").format(frappe.utils.get_link_to_form("Member", self.member)))
|
||||||
|
|
||||||
|
|||||||
@ -3,7 +3,10 @@
|
|||||||
# See license.txt
|
# See license.txt
|
||||||
from __future__ import unicode_literals
|
from __future__ import unicode_literals
|
||||||
import unittest
|
import unittest
|
||||||
|
import frappe
|
||||||
|
import erpnext
|
||||||
from erpnext.non_profit.doctype.member.member import create_member
|
from erpnext.non_profit.doctype.member.member import create_member
|
||||||
|
from frappe.utils import nowdate, getdate, add_months
|
||||||
from erpnext.stock.doctype.item.test_item import create_item
|
from erpnext.stock.doctype.item.test_item import create_item
|
||||||
|
|
||||||
class TestMembership(unittest.TestCase):
|
class TestMembership(unittest.TestCase):
|
||||||
@ -21,15 +24,16 @@ class TestMembership(unittest.TestCase):
|
|||||||
settings.enable_invoicing = 1
|
settings.enable_invoicing = 1
|
||||||
settings.make_payment_entry = 1
|
settings.make_payment_entry = 1
|
||||||
settings.company = company.name
|
settings.company = company.name
|
||||||
settings.payment_to = company.default_cash_account
|
settings.payment_account = company.default_cash_account
|
||||||
settings.debit_account = company.default_receivable_account
|
settings.debit_account = company.default_receivable_account
|
||||||
settings.save()
|
settings.save()
|
||||||
|
|
||||||
# make test plan
|
# make test plan
|
||||||
plan = frappe.new_doc("Membership Type")
|
plan = frappe.new_doc("Membership Type")
|
||||||
|
plan.membership_type = "_rzpy_test_milythm"
|
||||||
plan.amount = 100
|
plan.amount = 100
|
||||||
plan.razorpay_plan_id = "_rzpy_test_milythm"
|
plan.razorpay_plan_id = "_rzpy_test_milythm"
|
||||||
plan.linked_item = create_item("_Test Item for Non Profit Membership")
|
plan.linked_item = create_item("_Test Item for Non Profit Membership").name
|
||||||
plan.insert()
|
plan.insert()
|
||||||
|
|
||||||
# make test member
|
# make test member
|
||||||
@ -38,15 +42,71 @@ class TestMembership(unittest.TestCase):
|
|||||||
'email': "_test_member_erpnext@example.com",
|
'email': "_test_member_erpnext@example.com",
|
||||||
'plan_id': plan.name
|
'plan_id': plan.name
|
||||||
}))
|
}))
|
||||||
|
self.member_doc.make_customer_and_link()
|
||||||
|
self.member = "self.member_doc.name"
|
||||||
|
|
||||||
def test_auto_generate_invoice_and_payment_entry(self):
|
def test_auto_generate_invoice_and_payment_entry(self):
|
||||||
pass
|
entry = make_membership(self.member)
|
||||||
|
|
||||||
def test_renew within_30_days(self):
|
# Naive test to see if at all invoice was generated and attached to member
|
||||||
pass
|
# In any case if details were missing, the invoicing would throw an error
|
||||||
|
invoice = entry.generate_invoice(save=True)
|
||||||
|
self.assertEqual(invoice.name, entry.invoice)
|
||||||
|
# entry.delete()
|
||||||
|
|
||||||
def test_from_to_dates(self):
|
# # Remove customer
|
||||||
pass
|
# old_customer = self.member_doc.customer
|
||||||
|
# self.member_doc.customer = None
|
||||||
|
# self.member_doc.save()
|
||||||
|
|
||||||
def test_razorpay_webook(self):
|
# entry = make_membership(self.member)
|
||||||
pass
|
# self.assertRaises(frappe.ValidationError, entry.generate_invoice)
|
||||||
|
|
||||||
|
# # Add customer value back
|
||||||
|
# self.member_doc.customer = old_customer
|
||||||
|
# self.member_doc.save()
|
||||||
|
|
||||||
|
# # Remove company
|
||||||
|
# set_config(company, None)
|
||||||
|
# self.assertRaises(frappe.ValidationError, entry.generate_invoice)
|
||||||
|
|
||||||
|
def test_renew_within_30_days(self):
|
||||||
|
# create a membership for two months
|
||||||
|
# Should work fine
|
||||||
|
make_membership(self.member, { "from_date": nowdate() })
|
||||||
|
make_membership(self.member, { "from_date": add_months(nowdate(), 1) })
|
||||||
|
|
||||||
|
from frappe.utils.user import add_role
|
||||||
|
add_role("test@example.com", "Non Profit Manager")
|
||||||
|
frappe.set_user("test@example.com")
|
||||||
|
|
||||||
|
# create next membership with expiry not within 30 days
|
||||||
|
self.assertRaises(frappe.ValidationError, make_membership, self.member, {
|
||||||
|
"from_date": add_months(nowdate(), 2),
|
||||||
|
})
|
||||||
|
|
||||||
|
frappe.set_user("Administrator")
|
||||||
|
# create the same membership but as administrator
|
||||||
|
new_entry = make_membership(self.member, {
|
||||||
|
"from_date": add_months(nowdate(), 2),
|
||||||
|
"to_date": add_months(nowdate(), 3),
|
||||||
|
})
|
||||||
|
|
||||||
|
def set_config(key, value):
|
||||||
|
frappe.db.set_value("Membership Settings", None, key, value)
|
||||||
|
|
||||||
|
def make_membership(member, payload={}):
|
||||||
|
data = {
|
||||||
|
"doctype": "Membership",
|
||||||
|
"member": member,
|
||||||
|
"membership_status": "Current",
|
||||||
|
"membership_type": "_rzpy_test_milythm",
|
||||||
|
"currency": "INR",
|
||||||
|
"paid": 1,
|
||||||
|
"from_date": nowdate(),
|
||||||
|
"amount": 100
|
||||||
|
}
|
||||||
|
data.update(payload)
|
||||||
|
membership = frappe.get_doc(data)
|
||||||
|
membership.insert(ignore_permissions=True, ignore_if_duplicate=True)
|
||||||
|
return membership
|
||||||
Loading…
x
Reference in New Issue
Block a user