DBA Data[Home] [Help]

PACKAGE BODY: APPS.PO_HXC_INTERFACE_PVT

Source


1 PACKAGE BODY PO_HXC_INTERFACE_PVT AS
2 /* $Header: POXVIHXB.pls 120.2.12020000.2 2013/02/10 19:05:50 vegajula ship $*/
3 
4 g_pkg_name       CONSTANT VARCHAR2(30) := 'PO_HXC_INTERFACE_PVT';
5 g_log_head       CONSTANT VARCHAR2(40) := 'po.plsql.' || g_pkg_name || '.';
6 g_debug_unexp    BOOLEAN := PO_DEBUG.is_debug_unexp_on;
7 g_debug_stmt     BOOLEAN := PO_DEBUG.is_debug_stmt_on;
8 
9 --<Bug 13828916 Start>
10 -------------------------------------------------------------------------------
11 --Start of Comments
12 --Name: check_if_line_rate_based
13 --Pre-reqs:
14 --  None.
15 --Modifies:
16 --  None.
17 --Locks:
18 --  None.
19 --Function:
20 --  Check whether the given standard PO header includes any least one rate
21 --  based line or the given line is rate based. Only rate based line can
22 --  be associated with timecard. There is no need to check OTL timecards
23 --  for non-rate-based line.
24 --Parameters:
25 --IN:
26 --p_field_name
27 --  Use g_field_PO_HEADER_ID or g_field_PO_LINE_ID.
28 --  From a PLD, use the functions field_po_header_id and field_po_line_id.
29 --p_field_value
30 --  Identifier of the header/line to check
31 --OUT:
32 --x_line_rate_based
33 --  TRUE if the given standard PO header or line meets conditions, FALSE otherwise.
34 --x_return_status
35 --  FND_API.G_RET_STS_SUCCESS if the API completed successfully.
36 --  FND_API.G_RET_STS_UNEXP_ERROR if an unexpected error occurred.
37 --End of Comments
38 -------------------------------------------------------------------------------
39 PROCEDURE check_if_line_rate_based (
40   p_api_version             IN NUMBER,
41   x_return_status           OUT NOCOPY VARCHAR2,
42   p_field_name              IN VARCHAR2,
43   p_field_value             IN VARCHAR2,
44   x_line_rate_based         OUT NOCOPY BOOLEAN
45 ) IS
46   l_api_name     CONSTANT VARCHAR2(30) := 'CHECK_IF_LINE_RATE_BASED';
47   l_log_head     CONSTANT VARCHAR2(100) := g_log_head || l_api_name;
48   l_api_version  CONSTANT NUMBER := 1.0;
49   l_progress     VARCHAR2(3) := '000';
50   c_RATE         CONSTANT VARCHAR2(30) := 'RATE';
51   l_exists_flag  NUMBER := 0;
52 BEGIN
53   IF g_debug_stmt THEN
54     PO_DEBUG.debug_begin(l_log_head);
55   END IF;
56 
57   x_return_status := FND_API.G_RET_STS_SUCCESS;
58 
59   -- Standard API initialization:
60   IF NOT FND_API.compatible_api_call (
61            p_current_version_number => l_api_version,
62            p_caller_version_number => p_api_version,
63            p_api_name => l_api_name,
64            p_pkg_name => g_pkg_name ) THEN
65     RAISE FND_API.g_exc_unexpected_error;
66   END IF;
67 
68   IF g_debug_stmt THEN
69     PO_DEBUG.debug_stmt(l_log_head, l_progress,
70                         'Calling API check_if_line_rate_based for'
71                         ||' field_name: '||p_field_name
72                         ||' field_value: '||p_field_value);
73   END IF;
74 
75   IF PO_HXC_INTERFACE_PVT.field_PO_HEADER_ID = p_field_name THEN
76     SELECT
77       sign(count(*))
78     INTO
79       l_exists_flag
80     FROM
81       PO_LINES_ALL LINE
82     WHERE
83         LINE.PO_HEADER_ID = p_field_value
84     AND LINE.ORDER_TYPE_LOOKUP_CODE = c_RATE;
85 
86   ELSIF PO_HXC_INTERFACE_PVT.field_PO_LINE_ID = p_field_name THEN
87     SELECT
88       sign(count(*))
89     INTO
90       l_exists_flag
91     FROM
92       PO_LINES_ALL LINE
93     WHERE
94         LINE.PO_LINE_ID = p_field_value
95     AND LINE.order_type_lookup_code = c_RATE;
96 
97   END IF;
98 
99   IF l_exists_flag = 1 THEN
100     x_line_rate_based := TRUE;
101   ELSE
102     x_line_rate_based := FALSE;
103   END IF;
104 
105   IF g_debug_stmt THEN
106     IF (x_line_rate_based) THEN
107       PO_DEBUG.debug_stmt(l_log_head, l_progress,
108                           'x_line_rate_based returned true.');
109     ELSE
110       PO_DEBUG.debug_stmt(l_log_head, l_progress,
111                           'x_line_rate_based returned false.');
112     END IF;
113   END IF;
114 
115 EXCEPTION
116   WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
117     x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
118     IF g_debug_unexp THEN
119       PO_DEBUG.debug_exc(l_log_head, l_progress);
120     END IF;
121   WHEN OTHERS THEN
122     x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
123     FND_MSG_PUB.add_exc_msg(g_pkg_name, l_api_name);
124     IF g_debug_unexp THEN
125       PO_DEBUG.debug_exc(l_log_head, l_progress);
126     END IF;
127 END check_if_line_rate_based;
128 --<Bug 13828916 End>
129 
130 -------------------------------------------------------------------------------
131 --Start of Comments
132 --Name: get_timecard_amount
133 --Pre-reqs:
134 --  None.
135 --Modifies:
136 --  None.
137 --Locks:
138 --  None.
139 --Function:
140 --  Calls an OTL API to obtain the total amount of submitted/approved
141 --  timecards associated with the given PO line.
142 --Parameters:
143 --IN:
144 --p_po_line_id
145 --  Identifier of the Standard PO line
146 --OUT:
147 --x_amount
148 --  Total timecard amount for the PO line; 0 if no contractor is associated
149 --  with the line.
150 --x_return_status
151 --  FND_API.G_RET_STS_SUCCESS if the API completed successfully.
152 --  FND_API.G_RET_STS_UNEXP_ERROR if an unexpected error occurred.
153 --End of Comments
154 -------------------------------------------------------------------------------
155 PROCEDURE get_timecard_amount (
156   p_api_version             IN NUMBER,
157   x_return_status           OUT NOCOPY VARCHAR2,
158   p_po_line_id              IN PO_LINES_ALL.po_line_id%TYPE,
159   x_amount                  OUT NOCOPY NUMBER
160 ) IS
161   l_api_name     CONSTANT VARCHAR2(30) := 'GET_TIMECARD_AMOUNT';
162   l_log_head     CONSTANT VARCHAR2(100) := g_log_head || l_api_name;
163   l_api_version  CONSTANT NUMBER := 1.0;
164   l_progress     VARCHAR2(3) := '000';
165   l_person_id    PER_ALL_PEOPLE_F.person_id%TYPE;
166 
167   --<Bug 14578229 Start>
168   l_line_rate_based  BOOLEAN := FALSE;
169   l_return_status    VARCHAR2(1);
170   --<Bug 14578229 End>
171 
172 BEGIN
173   IF g_debug_stmt THEN
174     PO_DEBUG.debug_begin(l_log_head);
175   END IF;
176 
177   x_return_status := FND_API.G_RET_STS_SUCCESS;
178 
179   -- Standard API initialization:
180   IF NOT FND_API.compatible_api_call (
181            p_current_version_number => l_api_version,
182            p_caller_version_number => p_api_version,
183            p_api_name => l_api_name,
184            p_pkg_name => g_pkg_name ) THEN
185     RAISE FND_API.g_exc_unexpected_error;
186   END IF;
187 
188   --<Bug 14578229 Start>
189   check_if_line_rate_based (p_api_version => p_api_version,
190                             x_return_status => l_return_status,
191 			    p_field_name => PO_HXC_INTERFACE_PVT.field_PO_LINE_ID(),
192 			    p_field_value => p_po_line_id,
193 			    x_line_rate_based => l_line_rate_based);
194   IF (l_return_status <> FND_API.G_RET_STS_SUCCESS) THEN
195       RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
196   END IF;
197 
198   IF (l_line_rate_based <> TRUE) THEN
199       x_amount := 0;
200   ELSE
201 
202 	  -- Retrieve the contractor associated with this Standard PO Temp Labor line.
203 	  l_person_id := HR_PO_INFO.get_person_id_for_po_line (
204 			   p_po_line_id => p_po_line_id );
205 
206 	  IF g_debug_stmt THEN
207 	    PO_DEBUG.debug_stmt(l_log_head, l_progress,
208 				'Calling OTL API get_mappingvalue_sum for'
209 				||' po_line_id: '||p_po_line_id
210 				||', person_id: '||l_person_id);
211 	  END IF;
212 
213 	  IF (l_person_id IS NULL) THEN
214 	    x_amount := 0;
215 	  ELSE -- l_person_id IS NOT NULL
216 	    -- Bug 3518004: Changed the package name from HXC_MAPPING_UTILITIES
217 	    --              to HXC_INTEGRATION_LAYER_V1_GRP.
218 	    x_amount := HXC_INTEGRATION_LAYER_V1_GRP.get_mappingvalue_sum (
219 				   p_bld_blk_info_type => g_bld_blk_info_type_PO,
220 				   p_field_name1 => g_field_AMOUNT,
221 				   p_field_name2 => g_field_PO_LINE_ID,
222 				   p_field_value2 => p_po_line_id,
223 				   p_status => g_status_SUBMITTED,
224 				   p_resource_id => l_person_id);
225 
226 	    IF g_debug_stmt THEN
227 	      PO_DEBUG.debug_stmt(l_log_head, l_progress,
228 				  'get_mappingvalue_sum returned: '||x_amount);
229 	    END IF;
230 	  END IF;
231 
232   END IF;
233   --<Bug 14578229 End>
234 
235 EXCEPTION
236   WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
237     x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
238     IF g_debug_unexp THEN
239       PO_DEBUG.debug_exc(l_log_head, l_progress);
240     END IF;
241   WHEN OTHERS THEN
242     x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
243     FND_MSG_PUB.add_exc_msg(g_pkg_name, l_api_name);
244     IF g_debug_unexp THEN
245       PO_DEBUG.debug_exc(l_log_head, l_progress);
246     END IF;
247 END get_timecard_amount;
248 
249 -------------------------------------------------------------------------------
250 --Start of Comments
251 --Name: check_timecard_exists
252 --Pre-reqs:
253 --  None.
254 --Modifies:
255 --  None.
256 --Locks:
257 --  None.
258 --Function:
259 --  Calls an OTL API to check whether there are any timecards associated with
260 --  the given standard PO header or line.
261 --Parameters:
262 --IN:
263 --p_field_name
264 --  Use g_field_PO_HEADER_ID or g_field_PO_LINE_ID.
265 --  From a PLD, use the functions field_po_header_id and field_po_line_id.
266 --p_field_value
267 --  Identifier of the header/line to check
268 --p_end_date
269 --  If not NULL, we will only check for timecards whose end dates are on
270 --  p_end_date or later.
271 --OUT:
272 --x_timecard_exists
273 --  TRUE if there are timecards matching the given conditions, FALSE otherwise.
274 --x_return_status
275 --  FND_API.G_RET_STS_SUCCESS if the API completed successfully.
276 --  FND_API.G_RET_STS_UNEXP_ERROR if an unexpected error occurred.
277 --End of Comments
278 -------------------------------------------------------------------------------
279 PROCEDURE check_timecard_exists (
280   p_api_version             IN NUMBER,
281   x_return_status           OUT NOCOPY VARCHAR2,
282   p_field_name              IN VARCHAR2,
283   p_field_value             IN VARCHAR2,
284   p_end_date                IN PO_LINES_ALL.expiration_date%TYPE,
285   x_timecard_exists         OUT NOCOPY BOOLEAN
286 ) IS
287   l_api_name     CONSTANT VARCHAR2(30) := 'CHECK_TIMECARD_EXISTS';
288   l_log_head     CONSTANT VARCHAR2(100) := g_log_head || l_api_name;
289   l_api_version  CONSTANT NUMBER := 1.0;
290   l_progress     VARCHAR2(3) := '000';
291 
292   --<Bug 13828916 Start>
293   l_line_rate_based  BOOLEAN := FALSE;
294   l_return_status    VARCHAR2(1);
295   --<Bug 13828916 End>
296 
297 BEGIN
298   IF g_debug_stmt THEN
299     PO_DEBUG.debug_begin(l_log_head);
300   END IF;
301 
302   x_return_status := FND_API.G_RET_STS_SUCCESS;
303 
304   -- Standard API initialization:
305   IF NOT FND_API.compatible_api_call (
306            p_current_version_number => l_api_version,
307            p_caller_version_number => p_api_version,
308            p_api_name => l_api_name,
309            p_pkg_name => g_pkg_name ) THEN
310     RAISE FND_API.g_exc_unexpected_error;
311   END IF;
312 
313   --<Bug 13828916 Start>
314   check_if_line_rate_based (p_api_version => p_api_version,
315                             x_return_status => l_return_status,
316                             p_field_name => p_field_name,
317                             p_field_value => p_field_value,
318                             x_line_rate_based => l_line_rate_based);
319   IF (l_return_status <> FND_API.G_RET_STS_SUCCESS) THEN
320     RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
321   END IF;
322 
323   IF (l_line_rate_based <> TRUE) THEN
324     x_timecard_exists := FALSE;
325     RETURN;
326   END IF;
327   --<Bug 13828916 End>
328 
329   IF g_debug_stmt THEN
330     PO_DEBUG.debug_stmt(l_log_head, l_progress,
331                         'Calling OTL API chk_mapping_exists for'
332                         ||' field_name: '||p_field_name
333                         ||' field_value: '||p_field_value
334                         ||', end_date: '||p_end_date);
335   END IF;
336 
337   -- Bug# 3569255: For the parameter 'p_retrieval_process_name', pass on the
338   -- value 'Purchasing Retrieval Process' instead of 'NONE'. Otherwise, the API
339   -- will return TRUE, even if all approved timecards have been interfaced into
340   -- PO. What we really want to check is, if there exist any submitted/approved
341   -- timecards that have NOT yet been interfaced into PO.
342 
343   -- Bug 3518004: Changed the package name from HXC_MAPPING_UTILITIES
344   --              to HXC_INTEGRATION_LAYER_V1_GRP.
345   x_timecard_exists := HXC_INTEGRATION_LAYER_V1_GRP.chk_mapping_exists (
346       p_bld_blk_info_type => g_bld_blk_info_type_PO,
347       p_field_name => p_field_name,
348       p_field_value => p_field_value,
349       p_scope => g_scope_DETAIL,
350       --p_retrieval_process_name => g_retrieval_process_NONE, -- Bug# 3569255
351       p_retrieval_process_name => RCV_HXT_GRP.purchasing_retrieval_process, --'Purchasing Retrieval Process'
352       p_status => g_status_SUBMITTED,
353       p_end_date => p_end_date
354     );
355 
356   IF g_debug_stmt THEN
357     IF (x_timecard_exists) THEN
358       PO_DEBUG.debug_stmt(l_log_head, l_progress,
359                           'chk_mapping_exists returned true.');
360     ELSE
361       PO_DEBUG.debug_stmt(l_log_head, l_progress,
362                           'chk_mapping_exists returned false.');
363     END IF;
364   END IF;
365 
366 EXCEPTION
367   WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
368     x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
369     IF g_debug_unexp THEN
370       PO_DEBUG.debug_exc(l_log_head, l_progress);
371     END IF;
372   WHEN OTHERS THEN
373     x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
374     FND_MSG_PUB.add_exc_msg(g_pkg_name, l_api_name);
375     IF g_debug_unexp THEN
376       PO_DEBUG.debug_exc(l_log_head, l_progress);
377     END IF;
378 END check_timecard_exists;
379 
380 -------------------------------------------------------------------------------
381 --Start of Comments
382 --Name: field_po_header_id
383 --Pre-reqs:
384 --  None.
385 --Modifies:
386 --  None.
387 --Locks:
388 --  None.
389 --Function:
390 --  Returns the value of the g_field_PO_HEADER_ID constant. This should be used
391 --  by PLD callers, which cannot access the constants directly.
392 --End of Comments
393 -------------------------------------------------------------------------------
394 FUNCTION field_po_header_id RETURN VARCHAR2 IS
395 BEGIN
396   RETURN g_field_PO_HEADER_ID;
397 END;
398 
399 -------------------------------------------------------------------------------
400 --Start of Comments
401 --Name: field_po_line_id
402 --Pre-reqs:
403 --  None.
404 --Modifies:
405 --  None.
406 --Locks:
407 --  None.
408 --Function:
409 --  Returns the value of the g_field_PO_LINE_ID constant. This should be used
410 --  by PLD callers, which cannot access the constants directly.
411 --End of Comments
412 -------------------------------------------------------------------------------
413 FUNCTION field_po_line_id RETURN VARCHAR2 IS
414 BEGIN
415   RETURN g_field_PO_LINE_ID;
416 END;
417 
418 -------------------------------------------------------------------------------
419 --Start of Comments
420 --Name: check_timecard_exists
421 --Pre-reqs:
422 --  None.
423 --Modifies:
424 --  None.
425 --Locks:
426 --  None.
427 --Function:
428 --  Execute a Cursor Query on HXC Building Block table to search for timecards
429 -- against Contingent Worker and Po Line Id.
430 --Parameters:
431 --IN:
432 --po_line_id
433 --  Identifier of the Standard PO line:
434 --p_person_id
435 --  Identifier of the Contingnet worker:
436 --OUT:
437 -- 'True'/'False'
438 --  Return whether the timecard exists or not.
439 --End of Comments
440 -------------------------------------------------------------------------------
441 
442 FUNCTION check_timecard_exists (
443                  p_person_id   IN   NUMBER,
444                  po_line_id    IN   NUMBER)
445 RETURN VARCHAR2
446 IS
447 
448    CURSOR csr_chk_tc_exists_ss
449     IS
450       SELECT 'Y'
451       FROM   hxc_Time_Building_Blocks htb,
452              hxc_Time_Attributes hta,
453              hxc_Time_Attribute_Usages htau
454       WHERE  hta.Time_Attribute_Id = htau.Time_Attribute_Id
455              AND htau.Time_Building_Block_Id = htb.Time_Building_Block_Id
456              AND htau.Time_Building_Block_ovn = htb.Object_Version_Number
457              AND htb.Date_To = hr_General.End_Of_Time
458              AND htb.Scope = 'DETAIL'
459              AND hta.Attribute_Category = 'PURCHASING'
460              AND hta.Attribute2 = To_Char(po_line_id)
461              AND htb.Resource_Id = p_person_id
462              AND ROWNUM = 1;
463 
464     l_dummy   VARCHAR2 (1);
465 BEGIN
466 
467 
468    OPEN csr_chk_tc_exists_ss;
469    FETCH csr_chk_tc_exists_ss INTO l_dummy;
470 
471    IF (csr_chk_tc_exists_ss%FOUND) THEN
472       CLOSE csr_chk_tc_exists_ss;
473       return 'true' ;
474    ELSE
475       return 'false' ;
476    END IF;
477 
478    CLOSE csr_chk_tc_exists_ss;
479 
480 END check_timecard_exists;
481 
482 -------------------------------------------------------------------------------
483 --Start of Comments
484 --Name: get_pa_timecard_amount
485 --Pre-reqs:
486 --  None.
487 --Modifies:
488 --  None.
489 --Locks:
490 --  None.
491 --Function:
492 --  Calls an OTL API to obtain the total amount of submitted/approved
493 --  timecards associated with the given PO line, project and task
494 --Parameters:
495 --IN:
496 --p_po_line_id
497 --  Identifier of the Standard PO line:
498 --p_project_id
499 --  Identifier of the project on the PO line:
500 --p_task_id
501 --  Identifier of the task on the Standard PO line
502 --OUT:
503 --x_amount
504 --  Total timecard amount for the PO line project /task; 0 if no contractor is associated
505 --  with the line.
506 --x_return_status
507 --  FND_API.G_RET_STS_SUCCESS if the API completed successfully.
508 --  FND_API.G_RET_STS_UNEXP_ERROR if an unexpected error occurred.
509 --End of Comments
510 -------------------------------------------------------------------------------
511 PROCEDURE get_pa_timecard_amount (
512   p_api_version             IN NUMBER,
513   x_return_status           OUT NOCOPY VARCHAR2,
514   p_po_line_id              IN PO_LINES_ALL.po_line_id%TYPE,
515   p_project_id              IN PO_DISTRIBUTIONS_ALL.project_id%TYPE ,
516   p_task_id                 IN PO_DISTRIBUTIONS_ALL.task_id%TYPE,
517   x_amount                  OUT NOCOPY NUMBER
518 ) IS
519   l_api_name     CONSTANT VARCHAR2(30) := 'GET_PA_TIMECARD_AMOUNT';
520   l_log_head     CONSTANT VARCHAR2(100) := g_log_head || l_api_name;
521   l_api_version  CONSTANT NUMBER := 1.0;
522   l_progress     VARCHAR2(3) := '000';
523   l_person_id    PER_ALL_PEOPLE_F.person_id%TYPE;
524 
525   --<Bug 14578229 Start>
526   l_line_rate_based  BOOLEAN := FALSE;
527   l_return_status    VARCHAR2(1);
528   --<Bug 14578229 End>
529 
530 BEGIN
531   IF g_debug_stmt THEN
532     PO_DEBUG.debug_begin(l_log_head);
533   END IF;
534 
535   x_return_status := FND_API.G_RET_STS_SUCCESS;
536 
537   -- Standard API initialization:
538   IF NOT FND_API.compatible_api_call (
539            p_current_version_number => l_api_version,
540            p_caller_version_number => p_api_version,
541            p_api_name => l_api_name,
542            p_pkg_name => g_pkg_name ) THEN
543     RAISE FND_API.g_exc_unexpected_error;
544   END IF;
545 
546   --<Bug 14578229 Start>
547   check_if_line_rate_based (p_api_version => p_api_version,
548                            x_return_status => l_return_status,
549 			   p_field_name => PO_HXC_INTERFACE_PVT.field_PO_LINE_ID(),
550 			   p_field_value => p_po_line_id,
551 			   x_line_rate_based => l_line_rate_based);
552 
553   IF (l_return_status <> FND_API.G_RET_STS_SUCCESS) THEN
554      RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
555   END IF;
556 
557   IF (l_line_rate_based <> TRUE) THEN
558      x_amount := 0;
559   ELSE
560 
561 	  -- Retrieve the contractor associated with this Standard PO Temp Labor line.
562 	  l_person_id := HR_PO_INFO.get_person_id_for_po_line (
563 			   p_po_line_id => p_po_line_id );
564 
565 	  IF g_debug_stmt THEN
566 	    PO_DEBUG.debug_stmt(l_log_head, l_progress,
567 				'Calling OTL API get_mappingvalue_sum for'
568 				||' po_line_id: '||p_po_line_id
569 				||' project_id: '||p_project_id
570 				||' task_id: '||p_task_id
571 				||', person_id: '||l_person_id);
572 	  END IF;
573 
574 	  IF (l_person_id IS NULL) THEN
575 	    x_amount := 0;
576 	  ELSE -- l_person_id IS NOT NULL
577 	    -- Bug 3518004: Changed the package name from HXC_MAPPING_UTILITIES
578 	    --              to HXC_INTEGRATION_LAYER_V1_GRP.
579 	    x_amount := HXC_INTEGRATION_LAYER_V2_GRP.get_mappingvalue_sum (
580 				   p_bld_blk_info_type => g_bld_blk_info_type_PO,
581 				   p_field_name1 => g_field_AMOUNT,
582 				   p_bld_blk_info_type2 => g_bld_blk_info_type_PO,
583 				   p_field_name2 => g_field_PO_LINE_ID,
584 				   p_field_value2 => p_po_line_id,
585 				   p_bld_blk_info_type3 => g_bld_blk_info_type_PA,
586 				   p_field_name3 => g_field_PROJECT_ID,
587 				   p_field_value3 => p_project_id,
588 				   p_bld_blk_info_type4 => g_bld_blk_info_type_PA,
589 				   p_field_name4 => g_field_TASK_ID,
590 				   p_field_value4 => p_task_id,
591 				   p_status => g_status_SUBMITTED,
592 				   p_resource_id => l_person_id);
593 
594 	    IF g_debug_stmt THEN
595 	      PO_DEBUG.debug_stmt(l_log_head, l_progress,
596 				  'get_mappingvalue_sum for projects returned: '||x_amount);
597 	    END IF;
598 	  END IF;
599   END IF;
600   --<Bug 14578229 End>
601 
602 EXCEPTION
603   WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
604     x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
605     IF g_debug_unexp THEN
606       PO_DEBUG.debug_exc(l_log_head, l_progress);
607     END IF;
608   WHEN OTHERS THEN
609     x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
610     FND_MSG_PUB.add_exc_msg(g_pkg_name, l_api_name);
611     IF g_debug_unexp THEN
612       PO_DEBUG.debug_exc(l_log_head, l_progress);
613     END IF;
614 END get_pa_timecard_amount;
615 
616 END PO_HXC_INTERFACE_PVT;