[Home] [Help]
PACKAGE BODY: APPS.GMS_SUMM_FUNDING_PKG
Source
1 PACKAGE BODY GMS_SUMM_FUNDING_PKG AS
2 --$Header: gmsmfsfb.pls 120.1.12010000.2 2008/10/30 12:44:09 rrambati ship $
3
4 FUNCTION ROW_EXISTS_IN_GMS_SUMM_FUNDING(X_Installment_Id IN NUMBER,
5 X_Project_Id IN NUMBER,
6 X_Task_Id IN NUMBER DEFAULT NULL,
7 X_Err_Code OUT NOCOPY VARCHAR2,
8 X_Err_Stage OUT NOCOPY VARCHAR2) RETURN BOOLEAN IS
9 Row_Check INTEGER;
10 Begin
11 fnd_msg_pub.initialize;
12 Select
13 1
14 into
15 Row_Check
16 from
17 GMS_SUMMARY_PROJECT_FUNDINGS
18 where
19 INSTALLMENT_ID = X_Installment_Id and
20 PROJECT_ID = X_Project_Id and
21 (TASK_ID = X_Task_Id
22 OR
23 TASK_ID IS NULL) ; --DECODE(X_Task_Id,NULL,NULL,X_Task_Id);
24 X_Err_Code := 'S';
25 RETURN TRUE;
26 EXCEPTION
27 WHEN NO_DATA_FOUND THEN
28 X_Err_Code := 'S';
29 RETURN FALSE;
30 WHEN TOO_MANY_ROWS THEN
31 X_Err_Code := 'E';
32 X_Err_Stage := 'There is more than one row for the Installment '||to_char(X_Installment_Id)||' and the Project '||to_char(X_Project_Id);
33 FND_MESSAGE.SET_NAME('GMS','GMS_MULT_ROW_FOR_INST');
34 FND_MESSAGE.SET_TOKEN('INSTALLMENT_ID',to_char(X_Installment_Id) );
35 FND_MESSAGE.SET_TOKEN('PROJECT_ID',to_char(X_Project_Id) );
36 FND_MESSAGE.SET_TOKEN('PROGRAM_NAME','GMS_SUMM_FUNDING_PKG : ROW_EXISTS_IN_GMS_SUMM_FUNDING');
37 FND_MSG_PUB.add;
38 FND_MSG_PUB.Count_And_Get(p_count => p_msg_count,
39 p_data => X_Err_Stage);
40 RETURN FALSE;
41 WHEN OTHERS THEN
42 X_Err_Code := 'U';
43 X_Err_Stage := (SQLCODE||' '||SQLERRM);
44 FND_MESSAGE.SET_NAME('GMS','GMS_UNEXPECTED_ERROR');
45 FND_MESSAGE.SET_TOKEN('PROGRAM_NAME','GMS_SUMM_FUNDING_PKG : ROW_EXISTS_IN_GMS_SUMM_FUNDING');
46 FND_MESSAGE.SET_TOKEN('OERRNO',SQLCODE);
47 FND_MESSAGE.SET_TOKEN('OERRM',SQLERRM);
48 FND_MSG_PUB.add;
49 FND_MSG_PUB.Count_And_Get(p_count => p_msg_count,
50 p_data => X_Err_Stage);
51
52 RETURN FALSE;
53 END ROW_EXISTS_IN_GMS_SUMM_FUNDING;
54
55 PROCEDURE GET_GMS_SUMM_FUNDING(X_Installment_Id IN NUMBER,
56 X_Project_Id IN NUMBER,
57 X_Task_Id IN NUMBER DEFAULT NULL,
58 X_Total_Funding_Amount OUT NOCOPY NUMBER,
59 X_Total_Billed_Amount OUT NOCOPY NUMBER,
60 X_Total_Revenue_Amount OUT NOCOPY NUMBER,
61 X_Err_Code OUT NOCOPY VARCHAR2,
62 X_Err_Stage OUT NOCOPY VARCHAR2) IS
63 Begin
64 fnd_msg_pub.initialize;
65
66 /*Bug 3643335: Added trunc for total_billed_amount and total_revenue_amount) */
67 select
68 total_funding_amount,
69 trunc(nvl(total_billed_amount,0)),
70 trunc(nvl(total_revenue_amount,0))
71 into
72 X_Total_Funding_Amount,
73 X_Total_Billed_Amount,
74 X_Total_Revenue_Amount
75 from
76 gms_summary_project_fundings gmf
77 where
78 gmf.installment_id = X_Installment_Id and
79 gmf.project_id = X_Project_Id and
80 (gmf.task_id = X_Task_Id
81 OR
82 gmf.task_id is NULL); -- decode(X_Task_Id,NULL,NULL,X_Task_Id);
83 X_Err_Code := 'S';
84 EXCEPTION
85 WHEN NO_DATA_FOUND THEN
86 X_Err_Code := 'E';
87 X_Err_Stage := 'No row found for Project and Task specified in GMS_SUMMARY_PROJECT_FUNDINGS';
88 X_Total_Funding_Amount := -99;
89 X_Total_Billed_Amount := -99;
90 X_Total_Revenue_Amount := -99;
91 FND_MESSAGE.SET_NAME('GMS','GMS_NO_ACT_PRJ_TSK_IN_SF');
92 FND_MESSAGE.SET_TOKEN('PROGRAM_NAME','GMS_SUMM_FUNDING_PKG : GET_GMS_SUMM_FUNDING');
93 FND_MSG_PUB.add;
94 FND_MSG_PUB.Count_And_Get(p_count => p_msg_count,
95 p_data => X_Err_Stage );
96 WHEN OTHERS THEN
97 X_Err_Code := 'U';
98 X_Err_Stage := SQLCODE||' '||SQLERRM;
99 FND_MESSAGE.SET_NAME('GMS','GMS_UNEXPECTED_ERROR');
100 FND_MESSAGE.SET_TOKEN('PROGRAM_NAME','GMS_SUMM_FUNDING_PKG : GET_GMS_SUMM_FUNDING');
101 FND_MESSAGE.SET_TOKEN('OERRNO',SQLCODE);
102 FND_MESSAGE.SET_TOKEN('OERRM',SQLERRM);
103 FND_MSG_PUB.add;
104 FND_MSG_PUB.Count_And_Get(p_count => p_msg_count,
105 p_data => X_Err_Stage);
106
107 END GET_GMS_SUMM_FUNDING;
108
109 PROCEDURE UPDATE_GMS_SUMM_PROJ_FUNDING(X_Installment_Id IN NUMBER,
110 X_Project_Id IN NUMBER,
111 X_Task_Id IN NUMBER DEFAULT NULL,
112 X_Funding_Amount IN NUMBER,
113 X_Err_Code OUT NOCOPY VARCHAR2,
114 X_Err_Stage OUT NOCOPY VARCHAR2) IS
115 St_Total_Funding NUMBER(22,5);
116 Begin
117 fnd_msg_pub.initialize;
118
119 update GMS_SUMMARY_PROJECT_FUNDINGS
120 set TOTAL_FUNDING_AMOUNT = X_Funding_Amount,
121 LAST_UPDATE_DATE = SYSDATE ,
122 LAST_UPDATED_BY = FND_GLOBAL.USER_ID,
123 LAST_UPDATE_LOGIN = FND_GLOBAL.LOGIN_ID
124 where
125 INSTALLMENT_ID = X_Installment_Id and
126 PROJECT_ID = X_Project_Id and
127 (TASK_ID = X_Task_Id
128 OR
129 TASK_ID IS NULL ); --DECODE(X_Task_Id,NULL,NULL,X_Task_Id);
130
131 X_Err_Code := 'S';
132 If SQL%NOTFOUND THEN
133 X_Err_Code := 'E';
134 X_Err_Stage := 'No Row to update for Installment '||to_char(X_Installment_Id)||' and Project '||to_char(X_Project_Id);
135 FND_MESSAGE.SET_NAME('GMS','GMS_NO_ROW_FOR_PRJ_TSK_SF');
136 FND_MESSAGE.SET_TOKEN('PROGRAM_NAME','GMS_SUMM_FUNDING_PKG : UPDATE_GMS_SUMM_PROJ_FUNDING');
137 FND_MESSAGE.SET_TOKEN('INSTALLMENT_ID',to_char(X_Installment_Id) );
138 FND_MESSAGE.SET_TOKEN('PROJECT_ID', to_char(X_Project_Id) );
139 FND_MSG_PUB.add;
140 FND_MSG_PUB.Count_And_Get(p_count => p_msg_count,
141 p_data => X_Err_Stage );
142 End If;
143
144 END UPDATE_GMS_SUMM_PROJ_FUNDING;
145
146 Procedure INSERT_GMS_SUMM_PROJ_FUNDING(X_Installment_Id IN NUMBER,
147 X_Project_Id IN NUMBER,
148 X_Task_Id IN NUMBER DEFAULT NULL,
149 X_Funding_Amount IN NUMBER,
150 X_Err_Code OUT NOCOPY VARCHAR2,
151 X_Err_Stage OUT NOCOPY VARCHAR2) IS
152 Begin
153 fnd_msg_pub.initialize;
154
155 INSERT INTO GMS_SUMMARY_PROJECT_FUNDINGS
156 (INSTALLMENT_ID ,
157 PROJECT_ID,
158 TASK_ID ,
159 TOTAL_FUNDING_AMOUNT ,
160 LAST_UPDATE_DATE,
161 LAST_UPDATED_BY ,
162 CREATION_DATE,
163 CREATED_BY,
164 LAST_UPDATE_LOGIN)
165 VALUES
166 (X_Installment_Id,
167 X_Project_Id,
168 X_Task_Id,
169 X_Funding_Amount,
170 SYSDATE,
171 FND_GLOBAL.USER_ID,
172 SYSDATE,
173 FND_GLOBAL.USER_ID,
174 FND_GLOBAL.LOGIN_ID);
175 X_Err_Code := 'S';
176 EXCEPTION
177
178 WHEN OTHERS THEN
179 X_Err_Code := 'U';
180 FND_MESSAGE.SET_NAME('GMS','GMS_UNEXPECTED_ERROR');
181 FND_MESSAGE.SET_TOKEN('PROGRAM_NAME','GMS_SUMM_FUNDING_PKG : INSERT_GMS_SUMM_PROJ_FUNDING');
182 FND_MESSAGE.SET_TOKEN('OERRNO',SQLCODE);
183 FND_MESSAGE.SET_TOKEN('OERRM',SQLERRM);
184 FND_MSG_PUB.add;
185 FND_MSG_PUB.Count_And_Get(p_count => p_msg_count,
186 p_data => X_Err_Stage);
187
188 End INSERT_GMS_SUMM_PROJ_FUNDING;
189
190 Procedure CREATE_GMS_SUMMARY_FUNDING(X_Installment_Id IN NUMBER,
191 X_Project_Id IN NUMBER,
192 X_Task_Id IN NUMBER DEFAULT NULL,
193 X_Funding_Amount IN NUMBER,
194 RETCODE OUT NOCOPY VARCHAR2,
195 ERRBUF OUT NOCOPY VARCHAR2) IS
196 X_Err_Code VARCHAR2(1);
197 X_Err_Stage VARCHAR2(200);
198 X_Total_Funding_Amount NUMBER(22,5);
199 X_Total_Billed_Amount NUMBER(22,5);
200 X_Total_Revenue_Amount NUMBER(22,5);
201
202 Begin
203 If ROW_EXISTS_IN_GMS_SUMM_FUNDING(X_Installment_Id,
204 X_Project_Id,
205 X_Task_Id,
206 X_Err_Code,
207 X_Err_Stage) THEN
208
209 GET_GMS_SUMM_FUNDING(X_Installment_Id,
210 X_Project_Id,
211 X_Task_Id,
212 X_Total_Funding_Amount,
213 X_Total_Billed_Amount,
214 X_Total_Revenue_Amount,
215 X_Err_Code,
216 X_Err_Stage);
217 If X_Err_Code <> 'S' then
218 RAISE FND_API.G_EXC_ERROR;
219 End If;
220
221 X_Total_Funding_Amount := X_Total_Funding_Amount + X_Funding_Amount;
222 UPDATE_GMS_SUMM_PROJ_FUNDING(X_Installment_Id,
223 X_Project_Id,
224 X_Task_Id,
225 X_Total_Funding_Amount,
226 X_Err_Code,
227 X_Err_Stage);
228 If X_Err_Code <> 'S' then
229 RAISE FND_API.G_EXC_ERROR;
230 End If;
231 Else
232 If X_Err_Code = 'S' then
233 INSERT_GMS_SUMM_PROJ_FUNDING(X_Installment_Id,
234 X_Project_Id,
235 X_Task_Id,
236 X_Funding_Amount,
237 X_Err_Code,
238 X_Err_Stage);
239
240 If X_Err_Code <> 'S' then
241 RAISE FND_API.G_EXC_ERROR;
242 End If;
243 Else
244 RAISE FND_API.G_EXC_ERROR;
245 End If;
246 End If;
247
248
249 EXCEPTION
250 WHEN FND_API.G_EXC_ERROR THEN
251 RETCODE := X_Err_Code;
252 ERRBUF := X_Err_Stage;
253
254 END CREATE_GMS_SUMMARY_FUNDING;
255
256 Procedure DELETE_GMS_SUMMARY_FUNDING(X_Installment_Id IN NUMBER,
257 X_Project_Id IN NUMBER,
258 X_Task_Id IN NUMBER DEFAULT NULL,
259 X_Funding_Amount IN NUMBER,
260 RETCODE OUT NOCOPY VARCHAR2,
261 ERRBUF OUT NOCOPY VARCHAR2) IS
262 -- Cursor is added as fix for bug 1583819
263 cursor Hard_Limit_Flag_cr is
264 select hard_limit_flag,invoice_limit_flag /*Bug 6642901*/
265 from gms_awards awd,
266 gms_installments_v ins
267 where awd.award_id=ins.award_id
268 and ins.installment_id = X_Installment_Id;
269 X_Hard_Limit_Flag VARCHAR2(1); --Added to fix bug 1583819
270 X_Invoice_Limit_Flag VARCHAR2(1); /*Bug 6642901*/
271 X_Err_Code VARCHAR2(1);
272 X_Err_Stage VARCHAR2(200);
273 X_Total_Funding_Amount NUMBER(22,5);
274 X_Total_Billed_Amount NUMBER(22,5);
275 X_Total_Revenue_Amount NUMBER(22,5);
276 --X_funding_exists VARCHAR2(1) := 'Y';
277
278 -- Bug 2270436 : Added function gms_funding_exists
279 -- This function checks for existence of any record in gms_project_fundings before
280 -- deleting records from gms_summary_project_fundings
281
282 FUNCTION gms_funding_exists (p_installment_id NUMBER, p_project_id NUMBER, p_task_id NUMBER)
283 RETURN BOOLEAN
284 IS
285 CURSOR c_funding_exists
286 IS SELECT 1 FROM DUAL
287 WHERE EXISTS (SELECT 1
288 FROM gms_project_fundings
289 WHERE installment_id = p_installment_id
290 AND project_id = p_project_id
291 AND nvl(task_id,0) = nvl(p_task_id,0));
292
293
294 x_dummy NUMBER := 0;
295 BEGIN
296 OPEN c_funding_exists;
297 FETCH c_funding_exists INTO x_dummy;
298 CLOSE c_funding_exists;
299
300 IF x_dummy <> 0
301 THEN
302 RETURN TRUE;
303 ELSE
304 RETURN FALSE;
305 END IF;
306 END;
307
308 Begin
309
310 fnd_msg_pub.initialize;
311 -- Assume project funding row has been deleted.
312
313 GET_GMS_SUMM_FUNDING(X_Installment_Id,
314 X_Project_Id,
315 X_Task_Id,
316 X_Total_Funding_Amount,
317 X_Total_Billed_Amount,
318 X_Total_Revenue_Amount,
319 X_Err_Code,
320 X_Err_Stage);
321 If X_Err_Code <> 'S' then
322 RAISE FND_API.G_EXC_ERROR;
323 End If;
324
325 -- Debashis. This does not seem to be correct. Where is task id ? Use the function gms_funding_exists instead. Bug 2270436
326 /*
327 Begin
328 select 'Y' into x_funding_exists
329 from dual
330 where exists ( select 1 from gms_project_fundings
331 where installment_id = x_installment_id
332 and project_id = x_project_id);
333 exception
334 when no_data_found then
335 x_funding_exists := 'N';
336 End;
337 */
338 --Debashis
339
340 -- Cursor is added as fix for bug 1583819
341 open Hard_Limit_Flag_cr;
342 fetch Hard_Limit_Flag_cr
343 into X_Hard_Limit_Flag,X_Invoice_Limit_Flag; /*Bug 6445688*/
344 close Hard_Limit_Flag_cr;
345 -- Cursor is added as fix for bug 1583819
346
347 /* Bug 6445688. Modified code to split the hard limit logic separately for revenue limit and invoice limit.
348 Also replaced the single message with 2 separate revenue/invoice specific error messages. */
349 If (X_Hard_Limit_Flag ='Y') and
350 ( /*((X_Total_Funding_Amount - X_Funding_Amount) < X_Total_Billed_Amount)
351 OR commented for bug 6642901*/
352 ((X_Total_Funding_Amount - X_Funding_Amount) < X_Total_Revenue_Amount)
353 ) then
354 X_Err_Code := 'E';
355 /* X_Err_Stage := 'Total Funding Amount cannot go less than Total Billed Amount or Total Revenue Amount';
356 FND_MESSAGE.SET_NAME('GMS','GMS_FUND_LESS_REV_BILL'); commented for bug 6642901*/
357 X_Err_Stage := 'You cannot delete the funding line, as this will cause total funds to be less than the total revenue amount';
358 FND_MESSAGE.SET_NAME('GMS','GMS_FUND_LESS_REV');
359 FND_MSG_PUB.add;
360 FND_MSG_PUB.Count_And_Get(p_count => p_msg_count,
361 p_data => X_Err_Stage );
362
363 RAISE FND_API.G_EXC_ERROR;
364 Elsif (X_Invoice_Limit_Flag ='Y') and ((X_Total_Funding_Amount - X_Funding_Amount) < X_Total_Billed_Amount) then
365 X_Err_Code := 'E';
366 X_Err_Stage := 'You cannot delete the funding line, as this will cause total funds to be less than the total billed amount';
367 FND_MESSAGE.SET_NAME('GMS','GMS_FUND_LESS_BILL');
368 FND_MSG_PUB.add;
369 FND_MSG_PUB.Count_And_Get(p_count => p_msg_count,
370 p_data => X_Err_Stage );
371
372 RAISE FND_API.G_EXC_ERROR;
373 End If;
374
375
376 If (((X_Total_Funding_Amount - X_Funding_Amount) = 0)
377 and not gms_funding_exists(X_installment_id,x_project_id,x_task_id)) -- Bug 2270436
378 then
379 DELETE FROM GMS_SUMMARY_PROJECT_FUNDINGS
380 WHERE
381 INSTALLMENT_ID = X_Installment_Id and
382 PROJECT_ID = X_Project_Id and
383 (TASK_ID = X_Task_Id
384 OR
385 TASK_ID IS NULL ); -- DECODE(X_Task_Id,NULL,NULL,X_Task_Id);
386 X_Err_Code := 'S';
387
388 If SQL%ROWCOUNT = 0 THEN
389 X_Err_Code := 'E';
390 X_Err_Stage := 'No Row to delete for Installment '||to_char(X_Installment_Id)||' and Project '||to_char(X_Project_Id);
391
392 FND_MESSAGE.SET_NAME('GMS','GMS_NO_ROW_FOR_PRJ_TSK_SF');
393 FND_MESSAGE.SET_TOKEN('PROGRAM_NAME','GMS_SUMM_FUNDING_PKG : DELETE_GMS_SUMM_PROJ_FUNDING');
394 FND_MESSAGE.SET_TOKEN('INSTALLMENT_ID',to_char(X_Installment_Id) );
395 FND_MESSAGE.SET_TOKEN('PROJECT_ID', to_char(X_Project_Id) );
396 FND_MSG_PUB.add;
397 FND_MSG_PUB.Count_And_Get(p_count => p_msg_count,
398 p_data => X_Err_Stage );
399 End If;
400 Else
401 X_Total_Funding_Amount := (X_Total_Funding_Amount - X_Funding_Amount);
402 UPDATE_GMS_SUMM_PROJ_FUNDING(X_Installment_Id,
403 X_Project_Id,
404 X_Task_Id,
405 X_Total_Funding_Amount,
406 X_Err_Code,
407 X_Err_Stage);
408 If X_Err_Code <> 'S' then
409 RAISE FND_API.G_EXC_ERROR;
410 End If;
411 end if;
412
413 EXCEPTION
414 WHEN FND_API.G_EXC_ERROR THEN
415 RETCODE := X_Err_Code;
416 ERRBUF := X_Err_Stage;
417
418 End DELETE_GMS_SUMMARY_FUNDING;
419
420
421 Procedure UPDATE_GMS_SUMMARY_FUNDING(X_Installment_Id IN NUMBER,
422 X_Project_Id IN NUMBER,
423 X_Task_Id IN NUMBER DEFAULT NULL,
424 X_old_amount IN NUMBER,
425 X_new_amount IN NUMBER,
426 RETCODE OUT NOCOPY VARCHAR2,
427 ERRBUF OUT NOCOPY VARCHAR2) IS
428 X_Err_Code VARCHAR2(1);
429 X_Err_Stage VARCHAR2(200);
430 X_Total_Funding_Amount NUMBER(22,5);
431 X_Total_Billed_Amount NUMBER(22,5);
432 X_Total_Revenue_Amount NUMBER(22,5);
433
434 -- For Bug fix 3150477
435 CURSOR hard_limit_flag_cr IS
436 SELECT hard_limit_flag,invoice_limit_flag /*Bug 6642901*/
437 FROM gms_awards awd,
438 gms_installments_v ins
439 WHERE awd.award_id=ins.award_id
440 AND ins.installment_id = X_Installment_Id;
441
442 X_Hard_Limit_Flag VARCHAR2(1);
443 X_Invoice_Limit_Flag VARCHAR2(1); /*Bug 6642901*/
444 --End of bug fix 3150477
445
446 Begin
447 GET_GMS_SUMM_FUNDING(X_Installment_Id,
448 X_Project_Id,
449 X_Task_Id,
450 X_Total_Funding_Amount,
451 X_Total_Billed_Amount,
452 X_Total_Revenue_Amount,
453 X_Err_Code,
454 X_Err_Stage);
455 If X_Err_Code <> 'S' then
456 RAISE FND_API.G_EXC_ERROR;
457 End If;
458
459 -- For bug 3150477
460 OPEN hard_limit_flag_cr;
461 FETCH hard_limit_flag_cr INTO X_Hard_Limit_Flag,X_Invoice_Limit_Flag; /*Bug 6642901*/
462 CLOSE hard_limit_flag_cr;
463 -- End of Bug fix 3150477
464
465 X_Total_Funding_Amount := X_Total_Funding_Amount + ( X_new_amount - X_old_amount);
466 /* Bug 6445688. Modified code to split the hard limit logic separately for revenue limit and invoice limit.
467 Also replaced the single message with 2 separate revenue/invoice specific error messages. */
468
469 --Added hard limit flag check for bug 3150477
470 If (X_Hard_Limit_Flag ='Y') AND
471 ( /*(X_Total_Funding_Amount < X_Total_Billed_Amount) OR Commented for Bug 6642901*/
472 (X_Total_Funding_Amount < X_Total_Revenue_Amount)
473 ) then
474 X_Err_Code := 'E';
475 /* X_Err_Stage := 'Total Funding cannot go less than the Total Revenue Amount or Total Billed Amount';
476 FND_MESSAGE.SET_NAME('GMS','GMS_FUND_LESS_REV_BILL'); Commented for bug 6445688*/
477 X_Err_Stage := 'You cannot delete the funding line, as this will cause total funds to be less than the total revenue amount';
478 FND_MESSAGE.SET_NAME('GMS','GMS_FUND_LESS_REV');
479 FND_MSG_PUB.add;
480 FND_MSG_PUB.Count_And_Get(p_count => p_msg_count,
481 p_data => X_Err_Stage );
482 RAISE FND_API.G_EXC_ERROR;
483 Elsif (X_Invoice_Limit_Flag ='Y') AND (X_Total_Funding_Amount < X_Total_Billed_Amount) then
484 X_Err_Code := 'E';
485 X_Err_Stage := 'You cannot delete the funding line, as this will cause total funds to be less than the total billed amount';
486 FND_MESSAGE.SET_NAME('GMS','GMS_FUND_LESS_BILL');
487 FND_MSG_PUB.add;
488 FND_MSG_PUB.Count_And_Get(p_count => p_msg_count,
489 p_data => X_Err_Stage );
490 RAISE FND_API.G_EXC_ERROR;
491 Else
492 UPDATE_GMS_SUMM_PROJ_FUNDING(X_Installment_Id,
493 X_Project_Id,
494 X_Task_Id,
495 X_Total_Funding_Amount,
496 X_Err_Code,
497 X_Err_Stage);
498 If X_Err_Code <> 'S' then
499 RAISE FND_API.G_EXC_ERROR;
500 End If;
501 End If;
502
503
504
505 EXCEPTION
506 WHEN FND_API.G_EXC_ERROR THEN
507 RETCODE := X_Err_Code;
508 ERRBUF := X_Err_Stage;
509
510 End UPDATE_GMS_SUMMARY_FUNDING;
511
512 End GMS_SUMM_FUNDING_PKG;