Esempio n. 1
0
def get_month_dates(doc):
    date_details = get_start_end_dates(doc.payroll_frequency, doc.start_date
                                       or doc.posting_date)
    doc.start_date = date_details.start_date
    doc.end_date = date_details.end_date

    msd = date_details.start_date
    med = date_details.end_date
    return msd, med
Esempio n. 2
0
	def get_date_details(self):
		date_details = get_start_end_dates(self.payroll_frequency, self.start_date or self.posting_date)
		self.start_date = date_details.start_date
		self.end_date = date_details.end_date
Esempio n. 3
0
 def get_date_details(self):
     date_details = get_start_end_dates(
         self.payroll_frequency, self.start_date or self.posting_date)
     self.start_date = date_details.start_date
     self.end_date = date_details.end_date
    def test_employee_loan(self):
        from erpnext.hr.doctype.salary_structure.test_salary_structure import (
            make_employee, make_salary_structure)
        from erpnext.hr.doctype.employee_loan.test_employee_loan import create_employee_loan

        branch = "Test Employee Branch"
        employee = 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 - WP'
            })

        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', employee)
        employee_doc.branch = branch
        employee_doc.holiday_list = holiday_list
        employee_doc.save()

        employee_loan = create_employee_loan(employee, "Personal Loan", 280000,
                                             "Repay Over Number of Periods",
                                             20)
        employee_loan.repay_from_salary = 1
        employee_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': employee,
                    '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_process_payroll(start_date=dates.start_date,
                             end_date=dates.end_date,
                             branch=branch)

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

        salary_slip = frappe.get_doc('Salary Slip', name)
        for row in salary_slip.loans:
            if row.employee_loan == employee_loan.name:
                interest_amount = (280000 * 8.4) / (12 * 100)
                principal_amount = employee_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)

        employee_loan.cancel()
        frappe.delete_doc('Employee Loan', employee_loan.name)