DBA Data[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,
310                              A.Inventory_Item_Id,
307                              CURRENCY_CODE)
308                       SELECT A.Quote_Line_Id,
309                              B.Resource_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;