[Home] [Help]
PACKAGE BODY: APPS.HXC_TIMEKEEPER_PROCESS
Source
1 PACKAGE BODY hxc_timekeeper_process AS
2 /* $Header: hxctksta.pkb 120.28.12020000.3 2012/07/04 09:37:29 amnaraya ship $ */
3
4 g_debug boolean := hr_utility.debug_enabled;
5 PROCEDURE timekeeper_query (
6 p_timekeeper_data IN OUT NOCOPY t_timekeeper_table,
7 p_timekeeper_id IN NUMBER,
8 p_start_period IN DATE,
9 p_end_period IN DATE,
10 p_group_id IN NUMBER,
11 p_resource_id IN NUMBER,
12 p_attribute1 IN VARCHAR2,
13 p_attribute2 IN VARCHAR2,
14 p_attribute3 IN VARCHAR2,
15 p_attribute4 IN VARCHAR2,
16 p_attribute5 IN VARCHAR2,
17 p_attribute6 IN VARCHAR2,
18 p_attribute7 IN VARCHAR2,
19 p_attribute8 IN VARCHAR2,
20 p_attribute9 IN VARCHAR2,
21 p_attribute10 IN VARCHAR2,
22 p_attribute11 IN VARCHAR2,
23 p_attribute12 IN VARCHAR2,
24 p_attribute13 IN VARCHAR2,
25 p_attribute14 IN VARCHAR2,
26 p_attribute15 IN VARCHAR2,
27 p_attribute16 IN VARCHAR2,
28 p_attribute17 IN VARCHAR2,
29 p_attribute18 IN VARCHAR2,
30 p_attribute19 IN VARCHAR2,
31 p_attribute20 IN VARCHAR2,
32 p_status_code IN VARCHAR2,
33 p_rec_periodid IN NUMBER,
34 p_superflag
35 /*ADVICE(128): Unreferenced parameter [552] */
36 IN VARCHAR2,
37 p_reqryflg IN VARCHAR2,
38 p_trx_lock_id IN NUMBER,
39 p_row_lock_id IN VARCHAR2,
40 p_person_type IN VARCHAR2,
41 p_message_type IN VARCHAR2,
42 p_query_type IN VARCHAR2,
43 p_lock_profile IN VARCHAR2,
44 p_message_text IN VARCHAR2,
45 p_late_reason IN VARCHAR2,
46 p_change_reason IN VARCHAR2,
47 p_audit_enabled IN VARCHAR2,
48 p_audit_history IN VARCHAR2
49 ) IS
50 /*Cursor Modified By Mithun for CWK Terminate Bug*/
51 CURSOR c_resource_info (
52 p_timekeeper_id
53 /*ADVICE(145): This definition hides another one [556] */
54
55 /*ADVICE(147): Unreferenced parameter [552] */
56 IN NUMBER,
57 p_start_period
58 /*ADVICE(150): This definition hides another one [556] */
59 IN DATE,
60 p_end_period
61 /*ADVICE(153): This definition hides another one [556] */
62 IN DATE,
63 p_group_id
64 /*ADVICE(156): This definition hides another one [556] */
65 IN NUMBER,
66 p_resource_id
67 /*ADVICE(159): This definition hides another one [556] */
68 IN NUMBER,
69 p_person_type
70 /*ADVICE(162): This definition hides another one [556] */
71 IN VARCHAR2
72 ) IS
73 SELECT ppf.person_id person_id, ppf.full_name,
74 NVL (ppf.employee_number, ppf.npw_number) employee_number,
75 hr_person_type_usage_info.get_user_person_type (p_start_period, ppf.person_id) person_type
76 FROM hxc_tk_group_queries htgq,
77 hxc_tk_groups htg,
78 hxc_tk_group_query_criteria htgqc,
79 per_all_people_f ppf,
80 per_all_assignments_f paa,
81 per_person_type_usages_f ptu,
82 per_person_types ppt
83 WHERE ppf.person_id = paa.person_id
84 AND ppt.person_type_id = ptu.person_type_id
85 AND ppt.system_person_type IN ('EMP', 'EMP_APL', 'CWK','EX_EMP', 'EX_CWK')
86 AND ( p_person_type IS NULL
87 OR ( DECODE (ppt.system_person_type, 'EMP_APL', 'EMP', ppt.system_person_type) =
88 p_person_type
89 AND p_person_type IS NOT NULL
90 )
91 )
92 AND ptu.person_id = ppf.person_id
93 AND p_start_period <= ptu.effective_end_date
94 AND p_end_period >= ptu.effective_start_date
95 AND paa.primary_flag = 'Y'
96 AND paa.assignment_type IN ('E', 'C')
97 AND p_start_period <= paa.effective_end_date
98 AND p_end_period >= paa.effective_start_date
99 AND p_start_period <= ppf.effective_end_date
100 AND p_end_period >= ppf.effective_start_date
101 AND ppf.person_id = htgqc.criteria_id
102 AND htgqc.tk_group_query_id = htgq.tk_group_query_id
103 AND htgq.tk_group_id = htg.tk_group_id
104 AND htg.business_group_id = ppf.business_group_id
105 AND htg.tk_group_id = p_group_id
106 AND ppf.person_id = NVL (p_resource_id, ppf.person_id)
107 AND htgq.include_exclude = 'I'
108 AND htgqc.criteria_type = 'PERSON'
109 AND ppf.effective_end_date = (SELECT MAX (ppf2.effective_end_date)
110 FROM per_people_f ppf2, per_all_assignments_f paa2
111 WHERE ppf2.person_id = paa2.person_id
112 AND paa2.primary_flag = 'Y'
113 AND paa2.assignment_type IN ('E', 'C')
114 AND p_start_period <= paa2.effective_end_date
115 AND p_end_period >= paa2.effective_start_date
116 AND p_start_period <= ppf2.effective_end_date
117 AND p_end_period >= ppf2.effective_start_date
118 AND ppf2.person_id = ppf.person_id)
119 UNION
120 SELECT ppf.person_id person_id, ppf.full_name,
121 NVL (ppf.employee_number, ppf.npw_number) employee_number,
122 hr_person_type_usage_info.get_user_person_type (p_start_period, ppf.person_id) person_type
123 FROM hxc_tk_group_queries htgq,
124 hxc_tk_groups htg,
125 hxc_tk_group_query_criteria htgqc,
126 per_all_people_f ppf,
127 per_all_assignments_f paa,
128 per_person_type_usages_f ptu,
129 per_person_types ppt
130 WHERE ppf.person_id = paa.person_id
131 AND ppt.person_type_id = ptu.person_type_id
132 AND ppt.system_person_type IN ('EMP', 'EMP_APL', 'CWK','EX_EMP')
133 AND ptu.person_id = ppf.person_id
134 AND ( p_person_type IS NULL
135 OR ( DECODE (ppt.system_person_type, 'EMP_APL', 'EMP', ppt.system_person_type) =
136 p_person_type
137 AND p_person_type IS NOT NULL
138 )
139 )
140 AND p_start_period <= ptu.effective_end_date
141 AND p_end_period >= ptu.effective_start_date
142 AND paa.primary_flag = 'Y'
143 AND paa.assignment_type IN ('E', 'C')
144 AND p_start_period <= paa.effective_end_date
145 AND p_end_period >= paa.effective_start_date
146 AND p_start_period <= ppf.effective_end_date
147 AND p_end_period >= ppf.effective_start_date
148 AND ppf.person_id = p_resource_id
149 AND ppf.person_id = htgqc.criteria_id
150 AND htgqc.tk_group_query_id = htgq.tk_group_query_id
151 AND htgq.tk_group_id = htg.tk_group_id
152 AND htg.business_group_id = ppf.business_group_id
153 AND htgq.include_exclude = 'I'
154 AND htgqc.criteria_type = 'PERSON'
155 AND ppf.effective_end_date = (SELECT MAX (ppf2.effective_end_date)
156 FROM per_people_f ppf2, per_all_assignments_f paa2
157 WHERE ppf2.person_id = paa2.person_id
158 AND paa2.primary_flag = 'Y'
159 AND paa2.assignment_type IN ('E', 'C')
160 AND p_start_period <= paa2.effective_end_date
161 AND p_end_period >= paa2.effective_start_date
162 AND p_start_period <= ppf2.effective_end_date
163 AND p_end_period >= ppf2.effective_start_date
164 AND ppf2.person_id = ppf.person_id)
165 ORDER BY 2;
166
167 CURSOR c_timecard_info (
168 p_resource_id
169 /*ADVICE(261): This definition hides another one [556] */
170 IN NUMBER,
171 p_start_period
172 /*ADVICE(264): This definition hides another one [556] */
173 IN DATE,
174 p_end_period
175 /*ADVICE(267): This definition hides another one [556] */
176 IN DATE
177 ) IS
178 SELECT time_building_block_id, object_version_number, start_time, comment_text, created_by,
179 creation_date, last_updated_by, last_update_date, last_update_login
180 FROM hxc_time_building_blocks
181 WHERE resource_id = p_resource_id
182 AND SCOPE = 'TIMECARD'
183 AND start_time = p_start_period
184 AND stop_time = p_end_period
185 AND date_to = hr_general.end_of_time;
186
187 CURSOR c (
188 p_detailid NUMBER
189 ) IS
190 SELECT *
191 FROM hxc_tk_detail_temp
192 WHERE detailid = p_detailid;
193
194 c_row hxc_tk_detail_temp%ROWTYPE;
195
196 CURSOR c_detail_info (
197 timecard_id IN NUMBER,
198 timecard_ovn IN NUMBER
199 ) IS
200 SELECT detail.time_building_block_id detail_id, detail.object_version_number detail_ovn,
201 detail.measure, DAY.start_time, detail.start_time time_in, detail.stop_time time_out,
202 detail.comment_text
203 FROM hxc_time_building_blocks detail, hxc_time_building_blocks DAY
204 WHERE DAY.parent_building_block_id = timecard_id
205 AND DAY.parent_building_block_ovn = timecard_ovn
206 AND detail.date_to = hr_general.end_of_time
207 AND detail.SCOPE = 'DETAIL'
208 AND detail.parent_building_block_id = DAY.time_building_block_id
209 AND detail.parent_building_block_ovn = DAY.object_version_number
210 AND DAY.SCOPE = 'DAY'
211 AND DAY.date_to = hr_general.end_of_time
212 ORDER BY 4, 5, 1; --nitin
213
214
215 /* UNCOMMENT WHEN hxc_timecard_summary is enable
216 CURSOR c_timecard_status (timecard_id IN NUMBER, timecard_ovn IN NUMBER)
217 IS
218 SELECT approval_status
219 FROM hxc_timecard_summary
220 WHERE timecard_id = time_building_block_id
221 AND timecard_ovn = time_building_block_ovn;
222 */
223 l_table_counter NUMBER
224 /*ADVICE(316): NUMBER has no precision [315] */
225 := 0;
226 l_day_index
227 /*ADVICE(319): Unreferenced variable [553] */
228 NUMBER
229 /*ADVICE(321): NUMBER has no precision [315] */
230 ;
231 l_detail_index NUMBER
232 /*ADVICE(324): NUMBER has no precision [315] */
233 ;
234 l_attribute_index NUMBER
235 /*ADVICE(327): NUMBER has no precision [315] */
236 := 0;
237 l_index_buffer NUMBER
238 /*ADVICE(330): NUMBER has no precision [315] */
239 := 0;
240 l_record_index_buffer NUMBER
241 /*ADVICE(333): NUMBER has no precision [315] */
242 := 0;
243 l_attributes hxc_attribute_table_type;
244 l_timecard hxc_block_table_type;
245 l_messages hxc_message_table_type;
246 l_alias_def_list_index
247 /*ADVICE(339): Unreferenced variable [553] */
248 NUMBER
249 /*ADVICE(341): NUMBER has no precision [315] */
250 ;
251 l_alias_type
252 /*ADVICE(344): Unreferenced variable [553] */
253 VARCHAR2 (80);
254 l_buffer_info t_buffer_table;
255 t_base_table t_base_info;
256 t_base_index NUMBER
257 /*ADVICE(349): NUMBER has no precision [315] */
258 := 0;
259
260 /* Added for bug 8775740 OTL ABSENCE INTEGRATION
261 Declarations
262 */
263
264 -- change start
265
266 l_table_counter_tmp NUMBER; -- SVG CHANGE
267 t_tk_abs_tab hxc_timekeeper_process.t_tk_abs_tab_type;
268 l_pref_table hxc_preference_evaluation.t_pref_table;
269 l_pref_index NUMBER;
270 l_pref_date DATE;
271 l_abs_tc_start DATE;
272 l_abs_tc_end DATE;
273
274 -- change end
275
276
277 l_found_hours_type BOOLEAN;
278 l_found_timecard BOOLEAN := FALSE;
279 l_detail_start_time DATE;
280 l_detail_measure NUMBER
281 /*ADVICE(355): NUMBER has no precision [315] */
282 ;
283 l_detail_id NUMBER
284 /*ADVICE(358): NUMBER has no precision [315] */
285 ;
286 l_detail_ovn NUMBER
287 /*ADVICE(361): NUMBER has no precision [315] */
288 ;
289 l_detail_time_in DATE;
290 l_detail_time_out DATE;
291 l_detail_comment_text VARCHAR2 (2000) := NULL;
292 /*ADVICE(366): VARCHAR2 declaration with length greater than 500 characters [307] */
293
294 /*ADVICE(368): Initialization to NULL is superfluous [417] */
295
296 l_detail_info_table t_detail_info_table;
297 l_day_id_info_table t_day_id_info_table;
298 l_timecard_id NUMBER
299 /*ADVICE(373): NUMBER has no precision [315] */
300 ;
301 l_timecard_ovn NUMBER
302 /*ADVICE(376): NUMBER has no precision [315] */
303 ;
304 l_timecard_start_time DATE;
305 l_timecard_comment_text VARCHAR2 (2000) := NULL;
306 /*ADVICE(380): VARCHAR2 declaration with length greater than 500 characters [307] */
307
308 /*ADVICE(382): Initialization to NULL is superfluous [417] */
309
310 l_last_update_date DATE;
311 l_last_updated_by NUMBER (16);
312 l_last_update_login NUMBER (16);
313 l_created_by NUMBER (16);
314 l_creation_date DATE;
315 l_query BOOLEAN;
316 l_audit_query BOOLEAN;
317 l_approval_style_id NUMBER
318 /*ADVICE(392): NUMBER has no precision [315] */
319 ;
320 l_approval_status VARCHAR2 (80);
321 l_found_detail BOOLEAN := FALSE;
322 l_rec_periodid NUMBER
323 /*ADVICE(397): NUMBER has no precision [315] */
324 ;
325 l_status_code VARCHAR2 (80);
326 l_timecard_status VARCHAR2 (80);
327 l_timecard_status_meaning VARCHAR2 (80);
328 l_emp_negpref VARCHAR2 (150);
329 l_emp_recpref NUMBER
330 /*ADVICE(404): NUMBER has no precision [315] */
331 ;
332 l_emp_appstyle NUMBER
333 /*ADVICE(407): NUMBER has no precision [315] */
334 ;
335 l_emp_layout1 NUMBER
336 /*ADVICE(410): NUMBER has no precision [315] */
337 ;
338 l_emp_layout2 NUMBER
339 /*ADVICE(413): NUMBER has no precision [315] */
340 ;
341 l_emp_layout3 NUMBER
342 /*ADVICE(416): NUMBER has no precision [315] */
343 ;
344 l_emp_layout4 NUMBER
345 /*ADVICE(419): NUMBER has no precision [315] */
346 ;
347 l_emp_layout5 NUMBER
348 /*ADVICE(422): NUMBER has no precision [315] */
349 ;
350 l_emp_layout6 NUMBER
351 /*ADVICE(425): NUMBER has no precision [315] */
352 ;
353 l_emp_layout7 NUMBER
354 /*ADVICE(428): NUMBER has no precision [315] */
355 ;
356 l_emp_layout8 NUMBER
357 /*ADVICE(431): NUMBER has no precision [315] */
358 ;
359 l_emp_edits VARCHAR2 (150);
360 l_pastdt VARCHAR2 (30);
361 l_futuredt VARCHAR2 (30);
362 num
363 /*ADVICE(437): Unreferenced variable [553] */
364 NUMBER
365 /*ADVICE(439): NUMBER has no precision [315] */
366 ;
367 n
368 /*ADVICE(442): Unreferenced variable [553] */
369 NUMBER
370 /*ADVICE(444): NUMBER has no precision [315] */
371 := 0;
372 changed_no NUMBER
373 /*ADVICE(447): NUMBER has no precision [315] */
374 := 0;
375 changed VARCHAR2 (5) := 'N';
376 emp_tab_index NUMBER
377 /*ADVICE(451): NUMBER has no precision [315] */
378 := 0;
379 tc_start DATE;
380 tc_end DATE;
381 emp_qry_tc_info hxc_timekeeper_utilities.emptctab;
382 l_add_index_day NUMBER
383 /*ADVICE(457): NUMBER has no precision [315] */
384 := 0;
385 l_resource_tc_table t_resource_tc_table;
386 l_timecard_index_info hxc_timekeeper_process.t_timecard_index_info;
387 l_attribute_index_info hxc_timekeeper_process.t_attribute_index_info;
388 l_emp_start_date DATE;
389 l_emp_terminate_date DATE;
390 l_row_id ROWID
391 /*ADVICE(464): Use of ROWID [113] */
392 ;
393 l_tc_lock_success VARCHAR2 (30) := 'FALSE';
394 l_tc_lock_boolean BOOLEAN := FALSE;
395 l_process_lock_type VARCHAR2 (80) := hxc_lock_util.c_pui_timekeeper_action;
396 l_relased_success
397 /*ADVICE(470): Unreferenced variable [553] */
398 BOOLEAN;
399 l_lock_trx_id NUMBER (15) := p_trx_lock_id;
400 l_row_lock_id VARCHAR2 (30) := p_row_lock_id;
401 l_timecard_message_code VARCHAR2 (30) := NULL;
402 /*ADVICE(475): Initialization to NULL is superfluous [417] */
403
404 l_timecard_reason_code VARCHAR2 (30) := NULL;
405 /*ADVICE(478): Initialization to NULL is superfluous [417] */
406
407 l_timecard_message VARCHAR2 (240) := NULL;
408 /*ADVICE(481): Initialization to NULL is superfluous [417] */
409
410 l_index NUMBER
411 /*ADVICE(484): NUMBER has no precision [315] */
412 ;
413 l_pref_exception EXCEPTION;
414
415 l_abs_pending_appr_notif EXCEPTION;
416
417 l_lock_not_obtained EXCEPTION;
418
419 l_terminated_list VARCHAR2 (32000);
420 /*ADVICE(488): VARCHAR2 declaration with length greater than 500 characters [307] */
421
422 l_audit_enabled VARCHAR2 (150) := NULL;
423 /*ADVICE(491): Initialization to NULL is superfluous [417] */
424
425 --Bug 10231662
426 l_user_person_type VARCHAR2(2000);
427
428
429 ----------------------------------------------------------------------
430 --Private function to check if timecard has message of type queried
431 ----------------------------------------------------------------------
432 FUNCTION tc_has_message (
433 p_bb_id IN NUMBER,
434 p_bb_ovn IN NUMBER,
435 p_msg_type IN VARCHAR2,
436 p_msg_text IN VARCHAR2
437 )
438 RETURN BOOLEAN IS
439 CURSOR csr_get_timecard IS
440 SELECT detail.time_building_block_id bb_id, detail.object_version_number bb_ovn
441 FROM hxc_time_building_blocks detail, hxc_time_building_blocks DAY
442 WHERE DAY.parent_building_block_id = p_bb_id
443 /*ADVICE(509): Cursor references an external variable (use a parameter) [209] */
444
445 AND DAY.parent_building_block_ovn = p_bb_ovn
446 /*ADVICE(512): Cursor references an external variable (use a parameter) [209] */
447
448 AND detail.date_to = hr_general.end_of_time
449 AND detail.SCOPE = 'DETAIL'
450 AND detail.parent_building_block_id = DAY.time_building_block_id
451 AND detail.parent_building_block_ovn = DAY.object_version_number
452 AND DAY.SCOPE = 'DAY'
453 AND DAY.date_to = hr_general.end_of_time;
454
455 CURSOR c_get_warning_msg (
456 bb_id NUMBER,
457 bb_ovn NUMBER,
458 msg_type VARCHAR2,
459 msg_text VARCHAR2
460 ) IS
461 SELECT 'Y'
462 FROM hxc_errors
463 WHERE time_building_block_id = bb_id
464 AND time_building_block_ovn = bb_ovn
465 AND (date_to = hr_general.end_of_time OR date_to IS NULL)
466 AND message_level = DECODE (msg_type, 'ALL', message_level, NULL, message_level, msg_type)
467 AND message_name = DECODE (msg_text, NULL, message_name, msg_text);
468
469 l_msg_flag VARCHAR2 (10) := NULL;
470 /*ADVICE(536): Initialization to NULL is superfluous [417] */
471
472 BEGIN
473 l_msg_flag := NULL;
474
475 -- check for timecard scope
476 OPEN c_get_warning_msg (p_bb_id, p_bb_ovn, p_msg_type, p_msg_text);
477 FETCH c_get_warning_msg INTO l_msg_flag;
478 CLOSE c_get_warning_msg;
479
480 IF l_msg_flag IS NOT NULL THEN
481 RETURN TRUE;
482 END IF;
483
484 FOR timecard_error_rec IN csr_get_timecard LOOP
485 OPEN c_get_warning_msg (timecard_error_rec.bb_id, timecard_error_rec.bb_ovn, p_msg_type, p_msg_text);
486 FETCH c_get_warning_msg INTO l_msg_flag;
487 CLOSE c_get_warning_msg;
488
489 IF l_msg_flag IS NOT NULL THEN
490 RETURN TRUE;
491 /*ADVICE(557): A RETURN statement is used in a FOR loop [504] */
492
493 END IF;
494 END LOOP;
495
496 IF l_msg_flag IS NULL THEN
497 RETURN FALSE;
498 ELSE
499 RETURN TRUE;
500 END IF;
501 /*ADVICE(567): Last statement in function must be a RETURN [510] */
502
503 END tc_has_message;
504 /*ADVICE(570): Function with more than one RETURN statement in the executable section [512] */
505
506
507 FUNCTION tc_has_reason (
508 p_bb_id IN NUMBER,
509 p_bb_ovn IN NUMBER,
510 p_late_reason
511 /*ADVICE(577): This definition hides another one [556] */
512 IN VARCHAR2,
513 p_change_reason
514 /*ADVICE(580): This definition hides another one [556] */
515 IN VARCHAR2
516 )
517 RETURN BOOLEAN IS
518 CURSOR csr_get_timecard IS
519 SELECT detail.time_building_block_id bb_id, detail.object_version_number bb_ovn
520 FROM hxc_time_building_blocks detail, hxc_time_building_blocks DAY
521 WHERE DAY.parent_building_block_id = p_bb_id
522 /*ADVICE(588): Cursor references an external variable (use a parameter) [209] */
523
524 AND DAY.parent_building_block_ovn = p_bb_ovn
525 /*ADVICE(591): Cursor references an external variable (use a parameter) [209] */
526
527 AND detail.date_to = hr_general.end_of_time
528 AND detail.SCOPE = 'DETAIL'
529 AND detail.parent_building_block_id = DAY.time_building_block_id
530 AND detail.parent_building_block_ovn = DAY.object_version_number
531 AND DAY.SCOPE = 'DAY'
532 AND DAY.date_to = hr_general.end_of_time;
533
534 CURSOR c_get_reason (
535 bb_id NUMBER,
536 bb_ovn NUMBER,
537 late_reason VARCHAR2,
538 change_reason VARCHAR2,
539 audit_history VARCHAR2
540 ) IS
541 SELECT 'Y'
542 FROM hxc_time_attributes
543 WHERE time_attribute_id IN (SELECT time_attribute_id
544 FROM hxc_time_attribute_usages
545 WHERE time_building_block_id = bb_id
546 AND time_building_block_ovn = bb_ovn)
547 AND attribute_category = 'REASON'
548 AND attribute1 = DECODE (attribute3, 'CHANGE', change_reason, 'LATE', late_reason)
549 AND NVL (attribute7, '-99') = DECODE (audit_history, NULL, NVL (attribute7, '-99'), audit_history);
550
551 CURSOR c_get_reason_null (
552 bb_id NUMBER,
553 bb_ovn NUMBER,
554 audit_history VARCHAR2
555 ) IS
556 SELECT 'Y'
557 FROM hxc_time_attributes
558 WHERE time_attribute_id IN (SELECT time_attribute_id
559 FROM hxc_time_attribute_usages
560 WHERE time_building_block_id = bb_id
561 AND time_building_block_ovn = bb_ovn)
562 AND attribute_category = 'REASON'
563 AND attribute7 = DECODE (audit_history, NULL, attribute7, audit_history);
564
565 l_reason_flag VARCHAR2 (10) := NULL;
566 /*ADVICE(632): Initialization to NULL is superfluous [417] */
567
568 BEGIN
569 g_debug :=hr_utility.debug_enabled;
570 l_reason_flag := NULL;
571
572
573 -- check for timecard scope
574
575 IF (p_late_reason IS NOT NULL OR p_change_reason IS NOT NULL) THEN
576 FOR timecard_error_rec IN csr_get_timecard LOOP
577 if g_debug then
578 hr_utility.TRACE ('timecard_error_rec.bb_id'|| timecard_error_rec.bb_id);
579 hr_utility.TRACE ('timecard_error_rec.bb_ovn'|| timecard_error_rec.bb_ovn);
580 hr_utility.TRACE ('timecard_error_rec.bb_ovn'|| p_late_reason);
581 hr_utility.TRACE ('timecard_error_rec.bb_ovn'|| p_audit_history);
582 end if;
583 /*ADVICE(646): Local program unit references an external variable (use a parameter or pull in the
584 definition) [210] */
585
586 l_reason_flag := NULL;
587 OPEN c_get_reason (
588 timecard_error_rec.bb_id,
589 timecard_error_rec.bb_ovn,
590 p_late_reason,
591 p_change_reason,
592 p_audit_history
593 /*ADVICE(656): Local program unit references an external variable (use a parameter or pull in the
594 definition) [210] */
595
596 );
597 FETCH c_get_reason INTO l_reason_flag;
598 CLOSE c_get_reason;
599
600 IF l_reason_flag IS NOT NULL THEN
601 RETURN TRUE;
602 /*ADVICE(665): A RETURN statement is used in a FOR loop [504] */
603
604 END IF;
605 END LOOP;
606 ELSE
607 FOR timecard_error_rec IN csr_get_timecard LOOP
608 l_reason_flag := NULL;
609 OPEN c_get_reason_null (timecard_error_rec.bb_id, timecard_error_rec.bb_ovn, p_audit_history
610 /*ADVICE(673): Local program unit references an external variable (use a parameter or pull in the
611 definition) [210] */
612 );
613 FETCH c_get_reason_null INTO l_reason_flag;
614 CLOSE c_get_reason_null;
615
616 IF l_reason_flag IS NOT NULL THEN
617 RETURN TRUE;
618 /*ADVICE(681): A RETURN statement is used in a FOR loop [504] */
619
620 END IF;
621 END LOOP;
622 END IF;
623
624 IF l_reason_flag IS NULL THEN
625 RETURN FALSE;
626 ELSE
627 RETURN TRUE;
628 END IF;
629 /*ADVICE(692): Last statement in function must be a RETURN [510] */
630
631 END tc_has_reason ;
632 /*ADVICE(695): Function with more than one RETURN statement in the executable section [512] */
633
634
635 --Main Query Begin
636 BEGIN
637 l_attributes := hxc_attribute_table_type ();
638 l_timecard := hxc_block_table_type ();
639 l_messages := hxc_message_table_type ();
640 g_debug :=hr_utility.debug_enabled;
641
642
643 g_resource_prepop_count:=1;
644
645 /* Added for bug 8775740 HR OTL Absence Integration.
646
647 Setting the value for the HR OTL Integration Profile to a
648 global var.
649 */
650 -- Change start
651 g_abs_intg_profile_set:= nvl(FND_PROFILE.VALUE('HR_ABS_OTL_INTEGRATION'),'N');
652 -- Change end
653
654
655 -- DELETE FROM detail_temp;
656 --get the timekeeper setup preference for details button to decide the category
657 IF p_query_type IS NOT NULL THEN
658 g_resource_tc_table.DELETE;
659 g_submit_table.DELETE;
660 l_index := g_timekeeper_data_query.FIRST;
661
662 LOOP
663 EXIT WHEN NOT g_timekeeper_data_query.EXISTS (l_index);
664
665 IF ((p_query_type = 'CHECKBOX_ENABLED') --OR (p_query_type = 'SKIP_ENABLED')
666 ) THEN
667 g_timekeeper_data_query (l_index).check_box := 'Y';
668 END IF;
669
670 IF ((p_query_type = 'CHECKBOX_DISABLED') -- OR (p_query_type = 'SKIP_DISABLED')
671 ) THEN
672 g_timekeeper_data_query (l_index).check_box := 'N';
673 END IF;
674
675 IF g_timekeeper_data_query (l_index).check_box = 'Y' THEN
676 g_submit_table (g_timekeeper_data_query (l_index).resource_id).resource_id :=
677 g_timekeeper_data_query (l_index).resource_id;
678 g_submit_table (g_timekeeper_data_query (l_index).resource_id).timecard_id :=
679 g_timekeeper_data_query (l_index).timecard_id;
680 g_submit_table (g_timekeeper_data_query (l_index).resource_id).start_time :=
681 g_timekeeper_data_query (l_index).timecard_start_period;
682 g_submit_table (g_timekeeper_data_query (l_index).resource_id).stop_time :=
683 g_timekeeper_data_query (l_index).timecard_end_period;
684 g_submit_table (g_timekeeper_data_query (l_index).resource_id).row_lock_id :=
685 g_timekeeper_data_query (l_index).row_lock_id;
686 END IF;
687
688 IF g_resource_tc_table.EXISTS (g_timekeeper_data_query (l_index).resource_id)
689 AND g_timekeeper_data_query (l_index).check_box = 'Y' THEN
690 g_resource_tc_table (g_timekeeper_data_query (l_index).resource_id).no_rows :=
691 g_resource_tc_table (g_timekeeper_data_query (l_index).resource_id).no_rows + 1;
692 ELSE
693 IF g_timekeeper_data_query (l_index).check_box = 'Y' THEN
694 g_resource_tc_table (g_timekeeper_data_query (l_index).resource_id).no_rows := 1;
695 ELSE
696 g_resource_tc_table (g_timekeeper_data_query (l_index).resource_id).no_rows := 0;
697 END IF;
698 END IF;
699
700 l_index := g_timekeeper_data_query.NEXT (l_index);
701 END LOOP;
702
703 p_timekeeper_data := g_timekeeper_data_query;
704 ELSE -- global checkbix select
705 --get the timekeeper setup preference for details button to decide the category
706
707 IF g_base_att IS NULL THEN
708 g_base_att := hxc_preference_evaluation.resource_preferences (
709 p_resource_id => p_timekeeper_id,
710 p_pref_code => 'TK_TCARD_SETUP',
711 p_attribute_n => 4,
712 p_evaluation_date => SYSDATE
713 );
714 END IF;
715
716 IF (g_tk_finish_process) THEN
717 -- set the parameter to send back
718 p_timekeeper_data := g_tk_data_query_from_process;
719 -- reset the data
720 g_tk_data_query_from_process.DELETE;
721 g_from_tk_process := FALSE;
722 g_tk_finish_process := FALSE;
723 ELSE
724 --detail table needs to be deleted when it is queried first time
725 --to store the detail associated
726 --p_reqryflg is used to check the check box which got affected in requery only.
727
728 if g_debug then
729 hr_utility.TRACE ('p_reqryflg'|| p_reqryflg);
730 end if;
731 IF p_reqryflg = 'N' THEN
732 --ctk --empty the detail_temp table
733 g_detail_data.DELETE;
734
735 DELETE FROM hxc_tk_detail_temp; --4191367
736 /*ADVICE(786): Use of DELETE or UPDATE without WHERE clause [313] */
737
738
739 g_submit_table.DELETE;
740 g_lock_table.DELETE;
741 g_resource_tc_table.DELETE;
742 END IF;
743
744 FOR resource_info IN c_resource_info (
745 p_timekeeper_id,
746 p_start_period,
747 p_end_period,
748 p_group_id,
749 p_resource_id,
750 p_person_type
751 ) LOOP
752 BEGIN
753 g_debug :=hr_utility.debug_enabled;
754 if g_debug then
755 hr_utility.TRACE ('processing for'|| resource_info.person_id);
756 end if;
757 IF NOT (l_resource_tc_table.EXISTS (resource_info.person_id)) THEN
758 -- first thing it is to add this person into the buffer table
759
760 l_resource_tc_table (resource_info.person_id).index_string :=
761 'We are creating a timecard for this person';
762 g_resource_tc_table (resource_info.person_id).index_string :=
763 'We are creating a timecard for this person';
764 ---store the employee preferences
765
766 l_emp_negpref := NULL;
767 l_emp_recpref := NULL;
768 l_emp_appstyle := NULL;
769 l_emp_layout1 := NULL;
770 l_emp_layout2 := NULL;
771 l_emp_layout3 := NULL;
772 l_emp_layout4 := NULL;
773 l_emp_layout5 := NULL;
774 l_emp_layout6 := NULL;
775 l_emp_layout7 := NULL;
776 l_emp_layout8 := NULL;
777 l_emp_edits := NULL;
778 l_audit_enabled := NULL;
779
780 BEGIN
781 hxc_timekeeper_utilities.get_emp_pref (
782 resource_info.person_id,
783 l_emp_negpref,
784 l_emp_recpref,
785 l_emp_appstyle,
786 l_emp_layout1,
787 l_emp_layout2,
788 l_emp_layout3,
789 l_emp_layout4,
790 l_emp_layout5,
791 l_emp_layout6,
792 l_emp_layout7,
793 l_emp_layout8,
794 l_emp_edits,
795 l_pastdt,
796 l_futuredt,
797 l_emp_start_date,
798 l_emp_terminate_date,
799 l_audit_enabled
800 );
801 EXCEPTION
802 WHEN OTHERS THEN
803 IF l_terminated_list IS NOT NULL THEN
804 l_terminated_list :=
805 l_terminated_list || ' , ' || resource_info.employee_number || ' - ' || resource_info.full_name;
806 ELSE
807 l_terminated_list := resource_info.employee_number || ' - ' || resource_info.full_name;
808 END IF;
809
810 l_terminated_list := REPLACE (l_terminated_list, ', ,', ',');
811 RAISE l_pref_exception;
812 /*ADVICE(859): A WHEN OTHERS clause is used in the exception section without any other specific handlers
813 [201] */
814
815 END;
816
817
818 -- Bug 10231662
819 l_user_person_type :=
820 hr_person_type_usage_info.get_user_person_type(GREATEST(l_emp_start_date,p_start_period),
821 resource_info.person_id);
822
823 IF g_debug THEN
824 hr_utility.trace('l_emp_start_date ::'||l_emp_start_date );
825 hr_utility.trace('p_start_period ::'||p_start_period );
826 hr_utility.trace('GREATEST(l_emp_start_date,p_start_period) ::'||GREATEST(l_emp_start_date,p_start_period));
827 hr_utility.trace('resource_info.person_id ::'||resource_info.person_id );
828 hr_utility.trace('l_user_person_type ::'||l_user_person_type );
829 END IF;
830
831 --
832 --initialize the emp_qry_tc_info table used to store the saved timecards for that person
833
834
835
836 emp_qry_tc_info.DELETE;
837 --populate emp_qry_tc_info table with saved timecards in that period
838
839 hxc_timekeeper_utilities.populate_query_tc_tab (
840 resource_info.person_id,
841 p_start_period,
842 p_end_period,
843 emp_qry_tc_info
844 );
845 ---now we check if he is mid period employee or normal employee
846 l_audit_query := FALSE;
847 if g_debug then
848 hr_utility.TRACE ('l_audit_enabled'|| l_audit_enabled);
849 hr_utility.TRACE ('p_audit_enabled'|| p_audit_enabled);
850 end if;
851 IF ( (l_audit_enabled IS NOT NULL AND p_audit_enabled = 'Y')
852 OR (l_audit_enabled IS NULL AND p_audit_enabled = 'N')
853 OR p_audit_enabled IS NULL
854 ) THEN
855 l_audit_query := TRUE;
856 END IF;
857 /*
858 IF l_audit_query THEN
859 ----hr_utility.TRACE ('l_audit_query IS TRUE');
860 ELSE
861 ----hr_utility.TRACE ('l_audit_query IS FALSE');
862 END IF;
863 JOEL */
864 l_query := FALSE;
865
866 IF emp_qry_tc_info.COUNT > 1 AND NVL (l_emp_recpref, '-999') = NVL (p_rec_periodid, '-999') THEN
867 if g_debug then
868 hr_utility.trace('Multiple Timecard exists and he is mid period change');
869 end if;
870 l_query := TRUE;
871 ELSIF emp_qry_tc_info.COUNT = 1 THEN
872 if g_debug then
873 hr_utility.trace ('Normal employee or mid period with no timecard in range');
874 end if;
875 l_query := TRUE;
876 END IF;
877
878 -- Now we are looping thro this table to query all the timecards.
879 /* JOEL
880 IF l_query THEN
881 ----hr_utility.TRACE ('l_query IS TRUE');
882 ELSE
883 ----hr_utility.TRACE ('l_query IS FALSE');
884 END IF;
885 */
886 IF l_query AND l_audit_query THEN
887 emp_tab_index := emp_qry_tc_info.FIRST;
888
889 LOOP
890 EXIT WHEN NOT emp_qry_tc_info.EXISTS (emp_tab_index);
891 l_found_timecard := FALSE;
892 --tc_start stores the timecard start period
893 --tc_end stores the timecard end period.
894
895 tc_start := emp_qry_tc_info (emp_tab_index).tc_frdt; -- Bug 13489321
896 tc_end := emp_qry_tc_info (emp_tab_index).tc_todt; -- Bug 13489321
897
898
899 IF tc_start <> p_start_period THEN
900 l_add_index_day := (tc_start - p_start_period); -- this is used to add an offset for matrix of hours
901 ELSE
902 l_add_index_day := 0;
903 END IF;
904
905 OPEN c_timecard_info (resource_info.person_id, tc_start, tc_end + g_one_day);
906 FETCH c_timecard_info INTO l_timecard_id,
907 l_timecard_ovn,
908 l_timecard_start_time,
909 l_timecard_comment_text,
910 l_created_by,
911 l_creation_date,
912 l_last_updated_by,
913 l_last_update_date,
914 l_last_update_login;
915 /*ADVICE(942): FETCH into a list of variables instead of a record [204] */
916
917
918 -- find the status of the timecard
919 IF c_timecard_info%FOUND THEN
920 -- when the hxc_timecard_summary is enable
921 -- we need to open c_timecard_status instead.
922
923
924
925 l_timecard_status :=
926 hxc_timecard_search_pkg.get_timecard_status_code (l_timecard_id, l_timecard_ovn);
927 l_timecard_status_meaning :=
928 hr_bis.bis_decode_lookup ('HXC_APPROVAL_STATUS', l_timecard_status);
929 END IF;
930
931 IF p_status_code IS NULL THEN
932 l_status_code := l_timecard_status;
933 ELSE
934 l_status_code := p_status_code;
935 END IF;
936
937 if g_debug then
938 hr_utility.TRACE ('p_message_type'|| p_message_type);
939 hr_utility.TRACE ('p_message_text'|| p_message_text);
940 end if;
941 -- check for timecard message associated
942 IF tc_has_message (l_timecard_id, l_timecard_ovn, p_message_type, p_message_text) THEN
943 l_timecard_message_code := 'MESSAGE';
944 l_timecard_message := hr_bis.bis_decode_lookup ('HXC_TK_MESSAGE', l_timecard_message_code);
945 ELSE
946 l_timecard_message_code := NULL;
947 l_timecard_message := NULL;
948 END IF;
949
950 IF tc_has_reason (l_timecard_id, l_timecard_ovn, p_late_reason, p_change_reason) THEN
951 l_timecard_reason_code := 'REASON';
952 if g_debug then
953 hr_utility.TRACE ('yes tc has reason');
954 end if;
955 /* l_timecard_message :=
956 hr_bis.bis_decode_lookup(
957 'HXC_TK_MESSAGE',
958 l_timecard_message_code
959 );*/
960 ELSE
961 if g_debug then
962 hr_utility.TRACE ('no reason'|| l_timecard_reason_code);
963 end if;
964 l_timecard_reason_code := NULL;
965
966 -- l_timecard_message := NULL;
967 END IF;
968
969 IF c_timecard_info%FOUND
970 AND l_timecard_status = l_status_code
971 AND (p_message_type IS NULL OR l_timecard_message_code = 'MESSAGE')
972 AND (p_message_text IS NULL OR l_timecard_message_code = 'MESSAGE')
973 AND (p_change_reason IS NULL OR l_timecard_reason_code = 'REASON')
974 AND (p_late_reason IS NULL OR l_timecard_reason_code = 'REASON')
975 AND (p_audit_history IS NULL OR l_timecard_reason_code = 'REASON') THEN
976 --now we lock the timecard
977 IF p_reqryflg = 'N' AND p_lock_profile = 'Y' THEN
978 --lock only when user does fresh find
979
980 l_row_id := NULL;
981 l_row_lock_id := NULL;
982 l_tc_lock_success := 'FALSE';
983 hxc_lock_api.request_lock (
984 p_process_locker_type => l_process_lock_type,
985 p_resource_id => resource_info.person_id,
986 p_start_time => p_start_period,
987 p_stop_time => p_end_period + g_one_day,
988 p_time_building_block_id => NULL,
989 p_time_building_block_ovn => NULL,
990 p_transaction_lock_id => l_lock_trx_id,
991 p_messages => l_messages,
992 p_row_lock_id => l_row_id,
993 p_locked_success => l_tc_lock_boolean
994 );
995 l_row_lock_id := ROWIDTOCHAR (l_row_id);
996
997 IF l_tc_lock_boolean THEN
998 l_tc_lock_success := 'TRUE';
999 g_lock_table (resource_info.person_id).row_lock_id := l_row_id;
1000 g_lock_table (resource_info.person_id).resource_id := resource_info.person_id;
1001 g_lock_table (resource_info.person_id).timecard_id := l_timecard_id;
1002 g_lock_table (resource_info.person_id).start_time := p_start_period;
1003 g_lock_table (resource_info.person_id).stop_time := p_end_period + g_one_day;
1004 ELSE
1005 l_tc_lock_success := 'FALSE';
1006 END IF;
1007 --nitin check
1008 --l_resource_tc_table (resource_info.person_id).lockid:=l_row_lock_id;
1009 ELSE
1010 IF l_row_lock_id IS NOT NULL THEN
1011 l_tc_lock_success := 'TRUE';
1012 ELSE
1013 l_tc_lock_success := 'FALSE';
1014 END IF;
1015 END IF;
1016
1017
1018 -- CLOSE c_timecard_info;
1019
1020 l_buffer_info.DELETE;
1021 l_index_buffer := 0;
1022
1023 -- rest the l_attribute_index
1024 l_attribute_index := 0;
1025 l_found_detail := FALSE;
1026
1027 --populate the attribute table
1028 l_attributes.DELETE;
1029 l_detail_info_table.DELETE;
1030
1031 --delete l_timecard before populating
1032 l_timecard.DELETE;
1033
1034
1035 if g_debug then
1036 hr_utility.trace('l_timecard_id'||l_timecard_id||' l_timecard_onv'||l_timecard_ovn);
1037 end if;
1038 -- populate detail information for this timecard
1039 FOR detail_info IN c_detail_info (l_timecard_id, l_timecard_ovn) LOOP
1040 l_detail_info_table (detail_info.detail_id).detail_id := detail_info.detail_id;
1041 l_detail_info_table (detail_info.detail_id).detail_ovn := detail_info.detail_ovn;
1042 l_detail_info_table (detail_info.detail_id).measure := detail_info.measure;
1043 l_detail_info_table (detail_info.detail_id).start_time := detail_info.start_time;
1044 l_detail_info_table (detail_info.detail_id).time_in := detail_info.time_in;
1045 l_detail_info_table (detail_info.detail_id).time_out := detail_info.time_out;
1046 l_detail_info_table (detail_info.detail_id).detail_comment_text := detail_info.comment_text;
1047 END LOOP;
1048 /*ADVICE(1067): Nested LOOPs should all be labeled [406] */
1049
1050
1051 if g_debug then
1052 hr_utility.trace('SVG REACHED HERE 1');
1053 end if;
1054
1055
1056 -- Get the data actually stored in the database.
1057
1058
1059 hxc_timekeeper_utilities.create_attribute_structure (
1060 p_timecard_id => l_timecard_id,
1061 p_timecard_ovn => l_timecard_ovn,
1062 p_resource_id => resource_info.person_id,
1063 p_start_period => tc_start,
1064 p_end_period => tc_end,
1065 p_attributes => l_attributes,
1066 p_add_hours_type_id => NULL,
1067 p_attribute_index_info => l_attribute_index_info
1068 );
1069 --create timecard block
1070
1071
1072 create_timecard_day_structure (
1073 p_resource_id => resource_info.person_id,
1074 p_start_period => tc_start,
1075 p_end_period => tc_end,
1076 p_tc_frdt => tc_start,
1077 p_tc_todt => tc_end,
1078 p_timecard => l_timecard,
1079 p_attributes => l_attributes,
1080 p_day_id_info_table => l_day_id_info_table,
1081 p_approval_style_id => l_approval_style_id,
1082 p_approval_status => l_approval_status,
1083 p_comment_text => l_timecard_comment_text,
1084 p_timecard_status => l_timecard_status,
1085 p_attribute_index_info => l_attribute_index_info,
1086 p_timecard_index_info => l_timecard_index_info,
1087 p_timecard_id => l_timecard_id
1088 );
1089
1090 -- call the alias translator to translate the attributes to OTL_ALIAS_ITEM_1...
1091
1092 IF (l_attributes.COUNT > 0) THEN
1093 if g_debug then
1094 hr_utility.trace ('count is greater');
1095 end if;
1096 hxc_alias_translator.do_retrieval_translation (
1097 p_attributes => l_attributes,
1098 p_blocks => l_timecard,
1099 p_start_time => tc_start,
1100 p_stop_time => tc_end,
1101 p_resource_id => p_timekeeper_id,
1102 p_processing_mode => hxc_alias_utility.c_tk_processing,
1103 p_messages => l_messages
1104 );
1105 --t_base_table--used to take the output of translator and convert into matrix
1106
1107 t_base_index := 1;
1108 t_base_table.DELETE;
1109
1110
1111 /*1 my_debug.print_attributes(
1112 '111',
1113 l_attributes
1114 );*/
1115 --
1116
1117 -- SVG ADDED
1118
1119 /*
1120
1121 IF g_debug then
1122
1123 if (l_attributes.count>0) then
1124
1125
1126 hr_utility.trace(' SVG ATTRIBUTES TABLE START ');
1127 hr_utility.trace(' *****************');
1128
1129 l_attribute_index := l_attributes.FIRST;
1130
1131 LOOP
1132 EXIT WHEN NOT l_attributes.EXISTS (l_attribute_index);
1133
1134
1135 hr_utility.trace(' TIME_ATTRIBUTE_ID = '|| l_attributes(l_attribute_index).TIME_ATTRIBUTE_ID);
1136 hr_utility.trace(' BUILDING_BLOCK_ID = '|| l_attributes(l_attribute_index).BUILDING_BLOCK_ID ) ;
1137 hr_utility.trace(' ATTRIBUTE_CATEGORY = '|| l_attributes(l_attribute_index).ATTRIBUTE_CATEGORY) ;
1138 hr_utility.trace(' ATTRIBUTE1 = '|| l_attributes(l_attribute_index).ATTRIBUTE1 ) ;
1139 hr_utility.trace(' ATTRIBUTE2 (p_alias_definition_id) = '|| l_attributes(l_attribute_index).ATTRIBUTE2 ) ;
1140 hr_utility.trace(' ATTRIBUTE3 (l_alias_value_id) = '|| l_attributes(l_attribute_index).ATTRIBUTE3 ) ;
1141 hr_utility.trace(' ATTRIBUTE4 (p_alias_type) = '|| l_attributes(l_attribute_index).ATTRIBUTE4 ) ;
1142 hr_utility.trace(' ATTRIBUTE5 = '|| l_attributes(l_attribute_index).ATTRIBUTE5 ) ;
1143 hr_utility.trace(' ATTRIBUTE6 = '|| l_attributes(l_attribute_index).ATTRIBUTE6 ) ;
1144 hr_utility.trace(' ATTRIBUTE7 = '|| l_attributes(l_attribute_index).ATTRIBUTE7 ) ;
1145 hr_utility.trace(' ATTRIBUTE8 = '|| l_attributes(l_attribute_index).ATTRIBUTE8 ) ;
1146 hr_utility.trace(' ATTRIBUTE9 = '|| l_attributes(l_attribute_index).ATTRIBUTE9 ) ;
1147 hr_utility.trace(' ATTRIBUTE10 = '|| l_attributes(l_attribute_index).ATTRIBUTE10 ) ;
1148 hr_utility.trace(' ATTRIBUTE11 = '|| l_attributes(l_attribute_index).ATTRIBUTE11 ) ;
1149 hr_utility.trace(' ATTRIBUTE12 = '|| l_attributes(l_attribute_index).ATTRIBUTE12 ) ;
1150 hr_utility.trace(' ATTRIBUTE13 = '|| l_attributes(l_attribute_index).ATTRIBUTE13 ) ;
1151 hr_utility.trace(' ATTRIBUTE14 = '|| l_attributes(l_attribute_index).ATTRIBUTE14 ) ;
1152 hr_utility.trace(' ATTRIBUTE15 = '|| l_attributes(l_attribute_index).ATTRIBUTE15 ) ;
1153 hr_utility.trace(' ATTRIBUTE16 = '|| l_attributes(l_attribute_index).ATTRIBUTE16 ) ;
1154 hr_utility.trace(' ATTRIBUTE17 = '|| l_attributes(l_attribute_index).ATTRIBUTE17 ) ;
1155 hr_utility.trace(' ATTRIBUTE18 = '|| l_attributes(l_attribute_index).ATTRIBUTE18 ) ;
1156 hr_utility.trace(' ATTRIBUTE19 = '|| l_attributes(l_attribute_index).ATTRIBUTE19 ) ;
1157 hr_utility.trace(' ATTRIBUTE20 = '|| l_attributes(l_attribute_index).ATTRIBUTE20 ) ;
1158 hr_utility.trace(' ATTRIBUTE21 = '|| l_attributes(l_attribute_index).ATTRIBUTE21 ) ;
1159 hr_utility.trace(' ATTRIBUTE22 = '|| l_attributes(l_attribute_index).ATTRIBUTE22 ) ;
1160 hr_utility.trace(' ATTRIBUTE23 = '|| l_attributes(l_attribute_index).ATTRIBUTE23 ) ;
1161 hr_utility.trace(' ATTRIBUTE24 = '|| l_attributes(l_attribute_index).ATTRIBUTE24 ) ;
1162 hr_utility.trace(' ATTRIBUTE25 = '|| l_attributes(l_attribute_index).ATTRIBUTE25 ) ;
1163 hr_utility.trace(' ATTRIBUTE26 = '|| l_attributes(l_attribute_index).ATTRIBUTE26 ) ;
1164 hr_utility.trace(' ATTRIBUTE27 = '|| l_attributes(l_attribute_index).ATTRIBUTE27 ) ;
1165 hr_utility.trace(' ATTRIBUTE28 = '|| l_attributes(l_attribute_index).ATTRIBUTE28 ) ;
1166 hr_utility.trace(' ATTRIBUTE29 (p_alias_ref_object) = '|| l_attributes(l_attribute_index).ATTRIBUTE29 ) ;
1167 hr_utility.trace(' ATTRIBUTE30 (p_alias_value_name) = '|| l_attributes(l_attribute_index).ATTRIBUTE30 ) ;
1168 hr_utility.trace(' BLD_BLK_INFO_TYPE_ID = '|| l_attributes(l_attribute_index).BLD_BLK_INFO_TYPE_ID );
1169 hr_utility.trace(' OBJECT_VERSION_NUMBER = '|| l_attributes(l_attribute_index).OBJECT_VERSION_NUMBER );
1170 hr_utility.trace(' NEW = '|| l_attributes(l_attribute_index).NEW );
1171 hr_utility.trace(' CHANGED = '|| l_attributes(l_attribute_index).CHANGED );
1172 hr_utility.trace(' BLD_BLK_INFO_TYPE = '|| l_attributes(l_attribute_index).BLD_BLK_INFO_TYPE );
1173 hr_utility.trace(' PROCESS = '|| l_attributes(l_attribute_index).PROCESS );
1174 hr_utility.trace(' BUILDING_BLOCK_OVN = '|| l_attributes(l_attribute_index).BUILDING_BLOCK_OVN );
1175 hr_utility.trace('------------------------------------------------------');
1176
1177 l_attribute_index := l_attributes.NEXT (l_attribute_index);
1178
1179 END LOOP;
1180
1181 hr_utility.trace(' SVG ATTRIBUTES TABLE END ');
1182 hr_utility.trace(' *****************');
1183
1184 end if;
1185 END IF;
1186
1187 */
1188
1189
1190
1191
1192
1193 FOR x IN c_detail_info (l_timecard_id, l_timecard_ovn) LOOP
1194 l_attribute_index := l_attributes.FIRST;
1195
1196 LOOP
1197 EXIT WHEN NOT l_attributes.EXISTS (l_attribute_index);
1198 if g_debug then
1199 hr_utility.TRACE (l_attributes (l_attribute_index).attribute_category);
1200 end if;
1201
1202 --
1203
1204 IF l_attributes ( ---1
1205 l_attribute_index).building_block_id = x.detail_id
1206 AND l_attributes (l_attribute_index).attribute_category LIKE 'OTL_ALIAS_ITEM_%' THEN
1207 t_base_table (t_base_index).base_id := l_attributes (l_attribute_index).building_block_id;
1208
1209 IF l_attributes (l_attribute_index).attribute_category = 'OTL_ALIAS_ITEM_1' THEN
1210 t_base_table (t_base_index).attribute1 := l_attributes (l_attribute_index).attribute1;
1211 ELSIF l_attributes (l_attribute_index).attribute_category = 'OTL_ALIAS_ITEM_2' THEN
1212 t_base_table (t_base_index).attribute2 := l_attributes (l_attribute_index).attribute1;
1213 ELSIF l_attributes (l_attribute_index).attribute_category = 'OTL_ALIAS_ITEM_3' THEN
1214 t_base_table (t_base_index).attribute3 := l_attributes (l_attribute_index).attribute1;
1215 ELSIF l_attributes (l_attribute_index).attribute_category = 'OTL_ALIAS_ITEM_4' THEN
1216 t_base_table (t_base_index).attribute4 := l_attributes (l_attribute_index).attribute1;
1217 ELSIF l_attributes (l_attribute_index).attribute_category = 'OTL_ALIAS_ITEM_5' THEN
1218 t_base_table (t_base_index).attribute5 := l_attributes (l_attribute_index).attribute1;
1219 ELSIF l_attributes (l_attribute_index).attribute_category = 'OTL_ALIAS_ITEM_6' THEN
1220 t_base_table (t_base_index).attribute6 := l_attributes (l_attribute_index).attribute1;
1221 ELSIF l_attributes (l_attribute_index).attribute_category = 'OTL_ALIAS_ITEM_7' THEN
1222 t_base_table (t_base_index).attribute7 := l_attributes (l_attribute_index).attribute1;
1223 ELSIF l_attributes (l_attribute_index).attribute_category = 'OTL_ALIAS_ITEM_8' THEN
1224 t_base_table (t_base_index).attribute8 := l_attributes (l_attribute_index).attribute1;
1225 ELSIF l_attributes (l_attribute_index).attribute_category = 'OTL_ALIAS_ITEM_9' THEN
1226 t_base_table (t_base_index).attribute9 := l_attributes (l_attribute_index).attribute1;
1227 ELSIF l_attributes (l_attribute_index).attribute_category = 'OTL_ALIAS_ITEM_10' THEN
1228 t_base_table (t_base_index).attribute10 := l_attributes (l_attribute_index).attribute1;
1229 ELSIF l_attributes (l_attribute_index).attribute_category = 'OTL_ALIAS_ITEM_11' THEN
1230 t_base_table (t_base_index).attribute11 := l_attributes (l_attribute_index).attribute1;
1231 ELSIF l_attributes (l_attribute_index).attribute_category = 'OTL_ALIAS_ITEM_12' THEN
1232 t_base_table (t_base_index).attribute12 := l_attributes (l_attribute_index).attribute1;
1233 ELSIF l_attributes (l_attribute_index).attribute_category = 'OTL_ALIAS_ITEM_13' THEN
1234 t_base_table (t_base_index).attribute13 := l_attributes (l_attribute_index).attribute1;
1235 ELSIF l_attributes (l_attribute_index).attribute_category = 'OTL_ALIAS_ITEM_14' THEN
1236 t_base_table (t_base_index).attribute14 := l_attributes (l_attribute_index).attribute1;
1237 ELSIF l_attributes (l_attribute_index).attribute_category = 'OTL_ALIAS_ITEM_15' THEN
1238 t_base_table (t_base_index).attribute15 := l_attributes (l_attribute_index).attribute1;
1239 ELSIF l_attributes (l_attribute_index).attribute_category = 'OTL_ALIAS_ITEM_16' THEN
1240 t_base_table (t_base_index).attribute16 := l_attributes (l_attribute_index).attribute1;
1241 ELSIF l_attributes (l_attribute_index).attribute_category = 'OTL_ALIAS_ITEM_17' THEN
1242 t_base_table (t_base_index).attribute17 := l_attributes (l_attribute_index).attribute1;
1243 ELSIF l_attributes (l_attribute_index).attribute_category = 'OTL_ALIAS_ITEM_18' THEN
1244 t_base_table (t_base_index).attribute18 := l_attributes (l_attribute_index).attribute1;
1245 ELSIF l_attributes (l_attribute_index).attribute_category = 'OTL_ALIAS_ITEM_19' THEN
1246 t_base_table (t_base_index).attribute19 := l_attributes (l_attribute_index).attribute1;
1247 ELSIF l_attributes (l_attribute_index).attribute_category = 'OTL_ALIAS_ITEM_20' THEN
1248 t_base_table (t_base_index).attribute20 := l_attributes (l_attribute_index).attribute1;
1249 END IF;
1250 ELSIF l_attributes (l_attribute_index).building_block_id = x.detail_id
1251 AND l_attributes (l_attribute_index).attribute_category LIKE 'PAEXPITDFF%' THEN
1252 if g_debug then
1253 hr_utility.TRACE ('100');
1254 hr_utility.TRACE ('inserting='|| x.comment_text || ' for x.detail_id= ' || x.detail_id);
1255 end if;
1256
1257 --
1258
1259 IF c%ISOPEN THEN
1260 CLOSE c;
1261 END IF;
1262
1263 OPEN c (x.detail_id);
1264 FETCH c INTO c_row;
1265
1266 IF c%FOUND THEN
1267 UPDATE hxc_tk_detail_temp
1268 SET dff_catg = l_attributes (l_attribute_index).attribute_category,
1269 dff_oldcatg = l_attributes (l_attribute_index).attribute_category,
1270 dff_attr1 = l_attributes (l_attribute_index).attribute1,
1271 dff_attr2 = l_attributes (l_attribute_index).attribute2,
1272 dff_attr3 = l_attributes (l_attribute_index).attribute3,
1273 dff_attr4 = l_attributes (l_attribute_index).attribute4,
1274 dff_attr5 = l_attributes (l_attribute_index).attribute5,
1275 dff_attr6 = l_attributes (l_attribute_index).attribute6,
1276 dff_attr7 = l_attributes (l_attribute_index).attribute7,
1277 dff_attr8 = l_attributes (l_attribute_index).attribute8,
1278 dff_attr9 = l_attributes (l_attribute_index).attribute9,
1279 dff_attr10 = l_attributes (l_attribute_index).attribute10,
1280 dff_attr11 = l_attributes (l_attribute_index).attribute11,
1281 dff_attr12 = l_attributes (l_attribute_index).attribute12,
1282 dff_attr13 = l_attributes (l_attribute_index).attribute13,
1283 dff_attr14 = l_attributes (l_attribute_index).attribute14,
1284 dff_attr15 = l_attributes (l_attribute_index).attribute15,
1285 dff_attr16 = l_attributes (l_attribute_index).attribute16,
1286 dff_attr17 = l_attributes (l_attribute_index).attribute17,
1287 dff_attr18 = l_attributes (l_attribute_index).attribute18,
1288 dff_attr19 = l_attributes (l_attribute_index).attribute19,
1289 dff_attr20 = l_attributes (l_attribute_index).attribute20,
1290 dff_attr21 = l_attributes (l_attribute_index).attribute21,
1291 dff_attr22 = l_attributes (l_attribute_index).attribute22,
1292 dff_attr23 = l_attributes (l_attribute_index).attribute23,
1293 dff_attr24 = l_attributes (l_attribute_index).attribute24,
1294 dff_attr25 = l_attributes (l_attribute_index).attribute25,
1295 dff_attr26 = l_attributes (l_attribute_index).attribute26,
1296 dff_attr27 = l_attributes (l_attribute_index).attribute27,
1297 dff_attr28 = l_attributes (l_attribute_index).attribute28,
1298 dff_attr29 = l_attributes (l_attribute_index).attribute29,
1299 dff_attr30 = l_attributes (l_attribute_index).attribute30,
1300 dff_oldattr1 = l_attributes (l_attribute_index).attribute1,
1301 dff_oldattr2 = l_attributes (l_attribute_index).attribute2,
1302 dff_oldattr3 = l_attributes (l_attribute_index).attribute3,
1303 dff_oldattr4 = l_attributes (l_attribute_index).attribute4,
1304 dff_oldattr5 = l_attributes (l_attribute_index).attribute5,
1305 dff_oldattr6 = l_attributes (l_attribute_index).attribute6,
1306 dff_oldattr7 = l_attributes (l_attribute_index).attribute7,
1307 dff_oldattr8 = l_attributes (l_attribute_index).attribute8,
1308 dff_oldattr9 = l_attributes (l_attribute_index).attribute9,
1309 dff_oldattr10 = l_attributes (l_attribute_index).attribute10,
1310 dff_oldattr11 = l_attributes (l_attribute_index).attribute11,
1311 dff_oldattr12 = l_attributes (l_attribute_index).attribute12,
1312 dff_oldattr13 = l_attributes (l_attribute_index).attribute13,
1313 dff_oldattr14 = l_attributes (l_attribute_index).attribute14,
1314 dff_oldattr15 = l_attributes (l_attribute_index).attribute15,
1315 dff_oldattr16 = l_attributes (l_attribute_index).attribute16,
1316 dff_oldattr17 = l_attributes (l_attribute_index).attribute17,
1317 dff_oldattr18 = l_attributes (l_attribute_index).attribute18,
1318 dff_oldattr19 = l_attributes (l_attribute_index).attribute19,
1319 dff_oldattr20 = l_attributes (l_attribute_index).attribute20,
1320 dff_oldattr21 = l_attributes (l_attribute_index).attribute21,
1321 dff_oldattr22 = l_attributes (l_attribute_index).attribute22,
1322 dff_oldattr23 = l_attributes (l_attribute_index).attribute23,
1323 dff_oldattr24 = l_attributes (l_attribute_index).attribute24,
1324 dff_oldattr25 = l_attributes (l_attribute_index).attribute25,
1325 dff_oldattr26 = l_attributes (l_attribute_index).attribute26,
1326 dff_oldattr27 = l_attributes (l_attribute_index).attribute27,
1327 dff_oldattr28 = l_attributes (l_attribute_index).attribute28,
1328 dff_oldattr29 = l_attributes (l_attribute_index).attribute29,
1329 dff_oldattr30 = l_attributes (l_attribute_index).attribute30
1330 WHERE detailid = x.detail_id;
1331 ELSE
1332 INSERT INTO hxc_tk_detail_temp
1333 (detailid, timecard_id, resource_id, comment_text, dff_catg, dff_oldcatg,
1334 dff_attr1, dff_attr2, dff_attr3, dff_attr4, dff_attr5, dff_attr6, dff_attr7,
1335 dff_attr8, dff_attr9, dff_attr10, dff_attr11, dff_attr12, dff_attr13,
1336 dff_attr14, dff_attr15, dff_attr16, dff_attr17, dff_attr18, dff_attr19,
1337 dff_attr20, dff_attr21, dff_attr22, dff_attr23, dff_attr24, dff_attr25,
1338 dff_attr26, dff_attr27, dff_attr28, dff_attr29, dff_attr30, dff_oldattr1,
1339 dff_oldattr2, dff_oldattr3, dff_oldattr4, dff_oldattr5, dff_oldattr6,
1340 dff_oldattr7, dff_oldattr8, dff_oldattr9, dff_oldattr10, dff_oldattr11,
1341 dff_oldattr12, dff_oldattr13, dff_oldattr14, dff_oldattr15, dff_oldattr16,
1342 dff_oldattr17, dff_oldattr18, dff_oldattr19, dff_oldattr20, dff_oldattr21,
1343 dff_oldattr22, dff_oldattr23, dff_oldattr24, dff_oldattr25, dff_oldattr26,
1344 dff_oldattr27, dff_oldattr28, dff_oldattr29, dff_oldattr30)
1345 VALUES (x.detail_id, l_timecard_id, p_resource_id, x.comment_text,
1346 l_attributes (l_attribute_index).attribute_category,
1347 l_attributes (l_attribute_index).attribute_category,
1348 l_attributes (l_attribute_index).attribute1,
1349 l_attributes (l_attribute_index).attribute2,
1350 l_attributes (l_attribute_index).attribute3,
1351 l_attributes (l_attribute_index).attribute4,
1352 l_attributes (l_attribute_index).attribute5,
1353 l_attributes (l_attribute_index).attribute6,
1354 l_attributes (l_attribute_index).attribute7,
1355 l_attributes (l_attribute_index).attribute8,
1356 l_attributes (l_attribute_index).attribute9,
1357 l_attributes (l_attribute_index).attribute10,
1358 l_attributes (l_attribute_index).attribute11,
1359 l_attributes (l_attribute_index).attribute12,
1360 l_attributes (l_attribute_index).attribute13,
1361 l_attributes (l_attribute_index).attribute14,
1362 l_attributes (l_attribute_index).attribute15,
1363 l_attributes (l_attribute_index).attribute16,
1364 l_attributes (l_attribute_index).attribute17,
1365 l_attributes (l_attribute_index).attribute18,
1366 l_attributes (l_attribute_index).attribute19,
1367 l_attributes (l_attribute_index).attribute20,
1368 l_attributes (l_attribute_index).attribute21,
1369 l_attributes (l_attribute_index).attribute22,
1370 l_attributes (l_attribute_index).attribute23,
1371 l_attributes (l_attribute_index).attribute24,
1372 l_attributes (l_attribute_index).attribute25,
1373 l_attributes (l_attribute_index).attribute26,
1374 l_attributes (l_attribute_index).attribute27,
1375 l_attributes (l_attribute_index).attribute28,
1376 l_attributes (l_attribute_index).attribute29,
1377 l_attributes (l_attribute_index).attribute30,
1378 l_attributes (l_attribute_index).attribute1,
1379 l_attributes (l_attribute_index).attribute2,
1380 l_attributes (l_attribute_index).attribute3,
1381 l_attributes (l_attribute_index).attribute4,
1382 l_attributes (l_attribute_index).attribute5,
1383 l_attributes (l_attribute_index).attribute6,
1384 l_attributes (l_attribute_index).attribute7,
1385 l_attributes (l_attribute_index).attribute8,
1386 l_attributes (l_attribute_index).attribute9,
1387 l_attributes (l_attribute_index).attribute10,
1388 l_attributes (l_attribute_index).attribute11,
1389 l_attributes (l_attribute_index).attribute12,
1390 l_attributes (l_attribute_index).attribute13,
1391 l_attributes (l_attribute_index).attribute14,
1392 l_attributes (l_attribute_index).attribute15,
1393 l_attributes (l_attribute_index).attribute16,
1394 l_attributes (l_attribute_index).attribute17,
1395 l_attributes (l_attribute_index).attribute18,
1396 l_attributes (l_attribute_index).attribute19,
1397 l_attributes (l_attribute_index).attribute20,
1398 l_attributes (l_attribute_index).attribute21,
1399 l_attributes (l_attribute_index).attribute22,
1400 l_attributes (l_attribute_index).attribute23,
1401 l_attributes (l_attribute_index).attribute24,
1402 l_attributes (l_attribute_index).attribute25,
1403 l_attributes (l_attribute_index).attribute26,
1404 l_attributes (l_attribute_index).attribute27,
1405 l_attributes (l_attribute_index).attribute28,
1406 l_attributes (l_attribute_index).attribute29,
1407 l_attributes (l_attribute_index).attribute30);
1408 END IF;
1409
1410 CLOSE c;
1411 ELSIF l_attributes (l_attribute_index).building_block_id = x.detail_id
1412 AND l_attributes (l_attribute_index).attribute_category = 'REASON' THEN
1413 if g_debug then
1414 hr_utility.TRACE ('REASON');
1415 hr_utility.TRACE (
1416 'inserting REASON='|| x.comment_text || ' for x.detail_id= ' || x.detail_id
1417 );
1418 hr_utility.TRACE ('LATE/CHANGE:'|| l_attributes (l_attribute_index).attribute3);
1419 hr_utility.TRACE ('LATE/CHANGE COMMENT'|| l_attributes (l_attribute_index).attribute2);
1420 hr_utility.TRACE ('CODE'|| l_attributes (l_attribute_index).attribute1);
1421 end if;
1422
1423 --
1424
1425 IF c%ISOPEN THEN
1426 CLOSE c;
1427 END IF;
1428
1429 OPEN c (x.detail_id);
1430 FETCH c INTO c_row;
1431
1432 IF c%FOUND THEN
1433 if g_debug then
1434 hr_utility.TRACE ('detail found'|| x.detail_id);
1435 end if;
1436
1437 --
1438
1439 IF (l_attributes (l_attribute_index).attribute3 = 'LATE') THEN
1440 /* JOEL => we are missing old_audit_datetime in the table*/
1441 UPDATE hxc_tk_detail_temp
1442 SET late_change = 'LATE',
1443 old_late_change = 'LATE',
1444 change_comment = NULL,
1445 old_change_comment = NULL,
1446 change_reason = NULL,
1447 old_change_reason = NULL, --dhar
1448 late_comment = l_attributes (l_attribute_index).attribute2,
1449 old_late_comment = l_attributes (l_attribute_index).attribute2,
1450 late_reason = l_attributes (l_attribute_index).attribute1,
1451 old_late_reason = l_attributes (l_attribute_index).attribute1,
1452 audit_datetime = l_attributes (l_attribute_index).attribute6,
1453 old_audit_datetime = l_attributes (l_attribute_index).attribute6,
1454 audit_history = l_attributes (l_attribute_index).attribute7,
1455 old_audit_history = l_attributes (l_attribute_index).attribute7
1456 WHERE detailid = x.detail_id;
1457 --JOEL let make sure it is a change
1458 ELSIF (l_attributes (l_attribute_index).attribute3 = 'CHANGE') THEN -- change
1459
1460 /* IF (l_attributes ( l_attribute_index ).attribute3)='CHANGE'
1461 THEN*/
1462 UPDATE hxc_tk_detail_temp
1463 SET late_change = 'CHANGE',
1464 old_late_change = 'CHANGE',
1465 late_comment = NULL,
1466 old_late_comment = NULL,
1467 late_reason = NULL,
1468 old_late_reason = NULL, --dhar
1469 change_comment = l_attributes (l_attribute_index).attribute2,
1470 old_change_comment = l_attributes (l_attribute_index).attribute2,
1471 change_reason = l_attributes (l_attribute_index).attribute1,
1472 old_change_reason = l_attributes (l_attribute_index).attribute1,
1473 audit_datetime = l_attributes (l_attribute_index).attribute6,
1474 old_audit_datetime = l_attributes (l_attribute_index).attribute6,
1475 audit_history = l_attributes (l_attribute_index).attribute7,
1476 old_audit_history = l_attributes (l_attribute_index).attribute7
1477 WHERE detailid = x.detail_id;
1478
1479 ELSIF (l_attributes (l_attribute_index).attribute3 is null) THEN
1480
1481 UPDATE hxc_tk_detail_temp
1482 SET late_change = NULL,
1483 old_late_change = NULL,
1484 late_comment = NULL,
1485 old_late_comment = NULL,
1486 late_reason = NULL,
1487 old_late_reason = NULL, --dhar
1488 change_comment = l_attributes (l_attribute_index).attribute2,
1489 old_change_comment = l_attributes (l_attribute_index).attribute2,
1490 change_reason = l_attributes (l_attribute_index).attribute1,
1491 old_change_reason = l_attributes (l_attribute_index).attribute1,
1492 audit_datetime = l_attributes (l_attribute_index).attribute6,
1493 old_audit_datetime = l_attributes (l_attribute_index).attribute6,
1494 audit_history = l_attributes (l_attribute_index).attribute7,
1495 old_audit_history = l_attributes (l_attribute_index).attribute7
1496 WHERE detailid = x.detail_id;
1497
1498
1499
1500
1501 END IF; -- late or change
1502
1503 ---after adding the negative detail id, it is not present in the db..so it requires to be inserted
1504 --while all positive detail id can be update.
1505 ELSE -- no detailid --so insert
1506 IF (l_attributes (l_attribute_index).attribute3 = 'LATE') THEN
1507 if g_debug then
1508 hr_utility.TRACE ('late reason');
1509 end if;
1510
1511 --
1512
1513 INSERT INTO hxc_tk_detail_temp
1514 (detailid, timecard_id, resource_id, comment_text, late_change, old_late_change,
1515 late_reason,
1516 late_comment, old_late_reason, old_late_comment, audit_datetime,
1517 old_audit_datetime,
1518 audit_history, old_audit_history)
1519 VALUES (x.detail_id, l_timecard_id, p_resource_id, x.comment_text,
1520 'LATE',
1521 'LATE',
1522 l_attributes (l_attribute_index).attribute1,
1523 l_attributes (l_attribute_index).attribute2,
1524 l_attributes (l_attribute_index).attribute1,
1525 l_attributes (l_attribute_index).attribute2,
1526 l_attributes (l_attribute_index).attribute6,
1527 l_attributes (l_attribute_index).attribute6,
1528 l_attributes (l_attribute_index).attribute7,
1529 l_attributes (l_attribute_index).attribute7);
1530
1531 ELSIF (l_attributes (l_attribute_index).attribute3 = 'CHANGE') THEN
1532
1533 INSERT INTO hxc_tk_detail_temp
1534 (detailid, timecard_id, resource_id, comment_text, late_change,old_late_change,
1535 change_reason,
1536 change_comment, old_change_reason, old_change_comment, audit_datetime,
1537 old_audit_datetime,
1538 audit_history, old_audit_history)
1539 VALUES (x.detail_id, l_timecard_id, p_resource_id, x.comment_text,
1540 'CHANGE','CHANGE',
1541 l_attributes (l_attribute_index).attribute1,
1542 l_attributes (l_attribute_index).attribute2,
1543 l_attributes (l_attribute_index).attribute1,
1544 l_attributes (l_attribute_index).attribute2,
1545 l_attributes (l_attribute_index).attribute6,
1546 l_attributes (l_attribute_index).attribute6,
1547 l_attributes (l_attribute_index).attribute7,
1548 l_attributes (l_attribute_index).attribute7);
1549
1550 ELSIF (l_attributes (l_attribute_index).attribute3 is null) THEN
1551
1552 INSERT INTO hxc_tk_detail_temp
1553 (detailid, timecard_id, resource_id, comment_text, late_change,old_late_change,
1554 change_reason,
1555 change_comment, old_change_reason, old_change_comment, audit_datetime,
1556 old_audit_datetime,
1557 audit_history, old_audit_history)
1558 VALUES (x.detail_id, l_timecard_id, p_resource_id, x.comment_text,
1559 NULL,NULL,
1560 l_attributes (l_attribute_index).attribute1,
1561 l_attributes (l_attribute_index).attribute2,
1562 l_attributes (l_attribute_index).attribute1,
1563 l_attributes (l_attribute_index).attribute2,
1564 l_attributes (l_attribute_index).attribute6,
1565 l_attributes (l_attribute_index).attribute6,
1566 l_attributes (l_attribute_index).attribute7,
1567 l_attributes (l_attribute_index).attribute7);
1568
1569
1570 END IF; --reason is late
1571 END IF; --if detail is found
1572
1573 CLOSE c;
1574 END IF; --if the attribute category
1575
1576 l_attribute_index := l_attributes.NEXT (l_attribute_index);
1577 END LOOP;
1578 /*ADVICE(1462): Nested LOOPs should all be labeled [406] */
1579
1580
1581 t_base_index := t_base_index + 1;
1582 END LOOP;
1583 /*ADVICE(1467): Nested LOOPs should all be labeled [406] */
1584
1585
1586 -- Populate the final table based on the attribute information
1587
1588 t_base_index := t_base_table.FIRST;
1589
1590 LOOP
1591 EXIT WHEN (NOT t_base_table.EXISTS (t_base_index));
1592
1593 IF ( NVL (t_base_table (t_base_index).attribute1, 1) =
1594 NVL (NVL (p_attribute1, t_base_table (t_base_index).attribute1), 1)
1595 AND NVL (t_base_table (t_base_index).attribute2, 1) =
1596 NVL (NVL (p_attribute2, t_base_table (t_base_index).attribute2), 1)
1597 AND NVL (t_base_table (t_base_index).attribute3, 1) =
1598 NVL (NVL (p_attribute3, t_base_table (t_base_index).attribute3), 1)
1599 AND NVL (t_base_table (t_base_index).attribute4, 1) =
1600 NVL (NVL (p_attribute4, t_base_table (t_base_index).attribute4), 1)
1601 AND NVL (t_base_table (t_base_index).attribute5, 1) =
1602 NVL (NVL (p_attribute5, t_base_table (t_base_index).attribute5), 1)
1603 AND NVL (t_base_table (t_base_index).attribute6, 1) =
1604 NVL (NVL (p_attribute6, t_base_table (t_base_index).attribute6), 1)
1605 AND NVL (t_base_table (t_base_index).attribute7, 1) =
1606 NVL (NVL (p_attribute7, t_base_table (t_base_index).attribute7), 1)
1607 AND NVL (t_base_table (t_base_index).attribute8, 1) =
1608 NVL (NVL (p_attribute8, t_base_table (t_base_index).attribute8), 1)
1609 AND NVL (t_base_table (t_base_index).attribute9, 1) =
1610 NVL (NVL (p_attribute9, t_base_table (t_base_index).attribute9), 1)
1611 AND NVL (t_base_table (t_base_index).attribute10, 1) =
1612 NVL (NVL (p_attribute10, t_base_table (t_base_index).attribute10), 1)
1613 AND NVL (t_base_table (t_base_index).attribute11, 1) =
1614 NVL (NVL (p_attribute11, t_base_table (t_base_index).attribute11), 1)
1615 AND NVL (t_base_table (t_base_index).attribute12, 1) =
1616 NVL (NVL (p_attribute12, t_base_table (t_base_index).attribute12), 1)
1617 AND NVL (t_base_table (t_base_index).attribute13, 1) =
1618 NVL (NVL (p_attribute13, t_base_table (t_base_index).attribute13), 1)
1619 AND NVL (t_base_table (t_base_index).attribute14, 1) =
1620 NVL (NVL (p_attribute14, t_base_table (t_base_index).attribute14), 1)
1621 AND NVL (t_base_table (t_base_index).attribute15, 1) =
1622 NVL (NVL (p_attribute15, t_base_table (t_base_index).attribute15), 1)
1623 AND NVL (t_base_table (t_base_index).attribute16, 1) =
1624 NVL (NVL (p_attribute16, t_base_table (t_base_index).attribute16), 1)
1625 AND NVL (t_base_table (t_base_index).attribute17, 1) =
1626 NVL (NVL (p_attribute17, t_base_table (t_base_index).attribute17), 1)
1627 AND NVL (t_base_table (t_base_index).attribute18, 1) =
1628 NVL (NVL (p_attribute18, t_base_table (t_base_index).attribute18), 1)
1629 AND NVL (t_base_table (t_base_index).attribute19, 1) =
1630 NVL (NVL (p_attribute19, t_base_table (t_base_index).attribute19), 1)
1631 AND NVL (t_base_table (t_base_index).attribute20, 1) =
1632 NVL (NVL (p_attribute20, t_base_table (t_base_index).attribute20), 1)
1633 ) THEN
1634 -- first time in the loop
1635 -- put the first value
1636 IF l_buffer_info.COUNT = 0 THEN
1637 l_table_counter := l_table_counter + 1;
1638 l_index_buffer := l_index_buffer + 1;
1639 l_buffer_info (l_index_buffer).row_table_index := l_table_counter;
1640 l_buffer_info (l_index_buffer).attribute1 := t_base_table (t_base_index).attribute1;
1641 l_buffer_info (l_index_buffer).attribute2 := t_base_table (t_base_index).attribute2;
1642 l_buffer_info (l_index_buffer).attribute3 := t_base_table (t_base_index).attribute3;
1643 l_buffer_info (l_index_buffer).attribute4 := t_base_table (t_base_index).attribute4;
1644 l_buffer_info (l_index_buffer).attribute5 := t_base_table (t_base_index).attribute5;
1645 l_buffer_info (l_index_buffer).attribute6 := t_base_table (t_base_index).attribute6;
1646 l_buffer_info (l_index_buffer).attribute7 := t_base_table (t_base_index).attribute7;
1647 l_buffer_info (l_index_buffer).attribute8 := t_base_table (t_base_index).attribute8;
1648 l_buffer_info (l_index_buffer).attribute9 := t_base_table (t_base_index).attribute9;
1649 l_buffer_info (l_index_buffer).attribute10 := t_base_table (t_base_index).attribute10;
1650 l_buffer_info (l_index_buffer).attribute11 := t_base_table (t_base_index).attribute11;
1651 l_buffer_info (l_index_buffer).attribute12 := t_base_table (t_base_index).attribute12;
1652 l_buffer_info (l_index_buffer).attribute13 := t_base_table (t_base_index).attribute13;
1653 l_buffer_info (l_index_buffer).attribute14 := t_base_table (t_base_index).attribute14;
1654 l_buffer_info (l_index_buffer).attribute15 := t_base_table (t_base_index).attribute15;
1655 l_buffer_info (l_index_buffer).attribute16 := t_base_table (t_base_index).attribute16;
1656 l_buffer_info (l_index_buffer).attribute17 := t_base_table (t_base_index).attribute17;
1657 l_buffer_info (l_index_buffer).attribute18 := t_base_table (t_base_index).attribute18;
1658 l_buffer_info (l_index_buffer).attribute19 := t_base_table (t_base_index).attribute19;
1659 l_buffer_info (l_index_buffer).attribute20 := t_base_table (t_base_index).attribute20;
1660 END IF;
1661
1662 -- find detail information
1663 l_detail_id := l_detail_info_table (t_base_table (t_base_index).base_id).detail_id;
1664 l_detail_ovn := l_detail_info_table (t_base_table (t_base_index).base_id).detail_ovn;
1665 l_detail_measure := l_detail_info_table (t_base_table (t_base_index).base_id).measure;
1666 l_detail_start_time := l_detail_info_table (t_base_table (t_base_index).base_id).start_time;
1667 l_detail_time_in := l_detail_info_table (t_base_table (t_base_index).base_id).time_in;
1668 l_detail_time_out := l_detail_info_table (t_base_table (t_base_index).base_id).time_out;
1669 l_detail_comment_text :=
1670 l_detail_info_table (t_base_table (t_base_index).base_id).detail_comment_text;
1671 -- remove the detail now in the table.
1672
1673
1674 l_detail_info_table.DELETE (t_base_table (t_base_index).base_id);
1675 l_found_detail := TRUE;
1676 l_index_buffer := l_buffer_info.FIRST;
1677
1678 -- search if the hours type exists already
1679 -- in the table
1680 -- we are going through the table to make sure
1681 -- we will be on the last index of this hours type
1682
1683 LOOP
1684 EXIT WHEN (NOT l_buffer_info.EXISTS (l_index_buffer));
1685
1686 IF NVL (l_buffer_info (l_index_buffer).attribute1, 1) =
1687 NVL (t_base_table (t_base_index).attribute1, 1)
1688 AND NVL (l_buffer_info (l_index_buffer).attribute2, 1) =
1689 NVL (t_base_table (t_base_index).attribute2, 1)
1690 AND NVL (l_buffer_info (l_index_buffer).attribute3, 1) =
1691 NVL (t_base_table (t_base_index).attribute3, 1)
1692 AND NVL (l_buffer_info (l_index_buffer).attribute4, 1) =
1693 NVL (t_base_table (t_base_index).attribute4, 1)
1694 AND NVL (l_buffer_info (l_index_buffer).attribute5, 1) =
1695 NVL (t_base_table (t_base_index).attribute5, 1)
1696 AND NVL (l_buffer_info (l_index_buffer).attribute6, 1) =
1697 NVL (t_base_table (t_base_index).attribute6, 1)
1698 AND NVL (l_buffer_info (l_index_buffer).attribute7, 1) =
1699 NVL (t_base_table (t_base_index).attribute7, 1)
1700 AND NVL (l_buffer_info (l_index_buffer).attribute8, 1) =
1701 NVL (t_base_table (t_base_index).attribute8, 1)
1702 AND NVL (l_buffer_info (l_index_buffer).attribute9, 1) =
1703 NVL (t_base_table (t_base_index).attribute9, 1)
1704 AND NVL (l_buffer_info (l_index_buffer).attribute10, 1) =
1705 NVL (t_base_table (t_base_index).attribute10, 1)
1706 AND NVL (l_buffer_info (l_index_buffer).attribute11, 1) =
1707 NVL (t_base_table (t_base_index).attribute11, 1)
1708 AND NVL (l_buffer_info (l_index_buffer).attribute12, 1) =
1709 NVL (t_base_table (t_base_index).attribute12, 1)
1710 AND NVL (l_buffer_info (l_index_buffer).attribute13, 1) =
1711 NVL (t_base_table (t_base_index).attribute13, 1)
1712 AND NVL (l_buffer_info (l_index_buffer).attribute14, 1) =
1713 NVL (t_base_table (t_base_index).attribute14, 1)
1714 AND NVL (l_buffer_info (l_index_buffer).attribute15, 1) =
1715 NVL (t_base_table (t_base_index).attribute15, 1)
1716 AND NVL (l_buffer_info (l_index_buffer).attribute16, 1) =
1717 NVL (t_base_table (t_base_index).attribute16, 1)
1718 AND NVL (l_buffer_info (l_index_buffer).attribute17, 1) =
1719 NVL (t_base_table (t_base_index).attribute17, 1)
1720 AND NVL (l_buffer_info (l_index_buffer).attribute18, 1) =
1721 NVL (t_base_table (t_base_index).attribute18, 1)
1722 AND NVL (l_buffer_info (l_index_buffer).attribute19, 1) =
1723 NVL (t_base_table (t_base_index).attribute19, 1)
1724 AND NVL (l_buffer_info (l_index_buffer).attribute20, 1) =
1725 NVL (t_base_table (t_base_index).attribute20, 1) THEN
1726 -- the hours type has been found
1727 -- record the index
1728
1729 l_record_index_buffer := l_index_buffer;
1730 l_found_hours_type := TRUE;
1731
1732 -- l_table_counter := l_buffer_info(l_index_buffer).row_table_index; ---nitin
1733
1734 IF (l_timecard_start_time = l_detail_start_time) THEN
1735 IF (l_buffer_info (l_record_index_buffer).day_1) THEN
1736 l_found_hours_type := FALSE;
1737 ELSE
1738 l_buffer_info (l_record_index_buffer).day_1 := TRUE;
1739 END IF;
1740 ELSIF ((l_timecard_start_time + 1) = l_detail_start_time) THEN
1741 IF (l_buffer_info (l_record_index_buffer).day_2) THEN
1742 l_found_hours_type := FALSE;
1743 ELSE
1744 l_buffer_info (l_record_index_buffer).day_2 := TRUE;
1745 END IF;
1746 ELSIF ((l_timecard_start_time + 2) = l_detail_start_time) THEN
1747 IF (l_buffer_info (l_record_index_buffer).day_3) THEN
1748 l_found_hours_type := FALSE;
1749 ELSE
1750 l_buffer_info (l_record_index_buffer).day_3 := TRUE;
1751 END IF;
1752 ELSIF ((l_timecard_start_time + 3) = l_detail_start_time) THEN
1753 IF (l_buffer_info (l_record_index_buffer).day_4) THEN
1754 l_found_hours_type := FALSE;
1755 ELSE
1756 l_buffer_info (l_record_index_buffer).day_4 := TRUE;
1757 END IF;
1758 ELSIF ((l_timecard_start_time + 4) = l_detail_start_time) THEN
1759 IF (l_buffer_info (l_record_index_buffer).day_5) THEN
1760 l_found_hours_type := FALSE;
1761 ELSE
1762 l_buffer_info (l_record_index_buffer).day_5 := TRUE;
1763 END IF;
1764 ELSIF ((l_timecard_start_time + 5) = l_detail_start_time) THEN
1765 IF (l_buffer_info (l_record_index_buffer).day_6) THEN
1766 l_found_hours_type := FALSE;
1767 ELSE
1768 l_buffer_info (l_record_index_buffer).day_6 := TRUE;
1769 END IF;
1770 ELSIF ((l_timecard_start_time + 6) = l_detail_start_time) THEN
1771 IF (l_buffer_info (l_record_index_buffer).day_7) THEN
1772 l_found_hours_type := FALSE;
1773 ELSE
1774 l_buffer_info (l_record_index_buffer).day_7 := TRUE;
1775 END IF;
1776 ELSIF ((l_timecard_start_time + 7) = l_detail_start_time) THEN
1777 IF (l_buffer_info (l_record_index_buffer).day_8) THEN
1778 l_found_hours_type := FALSE;
1779 ELSE
1780 l_buffer_info (l_record_index_buffer).day_8 := TRUE;
1781 END IF;
1782 ELSIF ((l_timecard_start_time + 8) = l_detail_start_time) THEN
1783 IF (l_buffer_info (l_record_index_buffer).day_9) THEN
1784 l_found_hours_type := FALSE;
1785 ELSE
1786 l_buffer_info (l_record_index_buffer).day_9 := TRUE;
1787 END IF;
1788 ELSIF ((l_timecard_start_time + 9) = l_detail_start_time) THEN
1789 IF (l_buffer_info (l_record_index_buffer).day_10) THEN
1790 l_found_hours_type := FALSE;
1791 ELSE
1792 l_buffer_info (l_record_index_buffer).day_10 := TRUE;
1793 END IF;
1794 ELSIF ((l_timecard_start_time + 10) = l_detail_start_time) THEN
1795 IF (l_buffer_info (l_record_index_buffer).day_11) THEN
1796 l_found_hours_type := FALSE;
1797 ELSE
1798 l_buffer_info (l_record_index_buffer).day_11 := TRUE;
1799 END IF;
1800 ELSIF ((l_timecard_start_time + 11) = l_detail_start_time) THEN
1801 IF (l_buffer_info (l_record_index_buffer).day_12) THEN
1802 l_found_hours_type := FALSE;
1803 ELSE
1804 l_buffer_info (l_record_index_buffer).day_12 := TRUE;
1805 END IF;
1806 ELSIF ((l_timecard_start_time + 12) = l_detail_start_time) THEN
1807 IF (l_buffer_info (l_record_index_buffer).day_13) THEN
1808 l_found_hours_type := FALSE;
1809 ELSE
1810 l_buffer_info (l_record_index_buffer).day_13 := TRUE;
1811 END IF;
1812 ELSIF ((l_timecard_start_time + 13) = l_detail_start_time) THEN
1813 IF (l_buffer_info (l_record_index_buffer).day_14) THEN
1814 l_found_hours_type := FALSE;
1815 ELSE
1816 l_buffer_info (l_record_index_buffer).day_14 := TRUE;
1817 END IF;
1818 ELSIF ((l_timecard_start_time + 14) = l_detail_start_time) THEN
1819 IF (l_buffer_info (l_record_index_buffer).day_15) THEN
1820 l_found_hours_type := FALSE;
1821 ELSE
1822 l_buffer_info (l_record_index_buffer).day_15 := TRUE;
1823 END IF;
1824 ELSIF ((l_timecard_start_time + 15) = l_detail_start_time) THEN
1825 IF (l_buffer_info (l_record_index_buffer).day_16) THEN
1826 l_found_hours_type := FALSE;
1827 ELSE
1828 l_buffer_info (l_record_index_buffer).day_16 := TRUE;
1829 END IF;
1830 ELSIF ((l_timecard_start_time + 16) = l_detail_start_time) THEN
1831 IF (l_buffer_info (l_record_index_buffer).day_17) THEN
1832 l_found_hours_type := FALSE;
1833 ELSE
1834 l_buffer_info (l_record_index_buffer).day_17 := TRUE;
1835 END IF;
1836 ELSIF ((l_timecard_start_time + 17) = l_detail_start_time) THEN
1837 IF (l_buffer_info (l_record_index_buffer).day_18) THEN
1838 l_found_hours_type := FALSE;
1839 ELSE
1840 l_buffer_info (l_record_index_buffer).day_18 := TRUE;
1841 END IF;
1842 ELSIF ((l_timecard_start_time + 18) = l_detail_start_time) THEN
1843 IF (l_buffer_info (l_record_index_buffer).day_19) THEN
1844 l_found_hours_type := FALSE;
1845 ELSE
1846 l_buffer_info (l_record_index_buffer).day_19 := TRUE;
1847 END IF;
1848 ELSIF ((l_timecard_start_time + 19) = l_detail_start_time) THEN
1849 IF (l_buffer_info (l_record_index_buffer).day_20) THEN
1850 l_found_hours_type := FALSE;
1851 ELSE
1852 l_buffer_info (l_record_index_buffer).day_20 := TRUE;
1853 END IF;
1854 ELSIF ((l_timecard_start_time + 20) = l_detail_start_time) THEN
1855 IF (l_buffer_info (l_record_index_buffer).day_21) THEN
1856 l_found_hours_type := FALSE;
1857 ELSE
1858 l_buffer_info (l_record_index_buffer).day_21 := TRUE;
1859 END IF;
1860 ELSIF ((l_timecard_start_time + 21) = l_detail_start_time) THEN
1861 IF (l_buffer_info (l_record_index_buffer).day_22) THEN
1862 l_found_hours_type := FALSE;
1863 ELSE
1864 l_buffer_info (l_record_index_buffer).day_22 := TRUE;
1865 END IF;
1866 ELSIF ((l_timecard_start_time + 22) = l_detail_start_time) THEN
1867 IF (l_buffer_info (l_record_index_buffer).day_23) THEN
1868 l_found_hours_type := FALSE;
1869 ELSE
1870 l_buffer_info (l_record_index_buffer).day_23 := TRUE;
1871 END IF;
1872 ELSIF ((l_timecard_start_time + 23) = l_detail_start_time) THEN
1873 IF (l_buffer_info (l_record_index_buffer).day_24) THEN
1874 l_found_hours_type := FALSE;
1875 ELSE
1876 l_buffer_info (l_record_index_buffer).day_24 := TRUE;
1877 END IF;
1878 ELSIF ((l_timecard_start_time + 24) = l_detail_start_time) THEN
1879 IF (l_buffer_info (l_record_index_buffer).day_25) THEN
1880 l_found_hours_type := FALSE;
1881 ELSE
1882 l_buffer_info (l_record_index_buffer).day_25 := TRUE;
1883 END IF;
1884 ELSIF ((l_timecard_start_time + 25) = l_detail_start_time) THEN
1885 IF (l_buffer_info (l_record_index_buffer).day_26) THEN
1886 l_found_hours_type := FALSE;
1887 ELSE
1888 l_buffer_info (l_record_index_buffer).day_26 := TRUE;
1889 END IF;
1890 ELSIF ((l_timecard_start_time + 26) = l_detail_start_time) THEN
1891 IF (l_buffer_info (l_record_index_buffer).day_27) THEN
1892 l_found_hours_type := FALSE;
1893 ELSE
1894 l_buffer_info (l_record_index_buffer).day_27 := TRUE;
1895 END IF;
1896 ELSIF ((l_timecard_start_time + 27) = l_detail_start_time) THEN
1897 IF (l_buffer_info (l_record_index_buffer).day_28) THEN
1898 l_found_hours_type := FALSE;
1899 ELSE
1900 l_buffer_info (l_record_index_buffer).day_28 := TRUE;
1901 END IF;
1902 ELSIF ((l_timecard_start_time + 28) = l_detail_start_time) THEN
1903 IF (l_buffer_info (l_record_index_buffer).day_29) THEN
1904 l_found_hours_type := FALSE;
1905 ELSE
1906 l_buffer_info (l_record_index_buffer).day_29 := TRUE;
1907 END IF;
1908 ELSIF ((l_timecard_start_time + 29) = l_detail_start_time) THEN
1909 IF (l_buffer_info (l_record_index_buffer).day_30) THEN
1910 l_found_hours_type := FALSE;
1911 ELSE
1912 l_buffer_info (l_record_index_buffer).day_30 := TRUE;
1913 END IF;
1914 ELSIF ((l_timecard_start_time + 30) = l_detail_start_time) THEN
1915 IF (l_buffer_info (l_record_index_buffer).day_31) THEN
1916 l_found_hours_type := FALSE;
1917 ELSE
1918 l_buffer_info (l_record_index_buffer).day_31 := TRUE;
1919 END IF;
1920 END IF;
1921
1922 IF (l_found_hours_type) THEN
1923 changed := 'Y'; --nitin
1924 changed_no := l_table_counter; --nitin
1925 l_table_counter := l_buffer_info (l_index_buffer).row_table_index; ---nitin
1926 END IF;
1927
1928 -- reset
1929 l_record_index_buffer := NULL;
1930 END IF;
1931
1932 IF (l_found_hours_type) THEN
1933 l_index_buffer := l_buffer_info.LAST + 1;
1934 ELSE
1935 l_index_buffer := l_buffer_info.NEXT (l_index_buffer);
1936 END IF;
1937 END LOOP;
1938 /*ADVICE(1822): Nested LOOPs should all be labeled [406] */
1939
1940
1941 -- now we need to check at this index that the detail info is not populate
1942 -- if it is so the we need to increment the table index.
1943 -- the hours type has not been found
1944 -- create a new row in the buffer and increment the table_counter
1945
1946 IF ( l_found_hours_type = FALSE
1947 AND NVL (t_base_table (t_base_index).attribute1, 1) =
1948 NVL (NVL (p_attribute1, t_base_table (t_base_index).attribute1), 1)
1949 AND NVL (t_base_table (t_base_index).attribute2, 1) =
1950 NVL (NVL (p_attribute2, t_base_table (t_base_index).attribute2), 1)
1951 AND NVL (t_base_table (t_base_index).attribute3, 1) =
1952 NVL (NVL (p_attribute3, t_base_table (t_base_index).attribute3), 1)
1953 AND NVL (t_base_table (t_base_index).attribute4, 1) =
1954 NVL (NVL (p_attribute4, t_base_table (t_base_index).attribute4), 1)
1955 AND NVL (t_base_table (t_base_index).attribute5, 1) =
1956 NVL (NVL (p_attribute5, t_base_table (t_base_index).attribute5), 1)
1957 AND NVL (t_base_table (t_base_index).attribute6, 1) =
1958 NVL (NVL (p_attribute6, t_base_table (t_base_index).attribute6), 1)
1959 AND NVL (t_base_table (t_base_index).attribute7, 1) =
1960 NVL (NVL (p_attribute7, t_base_table (t_base_index).attribute7), 1)
1961 AND NVL (t_base_table (t_base_index).attribute8, 1) =
1962 NVL (NVL (p_attribute8, t_base_table (t_base_index).attribute8), 1)
1963 AND NVL (t_base_table (t_base_index).attribute9, 1) =
1964 NVL (NVL (p_attribute9, t_base_table (t_base_index).attribute9), 1)
1965 AND NVL (t_base_table (t_base_index).attribute10, 1) =
1966 NVL (NVL (p_attribute10, t_base_table (t_base_index).attribute10), 1)
1967 AND NVL (t_base_table (t_base_index).attribute11, 1) =
1968 NVL (NVL (p_attribute11, t_base_table (t_base_index).attribute11), 1)
1969 AND NVL (t_base_table (t_base_index).attribute12, 1) =
1970 NVL (NVL (p_attribute12, t_base_table (t_base_index).attribute12), 1)
1971 AND NVL (t_base_table (t_base_index).attribute13, 1) =
1972 NVL (NVL (p_attribute13, t_base_table (t_base_index).attribute13), 1)
1973 AND NVL (t_base_table (t_base_index).attribute14, 1) =
1974 NVL (NVL (p_attribute14, t_base_table (t_base_index).attribute14), 1)
1975 AND NVL (t_base_table (t_base_index).attribute15, 1) =
1976 NVL (NVL (p_attribute15, t_base_table (t_base_index).attribute15), 1)
1977 AND NVL (t_base_table (t_base_index).attribute16, 1) =
1978 NVL (NVL (p_attribute16, t_base_table (t_base_index).attribute16), 1)
1979 AND NVL (t_base_table (t_base_index).attribute17, 1) =
1980 NVL (NVL (p_attribute17, t_base_table (t_base_index).attribute17), 1)
1981 AND NVL (t_base_table (t_base_index).attribute18, 1) =
1982 NVL (NVL (p_attribute18, t_base_table (t_base_index).attribute18), 1)
1983 AND NVL (t_base_table (t_base_index).attribute19, 1) =
1984 NVL (NVL (p_attribute19, t_base_table (t_base_index).attribute19), 1)
1985 AND NVL (t_base_table (t_base_index).attribute20, 1) =
1986 NVL (NVL (p_attribute20, t_base_table (t_base_index).attribute20), 1)
1987 ) THEN
1988 -- increment of the index
1989
1990
1991 -- if l_table_counter < l_buffer_info(l_buffer_info.last).row_table_index then --nitin
1992 -- l_table_counter :=l_buffer_info(l_buffer_info.last).row_table_index; --nitin
1993 -- end if; --nitin
1994
1995 l_table_counter := l_table_counter + 1;
1996 l_index_buffer := l_buffer_info.LAST + 1;
1997 l_buffer_info (l_index_buffer).row_table_index := l_table_counter;
1998 l_buffer_info (l_index_buffer).attribute1 := t_base_table (t_base_index).attribute1;
1999 l_buffer_info (l_index_buffer).attribute2 := t_base_table (t_base_index).attribute2;
2000 l_buffer_info (l_index_buffer).attribute3 := t_base_table (t_base_index).attribute3;
2001 l_buffer_info (l_index_buffer).attribute4 := t_base_table (t_base_index).attribute4;
2002 l_buffer_info (l_index_buffer).attribute5 := t_base_table (t_base_index).attribute5;
2003 l_buffer_info (l_index_buffer).attribute6 := t_base_table (t_base_index).attribute6;
2004 l_buffer_info (l_index_buffer).attribute7 := t_base_table (t_base_index).attribute7;
2005 l_buffer_info (l_index_buffer).attribute8 := t_base_table (t_base_index).attribute8;
2006 l_buffer_info (l_index_buffer).attribute9 := t_base_table (t_base_index).attribute9;
2007 l_buffer_info (l_index_buffer).attribute10 := t_base_table (t_base_index).attribute10;
2008 l_buffer_info (l_index_buffer).attribute11 := t_base_table (t_base_index).attribute11;
2009 l_buffer_info (l_index_buffer).attribute12 := t_base_table (t_base_index).attribute12;
2010 l_buffer_info (l_index_buffer).attribute13 := t_base_table (t_base_index).attribute13;
2011 l_buffer_info (l_index_buffer).attribute14 := t_base_table (t_base_index).attribute14;
2012 l_buffer_info (l_index_buffer).attribute15 := t_base_table (t_base_index).attribute15;
2013 l_buffer_info (l_index_buffer).attribute16 := t_base_table (t_base_index).attribute16;
2014 l_buffer_info (l_index_buffer).attribute17 := t_base_table (t_base_index).attribute17;
2015 l_buffer_info (l_index_buffer).attribute18 := t_base_table (t_base_index).attribute18;
2016 l_buffer_info (l_index_buffer).attribute19 := t_base_table (t_base_index).attribute19;
2017 l_buffer_info (l_index_buffer).attribute20 := t_base_table (t_base_index).attribute20;
2018
2019 -- store the day that has been populated
2020 IF (l_timecard_start_time = l_detail_start_time) THEN
2021 l_buffer_info (l_index_buffer).day_1 := TRUE;
2022 ELSIF ((l_timecard_start_time + 1) = l_detail_start_time) THEN
2023 l_buffer_info (l_index_buffer).day_2 := TRUE;
2024 ELSIF ((l_timecard_start_time + 2) = l_detail_start_time) THEN
2025 l_buffer_info (l_index_buffer).day_3 := TRUE;
2026 ELSIF ((l_timecard_start_time + 3) = l_detail_start_time) THEN
2027 l_buffer_info (l_index_buffer).day_4 := TRUE;
2028 ELSIF ((l_timecard_start_time + 4) = l_detail_start_time) THEN
2029 l_buffer_info (l_index_buffer).day_5 := TRUE;
2030 ELSIF ((l_timecard_start_time + 5) = l_detail_start_time) THEN
2031 l_buffer_info (l_index_buffer).day_6 := TRUE;
2032 ELSIF ((l_timecard_start_time + 6) = l_detail_start_time) THEN
2033 l_buffer_info (l_index_buffer).day_7 := TRUE;
2034 ELSIF ((l_timecard_start_time + 7) = l_detail_start_time) THEN
2035 l_buffer_info (l_index_buffer).day_8 := TRUE;
2036 ELSIF ((l_timecard_start_time + 8) = l_detail_start_time) THEN
2037 l_buffer_info (l_index_buffer).day_9 := TRUE;
2038 ELSIF ((l_timecard_start_time + 9) = l_detail_start_time) THEN
2039 l_buffer_info (l_index_buffer).day_10 := TRUE;
2040 ELSIF ((l_timecard_start_time + 10) = l_detail_start_time) THEN
2041 l_buffer_info (l_index_buffer).day_11 := TRUE;
2042 ELSIF ((l_timecard_start_time + 11) = l_detail_start_time) THEN
2043 l_buffer_info (l_index_buffer).day_12 := TRUE;
2044 ELSIF ((l_timecard_start_time + 12) = l_detail_start_time) THEN
2045 l_buffer_info (l_index_buffer).day_13 := TRUE;
2046 ELSIF ((l_timecard_start_time + 13) = l_detail_start_time) THEN
2047 l_buffer_info (l_index_buffer).day_14 := TRUE;
2048 ELSIF ((l_timecard_start_time + 14) = l_detail_start_time) THEN
2049 l_buffer_info (l_index_buffer).day_15 := TRUE;
2050 ELSIF ((l_timecard_start_time + 15) = l_detail_start_time) THEN
2051 l_buffer_info (l_index_buffer).day_16 := TRUE;
2052 ELSIF ((l_timecard_start_time + 16) = l_detail_start_time) THEN
2053 l_buffer_info (l_index_buffer).day_17 := TRUE;
2054 ELSIF ((l_timecard_start_time + 17) = l_detail_start_time) THEN
2055 l_buffer_info (l_index_buffer).day_18 := TRUE;
2056 ELSIF ((l_timecard_start_time + 18) = l_detail_start_time) THEN
2057 l_buffer_info (l_index_buffer).day_19 := TRUE;
2058 ELSIF ((l_timecard_start_time + 19) = l_detail_start_time) THEN
2059 l_buffer_info (l_index_buffer).day_20 := TRUE;
2060 ELSIF ((l_timecard_start_time + 20) = l_detail_start_time) THEN
2061 l_buffer_info (l_index_buffer).day_21 := TRUE;
2062 ELSIF ((l_timecard_start_time + 21) = l_detail_start_time) THEN
2063 l_buffer_info (l_index_buffer).day_22 := TRUE;
2064 ELSIF ((l_timecard_start_time + 22) = l_detail_start_time) THEN
2065 l_buffer_info (l_index_buffer).day_23 := TRUE;
2066 ELSIF ((l_timecard_start_time + 23) = l_detail_start_time) THEN
2067 l_buffer_info (l_index_buffer).day_24 := TRUE;
2068 ELSIF ((l_timecard_start_time + 24) = l_detail_start_time) THEN
2069 l_buffer_info (l_index_buffer).day_25 := TRUE;
2070 ELSIF ((l_timecard_start_time + 25) = l_detail_start_time) THEN
2071 l_buffer_info (l_index_buffer).day_26 := TRUE;
2072 ELSIF ((l_timecard_start_time + 26) = l_detail_start_time) THEN
2073 l_buffer_info (l_index_buffer).day_27 := TRUE;
2074 ELSIF ((l_timecard_start_time + 27) = l_detail_start_time) THEN
2075 l_buffer_info (l_index_buffer).day_28 := TRUE;
2076 ELSIF ((l_timecard_start_time + 28) = l_detail_start_time) THEN
2077 l_buffer_info (l_index_buffer).day_29 := TRUE;
2078 ELSIF ((l_timecard_start_time + 29) = l_detail_start_time) THEN
2079 l_buffer_info (l_index_buffer).day_30 := TRUE;
2080 ELSIF ((l_timecard_start_time + 30) = l_detail_start_time) THEN
2081 l_buffer_info (l_index_buffer).day_31 := TRUE;
2082 END IF;
2083 END IF;
2084
2085 l_found_hours_type := FALSE;
2086
2087 --IF g_debbug THEN
2088 --hxc_timekeeper_utilities.dump_buffer_table(l_buffer_info);
2089 --END IF;
2090 if g_debug then
2091 hr_utility.trace ('101 -- Normal Query procedure ');
2092 end if;
2093 IF p_reqryflg = 'N' THEN
2094 p_timekeeper_data (l_table_counter).check_box := 'Y';
2095 g_submit_table (resource_info.person_id).resource_id := resource_info.person_id;
2096 g_submit_table (resource_info.person_id).timecard_id := l_timecard_id;
2097 g_submit_table (resource_info.person_id).start_time := tc_start;
2098 g_submit_table (resource_info.person_id).stop_time := tc_end;
2099 g_submit_table (resource_info.person_id).row_lock_id := l_row_lock_id;
2100 g_submit_table (resource_info.person_id).no_rows :=
2101 NVL (g_submit_table (resource_info.person_id).no_rows, 0) + 1;
2102 ELSE
2103 p_timekeeper_data (l_table_counter).check_box := 'N';
2104 g_submit_table.DELETE (resource_info.person_id);
2105 END IF;
2106
2107 p_timekeeper_data (l_table_counter).timecard_id := l_timecard_id;
2108 p_timekeeper_data (l_table_counter).timecard_start_period := tc_start;
2109 p_timekeeper_data (l_table_counter).timecard_end_period := tc_end;
2110 p_timekeeper_data (l_table_counter).last_update_date := l_last_update_date;
2111 p_timekeeper_data (l_table_counter).last_updated_by := l_last_updated_by;
2112 p_timekeeper_data (l_table_counter).last_update_login := l_last_update_login;
2113 p_timekeeper_data (l_table_counter).created_by := l_created_by;
2114 p_timekeeper_data (l_table_counter).creation_date := l_creation_date;
2115 p_timekeeper_data (l_table_counter).timecard_ovn := l_timecard_ovn;
2116 p_timekeeper_data (l_table_counter).timecard_status_code := l_status_code;
2117 p_timekeeper_data (l_table_counter).timecard_status := l_timecard_status_meaning;
2118 p_timekeeper_data (l_table_counter).timecard_message_code := l_timecard_message_code;
2119 p_timekeeper_data (l_table_counter).timecard_message := l_timecard_message;
2120 p_timekeeper_data (l_table_counter).comment_text := l_timecard_comment_text;
2121 p_timekeeper_data (l_table_counter).attr_id_1 := t_base_table (t_base_index).attribute1;
2122 p_timekeeper_data (l_table_counter).attr_id_2 := t_base_table (t_base_index).attribute2;
2123 p_timekeeper_data (l_table_counter).attr_id_3 := t_base_table (t_base_index).attribute3;
2124 p_timekeeper_data (l_table_counter).attr_id_4 := t_base_table (t_base_index).attribute4;
2125 p_timekeeper_data (l_table_counter).attr_id_5 := t_base_table (t_base_index).attribute5;
2126 p_timekeeper_data (l_table_counter).attr_id_6 := t_base_table (t_base_index).attribute6;
2127 p_timekeeper_data (l_table_counter).attr_id_7 := t_base_table (t_base_index).attribute7;
2128 p_timekeeper_data (l_table_counter).attr_id_8 := t_base_table (t_base_index).attribute8;
2129 p_timekeeper_data (l_table_counter).attr_id_9 := t_base_table (t_base_index).attribute9;
2130 p_timekeeper_data (l_table_counter).attr_id_10 := t_base_table (t_base_index).attribute10;
2131 p_timekeeper_data (l_table_counter).attr_id_11 := t_base_table (t_base_index).attribute11;
2132 p_timekeeper_data (l_table_counter).attr_id_12 := t_base_table (t_base_index).attribute12;
2133 p_timekeeper_data (l_table_counter).attr_id_13 := t_base_table (t_base_index).attribute13;
2134 p_timekeeper_data (l_table_counter).attr_id_14 := t_base_table (t_base_index).attribute14;
2135 p_timekeeper_data (l_table_counter).attr_id_15 := t_base_table (t_base_index).attribute15;
2136 p_timekeeper_data (l_table_counter).attr_id_14 := t_base_table (t_base_index).attribute14;
2137 p_timekeeper_data (l_table_counter).attr_id_15 := t_base_table (t_base_index).attribute15;
2138 p_timekeeper_data (l_table_counter).attr_id_16 := t_base_table (t_base_index).attribute16;
2139 p_timekeeper_data (l_table_counter).attr_id_17 := t_base_table (t_base_index).attribute17;
2140 p_timekeeper_data (l_table_counter).attr_id_18 := t_base_table (t_base_index).attribute18;
2141 p_timekeeper_data (l_table_counter).attr_id_19 := t_base_table (t_base_index).attribute19;
2142 p_timekeeper_data (l_table_counter).attr_id_20 := t_base_table (t_base_index).attribute20;
2143 p_timekeeper_data (l_table_counter).attr_oldid_1 := t_base_table (t_base_index).attribute1;
2144 p_timekeeper_data (l_table_counter).attr_oldid_2 := t_base_table (t_base_index).attribute2;
2145 p_timekeeper_data (l_table_counter).attr_oldid_3 := t_base_table (t_base_index).attribute3;
2146 p_timekeeper_data (l_table_counter).attr_oldid_4 := t_base_table (t_base_index).attribute4;
2147 p_timekeeper_data (l_table_counter).attr_oldid_5 := t_base_table (t_base_index).attribute5;
2148 p_timekeeper_data (l_table_counter).attr_oldid_6 := t_base_table (t_base_index).attribute6;
2149 p_timekeeper_data (l_table_counter).attr_oldid_7 := t_base_table (t_base_index).attribute7;
2150 p_timekeeper_data (l_table_counter).attr_oldid_8 := t_base_table (t_base_index).attribute8;
2151 p_timekeeper_data (l_table_counter).attr_oldid_9 := t_base_table (t_base_index).attribute9;
2152 p_timekeeper_data (l_table_counter).attr_oldid_10 := t_base_table (t_base_index).attribute10;
2153 p_timekeeper_data (l_table_counter).attr_oldid_11 := t_base_table (t_base_index).attribute11;
2154 p_timekeeper_data (l_table_counter).attr_oldid_12 := t_base_table (t_base_index).attribute12;
2155 p_timekeeper_data (l_table_counter).attr_oldid_13 := t_base_table (t_base_index).attribute13;
2156 p_timekeeper_data (l_table_counter).attr_oldid_14 := t_base_table (t_base_index).attribute14;
2157 p_timekeeper_data (l_table_counter).attr_oldid_15 := t_base_table (t_base_index).attribute15;
2158 p_timekeeper_data (l_table_counter).attr_oldid_14 := t_base_table (t_base_index).attribute14;
2159 p_timekeeper_data (l_table_counter).attr_oldid_15 := t_base_table (t_base_index).attribute15;
2160 p_timekeeper_data (l_table_counter).attr_oldid_16 := t_base_table (t_base_index).attribute16;
2161 p_timekeeper_data (l_table_counter).attr_oldid_17 := t_base_table (t_base_index).attribute17;
2162 p_timekeeper_data (l_table_counter).attr_oldid_18 := t_base_table (t_base_index).attribute18;
2163 p_timekeeper_data (l_table_counter).attr_oldid_19 := t_base_table (t_base_index).attribute19;
2164 p_timekeeper_data (l_table_counter).attr_oldid_20 := t_base_table (t_base_index).attribute20;
2165 p_timekeeper_data (l_table_counter).resource_id := resource_info.person_id;
2166 p_timekeeper_data (l_table_counter).employee_number := resource_info.employee_number;
2167 -- Bug 10231662
2168 --p_timekeeper_data (l_table_counter).person_type := resource_info.person_type;
2169 p_timekeeper_data (l_table_counter).person_type := l_user_person_type;
2170
2171 p_timekeeper_data (l_table_counter).audit_enabled := l_audit_enabled;
2172 p_timekeeper_data (l_table_counter).employee_full_name := resource_info.full_name;
2173 p_timekeeper_data (l_table_counter).row_lock_id := l_row_lock_id;
2174 p_timekeeper_data (l_table_counter).tc_lock_success := l_tc_lock_success;
2175 if g_debug then
2176 hr_utility.TRACE ('l_detail_id'|| l_detail_id);
2177 hr_utility.TRACE ('l_timecard_id'|| l_timecard_id);
2178 hr_utility.TRACE ('l_detail_comment_text'|| l_detail_comment_text);
2179 end if;
2180 IF l_detail_comment_text IS NOT NULL THEN
2181 if g_debug then
2182 hr_utility.TRACE ('200');
2183 hr_utility.TRACE ('l_detail_idA'|| l_detail_id);
2184 hr_utility.TRACE ('l_timecard_idA'|| l_timecard_id);
2185 hr_utility.TRACE ('l_detail_comment_textA'|| l_detail_comment_text);
2186 end if;
2187 IF c%ISOPEN THEN
2188 CLOSE c;
2189 END IF;
2190
2191 OPEN c (l_detail_id);
2192 FETCH c INTO c_row;
2193
2194 IF c%FOUND THEN
2195 UPDATE hxc_tk_detail_temp
2196 SET comment_text = l_detail_comment_text
2197 WHERE detailid = l_detail_id AND timecard_id = l_timecard_id;
2198 ELSE
2199 INSERT INTO hxc_tk_detail_temp
2200 (detailid, timecard_id, comment_text)
2201 VALUES (l_detail_id, l_timecard_id, l_detail_comment_text);
2202 END IF;
2203
2204 CLOSE c;
2205 END IF;
2206
2207 -- attach the detail information with the right day
2208 IF (l_timecard_start_time - (l_add_index_day) = l_detail_start_time) THEN
2209 p_timekeeper_data (l_table_counter).day_1 := l_detail_measure;
2210 p_timekeeper_data (l_table_counter).detail_id_1 := l_detail_id;
2211 p_timekeeper_data (l_table_counter).detail_ovn_1 := l_detail_ovn;
2212 p_timekeeper_data (l_table_counter).time_in_1 := l_detail_time_in;
2213 p_timekeeper_data (l_table_counter).time_out_1 := l_detail_time_out;
2214 ELSIF ((l_timecard_start_time - l_add_index_day + 1) = l_detail_start_time) THEN
2215 p_timekeeper_data (l_table_counter).day_2 := l_detail_measure;
2216 p_timekeeper_data (l_table_counter).detail_id_2 := l_detail_id;
2217 p_timekeeper_data (l_table_counter).detail_ovn_2 := l_detail_ovn;
2218 p_timekeeper_data (l_table_counter).time_in_2 := l_detail_time_in;
2219 p_timekeeper_data (l_table_counter).time_out_2 := l_detail_time_out;
2220 ELSIF ((l_timecard_start_time - l_add_index_day + 2) = l_detail_start_time) THEN
2221 p_timekeeper_data (l_table_counter).day_3 := l_detail_measure;
2222 p_timekeeper_data (l_table_counter).detail_id_3 := l_detail_id;
2223 p_timekeeper_data (l_table_counter).detail_ovn_3 := l_detail_ovn;
2224 p_timekeeper_data (l_table_counter).time_in_3 := l_detail_time_in;
2225 p_timekeeper_data (l_table_counter).time_out_3 := l_detail_time_out;
2226 ELSIF ((l_timecard_start_time - l_add_index_day + 3) = l_detail_start_time) THEN
2227 p_timekeeper_data (l_table_counter).day_4 := l_detail_measure;
2228 p_timekeeper_data (l_table_counter).detail_id_4 := l_detail_id;
2229 p_timekeeper_data (l_table_counter).detail_ovn_4 := l_detail_ovn;
2230 p_timekeeper_data (l_table_counter).time_in_4 := l_detail_time_in;
2231 p_timekeeper_data (l_table_counter).time_out_4 := l_detail_time_out;
2232 ELSIF ((l_timecard_start_time - l_add_index_day + 4) = l_detail_start_time) THEN
2233 p_timekeeper_data (l_table_counter).day_5 := l_detail_measure;
2234 p_timekeeper_data (l_table_counter).detail_id_5 := l_detail_id;
2235 p_timekeeper_data (l_table_counter).detail_ovn_5 := l_detail_ovn;
2236 p_timekeeper_data (l_table_counter).time_in_5 := l_detail_time_in;
2237 p_timekeeper_data (l_table_counter).time_out_5 := l_detail_time_out;
2238 ELSIF ((l_timecard_start_time - l_add_index_day + 5) = l_detail_start_time) THEN
2239 p_timekeeper_data (l_table_counter).day_6 := l_detail_measure;
2240 p_timekeeper_data (l_table_counter).detail_id_6 := l_detail_id;
2241 p_timekeeper_data (l_table_counter).detail_ovn_6 := l_detail_ovn;
2242 p_timekeeper_data (l_table_counter).time_in_6 := l_detail_time_in;
2243 p_timekeeper_data (l_table_counter).time_out_6 := l_detail_time_out;
2244 ELSIF ((l_timecard_start_time - l_add_index_day + 6) = l_detail_start_time) THEN
2245 p_timekeeper_data (l_table_counter).day_7 := l_detail_measure;
2246 p_timekeeper_data (l_table_counter).detail_id_7 := l_detail_id;
2247 p_timekeeper_data (l_table_counter).detail_ovn_7 := l_detail_ovn;
2248 p_timekeeper_data (l_table_counter).time_in_7 := l_detail_time_in;
2249 p_timekeeper_data (l_table_counter).time_out_7 := l_detail_time_out;
2250 ELSIF ((l_timecard_start_time - l_add_index_day + 7) = l_detail_start_time) THEN
2251 p_timekeeper_data (l_table_counter).day_8 := l_detail_measure;
2252 p_timekeeper_data (l_table_counter).detail_id_8 := l_detail_id;
2253 p_timekeeper_data (l_table_counter).detail_ovn_8 := l_detail_ovn;
2254 p_timekeeper_data (l_table_counter).time_in_8 := l_detail_time_in;
2255 p_timekeeper_data (l_table_counter).time_out_8 := l_detail_time_out;
2256 ELSIF ((l_timecard_start_time - l_add_index_day + 8) = l_detail_start_time) THEN
2257 p_timekeeper_data (l_table_counter).day_9 := l_detail_measure;
2258 p_timekeeper_data (l_table_counter).detail_id_9 := l_detail_id;
2259 p_timekeeper_data (l_table_counter).detail_ovn_9 := l_detail_ovn;
2260 p_timekeeper_data (l_table_counter).time_in_9 := l_detail_time_in;
2261 p_timekeeper_data (l_table_counter).time_out_9 := l_detail_time_out;
2262 ELSIF ((l_timecard_start_time - l_add_index_day + 9) = l_detail_start_time) THEN
2263 p_timekeeper_data (l_table_counter).day_10 := l_detail_measure;
2264 p_timekeeper_data (l_table_counter).detail_id_10 := l_detail_id;
2265 p_timekeeper_data (l_table_counter).detail_ovn_10 := l_detail_ovn;
2266 p_timekeeper_data (l_table_counter).time_in_10 := l_detail_time_in;
2267 p_timekeeper_data (l_table_counter).time_out_10 := l_detail_time_out;
2268 ELSIF ((l_timecard_start_time - l_add_index_day + 10) = l_detail_start_time) THEN
2269 p_timekeeper_data (l_table_counter).day_11 := l_detail_measure;
2270 p_timekeeper_data (l_table_counter).detail_id_11 := l_detail_id;
2271 p_timekeeper_data (l_table_counter).detail_ovn_11 := l_detail_ovn;
2272 p_timekeeper_data (l_table_counter).time_in_11 := l_detail_time_in;
2273 p_timekeeper_data (l_table_counter).time_out_11 := l_detail_time_out;
2274 ELSIF ((l_timecard_start_time - l_add_index_day + 11) = l_detail_start_time) THEN
2275 p_timekeeper_data (l_table_counter).day_12 := l_detail_measure;
2276 p_timekeeper_data (l_table_counter).detail_id_12 := l_detail_id;
2277 p_timekeeper_data (l_table_counter).detail_ovn_12 := l_detail_ovn;
2278 p_timekeeper_data (l_table_counter).time_in_12 := l_detail_time_in;
2279 p_timekeeper_data (l_table_counter).time_out_12 := l_detail_time_out;
2280 ELSIF ((l_timecard_start_time - l_add_index_day + 12) = l_detail_start_time) THEN
2281 p_timekeeper_data (l_table_counter).day_13 := l_detail_measure;
2282 p_timekeeper_data (l_table_counter).detail_id_13 := l_detail_id;
2283 p_timekeeper_data (l_table_counter).detail_ovn_13 := l_detail_ovn;
2284 p_timekeeper_data (l_table_counter).time_in_13 := l_detail_time_in;
2285 p_timekeeper_data (l_table_counter).time_out_13 := l_detail_time_out;
2286 ELSIF ((l_timecard_start_time - l_add_index_day + 13) = l_detail_start_time) THEN
2287 p_timekeeper_data (l_table_counter).day_14 := l_detail_measure;
2288 p_timekeeper_data (l_table_counter).detail_id_14 := l_detail_id;
2289 p_timekeeper_data (l_table_counter).detail_ovn_14 := l_detail_ovn;
2290 p_timekeeper_data (l_table_counter).time_in_14 := l_detail_time_in;
2291 p_timekeeper_data (l_table_counter).time_out_14 := l_detail_time_out;
2292 ELSIF ((l_timecard_start_time - l_add_index_day + 14) = l_detail_start_time) THEN
2293 p_timekeeper_data (l_table_counter).day_15 := l_detail_measure;
2294 p_timekeeper_data (l_table_counter).detail_id_15 := l_detail_id;
2295 p_timekeeper_data (l_table_counter).detail_ovn_15 := l_detail_ovn;
2296 p_timekeeper_data (l_table_counter).time_in_15 := l_detail_time_in;
2297 p_timekeeper_data (l_table_counter).time_out_15 := l_detail_time_out;
2298 ELSIF ((l_timecard_start_time - l_add_index_day + 15) = l_detail_start_time) THEN
2299 p_timekeeper_data (l_table_counter).day_16 := l_detail_measure;
2300 p_timekeeper_data (l_table_counter).detail_id_16 := l_detail_id;
2301 p_timekeeper_data (l_table_counter).detail_ovn_16 := l_detail_ovn;
2302 p_timekeeper_data (l_table_counter).time_in_16 := l_detail_time_in;
2303 p_timekeeper_data (l_table_counter).time_out_16 := l_detail_time_out;
2304 ELSIF ((l_timecard_start_time - l_add_index_day + 16) = l_detail_start_time) THEN
2305 p_timekeeper_data (l_table_counter).day_17 := l_detail_measure;
2306 p_timekeeper_data (l_table_counter).detail_id_17 := l_detail_id;
2307 p_timekeeper_data (l_table_counter).detail_ovn_17 := l_detail_ovn;
2308 p_timekeeper_data (l_table_counter).time_in_17 := l_detail_time_in;
2309 p_timekeeper_data (l_table_counter).time_out_17 := l_detail_time_out;
2310 ELSIF ((l_timecard_start_time - l_add_index_day + 17) = l_detail_start_time) THEN
2311 p_timekeeper_data (l_table_counter).day_18 := l_detail_measure;
2312 p_timekeeper_data (l_table_counter).detail_id_18 := l_detail_id;
2313 p_timekeeper_data (l_table_counter).detail_ovn_18 := l_detail_ovn;
2314 p_timekeeper_data (l_table_counter).time_in_18 := l_detail_time_in;
2315 p_timekeeper_data (l_table_counter).time_out_18 := l_detail_time_out;
2316 ELSIF ((l_timecard_start_time - l_add_index_day + 18) = l_detail_start_time) THEN
2317 p_timekeeper_data (l_table_counter).day_19 := l_detail_measure;
2318 p_timekeeper_data (l_table_counter).detail_id_19 := l_detail_id;
2319 p_timekeeper_data (l_table_counter).detail_ovn_19 := l_detail_ovn;
2320 p_timekeeper_data (l_table_counter).time_in_19 := l_detail_time_in;
2321 p_timekeeper_data (l_table_counter).time_out_19 := l_detail_time_out;
2322 ELSIF ((l_timecard_start_time - l_add_index_day + 19) = l_detail_start_time) THEN
2323 p_timekeeper_data (l_table_counter).day_20 := l_detail_measure;
2324 p_timekeeper_data (l_table_counter).detail_id_20 := l_detail_id;
2325 p_timekeeper_data (l_table_counter).detail_ovn_20 := l_detail_ovn;
2326 p_timekeeper_data (l_table_counter).time_in_20 := l_detail_time_in;
2327 p_timekeeper_data (l_table_counter).time_out_20 := l_detail_time_out;
2328 ELSIF ((l_timecard_start_time - l_add_index_day + 20) = l_detail_start_time) THEN
2329 p_timekeeper_data (l_table_counter).day_21 := l_detail_measure;
2330 p_timekeeper_data (l_table_counter).detail_id_21 := l_detail_id;
2331 p_timekeeper_data (l_table_counter).detail_ovn_21 := l_detail_ovn;
2332 p_timekeeper_data (l_table_counter).time_in_21 := l_detail_time_in;
2333 p_timekeeper_data (l_table_counter).time_out_21 := l_detail_time_out;
2334 ELSIF ((l_timecard_start_time - l_add_index_day + 21) = l_detail_start_time) THEN
2335 p_timekeeper_data (l_table_counter).day_22 := l_detail_measure;
2336 p_timekeeper_data (l_table_counter).detail_id_22 := l_detail_id;
2337 p_timekeeper_data (l_table_counter).detail_ovn_22 := l_detail_ovn;
2338 p_timekeeper_data (l_table_counter).time_in_22 := l_detail_time_in;
2339 p_timekeeper_data (l_table_counter).time_out_22 := l_detail_time_out;
2340 ELSIF ((l_timecard_start_time - l_add_index_day + 22) = l_detail_start_time) THEN
2341 p_timekeeper_data (l_table_counter).day_23 := l_detail_measure;
2342 p_timekeeper_data (l_table_counter).detail_id_23 := l_detail_id;
2343 p_timekeeper_data (l_table_counter).detail_ovn_23 := l_detail_ovn;
2344 p_timekeeper_data (l_table_counter).time_in_23 := l_detail_time_in;
2345 p_timekeeper_data (l_table_counter).time_out_23 := l_detail_time_out;
2346 ELSIF ((l_timecard_start_time - l_add_index_day + 23) = l_detail_start_time) THEN
2347 p_timekeeper_data (l_table_counter).day_24 := l_detail_measure;
2348 p_timekeeper_data (l_table_counter).detail_id_24 := l_detail_id;
2349 p_timekeeper_data (l_table_counter).detail_ovn_24 := l_detail_ovn;
2350 p_timekeeper_data (l_table_counter).time_in_24 := l_detail_time_in;
2351 p_timekeeper_data (l_table_counter).time_out_24 := l_detail_time_out;
2352 ELSIF ((l_timecard_start_time - l_add_index_day + 24) = l_detail_start_time) THEN
2353 p_timekeeper_data (l_table_counter).day_25 := l_detail_measure;
2354 p_timekeeper_data (l_table_counter).detail_id_25 := l_detail_id;
2355 p_timekeeper_data (l_table_counter).detail_ovn_25 := l_detail_ovn;
2356 p_timekeeper_data (l_table_counter).time_in_25 := l_detail_time_in;
2357 p_timekeeper_data (l_table_counter).time_out_25 := l_detail_time_out;
2358 ELSIF ((l_timecard_start_time - l_add_index_day + 25) = l_detail_start_time) THEN
2359 p_timekeeper_data (l_table_counter).day_26 := l_detail_measure;
2360 p_timekeeper_data (l_table_counter).detail_id_26 := l_detail_id;
2361 p_timekeeper_data (l_table_counter).detail_ovn_26 := l_detail_ovn;
2362 p_timekeeper_data (l_table_counter).time_in_26 := l_detail_time_in;
2363 p_timekeeper_data (l_table_counter).time_out_26 := l_detail_time_out;
2364 ELSIF ((l_timecard_start_time - l_add_index_day + 26) = l_detail_start_time) THEN
2365 p_timekeeper_data (l_table_counter).day_27 := l_detail_measure;
2366 p_timekeeper_data (l_table_counter).detail_id_27 := l_detail_id;
2367 p_timekeeper_data (l_table_counter).detail_ovn_27 := l_detail_ovn;
2368 p_timekeeper_data (l_table_counter).time_in_27 := l_detail_time_in;
2369 p_timekeeper_data (l_table_counter).time_out_27 := l_detail_time_out;
2370 ELSIF ((l_timecard_start_time - l_add_index_day + 27) = l_detail_start_time) THEN
2371 p_timekeeper_data (l_table_counter).day_28 := l_detail_measure;
2372 p_timekeeper_data (l_table_counter).detail_id_28 := l_detail_id;
2373 p_timekeeper_data (l_table_counter).detail_ovn_28 := l_detail_ovn;
2374 p_timekeeper_data (l_table_counter).time_in_28 := l_detail_time_in;
2375 p_timekeeper_data (l_table_counter).time_out_28 := l_detail_time_out;
2376 ELSIF ((l_timecard_start_time - l_add_index_day + 28) = l_detail_start_time) THEN
2377 p_timekeeper_data (l_table_counter).day_29 := l_detail_measure;
2378 p_timekeeper_data (l_table_counter).detail_id_29 := l_detail_id;
2379 p_timekeeper_data (l_table_counter).detail_ovn_29 := l_detail_ovn;
2380 p_timekeeper_data (l_table_counter).time_in_29 := l_detail_time_in;
2381 p_timekeeper_data (l_table_counter).time_out_29 := l_detail_time_out;
2382 ELSIF ((l_timecard_start_time - l_add_index_day + 29) = l_detail_start_time) THEN
2383 p_timekeeper_data (l_table_counter).day_30 := l_detail_measure;
2384 p_timekeeper_data (l_table_counter).detail_id_30 := l_detail_id;
2385 p_timekeeper_data (l_table_counter).detail_ovn_30 := l_detail_ovn;
2386 p_timekeeper_data (l_table_counter).time_in_30 := l_detail_time_in;
2387 p_timekeeper_data (l_table_counter).time_out_30 := l_detail_time_out;
2388 ELSIF ((l_timecard_start_time - l_add_index_day + 30) = l_detail_start_time) THEN
2389 p_timekeeper_data (l_table_counter).day_31 := l_detail_measure;
2390 p_timekeeper_data (l_table_counter).detail_id_31 := l_detail_id;
2391 p_timekeeper_data (l_table_counter).detail_ovn_31 := l_detail_ovn;
2392 p_timekeeper_data (l_table_counter).time_in_31 := l_detail_time_in;
2393 p_timekeeper_data (l_table_counter).time_out_31 := l_detail_time_out;
2394 END IF;
2395 END IF;
2396
2397 IF changed = 'Y' THEN
2398 l_table_counter := changed_no;
2399 END IF;
2400
2401 changed := 'N';
2402 t_base_index := t_base_table.NEXT (t_base_index);
2403 END LOOP;
2404 /*ADVICE(2285): Nested LOOPs should all be labeled [406] */
2405
2406 END IF; -- end if attribute
2407
2408 -- now loop how many detail we still have to process
2409
2410 -- we need to handle the detail with no attribute attached here.....
2411
2412 l_detail_index := l_detail_info_table.FIRST;
2413
2414 -- the timecard is there but contains not detail
2415
2416 IF ( l_detail_info_table.COUNT = 0
2417 AND l_found_detail = FALSE
2418 AND p_status_code IS NULL
2419 AND p_message_type IS NULL
2420 AND p_message_text IS NULL
2421 AND p_change_reason IS NULL
2422 AND p_late_reason IS NULL
2423 AND p_audit_history IS NULL
2424 AND ( p_attribute1 IS NULL
2425 AND p_attribute2 IS NULL
2426 AND p_attribute3 IS NULL
2427 AND p_attribute4 IS NULL
2428 AND p_attribute5 IS NULL
2429 AND p_attribute6 IS NULL
2430 AND p_attribute7 IS NULL
2431 AND p_attribute8 IS NULL
2432 AND p_attribute9 IS NULL
2433 AND p_attribute10 IS NULL
2434 AND p_attribute11 IS NULL
2435 AND p_attribute12 IS NULL
2436 AND p_attribute13 IS NULL
2437 AND p_attribute14 IS NULL
2438 AND p_attribute15 IS NULL
2439 AND p_attribute16 IS NULL
2440 AND p_attribute17 IS NULL
2441 AND p_attribute18 IS NULL
2442 AND p_attribute19 IS NULL
2443 AND p_attribute20 IS NULL
2444 )
2445 ) THEN
2446 l_table_counter := l_table_counter + 1;
2447
2448 IF p_reqryflg = 'N' THEN
2449 p_timekeeper_data (l_table_counter).check_box := 'Y';
2450 g_submit_table (resource_info.person_id).resource_id := resource_info.person_id;
2451 g_submit_table (resource_info.person_id).timecard_id := l_timecard_id;
2452 g_submit_table (resource_info.person_id).start_time := tc_start;
2453 g_submit_table (resource_info.person_id).stop_time := tc_end;
2454 g_submit_table (resource_info.person_id).row_lock_id := l_row_lock_id;
2455 g_submit_table (resource_info.person_id).no_rows :=
2456 NVL (g_submit_table (resource_info.person_id).no_rows, 0) + 1;
2457 ELSE
2458 p_timekeeper_data (l_table_counter).check_box := 'N';
2459 g_submit_table.DELETE (resource_info.person_id);
2460 END IF;
2461
2462 p_timekeeper_data (l_table_counter).timecard_status_code := l_status_code;
2463 p_timekeeper_data (l_table_counter).timecard_status := l_timecard_status_meaning;
2464 p_timekeeper_data (l_table_counter).timecard_message_code := l_timecard_message_code;
2465 p_timekeeper_data (l_table_counter).timecard_message := l_timecard_message;
2466 p_timekeeper_data (l_table_counter).timecard_start_period := tc_start;
2467 p_timekeeper_data (l_table_counter).timecard_end_period := tc_end;
2468 p_timekeeper_data (l_table_counter).comment_text := l_timecard_comment_text;
2469 p_timekeeper_data (l_table_counter).timecard_id := l_timecard_id;
2470 p_timekeeper_data (l_table_counter).timecard_ovn := l_timecard_ovn;
2471 p_timekeeper_data (l_table_counter).resource_id := resource_info.person_id;
2472 p_timekeeper_data (l_table_counter).employee_number := resource_info.employee_number;
2473 -- Bug 10231662
2474 --p_timekeeper_data (l_table_counter).person_type := resource_info.person_type;
2475 p_timekeeper_data (l_table_counter).person_type := l_user_person_type;
2476
2477 p_timekeeper_data (l_table_counter).audit_enabled := l_audit_enabled;
2478 p_timekeeper_data (l_table_counter).employee_full_name := resource_info.full_name;
2479 p_timekeeper_data (l_table_counter).last_update_date := l_last_update_date;
2480 p_timekeeper_data (l_table_counter).last_updated_by := l_last_updated_by;
2481 p_timekeeper_data (l_table_counter).last_update_login := l_last_update_login;
2482 p_timekeeper_data (l_table_counter).created_by := l_created_by;
2483 p_timekeeper_data (l_table_counter).creation_date := l_creation_date;
2484 p_timekeeper_data (l_table_counter).row_lock_id := l_row_lock_id;
2485 p_timekeeper_data (l_table_counter).tc_lock_success := l_tc_lock_success;
2486 ELSE
2487 -- IF (p_status_code is null and p_hours_type_id is null) THEN
2488
2489 IF ( p_attribute1 IS NULL
2490 AND p_attribute2 IS NULL
2491 AND p_attribute3 IS NULL
2492 AND p_attribute4 IS NULL
2493 AND p_attribute5 IS NULL
2494 AND p_attribute6 IS NULL
2495 AND p_attribute7 IS NULL
2496 AND p_attribute8 IS NULL
2497 AND p_attribute9 IS NULL
2498 AND p_attribute10 IS NULL
2499 AND p_attribute11 IS NULL
2500 AND p_attribute12 IS NULL
2501 AND p_attribute13 IS NULL
2502 AND p_attribute14 IS NULL
2503 AND p_attribute15 IS NULL
2504 AND p_attribute16 IS NULL
2505 AND p_attribute17 IS NULL
2506 AND p_attribute18 IS NULL
2507 AND p_attribute19 IS NULL
2508 AND p_attribute20 IS NULL
2509 ) THEN
2510 if g_debug then
2511 hr_utility.trace('two'||l_detail_info_table.count);
2512 end if;
2513 l_table_counter := l_table_counter + 1;
2514
2515 LOOP
2516 EXIT WHEN (NOT l_detail_info_table.EXISTS (l_detail_index));
2517 if g_debug then
2518 hr_utility.trace('two row'||l_table_counter);
2519 hr_utility.trace('two row'||l_detail_id);
2520 end if;
2521
2522 p_timekeeper_data (l_table_counter).timecard_status_code := l_status_code;
2523 p_timekeeper_data (l_table_counter).timecard_status := l_timecard_status_meaning;
2524 p_timekeeper_data (l_table_counter).timecard_message_code := l_timecard_message_code;
2525 p_timekeeper_data (l_table_counter).timecard_message := l_timecard_message;
2526
2527 if g_debug then
2528 hr_utility.trace('p_reqryflg is '||p_reqryflg);
2529 end if;
2530 IF p_reqryflg = 'N' THEN
2531 p_timekeeper_data (l_table_counter).check_box := 'Y';
2532 g_submit_table (resource_info.person_id).resource_id := resource_info.person_id;
2533 g_submit_table (resource_info.person_id).timecard_id := l_timecard_id;
2534 g_submit_table (resource_info.person_id).start_time := tc_start;
2535 g_submit_table (resource_info.person_id).stop_time := tc_end;
2536 g_submit_table (resource_info.person_id).row_lock_id := l_row_lock_id;
2537 g_submit_table (resource_info.person_id).no_rows :=
2538 NVL (g_submit_table (resource_info.person_id).no_rows, 0) + 1;
2539 ELSE
2540 p_timekeeper_data (l_table_counter).check_box := 'N';
2541 g_submit_table.DELETE (resource_info.person_id);
2542 END IF;
2543
2544 p_timekeeper_data (l_table_counter).timecard_start_period := tc_start;
2545 p_timekeeper_data (l_table_counter).timecard_end_period := tc_end;
2546 p_timekeeper_data (l_table_counter).timecard_id := l_timecard_id;
2547 p_timekeeper_data (l_table_counter).timecard_ovn := l_timecard_ovn;
2548 p_timekeeper_data (l_table_counter).comment_text := l_timecard_comment_text;
2549 p_timekeeper_data (l_table_counter).resource_id := resource_info.person_id;
2550 p_timekeeper_data (l_table_counter).employee_number := resource_info.employee_number;
2551 p_timekeeper_data (l_table_counter).audit_enabled := l_audit_enabled;
2552 -- Bug 10231662
2553 --p_timekeeper_data (l_table_counter).person_type := resource_info.person_type;
2554 p_timekeeper_data (l_table_counter).person_type := l_user_person_type;
2555
2556 p_timekeeper_data (l_table_counter).employee_full_name := resource_info.full_name;
2557 p_timekeeper_data (l_table_counter).last_update_date := l_last_update_date;
2558 p_timekeeper_data (l_table_counter).last_updated_by := l_last_updated_by;
2559 p_timekeeper_data (l_table_counter).last_update_login := l_last_update_login;
2560 p_timekeeper_data (l_table_counter).created_by := l_created_by;
2561 p_timekeeper_data (l_table_counter).creation_date := l_creation_date;
2562 p_timekeeper_data (l_table_counter).row_lock_id := l_row_lock_id;
2563 p_timekeeper_data (l_table_counter).tc_lock_success := l_tc_lock_success;
2564 l_detail_id := l_detail_info_table (l_detail_index).detail_id;
2565 l_detail_ovn := l_detail_info_table (l_detail_index).detail_ovn;
2566 l_detail_measure := l_detail_info_table (l_detail_index).measure;
2567 l_detail_start_time := l_detail_info_table (l_detail_index).start_time;
2568 l_detail_time_in := l_detail_info_table (l_detail_index).time_in;
2569 l_detail_time_out := l_detail_info_table (l_detail_index).time_out;
2570 l_detail_comment_text := l_detail_info_table (l_detail_index).detail_comment_text;
2571 -- here we need to check if the item in the table is already populated.
2572
2573 if g_debug then
2574 hr_utility.TRACE ('l_detail_id3'|| l_detail_id);
2575 hr_utility.TRACE ('l_timecard_id3'|| l_timecard_id);
2576 hr_utility.TRACE ('l_detail_comment_text3'|| l_detail_comment_text);
2577 end if;
2578
2579 --
2580
2581 IF l_detail_comment_text IS NOT NULL THEN
2582 if g_debug then
2583 hr_utility.TRACE ('500');
2584 hr_utility.TRACE ('l_detail_id4'|| l_detail_id);
2585 hr_utility.TRACE ('l_timecard_id4'|| l_timecard_id);
2586 hr_utility.TRACE ('l_detail_comment_text4'|| l_detail_comment_text);
2587 end if;
2588
2589 --
2590
2591 IF c%ISOPEN THEN
2592 CLOSE c;
2593 END IF;
2594
2595 OPEN c (l_detail_id);
2596 FETCH c INTO c_row;
2597
2598 IF c%FOUND THEN
2599 UPDATE hxc_tk_detail_temp
2600 SET comment_text = l_detail_comment_text
2601 WHERE detailid = l_detail_id AND timecard_id = l_timecard_id;
2602 ELSE
2603 INSERT INTO hxc_tk_detail_temp
2604 (detailid, timecard_id, comment_text)
2605 VALUES (l_detail_id, l_timecard_id, l_detail_comment_text);
2606 END IF;
2607
2608 CLOSE c;
2609 END IF;
2610
2611 IF (l_timecard_start_time - l_add_index_day = l_detail_start_time) THEN
2612 IF ( p_timekeeper_data (l_table_counter).day_1 IS NULL
2613 AND p_timekeeper_data (l_table_counter).time_in_1 IS NULL
2614 AND p_timekeeper_data (l_table_counter).time_out_1 IS NULL
2615 ) THEN
2616 p_timekeeper_data (l_table_counter).day_1 := l_detail_measure;
2617 p_timekeeper_data (l_table_counter).time_in_1 := l_detail_time_in;
2618 p_timekeeper_data (l_table_counter).time_out_1 := l_detail_time_out;
2619 ELSE
2620 l_table_counter := l_table_counter + 1;
2621 p_timekeeper_data (l_table_counter).day_1 := l_detail_measure;
2622 p_timekeeper_data (l_table_counter).time_in_1 := l_detail_time_in;
2623 p_timekeeper_data (l_table_counter).time_out_1 := l_detail_time_out;
2624 END IF;
2625
2626 p_timekeeper_data (l_table_counter).detail_id_1 := l_detail_id;
2627 p_timekeeper_data (l_table_counter).detail_ovn_1 := l_detail_ovn;
2628 ELSIF ((l_timecard_start_time - l_add_index_day + 1) = l_detail_start_time) THEN
2629 IF ( p_timekeeper_data (l_table_counter).day_2 IS NULL
2630 AND p_timekeeper_data (l_table_counter).time_in_2 IS NULL
2631 AND p_timekeeper_data (l_table_counter).time_out_2 IS NULL
2632 ) THEN
2633 p_timekeeper_data (l_table_counter).day_2 := l_detail_measure;
2634 p_timekeeper_data (l_table_counter).time_in_2 := l_detail_time_in;
2635 p_timekeeper_data (l_table_counter).time_out_2 := l_detail_time_out;
2636 ELSE
2637 l_table_counter := l_table_counter + 1;
2638 p_timekeeper_data (l_table_counter).day_2 := l_detail_measure;
2639 p_timekeeper_data (l_table_counter).time_in_2 := l_detail_time_in;
2640 p_timekeeper_data (l_table_counter).time_out_2 := l_detail_time_out;
2641 END IF;
2642
2643 p_timekeeper_data (l_table_counter).detail_id_2 := l_detail_id;
2644 p_timekeeper_data (l_table_counter).detail_ovn_2 := l_detail_ovn;
2645 ELSIF ((l_timecard_start_time - l_add_index_day + 2) = l_detail_start_time) THEN
2646 IF ( p_timekeeper_data (l_table_counter).day_3 IS NULL
2647 AND p_timekeeper_data (l_table_counter).time_in_3 IS NULL
2648 AND p_timekeeper_data (l_table_counter).time_out_3 IS NULL
2649 ) THEN
2650 p_timekeeper_data (l_table_counter).day_3 := l_detail_measure;
2651 p_timekeeper_data (l_table_counter).time_in_3 := l_detail_time_in;
2652 p_timekeeper_data (l_table_counter).time_out_3 := l_detail_time_out;
2653 ELSE
2654 l_table_counter := l_table_counter + 1;
2655 p_timekeeper_data (l_table_counter).day_3 := l_detail_measure;
2656 p_timekeeper_data (l_table_counter).time_in_3 := l_detail_time_in;
2657 p_timekeeper_data (l_table_counter).time_out_3 := l_detail_time_out;
2658 END IF;
2659
2660 p_timekeeper_data (l_table_counter).detail_id_3 := l_detail_id;
2661 p_timekeeper_data (l_table_counter).detail_ovn_3 := l_detail_ovn;
2662 ELSIF ((l_timecard_start_time - l_add_index_day + 3) = l_detail_start_time) THEN
2663 IF ( p_timekeeper_data (l_table_counter).day_4 IS NULL
2664 AND p_timekeeper_data (l_table_counter).time_in_4 IS NULL
2665 AND p_timekeeper_data (l_table_counter).time_out_4 IS NULL
2666 ) THEN
2667 p_timekeeper_data (l_table_counter).day_4 := l_detail_measure;
2668 p_timekeeper_data (l_table_counter).time_in_4 := l_detail_time_in;
2669 p_timekeeper_data (l_table_counter).time_out_4 := l_detail_time_out;
2670 ELSE
2671 l_table_counter := l_table_counter + 1;
2672 p_timekeeper_data (l_table_counter).day_4 := l_detail_measure;
2673 p_timekeeper_data (l_table_counter).time_in_4 := l_detail_time_in;
2674 p_timekeeper_data (l_table_counter).time_out_4 := l_detail_time_out;
2675 END IF;
2676
2677 p_timekeeper_data (l_table_counter).detail_id_4 := l_detail_id;
2678 p_timekeeper_data (l_table_counter).detail_ovn_4 := l_detail_ovn;
2679 ELSIF ((l_timecard_start_time - l_add_index_day + 4) = l_detail_start_time) THEN
2680 IF ( p_timekeeper_data (l_table_counter).day_5 IS NULL
2681 AND p_timekeeper_data (l_table_counter).time_in_5 IS NULL
2682 AND p_timekeeper_data (l_table_counter).time_out_5 IS NULL
2683 ) THEN
2684 p_timekeeper_data (l_table_counter).day_5 := l_detail_measure;
2685 p_timekeeper_data (l_table_counter).time_in_5 := l_detail_time_in;
2686 p_timekeeper_data (l_table_counter).time_out_5 := l_detail_time_out;
2687 ELSE
2688 l_table_counter := l_table_counter + 1;
2689 p_timekeeper_data (l_table_counter).day_5 := l_detail_measure;
2690 p_timekeeper_data (l_table_counter).time_in_5 := l_detail_time_in;
2691 p_timekeeper_data (l_table_counter).time_out_5 := l_detail_time_out;
2692 END IF;
2693
2694 p_timekeeper_data (l_table_counter).detail_id_5 := l_detail_id;
2695 p_timekeeper_data (l_table_counter).detail_ovn_5 := l_detail_ovn;
2696 ELSIF ((l_timecard_start_time - l_add_index_day + 5) = l_detail_start_time) THEN
2697 IF ( p_timekeeper_data (l_table_counter).day_6 IS NULL
2698 AND p_timekeeper_data (l_table_counter).time_in_6 IS NULL
2699 AND p_timekeeper_data (l_table_counter).time_out_6 IS NULL
2700 ) THEN
2701 p_timekeeper_data (l_table_counter).day_6 := l_detail_measure;
2702 p_timekeeper_data (l_table_counter).time_in_6 := l_detail_time_in;
2703 p_timekeeper_data (l_table_counter).time_out_6 := l_detail_time_out;
2704 ELSE
2705 l_table_counter := l_table_counter + 1;
2706 p_timekeeper_data (l_table_counter).day_6 := l_detail_measure;
2707 p_timekeeper_data (l_table_counter).time_in_6 := l_detail_time_in;
2708 p_timekeeper_data (l_table_counter).time_out_6 := l_detail_time_out;
2709 END IF;
2710
2711 p_timekeeper_data (l_table_counter).detail_id_6 := l_detail_id;
2712 p_timekeeper_data (l_table_counter).detail_ovn_6 := l_detail_ovn;
2713 ELSIF ((l_timecard_start_time - l_add_index_day + 6) = l_detail_start_time) THEN
2714 IF ( p_timekeeper_data (l_table_counter).day_7 IS NULL
2715 AND p_timekeeper_data (l_table_counter).time_in_7 IS NULL
2716 AND p_timekeeper_data (l_table_counter).time_out_7 IS NULL
2717 ) THEN
2718 p_timekeeper_data (l_table_counter).day_7 := l_detail_measure;
2719 p_timekeeper_data (l_table_counter).time_in_7 := l_detail_time_in;
2720 p_timekeeper_data (l_table_counter).time_out_7 := l_detail_time_out;
2721 ELSE
2722 l_table_counter := l_table_counter + 1;
2723 p_timekeeper_data (l_table_counter).day_7 := l_detail_measure;
2724 p_timekeeper_data (l_table_counter).time_in_7 := l_detail_time_in;
2725 p_timekeeper_data (l_table_counter).time_out_7 := l_detail_time_out;
2726 END IF;
2727
2728 p_timekeeper_data (l_table_counter).detail_id_7 := l_detail_id;
2729 p_timekeeper_data (l_table_counter).detail_ovn_7 := l_detail_ovn;
2730 ELSIF ((l_timecard_start_time - l_add_index_day + 7) = l_detail_start_time) THEN
2731 IF ( p_timekeeper_data (l_table_counter).day_8 IS NULL
2732 AND p_timekeeper_data (l_table_counter).time_in_8 IS NULL
2733 AND p_timekeeper_data (l_table_counter).time_out_8 IS NULL
2734 ) THEN
2735 p_timekeeper_data (l_table_counter).day_8 := l_detail_measure;
2736 p_timekeeper_data (l_table_counter).time_in_8 := l_detail_time_in;
2737 p_timekeeper_data (l_table_counter).time_out_8 := l_detail_time_out;
2738 ELSE
2739 l_table_counter := l_table_counter + 1;
2740 p_timekeeper_data (l_table_counter).day_8 := l_detail_measure;
2741 p_timekeeper_data (l_table_counter).time_in_8 := l_detail_time_in;
2742 p_timekeeper_data (l_table_counter).time_out_8 := l_detail_time_out;
2743 END IF;
2744
2745 p_timekeeper_data (l_table_counter).detail_id_8 := l_detail_id;
2746 p_timekeeper_data (l_table_counter).detail_ovn_8 := l_detail_ovn;
2747 ELSIF ((l_timecard_start_time - l_add_index_day + 8) = l_detail_start_time) THEN
2748 IF ( p_timekeeper_data (l_table_counter).day_9 IS NULL
2749 AND p_timekeeper_data (l_table_counter).time_in_9 IS NULL
2750 AND p_timekeeper_data (l_table_counter).time_out_9 IS NULL
2751 ) THEN
2752 p_timekeeper_data (l_table_counter).day_9 := l_detail_measure;
2753 p_timekeeper_data (l_table_counter).time_in_9 := l_detail_time_in;
2754 p_timekeeper_data (l_table_counter).time_out_9 := l_detail_time_out;
2755 ELSE
2756 l_table_counter := l_table_counter + 1;
2757 p_timekeeper_data (l_table_counter).day_9 := l_detail_measure;
2758 p_timekeeper_data (l_table_counter).time_in_9 := l_detail_time_in;
2759 p_timekeeper_data (l_table_counter).time_out_9 := l_detail_time_out;
2760 END IF;
2761
2762 p_timekeeper_data (l_table_counter).detail_id_9 := l_detail_id;
2763 p_timekeeper_data (l_table_counter).detail_ovn_9 := l_detail_ovn;
2764 ELSIF ((l_timecard_start_time - l_add_index_day + 9) = l_detail_start_time) THEN
2765 IF ( p_timekeeper_data (l_table_counter).day_10 IS NULL
2766 AND p_timekeeper_data (l_table_counter).time_in_10 IS NULL
2767 AND p_timekeeper_data (l_table_counter).time_out_10 IS NULL
2768 ) THEN
2769 p_timekeeper_data (l_table_counter).day_10 := l_detail_measure;
2770 p_timekeeper_data (l_table_counter).time_in_10 := l_detail_time_in;
2771 p_timekeeper_data (l_table_counter).time_out_10 := l_detail_time_out;
2772 ELSE
2773 l_table_counter := l_table_counter + 1;
2774 p_timekeeper_data (l_table_counter).day_10 := l_detail_measure;
2775 p_timekeeper_data (l_table_counter).time_in_10 := l_detail_time_in;
2776 p_timekeeper_data (l_table_counter).time_out_10 := l_detail_time_out;
2777 END IF;
2778
2779 p_timekeeper_data (l_table_counter).detail_id_10 := l_detail_id;
2780 p_timekeeper_data (l_table_counter).detail_ovn_10 := l_detail_ovn;
2781 ELSIF ((l_timecard_start_time - l_add_index_day + 10) = l_detail_start_time) THEN
2782 IF ( p_timekeeper_data (l_table_counter).day_11 IS NULL
2783 AND p_timekeeper_data (l_table_counter).time_in_11 IS NULL
2784 AND p_timekeeper_data (l_table_counter).time_out_11 IS NULL
2785 ) THEN
2786 p_timekeeper_data (l_table_counter).day_11 := l_detail_measure;
2787 p_timekeeper_data (l_table_counter).time_in_11 := l_detail_time_in;
2788 p_timekeeper_data (l_table_counter).time_out_11 := l_detail_time_out;
2789 ELSE
2790 l_table_counter := l_table_counter + 1;
2791 p_timekeeper_data (l_table_counter).day_11 := l_detail_measure;
2792 p_timekeeper_data (l_table_counter).time_in_11 := l_detail_time_in;
2793 p_timekeeper_data (l_table_counter).time_out_11 := l_detail_time_out;
2794 END IF;
2795
2796 p_timekeeper_data (l_table_counter).detail_id_11 := l_detail_id;
2797 p_timekeeper_data (l_table_counter).detail_ovn_11 := l_detail_ovn;
2798 ELSIF ((l_timecard_start_time - l_add_index_day + 11) = l_detail_start_time) THEN
2799 IF ( p_timekeeper_data (l_table_counter).day_12 IS NULL
2800 AND p_timekeeper_data (l_table_counter).time_in_12 IS NULL
2801 AND p_timekeeper_data (l_table_counter).time_out_12 IS NULL
2802 ) THEN
2803 p_timekeeper_data (l_table_counter).day_12 := l_detail_measure;
2804 p_timekeeper_data (l_table_counter).time_in_12 := l_detail_time_in;
2805 p_timekeeper_data (l_table_counter).time_out_12 := l_detail_time_out;
2806 ELSE
2807 l_table_counter := l_table_counter + 1;
2808 p_timekeeper_data (l_table_counter).day_12 := l_detail_measure;
2809 p_timekeeper_data (l_table_counter).time_in_12 := l_detail_time_in;
2810 p_timekeeper_data (l_table_counter).time_out_12 := l_detail_time_out;
2811 END IF;
2812
2813 p_timekeeper_data (l_table_counter).detail_id_12 := l_detail_id;
2814 p_timekeeper_data (l_table_counter).detail_ovn_12 := l_detail_ovn;
2815 ELSIF ((l_timecard_start_time - l_add_index_day + 12) = l_detail_start_time) THEN
2816 IF ( p_timekeeper_data (l_table_counter).day_13 IS NULL
2817 AND p_timekeeper_data (l_table_counter).time_in_13 IS NULL
2818 AND p_timekeeper_data (l_table_counter).time_out_13 IS NULL
2819 ) THEN
2820 p_timekeeper_data (l_table_counter).day_13 := l_detail_measure;
2821 p_timekeeper_data (l_table_counter).time_in_13 := l_detail_time_in;
2822 p_timekeeper_data (l_table_counter).time_out_13 := l_detail_time_out;
2823 ELSE
2824 l_table_counter := l_table_counter + 1;
2825 p_timekeeper_data (l_table_counter).day_13 := l_detail_measure;
2826 p_timekeeper_data (l_table_counter).time_in_13 := l_detail_time_in;
2827 p_timekeeper_data (l_table_counter).time_out_13 := l_detail_time_out;
2828 END IF;
2829
2830 p_timekeeper_data (l_table_counter).detail_id_13 := l_detail_id;
2831 p_timekeeper_data (l_table_counter).detail_ovn_13 := l_detail_ovn;
2832 ELSIF ((l_timecard_start_time - l_add_index_day + 13) = l_detail_start_time) THEN
2833 IF ( p_timekeeper_data (l_table_counter).day_14 IS NULL
2834 AND p_timekeeper_data (l_table_counter).time_in_14 IS NULL
2835 AND p_timekeeper_data (l_table_counter).time_out_14 IS NULL
2836 ) THEN
2837 p_timekeeper_data (l_table_counter).day_14 := l_detail_measure;
2838 p_timekeeper_data (l_table_counter).time_in_14 := l_detail_time_in;
2839 p_timekeeper_data (l_table_counter).time_out_14 := l_detail_time_out;
2840 ELSE
2841 l_table_counter := l_table_counter + 1;
2842 p_timekeeper_data (l_table_counter).day_14 := l_detail_measure;
2843 p_timekeeper_data (l_table_counter).time_in_14 := l_detail_time_in;
2844 p_timekeeper_data (l_table_counter).time_out_14 := l_detail_time_out;
2845 END IF;
2846
2847 p_timekeeper_data (l_table_counter).detail_id_14 := l_detail_id;
2848 p_timekeeper_data (l_table_counter).detail_ovn_14 := l_detail_ovn;
2849 ELSIF ((l_timecard_start_time - l_add_index_day + 14) = l_detail_start_time) THEN
2850 IF ( p_timekeeper_data (l_table_counter).day_15 IS NULL
2851 AND p_timekeeper_data (l_table_counter).time_in_15 IS NULL
2852 AND p_timekeeper_data (l_table_counter).time_out_15 IS NULL
2853 ) THEN
2854 p_timekeeper_data (l_table_counter).day_15 := l_detail_measure;
2855 p_timekeeper_data (l_table_counter).time_in_15 := l_detail_time_in;
2856 p_timekeeper_data (l_table_counter).time_out_15 := l_detail_time_out;
2857 ELSE
2858 l_table_counter := l_table_counter + 1;
2859 p_timekeeper_data (l_table_counter).day_15 := l_detail_measure;
2860 p_timekeeper_data (l_table_counter).time_in_15 := l_detail_time_in;
2861 p_timekeeper_data (l_table_counter).time_out_15 := l_detail_time_out;
2862 END IF;
2863
2864 p_timekeeper_data (l_table_counter).detail_id_15 := l_detail_id;
2865 p_timekeeper_data (l_table_counter).detail_ovn_15 := l_detail_ovn;
2866 ELSIF ((l_timecard_start_time - l_add_index_day + 15) = l_detail_start_time) THEN
2867 IF ( p_timekeeper_data (l_table_counter).day_16 IS NULL
2868 AND p_timekeeper_data (l_table_counter).time_in_16 IS NULL
2869 AND p_timekeeper_data (l_table_counter).time_out_16 IS NULL
2870 ) THEN
2871 p_timekeeper_data (l_table_counter).day_16 := l_detail_measure;
2872 p_timekeeper_data (l_table_counter).time_in_16 := l_detail_time_in;
2873 p_timekeeper_data (l_table_counter).time_out_16 := l_detail_time_out;
2874 ELSE
2875 l_table_counter := l_table_counter + 1;
2876 p_timekeeper_data (l_table_counter).day_16 := l_detail_measure;
2877 p_timekeeper_data (l_table_counter).time_in_16 := l_detail_time_in;
2878 p_timekeeper_data (l_table_counter).time_out_16 := l_detail_time_out;
2879 END IF;
2880
2881 p_timekeeper_data (l_table_counter).detail_id_16 := l_detail_id;
2882 p_timekeeper_data (l_table_counter).detail_ovn_16 := l_detail_ovn;
2883 ELSIF ((l_timecard_start_time - l_add_index_day + 16) = l_detail_start_time) THEN
2884 IF ( p_timekeeper_data (l_table_counter).day_17 IS NULL
2885 AND p_timekeeper_data (l_table_counter).time_in_17 IS NULL
2886 AND p_timekeeper_data (l_table_counter).time_out_17 IS NULL
2887 ) THEN
2888 p_timekeeper_data (l_table_counter).day_17 := l_detail_measure;
2889 p_timekeeper_data (l_table_counter).time_in_17 := l_detail_time_in;
2890 p_timekeeper_data (l_table_counter).time_out_17 := l_detail_time_out;
2891 ELSE
2892 l_table_counter := l_table_counter + 1;
2893 p_timekeeper_data (l_table_counter).day_17 := l_detail_measure;
2894 p_timekeeper_data (l_table_counter).time_in_17 := l_detail_time_in;
2895 p_timekeeper_data (l_table_counter).time_out_17 := l_detail_time_out;
2896 END IF;
2897
2898 p_timekeeper_data (l_table_counter).detail_id_17 := l_detail_id;
2899 p_timekeeper_data (l_table_counter).detail_ovn_17 := l_detail_ovn;
2900 ELSIF ((l_timecard_start_time - l_add_index_day + 17) = l_detail_start_time) THEN
2901 IF ( p_timekeeper_data (l_table_counter).day_18 IS NULL
2902 AND p_timekeeper_data (l_table_counter).time_in_18 IS NULL
2903 AND p_timekeeper_data (l_table_counter).time_out_18 IS NULL
2904 ) THEN
2905 p_timekeeper_data (l_table_counter).day_18 := l_detail_measure;
2906 p_timekeeper_data (l_table_counter).time_in_18 := l_detail_time_in;
2907 p_timekeeper_data (l_table_counter).time_out_18 := l_detail_time_out;
2908 ELSE
2909 l_table_counter := l_table_counter + 1;
2910 p_timekeeper_data (l_table_counter).day_18 := l_detail_measure;
2911 p_timekeeper_data (l_table_counter).time_in_18 := l_detail_time_in;
2912 p_timekeeper_data (l_table_counter).time_out_18 := l_detail_time_out;
2913 END IF;
2914
2915 p_timekeeper_data (l_table_counter).detail_id_18 := l_detail_id;
2916 p_timekeeper_data (l_table_counter).detail_ovn_18 := l_detail_ovn;
2917 ELSIF ((l_timecard_start_time - l_add_index_day + 18) = l_detail_start_time) THEN
2918 IF ( p_timekeeper_data (l_table_counter).day_19 IS NULL
2919 AND p_timekeeper_data (l_table_counter).time_in_19 IS NULL
2920 AND p_timekeeper_data (l_table_counter).time_out_19 IS NULL
2921 ) THEN
2922 p_timekeeper_data (l_table_counter).day_19 := l_detail_measure;
2923 p_timekeeper_data (l_table_counter).time_in_19 := l_detail_time_in;
2924 p_timekeeper_data (l_table_counter).time_out_19 := l_detail_time_out;
2925 ELSE
2926 l_table_counter := l_table_counter + 1;
2927 p_timekeeper_data (l_table_counter).day_19 := l_detail_measure;
2928 p_timekeeper_data (l_table_counter).time_in_19 := l_detail_time_in;
2929 p_timekeeper_data (l_table_counter).time_out_19 := l_detail_time_out;
2930 END IF;
2931
2932 p_timekeeper_data (l_table_counter).detail_id_19 := l_detail_id;
2933 p_timekeeper_data (l_table_counter).detail_ovn_19 := l_detail_ovn;
2934 ELSIF ((l_timecard_start_time - l_add_index_day + 19) = l_detail_start_time) THEN
2935 IF ( p_timekeeper_data (l_table_counter).day_20 IS NULL
2936 AND p_timekeeper_data (l_table_counter).time_in_20 IS NULL
2937 AND p_timekeeper_data (l_table_counter).time_out_20 IS NULL
2938 ) THEN
2939 p_timekeeper_data (l_table_counter).day_20 := l_detail_measure;
2940 p_timekeeper_data (l_table_counter).time_in_20 := l_detail_time_in;
2941 p_timekeeper_data (l_table_counter).time_out_20 := l_detail_time_out;
2942 ELSE
2943 l_table_counter := l_table_counter + 1;
2944 p_timekeeper_data (l_table_counter).day_20 := l_detail_measure;
2945 p_timekeeper_data (l_table_counter).time_in_20 := l_detail_time_in;
2946 p_timekeeper_data (l_table_counter).time_out_20 := l_detail_time_out;
2947 END IF;
2948
2949 p_timekeeper_data (l_table_counter).detail_id_20 := l_detail_id;
2950 p_timekeeper_data (l_table_counter).detail_ovn_20 := l_detail_ovn;
2951 ELSIF ((l_timecard_start_time - l_add_index_day + 20) = l_detail_start_time) THEN
2952 IF ( p_timekeeper_data (l_table_counter).day_21 IS NULL
2953 AND p_timekeeper_data (l_table_counter).time_in_21 IS NULL
2954 AND p_timekeeper_data (l_table_counter).time_out_21 IS NULL
2955 ) THEN
2956 p_timekeeper_data (l_table_counter).day_21 := l_detail_measure;
2957 p_timekeeper_data (l_table_counter).time_in_21 := l_detail_time_in;
2958 p_timekeeper_data (l_table_counter).time_out_21 := l_detail_time_out;
2959 ELSE
2960 l_table_counter := l_table_counter + 1;
2961 p_timekeeper_data (l_table_counter).day_21 := l_detail_measure;
2962 p_timekeeper_data (l_table_counter).time_in_21 := l_detail_time_in;
2963 p_timekeeper_data (l_table_counter).time_out_21 := l_detail_time_out;
2964 END IF;
2965
2966 p_timekeeper_data (l_table_counter).detail_id_21 := l_detail_id;
2967 p_timekeeper_data (l_table_counter).detail_ovn_21 := l_detail_ovn;
2968 ELSIF ((l_timecard_start_time - l_add_index_day + 21) = l_detail_start_time) THEN
2969 IF ( p_timekeeper_data (l_table_counter).day_22 IS NULL
2970 AND p_timekeeper_data (l_table_counter).time_in_22 IS NULL
2971 AND p_timekeeper_data (l_table_counter).time_out_22 IS NULL
2972 ) THEN
2973 p_timekeeper_data (l_table_counter).day_22 := l_detail_measure;
2974 p_timekeeper_data (l_table_counter).time_in_22 := l_detail_time_in;
2975 p_timekeeper_data (l_table_counter).time_out_22 := l_detail_time_out;
2976 ELSE
2977 l_table_counter := l_table_counter + 1;
2978 p_timekeeper_data (l_table_counter).day_22 := l_detail_measure;
2979 p_timekeeper_data (l_table_counter).time_in_22 := l_detail_time_in;
2980 p_timekeeper_data (l_table_counter).time_out_22 := l_detail_time_out;
2981 END IF;
2982
2983 p_timekeeper_data (l_table_counter).detail_id_22 := l_detail_id;
2984 p_timekeeper_data (l_table_counter).detail_ovn_22 := l_detail_ovn;
2985 ELSIF ((l_timecard_start_time - l_add_index_day + 22) = l_detail_start_time) THEN
2986 IF ( p_timekeeper_data (l_table_counter).day_23 IS NULL
2987 AND p_timekeeper_data (l_table_counter).time_in_23 IS NULL
2988 AND p_timekeeper_data (l_table_counter).time_out_23 IS NULL
2989 ) THEN
2990 p_timekeeper_data (l_table_counter).day_23 := l_detail_measure;
2991 p_timekeeper_data (l_table_counter).time_in_23 := l_detail_time_in;
2992 p_timekeeper_data (l_table_counter).time_out_23 := l_detail_time_out;
2993 ELSE
2994 l_table_counter := l_table_counter + 1;
2995 p_timekeeper_data (l_table_counter).day_23 := l_detail_measure;
2996 p_timekeeper_data (l_table_counter).time_in_23 := l_detail_time_in;
2997 p_timekeeper_data (l_table_counter).time_out_23 := l_detail_time_out;
2998 END IF;
2999
3000 p_timekeeper_data (l_table_counter).detail_id_23 := l_detail_id;
3001 p_timekeeper_data (l_table_counter).detail_ovn_23 := l_detail_ovn;
3002 ELSIF ((l_timecard_start_time - l_add_index_day + 23) = l_detail_start_time) THEN
3003 IF ( p_timekeeper_data (l_table_counter).day_24 IS NULL
3004 AND p_timekeeper_data (l_table_counter).time_in_24 IS NULL
3005 AND p_timekeeper_data (l_table_counter).time_out_24 IS NULL
3006 ) THEN
3007 p_timekeeper_data (l_table_counter).day_24 := l_detail_measure;
3008 p_timekeeper_data (l_table_counter).time_in_24 := l_detail_time_in;
3009 p_timekeeper_data (l_table_counter).time_out_24 := l_detail_time_out;
3010 ELSE
3011 l_table_counter := l_table_counter + 1;
3012 p_timekeeper_data (l_table_counter).day_24 := l_detail_measure;
3013 p_timekeeper_data (l_table_counter).time_in_24 := l_detail_time_in;
3014 p_timekeeper_data (l_table_counter).time_out_24 := l_detail_time_out;
3015 END IF;
3016
3017 p_timekeeper_data (l_table_counter).detail_id_24 := l_detail_id;
3018 p_timekeeper_data (l_table_counter).detail_ovn_24 := l_detail_ovn;
3019 ELSIF ((l_timecard_start_time - l_add_index_day + 24) = l_detail_start_time) THEN
3020 IF ( p_timekeeper_data (l_table_counter).day_25 IS NULL
3021 AND p_timekeeper_data (l_table_counter).time_in_25 IS NULL
3022 AND p_timekeeper_data (l_table_counter).time_out_25 IS NULL
3023 ) THEN
3024 p_timekeeper_data (l_table_counter).day_25 := l_detail_measure;
3025 p_timekeeper_data (l_table_counter).time_in_25 := l_detail_time_in;
3026 p_timekeeper_data (l_table_counter).time_out_25 := l_detail_time_out;
3027 ELSE
3028 l_table_counter := l_table_counter + 1;
3029 p_timekeeper_data (l_table_counter).day_25 := l_detail_measure;
3030 p_timekeeper_data (l_table_counter).time_in_25 := l_detail_time_in;
3031 p_timekeeper_data (l_table_counter).time_out_25 := l_detail_time_out;
3032 END IF;
3033
3034 p_timekeeper_data (l_table_counter).detail_id_25 := l_detail_id;
3035 p_timekeeper_data (l_table_counter).detail_ovn_25 := l_detail_ovn;
3036 ELSIF ((l_timecard_start_time - l_add_index_day + 25) = l_detail_start_time) THEN
3037 IF ( p_timekeeper_data (l_table_counter).day_26 IS NULL
3038 AND p_timekeeper_data (l_table_counter).time_in_26 IS NULL
3039 AND p_timekeeper_data (l_table_counter).time_out_26 IS NULL
3040 ) THEN
3041 p_timekeeper_data (l_table_counter).day_26 := l_detail_measure;
3042 p_timekeeper_data (l_table_counter).time_in_26 := l_detail_time_in;
3043 p_timekeeper_data (l_table_counter).time_out_26 := l_detail_time_out;
3044 ELSE
3045 l_table_counter := l_table_counter + 1;
3046 p_timekeeper_data (l_table_counter).day_26 := l_detail_measure;
3047 p_timekeeper_data (l_table_counter).time_in_26 := l_detail_time_in;
3048 p_timekeeper_data (l_table_counter).time_out_26 := l_detail_time_out;
3049 END IF;
3050
3051 p_timekeeper_data (l_table_counter).detail_id_26 := l_detail_id;
3052 p_timekeeper_data (l_table_counter).detail_ovn_26 := l_detail_ovn;
3053 ELSIF ((l_timecard_start_time - l_add_index_day + 26) = l_detail_start_time) THEN
3054 IF ( p_timekeeper_data (l_table_counter).day_27 IS NULL
3055 AND p_timekeeper_data (l_table_counter).time_in_27 IS NULL
3056 AND p_timekeeper_data (l_table_counter).time_out_27 IS NULL
3057 ) THEN
3058 p_timekeeper_data (l_table_counter).day_27 := l_detail_measure;
3059 p_timekeeper_data (l_table_counter).time_in_27 := l_detail_time_in;
3060 p_timekeeper_data (l_table_counter).time_out_27 := l_detail_time_out;
3061 ELSE
3062 l_table_counter := l_table_counter + 1;
3063 p_timekeeper_data (l_table_counter).day_27 := l_detail_measure;
3064 p_timekeeper_data (l_table_counter).time_in_27 := l_detail_time_in;
3065 p_timekeeper_data (l_table_counter).time_out_27 := l_detail_time_out;
3066 END IF;
3067
3068 p_timekeeper_data (l_table_counter).detail_id_27 := l_detail_id;
3069 p_timekeeper_data (l_table_counter).detail_ovn_27 := l_detail_ovn;
3070 ELSIF ((l_timecard_start_time - l_add_index_day + 27) = l_detail_start_time) THEN
3071 IF ( p_timekeeper_data (l_table_counter).day_28 IS NULL
3072 AND p_timekeeper_data (l_table_counter).time_in_28 IS NULL
3073 AND p_timekeeper_data (l_table_counter).time_out_28 IS NULL
3074 ) THEN
3075 p_timekeeper_data (l_table_counter).day_28 := l_detail_measure;
3076 p_timekeeper_data (l_table_counter).time_in_28 := l_detail_time_in;
3077 p_timekeeper_data (l_table_counter).time_out_28 := l_detail_time_out;
3078 ELSE
3079 l_table_counter := l_table_counter + 1;
3080 p_timekeeper_data (l_table_counter).day_28 := l_detail_measure;
3081 p_timekeeper_data (l_table_counter).time_in_28 := l_detail_time_in;
3082 p_timekeeper_data (l_table_counter).time_out_28 := l_detail_time_out;
3083 END IF;
3084
3085 p_timekeeper_data (l_table_counter).detail_id_28 := l_detail_id;
3086 p_timekeeper_data (l_table_counter).detail_ovn_28 := l_detail_ovn;
3087 ELSIF ((l_timecard_start_time - l_add_index_day + 28) = l_detail_start_time) THEN
3088 IF ( p_timekeeper_data (l_table_counter).day_29 IS NULL
3089 AND p_timekeeper_data (l_table_counter).time_in_29 IS NULL
3090 AND p_timekeeper_data (l_table_counter).time_out_29 IS NULL
3091 ) THEN
3092 p_timekeeper_data (l_table_counter).day_29 := l_detail_measure;
3093 p_timekeeper_data (l_table_counter).time_in_29 := l_detail_time_in;
3094 p_timekeeper_data (l_table_counter).time_out_29 := l_detail_time_out;
3095 ELSE
3096 l_table_counter := l_table_counter + 1;
3097 p_timekeeper_data (l_table_counter).day_29 := l_detail_measure;
3098 p_timekeeper_data (l_table_counter).time_in_29 := l_detail_time_in;
3099 p_timekeeper_data (l_table_counter).time_out_29 := l_detail_time_out;
3100 END IF;
3101
3102 p_timekeeper_data (l_table_counter).detail_id_29 := l_detail_id;
3103 p_timekeeper_data (l_table_counter).detail_ovn_29 := l_detail_ovn;
3104 ELSIF ((l_timecard_start_time - l_add_index_day + 29) = l_detail_start_time) THEN
3105 IF ( p_timekeeper_data (l_table_counter).day_30 IS NULL
3106 AND p_timekeeper_data (l_table_counter).time_in_30 IS NULL
3107 AND p_timekeeper_data (l_table_counter).time_out_30 IS NULL
3108 ) THEN
3109 p_timekeeper_data (l_table_counter).day_30 := l_detail_measure;
3110 p_timekeeper_data (l_table_counter).time_in_30 := l_detail_time_in;
3111 p_timekeeper_data (l_table_counter).time_out_30 := l_detail_time_out;
3112 ELSE
3113 l_table_counter := l_table_counter + 1;
3114 p_timekeeper_data (l_table_counter).day_30 := l_detail_measure;
3115 p_timekeeper_data (l_table_counter).time_in_30 := l_detail_time_in;
3116 p_timekeeper_data (l_table_counter).time_out_30 := l_detail_time_out;
3117 END IF;
3118
3119 p_timekeeper_data (l_table_counter).detail_id_30 := l_detail_id;
3120 p_timekeeper_data (l_table_counter).detail_ovn_30 := l_detail_ovn;
3121 ELSIF ((l_timecard_start_time - l_add_index_day + 30) = l_detail_start_time) THEN
3122 IF ( p_timekeeper_data (l_table_counter).day_31 IS NULL
3123 AND p_timekeeper_data (l_table_counter).time_in_31 IS NULL
3124 AND p_timekeeper_data (l_table_counter).time_out_31 IS NULL
3125 ) THEN
3126 p_timekeeper_data (l_table_counter).day_31 := l_detail_measure;
3127 p_timekeeper_data (l_table_counter).time_in_31 := l_detail_time_in;
3128 p_timekeeper_data (l_table_counter).time_out_31 := l_detail_time_out;
3129 ELSE
3130 l_table_counter := l_table_counter + 1;
3131 p_timekeeper_data (l_table_counter).day_31 := l_detail_measure;
3132 p_timekeeper_data (l_table_counter).time_in_31 := l_detail_time_in;
3133 p_timekeeper_data (l_table_counter).time_out_31 := l_detail_time_out;
3134 END IF;
3135
3136 p_timekeeper_data (l_table_counter).detail_id_31 := l_detail_id;
3137 p_timekeeper_data (l_table_counter).detail_ovn_31 := l_detail_ovn;
3138 END IF;
3139
3140 p_timekeeper_data (l_table_counter).timecard_status_code := l_status_code;
3141 p_timekeeper_data (l_table_counter).timecard_status := l_timecard_status_meaning;
3142 p_timekeeper_data (l_table_counter).timecard_message_code := l_timecard_message_code;
3143 p_timekeeper_data (l_table_counter).timecard_message := l_timecard_message;
3144 p_timekeeper_data (l_table_counter).comment_text := l_timecard_comment_text;
3145 p_timekeeper_data (l_table_counter).timecard_start_period := tc_start;
3146 p_timekeeper_data (l_table_counter).timecard_end_period := tc_end;
3147
3148 IF p_reqryflg = 'N' THEN
3149 p_timekeeper_data (l_table_counter).check_box := 'Y';
3150 g_submit_table (resource_info.person_id).resource_id := resource_info.person_id;
3151 g_submit_table (resource_info.person_id).timecard_id := l_timecard_id;
3152 g_submit_table (resource_info.person_id).start_time := tc_start;
3153 g_submit_table (resource_info.person_id).stop_time := tc_end;
3154 g_submit_table (resource_info.person_id).row_lock_id := l_row_lock_id;
3155 g_submit_table (resource_info.person_id).no_rows :=
3156 NVL (g_submit_table (resource_info.person_id).no_rows, 0) + 1;
3157 ELSE
3158 p_timekeeper_data (l_table_counter).check_box := 'N';
3159 g_submit_table.DELETE (resource_info.person_id);
3160 END IF;
3161
3162 p_timekeeper_data (l_table_counter).timecard_id := l_timecard_id;
3163 p_timekeeper_data (l_table_counter).timecard_ovn := l_timecard_ovn;
3164 p_timekeeper_data (l_table_counter).resource_id := resource_info.person_id;
3165 p_timekeeper_data (l_table_counter).employee_number := resource_info.employee_number;
3166 p_timekeeper_data (l_table_counter).audit_enabled := l_audit_enabled;
3167 -- Bug 10231662
3168 --p_timekeeper_data (l_table_counter).person_type := resource_info.person_type;
3169 p_timekeeper_data (l_table_counter).person_type := l_user_person_type;
3170
3171 p_timekeeper_data (l_table_counter).employee_full_name := resource_info.full_name;
3172 p_timekeeper_data (l_table_counter).row_lock_id := l_row_lock_id;
3173 p_timekeeper_data (l_table_counter).tc_lock_success := l_tc_lock_success;
3174 l_detail_index := l_detail_info_table.NEXT (l_detail_index);
3175 END LOOP;
3176 /*ADVICE(3044): Nested LOOPs should all be labeled [406] */
3177
3178 END IF;
3179 if g_debug then
3180 hr_utility.TRACE ('103--end of second type');
3181 end if;
3182 END IF;
3183 -- handle the case that the resource does not have a timecard
3184 --IF (l_found_timecard = false) THEN
3185 ELSIF ( p_status_code IS NULL
3186 AND p_message_type IS NULL
3187 AND p_message_text IS NULL
3188 AND p_change_reason IS NULL
3189 AND p_late_reason IS NULL
3190 AND p_audit_history IS NULL
3191 AND ( p_attribute1 IS NULL
3192 AND p_attribute2 IS NULL
3193 AND p_attribute3 IS NULL
3194 AND p_attribute4 IS NULL
3195 AND p_attribute5 IS NULL
3196 AND p_attribute6 IS NULL
3197 AND p_attribute7 IS NULL
3198 AND p_attribute8 IS NULL
3199 AND p_attribute9 IS NULL
3200 AND p_attribute10 IS NULL
3201 AND p_attribute11 IS NULL
3202 AND p_attribute12 IS NULL
3203 AND p_attribute13 IS NULL
3204 AND p_attribute14 IS NULL
3205 AND p_attribute15 IS NULL
3206 AND p_attribute16 IS NULL
3207 AND p_attribute17 IS NULL
3208 AND p_attribute18 IS NULL
3209 AND p_attribute19 IS NULL
3210 AND p_attribute20 IS NULL
3211 )
3212 ) THEN
3213 if g_debug then
3214 hr_utility.TRACE('104--three- no record so create blank record');
3215 hr_utility.TRACE ('no records');
3216 end if;
3217 BEGIN
3218 --l_rec_periodid := hxc_preference_evaluation.resource_preferences(resource_info.person_id,'TC_W_TCRD_PERIOD',1,SYSDATE);
3219 l_rec_periodid := l_emp_recpref;
3220 EXCEPTION
3221 WHEN OTHERS THEN
3222 l_rec_periodid := 0;
3223 /*ADVICE(3089): A WHEN OTHERS clause is used in the exception section without any other specific handlers
3224 [201] */
3225
3226 END;
3227
3228 l_audit_query := FALSE;
3229 if g_debug then
3230 hr_utility.TRACE ('l_audit_enabled'|| l_audit_enabled);
3231 hr_utility.TRACE ('p_audit_enabled'|| p_audit_enabled);
3232 end if;
3233 IF ( (l_audit_enabled IS NOT NULL AND p_audit_enabled = 'Y')
3234 OR (l_audit_enabled IS NULL AND p_audit_enabled = 'N')
3235 OR p_audit_enabled IS NULL
3236 ) THEN
3237 l_audit_query := TRUE;
3238 END IF;
3239
3240 ---add a blank row only when recurring period matches period selected.
3241
3242 IF emp_qry_tc_info.COUNT > 1 THEN
3243 NULL; ---for mid period employee even if one timecard is found i
3244 /*ADVICE(3109): Use of NULL statements [532] */
3245
3246 ---in that period do not add an addtional blank row.
3247 ELSE
3248 IF NVL (l_rec_periodid, '-999') = NVL (p_rec_periodid, '-999') AND l_audit_query THEN
3249 --now we lock the timecard
3250 IF p_reqryflg = 'N' AND p_lock_profile = 'Y' THEN
3251 --lock only when user does fresh find
3252
3253 l_row_id := NULL;
3254 l_row_lock_id := NULL;
3255 l_tc_lock_success := 'FALSE';
3256 hxc_lock_api.request_lock (
3257 p_process_locker_type => l_process_lock_type,
3258 p_resource_id => resource_info.person_id,
3259 p_start_time => p_start_period,
3260 p_stop_time => p_end_period + g_one_day,
3261 p_time_building_block_id => NULL,
3262 p_time_building_block_ovn => NULL,
3263 p_transaction_lock_id => l_lock_trx_id,
3264 p_messages => l_messages,
3265 p_row_lock_id => l_row_id,
3266 p_locked_success => l_tc_lock_boolean
3267 );
3268 l_row_lock_id := ROWIDTOCHAR (l_row_id);
3269
3270 IF l_tc_lock_boolean THEN
3271 l_tc_lock_success := 'TRUE';
3272 g_lock_table (resource_info.person_id).row_lock_id := l_row_id;
3273 g_lock_table (resource_info.person_id).resource_id := resource_info.person_id;
3274 g_lock_table (resource_info.person_id).timecard_id := NULL;
3275 g_lock_table (resource_info.person_id).start_time := p_start_period;
3276 g_lock_table (resource_info.person_id).stop_time := p_end_period + g_one_day;
3277 ELSE
3278 l_tc_lock_success := 'FALSE';
3279 END IF; --lock
3280 --nitin check
3281 -- l_resource_tc_table (resource_info.person_id).lockid:=l_row_lock_id;
3282 ELSE --lock prof
3283 IF l_row_lock_id IS NOT NULL THEN
3284 l_tc_lock_success := 'TRUE';
3285 ELSE
3286 l_tc_lock_success := 'FALSE';
3287 END IF;
3288 END IF;
3289
3290 if g_debug then
3291 hr_utility.TRACE ('adding entry');
3292 end if;
3293
3294 /* Added for bug 8775740 HR OTL Absence Integration.
3295
3296 Main call to populate the p_timekeeper_data with the prepopulated
3297 absences. This call is governed with the profiles and the pref checks.
3298
3299 */
3300
3301 -- Change Start
3302
3303 -- Fresh timecard Start
3304
3305 BEGIN
3306
3307 if l_row_lock_id is not null then
3308
3309
3310 l_pref_date:= hxc_timekeeper_utilities.get_pref_eval_date( p_resource_id => resource_info.person_id,
3311 p_tc_start_date => p_start_period,
3312 p_tc_end_date => p_end_period );
3313
3314
3315 hxc_preference_evaluation.resource_preferences
3316 (p_resource_id => resource_info.person_id,
3317 p_start_evaluation_date => l_pref_date,
3318 p_end_evaluation_date => l_pref_date,
3319 p_pref_table => l_pref_table);
3320
3321 l_pref_index := l_pref_table.FIRST;
3322 LOOP
3323 IF l_pref_table(l_pref_index).preference_code = 'TS_ABS_PREFERENCES'
3324 THEN
3325 g_resource_abs_enabled := l_pref_table(l_pref_index).attribute1;
3326 EXIT;
3327 END IF;
3328 l_pref_index := l_pref_table.NEXT(l_pref_index);
3329 EXIT WHEN NOT l_pref_table.EXISTS(l_pref_index);
3330 END LOOP;
3331
3332 if ((g_resource_abs_enabled is null or g_resource_abs_enabled <> 'Y') OR
3333 (g_abs_intg_profile_set <> 'Y') )then
3334
3335 g_resource_abs_enabled:= 'N';
3336 else
3337 g_resource_abs_enabled:= 'Y';
3338 end if;
3339
3340
3341 if (g_resource_abs_enabled='Y' and
3342 p_reqryflg<>'Y' ) then
3343
3344
3345 -- Added for bug 8916345
3346 -- getting the hire/terminate info
3347
3348 if p_start_period < l_emp_start_date THEN
3349 l_abs_tc_start:= l_emp_start_date;
3350 else
3351 l_abs_tc_start:= p_start_period;
3352 end if;
3353
3354 if p_end_period > nvl(l_emp_terminate_date, p_end_period) then
3355 l_abs_tc_end:= l_emp_terminate_date;
3356 else
3357 l_abs_tc_end:= p_end_period;
3358 end if;
3359
3360
3361
3362
3363 if g_debug then
3364 hr_utility.trace('SVG ENTERING goin to call absence');
3365 end if;
3366
3367 if g_debug then
3368 hr_utility.trace('l_row_lock_id = '||ROWIDTOCHAR(l_row_lock_id));
3369 hr_utility.trace('p_timekeeper_id = '||p_timekeeper_id);
3370 hr_utility.trace('p_start_period = '||l_abs_tc_start);
3371 hr_utility.trace('p_end_period = '||l_abs_tc_end);
3372 hr_utility.trace('p_tc_start = '|| p_start_period);
3373 hr_utility.trace('p_tc_end = '|| p_end_period);
3374 end if;
3375
3376 hxc_timekeeper_utilities.PRE_POPULATE_ABSENCE_DETAILS
3377 (p_timekeeper_id => p_timekeeper_id ,
3378 p_start_period => l_abs_tc_start ,
3379 p_end_period => l_abs_tc_end + g_one_day ,
3380 p_tc_start => p_start_period,
3381 p_tc_end => p_end_period,
3382 p_resource_id => resource_info.person_id ,
3383 p_lock_row_id => l_row_lock_id,
3384 p_tk_abs_tab => t_tk_abs_tab);
3385
3386 g_resource_prepop_count:= g_resource_prepop_count + 1;
3387
3388 if g_debug then
3389 hr_utility.trace('SVG ENTERING coming out of call absence');
3390 end if;
3391
3392 end if; -- g_resource_abs_enabled
3393
3394
3395 if g_debug then
3396
3397 hr_utility.trace('SVG printing t_tk_abs_tab table');
3398 hr_utility.trace('------------------------------');
3399
3400 IF t_tk_abs_tab.count>0 THEN
3401
3402 FOR prepop_count IN t_tk_abs_tab.FIRST .. t_tk_abs_tab.LAST
3403 LOOP
3404
3405 hr_utility.trace('attr_id_1 = '|| t_tk_abs_tab(prepop_count).attr_id_1 );
3406 hr_utility.trace('attr_id_2 = '|| t_tk_abs_tab(prepop_count).attr_id_2 );
3407 hr_utility.trace('attr_id_3 = '|| t_tk_abs_tab(prepop_count).attr_id_3 );
3408 hr_utility.trace('attr_id_4 = '|| t_tk_abs_tab(prepop_count).attr_id_4 );
3409 hr_utility.trace('attr_id_5 = '|| t_tk_abs_tab(prepop_count).attr_id_5 );
3410 hr_utility.trace('attr_id_6 = '|| t_tk_abs_tab(prepop_count).attr_id_6 );
3411 hr_utility.trace('attr_id_7 = '|| t_tk_abs_tab(prepop_count).attr_id_7 );
3412 hr_utility.trace('attr_id_8 = '|| t_tk_abs_tab(prepop_count).attr_id_8 );
3413 hr_utility.trace('attr_id_9 = '|| t_tk_abs_tab(prepop_count).attr_id_9 );
3414 hr_utility.trace('attr_id_10 = '|| t_tk_abs_tab(prepop_count).attr_id_10 );
3415 hr_utility.trace('attr_id_11 = '|| t_tk_abs_tab(prepop_count).attr_id_11 );
3416 hr_utility.trace('attr_id_12 = '|| t_tk_abs_tab(prepop_count).attr_id_12 );
3417 hr_utility.trace('attr_id_13 = '|| t_tk_abs_tab(prepop_count).attr_id_13 );
3418 hr_utility.trace('attr_id_14 = '|| t_tk_abs_tab(prepop_count).attr_id_14 );
3419 hr_utility.trace('attr_id_15 = '|| t_tk_abs_tab(prepop_count).attr_id_15 );
3420 hr_utility.trace('attr_id_16 = '|| t_tk_abs_tab(prepop_count).attr_id_16 );
3421 hr_utility.trace('attr_id_17 = '|| t_tk_abs_tab(prepop_count).attr_id_17 );
3422 hr_utility.trace('attr_id_18 = '|| t_tk_abs_tab(prepop_count).attr_id_18 );
3423 hr_utility.trace('attr_id_19 = '|| t_tk_abs_tab(prepop_count).attr_id_19 );
3424 hr_utility.trace('attr_id_20 = '|| t_tk_abs_tab(prepop_count).attr_id_20 );
3425 hr_utility.trace('day_1 = '|| t_tk_abs_tab(prepop_count).day_1 );
3426 hr_utility.trace('day_2 = '|| t_tk_abs_tab(prepop_count).day_2 );
3427 hr_utility.trace('day_3 = '|| t_tk_abs_tab(prepop_count).day_3 );
3428 hr_utility.trace('day_4 = '|| t_tk_abs_tab(prepop_count).day_4 );
3429 hr_utility.trace('day_5 = '|| t_tk_abs_tab(prepop_count).day_5 );
3430 hr_utility.trace('day_6 = '|| t_tk_abs_tab(prepop_count).day_6 );
3431 hr_utility.trace('day_7 = '|| t_tk_abs_tab(prepop_count).day_7 );
3432 hr_utility.trace('day_8 = '|| t_tk_abs_tab(prepop_count).day_8 );
3433 hr_utility.trace('day_9 = '|| t_tk_abs_tab(prepop_count).day_9 );
3434 hr_utility.trace('day_10 = '|| t_tk_abs_tab(prepop_count).day_10 );
3435 hr_utility.trace('day_11 = '|| t_tk_abs_tab(prepop_count).day_11 );
3436 hr_utility.trace('day_12 = '|| t_tk_abs_tab(prepop_count).day_12 );
3437 hr_utility.trace('day_13 = '|| t_tk_abs_tab(prepop_count).day_13 );
3438 hr_utility.trace('day_14 = '|| t_tk_abs_tab(prepop_count).day_14 );
3439 hr_utility.trace('day_15 = '|| t_tk_abs_tab(prepop_count).day_15 );
3440 hr_utility.trace('day_16 = '|| t_tk_abs_tab(prepop_count).day_16 );
3441 hr_utility.trace('day_17 = '|| t_tk_abs_tab(prepop_count).day_17 );
3442 hr_utility.trace('day_18 = '|| t_tk_abs_tab(prepop_count).day_18 );
3443 hr_utility.trace('day_19 = '|| t_tk_abs_tab(prepop_count).day_19 );
3444 hr_utility.trace('day_20 = '|| t_tk_abs_tab(prepop_count).day_20 );
3445 hr_utility.trace('day_21 = '|| t_tk_abs_tab(prepop_count).day_21 );
3446 hr_utility.trace('day_22 = '|| t_tk_abs_tab(prepop_count).day_22 );
3447 hr_utility.trace('day_23 = '|| t_tk_abs_tab(prepop_count).day_23 );
3448 hr_utility.trace('day_24 = '|| t_tk_abs_tab(prepop_count).day_24 );
3449 hr_utility.trace('day_25 = '|| t_tk_abs_tab(prepop_count).day_25 );
3450 hr_utility.trace('day_26 = '|| t_tk_abs_tab(prepop_count).day_26 );
3451 hr_utility.trace('day_27 = '|| t_tk_abs_tab(prepop_count).day_27 );
3452 hr_utility.trace('day_28 = '|| t_tk_abs_tab(prepop_count).day_28 );
3453 hr_utility.trace('day_29 = '|| t_tk_abs_tab(prepop_count).day_29 );
3454 hr_utility.trace('day_30 = '|| t_tk_abs_tab(prepop_count).day_30 );
3455 hr_utility.trace('day_31 = '|| t_tk_abs_tab(prepop_count).day_31 );
3456 hr_utility.trace('time_in_1 = '|| t_tk_abs_tab(prepop_count).time_in_1 );
3457 hr_utility.trace('time_out_1 = '|| t_tk_abs_tab(prepop_count).time_out_1 );
3458 hr_utility.trace('time_in_2 = '|| t_tk_abs_tab(prepop_count).time_in_2 );
3459 hr_utility.trace('time_out_2 = '|| t_tk_abs_tab(prepop_count).time_out_2 );
3460 hr_utility.trace('time_in_3 = '|| t_tk_abs_tab(prepop_count).time_in_3 );
3461 hr_utility.trace('time_out_3 = '|| t_tk_abs_tab(prepop_count).time_out_3 );
3462 hr_utility.trace('time_in_4 = '|| t_tk_abs_tab(prepop_count).time_in_4 );
3463 hr_utility.trace('time_out_4 = '|| t_tk_abs_tab(prepop_count).time_out_4 );
3464 hr_utility.trace('time_in_5 = '|| t_tk_abs_tab(prepop_count).time_in_5 );
3465 hr_utility.trace('time_out_5 = '|| t_tk_abs_tab(prepop_count).time_out_5 );
3466 hr_utility.trace('time_in_6 = '|| t_tk_abs_tab(prepop_count).time_in_6 );
3467 hr_utility.trace('time_out_6 = '|| t_tk_abs_tab(prepop_count).time_out_6 );
3468 hr_utility.trace('time_in_7 = '|| t_tk_abs_tab(prepop_count).time_in_7 );
3469 hr_utility.trace('time_out_7 = '|| t_tk_abs_tab(prepop_count).time_out_7 );
3470 hr_utility.trace('time_in_8 = '|| t_tk_abs_tab(prepop_count).time_in_8 );
3471 hr_utility.trace('time_out_8 = '|| t_tk_abs_tab(prepop_count).time_out_8 );
3472 hr_utility.trace('time_in_9 = '|| t_tk_abs_tab(prepop_count).time_in_9 );
3473 hr_utility.trace('time_out_9 = '|| t_tk_abs_tab(prepop_count).time_out_9 );
3474 hr_utility.trace('time_in_10 = '|| t_tk_abs_tab(prepop_count).time_in_10 );
3475 hr_utility.trace('time_out_10 = '|| t_tk_abs_tab(prepop_count).time_out_10 );
3476 hr_utility.trace('time_in_11 = '|| t_tk_abs_tab(prepop_count).time_in_11 );
3477 hr_utility.trace('time_out_11 = '|| t_tk_abs_tab(prepop_count).time_out_11 );
3478 hr_utility.trace('time_in_12 = '|| t_tk_abs_tab(prepop_count).time_in_12 );
3479 hr_utility.trace('time_out_12 = '|| t_tk_abs_tab(prepop_count).time_out_12 );
3480 hr_utility.trace('time_in_13 = '|| t_tk_abs_tab(prepop_count).time_in_13 );
3481 hr_utility.trace('time_out_13 = '|| t_tk_abs_tab(prepop_count).time_out_13 );
3482 hr_utility.trace('time_in_14 = '|| t_tk_abs_tab(prepop_count).time_in_14 );
3483 hr_utility.trace('time_out_14 = '|| t_tk_abs_tab(prepop_count).time_out_14 );
3484 hr_utility.trace('time_in_15 = '|| t_tk_abs_tab(prepop_count).time_in_15 );
3485 hr_utility.trace('time_out_15 = '|| t_tk_abs_tab(prepop_count).time_out_15 );
3486 hr_utility.trace('time_in_16 = '|| t_tk_abs_tab(prepop_count).time_in_16 );
3487 hr_utility.trace('time_out_16 = '|| t_tk_abs_tab(prepop_count).time_out_16 );
3488 hr_utility.trace('time_in_17 = '|| t_tk_abs_tab(prepop_count).time_in_17 );
3489 hr_utility.trace('time_out_17 = '|| t_tk_abs_tab(prepop_count).time_out_17 );
3490 hr_utility.trace('time_in_18 = '|| t_tk_abs_tab(prepop_count).time_in_18 );
3491 hr_utility.trace('time_out_18 = '|| t_tk_abs_tab(prepop_count).time_out_18 );
3492 hr_utility.trace('time_in_19 = '|| t_tk_abs_tab(prepop_count).time_in_19 );
3493 hr_utility.trace('time_out_19 = '|| t_tk_abs_tab(prepop_count).time_out_19 );
3494 hr_utility.trace('time_in_20 = '|| t_tk_abs_tab(prepop_count).time_in_20 );
3495 hr_utility.trace('time_out_20 = '|| t_tk_abs_tab(prepop_count).time_out_20 );
3496 hr_utility.trace('time_in_21 = '|| t_tk_abs_tab(prepop_count).time_in_21 );
3497 hr_utility.trace('time_out_21 = '|| t_tk_abs_tab(prepop_count).time_out_21 );
3498 hr_utility.trace('time_in_22 = '|| t_tk_abs_tab(prepop_count).time_in_22 );
3499 hr_utility.trace('time_out_22 = '|| t_tk_abs_tab(prepop_count).time_out_22 );
3500 hr_utility.trace('time_in_23 = '|| t_tk_abs_tab(prepop_count).time_in_23 );
3501 hr_utility.trace('time_out_23 = '|| t_tk_abs_tab(prepop_count).time_out_23 );
3502 hr_utility.trace('time_in_24 = '|| t_tk_abs_tab(prepop_count).time_in_24 );
3503 hr_utility.trace('time_out_24 = '|| t_tk_abs_tab(prepop_count).time_out_24 );
3504 hr_utility.trace('time_in_25 = '|| t_tk_abs_tab(prepop_count).time_in_25 );
3505 hr_utility.trace('time_out_25 = '|| t_tk_abs_tab(prepop_count).time_out_25 );
3506 hr_utility.trace('time_in_26 = '|| t_tk_abs_tab(prepop_count).time_in_26 );
3507 hr_utility.trace('time_out_26 = '|| t_tk_abs_tab(prepop_count).time_out_26 );
3508 hr_utility.trace('time_in_27 = '|| t_tk_abs_tab(prepop_count).time_in_27 );
3509 hr_utility.trace('time_out_27 = '|| t_tk_abs_tab(prepop_count).time_out_27 );
3510 hr_utility.trace('time_in_28 = '|| t_tk_abs_tab(prepop_count).time_in_28 );
3511 hr_utility.trace('time_out_28 = '|| t_tk_abs_tab(prepop_count).time_out_28 );
3512 hr_utility.trace('time_in_29 = '|| t_tk_abs_tab(prepop_count).time_in_29 );
3513 hr_utility.trace('time_out_29 = '|| t_tk_abs_tab(prepop_count).time_out_29 );
3514 hr_utility.trace('time_in_30 = '|| t_tk_abs_tab(prepop_count).time_in_30 );
3515 hr_utility.trace('time_out_30 = '|| t_tk_abs_tab(prepop_count).time_out_30 );
3516 hr_utility.trace('time_in_31 = '|| t_tk_abs_tab(prepop_count).time_in_31 );
3517 hr_utility.trace('time_out_31 = '|| t_tk_abs_tab(prepop_count).time_out_31 );
3518 hr_utility.trace('-----------------------------------');
3519
3520
3521
3522
3523 END LOOP;
3524
3525
3526
3527 END IF;
3528
3529 end if;-- g_debug
3530
3531
3532
3533 IF g_resource_abs_enabled ='Y' THEN
3534
3535 IF t_tk_abs_tab.COUNT>0 THEN
3536
3537
3538 FOR prepop_count IN t_tk_abs_tab.FIRST .. t_tk_abs_tab.LAST
3539
3540 LOOP
3541
3542
3543 l_table_counter := l_table_counter + 1;
3544 p_timekeeper_data (l_table_counter).resource_id := resource_info.person_id;
3545 p_timekeeper_data (l_table_counter).timecard_id := fnd_api.g_miss_num;
3546 p_timekeeper_data (l_table_counter).employee_number := resource_info.employee_number;
3547 p_timekeeper_data (l_table_counter).audit_enabled := l_audit_enabled;
3548 -- Bug 10231662
3549 --p_timekeeper_data (l_table_counter).person_type := resource_info.person_type;
3550 p_timekeeper_data (l_table_counter).person_type := l_user_person_type;
3551
3552 p_timekeeper_data (l_table_counter).employee_full_name := resource_info.full_name;
3553 p_timekeeper_data (l_table_counter).row_lock_id := l_row_lock_id;
3554 p_timekeeper_data (l_table_counter).tc_lock_success := l_tc_lock_success;
3555 --p_timekeeper_data (l_table_counter).check_box := 'Y';
3556
3557 /*
3558
3559 p_timekeeper_data (l_table_counter).timecard_status_code := 'PREPOPULATED';
3560
3561 l_timecard_status_meaning :=
3562 hr_bis.bis_decode_lookup ('HXC_APPROVAL_STATUS', 'PREPOPULATED');
3563
3564
3565 p_timekeeper_data (l_table_counter).timecard_status := l_timecard_status_meaning;
3566
3567
3568 */
3569
3570
3571 p_timekeeper_data (l_table_counter).attr_id_1 := t_tk_abs_tab(prepop_count).attr_id_1 ;
3572 p_timekeeper_data (l_table_counter).attr_id_2 := t_tk_abs_tab(prepop_count).attr_id_2 ;
3573 p_timekeeper_data (l_table_counter).attr_id_3 := t_tk_abs_tab(prepop_count).attr_id_3 ;
3574 p_timekeeper_data (l_table_counter).attr_id_4 := t_tk_abs_tab(prepop_count).attr_id_4 ;
3575 p_timekeeper_data (l_table_counter).attr_id_5 := t_tk_abs_tab(prepop_count).attr_id_5 ;
3576 p_timekeeper_data (l_table_counter).attr_id_6 := t_tk_abs_tab(prepop_count).attr_id_6 ;
3577 p_timekeeper_data (l_table_counter).attr_id_7 := t_tk_abs_tab(prepop_count).attr_id_7 ;
3578 p_timekeeper_data (l_table_counter).attr_id_8 := t_tk_abs_tab(prepop_count).attr_id_8 ;
3579 p_timekeeper_data (l_table_counter).attr_id_9 := t_tk_abs_tab(prepop_count).attr_id_9 ;
3580 p_timekeeper_data (l_table_counter).attr_id_10 := t_tk_abs_tab(prepop_count).attr_id_10 ;
3581 p_timekeeper_data (l_table_counter).attr_id_11 := t_tk_abs_tab(prepop_count).attr_id_11 ;
3582 p_timekeeper_data (l_table_counter).attr_id_12 := t_tk_abs_tab(prepop_count).attr_id_12 ;
3583 p_timekeeper_data (l_table_counter).attr_id_13 := t_tk_abs_tab(prepop_count).attr_id_13 ;
3584 p_timekeeper_data (l_table_counter).attr_id_14 := t_tk_abs_tab(prepop_count).attr_id_14 ;
3585 p_timekeeper_data (l_table_counter).attr_id_15 := t_tk_abs_tab(prepop_count).attr_id_15 ;
3586 p_timekeeper_data (l_table_counter).attr_id_16 := t_tk_abs_tab(prepop_count).attr_id_16 ;
3587 p_timekeeper_data (l_table_counter).attr_id_17 := t_tk_abs_tab(prepop_count).attr_id_17 ;
3588 p_timekeeper_data (l_table_counter).attr_id_18 := t_tk_abs_tab(prepop_count).attr_id_18 ;
3589 p_timekeeper_data (l_table_counter).attr_id_19 := t_tk_abs_tab(prepop_count).attr_id_19 ;
3590 p_timekeeper_data (l_table_counter).attr_id_20 := t_tk_abs_tab(prepop_count).attr_id_20 ;
3591 p_timekeeper_data (l_table_counter).day_1 := t_tk_abs_tab(prepop_count).day_1 ;
3592 p_timekeeper_data (l_table_counter).day_2 := t_tk_abs_tab(prepop_count).day_2 ;
3593 p_timekeeper_data (l_table_counter).day_3 := t_tk_abs_tab(prepop_count).day_3 ;
3594 p_timekeeper_data (l_table_counter).day_4 := t_tk_abs_tab(prepop_count).day_4 ;
3595 p_timekeeper_data (l_table_counter).day_5 := t_tk_abs_tab(prepop_count).day_5 ;
3596 p_timekeeper_data (l_table_counter).day_6 := t_tk_abs_tab(prepop_count).day_6 ;
3597 p_timekeeper_data (l_table_counter).day_7 := t_tk_abs_tab(prepop_count).day_7 ;
3598 p_timekeeper_data (l_table_counter).day_8 := t_tk_abs_tab(prepop_count).day_8 ;
3599 p_timekeeper_data (l_table_counter).day_9 := t_tk_abs_tab(prepop_count).day_9 ;
3600 p_timekeeper_data (l_table_counter).day_10 := t_tk_abs_tab(prepop_count).day_10 ;
3601 p_timekeeper_data (l_table_counter).day_11 := t_tk_abs_tab(prepop_count).day_11 ;
3602 p_timekeeper_data (l_table_counter).day_12 := t_tk_abs_tab(prepop_count).day_12 ;
3603 p_timekeeper_data (l_table_counter).day_13 := t_tk_abs_tab(prepop_count).day_13 ;
3604 p_timekeeper_data (l_table_counter).day_14 := t_tk_abs_tab(prepop_count).day_14 ;
3605 p_timekeeper_data (l_table_counter).day_15 := t_tk_abs_tab(prepop_count).day_15 ;
3606 p_timekeeper_data (l_table_counter).day_16 := t_tk_abs_tab(prepop_count).day_16 ;
3607 p_timekeeper_data (l_table_counter).day_17 := t_tk_abs_tab(prepop_count).day_17 ;
3608 p_timekeeper_data (l_table_counter).day_18 := t_tk_abs_tab(prepop_count).day_18 ;
3609 p_timekeeper_data (l_table_counter).day_19 := t_tk_abs_tab(prepop_count).day_19 ;
3610 p_timekeeper_data (l_table_counter).day_20 := t_tk_abs_tab(prepop_count).day_20 ;
3611 p_timekeeper_data (l_table_counter).day_21 := t_tk_abs_tab(prepop_count).day_21 ;
3612 p_timekeeper_data (l_table_counter).day_22 := t_tk_abs_tab(prepop_count).day_22 ;
3613 p_timekeeper_data (l_table_counter).day_23 := t_tk_abs_tab(prepop_count).day_23 ;
3614 p_timekeeper_data (l_table_counter).day_24 := t_tk_abs_tab(prepop_count).day_24 ;
3615 p_timekeeper_data (l_table_counter).day_25 := t_tk_abs_tab(prepop_count).day_25 ;
3616 p_timekeeper_data (l_table_counter).day_26 := t_tk_abs_tab(prepop_count).day_26 ;
3617 p_timekeeper_data (l_table_counter).day_27 := t_tk_abs_tab(prepop_count).day_27 ;
3618 p_timekeeper_data (l_table_counter).day_28 := t_tk_abs_tab(prepop_count).day_28 ;
3619 p_timekeeper_data (l_table_counter).day_29 := t_tk_abs_tab(prepop_count).day_29 ;
3620 p_timekeeper_data (l_table_counter).day_30 := t_tk_abs_tab(prepop_count).day_30 ;
3621 p_timekeeper_data (l_table_counter).day_31 := t_tk_abs_tab(prepop_count).day_31 ;
3622 p_timekeeper_data (l_table_counter).time_in_1 := t_tk_abs_tab(prepop_count).time_in_1 ;
3623 p_timekeeper_data (l_table_counter).time_out_1 := t_tk_abs_tab(prepop_count).time_out_1 ;
3624 p_timekeeper_data (l_table_counter).time_in_2 := t_tk_abs_tab(prepop_count).time_in_2 ;
3625 p_timekeeper_data (l_table_counter).time_out_2 := t_tk_abs_tab(prepop_count).time_out_2 ;
3626 p_timekeeper_data (l_table_counter).time_in_3 := t_tk_abs_tab(prepop_count).time_in_3 ;
3627 p_timekeeper_data (l_table_counter).time_out_3 := t_tk_abs_tab(prepop_count).time_out_3 ;
3628 p_timekeeper_data (l_table_counter).time_in_4 := t_tk_abs_tab(prepop_count).time_in_4 ;
3629 p_timekeeper_data (l_table_counter).time_out_4 := t_tk_abs_tab(prepop_count).time_out_4 ;
3630 p_timekeeper_data (l_table_counter).time_in_5 := t_tk_abs_tab(prepop_count).time_in_5 ;
3631 p_timekeeper_data (l_table_counter).time_out_5 := t_tk_abs_tab(prepop_count).time_out_5 ;
3632 p_timekeeper_data (l_table_counter).time_in_6 := t_tk_abs_tab(prepop_count).time_in_6 ;
3633 p_timekeeper_data (l_table_counter).time_out_6 := t_tk_abs_tab(prepop_count).time_out_6 ;
3634 p_timekeeper_data (l_table_counter).time_in_7 := t_tk_abs_tab(prepop_count).time_in_7 ;
3635 p_timekeeper_data (l_table_counter).time_out_7 := t_tk_abs_tab(prepop_count).time_out_7 ;
3636 p_timekeeper_data (l_table_counter).time_in_8 := t_tk_abs_tab(prepop_count).time_in_8 ;
3637 p_timekeeper_data (l_table_counter).time_out_8 := t_tk_abs_tab(prepop_count).time_out_8 ;
3638 p_timekeeper_data (l_table_counter).time_in_9 := t_tk_abs_tab(prepop_count).time_in_9 ;
3639 p_timekeeper_data (l_table_counter).time_out_9 := t_tk_abs_tab(prepop_count).time_out_9 ;
3640 p_timekeeper_data (l_table_counter).time_in_10 := t_tk_abs_tab(prepop_count).time_in_10 ;
3641 p_timekeeper_data (l_table_counter).time_out_10 := t_tk_abs_tab(prepop_count).time_out_10 ;
3642 p_timekeeper_data (l_table_counter).time_in_11 := t_tk_abs_tab(prepop_count).time_in_11 ;
3643 p_timekeeper_data (l_table_counter).time_out_11 := t_tk_abs_tab(prepop_count).time_out_11 ;
3644 p_timekeeper_data (l_table_counter).time_in_12 := t_tk_abs_tab(prepop_count).time_in_12 ;
3645 p_timekeeper_data (l_table_counter).time_out_12 := t_tk_abs_tab(prepop_count).time_out_12 ;
3646 p_timekeeper_data (l_table_counter).time_in_13 := t_tk_abs_tab(prepop_count).time_in_13 ;
3647 p_timekeeper_data (l_table_counter).time_out_13 := t_tk_abs_tab(prepop_count).time_out_13 ;
3648 p_timekeeper_data (l_table_counter).time_in_14 := t_tk_abs_tab(prepop_count).time_in_14 ;
3649 p_timekeeper_data (l_table_counter).time_out_14 := t_tk_abs_tab(prepop_count).time_out_14 ;
3650 p_timekeeper_data (l_table_counter).time_in_15 := t_tk_abs_tab(prepop_count).time_in_15 ;
3651 p_timekeeper_data (l_table_counter).time_out_15 := t_tk_abs_tab(prepop_count).time_out_15 ;
3652 p_timekeeper_data (l_table_counter).time_in_16 := t_tk_abs_tab(prepop_count).time_in_16 ;
3653 p_timekeeper_data (l_table_counter).time_out_16 := t_tk_abs_tab(prepop_count).time_out_16 ;
3654 p_timekeeper_data (l_table_counter).time_in_17 := t_tk_abs_tab(prepop_count).time_in_17 ;
3655 p_timekeeper_data (l_table_counter).time_out_17 := t_tk_abs_tab(prepop_count).time_out_17 ;
3656 p_timekeeper_data (l_table_counter).time_in_18 := t_tk_abs_tab(prepop_count).time_in_18 ;
3657 p_timekeeper_data (l_table_counter).time_out_18 := t_tk_abs_tab(prepop_count).time_out_18 ;
3658 p_timekeeper_data (l_table_counter).time_in_19 := t_tk_abs_tab(prepop_count).time_in_19 ;
3659 p_timekeeper_data (l_table_counter).time_out_19 := t_tk_abs_tab(prepop_count).time_out_19 ;
3660 p_timekeeper_data (l_table_counter).time_in_20 := t_tk_abs_tab(prepop_count).time_in_20 ;
3661 p_timekeeper_data (l_table_counter).time_out_20 := t_tk_abs_tab(prepop_count).time_out_20 ;
3662 p_timekeeper_data (l_table_counter).time_in_21 := t_tk_abs_tab(prepop_count).time_in_21 ;
3663 p_timekeeper_data (l_table_counter).time_out_21 := t_tk_abs_tab(prepop_count).time_out_21 ;
3664 p_timekeeper_data (l_table_counter).time_in_22 := t_tk_abs_tab(prepop_count).time_in_22 ;
3665 p_timekeeper_data (l_table_counter).time_out_22 := t_tk_abs_tab(prepop_count).time_out_22 ;
3666 p_timekeeper_data (l_table_counter).time_in_23 := t_tk_abs_tab(prepop_count).time_in_23 ;
3667 p_timekeeper_data (l_table_counter).time_out_23 := t_tk_abs_tab(prepop_count).time_out_23 ;
3668 p_timekeeper_data (l_table_counter).time_in_24 := t_tk_abs_tab(prepop_count).time_in_24 ;
3669 p_timekeeper_data (l_table_counter).time_out_24 := t_tk_abs_tab(prepop_count).time_out_24 ;
3670 p_timekeeper_data (l_table_counter).time_in_25 := t_tk_abs_tab(prepop_count).time_in_25 ;
3671 p_timekeeper_data (l_table_counter).time_out_25 := t_tk_abs_tab(prepop_count).time_out_25 ;
3672 p_timekeeper_data (l_table_counter).time_in_26 := t_tk_abs_tab(prepop_count).time_in_26 ;
3673 p_timekeeper_data (l_table_counter).time_out_26 := t_tk_abs_tab(prepop_count).time_out_26 ;
3674 p_timekeeper_data (l_table_counter).time_in_27 := t_tk_abs_tab(prepop_count).time_in_27 ;
3675 p_timekeeper_data (l_table_counter).time_out_27 := t_tk_abs_tab(prepop_count).time_out_27 ;
3676 p_timekeeper_data (l_table_counter).time_in_28 := t_tk_abs_tab(prepop_count).time_in_28 ;
3677 p_timekeeper_data (l_table_counter).time_out_28 := t_tk_abs_tab(prepop_count).time_out_28 ;
3678 p_timekeeper_data (l_table_counter).time_in_29 := t_tk_abs_tab(prepop_count).time_in_29 ;
3679 p_timekeeper_data (l_table_counter).time_out_29 := t_tk_abs_tab(prepop_count).time_out_29 ;
3680 p_timekeeper_data (l_table_counter).time_in_30 := t_tk_abs_tab(prepop_count).time_in_30 ;
3681 p_timekeeper_data (l_table_counter).time_out_30 := t_tk_abs_tab(prepop_count).time_out_30 ;
3682 p_timekeeper_data (l_table_counter).time_in_31 := t_tk_abs_tab(prepop_count).time_in_31 ;
3683 p_timekeeper_data (l_table_counter).time_out_31 := t_tk_abs_tab(prepop_count).time_out_31 ;
3684
3685 p_timekeeper_data (l_table_counter).detail_id_1 := t_tk_abs_tab(prepop_count).detail_id_1 ;
3686 p_timekeeper_data (l_table_counter).detail_id_2 := t_tk_abs_tab(prepop_count).detail_id_2 ;
3687 p_timekeeper_data (l_table_counter).detail_id_3 := t_tk_abs_tab(prepop_count).detail_id_3 ;
3688 p_timekeeper_data (l_table_counter).detail_id_4 := t_tk_abs_tab(prepop_count).detail_id_4 ;
3689 p_timekeeper_data (l_table_counter).detail_id_5 := t_tk_abs_tab(prepop_count).detail_id_5 ;
3690 p_timekeeper_data (l_table_counter).detail_id_6 := t_tk_abs_tab(prepop_count).detail_id_6 ;
3691 p_timekeeper_data (l_table_counter).detail_id_7 := t_tk_abs_tab(prepop_count).detail_id_7 ;
3692 p_timekeeper_data (l_table_counter).detail_id_8 := t_tk_abs_tab(prepop_count).detail_id_8 ;
3693 p_timekeeper_data (l_table_counter).detail_id_9 := t_tk_abs_tab(prepop_count).detail_id_9 ;
3694 p_timekeeper_data (l_table_counter).detail_id_10 := t_tk_abs_tab(prepop_count).detail_id_10 ;
3695 p_timekeeper_data (l_table_counter).detail_id_11 := t_tk_abs_tab(prepop_count).detail_id_11 ;
3696 p_timekeeper_data (l_table_counter).detail_id_12 := t_tk_abs_tab(prepop_count).detail_id_12 ;
3697 p_timekeeper_data (l_table_counter).detail_id_13 := t_tk_abs_tab(prepop_count).detail_id_13 ;
3698 p_timekeeper_data (l_table_counter).detail_id_14 := t_tk_abs_tab(prepop_count).detail_id_14 ;
3699 p_timekeeper_data (l_table_counter).detail_id_15 := t_tk_abs_tab(prepop_count).detail_id_15 ;
3700 p_timekeeper_data (l_table_counter).detail_id_16 := t_tk_abs_tab(prepop_count).detail_id_16 ;
3701 p_timekeeper_data (l_table_counter).detail_id_17 := t_tk_abs_tab(prepop_count).detail_id_17 ;
3702 p_timekeeper_data (l_table_counter).detail_id_18 := t_tk_abs_tab(prepop_count).detail_id_18 ;
3703 p_timekeeper_data (l_table_counter).detail_id_19 := t_tk_abs_tab(prepop_count).detail_id_19 ;
3704 p_timekeeper_data (l_table_counter).detail_id_20 := t_tk_abs_tab(prepop_count).detail_id_20 ;
3705 p_timekeeper_data (l_table_counter).detail_id_21 := t_tk_abs_tab(prepop_count).detail_id_21 ;
3706 p_timekeeper_data (l_table_counter).detail_id_22 := t_tk_abs_tab(prepop_count).detail_id_22 ;
3707 p_timekeeper_data (l_table_counter).detail_id_23 := t_tk_abs_tab(prepop_count).detail_id_23 ;
3708 p_timekeeper_data (l_table_counter).detail_id_24 := t_tk_abs_tab(prepop_count).detail_id_24 ;
3709 p_timekeeper_data (l_table_counter).detail_id_25 := t_tk_abs_tab(prepop_count).detail_id_25 ;
3710 p_timekeeper_data (l_table_counter).detail_id_26 := t_tk_abs_tab(prepop_count).detail_id_26 ;
3711 p_timekeeper_data (l_table_counter).detail_id_27 := t_tk_abs_tab(prepop_count).detail_id_27 ;
3712 p_timekeeper_data (l_table_counter).detail_id_28 := t_tk_abs_tab(prepop_count).detail_id_28 ;
3713 p_timekeeper_data (l_table_counter).detail_id_29 := t_tk_abs_tab(prepop_count).detail_id_29 ;
3714 p_timekeeper_data (l_table_counter).detail_id_30 := t_tk_abs_tab(prepop_count).detail_id_30 ;
3715 p_timekeeper_data (l_table_counter).detail_id_31 := t_tk_abs_tab(prepop_count).detail_id_31 ;
3716
3717 p_timekeeper_data (l_table_counter).detail_ovn_1 := t_tk_abs_tab(prepop_count).detail_ovn_1 ;
3718 p_timekeeper_data (l_table_counter).detail_ovn_2 := t_tk_abs_tab(prepop_count).detail_ovn_2 ;
3719 p_timekeeper_data (l_table_counter).detail_ovn_3 := t_tk_abs_tab(prepop_count).detail_ovn_3 ;
3720 p_timekeeper_data (l_table_counter).detail_ovn_4 := t_tk_abs_tab(prepop_count).detail_ovn_4 ;
3721 p_timekeeper_data (l_table_counter).detail_ovn_5 := t_tk_abs_tab(prepop_count).detail_ovn_5 ;
3722 p_timekeeper_data (l_table_counter).detail_ovn_6 := t_tk_abs_tab(prepop_count).detail_ovn_6 ;
3723 p_timekeeper_data (l_table_counter).detail_ovn_7 := t_tk_abs_tab(prepop_count).detail_ovn_7 ;
3724 p_timekeeper_data (l_table_counter).detail_ovn_8 := t_tk_abs_tab(prepop_count).detail_ovn_8 ;
3725 p_timekeeper_data (l_table_counter).detail_ovn_9 := t_tk_abs_tab(prepop_count).detail_ovn_9 ;
3726 p_timekeeper_data (l_table_counter).detail_ovn_10 := t_tk_abs_tab(prepop_count).detail_ovn_10 ;
3727 p_timekeeper_data (l_table_counter).detail_ovn_11 := t_tk_abs_tab(prepop_count).detail_ovn_11 ;
3728 p_timekeeper_data (l_table_counter).detail_ovn_12 := t_tk_abs_tab(prepop_count).detail_ovn_12 ;
3729 p_timekeeper_data (l_table_counter).detail_ovn_13 := t_tk_abs_tab(prepop_count).detail_ovn_13 ;
3730 p_timekeeper_data (l_table_counter).detail_ovn_14 := t_tk_abs_tab(prepop_count).detail_ovn_14 ;
3731 p_timekeeper_data (l_table_counter).detail_ovn_15 := t_tk_abs_tab(prepop_count).detail_ovn_15 ;
3732 p_timekeeper_data (l_table_counter).detail_ovn_16 := t_tk_abs_tab(prepop_count).detail_ovn_16 ;
3733 p_timekeeper_data (l_table_counter).detail_ovn_17 := t_tk_abs_tab(prepop_count).detail_ovn_17 ;
3734 p_timekeeper_data (l_table_counter).detail_ovn_18 := t_tk_abs_tab(prepop_count).detail_ovn_18 ;
3735 p_timekeeper_data (l_table_counter).detail_ovn_19 := t_tk_abs_tab(prepop_count).detail_ovn_19 ;
3736 p_timekeeper_data (l_table_counter).detail_ovn_20 := t_tk_abs_tab(prepop_count).detail_ovn_20 ;
3737 p_timekeeper_data (l_table_counter).detail_ovn_21 := t_tk_abs_tab(prepop_count).detail_ovn_21 ;
3738 p_timekeeper_data (l_table_counter).detail_ovn_22 := t_tk_abs_tab(prepop_count).detail_ovn_22 ;
3739 p_timekeeper_data (l_table_counter).detail_ovn_23 := t_tk_abs_tab(prepop_count).detail_ovn_23 ;
3740 p_timekeeper_data (l_table_counter).detail_ovn_24 := t_tk_abs_tab(prepop_count).detail_ovn_24 ;
3741 p_timekeeper_data (l_table_counter).detail_ovn_25 := t_tk_abs_tab(prepop_count).detail_ovn_25 ;
3742 p_timekeeper_data (l_table_counter).detail_ovn_26 := t_tk_abs_tab(prepop_count).detail_ovn_26 ;
3743 p_timekeeper_data (l_table_counter).detail_ovn_27 := t_tk_abs_tab(prepop_count).detail_ovn_27 ;
3744 p_timekeeper_data (l_table_counter).detail_ovn_28 := t_tk_abs_tab(prepop_count).detail_ovn_28 ;
3745 p_timekeeper_data (l_table_counter).detail_ovn_29 := t_tk_abs_tab(prepop_count).detail_ovn_29 ;
3746 p_timekeeper_data (l_table_counter).detail_ovn_30 := t_tk_abs_tab(prepop_count).detail_ovn_30 ;
3747 p_timekeeper_data (l_table_counter).detail_ovn_31 := t_tk_abs_tab(prepop_count).detail_ovn_31 ;
3748
3749
3750
3751
3752
3753
3754
3755
3756
3757 IF tc_start < l_emp_start_date THEN -- Bug 13489321
3758 p_timekeeper_data (l_table_counter).timecard_start_period := l_emp_start_date; -- Bug 13489321
3759
3760 ELSE
3761 p_timekeeper_data (l_table_counter).timecard_start_period := tc_start; -- Bug 13489321
3762 end if;
3763 /* changes done by senthil for emp terminate enhancement*/
3764 IF tc_end > nvl(l_emp_terminate_date,tc_end) THEN -- Bug 13489321
3765 p_timekeeper_data (l_table_counter).timecard_end_period := nvl(l_emp_terminate_date,tc_end); -- Bug 13489321
3766
3767 ELSE
3768 p_timekeeper_data (l_table_counter).timecard_end_period := tc_end; -- Bug 13489321
3769 END IF;
3770 /* end of changes done by senthil */
3771
3772 /* added so that g_submit table has prepopulated data*/
3773
3774 IF p_reqryflg = 'N' THEN
3775 p_timekeeper_data (l_table_counter).check_box := 'Y';
3776 g_submit_table (resource_info.person_id).resource_id := resource_info.person_id;
3777 g_submit_table (resource_info.person_id).timecard_id := fnd_api.g_miss_num;
3778 g_submit_table (resource_info.person_id).start_time :=
3779 p_timekeeper_data (l_table_counter).timecard_start_period;
3780 g_submit_table (resource_info.person_id).stop_time :=
3781 p_timekeeper_data (l_table_counter).timecard_end_period;
3782 g_submit_table (resource_info.person_id).row_lock_id := l_row_lock_id;
3783 g_submit_table (resource_info.person_id).no_rows :=
3784 NVL (g_submit_table (resource_info.person_id).no_rows, 0) + 1;
3785 ELSE
3786 p_timekeeper_data (l_table_counter).check_box := 'N';
3787 END IF;
3788
3789
3790
3791
3792
3793 END LOOP;
3794
3795 END IF; -- t_tk_abs_tab
3796
3797 END IF; --g_resource_abs_enabled
3798
3799 --else
3800
3801 --fnd_message.set_name ('HXC', 'HXC_TIMECARD_LOCKED');
3802 --fnd_message.set_token ('FULL_NAME', l_empname);
3803 --fnd_message.show;
3804
3805
3806
3807 end if; -- lock_rowid being null
3808
3809
3810
3811 -- Change End
3812
3813 -- Checking for notification excpetion
3814 -- Then we need to leap frog this employee
3815 if hxc_timekeeper_utilities.g_exception_detected = 'Y' then
3816 hxc_timekeeper_utilities.g_exception_detected:= 'N';
3817 raise l_abs_pending_appr_notif;
3818 end if;
3819
3820 if l_row_lock_id is null
3821 -- Bug 12355395
3822 -- Added this condition to avoid unnecessary errors when Absence functionality
3823 -- is not enabled.
3824 AND g_resource_abs_enabled = 'Y'
3825 then
3826 raise l_lock_not_obtained;
3827 end if;
3828
3829
3830 -- Populating another empty row for the PrePopulated employee
3831
3832 l_table_counter := l_table_counter + 1;
3833 p_timekeeper_data (l_table_counter).resource_id := resource_info.person_id;
3834 p_timekeeper_data (l_table_counter).timecard_id := fnd_api.g_miss_num;
3835 p_timekeeper_data (l_table_counter).employee_number := resource_info.employee_number;
3836 p_timekeeper_data (l_table_counter).audit_enabled := l_audit_enabled;
3837 -- Bug 10231662
3838 --p_timekeeper_data (l_table_counter).person_type := resource_info.person_type;
3839 p_timekeeper_data (l_table_counter).person_type := l_user_person_type;
3840
3841 p_timekeeper_data (l_table_counter).employee_full_name := resource_info.full_name;
3842 p_timekeeper_data (l_table_counter).row_lock_id := l_row_lock_id;
3843 p_timekeeper_data (l_table_counter).tc_lock_success := l_tc_lock_success;
3844
3845 IF tc_start < l_emp_start_date THEN
3846 p_timekeeper_data (l_table_counter).timecard_start_period := l_emp_start_date;
3847
3848 ELSE
3849 p_timekeeper_data (l_table_counter).timecard_start_period := tc_start; -- Bug 13489321
3850 end if;
3851 /* changes done by senthil for emp terminate enhancement*/
3852 IF tc_end > nvl(l_emp_terminate_date,tc_end) THEN -- Bug 13489321
3853 p_timekeeper_data (l_table_counter).timecard_end_period := nvl(l_emp_terminate_date,tc_end);
3854
3855 ELSE
3856 p_timekeeper_data (l_table_counter).timecard_end_period := tc_end; -- Bug 13489321
3857 END IF;
3858 /* end of changes done by senthil */
3859
3860
3861 -- End if; -- svg
3862
3863 IF p_reqryflg = 'N' THEN
3864 p_timekeeper_data (l_table_counter).check_box := 'Y';
3865 g_submit_table (resource_info.person_id).resource_id := resource_info.person_id;
3866 g_submit_table (resource_info.person_id).timecard_id := fnd_api.g_miss_num;
3867 g_submit_table (resource_info.person_id).start_time :=
3868 p_timekeeper_data (l_table_counter).timecard_start_period;
3869 g_submit_table (resource_info.person_id).stop_time :=
3870 p_timekeeper_data (l_table_counter).timecard_end_period;
3871 g_submit_table (resource_info.person_id).row_lock_id := l_row_lock_id;
3872 g_submit_table (resource_info.person_id).no_rows :=
3873 NVL (g_submit_table (resource_info.person_id).no_rows, 0) + 1;
3874 ELSE
3875 p_timekeeper_data (l_table_counter).check_box := 'N';
3876 g_submit_table.DELETE (resource_info.person_id);
3877 END IF;
3878
3879 -- Reached a normal cycle for a timecard .
3880 EXCEPTION
3881 WHEN l_abs_pending_appr_notif THEN
3882
3883 -- we need to cache this info for the form to display
3884 g_query_exception_tab(resource_info.person_id).Employee_full_name:=
3885 resource_info.full_name;
3886 g_query_exception_tab(resource_info.person_id).employee_number:=
3887 resource_info.employee_number;
3888 if hxc_timekeeper_utilities.g_abs_message_string =
3889 'HXC_ABS_PEND_APPR_DELETE' then
3890 g_query_exception_tab(resource_info.person_id).Message:=
3891 'HXC_TK_ABS_PEND_APPR_DELETE';
3892 elsif hxc_timekeeper_utilities.g_abs_message_string =
3893 'HXC_ABS_PEND_APPR_ERROR' then
3894 g_query_exception_tab(resource_info.person_id).Message:=
3895 'HXC_TK_ABS_PEND_APPR_ERROR';
3896 end if;
3897
3898 WHEN l_lock_not_obtained THEN
3899
3900 g_query_exception_tab(resource_info.person_id).Employee_full_name:=
3901 resource_info.full_name;
3902 g_query_exception_tab(resource_info.person_id).employee_number:=
3903 resource_info.employee_number;
3904 g_query_exception_tab(resource_info.person_id).Message:=
3905 'HXC_TK_PREPOP_NOT_LOCKED';
3906
3907
3908 END; -- Fresh timecard End
3909
3910
3911 END IF; ---recurring period match
3912 END IF; ---end if for mid period add blank row
3913 END IF;
3914
3915 CLOSE c_timecard_info;
3916 emp_tab_index := emp_qry_tc_info.NEXT (emp_tab_index);
3917 END LOOP; ----periods list
3918 /*ADVICE(3197): Nested LOOPs should all be labeled [406] */
3919
3920 END IF; --- l_query
3921 END IF; ------added for duplicate employee
3922 EXCEPTION
3923 WHEN l_pref_exception THEN
3924 NULL;
3925 /*ADVICE(3204): Use of NULL statements [532] */
3926
3927 /*ADVICE(3206): Exception masked by a NULL statement [533] */
3928
3929 END;
3930 END LOOP;
3931
3932 IF p_reqryflg = 'N' THEN
3933 g_resource_tc_table.DELETE;
3934 l_index := p_timekeeper_data.FIRST;
3935
3936 LOOP
3937 EXIT WHEN NOT p_timekeeper_data.EXISTS (l_index);
3938
3939 IF g_resource_tc_table.EXISTS (p_timekeeper_data (l_index).resource_id)
3940 AND p_timekeeper_data (l_index).check_box = 'Y' THEN
3941 IF p_timekeeper_data (l_index).check_box = 'N' THEN
3942 g_resource_tc_table (p_timekeeper_data (l_index).resource_id).no_rows := 0;
3943 ELSE
3944 g_resource_tc_table (p_timekeeper_data (l_index).resource_id).no_rows :=
3945 g_resource_tc_table (p_timekeeper_data (l_index).resource_id).no_rows + 1;
3946 END IF;
3947 ELSE
3948 IF p_timekeeper_data (l_index).check_box = 'Y' THEN
3949 g_resource_tc_table (p_timekeeper_data (l_index).resource_id).no_rows := 1;
3950 ELSE
3951 g_resource_tc_table (p_timekeeper_data (l_index).resource_id).no_rows := 0;
3952 END IF;
3953 END IF;
3954
3955 l_index := p_timekeeper_data.NEXT (l_index);
3956 END LOOP;
3957 END IF;
3958 END IF;
3959
3960 --SVG CHANGE
3961
3962 /*
3963
3964 IF g_debug then
3965
3966 if p_timekeeper_data.count>0 then
3967
3968
3969 hr_utility.trace(' SVG timekeeper TABLE start ');
3970 hr_utility.trace(' *****************');
3971
3972 l_table_counter_tmp := p_timekeeper_data.FIRST;
3973
3974 LOOP
3975 EXIT WHEN NOT p_timekeeper_data.EXISTS (l_table_counter_tmp);
3976
3977 hr_utility.trace(' l_table_counter_tmp = '||l_table_counter_tmp);
3978 hr_utility.trace(' timecard_start_period = :'|| p_timekeeper_data(l_table_counter_tmp).timecard_start_period );
3979 hr_utility.trace(' timecard_end_period = :'|| p_timekeeper_data(l_table_counter_tmp).timecard_end_period );
3980 hr_utility.trace(' resource_id = :'|| p_timekeeper_data(l_table_counter_tmp).resource_id );
3981 hr_utility.trace(' employee_number = :'|| p_timekeeper_data(l_table_counter_tmp).employee_number );
3982 hr_utility.trace(' employee_full_name = :'|| p_timekeeper_data(l_table_counter_tmp).employee_full_name );
3983 hr_utility.trace(' timecard_id = :'|| p_timekeeper_data(l_table_counter_tmp).timecard_id );
3984 hr_utility.trace(' timecard_ovn = :'|| p_timekeeper_data(l_table_counter_tmp).timecard_ovn );
3985 hr_utility.trace(' check_box = :'|| p_timekeeper_data(l_table_counter_tmp).check_box );
3986 hr_utility.trace(' error_status = :'|| p_timekeeper_data(l_table_counter_tmp).error_status );
3987 hr_utility.trace(' timecard_status = :'|| p_timekeeper_data(l_table_counter_tmp).timecard_status );
3988 hr_utility.trace(' timecard_status_code = :'|| p_timekeeper_data(l_table_counter_tmp).timecard_status_code );
3989 hr_utility.trace(' attr_value_1 = :'|| p_timekeeper_data(l_table_counter_tmp).attr_value_1 );
3990 hr_utility.trace(' attr_value_2 = :'|| p_timekeeper_data(l_table_counter_tmp).attr_value_2 );
3991 hr_utility.trace(' attr_value_3 = :'|| p_timekeeper_data(l_table_counter_tmp).attr_value_3 );
3992 hr_utility.trace(' attr_value_4 = :'|| p_timekeeper_data(l_table_counter_tmp).attr_value_4 );
3993 hr_utility.trace(' attr_value_5 = :'|| p_timekeeper_data(l_table_counter_tmp).attr_value_5 );
3994 hr_utility.trace(' attr_value_6 = :'|| p_timekeeper_data(l_table_counter_tmp).attr_value_6 );
3995 hr_utility.trace(' attr_value_7 = :'|| p_timekeeper_data(l_table_counter_tmp).attr_value_7 );
3996 hr_utility.trace(' attr_value_8 = :'|| p_timekeeper_data(l_table_counter_tmp).attr_value_8 );
3997 hr_utility.trace(' attr_value_9 = :'|| p_timekeeper_data(l_table_counter_tmp).attr_value_9 );
3998 hr_utility.trace(' attr_value_10 = :'|| p_timekeeper_data(l_table_counter_tmp).attr_value_10 );
3999 hr_utility.trace(' attr_value_11 = :'|| p_timekeeper_data(l_table_counter_tmp).attr_value_11 );
4000 hr_utility.trace(' attr_value_12 = :'|| p_timekeeper_data(l_table_counter_tmp).attr_value_12 );
4001 hr_utility.trace(' attr_value_13 = :'|| p_timekeeper_data(l_table_counter_tmp).attr_value_13 );
4002 hr_utility.trace(' attr_value_14 = :'|| p_timekeeper_data(l_table_counter_tmp).attr_value_14 );
4003 hr_utility.trace(' attr_value_15 = :'|| p_timekeeper_data(l_table_counter_tmp).attr_value_15 );
4004 hr_utility.trace(' attr_value_16 = :'|| p_timekeeper_data(l_table_counter_tmp).attr_value_16 );
4005 hr_utility.trace(' attr_value_17 = :'|| p_timekeeper_data(l_table_counter_tmp).attr_value_17 );
4006 hr_utility.trace(' attr_value_18 = :'|| p_timekeeper_data(l_table_counter_tmp).attr_value_18 );
4007 hr_utility.trace(' attr_value_19 :'|| p_timekeeper_data(l_table_counter_tmp).attr_value_19 );
4008 hr_utility.trace(' attr_value_20 = :'|| p_timekeeper_data(l_table_counter_tmp).attr_value_20 );
4009 hr_utility.trace(' attr_id_1 = :'|| p_timekeeper_data(l_table_counter_tmp).attr_id_1 );
4010 hr_utility.trace(' attr_id_2 = :'|| p_timekeeper_data(l_table_counter_tmp).attr_id_2 );
4011 hr_utility.trace(' attr_id_3 = :'|| p_timekeeper_data(l_table_counter_tmp).attr_id_3 );
4012 hr_utility.trace(' attr_id_4 = :'|| p_timekeeper_data(l_table_counter_tmp).attr_id_4 );
4013 hr_utility.trace(' attr_id_5 = :'|| p_timekeeper_data(l_table_counter_tmp).attr_id_5 );
4014 hr_utility.trace(' attr_id_6 = :'|| p_timekeeper_data(l_table_counter_tmp).attr_id_6 );
4015 hr_utility.trace(' attr_id_7 = :'|| p_timekeeper_data(l_table_counter_tmp).attr_id_7 );
4016 hr_utility.trace(' attr_id_8 = :'|| p_timekeeper_data(l_table_counter_tmp).attr_id_8 );
4017 hr_utility.trace(' attr_id_9 = :'|| p_timekeeper_data(l_table_counter_tmp).attr_id_9 );
4018 hr_utility.trace(' attr_id_10 = :'|| p_timekeeper_data(l_table_counter_tmp).attr_id_10 );
4019 hr_utility.trace(' attr_id_11 = :'|| p_timekeeper_data(l_table_counter_tmp).attr_id_11 );
4020 hr_utility.trace(' attr_id_12 = :'|| p_timekeeper_data(l_table_counter_tmp).attr_id_12 );
4021 hr_utility.trace(' attr_id_13 = :'|| p_timekeeper_data(l_table_counter_tmp).attr_id_13 );
4022 hr_utility.trace(' attr_id_14 = :'|| p_timekeeper_data(l_table_counter_tmp).attr_id_14 );
4023 hr_utility.trace(' attr_id_15 = :'|| p_timekeeper_data(l_table_counter_tmp).attr_id_15 );
4024 hr_utility.trace(' attr_id_16 = :'|| p_timekeeper_data(l_table_counter_tmp).attr_id_16 );
4025 hr_utility.trace(' attr_id_17 = :'|| p_timekeeper_data(l_table_counter_tmp).attr_id_17 );
4026 hr_utility.trace(' attr_id_18 = :'|| p_timekeeper_data(l_table_counter_tmp).attr_id_18 );
4027 hr_utility.trace(' attr_id_19 = :'|| p_timekeeper_data(l_table_counter_tmp).attr_id_19 );
4028 hr_utility.trace(' attr_id_20 = :'|| p_timekeeper_data(l_table_counter_tmp).attr_id_20 );
4029 hr_utility.trace(' attr_oldid_1 = :'|| p_timekeeper_data(l_table_counter_tmp).attr_oldid_1 );
4030 hr_utility.trace(' attr_oldid_2 = :'|| p_timekeeper_data(l_table_counter_tmp).attr_oldid_2 );
4031 hr_utility.trace(' attr_oldid_3 = :'|| p_timekeeper_data(l_table_counter_tmp).attr_oldid_3 );
4032 hr_utility.trace(' attr_oldid_4 = :'|| p_timekeeper_data(l_table_counter_tmp).attr_oldid_4 );
4033 hr_utility.trace(' attr_oldid_5 = :'|| p_timekeeper_data(l_table_counter_tmp).attr_oldid_5 );
4034 hr_utility.trace(' attr_oldid_6 = :'|| p_timekeeper_data(l_table_counter_tmp).attr_oldid_6 );
4035 hr_utility.trace(' attr_oldid_7 = :'|| p_timekeeper_data(l_table_counter_tmp).attr_oldid_7 );
4036 hr_utility.trace(' attr_oldid_8 = :'|| p_timekeeper_data(l_table_counter_tmp).attr_oldid_8 );
4037 hr_utility.trace(' attr_oldid_9 = :'|| p_timekeeper_data(l_table_counter_tmp).attr_oldid_9 );
4038 hr_utility.trace(' attr_oldid_10 = :'|| p_timekeeper_data(l_table_counter_tmp).attr_oldid_10 );
4039 hr_utility.trace(' attr_oldid_11 = :'|| p_timekeeper_data(l_table_counter_tmp).attr_oldid_11 );
4040 hr_utility.trace(' attr_oldid_12 = :'|| p_timekeeper_data(l_table_counter_tmp).attr_oldid_12 );
4041 hr_utility.trace(' attr_oldid_13 = :'|| p_timekeeper_data(l_table_counter_tmp).attr_oldid_13 );
4042 hr_utility.trace(' attr_oldid_14 = :'|| p_timekeeper_data(l_table_counter_tmp).attr_oldid_14 );
4043 hr_utility.trace(' attr_oldid_15 = :'|| p_timekeeper_data(l_table_counter_tmp).attr_oldid_15 );
4044 hr_utility.trace(' attr_oldid_16 = :'|| p_timekeeper_data(l_table_counter_tmp).attr_oldid_16 );
4045 hr_utility.trace(' attr_oldid_17 = :'|| p_timekeeper_data(l_table_counter_tmp).attr_oldid_17 );
4046 hr_utility.trace(' attr_oldid_18 = :'|| p_timekeeper_data(l_table_counter_tmp).attr_oldid_18 );
4047 hr_utility.trace(' attr_oldid_19 = :'|| p_timekeeper_data(l_table_counter_tmp).attr_oldid_19 );
4048 hr_utility.trace(' attr_oldid_20 = :'|| p_timekeeper_data(l_table_counter_tmp).attr_oldid_20 );
4049 hr_utility.trace(' timekeeper_action = :'|| p_timekeeper_data(l_table_counter_tmp).timekeeper_action );
4050 hr_utility.trace(' detail_id_1 = :'|| p_timekeeper_data(l_table_counter_tmp).detail_id_1 );
4051 hr_utility.trace(' detail_id_2 = :'|| p_timekeeper_data(l_table_counter_tmp).detail_id_2 );
4052 hr_utility.trace(' detail_id_3 = :'|| p_timekeeper_data(l_table_counter_tmp).detail_id_3 );
4053 hr_utility.trace(' detail_id_4 = :'|| p_timekeeper_data(l_table_counter_tmp).detail_id_4 );
4054 hr_utility.trace(' detail_id_5 = :'|| p_timekeeper_data(l_table_counter_tmp).detail_id_5 );
4055 hr_utility.trace(' detail_id_6 = :'|| p_timekeeper_data(l_table_counter_tmp).detail_id_6 );
4056 hr_utility.trace(' detail_id_7 = :'|| p_timekeeper_data(l_table_counter_tmp).detail_id_7 );
4057 hr_utility.trace(' detail_id_8 = :'|| p_timekeeper_data(l_table_counter_tmp).detail_id_8 );
4058 hr_utility.trace(' detail_id_9 = :'|| p_timekeeper_data(l_table_counter_tmp).detail_id_9 );
4059 hr_utility.trace(' detail_id_10 = :'|| p_timekeeper_data(l_table_counter_tmp).detail_id_10 );
4060 hr_utility.trace(' detail_id_11 = :'|| p_timekeeper_data(l_table_counter_tmp).detail_id_11 );
4061 hr_utility.trace(' detail_id_12 = :'|| p_timekeeper_data(l_table_counter_tmp).detail_id_12 );
4062 hr_utility.trace(' detail_id_13 = :'|| p_timekeeper_data(l_table_counter_tmp).detail_id_13 );
4063 hr_utility.trace(' detail_id_14 = :'|| p_timekeeper_data(l_table_counter_tmp).detail_id_14 );
4064 hr_utility.trace(' detail_id_15 = :'|| p_timekeeper_data(l_table_counter_tmp).detail_id_15 );
4065 hr_utility.trace(' detail_id_16 = :'|| p_timekeeper_data(l_table_counter_tmp).detail_id_16 );
4066 hr_utility.trace(' detail_id_17 = :'|| p_timekeeper_data(l_table_counter_tmp).detail_id_17 );
4067 hr_utility.trace(' detail_id_18 = :'|| p_timekeeper_data(l_table_counter_tmp).detail_id_18 );
4068 hr_utility.trace(' detail_id_19 = :'|| p_timekeeper_data(l_table_counter_tmp).detail_id_19 );
4069 hr_utility.trace(' detail_id_20 = :'|| p_timekeeper_data(l_table_counter_tmp).detail_id_20 );
4070 hr_utility.trace(' detail_id_21 = :'|| p_timekeeper_data(l_table_counter_tmp).detail_id_21 );
4071 hr_utility.trace(' detail_id_22 = :'|| p_timekeeper_data(l_table_counter_tmp).detail_id_22 );
4072 hr_utility.trace(' detail_id_23 = :'|| p_timekeeper_data(l_table_counter_tmp).detail_id_23 );
4073 hr_utility.trace(' detail_id_24 = :'|| p_timekeeper_data(l_table_counter_tmp).detail_id_24 );
4074 hr_utility.trace(' detail_id_25 = :'|| p_timekeeper_data(l_table_counter_tmp).detail_id_25 );
4075 hr_utility.trace(' detail_id_26 = :'|| p_timekeeper_data(l_table_counter_tmp).detail_id_26 );
4076 hr_utility.trace(' detail_id_27 = :'|| p_timekeeper_data(l_table_counter_tmp).detail_id_27 );
4077 hr_utility.trace(' detail_id_28 = :'|| p_timekeeper_data(l_table_counter_tmp).detail_id_28 );
4078 hr_utility.trace(' detail_id_29 = :'|| p_timekeeper_data(l_table_counter_tmp).detail_id_29 );
4079 hr_utility.trace(' detail_id_30 = :'|| p_timekeeper_data(l_table_counter_tmp).detail_id_30 );
4080 hr_utility.trace(' detail_id_31 = :'|| p_timekeeper_data(l_table_counter_tmp).detail_id_31 );
4081 hr_utility.trace(' detail_ovn_1 = :'|| p_timekeeper_data(l_table_counter_tmp).detail_ovn_1 );
4082 hr_utility.trace(' detail_ovn_2 = :'|| p_timekeeper_data(l_table_counter_tmp).detail_ovn_2 );
4083 hr_utility.trace(' detail_ovn_3 = :'|| p_timekeeper_data(l_table_counter_tmp).detail_ovn_3 );
4084 hr_utility.trace(' detail_ovn_4 = :'|| p_timekeeper_data(l_table_counter_tmp).detail_ovn_4 );
4085 hr_utility.trace(' detail_ovn_5 = :'|| p_timekeeper_data(l_table_counter_tmp).detail_ovn_5 );
4086 hr_utility.trace(' detail_ovn_6 = :'|| p_timekeeper_data(l_table_counter_tmp).detail_ovn_6 );
4087 hr_utility.trace(' detail_ovn_7 = :'|| p_timekeeper_data(l_table_counter_tmp).detail_ovn_7 );
4088 hr_utility.trace(' detail_ovn_8 = :'|| p_timekeeper_data(l_table_counter_tmp).detail_ovn_8 );
4089 hr_utility.trace(' detail_ovn_9 = :'|| p_timekeeper_data(l_table_counter_tmp).detail_ovn_9 );
4090 hr_utility.trace(' detail_ovn_10 = :'|| p_timekeeper_data(l_table_counter_tmp).detail_ovn_10 );
4091 hr_utility.trace(' detail_ovn_11 = :'|| p_timekeeper_data(l_table_counter_tmp).detail_ovn_11 );
4092 hr_utility.trace(' detail_ovn_12 = :'|| p_timekeeper_data(l_table_counter_tmp).detail_ovn_12 );
4093 hr_utility.trace(' detail_ovn_13 = :'|| p_timekeeper_data(l_table_counter_tmp).detail_ovn_13 );
4094 hr_utility.trace(' detail_ovn_14 = :'|| p_timekeeper_data(l_table_counter_tmp).detail_ovn_14 );
4095 hr_utility.trace(' detail_ovn_15 = :'|| p_timekeeper_data(l_table_counter_tmp).detail_ovn_15 );
4096 hr_utility.trace(' detail_ovn_16 = :'|| p_timekeeper_data(l_table_counter_tmp).detail_ovn_16 );
4097 hr_utility.trace(' detail_ovn_17 = :'|| p_timekeeper_data(l_table_counter_tmp).detail_ovn_17 );
4098 hr_utility.trace(' detail_ovn_18 = :'|| p_timekeeper_data(l_table_counter_tmp).detail_ovn_18 );
4099 hr_utility.trace(' detail_ovn_19 = :'|| p_timekeeper_data(l_table_counter_tmp).detail_ovn_19 );
4100 hr_utility.trace(' detail_ovn_20 = :'|| p_timekeeper_data(l_table_counter_tmp).detail_ovn_20 );
4101 hr_utility.trace(' detail_ovn_21 = :'|| p_timekeeper_data(l_table_counter_tmp).detail_ovn_21 );
4102 hr_utility.trace(' detail_ovn_22 = :'|| p_timekeeper_data(l_table_counter_tmp).detail_ovn_22 );
4103 hr_utility.trace(' detail_ovn_23 = :'|| p_timekeeper_data(l_table_counter_tmp).detail_ovn_23 );
4104 hr_utility.trace(' detail_ovn_24 = :'|| p_timekeeper_data(l_table_counter_tmp).detail_ovn_24 );
4105 hr_utility.trace(' detail_ovn_25 = :'|| p_timekeeper_data(l_table_counter_tmp).detail_ovn_25 );
4106 hr_utility.trace(' detail_ovn_26 = :'|| p_timekeeper_data(l_table_counter_tmp).detail_ovn_26 );
4107 hr_utility.trace(' detail_ovn_27 = :'|| p_timekeeper_data(l_table_counter_tmp).detail_ovn_27 );
4108 hr_utility.trace(' detail_ovn_28 = :'|| p_timekeeper_data(l_table_counter_tmp).detail_ovn_28 );
4109 hr_utility.trace(' detail_ovn_29 = :'|| p_timekeeper_data(l_table_counter_tmp).detail_ovn_29 );
4110 hr_utility.trace(' detail_ovn_30 = :'|| p_timekeeper_data(l_table_counter_tmp).detail_ovn_30 );
4111 hr_utility.trace(' detail_ovn_31 = :'|| p_timekeeper_data(l_table_counter_tmp).detail_ovn_31 );
4112 hr_utility.trace(' day_1 = :'|| p_timekeeper_data(l_table_counter_tmp).day_1 );
4113 hr_utility.trace(' day_2 = :'|| p_timekeeper_data(l_table_counter_tmp).day_2 );
4114 hr_utility.trace(' day_3 = :'|| p_timekeeper_data(l_table_counter_tmp).day_3 );
4115 hr_utility.trace(' day_4 = :'|| p_timekeeper_data(l_table_counter_tmp).day_4 );
4116 hr_utility.trace(' day_5 = :'|| p_timekeeper_data(l_table_counter_tmp).day_5 );
4117 hr_utility.trace(' day_6 = :'|| p_timekeeper_data(l_table_counter_tmp).day_6 );
4118 hr_utility.trace(' day_7 = :'|| p_timekeeper_data(l_table_counter_tmp).day_7 );
4119 hr_utility.trace(' day_8 = :'|| p_timekeeper_data(l_table_counter_tmp).day_8 );
4120 hr_utility.trace(' day_9 = :'|| p_timekeeper_data(l_table_counter_tmp).day_9 );
4121 hr_utility.trace(' day_10 = :'|| p_timekeeper_data(l_table_counter_tmp).day_10 );
4122 hr_utility.trace(' day_11 = :'|| p_timekeeper_data(l_table_counter_tmp).day_11 );
4123 hr_utility.trace(' day_12 = :'|| p_timekeeper_data(l_table_counter_tmp).day_12 );
4124 hr_utility.trace(' day_13 = :'|| p_timekeeper_data(l_table_counter_tmp).day_13 );
4125 hr_utility.trace(' day_14 = :'|| p_timekeeper_data(l_table_counter_tmp).day_14 );
4126 hr_utility.trace(' day_15 = :'|| p_timekeeper_data(l_table_counter_tmp).day_15 );
4127 hr_utility.trace(' day_16 = :'|| p_timekeeper_data(l_table_counter_tmp).day_16 );
4128 hr_utility.trace(' day_17 = :'|| p_timekeeper_data(l_table_counter_tmp).day_17 );
4129 hr_utility.trace(' day_18 = :'|| p_timekeeper_data(l_table_counter_tmp).day_18 );
4130 hr_utility.trace(' day_19 = :'|| p_timekeeper_data(l_table_counter_tmp).day_19 );
4131 hr_utility.trace(' day_20 = :'|| p_timekeeper_data(l_table_counter_tmp).day_20 );
4132 hr_utility.trace(' day_21 = :'|| p_timekeeper_data(l_table_counter_tmp).day_21 );
4133 hr_utility.trace(' day_22 = :'|| p_timekeeper_data(l_table_counter_tmp).day_22 );
4134 hr_utility.trace(' day_23 = :'|| p_timekeeper_data(l_table_counter_tmp).day_23 );
4135 hr_utility.trace(' day_24 = :'|| p_timekeeper_data(l_table_counter_tmp).day_24 );
4136 hr_utility.trace(' day_25 = :'|| p_timekeeper_data(l_table_counter_tmp).day_25 );
4137 hr_utility.trace(' day_26 = :'|| p_timekeeper_data(l_table_counter_tmp).day_26 );
4138 hr_utility.trace(' day_27 = :'|| p_timekeeper_data(l_table_counter_tmp).day_27 );
4139 hr_utility.trace(' day_28 = :'|| p_timekeeper_data(l_table_counter_tmp).day_28 );
4140 hr_utility.trace(' day_29 = :'|| p_timekeeper_data(l_table_counter_tmp).day_29 );
4141 hr_utility.trace(' day_30 = :'|| p_timekeeper_data(l_table_counter_tmp).day_30 );
4142 hr_utility.trace(' day_31 = :'|| p_timekeeper_data(l_table_counter_tmp).day_31 );
4143 hr_utility.trace(' time_in_1 = :'|| p_timekeeper_data(l_table_counter_tmp).time_in_1 );
4144 hr_utility.trace(' time_out_1 = :'|| p_timekeeper_data(l_table_counter_tmp).time_out_1 );
4145 hr_utility.trace(' time_in_2 = :'|| p_timekeeper_data(l_table_counter_tmp).time_in_2 );
4146 hr_utility.trace(' time_out_2 = :'|| p_timekeeper_data(l_table_counter_tmp).time_out_2 );
4147 hr_utility.trace(' time_in_3 = :'|| p_timekeeper_data(l_table_counter_tmp).time_in_3 );
4148 hr_utility.trace(' time_out_3 = :'|| p_timekeeper_data(l_table_counter_tmp).time_out_3 );
4149 hr_utility.trace(' time_in_4 = :'|| p_timekeeper_data(l_table_counter_tmp).time_in_4 );
4150 hr_utility.trace(' time_out_4 = :'|| p_timekeeper_data(l_table_counter_tmp).time_out_4 );
4151 hr_utility.trace(' time_in_5 = :'|| p_timekeeper_data(l_table_counter_tmp).time_in_5 );
4152 hr_utility.trace(' time_out_5 = :'|| p_timekeeper_data(l_table_counter_tmp).time_out_5 );
4153 hr_utility.trace(' time_in_6 = :'|| p_timekeeper_data(l_table_counter_tmp).time_in_6 );
4154 hr_utility.trace(' time_out_6 = :'|| p_timekeeper_data(l_table_counter_tmp).time_out_6 );
4155 hr_utility.trace(' time_in_7 = :'|| p_timekeeper_data(l_table_counter_tmp).time_in_7 );
4156 hr_utility.trace(' time_out_7 = :'|| p_timekeeper_data(l_table_counter_tmp).time_out_7 );
4157 hr_utility.trace(' time_in_8 = :'|| p_timekeeper_data(l_table_counter_tmp).time_in_8 );
4158 hr_utility.trace(' time_out_8 = :'|| p_timekeeper_data(l_table_counter_tmp).time_out_8 );
4159 hr_utility.trace(' time_in_9 = :'|| p_timekeeper_data(l_table_counter_tmp).time_in_9 );
4160 hr_utility.trace(' time_out_9 = :'|| p_timekeeper_data(l_table_counter_tmp).time_out_9 );
4161 hr_utility.trace(' time_in_10 = :'|| p_timekeeper_data(l_table_counter_tmp).time_in_10 );
4162 hr_utility.trace(' time_out_10 = :'|| p_timekeeper_data(l_table_counter_tmp).time_out_10 );
4163 hr_utility.trace(' time_in_11 = :'|| p_timekeeper_data(l_table_counter_tmp).time_in_11 );
4164 hr_utility.trace(' time_out_11 = :'|| p_timekeeper_data(l_table_counter_tmp).time_out_11 );
4165 hr_utility.trace(' time_in_12 = :'|| p_timekeeper_data(l_table_counter_tmp).time_in_12 );
4166 hr_utility.trace(' time_out_12 = :'|| p_timekeeper_data(l_table_counter_tmp).time_out_12 );
4167 hr_utility.trace(' time_in_13 = :'|| p_timekeeper_data(l_table_counter_tmp).time_in_13 );
4168 hr_utility.trace(' time_out_13 = :'|| p_timekeeper_data(l_table_counter_tmp).time_out_13 );
4169 hr_utility.trace(' time_in_14 = :'|| p_timekeeper_data(l_table_counter_tmp).time_in_14 );
4170 hr_utility.trace(' time_out_14 = :'|| p_timekeeper_data(l_table_counter_tmp).time_out_14 );
4171 hr_utility.trace(' time_in_15 = :'|| p_timekeeper_data(l_table_counter_tmp).time_in_15 );
4172 hr_utility.trace(' time_out_15 = :'|| p_timekeeper_data(l_table_counter_tmp).time_out_15 );
4173 hr_utility.trace(' time_in_16 = :'|| p_timekeeper_data(l_table_counter_tmp).time_in_16 );
4174 hr_utility.trace(' time_out_16 = :'|| p_timekeeper_data(l_table_counter_tmp).time_out_16 );
4175 hr_utility.trace(' time_in_17 = :'|| p_timekeeper_data(l_table_counter_tmp).time_in_17 );
4176 hr_utility.trace(' time_out_17 = :'|| p_timekeeper_data(l_table_counter_tmp).time_out_17 );
4177 hr_utility.trace(' time_in_18 = :'|| p_timekeeper_data(l_table_counter_tmp).time_in_18 );
4178 hr_utility.trace(' time_out_18 = :'|| p_timekeeper_data(l_table_counter_tmp).time_out_18 );
4179 hr_utility.trace(' time_in_19 = :'|| p_timekeeper_data(l_table_counter_tmp).time_in_19 );
4180 hr_utility.trace(' time_out_19 = :'|| p_timekeeper_data(l_table_counter_tmp).time_out_19 );
4181 hr_utility.trace(' time_in_20 = :'|| p_timekeeper_data(l_table_counter_tmp).time_in_20 );
4182 hr_utility.trace(' time_out_20 = :'|| p_timekeeper_data(l_table_counter_tmp).time_out_20 );
4183 hr_utility.trace(' time_in_21 = :'|| p_timekeeper_data(l_table_counter_tmp).time_in_21 );
4184 hr_utility.trace(' time_out_21 = :'|| p_timekeeper_data(l_table_counter_tmp).time_out_21 );
4185 hr_utility.trace(' time_in_22 = :'|| p_timekeeper_data(l_table_counter_tmp).time_in_22 );
4186 hr_utility.trace(' time_out_22 = :'|| p_timekeeper_data(l_table_counter_tmp).time_out_22 );
4187 hr_utility.trace(' time_in_23 = :'|| p_timekeeper_data(l_table_counter_tmp).time_in_23 );
4188 hr_utility.trace(' time_out_23 = :'|| p_timekeeper_data(l_table_counter_tmp).time_out_23 );
4189 hr_utility.trace(' time_in_24 = :'|| p_timekeeper_data(l_table_counter_tmp).time_in_24 );
4190 hr_utility.trace(' time_out_24 = :'|| p_timekeeper_data(l_table_counter_tmp).time_out_24 );
4191 hr_utility.trace(' time_in_25 = :'|| p_timekeeper_data(l_table_counter_tmp).time_in_25 );
4192 hr_utility.trace(' time_out_25 = :'|| p_timekeeper_data(l_table_counter_tmp).time_out_25 );
4193 hr_utility.trace(' time_in_26 = :'|| p_timekeeper_data(l_table_counter_tmp).time_in_26 );
4194 hr_utility.trace(' time_out_26 = :'|| p_timekeeper_data(l_table_counter_tmp).time_out_26 );
4195 hr_utility.trace(' time_in_27 = :'|| p_timekeeper_data(l_table_counter_tmp).time_in_27 );
4196 hr_utility.trace(' time_out_27 = :'|| p_timekeeper_data(l_table_counter_tmp).time_out_27 );
4197 hr_utility.trace(' time_in_28 = :'|| p_timekeeper_data(l_table_counter_tmp).time_in_28 );
4198 hr_utility.trace(' time_out_28 = :'|| p_timekeeper_data(l_table_counter_tmp).time_out_28 );
4199 hr_utility.trace(' time_in_29 = :'|| p_timekeeper_data(l_table_counter_tmp).time_in_29 );
4200 hr_utility.trace(' time_out_29 = :'|| p_timekeeper_data(l_table_counter_tmp).time_out_29 );
4201 hr_utility.trace(' time_in_30 = :'|| p_timekeeper_data(l_table_counter_tmp).time_in_30 );
4202 hr_utility.trace(' time_out_30 = :'|| p_timekeeper_data(l_table_counter_tmp).time_out_30 );
4203 hr_utility.trace(' time_in_31 = :'|| p_timekeeper_data(l_table_counter_tmp).time_in_31 );
4204 hr_utility.trace(' time_out_31 = :'|| p_timekeeper_data(l_table_counter_tmp).time_out_31 );
4205 hr_utility.trace(' comment_text = :'|| p_timekeeper_data(l_table_counter_tmp).comment_text );
4206 hr_utility.trace(' last_update_date = :'|| p_timekeeper_data(l_table_counter_tmp).last_update_date );
4207 hr_utility.trace(' last_updated_by = :'|| p_timekeeper_data(l_table_counter_tmp).last_updated_by );
4208 hr_utility.trace(' last_update_login = :'|| p_timekeeper_data(l_table_counter_tmp).last_update_login );
4209 hr_utility.trace(' created_by = :'|| p_timekeeper_data(l_table_counter_tmp).created_by );
4210 hr_utility.trace(' creation_date = :'|| p_timekeeper_data(l_table_counter_tmp).creation_date );
4211 hr_utility.trace(' row_lock_id = :'|| p_timekeeper_data(l_table_counter_tmp).row_lock_id );
4212 hr_utility.trace(' tc_lock_success = :'|| p_timekeeper_data(l_table_counter_tmp).tc_lock_success );
4213 hr_utility.trace(' person_type = :'|| p_timekeeper_data(l_table_counter_tmp).person_type );
4214 hr_utility.trace(' timecard_message = :'|| p_timekeeper_data(l_table_counter_tmp).timecard_message );
4215 hr_utility.trace(' timecard_message_code = :'|| p_timekeeper_data(l_table_counter_tmp).timecard_message_code );
4216 hr_utility.trace(' audit_enabled = :'|| p_timekeeper_data(l_table_counter_tmp).audit_enabled );
4217
4218
4219 hr_utility.trace('-------------------------------------------------------------');
4220
4221
4222 l_table_counter_tmp := p_timekeeper_data.NEXT (l_table_counter_tmp);
4223
4224 END LOOP;
4225 hr_utility.trace(' SVG timekeeper TABLE end ');
4226 end if;
4227 END IF;
4228
4229
4230 */
4231
4232
4233 -- set in session the timekeeper_data return with query
4234 -- if we are not from the timekeeper_process_call
4235 -- if we are we not need to set the global table
4236
4237 IF g_from_tk_process = FALSE THEN
4238 g_timekeeper_data_query := p_timekeeper_data;
4239 END IF;
4240 END IF;
4241
4242 IF l_terminated_list IS NOT NULL AND p_reqryflg = 'N' THEN
4243 g_terminated_list := substr(l_terminated_list, 1,3000);
4244 ELSE
4245 g_terminated_list := NULL;
4246 END IF;
4247 END;
4248
4249
4250 ---------------------------------------------------------------------------
4251 --Add_remove_submit
4252 ---------------------------------------------------------------------------
4253 PROCEDURE add_remove_submit (
4254 p_resource_id IN NUMBER,
4255 p_start_period IN DATE,
4256 p_end_period IN DATE,
4257 p_timecard_id IN NUMBER,
4258 p_row_lock_id IN ROWID,
4259 p_operation IN VARCHAR2,
4260 p_number_rows IN NUMBER
4261 ) IS
4262 BEGIN
4263 IF p_operation = 'Y' THEN
4264 --Add the record
4265 g_submit_table (p_resource_id).resource_id := p_resource_id;
4266 g_submit_table (p_resource_id).timecard_id := p_timecard_id;
4267 g_submit_table (p_resource_id).start_time := p_start_period;
4268 g_submit_table (p_resource_id).stop_time := p_end_period;
4269 g_submit_table (p_resource_id).row_lock_id := p_row_lock_id;
4270 g_submit_table (p_resource_id).no_rows :=
4271 NVL (g_submit_table (p_resource_id).no_rows, 0) + NVL (
4272 p_number_rows,
4273 0
4274 );
4275
4276 IF g_resource_tc_table.EXISTS (p_resource_id) THEN
4277 g_resource_tc_table (p_resource_id).no_rows :=
4278 NVL (g_resource_tc_table (p_resource_id).no_rows, 0) + 1;
4279 ELSE
4280 g_resource_tc_table (p_resource_id).no_rows := 1;
4281 END IF;
4282 ELSE
4283 --- remove the row
4284 IF g_resource_tc_table.EXISTS (p_resource_id) THEN
4285 g_resource_tc_table (p_resource_id).no_rows :=
4286 NVL (g_resource_tc_table (p_resource_id).no_rows, 0) - 1;
4287 ELSE
4288 g_resource_tc_table (p_resource_id).no_rows := 0;
4289 END IF;
4290
4291 IF g_submit_table.EXISTS (p_resource_id) THEN
4292 g_submit_table (p_resource_id).no_rows :=
4293 NVL (g_submit_table (p_resource_id).no_rows, 0) - NVL (
4294 p_number_rows,
4295 0
4296 );
4297 END IF;
4298
4299 IF NVL (g_resource_tc_table (p_resource_id).no_rows, 0) <= 0 THEN
4300 g_submit_table.DELETE (p_resource_id);
4301 END IF;
4302 END IF;
4303 END;
4304
4305
4306 ---------------------------------------------------------------------------
4307 --Add_remove_submit
4308 ---------------------------------------------------------------------------
4309 PROCEDURE add_remove_lock (
4310 p_resource_id IN NUMBER,
4311 p_start_period IN DATE,
4312 p_end_period IN DATE,
4313 p_timecard_id IN NUMBER,
4314 p_row_lock_id IN ROWID,
4315 p_operation IN VARCHAR2
4316 ) IS
4317 BEGIN
4318 IF p_operation = 'Y' THEN
4319 --Add the record
4320 g_lock_table (p_resource_id).resource_id := p_resource_id;
4321 g_lock_table (p_resource_id).timecard_id := p_timecard_id;
4322 g_lock_table (p_resource_id).start_time := p_start_period;
4323 g_lock_table (p_resource_id).stop_time := p_end_period;
4324 g_lock_table (p_resource_id).row_lock_id := p_row_lock_id;
4325 ELSE
4326 g_lock_table.DELETE (p_resource_id);
4327 END IF;
4328 END;
4329
4330
4331 ----------------------------------------------
4332 FUNCTION check_row_lock (
4333 p_resource_id IN NUMBER
4334 )
4335 RETURN BOOLEAN IS
4336 BEGIN
4337 IF g_lock_table.EXISTS (p_resource_id) THEN
4338 RETURN TRUE;
4339 ELSE
4340 RETURN FALSE;
4341 END IF;
4342 /*ADVICE(3349): Last statement in function must be a RETURN [510] */
4343
4344 END;
4345 /*ADVICE(3352): Function with more than one RETURN statement in the executable section [512] */
4346
4347
4348
4349 ----------------------------------------------
4350 FUNCTION get_row_lock (
4351 p_resource_id IN NUMBER
4352 )
4353 RETURN VARCHAR2 IS
4354 BEGIN
4355 IF g_lock_table.EXISTS (p_resource_id) THEN
4356 RETURN ROWIDTOCHAR (g_lock_table (p_resource_id).row_lock_id);
4357 ELSE
4358 RETURN NULL;
4359 END IF;
4360 /*ADVICE(3367): Last statement in function must be a RETURN [510] */
4361
4362 END;
4363 /*ADVICE(3370): Function with more than one RETURN statement in the executable section [512] */
4364
4365
4366 ----------------------------------------------
4367 FUNCTION not_empty_row
4368 (p_insert_data IN OUT NOCOPY t_time_info)
4369 RETURN BOOLEAN IS
4370
4371 BEGIN
4372 g_debug :=hr_utility.debug_enabled;
4373
4374 if g_debug then
4375 hr_utility.trace('p_insert_data.timecard_end_period '||p_insert_data.timecard_end_period );
4376 hr_utility.trace('p_insert_data.resource_id '||p_insert_data.resource_id );
4377 hr_utility.trace('p_insert_data.employee_number '||p_insert_data.employee_number );
4378 hr_utility.trace('p_insert_data.employee_full_name '||p_insert_data.employee_full_name );
4379 hr_utility.trace('p_insert_data.timecard_id '||p_insert_data.timecard_id );
4380 hr_utility.trace('p_insert_data.timecard_ovn '||p_insert_data.timecard_ovn );
4381 hr_utility.trace('p_insert_data.check_box '||p_insert_data.check_box );
4382 hr_utility.trace('p_insert_data.error_status '||p_insert_data.error_status );
4383 hr_utility.trace('p_insert_data.timecard_status '||p_insert_data.timecard_status );
4384 hr_utility.trace('p_insert_data.timecard_status_code '||p_insert_data.timecard_status_code );
4385 hr_utility.trace('p_insert_data.attr_value_1 '||p_insert_data.attr_value_1 );
4386 hr_utility.trace('p_insert_data.attr_value_2 '||p_insert_data.attr_value_2 );
4387 hr_utility.trace('p_insert_data.attr_value_3 '||p_insert_data.attr_value_3 );
4388 hr_utility.trace('p_insert_data.attr_value_4 '||p_insert_data.attr_value_4 );
4389 hr_utility.trace('p_insert_data.attr_value_5 '||p_insert_data.attr_value_5 );
4390 hr_utility.trace('p_insert_data.attr_value_6 '||p_insert_data.attr_value_6 );
4391 hr_utility.trace('p_insert_data.attr_value_7 '||p_insert_data.attr_value_7 );
4392 hr_utility.trace('p_insert_data.attr_value_8 '||p_insert_data.attr_value_8 );
4393 hr_utility.trace('p_insert_data.attr_value_9 '||p_insert_data.attr_value_9 );
4394 hr_utility.trace('p_insert_data.attr_value_10 '||p_insert_data.attr_value_10 );
4395 hr_utility.trace('p_insert_data.attr_value_11 '||p_insert_data.attr_value_11 );
4396 hr_utility.trace('p_insert_data.attr_value_12 '||p_insert_data.attr_value_12 );
4397 hr_utility.trace('p_insert_data.attr_value_13 '||p_insert_data.attr_value_13 );
4398 hr_utility.trace('p_insert_data.attr_value_14 '||p_insert_data.attr_value_14 );
4399 hr_utility.trace('p_insert_data.attr_value_15 '||p_insert_data.attr_value_15 );
4400 hr_utility.trace('p_insert_data.attr_value_16 '||p_insert_data.attr_value_16 );
4401 hr_utility.trace('p_insert_data.attr_value_17 '||p_insert_data.attr_value_17 );
4402 hr_utility.trace('p_insert_data.attr_value_18 '||p_insert_data.attr_value_18 );
4403 hr_utility.trace('p_insert_data.attr_value_19 '||p_insert_data.attr_value_19 );
4404 hr_utility.trace('p_insert_data.attr_value_20 '||p_insert_data.attr_value_20 );
4405 hr_utility.trace('p_insert_data.attr_id_1 '||p_insert_data.attr_id_1 );
4406 hr_utility.trace('p_insert_data.attr_id_2 '||p_insert_data.attr_id_2 );
4407 hr_utility.trace('p_insert_data.attr_id_3 '||p_insert_data.attr_id_3 );
4408 hr_utility.trace('p_insert_data.attr_id_4 '||p_insert_data.attr_id_4 );
4409 hr_utility.trace('p_insert_data.attr_id_5 '||p_insert_data.attr_id_5 );
4410 hr_utility.trace('p_insert_data.attr_id_6 '||p_insert_data.attr_id_6 );
4411 hr_utility.trace('p_insert_data.attr_id_7 '||p_insert_data.attr_id_7 );
4412 hr_utility.trace('p_insert_data.attr_id_8 '||p_insert_data.attr_id_8 );
4413 hr_utility.trace('p_insert_data.attr_id_9 '||p_insert_data.attr_id_9 );
4414 hr_utility.trace('p_insert_data.attr_id_10 '||p_insert_data.attr_id_10 );
4415 hr_utility.trace('p_insert_data.attr_id_11 '||p_insert_data.attr_id_11 );
4416 hr_utility.trace('p_insert_data.attr_id_12 '||p_insert_data.attr_id_12 );
4417 hr_utility.trace('p_insert_data.attr_id_13 '||p_insert_data.attr_id_13 );
4418 hr_utility.trace('p_insert_data.attr_id_14 '||p_insert_data.attr_id_14 );
4419 hr_utility.trace('p_insert_data.attr_id_15 '||p_insert_data.attr_id_15 );
4420 hr_utility.trace('p_insert_data.attr_id_16 '||p_insert_data.attr_id_16 );
4421 hr_utility.trace('p_insert_data.attr_id_17 '||p_insert_data.attr_id_17 );
4422 hr_utility.trace('p_insert_data.attr_id_18 '||p_insert_data.attr_id_18 );
4423 hr_utility.trace('p_insert_data.attr_id_19 '||p_insert_data.attr_id_19 );
4424 hr_utility.trace('p_insert_data.attr_id_20 '||p_insert_data.attr_id_20 );
4425 hr_utility.trace('p_insert_data.attr_oldid_1 '||p_insert_data.attr_oldid_1 );
4426 hr_utility.trace('p_insert_data.attr_oldid_2 '||p_insert_data.attr_oldid_2 );
4427 hr_utility.trace('p_insert_data.attr_oldid_3 '||p_insert_data.attr_oldid_3 );
4428 hr_utility.trace('p_insert_data.attr_oldid_4 '||p_insert_data.attr_oldid_4 );
4429 hr_utility.trace('p_insert_data.attr_oldid_5 '||p_insert_data.attr_oldid_5 );
4430 hr_utility.trace('p_insert_data.attr_oldid_6 '||p_insert_data.attr_oldid_6 );
4431 hr_utility.trace('p_insert_data.attr_oldid_7 '||p_insert_data.attr_oldid_7 );
4432 hr_utility.trace('p_insert_data.attr_oldid_8 '||p_insert_data.attr_oldid_8 );
4433 hr_utility.trace('p_insert_data.attr_oldid_9 '||p_insert_data.attr_oldid_9 );
4434 hr_utility.trace('p_insert_data.attr_oldid_10 '||p_insert_data.attr_oldid_10 );
4435 hr_utility.trace('p_insert_data.attr_oldid_11 '||p_insert_data.attr_oldid_11 );
4436 hr_utility.trace('p_insert_data.attr_oldid_12 '||p_insert_data.attr_oldid_12 );
4437 hr_utility.trace('p_insert_data.attr_oldid_13 '||p_insert_data.attr_oldid_13 );
4438 hr_utility.trace('p_insert_data.attr_oldid_14 '||p_insert_data.attr_oldid_14 );
4439 hr_utility.trace('p_insert_data.attr_oldid_15 '||p_insert_data.attr_oldid_15 );
4440 hr_utility.trace('p_insert_data.attr_oldid_16 '||p_insert_data.attr_oldid_16 );
4441 hr_utility.trace('p_insert_data.attr_oldid_17 '||p_insert_data.attr_oldid_17 );
4442 hr_utility.trace('p_insert_data.attr_oldid_18 '||p_insert_data.attr_oldid_18 );
4443 hr_utility.trace('p_insert_data.attr_oldid_19 '||p_insert_data.attr_oldid_19 );
4444 hr_utility.trace('p_insert_data.attr_oldid_20 '||p_insert_data.attr_oldid_20 );
4445 hr_utility.trace('p_insert_data.timekeeper_action '||p_insert_data.timekeeper_action );
4446 hr_utility.trace('p_insert_data.detail_id_1 '||p_insert_data.detail_id_1 );
4447 hr_utility.trace('p_insert_data.detail_id_2 '||p_insert_data.detail_id_2 );
4448 hr_utility.trace('p_insert_data.detail_id_3 '||p_insert_data.detail_id_3 );
4449 hr_utility.trace('p_insert_data.detail_id_4 '||p_insert_data.detail_id_4 );
4450 hr_utility.trace('p_insert_data.detail_id_5 '||p_insert_data.detail_id_5 );
4451 hr_utility.trace('p_insert_data.detail_id_6 '||p_insert_data.detail_id_6 );
4452 hr_utility.trace('p_insert_data.detail_id_7 '||p_insert_data.detail_id_7 );
4453 hr_utility.trace('p_insert_data.detail_id_8 '||p_insert_data.detail_id_8 );
4454 hr_utility.trace('p_insert_data.detail_id_9 '||p_insert_data.detail_id_9 );
4455 hr_utility.trace('p_insert_data.detail_id_10 '||p_insert_data.detail_id_10 );
4456 hr_utility.trace('p_insert_data.detail_id_11 '||p_insert_data.detail_id_11 );
4457 hr_utility.trace('p_insert_data.detail_id_12 '||p_insert_data.detail_id_12 );
4458 hr_utility.trace('p_insert_data.detail_id_13 '||p_insert_data.detail_id_13 );
4459 hr_utility.trace('p_insert_data.detail_id_14 '||p_insert_data.detail_id_14 );
4460 hr_utility.trace('p_insert_data.detail_id_15 '||p_insert_data.detail_id_15 );
4461 hr_utility.trace('p_insert_data.detail_id_16 '||p_insert_data.detail_id_16 );
4462 hr_utility.trace('p_insert_data.detail_id_17 '||p_insert_data.detail_id_17 );
4463 hr_utility.trace('p_insert_data.detail_id_18 '||p_insert_data.detail_id_18 );
4464 hr_utility.trace('p_insert_data.detail_id_19 '||p_insert_data.detail_id_19 );
4465 hr_utility.trace('p_insert_data.detail_id_20 '||p_insert_data.detail_id_20 );
4466 hr_utility.trace('p_insert_data.detail_id_21 '||p_insert_data.detail_id_21 );
4467 hr_utility.trace('p_insert_data.detail_id_22 '||p_insert_data.detail_id_22 );
4468 hr_utility.trace('p_insert_data.detail_id_23 '||p_insert_data.detail_id_23 );
4469 hr_utility.trace('p_insert_data.detail_id_24 '||p_insert_data.detail_id_24 );
4470 hr_utility.trace('p_insert_data.detail_id_25 '||p_insert_data.detail_id_25 );
4471 hr_utility.trace('p_insert_data.detail_id_26 '||p_insert_data.detail_id_26 );
4472 hr_utility.trace('p_insert_data.detail_id_27 '||p_insert_data.detail_id_27 );
4473 hr_utility.trace('p_insert_data.detail_id_28 '||p_insert_data.detail_id_28 );
4474 hr_utility.trace('p_insert_data.detail_id_29 '||p_insert_data.detail_id_29 );
4475 hr_utility.trace('p_insert_data.detail_id_30 '||p_insert_data.detail_id_30 );
4476 hr_utility.trace('p_insert_data.detail_id_31 '||p_insert_data.detail_id_31 );
4477 hr_utility.trace('p_insert_data.detail_ovn_1 '||p_insert_data.detail_ovn_1 );
4478 hr_utility.trace('p_insert_data.detail_ovn_2 '||p_insert_data.detail_ovn_2 );
4479 hr_utility.trace('p_insert_data.detail_ovn_3 '||p_insert_data.detail_ovn_3 );
4480 hr_utility.trace('p_insert_data.detail_ovn_4 '||p_insert_data.detail_ovn_4 );
4481 hr_utility.trace('p_insert_data.detail_ovn_5 '||p_insert_data.detail_ovn_5 );
4482 hr_utility.trace('p_insert_data.detail_ovn_6 '||p_insert_data.detail_ovn_6 );
4483 hr_utility.trace('p_insert_data.detail_ovn_7 '||p_insert_data.detail_ovn_7 );
4484 hr_utility.trace('p_insert_data.detail_ovn_8 '||p_insert_data.detail_ovn_8 );
4485 hr_utility.trace('p_insert_data.detail_ovn_9 '||p_insert_data.detail_ovn_9 );
4486 hr_utility.trace('p_insert_data.detail_ovn_10 '||p_insert_data.detail_ovn_10 );
4487 hr_utility.trace('p_insert_data.detail_ovn_11 '||p_insert_data.detail_ovn_11 );
4488 hr_utility.trace('p_insert_data.detail_ovn_12 '||p_insert_data.detail_ovn_12 );
4489 hr_utility.trace('p_insert_data.detail_ovn_13 '||p_insert_data.detail_ovn_13 );
4490 hr_utility.trace('p_insert_data.detail_ovn_14 '||p_insert_data.detail_ovn_14 );
4491 hr_utility.trace('p_insert_data.detail_ovn_15 '||p_insert_data.detail_ovn_15 );
4492 hr_utility.trace('p_insert_data.detail_ovn_16 '||p_insert_data.detail_ovn_16 );
4493 hr_utility.trace('p_insert_data.detail_ovn_17 '||p_insert_data.detail_ovn_17 );
4494 hr_utility.trace('p_insert_data.detail_ovn_18 '||p_insert_data.detail_ovn_18 );
4495 hr_utility.trace('p_insert_data.detail_ovn_19 '||p_insert_data.detail_ovn_19 );
4496 hr_utility.trace('p_insert_data.detail_ovn_20 '||p_insert_data.detail_ovn_20 );
4497 hr_utility.trace('p_insert_data.detail_ovn_21 '||p_insert_data.detail_ovn_21 );
4498 hr_utility.trace('p_insert_data.detail_ovn_22 '||p_insert_data.detail_ovn_22 );
4499 hr_utility.trace('p_insert_data.detail_ovn_23 '||p_insert_data.detail_ovn_23 );
4500 hr_utility.trace('p_insert_data.detail_ovn_24 '||p_insert_data.detail_ovn_24 );
4501 hr_utility.trace('p_insert_data.detail_ovn_25 '||p_insert_data.detail_ovn_25 );
4502 hr_utility.trace('p_insert_data.detail_ovn_26 '||p_insert_data.detail_ovn_26 );
4503 hr_utility.trace('p_insert_data.detail_ovn_27 '||p_insert_data.detail_ovn_27 );
4504 hr_utility.trace('p_insert_data.detail_ovn_28 '||p_insert_data.detail_ovn_28 );
4505 hr_utility.trace('p_insert_data.detail_ovn_29 '||p_insert_data.detail_ovn_29 );
4506 hr_utility.trace('p_insert_data.detail_ovn_30 '||p_insert_data.detail_ovn_30 );
4507 hr_utility.trace('p_insert_data.detail_ovn_31 '||p_insert_data.detail_ovn_31 );
4508 hr_utility.trace('p_insert_data.day_1 '||p_insert_data.day_1 );
4509 hr_utility.trace('p_insert_data.day_2 '||p_insert_data.day_2 );
4510 hr_utility.trace('p_insert_data.day_3 '||p_insert_data.day_3 );
4511 hr_utility.trace('p_insert_data.day_4 '||p_insert_data.day_4 );
4512 hr_utility.trace('p_insert_data.day_5 '||p_insert_data.day_5 );
4513 hr_utility.trace('p_insert_data.day_6 '||p_insert_data.day_6 );
4514 hr_utility.trace('p_insert_data.day_7 '||p_insert_data.day_7 );
4515 hr_utility.trace('p_insert_data.day_8 '||p_insert_data.day_8 );
4516 hr_utility.trace('p_insert_data.day_9 '||p_insert_data.day_9 );
4517 hr_utility.trace('p_insert_data.day_10 '||p_insert_data.day_10 );
4518 hr_utility.trace('p_insert_data.day_11 '||p_insert_data.day_11 );
4519 hr_utility.trace('p_insert_data.day_12 '||p_insert_data.day_12 );
4520 hr_utility.trace('p_insert_data.day_13 '||p_insert_data.day_13 );
4521 hr_utility.trace('p_insert_data.day_14 '||p_insert_data.day_14 );
4522 hr_utility.trace('p_insert_data.day_15 '||p_insert_data.day_15 );
4523 hr_utility.trace('p_insert_data.day_16 '||p_insert_data.day_16 );
4524 hr_utility.trace('p_insert_data.day_17 '||p_insert_data.day_17 );
4525 hr_utility.trace('p_insert_data.day_18 '||p_insert_data.day_18 );
4526 hr_utility.trace('p_insert_data.day_19 '||p_insert_data.day_19 );
4527 hr_utility.trace('p_insert_data.day_20 '||p_insert_data.day_20 );
4528 hr_utility.trace('p_insert_data.day_21 '||p_insert_data.day_21 );
4529 hr_utility.trace('p_insert_data.day_22 '||p_insert_data.day_22 );
4530 hr_utility.trace('p_insert_data.day_23 '||p_insert_data.day_23 );
4531 hr_utility.trace('p_insert_data.day_24 '||p_insert_data.day_24 );
4532 hr_utility.trace('p_insert_data.day_25 '||p_insert_data.day_25 );
4533 hr_utility.trace('p_insert_data.day_26 '||p_insert_data.day_26 );
4534 hr_utility.trace('p_insert_data.day_27 '||p_insert_data.day_27 );
4535 hr_utility.trace('p_insert_data.day_28 '||p_insert_data.day_28 );
4536 hr_utility.trace('p_insert_data.day_29 '||p_insert_data.day_29 );
4537 hr_utility.trace('p_insert_data.day_30 '||p_insert_data.day_30 );
4538 hr_utility.trace('p_insert_data.day_31 '||p_insert_data.day_31 );
4539 hr_utility.trace('p_insert_data.time_in_1 '||p_insert_data.time_in_1 );
4540 hr_utility.trace('p_insert_data.time_out_1 '||p_insert_data.time_out_1 );
4541 hr_utility.trace('p_insert_data.time_in_2 '||p_insert_data.time_in_2 );
4542 hr_utility.trace('p_insert_data.time_out_2 '||p_insert_data.time_out_2 );
4543 hr_utility.trace('p_insert_data.time_in_3 '||p_insert_data.time_in_3 );
4544 hr_utility.trace('p_insert_data.time_out_3 '||p_insert_data.time_out_3 );
4545 hr_utility.trace('p_insert_data.time_in_4 '||p_insert_data.time_in_4 );
4546 hr_utility.trace('p_insert_data.time_out_4 '||p_insert_data.time_out_4 );
4547 hr_utility.trace('p_insert_data.time_in_5 '||p_insert_data.time_in_5 );
4548 hr_utility.trace('p_insert_data.time_out_5 '||p_insert_data.time_out_5 );
4549 hr_utility.trace('p_insert_data.time_in_6 '||p_insert_data.time_in_6 );
4550 hr_utility.trace('p_insert_data.time_out_6 '||p_insert_data.time_out_6 );
4551 hr_utility.trace('p_insert_data.time_in_7 '||p_insert_data.time_in_7 );
4552 hr_utility.trace('p_insert_data.time_out_7 '||p_insert_data.time_out_7 );
4553 hr_utility.trace('p_insert_data.time_in_8 '||p_insert_data.time_in_8 );
4554 hr_utility.trace('p_insert_data.time_out_8 '||p_insert_data.time_out_8 );
4555 hr_utility.trace('p_insert_data.time_in_9 '||p_insert_data.time_in_9 );
4556 hr_utility.trace('p_insert_data.time_out_9 '||p_insert_data.time_out_9 );
4557 hr_utility.trace('p_insert_data.time_in_10 '||p_insert_data.time_in_10 );
4558 hr_utility.trace('p_insert_data.time_out_10 '||p_insert_data.time_out_10 );
4559 hr_utility.trace('p_insert_data.time_in_11 '||p_insert_data.time_in_11 );
4560 hr_utility.trace('p_insert_data.time_out_11 '||p_insert_data.time_out_11 );
4561 hr_utility.trace('p_insert_data.time_in_12 '||p_insert_data.time_in_12 );
4562 hr_utility.trace('p_insert_data.time_out_12 '||p_insert_data.time_out_12 );
4563 hr_utility.trace('p_insert_data.time_in_13 '||p_insert_data.time_in_13 );
4564 hr_utility.trace('p_insert_data.time_out_13 '||p_insert_data.time_out_13 );
4565 hr_utility.trace('p_insert_data.time_in_14 '||p_insert_data.time_in_14 );
4566 hr_utility.trace('p_insert_data.time_out_14 '||p_insert_data.time_out_14 );
4567 hr_utility.trace('p_insert_data.time_in_15 '||p_insert_data.time_in_15 );
4568 hr_utility.trace('p_insert_data.time_out_15 '||p_insert_data.time_out_15 );
4569 hr_utility.trace('p_insert_data.time_in_16 '||p_insert_data.time_in_16 );
4570 hr_utility.trace('p_insert_data.time_out_16 '||p_insert_data.time_out_16 );
4571 hr_utility.trace('p_insert_data.time_in_17 '||p_insert_data.time_in_17 );
4572 hr_utility.trace('p_insert_data.time_out_17 '||p_insert_data.time_out_17 );
4573 hr_utility.trace('p_insert_data.time_in_18 '||p_insert_data.time_in_18 );
4574 hr_utility.trace('p_insert_data.time_out_18 '||p_insert_data.time_out_18 );
4575 hr_utility.trace('p_insert_data.time_in_19 '||p_insert_data.time_in_19 );
4576 hr_utility.trace('p_insert_data.time_out_19 '||p_insert_data.time_out_19 );
4577 hr_utility.trace('p_insert_data.time_in_20 '||p_insert_data.time_in_20 );
4578 hr_utility.trace('p_insert_data.time_out_20 '||p_insert_data.time_out_20 );
4579 hr_utility.trace('p_insert_data.time_in_21 '||p_insert_data.time_in_21 );
4580 hr_utility.trace('p_insert_data.time_out_21 '||p_insert_data.time_out_21 );
4581 hr_utility.trace('p_insert_data.time_in_22 '||p_insert_data.time_in_22 );
4582 hr_utility.trace('p_insert_data.time_out_22 '||p_insert_data.time_out_22 );
4583 hr_utility.trace('p_insert_data.time_in_23 '||p_insert_data.time_in_23 );
4584 hr_utility.trace('p_insert_data.time_out_23 '||p_insert_data.time_out_23 );
4585 hr_utility.trace('p_insert_data.time_in_24 '||p_insert_data.time_in_24 );
4586 hr_utility.trace('p_insert_data.time_out_24 '||p_insert_data.time_out_24 );
4587 hr_utility.trace('p_insert_data.time_in_25 '||p_insert_data.time_in_25 );
4588 hr_utility.trace('p_insert_data.time_out_25 '||p_insert_data.time_out_25 );
4589 hr_utility.trace('p_insert_data.time_in_26 '||p_insert_data.time_in_26 );
4590 hr_utility.trace('p_insert_data.time_out_26 '||p_insert_data.time_out_26 );
4591 hr_utility.trace('p_insert_data.time_in_27 '||p_insert_data.time_in_27 );
4592 hr_utility.trace('p_insert_data.time_out_27 '||p_insert_data.time_out_27 );
4593 hr_utility.trace('p_insert_data.time_in_28 '||p_insert_data.time_in_28 );
4594 hr_utility.trace('p_insert_data.time_out_28 '||p_insert_data.time_out_28 );
4595 hr_utility.trace('p_insert_data.time_in_29 '||p_insert_data.time_in_29 );
4596 hr_utility.trace('p_insert_data.time_out_29 '||p_insert_data.time_out_29 );
4597 hr_utility.trace('p_insert_data.time_in_30 '||p_insert_data.time_in_30 );
4598 hr_utility.trace('p_insert_data.time_out_30 '||p_insert_data.time_out_30 );
4599 hr_utility.trace('p_insert_data.time_in_31 '||p_insert_data.time_in_31 );
4600 hr_utility.trace('p_insert_data.time_out_31 '||p_insert_data.time_out_31 );
4601 hr_utility.trace('p_insert_data.comment_text '||p_insert_data.comment_text );
4602 hr_utility.trace('p_insert_data.last_update_date '||p_insert_data.last_update_date );
4603 hr_utility.trace('p_insert_data.last_updated_by '||p_insert_data.last_updated_by );
4604 hr_utility.trace('p_insert_data.last_update_login '||p_insert_data.last_update_login );
4605 hr_utility.trace('p_insert_data.created_by '||p_insert_data.created_by );
4606 hr_utility.trace('p_insert_data.creation_date '||p_insert_data.creation_date );
4607 hr_utility.trace('p_insert_data.row_lock_id '||p_insert_data.row_lock_id );
4608 hr_utility.trace('p_insert_data.tc_lock_success '||p_insert_data.tc_lock_success );
4609 hr_utility.trace('p_insert_data.person_type '||p_insert_data.person_type );
4610 hr_utility.trace('p_insert_data.timecard_message '||p_insert_data.timecard_message );
4611 hr_utility.trace('p_insert_data.timecard_message_code '||p_insert_data.timecard_message_code );
4612 hr_utility.trace('p_insert_data.audit_enabled '||p_insert_data.audit_enabled );
4613 end if;
4614
4615
4616 IF p_insert_data.timecard_start_period is not null OR
4617 p_insert_data.timecard_end_period is not null OR
4618 -- p_insert_data.resource_id IS NOT NULL OR
4619 -- p_insert_data.employee_number IS NOT NULL OR
4620 -- p_insert_data.employee_full_name IS NOT NULL OR
4621 p_insert_data.timecard_id IS NOT NULL OR
4622 p_insert_data.timecard_ovn IS NOT NULL OR
4623 --p_insert_data.check_box IS NOT NULL OR
4624 p_insert_data.error_status IS NOT NULL OR
4625 p_insert_data.timecard_status IS NOT NULL OR
4626 p_insert_data.timecard_status_code IS NOT NULL OR
4627 p_insert_data.attr_value_1 IS NOT NULL OR
4628 p_insert_data.attr_value_2 IS NOT NULL OR
4629 p_insert_data.attr_value_3 IS NOT NULL OR
4630 p_insert_data.attr_value_4 IS NOT NULL OR
4631 p_insert_data.attr_value_5 IS NOT NULL OR
4632 p_insert_data.attr_value_6 IS NOT NULL OR
4633 p_insert_data.attr_value_7 IS NOT NULL OR
4634 p_insert_data.attr_value_8 IS NOT NULL OR
4635 p_insert_data.attr_value_9 IS NOT NULL OR
4636 p_insert_data.attr_value_10 IS NOT NULL OR
4637 p_insert_data.attr_value_11 IS NOT NULL OR
4638 p_insert_data.attr_value_12 IS NOT NULL OR
4639 p_insert_data.attr_value_13 IS NOT NULL OR
4640 p_insert_data.attr_value_14 IS NOT NULL OR
4641 p_insert_data.attr_value_15 IS NOT NULL OR
4642 p_insert_data.attr_value_16 IS NOT NULL OR
4643 p_insert_data.attr_value_17 IS NOT NULL OR
4644 p_insert_data.attr_value_18 IS NOT NULL OR
4645 p_insert_data.attr_value_19 IS NOT NULL OR
4646 p_insert_data.attr_value_20 IS NOT NULL OR
4647 p_insert_data.attr_id_1 IS NOT NULL OR
4648 p_insert_data.attr_id_2 IS NOT NULL OR
4649 p_insert_data.attr_id_3 IS NOT NULL OR
4650 p_insert_data.attr_id_4 IS NOT NULL OR
4651 p_insert_data.attr_id_5 IS NOT NULL OR
4652 p_insert_data.attr_id_6 IS NOT NULL OR
4653 p_insert_data.attr_id_7 IS NOT NULL OR
4654 p_insert_data.attr_id_8 IS NOT NULL OR
4655 p_insert_data.attr_id_9 IS NOT NULL OR
4656 p_insert_data.attr_id_10 IS NOT NULL OR
4657 p_insert_data.attr_id_11 IS NOT NULL OR
4658 p_insert_data.attr_id_12 IS NOT NULL OR
4659 p_insert_data.attr_id_13 IS NOT NULL OR
4660 p_insert_data.attr_id_14 IS NOT NULL OR
4661 p_insert_data.attr_id_15 IS NOT NULL OR
4662 p_insert_data.attr_id_16 IS NOT NULL OR
4663 p_insert_data.attr_id_17 IS NOT NULL OR
4664 p_insert_data.attr_id_18 IS NOT NULL OR
4665 p_insert_data.attr_id_19 IS NOT NULL OR
4666 p_insert_data.attr_id_20 IS NOT NULL OR
4667 p_insert_data.attr_oldid_1 IS NOT NULL OR
4668 p_insert_data.attr_oldid_2 IS NOT NULL OR
4669 p_insert_data.attr_oldid_3 IS NOT NULL OR
4670 p_insert_data.attr_oldid_4 IS NOT NULL OR
4671 p_insert_data.attr_oldid_5 IS NOT NULL OR
4672 p_insert_data.attr_oldid_6 IS NOT NULL OR
4673 p_insert_data.attr_oldid_7 IS NOT NULL OR
4674 p_insert_data.attr_oldid_8 IS NOT NULL OR
4675 p_insert_data.attr_oldid_9 IS NOT NULL OR
4676 p_insert_data.attr_oldid_10 IS NOT NULL OR
4677 p_insert_data.attr_oldid_11 IS NOT NULL OR
4678 p_insert_data.attr_oldid_12 IS NOT NULL OR
4679 p_insert_data.attr_oldid_13 IS NOT NULL OR
4680 p_insert_data.attr_oldid_14 IS NOT NULL OR
4681 p_insert_data.attr_oldid_15 IS NOT NULL OR
4682 p_insert_data.attr_oldid_16 IS NOT NULL OR
4683 p_insert_data.attr_oldid_17 IS NOT NULL OR
4684 p_insert_data.attr_oldid_18 IS NOT NULL OR
4685 p_insert_data.attr_oldid_19 IS NOT NULL OR
4686 p_insert_data.attr_oldid_20 IS NOT NULL OR
4687 p_insert_data.timekeeper_action IS NOT NULL OR
4688 p_insert_data.detail_id_1 IS NOT NULL OR
4689 p_insert_data.detail_id_2 IS NOT NULL OR
4690 p_insert_data.detail_id_3 IS NOT NULL OR
4691 p_insert_data.detail_id_4 IS NOT NULL OR
4692 p_insert_data.detail_id_5 IS NOT NULL OR
4693 p_insert_data.detail_id_6 IS NOT NULL OR
4694 p_insert_data.detail_id_7 IS NOT NULL OR
4695 p_insert_data.detail_id_8 IS NOT NULL OR
4696 p_insert_data.detail_id_9 IS NOT NULL OR
4697 p_insert_data.detail_id_10 IS NOT NULL OR
4698 p_insert_data.detail_id_11 IS NOT NULL OR
4699 p_insert_data.detail_id_12 IS NOT NULL OR
4700 p_insert_data.detail_id_13 IS NOT NULL OR
4701 p_insert_data.detail_id_14 IS NOT NULL OR
4702 p_insert_data.detail_id_15 IS NOT NULL OR
4703 p_insert_data.detail_id_16 IS NOT NULL OR
4704 p_insert_data.detail_id_17 IS NOT NULL OR
4705 p_insert_data.detail_id_18 IS NOT NULL OR
4706 p_insert_data.detail_id_19 IS NOT NULL OR
4707 p_insert_data.detail_id_20 IS NOT NULL OR
4708 p_insert_data.detail_id_21 IS NOT NULL OR
4709 p_insert_data.detail_id_22 IS NOT NULL OR
4710 p_insert_data.detail_id_23 IS NOT NULL OR
4711 p_insert_data.detail_id_24 IS NOT NULL OR
4712 p_insert_data.detail_id_25 IS NOT NULL OR
4713 p_insert_data.detail_id_26 IS NOT NULL OR
4714 p_insert_data.detail_id_27 IS NOT NULL OR
4715 p_insert_data.detail_id_28 IS NOT NULL OR
4716 p_insert_data.detail_id_29 IS NOT NULL OR
4717 p_insert_data.detail_id_30 IS NOT NULL OR
4718 p_insert_data.detail_id_31 IS NOT NULL OR
4719 p_insert_data.detail_ovn_1 IS NOT NULL OR
4720 p_insert_data.detail_ovn_2 IS NOT NULL OR
4721 p_insert_data.detail_ovn_3 IS NOT NULL OR
4722 p_insert_data.detail_ovn_4 IS NOT NULL OR
4723 p_insert_data.detail_ovn_5 IS NOT NULL OR
4724 p_insert_data.detail_ovn_6 IS NOT NULL OR
4725 p_insert_data.detail_ovn_7 IS NOT NULL OR
4726 p_insert_data.detail_ovn_8 IS NOT NULL OR
4727 p_insert_data.detail_ovn_9 IS NOT NULL OR
4728 p_insert_data.detail_ovn_10 IS NOT NULL OR
4729 p_insert_data.detail_ovn_11 IS NOT NULL OR
4730 p_insert_data.detail_ovn_12 IS NOT NULL OR
4731 p_insert_data.detail_ovn_13 IS NOT NULL OR
4732 p_insert_data.detail_ovn_14 IS NOT NULL OR
4733 p_insert_data.detail_ovn_15 IS NOT NULL OR
4734 p_insert_data.detail_ovn_16 IS NOT NULL OR
4735 p_insert_data.detail_ovn_17 IS NOT NULL OR
4736 p_insert_data.detail_ovn_18 IS NOT NULL OR
4737 p_insert_data.detail_ovn_19 IS NOT NULL OR
4738 p_insert_data.detail_ovn_20 IS NOT NULL OR
4739 p_insert_data.detail_ovn_21 IS NOT NULL OR
4740 p_insert_data.detail_ovn_22 IS NOT NULL OR
4741 p_insert_data.detail_ovn_23 IS NOT NULL OR
4742 p_insert_data.detail_ovn_24 IS NOT NULL OR
4743 p_insert_data.detail_ovn_25 IS NOT NULL OR
4744 p_insert_data.detail_ovn_26 IS NOT NULL OR
4745 p_insert_data.detail_ovn_27 IS NOT NULL OR
4746 p_insert_data.detail_ovn_28 IS NOT NULL OR
4747 p_insert_data.detail_ovn_29 IS NOT NULL OR
4748 p_insert_data.detail_ovn_30 IS NOT NULL OR
4749 p_insert_data.detail_ovn_31 IS NOT NULL OR
4750 p_insert_data.day_1 IS NOT NULL OR
4751 p_insert_data.day_2 IS NOT NULL OR
4752 p_insert_data.day_3 IS NOT NULL OR
4753 p_insert_data.day_4 IS NOT NULL OR
4754 p_insert_data.day_5 IS NOT NULL OR
4755 p_insert_data.day_6 IS NOT NULL OR
4756 p_insert_data.day_7 IS NOT NULL OR
4757 p_insert_data.day_8 IS NOT NULL OR
4758 p_insert_data.day_9 IS NOT NULL OR
4759 p_insert_data.day_10 IS NOT NULL OR
4760 p_insert_data.day_11 IS NOT NULL OR
4761 p_insert_data.day_12 IS NOT NULL OR
4762 p_insert_data.day_13 IS NOT NULL OR
4763 p_insert_data.day_14 IS NOT NULL OR
4764 p_insert_data.day_15 IS NOT NULL OR
4765 p_insert_data.day_16 IS NOT NULL OR
4766 p_insert_data.day_17 IS NOT NULL OR
4767 p_insert_data.day_18 IS NOT NULL OR
4768 p_insert_data.day_19 IS NOT NULL OR
4769 p_insert_data.day_20 IS NOT NULL OR
4770 p_insert_data.day_21 IS NOT NULL OR
4771 p_insert_data.day_22 IS NOT NULL OR
4772 p_insert_data.day_23 IS NOT NULL OR
4773 p_insert_data.day_24 IS NOT NULL OR
4774 p_insert_data.day_25 IS NOT NULL OR
4775 p_insert_data.day_26 IS NOT NULL OR
4776 p_insert_data.day_27 IS NOT NULL OR
4777 p_insert_data.day_28 IS NOT NULL OR
4778 p_insert_data.day_29 IS NOT NULL OR
4779 p_insert_data.day_30 IS NOT NULL OR
4780 p_insert_data.day_31 IS NOT NULL OR
4781 p_insert_data.time_in_1 IS NOT NULL OR
4782 p_insert_data.time_out_1 IS NOT NULL OR
4783 p_insert_data.time_in_2 IS NOT NULL OR
4784 p_insert_data.time_out_2 IS NOT NULL OR
4785 p_insert_data.time_in_3 IS NOT NULL OR
4786 p_insert_data.time_out_3 IS NOT NULL OR
4787 p_insert_data.time_in_4 IS NOT NULL OR
4788 p_insert_data.time_out_4 IS NOT NULL OR
4789 p_insert_data.time_in_5 IS NOT NULL OR
4790 p_insert_data.time_out_5 IS NOT NULL OR
4791 p_insert_data.time_in_6 IS NOT NULL OR
4792 p_insert_data.time_out_6 IS NOT NULL OR
4793 p_insert_data.time_in_7 IS NOT NULL OR
4794 p_insert_data.time_out_7 IS NOT NULL OR
4795 p_insert_data.time_in_8 IS NOT NULL OR
4796 p_insert_data.time_out_8 IS NOT NULL OR
4797 p_insert_data.time_in_9 IS NOT NULL OR
4798 p_insert_data.time_out_9 IS NOT NULL OR
4799 p_insert_data.time_in_10 IS NOT NULL OR
4800 p_insert_data.time_out_10 IS NOT NULL OR
4801 p_insert_data.time_in_11 IS NOT NULL OR
4802 p_insert_data.time_out_11 IS NOT NULL OR
4803 p_insert_data.time_in_12 IS NOT NULL OR
4804 p_insert_data.time_out_12 IS NOT NULL OR
4805 p_insert_data.time_in_13 IS NOT NULL OR
4806 p_insert_data.time_out_13 IS NOT NULL OR
4807 p_insert_data.time_in_14 IS NOT NULL OR
4808 p_insert_data.time_out_14 IS NOT NULL OR
4809 p_insert_data.time_in_15 IS NOT NULL OR
4810 p_insert_data.time_out_15 IS NOT NULL OR
4811 p_insert_data.time_in_16 IS NOT NULL OR
4812 p_insert_data.time_out_16 IS NOT NULL OR
4813 p_insert_data.time_in_17 IS NOT NULL OR
4814 p_insert_data.time_out_17 IS NOT NULL OR
4815 p_insert_data.time_in_18 IS NOT NULL OR
4816 p_insert_data.time_out_18 IS NOT NULL OR
4817 p_insert_data.time_in_19 IS NOT NULL OR
4818 p_insert_data.time_out_19 IS NOT NULL OR
4819 p_insert_data.time_in_20 IS NOT NULL OR
4820 p_insert_data.time_out_20 IS NOT NULL OR
4821 p_insert_data.time_in_21 IS NOT NULL OR
4822 p_insert_data.time_out_21 IS NOT NULL OR
4823 p_insert_data.time_in_22 IS NOT NULL OR
4824 p_insert_data.time_out_22 IS NOT NULL OR
4825 p_insert_data.time_in_23 IS NOT NULL OR
4826 p_insert_data.time_out_23 IS NOT NULL OR
4827 p_insert_data.time_in_24 IS NOT NULL OR
4828 p_insert_data.time_out_24 IS NOT NULL OR
4829 p_insert_data.time_in_25 IS NOT NULL OR
4830 p_insert_data.time_out_25 IS NOT NULL OR
4831 p_insert_data.time_in_26 IS NOT NULL OR
4832 p_insert_data.time_out_26 IS NOT NULL OR
4833 p_insert_data.time_in_27 IS NOT NULL OR
4834 p_insert_data.time_out_27 IS NOT NULL OR
4835 p_insert_data.time_in_28 IS NOT NULL OR
4836 p_insert_data.time_out_28 IS NOT NULL OR
4837 p_insert_data.time_in_29 IS NOT NULL OR
4838 p_insert_data.time_out_29 IS NOT NULL OR
4839 p_insert_data.time_in_30 IS NOT NULL OR
4840 p_insert_data.time_out_30 IS NOT NULL OR
4841 p_insert_data.time_in_31 IS NOT NULL OR
4842 p_insert_data.time_out_31 IS NOT NULL OR
4843 p_insert_data.comment_text IS NOT NULL OR
4844 p_insert_data.last_update_date IS NOT NULL OR
4845 p_insert_data.last_updated_by IS NOT NULL OR
4846 p_insert_data.last_update_login IS NOT NULL OR
4847 p_insert_data.created_by IS NOT NULL OR
4848 p_insert_data.creation_date IS NOT NULL OR
4849 --p_insert_data.row_lock_id IS NOT NULL OR
4850 p_insert_data.tc_lock_success IS NOT NULL OR
4851 -- p_insert_data.person_type IS NOT NULL OR
4852 p_insert_data.timecard_message IS NOT NULL OR
4853 p_insert_data.timecard_message_code IS NOT NULL
4854 --p_insert_data.audit_enabled IS NOT NULL
4855 THEN
4856 if g_debug then
4857 hr_utility.trace(' found data');
4858 end if;
4859
4860
4861 RETURN TRUE;
4862
4863 ELSE
4864 if g_debug then
4865 hr_utility.trace(' empty row');
4866 end if;
4867
4868 RETURN FALSE;
4869
4870 END IF;
4871
4872 END not_empty_row;
4873
4874
4875 ----------------------------------------------------------------------------
4876 -- timekeeper_insert
4877 ----------------------------------------------------------------------------
4878 PROCEDURE timekeeper_insert (
4879 p_insert_data IN OUT NOCOPY t_timekeeper_table
4880 ) IS
4881
4882 l_index NUMBER;
4883
4884 BEGIN
4885
4886 l_index := p_insert_data.FIRST;
4887
4888 LOOP
4889 EXIT WHEN (NOT p_insert_data.EXISTS (l_index));
4890 IF not_empty_row(p_insert_data(l_index))
4891 THEN
4892 populate_global_table (p_table_data => p_insert_data(l_index), p_action => 'INSERT');
4893 END IF;
4894 l_index := p_insert_data.NEXT (l_index);
4895 END LOOP;
4896
4897 END timekeeper_insert;
4898
4899
4900 -------------------------------------------------------------------------------
4901 -- timekeeper_update
4902 -------------------------------------------------------------------------------
4903
4904
4905
4906 PROCEDURE timekeeper_update (
4907 p_update_data IN OUT NOCOPY t_timekeeper_table
4908 ) IS
4909
4910 l_index NUMBER;
4911
4912 BEGIN
4913
4914 l_index := p_update_data.FIRST;
4915
4916 LOOP
4917 EXIT WHEN (NOT p_update_data.EXISTS (l_index));
4918 IF not_empty_row(p_update_data(l_index))
4919 THEN
4920 populate_global_table (p_table_data => p_update_data(l_index), p_action => 'UPDATE');
4921 END IF;
4922 l_index := p_update_data.NEXT (l_index);
4923 END LOOP;
4924
4925 END timekeeper_update;
4926
4927
4928 -------------------------------------------------------------------------------
4929 -- timekeeper_delete
4930 -------------------------------------------------------------------------------
4931
4932 PROCEDURE timekeeper_delete (
4933 p_delete_data IN OUT NOCOPY t_timekeeper_table
4934 ) IS
4935
4936 l_index NUMBER;
4937
4938 BEGIN
4939
4940 l_index := p_delete_data.FIRST;
4941
4942 LOOP
4943 EXIT WHEN (NOT p_delete_data.EXISTS (l_index));
4944 IF not_empty_row(p_delete_data(l_index))
4945 THEN
4946 populate_global_table (p_table_data => p_delete_data(l_index), p_action => 'DELETE');
4947 END IF;
4948 l_index := p_delete_data.NEXT (l_index);
4949 END LOOP;
4950
4951 END timekeeper_delete;
4952
4953
4954 -------------------------------------------------------------------------------
4955 --
4956 -------------------------------------------------------------------------------
4957
4958 PROCEDURE timekeeper_lock (
4959 p_lock_data
4960 /*ADVICE(3415): Unreferenced parameter [552] */
4961 IN t_timekeeper_table
4962 ) IS
4963 BEGIN
4964 NULL;
4965 /*ADVICE(3420): Use of NULL statements [532] */
4966
4967 END;
4968
4969
4970 -------------------------------------------------------------------------------
4971 -- populate_global_table
4972 -------------------------------------------------------------------------------
4973
4974 PROCEDURE populate_global_table (
4975 p_table_data IN t_time_info,
4976 p_action IN VARCHAR2
4977 ) IS
4978 l_global_index NUMBER
4979 /*ADVICE(3434): NUMBER has no precision [315] */
4980 := 0;
4981 l_index NUMBER
4982 /*ADVICE(3437): NUMBER has no precision [315] */
4983 ;
4984 BEGIN
4985 l_global_index := g_timekeeper_data.LAST + 1;
4986
4987 IF l_global_index IS NULL THEN
4988 l_global_index := 0;
4989 END IF;
4990
4991 --l_index := p_table_data.FIRST;
4992
4993 --LOOP
4994 --EXIT WHEN (NOT p_table_data.EXISTS (l_index));
4995 g_timekeeper_data (l_global_index) := p_table_data; --(l_index);
4996 g_timekeeper_data (l_global_index).timekeeper_action := p_action;
4997 -- l_global_index := l_global_index + 1;
4998 --l_index := p_table_data.NEXT (l_index);
4999 -- END LOOP;
5000 END populate_global_table;
5001
5002
5003 -------------------------------------------------------------------------------
5004 -- populate_detail_global_table
5005 -------------------------------------------------------------------------------
5006
5007 PROCEDURE populate_detail_global_table (
5008 p_detail_data IN det_info,
5009 p_detail_action
5010 /*ADVICE(3465): Unreferenced parameter [552] */
5011 IN VARCHAR2
5012 ) IS
5013 l_detail_global_index
5014 /*ADVICE(3469): Unreferenced variable [553] */
5015 NUMBER
5016 /*ADVICE(3471): NUMBER has no precision [315] */
5017 := 0;
5018 l_detail_index
5019 /*ADVICE(3474): Unreferenced variable [553] */
5020 NUMBER
5021 /*ADVICE(3476): NUMBER has no precision [315] */
5022 ;
5023 BEGIN
5024 g_detail_data.DELETE;
5025 g_detail_data := p_detail_data;
5026 END populate_detail_global_table;
5027 -------------------------------------------------------------------------------
5028 --- deletes the g_timekeeper_date table when Audit Information is mandatory
5029 --- and CLA information is not entered.
5030
5031 PROCEDURE timekeeper_data_delete IS
5032 BEGIN
5033 g_timekeeper_data.delete;
5034 END;
5035 ------------------------------------------------------------------------------
5036 --PROCEDURE get det details
5037 ------------------------------------------------------------------------------
5038 FUNCTION get_det_details
5039 RETURN det_info
5040 /*ADVICE(3489): Function has no parameters [514] */
5041 IS
5042 BEGIN
5043 RETURN (g_detail_data);
5044 END;
5045
5046 ------------------------------------------------------------------------------
5047 --PROCEDURE get terminated list
5048 ------------------------------------------------------------------------------
5049 FUNCTION get_terminated_list
5050 RETURN VARCHAR2
5051 /*ADVICE(3500): Function has no parameters [514] */
5052 IS
5053 BEGIN
5054 RETURN (g_terminated_list);
5055 END;
5056
5057
5058 ------------------------------------------------------------------------------
5059 -------------------------------------------------------------------------------
5060 -- timekeeper_process
5061 -------------------------------------------------------------------------------
5062 PROCEDURE timekeeper_process (
5063 p_timekeeper_id IN NUMBER,
5064 p_superflag IN VARCHAR2,
5065 p_rec_periodid IN NUMBER,
5066 p_start_period IN DATE,
5067 p_end_period IN DATE,
5068 p_mode
5069 /*ADVICE(3519): Unreferenced parameter [552] */
5070 IN VARCHAR2,
5071 p_messages OUT NOCOPY hxc_self_service_time_deposit.message_table,
5072 p_trx_lock_id IN NUMBER,
5073 p_lock_profile IN VARCHAR2,
5074 p_tk_audit_enabled IN VARCHAR2,
5075 p_tk_notify_to IN VARCHAR2,
5076 p_tk_notify_type IN VARCHAR2
5077 ) IS
5078 CURSOR c_timecard_info
5079 /*ADVICE(3529): Unreferenced local procedure or function [557] */
5080 (
5081 p_resource_id IN NUMBER,
5082 p_start_period
5083 /*ADVICE(3533): This definition hides another one [556] */
5084 IN DATE,
5085 p_end_period
5086 /*ADVICE(3536): This definition hides another one [556] */
5087 IN DATE
5088 ) IS
5089 SELECT time_building_block_id, object_version_number, comment_text
5090 FROM hxc_time_building_blocks
5091 WHERE SCOPE = 'TIMECARD'
5092 AND date_to = hr_general.end_of_time
5093 AND resource_id = p_resource_id
5094 AND start_time = p_start_period
5095 AND stop_time = p_end_period;
5096
5097 CURSOR c_detail_check
5098 /*ADVICE(3548): Unreferenced local procedure or function [557] */
5099 (
5100 p_timecard_id IN NUMBER,
5101 p_timecard_ovn IN NUMBER,
5102 p_resource_id IN NUMBER
5103 ) IS
5104 SELECT '1'
5105 FROM hxc_time_building_blocks detail, hxc_time_building_blocks DAY
5106 WHERE DAY.SCOPE = 'DAY'
5107 AND DAY.resource_id = p_resource_id
5108 AND DAY.parent_building_block_id = p_timecard_id
5109 AND DAY.parent_building_block_ovn = p_timecard_ovn
5110 AND DAY.time_building_block_id = detail.parent_building_block_id
5111 AND DAY.object_version_number = detail.parent_building_block_ovn
5112 AND detail.SCOPE = 'DETAIL'
5113 AND detail.resource_id = p_resource_id;
5114
5115 /*Cursor Modified By Mithun for CWK Terminate Bug*/
5116 /* changes done by senthil for emp terminate enhancement*/
5117 CURSOR c_emp_terminateinfo(
5118 p_resource_id NUMBER
5119 ) IS
5120 SELECT final_process_date, date_start
5121 FROM per_periods_of_service
5122 WHERE person_id = p_resource_id
5123 union all
5124 select (final_process_date + NVL(fnd_profile.value('HXC_CWK_TK_FPD'),0)) final_process_date, date_start
5125 from per_periods_of_placement
5126 where person_id = p_resource_id
5127 ORDER BY date_start DESC;
5128
5129 --Added By Mithun for CWK Terminate Bug
5130 date_start DATE;
5131
5132 CURSOR c_tc_in_term_period_exists(
5133 p_resource_id number, p_start_date date, p_end_date date) IS
5134 SELECT 'Y'
5135 from hxc_time_building_blocks
5136 where resource_id=p_resource_id
5137 and scope='TIMECARD'
5138 and trunc(start_time)=trunc(p_start_date)
5139 and trunc(stop_time)=trunc(p_end_date)
5140 and (trunc(date_to) = hr_general.end_of_time or APPROVAL_STATUS='ERROR');
5141 /*end of senthil changes */
5142 l_tk_table_index NUMBER
5143 /*ADVICE(3566): NUMBER has no precision [315] */
5144 ;
5145 l_index_next NUMBER
5146 /*ADVICE(3569): NUMBER has no precision [315] */
5147 ;
5148 l_index_start NUMBER
5149 /*ADVICE(3572): NUMBER has no precision [315] */
5150 ;
5151 l_result VARCHAR2 (10);
5152 l_timecard_id NUMBER
5153 /*ADVICE(3576): NUMBER has no precision [315] */
5154 := NULL;
5155 /*ADVICE(3578): Initialization to NULL is superfluous [417] */
5156
5157 l_timecard_ovn NUMBER
5158 /*ADVICE(3581): NUMBER has no precision [315] */
5159 := NULL;
5160 /*ADVICE(3583): Initialization to NULL is superfluous [417] */
5161
5162 l_timecard_comment_text VARCHAR2 (2000) := NULL;
5163 /*ADVICE(3586): VARCHAR2 declaration with length greater than 500 characters [307] */
5164
5165 /*ADVICE(3588): Initialization to NULL is superfluous [417] */
5166
5167 l_resource_tc_table t_resource_tc_table;
5168 l_resource_id NUMBER
5169 /*ADVICE(3592): NUMBER has no precision [315] */
5170 ;
5171 l_string VARCHAR2 (32000);
5172 l_timecard hxc_block_table_type := hxc_block_table_type ();
5173 ord_timecard
5174 /*ADVICE(3597): Unreferenced variable [553] */
5175 hxc_block_table_type := hxc_block_table_type ();
5176 l_attributes hxc_attribute_table_type := hxc_attribute_table_type (
5177
5178 );
5179 l_messages hxc_message_table_type := hxc_message_table_type ();
5180 l_day_id_info_table t_day_id_info_table;
5181 l_timecard_index NUMBER
5182 /*ADVICE(3605): NUMBER has no precision [315] */
5183 ;
5184 l_timekeeper_table t_timekeeper_table;
5185 l_new_tk_data_from_process t_timekeeper_table;
5186 l_old_tk_data_from_process t_timekeeper_table;
5187 l_tk_data_index NUMBER
5188 /*ADVICE(3611): NUMBER has no precision [315] */
5189 ;
5190 l_new_tk_data_index NUMBER
5191 /*ADVICE(3614): NUMBER has no precision [315] */
5192 ;
5193 l_global_index NUMBER
5194 /*ADVICE(3617): NUMBER has no precision [315] */
5195 := 0;
5196 l_approval_style_id NUMBER
5197 /*ADVICE(3620): NUMBER has no precision [315] */
5198 ;
5199 l_approval_status VARCHAR2 (80);
5200 l_delete BOOLEAN;
5201 l_dummy
5202 /*ADVICE(3625): Unreferenced variable [553] */
5203 VARCHAR2 (1);
5204 l_timecard_status VARCHAR2 (10);
5205 num
5206 /*ADVICE(3629): Unreferenced variable [553] */
5207 NUMBER
5208 /*ADVICE(3631): NUMBER has no precision [315] */
5209 ;
5210 e_error_failed
5211 /*ADVICE(3634): Unreferenced variable [553] */
5212 EXCEPTION;
5213 l_message_index
5214 /*ADVICE(3637): Unreferenced variable [553] */
5215 NUMBER
5216 /*ADVICE(3639): NUMBER has no precision [315] */
5217 ;
5218 l_mid_index
5219 /*ADVICE(3642): Unreferenced variable [553] */
5220 NUMBER
5221 /*ADVICE(3644): NUMBER has no precision [315] */
5222 ;
5223 l_tc_status VARCHAR2 (15) := NULL;
5224 /*ADVICE(3652): Initialization to NULL is superfluous [417] */
5225
5226 att_seg_tab hxc_alias_utility.t_alias_att_info;
5227 spemp_tc_list hxc_timecard_utilities.periods;
5228 spemp_tc_info hxc_timekeeper_utilities.emptctab;
5229 sp_index NUMBER
5230 /*ADVICE(3658): NUMBER has no precision [315] */
5231 := 0;
5232 l_timecard_index_info hxc_timekeeper_process.t_timecard_index_info;
5233 l_attribute_index_info hxc_timekeeper_process.t_attribute_index_info;
5234 l_mid_save VARCHAR2 (5) := 'N';
5235 l_comment_made_null BOOLEAN := FALSE;
5236 l_row_locked_id ROWID
5237 /*ADVICE(3665): Use of ROWID [113] */
5238 ;
5239 l_process_lock_type
5240 /*ADVICE(3668): Unreferenced variable [553] */
5241 VARCHAR2 (80) := hxc_lock_util.c_pui_timekeeper_action;
5242 l_relased_success
5243 /*ADVICE(3671): Unreferenced variable [553] */
5244 BOOLEAN;
5245 l_lock_success
5246 /*ADVICE(3674): Unreferenced variable [553] */
5247 BOOLEAN;
5248 l_lock_trx_id
5249 /*ADVICE(3677): Unreferenced variable [553] */
5250 NUMBER (15) := p_trx_lock_id;
5251 l_time_building_block_scope
5252 /*ADVICE(3680): Unreferenced variable [553] */
5253 VARCHAR2 (30);
5254 l_locker_type_id
5255 /*ADVICE(3683): Unreferenced variable [553] */
5256 NUMBER (15);
5257 l_no_details NUMBER
5258 /*ADVICE(3686): NUMBER has no precision [315] */
5259 := 0;
5260 l_changed_detail BOOLEAN := FALSE;
5261 l_emp_terminate_date date;
5262 l_tc_in_term_status varchar2(1) :='N';
5263
5264 /* Added for Bug 8775740
5265
5266 HR-OTL Absence Integration Declarations
5267
5268 */
5269 -- Change start
5270 l_index NUMBER; -- SVG change
5271 -- Change end
5272
5273
5274 BEGIN
5275 g_debug :=hr_utility.debug_enabled;
5276 -- loop in the insert_table and manage the data
5277
5278 g_mid_data.DELETE;
5279
5280 /* Added for Bug 8775740
5281
5282 HR-OTL Absence Integration
5283
5284 This plsql table holds the values of negative detail ids which
5285 are of already prepopulated tbbs
5286
5287 */
5288 -- Change start
5289 g_tk_prepop_detail_id_tab.DELETE; -- svg added
5290 -- Change end
5291
5292
5293 l_tk_table_index := g_timekeeper_data.FIRST;
5294
5295 if g_debug then
5296 hr_utility.trace('SVG reached inside timekeeper_process 1');
5297 end if;
5298
5299 LOOP
5300 EXIT WHEN (NOT g_timekeeper_data.EXISTS (l_tk_table_index));
5301 -- sort the table
5302
5303 l_resource_id := g_timekeeper_data (l_tk_table_index).resource_id;
5304
5305 IF l_resource_tc_table.EXISTS (l_resource_id) THEN
5306 l_string := l_resource_tc_table (l_resource_id).index_string;
5307 ELSE
5308 l_string := ''
5309 /*ADVICE(3704): In Oracle 8, VARCHAR2 variables of zero length assigned to CHAR variables will blank-pad
5310 these rather than making them NULL [111] */
5311 ;
5312 END IF;
5313
5314 l_resource_tc_table (l_resource_id).index_string := l_string || '|' || l_tk_table_index;
5315
5316 IF g_lock_table.EXISTS (l_resource_id) THEN
5317 l_resource_tc_table (l_resource_id).lockid := g_lock_table (l_resource_id).row_lock_id;
5318 END IF;
5319
5320 /* Added for Bug 8775740
5321
5322 HR-OTL Absence Integration
5323
5324 Populating the plsql table which are supposed to hold the negative detail id
5325 values.
5326 This is done so that when g_negative_index is used to populate p_blocks,
5327 no usage of the same detail id is ensured.
5328
5329 */
5330 -- Change start
5331 hxc_timekeeper_utilities.populate_prepop_detail_id_info
5332 (p_timekeeper_data_rec => g_timekeeper_data(l_tk_table_index),
5333 p_tk_prepop_detail_id_tab => g_tk_prepop_detail_id_tab);
5334 -- Change end
5335
5336
5337 -- l_resource_tc_table (l_resource_id).lockid :=g_timekeeper_data(l_tk_table_index).row_lock_id;
5338 l_tk_table_index := g_timekeeper_data.NEXT (l_tk_table_index);
5339 END LOOP;
5340
5341
5342 IF g_debug then
5343
5344 if g_tk_prepop_detail_id_tab.count>0 then
5345
5346 FOR i in g_tk_prepop_detail_id_tab.FIRST .. g_tk_prepop_detail_id_tab.LAST
5347 LOOP
5348
5349 if g_tk_prepop_detail_id_tab.EXISTS(i) then
5350
5351 if g_debug then
5352 hr_utility.trace('index = '||i);
5353 hr_utility.trace('g_tk_prepop_detail_id_tab(i) = '||g_tk_prepop_detail_id_tab(i));
5354 end if;
5355
5356 end if;
5357
5358 END LOOP;
5359
5360 end if;
5361 end if;
5362
5363
5364
5365
5366 --get the attributes information associated with timekeeper into att_seg_tab table.
5367
5368 att_seg_tab.DELETE;
5369 hxc_alias_utility.get_alias_att_info (p_timekeeper_id, att_seg_tab);
5370 -- Now we have a table that contains all the indexes of the insert_table
5371 -- by resource_id
5372 -- Let start to build the time_building_block and attributes table by
5373 -- resource_id and deposit it.
5374
5375 l_resource_id := l_resource_tc_table.FIRST;
5376
5377 LOOP
5378 EXIT WHEN (NOT l_resource_tc_table.EXISTS (l_resource_id));
5379 -- empty the timecard and attribute table
5380
5381 -- get the timecards which fit between the range selected.
5382 hxc_timekeeper_utilities.populate_tc_tab (l_resource_id, p_start_period, p_end_period, spemp_tc_info);
5383 -- Remove the timecards which totally dosnt fit in the period
5384 /* changes done by senthil for emp terminate enhancement*/
5385 /*Changed By Mithun for CWK Terminate Bug*/
5386 OPEN c_emp_terminateinfo (p_resource_id => l_resource_id);
5387 FETCH c_emp_terminateinfo INTO l_emp_terminate_date, date_start;
5388 CLOSE c_emp_terminateinfo;
5389
5390 if l_emp_terminate_date between p_start_period and p_end_period then
5391 open c_tc_in_term_period_exists(l_resource_id,p_start_period,p_end_period);
5392 FETCH c_tc_in_term_period_exists into l_tc_in_term_status;
5393 close c_tc_in_term_period_exists;
5394 end if;
5395 if l_tc_in_term_status <> 'Y' then
5396 hxc_timekeeper_utilities.split_timecard (
5397 l_resource_id,
5398 p_start_period,
5399 p_end_period,
5400 spemp_tc_info,
5401 spemp_tc_list
5402 );
5403 else
5404 spemp_tc_list (TO_NUMBER (TO_CHAR (TO_DATE (p_start_period, 'dd-mm-rrrr'), 'J'))).start_date := p_start_period;
5405 spemp_tc_list (TO_NUMBER (TO_CHAR (TO_DATE (p_start_period, 'dd-mm-rrrr'), 'J'))).end_date := p_end_period;
5406 end if;
5407 if g_debug then
5408 hr_utility.trace('spemp_tc_list'||spemp_tc_list.count);
5409 end if;
5410 sp_index := spemp_tc_list.FIRST;
5411
5412 LOOP
5413 EXIT WHEN NOT spemp_tc_list.EXISTS (sp_index);
5414 /* changes done by senthil for emp terminate enhancement*/
5415 if ( nvl(l_emp_terminate_date,TO_DATE (spemp_tc_list (sp_index).start_date, 'DD-MM-RRRR') ) >=
5416 TO_DATE (spemp_tc_list (sp_index).start_date, 'DD-MM-RRRR') and
5417 nvl(l_emp_terminate_date,TO_DATE (spemp_tc_list (sp_index).end_date, 'DD-MM-RRRR')) >=
5418 TO_DATE (spemp_tc_list (sp_index).end_date, 'DD-MM-RRRR') )
5419 or (nvl(l_emp_terminate_date,TO_DATE (spemp_tc_list (sp_index).start_date, 'DD-MM-RRRR'))
5420 between TO_DATE (spemp_tc_list (sp_index).start_date, 'DD-MM-RRRR') and TO_DATE (spemp_tc_list (sp_index).end_date, 'DD-MM-RRRR')) then
5421 IF (TO_DATE (p_start_period, 'DD-MM-RRRR') >
5422 TO_DATE (spemp_tc_list (sp_index).start_date, 'DD-MM-RRRR')
5423 )
5424 OR (TO_DATE (p_end_period, 'DD-MM-RRRR') <
5425 TO_DATE (spemp_tc_list (sp_index).end_date, 'DD-MM-RRRR')
5426 ) THEN
5427 if g_debug then
5428 hr_utility.trace('outside timecard');
5429 end if;
5430 NULL; --outside range
5431 /*ADVICE(3761): Use of NULL statements [532] */
5432
5433 ELSE
5434 l_timecard.DELETE;
5435 l_attributes.DELETE;
5436 if g_debug then
5437 hr_utility.trace('before create timecard day structure ');
5438 end if;
5439 --
5440 -- create the TIMECARD, DAY, DETAIL, ATTRIBUTE structure
5441 if g_debug then
5442 hr_utility.trace('Timekeeper Save process--20');
5443 end if;
5444 create_timecard_day_structure (
5445 p_resource_id => l_resource_id,
5446 p_start_period => TO_DATE (spemp_tc_list (sp_index).start_date, 'DD-MM-RRRR'),
5447 p_end_period => TO_DATE (spemp_tc_list (sp_index).end_date, 'DD-MM-RRRR'),
5448 p_tc_frdt => p_start_period,
5449 p_tc_todt => p_end_period,
5450 p_timecard => l_timecard,
5451 p_attributes => l_attributes,
5452 p_day_id_info_table => l_day_id_info_table,
5453 p_approval_style_id => l_approval_style_id,
5454 p_approval_status => l_approval_status,
5455 p_comment_text => l_timecard_comment_text,
5456 p_timecard_status => l_timecard_status,
5457 p_attribute_index_info => l_attribute_index_info,
5458 p_timecard_index_info => l_timecard_index_info,
5459 p_timecard_id => l_timecard_id
5460 ); --added p_timecard 2789497
5461 -- at this point we have the timecard structure set up
5462 -- now following the action on the detail, we need to reajust this structure
5463 -- before send it to the deposit.
5464
5465 -- for each index found for the resource create the detail information
5466 if g_debug then
5467 hr_utility.trace('SVG after create_timecard_day_structure');
5468 end if;
5469
5470 if g_debug then
5471
5472
5473 ------------------------------------------------------ --SVG insert
5474 if (l_timecard.count>0) then
5475
5476
5477 hr_utility.trace(' SVG P_BLOCK TABLE START ');
5478 hr_utility.trace(' *****************');
5479
5480 l_index := l_timecard.FIRST;
5481
5482 LOOP
5483 EXIT WHEN NOT l_timecard.EXISTS (l_index);
5484
5485
5486 hr_utility.trace(' TIME_BUILDING_BLOCK_ID = '|| l_timecard(l_index).TIME_BUILDING_BLOCK_ID );
5487 hr_utility.trace(' TYPE = '|| l_timecard(l_index).TYPE ) ;
5488 hr_utility.trace(' MEASURE = '|| l_timecard(l_index).MEASURE) ;
5489 hr_utility.trace(' UNIT_OF_MEASURE = '|| l_timecard(l_index).UNIT_OF_MEASURE ) ;
5490 hr_utility.trace(' START_TIME = '|| l_timecard(l_index).START_TIME ) ;
5491 hr_utility.trace(' STOP_TIME = '|| l_timecard(l_index).STOP_TIME ) ;
5492 hr_utility.trace(' PARENT_BUILDING_BLOCK_ID = '|| l_timecard(l_index).PARENT_BUILDING_BLOCK_ID ) ;
5493 hr_utility.trace(' PARENT_IS_NEW = '|| l_timecard(l_index).PARENT_IS_NEW ) ;
5494 hr_utility.trace(' SCOPE = '|| l_timecard(l_index).SCOPE ) ;
5495 hr_utility.trace(' OBJECT_VERSION_NUMBER = '|| l_timecard(l_index).OBJECT_VERSION_NUMBER ) ;
5496 hr_utility.trace(' APPROVAL_STATUS = '|| l_timecard(l_index).APPROVAL_STATUS ) ;
5497 hr_utility.trace(' RESOURCE_ID = '|| l_timecard(l_index).RESOURCE_ID ) ;
5498 hr_utility.trace(' RESOURCE_TYPE = '|| l_timecard(l_index).RESOURCE_TYPE ) ;
5499 hr_utility.trace(' APPROVAL_STYLE_ID = '|| l_timecard(l_index).APPROVAL_STYLE_ID ) ;
5500 hr_utility.trace(' DATE_FROM = '|| l_timecard(l_index).DATE_FROM ) ;
5501 hr_utility.trace(' DATE_TO = '|| l_timecard(l_index).DATE_TO ) ;
5502 hr_utility.trace(' COMMENT_TEXT = '|| l_timecard(l_index).COMMENT_TEXT ) ;
5503 hr_utility.trace(' PARENT_BUILDING_BLOCK_OVN = '|| l_timecard(l_index).PARENT_BUILDING_BLOCK_OVN ) ;
5504 hr_utility.trace(' NEW = '|| l_timecard(l_index).NEW ) ;
5505 hr_utility.trace(' CHANGED = '|| l_timecard(l_index).CHANGED ) ;
5506 hr_utility.trace(' PROCESS = '|| l_timecard(l_index).PROCESS ) ;
5507 hr_utility.trace(' APPLICATION_SET_ID = '|| l_timecard(l_index).APPLICATION_SET_ID ) ;
5508 hr_utility.trace(' TRANSLATION_DISPLAY_KEY = '|| l_timecard(l_index).TRANSLATION_DISPLAY_KEY ) ;
5509 hr_utility.trace('------------------------------------------------------');
5510
5511 l_index := l_timecard.NEXT (l_index);
5512
5513 END LOOP;
5514
5515 hr_utility.trace(' SVG l_timecard TABLE END ');
5516 hr_utility.trace(' *****************');
5517
5518 end if;
5519
5520
5521
5522 if (l_attributes.count>0) then
5523
5524
5525 hr_utility.trace(' SVG ATTRIBUTES TABLE START ');
5526 hr_utility.trace(' *****************');
5527
5528 l_index := l_attributes.FIRST;
5529
5530 LOOP
5531 EXIT WHEN NOT l_attributes.EXISTS (l_index);
5532
5533
5534 hr_utility.trace(' TIME_ATTRIBUTE_ID = '|| l_attributes(l_index).TIME_ATTRIBUTE_ID);
5535 hr_utility.trace(' BUILDING_BLOCK_ID = '|| l_attributes(l_index).BUILDING_BLOCK_ID ) ;
5536 hr_utility.trace(' ATTRIBUTE_CATEGORY = '|| l_attributes(l_index).ATTRIBUTE_CATEGORY) ;
5537 hr_utility.trace(' ATTRIBUTE1 = '|| l_attributes(l_index).ATTRIBUTE1 ) ;
5538 hr_utility.trace(' ATTRIBUTE2 (p_alias_definition_id) = '|| l_attributes(l_index).ATTRIBUTE2 ) ;
5539 hr_utility.trace(' ATTRIBUTE3 (l_alias_value_id) = '|| l_attributes(l_index).ATTRIBUTE3 ) ;
5540 hr_utility.trace(' ATTRIBUTE4 (p_alias_type) = '|| l_attributes(l_index).ATTRIBUTE4 ) ;
5541 hr_utility.trace(' ATTRIBUTE5 = '|| l_attributes(l_index).ATTRIBUTE5 ) ;
5542 hr_utility.trace(' ATTRIBUTE6 = '|| l_attributes(l_index).ATTRIBUTE6 ) ;
5543 hr_utility.trace(' ATTRIBUTE7 = '|| l_attributes(l_index).ATTRIBUTE7 ) ;
5544 hr_utility.trace(' ATTRIBUTE8 = '|| l_attributes(l_index).ATTRIBUTE8 ) ;
5545 hr_utility.trace(' ATTRIBUTE9 = '|| l_attributes(l_index).ATTRIBUTE9 ) ;
5546 hr_utility.trace(' ATTRIBUTE10 = '|| l_attributes(l_index).ATTRIBUTE10 ) ;
5547 hr_utility.trace(' ATTRIBUTE11 = '|| l_attributes(l_index).ATTRIBUTE11 ) ;
5548 hr_utility.trace(' ATTRIBUTE12 = '|| l_attributes(l_index).ATTRIBUTE12 ) ;
5549 hr_utility.trace(' ATTRIBUTE13 = '|| l_attributes(l_index).ATTRIBUTE13 ) ;
5550 hr_utility.trace(' ATTRIBUTE14 = '|| l_attributes(l_index).ATTRIBUTE14 ) ;
5551 hr_utility.trace(' ATTRIBUTE15 = '|| l_attributes(l_index).ATTRIBUTE15 ) ;
5552 hr_utility.trace(' ATTRIBUTE16 = '|| l_attributes(l_index).ATTRIBUTE16 ) ;
5553 hr_utility.trace(' ATTRIBUTE17 = '|| l_attributes(l_index).ATTRIBUTE17 ) ;
5554 hr_utility.trace(' ATTRIBUTE18 = '|| l_attributes(l_index).ATTRIBUTE18 ) ;
5555 hr_utility.trace(' ATTRIBUTE19 = '|| l_attributes(l_index).ATTRIBUTE19 ) ;
5556 hr_utility.trace(' ATTRIBUTE20 = '|| l_attributes(l_index).ATTRIBUTE20 ) ;
5557 hr_utility.trace(' ATTRIBUTE21 = '|| l_attributes(l_index).ATTRIBUTE21 ) ;
5558 hr_utility.trace(' ATTRIBUTE22 = '|| l_attributes(l_index).ATTRIBUTE22 ) ;
5559 hr_utility.trace(' ATTRIBUTE23 = '|| l_attributes(l_index).ATTRIBUTE23 ) ;
5560 hr_utility.trace(' ATTRIBUTE24 = '|| l_attributes(l_index).ATTRIBUTE24 ) ;
5561 hr_utility.trace(' ATTRIBUTE25 = '|| l_attributes(l_index).ATTRIBUTE25 ) ;
5562 hr_utility.trace(' ATTRIBUTE26 = '|| l_attributes(l_index).ATTRIBUTE26 ) ;
5563 hr_utility.trace(' ATTRIBUTE27 = '|| l_attributes(l_index).ATTRIBUTE27 ) ;
5564 hr_utility.trace(' ATTRIBUTE28 = '|| l_attributes(l_index).ATTRIBUTE28 ) ;
5565 hr_utility.trace(' ATTRIBUTE29 (p_alias_ref_object) = '|| l_attributes(l_index).ATTRIBUTE29 ) ;
5566 hr_utility.trace(' ATTRIBUTE30 (p_alias_value_name) = '|| l_attributes(l_index).ATTRIBUTE30 ) ;
5567 hr_utility.trace(' BLD_BLK_INFO_TYPE_ID = '|| l_attributes(l_index).BLD_BLK_INFO_TYPE_ID );
5568 hr_utility.trace(' OBJECT_VERSION_NUMBER = '|| l_attributes(l_index).OBJECT_VERSION_NUMBER );
5569 hr_utility.trace(' NEW = '|| l_attributes(l_index).NEW );
5570 hr_utility.trace(' CHANGED = '|| l_attributes(l_index).CHANGED );
5571 hr_utility.trace(' BLD_BLK_INFO_TYPE = '|| l_attributes(l_index).BLD_BLK_INFO_TYPE );
5572 hr_utility.trace(' PROCESS = '|| l_attributes(l_index).PROCESS );
5573 hr_utility.trace(' BUILDING_BLOCK_OVN = '|| l_attributes(l_index).BUILDING_BLOCK_OVN );
5574 hr_utility.trace('------------------------------------------------------');
5575
5576 l_index := l_attributes.NEXT (l_index);
5577
5578 END LOOP;
5579
5580 hr_utility.trace(' SVG ATTRIBUTES TABLE END ');
5581 hr_utility.trace(' *****************');
5582
5583 end if;
5584
5585
5586 --------------------------------------------------------- --SVG insert
5587
5588
5589 end if;
5590
5591
5592
5593
5594
5595 l_mid_save := 'N'; --2789497
5596 l_comment_made_null := FALSE; --2789497
5597 l_index_start := INSTR (l_resource_tc_table (l_resource_id).index_string, '|', 1, 1) + 1;
5598
5599 LOOP
5600 l_index_next := INSTR (l_resource_tc_table (l_resource_id).index_string, '|', l_index_start, 1);
5601
5602 IF (l_index_next = 0) THEN
5603 l_result := SUBSTR (
5604 l_resource_tc_table (l_resource_id).index_string,
5605 l_index_start,
5606 LENGTH (l_resource_tc_table (l_resource_id).index_string) + 1 - l_index_start
5607 );
5608 ELSE
5609 l_result := SUBSTR (
5610 l_resource_tc_table (l_resource_id).index_string,
5611 l_index_start,
5612 l_index_next - l_index_start
5613 );
5614 END IF;
5615
5616 --create Timecard attributes structure
5617 if g_debug then
5618 hr_utility.trace('Timekeeper Save process--30');
5619 end if;
5620 create_detail_structure (
5621 p_timekeeper_id => p_timekeeper_id,
5622 p_att_tab => att_seg_tab,
5623 p_resource_id => l_resource_id,
5624 p_start_period => TO_DATE (spemp_tc_list (sp_index).start_date, 'DD-MM-RRRR'),
5625 p_end_period => TO_DATE (spemp_tc_list (sp_index).end_date, 'DD-MM-RRRR'),
5626 p_tc_frdt => p_start_period,
5627 p_tc_todt => p_end_period,
5628 p_insert_detail => g_timekeeper_data (l_result),
5629 p_timecard => l_timecard,
5630 p_attributes => l_attributes,
5631 p_day_id_info_table => l_day_id_info_table,
5632 p_approval_style_id => l_approval_style_id,
5633 p_attribute_index_info => l_attribute_index_info,
5634 p_timecard_index_info => l_timecard_index_info,
5635 p_timecard_id => l_timecard_id,
5636 p_mid_save => l_mid_save,
5637 p_comment_made_null => l_comment_made_null,
5638 p_row_lock_id => l_row_locked_id,
5639 p_tk_audit_enabled => p_tk_audit_enabled
5640 );
5641 l_index_start := l_index_next + 1;
5642 l_result := NULL;
5643 EXIT WHEN l_index_next = 0;
5644 END LOOP; --l_index loop
5645 /*ADVICE(3839): Nested LOOPs should all be labeled [406] */
5646
5647 -- we are checking that the timecard has at least
5648 -- one detail valid
5649
5650 if g_debug then
5651
5652 hr_utility.trace('SVG after create_detail_structure');
5653
5654
5655 ------------------------------------------------------ --SVG insert
5656 if (l_timecard.count>0) then
5657
5658
5659 hr_utility.trace(' SVG P_BLOCK TABLE START ');
5660 hr_utility.trace(' *****************');
5661
5662 l_index := l_timecard.FIRST;
5663
5664 LOOP
5665 EXIT WHEN NOT l_timecard.EXISTS (l_index);
5666
5667
5668 hr_utility.trace(' TIME_BUILDING_BLOCK_ID = '|| l_timecard(l_index).TIME_BUILDING_BLOCK_ID );
5669 hr_utility.trace(' TYPE = '|| l_timecard(l_index).TYPE ) ;
5670 hr_utility.trace(' MEASURE = '|| l_timecard(l_index).MEASURE) ;
5671 hr_utility.trace(' UNIT_OF_MEASURE = '|| l_timecard(l_index).UNIT_OF_MEASURE ) ;
5672 hr_utility.trace(' START_TIME = '|| l_timecard(l_index).START_TIME ) ;
5673 hr_utility.trace(' STOP_TIME = '|| l_timecard(l_index).STOP_TIME ) ;
5674 hr_utility.trace(' PARENT_BUILDING_BLOCK_ID = '|| l_timecard(l_index).PARENT_BUILDING_BLOCK_ID ) ;
5675 hr_utility.trace(' PARENT_IS_NEW = '|| l_timecard(l_index).PARENT_IS_NEW ) ;
5676 hr_utility.trace(' SCOPE = '|| l_timecard(l_index).SCOPE ) ;
5677 hr_utility.trace(' OBJECT_VERSION_NUMBER = '|| l_timecard(l_index).OBJECT_VERSION_NUMBER ) ;
5678 hr_utility.trace(' APPROVAL_STATUS = '|| l_timecard(l_index).APPROVAL_STATUS ) ;
5679 hr_utility.trace(' RESOURCE_ID = '|| l_timecard(l_index).RESOURCE_ID ) ;
5680 hr_utility.trace(' RESOURCE_TYPE = '|| l_timecard(l_index).RESOURCE_TYPE ) ;
5681 hr_utility.trace(' APPROVAL_STYLE_ID = '|| l_timecard(l_index).APPROVAL_STYLE_ID ) ;
5682 hr_utility.trace(' DATE_FROM = '|| l_timecard(l_index).DATE_FROM ) ;
5683 hr_utility.trace(' DATE_TO = '|| l_timecard(l_index).DATE_TO ) ;
5684 hr_utility.trace(' COMMENT_TEXT = '|| l_timecard(l_index).COMMENT_TEXT ) ;
5685 hr_utility.trace(' PARENT_BUILDING_BLOCK_OVN = '|| l_timecard(l_index).PARENT_BUILDING_BLOCK_OVN ) ;
5686 hr_utility.trace(' NEW = '|| l_timecard(l_index).NEW ) ;
5687 hr_utility.trace(' CHANGED = '|| l_timecard(l_index).CHANGED ) ;
5688 hr_utility.trace(' PROCESS = '|| l_timecard(l_index).PROCESS ) ;
5689 hr_utility.trace(' APPLICATION_SET_ID = '|| l_timecard(l_index).APPLICATION_SET_ID ) ;
5690 hr_utility.trace(' TRANSLATION_DISPLAY_KEY = '|| l_timecard(l_index).TRANSLATION_DISPLAY_KEY ) ;
5691 hr_utility.trace('------------------------------------------------------');
5692
5693 l_index := l_timecard.NEXT (l_index);
5694
5695 END LOOP;
5696
5697 hr_utility.trace(' SVG l_timecard TABLE END ');
5698 hr_utility.trace(' *****************');
5699
5700 end if;
5701
5702
5703
5704
5705
5706
5707
5708
5709 if (l_attributes.count>0) then
5710
5711
5712 hr_utility.trace(' SVG ATTRIBUTES TABLE START ');
5713 hr_utility.trace(' *****************');
5714
5715 l_index := l_attributes.FIRST;
5716
5717 LOOP
5718 EXIT WHEN NOT l_attributes.EXISTS (l_index);
5719
5720
5721 hr_utility.trace(' TIME_ATTRIBUTE_ID = '|| l_attributes(l_index).TIME_ATTRIBUTE_ID);
5722 hr_utility.trace(' BUILDING_BLOCK_ID = '|| l_attributes(l_index).BUILDING_BLOCK_ID ) ;
5723 hr_utility.trace(' ATTRIBUTE_CATEGORY = '|| l_attributes(l_index).ATTRIBUTE_CATEGORY) ;
5724 hr_utility.trace(' ATTRIBUTE1 = '|| l_attributes(l_index).ATTRIBUTE1 ) ;
5725 hr_utility.trace(' ATTRIBUTE2 (p_alias_definition_id) = '|| l_attributes(l_index).ATTRIBUTE2 ) ;
5726 hr_utility.trace(' ATTRIBUTE3 (l_alias_value_id) = '|| l_attributes(l_index).ATTRIBUTE3 ) ;
5727 hr_utility.trace(' ATTRIBUTE4 (p_alias_type) = '|| l_attributes(l_index).ATTRIBUTE4 ) ;
5728 hr_utility.trace(' ATTRIBUTE5 = '|| l_attributes(l_index).ATTRIBUTE5 ) ;
5729 hr_utility.trace(' ATTRIBUTE6 = '|| l_attributes(l_index).ATTRIBUTE6 ) ;
5730 hr_utility.trace(' ATTRIBUTE7 = '|| l_attributes(l_index).ATTRIBUTE7 ) ;
5731 hr_utility.trace(' ATTRIBUTE8 = '|| l_attributes(l_index).ATTRIBUTE8 ) ;
5732 hr_utility.trace(' ATTRIBUTE9 = '|| l_attributes(l_index).ATTRIBUTE9 ) ;
5733 hr_utility.trace(' ATTRIBUTE10 = '|| l_attributes(l_index).ATTRIBUTE10 ) ;
5734 hr_utility.trace(' ATTRIBUTE11 = '|| l_attributes(l_index).ATTRIBUTE11 ) ;
5735 hr_utility.trace(' ATTRIBUTE12 = '|| l_attributes(l_index).ATTRIBUTE12 ) ;
5736 hr_utility.trace(' ATTRIBUTE13 = '|| l_attributes(l_index).ATTRIBUTE13 ) ;
5737 hr_utility.trace(' ATTRIBUTE14 = '|| l_attributes(l_index).ATTRIBUTE14 ) ;
5738 hr_utility.trace(' ATTRIBUTE15 = '|| l_attributes(l_index).ATTRIBUTE15 ) ;
5739 hr_utility.trace(' ATTRIBUTE16 = '|| l_attributes(l_index).ATTRIBUTE16 ) ;
5740 hr_utility.trace(' ATTRIBUTE17 = '|| l_attributes(l_index).ATTRIBUTE17 ) ;
5741 hr_utility.trace(' ATTRIBUTE18 = '|| l_attributes(l_index).ATTRIBUTE18 ) ;
5742 hr_utility.trace(' ATTRIBUTE19 = '|| l_attributes(l_index).ATTRIBUTE19 ) ;
5743 hr_utility.trace(' ATTRIBUTE20 = '|| l_attributes(l_index).ATTRIBUTE20 ) ;
5744 hr_utility.trace(' ATTRIBUTE21 = '|| l_attributes(l_index).ATTRIBUTE21 ) ;
5745 hr_utility.trace(' ATTRIBUTE22 = '|| l_attributes(l_index).ATTRIBUTE22 ) ;
5746 hr_utility.trace(' ATTRIBUTE23 = '|| l_attributes(l_index).ATTRIBUTE23 ) ;
5747 hr_utility.trace(' ATTRIBUTE24 = '|| l_attributes(l_index).ATTRIBUTE24 ) ;
5748 hr_utility.trace(' ATTRIBUTE25 = '|| l_attributes(l_index).ATTRIBUTE25 ) ;
5749 hr_utility.trace(' ATTRIBUTE26 = '|| l_attributes(l_index).ATTRIBUTE26 ) ;
5750 hr_utility.trace(' ATTRIBUTE27 = '|| l_attributes(l_index).ATTRIBUTE27 ) ;
5751 hr_utility.trace(' ATTRIBUTE28 = '|| l_attributes(l_index).ATTRIBUTE28 ) ;
5752 hr_utility.trace(' ATTRIBUTE29 (p_alias_ref_object) = '|| l_attributes(l_index).ATTRIBUTE29 ) ;
5753 hr_utility.trace(' ATTRIBUTE30 (p_alias_value_name) = '|| l_attributes(l_index).ATTRIBUTE30 ) ;
5754 hr_utility.trace(' BLD_BLK_INFO_TYPE_ID = '|| l_attributes(l_index).BLD_BLK_INFO_TYPE_ID );
5755 hr_utility.trace(' OBJECT_VERSION_NUMBER = '|| l_attributes(l_index).OBJECT_VERSION_NUMBER );
5756 hr_utility.trace(' NEW = '|| l_attributes(l_index).NEW );
5757 hr_utility.trace(' CHANGED = '|| l_attributes(l_index).CHANGED );
5758 hr_utility.trace(' BLD_BLK_INFO_TYPE = '|| l_attributes(l_index).BLD_BLK_INFO_TYPE );
5759 hr_utility.trace(' PROCESS = '|| l_attributes(l_index).PROCESS );
5760 hr_utility.trace(' BUILDING_BLOCK_OVN = '|| l_attributes(l_index).BUILDING_BLOCK_OVN );
5761 hr_utility.trace('------------------------------------------------------');
5762
5763 l_index := l_attributes.NEXT (l_index);
5764
5765 END LOOP;
5766
5767 hr_utility.trace(' SVG ATTRIBUTES TABLE END ');
5768 hr_utility.trace(' *****************');
5769
5770 end if;
5771
5772 end if; -- g_debug
5773 --------------------------------------------------------- --SVG insert
5774
5775
5776
5777
5778
5779
5780 l_delete := TRUE;
5781 l_timecard_index := l_timecard.FIRST;
5782
5783 LOOP
5784 EXIT WHEN (NOT l_timecard.EXISTS (l_timecard_index));
5785 IF l_timecard (l_timecard_index).SCOPE = 'DETAIL' THEN
5786 IF fnd_date.canonical_to_date (l_timecard (l_timecard_index).date_to) = hr_general.end_of_time THEN
5787 l_delete := FALSE;
5788 EXIT;
5789 END IF;
5790 END IF;
5791
5792 IF l_timecard (l_timecard_index).SCOPE = 'TIMECARD' THEN
5793 IF fnd_date.canonical_to_date (l_timecard (l_timecard_index).date_to) =
5794 hr_general.end_of_time
5795 AND l_timecard (l_timecard_index).comment_text IS NOT NULL
5796 AND l_timecard (l_timecard_index).NEW = 'Y' THEN
5797 l_delete := FALSE;
5798 EXIT;
5799 END IF;
5800 END IF;
5801
5802 IF l_timecard (l_timecard_index).SCOPE = 'TIMECARD' THEN
5803 l_timecard_id := l_timecard (l_timecard_index).time_building_block_id;
5804 END IF;
5805
5806 -- next item
5807 l_timecard_index := l_timecard.NEXT (l_timecard_index);
5808 END LOOP;
5809 /*ADVICE(3875): Presence of more than one exit point from a loop [503] */
5810
5811 /*ADVICE(3877): Nested LOOPs should all be labeled [406] */
5812
5813
5814 -- save the timecard
5815
5816 IF (l_delete) THEN
5817 l_messages.DELETE;
5818
5819 IF l_timecard_id IS NOT NULL AND l_timecard_id < 0 THEN
5820 l_timecard.DELETE;
5821 l_attributes.DELETE;
5822 ELSE
5823 --delete the timecard as no detail is active
5824 hxc_timekeeper.delete_timecard (p_timecard_id => l_timecard_id, p_messages => l_messages);
5825 END IF;
5826 ELSE
5827 l_timecard_id := NULL;
5828 l_tc_status := NULL;
5829 l_messages.DELETE;
5830 if g_debug then
5831 hr_utility.trace('Timekeeper Save process--40');
5832 hr_utility.trace('l_timecard.count'||l_timecard.count);
5833 hr_utility.trace('l_attributes.count'||l_attributes.count);
5834 hr_utility.trace('l_messages.count'||l_messages.count);
5835 end if;
5836 IF l_mid_save = 'Y' THEN --2789497
5837 if g_debug then
5838 hr_utility.TRACE ('start');
5839 end if;
5840 -- my_debug.print_timecard('100', l_timecard);
5841 -- my_debug.print_attributes('200', l_attributes);
5842 --
5843
5844 /* Added for Bug 8775740
5845 HR OTL Absence Integration
5846
5847 Setting the Global vars so as to have the right values.
5848
5849 */
5850
5851 -- Change start
5852 HXC_RETRIEVE_ABSENCES.g_lock_row_id:= ROWIDTOCHAR(l_row_locked_id);
5853 HXC_RETRIEVE_ABSENCES.g_person_id:=l_resource_id;
5854 HXC_RETRIEVE_ABSENCES.g_start_time:=TO_DATE (spemp_tc_list (sp_index).start_date, 'DD-MM-RRRR');
5855 HXC_RETRIEVE_ABSENCES.g_stop_time:=TO_DATE (spemp_tc_list (sp_index).end_date, 'DD-MM-RRRR');
5856
5857 HXC_RETRIEVE_ABSENCES.g_detail_trans_tab.DELETE;
5858 -- Change end
5859
5860 if g_debug then
5861 hr_utility.trace('Global vars initialized in hxctksta - save timecard for hxc_retrieve_absences');
5862 hr_utility.trace('-----------------------------');
5863 hr_utility.trace('HXC_RETRIEVE_ABSENCES.g_lock_row_id = '||HXC_RETRIEVE_ABSENCES.g_lock_row_id);
5864 hr_utility.trace('HXC_RETRIEVE_ABSENCES.g_person_id = '||HXC_RETRIEVE_ABSENCES.g_person_id);
5865 hr_utility.trace('HXC_RETRIEVE_ABSENCES.g_start_time = '||HXC_RETRIEVE_ABSENCES.g_start_time);
5866 hr_utility.trace('HXC_RETRIEVE_ABSENCES.g_stop_time = '||HXC_RETRIEVE_ABSENCES.g_stop_time);
5867 end if;
5868
5869
5870 hxc_timekeeper.save_timecard (
5871 p_blocks => l_timecard,
5872 p_attributes => l_attributes,
5873 p_messages => l_messages,
5874 p_timecard_id => l_timecard_id,
5875 p_timecard_ovn => l_timecard_ovn,
5876 p_timekeeper_id => p_timekeeper_id,
5877 p_tk_audit_enabled => p_tk_audit_enabled,
5878 p_tk_notify_to => p_tk_notify_to,
5879 p_tk_notify_type => p_tk_notify_type
5880 );
5881 END IF;
5882 END IF;
5883 END IF;
5884 end if;
5885 /* end of changes made by senthil */
5886 sp_index := spemp_tc_list.NEXT (sp_index);
5887 END LOOP;
5888 /*ADVICE(3925): Nested LOOPs should all be labeled [406] */
5889
5890
5891 -- next timecard
5892 l_resource_id := l_resource_tc_table.NEXT (l_resource_id);
5893 END LOOP;
5894
5895 -- reset global table
5896 if g_debug then
5897 hr_utility.trace('Timekeeper Save process--50');
5898 end if;
5899 g_timekeeper_data.DELETE;
5900 g_negative_index := -2;
5901
5902 -- now we need to go through the global query table and up-to-date the information
5903 -- first set the global parameter to tell the query procedure to not update the
5904 -- global query table.
5905 -- get the g_timekeeper_data_query first.
5906
5907 -- IF it is not a submit
5908
5909 ---start the rqquery process
5910
5911 -- IF p_mode <> 'SUBMIT' THEN
5912
5913
5914 l_new_tk_data_from_process.DELETE;
5915 l_old_tk_data_from_process := g_timekeeper_data_query;
5916 g_from_tk_process := TRUE;
5917 -- repopulate the global table that we want to send back via the query
5918
5919 l_resource_id := l_resource_tc_table.FIRST;
5920
5921 LOOP
5922 EXIT WHEN (NOT l_resource_tc_table.EXISTS (l_resource_id));
5923 -- call the process query to requery only the person has
5924 -- his timecard changed
5925
5926 l_timekeeper_table.DELETE;
5927 timekeeper_query (
5928 p_timekeeper_data => l_timekeeper_table,
5929 p_timekeeper_id => p_timekeeper_id,
5930 p_start_period => p_start_period,
5931 p_end_period => p_end_period,
5932 p_group_id => NULL,
5933 p_resource_id => l_resource_id,
5934 p_attribute1 => NULL,
5935 p_attribute2 => NULL,
5936 p_attribute3 => NULL,
5937 p_attribute4 => NULL,
5938 p_attribute5 => NULL,
5939 p_attribute6 => NULL,
5940 p_attribute7 => NULL,
5941 p_attribute8 => NULL,
5942 p_attribute9 => NULL,
5943 p_attribute10 => NULL,
5944 p_attribute11 => NULL,
5945 p_attribute12 => NULL,
5946 p_attribute13 => NULL,
5947 p_attribute14 => NULL,
5948 p_attribute15 => NULL,
5949 p_attribute16 => NULL,
5950 p_attribute17 => NULL,
5951 p_attribute18 => NULL,
5952 p_attribute19 => NULL,
5953 p_attribute20 => NULL,
5954 p_status_code => NULL,
5955 p_rec_periodid => p_rec_periodid,
5956 p_superflag => p_superflag,
5957 p_reqryflg => 'Y',
5958 p_trx_lock_id => p_trx_lock_id,
5959 p_row_lock_id => g_lock_table (l_resource_id).row_lock_id,
5960 p_person_type => NULL,
5961 p_message_type => NULL,
5962 p_query_type => NULL,
5963 p_lock_profile => p_lock_profile,
5964 p_message_text => NULL,
5965 p_late_reason => NULL,
5966 p_change_reason => NULL,
5967 p_audit_enabled => NULL,
5968 p_audit_history => NULL
5969 );
5970
5971 -- now we have the new timecard saved in the DB
5972 -- we need to go through the global table to replace
5973 -- the old timecard for this person.
5974
5975 -- first we are populating all the timecard information
5976 -- that have changed.
5977
5978
5979 IF l_new_tk_data_from_process.COUNT > 0 THEN
5980 l_new_tk_data_index := l_new_tk_data_from_process.LAST + 1;
5981 ELSE
5982 l_new_tk_data_index := 1;
5983 END IF;
5984
5985 l_tk_data_index := l_timekeeper_table.FIRST;
5986 g_resource_tc_table (l_resource_id).no_rows := 0;
5987
5988 LOOP
5989 EXIT WHEN (NOT l_timekeeper_table.EXISTS (l_tk_data_index));
5990 l_new_tk_data_from_process (l_new_tk_data_index) := l_timekeeper_table (l_tk_data_index);
5991 l_new_tk_data_index := l_new_tk_data_index + 1;
5992 g_resource_tc_table (l_resource_id).no_rows :=
5993 NVL (g_resource_tc_table (l_resource_id).no_rows, 0) + 1;
5994 l_tk_data_index := l_timekeeper_table.NEXT (l_tk_data_index);
5995 END LOOP;
5996 /*ADVICE(4031): Nested LOOPs should all be labeled [406] */
5997
5998
5999 -- next timecard
6000 l_resource_id := l_resource_tc_table.NEXT (l_resource_id);
6001 END LOOP;
6002
6003 -- with the new information and the old information we are going
6004 -- to make the up-to-date information in global table
6005 -- handle the case that the query did not return a row
6006
6007 IF l_old_tk_data_from_process.COUNT = 0 THEN
6008 g_tk_data_query_from_process := l_new_tk_data_from_process;
6009 ELSE
6010 -- loop into the old table to made the new table
6011 l_tk_data_index := l_old_tk_data_from_process.FIRST;
6012
6013 LOOP
6014 EXIT WHEN (NOT l_old_tk_data_from_process.EXISTS (l_tk_data_index));
6015 l_resource_id := l_old_tk_data_from_process (l_tk_data_index).resource_id;
6016
6017 IF l_resource_tc_table.EXISTS (l_resource_id) THEN
6018 -- that means that we need to populate the new table with
6019 -- the new information contains in the new table
6020
6021 l_new_tk_data_index := l_new_tk_data_from_process.FIRST;
6022
6023 LOOP
6024 EXIT WHEN (NOT l_new_tk_data_from_process.EXISTS (l_new_tk_data_index));
6025
6026 IF l_new_tk_data_from_process (l_new_tk_data_index).resource_id = l_resource_id THEN
6027 l_no_details := 0;
6028 l_global_index := l_global_index + 1;
6029 g_tk_data_query_from_process (l_global_index) := l_new_tk_data_from_process (l_new_tk_data_index);
6030 g_tk_data_query_from_process (l_global_index).check_box := 'Y';
6031 g_submit_table (l_resource_id).resource_id := l_resource_id;
6032 g_submit_table (l_resource_id).timecard_id :=
6033 l_new_tk_data_from_process (l_new_tk_data_index).timecard_id;
6034 g_submit_table (l_resource_id).start_time :=
6035 l_new_tk_data_from_process (l_new_tk_data_index).timecard_start_period;
6036 g_submit_table (l_resource_id).stop_time :=
6037 l_new_tk_data_from_process (l_new_tk_data_index).timecard_end_period;
6038 g_submit_table (l_resource_id).row_lock_id :=
6039 l_new_tk_data_from_process (l_new_tk_data_index).row_lock_id;
6040 -- delete this information since we don't need it anymore
6041
6042 l_new_tk_data_from_process.DELETE (l_new_tk_data_index);
6043 END IF;
6044
6045 -- increment the index
6046 l_new_tk_data_index := l_new_tk_data_from_process.NEXT (l_new_tk_data_index);
6047 END LOOP;
6048 /*ADVICE(4083): Nested LOOPs should all be labeled [406] */
6049
6050 ELSE
6051 -- populate the information with the old data
6052
6053 l_global_index := l_global_index + 1;
6054 g_tk_data_query_from_process (l_global_index) := l_old_tk_data_from_process (l_tk_data_index);
6055 g_tk_data_query_from_process (l_global_index).check_box := 'N';
6056 g_resource_tc_table (l_resource_id).no_rows := 0;
6057 g_submit_table.DELETE (l_resource_id);
6058 END IF;
6059
6060 -- increment the index
6061
6062 l_tk_data_index := l_old_tk_data_from_process.NEXT (l_tk_data_index);
6063 END LOOP;
6064
6065 -- now we need to handle the extra new information and stick them
6066 -- at the bottom of the pl/sql table
6067 -- not a pretty solution -- need to look if we can find better.
6068
6069 l_new_tk_data_index := l_new_tk_data_from_process.FIRST;
6070
6071 LOOP
6072 EXIT WHEN (NOT l_new_tk_data_from_process.EXISTS (l_new_tk_data_index));
6073 l_global_index := l_global_index + 1;
6074 g_tk_data_query_from_process (l_global_index) := l_new_tk_data_from_process (l_new_tk_data_index);
6075 -- increment the index
6076 l_new_tk_data_index := l_new_tk_data_from_process.NEXT (l_new_tk_data_index);
6077 END LOOP;
6078 END IF;
6079
6080 g_tk_finish_process := TRUE;
6081 --END IF;
6082
6083 hxc_timekeeper_utilities.convert_type_to_message_table (l_messages, p_messages);
6084 /* bug fix for 5229954 */
6085 hxc_timekeeper_utilities.populate_detail_temp(1);
6086 /* end of fix for 5229954 */
6087 COMMIT;
6088 END;
6089
6090
6091 -------------------------------------------------------------------------------
6092 -- call_submit
6093 -------------------------------------------------------------------------------
6094 PROCEDURE call_submit (
6095 p_timekeeper_id IN NUMBER,
6096 p_start_period IN DATE,
6097 p_end_period IN DATE,
6098 p_submission_id IN NUMBER,
6099 p_request_id OUT NOCOPY NUMBER
6100 ) IS
6101 l_erro
6102 /*ADVICE(4134): Unreferenced variable [553] */
6103 VARCHAR2 (80);
6104 l_err_code
6105 /*ADVICE(4137): Unreferenced variable [553] */
6106 NUMBER
6107 /*ADVICE(4139): NUMBER has no precision [315] */
6108 ;
6109 BEGIN
6110 p_request_id := fnd_request.submit_request (
6111 application => 'HXC',
6112 program => 'HXCTKSUB',
6113 description => NULL,
6114 argument1 => p_timekeeper_id,
6115 argument2 => fnd_date.date_to_canonical (p_start_period),
6116 argument3 => fnd_date.date_to_canonical (p_end_period),
6117 argument4 => p_submission_id
6118 );
6119 COMMIT;
6120 END;
6121
6122
6123 ------------------------------------------------------------------------------
6124 -- submit resources
6125 ------------------------------------------------------------------------------
6126 PROCEDURE submit_resource (
6127 p_timekeeper_id
6128 /*ADVICE(4160): Unreferenced parameter [552] */
6129 IN NUMBER,
6130 p_start_time IN DATE,
6131 p_stop_time IN DATE,
6132 p_trx_id IN NUMBER,
6133 p_submit_id OUT NOCOPY NUMBER,
6134 p_insert OUT NOCOPY BOOLEAN,
6135 p_submit_emp OUT NOCOPY hxc_timekeeper_process.tk_submit_tab,
6136 p_messages IN OUT NOCOPY hxc_self_service_time_deposit.message_table
6137 ) IS
6138 CURSOR crs_max_submit IS
6139 SELECT MAX (submission_id)
6140 FROM hxc_tk_timekeeper_submits;
6141
6142 l_max_submission_id NUMBER
6143 /*ADVICE(4175): NUMBER has no precision [315] */
6144 ;
6145 l_next_val NUMBER
6146 /*ADVICE(4178): NUMBER has no precision [315] */
6147 ;
6148 l_index NUMBER
6149 /*ADVICE(4181): NUMBER has no precision [315] */
6150 ;
6151 l_success BOOLEAN;
6152 l_row_id ROWID
6153 /*ADVICE(4185): Use of ROWID [113] */
6154 ;
6155 l_tc_lock_boolean BOOLEAN;
6156 BEGIN
6157 OPEN crs_max_submit;
6158 FETCH crs_max_submit INTO l_max_submission_id;
6159 CLOSE crs_max_submit;
6160
6161 IF l_max_submission_id IS NULL THEN
6162 l_max_submission_id := 1;
6163 END IF;
6164
6165 SELECT hxc_tk_timekeeper_submits_s.NEXTVAL
6166 INTO l_next_val
6167 FROM DUAL;
6168
6169 IF l_max_submission_id < l_next_val THEN
6170 l_max_submission_id := l_next_val;
6171 ELSE
6172 l_max_submission_id := l_max_submission_id + 1;
6173 END IF;
6174
6175 p_insert := FALSE;
6176 l_index := g_submit_table.FIRST;
6177
6178 LOOP
6179 EXIT WHEN NOT g_submit_table.EXISTS (l_index);
6180 hxc_tks_ins.ins (
6181 p_resource_id => g_submit_table (l_index).resource_id,
6182 p_submission_id => l_max_submission_id
6183 );
6184 p_insert := TRUE;
6185 hxc_lock_api.release_lock (
6186 p_row_lock_id => g_submit_table (l_index).row_lock_id,
6187 p_process_locker_type => 'PUI_TIMEKEEPER_ACTION',
6188 p_transaction_lock_id => p_trx_id,
6189 p_released_success => l_success
6190 );
6191 hxc_timekeeper_process.add_remove_lock (
6192 p_resource_id => g_submit_table (l_index).resource_id,
6193 p_start_period => p_start_time,
6194 p_end_period => p_stop_time + g_one_day,
6195 p_timecard_id => NULL,
6196 p_row_lock_id => g_submit_table (l_index).row_lock_id,
6197 p_operation => 'N'
6198 );
6199 hxc_lock_api.request_lock (
6200 p_process_locker_type => 'PUI_TIMEKEEPER_ACTION',
6201 p_resource_id => g_submit_table (l_index).resource_id,
6202 p_start_time => p_start_time,
6203 p_stop_time => p_stop_time + g_one_day,
6204 p_time_building_block_id => NULL,
6205 p_time_building_block_ovn => NULL,
6206 p_transaction_lock_id => l_max_submission_id,
6207 p_expiration_time => 60,
6208 p_messages => p_messages,
6209 p_row_lock_id => l_row_id,
6210 p_locked_success => l_tc_lock_boolean
6211 );
6212 hxc_timekeeper_process.add_remove_lock (
6213 p_resource_id => g_submit_table (l_index).resource_id,
6214 p_start_period => p_start_time,
6215 p_end_period => p_stop_time + g_one_day,
6216 p_timecard_id => NULL,
6217 p_row_lock_id => l_row_id,
6218 p_operation => 'Y'
6219 );
6220 l_index := g_submit_table.NEXT (l_index);
6221 END LOOP;
6222
6223 p_submit_emp := g_submit_table;
6224 p_submit_id := l_max_submission_id;
6225 g_submit_table.DELETE;
6226 END submit_resource;
6227
6228
6229 -------------------------------------------------------------------------------
6230 -- run_submit
6231 -------------------------------------------------------------------------------
6232 PROCEDURE run_submit (
6233 p_errmsg
6234 /*ADVICE(4266): Unreferenced parameter [552] */
6235 OUT NOCOPY VARCHAR2,
6236 p_errcode
6237 /*ADVICE(4269): Unreferenced parameter [552] */
6238 OUT NOCOPY NUMBER,
6239 p_timekeeper_id IN NUMBER,
6240 p_start_period IN VARCHAR2,
6241 p_end_period IN VARCHAR2,
6242 p_submission_id IN NUMBER
6243 ) IS
6244 CURSOR crs_resource_id (
6245 p_submit_id IN NUMBER
6246 ) IS
6247 SELECT DISTINCT (resource_id) resource_id
6248 FROM hxc_tk_timekeeper_submits
6249 WHERE submission_id = p_submit_id;
6250
6251 CURSOR crs_employee_info (
6252 p_resource_id IN NUMBER,
6253 p_from_period IN DATE,
6254 p_to_period IN DATE
6255 ) IS
6256 SELECT DISTINCT NVL (ppf.employee_number, ppf.npw_number) employee_number,
6257 ppf.full_name,
6258 ppf.effective_end_date
6259 FROM per_people_f ppf
6260 WHERE ppf.person_id = p_resource_id
6261 AND p_from_period < ppf.effective_end_date
6262 AND p_to_period > ppf.effective_start_date
6263 AND EXISTS ( select 'x'
6264 from per_all_assignments_f paa
6265 WHERE ppf.person_id = paa.person_id
6266 AND paa.primary_flag = 'Y'
6267 AND paa.assignment_type IN ('E', 'C')
6268 AND p_from_period < paa.effective_end_date
6269 AND p_to_period > paa.effective_start_date )
6270 ORDER BY ppf.effective_end_date DESC;
6271
6272 /*Cursor Modified By Mithun for CWK Terminate Bug*/
6273 /* changes done by senthil for emp terminate enhancement*/
6274 CURSOR c_emp_terminateinfo(
6275 p_resource_id NUMBER
6276 ) IS
6277 SELECT final_process_date, date_start
6278 FROM per_periods_of_service
6279 WHERE person_id = p_resource_id
6280 union all
6281 select (final_process_date + NVL(fnd_profile.value('HXC_CWK_TK_FPD'),0)) final_process_date, date_start
6282 from per_periods_of_placement
6283 where person_id = p_resource_id
6284 ORDER BY date_start DESC;
6285
6286 --Added By Mithun for CWK Terminate Bug
6287 date_start DATE;
6288
6289 CURSOR c_tc_in_term_period_exists(
6290 p_resource_id number, p_start_date date, p_end_date date) IS
6291 SELECT 'Y'
6292 from hxc_time_building_blocks
6293 where resource_id=p_resource_id
6294 and scope='TIMECARD'
6295 and trunc(start_time)=trunc(p_start_date)
6296 and trunc(stop_time)=trunc(p_end_date)
6297 and (trunc(date_to) = hr_general.end_of_time or APPROVAL_STATUS='ERROR');
6298 /*end of senthil changes */
6299
6300 l_timecard hxc_block_table_type := hxc_block_table_type ();
6301 ord_timecard
6302 /*ADVICE(4303): Unreferenced variable [553] */
6303 hxc_block_table_type := hxc_block_table_type ();
6304 l_attributes hxc_attribute_table_type := hxc_attribute_table_type ();
6305 p_messages hxc_message_table_type := hxc_message_table_type ();
6306 l_day_id_info_table t_day_id_info_table;
6307 n
6308 /*ADVICE(4309): Unreferenced variable [553] */
6309 NUMBER
6310 /*ADVICE(4311): NUMBER has no precision [315] */
6311 := 0;
6312 l_timecard_id NUMBER
6313 /*ADVICE(4314): NUMBER has no precision [315] */
6314 := NULL;
6315 /*ADVICE(4316): Initialization to NULL is superfluous [417] */
6316
6317 l_timecard_ovn NUMBER
6318 /*ADVICE(4319): NUMBER has no precision [315] */
6319 := NULL;
6320 /*ADVICE(4321): Initialization to NULL is superfluous [417] */
6321
6322 l_approval_style_id NUMBER
6323 /*ADVICE(4324): NUMBER has no precision [315] */
6324 := NULL;
6325 /*ADVICE(4326): Initialization to NULL is superfluous [417] */
6326
6327 l_approval_status VARCHAR2 (80) := NULL;
6328 /*ADVICE(4329): Initialization to NULL is superfluous [417] */
6329
6330 l_index_next
6331 /*ADVICE(4332): Unreferenced variable [553] */
6332 NUMBER
6333 /*ADVICE(4334): NUMBER has no precision [315] */
6334 ;
6335 l_index_start
6336 /*ADVICE(4337): Unreferenced variable [553] */
6337 NUMBER
6338 /*ADVICE(4339): NUMBER has no precision [315] */
6339 ;
6340 l_result
6341 /*ADVICE(4342): Unreferenced variable [553] */
6342 VARCHAR2 (10);
6343 l_timecard_status VARCHAR2 (10);
6344 l_resource_id
6345 /*ADVICE(4346): Unreferenced variable [553] */
6346 NUMBER
6347 /*ADVICE(4348): NUMBER has no precision [315] */
6348 ;
6349 l_timecard_comment_text
6350 /*ADVICE(4351): Unreferenced variable [553] */
6351 VARCHAR2 (2000) := NULL;
6352 /*ADVICE(4353): VARCHAR2 declaration with length greater than 500 characters [307] */
6353
6354 /*ADVICE(4355): Initialization to NULL is superfluous [417] */
6355
6356 l_date_to
6357 /*ADVICE(4358): Unreferenced variable [553] */
6358 DATE;
6359 l_date_from
6360 /*ADVICE(4361): Unreferenced variable [553] */
6361 DATE;
6362 sub_log_msg VARCHAR2 (2000);
6363 /*ADVICE(4364): VARCHAR2 declaration with length greater than 500 characters [307] */
6364
6365 rej_log_msg VARCHAR2 (2000);
6366 /*ADVICE(4367): VARCHAR2 declaration with length greater than 500 characters [307] */
6367
6368 lock_log_msg VARCHAR2 (2000);
6369 /*ADVICE(4370): VARCHAR2 declaration with length greater than 500 characters [307] */
6370
6371 l_empnumber VARCHAR2 (30);
6372 l_empname VARCHAR2 (240);
6373 l_enddate DATE;
6374 spemp_tc_list hxc_timecard_utilities.periods;
6375 spemp_tc_info hxc_timekeeper_utilities.emptctab;
6376 sp_index NUMBER
6377 /*ADVICE(4378): NUMBER has no precision [315] */
6378 := 0;
6379 l_timecard_index_info hxc_timekeeper_process.t_timecard_index_info;
6380 l_attribute_index_info hxc_timekeeper_process.t_attribute_index_info;
6381 l_process_lock_type VARCHAR2 (80) := hxc_lock_util.c_pui_timekeeper_action;
6382 l_messages hxc_message_table_type := hxc_message_table_type ();
6383 l_row_id ROWID
6384 /*ADVICE(4385): Use of ROWID [113] */
6385 ;
6386 l_tc_lock_boolean BOOLEAN;
6387 l_relased_success BOOLEAN := FALSE;
6388 l_lock_trx_id NUMBER (15) := p_submission_id;
6389 l_lock_row_id ROWID
6390 /*ADVICE(4391): Use of ROWID [113] */
6391 ;
6392 l_notify_to VARCHAR2 (30);
6393 l_notify_type VARCHAR2 (20);
6394 l_tk_audit_enabled VARCHAR2 (30);
6395 l_operating_unit_id number(15);
6396 l_operating_name hr_operating_units.name%type;
6397 l_operating_unit_cnt number(10);
6398 l_emp_terminate_date date;
6399 l_tc_in_term_status varchar2(1) :='N';
6400 BEGIN
6401 g_submit := TRUE;
6402 -- initialize the workflow
6403
6404
6405 hxc_self_service_time_deposit.set_workflow_info (
6406 p_item_type => 'HXCEMP',
6407 p_process_name => 'HXC_APPROVAL'
6408 );
6409
6410 FOR c_resource IN crs_resource_id (p_submission_id) LOOP
6411 --Initialize the org_id
6412 BEGIN
6413 -- Derive the operating unit for the resource
6414
6415 -- ONLY CALL THIS FOR R12 WHEN API AVAILABLE
6416 Begin
6417 l_operating_unit_id := hr_organization_api.get_operating_unit
6418 (p_effective_date => sysdate
6419 ,p_person_id => c_resource.resource_id);
6420
6421 exception
6422 when others then
6423 MO_UTILS.get_default_ou(l_operating_unit_id,l_operating_name,l_operating_unit_cnt);
6424 end;
6425
6426 -- now set the operating unit context
6427
6428 -- ONLY CALL THIS FOR RELEASE 12
6429
6430 mo_global.init('HXC');
6431 mo_global.set_policy_context ( 'S', l_operating_unit_id );
6432 End;
6433 hxc_timekeeper_utilities.populate_tc_tab (
6434 c_resource.resource_id,
6435 fnd_date.canonical_to_date (p_start_period),
6436 fnd_date.canonical_to_date (p_end_period),
6437 spemp_tc_info
6438 );
6439 /* changes done by senthil for emp terminate enhancement*/
6440 /*Changed By Mithun for CWK Terminate Bug*/
6441 OPEN c_emp_terminateinfo (p_resource_id => c_resource.resource_id);
6442 FETCH c_emp_terminateinfo INTO l_emp_terminate_date, date_start;
6443 CLOSE c_emp_terminateinfo;
6444 if l_emp_terminate_date between fnd_date.canonical_to_date (p_start_period) and fnd_date.canonical_to_date (p_end_period) then
6445 open c_tc_in_term_period_exists(c_resource.resource_id, fnd_date.canonical_to_date (p_start_period), fnd_date.canonical_to_date (p_end_period));
6446 FETCH c_tc_in_term_period_exists into l_tc_in_term_status;
6447 close c_tc_in_term_period_exists;
6448 end if;
6449 if l_tc_in_term_status <> 'Y' then
6450 hxc_timekeeper_utilities.split_timecard (
6451 c_resource.resource_id,
6452 fnd_date.canonical_to_date (p_start_period),
6453 fnd_date.canonical_to_date (p_end_period),
6454 spemp_tc_info,
6455 spemp_tc_list
6456 );
6457 else
6458 spemp_tc_list (TO_NUMBER (TO_CHAR (TO_DATE (fnd_date.canonical_to_date(p_start_period), 'dd-mm-rrrr'), 'J'))).start_date := fnd_date.canonical_to_date (p_start_period);
6459 spemp_tc_list (TO_NUMBER (TO_CHAR (TO_DATE (fnd_date.canonical_to_date(p_start_period), 'dd-mm-rrrr'), 'J'))).end_date := fnd_date.canonical_to_date (p_end_period);
6460 end if;
6461 sp_index := spemp_tc_list.FIRST;
6462 LOOP
6463 EXIT WHEN NOT spemp_tc_list.EXISTS (sp_index);
6464 IF (TO_DATE (fnd_date.canonical_to_date (p_start_period), 'DD-MM-RRRR') >
6465 TO_DATE (spemp_tc_list (sp_index).start_date, 'DD-MM-RRRR')
6466 )
6467 OR (TO_DATE (fnd_date.canonical_to_date (p_end_period), 'DD-MM-RRRR') <
6468 TO_DATE (spemp_tc_list (sp_index).end_date, 'DD-MM-RRRR')
6469 ) THEN
6470 NULL;
6471 /*ADVICE(4432): Use of NULL statements [532] */
6472
6473 ELSE
6474 l_attributes.DELETE;
6475 l_timecard.DELETE;
6476 l_timecard_id := NULL;
6477 l_row_id := NULL;
6478 l_tc_lock_boolean := FALSE;
6479 l_relased_success := FALSE;
6480 l_day_id_info_table.delete;
6481 l_timecard_index_info.delete;
6482 l_attribute_index_info.delete;
6483
6484 create_timecard_day_structure (
6485 p_resource_id => c_resource.resource_id,
6486 p_start_period => TO_DATE (spemp_tc_list (sp_index).start_date, 'DD-MM-RRRR'),
6487 p_end_period => TO_DATE (spemp_tc_list (sp_index).end_date, 'DD-MM-RRRR'),
6488 p_tc_frdt => fnd_date.canonical_to_date (p_start_period),
6489 p_tc_todt => fnd_date.canonical_to_date (p_end_period),
6490 p_timecard => l_timecard,
6491 p_attributes => l_attributes,
6492 p_day_id_info_table => l_day_id_info_table,
6493 p_approval_style_id => l_approval_style_id,
6494 p_approval_status => l_approval_status,
6495 p_comment_text => NULL,
6496 p_timecard_status => l_timecard_status,
6497 p_attribute_index_info => l_attribute_index_info,
6498 p_timecard_index_info => l_timecard_index_info,
6499 p_timecard_id => l_timecard_id
6500 );
6501 --check the lock
6502 l_lock_row_id := hxc_lock_api.check_lock (
6503 p_process_locker_type => l_process_lock_type,
6504 p_transaction_lock_id => l_lock_trx_id,
6505 p_resource_id => c_resource.resource_id
6506 );
6507
6508 IF NVL (l_timecard_status, 'xx') = 'SUBMITTED' OR NVL (l_timecard_status, 'xx') = 'APPROVED' THEN
6509 fnd_file.new_line (fnd_file.LOG, 1);
6510 fnd_message.set_name ('HXC', 'HXC_NOCHANGE_TIMECARD');
6511
6512 IF sub_log_msg IS NULL THEN
6513 sub_log_msg := SUBSTR (fnd_message.get (), 1, 2000);
6514 fnd_file.put_line (fnd_file.LOG, sub_log_msg);
6515 rej_log_msg := NULL;
6516 fnd_file.new_line (fnd_file.LOG, 1);
6517 END IF;
6518
6519 OPEN crs_employee_info (
6520 c_resource.resource_id,
6521 fnd_date.canonical_to_date (p_start_period),
6522 fnd_date.canonical_to_date (p_end_period)
6523 );
6524 FETCH crs_employee_info INTO l_empnumber, l_empname, l_enddate;
6525 /*ADVICE(4482): FETCH into a list of variables instead of a record [204] */
6526
6527 CLOSE crs_employee_info;
6528 fnd_file.put_line (fnd_file.LOG, RTRIM (l_empnumber) || ' - ' || RTRIM (l_empname));
6529 hxc_lock_api.release_lock (
6530 p_row_lock_id => l_lock_row_id,
6531 p_process_locker_type => l_process_lock_type,
6532 p_transaction_lock_id => l_lock_trx_id,
6533 p_resource_id => NULL,
6534 p_start_time => NULL,
6535 p_stop_time => NULL,
6536 p_time_building_block_id => NULL,
6537 p_time_building_block_ovn => NULL,
6538 p_messages => l_messages,
6539 p_released_success => l_relased_success
6540 );
6541 ELSIF NVL (l_timecard_status, 'xx') = 'xx' THEN
6542 l_timecard.DELETE;
6543 l_attributes.DELETE;
6544 hxc_lock_api.release_lock (
6545 p_row_lock_id => l_lock_row_id,
6546 p_process_locker_type => l_process_lock_type,
6547 p_transaction_lock_id => l_lock_trx_id,
6548 p_resource_id => NULL,
6549 p_start_time => NULL,
6550 p_stop_time => NULL,
6551 p_time_building_block_id => NULL,
6552 p_time_building_block_ovn => NULL,
6553 p_messages => l_messages,
6554 p_released_success => l_relased_success
6555 );
6556 ELSE
6557 --if lock is removed again request lock
6558 IF l_lock_row_id IS NULL THEN
6559 hxc_lock_api.request_lock (
6560 p_process_locker_type => l_process_lock_type,
6561 p_resource_id => c_resource.resource_id,
6562 p_start_time => fnd_date.canonical_to_date (p_start_period),
6563 p_stop_time => fnd_date.canonical_to_date (p_end_period) + g_one_day,
6564 p_time_building_block_id => NULL,
6565 p_time_building_block_ovn => NULL,
6566 p_transaction_lock_id => l_lock_trx_id,
6567 p_messages => l_messages,
6568 p_row_lock_id => l_lock_row_id,
6569 p_locked_success => l_tc_lock_boolean
6570 );
6571 END IF;
6572
6573 IF l_lock_row_id IS NOT NULL THEN
6574 -- first insert message in log file if rejected TC is submitted without any change
6575 -- before subm,itting the TC.
6576
6577 IF NVL (l_timecard_status, 'xx') = 'REJECTED' THEN
6578 fnd_file.new_line (fnd_file.LOG, 1);
6579 fnd_message.set_name ('HXC', 'HXC_TK_SUBMIT_UNCHANGED_TC');
6580
6581 IF rej_log_msg IS NULL THEN
6582 rej_log_msg := SUBSTR (fnd_message.get (), 1, 2000);
6583 fnd_file.put_line (fnd_file.LOG, rej_log_msg);
6584 sub_log_msg := NULL;
6585 fnd_file.new_line (fnd_file.LOG, 1);
6586 END IF;
6587
6588 OPEN crs_employee_info (
6589 c_resource.resource_id,
6590 fnd_date.canonical_to_date (p_start_period),
6591 fnd_date.canonical_to_date (p_end_period)
6592 );
6593 FETCH crs_employee_info INTO l_empnumber, l_empname, l_enddate;
6594 /*ADVICE(4551): FETCH into a list of variables instead of a record [204] */
6595
6596 CLOSE crs_employee_info;
6597 fnd_file.put_line (fnd_file.LOG, RTRIM (l_empnumber) || ' - ' || RTRIM (l_empname));
6598 END IF;
6599
6600 l_notify_to :=
6601 hxc_preference_evaluation.resource_preferences (p_timekeeper_id, 'TK_TCARD_CLA', 3, SYSDATE);
6602 l_notify_type :=
6603 hxc_preference_evaluation.resource_preferences (p_timekeeper_id, 'TK_TCARD_CLA', 4, SYSDATE);
6604 l_tk_audit_enabled :=
6605 hxc_preference_evaluation.resource_preferences (p_timekeeper_id, 'TK_TCARD_CLA', 1, SYSDATE);
6606
6607 hxc_timekeeper.submit_timecard (
6608 p_blocks => l_timecard,
6609 p_attributes => l_attributes,
6610 p_messages => p_messages,
6611 p_timecard_id => l_timecard_id,
6612 p_timecard_ovn => l_timecard_ovn,
6613 p_timekeeper_id => p_timekeeper_id,
6614 p_tk_audit_enabled => l_tk_audit_enabled,
6615 p_tk_notify_to => l_notify_to,
6616 p_tk_notify_type => l_notify_type
6617 );
6618 l_relased_success := FALSE;
6619 hxc_lock_api.release_lock (
6620 p_row_lock_id => l_lock_row_id,
6621 p_process_locker_type => l_process_lock_type,
6622 p_transaction_lock_id => l_lock_trx_id,
6623 p_resource_id => NULL,
6624 p_start_time => NULL,
6625 p_stop_time => NULL,
6626 p_time_building_block_id => NULL,
6627 p_time_building_block_ovn => NULL,
6628 p_messages => l_messages,
6629 p_released_success => l_relased_success
6630 );
6631 ELSE
6632 --put message in log file as it is not locked
6633 OPEN crs_employee_info (
6634 c_resource.resource_id,
6635 fnd_date.canonical_to_date (p_start_period),
6636 fnd_date.canonical_to_date (p_end_period)
6637 );
6638 FETCH crs_employee_info INTO l_empnumber, l_empname, l_enddate;
6639 /*ADVICE(4595): FETCH into a list of variables instead of a record [204] */
6640
6641 CLOSE crs_employee_info;
6642 fnd_file.new_line (fnd_file.LOG, 1);
6643 fnd_message.set_name ('HXC', 'HXC_TIMECARD_LOCKED');
6644 fnd_message.set_token ('FULL_NAME', l_empname);
6645 lock_log_msg := SUBSTR (fnd_message.get (), 1, 2000);
6646 fnd_file.put_line (fnd_file.LOG, lock_log_msg);
6647 lock_log_msg := NULL;
6648 END IF;
6649 END IF;
6650 END IF;
6651
6652 sp_index := spemp_tc_list.NEXT (sp_index);
6653 END LOOP;
6654 /*ADVICE(4610): Nested LOOPs should all be labeled [406] */
6655 COMMIT;
6656
6657 END LOOP;
6658
6659 g_submit := FALSE;
6660 END;
6661
6662
6663 -------------------------------------------------------------------------------
6664 -- this procedure create the timecard - day structure for a resource_id
6665 -- and a period of time
6666 -------------------------------------------------------------------------------
6667
6668 PROCEDURE create_timecard_day_structure (
6669 p_resource_id IN NUMBER,
6670 p_start_period IN DATE,
6671 p_end_period IN DATE,
6672 p_tc_frdt
6673 /*ADVICE(4629): Unreferenced parameter [552] */
6674 IN DATE,
6675 p_tc_todt
6676 /*ADVICE(4632): Unreferenced parameter [552] */
6677 IN DATE,
6678 p_timecard IN OUT NOCOPY hxc_block_table_type,
6679 p_attributes IN OUT NOCOPY hxc_attribute_table_type,
6680 p_day_id_info_table OUT NOCOPY t_day_id_info_table,
6681 p_approval_style_id OUT NOCOPY NUMBER,
6682 p_approval_status OUT NOCOPY VARCHAR2,
6683 p_comment_text IN VARCHAR2,
6684 p_timecard_status OUT NOCOPY VARCHAR2,
6685 p_attribute_index_info IN OUT NOCOPY hxc_timekeeper_process.t_attribute_index_info,
6686 p_timecard_index_info IN OUT NOCOPY hxc_timekeeper_process.t_timecard_index_info,
6687 p_timecard_id OUT NOCOPY NUMBER
6688 ) IS
6689 CURSOR c_timecard_info (
6690 p_resource_id
6691 /*ADVICE(4647): This definition hides another one [556] */
6692 IN NUMBER,
6693 p_start_period
6694 /*ADVICE(4650): This definition hides another one [556] */
6695 IN DATE,
6696 p_end_period
6697 /*ADVICE(4653): This definition hides another one [556] */
6698 IN DATE
6699 ) IS
6700 SELECT time_building_block_id, object_version_number, date_to, date_from, approval_style_id,
6701 approval_status, comment_text,application_set_id
6702 FROM hxc_time_building_blocks
6703 WHERE resource_id = p_resource_id
6704 AND SCOPE = 'TIMECARD'
6705 AND date_to = hr_general.end_of_time
6706 AND start_time = p_start_period
6707 AND stop_time = p_end_period;
6708
6709 CURSOR c_day_info (
6710 p_resource_id
6711 /*ADVICE(4667): This definition hides another one [556] */
6712 IN NUMBER,
6713 p_start_period
6714 /*ADVICE(4670): This definition hides another one [556] */
6715 IN DATE,
6716 p_end_period
6717 /*ADVICE(4673): This definition hides another one [556] */
6718 IN DATE,
6719 p_parent_building_block_id IN NUMBER,
6720 p_parent_ovn IN NUMBER
6721 ) IS
6722 SELECT time_building_block_id, object_version_number, date_to, date_from,application_set_id
6723 FROM hxc_time_building_blocks
6724 WHERE resource_id = p_resource_id
6725 AND parent_building_block_id = p_parent_building_block_id
6726 AND parent_building_block_ovn = p_parent_ovn
6727 AND date_to = hr_general.end_of_time
6728 AND SCOPE = 'DAY'
6729 AND start_time = p_start_period
6730 AND stop_time = p_end_period;
6731
6732 CURSOR c_detail_info (
6733 p_resource_id
6734 /*ADVICE(4690): This definition hides another one [556] */
6735 IN NUMBER,
6736 p_parent_building_block_id IN NUMBER,
6737 p_parent_ovn IN NUMBER
6738 ) IS
6739 SELECT time_building_block_id detail_id, object_version_number detail_ovn, measure, date_to,
6740 date_from, start_time, stop_time, comment_text,application_set_id
6741 FROM hxc_time_building_blocks
6742 WHERE resource_id = p_resource_id
6743 AND parent_building_block_id = p_parent_building_block_id
6744 AND parent_building_block_ovn = p_parent_ovn
6745 AND date_to = hr_general.end_of_time
6746 AND SCOPE = 'DETAIL';
6747
6748 l_find_day_also BOOLEAN := TRUE;
6749 l_index_day NUMBER
6750 /*ADVICE(4706): NUMBER has no precision [315] */
6751 := 0;
6752 l_index
6753 /*ADVICE(4709): Unreferenced variable [553] */
6754 NUMBER
6755 /*ADVICE(4711): NUMBER has no precision [315] */
6756 ;
6757 l_timecard_id NUMBER
6758 /*ADVICE(4714): NUMBER has no precision [315] */
6759 := NULL;
6760 /*ADVICE(4716): Initialization to NULL is superfluous [417] */
6761
6762 l_timecard_ovn NUMBER
6763 /*ADVICE(4719): NUMBER has no precision [315] */
6764 := NULL;
6765 /*ADVICE(4721): Initialization to NULL is superfluous [417] */
6766
6767 l_timecard_comment_text VARCHAR2 (2000) := NULL;
6768 /*ADVICE(4724): VARCHAR2 declaration with length greater than 500 characters [307] */
6769
6770 /*ADVICE(4726): Initialization to NULL is superfluous [417] */
6771
6772 l_day_id NUMBER
6773 /*ADVICE(4729): NUMBER has no precision [315] */
6774 := 0;
6775 l_day_ovn NUMBER
6776 /*ADVICE(4732): NUMBER has no precision [315] */
6777 := NULL;
6778 /*ADVICE(4734): Initialization to NULL is superfluous [417] */
6779
6780 l_date_to DATE;
6781 l_date_from DATE;
6782 l_day_date_from DATE;
6783 l_day_date_to DATE;
6784 l_emp_negpref VARCHAR2 (150);
6785 l_emp_recpref NUMBER
6786 /*ADVICE(4742): NUMBER has no precision [315] */
6787 ;
6788 l_emp_appstyle NUMBER
6789 /*ADVICE(4745): NUMBER has no precision [315] */
6790 ;
6791 l_emp_layout1 NUMBER
6792 /*ADVICE(4748): NUMBER has no precision [315] */
6793 ;
6794 l_emp_layout2 NUMBER
6795 /*ADVICE(4751): NUMBER has no precision [315] */
6796 ;
6797 l_emp_layout3 NUMBER
6798 /*ADVICE(4754): NUMBER has no precision [315] */
6799 ;
6800 l_emp_layout4 NUMBER
6801 /*ADVICE(4757): NUMBER has no precision [315] */
6802 ;
6803 l_emp_layout5 NUMBER
6804 /*ADVICE(4760): NUMBER has no precision [315] */
6805 ;
6806 l_emp_layout6 NUMBER
6807 /*ADVICE(4763): NUMBER has no precision [315] */
6808 ;
6809 l_emp_layout7 NUMBER
6810 /*ADVICE(4766): NUMBER has no precision [315] */
6811 ;
6812 l_emp_layout8 NUMBER
6813 /*ADVICE(4769): NUMBER has no precision [315] */
6814 ;
6815 l_emp_edits VARCHAR2 (150);
6816 l_pastdt VARCHAR2 (30);
6817 l_futuredt VARCHAR2 (30);
6818 l_pref_table
6819 /*ADVICE(4775): Unreferenced variable [553] */
6820 hxc_preference_evaluation.t_pref_table;
6821 l_timecard_status VARCHAR2 (10);
6822 l_emp_start_date DATE;
6823 l_emp_terminate_date DATE;
6824 l_audit_enabled VARCHAR2 (150);
6825 l_application_set_id hxc_time_building_blocks.application_set_id%type:=NULL;
6826 l_day_changed VARCHAR2(1):='N';
6827 l_timecard_changed VARCHAR2(1):='N';
6828
6829 l_found VARCHAR2(1):='N'; /* Bug 9014012 */
6830 l_tmp_index NUMBER; /* Bug 9014012 */
6831
6832
6833 BEGIN
6834 g_debug :=hr_utility.debug_enabled;
6835 -- check if the resource_id has already an timecard for the
6836 -- period.
6837
6838 OPEN c_timecard_info (p_resource_id, p_start_period, p_end_period + g_one_day);
6839 FETCH c_timecard_info INTO l_timecard_id,
6840 l_timecard_ovn,
6841 l_date_to,
6842 l_date_from,
6843 p_approval_style_id,
6844 p_approval_status,
6845 l_timecard_comment_text,
6846 l_application_set_id;
6847 /*ADVICE(4793): FETCH into a list of variables instead of a record [204] */
6848
6849 CLOSE c_timecard_info;
6850
6851 IF NOT g_submit THEN
6852 l_timecard_comment_text := p_comment_text;
6853 END IF;
6854
6855 ---store the employee preferences
6856 l_emp_negpref := NULL;
6857 l_emp_recpref := NULL;
6858 l_emp_appstyle := NULL;
6859 l_emp_layout1 := NULL;
6860 l_emp_layout2 := NULL;
6861 l_emp_layout3 := NULL;
6862 l_emp_layout4 := NULL;
6863 l_emp_layout5 := NULL;
6864 l_emp_layout6 := NULL;
6865 l_emp_layout7 := NULL;
6866 l_emp_layout8 := NULL;
6867 l_emp_edits := NULL;
6868 l_audit_enabled := NULL;
6869
6870 -- let's get the resource preference
6871 -- we need to reset the approval style all the time.
6872 hxc_timekeeper_utilities.get_emp_pref (
6873 p_resource_id => p_resource_id,
6874 neg_pref => l_emp_negpref,
6875 recpref => l_emp_recpref,
6876 appstyle => l_emp_appstyle,
6877 layout1 => l_emp_layout1,
6878 layout2 => l_emp_layout2,
6879 layout3 => l_emp_layout3,
6880 layout4 => l_emp_layout4,
6881 layout5 => l_emp_layout5,
6882 layout6 => l_emp_layout6,
6883 layout7 => l_emp_layout7,
6884 layout8 => l_emp_layout8,
6885 edits => l_emp_edits,
6886 l_pastdate => l_pastdt,
6887 l_futuredate => l_futuredt,
6888 l_emp_start_date => l_emp_start_date,
6889 l_emp_terminate_date =>l_emp_terminate_date,
6890 l_audit_enabled => l_audit_enabled
6891 );
6892 if g_debug then
6893 hr_utility.TRACE ('_audit_enabled'|| l_audit_enabled);
6894 end if;
6895
6896 p_approval_style_id := l_emp_appstyle;
6897
6898 if g_debug then
6899 hr_utility.trace('SVG create_timecard_day_structure : l_timecard_id: '||l_timecard_id);
6900 hr_utility.trace('SVG create_timecard_day_structure : g_negative_index: '||g_negative_index);
6901 end if;
6902
6903 -- if the timecard_id is null then we need to generate one
6904 IF l_timecard_id IS NULL then
6905 g_negative_index := g_negative_index - 1;
6906
6907 /*Bug 9014012*/
6908
6909 l_found:= 'N';
6910
6911 LOOP
6912 l_tmp_index:= g_negative_index * -1;
6913 if g_tk_prepop_detail_id_tab.EXISTS(l_tmp_index) then
6914
6915 g_negative_index := g_negative_index - 1;
6916 l_found:= 'N';
6917
6918 else
6919
6920 l_found:='Y';
6921
6922 end if;
6923
6924 EXIT WHEN l_found = 'Y';
6925 END LOOP;
6926
6927
6928 if g_debug then
6929 hr_utility.trace('g_negative_index = '||g_negative_index);
6930 hr_utility.trace('g_resource_prepop_count 1 ='||g_resource_prepop_count);
6931 end if;
6932
6933 l_timecard_id := g_negative_index;
6934 l_date_to := hr_general.end_of_time;
6935 l_date_from := SYSDATE;
6936 l_timecard_ovn := 1; --added for new deposit_wrapper null;
6937 l_find_day_also := FALSE;
6938 -- we will need to create the required attributes on the timecard as LAYOUT....
6939 -- first we need to find the approval_style_id and the layout information
6940 -- attached to user the preference.
6941
6942 g_negative_index := g_negative_index - 1;
6943
6944 /*Bug 9014012*/
6945
6946 l_found:= 'N';
6947
6948 LOOP
6949 l_tmp_index:= g_negative_index * -1;
6950 if g_tk_prepop_detail_id_tab.EXISTS(l_tmp_index) then
6951
6952 g_negative_index := g_negative_index - 1;
6953 l_found:= 'N';
6954
6955 else
6956
6957 l_found:='Y';
6958
6959 end if;
6960
6961 EXIT WHEN l_found = 'Y';
6962 END LOOP;
6963
6964
6965 if g_debug then
6966 hr_utility.trace('g_negative_index = '||g_negative_index);
6967 end if;
6968 --
6969 hxc_timekeeper_utilities.add_attribute (
6970 p_attribute => p_attributes,
6971 p_attribute_id => g_negative_index,
6972 p_tbb_id => l_timecard_id,
6973 p_tbb_ovn => l_timecard_ovn,
6974 p_blk_type => 'LAYOUT',
6975 p_blk_id => hxc_alias_utility.get_bld_blk_type_id ('LAYOUT'),
6976 p_att_category => 'LAYOUT',
6977 p_att_1 => l_emp_layout1,
6978 p_att_2 => l_emp_layout2,
6979 p_att_3 => l_emp_layout3,
6980 p_att_4 => l_emp_layout4,
6981 p_att_5 => l_emp_layout5,
6982 p_att_6 => l_emp_layout6,
6983 p_att_7 => l_emp_layout7,
6984 p_att_8 => l_emp_layout8,
6985 p_attribute_index_info => p_attribute_index_info
6986 );
6987 p_timecard_status := NULL;
6988
6989 if g_debug then
6990 hr_utility.trace('After add_attribute for LAYOUT');
6991 end if;
6992
6993 ELSE
6994 -- if the timecard is not null then we create the all attributes table
6995
6996 IF g_submit THEN
6997 l_timecard_status :=
6998 hxc_timecard_search_pkg.get_timecard_status_code (l_timecard_id, l_timecard_ovn);
6999 p_timecard_status := l_timecard_status;
7000 END IF;
7001
7002 hxc_timekeeper_utilities.create_attribute_structure (
7003 p_timecard_id => l_timecard_id,
7004 p_timecard_ovn => l_timecard_ovn,
7005 p_resource_id => p_resource_id,
7006 p_start_period => p_start_period,
7007 p_end_period => p_end_period,
7008 p_attributes => p_attributes,
7009 p_add_hours_type_id => NULL,
7010 p_attribute_index_info => p_attribute_index_info
7011 );
7012 END IF;
7013
7014 p_timecard_id := l_timecard_id;
7015 -- create the timecard block
7016 /* start of fix for 5398047 */
7017 if (not g_submit ) and p_approval_status = 'WORKING' then
7018 l_timecard_changed:='N';
7019 else
7020 l_timecard_changed:='Y';
7021 end if;
7022 /* end of fix for 5398047 */
7023 if g_debug then
7024 hr_utility.trace('before add_block for TIMECARD');
7025 end if;
7026
7027 hxc_timekeeper_utilities.add_block (
7028 p_timecard => p_timecard,
7029 p_timecard_id => l_timecard_id,
7030 p_ovn => l_timecard_ovn,
7031 p_parent_id => NULL,
7032 p_parent_ovn => NULL,
7033 p_approval_style_id => p_approval_style_id,
7034 p_measure => NULL,
7035 p_scope => 'TIMECARD',
7036 p_date_to => l_date_to,
7037 p_date_from => l_date_from,
7038 p_start_period => p_start_period,
7039 p_end_period => p_end_period + g_one_day,
7040 p_resource_id => p_resource_id,
7041 p_changed => l_timecard_changed,
7042 p_comment_text => l_timecard_comment_text,
7043 p_submit_flg => g_submit,
7044 p_application_set_id => l_application_set_id,
7045 p_timecard_index_info => p_timecard_index_info
7046 );
7047
7048 -- create the day block
7049 WHILE p_start_period + l_index_day <= p_end_period
7050 /*ADVICE(4917): Complex expression not fully parenthesized [404] */
7051 LOOP
7052 -- create a day block
7053 -- first check if the the day already exists
7054
7055 IF l_find_day_also THEN
7056 OPEN c_day_info (
7057 p_resource_id,
7058 p_start_period + l_index_day,
7059 p_start_period + l_index_day + g_one_day,
7060 l_timecard_id,
7061 l_timecard_ovn
7062 );
7063 FETCH c_day_info INTO l_day_id, l_day_ovn, l_day_date_to, l_day_date_from,l_application_set_id;
7064 /*ADVICE(4931): FETCH into a list of variables instead of a record [204] */
7065
7066
7067 IF c_day_info%NOTFOUND THEN
7068 g_negative_index := g_negative_index - 1;
7069
7070 /*Bug 9014012*/
7071
7072 l_found:= 'N';
7073
7074 LOOP
7075 l_tmp_index:= g_negative_index * -1;
7076 if g_tk_prepop_detail_id_tab.EXISTS(l_tmp_index) then
7077
7078 g_negative_index := g_negative_index - 1;
7079 l_found:= 'N';
7080
7081 else
7082
7083 l_found:='Y';
7084
7085 end if;
7086
7087 EXIT WHEN l_found = 'Y';
7088 END LOOP;
7089
7090
7091 l_day_date_to := hr_general.end_of_time;
7092 l_day_date_from := SYSDATE;
7093 l_day_id := g_negative_index;
7094 l_day_ovn := 1;
7095 END IF;
7096
7097 CLOSE c_day_info;
7098 ELSE
7099
7100 g_negative_index := g_negative_index - 1;
7101
7102 /*Bug 9014012*/
7103
7104 l_found:= 'N';
7105
7106 LOOP
7107 l_tmp_index:= g_negative_index * -1;
7108 if g_tk_prepop_detail_id_tab.EXISTS(l_tmp_index) then
7109
7110 g_negative_index := g_negative_index - 1;
7111 l_found:= 'N';
7112
7113 else
7114
7115 l_found:='Y';
7116
7117 end if;
7118
7119 EXIT WHEN l_found = 'Y';
7120 END LOOP;
7121
7122
7123
7124 l_day_date_to := hr_general.end_of_time;
7125 l_day_date_from := SYSDATE;
7126 l_day_id := g_negative_index;
7127 l_day_ovn := 1;
7128 END IF;
7129
7130 -- add the day
7131 /* start of fix for 5398047 */
7132 if (not g_submit ) then
7133 l_day_changed:='N';
7134 else
7135 l_day_changed:='Y';
7136 end if;
7137 /* end of fix for 5398047 */
7138 hxc_timekeeper_utilities.add_block (
7139 p_timecard => p_timecard,
7140 p_timecard_id => l_day_id,
7141 p_ovn => l_day_ovn,
7142 p_parent_id => l_timecard_id,
7143 p_parent_ovn => l_timecard_ovn,
7144 p_approval_style_id => p_approval_style_id,
7145 p_measure => NULL,
7146 p_scope => 'DAY',
7147 p_date_to => l_day_date_to,
7148 p_date_from => l_day_date_from,
7149 p_start_period => p_start_period + l_index_day,
7150 p_end_period => p_start_period + l_index_day + g_one_day,
7151 p_resource_id => p_resource_id,
7152 p_changed => l_day_changed,
7153 p_comment_text => NULL,
7154 p_submit_flg => g_submit,
7155 p_application_set_id => l_application_set_id,
7156 p_timecard_index_info => p_timecard_index_info
7157 );
7158
7159 -- add the detail now
7160 IF l_day_id > 0 THEN
7161 FOR detail_info IN c_detail_info (p_resource_id, l_day_id, l_day_ovn) LOOP
7162 -- add the detail
7163 hxc_timekeeper_utilities.add_block (
7164 p_timecard => p_timecard,
7165 p_timecard_id => detail_info.detail_id,
7166 p_ovn => detail_info.detail_ovn,
7167 p_parent_id => l_day_id,
7168 p_parent_ovn => l_day_ovn,
7169 p_approval_style_id => p_approval_style_id,
7170 p_measure => detail_info.measure,
7171 p_scope => 'DETAIL',
7172 p_date_to => detail_info.date_to,
7173 p_date_from => detail_info.date_from,
7174 p_start_period => detail_info.start_time,
7175 p_end_period => detail_info.stop_time,
7176 p_resource_id => p_resource_id,
7177 p_changed => 'Y',
7178 p_comment_text => detail_info.comment_text,
7179 p_submit_flg => g_submit,
7180 p_application_set_id => detail_info.application_set_id,
7181 p_timecard_index_info => p_timecard_index_info
7182 );
7183 END LOOP;
7184 /*ADVICE(4996): Nested LOOPs should all be labeled [406] */
7185
7186 END IF;
7187
7188 p_day_id_info_table (l_index_day).day_id := l_day_id;
7189 p_day_id_info_table (l_index_day).day_ovn := l_day_ovn;
7190 -- increment the l_index_day of one
7191 l_index_day := l_index_day + 1;
7192 END LOOP; --day block while loop
7193 END create_timecard_day_structure;
7194
7195
7196 -------------------------------------------------------------------------------
7197 -- this procedure create the detail-attribute information for an existing
7198 -- timecard structure
7199 -------------------------------------------------------------------------------
7200
7201 PROCEDURE create_detail_structure (
7202 p_timekeeper_id IN NUMBER,
7203 p_att_tab IN hxc_alias_utility.t_alias_att_info,
7204 p_resource_id IN NUMBER,
7205 p_start_period IN DATE,
7206 p_end_period IN DATE,
7207 p_tc_frdt IN DATE,
7208 p_tc_todt
7209 /*ADVICE(5021): Unreferenced parameter [552] */
7210 IN DATE,
7211 p_insert_detail IN hxc_timekeeper_process.t_time_info,
7212 p_timecard IN OUT NOCOPY hxc_block_table_type,
7213 p_attributes IN OUT NOCOPY hxc_attribute_table_type,
7214 p_day_id_info_table IN hxc_timekeeper_process.t_day_id_info_table,
7215 p_approval_style_id IN NUMBER,
7216 p_attribute_index_info IN OUT NOCOPY hxc_timekeeper_process.t_attribute_index_info,
7217 p_timecard_index_info IN OUT NOCOPY hxc_timekeeper_process.t_timecard_index_info,
7218 p_timecard_id IN NUMBER,
7219 p_mid_save IN OUT NOCOPY VARCHAR2,
7220 p_comment_made_null IN OUT NOCOPY BOOLEAN,
7221 p_row_lock_id OUT NOCOPY ROWID,
7222 p_tk_audit_enabled IN VARCHAR2
7223 ) IS
7224 l_index_day NUMBER
7225 /*ADVICE(5036): NUMBER has no precision [315] */
7226 := 0;
7227 l_measure NUMBER
7228 /*ADVICE(5039): NUMBER has no precision [315] */
7229 := NULL;
7230 /*ADVICE(5041): Initialization to NULL is superfluous [417] */
7231
7232 l_detail_id hxc_time_building_blocks.time_building_block_id%TYPE := 0;
7233 l_detail_ovn NUMBER
7234 /*ADVICE(5045): NUMBER has no precision [315] */
7235 := 0;
7236 l_detail_time_in DATE;
7237 l_detail_time_out DATE;
7238 l_detail_comment_text VARCHAR2 (2000) := NULL;
7239 /*ADVICE(5050): VARCHAR2 declaration with length greater than 500 characters [307] */
7240
7241 /*ADVICE(5052): Initialization to NULL is superfluous [417] */
7242
7243 l_detail_old_comment_text VARCHAR2 (2000);
7244 /*ADVICE(5055): VARCHAR2 declaration with length greater than 500 characters [307] */
7245
7246 l_attribute_index NUMBER
7247 /*ADVICE(5058): NUMBER has no precision [315] */
7248 ;
7249 l_att_string VARCHAR2 (100);
7250 l_action VARCHAR2 (80);
7251 l_index_next
7252 /*ADVICE(5063): Unreferenced variable [553] */
7253 NUMBER
7254 /*ADVICE(5065): NUMBER has no precision [315] */
7255 ;
7256 l_index_start
7257 /*ADVICE(5068): Unreferenced variable [553] */
7258 NUMBER
7259 /*ADVICE(5070): NUMBER has no precision [315] */
7260 ;
7261 l_result
7262 /*ADVICE(5073): Unreferenced variable [553] */
7263 VARCHAR2 (10);
7264 l_tbb_id_reference_table hxc_alias_utility.t_tbb_id_reference;
7265 n
7266 /*ADVICE(5077): Unreferenced variable [553] */
7267 NUMBER
7268 /*ADVICE(5079): NUMBER has no precision [315] */
7269 := 0;
7270 valid_att_cat VARCHAR2 (2000) := NULL;
7271 /*ADVICE(5082): VARCHAR2 declaration with length greater than 500 characters [307] */
7272
7273 /*ADVICE(5084): Initialization to NULL is superfluous [417] */
7274
7275 l_add_index_day NUMBER
7276 /*ADVICE(5087): NUMBER has no precision [315] */
7277 := 0;
7278 bldtyp_id NUMBER
7279 /*ADVICE(5090): NUMBER has no precision [315] */
7280 ;
7281 reason_bldtyp_id NUMBER
7282 /*ADVICE(5093): NUMBER has no precision [315] */
7283 ;
7284 l_old_attribute_value VARCHAR2 (150);
7285 l_new_attribute_value VARCHAR2 (150);
7286 l_application_set_id hxc_time_building_blocks.application_set_id%type:=NULL;
7287
7288 /*
7289 Added for bug 8775740
7290 HR OTL Absence Integration.
7291 */
7292 -- Change start
7293 l_tmp_index NUMBER;
7294 l_found VARCHAR2(1);
7295 -- Change end
7296
7297
7298 CURSOR c_detail (
7299 p_detailid IN NUMBER
7300 ) IS
7301 SELECT *
7302 FROM hxc_tk_detail_temp
7303 WHERE detailid = p_detailid;
7304
7305 CURSOR c_timecard_info (
7306 p_resource_id
7307 /*ADVICE(5107): This definition hides another one [556] */
7308 IN NUMBER,
7309 p_start_period
7310 /*ADVICE(5110): This definition hides another one [556] */
7311 IN DATE,
7312 p_end_period
7313 /*ADVICE(5113): This definition hides another one [556] */
7314 IN DATE
7315 ) IS
7316 SELECT comment_text
7317 FROM hxc_time_building_blocks
7318 WHERE resource_id = p_resource_id
7319 AND SCOPE = 'TIMECARD'
7320 AND date_to = hr_general.end_of_time
7321 AND start_time = p_start_period
7322 AND stop_time = p_end_period;
7323
7324 c_row hxc_tk_detail_temp%ROWTYPE;
7325
7326 l_detail_reason_category VARCHAR2 (150);
7327 l_detail_reason_att_1 VARCHAR2 (150);
7328 l_detail_reason_att_2 VARCHAR2 (150);
7329 l_detail_reason_att_3 VARCHAR2 (150);
7330 l_detail_reason_att_4 VARCHAR2 (150);
7331 l_detail_reason_att_5 VARCHAR2 (150);
7332 l_detail_reason_att_6 VARCHAR2 (150);
7333 l_detail_reason_att_7 VARCHAR2 (150);
7334
7335 l_detail_old_reason_category VARCHAR2 (150);
7336 l_detail_old_reason_att_1 VARCHAR2 (150);
7337 l_detail_old_reason_att_2 VARCHAR2 (150);
7338 l_detail_old_reason_att_3 VARCHAR2 (150);
7339 l_detail_old_reason_att_4 VARCHAR2 (150);
7340 l_detail_old_reason_att_5 VARCHAR2 (150);
7341 l_detail_old_reason_att_6 VARCHAR2 (150);
7342 l_detail_old_reason_att_7 VARCHAR2 (150);
7343
7344 l_detail_dff_category VARCHAR2 (150);
7345 l_detail_att_1 VARCHAR2 (150);
7346 l_detail_att_2 VARCHAR2 (150);
7347 l_detail_att_3 VARCHAR2 (150);
7348 l_detail_att_4 VARCHAR2 (150);
7349 l_detail_att_5 VARCHAR2 (150);
7350 l_detail_att_6 VARCHAR2 (150);
7351 l_detail_att_7 VARCHAR2 (150);
7352 l_detail_att_8 VARCHAR2 (150);
7353 l_detail_att_9 VARCHAR2 (150);
7354 l_detail_att_10 VARCHAR2 (150);
7355 l_detail_att_11 VARCHAR2 (150);
7356 l_detail_att_12 VARCHAR2 (150);
7357 l_detail_att_13 VARCHAR2 (150);
7358 l_detail_att_14 VARCHAR2 (150);
7359 l_detail_att_15 VARCHAR2 (150);
7360 l_detail_att_16 VARCHAR2 (150);
7361 l_detail_att_17 VARCHAR2 (150);
7362 l_detail_att_18 VARCHAR2 (150);
7363 l_detail_att_19 VARCHAR2 (150);
7364 l_detail_att_20 VARCHAR2 (150);
7365 l_detail_att_21 VARCHAR2 (150);
7366 l_detail_att_22 VARCHAR2 (150);
7367 l_detail_att_23 VARCHAR2 (150);
7368 l_detail_att_24 VARCHAR2 (150);
7369 l_detail_att_25 VARCHAR2 (150);
7370 l_detail_att_26 VARCHAR2 (150);
7371 l_detail_att_27 VARCHAR2 (150);
7372 l_detail_att_28 VARCHAR2 (150);
7373 l_detail_att_29 VARCHAR2 (150);
7374 l_detail_att_30 VARCHAR2 (150);
7375
7376 l_detail_dff_old_category VARCHAR2 (150);
7377 l_detail_old_att_1 VARCHAR2 (150);
7378 l_detail_old_att_2 VARCHAR2 (150);
7379 l_detail_old_att_3 VARCHAR2 (150);
7380 l_detail_old_att_4 VARCHAR2 (150);
7381 l_detail_old_att_5 VARCHAR2 (150);
7382 l_detail_old_att_6 VARCHAR2 (150);
7383 l_detail_old_att_7 VARCHAR2 (150);
7384 l_detail_old_att_8 VARCHAR2 (150);
7385 l_detail_old_att_9 VARCHAR2 (150);
7386 l_detail_old_att_10 VARCHAR2 (150);
7387 l_detail_old_att_11 VARCHAR2 (150);
7388 l_detail_old_att_12 VARCHAR2 (150);
7389 l_detail_old_att_13 VARCHAR2 (150);
7390 l_detail_old_att_14 VARCHAR2 (150);
7391 l_detail_old_att_15 VARCHAR2 (150);
7392 l_detail_old_att_16 VARCHAR2 (150);
7393 l_detail_old_att_17 VARCHAR2 (150);
7394 l_detail_old_att_18 VARCHAR2 (150);
7395 l_detail_old_att_19 VARCHAR2 (150);
7396 l_detail_old_att_20 VARCHAR2 (150);
7397 l_detail_old_att_21 VARCHAR2 (150);
7398 l_detail_old_att_22 VARCHAR2 (150);
7399 l_detail_old_att_23 VARCHAR2 (150);
7400 l_detail_old_att_24 VARCHAR2 (150);
7401 l_detail_old_att_25 VARCHAR2 (150);
7402 l_detail_old_att_26 VARCHAR2 (150);
7403 l_detail_old_att_27 VARCHAR2 (150);
7404 l_detail_old_att_28 VARCHAR2 (150);
7405 l_detail_old_att_29 VARCHAR2 (150);
7406 l_detail_old_att_30 VARCHAR2 (150);
7407
7408 l_detail_info_found BOOLEAN := FALSE;
7409 l_attribute_found BOOLEAN := FALSE;
7410
7411 l_reason_info_found BOOLEAN := FALSE;
7412 l_cla_attribute_changed BOOLEAN := FALSE;
7413
7414 l_detail_dff_found BOOLEAN := FALSE;
7415 l_detail_dff_changed BOOLEAN := FALSE;
7416
7417 l_timecard_comment_text VARCHAR2 (2000);
7418 /*ADVICE(5235): VARCHAR2 declaration with length greater than 500 characters [307] */
7419
7420 l_block_index NUMBER
7421 /*ADVICE(5238): NUMBER has no precision [315] */
7422 ;
7423 l_detail_changed VARCHAR2(1);
7424
7425 BEGIN
7426 g_debug :=hr_utility.debug_enabled;
7427
7428 /*JOEL MUST CACHE THIS INFORMATION */
7429 BEGIN
7430 SELECT bld_blk_info_type_id
7431 INTO bldtyp_id
7432 FROM hxc_bld_blk_info_types
7433 WHERE bld_blk_info_type = 'Dummy Paexpitdff Context';
7434 EXCEPTION
7435 WHEN OTHERS THEN
7436 NULL;
7437 /*ADVICE(5377): Use of NULL statements [532] */
7438
7439 /*ADVICE(5379): Exception masked by a NULL statement [533] */
7440
7441 /*ADVICE(5381): A WHEN OTHERS clause is used in the exception section without any other specific handlers
7442 [201] */
7443
7444 END;
7445
7446 BEGIN
7447 SELECT bld_blk_info_type_id
7448 INTO reason_bldtyp_id
7449 FROM hxc_bld_blk_info_types
7450 WHERE bld_blk_info_type = 'REASON';
7451 EXCEPTION
7452 WHEN OTHERS THEN
7453 NULL;
7454
7455 END ;
7456
7457 -- added to handle comment 2789497
7458 IF NVL (p_insert_detail.timecard_start_period, p_start_period) = p_start_period
7459 OR NVL (p_insert_detail.timecard_end_period, p_end_period) = p_end_period THEN
7460 p_mid_save := 'Y';
7461 p_row_lock_id := CHARTOROWID (p_insert_detail.row_lock_id);
7462
7463 IF p_insert_detail.timekeeper_action = 'INSERT' AND p_insert_detail.comment_text IS NULL THEN
7464 IF p_timecard_index_info.EXISTS (p_timecard_id) THEN
7465 l_block_index := p_timecard_index_info (p_timecard_id).time_block_row_index;
7466 OPEN c_timecard_info (p_resource_id, p_start_period, p_end_period + g_one_day);
7467 FETCH c_timecard_info INTO l_timecard_comment_text;
7468 CLOSE c_timecard_info;
7469
7470 IF p_comment_made_null THEN
7471 l_timecard_comment_text := NULL;
7472 END IF;
7473
7474 p_timecard (l_block_index).comment_text :=
7475 NVL (p_timecard (l_block_index).comment_text, l_timecard_comment_text);
7476 END IF;
7477 ELSE
7478 IF p_timecard_index_info.EXISTS (p_timecard_id) THEN
7479 l_block_index := p_timecard_index_info (p_timecard_id).time_block_row_index;
7480 p_timecard (l_block_index).comment_text := p_insert_detail.comment_text;
7481
7482 IF p_insert_detail.comment_text IS NULL THEN
7483 p_comment_made_null := TRUE;
7484 END IF;
7485 END IF;
7486 END IF;
7487
7488
7489 if g_debug then
7490 hr_utility.trace('p_mid_save'||p_mid_save);
7491 end if;
7492 -- get the action on this row
7493 l_action := p_insert_detail.timekeeper_action;
7494
7495 IF l_action = 'INSERT' THEN
7496 p_mid_save := 'N';
7497 END IF;
7498
7499
7500 -- end 2789497
7501
7502 -- get the attribute category as base for Details
7503 valid_att_cat :=
7504 hxc_timekeeper_utilities.get_tk_dff_attrname (
7505 p_tkid => p_timekeeper_id,
7506 p_insert_detail => p_insert_detail,
7507 p_base_dff => hxc_timekeeper_process.g_base_att,
7508 p_att_tab => p_att_tab
7509 );
7510 if g_debug then
7511 hr_utility.TRACE ('Attribute category is '|| valid_att_cat);
7512 end if;
7513
7514 --
7515
7516 IF l_action = 'UPDATE' THEN -- create the tbb_id table reference
7517 -- for each time_building_block_id let create a reference attribute_id table
7518 hxc_alias_utility.get_tbb_id_reference_table (
7519 p_attributes => p_attributes,
7520 p_tbb_id_reference_table => l_tbb_id_reference_table
7521 );
7522 END IF;
7523
7524 IF p_tc_frdt <> p_start_period THEN
7525 l_add_index_day := (trunc(p_start_period) - trunc(p_tc_frdt));
7526 ELSE
7527 l_add_index_day := 0;
7528 END IF;
7529 -- we are going the all table by looping all day of the
7530 -- period
7531 WHILE p_start_period + l_index_day <= p_end_period
7532 /*ADVICE(5316): Complex expression not fully parenthesized [404] */
7533 LOOP
7534 -- reset the variables
7535 l_measure := NULL;
7536 l_detail_id := NULL;
7537 l_detail_ovn := NULL;
7538 l_att_string := NULL;
7539 l_detail_time_in := NULL;
7540 l_detail_time_out := NULL;
7541
7542 l_detail_info_found := FALSE;
7543 l_reason_info_found := FALSE;
7544
7545 l_detail_reason_category := NULL;
7546 l_detail_reason_att_1 := NULL;
7547 l_detail_reason_att_2 := NULL;
7548 l_detail_reason_att_3 := NULL;
7549 l_detail_reason_att_4 := NULL;
7550 l_detail_reason_att_5 := NULL;
7551 l_detail_reason_att_6 := NULL;
7552 l_detail_reason_att_7 := NULL;
7553
7554 l_detail_old_reason_category := NULL;
7555 l_detail_old_reason_att_1 := NULL;
7556 l_detail_old_reason_att_2 := NULL;
7557 l_detail_old_reason_att_3 := NULL;
7558 l_detail_old_reason_att_4 := NULL;
7559 l_detail_old_reason_att_5 := NULL;
7560 l_detail_old_reason_att_6 := NULL;
7561 l_detail_old_reason_att_7 := NULL;
7562
7563 l_detail_comment_text := NULL;
7564 l_detail_old_comment_text := NULL;
7565
7566 l_detail_dff_category := NULL;
7567 l_detail_att_1 := NULL;
7568 l_detail_att_2 := NULL;
7569 l_detail_att_3 := NULL;
7570 l_detail_att_4 := NULL;
7571 l_detail_att_5 := NULL;
7572 l_detail_att_6 := NULL;
7573 l_detail_att_7 := NULL;
7574 l_detail_att_8 := NULL;
7575 l_detail_att_9 := NULL;
7576 l_detail_att_10 := NULL;
7577 l_detail_att_11 := NULL;
7578 l_detail_att_12 := NULL;
7579 l_detail_att_13 := NULL;
7580 l_detail_att_14 := NULL;
7581 l_detail_att_15 := NULL;
7582 l_detail_att_16 := NULL;
7583 l_detail_att_17 := NULL;
7584 l_detail_att_18 := NULL;
7585 l_detail_att_19 := NULL;
7586 l_detail_att_20 := NULL;
7587 l_detail_att_21 := NULL;
7588 l_detail_att_22 := NULL;
7589 l_detail_att_23 := NULL;
7590 l_detail_att_24 := NULL;
7591 l_detail_att_25 := NULL;
7592 l_detail_att_26 := NULL;
7593 l_detail_att_27 := NULL;
7594 l_detail_att_28 := NULL;
7595 l_detail_att_29 := NULL;
7596 l_detail_att_30 := NULL;
7597
7598 l_detail_dff_old_category := NULL;
7599 l_detail_old_att_1 := NULL;
7600 l_detail_old_att_2 := NULL;
7601 l_detail_old_att_3 := NULL;
7602 l_detail_old_att_4 := NULL;
7603 l_detail_old_att_5 := NULL;
7604 l_detail_old_att_6 := NULL;
7605 l_detail_old_att_7 := NULL;
7606 l_detail_old_att_8 := NULL;
7607 l_detail_old_att_9 := NULL;
7608 l_detail_old_att_10 := NULL;
7609 l_detail_old_att_11 := NULL;
7610 l_detail_old_att_12 := NULL;
7611 l_detail_old_att_13 := NULL;
7612 l_detail_old_att_14 := NULL;
7613 l_detail_old_att_15 := NULL;
7614 l_detail_old_att_16 := NULL;
7615 l_detail_old_att_17 := NULL;
7616 l_detail_old_att_18 := NULL;
7617 l_detail_old_att_19 := NULL;
7618 l_detail_old_att_20 := NULL;
7619 l_detail_old_att_21 := NULL;
7620 l_detail_old_att_22 := NULL;
7621 l_detail_old_att_23 := NULL;
7622 l_detail_old_att_24 := NULL;
7623 l_detail_old_att_25 := NULL;
7624 l_detail_old_att_26 := NULL;
7625 l_detail_old_att_27 := NULL;
7626 l_detail_old_att_28 := NULL;
7627 l_detail_old_att_29 := NULL;
7628 l_detail_old_att_30 := NULL;
7629
7630 -- find the detail information for the current day
7631
7632 hxc_timekeeper_utilities.manage_timeinfo (
7633 p_day_counter => (l_add_index_day + l_index_day),
7634 p_insert_detail => p_insert_detail,
7635 p_measure => l_measure,
7636 p_detail_id => l_detail_id,
7637 p_detail_ovn => l_detail_ovn,
7638 p_detail_time_in => l_detail_time_in,
7639 p_detail_time_out => l_detail_time_out
7640 );
7641
7642 IF p_mid_save = 'N' AND p_insert_detail.timekeeper_action = 'INSERT' THEN
7643 IF l_measure IS NOT NULL OR l_detail_time_in IS NOT NULL OR l_detail_time_out IS NOT NULL THEN
7644 p_mid_save := 'Y';
7645 END IF;
7646 END IF;
7647 if g_debug then
7648 hr_utility.trace('p_mid_save '|| p_mid_save);
7649 end if;
7650
7651
7652 IF l_detail_id IS NOT NULL THEN
7653 if g_debug then
7654 hr_utility.TRACE (' l_detail_id is '|| l_detail_id);
7655 end if;
7656
7657 --
7658
7659 IF c_detail%ISOPEN THEN
7660 CLOSE c_detail;
7661 END IF;
7662
7663 OPEN c_detail (l_detail_id);
7664 FETCH c_detail INTO c_row;
7665
7666 IF c_detail%FOUND THEN
7667
7668 if g_debug then
7669 hr_utility.TRACE (' c_row is found');
7670 end if;
7671
7672
7673
7674 l_detail_info_found := TRUE;
7675
7676 l_detail_comment_text := c_row.comment_text;
7677
7678 l_detail_reason_category := 'REASON';
7679 if g_debug then
7680 hr_utility.TRACE (' c_row.late_change is '|| c_row.late_change);
7681 hr_utility.TRACE (' change_comment '|| c_row.change_comment);
7682 end if;
7683 --
7684 l_detail_reason_att_1 := NULL;
7685 l_detail_reason_att_2 := NULL;
7686 l_detail_reason_att_3 := NULL;
7687 l_detail_reason_att_4 := NULL;-- JOEL c_row.dff_attr4; --left
7688 l_detail_reason_att_5 := NULL; -- JOEL c_row.dff_attr5;
7689 l_detail_reason_att_6 := NULL; ---imp
7690 l_detail_reason_att_7 := NULL;
7691
7692 IF (c_row.late_change = 'LATE') THEN
7693 l_detail_reason_att_1 := c_row.late_reason;
7694 l_detail_reason_att_2 := c_row.late_comment;
7695 l_detail_reason_att_3 := 'LATE';
7696 l_reason_info_found := TRUE;
7697
7698 if g_debug then
7699 hr_utility.TRACE (' l_reason_info_found1 ');
7700 end if;
7701 END IF;
7702
7703 IF (c_row.late_change = 'CHANGE') THEN
7704 l_detail_reason_att_1 := c_row.change_reason;
7705 l_detail_reason_att_2 := c_row.change_comment;
7706 l_detail_reason_att_3 := 'CHANGE';
7707 l_reason_info_found := TRUE;
7708 l_detail_reason_att_6 := c_row.audit_datetime; ---imp
7709 l_detail_reason_att_7 := c_row.audit_history;
7710 if g_debug then
7711 hr_utility.TRACE (' l_reason_info_found2 ');
7712 hr_utility.TRACE (' l_reason_info_found '|| c_row.late_change);
7713 end if;
7714 END IF;
7715
7716 l_detail_reason_att_6 := c_row.audit_datetime; ---imp
7717 l_detail_reason_att_7 := c_row.audit_history;
7718
7719 IF l_detail_reason_att_6 is not null or l_detail_reason_att_7 is not null
7720 THEN
7721 l_reason_info_found := TRUE;
7722 if g_debug then
7723 hr_utility.TRACE (' l_reason_info_found3 ');
7724 end if;
7725 END IF;
7726
7727
7728 if g_debug then
7729 hr_utility.TRACE (' l_detail_id is '|| l_detail_id);
7730 end if;
7731 --
7732 -- new
7733 l_detail_reason_att_4 := null;-- JOEL c_row.dff_attr4; --left
7734 l_detail_reason_att_5 := null; -- JOEL c_row.dff_attr5;
7735
7736 --IF l_reason_info_found THEN
7737 if g_debug then
7738 hr_utility.TRACE ('l_reason_info_found');
7739 end if;
7740 --END IF;
7741
7742
7743 -- JOEL check if the old and new are different,
7744 -- if they are we need to deposit again
7745 l_cla_attribute_changed := FALSE;
7746
7747
7748
7749 IF (c_row.old_late_change = 'LATE') THEN
7750 l_detail_old_reason_att_1 := c_row.old_late_reason;
7751 l_detail_old_reason_att_2 := c_row.old_late_comment;
7752 l_detail_old_reason_att_3 := 'LATE';
7753 END IF;
7754
7755 IF (c_row.old_late_change = 'CHANGE') THEN
7756 l_detail_old_reason_att_1 := c_row.old_change_reason;
7757 l_detail_old_reason_att_2 := c_row.old_change_comment;
7758 l_detail_old_reason_att_3 := 'CHANGE';
7759 END IF;
7760
7761 l_detail_old_reason_att_4 := null;-- JOEL c_row.dff_attr4; --left
7762 l_detail_old_reason_att_5 := null; -- JOELc_row.dff_attr5;
7763 l_detail_old_reason_att_6 := c_row.old_audit_datetime; ---imp
7764 l_detail_old_reason_att_7 := c_row.old_audit_history;
7765
7766 if g_debug then
7767 hr_utility.TRACE (' l_detail_reason_att_1 '||l_detail_reason_att_1);
7768 hr_utility.TRACE (' l_detail_reason_att_2 '||l_detail_reason_att_2);
7769 hr_utility.TRACE (' l_detail_reason_att_3 '||l_detail_reason_att_3);
7770 hr_utility.TRACE (' l_detail_reason_att_4 '||l_detail_reason_att_4);
7771 hr_utility.TRACE (' l_detail_reason_att_5 '||l_detail_reason_att_5);
7772 hr_utility.TRACE (' l_detail_reason_att_6 '||l_detail_reason_att_6);
7773 hr_utility.TRACE (' l_detail_reason_att_7 '||l_detail_reason_att_7);
7774
7775 hr_utility.TRACE (' l_detail_old_reason_att_1 '||l_detail_old_reason_att_1);
7776 hr_utility.TRACE (' l_detail_old_reason_att_2 '||l_detail_old_reason_att_2);
7777 hr_utility.TRACE (' l_detail_old_reason_att_3 '||l_detail_old_reason_att_3);
7778 hr_utility.TRACE (' l_detail_old_reason_att_4 '||l_detail_old_reason_att_4);
7779 hr_utility.TRACE (' l_detail_old_reason_att_5 '||l_detail_old_reason_att_5);
7780 hr_utility.TRACE (' l_detail_old_reason_att_6 '||l_detail_old_reason_att_6);
7781 hr_utility.TRACE (' l_detail_old_reason_att_7 '||l_detail_old_reason_att_7);
7782 end if;
7783 IF ( nvl(l_detail_reason_att_1,'xx') <> nvl(l_detail_old_reason_att_1,'xx')
7784 or nvl(l_detail_reason_att_2,'xx') <> nvl(l_detail_old_reason_att_2,'xx')
7785 or nvl(l_detail_reason_att_3,'xx') <> nvl(l_detail_old_reason_att_3,'xx')
7786 or nvl(l_detail_reason_att_6,'xx') <> nvl(l_detail_old_reason_att_6,'xx')
7787 or nvl(l_detail_reason_att_7,'xx') <> nvl(l_detail_old_reason_att_7,'xx') ) THEN
7788
7789 -- the detail has changed
7790 -- and we need to redeposit it.
7791 l_cla_attribute_changed := TRUE;
7792 if g_debug then
7793 hr_utility.trace('l_cla_attribute_changed');
7794 hr_utility.TRACE (' l_cla_attribute_changed ');
7795 end if;
7796 END IF;
7797
7798 l_detail_dff_found := FALSE;
7799 l_detail_dff_changed := FALSE;
7800
7801 -- new
7802 l_detail_dff_category := c_row.dff_catg;
7803 l_detail_att_1 := c_row.dff_attr1;
7804 l_detail_att_2 := c_row.dff_attr2;
7805 l_detail_att_3 := c_row.dff_attr3;
7806 l_detail_att_4 := c_row.dff_attr4;
7807 l_detail_att_5 := c_row.dff_attr5;
7808 l_detail_att_6 := c_row.dff_attr6;
7809 l_detail_att_7 := c_row.dff_attr7;
7810 l_detail_att_8 := c_row.dff_attr8;
7811 l_detail_att_9 := c_row.dff_attr9;
7812 l_detail_att_10 := c_row.dff_attr10;
7813 l_detail_att_11 := c_row.dff_attr11;
7814 l_detail_att_12 := c_row.dff_attr12;
7815 l_detail_att_13 := c_row.dff_attr13;
7816 l_detail_att_14 := c_row.dff_attr14;
7817 l_detail_att_15 := c_row.dff_attr15;
7818 l_detail_att_16 := c_row.dff_attr16;
7819 l_detail_att_17 := c_row.dff_attr17;
7820 l_detail_att_18 := c_row.dff_attr18;
7821 l_detail_att_19 := c_row.dff_attr19;
7822 l_detail_att_20 := c_row.dff_attr20;
7823 l_detail_att_21 := c_row.dff_attr21;
7824 l_detail_att_22 := c_row.dff_attr22;
7825 l_detail_att_23 := c_row.dff_attr23;
7826 l_detail_att_24 := c_row.dff_attr24;
7827 l_detail_att_25 := c_row.dff_attr25;
7828 l_detail_att_26 := c_row.dff_attr26;
7829 l_detail_att_27 := c_row.dff_attr27;
7830 l_detail_att_28 := c_row.dff_attr28;
7831 l_detail_att_29 := c_row.dff_attr29;
7832 l_detail_att_30 := c_row.dff_attr30;
7833
7834 -- old
7835 l_detail_dff_old_category := c_row.dff_oldcatg;
7836 l_detail_old_att_1 := c_row.dff_oldattr1;
7837 l_detail_old_att_2 := c_row.dff_oldattr2;
7838 l_detail_old_att_3 := c_row.dff_oldattr3;
7839 l_detail_old_att_4 := c_row.dff_oldattr4;
7840 l_detail_old_att_5 := c_row.dff_oldattr5;
7841 l_detail_old_att_6 := c_row.dff_oldattr6;
7842 l_detail_old_att_7 := c_row.dff_oldattr7;
7843 l_detail_old_att_8 := c_row.dff_oldattr8;
7844 l_detail_old_att_9 := c_row.dff_oldattr9;
7845 l_detail_old_att_10 := c_row.dff_oldattr10;
7846 l_detail_old_att_11 := c_row.dff_oldattr11;
7847 l_detail_old_att_12 := c_row.dff_oldattr12;
7848 l_detail_old_att_13 := c_row.dff_oldattr13;
7849 l_detail_old_att_14 := c_row.dff_oldattr14;
7850 l_detail_old_att_15 := c_row.dff_oldattr15;
7851 l_detail_old_att_16 := c_row.dff_oldattr16;
7852 l_detail_old_att_17 := c_row.dff_oldattr17;
7853 l_detail_old_att_18 := c_row.dff_oldattr18;
7854 l_detail_old_att_19 := c_row.dff_oldattr19;
7855 l_detail_old_att_20 := c_row.dff_oldattr20;
7856 l_detail_old_att_21 := c_row.dff_oldattr21;
7857 l_detail_old_att_22 := c_row.dff_oldattr22;
7858 l_detail_old_att_23 := c_row.dff_oldattr23;
7859 l_detail_old_att_24 := c_row.dff_oldattr24;
7860 l_detail_old_att_25 := c_row.dff_oldattr25;
7861 l_detail_old_att_26 := c_row.dff_oldattr26;
7862 l_detail_old_att_27 := c_row.dff_oldattr27;
7863 l_detail_old_att_28 := c_row.dff_oldattr28;
7864 l_detail_old_att_29 := c_row.dff_oldattr29;
7865 l_detail_old_att_30 := c_row.dff_oldattr30;
7866
7867
7868 -- now we can check everything on the dff attributes
7869
7870 -- IF l_detail_id < 0 THEN
7871 --g_detail_data.DELETE (l_detail_id);
7872 -- END IF;
7873
7874 IF (--l_detail_dff_category IS NULL
7875 l_detail_att_1 IS NULL
7876 AND l_detail_att_2 IS NULL
7877 AND l_detail_att_3 IS NULL
7878 AND l_detail_att_4 IS NULL
7879 AND l_detail_att_5 IS NULL
7880 AND l_detail_att_6 IS NULL
7881 AND l_detail_att_7 IS NULL
7882 AND l_detail_att_8 IS NULL
7883 AND l_detail_att_9 IS NULL
7884 AND l_detail_att_10 IS NULL
7885 AND l_detail_att_11 IS NULL
7886 AND l_detail_att_12 IS NULL
7887 AND l_detail_att_13 IS NULL
7888 AND l_detail_att_14 IS NULL
7889 AND l_detail_att_15 IS NULL
7890 AND l_detail_att_16 IS NULL
7891 AND l_detail_att_17 IS NULL
7892 AND l_detail_att_18 IS NULL
7893 AND l_detail_att_19 IS NULL
7894 AND l_detail_att_20 IS NULL
7895 AND l_detail_att_21 IS NULL
7896 AND l_detail_att_22 IS NULL
7897 AND l_detail_att_23 IS NULL
7898 AND l_detail_att_24 IS NULL
7899 AND l_detail_att_25 IS NULL
7900 AND l_detail_att_26 IS NULL
7901 AND l_detail_att_27 IS NULL
7902 AND l_detail_att_28 IS NULL
7903 AND l_detail_att_29 IS NULL
7904 AND l_detail_att_30 IS NULL
7905 ) THEN
7906
7907 l_detail_dff_found := FALSE;
7908 /*ADVICE(5706): Use of NULL statements [532] */
7909 if g_debug then
7910 hr_utility.trace('NOT l_detail_dff_found');
7911 end if;
7912 ELSE
7913 l_detail_dff_found := TRUE;
7914 if g_debug then
7915 hr_utility.trace('l_detail_dff_found');
7916 end if;
7917 END IF;
7918
7919 -- at this point we need to handle the attribute case
7920 IF (l_detail_dff_old_category IS NOT NULL
7921 AND not(l_detail_dff_found)) THEN
7922 -- that mean we need to reset the l_detail_dff_found to TRUE
7923 l_detail_dff_found := TRUE;
7924 if g_debug then
7925 hr_utility.trace('l_detail_dff_found');
7926 end if;
7927 END IF;
7928
7929
7930
7931
7932 IF valid_att_cat IS NOT NULL THEN
7933 IF NVL (valid_att_cat, '-999') <> NVL (l_detail_dff_category, '-999') THEN
7934 l_detail_dff_category := valid_att_cat;
7935 END IF;
7936 -- ELSE
7937 --l_detail_dff_category := l_detail_dff_category;
7938 END IF;
7939 if g_debug then
7940 hr_utility.trace(l_detail_dff_category);
7941 end if;
7942 IF ( (NVL (l_detail_dff_category, '-999') <> NVL (l_detail_dff_old_category, '-999')
7943 OR NVL (l_detail_att_1, '-999') <> NVL (l_detail_old_att_1, '-999')
7944 OR NVL (l_detail_att_2, '-999') <> NVL (l_detail_old_att_2, '-999')
7945 OR NVL (l_detail_att_3, '-999') <> NVL (l_detail_old_att_3, '-999')
7946 OR NVL (l_detail_att_4, '-999') <> NVL (l_detail_old_att_4, '-999')
7947 OR NVL (l_detail_att_5, '-999') <> NVL (l_detail_old_att_5, '-999')
7948 OR NVL (l_detail_att_6, '-999') <> NVL (l_detail_old_att_6, '-999')
7949 OR NVL (l_detail_att_7, '-999') <> NVL (l_detail_old_att_7, '-999')
7950 OR NVL (l_detail_att_8, '-999') <> NVL (l_detail_old_att_8, '-999')
7951 OR NVL (l_detail_att_9, '-999') <> NVL (l_detail_old_att_9, '-999')
7952 OR NVL (l_detail_att_10, '-999') <> NVL (l_detail_old_att_10, '-999')
7953 OR NVL (l_detail_att_11, '-999') <> NVL (l_detail_old_att_11, '-999')
7954 OR NVL (l_detail_att_12, '-999') <> NVL (l_detail_old_att_12, '-999')
7955 OR NVL (l_detail_att_13, '-999') <> NVL (l_detail_old_att_13, '-999')
7956 OR NVL (l_detail_att_14, '-999') <> NVL (l_detail_old_att_14, '-999')
7957 OR NVL (l_detail_att_15, '-999') <> NVL (l_detail_old_att_15, '-999')
7958 OR NVL (l_detail_att_16, '-999') <> NVL (l_detail_old_att_16, '-999')
7959 OR NVL (l_detail_att_17, '-999') <> NVL (l_detail_old_att_17, '-999')
7960 OR NVL (l_detail_att_18, '-999') <> NVL (l_detail_old_att_18, '-999')
7961 OR NVL (l_detail_att_19, '-999') <> NVL (l_detail_old_att_19, '-999')
7962 OR NVL (l_detail_att_20, '-999') <> NVL (l_detail_old_att_20, '-999')
7963 OR NVL (l_detail_att_21, '-999') <> NVL (l_detail_old_att_21, '-999')
7964 OR NVL (l_detail_att_22, '-999') <> NVL (l_detail_old_att_22, '-999')
7965 OR NVL (l_detail_att_23, '-999') <> NVL (l_detail_old_att_23, '-999')
7966 OR NVL (l_detail_att_24, '-999') <> NVL (l_detail_old_att_24, '-999')
7967 OR NVL (l_detail_att_25, '-999') <> NVL (l_detail_old_att_25, '-999')
7968 OR NVL (l_detail_att_26, '-999') <> NVL (l_detail_old_att_26, '-999')
7969 OR NVL (l_detail_att_27, '-999') <> NVL (l_detail_old_att_27, '-999')
7970 OR NVL (l_detail_att_28, '-999') <> NVL (l_detail_old_att_28, '-999')
7971 OR NVL (l_detail_att_29, '-999') <> NVL (l_detail_old_att_29, '-999')
7972 OR NVL (l_detail_att_30, '-999') <> NVL (l_detail_old_att_30, '-999'))
7973 AND l_detail_dff_found
7974 ) THEN
7975 l_detail_dff_changed := TRUE;
7976 if g_debug then
7977 hr_utility.trace('l_detail_dff_changed');
7978 end if;
7979 ELSE
7980 l_detail_dff_changed := FALSE;
7981 if g_debug then
7982 hr_utility.trace('not l_detail_dff_changed');
7983 end if;
7984 END IF;
7985
7986 DELETE FROM hxc_tk_detail_temp
7987 WHERE detailid = l_detail_id;
7988
7989 END IF;
7990
7991 ELSE
7992 if g_debug then
7993 hr_utility.TRACE ('nothign to change');
7994 end if;
7995 l_detail_info_found := FALSE;
7996
7997 END IF;
7998
7999
8000 if g_debug then
8001 hr_utility.trace('l_action'||l_action);
8002 end if;
8003 -- detail block is not changed
8004 l_detail_changed := 'N';
8005
8006 IF l_action = 'QUERY' THEN -- do anything
8007 NULL;
8008 /*ADVICE(5594): Use of NULL statements [532] */
8009
8010 ELSIF l_action = 'INSERT' THEN
8011
8012 -- the easy one just attach the new information on the timecard/attributes structure.
8013 -- add the detail only if the measure has been filled.
8014 IF (l_measure IS NOT NULL OR l_detail_time_in IS NOT NULL OR l_detail_time_out IS NOT NULL) THEN
8015 -- add the detail information.
8016 g_negative_index := g_negative_index - 1;
8017
8018 /*Bug 9014012*/
8019
8020 l_found:= 'N';
8021
8022 LOOP
8023 l_tmp_index:= g_negative_index * -1;
8024 if g_tk_prepop_detail_id_tab.EXISTS(l_tmp_index) then
8025
8026 g_negative_index := g_negative_index - 1;
8027 l_found:= 'N';
8028
8029 else
8030
8031 l_found:='Y';
8032
8033 end if;
8034
8035 EXIT WHEN l_found = 'Y';
8036 END LOOP;
8037
8038
8039 l_detail_id := g_negative_index;
8040 l_detail_ovn := 1; ---added for new deposit
8041
8042 IF l_detail_time_in > l_detail_time_out THEN
8043 l_detail_time_out := l_detail_time_out + 1;
8044 END IF;
8045
8046 hxc_timekeeper_utilities.add_block (
8047 p_timecard => p_timecard,
8048 p_timecard_id => l_detail_id,
8049 p_ovn => l_detail_ovn,
8050 p_parent_id => p_day_id_info_table (l_index_day).day_id,
8051 p_parent_ovn => p_day_id_info_table (l_index_day).day_ovn,
8052 p_approval_style_id => p_approval_style_id,
8053 p_measure => l_measure,
8054 p_scope => 'DETAIL',
8055 p_date_to => hr_general.end_of_time,
8056 p_date_from => SYSDATE,
8057 p_start_period => l_detail_time_in,
8058 p_end_period => l_detail_time_out,
8059 p_resource_id => p_resource_id,
8060 p_changed => 'Y',
8061 p_comment_text => l_detail_comment_text,
8062 p_submit_flg => g_submit,
8063 p_application_set_id => l_application_set_id,
8064 p_timecard_index_info => p_timecard_index_info
8065 );
8066
8067 -- add the attribute information.
8068
8069 FOR l_index_attribute IN 1 .. 20 LOOP
8070
8071 hxc_timekeeper_utilities.manage_attributes (
8072 p_attribute_number => l_index_attribute,
8073 p_insert_data_details => p_insert_detail,
8074 p_old_value => l_old_attribute_value,
8075 p_new_value => l_new_attribute_value
8076 );
8077
8078 IF (l_new_attribute_value IS NOT NULL)
8079 AND p_att_tab.EXISTS (l_index_attribute) THEN --2786991
8080
8081 hxc_timekeeper_process.g_negative_index := hxc_timekeeper_process.g_negative_index - 1;
8082
8083 /*Bug 9014012*/
8084
8085 l_found:= 'N';
8086
8087 LOOP
8088 l_tmp_index:= hxc_timekeeper_process.g_negative_index * -1;
8089 if g_tk_prepop_detail_id_tab.EXISTS(l_tmp_index) then
8090
8091 hxc_timekeeper_process.g_negative_index:=
8092 hxc_timekeeper_process.g_negative_index - 1;
8093 l_found:= 'N';
8094
8095 else
8096
8097 l_found:='Y';
8098
8099 end if;
8100
8101 EXIT WHEN l_found = 'Y';
8102 END LOOP;
8103
8104
8105 hxc_timekeeper_utilities.add_attribute (
8106 p_attribute => p_attributes,
8107 p_attribute_id => hxc_timekeeper_process.g_negative_index,
8108 p_tbb_id => l_detail_id,
8109 p_tbb_ovn => l_detail_ovn,
8110 p_blk_type => 'OTL_ALIAS_ITEM_' || l_index_attribute,
8111 p_blk_id => NULL,
8112 p_att_category => 'OTL_ALIAS_ITEM_' || l_index_attribute,
8113 p_att_1 => l_new_attribute_value,
8114 p_att_2 => p_att_tab (l_index_attribute).alias_definition_id,
8115 p_att_3 => l_old_attribute_value,
8116 p_att_4 => p_att_tab (l_index_attribute).alias_type,
8117 p_attribute_index_info => p_attribute_index_info
8118 );
8119 END IF;
8120 END LOOP;
8121 /*ADVICE(5663): Nested LOOPs should all be labeled [406] */
8122
8123
8124 --add detail info
8125 IF l_detail_info_found and l_detail_dff_found THEN
8126 if g_debug then
8127 hr_utility.TRACE ('DETAILDFFFOUND');
8128 end if;
8129 -- add the dff detail
8130 g_negative_index := g_negative_index - 1;
8131
8132 /*Bug 9014012*/
8133
8134 l_found:= 'N';
8135
8136 LOOP
8137 l_tmp_index:= g_negative_index * -1;
8138 if g_tk_prepop_detail_id_tab.EXISTS(l_tmp_index) then
8139
8140 g_negative_index := g_negative_index - 1;
8141 l_found:= 'N';
8142
8143 else
8144
8145 l_found:='Y';
8146
8147 end if;
8148
8149 EXIT WHEN l_found = 'Y';
8150 END LOOP;
8151
8152
8153 l_attribute_index := g_negative_index;
8154
8155 hxc_timekeeper_utilities.add_dff_attribute (
8156 p_attribute => p_attributes,
8157 p_attribute_id => g_negative_index,
8158 p_tbb_id => l_detail_id,
8159 p_tbb_ovn => l_detail_ovn,
8160 p_blk_type => 'Dummy Paexpitdff Context',
8161 p_blk_id => bldtyp_id,
8162 p_att_category => l_detail_dff_category,
8163 p_att_1 => l_detail_att_1,
8164 p_att_2 => l_detail_att_2,
8165 p_att_3 => l_detail_att_3,
8166 p_att_4 => l_detail_att_4,
8167 p_att_5 => l_detail_att_5,
8168 p_att_6 => l_detail_att_6,
8169 p_att_7 => l_detail_att_7,
8170 p_att_8 => l_detail_att_8,
8171 p_att_9 => l_detail_att_9,
8172 p_att_10 => l_detail_att_10,
8173 p_att_11 => l_detail_att_11,
8174 p_att_12 => l_detail_att_12,
8175 p_att_13 => l_detail_att_13,
8176 p_att_14 => l_detail_att_14,
8177 p_att_15 => l_detail_att_15,
8178 p_att_16 => l_detail_att_16,
8179 p_att_17 => l_detail_att_17,
8180 p_att_18 => l_detail_att_18,
8181 p_att_19 => l_detail_att_19,
8182 p_att_20 => l_detail_att_20,
8183 p_att_21 => l_detail_att_21,
8184 p_att_22 => l_detail_att_22,
8185 p_att_23 => l_detail_att_23,
8186 p_att_24 => l_detail_att_24,
8187 p_att_25 => l_detail_att_25,
8188 p_att_26 => l_detail_att_26,
8189 p_att_27 => l_detail_att_27,
8190 p_att_28 => l_detail_att_28,
8191 p_att_29 => l_detail_att_29,
8192 p_att_30 => l_detail_att_30,
8193 p_attribute_index_info => p_attribute_index_info
8194 );
8195
8196
8197 END IF;
8198
8199 IF l_detail_info_found and l_reason_info_found THEN
8200
8201 g_negative_index := g_negative_index - 1;
8202
8203 /*Bug 9014012*/
8204
8205 l_found:= 'N';
8206
8207 LOOP
8208 l_tmp_index:= g_negative_index * -1;
8209 if g_tk_prepop_detail_id_tab.EXISTS(l_tmp_index) then
8210
8211 g_negative_index := g_negative_index - 1;
8212 l_found:= 'N';
8213
8214 else
8215
8216 l_found:='Y';
8217
8218 end if;
8219
8220 EXIT WHEN l_found = 'Y';
8221 END LOOP;
8222
8223
8224
8225 if g_debug then
8226 hr_utility.TRACE ('DETAILREASONFOUND');
8227 end if;
8228 -- g_negative_index := g_negative_index;
8229 -- the above statement can be mutually exclusive..check out
8230
8231 l_attribute_index := g_negative_index;
8232 hxc_timekeeper_utilities.add_dff_attribute (
8233 p_attribute => p_attributes,
8234 p_attribute_id => g_negative_index,
8235 p_tbb_id => l_detail_id,
8236 p_tbb_ovn => l_detail_ovn,
8237 p_blk_type => 'REASON', --ctk
8238 p_blk_id => reason_bldtyp_id, --ctk
8239 p_att_category => l_detail_reason_category,
8240 p_att_1 => l_detail_reason_att_1,
8241 p_att_2 => l_detail_reason_att_2,
8242 p_att_3 => l_detail_reason_att_3,
8243 p_att_4 => l_detail_reason_att_4,
8244 p_att_5 => l_detail_reason_att_5,
8245 p_att_6 => l_detail_reason_att_6,
8246 p_att_7 => l_detail_reason_att_7,
8247 p_att_8 => NULL,
8248 p_att_9 => NULL,
8249 p_att_10 => NULL,
8250 p_att_11 => NULL,
8251 p_att_12 => NULL,
8252 p_att_13 => NULL,
8253 p_att_14 => NULL,
8254 p_att_15 => NULL,
8255 p_att_16 => NULL,
8256 p_att_17 => NULL,
8257 p_att_18 => NULL,
8258 p_att_19 => NULL,
8259 p_att_20 => NULL,
8260 p_att_21 => NULL,
8261 p_att_22 => NULL,
8262 p_att_23 => NULL,
8263 p_att_24 => NULL,
8264 p_att_25 => NULL,
8265 p_att_26 => NULL,
8266 p_att_27 => NULL,
8267 p_att_28 => NULL,
8268 p_att_29 => NULL,
8269 p_att_30 => NULL,
8270 p_attribute_index_info => p_attribute_index_info
8271 );
8272 END IF;
8273
8274 END IF;
8275
8276 ELSIF l_action = 'UPDATE' THEN
8277
8278
8279 IF (l_measure IS NOT NULL OR l_detail_time_in IS NOT NULL OR l_detail_time_out IS NOT NULL)
8280 AND l_detail_id IS NOT NULL
8281 AND l_detail_id > 0 THEN
8282 -- we are on an existing block
8283 -- update the detail information with the new measure
8284
8285 if g_debug then
8286 hr_utility.trace('SVG - 1');
8287 end if;
8288
8289
8290 IF l_detail_time_in > l_detail_time_out THEN
8291 l_detail_time_out := l_detail_time_out + 1;
8292 END IF;
8293
8294 -- work on the attribute information.
8295
8296 FOR l_index_attribute IN 1 .. 20 LOOP
8297
8298 hxc_timekeeper_utilities.manage_attributes (
8299 p_attribute_number => l_index_attribute,
8300 p_insert_data_details => p_insert_detail,
8301 p_old_value => l_old_attribute_value,
8302 p_new_value => l_new_attribute_value
8303 );
8304
8305 IF p_att_tab.EXISTS (l_index_attribute)
8306 AND ((l_new_attribute_value is not null and l_old_attribute_value is not null
8307 and l_old_attribute_value <> l_new_attribute_value)
8308 /* start of fix for 5398047
8309 OR (l_new_attribute_value is null and l_old_attribute_value is null)
8310 end of fix for 5398047 */
8311 OR (l_new_attribute_value is null and l_old_attribute_value is not null)
8312 OR (l_new_attribute_value is not null and l_old_attribute_value is null))
8313 THEN --2786991
8314 --IF NVL (l_new_attribute_value, -1) <> NVL (l_old_attribute_value, -1) THEN
8315 hxc_timekeeper_process.g_negative_index := hxc_timekeeper_process.g_negative_index - 1;
8316
8317 /*Bug 9014012*/
8318
8319 l_found:= 'N';
8320
8321 LOOP
8322 l_tmp_index:= hxc_timekeeper_process.g_negative_index * -1;
8323 if g_tk_prepop_detail_id_tab.EXISTS(l_tmp_index) then
8324
8325 hxc_timekeeper_process.g_negative_index := hxc_timekeeper_process.g_negative_index - 1;
8326 l_found:= 'N';
8327
8328 else
8329
8330 l_found:='Y';
8331
8332 end if;
8333
8334 EXIT WHEN l_found = 'Y';
8335 END LOOP;
8336
8337
8338
8339 if g_debug then
8340 hr_utility.trace('l_detail_changed1 '||l_detail_changed);
8341 end if;
8342 IF l_detail_changed <> 'Y' THEN
8343 l_detail_changed := 'Y';
8344
8345 if g_debug then
8346 hr_utility.trace('l_detail_changed1 '||l_detail_changed);
8347 end if;
8348 END IF;
8349
8350 hxc_timekeeper_utilities.add_attribute (
8351 p_attribute => p_attributes,
8352 p_attribute_id => g_negative_index,
8353 p_tbb_id => l_detail_id,
8354 p_tbb_ovn => l_detail_ovn,
8355 p_blk_type => 'OTL_ALIAS_ITEM_' || l_index_attribute,
8356 p_blk_id => NULL,
8357 p_att_category => 'OTL_ALIAS_ITEM_' || l_index_attribute,
8358 p_att_1 => l_new_attribute_value,
8359 p_att_2 => p_att_tab (l_index_attribute).alias_definition_id,
8360 p_att_3 => l_old_attribute_value,
8361 p_att_4 => p_att_tab (l_index_attribute).alias_type,
8362 p_attribute_index_info => p_attribute_index_info
8363 );
8364 END IF;
8365 END LOOP;
8366 /*ADVICE(5889): Nested LOOPs should all be labeled [406] */
8367
8368 -- first we can set the flag if one of the dff att
8369 -- or cla attributes changed.
8370 IF (l_detail_info_found and l_detail_dff_changed and NVL (bldtyp_id, -999) <> -999)
8371 OR (l_detail_info_found AND l_reason_info_found AND l_cla_attribute_changed
8372 AND NVL (reason_bldtyp_id, -999) <> -999) THEN
8373
8374 l_detail_changed := 'Y';
8375 if g_debug then
8376 hr_utility.trace('l_detail_changed2 '||l_detail_changed);
8377 end if;
8378 END IF;
8379 if g_debug then
8380 hr_utility.trace('l_detail_changed 3'||l_detail_changed);
8381 end if;
8382
8383
8384 hxc_timekeeper_utilities.add_block (
8385 p_timecard => p_timecard,
8386 p_timecard_id => l_detail_id,
8387 p_ovn => l_detail_ovn,
8388 p_parent_id => p_day_id_info_table (l_index_day).day_id,
8389 p_parent_ovn => p_day_id_info_table (l_index_day).day_ovn,
8390 p_approval_style_id => p_approval_style_id,
8391 p_measure => l_measure,
8392 p_scope => 'DETAIL',
8393 p_date_to => hr_general.end_of_time,
8394 p_date_from => SYSDATE,
8395 p_start_period => l_detail_time_in,
8396 p_end_period => l_detail_time_out,
8397 p_resource_id => p_resource_id,
8398 p_changed => l_detail_changed,
8399 p_comment_text => l_detail_comment_text,
8400 p_submit_flg => g_submit,
8401 p_application_set_id => l_application_set_id,
8402 p_timecard_index_info => p_timecard_index_info
8403 );
8404
8405 -- check the detail changed flag again
8406
8407
8408 IF l_detail_info_found and l_detail_dff_changed
8409 AND NVL (bldtyp_id, -999) <> -999 THEN -- and l_detail_dff_found THEN
8410
8411 l_attribute_found := FALSE;
8412 --l_attribute_index :=
8413 hxc_alias_utility.attribute_check (
8414 p_bld_blk_info_type_id => bldtyp_id,
8415 p_time_building_block_id => l_detail_id,
8416 p_attributes => p_attributes,
8417 p_tbb_id_reference_table => l_tbb_id_reference_table,
8418 p_attribute_found => l_attribute_found,
8419 p_attribute_index => l_attribute_index
8420 );
8421
8422 -- now we need to check if we need to create an attribute or do an update
8423
8424 -- if l_attribute_index = -1 THEN
8425 IF NOT (l_attribute_found) THEN
8426 g_negative_index := g_negative_index - 1;
8427
8428 /*Bug 9014012*/
8429
8430 l_found:= 'N';
8431
8432 LOOP
8433 l_tmp_index:= g_negative_index * -1;
8434 if g_tk_prepop_detail_id_tab.EXISTS(l_tmp_index) then
8435
8436 g_negative_index := g_negative_index - 1;
8437 l_found:= 'N';
8438
8439 else
8440
8441 l_found:='Y';
8442
8443 end if;
8444
8445 EXIT WHEN l_found = 'Y';
8446 END LOOP;
8447
8448
8449 l_attribute_index := g_negative_index;
8450 ELSE
8451 l_attribute_index := p_attributes (l_attribute_index).time_attribute_id;
8452 END IF;
8453
8454 hxc_timekeeper_utilities.add_dff_attribute (
8455 p_attribute => p_attributes,
8456 p_attribute_id => l_attribute_index,
8457 p_tbb_id => l_detail_id,
8458 p_tbb_ovn => l_detail_ovn,
8459 p_blk_type => 'Dummy Paexpitdff Context',
8460 p_blk_id => bldtyp_id,
8461 p_att_category => l_detail_dff_category,
8462 p_att_1 => l_detail_att_1,
8463 p_att_2 => l_detail_att_2,
8464 p_att_3 => l_detail_att_3,
8465 p_att_4 => l_detail_att_4,
8466 p_att_5 => l_detail_att_5,
8467 p_att_6 => l_detail_att_6,
8468 p_att_7 => l_detail_att_7,
8469 p_att_8 => l_detail_att_8,
8470 p_att_9 => l_detail_att_9,
8471 p_att_10 => l_detail_att_10,
8472 p_att_11 => l_detail_att_11,
8473 p_att_12 => l_detail_att_12,
8474 p_att_13 => l_detail_att_13,
8475 p_att_14 => l_detail_att_14,
8476 p_att_15 => l_detail_att_15,
8477 p_att_16 => l_detail_att_16,
8478 p_att_17 => l_detail_att_17,
8479 p_att_18 => l_detail_att_18,
8480 p_att_19 => l_detail_att_19,
8481 p_att_20 => l_detail_att_20,
8482 p_att_21 => l_detail_att_21,
8483 p_att_22 => l_detail_att_22,
8484 p_att_23 => l_detail_att_23,
8485 p_att_24 => l_detail_att_24,
8486 p_att_25 => l_detail_att_25,
8487 p_att_26 => l_detail_att_26,
8488 p_att_27 => l_detail_att_27,
8489 p_att_28 => l_detail_att_28,
8490 p_att_29 => l_detail_att_29,
8491 p_att_30 => l_detail_att_30,
8492 p_attribute_index_info => p_attribute_index_info
8493 );
8494
8495 -- add the new attribute in the ref table
8496
8497 IF l_tbb_id_reference_table.EXISTS ( --4
8498 l_detail_id) THEN
8499
8500 l_tbb_id_reference_table (l_detail_id).attribute_index :=
8501 l_tbb_id_reference_table (l_detail_id).attribute_index || '|' || l_attribute_index;
8502 ELSE
8503 l_tbb_id_reference_table (l_detail_id).attribute_index := '|' || l_attribute_index;
8504 END IF; --4
8505 END IF; --3
8506 -----------------------
8507
8508 IF l_detail_info_found AND l_reason_info_found AND l_cla_attribute_changed
8509 AND NVL (reason_bldtyp_id, -999) <> -999 THEN
8510
8511 l_attribute_found := FALSE;
8512 --l_attribute_index :=
8513 hxc_alias_utility.attribute_check (
8514 p_bld_blk_info_type_id => reason_bldtyp_id, --pass reason info type id
8515 p_time_building_block_id => l_detail_id,
8516 p_attributes => p_attributes,
8517 p_tbb_id_reference_table => l_tbb_id_reference_table,
8518 p_attribute_found => l_attribute_found,
8519 p_attribute_index => l_attribute_index
8520 );
8521
8522 -- now we need to check if we need to create an attribute or do an update
8523 IF NOT (l_attribute_found) THEN
8524 g_negative_index := g_negative_index - 1;
8525
8526 /*Bug 9014012*/
8527
8528 l_found:= 'N';
8529
8530 LOOP
8531 l_tmp_index:= g_negative_index * -1;
8532 if g_tk_prepop_detail_id_tab.EXISTS(l_tmp_index) then
8533
8534 g_negative_index := g_negative_index - 1;
8535 l_found:= 'N';
8536
8537 else
8538
8539 l_found:='Y';
8540
8541 end if;
8542
8543 EXIT WHEN l_found = 'Y';
8544 END LOOP;
8545
8546
8547 l_attribute_index := g_negative_index;
8548 ELSE
8549 l_attribute_index := p_attributes (l_attribute_index).time_attribute_id;
8550 END IF;
8551
8552
8553 hxc_timekeeper_utilities.add_dff_attribute (
8554 p_attribute => p_attributes,
8555 p_attribute_id => l_attribute_index,
8556 p_tbb_id => l_detail_id,
8557 p_tbb_ovn => l_detail_ovn,
8558 p_blk_type => 'REASON',
8559 p_blk_id => reason_bldtyp_id,
8560 p_att_category => l_detail_reason_category,
8561 p_att_1 => l_detail_reason_att_1,
8562 p_att_2 => l_detail_reason_att_2,
8563 p_att_3 => l_detail_reason_att_3,
8564 p_att_4 => l_detail_reason_att_4,
8565 p_att_5 => l_detail_reason_att_5,
8566 p_att_6 => l_detail_reason_att_6,
8567 p_att_7 => l_detail_reason_att_7,
8568 p_att_8 => NULL,
8569 p_att_9 => NULL,
8570 p_att_10 => NULL,
8571 p_att_11 => NULL,
8572 p_att_12 => NULL,
8573 p_att_13 => NULL,
8574 p_att_14 => NULL,
8575 p_att_15 => NULL,
8576 p_att_16 => NULL,
8577 p_att_17 => NULL,
8578 p_att_18 => NULL,
8579 p_att_19 => NULL,
8580 p_att_20 => NULL,
8581 p_att_21 => NULL,
8582 p_att_22 => NULL,
8583 p_att_23 => NULL,
8584 p_att_24 => NULL,
8585 p_att_25 => NULL,
8586 p_att_26 => NULL,
8587 p_att_27 => NULL,
8588 p_att_28 => NULL,
8589 p_att_29 => NULL,
8590 p_att_30 => NULL,
8591 p_attribute_index_info => p_attribute_index_info
8592 );
8593
8594 -- add the new attribute in the ref table
8595
8596 IF l_tbb_id_reference_table.EXISTS ( --4
8597 l_detail_id) THEN
8598
8599 l_tbb_id_reference_table (l_detail_id).attribute_index :=
8600 l_tbb_id_reference_table (l_detail_id).attribute_index || '|' || l_attribute_index;
8601 ELSE
8602 l_tbb_id_reference_table (l_detail_id).attribute_index := '|' || l_attribute_index;
8603 END IF; --4
8604 -----------------------
8605 END IF; --detail is found --1
8606
8607 ELSIF (l_measure IS NOT NULL OR l_detail_time_in IS NOT NULL OR l_detail_time_out IS NOT NULL)
8608 AND (l_detail_id IS NULL OR l_detail_id < 0) THEN
8609 -- new block the block the detail information with the new measure
8610 -- add the detail information.
8611 g_negative_index := g_negative_index - 1;
8612
8613
8614 /* Added for bug 8775740
8615 HR OTL Absence Integration.
8616
8617 Ensuring that g_negative_index doesnt hold values which are already in
8618 g_tk_prepop_detail_id_tab which holds the detail ids of the prepopulated
8619 tbbs.
8620
8621 If tbb already has a negative detail id prepopulated, ensure that
8622 the detail_id is used for tbbid
8623
8624 */
8625 -- Change start
8626 --l_detail_id := g_negative_index;
8627
8628 l_found:= 'N';
8629
8630 LOOP
8631 l_tmp_index:= g_negative_index * -1;
8632 if g_tk_prepop_detail_id_tab.EXISTS(l_tmp_index) then
8633
8634 g_negative_index := g_negative_index - 1;
8635 l_found:= 'N';
8636
8637 else
8638
8639 l_found:='Y';
8640
8641 end if;
8642
8643 EXIT WHEN l_found = 'Y';
8644 END LOOP;
8645
8646
8647 l_detail_id := nvl(l_detail_id,g_negative_index);
8648
8649 if g_debug then
8650 hr_utility.trace('HERE');
8651 end if;
8652
8653 if g_debug then
8654 hr_utility.trace('SVG - 2');
8655 end if;
8656
8657 -- Change end
8658 if g_debug then
8659 hr_utility.trace('l_detail_id = '||l_detail_id);
8660 end if;
8661
8662 if g_debug then
8663 hr_utility.trace('HERE');
8664 end if;
8665 IF l_detail_time_in > l_detail_time_out THEN
8666 l_detail_time_out := l_detail_time_out + 1;
8667 END IF;
8668
8669 if g_debug then
8670 hr_utility.trace('before add_block');
8671 end if;
8672
8673 hxc_timekeeper_utilities.add_block (
8674 p_timecard => p_timecard,
8675 p_timecard_id => l_detail_id,
8676 p_ovn => l_detail_ovn,
8677 p_parent_id => p_day_id_info_table (l_index_day).day_id,
8678 p_parent_ovn => p_day_id_info_table (l_index_day).day_ovn,
8679 p_approval_style_id => p_approval_style_id,
8680 p_measure => l_measure,
8681 p_scope => 'DETAIL',
8682 p_date_to => hr_general.end_of_time,
8683 p_date_from => SYSDATE,
8684 p_start_period => l_detail_time_in,
8685 p_end_period => l_detail_time_out,
8686 p_resource_id => p_resource_id,
8687 p_changed => 'Y',
8688 p_comment_text => l_detail_comment_text,
8689 p_submit_flg => g_submit,
8690 p_application_set_id => l_application_set_id,
8691 p_timecard_index_info => p_timecard_index_info
8692 );
8693
8694 if g_debug then
8695 hr_utility.trace('after add_block');
8696 end if;
8697
8698 FOR l_index_attribute IN 1 .. 20 LOOP
8699 hxc_timekeeper_utilities.manage_attributes (
8700 p_attribute_number => l_index_attribute,
8701 p_insert_data_details => p_insert_detail,
8702 p_old_value => l_old_attribute_value,
8703 p_new_value => l_new_attribute_value
8704 );
8705
8706 if g_debug then
8707 hr_utility.trace('after manage attributes');
8708 end if;
8709
8710 IF l_new_attribute_value IS NOT NULL AND p_att_tab.EXISTS (l_index_attribute) THEN --2786991
8711
8712 hxc_timekeeper_process.g_negative_index := hxc_timekeeper_process.g_negative_index - 1;
8713
8714 /*Bug 9014012*/
8715
8716 l_found:= 'N';
8717
8718 LOOP
8719 l_tmp_index:= hxc_timekeeper_process.g_negative_index * -1;
8720 if g_tk_prepop_detail_id_tab.EXISTS(l_tmp_index) then
8721
8722 hxc_timekeeper_process.g_negative_index := hxc_timekeeper_process.g_negative_index - 1;
8723 l_found:= 'N';
8724
8725 else
8726
8727 l_found:='Y';
8728
8729 end if;
8730
8731 EXIT WHEN l_found = 'Y';
8732 END LOOP;
8733
8734
8735 if g_debug then
8736 hr_utility.trace('before add attribute');
8737 hr_utility.trace('g_negative_index = '||hxc_timekeeper_process.g_negative_index);
8738 end if;
8739
8740 hxc_timekeeper_utilities.add_attribute (
8741 p_attribute => p_attributes,
8742 p_attribute_id => g_negative_index,
8743 p_tbb_id => l_detail_id,
8744 p_tbb_ovn => l_detail_ovn,
8745 p_blk_type => 'OTL_ALIAS_ITEM_' || l_index_attribute,
8746 p_blk_id => NULL,
8747 p_att_category => 'OTL_ALIAS_ITEM_' || l_index_attribute,
8748 p_att_1 => l_new_attribute_value,
8749 p_att_2 => p_att_tab (l_index_attribute).alias_definition_id,
8750 p_att_3 => l_old_attribute_value,
8751 p_att_4 => p_att_tab (l_index_attribute).alias_type,
8752 p_attribute_index_info => p_attribute_index_info
8753 );
8754
8755 if g_debug then
8756 hr_utility.trace('after add attribute');
8757 end if;
8758
8759 END IF;
8760 END LOOP;
8761 --left
8762
8763 IF l_detail_info_found and l_reason_info_found THEN
8764 if g_debug then
8765 hr_utility.trace('HERE 1 RESSON');
8766 end if;
8767 g_negative_index := g_negative_index - 1;
8768
8769 /*Bug 9014012*/
8770
8771 l_found:= 'N';
8772
8773 LOOP
8774 l_tmp_index:= g_negative_index * -1;
8775 if g_tk_prepop_detail_id_tab.EXISTS(l_tmp_index) then
8776
8777 g_negative_index := g_negative_index - 1;
8778 l_found:= 'N';
8779
8780 else
8781
8782 l_found:='Y';
8783
8784 end if;
8785
8786 EXIT WHEN l_found = 'Y';
8787 END LOOP;
8788
8789
8790 l_attribute_index := g_negative_index;
8791 if g_debug then
8792 hr_utility.trace(l_attribute_index);
8793 end if;
8794 hxc_timekeeper_utilities.add_dff_attribute (
8795 p_attribute => p_attributes,
8796 p_attribute_id => g_negative_index,
8797 p_tbb_id => l_detail_id,
8798 p_tbb_ovn => l_detail_ovn,
8799 p_blk_type => 'REASON', --ctk
8800 p_blk_id => reason_bldtyp_id, --ctk
8801 p_att_category => l_detail_reason_category,
8802 p_att_1 => l_detail_reason_att_1,
8803 p_att_2 => l_detail_reason_att_2,
8804 p_att_3 => l_detail_reason_att_3,
8805 p_att_4 => l_detail_reason_att_4,
8806 p_att_5 => l_detail_reason_att_5,
8807 p_att_6 => l_detail_reason_att_6,
8808 p_att_7 => l_detail_reason_att_7,
8809 p_att_8 => NULL,
8810 p_att_9 => NULL,
8811 p_att_10 => NULL,
8812 p_att_11 => NULL,
8813 p_att_12 => NULL,
8814 p_att_13 => NULL,
8815 p_att_14 => NULL,
8816 p_att_15 => NULL,
8817 p_att_16 => NULL,
8818 p_att_17 => NULL,
8819 p_att_18 => NULL,
8820 p_att_19 => NULL,
8821 p_att_20 => NULL,
8822 p_att_21 => NULL,
8823 p_att_22 => NULL,
8824 p_att_23 => NULL,
8825 p_att_24 => NULL,
8826 p_att_25 => NULL,
8827 p_att_26 => NULL,
8828 p_att_27 => NULL,
8829 p_att_28 => NULL,
8830 p_att_29 => NULL,
8831 p_att_30 => NULL,
8832 p_attribute_index_info => p_attribute_index_info
8833 );
8834 END IF;
8835
8836 IF l_detail_info_found and l_detail_dff_found THEN
8837 if g_debug then
8838 hr_utility.trace('HERE 2');
8839 hr_utility.trace(l_attribute_index);
8840 end if;
8841 g_negative_index := g_negative_index - 1;
8842
8843 /*Bug 9014012*/
8844
8845 l_found:= 'N';
8846
8847 LOOP
8848 l_tmp_index:= g_negative_index * -1;
8849 if g_tk_prepop_detail_id_tab.EXISTS(l_tmp_index) then
8850
8851 g_negative_index := g_negative_index - 1;
8852 l_found:= 'N';
8853
8854 else
8855
8856 l_found:='Y';
8857
8858 end if;
8859
8860 EXIT WHEN l_found = 'Y';
8861 END LOOP;
8862
8863 l_attribute_index := g_negative_index;
8864
8865 hxc_timekeeper_utilities.add_dff_attribute (
8866 p_attribute => p_attributes,
8867 p_attribute_id => g_negative_index,
8868 p_tbb_id => l_detail_id,
8869 p_tbb_ovn => l_detail_ovn,
8870 p_blk_type => 'Dummy Paexpitdff Context',
8871 p_blk_id => bldtyp_id,
8872 p_att_category => l_detail_dff_category,
8873 p_att_1 => l_detail_att_1,
8874 p_att_2 => l_detail_att_2,
8875 p_att_3 => l_detail_att_3,
8876 p_att_4 => l_detail_att_4,
8877 p_att_5 => l_detail_att_5,
8878 p_att_6 => l_detail_att_6,
8879 p_att_7 => l_detail_att_7,
8880 p_att_8 => l_detail_att_8,
8881 p_att_9 => l_detail_att_9,
8882 p_att_10 => l_detail_att_10,
8883 p_att_11 => l_detail_att_11,
8884 p_att_12 => l_detail_att_12,
8885 p_att_13 => l_detail_att_13,
8886 p_att_14 => l_detail_att_14,
8887 p_att_15 => l_detail_att_15,
8888 p_att_16 => l_detail_att_16,
8889 p_att_17 => l_detail_att_17,
8890 p_att_18 => l_detail_att_18,
8891 p_att_19 => l_detail_att_19,
8892 p_att_20 => l_detail_att_20,
8893 p_att_21 => l_detail_att_21,
8894 p_att_22 => l_detail_att_22,
8895 p_att_23 => l_detail_att_23,
8896 p_att_24 => l_detail_att_24,
8897 p_att_25 => l_detail_att_25,
8898 p_att_26 => l_detail_att_26,
8899 p_att_27 => l_detail_att_27,
8900 p_att_28 => l_detail_att_28,
8901 p_att_29 => l_detail_att_29,
8902 p_att_30 => l_detail_att_30,
8903 p_attribute_index_info => p_attribute_index_info
8904 );
8905
8906 END IF;
8907
8908 ELSIF (l_measure IS NULL OR (l_detail_time_in IS NULL AND l_detail_time_out IS NULL))
8909 AND (l_detail_id IS NOT NULL AND l_detail_id > 0) THEN
8910 -- terminate the block the detail information with the new measure
8911
8912 if g_debug then
8913 hr_utility.trace('SVG - 3');
8914 end if;
8915
8916 hxc_timekeeper_utilities.add_block (
8917 p_timecard => p_timecard,
8918 p_timecard_id => l_detail_id,
8919 p_ovn => l_detail_ovn,
8920 p_parent_id => p_day_id_info_table (l_index_day).day_id,
8921 p_parent_ovn => p_day_id_info_table (l_index_day).day_ovn,
8922 p_approval_style_id => p_approval_style_id,
8923 p_measure => l_measure,
8924 p_scope => 'DETAIL',
8925 p_date_to => SYSDATE,
8926 p_date_from => NULL,
8927 p_start_period => l_detail_time_in, --p_start_period + l_index_day,
8928 p_end_period => l_detail_time_out, --p_start_period + l_index_day + g_one_day,
8929 p_resource_id => p_resource_id,
8930 p_changed => 'Y',
8931 p_comment_text => l_detail_comment_text,
8932 p_submit_flg => g_submit,
8933 p_application_set_id => l_application_set_id,
8934 p_timecard_index_info => p_timecard_index_info
8935 );
8936
8937 IF (p_tk_audit_enabled = 'Y') THEN
8938
8939 l_attribute_found := FALSE;
8940 --l_attribute_index :=
8941 hxc_alias_utility.attribute_check (
8942 p_bld_blk_info_type_id => reason_bldtyp_id,
8943 p_time_building_block_id => l_detail_id,
8944 p_attributes => p_attributes,
8945 p_tbb_id_reference_table => l_tbb_id_reference_table,
8946 p_attribute_found => l_attribute_found,
8947 p_attribute_index => l_attribute_index
8948 );
8949
8950 -- now we need to check if we need to create an attribute or do an update
8951
8952 -- if l_attribute_index = -1 THEN
8953 IF NOT (l_attribute_found) THEN
8954 g_negative_index := g_negative_index - 1;
8955
8956 /*Bug 9014012*/
8957
8958 l_found:= 'N';
8959
8960 LOOP
8961 l_tmp_index:= g_negative_index * -1;
8962 if g_tk_prepop_detail_id_tab.EXISTS(l_tmp_index) then
8963
8964 g_negative_index := g_negative_index - 1;
8965 l_found:= 'N';
8966
8967 else
8968
8969 l_found:='Y';
8970
8971 end if;
8972
8973 EXIT WHEN l_found = 'Y';
8974 END LOOP;
8975
8976 l_attribute_index := g_negative_index;
8977 ELSE
8978 l_attribute_index := p_attributes (l_attribute_index).time_attribute_id;
8979 END IF;
8980
8981 hxc_timekeeper_utilities.add_dff_attribute (
8982 p_attribute => p_attributes,
8983 p_attribute_id => l_attribute_index,
8984 p_tbb_id => l_detail_id,
8985 p_tbb_ovn => l_detail_ovn,
8986 p_blk_type => 'REASON', --ctk
8987 p_blk_id => reason_bldtyp_id, --ctk
8988 p_att_category => 'REASON',
8989 p_att_1 => 'TK_DEL_CHANGE_REASON',
8990 p_att_2 => NULL,
8991 p_att_3 => 'CHANGE',
8992 p_att_4 => NULL,
8993 p_att_5 => NULL,
8994 p_att_6 => NULL,
8995 p_att_7 => NULL,
8996 p_att_8 => NULL,
8997 p_att_9 => NULL,
8998 p_att_10 => NULL,
8999 p_att_11 => NULL,
9000 p_att_12 => NULL,
9001 p_att_13 => NULL,
9002 p_att_14 => NULL,
9003 p_att_15 => NULL,
9004 p_att_16 => NULL,
9005 p_att_17 => NULL,
9006 p_att_18 => NULL,
9007 p_att_19 => NULL,
9008 p_att_20 => NULL,
9009 p_att_21 => NULL,
9010 p_att_22 => NULL,
9011 p_att_23 => NULL,
9012 p_att_24 => NULL,
9013 p_att_25 => NULL,
9014 p_att_26 => NULL,
9015 p_att_27 => NULL,
9016 p_att_28 => NULL,
9017 p_att_29 => NULL,
9018 p_att_30 => NULL,
9019 p_attribute_index_info => p_attribute_index_info
9020 );
9021 END IF; ---DELETE REASON
9022
9023
9024 END IF;
9025
9026 ELSIF l_action = 'DELETE' THEN
9027 IF l_detail_id IS NOT NULL AND l_detail_id > 0 THEN
9028 -- terminate the block
9029
9030 if g_debug then
9031 hr_utility.trace('SVG - 5');
9032 end if;
9033
9034
9035 hxc_timekeeper_utilities.add_block (
9036 p_timecard => p_timecard,
9037 p_timecard_id => l_detail_id,
9038 p_ovn => l_detail_ovn,
9039 p_parent_id => p_day_id_info_table (l_index_day).day_id,
9040 p_parent_ovn => p_day_id_info_table (l_index_day).day_ovn,
9041 p_approval_style_id => p_approval_style_id,
9042 p_measure => l_measure,
9043 p_scope => 'DETAIL',
9044 p_date_to => SYSDATE,
9045 p_date_from => NULL,
9046 p_start_period => l_detail_time_in,
9047 p_end_period => l_detail_time_out,
9048 p_resource_id => p_resource_id,
9049 p_changed => 'Y',
9050 p_comment_text => l_detail_comment_text,
9051 p_submit_flg => g_submit,
9052 p_application_set_id => l_application_set_id,
9053 p_timecard_index_info => p_timecard_index_info
9054 );
9055
9056 IF (p_tk_audit_enabled = 'Y') THEN
9057
9058 l_attribute_found := FALSE;
9059 --l_attribute_index :=
9060 hxc_alias_utility.attribute_check (
9061 p_bld_blk_info_type_id => reason_bldtyp_id,
9062 p_time_building_block_id => l_detail_id,
9063 p_attributes => p_attributes,
9064 p_tbb_id_reference_table => l_tbb_id_reference_table,
9065 p_attribute_found => l_attribute_found,
9066 p_attribute_index => l_attribute_index
9067 );
9068
9069 -- now we need to check if we need to create an attribute or do an update
9070
9071 -- if l_attribute_index = -1 THEN
9072 IF NOT (l_attribute_found) THEN
9073 g_negative_index := g_negative_index - 1;
9074
9075 /*Bug 9014012*/
9076
9077 l_found:= 'N';
9078
9079 LOOP
9080 l_tmp_index:= g_negative_index * -1;
9081 if g_tk_prepop_detail_id_tab.EXISTS(l_tmp_index) then
9082
9083 g_negative_index := g_negative_index - 1;
9084 l_found:= 'N';
9085
9086 else
9087
9088 l_found:='Y';
9089
9090 end if;
9091
9092 EXIT WHEN l_found = 'Y';
9093 END LOOP;
9094
9095 l_attribute_index := g_negative_index;
9096 ELSE
9097 l_attribute_index := p_attributes (l_attribute_index).time_attribute_id;
9098 END IF;
9099
9100 hxc_timekeeper_utilities.add_dff_attribute (
9101 p_attribute => p_attributes,
9102 p_attribute_id => l_attribute_index,
9103 p_tbb_id => l_detail_id,
9104 p_tbb_ovn => l_detail_ovn,
9105 p_blk_type => 'REASON', --ctk
9106 p_blk_id => reason_bldtyp_id, --ctk
9107 p_att_category => 'REASON',
9108 p_att_1 => 'TK_DEL_CHANGE_REASON',
9109 p_att_2 => NULL,
9110 p_att_3 => 'CHANGE',
9111 p_att_4 => NULL,
9112 p_att_5 => NULL,
9113 p_att_6 => NULL,
9114 p_att_7 => NULL,
9115 p_att_8 => NULL,
9116 p_att_9 => NULL,
9117 p_att_10 => NULL,
9118 p_att_11 => NULL,
9119 p_att_12 => NULL,
9120 p_att_13 => NULL,
9121 p_att_14 => NULL,
9122 p_att_15 => NULL,
9123 p_att_16 => NULL,
9124 p_att_17 => NULL,
9125 p_att_18 => NULL,
9126 p_att_19 => NULL,
9127 p_att_20 => NULL,
9128 p_att_21 => NULL,
9129 p_att_22 => NULL,
9130 p_att_23 => NULL,
9131 p_att_24 => NULL,
9132 p_att_25 => NULL,
9133 p_att_26 => NULL,
9134 p_att_27 => NULL,
9135 p_att_28 => NULL,
9136 p_att_29 => NULL,
9137 p_att_30 => NULL,
9138 p_attribute_index_info => p_attribute_index_info
9139 );
9140 END IF; ---DELETE REASON
9141 END IF;
9142 END IF;
9143
9144 -- increment day
9145 l_index_day := l_index_day + 1;
9146 END LOOP; --while end loop for the days
9147 END IF;
9148
9149 -- SVG Need to print out p_block and p_attribute plsql tables
9150
9151 /*
9152
9153 IF g_debug then
9154
9155 if (p_timecard.count>0) then
9156
9157
9158 hr_utility.trace(' SVG P_BLOCK TABLE START ');
9159 hr_utility.trace(' *****************');
9160
9161 l_attribute_index := p_timecard.FIRST;
9162
9163 LOOP
9164 EXIT WHEN NOT p_timecard.EXISTS (l_attribute_index);
9165
9166
9167 hr_utility.trace(' TIME_BUILDING_BLOCK_ID = '|| p_timecard(l_attribute_index).TIME_BUILDING_BLOCK_ID );
9168 hr_utility.trace(' TYPE = '|| p_timecard(l_attribute_index).TYPE ) ;
9169 hr_utility.trace(' MEASURE = '|| p_timecard(l_attribute_index).MEASURE) ;
9170 hr_utility.trace(' UNIT_OF_MEASURE = '|| p_timecard(l_attribute_index).UNIT_OF_MEASURE ) ;
9171 hr_utility.trace(' START_TIME = '|| p_timecard(l_attribute_index).START_TIME ) ;
9172 hr_utility.trace(' STOP_TIME = '|| p_timecard(l_attribute_index).STOP_TIME ) ;
9173 hr_utility.trace(' PARENT_BUILDING_BLOCK_ID = '|| p_timecard(l_attribute_index).PARENT_BUILDING_BLOCK_ID ) ;
9174 hr_utility.trace(' PARENT_IS_NEW = '|| p_timecard(l_attribute_index).PARENT_IS_NEW ) ;
9175 hr_utility.trace(' SCOPE = '|| p_timecard(l_attribute_index).SCOPE ) ;
9176 hr_utility.trace(' OBJECT_VERSION_NUMBER = '|| p_timecard(l_attribute_index).OBJECT_VERSION_NUMBER ) ;
9177 hr_utility.trace(' APPROVAL_STATUS = '|| p_timecard(l_attribute_index).APPROVAL_STATUS ) ;
9178 hr_utility.trace(' RESOURCE_ID = '|| p_timecard(l_attribute_index).RESOURCE_ID ) ;
9179 hr_utility.trace(' RESOURCE_TYPE = '|| p_timecard(l_attribute_index).RESOURCE_TYPE ) ;
9180 hr_utility.trace(' APPROVAL_STYLE_ID = '|| p_timecard(l_attribute_index).APPROVAL_STYLE_ID ) ;
9181 hr_utility.trace(' DATE_FROM = '|| p_timecard(l_attribute_index).DATE_FROM ) ;
9182 hr_utility.trace(' DATE_TO = '|| p_timecard(l_attribute_index).DATE_TO ) ;
9183 hr_utility.trace(' COMMENT_TEXT = '|| p_timecard(l_attribute_index).COMMENT_TEXT ) ;
9184 hr_utility.trace(' PARENT_BUILDING_BLOCK_OVN = '|| p_timecard(l_attribute_index).PARENT_BUILDING_BLOCK_OVN ) ;
9185 hr_utility.trace(' NEW = '|| p_timecard(l_attribute_index).NEW ) ;
9186 hr_utility.trace(' CHANGED = '|| p_timecard(l_attribute_index).CHANGED ) ;
9187 hr_utility.trace(' PROCESS = '|| p_timecard(l_attribute_index).PROCESS ) ;
9188 hr_utility.trace(' APPLICATION_SET_ID = '|| p_timecard(l_attribute_index).APPLICATION_SET_ID ) ;
9189 hr_utility.trace(' TRANSLATION_DISPLAY_KEY = '|| p_timecard(l_attribute_index).TRANSLATION_DISPLAY_KEY ) ;
9190 hr_utility.trace('------------------------------------------------------');
9191
9192 l_attribute_index := p_timecard.NEXT (l_attribute_index);
9193
9194 END LOOP;
9195
9196 hr_utility.trace(' SVG p_timecard TABLE END ');
9197 hr_utility.trace(' *****************');
9198
9199 end if;
9200 END IF;
9201
9202
9203
9204
9205
9206
9207 IF g_debug then
9208
9209 if (p_attributes.count>0) then
9210
9211
9212 hr_utility.trace(' SVG ATTRIBUTES TABLE START ');
9213 hr_utility.trace(' *****************');
9214
9215 l_attribute_index := p_attributes.FIRST;
9216
9217 LOOP
9218 EXIT WHEN NOT p_attributes.EXISTS (l_attribute_index);
9219
9220
9221 hr_utility.trace(' TIME_ATTRIBUTE_ID = '|| p_attributes(l_attribute_index).TIME_ATTRIBUTE_ID);
9222 hr_utility.trace(' BUILDING_BLOCK_ID = '|| p_attributes(l_attribute_index).BUILDING_BLOCK_ID ) ;
9223 hr_utility.trace(' ATTRIBUTE_CATEGORY = '|| p_attributes(l_attribute_index).ATTRIBUTE_CATEGORY) ;
9224 hr_utility.trace(' ATTRIBUTE1 = '|| p_attributes(l_attribute_index).ATTRIBUTE1 ) ;
9225 hr_utility.trace(' ATTRIBUTE2 (p_alias_definition_id) = '|| p_attributes(l_attribute_index).ATTRIBUTE2 ) ;
9226 hr_utility.trace(' ATTRIBUTE3 (l_alias_value_id) = '|| p_attributes(l_attribute_index).ATTRIBUTE3 ) ;
9227 hr_utility.trace(' ATTRIBUTE4 (p_alias_type) = '|| p_attributes(l_attribute_index).ATTRIBUTE4 ) ;
9228 hr_utility.trace(' ATTRIBUTE5 = '|| p_attributes(l_attribute_index).ATTRIBUTE5 ) ;
9229 hr_utility.trace(' ATTRIBUTE6 = '|| p_attributes(l_attribute_index).ATTRIBUTE6 ) ;
9230 hr_utility.trace(' ATTRIBUTE7 = '|| p_attributes(l_attribute_index).ATTRIBUTE7 ) ;
9231 hr_utility.trace(' ATTRIBUTE8 = '|| p_attributes(l_attribute_index).ATTRIBUTE8 ) ;
9232 hr_utility.trace(' ATTRIBUTE9 = '|| p_attributes(l_attribute_index).ATTRIBUTE9 ) ;
9233 hr_utility.trace(' ATTRIBUTE10 = '|| p_attributes(l_attribute_index).ATTRIBUTE10 ) ;
9234 hr_utility.trace(' ATTRIBUTE11 = '|| p_attributes(l_attribute_index).ATTRIBUTE11 ) ;
9235 hr_utility.trace(' ATTRIBUTE12 = '|| p_attributes(l_attribute_index).ATTRIBUTE12 ) ;
9236 hr_utility.trace(' ATTRIBUTE13 = '|| p_attributes(l_attribute_index).ATTRIBUTE13 ) ;
9237 hr_utility.trace(' ATTRIBUTE14 = '|| p_attributes(l_attribute_index).ATTRIBUTE14 ) ;
9238 hr_utility.trace(' ATTRIBUTE15 = '|| p_attributes(l_attribute_index).ATTRIBUTE15 ) ;
9239 hr_utility.trace(' ATTRIBUTE16 = '|| p_attributes(l_attribute_index).ATTRIBUTE16 ) ;
9240 hr_utility.trace(' ATTRIBUTE17 = '|| p_attributes(l_attribute_index).ATTRIBUTE17 ) ;
9241 hr_utility.trace(' ATTRIBUTE18 = '|| p_attributes(l_attribute_index).ATTRIBUTE18 ) ;
9242 hr_utility.trace(' ATTRIBUTE19 = '|| p_attributes(l_attribute_index).ATTRIBUTE19 ) ;
9243 hr_utility.trace(' ATTRIBUTE20 = '|| p_attributes(l_attribute_index).ATTRIBUTE20 ) ;
9244 hr_utility.trace(' ATTRIBUTE21 = '|| p_attributes(l_attribute_index).ATTRIBUTE21 ) ;
9245 hr_utility.trace(' ATTRIBUTE22 = '|| p_attributes(l_attribute_index).ATTRIBUTE22 ) ;
9246 hr_utility.trace(' ATTRIBUTE23 = '|| p_attributes(l_attribute_index).ATTRIBUTE23 ) ;
9247 hr_utility.trace(' ATTRIBUTE24 = '|| p_attributes(l_attribute_index).ATTRIBUTE24 ) ;
9248 hr_utility.trace(' ATTRIBUTE25 = '|| p_attributes(l_attribute_index).ATTRIBUTE25 ) ;
9249 hr_utility.trace(' ATTRIBUTE26 = '|| p_attributes(l_attribute_index).ATTRIBUTE26 ) ;
9250 hr_utility.trace(' ATTRIBUTE27 = '|| p_attributes(l_attribute_index).ATTRIBUTE27 ) ;
9251 hr_utility.trace(' ATTRIBUTE28 = '|| p_attributes(l_attribute_index).ATTRIBUTE28 ) ;
9252 hr_utility.trace(' ATTRIBUTE29 (p_alias_ref_object) = '|| p_attributes(l_attribute_index).ATTRIBUTE29 ) ;
9253 hr_utility.trace(' ATTRIBUTE30 (p_alias_value_name) = '|| p_attributes(l_attribute_index).ATTRIBUTE30 ) ;
9254 hr_utility.trace(' BLD_BLK_INFO_TYPE_ID = '|| p_attributes(l_attribute_index).BLD_BLK_INFO_TYPE_ID );
9255 hr_utility.trace(' OBJECT_VERSION_NUMBER = '|| p_attributes(l_attribute_index).OBJECT_VERSION_NUMBER );
9256 hr_utility.trace(' NEW = '|| p_attributes(l_attribute_index).NEW );
9257 hr_utility.trace(' CHANGED = '|| p_attributes(l_attribute_index).CHANGED );
9258 hr_utility.trace(' BLD_BLK_INFO_TYPE = '|| p_attributes(l_attribute_index).BLD_BLK_INFO_TYPE );
9259 hr_utility.trace(' PROCESS = '|| p_attributes(l_attribute_index).PROCESS );
9260 hr_utility.trace(' BUILDING_BLOCK_OVN = '|| p_attributes(l_attribute_index).BUILDING_BLOCK_OVN );
9261 hr_utility.trace('------------------------------------------------------');
9262
9263 l_attribute_index := p_attributes.NEXT (l_attribute_index);
9264
9265 END LOOP;
9266
9267 hr_utility.trace(' SVG ATTRIBUTES TABLE END ');
9268 hr_utility.trace(' *****************');
9269
9270 end if;
9271 END IF;
9272
9273
9274 */
9275
9276
9277
9278 END; --create detail structure
9279
9280
9281 -----------------------------------------------------------------------------
9282 PROCEDURE get_day_totals (
9283 p_day_total_1 OUT NOCOPY NUMBER,
9284 p_day_total_2 OUT NOCOPY NUMBER,
9285 p_day_total_3 OUT NOCOPY NUMBER,
9286 p_day_total_4 OUT NOCOPY NUMBER,
9287 p_day_total_5 OUT NOCOPY NUMBER,
9288 p_day_total_6 OUT NOCOPY NUMBER,
9289 p_day_total_7 OUT NOCOPY NUMBER,
9290 p_day_total_8 OUT NOCOPY NUMBER,
9291 p_day_total_9 OUT NOCOPY NUMBER,
9292 p_day_total_10 OUT NOCOPY NUMBER,
9293 p_day_total_11 OUT NOCOPY NUMBER,
9294 p_day_total_12 OUT NOCOPY NUMBER,
9295 p_day_total_13 OUT NOCOPY NUMBER,
9296 p_day_total_14 OUT NOCOPY NUMBER,
9297 p_day_total_15 OUT NOCOPY NUMBER,
9298 p_day_total_16 OUT NOCOPY NUMBER,
9299 p_day_total_17 OUT NOCOPY NUMBER,
9300 p_day_total_18 OUT NOCOPY NUMBER,
9301 p_day_total_19 OUT NOCOPY NUMBER,
9302 p_day_total_20 OUT NOCOPY NUMBER,
9303 p_day_total_21 OUT NOCOPY NUMBER,
9304 p_day_total_22 OUT NOCOPY NUMBER,
9305 p_day_total_23 OUT NOCOPY NUMBER,
9306 p_day_total_24 OUT NOCOPY NUMBER,
9307 p_day_total_25 OUT NOCOPY NUMBER,
9308 p_day_total_26 OUT NOCOPY NUMBER,
9309 p_day_total_27 OUT NOCOPY NUMBER,
9310 p_day_total_28 OUT NOCOPY NUMBER,
9311 p_day_total_29 OUT NOCOPY NUMBER,
9312 p_day_total_30 OUT NOCOPY NUMBER,
9313 p_day_total_31 OUT NOCOPY NUMBER
9314 ) IS
9315 l_index NUMBER
9316 /*ADVICE(6710): NUMBER has no precision [315] */
9317 ;
9318 BEGIN
9319 l_index := g_timekeeper_data_query.FIRST;
9320
9321 LOOP
9322 EXIT WHEN NOT g_timekeeper_data_query.EXISTS (l_index);
9323 p_day_total_1 := NVL (p_day_total_1, 0) + NVL (g_timekeeper_data_query (l_index).day_1, 0)
9324 + NVL (
9325 (g_timekeeper_data_query (l_index).time_out_1
9326 - g_timekeeper_data_query (l_index).time_in_1
9327 )
9328 * 24,
9329 0
9330 );
9331 p_day_total_2 := NVL (p_day_total_2, 0) + NVL (g_timekeeper_data_query (l_index).day_2, 0)
9332 + NVL (
9333 (g_timekeeper_data_query (l_index).time_out_2
9334 - g_timekeeper_data_query (l_index).time_in_2
9335 )
9336 * 24,
9337 0
9338 );
9339 p_day_total_3 := NVL (p_day_total_3, 0) + NVL (g_timekeeper_data_query (l_index).day_3, 0)
9340 + NVL (
9341 (g_timekeeper_data_query (l_index).time_out_3
9342 - g_timekeeper_data_query (l_index).time_in_3
9343 )
9344 * 24,
9345 0
9346 );
9347 p_day_total_4 := NVL (p_day_total_4, 0) + NVL (g_timekeeper_data_query (l_index).day_4, 0)
9348 + NVL (
9349 (g_timekeeper_data_query (l_index).time_out_4
9350 - g_timekeeper_data_query (l_index).time_in_4
9351 )
9352 * 24,
9353 0
9354 );
9355 p_day_total_5 := NVL (p_day_total_5, 0) + NVL (g_timekeeper_data_query (l_index).day_5, 0)
9356 + NVL (
9357 (g_timekeeper_data_query (l_index).time_out_5
9358 - g_timekeeper_data_query (l_index).time_in_5
9359 )
9360 * 24,
9361 0
9362 );
9363 p_day_total_6 := NVL (p_day_total_6, 0) + NVL (g_timekeeper_data_query (l_index).day_6, 0)
9364 + NVL (
9365 (g_timekeeper_data_query (l_index).time_out_6
9366 - g_timekeeper_data_query (l_index).time_in_6
9367 )
9368 * 24,
9369 0
9370 );
9371 p_day_total_7 := NVL (p_day_total_7, 0) + NVL (g_timekeeper_data_query (l_index).day_7, 0)
9372 + NVL (
9373 (g_timekeeper_data_query (l_index).time_out_7
9374 - g_timekeeper_data_query (l_index).time_in_7
9375 )
9376 * 24,
9377 0
9378 );
9379 p_day_total_8 := NVL (p_day_total_8, 0) + NVL (g_timekeeper_data_query (l_index).day_8, 0)
9380 + NVL (
9381 (g_timekeeper_data_query (l_index).time_out_8
9382 - g_timekeeper_data_query (l_index).time_in_8
9383 )
9384 * 24,
9385 0
9386 );
9387 p_day_total_9 := NVL (p_day_total_9, 0) + NVL (g_timekeeper_data_query (l_index).day_9, 0)
9388 + NVL (
9389 (g_timekeeper_data_query (l_index).time_out_9
9390 - g_timekeeper_data_query (l_index).time_in_9
9391 )
9392 * 24,
9393 0
9394 );
9395 p_day_total_10 := NVL (p_day_total_10, 0) + NVL (g_timekeeper_data_query (l_index).day_10, 0)
9396 + NVL (
9397 (g_timekeeper_data_query (l_index).time_out_10
9398 - g_timekeeper_data_query (l_index).time_in_10
9399 )
9400 * 24,
9401 0
9402 );
9403 p_day_total_11 := NVL (p_day_total_11, 0) + NVL (g_timekeeper_data_query (l_index).day_11, 0)
9404 + NVL (
9405 (g_timekeeper_data_query (l_index).time_out_11
9406 - g_timekeeper_data_query (l_index).time_in_11
9407 )
9408 * 24,
9409 0
9410 );
9411 p_day_total_12 := NVL (p_day_total_12, 0) + NVL (g_timekeeper_data_query (l_index).day_12, 0)
9412 + NVL (
9413 (g_timekeeper_data_query (l_index).time_out_12
9414 - g_timekeeper_data_query (l_index).time_in_12
9415 )
9416 * 24,
9417 0
9418 );
9419 p_day_total_13 := NVL (p_day_total_13, 0) + NVL (g_timekeeper_data_query (l_index).day_13, 0)
9420 + NVL (
9421 (g_timekeeper_data_query (l_index).time_out_13
9422 - g_timekeeper_data_query (l_index).time_in_13
9423 )
9424 * 24,
9425 0
9426 );
9427 p_day_total_14 := NVL (p_day_total_14, 0) + NVL (g_timekeeper_data_query (l_index).day_14, 0)
9428 + NVL (
9429 (g_timekeeper_data_query (l_index).time_out_14
9430 - g_timekeeper_data_query (l_index).time_in_14
9431 )
9432 * 24,
9433 0
9434 );
9435 p_day_total_15 := NVL (p_day_total_15, 0) + NVL (g_timekeeper_data_query (l_index).day_15, 0)
9436 + NVL (
9437 (g_timekeeper_data_query (l_index).time_out_15
9438 - g_timekeeper_data_query (l_index).time_in_15
9439 )
9440 * 24,
9441 0
9442 );
9443 p_day_total_16 := NVL (p_day_total_16, 0) + NVL (g_timekeeper_data_query (l_index).day_16, 0)
9444 + NVL (
9445 (g_timekeeper_data_query (l_index).time_out_16
9446 - g_timekeeper_data_query (l_index).time_in_16
9447 )
9448 * 24,
9449 0
9450 );
9451 p_day_total_17 := NVL (p_day_total_17, 0) + NVL (g_timekeeper_data_query (l_index).day_17, 0)
9452 + NVL (
9453 (g_timekeeper_data_query (l_index).time_out_17
9454 - g_timekeeper_data_query (l_index).time_in_17
9455 )
9456 * 24,
9457 0
9458 );
9459 p_day_total_18 := NVL (p_day_total_18, 0) + NVL (g_timekeeper_data_query (l_index).day_18, 0)
9460 + NVL (
9461 (g_timekeeper_data_query (l_index).time_out_18
9462 - g_timekeeper_data_query (l_index).time_in_18
9463 )
9464 * 24,
9465 0
9466 );
9467 p_day_total_19 := NVL (p_day_total_19, 0) + NVL (g_timekeeper_data_query (l_index).day_19, 0)
9468 + NVL (
9469 (g_timekeeper_data_query (l_index).time_out_19
9470 - g_timekeeper_data_query (l_index).time_in_19
9471 )
9472 * 24,
9473 0
9474 );
9475 p_day_total_20 := NVL (p_day_total_20, 0) + NVL (g_timekeeper_data_query (l_index).day_20, 0)
9476 + NVL (
9477 (g_timekeeper_data_query (l_index).time_out_20
9478 - g_timekeeper_data_query (l_index).time_in_20
9479 )
9480 * 24,
9481 0
9482 );
9483 p_day_total_21 := NVL (p_day_total_21, 0) + NVL (g_timekeeper_data_query (l_index).day_21, 0)
9484 + NVL (
9485 (g_timekeeper_data_query (l_index).time_out_21
9486 - g_timekeeper_data_query (l_index).time_in_21
9487 )
9488 * 24,
9489 0
9490 );
9491 p_day_total_22 := NVL (p_day_total_22, 0) + NVL (g_timekeeper_data_query (l_index).day_22, 0)
9492 + NVL (
9493 (g_timekeeper_data_query (l_index).time_out_22
9494 - g_timekeeper_data_query (l_index).time_in_22
9495 )
9496 * 24,
9497 0
9498 );
9499 p_day_total_23 := NVL (p_day_total_23, 0) + NVL (g_timekeeper_data_query (l_index).day_23, 0)
9500 + NVL (
9501 (g_timekeeper_data_query (l_index).time_out_23
9502 - g_timekeeper_data_query (l_index).time_in_23
9503 )
9504 * 24,
9505 0
9506 );
9507 p_day_total_24 := NVL (p_day_total_24, 0) + NVL (g_timekeeper_data_query (l_index).day_24, 0)
9508 + NVL (
9509 (g_timekeeper_data_query (l_index).time_out_24
9510 - g_timekeeper_data_query (l_index).time_in_24
9511 )
9512 * 24,
9513 0
9514 );
9515 p_day_total_25 := NVL (p_day_total_25, 0) + NVL (g_timekeeper_data_query (l_index).day_25, 0)
9516 + NVL (
9517 (g_timekeeper_data_query (l_index).time_out_25
9518 - g_timekeeper_data_query (l_index).time_in_25
9519 )
9520 * 24,
9521 0
9522 );
9523 p_day_total_26 := NVL (p_day_total_26, 0) + NVL (g_timekeeper_data_query (l_index).day_26, 0)
9524 + NVL (
9525 (g_timekeeper_data_query (l_index).time_out_26
9526 - g_timekeeper_data_query (l_index).time_in_26
9527 )
9528 * 24,
9529 0
9530 );
9531 p_day_total_27 := NVL (p_day_total_27, 0) + NVL (g_timekeeper_data_query (l_index).day_27, 0)
9532 + NVL (
9533 (g_timekeeper_data_query (l_index).time_out_27
9534 - g_timekeeper_data_query (l_index).time_in_27
9535 )
9536 * 24,
9537 0
9538 );
9539 p_day_total_28 := NVL (p_day_total_28, 0) + NVL (g_timekeeper_data_query (l_index).day_28, 0)
9540 + NVL (
9541 (g_timekeeper_data_query (l_index).time_out_28
9542 - g_timekeeper_data_query (l_index).time_in_28
9543 )
9544 * 24,
9545 0
9546 );
9547 p_day_total_29 := NVL (p_day_total_29, 0) + NVL (g_timekeeper_data_query (l_index).day_29, 0)
9548 + NVL (
9549 (g_timekeeper_data_query (l_index).time_out_29
9550 - g_timekeeper_data_query (l_index).time_in_29
9551 )
9552 * 24,
9553 0
9554 );
9555 p_day_total_30 := NVL (p_day_total_30, 0) + NVL (g_timekeeper_data_query (l_index).day_30, 0)
9556 + NVL (
9557 (g_timekeeper_data_query (l_index).time_out_30
9558 - g_timekeeper_data_query (l_index).time_in_30
9559 )
9560 * 24,
9561 0
9562 );
9563 p_day_total_31 := NVL (p_day_total_31, 0) + NVL (g_timekeeper_data_query (l_index).day_31, 0)
9564 + NVL (
9565 (g_timekeeper_data_query (l_index).time_out_31
9566 - g_timekeeper_data_query (l_index).time_in_31
9567 )
9568 * 24,
9569 0
9570 );
9571 l_index := g_timekeeper_data_query.NEXT (l_index);
9572 END LOOP;
9573 END;
9574
9575 PROCEDURE get_absence_statuses ( p_resource_id IN NUMBER,
9576 p_start_date IN DATE,
9577 p_end_date IN DATE,
9578 p_abs_status IN OUT NOCOPY HXC_RETRIEVE_ABSENCES.ABS_STATUS_TAB)
9579 IS
9580
9581
9582 BEGIN
9583
9584 HXC_RETRIEVE_ABSENCES.get_abs_statuses ( p_person_id => p_resource_id,
9585 p_start_date => p_start_date,
9586 p_end_date => p_end_date + g_one_day,
9587 p_abs_status_rec => p_abs_status);
9588
9589
9590 -- p_abs_status.delete(p_abs_status.first);
9591
9592
9593 END ; -- get_absence_statuses
9594
9595
9596 PROCEDURE get_pending_notif_info ( p_no_data OUT NOCOPY VARCHAR2 ,
9597 p_employee_full_name OUT NOCOPY VARCHAR2,
9598 p_employee_number OUT NOCOPY VARCHAR2,
9599 p_message OUT NOCOPY VARCHAR2)
9600
9601 IS
9602
9603
9604 BEGIN
9605
9606 if g_query_exception_tab.count > 0 then
9607
9608 p_employee_full_name:= g_query_exception_tab(g_query_exception_tab.FIRST).
9609 employee_full_name;
9610 p_employee_number:= g_query_exception_tab(g_query_exception_tab.FIRST).
9611 employee_number;
9612 p_message:= g_query_exception_tab(g_query_exception_tab.FIRST).
9613 message;
9614
9615 g_query_exception_tab.DELETE(g_query_exception_tab.first);
9616
9617 p_no_data:='N';
9618
9619 else
9620
9621 p_no_data:='Y';
9622
9623 end if;
9624
9625
9626 END ; --get_pending_notif_info
9627
9628
9629
9630 PROCEDURE get_abs_ret_fail_info ( p_no_data OUT NOCOPY VARCHAR2 ,
9631 p_employee_full_name OUT NOCOPY VARCHAR2,
9632 p_message OUT NOCOPY VARCHAR2)
9633
9634 IS
9635
9636
9637 BEGIN
9638
9639 if hxc_abs_retrieval_pkg.g_tk_ret_messages.count > 0 then
9640
9641 p_employee_full_name:= hxc_abs_retrieval_pkg.g_tk_ret_messages
9642 (hxc_abs_retrieval_pkg.g_tk_ret_messages.FIRST).employee_name;
9643
9644 p_message:= hxc_abs_retrieval_pkg.g_tk_ret_messages
9645 (hxc_abs_retrieval_pkg.g_tk_ret_messages.FIRST).message_name;
9646
9647 hxc_abs_retrieval_pkg.g_tk_ret_messages.DELETE(hxc_abs_retrieval_pkg.g_tk_ret_messages.FIRST);
9648
9649 p_no_data:='N';
9650
9651 else
9652
9653 p_no_data:='Y';
9654
9655 end if;
9656
9657
9658 END ; -- get_abs_ret_fail_info
9659 -----------------------------------------------------------------------------
9660
9661 END;