[Home] [Help]
PACKAGE BODY: APPS.HXC_TIMEKEEPER
Source
1 PACKAGE body hxc_timekeeper AS
2 /* $Header: hxctimekeeper.pkb 120.21.12020000.2 2013/02/14 11:43:55 asrajago ship $ */
3
4 g_package varchar2(50) := 'HXC_TIMEKEEPER';
5 ---
6 ----
7 ----
8 Procedure remove_blank_attribute_rows
9 (p_attributes in out nocopy hxc_attribute_table_type) is
10
11 l_index number;
12
13 Begin
14
15 l_index := p_attributes.first;
16
17 Loop
18 Exit when not p_attributes.exists(l_index);
19
20 if(
21 ( p_attributes(l_index).attribute_category not like 'COST%'
22 and p_attributes(l_index).attribute_category not like 'GRP%'
23 and p_attributes(l_index).attribute_category not like 'ELEMENT%'
24 and p_attributes(l_index).attribute_category not like 'PAEXPITDFF%'
25 and p_attributes(l_index).attribute_category not like 'POS%'
26 and p_attributes(l_index).attribute_category not like 'JOB%'
27 )
28 AND
29 (p_attributes(l_index).attribute1 is null)
30 AND
31 (p_attributes(l_index).attribute2 is null)
32 AND
33 (p_attributes(l_index).attribute3 is null)
34 AND
35 (p_attributes(l_index).attribute4 is null)
36 AND
37 (p_attributes(l_index).attribute5 is null)
38 AND
39 (p_attributes(l_index).attribute6 is null)
40 AND
41 (p_attributes(l_index).attribute7 is null)
42 AND
43 (p_attributes(l_index).attribute8 is null)
44 AND
45 (p_attributes(l_index).attribute9 is null)
46 AND
47 (p_attributes(l_index).attribute10 is null)
48 AND
49 (p_attributes(l_index).attribute11 is null)
50 AND
51 (p_attributes(l_index).attribute12 is null)
52 AND
53 (p_attributes(l_index).attribute13 is null)
54 AND
55 (p_attributes(l_index).attribute14 is null)
56 AND
57 (p_attributes(l_index).attribute15 is null)
58 AND
59 (p_attributes(l_index).attribute16 is null)
60 AND
61 (p_attributes(l_index).attribute17 is null)
62 AND
63 (p_attributes(l_index).attribute18 is null)
64 AND
65 (p_attributes(l_index).attribute19 is null)
66 AND
67 (p_attributes(l_index).attribute20 is null)
68 AND
69 (p_attributes(l_index).attribute21 is null)
70 AND
71 (p_attributes(l_index).attribute22 is null)
72 AND
73 (p_attributes(l_index).attribute23 is null)
74 AND
75 (p_attributes(l_index).attribute24 is null)
76 AND
77 (p_attributes(l_index).attribute25 is null)
78 AND
79 (p_attributes(l_index).attribute26 is null)
80 AND
81 (p_attributes(l_index).attribute27 is null)
82 AND
83 (p_attributes(l_index).attribute28 is null)
84 AND
85 (p_attributes(l_index).attribute29 is null)
86 AND
87 (p_attributes(l_index).attribute30 is null)
88 ) then
89
90 p_attributes.delete(l_index);
91 end if;
92
93 l_index := p_attributes.next(l_index);
94
95 End Loop;
96
97 End remove_blank_attribute_rows;
98
99 --Procedure Added as part of Bug 13524669 --
100 Procedure end_date_app_period
101 (p_timecard_id in hxc_time_building_blocks.time_building_block_id%type
102 ) is
103
104 TYPE numtab IS TABLE OF NUMBER;
105 app_period_tab numtab;
106
107 cursor c_get_appl_period_id(p_timecard_id in number)
108 is
109 select
110 ap1.application_period_id
111 from
112 hxc_tc_ap_links ap1
113 where ap1.timecard_id = p_timecard_id
114 and not exists (
115 select
116 'x'
117 from
118 hxc_tc_ap_links ap2
119 where ap2.application_period_id = ap1.application_period_id
120 and ap2.timecard_id <> p_timecard_id );
121
122 Begin
123 --Code to enddate application periods when timecard is getting deleted.
124 open c_get_appl_period_id(p_timecard_id);
125 fetch c_get_appl_period_id bulk collect
126 into app_period_tab;
127 close c_get_appl_period_id;
128
129 if g_debug then
130 hr_utility.trace('timecard_id: '||p_timecard_id||' has '||app_period_tab.COUNT||' Application Periods attached');
131 end if;
132
133 if (app_period_tab.COUNT > 0) then
134 for i in app_period_tab.first..app_period_tab.last
135 loop
136 hr_utility.trace('End dating application period in hxc_time_building_blocks and deleting from hxc_app_period_summary'||app_period_tab(i));
137 update hxc_time_building_blocks
138 set date_to = sysdate
139 where time_building_block_id = app_period_tab(i)
140 and date_to = hr_general.end_of_time;
141
142 delete from hxc_app_period_summary where APPLICATION_PERIOD_ID = app_period_tab(i);
143 end loop;
144 end if;
145 End end_date_app_period;
146
147
148 ----------------------------------------------------------------------------
149 -- Save Timecard Procedure
150 -- This procedure....
151 ----------------------------------------------------------------------------
152 Procedure save_timecard
153 (p_blocks in out nocopy HXC_BLOCK_TABLE_TYPE
154 ,p_attributes in out nocopy HXC_ATTRIBUTE_TABLE_TYPE
155 ,p_messages in out nocopy HXC_MESSAGE_TABLE_TYPE
156 ,p_timecard_id out nocopy hxc_time_building_blocks.time_building_block_id%type
157 ,p_timecard_ovn out nocopy hxc_time_building_blocks.object_version_number%type
158 ,p_timekeeper_id in hxc_time_building_blocks.resource_id%type DEFAULT NULL
159 ,p_tk_audit_enabled in VARCHAR2 DEFAULT NULL
160 ,p_tk_notify_to in VARCHAR2 DEFAULT NULL
161 ,p_tk_notify_type in VARCHAR2 DEFAULT NULL
162 ) is
163
164
165 cursor c_previous_timecard(
166 p_timecard_id in hxc_timecard_summary.timecard_id%type) is
167 select tk_audit_item_key,tk_audit_item_type
168 from hxc_timecard_summary
169 where timecard_id = p_timecard_id;
170
171 l_timecard_blocks hxc_timecard.block_list;
172 l_day_blocks hxc_timecard.block_list;
173 l_detail_blocks hxc_timecard.block_list;
174 l_transaction_info hxc_timecard.transaction_info;
175 l_timecard_props hxc_timecard_prop_table_type;
176 l_proc varchar2(50) := g_package||'.SAVE_CONTROLLER';
177 l_timecard_index number;
178
179 l_old_style_blks hxc_self_service_time_deposit.timecard_info;
180 l_old_style_attrs hxc_self_service_time_deposit.building_block_attribute_info;
181 l_old_messages hxc_self_service_time_deposit.message_table;
182
183 l_resubmit varchar2(10) := hxc_timecard_deposit_common.c_no;
184
185 l_rollback BOOLEAN := FALSE;
186 l_status_error BOOLEAN := FALSE;
187 e_timekeeper_check EXCEPTION;
188
189 l_item_key WF_ITEMS.ITEM_KEY%TYPE :=NULL;
190
191 l_previous_tk_item_key hxc_timecard_summary.tk_audit_item_key%type;
192 l_previous_tk_item_type hxc_timecard_summary.tk_audit_item_type%type;
193
194 tk_audit_item_type WF_ITEMS.ITEM_TYPE%TYPE :=NULL;
195 tk_audit_process_name VARCHAR2(50) :=NULL;
196
197 n number;
198 l_index NUMBER;
199
200
201 l_resource_id NUMBER;
202 l_tc_start DATE;
203 l_tc_stop DATE;
204 l_approval_status VARCHAR2(20);
205
206 l_abs_ret_messages HXC_MESSAGE_TABLE_TYPE;
207
208 Begin
209
210 --
211 -- Fnd initialization
212 --
213 fnd_msg_pub.initialize;
214 /*
215 IF g_debug THEN
216 hxc_debug_timecard.writeTimecard(p_blocks,p_attributes,'HXC_TIMEKEEPER',10);
217 END IF;
218 */
219
220 g_debug := hr_utility.debug_enabled;
221 ----------------------------------------------------------------------------
222 -- Timecard Preparation
223 ----------------------------------------------------------------------------
224 hxc_timecard_message_helper.initializeerrors;
225
226 p_messages := hxc_message_table_type ();
227
228 -- create savepoint
229 savepoint TK_SAVE_SAVEPOINT;
230
231 hxc_timecard_block_utils.initialize_timecard_index;
232
233 --
234 -- Check input parameters
235 --
236 hxc_deposit_checks.check_inputs
237 (p_blocks => p_blocks
238 ,p_attributes => p_attributes
239 ,p_deposit_mode => hxc_timecard_deposit_common.c_save
240 ,p_template => hxc_timecard_deposit_common.c_no
241 ,p_messages => p_messages
242 );
243 /*
244 -- debug
245 IF g_debug THEN
246 hxc_debug_timecard.writeMessages(p_messages,'HXC_TIMEKEEPER',20);
247 END IF;
248 */
249 hxc_timecard_message_helper.processerrors
250 (p_messages => p_messages);
251
252 --
253 -- First we are getting the preference
254 -- for the resource of the timecard
255 --
256
257 l_timecard_index := hxc_timecard_block_utils.find_active_timecard_index(p_blocks);
258
259 -- this procedure has the otl setup validation
260 hxc_timecard_properties.get_preference_properties
261 (p_validate => hxc_timecard_deposit_common.c_yes
262 ,p_resource_id => p_blocks(l_timecard_index).resource_id
263 ,p_timecard_start_time => fnd_date.canonical_to_date(p_blocks(l_timecard_index).start_time)
264 ,p_timecard_stop_time => fnd_date.canonical_to_date(p_blocks(l_timecard_index).stop_time)
265 ,p_for_timecard => false
266 ,p_messages => p_messages
267 ,p_property_table => l_timecard_props
268 );
269 /*
270 -- debug
271 IF g_debug THEN
272 hxc_debug_timecard.writeMessages(p_messages,'HXC_TIMEKEEPER',30);
273 END IF;
274 */
275 hxc_timecard_message_helper.processerrors
276 (p_messages => p_messages);
277
278 --
279 -- Sort blocks
280 --
281 hxc_timecard_block_utils.sort_blocks
282 (p_blocks => p_blocks
283 ,p_timecard_blocks => l_timecard_blocks
284 ,p_day_blocks => l_day_blocks
285 ,p_detail_blocks => l_detail_blocks
286 );
287
288 ----------------------------------------------------------------------------
289 -- Timecard Prepre-Validation
290 ----------------------------------------------------------------------------
291 --
292 -- Perform basic checks
293 --
294 hxc_deposit_checks.perform_checks
295 (p_blocks => p_blocks
296 ,p_attributes => p_attributes
297 ,p_timecard_props => l_timecard_props
298 ,p_days => l_day_blocks
299 ,p_details => l_detail_blocks
300 ,p_messages => p_messages
301 );
302 /*
303 -- debug
304 IF g_debug THEN
305 hxc_debug_timecard.writeMessages(p_messages,'HXC_TIMEKEEPER',40);
306 END IF;
307 */
308 hxc_timecard_message_helper.processerrors
309 (p_messages => p_messages);
310
311 ----------------------------------------------------------------------------
312 -- Timecard Preparation
313 ----------------------------------------------------------------------------
314
315 --
316 -- Add the security attributes
317 -- ARR: 115.28 change, added p_messages
318 --
319 hxc_security.add_security_attribute
320 (p_blocks => p_blocks
321 ,p_attributes => p_attributes
322 ,p_timecard_props => l_timecard_props
323 ,p_messages => p_messages
324 );
325
326 hxc_timecard_message_helper.processerrors
327 (p_messages => p_messages);
328 --
329 -- Translate any aliases
330 --
331 hxc_timecard_deposit_common.alias_translation
332 (p_blocks => p_blocks
333 ,p_attributes => p_attributes
334 ,p_messages => p_messages
335 );
336 /*
337 -- debug
338 IF g_debug THEN
339 hxc_debug_timecard.writeMessages(p_messages,'HXC_TIMEKEEPER',50);
340 END IF;
341 */
342 hxc_timecard_message_helper.processerrors
343 (p_messages => p_messages);
344
345 --
346 -- Set the block and attribute update process flags
347 -- Based on the data sent and in the db
348 --
349 hxc_block_attribute_update.set_process_flags
350 (p_blocks => p_blocks
351 ,p_attributes => p_attributes
352 );
353
354 --
355 -- Removed any deleted attributes
356 --
357
358 hxc_timecard_attribute_utils.remove_deleted_attributes
359 (p_attributes => p_attributes);
360
361 remove_blank_attribute_rows (p_attributes => p_attributes);
362
363 ----------------------------------------------------------------------------
364 -- Timecard Pre-Validation
365 ----------------------------------------------------------------------------
366 --
367 -- Validate the set up for the user
368 --
369 /*
370 hxc_timecard_deposit_common.validate_setup
371 (p_deposit_mode => hxc_timecard.c_save
372 ,p_blocks => p_blocks
373 ,p_attributes => p_attributes
374 ,p_messages => p_messages
375 );
376
377 -- debug
378 IF g_debug THEN
379 hxc_debug_timecard.writeMessages(p_messages,'HXC_TIMEKEEPER',60);
380 END IF;
381
382 hxc_timecard_message_helper.processerrors
383 (p_messages => p_messages);
384 */
385 /*
386 Call time entry rules for save
387 */
388
389 /*
390 l_old_style_blks := HXC_TIMECARD_BLOCK_UTILS.convert_to_dpwr_blocks
391 (p_blocks);
392
393 l_old_style_attrs := HXC_TIMECARD_ATTRIBUTE_UTILS.convert_to_dpwr_attributes
394 (p_attributes);
395
396 HXC_TIME_ENTRY_RULES_UTILS_PKG.EXECUTE_TIME_ENTRY_RULES
397 (P_OPERATION => hxc_timecard_deposit_common.c_save
398 ,P_TIME_BUILDING_BLOCKS => l_old_style_blks
399 ,P_TIME_ATTRIBUTES => l_old_style_attrs
400 ,P_MESSAGES => l_old_messages
401 ,P_RESUBMIT => hxc_timecard_deposit_common.c_no
402 );
403
404 hxc_timecard_message_utils.append_old_messages
405 (p_messages => p_messages
406 ,p_old_messages => l_old_messages
407 ,p_retrieval_process_id => null
408 );
409
410 hxc_timecard_message_helper.processerrors
411 (p_messages => p_messages);
412 */
413
414 --
415 -- call the application validation
416 --
417 hxc_timecard_validation.recipients_update_validation
418 (p_blocks => p_blocks
419 ,p_attributes => p_attributes
420 ,p_messages => p_messages
421 ,p_props => l_timecard_props
422 ,p_deposit_mode => hxc_timecard_deposit_common.c_save
423 ,p_resubmit => l_resubmit);
424
425 /* Added for bug 8775740 HR Absence Integration
426
427 This pkg call is used to validate absence entries against the
428 Absences Pref setting for the particular resource_id
429
430 */
431 -- Change start
432
433 if g_debug then
434
435 hr_utility.trace('Just before verify_view_only_absences in hxctksave');
436 if (p_blocks.count>0) then
437
438
439 hr_utility.trace(' P_BLOCK TABLE START ');
440 hr_utility.trace(' *****************');
441
442 l_index := p_blocks.FIRST;
443
444 LOOP
445 EXIT WHEN NOT p_blocks.EXISTS (l_index);
446
447
448 hr_utility.trace(' TIME_BUILDING_BLOCK_ID = '|| p_blocks(l_index).TIME_BUILDING_BLOCK_ID );
449 hr_utility.trace(' TYPE = '|| p_blocks(l_index).TYPE ) ;
450 hr_utility.trace(' MEASURE = '|| p_blocks(l_index).MEASURE) ;
451 hr_utility.trace(' UNIT_OF_MEASURE = '|| p_blocks(l_index).UNIT_OF_MEASURE ) ;
452 hr_utility.trace(' START_TIME = '|| p_blocks(l_index).START_TIME ) ;
453 hr_utility.trace(' STOP_TIME = '|| p_blocks(l_index).STOP_TIME ) ;
454 hr_utility.trace(' PARENT_BUILDING_BLOCK_ID = '|| p_blocks(l_index).PARENT_BUILDING_BLOCK_ID ) ;
455 hr_utility.trace(' PARENT_IS_NEW = '|| p_blocks(l_index).PARENT_IS_NEW ) ;
456 hr_utility.trace(' SCOPE = '|| p_blocks(l_index).SCOPE ) ;
457 hr_utility.trace(' OBJECT_VERSION_NUMBER = '|| p_blocks(l_index).OBJECT_VERSION_NUMBER ) ;
458 hr_utility.trace(' APPROVAL_STATUS = '|| p_blocks(l_index).APPROVAL_STATUS ) ;
459 hr_utility.trace(' RESOURCE_ID = '|| p_blocks(l_index).RESOURCE_ID ) ;
460 hr_utility.trace(' RESOURCE_TYPE = '|| p_blocks(l_index).RESOURCE_TYPE ) ;
461 hr_utility.trace(' APPROVAL_STYLE_ID = '|| p_blocks(l_index).APPROVAL_STYLE_ID ) ;
462 hr_utility.trace(' DATE_FROM = '|| p_blocks(l_index).DATE_FROM ) ;
463 hr_utility.trace(' DATE_TO = '|| p_blocks(l_index).DATE_TO ) ;
464 hr_utility.trace(' COMMENT_TEXT = '|| p_blocks(l_index).COMMENT_TEXT ) ;
465 hr_utility.trace(' PARENT_BUILDING_BLOCK_OVN = '|| p_blocks(l_index).PARENT_BUILDING_BLOCK_OVN ) ;
466 hr_utility.trace(' NEW = '|| p_blocks(l_index).NEW ) ;
467 hr_utility.trace(' CHANGED = '|| p_blocks(l_index).CHANGED ) ;
468 hr_utility.trace(' PROCESS = '|| p_blocks(l_index).PROCESS ) ;
469 hr_utility.trace(' APPLICATION_SET_ID = '|| p_blocks(l_index).APPLICATION_SET_ID ) ;
470 hr_utility.trace(' TRANSLATION_DISPLAY_KEY = '|| p_blocks(l_index).TRANSLATION_DISPLAY_KEY ) ;
471 hr_utility.trace('------------------------------------------------------');
472
473 l_index := p_blocks.NEXT (l_index);
474
475 END LOOP;
476
477 hr_utility.trace(' p_blocks TABLE END ');
478 hr_utility.trace(' *****************');
479
480 end if;
481
482 if (p_messages.count>0) then
483
484
485 hr_utility.trace(' P_MESSAGES TABLE START ');
486 hr_utility.trace(' *****************');
487
488 l_index := p_messages.FIRST;
489
490 LOOP
491 EXIT WHEN NOT p_messages.EXISTS (l_index);
492
493
494 hr_utility.trace(' MESSAGE_NAME = '|| p_messages(l_index).MESSAGE_NAME );
495 hr_utility.trace(' MESSAGE_LEVEL = '|| p_messages(l_index).MESSAGE_LEVEL ) ;
496 hr_utility.trace(' MESSAGE_FIELD = '|| p_messages(l_index).MESSAGE_FIELD) ;
497 hr_utility.trace(' MESSAGE_TOKENS = '|| p_messages(l_index).MESSAGE_TOKENS ) ;
498 hr_utility.trace(' APPLICATION_SHORT_NAME = '|| p_messages(l_index).APPLICATION_SHORT_NAME ) ;
499 hr_utility.trace(' TIME_BUILDING_BLOCK_ID = '|| p_messages(l_index).TIME_BUILDING_BLOCK_ID ) ;
500 hr_utility.trace(' TIME_BUILDING_BLOCK_OVN = '|| p_messages(l_index).TIME_BUILDING_BLOCK_OVN ) ;
501 hr_utility.trace(' TIME_ATTRIBUTE_ID = '|| p_messages(l_index).TIME_ATTRIBUTE_ID ) ;
502 hr_utility.trace(' TIME_ATTRIBUTE_OVN = '|| p_messages(l_index).TIME_ATTRIBUTE_OVN ) ;
503 hr_utility.trace(' MESSAGE_EXTENT = '|| p_messages(l_index).MESSAGE_EXTENT ) ;
504
505 l_index := p_messages.NEXT (l_index);
506
507 END LOOP;
508
509 hr_utility.trace(' p_messages TABLE END ');
510 hr_utility.trace(' *****************');
511
512 end if;
513
514 if (p_attributes.count>0) then
515
516
517 hr_utility.trace(' ATTRIBUTES TABLE START ');
518 hr_utility.trace(' *****************');
519
520 l_index := p_attributes.FIRST;
521
522 LOOP
523 EXIT WHEN NOT p_attributes.EXISTS (l_index);
524
525
526 hr_utility.trace(' TIME_ATTRIBUTE_ID = '|| p_attributes(l_index).TIME_ATTRIBUTE_ID);
527 hr_utility.trace(' BUILDING_BLOCK_ID = '|| p_attributes(l_index).BUILDING_BLOCK_ID ) ;
528 hr_utility.trace(' ATTRIBUTE_CATEGORY = '|| p_attributes(l_index).ATTRIBUTE_CATEGORY) ;
529 hr_utility.trace(' ATTRIBUTE1 = '|| p_attributes(l_index).ATTRIBUTE1 ) ;
530 hr_utility.trace(' ATTRIBUTE2 (p_alias_definition_id) = '|| p_attributes(l_index).ATTRIBUTE2 ) ;
531 hr_utility.trace(' ATTRIBUTE3 (l_alias_value_id) = '|| p_attributes(l_index).ATTRIBUTE3 ) ;
532 hr_utility.trace(' ATTRIBUTE4 (p_alias_type) = '|| p_attributes(l_index).ATTRIBUTE4 ) ;
533 hr_utility.trace(' ATTRIBUTE5 = '|| p_attributes(l_index).ATTRIBUTE5 ) ;
534 hr_utility.trace(' ATTRIBUTE6 = '|| p_attributes(l_index).ATTRIBUTE6 ) ;
535 hr_utility.trace(' ATTRIBUTE7 = '|| p_attributes(l_index).ATTRIBUTE7 ) ;
536 hr_utility.trace(' ATTRIBUTE8 = '|| p_attributes(l_index).ATTRIBUTE8 ) ;
537 hr_utility.trace(' ATTRIBUTE9 = '|| p_attributes(l_index).ATTRIBUTE9 ) ;
538 hr_utility.trace(' ATTRIBUTE10 = '|| p_attributes(l_index).ATTRIBUTE10 ) ;
539 hr_utility.trace(' ATTRIBUTE11 = '|| p_attributes(l_index).ATTRIBUTE11 ) ;
540 hr_utility.trace(' ATTRIBUTE12 = '|| p_attributes(l_index).ATTRIBUTE12 ) ;
541 hr_utility.trace(' ATTRIBUTE13 = '|| p_attributes(l_index).ATTRIBUTE13 ) ;
542 hr_utility.trace(' ATTRIBUTE14 = '|| p_attributes(l_index).ATTRIBUTE14 ) ;
543 hr_utility.trace(' ATTRIBUTE15 = '|| p_attributes(l_index).ATTRIBUTE15 ) ;
544 hr_utility.trace(' ATTRIBUTE16 = '|| p_attributes(l_index).ATTRIBUTE16 ) ;
545 hr_utility.trace(' ATTRIBUTE17 = '|| p_attributes(l_index).ATTRIBUTE17 ) ;
546 hr_utility.trace(' ATTRIBUTE18 = '|| p_attributes(l_index).ATTRIBUTE18 ) ;
547 hr_utility.trace(' ATTRIBUTE19 = '|| p_attributes(l_index).ATTRIBUTE19 ) ;
548 hr_utility.trace(' ATTRIBUTE20 = '|| p_attributes(l_index).ATTRIBUTE20 ) ;
549 hr_utility.trace(' ATTRIBUTE21 = '|| p_attributes(l_index).ATTRIBUTE21 ) ;
550 hr_utility.trace(' ATTRIBUTE22 = '|| p_attributes(l_index).ATTRIBUTE22 ) ;
551 hr_utility.trace(' ATTRIBUTE23 = '|| p_attributes(l_index).ATTRIBUTE23 ) ;
552 hr_utility.trace(' ATTRIBUTE24 = '|| p_attributes(l_index).ATTRIBUTE24 ) ;
553 hr_utility.trace(' ATTRIBUTE25 = '|| p_attributes(l_index).ATTRIBUTE25 ) ;
554 hr_utility.trace(' ATTRIBUTE26 = '|| p_attributes(l_index).ATTRIBUTE26 ) ;
555 hr_utility.trace(' ATTRIBUTE27 = '|| p_attributes(l_index).ATTRIBUTE27 ) ;
556 hr_utility.trace(' ATTRIBUTE28 = '|| p_attributes(l_index).ATTRIBUTE28 ) ;
557 hr_utility.trace(' ATTRIBUTE29 (p_alias_ref_object) = '|| p_attributes(l_index).ATTRIBUTE29 ) ;
558 hr_utility.trace(' ATTRIBUTE30 (p_alias_value_name) = '|| p_attributes(l_index).ATTRIBUTE30 ) ;
559 hr_utility.trace(' BLD_BLK_INFO_TYPE_ID = '|| p_attributes(l_index).BLD_BLK_INFO_TYPE_ID );
560 hr_utility.trace(' OBJECT_VERSION_NUMBER = '|| p_attributes(l_index).OBJECT_VERSION_NUMBER );
561 hr_utility.trace(' NEW = '|| p_attributes(l_index).NEW );
562 hr_utility.trace(' CHANGED = '|| p_attributes(l_index).CHANGED );
563 hr_utility.trace(' BLD_BLK_INFO_TYPE = '|| p_attributes(l_index).BLD_BLK_INFO_TYPE );
564 hr_utility.trace(' PROCESS = '|| p_attributes(l_index).PROCESS );
565 hr_utility.trace(' BUILDING_BLOCK_OVN = '|| p_attributes(l_index).BUILDING_BLOCK_OVN );
566 hr_utility.trace('------------------------------------------------------');
567
568 l_index := p_attributes.NEXT (l_index);
569
570 END LOOP;
571
572 hr_utility.trace(' ATTRIBUTES TABLE END ');
573 hr_utility.trace(' *****************');
574
575 end if;
576
577
578
579 end if;
580
581
582
583 hxc_timecard_message_helper.processerrors
584 (p_messages => p_messages);
585
586
587 HXC_RETRIEVE_ABSENCES.verify_view_only_absences
588 ( p_blocks => p_blocks,
589 p_attributes => p_attributes,
590 p_lock_rowid => HXC_RETRIEVE_ABSENCES.g_lock_row_id,
591 p_messages => p_messages
592 );
593
594
595 -- change end
596
597
598
599
600 if g_debug then
601
602 hr_utility.trace('Just after verify_view_only_absences in hxctksave');
603 if (p_blocks.count>0) then
604
605
606 hr_utility.trace(' P_BLOCK TABLE START ');
607 hr_utility.trace(' *****************');
608
609 l_index := p_blocks.FIRST;
610
611 LOOP
612 EXIT WHEN NOT p_blocks.EXISTS (l_index);
613
614
615 hr_utility.trace(' TIME_BUILDING_BLOCK_ID = '|| p_blocks(l_index).TIME_BUILDING_BLOCK_ID );
616 hr_utility.trace(' TYPE = '|| p_blocks(l_index).TYPE ) ;
617 hr_utility.trace(' MEASURE = '|| p_blocks(l_index).MEASURE) ;
618 hr_utility.trace(' UNIT_OF_MEASURE = '|| p_blocks(l_index).UNIT_OF_MEASURE ) ;
619 hr_utility.trace(' START_TIME = '|| p_blocks(l_index).START_TIME ) ;
620 hr_utility.trace(' STOP_TIME = '|| p_blocks(l_index).STOP_TIME ) ;
621 hr_utility.trace(' PARENT_BUILDING_BLOCK_ID = '|| p_blocks(l_index).PARENT_BUILDING_BLOCK_ID ) ;
622 hr_utility.trace(' PARENT_IS_NEW = '|| p_blocks(l_index).PARENT_IS_NEW ) ;
623 hr_utility.trace(' SCOPE = '|| p_blocks(l_index).SCOPE ) ;
624 hr_utility.trace(' OBJECT_VERSION_NUMBER = '|| p_blocks(l_index).OBJECT_VERSION_NUMBER ) ;
625 hr_utility.trace(' APPROVAL_STATUS = '|| p_blocks(l_index).APPROVAL_STATUS ) ;
626 hr_utility.trace(' RESOURCE_ID = '|| p_blocks(l_index).RESOURCE_ID ) ;
627 hr_utility.trace(' RESOURCE_TYPE = '|| p_blocks(l_index).RESOURCE_TYPE ) ;
628 hr_utility.trace(' APPROVAL_STYLE_ID = '|| p_blocks(l_index).APPROVAL_STYLE_ID ) ;
629 hr_utility.trace(' DATE_FROM = '|| p_blocks(l_index).DATE_FROM ) ;
630 hr_utility.trace(' DATE_TO = '|| p_blocks(l_index).DATE_TO ) ;
631 hr_utility.trace(' COMMENT_TEXT = '|| p_blocks(l_index).COMMENT_TEXT ) ;
632 hr_utility.trace(' PARENT_BUILDING_BLOCK_OVN = '|| p_blocks(l_index).PARENT_BUILDING_BLOCK_OVN ) ;
633 hr_utility.trace(' NEW = '|| p_blocks(l_index).NEW ) ;
634 hr_utility.trace(' CHANGED = '|| p_blocks(l_index).CHANGED ) ;
635 hr_utility.trace(' PROCESS = '|| p_blocks(l_index).PROCESS ) ;
636 hr_utility.trace(' APPLICATION_SET_ID = '|| p_blocks(l_index).APPLICATION_SET_ID ) ;
637 hr_utility.trace(' TRANSLATION_DISPLAY_KEY = '|| p_blocks(l_index).TRANSLATION_DISPLAY_KEY ) ;
638 hr_utility.trace('------------------------------------------------------');
639
640 l_index := p_blocks.NEXT (l_index);
641
642 END LOOP;
643
644 hr_utility.trace(' p_blocks TABLE END ');
645 hr_utility.trace(' *****************');
646
647 end if;
648
649
650 if (p_messages.count>0) then
651
652
653 hr_utility.trace(' P_MESSAGES TABLE START ');
654 hr_utility.trace(' *****************');
655
656 l_index := p_messages.FIRST;
657
658 LOOP
659 EXIT WHEN NOT p_messages.EXISTS (l_index);
660
661
662 hr_utility.trace(' MESSAGE_NAME = '|| p_messages(l_index).MESSAGE_NAME );
663 hr_utility.trace(' MESSAGE_LEVEL = '|| p_messages(l_index).MESSAGE_LEVEL ) ;
664 hr_utility.trace(' MESSAGE_FIELD = '|| p_messages(l_index).MESSAGE_FIELD) ;
665 hr_utility.trace(' MESSAGE_TOKENS = '|| p_messages(l_index).MESSAGE_TOKENS ) ;
666 hr_utility.trace(' APPLICATION_SHORT_NAME = '|| p_messages(l_index).APPLICATION_SHORT_NAME ) ;
667 hr_utility.trace(' TIME_BUILDING_BLOCK_ID = '|| p_messages(l_index).TIME_BUILDING_BLOCK_ID ) ;
668 hr_utility.trace(' TIME_BUILDING_BLOCK_OVN = '|| p_messages(l_index).TIME_BUILDING_BLOCK_OVN ) ;
669 hr_utility.trace(' TIME_ATTRIBUTE_ID = '|| p_messages(l_index).TIME_ATTRIBUTE_ID ) ;
670 hr_utility.trace(' TIME_ATTRIBUTE_OVN = '|| p_messages(l_index).TIME_ATTRIBUTE_OVN ) ;
671 hr_utility.trace(' MESSAGE_EXTENT = '|| p_messages(l_index).MESSAGE_EXTENT ) ;
672
673 l_index := p_messages.NEXT (l_index);
674
675 END LOOP;
676
677 hr_utility.trace(' p_messages TABLE END ');
678 hr_utility.trace(' *****************');
679
680 end if;
681
682
683 if (p_attributes.count>0) then
684
685
686 hr_utility.trace(' ATTRIBUTES TABLE START ');
687 hr_utility.trace(' *****************');
688
689 l_index := p_attributes.FIRST;
690
691 LOOP
692 EXIT WHEN NOT p_attributes.EXISTS (l_index);
693
694
695 hr_utility.trace(' TIME_ATTRIBUTE_ID = '|| p_attributes(l_index).TIME_ATTRIBUTE_ID);
696 hr_utility.trace(' BUILDING_BLOCK_ID = '|| p_attributes(l_index).BUILDING_BLOCK_ID ) ;
697 hr_utility.trace(' ATTRIBUTE_CATEGORY = '|| p_attributes(l_index).ATTRIBUTE_CATEGORY) ;
698 hr_utility.trace(' ATTRIBUTE1 = '|| p_attributes(l_index).ATTRIBUTE1 ) ;
699 hr_utility.trace(' ATTRIBUTE2 (p_alias_definition_id) = '|| p_attributes(l_index).ATTRIBUTE2 ) ;
700 hr_utility.trace(' ATTRIBUTE3 (l_alias_value_id) = '|| p_attributes(l_index).ATTRIBUTE3 ) ;
701 hr_utility.trace(' ATTRIBUTE4 (p_alias_type) = '|| p_attributes(l_index).ATTRIBUTE4 ) ;
702 hr_utility.trace(' ATTRIBUTE5 = '|| p_attributes(l_index).ATTRIBUTE5 ) ;
703 hr_utility.trace(' ATTRIBUTE6 = '|| p_attributes(l_index).ATTRIBUTE6 ) ;
704 hr_utility.trace(' ATTRIBUTE7 = '|| p_attributes(l_index).ATTRIBUTE7 ) ;
705 hr_utility.trace(' ATTRIBUTE8 = '|| p_attributes(l_index).ATTRIBUTE8 ) ;
706 hr_utility.trace(' ATTRIBUTE9 = '|| p_attributes(l_index).ATTRIBUTE9 ) ;
707 hr_utility.trace(' ATTRIBUTE10 = '|| p_attributes(l_index).ATTRIBUTE10 ) ;
708 hr_utility.trace(' ATTRIBUTE11 = '|| p_attributes(l_index).ATTRIBUTE11 ) ;
709 hr_utility.trace(' ATTRIBUTE12 = '|| p_attributes(l_index).ATTRIBUTE12 ) ;
710 hr_utility.trace(' ATTRIBUTE13 = '|| p_attributes(l_index).ATTRIBUTE13 ) ;
711 hr_utility.trace(' ATTRIBUTE14 = '|| p_attributes(l_index).ATTRIBUTE14 ) ;
712 hr_utility.trace(' ATTRIBUTE15 = '|| p_attributes(l_index).ATTRIBUTE15 ) ;
713 hr_utility.trace(' ATTRIBUTE16 = '|| p_attributes(l_index).ATTRIBUTE16 ) ;
714 hr_utility.trace(' ATTRIBUTE17 = '|| p_attributes(l_index).ATTRIBUTE17 ) ;
715 hr_utility.trace(' ATTRIBUTE18 = '|| p_attributes(l_index).ATTRIBUTE18 ) ;
716 hr_utility.trace(' ATTRIBUTE19 = '|| p_attributes(l_index).ATTRIBUTE19 ) ;
717 hr_utility.trace(' ATTRIBUTE20 = '|| p_attributes(l_index).ATTRIBUTE20 ) ;
718 hr_utility.trace(' ATTRIBUTE21 = '|| p_attributes(l_index).ATTRIBUTE21 ) ;
719 hr_utility.trace(' ATTRIBUTE22 = '|| p_attributes(l_index).ATTRIBUTE22 ) ;
720 hr_utility.trace(' ATTRIBUTE23 = '|| p_attributes(l_index).ATTRIBUTE23 ) ;
721 hr_utility.trace(' ATTRIBUTE24 = '|| p_attributes(l_index).ATTRIBUTE24 ) ;
722 hr_utility.trace(' ATTRIBUTE25 = '|| p_attributes(l_index).ATTRIBUTE25 ) ;
723 hr_utility.trace(' ATTRIBUTE26 = '|| p_attributes(l_index).ATTRIBUTE26 ) ;
724 hr_utility.trace(' ATTRIBUTE27 = '|| p_attributes(l_index).ATTRIBUTE27 ) ;
725 hr_utility.trace(' ATTRIBUTE28 = '|| p_attributes(l_index).ATTRIBUTE28 ) ;
726 hr_utility.trace(' ATTRIBUTE29 (p_alias_ref_object) = '|| p_attributes(l_index).ATTRIBUTE29 ) ;
727 hr_utility.trace(' ATTRIBUTE30 (p_alias_value_name) = '|| p_attributes(l_index).ATTRIBUTE30 ) ;
728 hr_utility.trace(' BLD_BLK_INFO_TYPE_ID = '|| p_attributes(l_index).BLD_BLK_INFO_TYPE_ID );
729 hr_utility.trace(' OBJECT_VERSION_NUMBER = '|| p_attributes(l_index).OBJECT_VERSION_NUMBER );
730 hr_utility.trace(' NEW = '|| p_attributes(l_index).NEW );
731 hr_utility.trace(' CHANGED = '|| p_attributes(l_index).CHANGED );
732 hr_utility.trace(' BLD_BLK_INFO_TYPE = '|| p_attributes(l_index).BLD_BLK_INFO_TYPE );
733 hr_utility.trace(' PROCESS = '|| p_attributes(l_index).PROCESS );
734 hr_utility.trace(' BUILDING_BLOCK_OVN = '|| p_attributes(l_index).BUILDING_BLOCK_OVN );
735 hr_utility.trace('------------------------------------------------------');
736
737 l_index := p_attributes.NEXT (l_index);
738
739 END LOOP;
740
741 hr_utility.trace(' ATTRIBUTES TABLE END ');
742 hr_utility.trace(' *****************');
743
744 end if;
745
746
747
748 end if;
749
750
751 -- Added for Bug 10326049
752 -- OTL - Projects Payroll Integration
753
754 if g_debug then
755
756 hr_utility.trace('Just before hxc_proj_pay_dep_validation.verify_proj_pay_setup in hxctksave');
757 if (p_blocks.count>0) then
758
759
760 hr_utility.trace(' P_BLOCK TABLE START ');
761 hr_utility.trace(' *****************');
762
763 l_index := p_blocks.FIRST;
764
765 LOOP
766 EXIT WHEN NOT p_blocks.EXISTS (l_index);
767
768
769 hr_utility.trace(' TIME_BUILDING_BLOCK_ID = '|| p_blocks(l_index).TIME_BUILDING_BLOCK_ID );
770 hr_utility.trace(' TYPE = '|| p_blocks(l_index).TYPE ) ;
771 hr_utility.trace(' MEASURE = '|| p_blocks(l_index).MEASURE) ;
772 hr_utility.trace(' UNIT_OF_MEASURE = '|| p_blocks(l_index).UNIT_OF_MEASURE ) ;
773 hr_utility.trace(' START_TIME = '|| p_blocks(l_index).START_TIME ) ;
774 hr_utility.trace(' STOP_TIME = '|| p_blocks(l_index).STOP_TIME ) ;
775 hr_utility.trace(' PARENT_BUILDING_BLOCK_ID = '|| p_blocks(l_index).PARENT_BUILDING_BLOCK_ID ) ;
776 hr_utility.trace(' PARENT_IS_NEW = '|| p_blocks(l_index).PARENT_IS_NEW ) ;
777 hr_utility.trace(' SCOPE = '|| p_blocks(l_index).SCOPE ) ;
778 hr_utility.trace(' OBJECT_VERSION_NUMBER = '|| p_blocks(l_index).OBJECT_VERSION_NUMBER ) ;
779 hr_utility.trace(' APPROVAL_STATUS = '|| p_blocks(l_index).APPROVAL_STATUS ) ;
780 hr_utility.trace(' RESOURCE_ID = '|| p_blocks(l_index).RESOURCE_ID ) ;
781 hr_utility.trace(' RESOURCE_TYPE = '|| p_blocks(l_index).RESOURCE_TYPE ) ;
782 hr_utility.trace(' APPROVAL_STYLE_ID = '|| p_blocks(l_index).APPROVAL_STYLE_ID ) ;
783 hr_utility.trace(' DATE_FROM = '|| p_blocks(l_index).DATE_FROM ) ;
784 hr_utility.trace(' DATE_TO = '|| p_blocks(l_index).DATE_TO ) ;
785 hr_utility.trace(' COMMENT_TEXT = '|| p_blocks(l_index).COMMENT_TEXT ) ;
786 hr_utility.trace(' PARENT_BUILDING_BLOCK_OVN = '|| p_blocks(l_index).PARENT_BUILDING_BLOCK_OVN ) ;
787 hr_utility.trace(' NEW = '|| p_blocks(l_index).NEW ) ;
788 hr_utility.trace(' CHANGED = '|| p_blocks(l_index).CHANGED ) ;
789 hr_utility.trace(' PROCESS = '|| p_blocks(l_index).PROCESS ) ;
790 hr_utility.trace(' APPLICATION_SET_ID = '|| p_blocks(l_index).APPLICATION_SET_ID ) ;
791 hr_utility.trace(' TRANSLATION_DISPLAY_KEY = '|| p_blocks(l_index).TRANSLATION_DISPLAY_KEY ) ;
792 hr_utility.trace('------------------------------------------------------');
793
794 l_index := p_blocks.NEXT (l_index);
795
796 END LOOP;
797
798 hr_utility.trace(' p_blocks TABLE END ');
799 hr_utility.trace(' *****************');
800
801 end if;
802
803 if (p_messages.count>0) then
804
805
806 hr_utility.trace(' P_MESSAGES TABLE START ');
807 hr_utility.trace(' *****************');
808
809 l_index := p_messages.FIRST;
810
811 LOOP
812 EXIT WHEN NOT p_messages.EXISTS (l_index);
813
814
815 hr_utility.trace(' MESSAGE_NAME = '|| p_messages(l_index).MESSAGE_NAME );
816 hr_utility.trace(' MESSAGE_LEVEL = '|| p_messages(l_index).MESSAGE_LEVEL ) ;
817 hr_utility.trace(' MESSAGE_FIELD = '|| p_messages(l_index).MESSAGE_FIELD) ;
818 hr_utility.trace(' MESSAGE_TOKENS = '|| p_messages(l_index).MESSAGE_TOKENS ) ;
819 hr_utility.trace(' APPLICATION_SHORT_NAME = '|| p_messages(l_index).APPLICATION_SHORT_NAME ) ;
820 hr_utility.trace(' TIME_BUILDING_BLOCK_ID = '|| p_messages(l_index).TIME_BUILDING_BLOCK_ID ) ;
821 hr_utility.trace(' TIME_BUILDING_BLOCK_OVN = '|| p_messages(l_index).TIME_BUILDING_BLOCK_OVN ) ;
822 hr_utility.trace(' TIME_ATTRIBUTE_ID = '|| p_messages(l_index).TIME_ATTRIBUTE_ID ) ;
823 hr_utility.trace(' TIME_ATTRIBUTE_OVN = '|| p_messages(l_index).TIME_ATTRIBUTE_OVN ) ;
824 hr_utility.trace(' MESSAGE_EXTENT = '|| p_messages(l_index).MESSAGE_EXTENT ) ;
825
826 l_index := p_messages.NEXT (l_index);
827
828 END LOOP;
829
830 hr_utility.trace(' p_messages TABLE END ');
831 hr_utility.trace(' *****************');
832
833 end if;
834
835 if (p_attributes.count>0) then
836
837
838 hr_utility.trace(' ATTRIBUTES TABLE START ');
839 hr_utility.trace(' *****************');
840
841 l_index := p_attributes.FIRST;
842
843 LOOP
844 EXIT WHEN NOT p_attributes.EXISTS (l_index);
845
846
847 hr_utility.trace(' TIME_ATTRIBUTE_ID = '|| p_attributes(l_index).TIME_ATTRIBUTE_ID);
848 hr_utility.trace(' BUILDING_BLOCK_ID = '|| p_attributes(l_index).BUILDING_BLOCK_ID ) ;
849 hr_utility.trace(' ATTRIBUTE_CATEGORY = '|| p_attributes(l_index).ATTRIBUTE_CATEGORY) ;
850 hr_utility.trace(' ATTRIBUTE1 = '|| p_attributes(l_index).ATTRIBUTE1 ) ;
851 hr_utility.trace(' ATTRIBUTE2 (p_alias_definition_id) = '|| p_attributes(l_index).ATTRIBUTE2 ) ;
852 hr_utility.trace(' ATTRIBUTE3 (l_alias_value_id) = '|| p_attributes(l_index).ATTRIBUTE3 ) ;
853 hr_utility.trace(' ATTRIBUTE4 (p_alias_type) = '|| p_attributes(l_index).ATTRIBUTE4 ) ;
854 hr_utility.trace(' ATTRIBUTE5 = '|| p_attributes(l_index).ATTRIBUTE5 ) ;
855 hr_utility.trace(' ATTRIBUTE6 = '|| p_attributes(l_index).ATTRIBUTE6 ) ;
856 hr_utility.trace(' ATTRIBUTE7 = '|| p_attributes(l_index).ATTRIBUTE7 ) ;
857 hr_utility.trace(' ATTRIBUTE8 = '|| p_attributes(l_index).ATTRIBUTE8 ) ;
858 hr_utility.trace(' ATTRIBUTE9 = '|| p_attributes(l_index).ATTRIBUTE9 ) ;
859 hr_utility.trace(' ATTRIBUTE10 = '|| p_attributes(l_index).ATTRIBUTE10 ) ;
860 hr_utility.trace(' ATTRIBUTE11 = '|| p_attributes(l_index).ATTRIBUTE11 ) ;
861 hr_utility.trace(' ATTRIBUTE12 = '|| p_attributes(l_index).ATTRIBUTE12 ) ;
862 hr_utility.trace(' ATTRIBUTE13 = '|| p_attributes(l_index).ATTRIBUTE13 ) ;
863 hr_utility.trace(' ATTRIBUTE14 = '|| p_attributes(l_index).ATTRIBUTE14 ) ;
864 hr_utility.trace(' ATTRIBUTE15 = '|| p_attributes(l_index).ATTRIBUTE15 ) ;
865 hr_utility.trace(' ATTRIBUTE16 = '|| p_attributes(l_index).ATTRIBUTE16 ) ;
866 hr_utility.trace(' ATTRIBUTE17 = '|| p_attributes(l_index).ATTRIBUTE17 ) ;
867 hr_utility.trace(' ATTRIBUTE18 = '|| p_attributes(l_index).ATTRIBUTE18 ) ;
868 hr_utility.trace(' ATTRIBUTE19 = '|| p_attributes(l_index).ATTRIBUTE19 ) ;
869 hr_utility.trace(' ATTRIBUTE20 = '|| p_attributes(l_index).ATTRIBUTE20 ) ;
870 hr_utility.trace(' ATTRIBUTE21 = '|| p_attributes(l_index).ATTRIBUTE21 ) ;
871 hr_utility.trace(' ATTRIBUTE22 = '|| p_attributes(l_index).ATTRIBUTE22 ) ;
872 hr_utility.trace(' ATTRIBUTE23 = '|| p_attributes(l_index).ATTRIBUTE23 ) ;
873 hr_utility.trace(' ATTRIBUTE24 = '|| p_attributes(l_index).ATTRIBUTE24 ) ;
874 hr_utility.trace(' ATTRIBUTE25 = '|| p_attributes(l_index).ATTRIBUTE25 ) ;
875 hr_utility.trace(' ATTRIBUTE26 = '|| p_attributes(l_index).ATTRIBUTE26 ) ;
876 hr_utility.trace(' ATTRIBUTE27 = '|| p_attributes(l_index).ATTRIBUTE27 ) ;
877 hr_utility.trace(' ATTRIBUTE28 = '|| p_attributes(l_index).ATTRIBUTE28 ) ;
878 hr_utility.trace(' ATTRIBUTE29 (p_alias_ref_object) = '|| p_attributes(l_index).ATTRIBUTE29 ) ;
879 hr_utility.trace(' ATTRIBUTE30 (p_alias_value_name) = '|| p_attributes(l_index).ATTRIBUTE30 ) ;
880 hr_utility.trace(' BLD_BLK_INFO_TYPE_ID = '|| p_attributes(l_index).BLD_BLK_INFO_TYPE_ID );
881 hr_utility.trace(' OBJECT_VERSION_NUMBER = '|| p_attributes(l_index).OBJECT_VERSION_NUMBER );
882 hr_utility.trace(' NEW = '|| p_attributes(l_index).NEW );
883 hr_utility.trace(' CHANGED = '|| p_attributes(l_index).CHANGED );
884 hr_utility.trace(' BLD_BLK_INFO_TYPE = '|| p_attributes(l_index).BLD_BLK_INFO_TYPE );
885 hr_utility.trace(' PROCESS = '|| p_attributes(l_index).PROCESS );
886 hr_utility.trace(' BUILDING_BLOCK_OVN = '|| p_attributes(l_index).BUILDING_BLOCK_OVN );
887 hr_utility.trace('------------------------------------------------------');
888
889 l_index := p_attributes.NEXT (l_index);
890
891 END LOOP;
892
893 hr_utility.trace(' ATTRIBUTES TABLE END ');
894 hr_utility.trace(' *****************');
895
896 end if;
897
898
899
900 end if;
901
902
903
904 hxc_timecard_message_helper.processerrors
905 (p_messages => p_messages);
906
907
908 IF g_debug THEN
909 hr_utility.trace('PA-PAY> In hxc_timekeeper.save_timecard');
910 hr_utility.trace('PA-PAY> calling hxc_proj_pay_dep_validation.verify_proj_pay_setup');
911 END IF;
912
913 hxc_proj_pay_dep_validation.verify_proj_pay_setup
914 (p_blocks => p_blocks,
915 p_attributes => p_attributes,
916 p_messages => p_messages);
917
918
919 if g_debug then
920
921 hr_utility.trace('Just after hxc_proj_pay_dep_validation.verify_proj_pay_setup in hxctksave');
922 if (p_blocks.count>0) then
923
924
925 hr_utility.trace(' P_BLOCK TABLE START ');
926 hr_utility.trace(' *****************');
927
928 l_index := p_blocks.FIRST;
929
930 LOOP
931 EXIT WHEN NOT p_blocks.EXISTS (l_index);
932
933
934 hr_utility.trace(' TIME_BUILDING_BLOCK_ID = '|| p_blocks(l_index).TIME_BUILDING_BLOCK_ID );
935 hr_utility.trace(' TYPE = '|| p_blocks(l_index).TYPE ) ;
936 hr_utility.trace(' MEASURE = '|| p_blocks(l_index).MEASURE) ;
937 hr_utility.trace(' UNIT_OF_MEASURE = '|| p_blocks(l_index).UNIT_OF_MEASURE ) ;
938 hr_utility.trace(' START_TIME = '|| p_blocks(l_index).START_TIME ) ;
939 hr_utility.trace(' STOP_TIME = '|| p_blocks(l_index).STOP_TIME ) ;
940 hr_utility.trace(' PARENT_BUILDING_BLOCK_ID = '|| p_blocks(l_index).PARENT_BUILDING_BLOCK_ID ) ;
941 hr_utility.trace(' PARENT_IS_NEW = '|| p_blocks(l_index).PARENT_IS_NEW ) ;
942 hr_utility.trace(' SCOPE = '|| p_blocks(l_index).SCOPE ) ;
943 hr_utility.trace(' OBJECT_VERSION_NUMBER = '|| p_blocks(l_index).OBJECT_VERSION_NUMBER ) ;
944 hr_utility.trace(' APPROVAL_STATUS = '|| p_blocks(l_index).APPROVAL_STATUS ) ;
945 hr_utility.trace(' RESOURCE_ID = '|| p_blocks(l_index).RESOURCE_ID ) ;
946 hr_utility.trace(' RESOURCE_TYPE = '|| p_blocks(l_index).RESOURCE_TYPE ) ;
947 hr_utility.trace(' APPROVAL_STYLE_ID = '|| p_blocks(l_index).APPROVAL_STYLE_ID ) ;
948 hr_utility.trace(' DATE_FROM = '|| p_blocks(l_index).DATE_FROM ) ;
949 hr_utility.trace(' DATE_TO = '|| p_blocks(l_index).DATE_TO ) ;
950 hr_utility.trace(' COMMENT_TEXT = '|| p_blocks(l_index).COMMENT_TEXT ) ;
951 hr_utility.trace(' PARENT_BUILDING_BLOCK_OVN = '|| p_blocks(l_index).PARENT_BUILDING_BLOCK_OVN ) ;
952 hr_utility.trace(' NEW = '|| p_blocks(l_index).NEW ) ;
953 hr_utility.trace(' CHANGED = '|| p_blocks(l_index).CHANGED ) ;
954 hr_utility.trace(' PROCESS = '|| p_blocks(l_index).PROCESS ) ;
955 hr_utility.trace(' APPLICATION_SET_ID = '|| p_blocks(l_index).APPLICATION_SET_ID ) ;
956 hr_utility.trace(' TRANSLATION_DISPLAY_KEY = '|| p_blocks(l_index).TRANSLATION_DISPLAY_KEY ) ;
957 hr_utility.trace('------------------------------------------------------');
958
959 l_index := p_blocks.NEXT (l_index);
960
961 END LOOP;
962
963 hr_utility.trace(' p_blocks TABLE END ');
964 hr_utility.trace(' *****************');
965
966 end if;
967
968
969 if (p_messages.count>0) then
970
971
972 hr_utility.trace(' P_MESSAGES TABLE START ');
973 hr_utility.trace(' *****************');
974
975 l_index := p_messages.FIRST;
976
977 LOOP
978 EXIT WHEN NOT p_messages.EXISTS (l_index);
979
980
981 hr_utility.trace(' MESSAGE_NAME = '|| p_messages(l_index).MESSAGE_NAME );
982 hr_utility.trace(' MESSAGE_LEVEL = '|| p_messages(l_index).MESSAGE_LEVEL ) ;
983 hr_utility.trace(' MESSAGE_FIELD = '|| p_messages(l_index).MESSAGE_FIELD) ;
984 hr_utility.trace(' MESSAGE_TOKENS = '|| p_messages(l_index).MESSAGE_TOKENS ) ;
985 hr_utility.trace(' APPLICATION_SHORT_NAME = '|| p_messages(l_index).APPLICATION_SHORT_NAME ) ;
986 hr_utility.trace(' TIME_BUILDING_BLOCK_ID = '|| p_messages(l_index).TIME_BUILDING_BLOCK_ID ) ;
987 hr_utility.trace(' TIME_BUILDING_BLOCK_OVN = '|| p_messages(l_index).TIME_BUILDING_BLOCK_OVN ) ;
988 hr_utility.trace(' TIME_ATTRIBUTE_ID = '|| p_messages(l_index).TIME_ATTRIBUTE_ID ) ;
989 hr_utility.trace(' TIME_ATTRIBUTE_OVN = '|| p_messages(l_index).TIME_ATTRIBUTE_OVN ) ;
990 hr_utility.trace(' MESSAGE_EXTENT = '|| p_messages(l_index).MESSAGE_EXTENT ) ;
991
992 l_index := p_messages.NEXT (l_index);
993
994 END LOOP;
995
996 hr_utility.trace(' p_messages TABLE END ');
997 hr_utility.trace(' *****************');
998
999 end if;
1000
1001
1002 if (p_attributes.count>0) then
1003
1004
1005 hr_utility.trace(' ATTRIBUTES TABLE START ');
1006 hr_utility.trace(' *****************');
1007
1008 l_index := p_attributes.FIRST;
1009
1010 LOOP
1011 EXIT WHEN NOT p_attributes.EXISTS (l_index);
1012
1013
1014 hr_utility.trace(' TIME_ATTRIBUTE_ID = '|| p_attributes(l_index).TIME_ATTRIBUTE_ID);
1015 hr_utility.trace(' BUILDING_BLOCK_ID = '|| p_attributes(l_index).BUILDING_BLOCK_ID ) ;
1016 hr_utility.trace(' ATTRIBUTE_CATEGORY = '|| p_attributes(l_index).ATTRIBUTE_CATEGORY) ;
1017 hr_utility.trace(' ATTRIBUTE1 = '|| p_attributes(l_index).ATTRIBUTE1 ) ;
1018 hr_utility.trace(' ATTRIBUTE2 (p_alias_definition_id) = '|| p_attributes(l_index).ATTRIBUTE2 ) ;
1019 hr_utility.trace(' ATTRIBUTE3 (l_alias_value_id) = '|| p_attributes(l_index).ATTRIBUTE3 ) ;
1020 hr_utility.trace(' ATTRIBUTE4 (p_alias_type) = '|| p_attributes(l_index).ATTRIBUTE4 ) ;
1021 hr_utility.trace(' ATTRIBUTE5 = '|| p_attributes(l_index).ATTRIBUTE5 ) ;
1022 hr_utility.trace(' ATTRIBUTE6 = '|| p_attributes(l_index).ATTRIBUTE6 ) ;
1023 hr_utility.trace(' ATTRIBUTE7 = '|| p_attributes(l_index).ATTRIBUTE7 ) ;
1024 hr_utility.trace(' ATTRIBUTE8 = '|| p_attributes(l_index).ATTRIBUTE8 ) ;
1025 hr_utility.trace(' ATTRIBUTE9 = '|| p_attributes(l_index).ATTRIBUTE9 ) ;
1026 hr_utility.trace(' ATTRIBUTE10 = '|| p_attributes(l_index).ATTRIBUTE10 ) ;
1027 hr_utility.trace(' ATTRIBUTE11 = '|| p_attributes(l_index).ATTRIBUTE11 ) ;
1028 hr_utility.trace(' ATTRIBUTE12 = '|| p_attributes(l_index).ATTRIBUTE12 ) ;
1029 hr_utility.trace(' ATTRIBUTE13 = '|| p_attributes(l_index).ATTRIBUTE13 ) ;
1030 hr_utility.trace(' ATTRIBUTE14 = '|| p_attributes(l_index).ATTRIBUTE14 ) ;
1031 hr_utility.trace(' ATTRIBUTE15 = '|| p_attributes(l_index).ATTRIBUTE15 ) ;
1032 hr_utility.trace(' ATTRIBUTE16 = '|| p_attributes(l_index).ATTRIBUTE16 ) ;
1033 hr_utility.trace(' ATTRIBUTE17 = '|| p_attributes(l_index).ATTRIBUTE17 ) ;
1034 hr_utility.trace(' ATTRIBUTE18 = '|| p_attributes(l_index).ATTRIBUTE18 ) ;
1035 hr_utility.trace(' ATTRIBUTE19 = '|| p_attributes(l_index).ATTRIBUTE19 ) ;
1036 hr_utility.trace(' ATTRIBUTE20 = '|| p_attributes(l_index).ATTRIBUTE20 ) ;
1037 hr_utility.trace(' ATTRIBUTE21 = '|| p_attributes(l_index).ATTRIBUTE21 ) ;
1038 hr_utility.trace(' ATTRIBUTE22 = '|| p_attributes(l_index).ATTRIBUTE22 ) ;
1039 hr_utility.trace(' ATTRIBUTE23 = '|| p_attributes(l_index).ATTRIBUTE23 ) ;
1040 hr_utility.trace(' ATTRIBUTE24 = '|| p_attributes(l_index).ATTRIBUTE24 ) ;
1041 hr_utility.trace(' ATTRIBUTE25 = '|| p_attributes(l_index).ATTRIBUTE25 ) ;
1042 hr_utility.trace(' ATTRIBUTE26 = '|| p_attributes(l_index).ATTRIBUTE26 ) ;
1043 hr_utility.trace(' ATTRIBUTE27 = '|| p_attributes(l_index).ATTRIBUTE27 ) ;
1044 hr_utility.trace(' ATTRIBUTE28 = '|| p_attributes(l_index).ATTRIBUTE28 ) ;
1045 hr_utility.trace(' ATTRIBUTE29 (p_alias_ref_object) = '|| p_attributes(l_index).ATTRIBUTE29 ) ;
1046 hr_utility.trace(' ATTRIBUTE30 (p_alias_value_name) = '|| p_attributes(l_index).ATTRIBUTE30 ) ;
1047 hr_utility.trace(' BLD_BLK_INFO_TYPE_ID = '|| p_attributes(l_index).BLD_BLK_INFO_TYPE_ID );
1048 hr_utility.trace(' OBJECT_VERSION_NUMBER = '|| p_attributes(l_index).OBJECT_VERSION_NUMBER );
1049 hr_utility.trace(' NEW = '|| p_attributes(l_index).NEW );
1050 hr_utility.trace(' CHANGED = '|| p_attributes(l_index).CHANGED );
1051 hr_utility.trace(' BLD_BLK_INFO_TYPE = '|| p_attributes(l_index).BLD_BLK_INFO_TYPE );
1052 hr_utility.trace(' PROCESS = '|| p_attributes(l_index).PROCESS );
1053 hr_utility.trace(' BUILDING_BLOCK_OVN = '|| p_attributes(l_index).BUILDING_BLOCK_OVN );
1054 hr_utility.trace('------------------------------------------------------');
1055
1056 l_index := p_attributes.NEXT (l_index);
1057
1058 END LOOP;
1059
1060 hr_utility.trace(' ATTRIBUTES TABLE END ');
1061 hr_utility.trace(' *****************');
1062
1063 end if;
1064
1065
1066
1067 end if;
1068
1069
1070 /* fix for bug 6130457 */
1071
1072 l_timecard_blocks.delete;
1073 l_day_blocks.delete;
1074 l_detail_blocks.delete;
1075
1076 /* end of fix for bug 6130457 */
1077
1078 /* fix by senthil for bug 5099360*/
1079 hxc_timecard_block_utils.sort_blocks
1080 (p_blocks => p_blocks
1081 ,p_timecard_blocks => l_timecard_blocks
1082 ,p_day_blocks => l_day_blocks
1083 ,p_detail_blocks => l_detail_blocks
1084 );
1085 /* end of fix for bug 5099360*/
1086
1087 hxc_timecard_message_helper.processerrors
1088 (p_messages => p_messages);
1089
1090 hxc_timecard_validation.data_set_validation
1091 (p_blocks => p_blocks
1092 ,p_messages => p_messages
1093 );
1094
1095 hxc_timecard_message_helper.processerrors
1096 (p_messages => p_messages);
1097
1098 --
1099 -- At this point of the process
1100 -- we know if the timecard needs to be in error.
1101 --
1102 -- get all the errors
1103 p_messages := hxc_timecard_message_helper.getMessages;
1104
1105 --svg start Bug 9181950
1106 if NOT hxc_timecard_message_helper.noErrors then
1107 --HXC_SVG_LOG.record_log('Reached here:svg');
1108 if g_debug then
1109 hr_utility.trace('SVG: Rollingback to savepoint TK_SAVE_SAVEPOINT for any Projects related updates');
1110 end if;
1111 rollback to TK_SAVE_SAVEPOINT;
1112 end if;
1113 -- svg end
1114
1115
1116
1117
1118
1119 /*
1120 -- debug
1121 IF g_debug THEN
1122 hxc_debug_timecard.writeMessages(p_messages,'HXC_TIMEKEEPER',70);
1123 END IF;
1124 */
1125 hxc_timekeeper_errors.rollback_tc_or_set_err_status
1126 (p_message_table => p_messages
1127 ,p_blocks => p_blocks
1128 ,p_attributes => p_attributes
1129 ,p_rollback => l_rollback
1130 ,p_status_error => l_status_error);
1131
1132 --p_messages.delete;
1133 --
1134 -- if the rollback is set then we need to execute it
1135 --
1136 IF l_rollback THEN
1137 -- we are setting the error to be
1138 -- send
1139 raise e_timekeeper_check;
1140
1141 ELSE
1142 -- p_messages.delete;
1143 --
1144 -- Store blocks and attributes
1145 --
1146
1147 -- get all the errors before the deposit
1148 -- in order to main the -ve ids
1149 -- at this point p_messages is not delete
1150 -- so we still have the full message structures
1151
1152 hxc_timecard_deposit.execute
1153 (p_blocks => p_blocks
1154 ,p_attributes => p_attributes
1155 ,p_timecard_blocks => l_timecard_blocks
1156 ,p_day_blocks => l_day_blocks
1157 ,p_detail_blocks => l_detail_blocks
1158 ,p_messages => p_messages
1159 ,p_transaction_info => l_transaction_info
1160 );
1161
1162 p_timecard_id :=
1163 p_blocks(hxc_timecard_block_utils.find_active_timecard_index(p_blocks)).time_building_block_id;
1164 p_timecard_ovn:=
1165 p_blocks(hxc_timecard_block_utils.find_active_timecard_index(p_blocks)).object_version_number;
1166
1167 hxc_timecard_audit.maintain_latest_details
1168 (p_blocks => p_blocks );
1169
1170 /* Bug 8888904 */
1171
1172 hxc_timecard_audit.maintain_rdb_snapshot
1173 (p_blocks => p_blocks,
1174 p_attributes => p_attributes);
1175
1176
1177 IF p_timekeeper_id IS NOT NULL and
1178 p_tk_audit_enabled = 'Y' and
1179 p_tk_notify_to <> 'NONE' THEN
1180
1181 open c_previous_timecard(p_timecard_id);
1182 fetch c_previous_timecard into l_previous_tk_item_key,l_previous_tk_item_type;
1183 if (c_previous_timecard%found) then
1184
1185 --Cancel notifications for TK Audit
1186
1187 hxc_timekeeper_wf_pkg.cancel_previous_notifications
1188 ( p_tk_audit_item_type => l_previous_tk_item_type
1189 ,p_tk_audit_item_key => l_previous_tk_item_key
1190 );
1191
1192 end if;
1193 close c_previous_timecard;
1194
1195 l_item_key :=
1196 hxc_timekeeper_wf_pkg.begin_audit_process
1197 (p_timecard_id => p_timecard_id
1198 ,p_timecard_ovn => p_timecard_ovn
1199 ,p_resource_id => p_blocks(hxc_timecard_block_utils.find_active_timecard_index(p_blocks)).resource_id
1200 ,p_timekeeper_id => p_timekeeper_id
1201 ,p_tk_audit_enabled => p_tk_audit_enabled
1202 ,p_tk_notify_to => p_tk_notify_to
1203 ,p_tk_notify_type => p_tk_notify_type
1204 ,p_property_table => l_timecard_props
1205 );
1206 END IF;
1207
1208 IF l_item_key IS NOT NULL THEN
1209 tk_audit_process_name := 'HXC_TK_AUDIT_PROCESS';
1210 tk_audit_item_type := 'HXCTKWF';
1211 END IF;
1212
1213 --hxc_timecard_message_helper.processerrors
1214 --(p_messages => p_messages);
1215
1216 --
1217 -- Maintain summary table
1218 --
1219
1220 hxc_timecard_summary_api.timecard_deposit
1221 (p_blocks => p_blocks
1222 ,p_approval_item_type => NULL
1223 ,p_approval_process_name => NULL
1224 ,p_approval_item_key => NULL
1225 ,p_tk_audit_item_type => tk_audit_item_type
1226 ,p_tk_audit_process_name => tk_audit_process_name
1227 ,p_tk_audit_item_key => l_item_key
1228 );
1229
1230 hxc_timecard_audit.audit_deposit
1231 (p_transaction_info => l_transaction_info
1232 ,p_messages => p_messages
1233 );
1234
1235
1236 hr_utility.trace('Calling maintain_errors');
1237
1238 hxc_timekeeper_errors.maintain_errors
1239 (p_messages => p_messages
1240 ,p_timecard_id => p_timecard_id
1241 ,p_timecard_ovn => p_timecard_ovn);
1242
1243 --
1244 -- store error
1245 --
1246 -- get all the errors
1247 -- p_messages := hxc_timecard_message_helper.getMessages;
1248
1249 -- OTL-Absences Integration (Bug 8779478)
1250 -- Modified code to rollback in case on online retrieval errors (Bug 8888138)
1251 IF (nvl(fnd_profile.value('HR_ABS_OTL_INTEGRATION'), 'N') = 'Y') THEN
1252 IF (p_timecard_id > 0 and hxc_timecard_message_helper.noerrors) THEN
1253
1254 IF g_debug THEN
1255 hr_utility.trace('ABS:Initiated Online Retrieval from HXC_TIMEKEEPER.SAVE_TIMECARD');
1256 END IF;
1257
1258 l_abs_ret_messages:= HXC_MESSAGE_TABLE_TYPE();
1259
1260 l_resource_id := p_blocks(l_timecard_index).resource_id;
1261 l_tc_start := fnd_date.canonical_to_date(p_blocks(l_timecard_index).start_time);
1262 l_tc_stop := fnd_date.canonical_to_date(p_blocks(l_timecard_index).stop_time);
1263 l_approval_status := p_blocks(l_timecard_index).approval_status;
1264
1265
1266 HXC_ABS_RETRIEVAL_PKG.POST_ABSENCES (l_resource_id,
1267 l_tc_start,
1268 l_tc_stop,
1269 l_approval_status,
1270 l_abs_ret_messages);
1271
1272 IF g_debug THEN
1273 hr_utility.trace('ABS:p_messages.COUNT = '||l_abs_ret_messages.COUNT);
1274 END IF;
1275
1276 IF l_abs_ret_messages.COUNT > 0 THEN
1277 IF g_debug THEN
1278 hr_utility.trace('ABS: Online Retrieval failed - Rollback changes');
1279 END IF;
1280
1281 rollback to TK_SAVE_SAVEPOINT;
1282
1283 hxc_timekeeper_errors.maintain_errors
1284 (p_messages => l_abs_ret_messages
1285 ,p_timecard_id => p_timecard_id
1286 ,p_timecard_ovn => p_timecard_ovn);
1287
1288 END IF;
1289
1290 END IF;
1291 END IF;
1292
1293
1294
1295 END IF;
1296
1297 --dbms_profiler.stop_profiler;
1298
1299 EXCEPTION
1300 WHEN e_timekeeper_check then
1301 hxc_timecard_message_helper.prepareErrors;
1302 rollback;
1303
1304 End save_timecard;
1305
1306
1307 ----------------------------------------------------------------------------
1308 -- Submit Timecard Procedure
1309 -- This procedure....
1310 ----------------------------------------------------------------------------
1311
1312 Procedure submit_timecard
1313 (p_blocks in out nocopy HXC_BLOCK_TABLE_TYPE
1314 ,p_attributes in out nocopy HXC_ATTRIBUTE_TABLE_TYPE
1315 ,p_messages in out nocopy HXC_MESSAGE_TABLE_TYPE
1316 ,p_timecard_id out nocopy hxc_time_building_blocks.time_building_block_id%type
1317 ,p_timecard_ovn out nocopy hxc_time_building_blocks.object_version_number%type
1318 ,p_timekeeper_id in hxc_time_building_blocks.resource_id%type DEFAULT NULL
1319 ,p_tk_audit_enabled in VARCHAR2 DEFAULT NULL
1320 ,p_tk_notify_to in VARCHAR2 DEFAULT NULL
1321 ,p_tk_notify_type in VARCHAR2 DEFAULT NULL
1322 ) IS
1323
1324 cursor c_previous_timecard(
1325 p_timecard_id in hxc_timecard_summary.timecard_id%type) is
1326 select tk_audit_item_key,tk_audit_item_type
1327 from hxc_timecard_summary
1328 where timecard_id = p_timecard_id;
1329
1330
1331 l_timecard_blocks hxc_timecard.block_list;
1332 l_day_blocks hxc_timecard.block_list;
1333 l_detail_blocks hxc_timecard.block_list;
1334 l_transaction_info hxc_timecard.transaction_info;
1335 l_timecard_props hxc_timecard_prop_table_type;
1336
1337 l_proc varchar2(50) := g_package||'.SUBMIT_TIMECARD';
1338 l_can_deposit boolean := true;
1339 l_resubmit varchar2(10) := hxc_timecard_deposit_common.c_no;
1340 l_timecard_index number;
1341
1342 l_rollback BOOLEAN := FALSE;
1343
1344 l_status_error BOOLEAN := FALSE;
1345
1346 l_item_key WF_ITEMS.ITEM_KEY%TYPE :=NULL;
1347 tk_item_key WF_ITEMS.ITEM_KEY%TYPE :=NULL;
1348 tk_audit_item_type WF_ITEMS.ITEM_TYPE%TYPE :=NULL;
1349 tk_audit_process_name VARCHAR2(50) :=NULL;
1350
1351 l_previous_tk_item_key hxc_timecard_summary.tk_audit_item_key%type;
1352 l_previous_tk_item_type hxc_timecard_summary.tk_audit_item_type%type;
1353
1354 l_index NUMBER;
1355
1356 l_resource_id NUMBER;
1357 l_tc_start DATE;
1358 l_tc_stop DATE;
1359 l_approval_status VARCHAR2(20);
1360
1361 l_abs_ret_messages HXC_MESSAGE_TABLE_TYPE;
1362
1363 BEGIN
1364
1365 --
1366 -- Fnd initialization
1367 --
1368 fnd_msg_pub.initialize;
1369
1370 g_debug:= hr_utility.debug_enabled;
1371
1372 ----------------------------------------------------------------------------
1373 -- Timecard Preparation
1374 ----------------------------------------------------------------------------
1375
1376 hxc_timecard_block_utils.initialize_timecard_index;
1377
1378 hxc_timecard_message_helper.initializeerrors;
1379
1380 p_messages := hxc_message_table_type ();
1381
1382 -- set savepoint
1383 savepoint TK_SUB_SAVEPOINT;
1384 --
1385 -- Check input parameters
1386 --
1387
1388 hxc_deposit_checks.check_inputs
1389 (p_blocks => p_blocks
1390 ,p_attributes => p_attributes
1391 ,p_deposit_mode => hxc_timecard_deposit_common.c_submit
1392 ,p_template => hxc_timecard_deposit_common.c_no
1393 ,p_messages => p_messages
1394 );
1395
1396 hxc_timecard_message_helper.processerrors
1397 (p_messages => p_messages);
1398
1399 --
1400 -- Determine if this is a resubmitted timecard
1401 --
1402 l_timecard_index := hxc_timecard_block_utils.find_active_timecard_index(p_blocks);
1403
1404 if(hxc_timecard_block_utils.date_value(p_blocks(l_timecard_index).date_to)
1405 = hr_general.end_of_time)
1406 then
1407 l_resubmit := hxc_timecard_approval.is_timecard_resubmitted
1408 (p_blocks(l_timecard_index).time_building_block_id
1409 ,p_blocks(l_timecard_index).object_version_number
1410 ,p_blocks(l_timecard_index).resource_id
1411 ,hxc_timecard_block_utils.date_value(p_blocks(l_timecard_index).start_time)
1412 ,hxc_timecard_block_utils.date_value(p_blocks(l_timecard_index).stop_time)
1413 );
1414 else
1415 l_resubmit := hxc_timecard_deposit_common.c_delete;
1416 end if;
1417
1418 --
1419 -- Obtain the timecard properties
1420 -- This might be changed to send
1421 -- this information in from the
1422 -- middle tier, to avoid another
1423 -- pref evaluation
1424 --
1425
1426 hxc_timecard_properties.get_preference_properties
1427 (p_validate => hxc_timecard_deposit_common.c_yes
1428 ,p_resource_id => p_blocks(l_timecard_index).resource_id
1429 ,p_timecard_start_time => fnd_date.canonical_to_date(p_blocks(l_timecard_index).start_time)
1430 ,p_timecard_stop_time => fnd_date.canonical_to_date(p_blocks(l_timecard_index).stop_time)
1431 ,p_for_timecard => false
1432 ,p_messages => p_messages
1433 ,p_property_table => l_timecard_props
1434 );
1435
1436 hxc_timecard_message_helper.processerrors
1437 (p_messages => p_messages);
1438
1439 --
1440 -- Sort the blocks - needed for deposit
1441 -- and all sorts of short cuts!
1442 --
1443
1444 hxc_timecard_block_utils.sort_blocks
1445 (p_blocks => p_blocks
1446 ,p_timecard_blocks => l_timecard_blocks
1447 ,p_day_blocks => l_day_blocks
1448 ,p_detail_blocks => l_detail_blocks
1449 );
1450
1451 --
1452 -- Main deposit controls
1453 -- ^^^^^^^^^^^^^^^^^^^^^
1454 -- Reform time data, if required
1455 -- e.g Denormalize time data
1456 --
1457
1458 hxc_block_attribute_update.denormalize_time
1459 (p_blocks => p_blocks
1460 ,p_mode => 'ADD'
1461 );
1462
1463 --
1464 -- Perform basic checks, e.g.
1465 -- Are there any other timecards for this period?
1466 --
1467
1468 hxc_deposit_checks.perform_checks
1469 (p_blocks => p_blocks
1470 ,p_attributes => p_attributes
1471 ,p_timecard_props => l_timecard_props
1472 ,p_days => l_day_blocks
1473 ,p_details => l_detail_blocks
1474 ,p_messages => p_messages
1475 );
1476
1477 hxc_timecard_message_helper.processerrors
1478 (p_messages => p_messages);
1479
1480 --
1481 -- Add the security attributes
1482 -- ARR: 115.28 change, added p_messages
1483 --
1484 hxc_security.add_security_attribute
1485 (p_blocks => p_blocks,
1486 p_attributes => p_attributes,
1487 p_timecard_props => l_timecard_props,
1488 p_messages => p_messages
1489 );
1490
1491 hxc_timecard_message_helper.processerrors
1492 (p_messages => p_messages);
1493 --
1494 -- Translate any aliases
1495 --
1496 hxc_timecard_deposit_common.alias_translation
1497 (p_blocks => p_blocks
1498 ,p_attributes => p_attributes
1499 ,p_messages => p_messages
1500 );
1501
1502 hxc_timecard_message_helper.processerrors
1503 (p_messages => p_messages);
1504
1505 --
1506 -- Set the block and attribute update process flags
1507 -- Based on the data sent and in the db
1508 --
1509 hxc_block_attribute_update.set_process_flags
1510 (p_blocks => p_blocks
1511 ,p_attributes => p_attributes
1512 );
1513
1514 --
1515 -- Removed any deleted attributes
1516 --
1517
1518 hxc_timecard_attribute_utils.remove_deleted_attributes
1519 (p_attributes => p_attributes);
1520
1521
1522 --
1523 -- Perform process checks
1524 --
1525 hxc_deposit_checks.perform_process_checks
1526 (p_blocks => p_blocks
1527 ,p_attributes => p_attributes
1528 ,p_timecard_props => l_timecard_props
1529 ,p_days => l_day_blocks
1530 ,p_details => l_detail_blocks
1531 ,p_template => hxc_timecard_deposit_common.c_no
1532 ,p_deposit_mode => hxc_timecard_deposit_common.c_submit
1533 ,p_messages => p_messages
1534 );
1535
1536 --in case of rejected TC again resubmit so remove the error raised
1537 --for SS as TK dosn't work in same way .
1538 --set process/changed flag to 'Y'.
1539
1540 IF p_messages.count > 0 THEN
1541
1542 hxc_timekeeper_utilities.check_msg_set_process_flag
1543 ( p_blocks => p_blocks
1544 ,p_attributes => p_attributes
1545 ,p_messages => p_messages
1546 );
1547 END IF;
1548
1549
1550 hxc_timecard_message_helper.processerrors
1551 (p_messages => p_messages);
1552 --
1553 -- Validate blocks, attributes
1554 --
1555 /*
1556 hxc_timecard_validation.deposit_validation
1557 (p_blocks => p_blocks
1558 ,p_attributes => p_attributes
1559 ,p_messages => p_messages
1560 ,p_props => l_timecard_props
1561 ,p_deposit_mode => hxc_timecard_deposit_common.c_submit
1562 ,p_template => hxc_timecard_deposit_common.c_no
1563 ,p_resubmit => l_resubmit
1564 ,p_can_deposit => l_can_deposit
1565 );
1566 */
1567
1568
1569
1570 hxc_timecard_validation.recipients_update_validation
1571 (p_blocks => p_blocks
1572 ,p_attributes => p_attributes
1573 ,p_messages => p_messages
1574 ,p_props => l_timecard_props
1575 ,p_deposit_mode => hxc_timecard_deposit_common.c_submit
1576 ,p_resubmit => l_resubmit);
1577
1578 hxc_timecard_message_helper.processerrors
1579 (p_messages => p_messages);
1580
1581
1582 hxc_timecard_validation.data_set_validation
1583 (p_blocks => p_blocks
1584 ,p_messages => p_messages
1585 );
1586
1587 hxc_timecard_message_helper.processerrors
1588 (p_messages => p_messages);
1589
1590
1591 --
1592 -- Validate the set up for the user
1593 -- Do this only for timecards, and not
1594 -- for templates.
1595 --
1596 /*
1597 hxc_timecard_deposit_common.validate_setup
1598 (p_deposit_mode => hxc_timecard_deposit_common.c_submit
1599 ,p_blocks => p_blocks
1600 ,p_attributes => p_attributes
1601 ,p_messages => p_messages
1602 );
1603
1604 hxc_timecard_message_helper.processerrors
1605 (p_messages => p_messages);
1606 */
1607 --
1608 -- Reform time data, if required
1609 -- e.g Denormalize time data
1610 --
1611 hxc_block_attribute_update.denormalize_time
1612 (p_blocks => p_blocks
1613 ,p_mode => 'REMOVE'
1614 );
1615
1616 --
1617 -- At this point of the process
1618 -- we know if the timecard needs to be in error.
1619 --
1620
1621
1622 /*
1623 -- debug
1624 IF g_debug THEN
1625 hxc_debug_timecard.writeMessages(p_messages,'HXC_TIMEKEEPER',70);
1626 END IF;
1627 */
1628
1629
1630 /* Added for bug 8775740 HR Absence Integration
1631
1632 This pkg call is used to validate absence entries against the
1633 Absences Pref setting for the particular resource_id
1634
1635 */
1636 -- Change start
1637
1638 if g_debug then
1639
1640 hr_utility.trace('Just before verify_view_only_absences in hxctksubmit');
1641 if (p_blocks.count>0) then
1642
1643
1644 hr_utility.trace(' P_BLOCK TABLE START ');
1645 hr_utility.trace(' *****************');
1646
1647 l_index := p_blocks.FIRST;
1648
1649 LOOP
1650 EXIT WHEN NOT p_blocks.EXISTS (l_index);
1651
1652
1653 hr_utility.trace(' TIME_BUILDING_BLOCK_ID = '|| p_blocks(l_index).TIME_BUILDING_BLOCK_ID );
1654 hr_utility.trace(' TYPE = '|| p_blocks(l_index).TYPE ) ;
1655 hr_utility.trace(' MEASURE = '|| p_blocks(l_index).MEASURE) ;
1656 hr_utility.trace(' UNIT_OF_MEASURE = '|| p_blocks(l_index).UNIT_OF_MEASURE ) ;
1657 hr_utility.trace(' START_TIME = '|| p_blocks(l_index).START_TIME ) ;
1658 hr_utility.trace(' STOP_TIME = '|| p_blocks(l_index).STOP_TIME ) ;
1659 hr_utility.trace(' PARENT_BUILDING_BLOCK_ID = '|| p_blocks(l_index).PARENT_BUILDING_BLOCK_ID ) ;
1660 hr_utility.trace(' PARENT_IS_NEW = '|| p_blocks(l_index).PARENT_IS_NEW ) ;
1661 hr_utility.trace(' SCOPE = '|| p_blocks(l_index).SCOPE ) ;
1662 hr_utility.trace(' OBJECT_VERSION_NUMBER = '|| p_blocks(l_index).OBJECT_VERSION_NUMBER ) ;
1663 hr_utility.trace(' APPROVAL_STATUS = '|| p_blocks(l_index).APPROVAL_STATUS ) ;
1664 hr_utility.trace(' RESOURCE_ID = '|| p_blocks(l_index).RESOURCE_ID ) ;
1665 hr_utility.trace(' RESOURCE_TYPE = '|| p_blocks(l_index).RESOURCE_TYPE ) ;
1666 hr_utility.trace(' APPROVAL_STYLE_ID = '|| p_blocks(l_index).APPROVAL_STYLE_ID ) ;
1667 hr_utility.trace(' DATE_FROM = '|| p_blocks(l_index).DATE_FROM ) ;
1668 hr_utility.trace(' DATE_TO = '|| p_blocks(l_index).DATE_TO ) ;
1669 hr_utility.trace(' COMMENT_TEXT = '|| p_blocks(l_index).COMMENT_TEXT ) ;
1670 hr_utility.trace(' PARENT_BUILDING_BLOCK_OVN = '|| p_blocks(l_index).PARENT_BUILDING_BLOCK_OVN ) ;
1671 hr_utility.trace(' NEW = '|| p_blocks(l_index).NEW ) ;
1672 hr_utility.trace(' CHANGED = '|| p_blocks(l_index).CHANGED ) ;
1673 hr_utility.trace(' PROCESS = '|| p_blocks(l_index).PROCESS ) ;
1674 hr_utility.trace(' APPLICATION_SET_ID = '|| p_blocks(l_index).APPLICATION_SET_ID ) ;
1675 hr_utility.trace(' TRANSLATION_DISPLAY_KEY = '|| p_blocks(l_index).TRANSLATION_DISPLAY_KEY ) ;
1676 hr_utility.trace('------------------------------------------------------');
1677
1678 l_index := p_blocks.NEXT (l_index);
1679
1680 END LOOP;
1681
1682 hr_utility.trace(' p_blocks TABLE END ');
1683 hr_utility.trace(' *****************');
1684
1685 end if;
1686
1687
1688 if (p_messages.count>0) then
1689
1690
1691 hr_utility.trace(' P_MESSAGES TABLE START ');
1692 hr_utility.trace(' *****************');
1693
1694 l_index := p_messages.FIRST;
1695
1696 LOOP
1697 EXIT WHEN NOT p_messages.EXISTS (l_index);
1698
1699
1700 hr_utility.trace(' MESSAGE_NAME = '|| p_messages(l_index).MESSAGE_NAME );
1701 hr_utility.trace(' MESSAGE_LEVEL = '|| p_messages(l_index).MESSAGE_LEVEL ) ;
1702 hr_utility.trace(' MESSAGE_FIELD = '|| p_messages(l_index).MESSAGE_FIELD) ;
1703 hr_utility.trace(' MESSAGE_TOKENS = '|| p_messages(l_index).MESSAGE_TOKENS ) ;
1704 hr_utility.trace(' APPLICATION_SHORT_NAME = '|| p_messages(l_index).APPLICATION_SHORT_NAME ) ;
1705 hr_utility.trace(' TIME_BUILDING_BLOCK_ID = '|| p_messages(l_index).TIME_BUILDING_BLOCK_ID ) ;
1706 hr_utility.trace(' TIME_BUILDING_BLOCK_OVN = '|| p_messages(l_index).TIME_BUILDING_BLOCK_OVN ) ;
1707 hr_utility.trace(' TIME_ATTRIBUTE_ID = '|| p_messages(l_index).TIME_ATTRIBUTE_ID ) ;
1708 hr_utility.trace(' TIME_ATTRIBUTE_OVN = '|| p_messages(l_index).TIME_ATTRIBUTE_OVN ) ;
1709 hr_utility.trace(' MESSAGE_EXTENT = '|| p_messages(l_index).MESSAGE_EXTENT ) ;
1710
1711 l_index := p_messages.NEXT (l_index);
1712
1713 END LOOP;
1714
1715 hr_utility.trace(' p_messages TABLE END ');
1716 hr_utility.trace(' *****************');
1717
1718 end if;
1719
1720
1721
1722 if (p_attributes.count>0) then
1723
1724
1725 hr_utility.trace(' ATTRIBUTES TABLE START ');
1726 hr_utility.trace(' *****************');
1727
1728 l_index := p_attributes.FIRST;
1729
1730 LOOP
1731 EXIT WHEN NOT p_attributes.EXISTS (l_index);
1732
1733
1734 hr_utility.trace(' TIME_ATTRIBUTE_ID = '|| p_attributes(l_index).TIME_ATTRIBUTE_ID);
1735 hr_utility.trace(' BUILDING_BLOCK_ID = '|| p_attributes(l_index).BUILDING_BLOCK_ID ) ;
1736 hr_utility.trace(' ATTRIBUTE_CATEGORY = '|| p_attributes(l_index).ATTRIBUTE_CATEGORY) ;
1737 hr_utility.trace(' ATTRIBUTE1 = '|| p_attributes(l_index).ATTRIBUTE1 ) ;
1738 hr_utility.trace(' ATTRIBUTE2 (p_alias_definition_id) = '|| p_attributes(l_index).ATTRIBUTE2 ) ;
1739 hr_utility.trace(' ATTRIBUTE3 (l_alias_value_id) = '|| p_attributes(l_index).ATTRIBUTE3 ) ;
1740 hr_utility.trace(' ATTRIBUTE4 (p_alias_type) = '|| p_attributes(l_index).ATTRIBUTE4 ) ;
1741 hr_utility.trace(' ATTRIBUTE5 = '|| p_attributes(l_index).ATTRIBUTE5 ) ;
1742 hr_utility.trace(' ATTRIBUTE6 = '|| p_attributes(l_index).ATTRIBUTE6 ) ;
1743 hr_utility.trace(' ATTRIBUTE7 = '|| p_attributes(l_index).ATTRIBUTE7 ) ;
1744 hr_utility.trace(' ATTRIBUTE8 = '|| p_attributes(l_index).ATTRIBUTE8 ) ;
1745 hr_utility.trace(' ATTRIBUTE9 = '|| p_attributes(l_index).ATTRIBUTE9 ) ;
1746 hr_utility.trace(' ATTRIBUTE10 = '|| p_attributes(l_index).ATTRIBUTE10 ) ;
1747 hr_utility.trace(' ATTRIBUTE11 = '|| p_attributes(l_index).ATTRIBUTE11 ) ;
1748 hr_utility.trace(' ATTRIBUTE12 = '|| p_attributes(l_index).ATTRIBUTE12 ) ;
1749 hr_utility.trace(' ATTRIBUTE13 = '|| p_attributes(l_index).ATTRIBUTE13 ) ;
1750 hr_utility.trace(' ATTRIBUTE14 = '|| p_attributes(l_index).ATTRIBUTE14 ) ;
1751 hr_utility.trace(' ATTRIBUTE15 = '|| p_attributes(l_index).ATTRIBUTE15 ) ;
1752 hr_utility.trace(' ATTRIBUTE16 = '|| p_attributes(l_index).ATTRIBUTE16 ) ;
1753 hr_utility.trace(' ATTRIBUTE17 = '|| p_attributes(l_index).ATTRIBUTE17 ) ;
1754 hr_utility.trace(' ATTRIBUTE18 = '|| p_attributes(l_index).ATTRIBUTE18 ) ;
1755 hr_utility.trace(' ATTRIBUTE19 = '|| p_attributes(l_index).ATTRIBUTE19 ) ;
1756 hr_utility.trace(' ATTRIBUTE20 = '|| p_attributes(l_index).ATTRIBUTE20 ) ;
1757 hr_utility.trace(' ATTRIBUTE21 = '|| p_attributes(l_index).ATTRIBUTE21 ) ;
1758 hr_utility.trace(' ATTRIBUTE22 = '|| p_attributes(l_index).ATTRIBUTE22 ) ;
1759 hr_utility.trace(' ATTRIBUTE23 = '|| p_attributes(l_index).ATTRIBUTE23 ) ;
1760 hr_utility.trace(' ATTRIBUTE24 = '|| p_attributes(l_index).ATTRIBUTE24 ) ;
1761 hr_utility.trace(' ATTRIBUTE25 = '|| p_attributes(l_index).ATTRIBUTE25 ) ;
1762 hr_utility.trace(' ATTRIBUTE26 = '|| p_attributes(l_index).ATTRIBUTE26 ) ;
1763 hr_utility.trace(' ATTRIBUTE27 = '|| p_attributes(l_index).ATTRIBUTE27 ) ;
1764 hr_utility.trace(' ATTRIBUTE28 = '|| p_attributes(l_index).ATTRIBUTE28 ) ;
1765 hr_utility.trace(' ATTRIBUTE29 (p_alias_ref_object) = '|| p_attributes(l_index).ATTRIBUTE29 ) ;
1766 hr_utility.trace(' ATTRIBUTE30 (p_alias_value_name) = '|| p_attributes(l_index).ATTRIBUTE30 ) ;
1767 hr_utility.trace(' BLD_BLK_INFO_TYPE_ID = '|| p_attributes(l_index).BLD_BLK_INFO_TYPE_ID );
1768 hr_utility.trace(' OBJECT_VERSION_NUMBER = '|| p_attributes(l_index).OBJECT_VERSION_NUMBER );
1769 hr_utility.trace(' NEW = '|| p_attributes(l_index).NEW );
1770 hr_utility.trace(' CHANGED = '|| p_attributes(l_index).CHANGED );
1771 hr_utility.trace(' BLD_BLK_INFO_TYPE = '|| p_attributes(l_index).BLD_BLK_INFO_TYPE );
1772 hr_utility.trace(' PROCESS = '|| p_attributes(l_index).PROCESS );
1773 hr_utility.trace(' BUILDING_BLOCK_OVN = '|| p_attributes(l_index).BUILDING_BLOCK_OVN );
1774 hr_utility.trace('------------------------------------------------------');
1775
1776 l_index := p_attributes.NEXT (l_index);
1777
1778 END LOOP;
1779
1780 hr_utility.trace(' ATTRIBUTES TABLE END ');
1781 hr_utility.trace(' *****************');
1782
1783 end if;
1784
1785
1786
1787 end if;
1788
1789
1790 HXC_RETRIEVE_ABSENCES.verify_view_only_absences
1791 ( p_blocks => p_blocks,
1792 p_attributes => p_attributes,
1793 p_lock_rowid => HXC_RETRIEVE_ABSENCES.g_lock_row_id,
1794 p_messages => p_messages
1795 );
1796
1797 if g_debug then
1798
1799 hr_utility.trace('Just after verify_view_only_absences in hxctksubmit');
1800 if (p_blocks.count>0) then
1801
1802
1803 hr_utility.trace(' P_BLOCK TABLE START ');
1804 hr_utility.trace(' *****************');
1805
1806 l_index := p_blocks.FIRST;
1807
1808 LOOP
1809 EXIT WHEN NOT p_blocks.EXISTS (l_index);
1810
1811
1812 hr_utility.trace(' TIME_BUILDING_BLOCK_ID = '|| p_blocks(l_index).TIME_BUILDING_BLOCK_ID );
1813 hr_utility.trace(' TYPE = '|| p_blocks(l_index).TYPE ) ;
1814 hr_utility.trace(' MEASURE = '|| p_blocks(l_index).MEASURE) ;
1815 hr_utility.trace(' UNIT_OF_MEASURE = '|| p_blocks(l_index).UNIT_OF_MEASURE ) ;
1816 hr_utility.trace(' START_TIME = '|| p_blocks(l_index).START_TIME ) ;
1817 hr_utility.trace(' STOP_TIME = '|| p_blocks(l_index).STOP_TIME ) ;
1818 hr_utility.trace(' PARENT_BUILDING_BLOCK_ID = '|| p_blocks(l_index).PARENT_BUILDING_BLOCK_ID ) ;
1819 hr_utility.trace(' PARENT_IS_NEW = '|| p_blocks(l_index).PARENT_IS_NEW ) ;
1820 hr_utility.trace(' SCOPE = '|| p_blocks(l_index).SCOPE ) ;
1821 hr_utility.trace(' OBJECT_VERSION_NUMBER = '|| p_blocks(l_index).OBJECT_VERSION_NUMBER ) ;
1822 hr_utility.trace(' APPROVAL_STATUS = '|| p_blocks(l_index).APPROVAL_STATUS ) ;
1823 hr_utility.trace(' RESOURCE_ID = '|| p_blocks(l_index).RESOURCE_ID ) ;
1824 hr_utility.trace(' RESOURCE_TYPE = '|| p_blocks(l_index).RESOURCE_TYPE ) ;
1825 hr_utility.trace(' APPROVAL_STYLE_ID = '|| p_blocks(l_index).APPROVAL_STYLE_ID ) ;
1826 hr_utility.trace(' DATE_FROM = '|| p_blocks(l_index).DATE_FROM ) ;
1827 hr_utility.trace(' DATE_TO = '|| p_blocks(l_index).DATE_TO ) ;
1828 hr_utility.trace(' COMMENT_TEXT = '|| p_blocks(l_index).COMMENT_TEXT ) ;
1829 hr_utility.trace(' PARENT_BUILDING_BLOCK_OVN = '|| p_blocks(l_index).PARENT_BUILDING_BLOCK_OVN ) ;
1830 hr_utility.trace(' NEW = '|| p_blocks(l_index).NEW ) ;
1831 hr_utility.trace(' CHANGED = '|| p_blocks(l_index).CHANGED ) ;
1832 hr_utility.trace(' PROCESS = '|| p_blocks(l_index).PROCESS ) ;
1833 hr_utility.trace(' APPLICATION_SET_ID = '|| p_blocks(l_index).APPLICATION_SET_ID ) ;
1834 hr_utility.trace(' TRANSLATION_DISPLAY_KEY = '|| p_blocks(l_index).TRANSLATION_DISPLAY_KEY ) ;
1835 hr_utility.trace('------------------------------------------------------');
1836
1837 l_index := p_blocks.NEXT (l_index);
1838
1839 END LOOP;
1840
1841 hr_utility.trace(' p_blocks TABLE END ');
1842 hr_utility.trace(' *****************');
1843
1844 end if;
1845
1846
1847 if (p_messages.count>0) then
1848
1849
1850 hr_utility.trace(' P_MESSAGES TABLE START ');
1851 hr_utility.trace(' *****************');
1852
1853 l_index := p_messages.FIRST;
1854
1855 LOOP
1856 EXIT WHEN NOT p_messages.EXISTS (l_index);
1857
1858
1859 hr_utility.trace(' MESSAGE_NAME = '|| p_messages(l_index).MESSAGE_NAME );
1860 hr_utility.trace(' MESSAGE_LEVEL = '|| p_messages(l_index).MESSAGE_LEVEL ) ;
1861 hr_utility.trace(' MESSAGE_FIELD = '|| p_messages(l_index).MESSAGE_FIELD) ;
1862 hr_utility.trace(' MESSAGE_TOKENS = '|| p_messages(l_index).MESSAGE_TOKENS ) ;
1863 hr_utility.trace(' APPLICATION_SHORT_NAME = '|| p_messages(l_index).APPLICATION_SHORT_NAME ) ;
1864 hr_utility.trace(' TIME_BUILDING_BLOCK_ID = '|| p_messages(l_index).TIME_BUILDING_BLOCK_ID ) ;
1865 hr_utility.trace(' TIME_BUILDING_BLOCK_OVN = '|| p_messages(l_index).TIME_BUILDING_BLOCK_OVN ) ;
1866 hr_utility.trace(' TIME_ATTRIBUTE_ID = '|| p_messages(l_index).TIME_ATTRIBUTE_ID ) ;
1867 hr_utility.trace(' TIME_ATTRIBUTE_OVN = '|| p_messages(l_index).TIME_ATTRIBUTE_OVN ) ;
1868 hr_utility.trace(' MESSAGE_EXTENT = '|| p_messages(l_index).MESSAGE_EXTENT ) ;
1869
1870 l_index := p_messages.NEXT (l_index);
1871
1872 END LOOP;
1873
1874 hr_utility.trace(' p_messages TABLE END ');
1875 hr_utility.trace(' *****************');
1876
1877 end if;
1878
1879
1880 if (p_attributes.count>0) then
1881
1882
1883 hr_utility.trace(' ATTRIBUTES TABLE START ');
1884 hr_utility.trace(' *****************');
1885
1886 l_index := p_attributes.FIRST;
1887
1888 LOOP
1889 EXIT WHEN NOT p_attributes.EXISTS (l_index);
1890
1891
1892 hr_utility.trace(' TIME_ATTRIBUTE_ID = '|| p_attributes(l_index).TIME_ATTRIBUTE_ID);
1893 hr_utility.trace(' BUILDING_BLOCK_ID = '|| p_attributes(l_index).BUILDING_BLOCK_ID ) ;
1894 hr_utility.trace(' ATTRIBUTE_CATEGORY = '|| p_attributes(l_index).ATTRIBUTE_CATEGORY) ;
1895 hr_utility.trace(' ATTRIBUTE1 = '|| p_attributes(l_index).ATTRIBUTE1 ) ;
1896 hr_utility.trace(' ATTRIBUTE2 (p_alias_definition_id) = '|| p_attributes(l_index).ATTRIBUTE2 ) ;
1897 hr_utility.trace(' ATTRIBUTE3 (l_alias_value_id) = '|| p_attributes(l_index).ATTRIBUTE3 ) ;
1898 hr_utility.trace(' ATTRIBUTE4 (p_alias_type) = '|| p_attributes(l_index).ATTRIBUTE4 ) ;
1899 hr_utility.trace(' ATTRIBUTE5 = '|| p_attributes(l_index).ATTRIBUTE5 ) ;
1900 hr_utility.trace(' ATTRIBUTE6 = '|| p_attributes(l_index).ATTRIBUTE6 ) ;
1901 hr_utility.trace(' ATTRIBUTE7 = '|| p_attributes(l_index).ATTRIBUTE7 ) ;
1902 hr_utility.trace(' ATTRIBUTE8 = '|| p_attributes(l_index).ATTRIBUTE8 ) ;
1903 hr_utility.trace(' ATTRIBUTE9 = '|| p_attributes(l_index).ATTRIBUTE9 ) ;
1904 hr_utility.trace(' ATTRIBUTE10 = '|| p_attributes(l_index).ATTRIBUTE10 ) ;
1905 hr_utility.trace(' ATTRIBUTE11 = '|| p_attributes(l_index).ATTRIBUTE11 ) ;
1906 hr_utility.trace(' ATTRIBUTE12 = '|| p_attributes(l_index).ATTRIBUTE12 ) ;
1907 hr_utility.trace(' ATTRIBUTE13 = '|| p_attributes(l_index).ATTRIBUTE13 ) ;
1908 hr_utility.trace(' ATTRIBUTE14 = '|| p_attributes(l_index).ATTRIBUTE14 ) ;
1909 hr_utility.trace(' ATTRIBUTE15 = '|| p_attributes(l_index).ATTRIBUTE15 ) ;
1910 hr_utility.trace(' ATTRIBUTE16 = '|| p_attributes(l_index).ATTRIBUTE16 ) ;
1911 hr_utility.trace(' ATTRIBUTE17 = '|| p_attributes(l_index).ATTRIBUTE17 ) ;
1912 hr_utility.trace(' ATTRIBUTE18 = '|| p_attributes(l_index).ATTRIBUTE18 ) ;
1913 hr_utility.trace(' ATTRIBUTE19 = '|| p_attributes(l_index).ATTRIBUTE19 ) ;
1914 hr_utility.trace(' ATTRIBUTE20 = '|| p_attributes(l_index).ATTRIBUTE20 ) ;
1915 hr_utility.trace(' ATTRIBUTE21 = '|| p_attributes(l_index).ATTRIBUTE21 ) ;
1916 hr_utility.trace(' ATTRIBUTE22 = '|| p_attributes(l_index).ATTRIBUTE22 ) ;
1917 hr_utility.trace(' ATTRIBUTE23 = '|| p_attributes(l_index).ATTRIBUTE23 ) ;
1918 hr_utility.trace(' ATTRIBUTE24 = '|| p_attributes(l_index).ATTRIBUTE24 ) ;
1919 hr_utility.trace(' ATTRIBUTE25 = '|| p_attributes(l_index).ATTRIBUTE25 ) ;
1920 hr_utility.trace(' ATTRIBUTE26 = '|| p_attributes(l_index).ATTRIBUTE26 ) ;
1921 hr_utility.trace(' ATTRIBUTE27 = '|| p_attributes(l_index).ATTRIBUTE27 ) ;
1922 hr_utility.trace(' ATTRIBUTE28 = '|| p_attributes(l_index).ATTRIBUTE28 ) ;
1923 hr_utility.trace(' ATTRIBUTE29 (p_alias_ref_object) = '|| p_attributes(l_index).ATTRIBUTE29 ) ;
1924 hr_utility.trace(' ATTRIBUTE30 (p_alias_value_name) = '|| p_attributes(l_index).ATTRIBUTE30 ) ;
1925 hr_utility.trace(' BLD_BLK_INFO_TYPE_ID = '|| p_attributes(l_index).BLD_BLK_INFO_TYPE_ID );
1926 hr_utility.trace(' OBJECT_VERSION_NUMBER = '|| p_attributes(l_index).OBJECT_VERSION_NUMBER );
1927 hr_utility.trace(' NEW = '|| p_attributes(l_index).NEW );
1928 hr_utility.trace(' CHANGED = '|| p_attributes(l_index).CHANGED );
1929 hr_utility.trace(' BLD_BLK_INFO_TYPE = '|| p_attributes(l_index).BLD_BLK_INFO_TYPE );
1930 hr_utility.trace(' PROCESS = '|| p_attributes(l_index).PROCESS );
1931 hr_utility.trace(' BUILDING_BLOCK_OVN = '|| p_attributes(l_index).BUILDING_BLOCK_OVN );
1932 hr_utility.trace('------------------------------------------------------');
1933
1934 l_index := p_attributes.NEXT (l_index);
1935
1936 END LOOP;
1937
1938 hr_utility.trace(' ATTRIBUTES TABLE END ');
1939 hr_utility.trace(' *****************');
1940
1941 end if;
1942
1943
1944
1945 end if;
1946
1947
1948 -- Added for Bug 10326049
1949 -- OTL - Projects Payroll Integration
1950
1951 if g_debug then
1952
1953 hr_utility.trace('Just before hxc_proj_pay_dep_validation.verify_proj_pay_setup in hxctksubmit');
1954 if (p_blocks.count>0) then
1955
1956
1957 hr_utility.trace(' P_BLOCK TABLE START ');
1958 hr_utility.trace(' *****************');
1959
1960 l_index := p_blocks.FIRST;
1961
1962 LOOP
1963 EXIT WHEN NOT p_blocks.EXISTS (l_index);
1964
1965
1966 hr_utility.trace(' TIME_BUILDING_BLOCK_ID = '|| p_blocks(l_index).TIME_BUILDING_BLOCK_ID );
1967 hr_utility.trace(' TYPE = '|| p_blocks(l_index).TYPE ) ;
1968 hr_utility.trace(' MEASURE = '|| p_blocks(l_index).MEASURE) ;
1969 hr_utility.trace(' UNIT_OF_MEASURE = '|| p_blocks(l_index).UNIT_OF_MEASURE ) ;
1970 hr_utility.trace(' START_TIME = '|| p_blocks(l_index).START_TIME ) ;
1971 hr_utility.trace(' STOP_TIME = '|| p_blocks(l_index).STOP_TIME ) ;
1972 hr_utility.trace(' PARENT_BUILDING_BLOCK_ID = '|| p_blocks(l_index).PARENT_BUILDING_BLOCK_ID ) ;
1973 hr_utility.trace(' PARENT_IS_NEW = '|| p_blocks(l_index).PARENT_IS_NEW ) ;
1974 hr_utility.trace(' SCOPE = '|| p_blocks(l_index).SCOPE ) ;
1975 hr_utility.trace(' OBJECT_VERSION_NUMBER = '|| p_blocks(l_index).OBJECT_VERSION_NUMBER ) ;
1976 hr_utility.trace(' APPROVAL_STATUS = '|| p_blocks(l_index).APPROVAL_STATUS ) ;
1977 hr_utility.trace(' RESOURCE_ID = '|| p_blocks(l_index).RESOURCE_ID ) ;
1978 hr_utility.trace(' RESOURCE_TYPE = '|| p_blocks(l_index).RESOURCE_TYPE ) ;
1979 hr_utility.trace(' APPROVAL_STYLE_ID = '|| p_blocks(l_index).APPROVAL_STYLE_ID ) ;
1980 hr_utility.trace(' DATE_FROM = '|| p_blocks(l_index).DATE_FROM ) ;
1981 hr_utility.trace(' DATE_TO = '|| p_blocks(l_index).DATE_TO ) ;
1982 hr_utility.trace(' COMMENT_TEXT = '|| p_blocks(l_index).COMMENT_TEXT ) ;
1983 hr_utility.trace(' PARENT_BUILDING_BLOCK_OVN = '|| p_blocks(l_index).PARENT_BUILDING_BLOCK_OVN ) ;
1984 hr_utility.trace(' NEW = '|| p_blocks(l_index).NEW ) ;
1985 hr_utility.trace(' CHANGED = '|| p_blocks(l_index).CHANGED ) ;
1986 hr_utility.trace(' PROCESS = '|| p_blocks(l_index).PROCESS ) ;
1987 hr_utility.trace(' APPLICATION_SET_ID = '|| p_blocks(l_index).APPLICATION_SET_ID ) ;
1988 hr_utility.trace(' TRANSLATION_DISPLAY_KEY = '|| p_blocks(l_index).TRANSLATION_DISPLAY_KEY ) ;
1989 hr_utility.trace('------------------------------------------------------');
1990
1991 l_index := p_blocks.NEXT (l_index);
1992
1993 END LOOP;
1994
1995 hr_utility.trace(' p_blocks TABLE END ');
1996 hr_utility.trace(' *****************');
1997
1998 end if;
1999
2000 if (p_messages.count>0) then
2001
2002
2003 hr_utility.trace(' P_MESSAGES TABLE START ');
2004 hr_utility.trace(' *****************');
2005
2006 l_index := p_messages.FIRST;
2007
2008 LOOP
2009 EXIT WHEN NOT p_messages.EXISTS (l_index);
2010
2011
2012 hr_utility.trace(' MESSAGE_NAME = '|| p_messages(l_index).MESSAGE_NAME );
2013 hr_utility.trace(' MESSAGE_LEVEL = '|| p_messages(l_index).MESSAGE_LEVEL ) ;
2014 hr_utility.trace(' MESSAGE_FIELD = '|| p_messages(l_index).MESSAGE_FIELD) ;
2015 hr_utility.trace(' MESSAGE_TOKENS = '|| p_messages(l_index).MESSAGE_TOKENS ) ;
2016 hr_utility.trace(' APPLICATION_SHORT_NAME = '|| p_messages(l_index).APPLICATION_SHORT_NAME ) ;
2017 hr_utility.trace(' TIME_BUILDING_BLOCK_ID = '|| p_messages(l_index).TIME_BUILDING_BLOCK_ID ) ;
2018 hr_utility.trace(' TIME_BUILDING_BLOCK_OVN = '|| p_messages(l_index).TIME_BUILDING_BLOCK_OVN ) ;
2019 hr_utility.trace(' TIME_ATTRIBUTE_ID = '|| p_messages(l_index).TIME_ATTRIBUTE_ID ) ;
2020 hr_utility.trace(' TIME_ATTRIBUTE_OVN = '|| p_messages(l_index).TIME_ATTRIBUTE_OVN ) ;
2021 hr_utility.trace(' MESSAGE_EXTENT = '|| p_messages(l_index).MESSAGE_EXTENT ) ;
2022
2023 l_index := p_messages.NEXT (l_index);
2024
2025 END LOOP;
2026
2027 hr_utility.trace(' p_messages TABLE END ');
2028 hr_utility.trace(' *****************');
2029
2030 end if;
2031
2032 if (p_attributes.count>0) then
2033
2034
2035 hr_utility.trace(' ATTRIBUTES TABLE START ');
2036 hr_utility.trace(' *****************');
2037
2038 l_index := p_attributes.FIRST;
2039
2040 LOOP
2041 EXIT WHEN NOT p_attributes.EXISTS (l_index);
2042
2043
2044 hr_utility.trace(' TIME_ATTRIBUTE_ID = '|| p_attributes(l_index).TIME_ATTRIBUTE_ID);
2045 hr_utility.trace(' BUILDING_BLOCK_ID = '|| p_attributes(l_index).BUILDING_BLOCK_ID ) ;
2046 hr_utility.trace(' ATTRIBUTE_CATEGORY = '|| p_attributes(l_index).ATTRIBUTE_CATEGORY) ;
2047 hr_utility.trace(' ATTRIBUTE1 = '|| p_attributes(l_index).ATTRIBUTE1 ) ;
2048 hr_utility.trace(' ATTRIBUTE2 (p_alias_definition_id) = '|| p_attributes(l_index).ATTRIBUTE2 ) ;
2049 hr_utility.trace(' ATTRIBUTE3 (l_alias_value_id) = '|| p_attributes(l_index).ATTRIBUTE3 ) ;
2050 hr_utility.trace(' ATTRIBUTE4 (p_alias_type) = '|| p_attributes(l_index).ATTRIBUTE4 ) ;
2051 hr_utility.trace(' ATTRIBUTE5 = '|| p_attributes(l_index).ATTRIBUTE5 ) ;
2052 hr_utility.trace(' ATTRIBUTE6 = '|| p_attributes(l_index).ATTRIBUTE6 ) ;
2053 hr_utility.trace(' ATTRIBUTE7 = '|| p_attributes(l_index).ATTRIBUTE7 ) ;
2054 hr_utility.trace(' ATTRIBUTE8 = '|| p_attributes(l_index).ATTRIBUTE8 ) ;
2055 hr_utility.trace(' ATTRIBUTE9 = '|| p_attributes(l_index).ATTRIBUTE9 ) ;
2056 hr_utility.trace(' ATTRIBUTE10 = '|| p_attributes(l_index).ATTRIBUTE10 ) ;
2057 hr_utility.trace(' ATTRIBUTE11 = '|| p_attributes(l_index).ATTRIBUTE11 ) ;
2058 hr_utility.trace(' ATTRIBUTE12 = '|| p_attributes(l_index).ATTRIBUTE12 ) ;
2059 hr_utility.trace(' ATTRIBUTE13 = '|| p_attributes(l_index).ATTRIBUTE13 ) ;
2060 hr_utility.trace(' ATTRIBUTE14 = '|| p_attributes(l_index).ATTRIBUTE14 ) ;
2061 hr_utility.trace(' ATTRIBUTE15 = '|| p_attributes(l_index).ATTRIBUTE15 ) ;
2062 hr_utility.trace(' ATTRIBUTE16 = '|| p_attributes(l_index).ATTRIBUTE16 ) ;
2063 hr_utility.trace(' ATTRIBUTE17 = '|| p_attributes(l_index).ATTRIBUTE17 ) ;
2064 hr_utility.trace(' ATTRIBUTE18 = '|| p_attributes(l_index).ATTRIBUTE18 ) ;
2065 hr_utility.trace(' ATTRIBUTE19 = '|| p_attributes(l_index).ATTRIBUTE19 ) ;
2066 hr_utility.trace(' ATTRIBUTE20 = '|| p_attributes(l_index).ATTRIBUTE20 ) ;
2067 hr_utility.trace(' ATTRIBUTE21 = '|| p_attributes(l_index).ATTRIBUTE21 ) ;
2068 hr_utility.trace(' ATTRIBUTE22 = '|| p_attributes(l_index).ATTRIBUTE22 ) ;
2069 hr_utility.trace(' ATTRIBUTE23 = '|| p_attributes(l_index).ATTRIBUTE23 ) ;
2070 hr_utility.trace(' ATTRIBUTE24 = '|| p_attributes(l_index).ATTRIBUTE24 ) ;
2071 hr_utility.trace(' ATTRIBUTE25 = '|| p_attributes(l_index).ATTRIBUTE25 ) ;
2072 hr_utility.trace(' ATTRIBUTE26 = '|| p_attributes(l_index).ATTRIBUTE26 ) ;
2073 hr_utility.trace(' ATTRIBUTE27 = '|| p_attributes(l_index).ATTRIBUTE27 ) ;
2074 hr_utility.trace(' ATTRIBUTE28 = '|| p_attributes(l_index).ATTRIBUTE28 ) ;
2075 hr_utility.trace(' ATTRIBUTE29 (p_alias_ref_object) = '|| p_attributes(l_index).ATTRIBUTE29 ) ;
2076 hr_utility.trace(' ATTRIBUTE30 (p_alias_value_name) = '|| p_attributes(l_index).ATTRIBUTE30 ) ;
2077 hr_utility.trace(' BLD_BLK_INFO_TYPE_ID = '|| p_attributes(l_index).BLD_BLK_INFO_TYPE_ID );
2078 hr_utility.trace(' OBJECT_VERSION_NUMBER = '|| p_attributes(l_index).OBJECT_VERSION_NUMBER );
2079 hr_utility.trace(' NEW = '|| p_attributes(l_index).NEW );
2080 hr_utility.trace(' CHANGED = '|| p_attributes(l_index).CHANGED );
2081 hr_utility.trace(' BLD_BLK_INFO_TYPE = '|| p_attributes(l_index).BLD_BLK_INFO_TYPE );
2082 hr_utility.trace(' PROCESS = '|| p_attributes(l_index).PROCESS );
2083 hr_utility.trace(' BUILDING_BLOCK_OVN = '|| p_attributes(l_index).BUILDING_BLOCK_OVN );
2084 hr_utility.trace('------------------------------------------------------');
2085
2086 l_index := p_attributes.NEXT (l_index);
2087
2088 END LOOP;
2089
2090 hr_utility.trace(' ATTRIBUTES TABLE END ');
2091 hr_utility.trace(' *****************');
2092
2093 end if;
2094
2095
2096
2097 end if;
2098
2099
2100
2101 hxc_timecard_message_helper.processerrors
2102 (p_messages => p_messages);
2103
2104
2105 IF g_debug THEN
2106 hr_utility.trace('PA-PAY> In hxc_timekeeper.save_timecard');
2107 hr_utility.trace('PA-PAY> calling hxc_proj_pay_dep_validation.verify_proj_pay_setup');
2108 END IF;
2109
2110 hxc_proj_pay_dep_validation.verify_proj_pay_setup
2111 (p_blocks => p_blocks,
2112 p_attributes => p_attributes,
2113 p_messages => p_messages);
2114
2115
2116 if g_debug then
2117
2118 hr_utility.trace('Just after hxc_proj_pay_dep_validation.verify_proj_pay_setup in hxctksubmit');
2119 if (p_blocks.count>0) then
2120
2121
2122 hr_utility.trace(' P_BLOCK TABLE START ');
2123 hr_utility.trace(' *****************');
2124
2125 l_index := p_blocks.FIRST;
2126
2127 LOOP
2128 EXIT WHEN NOT p_blocks.EXISTS (l_index);
2129
2130
2131 hr_utility.trace(' TIME_BUILDING_BLOCK_ID = '|| p_blocks(l_index).TIME_BUILDING_BLOCK_ID );
2132 hr_utility.trace(' TYPE = '|| p_blocks(l_index).TYPE ) ;
2133 hr_utility.trace(' MEASURE = '|| p_blocks(l_index).MEASURE) ;
2134 hr_utility.trace(' UNIT_OF_MEASURE = '|| p_blocks(l_index).UNIT_OF_MEASURE ) ;
2135 hr_utility.trace(' START_TIME = '|| p_blocks(l_index).START_TIME ) ;
2136 hr_utility.trace(' STOP_TIME = '|| p_blocks(l_index).STOP_TIME ) ;
2137 hr_utility.trace(' PARENT_BUILDING_BLOCK_ID = '|| p_blocks(l_index).PARENT_BUILDING_BLOCK_ID ) ;
2138 hr_utility.trace(' PARENT_IS_NEW = '|| p_blocks(l_index).PARENT_IS_NEW ) ;
2139 hr_utility.trace(' SCOPE = '|| p_blocks(l_index).SCOPE ) ;
2140 hr_utility.trace(' OBJECT_VERSION_NUMBER = '|| p_blocks(l_index).OBJECT_VERSION_NUMBER ) ;
2141 hr_utility.trace(' APPROVAL_STATUS = '|| p_blocks(l_index).APPROVAL_STATUS ) ;
2142 hr_utility.trace(' RESOURCE_ID = '|| p_blocks(l_index).RESOURCE_ID ) ;
2143 hr_utility.trace(' RESOURCE_TYPE = '|| p_blocks(l_index).RESOURCE_TYPE ) ;
2144 hr_utility.trace(' APPROVAL_STYLE_ID = '|| p_blocks(l_index).APPROVAL_STYLE_ID ) ;
2145 hr_utility.trace(' DATE_FROM = '|| p_blocks(l_index).DATE_FROM ) ;
2146 hr_utility.trace(' DATE_TO = '|| p_blocks(l_index).DATE_TO ) ;
2147 hr_utility.trace(' COMMENT_TEXT = '|| p_blocks(l_index).COMMENT_TEXT ) ;
2148 hr_utility.trace(' PARENT_BUILDING_BLOCK_OVN = '|| p_blocks(l_index).PARENT_BUILDING_BLOCK_OVN ) ;
2149 hr_utility.trace(' NEW = '|| p_blocks(l_index).NEW ) ;
2150 hr_utility.trace(' CHANGED = '|| p_blocks(l_index).CHANGED ) ;
2151 hr_utility.trace(' PROCESS = '|| p_blocks(l_index).PROCESS ) ;
2152 hr_utility.trace(' APPLICATION_SET_ID = '|| p_blocks(l_index).APPLICATION_SET_ID ) ;
2153 hr_utility.trace(' TRANSLATION_DISPLAY_KEY = '|| p_blocks(l_index).TRANSLATION_DISPLAY_KEY ) ;
2154 hr_utility.trace('------------------------------------------------------');
2155
2156 l_index := p_blocks.NEXT (l_index);
2157
2158 END LOOP;
2159
2160 hr_utility.trace(' p_blocks TABLE END ');
2161 hr_utility.trace(' *****************');
2162
2163 end if;
2164
2165
2166 if (p_messages.count>0) then
2167
2168
2169 hr_utility.trace(' P_MESSAGES TABLE START ');
2170 hr_utility.trace(' *****************');
2171
2172 l_index := p_messages.FIRST;
2173
2174 LOOP
2175 EXIT WHEN NOT p_messages.EXISTS (l_index);
2176
2177
2178 hr_utility.trace(' MESSAGE_NAME = '|| p_messages(l_index).MESSAGE_NAME );
2179 hr_utility.trace(' MESSAGE_LEVEL = '|| p_messages(l_index).MESSAGE_LEVEL ) ;
2180 hr_utility.trace(' MESSAGE_FIELD = '|| p_messages(l_index).MESSAGE_FIELD) ;
2181 hr_utility.trace(' MESSAGE_TOKENS = '|| p_messages(l_index).MESSAGE_TOKENS ) ;
2182 hr_utility.trace(' APPLICATION_SHORT_NAME = '|| p_messages(l_index).APPLICATION_SHORT_NAME ) ;
2183 hr_utility.trace(' TIME_BUILDING_BLOCK_ID = '|| p_messages(l_index).TIME_BUILDING_BLOCK_ID ) ;
2184 hr_utility.trace(' TIME_BUILDING_BLOCK_OVN = '|| p_messages(l_index).TIME_BUILDING_BLOCK_OVN ) ;
2185 hr_utility.trace(' TIME_ATTRIBUTE_ID = '|| p_messages(l_index).TIME_ATTRIBUTE_ID ) ;
2186 hr_utility.trace(' TIME_ATTRIBUTE_OVN = '|| p_messages(l_index).TIME_ATTRIBUTE_OVN ) ;
2187 hr_utility.trace(' MESSAGE_EXTENT = '|| p_messages(l_index).MESSAGE_EXTENT ) ;
2188
2189 l_index := p_messages.NEXT (l_index);
2190
2191 END LOOP;
2192
2193 hr_utility.trace(' p_messages TABLE END ');
2194 hr_utility.trace(' *****************');
2195
2196 end if;
2197
2198
2199 if (p_attributes.count>0) then
2200
2201
2202 hr_utility.trace(' ATTRIBUTES TABLE START ');
2203 hr_utility.trace(' *****************');
2204
2205 l_index := p_attributes.FIRST;
2206
2207 LOOP
2208 EXIT WHEN NOT p_attributes.EXISTS (l_index);
2209
2210
2211 hr_utility.trace(' TIME_ATTRIBUTE_ID = '|| p_attributes(l_index).TIME_ATTRIBUTE_ID);
2212 hr_utility.trace(' BUILDING_BLOCK_ID = '|| p_attributes(l_index).BUILDING_BLOCK_ID ) ;
2213 hr_utility.trace(' ATTRIBUTE_CATEGORY = '|| p_attributes(l_index).ATTRIBUTE_CATEGORY) ;
2214 hr_utility.trace(' ATTRIBUTE1 = '|| p_attributes(l_index).ATTRIBUTE1 ) ;
2215 hr_utility.trace(' ATTRIBUTE2 (p_alias_definition_id) = '|| p_attributes(l_index).ATTRIBUTE2 ) ;
2216 hr_utility.trace(' ATTRIBUTE3 (l_alias_value_id) = '|| p_attributes(l_index).ATTRIBUTE3 ) ;
2217 hr_utility.trace(' ATTRIBUTE4 (p_alias_type) = '|| p_attributes(l_index).ATTRIBUTE4 ) ;
2218 hr_utility.trace(' ATTRIBUTE5 = '|| p_attributes(l_index).ATTRIBUTE5 ) ;
2219 hr_utility.trace(' ATTRIBUTE6 = '|| p_attributes(l_index).ATTRIBUTE6 ) ;
2220 hr_utility.trace(' ATTRIBUTE7 = '|| p_attributes(l_index).ATTRIBUTE7 ) ;
2221 hr_utility.trace(' ATTRIBUTE8 = '|| p_attributes(l_index).ATTRIBUTE8 ) ;
2222 hr_utility.trace(' ATTRIBUTE9 = '|| p_attributes(l_index).ATTRIBUTE9 ) ;
2223 hr_utility.trace(' ATTRIBUTE10 = '|| p_attributes(l_index).ATTRIBUTE10 ) ;
2224 hr_utility.trace(' ATTRIBUTE11 = '|| p_attributes(l_index).ATTRIBUTE11 ) ;
2225 hr_utility.trace(' ATTRIBUTE12 = '|| p_attributes(l_index).ATTRIBUTE12 ) ;
2226 hr_utility.trace(' ATTRIBUTE13 = '|| p_attributes(l_index).ATTRIBUTE13 ) ;
2227 hr_utility.trace(' ATTRIBUTE14 = '|| p_attributes(l_index).ATTRIBUTE14 ) ;
2228 hr_utility.trace(' ATTRIBUTE15 = '|| p_attributes(l_index).ATTRIBUTE15 ) ;
2229 hr_utility.trace(' ATTRIBUTE16 = '|| p_attributes(l_index).ATTRIBUTE16 ) ;
2230 hr_utility.trace(' ATTRIBUTE17 = '|| p_attributes(l_index).ATTRIBUTE17 ) ;
2231 hr_utility.trace(' ATTRIBUTE18 = '|| p_attributes(l_index).ATTRIBUTE18 ) ;
2232 hr_utility.trace(' ATTRIBUTE19 = '|| p_attributes(l_index).ATTRIBUTE19 ) ;
2233 hr_utility.trace(' ATTRIBUTE20 = '|| p_attributes(l_index).ATTRIBUTE20 ) ;
2234 hr_utility.trace(' ATTRIBUTE21 = '|| p_attributes(l_index).ATTRIBUTE21 ) ;
2235 hr_utility.trace(' ATTRIBUTE22 = '|| p_attributes(l_index).ATTRIBUTE22 ) ;
2236 hr_utility.trace(' ATTRIBUTE23 = '|| p_attributes(l_index).ATTRIBUTE23 ) ;
2237 hr_utility.trace(' ATTRIBUTE24 = '|| p_attributes(l_index).ATTRIBUTE24 ) ;
2238 hr_utility.trace(' ATTRIBUTE25 = '|| p_attributes(l_index).ATTRIBUTE25 ) ;
2239 hr_utility.trace(' ATTRIBUTE26 = '|| p_attributes(l_index).ATTRIBUTE26 ) ;
2240 hr_utility.trace(' ATTRIBUTE27 = '|| p_attributes(l_index).ATTRIBUTE27 ) ;
2241 hr_utility.trace(' ATTRIBUTE28 = '|| p_attributes(l_index).ATTRIBUTE28 ) ;
2242 hr_utility.trace(' ATTRIBUTE29 (p_alias_ref_object) = '|| p_attributes(l_index).ATTRIBUTE29 ) ;
2243 hr_utility.trace(' ATTRIBUTE30 (p_alias_value_name) = '|| p_attributes(l_index).ATTRIBUTE30 ) ;
2244 hr_utility.trace(' BLD_BLK_INFO_TYPE_ID = '|| p_attributes(l_index).BLD_BLK_INFO_TYPE_ID );
2245 hr_utility.trace(' OBJECT_VERSION_NUMBER = '|| p_attributes(l_index).OBJECT_VERSION_NUMBER );
2246 hr_utility.trace(' NEW = '|| p_attributes(l_index).NEW );
2247 hr_utility.trace(' CHANGED = '|| p_attributes(l_index).CHANGED );
2248 hr_utility.trace(' BLD_BLK_INFO_TYPE = '|| p_attributes(l_index).BLD_BLK_INFO_TYPE );
2249 hr_utility.trace(' PROCESS = '|| p_attributes(l_index).PROCESS );
2250 hr_utility.trace(' BUILDING_BLOCK_OVN = '|| p_attributes(l_index).BUILDING_BLOCK_OVN );
2251 hr_utility.trace('------------------------------------------------------');
2252
2253 l_index := p_attributes.NEXT (l_index);
2254
2255 END LOOP;
2256
2257 hr_utility.trace(' ATTRIBUTES TABLE END ');
2258 hr_utility.trace(' *****************');
2259
2260 end if;
2261
2262
2263
2264 end if;
2265
2266
2267 hxc_timecard_message_helper.processerrors
2268 (p_messages => p_messages);
2269
2270 -- change end
2271 -- Bug 8888138
2272 -- Get_Messages should be used after verify_view_only
2273 -- get all the errors
2274 p_messages := hxc_timecard_message_helper.getMessages;
2275
2276 --svg start Bug 9181950
2277 if NOT hxc_timecard_message_helper.noErrors then
2278 --HXC_SVG_LOG.record_log('Reached here:svg');
2279 if g_debug then
2280 hr_utility.trace('SVG: Rollingback to savepoint TK_SUB_SAVEPOINT for any Projects related updates');
2281 end if;
2282 rollback to TK_SUB_SAVEPOINT;
2283 end if;
2284 -- svg end
2285
2286
2287
2288 hxc_timekeeper_errors.rollback_tc_or_set_err_status
2289 (p_message_table => p_messages
2290 ,p_blocks => p_blocks
2291 ,p_attributes => p_attributes
2292 ,p_rollback => l_rollback
2293 ,p_status_error => l_status_error);
2294
2295 --p_messages.delete;
2296 -- at this point we have the full message structure
2297 -- so we can pass it to deposit to main the -ve ids
2298 -- in the error table.
2299
2300 --
2301 -- Store blocks and attributes
2302 --
2303 hxc_timecard_deposit.execute
2304 (p_blocks => p_blocks
2305 ,p_attributes => p_attributes
2306 ,p_timecard_blocks => l_timecard_blocks
2307 ,p_day_blocks => l_day_blocks
2308 ,p_detail_blocks => l_detail_blocks
2309 ,p_messages => p_messages
2310 ,p_transaction_info=> l_transaction_info
2311 );
2312
2313
2314 p_timecard_id :=
2315 p_blocks(hxc_timecard_block_utils.find_active_timecard_index(p_blocks)).time_building_block_id;
2316 p_timecard_ovn:=
2317 p_blocks(hxc_timecard_block_utils.find_active_timecard_index(p_blocks)).object_version_number;
2318
2319 --hxc_timecard_message_helper.processerrors
2320 -- (p_messages => p_messages);
2321
2322 hxc_timecard_audit.maintain_latest_details
2323 (p_blocks => p_blocks );
2324
2325 /* Bug 8888904 */
2326
2327 hxc_timecard_audit.maintain_rdb_snapshot
2328 (p_blocks => p_blocks,
2329 p_attributes => p_attributes);
2330
2331
2332 IF p_timekeeper_id IS NOT NULL and
2333 p_tk_audit_enabled = 'Y' and
2334 p_tk_notify_to <> 'NONE' THEN
2335
2336 open c_previous_timecard(p_timecard_id);
2337 fetch c_previous_timecard into l_previous_tk_item_key,l_previous_tk_item_type;
2338 if (c_previous_timecard%found) then
2339
2340 --Cancel notifications for TK Audit
2341
2342 hxc_timekeeper_wf_pkg.cancel_previous_notifications
2343 ( p_tk_audit_item_type => l_previous_tk_item_type
2344 ,p_tk_audit_item_key => l_previous_tk_item_key
2345 );
2346
2347 end if;
2348 close c_previous_timecard;
2349
2350 tk_item_key :=
2351 hxc_timekeeper_wf_pkg.begin_audit_process
2352 (p_timecard_id => p_timecard_id
2353 ,p_timecard_ovn => p_timecard_ovn
2354 ,p_resource_id => p_blocks(hxc_timecard_block_utils.find_active_timecard_index(p_blocks)).resource_id
2355 ,p_timekeeper_id => p_timekeeper_id
2356 ,p_tk_audit_enabled => p_tk_audit_enabled
2357 ,p_tk_notify_to => p_tk_notify_to
2358 ,p_tk_notify_type => p_tk_notify_type
2359 ,p_property_table => l_timecard_props
2360 );
2361
2362 END IF;
2363
2364 IF TK_ITEM_KEY IS NOT NULL THEN
2365 tk_audit_process_name := 'HXC_TK_AUDIT_PROCESS';
2366 tk_audit_item_type := 'HXCTKWF';
2367 END IF;
2368 --
2369 -- Maintain summary table
2370 --
2371 hxc_timecard_summary_api.timecard_deposit
2372 (p_blocks => p_blocks
2373 ,p_approval_item_type => NULL
2374 ,p_approval_process_name => NULL
2375 ,p_approval_item_key => NULL
2376 ,p_tk_audit_item_type => tk_audit_item_type
2377 ,p_tk_audit_process_name => tk_audit_process_name
2378 ,p_tk_audit_item_key => tk_item_key
2379 );
2380
2381 --
2382 -- Starting Approval
2383 --
2384 IF not(l_status_error) THEN
2385
2386 l_item_key :=
2387 hxc_timecard_approval.begin_approval
2388 (p_blocks => p_blocks
2389 ,p_item_type => hxc_timecard_deposit_common.c_hxcempitemtype
2390 ,p_process_name => hxc_timecard_deposit_common.c_hxcapprovalprocess
2391 ,p_resubmitted => l_resubmit
2392 ,p_timecard_props => l_timecard_props
2393 ,p_messages => p_messages
2394 );
2395
2396 END IF;
2397
2398 -- start the approval only if the timecard has
2399 -- a different status than 'Error'
2400 --
2401 -- Audit this transaction
2402 --
2403 --p_messages.delete;
2404
2405 hxc_timecard_audit.audit_deposit
2406 (p_transaction_info => l_transaction_info
2407 ,p_messages => p_messages
2408 );
2409
2410
2411
2412 --hxc_timecard_message_helper.processerrors
2413 -- (p_messages => p_messages);
2414
2415 -- get all the errors
2416 --p_messages := hxc_timecard_message_helper.getMessages;
2417
2418
2419 -- set the out parameters --
2420
2421 hxc_timecard_summary_pkg.update_summary_row
2422 (p_timecard_id => p_timecard_id
2423 ,p_approval_item_type => hxc_timecard_deposit_common.c_hxcempitemtype
2424 ,p_approval_process_name => hxc_timecard_deposit_common.c_hxcapprovalprocess
2425 ,p_approval_item_key => l_item_key
2426 );
2427
2428 hr_utility.trace('Calling maintain_errors');
2429
2430 hxc_timekeeper_errors.maintain_errors
2431 (p_messages => p_messages
2432 ,p_timecard_id => p_timecard_id
2433 ,p_timecard_ovn => p_timecard_ovn);
2434
2435 /*
2436 if g_debug THEN
2437 hxc_debug_timecard.writeMessages(p_messages,'HXC_TIMEKEEPER',80);
2438 end if;
2439 */
2440
2441 -- OTL-Absences Integration (Bug 8779478)
2442 -- Modified code to rollback in case on online retrieval errors (Bug 8888138)
2443 IF (nvl(fnd_profile.value('HR_ABS_OTL_INTEGRATION'), 'N') = 'Y') THEN
2444 IF (p_timecard_id > 0 and hxc_timecard_message_helper.noerrors ) THEN
2445
2446 l_abs_ret_messages:= HXC_MESSAGE_TABLE_TYPE();
2447
2448 IF g_debug THEN
2449 hr_utility.trace('ABS:Initiated Online Retrieval from HXC_TIMEKEEPER.SUBMIT_TIMECARD');
2450 END IF;
2451
2452 l_resource_id := p_blocks(l_timecard_index).resource_id;
2453 l_tc_start := fnd_date.canonical_to_date(p_blocks(l_timecard_index).start_time);
2454 l_tc_stop := fnd_date.canonical_to_date(p_blocks(l_timecard_index).stop_time);
2455 l_approval_status := p_blocks(l_timecard_index).approval_status;
2456
2457
2458 HXC_ABS_RETRIEVAL_PKG.POST_ABSENCES (l_resource_id,
2459 l_tc_start,
2460 l_tc_stop,
2461 l_approval_status,
2462 l_abs_ret_messages);
2463
2464 IF g_debug THEN
2465 hr_utility.trace('ABS:p_messages.COUNT = '||l_abs_ret_messages.COUNT);
2466 END IF;
2467
2468 IF l_abs_ret_messages.COUNT > 0 THEN
2469 IF g_debug THEN
2470 hr_utility.trace('ABS: Online Retrieval failed - Rollback changes');
2471 END IF;
2472
2473 rollback to TK_SUB_SAVEPOINT;
2474
2475 hxc_timekeeper_errors.maintain_errors
2476 (p_messages => l_abs_ret_messages
2477 ,p_timecard_id => p_timecard_id
2478 ,p_timecard_ovn => p_timecard_ovn);
2479
2480
2481 END IF;
2482
2483 END IF;
2484 END IF;
2485
2486
2487
2488 END submit_timecard;
2489
2490 ----------------------------------------------------------------------------
2491 -- Delete Timecard Procedure
2492 -- This procedure....
2493 ----------------------------------------------------------------------------
2494 Procedure delete_timecard
2495 (p_timecard_id in out nocopy hxc_time_building_blocks.time_building_block_id%type
2496 ,p_messages in out nocopy HXC_MESSAGE_TABLE_TYPE
2497 ) is
2498
2499 /*
2500 hxc_timecard_deposit_common.delete_timecard
2501 (p_mode => 'DELETE'
2502 ,p_template => 'N'
2503 ,p_timecard_id => p_timecard_id
2504 );
2505 */
2506
2507 cursor c_previous_timecard(
2508 p_timecard_id in hxc_timecard_summary.timecard_id%type) is
2509 select tk_audit_item_key,tk_audit_item_type,timecard_ovn
2510 from hxc_timecard_summary
2511 where timecard_id = p_timecard_id;
2512
2513 /*
2514 cursor c_timecard_ovn
2515 (p_timecard_id in hxc_time_building_blocks.time_building_block_id%type) is
2516 select tbb.object_version_number
2517 from hxc_time_building_blocks tbb
2518 where tbb.time_building_block_id = p_timecard_id
2519 and tbb.date_to = hr_general.end_of_time;
2520 */
2521
2522 CURSOR csr_chk_transfer (p_timecard_id hxc_time_building_blocks.time_building_block_id%type) IS
2523 SELECT 1
2524 FROM dual
2525 WHERE EXISTS (
2526 SELECT 1
2527 FROM hxc_transactions t
2528 , hxc_transaction_details td
2529 WHERE td.time_building_block_id = p_timecard_id
2530 AND t.transaction_id = td.transaction_id
2531 AND t.type = 'RETRIEVAL'
2532 AND t.status = 'SUCCESS' );
2533
2534 l_blocks hxc_block_table_type := hxc_block_table_type();
2535 l_attributes hxc_attribute_table_type := hxc_attribute_table_type();
2536 l_messages hxc_message_table_type := hxc_message_table_type();
2537
2538 l_timecard_blocks hxc_timecard.block_list;
2539 l_day_blocks hxc_timecard.block_list;
2540 l_detail_blocks hxc_timecard.block_list;
2541
2542 l_transaction_info hxc_timecard.transaction_info;
2543 l_timecard_props hxc_timecard_prop_table_type;
2544
2545 l_dummy boolean := true;
2546
2547 l_timecard_ovn hxc_time_building_blocks.object_version_number%type;
2548 l_timecard_index number;
2549
2550 l_status_error BOOLEAN := FALSE;
2551
2552 l_rollback BOOLEAN := FALSE;
2553 e_timekeeper_check EXCEPTION;
2554
2555 l_previous_tk_item_key hxc_timecard_summary.tk_audit_item_key%type;
2556 l_previous_tk_item_type hxc_timecard_summary.tk_audit_item_type%type;
2557
2558 l_dummy_num NUMBER(1);
2559
2560 l_resource_id NUMBER;
2561 l_tc_start DATE;
2562 l_tc_stop DATE;
2563 l_approval_status VARCHAR2(20);
2564
2565 l_abs_ret_messages HXC_MESSAGE_TABLE_TYPE;
2566
2567 Begin
2568
2569 g_debug:= hr_utility.debug_enabled;
2570
2571 -- set savepoint
2572 savepoint TK_DEL_SAVEPOINT;
2573
2574 --
2575 -- Find the corresponding ovn of the timecard
2576 --
2577
2578 open c_previous_timecard(p_timecard_id);
2579 fetch c_previous_timecard into l_previous_tk_item_key,l_previous_tk_item_type,l_timecard_ovn;
2580 if(c_previous_timecard%notfound) then
2581 close c_previous_timecard;
2582 fnd_message.set_name('HXC','HXC_NO_ACTIVE_TIMECARD');
2583 fnd_message.raise_error;
2584 else
2585
2586 --Cancel notifications for TK Audit
2587 hxc_timekeeper_wf_pkg.cancel_previous_notifications
2588 ( p_tk_audit_item_type => l_previous_tk_item_type
2589 ,p_tk_audit_item_key => l_previous_tk_item_key
2590 );
2591 close c_previous_timecard;
2592
2593 end if;
2594
2595 --
2596 -- Initialize the message stack
2597 --
2598
2599 fnd_msg_pub.initialize;
2600 hxc_timecard_message_helper.initializeErrors;
2601 --
2602 -- Get the timecard or timecard template blocks and attributes
2603 --
2604
2605 l_blocks := hxc_timecard_deposit_common.load_blocks(p_timecard_id, l_timecard_ovn);
2606 l_attributes := hxc_timecard_deposit_common.load_attributes(l_blocks);
2607
2608 --
2609 -- Main delete processing
2610 --
2611
2612 l_timecard_index := hxc_timecard_block_utils.find_active_timecard_index(l_blocks);
2613
2614 -- we need to check if the timecard is in error and
2615 -- if it has been retrieved.
2616 IF (l_blocks(l_timecard_index).approval_status = 'ERROR')
2617 THEN
2618 OPEN csr_chk_transfer(p_timecard_id);
2619 FETCH csr_chk_transfer INTO l_dummy_num;
2620
2621 IF csr_chk_transfer%FOUND
2622 THEN
2623 close csr_chk_transfer;
2624
2625 -- add the message in the message table
2626 hxc_timecard_message_helper.addErrorToCollection
2627 (p_messages,
2628 'HXC_DEL_ERROR_RET',
2629 hxc_timecard.c_error,
2630 null,
2631 null,
2632 hxc_timecard.c_hxc,
2633 null,
2634 null,
2635 null,
2636 null
2637 );
2638
2639 raise e_timekeeper_check;
2640 END IF;
2641
2642 close csr_chk_transfer;
2643 END IF;
2644
2645 hxc_timecard_properties.get_preference_properties
2646 (p_validate => hxc_timecard.c_yes
2647 ,p_resource_id => l_blocks(l_timecard_index).resource_id
2648 ,p_timecard_start_time => fnd_date.canonical_to_date(l_blocks(l_timecard_index).start_time)
2649 ,p_timecard_stop_time => fnd_date.canonical_to_date(l_blocks(l_timecard_index).stop_time)
2650 ,p_for_timecard => false
2651 ,p_messages => l_messages
2652 ,p_property_table => l_timecard_props
2653 );
2654
2655 hxc_timecard_message_helper.processerrors
2656 (p_messages => l_messages);
2657
2658
2659 hxc_timecard_block_utils.sort_blocks
2660 (p_blocks => l_blocks
2661 ,p_timecard_blocks => l_timecard_blocks
2662 ,p_day_blocks => l_day_blocks
2663 ,p_detail_blocks => l_detail_blocks
2664 );
2665
2666 hxc_block_attribute_update.set_process_flags
2667 (p_blocks => l_blocks
2668 ,p_attributes => l_attributes
2669 );
2670
2671 hxc_timecard_validation.deposit_validation
2672 (p_blocks => l_blocks
2673 ,p_attributes => l_attributes
2674 ,p_messages => l_messages
2675 ,p_props => l_timecard_props
2676 ,p_deposit_mode => hxc_timecard.c_submit
2677 ,p_template => 'N'
2678 ,p_resubmit => hxc_timecard_deposit_common.c_delete
2679 ,p_can_deposit => l_dummy
2680 );
2681
2682 hxc_timecard_message_helper.processerrors
2683 (p_messages => l_messages);
2684
2685
2686 -- get all the errors
2687 l_messages := hxc_timecard_message_helper.getMessages;
2688 /*
2689 -- debug
2690 IF g_debug THEN
2691 hxc_debug_timecard.writeMessages(p_messages,'HXC_TIMEKEEPER',70);
2692 END IF;
2693 */
2694
2695 --svg start Bug 9181950
2696 if NOT hxc_timecard_message_helper.noErrors then
2697 --HXC_SVG_LOG.record_log('Reached here:svg');
2698 if g_debug then
2699 hr_utility.trace('SVG: Rollingback to savepoint TK_DEL_SAVEPOINT for any Projects related updates');
2700 end if;
2701 rollback to TK_DEL_SAVEPOINT;
2702 end if;
2703 -- svg end
2704
2705
2706
2707 hxc_timekeeper_errors.rollback_tc_or_set_err_status
2708 (p_message_table => l_messages
2709 ,p_blocks => l_blocks
2710 ,p_attributes => l_attributes
2711 ,p_rollback => l_rollback
2712 ,p_status_error => l_status_error);
2713
2714 -- l_messages.delete;
2715 --
2716 -- if the rollback is set then we need to execute it
2717 --
2718 IF l_rollback THEN
2719 -- we are setting the error to be
2720 -- send
2721 p_messages := l_messages;
2722 l_messages.delete;
2723 raise e_timekeeper_check;
2724
2725 ELSE
2726
2727 --l_messages.delete;
2728 hxc_timecard_deposit.execute
2729 (p_blocks => l_blocks
2730 ,p_attributes => l_attributes
2731 ,p_timecard_blocks => l_timecard_blocks
2732 ,p_day_blocks => l_day_blocks
2733 ,p_detail_blocks => l_detail_blocks
2734 ,p_messages => l_messages
2735 ,p_transaction_info => l_transaction_info
2736 );
2737
2738 --hxc_timecard_message_helper.processerrors
2739 --(p_messages => l_messages);
2740
2741 end_date_app_period(p_timecard_id);
2742
2743 hxc_timecard_summary_api.delete_timecard
2744 (p_blocks => l_blocks
2745 ,p_timecard_id => p_timecard_id
2746 );
2747
2748 --l_messages.delete;
2749 hxc_timecard_audit.audit_deposit
2750 (p_transaction_info => l_transaction_info
2751 ,p_messages => l_messages
2752 );
2753 -- hxc_timecard_message_helper.processerrors
2754 -- (p_messages => l_messages);
2755
2756 hxc_timecard_audit.maintain_latest_details
2757 (p_blocks => l_blocks );
2758
2759 /* Bug 8888904 */
2760 hxc_timecard_audit.maintain_rdb_snapshot
2761 (p_blocks => l_blocks,
2762 p_attributes => l_attributes);
2763
2764 hr_utility.trace('Calling maintain_errors');
2765
2766 hxc_timecard_message_helper.prepareErrors;
2767
2768 hxc_timekeeper_errors.maintain_errors
2769 (p_messages => l_messages
2770 ,p_timecard_id => p_timecard_id
2771 ,p_timecard_ovn => l_timecard_ovn);
2772
2773
2774
2775 -- get all the errors
2776 --l_messages := hxc_timecard_message_helper.getMessages;
2777 /*
2778 if g_debug THEN
2779 hxc_debug_timecard.writeMessages(p_messages,'HXC_TIMEKEEPER',80);
2780 end if;
2781 */
2782
2783 -- OTL-Absences Integration (Bug 8779478)
2784 -- Modified code to rollback in case on online retrieval errors (Bug 8888138)
2785 IF (nvl(fnd_profile.value('HR_ABS_OTL_INTEGRATION'), 'N') = 'Y') THEN
2786 IF (p_timecard_id > 0 and hxc_timecard_message_helper.noerrors) THEN
2787
2788 IF g_debug THEN
2789 hr_utility.trace('ABS:Initiated Online Retrieval from HXC_TIMEKEEPER.DELETE_TIMECARD');
2790 END IF;
2791
2792 l_abs_ret_messages:= HXC_MESSAGE_TABLE_TYPE();
2793
2794 l_resource_id := l_blocks(l_timecard_index).resource_id;
2795 l_tc_start := fnd_date.canonical_to_date(l_blocks(l_timecard_index).start_time);
2796 l_tc_stop := fnd_date.canonical_to_date(l_blocks(l_timecard_index).stop_time);
2797 l_approval_status := l_blocks(l_timecard_index).approval_status;
2798
2799
2800 HXC_ABS_RETRIEVAL_PKG.POST_ABSENCES (l_resource_id,
2801 l_tc_start,
2802 l_tc_stop,
2803 'DELETED',
2804 l_abs_ret_messages);
2805
2806 IF g_debug THEN
2807 hr_utility.trace('ABS:l_messages.COUNT = '||l_abs_ret_messages.COUNT);
2808 END IF;
2809
2810 IF l_abs_ret_messages.COUNT > 0 THEN
2811 IF g_debug THEN
2812 hr_utility.trace('ABS: Online Retrieval failed - Rollback changes');
2813 END IF;
2814
2815 rollback to TK_DEL_SAVEPOINT;
2816
2817 hxc_timekeeper_errors.maintain_errors
2818 (p_messages => l_abs_ret_messages
2819 ,p_timecard_id => p_timecard_id
2820 ,p_timecard_ovn => l_timecard_ovn);
2821
2822
2823 END IF;
2824
2825 END IF;
2826 END IF;
2827
2828
2829
2830 end if;
2831
2832
2833 EXCEPTION
2834 WHEN e_timekeeper_check then
2835 hxc_timecard_message_helper.prepareErrors;
2836 rollback;
2837
2838 End delete_timecard;
2839
2840
2841
2842 END hxc_timekeeper;