[Home] [Help]
PACKAGE BODY: APPS.HR_COMP_OUTCOME_PROFILE_SS
Source
6 g_person_id per_all_people_f.person_id%type;
1 PACKAGE BODY HR_COMP_OUTCOME_PROFILE_SS AS
2 /* $Header: hrcorwrs.pkb 120.0 2005/05/30 23:23:03 appldev noship $ */
3 --
4 -- Private globals
5 g_package constant varchar2(30) := 'HR_COMP_OUTCOME_PROFILE_SS';
7 g_business_group_id per_all_people_f.business_group_id%type;
8 g_language_code varchar2(5) default null;
9 --
10 g_invalid_entry exception;
11 g_invalid_outcome exception;
12 --
13 --
14 cursor g_csr_get_preupd_cmpocm_rec(p_comp_element_outcome_id in number) is
15 select cvl.name
16 ,cmpe.COMP_ELEMENT_OUTCOME_ID
17 ,cmpe.object_version_number
18 ,cmpe.COMPETENCE_ELEMENT_ID
19 ,cmpe.OUTCOME_ID
20 ,cmpe.date_from
21 ,cmpe.date_to
22 from per_comp_element_outcomes cmpe
23 ,per_competence_outcomes_VL cvl
24 where cmpe.comp_element_outcome_id = p_comp_element_outcome_id
25 and cmpe.outcome_id = cvl.outcome_id
26 and trunc(sysdate) between nvl(cmpe.date_from, trunc(sysdate))
27 and nvl(cmpe.date_to, trunc(sysdate));
28 cursor get_out_name(p_outcome_id in number) is
29 select name
30 from per_competence_outcomes_vl
31 where outcome_id = p_outcome_id;
32 cursor get_prev_start_date(p_comp_element_outcome_id in number) is
33 select date_from
34 from per_comp_element_outcomes
35 where comp_element_outcome_id = p_comp_element_outcome_id;
36 cursor get_mode(p_transaction_step_id in number) is
37 select varchar2_value
38 from hr_api_transaction_values
39 where transaction_step_id = p_transaction_step_id and name = 'P_CHANGE_MODE';
40 --
41 --
42 -- ------------------------------------------------------------------------
43 -- ---------------------<api_validate_compout_record>-------------------
44 -- ------------------------------------------------------------------------
45 -- Purpose: This private signature will validate data entered by calling api's
46 --
47 Procedure api_validate_compout_record
48 (p_validate in boolean default null
49 ,p_competence_element_id in number DEFAULT null
50 ,p_competence_id IN NUMBER DEFAULT null
51 ,p_outcome_id in number default null
52 ,p_change_mode in varchar2 default null
53 ,p_comp_element_outcome_id in number default null
54 ,p_preupd_obj_vers_num in number default null
55 ,p_date_from in varchar2 default null
56 ,p_date_to in varchar2 default null
57 ,p_date_from_date_type out nocopy date
58 ,p_date_to_date_type out nocopy date
59 ,p_person_id IN number
60 ,p_error_message out nocopy long);
61 --
62 --
63 -------------------<check_delete_rec>----------------------------
64 -- purpose: This will delete the delete mark rec in case it is
65 -- selected afterwords--
66 Procedure check_delete_rec(p_item_type IN varchar2
67 ,p_item_key IN varchar2
68 ,p_actid IN varchar2
69 ,p_person_id IN number
70 ,p_outcome_id IN number);
71 -- Purpose
72 --
73 Procedure process_upd_api
74 (p_comp_element_outcome_id IN number
75 ,p_to_date IN DATE
76 ,p_object_version_number IN number
77 ) ;
78 -- ------------------------------------------------------------------------
79 -- ---------------------<check_if_cmptnce_rec_changed>---------------------
80 -- ------------------------------------------------------------------------
81 -- Purpose: This private signature will compare the values of the rec with the
82 -- values before update.
83 -- The caller has made sure that this procedure is called only on an
84 -- update or upgrade to new proficiency level mode.
85 -- IF the proficiency level is the same as pre-update value, it
86 -- will set an output parm to true if the p_change_mode is
87 -- upgrade a proficiency level.
88 -- ------------------------------------------------------------------------
89 Procedure check_if_cmpocm_rec_changed
90 (p_comp_element_outcome_id in number
91 ,p_competence_element_id in number default null
92 ,p_competence_id in number default null
93 ,p_outcome_id in number
94 ,p_date_from in date default null
95 ,p_date_to in date default null
96 ,p_change_mode in varchar2
97 ,p_ignore_warning in varchar2 default null
98 ,p_rec_changed out nocopy boolean);
99 --
100 -- ---------------------------------------------------------------------------
101 --
102 --
103 -- ---------------------------- < writeTo_transTbl > -----------------------------
104 -- ---------------------------------------------------------------------------
105 -- Purpose: This private procedure to write into trans table
106 -- the transaction step is created if one doesn't exits
107 -- ---------------------------------------------------------------------------
108 --
109 Procedure writeTo_transTbl(
110 p_item_type IN wf_items.item_type%type
111 ,p_item_key IN wf_items.item_key%type
112 ,p_actid IN Number
113 ,p_login_person_id IN Number
114 ,p_trans_id IN Number
115 ,p_trans_step_id IN OUT NOCOPY Number
116 ,p_api_name IN Varchar2
117 ,p_comp_element_outcome_id IN Number Default Null
118 ,p_ovn IN Number Default Null
119 ,p_date_from IN Varchar2 Default Null
120 ,p_date_to IN Varchar2 Default Null
121 ,p_comp_element_id IN Number Default Null
122 ,p_outcome_id IN Varchar2 Default Null
123 ,p_outcome_name IN Varchar2 Default Null
124 ,p_change_mode IN Varchar2 Default Null
125 ,p_person_id IN VARCHAR2 DEFAULT null
126 ,p_sys_generated IN Varchar2 DEFAULT null
127 ,p_upg_from_rec_id IN Number Default 'N'
128 ,p_competence_id IN NUMBER DEFAULT null) is
129 --
130 l_trans_tbl transaction_table1;
131 l_count Number:=0;
132 x_trans_ovn Number;
133 l_review_region Varchar2(200);
134 l_comp_element_outcome_id per_comp_element_outcomes.comp_element_outcome_id%type;
135 l_proc varchar2(200);
136 Begin
140 IF (p_comp_element_outcome_id = -1) Then
137 l_proc := g_package || 'writeTo_transTbl';
138 hr_utility.set_location(' Entering:' || l_proc,5);
139 --
141 hr_utility.set_location(' Entering:' || l_proc,10);
142 l_comp_element_outcome_id := null;
143 else
144 hr_utility.set_location(' Entering:' || l_proc,15);
145 l_comp_element_outcome_id := p_comp_element_outcome_id;
146 END if;
147 hr_utility.set_location(l_proc,20);
148 --
149 If p_trans_step_id is null then
150 hr_utility.set_location(l_proc,25);
151 hr_transaction_api.create_transaction_step
152 (p_validate => false
153 ,p_creator_person_id => p_login_person_id
154 ,p_transaction_id => p_trans_id
155 ,p_api_name => p_api_name
156 ,p_item_type => p_item_type
157 ,p_item_key => p_item_key
158 ,p_activity_id => p_actid
159 ,p_transaction_step_id => p_trans_step_id
160 ,p_object_version_number => x_trans_ovn);
161 --
162 End if;
163 hr_utility.set_location(l_proc,30);
164 l_count := 1;
165 l_trans_tbl(l_count).param_name := 'P_COMP_ELEMENT_OUTCOME_ID';
166 l_trans_tbl(l_count).param_value := l_comp_element_outcome_id;
167 l_trans_tbl(l_count).param_data_type := 'NUMBER';
168 --
169 l_count := l_count + 1;
170 l_trans_tbl(l_count).param_name := 'P_OBJECT_VERSION_NUMBER';
171 l_trans_tbl(l_count).param_value := p_ovn;
172 l_trans_tbl(l_count).param_data_type := 'NUMBER';
173 --
174 l_count := l_count + 1;
175 l_trans_tbl(l_count).param_name := 'P_DATE_FROM';
176 l_trans_tbl(l_count).param_value := p_date_from;
177 l_trans_tbl(l_count).param_data_type := 'DATE';
178 --
179 l_count := l_count + 1;
180 l_trans_tbl(l_count).param_name := 'P_OUTCOME_ID';
181 l_trans_tbl(l_count).param_value := p_outcome_id;
182 l_trans_tbl(l_count).param_data_type := 'NUMBER';
183 --
184 l_count := l_count + 1;
185 l_trans_tbl(l_count).param_name := 'P_OUTCOME_NAME';
186 l_trans_tbl(l_count).param_value := p_outcome_name;
187 l_trans_tbl(l_count).param_data_type := 'VARCHAR2';
188 --
189 l_count := l_count + 1;
190 l_trans_tbl(l_count).param_name := 'P_COMPETENCE_ELEMENT_ID';
191 l_trans_tbl(l_count).param_value := p_comp_element_id;
192 l_trans_tbl(l_count).param_data_type := 'NUMBER';
193 --
194 l_count := l_count + 1;
195 l_trans_tbl(l_count).param_name := 'P_DATE_TO';
196 l_trans_tbl(l_count).param_value := p_date_to;
197 l_trans_tbl(l_count).param_data_type := 'DATE';
198 --
199 l_count := l_count + 1;
200 l_trans_tbl(l_count).param_name := 'P_SYSTEM_GENERATED';
201 l_trans_tbl(l_count).param_value := p_sys_generated;
202 l_trans_tbl(l_count).param_data_type := 'VARCHAR2';
203 --
204 l_count := l_count + 1;
205 l_trans_tbl(l_count).param_name := 'P_PERSON_ID';
206 l_trans_tbl(l_count).param_value := p_person_id;
207 l_trans_tbl(l_count).param_data_type := 'NUMBER';
208 --
209 l_count := l_count + 1;
210 l_trans_tbl(l_count).param_name := 'P_COMPETENCE_ID';
211 l_trans_tbl(l_count).param_value := p_competence_id;
212 l_trans_tbl(l_count).param_data_type := 'NUMBER';
213 --
214 If p_upg_from_rec_id <> -1 then
215 hr_utility.set_location(l_proc,35);
216 l_count := l_count + 1;
217 l_trans_tbl(l_count).param_name := 'P_UPGRADED_FROM_REC_ID';
218 l_trans_tbl(l_count).param_value := p_upg_from_rec_id;
219 l_trans_tbl(l_count).param_data_type := 'NUMBER';
220 End if;
221 --
222 l_count := l_count + 1;
223 l_trans_tbl(l_count).param_name := 'P_REVIEW_ACTID';
224 l_trans_tbl(l_count).param_value := p_actid;
225 l_trans_tbl(l_count).param_data_type := 'VARCHAR2';
226 --
227 l_review_region := wf_engine.GetActivityAttrText
228 (itemtype => p_item_type
229 ,itemkey => p_item_key
230 ,actid => p_actid
231 ,aname => 'HR_REVIEW_REGION_ITEM'
232 ,ignore_notfound => true);
233 --
234 l_count := l_count + 1;
235 l_trans_tbl(l_count).param_name := 'P_REVIEW_PROC_CALL';
236 l_trans_tbl(l_count).param_data_type := 'VARCHAR2';
237 l_trans_tbl(l_count).param_value := l_review_region;
238 hr_utility.set_location(l_proc,40);
239 save_transaction_step(p_item_type => p_item_type
240 ,p_item_key => p_item_key
241 ,p_actid => p_actid
242 ,p_login_person_id => p_login_person_id
243 ,p_transaction_step_id => p_trans_step_id
244 ,p_api_name => p_api_name
245 ,p_transaction_data => l_trans_tbl);
246 --
247 --
248 End writeTo_transTbl;
249 --
250 -- ---------------------------------------------------------------------------
251 -- ---------------------------- < comp_not_exists > --------------------------
252 -- ---------------------------------------------------------------------------
253 -- Purpose: This function is being used for filtering current session changes
254 -- and pending approval changes
255 -- ---------------------------------------------------------------------------
256 -- ---------------------------------------------------------------------------
257 -- ---------------------------- < process_save > -----------------------------
258 -- ---------------------------------------------------------------------------
259 -- Purpose: This private procedure saves the competence outcome record either
260 -- to the database or to the transaction table depending on the
261 -- workflow setting.
262 -- ---------------------------------------------------------------------------
263 --
264 Procedure process_save
265 (p_item_type in wf_items.item_type%type
266 ,p_item_key in wf_items.item_key%type
267 ,p_actid in varchar2
268 ,p_change_mode in varchar2 default null
269 ,p_comp_element_outcome_id in number default -1
270 ,p_competence_id IN NUMBER DEFAULT null
271 ,p_competence_element_id in number default null
272 ,p_preupd_obj_vers_num in number default null
273 ,p_outcome_id in number default null
274 ,p_outcome_name in varchar2 default null
275 ,p_date_from in varchar2 default null
276 ,p_date_to in varchar2 default null
277 ,p_prev_start_date in varchar2 default null
278 ,p_ignore_warning in varchar2 default null
279 ,p_transaction_step_id in out nocopy number
280 ,p_person_id IN number DEFAULT null
281 ,p_error_message out nocopy long) is
282 CURSOR getobjno (p_comp_element_outcome_id IN number) is
283 SELECT object_version_number FROM per_comp_element_outcomes
284 WHERE comp_element_outcome_id = p_comp_element_outcome_id;
285 --
286 l_transaction_id number default null;
287 l_transaction_step_id number default null;
291 x_date_to date default null;
288 l_result varchar2(100) default null;
289 l_user_date_format varchar2(200) default null;
290 x_date_from date default null;
292 l_preupd_cmpocm_row g_csr_get_preupd_cmpocm_rec%rowtype;
293 --
294 l_date_from date default null;
295 l_obj_ver_num number default null;
296 l_comp_element_outcome_id per_comp_element_outcomes.comp_element_outcome_id%type;
297 l_trans_obj_vers_num NUMBER DEFAULT null;
298 l_proc varchar2(200) ;
299 --
300 ----------------------------------
301 Begin
302 l_obj_ver_num := 1;
303 l_proc := g_package || 'process_save';
304 hr_utility.set_location(' Entering:' || l_proc,5);
305 l_user_date_format := g_date_format ;
306 l_date_from := to_date(p_date_from,l_user_date_format);
307 l_obj_ver_num := p_preupd_obj_vers_num;
308 --
309 IF p_comp_element_outcome_id IS NULL then
310 hr_utility.set_location(' Entering:' || l_proc,10);
311 l_comp_element_outcome_id := -1;
312 Else
313 l_comp_element_outcome_id := p_comp_element_outcome_id;
314 IF p_preupd_obj_vers_num IS NULL then
315 FOR ovn IN getobjno (p_comp_element_outcome_id => p_comp_element_outcome_id)
316 loop
317 l_obj_ver_num := ovn.object_version_number;
318 END loop;
319 END if;
320 END if;
321 hr_utility.set_location(' Entering:' || l_proc,20);
322 api_validate_compout_record
323 (p_validate => TRUE
324 ,p_competence_element_id => p_competence_element_id
325 ,p_outcome_id => p_outcome_id
326 ,p_change_mode => p_change_mode
327 ,p_comp_element_outcome_id => l_comp_element_outcome_id
328 ,p_preupd_obj_vers_num => l_obj_ver_num
329 ,p_date_from => p_date_from
330 ,p_date_to => p_date_to
331 ,p_date_from_date_type => x_date_from
332 ,p_date_to_date_type => x_date_to
333 ,p_person_id => p_person_id
334 ,p_error_message => p_error_message);
335 if p_error_message is not null then
336 Return;
337 end if;
338 hr_utility.set_location(' Entering:' || l_proc,25);
339 l_transaction_id := hr_transaction_ss.get_transaction_id(p_item_type => p_item_type
340 ,p_item_key => p_item_key);
341 --
342 IF l_transaction_id is null THEN
343 hr_utility.set_location(' Entering:' || l_proc,30);
344 -- Start a Transaction
345 hr_transaction_ss.start_transaction
346 (itemtype => p_item_type
347 ,itemkey => p_item_key
348 ,actid => to_number(p_actid)
349 ,funmode => 'RUN'
350 ,p_login_person_id => fnd_global.employee_id
351 ,result => l_result);
352 hr_utility.set_location(' Entering:' || l_proc,40);
353 l_transaction_id := hr_transaction_ss.get_transaction_id
354 (p_item_type => p_item_type
355 ,p_item_key => p_item_key);
356 END IF;
357 --
358 IF p_transaction_step_id IS NULL then
359 hr_utility.set_location(' Entering:' || l_proc,50);
360 hr_transaction_api.create_transaction_step
361 (p_validate => false
362 ,p_creator_person_id => fnd_global.employee_id
363 ,p_transaction_id => l_transaction_id
364 ,p_api_name => g_api_name
365 ,p_item_type => p_item_type
366 ,p_item_key => p_item_key
367 ,p_activity_id => to_number(p_actid)
368 ,p_transaction_step_id => p_transaction_step_id
369 ,p_object_version_number => l_trans_obj_vers_num);
370 end if;
371 --
372 hr_utility.set_location(' Entering:' || l_proc,60);
373 writeTo_transTbl (
374 p_item_type => p_item_type
375 ,p_item_key => p_item_key
376 ,p_actid => To_Number(p_actid)
377 ,p_login_person_id => fnd_global.employee_id
378 ,p_trans_id => l_transaction_id
379 ,p_trans_step_id => p_transaction_step_id
380 ,p_api_name => g_api_name
381 ,p_comp_element_outcome_id => l_comp_element_outcome_id
382 ,p_competence_id => p_competence_id
383 ,p_ovn => l_obj_ver_num
384 ,p_date_from => p_date_from
385 ,p_date_to => p_date_to
386 ,p_comp_element_id => p_competence_element_id
387 ,p_outcome_id => p_outcome_id
388 ,p_outcome_name => p_outcome_name
389 ,p_change_mode => p_change_mode
390 ,p_person_id => p_person_id
391 ,p_sys_generated => 'N'
392 ,p_upg_from_rec_id => l_comp_element_outcome_id);
393 --
394 EXCEPTION
395 When g_invalid_entry then
396 hr_utility.set_location(' Entering:' || l_proc,70);
397 raise g_invalid_entry;
398 --
399 WHEN hr_comp_outcome_profile_ss.g_data_err THEN
400 hr_utility.set_location(' Entering:' || l_proc,80);
401 raise hr_utility.hr_error;
402 --
403 WHEN hr_comp_outcome_profile_ss.g_access_violation_err THEN
404 hr_utility.set_location(' Entering:' || l_proc,90);
405 raise hr_utility.hr_error;
406 --
407 When others THEN
408 hr_utility.set_location(' Entering:' || l_proc,100);
409 raise g_invalid_entry ;
410 End process_save;
411 --
412 -- ---------------------------------------------------------------------------
413 --
414 Procedure call_process_api (
415 p_validate in boolean default false
416 ,p_competence_element_id IN number
417 ,p_new_competence_element_id IN number
418 ,p_competence_id IN number
419 ,p_item_type IN hr_api_transaction_steps.item_type%type
420 ,p_item_key IN hr_api_transaction_steps.item_key%type
421 ,p_activity_id IN hr_api_transaction_steps.ACTIVITY_ID%type
422 ,p_person_id IN Number
423 ,p_effective_date IN Date DEFAULT trunc(sysdate)) is
424 --
425 l_transaction_step_id hr_api_transaction_steps.transaction_step_id%type;
426 --
427 CURSOR get_txn_step_id (p_comp_id IN number, p_comp_ele_id IN number,
428 p_eff_date IN DATE DEFAULT null, p_person_id IN number) is
429 Select ts.transaction_step_id
430 FROM hr_api_transaction_steps ts,
431 hr_api_transaction_values tv,
432 hr_api_transaction_values tv1,
433 hr_api_transaction_values tv2,
434 hr_api_transaction_values tv3,
435 hr_api_transaction_values tv4
436 Where ts.transaction_step_id = tv.transaction_step_id
437 AND ts.item_type = p_item_type
438 AND ts.item_key = p_item_key
439 AND ts.activity_id = p_activity_id
440 AND ts.API_NAME = 'HR_COMP_OUTCOME_PROFILE_SS.PROCESS_API'
441 And tv4.transaction_step_id = ts.transaction_step_id
442 And tv4.NAME = 'P_PERSON_ID'
443 AND tv4.Number_Value = p_person_id
444 AND tv1.transaction_step_id(+) = ts.transaction_step_id
445 AND tv.NAME = 'P_COMPETENCE_ID'
446 AND tv.number_value = p_comp_id
447 AND tv1.NAME(+) = 'P_COMPETENCE_ELEMENT_ID'
448 AND tv1.number_value(+) = p_comp_ele_id
449 AND tv2.transaction_step_id = ts.transaction_step_id
450 AND tv2.NAME = 'P_DATE_FROM'
451 AND tv3.transaction_step_id = ts.transaction_step_id
452 AND tv3.NAME = 'P_DATE_TO';
453 -- AND nvl(p_eff_date,sysdate) BETWEEN tv2.date_value AND nvl(tv3.date_value,sysdate);
454 ---
455 Cursor get_enddate_outcome_ids(p_comp_ele_id IN number) is
456 Select ceo.comp_element_outcome_id ,ts.transaction_step_id,ceo.object_version_number
457 FROM
458 per_comp_element_outcomes ceo,
459 hr_api_transaction_steps ts,
460 hr_api_transaction_values tv
461 where
462 ceo.competence_element_id = p_comp_ele_id
463 AND ts.item_type = p_item_type
464 AND ts.item_key = p_item_key
465 AND ts.activity_id = p_activity_id
466 AND ts.transaction_step_id = tv.transaction_step_id
467 AND tv.NAME = 'P_COMP_ELEMENT_OUTCOME_ID'
468 AND ts.API_NAME = 'HR_COMP_OUTCOME_PROFILE_SS.DELETE'
469 AND tv.number_value = ceo.COMP_ELEMENT_OUTCOME_ID;
470 --
471 Cursor get_unchngd_outcomes(p_comp_ele_id IN NUMBER ) is
472 Select co.outcome_id
473 ,ceo.DATE_FROM
474 ,ceo.DATE_TO
475 ,ceo.object_version_number
476 From per_Competence_Outcomes co
477 ,Per_comp_element_outcomes ceo
478 Where ceo.COMPETENCE_ELEMENT_ID = p_comp_ele_id
479 AND co.outcome_id = ceo.outcome_id
480 AND NOT EXISTS (Select 1 FROM hr_api_transaction_values tv1,
481 hr_api_transaction_values tv2,
482 hr_api_transaction_values tv3,
483 hr_api_transaction_values tv4,
484 hr_api_transaction_steps s
485 WHERE tv1.transaction_step_id = s.transaction_step_id
486 and s.item_type = p_item_type
487 and s.item_key = p_item_key
488 and s.activity_id = nvl(to_number(p_activity_id),s.activity_id)
489 and s.api_name = 'HR_COMP_OUTCOME_PROFILE_SS.PROCESS_API'
490 And tv2.transaction_step_id = s.transaction_step_id
491 And tv3.transaction_step_id = s.transaction_step_id
492 AND tv4.transaction_step_id = s.transaction_step_id
493 AND tv4.NAME = 'P_PERSON_ID'
494 AND tv4.number_value = p_person_id
495 AND tv1.name = 'P_OUTCOME_ID'
496 AND tv1.number_value = co.OUTCOME_ID
497 AND tv2.name = 'P_DATE_FROM'
498 AND tv3.name = 'P_DATE_TO'
499 AND tv2.date_Value >= co.date_from
500 AND nvl(tv3.date_Value,trunc(sysdate)) <= nvl(co.date_to,nvl(tv3.date_Value,trunc(sysdate)))
501 and not exists (
502 Select 1 from per_comp_element_outcomes pco
503 Where pco.competence_element_id = ceo.COMPETENCE_ELEMENT_ID
504 and pco.outcome_id = co.OUTCOME_ID
505 and pco.date_from = tv2.date_value
506 and nvl(pco.date_to,to_date('01-01-1001','DD-MM-YYYY')) = nvl(tv3.
507 date_value,to_date('01-01-1001','DD-MM-YYYY')))
508 )
509 And NOT EXISTS (SELECT 1
510 FROM hr_api_transaction_steps S1,
511 hr_api_transaction_values C
512 Where s1.item_type = p_item_type
513 and s1.item_key = p_item_key
514 and s1.activity_id = nvl((p_activity_id),s1.activity_id)
515 and s1.api_name = 'HR_COMP_OUTCOME_PROFILE_SS.DELETE'
516 and c.transaction_step_id = s1.transaction_step_id
517 AND C.NAME = 'P_COMP_ELEMENT_OUTCOME_ID'
518 AND ceo.comp_element_outcome_id = C.number_value);
519 Cursor get_new_compele_dtls( p_new_comp_ele_id IN number) is
520 Select ce.Effective_date_From,ce.Effective_date_to
521 From per_competence_elements ce
522 Where ce.COMPETENCE_ELEMENT_ID = p_new_comp_ele_id;
523 /* Select ceo.outcome_id,ceo.date_from,ceo.date_to,
524 ce.Effective_date_From,ce.Effective_date_to, ceo.object_version_number
525 From per_comp_element_outcomes ceo,
526 per_competence_elements ce
527 Where ceo.competence_element_id = p_comp_ele_id
528 AND ce.competence_element_id = p_new_comp_ele_id;*/
529 --
530 TYPE new_compele_dtl_rec is RECORD (
531 Effective_date_From per_competence_elements.Effective_date_From%TYPE,
532 Effective_date_to per_competence_elements.Effective_date_to%TYPE
533 );
534 new_compele_dtl_record new_compele_dtl_rec;
535 l_count number;
536 l_Start_Date per_Comp_Element_Outcomes.Date_from%type;
537 l_End_Date per_Comp_Element_Outcomes.Date_to%type;
538 l_comp_ele_outcome_id per_Comp_Element_Outcomes.comp_Element_Outcome_id%type;
539 l_obj_ver_no number;
540 l_proc varchar2(200) ;
541 begin
542 -- hr_utility.trace_on(null,'COMPQUAL');
543 l_proc := g_package || ' call_process_api';
544 hr_utility.set_location(' Entering:' || l_proc,10);
545 --hr_utility.set_location(' p_validate:' || to_char(p_validate),10);
546 hr_utility.set_location(' p_competence_element_id:' || p_competence_element_id,10);
547 hr_utility.set_location(' p_new_competence_element_id:' || p_new_competence_element_id,10);
548 hr_utility.set_location(' p_competence_id:' || p_competence_id,10);
549 hr_utility.set_location(' p_item_type:' || p_item_type,10);
550 hr_utility.set_location(' p_item_key:' || p_item_key,10);
551 hr_utility.set_location(' p_activity_id:' || p_activity_id,10);
552 hr_utility.set_location(' p_person_id:' || p_person_id,10);
553 hr_utility.set_location(' p_effective_date:' || to_char(p_effective_date,'DD-MON-YYYY'),10);
554 savepoint save_comp_element_outcome;
555 l_count := 0;
556 --
557 FOR outids IN get_enddate_outcome_ids(p_competence_element_id)
558 loop
559 l_count := l_count +1;
560 process_upd_api(p_comp_element_outcome_id => outids.comp_element_outcome_id
561 ,p_to_date => trunc(sysdate)
562 ,p_object_version_number => outids.object_version_number );
563 delete_transaction_step_id(outids.transaction_step_id);
564 END loop;
565 hr_utility.set_location(' Entering:' || l_proc,20);
566 --
567 FOR txnids IN get_txn_step_id(
568 p_comp_id => p_competence_id
569 ,p_comp_ele_id => p_competence_element_id
570 ,p_person_id => p_person_id
571 ,p_eff_date => p_effective_date)
572 loop
573 hr_utility.set_location(' Entering:' || l_proc,30);
574 hr_utility.set_location(' p_new_competence_element_id:' || p_new_competence_element_id,30);
575 hr_utility.set_location(' p_effective_date:' || l_proc,30);
576 hr_utility.set_location(' p_transaction_step_id: ' || txnids.transaction_step_id,30);
577 HR_COMP_OUTCOME_PROFILE_SS.process_api(
578 p_validate => p_validate
579 ,p_competence_element_id => p_new_competence_element_id
580 ,p_effective_date => p_effective_date
581 ,p_transaction_step_id => txnids.transaction_step_id);
582 END loop;
583 hr_utility.set_location(' Entering:' || l_proc,40);
584 hr_utility.set_location(' p_competence_element_id: ' || p_competence_element_id,40);
585 hr_utility.set_location(' p_new_competence_element_id: ' || p_new_competence_element_id,40);
586 hr_utility.set_location(' l_count :' || l_count,40);
587 --
588 l_count := 0;
589 IF p_competence_element_id <> p_new_competence_element_id then
590 FOR unchangedRec IN get_unchngd_outcomes(p_competence_element_id)
591 loop
592 IF l_count = 0 then
593 l_count := 1;
594 OPEN get_new_compele_dtls(p_new_competence_element_id);
595 FETCH get_new_compele_dtls INTO new_compele_dtl_record;
596 IF get_new_compele_dtls%NOTFOUND then
597 CLOSE get_new_compele_dtls;
598 RAISE hr_comp_outcome_profile_ss.g_data_err;
599 else
600 CLOSE get_new_compele_dtls;
601 END if;
602 END if;
603 -- IF new_compele_dtl_record.Effective_date_From > unchangedRec.date_From Then
604 l_start_date := unchangedRec.date_From;
605 -- else
606 -- l_start_date := new_compele_dtl_record.Effective_date_From;
607 -- End if;
608 -- IF new_compele_dtl_record.Effective_date_TO IS NOT NULL Then
609 -- IF unchangedRec.date_to IS NOT NULL Then
610 -- IF new_compele_dtl_record.Effective_date_to > unchangedRec.date_to then
611 -- l_End_Date := unchangedRec.date_to;
612 -- Else
613 -- l_End_Date := new_compele_dtl_record.Effective_date_to;
614 -- End if;
615 -- Else
616 -- l_End_Date := new_compele_dtl_record.Effective_date_to;
617 -- End if;
618 -- Else
619 -- IF unchangedRec.date_to IS NOT NULL Then
620 l_End_Date := unchangedRec.date_to;
621 -- End if;
622 -- End if;
623 --
624 hr_utility.set_location(' Entering l_comp_ele_outcome_id:' || l_comp_ele_outcome_id,50);
625 hr_utility.set_location(' Entering p_new_competence_element_id:' || p_new_competence_element_id,50);
626 hr_utility.set_location(' Entering l_obj_ver_no:' || l_obj_ver_no,50);
627 hr_utility.set_location(' Entering unchangedRec.outcome_id:' || unchangedRec.outcome_id,50);
628 hr_utility.set_location(' Entering l_Start_Date:' || l_Start_Date,50);
629 hr_utility.set_location(' Entering l_End_Date:' || l_End_Date,50);
630 hr_utility.set_location(' Entering unchangedRec.date_From:' || unchangedRec.date_From,50);
631 hr_utility.set_location(' Entering unchangedRec.date_to:' || unchangedRec.date_to,50);
632 hr_utility.set_location(' Entering trunc(sysdate) :' || trunc(sysdate),50);
633 per_ceo_ins.ins(
634 p_comp_element_outcome_id => l_comp_ele_outcome_id
635 ,p_competence_element_id => p_new_competence_element_id
636 ,p_object_version_number => l_obj_ver_no
637 ,p_outcome_id => unchangedRec.outcome_id
638 ,p_date_from => unchangedRec.date_From
639 ,p_date_to => unchangedRec.date_to
640 ,p_effective_date => trunc(sysdate));
641 --
642 END loop;
643 hr_utility.set_location(' Entering:' || l_proc,80);
644 END if;
645 -- hr_utility.trace_off;
646 --
647 EXCEPTION
648 WHEN hr_comp_outcome_profile_ss.g_data_err THEN
649 hr_utility.set_location(' Entering:' || l_proc,90);
650 raise hr_utility.hr_error;
651 --
652 WHEN hr_comp_outcome_profile_ss.g_access_violation_err THEN
653 hr_utility.set_location(' Entering:' || l_proc,100);
654 raise hr_utility.hr_error;
655 --
656 When others THEN
657 hr_utility.set_location(' Entering:' || l_proc,110);
658 raise hr_utility.hr_error;
659 --
660 END call_process_api;
661 -- ---------------------------- < process_api > ------------------------------
662 -- ---------------------------------------------------------------------------
663 -- Purpose: This procedure reads the data from transaction table and saves it
664 -- to the database.
665 -- This procedure is called called from HR_COMP_PROFILE_SS.PROCESS_API
666 --
667 -- ---------------------------------------------------------------------------
668 Procedure process_api(p_validate in boolean default false
669 ,p_transaction_step_id in NUMBER
670 ,p_competence_element_id IN number
671 ,p_effective_date in varchar2 default null) is
672 --
673 Cursor getoldrec(p_comp_element_outcome_id IN number) is
674 Select COMPETENCE_ELEMENT_ID ,
675 OUTCOME_ID,
676 DATE_FROM,
677 DATE_TO
678 FROM per_comp_element_outcomes
679 Where comp_element_outcome_id = p_comp_element_outcome_id;
680 l_cmpout_element_rec per_comp_element_outcomes%rowtype;
681 l_system_generated varchar2(1) default null;
682 l_upgraded_from_rec_id number DEFAULT Null;
683 l_preupd_proficy_lvl_id number default NULL;
684 l_outcome_name per_competence_outcomes_vl.name%type;
685 l_txn_step_id hr_api_transaction_steps.transaction_step_id%type;
686 l_count number;
687 l_proc varchar2(200) ;
688 --
689 Begin
690 --
691 l_proc := g_package || 'process_api';
692 hr_utility.set_location(' p_transaction_step_id:' || p_transaction_step_id,10);
693 hr_utility.set_location(' p_competence_element_id:' || p_competence_element_id,10);
694 hr_utility.set_location(' Entering:' || l_proc,10);
695 hr_utility.set_location(' Entering:' || l_proc,10);
696 hr_utility.set_location(' Entering:' || l_proc,10);
697 hr_utility.set_location(' Entering:' || l_proc,10);
698 l_count := 0;
699 l_cmpout_element_rec.comp_element_outcome_id :=
700 hr_transaction_api.get_number_value
701 (p_transaction_step_id => p_transaction_step_id
702 ,p_name => 'P_COMP_ELEMENT_OUTCOME_ID');
703 --
704 l_cmpout_element_rec.competence_element_id :=
705 hr_transaction_api.get_number_value
706 (p_transaction_step_id => p_transaction_step_id
707 ,p_name => 'P_COMPETENCE_ELEMENT_ID');
708 --
709 l_cmpout_element_rec.object_version_number :=
710 hr_transaction_api.get_number_value
711 (p_transaction_step_id => p_transaction_step_id
712 ,p_name => 'P_OBJECT_VERSION_NUMBER');
713 --
714 l_cmpout_element_rec.outcome_id :=
715 hr_transaction_api.get_number_value
716 (p_transaction_step_id => p_transaction_step_id
717 ,p_name => 'P_OUTCOME_ID');
718 --
719 l_outcome_name :=
720 hr_transaction_api.get_varchar2_value
721 (p_transaction_step_id => p_transaction_step_id
722 ,p_name => 'P_OUTCOME_NAME');
723 --
724 l_cmpout_element_rec.date_from :=
725 hr_transaction_api.get_date_value
726 (p_transaction_step_id => p_transaction_step_id
727 ,p_name => 'P_DATE_FROM');
728 --
729 l_cmpout_element_rec.date_to :=
730 hr_transaction_api.get_date_value
731 (p_transaction_step_id => p_transaction_step_id
732 ,p_name => 'P_DATE_TO');
733 --
734 l_upgraded_from_rec_id := NULL;
735 l_upgraded_from_rec_id :=
736 hr_transaction_api.get_number_value
737 (p_transaction_step_id => p_transaction_step_id
738 ,p_name => 'P_UPGRADED_FROM_REC_ID');
739 --
740 /* IF l_system_generated = 'N' AND
741 l_upgraded_from_rec_id is not null THEN
742 hr_utility.set_location(' Entering:' || l_proc,20);
743 l_cmpout_element_rec.comp_element_outcome_id := null;
744 END IF;*/
745 --
746 -- set a savepoint before calling api
747 --
748 IF (l_cmpout_element_rec.comp_element_outcome_id IS NULL OR l_cmpout_element_rec.comp_element_outcome_id = -1) then
749 hr_utility.set_location(' Entering: Inserting new record' || l_proc,30);
750 hr_utility.set_location(' l_cmpout_element_rec.comp_element_outcome_id:' || l_cmpout_element_rec.comp_element_outcome_id,30);
751 hr_utility.set_location(' l_cmpout_element_rec.object_version_number:' || l_cmpout_element_rec.object_version_number,30);
752 hr_utility.set_location(' l_cmpout_element_rec.date_to:' ||to_char(l_cmpout_element_rec.date_to,'DD-MON-YYYY'),30);
753 hr_utility.set_location(' l_cmpout_element_rec.outcome_id :' || l_cmpout_element_rec.outcome_id ,30);
754 hr_utility.set_location(' l_cmpout_element_rec.date_from :' || l_cmpout_element_rec.date_from ,30);
755 hr_utility.set_location(' l_cmpout_element_rec.date_to :' || l_cmpout_element_rec.date_to ,30);
756 hr_utility.set_location(' l_upgraded_from_rec_id :' || l_upgraded_from_rec_id ,30);
757 per_ceo_ins.ins(
758 p_comp_element_outcome_id => l_cmpout_element_rec.comp_element_outcome_id
759 ,p_competence_element_id => p_competence_element_id
760 ,p_object_version_number => l_cmpout_element_rec.object_version_number
761 ,p_outcome_id => l_cmpout_element_rec.outcome_id
762 ,p_date_from => l_cmpout_element_rec.date_from
763 ,p_date_to => l_cmpout_element_rec.date_to
764 ,p_effective_date => trunc(sysdate));
765 else
766 FOR rec IN getoldrec( p_comp_element_outcome_id => l_cmpout_element_rec.comp_element_outcome_id)
767 loop
768 IF rec.COMPETENCE_ELEMENT_ID= l_cmpout_element_rec.competence_element_id AND
769 rec.OUTCOME_ID = l_cmpout_element_rec.outcome_id and
770 rec.DATE_FROM = l_cmpout_element_rec.date_from and
771 ((rec.DATE_TO IS NULL AND l_cmpout_element_rec.date_to IS null) or
772 (rec.DATE_TO = l_cmpout_element_rec.date_to)) then
773 hr_utility.set_location(' Entering: in if record is same' || l_proc,30);
774 else
775 IF l_system_generated = 'Y' AND
776 l_cmpout_element_rec.competence_element_id = p_competence_element_id THEN
777 hr_utility.set_location(' Entering:' || l_proc,30);
778 hr_utility.set_location(' l_cmpout_element_rec.comp_element_outcome_id:' || l_cmpout_element_rec.comp_element_outcome_id,30);
779 hr_utility.set_location(' l_cmpout_element_rec.object_version_number:' || l_cmpout_element_rec.object_version_number,30);
780 hr_utility.set_location(' l_cmpout_element_rec.date_to:' ||to_char(l_cmpout_element_rec.date_to,'DD-MON-YYYY'),30);
781 hr_utility.set_location(' l_upgraded_from_rec_id :' || l_upgraded_from_rec_id ,30);
782 -- IF rec.DATE_FROM < l_cmpout_element_rec.date_from then
783 process_upd_api(p_comp_element_outcome_id => l_cmpout_element_rec.comp_element_outcome_id
784 ,p_to_date => trunc(sysdate)
785 ,p_object_version_number => l_cmpout_element_rec.object_version_number);
786 per_ceo_ins.ins(
787 p_comp_element_outcome_id => l_cmpout_element_rec.comp_element_outcome_id
788 ,p_competence_element_id => p_competence_element_id
789 ,p_object_version_number => l_cmpout_element_rec.object_version_number
790 ,p_outcome_id => l_cmpout_element_rec.outcome_id
791 ,p_date_from => l_cmpout_element_rec.date_from
792 ,p_date_to => l_cmpout_element_rec.date_to
793 ,p_effective_date => trunc(sysdate));
794 /* else
795 per_ceo_upd.upd (
796 p_comp_element_outcome_id => l_cmpout_element_rec.comp_element_outcome_id
797 ,p_object_version_number => l_upgraded_from_rec_id
798 ,p_date_from => l_cmpout_element_rec.date_from
799 ,p_date_to => l_cmpout_element_rec.date_to
800 ,p_effective_date => trunc(sysdate));
801 END if;
802 --*/
803 ELSIF l_cmpout_element_rec.competence_element_id = p_competence_element_id THEN
804 hr_utility.set_location(' Entering:' || l_proc,40);
805 hr_utility.set_location(' l_cmpout_element_rec.comp_element_outcome_id:' || l_cmpout_element_rec.comp_element_outcome_id,30);
806 hr_utility.set_location(' l_cmpout_element_rec.object_version_number:' || l_cmpout_element_rec.object_version_number,30);
807 hr_utility.set_location(' l_cmpout_element_rec.date_to:' ||to_char(l_cmpout_element_rec.date_to,'DD-MON-YYYY'),30);
808 hr_utility.set_location(' l_cmpout_element_rec.date_from:' || l_cmpout_element_rec.date_from,30);
809 hr_utility.set_location(' l_upgraded_from_rec_id:' || l_upgraded_from_rec_id,30);
810 hr_utility.set_location(' rec.DATE_FROM' || rec.DATE_FROM,40);
811 hr_utility.set_location(' l_cmpout_element_rec.date_from' || l_cmpout_element_rec.date_from,40);
812 -- IF rec.DATE_FROM < l_cmpout_element_rec.date_from then
813 process_upd_api(p_comp_element_outcome_id => l_cmpout_element_rec.comp_element_outcome_id
814 ,p_to_date => trunc(sysdate)
815 ,p_object_version_number => l_cmpout_element_rec.object_version_number);
816 per_ceo_ins.ins(
817 p_comp_element_outcome_id => l_cmpout_element_rec.comp_element_outcome_id
818 ,p_competence_element_id => p_competence_element_id
819 ,p_object_version_number => l_cmpout_element_rec.object_version_number
820 ,p_outcome_id => l_cmpout_element_rec.outcome_id
821 ,p_date_from => l_cmpout_element_rec.date_from
822 ,p_date_to => l_cmpout_element_rec.date_to
823 ,p_effective_date => trunc(sysdate));
824 /* else
825 per_ceo_upd.upd
826 (p_comp_element_outcome_id => l_cmpout_element_rec.comp_element_outcome_id
827 ,p_object_version_number => l_cmpout_element_rec.object_version_number
828 ,p_date_from => l_cmpout_element_rec.date_from
829 ,p_date_to => l_cmpout_element_rec.date_to
830 ,p_effective_date => trunc(sysdate));
831 END if;*/
832 --
833 ELSE
834 hr_utility.set_location(' Entering:' || l_proc,50);
835 per_ceo_ins.ins(
836 p_comp_element_outcome_id => l_cmpout_element_rec.comp_element_outcome_id
837 ,p_competence_element_id => p_competence_element_id
838 ,p_object_version_number => l_cmpout_element_rec.object_version_number
839 ,p_outcome_id => l_cmpout_element_rec.outcome_id
840 ,p_date_from => l_cmpout_element_rec.date_from
841 ,p_date_to => l_cmpout_element_rec.date_to
842 ,p_effective_date => trunc(sysdate));
843 END IF;
844 END if;
845 END loop;
846 END if;
847 --
848 --
849 Exception
850 When hr_utility.hr_error THEN
851 hr_utility.set_location(' Entering:' || l_proc,60);
852 rollback to save_comp_element_outcome;
853 IF NOT (l_upgraded_from_rec_id IS NOT NULL AND
854 hr_message.last_message_name = 'HR_51648_CEL_PER_DATES_OVLAP') THEN
855 hr_utility.set_location(' Entering:' || l_proc,70);
856 raise;
857 END IF;
858 --
859 When others THEN
860 hr_utility.set_location(' Entering:' || l_proc,80);
861 raise;
862 --
863 End process_api;
864 --
865 /* new Procedure for for updatng the old outcomes */
866 --
867 Procedure process_upd_api
868 (p_comp_element_outcome_id IN number
869 ,p_to_date IN DATE
870 ,p_object_version_number IN number
871 ) IS
872 --
873 l_object_version_number number;
874 x_to_date date;
875 l_proc varchar2(200) ;
876 begin
877 l_proc := g_package || 'process_upd_api';
878 hr_utility.set_location(' Entering:' || l_proc,10);
879 l_object_version_number := p_object_version_number;
880 IF p_to_date IS NULL then
881 x_to_date := trunc(sysdate);
882 else
883 x_to_date := p_to_date;
884 END if;
885 per_ceo_del.del (
886 p_comp_element_outcome_id => p_comp_element_outcome_id
887 ,p_object_version_number => l_object_version_number
888 );
889 --
890 END process_upd_api;
891 -----------new procedure for validating and saving record into transaction tables --------------------------
892 ------------------------------------------------------------------------------------------------------------
893 Procedure api_validate_com_out_rec_ss
894 (p_item_type in VARCHAR2
895 ,p_item_key in VARCHAR2
896 ,p_activity_id in varchar2
897 ,p_validate in varchar2
898 ,p_change_mode in varchar2 default null
899 ,p_comp_element_outcome_id in varchar2 default null
900 ,p_competence_element_id in varchar2 default null
901 ,p_competence_id in varchar2 default null
902 ,p_preupd_obj_vers_num in number default null
903 ,p_outcome_id in number default null
904 ,p_date_from in varchar2 default null
905 ,p_date_to in varchar2 default null
906 ,p_transaction_step_id in out nocopy varchar2
907 ,p_comp_from_date IN VARCHAR2 DEFAULT null
908 ,p_comp_to_date IN VARCHAR2 DEFAULT null
909 ,p_person_id IN VARCHAR2 DEFAULT null
910 ,p_error_message out nocopy long) is
911 --
912 l_user_date_format varchar2(200) default null;
913 l_user_date_format_length number default null;
914 l_sample_date varchar2(200) default null;
915 l_date_char varchar2(200) default null;
916 l_rec_changed boolean default null;
917 l_date_error boolean default null;
918 l_msg_text varchar2(2000) default null;
919 l_date_from date default null;
920 l_date_to date default null;
921 l_preupd_date_to date default null;
922 l_new_comp_ele_outcome_id number default null;
923 l_new_obj_vers_num number default null;
924 l_object_version_number number default null;
925 l_validate boolean default null;
926 --
927 o_name varchar2(200) default null;
928 p_outcome_name varchar2(200) default null;
929 l_prev_date date;
930 l_prev_start_date date;
931 l_changed boolean default false;
932 l_warning_exists boolean default false;
933 l_mode_fetch varchar2(20) default null;
934 l_mode varchar2(20) default null;
935 x_comp_ele_out_id number default null;
936 x_comp_ele_id number default null;
937 x_comp_id number default null;
938 x_count number;
939 --
940 Cursor get_out_dates ( p_outcome_id IN Number )is
941 select date_to end_date,
942 date_from start_date
943 from per_competence_outcomes_vl
944 where outcome_id = p_outcome_id;
945 --
946 l_out_dates_cur get_out_dates%RowType;
947 l_proc varchar2(200);
948 --
949 Begin
950 -- hr_utility.trace_on(null,'OUTCOME');
951 l_proc := g_package || 'api_validate_com_out_rec_ss';
952 hr_utility.set_location(' Entering:' || l_proc, 5);
953 IF (p_transaction_step_id = -1 ) then
954 hr_utility.set_location(' Entering:' || l_proc, 10);
955 p_transaction_step_id := Null;
956 ENd IF;
957 --
958 IF p_comp_element_outcome_id IS not null then
959 hr_utility.set_location(' Entering:' || l_proc,15);
960 x_comp_ele_out_Id := to_number(p_comp_element_outcome_id);
961 END if;
962 --
963 if p_competence_element_id IS not NULL then
964 hr_utility.set_location(' Entering:' || l_proc,20);
965 x_comp_ele_id := to_number(p_competence_element_id);
966 END if;
967 --
968 if p_competence_id IS not NULL then
969 hr_utility.set_location(' Entering:' || l_proc,25);
970 x_comp_id := to_number(p_competence_id);
971 End if;
972 l_mode := p_change_mode;
973 IF (p_comp_element_outcome_id is not NULL) THEN
974 hr_utility.set_location(' Entering:' || l_proc,30);
975 hr_comp_outcome_profile_ss.check_if_cmpocm_rec_changed
976 (p_comp_element_outcome_id => x_comp_ele_out_Id
977 ,p_competence_element_id => x_comp_ele_id
978 ,p_competence_id => x_comp_id
979 ,p_outcome_id => p_outcome_id
980 ,p_date_from => to_date(p_date_from,g_date_format)
981 ,p_date_to => to_date(p_date_to,g_date_format)
982 ,p_change_mode => p_change_mode
983 ,p_rec_changed => l_changed);
984 --
985 if l_changed = false THEN
986 hr_utility.set_location(' Entering:' || l_proc,35);
987 IF (p_transaction_step_id IS NOT Null) THEN
988 hr_utility.set_location(' Entering:' || l_proc,40);
989 delete_transaction_step_id(p_transaction_step_id);
990 END IF;
991 return; -- added on 17-Nov-2004
992 end if;
993 l_mode := HR_COMP_OUTCOME_PROFILE_SS.OUTCOME_CHANGED;
994 --
995 END IF;
996 --
997 IF ( p_date_from IS NULL OR to_date(p_date_from,g_date_format) IS null ) then
998 hr_utility.set_location(' Entering:' || l_proc,45);
999 p_error_message := 'HR_OUT_ELMT_DATE_INVL';
1000 --
1001 RETURN;
1002 --
1003 END if;
1004 hr_utility.set_location(' Entering:' || l_proc,50);
1005 IF ( to_date(p_date_from,g_date_format) > trunc(sysdate) ) then
1006 hr_utility.set_location(' Entering:' || l_proc,55);
1007 p_error_message := 'HR_OUT_DT_ACHVD_INVL';
1008 --
1009 RETURN;
1010 --
1011 END if;
1012 --
1013 OPEN get_out_dates(p_outcome_id => p_outcome_id);
1014 FETCH get_out_dates into l_out_dates_cur;
1015 IF get_out_dates%NOTFOUND THEN
1016 hr_utility.set_location(' Entering:' || l_proc,60);
1017 l_date_to := p_date_to;
1018 ELSE
1019 hr_utility.set_location(' Entering:' || l_proc,65);
1020 IF (l_out_dates_cur.start_date IS NOT NULL AND
1021 l_out_dates_cur.start_date > to_date(p_date_from, g_date_format) ) THEN
1022 hr_utility.set_location(' Entering:' || l_proc,70);
1023 p_error_message := 'HR_OUT_DATE_INVL';
1024 CLOSE get_out_dates;
1025 RETURN;
1026 END IF;
1027 IF p_date_to IS NULL THEN
1028 hr_utility.set_location(' Entering:' || l_proc,75);
1029 l_date_to := l_out_dates_cur.end_date;
1030 ELSIF (l_out_dates_cur.end_Date IS NOT NULL AND
1031 l_out_dates_cur.end_date < to_date(p_date_to, g_date_format) ) THEN
1032 p_error_message := 'HR_OUT_DATE_INVL';
1033 CLOSE get_out_dates;
1034 RETURN;
1035 ELSE
1036 hr_utility.set_location(' Entering:' || l_proc,80);
1037 l_date_to := to_date(p_date_to, g_date_format);
1038 END IF;
1039 END IF ;
1040 IF p_comp_from_date IS NOT NULL then
1041 hr_utility.set_location(' Entering:' || l_proc,85);
1042 IF to_date(p_date_from,g_date_format) < to_date(p_comp_from_date,g_date_format) Then
1043 hr_utility.set_location(' Entering:' || l_proc,90);
1047 --
1044 p_error_message := 'HR_OUT_ACHVD_DT_INVL';
1045 RETURN;
1046 END if;
1048 END if;
1049 --
1050 IF p_comp_to_date IS NOT NULL OR trim(p_comp_to_date) <> '' then
1051 hr_utility.set_location(' Entering:' || l_proc,95);
1052 IF to_date(p_date_to,g_date_format) > to_date(p_comp_to_date,g_date_format) Then
1053 hr_utility.set_location(' Entering:' || l_proc,100);
1054 p_error_message := 'HR_OUT_ACHVD_DT_INVL';
1055 RETURN;
1056 END if;
1057 --
1058 END if;
1059 --
1060 IF get_out_dates%ISOPEN then
1061 CLOSE get_out_dates;
1062 END if;
1063 hr_utility.set_location(' Entering:' || l_proc,105);
1064 hr_utility.set_location(' Entering x_comp_ele_id :' || x_comp_ele_id,105);
1065 hr_utility.set_location(' Entering p_outcome_id :' || p_outcome_id,105);
1066 hr_utility.set_location(' Entering l_date_to :' || l_date_to,105);
1067 hr_utility.set_location(' Entering g_date_format :' || g_date_format,105);
1068 hr_utility.set_location(' Entering p_date_from:' || p_date_from,105);
1069 x_count :=0;
1070 IF x_comp_ele_out_id IS NULL then
1071 Select count(*) INTO x_count
1072 from per_comp_element_outcomes ceo
1073 where competence_element_id = x_comp_ele_id
1074 and outcome_id = p_outcome_id and
1075 ceo.date_from <= to_date(p_date_from,g_date_format) and
1076 nvl(ceo.date_to,trunc(sysdate)) >= to_date(p_date_from,g_date_format)
1077 AND NOT exists(
1078 Select 1 FROM
1079 hr_api_transaction_steps S, hr_api_transaction_values C
1080 Where s.item_type = p_item_type
1081 and s.item_key = p_item_key
1082 and s.activity_id = nvl(to_number(p_activity_id),s.activity_id)
1083 and s.api_name = 'HR_COMP_OUTCOME_PROFILE_SS.DELETE'
1084 and c.transaction_step_id = s.transaction_step_id
1085 AND C.NAME = 'P_COMP_ELEMENT_OUTCOME_ID'
1086 AND C.NUMBER_VALUE = CEO.COMP_ELEMENT_OUTCOME_ID);
1087 hr_utility.set_location(' Entering x_count:' || x_count,107);
1088 IF x_count > 0 then
1089 hr_utility.set_location(' Entering:' || l_proc,107);
1090 -- changed for 4188407
1091 p_error_message := 'HR_449132_QUA_FWK_OUTCM_EXISTS';
1092 --End changes for 4188407
1093 return;
1094 END if;
1095 IF l_date_to IS NULL then
1096 Select count(*) INTO x_count
1097 from per_comp_element_outcomes ceo
1098 where competence_element_id = x_comp_ele_id
1099 and outcome_id = p_outcome_id and
1100 ceo.date_from >= to_date(p_date_from,g_date_format)
1101 AND NOT exists(
1102 Select 1 FROM
1103 hr_api_transaction_steps S, hr_api_transaction_values C
1104 Where s.item_type = p_item_type
1105 and s.item_key = p_item_key
1106 and s.activity_id = nvl(to_number(p_activity_id),s.activity_id)
1107 and s.api_name = 'HR_COMP_OUTCOME_PROFILE_SS.DELETE'
1108 and c.transaction_step_id = s.transaction_step_id
1109 AND C.NAME = 'P_COMP_ELEMENT_OUTCOME_ID'
1110 AND C.NUMBER_VALUE = CEO.COMP_ELEMENT_OUTCOME_ID);
1111 hr_utility.set_location(' Entering x_count:' || x_count,108);
1112 else
1113 Select count(*) INTO x_count
1114 from per_comp_element_outcomes ceo
1115 where competence_element_id = x_comp_ele_id
1116 and outcome_id = p_outcome_id and
1117 ceo.date_from >= to_date(p_date_from,g_date_format)
1118 AND ceo.date_from <= to_date(p_date_to,g_date_format)
1119 AND NOT exists(
1120 Select 1 FROM
1121 hr_api_transaction_steps S, hr_api_transaction_values C
1122 Where s.item_type = p_item_type
1123 and s.item_key = p_item_key
1124 and s.activity_id = nvl(to_number(p_activity_id),s.activity_id)
1125 and s.api_name = 'HR_COMP_OUTCOME_PROFILE_SS.DELETE'
1126 and c.transaction_step_id = s.transaction_step_id
1127 AND C.NAME = 'P_COMP_ELEMENT_OUTCOME_ID'
1128 AND C.NUMBER_VALUE = CEO.COMP_ELEMENT_OUTCOME_ID);
1129 hr_utility.set_location(' Entering x_count:' || x_count,109);
1130 END if; -- l_date_to IS NULL
1131 IF x_count > 0 then
1132 hr_utility.set_location(' Entering:' || l_proc,107);
1133 p_error_message := 'HR_OUT_DATE_INVL';
1134 return;
1135 END if;
1136 END IF; -- x_comp_ele_out_id IS NULL
1137 --
1138 if x_comp_ele_out_Id is not null then
1139 hr_utility.set_location(' Entering:' || l_proc,110);
1140 OPEN get_prev_start_date(x_comp_ele_out_Id);
1141 FETCH get_prev_start_date into l_prev_date;
1142 -- IF get_prev_start_date%notfound THEN
1143 -- raise hr_comp_outcome_profile_ss.g_fatal_error;
1144 -- END IF;
1145 close get_prev_start_date;
1146 l_prev_start_date := l_prev_date;
1147 --
1148 end if;
1149 if p_transaction_step_id is not null then
1150 hr_utility.set_location(' Entering:' || l_proc,120);
1151 delete_transaction_step_id(p_transaction_step_id);
1152 p_transaction_step_id := null;
1153 end if;
1154 hr_utility.set_location(' Entering:' || l_proc,130);
1155 process_save(p_item_type => p_item_type
1156 ,p_item_key => p_item_key
1157 ,p_actid => p_activity_id
1158 ,p_change_mode => l_mode
1159 ,p_comp_element_outcome_id => x_comp_ele_out_id
1160 ,p_competence_element_id => x_comp_ele_id
1161 ,p_competence_id => x_comp_id
1162 ,p_preupd_obj_vers_num => p_preupd_obj_vers_num
1163 ,p_outcome_id => p_outcome_id
1164 ,p_outcome_name => p_outcome_name
1165 ,p_date_from => p_date_from
1166 ,p_date_to => to_char(l_date_to,g_date_format)
1167 ,p_prev_start_date => to_char(l_prev_start_date,g_date_format)
1168 ,p_transaction_step_id => p_transaction_step_id
1169 ,p_person_id => p_person_id
1170 ,p_error_message => p_error_message);
1171 hr_utility.set_location(' Entering:' || l_proc,140);
1172 check_delete_rec(p_item_type => p_item_type
1173 ,p_item_key => p_item_key
1174 ,p_actid => p_activity_id
1175 ,p_person_id => p_person_id
1176 ,p_outcome_id => p_outcome_id);
1177 --
1178 Exception
1179 when g_invalid_entry then
1180 hr_utility.set_location(' Entering:' || l_proc,150);
1181 null;
1182 when others then
1183 hr_utility.set_location(' Entering:' || l_proc,160);
1184 raise g_invalid_entry;
1185 End api_validate_com_out_rec_ss;
1186 --
1187 -------------------------------------------------------------------------------
1188 /*Procedure get_pending_addition_ids
1189 (p_item_type IN varchar2
1190 ,p_item_key IN varchar2
1191 ,p_step_values out nocopy varchar2
1192 ,p_rows out nocopy number) is
1193 cursor get_add_ids (p_transaction_id number) is
1194 select step.transaction_step_id
1195 from hr_api_transaction_steps step, hr_api_transaction_values val
1196 where step.transaction_id = p_transaction_id
1197 and val.transaction_step_id = step.transaction_step_id
1198 and val.varchar2_value = 'ADD';
1199 l_index number;
1200 l_transaction_id number;
1201 begin
1202 l_transaction_id:=hr_transaction_ss.get_transaction_id
1203 (p_item_type => p_item_type
1204 ,p_item_key => p_item_key);
1205 l_index := 0;
1206 for l_step_values in get_add_ids(p_transaction_id => l_transaction_id) loop
1207 p_step_values := p_step_values || l_step_values.transaction_step_id || '?';
1208 l_index := l_index + 1;
1209 end loop ;
1210 p_rows := l_index;
1211 end get_pending_addition_ids;
1212 */
1213 --------------DELETE PENDING CURRENT UPDATE IDS ----------------------------------------------
1214 /*Procedure del_pen_currupd_ids(p_item_type IN varchar2
1215 ,p_item_key IN varchar2) is
1216 cursor get_upd_ids(p_transaction_id number) is
1217 select steps.transaction_step_id
1218 from hr_api_transaction_values val, hr_api_transaction_steps steps
1219 where steps.transaction_id = p_transaction_id
1220 and steps.transaction_step_id = val.transaction_step_id
1221 and val.name = 'P_CHANGE_MODE'
1222 and val.varchar2_value IN ('UPDATE_APPLY','UPDATE_HIST');
1223 l_step_values number ;
1224 l_transaction_id number;
1225 begin
1226 l_transaction_id:=hr_transaction_ss.get_transaction_id
1227 (p_item_type => p_item_type
1228 ,p_item_key => p_item_key);
1229 for I in get_upd_ids(l_transaction_id) loop
1230 delete from hr_api_transaction_values
1231 where transaction_step_id = I.transaction_step_id;
1232 delete from hr_api_transaction_steps
1233 where transaction_step_id = I.transaction_step_id;
1234 end loop;
1235 del_add_ids(p_item_type, p_item_key);
1236 commit;
1237 end del_pen_currupd_ids; */
1238 ----------------------------------------------------------------------------------------------------
1239 /*Procedure del_add_ids(p_item_type IN varchar2
1240 ,p_item_key IN varchar2) is
1241 cursor get_add_ids(p_transaction_id number) is
1242 select steps.transaction_step_id
1243 from hr_api_transaction_values val, hr_api_transaction_steps steps
1247 l_step_values number ;
1244 where steps.transaction_id = p_transaction_id
1245 and steps.transaction_step_id = val.transaction_step_id
1246 and val.varchar2_value = 'ADD';
1248 l_transaction_id number;
1249 begin
1250 l_transaction_id:=hr_transaction_ss.get_transaction_id
1251 (p_item_type => p_item_type
1252 ,p_item_key => p_item_key);
1253 for I in get_add_ids(l_transaction_id) loop
1254 delete from hr_api_transaction_values
1255 where transaction_step_id = I.transaction_step_id;
1256 delete from hr_api_transaction_steps
1257 where transaction_id = l_transaction_id
1258 and transaction_step_id = I.transaction_step_id;
1259 end loop ;
1260 end del_add_ids; */
1261 /*------------------------------------------------------------------------------
1262 |
1263 | Name : save_transaction_step
1264 |
1265 | Purpose :
1266 |
1267 | Saves the records into Transaction Tables.
1268 | Created as hr_transaction_ss.save_transaction_step fails when
1269 | value is passed in NULL
1270 |
1271 +-----------------------------------------------------------------------------*/
1272 PROCEDURE save_transaction_step
1273 (p_item_type IN VARCHAR2
1274 ,p_item_key IN VARCHAR2
1275 ,p_actid IN NUMBER
1276 ,p_login_person_id IN NUMBER
1277 ,p_transaction_step_id IN OUT NOCOPY NUMBER
1278 ,p_api_name IN VARCHAR2 default null
1279 ,p_api_display_name IN VARCHAR2 DEFAULT NULL
1280 ,p_transaction_data IN TRANSACTION_TABLE1) AS
1281 l_count Number:=0;
1282 l_proc varchar2(200);
1283 BEGIN
1284 l_proc := g_package || 'save_transaction_step';
1285 hr_utility.set_location(' Entering:' || l_proc,10);
1286 l_count := p_transaction_data.COUNT;
1287 FOR i IN 1..l_count LOOP
1288 BEGIN
1289 IF p_transaction_data(i).param_data_type = 'DATE' THEN
1290 hr_transaction_api.set_date_value(p_transaction_step_id => p_transaction_step_id
1291 ,p_person_id => p_login_person_id
1292 ,p_name => p_transaction_data(i).param_name
1293 ,p_value => to_date(ltrim(rtrim(p_transaction_data(i).param_value)),g_date_format));
1294 ELSIF p_transaction_data(i).param_data_type = 'NUMBER' THEN
1295 hr_transaction_api.set_number_value(p_transaction_step_id => p_transaction_step_id
1296 ,p_person_id => p_login_person_id
1297 ,p_name => p_transaction_data(i).param_name
1298 ,p_value => to_number(ltrim(rtrim(p_transaction_data(i).param_value))));
1299 ELSIF p_transaction_data(i).param_data_type = 'VARCHAR2' THEN
1300 hr_transaction_api.set_varchar2_value(p_transaction_step_id => p_transaction_step_id
1301 ,p_person_id => p_login_person_id
1302 ,p_name => p_transaction_data(i).param_name
1303 ,p_value => p_transaction_data(i).param_value);
1304 END IF;
1305 --
1306 Exception When others then
1307 hr_utility.set_location(' Entering:' || l_proc,100);
1308 RAISE hr_utility.hr_error;
1309 END;
1310 END LOOP;
1311 EXCEPTION
1312 WHEN OTHERS THEN
1313 hr_utility.set_location(' Entering:' || l_proc,110);
1314 hr_utility.trace('EXCEPTION SAVE_TRANSACTION_STEP'||'STS#');
1315 raise hr_utility.hr_error;
1316 END save_transaction_step;
1317 --
1318 -----------------------------------
1319 PROCEDURE delete_all_ids
1320 (p_item_type in varchar2
1321 ,p_item_key in varchar2) is
1322 cursor get_all_ids (p_transaction_id number) is
1323 select transaction_step_id
1324 from hr_api_transaction_steps
1325 where transaction_id = p_transaction_id;
1326 --
1327 l_result number ;
1328 l_transaction_id number ;
1329 begin
1330 --
1331 l_transaction_id:=hr_transaction_ss.get_transaction_id
1332 (p_item_type => p_item_type
1333 ,p_item_key => p_item_key);
1334 --
1335 for l_result in get_all_ids(p_transaction_id => l_transaction_id) loop
1336 delete from hr_api_transaction_values
1337 where transaction_step_id = l_result.transaction_step_id;
1338 --
1339 delete from hr_api_transaction_steps
1340 where transaction_id = l_transaction_id
1341 and transaction_step_id = l_result.transaction_step_id;
1342 end loop ;
1343 commit;
1344 --
1345 end delete_all_ids;
1346 --
1347 ------------------------------------------------
1348 PROCEDURE delete_transaction_step_id
1349 (p_transaction_step_id IN number) is
1350 l_transaction_step_id number;
1351 l_txid number;
1352 --
1353 l_mode varchar2(20) default null;
1354 l_comp_element_outcome_id number default null;
1355 l_transaction_id number;
1356 CURSOR get_txn_step_id IS select transaction_id
1357 from hr_api_transaction_steps
1358 where transaction_step_id = p_transaction_step_id
1359 and rownum = 1;
1360 BEGIN
1361 l_transaction_step_id := p_transaction_step_id;
1362 --
1363 FOR rec IN get_txn_step_id
1364 loop
1365 delete from hr_api_transaction_values where transaction_step_id = l_transaction_step_id ;
1366 delete from hr_api_transaction_steps where transaction_step_id = l_transaction_step_id ;
1367 END loop;
1368 --
1369 END delete_transaction_step_id;
1370 --
1371 ----------------------------------------------------------------------------
1372 ---------------------------------------------------
1373 -- for saving fields from the update details page to tx tables
1374 procedure save_update_details
1375 (p_item_type in varchar2
1376 ,p_item_key in varchar2
1377 ,p_activity_id in varchar2
1378 ,p_outcome_id in number
1379 ,p_competence_element_id in number default null
1380 ,p_comp_element_outcome_id in number default null
1381 ,p_date_from in varchar2 default null
1382 ,p_date_to in varchar2 default null
1383 ,p_preupd_obj_vers_num in number default null
1384 ,p_transaction_step_id in number
1385 ,p_prev_date_from in varchar2 default null
1386 ,p_pre_date_to in varchar2 default null
1387 ,p_person_id IN VARCHAR2 DEFAULT null
1388 ,p_error_message out nocopy long) is
1389 --
1390 --
1391 l_user_date_format varchar2(20) ;
1392 l_date_from date default null;
1393 l_date_to date default null;
1394 l_prev_date date;
1395 l_prev_start_date date;
1396 l_date_error boolean default null;
1397 l_transaction_step_id number;
1398 --
1399 --------------
1400 l_object_version_number number default null;
1401 l_trans_tbl hr_comp_outcome_profile_ss.transaction_table1;
1402 l_count number default 0;
1403 l_action_person_id number default null;
1404 l_proc varchar2(200) ;
1405 -------------
1406 begin
1407 l_proc := g_package || 'save_update_details';
1408 hr_utility.set_location(' Entering:' || l_proc,10);
1409 l_user_date_format := g_date_format;
1410 l_transaction_step_id := p_transaction_step_id;
1411 --
1412 OPEN get_prev_start_date(p_comp_element_outcome_id => p_comp_element_outcome_id);
1413 FETCH get_prev_start_date into l_prev_date;
1414 IF get_prev_start_date%notfound THEN
1415 hr_utility.set_location(' Entering:' || l_proc,20);
1416 close get_out_name;
1417 raise hr_comp_outcome_profile_ss.g_fatal_error;
1418 ELSE
1419 hr_utility.set_location(' Entering:' || l_proc,30);
1420 CLOSE get_prev_start_date;
1421 END IF;
1422 --
1423 l_prev_start_date := l_prev_date;
1424 --
1425 hr_utility.set_location(' Entering:' || l_proc,40);
1426 api_validate_compout_record
1427 (p_validate => true
1428 ,p_competence_element_id => p_competence_element_id
1429 ,p_outcome_id => p_outcome_id
1430 ,p_change_mode => 'UPGRADE'
1431 ,p_comp_element_outcome_id => p_comp_element_outcome_id
1432 ,p_preupd_obj_vers_num => p_preupd_obj_vers_num
1433 ,p_date_from => p_date_from
1434 ,p_date_to => p_date_to
1435 ,p_date_from_date_type => l_date_from
1436 ,p_date_to_date_type => l_date_to
1437 ,p_person_id => p_person_id
1438 ,p_error_message => p_error_message);
1439 --
1440 IF p_error_message is not null then
1441 hr_utility.set_location(' Entering:' || l_proc,50);
1442 Return;
1443 END IF;
1444 hr_utility.set_location(' Entering:' || l_proc,60);
1445 --
1446 l_count := l_count + 1;
1447 l_trans_tbl(l_count).param_name := 'P_PREV_START_DATE';
1448 l_trans_tbl(l_count).param_value := to_char(l_prev_start_date,g_date_format);
1449 l_trans_tbl(l_count).param_data_type := 'DATE';
1450 --
1451 l_count := l_count + 1;
1452 l_trans_tbl(l_count).param_name := 'P_DATE_FROM';
1453 l_trans_tbl(l_count).param_value := p_date_from;
1454 l_trans_tbl(l_count).param_data_type := 'DATE';
1455 --
1456 l_count := l_count + 1;
1457 l_trans_tbl(l_count).param_name := 'P_DATE_TO';
1458 l_trans_tbl(l_count).param_value := p_date_to;
1459 l_trans_tbl(l_count).param_data_type := 'DATE';
1460 --
1461 --
1462 -- added for comp Qual enhancement RPahune
1463 l_count := l_count + 1;
1464 l_trans_tbl(l_count).param_name := 'P_COMPETENCE_ELEMENT_ID';
1465 l_trans_tbl(l_count).param_value := p_competence_element_id;
1466 l_trans_tbl(l_count).param_data_type := 'NUMBER';
1467 --
1468 l_count := l_count + 1;
1469 l_trans_tbl(l_count).param_name := 'P_COMP_ELEMENT_OUTCOME_ID';
1470 l_trans_tbl(l_count).param_value := p_comp_element_outcome_id;
1471 l_trans_tbl(l_count).param_data_type := 'NUMBER';
1472 --
1473 l_count := l_count + 1;
1474 l_trans_tbl(l_count).param_name := 'P_OUTCOME_ID';
1475 l_trans_tbl(l_count).param_value := p_outcome_id;
1479 hr_utility.set_location(' Entering:' || l_proc,70);
1476 l_trans_tbl(l_count).param_data_type := 'NUMBER';
1477 --
1478 -- End add
1480 save_transaction_step
1481 (p_item_type => p_item_type
1482 ,p_item_key => p_item_key
1483 ,p_actid => to_number(p_activity_id)
1484 ,p_login_person_id => fnd_global.employee_id
1485 ,p_transaction_step_id => l_transaction_step_id
1486 ,p_transaction_data => l_trans_tbl);
1487 ------------------
1488 EXCEPTION
1489 when g_invalid_entry then
1490 hr_utility.set_location(' Entering:' || l_proc,80);
1491 raise g_invalid_entry;
1492 --
1493 when others then
1494 hr_utility.set_location(' Entering:' || l_proc,90);
1495 raise g_invalid_entry;
1496 --
1497 end save_update_details;
1498 --
1499 --------------------------------------------------------------------
1500 --
1501 ------------------------------------------------
1502 Procedure delete_add_page
1503 (p_transaction_step_id in number) is
1504 --
1505 CURSOR get_step_ids (txn_step_id IN number) is
1506 Select outcome.transaction_step_id
1507 FROM hr_api_transaction_steps outcome,
1508 hr_api_transaction_values ocomp,
1509 hr_api_transaction_values operson,
1510 hr_api_transaction_values ofrom_dt,
1511 hr_api_transaction_values oto_dt,
1512 hr_api_transaction_steps competence,
1513 hr_api_transaction_values ccomp,
1514 hr_api_transaction_values cperson,
1515 hr_api_transaction_values cfrom_dt,
1516 hr_api_transaction_values cto_dt
1517 Where competence.transaction_step_id = txn_step_id
1518 AND ccomp.transaction_step_id = competence.transaction_step_id
1519 AND cperson.transaction_step_id = competence.transaction_step_id
1520 AND cfrom_dt.transaction_step_id = competence.transaction_step_id
1521 AND cto_dt.transaction_step_id = competence.transaction_step_id
1522 AND ccomp.NAME = 'P_COMPETENCE_ID'
1523 AND cperson.NAME = 'P_PERSON_ID'
1524 AND cfrom_dt.NAME = 'P_EFF_DATE_FROM'
1525 AND cto_dt.NAME = 'P_EFF_DATE_TO'
1526 And outcome.item_key = competence.item_key
1527 And outcome.item_type = competence.item_type
1528 And outcome.activity_id = competence.activity_id
1529 And outcome.api_name = HR_COMP_OUTCOME_PROFILE_SS.g_api_name
1530 AND ocomp.transaction_step_id = competence.transaction_step_id
1531 AND operson.transaction_step_id = competence.transaction_step_id
1532 AND ofrom_dt.transaction_step_id = competence.transaction_step_id
1533 AND oto_dt.transaction_step_id = competence.transaction_step_id
1534 AND ocomp.NAME = 'P_COMPETENCE_ID'
1535 AND operson.NAME = 'P_PERSON_ID'
1536 AND ofrom_dt.NAME = 'P_EFF_DATE_FROM'
1537 AND oto_dt.NAME = 'P_EFF_DATE_TO'
1538 And ocomp.number_value = ccomp.number_value
1539 And operson.number_value = cperson.number_value
1540 AND ofrom_dt.date_value >= cfrom_dt.date_value
1541 AND nvl(oto_dt.date_value,trunc(sysdate)) <= nvl(cto_dt.date_value,trunc(sysdate));
1542 --
1543 l_proc varchar2(200);
1544 begin
1545 --
1546 l_proc := g_package || 'delete_add_page';
1547 hr_utility.set_location(' Entering:' || l_proc,10);
1548 FOR txnStepIds IN get_step_ids(p_transaction_step_id) loop
1549 --
1550 --
1551 delete from hr_api_transaction_values where transaction_step_id = txnStepIds.transaction_step_id;
1552 delete from hr_api_transaction_steps where transaction_step_id = txnStepIds.transaction_step_id;
1553 end loop;
1554 --
1555 commit;
1556 --
1557 end delete_add_page;
1558 ---------------------------------------------------------------
1559 --
1560 --
1561 --
1562 --====================================================================================
1563 Procedure api_validate_compout_record(
1564 p_validate in boolean default null
1565 ,p_competence_element_id in NUMBER DEFAULT null
1566 ,p_competence_id IN NUMBER DEFAULT null
1567 ,p_outcome_id in number default null
1568 ,p_change_mode in varchar2 default null
1569 ,p_comp_element_outcome_id in number default null
1570 ,p_preupd_obj_vers_num in number default null
1571 ,p_date_from in varchar2 default null
1572 ,p_date_to in varchar2 default null
1573 ,p_date_from_date_type out nocopy date
1574 ,p_date_to_date_type out nocopy date
1575 ,p_person_id IN number
1576 ,p_error_message out nocopy long) is
1577 --
1578 l_user_date_format varchar2(200);
1579 l_date_error boolean default false;
1580 l_date_from date default null;
1581 l_date_to date default null;
1582 l_new_comp_element_outcome_id number default null;
1583 l_new_obj_vers_num number default null;
1584 l_object_version_number number default null;
1585 l_proc varchar2(200);
1586 --
1587 Begin
1588 --
1589 l_proc := g_package || 'api_validate_compout_record';
1590 l_user_date_format :=g_date_format;
1591 Begin
1592 hr_utility.set_location(' Entering:' || l_proc,10);
1593 IF p_date_from is not null THEN
1594 hr_utility.set_location(' Entering:' || l_proc,20);
1595 l_date_from := to_date(p_date_from, l_user_date_format);
1596 END IF;
1597 ---
1598 IF l_date_from > trunc(sysdate) THEN
1599 hr_utility.set_location(' Entering:' || l_proc,30);
1600 p_error_message := 'HR_WEB_DISALLOW_FUTURE_STARTDT';
1601 l_date_error := true;
1602 END IF;
1603 --
1604 EXCEPTION
1605 When others then
1606 hr_utility.set_location(' Entering:' || l_proc,40);
1607 p_error_message := hr_java_conv_util_ss.get_formatted_error_message
1608 (p_error_message => p_error_message,
1609 p_attr_name => 'DateFrom',
1610 p_app_short_name => 'PER',
1611 P_SINGLE_ERROR_MESSAGE => SQLERRM ||' '||to_char(SQLCODE));
1612 l_date_error := true;
1613 END;
1614 --
1615 Begin
1616 --
1617 IF p_date_to is not null THEN
1618 hr_utility.set_location(' Entering:' || l_proc,50);
1619 l_date_to := to_date(p_date_to, l_user_date_format);
1620 END IF;
1621 --
1622 IF l_date_from is not null then
1623 hr_utility.set_location(' Entering:' || l_proc,60);
1624 IF l_date_to < l_date_from THEN
1625 hr_utility.set_location(' Entering:' || l_proc,70);
1626 p_error_message := 'HR_WEB_CEL_DATES_INVL';
1627 l_date_error := true;
1628 END IF;
1629 End IF;
1630 --
1631 EXCEPTION
1632 When others then
1633 hr_utility.set_location(' Entering:' || l_proc,80);
1634 p_error_message := hr_java_conv_util_ss.get_formatted_error_message
1635 (p_error_message => p_error_message,
1636 p_attr_name => 'EndDate',
1637 p_app_short_name => 'PER',
1638 P_SINGLE_ERROR_MESSAGE => SQLERRM ||' '||to_char(SQLCODE));
1639 l_date_error := true;
1640 END;
1641 --
1642 --
1643 --------------------------------------------------------------------
1644 -- Now, if no date format error, we proceed to call api for cross
1645 -- validations.
1646 --------------------------------------------------------------------
1647 --
1648 savepoint validate_output_rec;
1649 --
1650 IF l_date_error THEN
1651 hr_utility.set_location(' Entering:' || l_proc,90);
1652 goto finish_processing;
1653 END IF;
1654 --
1655 -- UPGRADE
1656 IF p_comp_element_outcome_id IS NOT null THEN
1657 hr_utility.set_location(' Entering:' || l_proc,100);
1658 l_object_version_number := p_preupd_obj_vers_num;
1659 per_ceo_upd.upd(p_comp_element_outcome_id => p_comp_element_outcome_id
1660 ,p_competence_element_id => p_competence_element_id
1661 ,p_outcome_id => p_outcome_id
1662 ,p_object_version_number => l_object_version_number
1663 ,p_date_from => l_date_from
1664 ,p_date_to => l_date_to
1665 ,p_effective_date => trunc(sysdate));
1666 --
1667 ELSE -- Add New Record Mode
1668 hr_utility.set_location(' Entering:' || l_proc,110);
1669 per_ceo_ins.ins(p_comp_element_outcome_id => l_new_comp_element_outcome_id
1670 ,p_competence_element_id => p_competence_element_id
1671 ,p_object_version_number => l_new_obj_vers_num
1672 ,p_outcome_id => p_outcome_id
1673 ,p_date_from => l_date_from
1674 ,p_date_to => l_date_to
1675 ,p_effective_date => trunc(sysdate));
1676 END IF;
1677 --
1678 IF p_validate = true THEN
1679 hr_utility.set_location(' Entering:' || l_proc,120);
1680 rollback to validate_output_rec;
1681 END IF;
1682 --
1683 --
1684 <<finish_processing>>
1685 --
1686 if l_date_error then
1687 hr_utility.set_location(' Entering:' || l_proc,130);
1688 rollback to validate_output_rec;
1689 end if;
1690 --
1691 p_date_from_date_type := l_date_from;
1692 p_date_to_date_type := l_date_to;
1693 --
1694 EXCEPTION
1695 When g_invalid_entry then
1696 hr_utility.set_location(' Entering:' || l_proc,140);
1697 rollback to validate_output_rec;
1698 When others then
1699 hr_utility.set_location(' Entering:' || l_proc,150);
1700 rollback to validate_output_rec;
1701 --
1702 End api_validate_compout_record;
1703 --
1704 -- ------------------------------------------------------------------------
1705 -- ---------------------<check_if_cmpocm_rec_changed>---------------------
1706 -- ------------------------------------------------------------------------
1707 -- Purpose: This procedure will compare the values of the rec with the
1708 -- values before update.
1709 -- The caller has made sure that this procedure is called only on an
1710 -- IF the from date/ date to is changed, it
1711 -- will set an output parm to true if the p_change_mode is
1712 -- ------------------------------------------------------------------------
1713 Procedure check_if_cmpocm_rec_changed (
1714 p_comp_element_outcome_id in number
1715 ,p_competence_element_id in number default null
1716 ,p_competence_id in number default null
1717 ,p_outcome_id in number
1718 ,p_date_from in date default null
1719 ,p_date_to in date default null
1720 ,p_change_mode in varchar2
1721 ,p_ignore_warning in varchar2 default null
1722 ,p_rec_changed out nocopy boolean) is
1723 --
1724 --
1725 cursor csr_get_preupd_cmpocm_rec is
1726 SELECT comp_element_outcome_id
1727 ,competence_element_id
1728 ,outcome_id
1729 ,date_from
1730 ,date_to
1731 from per_comp_element_outcomes
1732 where comp_element_outcome_id = p_comp_element_outcome_id;
1733 --
1734 l_changed boolean default null;
1735 l_proc varchar2(200);
1736 --
1737 --
1738 Begin
1739 l_proc := g_package || 'check_if_cmpocm_rec_changed';
1740 hr_utility.set_location(' Entering:' || l_proc,10);
1741 l_changed := false;
1742 --
1743 --
1744 FOR l_preupd_rec IN csr_get_preupd_cmpocm_rec LOOP
1745 hr_utility.set_location(' Entering:' || l_proc || ' in loop for ',20);
1746 IF l_preupd_rec.outcome_id = p_outcome_id AND l_preupd_rec.competence_element_id = p_competence_element_id THEN
1747 null;
1748 ELSE
1749 raise hr_comp_outcome_profile_ss.g_fatal_error;
1750 END IF;
1751 --
1752 --
1753 IF l_preupd_rec.date_from is not null THEN
1754 IF l_preupd_rec.date_from = p_date_from THEN
1755 null;
1756 ELSE
1757 l_changed := true;
1758 END IF;
1759 ELSE -- pre-update is null
1760 IF p_date_from is not null THEN
1761 l_changed := true;
1762 END IF;
1763 END IF;
1764 --
1765 IF l_preupd_rec.date_to is not null THEN
1766 ---------------------------------------------------------------------
1767 -- Only issue a warning if the new eff_date_to is different and is
1768 -- not null.
1769 ---------------------------------------------------------------------
1770 IF l_preupd_rec.date_to = p_date_to THEN
1771 null;
1772 ELSE
1773 l_changed := true;
1774 --
1775 END IF;
1776 ELSE -- pre-update is null
1777 IF p_date_to is not null THEN
1778 l_changed := true;
1779 --
1780 END IF;
1781 END IF;
1782 --
1783 --
1784 END LOOP;
1785 hr_utility.set_location(' Entering:' || l_proc || ' out of loop ',90);
1786 --
1787 p_rec_changed := l_changed;
1788 -- p_warning_exists := l_warning_exists;
1789 --
1790 Exception
1791 When others then
1792 hr_utility.set_location(' Entering:' || l_proc ,100);
1793 raise;
1794 --
1795 End check_if_cmpocm_rec_changed;
1796 ----------------
1797 ----------------
1798 PROCEDURE mark_for_delete
1799 (p_item_type in varchar2
1800 ,p_item_key in varchar2
1801 ,p_activity_id in varchar2
1802 ,p_comp_element_outcome_id in number
1803 ,p_transaction_step_id in varchar2 default null
1804 ,p_error_message OUT nocopy long ) IS
1805 l_transaction_id NUMBER DEFAULT null;
1806 x_trans_ovn NUMBER DEFAULT null;
1807 l_count number;
1808 l_trans_tbl transaction_table1;
1809 l_result varchar2(100);
1810 l_transaction_step_id Number DEFAULT null;
1811 l_proc varchar2(200);
1812 begin
1813 l_proc := g_package || 'mark_for_delete';
1814 hr_utility.set_location(' Entering:' || l_proc ,10);
1815 l_transaction_id := hr_transaction_ss.get_transaction_id(p_item_type => p_item_type
1816 ,p_item_key => p_item_key);
1817 --
1818 IF l_transaction_id is null THEN
1819 hr_utility.set_location(' Entering:' || l_proc ,20);
1820 -- Start a Transaction
1821 hr_transaction_ss.start_transaction
1822 (itemtype => p_item_type
1823 ,itemkey => p_item_key
1824 ,actid => to_number(p_activity_id)
1825 ,funmode => 'RUN'
1826 ,p_login_person_id => fnd_global.employee_id
1827 ,result => l_result);
1828 hr_utility.set_location(' Entering:' || l_proc ,30);
1829 l_transaction_id := hr_transaction_ss.get_transaction_id
1830 (p_item_type => p_item_type
1831 ,p_item_key => p_item_key);
1832 END IF;
1833 If p_transaction_step_id is NULL OR p_transaction_step_id = '-1' then
1834 hr_utility.set_location(' Entering:' || l_proc ,40);
1835 hr_transaction_api.create_transaction_step
1836 (p_validate => false
1837 ,p_creator_person_id => fnd_global.employee_id
1838 ,p_transaction_id => l_transaction_id
1842 ,p_activity_id => p_activity_id
1839 ,p_api_name => 'HR_COMP_OUTCOME_PROFILE_SS.DELETE'
1840 ,p_item_type => p_item_type
1841 ,p_item_key => p_item_key
1843 ,p_transaction_step_id => l_transaction_step_id
1844 ,p_object_version_number => x_trans_ovn);
1845 else
1846 hr_utility.set_location(' Entering:' || l_proc ,50);
1847 l_transaction_step_id := p_transaction_step_id;
1848 End if;
1849 hr_utility.set_location(' Entering:' || l_proc ,60);
1850 l_count := 1;
1851 l_trans_tbl(l_count).param_name := 'P_COMP_ELEMENT_OUTCOME_ID';
1852 l_trans_tbl(l_count).param_value := p_comp_element_outcome_id;
1853 l_trans_tbl(l_count).param_data_type := 'NUMBER';
1854 save_transaction_step(p_item_type => p_item_type
1855 ,p_item_key => p_item_key
1856 ,p_actid => p_activity_id
1857 ,p_login_person_id => fnd_global.employee_id
1858 ,p_transaction_step_id => l_transaction_step_id
1859 ,p_api_name => 'HR_COMP_OUTCOME_PROFILE_SS.DELETE'
1860 ,p_transaction_data => l_trans_tbl);
1861 END mark_for_delete;
1862 ----------------------
1863 ---------------------
1864 ----------------------
1865 PROCEDURE check_delete_rec
1866 ( p_item_type IN varchar2
1867 ,p_item_key IN varchar2
1868 ,p_actid IN varchar2
1869 ,p_person_id IN number
1870 ,p_outcome_id IN number) IS
1871 l_txn_step_id hr_api_transaction_steps.transaction_step_id%type;
1872 l_proc varchar2(200);
1873 begin
1874 l_proc := g_package || 'check_delete_rec';
1875 hr_utility.set_location(' Entering:' || l_proc ,10);
1876 SELECT s.transaction_step_id INTO l_txn_step_id
1877 FROM hr_api_transaction_steps S,
1878 hr_api_transaction_values C,
1879 per_comp_element_outcomes ceo,
1880 per_competence_elements pce
1881 Where s.item_type = p_item_type
1882 and s.item_key = p_item_key
1883 and s.activity_id = nvl((p_actid),s.activity_id)
1884 and s.api_name = 'HR_COMP_OUTCOME_PROFILE_SS.DELETE'
1885 and c.transaction_step_id = s.transaction_step_id
1886 AND C.NAME = 'P_COMP_ELEMENT_OUTCOME_ID'
1887 AND ceo.outcome_id = p_outcome_id
1888 AND ceo.Competence_Element_id = pce.competence_element_id
1889 AND pce.PERSON_ID = p_person_id
1890 AND ceo.comp_element_outcome_id = C.number_value;
1891 IF l_txn_step_id IS NOT NULL then
1892 hr_utility.set_location(' Entering:' || l_proc ,20);
1893 delete_transaction_step_id(l_txn_step_id);
1894 END if;
1895 --
1896 EXCEPTION
1897 When NO_DATA_FOUND then
1898 hr_utility.set_location(' Entering:' || l_proc ,30);
1899 null;
1900 When OTHERS then
1901 hr_utility.set_location(' Entering:' || l_proc ,40);
1902 raise;
1903 /**
1904 --
1905 */
1906 --
1907 End check_delete_rec;
1908 -- Added on 17-Nov-2004
1909 Procedure check_if_cmptnce_rec_changed
1910 (p_item_type IN varchar2
1911 ,p_item_key IN varchar2
1912 ,p_activity_id IN varchar2
1913 ,p_pid in number
1914 ,p_competence_element_id in number
1915 ,p_competence_id in number
1916 ,p_rec_changed out nocopy boolean) is
1917 l_count number;
1918 l_proc varchar2(200);
1919 Begin
1920 p_rec_changed := false;
1921 l_proc := g_package || 'check_if_cmptnce_rec_changed';
1922 hr_utility.set_location(' Entering:' || l_proc ,10);
1923 hr_utility.set_location(' Entering p_item_type :' || p_item_type ,10);
1924 hr_utility.set_location(' Entering p_item_key :' || p_item_key ,10);
1925 hr_utility.set_location(' Entering p_activity_id :' || p_activity_id ,10);
1926 hr_utility.set_location(' Entering p_pid :' || p_pid ,10);
1927 hr_utility.set_location(' Entering p_competence_element_id :' || p_competence_element_id ,10);
1928 hr_utility.set_location(' Entering p_competence_id :' || p_competence_id ,10);
1929 Select Count(*) INTO l_count
1930 FROM hr_api_transaction_steps s, per_competence_outcomes_vl co,
1931 hr_api_transaction_values a, hr_api_transaction_values b,
1932 hr_api_transaction_values c, hr_api_transaction_values p
1933 Where s.item_type = p_item_type
1934 and s.item_key = p_item_key
1935 and s.activity_id = nvl(p_activity_id,s.activity_id)
1936 and s.api_name = 'HR_COMP_OUTCOME_PROFILE_SS.PROCESS_API'
1937 and c.transaction_step_id = s.transaction_step_id
1938 AND CO.COMPETENCE_ID =p_competence_id
1939 AND co.date_from <= trunc(sysdate)
1940 AND nvl(co.date_to,trunc(sysdate)) >= trunc(sysdate)
1941 AND b.date_value >= co.date_from
1942 AND nvl(c.date_Value,trunc(sysdate)) <= nvl(co.date_to, nvl(c.date_Value,trunc(sysdate)))
1943 and a.name = 'P_OUTCOME_ID'
1944 and a.transaction_step_id = s.transaction_step_id
1945 and a.number_value= co.outcome_id
1946 and b.name = 'P_DATE_FROM'
1947 and b.transaction_step_id = s.transaction_step_id
1948 and c.name = 'P_DATE_TO'
1949 and p.transaction_step_id = s.transaction_step_id
1950 and p.name = 'P_PERSON_ID'
1951 and p.Number_Value = p_pid;
1952 IF l_count > 0 then
1953 hr_utility.set_location(' Entering:' || l_proc ,20);
1954 p_rec_changed := true;
1955 END if;
1956 hr_utility.set_location(' Entering:' || l_proc ,30);
1957 SELECT COUNT(*) INTO l_count
1958 FROM hr_api_transaction_steps S,
1959 hr_api_transaction_values C,
1960 per_comp_element_outcomes ceo
1961 Where s.item_type = p_item_type
1962 and s.item_key = p_item_key
1963 and s.activity_id = nvl((p_activity_id),s.activity_id)
1964 and s.api_name = 'HR_COMP_OUTCOME_PROFILE_SS.DELETE'
1965 and c.transaction_step_id = s.transaction_step_id
1966 AND C.NAME = 'P_COMP_ELEMENT_OUTCOME_ID'
1967 AND ceo.Competence_Element_id = p_competence_element_id
1968 AND ceo.comp_element_outcome_id = C.number_value;
1969 IF l_count > 0 then
1970 hr_utility.set_location(' Entering:' || l_proc ,40);
1971 p_rec_changed := true;
1972 END if;
1973 --
1974 EXCEPTION
1975 When OTHERS then
1976 hr_utility.set_location(' Entering:' || l_proc ,50);
1977 raise;
1978 END check_if_cmptnce_rec_changed;
1979 Procedure delete(p_validate in boolean default false
1980 ,p_transaction_step_id in number
1981 ,p_effective_date in varchar2 default null) is
1982 begin
1983 null;
1984 end;
1985 --
1986 --
1987 Procedure process_api(
1988 p_validate in boolean default false
1989 ,p_transaction_step_id in number
1990 ,p_effective_date in varchar2 default null) IS
1991 begin
1992 null;
1993 end;
1994
1995 Procedure del_correct_rec(
1996 p_item_type IN varchar2
1997 ,p_item_key IN varchar2
1998 ,p_activity_id IN varchar2
1999 ,p_competence_element_id in number) is
2000
2001 CURSOR get_del_tsid is
2002 Select DISTINCT s.transaction_step_id
2003 FROM hr_api_transaction_steps S,
2004 hr_api_transaction_values C,
2005 per_comp_element_outcomes ceo
2006 Where s.item_type = p_item_type
2007 and s.item_key = p_item_key
2008 and s.activity_id = nvl((p_activity_id),s.activity_id)
2009 and s.api_name = 'HR_COMP_OUTCOME_PROFILE_SS.DELETE'
2010 and c.transaction_step_id = s.transaction_step_id
2011 AND C.NAME = 'P_COMP_ELEMENT_OUTCOME_ID'
2012 AND c.number_value = ceo.comp_element_outcome_id
2013 AND ceo.competence_element_id = p_competence_element_id;
2014
2015 Cursor get_comp_sid is
2016 Select DISTINCT s.transaction_step_id
2017 FROM hr_api_transaction_steps S,
2018 hr_api_transaction_values C
2019 Where s.item_type = p_item_type
2020 and s.item_key = p_item_key
2021 and s.activity_id = nvl((p_activity_id),s.activity_id)
2022 and s.api_name = 'HR_COMP_PROFILE_SS.PROCESS_API'
2023 AND c.transaction_step_id = s.transaction_step_id
2024 AND c.NAME = 'P_COMPETENCE_ELEMENT_ID'
2025 AND c.number_value = p_competence_element_id;
2026
2027 Cursor get_out_sid is
2028 Select DISTINCT s.transaction_step_id
2029 FROM hr_api_transaction_steps S,
2030 hr_api_transaction_values C
2031 Where s.item_type = p_item_type
2032 and s.item_key = p_item_key
2033 and s.activity_id = nvl((p_activity_id),s.activity_id)
2034 and s.api_name = 'HR_COMP_OUTCOME_PROFILE_SS.PROCESS_API'
2035 AND c.transaction_step_id = s.transaction_step_id
2036 AND c.NAME = 'P_COMPETENCE_ELEMENT_ID'
2037 AND c.number_value = p_competence_element_id;
2038 begin
2039 FOR sid_cur IN get_del_tsid
2040 loop
2041 delete_transaction_step_id(sid_cur.transaction_step_id);
2042 END loop;
2043
2044 FOR sid_comp_cur IN get_comp_sid
2045 loop
2046 delete_transaction_step_id(sid_comp_cur.transaction_step_id);
2047 END loop;
2048 FOR sid_out_cur IN get_out_sid
2049 loop
2050 delete_transaction_step_id(sid_out_cur.transaction_step_id);
2051 END loop;
2052 end;
2053 End hr_comp_outcome_profile_ss;