added changes from process payroll
diff --git a/erpnext/hr/doctype/payroll_entry/payroll_entry.json b/erpnext/hr/doctype/payroll_entry/payroll_entry.json
index 136f35e..77e38d1 100644
--- a/erpnext/hr/doctype/payroll_entry/payroll_entry.json
+++ b/erpnext/hr/doctype/payroll_entry/payroll_entry.json
@@ -480,6 +480,35 @@
"bold": 0,
"collapsible": 0,
"columns": 0,
+ "fieldname": "data_19",
+ "fieldtype": "Data",
+ "hidden": 0,
+ "ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
+ "in_filter": 0,
+ "in_global_search": 0,
+ "in_list_view": 0,
+ "in_standard_filter": 0,
+ "length": 0,
+ "no_copy": 0,
+ "permlevel": 0,
+ "precision": "",
+ "print_hide": 0,
+ "print_hide_if_no_value": 0,
+ "read_only": 0,
+ "remember_last_selected_value": 0,
+ "report_hide": 0,
+ "reqd": 0,
+ "search_index": 0,
+ "set_only_once": 0,
+ "unique": 0
+ },
+ {
+ "allow_bulk_edit": 0,
+ "allow_on_submit": 0,
+ "bold": 0,
+ "collapsible": 0,
+ "columns": 0,
"fieldname": "section_break_16",
"fieldtype": "Section Break",
"hidden": 0,
@@ -788,7 +817,7 @@
"issingle": 0,
"istable": 0,
"max_attachments": 0,
- "modified": "2017-10-27 12:44:07.378315",
+ "modified": "2017-11-30 12:11:30.985647",
"modified_by": "Administrator",
"module": "HR",
"name": "Payroll Entry",
diff --git a/erpnext/hr/doctype/payroll_entry/payroll_entry.py b/erpnext/hr/doctype/payroll_entry/payroll_entry.py
index b36afa3..627f13b 100644
--- a/erpnext/hr/doctype/payroll_entry/payroll_entry.py
+++ b/erpnext/hr/doctype/payroll_entry/payroll_entry.py
@@ -156,23 +156,28 @@
return create_submit_log(submitted_ss, not_submitted_ss, jv_name)
- def get_total_salary_and_loan_amounts(self):
+ def get_loan_details(self):
"""
- Get total loan principal, loan interest and salary amount from submitted salary slip based on selected criteria
+ Get loan details from submitted salary slip based on selected criteria
"""
cond = self.get_filter_condition()
- totals = frappe.db.sql("""
- select sum(principal_amount) as total_principal_amount, sum(interest_amount) as total_interest_amount,
- sum(total_loan_repayment) as total_loan_repayment, sum(rounded_total) as rounded_total from `tabSalary Slip` t1
+ return frappe.db.sql(""" select eld.employee_loan_account,
+ eld.interest_income_account, eld.principal_amount, eld.interest_amount, eld.total_payment
+ from
+ `tabSalary Slip` t1, `tabSalary Slip Loan` eld
+ where
+ t1.docstatus = 1 and t1.name = eld.parent and start_date >= %s and end_date <= %s %s
+ """ % ('%s', '%s', cond), (self.start_date, self.end_date), as_dict=True) or []
+
+ def get_total_salary_amount(self):
+ """
+ Get total salary amount from submitted salary slip based on selected criteria
+ """
+ cond = self.get_filter_condition()
+ totals = frappe.db.sql(""" select sum(rounded_total) as rounded_total from `tabSalary Slip` t1
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)
- return totals[0]
-
- def get_loan_accounts(self):
- loan_accounts = frappe.get_all("Employee Loan", fields=["employee_loan_account", "interest_income_account"],
- filters = {"company": self.company, "docstatus":1})
- if loan_accounts:
- return loan_accounts[0]
+ return totals and totals[0] or None
def get_salary_component_account(self, salary_component):
account = frappe.db.get_value("Salary Component Account",
@@ -223,8 +228,7 @@
earnings = self.get_salary_component_total(component_type = "earnings") or {}
deductions = self.get_salary_component_total(component_type = "deductions") or {}
default_payroll_payable_account = self.get_default_payroll_payable_account()
- loan_amounts = self.get_total_salary_and_loan_amounts()
- loan_accounts = self.get_loan_accounts()
+ loan_details = self.get_loan_details()
jv_name = ""
precision = frappe.get_precision("Journal Entry Account", "debit_in_account_currency")
@@ -260,18 +264,18 @@
})
# Employee loan
- if loan_amounts.total_loan_repayment:
+ for data in loan_details:
accounts.append({
- "account": loan_accounts.employee_loan_account,
- "credit_in_account_currency": loan_amounts.total_principal_amount
+ "account": data.employee_loan_account,
+ "credit_in_account_currency": data.principal_amount
})
accounts.append({
- "account": loan_accounts.interest_income_account,
- "credit_in_account_currency": loan_amounts.total_interest_amount,
+ "account": data.interest_income_account,
+ "credit_in_account_currency": data.interest_amount,
"cost_center": self.cost_center,
"project": self.project
})
- payable_amount -= flt(loan_amounts.total_loan_repayment, precision)
+ payable_amount -= flt(data.total_payment, precision)
# Payable amount
accounts.append({
@@ -293,11 +297,11 @@
def make_payment_entry(self):
self.check_permission('write')
- total_salary_amount = self.get_total_salary_and_loan_amounts()
+ total_salary_amount = self.get_total_salary_amount()
default_payroll_payable_account = self.get_default_payroll_payable_account()
precision = frappe.get_precision("Journal Entry Account", "debit_in_account_currency")
- if total_salary_amount.rounded_total:
+ if total_salary_amount and total_salary_amount.rounded_total:
journal_entry = frappe.new_doc('Journal Entry')
journal_entry.voucher_type = 'Bank Entry'
journal_entry.user_remark = _('Payment of salary from {0} to {1}')\
@@ -413,9 +417,11 @@
else:
frappe.throw(_("Fiscal Year {0} not found").format(year))
+@frappe.whitelist()
def create_log(ss_list):
if not ss_list or len(ss_list) < 1:
frappe.throw(_("No employee for the above selected criteria OR salary slip already created"))
+ return ss_list
def format_as_links(salary_slip):
return ['<a href="#Form/Salary Slip/{0}">{0}</a>'.format(salary_slip)]
diff --git a/erpnext/hr/doctype/salary_slip/salary_slip.js b/erpnext/hr/doctype/salary_slip/salary_slip.js
index 4679cbd..840387c 100644
--- a/erpnext/hr/doctype/salary_slip/salary_slip.js
+++ b/erpnext/hr/doctype/salary_slip/salary_slip.js
@@ -37,7 +37,7 @@
set_end_date: function(frm){
frappe.call({
- method: 'erpnext.hr.doctype.process_payroll.process_payroll.get_end_date',
+ method: 'erpnext.hr.doctype.payroll_entry.payroll_entry.get_end_date',
args: {
frequency: frm.doc.payroll_frequency,
start_date: frm.doc.start_date
diff --git a/erpnext/hr/doctype/salary_slip/salary_slip.py b/erpnext/hr/doctype/salary_slip/salary_slip.py
index ea5f35b..656a4ac 100644
--- a/erpnext/hr/doctype/salary_slip/salary_slip.py
+++ b/erpnext/hr/doctype/salary_slip/salary_slip.py
@@ -8,7 +8,7 @@
from frappe.model.naming import make_autoname
from frappe import msgprint, _
-from erpnext.hr.doctype.process_payroll.process_payroll import get_start_end_dates
+from erpnext.hr.doctype.payroll_entry.payroll_entry import get_start_end_dates
from erpnext.hr.doctype.employee.employee import get_holiday_list_for_employee
from erpnext.utilities.transaction_base import TransactionBase
from frappe.utils.background_jobs import enqueue
diff --git a/erpnext/hr/doctype/salary_slip/test_salary_slip.py b/erpnext/hr/doctype/salary_slip/test_salary_slip.py
index f136cb5..493a825 100644
--- a/erpnext/hr/doctype/salary_slip/test_salary_slip.py
+++ b/erpnext/hr/doctype/salary_slip/test_salary_slip.py
@@ -9,8 +9,8 @@
from erpnext.accounts.utils import get_fiscal_year
from frappe.utils import getdate, nowdate, add_days, add_months, flt
from erpnext.hr.doctype.salary_structure.salary_structure import make_salary_slip
-from erpnext.hr.doctype.process_payroll.test_process_payroll import get_salary_component_account
-from erpnext.hr.doctype.process_payroll.process_payroll import get_month_details
+from erpnext.hr.doctype.payroll_entry.payroll_entry import get_salary_component_account
+from erpnext.hr.doctype.payroll_entry.payroll_entry import get_month_details
class TestSalarySlip(unittest.TestCase):
def setUp(self):