diff --git a/erpnext/schools/doctype/academic_term/test_records.json b/erpnext/schools/doctype/academic_term/test_records.json index 2d84383b1d..6bd365561f 100644 --- a/erpnext/schools/doctype/academic_term/test_records.json +++ b/erpnext/schools/doctype/academic_term/test_records.json @@ -13,5 +13,15 @@ "doctype": "Academic Term", "academic_year": "2014-2015", "term_name": "_Test Academic Term 2" + }, + { + "doctype": "Academic Term", + "academic_year": "2017-2018", + "term_name": "_Test AT1" + }, + { + "doctype": "Academic Term", + "academic_year": "2017-2018", + "term_name": "_Test AT2" } ] \ No newline at end of file diff --git a/erpnext/schools/doctype/academic_year/test_records.json b/erpnext/schools/doctype/academic_year/test_records.json index dba4f1285d..5eb5e2e360 100644 --- a/erpnext/schools/doctype/academic_year/test_records.json +++ b/erpnext/schools/doctype/academic_year/test_records.json @@ -1,11 +1,18 @@ [ { + "doctype": "Academic Year", "academic_year_name": "2014-2015" }, { + "doctype": "Academic Year", "academic_year_name": "2015-2016" }, { + "doctype": "Academic Year", "academic_year_name": "2016-2017" + }, + { + "doctype": "Academic Year", + "academic_year_name": "2017-2018" } ] \ No newline at end of file diff --git a/erpnext/schools/doctype/fee_category/test_records.json b/erpnext/schools/doctype/fee_category/test_records.json new file mode 100644 index 0000000000..598c1ed75b --- /dev/null +++ b/erpnext/schools/doctype/fee_category/test_records.json @@ -0,0 +1,11 @@ +[ + { + "category_name": "Admission Fee" + }, + { + "category_name": "Tuition Fee" + }, + { + "category_name": "Transportation Fee" + } +] \ No newline at end of file diff --git a/erpnext/schools/doctype/fee_structure/test_records.json b/erpnext/schools/doctype/fee_structure/test_records.json new file mode 100644 index 0000000000..8b7dc1651a --- /dev/null +++ b/erpnext/schools/doctype/fee_structure/test_records.json @@ -0,0 +1,42 @@ +[ + { + "doctype": "Fee Structure", + "academic_year": "2017-2018", + "academic_term": "2017-2018 (_Test AT1)", + "components": [ + { + "fees_category": "Tuition Fee", + "amount": 40000 + }, + { + "fees_category": "Transportation Fee", + "amount": 10000 + } + ], + "total_amount": 50000, + "debit_to": "_Test Receivable - _TC", + "against_income_account": "Sales - _TC", + "cost_center": "_Test Cost Center - _TC", + "company": "_Test Company" + }, + { + "doctype": "Fee Structure", + "academic_year": "2017-2018", + "academic_term": "2017-2018 (_Test AT2)", + "components": [ + { + "fees_category": "Tuition Fee", + "amount": 40000 + }, + { + "fees_category": "Transportation Fee", + "amount": 10000 + } + ], + "total_amount": 50000, + "debit_to": "_Test Receivable - _TC", + "against_income_account": "Sales - _TC", + "cost_center": "_Test Cost Center - _TC", + "company": "_Test Company" + } +] \ No newline at end of file diff --git a/erpnext/schools/doctype/fees/fees.py b/erpnext/schools/doctype/fees/fees.py index c27f818d05..78154e0da0 100644 --- a/erpnext/schools/doctype/fees/fees.py +++ b/erpnext/schools/doctype/fees/fees.py @@ -12,6 +12,8 @@ from frappe.utils.csvutils import getlink from erpnext.accounts.utils import get_account_currency from erpnext.controllers.accounts_controller import AccountsController from erpnext.accounts.doctype.journal_entry.journal_entry import get_default_bank_cash_account +from erpnext.accounts.general_ledger import delete_gl_entries + class Fees(AccountsController): def set_indicator(self): @@ -44,6 +46,10 @@ class Fees(AccountsController): submit_doc=True, use_dummy_message=True) frappe.msgprint(_("Payment request {0} created").format(getlink("Payment Request", pr.name))) + def on_cancel(self): + delete_gl_entries(voucher_type=self.doctype, voucher_no=self.name) + # frappe.db.set(self, 'status', 'Cancelled') + def make_gl_entries(self): if not self.grand_total: diff --git a/erpnext/schools/doctype/fees/test_fees.js b/erpnext/schools/doctype/fees/test_fees.js index 8ec7eecfdd..22e987e8c2 100644 --- a/erpnext/schools/doctype/fees/test_fees.js +++ b/erpnext/schools/doctype/fees/test_fees.js @@ -9,14 +9,22 @@ QUnit.test("test: Fees", function (assert) { assert.expect(1); frappe.run_serially('Fees', [ + // insert a new Fees - () => frappe.tests.make([ - // values to be set - {key: 'value'} - ]), () => { - assert.equal(cur_frm.doc.key, 'value'); + return frappe.tests.make('Fees', [ + {student: 'STUD00001'}, + {due_date: frappe.datetime.get_today()}, + {fee_structure: 'FS00001'} + ]); }, + () => { + assert.equal(cur_frm.doc.grand_total===cur_frm.doc.outstanding_amount); + }, + () => frappe.timeout(0.3), + () => cur_frm.save(), + () => frappe.tests.click_button('Submit'), + () => frappe.tests.click_button('Yes'), () => done() ]); diff --git a/erpnext/schools/doctype/fees/test_fees.py b/erpnext/schools/doctype/fees/test_fees.py index 3ea83ee039..283e17b211 100644 --- a/erpnext/schools/doctype/fees/test_fees.py +++ b/erpnext/schools/doctype/fees/test_fees.py @@ -5,8 +5,49 @@ from __future__ import unicode_literals import frappe import unittest +from frappe.utils import nowdate +from frappe.utils.make_random import get_random + # test_records = frappe.get_test_records('Fees') class TestFees(unittest.TestCase): - pass + + def test_fees(self): + student = get_random("Student") + fee = frappe.new_doc("Fees") + fee.posting_date = nowdate() + fee.due_date = nowdate() + fee.student = student + fee.debit_to = "_Test Receivable - _TC" + fee.against_income_account = "Sales - _TC" + fee.cost_center = "_Test Cost Center - _TC" + fee.company = "_Test Company" + + fee.extend("components", [ + { + "fees_category": "Tuition Fee", + "amount": 40000 + }, + { + "fees_category": "Transportation Fee", + "amount": 10000 + }]) + fee.save() + fee.submit() + + gl_entries = frappe.db.sql(""" + select account, posting_date, party_type, party, cost_center, fiscal_year, voucher_type, + voucher_no, against_voucher_type, against_voucher, cost_center, company, credit, debit + from `tabGL Entry` where voucher_type=%s and voucher_no=%s""", ("Fees", fee.name), as_dict=True) + + if gl_entries[0].account == "_Test Receivable - _TC": + self.assertEquals(gl_entries[0].debit, 50000) + self.assertEquals(gl_entries[0].credit, 0) + self.assertEquals(gl_entries[1].debit, 0) + self.assertEquals(gl_entries[1].credit, 50000) + else: + self.assertEquals(gl_entries[0].credit, 50000) + self.assertEquals(gl_entries[0].debit, 0) + self.assertEquals(gl_entries[1].credit, 0) + self.assertEquals(gl_entries[1].debit, 50000)