DBA Data[Home] [Help]

PACKAGE BODY: APPS.HR_PROCESS_ASSIGNMENT_SS

Source


1 PACKAGE body hr_process_assignment_ss AS
2 /* $Header: hrascwrs.pkb 120.16 2008/02/22 10:46:46 gpurohit noship $*/
3 
4 
5 g_package      constant varchar2(75):='HR_PROCESS_ASSIGNMENT_SS.';
6 g_api_name     constant varchar2(75):=g_package || 'PROCESS_API';
7 g_data_error            exception;
8 --g_date_format  constant varchar2(10):='RRRR/MM/DD';
9 g_registration boolean :=false;
10 g_applicant_hire boolean := false;
11 
12 --
13 
14 -- bug 5032032
15 PROCEDURE update_salary_proposal(p_assignment_id number
16                                  , p_effective_date date) IS
17 
18      l_pay_proposal_id           per_pay_proposals.pay_proposal_id%TYPE;
19      l_pyp_object_version_number per_pay_proposals.object_version_number%TYPE;
20      l_change_date               per_pay_proposals.change_date%TYPE;
21      l_proposed_salary           per_pay_proposals.PROPOSED_SALARY_N%TYPE;
22      l_approved_flag             varchar2(1) := 'Y';
23      l_inv_next_sal_date_warning boolean;
24      l_proposed_salary_warning   boolean;
25      l_approved_warning          boolean;
26      l_payroll_warning           boolean;
27 
28      cursor csr_payproposal is
29         select pay_proposal_id, object_version_number, change_date
30               ,PROPOSED_SALARY_N
31           from per_pay_proposals
32           where assignment_id = p_assignment_id
33           order by change_date DESC;
34   BEGIN
35     open csr_payproposal;
36     fetch csr_payproposal into l_pay_proposal_id, l_pyp_object_version_number
37                               ,l_change_date, l_proposed_salary;
38     if csr_payproposal%found and l_change_date < p_effective_date then
39 
40         hr_maintain_proposal_api.cre_or_upd_salary_proposal
41           (p_pay_proposal_id              => l_pay_proposal_id
42           ,p_object_version_number        => l_pyp_object_version_number
43           ,p_change_date                  => p_effective_date
44           ,p_approved                     => l_approved_flag
45           ,p_inv_next_sal_date_warning    => l_inv_next_sal_date_warning
46           ,p_proposed_salary_warning      => l_proposed_salary_warning
47           ,p_approved_warning             => l_approved_warning
48           ,p_payroll_warning              => l_payroll_warning
49         );
50     end if;
51     close csr_payproposal;
52   END update_salary_proposal;
53 
54 
55 -- bug 5032032
56 procedure get_asg_from_tt
57 (p_transaction_step_id in     number
58 ,p_assignment_rec   out nocopy per_all_assignments_f%rowtype) is
59 l_proc   varchar2(72)  := g_package||'get_asg_from_tt';
60 
61 begin
62 --dbms_output.put_line(' ');
63 hr_utility.set_location('Entering:'||l_proc, 5);
64 p_assignment_rec.assignment_id:=
65     hr_transaction_api.get_number_value
66     (p_transaction_step_id =>  p_transaction_step_id
67     ,p_name                => 'P_ASSIGNMENT_ID');
68 --
69 p_assignment_rec.object_version_number :=
70     hr_transaction_api.get_number_value
71     (p_transaction_step_id =>  p_transaction_step_id
72     ,p_name                => 'P_OBJECT_VERSION_NUMBER');
73 --
74 p_assignment_rec.business_group_id :=
75     hr_transaction_api.get_number_value
76     (p_transaction_step_id => p_transaction_step_id
77     ,p_name                => 'P_BUSINESS_GROUP_ID');
78 --
79 p_assignment_rec.person_id :=
80     hr_transaction_api.get_number_value
81     (p_transaction_step_id => p_transaction_step_id
82     ,p_name                => 'P_PERSON_ID');
83 --
84 p_assignment_rec.organization_id :=
85     hr_transaction_api.get_number_value
86     (p_transaction_step_id => p_transaction_step_id
87     ,p_name                => 'P_ORGANIZATION_ID');
88 --
89 p_assignment_rec.grade_id :=
90     hr_transaction_api.get_number_value
91     (p_transaction_step_id => p_transaction_step_id
92     ,p_name                => 'P_GRADE_ID');
93 --
94 p_assignment_rec.position_id :=
95     hr_transaction_api.get_number_value
96     (p_transaction_step_id => p_transaction_step_id
97     ,p_name                => 'P_POSITION_ID');
98 --
99 p_assignment_rec.job_id :=
100     hr_transaction_api.get_number_value
101     (p_transaction_step_id => p_transaction_step_id
102     ,p_name                => 'P_JOB_ID');
103 --
104 p_assignment_rec.location_id :=
105     hr_transaction_api.get_number_value
106     (p_transaction_step_id => p_transaction_step_id
107     ,p_name                => 'P_LOCATION_ID');
108 --
109 p_assignment_rec.special_ceiling_step_id  :=
110     hr_transaction_api.get_number_value
111     (p_transaction_step_id => p_transaction_step_id
112     ,p_name                => 'P_SPECIAL_CEILING_STEP_ID');
113 --
114 p_assignment_rec.employment_category :=
115     hr_transaction_api.get_varchar2_value
116     (p_transaction_step_id => p_transaction_step_id
117     ,p_name                => 'P_EMPLOYMENT_CATEGORY');
118 --
119 p_assignment_rec.supervisor_id :=
120     hr_transaction_api.get_number_value
121     (p_transaction_step_id => p_transaction_step_id
122     ,p_name                => 'P_SUPERVISOR_ID');
123 --
124 p_assignment_rec.manager_flag :=
125     hr_transaction_api.get_varchar2_value
126     (p_transaction_step_id => p_transaction_step_id
127     ,p_name                => 'P_MANAGER_FLAG');
128 --
129 p_assignment_rec.normal_hours  :=
130     hr_transaction_api.get_number_value
131     (p_transaction_step_id => p_transaction_step_id
132     ,p_name                => 'P_NORMAL_HOURS');
133 --
134 p_assignment_rec.frequency :=
135     hr_transaction_api.get_varchar2_value
136     (p_transaction_step_id => p_transaction_step_id
137     ,p_name                => 'P_FREQUENCY');
138 --
139 p_assignment_rec.time_normal_finish  :=
140     substr(hr_transaction_api.get_varchar2_value
141     (p_transaction_step_id => p_transaction_step_id
142     ,p_name                => 'P_TIME_NORMAL_FINISH'),0,5);
143 --
144 p_assignment_rec.time_normal_start :=
145     substr(hr_transaction_api.get_varchar2_value
146     (p_transaction_step_id => p_transaction_step_id
147     ,p_name                => 'P_TIME_NORMAL_START'),0,5);
148 --
149 p_assignment_rec.bargaining_unit_code  :=
150     hr_transaction_api.get_varchar2_value
151     (p_transaction_step_id => p_transaction_step_id
152     ,p_name                => 'P_BARGAINING_UNIT_CODE');
153 --
154 p_assignment_rec.labour_union_member_flag :=
155     hr_transaction_api.get_varchar2_value
156     (p_transaction_step_id => p_transaction_step_id
157     ,p_name                => 'P_LABOUR_UNION_MEMBER_FLAG');
158 --
159 p_assignment_rec.assignment_status_type_id :=
160     hr_transaction_api.get_number_value
161     (p_transaction_step_id => p_transaction_step_id
162     ,p_name                => 'P_ASSIGNMENT_STATUS_TYPE_ID');
163 --
164 p_assignment_rec.change_reason  :=
165     hr_transaction_api.get_varchar2_value
166     (p_transaction_step_id => p_transaction_step_id
167     ,p_name                => 'P_CHANGE_REASON');
168 --
169 p_assignment_rec.ass_attribute_category :=
170     hr_transaction_api.get_varchar2_value
171     (p_transaction_step_id => p_transaction_step_id
172     ,p_name                => 'P_ASS_ATTRIBUTE_CATEGORY');
173 --
174 p_assignment_rec.ass_attribute1 :=
175     hr_transaction_api.get_varchar2_value
176     (p_transaction_step_id => p_transaction_step_id
177     ,p_name                => 'P_ASS_ATTRIBUTE1');
178 --
179 p_assignment_rec.ass_attribute2 :=
180     hr_transaction_api.get_varchar2_value
181     (p_transaction_step_id => p_transaction_step_id
182     ,p_name                => 'P_ASS_ATTRIBUTE2');
183 --
184 p_assignment_rec.ass_attribute3 :=
185     hr_transaction_api.get_varchar2_value
186     (p_transaction_step_id => p_transaction_step_id
187     ,p_name                => 'P_ASS_ATTRIBUTE3');
188 --
189 p_assignment_rec.ass_attribute4 :=
190     hr_transaction_api.get_varchar2_value
191     (p_transaction_step_id => p_transaction_step_id
192     ,p_name                => 'P_ASS_ATTRIBUTE4');
193 --
194 p_assignment_rec.ass_attribute5 :=
195     hr_transaction_api.get_varchar2_value
196     (p_transaction_step_id => p_transaction_step_id
197     ,p_name                => 'P_ASS_ATTRIBUTE5');
198 --
199 p_assignment_rec.ass_attribute6 :=
200     hr_transaction_api.get_varchar2_value
201     (p_transaction_step_id => p_transaction_step_id
202     ,p_name                => 'P_ASS_ATTRIBUTE6');
203 --
204 p_assignment_rec.ass_attribute7 :=
205     hr_transaction_api.get_varchar2_value
206     (p_transaction_step_id => p_transaction_step_id
207     ,p_name                => 'P_ASS_ATTRIBUTE7');
208 --
209 p_assignment_rec.ass_attribute8 :=
210     hr_transaction_api.get_varchar2_value
211     (p_transaction_step_id => p_transaction_step_id
212     ,p_name                => 'P_ASS_ATTRIBUTE8');
213 --
214 p_assignment_rec.ass_attribute9 :=
215     hr_transaction_api.get_varchar2_value
216     (p_transaction_step_id => p_transaction_step_id
217     ,p_name                => 'P_ASS_ATTRIBUTE9');
218 --
219 p_assignment_rec.ass_attribute10 :=
220     hr_transaction_api.get_varchar2_value
221     (p_transaction_step_id => p_transaction_step_id
222     ,p_name                => 'P_ASS_ATTRIBUTE10');
223 --
224 p_assignment_rec.ass_attribute11 :=
225     hr_transaction_api.get_varchar2_value
226     (p_transaction_step_id => p_transaction_step_id
227     ,p_name                => 'P_ASS_ATTRIBUTE11');
228 --
229 p_assignment_rec.ass_attribute12 :=
230     hr_transaction_api.get_varchar2_value
231     (p_transaction_step_id => p_transaction_step_id
232     ,p_name                => 'P_ASS_ATTRIBUTE12');
233 --
234 p_assignment_rec.ass_attribute13 :=
235     hr_transaction_api.get_varchar2_value
236     (p_transaction_step_id => p_transaction_step_id
237     ,p_name                => 'P_ASS_ATTRIBUTE13');
238 --
239 p_assignment_rec.ass_attribute14 :=
240     hr_transaction_api.get_varchar2_value
241     (p_transaction_step_id => p_transaction_step_id
242     ,p_name                => 'P_ASS_ATTRIBUTE14');
243 --
244 p_assignment_rec.ass_attribute15 :=
245     hr_transaction_api.get_varchar2_value
246     (p_transaction_step_id => p_transaction_step_id
247     ,p_name                => 'P_ASS_ATTRIBUTE15');
248 --
249 p_assignment_rec.ass_attribute16 :=
250     hr_transaction_api.get_varchar2_value
251     (p_transaction_step_id => p_transaction_step_id
252     ,p_name                => 'P_ASS_ATTRIBUTE16');
253 --
254 p_assignment_rec.ass_attribute17 :=
255     hr_transaction_api.get_varchar2_value
256     (p_transaction_step_id => p_transaction_step_id
257     ,p_name                => 'P_ASS_ATTRIBUTE17');
258 --
259 p_assignment_rec.ass_attribute18 :=
260     hr_transaction_api.get_varchar2_value
261     (p_transaction_step_id => p_transaction_step_id
262     ,p_name                => 'P_ASS_ATTRIBUTE18');
263 --
264 p_assignment_rec.ass_attribute19 :=
265     hr_transaction_api.get_varchar2_value
266     (p_transaction_step_id => p_transaction_step_id
267     ,p_name                => 'P_ASS_ATTRIBUTE19');
268 --
269 p_assignment_rec.ass_attribute20 :=
270     hr_transaction_api.get_varchar2_value
271     (p_transaction_step_id => p_transaction_step_id
272     ,p_name                => 'P_ASS_ATTRIBUTE20');
273 --
274 p_assignment_rec.ass_attribute21 :=
275     hr_transaction_api.get_varchar2_value
276     (p_transaction_step_id => p_transaction_step_id
277     ,p_name                => 'P_ASS_ATTRIBUTE21');
278 --
279 p_assignment_rec.ass_attribute22 :=
280     hr_transaction_api.get_varchar2_value
281     (p_transaction_step_id => p_transaction_step_id
282     ,p_name                => 'P_ASS_ATTRIBUTE22');
283 --
284 p_assignment_rec.ass_attribute23 :=
285     hr_transaction_api.get_varchar2_value
286     (p_transaction_step_id => p_transaction_step_id
287     ,p_name                => 'P_ASS_ATTRIBUTE23');
288 --
289 p_assignment_rec.ass_attribute24 :=
290     hr_transaction_api.get_varchar2_value
291     (p_transaction_step_id => p_transaction_step_id
292     ,p_name                => 'P_ASS_ATTRIBUTE24');
293 --
294 p_assignment_rec.ass_attribute25 :=
295     hr_transaction_api.get_varchar2_value
296     (p_transaction_step_id => p_transaction_step_id
297     ,p_name                => 'P_ASS_ATTRIBUTE25');
298 --
299 p_assignment_rec.ass_attribute26 :=
300     hr_transaction_api.get_varchar2_value
301     (p_transaction_step_id => p_transaction_step_id
302     ,p_name                => 'P_ASS_ATTRIBUTE26');
303 --
304 p_assignment_rec.ass_attribute27 :=
305     hr_transaction_api.get_varchar2_value
306     (p_transaction_step_id => p_transaction_step_id
307     ,p_name                => 'P_ASS_ATTRIBUTE27');
308 --
309 p_assignment_rec.ass_attribute28 :=
310     hr_transaction_api.get_varchar2_value
311     (p_transaction_step_id => p_transaction_step_id
312     ,p_name                => 'P_ASS_ATTRIBUTE28');
313 --
314 p_assignment_rec.ass_attribute29 :=
315     hr_transaction_api.get_varchar2_value
316     (p_transaction_step_id => p_transaction_step_id
317     ,p_name                => 'P_ASS_ATTRIBUTE29');
318 --
319 p_assignment_rec.ass_attribute30 :=
320     hr_transaction_api.get_varchar2_value
321     (p_transaction_step_id => p_transaction_step_id
322     ,p_name                => 'P_ASS_ATTRIBUTE30');
323 --
324 p_assignment_rec.contract_id :=
325     hr_transaction_api.get_number_value
326     (p_transaction_step_id => p_transaction_step_id
327     ,p_name                => 'P_CONTRACT_ID');
328 --
329 p_assignment_rec.establishment_id :=
330     hr_transaction_api.get_number_value
331     (p_transaction_step_id => p_transaction_step_id
332     ,p_name                => 'P_ESTABLISHMENT_ID');
333 --
334 p_assignment_rec.cagr_grade_def_id :=
335     hr_transaction_api.get_number_value
336     (p_transaction_step_id => p_transaction_step_id
337     ,p_name                => 'P_CAGR_GRADE_DEF_ID');
338 --
339 p_assignment_rec.collective_agreement_id :=
340     hr_transaction_api.get_number_value
341     (p_transaction_step_id => p_transaction_step_id
342     ,p_name                => 'P_COLLECTIVE_AGREEMENT_ID');
343 --
344 p_assignment_rec.cagr_id_flex_num :=
345     hr_transaction_api.get_number_value
346     (p_transaction_step_id => p_transaction_step_id
347     ,p_name                => 'P_CAGR_ID_FLEX_NUM');
348 --
349 p_assignment_rec.payroll_id :=
350     hr_transaction_api.get_number_value
351     (p_transaction_step_id => p_transaction_step_id
352     ,p_name                => 'P_PAYROLL_ID');
353 --
354 p_assignment_rec.pay_basis_id :=
355     hr_transaction_api.get_number_value
356     (p_transaction_step_id => p_transaction_step_id
357     ,p_name                => 'P_PAY_BASIS_ID');
358 --
359 p_assignment_rec.sal_review_period :=
360     hr_transaction_api.get_number_value
361     (p_transaction_step_id => p_transaction_step_id
362     ,p_name                => 'P_SAL_REVIEW_PERIOD');
363 --
364 p_assignment_rec.sal_review_period_frequency :=
365     hr_transaction_api.get_varchar2_value
366     (p_transaction_step_id => p_transaction_step_id
367     ,p_name                => 'P_SAL_REVIEW_PERIOD_FREQUENCY');
368 
369 --
370 p_assignment_rec.date_probation_end :=
371     hr_transaction_api.get_date_value
372     (p_transaction_step_id => p_transaction_step_id
373     ,p_name                => 'P_DATE_PROBATION_END');
374 --
375 p_assignment_rec.probation_period :=
376     hr_transaction_api.get_number_value
377     (p_transaction_step_id => p_transaction_step_id
378     ,p_name                => 'P_PROBATION_PERIOD');
379 --
380 p_assignment_rec.probation_unit :=
381     hr_transaction_api.get_varchar2_value
382     (p_transaction_step_id => p_transaction_step_id
383     ,p_name                => 'P_PROBATION_UNIT');
384 --
385 p_assignment_rec.notice_period :=
386     hr_transaction_api.get_number_value
387     (p_transaction_step_id => p_transaction_step_id
388     ,p_name                => 'P_NOTICE_PERIOD');
389 --
390 p_assignment_rec.notice_period_uom :=
391     hr_transaction_api.get_varchar2_value
392     (p_transaction_step_id => p_transaction_step_id
393     ,p_name                => 'P_NOTICE_PERIOD_UOM');
394 --
395 p_assignment_rec.employee_category :=
396     hr_transaction_api.get_varchar2_value
397     (p_transaction_step_id => p_transaction_step_id
398     ,p_name                => 'P_EMPLOYEE_CATEGORY');
399 --
400 p_assignment_rec.work_at_home :=
401     hr_transaction_api.get_varchar2_value
402     (p_transaction_step_id => p_transaction_step_id
403     ,p_name                => 'P_WORK_AT_HOME');
404 --
405 p_assignment_rec.job_post_source_name :=
406     hr_transaction_api.get_varchar2_value
407     (p_transaction_step_id => p_transaction_step_id
408     ,p_name                => 'P_JOB_POST_SOURCE_NAME');
409 --
410 p_assignment_rec.perf_review_period :=
411     hr_transaction_api.get_number_value
412     (p_transaction_step_id => p_transaction_step_id
413     ,p_name                => 'P_PERF_REVIEW_PERIOD');
414 --
415 p_assignment_rec.perf_review_period_frequency :=
416     hr_transaction_api.get_varchar2_value
417     (p_transaction_step_id => p_transaction_step_id
418     ,p_name                => 'P_PERF_REVIEW_PERIOD_FREQUENCY');
419 --
420 p_assignment_rec.internal_address_line :=
421     hr_transaction_api.get_varchar2_value
422     (p_transaction_step_id => p_transaction_step_id
423     ,p_name                => 'P_INTERNAL_ADDRESS_LINE');
424 --
425 p_assignment_rec.people_group_id:=
426     hr_transaction_api.get_number_value
427     (p_transaction_step_id => p_transaction_step_id
428     ,p_name                => 'P_PEOPLE_GROUP_ID');
429 --
430 p_assignment_rec.soft_coding_keyflex_id:=
431     hr_transaction_api.get_number_value
432     (p_transaction_step_id => p_transaction_step_id
433     ,p_name                => 'P_SOFT_CODING_KEYFLEX_ID');
434 --
435 p_assignment_rec.title:=
436     hr_transaction_api.get_varchar2_value
437     (p_transaction_step_id => p_transaction_step_id
438     ,p_name                => 'P_TITLE');
439 --
440   p_assignment_rec.project_title:=
441     hr_transaction_api.get_varchar2_value
442     (p_transaction_step_id => p_transaction_step_id
443     ,p_name                => 'P_PROJECT_TITLE');
444 --
445   p_assignment_rec.source_type:=
446     hr_transaction_api.get_varchar2_value
447     (p_transaction_step_id => p_transaction_step_id
448     ,p_name                => 'P_SOURCE_TYPE');
449 --
450   p_assignment_rec.vendor_assignment_number:=
451     hr_transaction_api.get_varchar2_value
452     (p_transaction_step_id => p_transaction_step_id
453     ,p_name                => 'P_VENDOR_ASSIGNMENT_NUMBER');
454 --
455   p_assignment_rec.vendor_employee_number:=
456     hr_transaction_api.get_varchar2_value
457     (p_transaction_step_id => p_transaction_step_id
458     ,p_name                => 'P_VENDOR_EMPLOYEE_NUMBER');
459 --
460   p_assignment_rec.default_code_comb_id := to_char(
461     hr_transaction_api.get_number_value
462     (p_transaction_step_id => p_transaction_step_id
463     ,p_name                => 'P_DEFAULT_CODE_COMB_ID'));
464 --
465   p_assignment_rec.set_of_books_id := to_char(
466     hr_transaction_api.get_number_value
467     (p_transaction_step_id => p_transaction_step_id
468     ,p_name                => 'P_SET_OF_BOOKS_ID'));
469 --
470   p_assignment_rec.vendor_id := to_char(
471     hr_transaction_api.get_number_value
472     (p_transaction_step_id => p_transaction_step_id
473     ,p_name                => 'P_VENDOR_ID'));
474 --
475   p_assignment_rec.assignment_type:=
476     hr_transaction_api.get_varchar2_value
477     (p_transaction_step_id => p_transaction_step_id
478     ,p_name                => 'P_ASSIGNMENT_TYPE');
479 --
480   -- GSP change
481   p_assignment_rec.grade_ladder_pgm_id:=
482     hr_transaction_api.get_number_value
483     (p_transaction_step_id => p_transaction_step_id
484     ,p_name                => 'P_GRADE_LADDER_PGM_ID');
485   -- End of GSP change
486 
487   --p_assignment_rec.supervisor_assignment_id:=
488   --  hr_transaction_api.get_number_value
489   --  (p_transaction_step_id => p_transaction_step_id
490   --  ,p_name                => 'P_SUPERVISOR_ASSIGNMENT_ID');
491 --
492 
493   p_assignment_rec.po_header_id :=
494     hr_transaction_api.get_number_value
495     (p_transaction_step_id => p_transaction_step_id
496     ,p_name                => 'P_PO_HEADER_ID');
497 
498   p_assignment_rec.po_line_id :=
499     hr_transaction_api.get_number_value
500     (p_transaction_step_id => p_transaction_step_id
501     ,p_name                => 'P_PO_LINE_ID');
502 
503   p_assignment_rec.vendor_site_id :=
504     hr_transaction_api.get_number_value
505     (p_transaction_step_id => p_transaction_step_id
506     ,p_name                => 'P_VENDOR_SITE_ID');
507 
508 
509   p_assignment_rec.projected_assignment_end :=
510     hr_transaction_api.get_date_value
511     (p_transaction_step_id => p_transaction_step_id
512     ,p_name                => 'P_PROJ_ASGN_END');
513 
514 hr_utility.set_location('Exiting:'||l_proc, 15);
515 end get_asg_from_tt;
516 --
517 procedure get_assignment_from_tt
518 (p_item_type                in     varchar2
519 ,p_item_key                 in     varchar2
520 ,p_actid                    in     varchar2
521 ,p_transaction_step_id      in     varchar2
522 ,p_assignment_id             out nocopy varchar2
523 ,p_object_version_number     out nocopy varchar2
524 ,p_effective_date            out nocopy varchar2
525 ,p_grade_id                  out nocopy varchar2
526 ,p_position_id               out nocopy varchar2
527 ,p_job_id                    out nocopy varchar2
528 ,p_location_id               out nocopy varchar2
529 ,p_special_ceiling_step_id   out nocopy varchar2
530 ,p_organization_id           out nocopy varchar2
531 ,p_employment_category       out nocopy varchar2
532 ,p_supervisor_id             out nocopy varchar2
533 ,p_manager_flag              out nocopy varchar2
534 ,p_normal_hours              out nocopy varchar2
535 ,p_frequency                 out nocopy varchar2
536 ,p_time_normal_finish        out nocopy varchar2
537 ,p_time_normal_start         out nocopy varchar2
538 ,p_bargaining_unit_code      out nocopy varchar2
539 ,p_labour_union_member_flag  out nocopy varchar2
540 ,p_assignment_status_type_id out nocopy varchar2
541 ,p_change_reason             out nocopy varchar2
542 ,p_ass_attribute_category    out nocopy varchar2
543 ,p_ass_attribute1            out nocopy varchar2
544 ,p_ass_attribute2            out nocopy varchar2
545 ,p_ass_attribute3            out nocopy varchar2
546 ,p_ass_attribute4            out nocopy varchar2
547 ,p_ass_attribute5            out nocopy varchar2
548 ,p_ass_attribute6            out nocopy varchar2
549 ,p_ass_attribute7            out nocopy varchar2
550 ,p_ass_attribute8            out nocopy varchar2
551 ,p_ass_attribute9            out nocopy varchar2
552 ,p_ass_attribute10           out nocopy varchar2
553 ,p_ass_attribute11           out nocopy varchar2
554 ,p_ass_attribute12           out nocopy varchar2
555 ,p_ass_attribute13           out nocopy varchar2
556 ,p_ass_attribute14           out nocopy varchar2
557 ,p_ass_attribute15           out nocopy varchar2
558 ,p_ass_attribute16           out nocopy varchar2
559 ,p_ass_attribute17           out nocopy varchar2
560 ,p_ass_attribute18           out nocopy varchar2
561 ,p_ass_attribute19           out nocopy varchar2
562 ,p_ass_attribute20           out nocopy varchar2
563 ,p_ass_attribute21           out nocopy varchar2
564 ,p_ass_attribute22           out nocopy varchar2
565 ,p_ass_attribute23           out nocopy varchar2
566 ,p_ass_attribute24           out nocopy varchar2
567 ,p_ass_attribute25           out nocopy varchar2
568 ,p_ass_attribute26           out nocopy varchar2
569 ,p_ass_attribute27           out nocopy varchar2
570 ,p_ass_attribute28           out nocopy varchar2
571 ,p_ass_attribute29           out nocopy varchar2
572 ,p_ass_attribute30           out nocopy varchar2
573 ,p_soft_coding_keyflex_id    out nocopy varchar2
574 ,p_people_group_id           out nocopy varchar2
575 ,p_org_name                  out nocopy varchar2
576 ,p_job_name                  out nocopy varchar2
577 ,p_pos_name                  out nocopy varchar2
578 ,p_grade_name                out nocopy varchar2
579 ,p_contract_id               out nocopy varchar2
580 ,p_establishment_id          out nocopy varchar2
581 ,p_cagr_grade_def_id         out nocopy varchar2
582 ,p_collective_agreement_id   out nocopy varchar2
583 ,p_cagr_id_flex_num          out nocopy varchar2
584 ,p_payroll_id                out nocopy varchar2
585 ,p_pay_basis_id              out nocopy varchar2
586 ,p_sal_review_period         out nocopy varchar2
587 ,p_sal_review_period_frequency out nocopy varchar2
588 ,p_date_probation_end        out nocopy varchar2
589 ,p_probation_period          out nocopy varchar2
590 ,p_probation_unit            out nocopy varchar2
591 ,p_notice_period             out nocopy varchar2
592 ,p_notice_period_uom         out nocopy varchar2
593 ,p_employee_category         out nocopy varchar2
594 ,p_work_at_home              out nocopy varchar2
595 ,p_job_post_source_name      out nocopy varchar2
596 ,p_perf_review_period        out nocopy varchar2
597 ,p_perf_review_period_frequency out nocopy varchar2
598 ,p_internal_address_line     out nocopy varchar2
599 ,p_display_org               out nocopy varchar2
600 ,p_display_job               out nocopy varchar2
601 ,p_display_pos               out nocopy varchar2
602 ,p_display_grade             out nocopy varchar2
603 ,p_display_ass_status        out nocopy varchar2
604 ,p_business_group_id         out nocopy varchar2
605 ,p_title                     out nocopy varchar2
606 ,p_default_code_comb_id      out nocopy varchar2
607 ,p_set_of_books_id           out nocopy varchar2
608 ,p_source_type               out nocopy varchar2
609 ,p_project_title             out nocopy varchar2
610 ,p_vendor_assignment_number  out nocopy varchar2
611 ,p_vendor_employee_number    out nocopy varchar2
612 ,p_vendor_id                 out nocopy varchar2
613 ,p_assignment_type           out nocopy varchar2
614 ,p_grade_ladder_pgm_id       out nocopy varchar2
615 ,p_supervisor_assignment_id  out nocopy varchar2
616 ,p_vendor_name               out nocopy varchar2
617 ,p_po_header_id                 out nocopy varchar2
618 ,p_po_line_id                 out nocopy varchar2
619 ,p_vendor_site_id                 out nocopy varchar2
620 ,p_po_number                 out nocopy varchar2
621 ,p_po_line_number                 out nocopy varchar2
622 ,p_vendor_site_name                 out nocopy varchar2
623 ,p_projected_asgn_end        out nocopy date
624 
625 
626 )is
627 
628 cursor csr_org_name(p_id in number) is
629 select name
630 from hr_organization_units
631 where organization_id = p_id;
632 
633 cursor csr_job_name(p_id in number) is
634 select name
635 from per_jobs_vl
636 where job_id = p_id;
637 
638 cursor csr_pos_name(p_id in number) is
639 select name
640 from hr_positions_f
641 where position_id = p_id
642 and to_date(p_effective_date,g_date_format)
643 between effective_start_date
644 and effective_end_date;
645 
646 cursor csr_grade_name(p_id in number) is
647 select name
648 from per_grades_vl
649 where grade_id = p_id;
650 
651 cursor csr_vendor_name(p_id in number) is
652 select vendor_name
653 from po_vendors
654 where vendor_id = p_id;
655 
656 cursor csr_po_number(p_id in number) is
657 -- 4894113: R12 performance repository related fix
658 -- ISSUE : Shared memory size 2,413,494
659 -- RESOLUTION:
660 -- 1.Since we are interested only in  poh.segment1 we can
661 -- drop the rest of the columns and unwanted WHERE clauses from the
662 -- view po_temp_labor_headers_v
663 -- 2. The SQL below we have retained all the WHERE clauses
664 -- dealing with the table po_headers_all, but dropped the rest
665 -- which are not required in this case.
666 
667 SELECT poh.segment1 po_number
668 FROM
669     po_headers_all poh
670 WHERE
671     poh.po_header_id = p_id
672     AND poh.type_lookup_code = 'STANDARD'
673     AND poh.authorization_status IN ('APPROVED', 'PRE-APPROVED')
674     AND poh.approved_flag = 'Y'
675     AND poh.enabled_flag = 'Y'
676     AND NVL(poh.cancel_flag, 'N') <> 'Y'
677     AND NVL(poh.frozen_flag, 'N') <> 'Y'
678     AND poh.org_id IS NOT NULL
679     AND EXISTS
680     (
681     SELECT
682         NULL
683     FROM po_lines_all pol ,
684         po_line_types_b polt
685     WHERE pol.po_header_id = poh.po_header_id
686         AND NVL(pol.cancel_flag, 'N') <> 'Y'
687         AND pol.line_type_id = polt.line_type_id
688         AND polt.purchase_basis = 'TEMP LABOR'
689     );
690 
691 --select po_number
692 --from po_temp_labor_headers_v
693 --where po_header_id = p_id;
694 
695 cursor csr_po_line_number(p_id in number) is
696 select line_number
697 from po_temp_labor_lines_v
698 where po_line_id = p_id;
699 
700 cursor csr_vendor_site_name(p_id in number) is
701 select vendor_site_code
702 from po_vendor_sites_all
703 where vendor_site_id  = p_id;
704 
705   l_transaction_id       number;
706   l_transaction_step_id  number;
707   l_proc   varchar2(72)  := g_package||'get_assignment_from_tt';
708 
709 begin
710 
711 
712   hr_utility.set_location('Entering:'||l_proc, 5);
713   if p_transaction_step_id is null then
714 
715     hr_utility.set_location('if p_transaction_step_id is null then:'||l_proc,10);
716     hr_assignment_common_save_web.get_step
717           (p_item_type           => p_item_type
718           ,p_item_key            => p_item_key
719           ,p_api_name            => g_api_name
720           ,p_transaction_step_id => l_transaction_step_id
721           ,p_transaction_id      => l_transaction_id);
722   else
723     l_transaction_step_id := to_number(p_transaction_step_id);
724   end if;
725 
726   if l_transaction_step_id is null then
727   hr_utility.set_location('l_transaction_step_id is null thenExiting:'||l_proc, 15);
728     return;
729   end if;
730 --
731   p_assignment_id:= to_char(
732     hr_transaction_api.get_number_value
733     (p_transaction_step_id =>  l_transaction_step_id
734     ,p_name                => 'P_ASSIGNMENT_ID'));
735 --
736   p_business_group_id:= to_char(
737     hr_transaction_api.get_number_value
738     (p_transaction_step_id =>  l_transaction_step_id
739     ,p_name                => 'P_BUSINESS_GROUP_ID'));
740 --
741   p_effective_date:= to_char(
742     hr_transaction_api.get_date_value
743     (p_transaction_step_id => l_transaction_step_id
744     ,p_name                => 'P_EFFECTIVE_DATE')
745    ,g_date_format);
746 --
747   p_object_version_number := to_char(
748     hr_transaction_api.get_number_value
749     (p_transaction_step_id =>  l_transaction_step_id
750     ,p_name                => 'P_OBJECT_VERSION_NUMBER'));
751 --
752   p_organization_id := to_char(
753     hr_transaction_api.get_number_value
754     (p_transaction_step_id => l_transaction_step_id
755     ,p_name                => 'P_ORGANIZATION_ID'));
756 --
757   open csr_org_name(to_number(p_organization_id));
758   fetch csr_org_name into p_org_name;
759   close csr_org_name;
760 --
761   p_position_id := to_char(
762     hr_transaction_api.get_number_value
763     (p_transaction_step_id => l_transaction_step_id
764     ,p_name                => 'P_POSITION_ID'));
765 --
766   open csr_pos_name(to_number(p_position_id));
767   fetch csr_pos_name into p_pos_name;
768   close csr_pos_name;
769 --
770   p_job_id := to_char(
771     hr_transaction_api.get_number_value
772     (p_transaction_step_id => l_transaction_step_id
773     ,p_name                => 'P_JOB_ID'));
774 --
775   open csr_job_name(to_number(p_job_id));
776   fetch csr_job_name into p_job_name;
777   close csr_job_name;
778 --
779   p_grade_id := to_char(
780     hr_transaction_api.get_number_value
781     (p_transaction_step_id => l_transaction_step_id
782     ,p_name                => 'P_GRADE_ID'));
783 --
784   open csr_grade_name(to_number(p_grade_id));
785   fetch csr_grade_name into p_grade_name;
786   close csr_grade_name;
787 --
788   p_location_id := to_char(
789     hr_transaction_api.get_number_value
790     (p_transaction_step_id => l_transaction_step_id
791     ,p_name                => 'P_LOCATION_ID'));
792 --
793   p_employment_category :=
794     hr_transaction_api.get_varchar2_value
795     (p_transaction_step_id => l_transaction_step_id
796     ,p_name                => 'P_EMPLOYMENT_CATEGORY');
797 --
798   p_supervisor_id := to_char(
799     hr_transaction_api.get_number_value
800     (p_transaction_step_id => l_transaction_step_id
801     ,p_name                => 'P_SUPERVISOR_ID'));
802 --
803   p_manager_flag :=
804     hr_transaction_api.get_varchar2_value
805     (p_transaction_step_id => l_transaction_step_id
806     ,p_name                => 'P_MANAGER_FLAG');
807 --
808 
809   -- Fix for Bug 2943224 and 3205625 for number format/invalid number error
810   p_normal_hours := to_char(
811     hr_transaction_api.get_number_value
812     (p_transaction_step_id => l_transaction_step_id
813     ,p_name                => 'P_NORMAL_HOURS')
814      ,'9999999999999999999D999', 'NLS_NUMERIC_CHARACTERS = ''.,'''
815     );
816 --
817   p_frequency :=
818     hr_transaction_api.get_varchar2_value
819     (p_transaction_step_id => l_transaction_step_id
820     ,p_name                => 'P_FREQUENCY');
821 --
822   p_time_normal_finish :=
823     substr(hr_transaction_api.get_varchar2_value
824     (p_transaction_step_id => l_transaction_step_id
825     ,p_name                => 'P_TIME_NORMAL_FINISH'),0,5);
826 --
827   p_time_normal_start :=
828     substr(hr_transaction_api.get_varchar2_value
829     (p_transaction_step_id => l_transaction_step_id
830     ,p_name                => 'P_TIME_NORMAL_START'),0,5);
831 --
832   p_bargaining_unit_code :=
833     hr_transaction_api.get_varchar2_value
834     (p_transaction_step_id => l_transaction_step_id
835     ,p_name                => 'P_BARGAINING_UNIT_CODE');
836 --
837   p_labour_union_member_flag :=
838     hr_transaction_api.get_varchar2_value
839     (p_transaction_step_id => l_transaction_step_id
840     ,p_name                => 'P_LABOUR_UNION_MEMBER_FLAG');
841 --
842   p_special_ceiling_step_id := to_char(
843     hr_transaction_api.get_number_value
844     (p_transaction_step_id => l_transaction_step_id
845     ,p_name                => 'P_SPECIAL_CEILING_STEP_ID'));
846 --
847   p_assignment_status_type_id := to_char(
848     hr_transaction_api.get_number_value
849     (p_transaction_step_id => l_transaction_step_id
850     ,p_name                => 'P_ASSIGNMENT_STATUS_TYPE_ID'));
851 --
852   p_change_reason :=
853     hr_transaction_api.get_varchar2_value
854     (p_transaction_step_id => l_transaction_step_id
855     ,p_name                => 'P_CHANGE_REASON');
856 --
857   p_ass_attribute_category :=
858     hr_transaction_api.get_varchar2_value
859     (p_transaction_step_id => l_transaction_step_id
860     ,p_name                => 'P_ASS_ATTRIBUTE_CATEGORY');
861 --
862   p_ass_attribute1 :=
863     hr_transaction_api.get_varchar2_value
864     (p_transaction_step_id => l_transaction_step_id
865     ,p_name                => 'P_ASS_ATTRIBUTE1');
866 --
867   p_ass_attribute2 :=
868     hr_transaction_api.get_varchar2_value
869     (p_transaction_step_id => l_transaction_step_id
870     ,p_name                => 'P_ASS_ATTRIBUTE2');
871 --
872   p_ass_attribute3 :=
873     hr_transaction_api.get_varchar2_value
874     (p_transaction_step_id => l_transaction_step_id
875     ,p_name                => 'P_ASS_ATTRIBUTE3');
876 --
877   p_ass_attribute4 :=
878     hr_transaction_api.get_varchar2_value
879     (p_transaction_step_id => l_transaction_step_id
880     ,p_name                => 'P_ASS_ATTRIBUTE4');
881 --
882   p_ass_attribute5 :=
883     hr_transaction_api.get_varchar2_value
884     (p_transaction_step_id => l_transaction_step_id
885     ,p_name                => 'P_ASS_ATTRIBUTE5');
886 --
887   p_ass_attribute6 :=
888     hr_transaction_api.get_varchar2_value
889     (p_transaction_step_id => l_transaction_step_id
890     ,p_name                => 'P_ASS_ATTRIBUTE6');
891 --
892   p_ass_attribute7 :=
893     hr_transaction_api.get_varchar2_value
894     (p_transaction_step_id => l_transaction_step_id
895     ,p_name                => 'P_ASS_ATTRIBUTE7');
896 --
897   p_ass_attribute8 :=
898     hr_transaction_api.get_varchar2_value
899     (p_transaction_step_id => l_transaction_step_id
900     ,p_name                => 'P_ASS_ATTRIBUTE8');
901 --
902   p_ass_attribute9 :=
903     hr_transaction_api.get_varchar2_value
904     (p_transaction_step_id => l_transaction_step_id
905     ,p_name                => 'P_ASS_ATTRIBUTE9');
906 --
907   p_ass_attribute10 :=
908     hr_transaction_api.get_varchar2_value
909     (p_transaction_step_id => l_transaction_step_id
910     ,p_name                => 'P_ASS_ATTRIBUTE10');
911 --
912   p_ass_attribute11 :=
913     hr_transaction_api.get_varchar2_value
914     (p_transaction_step_id => l_transaction_step_id
915     ,p_name                => 'P_ASS_ATTRIBUTE11');
916 --
917   p_ass_attribute12 :=
918     hr_transaction_api.get_varchar2_value
919     (p_transaction_step_id => l_transaction_step_id
920     ,p_name                => 'P_ASS_ATTRIBUTE12');
921 --
922   p_ass_attribute13 :=
923     hr_transaction_api.get_varchar2_value
924     (p_transaction_step_id => l_transaction_step_id
925     ,p_name                => 'P_ASS_ATTRIBUTE13');
926 --
927   p_ass_attribute14 :=
928     hr_transaction_api.get_varchar2_value
929     (p_transaction_step_id => l_transaction_step_id
930     ,p_name                => 'P_ASS_ATTRIBUTE14');
931 --
932   p_ass_attribute15 :=
933     hr_transaction_api.get_varchar2_value
934     (p_transaction_step_id => l_transaction_step_id
935     ,p_name                => 'P_ASS_ATTRIBUTE15');
936 --
937   p_ass_attribute16 :=
938     hr_transaction_api.get_varchar2_value
939     (p_transaction_step_id => l_transaction_step_id
940     ,p_name                => 'P_ASS_ATTRIBUTE16');
941 --
942   p_ass_attribute17 :=
943     hr_transaction_api.get_varchar2_value
944     (p_transaction_step_id => l_transaction_step_id
945     ,p_name                => 'P_ASS_ATTRIBUTE17');
946 --
947   p_ass_attribute18 :=
948     hr_transaction_api.get_varchar2_value
949     (p_transaction_step_id => l_transaction_step_id
950     ,p_name                => 'P_ASS_ATTRIBUTE18');
951 --
952   p_ass_attribute19 :=
953     hr_transaction_api.get_varchar2_value
954     (p_transaction_step_id => l_transaction_step_id
955     ,p_name                => 'P_ASS_ATTRIBUTE19');
956 --
957   p_ass_attribute20 :=
958     hr_transaction_api.get_varchar2_value
959     (p_transaction_step_id => l_transaction_step_id
960     ,p_name                => 'P_ASS_ATTRIBUTE20');
961 --
962   p_ass_attribute21 :=
963     hr_transaction_api.get_varchar2_value
964     (p_transaction_step_id => l_transaction_step_id
965     ,p_name                => 'P_ASS_ATTRIBUTE21');
966 --
967   p_ass_attribute22 :=
968     hr_transaction_api.get_varchar2_value
969     (p_transaction_step_id => l_transaction_step_id
970     ,p_name                => 'P_ASS_ATTRIBUTE22');
971 --
972   p_ass_attribute23 :=
973     hr_transaction_api.get_varchar2_value
974     (p_transaction_step_id => l_transaction_step_id
975     ,p_name                => 'P_ASS_ATTRIBUTE23');
976 --
977   p_ass_attribute24 :=
978     hr_transaction_api.get_varchar2_value
979     (p_transaction_step_id => l_transaction_step_id
980     ,p_name                => 'P_ASS_ATTRIBUTE24');
981 --
982   p_ass_attribute25 :=
983     hr_transaction_api.get_varchar2_value
984     (p_transaction_step_id => l_transaction_step_id
985     ,p_name                => 'P_ASS_ATTRIBUTE25');
986 --
987   p_ass_attribute26 :=
988     hr_transaction_api.get_varchar2_value
989     (p_transaction_step_id => l_transaction_step_id
990     ,p_name                => 'P_ASS_ATTRIBUTE26');
991 --
992   p_ass_attribute27 :=
993     hr_transaction_api.get_varchar2_value
994     (p_transaction_step_id => l_transaction_step_id
995     ,p_name                => 'P_ASS_ATTRIBUTE27');
996 --
997   p_ass_attribute28 :=
998     hr_transaction_api.get_varchar2_value
999     (p_transaction_step_id => l_transaction_step_id
1000     ,p_name                => 'P_ASS_ATTRIBUTE28');
1001 --
1002   p_ass_attribute29 :=
1003     hr_transaction_api.get_varchar2_value
1004     (p_transaction_step_id => l_transaction_step_id
1005     ,p_name                => 'P_ASS_ATTRIBUTE29');
1006 --
1007   p_ass_attribute30 :=
1008     hr_transaction_api.get_varchar2_value
1009     (p_transaction_step_id => l_transaction_step_id
1010     ,p_name                => 'P_ASS_ATTRIBUTE30');
1011 
1012   p_people_group_id:=to_char(
1013     hr_transaction_api.get_number_value
1014     (p_transaction_step_id => l_transaction_step_id
1015     ,p_name                => 'P_PEOPLE_GROUP_ID'));
1016 --
1017   p_soft_coding_keyflex_id:= to_char(
1018     hr_transaction_api.get_number_value
1019     (p_transaction_step_id => l_transaction_step_id
1020     ,p_name                => 'P_SOFT_CODING_KEYFLEX_ID'));
1021 --
1022   p_sal_review_period:=
1023     hr_transaction_api.get_number_value
1024     (p_transaction_step_id => l_transaction_step_id
1025     ,p_name                => 'P_SAL_REVIEW_PERIOD');
1026 --
1027   p_sal_review_period_frequency:=
1028     hr_transaction_api.get_varchar2_value
1029     (p_transaction_step_id => l_transaction_step_id
1030     ,p_name                => 'P_SAL_REVIEW_PERIOD_FREQUENCY');
1031 --
1032   p_date_probation_end:= to_char(
1033     hr_transaction_api.get_date_value
1034     (p_transaction_step_id => l_transaction_step_id
1035     ,p_name                => 'P_DATE_PROBATION_END'), g_date_format);
1036 --
1037   p_probation_period:=
1038     hr_transaction_api.get_number_value
1039     (p_transaction_step_id => l_transaction_step_id
1040     ,p_name                => 'P_PROBATION_PERIOD');
1041 --
1042   p_probation_unit:=
1043     hr_transaction_api.get_varchar2_value
1044     (p_transaction_step_id => l_transaction_step_id
1045     ,p_name                => 'P_PROBATION_UNIT');
1046 --
1047   p_notice_period:=
1048     hr_transaction_api.get_number_value
1049     (p_transaction_step_id => l_transaction_step_id
1050     ,p_name                => 'P_NOTICE_PERIOD');
1051 --
1052   p_notice_period_uom:=
1053     hr_transaction_api.get_varchar2_value
1054     (p_transaction_step_id => l_transaction_step_id
1055     ,p_name                => 'P_NOTICE_PERIOD_UOM');
1056 --
1057   p_employee_category:=
1058     hr_transaction_api.get_varchar2_value
1059     (p_transaction_step_id => l_transaction_step_id
1060     ,p_name                => 'P_EMPLOYEE_CATEGORY');
1061 --
1062   p_work_at_home:=
1063     hr_transaction_api.get_varchar2_value
1064     (p_transaction_step_id => l_transaction_step_id
1065     ,p_name                => 'P_WORK_AT_HOME');
1066 --
1067   p_job_post_source_name:=
1068     hr_transaction_api.get_varchar2_value
1069     (p_transaction_step_id => l_transaction_step_id
1070     ,p_name                => 'P_JOB_POST_SOURCE_NAME');
1071 --
1072   p_perf_review_period:= to_char(
1073     hr_transaction_api.get_number_value
1074     (p_transaction_step_id => l_transaction_step_id
1075     ,p_name                => 'P_PERF_REVIEW_PERIOD'));
1076 --
1077   p_perf_review_period_frequency:=
1078     hr_transaction_api.get_varchar2_value
1079     (p_transaction_step_id => l_transaction_step_id
1080     ,p_name                => 'P_PERF_REVIEW_PERIOD_FREQUENCY');
1081 --
1082   p_internal_address_line:=
1083     hr_transaction_api.get_varchar2_value
1084     (p_transaction_step_id => l_transaction_step_id
1085     ,p_name                => 'P_INTERNAL_ADDRESS_LINE');
1086 --
1087   p_payroll_id:=
1088     to_char(hr_transaction_api.get_number_value
1089     (p_transaction_step_id => l_transaction_step_id
1090     ,p_name                => 'P_PAYROLL_ID'));
1091 --
1092   p_pay_basis_id:=
1093     to_char(hr_transaction_api.get_number_value
1094     (p_transaction_step_id => l_transaction_step_id
1095     ,p_name                => 'P_PAY_BASIS_ID'));
1096 --
1097   p_contract_id:=
1098     to_char(hr_transaction_api.get_number_value
1099     (p_transaction_step_id => l_transaction_step_id
1100     ,p_name                => 'P_CONTRACT_ID'));
1101 --
1102   p_establishment_id:=
1103     to_char(hr_transaction_api.get_number_value
1104     (p_transaction_step_id => l_transaction_step_id
1105     ,p_name                => 'P_ESTABLISHMENT_ID'));
1106 --
1107   p_cagr_grade_def_id:=
1108     to_char(hr_transaction_api.get_number_value
1109     (p_transaction_step_id => l_transaction_step_id
1110     ,p_name                => 'P_CAGR_GRADE_DEF_ID'));
1111 --
1112   p_collective_agreement_id:=
1113     to_char(hr_transaction_api.get_number_value
1114     (p_transaction_step_id => l_transaction_step_id
1115     ,p_name                => 'P_COLLECTIVE_AGREEMENT_ID'));
1116 --
1117   p_cagr_id_flex_num:=
1118     to_char(hr_transaction_api.get_number_value
1119     (p_transaction_step_id => l_transaction_step_id
1120     ,p_name                => 'P_CAGR_ID_FLEX_NUM'));
1121 --
1122   p_display_org:=
1123     hr_transaction_api.get_varchar2_value
1124     (p_transaction_step_id => l_transaction_step_id
1125     ,p_name                => 'P_DISPLAY_ORG');
1126 --
1127   p_display_job:=
1128     hr_transaction_api.get_varchar2_value
1129     (p_transaction_step_id => l_transaction_step_id
1130     ,p_name                => 'P_DISPLAY_JOB');
1131 --
1132   p_display_pos:=
1133     hr_transaction_api.get_varchar2_value
1134     (p_transaction_step_id => l_transaction_step_id
1135     ,p_name                => 'P_DISPLAY_POS');
1136 --
1137   p_display_grade:=
1138     hr_transaction_api.get_varchar2_value
1139     (p_transaction_step_id => l_transaction_step_id
1140     ,p_name                => 'P_DISPLAY_GRADE');
1141 --
1142   p_display_ass_status:=
1143     hr_transaction_api.get_varchar2_value
1144     (p_transaction_step_id => l_transaction_step_id
1145     ,p_name                => 'P_DISPLAY_ASS_STATUS');
1146 --
1147   p_title:=
1148     hr_transaction_api.get_varchar2_value
1149     (p_transaction_step_id => l_transaction_step_id
1150     ,p_name                => 'P_TITLE');
1151 --
1152   p_project_title:=
1153     hr_transaction_api.get_varchar2_value
1154     (p_transaction_step_id => l_transaction_step_id
1155     ,p_name                => 'P_PROJECT_TITLE');
1156 --
1157   p_source_type:=
1158     hr_transaction_api.get_varchar2_value
1159     (p_transaction_step_id => l_transaction_step_id
1160     ,p_name                => 'P_SOURCE_TYPE');
1161 --
1162   p_vendor_assignment_number:=
1163     hr_transaction_api.get_varchar2_value
1164     (p_transaction_step_id => l_transaction_step_id
1165     ,p_name                => 'P_VENDOR_ASSIGNMENT_NUMBER');
1166 --
1167   p_vendor_employee_number:=
1168     hr_transaction_api.get_varchar2_value
1169     (p_transaction_step_id => l_transaction_step_id
1170     ,p_name                => 'P_VENDOR_EMPLOYEE_NUMBER');
1171 --
1172   p_default_code_comb_id := to_char(
1173     hr_transaction_api.get_number_value
1174     (p_transaction_step_id => l_transaction_step_id
1175     ,p_name                => 'P_DEFAULT_CODE_COMB_ID'));
1176 --
1177   p_set_of_books_id := to_char(
1178     hr_transaction_api.get_number_value
1179     (p_transaction_step_id => l_transaction_step_id
1180     ,p_name                => 'P_SET_OF_BOOKS_ID'));
1181 --
1182   p_vendor_id := to_char(
1183     hr_transaction_api.get_number_value
1184     (p_transaction_step_id => l_transaction_step_id
1185     ,p_name                => 'P_VENDOR_ID'));
1186 --
1187   open csr_vendor_name(to_number(p_vendor_id));
1188   fetch csr_vendor_name into p_vendor_name;
1189   close csr_vendor_name;
1190 --
1191   p_po_header_id := to_char(
1192     hr_transaction_api.get_number_value
1193     (p_transaction_step_id => l_transaction_step_id
1194     ,p_name                => 'P_PO_HEADER_ID'));
1195 --
1196   open csr_po_number(to_number(p_po_header_id));
1197   fetch csr_po_number into p_po_number;
1198   close csr_po_number;
1199 
1200   p_po_line_id := to_char(
1201     hr_transaction_api.get_number_value
1202     (p_transaction_step_id => l_transaction_step_id
1203     ,p_name                => 'P_PO_LINE_ID'));
1204 --
1205   open csr_po_line_number(to_number(p_po_line_id));
1206   fetch csr_po_line_number into p_po_line_number;
1207   close csr_po_line_number;
1208 
1209   p_vendor_site_id := to_char(
1210     hr_transaction_api.get_number_value
1211     (p_transaction_step_id => l_transaction_step_id
1212     ,p_name                => 'P_VENDOR_SITE_ID'));
1213 --
1214   open csr_vendor_site_name(to_number(p_vendor_site_id));
1215   fetch csr_vendor_site_name into p_vendor_site_name;
1216   close csr_vendor_site_name;
1217 
1218   p_projected_asgn_end :=
1219     hr_transaction_api.get_date_value
1220     (p_transaction_step_id => l_transaction_step_id
1221     ,p_name                => 'P_PROJ_ASGN_END');
1222 
1223 --
1224 
1225   p_assignment_type:=
1226     hr_transaction_api.get_varchar2_value
1227     (p_transaction_step_id => l_transaction_step_id
1228     ,p_name                => 'P_ASSIGNMENT_TYPE');
1229 --
1230   -- GSP changes
1231   p_grade_ladder_pgm_id := to_char(
1232     hr_transaction_api.get_number_value
1233     (p_transaction_step_id => l_transaction_step_id
1234     ,p_name                => 'P_GRADE_LADDER_PGM_ID'));
1235   -- End of GSP changes
1236 
1237   --p_supervisor_assignment_id := to_char(
1238   --  hr_transaction_api.get_number_value
1239   --  (p_transaction_step_id => l_transaction_step_id
1240   --  ,p_name                => 'P_SUPERVISOR_ASSIGNMENT_ID'));
1241 --
1242 
1243 hr_utility.set_location('Exiting:'||l_proc, 20);
1244 end get_assignment_from_tt;
1245 
1246 procedure get_assignment_from_tt
1247 (p_transaction_step_id in     number
1248 ,p_assignment_id             out nocopy number
1249 ,p_object_version_number     out nocopy number
1250 ,p_effective_date            out nocopy varchar2
1251 ,p_grade_id                  out nocopy number
1252 ,p_position_id               out nocopy number
1253 ,p_job_id                    out nocopy number
1254 ,p_location_id               out nocopy number
1255 ,p_special_ceiling_step_id   out nocopy number
1256 ,p_organization_id           out nocopy number
1257 ,p_employment_category       out nocopy varchar2
1258 ,p_supervisor_id             out nocopy number
1259 ,p_manager_flag              out nocopy varchar2
1260 ,p_normal_hours              out nocopy number
1261 ,p_frequency                 out nocopy varchar2
1262 ,p_time_normal_finish        out nocopy varchar2
1263 ,p_time_normal_start         out nocopy varchar2
1264 ,p_bargaining_unit_code      out nocopy varchar2
1265 ,p_labour_union_member_flag  out nocopy varchar2
1266 ,p_assignment_status_type_id  out nocopy number
1267 ,p_change_reason             out nocopy varchar2
1268 ,p_ass_attribute_category    out nocopy varchar2
1269 ,p_ass_attribute1            out nocopy varchar2
1270 ,p_ass_attribute2            out nocopy varchar2
1271 ,p_ass_attribute3            out nocopy varchar2
1272 ,p_ass_attribute4            out nocopy varchar2
1273 ,p_ass_attribute5            out nocopy varchar2
1274 ,p_ass_attribute6            out nocopy varchar2
1275 ,p_ass_attribute7            out nocopy varchar2
1276 ,p_ass_attribute8            out nocopy varchar2
1277 ,p_ass_attribute9            out nocopy varchar2
1278 ,p_ass_attribute10           out nocopy varchar2
1279 ,p_ass_attribute11           out nocopy varchar2
1280 ,p_ass_attribute12           out nocopy varchar2
1281 ,p_ass_attribute13           out nocopy varchar2
1282 ,p_ass_attribute14           out nocopy varchar2
1283 ,p_ass_attribute15           out nocopy varchar2
1284 ,p_ass_attribute16           out nocopy varchar2
1285 ,p_ass_attribute17           out nocopy varchar2
1286 ,p_ass_attribute18           out nocopy varchar2
1287 ,p_ass_attribute19           out nocopy varchar2
1288 ,p_ass_attribute20           out nocopy varchar2
1289 ,p_ass_attribute21           out nocopy varchar2
1290 ,p_ass_attribute22           out nocopy varchar2
1291 ,p_ass_attribute23           out nocopy varchar2
1292 ,p_ass_attribute24           out nocopy varchar2
1293 ,p_ass_attribute25           out nocopy varchar2
1294 ,p_ass_attribute26           out nocopy varchar2
1295 ,p_ass_attribute27           out nocopy varchar2
1296 ,p_ass_attribute28           out nocopy varchar2
1297 ,p_ass_attribute29           out nocopy varchar2
1298 ,p_ass_attribute30           out nocopy varchar2
1299 ,p_soft_coding_keyflex_id    out nocopy number
1300 ,p_people_group_id           out nocopy number
1301 ,p_contract_id               out nocopy number
1302 ,p_establishment_id          out nocopy number
1303 ,p_cagr_grade_def_id         out nocopy number
1304 ,p_collective_agreement_id   out nocopy number
1305 ,p_cagr_id_flex_num          out nocopy number
1306 ,p_payroll_id                out nocopy number
1307 ,p_pay_basis_id              out nocopy number
1308 ,p_sal_review_period         out nocopy number
1309 ,p_sal_review_period_frequency out nocopy varchar2
1310 ,p_date_probation_end        out nocopy date
1311 ,p_probation_period          out nocopy number
1312 ,p_probation_unit            out nocopy varchar2
1313 ,p_notice_period             out nocopy number
1314 ,p_notice_period_uom         out nocopy varchar2
1315 ,p_employee_category         out nocopy varchar2
1316 ,p_work_at_home              out nocopy varchar2
1317 ,p_job_post_source_name      out nocopy varchar2
1318 ,p_perf_review_period        out nocopy number
1319 ,p_perf_review_period_frequency out nocopy varchar2
1320 ,p_internal_address_line     out nocopy varchar2
1321 ,p_display_org               out nocopy varchar2
1322 ,p_display_job               out nocopy varchar2
1323 ,p_display_pos               out nocopy varchar2
1324 ,p_display_grade             out nocopy varchar2
1325 ,p_display_ass_status        out nocopy varchar2
1326 ,p_business_group_id         out nocopy number
1327 ,p_title                     out nocopy varchar2
1328 ,p_default_code_comb_id      out nocopy number
1329 ,p_set_of_books_id           out nocopy number
1330 ,p_source_type               out nocopy varchar2
1331 ,p_project_title             out nocopy varchar2
1332 ,p_vendor_assignment_number  out nocopy varchar2
1333 ,p_vendor_employee_number    out nocopy varchar2
1334 ,p_vendor_id                 out nocopy number
1335 ,p_assignment_type           out nocopy varchar2
1336 ,p_grade_ladder_pgm_id       out nocopy number
1337 ,p_supervisor_assignment_id  out nocopy number
1338 ,p_po_header_id                 out nocopy number
1339 ,p_po_line_id                out nocopy number
1340 ,p_vendor_site_id                 out nocopy number
1341 ,p_projected_asgn_end        out nocopy date
1342 
1343 ) is
1344 l_proc   varchar2(72)  := g_package||'get_assignment_from_tt';
1345 
1346 begin
1347 --
1348   hr_utility.set_location('Entering:'||l_proc, 5);
1349   p_assignment_id:=
1350     hr_transaction_api.get_number_value
1351     (p_transaction_step_id =>  p_transaction_step_id
1352     ,p_name                => 'P_ASSIGNMENT_ID');
1353 --
1354   p_business_group_id:=
1355     hr_transaction_api.get_number_value
1356     (p_transaction_step_id =>  p_transaction_step_id
1357     ,p_name                => 'P_BUSINESS_GROUP_ID');
1358 --
1359   p_effective_date:=
1360     hr_transaction_api.get_date_value
1361     (p_transaction_step_id => p_transaction_step_id
1362     ,p_name                => 'P_EFFECTIVE_DATE');
1363 --
1364   p_object_version_number :=
1365     hr_transaction_api.get_number_value
1366     (p_transaction_step_id =>  p_transaction_step_id
1367     ,p_name                => 'P_OBJECT_VERSION_NUMBER');
1368 --
1369   p_position_id :=
1370     hr_transaction_api.get_number_value
1371     (p_transaction_step_id => p_transaction_step_id
1372     ,p_name                => 'P_POSITION_ID');
1373 --
1374   p_job_id :=
1375     hr_transaction_api.get_number_value
1376     (p_transaction_step_id => p_transaction_step_id
1377     ,p_name                => 'P_JOB_ID');
1378 --
1379   p_grade_id :=
1380     hr_transaction_api.get_number_value
1381     (p_transaction_step_id => p_transaction_step_id
1382     ,p_name                => 'P_GRADE_ID');
1383 --
1384   p_location_id :=
1385     hr_transaction_api.get_number_value
1386     (p_transaction_step_id => p_transaction_step_id
1387     ,p_name                => 'P_LOCATION_ID');
1388 --
1389   p_employment_category :=
1390     hr_transaction_api.get_varchar2_value
1391     (p_transaction_step_id => p_transaction_step_id
1392     ,p_name                => 'P_EMPLOYMENT_CATEGORY');
1393 --
1394   p_supervisor_id :=
1395     hr_transaction_api.get_number_value
1396     (p_transaction_step_id => p_transaction_step_id
1397     ,p_name                => 'P_SUPERVISOR_ID');
1398 --
1399   p_manager_flag :=
1400     hr_transaction_api.get_varchar2_value
1401     (p_transaction_step_id => p_transaction_step_id
1402     ,p_name                => 'P_MANAGER_FLAG');
1403 --
1404   p_normal_hours :=
1405     hr_transaction_api.get_number_value
1406     (p_transaction_step_id => p_transaction_step_id
1407     ,p_name                => 'P_NORMAL_HOURS');
1408 --
1409   p_frequency :=
1410     hr_transaction_api.get_varchar2_value
1411     (p_transaction_step_id => p_transaction_step_id
1412     ,p_name                => 'P_FREQUENCY');
1413 --
1414   p_time_normal_finish :=
1415     substr(hr_transaction_api.get_varchar2_value
1416     (p_transaction_step_id => p_transaction_step_id
1417     ,p_name                => 'P_TIME_NORMAL_FINISH'),0,5);
1418 --
1419   p_time_normal_start :=
1420     substr(hr_transaction_api.get_varchar2_value
1421     (p_transaction_step_id => p_transaction_step_id
1422     ,p_name                => 'P_TIME_NORMAL_START'),0,5);
1423 --
1424   p_bargaining_unit_code :=
1425     hr_transaction_api.get_varchar2_value
1426     (p_transaction_step_id => p_transaction_step_id
1427     ,p_name                => 'P_BARGAINING_UNIT_CODE');
1428 --
1429   p_labour_union_member_flag :=
1430     hr_transaction_api.get_varchar2_value
1431     (p_transaction_step_id => p_transaction_step_id
1432     ,p_name                => 'P_LABOUR_UNION_MEMBER_FLAG');
1433 --
1434   p_special_ceiling_step_id :=
1435     hr_transaction_api.get_number_value
1436     (p_transaction_step_id => p_transaction_step_id
1437     ,p_name                => 'P_SPECIAL_CEILING_STEP_ID');
1438 --
1439   p_assignment_status_type_id :=
1440     hr_transaction_api.get_number_value
1441     (p_transaction_step_id => p_transaction_step_id
1442     ,p_name                => 'P_ASSIGNMENT_STATUS_TYPE_ID');
1443 --
1444   p_change_reason :=
1445     hr_transaction_api.get_varchar2_value
1446     (p_transaction_step_id => p_transaction_step_id
1447     ,p_name                => 'P_CHANGE_REASON');
1448 --
1449   p_ass_attribute_category :=
1450     hr_transaction_api.get_varchar2_value
1451     (p_transaction_step_id => p_transaction_step_id
1452     ,p_name                => 'P_ASS_ATTRIBUTE_CATEGORY');
1453 --
1454   p_ass_attribute1 :=
1455     hr_transaction_api.get_varchar2_value
1456     (p_transaction_step_id => p_transaction_step_id
1457     ,p_name                => 'P_ASS_ATTRIBUTE1');
1458 --
1459   p_ass_attribute2 :=
1460     hr_transaction_api.get_varchar2_value
1461     (p_transaction_step_id => p_transaction_step_id
1462     ,p_name                => 'P_ASS_ATTRIBUTE2');
1463 --
1464   p_ass_attribute3 :=
1465     hr_transaction_api.get_varchar2_value
1466     (p_transaction_step_id => p_transaction_step_id
1467     ,p_name                => 'P_ASS_ATTRIBUTE3');
1468 --
1469   p_ass_attribute4 :=
1470     hr_transaction_api.get_varchar2_value
1471     (p_transaction_step_id => p_transaction_step_id
1472     ,p_name                => 'P_ASS_ATTRIBUTE4');
1473 --
1474   p_ass_attribute5 :=
1475     hr_transaction_api.get_varchar2_value
1476     (p_transaction_step_id => p_transaction_step_id
1477     ,p_name                => 'P_ASS_ATTRIBUTE5');
1478 --
1479   p_ass_attribute6 :=
1480     hr_transaction_api.get_varchar2_value
1481     (p_transaction_step_id => p_transaction_step_id
1482     ,p_name                => 'P_ASS_ATTRIBUTE6');
1483 --
1484   p_ass_attribute7 :=
1485     hr_transaction_api.get_varchar2_value
1486     (p_transaction_step_id => p_transaction_step_id
1487     ,p_name                => 'P_ASS_ATTRIBUTE7');
1488 --
1489   p_ass_attribute8 :=
1490     hr_transaction_api.get_varchar2_value
1491     (p_transaction_step_id => p_transaction_step_id
1492     ,p_name                => 'P_ASS_ATTRIBUTE8');
1493 --
1494   p_ass_attribute9 :=
1495     hr_transaction_api.get_varchar2_value
1496     (p_transaction_step_id => p_transaction_step_id
1497     ,p_name                => 'P_ASS_ATTRIBUTE9');
1498 --
1499   p_ass_attribute10 :=
1500     hr_transaction_api.get_varchar2_value
1501     (p_transaction_step_id => p_transaction_step_id
1502     ,p_name                => 'P_ASS_ATTRIBUTE10');
1503 --
1504   p_ass_attribute11 :=
1505     hr_transaction_api.get_varchar2_value
1506     (p_transaction_step_id => p_transaction_step_id
1507     ,p_name                => 'P_ASS_ATTRIBUTE11');
1508 --
1509   p_ass_attribute12 :=
1510     hr_transaction_api.get_varchar2_value
1511     (p_transaction_step_id => p_transaction_step_id
1512     ,p_name                => 'P_ASS_ATTRIBUTE12');
1513 --
1514   p_ass_attribute13 :=
1515     hr_transaction_api.get_varchar2_value
1516     (p_transaction_step_id => p_transaction_step_id
1517     ,p_name                => 'P_ASS_ATTRIBUTE13');
1518 --
1519   p_ass_attribute14 :=
1520     hr_transaction_api.get_varchar2_value
1521     (p_transaction_step_id => p_transaction_step_id
1522     ,p_name                => 'P_ASS_ATTRIBUTE14');
1523 --
1524   p_ass_attribute15 :=
1525     hr_transaction_api.get_varchar2_value
1526     (p_transaction_step_id => p_transaction_step_id
1527     ,p_name                => 'P_ASS_ATTRIBUTE15');
1528 --
1529   p_ass_attribute16 :=
1530     hr_transaction_api.get_varchar2_value
1531     (p_transaction_step_id => p_transaction_step_id
1532     ,p_name                => 'P_ASS_ATTRIBUTE16');
1533 --
1534   p_ass_attribute17 :=
1535     hr_transaction_api.get_varchar2_value
1536     (p_transaction_step_id => p_transaction_step_id
1537     ,p_name                => 'P_ASS_ATTRIBUTE17');
1538 --
1539   p_ass_attribute18 :=
1540     hr_transaction_api.get_varchar2_value
1541     (p_transaction_step_id => p_transaction_step_id
1542     ,p_name                => 'P_ASS_ATTRIBUTE18');
1543 --
1544   p_ass_attribute19 :=
1545     hr_transaction_api.get_varchar2_value
1546     (p_transaction_step_id => p_transaction_step_id
1547     ,p_name                => 'P_ASS_ATTRIBUTE19');
1548 --
1549   p_ass_attribute20 :=
1550     hr_transaction_api.get_varchar2_value
1551     (p_transaction_step_id => p_transaction_step_id
1552     ,p_name                => 'P_ASS_ATTRIBUTE20');
1553 --
1554   p_ass_attribute21 :=
1555     hr_transaction_api.get_varchar2_value
1556     (p_transaction_step_id => p_transaction_step_id
1557     ,p_name                => 'P_ASS_ATTRIBUTE21');
1558 --
1559   p_ass_attribute22 :=
1560     hr_transaction_api.get_varchar2_value
1561     (p_transaction_step_id => p_transaction_step_id
1562     ,p_name                => 'P_ASS_ATTRIBUTE22');
1563 --
1564   p_ass_attribute23 :=
1565     hr_transaction_api.get_varchar2_value
1566     (p_transaction_step_id => p_transaction_step_id
1567     ,p_name                => 'P_ASS_ATTRIBUTE23');
1568 --
1569   p_ass_attribute24 :=
1570     hr_transaction_api.get_varchar2_value
1571     (p_transaction_step_id => p_transaction_step_id
1572     ,p_name                => 'P_ASS_ATTRIBUTE24');
1573 --
1574   p_ass_attribute25 :=
1575     hr_transaction_api.get_varchar2_value
1576     (p_transaction_step_id => p_transaction_step_id
1577     ,p_name                => 'P_ASS_ATTRIBUTE25');
1578 --
1579   p_ass_attribute26 :=
1580     hr_transaction_api.get_varchar2_value
1581     (p_transaction_step_id => p_transaction_step_id
1582     ,p_name                => 'P_ASS_ATTRIBUTE26');
1583 --
1584   p_ass_attribute27 :=
1585     hr_transaction_api.get_varchar2_value
1586     (p_transaction_step_id => p_transaction_step_id
1587     ,p_name                => 'P_ASS_ATTRIBUTE27');
1588 --
1589   p_ass_attribute28 :=
1590     hr_transaction_api.get_varchar2_value
1591     (p_transaction_step_id => p_transaction_step_id
1592     ,p_name                => 'P_ASS_ATTRIBUTE28');
1593 --
1594   p_ass_attribute29 :=
1595     hr_transaction_api.get_varchar2_value
1596     (p_transaction_step_id => p_transaction_step_id
1597     ,p_name                => 'P_ASS_ATTRIBUTE29');
1598 --
1599   p_ass_attribute30 :=
1600     hr_transaction_api.get_varchar2_value
1601     (p_transaction_step_id => p_transaction_step_id
1602     ,p_name                => 'P_ASS_ATTRIBUTE30');
1603 
1604   p_people_group_id:=
1605     hr_transaction_api.get_number_value
1606     (p_transaction_step_id => p_transaction_step_id
1607     ,p_name                => 'P_PEOPLE_GROUP_ID');
1608 --
1609   p_soft_coding_keyflex_id:=
1610     hr_transaction_api.get_number_value
1611     (p_transaction_step_id => p_transaction_step_id
1612     ,p_name                => 'P_SOFT_CODING_KEYFLEX_ID');
1613 --
1614   p_sal_review_period:=
1615     hr_transaction_api.get_number_value
1616     (p_transaction_step_id => p_transaction_step_id
1617     ,p_name                => 'P_SAL_REVIEW_PERIOD');
1618 --
1619   p_sal_review_period_frequency:=
1620     hr_transaction_api.get_varchar2_value
1621     (p_transaction_step_id => p_transaction_step_id
1622     ,p_name                => 'P_SAL_REVIEW_PERIOD_FREQUENCY');
1623 --
1624   p_date_probation_end :=
1625     hr_transaction_api.get_date_value
1626     (p_transaction_step_id => p_transaction_step_id
1627     ,p_name                => 'P_DATE_PROBATION_END');
1628 --
1629   p_probation_period :=
1630     hr_transaction_api.get_number_value
1631     (p_transaction_step_id => p_transaction_step_id
1632     ,p_name                => 'P_PROBATION_PERIOD');
1633 --
1634   p_probation_unit :=
1635     hr_transaction_api.get_varchar2_value
1636     (p_transaction_step_id => p_transaction_step_id
1637     ,p_name                => 'P_PROBATION_UNIT');
1638 --
1639   p_notice_period :=
1640     hr_transaction_api.get_number_value
1641     (p_transaction_step_id => p_transaction_step_id
1642     ,p_name                => 'P_NOTICE_PERIOD');
1643 --
1644   p_notice_period_uom :=
1645     hr_transaction_api.get_varchar2_value
1646     (p_transaction_step_id => p_transaction_step_id
1647     ,p_name                => 'P_NOTICE_PERIOD_UOM');
1648 --
1649   p_employee_category :=
1650     hr_transaction_api.get_varchar2_value
1651     (p_transaction_step_id => p_transaction_step_id
1652     ,p_name                => 'P_EMPLOYEE_CATEGORY');
1653 --
1654   p_work_at_home :=
1655     hr_transaction_api.get_varchar2_value
1656     (p_transaction_step_id => p_transaction_step_id
1657     ,p_name                => 'P_WORK_AT_HOME');
1658 --
1659   p_job_post_source_name :=
1660     hr_transaction_api.get_varchar2_value
1661     (p_transaction_step_id => p_transaction_step_id
1662     ,p_name                => 'P_JOB_POST_SOURCE_NAME');
1663 --
1664   p_perf_review_period :=
1665     hr_transaction_api.get_number_value
1666     (p_transaction_step_id => p_transaction_step_id
1667     ,p_name                => 'P_PERF_REVIEW_PERIOD');
1668 --
1669   p_perf_review_period_frequency :=
1670     hr_transaction_api.get_varchar2_value
1671     (p_transaction_step_id => p_transaction_step_id
1672     ,p_name                => 'P_PERF_REVIEW_PERIOD_FREQUENCY');
1673 --
1674   p_internal_address_line :=
1675     hr_transaction_api.get_varchar2_value
1676     (p_transaction_step_id => p_transaction_step_id
1677     ,p_name                => 'P_INTERNAL_ADDRESS_LINE');
1678 --
1679   p_payroll_id:=
1680     hr_transaction_api.get_number_value
1681     (p_transaction_step_id => p_transaction_step_id
1682     ,p_name                => 'P_PAYROLL_ID');
1683 --
1684   p_pay_basis_id:=
1685     hr_transaction_api.get_number_value
1686     (p_transaction_step_id => p_transaction_step_id
1687     ,p_name                => 'P_PAY_BASIS_ID');
1688 --
1689   p_contract_id:=
1690     hr_transaction_api.get_number_value
1691     (p_transaction_step_id => p_transaction_step_id
1692     ,p_name                => 'P_CONTRACT_ID');
1693 --
1694   p_establishment_id:=
1695     hr_transaction_api.get_number_value
1696     (p_transaction_step_id => p_transaction_step_id
1697     ,p_name                => 'P_ESTABLISHMENT_ID');
1698 --
1699   p_cagr_grade_def_id:=
1700     hr_transaction_api.get_number_value
1701     (p_transaction_step_id => p_transaction_step_id
1702     ,p_name                => 'P_CAGR_GRADE_DEF_ID');
1703 --
1704   p_collective_agreement_id:=
1705     hr_transaction_api.get_number_value
1706     (p_transaction_step_id => p_transaction_step_id
1707     ,p_name                => 'P_COLLECTIVE_AGREEMENT_ID');
1708 --
1709   p_cagr_id_flex_num:=
1710     hr_transaction_api.get_number_value
1711     (p_transaction_step_id => p_transaction_step_id
1712     ,p_name                => 'P_CAGR_ID_FLEX_NUM');
1713 --
1714   p_display_org:=
1715     hr_transaction_api.get_varchar2_value
1716     (p_transaction_step_id => p_transaction_step_id
1717     ,p_name                => 'P_DISPLAY_ORG');
1718 --
1719   p_display_job:=
1720     hr_transaction_api.get_varchar2_value
1721     (p_transaction_step_id => p_transaction_step_id
1722     ,p_name                => 'P_DISPLAY_JOB');
1723 --
1724   p_display_pos:=
1725     hr_transaction_api.get_varchar2_value
1726     (p_transaction_step_id => p_transaction_step_id
1727     ,p_name                => 'P_DISPLAY_POS');
1728 --
1729   p_display_grade:=
1730     hr_transaction_api.get_varchar2_value
1731     (p_transaction_step_id => p_transaction_step_id
1732     ,p_name                => 'P_DISPLAY_GRADE');
1733 --
1734   p_display_ass_status:=
1735     hr_transaction_api.get_varchar2_value
1736     (p_transaction_step_id => p_transaction_step_id
1737     ,p_name                => 'P_DISPLAY_ASS_STATUS');
1738 --
1739 --
1740   p_title:=
1741     hr_transaction_api.get_varchar2_value
1742     (p_transaction_step_id => p_transaction_step_id
1743     ,p_name                => 'P_TITLE');
1744 --
1745   p_project_title:=
1746     hr_transaction_api.get_varchar2_value
1747     (p_transaction_step_id => p_transaction_step_id
1748     ,p_name                => 'P_PROJECT_TITLE');
1749 --
1750   p_source_type:=
1751     hr_transaction_api.get_varchar2_value
1752     (p_transaction_step_id => p_transaction_step_id
1753     ,p_name                => 'P_SOURCE_TYPE');
1754 --
1755   p_vendor_assignment_number:=
1756     hr_transaction_api.get_varchar2_value
1757     (p_transaction_step_id => p_transaction_step_id
1758     ,p_name                => 'P_VENDOR_ASSIGNMENT_NUMBER');
1759 --
1760   p_vendor_employee_number:=
1761     hr_transaction_api.get_varchar2_value
1762     (p_transaction_step_id => p_transaction_step_id
1763     ,p_name                => 'P_VENDOR_EMPLOYEE_NUMBER');
1764 --
1765   p_default_code_comb_id :=
1766     hr_transaction_api.get_number_value
1767     (p_transaction_step_id => p_transaction_step_id
1768     ,p_name                => 'P_DEFAULT_CODE_COMB_ID');
1769 --
1770   p_set_of_books_id :=
1771     hr_transaction_api.get_number_value
1772     (p_transaction_step_id => p_transaction_step_id
1773     ,p_name                => 'P_SET_OF_BOOKS_ID');
1774 --
1775   p_vendor_id :=
1776     hr_transaction_api.get_number_value
1777     (p_transaction_step_id => p_transaction_step_id
1778     ,p_name                => 'P_VENDOR_ID');
1779 --
1780   p_po_header_id :=
1781     hr_transaction_api.get_number_value
1782     (p_transaction_step_id => p_transaction_step_id
1783     ,p_name                => 'P_PO_HEADER_ID');
1784 --
1785   p_po_line_id :=
1786     hr_transaction_api.get_number_value
1787     (p_transaction_step_id => p_transaction_step_id
1788     ,p_name                => 'P_PO_LINE_ID');
1789 --
1790   p_vendor_site_id :=
1791     hr_transaction_api.get_number_value
1792     (p_transaction_step_id => p_transaction_step_id
1793     ,p_name                => 'P_VENDOR_SITE_ID');
1794 --
1795 
1796   p_assignment_type:=
1797     hr_transaction_api.get_varchar2_value
1798     (p_transaction_step_id => p_transaction_step_id
1799     ,p_name                => 'P_ASSIGNMENT_TYPE');
1800 --
1801   -- GSP changes
1802   p_grade_ladder_pgm_id :=
1803     hr_transaction_api.get_number_value
1804     (p_transaction_step_id => p_transaction_step_id
1805     ,p_name                => 'P_GRADE_LADDER_PGM_ID');
1806 
1807  -- End of GSP changes
1808 
1809 --
1810   -- p_supervisor_assignment_id :=
1811   --  hr_transaction_api.get_number_value
1812   --  (p_transaction_step_id => p_transaction_step_id
1813   --  ,p_name                => 'P_SUPERVISOR_ASSIGNMENT_ID');
1814 --
1815 
1816   p_projected_asgn_end :=
1817     hr_transaction_api.get_date_value
1818     (p_transaction_step_id => p_transaction_step_id
1819     ,p_name                => 'P_PROJ_ASGN_END');
1820 
1821 hr_utility.set_location('Exiting:'||l_proc, 15);
1822 end get_assignment_from_tt;
1823 
1824 procedure process_save
1825 (p_save_mode                in     varchar2  default null
1826 ,p_item_type                in     varchar2
1827 ,p_item_key                 in     varchar2
1828 ,p_actid                    in     varchar2
1829 ,p_login_person_id          in     varchar2 default null
1830 ,p_assignment_id            in     varchar2
1831 ,p_object_version_number    in     varchar2
1832 ,p_effective_date           in     varchar2
1833 ,p_grade_id                 in     varchar2   default to_char(hr_api.g_number)
1834 ,p_position_id              in     varchar2   default to_char(hr_api.g_number)
1835 ,p_job_id                   in     varchar2   default to_char(hr_api.g_number)
1836 ,p_location_id              in     varchar2   default to_char(hr_api.g_number)
1837 ,p_special_ceiling_step_id  in     varchar2   default to_char(hr_api.g_number)
1838 ,p_organization_id          in     varchar2   default to_char(hr_api.g_number)
1839 ,p_employment_category      in     varchar2 default hr_api.g_varchar2
1840 ,p_supervisor_id            in     varchar2   default to_char(hr_api.g_number)
1841 ,p_manager_flag             in     varchar2 default hr_api.g_varchar2
1842 ,p_normal_hours             in     varchar2   default to_char(hr_api.g_number)
1843 ,p_frequency                in     varchar2 default hr_api.g_varchar2
1844 ,p_time_normal_finish       in     varchar2 default hr_api.g_varchar2
1845 ,p_time_normal_start        in     varchar2 default hr_api.g_varchar2
1846 ,p_bargaining_unit_code         in     varchar2 default hr_api.g_varchar2
1847 ,p_labour_union_member_flag     in     varchar2 default hr_api.g_varchar2
1848 ,p_assignment_status_type_id in    varchar2   default to_char(hr_api.g_number)
1849 ,p_change_reason            in     varchar2 default hr_api.g_varchar2
1850 ,p_ass_attribute_category   in     varchar2 default hr_api.g_varchar2
1851 ,p_ass_attribute1           in     varchar2 default hr_api.g_varchar2
1852 ,p_ass_attribute2           in     varchar2 default hr_api.g_varchar2
1853 ,p_ass_attribute3           in     varchar2 default hr_api.g_varchar2
1854 ,p_ass_attribute4           in     varchar2 default hr_api.g_varchar2
1855 ,p_ass_attribute5           in     varchar2 default hr_api.g_varchar2
1856 ,p_ass_attribute6           in     varchar2 default hr_api.g_varchar2
1857 ,p_ass_attribute7           in     varchar2 default hr_api.g_varchar2
1858 ,p_ass_attribute8           in     varchar2 default hr_api.g_varchar2
1859 ,p_ass_attribute9           in     varchar2 default hr_api.g_varchar2
1860 ,p_ass_attribute10          in     varchar2 default hr_api.g_varchar2
1861 ,p_ass_attribute11          in     varchar2 default hr_api.g_varchar2
1862 ,p_ass_attribute12          in     varchar2 default hr_api.g_varchar2
1863 ,p_ass_attribute13          in     varchar2 default hr_api.g_varchar2
1864 ,p_ass_attribute14          in     varchar2 default hr_api.g_varchar2
1865 ,p_ass_attribute15          in     varchar2 default hr_api.g_varchar2
1866 ,p_ass_attribute16          in     varchar2 default hr_api.g_varchar2
1867 ,p_ass_attribute17          in     varchar2 default hr_api.g_varchar2
1868 ,p_ass_attribute18          in     varchar2 default hr_api.g_varchar2
1869 ,p_ass_attribute19          in     varchar2 default hr_api.g_varchar2
1870 ,p_ass_attribute20          in     varchar2 default hr_api.g_varchar2
1871 ,p_ass_attribute21          in     varchar2 default hr_api.g_varchar2
1872 ,p_ass_attribute22          in     varchar2 default hr_api.g_varchar2
1873 ,p_ass_attribute23          in     varchar2 default hr_api.g_varchar2
1874 ,p_ass_attribute24          in     varchar2 default hr_api.g_varchar2
1875 ,p_ass_attribute25          in     varchar2 default hr_api.g_varchar2
1876 ,p_ass_attribute26          in     varchar2 default hr_api.g_varchar2
1877 ,p_ass_attribute27          in     varchar2 default hr_api.g_varchar2
1878 ,p_ass_attribute28          in     varchar2 default hr_api.g_varchar2
1879 ,p_ass_attribute29          in     varchar2 default hr_api.g_varchar2
1880 ,p_ass_attribute30          in     varchar2 default hr_api.g_varchar2
1881 ,p_soft_coding_keyflex_id   in     varchar2 default to_char(hr_api.g_number)
1882 ,p_people_group_id          in     varchar2 default to_char(hr_api.g_number)
1883 ,p_hrs_last_date            in     varchar2 default hr_api.g_varchar2
1884 ,p_display_pos              in     varchar2 default hr_api.g_varchar2
1885 ,p_display_org              in     varchar2 default hr_api.g_varchar2
1886 ,p_display_job              in     varchar2 default hr_api.g_varchar2
1887 ,p_display_ass_status       in     varchar2 default hr_api.g_varchar2
1888 ,p_grade_lov                in     varchar2 default hr_api.g_varchar2
1889 ,p_approver_id              in     varchar2   default to_char(hr_api.g_number)
1890 ,p_review_proc_call         in     varchar2
1891 ,p_display_grade            in     varchar2 default hr_api.g_varchar2
1892 ,p_contract_id                  in     varchar2 default to_char(hr_api.g_number)
1893 ,p_establishment_id         in     varchar2 default to_char(hr_api.g_number)
1894 ,p_cagr_grade_def_id        in     varchar2 default to_char(hr_api.g_number)
1895 ,p_collective_agreement_id      in     varchar2 default to_char(hr_api.g_number)
1896 ,p_cagr_id_flex_num             in     varchar2 default to_char(hr_api.g_number)
1897 ,p_payroll_id           in     varchar2   default to_char(hr_api.g_number)
1898 ,p_pay_basis_id         in     varchar2   default to_char(hr_api.g_number)
1899 ,p_sal_review_period    in     varchar2   default to_char(hr_api.g_number)
1900 ,p_sal_review_period_frequency  in     varchar2 default hr_api.g_varchar2
1901 ,p_date_probation_end       in varchar2 default to_char(hr_api.g_date,g_date_format)
1902 ,p_probation_period         in varchar2 default to_char(hr_api.g_number)
1903 ,p_probation_unit           in varchar2 default hr_api.g_varchar2
1904 ,p_notice_period             in varchar2 default to_char(hr_api.g_number)
1905 ,p_notice_period_uom        in varchar2 default hr_api.g_varchar2
1906 ,p_employee_category        in varchar2 default hr_api.g_varchar2
1907 ,p_work_at_home             in varchar2 default hr_api.g_varchar2
1908 ,p_job_post_source_name     in varchar2 default hr_api.g_varchar2
1909 ,p_perf_review_period       in varchar2 default to_char(hr_api.g_number)
1910 ,p_perf_review_period_frequency in varchar2 default hr_api.g_varchar2
1911 ,p_internal_address_line    in varchar2 default hr_api.g_varchar2
1912 ,p_element_changed          in out nocopy varchar2
1913 ,p_page_error               in out nocopy varchar2
1914 ,p_page_error_msg           in out nocopy varchar2
1915 ,p_page_warning             in out nocopy varchar2
1916 ,p_page_warning_msg         in out nocopy varchar2
1917 ,p_organization_error       in out nocopy varchar2
1918 ,p_organization_error_msg   in out nocopy varchar2
1919 ,p_job_error                in out nocopy varchar2
1920 ,p_job_error_msg            in out nocopy varchar2
1921 ,p_position_error           in out nocopy varchar2
1922 ,p_position_error_msg       in out nocopy varchar2
1923 ,p_grade_error              in out nocopy varchar2
1924 ,p_grade_error_msg          in out nocopy varchar2
1925 ,p_supervisor_error         in out nocopy varchar2
1926 ,p_supervisor_error_msg     in out nocopy varchar2
1927 ,p_location_error           in out nocopy varchar2
1928 ,p_location_error_msg       in out nocopy varchar2
1929 ,p_transaction_step_id      in out nocopy varchar2
1930 ,p_flow_mode                in     varchar2 default null
1931 ,p_rptg_grp_id              in     varchar2 default null
1932 ,p_plan_id                  in     varchar2 default null
1933 ,p_effective_date_option    in     varchar2 default null
1934 ,p_title                    in varchar2 default hr_api.g_varchar2
1935 ,p_default_code_comb_id     in varchar2 default to_char(hr_api.g_number)
1936 ,p_set_of_books_id          in varchar2 default to_char(hr_api.g_number)
1937 ,p_source_type              in varchar2 default hr_api.g_varchar2
1938 ,p_project_title            in varchar2 default hr_api.g_varchar2
1939 ,p_vendor_assignment_number in varchar2 default hr_api.g_varchar2
1940 ,p_vendor_employee_number   in varchar2 default hr_api.g_varchar2
1941 ,p_vendor_id                in varchar2 default to_char(hr_api.g_number)
1942 ,p_assignment_type          in varchar2 default hr_api.g_varchar2
1943 ,p_grade_ladder_pgm_id      in varchar2 default to_char(hr_api.g_number)
1944 ,p_supervisor_assignment_id in varchar2 default to_char(hr_api.g_number)
1945 -- GSP changes
1946 ,p_salary_change_warning    in out nocopy varchar2
1947 ,p_gsp_post_process_warning out nocopy varchar2
1948 ,p_gsp_salary_effective_date out nocopy date
1949 -- End of GSP changes
1950 ,p_po_header_id             in varchar2 default to_char(hr_api.g_number)
1951 ,p_po_line_id             in varchar2 default to_char(hr_api.g_number)
1952 ,p_vendor_site_id             in varchar2 default to_char(hr_api.g_number)
1953 ,p_projected_asgn_end in date  default g_canonical_date
1954 ) is
1955 l_proc   varchar2(72)  := g_package||'process_save';
1956 begin
1957 
1958   hr_utility.set_location('Entering:'||l_proc, 5);
1959   process_save
1960     (p_save_mode => p_save_mode
1961     ,p_item_type => p_item_type
1962     ,p_item_key => p_item_key
1963     ,p_actid => to_number(p_actid)
1964     ,p_login_person_id => to_number(p_login_person_id)
1965     ,p_assignment_id => to_number(p_assignment_id)
1966     ,p_object_version_number => to_number(p_object_version_number)
1967     ,p_effective_date => p_effective_date
1968     ,p_grade_id => to_number(p_grade_id)
1969     ,p_position_id => to_number(p_position_id)
1970     ,p_job_id  => to_number(p_job_id)
1971     ,p_location_id => to_number(p_location_id)
1972     ,p_special_ceiling_step_id => to_number(p_special_ceiling_step_id)
1973     ,p_organization_id => to_number(p_organization_id)
1974     ,p_employment_category => p_employment_category
1975     ,p_supervisor_id => to_number(p_supervisor_id)
1976     ,p_manager_flag => p_manager_flag
1977     -- Fix for Bug 2943224 for number format which
1978     -- is always in fixed decimal format
1979     ,p_normal_hours => to_number(p_normal_hours,'9999999999999999999D999',
1980                                    'NLS_NUMERIC_CHARACTERS = ''.,''')
1981     ,p_frequency => p_frequency
1982     ,p_time_normal_finish => p_time_normal_finish
1983     ,p_time_normal_start => p_time_normal_start
1984     ,p_bargaining_unit_code => p_bargaining_unit_code
1985     ,p_labour_union_member_flag => p_labour_union_member_flag
1986     ,p_assignment_status_type_id => to_number(p_assignment_status_type_id)
1987     ,p_change_reason => p_change_reason
1988     ,p_ass_attribute_category => p_ass_attribute_category
1989     ,p_ass_attribute1 => p_ass_attribute1
1990     ,p_ass_attribute2 => p_ass_attribute2
1991     ,p_ass_attribute3 => p_ass_attribute3
1992     ,p_ass_attribute4 => p_ass_attribute4
1993     ,p_ass_attribute5 => p_ass_attribute5
1994     ,p_ass_attribute6 => p_ass_attribute6
1995     ,p_ass_attribute7 => p_ass_attribute7
1996     ,p_ass_attribute8 => p_ass_attribute8
1997     ,p_ass_attribute9 => p_ass_attribute9
1998     ,p_ass_attribute10 => p_ass_attribute10
1999     ,p_ass_attribute11 => p_ass_attribute11
2000     ,p_ass_attribute12 => p_ass_attribute12
2001     ,p_ass_attribute13 => p_ass_attribute13
2002     ,p_ass_attribute14 => p_ass_attribute14
2003     ,p_ass_attribute15 => p_ass_attribute15
2004     ,p_ass_attribute16 => p_ass_attribute16
2005     ,p_ass_attribute17 => p_ass_attribute17
2006     ,p_ass_attribute18 => p_ass_attribute18
2007     ,p_ass_attribute19 => p_ass_attribute19
2008     ,p_ass_attribute20 => p_ass_attribute20
2009     ,p_ass_attribute21 => p_ass_attribute21
2010     ,p_ass_attribute22 => p_ass_attribute22
2011     ,p_ass_attribute23 => p_ass_attribute23
2012     ,p_ass_attribute24 => p_ass_attribute24
2013     ,p_ass_attribute25 => p_ass_attribute25
2014     ,p_ass_attribute26 => p_ass_attribute26
2015     ,p_ass_attribute27 => p_ass_attribute27
2016     ,p_ass_attribute28 => p_ass_attribute28
2017     ,p_ass_attribute29 => p_ass_attribute29
2018     ,p_ass_attribute30 => p_ass_attribute30
2019     ,p_soft_coding_keyflex_id => to_number(p_soft_coding_keyflex_id)
2020     ,p_people_group_id => to_number(p_people_group_id)
2021     ,p_hrs_last_date => p_hrs_last_date
2022     ,p_display_pos => p_display_pos
2023     ,p_display_org => p_display_org
2024     ,p_display_job => p_display_job
2025     ,p_display_ass_status => p_display_ass_status
2026     ,p_grade_lov => p_grade_lov
2027     ,p_approver_id => to_number(p_approver_id)
2028     ,p_review_proc_call => p_review_proc_call
2029     ,p_element_changed => p_element_changed
2030     ,p_display_grade => p_display_grade
2031     ,p_contract_id => to_number(p_contract_id)
2032     ,p_establishment_id => to_number(p_establishment_id)
2033     ,p_cagr_grade_def_id => to_number(p_cagr_grade_def_id)
2034     ,p_collective_agreement_id => to_number(p_collective_agreement_id)
2035     ,p_cagr_id_flex_num => to_number(p_cagr_id_flex_num)
2036     ,p_payroll_id => to_number(p_payroll_id)
2037     ,p_pay_basis_id => to_number(p_pay_basis_id)
2038     ,p_sal_review_period => to_number(p_sal_review_period)
2039     ,p_sal_review_period_frequency => p_sal_review_period_frequency
2040     ,p_date_probation_end => to_date(p_date_probation_end,g_date_format)
2041     ,p_probation_period => to_number(p_probation_period)
2042     ,p_probation_unit => p_probation_unit
2043     ,p_notice_period => to_number(p_notice_period)
2044     ,p_notice_period_uom => p_notice_period_uom
2045     ,p_employee_category => p_employee_category
2046     ,p_work_at_home => p_work_at_home
2047     ,p_job_post_source_name => p_job_post_source_name
2048     ,p_perf_review_period => to_number(p_perf_review_period)
2049     ,p_perf_review_period_frequency => p_perf_review_period_frequency
2050     ,p_internal_address_line => p_internal_address_line
2051     ,p_page_error => p_page_error
2052     ,p_page_error_msg => p_page_error_msg
2053     ,p_page_warning => p_page_warning
2054     ,p_page_warning_msg => p_page_warning_msg
2055     ,p_organization_error => p_organization_error
2056     ,p_organization_error_msg => p_organization_error_msg
2057     ,p_job_error => p_job_error
2058     ,p_job_error_msg => p_job_error_msg
2059     ,p_position_error => p_position_error
2060     ,p_position_error_msg => p_position_error_msg
2061     ,p_grade_error => p_grade_error
2062     ,p_grade_error_msg => p_grade_error_msg
2063     ,p_supervisor_error => p_supervisor_error
2064     ,p_supervisor_error_msg => p_supervisor_error_msg
2065     ,p_location_error => p_location_error
2066     ,p_location_error_msg => p_location_error_msg
2067     ,p_transaction_step_id => p_transaction_step_id
2068     ,p_flow_mode=>p_flow_mode
2069     ,p_rptg_grp_id           => p_rptg_grp_id
2070     ,p_plan_id                 => p_plan_id
2071     ,p_effective_date_option => p_effective_date_option
2072     ,p_title                  => p_title
2073     ,p_default_code_comb_id   => to_number(p_default_code_comb_id)
2074     ,p_set_of_books_id        => to_number(p_set_of_books_id)
2075     ,p_source_type            => p_source_type
2076     ,p_project_title          => p_project_title
2077     ,p_vendor_assignment_number => p_vendor_assignment_number
2078     ,p_vendor_employee_number   => p_vendor_employee_number
2079     ,p_vendor_id                => to_number(p_vendor_id)
2080     ,p_assignment_type          => p_assignment_type
2081     ,p_grade_ladder_pgm_id      => to_number(p_grade_ladder_pgm_id)
2082     ,p_supervisor_assignment_id => to_number(p_supervisor_assignment_id)
2083     -- GSP change
2084     ,p_salary_change_warning => p_salary_change_warning
2085     ,p_gsp_post_process_warning => p_gsp_post_process_warning
2086     ,p_gsp_salary_effective_date => p_gsp_salary_effective_date
2087     -- GSP change
2088     ,p_po_header_id => to_number(p_po_header_id)
2089     ,p_po_line_id => to_number(p_po_line_id)
2090     ,p_vendor_site_id => to_number(p_vendor_site_id)
2091     ,p_proj_asgn_end => p_projected_asgn_end
2092 
2093     );
2094     hr_utility.set_location('Exiting:'||l_proc, 15);
2095 
2096 end process_save;
2097 
2098 -- This code is for applying several workflow steps of assignment data in
2099 -- one step in the database. The first time that this is called in a process, a
2100 -- new transaction step is created and all of the data are written to the
2101 -- transaction tables. When a subsequent step in the process starts, it reads
2102 -- the previous data from the previous transaction step, and overwrites only
2103 -- the fields which it supplies so that all of the data from all of the steps
2104 -- is  validated together, and then it is saved together
2105 --
2106 procedure process_save
2107 (p_save_mode                in     varchar2  default null
2108 ,p_item_type                in     wf_items.item_type%TYPE
2109 ,p_item_key                 in     wf_items.item_key%TYPE
2110 ,p_actid                    in wf_activity_attr_values.process_activity_id%type
2111 ,p_login_person_id          in     number
2112 ,p_assignment_id            in     number
2113 ,p_object_version_number    in     number
2114 ,p_effective_date           in     varchar2
2115 ,p_grade_id                 in     number   default hr_api.g_number
2116 ,p_position_id              in     number   default hr_api.g_number
2117 ,p_job_id                   in     number   default hr_api.g_number
2118 ,p_location_id              in     number   default hr_api.g_number
2119 ,p_special_ceiling_step_id  in     number   default hr_api.g_number
2120 ,p_organization_id          in     number   default hr_api.g_number
2121 ,p_employment_category      in     varchar2 default hr_api.g_varchar2
2122 ,p_supervisor_id            in     number   default hr_api.g_number
2123 ,p_manager_flag             in     varchar2 default hr_api.g_varchar2
2124 ,p_normal_hours             in     number   default hr_api.g_number
2125 ,p_frequency                in     varchar2 default hr_api.g_varchar2
2126 ,p_time_normal_finish       in     varchar2 default hr_api.g_varchar2
2127 ,p_time_normal_start        in     varchar2 default hr_api.g_varchar2
2128 ,p_bargaining_unit_code         in     varchar2 default hr_api.g_varchar2
2129 ,p_labour_union_member_flag     in     varchar2 default hr_api.g_varchar2
2130 ,p_assignment_status_type_id in    number   default hr_api.g_number
2131 ,p_change_reason            in     varchar2 default hr_api.g_varchar2
2132 ,p_ass_attribute_category   in     varchar2 default hr_api.g_varchar2
2133 ,p_ass_attribute1           in     varchar2 default hr_api.g_varchar2
2134 ,p_ass_attribute2           in     varchar2 default hr_api.g_varchar2
2135 ,p_ass_attribute3           in     varchar2 default hr_api.g_varchar2
2136 ,p_ass_attribute4           in     varchar2 default hr_api.g_varchar2
2137 ,p_ass_attribute5           in     varchar2 default hr_api.g_varchar2
2138 ,p_ass_attribute6           in     varchar2 default hr_api.g_varchar2
2139 ,p_ass_attribute7           in     varchar2 default hr_api.g_varchar2
2140 ,p_ass_attribute8           in     varchar2 default hr_api.g_varchar2
2141 ,p_ass_attribute9           in     varchar2 default hr_api.g_varchar2
2142 ,p_ass_attribute10          in     varchar2 default hr_api.g_varchar2
2143 ,p_ass_attribute11          in     varchar2 default hr_api.g_varchar2
2144 ,p_ass_attribute12          in     varchar2 default hr_api.g_varchar2
2145 ,p_ass_attribute13          in     varchar2 default hr_api.g_varchar2
2146 ,p_ass_attribute14          in     varchar2 default hr_api.g_varchar2
2147 ,p_ass_attribute15          in     varchar2 default hr_api.g_varchar2
2148 ,p_ass_attribute16          in     varchar2 default hr_api.g_varchar2
2149 ,p_ass_attribute17          in     varchar2 default hr_api.g_varchar2
2150 ,p_ass_attribute18          in     varchar2 default hr_api.g_varchar2
2151 ,p_ass_attribute19          in     varchar2 default hr_api.g_varchar2
2152 ,p_ass_attribute20          in     varchar2 default hr_api.g_varchar2
2153 ,p_ass_attribute21          in     varchar2 default hr_api.g_varchar2
2154 ,p_ass_attribute22          in     varchar2 default hr_api.g_varchar2
2155 ,p_ass_attribute23          in     varchar2 default hr_api.g_varchar2
2156 ,p_ass_attribute24          in     varchar2 default hr_api.g_varchar2
2157 ,p_ass_attribute25          in     varchar2 default hr_api.g_varchar2
2158 ,p_ass_attribute26          in     varchar2 default hr_api.g_varchar2
2159 ,p_ass_attribute27          in     varchar2 default hr_api.g_varchar2
2160 ,p_ass_attribute28          in     varchar2 default hr_api.g_varchar2
2161 ,p_ass_attribute29          in     varchar2 default hr_api.g_varchar2
2162 ,p_ass_attribute30          in     varchar2 default hr_api.g_varchar2
2163 ,p_soft_coding_keyflex_id   in     number   default hr_api.g_number
2164 ,p_people_group_id          in     number   default hr_api.g_number
2165 ,p_hrs_last_date            in     varchar2 default hr_api.g_varchar2
2166 ,p_display_pos              in     varchar2 default hr_api.g_varchar2
2167 ,p_display_org              in     varchar2 default hr_api.g_varchar2
2168 ,p_display_job              in     varchar2 default hr_api.g_varchar2
2169 ,p_display_ass_status       in     varchar2 default hr_api.g_varchar2
2170 ,p_grade_lov                in     varchar2 default hr_api.g_varchar2
2171 ,p_approver_id              in     number   default hr_api.g_number
2172 ,p_review_proc_call         in     varchar2
2173 ,p_display_grade            in     varchar2 default hr_api.g_varchar2
2174 ,p_contract_id                  in     number default hr_api.g_number
2175 ,p_establishment_id             in     number default hr_api.g_number
2176 ,p_cagr_grade_def_id            in     number default hr_api.g_number
2177 ,p_collective_agreement_id      in     number default hr_api.g_number
2178 ,p_cagr_id_flex_num             in     number default hr_api.g_number
2179 ,p_payroll_id                   in     number default hr_api.g_number
2180 ,p_pay_basis_id                 in     number default hr_api.g_number
2181 ,p_sal_review_period            in     number default hr_api.g_number
2182 ,p_sal_review_period_frequency  in     varchar2 default hr_api.g_varchar2
2183 ,p_date_probation_end       in date default hr_api.g_date
2184 ,p_probation_period         in number default hr_api.g_number
2185 ,p_probation_unit           in varchar2 default hr_api.g_varchar2
2186 ,p_notice_period            in number default hr_api.g_number
2187 ,p_notice_period_uom        in varchar2 default hr_api.g_varchar2
2188 ,p_employee_category        in varchar2 default hr_api.g_varchar2
2189 ,p_work_at_home             in varchar2 default hr_api.g_varchar2
2190 ,p_job_post_source_name     in varchar2 default hr_api.g_varchar2
2191 ,p_perf_review_period       in number default hr_api.g_number
2192 ,p_perf_review_period_frequency in varchar2 default hr_api.g_varchar2
2193 ,p_internal_address_line    in varchar2 default hr_api.g_varchar2
2194 ,p_element_changed          in out nocopy varchar2
2195 ,p_page_error               in out nocopy varchar2
2196 ,p_page_error_msg           in out nocopy varchar2
2197 ,p_page_warning             in out nocopy varchar2
2198 ,p_page_warning_msg         in out nocopy varchar2
2199 ,p_organization_error       in out nocopy varchar2
2200 ,p_organization_error_msg   in out nocopy varchar2
2201 ,p_job_error                in out nocopy varchar2
2202 ,p_job_error_msg            in out nocopy varchar2
2203 ,p_position_error           in out nocopy varchar2
2204 ,p_position_error_msg       in out nocopy varchar2
2205 ,p_grade_error              in out nocopy varchar2
2206 ,p_grade_error_msg          in out nocopy varchar2
2207 ,p_supervisor_error         in out nocopy varchar2
2208 ,p_supervisor_error_msg     in out nocopy varchar2
2209 ,p_location_error           in out nocopy varchar2
2210 ,p_location_error_msg       in out nocopy varchar2
2211 ,p_transaction_step_id      in out nocopy varchar2
2212 ,p_flow_mode                in     varchar2 default null
2213 ,p_rptg_grp_id              in     varchar2 default null
2214 ,p_plan_id                  in     varchar2 default null
2215 ,p_effective_date_option    in     varchar2 default null
2216 ,p_title                    in varchar2 default hr_api.g_varchar2
2217 ,p_default_code_comb_id     in number default hr_api.g_number
2218 ,p_set_of_books_id          in number default hr_api.g_number
2219 ,p_source_type              in varchar2 default hr_api.g_varchar2
2220 ,p_project_title            in varchar2 default hr_api.g_varchar2
2221 ,p_vendor_assignment_number in varchar2 default hr_api.g_varchar2
2222 ,p_vendor_employee_number   in varchar2 default hr_api.g_varchar2
2223 ,p_vendor_id                in number default hr_api.g_number
2224 ,p_assignment_type          in varchar2 default hr_api.g_varchar2
2225 ,p_grade_ladder_pgm_id      in number default hr_api.g_number
2226 ,p_supervisor_assignment_id in number default hr_api.g_number
2227 -- GSP change
2228 ,p_salary_change_warning    in out nocopy varchar2
2229 ,p_gsp_post_process_warning out nocopy varchar2
2230 ,p_gsp_salary_effective_date out nocopy date
2231 -- End of GSP change
2232 ,p_po_header_id in  number default hr_api.g_number
2233 ,p_po_line_id in  number default hr_api.g_number
2234 ,p_vendor_site_id in  number default hr_api.g_number
2235 ,p_proj_asgn_end in date  default g_canonical_date
2236 
2237 ) is
2238 l_assignment_id        per_all_assignments_f.assignment_id%TYPE;
2239 l_person_id            per_all_assignments_f.person_id%TYPE;
2240 l_item_type            hr_api_transaction_steps.item_type%TYPE;
2241 l_item_key             hr_api_transaction_steps.item_key%TYPE;
2242 l_activity_id          hr_api_transaction_steps.activity_id%TYPE;
2243 l_effective_date       date;
2244 l_effective_start_date date;
2245 l_effective_end_date   date;
2246 l_transaction_id       number;
2247 l_result               varchar2(100);
2248 l_transaction_step_id  number;
2249 l_count                number;
2250 l_trans_tbl            hr_transaction_ss.transaction_table;
2251 l_assignment_rec       per_all_assignments_f%rowtype;
2252 l_old_assignment_rec   per_all_assignments_f%rowtype;
2253 l_db_assignment_rec    per_all_assignments_f%rowtype;
2254 l_date_error           boolean default false;
2255 l_special_ceiling_step_id per_all_assignments_f.special_ceiling_step_id%TYPE;
2256 l_trns_object_version_number number;
2257 l_datetrack_update_mode varchar2(30);
2258 l_last_change_date     date;
2259 l_review_proc_call     varchar2(4000);
2260 l_activity_id_list     varchar2(4000);
2261 l_element_warning      boolean default TRUE;
2262 l_hrs_last_date        varchar2(30);
2263 l_display_pos          varchar2(30);
2264 l_display_org          varchar2(30);
2265 l_display_job          varchar2(30);
2266 l_display_ass_status   varchar2(30);
2267 l_grade_lov            varchar2(30);    -- Bug #1004255 fix
2268 l_approver_id          number;
2269 l_email_id             varchar2(200);
2270 l_element_changed      varchar2(1);
2271 i_changed              boolean := FALSE; --changed by current module
2272 others_changed         boolean := FALSE; --changed by other modules
2273 ln_ovn                 number;
2274 l_display_grade        varchar2(30);  -- Bug #1067636 fix
2275 l_name                 varchar2(2000);
2276 l_original_name        varchar2(2000); --ns
2277 l_proc_order 	number;    --bug 6065339
2278 
2279 l_pay_step_id  	    number;	--bug 6405208
2280 l_pay_activity_id    number;
2281 
2282 -- variables and cursor for applicant_hire
2283 l_object_version_number number;
2284 l_per_object_version_number number;
2285 l_employee_number number;
2286 l_per_effective_start_date date;
2287 l_per_effective_end_date date;
2288 l_unaccepted_asg_del_warning boolean;
2289 l_assign_payroll_warning boolean;
2290 l_new_hire_appl_hire varchar2(10);
2291 
2292 -- 04/12/02 Salary Basis Enhancement Change Begins
2293 l_legislation_code    VARCHAR2(150) default null;
2294 -- 04/12/02 Salary Basis Enhancement Change Ends
2295 dummy varchar2(5);
2296 
2297 -- GSP changes
2298   ltt_salary_data  sshr_sal_prop_tab_typ;
2299   lv_salary_change_warning  VARCHAR2(30) default null;
2300   lv_gsp_api_mode VARCHAR2(30) default null;
2301   lv_gsp_review_proc_call VARCHAR2(30) default null;
2302      -- need to changed
2303   lv_gsp_flow_mode  VARCHAR2(30) default null;
2304   ln_gsp_step_id NUMBER;
2305   --lb_grade_ladder_changed boolean default false;
2306   --lb_grade_changed boolean default false;
2307   --lb_special_ceiling_step_id_chg boolean default false;
2308   lc_temp_grade_ladder_id NUMBER;
2309 
2310   ln_gsp_activity_id NUMBER;
2311   lv_gsp_activity_id VARCHAR2(30) default null;
2312 
2313   lb_grd_ldr_exists_flag boolean default false;
2314   l_proc   varchar2(72)  := g_package||'process_save';
2315 
2316     lc_temp_upd_sal_cd    varchar2(30);
2317     ln_gsp_txn_id number;
2318     ln_gsp_update_mode    varchar2(10);
2319 
2320     -- cursor to find whether assigned grade ladder id updates
2321     -- the salary using Grade Step Progression
2322     CURSOR lc_sal_updateable_grade_ladder
2323     (p_grade_ladder_id in per_all_assignments_f.grade_ladder_pgm_id%TYPE ,
2324      p_effective_date in date
2325     ) IS
2326      select pgm_id, update_salary_cd  from ben_pgm_f
2327         where
2328          -- grade ladder does not allow update of  salary
2329          --(update_salary_cd is null or update_salary_cd = 'NO_UPDATE')
2330          -- salary updated by the  progression system should not be manually overidden
2331          --and  (gsp_allow_override_flag is null or gsp_allow_override_flag = 'N')
2332          --and
2333          pgm_id = p_grade_ladder_id
2334          and p_effective_date between effective_start_date and effective_end_date;
2335 
2336 
2337 --End of GSP changes
2338 
2339 -- cursor to get the applicant object_version_number from
2340 -- per_all_people_f
2341 cursor per_applicant_rec(p_appl_person_id in number,
2342                          p_appl_effective_date in date) is
2343 select object_version_number
2344 from per_all_people_f
2345 where person_id = p_appl_person_id
2346 and p_appl_effective_date between effective_start_date
2347 and effective_end_date;
2348 
2349 --
2350 -- cursor to get the applicant object_version_number from
2351 -- per_all_assignments_f
2352 cursor asg_applicant_rec(p_appl_assign_id in number,
2353                          p_appl_effective_date in date) is
2354 select object_version_number,
2355        assignment_status_type_id
2356 from per_all_assignments_f
2357 where assignment_id = p_appl_assign_id
2358 and p_appl_effective_date between effective_start_date
2359 and effective_end_date;
2360 
2361 --
2362 
2363 cursor last_change_date is
2364 select max(asf.effective_start_date)
2365 from per_all_assignments_f asf,
2366      per_assignment_status_types past
2367 where asf.assignment_id=l_assignment_id
2368 and asf.ASSIGNMENT_STATUS_TYPE_ID = past.ASSIGNMENT_STATUS_TYPE_ID;
2369 -- ns 10-May-03: Since termination is handled on the effective date page
2370 -- and update insert may be allowed even if future dated termination,
2371 -- we do not need this check here
2372 -- and past.PER_SYSTEM_STATUS <> 'TERM_ASSIGN';
2373 
2374 -- New cursor to see if any assignment record exist for the selected date
2375 cursor correction_date is
2376 select null
2377 from   per_all_assignments_f asf,
2378        per_assignment_status_types past
2379 where  asf.assignment_id             = l_assignment_id
2380 and    asf.assignment_status_type_id = past.assignment_status_type_id
2381 and    asf.effective_start_date      = l_effective_date;
2382 
2383 cursor csr_org_name(p_id in number) is
2384 select name
2385 from hr_organization_units
2386 where organization_id = p_id;
2387 
2388 cursor csr_job_name(p_id in number) is
2389 select name
2390 from per_jobs_vl
2391 where job_id = p_id;
2392 
2393 cursor csr_pos_name(p_id in number) is
2394 select name
2395 from hr_positions_f
2396 where position_id = p_id
2397 and to_date(p_effective_date,g_date_format)
2398 between effective_start_date
2399 and effective_end_date;
2400 
2401 cursor csr_grade_name(p_id in number) is
2402 select name
2403 from per_grades_vl
2404 where grade_id = p_id;
2405 
2406 cursor csr_assignment is
2407 select assignment_id
2408 from per_all_assignments_f
2409 where assignment_id = p_assignment_id;
2410 
2411 cursor process_order(l_item_type in varchar2,l_item_key in varchar2) is
2412 select processing_order from hr_api_transaction_steps where
2413 item_type=l_item_type and item_key=l_item_key and api_name='HR_SUPERVISOR_SS.PROCESS_API';
2414 
2415 cursor pay_step(l_item_type in varchar2,l_item_key in varchar2) is	--bug6405208
2416 select transaction_step_id,activity_id from hr_api_transaction_steps where
2417 item_type=l_item_type and item_key=l_item_key and api_name='HR_PAY_RATE_SS.PROCESS_API';
2418 
2419 cursor step_grade_step(l_item_type in varchar2,l_item_key in varchar2) is
2420 select null from hr_api_transaction_steps where
2421 item_type=l_item_type and item_key=l_item_key and api_name='HR_PROCESS_ASSIGNMENT_STEP_SS.PROCESS_API';
2422 
2423 --
2424 begin
2425 
2426   hr_utility.set_location('Entering:'||l_proc, 5);
2427   l_object_version_number := p_object_version_number;
2428 
2429 -- first check if this is being called for registration.
2430   if p_flow_mode is not null and
2431      p_flow_mode = hr_process_assignment_ss.g_new_hire_registration
2432   then
2433     hr_utility.set_location('p_flow_mode = hr_process_assignment_ss.g_new_hire_registration:'||l_proc,10);
2434     g_registration := true;
2435   end if;
2436 
2437 -- validate seesion
2438   l_assignment_id := p_assignment_id;
2439   l_item_type := p_item_type;
2440   l_item_key := p_item_key;
2441   l_activity_id := p_actid;
2442 
2443 --Validate the p_assignment_id
2444   if g_registration then
2445     hr_utility.set_location('  if g_registration then:'||l_proc,15);
2446     open csr_assignment;
2447     fetch csr_assignment into l_assignment_id;
2448     if csr_assignment%notfound then
2449       hr_utility.set_location('    if csr_assignment%notfound then:'||l_proc,20);
2450       hr_api.legislation_hooks('DISABLE');		-- bug 6405208
2451       hr_new_user_reg_ss.processNewUserTransaction
2452         (WfItemType => l_item_type
2453         ,WfItemKey => l_item_key
2454         ,PersonId => l_person_id
2455         ,AssignmentId => l_assignment_id);
2456       hr_api.legislation_hooks('ENABLE');		-- bug 6405208
2457     end if;
2458     close csr_assignment;
2459   end if;
2460 --
2461 -- get the e-mail address for error messages
2462 --
2463 --  l_email_id := wf_engine.getItemAttrText
2464 --                (itemtype => l_item_type
2465 --                ,itemkey  => l_item_key
2466 --                ,aname    => hr_assignment_util_web.gv_wf_email_id);
2467 --
2468 -- check that we have a valid date
2469 --
2470 
2471   begin
2472     l_effective_date :=to_date(p_effective_date, g_date_format);
2473   exception
2474     when others then
2475     --Should add page level error
2476     hr_utility.set_location('Exception:Others'||l_proc,555);
2477     hr_utility.raise_error;
2478     /*hr_errors_api.addErrorToTable
2479       (p_errorfield => null
2480       ,p_errorcode  => to_char(SQLCODE)
2481       ,p_errormsg   => sqlerrm
2482       );*/
2483     l_date_error:=true;
2484   end;
2485 
2486 -- GSP Changes
2487  -- set the effective salary date
2488  p_gsp_salary_effective_date := l_effective_date;
2489 -- End of GSP changes
2490 
2491 --
2492   if not l_date_error then
2493 --
2494 -- look to see if we are looking for an element warning or error
2495 --
2496    IF hr_mee_workflow_service.check_web_page_code(
2497       p_item_type => l_item_type,
2498       p_item_key  => l_item_key,
2499       p_actid     => l_activity_id,
2500       p_web_page_section_code =>
2501                 hr_process_assignment_ss.gv_ele_warning) THEN
2502       if(hr_mee_workflow_service.get_web_page_code(
2503         p_item_type => l_item_type,
2504         p_item_key  => l_item_key,
2505         p_actID     => l_activity_id,
2506         p_web_page_section_code =>hr_process_assignment_ss.gv_ele_warning)
2507                  = 'Y') then
2508         l_element_warning:=TRUE;
2509       else
2510         l_element_warning:=FALSE;
2511       end if;
2512     ELSE
2513       l_element_warning:=FALSE;
2514     END IF;
2515     l_element_changed:=p_element_changed;
2516 
2517 
2518 -- ----------------------------------------------------------------------------
2519 -- get original database data, we need to compare it with transaction table
2520 -- and input values to decide if any changes have been made
2521 -- ----------------------------------------------------------------------------
2522     hr_assignment_common_save_web.get_asg_from_asg
2523                   (p_assignment_id     => l_assignment_id
2524                   ,p_effective_date    => l_effective_date
2525                   ,p_assignment_rec    => l_db_assignment_rec);
2526 --
2527 -- look to see if we have already a transaction step in progress
2528 -- this check is based on the api_name and not the activity_id because
2529 -- each step will have a different activity_id.
2530 --
2531     hr_assignment_common_save_web.get_step
2532           (p_item_type           => l_item_type
2533           ,p_item_key            => l_item_key
2534           ,p_api_name            => g_api_name
2535           ,p_transaction_step_id => l_transaction_step_id
2536           ,p_transaction_id      => l_transaction_id);
2537     --IF l_transaction_step_id is null then
2538 --
2539 -- There are no pre-existing steps, so this is the first time this has been
2540 -- called
2541 --
2542 
2543    -------------------------------------------------------------------------
2544    -- get the existing data from the online tables
2545    -------------------------------------------------------------------------
2546       l_old_assignment_rec := l_db_assignment_rec;
2547 
2548    IF l_transaction_step_id is null then
2549 --
2550 -- look for the last change date so that we can work out what date track
2551 -- update mode we are using
2552 --
2553       hr_utility.set_location('IF l_transaction_step_id is null then:'||l_proc,25);
2554       open last_change_date;
2555       fetch last_change_date into l_last_change_date;
2556       if last_change_date%notfound then
2557         close last_change_date;
2558       --
2559       -- if we cannot find this assignment record then there must be an error
2560       --
2561       --Should add page level error
2562         fnd_message.set_name('PER','HR_ASG_NOT_FOUND');
2563         hr_utility.raise_error;
2564         /*hr_errors_api.addErrorToTable
2565         (p_errorfield => null
2566         ,p_errormsg   => fnd_message.get);*/
2567       else
2568         close last_change_date;
2569       end if;
2570 --
2571       if l_effective_date>l_last_change_date then
2572         --
2573         -- if the effective date is after the date of the last change then we
2574         -- are doing an update
2575         --
2576         hr_utility.set_location('l_effective_date>l_last_change_date then:'||l_proc,30);
2577         l_datetrack_update_mode:='UPDATE';
2578 
2579         --  registration always need this as Correction.
2580         if p_flow_mode is not null and
2581 
2582            p_flow_mode = hr_process_assignment_ss.g_new_hire_registration
2583         then
2584            hr_utility.set_location('p_flow_mode is not null and: NewHireReg'||l_proc,35);
2585            l_datetrack_update_mode :=  'CORRECTION';
2586         end if;
2587 
2588       else
2589            open  correction_date;
2590            fetch correction_date into dummy;
2591 
2592            if correction_date%FOUND then
2593               -- if the effective date is equal an existing assignment
2594               -- start date then we
2595               -- are doing a correction
2596               --
2597               hr_utility.set_location('if correction_date%FOUND then:'||l_proc,40);
2598               l_datetrack_update_mode:='CORRECTION';
2599            else
2600               --
2601               IF ( fnd_profile.value('PQH_DT_RULE_FUTUR_CHANGE_FOUND')
2602                  = 'APPROVE_ONLY') THEN
2603                   hr_utility.set_location('Approve only:'||l_proc,45);
2604                   l_datetrack_update_mode:='UPDATE_CHANGE_INSERT';
2605               ELSE
2606                   --Throw error if date track profile is turned off and
2607                   --future dated change is found
2608                   fnd_message.set_name('PER','HR_DATE_TOO_EARLY');
2609                   hr_utility.raise_error;
2610               END  IF;
2611               --
2612            end if;
2613 
2614            close correction_date;
2615 
2616       end if;
2617 
2618       --
2619       --since this is the first time in, we take the display pos and activity_id
2620       -- as they are.
2621       --
2622 
2623       l_review_proc_call := p_review_proc_call;
2624       l_activity_id_list := l_activity_id;
2625     else
2626       -- this is not the first time through.
2627       -- get the existing data from the transaction tables
2628       -- Bug 2365524: set the l_element_changed only if the transaction
2629       -- value is not null
2630       if hr_transaction_api.get_varchar2_value
2631            (p_transaction_step_id => l_transaction_step_id
2632            ,p_name                => 'P_ELEMENT_CHANGED') is not null
2633       then
2634         l_element_changed :=
2635           hr_transaction_api.get_varchar2_value
2636            (p_transaction_step_id => l_transaction_step_id
2637            ,p_name                => 'P_ELEMENT_CHANGED');
2638       end if;
2639       --warning has already been raised.
2640       if l_element_changed is not null then
2641         l_element_warning := TRUE;
2642       end if;
2643       get_asg_from_tt
2644         (p_transaction_step_id => l_transaction_step_id
2645          ,p_assignment_rec    => l_old_assignment_rec);
2646       -- we pick up the old review page and activity_id lists to
2647       -- append to
2648       l_review_proc_call:=    hr_transaction_api.get_varchar2_value
2649         (p_transaction_step_id => l_transaction_step_id
2650         ,p_name                => 'P_REVIEW_PROC_CALL');
2651       l_activity_id_list:= hr_transaction_api.get_varchar2_value
2652         (p_transaction_step_id => l_transaction_step_id
2653         ,p_name                => 'P_REVIEW_ACTID');
2654       -- check that effective_date and date track update mode
2655       -- have not changed
2656       if (l_effective_date<> to_date(hr_transaction_ss.get_wf_effective_date
2657                         (p_transaction_step_id => l_transaction_step_id)
2658                         ,g_date_format))
2659       then
2660         --Should add page level error
2661         fnd_message.set_name('PER','HR_EFF_DATE_CHANGED');
2662         hr_utility.raise_error;
2663         /*hr_errors_api.addErrorToTable
2664           (p_errorfield => null
2665           ,p_errormsg   => fnd_message.get);*/
2666       end if;
2667       l_datetrack_update_mode:=
2668          hr_transaction_api.get_varchar2_value(
2669             p_transaction_step_id => l_transaction_step_id,
2670             p_name                => 'P_DATETRACK_UPDATE_MODE'
2671             );
2672     end if;
2673     i_changed := FALSE;
2674     others_changed := FALSE;
2675     -- Set the l_assignment_rec.business_group_id and person_id accordingly.
2676     -- Otherwise, we will get HR_7207_API_MANDATORY_ARG error in
2677     -- per_asg_bus1.chk_organization_id and other assignment fields
2678     -- because of the uninitialized value in the rec.
2679     l_assignment_rec.business_group_id :=
2680           l_old_assignment_rec.business_group_id;
2681     l_assignment_rec.person_id :=
2682           l_old_assignment_rec.person_id;
2683 if (p_grade_id = hr_api.g_number) then
2684   l_assignment_rec.grade_id := l_old_assignment_rec.grade_id;
2685   if nvl(l_old_assignment_rec.grade_id, hr_api.g_number)
2686      <> nvl(l_db_assignment_rec.grade_id, hr_api.g_number)
2687   then
2688        others_changed:=TRUE;
2689   end if;
2690 else
2691   l_assignment_rec.grade_id := p_grade_id;
2692   if (nvl(p_grade_id,-1) <> nvl(l_db_assignment_rec.grade_id,-1) ) then
2693     i_changed:=TRUE;
2694   end if;
2695 end if;
2696 
2697 if (p_position_id = hr_api.g_number) then
2698     l_assignment_rec.position_id :=
2699     l_old_assignment_rec.position_id;
2700     if nvl(l_old_assignment_rec.position_id, hr_api.g_number)
2701        <> nvl(l_db_assignment_rec.position_id, hr_api.g_number)
2702     then
2703        others_changed:=TRUE;
2704     end if;
2705 else
2706     l_assignment_rec.position_id := p_position_id;
2707     if (nvl(p_position_id, -1) <> nvl(l_db_assignment_rec.position_id,-1))
2708     then
2709        i_changed:=TRUE;
2710     end if;
2711 end if;
2712 
2713 if (p_job_id = hr_api.g_number) then
2714     l_assignment_rec.job_id :=
2715     l_old_assignment_rec.job_id;
2716     if nvl(l_old_assignment_rec.job_id, hr_api.g_number)
2717        <> nvl(l_db_assignment_rec.job_id, hr_api.g_number)
2718     then
2719        others_changed:=TRUE;
2720     end if;
2721 else
2722     l_assignment_rec.job_id := p_job_id;
2723     if (nvl(p_job_id, -1) <> nvl(l_db_assignment_rec.job_id,-1)) then
2724        i_changed:=TRUE;
2725     end if;
2726 end if;
2727 
2728 if (p_location_id = hr_api.g_number) then
2729     l_assignment_rec.location_id :=
2730     l_old_assignment_rec.location_id;
2731     if nvl(l_old_assignment_rec.location_id, hr_api.g_number)
2732        <> nvl(l_db_assignment_rec.location_id, hr_api.g_number)
2733     then
2734        others_changed:=TRUE;
2735     end if;
2736 else
2737     l_assignment_rec.location_id := p_location_id;
2738     if (nvl(p_location_id, -1) <> nvl(l_db_assignment_rec.location_id,-1))
2739     then
2740        i_changed:=TRUE;
2741     end if;
2742 end if;
2743 
2744 if (p_supervisor_id = hr_api.g_number) then
2745     l_assignment_rec.supervisor_id :=
2746     l_old_assignment_rec.supervisor_id;
2747     if nvl(l_old_assignment_rec.supervisor_id, hr_api.g_number)
2748        <> nvl(l_db_assignment_rec.supervisor_id, hr_api.g_number)
2749     then
2750        others_changed:=TRUE;
2751     end if;
2752 else
2753     l_assignment_rec.supervisor_id := p_supervisor_id;
2754     if (nvl(p_supervisor_id, -1) <> nvl(l_db_assignment_rec.supervisor_id,-1))
2755     then
2756        i_changed:=TRUE;
2757     end if;
2758 end if;
2759 
2760 if (p_special_ceiling_step_id = hr_api.g_number) then
2761     l_assignment_rec.special_ceiling_step_id :=
2762     l_old_assignment_rec.special_ceiling_step_id;
2763     if nvl(l_old_assignment_rec.special_ceiling_step_id, hr_api.g_number)
2764        <> nvl(l_db_assignment_rec.special_ceiling_step_id, hr_api.g_number)
2765     then
2766        others_changed:=TRUE;
2767     end if;
2768 else
2769     l_assignment_rec.special_ceiling_step_id := p_special_ceiling_step_id;
2770     if (nvl(p_special_ceiling_step_id, -1) <>
2771        nvl(l_db_assignment_rec.special_ceiling_step_id,-1))
2772     then
2773        i_changed:=TRUE;
2774     end if;
2775 end if;
2776 
2777 if (p_organization_id = hr_api.g_number) then
2778     l_assignment_rec.organization_id :=
2779     l_old_assignment_rec.organization_id;
2780     if nvl(l_old_assignment_rec.organization_id, hr_api.g_number)
2781        <> nvl(l_db_assignment_rec.organization_id, hr_api.g_number)
2782     then
2783        others_changed:=TRUE;
2784     end if;
2785 else
2786     l_assignment_rec.organization_id := p_organization_id;
2787     if (nvl(p_organization_id, -1) <>
2788        nvl(l_db_assignment_rec.organization_id,-1))
2789     then
2790        i_changed:=TRUE;
2791     end if;
2792 end if;
2793 
2794 if (p_employment_category = hr_api.g_varchar2) then
2795     l_assignment_rec.employment_category :=
2796     l_old_assignment_rec.employment_category;
2797     if nvl(l_old_assignment_rec.employment_category, hr_api.g_varchar2)
2798        <> nvl(l_db_assignment_rec.employment_category, hr_api.g_varchar2)
2799     then
2800        others_changed:=TRUE;
2801     end if;
2802 else
2803     l_assignment_rec.employment_category := p_employment_category;
2804     if (nvl(p_employment_category, hr_api.g_varchar2) <>
2805        nvl(l_db_assignment_rec.employment_category, hr_api.g_varchar2))
2806     then
2807        i_changed:=TRUE;
2808     end if;
2809 end if;
2810 
2811 if (p_manager_flag = hr_api.g_varchar2) then
2812     l_assignment_rec.manager_flag :=
2813     l_old_assignment_rec.manager_flag;
2814     if nvl(l_old_assignment_rec.manager_flag, hr_api.g_varchar2)
2815        <> nvl(l_db_assignment_rec.manager_flag, hr_api.g_varchar2)
2816     then
2817        others_changed:=TRUE;
2818     end if;
2819 else
2820     l_assignment_rec.manager_flag := p_manager_flag;
2821     if (nvl(p_manager_flag, hr_api.g_varchar2) <>
2822        nvl(l_db_assignment_rec.manager_flag, hr_api.g_varchar2))
2823     then
2824        i_changed:=TRUE;
2825     end if;
2826 end if;
2827 
2828 if (p_frequency = hr_api.g_varchar2) then
2829     l_assignment_rec.frequency :=
2830     l_old_assignment_rec.frequency;
2831     if nvl(l_old_assignment_rec.frequency, hr_api.g_varchar2)
2832        <> nvl(l_db_assignment_rec.frequency, hr_api.g_varchar2)
2833     then
2834        others_changed:=TRUE;
2835     end if;
2836 else
2837     l_assignment_rec.frequency := p_frequency;
2838     if (nvl(p_frequency, hr_api.g_varchar2) <>
2839        nvl(l_db_assignment_rec.frequency, hr_api.g_varchar2))
2840     then
2841        i_changed:=TRUE;
2842     end if;
2843 end if;
2844 
2845 if (p_normal_hours = hr_api.g_number) then
2846     l_assignment_rec.normal_hours :=
2847     l_old_assignment_rec.normal_hours;
2848     if nvl(l_old_assignment_rec.normal_hours, hr_api.g_number)
2849        <> nvl(l_db_assignment_rec.normal_hours, hr_api.g_number)
2850     then
2851        others_changed:=TRUE;
2852     end if;
2853 else
2854     l_assignment_rec.normal_hours := p_normal_hours;
2855     if (nvl(p_normal_hours, -1) <>
2856        nvl(l_db_assignment_rec.normal_hours,-1))
2857     then
2858        i_changed:=TRUE;
2859     end if;
2860 end if;
2861 
2862 if (p_time_normal_finish = hr_api.g_varchar2) then
2863     l_assignment_rec.time_normal_finish :=
2864     l_old_assignment_rec.time_normal_finish;
2865     if nvl(l_old_assignment_rec.time_normal_finish, hr_api.g_varchar2)
2866        <> nvl(l_db_assignment_rec.time_normal_finish, hr_api.g_varchar2)
2867     then
2868        others_changed:=TRUE;
2869     end if;
2870 else
2871     l_assignment_rec.time_normal_finish := p_time_normal_finish;
2872     if (nvl(p_time_normal_finish, hr_api.g_varchar2) <>
2873        nvl(l_db_assignment_rec.time_normal_finish, hr_api.g_varchar2))
2874     then
2875        i_changed:=TRUE;
2876     end if;
2877 end if;
2878 
2879 if (p_time_normal_start = hr_api.g_varchar2) then
2880     l_assignment_rec.time_normal_start :=
2881     l_old_assignment_rec.time_normal_start;
2882     if nvl(l_old_assignment_rec.time_normal_start, hr_api.g_varchar2)
2883        <> nvl(l_db_assignment_rec.time_normal_start, hr_api.g_varchar2)
2884     then
2885        others_changed:=TRUE;
2886     end if;
2887 else
2888     l_assignment_rec.time_normal_start := p_time_normal_start;
2889     if (nvl(p_time_normal_start, hr_api.g_varchar2) <>
2890        nvl(l_db_assignment_rec.time_normal_start, hr_api.g_varchar2))
2891     then
2892        i_changed:=TRUE;
2893     end if;
2894 end if;
2895 
2896 if (p_bargaining_unit_code = hr_api.g_varchar2) then
2897     l_assignment_rec.bargaining_unit_code :=
2898     l_old_assignment_rec.bargaining_unit_code;
2899     if nvl(l_old_assignment_rec.bargaining_unit_code, hr_api.g_varchar2)
2900        <> nvl(l_db_assignment_rec.bargaining_unit_code, hr_api.g_varchar2)
2901     then
2902        others_changed:=TRUE;
2903     end if;
2904 else
2905     l_assignment_rec.bargaining_unit_code := p_bargaining_unit_code;
2906     if (nvl(p_bargaining_unit_code, hr_api.g_varchar2) <>
2907        nvl(l_db_assignment_rec.bargaining_unit_code, hr_api.g_varchar2))
2908     then
2909        i_changed:=TRUE;
2910     end if;
2911 end if;
2912 
2913 if (p_labour_union_member_flag = hr_api.g_varchar2) then
2914     l_assignment_rec.labour_union_member_flag :=
2915     l_old_assignment_rec.labour_union_member_flag;
2916     if nvl(l_old_assignment_rec.labour_union_member_flag, hr_api.g_varchar2)
2917        <> nvl(l_db_assignment_rec.labour_union_member_flag, hr_api.g_varchar2)
2918     then
2919        others_changed:=TRUE;
2920     end if;
2921 else
2922     l_assignment_rec.labour_union_member_flag := p_labour_union_member_flag;
2923     if (nvl(p_labour_union_member_flag, hr_api.g_varchar2) <>
2924        nvl(l_db_assignment_rec.labour_union_member_flag, hr_api.g_varchar2))
2925     then
2926        i_changed:=TRUE;
2927     end if;
2928 end if;
2929 
2930 
2931 if (p_ass_attribute_category = hr_api.g_varchar2) then
2932     l_assignment_rec.ass_attribute_category :=
2933     l_old_assignment_rec.ass_attribute_category;
2934     if nvl(l_old_assignment_rec.ass_attribute_category, hr_api.g_varchar2)
2935        <> nvl(l_db_assignment_rec.ass_attribute_category, hr_api.g_varchar2)
2936     then
2937        others_changed:=TRUE;
2938     end if;
2939 else
2940     l_assignment_rec.ass_attribute_category := p_ass_attribute_category;
2941     if (nvl(p_ass_attribute_category, hr_api.g_varchar2) <>
2942        nvl(l_db_assignment_rec.ass_attribute_category, hr_api.g_varchar2))
2943     then
2944        i_changed:=TRUE;
2945     end if;
2946 end if;
2947 
2948 if (p_assignment_status_type_id = hr_api.g_number) then
2949     l_assignment_rec.assignment_status_type_id :=
2950     l_old_assignment_rec.assignment_status_type_id;
2951     if nvl(l_old_assignment_rec.assignment_status_type_id, hr_api.g_number)
2952        <> nvl(l_db_assignment_rec.assignment_status_type_id, hr_api.g_number)
2953     then
2954        others_changed:=TRUE;
2955     end if;
2956 else
2957     l_assignment_rec.assignment_status_type_id := p_assignment_status_type_id;
2958     if (nvl(p_assignment_status_type_id, -1) <>
2959        nvl(l_db_assignment_rec.assignment_status_type_id, -1))
2960     then
2961        i_changed:=TRUE;
2962     end if;
2963 end if;
2964 if (p_change_reason = hr_api.g_varchar2) then
2965     l_assignment_rec.change_reason :=
2966     l_old_assignment_rec.change_reason;
2967     if (nvl(l_db_assignment_rec.change_reason, hr_api.g_varchar2) <>
2968        nvl(l_old_assignment_rec.change_reason, hr_api.g_varchar2))
2969     then
2970        others_changed:=TRUE;
2971     end if;
2972 else
2973     l_assignment_rec.change_reason := p_change_reason;
2974     if (nvl(p_change_reason, hr_api.g_varchar2) <>
2975        nvl(l_db_assignment_rec.change_reason, hr_api.g_varchar2))
2976     then
2977        i_changed:=TRUE;
2978     end if;
2979 end if;
2980 
2981 if (p_ass_attribute1 = hr_api.g_varchar2) then
2982     l_assignment_rec.ass_attribute1 :=
2983     l_old_assignment_rec.ass_attribute1;
2984     if (nvl(l_db_assignment_rec.ass_attribute1, hr_api.g_varchar2) <>
2985        nvl(l_old_assignment_rec.ass_attribute1, hr_api.g_varchar2))
2986     then
2987        others_changed:=TRUE;
2988     end if;
2989 else
2990     l_assignment_rec.ass_attribute1 := p_ass_attribute1;
2991     if (nvl(p_ass_attribute1, hr_api.g_varchar2) <>
2992        nvl(l_db_assignment_rec.ass_attribute1, hr_api.g_varchar2))
2993     then
2994        i_changed:=TRUE;
2995     end if;
2996 end if;
2997 
2998 if (p_ass_attribute2 = hr_api.g_varchar2) then
2999     l_assignment_rec.ass_attribute2 :=
3000     l_old_assignment_rec.ass_attribute2;
3001     if (nvl(l_db_assignment_rec.ass_attribute2, hr_api.g_varchar2) <>
3002        nvl(l_old_assignment_rec.ass_attribute2, hr_api.g_varchar2))
3003     then
3004        others_changed:=TRUE;
3005     end if;
3006 else
3007     l_assignment_rec.ass_attribute2 := p_ass_attribute2;
3008     if (nvl(p_ass_attribute2, hr_api.g_varchar2) <>
3009        nvl(l_db_assignment_rec.ass_attribute2, hr_api.g_varchar2))
3010     then
3011        i_changed:=TRUE;
3012     end if;
3013 end if;
3014 
3015 if (p_ass_attribute3 = hr_api.g_varchar2) then
3016     l_assignment_rec.ass_attribute3 :=
3017     l_old_assignment_rec.ass_attribute3;
3018     if (nvl(l_db_assignment_rec.ass_attribute3, hr_api.g_varchar2) <>
3019        nvl(l_old_assignment_rec.ass_attribute3, hr_api.g_varchar2))
3020     then
3021        others_changed:=TRUE;
3022     end if;
3023 else
3024     l_assignment_rec.ass_attribute3 := p_ass_attribute3;
3025     if (nvl(p_ass_attribute3, hr_api.g_varchar2) <>
3026        nvl(l_db_assignment_rec.ass_attribute3, hr_api.g_varchar2))
3027     then
3028        i_changed:=TRUE;
3029     end if;
3030 end if;
3031 
3032 if (p_ass_attribute4 = hr_api.g_varchar2) then
3033     l_assignment_rec.ass_attribute4 :=
3034     l_old_assignment_rec.ass_attribute4;
3035     if (nvl(l_db_assignment_rec.ass_attribute4, hr_api.g_varchar2) <>
3036        nvl(l_old_assignment_rec.ass_attribute4, hr_api.g_varchar2))
3037     then
3038        others_changed:=TRUE;
3039     end if;
3040 else
3041     l_assignment_rec.ass_attribute4 := p_ass_attribute4;
3042     if (nvl(p_ass_attribute4, hr_api.g_varchar2) <>
3043        nvl(l_db_assignment_rec.ass_attribute4, hr_api.g_varchar2))
3044     then
3045        i_changed:=TRUE;
3046     end if;
3047 end if;
3048 
3049 if (p_ass_attribute5 = hr_api.g_varchar2) then
3050     l_assignment_rec.ass_attribute5 :=
3051     l_old_assignment_rec.ass_attribute5;
3052     if (nvl(l_db_assignment_rec.ass_attribute5, hr_api.g_varchar2) <>
3053        nvl(l_old_assignment_rec.ass_attribute5, hr_api.g_varchar2))
3054     then
3055        others_changed:=TRUE;
3056     end if;
3057 else
3058     l_assignment_rec.ass_attribute5 := p_ass_attribute5;
3059     if (nvl(p_ass_attribute5, hr_api.g_varchar2) <>
3060        nvl(l_db_assignment_rec.ass_attribute5, hr_api.g_varchar2))
3061     then
3062        i_changed:=TRUE;
3063     end if;
3064 end if;
3065 
3066 if (p_ass_attribute6 = hr_api.g_varchar2) then
3067     l_assignment_rec.ass_attribute6 :=
3068     l_old_assignment_rec.ass_attribute6;
3069     if (nvl(l_db_assignment_rec.ass_attribute6, hr_api.g_varchar2) <>
3070        nvl(l_old_assignment_rec.ass_attribute6, hr_api.g_varchar2))
3071     then
3072        others_changed:=TRUE;
3073     end if;
3074 else
3075     l_assignment_rec.ass_attribute6 := p_ass_attribute6;
3076     if (nvl(p_ass_attribute6, hr_api.g_varchar2) <>
3077        nvl(l_db_assignment_rec.ass_attribute6, hr_api.g_varchar2))
3078     then
3079        i_changed:=TRUE;
3080     end if;
3081 end if;
3082 
3083 if (p_ass_attribute7 = hr_api.g_varchar2) then
3084     l_assignment_rec.ass_attribute7 :=
3085     l_old_assignment_rec.ass_attribute7;
3086     if (nvl(l_db_assignment_rec.ass_attribute7, hr_api.g_varchar2) <>
3087        nvl(l_old_assignment_rec.ass_attribute7, hr_api.g_varchar2))
3088     then
3089        others_changed:=TRUE;
3090     end if;
3091 else
3092     l_assignment_rec.ass_attribute7 := p_ass_attribute7;
3093     if (nvl(p_ass_attribute7, hr_api.g_varchar2) <>
3094        nvl(l_db_assignment_rec.ass_attribute7, hr_api.g_varchar2))
3095     then
3096        i_changed:=TRUE;
3097     end if;
3098 end if;
3099 
3100 if (p_ass_attribute8 = hr_api.g_varchar2) then
3101     l_assignment_rec.ass_attribute8 :=
3102     l_old_assignment_rec.ass_attribute8;
3103     if (nvl(l_db_assignment_rec.ass_attribute8, hr_api.g_varchar2) <>
3104        nvl(l_old_assignment_rec.ass_attribute8, hr_api.g_varchar2))
3105     then
3106        others_changed:=TRUE;
3107     end if;
3108 else
3109     l_assignment_rec.ass_attribute8 := p_ass_attribute8;
3110     if (nvl(p_ass_attribute8, hr_api.g_varchar2) <>
3111        nvl(l_db_assignment_rec.ass_attribute8, hr_api.g_varchar2))
3112     then
3113        i_changed:=TRUE;
3114     end if;
3115 end if;
3116 
3117 if (p_ass_attribute9 = hr_api.g_varchar2) then
3118     l_assignment_rec.ass_attribute9 :=
3119     l_old_assignment_rec.ass_attribute9;
3120     if (nvl(l_db_assignment_rec.ass_attribute9, hr_api.g_varchar2) <>
3121        nvl(l_old_assignment_rec.ass_attribute9, hr_api.g_varchar2))
3122     then
3123        others_changed:=TRUE;
3124     end if;
3125 else
3126     l_assignment_rec.ass_attribute9 :=p_ass_attribute9;
3127     if (nvl(p_ass_attribute9, hr_api.g_varchar2) <>
3128        nvl(l_db_assignment_rec.ass_attribute9, hr_api.g_varchar2))
3129     then
3130        i_changed:=TRUE;
3131     end if;
3132 end if;
3133 
3134 if (p_ass_attribute10 = hr_api.g_varchar2) then
3135     l_assignment_rec.ass_attribute10 :=
3136     l_old_assignment_rec.ass_attribute10;
3137     if (nvl(l_db_assignment_rec.ass_attribute10, hr_api.g_varchar2) <>
3138        nvl(l_old_assignment_rec.ass_attribute10, hr_api.g_varchar2))
3139     then
3140        others_changed:=TRUE;
3141     end if;
3142 else
3143     l_assignment_rec.ass_attribute10 := p_ass_attribute10;
3144     if (nvl(p_ass_attribute10, hr_api.g_varchar2) <>
3145        nvl(l_db_assignment_rec.ass_attribute10, hr_api.g_varchar2))
3146     then
3147        i_changed:=TRUE;
3148     end if;
3149 end if;
3150 
3151 if (p_ass_attribute11 = hr_api.g_varchar2) then
3152     l_assignment_rec.ass_attribute11 :=
3153     l_old_assignment_rec.ass_attribute11;
3154     if (nvl(l_db_assignment_rec.ass_attribute11, hr_api.g_varchar2) <>
3155        nvl(l_old_assignment_rec.ass_attribute11, hr_api.g_varchar2))
3156     then
3157        others_changed:=TRUE;
3158     end if;
3159 else
3160     l_assignment_rec.ass_attribute11 := p_ass_attribute11;
3161     if (nvl(p_ass_attribute11, hr_api.g_varchar2) <>
3162        nvl(l_db_assignment_rec.ass_attribute11, hr_api.g_varchar2))
3163     then
3164        i_changed:=TRUE;
3165     end if;
3166 end if;
3167 
3168 if (p_ass_attribute12 = hr_api.g_varchar2) then
3169     l_assignment_rec.ass_attribute12 :=
3170     l_old_assignment_rec.ass_attribute12;
3171     if (nvl(l_db_assignment_rec.ass_attribute12, hr_api.g_varchar2) <>
3172        nvl(l_old_assignment_rec.ass_attribute12, hr_api.g_varchar2))
3173     then
3174        others_changed:=TRUE;
3175     end if;
3176 else
3177     l_assignment_rec.ass_attribute12 := p_ass_attribute12;
3178     if (nvl(p_ass_attribute12, hr_api.g_varchar2) <>
3179        nvl(l_db_assignment_rec.ass_attribute12, hr_api.g_varchar2))
3180     then
3181        i_changed:=TRUE;
3182     end if;
3183 end if;
3184 
3185 if (p_ass_attribute13 = hr_api.g_varchar2) then
3186     l_assignment_rec.ass_attribute13 :=
3187     l_old_assignment_rec.ass_attribute13;
3188     if (nvl(l_db_assignment_rec.ass_attribute13, hr_api.g_varchar2) <>
3189        nvl(l_old_assignment_rec.ass_attribute13, hr_api.g_varchar2))
3190     then
3191        others_changed:=TRUE;
3192     end if;
3193 else
3194     l_assignment_rec.ass_attribute13 := p_ass_attribute13;
3195     if (nvl(p_ass_attribute13, hr_api.g_varchar2) <>
3196        nvl(l_db_assignment_rec.ass_attribute13, hr_api.g_varchar2))
3197     then
3198        i_changed:=TRUE;
3199     end if;
3200 end if;
3201 
3202 if (p_ass_attribute14 = hr_api.g_varchar2) then
3203     l_assignment_rec.ass_attribute14 :=
3204     l_old_assignment_rec.ass_attribute14;
3205     if (nvl(l_db_assignment_rec.ass_attribute14, hr_api.g_varchar2) <>
3206        nvl(l_old_assignment_rec.ass_attribute14, hr_api.g_varchar2))
3207     then
3208        others_changed:=TRUE;
3209     end if;
3210 else
3211     l_assignment_rec.ass_attribute14 := p_ass_attribute14;
3212     if (nvl(p_ass_attribute14, hr_api.g_varchar2) <>
3213        nvl(l_db_assignment_rec.ass_attribute14, hr_api.g_varchar2))
3214     then
3215        i_changed:=TRUE;
3216     end if;
3217 end if;
3218 
3219 if (p_ass_attribute15 = hr_api.g_varchar2) then
3220     l_assignment_rec.ass_attribute15 :=
3221     l_old_assignment_rec.ass_attribute15;
3222     if (nvl(l_db_assignment_rec.ass_attribute15, hr_api.g_varchar2) <>
3223        nvl(l_old_assignment_rec.ass_attribute15, hr_api.g_varchar2))
3224     then
3225        others_changed:=TRUE;
3226     end if;
3227 else
3228     l_assignment_rec.ass_attribute15 := p_ass_attribute15;
3229     if (nvl(p_ass_attribute15, hr_api.g_varchar2) <>
3230        nvl(l_db_assignment_rec.ass_attribute15, hr_api.g_varchar2))
3231     then
3232        i_changed:=TRUE;
3233     end if;
3234 end if;
3235 
3236 if (p_ass_attribute16 = hr_api.g_varchar2) then
3237     l_assignment_rec.ass_attribute16 :=
3238     l_old_assignment_rec.ass_attribute16;
3239     if (nvl(l_db_assignment_rec.ass_attribute16, hr_api.g_varchar2) <>
3240        nvl(l_old_assignment_rec.ass_attribute16, hr_api.g_varchar2))
3241     then
3242        others_changed:=TRUE;
3243     end if;
3244 else
3245     l_assignment_rec.ass_attribute16 := p_ass_attribute16;
3246     if (nvl(p_ass_attribute16, hr_api.g_varchar2) <>
3247        nvl(l_db_assignment_rec.ass_attribute16, hr_api.g_varchar2))
3248     then
3249        i_changed:=TRUE;
3250     end if;
3251 end if;
3252 
3253 if (p_ass_attribute17 = hr_api.g_varchar2) then
3254     l_assignment_rec.ass_attribute17 :=
3255     l_old_assignment_rec.ass_attribute17;
3256     if (nvl(l_db_assignment_rec.ass_attribute17, hr_api.g_varchar2) <>
3257        nvl(l_old_assignment_rec.ass_attribute17, hr_api.g_varchar2))
3258     then
3259        others_changed:=TRUE;
3260     end if;
3261 else
3262     l_assignment_rec.ass_attribute17 := p_ass_attribute17;
3263     if (nvl(p_ass_attribute17, hr_api.g_varchar2) <>
3264        nvl(l_db_assignment_rec.ass_attribute17, hr_api.g_varchar2))
3265     then
3266        i_changed:=TRUE;
3267     end if;
3268 end if;
3269 
3270 if (p_ass_attribute18 = hr_api.g_varchar2) then
3271     l_assignment_rec.ass_attribute18 :=
3272     l_old_assignment_rec.ass_attribute18;
3273     if (nvl(l_db_assignment_rec.ass_attribute18, hr_api.g_varchar2) <>
3274        nvl(l_old_assignment_rec.ass_attribute18, hr_api.g_varchar2))
3275     then
3276        others_changed:=TRUE;
3277     end if;
3278 else
3279     l_assignment_rec.ass_attribute18 := p_ass_attribute18;
3280     if (nvl(p_ass_attribute18, hr_api.g_varchar2) <>
3281        nvl(l_db_assignment_rec.ass_attribute18, hr_api.g_varchar2))
3282     then
3283        i_changed:=TRUE;
3284     end if;
3285 end if;
3286 
3287 if (p_ass_attribute19 = hr_api.g_varchar2) then
3288     l_assignment_rec.ass_attribute19 :=
3289     l_old_assignment_rec.ass_attribute19;
3290     if (nvl(l_db_assignment_rec.ass_attribute19, hr_api.g_varchar2) <>
3291        nvl(l_old_assignment_rec.ass_attribute19, hr_api.g_varchar2))
3292     then
3293        others_changed:=TRUE;
3294     end if;
3295 else
3296     l_assignment_rec.ass_attribute19 := p_ass_attribute19;
3297     if (nvl(p_ass_attribute19, hr_api.g_varchar2) <>
3298        nvl(l_db_assignment_rec.ass_attribute19, hr_api.g_varchar2))
3299     then
3300        i_changed:=TRUE;
3301     end if;
3302 end if;
3303 
3304 if (p_ass_attribute20 = hr_api.g_varchar2) then
3305     l_assignment_rec.ass_attribute20 :=
3306     l_old_assignment_rec.ass_attribute20;
3307     if (nvl(l_db_assignment_rec.ass_attribute20, hr_api.g_varchar2) <>
3308        nvl(l_old_assignment_rec.ass_attribute20, hr_api.g_varchar2))
3309     then
3310        others_changed:=TRUE;
3311     end if;
3312 else
3313     l_assignment_rec.ass_attribute20 := p_ass_attribute20;
3314     if (nvl(p_ass_attribute20, hr_api.g_varchar2) <>
3315        nvl(l_db_assignment_rec.ass_attribute20, hr_api.g_varchar2))
3316     then
3317        i_changed:=TRUE;
3318     end if;
3319 end if;
3320 
3321 if (p_ass_attribute21 = hr_api.g_varchar2) then
3322     l_assignment_rec.ass_attribute21 :=
3323     l_old_assignment_rec.ass_attribute21;
3324     if (nvl(l_db_assignment_rec.ass_attribute21, hr_api.g_varchar2) <>
3325        nvl(l_old_assignment_rec.ass_attribute21, hr_api.g_varchar2))
3326     then
3327        others_changed:=TRUE;
3328     end if;
3329 else
3330     l_assignment_rec.ass_attribute21 := p_ass_attribute21;
3331     if (nvl(p_ass_attribute21, hr_api.g_varchar2) <>
3332        nvl(l_db_assignment_rec.ass_attribute21, hr_api.g_varchar2))
3333     then
3334        i_changed:=TRUE;
3335     end if;
3336 end if;
3337 
3338 if (p_ass_attribute22 = hr_api.g_varchar2) then
3339     l_assignment_rec.ass_attribute22 :=
3340     l_old_assignment_rec.ass_attribute22;
3341     if (nvl(l_db_assignment_rec.ass_attribute22, hr_api.g_varchar2) <>
3342        nvl(l_old_assignment_rec.ass_attribute22, hr_api.g_varchar2))
3343     then
3344        others_changed:=TRUE;
3345     end if;
3346 else
3347     l_assignment_rec.ass_attribute22 := p_ass_attribute22;
3348     if (nvl(p_ass_attribute22, hr_api.g_varchar2) <>
3349        nvl(l_db_assignment_rec.ass_attribute22, hr_api.g_varchar2))
3350     then
3351        i_changed:=TRUE;
3352     end if;
3353 end if;
3354 
3355 if (p_ass_attribute23 = hr_api.g_varchar2) then
3356     l_assignment_rec.ass_attribute23 :=
3357     l_old_assignment_rec.ass_attribute23;
3358     if (nvl(l_db_assignment_rec.ass_attribute23, hr_api.g_varchar2) <>
3359        nvl(l_old_assignment_rec.ass_attribute23, hr_api.g_varchar2))
3360     then
3361        others_changed:=TRUE;
3362     end if;
3363 else
3364     l_assignment_rec.ass_attribute23 := p_ass_attribute23;
3365     if (nvl(p_ass_attribute23, hr_api.g_varchar2) <>
3366        nvl(l_db_assignment_rec.ass_attribute23, hr_api.g_varchar2))
3367     then
3368        i_changed:=TRUE;
3369     end if;
3370 end if;
3371 
3372 if (p_ass_attribute24 = hr_api.g_varchar2) then
3373     l_assignment_rec.ass_attribute24 :=
3374     l_old_assignment_rec.ass_attribute24;
3375     if (nvl(l_db_assignment_rec.ass_attribute24, hr_api.g_varchar2) <>
3376        nvl(l_old_assignment_rec.ass_attribute24, hr_api.g_varchar2))
3377     then
3378        others_changed:=TRUE;
3379     end if;
3380 else
3381     l_assignment_rec.ass_attribute24 := p_ass_attribute24;
3382     if (nvl(p_ass_attribute24, hr_api.g_varchar2) <>
3383        nvl(l_db_assignment_rec.ass_attribute24, hr_api.g_varchar2))
3384     then
3385        i_changed:=TRUE;
3386     end if;
3387 end if;
3388 
3389 if (p_ass_attribute25 = hr_api.g_varchar2) then
3390     l_assignment_rec.ass_attribute25 :=
3391     l_old_assignment_rec.ass_attribute25;
3392     if (nvl(l_db_assignment_rec.ass_attribute25, hr_api.g_varchar2) <>
3393        nvl(l_old_assignment_rec.ass_attribute25, hr_api.g_varchar2))
3394     then
3395        others_changed:=TRUE;
3396     end if;
3397 else
3398     l_assignment_rec.ass_attribute25 := p_ass_attribute25;
3399     if (nvl(p_ass_attribute25, hr_api.g_varchar2) <>
3400        nvl(l_db_assignment_rec.ass_attribute25, hr_api.g_varchar2))
3401     then
3402        i_changed:=TRUE;
3403     end if;
3404 end if;
3405 
3406 if (p_ass_attribute26 = hr_api.g_varchar2) then
3407     l_assignment_rec.ass_attribute26 :=
3408     l_old_assignment_rec.ass_attribute26;
3409     if (nvl(l_db_assignment_rec.ass_attribute26, hr_api.g_varchar2) <>
3410        nvl(l_old_assignment_rec.ass_attribute26, hr_api.g_varchar2))
3411     then
3412        others_changed:=TRUE;
3413     end if;
3414 else
3415     l_assignment_rec.ass_attribute26 := p_ass_attribute26;
3416     if (nvl(p_ass_attribute26, hr_api.g_varchar2) <>
3417        nvl(l_db_assignment_rec.ass_attribute26, hr_api.g_varchar2))
3418     then
3419        i_changed:=TRUE;
3420     end if;
3421 end if;
3422 
3423 if (p_ass_attribute27 = hr_api.g_varchar2) then
3424     l_assignment_rec.ass_attribute27 :=
3425     l_old_assignment_rec.ass_attribute27;
3426     if (nvl(l_db_assignment_rec.ass_attribute27, hr_api.g_varchar2) <>
3427        nvl(l_old_assignment_rec.ass_attribute27, hr_api.g_varchar2))
3428     then
3429        others_changed:=TRUE;
3430     end if;
3431 else
3432     l_assignment_rec.ass_attribute27 := p_ass_attribute27;
3433     if (nvl(p_ass_attribute27, hr_api.g_varchar2) <>
3434        nvl(l_db_assignment_rec.ass_attribute27, hr_api.g_varchar2))
3435     then
3436        i_changed:=TRUE;
3437     end if;
3438 end if;
3439 
3440 if (p_ass_attribute28 = hr_api.g_varchar2) then
3441     l_assignment_rec.ass_attribute28 :=
3442     l_old_assignment_rec.ass_attribute28;
3443     if (nvl(l_db_assignment_rec.ass_attribute28, hr_api.g_varchar2) <>
3444        nvl(l_old_assignment_rec.ass_attribute28, hr_api.g_varchar2))
3445     then
3446        others_changed:=TRUE;
3447     end if;
3448 else
3449     l_assignment_rec.ass_attribute28 := p_ass_attribute28;
3450     if (nvl(p_ass_attribute28, hr_api.g_varchar2) <>
3451        nvl(l_db_assignment_rec.ass_attribute28, hr_api.g_varchar2))
3452     then
3453        i_changed:=TRUE;
3454     end if;
3455 end if;
3456 
3457 if (p_ass_attribute29 = hr_api.g_varchar2) then
3458     l_assignment_rec.ass_attribute29 :=
3459     l_old_assignment_rec.ass_attribute29;
3460     if (nvl(l_db_assignment_rec.ass_attribute29, hr_api.g_varchar2) <>
3461        nvl(l_old_assignment_rec.ass_attribute29, hr_api.g_varchar2))
3462     then
3463        others_changed:=TRUE;
3464     end if;
3465 else
3466     l_assignment_rec.ass_attribute29 := p_ass_attribute29;
3467     if (nvl(p_ass_attribute29, hr_api.g_varchar2) <>
3468        nvl(l_db_assignment_rec.ass_attribute29, hr_api.g_varchar2))
3469     then
3470        i_changed:=TRUE;
3471     end if;
3472 end if;
3473 
3474 if (p_ass_attribute30 = hr_api.g_varchar2) then
3475     l_assignment_rec.ass_attribute30 :=
3476     l_old_assignment_rec.ass_attribute30;
3477     if (nvl(l_db_assignment_rec.ass_attribute30, hr_api.g_varchar2) <>
3478        nvl(l_old_assignment_rec.ass_attribute30, hr_api.g_varchar2))
3479     then
3480        others_changed:=TRUE;
3481     end if;
3482 else
3483     l_assignment_rec.ass_attribute30 := p_ass_attribute30;
3484     if (nvl(p_ass_attribute30, hr_api.g_varchar2) <>
3485        nvl(l_db_assignment_rec.ass_attribute30, hr_api.g_varchar2))
3486     then
3487        i_changed:=TRUE;
3488     end if;
3489 end if;
3490 
3491 if (p_people_group_id = hr_api.g_number) then
3492     l_assignment_rec.people_group_id :=
3493     l_old_assignment_rec.people_group_id;
3494     if nvl(l_old_assignment_rec.people_group_id, hr_api.g_number)
3495        <> nvl(l_db_assignment_rec.people_group_id, hr_api.g_number)
3496     then
3497        others_changed:=TRUE;
3498     end if;
3499 else
3500     l_assignment_rec.people_group_id := p_people_group_id;
3501     if (nvl(p_people_group_id, -1)
3502        <> nvl(l_db_assignment_rec.people_group_id,-1))
3503     then
3504        i_changed:=TRUE;
3505     end if;
3506 end if;
3507 
3508 if (p_soft_coding_keyflex_id = hr_api.g_number) then
3509     l_assignment_rec.soft_coding_keyflex_id :=
3510     l_old_assignment_rec.soft_coding_keyflex_id;
3511     if nvl(l_old_assignment_rec.soft_coding_keyflex_id, hr_api.g_number)
3512        <> nvl(l_db_assignment_rec.soft_coding_keyflex_id, hr_api.g_number)
3513     then
3514        others_changed:=TRUE;
3515     end if;
3516 else
3517     l_assignment_rec.soft_coding_keyflex_id := p_soft_coding_keyflex_id;
3518     if (nvl(p_soft_coding_keyflex_id, -1)
3519        <> nvl(l_db_assignment_rec.soft_coding_keyflex_id,-1))
3520     then
3521        i_changed:=TRUE;
3522     end if;
3523 end if;
3524 
3525 if (p_sal_review_period_frequency = hr_api.g_varchar2) then
3526     l_assignment_rec.sal_review_period_frequency :=
3527     l_old_assignment_rec.sal_review_period_frequency;
3528     if (nvl(l_db_assignment_rec.sal_review_period_frequency, hr_api.g_varchar2)
3529        <>
3530        nvl(l_old_assignment_rec.sal_review_period_frequency, hr_api.g_varchar2))
3531     then
3532        others_changed:=TRUE;
3533     end if;
3534 else
3535     l_assignment_rec.sal_review_period_frequency :=
3536                 p_sal_review_period_frequency;
3537     if (nvl(p_sal_review_period_frequency, hr_api.g_varchar2) <>
3538        nvl(l_db_assignment_rec.sal_review_period_frequency, hr_api.g_varchar2))
3539     then
3540        i_changed:=TRUE;
3541     end if;
3542 end if;
3543 
3544 if (p_sal_review_period = hr_api.g_number) then
3545     l_assignment_rec.sal_review_period :=
3546     l_old_assignment_rec.sal_review_period;
3547     if nvl(l_old_assignment_rec.sal_review_period, hr_api.g_number)
3548        <> nvl(l_db_assignment_rec.sal_review_period, hr_api.g_number)
3549     then
3550        others_changed:=TRUE;
3551     end if;
3552 else
3553     l_assignment_rec.sal_review_period := p_sal_review_period;
3554     if (nvl(p_sal_review_period, -1) <>
3555          nvl(l_db_assignment_rec.sal_review_period,-1))
3556     then
3557        i_changed:=TRUE;
3558     end if;
3559 end if;
3560 
3561 if (p_probation_period = hr_api.g_number) then
3562     l_assignment_rec.probation_period :=
3563     l_old_assignment_rec.probation_period;
3564     if nvl(l_old_assignment_rec.probation_period, hr_api.g_number)
3565        <> nvl(l_db_assignment_rec.probation_period, hr_api.g_number)
3566     then
3567        others_changed:=TRUE;
3568     end if;
3569 else
3570     l_assignment_rec.probation_period := p_probation_period;
3571     if (nvl(p_probation_period, -1) <>
3572          nvl(l_db_assignment_rec.probation_period,-1))
3573     then
3574        i_changed:=TRUE;
3575     end if;
3576 end if;
3577 
3578 if (to_char(p_date_probation_end) = to_char(hr_api.g_date)) then
3579     l_assignment_rec.date_probation_end :=
3580     l_old_assignment_rec.date_probation_end;
3581 
3582     if (nvl(l_db_assignment_rec.date_probation_end, hr_api.g_date)
3583        <>
3584        nvl(l_old_assignment_rec.date_probation_end, hr_api.g_date))
3585     then
3586        others_changed:=TRUE;
3587     end if;
3588 else
3589     l_assignment_rec.date_probation_end :=
3590                 p_date_probation_end;
3591     if (nvl(p_date_probation_end, hr_api.g_date) <>
3592        nvl(l_db_assignment_rec.date_probation_end, hr_api.g_date))
3593     then
3594        i_changed:=TRUE;
3595     end if;
3596 end if;
3597 
3598 if (p_probation_unit = hr_api.g_varchar2) then
3599     l_assignment_rec.probation_unit :=
3600     l_old_assignment_rec.probation_unit;
3601     if (nvl(l_db_assignment_rec.probation_unit, hr_api.g_varchar2)
3602        <>
3603        nvl(l_old_assignment_rec.probation_unit, hr_api.g_varchar2))
3604     then
3605        others_changed:=TRUE;
3606     end if;
3607 else
3608     l_assignment_rec.probation_unit :=
3609                 p_probation_unit;
3610     if (nvl(p_probation_unit, hr_api.g_varchar2) <>
3611        nvl(l_db_assignment_rec.probation_unit, hr_api.g_varchar2))
3612     then
3613        i_changed:=TRUE;
3614     end if;
3615 end if;
3616 
3617 if (p_notice_period = hr_api.g_number) then
3618     l_assignment_rec.notice_period :=
3619     l_old_assignment_rec.notice_period;
3620     if nvl(l_old_assignment_rec.notice_period, hr_api.g_number)
3621        <> nvl(l_db_assignment_rec.notice_period, hr_api.g_number)
3622     then
3623        others_changed:=TRUE;
3624     end if;
3625 else
3626     l_assignment_rec.notice_period := p_notice_period;
3627     if (nvl(p_notice_period, -1) <>
3628          nvl(l_db_assignment_rec.notice_period,-1))
3629     then
3630        i_changed:=TRUE;
3631     end if;
3632 end if;
3633 
3634 if (p_notice_period_uom = hr_api.g_varchar2) then
3635     l_assignment_rec.notice_period_uom :=
3636     l_old_assignment_rec.notice_period_uom;
3637     if (nvl(l_db_assignment_rec.notice_period_uom, hr_api.g_varchar2)
3638        <>
3639        nvl(l_old_assignment_rec.notice_period_uom, hr_api.g_varchar2))
3640     then
3641        others_changed:=TRUE;
3642     end if;
3643 else
3644     l_assignment_rec.notice_period_uom :=
3645                 p_notice_period_uom;
3646     if (nvl(p_notice_period_uom, hr_api.g_varchar2) <>
3647        nvl(l_db_assignment_rec.notice_period_uom, hr_api.g_varchar2))
3648     then
3649        i_changed:=TRUE;
3650     end if;
3651 end if;
3652 
3653 if (p_employee_category = hr_api.g_varchar2) then
3654     l_assignment_rec.employee_category :=
3655     l_old_assignment_rec.employee_category;
3656     if (nvl(l_db_assignment_rec.employee_category, hr_api.g_varchar2)
3657        <>
3658        nvl(l_old_assignment_rec.employee_category, hr_api.g_varchar2))
3659     then
3660        others_changed:=TRUE;
3661     end if;
3662 else
3663     l_assignment_rec.employee_category :=
3664                 p_employee_category;
3665     if (nvl(p_employee_category, hr_api.g_varchar2) <>
3666        nvl(l_db_assignment_rec.employee_category, hr_api.g_varchar2))
3667     then
3668        i_changed:=TRUE;
3669     end if;
3670 end if;
3671 
3672 if (p_work_at_home = hr_api.g_varchar2) then
3673     l_assignment_rec.work_at_home :=
3674     l_old_assignment_rec.work_at_home;
3675     if (nvl(l_db_assignment_rec.work_at_home, hr_api.g_varchar2)
3676        <>
3677        nvl(l_old_assignment_rec.work_at_home, hr_api.g_varchar2))
3678     then
3679        others_changed:=TRUE;
3680     end if;
3681 else
3682     l_assignment_rec.work_at_home :=
3683                 p_work_at_home;
3684     if (nvl(p_work_at_home, hr_api.g_varchar2) <>
3685        nvl(l_db_assignment_rec.work_at_home, hr_api.g_varchar2))
3686     then
3687        i_changed:=TRUE;
3688     end if;
3689 end if;
3690 
3691 if (p_job_post_source_name = hr_api.g_varchar2) then
3692     l_assignment_rec.job_post_source_name :=
3693     l_old_assignment_rec.job_post_source_name;
3694     if (nvl(l_db_assignment_rec.job_post_source_name, hr_api.g_varchar2)
3695        <>
3696        nvl(l_old_assignment_rec.job_post_source_name, hr_api.g_varchar2))
3697     then
3698        others_changed:=TRUE;
3699     end if;
3700 else
3701     l_assignment_rec.job_post_source_name :=
3702                 p_job_post_source_name;
3703     if (nvl(p_job_post_source_name, hr_api.g_varchar2) <>
3704        nvl(l_db_assignment_rec.job_post_source_name, hr_api.g_varchar2))
3705     then
3706        i_changed:=TRUE;
3707     end if;
3708 end if;
3709 
3710 if (p_title = hr_api.g_varchar2) then
3711     l_assignment_rec.title :=
3712     l_old_assignment_rec.title;
3713     if nvl(l_old_assignment_rec.title, hr_api.g_varchar2)
3714        <> nvl(l_db_assignment_rec.title, hr_api.g_varchar2)
3715     then
3716        others_changed:=TRUE;
3717     end if;
3718 else
3719     l_assignment_rec.title := p_title;
3720     if (nvl(p_title, -1) <>
3721          nvl(l_db_assignment_rec.title,-1))
3722     then
3723        i_changed:=TRUE;
3724     end if;
3725 end if;
3726 
3727 if (p_project_title = hr_api.g_varchar2) then
3728     l_assignment_rec.project_title :=
3729     l_old_assignment_rec.project_title;
3730     if nvl(l_old_assignment_rec.project_title, hr_api.g_varchar2)
3731        <> nvl(l_db_assignment_rec.project_title, hr_api.g_varchar2)
3732     then
3733        others_changed:=TRUE;
3734     end if;
3735 else
3736     l_assignment_rec.project_title := p_project_title;
3737     if (nvl(p_project_title, -1) <>
3738          nvl(l_db_assignment_rec.project_title,-1))
3739     then
3740        i_changed:=TRUE;
3741     end if;
3742 end if;
3743 
3744 if (p_source_type = hr_api.g_varchar2) then
3745     l_assignment_rec.source_type :=
3746     l_old_assignment_rec.source_type;
3747     if nvl(l_old_assignment_rec.source_type, hr_api.g_varchar2)
3748        <> nvl(l_db_assignment_rec.source_type, hr_api.g_varchar2)
3749     then
3750        others_changed:=TRUE;
3751     end if;
3752 else
3753     l_assignment_rec.source_type := p_source_type;
3754     if (nvl(p_source_type, -1) <>
3755          nvl(l_db_assignment_rec.source_type,-1))
3756     then
3757        i_changed:=TRUE;
3758     end if;
3759 end if;
3760 
3761 if (p_vendor_assignment_number = hr_api.g_varchar2) then
3762     l_assignment_rec.vendor_assignment_number :=
3763     l_old_assignment_rec.vendor_assignment_number;
3764     if nvl(l_old_assignment_rec.vendor_assignment_number, hr_api.g_varchar2)
3765        <> nvl(l_db_assignment_rec.vendor_assignment_number, hr_api.g_varchar2)
3766     then
3767        others_changed:=TRUE;
3768     end if;
3769 else
3770     l_assignment_rec.vendor_assignment_number := p_vendor_assignment_number;
3771     if (nvl(p_vendor_assignment_number, -1) <>
3772          nvl(l_db_assignment_rec.vendor_assignment_number,-1))
3773     then
3774        i_changed:=TRUE;
3775     end if;
3776 end if;
3777 
3778 if (p_vendor_employee_number = hr_api.g_varchar2) then
3779     l_assignment_rec.vendor_employee_number :=
3780     l_old_assignment_rec.vendor_employee_number;
3781     if nvl(l_old_assignment_rec.vendor_employee_number, hr_api.g_varchar2)
3782        <> nvl(l_db_assignment_rec.vendor_employee_number, hr_api.g_varchar2)
3783     then
3784        others_changed:=TRUE;
3785     end if;
3786 else
3787     l_assignment_rec.vendor_employee_number := p_vendor_employee_number;
3788     if (nvl(p_vendor_employee_number, -1) <>
3789          nvl(l_db_assignment_rec.vendor_employee_number,-1))
3790     then
3791        i_changed:=TRUE;
3792     end if;
3793 end if;
3794 
3795 if (p_default_code_comb_id = hr_api.g_number) then
3796     l_assignment_rec.default_code_comb_id :=
3797     l_old_assignment_rec.default_code_comb_id;
3798     if nvl(l_old_assignment_rec.default_code_comb_id, hr_api.g_number)
3799        <> nvl(l_db_assignment_rec.default_code_comb_id, hr_api.g_number)
3800     then
3801        others_changed:=TRUE;
3802     end if;
3803 else
3804     l_assignment_rec.default_code_comb_id := p_default_code_comb_id;
3805     if (nvl(p_default_code_comb_id, -1) <>
3806          nvl(l_db_assignment_rec.default_code_comb_id,-1))
3807     then
3808        i_changed:=TRUE;
3809     end if;
3810 end if;
3811 
3812 if (p_set_of_books_id = hr_api.g_number) then
3813     l_assignment_rec.set_of_books_id :=
3814     l_old_assignment_rec.set_of_books_id;
3815     if nvl(l_old_assignment_rec.set_of_books_id, hr_api.g_number)
3816        <> nvl(l_db_assignment_rec.set_of_books_id, hr_api.g_number)
3817     then
3818        others_changed:=TRUE;
3819     end if;
3820 else
3821     l_assignment_rec.set_of_books_id := p_set_of_books_id;
3822     if (nvl(p_set_of_books_id, -1) <>
3823          nvl(l_db_assignment_rec.set_of_books_id,-1))
3824     then
3825        i_changed:=TRUE;
3826     end if;
3827 end if;
3828 
3829 if (p_vendor_id = hr_api.g_number) then
3830     l_assignment_rec.vendor_id :=
3831     l_old_assignment_rec.vendor_id;
3832     if nvl(l_old_assignment_rec.vendor_id, hr_api.g_number)
3833        <> nvl(l_db_assignment_rec.vendor_id, hr_api.g_number)
3834     then
3835        others_changed:=TRUE;
3836     end if;
3837 else
3838     l_assignment_rec.vendor_id := p_vendor_id;
3839     if (nvl(p_vendor_id, -1) <>
3840          nvl(l_db_assignment_rec.vendor_id,-1))
3841     then
3842        i_changed:=TRUE;
3843     end if;
3844 end if;
3845 
3846 
3847 if (p_po_header_id = hr_api.g_number) then
3848     l_assignment_rec.po_header_id :=
3849     l_old_assignment_rec.po_header_id;
3850     if nvl(l_old_assignment_rec.po_header_id, hr_api.g_number)
3851        <> nvl(l_db_assignment_rec.po_header_id, hr_api.g_number)
3852     then
3853        others_changed:=TRUE;
3854     end if;
3855 else
3856     l_assignment_rec.po_header_id := p_po_header_id;
3857     if (nvl(p_po_header_id, -1) <>
3858          nvl(l_db_assignment_rec.po_header_id,-1))
3859     then
3860        i_changed:=TRUE;
3861     end if;
3862 end if;
3863 
3864 if (p_po_line_id = hr_api.g_number) then
3865     l_assignment_rec.po_line_id :=
3866     l_old_assignment_rec.po_line_id;
3867     if nvl(l_old_assignment_rec.po_line_id, hr_api.g_number)
3868        <> nvl(l_db_assignment_rec.po_line_id, hr_api.g_number)
3869     then
3870        others_changed:=TRUE;
3871     end if;
3872 else
3873     l_assignment_rec.po_line_id := p_po_line_id;
3874     if (nvl(p_po_line_id, -1) <>
3875          nvl(l_db_assignment_rec.po_line_id,-1))
3876     then
3877        i_changed:=TRUE;
3878     end if;
3879 end if;
3880 
3881 if (p_vendor_site_id = hr_api.g_number) then
3882     l_assignment_rec.vendor_site_id :=
3883     l_old_assignment_rec.vendor_site_id;
3884     if nvl(l_old_assignment_rec.vendor_site_id, hr_api.g_number)
3885        <> nvl(l_db_assignment_rec.vendor_site_id, hr_api.g_number)
3886     then
3887        others_changed:=TRUE;
3888     end if;
3889 else
3890     l_assignment_rec.vendor_site_id := p_vendor_site_id;
3891     if (nvl(p_vendor_site_id, -1) <>
3892          nvl(l_db_assignment_rec.vendor_site_id,-1))
3893     then
3894        i_changed:=TRUE;
3895     end if;
3896 end if;
3897 
3898 
3899 if (p_proj_asgn_end = g_canonical_date) then
3900     l_assignment_rec.projected_assignment_end :=
3901     l_old_assignment_rec.projected_assignment_end;
3902     if (nvl(l_db_assignment_rec.projected_assignment_end, g_canonical_date)
3903        <>
3904        nvl(l_old_assignment_rec.projected_assignment_end, g_canonical_date))
3905     then
3906        others_changed:=TRUE;
3907     end if;
3908 else
3909     l_assignment_rec.projected_assignment_end :=
3910                 p_proj_asgn_end;
3911     if (nvl(p_proj_asgn_end,g_canonical_date) <>
3912        nvl(l_db_assignment_rec.projected_assignment_end,g_canonical_date))
3913     then
3914        i_changed:=TRUE;
3915     end if;
3916 end if;
3917 
3918 -- the following 2 fields are planed for sshr 5.2.
3919 -- We will enable it later.
3920 
3921 -- GSP change
3922 if (p_grade_ladder_pgm_id = hr_api.g_number) then
3923     l_assignment_rec.grade_ladder_pgm_id :=
3924     l_old_assignment_rec.grade_ladder_pgm_id;
3925     if nvl(l_old_assignment_rec.grade_ladder_pgm_id, hr_api.g_number)
3926        <> nvl(l_db_assignment_rec.grade_ladder_pgm_id, hr_api.g_number)
3927     then
3928        --lb_grade_ladder_changed := true;
3929        others_changed:=TRUE;
3930     end if;
3931 else
3932     l_assignment_rec.grade_ladder_pgm_id := p_grade_ladder_pgm_id;
3933     if (nvl(p_grade_ladder_pgm_id, -1) <>
3934          nvl(l_db_assignment_rec.grade_ladder_pgm_id,-1))
3935     then
3936        --lb_grade_ladder_changed := true;
3937        i_changed:=TRUE;
3938     end if;
3939 end if;
3940 --End of GSP change
3941 
3942 --if (p_supervisor_assignment_id = hr_api.g_number) then
3943 --    l_assignment_rec.supervisor_assignment_id :=
3944 --    l_old_assignment_rec.supervisor_assignment_id;
3945 --    if nvl(l_old_assignment_rec.supervisor_assignment_id, hr_api.g_number)
3946 --       <> nvl(l_db_assignment_rec.supervisor_assignment_id, hr_api.g_number)
3947 --    then
3948 --       others_changed:=TRUE;
3949 --    end if;
3950 --else
3951 --    l_assignment_rec.supervisor_assignment_id := p_supervisor_assignment_id;
3952 --    if (nvl(p_supervisor_assignment_id, -1) <>
3953 --         nvl(l_db_assignment_rec.supervisor_assignment_id,-1))
3954 --    then
3955 --       i_changed:=TRUE;
3956 --    end if;
3957 --end if;
3958 
3959 if (p_assignment_type = hr_api.g_varchar2) then
3960     l_assignment_rec.assignment_type :=
3961     l_old_assignment_rec.assignment_type;
3962     if nvl(l_old_assignment_rec.assignment_type, hr_api.g_varchar2)
3963        <> nvl(l_db_assignment_rec.assignment_type, hr_api.g_varchar2)
3964     then
3965        others_changed:=TRUE;
3966     end if;
3967 else
3968     l_assignment_rec.assignment_type := p_assignment_type;
3969     if (nvl(p_assignment_type, -1) <>
3970          nvl(l_db_assignment_rec.assignment_type,-1))
3971     then
3972        i_changed:=TRUE;
3973     end if;
3974 end if;
3975 
3976 if (p_perf_review_period = hr_api.g_number) then
3977     l_assignment_rec.perf_review_period :=
3978     l_old_assignment_rec.perf_review_period;
3979     if nvl(l_old_assignment_rec.perf_review_period, hr_api.g_number)
3980        <> nvl(l_db_assignment_rec.perf_review_period, hr_api.g_number)
3981     then
3982        others_changed:=TRUE;
3983     end if;
3984 else
3985     l_assignment_rec.perf_review_period := p_perf_review_period;
3986     if (nvl(p_perf_review_period, -1) <>
3987          nvl(l_db_assignment_rec.perf_review_period,-1))
3988     then
3989        i_changed:=TRUE;
3990     end if;
3991 end if;
3992 
3993 if (p_perf_review_period_frequency = hr_api.g_varchar2) then
3994     l_assignment_rec.perf_review_period_frequency :=
3995     l_old_assignment_rec.perf_review_period_frequency;
3996     if (nvl(l_db_assignment_rec.perf_review_period_frequency, hr_api.g_varchar2)
3997        <>
3998       nvl(l_old_assignment_rec.perf_review_period_frequency, hr_api.g_varchar2))
3999     then
4000        others_changed:=TRUE;
4001     end if;
4002 else
4003     l_assignment_rec.perf_review_period_frequency :=
4004                 p_perf_review_period_frequency;
4005     if (nvl(p_perf_review_period_frequency, hr_api.g_varchar2) <>
4006        nvl(l_db_assignment_rec.perf_review_period_frequency, hr_api.g_varchar2))
4007     then
4008        i_changed:=TRUE;
4009     end if;
4010 end if;
4011 
4012 if (p_internal_address_line = hr_api.g_varchar2) then
4013     l_assignment_rec.internal_address_line :=
4014     l_old_assignment_rec.internal_address_line;
4015     if (nvl(l_db_assignment_rec.internal_address_line, hr_api.g_varchar2)
4016        <>
4017        nvl(l_old_assignment_rec.internal_address_line, hr_api.g_varchar2))
4018     then
4019        others_changed:=TRUE;
4020     end if;
4021 else
4022     l_assignment_rec.internal_address_line :=
4023                 p_internal_address_line;
4024     if (nvl(p_internal_address_line, hr_api.g_varchar2) <>
4025        nvl(l_db_assignment_rec.internal_address_line, hr_api.g_varchar2))
4026     then
4027        i_changed:=TRUE;
4028     end if;
4029 end if;
4030 
4031 if (p_payroll_id = hr_api.g_number) then
4032     l_assignment_rec.payroll_id :=
4033     l_old_assignment_rec.payroll_id;
4034     if nvl(l_old_assignment_rec.payroll_id, hr_api.g_number)
4035        <> nvl(l_db_assignment_rec.payroll_id, hr_api.g_number)
4036     then
4037        others_changed:=TRUE;
4038     end if;
4039 else
4040     l_assignment_rec.payroll_id := p_payroll_id;
4041     if (nvl(p_payroll_id, -1) <> nvl(l_db_assignment_rec.payroll_id,-1))
4042     then
4043        i_changed:=TRUE;
4044     end if;
4045 end if;
4046 
4047 -- 04/12/02 Salary Basis Enhancement Change Begins
4048 -- IF payroll is installed and the payroll_id is null, we need to issue an
4049 -- error message when a salary basis is changed because we cannot derive the
4050 -- mid pay period which needs the payroll_id to access the per_time_periods
4051 -- table.
4052 l_legislation_code := hr_misc_web.get_legislation_code
4053                        (p_assignment_id => l_assignment_id);
4054 
4055 if (p_pay_basis_id = hr_api.g_number) then
4056     l_assignment_rec.pay_basis_id :=
4057     l_old_assignment_rec.pay_basis_id;
4058     if nvl(l_old_assignment_rec.pay_basis_id, hr_api.g_number)
4059        <> nvl(l_db_assignment_rec.pay_basis_id, hr_api.g_number)
4060     then
4061        -- 05/14/02 - Bug 2374140 Fix Begins
4062        -- Removed the code to set the WF item attribute HR_MID_PAY_PERIOD_CHANGE
4063        -- here.  Instead, we'll set it in the Approvals process when a trans
4064        -- is submitted.
4065        -- The reason is that if we set it here, in a Save For Later transaction
4066        -- where the user stopped at the Pay Rate page and change the effective
4067        -- date on re-entry of the SFL transaction, this item attribute will not
4068        -- be reset because the Assignment page will not be relaunched.  Only the
4069        -- Pay Rate page will be relaunched.  Yet, we cannot set it in the
4070        -- Pay Rate page because if there is any module comes after Pay Rate
4071        -- in the chained process, this same problem will occur in a SFL if the
4072        -- user last stopped at the page which comes after Pay Rate and changes
4073        -- the effective date on a reentry of the SFL transaction.
4074 
4075        others_changed:=TRUE;
4076     end if;
4077 else
4078     l_assignment_rec.pay_basis_id := p_pay_basis_id;
4079     if (nvl(p_pay_basis_id, -1) <> nvl(l_db_assignment_rec.pay_basis_id,-1))
4080     then
4081        -- 05/14/02 - Bug 2374140 Fix Begins
4082        -- Removed the code to set the WF item attribute HR_MID_PAY_PERIOD_CHANGE
4083        -- here.  Instead, we'll set it in the Approvals process when a trans
4084        -- is submitted.
4085        -- The reason is that if we set it here, in a Save For Later transaction
4086        -- where the user stopped at the Pay Rate page and change the effective
4087        -- date on re-entry of the SFL transaction, this item attribute will not
4088        -- be reset because the Assignment page will not be relaunched.  Only the
4089        -- Pay Rate page will be relaunched.  Yet, we cannot set it in the
4090        -- Pay Rate page because if there is any module comes after Pay Rate
4091        -- in the chained process, this same problem will occur in a SFL if the
4092        -- user last stopped at the page which comes after Pay Rate and changes
4093        -- the effective date on a reentry of the SFL transaction.
4094 
4095        i_changed:=TRUE;
4096     end if;
4097 
4098     -- 05/14/02 - Bug 2374140 Fix Ends
4099 end if;
4100 
4101 
4102 if (p_contract_id = hr_api.g_number) then
4103     l_assignment_rec.contract_id :=
4104     l_old_assignment_rec.contract_id;
4105     if nvl(l_old_assignment_rec.contract_id, hr_api.g_number)
4106        <> nvl(l_db_assignment_rec.contract_id, hr_api.g_number)
4107     then
4108        others_changed:=TRUE;
4109     end if;
4110 else
4111     l_assignment_rec.contract_id := p_contract_id;
4112     if (nvl(p_contract_id, -1) <> nvl(l_db_assignment_rec.contract_id,-1))
4113     then
4114        i_changed:=TRUE;
4115     end if;
4116 end if;
4117 
4118 if (p_establishment_id = hr_api.g_number) then
4119     l_assignment_rec.establishment_id :=
4120     l_old_assignment_rec.establishment_id;
4121     if nvl(l_old_assignment_rec.establishment_id, hr_api.g_number)
4122        <> nvl(l_db_assignment_rec.establishment_id, hr_api.g_number)
4123     then
4124        others_changed:=TRUE;
4125     end if;
4126 else
4127     l_assignment_rec.establishment_id := p_establishment_id;
4128     if (nvl(p_establishment_id, -1) <>
4129         nvl(l_db_assignment_rec.establishment_id,-1))
4130     then
4131        i_changed:=TRUE;
4132     end if;
4133 end if;
4134 
4135 if (p_cagr_grade_def_id = hr_api.g_number) then
4136     l_assignment_rec.cagr_grade_def_id :=
4137     l_old_assignment_rec.cagr_grade_def_id;
4138     if nvl(l_old_assignment_rec.cagr_grade_def_id, hr_api.g_number)
4139        <> nvl(l_db_assignment_rec.cagr_grade_def_id, hr_api.g_number)
4140     then
4141        others_changed:=TRUE;
4142     end if;
4143 else
4144     l_assignment_rec.cagr_grade_def_id := p_cagr_grade_def_id;
4145     if (nvl(p_cagr_grade_def_id, -1) <>
4146         nvl(l_db_assignment_rec.cagr_grade_def_id,-1))
4147     then
4148        i_changed:=TRUE;
4149     end if;
4150 end if;
4151 
4152 if (p_cagr_id_flex_num = hr_api.g_number) then
4153     l_assignment_rec.cagr_id_flex_num :=
4154     l_old_assignment_rec.cagr_id_flex_num;
4155     if nvl(l_old_assignment_rec.cagr_id_flex_num, hr_api.g_number)
4156        <> nvl(l_db_assignment_rec.cagr_id_flex_num, hr_api.g_number)
4157     then
4158        others_changed:=TRUE;
4159     end if;
4160 else
4161     l_assignment_rec.cagr_id_flex_num := p_cagr_id_flex_num;
4162     if (nvl(p_cagr_id_flex_num, -1) <>
4163         nvl(l_db_assignment_rec.cagr_id_flex_num,-1))
4164     then
4165        i_changed:=TRUE;
4166     end if;
4167 end if;
4168 
4169 if (p_collective_agreement_id = hr_api.g_number) then
4170     l_assignment_rec.collective_agreement_id :=
4171     l_old_assignment_rec.collective_agreement_id;
4172     if nvl(l_old_assignment_rec.collective_agreement_id, hr_api.g_number)
4173        <> nvl(l_db_assignment_rec.collective_agreement_id, hr_api.g_number)
4174     then
4175        others_changed:=TRUE;
4176     end if;
4177 else
4178     l_assignment_rec.collective_agreement_id := p_collective_agreement_id;
4179     if (nvl(p_collective_agreement_id, -1) <>
4180         nvl(l_db_assignment_rec.collective_agreement_id,-1))
4181     then
4182        i_changed:=TRUE;
4183     end if;
4184 end if;
4185 
4186 
4187 if ( p_hrs_last_date= hr_api.g_varchar2) then
4188     l_hrs_last_date :=
4189     null;
4190 else
4191     l_hrs_last_date := p_hrs_last_date;
4192 end if;
4193 if ( p_display_pos= hr_api.g_varchar2) then
4194     l_display_pos :=
4195     null;
4196 else
4197     l_display_pos := p_display_pos;
4198 end if;
4199 
4200 if ( p_display_org= hr_api.g_varchar2) then
4201     l_display_org :=
4202     null;
4203 else
4204     l_display_org := p_display_org;
4205 end if;
4206 if ( p_display_ass_status= hr_api.g_varchar2) then
4207     l_display_ass_status :=
4208     null;
4209 else
4210     l_display_ass_status := p_display_ass_status;
4211 end if;
4212 if ( p_display_job= hr_api.g_varchar2) then
4213     l_display_job :=
4214     null;
4215 else
4216     l_display_job := p_display_job;
4217 end if;
4218 -- Bug #1067636 fix begins
4219 if ( p_display_grade = hr_api.g_varchar2) then
4220     l_display_grade :=
4221     null;
4222 else
4223     l_display_grade := p_display_grade;
4224 end if;
4225 -- Bug #1067636 fix ends
4226 
4227 -- Bug #1004255 fix
4228 if ( p_grade_lov = hr_api.g_varchar2) then
4229     l_grade_lov := null;
4230 else
4231     l_grade_lov := p_grade_lov;
4232 end if;
4233 
4234 if ( p_approver_id= hr_api.g_number) then
4235     l_approver_id :=
4236     null;
4237 else
4238     l_approver_id := p_approver_id;
4239 end if;
4240 
4241 -- This is added for registration to support the Browser Back issues which was prohibiting the
4242 -- commit to the transaction tables if the data is not changed and in turn was not letting the
4243 -- rollback call to execute .
4244 
4245 if p_flow_mode is not null and
4246    p_flow_mode = hr_process_assignment_ss.g_new_hire_registration
4247 then
4248 i_changed := TRUE;
4249 end if;
4250 -- Code end for registration.
4251 
4252 if i_changed or others_changed
4253 then
4254 if p_save_mode <> 'SAVE_FOR_LATER' then
4255 --
4256 -- To support applicant hire in New Hire process, we need to convert the applicant
4257 -- to employee then update the assignment and rollback the employee to applicant
4258 
4259 if(l_db_assignment_rec.assignment_type = 'A') then
4260    g_applicant_hire := true;
4261    -- first get the object_version_number for the applicant from
4262    -- per_all_people_f
4263    open per_applicant_rec(l_old_assignment_rec.person_id, l_effective_date);
4264    fetch per_applicant_rec into l_per_object_version_number;
4265    close per_applicant_rec;
4266 
4267    SAVEPOINT applicant_hire;
4268 
4269    -- get the employee number from Basic Details Step
4270    /*hr_person_info_util_ss.get_trns_employee_number(
4271                         p_item_type => p_item_type
4272                        ,p_item_key => p_item_key
4273                        ,p_employee_number => l_employee_number);
4274 
4275    --call the hr_applicant_api.hire_applicant
4276    hr_applicant_api.hire_applicant(
4277       p_validate => false
4278      ,p_hire_date => l_effective_date
4279      ,p_person_id => l_db_assignment_rec.person_id
4280      ,p_per_object_version_number => l_per_object_version_number
4281      ,p_assignment_id => l_db_assignment_rec.assignment_id
4282      ,p_employee_number => l_employee_number
4283      ,p_per_effective_start_date => l_per_effective_start_date
4284      ,p_per_effective_end_date => l_per_effective_end_date
4285      ,p_unaccepted_asg_del_warning  => l_unaccepted_asg_del_warning
4286      ,p_assign_payroll_warning => l_assign_payroll_warning);*/
4287 
4288 -- Also we need to call the Primay Address Step as the primary address needs to be
4289 -- created for the applicant, incase payroll is entered
4290    -- we need to call the HR_PROCESS_PERSON_SS.PROCESS_API
4291    -- to update the person's info first
4292    -- before update the assignment. Such as birthday is required for
4293    -- payroll.
4294    hr_new_user_reg_ss.process_selected_transaction(p_item_type => l_item_type,
4295                                                    p_item_key => l_item_key
4296                          ,p_api_name => 'HR_PROCESS_PERSON_SS.PROCESS_API');
4297    hr_new_user_reg_ss.process_selected_transaction(p_item_type => l_item_type,
4298                                                    p_item_key => l_item_key
4299 			 ,p_api_name => 'HR_PROCESS_ADDRESS_SS.PROCESS_API');
4300 
4301 -- Need to use the latest object version number and also assginment_status_type_id
4302 -- before calling the update_assignment as the above api call will change the object
4303 -- version number and update the assignment record in correction mode
4304 -- first get the object_version_number for the applicant from
4305 -- per_all_assignments_f
4306    open asg_applicant_rec(l_assignment_id, l_effective_date);
4307    fetch asg_applicant_rec into l_object_version_number
4308                                ,l_assignment_rec.assignment_status_type_id;
4309    close asg_applicant_rec;
4310 
4311    l_datetrack_update_mode :=  'CORRECTION';
4312 
4313 end if;
4314 
4315 --
4316 -- the data has changed, so we call the api --
4317 --
4318 --update_assignment will check default gre when l_new_hire_appl_hire is 'Y'
4319 if p_flow_mode is not null or g_applicant_hire then
4320   l_new_hire_appl_hire := 'Y';
4321 else
4322   l_new_hire_appl_hire := 'N';
4323 end if;
4324 
4325 -- GSP Support code
4326  -- check whether grade/step/ got changed based on Grade Ladder setup,
4327  -- then only I need to store Pay Rate Txn data
4328   hr_pay_rate_gsp_ss.check_grade_ladder_exists(
4329                    p_business_group_id =>  l_assignment_rec.organization_id,
4330                    p_effective_date =>  l_effective_date,
4331                    p_grd_ldr_exists_flag => lb_grd_ldr_exists_flag);
4332 
4333  if(lb_grd_ldr_exists_flag) then
4334 --     and (lb_special_ceiling_step_id_chg or lb_grade_changed) ) then
4335 
4336    -- check whether grade ladder won't allow salary update
4337    open lc_sal_updateable_grade_ladder(p_grade_ladder_id =>
4338                               l_assignment_rec.grade_ladder_pgm_id,
4339                               p_effective_date => l_effective_date
4340                               );
4341    fetch lc_sal_updateable_grade_ladder into lc_temp_grade_ladder_id, lc_temp_upd_sal_cd;
4342    if (lc_sal_updateable_grade_ladder%FOUND) THEN
4343     -- initializing local salary data table type to pass to store into txn
4344     ltt_salary_data := sshr_sal_prop_tab_typ(sshr_sal_prop_obj_typ(
4345                 null,-- pay_proposal_id       NUMBER,
4346                 l_assignment_id,-- assignment_id         NUMBER,
4347                 l_assignment_rec.business_group_id,--business_group_id   NUMBER,
4348                 l_effective_date,--effective_date        DATE,
4349                 null,--comments              VARCHAR2(2000),
4350                 null,--next_sal_review_date  DATE,
4351                 null,--salary_change_amount  NUMBER ,
4352                 null,--salary_change_percent NUMBER ,
4353                 null,--annual_change         NUMBER ,
4354                 null,--proposed_salary       NUMBER ,
4355                 null,--proposed_percent      NUMBER ,
4356                 null,--proposal_reason       VARCHAR2(30),
4357                 null,--ranking               NUMBER,
4358                 null,--current_salary        NUMBER,
4359                 null,--performance_review_id NUMBER,
4360                 null,--multiple_components   VARCHAR2(1),
4361                 null,--element_entry_id      NUMBER ,
4362                 null,--selection_mode        VARCHAR2(1),
4363                 null,--ovn                   NUMBER,
4364                 null,--currency              VARCHAR2(15),
4365                 null,--pay_basis_name        VARCHAR2(80),
4366                 null,--annual_equivalent     NUMBER ,
4367                 null,--total_percent        NUMBER ,
4368                 null,--quartile              NUMBER ,
4369                 null,--comparatio            NUMBER ,
4370                 null,--lv_selection_mode     VARCHAR2(1),
4371                 null,--attribute_category           VARCHAR2(150),
4372                 null,--attribute1            VARCHAR2(150),
4373                 null,--attribute2            VARCHAR2(150),
4374                 null,--attribute3            VARCHAR2(150),
4375                 null,--attribute4            VARCHAR2(150),
4376                 null,--attribute5            VARCHAR2(150),
4377                 null,--attribute6            VARCHAR2(150),
4378                 null,--attribute7            VARCHAR2(150),
4379                 null,--attribute8            VARCHAR2(150),
4380                 null,--attribute9            VARCHAR2(150),
4381                 null,--attribute10           VARCHAR2(150),
4382                 null,--attribute11           VARCHAR2(150),
4383                 null,--attribute12           VARCHAR2(150),
4384                 null,--attribute13           VARCHAR2(150),
4385                 null,--attribute14           VARCHAR2(150),
4386                 null,--attribute15           VARCHAR2(150),
4387                 null,--attribute16           VARCHAR2(150),
4388                 null,--attribute17           VARCHAR2(150),
4389                 null,--attribute18           VARCHAR2(150),
4390                 null,--attribute19           VARCHAR2(150),
4391                 null,--attribute20           VARCHAR2(150),
4392                 null, --no_of_components       NUMBER,
4393                 -- 04/12/02 Salary Basis Enhancement Begins
4394                 null,  -- salary_basis_change_type varchar2(30)
4395                 null,  -- default_date           date
4396                 null,  -- default_bg_id          number
4397                 null,  -- default_currency       VARCHAR2(15)
4398                 null,  -- default_format_string  VARCHAR2(40)
4399                 null,  -- default_salary_basis_name  varchar2(30)
4400                 null,  -- default_pay_basis_name     varchar2(80)
4401                 null,  -- default_pay_basis      varchar2(30)
4402                 null,  -- default_pay_annual_factor  number
4403                 null,  -- default_grade          VARCHAR2(240)
4404                 null,  -- default_grade_annual_factor number
4405                 null,  -- default_minimum_salary      number
4406                 null,  -- default_maximum_salary      number
4407                 null,  -- default_midpoint_salary     number
4408                 null,  -- default_prev_salary         number
4409                 null,  -- default_last_change_date    date
4410                 null,  -- default_element_entry_id    number
4411                 null,  -- default_basis_changed       number
4412                 null,  -- default_uom                 VARCHAR2(30)
4413                 null,  -- default_grade_uom           VARCHAR2(30)
4414                 null,  -- default_change_amount       number
4415                 null,  -- default_change_percent      number
4416                 null,  -- default_quartile            number
4417                 null,  -- default_comparatio          number
4418                 null,  -- default_last_pay_change     varchar2(200)
4419                 null,  -- default_flsa_status         varchar2(80)
4420                 null,  -- default_currency_symbol     varchar2(4)
4421                 null,   -- default_precision           number
4422                 -- 04/12/02 Salary Basis Enhancement Ends
4423                 -- GSP
4424                 null,    -- salary_effective_date    date
4425                 null,    -- gsp_dummy_txn            varchar2(30)
4426                 -- End of GSP
4427                 null,
4428                 null,
4429                 null,
4430                 null,
4431                 null
4432           ));
4433       -- store the current salary in the ltt_salary_data
4434       hr_pay_rate_gsp_ss.get_employee_current_salary(
4435                             p_assignment_id =>  l_assignment_id,
4436                             P_effective_date => l_effective_date,
4437                             p_ltt_salary_data => ltt_salary_data);
4438       -- In case of SFL for new hire, we are getting new salary
4439       -- so we are setting current salary to zero
4440       if p_flow_mode is not null and
4441          p_flow_mode = hr_process_assignment_ss.g_new_hire_registration
4442       then
4443            ltt_salary_data(1).current_salary := 0;
4444       end if;
4445       -- end of fix
4446      end if;
4447      close lc_sal_updateable_grade_ladder;
4448   end if;
4449   -- End of GSP support change
4450 
4451 
4452 update_assignment
4453 (p_validate                 =>     true
4454 ,p_login_person_id          =>     p_login_person_id
4455 ,p_new_hire_appl_hire       =>     l_new_hire_appl_hire
4456 ,p_assignment_id            =>     l_assignment_id
4457 ,p_object_version_number    =>     l_object_version_number
4458 ,p_effective_date           =>     l_effective_date
4459 ,p_datetrack_update_mode    =>     l_datetrack_update_mode
4460 ,p_organization_id          =>     l_assignment_rec.organization_id
4461 ,p_position_id              =>     l_assignment_rec.position_id
4462 ,p_job_id                   =>     l_assignment_rec.job_id
4463 ,p_grade_id                 =>     l_assignment_rec.grade_id
4464 ,p_location_id              =>     l_assignment_rec.location_id
4465 ,p_employment_category      =>     l_assignment_rec.employment_category
4466 ,p_supervisor_id            =>     l_assignment_rec.supervisor_id
4467 ,p_manager_flag             =>     l_assignment_rec.manager_flag
4468 ,p_frequency                =>     l_assignment_rec.frequency
4469 ,p_normal_hours             =>     l_assignment_rec.normal_hours
4470 ,p_time_normal_finish       =>     l_assignment_rec.time_normal_finish
4471 ,p_time_normal_start        =>     l_assignment_rec.time_normal_start
4472 ,p_bargaining_unit_code     =>     l_assignment_rec.bargaining_unit_code
4473 ,p_labour_union_member_flag =>     l_assignment_rec.labour_union_member_flag
4474 ,p_assignment_status_type_id=>     l_assignment_rec.assignment_status_type_id
4475 ,p_change_reason            =>     l_assignment_rec.change_reason
4476 ,p_special_ceiling_step_id  =>     l_assignment_rec.special_ceiling_step_id
4477 ,p_ass_attribute_category   =>     l_assignment_rec.ass_attribute_category
4478 ,p_ass_attribute1           =>     l_assignment_rec.ass_attribute1
4479 ,p_ass_attribute2           =>     l_assignment_rec.ass_attribute2
4480 ,p_ass_attribute3           =>     l_assignment_rec.ass_attribute3
4481 ,p_ass_attribute4           =>     l_assignment_rec.ass_attribute4
4482 ,p_ass_attribute5           =>     l_assignment_rec.ass_attribute5
4483 ,p_ass_attribute6           =>     l_assignment_rec.ass_attribute6
4484 ,p_ass_attribute7           =>     l_assignment_rec.ass_attribute7
4485 ,p_ass_attribute8           =>     l_assignment_rec.ass_attribute8
4486 ,p_ass_attribute9           =>     l_assignment_rec.ass_attribute9
4487 ,p_ass_attribute10          =>     l_assignment_rec.ass_attribute10
4488 ,p_ass_attribute11          =>     l_assignment_rec.ass_attribute11
4489 ,p_ass_attribute12          =>     l_assignment_rec.ass_attribute12
4490 ,p_ass_attribute13          =>     l_assignment_rec.ass_attribute13
4491 ,p_ass_attribute14          =>     l_assignment_rec.ass_attribute14
4492 ,p_ass_attribute15          =>     l_assignment_rec.ass_attribute15
4493 ,p_ass_attribute16          =>     l_assignment_rec.ass_attribute16
4494 ,p_ass_attribute17          =>     l_assignment_rec.ass_attribute17
4495 ,p_ass_attribute18          =>     l_assignment_rec.ass_attribute18
4496 ,p_ass_attribute19          =>     l_assignment_rec.ass_attribute19
4497 ,p_ass_attribute20          =>     l_assignment_rec.ass_attribute20
4498 ,p_ass_attribute21          =>     l_assignment_rec.ass_attribute21
4499 ,p_ass_attribute22          =>     l_assignment_rec.ass_attribute22
4500 ,p_ass_attribute23          =>     l_assignment_rec.ass_attribute23
4501 ,p_ass_attribute24          =>     l_assignment_rec.ass_attribute24
4502 ,p_ass_attribute25          =>     l_assignment_rec.ass_attribute25
4503 ,p_ass_attribute26          =>     l_assignment_rec.ass_attribute26
4504 ,p_ass_attribute27          =>     l_assignment_rec.ass_attribute27
4505 ,p_ass_attribute28          =>     l_assignment_rec.ass_attribute28
4506 ,p_ass_attribute29          =>     l_assignment_rec.ass_attribute29
4507 ,p_ass_attribute30          =>     l_assignment_rec.ass_attribute30
4508 ,p_soft_coding_keyflex_id   =>     l_assignment_rec.soft_coding_keyflex_id
4509 ,p_people_group_id          =>     l_assignment_rec.people_group_id
4510 ,p_contract_id              =>     l_assignment_rec.contract_id
4511 ,p_establishment_id         =>     l_assignment_rec.establishment_id
4512 ,p_cagr_grade_def_id        =>     l_assignment_rec.cagr_grade_def_id
4513 ,p_collective_agreement_id  =>     l_assignment_rec.collective_agreement_id
4514 ,p_cagr_id_flex_num         =>     l_assignment_rec.cagr_id_flex_num
4515 ,p_payroll_id               =>     l_assignment_rec.payroll_id
4516 ,p_pay_basis_id             =>     l_assignment_rec.pay_basis_id
4517 ,p_sal_review_period        =>     l_assignment_rec.sal_review_period
4518 ,p_sal_review_period_frequency => l_assignment_rec.sal_review_period_frequency
4519 ,p_date_probation_end       =>     l_assignment_rec.date_probation_end
4520 ,p_probation_period         =>      l_assignment_rec.probation_period
4521 ,p_probation_unit           =>     l_assignment_rec.probation_unit
4522 ,p_notice_period            =>     l_assignment_rec.notice_period
4523 ,p_notice_period_uom        =>     l_assignment_rec.notice_period_uom
4524 ,p_employee_category        =>     l_assignment_rec.employee_category
4525 ,p_work_at_home             =>     l_assignment_rec.work_at_home
4526 ,p_job_post_source_name     =>     l_assignment_rec.job_post_source_name
4527 ,p_perf_review_period       =>     l_assignment_rec.perf_review_period
4528 ,p_perf_review_period_frequency => l_assignment_rec.perf_review_period_frequency
4529 ,p_internal_address_line    =>     l_assignment_rec.internal_address_line
4530 ,p_business_group_id        =>     l_assignment_rec.business_group_id
4531 -- GSP change
4532 ,p_grade_ladder_pgm_id      =>     l_assignment_rec.grade_ladder_pgm_id
4533 -- End of GSP change
4534 ,p_assignment_type          =>     l_assignment_rec.assignment_type
4535 --,p_supervisor_assignment_id =>     l_assignment_rec.supervisor_assignment_id
4536 ,p_vacancy_id               =>     l_assignment_rec.vacancy_id
4537 ,p_primary_flag             =>     l_assignment_rec.primary_flag
4538 ,p_person_id                =>     l_assignment_rec.person_id
4539 ,p_default_code_comb_id     =>     l_assignment_rec.default_code_comb_id
4540 ,p_project_title            =>     l_assignment_rec.project_title
4541 ,p_set_of_books_id          =>     l_assignment_rec.set_of_books_id
4542 ,p_source_type              =>     l_assignment_rec.source_type
4543 ,p_title                    =>     l_assignment_rec.title
4544 ,p_vendor_assignment_number =>     l_assignment_rec.vendor_assignment_number
4545 ,p_vendor_employee_number   =>     l_assignment_rec.vendor_employee_number
4546 ,p_vendor_id                =>     l_assignment_rec.vendor_id
4547 ,p_effective_start_date     =>     l_effective_start_date
4548 ,p_effective_end_date       =>     l_effective_end_date
4549 ,p_element_warning          =>     l_element_warning
4550 ,p_element_changed          =>     l_element_changed
4551 ,p_email_id                 =>     l_email_id
4552 ,p_page_error => p_page_error
4553 ,p_page_error_msg => p_page_error_msg
4554 ,p_page_warning => p_page_warning
4555 ,p_page_warning_msg => p_page_warning_msg
4556 ,p_organization_error => p_organization_error
4557 ,p_organization_error_msg => p_organization_error_msg
4558 ,p_job_error => p_job_error
4559 ,p_job_error_msg => p_job_error_msg
4560 ,p_position_error => p_position_error
4561 ,p_position_error_msg => p_position_error_msg
4562 ,p_grade_error => p_grade_error
4563 ,p_grade_error_msg => p_grade_error_msg
4564 ,p_supervisor_error => p_supervisor_error
4565 ,p_supervisor_error_msg => p_supervisor_error_msg
4566 ,p_location_error => p_location_error
4567 ,p_location_error_msg => p_location_error_msg
4568 -- GSP change
4569 ,p_ltt_salary_data => ltt_salary_data
4570 ,p_gsp_post_process_warning => p_gsp_post_process_warning
4571 -- End of GSP change
4572 ,p_po_header_id => p_po_header_id
4573 ,p_po_line_id  => p_po_line_id
4574 ,p_vendor_site_id  => p_vendor_site_id
4575 ,p_projected_asgn_end => p_proj_asgn_end
4576 );
4577 
4578 p_element_changed:=l_element_changed;
4579 
4580 
4581 
4582 else --end p_save_mode = 'SAVE_FOR_LATER'
4583   if(l_db_assignment_rec.assignment_type = 'A') then
4584     l_datetrack_update_mode :=  'CORRECTION';
4585   end if;
4586 end if; --end p_save_mode <> 'SAVE_FOR_LATER'
4587 --
4588 -- if there were errors, handle them
4589 --
4590 --start registration
4591 -- This is to rollback the dummy person created during the process request phase of the assignment page
4592 -- the new user registration.
4593 if p_flow_mode is not null and
4594    p_flow_mode = hr_process_assignment_ss.g_new_hire_registration
4595 then
4596 rollback;
4597 end if;
4598 --end registration
4599 --
4600 
4601 -- applicant_hire
4602 if (g_applicant_hire) then
4603    rollback to applicant_hire;
4604 end if;
4605 
4606 
4607 if NVL(p_element_changed,'X') <> 'W'  OR
4608    p_save_mode = 'SAVE_FOR_LATER' then
4609   --
4610   -- no error or save for later, so save to transaction table
4611   --
4612   if l_transaction_step_id is null then
4613     --
4614     -- first of all check if this transaction is already in progress
4615     --
4616     l_transaction_id:=hr_transaction_ss.get_transaction_id
4617                       (p_item_type   =>   l_item_type
4618                       ,p_item_key    =>   l_item_key);
4619     --
4620     -- if the transaction is not already in progress, create a new one
4621     --
4622     if l_transaction_id is null then
4623       hr_transaction_ss.start_transaction
4624       (itemtype    =>    l_item_type
4625       ,itemkey     =>    l_item_key
4626       ,actid       =>    l_activity_id
4627       ,funmode     =>    'RUN'
4628       ,p_login_person_id => p_login_person_id
4629       ,p_plan_id   =>    p_plan_id
4630       ,p_rptg_grp_id    =>  p_rptg_grp_id
4631       ,p_effective_date_option  => p_effective_date_option
4632       ,result      =>    l_result);
4633     --
4634       l_transaction_id:=hr_transaction_ss.get_transaction_id
4635                         (p_item_type   =>   l_item_type
4636                         ,p_item_key    =>   l_item_key);
4637       if l_transaction_id is null then
4638         fnd_message.set_name('PER', 'HR_CREATE_TRANSACTION_ID_ERR');
4639         hr_utility.raise_error;
4640       end if;
4641     end if;
4642     --
4643     -- create a transaction step
4644     --
4645     open process_order(l_item_type,l_item_key);
4646     fetch process_order into l_proc_order;
4647     if process_order%found then
4648     hr_transaction_api.create_trans_step
4649       (p_validate              => false
4650       ,p_creator_person_id     => p_login_person_id
4651       ,p_transaction_id        => l_transaction_id
4652       ,p_api_name              => g_api_name
4653       ,p_item_type             => l_item_type
4654       ,p_item_key              => l_item_key
4655       ,p_activity_id           => l_activity_id
4656       ,p_transaction_step_id   => l_transaction_step_id
4657       ,p_processing_order      => l_proc_order - 1
4658       ,p_object_version_number => l_trns_object_version_number
4659       );
4660     else
4661     hr_transaction_api.create_transaction_step
4662       (p_validate              => false
4663       ,p_creator_person_id     => p_login_person_id
4664       ,p_transaction_id        => l_transaction_id
4665       ,p_api_name              => g_api_name
4666       ,p_item_type             => l_item_type
4667       ,p_item_key              => l_item_key
4668       ,p_activity_id           => l_activity_id
4669       ,p_transaction_step_id   => l_transaction_step_id
4670       ,p_object_version_number => l_trns_object_version_number
4671       );
4672      end if;
4673      close process_order;
4674   --
4675   end if;
4676   --p_transaction_step_id := to_char(l_transaction_step_id);
4677 
4678   -- save the parameters to the temporary tables
4679   --
4680   l_count:=1;
4681   l_trans_tbl(l_count).param_name      := 'P_ASSIGNMENT_ID';
4682   l_trans_tbl(l_count).param_value     :=  l_assignment_id;
4683   l_trans_tbl(l_count).param_original_value := l_assignment_id;  --ns
4684   l_trans_tbl(l_count).param_data_type := 'NUMBER';
4685   --
4686   l_count:=l_count+1;
4687   l_trans_tbl(l_count).param_name      := 'P_OBJECT_VERSION_NUMBER';
4688   l_trans_tbl(l_count).param_value     :=  p_object_version_number;
4689   l_trans_tbl(l_count).param_original_value := p_object_version_number;  --ns
4690   l_trans_tbl(l_count).param_data_type := 'NUMBER';
4691   --
4692   l_count:=l_count+1;
4693   l_trans_tbl(l_count).param_name      := 'P_EFFECTIVE_DATE';
4694   l_trans_tbl(l_count).param_value     :=  p_effective_date;
4695   l_trans_tbl(l_count).param_original_value := p_effective_date; --ns
4696   l_trans_tbl(l_count).param_data_type := 'DATE';
4697   --
4698   --ns start
4699   l_count:=l_count+1;
4700   l_trans_tbl(l_count).param_name      := 'P_EFFECTIVE_DATE_OPTION';
4701   l_trans_tbl(l_count).param_value     :=  p_effective_date_option;
4702   l_trans_tbl(l_count).param_original_value := p_effective_date_option;
4703   l_trans_tbl(l_count).param_data_type := 'VARCHAR2';
4704   --ns end
4705   --
4706   l_count:=l_count+1;
4707   l_trans_tbl(l_count).param_name      := 'P_ELEMENT_CHANGED';
4708   l_trans_tbl(l_count).param_value     :=  p_element_changed;
4709   l_trans_tbl(l_count).param_original_value := p_element_changed; --ns
4710   l_trans_tbl(l_count).param_data_type := 'VARCHAR2';
4711   --
4712   l_count:=l_count+1;
4713   l_trans_tbl(l_count).param_name      := 'P_DATETRACK_UPDATE_MODE';
4714   l_trans_tbl(l_count).param_value     :=  l_datetrack_update_mode;
4715   l_trans_tbl(l_count).param_original_value := l_datetrack_update_mode; --ns
4716   l_trans_tbl(l_count).param_data_type := 'VARCHAR2';
4717   --
4718   l_count:=l_count+1;
4719   l_trans_tbl(l_count).param_name      := 'P_ORGANIZATION_ID';
4720   l_trans_tbl(l_count).param_value     :=  l_assignment_rec.organization_id;
4721   l_trans_tbl(l_count).param_original_value := l_db_assignment_rec.organization_id;  --ns
4722   l_trans_tbl(l_count).param_data_type := 'NUMBER';
4723   --
4724   l_count:=l_count+1;
4725   l_trans_tbl(l_count).param_name      := 'P_BUSINESS_GROUP_ID';
4726   l_trans_tbl(l_count).param_value     :=  l_assignment_rec.business_group_id;
4727   l_trans_tbl(l_count).param_original_value := l_db_assignment_rec.business_group_id;  --ns
4728   l_trans_tbl(l_count).param_data_type := 'NUMBER';
4729   --
4730   l_count:=l_count+1;
4731   l_trans_tbl(l_count).param_name      := 'P_PERSON_ID';
4732   l_trans_tbl(l_count).param_value     :=  l_assignment_rec.person_id;
4733   l_trans_tbl(l_count).param_original_value := l_db_assignment_rec.person_id;  --ns
4734   l_trans_tbl(l_count).param_data_type := 'NUMBER';
4735   --
4736   l_count:=l_count+1;
4737   l_trans_tbl(l_count).param_name      := 'P_LOGIN_PERSON_ID';
4738   l_trans_tbl(l_count).param_value     :=  p_login_person_id;
4739   l_trans_tbl(l_count).param_data_type := 'NUMBER';
4740   --
4741   l_name := null;
4742   open csr_org_name(l_assignment_rec.organization_id);
4743   fetch csr_org_name into l_name;
4744   close csr_org_name;
4745 
4746   --ns start
4747   l_original_name := null;
4748   open csr_org_name(l_db_assignment_rec.organization_id);
4749   fetch csr_org_name into l_original_name;
4750   close csr_org_name;
4751   --ns end
4752 
4753   l_count:=l_count+1;
4754   l_trans_tbl(l_count).param_name      := 'P_ORG_NAME';
4755   l_trans_tbl(l_count).param_value     :=  l_name;
4756   l_trans_tbl(l_count).param_original_value := l_original_name ;  --ns
4757   l_trans_tbl(l_count).param_data_type := 'VARCHAR2';
4758   --
4759   l_count:=l_count+1;
4760   l_trans_tbl(l_count).param_name      := 'P_POSITION_ID';
4761   l_trans_tbl(l_count).param_value     :=  l_assignment_rec.position_id;
4762   l_trans_tbl(l_count).param_original_value := l_db_assignment_rec.position_id;  --ns
4763   l_trans_tbl(l_count).param_data_type := 'NUMBER';
4764   --
4765   l_name := null;
4766   open csr_pos_name(l_assignment_rec.position_id);
4767   fetch csr_pos_name into l_name;
4768   close csr_pos_name;
4769 
4770   --ns start
4771   l_original_name := null;
4772   open csr_pos_name(l_db_assignment_rec.position_id);
4773   fetch csr_pos_name into l_original_name;
4774   close csr_pos_name;
4775   --ns end
4776 
4777   l_count:=l_count+1;
4778   l_trans_tbl(l_count).param_name      := 'P_POS_NAME';
4779   l_trans_tbl(l_count).param_value     :=  l_name;
4780   l_trans_tbl(l_count).param_original_value := l_original_name ;  --ns
4781   l_trans_tbl(l_count).param_data_type := 'VARCHAR2';
4782   --
4783   l_count:=l_count+1;
4784   l_trans_tbl(l_count).param_name      := 'P_JOB_ID';
4785   l_trans_tbl(l_count).param_value     :=  l_assignment_rec.job_id;
4786   l_trans_tbl(l_count).param_original_value := l_db_assignment_rec.job_id;  --ns
4787   l_trans_tbl(l_count).param_data_type := 'NUMBER';
4788   --
4789   l_name := null;
4790   open csr_job_name(l_assignment_rec.job_id);
4791   fetch csr_job_name into l_name;
4792   close csr_job_name;
4793 
4794   --ns start
4795   l_original_name := null;
4796   open csr_job_name(l_db_assignment_rec.job_id);
4797   fetch csr_job_name into l_original_name;
4798   close csr_job_name;
4799   --ns end
4800 
4801   l_count:=l_count+1;
4802   l_trans_tbl(l_count).param_name      := 'P_JOB_NAME';
4803   l_trans_tbl(l_count).param_value     :=  l_name;
4804   l_trans_tbl(l_count).param_original_value := l_original_name ;  --ns
4805   l_trans_tbl(l_count).param_data_type := 'VARCHAR2';
4806   --
4807   l_count:=l_count+1;
4808   l_trans_tbl(l_count).param_name      := 'P_GRADE_ID';
4809   l_trans_tbl(l_count).param_value     :=  l_assignment_rec.grade_id;
4810   l_trans_tbl(l_count).param_original_value := l_db_assignment_rec.grade_id;  --ns
4811   l_trans_tbl(l_count).param_data_type := 'NUMBER';
4812   --
4813   l_name := null;
4814   open csr_grade_name(l_assignment_rec.grade_id);
4815   fetch csr_grade_name into l_name;
4816   close csr_grade_name;
4817 
4818   --ns start
4819   l_original_name := null;
4820   open csr_grade_name(l_db_assignment_rec.grade_id);
4821   fetch csr_grade_name into l_original_name;
4822   close csr_grade_name;
4823   --ns end
4824 
4825   l_count:=l_count+1;
4826   l_trans_tbl(l_count).param_name      := 'P_GRADE_NAME';
4827   l_trans_tbl(l_count).param_value     :=  l_name;
4828   l_trans_tbl(l_count).param_original_value := l_original_name ;  --ns
4829   l_trans_tbl(l_count).param_data_type := 'VARCHAR2';
4830   --
4831   l_count:=l_count+1;
4832   l_trans_tbl(l_count).param_name      := 'P_LOCATION_ID';
4833   l_trans_tbl(l_count).param_value     :=  l_assignment_rec.location_id;
4834   l_trans_tbl(l_count).param_original_value := l_db_assignment_rec.location_id;  --ns
4835   l_trans_tbl(l_count).param_data_type := 'NUMBER';
4836   --
4837   l_count:=l_count+1;
4838   l_trans_tbl(l_count).param_name      := 'P_EMPLOYMENT_CATEGORY';
4839   l_trans_tbl(l_count).param_value     :=  l_assignment_rec.employment_category;
4840   l_trans_tbl(l_count).param_original_value := l_db_assignment_rec.employment_category;  --ns
4841   l_trans_tbl(l_count).param_data_type := 'VARCHAR2';
4842   --
4843   l_count:=l_count+1;
4844   l_trans_tbl(l_count).param_name      := 'P_SUPERVISOR_ID';
4845   l_trans_tbl(l_count).param_value     :=  l_assignment_rec.supervisor_id;
4846   l_trans_tbl(l_count).param_original_value := l_db_assignment_rec.supervisor_id;  --ns
4847   l_trans_tbl(l_count).param_data_type := 'NUMBER';
4848   --
4849   l_count:=l_count+1;
4850   l_trans_tbl(l_count).param_name      := 'P_MANAGER_FLAG';
4851   l_trans_tbl(l_count).param_value     :=  l_assignment_rec.manager_flag;
4852   l_trans_tbl(l_count).param_original_value := l_db_assignment_rec.manager_flag;  --ns
4853   l_trans_tbl(l_count).param_data_type := 'VARCHAR2';
4854   --
4855   l_count:=l_count+1;
4856   l_trans_tbl(l_count).param_name      := 'P_NORMAL_HOURS';
4857   l_trans_tbl(l_count).param_value     :=  l_assignment_rec.normal_hours;
4858   l_trans_tbl(l_count).param_original_value := l_db_assignment_rec.normal_hours;  --ns
4859   l_trans_tbl(l_count).param_data_type := 'NUMBER';
4860   --
4861   l_count:=l_count+1;
4862   l_trans_tbl(l_count).param_name      := 'P_FREQUENCY';
4863   l_trans_tbl(l_count).param_value     :=  l_assignment_rec.frequency;
4864   l_trans_tbl(l_count).param_original_value := l_db_assignment_rec.frequency;  --ns
4865   l_trans_tbl(l_count).param_data_type := 'VARCHAR2';
4866   --
4867   l_count:=l_count+1;
4868   l_trans_tbl(l_count).param_name      := 'P_TIME_NORMAL_FINISH';
4869   l_trans_tbl(l_count).param_value     :=  l_assignment_rec.time_normal_finish;
4870   l_trans_tbl(l_count).param_original_value := l_db_assignment_rec.time_normal_finish;  --ns
4871   l_trans_tbl(l_count).param_data_type := 'VARCHAR2';
4872   --
4873   l_count:=l_count+1;
4874   l_trans_tbl(l_count).param_name      := 'P_TIME_NORMAL_START';
4875   l_trans_tbl(l_count).param_value     :=  l_assignment_rec.time_normal_start;
4876   l_trans_tbl(l_count).param_original_value := l_db_assignment_rec.time_normal_start;  --ns
4877   l_trans_tbl(l_count).param_data_type := 'VARCHAR2';
4878   --
4879   l_count:=l_count+1;
4880   l_trans_tbl(l_count).param_name      := 'P_BARGAINING_UNIT_CODE';
4881   l_trans_tbl(l_count).param_value  :=  l_assignment_rec.bargaining_unit_code;
4882   l_trans_tbl(l_count).param_original_value := l_db_assignment_rec.bargaining_unit_code;  --ns
4883   l_trans_tbl(l_count).param_data_type := 'VARCHAR2';
4884   --
4885   l_count:=l_count+1;
4886   l_trans_tbl(l_count).param_name      := 'P_LABOUR_UNION_MEMBER_FLAG';
4887   l_trans_tbl(l_count).param_value := l_assignment_rec.labour_union_member_flag;
4888   l_trans_tbl(l_count).param_original_value := l_db_assignment_rec.labour_union_member_flag;  --ns
4889   l_trans_tbl(l_count).param_data_type := 'VARCHAR2';
4890   --
4891   l_count:=l_count+1;
4892   l_trans_tbl(l_count).param_name      := 'P_SPECIAL_CEILING_STEP_ID';
4893   l_trans_tbl(l_count).param_value
4894     := l_assignment_rec.special_ceiling_step_id;
4895   l_trans_tbl(l_count).param_original_value := l_db_assignment_rec.special_ceiling_step_id;  --ns
4896   l_trans_tbl(l_count).param_data_type := 'NUMBER';
4897   --
4898   l_count:=l_count+1;
4899   l_trans_tbl(l_count).param_name      := 'P_ASSIGNMENT_STATUS_TYPE_ID';
4900   l_trans_tbl(l_count).param_value
4901     := l_assignment_rec.assignment_status_type_id;
4902   l_trans_tbl(l_count).param_original_value := l_db_assignment_rec.assignment_status_type_id;  --ns
4903   l_trans_tbl(l_count).param_data_type := 'NUMBER';
4904   --
4905   l_count:=l_count+1;
4906   l_trans_tbl(l_count).param_name      := 'P_CHANGE_REASON';
4907   l_trans_tbl(l_count).param_value
4908     :=  l_assignment_rec.change_reason;
4909   l_trans_tbl(l_count).param_original_value := l_db_assignment_rec.change_reason;  --ns
4910   l_trans_tbl(l_count).param_data_type := 'VARCHAR2';
4911 --
4912   l_count:=l_count+1;
4913   l_trans_tbl(l_count).param_name      := 'P_ASS_ATTRIBUTE_CATEGORY';
4914   l_trans_tbl(l_count).param_value
4915     :=  l_assignment_rec.ass_attribute_category;
4916   l_trans_tbl(l_count).param_original_value := l_db_assignment_rec.ass_attribute_category;  --ns
4917   l_trans_tbl(l_count).param_data_type := 'VARCHAR2';
4918   --
4919   l_count:=l_count+1;
4920   l_trans_tbl(l_count).param_name      := 'P_ASS_ATTRIBUTE1';
4921   l_trans_tbl(l_count).param_value     :=  l_assignment_rec.ass_attribute1;
4922   l_trans_tbl(l_count).param_original_value := l_db_assignment_rec.ass_attribute1;  --ns
4923   l_trans_tbl(l_count).param_data_type := 'VARCHAR2';
4924   --
4925   l_count:=l_count+1;
4926   l_trans_tbl(l_count).param_name      := 'P_ASS_ATTRIBUTE2';
4927   l_trans_tbl(l_count).param_value     :=  l_assignment_rec.ass_attribute2;
4928   l_trans_tbl(l_count).param_original_value := l_db_assignment_rec.ass_attribute2;  --ns
4929   l_trans_tbl(l_count).param_data_type := 'VARCHAR2';
4930   --
4931   l_count:=l_count+1;
4932   l_trans_tbl(l_count).param_name      := 'P_ASS_ATTRIBUTE3';
4933   l_trans_tbl(l_count).param_value     :=  l_assignment_rec.ass_attribute3;
4934   l_trans_tbl(l_count).param_original_value := l_db_assignment_rec.ass_attribute3;  --ns
4935   l_trans_tbl(l_count).param_data_type := 'VARCHAR2';
4936   --
4937   l_count:=l_count+1;
4938   l_trans_tbl(l_count).param_name      := 'P_ASS_ATTRIBUTE4';
4939   l_trans_tbl(l_count).param_value     :=  l_assignment_rec.ass_attribute4;
4940   l_trans_tbl(l_count).param_original_value := l_db_assignment_rec.ass_attribute4;  --ns
4941   l_trans_tbl(l_count).param_data_type := 'VARCHAR2';
4942   --
4943   l_count:=l_count+1;
4944   l_trans_tbl(l_count).param_name      := 'P_ASS_ATTRIBUTE5';
4945   l_trans_tbl(l_count).param_value     :=  l_assignment_rec.ass_attribute5;
4946   l_trans_tbl(l_count).param_original_value := l_db_assignment_rec.ass_attribute5;  --ns
4947   l_trans_tbl(l_count).param_data_type := 'VARCHAR2';
4948   --
4949   l_count:=l_count+1;
4950   l_trans_tbl(l_count).param_name      := 'P_ASS_ATTRIBUTE6';
4951   l_trans_tbl(l_count).param_value     :=  l_assignment_rec.ass_attribute6;
4952   l_trans_tbl(l_count).param_original_value := l_db_assignment_rec.ass_attribute6;  --ns
4953   l_trans_tbl(l_count).param_data_type := 'VARCHAR2';
4954   --
4955   l_count:=l_count+1;
4956   l_trans_tbl(l_count).param_name      := 'P_ASS_ATTRIBUTE7';
4957   l_trans_tbl(l_count).param_value     :=  l_assignment_rec.ass_attribute7;
4958   l_trans_tbl(l_count).param_original_value := l_db_assignment_rec.ass_attribute7;  --ns
4959   l_trans_tbl(l_count).param_data_type := 'VARCHAR2';
4960   --
4961   l_count:=l_count+1;
4962   l_trans_tbl(l_count).param_name      := 'P_ASS_ATTRIBUTE8';
4963   l_trans_tbl(l_count).param_value     :=  l_assignment_rec.ass_attribute8;
4964   l_trans_tbl(l_count).param_original_value := l_db_assignment_rec.ass_attribute8;  --ns
4965   l_trans_tbl(l_count).param_data_type := 'VARCHAR2';
4966   --
4967   l_count:=l_count+1;
4968   l_trans_tbl(l_count).param_name      := 'P_ASS_ATTRIBUTE9';
4969   l_trans_tbl(l_count).param_value     :=  l_assignment_rec.ass_attribute9;
4970   l_trans_tbl(l_count).param_original_value := l_db_assignment_rec.ass_attribute9;  --ns
4971   l_trans_tbl(l_count).param_data_type := 'VARCHAR2';
4972   --
4973   l_count:=l_count+1;
4974   l_trans_tbl(l_count).param_name      := 'P_ASS_ATTRIBUTE10';
4975   l_trans_tbl(l_count).param_value     :=  l_assignment_rec.ass_attribute10;
4976   l_trans_tbl(l_count).param_original_value := l_db_assignment_rec.ass_attribute10;  --ns
4977   l_trans_tbl(l_count).param_data_type := 'VARCHAR2';
4978   --
4979   l_count:=l_count+1;
4980   l_trans_tbl(l_count).param_name      := 'P_ASS_ATTRIBUTE11';
4981   l_trans_tbl(l_count).param_value     :=  l_assignment_rec.ass_attribute11;
4982   l_trans_tbl(l_count).param_original_value := l_db_assignment_rec.ass_attribute11;  --ns
4983   l_trans_tbl(l_count).param_data_type := 'VARCHAR2';
4984   --
4985   l_count:=l_count+1;
4986   l_trans_tbl(l_count).param_name      := 'P_ASS_ATTRIBUTE12';
4987   l_trans_tbl(l_count).param_value     :=  l_assignment_rec.ass_attribute12;
4988   l_trans_tbl(l_count).param_original_value := l_db_assignment_rec.ass_attribute12;  --ns
4989   l_trans_tbl(l_count).param_data_type := 'VARCHAR2';
4990   --
4991   l_count:=l_count+1;
4992   l_trans_tbl(l_count).param_name      := 'P_ASS_ATTRIBUTE13';
4993   l_trans_tbl(l_count).param_value     :=  l_assignment_rec.ass_attribute13;
4994   l_trans_tbl(l_count).param_original_value := l_db_assignment_rec.ass_attribute13;  --ns
4995   l_trans_tbl(l_count).param_data_type := 'VARCHAR2';
4996   --
4997   l_count:=l_count+1;
4998   l_trans_tbl(l_count).param_name      := 'P_ASS_ATTRIBUTE14';
4999   l_trans_tbl(l_count).param_value     :=  l_assignment_rec.ass_attribute14;
5000   l_trans_tbl(l_count).param_original_value := l_db_assignment_rec.ass_attribute14;  --ns
5001   l_trans_tbl(l_count).param_data_type := 'VARCHAR2';
5002   --
5003   l_count:=l_count+1;
5004   l_trans_tbl(l_count).param_name      := 'P_ASS_ATTRIBUTE15';
5005   l_trans_tbl(l_count).param_value     :=  l_assignment_rec.ass_attribute15;
5006   l_trans_tbl(l_count).param_original_value := l_db_assignment_rec.ass_attribute15;  --ns
5007   l_trans_tbl(l_count).param_data_type := 'VARCHAR2';
5008   --
5009   l_count:=l_count+1;
5010   l_trans_tbl(l_count).param_name      := 'P_ASS_ATTRIBUTE16';
5011   l_trans_tbl(l_count).param_value     :=  l_assignment_rec.ass_attribute16;
5012   l_trans_tbl(l_count).param_original_value := l_db_assignment_rec.ass_attribute16;  --ns
5013   l_trans_tbl(l_count).param_data_type := 'VARCHAR2';
5014   --
5015   l_count:=l_count+1;
5016   l_trans_tbl(l_count).param_name      := 'P_ASS_ATTRIBUTE17';
5017   l_trans_tbl(l_count).param_value     :=  l_assignment_rec.ass_attribute17;
5018   l_trans_tbl(l_count).param_original_value := l_db_assignment_rec.ass_attribute17;  --ns
5019   l_trans_tbl(l_count).param_data_type := 'VARCHAR2';
5020   --
5021   l_count:=l_count+1;
5022   l_trans_tbl(l_count).param_name      := 'P_ASS_ATTRIBUTE18';
5023   l_trans_tbl(l_count).param_value     :=  l_assignment_rec.ass_attribute18;
5024   l_trans_tbl(l_count).param_original_value := l_db_assignment_rec.ass_attribute18;  --ns
5025   l_trans_tbl(l_count).param_data_type := 'VARCHAR2';
5026   --
5027   l_count:=l_count+1;
5028   l_trans_tbl(l_count).param_name      := 'P_ASS_ATTRIBUTE19';
5029   l_trans_tbl(l_count).param_value     :=  l_assignment_rec.ass_attribute19;
5030   l_trans_tbl(l_count).param_original_value := l_db_assignment_rec.ass_attribute19;  --ns
5031   l_trans_tbl(l_count).param_data_type := 'VARCHAR2';
5032   --
5033   l_count:=l_count+1;
5034   l_trans_tbl(l_count).param_name      := 'P_ASS_ATTRIBUTE20';
5035   l_trans_tbl(l_count).param_value     :=  l_assignment_rec.ass_attribute20;
5036   l_trans_tbl(l_count).param_original_value := l_db_assignment_rec.ass_attribute20;  --ns
5037   l_trans_tbl(l_count).param_data_type := 'VARCHAR2';
5038   --
5039   l_count:=l_count+1;
5040   l_trans_tbl(l_count).param_name      := 'P_ASS_ATTRIBUTE21';
5041   l_trans_tbl(l_count).param_value     :=  l_assignment_rec.ass_attribute21;
5042   l_trans_tbl(l_count).param_original_value := l_db_assignment_rec.ass_attribute21;  --ns
5043   l_trans_tbl(l_count).param_data_type := 'VARCHAR2';
5044   --
5045   l_count:=l_count+1;
5046   l_trans_tbl(l_count).param_name      := 'P_ASS_ATTRIBUTE22';
5047   l_trans_tbl(l_count).param_value     :=  l_assignment_rec.ass_attribute22;
5048   l_trans_tbl(l_count).param_original_value := l_db_assignment_rec.ass_attribute22;  --ns
5049   l_trans_tbl(l_count).param_data_type := 'VARCHAR2';
5050   --
5051   l_count:=l_count+1;
5052   l_trans_tbl(l_count).param_name      := 'P_ASS_ATTRIBUTE23';
5053   l_trans_tbl(l_count).param_value     :=  l_assignment_rec.ass_attribute23;
5054   l_trans_tbl(l_count).param_original_value := l_db_assignment_rec.ass_attribute23;  --ns
5055   l_trans_tbl(l_count).param_data_type := 'VARCHAR2';
5056   --
5057   l_count:=l_count+1;
5058   l_trans_tbl(l_count).param_name      := 'P_ASS_ATTRIBUTE24';
5059   l_trans_tbl(l_count).param_value     :=  l_assignment_rec.ass_attribute24;
5060   l_trans_tbl(l_count).param_original_value := l_db_assignment_rec.ass_attribute24;  --ns
5061   l_trans_tbl(l_count).param_data_type := 'VARCHAR2';
5062   --
5063   l_count:=l_count+1;
5064   l_trans_tbl(l_count).param_name      := 'P_ASS_ATTRIBUTE25';
5065   l_trans_tbl(l_count).param_value     :=  l_assignment_rec.ass_attribute25;
5066   l_trans_tbl(l_count).param_original_value := l_db_assignment_rec.ass_attribute25;  --ns
5067   l_trans_tbl(l_count).param_data_type := 'VARCHAR2';
5068   --
5069   l_count:=l_count+1;
5070   l_trans_tbl(l_count).param_name      := 'P_ASS_ATTRIBUTE26';
5071   l_trans_tbl(l_count).param_value     :=  l_assignment_rec.ass_attribute26;
5072   l_trans_tbl(l_count).param_original_value := l_db_assignment_rec.ass_attribute26;  --ns
5073   l_trans_tbl(l_count).param_data_type := 'VARCHAR2';
5074   --
5075   l_count:=l_count+1;
5076   l_trans_tbl(l_count).param_name      := 'P_ASS_ATTRIBUTE27';
5077   l_trans_tbl(l_count).param_value     :=  l_assignment_rec.ass_attribute27;
5078   l_trans_tbl(l_count).param_original_value := l_db_assignment_rec.ass_attribute27;  --ns
5079   l_trans_tbl(l_count).param_data_type := 'VARCHAR2';
5080   --
5081   l_count:=l_count+1;
5082   l_trans_tbl(l_count).param_name      := 'P_ASS_ATTRIBUTE28';
5083   l_trans_tbl(l_count).param_value     :=  l_assignment_rec.ass_attribute28;
5084   l_trans_tbl(l_count).param_original_value := l_db_assignment_rec.ass_attribute28;  --ns
5085   l_trans_tbl(l_count).param_data_type := 'VARCHAR2';
5086   --
5087   l_count:=l_count+1;
5088   l_trans_tbl(l_count).param_name      := 'P_ASS_ATTRIBUTE29';
5089   l_trans_tbl(l_count).param_value     :=  l_assignment_rec.ass_attribute29;
5090   l_trans_tbl(l_count).param_original_value := l_db_assignment_rec.ass_attribute29;  --ns
5091   l_trans_tbl(l_count).param_data_type := 'VARCHAR2';
5092   --
5093   l_count:=l_count+1;
5094   l_trans_tbl(l_count).param_name      := 'P_ASS_ATTRIBUTE30';
5095   l_trans_tbl(l_count).param_value     :=  l_assignment_rec.ass_attribute30;
5096   l_trans_tbl(l_count).param_original_value := l_db_assignment_rec.ass_attribute30;  --ns
5097   l_trans_tbl(l_count).param_data_type := 'VARCHAR2';
5098   --
5099   l_count:=l_count+1;
5100   l_trans_tbl(l_count).param_name      := 'P_PEOPLE_GROUP_ID';
5101   l_trans_tbl(l_count).param_value     :=  l_assignment_rec.people_group_id;
5102   l_trans_tbl(l_count).param_original_value := l_db_assignment_rec.people_group_id;  --ns
5103   l_trans_tbl(l_count).param_data_type := 'NUMBER';
5104   --
5105   l_count:=l_count+1;
5106   l_trans_tbl(l_count).param_name      := 'P_SOFT_CODING_KEYFLEX_ID';
5107   l_trans_tbl(l_count).param_value :=  l_assignment_rec.soft_coding_keyflex_id;
5108   l_trans_tbl(l_count).param_original_value := l_db_assignment_rec.soft_coding_keyflex_id;  --ns
5109   l_trans_tbl(l_count).param_data_type := 'NUMBER';
5110   --
5111   l_count:=l_count+1;
5112   l_trans_tbl(l_count).param_name      := 'P_PAYROLL_ID';
5113   l_trans_tbl(l_count).param_value     :=  l_assignment_rec.payroll_id;
5114   l_trans_tbl(l_count).param_original_value := l_db_assignment_rec.payroll_id;  --ns
5115   l_trans_tbl(l_count).param_data_type := 'NUMBER';
5116  --
5117   l_count:=l_count+1;
5118   l_trans_tbl(l_count).param_name      := 'P_PAY_BASIS_ID';
5119   l_trans_tbl(l_count).param_value     :=  l_assignment_rec.pay_basis_id;
5120   l_trans_tbl(l_count).param_original_value := l_db_assignment_rec.pay_basis_id;  --ns
5121   l_trans_tbl(l_count).param_data_type := 'NUMBER';
5122 --
5123   l_count:=l_count+1;
5124   l_trans_tbl(l_count).param_name      := 'P_SAL_REVIEW_PERIOD';
5125   l_trans_tbl(l_count).param_value     :=  l_assignment_rec.sal_review_period;
5126   l_trans_tbl(l_count).param_original_value := l_db_assignment_rec.sal_review_period;  --ns
5127   l_trans_tbl(l_count).param_data_type := 'NUMBER';
5128 --
5129   l_count:=l_count+1;
5130   l_trans_tbl(l_count).param_name      := 'P_SAL_REVIEW_PERIOD_FREQUENCY';
5131   l_trans_tbl(l_count).param_value     :=
5132          l_assignment_rec.sal_review_period_frequency;
5133   l_trans_tbl(l_count).param_original_value := l_db_assignment_rec.sal_review_period_frequency;  --ns
5134   l_trans_tbl(l_count).param_data_type := 'VARCHAR2';
5135   --
5136 --
5137   l_count:=l_count+1;
5138   l_trans_tbl(l_count).param_name      := 'P_DATE_PROBATION_END';
5139   l_trans_tbl(l_count).param_value     :=
5140          to_char(l_assignment_rec.date_probation_end,g_date_format);
5141   l_trans_tbl(l_count).param_original_value := to_char(l_db_assignment_rec.date_probation_end,g_date_format);  --ns
5142   l_trans_tbl(l_count).param_data_type := 'DATE';
5143 --
5144   l_count:=l_count+1;
5145   l_trans_tbl(l_count).param_name      := 'P_PROBATION_PERIOD';
5146   l_trans_tbl(l_count).param_value     :=
5147          l_assignment_rec.probation_period;
5148   l_trans_tbl(l_count).param_original_value := l_db_assignment_rec.probation_period;  --ns
5149   l_trans_tbl(l_count).param_data_type := 'NUMBER';
5150 --
5151   l_count:=l_count+1;
5152   l_trans_tbl(l_count).param_name      := 'P_PROBATION_UNIT';
5153   l_trans_tbl(l_count).param_value     :=
5154          l_assignment_rec.probation_unit;
5155   l_trans_tbl(l_count).param_original_value := l_db_assignment_rec.probation_unit;  --ns
5156   l_trans_tbl(l_count).param_data_type := 'VARCHAR2';
5157 --
5158   l_count:=l_count+1;
5159   l_trans_tbl(l_count).param_name      := 'P_NOTICE_PERIOD';
5160   l_trans_tbl(l_count).param_value     :=
5161          l_assignment_rec.notice_period;
5162   l_trans_tbl(l_count).param_original_value := l_db_assignment_rec.notice_period;  --ns
5163   l_trans_tbl(l_count).param_data_type := 'NUMBER';
5164 --
5165   l_count:=l_count+1;
5166   l_trans_tbl(l_count).param_name      := 'P_NOTICE_PERIOD_UOM';
5167   l_trans_tbl(l_count).param_value     :=
5168          l_assignment_rec.notice_period_uom;
5169   l_trans_tbl(l_count).param_original_value := l_db_assignment_rec.notice_period_uom;  --ns
5170   l_trans_tbl(l_count).param_data_type := 'VARCHAR2';
5171 --
5172   l_count:=l_count+1;
5173   l_trans_tbl(l_count).param_name      := 'P_EMPLOYEE_CATEGORY';
5174   l_trans_tbl(l_count).param_value     :=
5175          l_assignment_rec.employee_category;
5176   l_trans_tbl(l_count).param_original_value := l_db_assignment_rec.employee_category;  --ns
5177   l_trans_tbl(l_count).param_data_type := 'VARCHAR2';
5178 --
5179   l_count:=l_count+1;
5180   l_trans_tbl(l_count).param_name      := 'P_WORK_AT_HOME';
5181   l_trans_tbl(l_count).param_value     :=
5182          l_assignment_rec.work_at_home;
5183   l_trans_tbl(l_count).param_original_value := l_db_assignment_rec.work_at_home;  --ns
5184   l_trans_tbl(l_count).param_data_type := 'VARCHAR2';
5185 --
5186   l_count:=l_count+1;
5187   l_trans_tbl(l_count).param_name      := 'P_JOB_POST_SOURCE_NAME';
5188   l_trans_tbl(l_count).param_value     :=
5189          l_assignment_rec.job_post_source_name;
5190   l_trans_tbl(l_count).param_original_value := l_db_assignment_rec.job_post_source_name;  --ns
5191   l_trans_tbl(l_count).param_data_type := 'VARCHAR2';
5192 --
5193   l_count:=l_count+1;
5194   l_trans_tbl(l_count).param_name      := 'P_PERF_REVIEW_PERIOD';
5195   l_trans_tbl(l_count).param_value     :=
5196          l_assignment_rec.perf_review_period;
5197   l_trans_tbl(l_count).param_original_value := l_db_assignment_rec.perf_review_period;  --ns
5198   l_trans_tbl(l_count).param_data_type := 'NUMBER';
5199 --
5200   l_count:=l_count+1;
5201   l_trans_tbl(l_count).param_name      := 'P_PERF_REVIEW_PERIOD_FREQUENCY';
5202   l_trans_tbl(l_count).param_value     :=
5203          l_assignment_rec.perf_review_period_frequency;
5204   l_trans_tbl(l_count).param_original_value := l_db_assignment_rec.perf_review_period_frequency;  --ns
5205   l_trans_tbl(l_count).param_data_type := 'VARCHAR2';
5206 --
5207   l_count:=l_count+1;
5208   l_trans_tbl(l_count).param_name      := 'P_INTERNAL_ADDRESS_LINE';
5209   l_trans_tbl(l_count).param_value     :=
5210          l_assignment_rec.internal_address_line;
5211   l_trans_tbl(l_count).param_original_value := l_db_assignment_rec.internal_address_line;  --ns
5212   l_trans_tbl(l_count).param_data_type := 'VARCHAR2';
5213 
5214   l_count:=l_count+1;
5215   l_trans_tbl(l_count).param_name      := 'P_CONTRACT_ID';
5216   l_trans_tbl(l_count).param_value     :=  l_assignment_rec.contract_id;
5217   l_trans_tbl(l_count).param_original_value := l_db_assignment_rec.contract_id;  --ns
5218   l_trans_tbl(l_count).param_data_type := 'NUMBER';
5219   --
5220   l_count:=l_count+1;
5221   l_trans_tbl(l_count).param_name      := 'P_ESTABLISHMENT_ID';
5222   l_trans_tbl(l_count).param_value     :=  l_assignment_rec.establishment_id;
5223   l_trans_tbl(l_count).param_original_value := l_db_assignment_rec.establishment_id;  --ns
5224   l_trans_tbl(l_count).param_data_type := 'NUMBER';
5225   --
5226   l_count:=l_count+1;
5227   l_trans_tbl(l_count).param_name      := 'P_COLLECTIVE_AGREEMENT_ID';
5228   l_trans_tbl(l_count).param_value :=  l_assignment_rec.collective_agreement_id;
5229   l_trans_tbl(l_count).param_original_value := l_db_assignment_rec.collective_agreement_id;  --ns
5230   l_trans_tbl(l_count).param_data_type := 'NUMBER';
5231   --
5232   l_count:=l_count+1;
5233   l_trans_tbl(l_count).param_name      := 'P_CAGR_ID_FLEX_NUM';
5234   l_trans_tbl(l_count).param_value     :=  l_assignment_rec.cagr_id_flex_num;
5235   l_trans_tbl(l_count).param_original_value := l_db_assignment_rec.cagr_id_flex_num;  --ns
5236   l_trans_tbl(l_count).param_data_type := 'NUMBER';
5237   --
5238   l_count:=l_count+1;
5239   l_trans_tbl(l_count).param_name      := 'P_CAGR_GRADE_DEF_ID';
5240   l_trans_tbl(l_count).param_value     :=  l_assignment_rec.cagr_grade_def_id;
5241   l_trans_tbl(l_count).param_original_value := l_db_assignment_rec.cagr_grade_def_id;      --ns
5242   l_trans_tbl(l_count).param_data_type := 'NUMBER';
5243   --
5244   l_count:=l_count+1;
5245   l_trans_tbl(l_count).param_name      := 'P_LABOUR_UNION_MEMBER_FLAG';
5246   l_trans_tbl(l_count).param_value := l_assignment_rec.labour_union_member_flag;
5247   l_trans_tbl(l_count).param_original_value := l_db_assignment_rec.labour_union_member_flag;  --ns
5248   l_trans_tbl(l_count).param_data_type := 'VARCHAR2';
5249   --
5250   l_count:=l_count+1;
5251   l_trans_tbl(l_count).param_name      := 'P_BARGAINING_UNIT_CODE';
5252   l_trans_tbl(l_count).param_value := l_assignment_rec.bargaining_unit_code;
5253   l_trans_tbl(l_count).param_original_value := l_db_assignment_rec.bargaining_unit_code;  --ns
5254   l_trans_tbl(l_count).param_data_type := 'VARCHAR2';
5255   --
5256   l_count:=l_count+1;
5257   l_trans_tbl(l_count).param_name      := 'P_DEFAULT_CODE_COMB_ID';
5258   l_trans_tbl(l_count).param_value := l_assignment_rec.default_code_comb_id;
5259   l_trans_tbl(l_count).param_original_value :=
5260          l_db_assignment_rec.default_code_comb_id;  --ns
5261   l_trans_tbl(l_count).param_data_type := 'NUMBER';
5262 
5263   --
5264   l_count:=l_count+1;
5265   l_trans_tbl(l_count).param_name      := 'P_SET_OF_BOOKS_ID';
5266   l_trans_tbl(l_count).param_value := l_assignment_rec.set_of_books_id;
5267   l_trans_tbl(l_count).param_original_value :=
5268          l_db_assignment_rec.set_of_books_id;  --ns
5269   l_trans_tbl(l_count).param_data_type := 'NUMBER';
5270 
5271   --
5272   l_count:=l_count+1;
5273   l_trans_tbl(l_count).param_name      := 'P_VENDOR_ID';
5274   l_trans_tbl(l_count).param_value := l_assignment_rec.vendor_id;
5275   l_trans_tbl(l_count).param_original_value :=
5276          l_db_assignment_rec.vendor_id;  --ns
5277   l_trans_tbl(l_count).param_data_type := 'NUMBER';
5278 
5279   --
5280   l_count:=l_count+1;
5281   l_trans_tbl(l_count).param_name      := 'P_ASSIGNMENT_TYPE';
5282   l_trans_tbl(l_count).param_value := l_assignment_rec.assignment_type;
5283   l_trans_tbl(l_count).param_original_value :=
5284          l_db_assignment_rec.assignment_type;  --ns
5285   l_trans_tbl(l_count).param_data_type := 'VARCHAR2';
5286 
5287   --
5288   --l_count:=l_count+1;
5289   --l_trans_tbl(l_count).param_name      := 'P_SUPERVISOR_ASSIGNMENT_ID';
5290   --l_trans_tbl(l_count).param_value := l_assignment_rec.supervisor_assignment_id;
5291   --l_trans_tbl(l_count).param_original_value :=
5292   --       l_db_assignment_rec.supervisor_assignment_id;  --ns
5293   --l_trans_tbl(l_count).param_data_type := 'NUMBER';
5294   --
5295   l_count:=l_count+1;
5296   l_trans_tbl(l_count).param_name      := 'P_TITLE';
5297   l_trans_tbl(l_count).param_value := l_assignment_rec.title;
5298   l_trans_tbl(l_count).param_original_value :=
5299          l_db_assignment_rec.title;  --ns
5300   l_trans_tbl(l_count).param_data_type := 'VARCHAR2';
5301 
5302   --
5303   l_count:=l_count+1;
5304   l_trans_tbl(l_count).param_name      := 'P_PROJECT_TITLE';
5305   l_trans_tbl(l_count).param_value := l_assignment_rec.project_title;
5306   l_trans_tbl(l_count).param_original_value :=
5307          l_db_assignment_rec.project_title;  --ns
5308   l_trans_tbl(l_count).param_data_type := 'VARCHAR2';
5309 
5310   --
5311   l_count:=l_count+1;
5312   l_trans_tbl(l_count).param_name      := 'P_SOURCE_TYPE';
5313   l_trans_tbl(l_count).param_value := l_assignment_rec.source_type;
5314   l_trans_tbl(l_count).param_original_value :=
5315          l_db_assignment_rec.source_type;  --ns
5316   l_trans_tbl(l_count).param_data_type := 'VARCHAR2';
5317 
5318   --
5319   l_count:=l_count+1;
5320   l_trans_tbl(l_count).param_name      := 'P_VENDOR_ASSIGNMENT_NUMBER';
5321   l_trans_tbl(l_count).param_value := l_assignment_rec.vendor_assignment_number;
5322   l_trans_tbl(l_count).param_original_value :=
5323          l_db_assignment_rec.vendor_assignment_number;  --ns
5324   l_trans_tbl(l_count).param_data_type := 'VARCHAR2';
5325 
5326   --
5327   l_count:=l_count+1;
5328   l_trans_tbl(l_count).param_name      := 'P_VENDOR_EMPLOYEE_NUMBER';
5329   l_trans_tbl(l_count).param_value := l_assignment_rec.vendor_employee_number;
5330   l_trans_tbl(l_count).param_original_value :=
5331          l_db_assignment_rec.vendor_employee_number;  --ns
5332   l_trans_tbl(l_count).param_data_type := 'VARCHAR2';
5333 
5334   --
5335   l_count:=l_count+1;
5336   l_trans_tbl(l_count).param_name      := 'P_SAVE_MODE';
5337   l_trans_tbl(l_count).param_value     :=  p_save_mode;
5338   l_trans_tbl(l_count).param_data_type := 'VARCHAR2';
5339   --
5340   -- look to see if the review page is already in the list
5341   --
5342   l_count:=l_count+1;
5343   l_trans_tbl(l_count).param_name      := 'P_REVIEW_PROC_CALL';
5344 
5345   -- Bug 1043890 fix
5346   if i_changed
5347   then
5348     if(instr(l_review_proc_call,p_review_proc_call)>0) then
5349       --
5350       -- it is in the list already so just write the list
5351       --
5352       l_trans_tbl(l_count).param_value     :=  l_review_proc_call;
5353     else
5354       --
5355       -- it is not in the list, so add the delimiter and write the value
5356       --
5357       l_trans_tbl(l_count).param_value     :=  l_review_proc_call
5358                                            || '|!|'|| p_review_proc_call;
5359     end if;
5360   else
5361     -- if I am not changed, delete my review proc call from list
5362     if (instr(l_review_proc_call, '|!|'|| p_review_proc_call)>0)
5363     then
5364       l_trans_tbl(l_count).param_value :=
5365         replace(l_review_proc_call, '|!|'|| p_review_proc_call);
5366     elsif (instr(l_review_proc_call, p_review_proc_call)>0)
5367     then
5368       l_trans_tbl(l_count).param_value :=
5369         ltrim(replace(l_review_proc_call, p_review_proc_call),'|!|');
5370     else
5371       l_trans_tbl(l_count).param_value := l_review_proc_call;
5372     end if;
5373   end if;
5374 
5375   l_trans_tbl(l_count).param_data_type := 'VARCHAR2';
5376   --
5377   -- look to see if the activity_id is already in the list
5378   --
5379   l_count:=l_count+1;
5380   l_trans_tbl(l_count).param_name      := 'P_REVIEW_ACTID';
5381 
5382   if i_changed
5383   then
5384     if(instr(l_activity_id_list,to_char(l_activity_id))>0) then
5385       --
5386       -- it is in the list already so just write the list
5387       --
5388       l_trans_tbl(l_count).param_value     :=  l_activity_id_list;
5389     else
5390       --
5391       -- it is not in the list, so add the delimiter and write the value
5392       --
5393       l_trans_tbl(l_count).param_value     :=  l_activity_id_list
5394                                              ||'|!|'||to_char(l_activity_id);
5395     end if;
5396 
5397   else
5398     -- if I am not changed, delete my activity id from list
5399     if (instr(l_activity_id_list, '|!|'|| to_char(l_activity_id))>0)
5400     then -- fixed for bug 3047196
5401       l_trans_tbl(l_count).param_value :=
5402         replace(l_activity_id_list, '|!|'|| to_char(l_activity_id));
5403     elsif (instr(l_activity_id_list, to_char(l_activity_id)||'|!|')>0)
5404     then
5405       l_trans_tbl(l_count).param_value :=
5406         ltrim(replace(l_activity_id_list, to_char(l_activity_id)||'|!|'));
5407     else
5408       l_trans_tbl(l_count).param_value     := l_activity_id_list;
5409     end if;
5410 
5411   end if;
5412 
5413   l_trans_tbl(l_count).param_data_type := 'VARCHAR2';
5414  --
5415   l_count:=l_count+1;
5416   l_trans_tbl(l_count).param_name      := 'P_HRS_LAST_DATE';
5417   l_trans_tbl(l_count).param_value     :=  l_hrs_last_date;
5418 -- fix for bug # 1255275
5419   l_trans_tbl(l_count).param_data_type := 'DATE';
5420   --
5421   l_count:=l_count+1;
5422   l_trans_tbl(l_count).param_name      := 'P_DISPLAY_POS';
5423   l_trans_tbl(l_count).param_value     :=  l_display_pos;
5424   l_trans_tbl(l_count).param_data_type := 'VARCHAR2';
5425   --
5426   l_count:=l_count+1;
5427   l_trans_tbl(l_count).param_name      := 'P_DISPLAY_ORG';
5428   l_trans_tbl(l_count).param_value     :=  l_display_org;
5429   l_trans_tbl(l_count).param_data_type := 'VARCHAR2';
5430   --
5431   l_count:=l_count+1;
5432   l_trans_tbl(l_count).param_name      := 'P_DISPLAY_JOB';
5433   l_trans_tbl(l_count).param_value     :=  l_display_job;
5434   l_trans_tbl(l_count).param_data_type := 'VARCHAR2';
5435   --
5436   l_count:=l_count+1;
5437   l_trans_tbl(l_count).param_name      := 'P_DISPLAY_ASS_STATUS';
5438   l_trans_tbl(l_count).param_value     :=  l_display_ass_status;
5439   l_trans_tbl(l_count).param_data_type := 'VARCHAR2';
5440   --
5441   -- Bug #1067636 fix begins
5442   l_count:=l_count+1;
5443   l_trans_tbl(l_count).param_name      := 'P_DISPLAY_GRADE';
5444   l_trans_tbl(l_count).param_value     :=  l_display_grade;
5445   l_trans_tbl(l_count).param_data_type := 'VARCHAR2';
5446   -- Bug #1067636 fix ends
5447   --
5448   -- Bug #1004255 fix
5449   l_count:=l_count+1;
5450   l_trans_tbl(l_count).param_name      := 'P_GRADE_LOV';
5451   l_trans_tbl(l_count).param_value     :=  l_grade_lov;
5452   l_trans_tbl(l_count).param_data_type := 'VARCHAR2';
5453   --
5454   l_count:=l_count+1;
5455   l_trans_tbl(l_count).param_name      := 'P_APPROVER_ID';
5456   l_trans_tbl(l_count).param_value     :=  l_approver_id;
5457   l_trans_tbl(l_count).param_data_type := 'NUMBER';
5458 
5459   --
5460   -- GSP change
5461   l_count:=l_count+1;
5462   l_trans_tbl(l_count).param_name      := 'P_GRADE_LADDER_PGM_ID';
5463   l_trans_tbl(l_count).param_value := l_assignment_rec.grade_ladder_pgm_id;
5464   l_trans_tbl(l_count).param_original_value :=
5465          l_db_assignment_rec.grade_ladder_pgm_id;  --ns
5466   l_trans_tbl(l_count).param_data_type := 'NUMBER';
5467  -- End of GSP change
5468 
5469 
5470 
5471   l_count:=l_count+1;
5472   l_trans_tbl(l_count).param_name      := 'P_PO_HEADER_ID';
5473   l_trans_tbl(l_count).param_value := l_assignment_rec.po_header_id;
5474   l_trans_tbl(l_count).param_original_value :=
5475          l_db_assignment_rec.po_header_id;  --ns
5476   l_trans_tbl(l_count).param_data_type := 'NUMBER';
5477 
5478   l_count:=l_count+1;
5479   l_trans_tbl(l_count).param_name      := 'P_PO_LINE_ID';
5480   l_trans_tbl(l_count).param_value := l_assignment_rec.po_line_id;
5481   l_trans_tbl(l_count).param_original_value :=
5482          l_db_assignment_rec.po_line_id;  --ns
5483   l_trans_tbl(l_count).param_data_type := 'NUMBER';
5484 
5485   l_count:=l_count+1;
5486   l_trans_tbl(l_count).param_name      := 'P_VENDOR_SITE_ID';
5487   l_trans_tbl(l_count).param_value := l_assignment_rec.vendor_site_id;
5488   l_trans_tbl(l_count).param_original_value :=
5489          l_db_assignment_rec.vendor_site_id;  --ns
5490   l_trans_tbl(l_count).param_data_type := 'NUMBER';
5491 
5492   l_count:=l_count+1;
5493   l_trans_tbl(l_count).param_name      := 'P_PROJ_ASGN_END';
5494   l_trans_tbl(l_count).param_value := to_char(l_assignment_rec.projected_assignment_end, g_date_format);
5495     if(l_db_assignment_rec.projected_assignment_end is not null) then
5496       l_trans_tbl(l_count).param_original_value :=
5497              to_char(l_db_assignment_rec.projected_assignment_end, g_date_format);  --ns
5498     else
5499       l_trans_tbl(l_count).param_original_value :=
5500              l_db_assignment_rec.projected_assignment_end;  --ns
5501     end if;
5502   l_trans_tbl(l_count).param_data_type := 'DATE';
5503 
5504 
5505   --
5506   -- save the transaction step
5507   --
5508   hr_transaction_ss.save_transaction_step
5509     (p_item_type             => l_item_type
5510     ,p_item_key              => l_item_key
5511     ,p_actid                 => l_activity_id
5512     ,p_login_person_id     => p_login_person_id
5513     ,p_transaction_step_id   => l_transaction_step_id
5514     ,p_transaction_data      => l_trans_tbl
5515     ,p_plan_id    => p_plan_id
5516     ,p_rptg_grp_id        => p_rptg_grp_id
5517     ,p_effective_date_option  => p_effective_date_option
5518     );
5519 
5520     open pay_step(l_item_type,l_item_key);		--bug6405208
5521     fetch pay_step into l_pay_step_id,l_pay_activity_id;
5522     if (pay_step%found and l_pay_activity_id <> -1 and
5523                                     l_assignment_rec.pay_basis_id is null) then
5524         hr_transaction_ss.delete_transaction_step
5525                 (p_transaction_step_id => l_pay_step_id
5526                  ,p_login_person_id => p_login_person_id);
5527     end if;
5528     close pay_step;
5529 
5530   -- GSP
5531   -- Check whether grade/step changed and Grade Ladder setup is done
5532   -- for the business group
5533 
5534   open step_grade_step(l_item_type,l_item_key);
5535   fetch step_grade_step into dummy;
5536 
5537   if(lb_grd_ldr_exists_flag and step_grade_step%notfound) then
5538 --     and ( lb_special_ceiling_step_id_chg or lb_grade_changed) ) then
5539 
5540    -- check whether grade ladder won't allow salary update
5541    open lc_sal_updateable_grade_ladder(p_grade_ladder_id =>
5542            l_assignment_rec.grade_ladder_pgm_id,
5543            p_effective_date => l_effective_date
5544            );
5545    fetch lc_sal_updateable_grade_ladder into lc_temp_grade_ladder_id, lc_temp_upd_sal_cd;
5546 
5547    -- if there is any salary change , then only it should create
5548    -- PayRate GSP Txn
5549    if ((lc_sal_updateable_grade_ladder%FOUND) and
5550         ( (ltt_salary_data(1).salary_change_amount < 0)
5551         or  (ltt_salary_data(1).salary_change_amount > 0))) THEN
5552      lv_gsp_review_proc_call := 'HrPayRate';
5553      lv_gsp_flow_mode := p_flow_mode ;
5554      ln_gsp_activity_id := -1;
5555 
5556      -- increment the process order for displaying pay rate page
5557      -- in review page
5558      hr_transaction_api.Set_Process_Order_String(p_item_type => l_item_type
5559                       ,p_item_key  => l_item_key
5560                       ,p_actid => ln_gsp_activity_id);
5561 
5562      -- display warning only once, thats next time onwards
5563      -- ignore salary change warning
5564 
5565      if(p_salary_change_warning <> 'IGNORE') then
5566        p_salary_change_warning := 'WARNING';
5567        hr_utility.trace('p_salary_change_warning' || p_salary_change_warning);
5568      end if;
5569 
5570      p_gsp_salary_effective_date := ltt_salary_data(1).salary_effective_date;
5571 
5572      -- Save the Pay Rate GSP Txn
5573      if (lc_temp_upd_sal_cd = 'SALARY_BASIS') then
5574         PER_SSHR_CHANGE_PAY.get_transaction_step(
5575              p_item_type          =>    l_item_type,
5576              p_item_key           => l_item_key,
5577              p_activity_id         => -1,
5578              p_login_person_id    => p_login_person_id,
5579              p_api_name           => 'PER_SSHR_CHANGE_PAY.PROCESS_API',
5580              p_transaction_id      =>    ln_gsp_txn_id,
5581              p_transaction_step_id   => ln_gsp_step_id,
5582              p_update_mode           => ln_gsp_update_mode,
5583              p_effective_date_option   =>    p_effective_date_option);
5584 
5585         hr_pay_rate_gsp_ss.create_pay_txn(
5586             p_ltt_salary_data =>  ltt_salary_data,
5587             p_transaction_id    =>  ln_gsp_txn_id,
5588             p_transaction_step_id   =>  ln_gsp_step_id,
5589             p_item_type         =>  l_item_type,
5590             p_item_key          =>  l_item_key,
5591             p_assignment_id     =>  l_assignment_id,
5592             p_effective_date    =>  l_effective_date,
5593             p_pay_basis_id      =>  l_assignment_rec.pay_basis_id,
5594             p_old_pay_basis_id  =>  l_db_assignment_rec.pay_basis_id,
5595             p_business_group_id =>  l_assignment_rec.business_group_id
5596             );
5597      else
5598      hr_pay_rate_gsp_ss.save_gsp_txn(
5599         p_item_type             => l_item_type,
5600         p_item_key              => l_item_key,
5601         p_act_id                 => ln_gsp_activity_id,
5602         p_ltt_salary_data      => ltt_salary_data,
5603         --p_api_mode             => lv_gsp_api_mode,
5604         p_review_proc_call     => lv_gsp_review_proc_call,
5605         --p_save_mode            => p_save_mode,
5606         p_flow_mode            => lv_gsp_flow_mode,
5607         p_step_id              => ln_gsp_step_id,
5608         p_rptg_grp_id        => p_rptg_grp_id,
5609         p_plan_id    => p_plan_id,
5610         p_effective_date_option  => p_effective_date_option
5611        );
5612      end if;
5613 
5614 --    end if;
5615 --    close lc_sal_updateable_grade_ladder;
5616    else
5617 
5618         -- there is no change in grade or step and no change in salary
5619         -- then remove the existing PayRate Transaction if any with
5620         -- activityId = -1
5621 
5622         -- Need to see if an asg txn step id exists or not.
5623         hr_assignment_common_save_web.get_step
5624          (p_item_type           => p_item_type
5625          ,p_item_key            => p_item_key
5626          ,p_api_name            => 'PER_SSHR_CHANGE_PAY.PROCESS_API'
5627          ,p_transaction_step_id => ln_gsp_step_id
5628          ,p_transaction_id      => l_transaction_id);
5629 
5630      if (ln_gsp_step_id is null) then
5631         hr_assignment_common_save_web.get_step
5632          (p_item_type           => p_item_type
5633          ,p_item_key            => p_item_key
5634          ,p_api_name            => 'HR_PAY_RATE_SS.PROCESS_API'
5635          ,p_transaction_step_id => ln_gsp_step_id
5636          ,p_transaction_id      => l_transaction_id);
5637      end if;
5638 
5639          IF (ln_gsp_step_id IS NOT NULL)
5640          THEN
5641            lv_gsp_activity_id := hr_transaction_api.get_varchar2_value
5642                (p_transaction_step_id => ln_gsp_step_id
5643               ,p_name                => 'P_REVIEW_ACTID');
5644            -- for Pay Rate GSP Txn, Review Activity Id  is -1
5645            if((lv_gsp_activity_id is not null) and (to_number(lv_gsp_activity_id) = -1))
5646            THEN
5647             hr_transaction_ss.delete_transaction_step
5648                 (p_transaction_step_id => ln_gsp_step_id
5649                  ,p_login_person_id => p_login_person_id);
5650             delete from per_pay_transactions where TRANSACTION_STEP_ID=ln_gsp_step_id;
5651            end if;
5652          END IF;
5653     end if;
5654     close lc_sal_updateable_grade_ladder;
5655   end if;
5656   close step_grade_step;
5657 -- End of GSP
5658   p_transaction_step_id := l_transaction_step_id;
5659 end if; -- this any element changed if statemenet
5660 else
5661   -- Bug 1043890 fix
5662   p_transaction_step_id := null;
5663   IF l_transaction_step_id IS NOT NULL
5664   THEN
5665     hr_transaction_ss.delete_transaction_step
5666      (p_transaction_step_id => l_transaction_step_id
5667      ,p_login_person_id => p_login_person_id);
5668   END IF;
5669   -- GSP Change
5670   -- delete the existing PayRate Transaction if any
5671   -- Need to see if an asg txn step id exists or not.
5672    hr_assignment_common_save_web.get_step
5673     (p_item_type           => p_item_type
5674     ,p_item_key            => p_item_key
5675     ,p_api_name            => 'PER_SSHR_CHANGE_PAY.PROCESS_API'
5676     ,p_transaction_step_id => ln_gsp_step_id
5677     ,p_transaction_id      => l_transaction_id);
5678 
5679 if (ln_gsp_step_id is null) then
5680   hr_assignment_common_save_web.get_step
5681      (p_item_type           => p_item_type
5682       ,p_item_key            => p_item_key
5683       ,p_api_name            => 'HR_PAY_RATE_SS.PROCESS_API'
5684       ,p_transaction_step_id => ln_gsp_step_id
5685       ,p_transaction_id      => l_transaction_id);
5686 end if;
5687 
5688   IF (ln_gsp_step_id IS NOT NULL)
5689    THEN
5690        lv_gsp_activity_id := hr_transaction_api.get_number_value
5691                (p_transaction_step_id => ln_gsp_step_id
5692                ,p_name                => 'P_REVIEW_ACTID');
5693          if((lv_gsp_activity_id is not null) and (to_number(lv_gsp_activity_id) = -1))
5694          THEN
5695             hr_transaction_ss.delete_transaction_step
5696                 (p_transaction_step_id => ln_gsp_step_id
5697                  ,p_login_person_id => p_login_person_id);
5698             delete from per_pay_transactions where TRANSACTION_STEP_ID=ln_gsp_step_id;
5699         end if;
5700   END IF;
5701   -- End of GSP change code
5702 end if;
5703   end if;
5704 
5705 -- only for registration
5706   if(g_registration) then
5707    -- set it back to false to avoid global variable problems with SS connection pooling
5708     g_registration := false;
5709   end if;
5710 
5711 -- applicant_hire
5712   if (g_applicant_hire) then
5713     g_applicant_hire := false;
5714   end if;
5715 
5716 
5717 EXCEPTION
5718   when hr_utility.hr_error then
5719     hr_message.provide_error;
5720     p_page_error := hr_message.last_message_app;
5721     --p_page_error_msg := hr_message.last_message_name;
5722     p_page_error_msg := hr_message.get_message_text;
5723      -- If its registration then roll back the dummy person
5724       if(g_registration) then
5725          rollback;
5726      -- set it back to false to avoid global variable problems with SS connection pooling
5727           g_registration:= false;
5728       end if;
5729 -- applicant_hire
5730     if (g_applicant_hire) then
5731        rollback to applicant_hire;
5732        g_applicant_hire := false;
5733     end if;
5734   when others then
5735       if(g_registration) then
5736          rollback;
5737          g_registration:= false;
5738       end if;
5739 -- applicant_hire
5740     if (g_applicant_hire) then
5741        rollback to applicant_hire;
5742        g_applicant_hire := false;
5743     end if;
5744     raise;
5745 hr_utility.set_location('Exiting:'||l_proc, 40);
5746 end process_save;
5747 
5748 procedure update_object_version
5749   (p_transaction_step_id in     number
5750   ,p_login_person_id in number) is
5751 
5752   cursor csr_new_object_number(p_asg_id in number) is
5753   select object_version_number
5754     from per_all_assignments_f
5755    where assignment_id = p_asg_id
5756      and assignment_type = 'E'
5757    order by object_version_number desc;
5758 
5759   l_old_object_number number;
5760   l_assignment_id number;
5761   l_new_object_number number;
5762   l_proc   varchar2(72)  := g_package||'update_object_version';
5763 
5764 begin
5765 
5766   hr_utility.set_location('Entering:'||l_proc, 5);
5767   l_assignment_id :=
5768       hr_transaction_api.get_number_value
5769       (p_transaction_step_id =>  p_transaction_step_id
5770       ,p_name                => 'P_ASSIGNMENT_ID');
5771 
5772     open csr_new_object_number(l_assignment_id);
5773     fetch csr_new_object_number into l_new_object_number;
5774     close csr_new_object_number;
5775 
5776   l_old_object_number :=
5777     hr_transaction_api.get_number_value
5778     (p_transaction_step_id =>  p_transaction_step_id
5779     ,p_name                => 'P_OBJECT_VERSION_NUMBER');
5780 
5781   if l_old_object_number <> l_new_object_number then
5782     hr_utility.set_location('if l_old_object_number <> l_new_object_number then:'||l_proc,10);
5783     hr_transaction_api.set_number_value
5784     (p_transaction_step_id =>  p_transaction_step_id
5785     ,p_person_id           => p_login_person_id
5786     ,p_name                => 'P_OBJECT_VERSION_NUMBER'
5787     ,p_value               => l_new_object_number);
5788   end if;
5789 
5790 hr_utility.set_location('Exiting:'||l_proc, 15);
5791 end update_object_version;
5792 --
5793 --This procedure is to recover all of the assignment data from the transaction
5794 -- tables and save the data into database.
5795 procedure process_api
5796 (p_validate                 in     boolean default false
5797 ,p_transaction_step_id      in     number
5798 ,p_effective_date           in     varchar2 default null
5799 ) is
5800 
5801 l_assignment_rec             per_all_assignments_f%rowtype;
5802 l_effective_date             date;
5803 l_datetrack_update_mode      varchar2(30);
5804 --
5805 l_special_ceiling_step_id    per_all_assignments_f.special_ceiling_step_id%TYPE;
5806 l_effective_start_date       date;
5807 l_effective_end_date         date;
5808 l_people_group_id            per_all_assignments_f.people_group_id%TYPE;
5809 l_group_name                 VARCHAR2(2000);
5810 l_org_now_no_manager_warning boolean;
5811 l_other_manager_warning      boolean;
5812 l_spp_delete_warning         boolean;
5813 l_entries_changed_warning    VARCHAR2(30);
5814 l_tax_district_changed_warning boolean;
5815 l_soft_coding_keyflex_id     per_all_assignments_f.soft_coding_keyflex_id%TYPE;
5816 l_comment_id                 per_all_assignments_f.comment_id%TYPE;
5817 l_concatenated_segments      VARCHAR2(2000);
5818 l_element_changed            VARCHAR2(1) default 'W';
5819 
5820 l_page_error               varchar2(2000);
5821 l_page_error_msg           varchar2(2000);
5822 l_page_warning             varchar2(2000);
5823 l_page_warning_msg         varchar2(2000);
5824 l_organization_error       varchar2(2000);
5825 l_organization_error_msg   varchar2(2000);
5826 l_job_error                varchar2(2000);
5827 l_job_error_msg            varchar2(2000);
5828 l_position_error           varchar2(2000);
5829 l_position_error_msg       varchar2(2000);
5830 l_grade_error              varchar2(2000);
5831 l_grade_error_msg          varchar2(2000);
5832 l_supervisor_error         varchar2(2000);
5833 l_supervisor_error_msg     varchar2(2000);
5834 l_location_error           varchar2(2000);
5835 l_location_error_msg       varchar2(2000);
5836 
5837 -- variables and cursors for applicant_hire
5838 l_appl_assignment_type per_all_assignments_f.assignment_type%type;
5839 l_new_hire_appl_hire       varchar2(10);
5840 l_login_person_id          number;
5841 
5842 -- GSP
5843   ltt_salary_data  sshr_sal_prop_tab_typ;
5844   lv_gsp_post_process_warning  varchar2(2000);
5845   l_proc   varchar2(72)  := g_package||'process_api';
5846 -- End of GSP
5847 
5848 -- cursor to get the applicant object_version_number from
5849 -- per_all_assignments_f
5850 cursor asg_applicant_rec(p_appl_assign_id in number,
5851                          p_appl_effective_date in date) is
5852 select object_version_number,
5853        assignment_type,
5854        assignment_status_type_id
5855 from per_all_assignments_f
5856 where assignment_id = p_appl_assign_id
5857 and p_appl_effective_date between effective_start_date
5858 and effective_end_date;
5859 
5860 begin
5861 --
5862 -- recover all of the assignment values
5863 --
5864 --
5865   hr_utility.set_location('Entering:'||l_proc, 5);
5866   if (p_effective_date is not null) then
5867     hr_utility.set_location('  if (p_effective_date is not null) then:'||l_proc,10);
5868     l_effective_date:= to_date(p_effective_date,g_date_format);
5869   else
5870     l_effective_date:= to_date(
5871       hr_transaction_ss.get_wf_effective_date
5872         (p_transaction_step_id => p_transaction_step_id),g_date_format);
5873   end if;
5874 --
5875   l_datetrack_update_mode:=
5876     hr_transaction_api.get_varchar2_value
5877     (p_transaction_step_id => p_transaction_step_id
5878     ,p_name                => 'P_DATETRACK_UPDATE_MODE');
5879 --
5880   get_asg_from_tt
5881     (p_transaction_step_id => p_transaction_step_id
5882     ,p_assignment_rec      => l_assignment_rec);
5883 --
5884   l_special_ceiling_step_id:=l_assignment_rec.special_ceiling_step_id;
5885 
5886 -- start registration
5887 -- If its a new user registration flow then the assignmentId which is coming
5888 -- from transaction table will not be valid because the person has just been
5889 -- created by the process_api of the hr_process_person_ss.process_api.
5890 -- We can get that person Id and assignment id by making a call
5891 -- to the global parameters but we need to branch out the code.
5892 -- We also need the latest Object version Number not the one on transaction tbl
5893 
5894 -- adding the session id check to avoid connection pooling problems.
5895   if (( hr_process_person_ss.g_assignment_id is not null) and
5896                 (hr_process_person_ss.g_session_id= ICX_SEC.G_SESSION_ID))
5897   then
5898     hr_utility.set_location('session id is ICX_SEC.G_SESSION_ID:'||l_proc,15);
5899     l_assignment_rec.person_id := hr_process_person_ss.g_person_id;
5900     l_assignment_rec.assignment_id := hr_process_person_ss.g_assignment_id;
5901     l_assignment_rec.object_version_number:=hr_process_person_ss.g_asg_object_version_number;
5902     -- Hard code ovn to 1 for the new user registration process
5903     --l_assignment_rec.object_version_number:=1;
5904     l_new_hire_appl_hire := 'Y';
5905  end if;
5906 
5907 -- end registration
5908 --
5909 
5910    -- applicant_hire
5911    -- check if we are updating applicant, if yes we need to get the
5912    -- latest object version
5913    -- number of the applicant who has became employee in BD page
5914    if (hr_process_person_ss.g_is_applicant  and
5915       (hr_process_person_ss.g_session_id= ICX_SEC.G_SESSION_ID)) then
5916       hr_utility.set_location('Applicaant  ICX_SEC.G_SESSION_ID:'||l_proc,20);
5917       open asg_applicant_rec(l_assignment_rec.assignment_id, l_effective_date);
5918       fetch asg_applicant_rec into l_assignment_rec.object_version_number
5919                                ,l_appl_assignment_type
5920                                ,l_assignment_rec.assignment_status_type_id;
5921       close asg_applicant_rec;
5922       l_new_hire_appl_hire := 'Y';
5923    end if;
5924   -- end registration
5925 
5926   if l_new_hire_appl_hire = 'Y' then
5927     hr_utility.set_location('if l_new_hire_appl_hire = Y then:'||l_proc,25);
5928     l_login_person_id:=
5929       hr_transaction_api.get_number_value
5930        (p_transaction_step_id => p_transaction_step_id
5931        ,p_name                => 'P_LOGIN_PERSON_ID');
5932   end if;
5933 
5934   -- GSP support code
5935     -- initializing local salary data table type to pass as a parameter
5936     ltt_salary_data := sshr_sal_prop_tab_typ(sshr_sal_prop_obj_typ(
5937                 null,-- pay_proposal_id       NUMBER,
5938                 null,-- assignment_id         NUMBER,
5939                 null,--business_group_id     NUMBER,
5940                 null,--effective_date        DATE,
5941                 null,--comments              VARCHAR2(2000),
5942                 null,--next_sal_review_date  DATE,
5943                 null,--salary_change_amount  NUMBER ,
5944                 null,--salary_change_percent NUMBER ,
5945                 null,--annual_change         NUMBER ,
5946                 null,--proposed_salary       NUMBER ,
5947                 null,--proposed_percent      NUMBER ,
5948                 null,--proposal_reason       VARCHAR2(30),
5949                 null,--ranking               NUMBER,
5950                 null,--current_salary        NUMBER,
5951                 null,--performance_review_id NUMBER,
5952                 null,--multiple_components   VARCHAR2(1),
5953                 null,--element_entry_id      NUMBER ,
5954                 null,--selection_mode        VARCHAR2(1),
5955                 null,--ovn                   NUMBER,
5956                 null,--currency              VARCHAR2(15),
5957                 null,--pay_basis_name        VARCHAR2(80),
5958                 null,--annual_equivalent     NUMBER ,
5959                 null,--total_percent        NUMBER ,
5960                 null,--quartile              NUMBER ,
5961                 null,--comparatio            NUMBER ,
5962                 null,--lv_selection_mode     VARCHAR2(1),
5963                 null,--attribute_category           VARCHAR2(150),
5964                 null,--attribute1            VARCHAR2(150),
5965                 null,--attribute2            VARCHAR2(150),
5966                 null,--attribute3            VARCHAR2(150),
5967                 null,--attribute4            VARCHAR2(150),
5968                 null,--attribute5            VARCHAR2(150),
5969                 null,--attribute6            VARCHAR2(150),
5970                 null,--attribute7            VARCHAR2(150),
5971                 null,--attribute8            VARCHAR2(150),
5972                 null,--attribute9            VARCHAR2(150),
5973                 null,--attribute10           VARCHAR2(150),
5974                 null,--attribute11           VARCHAR2(150),
5975                 null,--attribute12           VARCHAR2(150),
5976                 null,--attribute13           VARCHAR2(150),
5977                 null,--attribute14           VARCHAR2(150),
5978                 null,--attribute15           VARCHAR2(150),
5979                 null,--attribute16           VARCHAR2(150),
5980                 null,--attribute17           VARCHAR2(150),
5981                 null,--attribute18           VARCHAR2(150),
5982                 null,--attribute19           VARCHAR2(150),
5983                 null,--attribute20           VARCHAR2(150),
5984                 null, --no_of_components       NUMBER,
5985                 -- 04/12/02 Salary Basis Enhancement Begins
5986                 null,  -- salary_basis_change_type varchar2(30)
5987                 null,  -- default_date           date
5988                 null,  -- default_bg_id          number
5989                 null,  -- default_currency       VARCHAR2(15)
5990                 null,  -- default_format_string  VARCHAR2(40)
5991                 null,  -- default_salary_basis_name  varchar2(30)
5992                 null,  -- default_pay_basis_name     varchar2(80)
5993                 null,  -- default_pay_basis      varchar2(30)
5994                 null,  -- default_pay_annual_factor  number
5995                 null,  -- default_grade          VARCHAR2(240)
5996                 null,  -- default_grade_annual_factor number
5997                 null,  -- default_minimum_salary      number
5998                 null,  -- default_maximum_salary      number
5999                 null,  -- default_midpoint_salary     number
6000                 null,  -- default_prev_salary         number
6001                 null,  -- default_last_change_date    date
6002                 null,  -- default_element_entry_id    number
6003                 null,  -- default_basis_changed       number
6004                 null,  -- default_uom                 VARCHAR2(30)
6005                 null,  -- default_grade_uom           VARCHAR2(30)
6006                 null,  -- default_change_amount       number
6007                 null,  -- default_change_percent      number
6008                 null,  -- default_quartile            number
6009                 null,  -- default_comparatio          number
6010                 null,  -- default_last_pay_change     varchar2(200)
6011                 null,  -- default_flsa_status         varchar2(80)
6012                 null,  -- default_currency_symbol     varchar2(4)
6013                 null,   -- default_precision           number
6014                 -- 04/12/02 Salary Basis Enhancement Ends
6015                 -- GSP
6016                 null,    -- salary_effective_date    date
6017                 null,    -- gsp_dummy_txn            varchar2(30)
6018                 -- End of GSP
6019                 null,
6020                 null,
6021                 null,
6022                 null,
6023                 null
6024                 ));
6025 
6026   --END of GSP
6027 
6028   update_assignment(
6029     p_validate                 =>     p_validate
6030    ,p_login_person_id          =>     l_login_person_id
6031    ,p_new_hire_appl_hire       =>     l_new_hire_appl_hire
6032    ,p_assignment_id            =>     l_assignment_rec.assignment_id
6033    ,p_object_version_number    =>     l_assignment_rec.object_version_number
6034    ,p_effective_date           =>     l_effective_date
6035    ,p_datetrack_update_mode    =>     l_datetrack_update_mode
6036    ,p_organization_id          =>     l_assignment_rec.organization_id
6037    ,p_position_id              =>     l_assignment_rec.position_id
6038    ,p_job_id                   =>     l_assignment_rec.job_id
6039    ,p_grade_id                 =>     l_assignment_rec.grade_id
6040    ,p_location_id              =>     l_assignment_rec.location_id
6041    ,p_employment_category      =>     l_assignment_rec.employment_category
6042    ,p_supervisor_id            =>     l_assignment_rec.supervisor_id
6043    ,p_manager_flag             =>     l_assignment_rec.manager_flag
6044    ,p_normal_hours             =>     l_assignment_rec.normal_hours
6045    ,p_frequency                =>     l_assignment_rec.frequency
6046    ,p_time_normal_finish       =>     l_assignment_rec.time_normal_finish
6047    ,p_time_normal_start        =>     l_assignment_rec.time_normal_start
6048    ,p_bargaining_unit_code     =>     l_assignment_rec.bargaining_unit_code
6049    ,p_labour_union_member_flag =>     l_assignment_rec.labour_union_member_flag
6050    ,p_assignment_status_type_id=>     l_assignment_rec.assignment_status_type_id
6051    ,p_change_reason            =>     l_assignment_rec.change_reason
6052    ,p_ass_attribute_category   =>     l_assignment_rec.ass_attribute_category
6053    ,p_ass_attribute1           =>     l_assignment_rec.ass_attribute1
6054    ,p_ass_attribute2           =>     l_assignment_rec.ass_attribute2
6055    ,p_ass_attribute3           =>     l_assignment_rec.ass_attribute3
6056    ,p_ass_attribute4           =>     l_assignment_rec.ass_attribute4
6057    ,p_ass_attribute5           =>     l_assignment_rec.ass_attribute5
6058    ,p_ass_attribute6           =>     l_assignment_rec.ass_attribute6
6059    ,p_ass_attribute7           =>     l_assignment_rec.ass_attribute7
6060    ,p_ass_attribute8           =>     l_assignment_rec.ass_attribute8
6061    ,p_ass_attribute9           =>     l_assignment_rec.ass_attribute9
6062    ,p_ass_attribute10          =>     l_assignment_rec.ass_attribute10
6063    ,p_ass_attribute11          =>     l_assignment_rec.ass_attribute11
6064    ,p_ass_attribute12          =>     l_assignment_rec.ass_attribute12
6065    ,p_ass_attribute13          =>     l_assignment_rec.ass_attribute13
6066    ,p_ass_attribute14          =>     l_assignment_rec.ass_attribute14
6067    ,p_ass_attribute15          =>     l_assignment_rec.ass_attribute15
6068    ,p_ass_attribute16          =>     l_assignment_rec.ass_attribute16
6069    ,p_ass_attribute17          =>     l_assignment_rec.ass_attribute17
6070    ,p_ass_attribute18          =>     l_assignment_rec.ass_attribute18
6071    ,p_ass_attribute19          =>     l_assignment_rec.ass_attribute19
6072    ,p_ass_attribute20          =>     l_assignment_rec.ass_attribute20
6073    ,p_ass_attribute21          =>     l_assignment_rec.ass_attribute21
6074    ,p_ass_attribute22          =>     l_assignment_rec.ass_attribute22
6075    ,p_ass_attribute23          =>     l_assignment_rec.ass_attribute23
6076    ,p_ass_attribute24          =>     l_assignment_rec.ass_attribute24
6077    ,p_ass_attribute25          =>     l_assignment_rec.ass_attribute25
6078    ,p_ass_attribute26          =>     l_assignment_rec.ass_attribute26
6079    ,p_ass_attribute27          =>     l_assignment_rec.ass_attribute27
6080    ,p_ass_attribute28          =>     l_assignment_rec.ass_attribute28
6081    ,p_ass_attribute29          =>     l_assignment_rec.ass_attribute29
6082    ,p_ass_attribute30          =>     l_assignment_rec.ass_attribute30
6083    ,p_soft_coding_keyflex_id   =>     l_assignment_rec.soft_coding_keyflex_id
6084    ,p_people_group_id          =>     l_assignment_rec.people_group_id
6085    ,p_payroll_id               =>     l_assignment_rec.payroll_id
6086    ,p_pay_basis_id             =>     l_assignment_rec.pay_basis_id
6087    ,p_sal_review_period        =>     l_assignment_rec.sal_review_period
6088   ,p_sal_review_period_frequency => l_assignment_rec.sal_review_period_frequency
6089    ,p_date_probation_end       =>     l_assignment_rec.date_probation_end
6090    ,p_probation_period         =>     l_assignment_rec.probation_period
6091    ,p_probation_unit           =>     l_assignment_rec.probation_unit
6092    ,p_notice_period            =>     l_assignment_rec.notice_period
6093    ,p_notice_period_uom        =>     l_assignment_rec.notice_period_uom
6094    ,p_employee_category        =>     l_assignment_rec.employee_category
6095    ,p_work_at_home             =>     l_assignment_rec.work_at_home
6096    ,p_job_post_source_name     =>     l_assignment_rec.job_post_source_name
6097    ,p_perf_review_period       =>     l_assignment_rec.perf_review_period
6098    ,p_perf_review_period_frequency =>
6099                   l_assignment_rec.perf_review_period_frequency
6100    ,p_internal_address_line    =>     l_assignment_rec.internal_address_line
6101    ,p_contract_id              =>     l_assignment_rec.contract_id
6102    ,p_establishment_id         =>     l_assignment_rec.establishment_id
6103    ,p_cagr_grade_def_id        =>     l_assignment_rec.cagr_grade_def_id
6104    ,p_collective_agreement_id  =>     l_assignment_rec.collective_agreement_id
6105    ,p_cagr_id_flex_num         =>     l_assignment_rec.cagr_id_flex_num
6106    ,p_business_group_id        =>     l_assignment_rec.business_group_id
6107    ,p_grade_ladder_pgm_id      =>     l_assignment_rec.grade_ladder_pgm_id
6108    ,p_assignment_type          =>     l_assignment_rec.assignment_type
6109    --,p_supervisor_assignment_id =>     l_assignment_rec.supervisor_assignment_id
6110    ,p_vacancy_id               =>     l_assignment_rec.vacancy_id
6111    ,p_special_ceiling_step_id  =>     l_special_ceiling_step_id
6112    ,p_primary_flag             =>     l_assignment_rec.primary_flag
6113    ,p_person_id                =>     l_assignment_rec.person_id
6114    ,p_default_code_comb_id     =>     l_assignment_rec.default_code_comb_id
6115    ,p_project_title            =>     l_assignment_rec.project_title
6116    ,p_set_of_books_id          =>     l_assignment_rec.set_of_books_id
6117    ,p_source_type              =>     l_assignment_rec.source_type
6118    ,p_title                    =>     l_assignment_rec.title
6119    ,p_vendor_assignment_number =>     l_assignment_rec.vendor_assignment_number
6120    ,p_vendor_employee_number   =>     l_assignment_rec.vendor_employee_number
6121    ,p_vendor_id                =>     l_assignment_rec.vendor_id
6122    ,p_effective_start_date     =>     l_effective_start_date
6123    ,p_effective_end_date       =>     l_effective_end_date
6124    ,p_element_warning          =>     TRUE
6125    ,p_element_changed          =>     l_element_changed
6126    ,p_page_error => l_page_error
6127    ,p_page_error_msg => l_page_error_msg
6128    ,p_page_warning => l_page_warning
6129    ,p_page_warning_msg => l_page_warning_msg
6130    ,p_organization_error => l_organization_error
6131    ,p_organization_error_msg => l_organization_error_msg
6132    ,p_job_error => l_job_error
6133    ,p_job_error_msg => l_job_error_msg
6134    ,p_position_error => l_position_error
6135    ,p_position_error_msg => l_position_error_msg
6136    ,p_grade_error => l_grade_error
6137    ,p_grade_error_msg => l_grade_error_msg
6138    ,p_supervisor_error => l_supervisor_error
6139    ,p_supervisor_error_msg => l_supervisor_error_msg
6140    ,p_location_error => l_location_error
6141    ,p_location_error_msg => l_location_error_msg
6142    -- GSP change
6143    ,p_ltt_salary_data => ltt_salary_data
6144    ,p_gsp_post_process_warning => lv_gsp_post_process_warning
6145   -- End of GSP change
6146    ,p_po_header_id => l_assignment_rec.po_header_id
6147    ,p_po_line_id => l_assignment_rec.po_line_id
6148    ,p_vendor_site_id => l_assignment_rec.vendor_site_id
6149    ,p_projected_asgn_end => l_assignment_rec.projected_assignment_end
6150 
6151 );
6152 
6153  hr_transaction_swi.set_person_context(l_assignment_rec.person_id
6154                                       ,l_assignment_rec.assignment_id
6155                                       ,l_effective_date);
6156 
6157 
6158 --bug 5032032 fix begin
6159 if l_new_hire_appl_hire = 'Y' then
6160 update_salary_proposal(l_assignment_rec.assignment_id,l_effective_date);
6161 end if;
6162 --bug 5032032 fix end
6163 
6164 end process_api;
6165 
6166 
6167 --This is the procedure to update the assignment data, including
6168 --   the People Group and Soft Coded Key Flexfields
6169 --
6170 procedure update_assignment
6171 (p_validate                 in     boolean default false
6172 ,p_login_person_id          in     number default null
6173 ,p_new_hire_appl_hire       in     varchar2 default 'N'
6174 ,p_assignment_id            in     number
6175 ,p_object_version_number    in     number
6176 ,p_effective_date           in     date
6177 ,p_datetrack_update_mode    in     varchar2
6178 ,p_organization_id          in     number
6179 ,p_position_id              in     number   default null
6180 ,p_job_id                   in     number   default null
6181 ,p_grade_id                 in     number   default null
6182 ,p_location_id              in     number   default null
6183 ,p_employment_category      in     varchar2 default null
6184 ,p_supervisor_id            in     number   default null
6185 ,p_manager_flag             in     varchar2 default null
6186 ,p_normal_hours             in     number   default null
6187 ,p_frequency                in     varchar2 default null
6188 ,p_time_normal_finish       in     varchar2 default null
6189 ,p_time_normal_start        in     varchar2 default null
6190 ,p_bargaining_unit_code     in     varchar2 default null
6191 ,p_labour_union_member_flag in     varchar2 default null
6192 ,p_assignment_status_type_id in    number   default null
6193 ,p_change_reason            in     varchar2 default null
6194 ,p_ass_attribute_category   in     varchar2 default null
6195 ,p_ass_attribute1           in     varchar2 default null
6196 ,p_ass_attribute2           in     varchar2 default null
6197 ,p_ass_attribute3           in     varchar2 default null
6198 ,p_ass_attribute4           in     varchar2 default null
6199 ,p_ass_attribute5           in     varchar2 default null
6200 ,p_ass_attribute6           in     varchar2 default null
6201 ,p_ass_attribute7           in     varchar2 default null
6202 ,p_ass_attribute8           in     varchar2 default null
6203 ,p_ass_attribute9           in     varchar2 default null
6204 ,p_ass_attribute10          in     varchar2 default null
6205 ,p_ass_attribute11          in     varchar2 default null
6206 ,p_ass_attribute12          in     varchar2 default null
6207 ,p_ass_attribute13          in     varchar2 default null
6208 ,p_ass_attribute14          in     varchar2 default null
6209 ,p_ass_attribute15          in     varchar2 default null
6210 ,p_ass_attribute16          in     varchar2 default null
6211 ,p_ass_attribute17          in     varchar2 default null
6212 ,p_ass_attribute18          in     varchar2 default null
6213 ,p_ass_attribute19          in     varchar2 default null
6214 ,p_ass_attribute20          in     varchar2 default null
6215 ,p_ass_attribute21          in     varchar2 default null
6216 ,p_ass_attribute22          in     varchar2 default null
6217 ,p_ass_attribute23          in     varchar2 default null
6218 ,p_ass_attribute24          in     varchar2 default null
6219 ,p_ass_attribute25          in     varchar2 default null
6220 ,p_ass_attribute26          in     varchar2 default null
6221 ,p_ass_attribute27          in     varchar2 default null
6222 ,p_ass_attribute28          in     varchar2 default null
6223 ,p_ass_attribute29          in     varchar2 default null
6224 ,p_ass_attribute30          in     varchar2 default null
6225 ,p_soft_coding_keyflex_id   in out nocopy    number
6226 ,p_people_group_id          in     number   default null
6227 ,p_contract_id                  in     number default null
6228 ,p_establishment_id             in     number default null
6229 ,p_cagr_grade_def_id            in     number default null
6230 ,p_collective_agreement_id      in     number default null
6231 ,p_cagr_id_flex_num             in     number default null
6232 ,p_payroll_id                   in     number default null
6233 ,p_pay_basis_id                 in     number default null
6234 ,p_sal_review_period            in     number default null
6235 ,p_sal_review_period_frequency  in     varchar2 default null
6236 ,p_date_probation_end       in date default null
6237 ,p_probation_period         in number default null
6238 ,p_probation_unit           in varchar2 default null
6239 ,p_notice_period            in number default null
6240 ,p_notice_period_uom        in varchar2 default null
6241 ,p_employee_category        in varchar2 default null
6242 ,p_work_at_home             in varchar2 default null
6243 ,p_job_post_source_name     in varchar2 default null
6244 ,p_perf_review_period       in number default null
6245 ,p_perf_review_period_frequency in varchar2 default null
6246 ,p_internal_address_line    in varchar2 default null
6247 ,p_business_group_id        in     per_all_assignments_f.business_group_id%TYPE
6248 -- GSP change
6249 ,p_grade_ladder_pgm_id      in    per_all_assignments_f.grade_ladder_pgm_id%TYPE
6250 -- GSP change
6251 ,p_assignment_type          in     per_all_assignments_f.assignment_type%TYPE
6252 --,p_supervisor_assignment_id in per_all_assignments_f.supervisor_assignment_id%TYPE
6253 ,p_vacancy_id               in     per_all_assignments_f.vacancy_id%TYPE
6254 ,p_special_ceiling_step_id  in out nocopy per_all_assignments_f.special_ceiling_step_id%TYPE
6255 ,p_primary_flag             in     per_all_assignments_f.primary_flag%TYPE
6256 ,p_person_id                in     per_all_assignments_f.person_id%TYPE
6257 ,p_effective_start_date        out nocopy date
6258 ,p_effective_end_date          out nocopy date
6259 ,p_element_warning          in     boolean
6260 ,p_element_changed          in out nocopy varchar2
6261 ,p_email_id                 in     varchar2 default null
6262 ,p_page_error               in out nocopy varchar2
6263 ,p_page_error_msg           in out nocopy varchar2
6264 ,p_page_warning             in out nocopy varchar2
6265 ,p_page_warning_msg         in out nocopy varchar2
6266 ,p_organization_error       in out nocopy varchar2
6267 ,p_organization_error_msg   in out nocopy varchar2
6268 ,p_job_error                in out nocopy varchar2
6269 ,p_job_error_msg            in out nocopy varchar2
6270 ,p_position_error           in out nocopy varchar2
6271 ,p_position_error_msg       in out nocopy varchar2
6272 ,p_grade_error              in out nocopy varchar2
6273 ,p_grade_error_msg          in out nocopy varchar2
6274 ,p_supervisor_error         in out nocopy varchar2
6275 ,p_supervisor_error_msg     in out nocopy varchar2
6276 ,p_location_error           in out nocopy varchar2
6277 ,p_location_error_msg       in out nocopy varchar2
6278 ,p_title                    in varchar2 default null
6279 ,p_default_code_comb_id     in number default null
6280 ,p_set_of_books_id          in number default null
6281 ,p_source_type              in varchar2 default null
6282 ,p_project_title            in varchar2 default null
6283 ,p_vendor_assignment_number in varchar2 default null
6284 ,p_vendor_employee_number   in varchar2 default null
6285 ,p_vendor_id                in number default null
6286 --GSP populates salary information from Grade Ladder assignment
6287 ,p_ltt_salary_data    IN OUT NOCOPY  sshr_sal_prop_tab_typ
6288 ,p_gsp_post_process_warning out nocopy varchar2
6289 -- End of GSP
6290 ,p_po_header_id                in number default null
6291 ,p_po_line_id                in number default null
6292 ,p_vendor_site_id                in number default null
6293 ,p_projected_asgn_end        in date default null
6294 
6295 ) is
6296 --
6297 
6298 l_effective_date             date;
6299 l_object_version_number      per_all_assignments_f.object_version_number%TYPE;
6300 l_effective_start_date       date;
6301 l_effective_end_date         date;
6302 -- Fix for 3633612 to pass new people group flx ccid to hr_assignment_api, so that these
6303 -- hr_assignment_api's  won't validate the old segment values.
6304 l_people_group_id            per_all_assignments_f.people_group_id%TYPE
6305                               := p_people_group_id;
6306 l_group_name                 VARCHAR2(2000);
6307 l_org_now_no_manager_warning boolean;
6308 l_other_manager_warning      boolean;
6309 l_spp_delete_warning         boolean;
6310 l_entries_changed_warning    VARCHAR2(30);
6311 l_tax_district_changed_warning boolean;
6312 l_soft_coding_keyflex_id     per_all_assignments_f.soft_coding_keyflex_id%TYPE;
6313 l_cagr_grade_def_id          per_all_assignments_f.cagr_grade_def_id%TYPE;
6314 l_cagr_concatenated_segments varchar2(2000);
6315 l_comment_id                 per_all_assignments_f.comment_id%TYPE;
6316 l_concatenated_segments      VARCHAR2(2000);
6317 l_hourly_salaried_warning    boolean default false;
6318 l_validation_start_date      per_assignments_f.effective_start_date%TYPE;
6319 l_validation_end_date        per_assignments_f.effective_end_date%TYPE;
6320 l_validate                   boolean;
6321 l_inv_pos_grade_warning      boolean;
6322 l_org_error                  boolean default false;
6323 l_job_error                  boolean default false;
6324 l_pos_error                  boolean default false;
6325 l_old_wc_code                number;
6326 l_old_job_id                 number;
6327 l_new_wc_code                number;
6328 l_assignment_status_type     varchar2(30);
6329 
6330 -- for disabling the descriptive flex field
6331 l_add_struct_d hr_dflex_utility.l_ignore_dfcode_varray :=
6332                            hr_dflex_utility.l_ignore_dfcode_varray();
6333 -- for disabling the key flex field
6334 l_add_struct_k hr_kflex_utility.l_ignore_kfcode_varray :=
6335                            hr_kflex_utility.l_ignore_kfcode_varray();
6336 --
6337 -- GSP changes
6338  lb_grd_ldr_exists_flag  boolean default false;
6339 -- End of GSP changes
6340 l_proc   varchar2(72)  := g_package||'update_assignment';
6341 --
6342 cursor current_job_id is
6343 select job_id
6344 from per_all_assignments_f
6345 where assignment_id=p_assignment_id
6346 and l_effective_date between effective_start_date and effective_end_date;
6347 
6348 --
6349 cursor wc_code(pc_job_id number) is
6350 select jwc.wc_code
6351 from pay_job_wc_code_usages jwc,
6352 hr_locations_all hl
6353 where jwc.job_id = pc_job_id
6354 and hl.location_id = p_location_id
6355 and jwc.state_code = hl.region_2;
6356 --
6357 cursor status_type is
6358 select per_system_status
6359 from per_assignment_status_types
6360 where assignment_status_type_id=p_assignment_status_type_id;
6361 --
6362 
6363   cursor csr_pgp_segments is
6364   select *
6365   from pay_people_groups
6366   where people_group_id = p_people_group_id;
6367 
6368   cursor csr_scl_segments is
6369   select *
6370   from hr_soft_coding_keyflex
6371   where soft_coding_keyflex_id = p_soft_coding_keyflex_id;
6372 
6373   cursor csr_cag_segments is
6374   select *
6375   from per_cagr_grades_def
6376   where cagr_grade_def_id = p_cagr_grade_def_id;
6377 
6378   cursor csr_default_work_schedule(leg_code  in varchar2) is
6379   select to_char(user_column_id)
6380   from pay_user_columns puc, hr_organization_information hoi
6381   WHERE (HOI.org_information1 = to_char(PUC.user_table_id)
6382        OR HOI.org_information1 is null )
6383   AND  HOI.org_information_context  = 'Work Schedule'
6384   AND  HOI.organization_id  = p_organization_id
6385   AND  (puc.business_group_id is null or
6386         puc.business_group_id = p_business_group_id)
6387   AND  (puc.legislation_code is null or
6388         puc.legislation_code = leg_code)
6389   and puc.user_column_name = hoi.org_information2;
6390 
6391   /*cursor csr_validate_work_schedule(leg_code  in varchar2,
6392                                    segment4 in number) is
6393   select to_char(user_column_id)
6394   from pay_user_columns puc, hr_organization_information hoi
6395   WHERE (HOI.org_information1 = to_char(PUC.user_table_id)
6396        OR HOI.org_information1 is null )
6397   AND  HOI.org_information_context  = 'Work Schedule'
6398   AND  HOI.organization_id  = p_organization_id
6399   AND  (puc.business_group_id is null or
6400         puc.business_group_id = p_business_group_id)
6401   AND  (puc.legislation_code is null or
6402         puc.legislation_code = leg_code)
6403   and  puc.user_column_id = segment4;*/
6404 
6405   cursor csr_default_gre is
6406   select scl.segment1
6407   from hr_soft_coding_keyflex scl,
6408        per_all_assignments_f asg
6409   where asg.person_id = p_login_person_id
6410   and asg.business_group_id = p_business_group_id --the new hire business group
6411   and asg.primary_flag = 'Y'
6412   and trunc(sysdate) between asg.effective_start_date
6413       and asg.effective_end_date
6414   and asg.soft_coding_keyflex_id = scl.soft_coding_keyflex_id;
6415 
6416  -- Fix for Bug # 3116369
6417    cursor csr_cwk_scl_idsel(leg_code  in varchar2) is
6418     select rule_mode
6419     from   pay_legislation_rules    plr
6420     where  plr.legislation_code  = leg_code
6421     and    plr.rule_type         = 'CWK_S'
6422     and    exists
6423           (select null
6424            from   fnd_segment_attribute_values fsav
6425            where  fsav.id_flex_num             = plr.rule_mode
6426            and    fsav.application_id          = 800
6427            and    fsav.id_flex_code            = 'SCL'
6428            and    fsav.segment_attribute_type  = 'ASSIGNMENT'
6429            and    fsav.attribute_value         = 'Y')
6430     and    exists
6431           (select null
6432            from   pay_legislation_rules        plr2
6433            where  plr2.legislation_code        = plr.legislation_code
6434            and    plr2.rule_type               = 'CWK_SDL'
6435            and    plr2.rule_mode               = 'A') ;
6436 
6437 
6438   cursor csr_emp_scl_idsel(leg_code  in varchar2) is
6439     select rule_mode
6440        from   pay_legislation_rules
6441        where  legislation_code = leg_code
6442        and    rule_type        = 'S'
6443        and    exists
6444            (select null
6445             from   fnd_segment_attribute_values
6446             where  id_flex_num = rule_mode
6447             and    application_id = 800
6448             and    id_flex_code = 'SCL'
6449             and    segment_attribute_type = 'ASSIGNMENT'
6450             and    attribute_value = 'Y')
6451        and    exists
6452            (select null
6453             from   pay_legislation_rules
6454             where  legislation_code  = leg_code
6455             and    rule_type = 'SDL'
6456             and    rule_mode = 'A');
6457   --
6458   l_flex_num               fnd_id_flex_segments.id_flex_num%TYPE;
6459   l_scl_hide_flag varchar2(1);
6460 
6461   l_people_groups csr_pgp_segments%rowtype;
6462   l_soft_coding_keyflex csr_scl_segments%rowtype;
6463   l_cagr_grades_def csr_cag_segments%rowtype;
6464   l_legislation_code   per_business_groups.legislation_code%TYPE;
6465   l_new_hire_default  varchar2(10);
6466 
6467   l_old_payroll_id number;
6468   l_validate_start_date date;
6469   l_validate_end_date date;
6470   l_entries_changed varchar2(250);
6471 
6472 begin
6473 
6474   hr_utility.set_location('Entering:'||l_proc, 5);
6475   l_effective_date :=trunc(p_effective_date);
6476 
6477   l_validate_start_date := p_effective_start_date;
6478   l_validate_end_date := p_effective_end_date;
6479 
6480   open csr_pgp_segments;
6481   fetch csr_pgp_segments into l_people_groups;
6482   close csr_pgp_segments;
6483 
6484   open csr_scl_segments;
6485   fetch csr_scl_segments into l_soft_coding_keyflex;
6486   close csr_scl_segments;
6487 
6488   open csr_cag_segments;
6489   fetch csr_cag_segments into l_cagr_grades_def;
6490   close csr_cag_segments;
6491 --
6492 -- get the current job_id for wc_validation
6493 --
6494   open current_job_id;
6495   fetch current_job_id into l_old_job_id;
6496   if current_job_id%found then
6497     close current_job_id;
6498   else
6499     close current_job_id;
6500   end if;
6501 
6502   -- Set default SCL for new hire and applicant hire only
6503   -- for US legislation.
6504   -- if p_soft_coding_keyflex_id is null, the GRE region must be turned off
6505   -- for the new hire flow or the applicant hire flow.
6506   -- we need to set the GRE and Work Schedule default values. Otherwise,
6507   -- core hr api will raise error HR_50001_EMP_ASS_NO_GRE.
6508   -- The default GRE and Work Schedule values are set when the p_login_person_id
6509   -- is not null (update_assignment is called by the process_save).
6510   -- The login_person_id is null when update_assignment is called by
6511   -- process_api. The default values should not be set when called by
6512   -- process_api because the default values are already in transation table.
6513   -- if p_soft_coding_keyflex_id is null, then it must be a new hire or
6514   -- applicant hire.
6515   l_legislation_code := hr_misc_web.get_legislation_code
6516                   (p_assignment_id => p_assignment_id,
6517                    p_effective_date => l_effective_date);
6518   l_new_hire_default := fnd_profile.value('HR_SSHR_NEW_HIRE_DEFAULTS');
6519 
6520   -- Bug Fix for 3116369
6521   -- find the scl hide flag logic in order to set the default values for gre and
6522   -- workschedule segments Bug fix for 3116369
6523   l_scl_hide_flag := 'N';
6524   if p_assignment_type = 'C' then
6525         hr_utility.set_location('if p_assignment_type = C then:'||l_proc,25);
6526         OPEN csr_cwk_scl_idsel(l_legislation_code);
6527         FETCH csr_cwk_scl_idsel INTO l_flex_num;
6528         IF csr_cwk_scl_idsel%NOTFOUND THEN
6529           l_scl_hide_flag := 'Y';
6530         END IF;
6531         CLOSE csr_cwk_scl_idsel;
6532   else
6533         OPEN csr_emp_scl_idsel(l_legislation_code);
6534         FETCH csr_emp_scl_idsel INTO l_flex_num;
6535         IF csr_emp_scl_idsel%NOTFOUND THEN
6536           l_scl_hide_flag := 'Y';
6537         END IF;
6538         CLOSE csr_emp_scl_idsel;
6539   end if;
6540 
6541   if (p_login_person_id is not null and
6542      p_new_hire_appl_hire = 'Y' and
6543      p_soft_coding_keyflex_id is null and
6544      (l_new_hire_default is null or l_new_hire_default = 'Y') and
6545      l_scl_hide_flag = 'N')
6546   then
6547     if l_legislation_code = 'US' then
6548       -- set default GRE
6549       open csr_default_gre;
6550       fetch csr_default_gre into l_soft_coding_keyflex.segment1;
6551       close csr_default_gre;
6552     end if;
6553     -- set default work schedule
6554     open csr_default_work_schedule(l_legislation_code);
6555     fetch csr_default_work_schedule into l_soft_coding_keyflex.segment4;
6556     close csr_default_work_schedule;
6557   end if;
6558 
6559   -- validate the work schedule segment4 when not new hire.
6560   -- this could be invalid if the SCL is truned off in the web page
6561   -- and organization has been changed.
6562 
6563   /*if p_login_person_id is not null and
6564      p_new_hire_appl_hire = 'N'and
6565      l_soft_coding_keyflex.segment4 is not null and
6566      l_legislation_code = 'US' then
6567     begin
6568     open csr_validate_work_schedule
6569       (l_legislation_code, to_number(l_soft_coding_keyflex.segment4));
6570     fetch csr_validate_work_schedule into l_soft_coding_keyflex.segment4;
6571     if csr_validate_work_schedule%notfound then
6572       --not a valid work_schedule
6573       -- set default work schedule
6574       open csr_default_work_schedule(l_legislation_code);
6575       fetch csr_default_work_schedule into l_soft_coding_keyflex.segment4;
6576       if csr_default_work_schedule%notfound then
6577         l_soft_coding_keyflex.segment4 := null;
6578       end if;
6579       close csr_default_work_schedule;
6580     end if;
6581     close csr_validate_work_schedule;
6582     exception
6583       when others then
6584         null;
6585     end;
6586   end if;*/
6587 --
6588 -- since we are calling more than one api, we must issue our own
6589 -- savepoint and manage the rollback ourselves.
6590 --
6591   savepoint validate_assignment;
6592 --
6593   l_object_version_number:=p_object_version_number;
6594   l_validate := p_validate;
6595 
6596   if p_assignment_type = 'C' then
6597     hr_utility.set_location('if p_assignment_type = C then:'||l_proc,30);
6598     l_add_struct_k.extend(1);
6599     l_add_struct_k(l_add_struct_k.count) := 'SCL';
6600     hr_kflex_utility.create_ignore_kf_validation(p_rec => l_add_struct_k);
6601     --
6602     -- code for disabling the descriptive flex field
6603     l_add_struct_d.extend(1);
6604     l_add_struct_d(l_add_struct_d.count) := 'PER_ASSIGNMENTS';
6605 
6606     hr_dflex_utility.create_ignore_df_validation(p_rec => l_add_struct_d);
6607 
6608     hr_assignment_api.update_cwk_asg_criteria
6609       (p_effective_date               => l_effective_date
6610       ,p_datetrack_update_mode        => p_datetrack_update_mode
6611       ,p_assignment_id                => p_assignment_id
6612       ,p_object_version_number        => l_object_version_number
6613       ,p_grade_id                     => p_grade_id
6614       ,p_position_id                  => p_position_id
6615       ,p_job_id                       => p_job_id
6616       ,p_location_id                  => p_location_id
6617       ,p_organization_id              => p_organization_id
6618       ,p_pay_basis_id                 => p_pay_basis_id
6619 
6620      -- Fix for Bug #3083706 for updating people grp for CWK
6621       ,p_segment1                     => l_people_groups.segment1
6622       ,p_segment2                     => l_people_groups.segment2
6623       ,p_segment3                     => l_people_groups.segment3
6624       ,p_segment4                     => l_people_groups.segment4
6625       ,p_segment5                     => l_people_groups.segment5
6626       ,p_segment6                     => l_people_groups.segment6
6627       ,p_segment7                     => l_people_groups.segment7
6628       ,p_segment8                     => l_people_groups.segment8
6629       ,p_segment9                     => l_people_groups.segment9
6630       ,p_segment10                    => l_people_groups.segment10
6631       ,p_segment11                    => l_people_groups.segment11
6632       ,p_segment12                    => l_people_groups.segment12
6633       ,p_segment13                    => l_people_groups.segment13
6634       ,p_segment14                    => l_people_groups.segment14
6635       ,p_segment15                    => l_people_groups.segment15
6636       ,p_segment16                    => l_people_groups.segment16
6637       ,p_segment17                    => l_people_groups.segment17
6638       ,p_segment18                    => l_people_groups.segment18
6639       ,p_segment19                    => l_people_groups.segment19
6640       ,p_segment20                    => l_people_groups.segment20
6641       ,p_segment21                    => l_people_groups.segment21
6642       ,p_segment22                    => l_people_groups.segment22
6643       ,p_segment23                    => l_people_groups.segment23
6644       ,p_segment24                    => l_people_groups.segment24
6645       ,p_segment25                    => l_people_groups.segment25
6646       ,p_segment26                    => l_people_groups.segment26
6647       ,p_segment27                    => l_people_groups.segment27
6648       ,p_segment28                    => l_people_groups.segment28
6649       ,p_segment29                    => l_people_groups.segment29
6650       ,p_segment30                    => l_people_groups.segment30
6651     -- end of the bug Fix for #3083706
6652 
6653       ,p_people_group_name            => l_group_name
6654       ,p_effective_start_date         => l_effective_start_date
6655       ,p_effective_end_date           => l_effective_end_date
6656       ,p_people_group_id              => l_people_group_id
6657       ,p_org_now_no_manager_warning   => l_org_now_no_manager_warning
6658       ,p_other_manager_warning        => l_other_manager_warning
6659       ,p_spp_delete_warning           => l_spp_delete_warning
6660       ,p_entries_changed_warning      => l_entries_changed_warning
6661       ,p_tax_district_changed_warning => l_tax_district_changed_warning
6662       );
6663 
6664     hr_dflex_utility.remove_ignore_df_validation;
6665     hr_kflex_utility.remove_ignore_kf_validation;
6666     --
6667 
6668     l_soft_coding_keyflex_id := p_soft_coding_keyflex_id;
6669 
6670     hr_assignment_api.update_cwk_asg
6671       (p_effective_date               => l_effective_date
6672       ,p_datetrack_update_mode        => 'CORRECTION'
6673       ,p_assignment_id                => p_assignment_id
6674       ,p_object_version_number        => l_object_version_number
6675       -- Fix for updating assignment_category for CWK , fix for Bug #3083776
6676       ,p_assignment_category          => p_employment_category
6677       ,p_change_reason                => p_change_reason
6678       --,p_comments                     => p_comments
6679       ,p_default_code_comb_id         => p_default_code_comb_id
6680       ,p_establishment_id             => p_establishment_id
6681       ,p_frequency                    => p_frequency
6682       ,p_internal_address_line        => p_internal_address_line
6683       ,p_labour_union_member_flag     => p_labour_union_member_flag
6684       ,p_manager_flag                 => p_manager_flag
6685       ,p_normal_hours                 => p_normal_hours
6686       ,p_project_title                => p_project_title
6687       ,p_set_of_books_id              => p_set_of_books_id
6688       ,p_source_type                  => p_source_type
6689       ,p_supervisor_id                => p_supervisor_id
6690       ,p_time_normal_finish           => p_time_normal_finish
6691       ,p_time_normal_start            => p_time_normal_start
6692       ,p_title                        => p_title
6693       ,p_vendor_assignment_number     => p_vendor_assignment_number
6694       ,p_vendor_employee_number       => p_vendor_employee_number
6695       ,p_vendor_id                    => p_vendor_id
6696       ,p_po_header_id                 => p_po_header_id
6697       ,p_po_line_id                   => p_po_line_id
6698       ,p_vendor_site_id               => p_vendor_site_id
6699       ,p_projected_assignment_end     => p_projected_asgn_end
6700       --,p_assignment_status_type_id    => p_assignment_status_type_id --3262804
6701       ,p_attribute_category       => p_ass_attribute_category
6702       ,p_attribute1               => p_ass_attribute1
6703       ,p_attribute2               => p_ass_attribute2
6704       ,p_attribute3               => p_ass_attribute3
6705       ,p_attribute4               => p_ass_attribute4
6706       ,p_attribute5               => p_ass_attribute5
6707       ,p_attribute6               => p_ass_attribute6
6708       ,p_attribute7               => p_ass_attribute7
6709       ,p_attribute8               => p_ass_attribute8
6710       ,p_attribute9               => p_ass_attribute9
6711       ,p_attribute10              => p_ass_attribute10
6712       ,p_attribute11              => p_ass_attribute11
6713       ,p_attribute12              => p_ass_attribute12
6714       ,p_attribute13              => p_ass_attribute13
6715       ,p_attribute14              => p_ass_attribute14
6716       ,p_attribute15              => p_ass_attribute15
6717       ,p_attribute16              => p_ass_attribute16
6718       ,p_attribute17              => p_ass_attribute17
6719       ,p_attribute18              => p_ass_attribute18
6720       ,p_attribute19              => p_ass_attribute19
6721       ,p_attribute20              => p_ass_attribute20
6722       ,p_attribute21              => p_ass_attribute21
6723       ,p_attribute22              => p_ass_attribute22
6724       ,p_attribute23              => p_ass_attribute23
6725       ,p_attribute24              => p_ass_attribute24
6726       ,p_attribute25              => p_ass_attribute25
6727       ,p_attribute26              => p_ass_attribute26
6728       ,p_attribute27              => p_ass_attribute27
6729       ,p_attribute28              => p_ass_attribute28
6730       ,p_attribute29              => p_ass_attribute29
6731       ,p_attribute30              => p_ass_attribute30
6732       ,p_scl_segment1             => l_soft_coding_keyflex.segment1
6733       ,p_scl_segment2             => l_soft_coding_keyflex.segment2
6734       ,p_scl_segment3             => l_soft_coding_keyflex.segment3
6735       ,p_scl_segment4             => l_soft_coding_keyflex.segment4
6736       ,p_scl_segment5             => l_soft_coding_keyflex.segment5
6737       ,p_scl_segment6             => l_soft_coding_keyflex.segment6
6738       ,p_scl_segment7             => l_soft_coding_keyflex.segment7
6739       ,p_scl_segment8             => l_soft_coding_keyflex.segment8
6740       ,p_scl_segment9             => l_soft_coding_keyflex.segment9
6741       ,p_scl_segment10            => l_soft_coding_keyflex.segment10
6742       ,p_scl_segment11            => l_soft_coding_keyflex.segment11
6743       ,p_scl_segment12            => l_soft_coding_keyflex.segment12
6744       ,p_scl_segment13            => l_soft_coding_keyflex.segment13
6745       ,p_scl_segment14            => l_soft_coding_keyflex.segment14
6746       ,p_scl_segment15            => l_soft_coding_keyflex.segment15
6747       ,p_scl_segment16            => l_soft_coding_keyflex.segment16
6748       ,p_scl_segment17            => l_soft_coding_keyflex.segment17
6749       ,p_scl_segment18            => l_soft_coding_keyflex.segment18
6750       ,p_scl_segment19            => l_soft_coding_keyflex.segment19
6751       ,p_scl_segment20            => l_soft_coding_keyflex.segment20
6752       ,p_scl_segment21            => l_soft_coding_keyflex.segment21
6753       ,p_scl_segment22            => l_soft_coding_keyflex.segment22
6754       ,p_scl_segment23            => l_soft_coding_keyflex.segment23
6755       ,p_scl_segment24            => l_soft_coding_keyflex.segment24
6756       ,p_scl_segment25            => l_soft_coding_keyflex.segment25
6757       ,p_scl_segment26            => l_soft_coding_keyflex.segment26
6758       ,p_scl_segment27            => l_soft_coding_keyflex.segment27
6759       ,p_scl_segment28            => l_soft_coding_keyflex.segment28
6760       ,p_scl_segment29            => l_soft_coding_keyflex.segment29
6761       ,p_scl_segment30            => l_soft_coding_keyflex.segment30
6762       ,p_org_now_no_manager_warning   => l_org_now_no_manager_warning
6763       ,p_effective_start_date         => l_effective_start_date
6764       ,p_effective_end_date           => l_effective_end_date
6765       ,p_comment_id                   => l_comment_id
6766       ,p_no_managers_warning          => l_org_now_no_manager_warning
6767       ,p_other_manager_warning        => l_other_manager_warning
6768       ,p_soft_coding_keyflex_id       => l_soft_coding_keyflex_id
6769       ,p_concatenated_segments        => l_concatenated_segments
6770       ,p_hourly_salaried_warning      => l_hourly_salaried_warning
6771       );
6772       p_soft_coding_keyflex_id := l_soft_coding_keyflex_id;
6773   else
6774 -- perform field level validation first to obtain as much error information
6775 -- as possible
6776 --
6777 -- call the assignment criteria api
6778 -- this enters all of the data which have element link dependencies
6779 --
6780   -- Added for turn off key flex field validation
6781   l_add_struct_k.extend(1);
6782   l_add_struct_k(l_add_struct_k.count) := 'SCL';
6783   l_add_struct_k.extend(1);
6784   l_add_struct_k(l_add_struct_k.count) := 'CAGR';
6785 
6786   hr_kflex_utility.create_ignore_kf_validation(p_rec => l_add_struct_k);
6787   --
6788   -- code for disabling the descriptive flex field
6789   l_add_struct_d.extend(1);
6790   l_add_struct_d(l_add_struct_d.count) := 'PER_ASSIGNMENTS';
6791 
6792   hr_dflex_utility.create_ignore_df_validation(p_rec => l_add_struct_d);
6793     --
6794     hr_assignment_api.update_emp_asg_criteria
6795       (p_effective_date               => l_effective_date
6796       ,p_datetrack_update_mode        => p_datetrack_update_mode
6797       ,p_assignment_id                => p_assignment_id
6798       ,p_object_version_number        => l_object_version_number
6799       ,p_grade_id                     => p_grade_id
6800       ,p_position_id                  => p_position_id
6801       ,p_job_id                       => p_job_id
6802       ,p_location_id                  => p_location_id
6803       ,p_special_ceiling_step_id      => p_special_ceiling_step_id
6804       ,p_organization_id              => p_organization_id
6805       ,p_employment_category          => p_employment_category
6806       --,p_payroll_id                   => p_payroll_id
6807       ,p_grade_ladder_pgm_id          => p_grade_ladder_pgm_id
6808       --,p_supervisor_assignment_id     => p_supervisor_assignment_id
6809       ,p_pay_basis_id                 => p_pay_basis_id
6810       ,p_segment1                     => l_people_groups.segment1
6811       ,p_segment2                     => l_people_groups.segment2
6812       ,p_segment3                     => l_people_groups.segment3
6813       ,p_segment4                     => l_people_groups.segment4
6814       ,p_segment5                     => l_people_groups.segment5
6815       ,p_segment6                     => l_people_groups.segment6
6816       ,p_segment7                     => l_people_groups.segment7
6817       ,p_segment8                     => l_people_groups.segment8
6818       ,p_segment9                     => l_people_groups.segment9
6819       ,p_segment10                    => l_people_groups.segment10
6820       ,p_segment11                    => l_people_groups.segment11
6821       ,p_segment12                    => l_people_groups.segment12
6822       ,p_segment13                    => l_people_groups.segment13
6823       ,p_segment14                    => l_people_groups.segment14
6824       ,p_segment15                    => l_people_groups.segment15
6825       ,p_segment16                    => l_people_groups.segment16
6826       ,p_segment17                    => l_people_groups.segment17
6827       ,p_segment18                    => l_people_groups.segment18
6828       ,p_segment19                    => l_people_groups.segment19
6829       ,p_segment20                    => l_people_groups.segment20
6830       ,p_segment21                    => l_people_groups.segment21
6831       ,p_segment22                    => l_people_groups.segment22
6832       ,p_segment23                    => l_people_groups.segment23
6833       ,p_segment24                    => l_people_groups.segment24
6834       ,p_segment25                    => l_people_groups.segment25
6835       ,p_segment26                    => l_people_groups.segment26
6836       ,p_segment27                    => l_people_groups.segment27
6837       ,p_segment28                    => l_people_groups.segment28
6838       ,p_segment29                    => l_people_groups.segment29
6839       ,p_segment30                    => l_people_groups.segment30
6840       ,p_contract_id                  => p_contract_id
6841       ,p_establishment_id             => p_establishment_id
6842       ,p_soft_coding_keyflex_id       => l_soft_coding_keyflex_id
6843       ,p_concatenated_segments        => l_concatenated_segments
6844       ,p_effective_start_date         => l_effective_start_date
6845       ,p_effective_end_date           => l_effective_end_date
6846       ,p_people_group_id              => l_people_group_id
6847       ,p_group_name                   => l_group_name
6848       ,p_org_now_no_manager_warning   => l_org_now_no_manager_warning
6849       ,p_other_manager_warning        => l_other_manager_warning
6850       ,p_spp_delete_warning           => l_spp_delete_warning
6851       ,p_entries_changed_warning      => l_entries_changed_warning
6852       ,p_tax_district_changed_warning => l_tax_district_changed_warning
6853       ,p_gsp_post_process_warning     => p_gsp_post_process_warning
6854       );
6855 --
6856    -- bug 5547271
6857    if (hr_process_person_ss.g_is_applicant) then
6858    begin
6859     select PAYROLL_ID into l_old_payroll_id
6860     from per_all_assignments_f
6861     where assignment_id = p_assignment_id and p_effective_date between EFFECTIVE_START_DATE and EFFECTIVE_END_DATE;
6862    end;
6863     hrentmnt.maintain_entries_asg
6864     (p_assignment_id                => p_assignment_id
6865     ,p_old_payroll_id               => l_old_payroll_id
6866     ,p_new_payroll_id               => p_payroll_id
6867     ,p_business_group_id            => p_business_group_id
6868     ,p_operation                    => 'HIRE_APPL'
6869     ,p_actual_term_date             => null
6870     ,p_last_standard_date           => null
6871     ,p_final_process_date           => null
6872     ,p_dt_mode                      => p_datetrack_update_mode ---check??
6873     ,p_validation_start_date        => l_validate_start_date
6874     ,p_validation_end_date          => l_validate_end_date
6875     ,p_entries_changed              => l_entries_changed
6876     ,p_old_people_group_id          => -1
6877     ,p_new_people_group_id          => p_people_group_id
6878     );
6879     if l_entries_changed_warning <> 'S' then
6880     l_entries_changed_warning := nvl(l_entries_changed, 'N');
6881     end if;
6882 
6883     end if;
6884 
6885     -- bug 5547271
6886 
6887 -- look to see if the elements have changed
6888 --
6889   if (l_entries_changed_warning<>'N') then
6890   --
6891   -- if the elements have changed, look to see if we want a
6892   -- warning or an error
6893   --
6894     if p_element_warning then
6895     --
6896     -- we want a warning, so look to see if the warning has already been
6897     -- raised and this is the second time through the process
6898     --
6899       if p_element_changed is null then
6900       --
6901       -- since p_element_changed is null, the warning has not already been
6902       -- raised, so raise it
6903       --
6904         hr_utility.set_location('if p_element_changed is null then:'||l_proc,35);
6905         p_element_changed:='W';
6906         --fnd_message.set_name('PER', 'HR_ELEMENT_CHANGED_WARNING_WEB');
6907         --hr_utility.raise_error;
6908         -- Should add page level warning
6909         /*hr_errors_api.addErrorToTable
6910         (p_errorfield   => null
6911         ,p_errorcode    => to_char(SQLCODE)
6912         ,p_errormsg     => hr_util_misc_web.return_msg_text
6913                            (p_message_name =>'HR_ELEMENT_CHANGED_WARNING_WEB'
6914                            ,p_application_id => 'PER')
6915         ,p_warningflag  => true
6916         );*/
6917       else
6918         --warning already raised. will not raise it again.
6919         p_element_changed:='X';
6920       end if;
6921     --
6922     else
6923       --
6924       -- we want a error, so raise one.
6925       --
6926       -- Should add page level warning
6927       fnd_message.set_name('PER', 'HR_ELEMENT_CHANGED_WEB');
6928       hr_utility.raise_error;
6929       /*hr_errors_api.addErrorToTable
6930       (p_errorfield => null
6931       ,p_errorcode  => to_char(SQLCODE)
6932       ,p_errormsg   => hr_util_misc_web.return_msg_text
6933                        (p_message_name   => 'HR_ELEMENT_CHANGED_WEB'
6934                        ,p_application_id => 'PER')
6935       ,p_email_id   => p_email_id
6936       ,p_email_msg  => hr_util_misc_web.return_msg_text
6937                        (p_message_name => 'HR_ELEMENT_CHANGE_EMAILTXT_WEB'
6938                        ,p_application_id => 'PER')
6939       );*/
6940       l_validate:=TRUE;
6941     end if;
6942   end if;
6943 --  if hr_misc_web.get_legislation_code(p_assignment_id=>p_assignment_id) = 'US'
6944 --  then
6945 --
6946 -- look to see if the wc code has changed
6947 --
6948 -- get the WC code for the new job
6949 --
6950 -- Bug 2610926: do not check wc error.
6951 --  open wc_code(p_job_id);
6952 --  fetch wc_code into l_new_wc_code;
6953 --  if wc_code%found then
6954 --    close wc_code;
6955 --  else
6956     -- if there is no appropriate WC code for this job set the code to -1
6957 --    close wc_code;
6958 --    l_new_wc_code:=-1;
6959 --  end if;
6960 --
6961 -- get the WC code for the new job
6962 --
6963 --  open wc_code(l_old_job_id);
6964 --  fetch wc_code into l_old_wc_code;
6965 --  if wc_code%found then
6966 --    close wc_code;
6967 --  else
6968     -- if there is no appropriate WC code for this job set the code to -1
6969 --    close wc_code;
6970 --    l_old_wc_code:=-1;
6971 --  end if;
6972 --
6973 -- if the WC code has changed then always raise an error.
6974 -- this will not happen in non-US legislations as both codes will have been
6975 -- read as to -1, so will match
6976 --
6977 --  if(l_old_wc_code<>l_new_wc_code) then
6978     --Should add page level error
6979     /*hr_errors_api.addErrorToTable
6980       (p_errorfield => null
6981       ,p_errorcode  => to_char(SQLCODE)
6982       ,p_errormsg   => hr_util_misc_web.return_msg_text
6983                        (p_message_name   => 'HR_JOB_CHANGES_WC_RATE_WEB'
6984                        ,p_application_id => 'PER')
6985       ,p_email_id   => p_email_id
6986       ,p_email_msg  => hr_util_misc_web.return_msg_text
6987                        (p_message_name   => 'HR_WC_RATE_CHG_EMAILTXT_WEB'
6988                        ,p_application_id => 'PER')
6989       );*/
6990 --      l_validate:=TRUE;
6991 --      fnd_message.set_name('PER', 'HR_JOB_CHANGES_WC_RATE_WEB');
6992 --      hr_utility.raise_error;
6993 --  end if;
6994 --  end if; --end check wc_code
6995 --
6996 -- if there is no manager in the organization now then raise a warning
6997 --
6998   /*if (l_org_now_no_manager_warning) then
6999     --Should add page level warning
7000     fnd_message.set_name('PER','HR_51124_MMV_NO_MGR_EXIST_ORG');
7001     hr_utility.raise_error;
7002     hr_errors_api.addErrorToTable
7003       (p_errorfield => null
7004       ,p_errormsg   => fnd_message.get
7005       ,p_warningflag => TRUE);
7006   end if;*/
7007 --
7008 -- if there are other managers then raise a warning
7009 --
7010   /*if (l_other_manager_warning) then
7011     --Should add page level warning
7012     fnd_message.set_name('PER','HR_51125_MMV_MRE_MRG_EXIST_ORG');
7013     hr_utility.raise_error;
7014     hr_errors_api.addErrorToTable
7015       (p_errorfield => null
7016       ,p_errormsg   => fnd_message.get
7017       ,p_warningflag => TRUE);
7018   end if;*/
7019 --
7020 -- if there are no errors from the previous api call then call the
7021 -- assignment information api.
7022 -- This is always called in CORRECTION mode because once we have made an UPDATE
7023 -- to the row to make another change to it will be a correction.
7024 
7025   --First remove the remove_ignore_df_validation
7026   -- and remove_ignore_kf_validation
7027 
7028   hr_dflex_utility.remove_ignore_df_validation;
7029   hr_kflex_utility.remove_ignore_kf_validation;
7030   --
7031 
7032     l_soft_coding_keyflex_id := p_soft_coding_keyflex_id;
7033 
7034     hr_assignment_api.update_emp_asg
7035       (p_effective_date               => l_effective_date
7036       ,p_datetrack_update_mode        => 'CORRECTION'
7037       ,p_assignment_id                => p_assignment_id
7038       ,p_object_version_number        => l_object_version_number
7039       ,p_supervisor_id                => p_supervisor_id
7040       ,p_manager_flag                 => p_manager_flag
7041       ,p_normal_hours                 => p_normal_hours
7042       ,p_frequency                    => p_frequency
7043       ,p_time_normal_finish           => p_time_normal_finish
7044       ,p_time_normal_start            => p_time_normal_start
7045       ,p_bargaining_unit_code         => p_bargaining_unit_code
7046       ,p_labour_union_member_flag     => p_labour_union_member_flag
7047       ,p_sal_review_period            => p_sal_review_period
7048       ,p_sal_review_period_frequency  => p_sal_review_period_frequency
7049       ,p_date_probation_end           => p_date_probation_end
7050       ,p_probation_period             => p_probation_period
7051       ,p_probation_unit               => p_probation_unit
7052       ,p_notice_period                => p_notice_period
7053       ,p_notice_period_uom            => p_notice_period_uom
7054       ,p_employee_category            => p_employee_category
7055       ,p_work_at_home                 => p_work_at_home
7056       ,p_job_post_source_name         => p_job_post_source_name
7057       ,p_perf_review_period           => p_perf_review_period
7058       ,p_perf_review_period_frequency => p_perf_review_period_frequency
7059       ,p_internal_address_line        => p_internal_address_line
7060       ,p_ass_attribute_category       => p_ass_attribute_category
7061       ,p_ass_attribute1               => p_ass_attribute1
7062       ,p_ass_attribute2               => p_ass_attribute2
7063       ,p_ass_attribute3               => p_ass_attribute3
7064       ,p_ass_attribute4               => p_ass_attribute4
7065       ,p_ass_attribute5               => p_ass_attribute5
7066       ,p_ass_attribute6               => p_ass_attribute6
7067       ,p_ass_attribute7               => p_ass_attribute7
7068       ,p_ass_attribute8               => p_ass_attribute8
7069       ,p_ass_attribute9               => p_ass_attribute9
7070       ,p_ass_attribute10              => p_ass_attribute10
7071       ,p_ass_attribute11              => p_ass_attribute11
7072       ,p_ass_attribute12              => p_ass_attribute12
7073       ,p_ass_attribute13              => p_ass_attribute13
7074       ,p_ass_attribute14              => p_ass_attribute14
7075       ,p_ass_attribute15              => p_ass_attribute15
7076       ,p_ass_attribute16              => p_ass_attribute16
7077       ,p_ass_attribute17              => p_ass_attribute17
7078       ,p_ass_attribute18              => p_ass_attribute18
7079       ,p_ass_attribute19              => p_ass_attribute19
7080       ,p_ass_attribute20              => p_ass_attribute20
7081       ,p_ass_attribute21              => p_ass_attribute21
7082       ,p_ass_attribute22              => p_ass_attribute22
7083       ,p_ass_attribute23              => p_ass_attribute23
7084       ,p_ass_attribute24              => p_ass_attribute24
7085       ,p_ass_attribute25              => p_ass_attribute25
7086       ,p_ass_attribute26              => p_ass_attribute26
7087       ,p_ass_attribute27              => p_ass_attribute27
7088       ,p_ass_attribute28              => p_ass_attribute28
7089       ,p_ass_attribute29              => p_ass_attribute29
7090       ,p_ass_attribute30              => p_ass_attribute30
7091       ,p_segment1                     => l_SOFt_coding_keyflex.segment1
7092       ,p_segment2                     => l_soft_coding_keyflex.segment2
7093       ,p_segment3                     => l_soft_coding_keyflex.segment3
7094       ,p_segment4                     => l_soft_coding_keyflex.segment4
7095       ,p_segment5                     => l_soft_coding_keyflex.segment5
7096       ,p_segment6                     => l_soft_coding_keyflex.segment6
7097       ,p_segment7                     => l_soft_coding_keyflex.segment7
7098       ,p_segment8                     => l_soft_coding_keyflex.segment8
7099       ,p_segment9                     => l_soft_coding_keyflex.segment9
7100       ,p_segment10                    => l_soft_coding_keyflex.segment10
7101       ,p_segment11                    => l_soft_coding_keyflex.segment11
7102       ,p_segment12                    => l_soft_coding_keyflex.segment12
7103       ,p_segment13                    => l_soft_coding_keyflex.segment13
7104       ,p_segment14                    => l_soft_coding_keyflex.segment14
7105       ,p_segment15                    => l_soft_coding_keyflex.segment15
7106       ,p_segment16                    => l_soft_coding_keyflex.segment16
7107       ,p_segment17                    => l_soft_coding_keyflex.segment17
7108       ,p_segment18                    => l_soft_coding_keyflex.segment18
7109       ,p_segment19                    => l_soft_coding_keyflex.segment19
7110       ,p_segment20                    => l_soft_coding_keyflex.segment20
7111       ,p_segment21                    => l_soft_coding_keyflex.segment21
7112       ,p_segment22                    => l_soft_coding_keyflex.segment22
7113       ,p_segment23                    => l_soft_coding_keyflex.segment23
7114       ,p_segment24                    => l_soft_coding_keyflex.segment24
7115       ,p_segment25                    => l_soft_coding_keyflex.segment25
7116       ,p_segment26                    => l_soft_coding_keyflex.segment26
7117       ,p_segment27                    => l_soft_coding_keyflex.segment27
7118       ,p_segment28                    => l_soft_coding_keyflex.segment28
7119       ,p_segment29                    => l_soft_coding_keyflex.segment29
7120       ,p_segment30                    => l_soft_coding_keyflex.segment30
7121       ,p_cag_segment1                 => l_cagr_grades_def.segment1
7122       ,p_cag_segment2                 => l_cagr_grades_def.segment2
7123       ,p_cag_segment3                 => l_cagr_grades_def.segment3
7124       ,p_cag_segment4                 => l_cagr_grades_def.segment4
7125       ,p_cag_segment5                 => l_cagr_grades_def.segment5
7126       ,p_cag_segment6                 => l_cagr_grades_def.segment6
7127       ,p_cag_segment7                 => l_cagr_grades_def.segment7
7128       ,p_cag_segment8                 => l_cagr_grades_def.segment8
7129       ,p_cag_segment9                 => l_cagr_grades_def.segment9
7130       ,p_cag_segment10                => l_cagr_grades_def.segment10
7131       ,p_cag_segment11                 => l_cagr_grades_def.segment11
7132       ,p_cag_segment12                 => l_cagr_grades_def.segment12
7133       ,p_cag_segment13                 => l_cagr_grades_def.segment13
7134       ,p_cag_segment14                 => l_cagr_grades_def.segment14
7135       ,p_cag_segment15                 => l_cagr_grades_def.segment15
7136       ,p_cag_segment16                 => l_cagr_grades_def.segment16
7137       ,p_cag_segment17                 => l_cagr_grades_def.segment17
7138       ,p_cag_segment18                 => l_cagr_grades_def.segment18
7139       ,p_cag_segment19                 => l_cagr_grades_def.segment19
7140       ,p_cag_segment20                => l_cagr_grades_def.segment20
7141       --,p_contract_id                  => p_contract_id
7142       --,p_establishment_id             => p_establishment_id
7143       ,p_collective_agreement_id      => p_collective_agreement_id
7144       ,p_cagr_id_flex_num             => p_cagr_id_flex_num
7145       ,p_cagr_grade_def_id            => l_cagr_grade_def_id
7146       ,p_cagr_concatenated_segments   => l_cagr_concatenated_segments
7147       ,p_soft_coding_keyflex_id       => l_soft_coding_keyflex_id
7148       ,p_comment_id                   => l_comment_id
7149       ,p_effective_start_date         => l_effective_start_date
7150       ,p_effective_end_date           => l_effective_end_date
7151       ,p_concatenated_segments        => l_concatenated_segments
7152       ,p_no_managers_warning          => l_org_now_no_manager_warning
7153       ,p_other_manager_warning        => l_other_manager_warning
7154       ,p_title                        => p_title
7155       );
7156 
7157    p_soft_coding_keyflex_id := l_soft_coding_keyflex_id;
7158 
7159 --
7160 -- check the warning flags again
7161 --
7162     /*if(l_org_now_no_manager_warning) then
7163       --Should add page level warning
7164       --fnd_message.set_name('PER','HR_51124_MMV_NO_MGR_EXIST_ORG');
7165       --hr_utility.raise_error;
7166       hr_errors_api.addErrorToTable
7167       (p_errorfield => null
7168       ,p_errormsg   => fnd_message.get
7169       ,p_warningflag => TRUE);
7170     end if;
7171     if(l_other_manager_warning) then
7172       --Should add page level warning
7173       --fnd_message.set_name('PER','HR_51125_MMV_MRE_MRG_EXIST_ORG');
7174       --hr_utility.raise_error;
7175       hr_errors_api.addErrorToTable
7176       (p_errorfield => null
7177       ,p_errormsg   => fnd_message.get
7178       ,p_warningflag => TRUE);
7179     end if;*/
7180 
7181     --update_emp_asg_criteria again. this is a work around of bug 2493923.
7182     hr_assignment_api.update_emp_asg_criteria
7183       (p_effective_date               => l_effective_date
7184       ,p_datetrack_update_mode        => 'CORRECTION'
7185       ,p_assignment_id                => p_assignment_id
7186       ,p_object_version_number        => l_object_version_number
7187       ,p_grade_id                     => p_grade_id
7188       ,p_special_ceiling_step_id      => p_special_ceiling_step_id
7189       ,p_payroll_id                   => p_payroll_id
7190       ,p_effective_start_date         => l_effective_start_date
7191       ,p_effective_end_date           => l_effective_end_date
7192       ,p_soft_coding_keyflex_id       => l_soft_coding_keyflex_id
7193       ,p_concatenated_segments        => l_concatenated_segments
7194       ,p_people_group_id              => l_people_group_id
7195       ,p_group_name                   => l_group_name
7196       ,p_org_now_no_manager_warning   => l_org_now_no_manager_warning
7197       ,p_other_manager_warning        => l_other_manager_warning
7198       ,p_spp_delete_warning           => l_spp_delete_warning
7199       ,p_entries_changed_warning      => l_entries_changed_warning
7200       ,p_tax_district_changed_warning => l_tax_district_changed_warning
7201       ,p_gsp_post_process_warning     => p_gsp_post_process_warning
7202       );
7203    end if;
7204     --
7205     -- update the assignment status type
7206     --
7207     --
7208     -- chack to see what type of status the new id corresponds to.
7209     --
7210     open status_type;
7211     fetch status_type into l_assignment_status_type;
7212     if status_type%notfound then
7213       close status_type;
7214     else
7215       close status_type;
7216 
7217       --
7218       -- if we have an active assignment type then use the activate_emp_asg api
7219       if l_assignment_status_type='ACTIVE_ASSIGN' then
7220       --
7221       -- active emp assignment
7222       --
7223         hr_utility.set_location('if l_assignment_status_type=ACTIVE_ASSIGN then:'||l_proc,40);
7224         hr_assignment_api.activate_emp_asg
7225         (p_effective_date               => l_effective_date
7226         ,p_datetrack_update_mode        => 'CORRECTION'
7227         ,p_assignment_id                => p_assignment_id
7228         ,p_object_version_number        => l_object_version_number
7229         ,p_assignment_status_type_id    => p_assignment_status_type_id
7230         ,p_change_reason                => p_change_reason
7231         ,p_effective_start_date         => l_effective_start_date
7232         ,p_effective_end_date           => l_effective_end_date);
7233       elsif l_assignment_status_type='ACTIVE_CWK' then
7234       --
7235       --active cwk assignment
7236       --
7237         hr_assignment_api.activate_cwk_asg
7238         (p_effective_date               => l_effective_date
7239         ,p_datetrack_update_mode        => 'CORRECTION'
7240         ,p_assignment_id                => p_assignment_id
7241         ,p_object_version_number        => l_object_version_number
7242         ,p_assignment_status_type_id    => p_assignment_status_type_id
7243         ,p_change_reason                => p_change_reason
7244         ,p_effective_start_date         => l_effective_start_date
7245         ,p_effective_end_date           => l_effective_end_date);
7246       elsif l_assignment_status_type='SUSP_ASSIGN' then
7247       --
7248       -- suspend emp assignment
7249       --
7250         hr_assignment_api.suspend_emp_asg
7251         (p_effective_date               => l_effective_date
7252         ,p_datetrack_update_mode        => 'CORRECTION'
7253         ,p_assignment_id                => p_assignment_id
7254         ,p_object_version_number        => l_object_version_number
7255         ,p_assignment_status_type_id    => p_assignment_status_type_id
7256         ,p_change_reason                => p_change_reason
7257         ,p_effective_start_date         => l_effective_start_date
7258         ,p_effective_end_date           => l_effective_end_date);
7259       elsif l_assignment_status_type='SUSP_CWK_ASG' then
7260       --
7261       -- suspend cwk assignment
7262       --
7263         hr_assignment_api.suspend_cwk_asg
7264         (p_effective_date               => l_effective_date
7265         ,p_datetrack_update_mode        => 'CORRECTION'
7266         ,p_assignment_id                => p_assignment_id
7267         ,p_object_version_number        => l_object_version_number
7268         ,p_assignment_status_type_id    => p_assignment_status_type_id
7269         ,p_change_reason                => p_change_reason
7270         ,p_effective_start_date         => l_effective_start_date
7271         ,p_effective_end_date           => l_effective_end_date);
7272       end if;
7273     end if;
7274     --
7275     p_effective_start_date:=l_effective_start_date;
7276     p_effective_end_date:=l_effective_end_date;
7277 
7278     -- GSP changes
7279      -- get salary information in to ltt_salary_data
7280      hr_pay_rate_gsp_ss.check_grade_ladder_exists(
7281                    p_business_group_id =>  p_organization_id,
7282                    p_effective_date =>  l_effective_date,
7283                    p_grd_ldr_exists_flag => lb_grd_ldr_exists_flag);
7284      -- may be required to add grade or step or ladder change condition
7285      if(lb_grd_ldr_exists_flag) then
7286        hr_utility.set_location('if(lb_grd_ldr_exists_flag) then:'||l_proc,45);
7287        hr_pay_rate_gsp_ss.get_employee_salary(
7288                             p_assignment_id =>  p_assignment_id,
7289                             P_effective_date => l_effective_date,
7290                             p_ltt_salary_data => p_ltt_salary_data);
7291      end if;
7292     -- End of GSP changes
7293  --bug 5032032 fix begin
7294 if p_new_hire_appl_hire = 'Y' then
7295 update_salary_proposal(p_assignment_id,l_effective_date);
7296 end if;
7297 --bug 5032032 fix end
7298   --
7299   -- if we are in validate only mode, rollback
7300   --
7301   if l_validate=TRUE then
7302     hr_utility.set_location('if l_validate=TRUE then:rollback'||l_proc,50);
7303     rollback to validate_assignment;
7304   end if;
7305 
7306 --
7307 -- handle any errors that are raised.
7308 --
7309 exception
7310 when others then
7311   hr_utility.set_location('Exception:Others'||l_proc,555);
7312   rollback to validate_assignment;
7313   --hr_utility.raise_error;
7314   raise;
7315   --hr_message.provide_error;
7316   --Should add page level error
7317   /*hr_errors_api.addErrorToTable
7318   (p_errorfield => null
7319   ,p_errorcode  => hr_message.last_message_number
7320   ,p_errormsg   => hr_message.get_message_text);*/
7321 end update_assignment;
7322 
7323 --
7324 FUNCTION get_assignment(p_transaction_step_id in number)
7325   RETURN ref_cursor IS
7326     csr ref_cursor;
7327 
7328 asgRec hr_transaction_ss.transaction_data;
7329 l_proc   varchar2(72)  := g_package||'get_assignment';
7330 l_old_mgr_flag varchar2(10);
7331 l_old_labour_union_flag varchar2(10);
7332 l_old_organization_id number;
7333 l_old_pay_basis_id    number;
7334 l_old_grade_id           number;
7335 
7336 begin
7337 hr_utility.set_location('Entering:'||l_proc, 5);
7338 
7339  -- Fetch Original Manager Flag
7340  l_old_mgr_flag := hr_transaction_api.get_original_varchar2_value(p_transaction_step_id,'P_MANAGER_FLAG');
7341  -- Fetch Original Labour Union Flag
7342  l_old_labour_union_flag := hr_transaction_api.get_original_varchar2_value(p_transaction_step_id,'P_LABOUR_UNION_MEMBER_FLAG');
7343  l_old_organization_id := hr_transaction_api.get_number_value(p_transaction_step_id,'P_ORGANIZATION_ID');
7344  l_old_pay_basis_id := hr_transaction_api.get_original_number_value(p_transaction_step_id,'P_PAY_BASIS_ID');
7345  l_old_grade_id := hr_transaction_api.get_original_number_value(p_transaction_step_id,'P_GRADE_ID');
7346 
7347 hr_transaction_ss.get_transaction_data
7348   (p_transaction_step_id => p_transaction_step_id
7349   ,p_transaction_data    => asgRec);
7350 
7351   IF (asgRec.name.count < 108) THEN
7352   hr_utility.set_location('IF (asgRec.name.count < 108) THEN:'||l_proc,10);
7353   BEGIN
7354     hr_utility.set_location('Entering For Loop:'||l_proc,15);
7355     FOR I in asgRec.name.count+1 .. 108 LOOP
7356         asgRec.name(I) := null;
7357         asgRec.number_value(I) := null;
7358         asgRec.varchar2_value(I) := null;
7359         asgRec.date_value(I) := null;
7360     END LOOP;
7361     hr_utility.set_location('Exiting For Loop:'||l_proc,15);
7362   END;
7363   END IF;
7364 
7365 open csr for
7366 SELECT
7367              asgRec.number_value(1) assignment_id,
7368              asgRec.number_value(8) business_group_id,
7369              asgRec.number_value(7) organization_id,
7370              org.name organization_name,
7371              asgRec.number_value(2) object_version_number,
7372              asgRec.number_value(12) position_id,
7373              pos.name position_name,
7374              asgRec.number_value(14) job_id,
7375              job.name job_name,
7376              asgRec.number_value(16) grade_id,
7377              grade.name grade_name,
7378              asgRec.number_value(18) location_id,
7379              asgRec.varchar2_value(19) employment_category,
7380              asgRec.number_value(20) supervisor_id,
7381              asgRec.varchar2_value(21) manager_flag,
7382              asgRec.number_value(22) normal_hours,
7383              asgRec.varchar2_value(23) frequency,
7384              asgRec.varchar2_value(24) time_normal_finish,
7385              asgRec.varchar2_value(25) time_normal_start,
7386              asgRec.number_value(28) special_ceiling_step_id,
7387              asgRec.number_value(29) assignment_status_type_id,
7388              asgRec.varchar2_value(30) change_reason,
7389              asgRec.varchar2_value(31) ass_attribute_category,
7390              asgRec.varchar2_value(32) ass_attribute1,
7391              asgRec.varchar2_value(33) ass_attribute2,
7392              asgRec.varchar2_value(34) ass_attribute3,
7393              asgRec.varchar2_value(35) ass_attribute4,
7394              asgRec.varchar2_value(36) ass_attribute5,
7395              asgRec.varchar2_value(37) ass_attribute6,
7396              asgRec.varchar2_value(38) ass_attribute7,
7397              asgRec.varchar2_value(39) ass_attribute8,
7398              asgRec.varchar2_value(40) ass_attribute9,
7399              asgRec.varchar2_value(41) ass_attribute10,
7400              asgRec.varchar2_value(42) ass_attribute11,
7401              asgRec.varchar2_value(43) ass_attribute12,
7402              asgRec.varchar2_value(44) ass_attribute13,
7403              asgRec.varchar2_value(45) ass_attribute14,
7404              asgRec.varchar2_value(46) ass_attribute15,
7405              asgRec.varchar2_value(47) ass_attribute16,
7406              asgRec.varchar2_value(48) ass_attribute17,
7407              asgRec.varchar2_value(49) ass_attribute18,
7408              asgRec.varchar2_value(50) ass_attribute19,
7409              asgRec.varchar2_value(51) ass_attribute20,
7410              asgRec.varchar2_value(52) ass_attribute21,
7411              asgRec.varchar2_value(53) ass_attribute22,
7412              asgRec.varchar2_value(54) ass_attribute23,
7413              asgRec.varchar2_value(55) ass_attribute24,
7414              asgRec.varchar2_value(56) ass_attribute25,
7415              asgRec.varchar2_value(57) ass_attribute26,
7416              asgRec.varchar2_value(58) ass_attribute27,
7417              asgRec.varchar2_value(59) ass_attribute28,
7418              asgRec.varchar2_value(60) ass_attribute29,
7419              asgRec.varchar2_value(61) ass_attribute30,
7420              asgRec.number_value(62) people_group_id,
7421              asgRec.number_value(63) soft_coding_keyflex_id,
7422              asgRec.number_value(66) sal_review_period,
7423              asgRec.varchar2_value(67) sal_review_period_frequency,
7424              asgRec.number_value(71) notice_period,
7425              asgRec.varchar2_value(73) employee_category,
7426              asgRec.varchar2_value(74) work_at_home,
7427              asgRec.varchar2_value(75) job_post_source_name,
7428              asgRec.number_value(76) perf_review_period,
7429              asgRec.varchar2_value(77) perf_review_period_frequency,
7430              asgRec.number_value(64) payroll_id,
7431              asgRec.number_value(65) pay_basis_id,
7432              asgRec.number_value(80) establishment_id,
7433              asgRec.varchar2_value(88) title,
7434              asgRec.varchar2_value(89) project_title,
7435              asgRec.varchar2_value(90) source_type,
7436              asgRec.varchar2_value(91) vendor_assignment_number,
7437              asgRec.varchar2_value(92) vendor_employee_number,
7438              asgRec.number_value(84) default_code_comb_id,
7439              asgRec.number_value(85) set_of_books_id,
7440              asgRec.number_value(86) vendor_id,
7441              vendor.vendor_name vendor_name,
7442              asgRec.varchar2_value(87) assignment_type,
7443              asgRec.number_value(104) grade_ladder_id,
7444              pgm.name grade_ladder_name,
7445              asgRec.number_value(105) po_header_id,
7446              asgRec.number_value(106) po_line_id,
7447              asgRec.number_value(107) vendor_site_id,
7448              po_heads.segment1 po_number,
7449              po_lines.line_num po_line_number,
7450              vend_sits.vendor_site_code vendor_site_name,
7451              asgRec.DATE_VALUE(108) projected_assignment_end,
7452              ---  Position Defaulting changes
7453              asgRec.number_value(69) probation_period,
7454              asgRec.varchar2_value(70) probation_unit,
7455              asgRec.DATE_VALUE(68) date_probation_end,
7456              asgRec.varchar2_value(72) notice_period_uom,
7457              asgRec.varchar2_value(26) bargaining_unit_code,
7458              hl_bargaining_unit.meaning bargaining_unit_name,
7459              asgRec.varchar2_value(27) labour_union_member_flag,
7460              l_old_mgr_flag          old_manager_flag,
7461              l_old_labour_union_flag old_labour_union_flag,
7462              l_old_organization_id     old_organization_id,
7463              l_old_pay_basis_id        old_pay_basis_id,
7464              l_old_grade_id	old_grade_id
7465              from
7466                   hr_api_transaction_steps ts
7467                  ,hr_api_transaction_values otv, hr_all_organization_units_tl  org
7468                  ,hr_api_transaction_values jtv, per_jobs_tl job
7469                  ,hr_api_transaction_values ptv, hr_all_positions_f_tl pos
7470                  ,hr_api_transaction_values gtv, per_grades_tl  grade
7471                  ,hr_api_transaction_values vtv, po_vendors vendor
7472                  ,hr_api_transaction_values gltv, ben_pgm_f pgm
7473                  ,hr_api_transaction_values htv, po_headers_all po_heads
7474                  ,hr_api_transaction_values ltv, po_lines_all po_lines
7475                  ,hr_api_transaction_values stv, po_vendor_sites_all vend_sits
7476                  ,hr_api_transaction_values btv, hr_lookups hl_bargaining_unit
7477 
7478              where
7479 
7480                   ts.transaction_step_id = p_transaction_step_id
7481                   and otv.transaction_step_id(+) = ts.transaction_step_id
7482                   and otv.name(+) = 'P_ORGANIZATION_ID'
7483                   and otv.number_value = org.organization_id(+)
7484                   and org.language(+) = userenv('LANG')
7485 
7486                   and jtv.transaction_step_id(+) = ts.transaction_step_id
7487                   and jtv.name(+) = 'P_JOB_ID'
7488                   and jtv.number_value = job.job_id(+)
7489                   and job.language(+) = userenv('LANG')
7490 
7491                   and ptv.transaction_step_id(+) = ts.transaction_step_id
7492                   and ptv.name(+) = 'P_POSITION_ID'
7493                   and ptv.number_value = pos.position_id(+)
7494                   and pos.language(+) = userenv('LANG')
7495 
7496                   and gtv.transaction_step_id(+) = ts.transaction_step_id
7497                   and gtv.name(+) = 'P_GRADE_ID'
7498                   and gtv.number_value = grade.grade_id(+)
7499                   and grade.language(+) = userenv('LANG')
7500 
7501                   and vtv.transaction_step_id(+) = ts.transaction_step_id
7502                   and vtv.name(+) = 'P_VENDOR_ID'
7503                   and vtv.number_value = vendor.vendor_id(+)
7504 
7505                   and gltv.transaction_step_id(+) = ts.transaction_step_id
7506                   and gltv.name(+) = 'P_GRADE_LADDER_PGM_ID'
7507                   and gltv.number_value = pgm.pgm_id(+)
7508 
7509                   and htv.transaction_step_id(+) = ts.transaction_step_id
7510                   and htv.name(+) = 'P_PO_HEADER_ID'
7511                   and htv.number_value = po_heads.po_header_id(+)
7512 
7513                   and ltv.transaction_step_id(+) = ts.transaction_step_id
7514                   and ltv.name(+) = 'P_PO_LINE_ID'
7515                   and ltv.number_value = po_lines.po_line_id(+)
7516 
7517                   and stv.transaction_step_id(+) = ts.transaction_step_id
7518                   and stv.name(+) = 'P_VENDOR_SITE_ID'
7519                   and stv.number_value = vend_sits.vendor_site_id(+)
7520 
7521                   and btv.transaction_step_id(+) = ts.transaction_step_id
7522                   and btv.name(+) = 'P_BARGAINING_UNIT_CODE'
7523                   and btv.number_value =  hl_bargaining_unit.lookup_code(+)
7524                   and hl_bargaining_unit.lookup_type(+) = 'BARGAINING_UNIT_CODE'
7525                   and hl_bargaining_unit.enabled_flag(+) = 'Y'
7526                   and (trunc(sysdate) between nvl(hl_bargaining_unit.start_date_active(+), trunc(sysdate))
7527                   and nvl(hl_bargaining_unit.end_date_active(+), trunc(sysdate)));
7528 
7529 
7530   hr_utility.set_location('Exiting:'||l_proc, 20);
7531   return csr;
7532 END;
7533 
7534 FUNCTION get_rec_cnt
7535   RETURN NUMBER IS
7536   Cnt NUMBER:= 1;
7537 BEGIN
7538   hr_utility.set_location('Entering:get_rec_cnt', 5);
7539   hr_utility.set_location('Exiting:get_rec_cnt', 10);
7540   RETURN Cnt;
7541 END;
7542 --
7543 
7544 FUNCTION get_po_number(p_po_header_id in number)
7545    RETURN VARCHAR2 is
7546 cursor csr_po_number(p_id in number) is
7547 -- 4894113: R12 performance repository related fix
7548 -- ISSUE : Shared memory size 2,413,494
7549 -- RESOLUTION:
7550 -- 1.Since we are interested only in  poh.segment1 we can
7551 -- drop the rest of the columns and unwanted WHERE clauses from the
7552 -- view po_temp_labor_headers_v
7553 -- 2. The SQL below we have retained all the WHERE clauses
7554 -- dealing with the table po_headers_all, but dropped the rest
7555 -- which are not required in this case.
7556 
7557 SELECT poh.segment1 po_number
7558 FROM
7559     po_headers_all poh
7560 WHERE
7561     poh.po_header_id = p_id
7562     AND poh.type_lookup_code = 'STANDARD'
7563     AND poh.authorization_status IN ('APPROVED', 'PRE-APPROVED')
7564     AND poh.approved_flag = 'Y'
7565     AND poh.enabled_flag = 'Y'
7566     AND NVL(poh.cancel_flag, 'N') <> 'Y'
7567     AND NVL(poh.frozen_flag, 'N') <> 'Y'
7568     AND poh.org_id IS NOT NULL
7569     AND EXISTS
7570     (
7571     SELECT
7572         NULL
7573     FROM po_lines_all pol ,
7574         po_line_types_b polt
7575     WHERE pol.po_header_id = poh.po_header_id
7576         AND NVL(pol.cancel_flag, 'N') <> 'Y'
7577         AND pol.line_type_id = polt.line_type_id
7578         AND polt.purchase_basis = 'TEMP LABOR'
7579     );
7580 
7581 --select po_number
7582 --from po_temp_labor_headers_v
7583 --where po_header_id = p_id;
7584 
7585 
7586 l_po_number po_temp_labor_headers_v.po_number%TYPE;
7587 l_proc   varchar2(72)  := g_package||'get_po_number';
7588 
7589 BEGIN
7590   hr_utility.set_location('Entering:'||l_proc, 5);
7591   open csr_po_number(p_po_header_id);
7592   fetch csr_po_number into l_po_number;
7593   close csr_po_number;
7594 
7595   hr_utility.set_location('Exiting:'||l_proc, 15);
7596   return l_po_number;
7597 END;
7598 
7599 FUNCTION get_po_line_nuber(p_po_line_id in number)
7600    RETURN number is
7601 cursor csr_po_line_number(p_id in number) is
7602 select line_number
7603 from po_temp_labor_lines_v
7604 where po_line_id = p_id;
7605 
7606 l_po_line_number number;
7607 l_proc   varchar2(72)  := g_package||'get_po_line_nuber';
7608 
7609 BEGIN
7610   hr_utility.set_location('Entering:'||l_proc, 5);
7611   open csr_po_line_number(p_po_line_id);
7612   fetch csr_po_line_number into l_po_line_number;
7613   close csr_po_line_number;
7614 
7615 
7616   hr_utility.set_location('Exiting:'||l_proc, 15);
7617   return l_po_line_number;
7618 END;
7619 
7620 FUNCTION get_vend_site_name(p_vendor_site_id in number)
7621    RETURN VARCHAR2 is
7622 cursor csr_vendor_site_name(p_id in number) is
7623 select vendor_site_code
7624 from po_vendor_sites_all
7625 where vendor_site_id  = p_id;
7626 
7627 l_vendor_site_name po_vendor_sites_all.vendor_site_code%TYPE;
7628 l_proc   varchar2(72)  := g_package||'get_vend_site_name';
7629 
7630 BEGIN
7631   hr_utility.set_location('Entering:'||l_proc, 5);
7632   open csr_vendor_site_name(p_vendor_site_id);
7633   fetch csr_vendor_site_name into l_vendor_site_name;
7634   close csr_vendor_site_name;
7635 
7636 
7637   hr_utility.set_location('Exiting:'||l_proc, 15);
7638   return l_vendor_site_name;
7639 END;
7640 
7641 -- End of NTF change
7642 
7643 -- Decode funtion for probation_end_date to display it in user
7644 -- preference format
7645 FUNCTION get_probation_end_date(p_probation_end_date in varchar2)
7646    RETURN varchar2 is
7647 l_dateformat   VARCHAR2(30);
7648 BEGIN
7649 
7650  fnd_profile.get('ICX_DATE_FORMAT_MASK',l_dateformat);
7651  return to_char(to_date(p_probation_end_date, l_dateformat),l_dateformat);
7652  Exception
7653  WHEN OTHERS THEN
7654    return to_char(to_date(p_probation_end_date,'RRRR/MM/DD'), l_dateformat);
7655 END;
7656 
7657 --
7658 end hr_process_assignment_ss;