fix: Patch and tests

This commit is contained in:
Nabin Hait 2020-05-05 15:58:52 +05:30
parent 5a1a765ebf
commit 672b74d89c
4 changed files with 62 additions and 44 deletions

View File

@ -7,14 +7,13 @@ import frappe, erpnext
from frappe.utils import nowdate, add_days
from erpnext.hr.doctype.employee.test_employee import make_employee
from erpnext.hr.doctype.salary_component.test_salary_component import create_salary_component
from erpnext.hr.doctype.salary_slip.test_salary_slip import make_employee_salary_slip
from erpnext.hr.doctype.salary_slip.test_salary_slip import make_employee_salary_slip, setup_test
class TestAdditionalSalary(unittest.TestCase):
def setUp(self):
from erpnext.hr.doctype.salary_slip.test_salary_slip import TestSalarySlip
TestSalarySlip().setUp()
setup_test()
def test_recurring_additional_salary(self):
emp_id = make_employee("test_additional@salary.com")

View File

@ -18,19 +18,7 @@ from erpnext.hr.doctype.employee_tax_exemption_declaration.test_employee_tax_exe
class TestSalarySlip(unittest.TestCase):
def setUp(self):
make_earning_salary_component(setup=True, company_list=["_Test Company"])
make_deduction_salary_component(setup=True, company_list=["_Test Company"])
for dt in ["Leave Application", "Leave Allocation", "Salary Slip", "Attendance"]:
frappe.db.sql("delete from `tab%s`" % dt)
self.make_holiday_list()
frappe.db.set_value("Company", erpnext.get_default_company(), "default_holiday_list", "Salary Slip Test Holiday List")
frappe.db.set_value("HR Settings", None, "email_salary_slip_to_employee", 0)
frappe.db.set_value('HR Settings', None, 'leave_status_notification_template', None)
frappe.db.set_value('HR Settings', None, 'leave_approval_notification_template', None)
setup_test()
def tearDown(self):
frappe.db.set_value("HR Settings", None, "include_holidays_in_total_working_days", 0)
frappe.set_user("Administrator")
@ -374,19 +362,6 @@ class TestSalarySlip(unittest.TestCase):
# undelete fixture data
frappe.db.rollback()
def make_holiday_list(self):
fiscal_year = get_fiscal_year(nowdate(), company=erpnext.get_default_company())
if not frappe.db.get_value("Holiday List", "Salary Slip Test Holiday List"):
holiday_list = frappe.get_doc({
"doctype": "Holiday List",
"holiday_list_name": "Salary Slip Test Holiday List",
"from_date": fiscal_year[1],
"to_date": fiscal_year[2],
"weekly_off": "Sunday"
}).insert()
holiday_list.get_weekly_off_dates()
holiday_list.save()
def make_activity_for_employee(self):
activity_type = frappe.get_doc("Activity Type", "_Test Activity Type")
activity_type.billing_rate = 50
@ -702,4 +677,31 @@ def make_leave_application(employee, from_date, to_date, leave_type, company=Non
status = "Approved",
leave_approver = 'test@example.com'
))
leave_application.submit()
leave_application.submit()
def setup_test():
make_earning_salary_component(setup=True, company_list=["_Test Company"])
make_deduction_salary_component(setup=True, company_list=["_Test Company"])
for dt in ["Leave Application", "Leave Allocation", "Salary Slip", "Attendance"]:
frappe.db.sql("delete from `tab%s`" % dt)
make_holiday_list()
frappe.db.set_value("Company", erpnext.get_default_company(), "default_holiday_list", "Salary Slip Test Holiday List")
frappe.db.set_value("HR Settings", None, "email_salary_slip_to_employee", 0)
frappe.db.set_value('HR Settings', None, 'leave_status_notification_template', None)
frappe.db.set_value('HR Settings', None, 'leave_approval_notification_template', None)
def make_holiday_list():
fiscal_year = get_fiscal_year(nowdate(), company=erpnext.get_default_company())
if not frappe.db.get_value("Holiday List", "Salary Slip Test Holiday List"):
holiday_list = frappe.get_doc({
"doctype": "Holiday List",
"holiday_list_name": "Salary Slip Test Holiday List",
"from_date": fiscal_year[1],
"to_date": fiscal_year[2],
"weekly_off": "Sunday"
}).insert()
holiday_list.get_weekly_off_dates()
holiday_list.save()

View File

@ -678,4 +678,4 @@ erpnext.patches.v13_0.move_tax_slabs_from_payroll_period_to_income_tax_slab #123
erpnext.patches.v12_0.fix_quotation_expired_status
erpnext.patches.v12_0.update_appointment_reminder_scheduler_entry
erpnext.patches.v12_0.retain_permission_rules_for_video_doctype
erpnext.patches.v13_0.patch_to_fix_reverse_linking_in_additional_salary_encashment_and_incentive #gyhdghksdhsjsd
erpnext.patches.v13_0.patch_to_fix_reverse_linking_in_additional_salary_encashment_and_incentive

View File

@ -3,33 +3,50 @@ from __future__ import unicode_literals
import frappe
def execute():
if not frappe.db.table_exists("Additional Salary"):
return
additional_salaries = frappe.get_all("Additional Salary", fields = ['name', "salary_slip", "type", "salary_component"], group_by = 'salary_slip')
leave_encashments = frappe.get_all("Leave Encashment", fields = ["name","additional_salary"])
employee_incentives = frappe.get_all("Employee Incentive", fields= ["name", "additional_salary"])
for doctype in ("Additional Salary", "Leave Encashment", "Employee Incentive", "Salary Detail"):
frappe.reload_doc("hr", "doctype", doctype)
additional_salaries = frappe.get_all("Additional Salary",
fields = ['name', "salary_slip", "type", "salary_component"],
filters = {'salary_slip': ['!=', '']},
group_by = 'salary_slip'
)
leave_encashments = frappe.get_all("Leave Encashment",
fields = ["name","additional_salary"],
filters = {'additional_salary': ['!=', '']}
)
employee_incentives = frappe.get_all("Employee Incentive",
fields= ["name", "additional_salary"],
filters = {'additional_salary': ['!=', '']}
)
for incentive in employee_incentives:
frappe.db.sql(""" UPDATE `tabAdditional Salary`
SET ref_doctype = 'Employee Incentive', ref_docname = %s
WHERE name = %s
""", (incentive['name'], incentive['additional_salary']))
SET ref_doctype = 'Employee Incentive', ref_docname = %s
WHERE name = %s
""", (incentive['name'], incentive['additional_salary']))
for leave_encashment in leave_encashments:
frappe.db.sql(""" UPDATE `tabAdditional Salary`
SET ref_doctype = 'Leave Encashment', ref_docname = %s
WHERE name = %s
""", (leave_encashment['name'], leave_encashment['additional_salary']))
SET ref_doctype = 'Leave Encashment', ref_docname = %s
WHERE name = %s
""", (leave_encashment['name'], leave_encashment['additional_salary']))
salary_slips = [sal["salary_slip"] for sal in additional_salaries]
for salary in additional_salaries:
comp_type = "earnings" if salary['type'] == 'Earning' else 'deductions'
if salary["salary_slip"] and salary_slips.count(salary["salary_slip"]) == 1:
frappe.db.sql(""" UPDATE `tabsalary Detail`
SET additional_salary = %s
WHERE parenttype = 'Salary Slip'
frappe.db.sql("""
UPDATE `tabSalary Detail`
SET additional_salary = %s
WHERE parenttype = 'Salary Slip'
and parentfield = %s
and parent = %s
and salary_component = %s""", (salary["name"], comp_type, salary["salary_slip"], salary["salary_component"]))
and salary_component = %s
""", (salary["name"], comp_type, salary["salary_slip"], salary["salary_component"]))