[Home] [Help]
PACKAGE BODY: APPS.ASO_PROJ_COMM_PVT
Source
1 PACKAGE BODY ASO_PROJ_COMM_PVT as
2 /* $Header: asovpqcb.pls 120.5.12000000.2 2007/01/30 20:24:40 pkoka ship $ */
3 -- Start of Comments
4 -- Package name : ASO_PROJ_COMM_PVT
5 -- Purpose :
6 -- History :
7 -- NOTE :
8 -- End of Comments
9
10
11 G_PKG_NAME CONSTANT VARCHAR2(30) := 'ASO_PROJ_COMM_PVT';
12
13
14 PROCEDURE Calculate_Proj_Commission (
15 P_Init_Msg_List IN VARCHAR2 := FND_API.G_FALSE,
16 P_Commit IN VARCHAR2 := FND_API.G_FALSE,
17 P_Qte_Header_Rec IN ASO_QUOTE_PUB.Qte_Header_Rec_Type,
18 P_Resource_Id IN NUMBER := FND_API.G_MISS_NUM,
19 X_Last_Update_Date OUT NOCOPY /* file.sql.39 change */ DATE,
20 X_Object_Version_Number OUT NOCOPY /* file.sql.39 change */ VARCHAR2,
21 X_Return_Status OUT NOCOPY /* file.sql.39 change */ VARCHAR2,
22 X_Msg_Count OUT NOCOPY /* file.sql.39 change */ NUMBER,
23 X_Msg_Data OUT NOCOPY /* file.sql.39 change */ VARCHAR2
24 )
25 IS
26
27 CURSOR C_Get_Header_Info (l_qte_hdr NUMBER) IS
28 SELECT Quote_Number, Last_Update_Date, Quote_Expiration_Date, Quote_Status_Id,
29 Pricing_Status_Indicator, Price_Updated_Date, Credit_Update_Date, Object_Version_Number, Org_Id
30 FROM ASO_QUOTE_HEADERS_ALL
31 WHERE Quote_Header_Id = l_qte_hdr;
32
33 CURSOR C_Check_Qte_Ordered (l_status NUMBER) IS
34 SELECT 'Y'
35 FROM ASO_QUOTE_STATUSES_B
36 WHERE Quote_Status_Id = l_status
37 AND Status_Code = 'ORDER SUBMITTED';
38
39 CURSOR C_Check_Res_Team (l_resource NUMBER, l_qte_num NUMBER) IS
40 SELECT 'Y'
41 FROM ASO_QUOTE_ACCESSES
42 WHERE Quote_Number = l_qte_num
43 AND Resource_Id = l_resource;
44
45 CURSOR C_Get_Line_Id (l_hdr_id NUMBER) IS
46 SELECT Quote_Line_Id
47 FROM ASO_QUOTE_LINES_ALL
48 WHERE Quote_Header_Id = l_hdr_id;
49
50 C_Header_Info C_Get_Header_Info%ROWTYPE;
51
52 l_api_name CONSTANT VARCHAR2 ( 50 ) := 'Calculate_Proj_Commission';
53 l_api_version_number CONSTANT NUMBER := 1.0;
54 lx_return_status VARCHAR2(1);
55 l_ordered VARCHAR2(1) := 'N';
56 l_found VARCHAR2(1) := 'N';
57 l_In_Line_Number_Tbl ASO_LINE_NUM_INT.In_Line_Number_Tbl_Type;
58 l_Out_Line_Number_Tbl ASO_LINE_NUM_INT.Out_Line_Number_Tbl_Type;
59 lx_inc_plnr_disclaimer cn_repositories.income_planner_disclaimer%TYPE;
60
61 lx_Qte_Header_Rec ASO_QUOTE_PUB.Qte_Header_Rec_Type;
62
63 l_auto_sales_team_prof VARCHAR2(50) := NVL(FND_PROFILE.Value('ASO_AUTO_TEAM_ASSIGN'),'NONE');
64 l_auto_sales_cred_prof VARCHAR2(50) := NVL(FND_PROFILE.Value('ASO_AUTO_SALES_CREDIT'),'NONE');
65 l_proj_comm_prof VARCHAR2(50) := NVL(FND_PROFILE.Value('ASO_PROJ_COMMISSION'),'N');
66
67 BEGIN
68
69 aso_debug_pub.g_debug_flag := nvl(fnd_profile.value('ASO_ENABLE_DEBUG'),'N');
70
71 -- Standard Start of API savepoint
72 SAVEPOINT CALCULATE_PROJ_COMMISSION_PVT;
73
74 -- Standard call to check for call compatibility.
75 IF NOT FND_API.Compatible_API_Call ( l_api_version_number,
76 1.0,
77 l_api_name,
78 G_PKG_NAME)
79 THEN
80 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
81 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
82 END IF;
83
84 -- Initialize message list if p_init_msg_list is set to TRUE.
85 IF FND_API.to_Boolean( p_init_msg_list )
86 THEN
87 FND_MSG_PUB.initialize;
88 END IF;
89
90 -- Initialize API return status to SUCCESS
91 x_return_status := FND_API.G_RET_STS_SUCCESS;
92
93 --
94 -- API body
95 --
96
97 IF aso_debug_pub.g_debug_flag = 'Y' THEN
98 aso_debug_pub.add('Calc_Proj_Comm: Begin ',1,'Y');
99 aso_debug_pub.add('Calc_Proj_Comm: l_proj_comm_prof: '||l_proj_comm_prof,1,'N');
100 aso_debug_pub.add('Calc_Proj_Comm: l_auto_sales_team_prof: '||l_auto_sales_team_prof,1,'N');
101 aso_debug_pub.add('Calc_Proj_Comm: l_auto_sales_cred_prof: '||l_auto_sales_cred_prof,1,'N');
102 aso_debug_pub.add('Calc_Proj_Comm: p_qte_header_rec.quote_header_id: '||p_qte_header_rec.quote_header_id,1,'N');
103 aso_debug_pub.add('Calc_Proj_Comm: p_qte_header_rec.last_update_date: '||p_qte_header_rec.last_update_date,1,'N');
104 aso_debug_pub.add('Calc_Proj_Comm: P_Resource_Id: '||P_Resource_Id,1,'N');
105 END IF;
106 -- Basic Validations
107 -- Check If ASO:Calculate Projected Commmission is set
108 IF l_proj_comm_prof <> 'Y' THEN
109 x_return_status := FND_API.G_RET_STS_ERROR;
110 IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
111 FND_MESSAGE.Set_Name('ASO', 'ASO_PROJ_COMM_NOT_SET');
112 FND_MSG_PUB.ADD;
113 END IF;
114 RAISE FND_API.G_EXC_ERROR;
115 END IF;
116
117 OPEN C_Get_Header_Info(P_Qte_Header_Rec.Quote_Header_Id);
118 FETCH C_Get_Header_Info INTO C_Header_Info;
119
120 -- Check Whether record has been changed
121 IF (C_Get_Header_Info%NOTFOUND) OR
122 (C_Header_Info.last_update_date IS NULL OR
123 C_Header_Info.last_update_date = FND_API.G_MISS_DATE) THEN
124 x_return_status := FND_API.G_RET_STS_ERROR;
125 IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
126 FND_MESSAGE.Set_Name('ASO', 'ASO_API_MISSING_COLUMN');
127 FND_MESSAGE.Set_Token('COLUMN', 'Last_Update_Date', FALSE);
128 FND_MSG_PUB.ADD;
129 END IF;
130 CLOSE C_Get_Header_Info;
131 RAISE FND_API.G_EXC_ERROR;
132 END IF;
133
134 CLOSE C_Get_Header_Info;
135
136 IF (p_qte_header_rec.last_update_date IS NOT NULL AND
137 p_qte_header_rec.last_update_date <> FND_API.G_MISS_DATE) AND
138 (C_Header_Info.last_update_date <> p_qte_header_rec.last_update_date) THEN
139 x_return_status := FND_API.G_RET_STS_ERROR;
140 IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
141 FND_MESSAGE.Set_Name('ASO', 'ASO_API_RECORD_CHANGED');
142 FND_MESSAGE.Set_Token('INFO', 'quote', FALSE);
143 FND_MSG_PUB.ADD;
144 END IF;
145 RAISE FND_API.G_EXC_ERROR;
146 END IF;
147
148 -- Check if a concurrent lock exists
149 ASO_CONC_REQ_INT.Lock_Exists(
150 p_quote_header_id => p_qte_header_rec.quote_header_id,
151 x_status => lx_return_status);
152
153 IF (lx_return_status = FND_API.G_TRUE) THEN
154 x_return_status := FND_API.G_RET_STS_ERROR;
155 IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
156 FND_MESSAGE.Set_Name('ASO', 'ASO_CONC_REQUEST_RUNNING');
157 FND_MSG_PUB.ADD;
158 END IF;
159 RAISE FND_API.G_EXC_ERROR;
160 END IF;
161
162 -- Check if ASO:Automatic Sales Assign and ASO:Auto Sales Credit Alloc are set
163 IF (l_auto_sales_team_prof <> 'FULL' AND l_auto_sales_team_prof <> 'PARTIAL') OR
164 (l_auto_sales_cred_prof <> 'FULL' AND l_auto_sales_cred_prof <> 'PARTIAL') THEN
165 x_return_status := FND_API.G_RET_STS_ERROR;
166 IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
167 FND_MESSAGE.Set_Name('ASO', 'ASO_TEAM_CRED_PROF_NOT_SET');
168 FND_MSG_PUB.ADD;
169 END IF;
170 RAISE FND_API.G_EXC_ERROR;
171 END IF;
172
173 -- Check if Resource_Id is passed
174 IF P_Resource_Id IS NULL OR P_Resource_Id = FND_API.G_MISS_NUM THEN
175 x_return_status := FND_API.G_RET_STS_ERROR;
176 IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
177 FND_MESSAGE.Set_Name('ASO', 'ASO_NULL_RESOURCE');
178 FND_MSG_PUB.ADD;
179 END IF;
180 RAISE FND_API.G_EXC_ERROR;
181 END IF;
182
183 -- Check if Resource_Id is in the Sales Team
184 OPEN C_Check_Res_Team (P_Resource_Id, C_Header_Info.Quote_Number);
185 FETCH C_Check_Res_Team INTO l_found;
186 CLOSE C_Check_Res_Team;
187
188 IF aso_debug_pub.g_debug_flag = 'Y' THEN
189 aso_debug_pub.add('Calc_Proj_Comm: C_Header_Info.Quote_Expiration_Date: '||C_Header_Info.Quote_Expiration_Date,1,'N');
190 aso_debug_pub.add('Calc_Proj_Comm: C_Header_Info.Quote_Number: '||C_Header_Info.Quote_Number,1,'N');
191 aso_debug_pub.add('Calc_Proj_Comm: l_found: '||l_found,1,'N');
192 END IF;
193
194 IF l_found IS NULL OR l_found <> 'Y' THEN
195 x_return_status := FND_API.G_RET_STS_ERROR;
196 IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
197 FND_MESSAGE.Set_Name('ASO', 'ASO_INV_RESOURCE');
198 FND_MSG_PUB.ADD;
199 END IF;
200 RAISE FND_API.G_EXC_ERROR;
201 END IF;
202
203 -- Check if Quote has expired
204 /* Removing the validation for fixing bug 5734955 - PKOKA
205 IF C_Header_Info.Quote_Expiration_Date IS NOT NULL AND
206 (trunc(SYSDATE) > trunc(C_Header_Info.Quote_Expiration_Date)) THEN
207 x_return_status := FND_API.G_RET_STS_ERROR;
208 IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
209 FND_MESSAGE.Set_Name('ASO', 'ASO_QUOTE_EXPIRED');
210 FND_MSG_PUB.ADD;
211 END IF;
212 RAISE FND_API.G_EXC_ERROR;
213 END IF;
214 */
215
216 -- Check if Quote is ordered
217 OPEN C_Check_Qte_Ordered (C_Header_Info.Quote_Status_Id);
218 FETCH C_Check_Qte_Ordered INTO l_ordered;
219 CLOSE C_Check_Qte_Ordered;
220
221 IF aso_debug_pub.g_debug_flag = 'Y' THEN
222 aso_debug_pub.add('Calc_Proj_Comm: C_Header_Info.Pricing_Status_Indicator: '||C_Header_Info.Pricing_Status_Indicator,1,'N');
223 aso_debug_pub.add('Calc_Proj_Comm: C_Header_Info.Credit_Update_Date: '||C_Header_Info.Credit_Update_Date,1,'N');
224 aso_debug_pub.add('Calc_Proj_Comm: C_Header_Info.Price_Updated_Date: '||C_Header_Info.Price_Updated_Date,1,'N');
225 aso_debug_pub.add('Calc_Proj_Comm: C_Header_Info.Quote_Status_Id: '||C_Header_Info.Quote_Status_Id,1,'N');
226 aso_debug_pub.add('Calc_Proj_Comm: l_ordered: '||l_ordered,1,'N');
227 END IF;
228 IF l_ordered IS NOT NULL AND l_ordered = 'Y' THEN
229 x_return_status := FND_API.G_RET_STS_ERROR;
230 IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
231 FND_MESSAGE.Set_Name('ASO', 'ASO_API_ORDERED_STATUS_TRANS');
232 FND_MSG_PUB.ADD;
233 END IF;
234 RAISE FND_API.G_EXC_ERROR;
235 END IF;
236
237 -- Check if pricing status is Complete
238 IF C_Header_Info.Pricing_Status_Indicator IS NULL OR
239 C_Header_Info.Pricing_Status_Indicator <> 'C' THEN
240 x_return_status := FND_API.G_RET_STS_ERROR;
241 IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
242 FND_MESSAGE.Set_Name('ASO', 'ASO_PRICING_INCOMPLETE');
243 FND_MSG_PUB.ADD;
244 END IF;
245 RAISE FND_API.G_EXC_ERROR;
246 END IF;
247
248 -- Check if credit_update_date is earlier than pricing date
249 IF C_Header_Info.Credit_Update_Date IS NULL OR
250 (C_Header_Info.Price_Updated_Date IS NOT NULL AND
251 C_Header_Info.Credit_Update_Date < C_Header_Info.Price_Updated_Date) THEN
252
253 IF aso_debug_pub.g_debug_flag = 'Y' THEN
254 aso_debug_pub.add('Calc_Proj_Comm: Before Allocate_Sales_Credits ',1,'N');
255 END IF;
256
257 ASO_QUOTE_PUB.Allocate_Sales_Credits
258 (
259 P_Api_Version_Number => 1.0,
260 P_Init_Msg_List => FND_API.G_FALSE,
261 P_Commit => FND_API.G_TRUE,
262 p_Qte_Header_Rec => p_qte_header_rec,
263 x_Qte_Header_Rec => lx_qte_header_rec,
264 x_return_status => x_return_status,
265 x_msg_count => x_msg_count,
266 x_msg_data => x_msg_data
267 );
268
269 IF aso_debug_pub.g_debug_flag = 'Y' THEN
270 aso_debug_pub.add('Calc_Proj_Comm: After Allocate_Sales_Credits:x_return_status '||x_return_status,1,'N');
271 END IF;
272
273 IF x_return_status = FND_API.G_RET_STS_ERROR THEN
274 RAISE FND_API.G_EXC_ERROR;
275 END IF;
276 IF x_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
277 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
278 END IF;
279
280 X_Object_Version_Number := lx_qte_header_rec.Object_Version_Number;
281 X_Last_Update_Date := lx_qte_header_rec.Last_Update_Date;
282
283 ELSE
284
285 X_Object_Version_Number := C_Header_Info.Object_Version_Number;
286 X_Last_Update_Date := C_Header_Info.Last_Update_Date;
287
288 END IF;
289 -- END: Basic Validations
290
291 IF aso_debug_pub.g_debug_flag = 'Y' THEN
292 aso_debug_pub.add('Calc_Proj_Comm: Before Trucate table ',1,'N');
293 END IF;
294 -- Truncate Temp table
295 DELETE FROM CN_PROJ_COMPENSATION_GTT;
296
297 IF aso_debug_pub.g_debug_flag = 'Y' THEN
298 aso_debug_pub.add('Calc_Proj_Comm: Before Insert into table ',1,'N');
299 END IF;
300 -- Populate input values into temp table
301 INSERT INTO CN_PROJ_COMPENSATION_GTT (
302 LINE_NUMBER,
303 RESOURCE_ID,
304 PROJECTION_IDENTIFIER,
305 CALC_DATE,
306 SALES_CREDIT_AMOUNT,
307 CURRENCY_CODE)
308 SELECT A.Quote_Line_Id,
309 B.Resource_Id,
310 A.Inventory_Item_Id,
311 SYSDATE,
312 (DECODE(A.Line_Category_Code,'RETURN',-1,1) * A.Quantity * A.Line_Quote_Price) * (SUM(B.Percent)/100) Sales_Credit_Amount,
313 NVL(A.Currency_Code, C.Currency_Code)
314 FROM ASO_QUOTE_LINES_ALL A, ASO_SALES_CREDITS B, ASO_QUOTE_HEADERS_ALL C
315 WHERE A.Quote_Header_Id = P_Qte_Header_Rec.Quote_Header_Id
316 AND A.Quote_Header_Id = B.Quote_Header_Id
317 AND A.Quote_Header_Id = C.Quote_Header_Id
318 AND B.Resource_Id = P_Resource_Id
319 AND (B.Quote_Line_Id IS NULL OR B.Quote_Line_Id = A.Quote_Line_Id)
320 GROUP BY A.Quote_Line_Id, B.Resource_Id, A.Inventory_Item_Id,
321 A.Quantity, A.Line_Quote_Price, NVL(A.Currency_Code, C.Currency_Code), A.Line_Category_Code;
322
323 INSERT INTO CN_PROJ_COMPENSATION_GTT (
324 LINE_NUMBER,
325 RESOURCE_ID,
326 PROJECTION_IDENTIFIER,
327 CALC_DATE,
328 SALES_CREDIT_AMOUNT,
329 CURRENCY_CODE)
330 SELECT A.Quote_Line_Id,
331 P_Resource_Id,
332 A.Inventory_Item_Id,
333 SYSDATE,
334 0,
335 NVL(A.Currency_Code, B.Currency_Code)
336 FROM ASO_QUOTE_LINES_ALL A, ASO_QUOTE_HEADERS_ALL B
337 WHERE A.Quote_Header_Id = P_Qte_Header_Rec.Quote_Header_Id
338 AND A.Quote_Header_Id = B.Quote_Header_Id
339 AND A.Quote_Line_Id NOT IN
340 (SELECT C.Line_Number
341 FROM CN_PROJ_COMPENSATION_GTT C);
342
343 IF aso_debug_pub.g_debug_flag = 'Y' THEN
344 aso_debug_pub.add('Calc_Proj_Comm: Before CN_COMMISSION_CALC_PUB.Calculate_Commission ',1,'N');
345 aso_utility_pvt.print_login_info();
346 END IF;
347 -- Call CN Calculate Commission
348 CN_COMMISSION_CALC_PUB.Calculate_Commission (
349 P_Api_Version => 1.0,
350 P_Init_Msg_List => FND_API.G_FALSE,
351 P_Org_Id => C_Header_Info.Org_Id,
352 X_inc_plnr_disclaimer => lx_inc_plnr_disclaimer,
353 X_Return_Status => X_Return_Status,
354 X_Msg_Count => X_Msg_Count,
355 X_Msg_Data => X_Msg_Data );
356
357 IF aso_debug_pub.g_debug_flag = 'Y' THEN
358 aso_debug_pub.add('Calc_Proj_Comm: After Calculate_Commission: '||x_return_status,1,'N');
359 aso_utility_pvt.print_login_info();
360 END IF;
361 IF x_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
362 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
363 ELSE
364 x_return_status := FND_API.G_RET_STS_SUCCESS;
365 END IF;
366
367 IF aso_debug_pub.g_debug_flag = 'Y' THEN
368 aso_debug_pub.add('Calc_Proj_Comm: Before Resetting Line No ',1,'N');
369 END IF;
370 -- Reset UI Line Number
371 ASO_LINE_NUM_INT.RESET_LINE_NUM;
372
373 OPEN C_Get_Line_Id (p_qte_header_rec.quote_header_id);
374 FETCH C_Get_Line_Id INTO l_In_Line_Number_Tbl(1).Quote_Line_Id;
375 CLOSE C_Get_Line_Id;
376
377 IF aso_debug_pub.g_debug_flag = 'Y' THEN
378 aso_debug_pub.add('Calc_Proj_Comm: l_In_Line_Number_Tbl(1).Quote_Line_Id: '||l_In_Line_Number_Tbl(1).Quote_Line_Id,1,'N');
379 END IF;
380
381 ASO_LINE_NUM_INT.ASO_UI_LINE_NUMBER (
382 P_In_Line_Number_Tbl => l_In_Line_Number_Tbl,
383 X_Out_Line_Number_Tbl => l_Out_Line_Number_Tbl );
384
385
386 -- Standard call to get message count and if count is 1, get message info.
387 FND_MSG_PUB.Count_And_Get
388 ( p_count => x_msg_count,
389 p_data => x_msg_data
390 );
391
392 IF aso_debug_pub.g_debug_flag = 'Y' THEN
393 aso_debug_pub.add('Calc_Proj_Comm: End ',1,'Y');
394 END IF;
395 EXCEPTION
396
397 WHEN FND_API.G_EXC_ERROR THEN
398 ASO_UTILITY_PVT.HANDLE_EXCEPTIONS(
399 P_API_NAME => L_API_NAME,
400 P_PKG_NAME => G_PKG_NAME,
401 P_EXCEPTION_LEVEL => FND_MSG_PUB.G_MSG_LVL_ERROR,
402 P_PACKAGE_TYPE => ASO_UTILITY_PVT.G_PVT,
403 P_SQLCODE => SQLCODE,
404 P_SQLERRM => SQLERRM,
405 X_MSG_COUNT => X_MSG_COUNT,
406 X_MSG_DATA => X_MSG_DATA,
407 X_RETURN_STATUS => X_RETURN_STATUS
408 );
409
410 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
411 ASO_UTILITY_PVT.HANDLE_EXCEPTIONS(
412 P_API_NAME => L_API_NAME,
413 P_PKG_NAME => G_PKG_NAME,
414 P_EXCEPTION_LEVEL => FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR,
415 P_PACKAGE_TYPE => ASO_UTILITY_PVT.G_PVT,
416 P_SQLCODE => SQLCODE,
417 P_SQLERRM => SQLERRM,
418 X_MSG_COUNT => X_MSG_COUNT,
419 X_MSG_DATA => X_MSG_DATA,
420 X_RETURN_STATUS => X_RETURN_STATUS
421 );
422
423 WHEN OTHERS THEN
424 ASO_UTILITY_PVT.HANDLE_EXCEPTIONS(
425 P_API_NAME => L_API_NAME,
426 P_PKG_NAME => G_PKG_NAME,
427 P_EXCEPTION_LEVEL => ASO_UTILITY_PVT.G_EXC_OTHERS,
428 P_PACKAGE_TYPE => ASO_UTILITY_PVT.G_PVT,
429 P_SQLCODE => SQLCODE,
430 P_SQLERRM => SQLERRM,
431 X_MSG_COUNT => X_MSG_COUNT,
432 X_MSG_DATA => X_MSG_DATA,
433 X_RETURN_STATUS => X_RETURN_STATUS
434 );
435
436
437 END Calculate_Proj_Commission;
438
439
440 END ASO_PROJ_COMM_PVT;