Example #1
0
	def test_loan_repayment_salary_slip(self):
		from erpnext.hr.doctype.loan.test_loan import create_loan_type, create_loan
		applicant = make_employee("*****@*****.**")
		create_loan_type("Car Loan", 500000, 6.4)
		loan = create_loan(applicant, "Car Loan", 11000, "Repay Over Number of Periods", 20)
		loan.repay_from_salary = 1
		loan.submit()
		ss = make_employee_salary_slip("*****@*****.**", "Monthly")
		ss.submit()
		self.assertEqual(ss.total_loan_repayment, 582)
		self.assertEqual(ss.net_pay, (flt(ss.gross_pay) - (flt(ss.total_deduction) + flt(ss.total_loan_repayment))))
Example #2
0
	def test_loan_repayment_salary_slip(self):
		from erpnext.hr.doctype.loan.test_loan import create_loan_type, create_loan
		applicant = make_employee("*****@*****.**")
		create_loan_type("Car Loan", 500000, 6.4)
		loan = create_loan(applicant, "Car Loan", 11000, "Repay Over Number of Periods", 20)
		loan.repay_from_salary = 1
		loan.submit()
		ss = make_employee_salary_slip("*****@*****.**", "Monthly")
		ss.submit()
		self.assertEqual(ss.total_loan_repayment, 582)
		self.assertEqual(ss.net_pay, (flt(ss.gross_pay) - (flt(ss.total_deduction) + flt(ss.total_loan_repayment))))
Example #3
0
    def test_loan(self):

        branch = "Test Employee Branch"
        applicant = make_employee("*****@*****.**")
        company = erpnext.get_default_company()
        holiday_list = make_holiday("test holiday for loan")

        company_doc = frappe.get_doc('Company', company)
        if not company_doc.default_payroll_payable_account:
            company_doc.default_payroll_payable_account = frappe.db.get_value(
                'Account', {
                    'company': company,
                    'root_type': 'Liability',
                    'account_type': ''
                }, 'name')
            company_doc.save()

        if not frappe.db.exists('Branch', branch):
            frappe.get_doc({'doctype': 'Branch', 'branch': branch}).insert()

        employee_doc = frappe.get_doc('Employee', applicant)
        employee_doc.branch = branch
        employee_doc.holiday_list = holiday_list
        employee_doc.save()

        loan = create_loan(applicant, "Personal Loan", 280000,
                           "Repay Over Number of Periods", 20)
        loan.repay_from_salary = 1
        loan.submit()
        salary_structure = "Test Salary Structure for Loan"
        make_salary_structure(salary_structure, "Monthly", employee_doc.name)

        dates = get_start_end_dates('Monthly', nowdate())
        make_payroll_entry(start_date=dates.start_date,
                           end_date=dates.end_date,
                           branch=branch)

        name = frappe.db.get_value('Salary Slip', {
            'posting_date': nowdate(),
            'employee': applicant
        }, 'name')

        salary_slip = frappe.get_doc('Salary Slip', name)
        for row in salary_slip.loans:
            if row.loan == loan.name:
                interest_amount = (280000 * 8.4) / (12 * 100)
                principal_amount = loan.monthly_repayment_amount - interest_amount
                self.assertEqual(row.interest_amount, interest_amount)
                self.assertEqual(row.principal_amount, principal_amount)
                self.assertEqual(row.total_payment,
                                 interest_amount + principal_amount)

        if salary_slip.docstatus == 0:
            frappe.delete_doc('Salary Slip', name)
	def test_loan(self):

		branch = "Test Employee Branch"
		applicant = make_employee("*****@*****.**")
		company = erpnext.get_default_company()
		holiday_list = make_holiday("test holiday for loan")

		company_doc = frappe.get_doc('Company', company)
		if not company_doc.default_payroll_payable_account:
			company_doc.default_payroll_payable_account = frappe.db.get_value('Account',
				{'company': company, 'root_type': 'Liability', 'account_type': ''}, 'name')
			company_doc.save()

		if not frappe.db.exists('Branch', branch):
			frappe.get_doc({
				'doctype': 'Branch',
				'branch': branch
			}).insert()

		employee_doc = frappe.get_doc('Employee', applicant)
		employee_doc.branch = branch
		employee_doc.holiday_list = holiday_list
		employee_doc.save()

		loan = create_loan(applicant,
			"Personal Loan", 280000, "Repay Over Number of Periods", 20)
		loan.repay_from_salary = 1
		loan.submit()
		salary_structure = "Test Salary Structure for Loan"
		make_salary_structure(salary_structure, "Monthly", employee_doc.name)

		dates = get_start_end_dates('Monthly', nowdate())
		make_payroll_entry(start_date=dates.start_date,
			end_date=dates.end_date, branch=branch)

		name = frappe.db.get_value('Salary Slip',
			{'posting_date': nowdate(), 'employee': applicant}, 'name')

		salary_slip = frappe.get_doc('Salary Slip', name)
		for row in salary_slip.loans:
			if row.loan == loan.name:
				interest_amount = (280000 * 8.4)/(12*100)
				principal_amount = loan.monthly_repayment_amount - interest_amount
				self.assertEqual(row.interest_amount, interest_amount)
				self.assertEqual(row.principal_amount, principal_amount)
				self.assertEqual(row.total_payment,
					interest_amount + principal_amount)

		if salary_slip.docstatus == 0:
			frappe.delete_doc('Salary Slip', name)
Example #5
0
    def test_loan(self):
        from erpnext.hr.doctype.salary_structure.test_salary_structure import (
            make_employee, make_salary_structure)
        from erpnext.hr.doctype.loan.test_loan import create_loan

        branch = "Test Employee Branch"
        applicant = make_employee("*****@*****.**")
        company = erpnext.get_default_company()
        holiday_list = make_holiday("test holiday for loan")

        if not frappe.db.exists('Salary Component', 'Basic Salary'):
            frappe.get_doc({
                'doctype':
                'Salary Component',
                'salary_component':
                'Basic Salary',
                'salary_component_abbr':
                'BS',
                'type':
                'Earning',
                'accounts': [{
                    'company':
                    company,
                    'default_account':
                    frappe.db.get_value(
                        'Account', {
                            'company': company,
                            'root_type': 'Expense',
                            'account_type': ''
                        }, 'name')
                }]
            }).insert()

        if not frappe.db.get_value('Salary Component Account', {
                'parent': 'Basic Salary',
                'company': company
        }):
            salary_component = frappe.get_doc('Salary Component',
                                              'Basic Salary')
            salary_component.append(
                'accounts', {
                    'company':
                    company,
                    'default_account':
                    "Salary - " +
                    frappe.db.get_value('Company', company, 'abbr')
                })

        company_doc = frappe.get_doc('Company', company)
        if not company_doc.default_payroll_payable_account:
            company_doc.default_payroll_payable_account = frappe.db.get_value(
                'Account', {
                    'company': company,
                    'root_type': 'Liability',
                    'account_type': ''
                }, 'name')
            company_doc.save()

        if not frappe.db.exists('Branch', branch):
            frappe.get_doc({'doctype': 'Branch', 'branch': branch}).insert()

        employee_doc = frappe.get_doc('Employee', applicant)
        employee_doc.branch = branch
        employee_doc.holiday_list = holiday_list
        employee_doc.save()

        loan = create_loan(applicant, "Personal Loan", 280000,
                           "Repay Over Number of Periods", 20)
        loan.repay_from_salary = 1
        loan.submit()

        salary_strcture = "Test Salary Structure for Loan"
        if not frappe.db.exists('Salary Structure', salary_strcture):
            salary_strcture = make_salary_structure(
                salary_strcture, [{
                    'employee': applicant,
                    'from_date': '2017-01-01',
                    'base': 30000
                }])

            salary_strcture = frappe.get_doc('Salary Structure',
                                             salary_strcture)
            salary_strcture.set('earnings', [{
                'salary_component': 'Basic Salary',
                'abbr': 'BS',
                'amount_based_on_formula': 1,
                'formula': 'base*.5'
            }])
            salary_strcture.save()

        dates = get_start_end_dates('Monthly', nowdate())
        make_payroll_entry(start_date=dates.start_date,
                           end_date=dates.end_date,
                           branch=branch)

        name = frappe.db.get_value('Salary Slip', {
            'posting_date': nowdate(),
            'employee': applicant
        }, 'name')

        salary_slip = frappe.get_doc('Salary Slip', name)
        for row in salary_slip.loans:
            if row.loan == loan.name:
                interest_amount = (280000 * 8.4) / (12 * 100)
                principal_amount = loan.monthly_repayment_amount - interest_amount
                self.assertEqual(row.interest_amount, interest_amount)
                self.assertEqual(row.principal_amount, principal_amount)
                self.assertEqual(row.total_payment,
                                 interest_amount + principal_amount)

        if salary_slip.docstatus == 0:
            frappe.delete_doc('Salary Slip', name)

        loan.cancel()
        frappe.delete_doc('Loan', loan.name)