* feat: Moved Document to Payroll Module * feat: Moved Reports to Payroll Module * feat: Moved Print fromat With Patch * feat: Moved Notifiction to Payroll Module and patches * feat: added dashboard and desk page to Payroll * feat: Payroll Dashboard * feat: Module onboarding * feat: Income tax Deductions Report * feat: Ecs Checklist Report * feat: Provident Fund Report * feat: Professional Fund report and commonified Code * feat: Total Payments Based On Payment Mode Report * fix: refactor and added chart Total Payments Based On Payment Mode * feat: Payroll Settings * fix: Bank remittance Report * feat(Payroll based on): Considered unmarked days * feat: Added Help for condition an formula in Salary structure * fix: requested changes * fix: rename report Ecs checklist to salary_payments_via_ecs * fix: renamed report report/total_payments_based_on_payment_mode * fix: added role via setup.py for regional report * feat: added All reports to desk page * fix: frappe.reload doc in all patches * fix: codacy * fix: frappe.reload_doctype for patches * patch: is_income_tax_component and component_type for salary component * fix: uncommented code * test: fixture * fix: test * test: test_payment_days_based_on_attendance
		
			
				
	
	
		
			25 lines
		
	
	
		
			733 B
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			25 lines
		
	
	
		
			733 B
		
	
	
	
		
			Python
		
	
	
	
	
	
| # Copyright (c) 2017, Frappe and Contributors
 | |
| # License: GNU General Public License v3. See license.txt
 | |
| 
 | |
| from __future__ import unicode_literals
 | |
| import frappe
 | |
| 
 | |
| def execute():
 | |
| 	frappe.reload_doc('Payroll', 'doctype', 'salary_slip_loan')
 | |
| 	frappe.reload_doc('Payroll', 'doctype', 'salary_slip')
 | |
| 
 | |
| 	for data in frappe.db.sql(""" select name,
 | |
| 			start_date, end_date, total_loan_repayment
 | |
| 		from
 | |
| 			`tabSalary Slip`
 | |
| 		where
 | |
| 			docstatus < 2 and ifnull(total_loan_repayment, 0) > 0""", as_dict=1):
 | |
| 		salary_slip = frappe.get_doc('Salary Slip', data.name)
 | |
| 		salary_slip.set_loan_repayment()
 | |
| 
 | |
| 		if salary_slip.total_loan_repayment == data.total_loan_repayment:
 | |
| 			for row in salary_slip.loans:
 | |
| 				row.db_update()
 | |
| 
 | |
| 			salary_slip.db_update()
 |