32 lines
1.0 KiB
Python
32 lines
1.0 KiB
Python
import frappe
|
|
|
|
|
|
def execute():
|
|
frappe.reload_doc('payroll', 'doctype', 'employee_cost_center')
|
|
frappe.reload_doc('payroll', 'doctype', 'salary_structure_assignment')
|
|
|
|
employees = frappe.get_all("Employee", fields=["department", "payroll_cost_center", "name"])
|
|
|
|
employee_cost_center = {}
|
|
for d in employees:
|
|
cost_center = d.payroll_cost_center
|
|
if not cost_center and d.department:
|
|
cost_center = frappe.get_cached_value("Department", d.department, "payroll_cost_center")
|
|
|
|
if cost_center:
|
|
employee_cost_center.setdefault(d.name, cost_center)
|
|
|
|
salary_structure_assignments = frappe.get_all("Salary Structure Assignment",
|
|
filters = {"docstatus": ["!=", 2]},
|
|
fields=["name", "employee"])
|
|
|
|
for d in salary_structure_assignments:
|
|
cost_center = employee_cost_center.get(d.employee)
|
|
if cost_center:
|
|
assignment = frappe.get_doc("Salary Structure Assignment", d.name)
|
|
if not assignment.get("payroll_cost_centers"):
|
|
assignment.append("payroll_cost_centers", {
|
|
"cost_center": cost_center,
|
|
"percentage": 100
|
|
})
|
|
assignment.save() |