test case

This commit is contained in:
Shreya 2017-10-30 12:41:48 +05:30
parent 7b2870431e
commit d73dd056d6
5 changed files with 45 additions and 45 deletions

View File

@ -1,6 +1,8 @@
// Copyright (c) 2017, Frappe Technologies Pvt. Ltd. and contributors // Copyright (c) 2017, Frappe Technologies Pvt. Ltd. and contributors
// For license information, please see license.txt // For license information, please see license.txt
var in_progress = false;
frappe.ui.form.on('Payroll Entry', { frappe.ui.form.on('Payroll Entry', {
onload: function (frm) { onload: function (frm) {
frm.doc.posting_date = frappe.datetime.nowdate(); frm.doc.posting_date = frappe.datetime.nowdate();
@ -35,23 +37,23 @@ frappe.ui.form.on('Payroll Entry', {
"is_group": 0, "is_group": 0,
"company": frm.doc.company "company": frm.doc.company
} }
} };
}), }),
frm.set_query("cost_center", function () { frm.set_query("cost_center", function () {
return { return {
filters: { filters: {
"is_group": 0, "is_group": 0,
company: frm.doc.company company: frm.doc.company
}
} }
}), };
frm.set_query("project", function () { }),
return { frm.set_query("project", function () {
filters: { return {
company: frm.doc.company filters: {
} company: frm.doc.company
} }
}) };
});
}, },
payroll_frequency: function (frm) { payroll_frequency: function (frm) {
@ -63,7 +65,7 @@ frappe.ui.form.on('Payroll Entry', {
frm.trigger("set_end_date"); frm.trigger("set_end_date");
}else{ }else{
// reset flag // reset flag
in_progress = false in_progress = false;
} }
}, },
@ -71,7 +73,6 @@ frappe.ui.form.on('Payroll Entry', {
frm.toggle_reqd(['payroll_frequency'], !frm.doc.salary_slip_based_on_timesheet); frm.toggle_reqd(['payroll_frequency'], !frm.doc.salary_slip_based_on_timesheet);
}, },
set_start_end_dates: function (frm) { set_start_end_dates: function (frm) {
if (!frm.doc.salary_slip_based_on_timesheet) { if (!frm.doc.salary_slip_based_on_timesheet) {
frappe.call({ frappe.call({
@ -87,7 +88,7 @@ frappe.ui.form.on('Payroll Entry', {
frm.set_value('end_date', r.message.end_date); frm.set_value('end_date', r.message.end_date);
} }
} }
}) });
} }
}, },
@ -109,19 +110,19 @@ frappe.ui.form.on('Payroll Entry', {
// Create salary slips // Create salary slips
cur_frm.cscript.custom_before_submit = function (doc, cdt, cdn) { cur_frm.cscript.custom_before_submit = function (doc) {
return $c('runserverobj', { 'method': 'create_salary_slips', 'docs': doc }); return $c('runserverobj', { 'method': 'create_salary_slips', 'docs': doc });
} };
// Submit salary slips // Submit salary slips
submit_salary_slip = function (frm, cdt, cdn) { let submit_salary_slip = function (frm) {
doc = frm.doc; var doc = frm.doc;
return $c('runserverobj', { 'method': 'submit_salary_slips', 'docs': doc }); return $c('runserverobj', { 'method': 'submit_salary_slips', 'docs': doc });
} }
make_bank_entry = function (frm, cdt, cdn) { let make_bank_entry = function (frm) {
doc = frm.doc; var doc = frm.doc;
if (doc.company && doc.start_date && doc.end_date) { if (doc.company && doc.start_date && doc.end_date) {
return frappe.call({ return frappe.call({
doc: cur_frm.doc, doc: cur_frm.doc,

View File

@ -112,8 +112,9 @@ class PayrollEntry(Document):
return self.create_log(ss_list) return self.create_log(ss_list)
def create_log(self, ss_list): def create_log(self, ss_list):
if not ss_list or len(ss_list) < 1: if not ss_list or len(ss_list) < 1:
frappe.throw(_("No employee for the above selected criteria OR salary slip already created")) frappe.throw(_("No employee for the above selected criteria OR salary slip already created"))
return
def get_sal_slip_list(self, ss_status, as_dict=False): def get_sal_slip_list(self, ss_status, as_dict=False):
""" """
@ -147,7 +148,7 @@ class PayrollEntry(Document):
ss_dict["Total Pay"] = fmt_money(ss_obj.net_pay, ss_dict["Total Pay"] = fmt_money(ss_obj.net_pay,
currency = frappe.defaults.get_global_default("currency")) currency = frappe.defaults.get_global_default("currency"))
ss_dict["Salary Slip"] = self.format_as_links(ss_obj.name)[0] ss_dict["Salary Slip"] = self.format_as_links(ss_obj.name)[0]
if ss_obj.net_pay<0: if ss_obj.net_pay<0:
not_submitted_ss.append(ss_dict) not_submitted_ss.append(ss_dict)
else: else:
@ -173,7 +174,7 @@ class PayrollEntry(Document):
Possible reasons: <br>\ Possible reasons: <br>\
1. Net pay is less than 0. <br>\ 1. Net pay is less than 0. <br>\
2. Company Email Address specified in employee master is not valid. <br>") 2. Company Email Address specified in employee master is not valid. <br>")
return
def format_as_links(self, salary_slip): def format_as_links(self, salary_slip):
return ['<a href="#Form/Salary Slip/{0}">{0}</a>'.format(salary_slip)] return ['<a href="#Form/Salary Slip/{0}">{0}</a>'.format(salary_slip)]
@ -188,9 +189,9 @@ class PayrollEntry(Document):
where t1.docstatus = 1 and start_date >= %s and end_date <= %s %s where t1.docstatus = 1 and start_date >= %s and end_date <= %s %s
""" % ('%s', '%s', cond), (self.start_date, self.end_date), as_dict=True) """ % ('%s', '%s', cond), (self.start_date, self.end_date), as_dict=True)
return totals[0] return totals[0]
def get_loan_accounts(self): def get_loan_accounts(self):
loan_accounts = frappe.get_all("Employee Loan", fields=["employee_loan_account", "interest_income_account"], loan_accounts = frappe.get_all("Employee Loan", fields=["employee_loan_account", "interest_income_account"],
filters = {"company": self.company, "docstatus":1}) filters = {"company": self.company, "docstatus":1})
if loan_accounts: if loan_accounts:
return loan_accounts[0] return loan_accounts[0]
@ -237,7 +238,7 @@ class PayrollEntry(Document):
frappe.throw(_("Please set Default Payroll Payable Account in Company {0}") frappe.throw(_("Please set Default Payroll Payable Account in Company {0}")
.format(self.company)) .format(self.company))
return payroll_payable_account return payroll_payable_account
def make_accural_jv_entry(self): def make_accural_jv_entry(self):
self.check_permission('write') self.check_permission('write')
@ -353,7 +354,7 @@ class PayrollEntry(Document):
frappe.db.set_value("Salary Slip", ss_obj.name, "journal_entry", jv_name) frappe.db.set_value("Salary Slip", ss_obj.name, "journal_entry", jv_name)
def set_start_end_dates(self): def set_start_end_dates(self):
self.update(get_start_end_dates(self.payroll_frequency, self.update(get_start_end_dates(self.payroll_frequency,
self.start_date or self.posting_date, self.company)) self.start_date or self.posting_date, self.company))
@frappe.whitelist() @frappe.whitelist()
@ -414,9 +415,7 @@ def get_end_date(start_date, frequency):
def get_month_details(year, month): def get_month_details(year, month):
ysd = frappe.db.get_value("Fiscal Year", year, "year_start_date") ysd = frappe.db.get_value("Fiscal Year", year, "year_start_date")
if ysd: if ysd:
from dateutil.relativedelta import relativedelta
import calendar, datetime import calendar, datetime
frappe.msgprint
diff_mnt = cint(month)-cint(ysd.month) diff_mnt = cint(month)-cint(ysd.month)
if diff_mnt<0: if diff_mnt<0:
diff_mnt = 12-int(ysd.month)+cint(month) diff_mnt = 12-int(ysd.month)+cint(month)

View File

@ -1,38 +1,38 @@
QUnit.module('HR') QUnit.module('HR');
QUnit.test("test: Payroll Entry", function (assert) { QUnit.test("test: Payroll Entry", function (assert) {
assert.expect(5); assert.expect(5);
let done = assert.async(); let done = assert.async();
frappe.run_serially([ frappe.run_serially([
() => { () => {
return frappe.tests.make('Payroll Entry', [ return frappe.tests.make('Payroll Entry', [
{company: 'For Testing'}, {company: 'For Testing'},
{posting_date: frappe.datetime.add_days(frappe.datetime.nowdate(), 0)}, {posting_date: frappe.datetime.add_days(frappe.datetime.nowdate(), 0)},
{payroll_frequency: 'Monthly'}, {payroll_frequency: 'Monthly'},
// {start_date: },
{cost_center: 'Main - '+frappe.get_abbr(frappe.defaults.get_default("Company"))} {cost_center: 'Main - '+frappe.get_abbr(frappe.defaults.get_default("Company"))}
]); ]);
}, },
() => frappe.timeout(1),
() => {
assert.equal(cur_frm.doc.company, 'For Testing');
assert.equal(cur_frm.doc.posting_date, frappe.datetime.add_days(frappe.datetime.nowdate(), 0));
assert.equal(cur_frm.doc.cost_center, 'Main - FT');
},
() => frappe.click_button('Submit'), () => frappe.click_button('Submit'),
() => frappe.timeout(1), () => frappe.timeout(1),
() => frappe.click_button('Yes'), () => frappe.click_button('Yes'),
() => frappe.timeout(2), () => frappe.timeout(2),
() => {
assert.equal(cur_frm.doc.company, 'For Testing');
assert.equal(cur_frm.doc.posting_date, frappe.datetime.add_days(frappe.datetime.nowdate(), 0));
assert.equal(cur_frm.doc.cost_center, 'Main - FT');
},
() => frappe.click_button('View Salary Slip'), () => frappe.click_button('View Salary Slip'),
() => frappe.timeout(2), () => frappe.timeout(2),
() => assert.equal(cur_list.data[0].docstatus, 0), () => assert.equal(cur_list.data[0].docstatus, 0),
() => frappe.set_route('Form', 'Payroll Entry', 'Payroll 0041'), () => frappe.set_route('Form', 'Payroll Entry', 'Payroll 0001'),
() => frappe.click_button('Submit Salary Slip'), () => frappe.click_button('Submit Salary Slip'),
() => frappe.timeout(2), () => frappe.timeout(3),
() => frappe.click_button('Close'), () => frappe.click_button('Close'),
() => frappe.timeout(1), () => frappe.timeout(1),
@ -40,7 +40,7 @@ QUnit.test("test: Payroll Entry", function (assert) {
() => frappe.click_button('View Salary Slip'), () => frappe.click_button('View Salary Slip'),
() => frappe.timeout(2), () => frappe.timeout(2),
() => { () => {
assert.ok(cur_list.data[0].docstatus == 1, "Salary slip submitted"); assert.ok(cur_list.data[0].docstatus == 1, "Salary slip submitted");
}, },
() => done() () => done()

View File

@ -3,7 +3,6 @@
# See license.txt # See license.txt
from __future__ import unicode_literals from __future__ import unicode_literals
import frappe
import unittest import unittest
class TestPayrollEntry(unittest.TestCase): class TestPayrollEntry(unittest.TestCase):

View File

@ -78,6 +78,7 @@ erpnext/hr/doctype/training_feedback/test_training_feedback.js
erpnext/hr/doctype/loan_type/test_loan_type.js erpnext/hr/doctype/loan_type/test_loan_type.js
erpnext/hr/doctype/employee_loan_application/test_employee_loan_application.js erpnext/hr/doctype/employee_loan_application/test_employee_loan_application.js
erpnext/hr/doctype/employee_loan/test_employee_loan.js erpnext/hr/doctype/employee_loan/test_employee_loan.js
erpnext/hr/doctype/payroll_entry/test_payroll_entry.js
erpnext/buying/doctype/supplier/test_supplier.js erpnext/buying/doctype/supplier/test_supplier.js
erpnext/buying/doctype/request_for_quotation/tests/test_request_for_quotation.js erpnext/buying/doctype/request_for_quotation/tests/test_request_for_quotation.js
erpnext/buying/doctype/supplier_quotation/tests/test_supplier_quotation.js erpnext/buying/doctype/supplier_quotation/tests/test_supplier_quotation.js