DBA Data[Home] [Help]

PACKAGE BODY: APPS.GMS_AWARD_PUB

Source


1 PACKAGE BODY GMS_AWARD_PUB  AS
2 -- $Header: gmsawpbb.pls 120.2.12010000.2 2008/10/30 11:27:11 rrambati ship $
3 
4 	G_PKG_NAME  	CONSTANT VARCHAR2(30) := 'GMS_AWARD_PUB';
5 	E_VER_MISMATCH	EXCEPTION ;
6 
7 	G_msg_count		NUMBER ;
8 	G_msg_data		    varchar2(2000) ;
9 	G_calling_module	varchar2(30) ;
10 	G_product_code		varchar2(3) 	:= 'GMS' ;
11 	G_stage		    varchar2(80) ;
12 
13     	--
14 -- init_message_stack
15 -- init_message_stack Initialize the the error message PL/SQL
16 -- Table and set the context for the private Package.
17 -- This is called at the begining of the program unit.
18 --
19 	-- +++++++++++++
20 	PROCEDURE init_message_stack is
21 	BEGIN
22 		  gms_award_pvt.init_message_stack ;
23 
24 	END init_message_stack ;
25 
26     	--
27     	-- reset_message_flag
28     	-- reset_message_flag set the context for the private Package.
29     	-- This is called at the end of the program unit.
30     	--
31 	-- ++++++++++++
32 	PROCEDURE reset_message_flag is
33 	BEGIN
34 		  gms_award_pvt.reset_message_flag ;
35 
36 	END reset_message_flag ;
37 
38     	--
39     	-- add_message_TO_STACK
40     	-- add_message_to_stack - This is a private program unit
41     	-- defined in this package to add error messages to
42     	-- the PL/SQL message table.
43     	-- This updates the G_msg_count after adding a message
44     	-- to the message variable.
45     	--
46 
47 	-- +++++++++++++
48 	PROCEDURE add_message_to_stack( P_Label	IN Varchar2,
49 				    P_token1	IN varchar2 default NULL,
50 				    P_val1	IN varchar2 default NULL,
51 				    P_token2	IN varchar2 default NULL,
52 				    P_val2	in varchar2 default NULL,
53 				    P_token3	IN varchar2 default NULL,
54 				    P_val3	in varchar2 default NULL ) is
55 	BEGIN
56 
57 		gms_award_pvt.add_message_to_stack(P_Label, P_token1, P_val1, P_token2, P_val2, P_token3, P_val3 ) ;
58 
59 
60 	END add_message_to_stack ;
61 
62 	-- SET_RETURN_STATUS
63     	-- This routine sets the return status for the failures.
64 	-- X_RETURN_STATUS : <S>uccess, [E] Business Rule Violation
65 	-- U - Unexpected Error
66 	-- P_TYPE := B - Business Validations, E- Exception
67 	--
68 
69 	-- +++++++++++++
70 	PROCEDURE set_return_status(X_return_status IN OUT NOCOPY VARCHAR2,
71 				 p_type in varchar2 DEFAULT 'B' ) is
72 	begin
73 		gms_award_pvt.set_return_status( X_return_status, p_type  ) ;
74 
75 	END set_return_status ;
76 
77     -- =====================================================
78     -- Utility Functions for creating an award
79     -- =====================================================
80 
81     --
82     -- get_Funds_ctrl_code
83     -- This is a function defined to return
84     -- funds control code for the corresponding name.
85     -- The code values are as follows
86     -- B- ABSOLUTE
87     -- D- ADVISORY
88     -- N- NONE
89     --
90     FUNCTION get_Funds_ctrl_code( p_fctrl_name varchar2 )
91     return varchar2 is
92         l_dummy varchar2(1) ;
93     begin
94         IF p_fctrl_name = 'ABSOLUTE' THEN
95             l_dummy := 'B' ;
96         ELSIF p_fctrl_name = 'ADVISORY' THEN
97             l_dummy := 'D' ;
98         ELSIF p_fctrl_name = 'NONE' THEN
99             l_dummy := 'N' ;
100         END IF ;
101 
102         return l_dummy ;
103     END  get_Funds_ctrl_code ;
104 
105     --
106     -- proc_set_record
107     -- This is a program unit defined to populate
108     -- record group for the parameters supplied
109     -- to the create_award API.
110     --
111     -- +++++++++++++
112     PROCEDURE proc_set_record (
113 				 AWARD_NUMBER                IN VARCHAR2,
114 				 AWARD_SHORT_NAME            IN VARCHAR2,
115 				 AWARD_FULL_NAME             IN VARCHAR2,
116 				 FUNDING_SOURCE_ID           IN NUMBER,
117 				 START_DATE_ACTIVE           IN DATE,
118 				 END_DATE_ACTIVE             IN DATE,
119 				 CLOSE_DATE                  IN DATE,
120 				 FUNDING_SOURCE_AWARD_NUMBER IN VARCHAR2,
121 				 AWARD_PURPOSE_CODE          IN VARCHAR2,
122 				 STATUS                      IN VARCHAR2,
123 				 ALLOWABLE_SCHEDULE_ID       IN NUMBER,
124 				 IDC_SCHEDULE_ID             IN NUMBER,
125 				 REVENUE_DISTRIBUTION_RULE   IN VARCHAR2,
126 				 BILLING_DISTRIBUTION_RULE   IN VARCHAR2,
127 				 BILLING_FORMAT              IN VARCHAR2,
128 				 BILLING_TERM                IN NUMBER,
129 				 AWARD_PROJECT_ID            IN NUMBER,
130 				 AGREEMENT_ID                IN NUMBER,
131 				 AWARD_TEMPLATE_FLAG         IN VARCHAR2,
132 				 PREAWARD_DATE               IN DATE,
133 				 AWARD_MANAGER_ID            IN NUMBER,
134 				 AGENCY_SPECIFIC_FORM        IN VARCHAR2,
135 				 BILL_TO_CUSTOMER_ID         IN NUMBER,
136 				 TRANSACTION_NUMBER          IN VARCHAR2,
137 				 AMOUNT_TYPE                 IN VARCHAR2,
138 				 BOUNDARY_CODE               IN VARCHAR2,
139 				 FUND_CONTROL_LEVEL_AWARD    IN VARCHAR2,
140 				 FUND_CONTROL_LEVEL_TASK     IN VARCHAR2,
141 				 FUND_CONTROL_LEVEL_RES_GRP  IN VARCHAR2,
142 				 FUND_CONTROL_LEVEL_RES      IN VARCHAR2,
143 				 ATTRIBUTE_CATEGORY          IN VARCHAR2,
144 				 ATTRIBUTE1                  IN VARCHAR2,
145 				 ATTRIBUTE2                  IN VARCHAR2,
146 				 ATTRIBUTE3                  IN VARCHAR2,
147 				 ATTRIBUTE4                  IN VARCHAR2,
148 				 ATTRIBUTE5                  IN VARCHAR2,
149 				 ATTRIBUTE6                  IN VARCHAR2,
150 				 ATTRIBUTE7                  IN VARCHAR2,
151 				 ATTRIBUTE8                  IN VARCHAR2,
152 				 ATTRIBUTE9                  IN VARCHAR2,
153 				 ATTRIBUTE10                 IN VARCHAR2,
154 				 ATTRIBUTE11                 IN VARCHAR2,
155 				 ATTRIBUTE12                 IN VARCHAR2,
156 				 ATTRIBUTE13                 IN VARCHAR2,
157 				 ATTRIBUTE14                 IN VARCHAR2,
158 				 ATTRIBUTE15                 IN VARCHAR2,
159 				 TEMPLATE_START_DATE_ACTIVE  IN DATE,
160 				 TEMPLATE_END_DATE_ACTIVE    IN DATE,
161 				 TYPE                        IN VARCHAR2,
162 				 ORG_ID                      IN NUMBER,
163 				 COST_IND_SCH_FIXED_DATE     IN DATE,
164 				 LABOR_INVOICE_FORMAT_ID     IN NUMBER,
165 				 NON_LABOR_INVOICE_FORMAT_ID IN NUMBER,
166 				 BILL_TO_ADDRESS_ID          IN NUMBER,
167 				 SHIP_TO_ADDRESS_ID          IN NUMBER,
168 				 LOC_BILL_TO_ADDRESS_ID      IN NUMBER,
169 				 LOC_SHIP_TO_ADDRESS_ID      IN NUMBER,
170 				 AWARD_ORGANIZATION_ID       IN NUMBER,
171 				 HARD_LIMIT_FLAG             IN VARCHAR2,
172                  INVOICE_LIMIT_FLAG          IN VARCHAR2, /*Bug 6642901*/
173 				 BILLING_OFFSET              IN NUMBER,
174 				 BILLING_CYCLE_ID            IN NUMBER,
175 				 BUDGET_WF_ENABLED_FLAG      IN VARCHAR2,
176 				 PROPOSAL_ID                 IN NUMBER,
177 				 AWARD_REC                  IN OUT NOCOPY gms_awards_all%ROWTYPE ) is
178 	BEGIN
179 		award_rec.AWARD_NUMBER                    	:=    AWARD_NUMBER                    ;
180 		award_rec.AWARD_SHORT_NAME                	:=    AWARD_SHORT_NAME                ;
181 		award_rec.AWARD_FULL_NAME                 	:=    AWARD_FULL_NAME                 ;
182 		award_rec.FUNDING_SOURCE_ID               	:=    FUNDING_SOURCE_ID               ;
183 		award_rec.START_DATE_ACTIVE               	:=    START_DATE_ACTIVE               ;
184 		award_rec.END_DATE_ACTIVE                 	:=    END_DATE_ACTIVE                 ;
185 		award_rec.CLOSE_DATE                      	:=    CLOSE_DATE                      ;
186 		award_rec.FUNDING_SOURCE_AWARD_NUMBER     	:=    FUNDING_SOURCE_AWARD_NUMBER     ;
187 		award_rec.AWARD_PURPOSE_CODE              	:=    AWARD_PURPOSE_CODE              ;
188 		award_rec.STATUS                          	:=    STATUS                          ;
189 		award_rec.ALLOWABLE_SCHEDULE_ID           	:=    ALLOWABLE_SCHEDULE_ID           ;
190 		award_rec.IDC_SCHEDULE_ID                 	:=    IDC_SCHEDULE_ID                 ;
191 		award_rec.REVENUE_DISTRIBUTION_RULE       	:=    REVENUE_DISTRIBUTION_RULE       ;
192 		award_rec.BILLING_DISTRIBUTION_RULE       	:=    BILLING_DISTRIBUTION_RULE       ;
193 		award_rec.BILLING_FORMAT                  	:=    BILLING_FORMAT                  ;
194 		award_rec.BILLING_TERM                    	:=    BILLING_TERM                    ;
195 		award_rec.AWARD_PROJECT_ID                	:=    AWARD_PROJECT_ID                ;
196 		award_rec.AGREEMENT_ID                    	:=    AGREEMENT_ID                    ;
197 		award_rec.AWARD_TEMPLATE_FLAG             	:=    AWARD_TEMPLATE_FLAG             ;
198 		award_rec.PREAWARD_DATE                   	:=    PREAWARD_DATE                   ;
199 		award_rec.AWARD_MANAGER_ID                	:=    AWARD_MANAGER_ID                ;
200 		award_rec.AGENCY_SPECIFIC_FORM            	:=    AGENCY_SPECIFIC_FORM            ;
201 		award_rec.BILL_TO_CUSTOMER_ID             	:=    BILL_TO_CUSTOMER_ID             ;
202 		award_rec.TRANSACTION_NUMBER              	:=    TRANSACTION_NUMBER              ;
203 		award_rec.AMOUNT_TYPE                     	:=    AMOUNT_TYPE                     ;
204 		award_rec.BOUNDARY_CODE                   	:=    BOUNDARY_CODE                   ;
205 		award_rec.FUND_CONTROL_LEVEL_AWARD        	:=    FUND_CONTROL_LEVEL_AWARD        ;
206 		award_rec.FUND_CONTROL_LEVEL_TASK         	:=    FUND_CONTROL_LEVEL_TASK         ;
207 		award_rec.FUND_CONTROL_LEVEL_RES_GRP      	:=    FUND_CONTROL_LEVEL_RES_GRP      ;
208 		award_rec.FUND_CONTROL_LEVEL_RES          	:=    FUND_CONTROL_LEVEL_RES          ;
209 		award_rec.ATTRIBUTE_CATEGORY              	:=    ATTRIBUTE_CATEGORY              ;
210 		award_rec.ATTRIBUTE1                      	:=    ATTRIBUTE1                      ;
211 		award_rec.ATTRIBUTE2                      	:=    ATTRIBUTE2                      ;
212 		award_rec.ATTRIBUTE3                      	:=    ATTRIBUTE3                      ;
213 		award_rec.ATTRIBUTE4                      	:=    ATTRIBUTE4                      ;
214 		award_rec.ATTRIBUTE5                      	:=    ATTRIBUTE5                      ;
215 		award_rec.ATTRIBUTE6                      	:=    ATTRIBUTE6                      ;
216 		award_rec.ATTRIBUTE7                      	:=    ATTRIBUTE7                      ;
217 		award_rec.ATTRIBUTE8                      	:=    ATTRIBUTE8                      ;
218 		award_rec.ATTRIBUTE9                      	:=    ATTRIBUTE9                      ;
219 		award_rec.ATTRIBUTE10                     	:=    ATTRIBUTE10                     ;
220 		award_rec.ATTRIBUTE11                     	:=    ATTRIBUTE11                     ;
221 		award_rec.ATTRIBUTE12                     	:=    ATTRIBUTE12                     ;
222 		award_rec.ATTRIBUTE13                     	:=    ATTRIBUTE13                     ;
223 		award_rec.ATTRIBUTE14                     	:=    ATTRIBUTE14                     ;
224 		award_rec.ATTRIBUTE15                     	:=    ATTRIBUTE15                     ;
225 		award_rec.TEMPLATE_START_DATE_ACTIVE      	:=    TEMPLATE_START_DATE_ACTIVE      ;
226 		award_rec.TEMPLATE_END_DATE_ACTIVE        	:=    TEMPLATE_END_DATE_ACTIVE        ;
227 		award_rec.TYPE                            	:=    TYPE                            ;
228 		award_rec.ORG_ID                          	:=    ORG_ID                          ;
229 		award_rec.COST_IND_SCH_FIXED_DATE         	:=    COST_IND_SCH_FIXED_DATE         ;
230 		award_rec.LABOR_INVOICE_FORMAT_ID         	:=    LABOR_INVOICE_FORMAT_ID         ;
231 		award_rec.NON_LABOR_INVOICE_FORMAT_ID     	:=    NON_LABOR_INVOICE_FORMAT_ID     ;
232 		award_rec.BILL_TO_ADDRESS_ID              	:=    BILL_TO_ADDRESS_ID              ;
233 		award_rec.SHIP_TO_ADDRESS_ID              	:=    SHIP_TO_ADDRESS_ID              ;
234 		award_rec.LOC_BILL_TO_ADDRESS_ID          	:=    LOC_BILL_TO_ADDRESS_ID          ;
235 		award_rec.LOC_SHIP_TO_ADDRESS_ID          	:=    LOC_SHIP_TO_ADDRESS_ID          ;
236 		award_rec.AWARD_ORGANIZATION_ID           	:=    AWARD_ORGANIZATION_ID           ;
237 		award_rec.HARD_LIMIT_FLAG                 	:=    HARD_LIMIT_FLAG                 ;
238 		award_rec.INVOICE_LIMIT_FLAG                 	:=    INVOICE_LIMIT_FLAG              ; /*Bug 6642901*/
239 		award_rec.BILLING_OFFSET                  	:=    BILLING_OFFSET                  ;
240 		award_rec.BILLING_CYCLE_ID                	:=    BILLING_CYCLE_ID                ;
241 		award_rec.BUDGET_WF_ENABLED_FLAG          	:=    BUDGET_WF_ENABLED_FLAG          ;
242 		award_rec.PROPOSAL_ID                     	:=    PROPOSAL_ID                     ;
243 	END proc_set_record ;
244     -- ========================================================================================
245     -- End of utility Functions/Procedures for award.
246     -- ========================================================================================
247 
248     -- CREATE_AWARD
249     -- Create award is a public API provided to create award
250     -- into grants accounting. This is the API used to
251     -- transfer Legacy system data into grants accounting.
252     -- OUT NOCOPY Parameters meanings
253     -- P_MSG_COUNT              :   Holds no. of messages in the global
254     --                              message table.
255     -- P_MSG_DATE               :   Holds the message code, if the API
256     --                              returned only one error/warning message.
257     -- X_return_status          :   The indicator of success/Failure
258     --                              S- Success, E- and U- Failure
259     -- p_award_id               :   The Award ID created.
260 
261     -- ===============================================================================
262     -- CREATE_AWARD :
263     -- Create award has all the parameters that we have in gms_awards_all table.
264     -- The ID's in the table are replaced by corresponding value. Users must
265     -- provide decode values instead of code values for certain arguments.
266     -- X_return_status 	: 	S- Success,
267     --				E- Business Rule Validation error
268     --				U- Unexpected Error
269     -- P_API_VERSION_NUMBER	:	1.0
270     -- ===============================================================================
271     -- +++++++++++++
272     PROCEDURE	create_award(
273 				X_MSG_COUNT			OUT NOCOPY	NUMBER,
274 				X_MSG_DATA			OUT NOCOPY	VARCHAR2,
275 				X_return_status			OUT NOCOPY	VARCHAR2,
276 				X_AWARD_ID			OUT NOCOPY	NUMBER,
277 				P_CALLING_MODULE		IN	VARCHAR2,
278 				P_API_VERSION_NUMBER		IN	NUMBER,
279 				P_LAST_UPDATE_DATE		IN	DATE,
280 				P_LAST_UPDATED_BY		IN	NUMBER,
281 				P_CREATED_BY			IN	NUMBER,
282 				P_CREATION_DATE			IN	DATE,
283 				P_LAST_UPDATE_LOGIN		IN	NUMBER,
284 				P_AWARD_NUMBER			IN	VARCHAR2,
285 				P_AWARD_SHORT_NAME		IN	VARCHAR2,
286 				P_AWARD_FULL_NAME		IN	VARCHAR2,
287 				P_AWARD_START_DATE		IN	DATE,
288 				P_AWARD_END_DATE		IN	DATE,
289 				P_AWARD_CLOSE_DATE		IN	DATE,
290 				P_PREAWARD_DATE			IN	DATE,
291 				P_AWARD_PURPOSE_CODE		IN 	VARCHAR2,
292 				P_AWARD_STATUS_CODE		IN	VARCHAR2,
293 				P_AWARD_MANAGER_ID		IN	NUMBER,
294 				P_AWARD_ORGANIZATION_ID		IN	NUMBER,
295 				P_FUNDING_SOURCE_ID		IN	NUMBER,
296 				P_FUNDING_SOURCE_AWARD_NUM	IN	VARCHAR2,
297 				P_ALLOWABLE_SCHEDULE		IN	VARCHAR2,
298 				P_INDIRECT_SCHEDULE		IN	VARCHAR2,
299 				P_COST_IND_SCH_FIXED_DATE	IN	DATE,
300 				P_REVENUE_DISTRIBUTION_RULE	IN	VARCHAR2,
301 				P_BILLING_DISTRIBUTION_RULE	IN	VARCHAR2,
302 				P_BILLING_FORMAT		IN	VARCHAR2,
303 				P_BILLING_TERM_ID		IN	NUMBER,
304 				P_AGENCY_FORM			IN	VARCHAR2,
305 				P_BILL_TO_CUSTOMER_ID		IN	VARCHAR2,
306 				P_LABOR_INVOICE_FORMAT_ID	IN	VARCHAR2,
307 				P_NON_LABOR_INVOICE_FORMAT_ID	IN	VARCHAR2,
308 				P_BILL_TO_ADDRESS_ID		IN	NUMBER,
309 				P_SHIP_TO_ADDRESS_ID		IN	NUMBER,
310 				P_LOC_BILL_TO_ADDRESS_ID	IN	NUMBER,
311 				P_LOC_SHIP_TO_ADDRESS_ID	IN	NUMBER,
312 				P_HARD_LIMIT_FLAG		IN	VARCHAR2,
313 				P_INVOICE_LIMIT_FLAG		IN	VARCHAR2, /*Bug 6642901*/
314 				P_BILLING_OFFSET		IN	NUMBER,
315 				P_BILLING_CYCLE			IN	VARCHAR2,
316 				P_TRANSACTION_NUM		IN	VARCHAR2,
317 				P_AMOUNT_TYPE_CODE		IN	VARCHAR2,
318 				P_BOUNDARY_CODE			IN	VARCHAR2,
319 				P_FUNDS_CONTROL_AT_AWARD	IN	VARCHAR2,
320 				P_FUNDS_CONTROL_AT_TASK		IN	VARCHAR2,
321 				P_FUNDS_CONTROL_AT_RES_GROUP    IN	VARCHAR2,
322 				P_FUNDS_CONTROL_AT_RES	        IN	VARCHAR2,
323 				P_ATTRIBUTE_CATEGORY		IN	VARCHAR2,
324 				P_ATTRIBUTE1			IN	VARCHAR2,
325 				P_ATTRIBUTE2			IN	VARCHAR2,
326 				P_ATTRIBUTE3			IN	VARCHAR2,
327 				P_ATTRIBUTE4			IN	VARCHAR2,
328 				P_ATTRIBUTE5			IN	VARCHAR2,
329 				P_ATTRIBUTE6			IN	VARCHAR2,
330 				P_ATTRIBUTE7			IN	VARCHAR2,
331 				P_ATTRIBUTE8			IN	VARCHAR2,
332 				P_ATTRIBUTE9			IN	VARCHAR2,
333 				P_ATTRIBUTE10			IN	VARCHAR2,
334 				P_ATTRIBUTE11			IN	VARCHAR2,
335 				P_ATTRIBUTE12			IN	VARCHAR2,
336 				P_ATTRIBUTE13			IN	VARCHAR2,
337 				P_ATTRIBUTE14			IN	VARCHAR2,
338 				P_ATTRIBUTE15			IN	VARCHAR2,
339 				P_AGREEMENT_TYPE		IN	VARCHAR2,
340 				P_ORG_ID			    IN	NUMBER,
341 				P_WF_ENABLED_FLAG		IN	VARCHAR2,
342 				P_PROPOSAL_ID			IN	NUMBER ) IS
343 
344 
345         l_api_name              varchar2(30) := 'GMS_AWARD_PUB.CREATE_AWARD';
346         L_allow_schedule_id     gms_allowability_schedules.allowability_schedule_id%TYPE ;
347         L_error                 BOOLEAN := FALSE ;
348 
349         L_IDC_schedule_type     pa_ind_rate_schedules.ind_rate_schedule_type%TYPE ;
350         L_ind_rate_sch_id       pa_ind_rate_schedules.ind_rate_sch_id%TYPE ;
351 
352         L_award_rec             GMS_AWARDS_ALL%ROWTYPE ;
353         L_award_id              GMS_AWARDS_ALL.AWARD_ID%TYPE ;
354 
355         L_billing_cycle_id      pa_billing_cycles.billing_cycle_id%TYPE ;
356         L_fctrl_award           gms_awards_all.fund_control_level_award%TYPE;
357         L_fctrl_task            gms_awards_all.fund_control_level_task%TYPE;
358         L_fctrl_RGP             gms_awards_all.fund_control_level_res_grp%TYPE;
359         L_fctrl_res             gms_awards_all.fund_control_level_res%TYPE;
360 	L_row_id		varchar2(45) ;
361 	l_default_org_id	GMS_AWARDS_ALL.ORG_ID%TYPE;
362 	MO_ORG_INVALID_EXCEPTION EXCEPTION;
363 
364 
365         CURSOR C_BILL is
366         SELECT billing_cycle_id
367           FROM pa_billing_cycles
368          WHERE trunc(sysdate) between start_date_active
369            and NVL( end_date_active, sysdate )
370 	   and billing_cycle_name = P_BILLING_CYCLE ;
371 
372 	CURSOR C_allowable_sch is
373 	SELECT allowability_schedule_id
374 	  FROM gms_allowability_schedules
375 	 WHERE allow_sch_name = P_ALLOWABLE_SCHEDULE ;
376 
377         CURSOR C_IDC_SCH is
378             SELECT  ind_rate_sch_id,
379                     ind_rate_schedule_type
380               FROM pa_ind_rate_schedules
381              WHERE ind_rate_sch_name = P_INDIRECT_SCHEDULE ;
382 
383     BEGIN
384 	G_stage := 'CREATE_AWARD_BEGINS' ;
385        	init_message_stack  ;
386 
387 	savepoint CREATE_AWARD_SAVE ;
388 	X_return_status	:= FND_API.G_RET_STS_SUCCESS;
389 
390         G_stage := 'FND_API.Compatible_API_Call' ;
391 
392     	IF NOT FND_API.Compatible_API_Call ( g_api_version_number	,
393 		 	                     p_api_version_number	,
394 			                     l_api_name 	    	,
395 			                     G_PKG_NAME 	    	)
396      	THEN
397 		--RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
398 		RAISE e_ver_mismatch ;
399 	END IF ;
400 
401 	--=============================
402 	-- Shared Service Enhancement
403 	--=============================
404 	G_stage := 'MOAC INIT';
405 
406 	MO_GLOBAL.INIT('GMS');
407 
408 	l_default_org_id := MO_GLOBAL.get_valid_org(p_org_id);
409 
410 	IF l_default_org_id is null then
411 		FND_MESSAGE.SET_NAME ('MO',' MO_ORG_INVALID');
412 		RAISE MO_ORG_INVALID_EXCEPTION;
413 	END IF;
414 
415 
416 	-- ==============================
417 	-- Convert Names/Decode into ID's.
418 	-- ==============================
419         G_stage := 'ID-NAME-CONV' ;
420 
421         IF P_ALLOWABLE_SCHEDULE is not NULL THEN
422                 OPEN C_allowable_sch ;
423                 FETCH C_allowable_sch into L_allow_schedule_id ;
424 
425                 IF C_allowable_sch%NOTFOUND THEN
426       		   	add_message_to_stack( P_label => 'GMS_AWD_ACD_INVALID' ) ;
427 		       	l_error := TRUE ;
428                 END IF ;
429 
430                 CLOSE C_allowable_sch ;
431         END IF ;
432 
433         IF P_INDIRECT_SCHEDULE is not NULL THEN
434                 OPEN C_IDC_SCH ;
435                 FETCH C_IDC_SCH into L_ind_rate_sch_id, L_IDC_schedule_type ;
436 
437                 IF C_IDC_SCH%NOTFOUND THEN
438       	   		add_message_to_stack( P_label => 'GMS_IDC_SCH_INVALID' ) ;
439 	   		l_error := TRUE ;
440                 END IF ;
441 
442                 CLOSE C_IDC_SCH ;
443          END IF ;
444 
445          IF P_billing_cycle is not NULL THEN
446                 OPEN C_bill ;
447                 FETCH C_bill into L_billing_cycle_id ;
448 
449                 IF C_BILL%NOTFOUND THEN
450 		   add_message_to_stack( P_label => 'GMS_BILL_CYC_INVALID' ) ;
451 		   l_error := TRUE ;
452                 END IF ;
453 
454                 CLOSE C_BILL ;
455          END IF ;
456 
457 	 IF NVL(P_FUNDS_CONTROL_AT_AWARD	, 'ABSOLUTE') not in ( 'ABSOLUTE', 'ADVISORY', 'NONE' )
458          THEN
459           		add_message_to_stack( P_label => 'GMS_FUNDS_CTRL_AWD_INVALID' ) ;
460     			l_error := TRUE ;
461           END IF ;
462 
463 	  IF NVL(P_FUNDS_CONTROL_AT_TASK	, 'ABSOLUTE') not in ( 'ABSOLUTE', 'ADVISORY', 'NONE' )
464           THEN
465           		add_message_to_stack( P_label => 'GMS_FUNDS_CTRL_TASK_INVALID' ) ;
466     			l_error := TRUE ;
467           END IF ;
468 
469 	  IF NVL(P_FUNDS_CONTROL_AT_RES_GROUP	, 'ABSOLUTE') not in ( 'ABSOLUTE', 'ADVISORY', 'NONE' )
470           THEN
471           		add_message_to_stack( P_label => 'GMS_FUNDS_CTRL_RGP_INVALID' ) ;
472     			l_error := TRUE ;
473           END IF ;
474 
475 	  IF NVL(P_FUNDS_CONTROL_AT_RES	, 'ABSOLUTE') not in ( 'ABSOLUTE', 'ADVISORY', 'NONE' )
476           THEN
477           		add_message_to_stack( P_label => 'GMS_FUNDS_CTRL_RES_INVALID' ) ;
478     			l_error := TRUE ;
479           END IF ;
480 
481           L_fctrl_award := get_funds_ctrl_code(P_FUNDS_CONTROL_AT_AWARD ) ;
482           L_fctrl_task  := get_funds_ctrl_code(P_FUNDS_CONTROL_AT_TASK ) ;
483           L_fctrl_RGP   := get_funds_ctrl_code(P_FUNDS_CONTROL_AT_RES_GROUP ) ;
484           L_fctrl_res   := get_funds_ctrl_code(P_FUNDS_CONTROL_AT_RES ) ;
485 
486           If l_error then
487                 set_return_status(X_return_status, 'B' ) ;
488           END IF ;
489 
490           G_stage := 'SET RECORD PARAM' ;
491 
492           proc_set_record (
493 				 P_AWARD_NUMBER,
494 				 P_AWARD_SHORT_NAME,
495 				 P_AWARD_FULL_NAME,
496 				 P_FUNDING_SOURCE_ID,
497 				 P_AWARD_START_DATE,
498 				 P_AWARD_END_DATE,
499 				 P_AWARD_CLOSE_DATE,
500 				 P_FUNDING_SOURCE_AWARD_NUM,
501 				 P_AWARD_PURPOSE_CODE,
502 				 P_AWARD_STATUS_CODE,
503 				 L_allow_schedule_id,
504 				 L_ind_rate_sch_id,
505 				 P_REVENUE_DISTRIBUTION_RULE ,
506 				 P_BILLING_DISTRIBUTION_RULE ,
507 				 P_BILLING_FORMAT            ,
508 				 P_BILLING_TERM_ID           ,
509 				 NULL ,
510 				 NULL,
511 				 'DEFERRED',
512 				 P_PREAWARD_DATE,
513 				 P_AWARD_MANAGER_ID,
514 				 P_AGENCY_FORM,
515 				 P_BILL_TO_CUSTOMER_ID,
516 				 P_TRANSACTION_NUM ,
517 				 P_AMOUNT_TYPE_CODE,
518 				 P_BOUNDARY_CODE,
519 				 L_fctrl_award,
520 				 L_fctrl_task,
521 				 L_fctrl_rgp,
522 				 L_fctrl_res,
523 				 P_ATTRIBUTE_CATEGORY,
524 				 P_ATTRIBUTE1,
525 				 P_ATTRIBUTE2,
526 				 P_ATTRIBUTE3,
527 				 P_ATTRIBUTE4,
528 				 P_ATTRIBUTE5,
529 				 P_ATTRIBUTE6,
530 				 P_ATTRIBUTE7,
531 				 P_ATTRIBUTE8,
532 				 P_ATTRIBUTE9,
533 				 P_ATTRIBUTE10,
534 				 P_ATTRIBUTE11,
535 				 P_ATTRIBUTE12,
536 				 P_ATTRIBUTE13,
537 				 P_ATTRIBUTE14,
538 				 P_ATTRIBUTE15,
539 				 NULL,
540 				 NULL  ,
541 				 P_AGREEMENT_TYPE            ,
542 				 --P_ORG_ID                    ,
543 				 l_default_org_id,
544 				 P_COST_IND_SCH_FIXED_DATE   ,
545 				 P_LABOR_INVOICE_FORMAT_ID  ,
546 				 P_NON_LABOR_INVOICE_FORMAT_ID ,
547 				 P_BILL_TO_ADDRESS_ID   ,
548 				 P_SHIP_TO_ADDRESS_ID    ,
549 				 P_LOC_BILL_TO_ADDRESS_ID  ,
550 				 P_LOC_SHIP_TO_ADDRESS_ID  ,
551 				 P_AWARD_ORGANIZATION_ID,
552 				 P_HARD_LIMIT_FLAG     ,
553 				 P_INVOICE_LIMIT_FLAG     , /*Bug 6642901*/
554 				 P_BILLING_OFFSET      ,
555 				 L_billing_cycle_id,
556 				 P_WF_ENABLED_FLAG ,
557 				 P_PROPOSAL_ID ,
558           		         L_AWARD_REC      ) ;
559 
560           l_award_rec.last_updated_by      := NVL(P_LAST_UPDATED_BY, fnd_global.user_id) ;
561 	  l_award_rec.last_update_date     := NVL(P_LAST_UPDATE_DATE, SYSDATE) ;
562           l_award_rec.last_updated_by      := NVL(P_LAST_UPDATED_BY, fnd_global.user_id) ;
563 	  l_award_rec.created_by           := NVL(P_CREATED_BY, fnd_global.user_id ) ;
564 	  l_award_rec.creation_date        := NVL(P_CREATION_DATE, SYSDATE) ;
565 	  l_award_rec.last_update_login    := NVL(P_LAST_UPDATE_LOGIN, fnd_global.user_id ) ;
566 	  l_award_rec.award_number         := P_AWARD_NUMBER ;
567 
568           G_stage := 'gms_award_pvt.create_award' ;
569 	  gms_award_pvt.create_award( X_msg_count,
570 		                    X_MSG_DATA	,
571 		                    X_return_status	,
572 		                    L_ROW_ID	,
573 		                    X_AWARD_ID	,
574 		                    P_CALLING_MODULE,
575 		                    P_API_VERSION_NUMBER,
576 		                    L_AWARD_REC	) ;
577 
578           reset_message_flag ;
579     EXCEPTION
580 	WHEN e_ver_mismatch THEN
581          	add_message_to_stack( P_label => 'GMS_API_VER_MISMATCH' ) ;
582                 set_return_status(X_return_status, 'B' ) ;
583                 X_msg_count := G_msg_count ;
584                 X_msg_data  := G_msg_data ;
585 
586 	WHEN fnd_api.g_exc_error THEN
587 		ROLLBACK TO create_award_save ;
588                 set_return_status(X_return_status, 'B' ) ;
589                 X_msg_count := G_msg_count ;
590                 X_msg_data  := G_msg_data ;
591 	WHEN others THEN
592 		ROLLBACK TO create_award_save;
593 		X_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
594 		FND_MSG_PUB.add_exc_msg
595 				( p_pkg_name		=> G_PKG_NAME
596 				, p_procedure_name	=> l_api_name	);
597 		FND_MSG_PUB.Count_And_Get
598 				(   p_count		=>	X_msg_count	,
599 				    p_data		=>	X_msg_data	);
600 
601 	END create_award ;
602 
603 	--===============================================================================
604 	-- COPY_AWARD :
605 	-- Copy award has all the parameters that we have in quick entry for award.
606 	-- The ID's in the table are replaced by corresponding value. Users must
607 	-- provide decode values instead of code values.
608 	-- X_return_status 	: 	S- Success,
609 	--				E- Business Rule Validation error
610 	--				U- Unexpected Error
611 	-- P_API_VERSION_NUMBER	:	1.0
612 	-- ===============================================================================
613         -- +++++++++++++
614 	PROCEDURE	copy_award(
615 				X_MSG_COUNT			OUT NOCOPY	NUMBER,
616 				X_MSG_DATA			OUT NOCOPY	VARCHAR2,
617 				X_return_status			OUT NOCOPY	VARCHAR2,
618 				X_AWARD_ID			OUT NOCOPY	NUMBER,
619 				P_CALLING_MODULE		IN	VARCHAR2,
620 				P_API_VERSION_NUMBER		IN	NUMBER,
621 				P_AWARD_BASE_ID			IN	NUMBER,
622 				P_AWARD_NUMBER			IN	VARCHAR2,
623 				P_AWARD_SHORT_NAME		IN	VARCHAR2,
624 				P_AWARD_FULL_NAME		IN	VARCHAR2,
625 				P_AWARD_START_DATE		IN	DATE,
626 				P_AWARD_END_DATE		IN	DATE,
627 				P_AWARD_CLOSE_DATE		IN	DATE,
628 				P_PREAWARD_DATE			IN	DATE,
629 				P_AWARD_PURPOSE_CODE		IN 	VARCHAR2,
630 				P_AWARD_STATUS_CODE		IN	VARCHAR2,
631 				P_AWARD_MANAGER_ID		IN	NUMBER,
632 				P_AWARD_ORGANIZATION_ID		IN	NUMBER,
633 				P_FUNDING_SOURCE_ID		IN	NUMBER,
634 				P_FUNDING_SOURCE_AWARD_NUM	IN	VARCHAR2,
635 				P_ALLOWABLE_SCHEDULE		IN	VARCHAR2,
636 				P_INDIRECT_SCHEDULE		IN	VARCHAR2,
637 				P_COST_IND_SCH_FIXED_DATE	IN	DATE,
638 				P_REVENUE_DISTRIBUTION_RULE	IN	VARCHAR2,
639 				P_BILLING_DISTRIBUTION_RULE	IN	VARCHAR2,
640 				P_BILLING_TERM_ID		IN	NUMBER,
641 				P_LABOR_INVOICE_FORMAT_ID	IN	VARCHAR2,
642 				P_NON_LABOR_INVOICE_FORMAT_ID	IN	VARCHAR2,
643 				P_BILLING_CYCLE			IN	VARCHAR2,
644 				P_AMOUNT_TYPE_CODE		IN	VARCHAR2,
645 				P_BOUNDARY_CODE			IN	VARCHAR2,
646 				P_AGREEMENT_TYPE		IN	VARCHAR2,
647 				P_PROPOSAL_ID			IN	NUMBER  ) is
648 	BEGIN
649 		NULL ;
650 	END copy_award ;
651 
652 
653 	-- ===============================================================================
654 	-- CREATE_AWARD_INSTALLMENT :
655 	-- Create award installment  has all the parameters that we have in gms_awards_installment table.
656 	-- The ID's in the table are replaced by corresponding value. Users must
657 	-- provide decode values instead of code values.
658 	-- X_return_status 	: 	S- Success,
659 	--				E- Business Rule Validation error
660 	--				U- Unexpected Error
661 	-- P_API_VERSION_NUMBER	:	1.0
662 	-- ===============================================================================
663         -- +++++++++++++
664 	PROCEDURE CREATE_INSTALLMENT
665 			(X_MSG_COUNT                OUT NOCOPY     NUMBER ,
666 			 X_MSG_DATA                 OUT NOCOPY     VARCHAR2 ,
667 			 X_return_status            OUT NOCOPY     VARCHAR2 ,
668 			 X_INSTALLMENT_ID           OUT NOCOPY     NUMBER ,
669 			 P_CALLING_MODULE           IN      VARCHAR2 ,
670 			 P_API_VERSION_NUMBER       IN      NUMBER,
671 			 P_LAST_UPDATE_DATE         IN      DATE   ,
672 			 P_LAST_UPDATED_BY          IN      NUMBER ,
673 			 P_CREATED_BY               IN      NUMBER ,
674 			 P_CREATION_DATE            IN      DATE   ,
675 			 P_LAST_UPDATE_LOGIN        IN      NUMBER ,
676 			 P_AWARD_NUMBER             IN      VARCHAR2 ,
677 			 P_INSTALLMENT_NUMBER       IN      NUMBER ,
678 			 P_INSTALLMENT_TYPE_CODE    IN      VARCHAR2 ,
679 			 P_DESCRIPTION              IN      VARCHAR2  ,
680 			 P_ISSUE_DATE               IN      DATE ,
681 			 P_INSTALLMENT_START_DATE   IN      DATE ,
682 			 P_INSTALLMENT_END_DATE     IN      DATE ,
683 			 P_INSTALLMENT_CLOSE_DATE   IN      DATE  ,
684 			 P_ACTIVE_FLAG              IN      VARCHAR2 ,
685 			 P_BILLABLE_FLAG            IN      VARCHAR2 ,
686 			 P_DIRECT_COST              IN      NUMBER ,
687 			 P_INDIRECT_COST            IN      NUMBER ,
688 			 P_ATTRIBUTE_CATEGORY       IN      VARCHAR2 ,
689 			 P_ATTRIBUTE1               IN      VARCHAR2 ,
690 			 P_ATTRIBUTE2               IN      VARCHAR2 ,
691 			 P_ATTRIBUTE3               IN      VARCHAR2 ,
692 			 P_ATTRIBUTE4               IN      VARCHAR2 ,
693 			 P_ATTRIBUTE5               IN      VARCHAR2 ,
694 			 P_ATTRIBUTE6               IN      VARCHAR2 ,
695 			 P_ATTRIBUTE7               IN      VARCHAR2 ,
696 			 P_ATTRIBUTE8               IN      VARCHAR2 ,
697 			 P_ATTRIBUTE9               IN      VARCHAR2 ,
698 			 P_ATTRIBUTE10              IN      VARCHAR2 ,
699 			 P_ATTRIBUTE11              IN      VARCHAR2 ,
700 			 P_ATTRIBUTE12              IN      VARCHAR2 ,
701 			 P_ATTRIBUTE13              IN      VARCHAR2 ,
702 			 P_ATTRIBUTE14              IN      VARCHAR2 ,
703 			 P_ATTRIBUTE15              IN      VARCHAR2 ,
704 			 P_PROPOSAL_ID              IN      NUMBER
705 			)  IS
706 	BEGIN
707 		NULL ;
708 	END create_installment ;
709 
710 
711 	-- ==========================================================================================
712 	-- Personal or Award Roles are user defined positions or functions that people perform in
713 	-- activities funded by an award. Each Personnel or Award Role is linked to an individual
714 	-- Award .
715 	-- ==========================================================================================
716         -- +++++++++++++
717 	PROCEDURE CREATE_PERSONNEL
718 			(X_MSG_COUNT                OUT NOCOPY     NUMBER ,
719 			 X_MSG_DATA                 OUT NOCOPY     VARCHAR2 ,
720 			 X_return_status            OUT NOCOPY     VARCHAR2 ,
721 			 X_PERSONNEL_ID             OUT NOCOPY     NUMBER ,
722 			 P_CALLING_MODULE           IN      VARCHAR2  ,
723 			 P_API_VERSION_NUMBER       IN      NUMBER ,
724 			 P_LAST_UPDATE_DATE         IN      DATE   ,
725 			 P_LAST_UPDATED_BY          IN      NUMBER ,
726 			 P_CREATED_BY               IN      NUMBER ,
727 			 P_CREATION_DATE            IN      DATE  ,
728 			 P_LAST_UPDATE_LOGIN        IN      NUMBER,
729 			 P_AWARD_NUMBER             IN      VARCHAR2 ,
730 			 P_AWARD_ROLE_CODE          IN      VARCHAR2 ,
731 			 P_PERSON_ID                IN      VARCHAR2 ,
732 			 P_START_DATE_ACTIVE        IN      DATE ,
733 			 P_END_DATE_ACTIVE          IN      DATE ,
734 			 P_REQUIRED_FLAG            IN      VARCHAR2
735  			)IS
736 	BEGIN
737 			NULL ;
738 	END create_personnel ;
739 
740 
741 	-- ===========================================================================
742 	-- Award terms and conditions are stipulated by the Grantor that are indicated
743 	-- in an agreement or contract.
744 	-- ===========================================================================
745         -- +++++++++++++
746 	PROCEDURE CREATE_TERM_CONDITION
747 			(X_MSG_COUNT                OUT NOCOPY     NUMBER ,
748 			 X_MSG_DATA                 OUT NOCOPY     VARCHAR2 ,
749 			 X_return_status            OUT NOCOPY     VARCHAR2 ,
750 			 P_CALLING_MODULE           IN      VARCHAR2 ,
751 			 P_API_VERSION_NUMBER       IN      NUMBER ,
752 			 P_LAST_UPDATE_DATE             IN      DATE   ,
753 			 P_LAST_UPDATED_BY          IN      NUMBER ,
754 			 P_CREATED_BY               IN      NUMBER ,
755 			 P_CREATION_DATE            IN      DATE ,
756 			 P_LAST_UPDATE_LOGIN        IN      NUMBER ,
757 			 P_AWARD_NUMBER             IN      VARCHAR2 ,
758 			 P_CATEGORY_NAME            IN      VARCHAR2 ,
759 			 P_TERM_ID                IN      NUMBER ,
760 			 P_OPERAND                  IN      VARCHAR2 ,
761 			 P_VALUE                    IN      NUMBER
762 			) is
763 	BEGIN
764 			NULL ;
765 	END create_term_condition ;
766 
767 
768 	-- =============================================================================
769 	-- Reference Numbers are user defined values or characters assigned to an award
770 	-- for identification purposes.
771 	-- =============================================================================
772 	PROCEDURE CREATE_REFERENCE_NUMBER
773 			(X_MSG_COUNT                OUT NOCOPY     NUMBER ,
774 			 X_MSG_DATA                 OUT NOCOPY     VARCHAR2 ,
775 			 X_return_status            OUT NOCOPY     VARCHAR2 ,
776 			 P_CALLING_MODULE           IN      VARCHAR2 ,
777 			 P_API_VERSION_NUMBER       IN      NUMBER ,
778 			 P_LAST_UPDATE_DATE	    IN      DATE,
779 			 P_LAST_UPDATED_BY          IN      NUMBER ,
780 			 P_CREATED_BY               IN      NUMBER ,
781 			 P_CREATION_DATE            IN      DATE ,
782 			 P_LAST_UPDATE_LOGIN        IN      NUMBER ,
783 			 P_AWARD_NUMBER             IN      VARCHAR2 ,
784 			 P_REFERENCE_TYPE           IN      VARCHAR2 ,
785 			 P_REFERENCE_VALUE          IN      VARCHAR2 ,
786 			 P_REQUIRED_FLAG	    IN      VARCHAR2
787 			) is
788 	BEGIN
789 		NULL ;
790 	END create_reference_number ;
791 
792 
793 	-- ==========================================================
794 	-- Create Contacts
795 	-- ==========================================================
796 
797 	PROCEDURE CREATE_CONTACT
798 			(X_MSG_COUNT                OUT NOCOPY     NUMBER ,
799 			 X_MSG_DATA                 OUT NOCOPY     VARCHAR2 ,
800 			 X_RETURN_STATUS            OUT NOCOPY     VARCHAR2 ,
801 			 P_CALLING_MODULE           IN      VARCHAR2 ,
802 			 P_API_VERSION_NUMBER       IN      NUMBER ,
803 			 P_LAST_UPDATE_DATE	    IN      DATE,
804 			 P_LAST_UPDATED_BY          IN      NUMBER ,
805 			 P_CREATED_BY               IN      NUMBER ,
806 			 P_CREATION_DATE            IN      DATE ,
807 			 P_LAST_UPDATE_LOGIN        IN      NUMBER ,
808 			 P_AWARD_NUMBER             IN      VARCHAR2 ,
809 			 P_CONTACT_ID               IN      NUMBER ,
810 			 P_PRIMARY_FLAG	            IN      VARCHAR2 ,
811 			 P_USAGE_CODE	            IN      VARCHAR2
812 			) IS
813 	BEGIN
814 		NULL ;
815 	END create_contact ;
816 
817 	-- ==========================================================
818 	-- Create Reports
819 	-- ==========================================================
820 	PROCEDURE CREATE_REPORT
821 			(X_MSG_COUNT                OUT NOCOPY     NUMBER ,
822 			 X_MSG_DATA                 OUT NOCOPY     VARCHAR2 ,
823 			 X_RETURN_STATUS            OUT NOCOPY     VARCHAR2 ,
824 			 X_DEFAULT_REPORT_ID        OUT NOCOPY     NUMBER ,
825 			 P_CALLING_MODULE           IN      VARCHAR2 ,
826 			 P_API_VERSION_NUMBER       IN      NUMBER ,
827 			 P_LAST_UPDATE_DATE	    IN      DATE,
828 			 P_LAST_UPDATED_BY          IN      NUMBER ,
829 			 P_CREATED_BY               IN      NUMBER ,
830 			 P_CREATION_DATE            IN      DATE ,
831 			 P_LAST_UPDATE_LOGIN        IN      NUMBER ,
832 			 P_AWARD_NUMBER             IN      VARCHAR2 ,
833 			 P_REPORT_NAME              IN      VARCHAR2 ,
834 			 P_FREQUENCY_CODE                IN      VARCHAR2 ,
835 			 P_DUE_WITHIN_DAYS          IN      NUMBER ,
836 			 P_SITE_USE_ID	            IN      NUMBER ,
837 			 P_NUMBER_OF_COPIES         IN      NUMBER
838 			) IS
839 	BEGIN
840 		NULL ;
841 	END create_report ;
842 
843 
844 
845 END GMS_AWARD_PUB ;