1: PACKAGE body PA_FP_GEN_AMOUNT_UTILS as
2: /* $Header: PAFPGAUB.pls 120.11 2007/02/06 09:56:17 dthakker ship $ */
3:
4: l_module_name VARCHAR2(100) := 'pa.plsql.pa_fp_gen_amount_utils';
5: Invalid_Arg_Exc EXCEPTION;
1: PACKAGE body PA_FP_GEN_AMOUNT_UTILS as
2: /* $Header: PAFPGAUB.pls 120.11 2007/02/06 09:56:17 dthakker ship $ */
3:
4: l_module_name VARCHAR2(100) := 'pa.plsql.pa_fp_gen_amount_utils';
5: Invalid_Arg_Exc EXCEPTION;
6:
7: P_PA_DEBUG_MODE varchar2(1) := NVL(FND_PROFILE.value('PA_DEBUG_MODE'), 'N');
8:
15: X_MSG_DATA OUT NOCOPY VARCHAR2)
16:
17: IS
18:
19: l_module_name VARCHAR2(200) := 'pa.plsql.pa_fp_gen_amount_utils.get_plan_version_dtls';
20:
21: l_debug_mode VARCHAR2(30);
22: l_msg_count NUMBER := 0;
23: l_data VARCHAR2(2000);
262: WHEN OTHERS THEN
263: x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
264: x_msg_data := SUBSTR(SQLERRM,1,240);
265: FND_MSG_PUB.add_exc_msg
266: ( p_pkg_name => 'PA_FP_GEN_AMOUNT_UTILS'
267: ,p_procedure_name => 'GET_PLAN_VERSION_DTLS');
268: IF P_PA_DEBUG_MODE = 'Y' THEN
269: pa_fp_gen_amount_utils.fp_debug
270: (p_msg => 'Unexpected Error'||substr(sqlerrm, 1, 240),
265: FND_MSG_PUB.add_exc_msg
266: ( p_pkg_name => 'PA_FP_GEN_AMOUNT_UTILS'
267: ,p_procedure_name => 'GET_PLAN_VERSION_DTLS');
268: IF P_PA_DEBUG_MODE = 'Y' THEN
269: pa_fp_gen_amount_utils.fp_debug
270: (p_msg => 'Unexpected Error'||substr(sqlerrm, 1, 240),
271: p_module_name => l_module_name,
272: p_log_level => 5);
273: PA_DEBUG.Reset_Curr_Function;
283: X_MSG_DATA OUT NOCOPY VARCHAR2,
284: X_RETURN_STATUS OUT NOCOPY VARCHAR2)
285: IS
286: l_flag varchar2(1):='N';
287: l_module_name VARCHAR2(200) := 'pa.plsql.pa_fp_gen_amount_utils.chk_cmt_txn_currency';
288: BEGIN
289:
290: X_MSG_COUNT := 0;
291: X_RETURN_STATUS := FND_API.G_RET_STS_SUCCESS;
330: --dbms_output.put_line(SUBSTR(SQLERRM,1,240));
331: x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
332: x_msg_data := SUBSTR(SQLERRM,1,240);
333: FND_MSG_PUB.add_exc_msg
334: ( p_pkg_name => 'PA_FP_GEN_AMOUNT_UTILS'
335: ,p_procedure_name => 'CHK_CMT_TXN_CURRENCY');
336: IF p_pa_debug_mode = 'Y' THEN
337: PA_DEBUG.Reset_Curr_Function;
338: END IF;
357: x_msg_count OUT NOCOPY NUMBER,
358: x_msg_data OUT NOCOPY VARCHAR2)
359: AS
360:
361: l_module_name VARCHAR2(200) := 'pa.plsql.pa_fp_gen_amount_utils.Get_Curr_Original_Version_Info';
362:
363: --Start of variables used for debugging
364: l_msg_count NUMBER :=0;
365: l_data VARCHAR2(2000);
396:
397: IF l_debug_mode = 'Y' THEN
398: pa_debug.g_err_stage:='Validating input parameters';
399:
400: pa_fp_gen_amount_utils.fp_debug
401: (p_msg => pa_debug.g_err_stage,
402: p_module_name => l_module_name,
403: p_log_level => 5);
404: END IF;
408: THEN
409:
410: IF l_debug_mode = 'Y' THEN
411: pa_debug.g_err_stage:='Project_id = '||p_project_id;
412: pa_fp_gen_amount_utils.fp_debug
413: (p_msg => pa_debug.g_err_stage,
414: p_module_name => l_module_name,
415: p_log_level => 5);
416:
414: p_module_name => l_module_name,
415: p_log_level => 5);
416:
417: pa_debug.g_err_stage:='Fin_plan_type_id = '||p_fin_plan_type_id;
418: pa_fp_gen_amount_utils.fp_debug
419: (p_msg => pa_debug.g_err_stage,
420: p_module_name => l_module_name,
421: p_log_level => 5);
422: END IF;
431: --Fetch fin plan preference code
432:
433: IF l_debug_mode = 'Y' THEN
434: pa_debug.g_err_stage:='Fetching fin plan preference code ';
435: pa_fp_gen_amount_utils.fp_debug
436: (p_msg => pa_debug.g_err_stage,
437: p_module_name => l_module_name,
438: p_log_level => 5);
439: END IF;
452: --In this case version_type should be passed and so raise error
453:
454: IF l_debug_mode = 'Y' THEN
455: pa_debug.g_err_stage:='Version_Type = '||p_version_type;
456: pa_fp_gen_amount_utils.fp_debug
457: (p_msg => pa_debug.g_err_stage,
458: p_module_name => l_module_name,
459: p_log_level => 5);
460: END IF;
467: END IF;
468:
469: IF l_debug_mode = 'Y' THEN
470: pa_debug.g_err_stage:='Parameter validation complete ';
471: pa_fp_gen_amount_utils.fp_debug
472: (p_msg => pa_debug.g_err_stage,
473: p_module_name => l_module_name,
474: p_log_level => 5);
475: END IF;
502: BEGIN
503:
504: IF l_debug_mode = 'Y' THEN
505: pa_debug.g_err_stage:='Fetching current original Version';
506: pa_fp_gen_amount_utils.fp_debug
507: (p_msg => pa_debug.g_err_stage,
508: p_module_name => l_module_name,
509: p_log_level => 5);
510: END IF;
534: --Fetch fp options id using plan version id
535:
536: IF l_debug_mode = 'Y' THEN
537: pa_debug.g_err_stage:='Fetching fp option id';
538: pa_fp_gen_amount_utils.fp_debug
539: (p_msg => pa_debug.g_err_stage,
540: p_module_name => l_module_name,
541: p_log_level => 5);
542: END IF;
560: x_fp_options_id := l_fp_options_id;
561:
562: IF l_debug_mode = 'Y' THEN
563: pa_debug.g_err_stage:='Exiting Get_Curr_Original_Version_Info';
564: pa_fp_gen_amount_utils.fp_debug
565: (p_msg => pa_debug.g_err_stage,
566: p_module_name => l_module_name,
567: p_log_level => 5);
568: PA_DEBUG.Reset_Curr_Function;
590: x_return_status := FND_API.G_RET_STS_ERROR;
591:
592: IF l_debug_mode = 'Y' THEN
593: pa_debug.g_err_stage:='Invalid Arguments Passed';
594: pa_fp_gen_amount_utils.fp_debug
595: (p_msg => pa_debug.g_err_stage,
596: p_module_name => l_module_name,
597: p_log_level => 5);
598:
605: x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
606: x_msg_count := 1;
607: x_msg_data := SQLERRM;
608:
609: FND_MSG_PUB.add_exc_msg( p_pkg_name => 'PA_FP_GEN_AMOUNT_UTILS'
610: ,p_procedure_name => 'Get_Curr_Original_Version_Info');
611:
612: IF l_debug_mode = 'Y' THEN
613: pa_fp_gen_amount_utils.fp_debug
609: FND_MSG_PUB.add_exc_msg( p_pkg_name => 'PA_FP_GEN_AMOUNT_UTILS'
610: ,p_procedure_name => 'Get_Curr_Original_Version_Info');
611:
612: IF l_debug_mode = 'Y' THEN
613: pa_fp_gen_amount_utils.fp_debug
614: (p_msg => 'Unexpected Error'||substr(sqlerrm, 1, 240),
615: p_module_name => l_module_name,
616: p_log_level => 5);
617: PA_DEBUG.Reset_Curr_Function;
629: X_MSG_COUNT OUT NOCOPY NUMBER,
630: X_MSG_DATA OUT NOCOPY VARCHAR2,
631: X_RETURN_STATUS OUT NOCOPY VARCHAR2) IS
632:
633: l_fp_cols_rec PA_FP_GEN_AMOUNT_UTILS.FP_COLS;
634: l_module_name VARCHAR2(200) := 'pa.plsql.pa_fp_gen_amount_utils.validate_plan_version';
635:
636: BEGIN
637:
630: X_MSG_DATA OUT NOCOPY VARCHAR2,
631: X_RETURN_STATUS OUT NOCOPY VARCHAR2) IS
632:
633: l_fp_cols_rec PA_FP_GEN_AMOUNT_UTILS.FP_COLS;
634: l_module_name VARCHAR2(200) := 'pa.plsql.pa_fp_gen_amount_utils.validate_plan_version';
635:
636: BEGIN
637:
638: X_MSG_COUNT := 0;
644: END IF;
645:
646: --Calling the Util API
647: IF p_pa_debug_mode = 'Y' THEN
648: pa_fp_gen_amount_utils.fp_debug
649: (p_msg => 'Before calling
650: PA_FP_GEN_AMOUNT_UTILS.GET_PLAN_VERSION_DTLS',
651: p_module_name => l_module_name,
652: p_log_level => 5);
646: --Calling the Util API
647: IF p_pa_debug_mode = 'Y' THEN
648: pa_fp_gen_amount_utils.fp_debug
649: (p_msg => 'Before calling
650: PA_FP_GEN_AMOUNT_UTILS.GET_PLAN_VERSION_DTLS',
651: p_module_name => l_module_name,
652: p_log_level => 5);
653: END IF;
654: PA_FP_GEN_AMOUNT_UTILS.GET_PLAN_VERSION_DTLS
650: PA_FP_GEN_AMOUNT_UTILS.GET_PLAN_VERSION_DTLS',
651: p_module_name => l_module_name,
652: p_log_level => 5);
653: END IF;
654: PA_FP_GEN_AMOUNT_UTILS.GET_PLAN_VERSION_DTLS
655: (P_PROJECT_ID => P_PROJECT_ID,
656: P_BUDGET_VERSION_ID => P_SRC_BDGT_VERSION_ID,
657: X_FP_COLS_REC => l_fp_cols_rec,
658: X_RETURN_STATUS => X_RETURN_STATUS,
661: IF X_RETURN_STATUS <> FND_API.G_RET_STS_SUCCESS THEN
662: RAISE PA_FP_CONSTANTS_PKG.Invalid_Arg_Exc;
663: END IF;
664: IF p_pa_debug_mode = 'Y' THEN
665: pa_fp_gen_amount_utils.fp_debug
666: (p_msg => 'Status after calling
667: PA_FP_GEN_AMOUNT_UTILS.GET_PLAN_VERSION_DTLS: '
668: ||x_return_status,
669: p_module_name => l_module_name,
663: END IF;
664: IF p_pa_debug_mode = 'Y' THEN
665: pa_fp_gen_amount_utils.fp_debug
666: (p_msg => 'Status after calling
667: PA_FP_GEN_AMOUNT_UTILS.GET_PLAN_VERSION_DTLS: '
668: ||x_return_status,
669: p_module_name => l_module_name,
670: p_log_level => 5);
671: END IF;
687: WHEN OTHERS THEN
688: x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
689: x_msg_data := SUBSTR(SQLERRM,1,240);
690: FND_MSG_PUB.add_exc_msg
691: ( p_pkg_name => 'PA_FP_GEN_AMOUNT_UTILS'
692: ,p_procedure_name => 'VALIDATE_PLAN_VERSION');
693: IF p_pa_debug_mode = 'Y' THEN
694: PA_DEBUG.Reset_Curr_Function;
695: END IF;
720: X_RETURN_STATUS OUT NOCOPY VARCHAR2,
721: X_MSG_COUNT OUT NOCOPY NUMBER,
722: X_MSG_DATA OUT NOCOPY VARCHAR2) IS
723:
724: l_module_name VARCHAR2(200) := 'pa.plsql.pa_fp_gen_amount_utils.get_values_for_planning_rate';
725:
726: CURSOR get_resource_asn_csr (c_resource_assignment_id IN NUMBER) IS
727: SELECT project_id
728: ,task_id
1095: END IF;
1096:
1097: --Calling the Get_planning_Rates api
1098: IF p_pa_debug_mode = 'Y' THEN
1099: pa_fp_gen_amount_utils.fp_debug
1100: (p_called_mode => p_called_mode,
1101: p_msg => 'Before calling
1102: pa_plan_revenue.Get_planning_Rates',
1103: p_module_name => l_module_name,
1196: IF X_RETURN_STATUS <> FND_API.G_RET_STS_SUCCESS THEN
1197: RAISE PA_FP_CONSTANTS_PKG.Invalid_Arg_Exc;
1198: END IF;
1199: IF p_pa_debug_mode = 'Y' THEN
1200: pa_fp_gen_amount_utils.fp_debug
1201: (p_called_mode => p_called_mode,
1202: p_msg => 'Status after calling
1203: pa_plan_revenue.Get_planning_Rates'
1204: ||x_return_status,
1232: ROLLBACK;
1233:
1234: x_return_status := FND_API.G_RET_STS_ERROR;
1235: IF P_PA_DEBUG_MODE = 'Y' THEN
1236: pa_fp_gen_amount_utils.fp_debug
1237: (p_msg => 'Invalid Arguments Passed',
1238: p_module_name => l_module_name,
1239: p_log_level => 5);
1240: PA_DEBUG.Reset_Curr_Function;
1246: --dbms_output.put_line(SUBSTR(SQLERRM,1,240));
1247: x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1248: x_msg_data := SUBSTR(SQLERRM,1,240);
1249: FND_MSG_PUB.add_exc_msg
1250: ( p_pkg_name => 'PA_FP_GEN_AMOUNT_UTILS'
1251: ,p_procedure_name => 'GET_VALUES_FOR_PLANNING_RATE');
1252: IF p_pa_debug_mode = 'Y' THEN
1253: PA_DEBUG.Reset_Curr_Function;
1254: END IF;
1444: **/
1445:
1446:
1447: PROCEDURE VALIDATE_SUPPORT_CASES
1448: (P_FP_COLS_REC_TGT IN PA_FP_GEN_AMOUNT_UTILS.FP_COLS,
1449: P_CALLING_CONTEXT IN VARCHAR2,
1450: P_CHECK_SRC_ERRORS_FLAG IN VARCHAR2,
1451: X_WARNING_MESSAGE OUT NOCOPY VARCHAR2,
1452: X_RETURN_STATUS OUT NOCOPY VARCHAR2,
1452: X_RETURN_STATUS OUT NOCOPY VARCHAR2,
1453: X_MSG_COUNT OUT NOCOPY NUMBER,
1454: X_MSG_DATA OUT NOCOPY VARCHAR2)
1455: IS
1456: l_module_name VARCHAR2(200) := 'pa.plsql.PA_FP_GEN_AMOUNT_UTILS.VALIDATE_SUPPORT_CASES';
1457:
1458: l_wp_track_cost_flag VARCHAR2(1);
1459: l_rev_gen_method VARCHAR2(1);
1460: l_plan_class_code PA_FIN_PLAN_TYPES_B.PLAN_CLASS_CODE%TYPE;
1461:
1462: l_source_wp_ver_id PA_BUDGET_VERSIONS.BUDGET_VERSION_ID%TYPE;
1463: l_stru_sharing_code PA_PROJECTS_ALL.STRUCTURE_SHARING_CODE%TYPE;
1464: l_source_fp_ver_id PA_BUDGET_VERSIONS.BUDGET_VERSION_ID%TYPE;
1465: l_fp_cols_rec_source PA_FP_GEN_AMOUNT_UTILS.FP_COLS;
1466:
1467: l_gen_src_code PA_PROJ_FP_OPTIONS.GEN_COST_SRC_CODE%TYPE;
1468: l_count NUMBER;
1469:
1466:
1467: l_gen_src_code PA_PROJ_FP_OPTIONS.GEN_COST_SRC_CODE%TYPE;
1468: l_count NUMBER;
1469:
1470: l_fp_cols_rec_tgt PA_FP_GEN_AMOUNT_UTILS.FP_COLS;
1471: x_fp_cols_rec_tgt PA_FP_GEN_AMOUNT_UTILS.FP_COLS;
1472:
1473: -- This flag tracks if we still need to perform defaulting
1474: -- logic for the source version id. This flag is only relevant
1467: l_gen_src_code PA_PROJ_FP_OPTIONS.GEN_COST_SRC_CODE%TYPE;
1468: l_count NUMBER;
1469:
1470: l_fp_cols_rec_tgt PA_FP_GEN_AMOUNT_UTILS.FP_COLS;
1471: x_fp_cols_rec_tgt PA_FP_GEN_AMOUNT_UTILS.FP_COLS;
1472:
1473: -- This flag tracks if we still need to perform defaulting
1474: -- logic for the source version id. This flag is only relevant
1475: -- if the Target is a Budget.
1541: l_default_bdgt_src_ver_flag = 'Y' AND
1542: l_fp_cols_rec_tgt.X_GEN_SRC_WP_VERSION_ID IS NULL THEN
1543:
1544: IF p_pa_debug_mode = 'Y' THEN
1545: pa_fp_gen_amount_utils.fp_debug
1546: (p_called_mode => p_calling_context,
1547: p_msg => 'Before calling
1548: PA_FP_GEN_AMOUNT_UTILS.DEFAULT_BDGT_SRC_VER',
1549: p_module_name => l_module_name,
1544: IF p_pa_debug_mode = 'Y' THEN
1545: pa_fp_gen_amount_utils.fp_debug
1546: (p_called_mode => p_calling_context,
1547: p_msg => 'Before calling
1548: PA_FP_GEN_AMOUNT_UTILS.DEFAULT_BDGT_SRC_VER',
1549: p_module_name => l_module_name,
1550: p_log_level => 5);
1551: END IF;
1552: /* The version defaulting API passes updated Target version details
1550: p_log_level => 5);
1551: END IF;
1552: /* The version defaulting API passes updated Target version details
1553: * record back as an OUT parameter. */
1554: PA_FP_GEN_AMOUNT_UTILS.DEFAULT_BDGT_SRC_VER
1555: ( P_FP_COLS_REC_TGT => l_fp_cols_rec_tgt,
1556: P_CALLING_CONTEXT => p_calling_context,
1557: X_FP_COLS_REC_TGT => x_fp_cols_rec_tgt,
1558: X_RETURN_STATUS => X_RETURN_STATUS,
1558: X_RETURN_STATUS => X_RETURN_STATUS,
1559: X_MSG_COUNT => X_MSG_COUNT,
1560: X_MSG_DATA => X_MSG_DATA );
1561: IF p_pa_debug_mode = 'Y' THEN
1562: pa_fp_gen_amount_utils.fp_debug
1563: (p_called_mode => p_calling_context,
1564: p_msg => 'Status after calling
1565: PA_FP_GEN_AMOUNT_UTILS.DEFAULT_BDGT_SRC_VER: '
1566: ||x_return_status,
1561: IF p_pa_debug_mode = 'Y' THEN
1562: pa_fp_gen_amount_utils.fp_debug
1563: (p_called_mode => p_calling_context,
1564: p_msg => 'Status after calling
1565: PA_FP_GEN_AMOUNT_UTILS.DEFAULT_BDGT_SRC_VER: '
1566: ||x_return_status,
1567: p_module_name => l_module_name,
1568: p_log_level => 5);
1569: END IF;
1583: l_source_wp_ver_id IS NOT NULL AND
1584: l_stru_sharing_code = 'SHARE_FULL' THEN
1585: /* Get version details for Source Workplan */
1586: IF p_pa_debug_mode = 'Y' THEN
1587: pa_fp_gen_amount_utils.fp_debug
1588: (p_called_mode => p_calling_context,
1589: p_msg => 'Before calling
1590: PA_FP_GEN_AMOUNT_UTILS.GET_PLAN_VERSION_DTLS',
1591: p_module_name => l_module_name,
1586: IF p_pa_debug_mode = 'Y' THEN
1587: pa_fp_gen_amount_utils.fp_debug
1588: (p_called_mode => p_calling_context,
1589: p_msg => 'Before calling
1590: PA_FP_GEN_AMOUNT_UTILS.GET_PLAN_VERSION_DTLS',
1591: p_module_name => l_module_name,
1592: p_log_level => 5);
1593: END IF;
1594: PA_FP_GEN_AMOUNT_UTILS.GET_PLAN_VERSION_DTLS
1590: PA_FP_GEN_AMOUNT_UTILS.GET_PLAN_VERSION_DTLS',
1591: p_module_name => l_module_name,
1592: p_log_level => 5);
1593: END IF;
1594: PA_FP_GEN_AMOUNT_UTILS.GET_PLAN_VERSION_DTLS
1595: ( P_PROJECT_ID => l_fp_cols_rec_tgt.X_PROJECT_ID,
1596: P_BUDGET_VERSION_ID => l_source_wp_ver_id,
1597: X_FP_COLS_REC => l_fp_cols_rec_source,
1598: X_RETURN_STATUS => X_RETURN_STATUS,
1598: X_RETURN_STATUS => X_RETURN_STATUS,
1599: X_MSG_COUNT => X_MSG_COUNT,
1600: X_MSG_DATA => X_MSG_DATA );
1601: IF p_pa_debug_mode = 'Y' THEN
1602: pa_fp_gen_amount_utils.fp_debug
1603: (p_called_mode => p_calling_context,
1604: p_msg => 'Status after calling
1605: PA_FP_GEN_AMOUNT_UTILS.GET_PLAN_VERSION_DTLS: '
1606: ||x_return_status,
1601: IF p_pa_debug_mode = 'Y' THEN
1602: pa_fp_gen_amount_utils.fp_debug
1603: (p_called_mode => p_calling_context,
1604: p_msg => 'Status after calling
1605: PA_FP_GEN_AMOUNT_UTILS.GET_PLAN_VERSION_DTLS: '
1606: ||x_return_status,
1607: p_module_name => l_module_name,
1608: p_log_level => 5);
1609: END IF;
1717: (l_gen_src_code = 'TASK_LEVEL_SEL' AND l_count > 0) THEN
1718:
1719: /* Get version details for Source Workplan */
1720: IF p_pa_debug_mode = 'Y' THEN
1721: pa_fp_gen_amount_utils.fp_debug
1722: (p_called_mode => p_calling_context,
1723: p_msg => 'Before calling
1724: PA_FP_GEN_AMOUNT_UTILS.GET_PLAN_VERSION_DTLS',
1725: p_module_name => l_module_name,
1720: IF p_pa_debug_mode = 'Y' THEN
1721: pa_fp_gen_amount_utils.fp_debug
1722: (p_called_mode => p_calling_context,
1723: p_msg => 'Before calling
1724: PA_FP_GEN_AMOUNT_UTILS.GET_PLAN_VERSION_DTLS',
1725: p_module_name => l_module_name,
1726: p_log_level => 5);
1727: END IF;
1728: PA_FP_GEN_AMOUNT_UTILS.GET_PLAN_VERSION_DTLS
1724: PA_FP_GEN_AMOUNT_UTILS.GET_PLAN_VERSION_DTLS',
1725: p_module_name => l_module_name,
1726: p_log_level => 5);
1727: END IF;
1728: PA_FP_GEN_AMOUNT_UTILS.GET_PLAN_VERSION_DTLS
1729: (P_PROJECT_ID => l_fp_cols_rec_tgt.X_PROJECT_ID,
1730: P_BUDGET_VERSION_ID => l_source_wp_ver_id,
1731: X_FP_COLS_REC => l_fp_cols_rec_source,
1732: X_RETURN_STATUS => X_RETURN_STATUS,
1732: X_RETURN_STATUS => X_RETURN_STATUS,
1733: X_MSG_COUNT => X_MSG_COUNT,
1734: X_MSG_DATA => X_MSG_DATA);
1735: IF p_pa_debug_mode = 'Y' THEN
1736: pa_fp_gen_amount_utils.fp_debug
1737: (p_called_mode => p_calling_context,
1738: p_msg => 'Status after calling
1739: PA_FP_GEN_AMOUNT_UTILS.GET_PLAN_VERSION_DTLS: '
1740: ||x_return_status,
1735: IF p_pa_debug_mode = 'Y' THEN
1736: pa_fp_gen_amount_utils.fp_debug
1737: (p_called_mode => p_calling_context,
1738: p_msg => 'Status after calling
1739: PA_FP_GEN_AMOUNT_UTILS.GET_PLAN_VERSION_DTLS: '
1740: ||x_return_status,
1741: p_module_name => l_module_name,
1742: p_log_level => 5);
1743: END IF;
1770: (l_gen_src_code = 'TASK_LEVEL_SEL' AND l_count > 0) THEN
1771:
1772: -- Get version details for Source Financial Plan
1773: IF p_pa_debug_mode = 'Y' THEN
1774: pa_fp_gen_amount_utils.fp_debug
1775: (p_called_mode => p_calling_context,
1776: p_msg => 'Before calling
1777: PA_FP_GEN_AMOUNT_UTILS.GET_PLAN_VERSION_DTLS',
1778: p_module_name => l_module_name,
1773: IF p_pa_debug_mode = 'Y' THEN
1774: pa_fp_gen_amount_utils.fp_debug
1775: (p_called_mode => p_calling_context,
1776: p_msg => 'Before calling
1777: PA_FP_GEN_AMOUNT_UTILS.GET_PLAN_VERSION_DTLS',
1778: p_module_name => l_module_name,
1779: p_log_level => 5);
1780: END IF;
1781: PA_FP_GEN_AMOUNT_UTILS.GET_PLAN_VERSION_DTLS
1777: PA_FP_GEN_AMOUNT_UTILS.GET_PLAN_VERSION_DTLS',
1778: p_module_name => l_module_name,
1779: p_log_level => 5);
1780: END IF;
1781: PA_FP_GEN_AMOUNT_UTILS.GET_PLAN_VERSION_DTLS
1782: (P_PROJECT_ID => l_fp_cols_rec_tgt.X_PROJECT_ID,
1783: P_BUDGET_VERSION_ID => l_source_fp_ver_id,
1784: X_FP_COLS_REC => l_fp_cols_rec_source,
1785: X_RETURN_STATUS => X_RETURN_STATUS,
1785: X_RETURN_STATUS => X_RETURN_STATUS,
1786: X_MSG_COUNT => X_MSG_COUNT,
1787: X_MSG_DATA => X_MSG_DATA);
1788: IF p_pa_debug_mode = 'Y' THEN
1789: pa_fp_gen_amount_utils.fp_debug
1790: (p_called_mode => p_calling_context,
1791: p_msg => 'Status after calling
1792: PA_FP_GEN_AMOUNT_UTILS.GET_PLAN_VERSION_DTLS: '
1793: ||x_return_status,
1788: IF p_pa_debug_mode = 'Y' THEN
1789: pa_fp_gen_amount_utils.fp_debug
1790: (p_called_mode => p_calling_context,
1791: p_msg => 'Status after calling
1792: PA_FP_GEN_AMOUNT_UTILS.GET_PLAN_VERSION_DTLS: '
1793: ||x_return_status,
1794: p_module_name => l_module_name,
1795: p_log_level => 5);
1796: END IF;
1825: l_fp_cols_rec_tgt.X_GEN_SRC_WP_VERSION_ID IS NULL AND
1826: l_fp_cols_rec_tgt.X_GEN_SRC_PLAN_VERSION_ID IS NULL THEN
1827:
1828: IF p_pa_debug_mode = 'Y' THEN
1829: pa_fp_gen_amount_utils.fp_debug
1830: (p_called_mode => p_calling_context,
1831: p_msg => 'Before calling
1832: PA_FP_GEN_AMOUNT_UTILS.DEFAULT_BDGT_SRC_VER',
1833: p_module_name => l_module_name,
1828: IF p_pa_debug_mode = 'Y' THEN
1829: pa_fp_gen_amount_utils.fp_debug
1830: (p_called_mode => p_calling_context,
1831: p_msg => 'Before calling
1832: PA_FP_GEN_AMOUNT_UTILS.DEFAULT_BDGT_SRC_VER',
1833: p_module_name => l_module_name,
1834: p_log_level => 5);
1835: END IF;
1836: /* The version defaulting API passes updated Target version details
1834: p_log_level => 5);
1835: END IF;
1836: /* The version defaulting API passes updated Target version details
1837: * record back as an OUT parameter. */
1838: PA_FP_GEN_AMOUNT_UTILS.DEFAULT_BDGT_SRC_VER
1839: ( P_FP_COLS_REC_TGT => l_fp_cols_rec_tgt,
1840: P_CALLING_CONTEXT => p_calling_context,
1841: X_FP_COLS_REC_TGT => x_fp_cols_rec_tgt,
1842: X_RETURN_STATUS => X_RETURN_STATUS,
1842: X_RETURN_STATUS => X_RETURN_STATUS,
1843: X_MSG_COUNT => X_MSG_COUNT,
1844: X_MSG_DATA => X_MSG_DATA );
1845: IF p_pa_debug_mode = 'Y' THEN
1846: pa_fp_gen_amount_utils.fp_debug
1847: (p_called_mode => p_calling_context,
1848: p_msg => 'Status after calling
1849: PA_FP_GEN_AMOUNT_UTILS.DEFAULT_BDGT_SRC_VER: '
1850: ||x_return_status,
1845: IF p_pa_debug_mode = 'Y' THEN
1846: pa_fp_gen_amount_utils.fp_debug
1847: (p_called_mode => p_calling_context,
1848: p_msg => 'Status after calling
1849: PA_FP_GEN_AMOUNT_UTILS.DEFAULT_BDGT_SRC_VER: '
1850: ||x_return_status,
1851: p_module_name => l_module_name,
1852: p_log_level => 5);
1853: END IF;
2099: AND l_fp_cols_rec_tgt.X_VERSION_TYPE IN ('REVENUE','ALL')) THEN
2100:
2101: -- Get version details for Source Financial Plan
2102: IF p_pa_debug_mode = 'Y' THEN
2103: pa_fp_gen_amount_utils.fp_debug
2104: (p_called_mode => p_calling_context,
2105: p_msg => 'Before calling
2106: PA_FP_GEN_AMOUNT_UTILS.GET_PLAN_VERSION_DTLS',
2107: p_module_name => l_module_name,
2102: IF p_pa_debug_mode = 'Y' THEN
2103: pa_fp_gen_amount_utils.fp_debug
2104: (p_called_mode => p_calling_context,
2105: p_msg => 'Before calling
2106: PA_FP_GEN_AMOUNT_UTILS.GET_PLAN_VERSION_DTLS',
2107: p_module_name => l_module_name,
2108: p_log_level => 5);
2109: END IF;
2110: PA_FP_GEN_AMOUNT_UTILS.GET_PLAN_VERSION_DTLS
2106: PA_FP_GEN_AMOUNT_UTILS.GET_PLAN_VERSION_DTLS',
2107: p_module_name => l_module_name,
2108: p_log_level => 5);
2109: END IF;
2110: PA_FP_GEN_AMOUNT_UTILS.GET_PLAN_VERSION_DTLS
2111: (P_PROJECT_ID => l_fp_cols_rec_tgt.X_PROJECT_ID,
2112: P_BUDGET_VERSION_ID => l_fp_cols_rec_tgt.X_GEN_SRC_PLAN_VERSION_ID,
2113: X_FP_COLS_REC => l_fp_cols_rec_source,
2114: X_RETURN_STATUS => X_RETURN_STATUS,
2114: X_RETURN_STATUS => X_RETURN_STATUS,
2115: X_MSG_COUNT => X_MSG_COUNT,
2116: X_MSG_DATA => X_MSG_DATA);
2117: IF p_pa_debug_mode = 'Y' THEN
2118: pa_fp_gen_amount_utils.fp_debug
2119: (p_called_mode => p_calling_context,
2120: p_msg => 'Status after calling
2121: PA_FP_GEN_AMOUNT_UTILS.GET_PLAN_VERSION_DTLS: '
2122: ||x_return_status,
2117: IF p_pa_debug_mode = 'Y' THEN
2118: pa_fp_gen_amount_utils.fp_debug
2119: (p_called_mode => p_calling_context,
2120: p_msg => 'Status after calling
2121: PA_FP_GEN_AMOUNT_UTILS.GET_PLAN_VERSION_DTLS: '
2122: ||x_return_status,
2123: p_module_name => l_module_name,
2124: p_log_level => 5);
2125: END IF;
2154: -- 2) This API pushed multiple messages onto the stack.
2155: -- In both cases, we should only have 1 message on the stack.
2156: IF l_msg_count <> 1 THEN
2157: IF P_PA_DEBUG_MODE = 'Y' THEN
2158: pa_fp_gen_amount_utils.fp_debug
2159: ( p_called_mode => p_calling_context,
2160: p_msg => 'Source data contains errors, but the number of ' ||
2161: 'messages on the error stack is not equal to 1.',
2162: p_module_name => l_module_name,
2205:
2206: x_return_status := FND_API.G_RET_STS_ERROR;
2207:
2208: IF P_PA_DEBUG_MODE = 'Y' THEN
2209: pa_fp_gen_amount_utils.fp_debug
2210: ( p_called_mode => p_calling_context,
2211: p_msg => 'Invalid Arguments Passed',
2212: p_module_name => l_module_name,
2213: p_log_level => 5 );
2221: x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
2222: x_msg_count := 1;
2223: x_msg_data := substr(sqlerrm,1,240);
2224: FND_MSG_PUB.add_exc_msg
2225: ( p_pkg_name => 'PA_FP_GEN_AMOUNT_UTILS',
2226: p_procedure_name => 'VALIDATE_SUPPORT_CASES',
2227: p_error_text => substr(sqlerrm,1,240));
2228:
2229: IF P_PA_DEBUG_MODE = 'Y' THEN
2226: p_procedure_name => 'VALIDATE_SUPPORT_CASES',
2227: p_error_text => substr(sqlerrm,1,240));
2228:
2229: IF P_PA_DEBUG_MODE = 'Y' THEN
2230: pa_fp_gen_amount_utils.fp_debug
2231: (p_called_mode => p_calling_context,
2232: p_msg => 'Unexpected Error'||substr(sqlerrm,1,240),
2233: p_module_name => l_module_name,
2234: p_log_level => 5);
2257: * This is the target version's details after the defaulting logic.
2258: * If no defaulting occurs, this will be the same as P_FP_COLS_REC_TGT.
2259: */
2260: PROCEDURE DEFAULT_BDGT_SRC_VER
2261: (P_FP_COLS_REC_TGT IN PA_FP_GEN_AMOUNT_UTILS.FP_COLS,
2262: P_CALLING_CONTEXT IN VARCHAR2,
2263: X_FP_COLS_REC_TGT OUT NOCOPY PA_FP_GEN_AMOUNT_UTILS.FP_COLS,
2264: X_RETURN_STATUS OUT NOCOPY VARCHAR2,
2265: X_MSG_COUNT OUT NOCOPY NUMBER,
2259: */
2260: PROCEDURE DEFAULT_BDGT_SRC_VER
2261: (P_FP_COLS_REC_TGT IN PA_FP_GEN_AMOUNT_UTILS.FP_COLS,
2262: P_CALLING_CONTEXT IN VARCHAR2,
2263: X_FP_COLS_REC_TGT OUT NOCOPY PA_FP_GEN_AMOUNT_UTILS.FP_COLS,
2264: X_RETURN_STATUS OUT NOCOPY VARCHAR2,
2265: X_MSG_COUNT OUT NOCOPY NUMBER,
2266: X_MSG_DATA OUT NOCOPY VARCHAR2)
2267: IS
2264: X_RETURN_STATUS OUT NOCOPY VARCHAR2,
2265: X_MSG_COUNT OUT NOCOPY NUMBER,
2266: X_MSG_DATA OUT NOCOPY VARCHAR2)
2267: IS
2268: l_module_name VARCHAR2(200) := 'pa.plsql.PA_FP_GEN_AMOUNT_UTILS.DEFAULT_BDGT_SRC_VER';
2269:
2270: l_plan_class_code PA_FIN_PLAN_TYPES_B.PLAN_CLASS_CODE%TYPE;
2271: l_gen_src_code PA_PROJ_FP_OPTIONS.GEN_COST_SRC_CODE%TYPE;
2272:
2433: OR l_gen_src_plan_ver_code = 'CURRENT_APPROVED'
2434: OR l_gen_src_plan_ver_code = 'ORIGINAL_APPROVED' THEN
2435: /*Get the current baselined or original baselined version*/
2436: IF P_PA_DEBUG_MODE = 'Y' THEN
2437: pa_fp_gen_amount_utils.fp_debug
2438: ( p_called_mode => p_calling_context,
2439: p_msg => 'Before calling
2440: pa_fp_gen_amount_utils.Get_Curr_Original_Version_Info',
2441: p_module_name => l_module_name,
2436: IF P_PA_DEBUG_MODE = 'Y' THEN
2437: pa_fp_gen_amount_utils.fp_debug
2438: ( p_called_mode => p_calling_context,
2439: p_msg => 'Before calling
2440: pa_fp_gen_amount_utils.Get_Curr_Original_Version_Info',
2441: p_module_name => l_module_name,
2442: p_log_level => 5 );
2443: END IF;
2444: pa_fp_gen_amount_utils.Get_Curr_Original_Version_Info(
2440: pa_fp_gen_amount_utils.Get_Curr_Original_Version_Info',
2441: p_module_name => l_module_name,
2442: p_log_level => 5 );
2443: END IF;
2444: pa_fp_gen_amount_utils.Get_Curr_Original_Version_Info(
2445: p_project_id => P_FP_COLS_REC_TGT.X_PROJECT_ID,
2446: p_fin_plan_type_id => P_FP_COLS_REC_TGT.X_GEN_SRC_PLAN_TYPE_ID,
2447: p_version_type => 'COST',
2448: p_status_code => l_gen_src_plan_ver_code,
2451: x_return_status => x_return_status,
2452: x_msg_count => x_msg_count,
2453: x_msg_data => x_msg_data );
2454: IF P_PA_DEBUG_MODE = 'Y' THEN
2455: pa_fp_gen_amount_utils.fp_debug
2456: ( p_called_mode => p_calling_context,
2457: p_msg => 'Status after calling
2458: pa_fp_gen_amount_utils.Get_Curr_Original_Version_Info'
2459: ||x_return_status,
2454: IF P_PA_DEBUG_MODE = 'Y' THEN
2455: pa_fp_gen_amount_utils.fp_debug
2456: ( p_called_mode => p_calling_context,
2457: p_msg => 'Status after calling
2458: pa_fp_gen_amount_utils.Get_Curr_Original_Version_Info'
2459: ||x_return_status,
2460: p_module_name => l_module_name,
2461: p_log_level => 5 );
2462: END IF;
2466:
2467: ELSIF l_gen_src_plan_ver_code = 'CURRENT_WORKING' THEN
2468: /*Get the current working version*/
2469: IF P_PA_DEBUG_MODE = 'Y' THEN
2470: pa_fp_gen_amount_utils.fp_debug
2471: ( p_called_mode => p_calling_context,
2472: p_msg => 'Before calling
2473: pa_fin_plan_utils.Get_Curr_Working_Version_Info',
2474: p_module_name => l_module_name,
2483: x_return_status => x_return_status,
2484: x_msg_count => x_msg_count,
2485: x_msg_data => x_msg_data );
2486: IF P_PA_DEBUG_MODE = 'Y' THEN
2487: pa_fp_gen_amount_utils.fp_debug
2488: ( p_called_mode => p_calling_context,
2489: p_msg => 'Status after calling
2490: pa_fin_plan_utils.Get_Curr_Working_Version_Info'
2491: ||x_return_status,
2529: /* Get updated Target version details */
2530: -- Currently, l_update_details_flag is always 'Y', but may change in the future.
2531: IF l_update_details_flag = 'Y' THEN
2532: IF p_pa_debug_mode = 'Y' THEN
2533: pa_fp_gen_amount_utils.fp_debug
2534: (p_called_mode => p_calling_context,
2535: p_msg => 'Before calling
2536: PA_FP_GEN_AMOUNT_UTILS.GET_PLAN_VERSION_DTLS',
2537: p_module_name => l_module_name,
2532: IF p_pa_debug_mode = 'Y' THEN
2533: pa_fp_gen_amount_utils.fp_debug
2534: (p_called_mode => p_calling_context,
2535: p_msg => 'Before calling
2536: PA_FP_GEN_AMOUNT_UTILS.GET_PLAN_VERSION_DTLS',
2537: p_module_name => l_module_name,
2538: p_log_level => 5);
2539: END IF;
2540: PA_FP_GEN_AMOUNT_UTILS.GET_PLAN_VERSION_DTLS
2536: PA_FP_GEN_AMOUNT_UTILS.GET_PLAN_VERSION_DTLS',
2537: p_module_name => l_module_name,
2538: p_log_level => 5);
2539: END IF;
2540: PA_FP_GEN_AMOUNT_UTILS.GET_PLAN_VERSION_DTLS
2541: (P_PROJECT_ID => P_FP_COLS_REC_TGT.X_PROJECT_ID,
2542: P_BUDGET_VERSION_ID => P_FP_COLS_REC_TGT.X_BUDGET_VERSION_ID,
2543: X_FP_COLS_REC => X_FP_COLS_REC_TGT,
2544: X_RETURN_STATUS => X_RETURN_STATUS,
2544: X_RETURN_STATUS => X_RETURN_STATUS,
2545: X_MSG_COUNT => X_MSG_COUNT,
2546: X_MSG_DATA => X_MSG_DATA);
2547: IF p_pa_debug_mode = 'Y' THEN
2548: pa_fp_gen_amount_utils.fp_debug
2549: (p_called_mode => p_calling_context,
2550: p_msg => 'Status after calling
2551: PA_FP_GEN_AMOUNT_UTILS.GET_PLAN_VERSION_DTLS: '
2552: ||x_return_status,
2547: IF p_pa_debug_mode = 'Y' THEN
2548: pa_fp_gen_amount_utils.fp_debug
2549: (p_called_mode => p_calling_context,
2550: p_msg => 'Status after calling
2551: PA_FP_GEN_AMOUNT_UTILS.GET_PLAN_VERSION_DTLS: '
2552: ||x_return_status,
2553: p_module_name => l_module_name,
2554: p_log_level => 5);
2555: END IF;
2582:
2583: x_return_status := FND_API.G_RET_STS_ERROR;
2584:
2585: IF P_PA_DEBUG_MODE = 'Y' THEN
2586: pa_fp_gen_amount_utils.fp_debug
2587: ( p_called_mode => p_calling_context,
2588: p_msg => 'Invalid Arguments Passed',
2589: p_module_name => l_module_name,
2590: p_log_level => 5 );
2598: x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
2599: x_msg_count := 1;
2600: x_msg_data := substr(sqlerrm,1,240);
2601: FND_MSG_PUB.add_exc_msg
2602: ( p_pkg_name => 'PA_FP_GEN_AMOUNT_UTILS',
2603: p_procedure_name => 'DEFAULT_BDGT_SRC_VER',
2604: p_error_text => substr(sqlerrm,1,240));
2605:
2606: IF P_PA_DEBUG_MODE = 'Y' THEN
2603: p_procedure_name => 'DEFAULT_BDGT_SRC_VER',
2604: p_error_text => substr(sqlerrm,1,240));
2605:
2606: IF P_PA_DEBUG_MODE = 'Y' THEN
2607: pa_fp_gen_amount_utils.fp_debug
2608: (p_called_mode => p_calling_context,
2609: p_msg => 'Unexpected Error'||substr(sqlerrm,1,240),
2610: p_module_name => l_module_name,
2611: p_log_level => 5);
2615: END DEFAULT_BDGT_SRC_VER;
2616:
2617:
2618:
2619: END PA_FP_GEN_AMOUNT_UTILS;