fix: fixed salary structure assignment patch (#16546)

* fix: fixed salary structure assignment patch

* fix: patch
diff --git a/erpnext/patches/v11_0/create_salary_structure_assignments.py b/erpnext/patches/v11_0/create_salary_structure_assignments.py
index 2dab194..610fa85 100644
--- a/erpnext/patches/v11_0/create_salary_structure_assignments.py
+++ b/erpnext/patches/v11_0/create_salary_structure_assignments.py
@@ -4,6 +4,7 @@
 from __future__ import unicode_literals
 import frappe
 from datetime import datetime
+from frappe.utils import getdate
 from erpnext.hr.doctype.salary_structure_assignment.salary_structure_assignment import DuplicateAssignment
 
 def execute():
@@ -31,14 +32,22 @@
 			where is_active='Yes'
 			AND employee in (select name from `tabEmployee` where ifNull(status, '') != 'Left')
 		""".format(cols), as_dict=1)
-	
+
 	for d in ss_details:
 		try:
+			joining_date, relieving_date = frappe.db.get_value("Employee", d.employee,
+				["date_of_joining", "relieving_date"])
+			from_date = d.from_date
+			if joining_date and getdate(from_date) < joining_date:
+				from_date = joining_date
+			elif relieving_date and getdate(from_date) > relieving_date:
+				continue
+
 			s = frappe.new_doc("Salary Structure Assignment")
 			s.employee = d.employee
 			s.employee_name = d.employee_name
 			s.salary_structure = d.salary_structure
-			s.from_date = d.from_date
+			s.from_date = from_date
 			s.to_date = d.to_date if isinstance(d.to_date, datetime) else None
 			s.base = d.get("base")
 			s.variable = d.get("variable")