8: -- AND END DATE FOR PRECEDING AND SUCCEEDING PERIODS
9: -- This API needs to be separate because it may be called by
10: -- other APIs or WEB ADI
11:
12: P_PA_DEBUG_MODE varchar2(1) := NVL(FND_PROFILE.value('PA_DEBUG_MODE'), 'N');
13:
14: PROCEDURE Get_Period_Info(
15: p_bucketing_period_code IN VARCHAR2,
16: p_st_dt_4_st_pd IN DATE,
41: l_transaction_currency_code VARCHAR2(30);
42: l_debug_mode VARCHAR2(30);
43:
44: BEGIN
45: fnd_profile.get('PA_DEBUG_MODE',l_debug_mode);
46: l_debug_mode := NVL(l_debug_mode, 'Y');
47: PA_DEBUG.Set_Curr_Function( p_function => 'Get_Period_Info',
48: p_debug_mode => l_debug_mode );
49: IF P_PA_DEBUG_MODE = 'Y' THEN
43:
44: BEGIN
45: fnd_profile.get('PA_DEBUG_MODE',l_debug_mode);
46: l_debug_mode := NVL(l_debug_mode, 'Y');
47: PA_DEBUG.Set_Curr_Function( p_function => 'Get_Period_Info',
48: p_debug_mode => l_debug_mode );
49: IF P_PA_DEBUG_MODE = 'Y' THEN
50: PA_DEBUG.g_err_stage := 'Entering Get_Period_Info and selecting ' ||
51: 'min dates from budget lines';
45: fnd_profile.get('PA_DEBUG_MODE',l_debug_mode);
46: l_debug_mode := NVL(l_debug_mode, 'Y');
47: PA_DEBUG.Set_Curr_Function( p_function => 'Get_Period_Info',
48: p_debug_mode => l_debug_mode );
49: IF P_PA_DEBUG_MODE = 'Y' THEN
50: PA_DEBUG.g_err_stage := 'Entering Get_Period_Info and selecting ' ||
51: 'min dates from budget lines';
52: PA_DEBUG.Log_Message(p_message => PA_DEBUG.g_err_stage);
53: END IF;
46: l_debug_mode := NVL(l_debug_mode, 'Y');
47: PA_DEBUG.Set_Curr_Function( p_function => 'Get_Period_Info',
48: p_debug_mode => l_debug_mode );
49: IF P_PA_DEBUG_MODE = 'Y' THEN
50: PA_DEBUG.g_err_stage := 'Entering Get_Period_Info and selecting ' ||
51: 'min dates from budget lines';
52: PA_DEBUG.Log_Message(p_message => PA_DEBUG.g_err_stage);
53: END IF;
54: --Assigning values to variables
48: p_debug_mode => l_debug_mode );
49: IF P_PA_DEBUG_MODE = 'Y' THEN
50: PA_DEBUG.g_err_stage := 'Entering Get_Period_Info and selecting ' ||
51: 'min dates from budget lines';
52: PA_DEBUG.Log_Message(p_message => PA_DEBUG.g_err_stage);
53: END IF;
54: --Assigning values to variables
55: l_max_pa_bdgt_st_dt := NULL;
56: l_min_pa_bdgt_st_dt := NULL;
107: ADJUSTMENT_PERIOD_FLAG = 'N'
108: ORDER BY G.Start_Date desc
109: ) inr1
110: WHERE Rownum < 2;
111: PA_DEBUG.Reset_Curr_Function;
112: RETURN;
113: EXCEPTION
114: WHEN NO_DATA_FOUND THEN
115: FND_MSG_PUB.add_exc_msg
113: EXCEPTION
114: WHEN NO_DATA_FOUND THEN
115: FND_MSG_PUB.add_exc_msg
116: ( p_pkg_name => 'PA_PLAN_MATRIX.Get_Period_Info'
117: ,p_procedure_name => PA_DEBUG.G_Err_Stack);
118: IF P_PA_DEBUG_MODE = 'Y' THEN
119: PA_DEBUG.g_err_stage := 'No data found while trying to retrieve ' ||
120: 'start date, end date and period name from GL_periods for PD-GL';
121: PA_DEBUG.Log_Message(p_message => PA_DEBUG.g_err_stage);
114: WHEN NO_DATA_FOUND THEN
115: FND_MSG_PUB.add_exc_msg
116: ( p_pkg_name => 'PA_PLAN_MATRIX.Get_Period_Info'
117: ,p_procedure_name => PA_DEBUG.G_Err_Stack);
118: IF P_PA_DEBUG_MODE = 'Y' THEN
119: PA_DEBUG.g_err_stage := 'No data found while trying to retrieve ' ||
120: 'start date, end date and period name from GL_periods for PD-GL';
121: PA_DEBUG.Log_Message(p_message => PA_DEBUG.g_err_stage);
122: END IF;
115: FND_MSG_PUB.add_exc_msg
116: ( p_pkg_name => 'PA_PLAN_MATRIX.Get_Period_Info'
117: ,p_procedure_name => PA_DEBUG.G_Err_Stack);
118: IF P_PA_DEBUG_MODE = 'Y' THEN
119: PA_DEBUG.g_err_stage := 'No data found while trying to retrieve ' ||
120: 'start date, end date and period name from GL_periods for PD-GL';
121: PA_DEBUG.Log_Message(p_message => PA_DEBUG.g_err_stage);
122: END IF;
123: x_return_status := FND_API.G_RET_STS_ERROR;
117: ,p_procedure_name => PA_DEBUG.G_Err_Stack);
118: IF P_PA_DEBUG_MODE = 'Y' THEN
119: PA_DEBUG.g_err_stage := 'No data found while trying to retrieve ' ||
120: 'start date, end date and period name from GL_periods for PD-GL';
121: PA_DEBUG.Log_Message(p_message => PA_DEBUG.g_err_stage);
122: END IF;
123: x_return_status := FND_API.G_RET_STS_ERROR;
124: x_msg_data := 'PA_FP_INVALID_PROJECT_ID';
125: PA_DEBUG.Reset_Curr_Function;
121: PA_DEBUG.Log_Message(p_message => PA_DEBUG.g_err_stage);
122: END IF;
123: x_return_status := FND_API.G_RET_STS_ERROR;
124: x_msg_data := 'PA_FP_INVALID_PROJECT_ID';
125: PA_DEBUG.Reset_Curr_Function;
126: RAISE;
127: END;
128: ELSIF ( l_plan_period_type = 'PA') THEN
129: BEGIN
151: ADJUSTMENT_PERIOD_FLAG = 'N'
152: ORDER BY G.Start_Date desc
153: ) inr1
154: WHERE Rownum < 2;
155: PA_DEBUG.Reset_Curr_Function;
156: RETURN;
157: EXCEPTION
158: WHEN NO_DATA_FOUND THEN
159: FND_MSG_PUB.add_exc_msg
157: EXCEPTION
158: WHEN NO_DATA_FOUND THEN
159: FND_MSG_PUB.add_exc_msg
160: ( p_pkg_name => 'PA_PLAN_MATRIX.Get_Period_Info'
161: ,p_procedure_name => PA_DEBUG.G_Err_Stack);
162: IF P_PA_DEBUG_MODE = 'Y' THEN
163: PA_DEBUG.g_err_stage := 'No data found while trying to retrieve ' ||
164: 'start date, end date and period name from GL_periods for PD-PA';
165: PA_DEBUG.Log_Message(p_message => PA_DEBUG.g_err_stage);
158: WHEN NO_DATA_FOUND THEN
159: FND_MSG_PUB.add_exc_msg
160: ( p_pkg_name => 'PA_PLAN_MATRIX.Get_Period_Info'
161: ,p_procedure_name => PA_DEBUG.G_Err_Stack);
162: IF P_PA_DEBUG_MODE = 'Y' THEN
163: PA_DEBUG.g_err_stage := 'No data found while trying to retrieve ' ||
164: 'start date, end date and period name from GL_periods for PD-PA';
165: PA_DEBUG.Log_Message(p_message => PA_DEBUG.g_err_stage);
166: END IF;
159: FND_MSG_PUB.add_exc_msg
160: ( p_pkg_name => 'PA_PLAN_MATRIX.Get_Period_Info'
161: ,p_procedure_name => PA_DEBUG.G_Err_Stack);
162: IF P_PA_DEBUG_MODE = 'Y' THEN
163: PA_DEBUG.g_err_stage := 'No data found while trying to retrieve ' ||
164: 'start date, end date and period name from GL_periods for PD-PA';
165: PA_DEBUG.Log_Message(p_message => PA_DEBUG.g_err_stage);
166: END IF;
167: x_return_status := FND_API.G_RET_STS_ERROR;
161: ,p_procedure_name => PA_DEBUG.G_Err_Stack);
162: IF P_PA_DEBUG_MODE = 'Y' THEN
163: PA_DEBUG.g_err_stage := 'No data found while trying to retrieve ' ||
164: 'start date, end date and period name from GL_periods for PD-PA';
165: PA_DEBUG.Log_Message(p_message => PA_DEBUG.g_err_stage);
166: END IF;
167: x_return_status := FND_API.G_RET_STS_ERROR;
168: x_msg_data := 'PA_FP_INVALID_PROJECT_ID';
169: PA_DEBUG.Reset_Curr_Function;
165: PA_DEBUG.Log_Message(p_message => PA_DEBUG.g_err_stage);
166: END IF;
167: x_return_status := FND_API.G_RET_STS_ERROR;
168: x_msg_data := 'PA_FP_INVALID_PROJECT_ID';
169: PA_DEBUG.Reset_Curr_Function;
170: RAISE;
171: END;
172: END IF;
173: ELSIF (l_bucketing_period_code = 'SD') THEN
193: G.period_type = sob.accounted_period_type AND
194: ADJUSTMENT_PERIOD_FLAG = 'N' AND
195: Rownum < 2
196: ORDER BY G.Start_Date;
197: PA_DEBUG.Reset_Curr_Function;
198: RETURN;
199: EXCEPTION
200: WHEN NO_DATA_FOUND THEN
201: FND_MSG_PUB.add_exc_msg
199: EXCEPTION
200: WHEN NO_DATA_FOUND THEN
201: FND_MSG_PUB.add_exc_msg
202: ( p_pkg_name => 'PA_PLAN_MATRIX.Get_Period_Info'
203: ,p_procedure_name => PA_DEBUG.G_Err_Stack);
204: IF P_PA_DEBUG_MODE = 'Y' THEN
205: PA_DEBUG.g_err_stage := 'No data found while trying to retrieve ' ||
206: 'start date, end date and period name from GL_periods for SD-GL';
207: PA_DEBUG.Log_Message(p_message => PA_DEBUG.g_err_stage);
200: WHEN NO_DATA_FOUND THEN
201: FND_MSG_PUB.add_exc_msg
202: ( p_pkg_name => 'PA_PLAN_MATRIX.Get_Period_Info'
203: ,p_procedure_name => PA_DEBUG.G_Err_Stack);
204: IF P_PA_DEBUG_MODE = 'Y' THEN
205: PA_DEBUG.g_err_stage := 'No data found while trying to retrieve ' ||
206: 'start date, end date and period name from GL_periods for SD-GL';
207: PA_DEBUG.Log_Message(p_message => PA_DEBUG.g_err_stage);
208: END IF;
201: FND_MSG_PUB.add_exc_msg
202: ( p_pkg_name => 'PA_PLAN_MATRIX.Get_Period_Info'
203: ,p_procedure_name => PA_DEBUG.G_Err_Stack);
204: IF P_PA_DEBUG_MODE = 'Y' THEN
205: PA_DEBUG.g_err_stage := 'No data found while trying to retrieve ' ||
206: 'start date, end date and period name from GL_periods for SD-GL';
207: PA_DEBUG.Log_Message(p_message => PA_DEBUG.g_err_stage);
208: END IF;
209: x_return_status := FND_API.G_RET_STS_ERROR;
203: ,p_procedure_name => PA_DEBUG.G_Err_Stack);
204: IF P_PA_DEBUG_MODE = 'Y' THEN
205: PA_DEBUG.g_err_stage := 'No data found while trying to retrieve ' ||
206: 'start date, end date and period name from GL_periods for SD-GL';
207: PA_DEBUG.Log_Message(p_message => PA_DEBUG.g_err_stage);
208: END IF;
209: x_return_status := FND_API.G_RET_STS_ERROR;
210: x_msg_data := 'PA_FP_INVALID_PROJECT_ID';
211: PA_DEBUG.Reset_Curr_Function;
207: PA_DEBUG.Log_Message(p_message => PA_DEBUG.g_err_stage);
208: END IF;
209: x_return_status := FND_API.G_RET_STS_ERROR;
210: x_msg_data := 'PA_FP_INVALID_PROJECT_ID';
211: PA_DEBUG.Reset_Curr_Function;
212: RAISE;
213: END;
214: ELSIF ( l_plan_period_type = 'PA') THEN
215: BEGIN
231: G.period_type = imp.pa_period_type AND
232: ADJUSTMENT_PERIOD_FLAG = 'N' AND
233: Rownum < 2
234: ORDER BY G.Start_Date;
235: PA_DEBUG.Reset_Curr_Function;
236: RETURN;
237: EXCEPTION
238: WHEN NO_DATA_FOUND THEN
239: FND_MSG_PUB.add_exc_msg
237: EXCEPTION
238: WHEN NO_DATA_FOUND THEN
239: FND_MSG_PUB.add_exc_msg
240: ( p_pkg_name => 'PA_PLAN_MATRIX.Get_Period_Info'
241: ,p_procedure_name => PA_DEBUG.G_Err_Stack);
242: IF P_PA_DEBUG_MODE = 'Y' THEN
243: PA_DEBUG.g_err_stage := 'No data found while trying to retrieve ' ||
244: 'start date, end date and period name from GL_periods for SD-PA';
245: PA_DEBUG.Log_Message(p_message => PA_DEBUG.g_err_stage);
238: WHEN NO_DATA_FOUND THEN
239: FND_MSG_PUB.add_exc_msg
240: ( p_pkg_name => 'PA_PLAN_MATRIX.Get_Period_Info'
241: ,p_procedure_name => PA_DEBUG.G_Err_Stack);
242: IF P_PA_DEBUG_MODE = 'Y' THEN
243: PA_DEBUG.g_err_stage := 'No data found while trying to retrieve ' ||
244: 'start date, end date and period name from GL_periods for SD-PA';
245: PA_DEBUG.Log_Message(p_message => PA_DEBUG.g_err_stage);
246: END IF;
239: FND_MSG_PUB.add_exc_msg
240: ( p_pkg_name => 'PA_PLAN_MATRIX.Get_Period_Info'
241: ,p_procedure_name => PA_DEBUG.G_Err_Stack);
242: IF P_PA_DEBUG_MODE = 'Y' THEN
243: PA_DEBUG.g_err_stage := 'No data found while trying to retrieve ' ||
244: 'start date, end date and period name from GL_periods for SD-PA';
245: PA_DEBUG.Log_Message(p_message => PA_DEBUG.g_err_stage);
246: END IF;
247: x_return_status := FND_API.G_RET_STS_ERROR;
241: ,p_procedure_name => PA_DEBUG.G_Err_Stack);
242: IF P_PA_DEBUG_MODE = 'Y' THEN
243: PA_DEBUG.g_err_stage := 'No data found while trying to retrieve ' ||
244: 'start date, end date and period name from GL_periods for SD-PA';
245: PA_DEBUG.Log_Message(p_message => PA_DEBUG.g_err_stage);
246: END IF;
247: x_return_status := FND_API.G_RET_STS_ERROR;
248: x_msg_data := 'PA_FP_INVALID_PROJECT_ID';
249: PA_DEBUG.Reset_Curr_Function;
245: PA_DEBUG.Log_Message(p_message => PA_DEBUG.g_err_stage);
246: END IF;
247: x_return_status := FND_API.G_RET_STS_ERROR;
248: x_msg_data := 'PA_FP_INVALID_PROJECT_ID';
249: PA_DEBUG.Reset_Curr_Function;
250: RAISE;
251: END;
252: END IF;
253: END IF;
254: EXCEPTION
255: WHEN OTHERS THEN
256: FND_MSG_PUB.add_exc_msg
257: ( p_pkg_name => 'PA_PLAN_MATRIX.Get_Period_Info'
258: ,p_procedure_name => PA_DEBUG.G_Err_Stack);
259: IF P_PA_DEBUG_MODE = 'Y' THEN
260: PA_DEBUG.g_err_stage := 'Unexpected error in Get_Period_Info ';
261: PA_DEBUG.Log_Message(p_message => PA_DEBUG.g_err_stage);
262: END IF;
255: WHEN OTHERS THEN
256: FND_MSG_PUB.add_exc_msg
257: ( p_pkg_name => 'PA_PLAN_MATRIX.Get_Period_Info'
258: ,p_procedure_name => PA_DEBUG.G_Err_Stack);
259: IF P_PA_DEBUG_MODE = 'Y' THEN
260: PA_DEBUG.g_err_stage := 'Unexpected error in Get_Period_Info ';
261: PA_DEBUG.Log_Message(p_message => PA_DEBUG.g_err_stage);
262: END IF;
263: x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
256: FND_MSG_PUB.add_exc_msg
257: ( p_pkg_name => 'PA_PLAN_MATRIX.Get_Period_Info'
258: ,p_procedure_name => PA_DEBUG.G_Err_Stack);
259: IF P_PA_DEBUG_MODE = 'Y' THEN
260: PA_DEBUG.g_err_stage := 'Unexpected error in Get_Period_Info ';
261: PA_DEBUG.Log_Message(p_message => PA_DEBUG.g_err_stage);
262: END IF;
263: x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
264: PA_DEBUG.Reset_Curr_Function;
257: ( p_pkg_name => 'PA_PLAN_MATRIX.Get_Period_Info'
258: ,p_procedure_name => PA_DEBUG.G_Err_Stack);
259: IF P_PA_DEBUG_MODE = 'Y' THEN
260: PA_DEBUG.g_err_stage := 'Unexpected error in Get_Period_Info ';
261: PA_DEBUG.Log_Message(p_message => PA_DEBUG.g_err_stage);
262: END IF;
263: x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
264: PA_DEBUG.Reset_Curr_Function;
265: RAISE;
260: PA_DEBUG.g_err_stage := 'Unexpected error in Get_Period_Info ';
261: PA_DEBUG.Log_Message(p_message => PA_DEBUG.g_err_stage);
262: END IF;
263: x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
264: PA_DEBUG.Reset_Curr_Function;
265: RAISE;
266: END Get_Period_Info;
267:
268:
342: SELECT DISTINCT Resource_Assignment_Id,
343: Source_Txn_Currency_Code
344: FROM Pa_Fin_Plan_Lines_Tmp;
345: BEGIN
346: fnd_profile.get('PA_DEBUG_MODE',l_debug_mode);
347: l_debug_mode := NVL(l_debug_mode, 'Y');
348: PA_DEBUG.Set_Curr_Function( p_function => 'Populate_Budget_Lines',
349: p_debug_mode => l_debug_mode );
350:
344: FROM Pa_Fin_Plan_Lines_Tmp;
345: BEGIN
346: fnd_profile.get('PA_DEBUG_MODE',l_debug_mode);
347: l_debug_mode := NVL(l_debug_mode, 'Y');
348: PA_DEBUG.Set_Curr_Function( p_function => 'Populate_Budget_Lines',
349: p_debug_mode => l_debug_mode );
350:
351: IF P_PA_DEBUG_MODE = 'Y' THEN
352: PA_DEBUG.g_err_stage := 'Entering Populate_Budget_Lines and selecting ' ||
347: l_debug_mode := NVL(l_debug_mode, 'Y');
348: PA_DEBUG.Set_Curr_Function( p_function => 'Populate_Budget_Lines',
349: p_debug_mode => l_debug_mode );
350:
351: IF P_PA_DEBUG_MODE = 'Y' THEN
352: PA_DEBUG.g_err_stage := 'Entering Populate_Budget_Lines and selecting ' ||
353: 'cost/revenue values from budget lines';
354: PA_DEBUG.Log_Message(p_message => PA_DEBUG.g_err_stage);
355: END IF;
348: PA_DEBUG.Set_Curr_Function( p_function => 'Populate_Budget_Lines',
349: p_debug_mode => l_debug_mode );
350:
351: IF P_PA_DEBUG_MODE = 'Y' THEN
352: PA_DEBUG.g_err_stage := 'Entering Populate_Budget_Lines and selecting ' ||
353: 'cost/revenue values from budget lines';
354: PA_DEBUG.Log_Message(p_message => PA_DEBUG.g_err_stage);
355: END IF;
356: --Local Variable Initialization
350:
351: IF P_PA_DEBUG_MODE = 'Y' THEN
352: PA_DEBUG.g_err_stage := 'Entering Populate_Budget_Lines and selecting ' ||
353: 'cost/revenue values from budget lines';
354: PA_DEBUG.Log_Message(p_message => PA_DEBUG.g_err_stage);
355: END IF;
356: --Local Variable Initialization
357: l_plan_period_type := p_plan_period_type;
358: l_project_id := p_project_id;
675: EXCEPTION
676: WHEN OTHERS THEN
677: FND_MSG_PUB.add_exc_msg
678: ( p_pkg_name => 'PA_PLAN_MATRIX.Populate_Budget_Lines'
679: ,p_procedure_name => PA_DEBUG.G_Err_Stack);
680: IF P_PA_DEBUG_MODE = 'Y' THEN
681: PA_DEBUG.g_err_stage := 'EXCEPTION while trying to insert ' ||
682: 'PD data in budget lines table';
683: PA_DEBUG.Log_Message(p_message => PA_DEBUG.g_err_stage);
676: WHEN OTHERS THEN
677: FND_MSG_PUB.add_exc_msg
678: ( p_pkg_name => 'PA_PLAN_MATRIX.Populate_Budget_Lines'
679: ,p_procedure_name => PA_DEBUG.G_Err_Stack);
680: IF P_PA_DEBUG_MODE = 'Y' THEN
681: PA_DEBUG.g_err_stage := 'EXCEPTION while trying to insert ' ||
682: 'PD data in budget lines table';
683: PA_DEBUG.Log_Message(p_message => PA_DEBUG.g_err_stage);
684: END IF;
677: FND_MSG_PUB.add_exc_msg
678: ( p_pkg_name => 'PA_PLAN_MATRIX.Populate_Budget_Lines'
679: ,p_procedure_name => PA_DEBUG.G_Err_Stack);
680: IF P_PA_DEBUG_MODE = 'Y' THEN
681: PA_DEBUG.g_err_stage := 'EXCEPTION while trying to insert ' ||
682: 'PD data in budget lines table';
683: PA_DEBUG.Log_Message(p_message => PA_DEBUG.g_err_stage);
684: END IF;
685: PA_UTILS.ADD_MESSAGE( p_app_short_name => 'PA',
679: ,p_procedure_name => PA_DEBUG.G_Err_Stack);
680: IF P_PA_DEBUG_MODE = 'Y' THEN
681: PA_DEBUG.g_err_stage := 'EXCEPTION while trying to insert ' ||
682: 'PD data in budget lines table';
683: PA_DEBUG.Log_Message(p_message => PA_DEBUG.g_err_stage);
684: END IF;
685: PA_UTILS.ADD_MESSAGE( p_app_short_name => 'PA',
686: p_msg_name => 'PA_FP_UNEX_ERR_INS_BDGT_LNS');
687: x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
685: PA_UTILS.ADD_MESSAGE( p_app_short_name => 'PA',
686: p_msg_name => 'PA_FP_UNEX_ERR_INS_BDGT_LNS');
687: x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
688: x_msg_data := 'PA_FP_UNEX_ERR_INS_BDGT_LNS';
689: PA_DEBUG.Reset_Curr_Function;
690: RAISE;
691: END;
692: -- Updating the Budget Line Tables to store the Values for
693: -- Preceding Entered l_st_dt_4_st_pd is the start date of
745: );
746:
747: IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
748: --DBMS_OUTPUT.PUT_LINE('Error in call to Get Period Info');
749: PA_DEBUG.Reset_Curr_Function;
750: RETURN;
751: END IF;
752: -- Selecting the revenue and cost values from the temporary
753: -- table for succeeding period
975: EXCEPTION
976: WHEN OTHERS THEN
977: FND_MSG_PUB.add_exc_msg
978: ( p_pkg_name => 'PA_PLAN_MATRIX.Populate_Budget_Lines'
979: ,p_procedure_name => PA_DEBUG.G_Err_Stack);
980: IF P_PA_DEBUG_MODE = 'Y' THEN
981: PA_DEBUG.g_err_stage := 'Exception while trying to insert ' ||
982: 'SD data in budget lines table';
983: PA_DEBUG.Log_Message(p_message => PA_DEBUG.g_err_stage);
976: WHEN OTHERS THEN
977: FND_MSG_PUB.add_exc_msg
978: ( p_pkg_name => 'PA_PLAN_MATRIX.Populate_Budget_Lines'
979: ,p_procedure_name => PA_DEBUG.G_Err_Stack);
980: IF P_PA_DEBUG_MODE = 'Y' THEN
981: PA_DEBUG.g_err_stage := 'Exception while trying to insert ' ||
982: 'SD data in budget lines table';
983: PA_DEBUG.Log_Message(p_message => PA_DEBUG.g_err_stage);
984: END IF;
977: FND_MSG_PUB.add_exc_msg
978: ( p_pkg_name => 'PA_PLAN_MATRIX.Populate_Budget_Lines'
979: ,p_procedure_name => PA_DEBUG.G_Err_Stack);
980: IF P_PA_DEBUG_MODE = 'Y' THEN
981: PA_DEBUG.g_err_stage := 'Exception while trying to insert ' ||
982: 'SD data in budget lines table';
983: PA_DEBUG.Log_Message(p_message => PA_DEBUG.g_err_stage);
984: END IF;
985: PA_UTILS.ADD_MESSAGE( p_app_short_name => 'PA',
979: ,p_procedure_name => PA_DEBUG.G_Err_Stack);
980: IF P_PA_DEBUG_MODE = 'Y' THEN
981: PA_DEBUG.g_err_stage := 'Exception while trying to insert ' ||
982: 'SD data in budget lines table';
983: PA_DEBUG.Log_Message(p_message => PA_DEBUG.g_err_stage);
984: END IF;
985: PA_UTILS.ADD_MESSAGE( p_app_short_name => 'PA',
986: p_msg_name => 'PA_FP_UNEX_ERR_INS_BDGT_LNS');
987: x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
985: PA_UTILS.ADD_MESSAGE( p_app_short_name => 'PA',
986: p_msg_name => 'PA_FP_UNEX_ERR_INS_BDGT_LNS');
987: x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
988: x_msg_data := 'PA_FP_UNEX_ERR_INS_BDGT_LNS';
989: PA_DEBUG.Reset_Curr_Function;
990: RAISE;
991: END;
992:
993: -- Updating the Budget Line Tables to store the Values for
1005: EXCEPTION
1006: WHEN OTHERS THEN
1007: FND_MSG_PUB.add_exc_msg
1008: ( p_pkg_name => 'PA_PLAN_MATRIX.Populate_Budget_Lines'
1009: ,p_procedure_name => PA_DEBUG.G_Err_Stack);
1010: IF P_PA_DEBUG_MODE = 'Y' THEN
1011: PA_DEBUG.g_err_stage := 'Unexpected error in Populate_Budget_Lines ';
1012: PA_DEBUG.Log_Message(p_message => PA_DEBUG.g_err_stage);
1013: END IF;
1006: WHEN OTHERS THEN
1007: FND_MSG_PUB.add_exc_msg
1008: ( p_pkg_name => 'PA_PLAN_MATRIX.Populate_Budget_Lines'
1009: ,p_procedure_name => PA_DEBUG.G_Err_Stack);
1010: IF P_PA_DEBUG_MODE = 'Y' THEN
1011: PA_DEBUG.g_err_stage := 'Unexpected error in Populate_Budget_Lines ';
1012: PA_DEBUG.Log_Message(p_message => PA_DEBUG.g_err_stage);
1013: END IF;
1014: x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1007: FND_MSG_PUB.add_exc_msg
1008: ( p_pkg_name => 'PA_PLAN_MATRIX.Populate_Budget_Lines'
1009: ,p_procedure_name => PA_DEBUG.G_Err_Stack);
1010: IF P_PA_DEBUG_MODE = 'Y' THEN
1011: PA_DEBUG.g_err_stage := 'Unexpected error in Populate_Budget_Lines ';
1012: PA_DEBUG.Log_Message(p_message => PA_DEBUG.g_err_stage);
1013: END IF;
1014: x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1015: PA_DEBUG.Reset_Curr_Function;
1008: ( p_pkg_name => 'PA_PLAN_MATRIX.Populate_Budget_Lines'
1009: ,p_procedure_name => PA_DEBUG.G_Err_Stack);
1010: IF P_PA_DEBUG_MODE = 'Y' THEN
1011: PA_DEBUG.g_err_stage := 'Unexpected error in Populate_Budget_Lines ';
1012: PA_DEBUG.Log_Message(p_message => PA_DEBUG.g_err_stage);
1013: END IF;
1014: x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1015: PA_DEBUG.Reset_Curr_Function;
1016: RAISE;
1011: PA_DEBUG.g_err_stage := 'Unexpected error in Populate_Budget_Lines ';
1012: PA_DEBUG.Log_Message(p_message => PA_DEBUG.g_err_stage);
1013: END IF;
1014: x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1015: PA_DEBUG.Reset_Curr_Function;
1016: RAISE;
1017: END Populate_Budget_Lines;
1018:
1019: PROCEDURE Maintain_Plan_Matrix(
1493: l_delete_flag_tab PA_PLSQL_DATATYPES.Char30TabTyp; --added this Table
1494: --
1495:
1496: BEGIN
1497: PA_DEBUG.Set_Curr_Function( p_function => 'Maintain_Plan_Matrix',
1498: p_debug_mode => p_debug_mode );
1499: l_matrix_counter := 1;
1500: /* the following logic can be easily coded by using Dynamic SQL. But for checking 52 columns
1501: , it will be 52 DB hits. And also if this process is called multiple times from
1502: conc mgr process for a range of projects, there will be more DB hits.
1503: So the logic is coded as a single select and using multiple IFs - SManivannan */
1504: x_return_status := FND_API.G_RET_STS_SUCCESS;
1505:
1506: IF P_PA_DEBUG_MODE = 'Y' THEN
1507: PA_DEBUG.g_err_stage := 'Entering Main Plan Matrix and selecting prj profile';
1508: PA_DEBUG.Log_Message(p_message => PA_DEBUG.g_err_stage);
1509: END IF;
1510: --DBMS_OUTPUT.PUT_LINE('11');
1503: So the logic is coded as a single select and using multiple IFs - SManivannan */
1504: x_return_status := FND_API.G_RET_STS_SUCCESS;
1505:
1506: IF P_PA_DEBUG_MODE = 'Y' THEN
1507: PA_DEBUG.g_err_stage := 'Entering Main Plan Matrix and selecting prj profile';
1508: PA_DEBUG.Log_Message(p_message => PA_DEBUG.g_err_stage);
1509: END IF;
1510: --DBMS_OUTPUT.PUT_LINE('11');
1511: BEGIN
1504: x_return_status := FND_API.G_RET_STS_SUCCESS;
1505:
1506: IF P_PA_DEBUG_MODE = 'Y' THEN
1507: PA_DEBUG.g_err_stage := 'Entering Main Plan Matrix and selecting prj profile';
1508: PA_DEBUG.Log_Message(p_message => PA_DEBUG.g_err_stage);
1509: END IF;
1510: --DBMS_OUTPUT.PUT_LINE('11');
1511: BEGIN
1512: SELECT
1724: pa_proj_period_profiles where
1725: period_profile_id = p_period_profile_id;
1726: EXCEPTION
1727: WHEN NO_DATA_FOUND THEN
1728: IF P_PA_DEBUG_MODE = 'Y' THEN
1729: PA_DEBUG.g_err_stage := 'Prj profile not found returning';
1730: PA_DEBUG.Log_Message(p_message => PA_DEBUG.g_err_stage);
1731: END IF;
1732: x_return_status := FND_API.G_RET_STS_ERROR;
1725: period_profile_id = p_period_profile_id;
1726: EXCEPTION
1727: WHEN NO_DATA_FOUND THEN
1728: IF P_PA_DEBUG_MODE = 'Y' THEN
1729: PA_DEBUG.g_err_stage := 'Prj profile not found returning';
1730: PA_DEBUG.Log_Message(p_message => PA_DEBUG.g_err_stage);
1731: END IF;
1732: x_return_status := FND_API.G_RET_STS_ERROR;
1733: IF p_add_msg_in_stack = 'Y' THEN
1726: EXCEPTION
1727: WHEN NO_DATA_FOUND THEN
1728: IF P_PA_DEBUG_MODE = 'Y' THEN
1729: PA_DEBUG.g_err_stage := 'Prj profile not found returning';
1730: PA_DEBUG.Log_Message(p_message => PA_DEBUG.g_err_stage);
1731: END IF;
1732: x_return_status := FND_API.G_RET_STS_ERROR;
1733: IF p_add_msg_in_stack = 'Y' THEN
1734: PA_UTILS.ADD_MESSAGE( p_app_short_name => 'PA',
1735: p_msg_name => 'PA_FP_INVALID_PRJ_PROFILE');
1736: ELSE
1737: x_msg_data := 'PA_FP_INVALID_PRJ_PROFILE';
1738: END IF;
1739: PA_DEBUG.Reset_Curr_Function;
1740: END;
1741:
1742: IF P_PA_DEBUG_MODE = 'Y' THEN
1743: PA_DEBUG.g_err_stage := 'After selecting prj profile';
1738: END IF;
1739: PA_DEBUG.Reset_Curr_Function;
1740: END;
1741:
1742: IF P_PA_DEBUG_MODE = 'Y' THEN
1743: PA_DEBUG.g_err_stage := 'After selecting prj profile';
1744: PA_DEBUG.Log_Message(p_message => PA_DEBUG.g_err_stage);
1745: END IF;
1746:
1739: PA_DEBUG.Reset_Curr_Function;
1740: END;
1741:
1742: IF P_PA_DEBUG_MODE = 'Y' THEN
1743: PA_DEBUG.g_err_stage := 'After selecting prj profile';
1744: PA_DEBUG.Log_Message(p_message => PA_DEBUG.g_err_stage);
1745: END IF;
1746:
1747:
1740: END;
1741:
1742: IF P_PA_DEBUG_MODE = 'Y' THEN
1743: PA_DEBUG.g_err_stage := 'After selecting prj profile';
1744: PA_DEBUG.Log_Message(p_message => PA_DEBUG.g_err_stage);
1745: END IF;
1746:
1747:
1748: l_start_period_name := l_period_name1;
2258: );
2259:
2260: IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
2261: --DBMS_OUTPUT.PUT_LINE('Error in call to Populate Budget Lines');
2262: PA_DEBUG.Reset_Curr_Function;
2263: RETURN;
2264: END IF;
2265: END IF;
2266: /* Change for Bug 2641475 ends */
2284: x_msg_data => x_msg_data
2285: );
2286: IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
2287: --DBMS_OUTPUT.PUT_LINE('Error in call to Populate Budget Lines');
2288: PA_DEBUG.Reset_Curr_Function;
2289: RETURN;
2290: END IF;
2291: ELSE
2292: /* Change for Bug 2641475 Starts */
2315: );
2316:
2317: IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
2318: --DBMS_OUTPUT.PUT_LINE('Error in call to Populate Budget Lines');
2319: PA_DEBUG.Reset_Curr_Function;
2320: RETURN;
2321: END IF;
2322: END IF;
2323: /* Change for Bug 2641475 ends */
2610:
2611: FOR l_plsql_cnt IN 1 .. p_amount_type_tab.count
2612: LOOP
2613:
2614: -- PA_DEBUG.g_err_stage := 'Processing amt subtype code:'||
2615: -- p_amount_type_tab(l_plsql_cnt).amount_subtype_code;
2616: -- PA_DEBUG.Log_Message(p_message => PA_DEBUG.g_err_stage);
2617: -- For Org Forecasting, Burdened Cost maps to Own Project Cost
2618: l_valid_amount_flag := 'Y';
2612: LOOP
2613:
2614: -- PA_DEBUG.g_err_stage := 'Processing amt subtype code:'||
2615: -- p_amount_type_tab(l_plsql_cnt).amount_subtype_code;
2616: -- PA_DEBUG.Log_Message(p_message => PA_DEBUG.g_err_stage);
2617: -- For Org Forecasting, Burdened Cost maps to Own Project Cost
2618: l_valid_amount_flag := 'Y';
2619: l_quantity_filter_flag := 'Y';
2620: IF p_amount_type_tab(l_plsql_cnt).amount_subtype_code = 'RAW_COST' THEN
2761: l_amt_subtype_code := p_amount_type_tab(l_plsql_cnt).amount_subtype_code;
2762: l_amt_type_id := p_amount_type_tab(l_plsql_cnt).amount_type_id;
2763: l_amt_subtype_id := p_amount_type_tab(l_plsql_cnt).amount_subtype_id;
2764: IF l_valid_amount_flag = 'N' THEN
2765: IF P_PA_DEBUG_MODE = 'Y' THEN
2766: PA_DEBUG.g_err_stage := 'Invalid Amt Type:'||l_amt_type_code;
2767: PA_DEBUG.Log_Message(p_message => PA_DEBUG.g_err_stage);
2768: PA_DEBUG.g_err_stage := 'Invalid Amt Sub Type:'||l_amt_subtype_code;
2769: PA_DEBUG.Log_Message(p_message => PA_DEBUG.g_err_stage);
2762: l_amt_type_id := p_amount_type_tab(l_plsql_cnt).amount_type_id;
2763: l_amt_subtype_id := p_amount_type_tab(l_plsql_cnt).amount_subtype_id;
2764: IF l_valid_amount_flag = 'N' THEN
2765: IF P_PA_DEBUG_MODE = 'Y' THEN
2766: PA_DEBUG.g_err_stage := 'Invalid Amt Type:'||l_amt_type_code;
2767: PA_DEBUG.Log_Message(p_message => PA_DEBUG.g_err_stage);
2768: PA_DEBUG.g_err_stage := 'Invalid Amt Sub Type:'||l_amt_subtype_code;
2769: PA_DEBUG.Log_Message(p_message => PA_DEBUG.g_err_stage);
2770: END IF;
2763: l_amt_subtype_id := p_amount_type_tab(l_plsql_cnt).amount_subtype_id;
2764: IF l_valid_amount_flag = 'N' THEN
2765: IF P_PA_DEBUG_MODE = 'Y' THEN
2766: PA_DEBUG.g_err_stage := 'Invalid Amt Type:'||l_amt_type_code;
2767: PA_DEBUG.Log_Message(p_message => PA_DEBUG.g_err_stage);
2768: PA_DEBUG.g_err_stage := 'Invalid Amt Sub Type:'||l_amt_subtype_code;
2769: PA_DEBUG.Log_Message(p_message => PA_DEBUG.g_err_stage);
2770: END IF;
2771: x_return_status := FND_API.G_RET_STS_ERROR;
2764: IF l_valid_amount_flag = 'N' THEN
2765: IF P_PA_DEBUG_MODE = 'Y' THEN
2766: PA_DEBUG.g_err_stage := 'Invalid Amt Type:'||l_amt_type_code;
2767: PA_DEBUG.Log_Message(p_message => PA_DEBUG.g_err_stage);
2768: PA_DEBUG.g_err_stage := 'Invalid Amt Sub Type:'||l_amt_subtype_code;
2769: PA_DEBUG.Log_Message(p_message => PA_DEBUG.g_err_stage);
2770: END IF;
2771: x_return_status := FND_API.G_RET_STS_ERROR;
2772: IF p_add_msg_in_stack = 'Y' THEN
2765: IF P_PA_DEBUG_MODE = 'Y' THEN
2766: PA_DEBUG.g_err_stage := 'Invalid Amt Type:'||l_amt_type_code;
2767: PA_DEBUG.Log_Message(p_message => PA_DEBUG.g_err_stage);
2768: PA_DEBUG.g_err_stage := 'Invalid Amt Sub Type:'||l_amt_subtype_code;
2769: PA_DEBUG.Log_Message(p_message => PA_DEBUG.g_err_stage);
2770: END IF;
2771: x_return_status := FND_API.G_RET_STS_ERROR;
2772: IF p_add_msg_in_stack = 'Y' THEN
2773: PA_UTILS.ADD_MESSAGE( p_app_short_name => 'PA',
2774: p_msg_name => 'PA_FP_INVALID_AMT_TYPE');
2775: ELSE
2776: x_msg_data := 'PA_FP_INVALID_AMT_TYPE';
2777: END IF;
2778: PA_DEBUG.Reset_Curr_Function;
2779: RETURN;
2780: END IF;
2781: l_res_asg_id := main_cur_rec.resource_assignment_id;
2782: l_obj_id := main_cur_rec.object_id;
3698: EXCEPTION
3699: WHEN OTHERS THEN
3700: FND_MSG_PUB.add_exc_msg
3701: ( p_pkg_name => 'PA_PLAN_MATRIX.maintain_plan_matrix'
3702: ,p_procedure_name => PA_DEBUG.G_Err_Stack);
3703: IF P_PA_DEBUG_MODE = 'Y' THEN
3704: PA_DEBUG.g_err_stage := 'Exception while trying to insert ' ||
3705: 'data in proj denorm table';
3706: PA_DEBUG.Log_Message(p_message => PA_DEBUG.g_err_stage);
3699: WHEN OTHERS THEN
3700: FND_MSG_PUB.add_exc_msg
3701: ( p_pkg_name => 'PA_PLAN_MATRIX.maintain_plan_matrix'
3702: ,p_procedure_name => PA_DEBUG.G_Err_Stack);
3703: IF P_PA_DEBUG_MODE = 'Y' THEN
3704: PA_DEBUG.g_err_stage := 'Exception while trying to insert ' ||
3705: 'data in proj denorm table';
3706: PA_DEBUG.Log_Message(p_message => PA_DEBUG.g_err_stage);
3707: END IF;
3700: FND_MSG_PUB.add_exc_msg
3701: ( p_pkg_name => 'PA_PLAN_MATRIX.maintain_plan_matrix'
3702: ,p_procedure_name => PA_DEBUG.G_Err_Stack);
3703: IF P_PA_DEBUG_MODE = 'Y' THEN
3704: PA_DEBUG.g_err_stage := 'Exception while trying to insert ' ||
3705: 'data in proj denorm table';
3706: PA_DEBUG.Log_Message(p_message => PA_DEBUG.g_err_stage);
3707: END IF;
3708: IF p_add_msg_in_stack = 'Y' THEN
3702: ,p_procedure_name => PA_DEBUG.G_Err_Stack);
3703: IF P_PA_DEBUG_MODE = 'Y' THEN
3704: PA_DEBUG.g_err_stage := 'Exception while trying to insert ' ||
3705: 'data in proj denorm table';
3706: PA_DEBUG.Log_Message(p_message => PA_DEBUG.g_err_stage);
3707: END IF;
3708: IF p_add_msg_in_stack = 'Y' THEN
3709: PA_UTILS.ADD_MESSAGE( p_app_short_name => 'PA',
3710: p_msg_name => 'PA_FP_UNEX_ERR_DENORM_IN');
3710: p_msg_name => 'PA_FP_UNEX_ERR_DENORM_IN');
3711: END IF;
3712: x_return_status := FND_API.G_RET_STS_ERROR;
3713: x_msg_data := 'PA_FP_UNEX_ERR_DENORM_IN';
3714: PA_DEBUG.Reset_Curr_Function;
3715: RAISE;
3716: END;
3717: END IF;
3718: /* end if for the currency_type differentiator */
3719: END IF;
3720: /* End if for the quantity filter flag */
3721: END IF;
3722: /* end if for valid amount flag */
3723: /* PA_DEBUG.g_err_stage := 'moving to next amount type';
3724: PA_DEBUG.Log_Message(p_message => PA_DEBUG.g_err_stage); */
3725: END LOOP;
3726: /* end loop for amount type loop */
3727: END LOOP;
3720: /* End if for the quantity filter flag */
3721: END IF;
3722: /* end if for valid amount flag */
3723: /* PA_DEBUG.g_err_stage := 'moving to next amount type';
3724: PA_DEBUG.Log_Message(p_message => PA_DEBUG.g_err_stage); */
3725: END LOOP;
3726: /* end loop for amount type loop */
3727: END LOOP;
3728: /* end loop for main cursor */
3726: /* end loop for amount type loop */
3727: END LOOP;
3728: /* end loop for main cursor */
3729:
3730: IF P_PA_DEBUG_MODE = 'Y' THEN
3731: PA_DEBUG.g_err_stage := 'bef bulk insert into pds denorm';
3732: PA_DEBUG.Log_Message(p_message => PA_DEBUG.g_err_stage);
3733: END IF;
3734:
3727: END LOOP;
3728: /* end loop for main cursor */
3729:
3730: IF P_PA_DEBUG_MODE = 'Y' THEN
3731: PA_DEBUG.g_err_stage := 'bef bulk insert into pds denorm';
3732: PA_DEBUG.Log_Message(p_message => PA_DEBUG.g_err_stage);
3733: END IF;
3734:
3735: FORALL l_ins_temp IN 1 .. l_amount_tab50.count
3728: /* end loop for main cursor */
3729:
3730: IF P_PA_DEBUG_MODE = 'Y' THEN
3731: PA_DEBUG.g_err_stage := 'bef bulk insert into pds denorm';
3732: PA_DEBUG.Log_Message(p_message => PA_DEBUG.g_err_stage);
3733: END IF;
3734:
3735: FORALL l_ins_temp IN 1 .. l_amount_tab50.count
3736: INSERT INTO Pa_Proj_Periods_Denorm(
3882: l_amt_type_id_tab(l_ins_temp),
3883: l_amt_subtype_id_tab(l_ins_temp)
3884: );
3885:
3886: IF P_PA_DEBUG_MODE = 'Y' THEN
3887: PA_DEBUG.g_err_stage := 'after bulk insert into pds denorm and returning';
3888: PA_DEBUG.Log_Message(p_message => PA_DEBUG.g_err_stage);
3889: END IF;
3890:
3883: l_amt_subtype_id_tab(l_ins_temp)
3884: );
3885:
3886: IF P_PA_DEBUG_MODE = 'Y' THEN
3887: PA_DEBUG.g_err_stage := 'after bulk insert into pds denorm and returning';
3888: PA_DEBUG.Log_Message(p_message => PA_DEBUG.g_err_stage);
3889: END IF;
3890:
3891: /* Commit interval is not decided yet. So, commiting at the end */
3884: );
3885:
3886: IF P_PA_DEBUG_MODE = 'Y' THEN
3887: PA_DEBUG.g_err_stage := 'after bulk insert into pds denorm and returning';
3888: PA_DEBUG.Log_Message(p_message => PA_DEBUG.g_err_stage);
3889: END IF;
3890:
3891: /* Commit interval is not decided yet. So, commiting at the end */
3892: IF NVL(P_COMMIT_FLAG,'N') = 'Y' THEN
3891: /* Commit interval is not decided yet. So, commiting at the end */
3892: IF NVL(P_COMMIT_FLAG,'N') = 'Y' THEN
3893: COMMIT;
3894: END IF;
3895: PA_DEBUG.Reset_Curr_Function;
3896: RETURN;
3897: EXCEPTION
3898: WHEN OTHERS THEN
3899: FND_MSG_PUB.add_exc_msg
3897: EXCEPTION
3898: WHEN OTHERS THEN
3899: FND_MSG_PUB.add_exc_msg
3900: ( p_pkg_name => 'PA_PLAN_MATRIX.maintain_plan_matrix'
3901: ,p_procedure_name => PA_DEBUG.G_Err_Stack);
3902: IF P_PA_DEBUG_MODE = 'Y' THEN
3903: PA_DEBUG.g_err_stage := 'Unexpected error in maintain plan matrix ' ||
3904: 'PD-Txn data from budget lines table';
3905: PA_DEBUG.Log_Message(p_message => PA_DEBUG.g_err_stage);
3898: WHEN OTHERS THEN
3899: FND_MSG_PUB.add_exc_msg
3900: ( p_pkg_name => 'PA_PLAN_MATRIX.maintain_plan_matrix'
3901: ,p_procedure_name => PA_DEBUG.G_Err_Stack);
3902: IF P_PA_DEBUG_MODE = 'Y' THEN
3903: PA_DEBUG.g_err_stage := 'Unexpected error in maintain plan matrix ' ||
3904: 'PD-Txn data from budget lines table';
3905: PA_DEBUG.Log_Message(p_message => PA_DEBUG.g_err_stage);
3906: END IF;
3899: FND_MSG_PUB.add_exc_msg
3900: ( p_pkg_name => 'PA_PLAN_MATRIX.maintain_plan_matrix'
3901: ,p_procedure_name => PA_DEBUG.G_Err_Stack);
3902: IF P_PA_DEBUG_MODE = 'Y' THEN
3903: PA_DEBUG.g_err_stage := 'Unexpected error in maintain plan matrix ' ||
3904: 'PD-Txn data from budget lines table';
3905: PA_DEBUG.Log_Message(p_message => PA_DEBUG.g_err_stage);
3906: END IF;
3907: IF p_add_msg_in_stack = 'Y' THEN
3901: ,p_procedure_name => PA_DEBUG.G_Err_Stack);
3902: IF P_PA_DEBUG_MODE = 'Y' THEN
3903: PA_DEBUG.g_err_stage := 'Unexpected error in maintain plan matrix ' ||
3904: 'PD-Txn data from budget lines table';
3905: PA_DEBUG.Log_Message(p_message => PA_DEBUG.g_err_stage);
3906: END IF;
3907: IF p_add_msg_in_stack = 'Y' THEN
3908: PA_UTILS.ADD_MESSAGE( p_app_short_name => 'PA',
3909: p_msg_name => 'PA_FP_UNEX_ERR_DENORM_IN');
3909: p_msg_name => 'PA_FP_UNEX_ERR_DENORM_IN');
3910: END IF;
3911: x_return_status := FND_API.G_RET_STS_ERROR;
3912: x_msg_data := 'PA_FP_UNEX_ERR_DENORM_IN';
3913: PA_DEBUG.Reset_Curr_Function;
3914: RAISE;
3915: END Maintain_Plan_Matrix;
3916:
3917: END PA_PLAN_MATRIX;