@@ -70,9 +70,9 @@ def get_data(filters):
70
70
data = []
71
71
staffing_plan_details = get_staffing_plan (filters )
72
72
staffing_plan_list = list (set ([details ["name" ] for details in staffing_plan_details ]))
73
- sp_jo_map , jo_list = get_job_opening (staffing_plan_list )
73
+ sp_jo_map , jo_list = get_job_opening (staffing_plan_list , filters )
74
74
jo_ja_map , ja_list = get_job_applicant (jo_list )
75
- ja_joff_map = get_job_offer (ja_list )
75
+ ja_joff_map = get_job_offer (ja_list , filters )
76
76
77
77
for sp in sp_jo_map .keys ():
78
78
parent_row = get_parent_row (sp_jo_map , sp , jo_ja_map , ja_joff_map )
@@ -118,26 +118,36 @@ def get_child_row(jo, jo_ja_map, ja_joff_map):
118
118
119
119
def get_staffing_plan (filters ):
120
120
# nosemgrep: frappe-semgrep-rules.rules.frappe-using-db-sql
121
- staffing_plan = frappe .db .sql (
122
- f"""
123
- select
124
- sp.name, sp.department, spd.designation, spd.vacancies, spd.current_count, spd.parent, sp.to_date
125
- from
126
- `tabStaffing Plan Detail` spd , `tabStaffing Plan` sp
127
- where
128
- spd.parent = sp.name
129
- And
130
- sp.to_date > '{ filters .on_date } '
131
- """ ,
132
- as_dict = 1 ,
121
+ StaffingPlan = frappe .qb .DocType ("Staffing Plan" )
122
+ StaffingPlanDetail = frappe .qb .DocType ("Staffing Plan Detail" )
123
+
124
+ query = (
125
+ frappe .qb .from_ (StaffingPlanDetail )
126
+ .join (StaffingPlan )
127
+ .on (StaffingPlanDetail .parent == StaffingPlan .name )
128
+ .where (StaffingPlan .to_date > filters .on_date )
129
+ .where (StaffingPlan .company == filters .company )
130
+ .select (
131
+ StaffingPlan .name ,
132
+ StaffingPlan .department ,
133
+ StaffingPlanDetail .designation ,
134
+ StaffingPlanDetail .vacancies ,
135
+ StaffingPlanDetail .current_count ,
136
+ StaffingPlanDetail .parent ,
137
+ StaffingPlan .to_date ,
138
+ )
133
139
)
134
140
141
+ staffing_plan = query .run (as_dict = True )
142
+
135
143
return staffing_plan
136
144
137
145
138
- def get_job_opening (sp_list ):
146
+ def get_job_opening (sp_list , filters ):
147
+ job_opening_filters = [["staffing_plan" , "IN" , sp_list ], ["company" , "=" , filters .company ]]
148
+
139
149
job_openings = frappe .get_all (
140
- "Job Opening" , filters = [[ "staffing_plan" , "IN" , sp_list ]] , fields = ["name" , "staffing_plan" ]
150
+ "Job Opening" , filters = job_opening_filters , fields = ["name" , "staffing_plan" ]
141
151
)
142
152
143
153
sp_jo_map = {}
@@ -175,12 +185,13 @@ def get_job_applicant(jo_list):
175
185
return jo_ja_map , ja_list
176
186
177
187
178
- def get_job_offer (ja_list ):
188
+ def get_job_offer (ja_list , filters = None ):
179
189
ja_joff_map = {}
190
+ job_offer_filters = [["job_applicant" , "IN" , ja_list ], ["company" , "=" , filters .company ]]
180
191
181
192
offers = frappe .get_all (
182
193
"Job Offer" ,
183
- filters = [[ "job_applicant" , "IN" , ja_list ]] ,
194
+ filters = job_offer_filters ,
184
195
fields = ["name" , "job_applicant" , "status" , "offer_date" , "designation" ],
185
196
)
186
197
0 commit comments