DBA Data[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;