[Home] [Help]
PACKAGE BODY: APPS.PO_STORE_TIMECARD_PKG_GRP
Source
1 PACKAGE BODY PO_STORE_TIMECARD_PKG_GRP AS
2 /* $Header: POXGSTCB.pls 120.2 2007/12/26 11:39:36 adbharga ship $ */
3
4 -- *** PRIVATE PROCEDURES **
5
6 /* 8i compatibility issue. Commenting out
7 function add_error (
8 p_rtrvd_tcs PO_RTRVD_TCS_REC
9 ) return PO_RTRVD_TCS_ERR_REC
10 IS
11 tc_id po_tbl_number;
12 tc_day_id po_tbl_number;
13 tc_detail_id po_tbl_number;
14 po_number po_tbl_varchar20;
15 line_number po_tbl_number;
16 original_index po_tbl_number;
17 msg_data po_tbl_varchar2000;
18 msg_cnt number;
19 errors NUMBER;
20 err_index number;
21 begin
22
23 errors := SQL%BULK_EXCEPTIONS.COUNT;
24
25 --dbms_output.put_line('Number of errors is ' || errors);
26 FOR i IN 1..errors LOOP
27 err_index := SQL%BULK_EXCEPTIONS(i).ERROR_INDEX;
28 tc_id.extend;
29 tc_day_id.extend;
30 tc_detail_id.extend;
31 po_number.extend;
32 line_number.extend;
33 original_index.extend;
34 msg_data.extend;
35
36 msg_cnt := msg_data.count;
37
38 tc_id(msg_cnt) := p_rtrvd_tcs.tc_id(err_index);
39 tc_day_id(msg_cnt) := p_rtrvd_tcs.tc_day_id(err_index);
40 tc_detail_id(msg_cnt) := p_rtrvd_tcs.tc_detail_id(err_index);
41 po_number(msg_cnt) := p_rtrvd_tcs.po_number(err_index);
42 line_number(msg_cnt) := p_rtrvd_tcs.po_line_number(err_index);
43 original_index(msg_cnt) := err_index;
44 msg_data(msg_cnt) := SQLERRM(-SQL%BULK_EXCEPTIONS(i).ERROR_CODE);
45
46
47 / * old comment
48 dbms_output.put_line('Error ' || i || ' occurred during '||
49 'iteration ' || SQL%BULK_EXCEPTIONS(i).ERROR_INDEX);
50 dbms_output.put_line('Oracle error is ' ||
51 SQLERRM(-SQL%BULK_EXCEPTIONS(i).ERROR_CODE));
52 * /
53 END LOOP;
54
55 return (PO_RTRVD_TCS_ERR_REC(tc_id => tc_id,
56 tc_day_id => tc_day_id,
57 tc_detail_id => tc_detail_id,
58 po_number => po_number,
59 line_number => line_number,
60 original_index => original_index,
61 msg_data => msg_data
62 ));
63
64 end add_error;
65
66 end of 8i compatibility issue
67 */
68 -- *** PUBLIC PROCEDURES **
69 procedure initGlobals
70 is
71 begin
72 g_cur_po_header_id := null;
73 g_cur_po_line_id := null;
74 end initGlobals;
75
76 function isFirstOccurance(p_po_header_id number, p_po_line_id number)
77 return number is
78 begin
79 if (p_po_header_id = g_cur_po_header_id and p_po_line_id = g_cur_po_line_id) then
80 return 1;
81 else
82 g_cur_po_header_id := p_po_header_id;
83 g_cur_po_line_id := p_po_line_id;
84 return 0;
85 end if;
86 end ;
87
88 procedure store_timecard_details
89 (
90 p_api_version number,
91 x_return_status out NOCOPY varchar2,
92 x_msg_data out NOCOPY varchar2,
93 p_vendor_id number,
94 p_vendor_site_id number,
95 p_vendor_contact_id number,
96 p_po_num varchar2,
97 p_po_line_number number,
98 p_org_id number,
99 p_project_id number,
100 p_task_id number,
101 p_tc_id number, --building_block_id for timecards
102 p_tc_day_id number, --building_block_id for timecard days
103 p_tc_detail_id number, -- building_block_id for details
104 p_tc_uom varchar2, --mostly Hours
105 p_tc_Start_date date, --Timecard start date
106 p_tc_end_date date, --Timecard end date
107 p_tc_entry_date date, --date the worker worked
108 p_tc_time_received number, --number of hours worked
109 p_tc_approval_status varchar2,
110 p_tc_approval_date date,
111 p_tc_submission_date date,
112 p_contingent_worker_id number, --worker id
113 p_tc_comment_text varchar2, --tc comment
114 p_line_rate_type varchar2, -- Regular, Overtime
115 p_line_rate number,
116 p_action VARCHAR2,
117 p_interface_transaction_id number
118 ) is
119 l_po_header_id number;
120 l_po_currency varchar2(15);
121 l_po_creation_date date;
122 l_po_line_id number;
123 l_po_line_number number;
124 l_contractor_full_name varchar2(500);
125 l_contractor_first_name varchar2(240);
126 l_contractor_last_name varchar2(240);
127 l_project_name varchar2(255);
128 l_task_number varchar2(255);
129 l_line_rate number;
130 l_stage varchar2(2000);
131 l_vendor_id number;
132 l_vendor_site_id number;
133 l_action varchar2(2);
134 l_po_number varchar2(20);
135 l_org_id number;
136 l_tc_approved_date date;
137 l_tc_uom varchar2(30);
138 l_tc_start_date date;
139 l_tc_end_date date;
140 l_tc_entry_date date;
141 l_contingent_worker_id number;
142 l_line_rate_type varchar2(30);
143 l_tc_entry_seq number;
144
145 l_get_fresh varchar2(1) := 'N';
146 -- Bug6391432
147 -- To avoid the no data found for a zero amount time card correction
148 -- added up the logic to catch NO_DATA_FOUND exception and treat the
149 -- update action as insert action for timecards which had zero amount
150 -- when making a insert in ISP table and didnt went into ISP table.
151 begin
152
153 if (upper(p_action) = 'UPDATE' OR upper(p_action) = 'DELETE') then
154 --Get the mandatory data to create a new row with the above action.
155 l_stage := 'Getting ready to UPDATE or DELETE';
156 Begin
157 select VENDOR_ID, VENDOR_SITE_ID, PO_HEADER_ID, PO_NUMBER, PO_LINE_ID, PO_LINE_NUMBER,
158 ORG_ID, PO_CREATION_DATE,
159 PO_CONTRACTOR_FULL_NAME, TC_UOM, TC_APPROVED_DATE,
160 TC_START_DATE, TC_ENTRY_DATE, TC_END_DATE,
161 CONTINGENT_WORKER_ID, LINE_RATE_TYPE, LINE_RATE, LINE_RATE_CURRENCY
162 into l_vendor_id, l_vendor_site_id, l_po_header_id, l_po_number,
163 l_po_line_id, l_po_line_number,
164 l_org_id, l_po_creation_date,
165 l_contractor_full_name, l_tc_uom, l_tc_approved_date,
166 l_tc_start_date, l_tc_entry_date, l_tc_end_date,
167 l_contingent_worker_id, l_line_rate_type, l_line_rate, l_po_currency
168 from po_retrieved_timecards
169 where tc_detail_id = p_tc_detail_id and tc_day_id = p_tc_day_id and
170 tc_id = p_tc_id and rownum = 1; --all we need is mandatory data; so first row is sufficient.
171 EXCEPTION
172 WHEN No_Data_Found THEN
173 l_get_fresh := 'Y';
174 END;
175 l_stage := 'Got data for UPDATE or DELETE';
176 END IF;
177 IF ( (NOT (upper(p_action) = 'UPDATE' OR upper(p_action) = 'DELETE') ) OR
178 l_get_fresh = 'Y') THEN
179 l_action := 'I';
180 l_stage := 'Getting ready for INSERT';
181
182 select po_header_id, currency_code, creation_date,
183 vendor_id, vendor_site_id
184 into l_po_header_id, l_po_currency, l_po_creation_date,
185 l_vendor_id, l_vendor_site_id
186 from po_headers_all
187 where segment1 = p_po_num and org_id = p_org_id;
188
189 l_stage := 'Getting the line id';
190 SELECT po_line_id
191 INTO l_PO_LINE_ID
192 FROM po_lines_all pla
193 WHERE pla.po_header_id = l_po_header_id
194 AND pla.line_num = p_po_line_number;
195
196
197
198 if (p_line_rate is null or p_line_rate = 0) then
199
200 l_stage := 'getting the line rate';
201 SELECT ptlv.rate_value
202 INTO l_line_rate
203 FROM po_temp_labor_rates_v ptlv, po_lines_all pla
204 WHERE ptlv.po_line_id = pla.po_line_id
205 AND ptlv.asg_rate_type = p_line_rate_type
206 AND pla.po_header_id = l_po_header_id
207 AND pla.line_num = p_po_line_number;
208 else
209 l_line_rate := p_line_rate;
210 end if;
211
212 if (p_contingent_worker_id is not null) then
213 l_stage := 'getting the contingent worker';
214 -- Bug6391432
215 -- Use per_all_people_f instead of per_people_f because of security settings
216 -- for this responsibility/user settings, some of the resource ids may not be
217 -- eligible for the per_people_f view criteria. which in turn will fail the query.
218 select first_name || last_name contractor_full_name,
219 first_name, last_name
220 into l_contractor_full_name,
221 l_contractor_first_name, l_contractor_last_name
222 from per_all_people_f
223 where person_id = p_contingent_worker_id and
224 sysdate between effective_start_date and effective_end_date;
225 end if;
226
227 if (p_project_id is not null) then
228 l_stage := 'getting the project id';
229 select SEGMENT1
230 into l_project_name
231 from PA_PROJECTS_ALL
232 where project_id = p_project_id;
233
234 if (p_task_id is not null) then
235 l_stage := 'getting the task id';
236 select TASK_NUMBER
237 into l_task_number
238 from PA_TASKS
239 where project_id = p_project_id and task_id = p_task_id;
240 end if;
241
242 end if;
243 /* set the local vars right to get ready to insert */
244 l_stage := 'Getting some misc data before INSERT';
245 l_po_number := p_PO_NUM;
246 l_po_line_number := p_po_line_number;
247 l_ORG_ID := p_ORG_ID;
248 l_TC_UOM := p_TC_UOM;
249 l_TC_START_DATE := p_TC_START_DATE;
250 l_TC_END_DATE := p_TC_END_DATE;
251 l_TC_ENTRY_DATE := p_TC_ENTRY_DATE;
252 l_tc_approved_date := p_TC_APPROVAL_DATE;
253 l_CONTINGENT_WORKER_ID := p_CONTINGENT_WORKER_ID;
254 l_LINE_RATE_TYPE := p_LINE_RATE_TYPE;
255
256
257 end if; --end of if insert
258
259 if (upper(p_action) = 'UPDATE') then
260 l_stage := 'updating';
261 /*
262 update PO_RETRIEVED_TIMECARDS
263 set tc_time_received = p_tc_time_received, tc_comment_text = p_tc_comment_text,
264 line_rate_type = p_line_rate_type, line_rate = p_line_rate
265 where tc_detail_id = p_tc_detail_id and tc_day_id = p_tc_day_id and tc_id = p_tc_id;
266 */
267
268
269 l_action := 'U';
270 elsif (upper(p_action) = 'DELETE') then
271 l_stage := 'deleting';
272 l_action := 'D';
273 /*
274 delete PO_RETRIEVED_TIMECARDS
275 where tc_detail_id = p_tc_detail_id and tc_day_id = p_tc_day_id and tc_id = p_tc_id;
276 */
277 end if;
278
279 select po_timecards_entry_s.nextval into l_tc_entry_seq from dual;
280 l_stage := 'inserting';
281
282 insert into PO_RETRIEVED_TIMECARDS
283 (
284 PO_HEADER_ID,
285 PO_NUMBER,
286 PO_LINE_ID,
287 PO_LINE_NUMBER,
288 ORG_ID,
289 PO_CREATION_DATE,
290 PO_CONTRACTOR_FULL_NAME,
291 PROJECT_ID,
292 PROJECT_NAME,
293 TASK_ID,
294 TASK_NAME,
295 TC_ID,
296 TC_DAY_ID,
297 TC_DETAIL_ID,
298 TC_SCOPE,
299 TC_UOM,
300 TC_START_DATE,
301 TC_END_DATE,
302 TC_ENTRY_DATE,
303 TC_TIME_RECEIVED,
304 TC_SUBMISSION_DATE,
305 TC_APPROVED_DATE,
306 TC_APPROVAL_STATUS,
307 CONTINGENT_WORKER_ID,
308 TC_COMMENT_TEXT,
309 LINE_RATE_TYPE,
310 LINE_RATE,
311 LINE_RATE_CURRENCY,
312 VENDOR_ID,
313 VENDOR_SITE_ID,
314 VENDOR_CONTACT_ID,
315 PO_CONTRACTOR_FIRST_NAME,
316 PO_CONTRACTOR_LAST_NAME,
317 INTERFACE_TRANSACTION_ID,
318 ACTION_FLAG,
319 TC_ENTRY_SEQUENCE
320 )
321 values
322 (
323 l_PO_HEADER_ID,
324 l_PO_NUMBER,
325 l_PO_LINE_ID,
326 l_PO_LINE_NUMBER,
327 l_ORG_ID,
328 l_po_creation_date,
329 l_CONTRACTOR_FULL_NAME,
330 p_PROJECT_ID,
331 l_PROJECT_NAME,
332 p_TASK_ID,
333 l_TASK_NUMBER,
334 p_TC_ID,
335 p_TC_DAY_ID,
336 p_TC_DETAIL_ID,
337 'DETAIL',
338 l_TC_UOM,
339 l_TC_START_DATE,
340 l_TC_END_DATE,
341 l_TC_ENTRY_DATE,
342 p_TC_TIME_RECEIVED,
343 p_TC_SUBMISSION_DATE,
344 l_tc_approved_date,
345 p_TC_APPROVAL_STATUS,
346 l_CONTINGENT_WORKER_ID,
347 p_TC_COMMENT_TEXT,
348 l_LINE_RATE_TYPE,
349 l_LINE_RATE,
350 l_PO_CURRENCY,
351 l_VENDOR_ID,
352 l_VENDOR_SITE_ID,
353 p_VENDOR_CONTACT_ID,
354 l_contractor_first_name,
355 l_contractor_last_name,
356 p_interface_transaction_id,
357 l_action,
358 l_tc_entry_seq
359 );
360
361 x_return_status := FND_API.G_RET_STS_SUCCESS;
362
363 --Do not commit
364
365 exception
366 when others then
367 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
368 x_msg_data := 'Action = ' || p_action || 'Stage = ' || l_stage || ' PO Number: ' || p_po_num ||
369 ' Line : ' || to_char(p_po_line_number) ||
370 ' TC_ID : ' || to_char (p_tc_id) ||
371 ' TC_DAY_ID : ' || to_char(p_tc_day_id) ||
372 ' TC_DETAIL_ID : ' || to_char(p_tc_detail_id) ||
373 ' Error : ' || SQLERRM
374 ;
375 -- dbms_output.put_line(SQLERRM);
376
377 end store_timecard_details;
378
379
380 procedure reconcile_actions (p_api_version number,
381 x_return_status out NOCOPY varchar2,
382 x_msg_data out NOCOPY varchar2
383 )
384 is
385 cursor reconcile_csr is
386 select /*+ PO_RETRIEVED_TIMECARDS_N6 */ tc_id, tc_day_id, tc_detail_id,
387 action_flag, tc_time_received,
388 tc_comment_text, interface_transaction_id
389 from po_retrieved_timecards
390 where action_flag in ('I', 'U', 'D')
391 order by TC_ENTRY_SEQUENCE;
392
393 l_tc_id number;
394 l_tc_day_id number;
395 l_tc_detail_id number;
396 l_action_flag varchar2(2);
397 l_tc_time_received number;
398 l_tc_comment_text varchar2(2000);
399 l_transaction_id number;
400
401 begin
402
403 --First cleanup all the failed transactions from the po_retrieved_timecards.
404 delete /*+ PO_RETRIEVED_TIMECARDS_N6 */po_retrieved_timecards prt
405 where action_flag in ('I', 'U', 'D') and
406 not exists (select interface_transaction_id from rcv_transactions
407 where interface_transaction_id = prt.interface_transaction_id);
408
409 --now we will reconcile the succsful transactions.
410 open reconcile_csr;
411 loop
412
413 fetch reconcile_csr into
414 l_tc_id, l_tc_day_id, l_tc_detail_id,
415 l_action_flag, l_tc_time_received,
416 l_tc_comment_text, l_transaction_id;
417
418 exit when reconcile_csr%NOTFOUND;
419
420
421 if (l_action_flag = 'I') then
422 update po_retrieved_timecards
423 set action_flag = 'P'
424 where tc_id = l_tc_id and
425 tc_day_id = l_tc_day_id and
426 tc_detail_id = l_tc_detail_id and
427 action_flag = 'I';
428
429 elsif (l_action_flag = 'U') then
430 update po_retrieved_timecards
431 set tc_time_received = l_tc_time_received,
432 tc_comment_text = l_tc_comment_text
433 where tc_id = l_tc_id and
434 tc_day_id = l_tc_day_id and
435 tc_detail_id = l_tc_detail_id and
436 action_flag = 'P';
437 elsif (l_action_flag = 'D') then
438 update po_retrieved_timecards
439 set action_flag = 'DP'
440 where tc_id = l_tc_id and
441 tc_day_id = l_tc_day_id and
442 tc_detail_id = l_tc_detail_id and
443 action_flag = 'P';
444
445 end if;
446
447 end loop;
448
449 close reconcile_csr;
450
451 delete po_retrieved_timecards
452 where action_flag in ('U', 'D');
453
454
455 x_return_status := FND_API.G_RET_STS_SUCCESS;
456
457 --Do not commit
458
459
460 exception
461 when others then
462 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
463 x_msg_data := ' Error : ' || SQLERRM;
464 end;
465
466
467
468 procedure store_timecard_details_rec (p_api_version number,
469 x_return_status out NOCOPY varchar2,
470 x_msg_data out NOCOPY varchar2,
471 p_rtrvd_tc PO_RTRVD_TC_REC,
472 p_action VARCHAR2
473 ) is
474 begin
475 store_timecard_details
476 (
477 p_api_version => p_api_version,
478 x_return_status => x_return_status,
479 x_msg_data =>x_msg_data,
480 p_vendor_id =>p_rtrvd_tc.VENDOR_ID,
481 p_vendor_site_id =>p_rtrvd_tc.VENDOR_SITE_ID,
482 p_vendor_contact_id =>p_rtrvd_tc.VENDOR_CONTACT_ID,
483 p_po_num =>p_rtrvd_tc.PO_NUMBER,
484 p_po_line_number =>p_rtrvd_tc.PO_LINE_NUMBER,
485 p_org_id =>p_rtrvd_tc.ORG_ID,
486 p_project_id =>p_rtrvd_tc.PROJECT_ID,
487 p_task_id =>p_rtrvd_tc.TASK_ID,
488 p_tc_id =>p_rtrvd_tc.TC_ID,
489 p_tc_day_id =>p_rtrvd_tc.TC_DAY_ID,
490 p_tc_detail_id =>p_rtrvd_tc.TC_DETAIL_ID ,
491 p_tc_uom =>p_rtrvd_tc.TC_UOM,
492 p_tc_Start_date =>p_rtrvd_tc.TC_START_DATE ,
493 p_tc_end_date =>p_rtrvd_tc.TC_END_DATE,
494 p_tc_entry_date =>p_rtrvd_tc.TC_ENTRY_DATE,
495 p_tc_time_received =>p_rtrvd_tc.TC_TIME_RECEIVED,
496 p_tc_approval_status =>p_rtrvd_tc.TC_APPROVAL_STATUS,
497 p_tc_approval_date =>p_rtrvd_tc.TC_APPROVED_DATE,
498 p_tc_submission_date =>p_rtrvd_tc.TC_SUBMISSION_DATE,
499 p_contingent_worker_id =>p_rtrvd_tc.CONTINGENT_WORKER_ID,
500 p_tc_comment_text =>p_rtrvd_tc.TC_COMMENT_TEXT,
501 p_line_rate_type =>p_rtrvd_tc.LINE_RATE_TYPE,
502 p_line_rate => p_rtrvd_tc.LINE_RATE,
503 p_action => p_action,
504 p_interface_transaction_id => 0 --this api is not being used currently.
505 );
506
507 exception
508 when others then
509 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
510 x_msg_data := ' Error : ' || SQLERRM;
511 end store_timecard_details_rec;
512
513
514 /* 8i compatibility issue. Commenting out.
515 procedure store_timecard_details_bulk (p_api_version number,
516 x_return_status out NOCOPY varchar2,
517 x_msg_data out NOCOPY varchar2,
518 p_rtrvd_tcs PO_RTRVD_TCS_REC,
519 p_action varchar2,
520 x_errs out NOCOPY PO_RTRVD_TCS_ERR_REC)
521 is
522 errors NUMBER;
523 err_index number;
524 dml_errors EXCEPTION;
525 PRAGMA exception_init(dml_errors, -24381);
526 begin
527
528 if (upper(p_action) = 'UPDATE') then
529 forall i in p_rtrvd_tcs.po_number.first..p_rtrvd_tcs.po_number.last
530 SAVE EXCEPTIONS
531 update PO_RETRIEVED_TIMECARDS
532 set tc_time_received = p_rtrvd_tcs.tc_time_received(i),
533 tc_comment_text = p_rtrvd_tcs.tc_comment_text(i),
534 line_rate_type = p_rtrvd_tcs.line_rate_type(i),
535 line_rate = p_rtrvd_tcs.line_rate(i)
536 where tc_detail_id = p_rtrvd_tcs.tc_detail_id(i) and
537 tc_day_id = p_rtrvd_tcs.tc_day_id(i) and
538 tc_id = p_rtrvd_tcs.tc_id(i);
539
540 elsif (upper(p_action) = 'DELETE') then
541 forall i in p_rtrvd_tcs.po_number.first..p_rtrvd_tcs.po_number.last
542 SAVE EXCEPTIONS
543 delete PO_RETRIEVED_TIMECARDS
544 where tc_detail_id = p_rtrvd_tcs.tc_detail_id(i) and
545 tc_day_id = p_rtrvd_tcs.tc_day_id(i) and
546 tc_id = p_rtrvd_tcs.tc_id(i);
547
548 else
549
550 forall i in p_rtrvd_tcs.po_number.first..p_rtrvd_tcs.po_number.last
551 SAVE EXCEPTIONS
552 insert into PO_RETRIEVED_TIMECARDS
553 (
554 PO_HEADER_ID,
555 PO_NUMBER,
556 PO_LINE_ID,
557 PO_LINE_NUMBER,
558 ORG_ID,
559 PO_APPROVED_DATE,
560 PO_CONTRACTOR_FULL_NAME,
561 PROJECT_ID,
562 PROJECT_NAME,
563 TASK_ID,
564 TASK_NAME,
565 TC_ID,
566 TC_DAY_ID,
567 TC_DETAIL_ID,
568 TC_SCOPE,
569 TC_UOM,
570 TC_START_DATE,
571 TC_END_DATE,
572 TC_ENTRY_DATE,
573 TC_TIME_RECEIVED,
574 TC_SUBMISSION_DATE,
575 TC_APPROVED_DATE,
576 TC_APPROVAL_STATUS,
577 CONTINGENT_WORKER_ID,
578 TC_COMMENT_TEXT,
579 LINE_RATE_TYPE,
580 LINE_RATE,
581 LINE_RATE_CURRENCY,
582 VENDOR_ID,
583 VENDOR_SITE_ID,
584 VENDOR_CONTACT_ID,
585 PO_CONTRACTOR_FIRST_NAME,
586 PO_CONTRACTOR_LAST_NAME
587 )
588 values
589 (
590 p_rtrvd_tcs.PO_HEADER_ID(i),
591 p_rtrvd_tcs.PO_NUMBER(i),
592 p_rtrvd_tcs.PO_LINE_ID(i),
593 p_rtrvd_tcs.PO_LINE_NUMBER(i),
594 p_rtrvd_tcs.ORG_ID(i),
595 p_rtrvd_tcs.po_CREATION_DATE(i),
596 p_rtrvd_tcs.CONTRACTOR_FULL_NAME(i),
597 p_rtrvd_tcs.PROJECT_ID(i),
598 p_rtrvd_tcs.PROJECT_NAME(i),
599 p_rtrvd_tcs.TASK_ID(i),
600 p_rtrvd_tcs.TASK_NUMBER(i),
601 p_rtrvd_tcs.TC_ID(i),
602 p_rtrvd_tcs.TC_DAY_ID(i),
603 p_rtrvd_tcs.TC_DETAIL_ID(i),
604 'DETAIL',
605 p_rtrvd_tcs.TC_UOM(i),
606 p_rtrvd_tcs.TC_START_DATE(i),
607 p_rtrvd_tcs.TC_END_DATE(i),
608 p_rtrvd_tcs.TC_ENTRY_DATE(i),
609 p_rtrvd_tcs.TC_TIME_RECEIVED(i),
610 p_rtrvd_tcs.TC_SUBMISSION_DATE(i),
611 p_rtrvd_tcs.TC_APPROVAL_DATE(i),
612 p_rtrvd_tcs.TC_APPROVAL_STATUS(i),
613 p_rtrvd_tcs.CONTINGENT_WORKER_ID(i),
614 p_rtrvd_tcs.TC_COMMENT_TEXT(i),
615 p_rtrvd_tcs.LINE_RATE_TYPE(i),
616 p_rtrvd_tcs.LINE_RATE(i),
617 p_rtrvd_tcs.PO_CURRENCY(i),
618 p_rtrvd_tcs.VENDOR_ID(i),
619 p_rtrvd_tcs.VENDOR_SITE_ID(i),
620 p_rtrvd_tcs.VENDOR_CONTACT_ID(i),
621 p_rtrvd_tcs.contractor_first_name(i),
622 p_rtrvd_tcs.contractor_last_name(i)
623 );
624 end if;
625
626 exception
627 when dml_errors then
628 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
629 x_msg_data := '';
630
631 x_errs := add_error (p_rtrvd_tcs);
632
633 when others then
634 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
635 x_msg_data := ' Error : ' || SQLERRM;
636
637 end store_timecard_details_bulk;
638
639 End of 8i compatibility issue.
640 */
641
642
643 end PO_STORE_TIMECARD_PKG_GRP;